[문과 코린이의 IT기록장] 컴퓨터 구조 - 1강. 컴퓨터 추상화 및 관련 기술
[ (6) 성능 (성능의 정의, 성능의 측정, 클럭, CPU 성능과 성능 인자, 명령어 성능, 고전적인 CPU 성능식) ]
- 시스템의 성능을 측정하는 것은 주관적이기 때문에 간단한 일이 아님.
1. 성능의 정의
1) 두 컴퓨터에서 같은 프로그램을 실행시키는 경우에는 먼저 끝나는 쪽이 더 빠른 컴퓨터.
2) 여러 대의 서버를 가지고 여러 사용자의 작업을 처리하는 데이터센터를 운영할 경우에는 하루 동안 더 많은 작업을 처리한 컴퓨터가 더 빠른 컴퓨터일 것임.
- 즉 1)과 같은 경우 = 컴퓨터 사용자 개인의 입장에서는 응답시간(실행시간)이 중요.
* 응답시간 : 컴퓨터가 테스크를 완료하기까지의 총 소요시간으로, 디스크 접근, 메모리 접근, 입출력작업, 운영체제 오버헤드 및 CPU 시간을 모두 포함
- 즉 2)와 같은 경우 = 데이터센터(서버컴퓨터) 관리자에게는 처리량(대역폭)이 더 중요함
* 처리량(대역폭) : 단위시간당 완료하는 테스크의 수를 나타내는 또 다른 성능 척도 ,LAN 통로로 크면 클수록 좋음
2. 성능의 측정
- 시간은 컴퓨터 성능의 가장 기본적인 척도임.
- 시간은 우리가 재는 방법에 따라 여러 가지로 정의 가능.
1) 벽시계시간(응답시간, 경과시간)
: 한 작업을 끝나는데 필요한 전체 시간을 뜻하는 것으로 디스크 접근, 메모리 접근, 입출력 작업, 운영체제 오버헤드 등 모든 시간을 다 더한 것
* 논의의 일관성을 위해서 경과시간을 기준으로 한 성능과, CPU 시간을 기준으로 한 성능을 구분하는 것을 추천.
2) CPU 실행시간(CPU시간)
: 컴퓨터를 공유하는 경우, 프로세서 하나가 여러 프로그램을 동시에 실행하는 경우가 많이 있음. 이럴 경우 경과시간을 최소화하는 것보다는 처리량을 최적화하는 것이 중요함.
: 따라서 경과시간과 구분해서 프로세서가 순수하게 이 프로그램을 실행하기 위해 소비한 시간을 계산할 필요가 있음.
* CPU시간은 사용자 CPU시간과 시스템 CPU시간으로 다시 나눌 수 있음. 그러나 이 둘을 명확히 가려내는 것은 어려움.
a. 사용자 CPU시간
: 프로그램 자체에 소비된 CPU 시간 (CPU에만 이 프로그램이 올라온 상태)
b. 시스템 CPU시간
: 프로그램의 수행을 위해서 운영체제가 소비한 CPU시간
* 외부적인 작업들도 포함 - 디스크접근, 입출력...
* 많은 응용들, 특히 서버에서 수행되는 것들은 입출력 성능의 영향을 많이 받는데, 입출력성능은 하드웨어와 소프트웨어에 영향을 받게 됨. 이 경우 경과시간이 중요함. |
3. 클럭
- 사용자의 입장에서는 주로 시간에 관심을 갖게 됨.
- 그러나 컴퓨터의 세세한 부분을 평가할 때는 다른 성능 척도를 사용하는 것이 편리할 때가 있음.
ex) 컴퓨터 설계자 - 하드웨어가 얼마나 기본 함수를 빨리 처리하는가?
- 거의 모든 컴퓨터는 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용하여 만들어짐.
- 이 클럭의 시간 간격을 클럭 사이클이라고 함.
- 클럭 사이클 (= 클럭 사이클 틱 = 클럭 틱 = 클럭 주기 = 클럭 = 사이클 = 클럭 사이클 시간)
: 일정한 속도를 가지고 동작하는 프로세서 클럭 한 주기 동안의 시기
- 클럭 주기
: 각 클럭 사이클의 길이.
< 표현 방법 >
1) 한 클럭 사이클에 걸리는 시간 : 250ps
2) 클럭 속도 : 4GHz
- 클럭 속도는 클럭 주기의 역수.
4. CPU 성능과 성능 인자
- 컴퓨터의 성능을 표시하는데 있어, 사용자와 설계자가 사용하는 척도에 차이 존재
- 이 척도 간의 상관관계를 구할 수 있다면, 설계상의 변화가 사용자가 느끼는 성능이 얼마나 영향을 미치는지 파악 가능.
- 이 책에서 궁극적인 성능 척도는 CPU시간.
(프로그램의) CPU 실행시간 (= 실제 프로그램 실행시간 = CPU시간) |
* 이 공식을 통해 클럭 사이클의 길이를 줄이거나, 사이클 수를 줄이면 성능 개선이 가능함을 알 수 있음.
5. 명령어 성능
- 컴파일러가 실행할 명령어를 생성하고, 컴퓨터는 이 명령어를 실행해야 하기 때문에, 실행시간은 프로그램의 명령어 수와 관련이 있음.
(프로그램의) CPU 클럭 사이클 수 = 명령어 수 * 명령어당 평균 클럭 사이클 수(CPI) |
6. 고전적인 CPU 성능식
- 성능식을 명령어 개수, CPI, 클럭 사이클 시간으로 표현하면?
(프로그램의) CPU 실행시간 (= 실제 프로그램 실행시간 = CPU시간) |
- 이 식은 CPU시간을 성능에 영향을 미치는 세 가지 핵심 인자로 표현했기 때문에 매우 유용함.
- 이 공식을 이용해
1) 두 가지 서로 다른 구현을 비교할 수 있다
2) 어떤 설계 대안이 이 세 인자에 미치는 영향을 알 수있음.
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |