[완료]ARM exception과 pipeline에 대한 질문입니다.

arrest05의 이미지

ARM7에서는 3단계 파이프라인을 사용하고 있고
ARM9에서는 5단계 파이프라인을 사용한다고 합니다!!!

제가 ARM reference 메뉴얼은 읽다보니..

exception이 발생하면 벡터테이블로 점프를 한뒤 해당 핸들러를 수행하게 되는데..

이때 핸들러를 수행하고나서 다시 원상복귀할때 파이프 라인에 의해 ( 각 exception 종류마다 다르지만 ) 다음 실행 명령어

즉 lr값을 조절하게 되는데요 여기서 궁금한게...

보통 reference 메뉴얼을 읽게되면 exception이 발생한 단계에 따라 복귀값이 달라진다고 이해했습니다.

예를들면... swi같은경우 명령어가 decode 단계일때 발생하는 exception이 되겠고.. 그렇다면 pc는 이미 한단계 앞이기 때문에
현재 수행하던 명령어를 다 처리하고 핸들러를 수행해주고 조정없이 바로 돌아오지요(pc는.. fetch단계를 가리키기때문에..)

그런데 여기서 궁금한게 fetch - decode - excution 단계에서 이러나는 exception들에 대해서는 이해가 가는데

책에 memory access - write back 에서 익셉션이 발생하는건은 기술이 안되어있는거 같더라구요..

memory access와 write back 같은경우도 pipe line stall이 일어날텐데.. 그런경우에 어떻게 되는지 궁금합니다.

제가 지금 생각하로는 바로는... 기술이 안되어있으니까... 아마도.. memory access write back은 연산된 결과를 저장하는 단계이기 때문에 execption이 발생했을때 다 처리해주고 핸들러를 수행한다...라고 생각은 하고 있습니다만.. 맞는지 모르겠네요 ㅠ

jachin의 이미지

ARM7 이나 ARM9 은 대부분 캐쉬가 없는 경우가 많아서, AMBA 에 바로 붙는 경우가 많습니다.

AMBA는 Advanced Micro-controller Bus Architecture 입니다.

메모리에 데이터를 쓰지 못하게 되었다면, 버스에서 코어에 인터럽트를 발생할 겁니다.

하드웨어 인터럽트가 발생하겠지요.