Chapter 2. 컴퓨터 성능

MoonLight·2021년 9월 5일
0

컴퓨터구조

목록 보기
2/6

Relative Performance (상대적 퍼포먼스)

  • Define : performance = 1/ExecutionTime1/Execution Time

  • X is n times fater than Y

    • X Performance / Y Performance
      = Y execution time (slower) / X execution time (faster)
      = n
  • 예를들어서 -> A라는 컴퓨터에는 10초의 실행속도를 보이고 B라는 컴퓨터에서는 15초라는 실행속도를 보이면 상대적 퍼포먼스를 구하기위해서는

    • B의속도/A의속도B의 속도 / A의 속도
    • 15s/10s=1.515 s / 10 s = 1.5
  • 즉 A가 1.5배 더 빠르다.

Measuring Execution Time ( 실행속도를 측정하기 위해서)...

  • Elapse time (경과시간)

    • Total response time, including all aspects (모든것을 포함한 전체적 응답속도로 잰다)
      • Processing , I/O, OS overhead, idle time ( 프로세싱 시간이라든지, 입출력 시간이라든지, OS 시간, 안쓰이는 메모리 시간까지)
    • Determines System performance
  • CPU time (CPU 시간, 순수 CPU시간)

    • Time spent processing a given job (어떠한 작업을 프로세싱하는데 쓰이는 시간, 입출력 시간은 포함안됨)
    • Discounts I/O times, other jobs ' shares
    • Comprises user CPU time and system CPU time (유저 CPU 타임과 시스템 CPU 타임으로 구성되어있음).
    • Different programs are affected differently by CPU and system performance (여러 프로그램들이 CPU 와 시스템 퍼포먼스에 영향을 준다)

🕐 CPU Clocking, CPU Time

Operation of digital hardware governed by a constant-rate clock.

CPU Clocking : CPU의 연산속도를 주파수 단위인 헤르츠로 나타낸것. 시피유의 수행능력을 결정할 뿐만 아니라 기타의 다른 접속 보조 장치들의 구동에 있어서도 기본이되거나 참고가 되는 속도.

  • Clock period(= Clock cycle time) : duration of clock cycle (CPU 클락 주기)

    • Clock cycle time = SecondsSeconds / ClockClock cyclecycle
    • 250ps=0.25ns=2501012s250ps = 0.25ns = 250 * 10^{-12}s
  • Clock rate(= Clock frequency, Clock speed) : cycles per second

    • 4.0GHz=4000MHz=4.01094.0 GHz = 4000MHz = 4.0 * 10^{9}Hz

위 둘은 역수관계이다. 즉, Clock Cycle Time = 1 / Clock rate

CPU Time : CPU 타임 또는 CPU 사용률은 한 컴퓨터 프로그램이 CPU를 차지하여 일을 한 시간을 뜻하며 보통 클럭 틱 단위로 측정을 한다.(우리가 구하고자 하는 궁극적인 목표)

  • CPU Time
    = CPU Clock Cycles * Clock Cycle Time
    = CPU Clock Cycles / Clock Rate

클럭 레이트가 높을수록 CPU 타임은 낮아진다.
(Higher the rate, smaller the CPU time)

To understand the concept...

예를 들어 CPU 1GHz 속도로, 10개의 Instruction을 수행하는데 한 Instruction당 15 cycle을 돈다고 하면 10개의 인스트럭션을 수행할 때는 150개 싸이클을 돌아야된다. 그럼 CPU Time은 사이클 도는수 (150) * 클럭속도 (1GHz) = 150ns CPU Time이 된다.

Performance improved by

  • Reducing Number of Clock Cycles ( 클럭싸이클수을 줄일때 성능 업그레이드)
  • Increasing clock rate ( 클럭 레이트를 올릴때)
  • Hardware designer must often trade off clock rate against cycle count

CPU Time Example

Computer A : 2Ghz Clock, 10s CPU time

Designing Computer B

  • Aim for 6s CPU time on this computer

  • Can do faster clock but this causes 1.2 * clock cycles for the rest of the CPU design.

💬 IC 와 CPI

  • IC : Instruction Count(= 명령어 갯수)
  • CPI : Clock cycles per instruction(= 명령어당 클럭 사이클수)

CPU Clock Cycles = IC * CPI (큰 덩어리인 주기횟수를 명령어단위로 쪼갠다.)

CPU Time = Clock Cycles x Clock Cycle Time

              = Clock Cycles / Clock Rate

              = (IC x CPI) x Clock Cycle Time

              = IC * (CPI / Clock Rate)

✅ IPC = 1 / CPI
✅ IPS (초당 명령어 갯수)
         = IC / CPU Time
         = Clock rate(초당사이클수) x IPC(사이클당 명령어 갯수)

✅ Clock rate = Clock cycles / CPU Time

IC for a Program

  • Determined by program, ISA and compiler (프로그램이나 ISA 컴파일러등을 통하여 나타나짐)

Average CPI (평균 명령어 당 클럭 사이클수)

  • Determined by CPU hardware (CPU 하드웨어에 따라서 다름)
    If different instructions have different CPI
    (다른명령어들이 다른 CPI수를 가지고있다면 평균값에 당연한 영향을 끼침)
    Average CPI affected by instruction mix

CPI Example

조건

Computer A: Cycle Time = 250ps, CPI = 2.0
Computer B: Cycle Time = 500ps, CPI = 1.2
Same ISA

Which is faster and how much?

A : CPU time A = Instruction Count * 2.0 * 250ps = Instruction Count * 500 ps

B : CPU time B = Instruction Count * 1.2 * 500ps = Instruction Count * 600 ps

Instruction Count * 600 ps / Instruction Count * 500 ps = 1.2 faster …

CPI in More Detail

If different instruction classes take different numbers of cycles (각각 다른 명령어들과 클럭 사이클수를 가질때)

Weighted Average CPI (CPI 평균값)

CPI Example 문제를 풀어보자

  • Alternative compiled code sequences using instruction in class A, B, C

문제 1
Seqeunce 1 와 Sequence 2의 클럭 사이클을 구하기 위해서는

갈색 동그라미 들을 곱해준다.

Sequence 1: IC = 5 (2 + 1 + 2)

o Clock Cycles = (1*2 + 2*1 + 3*2) = 10

o Avg. CPI = 10/5 = 2.0

Sequence 2: IC = 6 (4 + 1 + 1)

o Clock Cycles = (4*1 + 1*2 + 1*3) = 9

o Avg CPI = 9/6 = 1.5

Performance Summary

  • CPU Time = (Instruction / Program) * (Clock cycles / Instruction) * (Seconds / Clock cycle)

  • Performance depends on :

    • Algorithm: affects IC, possibly CPI (알고리즘)
    • Programming language: affects IC, CPI (프로그래밍 언어)
    • Compiler: affects IC, CPI (컴파일러)
    • Instruction set architecture: affects IC, CPI, CCT (명령어 구조)
profile
hello world :)

0개의 댓글