2012-10-28 32 views
1

我正在研究嵌入式系統中的存儲器層次結構的主題。在一些嵌入式SOC器件上,專門的SRAM被提供在芯片上。我的問題是:SOC嵌入式SRAM緩存一致性

爲什麼SOC嵌入式SRAM通常不緩存相干與主存儲系統?

因此,通常將SRAM映射到非高速緩存的地址空間。

我知道,SRAM的內容依賴於應用程序,通常特異性接頭部分映射特定的數據結構,以減少訪問時間,這些數據到SRAM。例如,可以將中斷向量表放入SRAM中,減少訪問時間並強制確定性中斷處理。高速緩存SRAM會使SRAM訪問不確定,因爲可能發生高速緩存未命中。

無論如何,如果這是關係到SRAM爲什麼不連貫緩衝的原因,我不明白。

謝謝。

回答

4

在死記憶我們通常非常快。取決於你詢問緩存的大小和芯片內存的速度是相同的,所以通過增加額外的週期和通過將sram放在它前面來擴大訪問速度來減慢在線SRAM是很愚蠢的。這些系統通常也有片上閃存,並且需要緩存或某種緩存來加速執行,在這種情況下,您會在閃存前看到緩存。要使用sram前面的緩存進行數據訪問,您需要某種類型的內存管理,更多的東西來減少死亡空間以及更多東西來減慢速度。一個簡單的解決方案是,例如在芯片設計中聲明所有的地址集都是未緩存的,並將外設放在那裏,如果啓用了緩存,並且將你的內存和閃存放在那裏,那麼所有的內容都是msbit未設置爲可緩存的。

如果芯片和片外存儲器的片外存儲器空間可能需要緩存,並且可能像高位地址位或位解決方案只有片外存儲器被緩存(因爲它可能較慢)。

爲了啓動向量表,需要一直處於閃存狀態。有些系統在啓動後讓你切換內存對地址空間的響應,分支到閃存的另一個地址空間,翻轉一個控制位,現在在內存中有內存,然後你在內存中複製或創建新的向量表。在啓動時保持ivt的閃存不一定是非確定性的,我會傾向於它是非常確定的,就像片上RAM一樣確定性的。也許每個訪問速度慢幾個鍾。您的中斷和任何其他執行性能通常更多地取決於您的語言和編譯器而不是系統。

也許你應該指定你困惑的確切系統或系統。

+0

所以原因是SRAM和緩存的性能非常相似,因爲它們都是採用相同的內存技術。這就是爲什麼不需要CPU和SRAM之間的緩存。關於矢量表,我同意你的看法。 – salvo

+0

他們將可能碰巧是相同的技術,因爲它是相同的芯片,代工廠和單元庫。主要原因在於它們是本地存儲器,根據成本等因素,每次傳輸可能需要一個或幾個時鐘。沒有具體細節,但我們只能談論可能會有所不同的一般性問題。 –