TI C64x+ DSP CACHE 一致性分析與維護
作者:德州儀器 DSP 技術應用工程師 宋洋
摘要
在各種數字信號處理系統中,CACHE被廣泛用于彌補Core與存儲器之間的速度差異。在CACHE的使用過程中,存在不同類型存儲器之間數據是否一致的問題。本文著重分析TI高性能C64x+ DSP系列中各級CACHE之間數據一致性問題以及如何進行一致性維護。
1.概述
CACHE作為Core和低速存儲器之間的橋梁,基于代碼和數據的時間和空間相關性,以塊為單位由硬件控制器自動加載Core所需要的代碼和數據。如果所有程序和數據的存取都由Core完成,基于CACHE的運行機制,Core始終能夠得到存儲器中較新的數據。但是當有其它可以更改存儲器內容的部件存在時,例如不需要Core干預的直接數據存取(DMA)引擎,就可能出現由于CACHE的存在而導致Core或者DMA不能夠得到較新數據的現象,也就是CACHE一致性的問題。
2.C64x+ 存儲器組織結構
TI對高性能C64x核進行了改進,使其性能大大提升,稱之為C64x+DSP核。基于C64x+核開發的DSP芯片,所有部件都以交換網絡(SCR)為核心連接起來。SCR上的部件分為兩類:Master和Slave。Master包括Core、EDMA以及串行高速IO(sRIO),EMAC等外設。Master可以直接通過SCR發起到Slave的數據傳輸。Slave包括每一個Core的內存,DDR2外存以及其它不能直接發起數據傳輸的外設,Slave之間的數據傳輸,需要通過DMA協助完成。各款基于C64x+DSP的數據手冊上詳細描述了SCR的配置和Master、Slave的情況。
C64x+系統的存儲器框圖如圖 1所示。存儲器被分成了三級:第一級是L1,包含數據存儲器(L1D)和代碼存儲器(L1P);第二級是代碼和數據共用存儲器(L2);第三級是外部存儲器,主要是DDR2存儲器。L1P、L1D和L2的CACHE功能分別由相應的L1P控制器、L1D控制器和L2控制器完成。表 1總結了C64x+平臺上可用的CACHE情況。
圖 1 C64x+存儲器框圖
表 1 C64x+ CACHE特性
類型大小Line 大小L1P代碼;直接映射;較大32K 字節32 字節L1D數據;2路; 讀分配較大32K 字節64 字節L2代碼、數據;4路;讀寫分配較大256K 字節128 字節C64x+平臺上L1P用來存儲或者緩存代碼;L1D用來存儲或者緩存數據。L1P和L1D大小都是32K字節,可以分別配置0K、4KB、8KB、16KB或者32KB作為CACHE,其余作為代碼或者數據RAM。作為CACHE的部分,用來緩存L2和DDR2的數據或代碼。作為RAM的部分,可以存儲關鍵的代碼或者數據使得Core能夠以很高的速度
C64x+平臺上L2 存儲器可用于存儲代碼和數據。L2上較大可以分配256K字節CACHE來緩存DDR2中的數據或代碼。L2中其余部分作為RAM存儲代碼和數據。
圖 2描述了Core訪問存儲器內容的操作流程。在這個訪問流程中,Core對于存儲器的訪問總是先從離Core較近的一級存儲器開始,如果命中,Core可以直接得到代碼/數據,否則代碼/數據會被加載到前幾級的CACHE中,從而Core可以得到要處理的代碼/數據。在這個動態訪問過程中,各級CACHE中的內容和下一級存儲器中的內容可能存在不一致,這種瞬態的不一致不會造成問題。但是,如果Core或者其它Master不能得到另外一方對存儲器內容更新后的內容,就會出現CACHE一致性問題。
圖 2 Core訪問存儲器流程
3.CACHE一致性問題分析
在任何時刻,Core或者其它Master訪問存儲器中數據時,由于CACHE的存在造成不能夠得到較近更新過的數據,就會出現CACHE一致性問題。
在一個特定的時間范圍內,各級CACHE和它的下一級存儲器中的內容不一致是正常的。因為CACHE的作用是在一段時間內將低速存儲器中的內容自動搬運到高速的CACHE中重復使用。當CACHE中的空間被后續的數據占用的時候,才將CACHE中的內容進行失效或者回寫的操作。在失效或者回寫之前,CACHE中的內容可能與物理存儲器中的內容是不一致的。這種臨時性的不一致是正常的,上述CACHE一致性問題的描述不包含此類正常情況。
CACHE的引入是為了提高Core存取數據的效率,所以出現CACHE一致性問題一定與Core對存儲器的訪問有關。Core對存儲器的訪問分為兩類:1.Core讀代碼或者數據;
2.Core寫代碼或者數據。
據此,CACHE的一致性問題分為兩個大類:Core讀一致性問題和Core寫一致性問題。在下面兩個小節中,分別描述了這兩種情況的模型:
3.1 Core讀一致性模型
圖 3給出了Core讀一致性的模型。在這個模型中,CACHE一致性問題的存在取決于圖中虛線箭頭指示的第二步操作能否在Core從CACHE中重新讀數據之前完成。如果不能,則會造成Core讀取的數據不是其它Master更新后的數據,而是原來CACHE中的內容,從而導致一致性的問題。
圖 3 Core讀一致性模型
L1P CACHE對L2內存或者DDR2外存中的代碼進行緩存。當Core第一次對L2或者DDR2中的代碼進行讀操作的時候,由于代碼不在L1P CACHE中,CAHCE硬件會將L2或者DDR2中的代碼讀到L1P CACHE中。Core可以得到較新的代碼,不存在一致性的問題。此后,如果其它Master更新L2或者DDR2中的代碼,然后Core再次讀取此部分代碼時,會發現相應的代碼已經存在L1P CACHE中,此時Core會直接從L1P CACHE中讀取代碼。由于Core不能得到較新的代碼,就出現了Core讀一致性的問題。
L1D Core讀一致性問題的原理和L1P相同,只是L1D緩存的是L2或者DDR2中的數據。
L2 CACHE對DDR2中的代碼/數據進行緩存,當Core第一次對DDR2中的代碼/數據進行讀操作,這時代碼/數據不在L2 CACHE中,需要進行L2 CACHE的加載,Core可以得到較新的代碼/數據。之后,其它Master對DDR2中的代碼/數據進行更改,Core重讀此部分代碼/數據的時候,Core讀到的是L2 CACHE中的內容而不是DDR2中較新的代碼/數據,因此也存在Core讀一致性的問題。
3.2 Core寫一致性模型
圖 4給出了Core寫一致性的模型。在這個模型中,CACHE一致性問題的存在取決于圖中虛線箭頭指示的第二步操作能否在其它Master從存儲器中讀數據之前完成。如果不能,會造成其它Master從存儲器中讀到的數據是原來的數據而不是Core更新過的數據,從而導致一致性的問題。
圖 4 Core寫一致性模型
當Core對L2或者DDR2中的代碼/數據進行寫操作的時候,如果代碼/數據已經在L1 CACHE中,新的代碼/數據會被更新到L1 CACHE中。當其它Master從L2或者DDR2中讀代碼/數據的時候,會直接從L2或者DDR2中讀取相應的內容,如果L1 CACHE中新的代碼/數據未被更新到L2或者DDR2中,則其它Master讀取的不是更新后的內容,就會出現Core寫一致性的問題。
同樣,Core更新過的代碼/數據有可能只是緩存在L2 CACHE中,其它Master從DDR2中讀取的內容不是更新后的內容,同樣會出現Core寫一致性的問題。
3.3 C64x+一致性分析
在C64x+上的CACHE一致性問題,需要根據放置代碼/數據的相應位置進行分析。由于在C64x+平臺上,L1P、L1D和L2內存既可以作為CACHE又可以作為存儲器使用,因此,在分析一致性問題的時候,需要考慮以下幾種情況
Case1.代碼在L1P存儲器中;
Case2.代碼在L2存儲器中;
Case3.代碼在DDR2存儲器中;
Case4.數據在L1D存儲器中;
Case5.數據在L2存儲器中;
Case6.數據在DDR2存儲器中。
對于Case1,由于代碼直接在L1P存儲器中,不需要進行CACHE,所以不會存在一致性的問題。
對于Case2和Case3,涉及到L1P CACHE,存在代碼的更新能否被Core讀到的問題。代碼的更新分成兩種情況:一是Core在運行過程中對代碼進行修改;二是其它Master對代碼的修改。這兩種情況下,都會存在CACHE讀一致性問題,需要由軟件來維護。
對于Case4,數據直接在L1D存儲器中, Core始終能夠讀到其它Master更新到L1D內存中的內容,Core寫過的數據也能夠被其它Master直接從L1D內存中讀到。所以不會存在一致性的問題。
對于Case5,數據在L2存儲器,按照上面的分析,會存在CACHE讀和寫一致性的問題。在C64x+平臺上這種情況下的一致性問題會由硬件自動維護。
對于Case6,也會存在CACHE讀和寫一致性的問題,這種情況需要軟件進行CACHE一致性的維護。
4.C64x+ CACHE一致性維護操作
出現CACHE一致性問題時,為了保證Core或者其它Master在進行數據操作的時候能夠得到較新的數據,需要進行CACHE的一致性維護操作。CACHE一致性問題維護在設計中,有兩種處理方式:硬件自動維護和應用程序進行維護。
下面具體分析以上幾種情況在C64x+平臺上如何進行CACHE一致性問題處理:
4.1 硬件維護的CACHE一致性
在C64x+平臺上,硬件會對Case5的情況自動進行數據一致性維護。分析需要分為讀寫兩類操作進行,圖 5和圖 6分別描述了Core對L2上的數據進行讀和寫的情況。
圖 5 Core讀L2數據的情況
圖 6 Core寫L2數據的情況
其它Master要對L2中的內容進行更新操作時,L2控制器會根據被更新數據的地址判斷相應的地址是否在L1D CACHE中,如果在L1D CACHE中,硬件會自動將更新的數據拷貝一份到L1D CACHE中。當Core重新
相關閱讀:
- ...2015/01/20 10:57·TI 基于Concerto 雙核MCU 的PRIME 電力線通信數據集中器方案
- ...2014/12/10 15:08·TI NFC 產品在智能電視中的應用
- ...2011/11/07 09:50·如何對淺放電應用中磷酸鐵鋰 (LiFePO4) 電池使用的 TI 阻抗跟蹤 TM 電池電量計進行微調
- ...2011/05/20 10:40·幫您快速入門 TI 的 Codec Engine
- ...2011/05/20 10:32·TI 新型 Piccolo™ MCU 支持節能可靠的 LED 照明、工業設備和家電應用 - TInergy 系列文章(十二)
- ...· Efinix® 全力驅動AI邊緣計算,成功推出Trion™ T20 FPGA樣品, 同時將產品擴展到二十萬邏輯單元的T200 FPGA
- ...· 英飛凌亮相進博會,引領智慧新生活
- ...· 三電產品開發及測試研討會北汽新能源專場成功舉行
- ...· Manz亞智科技跨入半導體領域 為面板級扇出型封裝提供化學濕制程、涂布及激光應用等生產設備解決方案
- ...· 中電瑞華BITRODE動力電池測試系統順利交付北汽新能源
- ...· 中電瑞華FTF系列電池測試系統中標北京新能源汽車股份有限公司
- ...· 中電瑞華大功率高壓能源反饋式負載系統成功交付中電熊貓
- ...· 中電瑞華國際在電動汽車及關鍵部件測評研討會上演繹先進測評技術