Processor의 성능을 단지 clock 동작 속도로만 파악 한다고요!!?? (컴퓨터 성능)
1994년, 고등학교 입학 기념으로 부모님께서 PC를 사 주셨다. 이 때 386DX, 80 mega의 HDD disk, 8MB의 main memory, 그리고 VGA card와 옥소리 sound card를 장착했던 것으로 기억 한다. 여기에 HP의 InkJet printer기까지 합쳐서 가격이 무려 225만원!!. 가격이 무척이나 놀랠 '놀' 자가 아닐 수 없다.
이때 PC를 사서 가장 처음 했던 것이 바로 성능 test 였는데, 성능 test를 위해서 돌렸던 것은 예나 지금이나 바로 게임이다. 당시 최고의 인기를 얻었던, 존 카멕과 존 로메오의 역작인, DOOM 2를 성능 test를 위해서 (?) 돌렸었다. 이미 이전부터 존 형제가 만든 EPIC 사의 게임들, 예를들면 commander Kin과 같은 게임들을 즐겨 왔던터라 이들의 신작을 기대하지 않을 수가 없었다. 놀라운 그래픽과 화려한 sound는 이전의 작품들과는 비교할 수 조차 없었으며, 당시 DOOM2를 플레이 할 때 느꼈던, 손에 땀을 쥐게하는 긴장감을 아직도 잊을 수가 없다.
어떤 hardware의 성능을 평가할때는 processor의 clock speed와 cache의 size 및 cache의 구조, main board의 BUS Bandwidth(속도), HDD disk의 속도, GPU의 속도 등을 모두 평가하게 된다. 이렇게 성능을 전체적으로 평가하는 것이 더 정확하기 때문에 당연히 이런 식으로 성능 평가가 이뤄져야 한다.
그런데, 여기에 하나 더 꼼꼼하게 고려 해야 하는 것이 바로 processor의 clock 속도이다.왜 이것을 좀 더 세밀하게 검토해야 하는가에 대한 이유는 processor의 clock speed가 높다고 해서 낮은 clock speed의 processor에 비해 성능이 높다고 말하는 것은 문제가 있기 때문이다.
최근에 iPhone에 들어간 processor의 clodk speed가 800MHz라고 한다. 그리고 Galaxy S에 들어간 processor인 C1XX의 clock speed는 1GHz라고 한다. 보통 사람들은 단순히 이 두 모델의 clock speed만을 비교해서 Galaxy S가 20% 더 빠르다고 생각한다. 그러나 사실 그렇지가 않다. 컴퓨터를 사러 가도 단순히 clock speed가 높은 제품이 좋다라고 말할 수는 없는 것이다.
물론, 두 processor에 들어간 CPU core는 사실 영국의 ARM 사에 의해서 개발된 ARM CPU series이다. 각각 ARM11과 ARM Cortex A-8이 들어가 있다. 그러나 이 둘은 processor의 architecture version이 다르다. Cortex-A8이 더 높은 architecture version을 가지고 있다.
Cortex-A8은 더 높은 architecture version을 지니고 있기 때문에, 당연히 보다 성능을 높이기 위한 많은 방법을 적용한 CPU이다. 단적으로 pipeline이 무려 13단계까지 증가 된 모델이다.
컴퓨터 아키텍쳐를 공부 해 보면, multiple issue라는 용어가 있다. 이는 pipeline의 depth를 증가 시켜서 한번에 최대 pipeline의 depth 만큼의 명령을 실행 시킬 수 있는 구조이다. 더불어서 superscalar라는 것이 있는데, 이는 multiple issue의 한계인 한번에 하나의 micro instruction의 수행이라는 한계를 극복하기 위해서 각각의 micro architecture를 multiple하게 두어, 예를들어 ALU가 2개이면 2개의 ALU 연산을 한번에 할 수 있도록 처리 하는 구조이다.
<위 그림은 pipeline의 example>
이 외에도 reorder buffer라던가 multi-threading등등의 기술들이 성능 평가를 위해서 고려 되어야 하며, 더불어서 parallelism을 찾기 위한 compiler의 노력 역시 고려 되어야 한다. 컴파일러는 IR을 생성한 이후에 optimization을 수행하게 되는데, 기본적으로 true/false dependency를 제거한 상태에서 code motion, common subexpression elimination, constant propagation, liveness analysis등등을 적용해서 병렬성을 극대화 시킬 수 있는 방법 뿐만 아니라, 최적화 까지 수행해야 한다.
결국, 상당히 많은 기술들의 뛰어난 점들을 모두 고려해야 CPU의 성능을 정확하게 측정할 수 있는 것이다.
이런 내용들을 알 필요 없이 단순히 고 사양의 환경에서야 잘 돌아가는 게임을 한번 돌려보면 단번에 성능의 차이를 체감 할 수 있지 않은가?
맞다. 사실, 이런 성능의 차이를 하나의 값으로서 측정할때 사용할 수 있는 지표로서 MIPS(Million Instructions per second)가 사용된다. 그런데, 이 MIPS를 돌려 보지 않고 계산에 의해서 값을 알아 낼 수 있는 방법은 없다. 그렇기 때문에 benchmark program을 돌려 보는 것이 무척 중요한데, 이러한 program들을 돌려서 MIPS 값을 알아 낼 수 있기 때문이다.
자, 이제 말하고자 하는 요지를 알겠는가? 성능은 CPU의 clock speed 같은 hardware 그 자체의 지표를 가지고 판단하는 것이 아니라, 상당히 많은 고려 사항을 가지고 판단해야 하지만, 단순하게 MIPS 즉, 신뢰할 수 있는 benchmark program을 돌려서 나온 결과를 가지고 판단하는 것이 가장 정확하다는 것이다.
Dhrystone 같은, 신뢰 할 수 있는 벤치마크 프로그램들은 다음 link에서 확인 해 볼수 있다.
http://en.wikipedia.org/wiki/Benchmark_(computing)
cf. 위에서 언급한 내용 말고도 SIMD 같은 architecture(ex. Intel의 MMX) 역시 많이 사용되는데, 이런 많은 부분들도 앞으로 시간이 되면? 정리해서 올려볼까 한다.
'Computer_Architecture' 카테고리의 다른 글
TLB (Translation Lookaside Buffer) 란? (0) | 2018.03.18 |
---|---|
Amdhal's Law (0) | 2018.03.18 |
Amdhal's Law (암달의 법칙) (0) | 2015.03.10 |
댓글