一種無(wú)cache一致性協(xié)議的分布式共享片上存儲(chǔ)架構(gòu)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于處理器技術(shù)領(lǐng)域,具體涉及一種無(wú)cache —致性協(xié)議的分布式共享片上存儲(chǔ)結(jié)構(gòu)。
【背景技術(shù)】
[0002]近年來(lái),多核處理器由于其內(nèi)在的并行性和優(yōu)良的能量效率而受到業(yè)界廣泛青睞。多核處理器一般采用共享存儲(chǔ)架構(gòu)設(shè)計(jì),低延遲、高帶寬、大容量的存儲(chǔ)架構(gòu)是設(shè)計(jì)的關(guān)鍵目標(biāo)。
[0003]為了兼具主存的大容量和片上存儲(chǔ)器的高速度優(yōu)點(diǎn),普遍引入存儲(chǔ)器層次結(jié)構(gòu),利用訪存數(shù)據(jù)的局部性原理,將主存數(shù)據(jù)映射到cache (超高速緩存)中,處理器直接對(duì)其高速讀寫。
[0004]現(xiàn)有多核處理器的存儲(chǔ)層次結(jié)構(gòu)中,每個(gè)核通過(guò)自身的cache訪問(wèn)主存數(shù)據(jù),需要保證每個(gè)cache的數(shù)據(jù)都是主存的最新副本,帶來(lái)cache —致性問(wèn)題,需要引入復(fù)雜的硬件協(xié)議來(lái)維護(hù)cache —致。
[0005]主流解決方式有如下幾種。
[0006]—是基于總線互連的多核處理器:監(jiān)聽協(xié)議(snoopy protocol)。對(duì)某個(gè)cache的修改通過(guò)總線廣播到其它c(diǎn)ache中,作出相應(yīng)的動(dòng)作。有寫-無(wú)效和寫-更新兩種基本方法。其優(yōu)點(diǎn)是總線作為廣播媒介通信效率高。但缺點(diǎn)也很明顯:可拓展性差,并且導(dǎo)致額外的硬件和功耗開銷。
[0007]另一種是基于片上網(wǎng)絡(luò)互連的多核處理器:目錄協(xié)議(directory protocol)。其采用分布式共享存儲(chǔ)(DSM)。目錄中,記錄cache每個(gè)數(shù)據(jù)塊的訪問(wèn)狀態(tài)、在其它c(diǎn)ache中的共享狀態(tài)以及是否修改過(guò)等信息。優(yōu)點(diǎn)是可拓展性好。缺點(diǎn)是判斷復(fù)雜、通信開銷大。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的在于提出一種可拓展性好、通信效率高的無(wú)cache —致性協(xié)議的分布式共享片上存儲(chǔ)架構(gòu)。
[0009]本發(fā)明提出的無(wú)cache —致性協(xié)議的分布式共享片上存儲(chǔ)架構(gòu),基于簇狀結(jié)構(gòu),cache僅映射本地主存塊,同時(shí)可被其它核共享訪存,從而避免cache —致性協(xié)議;本地核LI存儲(chǔ)器一分為二:非緩存的存儲(chǔ)器+ cache,可以降低cache缺失率。此外,還支持直接存儲(chǔ)訪問(wèn)(DMA)操作:在流應(yīng)用中支持DMA直接對(duì)主存進(jìn)行簇間大塊數(shù)據(jù)搬移,適用于規(guī)模的拓展性。具體內(nèi)容進(jìn)一步介紹如下:
一、基于cache的本地映射,取消cache —致性協(xié)議:
對(duì)于包含N個(gè)處理器的簇,N個(gè)主存塊#0,#1,#2,…#N分別分布在N個(gè)處理器#0,#1,#2,...#N的私有區(qū)域(簇內(nèi)其他處理器無(wú)法直接通過(guò)訪存得到),由此形成一個(gè)分布式存儲(chǔ)架構(gòu)。參見圖1所示,圖1中N為4 ;
簇內(nèi)每個(gè)處理器還配有一個(gè)本地共享cache。在圖中本地共享cache # x只映射主存塊# X(即本地),且在簇內(nèi)可被所有簇內(nèi)其他處理器共享訪問(wèn)。參見圖2所示;
當(dāng)處理器通過(guò)訪問(wèn)本地共享cache來(lái)訪問(wèn)本地主存塊,若地址落入其它主存塊,則通過(guò)硬連線的方式通過(guò)訪問(wèn)cache# x來(lái)訪問(wèn)對(duì)應(yīng)的主存塊# X。有可能發(fā)生同一時(shí)間,不同核對(duì)同一個(gè)cache的競(jìng)爭(zhēng)讀寫的情況,這時(shí),采用以本核為起點(diǎn),順時(shí)針?lè)较蚪档蛢?yōu)先級(jí)的方法,來(lái)解決讀寫克爭(zhēng);
當(dāng)處理器訪問(wèn)非本地主存塊:對(duì)于cache # x,接受來(lái)自本地核及其他核的地址請(qǐng)求,經(jīng)過(guò)仲裁后將地址發(fā)給cache #存儲(chǔ)體,cache返回?cái)?shù)據(jù)后根據(jù)先前的仲裁結(jié)果返回給對(duì)應(yīng)處理器。圖2中,以#1核為例,接受來(lái)自本地核及其他核的地址請(qǐng)求,經(jīng)過(guò)仲裁后將地址發(fā)給cache #1存儲(chǔ)體,cache返回?cái)?shù)據(jù)后根據(jù)先前的仲裁結(jié)果返回給對(duì)應(yīng)處理器;
二、本地核LI存儲(chǔ)器一分為二,降低cache缺失率:
LI存儲(chǔ)器空間一分為二:一部分為非緩存的數(shù)據(jù)塊(簡(jiǎn)稱非緩存塊,即程序一次寫入,直到程序結(jié)束前,都不會(huì)被擦除),另一部分為上述所提的本地共享cache ο兩者都是簇內(nèi)其他處理器通過(guò)訪存便可讀取的。參見圖3所示;
這其中,非緩存塊用來(lái)保存軟件程序編譯產(chǎn)生的靜態(tài)初始化數(shù)據(jù),和程序運(yùn)行過(guò)程中??臻g的動(dòng)態(tài)數(shù)據(jù),以及多核之間需要快速共享的數(shù)據(jù),有利于降低整體訪存的cache缺失率;
編程上,本地的非緩存塊和主存塊地址編碼連續(xù),簡(jiǎn)化編程模型;
三、支持簇間直接存儲(chǔ)訪問(wèn)(DMA)操作:
為了提高簇間主存之間大塊數(shù)據(jù)傳輸?shù)乃俾?,提出了簇間直接存儲(chǔ)訪問(wèn)(DMA)操作。DMA控制器和cache控制器對(duì)主存塊競(jìng)爭(zhēng)訪問(wèn),DMA用于簇間主存之間大塊數(shù)據(jù)傳輸。其優(yōu)點(diǎn)是緩解大塊數(shù)據(jù)傳輸對(duì)cache和處理器的壓力。具體來(lái)說(shuō)就是,當(dāng)處理器譯碼出來(lái)是DMA操作,即將主存讀取選擇通道通過(guò)選擇器切換到片上網(wǎng)絡(luò)端口,同時(shí)發(fā)送配置包通知目標(biāo)核停止并等待接收數(shù)據(jù),從而跨簇調(diào)用存儲(chǔ)。
【附圖說(shuō)明】
[0010]圖1為帶二級(jí)存儲(chǔ)的處理器架構(gòu)圖。
[0011]圖2為非本地主存塊讀取仲裁塊。
[0012]圖3為本地核LI存儲(chǔ)器結(jié)構(gòu)圖。
[0013]圖4為簇間直接存儲(chǔ)訪問(wèn)(DMA)操作圖。
【具體實(shí)施方式】
[0014]首先,程序會(huì)通過(guò)編譯器編譯成機(jī)器碼。這其中生成的靜態(tài)初始化數(shù)據(jù)等共享數(shù)據(jù)會(huì)被放置在如圖3所示的LI存儲(chǔ)器中的非緩存塊。其他的放置在相應(yīng)的主存塊中,兩者的地址編碼是連續(xù),方便編程模型。
[0015]如圖1所示,以一個(gè)包含4個(gè)處理器的簇為例,4個(gè)主存塊#0,#1,#2,#3分別分布在4個(gè)處理器#0,#1, #2,#3的私有區(qū)域(簇內(nèi)其他處理器無(wú)法直接通過(guò)訪存得到),由此形成一個(gè)分布式存儲(chǔ)架構(gòu)。
[0016]如圖2所示,簇內(nèi)每個(gè)處理器還配有一個(gè)本地共享cache。在圖中本地共享cache# X只映射主存塊# X (即本地),且在簇內(nèi)可被所有簇內(nèi)其他處理器共享訪問(wèn)。
[0017]當(dāng)處理器通過(guò)訪問(wèn)本地共享cache來(lái)訪問(wèn)本地主存塊,若地址落入其它主存塊,則通過(guò)硬連線的方式通過(guò)訪問(wèn)cache# x來(lái)訪問(wèn)對(duì)應(yīng)的主存塊# X。有