Download presentation
Presentation is loading. Please wait.
1
기본 컴퓨터의 구조와 설계 Lecture #5
2
강의 목차 Instruction Codes Computer Registers Computer Instructions
Timing and Control Instruction Cycle Memory Reference Instructions Input-Output and Interrupt Complete Computer Description Design of Basic Computer Design of Accumulator Logic
3
강의 개요 각각의 프로세서들은 서로 다른 구성요소와 내부 구조를 가진다(different registers, buses, microoperations, machine instructions, etc). 현재의 프로세서는 매우 복잡한 장치임. UVLSI(Ultra-Very Large Scale Integrated) 장치 내부적으로 다음과 같은 구성 요소를 포함: 많은 레지스터 고정소수점 및 부동소숫점 연산을 위해 여러 개의 산술 장치 실행 속도를 위한 파이프라인 실행 구조 등 일반적인 프로세서의 동작을 이해하기 위해서는 보다 간단한 프로세서 모델을 활용 기본 컴퓨터(Basic Computer) 25년 전 실제 프로세서와 유사 M. Morris Mano가 제시 프로세서 구조 및 제어 구조, 프로세서의 RTL 모델 등을 설명
4
기본 컴퓨터 기본적으로 두 개의 구성 요소, 프로세서와 메모리로 구성됨 메모리는 4096 워드를 가짐
12-비트 주소선 사용(4096 = 212) so it takes 12 bits to select a word in memory 메모리의 각 워드는 16-비트 길이를 가짐. CPU RAM 4095 15
5
명령어 코드 (1) 컴퓨터 프로그램(Computer Program)
기계 명령어들의 순서열(sequence) 기계 명령어(Machine Instruction or Instruction) 컴퓨터가 하나의 특정 연산(operation)을 수행하도록 지시하는 비트들의 집합(비트열) 지시된 특정 연산은 일련의 연속된 마이크로 연산들로 수행됨 명령어 실행 (in “stored program” concept) 프로그램의 명령어와 필요한 데이터는 처리되기 전에 메모리에 저장된다. CPU는 메모리로부터 다음에 실행할 명령어를 읽어 들여 Instruction Register(IR)에 저장한다. CPU 내의 제어장치는 IR 레지스터에 저장된 명령어를 해석하여 실행을 위한 마이크로 연산의 시퀀스로 변환하고 AUL에 의해 실행되도록 제어한다.
6
명령어 코드 (2) 명령어 형식(Instruction Format) 명령어는 크게 두 부분으로 이루어짐
연산 코드(opcode:Operation Code) 명령어에 의해 수행되는 연산(operation)을 지정 산술연산, 논리연산, 시프트 연산 등을 명시 Macro Operation – 일련의 마이크로 연산들의 집합으로 수행됨. 주소(address) 연산에 사용될 데이터(피연산자, operand)를 저장하고 있는 메모리 위치 또는 레지스터를 지정 프로세서마다 지원되는 주소 형식이 각기 다르며, 명령어에 ‘주소 모드’ 비트를 두어 주소 형식을 식별
7
명령어 코드 (3) 기본 컴퓨터의 저장 프로그램 구조
기본 컴퓨터는 단 한 개의 프로세서 레지스터를 가지며, 모든 연산은 이 레지스터에 대해 수행되는 구조를 가짐. 명령어에서 하나의 피연산자(operand)만 지정 누산기(AC:Acummulator) 레지스터 ALU는 AC 레지스터와 명령어 주소에서 지정된 메모리 장소에 저장된 데이터를 가져와 연산을 수행하고 연산 결과를 다시 AC 레지스터에 저장한다
8
명령어 코드 (4) 기본 컴퓨터의 명령어 형식 메모리 워드의 길이가 16비트이므로 명령어의 길이도 16비트
메모리가 4096(= 212) 워드를 지원하므로 12비트의 메모리 주소가 필요 명령어의 bit 15은 주소 모드(addressing mode)를 지정 0: direct addressing, 1: indirect addressing 명령어의 연산 코드(opcode)는 3비트 Opcode Address Instruction Format 15 14 12 I 11 Addressing mode
9
명령어 코드 (5) 주소 모드(Addressing Mode) + 명령어의 주소 필드가 의미하는 내용을 지정
직접 주소(Direct address) – 피연산자의 내용이 담겨있는 메모리 주소를 나타냄 간접 주소(Indirect address) – 피연산자의 내용이 있는 메모리 주소를 저장하는 장소의 주소를 나타냄 ADD 457 22 Operand 1 300 35 1350 + AC Direct addressing Indirect addressing 유효 주소(Effective Address) 명령어에 의해 지정된 연산을 수행할 때에 변경없이 직접적으로 사용되는 주소 예로, 457와 1350 이 유효 주소임.
10
컴퓨터 레지스터 (1) 프로세서는 실행할 명령어, 주소 그리고 데이터 등을 저장하기 위해 많은 레지스터를 가진다
프로세서 레지스터는 사용 목적에 따라 세 부류로 나눌 수 있다. 제어 레지스터(Control Register) – 명령어 실행을 제어하기 위해 사용 범용 레지스터(General Purpose Register) – 연산 실행에 필요한 데이터나 연산 결과를 저장하기 위해 사용 입출력 레지스터(I/O Register) – 주변 장치와의 입출력할 데이터를 저장하는데 사용 제어 레지스터 Program Counter (PC) 프로세서가 다음에 실행할 명령어가 있는 메모리 주소를 저장 프로그램의 실행 순서를 제어 기본 컴퓨터에서는 12 비트 크기를 가짐. Instruction Register(IR) 프로세서가 실행하기 위해 메모리로부터 읽어온 명령어를 저장 제어장치는 IR에 저장된 명령어를 해석하여 제호 신호를 생성
11
컴퓨터 레지스터 (2) 제어 레지스터 (계속) 범용 레지스터 Memory Address Register(MAR or AR)
프로세서에서 메모리를 접근할 때에 접근하려는 메모리 장소의 주소를 저장 버스에 연결되어 메모리 장치로 주소 신호가 전송됨. Memory Data Register(MDR or DR) 메모리에 전송할 데이터 또는 메모리에서 읽어온 데이터를 저장 저장된 내용이 ALU에 의해 연산에 사용될 수 있다 범용 레지스터 Accumulator(AC) 연산 수행에 사용될 데이터나 연산 결과를 저장 모든 명령어에서 함축적으로 참조함 예: load AC with the contents of a specific memory location; store the contents of AC into a specified memory location Temporary Register(TR) 연산 도중의 임시 데이터를 저장
12
컴퓨터 레지스터 (3) 입출력 레지스터 기본 컴퓨터는 매우 단순한 I/O 연산 모델을 사용
입력 장치는 8-bit 문자 데이터를 프로세서에 전송할 수 있다. 프로세서는 8-bit 문자 데이터를 출력 장치에 전송할 수 있다. Input Register (INPR) 입력 장치로부터 전송된 8-bit 문자 데이터를 저장 Output Register (OUTR) 출력 장치로 전송할 8-bit 문자 데이터를 저장
13
컴퓨터 레지스터 (4) Registers in the Basic Computer List of BC Registers PC
11 PC Memory 11 4096 x 16 AR 15 IR CPU 15 15 TR DR 7 7 15 OUTR INPR AC List of BC Registers DR Data Register Holds memory operand AR Address Register Holds address for memory AC Accumulator Processor register IR Instruction Register Holds instruction code PC Program Counter Holds address of instruction TR Temporary Register Holds temporary data INPR Input Register Holds input character OUTR Output Register Holds output character
14
공통 버스 시스템 (1) 프로세서의 레지스터들과 메모리는 상호간의 데이터 교환을 위해 버스를 통해 연결된다.
버스 시스템은 레지스터와 메모리 사이의 완전한 연결을 위해 단순화된 회로를 제공한다 경제적으로 비용 절감
15
공통 버스 시스템 (2) AR PC DR AC INPR IR TR OUTR S2 S1 Bus S0 Memory unit 7
4096 x 16 Address Write Read AR 1 LD INR CLR PC 2 LD INR CLR DR 3 LD INR CLR E ALU AC 4 LD INR CLR INPR IR 5 LD TR 6 LD INR CLR OUTR Clock LD 16-bit common bus
16
공통 버스 시스템 (3) 16-bit Common Bus AR PC DR AC ALU E IR TR OUTR INPR L I
LD INPR Memory 4096 x 16 Address Read Write 16-bit Common Bus 7 1 2 3 4 5 6 S0 S1 S2
17
공통 버스 시스템 (4) 모든 레지스터 출력과 메모리의 데이터 출력이 공통 버스에 직접 연결
3개의 제어 신호 S2, S1, S0은 버스가 입력으로 선택할 레지스터를 제어 모든 레지스터 입력과 메모리의 데이터 입력이 공통 버스에 직접 연결 레지스터의 load(LD) 신호와 메모리의 write 신호를 활성화하여 버스의 데이터를 읽어드리도록 제어 12-bit 레지스터 AR & PC는 버스로 출력될 때에 버스의 최상위 4비트는 0으로 전송된다. 8-bit 레지스터 OUTR는 버스로부터 데이터를 입력될 때에 버스의 하위 8비트 데이터가 입력된다. S2 S1 S0 Register x AR PC DR AC IR TR Memory
18
공통 버스 시스템 (5) 메모리 주소는 AR 레지스터에 직접 연결 ALU의 입력 및 출력
메모리 접근 주소를 위한 별도의 레지스터를 사용함으로써 별도의 버스를 사용할 필요가 없게 함. ALU의 입력 및 출력 ALU 입력 AC 레지스터 출력 DR 레지스터 출력 INPR 레지스터 출력 ALU 출력 – AC 레지스터 입력으로 연결 기본 컴퓨터에서는 레지스터 내용이 버스에 출력되는 것과 동일한 클럭에 산술 논리 회로의 연산이 수행되고, 이 클력을 마지막 부분에서 버스의 데이터가 목적 레지스터로 전송되거나, 가산 논리 회로의 출력이 AC 레지스터에 전송된다. 예: DR ← AR, AR ← DR
19
기본 컴퓨터 명령어 (1) 기본 컴퓨터는 세가지 명령어 코드 형식을 지원
3-bit 연산 코드와 주소 모드 bit에 의해 명령어 코드 형식 식별 Memory-Reference Instructions (OP-code = 000 ~ 110) 12 11 I Opcode Address Register-Reference Instructions (OP-code = 111, I = 0) 15 12 11 Register operation Input-Output Instructions (OP-code =111, I = 1) 15 12 11 I/O operation
20
기본 컴퓨터 명령어 (2) 기본 컴퓨터 명령어 : 25개 명령어 Hex Code
Symbol I = I = Description AND xxx 8xxx AND memory word to AC ADD xxx 9xxx Add memory word to AC LDA xxx Axxx Load AC from memory STA xxx Bxxx Store content of AC into memory BUN xxx Cxxx Branch unconditionally BSA xxx Dxxx Branch and save return address ISZ xxx Exxx Increment and skip if zero CLA Clear AC CLE Clear E CMA Complement AC CME Complement E CIR Circulate right AC and E CIL Circulate left AC and E INC Increment AC SPA Skip next instr. if AC is positive SNA Skip next instr. if AC is negative SZA Skip next instr. if AC is zero SZE Skip next instr. if E is zero HLT Halt computer INP F Input character to AC OUT F Output character from AC SKI F Skip on input flag SKO F Skip on output flag ION F Interrupt on IOF F Interrupt off
21
기본 컴퓨터 명령어 (3) 명령어 집합의 완전성(Instruction Set Completeness)
하나의 컴퓨터(프로세서)는 사용자가 생각할 수 있는 모든 데이터 처리 작업을 수행할 수 있도록 충분한 명령어 지원하여야 한다. 완전 명령어 집합에서의 명령어 종류(Instruction Types) 연산 명령어(Functional Instructions) Arithmetic, logic, and shift instructions ADD, CMA, INC, CIR, CIL, AND, CLA 전송 명령어(Transfer Instructions) Data transfers between the main memory and the processor registers LDA, STA 제어 명령어(Control Instructions) Program sequencing and control BUN, BSA, ISZ 입출력 명령어(Input/Output Instructions) Input and output INP, OUT
22
타이밍과 제어 (1) 프로세서의 제어장치(CU)는 명령어을 해석하여 명령어 실행에서 요구되는 마이크로 연산을 위한 제어 신호를 생성한다. 제어장치는 다음의 두 가지 형태로 구현 가능 하드와이어 제어 방식(Hardwired Control) 제어장치가 제어신호를 생성하는 조합 회로와 순차회로로 구성된다. 실행 속도면에서 유리하나 변경이 어려운 단점이 있음 마이크로 프로그램 제어 방식(Microprogrammed Control) 프로세서의 제어 메모리에 필요한 제어 신호를 활성화시키는 마이크로 프로그램을 저장하고 마이크로 프로그램을 수행하여 제어하는 방식 마이크로 프로그램 갱신을 통해 변경이 가능 기본 컴퓨터는 하드와이어 방식의 제어 장치를 갖는다. 두 개의 디코더, 하나의 순차 카운터 그리고 여러 개의 제어 논리 게이트로 구성
23
타이밍과 제어 (2) 기본 컴퓨터의 제어 장치 Instruction register (IR) 15 14 13 12 11 - 0
11 - 0 3 x 8 decoder I D 4 x 16 4-bit sequence counter (SC) Increment (INR) Clear (CLR) Clock Other inputs Control signals T 7 Combinational logic
24
타이밍과 제어 (3) 타이밍 신호 4-bit 순차 카운터와 416 디코더에 의해 T0 ~T15 생성
순차 카운터(SC)는 1-증가 또는 클리어 가능 Example: T0, T1, T2, T3, T4, T0, T1, . . . 가정: At time T4, SC is cleared to 0 if decoder output D3 is active. D3T4: SC 0
25
타이밍과 제어 (4) 타이밍 신호 (계속) 메모리 읽기 및 쓰기 동작의 타이밍 신호
실제 메모리 접근 사이클은 프로세서의 클럭 사이클보다 더 길기 때문에 프로세서는 메모리 워드가 유효해질 때까지 몇 사이클을 기리고 있어야 한다. 프로세서의 동작을 이해하려면 클럭 변이와 타이밍 신호의 시간 관계를 잘 알아야 함 예: T0: PC ← AR 타이밍 신호 T0가 1일 때에 PC의 값을 AR로 전송 T0=1인 한 클럭 동안 S2S1S0=010으로 제어하여 PC 내용이 버스로 전송되고, AR의 LD(로드) 신호를 활성화하면, 다음 클럭의 상승 변이가 일어날 때에 AR에 버스의 내용이 로딩된다.
26
명령어 사이클 (1) 기본 컴퓨터에서는 명령어는 다음 사이클로 실행된다:
명령어를 메모리에서 가져온다(Instruction Fetching) 명령어를 디코딩한다(Instruction Decoding) 건접 주소 방식의 명령어일 경우에 메모리로부터 유효 주소를 읽어온다(Effective Address Reading) 명령어를 실행한다(Instruction Execution) 하나의 명령어 실행이 끝나면 다시 첫 번째 단계로 돌아가 다음 명령어를 실행하며, 이러한 동작은 ‘HALT’ 명령어를 만날 때까지 반복한다 주의 : 프로세서는 각각 서로 다른 고유의 명령어 사이클을 갖는다
27
명령어 사이클 (2) Instruction Fetching : T0, T1 T0 = 1 T0: AR ← PC
Place the content of PC onto the bus by making the bus selection inputs S2S1S0=010 Transfer the content of the bus to AR by enabling the LD input of AR T1 = 1 T1: IR ← M[AR], PC ← PC + 1 Enable the read input memory Place the content of memory onto the bus by making S2S1S0= 111 Transfer the content of the bus to IR by enable the LD input of IR Increment PC by enabling the INR input of PC T0: AR PC (S0S1S2=010, T0=1) T1: IR M [AR], PC PC (S0S1S2=111, T1=1) 컴퓨터시스템구조
28
명령어 사이클 (3) Instruction Fetching (계속) 컴퓨터시스템구조
29
명령어 사이클 (4) Instruction Decoding : T2
T2 = 1 T2: D0, , D7 ← Decode IR(12-14), AR ← IR(0-11), I ←IR(15) IR으 연산 코드 부분이 디코딩되어 디코딩 신호가 생성되고, 주소 모드 비트가 I에 전송되며, 주소 부분이 AR로 전송된다. T2: D0, , D7 Decode IR(12-14), AR IR(0-11), I IR(15) 컴퓨터시스템구조
30
Read effective address
명령어 사이클 (5) Instruction Execution : T3 ,T4 ,T5 ,T6 타이밍 신호 T3가 활성화되면 명령어 종류를 결정: D7=1 Register Op.(I=0) D7I’T3: 레지스터 참조 명령어 실행 I/O Op (I=1) D7IT3: 입출력 명령어 실행 D7=0 Memory Ref. Op. Indirect(I=1) D7’IT3: AR ← M[AR] Direct(I=0) D7’I’T3: nothing in T3 레지스터 참조 명령어 및 입출력 명령어는 T3에 실행 메모리 참조 명령어는 T3에 유효주소를 가지고 오며, 명령어에 따라 T4~T6에 실행 IR[12- 14] =111 Read effective address 컴퓨터시스템구조
31
명령어 사이클 (6) 명령어 사이클 흐름도(초기 구성) D'7IT3: AR ← M[AR] D'7I'T3: Nothing
= 0 (direct) Start SC 0 AR PC T0 IR M[AR], PC + 1 T1 IR(0-11), I IR(15) Decode Opcode in IR(12-14), T2 D7 = 0 (Memory-reference) (Register or I/O) = 1 Execute register-reference instruction SC input-output M[AR] Nothing = 0 (register) (I/O) = 1 (indirect) = 1 T3 memory-reference T4 D'7IT3: AR ← M[AR] D'7I'T3: Nothing D7I'T3: Execute a register-reference instr. D7IT3: Execute an input-output instr. 컴퓨터시스템구조
32
명령어 사이클 (7) 레지스터 참조 명령어 실행 레지스터 참조 명령어는 D7 = 1, I = 0로 구별됨
명령어 종류는 IR 레지스터의 b0 ~ b11에 의해 결정 타이밍 신호 T3에서 실행 r = D7 IT3 => Register Reference Instruction Bi = IR(i) , i=0,1,2,...,11 r: SC 0 CLA rB11: AC 0 CLE rB10: E 0 CMA rB9: AC AC’ CME rB8: E E’ CIR rB7: AC shr AC, AC(15) E, E AC(0) CIL rB6: AC shl AC, AC(0) E, E AC(15) INC rB5: AC AC + 1 SPA rB4: if (AC(15) = 0) then (PC PC+1) SNA rB3: if (AC(15) = 1) then (PC PC+1) SZA rB2: if (AC = 0) then (PC PC+1) SZE rB1: if (E = 0) then (PC PC+1) HLT rB0: S 0 (S is a start-stop flip-flop) 컴퓨터시스템구조
33
명령어 사이클 (8) 메모리 참조 명령어 실행 메모리 참조 명령어 종류 메모리 참조 명령어는 Di(i=0~6)에 의해 구별됨
피연산자에 대한 유효 주소는 T2(I=0일 때) 또는 T3(I=1일 때) 시간에 AR로 전송 타이밍 신호 T4에서부터 실행 시작 메모리 참조 명령어 종류 Operation Decoder Symbol Symbolic Description AND D0 AC AC M[AR] ADD D1 AC AC + M[AR], E Cout LDA D2 AC M[AR] STA D3 M[AR] AC BUN D4 PC AR BSA D5 M[AR] PC, PC AR + 1 ISZ D6 M[AR] M[AR] + 1, if M[AR] + 1 = 0 then PC PC+1 컴퓨터시스템구조
34
명령어 사이클 (9) 메모리 참조 명령어별 실행 타이밍 AND to AC D0T4: DR M[AR] Read operand
D0T5: AC AC DR, SC 0 AND with AC ADD to AC D1T4: DR M[AR] Read operand D1T5: AC AC + DR, E Cout, SC 0 Add to AC and store carry in E LDA: Load to AC D2T4: DR M[AR] D2T5: AC DR, SC 0 STA: Store AC D3T4: M[AR] AC, SC 0 BUN: Branch Unconditionally D4T4: PC AR, SC 0 BSA: Branch and Save Return Address M[AR] PC, PC AR + 1 Memory, PC after execution 21 BSA 135 Next instruction Subroutine 20 PC = 21 AR = 135 136 1 BUN Memory, PC, AR at time T4 PC = 136 Memory 컴퓨터시스템구조
35
명령어 사이클 (10) 메모리 참조 명령어별 실행 타이밍 (계속) BSA:
D5T4: M[AR] PC, AR AR + 1 D5T5: PC AR, SC 0 ISZ: Increment and Skip-if-Zero D6T4: DR M[AR] D6T5: DR DR + 1 D6T4: M[AR] DR, if (DR = 0) then (PC PC + 1), SC 0 컴퓨터시스템구조
36
명령어 사이클 (11) 메모리 참조 명령어의 제어 흐름도 Memory-reference instruction
DR M[AR] M[AR] AC SC 0 AND ADD LDA STA AC AC DR AC AC + DR E Cout AC DR D T 4 1 2 3 5 PC AR M[AR] PC AR AR + 1 BUN BSA ISZ 6 DR DR + 1 M[AR] DR If (DR = 0) then (PC PC + 1) 메모리 참조 명령어의 제어 흐름도 컴퓨터시스템구조
37
명령어 사이클 (12) 입출력 명령어 및 인터럽트 키보드와 프린터를 가진 단말장치를 입출력 장치로 가정
단말장치는 직렬 전송방식으로 정보를 송수신한다 키보드에서 입력된 정보는 직렬 전송방식으로 INPR 레지스터로 시프트된다. OUTR 레지스터의 출력 정보는 프린터로 직렬 전송방식으로 시프트된다. INPR & OUTR은 단말장치와는 직렬로, AC 레지스터와는 병렬로 데이터를 전송 입출력 장치와 컴퓨터 사이의 타이밍 차이를 동기화하기 위해 플래그가 필요 컴퓨터시스템구조
38
명령어 사이클 (13) 입출력 명령어 및 인터럽트 입출력 구성 INPR Input register - 8 bits
Input-output terminal Serial communication interface Computer registers and flip-flops Printer Keyboard Receiver Transmitter FGO OUTR AC INPR FGI Serial Communications Path Parallel Communications Path INPR Input register - 8 bits OUTR Output register - 8 bits FGI Input flag - 1 bit FGO Output flag - 1 bit IEN Interrupt enable - 1 bit 컴퓨터시스템구조
39
명령어 사이클 (14) -- CPU -- -- I/O Device --
/* Input */ /* Initially FGI = 0 */ loop: If FGI = 0 goto loop AC INPR, FGI 0 /* Output */ /* Initially FGO = 1 */ loop: If FGO = 0 goto loop OUTR AC, FGO 0 loop: If FGI = 1 goto loop INPR new data, FGI 1 loop: If FGO = 1 goto loop consume OUTR, FGO 1 FGO=1 FGI=0 Start Output Start Input FGI 0 AC Data yes yes FGO=0 FGI=0 no no OUTR AC AC INPR FGO 0 yes More Character yes More Character no no END END 컴퓨터시스템구조
40
명령어 사이클 (15) 입출력 명령어 및 인터럽트 입출력 명령어 D7IT3 = p IR(i) = Bi, i = 6, …, 11
AC 레지스터로 정보를 전송하고, 플래그 비트를 검사하며, 인터럽트를 제어하는 기능을 수행 D7IT3 = p IR(i) = Bi, i = 6, …, 11 p: SC Clear SC INP pB11: AC(0-7) INPR, FGI 0 Input char. to AC OUT pB10: OUTR AC(0-7), FGO 0 Output char. from AC SKI pB9: if(FGI = 1) then (PC PC + 1) Skip on input flag SKO pB8: if(FGO = 1) then (PC PC + 1) Skip on output flag ION pB7: IEN 1 Interrupt enable on IOF pB6: IEN 0 Interrupt enable off 컴퓨터시스템구조
41
명령어 사이클 (16) 입출력 명령어 및 인터럽트 입출력 전송 방식:
프로그램 제어 입출력(Program-controlled I/O) 인터럽트 기반 입출력(Interrupt-initiated I/O) DMA(Direct Memory Access) 기반 입출력 IOP(I/O Processor) 입출력 컴퓨터시스템구조
42
명령어 사이클 (17) 입출력 명령어 및 인터럽트 Input : LOOP: SKI DEV Output:
프로그램 제어 입출력(Programmed Controlled I/O) 입출력하는 동안 계속적인 CPU 개입으로 유용한 CPU 시간을 낭비 늦은 I/O 속도로 인해 프로그램 실행 속도가 느려짐 단순한 I/O 구조 최소의 하드웨어 구성이 필요 프로세서와 입출력 장치와의 속도 차이로 매우 비능률적 기본 컴퓨터에서 입출력 프로그램: Input : LOOP: SKI DEV BUN LOOP INP DEV Output: LDA DATA LOOP: SKO DEV OUT DEV 컴퓨터시스템구조
43
명령어 사이클 (18) 입출력 명령어 및 인터럽트 IEN (Interrupt-enable) Flip-Flop
인터럽트 기반 입출력(Interrupt Initiated I/O) 외부 장치가 전송 준비가 되었을 때에 프로세서에게 입출력 준비 여부를 알려 입출력 동작을 시작 인터럽트(interrupt) I/O 인터페이스 장치가 I/O 장치를 모니터링 I/O 장치가 데이터 전송를 전송할 준비가 되면 CPU에서 인터럽트를 전송 CPU는 인터럽트가 검출되며, 현재 수행중인 프로그램 실행을 중지하고, 데이터 전송을 수행할 서비스 루틴으로 실행 제어를 넘기고 데이터 전송이 끝나면 원래 프로그램 실행으로 복귀 IEN (Interrupt-enable) Flip-Flop 입출력 명령어를 이용하여 설정 또는 클리어시킬 수 있다 클리어되어 있으면 CPU에 인터럽트를 걸 수 없다 컴퓨터시스템구조
44
명령어 사이클 (19) 입출력 명령어 및 인터럽트 인터럽트 사이클(Interrupt Cycle)
R = Interrupt f/f Store return address R =1 =0 in location 0 M[0] PC Branch to location 1 PC 1 IEN 0 R 0 Interrupt cycle Instruction cycle Fetch and decode instructions IEN FGI FGO Execute R 1 실행 단계 동안에 제어장치는 IEN을 검사 IEN=0: 프로그램이 인터럽트 사용을 요구하지 않으므로 제어장치는 다음 명령어 사이클을 계속한다. IEN=1: 제어장치는 플래그 비트를 검사하여 R f/f을 설정한다 실행 단계 마지막에서 제어 장치는 R f/f을 검사 R=0 : 보통의 instruction cycle로 들어감 R=1 : Interrupt cycle로 들어감 컴퓨터시스템구조
45
명령어 사이클 (20) 입출력 명령어 및 인터럽트 명령어 사이클 수정 Execution Phase :
R F/F if IEN (FGI + FGO)T0T1T2 T0T1T2 (IEN)(FGI + FGO): R 1 Fetch & Decode Phase : Replace T0, T1, T2 with R'T0, R'T1, R'T2 Interrupt cycle : RT0: AR 0, TR PC RT1: M[AR] TR, PC 0 RT2: PC PC + 1, IEN 0, R 0, SC 0 컴퓨터시스템구조
46
명령어 사이클 (21) 입출력 명령어 및 인터럽트 인터럽트 사이클 실행 예: 메모리 0번지는 반환 주소를 저장하는 장소
Interrupt 발생시 항상 메모리 1번지로 실행 제어 이동(branch) Interrupt cycle에서 항상 IEN=0으로 함 ISR에서 Interrupt를 받기 위해서는 ISR 앞부분에서 반드시 ION 명령을 실행해야 함 After interrupt cycle BUN 1120 1 PC = 256 255 Before interrupt Main Program I/O PC = 1 256 Memory Interrupt Here! 컴퓨터시스템구조
47
기본 컴퓨터의 완전한 기술 (1) 기본 컴퓨터 동작의 전체 흐름도: 컴퓨터시스템구조
=1 (I/O) =0 (Register) =1(Indir) =0(Dir) start SC 0, IEN 0, R 0 R AR PC R’T0 IR M[AR], PC PC + 1 R’T1 AR IR(0~11), I IR(15) D0...D7 Decode IR(12 ~ 14) R’T2 AR 0, TR PC RT0 M[AR] TR, PC 0 RT1 PC PC + 1, IEN 0 R 0, SC 0 RT2 D7 I Execute I/O Instruction RR AR <- M[AR] Idle D7IT D7I’T3 D7’IT D7’I’T3 Execute MR =0(Instruction =1(Interrupt Cycle) Cycle) =1(Register or I/O) =0(Memory Ref) D7’T4 컴퓨터시스템구조
48
기본 컴퓨터의 완전한 기술 (2) 기본 컴퓨터에 대한 제어 함수와 마이크로 연산 Fetch Decode Indirect
Interrupt Memory-Reference AND ADD LDA STA BUN BSA ISZ RT0: RT1: RT2: D7IT3: RT0: RT1: RT2: D0T4: D0T5: D1T4: D1T5: D2T4: D2T5: D3T4: D4T4: D5T4: D5T5: D6T4: D6T5: D6T6: AR PC IR M[AR], PC PC + 1 D0, ..., D7 Decode IR(12 ~ 14), AR IR(0 ~ 11), I IR(15) AR M[AR] R 1 AR 0, TR PC M[AR] TR, PC 0 PC PC + 1, IEN 0, R 0, SC 0 DR M[AR] AC AC DR, SC 0 AC AC + DR, E Cout, SC 0 AC DR, SC 0 M[AR] AC, SC 0 PC AR, SC 0 M[AR] PC, AR AR + 1 DR DR + 1 M[AR] DR, if(DR=0) then (PC PC + 1), SC 0 T0T1T2(IEN)(FGI + FGO): 컴퓨터시스템구조
49
기본 컴퓨터의 완전한 기술 (3) 기본 컴퓨터에 대한 제어 함수와 마이크로 연산 (계속) Register-Reference
CLA CLE CMA CME CIR CIL INC SPA SNA SZA SZE HLT Input-Output INP OUT SKI SKO ION IOF D7IT3 = r IR(i) = Bi r: rB11: rB10: rB9: rB8: rB7: rB6: rB5: rB4: rB3: rB2: rB1: rB0: D7IT3 = p p: pB11: pB10: pB9: pB8: pB7: pB6: (Common to all register-reference instr) (i = 0,1,2, ..., 11) SC 0 AC 0 E 0 AC AC E E AC shr AC, AC(15) E, E AC(0) AC shl AC, AC(0) E, E AC(15) AC AC + 1 If(AC(15) =0) then (PC PC + 1) If(AC(15) =1) then (PC PC + 1) If(AC = 0) then (PC PC + 1) If(E=0) then (PC PC + 1) S 0 (Common to all input-output instructions) (i = 6,7,8,9,10,11) AC(0-7) INPR, FGI 0 OUTR AC(0-7), FGO 0 If(FGI=1) then (PC PC + 1) If(FGO=1) then (PC PC + 1) IEN 1 IEN 0 컴퓨터시스템구조
50
기본 컴퓨터의 설계 (1) 기본 컴퓨터의 하드웨어 요소 메모리 장치: 4096 x 16.
9’s 레지스터: AR, PC, DR, AC, IR, TR, OUTR, INPR, SC 7’s 플립플롭 (Status): I, S, E, R, IEN, FGI, and FGO 2’s 디코더: 3x8 Opcode decoder, 4x16 timing decoder 공통 버스: 16 bit width 제어 논리 게이트들 가산 논리 회로(Adder and Logic circuit): AC 연결됨. 컴퓨터시스템구조
51
기본 컴퓨터의 설계 (2) 제어 논리 게이트(Control Logic Gates) 입력: 출력:
그림 5.6의 제어 논리 게이트 블록도에 제시된 입력 AC(0-15), DR(0-15), 7’s 플립플롭 등 출력: 9’s 레지스터의 입력 제어 신호 메모리의 읽기 & 쓰기 제어 신호 플립플롭에 대한 Set, Clear, Complement 제어 신호 버스를 위한 레지스터 선택 제어 신호 S2, S1, S0 AC에 대한 가산 논리 회로 제어 신호 컴퓨터시스템구조
52
기본 컴퓨터의 설계 (3) 레지스터와 메모리에 대한 제어
레지스터 제어 입력은 LD(로드), INR(1-증가), CLR(클리어) 등에 연결 예: AR 레지스터의 제어 입력 R’T0: AR PC LD(AR) R’T2: AR IR(0-11) LD(AR) D’7IT3: AR M[AR] LD(AR) RT0: AR CLR(AR) D5T4: AR AR INR(AR) LD(AR) = R'T0 + R'T2 + D'7IT3 CLR(AR) = RT0 INR(AR) = D5T4 AR LD INR CLR Clock To bus 12 From bus D' I T R D 7 3 2 4 컴퓨터시스템구조
53
기본 컴퓨터의 설계 (4) 레지스터와 메모리에 대한 제어 예: 메모리 읽기 제어 입력 메모리 제어 입력: READ, WRITE
읽기 제어 입력: 표 5-6에서 메모리 읽기 연산 “ ← M[AR]”을 수행하는 문장을 검색 제어 함수: READ=R’T1+D7’IT3+(D0+D1+D2+D3)T4 컴퓨터시스템구조
54
기본 컴퓨터의 설계 (5) 단일 플립플롭에 대한 제어 7개 플립플롭에 대한 제어 게이트의 회로도 동일하게 설계
예: IEN( Interrupt Enable) 플립플롭 제어 pB7: IEN 1 (I/O Instruction) pB6: IEN 0 (I/O Instruction) RT2: IEN 0 (Interrupt) p = D7IT3 (Input/Output Instruction) D I T3 7 J K Q IEN p B 6 T 2 R 컴퓨터시스템구조
55
기본 컴퓨터의 설계 (6) 공통 버스에 대한 제어 16 비트 공통 버스는 선택 입력 S2, S1, S0에 의해 제어
Let x1~x7 : 특정 레지스터나 메모리를 선택하는 논리식 버스의 선택 회로 위한 인코더 진리표: x1 : AR 레지스터 선택 논리식 x1 x2 x3 x4 x5 x6 x7 S2 S1 S0 selected register none AR PC DR AC IR TR Memory x1 x2 x3 x4 x5 x6 x7 Encoder S 2 1 Multiplexer bus select inputs D4T4: PC AR D5T5: PC AR x1 = D4T4 + D5T5 컴퓨터시스템구조
56
기본 컴퓨터의 설계 (7) 누산기 논리의 설계 AC 레지스터와 관련 회로 컴퓨터시스템구조
57
기본 컴퓨터의 설계 (8) 누산기 논리의 설계 AC 레지스터 제어 컴퓨터시스템구조
58
기본 컴퓨터의 설계 (9) 누산기 논리의 설계 가산 논리 회로 컴퓨터시스템구조
Similar presentations