오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 5. Single Cycle 제어부 본문
Control 제어부
0:09 / 1:09
주황색으로 되어있는 신호들이 우리가 필요한 Control 신호들이다.
- 이 기능들을 하나로 모아놓고, 들어온 Instruction 에 따라 필요한 기능들만 내보내도록 만든 회로가 그다음 사진이다.
이 Control 은 Instrction의 가장 왼쪽 6 bit 즉, OP코드를 분석하여 필요한 제어 신호들을 내보낸다.
- 그 밑에 ALU Control이라는 4-bit 짜리 제어 장치도 따로 있는데, 이거에 대한 입력은 2bit이다.
2bit라도, 경우의 수는 3개만 있다 → Sw Lw / BEQ / 그 외 산술 연산
- Sw Lw 일 때 → ALU는 주소 계산하는 역할 (덧셈 필요)
- BEQ 일 때 → ALU는 브랜치 여부를 판단 ( 뺄셈 필요 > Rs - Rt )
- 나머지 일 때는 → OP코드 외 그 뒤 Function Instruction (오른쪽 15bit) 를 보고 어떤 연산을 할지 정함.
R format
RegDst ( Register Destination ) - Write Register 를 위한 주소가 rt에서 오느냐 rd에서 오느냐 ( 0,1 로 나뉨)
RegWrite ( Register Write ) - 0일 땐 아무 일도 없고, 1일 때만 Write Register , data 를 가지고 수행한다.
ALU Control
ALU Control에 대한 연산은 OP Field(=Code)보다 Function Field가 더 중요하다.
위 사진에 나와있듯이 OP Field는 모두 같은데 Function Field 에 따라서 연산이 달라지는 걸 볼 수 있다.
사실 그 Function Field에서는 뒤에 4개만 보면 된다.
- ALU OP = 00 일 때 : Lw or SW 이므로 (Function field 상관 X) , ALU가 할 연산은 add = 0010
- ALU OP = 01 일 때 : BEQ 이므로 (Function field 상관 X), ALU가 할 연산은 branch equal 판단
= subtract = 0110 - ALU OP = 10 일 때 : 그 외 연산을 하므로 Function field에 따라 작업을 한다. = R format
(하나하나 적기 번거로우니 사진으로 보자)
ALU OP = ALU Control의 입력
Function Field = ALU Control 의 추가 입력
ALU operation = ALU Control의 출력
add (R-Format) 를 한다고 가정해 보자
- 연산의 결과는 Rd로 가기 때문에 RegDST = 1
- ALU가 상수가 아니라 Register 값을 읽어야 하므로 ALUScr = 0
- 연산 결과가 메모리를 통과하고 Register로 가야 하기 때문에 Memto-Reg = 0
- Write 하기 때문에 RegWrite 1
- Memory 에 대해서는 읽고 쓰는 게 없기 때문에 0
- BEQ처럼 Branch 명령어가 아니기 때문에 Branch 0
- R-Type 연산이기 때문에 10
이 진리표를 다루는 법은 다양함. 논설에서 배웠음.
++ ADD를 여러 개 쓰고 Memory 도 Instruction,Data 나누는 이유는??
→ 한 CLK ( Single Clock Cycle ) 에 다 끝내기 위해서 ( 각자 해야 하는 덧셈이 다 다르기 때문)
++CLK 주기는 The Longest Path에 맞춘다.
→ 이럴 경우에는 많이 복잡한 걸 만들면 효율성이 떨어져 낭비가 심해진다
+ 일찍 끝나는 애들은 노는 시간이 길어진다. = 긴 주기동안 일하지 않는 놈들이 많다. = 낭비
→ 해결법 : Multiple CLK Cycle
출처 : 한동대 SW중심대학
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 7. (Multiple Cycle) 명령어별 Multiple Cycle 실행 (0) | 2023.07.05 |
---|---|
[ 컴퓨터 구조 ] 6. (Multiple Cycle) Multiple Clock Cycle (0) | 2023.07.04 |
[ 컴퓨터 구조 ] 4. Datapath (3) - Instruction Datapath (0) | 2023.06.30 |
[ 컴퓨터 구조 ] 3. Datapath (2) - Simple Datapath (0) | 2023.06.28 |
[ 컴퓨터 구조 ] 2. Datapath (1) (0) | 2023.06.28 |