-
CPU circuit - Basic대학/컴퓨터구조 2023. 6. 11. 21:08
CPU 내부 회로 구성과 데이터, 컨트롤 시그널이 어떻게 이동하는지 알아보자.
너무 복잡하기 때문에 이번엔 스탭별로 기능을 확장해가며
명령어별로 회로가 어떻게 동작하는지, 컨트롤 시그널이 어떻게 나오는지 알아보고,
다음에 파이프라인 기법이 적용된 회로를 살펴보자.
담백하게 기능을 간략화환 회로의 그림은 다음과 같다.
위 그림에서 PC, Instruction memory, Registers, Data memory 모두 레지스터이다.
레지스터는 Filp-flop 회로로 구현이 되어있기 때문에 CPU clock에 동기화되어 데이터를 내보낸다.
따라서 80000 주소의 명령어를 실행할 때 PC값은 80004로 업데이트되지만,
clock이 들어오기 전까진 80000 주소값을 내보내는 것이다.
모든 레지스터는 clock에 동기화 되는 만큼, 한 명령어는 한 clock에 처리되어야 한다.
그렇기에 회로가 너무 복잡해져서는 안된다.
Mips 아키텍쳐는 명령어가 다음과 같은 5단계에 거쳐 처리된다.
IF - ID - EXE - MEM - WB
이게 무엇인지는 다음에 자세히 알아보고, 지금은 각 단계에서 사용되는 회로를 자세히 살펴보자.
- Instruction Fetch (IF)
PC가 clock에 동기화 되어있기 때문에 PC값이 무한히 4씩 증가하지 않는 것이다.
- Instruction Decode, Execute (ID, EXE)
명령어에는 크게 아래와 같은 4종류로 분류할 수 있다.
- R-type [OP(6), R1(5), R2(5), W(5), Shift(5), Func(6)]
- Load [OP(6), Rs(5), Rt(5), Offset(16)]
- Branch-on-equal [OP(6), Rs(5), Rt(5), Offset(16)]
- Jump [OP(6), Address(26)]
각 종류에 따른 회로의 신호를 살펴보자.
* R-type
명령어에 따라 ALU operation 신호가 가서 ALU가 적절한 연산을 수행하고,
레지스터에 값을 써야 할 상황이 오면 RegWrite 시그널이 1로 들어가 값을 해당 레지스터에 쓰게 된다.
* Load
명령어에 따라 Rs 레지스터에 저장된 주소에 32bit로 extended된 offset이 더해져 데이터를 읽어올 주소를 알아낸다.
다른 유닛에서 그 주소에 있는 데이터를 읽어오면 RegWrite 시그널이 1로 들어가 값을 Rt 레지스터에 쓰게 된다.
* Branch-on-equal
Rs, Rt가 같아야 branch를 할 것이다.
하지만 같든, 같지 않든 일단 jump할 주소는 계산한다.
다음 명령어를 PC+4에서 가져올 지, 계산된 주소에서 가져올 지는 ALU 결과에 따라 달라진다.
* Jump
Jump의 경우에는 이쪽 회로를 쓰지 않는다.
정확히 말하면 Control 시그널에 의해 무시된다.
중요한 점은 어떠한 명령어가 오든 모든 회로에는 신호가 간다.
그렇기에 쓸모없는 정보가 반영되지 않게 하기위해 Control 시그널을 적절한 시점에 회로에 던져줘야 한다.
- Memory access, Write Back (MEM, WB)
* R-type
메모리 접근이 필요하지 않는 경우는 Data memory 관련 회로를 사용하지 않는다.
정확히 말하면 무시한다.
따라서 MemWrite, Read, MemtoReg 시그널을 적절히 가해 쓰레기값을 무시한다.
참고로 Immediate load의 경우에는 ALUSrc 시그널을 적절히 이용한다.
* Load
Load, Write의 경우에는 메모리 접근이 필수다.
따라서 MemWrite, Read, MemtoReg 시그널을 적절히 가해 값을 읽거나 쓴다.
* Branch-on-equal, Jump
Jump의 경우에는 이쪽 회로를 쓰지 않는다.
정확히 말하면 Control 시그널에 의해 무시된다.
마무리로 전체 회로를 살펴봄과 동시에 Control에 어떤 신호가 나오는지 살펴보자.
'대학 > 컴퓨터구조' 카테고리의 다른 글
ILP - Instruction Level Parallelism (0) 2023.06.12 Hazard (0) 2023.06.12 CPU circuit - Pipeline (0) 2023.06.11 Arithmetic for Computer (0) 2023.04.25 MIPS Instruction set (2) 2023.04.25