컴퓨터의 성능
우리는 일상에서 성능이 좋고 나쁨에 대해서 이야기를 합니다.
성능이라는게 단순한거 같지만, 그저 성능에 대해서 이야기를 할 때, 중요한 논점이 하나 빠져있습니다. 성능이 좋고 나쁨을 판단하는 기준이 무엇일까요? 비행기를 예시로 들어보겠습니다.
아래에 3종류의 비행기를 비교한 표 입니다.
보잉777과 보잉 747은 최대 수용 승객 수가 많지만, 비행속도가 콩코드보다 느립니다.
한번에 갈 수 있는 최대 비행거리를 봤을 때는 그렇게 큰 차이가 보이지는 않습니다.
이 세가지 비행기 중에서 어떤 비행기가 가장 성능이 좋을까요? 수용 승객수를 기준으로 보면, 보잉 시리즈가 콩코드보다 성능이 좋다고 말할 수 있을 것이고, 비행 속도 면에서 본다면 콩코드가 보잉 시리즈들 보다 성능이 좋다고 말할 수 있습니다. 이처럼 성능에 대해서 이야기 할 때, 성능을 평가하는 기준이 있어야 합니다.
컴퓨터의 성능에 대해서 이야기 할 때도, 어떤걸 척도로 삼는지에 따라서 관점이 달라집니다.
컴퓨터의 성능에 대해서 이야기 할 때는 많은 기준들이 있겠지만, 크게는 2가지 입니다.
- 응답시간(실행시간)
- 처리량
응답시간은 글자 그대로 어떤 프로그램을 실행 할 때, 걸리는 시간입니다.
처리량은 일정시간 동안 처리할 수 있는 작업의 양입니다.
보통 성능에 대해서 이야기를 할 때, 일반적인 가정에서는 컴퓨터의 응답시간을 좀 더 중요하게 생각하고, 서버와 같은 곳은 응답시간도 중요하긴 하지만 처리량을 좀 더 중요하게 생각합니다.
서버의 경우에는 개별 작업의 실행 속도가 느리더라도, 일정 시간동안 더 많은 작업을 수행할 수 있는 쪽을 더 성능이 좋다라고 말할 수 있습니다. 처리량은 응답시간에 영향을 받기 때문에, 일반적으로는 응답시간이 빨라지면 처리량도 개선됩니다.
응답시간과 처리량을 자동차와 도로에 비유해 볼 수 있습니다.
응답시간은 자동차의 속력으로 볼 수 있고, 처리량은 일정 시간내에 얼마나 많은 차가 지나갈 수 있는지를 의미합니다.
여러 대의 자동차가 있다고 가정했을 때, 자동차의 속력이 빠르다면, 일정 시간 내에 많은 자동차들이 지나갈 수 있습니다. 여러 대의 같은 속력의 자동차가 도로를 달리고 있다고 해봅시다.
자동차의 수가 많다면, 달릴 수 있는 도로가 넓을 수록 많은 양의 자동차가 느려짐 없이 달릴 수 있습니다. 위에서 말한 것 처럼 처리량은 응답시간(자동차의 속력)에 영향을 받기 떄문에, 응답시간이 빠를 수록 처리량이 어느정도 개선됩니다.
이제부터는 성능에 대해서 이야기를 할 때, 응답시간(실행시간)을 기준으로 글을 쓰겠습니다. 간단한 예를 들어보겠습니다. 어떤 프로그램을 실행하는데, 각각의 컴퓨터에서 아래와 같이 시간이 소요된다고 해봅시다.
간단한 예시를 들어보겠습니다. 어떤 프로그램을 실행하는데, 각각 아래와 같은 시간이 소요된다고 해봅시다.
- A컴퓨터: 10초
- B컴퓨터: 20초
당연히 A가 B보다 성능이 좋다라고 말할 수 있습니다.
그렇다면, A가 B보다 얼마나 더 성능이 좋다고 이야기 할 수 있을까요?
"A가 B보다 2배 성능이 좋다." 라고 이야기 할 수 있습니다. 수식은 아래와 같습니다.
이후에 서술하는 성능은 특별한 언급이 없으면 응답속도의 관점이라고 생각하시면 됩니다.
응답시간 & CPU 시간
여러대의 컴퓨터 중에서 같은 작업을 좀 더 빠르게 수행하는 컴퓨터를 가장 성능이 좋다라고 이야기 할 수 있습니다.
빠르기를 측정하는 방법에 대해서 생각을 좀 해봐야 합니다.
빠르기는 어떻게 측정할 수 있을까요?
빠르기를 측정하는 가장 간단한 방법은 프로그램을 실행 시켜서 스톱워치와 같은 걸로 실제 시간을 측정하는 것입니다.
그런데, 특정 프로그램 하나만의 실행시간을 측정하는게 생각보다 쉽지가 않습니다.
컴퓨터에서 어떤 프로그램을 실행시킨다고 했을 때, 하나의 프로그램만 실행되는게 아니라 백그라운드에서 여러가지 프로그램들이 동시에 실행되고 있기 때문입니다.
또한, 응답시간에는 메모리의 접근시간, 각종 입출력 작업들, 오버헤드 등이 포함되어 있습니다.
그렇기 때문에, 어떤 프로그램을 실행하는게 걸리는 시간을 좀 더 명확하게 하기 위해서는 이 프로그램이 실행되는 동안 cpu 내부에서 얼마정도의 시간이 걸리는지를 알 필요가 있습니다. 이것을 cpu 시간이라고 합니다.
다시 정리해서 말하자면, 성능을 평가하기 위한 척도로 실행시간이라는게 있는데, 이 실행시간이라는 건 실제 사용자가 시간을 측정하는 응답시간과 cpu에서 얼마정도의 시간이 소요되는지를 따져보는 cpu 시간으로 나눠집니다.
- 응답시간 : 필요한 전체 시간 : 디스크 접근, 파일 입출력, 오버헤드 등 기타등등을 모두 포함한 시간
- cpu 시간 : 순수하게 cpu가 소비한 시간 : 디스크접근, 파일 입출력 등에 소요되는 시간은 고려하지 않는다.
cpu시간은 순수하게 cpu의 성능만을 생각하는 것 입니다.
cpu의 성능을 평가하는 척도로 여러가지 요소들이 있습니다.
- 클럭 사이클(Clock cycle)
- 클럭 주기(Clock period)
- 클럭 속도(Clock speed)
클럭에 대해서 간단하게 설명하자면, 사람의 심장 박동이랑 같다고 생각하면 됩니다.
컴퓨터의 모든 연산들은 클럭을 기준으로 처리됩니다.
전류가 들어가면 High, 전류가 꺼지면 Low가 되고, 저런 신호들이 일정 간격으로 cpu 내에 들어갑니다.
지금까지 컴퓨터의 성능에 대해서 글을 적었는데, 다음 글에서는 cpu 시간에 영향을 미치는 요소들로 성능을 어떻게 계산하고 평가하는지에 대해서 알아봅시다.
틀린 내용이 있다거나 좀 보완했으면 좋겠다는 부분이 있다면, 댓글 남겨주세요!