axnuo

[CA/혼공단] CPU 성능 향상 기법 본문

CS/CA

[CA/혼공단] CPU 성능 향상 기법

axnuo 2024. 1. 10. 12:15

Chapter 5. CPU 성능 향상 기법

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

클럭

컴퓨터 부품은 클럭 신호에 맞춰 일사불란하게 움직이므로 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들이 더 빠르게 작동함.

  • 클럭 속도 : Hz 단위로 측정

하지만 클럭 속도가 빨라지면 == CPU에 무리가 많이 가면 발열 문제가 발생함

코어와 멀티코어

  • 코어 : CPU 내에서 명령어를 실행하는 부품
  • ⇒ CPU는 코어를 여러 개 포함하는 부품으로 명칭의 범위가 확장 됨
  • 멀티코어 CPU (멀티코어 프로세서): 코어를 여러 개 포함하고 있는 CPU

코어가 많다고 비례하여 CPU의 성능이 좋아지는 것은 아님.

코어마다 처리할 연산이 적절히 분배되지 않거나 코어 수가 지나치게 많을 경우 성능에 큰 영향이 없음

스레드와 멀티스레드

  • 스레드 : 실행 흐름의 단위
    • 하드웨어적 스레드
    • 하나의 코어가 동시에 처리하는 명령어 단위
    • 소프트웨어적 스레드
    • 하나의 프로그램에서 독립적으로 실행되는 단위
    • 멀티스레드 프로세서하이퍼 스레딩 : 인텔의 멀티스레드 기술
    • ⇒ 설계 시 가장 핵심이 되는 것 = 레지스터
    • 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
    • 하드웨어스레드는
    • 2코어 4스레드 cpu는 한 번에 내 게의 명령어를 처리할 수 있는데 프로그램 입장에서는 cpu가 4개 있는 것처럼 보임… 그래서 논리 스레드라고 부르기도 한다.

05-2. 명령어 병렬 처리 기법

CPU가 시간을 알뜰하게 쓰며 작동하게 만드는 것도 중요한 요소 중 하나

명령어 파이프라인

명령어 처리 과정을 클럭 단위로 나눈 것

1 명령어 인출→ 2 명령어 해석 → 3 명령어 실행 → 4 결과 저장

  • 명령어 파이프라이닝 : 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법
  • ⇒ 명령어 하나를 실행하고 다음 명령어를 실행 < 각각의 단계로 나눠서 실행
  • 파이프라인 해저드 : 성능 향상에 실패하는 경우
    • 데이터 해저드 이 경우 r1에 r2+r3 값이 저장되지 않았는데 sub에서 r1 값을 읽어들임… sub는 add에 의존적인 것이고 이를 동시에 실행하려고 하면 파이프라인이 제대로 작동하지 않는다!
    • add r1 r2 r3 sub r4 r1 r5
    • 데이터 의존성에 의해 발생
    • 컨트롤 해저드→ branch prediction으로 프로그램이 어디로 분기할지 미리 예측한 후 그 주소를 인출
    • branch 명령어에서 발생하는 해저드!!
    • 프로그램 카운터의 갑작스러운 변화에 의해 발생
    • 구조적 해저드
    • 서로 다른 명령어가 동시에 ALU, 레지스터 등 같은 CPU 부품을 사용하려고 할 때 발생

슈퍼스칼라

CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조

  • 매 클럭 주기마다 동시에 여러 명령어를 인출 / 실핼할 수 있음
  • 멀티스레드 프로세서는 한 번에 여러 명령어를 인출 / 해석 / 실행할 수 있기 때문에 슈퍼스칼라 구조를 사용할 수 있음

⇒ 파이프라인 위험 등 예상치 못한 문제가 발생할 수 있기 때문에 고도로 설계되어야 함

비순차적 명령어 정리(OoOE)

명령어를 비순차적으로 실행함

해저드가 발생할 수 있는 상황이면 이후 의존하는 명령어의 값이 나온 후 실행하는 방식

05-3. CISC와 RISC

명령어 집합

CPU마다 ISA(명령어 집합 구조)가 다를 수 있음

→ ISA는 일정의 CPU 언어

ISA의 양대산맥 CISC와 RISC

CISC

복잡한 명령어 집합을 활용하는 컴퓨터

다양하고 강력한 기능의 명령어 집합을 활용하여 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용함

  • 장점 : 적은 수의 명령어로도 프로그램을 실행할 수 있음 ⇒메모리 절약!
  • 단점 : 활용하는 명령어가 다양한 기능을 제공하기 때문에 명령어의 크기와 실행되기까지의 시간이 일정하지 않음, 클럭 주기를 필요로 함⇒ 복잡한 명령어는 사용 빈도가 낮음
  • 따라서 CISC 기반 CPU는 성장에 한계가 있음
  • ⇒ 파이프라인을 구현하는데 큰 걸림돌이 됨

RISC

원활한 파이프라이닝을 위해 명령어 길이와 수행 시간이 짧고 규격화되어 있어야 함

자주 쓰이는 기본적인 명령어를 작고 빠르게 만드는 것이 중요하다

⇒ 명령어 종류가 적고 짧고 규격화된 명령어, 1 클럭 내외로 실행되는 명령어 즉 고정 길이 명령어를 활용함

  • 규격화 되어있고 한 명령어가 1클럭 내외로 실행되기 때문에 파이프라이닝에 최적화
  • 메모리 접근 단순화, 최소화 추구⇒ 레지스터 적극 활용
  • ⇒ 주소 지정 방식의 종류가 적은 경우가 많음
  • 명령어 개수가 적기 때문에 많은 명령으로 프로그램을 작동 시킴

필수 과제

p. 155의 확인 문제 4번 풀고 인증하기

코어!

선택 과제

Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기

⇒ 위의 내용 정리에 포함되어있음!