Optimization Practice
CPE(Cycle Per Element) : 요소당 필요한 cycle. 함수들의 성능을 비교하는 기준이 된다.
Basic Program
Combine1
Combine2
code motion : 루프에 불필요한 코드를 삭제 혹은 이동시킨다.
Combine3
루프 내의 함수 호출을 줄인다.
Combine4
불필요한 메모리 참조 횟수를 줄인다.
Combine5
Loop unrolling : 루프의 반복 횟수를 줄인다.
Combine6
Loop splitting : 변수를 여러개 두어 loop의 반복 횟수를 줄인다.
Loop unrolling과 loop splitting은 최적의 정도를 찾아 적절히 할 필요가 있다. 일정 수준 이상으로 프로그래밍할 경우 성능이 기대에 미치지 못한다. 대표적인 이유는 CPU의 레지스터 개수가 제한적이기 때문이다.
Functional Unit Performance
latency와 Issue time이 다를 경우 파이프라인 설계가 가능함을 의미한다.
예제
자원이 제한된 경우와 제한되지 않은 경우에서의 명령어 스케쥴링
Branch Misdirection Penalties
효율적인 Branch prediction을 위해서는 순차적으로(예측가능함) 접근하는게 유리하다.
'Domain > 시스템 프로그래밍' 카테고리의 다른 글
4. Process Structure (0) | 2020.03.14 |
---|---|
5. Task Programming (0) | 2020.03.14 |
6. IA Assembly Programming (0) | 2020.03.14 |
7. IA : History & Features (0) | 2020.03.14 |
9. Assembler (0) | 2020.03.14 |