일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c
- 도커 mysql
- C언어
- 데이터베이스
- 푸시푸시
- 데이트
- c++
- 도커 elk
- 도커 시작하기
- java
- 스트림셋이란?
- streamsets 강의
- 클라우드
- 백준
- nvidia docker
- mysql on docker
- elk stack
- python
- ansible install
- 앤서블 설치
- 정보처리기사
- 파이썬
- docker
- 도커
- 코딩
- 알고리즘
- mysql docker
- MySQL
- 자바
- 스트림셋
- Today
- Total
리그캣의 개발놀이터
컴퓨터 구조론 연습문제 4장 본문
컴퓨터 구조론 연습문제 4장
연습 문제
4.1 그림 4-2의 제어 기억장치의 용량을 256단어로 확장하고, 각 실행 사이클 루틴이 최대 8개의 마이크로-연산들로 구성될 수 있도록 하려면, 그림 4-3의 사상 함수는 어떻게 바뀌어야 하는가.
0 | 인출 사이클 루틴 |
. | 간접 사이클 루틴 |
. | 인터럽트 사이클 루틴 |
. | . . . . |
. | |
. | |
. | |
127 | |
128 | 실행 사이클 루틴 1 |
. | 실행 사이클 루틴 2 |
. | . . . . . |
. | |
. | |
. | |
. | |
255 |
그림[4-2] 제어 기억장치의 내부 구성을 256단어로 확장시
명령어 코드 :
XXXX | I | Operand |
사상함수 : 1XXXX000
128+8이 되어야 한다. 128은 2진법으로 10000000
8은 2진법으로 1000 임으로 사상함수는 1XXXX000이 되어야한다.
4.2 제어 기억장치의 전체 용량이 128단어이고, 실행 사이클 루틴들이 처음 절반 부분에 저장된다고 하자. 각 루틴이 최대 네 개씩의 마이크로 명령어들로 구성된다면, 그림 4-3의 사상함수는 어떻게 변경되어야 하는가?
0 | 실행 사이클 루틴 1 |
. | 실행 사이클 루틴 2 |
. | . . . . |
. | |
. | |
. | |
63 | |
64 |
|
. |
|
. | . . . . . |
. | |
. | |
. | |
. | |
128 |
실행 사이클 루틴의 주소가 0번부터 시작하기 때문에 초기의 주소는 0번지부터 67번지까지 저장된다 그러므로 사상함수는 1XXXXXXX이되어야 한다. |
4.4 [표 4-1], [표 4-2], [표 4-3]을 이용하여 그림 4-5의 마이크로명령어들을 2진 패턴으로 변환하라. 만약 필요하다면, [표 4-1]에 새로운 마이크로-연산을 추가하여 사용하라.
[표 4-1(a)]
코드 | 마이크로-연산 | 기호 |
000 | None | NOP |
001 | MAR←PC | PCTAR |
010 | MAR←IR(addr) | IRTAR |
011 | AC←AC+MAR | ADD |
100 | MBR←M[MAR] | READ |
101 | AC←MBR | BRTAC |
110 | IR←MBR | BRTIR |
111 | M[MAR]←MBR | WRITE |
[표 4-1(b)]
코드 | 마이크로-연산 | 기호 |
000 | None | NOP |
001 | PC←PC+1 | INCPC |
010 | MBR←AC | ACTBR |
011 | MBR←PC | PCTBR |
100 | PC←MBR | BRTPC |
101 | MAR←SP | SPTAR |
110 | AC←AC-MBR | SUB |
111 | PC←IR(addr) | IRTPC |
[표 4-2]
코드 | 조건 | 기호 | 설명 |
00 | 1 | U | 무조건 분기 |
01 | I 비트 | I | 간접 주소지정 |
10 | AC(S) | S | 누산기(AC)에 저장된 데이터부호 |
11 | AC=0 | Z | AC에 저장된 데이터 = 0 |
[표 4-4]
코드 | 조건 | 설명 |
00 | JMP | 만약 조건 = 1이면, CAR ← ADF 만약 조건 = 2이면, CAR ← CAR+1 |
01 | CALL | 만약 조건 = 1이면, CAR ← ADF,SBR ←CAR+1 만약 조건 = 0이면, CAR ← CAR+1 |
10 | RET | CAR ← SBR(서브루틴으로부터의 복귀) |
11 | MAP | CAR(1)←1,CAR(2-5)←IR(op),CAR(6,7)←0 |
그림 4-5
NOP: | INCPC | U | JMP | FETCH | ;PC ← PC1 |
| 001 | 00 | 00 | 주소 |
|
LOAD: | NOP | I | CALL | INDRT | I=1이면,간접사이클 루틴 호출 |
| 000 | 01 | 01 | 주소 |
|
| IRTAR | U | JMP | NEXT | MAR ← M[MAR] |
| 010 | 00 | 00 | 주소 |
|
| READ | U | JMP | NEXT | MBR ← AC |
| 100 | 00 | 00 | 주소 |
|
| BRTAC | U | JMP | FETCH | M[MAR] ← MBR |
| 010 | 00 | 00 | 주소 |
|
STORE: | NOP | I | CALL | INDRT | I=1이면, 간접사이클 루틴 호출 |
| 000 | 01 | 01 | 주소 |
|
| IRTAR | U | JMP | NEXT | MAR ← IR(addr) |
| 010 | 00 | 00 | 주소 |
|
| ACTBR | U | JMP | NEXT | MBR ← AC |
| 010 | 00 | 00 | 주소 |
|
| WRITE | U | JMP | FETCH | M[MAR] ← MBR |
| 111 | 00 | 00 | 주소 |
|
ADD: | IRTAR | U | JMP | NEXT | MAR ← IR(addr) |
| 010 | 00 | 00 | 주소 |
|
| READ | U | JMP | NEXT | MBR ← M[MAR] |
| 100 | 00 | 00 | 주소 |
|
| ADD | U | JMP | FETCH | AC ← AC + MBR |
| 011 | 00 | 00 | 주소 |
|
SUB: | IRTAR | U | JMP | NEXT | MAR ← IR(addr) |
| 010 | 00 | 00 | 주소 |
|
| READ | U | JMP | NEXT | MBR ← M[MAR] |
| 100 | 00 | 00 | 주소 |
|
| ADD | U | JMP | FETCH | AC ← AC - MBR |
| 011 | 00 | 00 | 주소 |
|
JUMP: | IRTPC | U | JMP | JFETCH | PC ← IR(addr) |
| 111 | 00 | 00 | 주소 |
|
'프로그래밍 기본 > 컴퓨터 구조론' 카테고리의 다른 글
process와 thread의 차이점 (0) | 2019.04.18 |
---|---|
컴퓨터 구조론 2장 연습문제 정답 (0) | 2018.01.21 |
컴퓨터 구조론 3장 연습문제 풀이 (0) | 2018.01.21 |
컴퓨터 구조론 2장 연습문제 풀이 (5) | 2018.01.21 |