본문 바로가기

컴퓨터 구조론( MIPS )

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

728x90
반응형

안녕하세요! WH입니다.

이번 글부터는 프로세서 입니다.

사실 모든 것을 알 필요는 없지만. 프로세스와 메모리 정도는 알아야 하지 않을까 싶습니다.

그럼 어셈은요? 

밑 단에서 일하시는 분이라면 코드를 읽을 정도는 되야 겠지요.

 

프로세스 시작하겠습니다.

 

데이터가 어떤 패스로 흘러들어오는지 이것을 먼저 파악하는 것이 필요합니다. 가장 먼저 명령어 입니다.

 

명령어 인출 과정

 

1. PC 에는 현재 명령어의 주소가 들어 있습니다.

 

2. Read address로 그 값이 보내지고 ALU 로 값이 하나 보내집니다.

    2-1 ALU로 보내진 주소에 4가 더해집니다. 왜냐면 바이트 주소이기 때문이죠.

    2-2 명령어 메모리에서 주소에 해당하는 명령어를 내보냅니다.

 

어라? 너무 쉬운데? 그런데 이제부터 조금씩 복잡해 집니다. 우리는 여러 명령어에 대해 배웠습니다. 기억이 나질 않는다면, 뒤로 가기를 누르고, 꼭 그 전 명령어 글들을 참조해 주시길 바랍니다

반응형

명령어 프로세스

1. 명령어 종류

명령어는 크게 4 가지 종류가 있었죠?

 

 1. R - type instrction

 2. Load or store instruction

 3. Branch instruction

 4. J - type instrction ( 하위 26비트를 2비트만큼 왼쪽으로 자리 이동한 값으로 PC의 하위 28비트를 대체 ) 

 

여러분 기억나셔야 되요! 우선 3 가지 명령어들의 흐름이 어떻게 되는지 하나씩 파악 해보겠습니다.

 

2. R - type instruction

 

Bits Field

|     0     |     rs     |     rt     |     rd     |     shamt     |     funct     |

   31:26      25:21      20:16     15:11          10:6             5:0 

     6bits      5bits      5bits      5bits         5bits           6bits

 

 

 

  이런 형태였습니다. 기억나시죠. 기억하셔야 할 내용들 시작합니다. 우선 레지스터 피연산자 3 개를 가지고 있습니다. 레지스터 파일에서 두 워드는 읽고, 한 워드는 써야합니다. ( add $s0, $s1, $s2 를 생각해보세요. $s1, $s2 는 읽고 $s0는 써야 합니다. ) 워드를 읽기 위해서는 읽을 레지스터 번호를 지정하는 입력과 레지스터에서 읽은 갋을 내보내는 출력이 필요합니다. 데이터 워드를 쓰기 위해서는 두 개의 입력, 쓸 레지스터 번호와 레지스터에 쓸 값이 필요합니다. 레지스터 파일은 Read register 입력에 실리는 번호에 해당하는 레지스터의 내용을 항상 출력합니다. 즉, 읽기 신호 제어가 필요하지 않다는 말이죠. 그러나 쓰기의 경우, 쓰기 제어신호에 의해 제어 되므로 클럭 에지에서 쓰기가 일어나려면 이 제어 신호가 인가되어야 한답니다. 즉 전체적으로 4개의 입력과 2개의 출력( 다만 register 번호 입력에 필요한 3개는 5 bits의 입력이 들어가는 반면, 데이터 입력과 출력은 모두 32bits( 워드 ) 만큼의 폭을 가집니다 )이 필요합니다.

  그럼 ALU는 왜 필요할까요? 간단합니다. 두 개의 레지스터에서 받아온 결과를 연산 해야죠? 무슨 연산이요? add sub or and slt 이런 연산 말이죠! 잠깐만요 ALU에서 2개의 값이 나오는데요? 그런데 2개 값이 나오는 게 아니라, 나올 수 있다가 맞습니다. 첫 번째 계산한 32 bit의 결과가 나옵니다. 2 번째 결과가 0인지를 판단하는 1비트 신호를 만듭니다. 왜요? 분기를 존재할 때 zero 검출을 활용하기 위함입니다.

 

  즉 R - type의 데이터 패스에 대해 보여드릴 게요. 이런 흐름으로 가게 된답니다.

다음 명령어 저장 과정이나 이런건요? 뺐어요. 복잡해 지니까요. 다만 R-type 명령어 인출 이후 다음과 같은 패스를 따른다는 것을 기억해 주세요.  

728x90
반응형