2014-06-13 5 views
1

프로세서가 예외가 발생했음을 감지하는 방법은 무엇입니까? 이 검사 점은 어디에 있습니까? 프로세서는 예외 검사 또는 이와 유사한 F-D-E 사이클이 끝날 때마다 검사를 수행합니까? 프로세서별로 다르면 어떻게 진행됩니까? 예 : IRQ 또는 FIQ 라인을 지정할 때 시스템이 해당 라인을 점검 할 때?프로세서가 예외가 발생했음을 감지하는 방법은 무엇입니까?

+0

모든 것이 내장 된 하드웨어입니다. 인터럽트 처리에 대한 ARM [* 기술 참조 설명서 *] (http://infocenter.arm.com/help/topic/com.arm.doc.ddi0210c/DDI0210B.pdf)를 읽어보십시오. –

답변

1

모든 프로세서에는 예외를 나타 내기 위해 하드웨어 수준에서 플래그 레지스터 (상태 레지스터라고도 함)가 있습니다. 레지스터의 비트는 예외를 알리기 위해 고정 배선 (hardwired)됩니다. 다음 명령어는이 레지스터를 기반으로 실행됩니다.

+0

하지만 언제 CPU가 가서 상태 레지스터를 확인할까요? 각주기마다 진행되고 예외가 있는지 확인합니까? 그렇다면 팔의 13 사이클에서 예외 검사를 볼 수 없습니다. 이 수치는 참조 용으로 확인할 수 있습니다 http://i.stack.imgur.com/9dQt4.png –

+1

AFAIK 예외 처리는 프로세서 자체에서 고정 될 것이므로 예외를 검사하는 명령주기를 찾을 수 있다고 생각지 마십시오 다음 명령을 시작하기 전에. 나는 Hall에 의해 x86 책에서 이것을 읽었다. 이것은 ARM과 다를 바 없습니다. – Naresh

1

사실 검사 점이 없습니다. 예외 신호는 파이프 라인의 모든 단계에서 트리거 될 수 있습니다. 몇 가지 예로서, 실행 단계에서 0으로 나누는 부분, 디코드 단계에서 알려지지 않은 명령 등이 있습니다. 이러한 예외가 발생할 때마다 파이프 라인이 플러시되고 프로그램 카운터 (PC)가 해당하는 주소로 업데이트됩니다 벡터 테이블 항목. 결론은 프로세서가 예외가 있는지 주기적으로 확인하지 않는다는 것입니다. 예외가 신호를 받으면 즉시 처리합니다.

+0

감사합니다 blacklung! 그러나 프로세서가 가서 예외 신호를 검사 할 때? –

+0

주기적으로 신호를 확인하지 않습니다. 예외 신호가 어서 트되면이 프로세스는 다음 클록 사이클에서 트리거된다. 따라서 매우 간단한 타임 라인 (비현실적이지만 여전히 좋은 모델)은 C0 (클럭 사이클 0)와 같을 것입니다 : 예외 신호가 발생했습니다. C1 : 파이프 라인이 플러시됩니다. C2 : PC를 벡터 테이블 항목 주소로 설정하고 실행을 계속합니다. 포인트 – yaman