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