글 수 162
speculation관련부분을 보다 의문사항이 생겨서 질문을 올립니다.
arm의 경우 파이프 라인때문에 PC값이 실행명령의 + 8이 값이 되는거라고 알고 있습니다.
그래서 인터럽트에서 리턴 -4를 해줌으로 실행된 명령 다음으로 리턴하는식으로..
그런데 동적 스케줄링 상황에서 예외 상황이 발생 되었을 때 PC값 처리가 어떻게 되는지 궁금하네요
예외를 발생시키는 명령이나 인터럽트가 발생하는 시점에서 다른 명령들이 이미 이슈가 된 상태이니
PC값이 이미 상당히 진행되어진 상태일 것이라고 생각되는데,
하드웨어적으로 PC 레지스터가 예외가 발생하는 곳 다음 위치로 자동으로 갱신이 되는건지 아니면 별도의 정보가
있어서 유저가 조정을 해야되는건지가 의문이네요.
x86 예외 처리에 들어가는 소스에서는 별도의 처리 과정이 있는것 같지는 않아 보이는데 제가 혹시 해석을 잘못한 것일수도 있어서
도움을 요청합니다.
exception은 speculation이 적용되더라도 commit 단계에서 순서대로 발생하도록 하드웨어에서 보장하는 것으로 알고 있습니다.