컴퓨터(Computer Science)/컴퓨터구조(Computer Arichitecture)

ISA, Principle of Machine Design [컴퓨터구조]

게임이 더 좋아 2020. 3. 24. 12:15
반응형
728x170

 

Instruction : Language of the computer (ex MIPS)

인스트럭션이란 컴퓨터 언어라고 생각하면 되겠다.

 

Instruction set: The vocabulary of commands that a computer understands

다시 말해서

컴퓨터의 종류가 다르다면 Instruction set 또한 다를 것이다.

(대부분 같겠지만)

 

초기의 컴퓨터는 simple instruction set을 가지고 있었다.

물론 복잡한 형태로

CISC, Complex Instruction Set Computer

거치긴 했지만 

RISC, Reduced Instruction Set Computer로 바뀌면서

다시 현대에는 simple로 되어가고 있다.

 

예를 들면

ARMv7: Similar to MIPS --> ARM 32bit

Intelx86 : Used in Desktops, Cloud computing --> Intel, AMD

ARMv8 : closer to MIPS than v7 --> 32/64 - bit CPU

 

MIPS 라는 것은 32-bit RISC architecture를 말한다.

 


 

ISA라는 것이 무엇이냐?

 

Instruction Set Architecture의 약자로

ISA는 소프트웨어와 하드웨어의 인터페이스다.

특히 소프트웨어는 low level 소프트웨어로 일반적으로 OS를 말한다.

즉, 모든 필요한 정보들이 ISA를 통해서

소프트웨어와 하드웨어 사이에서 Implementation이 이루어진다는 것이다.

** ISA에 맞게 끔 작성하면 된다는 말이다.

 

어떤 컴퓨터에서도 하드웨어에 종속되거나 소프트웨어에 종속되지 않고 실행할 수 있는 것이

바로 ISA 이다.

 

ISA 덕분에 하드웨어와 소프트웨어가  Independent하게 존재할 수 있는 것이다.

 

 


 

 

또한  ISA와 OS의 인터페이스를 합쳐서 ABI, Application Binary Interface라고 부른다.

 

ABI는 

The user portion of the instruction set (ISA)와 operating system interfaces used by application programmers 의 결합이다.

 

즉, 임의의 어플리케이션이 컴퓨터에 실행될 지 안될 지 판단할 때(portablity) ABI를 체크한다.

게임도 운영체제마다 다른 게임을 제공하는 것처럼

ABI가 다르기 때문에 다르게 제공하는 것이라고 이해하면 된다.

 

 


 

MIPS - 32 ISA

MIPS는 32 * 32 -bit 레지스터 파일을 가진다는 것임.

 

 

computational: 기본연산

Memory <-> CPU 사이에서 Load/Store 

Program flow control >> Jump & Branch 

Floating Point를 위한 연산을 Coprocessor에서 한다.

 

또한 Register개수는 32개로 R0--R31까지 있다.

** 하나의 레지스터는 32bit - 4Byte 를 word라고 부른다.

++각 어셈블러에서는 레지스터는

$t0 ~ $t9 까지 temporary value를 저장하고

$s0 ~ $s7까지 saved variables 이다.

 

PC는 Program Counter로 메모리의 주소를 저장한다.

HI/LO는 곱하기 나누기에 사용한다. 

 

RISC 구조의 특징: 모든 Instruction의 길이가 같다 ex) 32bit 로 통일

 

그리고 위 그림과 같이 3개의 R,I,J format이 있다.

 


 

그것에 대해서 MIPS 자체에 대해서 알아보기 전에

하드웨어에서의 Operation, 연산에 대해서 알아보자**operands를 말하는 것이다.

 

Arithmetic 연산이 우선 있다.

 

add와 sub이다.위에서 배운 레지스터 번호를 참고해서 이해하자.

 

더 자세히 설명하자면

 

그 다음으로는 

lw와 sw가 있다.

메모리에서 레지스터로 데이터를 가져오는 것이 lw

역순이 sw이다.

 

문제를 보자.

 

 

마지막으로는 Constant or Immediate 연산이 있다.

즉각적으로 메모리에 접근 없이 이미 불러온 값이나 아는 값으로 바로 연산하는 것이다.

 

 


 

 

1. 아까 말했듯이 MIPS에서 32비트 고정

  포맷 개수가 적어야 한다.

opcode가 항상 처음부터 6비트에 있다.

 

2. MIPS의 종류가 적음

레지스터의 수 적어야 좋다 ( MIPS 에서는 32개)

addressing mode(개수 제한을 둔다)

 

3. 3개의 포맷이 적당함 (1개는 너무 적다 MIPS에서는)

포맷이 하나면 1번에 만족하지만 무리가 따른다.

포맷이 많으면 1번에 위배.

728x90
반응형
그리드형