當今片上系統(tǒng) (SoC) 的設計人員對中央處理器 (CPU) 中處理器核心的緩存非常熟悉。對主外部存儲器的讀取或寫入訪問可能非常耗時,可能需要數(shù)百個 CPU 時鐘周期,同時處理器處于空閑狀態(tài)。盡管單個存儲器訪問所消耗的功率很小,但當每秒執(zhí)行數(shù)十億次事務時,功率就會迅速增加。
舉例來說,假設每筆交易為 64 字節(jié),以 1.5 GHz 運行的單個 256 位寬數(shù)據(jù)通道每秒將產生約 7.5 億筆交易。多個數(shù)據(jù)通道通常會并行活動,執(zhí)行片外 DRAM 訪問。
當程序訪問一個內存位置的數(shù)據(jù)時,它通常需要訪問附近的其他位置。此外,程序通常具有循環(huán)和嵌套循環(huán),在這些循環(huán)中,程序在執(zhí)行下一個任務之前對同一數(shù)據(jù)塊執(zhí)行多個操作。
了解 SoC 中的緩存內存
鑒于內存訪問耗時、功耗高以及程序中典型的數(shù)據(jù)訪問和處理模式等挑戰(zhàn),采取戰(zhàn)略性方法至關重要。解決方案是在靠近處理器的地方實現(xiàn)小型、快速的緩存。
當程序從主內存請求新的數(shù)據(jù)時,系統(tǒng)會自動檢索一個數(shù)據(jù)塊并將其加載到緩存中。隨后,處理器會對本地存儲的數(shù)據(jù)執(zhí)行多項操作。最終,這些操作產生的新數(shù)據(jù)被復制回主內存。
第一級緩存(即 1 級或 L1 緩存)之后,隨著時間的推移,陸續(xù)添加了 L2 和 L3 緩存。每個后續(xù)級別都比前一個級別更大且更慢,但比訪問主內存要快得多(圖 1)。
阿特里斯
1. 多個緩存存儲器通常與一個或多個 CPU 一起使用。
另一個趨勢是使用具有不同緩存配置的 CPU 集群。例如,在四核集群中,通常每個核心都有自己的 L1 緩存,成對的核心共享一個 L2 緩存,所有四個核心共享一個 L3 緩存(如圖 1b 所示)?;蛘撸總€核心可能都有專用的 L1 和 L2 緩存,而所有四個核心只共享 L3 緩存。
關于緩存的一個考慮因素是管理共享數(shù)據(jù)的多個副本。例如,在圖 1b所示的場景中,假設 CPU0 從主內存中檢索并修改數(shù)據(jù),然后將更改后的版本存儲在其 L1 緩存中?,F(xiàn)在,假設 CPU3 希望訪問相同的數(shù)據(jù)。它應該使用哪個副本——主內存中的原始副本還是 CPU0 的 L1 緩存中的修改副本?
這種困境導致了對緩存一致性的需求,這意味著當一個數(shù)據(jù)副本發(fā)生更改時,必須修改所有其他副本。這可以通過更新其他緩存中的數(shù)據(jù)或將其他緩存中的副本標記為無效來實現(xiàn)。
緩存一致性可以通過軟件進行管理。但是,現(xiàn)在更常用的是使用特殊硬件來確保圖 1a中所示的緩存和圖 1b中所示的集群內能夠高效、透明地實現(xiàn)這一點。
現(xiàn)代 SoC 除了 CPU 之外,還包含大量知識產權 (IP) 塊。一些 IP 可能配備自己的緩存,這些緩存可能需要或不需要與 CPU 保持緩存一致性。
如果任何 IP 塊都不需要與 CPU 保持一致,則可以使用 AMBA AXI 協(xié)議采用非一致性片上網絡 (NoC)互連?;蛘撸绻?SoC 有多個需要保持群集間一致性的 CPU 群集,或者帶有緩存的 IP 需要保持一致性,則可以使用 AMBA ACE 或更現(xiàn)代的 AMBA CHI 協(xié)議采用緩存一致性 NoC 互連。
還有第三類一致性,稱為 IO 一致性,其中設備可能希望參與訪問共享內存,但不支持完全一致性。這種 IP 的一個例子是 GPU 以與系統(tǒng)其余部分一致的方式訪問共享內存,但不能直接窺探 CPU 的緩存。IO 一致性設備依靠一致性 NoC 來代表它們維護數(shù)據(jù)一致性。
如何利用緩存提高 SoC 性能
其他 IP 功能(例如硬件加速器 IP)也可能受益于使用類似上述 CPU 示例的緩存。這些以 IP 為中心的緩存通常不需要與 CPU 保持一致性;但是,它們可以使用非一致性 NoC 互連進行連接。
或者,添加暫存器 (SRAM) 可能會使某些 IP 受益。這種高速存儲器直接連接到 IP,用于臨時存儲少量數(shù)據(jù),以便快速訪問和檢索。
設計緩存或暫存器是一項復雜的任務,即使該緩存不需要與其他緩存保持一致性。開發(fā)人員希望花費寶貴的時間來構建 SoC 并設計其專有 IP 功能,以使其創(chuàng)作與競爭產品區(qū)分開來。他們通常試圖避免投入資源來開發(fā)緩存。
實現(xiàn) CodaCache
一種解決方案是使用Arteris的 CodaCache 。它是一種可配置的獨立非一致性緩存 IP。CodaCache 在使用 16 納米工藝技術實現(xiàn)的 SoC 上以高達 1.2 GHz 的速度運行,可與 AMBA AXI 互操作,每個 AXI 端口提供高達 8 MB 的容量。CodaCache 提供可配置的 1 到 16 路關聯(lián)性,具有路分區(qū)、緩存刷新、糾錯碼保護等高級功能,并支持 ISO 26262 功能安全應用。
有許多潛在的實現(xiàn)場景,其中兩種如圖2所示。第一種是向單個 IP 添加專用的 CodaCache,從而提高 IP 性能(圖 2a)。第二種是添加 CodaCache 作為最后一級緩存,從而提高 SoC 性能(圖 2b)。
阿特里斯
2. 最后級別的 CodaCache 實現(xiàn)位于互連和緩存與主存儲器之間。
CodaCache 還可用于各種場景,包括用作暫存器。以這種方式使用緩存可帶來諸多好處,例如增強性能,其特點是提高數(shù)據(jù)吞吐量和減少延遲。它還通過降低功耗和發(fā)熱量來提高能源效率。此外,它還提供設計靈活性和可擴展性等好處。