본문 바로가기
System SW

[2.1] MIPS Instruction Set Architecture - 레지스터 및 메모리 모델

by Hangii 2022. 10. 12.

ISA의 대표적인 기계어 집합인 MIPS의 원리와 연산 수행에 대해 알아본다.

 

  • (Recap)컴퓨터마다 CPU에서 사용되는 기계어 집합이 다르다. (Instruction Set Architecture의 종류는 여러가지다.)
  • ISA의 종류: IBM System/360, IA-32(x86), IA-64, MIPS, SPARC, Alpha, PA-RISC
  • MIPS Register & Memory Model

  • MIPS 레지스터 모델
    • 피연산자 값을 저장할 범용 레지스터의 개수: 32개($0-$31)
    • 레지스터 하나의 크기는 4 byte이다. 따라서 범용 레지스터는 (4 byte)*32(개) 만큼의 공간이 필요하다.
    • 32개의 레지스터를 구분하기 위해서는 5bit가 필요하다(2^5 =32이므로)
    • 범용 레지스터 외에도 몇 가지 레지스터들이 존재한다:
      • PC(Program Counter register): 다음에 실행될 명령어의 주소를 담고 있는 32bit 레지스터
      • LO/HI: 곱셈과 나눗셈의 결과를 저장하기 위해 predefined된 레지스터
  • MIPS 메모리 모델
    • 총 접근 가능한 메모리 크기 = 2^32 bytes = 4GB = 2^30 words(1 word = 4 byte이므로)
      • cf) 메모리는 byte단위로 주소가 매겨진다.
      • 오른쪽 그림에서 볼 수 있듯이 Memory의 가장 낮은 주소값은 0x0000 0000이다.(이는 16진수이므로 32bit의2진수 값으로도 표현할 수 있다. 2진수 4자리 = 16진수 1자리임을 기억하자.) 반대로 가장 높은 주소 값은 0xffff ffff이다.(32bit 이진수로 표현했을 때 모든 자리의 값이 1이다.)
      • MIPS에서는 메모리의 주소를 나타내기 위해 32bit가 제공된다.
  • MIPS 아키텍쳐에서는 모든 기계어의 길이가 4byte로 균일하다. 

  • 고급 언어에서 작성된 함수 단위의 프로그램은 기계어로 바뀌더라도 그 형태(함수 단위)를 유지한다. 
  • 마찬가지로 레지스터들도 어느 정도 정해진 역할이 있다.
  • MIPS Instructions
    • Arithmetic/Logic Instructions: CPU내의 ALU에서 진행되는 산술 논리 연산(=,-,*,/, AND, OR)
    • Data Transfer(Load/Store) Instructions: Load - 메모리 데이터를 CPU에 전달 / Store - CPU의 값을 메모리에 저장하는 것
      • MIPS에서는 Load/Store 관련 명령어들을 제외하고는 메모리에 접근하지 않는다. 즉, Load/Store명령어를 제외하고는 메모리가 피연산자로 사용되지 않는다. (나머지 instruction들은 시간 단축을 위해 메모리에 접근하지 않고 레지스터만을 사용)
      • 메모리에 있는 값을 사용해 연산을 해야 하는 경우, 연산 과정을 나누어 i)Load 명령어로 메모리 값을 레지스터에 옮긴 후 ii)레지스터만을 피연산자로 사용하는 산술 연산을 진행한다.
    • Conditional branch Instructions
      • PC를 바꾸는 명령어
    • Unconditional jump instructions
      • PC를 바꾸는 명령어

댓글