《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 解決方案 > 基帶處理芯片共享高速存儲(chǔ)器模塊設(shè)計(jì)

基帶處理芯片共享高速存儲(chǔ)器模塊設(shè)計(jì)

2017-07-24
作者:張業(yè)強(qiáng),唐芳福,張志國(guó),韓俊,趙厲
來(lái)源:珠海歐比特控制工程股份有限公司

摘要:  高速緩存作為中央處理器 (CPU) 與主存之間的小規(guī)??焖?a class="innerlink" href="http://theprogrammingfactory.com/tags/存儲(chǔ)器" title="存儲(chǔ)器" target="_blank">存儲(chǔ)器,解決了兩者數(shù)據(jù)處理速度的平衡和匹配問(wèn)題,有助于提高系統(tǒng)整體性能。多處理器 (SMP) 支持共享和私有數(shù)據(jù)的緩存,Cache 一致性協(xié)議用于維護(hù)由于多個(gè)處理器共享數(shù)據(jù)引發(fā)的多處理器數(shù)據(jù)一致性問(wèn)題。論述了一個(gè)適用于64位多核處理器的共享緩存設(shè)計(jì),包括如何實(shí)現(xiàn)多處理器緩存一致性及其全定制后端實(shí)現(xiàn)。

關(guān)鍵詞: 共享高速存儲(chǔ)器;多核處理器;AMBA總線;

中圖分類(lèi)號(hào):TP332       文獻(xiàn)標(biāo)識(shí)碼:A 

文章編號(hào):

0. 引言

本文介紹了一種共享高速存儲(chǔ)器模塊的設(shè)計(jì)。該高速存儲(chǔ)器能夠?qū)崿F(xiàn)多核處理器間的數(shù)據(jù)交換,同時(shí)占用較小的電路面積。相比傳統(tǒng)的多核處理器數(shù)據(jù)交換方式,本設(shè)計(jì)可以更好地提升系統(tǒng)性能。是一種有市場(chǎng)競(jìng)爭(zhēng)力的電路設(shè)計(jì)結(jié)構(gòu);

1. 共享緩存結(jié)構(gòu)設(shè)計(jì)

1.1 總體考慮

在多核 CPU中共享高速緩存主要負(fù)責(zé)緩存多個(gè)處理器核的數(shù)據(jù),處理訪問(wèn)這些數(shù)據(jù)的缺失請(qǐng)求并向 DRAM 控制器發(fā)送請(qǐng)求以獲得 DRAM 返回的數(shù)據(jù)。共享高速緩存通過(guò)交叉開(kāi)關(guān)總線與各個(gè)處理器核互連,通過(guò)交叉開(kāi)關(guān)總線轉(zhuǎn)發(fā)通信數(shù)據(jù)包進(jìn)行數(shù)據(jù)通信。共享高速緩存分為四個(gè)緩存組,每個(gè)緩存組采用組相聯(lián)地址映射。每個(gè)處理核心都可以發(fā)送數(shù)據(jù)包到任意一個(gè)緩存組,同數(shù)據(jù)包也可以反方向發(fā)送從任意一個(gè)緩存組到任意一個(gè)處理核心。

共享緩存采用四路組相聯(lián)映射,將緩存分1024 組。緩存塊的物理地址分為3部分,包括標(biāo)簽塊、索引塊以及塊內(nèi)偏移。索引部分用于確定緩存塊所在的組。通過(guò)比較物理地址的標(biāo)簽塊和所選中組內(nèi)的四路標(biāo)簽,可以確定訪問(wèn)的命中或者缺失。在命中時(shí),比較的結(jié)果作為路選擇向量發(fā)往數(shù)據(jù)陣列。緩存通過(guò)路選擇向量和組選擇向量確定

1.2 緩存一致性

對(duì)稱式共享存儲(chǔ)器多處理器系統(tǒng)中多處理器2高速緩存子系統(tǒng)共享同一個(gè)物理存儲(chǔ)器,通過(guò)總線連接,對(duì)于所有的處理器訪問(wèn)存儲(chǔ)器的時(shí)間一致,即均勻存儲(chǔ)訪問(wèn) (UMA)。對(duì)稱式共享存儲(chǔ)器系統(tǒng)支持共享和私有數(shù)據(jù)的緩存。私有數(shù)據(jù)被單個(gè)處理器使用,而共享數(shù)據(jù)則被多個(gè)處理器使用,通過(guò)讀寫(xiě)共享數(shù)據(jù)完成處理器之間的通信。共享數(shù)據(jù)在多個(gè)緩存中形成副本,減少了訪問(wèn)時(shí)延、降低了對(duì)存儲(chǔ)器帶寬的要求并減少多個(gè)處理器讀取共享數(shù)據(jù)時(shí)的競(jìng)爭(zhēng)現(xiàn)象。然而,共享數(shù)據(jù)帶來(lái)了緩存一致性問(wèn)題,實(shí)現(xiàn)緩存一致性關(guān)鍵在于跟蹤所有共享數(shù)據(jù)塊的狀態(tài)。目前為了實(shí)現(xiàn)緩存一致性而廣泛采用的有目錄式以及監(jiān)聽(tīng)式這兩種協(xié)議。該設(shè)計(jì)采用目錄式緩存一致性協(xié)議 ,把物理存儲(chǔ)器的共享狀態(tài)放在目錄表中,根據(jù)目錄跟蹤哪一個(gè)以及緩存擁有二級(jí)緩存塊的副本。一級(jí)緩存是寫(xiě)直達(dá)的,只有無(wú)效信息被要求,共享緩存是寫(xiě)回的,數(shù)據(jù)總可以從共享緩存中重新得到。為減少目錄的開(kāi)銷(xiāo),將目錄放在緩存中而不是存儲(chǔ)器中。

當(dāng)一個(gè)塊還未被緩存有 2 種可能的目錄請(qǐng)求:

1) 讀缺失:共享緩存向發(fā)出請(qǐng)求的處理器送回所要求的數(shù)據(jù),發(fā)送請(qǐng)求的節(jié)點(diǎn)成為唯一的共享節(jié)點(diǎn)。塊的狀態(tài)設(shè)為共享。

2) 寫(xiě)缺失:向發(fā)出請(qǐng)求的處理器送回?cái)?shù)據(jù)并使它成為共享節(jié)點(diǎn)。數(shù)據(jù)塊設(shè)為獨(dú)占狀態(tài),指明這是唯一有效的緩存副本。共享者集合中指明所有者。當(dāng)數(shù)據(jù)塊處于共享狀態(tài)時(shí),共享緩存中的值是最新的,有 2 種可能的目錄請(qǐng)求:

1) 讀缺失:共享緩存向發(fā)送請(qǐng)求的處理器送回所要求的數(shù)據(jù),并將發(fā)送請(qǐng)求的處理器放到共享集中。

2) 寫(xiě)缺失:向發(fā)送請(qǐng)求的處理器送回?cái)?shù)據(jù),無(wú)效共享集合中的處理器緩存塊,保存發(fā)送請(qǐng)求的處理器標(biāo)識(shí),將數(shù)據(jù)塊設(shè)置成獨(dú)占狀態(tài)。

當(dāng)數(shù)據(jù)塊處于獨(dú)占狀態(tài)時(shí),塊的當(dāng)前值保存在共享者集所指明的處理器的緩存中,有 3 種可能的目錄請(qǐng)求:

1) 讀缺失:向所有者處理器發(fā)送數(shù)據(jù)消息,將緩存塊狀態(tài)設(shè)為共享。由所有者向目錄發(fā)送數(shù)據(jù),將數(shù)據(jù)寫(xiě)入共享緩存并發(fā)送回發(fā)出請(qǐng)求的處理器。再將發(fā)出請(qǐng)求的處理器添加到共享者集合中,這時(shí)集合中仍然會(huì)有其他所有者處理器。

2) 數(shù)據(jù)寫(xiě)回:執(zhí)行寫(xiě)回操作,更新存儲(chǔ)器副本 ,共享者集合為空。

3) 寫(xiě)缺失:數(shù)據(jù)塊有了新的所有者。向舊的所有者發(fā)送消息,使緩存將該數(shù)據(jù)塊設(shè)置為無(wú)效,并把值發(fā)送到目錄中,再通過(guò)目錄把數(shù)值發(fā)送到發(fā)出請(qǐng)求的處理器上。發(fā)出請(qǐng)求的處理器成為新的所有者。共享者集合只保留新所有者的標(biāo)識(shí),而塊仍然處于獨(dú)占狀態(tài)。

2. 高速共享緩存模塊

用戶RAM大小為2MB,掛接在雙核之間的AHB總線上,兩個(gè)內(nèi)核訪問(wèn)區(qū)域可以任意配置。其內(nèi)部是一塊 SRAM 和AHB總線從接口電路,如圖2-1所示。讀訪問(wèn)有一個(gè)周期的延遲,寫(xiě)訪問(wèn)無(wú)延遲。讀寫(xiě)訪問(wèn)時(shí)序見(jiàn)圖2-2、圖2-3。讀寫(xiě)都支持字節(jié)(byte)訪問(wèn)、半字(half-word)訪問(wèn)或字(word)訪問(wèn)。

用戶RAM所在的地址空間范圍為0xA0000000 ~ 0xA01FFFFF。

圖片1.png

圖 21 用戶RAM結(jié)構(gòu)示意圖

假設(shè)CPU0寫(xiě)數(shù)據(jù)到用戶RAM,接著CPU1從用戶RAM讀數(shù)據(jù)。這種情況下,CPU0首先寫(xiě)數(shù)據(jù),然后將標(biāo)志變量置1,表示用戶RAM內(nèi)的數(shù)據(jù)已更新。標(biāo)志變量地址位于用戶RAM地址范圍內(nèi)。接著CPU1讀標(biāo)志變量,若變量為1,則從用戶RAM內(nèi)對(duì)應(yīng)地址讀取CPU0寫(xiě)入的數(shù)據(jù),并將標(biāo)志變量置0;若標(biāo)志變量為0,則表示用戶RAM內(nèi)數(shù)據(jù)已被CPU1讀取過(guò)。

     使用以上方法可實(shí)現(xiàn)核間數(shù)據(jù)交互。由于同一時(shí)刻AHB總線上只能有一個(gè)設(shè)備利用總線進(jìn)行讀寫(xiě),所以可以保證讀寫(xiě)操作的原子性,即標(biāo)志變量不可能被CPU0和CPU1同時(shí)訪問(wèn)。從而保證了標(biāo)志變量的有效性。

圖片2.png

圖 22 用戶RAM讀時(shí)序

圖片3.png

圖 23 用戶RAM寫(xiě)時(shí)序

參 考 文 獻(xiàn)
[1 ]John L . Hennessy , David A. Patterson , Computer Architecture : A Quantitative Approach , Fourth Edition [ M ]. Ap professional ,1990
[2 ] Sun Microsystems Inc. OpenSPARC T1 Microarchitecture Specification[ R]. 2006
[3 ]David A. Patterson , John L . Hennessy , Computer organization and design[ M ]. Morgan Kaufmann ,2004
[4 ] Michael D. Ciletti , Advanced digital design with the Verilog HDL [ M ]. Pearson ,2005
[5 ]周立. 計(jì)算機(jī)系統(tǒng)結(jié)構(gòu) [ M ]. 北京 :清華大學(xué)出版 社 ,2006


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。