8장. 연산 장치 Lecture #8
8.1 개 요 처리기(제어 장치,레지스터)와 연산 장치로 구성. 연산장치(ALU: Arithmetic Logic Unit) 산술, 논리, 비트, 수의 대소 판단 등의 연산을 처리 연산장치는 독립적으로 데이터 처리를 수행하지 못하며 반드시 레지스터들과 조합하여 데이터를 처리해야 한다. 중앙 처리 장치의 구조 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (1) ALU 의 구성 요소 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (2) ALU 요소들의 기능 산술연산장치 : 산술 연산인 +, -, ×, ÷을 수행하는 연산 회로. 논리 연산 장치 : 논리 연산인 AND, OR, XOR, NOT을 수행하는 연산 회로. 시프트 레지스터 : 비트들을 좌측 혹은 우측으로 이동시키는 기능을 가진 레지스터. 보수기(complement) : 2진 데이터를 보수를 취하는 회로. 상태 레지스터 : 연산 결과의 상태를 나타내는 플래그들을 저장하는 레지스터. 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (3) 산술 연산 장치 내부는 기본적으로 전 가산기(full adder)로 구성 산술 연산 장치 구성 전 가산기 회로를 이용한 병렬 가산기로 구성됨, Si = Ai + Bi + Ci 입력 : A1 ,A2 ,A3 ,A4와 B1 ,B2 ,B3 ,B4 출력 : S1 ,S2 ,S3 ,S4 Ci : 캐리 입력하기 위한 비트 상태 비트 : 오버플로우 비트(overflow bit), 제로 비트(zero bit), 부호 비트(sign bit), 캐리 비트(carry bit) 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (4) 4비트 병렬 가산기 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (5) 전가산기를 이용한 가,감산기 Xi=Ai Yi=BiS Ci=S S Ai Bi Xi Yi 1 Xi=Ai Yi=BiS Ci=S 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (6) [ 감산을 위한 보수기를 포함한 회로 ] [ 가감산기 내부 구조 ] 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (7) 병렬 가산기에 의한 산술 연산 가산 가산 + Carry 캐리 비트를 Cin을 0으로 하고 A와 B를 가산하여 합이 F로 구해진다. 가산 + Carry Cin을 1로 하여 F=A+B+1 을 구한다. 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (8) A+B’의 보수 감산 감산의 경우에는 B에 1의 보수를 입력해서 F=A+B’를 연산한다. Cin을 1로 하면 F=A+ B’+1로 되어 A와 B의 2의 보수를 가산. 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (9) A 증가 A 전송 F=A+1이 되어 1 증가 연산이 된다. B의 입력을 모두 0 을 입력하면 F=A+0 이 되어 F=A가 된다. 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (10) A 전송 Cin을 1로 하였기 때문에 F = A -1 + 1이 되어 F = A가 된다. A 감소 B의 입력이 모두 1이면 F=A+11111111가 되어 F=A-1연산한다. 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (11) 8-비트 연산장치 블럭도와 가산기 구성도 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (12) 상태 레지스터(Status register or Flag register) 연산 결과에 의해 상태 레지스터를 세트. C(Carry bit) : 두 수를 가산하여 자리 올림수가 발생하면 1로 세트되고 아니면 0이 된다. 산술 연산 장치의 최상위 비트의 전 가산기 carry out 신호를 받아서 세트되고 감산에서 자리 내림이 발생하였을 때에도 1로 세트됨. S(Sign bit) : 최상위 비트가 0이면 양수를 나타내고, 1이면 음수를 나타내는 비트. Z(Zero bit) : 두 수를 연산한 후 결과 값이 0이면 1로 세트. V(Overflow bit) : 산술 연산에 두 수를 가산할 때 결과를 저장할 수 있는 레지스터의 자리수가 모자랄 때 발생하는 에러(error)로서 오버플로우가 발생하면 오버플로우 비트가 1로 세트된다. 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (13) 상태 레지스터 구조 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (14) 오버플로우 발생 회로 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (15) 캐리 예측 발생기 병렬 가산을 보다 빨리 수행하기 위해서는 하위 전가산기로부터의 캐리를 미리 예측하여 계산할 필요가 있다. 각 단의 캐리들은 전단의 가산기들이 연산이 끝난 후에 캐리가 발생하고 발생된 캐리에 의해 다음 단의 연산이 수행. 전파 시간(propagation time) : 캐리들이 전파되는 데 필요한 시간. 캐리 예측 발생기(look-ahead carry generator) : 전파 시간을 줄이기 위한 회로. 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (16) 캐리 예측 발생기 논리 회로 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (17) 논리 연산 장치 OR, AND, XOR, NOT의 논리 연산을 수행하는 장치 연산 장치 제어 신호 S2, S1, S0, Cin에서 S2가 1일 때 논리 연산 처리가 된다. 논리 연산 장치의 예 : 논리 연산 제어 신호 : S1 S0 논리 연산 출력 0 0 OR Fi = Ai + Bi 0 1 XOR Fi = Ai Bi 1 0 AND Fi = Ai Bi 1 1 NOT Fi = Ai 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (18) 산술 연산 장치와 논리 연산 장치 조합 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (19) 시프터 레지스터 입력 데이터의 모든 비트들을 각각 서로 이웃한 비트로 자리를 옮겨가는 연산. 연산기 출력단에 시프트 레지스터를 연결하여 수행. [ 시프트 레지스터 구조 ] 컴퓨터 구조론
8.2 연산 장치의 구성 요소 (20) 시프터 레지스터 시프트 레지스터 제어 신호 H1 H0 Operation Function 0 0 S F Transfer F to S 0 1 S shr F Shift-right F into S 1 0 Shift-left into S 1 1 S 0 Transfer 0’s into S 컴퓨터 구조론
8.3 처리기 (1) 8비트 연산처리기 설계시 필요한 장치 8비트 레지스터 7개. 3 × 8 디코더 1개 : 레지스터를 선택의 로드 제어 신호를 공급 3 × 8 멀티플렉서 2개 : 연산 장치의 입력 채널에서 연산 데이터를 선택 8비트 병렬 연산 장치 1개, 8비트 시프트 레지스터 1개. D 플립플롭 4개 : 상태 레지스터를 구성 컴퓨터 구조론
8.3 처리기 (2) A : ALU 좌측 MUX 입력 선택 제어 신호(3비트) B : ALU 우측 MUX 입력 선택 제어 신호(3비트) D : 레지스터 로드 제어 신호(3비트) F : 연산 장치 기능 제어 신호(3비트) Cin : 캐리 입력신호(1비트) H : 시프트 레지스터 기능 제어 신호(2비트) 컴퓨터 구조론
8.4 기타 연산 장치 (1) 승산 소프트웨어적 승산 하드웨어적 승산 피승수를 승수의 횟수만큼 가산하는 방법 각 자리의 부분적(partial product)과 Shift를 이용한 가산하는 방법 하드웨어적 승산 ALU와 레지스터간의 관계 컴퓨터 구조론
8.4 기타 연산 장치 (2) 승산 Booth 알고리즘 승수의 값이 0인 자리에 대해서는 시프트만 해주고 1인 자리 2k에서 1이 계속되어 0으로 바뀌기 전까지의 자릿수 2m을 감산하는 알고리즘. 부호가 있는 2진수 승산에 많이 사용. 컴퓨터 구조론 [ 2의 보수 승산에 대한 Booth 알고리즘 ]
8.4 기타 연산 장치 (3) 배열 승산기(하드웨어 처리) 고속 소수점 승산에 사용. 승산 비트들을 조합 회로로 설계하여 하나의 마이크로 연산으로 곱셈이 실행될 수 있도록 설계 배열 승산기의 비트 연산 회로 구조 컴퓨터 구조론
8.4 기타 연산 장치 (4) 제산 감산을 기본으로 함 제산회로 및 제산 과정 컴퓨터 구조론
8.4 기타 연산 장치 (5) 제산 제산과정 컴퓨터 구조론
8.4 기타 연산 장치 (6) 비수치 연산 비트나 바이트 단위 처리. 비수치 연산 (논리 연산) 단항 move complement shift rotate clear increment decrement 이항 AND XOR Compare 수치연산 수치 (산술 정수 표현 언팩십진법 팩 십진법 고정 소수점 연산 기타형식 코드표현 실수표현 부동소수점 표현 컴퓨터 구조론
8.4 기타 연산 장치 (7) 단항논리 연산 이동(MOVE) 연산. 연산 장치의 입력 데이터를 받아들여 그대로 출력하는 단항 연산 하나의 레지스터에 기억된 데이터를 다른 레지스터로 옮길 때 이용. 컴퓨터 구조론
8.4 기타 연산 장치 (8) 단항논리 연산 보수(COMPLEMENT) 연산 보수 연산은 단항 연산으로 출력이 연산장치를 통하여 입력 데이터에 대하여 1의 보수 형태로 나타나는 연산. 음수의 표현에서 1의 보수, 2의 보수를 구하는데 필요. 컴퓨터 구조론
8.4 기타 연산 장치 (9) 단항논리 연산 시프트(SHIFT) 연산 입력 데이터의 모든 비트들을 각각 서로 이웃한 비트로 자리를 옮겨서 연산 장치의 출력 측에 나타내는 연산. 우측 시프트와 좌측 시프트가 있다. 논리적 시프트는 자리 이동을 의미한다. 컴퓨터 구조론
8.4 기타 연산 장치 (10) 단항논리 연산 로테이트 연산 로테이트 연산은 시프트와 유사한 연산으로 한쪽 끝에서 밀려나가는 비트가 다시 반대편 끝으로 들어오게 되는 것으로 회전을 의미. 데이터의 특정한 비트의 검색이나 비수치적 데이터에서 문자의 위치를 교환하는데 사용. 컴퓨터 구조론
8.4 기타 연산 장치 (11) 이항 논리 연산 논리 곱(AND) 연산 지우고 싶은 특정한 비트나 문자를 삭제하여 0으로 만들 때 사용되는 연산. 마스크(mask) : 어느 비트 혹은 어느 문자를 지울 것인가를 결정하는 내용. 컴퓨터 구조론
8.4 기타 연산 장치 (12) 이항 논리 연산 논리 합(OR) 연산 논리 합 연산은 필요한 비트나 문자를 삽입할 때 사용. 컴퓨터 구조론
8.4 기타 연산 장치 (13) 이항 논리 연산 논리 비교(COMPARE) 연산 2개의 입력이 비교되어서 출력에 나타나는 연산으로 크고(>), 작음(<)과 같음(=)을 판단하여 여러 조건 flag에 결과를 기억시킴. 컴퓨터 구조론
8.4 기타 연산 장치 (14) 이항 논리 연산 배타적 논리 합(XOR) 연산 컴퓨터 구조론