본문 바로가기

학교/컴퓨터 구조

3. 컴퓨터의 성능 (1/4) 명령어 집합

의미

명령어 집합 구조(ISA)는 좁은 의미에서 컴퓨터 구조이다.

ISA는 작성된 프로그램과 그 프로그램을 수행할

HW 사이의 인터페이스에 대한 완전한 정의이다.

 

즉, ISA는 추상화 개념이며, 이걸 구체화한 걸 Micro Architecture라고 한다.

 

ISA에서 명시하는 사항은 다음과 같다.

 

1. 하드웨어가 어떤 연산을 수행하고, 각 연산에 어떤 데이터가 필요한지.

2. 사용할 수 있는 데이터의 표현 방식(Data type)

3. 주소 지정 방식(addressing mode) 명시

 

 

명령어 집합 설계에는 여러 주요 사항들이 있는데

다음과 같다.

 

1. 연산의 종류

프로세서가 수행할 수 있는 일의 종류

일반적으로 전송(transfer), 처리(processing), 제어(control), I/O 연산 4 종류가 있다.

 

2. 데이터 형식

프로그램이 쓸 수 있는 데이터의 종류를 명시하고,

정수, 실수, 논리 등 데이터를 식별하는 분류이다

 

3. 명령어 형식

연산의 종류를 지정하는 연산 부호 같은 것이다.

명령어는 피연산자로 소수의 주소값 등을 가질 수 있기 때문에

이걸 명시해준다.

 

4. 피연산자의 주소 지정 방식.

데이터는 다양한 위치에 존재하는데,

이걸 가져오는 여러 방법 중 하나를 지정한다.

 

 

 

명령어의 특성

 

명령어는 산술연산 형식으로 간단하게 표현 할 수 있다.

 

z = F(x, y)

여기서 F는 명령어(Opcode)이고,

x, y, z는 피연산자이다.

만약 F가 add 라면

고급 언어에선 z = x + y

어셈으론 add z, x, y

이런 식이다.

 

그리고 위에선 인자가 3개인데, 인자는 여러 개가 올 수 있다.

인자 2개면 2-주소 명령어, 3개면 3-주소 명령어 이런 식이다.

다만, 인자가 부족하면, 한 쪽 인자의 값이 파괴될 수 있으니 유의.

 

하지만, 인자가 많아지면 그만큼 명령어의 길이가 길어지는데,

이걸 해결하는 방법으론 여러 방법이 있다.

 

1. 레지스터 사용

메모리 용량은 레지스터보다 크기 때문에, 레지스터를 사용하면 길이를 줄일 수 있다.

다만, 수가 적어서, 제한된 데이터만 쓸 수 있다.

 

 

2. 목적지 피연산자를 연산에 사용.

대충 무슨 말이냐면,

z = F(z, y) 이런 식이다.

C로 따지면 z = z + y 이다.

이 경우 인자가 x, z 2개이므로, 2-주소 명령어이다.

 

 

3. 묵시적 피연산자 사용

Acc같은 누산기 같은 기능을 이용하는 거다.

Acc = F(Acc, x)

이렇게 되면 함수 F를 수행하면, Acc를 자동으로 인자 겸, 목적지 피연산자로 사용한다.

말 그대로

알아서 해주기 떄문에, 필요한 인자는 x 1개가 된다.

 

 

4. 스택 사용

스택에 데이터가 있으면, 굳이 위치를 명시하지 않고,

스택 위에서 원하는 만큼 빼서 연산을 하면 된다.

이러한 경우엔, 인자를 명시해줄 필요가 없어서 0 주소 명령어라고 한다.

 

명령어의 길이

CISC, RISC별로 차이가 있다.

구분 CISC RISC
길이 가변 고정
프로그램 크기 적음
HW디자인 어려움 쉬움
명령어 해독 어려움 쉬움

 

출처 : 컴퓨터 아키텍처 컴퓨터 구조 및 동작 원리 (한빛 아카데미)