티스토리 뷰

컴퓨터 구조에서 가장 기본이 되는 것은 Instruction입니다. 해당 과목에서 CPU 설계의 기본구조를 이해하기 위해서는 반드시 명령어 기본구조를 이루는 Instruction에 대한 이해가 선행되어야 합니다. 이제 컴퓨터 구조에 대한 포스팅을 진행하면서 천천히 하나씩 이해 해조겠습니다.

 

Instruction Set

컴퓨터가 명령어를 인식하기 위해서 사용되는 명령어의 집합인 Instrction Set에 대해 알아보겠습니다. Instruction의 일반적인 의미는 주로 각 하드웨어 별로 지원하는 언어이며 이를 Machine Language 부릅니다. 그리고 조금도 확장하여 Assembly 언어로도 포함할 수 있습니다. 즉 컴퓨터 기본 적인 일을 수행할 수 있도록 전달해 주는 매개체 역할을 하는 것이 바로 Instruction이라고 하고 이 명령어들의 집합이 Instruction Set입니다.

  • Instruction Set을 만드는 목적은 컴퓨터의 job을 수행할 수 있도록 지원하기 위함
  • 성능은 최대로 하되 사용하는 하드웨어 자원은 최소화하도록 설계

 

MIPS Instruction

Instruction Set을 확인하기 위해 먼저 MIPS의 Instruction구조부터 파악해보도록 하겠습니다. MIPS의 기본적인 arithmetic 명령어인 add와 sub에 대해 확인해보겠습니다.

add a,b,c          # a = b + c
sub a,b,c          # a = b - c

일반적으로 MIPS의 명령어 구조는 3개의 피연산자(operand)를 지정하여 구성됩니다. 즉, 첫 번째 선언되는 operand인 a는 연산의 결과를 임시로 저장하는 변수이고, b와 c는 연산의 대상이 되는 변수입니다. 그렇다고 하더라도 반드시 3개의 operand를 선언하지 않아도 MIPS는 이를 암묵적으로 이해하여 명령어를 실행할 수 있습니다. Operand가 하나만 선언되는 경우에 accumulator라는 임시 변수를 이용하여 그 변수에 대이터를 저장할 수 있기 때문입니다.

add a              # acc = acc + a
add a,b            # a = a + b
add a,b,c          # a = b + c

다음과 같은 예시로 C언어가 어떻게 MIPS Instruction으로 변환되는지 살펴보겠습니다.

a = (b+c)-(d+e);

한 줄로 표현되는 위에 명령어가 컴파일러를 통해 컴파일되면 아래와 같은 과정을 거칩니다.

add temp1,b,c        #temp1 = b + c
add temp2,d,e        #temp2 = d + e
sub a,temp1,temp2    #a = temp1 - temp2

C언어를 쓰면 한 줄로 구현되는 명령어가 컴파일되어 어셈블리 언어로 변환되면 세 줄로 명령어를 수행됩니다.

 

ARM Instruction

Arm도 기본적인 Instruction구조는 MIPS와 동일합니다. ARM Instruction도 대부분의 명령어가 기본적으로 3개의 operand를 사용하여 수행합니다. Instruction은 대부분 비슷한 목적을 가지고 설계되기 때문에 비슷한 구조를 가지는 것도 이와 같습니다. 사용 예는 다음과 같습니다.

add a,b,c          # a = b + c
sub a,b,c          # a = b - c
댓글
공지사항