처리장치 - 제어단어의 이해와 마이크로 연산의 제어단어 변환
제어단어와 선택신호
제어단어
- 선택신호(제어변수)의 묶음
- 제어단어는 처리장치로부터 전달받은 상태비트를 참고하여 제어장치가 만들게 됨
선택신호(제어변수)
- 처리장치 내에서 수행되는 마이크로 연산을 선택하는 변수
- 처리장치의 버스, ALU, 시프터, 도착 레지스터 등을 제어
처리장치와 제어단어
아래와 같은 구조의 처리장치가 있다고 가정하자.
처리장치 블록도
레지스터 세트는 R1~R7의 7개의 레지스터로 구성되었다. 7개의 레지스터 출력과 외부기억장치로부터의 입력은 두 세트의 멀티플렉서가 선택하여 ALU의 입력으로 연결된다. ALU의 출력은 시프터를 통해 출력버스로 연결되어 도착 레지스터나 외부로 전송된다. 이러한 구조의 처리장치에는 모두 16개의 2진 제어변수가 있고(처리장치 구조에 따라 제어변수의 개수가 바뀐다) 이것이 묶여 하나의 제어단어를 구성한다. 16비트 제어단어를 구성하는 각 필드는 다음과 같다.
필드 | 설명 | 비트 |
A | ALU로 입력되는 A버스 선택 = 출발 레지스터 선택 | 3비트 |
B | ALU로 입력되는 B버스 선택 = 출발 레지스터 선택 | 3비트 |
D | 도착 레지스터 선택 | 3비트 |
F | ALU의 연산 선택 | 4비트 |
H | 시프터의 연산 선택 | 3비트 |
이렇게 16비트로 구성된 제어단어를 처리장치의 각 구성요소에 선택신호로 보내면 해당 마이크로 연산이 수행된다. 다음 표는 처리장치의 제어단어 내역으로 제어변수에 의해 수행되는 기능을 나타낸다.
2진 코드 | A | B | D | F | H | |
Cin=0 | Cin=1 | |||||
000 | 외부입력 | 외부입력 | 없음 | F=A | F=A+1 | 시프트 없음 |
001 | R1 | R1 | R1 | F=A+B | F=A+B+1 | SHR |
010 | R2 | R2 | R2 | F=A+B─ | F=A-B | SHL |
011 | R3 | R3 | R3 | F=A-1 | F=A | bus=0 |
100 | R4 | R4 | R4 | F=A∧B | - | - |
101 | R5 | R5 | R5 | F=A∨B | - | ROR |
110 | R6 | R6 | R6 | F=A⊕B | - | ROL |
111 | R7 | R7 | R7 | F=A─ | - | - |
※ 참고
- Cin : 캐리 여부
- ㅡ : 부정(NOT)
- ∧ : 논리곱(AND)
- ∨ : 논리합(OR)
- SHR : Shift right
- SHL : Shift left
- bus=0 : 모든 출력비트에 0을 전송
- ROR : Rotate right
- ROL : Rotate left
- F=A : F=A 연산을 실행할 시점의 Cin값을 알아야 000 또는 011을 선택할 수 있다.
마이크로 연산을 제어단어로 변환하기
R1 ← R2 - R3
R2값에서 R3를 빼서 R1에 적재하는 감산 마이크로 연산이다. 이 문장을 위한 제어단어의 각 필드의 내용과 변환 결과는 다음과 같다.
필드 | 내용 | 기호 |
2진 코드 |
A | ALU의 A버스 입력으로 R2의 내용을 보낸다. | R2 | 010 |
B | ALU의 B버스 입력으로 R3의 내용을 보낸다. | R3 | 011 |
D | 연산 결과를 도착 레지스터 R1으로 보낸다. | R1 | 001 |
F | ALU에서 감산연산(F=A-B)을 수행한다. | F=A-B | 0101 |
H | 시프터에서 연산을 수행하지 않는다. | 시프트 없음 | 000 |
2진 제어단어 : 010 011 001 0101 000
위 내용을 참고하여 아래 마이크로 연산을 2진 제어단어로 변환해보자. 제어단어의 A, B, D, F, H 필드 별로 기호로 표현한 뒤 2진 코드로 바꾸면 더 쉽게 변환할 수 있다.
- R1 ← R2 - R3
- R4 ← shr(R5 + R6)
- R7 ← R7 + 1
- R1 ← R2
- output ← R3
- R4 ← rol R4
- R5 ← 0
정답 ▼
번호 | 기호표시 | 2진 제어단어 | ||||||||
A | B | D | F | H | A | B | D | F | H | |
1 | R2 | R3 | R1 | F=A-B | - | 010 | 011 | 001 | 0101 | 000 |
2 | R5 | R6 | R4 | F=A+B | SHR | 101 | 110 | 100 | 0010 | 001 |
3 | R7 | - | R7 | F=A+1 | - | 111 | 000 | 111 | 0001 | 000 |
4 | R2 | - | R1 | F=A | - | 010 | 000 | 001 | 0000 | 000 |
5 | R3 | - | NONE | F=A | - | 011 | 000 | 000 | 0000 | 000 |
6 | R4 | - | R4 | F=A | ROL | 100 | 000 | 100 | 0000 | 110 |
7 | - | - | R5 | - | bus=0 | 000 | 000 | 101 | 0000 | 011 |
참고 서적
컴퓨터구조(김형근·손진곤, 한국방송통신대학교출판문화원)
'기타 정보 > 소프트웨어 공학' 카테고리의 다른 글
[자료구조] 스택 - 정리 및 연습문제 (0) | 2021.04.21 |
---|---|
[자료구조] 배열 - 정리 및 연습문제 (0) | 2021.04.21 |
[자료구조] 자료구조란 무엇인가? - 정리 및 연습문제 (0) | 2021.04.20 |
제어장치 - 제어장치의 구성과 명령어 수행 과정 (0) | 2021.04.20 |
프로그래밍 언어의 구문의 표현 - BNF, EBNF, 구분 도표 표현법 (0) | 2021.04.20 |
프로그래밍 언어의 요구사항과 설계 원칙 (0) | 2021.04.20 |
프로그래밍 언어의 평가 기준 (0) | 2021.04.20 |
리팩토링이란 무엇인가? (0) | 2019.12.27 |