티스토리 뷰
본 포스팅은 "프로그래머가 몰랐던 멀티코어 CPU 이야기" 를 읽고 주인장의 생각을 정리한 게시글 입니다.
책정보, 프로그래머가 몰랐던 멀티코어 CPU 이야기 : 네이버 책 (naver.com)
1. CPU의 전투력
만화 드래곤볼을 보셨던 분이면, '스카우터'라는 장치를 아실겁니다.
상대방의 전투력을 숫자형태로 나타내고, 전투력이 높은 상대는 무조건 낮은 상대를 이길 수 있죠.
그렇다면, CPU의 절대적인 전투력이란것이 존재할까요?
세상에 많은 벤치마크 툴이 존재하지만, 이러한 벤치마크 점수가 CPU의 모든 성능을 반영해 주지 못합니다.
예를들어서 Intel CPU가 AMD CPU보다 벤치마크에서 밀리지만 게임 성능이 잘나온다는 등과 같은 일은 자주 있죠.
그래서, 이러한 수치적인 전투력 외에 하드웨어 레벨에서 CPU의 성능 지표가 되는 일부 Index에 대해서 다룹니다.
2. Clock
CPU의 절대성능 지표로 자주 등장하는 용어입니다.
CPU는 일정 주기마다 Pulse(파동)을 발생시키고, 이 파동에 응답해서 CPU의 구성(캐시, 디코더, ALU등등..) 성분들이 동작합니다.
이때 이 Pulse가 1회 발생하는 것을 1Clock이라고 부릅니다.
예를들어 4.5 Ghz = 4.5 * 10^9 hz = 1초에 4.5*10^9번 Clock이 발생한다고 할 수 있습니다.
즉 CPU의 구성성분들이 1초에 최대 4.5*10^9개의 요청을 처리할 수 있다는 말이 됩니다.
하지만 CPU의 아키텍쳐, 제조회사 마다 CPU의 구성 성분들이 처리할 수 있는 작업, 능력이 다르기 때문에 Clock만 가지고 절대성능을 말할 수는 없습니다.
(그 예로 AMD 불도저의 경우 5Ghz clock을 가지고도 영 좋지못한 성능을 보여주었죠)
또 한가지는 같은 아키텍쳐에서 Clock이 올라간다고 성능이 선형적으로 증가하는 것이 아니라는 점 입니다.
(이부분은 나중에 다루겠습니다)
3. CPI(Cycle per Instruction)
현대 CPU는 1clock마다 명령어를 실행하는 것이 아니라, pipeline이라는 방식으로 명령어를 나누고, 이 pipeline을 실행하는 방식으로 사용자명령을 처리합니다.
(PipeLine에 대해서는 나중에 다룹니다)
Cycle Per Instruction은 이렇게 나눠진 파이프라인이 온전히 끝날때 까지 걸리는 CPU의 clock이 얼마나 필요한지를 의미합니다.
하지만 CPI라는 단어에서 유추할 수 있듯, Instruction마다 소요되는 Cycle이 다릅니다.
예를들어 ALU연산은 1CPI면, 캐시에서 메모리를 읽는 작업은 4CPI, 분기문은 평균 12CPI와 같으며, 작업의 상황에 따라 CPI는 달라지게 됩니다.(메모리를 캐시, 레지스터, 디스크에서 읽느냐 와 같은...)
T = sigma(N(i명령어의 수) * CPI_i(i명령어의 CPI)) * T_cycle을 통해서 원하는 설정한 명령어들의 수행 시간을 계산하고, 같은 Clock을 갖는 CPU간에 정해진 명령어의 성능비교는 가능하다고 볼 수 있습니다.
4. IPC(Instrucntion Per Cycle)
그래서 가장 자주 언급된느 지표가 바로 IPC입니다.
IPC는 1회의 clock당 완료되는 명령어의 수를 의미합니다.
위에서 언급했든 pipeline방식을 통해서 첫 명령어가 완료된 이후에는 1초에 하나의 명령어가 완료되지 않고 동시에 다수의 명령어가 중첩되어 실행됩니다.
CPU의 명령어throughput 정도로 생각할 수 있으며, 현재 가장 신뢰성이 있는 CPU성능지표로 여겨집니다.
대신, IPC역시 Instrunction의 종류에 따라 값이 달라지는것을 유추할 수 있습니다.
때문에 IPC를 비교할 때 대부분 수치로 비교하기보다, X보다 N%높아졌다와 같은 상대지표로 자주 활용됩니다.
인텔/AMD X86 아키텍처들의 IPC 성능 랭킹 - 컴퓨터 / 하드웨어 - 기글하드웨어 (gigglehd.com)
사아실... CPI를 역수로 뒤집으면 IPC가 나옵니다. 이때 CPI는 클수록 나쁜고, IPC는 클수록 좋은 수치가 되기 때문에, 아무래도 비교와 대외적으로 사용하기 좋아서 IPC가 더 대중적으로 사용되지 않는다.. 싶습니다.
'컴퓨터과학 > CPU' 카테고리의 다른 글
명령어 파이프라인(1편) (0) | 2022.06.03 |
---|---|
CPU동작(BackEnd) (0) | 2022.06.02 |
CPU동작(FrontEnd) (0) | 2022.05.12 |
가상메모리 (0) | 2022.05.10 |
RISC과 CISC (0) | 2022.05.09 |
- Total
- Today
- Yesterday
- GDC
- 컴퓨터그래픽스
- SIMD
- 프로그래머스
- Greedy알고리즘
- git
- C++
- 병렬처리
- stack
- 이분탐색
- prime number
- hash
- 알고리즘
- heap
- 분할정복
- AVX
- 자료구조
- 동적계획법
- 사칙연산
- 완전탐색 알고리즘
- Search알고리즘
- Python
- Sort알고리즘
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |