본문 바로가기
컴퓨터구조

[컴퓨터구조] 타이밍 및 제어(Timing and Control), 명령주기(Instruction Cycles), 메모리-참조 명령어(Memory-reference Instructions),컴퓨터 설계(complete computer)

by 유노brain 2023. 10. 11.
반응형

Timing and Control

Control unit of basic computer

Control unit

위의 그림은 기본 컴퓨터(basic computer)의 control unit이 된다.

2개의 디코더와 1개의 SC(Sequence Counter), 하나의 control logic gates를 가지게 된다.

IR(Instruction register)의 경우 세 부분으로 나뉘는데 이중 Opcode(Operation code) 부분이 decoder와 연결이 된다.

8개(000~111)의 출력부분이 D0 ~ D7까지 지정이 된다.

명령어의 15번째 비트 I의 경우 지정된 플립플롭으로 전송된다.

4bit SC(Sequence Counter)의 경우 디코더를 통해 T0~T15으로 출력이 된다.

 

example of control timing signals

 Timing signals

[위의 그림은 D3T4일때 Clear되는 예시 timing signals]

위의 control timing signals를 통해 분석을 해보자

먼저 T0이 되기 전 SC(sequence counter)을 CLR를 통해 0으로  만들었다.

클럭에 따라 T0, T1, T2, T3, T4흐름에 따라 SC는 증가하게 된다.

D3=T4=1일 때 CLR=1로하여 SC를 0으로 set 한다.

(만약 SC를 clear 하지 않는다면 timing signals는 계속해서 T5, T6, ~ T15간 다음 T0으로 다시 돌아올 것이다.)

 

T0이 활성화되면 PC의 정보가 AR로 전송된다.(실제로는 클럭이 끝나기전까지는 전송이 안된다)

이 시간 동안 PC는 bus에서 S2S1S0 = 010으로 배치되고 AR의 LD가 활성화된다

반응형

Instruction Cycles

각 instruction cycle은 다음과 같은 subcycle로 나누어진다.

1. fetch an instruction from memory

2. decode the instruction

3. read the effective address from memory in indirect addressing mode

4. execute the instruction

Fetch and Decode

T0 : AR ← PC

T1 : IR ← M[AR], PC ← PC +1

T2 : D0...D7 ← decode IR(12-14), AR ← IR(0-11), I ← R(15)

Flowchart for instruction cycle

아직 interrupt를 배우지 않았으므로 interrupt를 적용하지 않는 instruction cycle의 flowchart이다.

Flowchart for instruction cycle

위의 그림을 외우는 것은 어렵지 않다.

Instruction code를 잘 분석하면 위의 그림 구조를 쉽게 이해할 수 있다.

 

먼저 D7이 나오기 전까지는 기본적으로 fetch와 decode 부분이므로 암기를 하면 된다.

fetch시(T0) SC ←0에서 PC의 정보가 AR로 전송되고(AR ←PC) 

T1: 다음 클락때 메모리 안 주소에서 명령어를 가져온다(IR ←M[AR]) 그다음 PC를 하나 증가시킨다.(PC ←PC + 1)

T2: 이제 IR(Instruction Register)에서 주어진 16비트를 잘 분석해야 한다.

위의 그림을 참조하면 된다.

먼저 D7 = opcode(111)인지를 판단을 한다.

만약 Decode 부분이 D7이라면 명령어는 Register-reference instruction 또는 input-output instruction 중 하나가 된다.

반대로 D7이 아니라면 그냥 memory-reference instruction이 된다.

 

먼저 D7이라고 할 때 I = IR(15)의 값이 1이라면 input-output instruction, 반대로 값이 0이라면 Register-reference instruction이 된다.

 

D7이 아니라면 I=IR(15)의 값이 0이면 direct address(직접 주소)가 되고, 값이 1이라면 indirect address(간접 주소)가 된다.

★아래 포스팅에서 Demonstration of direct and indirect address 부분을 확인하자 ★

https://youknow301.tistory.com/116 

 

[컴퓨터구조] 기본 컴퓨터 조직 및 디자인(Basic Computer Organization and Design), 컴퓨터 레지스터(Comput

Instruction Codes-컴퓨터 구조는 그 컴퓨터가 사용하는 instrcution set, 내부 registers, timing and control structure으로 정의된다. - Instruction code는 컴퓨터로 하여금 특정 operation을 하라고 지시하는 bit group이다I

youknow301.tistory.com

 

이제 각각 Memory-reference Instruction, Register-reference Instruction, Input-ouput Instruction이 어떻게 되어있는지 확인해 보자

 

Register-reference instructions

먼저 I = 0, opcode = 111 인 Register-reference instruction(0111xxx...)을 보자

( D7I'T3 = r (common to all register-reference instruction)

( IR(i) =  Bi [bit in IR (0-11) that specifies the operation]

 

Memory-Reference Instructions

위는 Memory-Reference Instructions이다. 
각각 AND, ADD, LDA, STA, BUN, BSA, ISZ가 된다.

AND : AND memory를 AC에 전송

ADD : ADD memory를 AC에 전송

LDA : Load memory를 AC에 전송

STA : AC의 내용물 저장

BUN : 저장된 분기(주소)로 이동

BSA : 분기(주소)를 저장하고 리턴

ISA : 증가시키고 만약 0이 되면 skip한다.

 

BSA instruction 예시

(a)는 BSA 명령어가 실행되기 이전이고 (b)가 BSA명령어 실행된 후이다.

먼저 BSA를 보면 D5T4 : M[AR]←PC , AR ←AR+1, D5T5 : PC ← AR 이 진행이 된다.

(fetch 부분에서 PC=20을 진행후 PC=21이 되었다.)

즉 M[135] ←21, AR ←135 + 1, PC ←136이 된다.

 

Intput-Output and Interrupt

마지막 Input-Output instructions를 볼 차례이다.

Interrupt(인터럽트) :  CPU가 현재 실행하고 있는 프로그램을 중단하고 다른 프로그램을 실행하는 메커니즘이다.

다음은 interrupt cycle의 flowchart이다.

먼저 R = 1이 되면 interrupt cycle로 들어가게 된다.

M[0] 에 PC를 전송한 후 PC에 1을 전송한다. 

그 후 IEN ← 0, R ← 0을 진행 후 다음 단계를 진행한다.

 

R = 0 이 되면 fetch와 decode를 진행하며 그 다음 명령어가 실행할 때 IEN을 확인한다.

이때 IEN = 1, FGI=0이거나 FGO = 1인 경우 다음번 할 때 interrupt cycle이 된다는 것을 알 수 있다.

interrupt cycle 과정

interrupt 과정을 보자 

먼저 리턴 주소를 0에 저장하자

M[0] ← PC 즉 메모리 0번에 256이 나타나게된다.

그다음 PC ← 1로 이동후 1120번지로 가서 I/O Program을 시작하게 된다.

 

Complete Computer 

이제 완성된 컴퓨터를 묘사해보자

최종 완성된 컴퓨터 모습이다.

instruction cycle을 진행하기 전 R을 통해 R의 값에 따라 interrupt cycle로 가야할지 instruction cycle로 가야할지 선택을 해야한다.

 

각 instruction을 정리하면 다음과 같다.

반응형

댓글