본문 바로가기
Computer Science/Computer Architecture

1. 컴퓨터 성능 개선/결정 (How to improve)

by Gofo 2021. 4. 3.

CPU Clocking

CPU의 모든 부품들은 clock 주기에 맞춰서 동기(synchronous) 된다.

Insturction의 실행(fetch-decode-execute)도 하나의 clock period 안에 수행된다.

 

  • Clock period (clock cycle time)
    • duratoin of a clock cycle : 클럭의 길이
    • clock frequency의 역수
  • Clock frequency (clock rate)
    • cycles per second : 클럭의 주기
    • Hz 단위를 사용한다.

만약 1.0GHz 주기의 프로세서가 있다면, 1.0GHz = $1 \times 10^9$Hz 이므로, clock period는 $10^{-9}s$, 즉 1ns이다.

 


CPU Time

CPU Time은 "CPU clock cycle의 개수 x clock cycle의 길이(시간)"이다.

Clock cycle time은 주기의 역수이므로, CPU Time은 "clock cycle 개수 / clock rate(frequency)"와 같다.

CPU cycle의 개수는 instruction의 수 x instruction 1개 당 cycle의 수로 표현할 수 있다.

따라서 다음과 같은 방정식이 나온다.

 

 

CPU Performance Equation

결국 CPU time은 다음과 같이 되고, 이를 CPU performance equation이라 한다.

CPU performance eqution은 많은 모델이 될 수 있지만, 가장 효용성이 좋은 것이 아래이다.

 

 

방정식에서 볼 수 있듯이, Instruction Count, Cycle per Instruction, Clock Cycle Time을 줄이는 것이 CPU 성능을 높이는 것이 된다.

그러나 이들은 하나를 줄이면 다른 것이 늘어날 수 있는 trade off 관계이다.

예를 들어, clock cycle time을 줄이면 clock cycle의 개수(IC x CPI)가 증가하게 된다.

따라서 이 세 요소의 곱을 줄이는 것이 핵심이라 할 수 있다.

 

IC, CPI, cct

세 요소는 여러 설계 단계에 걸쳐 결정이 된다.

상위 레벨 설계에서 시작하여 하위 레벨 설계로 설계가 진행된다.

그러나 성능 요구 조건을 만족할 때 까지 interative하게 진행된다.

 

상위 설계 단계는 하위 레벨에 영향을 미치지만, 하위 레벨 설계는 상위 레벨에 영향을 주지 못한다.

예를 들어, ISA 설계는 CPI, cct의 값에 영향을 주지만, low-level implementation은 IC나 CPI 값에 영향을 주지 못한다.

 

ISA 설계가 끝나면 컴파일러가 확정되고 이로 인해 instruction count가 결정된다.

Pipeline이 확정되면 CPI가 확정된다.

 


IC (Instruction Count)

실제 실행되는 dynamic machine instruction의 수이다.

하나의 벤치마크 프로그램을 돌리는데 필요한 insturction의 수를 말한다.

 

같은 프로그램이더라도 input data에 따라서 dynamic instruction count가 달라진다.

때문에 여러 input에 대한 평균을 취해서 사용한다.

 

Dynamic Count vs Static Count

코드에 여러 instructinon이 있지만, 이 insturction들은 한번 만 실행될 수도 있고, loop, if 등을 통해 여러 번 실행되거나 한번도 실행되지 않을 수도 있다.

  • Dynamic count
    • runtime count
    • 실제 실행되는 insturction의 수
  • Static count
    • compile count 
    • size of executable file
    • 전체 instruction의 수

 

Instruction Count

Dynamic number of machine instruction executed

 

최상위 개념인 IC는 ISA 설계에서 결정된다.

ISA가 확정되면 compiler가 설계 가능하다.

이후 CPU simulator로 벤치마크를 돌리면 IC를 얻을 수 있다.

 

이에 따라 implementation(CPI, cct)가 영향을 받는다.

예를들어 RISC style과 CISC style은 하나의 instruction이 할 수 있는 일의 개수가 다르기 때문에 CPI와 cct가 달라진다.

 


CPI (Cycle Per Instruction)

CPI(Cycle Per Instruction)는 하나의 instruction을 실행하는데 필요한 clock cycle의 개수이다.

CPI는 차상위 개념으로 설계된 ISA 구현 시(high-level implementation) 결정된다.

 

최종적인 CPI는 instruction 빈도와 input data을 고려한 평균값을 사용한다.

Instruction마다 CPI가 다르기 때문에 빈도에 따른 weighted average을 계산하여 사용한다.

각 프로그램들마다 CPI가 다르고, 같은 프로그램이더라도 input data에 따라 CPI가 달라진다.

 

CPI 설계, 즉 high-level implementation은 cct(Clock Cycle Time)에도 영향을 미친다.

 

Instuction과 CPI

각 insturction마다 수행하는데 필요한 clock cycle의 수가 다르다.

예를 들어, Floating point operation은 integer operation보다 더 오래 걸린다.

또한 메모리에 접근하는 것은 레지스터에 접근하는 것 보다 더 오래걸린다.

 

Different instruction, different cycle

 

Weighted Average CPI

따라서 instruction 마다 빈도 수에 따라 CPI 평균값을 구해서 사용한다.

 

Weighted average CPI는 다음과 같다.

$CPI = \sum_{i=1}^{n}(CPI_i \times \frac{instruction_i의\,수}{전체\,instruction의\,수})$

 

예를 들어, 다음과 같은 instruction들이 있다고 하자. 이 instruction들의 weigthed average CPI는 다음과 같다.

 

Pipelining, Cache Memory와 CPI

Pipelining과 cache memory는 CPI을 줄이기 위한 핵심 기술들이다.

파이프라인을 통해서 CPU time을 줄일 수 있다. 즉, 성능을 높일 수 있다.

 

아래는 한 사이클에 Fetch-Decode-Execute가 일어나서 instruction이 실행되는 상황을

→ fetch, decode, execute를 각 단계로 만들어서 별도의 사이클에서 수행되도록 만들고

→ 3-stage pipeline을 만들고,

→ fetch, decode, execute를 각각 3단계로 나눠서 수행하도록 해서 9-stage pipeline을 만든 것이다.

 

만약 프로세서 마다 4개의 파이프라인을 만든다면 CPI는 0.25가 될 것이고 cct는 1ns이 될 것이다.

 

파이프라인이 많아질 수록 instruction 실행 횟수는 늘어나고, 이에 따라 메모리에서 instruction과 data을 읽어오는 횟수가 늘어나게 된다.

메모리에 접근하는 속도는 매우 느리기 때문에 이러한 속도 간극을 해결하기 위해서는 반드시 캐시 메모리가 이용되어야 한다.

 

트렌지스터의 크기가 작아짐에도 불구하고 die의 크기가 커지는 것은 캐시 메모리 등 추가적인 하드웨어가 요구되기 때문이다.

 


CCT(Clock Cycle Time)

Clock 한 주기의 길이를 의미한다.

cct는 하위 개념으로, low-level implementation에서 결정된다.

 

ISA와 high-level implementation이 결정되면 한 클럭 내에서 할 일들이 어느정도 확정된다.

완전한 확정은 low-level implementation에서 이루어진다.

 

clock cycle time

 

Critical Path

cct를 줄일 수록 컴퓨터 성능에 유리하다.

클럭 내에서 할 일들 중 가장 긴 것(critical path, slowest path)을 줄임으로써 cct을 줄일 수 있다.

이는 주로 회로 설계 분야(VLSI circuits design)이다.

 


Story of CPU Companies

ISA 설계 및 구현을 통해 프로세서가 생성이 된다.

 

ISA가 같으면 같은 CPU 이름을 가지게 된다.

그러나 low-level implementation이나 high-level implementation의 개선을 통해 CPU 성능을 개선할 수 있기 때문에 CPU가 만들어지더라도 이러한 연구는 계속된다.

따라서 같은 이름의 CPU 이더라도 여러 개의 버전(implementation)이 존재하게 된다.

 


RISC Style

오늘날 프로세서 설계는 RISC style로 이루어진다.

 

RISC Style

Instruction 하나가 하는 일이 작다.

같은 일을 수행하기 위해서는 더 많은 instruction이 필요하다.

때문에 IC가 증가한다.

 

그러나 ISA가 단순하여 pipelining에 유리하다.

그로인해 CPI가 감소하고, pipelining stage를 늘이면 cct가 추가적으로 감소한다.

pipelining을 쓰면 개념적으로 CPI는 1이 된다.

 

 

 

'Computer Science > Computer Architecture' 카테고리의 다른 글

1. Multicore  (0) 2021.04.10
1. Good ISA  (0) 2021.04.10
1. 컴퓨터 성능 (What to Measure, How to Measure)  (0) 2021.04.03
성능을 위한 ISA 구현 방법(간략)  (0) 2021.03.27
I/O : Interrupt (+ Atomic)  (0) 2021.03.27

댓글