Design 8-Stage Pipelined Processor with Cache Memory 1 - Deeper Pipelining
Pipelining ID Stage
일반적인 MIPS architecture의 ID stage에서는,
register file에의 read/write 동작과 branch decision,
그리고 branch할 address 혹은
jump할 address의 계산과
control
signal을 만들어내는 동작을 하게 된다.
이를 위 그림과 같은 모습으로 pipelining하였으며
또한 EX stage에의 load를 좀 더 줄이기 위하여
ALU의 control signal generate를 ID 0 stage에서 initiating하여
ALU source data와 ALU control signal을
EX stage에 돌입하기 전에
모두 준비해 놓을 수 있도록 하였다.
EX stage에서 넘어온 동작들은 노란색 글씨로 표시하였다.
Branch address의 연산에는
32-bit Kogge-Stone adder를 사용하였는데,
ID 0 stage에서는 propagate, generate의 연산과
1, 2 stage까지를
수행하고 ID 1 stage에서 나머지 3, 4, 5 stage와
최종 결과값을 구하도록 하였다.
아래 그림에 기존 ID stage에서의 worst-case delay를 가지는 영역과
이를 pipelining한
모습을 표시하였다.
Pipelining EX Stage
MIPS architecture의
EX stage에서는
ALU control signal의
generate와 이에 따라 forward된 data를
포함하여
어떤 data를 operation의 source data로 사용할지 결정하는 동작과
모든 ALU operation을
수행하게 된다.
이를 아래와 같은 모습으로 3-stage
pipelining하였다.
ID stage에서 설명한 것과 같이,
EX stage에 걸리는 load가 너무 크므로
이를 최소화하여 clock constraint를 맞추기 위해
control signal의 generate와
source data decision은 EX stage에 돌입하기 전에 모두 연산을 완료하도록 하였다.
따라서
EX 0 stage에서 따로 data를 준비하는 과정은 필요하지
않고 연산이 곧바로 수행할 수 있게 된다.
Adder를 한 개만 넣었기 때문에,
set less than operation을 포함한 subtract 연산을 수행하기 위하여
EX 0 stage에는 adder의 부분이 포함되지 않고
2’s complement를 이용한 subtract 연산을 수행하기
위한
carry in의 decision과 역시 2’s complement를 이용한
subtract 혹은 NOR/NAND 등의 invert가 포함된 logical operation을 수행하기 위한
source data의 invert 동작이 먼저 수행된다.
EX stage에도 역시 Kogge-Stone adder를 사용하였는데,
EX 0 stage에서 XOR operation과 AND operation이 수행이 완료되므로
propagate와 generate는 준비가 된다.
따라서 EX 1 stage에서 바로 operation을 시작할 수 있으므로
1,2,3,4 stage를
연산한 후 EX 2 stage에서 5 stage와 sign flag를 포함한
나머지 결과값을 연산한다.
아래 그림에서
기존 EX stage의 delay chain과 이를 pipelining한 모습을 확인할 수 있다.
댓글
댓글 쓰기