關於指令執行週期的細節思考

2021-07-25 10:12:40 字數 861 閱讀 6761

@(組成原理)

(取自2012.44)五段流水線:取指(if)、解碼/讀暫存器(id)、執行/計算有效位址(ex)、訪問儲存器(m)、結果寫回暫存器(wb)。流水線按序發射,按序完成。不採用資料**技術,並且同乙個暫存器的讀和寫操作不能在同乙個時鐘週期內進行。

分析:這樣乙個簡單的指令執行步驟,其實非常值得深入分析,不要跑太快。

首先問,阻塞在指令序列中如何體現的?不連續即阻塞

比如i3的if段結束後,後面要隔著三個空格才能接上id,這三個空格就是阻塞,這個指令因為要等到i2寫回資料到r2才能繼續下去,id重新開始時就是在i2的wb寫完後,被喚醒。很長時間都沒有這麼分析,也沒看到相關的解答這樣串聯。

再問乙個問題,i4的if為什麼不在i3的id前面執行?根據題幹,要順序執行,在i3阻塞時,i4的指令是不允許執行的。所以i4的if才在i3的id下面,即i3開始工作了,才允許i4繼續工作。

另外,if不允許在m下面,是因為m是訪問主存,if也是訪問主存。這是隱含性的條件,是作為常識掌握。題幹強調了對暫存器的互斥訪問,而刻意忽略了主存的互斥訪問。

總之,注意if和m的互斥id和wb的互斥,再加上對阻塞情況下後序指令不許動的理解,這種繪圖型,其實很簡潔。

關於執行的思考

方 的實施,貫穿於軟體開發的整個過程。實施的關鍵在於執行,而執行由很多瑣碎的活動組成。在軟體開發實踐中,執行應該被放到乙個完整的體系環境中去考慮,單純強調執行本身,是無法解決執行問題的。在討論執行這個話題之前,我認為有必要先來看看東西方文化的差異。中國近代哲學史上有一種觀點,即地理環境決定了文化差異...

unix週期執行指令Crontab命令

鏈結 主要內容 簡單解釋一下 crontab e 編輯,類似 vim,儲存退出時會檢查語法 l 列舉所有任務 r 刪除所有任務 如果 crontab 執行出錯,可以檢視日誌檔案 var log syslog 基本語法 min表示分鐘,範圍 0 59 hour表示小時,範圍 0 23 day表示天,範...

指令,機器指令,指令週期,機器週期的辨析

首先看一道題目 通常情況下,乙個微程式的週期對應乙個機器週期。這是之前未認真辨析過的。我們知道乙個指令週期可以分為若干個機器週期,那麼對應的指令就對應若干個機器指令。比如乙個指令包含取指,間址,執行,中斷等機器指令!設計微程式的時候針對的是機器指令一對一設計。那麼乙個微程式的週期對應的就是乙個機器週...