본문으로 건너뛰기
HMYHardware Wiki

HMY-Wiki

하드웨어 / CPU

CPU의 구조와 명령 실행

CPU는 메모리에 놓인 명령을 가져와 해독하고, 필요한 데이터를 읽어 연산한 뒤 결과를 기록한다. 이 흐름은 명령어 인출, 해독, 실행, 메모리 접근, 결과 확정으로 나눌 수 있지만 현대 CPU는 여러 명령의 단계를 겹치고 순서를 재배치해 실행 유닛이 쉬는 시간을 줄인다.

명령 실행 단계

인출
메모리에서 명령을 가져온다
해독
명령의 의미를 해석한다
실행
연산 유닛이 계산한다
메모리 접근
필요한 데이터를 읽거나 쓴다
결과 확정
리오더 버퍼가 프로그램 순서대로 확정한다

구성 요소

프런트엔드
명령 인출·해독과 분기 예측
백엔드
스케줄러와 정수·부동소수점·벡터·로드/스토어 유닛
레지스터·캐시
현재 연산에 가장 가까운 저장 공간

프런트엔드는 명령 바이트를 가져와 경계를 찾고 내부 동작으로 변환한다. 분기 예측기는 조건문과 함수 호출 뒤에 실행할 주소를 미리 고른다. 백엔드의 스케줄러는 입력 데이터가 준비된 동작을 정수·부동소수점·벡터·로드/스토어 유닛에 보낸다. 실행은 순서가 달라질 수 있지만 리오더 버퍼가 프로그램이 보는 결과를 원래 순서대로 확정한다.

코어와 스레드

코어는 독립적인 명령 실행 자원과 상태를 가진 처리 단위다. 동시 멀티스레딩(Simultaneous Multithreading, SMT)은 한 코어가 둘 이상의 하드웨어 스레드 상태를 유지해 빈 실행 자원을 활용한다. 논리 CPU가 두 배로 보인다고 물리 코어와 실행 자원이 모두 두 배가 되는 것은 아니다.

하이브리드 CPU는 서로 다른 크기와 목표를 가진 코어를 한 패키지에 넣는다. 성능 지향 코어와 효율 지향 코어의 작업 배치는 운영체제 스케줄러, 펌웨어, 프로그램의 스레드 특성에 영향을 받는다.

데이터를 기다리는 시간

레지스터는 현재 연산에 가장 가까운 저장 공간이고, 캐시는 최근 사용한 명령과 데이터를 보관한다. 캐시에 없으면 DRAM까지 접근해야 하므로 지연시간이 크게 늘어난다. 분기 예측, 비순차 실행과 많은 미처리 메모리 요청은 이 대기 시간을 다른 작업으로 가리는 기술이다.

명령 수와 실행 시간의 관계

명령 실행에는 처리량과 지연시간이라는 두 제약이 있다. 독립적인 덧셈 여러 개는 여러 실행 자원에 나눌 수 있지만, 앞선 덧셈 결과를 다음 덧셈이 입력으로 쓰는 연쇄는 그 결과를 기다려야 한다. 코어의 실행 폭이 넓어도 데이터 의존성이 강한 프로그램에서 모든 유닛이 채워지지 않는 이유다.

SMT도 이 빈자리를 다른 스레드의 명령으로 채우는 방식이다. 두 스레드가 같은 실행 유닛이나 캐시 대역폭을 많이 요구하면 자원을 경쟁하므로, 논리 스레드 수에 비례한 성능 향상을 기대하기 어렵다. 실제 작업의 병렬성과 메모리 접근을 함께 보는 과정은 CPU 선택 기준으로 이어진다.

다음 읽기: 파이프라인과 비순차 실행, CPU Cache, 명령어 집합과 마이크로아키텍처

참고 링크