Computer Science/CS 컴퓨터구조

[컴퓨터구조]Instruction Set Architeture (MIPS) - 2

LKBaekjoon 2024. 6. 24. 21:26
반응형

Design Principle 4) 좋은 디자인이 좋은 compromise를 만든다


  • 다른 포맷들이 디코딩을 복잡하게 만들 수는 있지만, 32비트 instruction은 균등하다.
  • 가능한 한 포맷을 유지해야 한다.

 

반응형

 

R-format instruction


32bit R-format instruction

각 역할은 아래 포스팅에서 자세히 다루고 있으니 따로 기술하지 않겠다.

R-format 명령어의 경우 add, addi와 같은 ALU 연산 명령어들이 속한다.

 

I-format instruction


32bit I-format instruction

  • load / store 명령어들이 이에 속한다.
  • rt는 목적지 레지스터의 주소 (rd) 혹은 소스 레지스터의 주소로 사용된다.
  • constant : -2^15 에서 2^15+1의 값을 가진다 (16비트기 때문)
  • address : rs 레지스터 주소에 더해지는 offset 값이다.

 

Shift Operations


  • shamt : 얼마나 쉬프팅할지에 관한 비트 값
  • sll 
    • 왼쪽으로 i비트 밀고 0으로 채운다
      • 값에 2^i 만큼 곱하는 결과와 동치이다.
  • srl
    • 오른쪽으로 i비트 밀고 0으로 채운다.
      • 값을 2^i만큼 나누는 결과와 동치이다.

 

AND Operations


  • 한 word data 내에서 비트마스킹에 유용하다.
  • 예를 들어 몇개의 비트만 선택하고, 나머지는 0으로 마킹할 수 있다
    • 0000 0111에서 마지막 비트만 살리고 싶으면, 0000 0001 과 AND 연산을 진행하면
      • 0000 0001만 남는다.

 

OR Operations


  • word내에서 특정 비트를 포함시키기에 유용하다.
  • 몇 비트를 1로 넣고, 나머지 비트는 unchanged 상태로 유지할 수 있다.

 

NOT Operations


  • word내에서 특정 비트를 뒤집는 데 유용하다.
  • MIPS에선 NOR 연산이 제공된다.
    • a NOR b == NOT (a OR b)가 성립.

 

Conditional Operations


  • 만약 어떤 특정 조건이 참이라면, labeled instruction으로 분기화 되는 것을 의미한다.
  • beq rs, rt ,L1
    • 만약 rs와 rt가 같다면, L1이라는 instruction으로 분기하는 것.
  • bne rs, rt, L1
    • 만약 rs와 rt가 같지 않다면, L1이라는 instruction으로 분기하는 것
  • j L1
    • 조건 없이 일단 L1이라는 instruction으로 분기하는 것

 

Branch Instruction Design


  • 그렇다면 왜 blt, bgt와 같은 instruction은 없을까?
    • blt = branch less than 이라 가정
    • bgt = branch greater than 이라 가정
    • => 여러 개의 instruction을 합쳐 하나로 만들면 되지 않나? 라는 근본적인 물음
  • greater than와 less than과 같이 크기를 비교하는 하드웨어의 속도가 같은지 다른지를 비교하는 하드웨어의 속도보다 느리기 때문이다 !
  • 특정 한 instruction을 무겁게 만들어버리면, clock cycle에도 영향을 미친다.
반응형