주어진 컴파일러가 ISA 레벨 대신 마이크로 아키텍처 레벨에 직접 출력을 생성 할 수 있는지 궁금합니다. 나는 요즘 마이크로 프로그래밍 레벨이 사용되지 않고 하드웨어가 ISA 레벨에서 직접 명령어를 실행한다는 것을 알고 있습니다. 그러나 가능한가? 그리고 요즘 그렇게 많이하지 않는 이유는 무엇입니까? 고맙습니다.컴파일러는 명령 세트 레벨 대신 마이크로 프로그래밍 레벨에 직접 출력을 생성 할 수 있습니까?
2
A
답변
4
CPU는 일반적으로 마이크로 프로그래밍 명령어에 직접 액세스 할 수있는 인터페이스를 제공하지 않습니다. 실제로이 명령어에 대한 바이너리 형식은 없습니다. 그래서 아무도 결과 바이너리를 사용할 수 없으므로 컴파일러가 이들을 목표로 삼을 방법이 없을 것입니다.
가능한 경우에도 ISA는 역 호환을 유지하는 표준이지만 내부 마이크로 코드는 프로세서 공급 업체가 편리 할 때마다 변경할 수 있습니다. 또한 ISA보다 압축률이 훨씬 낮으므로 바이너리가 커질 것이고 명령 캐시의 성능이 떨어질 것입니다.
+0
"성능이 떨어질 것"- CPU 모델과 제조업체 간의 호환성. AMD의 마이크로 코드는 인텔의 CPU와 다를 수 있습니다. – JimmyB
간단한 대답은 '예'입니다. 마이크로 코드의 생성은 하나의 계층에서 코드를 생성하는 것입니다. Ganesh는 이것이 인기가없는 몇 가지 이유를 제시합니다. –