42
레레레레 레레레 레레레레 레레 레레레레 레레레 레레레레 레레 Lecture #4 Lecture #4

레지스터 전송과 마이크로 연산

  • Upload
    art

  • View
    143

  • Download
    15

Embed Size (px)

DESCRIPTION

레지스터 전송과 마이크로 연산. Lecture #4. 강의 목차. Register Transfer Language Register Transfer Bus and Memory Transfers Arithmetic Microoperations Logic Microoperations Shift Microoperations Arithmetic Logic Shift Unit. 마이크로 연산 (1). 마이크로 연산( Microoperations) 레지스터에 저장된 데이터를 갖고서 실행되는 일련의 동작 - PowerPoint PPT Presentation

Citation preview

레지스터 전송과 마이크로 연산레지스터 전송과 마이크로 연산

Lecture #4Lecture #4

강의 목차강의 목차

▶ Register Transfer Language▶ Register Transfer▶ Bus and Memory Transfers▶ Arithmetic Microoperations▶ Logic Microoperations▶ Shift Microoperations▶ Arithmetic Logic Shift Unit

마이크로 연산 마이크로 연산 (1)(1)

▶ 마이크로 연산 (Microoperations) ▷ 레지스터에 저장된 데이터를 갖고서 실행되는 일련의 동작 ▷ 하나의 클럭 펄스 동안에 실행되는 기본적인 동작 ▷ 예 :

시프트 (shift) 카운터 (count) 클리어 (clear) 증감 (increment/decrement) 로드 (load) 등

마이크로 연산 마이크로 연산 (2)(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)(1)

▶ 디지털 컴퓨터의 구조 정의 시 규정사항 ▷ 레지스터의 종류와 기능 ▷ 레지스터에 저장된 2 진 정보를 가지고 수행되는 일련의 마이크로

연산들 ▷ 일련의 마이크로 연산을 시작시키는 제어기능

▶ 레지스터 전송 언어 (Register Transfer Language: RTL)▷ 디지털 컴퓨터의 내부 구조를 규정하기 위해 사용하는 기호로

표시된 언어▷ 디지털 컴퓨터의 설계 과정은 용이하게 함▷ 디지털 컴퓨터의 하나의 기능에 대한 일련의 마이크로 연산들을

묘사하기 위해 사용

레지스터 전송 언어 레지스터 전송 언어 (2)(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)(3)

▶ 레지스터들 사이의 정보전송 ▷ 하나의 레지스터 (source) 에서 다른 레지스터 (destination) 로

내용 복사▷ 레지스터간의 물리적인 연결 요구

소스 레지스터의 출력과 도착 레지스터를 연결하는 회로 필요 도착 레지스터에는 병렬로드 기능 필요

▷ 치환 (replacement) 연산자를 이용하여 표현 : R2 ← R1 ▷ 정해진 제어 조건이 만족할 경우의 레지스터 전송 표현 : if-else 문

if (p=1) then (R2←R1)

레지스터 전송 언어 레지스터 전송 언어 (4)(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)(5)

▶ 제어 함수의 하드웨어 구현▷ 레지스터 전송 P: R2 ←R1

블록도

타이밍 다이어그램

P 는 시간 t 에서 클럭펄스의 상승 모서리와 동기되어 시작되며 시간

(t+1) 의 다음 상승변이에서 P 는 활성화 되어 있는 상태이므로 R2의 데이타 입력이 병렬로

레지스터에 적재된다

• 동일한 클록이 제어함수를 생성하는 회로와 레지스터를 제어함• 레지스터는 positive-edge-triggeredflip-flops으로 가정함 .

레지스터 전송 언어 레지스터 전송 언어 (6)(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)(7)

▶ 레지스터 전송의 기본 기호

버스 전송 버스 전송 (1)(1)

▶ 버스를 이용한 레지스터 연결▷ 디지털 시스템에서 레지스터와 레지스터들 사이의 정보

전송경로를 갖는다 ▷ 효율성을 고려하여 전송경로는 공통 버스 시스템으로 구성

여러 개의 소스 레지스터에서 여러 개의 도착 레지스터로 데이터를 전송 가능하게 함

▷ 버스에서는 한번에 하나의 전송만이 이루어지도록 제어신호를 이용하여 전송에 사용될 레지스터를 선택하는 제어 과정이 필요

버스 전송 버스 전송 (2)(2)

▶ 버스 구성 방법 ▷ 레지스터에서 버스로의 연결 : 멀티플렉서 사용

버스는 4 개의 데이터 입력과 두 개의 선택입력 (S1, S2) 를 가지고서 하나의 버스라인을 구성

선택입력은 각 레지스터들로부터 4 개의 비트를 선택하여 공통버스에 전달한다

일반적으로 n- 비트의 k 레지스터를 버스에 연결하기 위해 n 개의 k x 1 멀티플렉서가 필요

버스 전송 버스 전송 (3)(3)

▶ 버스 구성 방법 ▷ 버스에서 레지스터로의 연결 : 디코더를 사용하여 로드 신호 생성

▷ 버스와 레지스터 간의 전송 마이크로 연산 :R2 ← R1 BUS ← R1, R2 ← BUS

버스 전송 버스 전송 (4)(4)

▶ 3- 상태 버스 버퍼▷ 3- 상태 버퍼

3 가지의 상태를 가짐 – 0 의 상태와 1 의 상태 – 개회로와 같은 상태로서 출력이 차단되는 고저항 상태 (High Impedance)

제어입력이 1 일 때 보통의 버퍼와 같이 동작 제어입력이 0 이면 게이트는 고저항 상태

버스 전송 버스 전송 (5)(5)

▶ 3- 상태 버스 버퍼 ( 계속 )

▷ 3- 상태 버퍼를 이용한 버스 시스템의 구현 제어입력을 통해 버스라인에 연결될 버퍼를 선택 디코더를 이용하여 한 순간에 오직 하나의 3- 상태 버퍼만 작동되어

버스에 연결되고 나머지 버퍼는 고저항 상태로 유지 인에이블 입력이 1 이면 디코더의 입력값에 따라 버퍼 중 하나만 동작

메모리 전송 메모리 전송 (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)(2)

▶ 메모리 전송▷ 메모리는 레지스터 전송 언어에서는 하나의 장치 M 로 간주▷ 주소를 이용하여 메모리 장치 내의 하나의 워드 표현

인덱싱 표기를 사용하여 표현 : e.g) M[100] or M[AR]▷ 메모리 접근 과정

Step #1: 접근하려는 주소를 Memory Address Register(MAR, or AR) 에 전송

Step #2: 메모리 접근 연산 (Read or Write) 수행하면 MAR 에서 지정하는 메모리 장소를 접근

메모리 전송 메모리 전송 (3)(3)

▶ 메모리 읽기▷ 메모리로부터 레지스터로 데이터 읽기 마이크로연산

Read: R1 ← M[MAR]

▷ 메모리 읽기 연산 수행 동작 MAR 레지스터의 주소를 주소 버스 라인에 전송 Read (= 1) 제어 신호를 메모리 장치에 전송 메모리 장치는 주소 버스 라인에서 지정된 워드의 내용을 메모리의

출력 데이터 라인으로 전송 데이터 버스 라인의 데이터를 R1 레지스터로 로드

메모리 전송 메모리 전송 (4)(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)(1)

▶ 기본적인 산술 마이크로연산▷ 덧셈 (Addition)▷ 뺄셈 (Subtraction)▷ 증가 (Increment)▷ 감소 (Decrement)

▶ 추가 산술 마이크로연산▷ Add with carry▷ Subtract with borrow▷ Transfer/Load▷ etc. …

산술 마이크로연산 산술 마이크로연산 (2)(2)

▶ 덧셈 마이크로연산▷ R3 ← R1 + R2

▶ 뺄셈 마이크로연산▷ R3 ← R1 + R2' + 1

▶ 곱셈 /나눗셈 마이크로연산 ▷ 두 연산에 대해 디지털 시스템에서 조합회로로 구현되었을 때

마이크로 연산으로 간주 ▷ 곱셈연산은 여러 개의 덧셈과 시프트 마이크로연산으로 구현 ▷ 나눗셈은 여러 개의 뺄셈과 시프트 마이크로연산으로 구현

산술 마이크로연산 산술 마이크로연산 (3)(3)

▶ 2 진 가산기 ▷ 전가산기

두 비트와 이전의 캐리의 산술합을 계산하는 논리회로 ▷ 2 진 가산기

임의의 길이를 갖는 두 이진수에 대한 덧셈을 수행하는 논리회로 여러 개의 전가산기를 직렬로 연결하여 이전 가산기의 캐리 출력이

다음 가산기의 캐리로 입력되도록 구성▷ 4- 비트 2 진 가산기

4 개의 전가산기를 연결 피가수 A, 가수 B 를 오른쪽에서 왼쪽으로 나열 C0 와 C4 는 각각 입력과 출력 캐리 , S 는 합 출력

산술 마이크로연산 산술 마이크로연산 (4)(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)(5)

▶ 2 진 인크리먼터 (Binary Incrementer) ▷ 2 진 인크리먼트 마이크로연산 ▷ 레지스터의 값에 1 을 더하는 연산 수행 ▷ < 그림 2-10> 과 같은 카운터를 이용하여 구현하는 것도 가능 ▷ < 그림 1-16> 의 반가산기를 이용하여 구현 가능

• 4 비트 2 진 인크리먼터 :- 최하위 비트에 해당하는 반가산기의 한쪽 입력은 항상 1 이고 , 다른 한쪽 입력은 증가되어야 할 숫자의 최하위 비트에 연결- 반가산기의 캐리 출력은 다음 반가산기의 한 입력에 연결 - A0

~A3 를 증가시킨 출력은 S0~S3 이다

산술 마이크로연산 산술 마이크로연산 (6)(6)

▶ 산술논리회로 예 :▷ 4 비트 산술 가산회로 ▷ 4 개의 전가산기와 멀티플렉서로 구성 ▷ 두 개의 4 비트 입력 A, B 그리고 출력 D ▷ 입력 A 는 2 진 가산기의 X 입력에 연결 ▷ 입력 B 는 멀티플렉서의 데이터 입력측에 연결▷ 멀티플렉서는 B,B',0,1 을 입력 데이터로 받아들여 두 개의

선택입력 S1S0 에 의해 선택된 한 개가 출력된다 ▷ 입력캐리 Cin 은 최하위 전가산기의 캐리입력에 연결되고

출력캐리는 다음 단의 입력캐리에 연결된다 ▷ 2 진 가산기의 출력 : D = A + Y + Cin

산술 마이크로연산 산술 마이크로연산 (7)(7)

▶ 산술논리회로 예 ( 계속 )

논리 마이크로연산 논리 마이크로연산 (1)(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 개의 2 진 변수로 수행할 수 있는 논리연산은 16 가지

논리 마이크로연산 논리 마이크로연산 (3)(3)

▶ 하드웨어 구현 ▷ 대부분의 컴퓨터에서는 4 개의 논리연산 AND, OR, NOT, XOR

만을 사용 주로 사용▷ 예 : 4 가지의 기본 논리 마이크로연산을 수행하는 회로

▷ n- 비트 논리연산회로는 위의 회로를 n 개 병렬로 연결하고 , 동일한 멀티플렉서 선택신호를 인가하도록 함 .

논리 마이크로연산 논리 마이크로연산 (4)(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)(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)(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)(1)

▶ 시프트 마이크로연산▷ 데이터의 직렬 전송을 위해 사용▷ 레지스터 내용을 왼쪽 또는 오른쪽으로 시프트하며 , 시프트 방향의

첫번째 플립플롭은 직렬 입력을 통해 새로운 정보를 입력 오른쪽 시프트 연산

왼쪽 시프트 연산

▷ 3 종류의 시프트 연산 지원 – 직렬 입력으로 입력되는 정보의 종류에 따라 분류

논리 시프트 (Logical shift) 순환 시프트 (Circular shift) 산술 시프트 (Arithmetic shift)

시프트 마이크로연산 시프트 마이크로연산 (2)(2)

▶ 논리 시프트 (Logical Shift)▷ 논리 시프트는 직렬 입력으로 0 을 전송▷ 논리 시프트에 의해 전송되는 비트는 모두 0 이 된다 (Zero

inserted)

▷ RTL 에서 논리 시프트 연산 표현 shl for a logical shift left shr for a logical shift right 예 :

– R2 ← shr R2– R3 ← shl R3

0 0

시프트 마이크로연산 시프트 마이크로연산 (3)(3)

▶ 순환 시프트 (Circular Shift)▷ 시프트 레지스터의 직렬 출력을 직렬 입력에 연결 원래 저장되어

있던 정보의 손실없이 비트들을 순환

▷ RTL 에서 순환 시프트 연산 표현 cil for a circular shift left cir for a circular shift right 예 :

– R2 ← cir R2– R3 ← cil R3

시프트 마이크로연산 시프트 마이크로연산 (4)(4)

▶ 산술 시프트 (Arithmetic Shift)▷ 부호가 있는 이진수를 시프트하는 것

왼쪽 산술 시프트 이진수에 2 를 곱한 것 오른쪽 산술 시프트 이진수에 2 를 나눈 것

▷ 이진수의 맨 왼쪽 비트인 부호 비트는 시프트되지 않으므로 변화가 없다

▷ RTL 에서 산술 시프트 연산 표현 ashl for a arithmetic shift left ashr for a arithmetic shift right

시프트 마이크로연산 시프트 마이크로연산 (5)(5)

▶ 산술 시프트 (Arithmetic Shift)▷ 부호 역전 현상 : Overflow F/F Vs=1

왼쪽 산술 시프트 연산에서는 오버플로우를 검사하여야 한다

시프트 마이크로연산 시프트 마이크로연산 (6)(6)

▶ 시프트 마이크로연산의 하드웨어 구현

산술 논리 시프트 장치산술 논리 시프트 장치

▶ 산술논리장치 (ALU)