공부하는 스누피
[컴퓨터구조] 계산 문제 모음 본문
컴퓨터구조를 공부하면서 나오는 계산 문제를 따로 정리해두고자 한다.
- 상대 성능
성능 = 1/실행시간
A가 B보다 n배 빠르다면
B실행시간/A실행시간 = n
- CPU 성능
CPU 실행시간 - 특정 작업의 실행을 위해 CPU가 소비한 실제 시간 (다른 프로그램 실행시간, 입출력 포함x)
사용자 CPU 실행시간 - 프로그램 자체에 소비된 CPU 시간 => CPU 성능
시스템 CPU 시간 - 프로그램의 수행을 위해서 운영체제가 소비한 CPU 시간 (정확히 구하기 어려움) => 시스템 성능
클럭 사이클: 일정한 속도를 가지고 동작하는 프로세서 클럭 한 주기 동안의 시간
클럭 주기: 한 클럭 사이클에 걸리는 시간 (ps 단위)
클럭 속도: 클럭 주기의 역수 (GHz 단위)
프로그램의 CPU 실행시간 = 프로그램의 CPU 클럭 사이클 수 * 클럭 사이클 시간
= 프로그램의 CPU 클럭 사이클 수 / 클럭 속도
(문제) 2GHz 클럭의 컴퓨터 A에서 10초에 수행되는 프로그램을 6초 동안에 실행할 컴퓨터 B를 설계하고자 한다. A보다 1.2배 많은 클럭 사이클이 필요할 때, B의 클럭 속도는?
A의 실행시간 = 10 = A 클럭 사이클 수 / 2GHz => A 클럭 사이클 수 = 20 * 10^9 사이클 (1GHz = 10^9)
B의 클럭 속도 = B 클럭 사이클 수 / B의 실행시간
= 1.2 * A 클럭 사이클 수 / 6초 => 24 * 10^9 / 6초 => 4 * 10^9 / 1초 => 4GHz (2배 빠름)
명령어당 클럭 사이클 수(CPI, clock sycles per instruction) = CPU 클럭 사이클 수 / 명령어 수
CPU 시간 = 명령어 수 * CPI / 클럭 속도
= 명령어 수 * CPI * 클럭 사이클 시간
=> CPI는 명령어 배합에 따라 달라지므로 클럭 속도가 같더라도 명령어 개수와 CPI는 반드시 비교해야 한다.
- Amdahl의 법칙
개선 후 실행시간 = (개선에 의해 영향을 받는 실행시간/개선의 크기) + 영향을 받지 않는 실행시간
=> 일부분의 개선된 실행시간을 성능 척도로 삼기는 어렵다.
=> 대신 MIPS(million instructions per second)를 사용해 성능을 비교한다.
MIPS = 명령어 개수 / (실행시간 * 10^6)
=> MIPS는 단순히 명령어를 실행하는 속도를 나타낼 뿐이지 명령어 하나가 얼마나 많은 일을 수행하는지 모른다는 단점이 있다.
(참고)
David A. Patterson, John L. Hennessy (2018). Computer Organization and Design (ARM Edition)
'CS > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 논리회로 (0) | 2020.11.12 |
---|---|
[컴퓨터구조] 부동소수점 (0) | 2020.11.10 |
[컴퓨터구조] 프로그램 번역과 실행 과정 (0) | 2020.11.08 |
[컴퓨터구조] 2의 보수 표현법 (two's complement) (0) | 2020.11.07 |
[컴퓨터구조] 컴퓨터의 구성 요소 (0) | 2020.11.07 |