본문 바로가기

컴퓨터 구조론( MIPS )

프로세서 4 - 데이터 패스 동작

728x90
반응형

 

 

 

안녕하세요. WH입니다. 

이번 글은 데이터 패스 동작과 관련된 글입니다.

앞의 내용을 알아야만 이번 글은 이해를 하실 수 있습니다,

앞의 내용이 기억나지 않으시면 반드시 아래 글을 참조하시길 바랍니다.

 

2022.02.09 - [컴퓨터 구조론( MIPS )] - 프로세서 1 - R-type 명령어 데이터 패스, 명령어 인출과정

 

프로세서 1 - R-type 명령어 데이터 패스, 명령어 인출과정

안녕하세요! WH입니다. 이번 글부터는 프로세서 입니다. 사실 모든 것을 알 필요는 없지만. 프로세스와 메모리 정도는 알아야 하지 않을까 싶습니다. 그럼 어셈은요? 밑 단에서 일하시는 분이라

developer-wh.tistory.com

2022.02.09 - [컴퓨터 구조론( MIPS )] - 프로세스 2- Load or Store 명령어, branch 명령어

 

프로세스 2- Load or Store 명령어, branch 명령어

안녕하세요. WH입니다. 이번 글은 lw, sw 그리고 beq 같은 분기 명령어의 데이터 패스에 대해 알아보겠습니다. Load or Store 명령어 데이터패스 일반적으로 사용하는 예시는 아래와 같죠? lw $t1, offset_va

developer-wh.tistory.com

2022.02.09 - [컴퓨터 구조론( MIPS )] - 프로세스 3 - ALU 제어와 주 제어 유닛 설계

 

프로세스 3 - ALU 제어와 주 제어 유닛 설계

안녕하세요, WH입니다. 프로세스 1과 프로세르 2를 통해 데이터 패스를 만들어 보았는데요, 반드시! 반드시! 그 내용을 알고 있어야 합니다! 왜냐고요? 이번 글이 끝난 뒤에, 다음번에 동작에 대해

developer-wh.tistory.com

 

R-type 명령어

위의 그림은 add $t1, $t2, $t3 와 같은 R-tye의 명령어의 데이터 패스에요. 순서대로 설명해볼게요

 

  1. 명령어를 가져오고 PC 값을 증가 시킴.

  2. 두 레지스터 $t2, $t3를 레지스터 파일로 부터 읽음. 이 단계에서 주 제어 유닛이 제어선의 값들을 계산.

  3. ALU는 레지스터 파일에서 읽어 들인 값들에 대해 연산, funct 필드인 비트 5:0을 사용하여 ALU 제어 신호를 만듦

  4. ALU의 결과 값이 레지스터 파일에 기록되는데, 목적지 레지스터 ($t1)는 명령어의 비트 15:11를 이용하여 선택.

  

이게 뭐하는 건가 싶겠지만 1 - 4번의 과정을 따라가며 빨간선을 따라가보시길 바랍니다. 위의 그림에서는 ALU 와 관련한 제어선만 빨간선으로 표시하였습니다만, 아래 제어 신호를 표시하니 해당 제어선이 언제 들어갈지 역시 파악해보시길 바랍니다.

 

lw 명령어

 위 그림은 lw $t1. offset($t2) 명령어를 실행시킬 때 데이터 패스 동작 방식입니다. 천천히 같이 살펴 볼까요?

  1. 명령어를 명령어 메모리에서 가져오고 PC값 증가

  2. 레지스터 ($t2) 값을 레지스터 파일로 부터 읽음

  3. ALU는 레지스터 파일에서 읽어 들인 값과 명령어 하위 16비트 (offset)를 부호확장한 값과의 합을 구함

  4. 이 합을 데이터 메모리 접근을 위한 주소로 사용

  5. 메모리 유닛에서 가져온 데이터를 레지스터 파일에 기록함. 목적지 레지스터 ($t1)는 20:16이 지정함

 

마찬 가지로 lw 명령어의 제어 신호입니다. 천천히 따라가면서 생각해보시길 바랍니다.

 

분기 명령어

beq $t1, $t2, offset 과 같은 분기 명령어의 데이터 패스입니다

 

  1.명령어를 명령어 메모리에서 가져오고 PC 값을 증가시킴

  2. 두 레지스터 $t1과 $t2를 레지스터 파일로 부터 읽음

  3. ALU는 레지스터 파일에서 읽어 들인 값들에 대해 뺄셈. 명령어의 하위 16 비트를 부호확장한 후 2 비트 왼쪽 자리 이동 값에다 PC+4 값을 더함. 결과 값이 목적지 주소임.

  4. 어떤 덧셈기의 결과를 PC에 저장할지 ALU의 Zero 출력을 이용하여 판단

 

여기까지가 단일 사이클 구현과 데이터 패스에 대해 알아보았습니다. 물론 점프 명령어 구현이나, 저장 명령어 구현 등과 같은 일이 있지만, 지금까지의 내용을 충분히 숙지하셨다면 어렵지 않게 만들어보실수 있을 겁니다. 중요한 점은 오늘날에는 단인 사이클 구현을 사용하지 않는다는 점입니다. 그렇지만 이론적으로 알고 계셔서 나쁠 것은 없다는 점 알려드리며, 이만 마무리 하겠습니다. 이상 WH였습니다

반응형

 

728x90
반응형