심심해서 하는 블로그 :: [컴퓨터 구조] 컴퓨터 성능과 Amdhal의 법칙

1. Performance

처리 시간

여러분이 컴퓨터를 교체하는 대표적인 이유. 바로 프로그램이 실행하는데 걸리는 시간이다. 

간단한 워드 프로세서를 켜는데 하루 반나절이 걸리면 당장 컴퓨터를 교체하러 갈 것이다.

이처럼 컴퓨터의 성능을 측정하는 지표에서 시간이라는 개념은 중요한 개념이다.


그렇다면 처리시간을 어떻게 측정할까? 

우선 CPU에 클럭(Clock)이라는 시계가 존재한다. 우리가 생각하는 시침, 분침, 초침으로 구성된 시계가 아니지만 일정한 진동수(f)의 전기 신호를 통하여 CPU는 정해진 시간에 맞춰서 프로그램을 수행할 수 있다. 또한 이 클럭이 높다는 것은 1초에 CPU 내부의 일을 많이 처리한다는 것을 의미해 CPU의 성능이 좋다는 지표가 된다.


하지만 프로그램이 실행하는 동안 CPU 혼자서 일을 하는 것은 아니다.

Operand Fetch, Instruction Fetch 과정에서 데이터나 명령어를 메인 메모리로부터 반드시 받아 와야하므로

메모리도 프로그램이 실행하는 내내 큰 역할을 한다. 그리고 알다시피 CPU의 속도가 토끼면 메모리의 속도는 나무늘보 수준.. (쥬토피아 보고싶다..)  따라서 명령어를 수행하는 사이클동안 메모리에 접근하는 빈도에 따라프로그램을 처리하는 시간은 달라질 수 있다. 이것을 고려하여 수치적으로 표현 한 것이 CPI(Clock cycles per Instruction)이다. 명령어마다 메모리에 접근하는 빈도가 달라져서 실행시간이 다르기 때문에 프로그램이 실행한 모든 명령어에 대하여 평균값을 구한 것이다. 


위의 두가지 개념을 이용하면 컴퓨터가 프로그램을 수행한 시간은 다음과 같이 표현이 가능하다



여기서 클럭주기는 클럭의 역수이다. 클럭이 높다는 것은 프로그램 수행 시간을 줄이므로 반비례 관계라 역수인 클럭주기를 곱하여 표현하였다. 


MIPS

야구선수 특히 타자들을 비교하는 가장 기본적인 지표는 한 시즌동안 몇개의 안타를 쳤는지 보여주는 타율이다. 컴퓨터도 비슷한 개념으로 이 컴퓨터가 1초동안 몇 개의 프로그램을 처리할수 있는가를 보여주는 지표가 IPS이다. 하지만 컴퓨터의 성능이 좋아지만서 웬만한 컴퓨터는 초당 백만 단위의 계산이 가능해져 지표의 자릿수가 너무 비대해지자 백 만개씩 묶어서 계산하는 MIPS로 대체하였다.




2. Amdhal`s Law

컴퓨터 관련과 학생들에게 견적을 물어보는 이유

자신의 컴퓨터가 느려졌는데 학생이라 가난해서 부품 몇 개만 바꾸고 싶다.

'나 CPU를 지금보다 5배 좋은 걸로 바꾸면 컴퓨터 성능도 5배가 좋아질까?'

질문을 듣는 순간 이러한 질문을 듣는 '내가 어떻게 알아'하며 순간 혈압이 오르고 노이로제에 시달리는 컴퓨터학과 학생들.. 하지만 실은 Amdhal의 법칙을 아는 사람은 대충은 알 수 있다. 


어떤 프로그램이 실행하는 시간 중 CPU가 40% 사용하고 나머지 기기들이 60%를 사용한다고 가정하고

CPU의 성능을 5배 향상을 시켰다고 하고 아래의 Amdhal의 법칙 공식을 이용하여 보자


여기서 f는 프로그램 실행 시간 중 CPU가 사용한 비율이고 N은 성능 향상의 배수이다.


따라서 CPU 성능을 5배 좋은걸 사더라도 1.47배 정도 밖에 성능향상이 발생하지 않는다.

프로그램이 CPU 단독적으로 수행하는 것이 아니라 메모리 등 나머지 장치들도 함께 수행하기 때문에

CPU 혼자 성능이 좋아진다해서 큰 성능 향상을 보여주는 것이 아니다라는 점이다.


따라서 컴퓨터 공학도에게 나 이거 5배로 좋은건데 집에 사용하는 프로그램이 CPU를 사용하는 시간이 전체 사용시간에 xx%이래 성능이 얼마 만큼 향상될까? 이렇게 물어보면 한 1000명중에 1명은 대답해줄지도 모른다. (그 전에 혼자 계산기를 켜서 계산해보는게 좋지않을까..?)

,