Computer Architecture 수업을 수강 중인데, 과제도 할겸 시험 공부도 할겸 복습하기 위해서 정리해 보는 시간
John Hennesy 이라는 스탠포드 교수가 개발함
32비트, 64비트 버전이 있고, embedded systrems 에 여전히 사용되고 있다.
규칙적이다. 고정된 크기와 항상 맨 앞 6비트에 위치하는 Opcode
라는 것이 있음.
작을수록 더 빠르다는 생각 때문에 제한이 많다. 레지스터 개수라던가...
자주 사용하는 규칙들은 더 빠르게 만든다.
우리가 코딩할 때 가지는 철학이나 지향점과 비슷한 것 같아서 중요하진 않지만 적어봤다.
3 개의 연산자를 가진다. 두 개의 source와 1개의 destination 으로 이루어짐
// c언어
f = g + h
// MIPS
add, t0, g, h // t0에 g+h 값을 넣는다. t0 레지스터가 f의 역할을 하는 것.
MIPS 연산은 레지스터를 이용하기 때문에 레지스터에 대한 이해가 굉장히 중요하다. 주소값이라던가, 레지스터의 개수라던가 등등 뒤에서 다룰 때 확실하게 이해해놓지 않으면 헷갈리기 때문.
비트란?
활용하기
MIPS에서 하나의 Word는 4Byte이다. (32비트니까 8비트짜리 1바이트가 4개!)
고로 주소는 4의 배수. 왜냐하면 Word가 4Byte이므로 주소는 4바이트 간격으로 시작지점이 정해지기 때문이다. => lw(load word)
, sw(store word)
instructions 에서 4의 배수로 쓰여야 한다.
16진수 1자리 : 4bit 이다. 그러므로 2자리가 1Byte.
레지스터는 32비트다. 그러면 MIPS Fields는 어떻게 구성이 되어 있을까?
op
: 6비트. 어떤 연산인지 특정해 준다. 6비트 opcode는 나타낼 수 있는 경우의 수가 64가지 이므로 모든 경우를 표현할 수 없어서 funct
코드와 함께 표현하기도 한다.
rs
: Register of the first source operand.
rt
: Register of the second source operand.
rd
: Register of the result`s dstination.
shamt
: Shift Amount.