728x90
반응형
1) 빠른 CPU를 위한 설계 방법
1-1) 클럭
1-2) 코어와 멀티코어
1-3) 스레드와 멀티스레드
2) 명령어 병렬 처리 기법
2-1) 명령어 파이프라인
2-2) 슈퍼스칼라
2-3) 비순차적 명령어 처리
3) CISC와 RISC
3-1) 명령어 집합
3-2) CISC
3-3) RISC
1) 빠른 CPU를 위한 설계 방법
1-1) 클럭
- 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직임
- CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행함
- 클럭 속도가 높아지면 CPU는 명령어 사이클을 더 빠르게 반복할 것이므로 일반적으로 클럭 속도가 높은 CPU가 성능이 좋음
- 클럭 속도는 헤르츠(Hz) 단위로 측정하며, 이는 1초에 클럭이 몇 번 반복되는지를 나타냄(1GHz = 1,000,000,000Hz)
- 하지만 클럭 속도를 높이는 것만으로 CPU의 성능을 올리는 것에는 한계가 있음(발열 문제 발생)
1-2) 코어와 멀티코어
- CPU는 단순히 '명령어를 실행하는 부품'에서 '명령어를 실행하는 부품을 여러 개 포함하는 부품'으로 명칭의 범위가 확장되었음
- 코어 : CPU 내에서 명령어를 실행하는 부품으로 여러 개 있을 수 있음
- 멀티코어(muiti-core) CPU 또는 멀티코어 프로세서 : 여러 개의 코어를 포함하고 있는 CPU
- 여기서 중요한 것은 코어의 개수가 무조건 많은 것이 좋은 것이 아니라 코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐이고, 그에 따라 연산 속도는 크게 달라짐
1-3) 스레드와 멀티스레드
- 스레드(thread) : 명령어를 실행하는 단위(실행 흐름의 단위)
- 스레드에는 CPU에서 사용되는 하드웨어적 스레드가 있고, 프로그램에서 사용되는 소프트웨어적 스레드가 있음
- 하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위('논리 프로세서'라고 부르기도 함)
- 멀티스레드(multithread) 프로세서 또는 멀티스레드 CPU : 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU(여러 개의 하드웨어적 스레드를 지원하는 CPU)
- 하이퍼스레딩(hyper-threading) : 인텔의 멀티스레드 기술을 의미함
- 소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위
2) 명령어 병렬 처리 기법
2-1) 명령어 파이프라인
- 일반적인 명령어 처리 과정의 클럭 단위 구분 : (1) 명령어 인출(Instruction Fetch) >> (2) 명령어 해석(Instruction Decode). >> (3) 명령어 실행(Execute Instruction) >> (4) 결과 저장(Write Back)
- 위의 처리 과정의 핵심은 같은 단계가 겹치지만 않는다면 CPU는 '각 단계를 동시에 실행할 수 있다'는 것임
- 명령어 파이프라이닝(instruction pipelining) : 동시에 여러 개의 명령어를 겹쳐 실행하는 기법
- 파이프라이닝이 높은 성능을 가져오기는 하지만, 특정 상황에서는 성능 향상에 실패하는 경우도 있는데 이를 파이프라인 위험이라 함
- 파이프라인 위험(pipeline hazard)의 종류 : 데이터 위험, 제어 위험, 구조적 위험
- 데이터 위험(data hazard) : 명령어 간 '데이터 의존성(예를 들어 어떤 명령어는 이전 명령어를 끝까지 실행해야만 비로소 실행할 수 있는 경우를 의미함)'에 의해 발생함
- 제어 위험(control hazard) : 주로 분기 등으로 인한 '프로그램 카운터의 갑작스러운 변화'에 의해 발생함
- 구조적 위험(structural hazard) : 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 ALU, 레지스터 등과 같은 CPU 부품을 사용하려고 할 때 발생함('자원 위험'이라고도 부름)
2-2) 슈퍼스칼라
- 슈퍼스칼라(superscalar) : CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조 혹은 기법
- 슈퍼스칼라 프로세서 혹은 슈퍼스칼라 CPU : 슈퍼스칼라 구조로 명령어 처리가 가능한 CPU
- 슈퍼스칼라 프로세서는 이론적으로 파이프라인 개수에 비례하여 프로그램 처리 속도가 빨라짐
- 하지만 파이프라인 위험 등의 예기치 못한 문제가 있어 슈퍼스칼라 방식을 차용한 CPU는 파이프라인 위험을 방지하기 위해 고도로 설계되어야 함
2-3) 비순차적 명령어 처리
- 비순차적 명령어 처리(OoOE; Out-of-order execution) : 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법
3) CISC와 RISC
3-1) 명령어 집합
- 명령어 집합(instruction set) 또는 명령어 집합 구조(ISA; Instruction Set Architecture) : CPU가 이해할 수 있는 명령어들의 모음(즉, ISA는 CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속임)
- CPU마다 ISA가 다를 수 있음
3-2) CISC
- CISC(Complex Instruction Set Computer) : 복잡하고 다양한 종류의 가변 길이 명령어 집합을 활용함
3-3) RISC
- RISC(Reduced Instruction Set Computer) : 단순하고 적은 종류의 고정 길이 명령어 집합을 활용함
CISC | RISC |
복잡하고 다양한 명령어 | 단순하고 적은 명령어 |
가변 길이 명령어 | 고정 길이 명령어 |
다양한 주소 지정 방식 | 적은 주소 지정 방식 |
프로그램을 이루는 명령어의 수가 적음 | 프로그램을 이루는 명령어의 수가 많음 |
여러 클럭에 걸쳐 명령어 수행 | 1클럭 내외로 명령어 수행 |
파이프라이닝하기 어려움 | 파이프라이닝하기 쉬움 |
'Computer Structure & Operating System > 2025 version' 카테고리의 다른 글
Computer Structure & OS(7) - 보조기억장치 (0) | 2025.03.01 |
---|---|
Computer Structure & OS(6) - 메모리와 캐시 메모리 (0) | 2025.02.27 |
Computer Structure & OS(4) - CPU와 작동 원리 (0) | 2025.02.24 |
Computer Structure & OS(3) - 소스 코드와 명령어, 명령어의 구조 (0) | 2025.02.21 |
Computer Structure & OS(2) - 0과 1로 숫자 및 문자를 표현하는 방법 (0) | 2025.02.19 |