4장. 생능_컴퓨터구조론_연습문제

728x90

4.1 : 1 XXXX 000

 풀이) 그림 4-2의 제어 기억장치의 용량이 128단어에서 256단어(2^8=256)로 확장되었기 때문에 기존 7비트에서 8비트로 확장되어 표현되어야 한다. 4-2그림을 참고할 때, 실행 사이클 루틴은 제어 기억장치의 절반 후반부에서 시작되기 때문에 사상 함수의 첫 비트는 1이 된다. 각 실행 사이클 루틴이 최대 8(2^3=8)의 마이크로 연산들로 구성하기 위해서 사상함수 마지막 3비트를 000으로 두어야 한다. op코드는 별 다른 말이 없었으므로 그대로 4비트로 두고 풀었다. op코드를 XXXX로 받아서 사상함수를 표현할 수 있다. 이를 종합하여 그림 4-3의 사상함수로 표현하게 되면 (): 1 XXXX 000이 된다,

4.2 : 0 XXXX 00

풀이) 제어 기억장치 전체 용량을 128단어(2^7 = 128)로 두었기 때문에 7비트로 표현해야 하며 실행 사이클 루틴들이 처음 절반 부분부터 저장된다면 실행 사이클 루틴의 시작 주소는 0번지가 되기 때문에 사상함수의 첫 비트는 0이 된다, 각 루틴이 최대 4개의 마이크로 명령어들로 구성되기 때문에 사상함수 마지막 두 비트는 00으로 두어야 한다, op코드는 여전히 4비트이므로 XXXX로 받아서 사상함수를 표현할 수 있다. 이를 종함하여 그림 4-3의 사상함수로 표현하게 되면 0 XXXX 00이 된다.

4.3

(1) : 1 XXXXX 000

풀이) 명령어 실행 사이클 루틴들을 제어 기억장치의 절반 하반부에 저장하기 때문에 사상함수의 첫 비트는 1 된다. 연산코드는 5비트로 XXXXX 로 표현할 수 있고, 각 루틴이 최대 8개의 마이크로 명령어들로 구성될 수 있도록 하기 위해서는 사상함수 마지막 3비트를 000으로 두어야 한다. 따라서 (1)의 명령어 해독을 위한 사상함수는 1 XXXXX 000 이 된다.

(2) : 512 Word(단어)

풀이) 제어 기억장치 상반부에는 공통루틴을, 하반부에는 실행 사이클 루틴을 저장하면 (1)9비트로 표현되었던 것을 참고할 때, 제어 기억장치의 전체 용량은 2^9 = 512 가 되어야 한다.

4.4 : 아래의 표와 같다.

풀이) p.217 마지막 단락을 보게 되면, 이 루틴들의 마지막 마이크로명령어에서는 모두

JUMP FETCH (인출 사이클 루틴으로 점프)되도록 지정되어 있다. , 각각의 실행 사이클 루틴의 수행이 종료된 다음에는 인출 사이클부터 다시 시작되도록 하고 있다. 따라서 간접사이클 루틴을 호출하는 경우를 제외하고는 각 실행 사이클 루틴의 마지막 마이크로명령어의 ADF(다음 주소)에는 모두 0번지를 넣어두었다.

명령어 NOP

주소 마이크로 연산 조건필드 분기필드 ADF
1 0000 00 (64) 000 001 00 00 0 0000 00 (0)

풀이) 실행 사이클 루틴의 마지막 마이크로명령어는 JUMP FETCH이므로 ADF0번지.

 

명령어 LOAD(I) : 간접 사이클 루틴 호출 시.

1 0001 00 (68) 000 000 01 01 0 0001 00 (4)

풀이) 일반적으로 간접 사이클 루틴은 인출 사이클 루틴 다음 위치인 4번지부터 저장되기 때문에 ADF0 0001 00 (=4번지)을 넣었다.

 

명령어 LOAD (기존 LOAD 명령어 사이클 진행 시)

주소 마이크로 연산 조건필드 분기필드 ADF
1 0001 01 010 000 00 00 1 0001 10
1 0001 10 100 000 00 00 1 0001 11
1 0001 11 101 000 00 00 0 0000 00 (0)

풀이) 실행 사이클 루틴의 마지막 마이크로명령어는 JUMP FETCH이므로 ADF0번지.

 

명령어 STORE(I) : 간접 사이클 루틴 호출 시.

1 0010 00 (72) 000 000 01 01 0 0001 00 (4)

풀이) 명령어 LOAD(I) 에서와 마찬가지로 간접 사이클 루틴은 인출 사이클 루틴 다음 위치인 4번지부터 저장된다. ADF4번지를 넣어두었다.

 

명령어 STORE (기존 STORE 명령어 사이클 진행 시)

1 0010 01 010 000 00 00 1 0010 10
1 0010 10 000 010 00 00 1 0010 11
1 0010 11 111 000 00 00 0 0000 00 (0)

풀이) 실행 사이클 루틴의 마지막 마이크로명령어는 JUMP FETCH이므로 ADF0번지.

 

명령어 ADD

1 0011 00 (76) 010 000 00 00 1 0011 01
1 0011 01 100 000 00 00 1 0011 10
1 0011 10 011 000 00 00 0 0000 00 (0)

풀이) 실행 사이클 루틴의 마지막 마이크로명령어는 JUMP FETCH이므로 ADF0번지.

 

명령어 SUB

1 0100 00 (80) 010 000 00 00 1 0100 01
1 0100 01 100 000 00 00 1 0100 10
1 0100 10 000 110 00 00 0 0000 00 (0)

풀이) 실행 사이클 루틴의 마지막 마이크로명령어는 JUMP FETCH이므로 ADF0번지.

명령어 JUMP

1 0101 00 (84) 000 111 00 00 0 0000 00 (0)

풀이) 실행 사이클 루틴의 마지막 마이크로명령어는 JUMP FETCH이므로 ADF0번지.

 

4.5 : 사진과 같이 각각의 연산필드에 [3X8] 해독기와 [4X16] 해독기를 활용하면 된다.

 

4.7  : 9비트를 4비트와 5비트의 연산코드 2개로 나눈 후, 사진과 같이 해독기를 사용하여

                                46개의 마이크로 연산 가능하도록 만들어주면 된다.

4.8

: 수직적 마이크로프로그래밍은 마이크로명령어의 연산 필드에 적은 수의 코드화된 제어신호들만 저장하여 필요한 신호 수 만큼 해독기를 활용하는 방식이다. 장점은 마이크로 명령어의 길이를 최소화할 수 있어서 제어 기억장치 용량이 감소된다는 점이고, 단점은 별도로 해독 동작을 수행해야 하기 때문에 지연 시간이 발생한다는 것이다.

 반면, 수평적 마이크로프로그래밍은 애초에 연산 필드에 필요한 제어신호 만큼의 비트들을 포함시키기 때문에 하드웨어가 간단하고 해독에 따른 지연 시간이 없다는 장점이 있지만, 수직적 프로그래밍에 비해 마이크로 명령어의 비트 수가 길기 때문에 제어 기억장치의 용량이 증가한다는 단점이 있다.

4.9

(1) : 3비트

 풀이) 문제에서 요구하고 있는 주소 선택 필드조건필드에 해당한다. 분기를 결정하는 플래그가 8개라는 것은 (2^3 = 8) 조건필드의 비트가 3비트로 구성되어 있다는 것을 의미한다. 따라서 정답은 3비트이다.

(2) : 9비트

 풀이) 이 문제에서 제어 기억장치의 폭은 26비트이다. , 마이크로 명령어 형식의 총 길이가 26비트인 것이다. 여기서 14비트는 연산필드(op코드)로 사용되며 주소 선택 필드(=조건필드)(1)을 참고할 때, 3비트 필요할 것이다. 문제에서 분기 필드는 따로 필요하지 않다고 하였으므로 이 마이크로명령어 형식에서 주소(ADF)필드는 9비트로 구성될 것이다. (26-14-3 = 9)

(3) : (2^9) X 26 (비트)

 풀이) 제어 기억장치의 최대 용량은 단어 수 (2^9)에 한 단어의 길이 (26 비트)를 곱한 값으로 알 수 있다. 따라서 (2^9) X 26 (비트) 이다.

728x90