cpu執行時程式是在flash中還是在RAM呢?

2023-02-22 20:15:06 字數 1866 閱讀 7143

1樓:短髮女

x86cpu和微控制器讀取程式的具體途徑。

pc機在執行程式的時候將程式從外存(硬碟)中,調入到ram中執行,cpu從ram中讀取程式和資料。

而微控制器的程式則是固化在flash中,cpu執行時直接從flash中讀取程式,從ram中讀取資料。

造成這種差別的具體原因分析。

x86構架的cpu是基於馮。諾依曼體系的,即資料和程式儲存在一起,而且pc機的ram資源相當豐富,從幾十m到幾百m甚至是幾個g,客觀上能夠承受大量的程式資料。

微控制器的構架大多是哈弗體系的,即程式和資料分開儲存,而且單片的片內ram資源是相當有限的,內部的ram過大會帶來成本的大幅度提高。

通過上面的分析可得知:微控制器的程式能儲存於flash中是基於兩點考慮,即體系結構和ram資源的多少。因此,在技術不但進步片內ram容量不斷增多的今天,ram資源已經不再是制約這種差別的主要因素,而對於體系機構我們只要更改cpu讀取程式的方式就可以。

將嵌入式系統的程式存於ram中的具體做法。

「對於很多的嵌入式系統,其**很多都儲存在nor flash中,執行也是直接在flash中執行。我最近了解到我新公司的軟體中的一段**當時為了提高執行速度被載入到ram中執行。當時他們是花了很多時間來解決這個問題的。

他們是這樣實現的:

1,將你需要在ram中執行的**寫在單獨的乙個c檔案中,然後在指令碼中設定其執行位址與存放位址分開。設定好必要的**起始和結束的標誌變數。

2,在**中將存放位址處的**拷貝到執行位址中。

馮。諾依曼體系與哈佛體系的區別。

二者的區別就是程式空間和資料空間是否是一體的。 早期的微處理器大多採用馮諾依曼結構,典型代表是intel公司的x86微處理器。取指令和取運算元都在同一匯流排上,通過分時復用的方式進行的。

缺點是在高速執行時,不能達到同時取指令和取運算元,從而形成了傳輸過程的瓶頸。

哈佛匯流排技術應用是以dsp和arm為代表的。採用哈佛匯流排體系結構的晶元內部程式空間和資料空間是分開的,這就允許同時取指令和取運算元,從而大大提高了運算能力。例如stm320lf240x系列dsp是增強型的哈佛結構通過三組並行的匯流排訪問多個儲存空間。

cpu執行時程式是在flash中還是在ram?

cpu執行時程式是在flash中還是在ram?

cpu執行時程式是在flash中還是在ram

討論:程式是執行在flash中還是ram中

2樓:匿名使用者

pc(x86)採用的是馮諾依曼結構,執行的時候即資料和程式都放在同乙個儲存器(ram)裡,共用一條儲存匯流排。具體 :當pc沒電的時候,程式和資料儲存在硬碟裡,當pc上電的時候,在硬碟裡執行的一段小程式把全部程式從硬碟搬運到ram中,然後程式開始在ram中執行;

而嵌入式系統(arm,dsp)採用的哈佛結構,執行的時候程式儲存在flash中,資料儲存在ram中,所以cpu從flash中取指令,到ram中取資料,指令匯流排和資料匯流排也是分開的;2者之所以採用不同的結構,主要因為pc的ram空間足夠,而嵌入式的ram太小;

cpuôëððê±³ìðòêçôúflashöð»¹êçôúramäø£¿

äü²»äü½«éõôúflashàïµä³ìðò£¬ôúôëððê±è«²¿¼óôøµ½ramàôúramàïôëðð£¿

微控制器是執行在flash 還是在ram上

3樓:匿名使用者

微控制器的程式是燒錄在flash儲存器中的,執行程式時,是直接從flash中讀出指令送cpu執行的,並不是在ram上執行的,只是在執行的過程中,需要在ram中讀/寫資料。

c語言程式執行時間測試,C語言程式執行時間測試

clock t clock void 這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時之間的cpu時鐘計時單元 clock tick 數,在msdn中稱之為掛鐘時間 wal clock 其中clock t是用來儲存時間的資料型別,在time.h檔案中,我們可以找到對它的定義 if...

C語言求乙個程式執行時間,C語言程式執行時間測試

我用c 做過資料結構 那個單鏈表還在。和你這樣 一樣 你留下 你如果 喜歡就要吧 include using namespace std typedef int elemtype typedef struct studentstudent,slistlink clock的度量單位是ms,但是cpu的...

android安裝程式的記憶體跟程式執行時用的記憶體是一樣嗎

不一樣,智慧型手機手機有rom和ram兩種記憶體,rom中是手機的作業系統以及安裝的軟體,ram是執行記憶體 就是程式在執行的時候存放臨時資料的 1.注意資源 像資料庫,輸入輸出流,定位操作這樣的物件,要在使用完及時關閉流。2.少使用靜態變數,因為系統將靜態變數的優先順序設定的很高,會最後 所以可能...