출처: https://3months.tistory.com/307 [Deep Play]

4-1/컴퓨터아키텍쳐

Chapter 1 : CPI( Cycles Per Instruction )

코딩하는 랄뚜기 2022. 3. 15. 15:48

CPI

CPI는 말 그대로 한 Instruction을 읽을 때 돌아야 하는 Cycle의 수이다.

 

다른 종류의 Instruction마다 필요한 Cycle의 수는 일정하지 않고 다르다.

예를 들어 Add $1,$2,$3은 1개의 Cycle이 필요하다면, beg $1,$2, 100은 2개의 Cycle이 필요할 수 있다.

 

따라서 CPU Time을 나타날 때 사용되는 Clock CyclesCPI의 엄밀한 정의는 다음과 같다.

 

즉, CPU Time을 표현할 때 쓰는 CPI는 Avg.CPI라고 이해하는 것이 좋다.

 

예시를 통해 더 자세히 알아보자.

 

Class A의 instruction을 읽을 때는 1개의 Cycle, Class B는 2개, Class C는 3개의 Cycle이 필요하다는 것이다. ( 한 개의 instruction을 읽을 때 필요한 Cycle은 무조건 양수여야 한다. )

 

Sequence1의 총 Cycles는 1*2+1*2+3*2=10이다. 따라서 Avg.CPI = 10 / 5 = 2이다.

Sequence2의 총 Cycles는 1*4+2*1+3*1=9이다. 따라서 Avg.CPI = 9 / 6 = 1.5이다.

 


Instruction set architecture

 

CPU의 Peformance는 Algorithm, Programming language, Compiler, Instruction set architecture가 영향을 미친다.

 

예시를 통해 Instruction set architecture에 대해 자세히 알아보자.

 

 

Mult, Add라는 두 개의 instruction이 걸리는 시간을 나타냈다.(실제로는 매우 매우 매우 짧을 것이다.)

Mult가 1초이므로 Clock cycle time을 1초로 설계하는 것이 효율적이다.

 

Sequence1Sequence2 모두 실행하는데 4개의 Cycle이 필요했고, 4초의 시간이 걸렸다.

Mult와 Add를 동시에 처리해주는 실행시간이 1.5초인 Madd라는 instruction이 있다고 가정하자.

그렇다면 위 예시는 아래처럼 바꿀 수 있다.

 

 

Madd를 넣어야 하기 때문에 Clock cycle time을 1.5초로 해야한다.

 

 

Sequence1는 2개의 Cycle이 필요하여 총 3초가 필요하고 Sequence2는 4개의 Cycle이 필요하여 총 6초가 필요하다.

Sequence1에 필요한 시간은 줄었지만 Sequence2의 시간은 늘어났다.

Madd를 추가하는 것이 어떤 프로그램을 돌리느냐에 따라서 효율적일 수도 있고 비효율적일 수도 있다.

Instruction set architecture를 설계할 때는 무조건 적인 답이 있는 것이 아니라 프로그램에 맞게 유동적으로 설계해야 한다.

 

Hardware designer must often trade off clock rate against cycle count.

강의자료에 위와 같은 말이 있었다. 하드웨어 디자이너는 cycle countclock rate(clock cycle time의 역수) 사이에서 고민한다는 말인데 Instruction set architecture를 두고 하는 말인 거 같다.

 

 

'4-1 > 컴퓨터아키텍쳐' 카테고리의 다른 글

Chapter 2  (0) 2022.04.05
Chapter 1 : Power, Integrated Circuit  (0) 2022.03.16
Chapter 1 : Relative Performance, CPU time  (0) 2022.03.10