코딩스토리

Chapter 7. 데이터 경로 연습문제 본문

컴퓨터구조

Chapter 7. 데이터 경로 연습문제

kimtaehyun98 2020. 12. 7. 16:07

# 컴퓨터 아키텍처 (저자 우종정) 7장 연습문제입니다. 제가 공부하고 이해한 방식대로 풀었기 때문에 정확하진 않습니다. 제가 배운 부분만 풀었기 때문에 모든 문제를 풀진 않았습니다.

# 구글링을 통해 나오는 다른 답들과 다를 수 있습니다.. 저도 구글링 했다가 이해가 안돼서 직접 풀었습니다..

 

풀이

 

1. 답) 2번

메모리에 두번 접근하기 위해 데이터 메모리와 명령어 메모리로 분할하는 것은 단일 사이클 방식이다.

3번은 헷갈릴 수 있는데 쉽게 생각해보면 단일은 한 사이클 내에 모든 작업을 수행해야 하기 때문에 일반적으로는 다중 사이클보다 더 오래 걸린다.

 

 

2. 답) 3번

멀티플렉서(MUX)는 다수의 입력 단자 중 조건에 맞는 하나를 선택하고, 단일 출력하는 조합 회로이다.

즉 여러개의 입력이 동시에 들어와서 충돌이 생기는 것을 방지하려면 MUX를 이용해 입력을 하나로 만들어 주면 된다.

 

 

3. 답) 1번

프로그램 계수기 = PC 

PC는 다음 수행할 명령어의 주소를 일시적으로 저장하는 레지스터이다.

명령어를 인출하기 위해서는 PC에서 값을 받아와야 한다.

 

 

4. 답) 데이터 경로

데이터 경로의 정의이다.  

데이터 경로 : CPU가 명령어를 실행할 때 프로세서가 명령어의 정의에 따라 데이터를 경유시키는 경로

 

 

5. 답) 틀리다

다시 사용 -> 다중 사이클 방식

 

 

6. 답)

lw r3, r2, #1 은 r3 <- M[r2 + imm(#1)*2]라는 말과 같다. (이 부분만 잘 기억하면 쉽게 풀 수 있다.)

 

이 명령어를 정리해보면

rs = r2

rt = r3

imm = 1

 

① - rs의 주솟값, 즉 r2의 주솟값은 010이다.

② - rt의 주솟값, 즉 r3의 주솟값은 011이다.

③ - imm값, 즉 000001이다. (picoMips 명령어는 imm 필드값을 6bit 사용한다.)

④ - r3에 담겨있는 데이터, 즉 0000000000000001이다. (위치가 조금 애매하긴 한데 제가 생각하기엔 이게 맞는듯)

# 중요한 점은 ④이 ALU에 들어가는 것이 아니고 imm값이 ALU에 들어간다. 

# 이 데이터는 아래의 화살표를 따라 데이터 메모리로 간다.

⑤ - ALU에서 연산해서 나온 값, 즉 Reg[r2] + imm*2의 값인 0000000000000100₂이다.

# 이때 ⑤값을 메모리 주소 형태(Word)로 나타내면 16진수로 0004가 된다. 

# 즉 메모리의 0004 주소에 있는 데이터를 r3에 적재하면 된다.

⑥ - 데이터 메모리에 있는 데이터를 가져온다. 0004 주소에 있는 데이터는 0000000010000010₂이다.

⑦ - r2의 값은 변하지 않았다. 즉 0000000000000010₂이다.

⑧ - r3의 값은 데이터 메모리에서 가져온 ⑥의 값이 되어야 한다. 즉 0000000010000010₂이다.

 

(구글링 하면 뜨는 답안들과 완전히 다른 답이 나왔네요..)

 

 

7. 

(1) 답 : ALU에 Reg[r3]의 값이 아니라 0을 넣어주면 된다. 아래 그림처럼

# 제가 생각한 가장 간단한 방법은 이거지만 가장 애매한 문제네요 ㅎㅎ

 

(2) 답 : 직접 해보는 걸로.. 단일 사이클을 잘 이해했다면 할 수 있습니다.

 

 

8. 답)

 

sw r3, 1(r2) 는 r3 -> M[r2 + imm*2]와 같다.

 

이 명령어를 정리해보면

 

rt = r3

rs = r2

imm = 1

 

① - Reg[r2], 즉 0000000000000010 이다.

② - Reg[r3], 즉 0000000000000001 이다.

③ - ① 과 같다. (J 명령어가 아니기 때문에 PC의 값에 영향을 받지 않는다.)

④ - Reg[r3]값이 아닌 imm값이 들어가야 한다. 따라서 0000000000000001 이다.

⑤ - ALU에서 연산을 통해 얻은 값, 즉 r2 + imm*2 = 0000000000000100 이다

⑥ - ⑤과 같다. (이 번호들이 데이터 경로의 순서대로 써져있는 게 맞다면..)

⑦ - Reg[r3]의 값인 ②과 같다. (이 명령어는 메모리에 r3의 데이터를 저장해야 하므로)

 

 

9. 답) 

 

(그림을 그리긴 너무 귀찮고 생각만 해보면)

 

만약 문제에서 말한 2개의 공통 사이클이 명령어 인출 사이클과 명령어 해독*읽기 사이클이라면,

 

beq 명령어는 if ( a == b )  PC = PC + 2(명령어의 크기) + imm * 2 라고 표현할 수 있다.

 

이때 a == b를 계산하는 사이클 하나

나머지 부분 PC = PC + 2(명령어의 크기) + imm * 2를 계산하는 사이클 하나로 나눌 수 있다.

 

이 사이클을 데이터 경로로 표현해보면 답을 찾을 수 있지 않을까 싶다..

 

 

 

'컴퓨터구조' 카테고리의 다른 글

Chapter 9. 파이프라이닝 연습문제  (0) 2020.12.17
Chapter 9. 파이프라이닝  (0) 2020.12.17
Chapter 7. 데이터 경로  (2) 2020.12.06
Chapter 6. 연산장치  (0) 2020.12.05
Chapter 5. 데이터 표현  (0) 2020.12.03
Comments