Performance(성능)
요거는 시험에 나올듯. 천천히 자세히 제대로 공부하자!
항속, 비행 거리, 탑승 인원 등 어디에 초점을 맞출 것이냐에 따라 "가장 빠른 비행기"에 대한 정의가 다 다를 수 있다.
컴퓨터의 성능도 이와 마찬가지로 여러 가지 방법으로 정의할 수 있다.
- Response time (latency) & Throughput
1. Response time (latency) 응답시간 -> focus in this class
작업 개시에서 종료까지의 시간, 즉 실행시간(execution time)
컴퓨터 사용자 개인의 입장에서 중요
2. Throughput 처리량 = 대역폭 (bandwidth)
일정한 시간 동안 처리하는 작업의 양
데이터센터 관리자 입장에서 중요
응답시간을 단축시키면 거의 대부분 처리량도 좋아진다!
성능x = 1 / 실행시간x
(성능을 최대화하기 위해서는 어떤 태스크의 응답시간 또는 실행시간을 최소화 해야 함)
둘은 반비례 관계. 실행시간이 짧을 수록 성능이 좋겠지 당연히..
A가 B보다 n배 빠르다면 성능비는
15 / 10 = 1.5
컴퓨터 성능을 정량적으로 비교할 때는 "~보다 빠르다"라는 용어만 사용한다.
(-> A is 1.5 times faster than B)
성능과 실행시간은 역관계이므로, 성능을 증가시키면 실행시간은 감소한다.
-> 성능을 개선시키면 실행시간이 개선된다.
사용자의 입장에서는 주로 시간에 관심을 갖게 되지만, 컴퓨터의 세세한 부분을 평가할 때는 다른 성능 척도를 사용하는 것이 편리할 때가 있다. 특히 컴퓨터 설계자는 하드웨어가 기본 함수를 얼마나 빨리 처리할 수 있는지와 관련된 성능 측도를 필요로 한다.
거의 모든 컴퓨터는 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용하여 만들어진다.
이 클럭의 시간 간격을 클럭 사이클(틱, 클럭 틱, 클럭 주기, 클럭, 사이클) 이라 한다.
클럭 주기는 한 클럭 사이클에 걸리는 시간(ex. 250ps(피코세컨즈))이나 클럭 속도(ex. 4GHz)로 표시한다.
클럭 속도는 클럭 주기의 역수
<CPU Time>
CPU Time = CPU Clock Cycles x Clock Cycle Time
(프로그램의 CPU 실행시간 = 프로그램의 CPU 클럭 사이클 수 x 클럭 사이클 시간)
CPU Time = CPU Clock Cycles / Clock Rate
(프로그램의 CPU 실행시간 = 프로그램의 CPU 클럭 사이클 수 / 클럭 속도)
(클럭 속도와 클럭 사이클 시간은 역수 관계이므로!)
교재 p.36 예제- 성능 개선
Q. 2GHz 클럭의 컴퓨터 A에서 10초에 수행되는 프로그램이 있다. 이 프로그램을 6초 동안에 실행할 컴퓨터 B를 설계하고자 한다. 클럭 속도는 얼마든지 빠르게 만들 수 있는데, 이렇게 하면 CPU 다른 부분의 설계에 영향을 미쳐 같은 프로그램에 대해 A보다 1.2배 많은 클럭 사이클이 필요하게 된다고 한다. 컴퓨터 B의 클럭 속도는 얼마로 해야 하겠는가?
스스로 적어보는 과정)
CPU Time = CPU Clock Cycles x Clock Cycle Time
CPU Time = CPU Clock Cycles / Clock Rate
A의 Clock Rate = 2GHz -> 2 x 10^9
A의 CPU Time = 10
B의 CPU Time = 6
B의 CPU Clock Cycles = A x 1.2
A의 CPU Clock Cycles를 먼저 계산해보자.
CPU Time = CPU Clock Cycles / Clock Rate 요 식을 A의 경우에 대입해보면
10 = CPU Clock Cycles / 2 x 10^9
-> A의 CPU Clock Cycles는 10 x 2 x 10^9가 된다.
그렇다면 B의 Clock Rate는 어떻게 구할까?
CPU Time = CPU Clock Cycles / Clock Rate 다시 요 식을 B의 경우에 대입해보면
6 = A의 Clock Cycles x 1.2 / Clock Rate
6 = 10 x 2 x 10^9 x 1.2 / Clock Rate
-> B의 Clock Rate는 10 x 2 x 10^9 x 1.2 / 6
계산해보면 4 x 10^9 -> 4GHz가 된다.
컴퓨터 B의 클럭 속도는 4GHz, 즉 A 클럭 속도의 두 배가 되어야 한다. (두 배 빨라야 한다.)
<명령어 성능>
컴파일러가 실행할 명령어를 생성하고 컴퓨터는 이 명령어를 실행해야 하기 때문에, 실행시간은 프로그램의 명령어 수와 관련이 있다. 이런 관점에서 실행시간을 실행 명령어 수에 명령어의 평균 실행시간을 곱한 값으로 계산할 수도 있다.
Clock Cycles = Instruction Count x Cycles Per Instruction
CPU 클럭 사이클 수 = 명령어 수 x 명령어당 평균 클럭 사이클 수
명령어당 평균 클럭 사이클 수 (clock cycles per instruction)는 CPI로 줄여 쓰기도 한다.
명렁어마다 실행시간이 다르므로 CPI는 프로그램이 실행한 모든 명령어에 대해 평균한 값을 사용한다.
교재 p.37 예제
Q. 같은 명령어 집합 구조를 구현한 컴퓨터 두 종류가 있다. 컴퓨터 A의 클럭 사이클 시간은 250ps이고 어떤 프로그램에 대한 CPI는 2.0이며, 컴퓨터 B의 클럭 사이클 시간은 500ps, CPI는 1.2이다. 이 프로그램에 관해서는 어떤 컴퓨터가 얼마나 더 빠른가?
스스로 적어보는 과정)
같은 명령어 집합 구조를 구현했으므로 명렁어 수는 같을 것이다. 이를 I 라고 두자.
CPU_A 클럭 사이클 수 = I x 2.0(CPI)
CPU_B 클럭 사이클 수 = I x 1.2(CPI)
CPU시간_A = CPU 클럭 사이클 수 x 클럭 사이클 시간
= I x 2.0 x 250ps = 500 x I ps
CPU시간_B = CPU 클럭 사이클 수 x 클럭 사이클 시간
= I x 1.2 x 500ps = 600 x I ps
A가 B보다 600 / 500 = 1.2배 빠르다.
<CPU 성능식>
CPU Time = Instruction Count x CPI x Clock Cycle Time
CPU 시간 = 명령어 개수 x CPI x 클럭 사이클 시간
클럭 속도는 클럭 사이클 시간의 역수이므로,
CPU 시간 = (명령어 개수 x CPI) / 클럭 속도
교재 p.41 스스로 점검하기
Q. 자바로 작성된 어떤 응용 프로그램이 데스크톱 프로세서에서 15초 걸려 수행되었다. 새로운 자바 컴파일러가 발표 되었는데 이전 컴파일러에 비하여 명령어 개수의 비율을 0.6으로 줄였다. 하지만 CPI는 1.1배 커졌다. 새로운 컴파일러를 사용하면 이 응용 프로그램을 얼마나 빨리 수행할 수 있겠는가?
A. 15 x 0.6 x 1.1 = 9.9초
'SKKU SW > Computer Architecture' 카테고리의 다른 글
[컴퓨터구조] 명령어(instruction) / 명령어집합(instruction set) 그리고 간단한 arithmetic operation (0) | 2023.04.14 |
---|---|
1.0E6이 뭐야 (0) | 2023.04.14 |
[컴퓨터구조] SPEC CPU Benchmark + 전력 장벽 (0) | 2023.04.13 |
[컴퓨터구조] (semiconductor) technologies (0) | 2023.04.12 |
[컴퓨터구조] Seven Great Ideas in Computer Architecture (0) | 2023.04.12 |