컴퓨터시스템구조

Download Report

Transcript 컴퓨터시스템구조

레지스터 전송과 마이크로 연산
Lecture #4
강의 목차
Register Transfer Language
▶ Register Transfer
▶ Bus and Memory Transfers
▶ Arithmetic Microoperations
▶ Logic Microoperations
▶ Shift Microoperations
▶ Arithmetic Logic Shift Unit
▶
마이크로 연산 (1)
▶
마이크로 연산(Microoperations)
▷
▷
▷
레지스터에 저장된 데이터를 갖고서 실행되는 일련의 동작
하나의 클럭 펄스 동안에 실행되는 기본적인 동작
예:





시프트(shift)
카운터(count)
클리어(clear)
증감(increment/decrement)
로드(load) 등
마이크로 연산 (2)
▶
마이크로 연산(Microoperation)
(계속)
▷
An elementary operation performed (during one clock pulse), on
the information stored in one or more registers
▷
R ←f(R, R)

f: shift, load, clear, increment, add, subtract, complement, and, or,
xor, …
레지스터 전송 언어 (1)
▶
디지털 컴퓨터의 구조 정의 시 규정사항
▷
▷
▷
▶
레지스터의 종류와 기능
레지스터에 저장된 2진 정보를 가지고 수행되는 일련의 마이크로
연산들
일련의 마이크로 연산을 시작시키는 제어기능
레지스터 전송 언어(Register Transfer Language: RTL)
▷
▷
▷
디지털 컴퓨터의 내부 구조를 규정하기 위해 사용하는 기호로 표시
된 언어
디지털 컴퓨터의 설계 과정은 용이하게 함
디지털 컴퓨터의 하나의 기능에 대한 일련의 마이크로 연산들을 묘
사하기 위해 사용
레지스터 전송 언어 (2)
▶
레지스터
▷
기능을 나타내기 위해 머리글자만을 따서 대문자로 표시




▷
레지스터 표현 방식:



▷
MAR : Memory Address Register
PC : Program Counter
IR : Instruction Register
R1 : Processor Register #1 등
a register
a portion of a register : (e.g) PC(0-7), PC(L), PC(15-8), PC(H)
a bit of a register
레지스터 블록도 표현:
레지스터 전송 언어 (3)
▶
레지스터들 사이의 정보전송
▷
▷
하나의 레지스터(source)에서 다른 레지스터(destination)로 내용
복사
레지스터간의 물리적인 연결 요구


▷
▷
소스 레지스터의 출력과 도착 레지스터를 연결하는 회로 필요
도착 레지스터에는 병렬로드 기능 필요
치환(replacement) 연산자를 이용하여 표현 : R2 ← R1
정해진 제어 조건이 만족할 경우의 레지스터 전송 표현: if-else 문
if (p=1) then (R2←R1)
레지스터 전송 언어 (4)
▶
제어 함수(Control Function)
▷
정해진 조건이 만족할 때에 원하는 동작이 수행되도록 제어가 필요
한 경우가 있음

▷
디지털 시스템에서는 “제어함수”라는 제어신호에 의해 가능


▷
프로그래밍언어의 “if” 문장과 유사
제어신호가 1일 때에 원하는 동작이 수행됨
마이크로연산 앞에 “제어신호:” 형식으로 제어함수 표현
예)
P: R2 ←R1

“if P = 1, then load the contents of register R1 into register R2”, i.e.,
if (P = 1) then (R2 ←R1)
레지스터 전송 언어 (5)
▶
제어 함수의 하드웨어 구현
▷
레지스터 전송 P: R2 ←R1

블록도
• 동일한 클록이 제어함수
를 생성하는 회로와 레지스
터를 제어함
• 레지스터는 positiveedge-triggeredflip-flops으
로 가정함.

타이밍 다이어그램
P는 시간 t에서 클럭펄스의
상승 모서리와 동기되어 시
작되며 시간(t+1)의 다음
상승변이에서 P는 활성화
되어 있는 상태이므로 R2
의 데이타 입력이 병렬로
레지스터에 적재된다
레지스터 전송 언어 (6)
▶
동시 연산(Simultaneous Operations)
▷
▷
▷
하나의 제어함수에 두 개 이상의 연산이 동시에 수행되는 경우
콤마(,)로 분리하여 마이크로 연산을 나열
예)
P: R2 ← R1, MAR ← IR

“if the control function P = 1, load the contents of R2 into R1, and
at the same time (clock), load the contents of register IR into
register MAR”
레지스터 전송 언어 (7)
▶
레지스터 전송의 기본 기호
버스 전송 (1)
▶
버스를 이용한 레지스터 연결
▷
▷
디지털 시스템에서 레지스터와 레지스터들 사이의 정보 전송경로
를 갖는다
효율성을 고려하여 전송경로는 공통 버스 시스템으로 구성

▷
여러 개의 소스 레지스터에서 여러 개의 도착 레지스터로 데이터를 전
송 가능하게 함
버스에서는 한번에 하나의 전송만이 이루어지도록 제어신호를 이
용하여 전송에 사용될 레지스터를 선택하는 제어 과정이 필요
버스 전송 (2)
▶
버스 구성 방법
▷
레지스터에서 버스로의 연결 : 멀티플렉서 사용



버스는 4개의 데이터 입력과 두 개의 선택입력(S1, S2)를 가지고서 하
나의 버스라인을 구성
선택입력은 각 레지스터들로부터 4 개의 비트를 선택하여 공통버스에
전달한다
일반적으로 n-비트의 k 레지스터를 버스에 연결하기 위해 n개의 k x 1
멀티플렉서가 필요
버스 전송 (3)
▶
버스 구성 방법
▷
버스에서 레지스터로의 연결 : 디코더를 사용하여 로드 신호 생성
▷
버스와 레지스터 간의 전송 마이크로 연산:
R2 ← R1  BUS ← R1, R2 ← BUS
버스 전송 (4)
▶
3-상태 버스 버퍼
▷
3-상태 버퍼

3가지의 상태를 가짐
– 0의 상태와 1의 상태
– 개회로와 같은 상태로서 출력이 차단되는 고저항 상태(High Impedance)


제어입력이 1일 때 보통의 버퍼와 같이 동작
제어입력이 0이면 게이트는 고저항 상태
버스 전송 (5)
▶
3-상태 버스 버퍼
▷
(계속)
3-상태 버퍼를 이용한 버스 시스템의 구현



제어입력을 통해 버스라인에 연결될 버퍼를 선택
디코더를 이용하여 한 순간에 오직 하나의 3-상태 버퍼만 작동되어
버스에 연결되고 나머지 버퍼는 고저항 상태로 유지
인에이블 입력이 1이면 디코더의 입력값에 따라 버퍼 중 하나만 동작
메모리 전송 (1)
▶
메모리(Memory, RAM)
▷
▷
다수의 레지스터를 일렬로 나열한 논리장치로 간주 가능
r 개의 레지스터는 각각 주소를 가지며, 임의 접근이 가능

▷
▷
주소 범위: 0 to r-1
각 레지스터는 n 비트의 데이터를 저장
r = 2k 워드를 저장할 수 있는 RAM의 구조 :





n data input lines
n data output lines
k address lines
A Read control line
A Write control line
메모리 전송 (2)
▶
메모리 전송
▷
▷
▷
메모리는 레지스터 전송 언어에서는 하나의 장치 M로 간주
주소를 이용하여 메모리 장치 내의 하나의 워드 표현
 인덱싱 표기를 사용하여 표현: e.g) M[100] or M[AR]
메모리 접근 과정
Step #1: 접근하려는 주소를 Memory Address Register(MAR, or AR)에
전송
Step #2: 메모리 접근 연산(Read or Write) 수행하면 MAR에서 지정하는
메모리 장소를 접근
메모리 전송 (3)
▶
메모리 읽기
▷
메모리로부터 레지스터로 데이터 읽기 마이크로연산
Read: R1 ← M[MAR]
▷
메모리 읽기 연산 수행 동작




MAR 레지스터의 주소를 주소 버스 라인에 전송
Read (= 1) 제어 신호를 메모리 장치에 전송
메모리 장치는 주소 버스 라인에서 지정된 워드의 내용을 메모리의
출력 데이터 라인으로 전송
데이터 버스 라인의 데이터를 R1 레지스터로 로드
메모리 전송 (4)
▶
메모리 쓰기
▷
레지스터로부터 메모리로 데이터 쓰기 마이크로연산
Write: R1 ← M[MAR]
▷
메모리 쓰기 연산 수행 동작




MAR 레지스터의 주소를 주소 버스 라인에 전송
Write (= 1) 제어 신호를 메모리 장치에 전송
레지스터의 내용을 데이터 버스 라인을 통해 메모리의 데이터 입력
라인으로 전송
메모리 장치는 데이터 입력 라인의 데이터를 지정된 주소에 저장
레지스터 전송 마이크로연산 요약
마이크로연산
설
명
A←B
Transfer content of reg. B into reg.
AR ← DR(AD)
Transfer content of AD portion of reg. DR into reg.
AR
A ← constant
Transfer a binary constant into reg. AABUS
ABUS ← R1,
R2 ← ABUS
Transfer content of R1 into bus A and, at the same
time, transfer content of bus A into R2
AR
Address Register
DR
Data Register
M[R]
Memory word specified by reg. R
M
Equivalent to M[AR]
DR ← M
Memory read operation: transfers content of
memory word specified by AR into DR
M ← DR
Memory write operation: transfers content of DR
into memory word specified by AR
마이크로연산 유형
▶
디지털 컴퓨터에서의 마이크로 연산 유형
▷
레지스터 전송 마이크로연산(Register transfer microoperations)

▷
산술 마이크로연산(Arithmetic microoperations)

▷
레지스터에 저장된 수치 데이터에 대해 산술 연산 수행
논리 마이크로연산(Logic microoperations)

▷
레지스터 사이에서 이진 정보 전송
레지스터에 저장된 비수치 데이터에 대해 논리 연산 수행
시프트 마이크로연산(Shift microoperations)

레지스터에 저장된 데이터에 대해 시프트 연산 수행
산술 마이크로연산 (1)
▶
기본적인 산술 마이크로연산
▷
▷
▷
▷
▶
덧셈(Addition)
뺄셈(Subtraction)
증가(Increment)
감소(Decrement)
추가 산술 마이크로연산
▷
▷
▷
▷
Add with carry
Subtract with borrow
Transfer/Load
etc. …
산술 마이크로연산 (2)
▶
덧셈 마이크로연산
▷
▶
뺄셈 마이크로연산
▷
▶
R3 ← R1 + R2
R3 ← R1 + R2' + 1
곱셈/나눗셈 마이크로연산
▷
▷
▷
두 연산에 대해 디지털 시스템에서 조합회로로 구현되었을 때 마
이크로 연산으로 간주
곱셈연산은 여러 개의 덧셈과 시프트 마이크로연산으로 구현
나눗셈은 여러 개의 뺄셈과 시프트 마이크로연산으로 구현
산술 마이크로연산 (3)
▶
2진 가산기
▷
전가산기

▷
2진 가산기


▷
두 비트와 이전의 캐리의 산술합을 계산하는 논리회로
임의의 길이를 갖는 두 이진수에 대한 덧셈을 수행하는 논리회로
여러 개의 전가산기를 직렬로 연결하여 이전 가산기의 캐리 출력이
다음 가산기의 캐리로 입력되도록 구성
4-비트 2진 가산기



4개의 전가산기를 연결
피가수 A, 가수 B를 오른쪽에서 왼쪽으로 나열
C0와 C4는 각각 입력과 출력 캐리, S는 합 출력
산술 마이크로연산 (4)
▶
2진 가감산기
▷
▷
2진수의 뺄셈은 2의 보수를 이용한 덧셈으로 계산
각 전가산기에 XOR 게이트를 추가하여 덧셈과 뺄셈을 하나의 동
일한 회로에서 구현
• 동작방식 :
-모드 입력 M=0이면 가산기로,
M=1이면 감산기로 동작
-M=0이면 B xor 0=B이므로 전가산
기의 한쪽 입력 중에 B만 입력되고
캐리로는 0이 입력
-M=1이면 B xor 1=B'이므로 C0=1
이 되고, 전가산기의 한쪽 입력에 B
의 2의 보수가 입력
- 부호없는 숫자의 경우에 A≥B이면
A-B가 출력되고 A<B이면 (B-A)에
대한 2의 보수가 출력
산술 마이크로연산 (5)
▶
2진 인크리먼터(Binary Incrementer)
▷
▷
▷
▷
2진 인크리먼트 마이크로연산
레지스터의 값에 1을 더하는 연산 수행
<그림 2-10>과 같은 카운터를 이용하여 구현하는 것도 가능
<그림 1-16>의 반가산기를 이용하여 구현 가능
• 4비트 2진 인크리먼터 :
- 최하위 비트에 해당하는 반가산기의
한쪽 입력은 항상 1이고, 다른 한쪽 입
력은 증가되어야 할 숫자의 최하위 비
트에 연결
- 반가산기의 캐리 출력은 다음 반가산
기의 한 입력에 연결
- A0~A3를 증가시킨 출력은 S0~S3이다
산술 마이크로연산 (6)
▶
산술논리회로 예:
▷
▷
▷
▷
▷
▷
▷
▷
4비트 산술 가산회로
4 개의 전가산기와 멀티플렉서로 구성
두 개의 4비트 입력 A, B 그리고 출력 D
입력 A는 2진 가산기의 X입력에 연결
입력 B는 멀티플렉서의 데이터 입력측에 연결
멀티플렉서는 B,B',0,1을 입력 데이터로 받아들여 두 개의 선택입
력 S1S0에 의해 선택된 한 개가 출력된다
입력캐리 Cin은 최하위 전가산기의 캐리입력에 연결되고 출력캐리
는 다음 단의 입력캐리에 연결된다
2진 가산기의 출력 : D = A + Y + Cin
산술 마이크로연산 (7)
▶
산술논리회로 예
(계속)
논리 마이크로연산 (1)
▶
논리 마이크로연산
▷
▷
▷
▷
레지스터에 저장된 비트열에 대한 2진 연산으로서 각 비트를 독립
된 2진 변수로 가정하여 연산을 수행
예: XOR 연산은 제어변수 P가 1일 때 R1과 R2의 각 비트를 연산
P : R1 ← R1 + R2
주로 2진 데이터의 비트조작이나 논리적 결정을 내릴 때 사용
별도의 기호를 사용하여 부울대수의 OR, AND, NOT 연산과 식별



▷
OR 마이크로연산 : ∨
AND 마이크로연산 : ∧
NOT 마이크로연산 : bar 기호
제어함수에서의 OR연산자: +

예: P+Q : R1 ← R2 + R3, R4 ← R5 ∨ R6
P 또는 Q가
1일 때
논리 마이크로연산 (2)
▶
논리 마이크로 연산표
▷
2개의 2진 변수로 수행할 수 있는 논리연산은 16가지
논리 마이크로연산 (3)
▶
하드웨어 구현
▷
▷
▷
대부분의 컴퓨터에서는 4개의 논리연산 AND, OR, NOT, XOR만을
사용 주로 사용
예: 4가지의 기본 논리 마이크로연산을 수행하는 회로
n-비트 논리연산회로는 위의 회로를 n개 병렬로 연결하고, 동일한
멀티플렉서 선택신호를 인가하도록 함.
논리 마이크로연산 (4)
▶
논리 마이크로연산의 응용
▷
▷
레지스터의 각 비트나 일부분을 다루는데 유용
Selective-set 연산: A ← A ∨ B


▷
sets to 1 the bits in register A where there are corresponding 1’s in
register B
does not effect bit positions that have 0’s in B
Selective-complement 연산: A ← A


+
B
complements bits in A where there are corresponding 1’s in B
does not effect bit positions that have 0’s in B
논리 마이크로연산 (5)
▶
논리 마이크로연산의 응용
▷
Selective-clear 연산 : A ← A ∧ B

▷
(계속)
clears to 0 the bits in A only where there are corresponding 1’s in B
Selective-mask 연산 : A ← A ∧ B

is similar to the selective-clear operation except that the bits of A
are cleared only where there are corresponding 0’s in B1
논리 마이크로연산 (6)
▶
논리 마이크로연산의 응용
▷
Insert 연산


▷
(계속)
inserts a new value into a group of bits
is done by first masking the bits and then Oring them with the
required value
Clear 연산 : A ← A

+
B
compares the words in A and B and produces an all 0’s result if the
two numbers are equal
시프트 마이크로연산 (1)
▶
시프트 마이크로연산
▷
▷
▷
데이터의 직렬 전송을 위해 사용
레지스터 내용을 왼쪽 또는 오른쪽으로 시프트하며, 시프트 방향의
첫번째 플립플롭은 직렬 입력을 통해 새로운 정보를 입력

오른쪽 시프트 연산

왼쪽 시프트 연산
3종류의 시프트 연산 지원 – 직렬 입력으로 입력되는 정보의 종류
에 따라 분류



논리 시프트(Logical shift)
순환 시프트(Circular shift)
산술 시프트(Arithmetic shift)
시프트 마이크로연산 (2)
▶
논리 시프트(Logical Shift)
▷
▷
논리 시프트는 직렬 입력으로 0을 전송
논리 시프트에 의해 전송되는 비트는 모두 0이 된다(Zero inserted)
0
0
▷
RTL에서 논리 시프트 연산 표현

shl for a logical shift left
shr for a logical shift right

예:

– R2 ← shr R2
– R3 ← shl R3
시프트 마이크로연산 (3)
▶
순환 시프트(Circular Shift)
▷
시프트 레지스터의 직렬 출력을 직렬 입력에 연결  원래 저장되
어 있던 정보의 손실없이 비트들을 순환
▷
RTL에서 순환 시프트 연산 표현

cil for a circular shift left
cir for a circular shift right

예:

– R2 ← cir R2
– R3 ← cil R3
시프트 마이크로연산 (4)
▶
산술 시프트(Arithmetic Shift)
▷
부호가 있는 이진수를 시프트하는 것


▷
▷
왼쪽 산술 시프트  이진수에 2를 곱한 것
오른쪽 산술 시프트  이진수에 2를 나눈 것
이진수의 맨 왼쪽 비트인 부호 비트는 시프트되지 않으므로 변화가
없다
RTL에서 산술 시프트 연산 표현


ashl for a arithmetic shift left
ashr for a arithmetic shift right
시프트 마이크로연산 (5)
▶
산술 시프트(Arithmetic Shift)
▷
부호 역전 현상 : Overflow F/F Vs=1

왼쪽 산술 시프트 연산에서는 오버플로우를 검사하여야 한다
시프트 마이크로연산 (6)
▶
시프트 마이크로연산의 하드웨어 구현
산술 논리 시프트 장치
▶
산술논리장치(ALU)