혼공컴운 챕터 5. CPU 성능 향상 기법

김민영·2023년 1월 13일
0

혼공학습단

목록 보기
3/22
post-thumbnail

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

클럭

  • 클럭 속도 : Hz 단위. 클럭 속도가 빨라지면, CPU와 다른 부품들은 그만큼 빠른 박자에 맞게 움직임. CPU는 명령어 사이클을 빠르게 반복 -> 다른 부품들도 빠르게 동작
    (오버클러킹 : 최대 클럭 속도를 강제로 끌어올리는 기법)
  • 무작정 높이면 발열이 심해짐. ex) 게임, 영상편집 등...
  • 클럭 속도를 높이는 방법 : CPU 성능 높이기, CPU의 코어와 스레드 수 늘리기

코어와 멀티코어

  • 코어 : CPU에서 명령어를 실행하는 부품
  • 멀티코어 CPU, 멀티코어 프로세서 : 코어가 여러개인 CPU
    • 코어의 수에 비례해서 성능이 증가하지는 않음.
    • 코어마다 처리할 명령어를 적절하게 분배하는 것이 중요.

스레드와 멀티스레드

  • 스레드 : 실행 흐름의 단위.
  • 하드웨어적 스레드
    • 하나의 코어가 동시에 처리하는 명령어 단위. 여러 스레드를 지원하는 CPU는 하나의 코어로도 여러 개의 명령어를 동시에 실행할 수 있음.
    • -> 멀티스레드 CPU, 멀티스레트 프로세서
    • ex. 2코어 4스레드 CPU는 한 번에 4개의 명령어를 처리할 수 있음.
    • 하이퍼스레딩 : 인텔의 멀티스레드 기술
  • 소프트웨어적 스레드
    • 하나의 프로그램에서 독립적으로 실행되는 단위
    • ex. 화면 출력, 맞춤법 검사, 내용 수시로 저장을 동시에 하기

멀티스레드 프로세서 ( 하드웨어 )

  • 설계 시, 하나의 코어 내에 여러 레지스터를 넣음으로서 여러 명령어 수행을 동시에 할 수 있음.

  • 프로그램 입장에서는 하나의 명령어를 처리하는 CPU가 여러 개인 것처럼 보임.

  • 하드웨어 스레드 == 논리 프로세서 작업관리자에서 확인할 수 있다.

  • 멀티코어 프로세서 : 명령어를 실행할 수 있는 하드웨어 부품(코어)가 CPU 안에 두 개 이상 있는 CPU

  • 멀티스레드 프로세서 : 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU

5-2 명령어 병렬 처리 기법

  • 명령어 병렬 처리 기법 : 명령어를 동시에 처리해서 CPU를 쉬지 않고 작동 시키기
  • 종류
    • 명령어 파이프라이닝
    • 슈퍼스칼라
    • 비순차적 명령어 처리

명령어 파이프라인

  • 명령어 처리 과정 : 인출 해석 실행 저장
    • 명령어 인출
    • 명령어 해석
    • 명령어 실행
    • 결과 저장
  • 각 단계가 겹치지 않으면 CPU는 각 단계를 동시에 실행할 수 있다.
  • 명령어 파이프라인에 넣는 기법이 명령어 파이프라이닝
  • 파이프라인 위험 : 성능 향상에 실패하는 경우
    • 데이터 위험
      • 데이터 간 의존성에 의해 발생
      • ex. c = a + b, d = c + a 를 동시에 실행할 수는 없음. c 가 없는 상황일 수 있으므로.
    • 제어 위험
      • 분기 등으로 인한 프로그램 카운터의 갑작스러운 변화
      • 프로그램 카운터는 현재 실행 중인 명령어의 다음 주소로 자동 갱신. 분기가 발생하면 다른 명령어를 실행해야 하므로, 그 때 스케줄에 예정된 명령어를 실행하지 못하게 됨.
      • 분기 예측 : 프로그램의 분기를 예측한 후, 그 주소를 인출
    • 구조적 위험 == 자원 위험 : 명령어를 겹쳐 실행하는 과정에서 ALU, 레지스터와 같은 CPU 부품을 동시에 사용하려할 때 발생.

슈퍼스칼라

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

  • 슈퍼스칼라 프로세서, 슈퍼스칼라 CPU : 슈퍼스칼라 구조로 명령어 처리가 가능한 CPU

  • ex. 멀티스레드 프로세서 : 한 번에 여러 명령어 인출, 해석, 실행 가능하므로 슈퍼스칼라 구조 가능

  • 파이프라인 위험 때문에 파이프라인 개수와 성능이 비례하지는 않음.

    • 하나의 파이프라인 사용할 때보다 여러 파이프라인 사용 시 데이터 위험, 제어 위험, 자원 위험 피하기 어려움.
  • 파이프라인은 예상치 못한 상황에서 멈춰버리게 됨.

비순차적 명령어 처리

  • OoOE ( Out-of-order execution ). 새치기
  • 순서를 바꿔도 무방한 명령어를 먼저 실행. ( 의존성 없는 명령어 )

5-3 CISC와 RISC

  • 파이프라이닝을 위해서는 명령어가 최적화 되어있어야 함.

명령어 집합

  • 명령어 집합 == 명령어 집합 구조 (ISA: Instruction Set Archtecture)
    • CPU 마다 ISA가 다를 수 있음.
    • CPU가 어떤 명령어를 이해하는지에 따라 컴퓨터 구조 및 설계 방식이 달라짐.
    • ISA가 다르면 CPU가 이해하는 명령어가 다름. 어셈블리어도 다름.

CISC

  • Complex Instruction Set Computer
  • 복잡한 명령어를 활용하는 CPU 설계 방식
  • 복잡하고 다양한 수의 가변 길이 명령어 집합 활용
  • 다양한 명령어가 있기에 적은 수의 명령어로 프로그램 실행 가능.
  • 프로그램을 실행하는 명령어 수가 적다 == 컴파일된 프로그램의 크기가 작다.
  • 단점
    • 명령어 파이프라인을 구현하기 힘듦. 명령어 수행 시간이 길고, 명령어마다 수행 시간이 다름. 규격화되지 않음.

RISC

  • Reduced Instruction Set Computer
  • 1클럭 내외로 실행되는 고정 길이 명령어 활용
  • 단순하고 적은 수.
  • 메모리 직접 접근하는 명령어를 load, store 두 개로 제한. 메모리 접근 단순화, 최소화. load-store 구조라고도 부름.
  • 레지스터를 많이 활용. 레지스터를 이용한 연산 많고, 범용 레지스터 개수도 많음.
  • RISC는 CISC보다 많은 수의 명령어로 변환

미션
p.155 4번

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글