Mano의 컴퓨터시스템구조

[mano의 컴퓨터시스템 구조] 4장 레지스터 전송과 마이크로 연산

studyingalone 2024. 11. 21. 14:30

mano의 컴퓨터시스템 구조: 4장 레지스터 전송과 마이크로 연산

 

4.1 레지스터 전송 언어

마이크로연산: 레지스터에 저장된 데이터를 가지고 실행되는 동작

: 시프트(Shift), 카운트(Count), 클리어(Clear), 로드(Load) 등


4.2 레지스터 전송(Register Transfer)

기본 용어

  • 메모리 주소 레지스터(MAR, memory Address Register)
  • 프로그램 카운터(PC, Program Counter)
  • 명령어 레지스터(IR, Instruction Register)
  • 프로세스 레지스터(R1, Processor Register)

레지스터 사이 정보 전송

  • R2 R1    다음과 같이 치환(Replacement) 연산자를 이용
  • 화살표(→): 정보 전송 및 방향.
  • 쉼표(,): 동시에 실행되는 두 개 이상의 작업을 구분
  • T: R2 ← R1, R1 ← R2     // 두 레지스터 내용이 동시에 교체되는 것을 의미

R1에서 R2로 전송을 설명하는 블럭도

  • R1 레지스터의 n 출력이 R2 레지스터의 n 입력으로 연결되어 있음 (n은 레지스터의 비트수)
  • 제어 변수 P는 클록의 상승 에지에서 활성화(t 시점).
  • 다음 클록의 상승 에지(t+1 시점)에 데이터가 R2로 병렬로 로드.
  • 클록 에지에서 전송이 이루어지며, 제어 조건(P)이 t 시점에 활성화되더라도 실제 전송은 t+1 시점

4.3 버스와 메모리 전송(Bus and Memory Transfers)

버스(bus): 한 번에 하나의 전송만이 이뤄지도록 제어 신호를 이용하여 전송에 사용될 레지스터 선택

 

메모리 전송

  • 읽기(read): 메모리 워드로부터 외부 세계로의 정보 전송
  • 쓰기(write): 메모리로 새로운 정보를 저장하는 것
  • 메모리 워드는 M으로 표기
  • 주소: M[ 주소는 이 안에 표시 ]

 

  • 메모리의 주소를 주소 레지스터(AR, Address Register)로부터 받고 데이터를 데이터 레지스터(DR, Data Register) 에 전송하는 읽기 동작
    • Read: DR ← M[ AR ]
  • 레지스터 R1에 있는 데이터를 AR에서 지정된 메모리 주소로 전송하는 쓰기 동작
    • Write: M[ AR ] ← R1

4.4 산술 마이크로 연산

레지스터에 저장된 데이터에 대해 수행되는 기본적인 연산

 

  1. 레지스터 전송 마이크로 연산: 레지스터 사이에서 이진 정보를 전송
  2. 산술 마이크로 연산: 레지스터에 저장된 수치 데이터에 대해 산술 연산
  3. 논리 마이크로 연산: 레지스터에 저장된 비수치 데이터에 대해 비트 조작 연산 수행
  4. 시프트 마이크로 연산: 레지스터에 저장된 데이터에 대해 시프트 연산 수행
기호 표시 의미
R3 ← R1 + R2  R1 + R2의 값이 R3로 전송 
R3 ← R1 - R2  R1 - R2의 값이 R3로 전송
R2 R2' R2의 보수(1의 보수)를 R2에 전송
R2  R2' + 1 R2의 보수 + 1(2의 보수)을 R2에 전송
R3 ← R1 + R2 ' + 1 R1 + R2의 보수(2의 보수)를 R3에 전송
R1 ← R1 + 1 R1 + 1(상승 카운트)
R1 ← R1 - 1 R1 - 1(하강 카운트)

R2'은 R2의 보수를 의미

 


4.5 논리 마이크로 연산

  • OR연산: ∨ 로 표기
  • AND연산: ∧ 로 표기 
  • 1의 보수: 문자 위의 바(bar, ㅡ) 로 표
  • XOR(exclusive-OR): ⊕로 표기(A와 B중 하나만 참일 경우 -> 둘이 다르면 1, 같으면 0)

 

selective - set 

레지스터 B의 1에 대응되는 부분에 레지스터 A의 비트를 1로 세트시키고, 0에 대응되는 부분의 레지스터 A의 비트에는 영향을 주지 않는 연산

 

selective - 보수

B의 1에 대응되는 부분의 A의 비트를 보수로 만드는 작용

 

selective - clear

B의 1에 대응되는 A의 비트만 클리어시키는 연산

 

mask

B의 0에 대응되는 A의 비트만 클리어되는 연산

 

insert

비트묶음 속에 새로운 값을 삽입하는 연산, 원하는 위치 비트를 mask 한 후 원하는 값에 OR

원하는 위치 비트를 mask 

원하는 값에 OR

 

clear(= XOR)

A와 B를 비교하여 두 개의 워드가 일치하면 A를 0으로 세트하는 연산

 


4.6 시프트 마이크로 연산

  • 데이터의 직렬 전송을 위해 사용
  • 산술이나 논리 연산 및 다른 데이터 처리 동작과 연계하여 사용 가능

논리 시프트(Logical Shift) 

  • 직렬 입력으로 0이 전송되는 것
  • 기호: shl, shr
  • R1 ← shl R1:  R1을 한 비트 왼쪽으로 시프트 
  • R2 shrR2:  R2를 한비트 오른쪽으로 시프트

 

순환시프트(Circular shift) 

  • 시프트 레지스터의 직렬 출력을 직렬 입역에 연결하여 원래 저장된 정보의 손실 없이 비트들을 순환시키는 연산
  • 기호: cil, cir 

산술시프트(Arithmetic shift)

  • 부호가 있는 이진수를 시프트하는 것
  • 왼쪽 산술 시프트는 이진수에 2를 곱한 것과 같다.
  • 오른쪽 산술 시프트는 2로 나눈 것과 같다