■ 전송 마이크로연산
[컴퓨터구조] Register Transfer 연산 의미, 그리고 BUS설계가 중요한 이유와 설계방법 | 하드웨어
■ 산술 마이크로연산
[컴퓨터구조] Binary Adder, 그리고 Binary Adder-Subtractor | 컴퓨터의 산술 연산 구조 | 하드웨어
[컴퓨터구조] Binary Incrementer | 컴퓨터의 산술 연산 구조 | 하드웨어
[컴퓨터구조] Arithmetic Circuits | 컴퓨터의 산술 연산 구조 | 하드웨어
■ 논리 마이크로연산
[컴퓨터구조] Logic Micro-operations | 컴퓨터의 논리 연산 구조 | 하드웨어
■ 이동 마이크로연산
[컴퓨터구조] Shift Micro-operations | 컴퓨터의 shift 연산 구조 | 하드웨어[컴퓨터구조] Arithmetic Circuits | 컴퓨터의 산술 연산 구조 | 하드웨어
[ 목차 ]
- Arithmetic micro-operation 간단히 짚고 넘어가기
- Binary Adder
- Binary Adder-Subtractor
Arithmetic micro-operation
어려울 것 없이 말그대로 산술연산이다.
레지스터 내의 데이터끼리 산술연산을 하는 것이다.
우리가 아는 덧셈, 뺄셈, 1증가, 1감소, 보수연산 같은 것들 말이다.
다음은 Arithmetic μoperation의 가능한 연산들과 그 기호이다.
참고로, '<-' 라는 화살표 기호는 register transfer μoperation (레지스터 전송 마이크로연산)의 연산자이다. 예를 들어 R2<-R1의 경우, 레지스터 R1의 내용을 R2로 전송한다는 의미이다.
기호 | 의미 |
R3 <- R1 + R2 | 더하기 |
R3 <- R1 - R2 | 빼기 |
R2 <- barR2 (bar R2는 R2위에 짝대기 그은 기호임) | 1의 보수 |
R2 <- barR2 + 1 | 2의 보수 (negate) |
R3 <- R1 + barR2 +1 | R1 + R2의 2의보수 (subtraction) |
R1 <- R1 + 1 | R1에 1 더함 (Increment) |
R1 <- R1 - 1 | R1에 1 빼기 (Decrement) |
*텍스트로 문자 위에 bar기호를 표현할 수가 없어서 barR2따위로 기록했다. R2위에 bar를 쭉 그은 모양임을 유의!
이 micro-operation들 중에서 대표적으로 더하기(빼기)연산이 이루어지는 하드웨어 로직을 살펴 볼 것이다.
더하기하는 구조는 Adder라고 한다.
Adder라는 하드웨어 로직 중에 가장 심플한 Adder인 'Binary Adder'의 구조를 확인해보자.
*참고로, Binary Adder는 느려서 실제로는 안쓴다고 한다. 왜 느린지는 아래서 간단히 설명할 것이다.
Binary Adder
- full Adder를 이용해 구현한다.
- n-bit Binary Adder일 경우 full Adder를 n개 사용하여 구현한다.
여기서는 4비트 Binary Adder의 구조를 볼 것이다.
full adder(FA)를 4개 사용하고 있는 것이 보인다.
- full adder란? (논리회로 관련 내용) 두 개의 입력과 이전 carry로 sum, carry를 구하는 것이다. 참고로 계산기의 구조 중 가산기(adder)에는 반가산기(HA), 전가산기(FA), 병렬가산기(PA)같은 것들이 있다.
사담: Binary Adder 회로 사진을 가져오느라 위 사이트에 우연히 들어갔는데, Binary Adder에 대해 설명을 깔끔하게 잘 해놓으셨다. 보고 오는 것도 강추한다.
위 회로를 간단히 설명해보겠다.
- 일단 4비트 레지스터 컴퓨터다. 레지스터 A와 B는 모두 4비트짜리다. 레지스터A에는 A3A2A1A0이, 레지스터B에는 B3B2B1B0이 내용물로 들어있다.
- 이진수 A3A2A1A0과 B3B2B1B0를 더하는 것을 생각해보자. 각각의 FA에서는 총 3개의 입력을 받게 된다. 이때 맨 처음 carry인 C0값은 0으로 정하고 진행해보자. 그럼 위 binary adder는 S0, S1, S2, S3를 결과로 내고, 제일 마지막에 C4를 발생시킨다.
예시로 값을 넣어 결과를 확인해보겠다.
위 로직에서는 캐리를 총 4개 만들어내는데, 이렇게 캐리를 출력할때 딜레이가 생겨서 너무 느리다고 한다. 보통은 high speed Adder를 사용한다고 하는데, 컴퓨터 구조를 갓 배우는 지금 과정에서는 일단 이 정도만 알아두면 된다.
아무튼, 지금까지 더하기를 하는 Adder구조를 확인해보았다.
이번에는 더하기와 빼기 연산을 하는 Binary Adder-Subtractor의 구조를 보겠다.
Binary Adder-Subtractor
단순히 위 4비트 Binary Adder에 XOR게이트 4개가 추가된 구조이다.
A0~A3는 full Adder에 그냥 연결시킨 채로 두고,
B0~B3는 XOR게이트의 한쪽 단자에 연결시킨 구조이다.
또 이전의 Adder와 달라진 것은, control signal M이라는 것을 C0로 넣고, 또 XOR의 한쪽 단자에 연결시켰다.
이 M은 무슨 시그널이냐? M은 minus의 약자 표시이다. 즉, M이 0이면 plus하게 되고, M이 1이면 minus하게 된다.
- M이 0일 경우
C0에도 0이 들어간다.
XOR게이트의 결과는 B를 따라간다.
=>즉, 방금 전에 본 일반적인 Binary Adder와 같은 역할을 한다. A+B를 출력하게 되는 것.
- M이 1일 경우
C0에도 1이 들어간다.
XOR게이트의 결과는 B와 반대가 된다.
=> 즉, FA의 아웃풋은 A + B의2의보수가 된다. A + B-bar + 1 즉 A + B의2의보수.
=> 결론: 이렇게 XOR 게이트만 추가하면 덧셈과 뺄셈 모두 가능한 로직이 된다.
'컴퓨터구조 & OS' 카테고리의 다른 글
[컴퓨터구조] Shift Micro-operations | 컴퓨터의 shift 연산 구조 | 하드웨어 (2) | 2021.10.12 |
---|---|
[컴퓨터구조] Logic Micro-operations | 컴퓨터의 논리 연산 구조 | 하드웨어 (1) | 2021.10.11 |
[컴퓨터구조] Arithmetic Circuits | 컴퓨터의 산술 연산 구조 | 하드웨어 (0) | 2021.10.11 |
[컴퓨터구조] Binary Incrementer | 컴퓨터의 산술 연산 구조 | 하드웨어 (0) | 2021.10.11 |
[컴퓨터구조] Register Transfer 연산 의미, 그리고 BUS설계가 중요한 이유와 설계방법 | 하드웨어 (8) | 2021.10.07 |