본문 바로가기

Computer Structure & Operating System/2025 version

Computer Structure & OS(5) - CPU 성능 향상 기법

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클럭 내외로 명령어 수행
파이프라이닝하기 어려움 파이프라이닝하기 쉬움