-> 블로그 이전

[컴퓨터구조론] 2장 기본문제

2022. 1. 29. 15:32Solution`/컴퓨터구조론

[2.1]

산술 연산 및 논리 연산을 수행하는 CPU 구성 요소는 어느 것인가?

1. 스택

2. 제어 유니트

3 레지스터 세트

4. ALU

CPU 구성요소
- ALU : 산술논리연산 수행
- Register : CPU내에서 Data를 기억하는 Memory 장치
- Control Unit : 명령어 해독 / 그에 따른 제어신호 발생 / 각종 정보들의 전송 통로/방향 지정

 

 

[2.2]

다음 중에서 제어 유니트의 기능이 아닌 것은?

1. 명령어 해독

2. 정보의 일시 저장

3. 제어 신호의 발생

4. 각종 정보들의 전송 통로 및 방향 지정

(2) 정보를 일시적으로 저장하는 것은 MBR이다

 

 

[2.3]

다음 중에서 명령어 사이클에 속하는 부사이클(subcycle)이 아닌 것은?

1. 인출 사이클

2. 간접 사이클

3. 제어 사이클

4. 실행 사이클

명령어 사이클
- 인출 사이클
- 간접 사이클
- 실행 사이클
- 인터럽트 사이클

 

 

[2.4]

기억장치로부터 인출된 명령어 코드를 제어 유니트에 의해 해독되기 전에 일시적으로 저장하고 있는 레지스터는 어느 것인가?

1. PC

2. MAR

3. IR

4. AC

인출 사이클
t(0) : PC -> MAR
t(1) : M[MAR] -> MBR / PC + 1 -> PC
t(2) : MBR -> IR
-> 따라서 인출 사이클에서 인출된 명령어는 최종적으로 IR에 저장된다

 

 

[2.5]

클록 주파수가 2GHz 인 CPU에서 인출 사이클에 소요되는 시간은 얼마인가?

1. 0.5ns

2. 1.5ns

3. 2ns

4. 6ns

if 클록 주파수 = 1GHz -> 클록 주기 = 1ns
if 클록 주파수 = 2GHz -> 클록 주기 = 0.5ns
-> 인출 사이클 = 3개의 CPU 클록 주기만큼의 시간이 걸린다
-> 0.5ns X 3 = 1.5ns

 

 

[2.6]

기억장치 주소가 byte 단위로 지정되고 명령어 길이는 32bit인 CPU에서는 인출 사이클 동안에 PC가 얼마만큼 증가되는가?

1. 1

2. 2

3. 4

4. 32

명령어 길이 = 32bit = 4byte
-> 인출 사이클동안 PC는 4만큼 증가한다

 

 

[2.7]

음 중에서 인터럽트 사이클 동안에 수행되는 동작이 아닌 것은?

1. 복귀할 주소를 스택에 저장한다

2. ISR의 시작 주소를 PC에 적재한다

3. 인터럽트 요구 신호를 검사한다

4. 인터럽트 플래그를 세트한다

인터럽트 사이클
(1) 인터럽트 요구 신호 검사
-> if 요구 신호 존재
(1) : 복귀할 주소를 stack에 저장
(2) : ISR의 시작주소를 PC에 저장

 

 

[2.8]

CPU가 어떤 장치에 대한 인터럽트를 처리하는 도중에 우선순위가 더 낮은 인터럽트 요구가 들어왔다면, 어떤 일이 발생하는가?

1. 원래의 주프로그램으로 복귀한다

2. 인터럽트 플래그를 리셋시킨다

3. 현재 인터럽트 서비스 루틴의 수행을 계속한다

4. 현재 인터럽트 서비스 루틴의 수행을 중단하고 새로운 인터럽트 요구를 처리한다

if 우선순위가 더 높은 인터럽트 들어옴
-> 현재 수행중인 인터럽트를 중단하고, 우선순위 더 높은 인터럽트 먼저 수행

if 우선순위가 더 낮은 인터럽트 들어옴
-> 그냥 현재 수행중인 인터럽트 계속 수행

 

 

[2.9]

간접 사이클 동안에는 어떤 동작이 수행되는가?

1. 기억장치로부터 데이터를 인출한다

2. 기억장치로부터 데이터의 주소를 인출한다

3. 기억장치로부터 명령어를 인출한다

4. 기억장치로부터 명령어의 주소를 인출한다

if 명령어의 operand가 Data의 주소의 주소를 가리키고 있다면 : 간접 사이클
-> 먼저 기억장치로부터 Data의 주소를 인출해야 한다

 

 

[2.10]

4-단계 명령어 파이프라인에서 첫 번째 명령어의 실행이 완료되는 데 걸리는 시간과 두 번째 명령어의 실행에 걸리는 시간을 올바로 짝지은 것은 어느 것인가?

1. 1 사이클 - 1 사이클

2. 4 사이클 - 1 사이클

3. 1 사이클 - 4 사이클

4. 4 사이클 - 4 사이클

첫 번째 명령어의 4-단계 명령어 파이프라인이니까 4사이클 후 명령어 실행 완료
두 번째 명령어부터는 1사이클만에 명령어 실행이 완료된다

 

 

[2.11]

4-단계 파이프라인에서 10개의 명령어를 실행하는 데는 모두 몇 사이클이 소요되는가?

1. 10

2. 13

3. 14

4. 40

첫 번째 명령어 = 4
두 번째 명령어 이후 = 1
>> T = k + (N - 1) = 4 + (10-1) = 13

 

 

[2.12]

4-way 슈퍼스칼라 프로세서에서는 매 사이클마다 몇 개씩의 명령어들이 실행될 수 있는가?

1. 1개

2. 2개

3. 4개

4. 8개

k-way 슈퍼스칼라 프로세서는 매 사이클마다 k개의 명령어를 인출해서 실행한다

 

 

[2.13]

'직전에 실행된 산술 명령어의 결과값이 음수이면 점프(jump)하라'는 명령어 (예 : JN addr)가 검사할 조건 비트는 어느 것인가?

1. Z 플래그

2. E 플래그

3. S 플래그

4. V 플래그

부호 플래그(S 플래그)는 이전 산술 결과가 음수면 0, 양수면 1로 설정된다

 

 

[2.14]

서브루틴을 호출하는 'CALL 명령어'가 실행되는 동안에 수행되는 동작이 아닌 것은?

1. 복귀할 주소를 스택에 저장한다

2. 호출할 주소를 PC에 적재한다

3. 스택 포인터 내용을 감소시킨다

4. 호출할 주소를 스택으로부터 인출한다

## CALL 명령어 ##
1. 복귀할 주소를 stack에 저장
2. 서브루틴의 주소를 PC에 저장
3. SP를 1 감소시킴으로써 항상 SP는 스택의 최상단을 가리키게 한다

## RET 명령어 ##
1. SP를 1 증가 -> 마지막 저장된 복귀주소를 가리키게 한다
2. 복귀할 주소를 스택에서 인출해서 PC에 저장

 

 

[2.15]

기억장치 주소를 나타내는 오퍼랜드 필드가 14bit라면, 이 명령어에 의해 직접 주소지정 될 수 있는 기억장치 용량은 얼마인가? 단, 단어의 길이는 8bit이다

1. 1KByte

2. 2KByte

3. 4KByte

4. 16KByte

단어의 길이 = 8bit = 1byte / operand field = 14bit

>> 기억장치 용량 = 2^(14) = 16384 
>> 16384 >> 16KByte

 

 

[2.16]

어떤 CPU의 내부에 32개의 레지스터들이 있다면, 명령어 형식에서 레지스터 번호를 가리키는 필드는 몇 비트로 구성되어야 하는가?

1. 4비트

2. 5비트

3. 6비트

4. 32비트

5비트가 있어야 2^(5) = 32개의 레지스터를 가리킬 수 있다

 

 

[2.17]

다음 중에서 3-주소 명령어의 장점에 해당하는 것은?

1. 명령어 길이가 짧다

2. 프로그램 길이가 짧아진다

3. 임시 저장 장소가 필요하다

4. 주소지정 할 수 있는 기억장치 주소 영역이 증가한다

 

 

[2.18]

간접 주소지정 방식을 사용하는 명령어는 실행 사이클 동안에 기억장치를 몇 번 엑세스하는가?

1. 1번

2. 2번

3. 3번

4. 엑세스하지 않는다

간접 주소지정 방식 : EA = (A)
>> 총 2번 기억장치에 액세스해야 한다
   -> 첫번째 : 기억장치로부터 실제 Data의 주소 인출
   -> 두번째 : 인출된 주소에서 실제 Data 인출

 

 

[2.19]

묵시적 주소지정 방식을 사용하는 산술 명령어는 주로 어떤 레지스터의 내용을 이용하여 연산을 수행하는가?

1. PC

2. MBR

3. AC

4. SP

 

 

[2.20]

기억장치 130번지에 상대 주소지정 방식을 사용하는 분기 명령어 'JR -15'가 저장되어 있다. 이 명령어 다음에는 몇 번지의 명령어가 실행되는가?

1. 15번지

2. 115번지

3. 116번지

4. 135번지

상대 주소지정 방식 : EA = A + (PC)
>> JR -15를 실행하면 PC의 내용은 1증가 : 131
>> -15로 인해서 131-15 = 116번지 명령어가 다음에 실행된다