본문내용
1. 서론
1.1. 컴퓨터 구조론 수업의 내용과 과제
컴퓨터 구조론 수업에서는 MIPS 프로세서의 Multicycle과 Pipeline 구현에 대한 내용을 다룬다. 이를 통해 프로세서의 구조와 동작 원리, 제어 신호의 생성 및 활용 등을 학습할 수 있다. 특히 Verilog를 이용한 MIPS 프로세서 설계 과제를 통해 이론적 지식을 실습으로 확인할 수 있다. 과제 수행의 배경은 컴퓨터 구조론 과정에서 배운 단일 주기(Singlecycle) MIPS 모델을 더 심도 있게 이해하고 다중 주기(Multicycle)와 파이프라인(Pipeline) MIPS 모델을 직접 구현해봄으로써 프로세서의 설계 능력을 향상시키는 것이다. [1,2]
Multicycle MIPS 모델에서는 명령어 실행이 여러 클럭 사이클에 걸쳐 이루어지며, 각 상태(State)에서 목적에 맞는 제어 신호를 생성하여 데이터 경로를 제어한다. ALU, ALUControl, Controller, DataMemory, RegFile 등의 모듈이 상호작용하며 명령어를 순차적으로 처리한다. 시뮬레이션 결과 분석을 통해 Multicycle MIPS의 구조와 동작 과정을 확인할 수 있다. [2]
한편 Pipeline MIPS 모델은 명령어 실행을 5단계(IF, ID, EX, MEM, WB)로 나누어 병렬 처리함으로써 처리 속도를 높인다. ALU, ALUControl, CONTROL 모듈이 각 파이프라인 단계에서 역할을 수행하며, DataMemory, IFETCH, IDECODE 등의 모듈 또한 파이프라인 구조에 맞추어 동작한다. Etc_module과 TestBench 코드 분석을 통해 Pipeline MIPS의 구조와 특징, 시뮬레이션 결과를 확인할 수 있다. [1]
과제 수행 후 Multicycle과 Pipeline MIPS의 장단점을 비교 분석하고, 과제 진행 과정에서의 어려움과 해결 방안, 그리고 설계 구현 능력 향상과 향후 계획 등을 고찰해볼 수 있다. 이를 통해 프로세서의 구조와 동작 원리에 대한 깊이 있는 이해를 얻을 수 있을 것이다. [1,2]
1.2. Verilog를 이용한 MIPS 프로세서 설계
Verilog를 이용한 MIPS 프로세서 설계이다. MIPS 프로세서의 Multicycle 구현과 Pipeline 구현으로 나눠 살펴보고자 한다.
먼저, Multicycle MIPS 모델의 구조와 특징을 알아보자. ALU 모듈에서는 DataA와 DataB를 입력으로 받아 각 연산을 수행하고 ALUResult를 출력한다. ALUControl 모듈에서는 ALUOp 코드와 Function 코드를 이용해 ALU의 연산 동작을 결정한다. Controller 모듈에서는 상태 단계와 그에 따른 제어 신호들을 관리한다. 예를 들어 상태 0에서는 PC+4 연산을 하고 새로운 PC 주소를 저장한다. 또한 메모리에서 명령어를 읽어 Instruction Register에 저장한다. 상태 1에서는 레지스터 파일에서 rs, rt 레지스터의 값을 읽어 온다. 상태 2 이후에는 opcode에 따라 다음 상태로 분기한다. DataMemory 모듈과 RegFile 모듈은 각각 데이터 메모리와 레지스터 파일에 대한 접근을 담당한다. Multicycle MIPS 프로세서의 시뮬레이션 결과를 분석해 보면, LW, BEQ, R-type 명령어들이 각 상태를 거치며 정상적으로 동작함을 확인할 수 있다. [1,2]
다음으로, Pipeline MIPS 모델의 구조와 특징을 살펴보자. ALU 모듈에서는 ALU_Input1, ALU_Input2, ALU_Control을 입력으로 받아 ALU 연산을 수행한다. ALUControl 모듈에서는 ALUOp 코드와 Function 코드를 이용해 ALU의 연산 동작을 결정한다. CONTROL 모듈에서는 명령어의 Opcode를 분석하여 각 단계의 제어 신호를 생성한다. DataMemory와 IFETCH, IDECODE 모듈은 각각 데이터 메모리 접근, 명령어 Fetch, 명령어 Decode를 담당한다. Etc_module에는 Adder, Shift_Left_2Bit, Sign_Extend, MUX 등의 보조 모듈이 포함되어 있다. Pipeline MIPS 프로세서의 시뮬레이션 결과를 보면, R-type, LW, SW, BEQ 등의 명령어가 각 파이프라인 단계를 거치며 실행되는 것을 확인할 수 있다. 다만 Immediate 명령어와 Jump 명령어는 정확히 구현되지 않은 것으로 보인다. [1]
이처럼 Multicycle과 Pipeline MIPS 프로세서 모델은 각각의 구조와 특징을 가지고 있다. Multicycle은 상태 기계 방식으로 동작하며 상태에 따른 제어 신호를 통해 명령어를 순차적으로 실행한다. 반면 Pipeline은 명령어 실행을 여러 단계로 나누어 병렬 처리함으로써 성능을 향상시킨다. 과제를 진행하면서 명령어의 Opcode와 Function 코드, 각 명령어의 동작 방식 등을 자세히 학습할 수 있었고, 이를 통해 컴퓨터 구조에 대한 이해도가 높아졌다. 다만 Immediate 명령어와 Jump 명령어의 구현에서 어려움을 겪었는데, 이는 향후 계획을 통해 보완할 수 있을 것이다.
1.3. 과제 수행의 배경과 목적
대학의 컴퓨터 구조론 수업에서는 프로세서의 구조와 동작 과정을 심도 있게 다루고 있다. 특히 MIPS 아키텍처를 기반으로 한 프로세서 설계 실습이 핵심 과제로 수행되고 있다. 이번 과제에서는 Verilog를 이용하여 MIPS 프로세서의 Multicycle과 Pipeline 모델을 구현하고, Vivado 시뮬레이터를 통해 그 동작을 분석하는 것이 목적이다.
Multicycle MIPS 모델과 Pipeline MIPS 모델은 각각의 구조적 특징과 실행 방식이 다르다. 따라서 이번 과제를 통해 두 모델의 장단점을 이해하고, 프로세서 설계 시 고려해야 할 다양한 요소들을 종합적으로 학습할 수 있을 것이다. 또한 Verilog를 이용한 HDL 코딩 실습으로 프로세서 설계 기술을 향상시키고, Vivado 시뮬레이터 활용 능력도 기를 수 있을 것으로 기대된다. 이번 과제 수행을 통해 컴퓨터 구조 이해도를 높이고 프로세서 설계 역량을 강화할 수 있을 것이다.
2. MIPS 프로세서의 Multicycle 구현
2.1. Multicycle MIPS 모델의 구조와 특징
Multicycle MIPS 모델은 명령어 실행 과정을 여러 단계로 나누어 진행하는 구조이다. 명령어 Fetch, Decode, Execute, ...