SyntaxHighlighter.all();

프로세서는 성능 향상을 위해 보폭 예측을 사용합니다. 보폭 예측은 많은 양의 상수를 생성하는 명령을 최적화합니다.

 

예를 들어 number를 십만번 더하는 코드가 수행된다고 가정해봅시다.

 

 

 

 

 

 

 

 

 

프로세서는 여러 개의 파이프라인으로 구성되어 고도의 병렬 연산을 수행하는데, number의 경우

 

이전 number에 1을 더해야 하기 때문에 dependency가 발생, 병렬 연산이 불가능하여 성능저하를 유발합니다.

 

이때 프로세서는 성능 향상을 위해 number를 일일이 더하지 않고 1씩 값이 증가하는 것을 예측하여 연산합니다.

 

[Stride]

stride는 값이 변화하는 보폭입니다. 예를 들어 수열 1,2,3,4,5,6 ~ 99, 100이 있습니다. 이 때 수열의 stride는 1입니다.

 

[Stride State Diagram]

value : 계산한 결과값

stride : 보폭, value1(선행 계산 결과) - value2(후행 계산 결과)

 

- Init state

처음 명령이 수행되었을 때의 상태. 해당 명령의 결과는 value에 저장됩니다.

 

- Transient state

Init 상태에서 다음 명령이 발생하면 결과를 value2에 저장. 이때, stride(value1 – value2)가 계산. 해당 상태를 transient(일시적 보폭) 라고 합니다.

transient상태에서 다음 명령이 수행되었을 때 stride값이 같다면 steady로 상태변화합니다.

 

- Steday state

보폭이 안정된 상태로 변수를 정확히 예측하여 수행 시간이 감소합니다.

새로운 명령을 수행한 뒤 stride가 같다면 steady state를 유지합니다. 만약 stride가 틀리면 transient상태로 변화합니다.

 

 

[참조]

"Data Value Prediction",  Jumnit Hong,  Elias Khair ... 

during "stride predicator".

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.86.8888&rep=rep1&type=pdf

 

반응형

'컴퓨터구조' 카테고리의 다른 글

[컴퓨터구조] mfence (Memory Fence)  (0) 2019.05.03
[컴퓨터구조] clflush instruction  (0) 2019.05.03

+ Recent posts