專利名稱:基于集中式目錄的嵌入式多核緩存一致性方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核處理器體系領(lǐng)域,尤其涉及一種基于集中式目錄的嵌入式多核緩 存一致性方法。
背景技術(shù):
未來的微處理器芯片結(jié)構(gòu)越來越強調(diào)結(jié)構(gòu)的層次化、功能部件的模塊化和分布 化,讓每個功能部件都相對地簡單,部件內(nèi)部盡可能保持連線的局部性。在此情況下,更高 并行度的片上多核結(jié)構(gòu)應(yīng)運而生。片上多核處理器CMP (Chip Multi-Processor)是在20 世紀90年代出現(xiàn)的一種體系結(jié)構(gòu)設(shè)計,最初是由美國斯坦福大學(xué)的研究人員提出,其思想 是在單個芯片上利用豐富的晶體管資源集成多個處理器核,通過多核并行執(zhí)行的方式開發(fā) 指令級、線程級等各個層次并行度來提高性能。CMP結(jié)構(gòu)是利用海量集成度構(gòu)造新型高性能處理器的重要探索之一,以其良好的 可擴展性、可重用性、低功耗和容忍線延遲等優(yōu)點被業(yè)界廣泛看好和接受,已經(jīng)成為目前高 性能微處理器體系結(jié)構(gòu)的發(fā)展趨勢。進入21世紀后,主要微處理器制造廠商陸續(xù)開發(fā)基于 CMP 的多核 CPU,,如 IBM 的 Power6[12]、Sun 的 OpenSparcTl [13]、Intel 的 Montecito [14] 等。針對特定領(lǐng)域的微處理器,如IBM與索尼、東芝合作設(shè)計,用于圖形工作站和PS3游戲 機的Cell處理器[15],以及主要面向嵌入式領(lǐng)域的MIPS、ARM微處理器也推出了多核處理 器架構(gòu)。存儲層次向來是制約處理器性能的關(guān)鍵因素,運算性能的發(fā)揮在極大程度依賴于 訪存子系統(tǒng)對運算數(shù)據(jù)的高效供應(yīng)。在多核CPU環(huán)境中,多個處理器同時運行的多線程競 爭單芯片有限的緩存、帶寬等存儲資源,造成訪存沖突加劇,傳統(tǒng)的訪存瓶頸將變得更加突 出,存儲系統(tǒng)是決定多核處理器性能的關(guān)鍵因素之一。在多核CPU中,每個處理器都有自己私有的緩存,并在二級緩存、三級緩存或者主 存級別進行共享。然而,由于同一數(shù)據(jù)塊在多個處理器私有緩存中的副本不一致,在改善訪 存性能的同時會產(chǎn)生緩存一致性問題。對于高速緩存一致性,如果一個存儲器系統(tǒng)滿足以 下三個條件,則認為該存儲器系統(tǒng)是一致的1)對于處理器P對X進行寫操作之后的讀請求,如果在P的寫操作之后沒有其它 處理器對x進行寫操作,那么返回的是處理器P寫的值。2)在處理器Q對x進行寫操作后,處理器P對x進行讀請求,如果這兩個操作之間 有足夠的間隔,且兩者之間沒有其它寫操作,那么返回給P的是Q所寫的值。3)對同一地址的寫操作是串行執(zhí)行的,也就是說,任何兩個處理器對同一個地址 的兩個寫操作在所有處理器看來都有相同的順序。從硬件角度來看,多核CPU引入高速緩存一致性協(xié)議維護存儲器系統(tǒng)的一致性。 在支持高速緩存一致性的多核CPU中,共享數(shù)據(jù)可以遷入本地高速緩存進行訪問,從而有 效減少了訪問遠程共享數(shù)據(jù)的延遲,進而減少對共享緩存的帶寬要求。同時由于本地緩存 為讀取的共享數(shù)據(jù)作了備份,所以一致性的高速緩存訪問這些副本時可以減少訪問延遲和讀取共享數(shù)據(jù)時的競爭現(xiàn)象。根據(jù)寫操作的處理方式不同,緩存一致性協(xié)議可分為寫無效(Writelnvalidate) 與寫更新(Write Update)兩類。實現(xiàn)緩存一致性協(xié)議的關(guān)鍵在于跟蹤所有共享數(shù)據(jù)塊的 狀態(tài)。目前廣泛使用的有兩類協(xié)議,它們采用不同的技術(shù)跟蹤共享數(shù)據(jù)。一是目錄式,把物 理存儲塊的有效狀態(tài)存放在一個地點,稱之為目錄。二是監(jiān)聽式,每個含有物理存儲器中數(shù) 據(jù)塊副本的高速緩存還要保留該數(shù)據(jù)塊有效狀態(tài)的副本,但是不集中地保存狀態(tài)。高速緩 存通常放在共享存儲總線上,所有的高速緩存控制器對總線進行監(jiān)聽,來確定它們是否含 有總線上請求的數(shù)據(jù)塊的副本。
發(fā)明內(nèi)容
本發(fā)明的目的是在于提出多核處理器環(huán)境下基于集中式目錄的緩存一致性方法。本發(fā)明解決其技術(shù)問題采用的技術(shù)方案如下各處理器對存儲層次的訪問過程是首先查找處理器核內(nèi)部的數(shù)據(jù)緩存和指令緩 存,查看其中是否存在所要訪問的數(shù)據(jù),數(shù)據(jù)緩存根據(jù)相應(yīng)數(shù)據(jù)緩存塊的狀態(tài)向目錄控制 器發(fā)出請求,目錄控制器根據(jù)目錄項的內(nèi)容控制數(shù)據(jù)緩存和共享緩存的數(shù)據(jù)通信。如果發(fā) 現(xiàn)要訪問的數(shù)據(jù)仍然不在共享緩存中,啟動共享緩存對主存的訪問。不管在哪一級存儲層 次中找到了要尋址的單元,對目標訪問以后,都要設(shè)置和修改維護數(shù)據(jù)一致性的標識位以 便在后面的處理過程中根據(jù)恰當?shù)臉俗R進行修改或讀取數(shù)據(jù)。1)緩存塊的狀態(tài)劃分在目錄一致性協(xié)議中,每個數(shù)據(jù)緩存控制器接收兩方面輸入處理器發(fā)出的讀寫 請求和目錄控制器發(fā)來的消息。作為這些輸入的響應(yīng),高速緩存控制器可能根據(jù)相應(yīng)高速 緩存塊的當前狀態(tài)及狀態(tài)轉(zhuǎn)換圖來更新該塊的狀態(tài),并且也可能要執(zhí)行一些動作。比如,作 為對處理器發(fā)出的讀請求的響應(yīng),高速緩存控制器可能要產(chǎn)生一個發(fā)給目錄控制器的消息 來獲得數(shù)據(jù),并返回給處理器。本發(fā)明中數(shù)據(jù)緩存塊的狀態(tài)分為三種,即無效狀態(tài)、有效狀態(tài)和修正狀態(tài)。若某個 數(shù)據(jù)緩存塊處于無效狀態(tài),則本地處理器對該塊的讀請求或?qū)懻埱蠖疾幻?。若某個數(shù)據(jù) 緩存塊處于有效狀態(tài),表明可能還有其他的處理器持有該塊的有效副本。若某個緩存塊處 于修正狀態(tài),表明該塊是對應(yīng)共享緩存塊的唯一有效副本,本地處理器對該塊的讀請求或 寫請求均在數(shù)據(jù)緩存命中。2)目錄項的狀態(tài)劃分本發(fā)明采用全映射目錄,每個共享緩存塊有三種目錄狀態(tài),即無效狀態(tài)、有效狀態(tài) 和修正狀態(tài)。若某個目錄處于無效狀態(tài),表明共享緩存沒有該緩存塊的有效副本。若某個 目錄處于有效狀態(tài),表明一個或多個處理器的數(shù)據(jù)緩存具有該緩存塊的副本,并且共享緩 存的數(shù)據(jù)也是最新的(與所有數(shù)據(jù)緩存中的副本一致),只要處理器的數(shù)據(jù)緩存中含有該 塊的副本,共享者集合中的對應(yīng)位就置1。若某個目錄處于專有狀態(tài),表明只有一個處理器 的數(shù)據(jù)緩存擁有該緩存塊的副本并且對該塊執(zhí)行過寫操作,因此該副本與共享緩存中的緩 存塊是不一致的,由共享者集合來指示擁有該塊副本的處理器。本發(fā)明與背景技術(shù)相比,具有的有益效果是本方法適用于嵌入式多核體系處理器,把寫回法和寫分配兩種策略的優(yōu)點相結(jié)
5合,實現(xiàn)了基于集中式目錄的緩存一致性。相比于監(jiān)聽協(xié)議,目錄協(xié)議采用定向消息發(fā)送降 低了廣播機制給帶寬的壓力,避免了對無關(guān)處理器正常運行的干擾,具有較好的可擴展性。
圖1是多核CPU的存儲層次RTL模型圖;它包含四個處理器核,通過總線與共享緩 存互聯(lián),各個處理器核含私有的數(shù)據(jù)緩存和指令緩存,并且通過目錄控制器與共享緩存進 行通訊。圖2是數(shù)據(jù)緩存塊的狀態(tài)轉(zhuǎn)換圖;圖3是目錄狀態(tài)轉(zhuǎn)換圖;狀態(tài)轉(zhuǎn)換圖中的字母意義是CBS代表目錄控制器通知數(shù)據(jù)緩存把請求數(shù)據(jù)傳到共享緩存,并把請求數(shù)據(jù)塊的 狀態(tài)改為有效。RDD代表目錄控制器通知數(shù)據(jù)緩存接收共享緩存的數(shù)據(jù),并把緩存塊狀態(tài)改為有 效RDM代表目錄控制器通知數(shù)據(jù)緩存接收共享緩存的數(shù)據(jù),并把緩存塊狀態(tài)改為修 正CBI代表目錄控制器通知數(shù)據(jù)緩存把數(shù)據(jù)寫到共享緩存并置該塊為無效INV代表目錄控制器通知數(shù)據(jù)緩存把數(shù)據(jù)所在塊置無效,不寫回STM代表目錄控制器通知數(shù)據(jù)緩存把數(shù)據(jù)所在塊狀態(tài)由有效改為修正
ADS代表目錄控制器通知數(shù)據(jù)緩存發(fā)出的回應(yīng)消息RDMS代表數(shù)據(jù)緩存向目錄控制器發(fā)讀缺失WTHT代表數(shù)據(jù)緩存向目錄控制器發(fā)寫命中消息WTMS代表數(shù)據(jù)緩存向目錄控制器發(fā)寫缺失信號,AKD代表數(shù)據(jù)緩存向目錄控制器發(fā)出的響應(yīng)RDS代表目錄控制器通知共享緩存接收數(shù)據(jù)緩存的數(shù)據(jù)WTS代表目錄控制器通知共享緩存向數(shù)據(jù)緩存發(fā)送數(shù)據(jù)WTM代表目錄控制器通知共享緩存向主存寫回數(shù)據(jù)RDM代表目錄控制器通知共享緩存讀入主存的數(shù)據(jù)AKS代表共享緩存向目錄控制器發(fā)回響應(yīng)RDP代表處理器向數(shù)據(jù)緩存發(fā)出讀數(shù)請求RDPR代表數(shù)據(jù)緩存把數(shù)據(jù)發(fā)回處理器并發(fā)回應(yīng)WTP代表處理器向數(shù)據(jù)緩存發(fā)出寫操作請求WTPR代表數(shù)據(jù)緩存向處理器發(fā)寫操作請求回應(yīng)RDSM代表共享緩存向主存發(fā)讀操作請求WTSM代表共享緩存向主存發(fā)寫操作請求AKM代表主存向共享緩存發(fā)回響應(yīng)圖4是總體流程圖。
具體實施方式
本發(fā)明的具體實施方式
為1)當處理器向數(shù)據(jù)緩存發(fā)出讀數(shù)請求RDP,若命中則數(shù)據(jù)緩存把數(shù)據(jù)發(fā)回處理器 并發(fā)回應(yīng)RDH 和修改LRU位,否則向目錄控制器發(fā)送讀缺失請求RDMS,目錄控制器收到讀 缺失請求后查找數(shù)據(jù)塊對應(yīng)的目錄,根據(jù)不同狀態(tài)采取以下操作I.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)為有效,目錄控制器向共享緩存發(fā)出 WTS請求,收到響應(yīng)后向數(shù)據(jù)緩存發(fā)RDD請求,并把請求讀的處理器加入共享者集合。II.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)為修正,則目錄控制器向共享者集 合中的處理器發(fā)出CBS請求,目錄項轉(zhuǎn)入忙狀態(tài),收到共享者集合中的處理器響應(yīng)后,向共 享緩存發(fā)出RDS請求,收到響應(yīng)后把請求讀的處理器加入共享者集合,同時設(shè)置訪問塊的 目錄狀態(tài)為有效。III.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是無效,目錄控制器將檢查訪問塊 同一組中的待替換塊的目錄狀態(tài)。若為修正狀態(tài),目錄控制器向待替換塊所在的數(shù)據(jù)緩存 發(fā)CBI請求,收到響應(yīng)后向共享緩存發(fā)RDS請求并置該塊修改位為1,同時把該塊的目錄狀 態(tài)改為無效。若為有效狀態(tài),目錄控制器向待替換塊所在的處理器發(fā)INV命令,同時把該塊 的目錄狀態(tài)改為無效。若為無效狀態(tài),目錄控制器檢查修改位的狀態(tài),如為1則向共享緩存 發(fā)WTM命令,收到回應(yīng)后把修改位復(fù)位,向共享緩存發(fā)RDM命令通知其從主存讀入訪問塊, 把訪問塊的標識寫入替換塊,完成替換并把訪問塊的目錄狀態(tài)改為有效。2)當處理器向數(shù)據(jù)緩存發(fā)出寫操作請求WTP時,數(shù)據(jù)緩存檢查數(shù)據(jù)所在緩存塊的 狀態(tài)。若為修正則向處理器發(fā)WIPR回應(yīng),接收處理器寫過來的數(shù)據(jù)。若為有效,數(shù)據(jù)緩存向 目錄控制器發(fā)WTHT消息,目錄控制器檢查該塊的共享者集合,若只有訪問者共享此塊則向 其發(fā)WTM命令并把該塊的目錄狀態(tài)改為修正,若有多個處理器共享該緩存塊則向非訪問者 發(fā)INV命令并把其從共享者集合中清除。若為無效,數(shù)據(jù)緩存向目錄控制器發(fā)WTMS信號, 目錄控制器查找與數(shù)據(jù)塊的目錄狀態(tài),作如下不同操作I.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是有效,目錄控制器向共享者集合中 的非訪問者發(fā)INV信號并把其從共享者集合中清除,同時向共享緩存發(fā)WTS命令。當共享 者集合為全0時,目錄控制器向共享緩存發(fā)WTS命令,收到回應(yīng)后向數(shù)據(jù)緩存發(fā)RDM命令, 同時把訪問者加入共享者集合中并把該塊的目錄狀態(tài)改為修正。II.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是修正,如果是當前訪問者在訪問 該塊,則目錄控制器不動作,否則目錄控制器向該緩存塊的所有者發(fā)CBI命令,向共享緩存 發(fā)RDS命令,收到回應(yīng)后把共享者集合清0,置該塊修改位為1并把該塊的目錄狀態(tài)改為有 效。III.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是無效,目錄控制器將檢查訪問塊 同一組中的待替換塊的目錄狀態(tài)。若為修正狀態(tài),目錄控制器向待替換塊所在的數(shù)據(jù)緩存 發(fā)CBI請求,收到響應(yīng)后向共享緩存發(fā)RDS請求并置該塊修改位為1,同時把該塊的目錄狀 態(tài)改為無效。若為有效狀態(tài),目錄控制器向待替換塊所在的處理器發(fā)INV命令,同時把該塊 的目錄狀態(tài)改為無效。若為無效狀態(tài),目錄控制器檢查修改位的狀態(tài),如為1則向共享緩存 發(fā)WTM命令,收到回應(yīng)后把修改位復(fù)位,向共享緩存發(fā)RDM命令通知其 主存讀入訪問塊, 把訪問塊的標識寫入替換塊,完成替換并把訪問塊的目錄狀態(tài)改為有效。
權(quán)利要求
一種基于集中式目錄的嵌入式多核緩存一致性方法,其特征在于1)緩存塊的狀態(tài)劃分在目錄一致性協(xié)議中,每個數(shù)據(jù)緩存控制器接收兩方面輸入處理器發(fā)出的讀寫請求和目錄控制器發(fā)來的消息。作為這些輸入的響應(yīng),高速緩存控制器可能根據(jù)相應(yīng)高速緩存塊的當前狀態(tài)及狀態(tài)轉(zhuǎn)換圖來更新該塊的狀態(tài),并且也可能要執(zhí)行一些動作。比如,作為對處理器發(fā)出的讀請求的響應(yīng),高速緩存控制器可能要產(chǎn)生一個發(fā)給目錄控制器的消息來獲得數(shù)據(jù),并返回給處理器。本發(fā)明中數(shù)據(jù)緩存塊的狀態(tài)分為三種,即無效狀態(tài)、有效狀態(tài)和修正狀態(tài)。若某個數(shù)據(jù)緩存塊處于無效狀態(tài),則本地處理器對該塊的讀請求或?qū)懻埱蠖疾幻小H裟硞€數(shù)據(jù)緩存塊處于有效狀態(tài),表明可能還有其他的處理器持有該塊的有效副本。若某個緩存塊處于修正狀態(tài),表明該塊是對應(yīng)共享緩存塊的唯一有效副本,本地處理器對該塊的讀請求或?qū)懻埱缶跀?shù)據(jù)緩存命中。2)目錄項的狀態(tài)劃分本發(fā)明采用全映射目錄,每個共享緩存塊有三種目錄狀態(tài),即無效狀態(tài)、有效狀態(tài)和修正狀態(tài)。若某個目錄處于無效狀態(tài),表明共享緩存沒有該緩存塊的有效副本。若某個目錄處于有效狀態(tài),表明一個或多個處理器的數(shù)據(jù)緩存具有該緩存塊的副本,并且共享緩存的數(shù)據(jù)也是最新的(與所有數(shù)據(jù)緩存中的副本一致),只要處理器的數(shù)據(jù)緩存中含有該塊的副本,共享者集合中的對應(yīng)位就置1。若某個目錄處于專有狀態(tài),表明只有一個處理器的數(shù)據(jù)緩存擁有該緩存塊的副本并且對該塊執(zhí)行過寫操作,因此該副本與共享緩存中的緩存塊是不一致的,由共享者集合來指示擁有該塊副本的處理器。處理器核訪問數(shù)據(jù)緩存的緩存塊引起緩存塊和目錄項在三個狀態(tài)間的變化,觸發(fā)狀態(tài)變換的事件分為讀操作和寫操作1)當處理器向數(shù)據(jù)緩存發(fā)出讀數(shù)請求RDP,若命中則數(shù)據(jù)緩存把數(shù)據(jù)發(fā)回處理器并發(fā)回應(yīng)RDPR和修改LRU位,否則向目錄控制器發(fā)送讀缺失請求RDMS,目錄控制器收到讀缺失請求后查找數(shù)據(jù)塊對應(yīng)的目錄,根據(jù)不同狀態(tài)采取以下操作I.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)為有效,目錄控制器向共享緩存發(fā)出WTS請求,收到響應(yīng)后向數(shù)據(jù)緩存發(fā)RDD請求,并把請求讀的處理器加入共享者集合。II.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)為修正,則目錄控制器向共享者集合中的處理器發(fā)出CBS請求,目錄項轉(zhuǎn)入忙狀態(tài),收到共享者集合中的處理器響應(yīng)后,向共享緩存發(fā)出RDS請求,收到響應(yīng)后把請求讀的處理器加入共享者集合,同時設(shè)置訪問塊的目錄狀態(tài)為有效。III.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是無效,目錄控制器將檢查訪問塊同一組中的待替換塊的目錄狀態(tài)。2)當處理器向數(shù)據(jù)緩存發(fā)出寫操作請求WTP時,數(shù)據(jù)緩存檢查數(shù)據(jù)所在緩存塊的狀態(tài)。若為修正則向處理器發(fā)WTPR回應(yīng),接收處理器寫過來的數(shù)據(jù)。若為有效,數(shù)據(jù)緩存向目錄控制器發(fā)WTHT消息,目錄控制器檢查該塊的共享者集合,若只有訪問者共享此塊則向其發(fā)WTM命令并把該塊的目錄狀態(tài)改為修正,若有多個處理器共享該緩存塊則向非訪問者發(fā)INV命令并把其從共享者集合中清除。若為無效,數(shù)據(jù)緩存向目錄控制器發(fā)WTMS信號,目錄控制器查找與數(shù)據(jù)塊的目錄狀態(tài),作如下不同操作I.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是有效,目錄控制器向共享者集合中的非訪問者發(fā)INV信號并把其從共享者集合中清除,同時向共享緩存發(fā)WTS命令。當共享者集合為全0時,目錄控制器向共享緩存發(fā)WTS命令,收到回應(yīng)后向數(shù)據(jù)緩存發(fā)RDM命令,同時把訪問者加入共享者集合中并把該塊的目錄狀態(tài)改為修正。II.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是修正,如果是當前訪問者在訪問該塊,則目錄控制器不動作,否則目錄控制器向該緩存塊的所有者發(fā)CBI命令,向共享緩存發(fā)RDS命令,收到回應(yīng)后把共享者集合清0,置該塊修改位為1并把該塊的目錄狀態(tài)改為有效。III.如果目錄控制器中訪問塊對應(yīng)的目錄狀態(tài)是無效,目錄控制器將檢查訪問塊同一組中的待替換塊的目錄狀態(tài)。若為修正狀態(tài),目錄控制器向待替換塊所在的數(shù)據(jù)緩存發(fā)CBI請求,收到響應(yīng)后向共享緩存發(fā)RDS請求并置該塊修改位為1,同時把該塊的目錄狀態(tài)改為無效。若為有效狀態(tài),目錄控制器向待替換塊所在的處理器發(fā)INV命令,同時把該塊的目錄狀態(tài)改為無效。若為無效狀態(tài),目錄控制器檢查修改位的狀態(tài),如為1則向共享緩存發(fā)WTM命令,收到回應(yīng)后把修改位復(fù)位,向共享緩存發(fā)RDM命令通知其從主存讀入訪問塊,把訪問塊的標識寫入替換塊,完成替換并把訪問塊的目錄狀態(tài)改為有效。
全文摘要
本發(fā)明公開了一種基于集中式目錄的嵌入式多核緩存一致性方法。本發(fā)明根據(jù)硬件實現(xiàn)的細節(jié)內(nèi)容優(yōu)化了部分狀態(tài)轉(zhuǎn)換,用寫回法和寫分配兩種策略實現(xiàn)了基于集中式目錄的緩存一致性,其主要功能是實現(xiàn)多個處理器核在二級緩存進行共享并保證同一數(shù)據(jù)塊在多個處理器核私有緩存中的副本一致。本發(fā)明采用定向消息發(fā)送降低了廣播機制給帶寬的壓力,避免了對無關(guān)處理器正常運行的干擾,具有較好的可擴展性,適用于嵌入式多核體系處理器。
文檔編號G06F12/08GK101859281SQ20091004919
公開日2010年10月13日 申請日期2009年4月13日 優(yōu)先權(quán)日2009年4月13日
發(fā)明者廖鑫 申請人:廖鑫