[컴퓨터 구조] 5. CPU 성능 향상 기법
[컴퓨터 구조] 5. CPU 성능 향상 기법
Chapter5 CPU 성능 향상 기법
5-1 빠른 CPU를 위한 설계 기법
클럭
- 컴퓨터 부품들은 ‘클럭 신호’에 맞추어 동작
- 클럭 속도가 높은 CPU는 일반적으로 성능이 좋음
- 클럭 속도 : 헤르츠(Hz) 단위로 측정
- 클럭이 1초에 한번 반복되면 CPU 클럭 속도는 1Hz
- 1 Ghz = 10^9 Hz
- 클럭 속도가 매번 일정한 것은 아님
- 고성능을 요할 때는 높이고, 그렇지 않을 때는 낮추기도 함
코어와 멀티코어
- 코어 : CPU 내에서 명령어를 실행하는 부품
- 코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐가 중요
스레드와 멀티스레드
- 스레드 : 실행 흐름의 단위
- 멀티스레드 프로세서
- 멀티스레드 프로세서를 설계하는 데 핵심은 레지스터
- 프로그램 카운터, 스택 포인터, 데이터 버퍼 레지스터, 데이터 주소 레지스터와 같이 하나의 명령어를 처리하기 위해 꼭 필요한 레지스터를 여러 개 가지고 있으면 됨
- 2코어 4스레드 CPU는 한번에 네 개의 명령어를 처리할 수 있는데 프로그램의 입장에선 하나의 명령을 처리하는 CPU가 네 개 있는 것처럼 보임 → 하드웨어 스레드를 논리 프로세서라고 하기도 함
5-2 명령어 병렬 처리 기법
명령어 파이프라인
- 명령어 파이프라이닝 : 동시에 여러 개의 명령어를 실행하는 기법
- 명령어 인출 (Instruction Fetch)
- 명령어 해석 (Instruction Decode)
- 명령어 실행 (Execute Instruction)
- 결과 저장 (Write Back)
위와 같이 4단계가 있는데 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행할 수 있다는 것이 핵심 → 효율적으로 처리 가능
- 파이프라인을 통해 병력적으로 명령어를 처리하는 경우
- 위는 파이프라인없이 모든 명령어를 순차적으로 처리하는 경우
- 파이프라인 위험 : 파이프라인이 높은 성능을 가져오기는 하지만 특정 상황에는 성능 향상에 실패할 수도
슈퍼스칼라
- 슈퍼스칼라 : 여러 개의 명령어 파이프라인을 두는 기법
- 슈퍼스칼라 프로세서 : 슈퍼스칼라 구조로 명령어 처리가 가능한 CPU
- 슈퍼스칼라 프로세서는 이론적으로는 파이프라인 개수에 비례하여 프로그램 처리 속도가 빨라짐
- 하지만 파이프라인 위험 등의 문제로 실제로는 파이프라인 개수에 비례하여 빨라지는 것은 아님 → 여러 개의 파이프라인을 사용하면 더욱 많은 위험 존재
비순차적 명령어 처리
- 비순차적 명령어 처리 기법 : 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 기법 → OoOE로 줄여서 부름
- 3번 명령어를 실행하기 위해서는 1번, 2번 명령어가 실행이 끝날 때까지 기다려야 함
- 위와 같이 4번, 5번, 6번 명령어도 다같이 밀리게 됨
- 여기서 3번 명령어는 뒤의 명령어와 순서를 바꾸어 실행하여도 문제될 것이 없음
- 여기서 위와 같이 3번 명령어를 마지막에 수행한다면?
- 위와 같이 효율적인 파이프라인 수행가능
- 그렇지만 아무 명령어나 순서를 바꿔서 수행가능한 것은 아님 → 의존성을 고려해야!!
- 4번과 5번 명령어는 의존성이 없기 때문에 순서를 바꿀 수 있음
5-3 CISC와 RISC
명령어 집합
- 명령어 집합(ISA) : CPU가 이해할 수 있는 명령어의 모음
- CPU마다 ISA가 다름
- ISA는 CPU의 언어임과 동시에 CPU를 비롯한 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속
CISC
- 복잡하고 다양한 종류의 가변 길이 명령어 집합 활용
RISC
- 단순하고 적은 종류의 고정 길이 명령어 집합 활용
혼자 공부하는 컴퓨터구조 + 운영체제를 통해 진행한 스터디를 정리한 내용입니다.
문제가 될시에는 수정 혹은 삭제하겠습니다.
This post is licensed under CC BY 4.0 by the author.