[TIL] 2022.11.28. [Computer Architecture]
오늘의 TIL.
컴퓨터 구조의 단순한 구혀넹 대해 서술해보고자 한다.
RISC-V ALU는 제어 입력 4개를 사용하는 다음 4개의 조합을 정의하고 있다.
0000 -> AND
0001 -> OR
0010 -> ADD
0110 -> Subtract
ALU는 명령어 종류에 따라 이 네 가지 기능 중 하나를 수행한다.
ld, sd
-> 메모리 주소를 계산하기 위해 덧셈용으로 ALU를 사용.
R-형식
-> 명령어의 7비트 funct7 필드와 funct3 필드 값에 따라서 4가지 연산 중 하나를 수행하게 된다.
조건부 분기 beq
-> 두 피연산자에 뺄셈을 한 후 결과가 0인지 아닌지 테스트한다.
이 경우 0이라면 ZERO function에 의해 1이 된다.
(system의 ZF == 1인 것과 같은 원리로 보고 있다.)
명령어의 funct7 필드와 funct3 필드 그리고 ALUOP라 불리는 2비트 제어 필드를 입력으로 하는 조그만 제어 유닛을 만들어서 4비트 ALU 제어 신호를 발생시킬 수 있다. ALUOP는 ALU가 수행해야 할 연산을 표시한다.
" ALU control determines the function tha ALU performs "
ALU 제어 유닛의 출력은 4비트 신횐데 이 4비트 신호는 앞서 말한 4비트 조합 중 하나를 만들어 냄으로써 ALU 를 직접 제어한다.
위 그림에서 2비트 ALUOp 제어와 funct7 필드, funct3 필드를 사용하여 어떻게 ALU 제어 입력을 만드는지 보여 준다.
주 제어 유닛은 이것을 입력으로 받아서 ALU를 제엏하는 실제 신호를 만들어 내는 이런 다단계 디코딩은 많이 쓰이는 구현 기법이다.
다단계 제어를 사용하면 주 제어 유닛의 크기를 줄일 수 있다.
또한 여러 개의 작은 제어 유닛을 사용하면 제어 유닛의 속도를 증가시킬 수도 있다.
제어 유닛의 속도가 클럭 사이클 시간에 영향을 미치는 경우가 많으므로 이러한 최적화는 중요하다.
이 논리회로를 설계하는 단계로서 funct 필드와 ALUOp 비트의 관심 있는 조합에 대한 진리표를 만드는 것이 도움이 된다.
진리표는 이 입력 필드 값에 따라 4비트 ALU 제어 값이 어떻게 설정되는지를 보여주고 있다. 완전한 진리표는 매우 클 뿐만 아니라 많은 입력 값에 대해 ALU 제어 값이 전혀 상관없기 (don't care) 때문에, ALU 제어가 반드시 특정한 값을 가져야 하는 경우만을 표시하였다.
출력이 모두 0이나 don't care인 엔트리는 빼고 출력이 1이 되어야 하는 엔트리만을 진리표에 나타내는 이 방법을 이 장이 끝날 때까지 계속 사용된다.
※ 해당 게시물은 컴퓨터 구조 및 설계 (RISC-V)를 토대로 작성되었으며, 문제가 될 시 삭제하겠습니다. ※
'Today I Learned(TIL)' 카테고리의 다른 글
[TIL] 2022.11.30. (기록) (0) | 2022.11.30 |
---|---|
[TIL] 2022.11.29. [Computer Architecture] (0) | 2022.11.29 |
[TIL] 2022.11.27. [Single Datapath] (0) | 2022.11.27 |
[TIL] 2022.11.27. [Computer Architecture] (1) | 2022.11.27 |
[TIL] 2022.11.26. [Context switch] (0) | 2022.11.26 |