Instruction Count and CPI

프로그램의 실행 시간(CPU Time)은 명령어 개수(Instruction Count), 명령어 당 평균 수행 사이클(Cycles per Instruction, CPI), 그리고 클럭 사이클 주파수(Clock Cycle Time)의 곱으로 계산됩니다. 따라서, CPU Time을 최소화하려면 Instruction Count, CPI, 그리고 Clock Cycle Time을 최적화할 필요가 있습니다.
Instruction Count는 프로그램, ISA(Instruction Set Architecture), 그리고 컴파일러에 따라 결정됩니다. CPI는 CPU 하드웨어의 특성에 따라 결정되며, 다양한 명령어들이 각각 다른 CPI를 가지므로, Instruction Mix에 따라서도 영향을 받습니다. 마지막으로, Clock Cycle Time은 클럭 주파수(Clock Rate)에 반비례하며, 더 높은 클럭 주파수를 사용하면 Clock Cycles는 감소하지만, CPI는 증가할 수 있습니다.
따라서, 실행 시간을 최소화하려면 Instruction Count와 CPI를 최적화하고, 이를 위해서는 프로그램 최적화와 CPU 하드웨어 최적화가 모두 필요합니다.
CPI 계산 예시

A 컴퓨터와 B 컴퓨터는 같은 ISA를 사용하지만, Cycle Time과 CPI가 서로 다릅니다. A 컴퓨터는 Cycle Time이 250ps이고, CPI가 2.0이며, B 컴퓨터는 Cycle Time이 500ps이고, CPI가 1.2입니다.
이 경우, 두 컴퓨터의 CPU Time을 계산해보면, A 컴퓨터의 CPU Time은 Instruction Count x CPIA x Cycle Time으로 계산됩니다. 따라서, A 컴퓨터의 CPU Time은 1x2.0x250ps = 500ps입니다. 마찬가지로, B 컴퓨터의 CPU Time은 Instruction Count x CPIB x Cycle Time으로 계산됩니다. 따라서, B 컴퓨터의 CPU Time은 1x1.2x500ps = 600ps입니다.
이를 비교해보면, A 컴퓨터가 B 컴퓨터보다 CPU Time이 더 작으므로, A 컴퓨터가 더 빠른 것입니다. 따라서, CPU Time을 최소화하기 위해서는 Cycle Time과 CPI를 모두 최적화하여야 합니다.
CPI에 대한 좀 더 구체적인 내용, Weighted average CPI

가중 평균 CPI(Weighted average CPI)를 계산하려면 먼저 각 명령어 클래스의 CPI를 계산해야 합니다. 이것은 해당 명령어 클래스를 실행하는 데 필요한 클럭 사이클 수입니다. 그런 다음, 각 명령어 클래스의 CPI를 해당 클래스의 상대적 빈도(해당 클래스의 명령을 실행하는 횟수 / 총 실행한 명령어 수)와 곱해야 합니다.
각 명령어 클래스의 CPI를 해당 클래스의 상대적 빈도와 곱한 후, 그 모든 곱을 더합니다. 그 다음, 그 합을 실행한 총 명령어 수로 나눕니다. 이렇게 하면 다른 유형의 명령어에 필요한 사이클 수를 고려한 가중 평균 CPI를 얻을 수 있습니다.
전반적으로 CPI를 최소화하는 것은 프로세서의 성능을 향상하는 데 중요합니다. 각 명령어를 실행하는 데 필요한 사이클 수를 줄이면 프로세서의 전체 속도를 향상시키고 소비 전력을 줄일 수 있습니다.
또 다른 CPI 계산

Alternative compiled code sequences를 사용하여 instruction classes A, B, C를 사용하는 두 가지 sequence를 비교하고 있습니다. 각 sequence에서 명령어 클래스 A, B, C의 CPI를 계산하고, 이를 사용하여 가중 평균 CPI를 계산합니다.
Sequence 1에서는 IC(Instruction Count)가 5이며, Clock Cycles는 2x1 + 1x2 + 2x3으로 계산됩니다. 이에 따라 가중 평균 CPI는 10/5 = 2.0이 됩니다. Sequence 2에서는 IC가 6이며, Clock Cycles는 4x1 + 1x2 + 1x3으로 계산됩니다. 이에 따라 가중 평균 CPI는 9/6 = 1.5가 됩니다.
퍼포먼스에 대한 요약 ( 이것만 봐도 총정리 됨... 이걸 마지막에 말해서 죄송합니다 )

CPU Time을 계산하는 공식과 함께 성능에 영향을 미치는 요소들을 설명하고 있습니다. 이 중에서도 가장 중요한 것은 알고리즘입니다. 알고리즘이 복잡하면 명령어 수(IC)가 증가하게 되고, 이는 CPU Time에 직접적인 영향을 미칩니다. 또한, 프로그래밍 언어와 컴파일러도 IC와 CPI에 영향을 미치며, Instruction Set Architecture(ISA)는 IC, CPI, 그리고 클럭 사이클의 시간(Tc)에도 영향을 미칩니다.
결론
CPI에 대한 계산, 기본적으로 바로 위에 퍼포먼스에 대한 요약을 달달달 외우고, 그 다음에 이해해도 늦지 않습니다
다음 시간에는 전력량 경향(Power Trends)에 대해 소개하겠습니다.
'컴퓨터.반도체' 카테고리의 다른 글
컴퓨터 구조 1 - MIPS? (1) | 2023.05.17 |
---|---|
컴퓨터 구조 1 - Reducing Power (0) | 2023.05.16 |
컴퓨터 구조 1 응답시간 및 처리량(Response Time and Throughput) (0) | 2023.05.11 |
컴퓨터 구조 1 각각의 하드웨어와 반도체의 제작에 대하여 (0) | 2023.05.10 |
컴퓨터 구조 1 Computer Abstractionsand Technology (0) | 2023.05.08 |
댓글