[보기]
a) 명령어 코드 decode
b) 명령어 코드 encode
c) 명령어 실행에 필요한 제어 신호들의 발생
d) 어셈블리어 코드 생성
e) while(1) {printf("나는 제어 유니 ㅌㅌㅌㅌㅌ");}
문제 2. Hardwired Contorl(하드와이어 제어)는 Microprogrammed Control(마이크로프로그램 제어)와는 다르게 하드웨어 변경 없이 컴퓨터 시스템 제어의 수정이 가능하다. (O / X)
📄 답지
[보기]
a) 명령어 코드 decode
b) 명령어 코드 encode
c) 명령어 실행에 필요한 제어 신호들의 발생
d) 어셈블리어 코드 생성
e) while(1) {printf("나는 제어 유니 ㅌㅌㅌㅌㅌ");}
- 정답 : a, c
- 제어유닛의 기능
- 명령어 코드 해독
- 명령어 실행에 필요한 제어 신호 발생
- 제어유닛의 기능
문제 2. Hardwired Contorl(하드와이어 제어)는 Microprogrammed Control(마이크로프로그램 제어)와는 다르게 하드웨어 변경 없이 컴퓨터 시스템 제어의 수정이 가능하다. (O / X)
- 정답 : X (하드와이어로 동작하는 제어 유닛은 하드웨어를 변경 해야 제어 유닛을 수정할 수 있다.)
(a)
명령어 레지스터(IR)로부터 들어오는 명령어의 연산 코드를 해독하여 해당 연산을 수행하기 위한 루틴의 시작주소를 결정함(b)
다음에 실행할 마이크로명령어의 주소(제어기억장치의 특정위치)를 저장하는 레지스터(c)
마이크로명령어들로 이루어진 마이크로프로그램을 저장하는 내부 기억장치(d)
제어 기억장치로부터 읽혀진 마이크로 명령어를 일시적으로 저장하는 레지스터(e)
마이크로프로그램에서 서브루틴이 호출되는 경우에, 현재의 CAR 내용을 일시적으로 저장하는 레지스터(f)
마이크로명령어의 실행 순서를 결정하는 회로들의 집합
[문제 2]
용량이 128단어인 제어 기억장치의 처음 절반 부분에 실행 사이클 루틴들을 저장합니다. 각 루틴을 최대 8개의 마이크로명령어로 구성될 수 있도록 하려면, 사상 함수는 다음 중 어느 것과 같아야 할까요? (기본문제4.4)
- 가. 0xxx000
- 나. 0xxxx00
- 다. 1xxxx00
- 라. 1xxx00
사상(mapping)함수란?
- 명령어의 연산코드를 이용하여 해당 사이클 루틴의 시작 주소를 찾는 기법
- input: 연산코드
- output: 루틴의 시작주소
[문제 3]
제어유니트 명령어 실행 사이클 루틴들을 제어 기억장치의 절반 하반부에 저장하려고 합니다. 각 루틴은 최대 8개의 마이크로명령어들로 구성될 수 있도록 하며, 연산코드는 5비트입니다. (연습문제4.3)
- 명령어 해독을 위한 사상함수를 제시해주세요
- 제어기억장치의 0번지부터 상반부에는 인출 사이클을 비롯한 공통 루틴들을 저장한다면, 제어 기억장치의 전체 용량은 몇 단어(word)가 되어야 할까요?
📄 답지
명령어 해독기(instruction decoder)
:
명령어 레지스터(IR)로부터 들어오는 명령어의 연산 코드를 해독하여 해당 연산을 수행하기 위한 루틴의 시작주소를 결정함제어 주소 레지스터(control address register, CAR)
:
다음에 실행할 마이크로명령어의 주소(제어기억장치의 특정위치)를 저장하는 레지스터제어 기억장치(control memory)
:
마이크로명령어들로 이루어진 마이크로프로그램을 저장하는 내부 기억장치제어 버퍼 레지스터(control buffer register, CBR)
:
제어 기억장치로부터 읽혀진 마이크로 명령어를 일시적으로 저장하는 레지스터서브루틴 레지스터(subroutine register, SBR)
:
마이크로프로그램에서 서브루틴이 호출되는 경우에, 현재의 CAR 내용을 일시적으로 저장하는 레지스터순서제어 모듈(sequencing module)
:
마이크로명령어의 실행 순서를 결정하는 회로들의 집합
[문제 2]
용량이 128단어인 제어 기억장치의 처음 절반 부분에 실행 사이클 루틴들을 저장합니다. 각 루틴을 최대 8개의 마이크로명령어로 구성될 수 있도록 하려면, 사상 함수는 다음 중 어느 것과 같아야 할까요?
- 답 : 가. 0xxx000
??????? : 총 128(=2^7)단어 이므로 7자리
0?????? : 처음 절반이므로 최상위 비트 0
0???000 : 각 루틴에 최대 8(=2^3)가지 이므로 000
0xxx000 : 나머지는 연산코드 자리
[문제 3]
제어유니트 명령어 실행 사이클 루틴들을 제어 기억장치의 절반 하반부에 저장하려고 합니다. 각 루틴은 최대 8개의 마이크로명령어들로 구성될 수 있도록 하며, 연산코드는 5비트입니다.
-
명령어 해독을 위한 사상함수를 제시해주세요
- 답 : 1xxxxx000
1~ : 하반부이므로 최상위 비트 1 1xxxxx~ : 연산코드 5비트 1xxxxx000 : 각 루틴에 최대 8(=2^3)가지
-
제어기억장치의 0번지부터 상반부에는 인출 사이클을 비롯한 공통 루틴들을 저장한다면, 제어 기억장치의 전체 용량은 몇 단어(word)가 되어야 할까요?
- 답: 512 워드
1xxxxx000 => 9자리, 2^9 = 512 => 공통 루틴 0~255 => 실행사이클 루틴 256~511
가. CAR <- CAR+1
나. CAR <- ADF
다. CAR <- SBR
라. CAR <- SBR+1
가. CAR <- CAR+1
나. CAR <- ADF
다. CAR <- SBR
라. CAR <- SBR+1
- 하나의 동작만 지정하고 싶을 때에는 나머지 연산필드의 값을 이진수
000
으로 지정한다. ( O / X ) - 동시에 실행되는 마이크로연산들은 하나의 연산 필드에 위치시켜야 한다. ( O / X )
- 분기 필드의 값이 JMP/CALL라면 앞의 조건 필드가
00
이더라도 조건을 만족하는 지 확인한 후 분기한다. ( O / X ) - 호출되는 마지막 마이크로명령어의 분기 필드에는 반드시 return을 뜻하는
10
이 들어가야한다. ( O / X )
📄 답지
가. CAR <- CAR+1
나. CAR <- ADF
다. CAR <- SBR
라. CAR <- SBR+1
정답 : 나
조건을 만족한 경우 호출 연산이 실행되고, 이 경우 마지막 주소필드(ADF)의 값이 분기될 목적지 마이크로명령어 주소가 된다. 즉, ADF의 값이 CAR로 적재된다.
가. CAR <- CAR+1
나. CAR <- ADF
다. CAR <- SBR
라. CAR <- SBR+1
정답 : 다
서브루틴 레지스터(SBR)은 마이크로프로그램에서 서브 루틴이 호출되는 경우에 현재의 CAR 내용을 일시적으로 저장하는 레지스터. SBR에 저장되어 있던 주소가 CAR에 다시 적재됨으로서 호출되기 전의 프로그램 실행 순서로 되돌아가게 된다.
- 하나의 동작만 지정하고 싶을 때에는 나머지 연산필드의 값을 이진수
000
으로 지정한다. ( O / X ) - 동시에 실행되는 마이크로연산들은 하나의 연산 필드에 위치시켜야 한다. ( O / X )
- 분기 필드의 값이 JMP/CALL라면 앞의 조건 필드가
00
이더라도 조건을 만족하는 지 확인한 후 분기한다. ( O / X ) - 호출되는 마지막 마이크로명령어의 분기 필드에는 반드시 return을 뜻하는
10
이 들어가야한다. ( O / X )
정답 : O, X, X, O
- O, 000은 None을 의미한다.
- X, 두 개의 마이크로연산을 동시에 실행시키고 싶다면 두 개의 연산필드를 사용해야 한다.
- X, JMP와 CALL은 앞의 조건 필드가
00
이라면 무조건 점프/호출이 수행된다.- O
->
📄 답지
- PCTAR: 인출 사이클의 첫번째로 PC의 내용을 MAR에 보내는 과정의 마이크로 명령어는 PCTAR이며 다음 마이크로 명령어가 실행됩니다.
- READ, INCPC: 두번째에서는 첫번째에서 읽혀진 명령어가 MBR로 적재되고 PC의 내용에 1을 증가시키는 과정이 일어납니다. 이를 마이크로 명령어로 바꾸면 READ, INCPC가 됩니다.
- BRTIR, 세번째에서 MBR에 저장된 명령어 코드가 IR로 이동하게 되는데 마이크로 명령어로 바꾸면 BRTIR입니다.
-> 간접 주소지정 방식을 사용하기 위해선 I비트가 1로 세트되어야 합니다.
- IRTAR, 2. READ, 3. BRTIR
-> 간접 사이클은 간접 주소지정 방식을 사용하고 있는 데이터의 실제 위치를 불러오기 위한 과정이고 이를 순서대로 마이크로 명령어로 바꾸면 IRTAR, READ, BRTIR이 됩니다.
두 개의 연산 필드가 각각 4비트씩으로 구성되어 있다.
가. 4개
나. 8개
다. 16개
라. 32개
두 개의 연산 필드가 각각 4비트씩으로 구성되어 있다.
단, 해독기는 두 개만 사용한다고 가정한다.
가. 8개
나. 16개
다. 32개
라. 64개
가) 마이크로 명령어 길이가 짧다
나) 마이크로 명령어 길이가 길다
다) 제어기억장치의 용량이 적게 필요하다
라) 제어기억장치의 용량이 비교적 많이 필요하다
마) 해독기 사용으로 지연이 발생한다
바) 제어 신호의 발생을 위한 추가적 하드웨어가 필요하지 않다.
사) 제어 신호의 수를 확장시키는 것이 용이하다.
1. 이 제어 기억장치의 폭(=단어 길이)는 26비트다.
2. 마이크로명령어 형식에서 14비트는 마이크로-연산을 가리키는 연산 필드로 사용된다.
3. 주소 선택 필드는 분기 조건을 규정하며,
4. 그 조건을 결정하는 플래그들은 8개이다.
5. 분기의 종류는 한 가지뿐이어서 분기 필드는 필요하지 않다고 가정한다.
(1) 주소 선택 필드는 몇 비트가 필요한가?
(2) 주소 필드(ADF)는 몇 비트로 구성될 수 있는가?
(3) 이 제어 기억장치의 최대 용량(단어 수 × 폭)을 구하라.
(1) 다음과 같은 조건일때, 실행되는 마이크로 연산으로 알맞은 것을 보기에서 고르세요.
보기
가) CAR <- 1XXXX00 <Mapping>
나) CAR <- ADF
다) CAR <- SBR <Return>
라) CAR <- CAR + 1
- BR I1 = 0
- BR I0 = 0
- C = 0
(2) 다음과 같은 조건일때, MUX1이 받아들일 입력으로 알맞은 것을 보기에서 고르세요.
보기
가) 0
나) 1
다) 2
라) 3
- BR I1 = 1
- BR I0 = 0
- C = x (고려하지 않음)
📄 답지
두 개의 연산 필드가 각각 4비트씩으로 구성되어 있다.
가. 4개
나. 8개
다. 16개
라. 32개
정답 : 나. 8개
각 비트의 값을 그대로 내려받기 때문에 4개씩 두 필드 = 8개의 신호가 발생한다.
두 개의 연산 필드가 각각 4비트씩으로 구성되어 있다.
단, 해독기는 두 개만 사용한다고 가정한다.
가. 8개
나. 16개
다. 32개
라. 64개
정답 : 다. 32개
비트 4개로 나타낼 수 있는 값의 경우의 수가 최대 24/sup>개이고, 이 같은 필드가 2개 있으므로
최대 24/sup> /* 2 = 32개의 신호가 발생할 수 있다.
가) 마이크로 명령어 길이가 짧다
나) 마이크로 명령어 길이가 길다
다) 제어기억장치의 용량이 적게 필요하다
라) 제어기억장치의 용량이 비교적 많이 필요하다
마) 해독기 사용으로 지연이 발생한다
바) 제어 신호의 발생을 위한 추가적 하드웨어가 필요하지 않다.
사) 제어 신호의 수를 확장시키는 것이 용이하다.
정답 : 가, 다, 마, 사
나, 라, 바 는 수평적 마이크로프로그래밍의 특징이다.
1. 이 제어 기억장치의 폭(=단어 길이)는 26비트다.
2. 마이크로명령어 형식에서 14비트는 마이크로-연산을 가리키는 연산 필드로 사용된다.
3. 주소 선택 필드는 분기 조건을 규정하며,
4. 그 조건을 결정하는 플래그들은 8개이다.
5. 분기의 종류는 한 가지뿐이어서 분기 필드는 필요하지 않다고 가정한다.
oooo oooo oooo oo bbb aaa aaa aaa
~~~~~~~~~~~~~~~~~ ~~~ ~~~~~~~~~~~
연산 필드 플래그 8개를 주소필드
표현할 비트 3개
(띄어쓰기는 시각적인 편의상 삽입하였으며 실제 구조와는 무관)
(1) 주소 선택 필드는 몇 비트가 필요한가?
정답 : 3비트
8개의 플래그는 23 3비트로 모두 표현 가능하다.
(2) 주소 필드(ADF)는 몇 비트로 구성될 수 있는가?
정답 : 9
26 - 14 - 3 = 9
폭 - 연산 필드 - 조건 필드 = 주소 필드
(3) 이 제어 기억장치의 최대 용량(단어 수 × 폭)을 구하라.
정답 : 29 * 26 비트
주소가 9개 비트로 표현되므로, 26비트 짜리 * 워드 29개 = 13312 비트이다.
= "26비트 폭(width)으로 512단어"
(1) 다음과 같은 조건일때, 실행되는 마이크로 연산으로 알맞은 것을 보기에서 고르세요.
보기
가) CAR <- 1XXXX00 <Mapping>
나) CAR <- ADF
다) CAR <- SBR <Return>
라) CAR <- CAR + 1
- BR I1 = 0
- BR I0 = 0
- C = 0
정답 : 라) CAR <- CAR + 1
표 4-5를 참고.
(2) 다음과 같은 조건일때, MUX1이 받아들일 입력으로 알맞은 것을 보기에서 고르세요.
보기
가) 0
나) 1
다) 2
라) 3
- BR I1 = 1
- BR I0 = 0
- C = x (고려하지 않음)
정답 : 다) 2
MUX2에서 플래그들과 조건 필드를 고려해서 조건을 출력 ->
주소 선택 회로에서 그것들과 C를 고려해서 셀렉트 신호와 적재 신호를 출력 ->
이에 따라 MUX1이 4개의 신호(0 ~ 3) 중 해당하는 신호의 내용을 CAR에 적재시킴
표 4-5를 참고.