본문 바로가기

문과 코린이의, [컴퓨터 구조] 기록/컴퓨터구조 1강

[문과 코린이의 IT기록장] 컴퓨터 구조 - 1강. 컴퓨터 추상화 및 관련 기술 [ (6) 성능 (성능의 정의, 성능의 측정, 클럭, CPU 성능과 성능 인자, 명령어 성능, 고전적인 CPU 성능식) ]

반응형

[문과 코린이의 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시간)
 = (프로그램의) CPU클럭 사이클 수 * 클럭 사이클 시간
 = (프로그램의) CPU클럭 사이클 수 / 클럭 속도

* 이 공식을 통해 클럭 사이클의 길이를 줄이거나, 사이클 수를 줄이면 성능 개선이 가능함을 알 수 있음.

 


 

 5. 명령어 성능

- 컴파일러가 실행할 명령어를 생성하고, 컴퓨터는 이 명령어를 실행해야 하기 때문에, 실행시간은 프로그램의 명령어 수와 관련이 있음.

(프로그램의) CPU 클럭 사이클 수 = 명령어 수 * 명령어당 평균 클럭 사이클 수(CPI)
* CPI란 ? : 프로그램 전체 혹은 일부에서 하나의 실행에 필요한(명령어 당) 평균 클럭 사이클 수
* 명령어 집합 구조가 같으면 프로그램에 필요한 명령어 수가 같으므로, CPI는 서로 다른 구현을 비교하는 한 가지 기준이 될 수 있음.

 


 

 6. 고전적인 CPU 성능식

- 성능식을 명령어 개수, CPI, 클럭 사이클 시간으로 표현하면?

(프로그램의) CPU 실행시간 (= 실제 프로그램 실행시간 = CPU시간)
= (명령어 개수 * CPI) * 클럭 사이클 시간
= (명령어 개수 * CPI) / 클럭 속도

 

- 이 식은 CPU시간을 성능에 영향을 미치는 세 가지 핵심 인자로 표현했기 때문에 매우 유용함.

- 이 공식을 이용해

 1) 두 가지 서로 다른 구현 비교할 수 있다

 2) 어떤 설계 대안이 이 세 인자에 미치는 영향을 알 수있음.

 

 


* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)
반응형