YYYEJI

[MIPS] Register File Design 본문

Computer architectures

[MIPS] Register File Design

YEJI ⍢ 2022. 10. 31. 13:35
728x90

Register의 디자인을 하나하나 자세히 살펴보겠습니다.

 

간단하게 먼저 살펴보면 아래와 같습니다.

①  -  F.F(state element)에 값이 쓰여지기 위해 ①에서 값들이 대기중입니다.

  -  Clock이 1로 띄는 순간 F.F(state element)에 쓰입니다. 

  -  F.F(state element)에 저장된 값이 combinational logic을 지나 그대로 흘러갑니다.

  -  새로운 값들이 업데이트되기 위해 ①에서 대기합니다. 

 

 

실제로는 Insturction memory와 data memory가 따로 존재합니다.

그 이유는 single clock cycle에서

1 clock cycle에 instruction과 data를 한 번에 읽는 것이 불가능하기 때문입니다.

 

즉, instruction과 data를 1 clock에 읽기 위해서 intruction memory와 data memory를 분리합니다.

 

 

 

데이터를 읽고 쓰는 register 예제를 살펴보겠습니다.

Example 1)  add $12, $7, $8

$7 2
$8 3

① $7의 값을 읽는다.

② $8의 값을 읽는다.

③ ALU unit을 통해 값을 계산한다.

④ 값이 write data에 저장한다.

⑤ Eable의 값이 '1'이 되면 register에 값을 저장한다.

$12 5

 

이렇게 값이 읽고 쓰여집니다.

 

 

Q) Memory는 instruction memory와 data memory로 나눔으로써, 한 clock에 두 개의 데이터를 읽을 수 있게 되었습니다.

그러면 register file도 read/write를 한 clock에 하기 위해 두 개로 나눌까요?

 

A) 그렇지 않습니다.

Register file은 hardware를 두 개로 나누지 않아도 read/write를 한 번에 수행할 수 있습니다.

 

Q) 왜 그럴까요?

A) 그 이유는 register file 안에 모습을 살펴보면 알 수 있습니다.

 

 

Read

어떤 register의 값을 읽어야 할지 결정할 때는 멀티플렉서(multiplexer)를 사용합니다.

Multiplexer은 여러 아날로그 또는 디지털 입력 신호 중 하나를 선택하여 선택된 입력을 하나의 라인에 전달하는 장치입니다.

•  Mux 앞에 32개의 register 번호가 대기를 합니다.

•  그 중 특정 signal로 보내진 데이터만 read data로 내보냅니다.

이렇게 값을 읽을 register를 결정하면 ALU(Arithmatic logic unit)에 의해 instruction을 수행하고,

값을 저장할 register를 결정하게 됩니다.

 

 

Write

값이 저장될 register는 아래와 같이 결정됩니다.

Decoder를 통해 register을 결정하고,

write 즉, enable이 1이 되면 값이 저장될 결정된 register에 값이 저장됩니다.

•  Write는 read와 다르게 input이 필요합니다.

•  De-coder를 통해 enable된 특정 register 번호를 내보냅니다.

(특정 register 번호가 보내질 때 write signal도 같이 보냅니다.)

(하나의 번호에만 '1'-Enable, 나머지는 '0' - Disable)

•  Data는 모든 register에 공급이 됩니다.

•  Enable인 register는 clock이 뛰면 write를 수행하게 됩니다.

 

 

 

Read/write를 합치면 아래와 같습니다.

  이러한 구조를 가지고 있어서 hardware가 하나여도,

값을 한 clock에 read/write를 동시에 할 수 있었습니다.

  값을 읽고 저장하는 CPU의 디자인 입니다.

  어떤 instruction을 사용하는지에 따라 디자인이 달라집니다.

 

 

 

◡̈