명령어 집합
명령어의 기본적인 구조와 작동원리는 크게 다르지 않지만 명령어의 세세한 생김새, 명령어로 할 수 있는 연산, 주소 지정 방식 등은 CPU마다 조금씩 차이가 있다.
CPU가 이해할 수 있는 명령어들의 모음을 명령어 집합(instruction set) 또는 명령어 집합구조(ISA, Instruction Set Architecture)라고 한다. 즉 CPU마다 ISA가 다를 수 있다.
어셈블리어와 ISA
ISA가 다르다는 건 CPU가 이해할 수 있는 명령어가 다르다는 뜻이고 명령어가 달라지면 어셈블리어도 달라진다. 다시 말해 같은 소스 코드로 만들어진 같은 프로그램이라 할지라도 ISA가 다르면 CPU가 이해할 수 있는 명령어도 어셈블리어도 달라진다.
ISA가 같은 CPU끼리는 서로의 명령어를 이해할 수 있지만 ISA가 다르면 서로의 명령어를 이해하지 못한다. 이런 점에서 볼때 ISA는 일종의 CPU의 언어인 셈이다.
ISA와 하드웨어의 관계
CPU가 이해하는 명령어들이 달라지면 명령어의 생김새만 달라지는게 아니다. ISA가 달라지면 제어장치가 명령어를 해석하는 방식, 사용되는 레지스터의 종류와 개수, 메모리 관리 방법등 많은 것이 달라진다. 그리도 이는 곧 CPU 하드웨어 설계에도 큰 영향을 미친다.
ISA는 CPU의 언어임과 동시에 CPU를 비롯한 하드웨어가 소프트 웨어를 어떻게 이해할지에 대한 약속이라고 볼 수 있다.
명령어 병렬 처리 기법들을 적용하기에 용이한 ISA가 있고 그렇지 못한 ISA도 있다.
1. CISC(Complex Instruction Set Computer)
이를 해석하면 복잡한 명령어 집합을 활용하는 컴퓨터를 의미한다. 여기서 컴퓨터를 CPU라고 생각해도 좋다. 이름 그대로 복잡하고 다양한 명령어들을 활용하는 CPU설계 방법이다. x-86,x-86-64는 대표적인 CISC기반의 ISA이다.
01 복잡하고 다양한 명령어 집합 활용
다양하고 강력한 기능의 명령어를 지원하여 프로그램을 간단한 명령어로 구성할 수 있다. 명령어 집합은 가변 길이 명령어로 형태와 크기가 다양하다.
02 다양한 주소 지정 방식과 특별한 명령어
메모리 접근하는 주소 지정 방시이 다양하며 특별한 상황에서만 사용되는 독특한 주소 지정 방식이 존재한다.
03 적은 수의 명령어로 프로그램 실행 가능
다양한 명령어로 인해 적은 수의 명령어로도 프로그램을 실행할 수 있다. 이는 메모리 공간을 절약할 수 있는 장점으로 적용된다.
04 명령어의 복잡성과 실행 시간 불규칙성
활용하는 명령어가 워낙 복잡하고 다양한 기능을 제공하는 탓에 명령어의 크기가 실행되기까지의 시간이 일정하기지 않다. 그리고 복잡한 명령어 때문에 명령어 하나를 실행하는 데에 여러 클럭 주기를 필요로 한다.
이상적인 명령어 파이프라인은 각 단계에 소요되는 시간이 동일해야 한다.
05 파이프라이닝의 어려움과 성능한계
CISC활용하는 명령어는 명령어 수행 시간이 길고 가지각색이기 때문에 파이프라인이 효율적으로 명령어를 처리할 수 없다. 명령어 파이프라인이 제대로 동작하지 않는다는 것은 현대 CPU의 성능에 한계가 발생할 수 있다.
06 대다수의 복잡한 명령어의 낮은 사용 빈도
CISC가 복잡하고 다양한 명령어를 활용할 수 있다고 하지만 사실 대다수의 복잡한 명령어의 사용빈도가 낮다. 이는 메모리에 할당된 공간을 효과적으로 사용하지 못할 수 있음을 의미한다.
2. RISC(Reduced Instruction Set Computer)
이름처럼 명령어 종류가 적다. 그리고 CISC와는 달리 짧고 규격화된 명령어, 되도록 1클럭 내외로 실행되는 단순하고 적은 수의 고정 길이 명령어를 집합을 활용한다.
짧고 규격화된 명령어를 활용하기에 명령어 파이프라이닝에 유리하다.
Load-Store 구조
RISC는 메모리에 직접 접근하는 명령어를 load,store 두 개로 제한할 만큼 메모리 접근을 단순화하고 최소화를 추구한다. 이는 연산을 수행하기 위해 메모리에 직접 접근하는 명령어를 제한하고 대신 레지스터를 활용한다. 그렇기 때문에 CISC보다 주소 지정 방식의 종류가 적은 경우가 많다.
RISC는 메모리 접근을 단순화, 최소화 하는 대신 레지스터를 적극 활용한다.그렇기에 CISC보다 레지스터를 이용하는 연산이 많고 일반적인 경우보다 범용 레지스터 개수도 더 많다. 다만 사용 가능한 명령어 개수가 CISC보다 적기 때문에 RISC는 CISC보다 많은 명령으로 프로그램을 작동시킨다.
정리
참고 : 본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard
'책 > 혼공 컴퓨터구조+운영체제' 카테고리의 다른 글
컴퓨터 구조 - 논리주소와 물리주소, MMU, 베이스 레지스터 및 한계 레지스터 (1) | 2023.12.02 |
---|---|
컴퓨터 구조 - RAM의 특성과 종류(DRAM,SRAM,SDRAM,DDR SDRAM) (0) | 2023.12.02 |
컴퓨터 구조 - 명령어 파이프라인, 슈퍼 스칼라, 비순차적 명령어 처리 기법 (0) | 2023.11.29 |
컴퓨터 구조 - 클럭, 코어와 멀티코어, 스레드와 멀티스레드 (0) | 2023.11.24 |
컴퓨터 구조 - 명렁어 사이클,인터럽트, 예외,하드웨어 인터럽트, 인터럽트 서비스 루틴 (1) | 2023.11.22 |
댓글