CS/컴퓨터구조

[컴퓨터구조] 계산 문제 모음

커피맛스누피 2020. 11. 7. 17:35

컴퓨터구조를 공부하면서 나오는 계산 문제를 따로 정리해두고자 한다.

 

- 상대 성능

성능 = 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)