본문 바로가기
🏫CS/컴퓨터구조

[컴구] 프로세서 - 1

by meteorfish 2023. 11. 16.
728x90

MIPS의 Type

명령어 실행

  • Program Counter: instruction Memory에서 Instruction Fetch
  • Register Numbers: Register File, Read Registers에서 사용
  • Instruction Class에 따라 다음을 이용
    • ALU 사용
    • Load/Store을 통해 Data Memoty에 접근
    • PC상대주소법 사용

CPU의 전반적인 구조

여기서 충돌이 발생하는 지점에 MUX를 이용해 처리하면 된다.

MUX 처리 후

이곳에 컨트롤까지 추가하면 설계가 완성된다.

 

WithControl

 

# 기본적인 이론

[ 정보를 이진으로 Encode 하는법 ]

- Low Voltage = 0 / Higj Voltage = 1

- 1비트 당 하나의 wire

 

[ Combinational element ]

- 현재 주어진 입력 값에 따라 동작함

- 같은 input = 같은 output

- 예) MUX

 

[ State(sequential) element ]

- 상태를 저장

- 주로 clock과 사용

- 예) FF

 

Wire Control 이란?

clk의 posedge에 무조건 발생하는 것이 아니라 Wire Control이 1일때만 clk의 값을 업데이트함

 

Datapath

- CPU에서 Data와 Address들을 처리하는 애

 

Insctuction Fetch

기본적으로 PC의 주소를 통해 Instruction Memory에서 Instruction을 가져오는 방식이다.

 

야기서 MIPS의 타입 별로 살짝 바뀐다

 

Datapath for R-Type 

R-Type

rs, rt, rd의를 이용하여 명령어를 가져와 ALU로 연산을 수행한다.

그리고 수행된 result를 writeData에 저장하여 추후 store를 진행한다.

 

Load/Store Instruction

- Register operand를 읽고 16-bit offset으로 주소를 계산한다. (ALU + SignExtend)

- Load: 메모리 읽기 & 레지스터 업데이트

- Store: 메모리에 레지스터 값 저장

 

 

Datapath for Load/Store

 

예를 들어 lw $1, 100($5) 를 사용하자.

$5 + 100에서 데이터를 가져와 $1에 저장을 해야하는 상황.

 

Read Register1에 $5를 넣고, 100은 Sign Extend를 통해 32비트로 변환

ALU에서 $5와 100을 통해 100($5)주소를 Data Memory에 보낸다 (Address)

 

Data Memory에서 읽은 Read Data는 다시 Instruction Memory로 결과를 반환한다.

 

 

 반대로, sw $3, 108($5)의 예를 보자.

$3과 $5 모두 읽어야 하기에 Read Register1,2에 넣는다.

108은 lw와 똑같이 32비트로 Extend 시킨다.

읽어올 108($5)는 ALU를 통해 계간되어 Data Memory에 Addess로 들어가고

$3에 저장하기에 Write Data로 들어가서 저장된다.

 

 

Branch Instruction

- Register Operand들 읽고 값들 비교 (ALU) (뺄셈 및 Zero output 체크)

- Target Address 계산

    1. SighExtend  후 2-bit 만큼 shift Left

    2. PC + 4과 ADD

 

 

R-Type/Load/Store DataPath

지금까지의 로직을 하나로 합치자.

 

ALU Control

- ALU에서 어떤 연산을 할지 정해주는 코드

- 2bit ALUop는 opcode를 통해 ALU Control 생성

funct의 경우 lw, sw beq의 경우 연산이 정해져있어 없지만, R-type의 경우 여러 연산이 가능하므로 이를 구분 짓는다.

 

정리하자면,

ALUop = opcode를 통해 연산 파악

funct = 같은 ALUop에서의 연산 결정

ALUcontrol = funct에 따른 연산 의미

 

 

Main Control Unit

Control 신호는 Instruction으로 부터 생성된다.

 

 

- rs: 항상 읽기만

- rt: load를 제외하고 읽기만

 

Datapath with Control

728x90

'🏫CS > 컴퓨터구조' 카테고리의 다른 글

[컴구] 메모리 계층구조  (0) 2023.12.13
[컴구] 프로세서 - 2  (0) 2023.11.21
[컴구] Multiplication and Division  (0) 2023.10.21
[컴구] 컴퓨터 추상화와 기술  (0) 2023.10.21
[컴구] 연산자와 피연산자  (0) 2023.10.11