2012-02-24 3 views
0

나는 컴파일러에서 작업 중이며 실제로 코드를 느리게 만드는 최적화를 작성했습니다. 그것을 조사한 결과 코드 생성기가 내 최적화가 해제되었을 때 핸들 (우리 컴파일러의 경우에는 이중 참조)을 사용하기로 결정했으며 내 최적화가 실행될 때 핸들에 대한 포인터를 찾았습니다! 이로 인해 배열에 액세스 할 때마다 두 번째 대소 문자에 대해 하나의 참조 해제 지침이 추가되었습니다.지침 파이프 라이닝 - 아키텍처 시뮬레이터 및 파이프 비주얼 라이저

그러나이 단일 명령은 코드 실행 시간이 놀랍게 32 % 저하되었습니다. 나는이 여분의 디 - 레퍼런스가 속도 저하를 설명 할 수있는 3 개의 의존적 인 명령어를 야기하므로 이것이 명령어 파이프 라이닝과 관련이 있다고 의심된다.

필자는 같은 것을 시연하고 파이프 라이닝에 대한 추가 정보를 얻으려고 노력하고 있으며 누군가가 지침 파이프 라이닝, 유용한 아키텍처 시뮬레이터 및 파이프 라인 비주얼 라이저에 대한 좋은 자료를 제안 할 수 있다면 좋을 것입니다.

답변

0

포인터를 역 참조해야하는 경우 먼저 포인터를 메모리에서로드해야만 포인터가 가리키는 값을로드 할 수 있습니다. 값에 대한 포인터에 대한 포인터가 있으면 연속적인 세 가지로드를 수행해야합니다. 이를 포인터 추적이라고합니다. 이러한 포인터가 캐시에 없으면 성능에 미치는 영향이 커질 수 있습니다. 파이프 라이닝이별로 도움이되지 않습니다. 컴퓨터 아키텍처에 대한 표준 책은 헤너시 & patterson입니다. 거기에 몇 가지 건축 시뮬레이터가 있습니다. http://gem5.org은 꽤 유명합니다 (전체 공개, 저는 커미터입니다). 그러나 그들은 거의 항상 가파른 학습 곡선을 가지고 있습니다.