반응형
- Performance, 성능 부분에 데하여 얘기를 해보겠습니다.
Performance (성능)
일종의 측정, 보고, 성과 요약 방법입니다.
- 지능적인 선택에 유용합니다.
- 또한 마케팅 광고를 통해 확인할 수 있습니다.
- 그리고 조직의 근본적인 동기를 파악하기 위한 핵심 사항 입니다.
Q. 어떤 하드웨어가 다른 프로그램에 대해 다른 하드웨어보다 더 나은 이유는 무엇입니까?
Q. 하드웨어와 관련된 시스템 성능 요소는 무엇입니까? (예: 새로운 기계 또는 새로운 운영 체제가 필요합니까?)
Q. 기계의 명령어 세트가 성능에 어떤 영향을 미칩니까?
Computer Performance: Time, Time, Time
- Response Time (Latency) - 응답, 대기시간: 작업을 수행할때 걸리는 시간 입니다. 예시는 아래에 적어놓았습니다.
- 일이 실행되는데 얼마나 걸리는지?
- task를 실행하는데 얼마나 걸리는지?
- 데이터베이스 쿼리를 얼마나 기달려야 하는지?
- Throughput (처리량) : 단위 시간당 작업 수 입니다.
- 기계는 한 번에 몇 개의 작업을 실행할 수 있습니까?
- 평균 실행률은 얼마입니까?
- 작업이 얼마나 진행되고 있습니까?
- Response time (응답, 대기시간) & Throughput (처리량)은 아래의 요인에 의하여 영향을 받을수도 있습니다.
- 프로세서를 더 빠른 버전으로 교체?
- 프로세서 추가?
- 이렇게 2개의 요인에 의하여 영향을 받을 수 있습니다.
Execution Time (실행 시간)
- 경과시간
- 모든 것(디스크 및 메모리 액세스, I/O 등)을 카운트합니다.
- 유용한 숫자이지만 종종 비교 목적에 적합하지 않습니다.
- CPU 시간
- I/O 또는 다른 프로그램을 실행하는 데 소요된 시간이 계산되지 않습니다.
- 또한 시스템 시간과 사용자 시간으로 나눌 수 있습니다
- 우리의 초점: 사용자 CPU 시간(vs. System CPU tme)
- 프로그램에 있는 코드 행을 실행하는 데 소요된 시간을 의미합니다.
분,초 대신 clock cycles을 사용합니다.
Book’s Definition of Performance
- 시스템 X에서 실행되는 일부 프로그램의 경우: 𝑃𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒 x = 1 / 𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑇𝑖𝑚𝑒 x
- X는 Y보다 n배 빠릅니다: 𝑃 𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒 x / 𝑃𝑒𝑟𝑓𝑜𝑟𝑚𝑎𝑛𝑐𝑒 Y= n
- Problem
- A 기계는 10초 안에 프로그램을 실행합니다.
- B 기계는 15초 안에 동일한 프로그램을 실행합니다.
Clock Cycles
clock period: cycle
- 실행 시간을 초 단위로 보고하는 대신 Cycle(주기)를 사용하는 경우가 많습니다.
- Clock ticks는 활성화를 시작할 시기를 나타냅니다.
- Clock cycle time = time between ticks = seconds per cycle (1cycle당)
- Clock rate (Frequency) = cycles per second
- 1Hz. = 1Cycle / sec
Summary
프로그램 당 sec = 프로그램 당 사이클 x 사이클 당 sec(일정) -> 프로그램이 몇 cycle인가로 알 수 있습니다.
clock cycle time: tick의 주기 = 한 cycle 당 sec
clock rate: clock 주파수: 초당 몇 cycle -> 서로 역수 관계 입니다.
How to Improve Performance? (성능 향상?)
- 따라서, 성능을 향상시키기 위해서는 아래의 조건들이 필요합니다. (다른 모든 것은 동등함)
- Reducing : the # of required cycles for a program, (프로그램당 필요 cycle)
- Reducing : the clock cycle time (사이클당 필요한 시간)
- Increasing : the clock rate (초당 돌아가는 사이클)
cycle 개수 감소, clock cycle time 감소, clock rate 증가 - 이 3가지가 Performace (성능 향상 방법) 입니다.
Example
- 우리가 가장 좋아하는 프로그램은 400Mhz 시계를 가진 A 컴퓨터에서 10초 안에 실행됩니다. 우리는 컴퓨터 디자이너가 이 프로그램을 6초 안에 실행할 새로운 기계 B를 만들도록 돕고 있습니다.
- 설계자는 새로운 기술을 사용하여 클럭 속도를 상당히 높일 수 있지만, 이러한 증가가 CPU 설계의 재설정에 영향을 미쳐 B 기계가 동일한 프로그램에 대해 A 기계보다 1.2배 많은 클럭 주기를 요구하게 된다고 알려왔습니다.
- 디자이너 목표에 어느 정도의 시계 속도를 말해야 합니까?
Solution
- 프로그램에는 몇 번의 사이클이 필요합니까?
- 사이클 수 = 명령 수를 가정할 수 있습니다.
- 이 가정은 틀렸습니다. 다른 지침마다 다른 기계에서 다른 시간이 소요됩니다.
서로 다른 지침에 대한 서로 다른 사이클 수
- 곱셈은 덧셈보다 더 많은 시간이 걸립니다
- 부동 소수점 (float) 작업이 정수 (int) 작업보다 오래 걸립니다
- 메모리에 액세스하는 것이 레지스터에 액세스하는 것보다 더 많은 시간이 걸립니다.
중요 사항
사이클 시간을 변경하면 다양한 계측기에 필요한 사이클 수가 변경되는 경우가 많습니다.
Relating Processor Metrics (관련 프로세서 메트릭)
- (CPU) Execution time per program
𝐶𝑃𝑈 𝑐𝑙𝑜𝑐𝑘 𝑐𝑦𝑐𝑙𝑒𝑠 / 𝑝𝑟𝑜𝑔𝑟𝑎𝑚 × 𝐶𝑙𝑜𝑐𝑘 𝑐𝑦𝑐𝑙𝑒 𝑡𝑖𝑚𝑒
= 𝐶𝑃𝑈 𝑐𝑙𝑜𝑐𝑘 𝑐𝑦𝑐𝑙𝑒𝑠 / 𝑝𝑟𝑜𝑔𝑟𝑎𝑚 × 1 / 𝑐𝑙𝑜𝑐𝑘 𝑟𝑎𝑡𝑒 (Frequency - 빈번하게)
𝐶𝑃𝑈 𝑐𝑙𝑜𝑐𝑘 𝑐𝑦𝑐𝑙𝑒𝑠 / 𝑝𝑟𝑜𝑔𝑟𝑎𝑚 = 𝐼𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛𝑠 / 𝑝𝑟𝑜𝑔𝑟𝑎𝑚 x 𝑪𝒍𝒐𝒄𝒌 𝒄𝒚𝒆𝒄𝒍𝒆𝒔 𝒑𝒆𝒓 𝑰𝒏𝒔𝒕𝒓𝒖𝒄𝒕𝒊𝒐𝒏
- Clock cycles per instruction (CPI) - 명령어당 평균(Category 화) 클럭 사이클 수를 의미합니다.
- instruction이 몇개의 cycle을 수행하는지? 이건 instruction set architecture에 의해 정해져 있습니다.
Execution Time (실행시간) = Seconds / Program
= Instructions / Program x Cycles / Inst. x Seconds / Cycle (고정 - 1 cycle당 몇초?)
Performance는 실행 시간에 따라 결정됩니다.
CPI = Clock Cycles / Instruction Count (IC)
두 가지 모두에 영향을 받습니다:
1. 지시유형별 비용(Implementation, ISA)
2. 다양한 명령어의 빈도(명령어 혼합, 프로그램)
Clock cycles per instruction (CPI)
CPI를 계산하는 방법에 데하여 설명을 해보겠습니다.
- 여기서 cpi의 종류가 n개라고 가정해보겠습니다.
Example CPI Calculation
- 동일한 ISA(Instructions Set Architecture)의 구현이 두 개 있다고 가정합니다. → Instruction, Cycle당 CPI은 같습니다.
두 프로그램들의 CPI를 이렇게 가정해 보겠습니다.
1. Machine A has a clock cycle time of 1 ns. and a CPI of 2.0
2. Machine B has a clock cycle time of 2 ns. And a CPI of 1.2
- 이 프로그램에는 어떤 기계가 더 빠르며, 얼마나 소요가 됩니까?
Solution
ISA와 같으므로 N개의 명령어 수가 같습니다.
- 여기서 우리가 알 수 있는건 동일한 ISA은? - instruction 당 cycle이 같다는걸 알 수 있습니다.
대체 성능 지표: MIPS
MIPS: Millions of Instructions Per Seconds
MIPS는 초당 수행하는 instructions(명령어)입니다. (백만개 단위)
- 다만 단점이 있습니다: 동일한 MIPS일때만 가능합니다. (덧셈 - 덧셈, 곱셈 - 곱셈)
- MIPS 사용시 문제
- MIPS식에서 Time은: 3개의 항으로 풀어쓰기가 가능합니다.
- 또한 MIPS랑 비교시 명령어 set를 같은걸 써야합니다. → ‘+’ : 100s, ‘x’ : 100s 이면 높은확률로 ‘x’가 더 좋은 성능을 냅니다.
- 그리고 다양한 명령어 믹스가 있는 프로그램입니다.
- 여러 명령어가 사용된 프로그램의 MIPS로 성능 평가 어렵다는 점이 있습니다.
- MIPS가 높아지면 성능이 올라간다는 특징이 있습니다.
Instruction Count / Time x 10**6 = Clock Rate / CPI x 10**6
MIPS Example
- 서로 다른 컴파일러들이 3개의 서로 다른 클래스의 지침을 사용하여 4GHz 기계에 대해 테스트 중입니다.
- 두 컴파일러 모두 대규모 소프트웨어에 대한 생산 코드를 사용합니다.
A는 instruction 당 1개, B는 2개, C는 3개입니다.
여기서 2가지 점에 집중을 해봐야 합니다.
1. MIPS로 보면 어떤 sequence(compiler)가 더 빠른가?
2. 수행시간으로 보면 어떤 sequence(compiler)가 더 빠른가?
- CPI (명령어당 Clock Cycle)
- Code Sequence: 같은 Program을 같은 Machine에 돌려도, Compiler가 서로 달라져서 Instruction Class별로 Count가 달라집니다.
Solution
Now that we understand cycles
- 이떄 Cycle을 알기 위해 프로그램은 이러한 정보가 필요합니다.
- Some number of instructions (machine instructions) - 일부 명령어(기계 명령어)
- Some number of cycles - 일부 사이클 수
- Some number of seconds - 몇 초 동안
- 다음 수량과 관련된 어휘가 있습니다:
- 클럭 사이클 시간(사이클당 초)
- 클럭 속도(초당 주기) - 1초에 몇 cycle
- CPI(명령어당 시계 주기) - 명령어 집합당 Clock Cycle
- MIPS(Millons of Instruction Per Second) - 초당 몇백개의 instruction이 수행되는지?
Performance (성능)
- 수행시간에 따라 성과가 결정됩니다. → 실행시간 내려가면 성능은 상승, 올라가면 성능 하락
- 다른 변수 중에 성능이 동일한 변수가 있습니까? → 아래의 질문은 Performance 상향을 위한 질문들입니다.
- 프로그램을 실행하기 위한 사이클 수?
- 프로그램에 지시사항?
- 초당 사이클 수?
- 명령당 평균 사이클 수?
- 초당 평균 명령 수?
Common pitfall → 변수 중 하나가 실제로 그렇지 않을 때 성과를 나타내는 것이라고 생각합니다.
반응형
'⚙️ Computer Architecture' 카테고리의 다른 글
[Computer Architecture] RISC-V (0) | 2024.07.13 |
---|---|
[Computer_Architecture] Instruction Set (0) | 2024.07.11 |
[Computer_Architecture] Performance Part.2 (0) | 2024.06.24 |
[Computer Architecture] Processor, Computer System Organization (0) | 2024.04.18 |
[Computer Architecture] What is Computer Architecture? (0) | 2024.04.16 |