한국기술교육대학교 장영조
본슬라이드는 M. Morris Mano and Charles Kime 의 Logic and Computer Design Fundamentals 의내용을참조하였습니다. 한국기술교육대학교전기전자통신공학부 2
1. 레지스터전송과데이터처리장치 2. 순차진행과제어 3. 명령어구조 (Instruction Set Architecture) 한국기술교육대학교전기전자통신공학부 3
동기형디지틀시스템의제어 - master clock 발생회로에의한클럭제어 - 각클럭사이클마다레지스터의상태값변화 제어장치 - 연산순서에맞는제어신호공급 - 연속된마이크로연산결정 - Programmable and non-programmable system 명령어 (instruction) - programmable system - 연산종류, operand, 저장위치, next 명령어등지정 - RAM/ROM에저장됨 - PC : 실행할 instruction에대한주소저장 한국기술교육대학교전기전자통신공학부 4
이진 Multiplier 설계 한국기술교육대학교전기전자통신공학부 5
CAQ : carry, product(aq), 승수 (Q) - shift right 레지스터 P - shift 연산마다 down counter, 초기값 (n-1) 제어기 -입력: G, Z, Qo - 출력 : 상태및모드제어신호 한국기술교육대학교전기전자통신공학부 6
승산기 ASM 도 - 초기연산 : B 피승수, Q 승수 - 3개의상태 IDLE 외부입력 if G=0 이면차기상태는 IDLE, else C,A,P초기화, MUL0로천이 MUL0 if Q 0 =1 이면 addition C, A A+B, goto MUL1 MUL1 C A Q sr C A Q, C0 P P-1 if Z=1 goto IDLE else goto MUL0 * loop n, P가갱신되기전의값으로 Z 판단 데이터처리장치기능 A 레지스터 : 병렬로드, 시프트, 동기클리어 Q 레지스터 : 병렬로드, 시프트 C 플립플롭 : 로드, 동기클리어 B 레지스터 : 병렬로드 P 카운터 : 병렬로드, 하강카운터 한국기술교육대학교전기전자통신공학부 7
Control sequencer 데이터패스모드제어신호발생 제어순서상태신호발생 모드제어신호 각마이크로연산제어 레지스터동작제어 상태및제어입력에의한논리식 상태신호 상태박스와상태천이를변화시키는판별박스로부터상태변화유도 상태도와유사 한국기술교육대학교전기전자통신공학부 8
(1) 레지스터 + 디코더방식 - n 개의상태변수레지스터 -n-to-2 n 디코더 - 논리게이트 순서회로설계방식과동일현재상태, 차기상태, 출력 상태 F/F 입력방정식유도 D M0 = IDLE G + MUL1 Z D M1 = MUL0 모드제어신호 init=idle G load = MUL0 Q 0 shift_dec = MUL1 clear_c = IDLE G + MUL1 한국기술교육대학교전기전자통신공학부 9
(2) 상태당한플립플롭방식 (one F/F per state, one hot code) - h/w cost 는크나회로설계가간단 - 한클럭사이클에하나의 F/F 만이 1 값을유지 ASM도에서논리회로유도상태박스 : F/F, 상태값표현판별박스 : DEMUX, 판별신호는 sel 신호입력의 junction : OR 조건출력 : 제어신호이름을표현 한국기술교육대학교전기전자통신공학부 10
One F/F per state 제어회로 - 초기상태를위해 IDLE F/F: 비동기 preset 나머지 F/F는비동기 reset 한국기술교육대학교전기전자통신공학부 11
// module mult (clk, rst, G, ldb, ldq, mult_in, mult_out ); module ser_mult (clk, rst, G, ldb, ldq, mult_in, mult_out, init, load, s_dec, clr_c, ps, P, A, B, Q, sum); parameter BWM=5,BWR= 2*BWM; input clk, rst, G, ldb, ldq; input [BWM-1:0] mult_in; output [BWR-1:0] mult_out; output init, load, s_dec, clr_c; output [1:0] ps; output [2:0] P; output [BWM-1:0] A, B, Q; output [BWM-1:0] sum; parameter IDLE=2'b00, MUL0=2'b01, MUL1=2'b10; reg [1:0] ps, ns; reg [2:0] P; // counter reg [BWM-1:0] A, B, Q; reg C; wire Z, cout; wire [BWM-1:0] sum; reg init, load, s_dec, clr_c; assign Z = ~ P; assign mult_out = {A, Q}; assign {cout, sum} = A + B; // parallel adder // control part always @ (posedge clk or posedge rst) if (rst) ps <= IDLE; else ps <= ns; always @ (ps, G, Z, Q[0]) begin init=1'b0; load=1'b0; s_dec=1'b0; clr_c=1'b0; case (ps) IDLE : if(g) begin ns = MUL0; init=1'b1; clr_c=1'b1; end else ns = IDLE; MUL0 : begin ns = MUL1; if (Q[0]) load = 1'b1; end MUL1 : begin if (Z) ns = IDLE; else ns = MUL0; s_dec=1'b1; clr_c=1'b1; end default: ns = IDLE; endcase end 한국기술교육대학교전기전자통신공학부 12
// data path part always @ (posedge clk) if (ldb) B <= mult_in; always @ (posedge clk) // counter if ( init) P <= BWM 1 b1; else if (s_dec) P <= P - 1'b1; always @ (posedge clk) // A register if (init) A <= {BWM{1'b0}}; else if (load) A <= sum; else if (s_dec) A <= {C, A[BWM-1:1]}; always @ (posedge clk) // Q register if (ldq) Q <= mult_in; else if (s_dec) Q <= {A[0],Q[BWM-1:1]}; always @ (posedge clk) // C flip flop if ( clr_c) C <= 1'b0; else if (load) C <= cout; endmodule 한국기술교육대학교전기전자통신공학부 13
- 메모리에제어워드저장 - microinstruction(ui): 마이크로연산지정 - microprogram : ui 의집합, ROM 또는 RAM 에저장 control memory - 제어변수값을여러개의워드로결합하여표현이를연속적으로읽어내어제어논리회로에인가 마이크로프로그램제어구조 제어메모리 : 제어워드로제어정보저장 CDR(control data register) : 현재실행되는 ui 저장 - 선택사항, 파이프라인단계로작용 ( 경로지연감소 ) CAR(control address register) : ui의주소저장 다음주소결정요소 : - 제어워드가포함하고있는다음주소정보 - DP로부터오는 status ( 예 ;Z, Ov, Carry..) - 외부제어입력 ( 예 ; start, stop, ) ROM 출력 : ui 직접출력또는 CDR에저장 상태비트 : 다음주소결정, ASM 에서다음상태결정 한국기술교육대학교전기전자통신공학부 14
무어머신형태필요 : - 조건적출력박스제거 상태수증가 - INIT 및 ADD 상태추가 마이크로프로그램제어기설계 : - 제어워드비트, ROM, CAR크기, - 다음주소생성기구조결정 데이터패스모드제어신호 : 4가지신호 (IT,LD,CC,SD) - 제어워드표현시 코드화 제어신호가많을때, 디코더필요 : 2비트 비코드화 디코더불필요, 제어워드가커짐 : 4비트 한국기술교육대학교전기전자통신공학부 15
제어장치의순차적진행방식 : 순차진행또는조건에의한진행 2개주소방식제어워드구조 주소결정방식 : 시스템처리속도와구현비용에영향 2개주소방식 조건값에따라제어워드에 2개주소포함 긴제어워드로 ROM비트증가, 주소할당이용이 1개주소방식 CAR을병렬로드기능이있는카운터사용으로순차또는분기제어 임의주소할당이어렵다. SEL MUX Control 한국기술교육대학교전기전자통신공학부 16
이진곱셈기의마이크로실행에대한레지스터전달식 곱셈기에대한마이크로프로그램제어워드형태 : -5 제어워드, 5 x 12 비트 ROM 에저장될이진프로그램정보 SCLI 한국기술교육대학교전기전자통신공학부 17
- 프로그램가능한제어구조기사용 Instruction - 컴퓨터의프로그램정보 - 프로그램메모리에저장 - 1개이상의마이크로연산실행 - instruction set : 컴퓨터의전체명령어연산종류, 오퍼랜드정보포함명시적 (explicit) 오퍼랜드묵시적 (implicit) 오퍼랜드 Instruction format - opcode, DR, SA, SB등의오퍼랜드정보필드포함 - 각연산에따른 format 차이 - 8개의레지스터세트를가정할때, 각오퍼랜드는 3비트사용레지스터방식 : R1 R2 R3 (sub) immediate방식 : R2 R7 + 011 jump and branch 방식 : R 또는메모리내용변화무명령어의실행순서변화 : PC값변화 - PC 상대주소지정방식 : PC를기준으로주소 offset을 2의보수형태로저장 branch-on-zero R6(SA) 35(AD) 현재 PC가 55일때 20을 AD에저장, R6값이 0이면 55+(-20) 으로 PC는 35 가되고 R6=0이면 PC=56번지 *** AD주소를자리확장시부호비트를확장 (sign extension) 함에유의 한국기술교육대학교전기전자통신공학부 18
7비트 opcode 명령어 + 9비트 operand 16비트명령어형태더큰 (32~64) 비트컴퓨터 - 한워드의길이와동일 - 한개의즉시오퍼랜드길이 R4=70 - 메모리주소길이 R5=80 - 레지스터개수 - 명령어워드의확장 간단한컴퓨터의메모리구조 사용자의입장에서사용할수있는저장자원 -Instruction memory : CPU 명령어저장 -Data memory : 프로그램실행시데이터저장 -16비트 PC -8개의 16비트레지스터 한국기술교육대학교전기전자통신공학부 19
- 한클럭사이클에한개의명령어실행 PC ( 현재실행명령어주소저장 ) instruction memory( 명령어인출 ) instruction decoder 명령어해독, 연산종류, 오퍼랜드결정, 제어신호발생 오퍼랜드로부터 ALU 연산 data 메모리에 R/W 레지스터에저장 모두한개의클럭사이클에실행됨 PC 는현재명령어인출후 +1 자동증가 Branch/jump 시는증가이전값에 offset 값처리 한국기술교육대학교전기전자통신공학부 20
- 조합회로, 명령어에따라필요제어신호발생 필요제어신호 DA, AA, BA : 오퍼랜드주소 BC : 분기조건 (C,N,V,Z,C N,V,Z ) MB, MD, RW : DP모드제어 MW : 데이터메모리 R/W제어 FS : ALU 함수선택 PL, JB : jump에대한 PC 제어 PL=1 PC가 jump할주소 load 0 PC++, 자동증가 PL=1 JB=1 jump PL=1 JB=0 조건적분기 명령어군에따라디코더논리회로설계필요 MB=B 15 MD=B 14 RW=B 14 + B 15 B 13 MW=B 15 B 14 B 13 ' PL=B 15 B 14 JB=B 13 FS=B 13 B 12 B 11 B 10 B 9 (B 15 +B 14 ) FS는 5 비트 한국기술교육대학교전기전자통신공학부 21
명령어동작과필요제어신호예 명령어에의한프로그램예 : 83 (2 + 3) - 초기값 [R3]=248, M[248]=2, M[249]=83, M[250] store result LD R1, R3 248 번지내용 2 를 R1 에 load, R1 M[R3] ADI R1, R1, 3 R1(5) R1(2) + #3 NOT R1,R1 1 의보수 INC R1, R1 2 의보수 (-5) INC R3, R3 R3 주소증가, 249 번지 LD R2, R3 R2 에 R3 값 83 copy ADD R2, R2, R1 R2 R2+R1 (78 = 83+(-5) ) INC R3, R3 R3 주소증가, 250 번지 ST R3, R2 결과값저장, M[R3] R2 1 한국기술교육대학교전기전자통신공학부 22
한개사이클컴퓨터에대한장단점 - 복잡한연산수행시한개이상의명령어로실행 R1 R1 + R2, add R1 sr R1, shift - 메모리가 2개필요 : instruction memory ( 프로그램메모리 ) data memory ** 보통다수사이클컴퓨터는한개메모리로프로그램과데이터메모리를 2번 access - 지연경로 (delay path) 가길다그림에서최대지연경로 (critical delay path) 가 17ns로최대동작주파수가 58.8 MHz 짧은경로또는빠른동작소자사용필요 구조적으로는파이프라인, 다수사이클로변환필요 한국기술교육대학교전기전자통신공학부 23
Multi cycle computer의구조적변화 - M 메모리 : 데이터및명령어저장 MM mux로주소선택 MB mux로데이터입력선택 MD mux로데이터출력선택 - 레지스터파일기존 8개에 tmp reg R8 추가오퍼랜드주소선비트 (TD,TA,TB) 다수사이클실행데이터임시저장 - IR (instruction register) 현재실행되는명령어저장 IL(instr load) 현재의 DP오퍼랜드 (DR,SA,SB) 포함 제어워드에서는이를생략하여제어워드구조가단순화됨 - PC 제어신호 PI : instr read시 1증가 PL : PC PC+se AD *se : sign extension - Control memory ui에대한제어워드저장 - CAR : CM의주소값지정, 아래 mux에의해 CAR은 load/inc 동작 MC mux : IR 또는CM 에의한주소 MS mux : status에의한주소 TA TA 한국기술교육대학교전기전자통신공학부 24
다수사이클컴퓨터에대한마이크로명령어의형식 ALU 코드와관련 DP 제어신호 한국기술교육대학교전기전자통신공학부 25
MUX S 에대한선택값과제어정보 한국기술교육대학교전기전자통신공학부 26
마이크로명령어실행단계 ui에대한 ASM instr fetch(read) 상태 : IF instr 실행상태 : EX0 IF 상태 IR M[PC], PC 지정주소에서 instr read PC PC+1, 다음 instr 을위해자동증가 EX0 상태 - IR 값에따라 instr decoding -opcode 값에따라필요한마이크로연산실행상태로분기 - 7 bit opcode 128 ui 128 실행상태분기 그림예는 3 개사이클에한명령어실행하는 ASM 한국기술교육대학교전기전자통신공학부 27
각 Instruction 에대한마이크로프로그램과이진코드값예 한국기술교육대학교전기전자통신공학부 28
Temp Register Usage Indirect addressing load R[DR] M[M[R[SA]]] 4 클럭사이클에실행 다수 shift 연산 - tmp reg 인 R8 에이동연산수를저장하여반복실행사이클구성 - 2s+3 클록사이클, s : 이동수 3 사이클단일 shift 연산경우클록수는 3s 한국기술교육대학교전기전자통신공학부 29
- Decoder based 혹은 one F/F per state 리셋기능을가진카운터 + 디코더로구현예 - 조건적출력박스를이용해 CAR 로드 : 2 클록실행 go IF 상태 (000) : counter reset CR = EX0 LRI + EX1 RW = EX0 ST 한국기술교육대학교전기전자통신공학부 30
4 단계파이프라인구조 IF : instr fetch DOF : instr decode EX : 실행 WB : store 파이프라인실행성능 1~7 상수값을각 reg에 load LDI R1, 1 LDI R2, 2 LDI R3, 3 LDI R4, 4 LDI R5, 5 LDI R6, 6 LDI R7, 7 4 stage pipeline 구조에서 10 클록소요 5nsx10=50ns 17nsx7=119ns 한개사이클방식 한국기술교육대학교전기전자통신공학부 31