우리가 기계를 고를 때 어떤 부분을 고려하는지 알아보자
먼저 성능이 가장 좋은지를 고려해 볼 수 있고
다음으로는 적절한 비용이 드는지 고려해볼 수 있다.
그렇다면 디자인에서는 어떤 부분을 고려하는가?
향상된 수행능력을 뽐낼 수 있는지 아니면 적은 비용이 드는지를 고려해 볼 수 있다.
두 부분 모두 비교에 근거하여 요구하고 각각의 평가의 기준이 존재한다.
이는 컴퓨터 구조에서도 똑같이 일어난다.
Plane | DC to Paris | Speed | Passengers | Throughput |
Boeing 747 | 6.5 hours | 6101 mph | 470 | 286,700 |
BAD/Sud Concorde |
3 hours | 1350 mph | 132 | 178,200 |
예를 들어 두가지의 비행기들 중 더 높은 성능을 내는 비행기가 무엇인지 비교하여 보자
먼저 반응 시간(일 처리 시간)은 Concorde가 2.2배(1350 mph / 610 mph)더 빠르다고 볼 수 있다.
다음으로 단위시간 당 일 처리량은 Concorde가 (178,200 pmph / 286,700 pmph)0.62배 만큼 더 빠르고
Boeing은 (286,700 pmph / 178,200 pmph)1.60배 만큼 더 빠르다
따라서 Boeing은 단위시간 처리량이 1.6배(60%)더 빠르고
Concorde는 2.2배만큼 더 반응속도(일 처리 시간)가 빠르다고 볼 수 있다.
평가 방법
평가기준 | 장점 | 단점 |
실제 환경 | 대표적인 평가 방법 | 매우 복잡하다 실행하거나 측정하기 어렵다 원인을 특정하기 어렵다 |
특정 프로그램 벤치마크 | 유용하다 널리 퍼진 방법이다 현실에서 유용한 결과를 얻을 수 있다 |
대표성이 떨어진다 |
핵심만 벤치마크 | 실행하기 쉽다 사이클을 디자인하기 쉽다 |
결과가 조작될 수 있다. |
성과 측정 기준
종류 | 기준 |
Application Programming language Compiler |
프로그램 당 실행시간 초당 작업 수 |
ISA | 초당 몇백만개의 명령어를 실행하였는가?(MIPS) |
Datapath Control Functin Units Transistors Wires Pins |
초당 메가바이트 초당 사이클(clock rate) |
CPI
CPI란? Average cycles per instruction(기계 명령어 하나 당 사이클을 얼마나 쓰는가?)를 뜻한다.
CPI = (CPU Time * Clock Rate) / Instruction Count
= Clock Cycles / Instruction Count
CPU Clocking
만약 Clock period가 4GHz일 때 Clock cycle time은
4GHz = 4 * 10^9 * ? = 1초
?에 들어갈 숫자는 Clock cycle time = 1 / Clock Rate이다.
그러므로 Clock cycle time은 Clock Rate의 역수이다.
CPU Time = CPU Clock Cycles * Clock Cycle TIme
= CPU Clock Cycles / Clock Rate
** 성능의 향상은
1. Clock Cycles의 갯수를 줄이기
2. Clock Rate 늘리기
3. 하드웨어 디자이너는 Clock Count에 반대하여 Clock Rate를 주고받아야 한다. **
예를 들어 2GHz clock, 10s CPU time의 컴퓨터 A가 있을 때
6s CPU time, 더 빠른 clock을 가지지만 1.2 * clock cycles(A)를 가지는 컴퓨터 B를 디자인하려할 때 컴퓨터 B는 얼마나 빨라야 하는가?
Clock Rate(B) = Clock Cycles(B) / CPU Time(B) = 1.2 * Clock Cycles(A) / 6s
Clock Cycles(A) = CPU Time(A) * Clock Rate(A)
= 10s * 2GHz = 20 * 10^9
Clock Rate(B) = 1.2 * 20 * 10^9 / 6s = 24 * 10^9 / 6s = 4GHz
Count and CPI
Clock Cycles = Instruction Count * Cycles per Instruction
CPU Time = Instruction Count * CPI * Clock Cycle Time = Instruction Count * CPI / Clock Rate
Computer A: Cycle Time = 250ps, CPI = 2.0
Computer B: Cycle Time = 500ps, CPI = 1.2 인 컴퓨터가 있을 때 어느 컴퓨터가 더 빠른가?
CPU Time(A) = Instruction Count * CPI(A) * CycleTime(A)
= I * 2.0 * 250ps = I * 500ps
CPU Time(B) = Instruction Count * CPI(B) * CycleTIme(B)
= I * 1.2 * 500ps = I * 600ps
이므로 CPU Time(B) / CPU Time(A) = I * 600ps / I * 500ps = 1.2
A컴퓨터가 B컴퓨터보다 1.2배 더 빠르다.
Class | A | B | C |
CPI for class | 1 | 2 | 3 |
IC in sequence 1 | 2 | 1 | 2 |
IC in sequence 2 | 4 | 1 | 1 |
Sequence 1: IC = 2 + 1 + 2 = 5
Clock Cycles = 2 * 1 + 1 * 2 + 2 * 3 = 10
CPI Avg = 10 / 5 = 2.0
Sequence 2: IC = 4 + 1 + 1 = 6
Clock Cycles = 4 * 1 + 1 * 2 + 1 * 3 = 9
CPI Avg = 9 / 6 = 1.5
RISC processor Example
1. 만일 Load Time이 2 Cycle로 바뀐다면 데이터 캐시를 얼마나 줄일 수 있는 가?
Load의 Cycles가 2로 바뀌면 CPI는 0.4가 된다. 원래의 CPI는 2.2이고 바뀐 CPI는 1.6이 되므로 2.2/1.6배가 된다.
2. Branch time을 주기적으로 줄이면 어떻게 변화하는가?
Branch Cycle을 1로 줄이면 CPI는 0.2가 된다. 그러므로 원래의 CPI와 비교하여 2.0 / 2.2배가 된다.
3. 만약 두 개의 ALU가 한번에 실행이 된다면 어떻게 변화하는가?
먼저 ALU의 Frequence를 25%로 줄인다면 전체 퍼센트는 75%가 되므로 CPI를 다시 계산해 주어야 한다.
ALU = 25/75 Load = 20/75 Store 10/75 Branch = 20/75 이므로
CPI = 25/75 * 1 + 20/75 * 5 + 10/75 * 3 + 20/75 * 2 = 2.6
'Study > Architecture' 카테고리의 다른 글
컴퓨터 구조 분야의 8가지 위대한 아이디어 (0) | 2023.03.10 |
---|---|
ISA, CISC, RISC (0) | 2023.03.07 |