나는 앞에 CPU를 쉬지 않고 작동시키게 하는 기법인 병렬 처리 기법에 대해서 배웠고 크게 명령어 파이프라인, 슈퍼스칼라, 비순차적 명령어 처리 기법에 대해서 배웠다.
이번에 배울 내용은 명령어 파이프라인과 슈퍼스칼라 기법을 CPU에 적용할 때 명령어도 파이프라이닝에 최적화 되도록 생겨야 하는데 그 생김새에 대해서 배운다.
CPU가 이해할 수 있는 명령어들의 모음 = 명령어 집합 = 명령어 집합 구조(Instruction Set Architecture : ISA)
나는 앞서 명령어가 연산코드와 오퍼랜드로 구성되어져 있다고 배웠다. 큰 틀은 이렇게 생겼지만 CPU 제조사마다 주소지정방식, 명령어의 세세한 생김새, 연산 등의 차이가 있다.
CPU마다 ISA는 다를 수 있다.
ISA는 CPU의 언어라고 볼 수 있다.
ISA는 제어장치가 명령어를 해석하는 방식, 사용되는 레지스터의 종류와 개수, 메모리 관리 방법 등 CPU의 구조에도 영향을 미친다.
즉 ISA는 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속이다.
ISA 중에서 앞서 배운 병렬 처리 기법을 도입하기에 유리한 ISA가 있다. CISC와 RISC이다.
복합한 명령어 집합을 활용한 컴퓨터
CISC의 단점을 보완한 명령어 집합이다.
CPU의 성능을 향상시키는데는
클럭의 속도, 코어의 수, 스레드가 영향을 미친다.
클럭의 속도는 컴퓨터의 부품을 일사분란하게 움직이게 하는 속도이다. 코어는 컴퓨터의 명령어를 실행하는 부품이며 CPU는 컴퓨터의 명령어를 실행하는 부품들이 모인 부품이다. 스레드는 실행의 흐름인데 두가지 있다. 하드웨어적 스레드는 CPU의 관점의 스레드로 하나의 코어가 실행하는 명령어의 단위이다. 소프트웨어적 스레드는 하나의 프로그램이 독립적으로 실행하는 단위이다.
1코어 1스레드 CPU는 여러개의 소프트웨어적 스레드를 실행시킬 수 있다.
또한 CPU가 놀지 않고 일하도록 병렬 처리 기법을 이용할 수 있는데 병령처리 기법에는 명령어 파이프라인, 슈퍼스칼라, 비순차적 명령 처리 기법이 있다.
명령어의 모양은 CPU제조사마다 차이가 있다.
따라서 이런 명령어의 들의 모음을 명령어 집합이라고 하며 ISA라고 칭한다.
ISA에 따라서 주소지정방식, 레지스터의 수와 종류 등이 달라지기 때문에 ISA는 CPU의 구조에도 영향을 미친다.
ISA 중에서 병렬 처리 기법에 유리한 ISA가 있는데
대표적인 것인 CISC와 RISC가 있다.
CISC는 복잡한 명령어에 특화되어 있는 가변적 길이의 명령어이다. 하지만 복잡한 명령어의 빈도가 적고 가변적 길이로 인해 일정한 단위로 나뉘는 파이프라인 적절하지 않고
이를 보완한 고정적 길이의 RICS에 적잘하다.
클럭의 속도가 빠를 수록 코어의 수가 많을 수록 하나의 코어가 실행할 수 있는 스레드의 수가 많을 수록 CPU의 성능은 향상된다.
또한 CPU가 쉬지 않도록 병렬 처리 기법을 잘 활용해야 하며 그에 맞는 명령어의 모양도 고려해야 한다.