[전산학] 부울식/카르노맵(논리학), 마이크로 명령어

Hyo Kyun Lee·2021년 7월 9일
0

전산학

목록 보기
7/16

1-1. 논리학(개요)

전산학의 복잡한 논리, 산술연산의 기호화 및 간단한 구현을 위해 논리학 개념이 도입되었습니다.

아래와 같이 기호화된 전산식(부울식)이 있다고 가정 해보겠습니다.
E = a’b’c + a’bc’ + ab’c’ + ab’c + abc’ + abc

이러한 전산식을 간단히 하는 방법론은 크게 두가지가 있습니다.

부울식

부울식(부울대수)는 컴퓨터의 산술연산과 논리연산을 수리적으로 표현하도록 고안된 식입니다(위 기술된 식이 부울 식입니다).

간단히 말해 논리회로를 표현하는데 필요한 diagram을 수학적인 기호와 문자를 통해 하나의 식으로 나타낸 것을 의미합니다.

부울식을 통해 변수들의 진리표 관계를 수학적인 연산 및 기호로 표현할 수 있어 더 효율적이고 용이한 논리연산이 가능해집니다.

또한 동일한 성능, 연산 상황을 더욱 간단한 회로로 구현할 수 있어 연산을 간편히 수행할 수 있습니다.

부울식은 회로 변수들에 대해 교환법칙, 결합법칙, 분배법칙, 드모르간법칙 모두 적용 가능하며, 이에 따라 결과 도출 역시 동일한 산출연산 및 논리연산을 적용하여 진행할 수 있습니다.

카르노 맵

논리 및 산술연산을 부울대수를 통해 간단히 구현할 수 있다면, 카르노 맵은 이러한 부울대수를 맵방법을 이용하여 연산을 더 간단히 구현할 수 있는 방법론입니다.

부울대수는 변수들의 진리표 관계를 대수식으로 표현하기에 용이한데, 카르노 맵은 그러한 진리표를 간략화하는데 최적화된 방법으로 볼 수 있습니다.

변수가 n개라면, 카르노 맵은 2^n의 민텀(연산결과를 나타내는 박스)으로 구성되며, 각 이웃한 인접인텀으로 넘어갈 때마다 하나의 변수만이 변경된 상태여야 합니다.

부울 식을 참조하여 출력이 1인 인텀인 1, 0인 인텀은 0으로 표현하면 됩니다.

이러한 표현을 바탕으로 출력이 1이면서 인접한 인텀끼리 묶으면 최종 결과를 도출할 수 있으며, 반드시 2^n 개수만큼의 인텀을 선택해야 합니다.

인접하지 않은 인텀들은 논리합으로 구성합니다.

1-2. 카르노맵을 통한 부울식 표현

주어진 부울식은 E = a’b’c + a’bc’ + ab’c’ + ab’c + abc’ + abc 입니다.

이때 변수는 a,b,c로 3가지이며 이에 따라 나타나는 인텀은 아래와 같이 8개가 됩니다.
이때 각 인텀은 아래와 같이 나타날 수 있습니다.

※각 인텀의 항(a, a' 등)들을 기재하는 순서도 정해져 있습니다.

위 결과를 바탕으로 주어진 부울 대수를 표현할 수 있는, 즉 출력이 1인 인텀들을 1로 표기하여 카르노 맵을 구현할 수 있습니다.

현재 부울 식의 경우 모든 항이 세개의 변수로 이루어졌기 때문에, 추가적인 고려사항 없이 각 항에 대해 1:1 비교 및 표기를 할 수 있습니다.

1-3. 카르노맵 간소화 과정

(1) 2^n 개수만큼 인접한 인텀들을 묶습니다.
※ 최대한 연속한 인텀들을 묶어야 하며, 한 번에 묶이지 않는 인텀들은 별도로 묶음을 구성합니다. 따로 묶여진 인텀들은 논리합으로 구성합니다.

(2-1) 빨간묶음 : abc+ab’c+ab’c’+abc’ = a

(2-2) 초록묶음 : ab’c+a’b’c = b’c

(2-3) 파란묶음 : abc’+a’bc’ = bc’

(3) 최종 논리합 구성 : a + b’c + bc’

1-4. 부울식 간소화 과정

문제의 부울식을 간소화하기 위해선 위 기술된 법칙 외 추가적인 법칙들을 활용해야 합니다.

E = a’b’c + a’bc’ + ab’c’ + ab’c + abc’ + abc 의 부울식에서

(1) X+X’ = 1이므로, E = a’b’c + a’bc’ + ac(b+b’) + ac’(b+b’) = a’b’c + a’bc’ + ac + ac’

(2) 같은 원리로 E = a’b’c + a’bc’ + a

(3) E = a + a’(b’c + bc’) 에서 b’c + bc’ = X라 하면 E = a + a’X

(4) a = a * 1 = a(1 + X) = a + aX 이고, 이를 위 식에 대입하면 E = a + aX + a’X

(5) 최종 결과는 E = a + X = a + b’c + bc’

2-1. 마이크로 명령어

컴퓨터 전산과 명령의 기본은 마이크로 연산입니다.

컴퓨터의 산술연산과 논리연산을 통틀어 마이크로 연산이라 합니다.

2-2. 마이크로 명령어 구문

명령어 구문은 명령코드와 오퍼랜드 주소로 이루어져 있습니다.

CPU는 명령코드를 해석하고, 오퍼랜드 주소를 통해 해석한 명령어가 적용되는 대상의 주소를 참조합니다.

이때 오퍼랜드 주소는, 명령코드가 적용되는 자료 값이 저장된 주소 정보나 오퍼랜드가 지정된 위치와 같습니다.

이때 명령어가 실행되는 과정을 각각 오퍼랜드모드, 주소지정모드라 합니다.

위 과정과 같이 보통 데이터나 자료가 전달될 때, 직접적으로 데이터가 전달되기보다
해당 데이터의 주소값이 전달되어 간접적으로 참조하는 방식으로 이루어집니다.

이를 통해 자료저장 및 가용성이 늘어나고, 명령어 개수나 길이를 줄일 수 있습니다.

또한 H/W나 S/W의 독립성과 연계성을 유지하는데 간편하여 세계적으로 표준화되어 있는 방식입니다.

보통 레지스터에 주소값을 할당하는 방식으로 명령어를 작성하는데, MOV R1, ADDRESS 형식으로 R1 레지스터에 주소값을 할당하여 자료값을 할당해줄 수 있습니다.

2-3. 레지스터 값 할당 명령의 종류

R1 = 101, R2= 202가 저장되어 있는 상태에서 R1 레지스터에 202 값을 할당하기 위한 방법을 알아보겠습니다.


※Add = Address, Con = Content

  • 직접 값 모드

오퍼랜드가 명령어에 포함되어있는 모드입니다. 즉 명령어를 통해 오퍼랜드의 데이터를 직접 할당할 수 있습니다.
MOV R1, #202

  • 레지스터 모드

오퍼랜드가 레지스터에 저장된 모드입니다. 해당 자료값이 레지스터에 있기 때문에, 레지스터(주소값)을 할당하여 데이터를 저장할 수 있습니다.
MOV R1, R2

  • 직접 모드

오퍼랜드가 지정한 주소를 나타내는 모드입니다. 해당 주소의 자료값을 저장할 수 있습니다.
MOV R1, 201

  • 메모리 간접 모드

오퍼랜드가 지정한 주소를 활용하여 간접적으로 주소를 지정하는 모드입니다. 간접적으로 지정한 주소의 자료값을 저장하는 방식입니다(리눅스의 indirect block 방식과 유사합니다).
MOV R1, @50

0개의 댓글