Loops and Data Dependence
Dependency Types
3가지 종류의 의존성이 존재함.
S1: A=B+C
S2: D=A+2
S3: A=E+F
- Flow Dependence (true dependence) S1S2
새로 어사인된 변수가 다음 구문에서 바로 이용될 때
- Anti-dependence S2 S3
사용되어 지는 변수가 다음 번에 바로 어사인 되어 버릴때
- Output dependence S1 S3
새로 어사인된 변수가 다음번 구문에서 재차 어사인 되었을때
Dependency Types - LOOP
for k < m
= : k번쨰 인터레이션이 그것의 것에 의존 할때
m 이라는것이 k에 의존할때
k가 m에 의존 할떄
Distance Vector
Z[ i*3+2 ] =0
for ( i =3; i<=7; i++)
for(j=6; j >=2; j=j-2)
Z[i,j] = Z[i, j+2] + 1
for( i =0; i<=4; I++)
for(j = 0; j<=2; J++)
i+3, j*-2+6 = Z [i+3, j*-2+8] + 1
Cf. Affine Functions.
어떤 변수들이 i1, i2, i3, i4, i5, i6 이러하 연속 성을 가지고,
1) 상수 들의 합
2) 변수 곱하기 상수 한 것들의 합
Formal Definition of Loop-Carriedness 의존성 문제
▣GCD = 최대공약수
루프 간의 의존성으 공약수로 나눠지 냐 안 나눠지냐로 알 수 있다.
나눌수 없으면 확실히 의존성이 없는 것이며, 나눌수 있다고해서 의존성이 있는 것은 아니다.
'Computer Science > 고급 컴파일러' 카테고리의 다른 글
LLVM 8.0.0 소스코드를 빌드해서 설치하는 방법 (0) | 2019.08.07 |
---|---|
19) Loop Transformations (0) | 2014.12.10 |
Advanced Compilers Reuse Optimization (0) | 2014.12.03 |
Use-Def Analysis and SSA (Static Single Assignment) (0) | 2014.11.20 |
Dataflow Analysis (0) | 2014.11.13 |