1.3 Performance

dev_bbie ·2022년 10월 12일
1

컴퓨터구조

목록 보기
3/9

Which has higher performance?

어떤 기준으로 퍼포먼스가 제일 높다고 말할 수 있을까?

✔ Time

: The time between start and completion

  • 처음부터 끝까지
  • 사용자
    ▶ CPU Time, CPI에 대한 이해,, 계산문제 풀 줄 알아야해..

✔ Rate

: How many tasks are completed per unit time

  • 특정단위 시간에 처리되는 task, job 무언가...
    ▶ MIPS, MFLOPS,, 계산 문제 풀 줄 알아야해..

✔ Ratio

  • 몇 배 빨라? 몇 % 빨라?

상황에 따라, 산술평균,, 기하평균,, 구분해서 쓸 줄 알아야함.

Time

1. Measuring CPU Time

1) CPU time

: 프로그램을 실행시키는데 걸리는 시간

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

2) CPU Clock Cycles

: 어떤 일을 수행하는데 cpu가 몇개의 clock을 사용하는 지

= IC X CPI
= 명령어 수 X 명령어당 평균 클럭 사이클 수

3) Clock Cycle Time

: 한 clock 당 수행시간

= 1/ clock frequency(rate)

4) IC, CPI

  • IC : 명령어 수
    -> # of instructions executed for a program
  • CPI : 명령어 하나를 처리하는데 필요한 클럭 사이클 수
    -> Average clock cycles per instructions.

    CPI = Total CPU clock cycle / Total Instruction count

    CPI(명령어당 평균 클럭 사이클 수) = Σ (각 명령어당 CPI * 비율)

Rate

CPU Time 외에도 MIPS (Millions of Instruction Per Second) 라는 성능 측정 지표가 있다.

2. MIPS (or MFLOPS)

시간이 아닌 처리량을 기준으로 컴퓨터의 성능을 알 수 있는 수치

백만개의 명령을 1초에 몇번 수행할 수 있는지 -> 10^6 을 실행시간 곱해줌

MIPS = 명령어 개수 / (실행시간 * 10^6)

MIPS 가 크면 -> 실행시간 짧다 -> 즉, 컴퓨터의 성능이 우수하다고 할 수 있다.
단순히 명령어를 실행하는 속도를 나타낼 뿐이지 명령어 하나가 얼마나 많은 일을 수행하는지는 모른다는 단점이 있다. 직관적 이해는 가능해도 정확한건 아니라구 하넹..

  • 실행시간 = (명령어 개수 * CPI) / Clock Rate

MIPS = Clock Rate(=Clock frequency) / (CPI * 10^6)

추가로, MFLOPS = 부동 소수점 연산 개수 / (실행시간 * 10^6)

얘도 계산 문제 나온다고 했다..
MHz = 10^6
GHz = 10^9
기억해두기

3. Benchmark

컴퓨터 성능을 측정하기 위해 나온 개념!

  • 컴퓨터, 스마트폰 등 전자기기의 연산성능을 시험하여 수치화하는 것
  • 실사용자의 사용환경을 모사 -> 평가프로그램의 형태로 만들어
  • 새롭게 만든 걸 가지고, "이게 진짜로 좋아??"

Mimic a particular type of "workload" on a component or system
Acceptance : vendor and users embrace it

예시로 SPEC, TPC..가 있다고 한다..

결과표를 보면 "SPEC ratio" 를 볼 수 있는데,
이게 기준 컴퓨터보다 몇배가 뛰어난지 측정한 값이다.
// 산술평균 말고 기하평균을 쓴걸 볼 수 있음.

4. Amdahl's Law

멀티 프로세스를 썼을 때 싱글 프로세스를 썼을 때보다 얼마만큼 speed up이 되는지를 보여주는 법칙

  • 코드 중에서 f 만큼의 비율을 병렬처리 가능한 부분
  • (1-f) 는 병렬처리가 불가능한 부분

(1-f)는 병렬화가 안된 부분이기 때문에 T(1-f)는 단일 프로세서로 해야합니다. 밑에 분수에선 Tf 가 병렬화가 가능하기 때문에 프로세서의 개수만큼 나눠줄 수 있습니다.

결과적으로 코어의 개수가 아무리 많아져도 (N -> 무한) 이 되어도 속도는 1/(1-f) 에 의존합니다.

✦ 프로세서 개수를 계속 늘린다고 성능이 무한대로 좋아지는게 아니다!

즉, 뭐가 중요해?

  • 속도향상은 얼마나 병렬화가 이루어졌냐(f가 얼마나 많은 비율을 차지하나)
  • 반드시 연속적으로 의존성있게 그런 순서를 반드시 지켜야하는 부분(병렬화가 불가능)이 얼마나 많은가

-> 암달의 법칙이용해서 얼마만큼의 속도향상이 있는지 구하는 계산 문제도 나온다했다.


그럼 정리,
1. 성능 기준에 따라 다른 평균기법 (산술평균, 기하평균을 상황에 맞게 적용할 줄 알아야함)
2. CPU Time, CPI, MIPS, 암달의 법칙 등의 계산 문제 연습하자(이건! 주말에 미래의 나야 화이팅 -> 전공책 예제 다 풀어보기~~)
3. 상황에 맞는 매트릭 사용 -> 그 이유에 대한 설명도 할 줄 알아야함
4. 계산 부분점수 없단다.. -> 교수님 너무 하다!
5. 컴퓨터 성능을 평가하는데에는 다양한 고려 요소가 있지만, 컴퓨터 구조에선 "CPU 성능" 에 포커스를 둔다.

나중에 계산 문제 참고할 링크 ↓
공식 간단하게
계산 문제 예시
이건 계산 문제 해설해주는 동영상

profile
필요한 개발공부

0개의 댓글