본문 바로가기
학교 수업/컴퓨터구조

[컴퓨터구조] 연습문제 4장 레포트

by five-sun 2021. 12. 22.
728x90

연습문제 4장

 

2

다음 주소 지정 방식 중 속도가 가장 빠른 것은?

 

: 1: 즉치 주소 지정

풀이 : 0-단계 주소 지정 : 즉치 주소 지정, 묵시 주소 지정

1-단계 주소 지정 : 레지스터 직접 주소 지정, 직접 주소 지정

2-단계 주소 지정 : 레지스터 간접 주소 지정, 메모리 간접 주소 지정

변위 주소 지정, PC상대 주소 지정

(PPT 자료 참고)

 

3

다음 중 0-주소 명령어를 사용하는 컴퓨터 구조는?

 

: 2: 스택 컴퓨터

풀이 : 0-주소 명령어 컴퓨터 : 스택 컴퓨터

1-주소 명령어 컴퓨터 : 누산기 컴퓨터

2-주소 혹은 3-주소 명령어 컴퓨터 : 범용 레지스터 컴퓨터

(PPT 2쪽 참고)

 

7

다음 중 연산을 수행한 후에 입력 데이터가 모두 보존되는 방식은?

 

: 4: 3-주소 명령어 컴퓨터

풀이 : 3-주소 명령어는 연산대상 두 개와 연산결과를 저장할 수 있도록 구성되어 있다. 여러 개의 범용 레지스터를 가진 cpu에서 사용할 수 있다. 하나의 명령을 수행하기 위해 주기억장치에 4번이나 접근하므로 수행시간이 길어진다. 하지만, 전체 프로그램 실행 시 명령어 인출을 위한 주기억장치 접근 회수가 줄어들어 프로그램 실행 속도를 단축시킬 수 있다.

 

8

스택 컴퓨터에서 스택의 최상위 데이터는 (묵시)주소 지정 방식이다.

 

: 묵시

풀이 : 대부분의 연산은 스택의 최상위 또는 차상위 데이터를 사용하여 수행한다. 따라서 명령어는 스택의 최상위에 위치한 1~2개 데이터를 묵시적 피연산자로 사용할 수 있다. (교재 128쪽 참고)

 

12

대부분의 RISC 아키텍처에서 3-주소 명령어를 주로 사용하는 이유는 무엇인가?

 

: RISC 구조의 특징을 보면 단순 명령어를 사용하여 빨리 해독할 수 있고 데이터 경로가 간단하므로 실행에 필요한 사이클 시간이 짧아진다. CISC에 비해 명령어의 수가 늘긴 하지만 단순한 명령을 사용하여 평균 CPI와 사이클 시간을 낮추기 위해서 3-주소 명령어를 사용한다고 생각한다.

 

14

레지스터 직접 주소 지정 방식이 흔히 사용되는 이유는 무엇인가?

 

: 해당 방식은 높은 효율과 빠른 속도로 대부분의 아키텍처에서 사용된다.

풀이 : 레지스터 직접 주소 지정 방식은 데이터가 레지스터 파일 중의 한곳에 있고 데이터가 있는 레지스터의 주소를 명령어의 피연산자 필드에 명시하는 방식이다.

레지스터의 주소가 메모리 주소보다 짧아 접근속도가 빠르지만 많은 데이터를 취급할 때는 사용하기 어렵다는 단점도 존재한다.

 

15

데이터 1234₁₆를 빅 엔디언과 리틀 엔디언으로 표시하라.

 

: 빅 엔디언 = 1234/ 리틀 엔디언 = 3412

 

풀이 : 16진법의 데이터는 4비트로 구성되고 빅 엔디언은 최상위 바이트부터, 리틀 엔디언은 최하위 바이트부터 차례로 저장하는 방식이다.

 

추가 문제

본문과 동일한 가정하에서, y = ax^2 + b를 연산하고자 한다. 누산기 컴퓨터, 스택컴퓨터, 범용 레지스터 컴퓨터 각각의 연산에 대해, 명령어 프로그램(어셈블리 프로그램)을 작성하고, 전체 명령어 트래픽과 데이터 트래픽을 분석하시오.

 

Case 1 : 누산기 컴퓨터

명령어 의미
연산부호 피연산자
lda a acc < M[a]
mul x acc < M[a] * M[x]
mul x acc < M[a] * M[x]^2
add b acc < M[a] * M[x]^2 + M[b]
sta y M[y] < acc의 내용

명령어 트래픽 : 3byte * 5 = 15byte

데이터 트래픽 : 4byte * 5 = 20byte

총 메모리 트래픽 : 35byte

Case 2 : 스택컴퓨터

명령어 의미
연산부호 피연산자
push a tos : M[a]
push x tos : M[x], M[a]
push x tos : M[x], M[x], M[a]
mul
tos : M[x]^2, M[a]
mul
tos : M[a] * M[x]^2
push b tos : M[b], M[a] * M[x]^2
add
tos : M[a] * M[x]^2 + M[b]
pop y M[y] < tos의 내용

명령어 트래픽 : 3byte * 5 = 15byte / 1byte * 3 = 3byte / 18byte

데이터 트래픽 : 4byte * 5 = 20byte

총 메모리 트래픽 : 38byte

명령어 의미
연산부호 피연산자
load r1 a Reg[1] < M[a]
load r2 x Reg[2] < M[x]
load r3 b Reg[3] < M[b]
mul r4 r1 r2 Reg[4] < M[a] * M[x]
mul r5 r4 r2 Reg[5] < M[a] * M[x]^2
add r6 r5 r3 Reg[6] < M[a] * M[x]^2 + M[b]
store r6 y M[y] < r6의 내용

Case 3 : 범용 레지스터 컴퓨터

명령어 트래픽 : 4byte * 4 = 16byte / 2byte * 3 = 6byte / 22byte

데이터 트래픽 : 4byte * 4 = 16byte

총 메모리 트래픽 : 38byte

 
728x90