2008년 4월 15일 화요일

CPU 성능분석


CPU 성능(performance)은 임의의 application의 수행시간에 반비례한다.
cpu excution time은 곧 명령어의 개수를 의미하며, 이는 순수하게 임의의 application이 cpu를 사용한 시간을 뜻한다.


CPU time을 결정하는 세 개의 요소로는 instruction의 개수, CPI, Period가 있으며 다음과 같이 계산한다.
CPU time  = 초/program = instructions/program * clocks/instruction * seconds/clock
      = # of instruction * CPI * Clock rate(Period)

  • instruction의 개수: 프로그램의 크기와는 관계가 없으며 순수하게 수행되는 명령어의 개수이다.
  • CPI: 명령어마다 다르므로 대개는 average로 한다.
  • Clock rate: cycle하나당 걸리는 시간


성능을 좋게 하기 위해서는 CPU time을 줄여야 하는데, 이는 곧 위의 식에서 보는 바와 같이 # of instruction이나 CPI, Clock rate를 줄이면 된다. 이러한 요인들로 하여금 CPU time을 줄이는 방법은 다음과 같다.

  • 동작 clock을 빠르게 한다. (Clock rate를 줄인다)
  • 성능 좋은 컴파일러를 사용하거나 좋은 알고리즘을 이용하여 프로그래밍한다. (# of instruction을 줄인다)
  • pipelining등의 기법을 사용한다.(CPI를 줄인다)

또한, CPU 성능을 높이기 위한 것으로 다음과 같은 기법들을 사용할 수 있다.
  • Pilelining
    • 한국어로 하면 '분업'을 뜻한다.
    • 5단계 pilelining은 Instruction Fetch - Decode - Operand Fetch - Excute - Write Back 의 단계로 이루어진다.
    • 각 단계에 필요한 resource가 따로있다.
    • resource를 효율적으로 사용하기 위한 방법으로 놀고있는 resource를 방지한다.
    • 모두 clock에 동기화 되어 있어서 clock이 튈 때마다 다음 단계로 옮겨진다.
  • Super scalar
    • 명령어 처리하는 모듈이 여러 개 있는 것으로, 모듈이 2개일 경우 2-way super scalar라고 한다.
    • dependency가 없는 여러 개의 명령어를 동시해 수행할 수 있게 한다. (2-way일 경우 2개 동시에 수행 가능)
    • dependency가 없는 명령어 set은 하드웨어가 찾아낸다.
    • 3-way, 4-way, 5-way 등등으로 사용할 수 있다.
    • pilelining과 함께 사용하면 더더욱 성능이 증가된다.
  • VLIM(Very Long Instruction Word)
    • dependency가 없는 명령어를 하나의 명령어로 만들어 parellel하게 실행될 수 있는 것 끼리 묶는다.
    • super scalar와 비슷하게 보이지만 dependency가 없는 명령어 set을 compiler가 찾아내므로 소프트웨어적으로 체크한다는 점이 다르다.


CPU 성능을 측정하는 방법으로 두 가지 기준이 있다. 그 하나가 Response Time이고 나머지 하나가 Throughput이다.
  • Response Time: 프로그램 하나가 시작하면서부터 끝날 때까지의 시간
  • Througput: 단위시간 당 처리하는 일의 양
    예를 들어서, CPU를 두 개로 늘린다면  Response Time에는 변화가 없으나  Througput은 증가할 것이다.

댓글 없음:

댓글 쓰기