Download presentation
Presentation is loading. Please wait.
1
Chapter 07 프로세서와 연산장치
2
프로세서의 주요 기능 주요 기능 – P200 제어(해석) 기능 연산(처리) 기능 전달(전송) 기능 기억 기능
Computer Architecture 주요 기능 – P200 제어(해석) 기능 제어장치에 의해 수행되며, 주기억장치에 기억된 명령을 하나씩 가져와 해독하고 명령 수행을 위한 신호를 해당 장치에 보냄 연산(처리) 기능 ALU를 통해 산술 연산과 논리 연산을 수행 전달(전송) 기능 내부 버스를 통해 레지스터와 ALU 간 연결 외부 버스는 CPU와 주기억장치, CPU와 주변장치 사이를 연결 기억 기능 레지스터를 이용하여 수행 여러 종류의 레지스터를 이용하여 사용할 데이터를 임시 보관
3
프로세서의 주요 구성요소 주요 구성요소 – P201 버스(Bus)
Computer Architecture 주요 구성요소 – P201 버스(Bus) 컴퓨터 내 구성요소들간의 신호 전달을 위해 공동으로 이용하는 회선 버스의 크기는 2 바이트의 하프 워드 (half word), 4 바이트의 풀 워드 (full word), 8바이트의 더블 워드(double word) 등으로 구분 버스의 종류 데이터 버스(data bus) 프로세서가 기억장치나 입출력 장치에 판독하거나 기록할 양방향 데이터 신호들의 모음 번지 버스(address bus) 주기억장치의 번지를 지정하기 위한 단방향 주소 신호들의 모음 제어 버스(control bus) 프로세서가 기억장치나 입출력 장치와 데이터 전송을 위해 사용되는 제어신호들의 모음
4
프로세서의 주요 구성요소 Computer Architecture 버스의 구성 형태
5
프로세서의 주요 구성요소 레지스터_1 – P202 처리할 명령 또는 연산의 중간 결과를 일시적으로 저장하는 장소
Computer Architecture 레지스터_1 – P202 처리할 명령 또는 연산의 중간 결과를 일시적으로 저장하는 장소 플립플롭으로 구성된 고속기억회로로 N비트 레지스터는 n개의 플립플롭 으로 구성 4비트 레지스터의 구성 예 각 플립플롭은 공통의 클록을 갖고 클록이 상승 변이할 때 I0~I3를 저장
6
프로세서의 주요 구성요소 레지스터_2 상승 변이(Rising edge)/하강 변이(falling edge)와 레벨 트리거
Computer Architecture 레지스터_2 상승 변이(Rising edge)/하강 변이(falling edge)와 레벨 트리거 클록의 동기화에서 클록의 상승 변이 부분에서 동기화를 이루는 것을 Active high, 클록의 하강 변이부분에서 동기화를 이루는 것을 Active low라고 함 레벨 트리거(Level trigger) 전위 수준의 높고 낮음을 동기화의 기준으로 삼는 것
7
프로세서의 주요 구성요소 레지스터_3 범용 레지스터(general purpose register)
Computer Architecture 레지스터_3 범용 레지스터(general purpose register) 필요에 따라 CPU 내에서 여러 목적으로 사용될 수 있는 레지스터 수의 표현, 고정 소수점 연산, 인덱스 레지스터, 베이스 레지스터 등으로 사용됨 특수 목적 레지스터(special purpose register) 사용 기능이 정해져 있어서 프로그래머가 임의로 사용할 수 없음 PSWR (Program Status Word Register)는 프로그램의 올바른 실행을 위해 필요한 상태 정보를 수집하는 8바이트 길이의 레지스터
8
프로세서의 주요 구성요소 PSWR (Program Status Word Register)_1 – P204
Computer Architecture PSWR (Program Status Word Register)_1 – P204 시스템 마스크(System mask, 0~7비트) 인터럽트 발생을 금지시키는 지시 내용을 기록 모드(Mode, 12~15비트) ASCII, EBCDIC 모드, Problem Status, Supervisor Mode를 표시 인터럽트 코드(Interrupt code, 16~31비트) 인터럽트 상태를 표시 ILC(32~33비트) 현재 실행된 명렁어 길이를 표시
9
프로세서의 주요 구성요소 PSWR (Program Status Word Register)_2 – P204 CC(34~35비트)
Computer Architecture PSWR (Program Status Word Register)_2 – P204 CC(34~35비트) Condition code를 표시 프로그램 마스크(Program mask, 36~39비트) 오버플로가 발생할 때 인터럽트 발생 여부를 지정하는 정보를 표시 명령어 번지(Instruction address, 40~63비트) 실행될 명령어의 번지를 표시(한 명령이 실행되면 자동적으로 변경)
10
프로세서의 주요 구성요소 제어 회로 – P206 디코더(Decoder) 버퍼
Computer Architecture 제어 회로 – P206 레지스터, ALU,기억장치 인터페이스 등을 제어하는 신호를 생성하는 회로 디코더(Decoder) 프로그램의 명령코드 부분을 해석하고 명령 실행을 시작하는 회로 버퍼 프로그램 및 데이터 일부를 임시로 저장하는 주기억장치 영역 일반적으로 입출력 장치와 프로그램이 데이터를 송수신할 때에 데이터를 임시로 저장하는데 사용하는 기억장치 영역
11
프로세서의 주요 구성요소 설명 버스 컴퓨터 구성요소 들간의 신호들의 전달을 위한 공동 회선 레지스터
Computer Architecture 설명 버스 컴퓨터 구성요소 들간의 신호들의 전달을 위한 공동 회선 레지스터 처리할 명령 또는 연산의 중간 결과를 일시적으로 저장하는 장소 제어회로 레지스터, ALU, 기억장치 인터페이스 등을 제어하는 신호 생성 디코더 명령코드를 해석하고 명령 실행을 시작하는 회로 버퍼 프로그램 및 데이터 일부를 임시로 저장하는 주기억장치 영역
12
레지스터의 종류 Computer Architecture 레지스터의 종류 – P206
13
레지스터의 종류 Computer Architecture
14
레지스터 전송 직렬 전송(Serial transfer) 방식_1 – P208
Computer Architecture 직렬 전송(Serial transfer) 방식_1 – P208 하나의 제어 신호에 의해 레지스터의 내용이 한번에 1비트씩 전송되는 방식 전송하는 레지스터의 내용을 보존하기 위해서 자신의 직렬 출력을 다시 직렬로 입력하여 시프트를 수행 워드 시간(work time) 시프트 레지스터의 데이터를 모두 전송하는 데 소요되는 시간 1 1 1 1 1 1
15
레지스터 전송 병렬 전송(parallel transfer) 방식 – P210
Computer Architecture 병렬 전송(parallel transfer) 방식 – P210 하나의 제어 신호에 의해 레지스터의 내용 전체가 한번에 전송되는 방식 병렬 전송의 구조 1 1
16
레지스터 전송 버스 전송 방식_1 – P211 제어신호를 통해 각 레지스터들의 정보를 버스(공통선)로 전송하는 방식
Computer Architecture 버스 전송 방식_1 – P211 제어신호를 통해 각 레지스터들의 정보를 버스(공통선)로 전송하는 방식 모든 레지스터가 개별 전송 회선을 사용할 때 발생하는 비효율성을 해결 버스에 연결되기를 원하는 레지스터는 제어신호에 의해 활성화되어야 함 버스 내의 선의 개수는 레지스터를 구성하는 플립플롭의 개수와 일치 단일 회선 버스 버스로 사용하는 회선이 1개로 된 것 제어신호
17
레지스터 전송 버스 전송 방식(N:M) A B A B C D 2 X 1 = 2 4 X 3 = 12 N X (N-1) 개 A B
Computer Architecture 버스 전송 방식(N:M) A B A B C D 2 X 1 = 2 4 X 3 = 12 N X (N-1) 개 A B C A B C D 3 X 2 = 6 1 개
18
레지스터 전송 버스 전송 방식_2 단일 버스에서 4개의 레지스터로 수신할 때 디코더를 사용하여 제어
Computer Architecture 버스 전송 방식_2 단일 버스에서 4개의 레지스터로 수신할 때 디코더를 사용하여 제어 4개의 레지스터를 선택하기 위해서는 2비트 입력에 대한 디코더가 필요 4개의 레지스터를 R1~R4로 가정하면 아래 그림과 같이 구성 선택 신호 x와 y는 해독기에 의해 D0~D3의 출력 중 하나를 지정하여 거기에 연결된 레지스터를 활성화시킴 이 구성은 레지스터에서 버스를 통해 다른 곳으로 전송할 때에도 이용이 가능
19
레지스터 전송 버스 전송 방식_3 단일 버스에서 레지스터로 수신할 때 디멀티플렉스를 사용하여 제어
Computer Architecture 버스 전송 방식_3 단일 버스에서 레지스터로 수신할 때 디멀티플렉스를 사용하여 제어 단일 회선 버스를 디멀티플렉서를 통해 4개의 레지스터에 연결 선택 신호에 의해 디멀티플레서 회로의 출력 D0~D3이 선택되므로 이를 직접 레지스터에 연결하여 수신하도록 함 레지스터가 여러 비트이면 시프트 기능을 사용하여 1비트씩 직렬이동이 되도록 하고, 비트의 수는 n회 반복하도록 함
20
레지스터 전송 버스 전송 방식_4 레지스터의 내용을 단일 버스로 송신할 때 멀티플렉스를 사용하여 제어
Computer Architecture 버스 전송 방식_4 레지스터의 내용을 단일 버스로 송신할 때 멀티플렉스를 사용하여 제어 4개의 레지스터를 멀티플렉서를 통해 단일 회선인 버스에 연결 선택 신호에 의해 R1~R4 중 하나가 선택되며 선택된 레지스터는 버스로 출력 레지스터가 여러 비트이면 시프트 기능을 사용하여 1비트씩 직렬이동이 되도록 하고, 비트의 수는 n회 반복하도록 함
21
레지스터 전송 버스 전송 방식_5 M비트 크기를 갖는 N개 레지스터의 전송 회선 연결
Computer Architecture 버스 전송 방식_5 M비트 크기를 갖는 N개 레지스터의 전송 회선 연결 개별전송 회선을 이용할 경우 선의 수 = N(N-1)M개 버스를 이용할 경우의 선의 수 = M개 2비트 크기를 갖는 3개 레지스터의 전송 회선 연결 개별전송 회선을 이용할 경우 선의 수 = 3x2x2 = 12개 버스를 이용할 경우의 선의 수 = M = 2개 A1 A2 B1 B2 C1 C2 A1 A2 B1 B2 C1 C2
22
레지스터 전송 Computer Architecture 기억장치의 전송 방식_1 – P214 주기억장치와 외부 회로간의 전송을 위해서는 주기억장치의 해당 위치를 나타내는 번지 레지스터가 필요 주기억장치의 기록 및 판독 동작을 위해 데이터를 임시 보관하는데 사용 할 기억 레지스터가 필요 주기억장치의 번지는 번지 레지스터에 저장되고 주기억장치의 데이터는 기억 레지스터에 저장되며 판독과 기록의 2가지 동작이 존재
23
레지스터 전송 Computer Architecture 기억장치 전송 방식_2 독립적인 여러 개의 기억 모듈로 구성된 복수 모듈 기억 장치 => 각 모듈 별로 독립된 레지스터를 갖고 동작 하며, 병행 처리가 가능
24
레지스터 전송 기억장치 전송 방식_3 번지 레지스터와 기억 레지스터를 결합하는 경우
Computer Architecture 기억장치 전송 방식_3 번지 레지스터와 기억 레지스터를 결합하는 경우 256비트 칩을 사용한 8비트가 1워드인 256워드의 주기억 장치 256X1 비트0 256X1 비트1 256X1 비트2 256X1 비트3 256X1 비트4 256X1 비트5 256X1 비트6 256X1 비트7
25
연산 장치의 구성 Computer Architecture 연산 장치의 구성 – P219 연산에 이용되는 데이터나 연산 결과 등을 일시적으로 보관하기 위한 레지스터와 누산기, 보수를 생성하는 보수기, 덧셈을 하기 위한 가산기와 연산을 수행하는 ALU, 계산 결과의 상태를 점검하기 위한 상태 레지스터, 데이터를 보관하는 기억 레지스터, 등으로 구성됨 ALU (Arithmetic Logic Unit) 산술 논리 연산회로 누산기
26
연산의 종류와 기능 데이터의 종류에 따른 연산 종류 피연산자의 개수에 따른 연산 종류 수치형 연산 비수치형 연산
Computer Architecture 데이터의 종류에 따른 연산 종류 수치형 연산 4칙 연산을 수행하는 산술 연산, 시프트 연산을 수행 비수치형 연산 논리 연산, 시프트(shift) 및 순환(rotate) 연산을 수행 피연산자의 개수에 따른 연산 종류 단항 연산(unary operation) 연산에 사용되는 자료의 수가 1개뿐인 연산으로 COMPLEMENT(보수화), 시프트, 로테이트 등 이항 연산(binary operation) 피연산자가 2개이며 덧셈이나 곱셈 등의 사칙 연산과 AND, OR, XOR 등의 논리 연산 등이 해당 ADD AND AB FF CMP 3F AND 3F 17
27
산술 연산 회로 산술 연산 회로_1 – P220 병렬 가산기를 기본으로 해서 동작
Computer Architecture 산술 연산 회로_1 – P220 병렬 가산기를 기본으로 해서 동작 가산기에서 데이터 입력을 제어함으로 여러 가지 산술 연산을 수행 병렬 가산기는 2비트와 캐리를 고려한 연산을 수행하는 전가산기를 기본 구성으로 동작하며 논리 회로는 아래 그림과 같음 1 A B = A + B 가산 B B 1 B 가산기 B’ Ci=0 A F = A + B 가산
28
산술 연산 회로 산술 연산 회로-2 산술 연산 논리회로에서 S1과 S0가 Bi 값의 입력을 결정함
Computer Architecture 산술 연산 회로-2 산술 연산 논리회로에서 S1과 S0가 Bi 값의 입력을 결정함 산술 연산 논리회로의 함수 테이블
29
산술 연산 회로 Computer Architecture 산술 연산 회로-3 – P222 산술 연산 회로는 아래와 같이 단순화하여 표현할 수 있으며, n 비트를 가진 수의 산술 연산에서는 n개의 연산 회로가 순서대로 연결되어 동작 (A와 B의 2의 보수 가산) => A-B
30
산술 연산 회로 산술 연산 회로-4 01 + 11 : ALL 1’s 100 11 + 11 : ALL 1’s 110 10
Computer Architecture 산술 연산 회로-4 1 01 : ALL 1’s 100 -1 -1 11 : ALL 1’s 110 -1 -1 10 : ALL 1’s 101 -1
31
논리 연산 회로 Computer Architecture 논리 연산 회로_1 – P223 입력 데이터 A와 B의 내용을 연산 지시에 의해 AND, OR, XOR 및 NOT 연산을 수행하도록 함 조합 논리 회로로 구성된 논리 연산 회로는 데이터인 A와 B를 입력하는 회선과 연산 지시를 받아들이는 회선이 있음 논리 연산 회로의 블록도 및 회로도
32
논리 연산 회로 논리 연산 회로_2 NOT(complement) OR AND XOR
Computer Architecture 논리 연산 회로_2 NOT(complement) A만 NOT 게이트를 통과한 후 MUX를 거쳐 A의 1의 보수를 연산 결과로 출력 OR A와 B가 모두 OR 게이트를 통과한 후 MUX를 거쳐 AB의 연산 결과를 출력 AND A와 B가 모두 AND 게이트를 통과한 후 MUX를 거쳐 AB의 연산 결과를 출력 XOR A와 B가 모두 XOR 게이트를 통과한 후 MUX를 거쳐 AB의 연산 결과를 출력
33
논리 연산 회로 논리 연산 회로_3 논리 연산 회로에서 A와 B의 연산 지시에 따른 출력 결과
Computer Architecture 논리 연산 회로_3 논리 연산 회로에서 A와 B의 연산 지시에 따른 출력 결과 선택 변수 S1S0와 결과의 함수 테이블
34
논리 연산 회로 산술 논리 연산 회로(Arithmetic Logic Unit)-P226
Computer Architecture 산술 논리 연산 회로(Arithmetic Logic Unit)-P226 아래 그림과 같이 산술 장치와 논리 장치가 ALU를 구성 선택선 S1과 S0는 두 회로에 공통으로 사용하고, 또 하나의 선택선 S2가 두 회로의 연산을 구분하게 됨 S2가 0이면 산술연산, S2가 1이면 논리 연산을 수행
35
ALU에서 오버플로 조건 + = + = 오버플로 – P227 n자리 두 수를 더해서 n+1 자리를 얻었을 때를 발생
Computer Architecture 오버플로 – P227 n자리 두 수를 더해서 n+1 자리를 얻었을 때를 발생 오버플로 조건은 부호 비트 밑에서 부호 비트로 발생한 캐리와 부호 비트 에서 발생한 캐리를 XOR한 결과가 1인 경우 연산결과가 잘못될 수 있으므로 얻어진 결과에 오버플로 검사가 필요 수의 표현 범위 내에서 오버플로 발생 가능성 + = + =
36
ALU에서 오버플로 조건 오버플로 – P227 n자리 두 수를 더해서 n+1 자리를 얻었을 때를 발생 1 3 + 10 13 +
Computer Architecture 오버플로 – P227 n자리 두 수를 더해서 n+1 자리를 얻었을 때를 발생 1 + 1 + 1 +
37
ALU에서 오버플로 조건 10진수 부호와 절대값 부호와 1의 보수 부호와 2의 보수 +127 01111111 +2
Computer Architecture 10진수 부호와 절대값 부호와 1의 보수 부호와 2의 보수 +127 +2 +1 +0 -0 -1 -2 -3 -126 -127 -128 -
38
ALU에서 오버플로 조건 Computer Architecture 오버플로의 예 1바이트에 데이터를 표현하는 경우에 2의 보수에 의한 최대 표현 범위는 -128과 +127이며, 아래와 같은 부호가 같은 두 수의 덧셈을 수행하면 결과는 +128이므로 기억장치에 표현할 수가 없어 오버플로가 발생 아래와 같이 부호가 다른 두 수의 뺄셈을 수행하면 결과는 -129이므로 기억장치 표현 범위를 초과해서 오버플로를 발생 -127
39
상태 비트 조건 상태 비트 조건_1 – P228 조건 코드(condition code)나 플래그(flag)라고 불림
Computer Architecture 상태 비트 조건_1 – P228 조건 코드(condition code)나 플래그(flag)라고 불림 종류에는 C(Carry), V(Overflow), Z(Zero), S(Sign)이 있음 ALU의 수행 결과에 따라 0 또는 1로 표현되며 프로그램 제어에 사용됨 C(Carry): ALU의 출력 캐리의 값이 1이면 1, 0이면 0을 가짐 S(Sign): ALU의 연산결과에서 부호비트가 1이면 1, 0이면 0을 가짐 Z(Zero): ALU의 연산결과 모든 비트의 출력이 0이면 1, 그렇지 않으면 0 V(Overflow): ALU의 C8,C9를 XOR를 한 결과가 1이면 1, 그렇지 않다면 0
40
상태 비트 조건 Computer Architecture 상태 비트 조건_2 상태 레지스터를 논리 회로 구조로 표현
41
상태 비트 조건 Computer Architecture 상태 비트 조건_3 - P229 A= (-77의 2의 보수)이고 B= (+10)일 때, A-B 연산의 결과와 상태비트 C, V, Z, S의 값을 구하시오. C : C9가 1이므로 1 S : 연산결과의 8번째 비트가 1이므로 1 Z : 연산결과의 모든 비트 값이 0이 아니므로 0 V : C8 과 C9의 XOR 값이 0이므로 0 (-77) (-77) (+10) (-10)
42
상태 비트 조건 A=-77, B=+10일 때, A-B 연산의 결과와 C, V, Z, S의 값을 구하시오.
Computer Architecture A=-77, B=+10일 때, A-B 연산의 결과와 C, V, Z, S의 값을 구하시오. 기본 연산 형태 (덧셈 형태) (값1) (+5) (-5) (-5) + (값2) (+2) (+2) (-2) (-77) + (-10) ※ 여기서 음수는 2의 보수를 사용 64 32 16 8 4 2 1 A = => 부호와 절대값 => = 이므로 => 1의 보수는 => => 2의 보수 => ‘절대값의 반전 ‘ ‘1의 보수 + 1’ -B= => 부호와 절대값 => = 이므로 => 1의 보수는 => => 2의 보수 => C9 C8 자리 올림 C : C9가 1이므로 => 1 S : 연산결과의 부호 비트가 1이므로 => 1 Z : 연산 결과의 모든 비트 값이 0이 아니므로 => 0 V : C8 과 C9의 XOR 값이 0이므로 => 0 A = -77 - B = -10 연산 결과 부호 값
43
상태 비트 조건 A=-86, B=+12일 때, A-B 연산의 결과와 C, V, Z, S의 값을 구하시오.
Computer Architecture A=-86, B=+12일 때, A-B 연산의 결과와 C, V, Z, S의 값을 구하시오. 기본 연산 형태 (덧셈 형태) (값1) (+5) (-5) (-5) + (값2) (+2) (+2) (-2) (-86) + (-12) ※ 여기서 음수는 2의 보수를 사용 64 32 16 8 4 2 1 A = => 부호와 절대값 => = 이므로 => 1의 보수는 => => 2의 보수 => ‘절대값의 반전 ‘ ‘1의 보수 + 1’ -B= => 부호와 절대값 => = 이므로 => 1의 보수는 => => 2의 보수 => C9 C8 자리 올림 C : C9가 1이므로 => 1 S : 연산결과의 부호 비트가 1이므로 => 1 Z : 연산 결과의 모든 비트 값이 0이 아니므로 => 0 V : C8 과 C9의 XOR 값이 0이므로 => 0 A = -77 - B = -10 연산 결과 부호 값
44
시프트 회로와 동작 Computer Architecture 시프트 회로_1 – P229 시프트에서 밀어내는 방향은 왼쪽 또는 오른쪽이고, 밀어내기에서 양쪽 끝의 비트는 밀어내는 방향에 따라 바깥으로 밀려나고, 그 반대편 끝은 상대적으로 비게 되는데 이곳에 0이나 1이 채워지게 할 수 있음 아래 그림은 3비트 데이터를 좌우로 밀어낼 수 있는 시프트 회로 왼쪽으로 시프트할 때 바깥으로 밀려나는 비트는 왼쪽 밀림비트, 오른 쪽으로 시프트할 때 바깥으로 밀려나는 비트를 오른쪽 밀림 비트라 함
45
시프트 회로와 동작 시프트 회로_2 시프트를 지시하는 명령 신호와 빈 곳을 채워주기 위한 채움 비트의 기능 이동 왼쪽 시프트
Computer Architecture 시프트 회로_2 시프트를 지시하는 명령 신호와 빈 곳을 채워주기 위한 채움 비트의 기능 이동 A0~A2의 내용을 S0~S2로 현재 내용을 그대로 이동되도록 함 왼쪽 시프트 A0~A2의 내용을 1비트씩 왼쪽으로 밀어내도록 함 A0는 S1, A1은 S2로 이동하고 A2는 바깥으로 밀려나게 됨 오른쪽에는 오른쪽 채움 비트의 내용이 S0에 채워지게 됨 오른쪽 시프트 A0~A2의 내용을 오른쪽으로 1비트씩 밀어내도록 함 A2는 S1, A1은 S0로 각각 이동하고 A0는 바깥으로 밀려나게 됨 왼쪽에는 왼쪽 채움 비트의 내용이 S2에 채워짐 S2 S1 S0 A2 A1 A0 S2 S1 S0 A2 A1 A0 밀림 비트 채움 비트 S2 S1 S0 A2 A1 A0 채움 비트 밀림 비트
46
시프트 회로와 동작 Computer Architecture 산술 시프트_1 – P231 레지스터 내용을 좌측 이동시 2를 곱하는, 우측 이동시 2를 나누는 효과를 가지며 이때 채움 비트는 0 또는 1 값을 상황에 맞게 추가해야 됨 X2 X2 1 +16 1 -16 양수 1 +8 음수 1의보수 1 -8 1 +4 1 -4 /2 /2
47
시프트 회로와 동작 Computer Architecture 산술 시프트_2 부호와 절대치의 좌측 시프트
48
시프트 회로와 동작 산술 시프트_3 1의 보수(음수)의 좌측 시프트 - -6 11111001
Computer Architecture 산술 시프트_3 1의 보수(음수)의 좌측 시프트 -6 -
49
시프트 회로와 동작 산술 시프트_4 2의 보수(음수)의 좌측 시프트 - -6 11111010 -3 11111101
Computer Architecture 산술 시프트_4 2의 보수(음수)의 좌측 시프트 - -6 -3
50
시프트 회로와 동작 논리 시프트 – P232 로테이트 데이터 워드의 비트들을 왼쪽 혹은 오른쪽으로 이동시키는 연산
Computer Architecture 논리 시프트 – P232 데이터 워드의 비트들을 왼쪽 혹은 오른쪽으로 이동시키는 연산 최상위 비트인 MSB를 고려하지 않고 모든 비트들을 같이 이동 로테이트 시프트로 바깥으로 밀려나는 비트가 그 반대편의 빈 곳에 채워지는 형태 로테이트를 위한 시프트는 왼쪽과 오른쪽의 2가지 방향만 존재하고 양쪽 끝의 비트를 제외한 나머지 비트들은 시프트 때와 같음 로테이트되는 구조
51
연산 알고리즘 덧셈과 뺄셈_1 – P233 두 수가 저장된 A, B 레지스터의 덧셈 및 뺄셈의 알고리즘
Computer Architecture 덧셈과 뺄셈_1 – P233 두 수가 저장된 A, B 레지스터의 덧셈 및 뺄셈의 알고리즘 같은 부호의 가산, 다른 부호의 감산은 절대값들을 가산하고 A의 부호를 사용 다른 부호의 가산, 같은 부호의 감산은 절대값들의 감산 처리를 한 다음, A>=B이면 A의 부호를 사용 A<B이면 A의 반대 부호를 사용 덧셈과 뺄셈의 산술 연산을 하드웨어로 수행하기 위한 블록도
52
연산 알고리즘 덧셈과 뺄셈_2 덧셈 뺄셈 예) A의 내용이 1011이고, B의 내용이 0011일 경우 A+B, A-B를 수행
Computer Architecture 덧셈과 뺄셈_2 덧셈 보수기 제어(CC)는 0이 되어 B의 내용이 병렬 가산기에 로드되고 A와 가산됨 뺄셈 보수기 제어(CC)는 1이 되어 B의 내용이 2의 보수로 변환되어 병렬 가산기에 로드되고 A와 가산됨 예) A의 내용이 1011이고, B의 내용이 0011일 경우 A+B, A-B를 수행 -5의 2의 보수 -5의 2의 보수 +3의 절대값 -3의 2의 보수 -2의 2의 보수 -8의 2의 보수
53
연산 알고리즘 덧셈 및 뺄셈 연산 알고리즘 Computer Architecture 같은 부호(+,+) 같은 부호(-,-)
다른 부호(+,-) 다른 부 호(-,+) 가산 (+A) + (+B) (+3) + (+4) (-A) + (-B) (-3) + (-4) + (+B) + (+4) 감산 - (+B) - (+4) - (-B) - (-4) - (+B)
54
연산 알고리즘 곱셈과 나눗셈 – P235 곱셈 ZXⅹY의 기본 연산 알고리즘
Computer Architecture 곱셈과 나눗셈 – P235 곱셈 ZXⅹY의 기본 연산 알고리즘 Z0 if Y가 0이면 종료, 아니면 다음 단계 수행 Z Z+X, Y Y-1 수행하고, 이전 단계로 분기 몫이 Q, 나머지가 R인 나눗셈 X/Y의 기본 연산 알고리즘 Q 0 if X<Y이면 다음 단계 수행, 아니면 X X-Y, Q Q+1을 수행하고 이 단계를 반복 R X, 종료
55
연산 알고리즘 곱셈 연산 과정 곱셈 X X Y = Z 3 2 ? (1) Z=0 에서 시작
Computer Architecture 곱셈 연산 과정 곱셈 X X Y = Z ? (1) Z=0 에서 시작 (2) Y=0 이 될 때까지 Z = Z+X, Y=Y-1을 수행 Z = 0 Z = = 3 Z = = 6
56
연산 알고리즘 곱셈 알고리즘 – P236 곱셈은 시프트와 덧셈 연산의 과정을 반복적으로 수행
Computer Architecture 곱셈 알고리즘 – P236 곱셈은 시프트와 덧셈 연산의 과정을 반복적으로 수행 곱셈의 부호는 승수와 피승수의 부호에 의해 결정 부호가 서로 같으면 결과의 부호는 양 부호가 서로 다르면 결과의 부호는 음 Booth 알고리즘 M은 피승수, Q는 승수, Q-1은 Q레지스터에 연속해 붙은 1비트 레지스터, Count는 피승수와 승수의 각 비트수
57
연산 알고리즘 나눗셈 연산 과정 나눗셈 X / Y = Q(몫) + R(나머지) 6 2 = ? (1) Q=0에서 시작
Computer Architecture 나눗셈 연산 과정 나눗셈 X / Y = Q(몫) + R(나머지) = ? (1) Q=0에서 시작 (2) if X<Y일 때까지 X X-Y, Q Q+1을 수행 , Q = 0 6 – 2 = 4 , Q = 1 4 – 2 = 2 , Q = 2 2 – 2 = 0 , Q = 3
58
연산 알고리즘 나눗셈 알고리즘 – P238 나눗셈에서 몫과 나머지의 부호는 젯수와 피젯수의 부호에 의해 결정
Computer Architecture 나눗셈 알고리즘 – P238 나눗셈에서 몫과 나머지의 부호는 젯수와 피젯수의 부호에 의해 결정 젯수와 피젯수가 모두 양수면 몫과 나머지는 양수 젯수가 음수, 피젯수가 양수면 몫의 부호는 음이며 2의 보수를 사용하고 나머지 부호는 양수 나눗셈 연산을 위한 알고리즘은 오른쪽 그림의 순서도와 같으며, 나눗셈이므로 피젯수가 음수인 경우는 이 알고리즘이 적용되지 않음
59
연산 알고리즘 부동 소수점 연산_1 – P241 실수의 표현 방식
Computer Architecture 부동 소수점 연산_1 – P241 부동 소수점 표현의 덧셈과 뺄셈은 먼저 가수 위치를 조정한 후 연산 부동 소수점 표현의 곱셈과 나눗셈은 가수부와 지수부를 따로 처리한 후 최종 결과를 정규화 표현으로 나타냄 실수의 표현 방식 부동소수점 표현으로 바이어스 된 지수(biased exponent)를 사용 바이어스 표현은 모든 지수를 양수로 나타내도록 조정 바이어스 지수의 장점 지수가 양수만으로 표현되므로 가수 위치 조정 시 지수 크기의 비교가 용이 가장 작은 값의 지수는 0
60
연산 알고리즘 Computer Architecture 부동 소수점 연산_2 덧셈, 뺄셈-1 연산에 사용되는 두 수는 각각 ACC와 BR에 저장되며 연산결과는 ACC에 저장 연산 단계 0인지의 여부를 조사 가수의 위치 조정(지수가 0이 되도록 조정) 가수의 덧셈 또는 뺄셈 결과를 정규화 정규화 유효 숫자의 자릿수를 최대한 확보하기 위해서, 수치의 가장 위 자릿수가 소수점 바로 아래에 오도록 소수점의 위치를 조정하는 것
61
연산 알고리즘 부동 소수점 연산_3 덧셈, 뺄셈-2 0.2357ⅹ103와 0.4521ⅹ10-2의 덧셈, 뺄셈 수행의 예
Computer Architecture 부동 소수점 연산_3 덧셈, 뺄셈-2 0.2357ⅹ103와 ⅹ10-2의 덧셈, 뺄셈 수행의 예 두 수가 모두 0이 아님 가수 위치를 조정하면 ACC=235.7X100이고, BR= X100 연산 결과를 정규화하면 덧셈 결과 = ⅹ103 뺄셈 결과 = ⅹ103
62
연산 알고리즘 부동 소수점 연산_4 곱셈, 나눗셈 곱셈과 나눗셈을 위한 알고리즘의 수행 단계
Computer Architecture 부동 소수점 연산_4 곱셈, 나눗셈 부동 소수점 수의 곱셈은 가수들은 서로 곱하고 지수들은 덧셈으로 처리 나눗셈은 가수들은 서로 나눗셈을 하고, 지수들은 뺄셈으로 처리 곱셈과 나눗셈을 위한 알고리즘의 수행 단계
63
연산 알고리즘 부동 소수점 연산_5 곱셈, 나눗셈 연산에서의 정규화 나눗셈에서 정규화의 보정
Computer Architecture 부동 소수점 연산_5 곱셈, 나눗셈 연산에서의 정규화 곱셈의 경우 연산 결과를 시프트와 지수 증감을 통해 정규화 처리 나눗셈의 경우 몫은 고정 소수점 표현을 통해 정규화하고 나머지는 피젯수를 시프트와 디크리먼트함으로써 정규화 처리 나눗셈에서 정규화의 보정 바이어스 (bias) 처리된 지수가 나눗셈에서 지수의 뺄셈으로 바이어스 값이 변경되므로 이를 알맞게 보정하는 것이 필요
64
주요 학습 내용 프로세서의 기능과 구성요소 레지스터와 레지스터 전송 ALU의 구조와 연산회로 ALU에서의 오버플로 조건
Computer Architecture 프로세서의 기능과 구성요소 레지스터와 레지스터 전송 ALU의 구조와 연산회로 ALU에서의 오버플로 조건 상태비트 조건 시프트 회로와 동작 연산 알고리즘
Similar presentations