오래 못 할 짓 하지 않기

[ 컴퓨터 구조 ] 2. Datapath (1) 본문

2학년 2학기/컴퓨터 구조

[ 컴퓨터 구조 ] 2. Datapath (1)

쫑알bot 2023. 6. 28. 15:14
728x90

한 CLK Cycle 내에 모든 명령어의 실행이 끝나도록 Datapath 설계

=  Single Clock Cycle CPU 

 

Fetch  : 메모리에 있는 명령어를  CPU로 가져오는 것

Decode : CPU로 가져온 명령어를 해석하는 것

Execute : 해석한 명령어를 실행하는 것

 

 

1. CPU에 있는 프로그램 카운터(PC)값은  Instruction memory에 해당 address(명령어가 있는 주소)로 간다.
(load임?, 그럼 memory에 저장되나?)

2. 메모리의 해당 주소에서 Instruction을 받는다.
    그 Instruction은 여러 필드로 나누어진다. 

3. 레지스터에는 Instruction에서 받은 피연산자들이 들어간다.

4. ALU에서 Instruction을 사용하여 피연산자들에 대한 연산을 수행한다. 

5. 결과는 Rd 레지스터에 저장한다 (R type일 때)

6. 다음 Instruction을 가리킬 수 있도록 PC값을 설정한다.

 



3. 레지스터를 읽고 분석한다.

4. 3에서 분석한 것을 바탕으로 Instruction을 사용하여 어떤 것을 수행할지 정한다. 


※ 항상 첫 줄은 명령어를 Fetch한다.

위에서 외워둘 것 : OP = 000000이면, R type 

Function = 100000이면 add operation

 

  • 첫 줄
    IR  = Instruction Register : 가져온 명령어를 저장하는 register ,
    메모리에서 읽은 명령어를 임시저장하는 CPU 내장 register 
    첫 6bit를 읽고, 이게 어느 명령어를 수행하는지 알 수 있음.


  • 두 번째 줄
    R[rd] = R[rs] + R[rt] ;
    rd번째 Regist에, [ rs번째 register 값 ] + [ rt 번째 register 값 ] 의 결괏값을 넣는다.

 

  • 세 번째 줄
    PC = PC +4;
    다음 address로 넘어간다.

 

2번째 줄만 다름. 

- 대신 2의 보수를 더하는 방식을 사용했다.

 

 


Load : 메모리에 있는 값을 CPU(rt Register)로 가져오는 연산

메모리 값 → rt Register

 

 

  • 첫 줄
    IR  = Instruction Register : 가져온 명령어를 저장하는 register ,
    메모리에서 읽온 명령어를 임시저장하는 CPU 내장 register 
    첫 6bit를 읽고, 이게 어느 명령어를 수행하는지 알 수 있음.


  • 두 번째 줄
    Addr = R[rs] + SignExt(imm16);
    메모리의 주소(인덱스)를 구하기 위해서 rs와 16비트 상수를 rs와 더하기 위해 32비트로 바꿈.


  • 세 번째 줄
    R[rt] = Mem[ Addr ];
    메모리로부터 주소 인덱스에 있는 데이터를 읽어내서 rt 에 넣는다. 

 

 

Store : CPU에 있는  rt Register 값을 메모리로 전달

rt Register 값 → 메모리

두 번째 줄까지는 이전과 같음.

 

세 번째 줄에서는 rt값을 메모리로 보냄.

 


 

 

 

beq : rs - rt 를 수행한다.

 

  • 두 번째 줄
    Cond = R[rs] + ~R[rt] + 1;
    rs - rt 연산을 한다. (2의 보수를 더하면서 연산)


  • 세 번째 줄
    PC = Cond ? PC+4 ;
                             : PC + 4 + (SignExt(imm16) << 2) 
    Cond가 0이 아니면 PC +4를 하고
                 0이면 PC+4 +  (SignExt(imm16) << 2)을 한다.  
    상수값 (Imm값)을 인덱스로 쓰는 경우에는 <<2 ( = *4 ) 를 해주어야 한다.


 

출처 : SW 중심대학