본문 바로가기
~ 2024.03/컴퓨터 구조 + 운영체제

[컴퓨터 구조] CPU 성능 향상 기법

by Monett 2024. 1. 3.
반응형

혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다.
현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다.

 

빠른 CPU를 위한 설계 기법

클럭

  • 컴퓨터 부품들은 클럭 신호에 맞춰 일사불란하게 움직인다.
  • CPU는 명령어 사이클이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 

위 두가지 명제는 클럭 속도가 높으면 빠르게 작동할 것으로 기대되지만 실제로는 그렇지 않다.

기본 클럭 속도와 최대 클럭 속도가 있으며, 클럭 속도만 높이면 발열 문제가 발생해 한계가 있다.

 

클럭 속도는 Hz(헤르츠) 단위로 측정하며 1초에 클럭이 몇 번 반복되는지 나타낸다.

 

코어와 멀티 코어

현대에는 명령어를 실행하는 부품을 여러 개 장착 가능하다. 명령어를 실행하는 부품을 코어라고 부르며, 하나의 CPU안에 여러 개의 코어가 포함되어 있다.

이러한 CPU를 멀티 코어 CPU 혹은 멀티 코어 프로세서라고 부른다.

 

단, 클럭과 마찬가지로 무작정 코어가 많다고 해도 성능이 향상되지는 않는다. 코어마다 처리할 명령어를 얼마나 적절하게 분배하느냐가 중요하다.

 

스레드와 멀티 스레드

스레드는 실행 흐름의 단위이다.

  • 하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위 
  • 소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위, 프로그램의 여러 부분이 동시에 실행될 수 있다.

하나의 코어로 여러 명령어를 동시에 처리할 수 있는 CPU를 멀티 스레드 CPU 또는 멀티 스레드 프로세서라고 한다. 

 

인텔의 멀티 스레드 기술을 하이퍼스레딩이라고 부른다.

 

멀티 스레드 프로세서의 핵심은 레지스터이다. 명령어 레지스터 등의 핵심 레지스터들을 레지스터 세트라고 부를 때, 세트가 여러 개면 동시 실행이 가능하다.


명령어 병렬 처리 기법

높은 클럭, 멀티 코어, 멀티 스레드도 중요하지만 CPU를 알뜰하게 사용하는 것도 중요하다.

 

CPU를 알뜰하게 사용하는 방법 중 몇 가지를 알아보자.

  • 명령어 병렬 처리 기법(ILP)
    • 명령어 파이프라인
    • 슈퍼 스칼라
    • 비순차적 명령어 처리

명령어 파이프라인

일반적인 명령어 처리 과정은 인출 -> 해석 -> 실행 -> 저장으로 이루어진다.

이러한 처리과정을 여러 개 겹쳐 실행하는 것이 명령어 파이프라인이다.

 

특정 상황에서 성능 향상이 실패할 경우 파이프 라인 위험이라고 한다.

  • 데이터 위험 : 명령어간 데이터 의존성에 의해 발생. 이전 명령어의 데이터가 다음 명령어에 영향을 끼치는 경우
  • 제어 위험 : 분기 등으로 인한 프로그램 카운터의 갑작스러운 변화로 발생. 이를 방지하기 위해 분기 예측 기술을 사용하여 프로그램이 어디로 분기할 지 예측 후 주소를 인출한다.
  • 구조적 위험 : 겹쳐 실행하는 과정에서 동시에 CPU 부품을 사용하여 발생. 자원 위험이라고도 부른다.

슈퍼 스칼라

여러 개의 파이프라인을 이용한다.

비순차적 명령어 처리

OoOE라고 부르며, 대부분의 CPU가 차용한다.

순서를 바꿔도 무방한 명령어를 먼저 실행하여 파이프라인이 멈추는 것을 방지한다.


CISC와 RISC

명령어는 CPU마다 조금씩 차이가 있으며, CPU가 이해할 수 있는 명령어들의 모음을 명령어 집합 또는 명령어 집합 구조(ISA)라고 한다. CPU마다 ISA가 다를 수 있다. (x86과 ARM은 서로의 ISA를 이해할 수 없다.) 

또한, 어셈블리어도 다르다.

CISC

Complex Instruction Set Computer의 약자로 복잡한 명령어 집합을 활용하는 컴퓨터이다.

대표적인 CISC기반의 ISA는 x86이다.

 

명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용한다.

하나의 명령어가 복잡한 작업을 수행하기에 x86 어셈블리어 코드는 ARM 어셈블리어 코드보다 짧다.

 

단, 명령어가 복잡해 여러 클럭 주기에 걸쳐 실행되며, 파이프라이닝이 어렵다. 

따라서 성장에 한계가 있을 수 있다.

RISC

Reduced Instruction Set Computer의 약자로 명령어 종류가 적고, 짧고 규격화된 명령어(고정 길이 명령어)를 사용한다.

파이프라이닝에 최적화되어있다.

반응형