嵌入式中cache使用及資料操作一致性機制

2021-08-05 19:36:24 字數 929 閱讀 2099

嵌入式中ram實際使用的位址空間會出現不連續的情況,如片上ram2塊,片外dram 1塊,對映後可能出現如下情況:

在使用cache時,就要特別注意,要注意每一塊ram位址空間的配置,每一塊可以被配置成cache對映區和cache非對映區。

在嵌入式系統中,一般會存在多master(主裝置)情況,如典型的master:cpu0,cpu1, dma0, dma1, sata, nandc等。

對在cache對映區的位址空間操作,就要考慮memory儲存的內容一致性。多master內如果有cache存在時就要考

慮資料分散的一致性問題。要確保多master讀取寫入資料時整體的一致性。可以通過匯流排探測,cache等及時回刷等技術來實現

對某一位址空間儲存的資料一致性保證。

對不在cache對映區的位址空間操作,每次master操作該位址空間時,都會去ram中直接讀取資料,可以保證ram中資料一致性。

保證了某記憶體位址資料的唯一性後,就能保證多master同時能夠使用到想要的資料嗎?這是不可能的,多master同時讀取資料時,

又涉及到多master對匯流排的搶占使用問題。如果多master同時在使用匯流排訪問ram,由於匯流排仲裁機制原因,可能會出現某個master

讀取的資料出現老資料和新資料混合現象造成資料混亂,導致程式出錯。

因此,需要保證某乙個master在執行某個**片段時使用資料的正確性,讓多個master順序使用某ram位址空間的存續資料。

硬體原子運算元據指令應運而生,如load/store、swp、匯流排探測等指令。這種指令可以保證訪問ram時原子性操作,基於此,

作業系統之上的互斥鎖,自旋鎖,訊號量,讀寫鎖等得以實現。這些鎖機制都要基於底層硬體的原子指令來實現。

否則鎖機制就是一句空話。

嵌入式中的資料對齊

首先要提到匯流排寬度這個概念,我們平常提到的32位處理器 64位處理器,就是指的匯流排寬度為32 64位,也就是在乙個處理器訪問週期中訪問的資料位數。對於某些處理器多位元組訪問必須從偶數位元組開始,如果從奇數字址取乙個short整形數 兩位元組 將會導致異常,而對於另外一些處理器,即使多位元組的訪問...

嵌入式mysql資料

關於嵌入式mysql開發資料很少,有幾篇帖子只說自己編譯通過了,卻不說說關鍵的步驟。還是mysql的工程師厚道,給出了嵌入式mysql開發的ptt 根據ppt上詳細的介紹,你還會找到鏈結這是作者寫的乙個win32 dialog 嵌入式mysql 的demo,相當的給力。準備bd.cmd 和 errm...

嵌入式及ARM簡介

嵌入式結構 軟體 應用程式 庫 libc.so.6libc so qt 檔案系統 核心 linuxandroid bootloader uboot myboot 硬體 板卡 soc ddr nand emmc lcd soc cpu arm 匯流排 控制器 arm公司 只設計處理器架構 soc由三星...