MIPS 단계별 주요 자원
IF (Instruction Fatch) 단계
- 사용 자원 : Instruction Memory
- 설명 : IF 단계에서는 명령어를 메모리에서 읽어오는 작업이 이루어집니다. 프로그램 카운터(PC) 기준으로 Instruction Memory에서 명령어를 가져옵니다.
ID (Instruction Decode) 단계
- 사용자원 : Register file
- 설명 : ID단계에서는 명령어의 옵코드와 레지스터 주소를 해석하고, 명령어에서 요구하는 레지스터 값을 Register File에서 읽습니다. 예를들면 add $t0, $t1, $t2 명령어에서 $t1, $t2 값을 Register File에서 가져옵니다.
EX (Execute) 단계
- 사용 자원 : ALU
- 설명 : EX 단계에서는 산술/논리 연산을 수행합니다. 예를 들어, add 명령어는 ALU를 사용하여 두 레지스터의 값을 정하고, slt 명령어는 두 값을 비교합니다. 또한 주소 계산(load/store)을 위해 ALU가 사용됩니다.
MEM (Memory Access) 단계
- 사용 자원 : Data memory
- 설명 : MEM 단계에서는 데이터 메모리에 접근합니다. 예를 들어 lw(load word)명령어는 Data Memory 에서 데이터를 읽고 sw(store word) 명령어는 Data memory에 데이터를 저장합니다.
WB (Write Back) 단계
- 사용 자원 : Register file
- WB 단계에서는 ALU나 Data memory에서 계산된 결과를 Register file에 기록합니다. 예를 들어 add의 명령어의 결과를 Register file에 저장하거나, lw 명령어로 읽어온 데이터를 Register file에 저장합니다.
제어 신호 설명
RegWrite : 레지스터에 값을 쓸지 여부 결정 (1이면 레지스터에 저장)
MemRead : 데이터 메모리에서 값을 읽을지 여부를 결정 (1이면 메모리에서 읽음)
MemWrite : 데이터 메모리로 값을 쓸지 여부 결정 (1이면 메모리 씀)
RegDst : 레지스터 목표를 선택 (R-type 명령어에서는 $rd를 선택)
ALUSrc : ALU의 두 번째 입력이 레지스터 값인지, 즉시값인지 선택(1이면 즉시값)
PCSrc : 분기 명령어에서 PC를 어떻게 업데이트할지 선택 (분기 명영어일 때 PC 이동)
MemtoReg : ALU 결과가 아닌 데이터 메모리의 값을 레지스터에 쓸지 여부 (load 명령어에서 활성화)
RegWrtie가 0일 때는 레지스터에 값을 쓰지 않기 때문에 RegWrite 외에는 다른 제어 신호가 don't care 임을 알 수 있습니다. sw 명령어에서는 레지스터의 값을 쓰지 않기 때문에, Reg Write는 0이고 나머지 신호는 실행되지 않고 상관이 없습니다. RegDst, MemtoReg
lw 명령어는 데이터 메모리에서 값을 읽고 레지스터에 값을 저장하는 명령어로 MemRead와 RegWrit
이거 일단 보류해놓고 나중에 다시 수정하기 머리가 안 돌아간다
제어 신호를 enable , mux 구분
RegWrite : enable
레지스터에 값을 쓸 수 있도록 하는 신호입니다. 즉 값이 레지스터에 쓰일 때 활성화됩니다.
MemRead : enable
데이터 메모리에서 값을 읽을 수 있도록 하는 신호입니다. 메모리에서 데이터를 읽는 경우 활성화됩니다.
MemWrite : enable
데이터 메모리에서 값을 쓸 수 있도록 하는 신호입니다. 메모리로 데이터를 쓸 때 활성화됩니다.
RegDst : mux
R-type 명령어에서 어떤 레지스터를 목표로 할지 결정하는 multiplexer (mux)신호입니다. $rd 레지스터를 사용하고 다른 레지스터에서는 $rt를 사용합니다.
ALUSrc : mux
ALU에 입력으로 주는 두 번째 피연산자가 레지스터 값인지, 즉시 값인지 선택하는 mux 신호입니다.
PCSrc : mux
branch 명령어에서 PC값이 어떻게 변경될지를 결정하는 multiplexer로 beq 명령어에서는 조건이 맞으면 분기하도록 pc값을 변경합니다.
MemtoReg :mux
load 명령어에서는 데이터 메모리에서 읽은 값을 레지스터에 쓸지, 아니면 ALU 결과값을 레지스터에 쓸지를 결정하는 mux 신호입니다.
JUMP : mux
jump 명령어에서는 pc가 어떻게 변경될지를 결정하는 mux입니다. j 명령어에서 pc를 새로운 주소로 서정할 때 사용됩니다.
- enable:
- RegWrite
- MemRead
- MemWrite
- mux:
- RegDst
- ALUSrc
- PCSrc
- MemtoReg
- Jump
'IT 프로그래밍 > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 파이프라인 및 제어신호 (0) | 2024.12.18 |
---|---|
[컴퓨터구조] (0) | 2024.12.18 |
[컴퓨터구조] processor1 (0) | 2024.12.17 |
[컴퓨터구조] Dapapath (1) | 2024.12.11 |
[컴퓨터구조] CPU 구조 (0) | 2024.12.11 |