본문 바로가기

컴퓨터구조론

[컴퓨터구조론] 중앙처리장치 설계(2) - 연습문제

[문제1] ToyCOM의 구조에 대하여 빈칸을 채우거나 옳은 것을 선택해라.

(A) ToyCOM의 기억장치 용량은 64KB이다.

(B) PC(Program Counter)는 기억장치 주소를 나타내므로 16비트이다.

(C) ToyCOM의 명령어 길이는 16비트이고, 8개의 기억장소를 차지한다.

(D) IR(Instruction Register)은 16비트이다.

(E) SP(Stack Point)는 시스템 스택의 주소를 나타내므로 16비트이다.

(F) MBR(Memory Buffer Register)은 기억장치의 데이터 버스를 구동하므로 8비트이다.

(G) ToyCOM은 입출력 장치를 메모리 맵으로 연결하기 때문에 입력(input)과 출력(output) 명령어를 제공할 필요가 (없다, 있다).


[문제2] 상태 레지스터 안에 있는 SR.IR(인터럽트 요청 플래그)의 용도는?

① 인터럽트 요청이 발생하였음을 표시한다.

② 연산기의 연산 결과를 사용할 수 있음을 표시한다.

③ ToyCOM이 인터럽트 요청을 허가한다는 것을 표시한다.

④ ToyCOM이 인터럽트 요청을 허가하지 않는다는 것을 표시한다.


[문제3] 상태 레지스터 안에 있는 SR.IE(인터럽트 가능 플래그)의 용도는?

① 인터럽트 요청이 발생하였음을 표시한다.

② 연산기의 연산 결과를 사용할 수 있음을 표시한다.

③ ToyCOM이 인터럽트 요청을 허가한다는 것을 표시한다.

④ ToyCOM이 인터럽트 요청을 허가하지 않는다는 것을 표시한다.


[문제4] 레지스터 중에서 기억장치 주소를 저장하는 용도가 아닌 것은?

① PC

② MAR

③ SP

④ IR


[문제5] 명령어 형식에 대한 설명 중 옳은 것을 모두 선택해라.

① 프로세서는 한 가지 명령어 형식을 사용한다.

② 명령어 종류 별로 명령어 형식이 다를 수 있다.

③ 대부분의 프로세서가 사용하는 명령어 형식이 같다.

④ 명령어 형식의 길이는 일반적으로 기억장치 단어 수의 배수이다.


[문제6] 명령어 형식의 동작 코드(opcode) 필드 길이에 영향을 주는 요소는?

① 명령어의 수

② 레지스터의 수

③ 기억장치 용량

④ 주소 필드의 수


[문제7] ToyCOM의 명령어 형식에 대하여 질문에 답하라.

(A) 범용 레지스터를 지정하는데 필요한 비트 수는? 8비트

(B) 즉치 주소지정방식으로 표현할 수 있는 정수의 범위는? 0~255

(C) 상대 주소지정방식에서 분기할 수 있는 주소의 범위는? PC를 기준으로 +-1KB까지


[문제8] ToyCOM의 데이터 전달 명령어에 사용된 주소지정방식이 아닌 것은?

① 즉치 주소지정방식

② 직접 주소지정방식

③ 레지스터 주소지정방식

④ 레지스터 간접 주소지정방식


[문제9] ToyCOM 명령어 형식 중에서 명령어 형식 3의 동작 코드(opcode)의 값이 한 가지로 고정되어 있다면, 부동작 코드 필드의 값을 다르게 부여하여 몇 개의 명령어를 만들 수 있는가? 4개


[문제10] 다음 레지스터 전송 언어가 나타내는 동자에 대한 ToyCOM의 명령어와 명령어 코드를 16진수로 적어라. 만일 해당하는 명령어가 없다면, 없다고 표시하라.

(A) R5 <- #45h                        00001_011_00101101

(B) R4 <- R7                           00010_010_111_001_00

(C) Mem(R7:R6) <- R5               00010_110_101_000_01

(D) R1 <- R2 + Mem(500)          없다


[문제11] 다음 데이터 처리 명령어에 대한 명령어 코드를 구하라

(A) INC    R2                           00100_010_000_000_00

(B) NOT   R4                           00100_100_000_000_11

(C) SUB    R0, R0, R2                 00101_000_000_010_10

(D) XOR   R1, R6, R7                 00110_001_110_111_10


[문제12] 레지스터의 값이 다음과 같다. 명령어 코드에 대한 데이터 처리 명령어를 구하고, 해당 명령어를 실행한 후 변경되는 레지스터의 값을 구하라. 단 연속적으로 실행되는 것이 아니다. (저도 못풀겠습니다.....)


R0 = 2Fh    R1 = A8h    R2 = 23h    R3 = 80h

R4 = 9Bh    R5 = 0Fh    R6 = 54h    R7 = 39h


(A) 명령어 코드 : 333Eh    11001_100111110   BRA offset -62

(B) 명령어 코드 : 2202h    10001_000000010   BRNZ offset 2

(C) 명령어 코드 : 2101h    10000_100000001   BR offset -1

(D) 명령어 코드 : 3194h    11000_110010100   BRV offset -148    


[문제13] 레지스터의 값이 3번 문제와 같을 때, CMP R2, R6를 실행한 후 상태 레지스터의 값을 구하라.

(A) SR.Z    0

(B) SR.S    1

(C) SR.C    0

(D) SR.V    0


[문제14] 다음 중 CLI(Clear Interrupt flag)명령어를 사용해야 할 때는?

① 임계 영역에 들어갈 때

② 서브루틴을 호출하기 전에

③ 인터럽트 서비스 루틴을 마칠 때

④ 자리올림수 플래그를 0으로 만들고자 할 때


[문제15] 조건 분기 명령어 중에 명령어 코드가 같은 것의 번호를 적어라.

① BRC

② BRAE

③ BRBE

④ BRGE


[문제16] 상태 레지스터의 값이 다음과 같다. 조건 분기 명령어가 기억장치 [2101:2100h]에 저장되어 있다. 조건 분기 명령어에 대한 명령어 코드를 구하고, 실행된 후 PC의  값을 구하라. 분기 명령어를 실행할 때 PC의 값은 2102h이다.


SR.Z = 0    SR.S = 1    SR.C = 1    SR.V = 1


(A) BRC + 20h    10110_00000010100    2122h

(B) BRAE - 20h    10110_10000010100    20E2h

(C) BRLT + 10h    11110_00000001010    2112h

(D) BRGT - 10h    11011_10000001010    2102h


[문제17] ToyCOM의 명령어 집합에서 스택 포인터의 변화가 가장 큰 명령어는?

① PUSH Rs

② CALL target

③ RET

④ RETI


[문제18] ToyCOM의 명령어 집합에서 명령어 코드가 0000h인 명령어는?

① INT

② LD

③ NOP

④ HALT


[문제19] ToyCOM의 명령어 사이클 중 인출 단계에서 PC의 값은 어떻게 변하는가?

① 1 감소한다

② 1 증가한다

③ 2 감소한다

④ 2 증가한다


[문제20] ToyCOM의 명령어 사이클 중 실행 단계는 몇 개의 클럭 사이클을 소모하는가?

① 2개

② 4개

③ 6개

④ 명령어마다 다르다.


[문제21] ToyCOM의 명령어 사이클에서 인터럽트 단계가 끝난 후 다음 단계는?

① 인출 단계

② 실행 단계

③ 정지 단계

④ 인터럽트 단계


[문제22] ToyCOM의 16비트 레지스터인 IR를 두 개의 8비트 레지스터 IRH와 IRL로 분리해야 하는 이유는?

① 기억장치 주소가 8비트이기 때문에

② 상태 레지스터가 8비트이기 때문에

③ IR을 범용 레지스터 중 하나로 전달해야 하기 때문에

④ 기억장치의 데이터를 8비트 단위로 액세스하기 때문에


[문제23] ToyCOM의 16비트 레지스터인 프로그램 카운터(PC)를 두 개의 8비트 레지스터와 PCH와 PCL로 분리해야 하는 이유는?

① PC를 SP로 저장해야 하기 때문에

② PC를 스택에 저장해야 하기 때문에

③ 기억장치 주소가 8비트이기 때문에

④ 분기 목적지가 8비트의 상대 주소지정방식이기 때문에


[문제24] 명령어 인출 단계가 관여하지 않는 레지스터는?

① PC

② MAR

③ MBR

④ SP


[문제25] 실행할 때 클럭 사이클을 가장 많이 소모하는 ToyCOM 명령어는?

① BR

② LDI

③ CALL

④ PUSH


[문제26] ToyCOM에서 16비트 데이터를 기억장치에 저장하는 마이크로오퍼레이션을 올바르게 설명한 것은?

① MAR을 사용하지 않고 기억장치에 저장한다.

② MBR을 사용하지 않고 기억장치에 저장한다.

③ 16비트 데이터를 한 번에 기억장치에 저장한다.

④ 16비트 데이터를 두 번에 나누어 기억장치에 저장한다.


[문제27] 조건분기 명령어에 대한 마이크로오퍼레이션을 정의할 때 상태 레지스터의 출력을 어떻게 처리하는가?

① IR 레지스터의 값에 더하여 PC의 입력 값으로 사용한다.

② 상태 레지스터의 출력은 조건분기 명령어와 관련이 없다.

③ 분기 조건을 계산하기 위하여 별도의 클럭 사이클을 필요로 한다.

④ PC의 값을 변경할지 판단하는 조건으로 사용한다.


출처

제목: 한눈에 보이는 컴퓨터 구조

저자: 전중남

출판사: 생능출판