YYYEJI

[MIPS] RTL 이란? 본문

Computer architectures

[MIPS] RTL 이란?

YEJI ⍢ 2022. 10. 31. 11:33
728x90

RTL은

Register Transfer Language의 줄임말로써,

Register와 register 간에 데이터가 이동하는 흐름 방향을 자세하게 보여줄 수 있는 수준의 언어입니다.

 

예제를 살펴보겠습니다.

① add operation

op code rs rt rd shamt function code

add             rd, rs, rt

 

↓↓↓        RTL Description       ↓↓↓

IR  ←  mem[PC];                            # Fetch instruction from memory

R[rd]  ←  R[rs] + R[rt];                                               # ADD operation

PC  ←  PC + 4;                                              # Calculate next address

      

 

②  sub operation

op code rs rt rd shamt function code

sub             rd, rs, rt

 

↓↓↓        RTL Description       ↓↓↓

IR  ←  mem[PC];                           # Fetch instruction from memory

R[rd]  ←  R[rs] + ~R[rt] + 1;                                       # SUB operation

PC  ←  PC + 4;                                              # Calculate next address

     

~는 invet를 의미하고, +1은 2' complement를 의미합니다.

 

 

 

③  lw operation

op code rs rt immediate

lw             rt, rs, imm16

 

↓↓↓        RTL Description       ↓↓↓

IR  ←  mem[PC];                                 # Fetch instruction from memory

Addr   ←   R[rs] + SignExt(imm 16);        # Compute memory address

R[rt]   ←  Mem[Addr];                                         # Load data into register

PC  ←  PC + 4;                                                        # Calculate next address

     

SignExt은 sign bit을 기준으로 빈 공간을 채우는 것을 의미하는데,

Sign bit이 1이면 1로, sign bit이 0이면 0으로 채웁니다.

 

④  sw operation

op code rs rt immediate

sw             rt, rs, imm16

 

↓↓↓        RTL Description       ↓↓↓

IR  ←  mem[PC];                                 # Fetch instruction from memory

Addr   ←   R[rs] + SignExt(imm 16);        # Compute memory address

 Mem[Addr]   ←  R[rt];                                         # Store data into memory

PC  ←  PC + 4;                                                       # Calculate next address

 

⑤  beq operation

op code rs rt immediate

beq             rt, rs, imm16

 

↓↓↓        RTL Description       ↓↓↓

IR  ←  mem[PC];                               # Fetch instruction from memory

Cond   ←  R[rs] + ~R[rt] + 1;                     # Compute conditonal Cond

                                                     PC  ←  Cond ? PC + 4;                          # Fall through if non-zero Cond                                                          : PC + 4 + (SignExt(imm 16) << 2;           

                                                                                   # Branch if zero Cond

 

rt와 rs가 같으면 zero가 Cond에 들어가고, 다르면 non-zero가 Cond에 들어갑니다.

 

 

 

 

 

◡̈