의미
명령어 집합 구조(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디자인 | 어려움 | 쉬움 |
명령어 해독 | 어려움 | 쉬움 |
출처 : 컴퓨터 아키텍처 컴퓨터 구조 및 동작 원리 (한빛 아카데미)
'학교 > 컴퓨터 구조' 카테고리의 다른 글
3. 컴퓨터의 성능 (3/4) 연산 (0) | 2020.11.30 |
---|---|
3. 컴퓨터의 성능 (2/4) CPU의 기본 구성과 명령어 집합 (0) | 2020.11.30 |
2. 컴퓨터의 성능 (3/3) CPU 성능에 영향을 주는 요소 (0) | 2020.11.28 |
2. 컴퓨터의 성능 (2/3) CPU 성능 분석 (0) | 2020.11.28 |
2. 컴퓨터의 성능 (1/3) 암달의 법칙 (0) | 2020.11.27 |