레이블이 CPU time인 게시물을 표시합니다. 모든 게시물 표시
레이블이 CPU time인 게시물을 표시합니다. 모든 게시물 표시

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은 증가할 것이다.