CPU성능 및 프로그램 처리

한포도·2024년 3월 13일
0

Compter Architecture

목록 보기
2/8
post-thumbnail

불타는 우리의 머리

📃프로그램 처리 과정

전 포스팅에서 잠깐 다뤘지만 프로그램은 처리과정이 있다.
보통 우리가 흔히 사용하는 HLL(High Level Language)를 이용해서 기계어 수준으로 번역하는 것이다. 언어는 번역체라고 할수 있겠다.

HLL -> LL ->Machine Code

HLL:
z = x + y

Low level:
LOAD a, x
ADD a, y
STOR z ,a

Machine code:
101010000101...

자세한 LL사용은 추후에 따로 포스팅 하겠다.

이렇게 번역된 언어들을 통해 우리는 프로그램을 수행하고, 느린 프로그램들을 보면서 화를낸다.
그럼 성능은 어떤것에 좌우될까?

💬응답시간과 처리량

🗣응답시간 (Response time)

작업시작과 종료까지의 Time

🔃처리량 (Throughput)

일정한 시간동안 처리하는 작업량
우리는 응답시간에 초점을 맞춘다.

📈성능측정

성능 = 1/실행시간 (Performance = 1/Execution Time) 이라고 한다.

예시: 프로그램 실행 시간

  • 10초 on A, 15초 on B
  • Execution TimeB / Execution TimeA
    = 15s / 10s = 1.5
  • A가 B보다 1.5배 빠르다

🕒경과시간

  • 한 작업을 시작부터 출력하는데 전체 시간
    ** 프로세싱, I/O, OS overhead, idle time

✅CPU 실행시간

프로세서가 순수하게 처리한 시간

사용자 CPU시간과 시스템 CPU시간으로 나뉜다.

✅CPU 클럭

모든 컴퓨터는 클럭 주기를 기반으로 이벤트 발생 시점을 결정한다.
클럭이 일어나는 시기 또는 일어나는 중을 구분하여 실행된다.

  • 클럭주기: 한 클럭 사이클에 걸린 시간 |-|-| 에서 -
  • 클럭 속도 (레이트): 1초에 실행되는 사이클 수

결국 clock rate 는 1초당 얼마나 clock이 실행됐냐를 묻는다. 많이 실행됐음 당연히 rate가 높겠지

1/클럭 레이트 = 클럭 주기

✅CPU 시간

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

을 의미한다. Clock Cycle Time 은 클럭 주기를 의미하고 클럭 주기는 클럭레이트와 반비례한다.

1초당 100개의 사이클이 실행된다. 그런데 클럭 레이트를 높인다면? 1초당 200개의 사이클을 실행한다면 당연히 클럭주기는 짧아지는것이다. 빠르게 실행해야 사이클 수를 늘릴수 있으니.

때문에 CPU TIME을 개선시키기 위해선 분모로 쓰이는 클럭 레이트를 높이거나 클럭사이클 수를 줄일수있다.

다만 무조건 성능향상이 일어나는것은 아니다. ISA가 1의 클럭주기에서 3클럭을 필요로 한다고 가정해보자, 클럭레이트를 높여서 클럭주기를 낮춰서 성능을 상향시키려고 한다. 그러나 1의 주기를 가지는 3클럭을 요구했지만 1보다 낮은 클럭주기에서 똑같이 3클럭을 요구할지는 모르기 때문이다. 0.5 클럭주기에선 5클럭을 요구할수도 있다는 뜻이다.

Clock Cycles = instruction Count * Cycles Per Instruction
CPU Time = Instruction Count * CPI * Clock Cycle Time
 		 = (Instruction Count * CPI) / Clock Rate

CPI란 명령어당 클럭 사이클 수 이다.

ㄱ 이란 명령어가 2사이클을 먹는다면 CPI는 2인것이다.
위의 식에서 클럭 사이클 타임 = 클럭 주기 임으로 반비레인 클럭 레이트로 작성가능하다.

profile
응애 개발맨

0개의 댓글