1

我想了解DSP架構和指令執行這一基本概念:DSP並行數據和指令訪問(重複以上週期)

「基於哈佛架構,CPU可以同時獲取數據和指令字。 ..-指令讀取可以在前面的 指令執行期間發生,並且不等待 指令執行結束,或者在獲取下一條指令時不得不停止處理器的 操作。

但是由於我對計算機體系結構的知識有限,這個問題引起了我的注意: 「如果要操作的數據(操作數)是由指令詞指定的,那怎麼可能!?通過第一次迭代循環中,instr從程序存儲器加載,然後這兩個操作數應該在下一個循環中加載,這裏是不明確的: 現在是執行時間/循環轉動,所以如果在加載數據時,下一個instr。被加載的同時,先前加載的instr。丟失了,從而會發生什麼事情呢?或者我錯了,執行是通過從內存中加載數據到數據寄存器立即完成的!?「

**代碼例如: MPYF3 *(AR0)++,*(AR1)++,R0

*編: 我想,因爲不存在的寄存器文件,所以沒有任何負載數據到任何寄存器 - 直接通過內存完成! 所以在我看來,在第一次instr後。已經在下一個週期中獲取了prev指定的所需數據(操作數)。 INSTR。是由功能單元通過記憶操縱(instr。exec。),同時又是下一個instr。字被提取,並且操作數的地址也被更新(由於優秀,通過地址寄存器ALU);所有這些都是因爲這些操作(數據訪問,算術運算,地址更新,取指令)都是通過獨特的物理體系結構進行處理的。

有沒有人可以向我保證我的解釋!? 在DSP Harvard體系結構中使用併發數據和指令訪問的循環迭代的典型指令的解釋非常感謝。

預先感謝

回答

0

哈佛體系結構是一種具有兩個不同的存儲器,高速緩衝存儲器,總線等的一個是用於說明,而另一個是用於數據。這與Von Neumann體系結構形成鮮明對比,該體系結構具有用於指令和數據的單一統一存儲器。

另一方面: C/C++軟件的一個常見問題是緩衝區溢出,你(壞人)惡意地將許多指令作爲程序的「輸入數據」寫入,希望有人不希望不檢查輸入長度,並會意外地讓你的「數據」(實際上是一個僞裝成數據的程序!)來覆蓋內存的「指令」部分。然後當程序遇到這些新的指令時:BAM!您的「數據」(實際上是一個程序)現在可以控制原始程序。哈佛體系結構由於其兩個獨立的存儲空間而不會受到這個問題的困擾。

那麼DSP DSP如何一次完成多件事?它有魔力嗎?不是真的。這意味着只是CPU是流水線。流水線意味着一個CPU可以同時執行一條指令的開始,另一條指令的中間以及三分之一的結束。怎麼樣?通過保留一組中間結果寄存器作爲管道一級的「輸出」和「輸入」到另一級。

值得一提的是流水線與哈佛/馮諾依曼體系結構無關。兩者都可以流水線化。

相關問題