Cache在嵌入式處理器中的使用問題

來源:互聯網
上載者:User
Cache在嵌入式處理器中的使用問題 作 者:西北工業大學 王豔 吳旭光 趙勳峰

  隨著嵌入式電腦應用的發展,嵌入式CPU的主頻不斷提高,這就造成了慢速系統儲存空間不能匹配高速CPU處理能力的情況。為瞭解決這個問題,許多高效能的嵌入式處理器內部整合了快取Cache。其中,三星公司的S3C44B0X內部就整合了8 KB空間統一的指令和資料Cache。

  Cache即高速緩衝儲存空間,是位於CPU與主存之間一種容量較小,但速度很高的儲存空間。由於CPU在進行運算時,所需的指令和資料都是從主存中提取的,而CPU運算速度要比主存讀寫速度快得多,這樣極其影響整個系統的效能。採用Cache技術,即在Cache中存放CPU常用的指令和資料,然後將這些資料和指令以一定的演算法和策略從主存中調入,使CPU可以不必等待主存資料而保持高速操作。這樣就滿足了嵌入式系統即時、高效的要求。但Cache的使用也帶來了一致性的問題,在應用中應特別注意。

1 Cache一致性問題的發現

  本項目的目標板為:處理器採用ARM晶片S3C44B0X,儲存空間採用2片Flash和1片SDRAM,在調試的時候輸入採用鍵盤,輸出採用顯示器,用RS232串口實現通訊。

  在項目的開發過程中,經軟體模擬調試成功的程式,燒入目標板後,程式卻發生異常中止。通過讀儲存空間的內容發現,程式不能正常運行在目標板上,是因為儲存空間中寫入的資料與程式編譯產生的資料不一致,總是出現一些錯誤位元組。

  經過一段時間的調試發現,只要在程式中禁止Cache的使用,儲存空間中寫入的資料將不再發生錯誤,程式可以正常運行,但速度明顯減慢。經過分析,認為問題是由於Cache資料與主存資料的不一致性造成的。

  Cache資料與主存資料不一致是指:在採用Cache的系統中,同樣一個資料可能既存在於Cache中,也存在於主存中,兩者資料相同則具有一致性,資料不相同就叫做不一致性。如果不能保證資料的一致性,那麼,後續程式的運行就要出現問題。

2 分析Cache的一致性問題

  要解釋Cache的一致性問題,首先要瞭解Cache的工作模式。Cache的工作模式有兩種:寫直達模式(writethrough)和寫回模式(writeback)。寫直達模式是,每當CPU把資料寫到Cache中時,Cache控制器會立即把資料寫入主存對應位置。所以,主存隨時跟蹤Cache的最新版本,從而也就不會有主存將新資料丟失這樣的問題。此方法的優點是簡單,缺點是每次Cache內容有更新,就要對主存進行寫入操作,這樣會造成匯流排活動頻繁。S3C44B0X中的Cache就是採用的寫直達模式(writethrough)。在寫直達模式下,資料輸出時,系統會把資料同時寫入高速緩衝儲存空間Cache和主存中,這樣就保證了輸出時高速緩衝儲存空間的一致性。但該模式下,卻無法保證輸入時的高速緩衝儲存空間的一致性。

  下面再看一下Cache的組織方式。按照主存和Cache之間的映像關係,Cache有三種組織方式。全相聯方式、直接映像方式和組相聯方式。其中,直接映像方式的原理1所示。

      
                圖1直接映像

  按照Cache的行數m,把主存分為n/m個地區,每個區中有m個儲存塊。各區中的0~(m-1)塊一一對應地固定映射到Cache中L0~Lm-1行。這樣,標籤只要給定區地址(區號),就能唯一確定Cache行與儲存空間的對應關係。當CPU發出儲存空間訪問時,以儲存空間地址作為行索引,定址到一高速緩衝行,檢測該行的標籤。若標籤與儲存空間的相應地址匹配,則Cache命中。該快取行當前即為欲訪問儲存塊的唯一映像。從上面的分析可以看出,在寫直達模式下,由於每次Cache內容有更新,就要對主存進行寫入操作,造成匯流排活動頻繁。在Cache命中的過程中,如果匯流排遇到幹擾,就會出現資料不一致的現象。

3 Cache一致性問題的解決方案

  該問題可以從軟體及硬體兩方面著手解決。

3.1 軟體解決的方法

  S3C44B0X的Cache提供完整的Cache使能和禁止操作模式。能夠通過設定SYSCFG寄存器中CM域中的值為01或11來使能Cache(其中,01為使能4 KB Cache, 11為使能8 KB Cache),而通過清除SYSCFG寄存器中[2:1]域為0來禁止Cache功能。用禁止Cache的方法來消除資料不一致性問題,具體代碼如下:

  #define rSYSCFG(*(volatile unsigned *)0x1c00000)
  #define WRBUFOPT (0x8)  //write_buf_on
  #define SYSCFG_0KB (0x0|WRBUFOPT)
  #define SYSCFG_4KB (0x2|WRBUFOPT)
  #define SYSCFG_8KB (0x6|WRBUFOPT)
  #define CACHECFGSYSCFG_0KB
  rSYSCFG= CACHECFG;    //禁止Cache

  另外,S3C44B0X還提供了2個不能Cache訪問的地區(noncacheable area)。每個地區要求兩個Cache控制域,用來表明每一個不能Cache訪問地區的起始和結束位址。在不能Cache訪問的地區,當Cache沒有命中,一個讀的時候,Cache不能更新。在已知影響到資料不一致的地址情況下,可以在使能Cache的條件下,用設定不能Cache訪問地區的方法,防止產生資料不一致現象。有時,如果資料區域被安排在不能Cache地區,程式執行速度更高,因為多數變數是不能重用的。對於不能重用的變數,重新整理16 B的Cache儲存空間是浪費的。本系統中設定不能Cache訪問的地區為0x2000000~0xc000000,就可以解決資料不一致問題。代碼如下:

  #define rSYSCFG(*(volatile unsigned *)0x1c00000)
  #define WRBUFOPT (0x8)    //write_buf_on
  #define SYSCFG_0KB (0x0|WRBUFOPT)
  #defineSYSCFG_4KB (0x2|WRBUFOPT)
  #define SYSCFG_8KB (0x6|WRBUFOPT)
  #define CACHECFG SYSCFG_8KB
  #define rNCACHBE0 (*(volatile unsigned *)0x1c00004)
  #define rNCACHBE1 (*(volatile unsigned *)0x1c00008)
  #define Non_Cache_Start(0x2000000)
                //不能Cache訪問的地區開始地址
  #define Non_Cache_End(0xc000000)
                //不能Cache訪問的地區結束位址
  rSYSCFG= CACHECFG;
                // 8 KB cache,寫緩衝使能,data abort使能
  rNCACHBE0= ((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);//在上面的資料區域不使用快取Cache

  採用上述兩種方法,排除了資料不一致性的問題。但一個高效能的系統是需要Cache的,禁止Cache的使用會大大降低系統的效能。所以,在嵌入式系統的設計中,還應從硬體方面考慮,從根本上防止資料不一致的產生。

3.2 硬體的解決方案

  由於現在的嵌入式處理器,主頻越來越高,地址、資料線越來越多,所以在硬體的設計和焊接過程中應特別注意高頻幹擾的問題。因為高頻幹擾可以引起訊號的不完整性,這些不完整的訊號會引起匯流排傳輸過程中出現一些壞位元組,所以高速PCB設計變得尤為重要。高速PCB設計中,對高速訊號網路的特徵與走線控制的設計技術,已成為高速數字裝置成功與否的關鍵。在設計中應注意下列問題:

  ① 在成本允許的條件下, PCB盡量採用多層板布線。

  ② 高頻電路布線的引線最好採用全直線,需要轉折時,可以用45°折線或圓弧轉折。在高頻電路中,滿足這一要求可以減少高頻訊號對外的發射和相互間的耦合。

  ③ 高頻電路器件引腳的引線層間的交替越少越好,過孔越少越好。據測,一個過孔可帶來約0.5 pF的分布電容,減少過孔數量能顯著提高速度。

  ④ 高頻電路布線要注意訊號線近距離平行走線所引入的“交叉幹擾”,若無法避免平行分布,可在平行訊號線的反面布置大面積“地”來減少幹擾。同一層內的平行走線幾乎無法避免,但是在相鄰的兩個層,走線的方向務必取為相互垂直。

  ⑤ 每個整合電路塊的附近應設定一個高頻退耦電容。

  ⑥ 類比電路和數字電路部分,應有各自獨立的地線。

  ⑦ 對特別重要的訊號線或局部單元實施地線包圍的措施,各類訊號走線不能形成環路,地線也不能形成電流環路。

  在注意了上面的設計規則之後,製作出的PCB基本上可以滿足高速訊號的要求。

  最後,就是在焊接時要注意焊點一定要圓滑。因為焊點的尖峰會產生很強的高頻幹擾。

  有了上述各條規則,就保證了在訊號傳輸過程中,匯流排上不會出現不必要的幹擾,防止了資料不一致的發生。

結語

  嵌入式處理器已經被廣泛應用。本文提到的對S3C44B0X中Cache資料不一致性的處理方法同樣適用於其他型號的高頻嵌入式處理器。掌握一些設計、調試的基本經驗,可以大大提高工作效率,減小系統開發過程中不必要的麻煩。

                    參考文獻

1馬鳴錦,趙秋霞,曾光裕.高效能個人電腦硬體結構及介面. 北京:國防工業出版社,2001
2Samsung Inc. S3C44B0X Users Manual
3馬忠梅,馬廣雲,徐英慧,等. ARM嵌入式處理器結構與應用基礎. 北京:北京航空航天大學出版社,2002
4謝淑如. Protel PCB 99 SE 電路板設計. 北京:清華大學出版社,2001

王豔:碩士,主要研究方向為ARM在控制領域內的應用及嵌入式作業系統VxWorks。
吳旭光:教授,主要研究方向為嵌入式作業系統、匯流排和集散控制、魯棒控制理論、系統建模和模擬。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.