|
|
最近在學(xué)習(xí)RISC機器的設(shè)計過程中聯(lián)系到ARM920T內(nèi)核的流水線工作,以前編程的時候接觸過一點,主要是處理中斷現(xiàn)場。ARM920T是三級流水線設(shè)計,即取指譯碼、執(zhí)行、回寫結(jié)果。內(nèi)核控制器會在每一次指令執(zhí)行完畢后檢查所有的中斷信號,因此在檢查當(dāng)前中斷信號時PC寄存器中存儲的是當(dāng)前執(zhí)行完畢指令的下一條指令的下一條指令。因為,當(dāng)取出一條指令時,PC<-(PC+1),當(dāng)執(zhí)行一條指令時,流水線工作繼續(xù)做PC+1,當(dāng)回寫結(jié)果即執(zhí)行完當(dāng)前指令時PC+3后寫入了PC,因此當(dāng)前指令地址=PC-3,當(dāng)前指令的下一條指令地址=PC-2。
ARM920T不像Cortex-M3核會自動保存現(xiàn)場,編譯工具也不提供自動處理,需要用戶在編寫啟動代碼時手動的處理,即保存現(xiàn)場環(huán)境到用戶棧中,在中斷返回時推出確保正常的指令流順序進行。
ARM920T有多種工作模式,用戶需要使用正確工作模式的SP指針確保正常的返回
|
|