컴퓨터 구조 &운영체제/컴퓨터구조 + 운영체제

CPU 성능 향상 기법

busy맨 2024. 2. 6. 13:53

1. 빠른 CPU를 위한 설계 기법

1) 클럭

  • 클럭의 동작
    1. 컴퓨터 부품들은 클럭 신호에 맞춰 동작
    2. CPU는 명령어 사이클에 맞춰 명령어를 실행
  • 따라서 클럭 속도가 높은 CPU는 일반석으로 성능이 좋음
  • 클럭 속도
    • 1초에 클럭이 몇 번 반복되는지를 나태나는 시간 단위(Hz)
    • 클럭 속도는 매번 일정하게 유지되지 않음
      • 계속 일정한 클럭 속도를 유지하기 보다는 고성능을 요하는 순간에는 클럭 속도를 높이고,
        그렇지 않을 때는 유연하게 클럭 속도를 낮춤
      • 최대 클럭 속도를 강제로 더 끌어올리는 기법을 오버클럭킹(overclocking)
    • 클럭 속도를 높이면 발열문제가 존재
    • 클럭 속도만으로 CPU의 성능을 올리기에는 한계

 

2) 코어와 멀티코어

  • 코어(core)
    • CPU 내에서 명령어를 실행하는 부품
  • 멀티코어(multi-core)
    • CPU가 코어를 여러 개 포함하고 있는 경우
  • 코어마다 처리할 명령어들을 얼마나 적절하게 분배하느냐에 따라 연산 속도가 달라짐
  • 따라서 코어의 개수가 많다고 연산 속도가 좋은 것은 아님

 

3) 스레드와 멀티스레드

  • 스레드(thread)
    • 하드웨어적 스레드
      • 하나의 코어가 동시에 처리하는 명령어 단위
      • 여러 스레드를 지원하는 CPU(멀티스레드 프로세서: multithread)는 하나의 코어로도 여러 개의 명령어를 동시에 실행 가능
      • 논리 프로세서(logical processor)라고 부르기도 함
      • 멀티스레드 프로세서
        • 여러 개의 하드웨어적 스레드를 지원하는 CPU
    • 소프트웨어적 스레드
      • 하나의 프로그램에서 독립적으로 실행되는 단위
      • Ex) 어떤 프로그램에서 동시에 기능들이 수행되길 원할 때,
        각 기능을 각각의 스레드로 만들면 동시에 실행 가능
    • 정리
코어 명령어를 실행할 수 있는 하드웨어 부품
스레드 명령어를 실행하는 단위
멀티코어 프로세서 코어가 두 개 이상 들어있는 CPU
멀티스레드 프로세서 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU

 

2. 명령어 병렬 처리 기법(ILP: Instruction-Level Parallelism)

1) 명령어 파이프라이닝(instruction pipelining)

  • 공장 생산 라인과 같이 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
  • 같은 단계가 겹치지만 않는다면 CPU는 '각 단계를 동시에 실행할 수 있다'
  • 더 효율적인 명령어 처리 가능

  • 파이프라인 위험(pipeline hazard)
    • 특정 상황에서는 성능 향상에 실패하는 경우 발생 가능
  1. 데이터 위험(data hazard)
    • 명령어 간 데이터 의존성에 의해 발생
      • 이전 명령어를 처리해야만 실행되는 경우가 존재
    • 데이터 의존적인 두 명령어를 동시에 실행 시, 파이프라인이 제대로 동작하지 않음
  2. 제어 위험(control hazard)
    • 분기 등으로 인한 프로그램 카운터의 갑작스러운 변화에 의해 발생
      • 프로그램 카운터는 현재 실행 중인 명령어의 다음 주소로 갱신됨
      • 그러나 실행 흐름이 바뀌어 분기가 발생해 명령어의 순서가 바뀌게 되면
        파이프라인에 미리 가져와둔 명령어들이 쓸모 없어짐
  3. 구조적 위험 (structural hazard)
    • 명령어들을 겹쳐 실행하는 과정에서 서로 다른 명령어가 동시에 CPU 자원을 사용하려할 때 발생
    • 자원 위험(resource hazard)이라고도 부름

 

2) 슈퍼스칼라(superscalar)

  • CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
    • 공장 생산 라인을 여러개 두는 것과 같음
  • 이론적으로 파이프라인 개수에 비례하여 프로그램 처리 속도가 증가해야하나,
    파이프라인 위험 등의 예상치 못한 문제때문에 비례하지 속도가 증가하지 않는다.
  • 또한 여러 개의 파이프라인을 사용하기 때문에 파이프라인 위험을 방지하기 더 까다롭다.

 

3) 비순차적 명령어 처리(OoOE: Out-of-order-execution)

  • 파이프라인의 중단을 방지하기 위해 명령어를 순차적으로 처리하지 않는 명령어 병렬 처리 기법
  • 선순위 명령어가 실행되는 명령어들과 데이터 의존성이 있을 때, 순서를 바꿔 처리해도 되는 후순위 명령어들을 먼저 처리하는 방법
    • 대기 시간 감소
  • CPU 성능 향상에 크게 기여한 기법

 

3. CISC와 RISC

1) ISA(Instruction Set Architecture)

  • CPU의 언어이자 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속
    • CPU가 이해할 수 있는 명령어들의 모음
  • CPU 제조사마다 ISA가 다름
    • ISA가 다르면 서로의 명령어를 이해하지 못함

 

2) CISC(Complex Instruction Set Computer)

  • 복잡한 명령어 집합을 활용하는 컴퓨터
    • x86, x86-64
  • 명령어 형태와 크기가 다양한 가변 길이 명령어를 활용
  • 상대적으로 적은 수의 명령어로도 프로그램을 실행할 수 있음
    • 메모리 공간 절약
  • 명령어의 크기와 실행되기까지의 시간이 일정하지 않음
  • 복잡한 명령어 때문에 명령어 하나를 실행하는 데에 여러 클럭 주기가 필요할 수 있음

▶CISC는 명령어마다 처리 시간이 달라지기 때문에 명령어 파이프라인을 구현하기 어렵다.
    → 파이프라인 규격화의 어려움

▶복잡한 연산을 기능을 제공하는 다양한 명령어들이 존재하지만, 자주 사용되는 명령어만 쓰인다.

 

3) RISC(Reduced Instruction Set Computer)

  • CISC의 한계를 극복하기 위해 등장
    • 빠른 처리를 위해 명령어 파이프라인을 활용해야 한다.
      • 원활한 파이프라이닝을 위해 명령어 길이와 수행시간이 짧고 규격화 되어 있어야한다.
    • 자주 쓰이는 명령어만 사용된다.
      • 자주 쓰이는 기본적인 명령어를 작고 빠르게 만드는 것
  • 1클럭 내외로 실행되는 고정 길이 명령어를 활용
  • CISC에 비해 명령어의 종류가 적음

'컴퓨터 구조 &운영체제 > 컴퓨터구조 + 운영체제' 카테고리의 다른 글

입출력장치  (0) 2024.02.13
메모리와 캐시 메모리  (0) 2024.02.07
CPU의 작동 원리  (0) 2024.02.05
명령어  (0) 2024.02.02
데이터  (1) 2024.01.22