5 장. 프로세서 : 데이터패스및제어유닛 서론 논리설계관례 데이터패스만들기 단순한구현 다중사이클구현 예외 순천향대학교컴퓨터학부이상정 1 51 5.1 서론 순천향대학교컴퓨터학부이상정 2
기본적인 MIPS 구현 MIPS 핵심명령어일부를갖는기본프로세서구현 구현되는명령어 메모리참조명령어 (memory-reference instructions) lw, sw 산술 / 논리명령어 (arithmetic/logical instructions) add, sub, and, or, slt 분기명령어 (branch instructions) beq, j 순천향대학교컴퓨터학부이상정 3 구현개요 모든명령어처리시작 2 단계 1. 명령어인출 (Instruction Fetch) 프로그램카운터 (PC) 를메모리에전송하여주소지정 지정된메모리에저장된명령어를읽어들임 PC = PC + 4 2. 명령해독 (Instruction Decode) Opcode 해독 레지스터미리읽기 (prefetch) 순천향대학교컴퓨터학부이상정 4
마지막단계 각명령어종류에따라 3 번째단계수행 메모리참조명령어 (memory-reference instructions) sw: 메모리에데이터저장 lw: 메모리데이터를읽음 산술 / 논리명령어 (arithmetic/logical instructions) ALU 연산결과를레지스터에저장 분기명령어 (branch instructions) 비교결과에따라 PC 변경 순천향대학교컴퓨터학부이상정 5 기본 MIPS 의추상적관점구현 그림 51 5.1 순천향대학교컴퓨터학부이상정 6
그림 5.2 기본 MIPS 의구현 순천향대학교컴퓨터학부이상정 7 52 5.2 논리설계관례 순천향대학교컴퓨터학부이상정 8
조합논리, 상태소자 모서리구동방법론 (edge triggered methodology) 전형적인동작 상태소자내용읽음 조합논리회로로값을보냄 결과를하나이상의상태소자에저장 그림 52 5.2 순천향대학교컴퓨터학부이상정 9 5.3 데이터패스만들기 순천향대학교컴퓨터학부이상정 10
명령인출데이터패스구성요소 명령메모리 (Instruction memory) 프로그램의명령어저장 프로그램카운터 (PC) 명령어의주소를저장 덧셈기 (Adder) 다음명령어의주소를지정하기위해 PC 를증가 그림 5.6 순천향대학교컴퓨터학부이상정 11 R- 형식명령어실행 단계 3 opcode 연산을수행 단계 4 ALU의결과를레지스터에저장 그림 57 5.7 순천향대학교컴퓨터학부이상정 12
R- 형식명령어데이터패스 순천향대학교컴퓨터학부이상정 13 메모리참조명령어실행 단계 3 베이스레지스터와 16 비트오프셋을더하여메모리주소를계산 단계 4 sw $t1,offset_value($t2) $t1 을메모리에저장 lw $t1,offset_value($t2) 메모리로부터값을읽어서 $t1 에저장 주요구성요소 구성 부호확장유닛과데이터메모리 순천향대학교컴퓨터학부이상정 14
load/store 명령을위한데이터패스 순천향대학교컴퓨터학부이상정 15 분기명령어실행 단계 3 비교를위해 ALU를사용 부호확장된오프셋과 PC 를더하여분기타겟주소를계산 단계 4 비교의결과에근거하여 PC 를변경 주요구성요소 Shift-left-2 unit 분리된덧셈기 순천향대학교컴퓨터학부이상정 16
분기명령어를위한데이터패스 그림 59 5.9 순천향대학교컴퓨터학부이상정 17 단일데이터패스로합치기 가장단순한데이터패스 한클럭사이클에명령어를실행 어떤데이터패스도명령당두번이상사용될수없음 명령어와데이터메모리분리 두개의다른명령군사이에데이터패스구성요소공유 멀티플렉서와데이터패스공유 순천향대학교컴퓨터학부이상정 18
예제 : 데이터패스구성하기 산술 / 논리 (R 형식 ) 연산명령어데이터패스와메모리명령어 데이터패스를결합 [Answer] 그림 5.10 순천향대학교컴퓨터학부이상정 19 그림 5.11 MIPS 기본데이터패스 순천향대학교컴퓨터학부이상정 20
54 5.4 단순한구현 순천향대학교컴퓨터학부이상정 21 ALU 제어 명령군에따라 ALU 는다음 5 가지기능중하나를수행 순천향대학교컴퓨터학부이상정 22
명령어 Op 코드, 기능필드와 ALU 제어입력 ALUOp 제어신호와 6 비트기능코드입력 ALU 제어신호출력 그림 5.12 순천향대학교컴퓨터학부이상정 23 ALU 제어비트진리표 그림 513 5.13 순천향대학교컴퓨터학부이상정 24
ALU 제어구현 부록 C2 C.2 절참조 Operation3 = 0 Operation2 = ALUOp0 + ALUOp1 F1 Operation1 = ALUOp1' + F2' Operation0 = ALUOp1 (F0 + F3) 순천향대학교컴퓨터학부이상정 25 주제어유닛설계하기 세종류의명령어 그림 5.14 순천향대학교컴퓨터학부이상정 26
데이터패스의제어선 그림 5.15 순천향대학교컴퓨터학부이상정 27 제어신호기능 그림 5.16 순천향대학교컴퓨터학부이상정 28
제어유닛 PCSrc =Branch Zero (from ALU) 그림 517 5.17 순천향대학교컴퓨터학부이상정 29 명령어의제어신호 그림 5.18 순천향대학교컴퓨터학부이상정 30
R 형식명령실행 add $t1,$t2,$t3$t2 $t3 1. 명령어를메모리에서인출하고, PC 값증가 2. 레지스터값을읽고 ($t2, $t3), 동시에주제어유닛이제 어신호를생성 3. ALU는레지스터에서읽어들인값에대해연산을수행, 기능 코드를사용하여 ALU 기능을결정 4. ALU 결과값이레지스터 $t1 에저장 순천향대학교컴퓨터학부이상정 31 R 형식명령어의데이터패스동작 그림 5.19 순천향대학교컴퓨터학부이상정 32
적재 (load) 명령어실행 lw $t1,offset($t2) 1. 명령어를메모리에서인출하고, PC 값증가 2. 레지스터값을읽고 ($t2), 동시에주제어유닛이제어신호 를생성 3. ALU 는 $t2 의읽어들이값과부호확장된오프셋을더해 유효주소계산 4. ALU 출력이데이터메모리의주소로지정 5. 메모리에서읽어들인값을 $t1 에저장 순천향대학교컴퓨터학부이상정 33 적재명령어의데이터패스동작 그림 520 5.20 순천향대학교컴퓨터학부이상정 34
Store 명령어의실행 순천향대학교컴퓨터학부이상정 35 분기명령어의실행 beq $t1,$t2,offset$t2 1. 명령어를메모리에서인출하고, PC 값증가 2. 레지스터값을읽고 ($t1, $t2), 동시에주제어유닛이제 어신호를생성 3. ALU 는두레지스터에서읽은값에뺄셈을수행하고, PC+4 와부호확장후 2비트왼쪽시프트한오프셋을더하여타겟주소를계산한다. 4. ALU의 Zero 출력을사용하여 PC에저장될덧셈기의결과값을결정 순천향대학교컴퓨터학부이상정 36
분기명령어의데이터패스동작 그림 521 5.21 순천향대학교컴퓨터학부이상정 37 제어유닛진리표 그림 522 5.22 순천향대학교컴퓨터학부이상정 38
제어유닛구현 그림 C.2.5 순천향대학교컴퓨터학부이상정 39 예제 : 점프명령어구현 PC[31-28] PC+4[31-28] PC[27-2] 2] instr[25-0] (=immediate field) PC[1-0] 00 그림 524 5.24 순천향대학교컴퓨터학부이상정 40
왜단일사이클구현은사용되지않는가? 단일사이클구현은비효율적 모든명령어에대해클럭사이클이같은길이 CPI = 1 클럭사이클길이는가장긴경로의명령어 (load) 의해결정 적재 (load) 명령어 명령어메모리 레지스터파일 ALU 데이터메모리레지스터파일 순천향대학교컴퓨터학부이상정 41 예제 : 단일사이클컴퓨터의성능 주요기능유닛들의작동시간가정 메모리유닛 : 200 ps ALU 및덧셈기 : 100 ps 레지스터파일 ( 읽기또는쓰기 ) : 50 ps 멀티플렉서, 제어유닛, PC 접근, 부호확장유닛, 선 (wires): 지연없다고가정 명령어사용빈도가정 25% lw, 10% sw, 45% R-type, 15% beq, 5% j 다음중어느방식이얼마만큼더빠른가? (1) 고정된길이의단일클럭사이클 (2) 가변길이를갖는단일클럭사이클 순천향대학교컴퓨터학부이상정 42
[Answer-1] CPU 실행시간 = 명령어수 x CPI x 클럭사이클시간 = 명령어수 x 클럭사이클시간 ( CPI = 1 ) 두가지구현에대한클럭사이클시간비교. 각명령어에대한최장경로 (critical path) 를조사하여클럭 사이클시간을계산 순천향대학교컴퓨터학부이상정 43 [Answer-2] 순천향대학교컴퓨터학부이상정 44
[Answer-3] 고정된길이의클럭구현의경우, Clock cycle = 600 ps. 가변클럭구현의경우, CPU clock cycle = 600 25%+550 10%+400 45%+350 15%+200 5% = 447.5 ps CPU Performance CPU execution time variable clock single clock = CPU Performancesingle clock CPU execution timevariable clock IC CPU clock cyclesingle clock = IC CPU clock cycle variable clock CPU clock cyclesingle clock 600 = = = 1.34 CPU clock cycle 447.5 variable clock 가변길의의클럭구현이 1.34 배더빠르다. 가변길이의클럭구현은매우어려우며오버헤드 (overhead) 가크다. 순천향대학교컴퓨터학부이상정 45 단일사이클구현의문제점 부동소수점유닛과복잡한명령어집합에대해서는클럭의길이가너무 길어짐 자주생기는일은빠르게하라는주요설계원칙위반 각기능유닛이클럭당한번밖에사용할수없어서일부기능유닛들은중복되어야함 성능및하드웨어측면에서비효율적설계 다중사이클데이터패스 짧은클럭사이클각명령어당다중클럭사이클 순천향대학교컴퓨터학부이상정 46
55 5.5 다중사이클구현 순천향대학교컴퓨터학부이상정 47 다중사이클구현 다중사이클구현 명령어실행의각단계는 1 클럭사이클걸림 다중사이클구현의주요장점 각명령어마다다른클럭사이클수 단일명령실행내에서기능유닛공유 순천향대학교컴퓨터학부이상정 48
다중사이클데이터패스구현개요 명령어와데이터용으로하나의메모리유닛이사용 하나의 ALU 사용 각기능유닛뒤에한두개의레지스터가추가 IR,MDR,A,B,ALUOut 그림 525 5.25 순천향대학교컴퓨터학부이상정 49 MPS 의다중사이클데이터패스구현 그림 5.26 순천향대학교컴퓨터학부이상정 50
ALU 입력 ALU 연산 1. PC + 4 2. Reg[rs] op Reg[rt] 3. Reg[rs] + sign-extended(offset) 4. (PC+4) + (sign-extended(offset) << 2) ALU 입력 -1 PC, Reg[rs] ALU 입력-2 1. Constant 4 2. Reg[rt] 3. sign-extended(offset), 4. sign-extended(offset)<<2 순천향대학교컴퓨터학부이상정 51 제어신호 메모리, PC, 레지스터, IR 등을위한쓰기제어신호 메모리읽기제어신호 ALU 제어신호 MUX 제어신호 추가된제어신호 : ALUSrcA, IorD, ALUSrcB 제거된제어신호 : Jump, Branch, ALUSrc 순천향대학교컴퓨터학부이상정 52
다중사이클데이터패스의제어신호 그림 527 5.27 순천향대학교컴퓨터학부이상정 53 PC 를위한제어신호 PC 의 3 가지소스 (1) ALU 출력 : 다음명령어실행을위한 PC + 4 (2) ALUOut 레지스터 : beq 명령어를위한분기타겟주소 (3) 왼쪽으로 2 비트이동된 IR 의하위 26 비트 : 점프명령어 PC 제어신호 PCSource: MUXselect PCWrite: 무조건적인쓰기 (Unconditional update ) (e.g. 명령어인출, 점프명령어 ) PCWriteCond: 조건적인쓰기 (Conditional update) (e.g. beq) PC 쓰기신호 PC = PCWrite + PCWriteCond Zero 순천향대학교컴퓨터학부이상정 54
다중사이클데이터패스와제어유닛 순천향대학교컴퓨터학부이상정 55 그림 5.28 1- 비트제어신호들의동작 그림 5.29 (upper) 순천향대학교컴퓨터학부이상정 56
2- 비트제어신호들의동작 그림 5.29 (lower) 순천향대학교컴퓨터학부이상정 57 명령어실행을여러개의클럭사이클로나누기 목적 성능최대화 각클럭사이클에서하는일의균형을유지 5 개의실행단계 1. 명령어인출 (Instruction fetch) 2. 명령어해독및레지스터읽기 (Instruction decode and register fetch) 3. 실행, 메모리주소계산또는분기의완료 4. 메모리접근또는 R 형식명령어의완료단계 5. 메모리읽기완료단계 순천향대학교컴퓨터학부이상정 58
클럭 1, 2 1. 명령어인출 IR Memory [PC]; /* MemRead, IRWrite, IorD=0 */ PC PC + 4; /* ALUSrcA=0, ALUSrcB=01, ALUOp=00, PCWrite, PCSource=00 */ 2. 명령어해독및레지스터읽기, 분기타겟주소계산 A Reg [IR [25:21]]; B Reg [IR [20:16]]; ALUOut PC + (sign-extend (IR [15:0]) << 2); /* ALUSrcA=0, ALUSrcB=11, ALUOp=00 */ 순천향대학교컴퓨터학부이상정 59 메모리참조명령어 3. 메모리주소계산 ALUOut A + sign-extend (IR [15:0]); 4. 메모리접근 /* ALUSrcA=1, A ALUSrcB=10, ALUOp=00 */ lw: MDR Memory [ALUOut]; /* MemRead, IorD=1 */ or sw: Memory [ALUOut] B; /* MemWrite, IorD=1 */ 5. 메모리읽기완료 lw: Reg[IR [20:16]] MDR; /* MemtoReg=1, RegWrite, RegDst=0 */ 순천향대학교컴퓨터학부이상정 60
산술- 논리명령어 3. 실행 ALUOut AopB; /* ALUSrcA=1, ALUSrcB=00, ALUOp=10 */ 4. R 형식명령어완료 Reg [IR [15:11]] ALUOut; /* RegDst=1, RegWrite, MemtoReg=0 */ 순천향대학교컴퓨터학부이상정 61 분기와점프명령어 3. 분기완료 if (A==B) PC ALUOut; /* ALUSrcA=1, ALUSrcB=00, ALUOp=01, PCSource=01, PCWriteCond */ 3. 점프완료 PC {PC[31:28], (IR[25:0] << 2)}; /* PCSource=10, PCWrite */ 순천향대학교컴퓨터학부이상정 62
단계별동작요약 단계 1 R 형식명령어를분기를위한점프를위한메모리참조명령어를위한동작위한동작동작동작 IR Memory[PC] PC PC + 4 2 3 4 A Reg[IR[25:21]] B Reg[IR[20:16]] ALUOut PC + (sign-extend(ir[15:0]) << 2) ALUOut ALUOut A op B A + sign-extend(ir[15:0]) Reg[IR[15:11]] ALUOut Load: MDR Memory[ALUOut] or Store: Memory[ALUOut] B If(A == B) PC ALUOut PC PC[31:28] (IR[25:0]<<2) 5 Load : Reg[IR[20:16]] MDR 순천향대학교컴퓨터학부이상정 63 그림 5.30 제어를정의하기 예제 : 다중사이클 CPU 의 CPI SPECINT2000 명령어배합을사용할때 CPI 값은? [Answer] loads: stores: 25%, 5 clocks 10%, 4 clocks branches: 11%, 3 clocks jumps: 2%, 3 clocks ALU: 52%, 4 clocks CPI = 0.25 5 + 0.10 4 + 0.52 4 + 0.11 3 + 0.02 3 = 4.12 최악의경우 CPI = 5 ( 모든명령어가같은클럭사이클갖는경우 ) 순천향대학교컴퓨터학부이상정 64
제어유닛의구현 다중사이클제어를명시하는 2 가지기법 (1) FSM (finite state machine) hardwired control unit (2) Microprogramming g microprogrammed control unit 상위수준의 FSM 제어도 : 그림 5.31 순천향대학교컴퓨터학부이상정 65 명령어실행및제어신호 순천향대학교컴퓨터학부이상정 66
FSM 명령어인출및해독 그림 532 5.32 순천향대학교컴퓨터학부이상정 67 FSM 메모리참조명령어 그림 5.33 순천향대학교컴퓨터학부이상정 68
FSM R 형식명령어 Figure 5.34 순천향대학교컴퓨터학부이상정 69 FSM 분기및점프명령어 그림 535 5.35 그림 536 5.36 순천향대학교컴퓨터학부이상정 70
완성된 FSM 그림 5.38 순천향대학교컴퓨터학부이상정 71 하드와이어드 (hardwired) 제어의블록다이어그램 그림 5.37 순천향대학교컴퓨터학부이상정 72
PLA 구현 그림 C39 C.3.9 순천향대학교컴퓨터학부이상정 73 56 5.6 예외 순천향대학교컴퓨터학부이상정 74
예외 예외 (exception) 와인터럽트 (interrupt) 분기나점프명령어가아니면서명령어실행의정상적인흐름을바꾸 예외 는사건 프로세서내에서의예기치못한사건 e.g. 산술오버플로우 (arithmetic overflow ) (cf) 트랩 (rap) 인터럽트 프로세서밖에서의예기치못한사건 프로세서와통신하기위해 I/O 디바이스에서사용 순천향대학교컴퓨터학부이상정 75 MIPS 규약 예외 내부적인요인에의한사건 인터럽트 외부적인요인에의한사건 Intel IA-32 구조 모드사건들을인터럽트로지칭 Type of event From where? MIPS terminology I/O device request external interrupt invoke OS from user program internal exception arithmetic overflow internal exception using an undefined instruction internal exception hardware malfunction either exception or interrupt 순천향대학교컴퓨터학부이상정 76
예외처리방식 기본적으로는인터럽트처리와유사 1 EPC (exception program counter) 문제를일으킨명령어의주소 2 운영제체로제어를이동 3 사용자프로그램에서비스제공, 오버플로우에대해미리정의된행동을수행, or 프로그램의실행을중지하고에러를보고 4 PC EPC or 프로그램종료 순천향대학교컴퓨터학부이상정 77 예외의원인구분 (1) 상태레지스터사용 (e.g. Cause 레지스터 ) 예외의원인을표시하는필드포함 (2) 벡터인터럽트 (Vectored interrupt) 제어가이동되는주소가예외의원인에의해결정 예 exception type undefined instruction arithmetic overflow exception vector address C000 0000 hex C000 0020 hex 순천향대학교컴퓨터학부이상정 78
예외처리를위한레지스터 EPC : 중단된명령어의주소를저장하기위한 32 비트레지스터 Cause : 예외의원인을저장하는 32비트레지스터 LSB = 0, 정의안된명령어 LSB = 1, 산술오버플로우 Cause in MIPS (cf) 부록 A.7 Cause[15-10] = 유보된인터럽트 (pending interrupts) Cause[5-2] = 예외코드 (exception code) 예외코드 (exception code) 0 for INT (external interrupt) 4 for ADDRL (address error, load or instr. fetch) 5 for ADDRS (address error, store) 6 for IBUS (bus error on instr. fetch) 7 for DBUS (bus error on data load or store) 8 for SYSCALL (system call exception) 9 for BKPT (breakpoint exception) 10 for RI (reserved instruction exception) 12 for OVF (arithmetic overflow exception) 순천향대학교컴퓨터학부이상정 79 예외처리를위한신호 그림 5.39 EPCWrite, CauseWrite 레지스터쓰기신호 IntCause Cause 레지스터의하위비트를설정하기위한 1 비트제어신호 PCSource =11 PC <- 예외주소 (8000 0180 hex ) 순천향대학교컴퓨터학부이상정 80
그림 5.39 순천향대학교컴퓨터학부이상정 81 예외처리를위한 FSM 단계 11, 정의안된명령어 Cause = 0; /* IntCause=0, CauseWrite */ EPC=PC 4; /* ALUSrcA=0, ALUSrcB=01, ALUOp=01, EPCWrite */ PC = 8000 0180 /* PCSource=11, PCWrite */ 단계 11, 산술오버플로우 Cause = 1; /* IntCause=1, CauseWrite */ EPC = PC 4; /* ALUSrcA=0, ALUSrcB=01, ALUOp=01 01, EPCWrite */ PC = 8000 0180 /* PCSource=11, PCWrite */ 순천향대학교컴퓨터학부이상정 82
예외가포함된 FSM 그림 5.40 순천향대학교컴퓨터학부이상정 83 예외검출 정의안된명령어 상태 1 에서 lw, sw, 0 (R-type), j and beq 외에다른모든명령어 op 값 다음상태 = 10 산술오버플로우 상태 7 에서 ALU 오버플로우신호출력 다음상태 = 11 순천향대학교컴퓨터학부이상정 84
과제 : 연습문제 연습문제 5.1: 조합논리와순차논리구분 5.2: 단일사이클데이터패스 stuck-at-0 5.8: jr (jump register) 추가, 그림 5.18에추가 5.29 : 다중사이클데이터패스 stuck-at-0 순천향대학교컴퓨터학부이상정 85