티스토리 뷰

본글은 제가 이해를 돕기 위해 만든 자료입니다. 다른 분들이 읽고 이해가 잘 될 수도 있습니다.

 


Dynamic Instruction을 이해하기 위해서는 대립 개념인 Static Instruction을 먼저 이해해야 한다.

 

 

 

프로그램이 무엇인지 알면, Static Instruction은 아주 단순하다.

 

프로그램은 Instruction의 Sequence로 정의가 된다.

그래서 우리는 프로그램을 정의하는 프로그램 파일에 기록된 Instruction을 Static Instruction 이라고 할 것이다.

 

1. 프로그램에는 Instruction의 sequence가 있다.

2. 우리는 프로그램에 적힌 Instruction을 Static Instruciton이라고 부른다.

 

 

 

자! 그럼 대립 개념인 Dynamic Instruction은 무엇인가?

프로그램은 프로세서processor에 의해 실행된다.

그리고 프로세서는 프로그램을 실행하기 위해 Instruction을 Fetch해둔다.

 

그래서 우리는 프로세서에 의해 Fetch되어 실행execute되는 Instruction을 

Dynamic Instruction이라고 할 것이다.

 

 

Static Instructions : Simply the fixed "file" of instruction making up program

Dynamic Instructions : The actual instruction fetched & executed by the processor

 

 


개념은 알았으니, 이제 실제 상황을 마주해보자.

 

우리가 어떤 프로그램 A를 실행한다고 해보자.

그리고 프로그램 A는 100개의 (static) Instruction이 있다고 해보자.

 

그런데

프로그램 A에 100개 Instruction이 있다고 해서 우리가 프로세서에서 실행하는 Instruction은 100개가 아니다!

왜냐?

프로그램 A에 if-else 문도 있을 꺼고, 프로세서에 100개나 되는 Instruction을 올려놓고 실행하기에는 비효율적이기 떄문이다.

 

그래서 프로세서에는 100개 Instruction 중 일부만 Fetch되어서 실행되고 있을 것이다.

그리고 프로그램에서 특정 Instruction은 아주아주 중요해서 자주 호출되는 녀석도 있을 것이다.

 

90-10 Rule : 90%의 Execution은 10%의 Code에 의한 것이다.

 

즉, 일반적으로 Dynamic Instruction이 static code보다 더 자주 실행된다고 볼 수 있다.

 


이제 이런 Dynamic - Static의 경향을 어떻게 이용할 수 있는지 살펴보자!

 

From lecture note on POSTECH, CSED311

다음과 같이 몇몇 분기가 있는 프로그램을 생각해보자.

 

그리고 D를 보면, 

D → E → G는 프로그램에서 90%의 용량을 차지하고, (static)

D F → G는 프로그램에서 10%의 용량을 차지한다고 생각해보자. (static)

 

그런데 실제로 프로그램을 실행해보면, 

90% 용량의 D → E → G는 전체 실행에서 10% 정도만 실행되고, (dynamic)
대부분의 경우, 90%는 D → F → G가 실행된다고 해보자. (dynamic)

 

그럼 우리는 프로세서의 캐시cache에 굳이 자주 실행되지도 않는 D → E → G의 E 부분을 저장해두기에는 공간이 아깝다!!

 

그래서 우리는 Trace-cache 라는 캐시를 통해 우리가 실제로 실행하는 분기에 대해서만 캐시해두는 방식으로 용량을 절약하고자 한다!! => cache utility 개선!

 


 

 

 

 

 

 

 

(관심있는 사람만 볼 것)

Intel Pentium 4(2001년)의 Cache에서부터 도입되었다고 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함