pipeline 6

#8 MIPS Pipeline Processor Design (6) - Simulation, 결론

3. Simulation 시뮬레이션을 통해 해당 프로세서의 작동을 검증하고 확인한다. 3.1. Mips Top module simulation 설계한 Mips 5stage pipline processor가 제대로 작동되는지 확인하기 위한 명령어 예제로 1.2.3 Instruction Memory 에 적혀있는 예제 코드를 활용한다 사용한 테스트 벤치 `timescale 1ns / 1ps module MIPS_tb(); reg clk, rst; wire [31:0] ProgramCounter_Output, t0, t1, t2, t3, t4, t5, t6, t7; wire [31:0] mem8, mem9, mem10, mem11, mem12, mem13, mem14, mem15; wire [1:0] forwa..

#7 MIPS Pipeline Processor Design (5) - I/O, Constraints

2. Verilog를 이용한 I/O 설계 2.1 7 Segment LED 7 segment LED를 이용하여 Program Counter의 값을 Hexadecimal 형식으로 출력하였다. 코드는 수업에서 제공된 코드를 이용하였다. Instantiation은 다음과 같다. ss_drive SSEG ( .clk(clk), .rst(rst), .data7(PC[31:28]), .data6(PC[27:24]), .data5(PC[23:20]), .data4(PC[19:16]), .data3(PC[15:12]), .data2(PC[11:8]), .data1(PC[7:4]), .data0(PC[3:0]), .mask(8'b11111111), .ssA(CA), .ssB(CB), .ssC(CC), .ssD(CD), ...

#6 MIPS Pipeline Processor Design (4) - Hazard, Top module

1.9 Forwarding Unit Forwarding Unit 동작 설명 Forwarding Unit은 데이터 하자드를 해결하는 데 사용되는 유닛이다. Forwarding이 필요한 조건은 다음과 같다: 1. EX/MEM.RegisterRd가 ID/EX.RegisterRs와 같은 경우 2. EX/MEM.RegisterRd가 ID/EX.RegisterRt와 같은 경우 3. MEM/WB.RegisterRd가 ID/EX.RegisterRs와 같은 경우 4. MEM/WB.RegisterRd가 ID/EX.RegisterRt와 같은 경우 1과 2의 경우, 데이터를 가져오기 위해 EX/MEM 파이프라인 레지스터로부터 Forwarding이 필요하며, 3과 4의 경우, MEM/WB 파이프라인 레지스터로부터 Forward..

#5 MIPS Pipeline Processor Design (3) - Pipes, Control

1.7 Pipe Register 파이프 레지스터(pipe register)는 컴퓨터 아키텍처에서 파이프라인(pipeline) 구조를 구성하는 레지스터이다. 파이프 레지스터는 Pipeline stage 간의 데이터 흐름을 제어하고, 각 스테이지에서 수행되는 동작의 결과를 일시적으로 저장하는 역할을 한다. 파이프 레지스터는 주로 명령어가 프로세서의 다양한 단계를 거치면서 실행되는 동안 발생하는 지연을 최소화하기 위해 사용된다. 각 스테이지는 한 번에 하나의 명령어를 처리하며, 다음 명령어는 이전 명령어가 다음 스테이지로 이동할 때까지 현재 스테이지에 머무르게 됩니다. 이러한 파이프 레지스터는 CPU의 성능을 향상시키기 위해 사용되며, 파이프라인의 깊이와 관련이 있다. 파이프라인이 더 깊으면 명령어의 처리 속..

#4 MIPS Pipeline Processor Design (2) - ID, EX, MEM, WB

1.3 ID Stage ID_Stage는 현재의 Instruction이 들어오면 해독하여 Opcode, Rs, Rt, Rd 등으로 구분짓는 역할을 한다. Opcode는 Control unit으로 전송되어 각 명령어에 맞는 Control signal을 제어하며, 나머지 Rs, Rt, Rd의 값을 받아 내부의 레지스터 파일을 이용하여 레지스터를 새로운 값으로 갱신하거나, 레지스터 번호에 맞는 데이터 값을 추출한다. I-type instruction의 경우, [15:0] instruction을 sign-extended로 보내 32비트로 만들어준다. 또한 beq instruciton이 들어오게 될 경우 먼저 두 값이 같은지를 ID stage에서 판별하고 Branch equal 신호를 보내 Stall 여부를 미리..

#3 MIPS Pipeline Processor Design (1) - IF Stage, Sub Unit

다음 내용은 Digital System Design 수업 기말 팀 프로젝트로 제출한 과제로 모든 코드를 학부생 두 명이 직접 만들다보니 미처 확인하지 못한 오류가 있을 수 있다. 하지만 여러 명령어 시나리오에서 다음의 명령어들이 제대로 작동하는 모습을 보였으며 Data Hazard, Control Hazard 등을 잘 해결하는 모습을 보였다. 주어진 코드를 잘 따라한다면 Verilog에서의 MIPS 명령어 체계의 Pipeline processor 구현이 가능하다. MIPS 는 MIPS사에서 개발한 instruction set으로 Computer Architecture의 Pipeline, Hazard 등의 내용을 안다고 가정하고 진행한다. 완성된 Full Datapath는 다음과 같다. 1. Verilog..