專利名稱:一種數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法
技術(shù)領(lǐng)域:
本發(fā)明面向多用途高性能服務(wù)器,涉及多核/眾核處理器內(nèi)部存儲(chǔ)控制器(簡稱存控)結(jié)構(gòu)、存儲(chǔ)控制器通過處理器芯片引腳與存儲(chǔ)器顆粒相連電路,以及存儲(chǔ)器顆粒之間連接電路的設(shè)計(jì),屬于計(jì)算機(jī)體系結(jié)構(gòu)領(lǐng)域。
背景技術(shù):
當(dāng)前處理器核數(shù)不斷增加,為了充分發(fā)揮處理器計(jì)算性能,必須有效利用存儲(chǔ)器訪問(簡稱訪存)帶寬。以P表示所有數(shù)據(jù)與地址引腳(簡稱引腳)的總帶寬(gb/s),以D表示數(shù)據(jù)總線帶寬(GB/s),A表示地址總線帶寬(GB/s),則有P = D+A。在引腳數(shù)與時(shí)鐘頻率一定(因此P是常數(shù))的情況下,現(xiàn)有體系結(jié)構(gòu)設(shè)計(jì)采用了固定的D與A,分為兩大類:第一類,數(shù)據(jù)引腳與地址引腳分開。存儲(chǔ)控制器的個(gè)數(shù)決定了 D/A比例。如果只有一個(gè)存控,大多數(shù)引腳作數(shù)據(jù)總線,D約等于P。但由于地址信息流少,每個(gè)從首地址讀寫的數(shù)據(jù)位數(shù)(訪存粒度)很寬,例如256數(shù)據(jù)引腳訪問DDR3型存儲(chǔ)器(共連續(xù)地址多發(fā)次數(shù),突發(fā)長度為8)的訪存粒度為256字節(jié)。短于256字節(jié)的訪存指令無法有效利用訪存帶寬。大部分云計(jì)算或其他事務(wù)處理類應(yīng)用訪存粒度只有4 8字節(jié)(整型、單精浮點(diǎn)4字節(jié),長整型或+雙精浮點(diǎn)8字節(jié))。以8字節(jié)訪存為例,單存控256位數(shù)據(jù)總線的實(shí)際帶寬利用率只有8/256約0.03P。增加存控個(gè)數(shù)雖然可以降低訪存粒度,但同時(shí)也增加了地址引腳數(shù)目進(jìn)而減少數(shù)據(jù)帶寬。如果存控?cái)?shù)目多到使得訪存粒度達(dá)到8字節(jié)(64位),GB級(jí)的尋址常需要接近32位地址信息,D的理論極限是0.67P。實(shí)際上由于典型存儲(chǔ)器(如DDR3)時(shí)序地址總線信息占用率不滿(數(shù)據(jù)總線為倍率),實(shí)際實(shí)施可行的帶寬D在0.5P以下。這意味著如果固定D/A比例,則滿足事務(wù)處理計(jì)算任務(wù)的需要必將大幅降低科學(xué)計(jì)算應(yīng)用的數(shù)據(jù)帶寬。大多數(shù)科學(xué)計(jì)算任務(wù)在眾核高性能處理器芯片上運(yùn)行的性能瓶頸是訪存帶寬,帶寬減半意味著性能減半。第二類,數(shù)據(jù)與地址分時(shí)復(fù)用處理器芯片引腳。這類設(shè)計(jì)常見于嵌入式系統(tǒng)低端處理器,主要解決的問題是處理器封裝簡單,引腳數(shù)量接近尋址所需的引腳數(shù),因此需要從引腳分時(shí)發(fā)出地址信息和讀寫數(shù)據(jù)。由于應(yīng)用目的僅僅在于節(jié)約引腳數(shù),因此D與A設(shè)計(jì)上是固定的,其缺點(diǎn)與第一類設(shè)計(jì)本質(zhì)上是一樣的,不能同時(shí)適應(yīng)兩類應(yīng)用的性能需要。在訪存粒度固定的情況下,其他一些現(xiàn)有技術(shù)在不改變D/A比例前提下挖掘數(shù)據(jù)局部性,可以適當(dāng)提高帶寬利用率,但效果有限。緩存技術(shù)(Cache)在核數(shù)多的情況下不具有可擴(kuò)展性:核數(shù)越多,每個(gè)核平均緩存越少,命中率越低;一個(gè)核獲得的緩存行(CacheLine,典型為128字節(jié),連續(xù)編址)存在于緩存短暫瞬間恰好被另一處理器核訪問的幾率很?。灰虼撕藬?shù)越多,緩存效果越差。GPGPU(通用圖形處理器)技術(shù)每32個(gè)線程組成一個(gè)Warp單位,執(zhí)行S IMD (單指令多數(shù)據(jù)流)的向量指令,使得同一訪存數(shù)據(jù)段可以被向量指令中的不同線程交錯(cuò)訪問其不同位置的數(shù)據(jù)元素,不需要顯式地在源程序中不同線程間交換數(shù)據(jù),簡化了編程。但是這一技術(shù)仍然假設(shè)相當(dāng)寬的同一連續(xù)數(shù)據(jù)段的數(shù)據(jù)(GPGPU典型為32字節(jié))能夠被有效利用,而很多任務(wù)處理程序沒有大于8字節(jié)的數(shù)據(jù)局部性,訪存地址十分發(fā)散,帶寬利用率會(huì)很低。例如,盡管GPGPU往往對(duì)科學(xué)計(jì)算類任務(wù)能實(shí)現(xiàn)十幾到幾十倍的加速,但用于圖(如最短路徑)計(jì)算時(shí),相對(duì)于同一代CPU加速度很少超過二倍??傊?,如果處理器與存儲(chǔ)器接口設(shè)計(jì)上D/A很高,采用處理器內(nèi)部通訊機(jī)制在處理器核之間交換數(shù)據(jù),可以適當(dāng)提高利用率,簡化編程,但無法解決任務(wù)處理類程序訪存發(fā)散,訪存帶寬利用率低的問題。目前,尚未發(fā)現(xiàn)有專利或者文獻(xiàn)討論共用地址與數(shù)據(jù)引腳,并根據(jù)程序行為自適應(yīng)改變引腳功能的訪存方法。
發(fā)明內(nèi)容
本發(fā)明所使用的一些術(shù)語定義如下:處理器核心:多核/眾核處理器中具有獨(dú)立指令流水線的最小指令處理硬件單
J Li ο存儲(chǔ)器顆粒:片外存儲(chǔ)器顆粒,由若干個(gè)二維存儲(chǔ)器陣列(Bank)和對(duì)應(yīng)的控制邏輯部件(行選擇器、列選擇器等)構(gòu)成。多個(gè)Bank共享一組數(shù)據(jù)引腳。存儲(chǔ)控制器(簡稱存控):存儲(chǔ)控制器是用來管理流入及流出主存的數(shù)據(jù)流的電路,用以解析處理器發(fā)出的存儲(chǔ)器訪問地址等信息,同時(shí)對(duì)多個(gè)指令流水線發(fā)出的訪存指令進(jìn)行緩存和調(diào)度,并向片外存儲(chǔ)器發(fā)送讀寫指令。存儲(chǔ)器訪問(簡稱訪存):處理器內(nèi)部存儲(chǔ)控制器向存儲(chǔ)器發(fā)出讀寫訪問指令。本發(fā)明的目的是提出一種多核處理器數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,使得應(yīng)用程序能實(shí)現(xiàn)訪 存帶寬的高利用率。本發(fā)明提供的技術(shù)方案如下:一種數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,應(yīng)用于多核/眾核處理器,其特征是,采用數(shù)據(jù)與地址共用處理器芯片引腳的方式;處理器根據(jù)并行線程發(fā)出的訪存指令調(diào)節(jié)程序運(yùn)行期間數(shù)據(jù)信息傳輸與地址信息傳輸?shù)谋壤?,使得運(yùn)行時(shí)程序發(fā)出粗粒度訪存為主的情形下自動(dòng)減少地址信息傳輸,在細(xì)粒度訪存為主的情形下自動(dòng)增加地址信息,達(dá)到自適應(yīng)動(dòng)態(tài)調(diào)節(jié)的作用。其中,所述粗粒度訪存指的是訪存寬度大于等于32字節(jié);所述細(xì)粒度訪存指的是訪存寬度小于等于8字節(jié)。所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,在處理器芯片數(shù)據(jù)與地址引腳數(shù)及時(shí)鐘頻率一定的條件下,根據(jù)應(yīng)用程序的動(dòng)態(tài)行為特征自適應(yīng)地動(dòng)態(tài)確定各引腳在每一時(shí)鐘周期讀寫數(shù)據(jù)還是發(fā)出地址信息,使粗粒度訪存(即寬連續(xù)地址訪問)的科學(xué)計(jì)算類應(yīng)用程序,與細(xì)粒度訪存的云計(jì)算或其他事務(wù)處理類應(yīng)用程序都能實(shí)現(xiàn)訪存帶寬的高利用率。所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,把處理器數(shù)據(jù)與地址引腳分成若干組,每組引腳在某一時(shí)鐘周期既可以用于讀寫數(shù)據(jù),也可以用于發(fā)出地址信息;處理器內(nèi)部存儲(chǔ)控制器將不同處理器核發(fā)出的訪存指令針對(duì)不同引腳組建立隊(duì)列,將多個(gè)訪存指令拼成一個(gè)完整的組合訪存指令;由于多個(gè)訪存指令很可能涉及存儲(chǔ)器不同的位置,需要從這些共用的引腳提前發(fā)出多個(gè)地址,在訪存時(shí)序中插入地址周期;每個(gè)時(shí)鐘周期處理器控制確定是存儲(chǔ)器顆粒的數(shù)據(jù)總線還是地址總線與處理器的共用引腳相連,實(shí)現(xiàn)數(shù)據(jù)或地址信息間的切換;返回?cái)?shù)據(jù)由存儲(chǔ)控制器正確分離,分別傳送給原來發(fā)出訪存指令的處理器核。所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,如果應(yīng)用程序下處理器核發(fā)出大部分訪存指令足夠?qū)?,不需要互相拼接,則共用的引腳很少發(fā)出地址周期,帶寬利用率等同于粗粒度單存儲(chǔ)控制器的情形;如果應(yīng)用程序下處理器核發(fā)出大量發(fā)散的短小訪存指令,則在時(shí)序中插入較多的地址周期,帶寬利用率等同于細(xì)粒度多存儲(chǔ)控制器的情形,由此實(shí)現(xiàn)自適應(yīng)動(dòng)態(tài)調(diào)整“數(shù)據(jù)傳輸速率/地址傳輸速率”比例的目的。所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,執(zhí)行訪存指令的完整步驟如下:I)處理器內(nèi)部存儲(chǔ)控制器將不同處理器核發(fā)出的訪存指令針對(duì)不同共用引腳組建立隊(duì)列,并將多個(gè)訪存指令拼成一個(gè)組合訪存指令;包括:a)建立隊(duì)列;b)將隊(duì)列中多個(gè)訪存指令拼接成一個(gè)組合訪存指令;2)由于多個(gè)訪存指令很可能涉及存儲(chǔ)器不同的位置,需要從這些共用的引腳提前發(fā)出多個(gè)地址,并發(fā)出相應(yīng)控制信號(hào),在訪存時(shí)序中插入地址周期;3)存儲(chǔ)器顆粒在每個(gè)時(shí)鐘周期由處理器控制確定數(shù)據(jù)總線還是地址總線與處理器的共用引腳相連,實(shí)現(xiàn)數(shù)據(jù)或地址信息間的切換;4)返回?cái)?shù)據(jù)應(yīng)當(dāng)由存儲(chǔ)控制器正確分離,分別傳送給原來發(fā)出訪存指令的那些處理器核。本發(fā)明的有益效·果:本發(fā)明所述的方法,能夠根據(jù)程序行為自適應(yīng)改變處理器芯片引腳功能的訪存,可以簡化編程,提高訪存帶寬利用率,解決了任務(wù)處理類程序訪存發(fā)散,訪存帶寬利用率低的問題,具有良好的應(yīng)用前景。
圖1是有鎖存器方案時(shí)序圖。其中(a)現(xiàn)有系統(tǒng)連續(xù)讀指令周期時(shí)序;(b)有鎖存器方案連續(xù)細(xì)粒度讀指令周期。圖2是有鎖存器方案的外圍多選器電路。圖3是相鄰插入地址周期與系統(tǒng)時(shí)鐘周期對(duì)應(yīng)關(guān)系圖。圖4是無鎖存器方案時(shí)序圖。其中(a)現(xiàn)有系統(tǒng)連續(xù)讀指令周期時(shí)序;(b)無鎖存器連續(xù)細(xì)粒度讀指令周期。圖5是無鎖存器方案的外圍多選器電路。圖6是中等粒度訪存指令拼接示意圖。圖7是實(shí)施方案三中存儲(chǔ)管理器的外圍電路。
具體實(shí)施例方式本發(fā)明首先給出一個(gè)當(dāng)前技術(shù)條件下典型的、具有不同特點(diǎn)的三種實(shí)施方案。需要注意的是,本發(fā)明不應(yīng)局限于實(shí)施例所公開的內(nèi)容,要求保護(hù)的范圍應(yīng)以權(quán)利要求書界定的范圍為準(zhǔn)。
實(shí)施方案一:本實(shí)施方案不改變當(dāng)前DDR3存儲(chǔ)器顆粒內(nèi)部結(jié)構(gòu)與時(shí)序邏輯,通過改進(jìn)處理器存控使得每一個(gè)周期訪存在粗粒度單發(fā)射(單地址)與8字節(jié)細(xì)粒度多發(fā)射(需多地址)兩種模式間根據(jù)處理器內(nèi)部隊(duì)列中訪存指令粒度動(dòng)態(tài)自動(dòng)切換。1.處理器內(nèi)部存控將引腳每8個(gè)組成一組,每組對(duì)應(yīng)一個(gè)外部存儲(chǔ)器顆粒。由于DDR3的突發(fā)長度為8 (Burst Length = 8),存控可以控制的最小訪存粒度為8字節(jié)。a)粗粒度訪存指令隊(duì)列存控為粗粒度訪存指令(例如大于或等于32字節(jié)寬)建立獨(dú)立的隊(duì)列,其地址從類似現(xiàn)有處理器的統(tǒng)一的專門地址引腳發(fā)出,由各個(gè)存儲(chǔ)器顆粒地址總線共用。b)細(xì)粒度訪存指令隊(duì)列存控為每一引腳組 建立一個(gè)單獨(dú)隊(duì)列。存控每次從所有隊(duì)列頭取出多個(gè)細(xì)粒度訪存指令拼接成一個(gè)組合訪存指令。本方案不專門設(shè)計(jì)大于8字節(jié)而小于32字節(jié)的中等粒度訪存的拼接,而是要求將這樣的訪存分解為多個(gè)8字節(jié)細(xì)粒度訪存。c)訪存指令存控交替從粗粒度與細(xì)粒度訪存指令隊(duì)列中提取訪存指令發(fā)往存儲(chǔ)器顆粒。2.由于共用總線在任意時(shí)刻只能傳輸數(shù)據(jù)或地址,在需要發(fā)射多個(gè)訪存指令,數(shù)據(jù)連續(xù)傳輸時(shí),存控需要發(fā)出相應(yīng)控制信號(hào),在訪存時(shí)序中插入地址周期。操作時(shí)序圖如圖1所示。圖1 (a)表示現(xiàn)有DDR3存儲(chǔ)器顆粒多個(gè)連續(xù)讀周期的時(shí)序。其中ABUS指現(xiàn)有存儲(chǔ)器系統(tǒng)中的地址總線(在現(xiàn)有系統(tǒng)中等同于存儲(chǔ)器顆粒的地址總線),DBUS指現(xiàn)有存儲(chǔ)器系統(tǒng)中的數(shù)據(jù)總線,CL表示列選信號(hào)到數(shù)據(jù)傳輸?shù)难舆t周期數(shù);圖1(b)表示本發(fā)明設(shè)計(jì)的多個(gè)連續(xù)組合細(xì)粒度讀周期的時(shí)序。其中mABUS指存儲(chǔ)器顆粒端的地址總線,DA BUS指數(shù)據(jù)與地址共用總線)。共用總線在數(shù)據(jù)周期組之間插入地址周期并記錄于鎖存器,并在下兩個(gè)周期傳輸給存儲(chǔ)器顆粒的地址總線。在圖1 (b)中,第(i+1)個(gè)訪存的行選信號(hào)與第(1-1)個(gè)訪存的列選信號(hào)被設(shè)置在時(shí)序的相鄰位置,由鎖存器加以記錄,并在約兩個(gè)周期延遲后由鎖存器發(fā)送至存儲(chǔ)器顆粒地址端。DDR3訪存讀寫之間的切換涉及上下跳沿在存儲(chǔ)器與存控之間傳輸?shù)难舆t,存在少量超前與滯后時(shí)序,因此被插入的2個(gè)地址信息時(shí)鐘周期中鎖存器輸入時(shí)序應(yīng)當(dāng)與數(shù)據(jù)總線當(dāng)前跳沿時(shí)序?qū)R,而鎖存器輸出到存儲(chǔ)器顆粒的時(shí)序應(yīng)當(dāng)與存儲(chǔ)器顆粒所要求的地址時(shí)序一致。3.每個(gè)時(shí)鐘周期由存控確定存儲(chǔ)器顆粒的數(shù)據(jù)總線還是地址總線與處理器的共用引腳相連,實(shí)現(xiàn)數(shù)據(jù)或地址信息間的切換。由于本發(fā)明中處理器數(shù)據(jù)與地址共用引腳,而現(xiàn)有系統(tǒng)設(shè)計(jì)中存儲(chǔ)器顆粒的數(shù)據(jù)與地址總線是分離的,因此本實(shí)施方案設(shè)計(jì)在存儲(chǔ)器顆粒與處理器之間增加了鎖存與多選電路。本方案保留現(xiàn)有處理器設(shè)計(jì)中的地址總線,在粗粒度訪存時(shí)直接將統(tǒng)一地址信息發(fā)往多個(gè)存儲(chǔ)器顆粒的地址總線;對(duì)于細(xì)粒度拼接的組合訪存指令,則需要從各組共用引腳發(fā)出多個(gè)地址信息,并通過鎖存器記錄,分別發(fā)送到不同存儲(chǔ)器顆粒的地址總線。不同總線之間需要控制信號(hào)切換多選電路才能正常連接。具體的,分別將每個(gè)存儲(chǔ)器顆粒與存控相連的數(shù)據(jù)總線接入數(shù)據(jù)多選器的輸入端Din,數(shù)據(jù)多選器的輸出端Dout_b直接與存儲(chǔ)器顆粒的數(shù)據(jù)引腳接通,而輸出端Dout_a接入鎖存器;鎖存器的輸出端接入地址多選器的輸入端Din_b,其另一個(gè)輸入端Din_a直接與存控的地址引腳接通,地址多選器的輸出Dout直接與存儲(chǔ)器顆粒的地址引腳接通;增加選通信號(hào)D_SEL控制數(shù)據(jù)多選器選通,A_SEL控制地址多選器選通(如圖2)。在地址周期,若該存儲(chǔ)器芯片需要接受來自統(tǒng)一地址總線的粗粒度訪存請(qǐng)求,則D_SEL控制數(shù)據(jù)多選器選通Dout_b,A_SEL控制地址多選器選通Din_a,此時(shí),存儲(chǔ)器顆粒接受來自存控的統(tǒng)一地址總線;對(duì)于組合的細(xì)粒度訪存,D_SEL控制數(shù)據(jù)多選器選通Dout_a,A_SEL控制地址多選器選通Din_b,在一個(gè)地址周期內(nèi),鎖存器可以先后從兩個(gè)相鄰周期的上升與下降共4個(gè)跳沿接收到32位地址信息,其中19位為第i+Ι個(gè)行選地址,10位為第1-1個(gè)列選地址。鎖存器在延遲約2時(shí)鐘周期之后按照存儲(chǔ)器顆粒地址時(shí)序發(fā)出。本方案假設(shè)存儲(chǔ)器顆粒不變,但所有外圍電路也可以集成到存儲(chǔ)器顆粒內(nèi)部。4.返回?cái)?shù)據(jù)由存儲(chǔ)控制器正確分離,分別傳送給原來發(fā)出訪存指令的那些處理器核。當(dāng)前發(fā)出的訪存指令仍然以等待狀態(tài)記錄在存控中。對(duì)于組合的細(xì)粒度訪存指令,存控收到返回?cái)?shù)據(jù)之后需要將數(shù)據(jù)拆分為多個(gè)所需片段,根據(jù)存控中記錄的信息,分別發(fā)往所需處理器核的相應(yīng)寄存器。因此每個(gè)訪存應(yīng)當(dāng)包含地址、讀或?qū)懖僮?,以及發(fā)出訪存的處理器核編號(hào)、返回寄存器數(shù)據(jù)位置的信息。現(xiàn)有系統(tǒng)存控個(gè)數(shù)與每個(gè)存控所管理的數(shù)據(jù)總線寬度(訪存粒度)都是固定的??偣璉腳個(gè)數(shù)一定的條件下,存控個(gè)數(shù)越多,訪存粒度越細(xì)。如果存儲(chǔ)器顆粒沒有額外ECC校驗(yàn)功能,則面向細(xì)粒度的存控設(shè)計(jì)需要完全冗余的校驗(yàn)。本發(fā)明ECC校驗(yàn)方面的特性與面向細(xì)粒度訪存的多存控的校驗(yàn)問題等同。如果大部分訪存為粗粒度,則本方案與現(xiàn)有眾核處理器相同,通過獨(dú)立的地址總線發(fā)送訪存指令地址,其時(shí)序圖等同于 圖1(a)所示的現(xiàn)有系統(tǒng)時(shí)序,數(shù)據(jù)吞吐率可以接近P ;如果大部分訪存為細(xì)粒度訪存,且處理器核數(shù)足夠多訪存足夠隨機(jī)發(fā)散,那么在本方案中訪存指令執(zhí)行的時(shí)序圖如圖b所示,每個(gè)突發(fā)傳輸之前需要插入2個(gè)時(shí)鐘周期的地址信息,數(shù)據(jù)吞吐率接近0.67P。實(shí)施方案二:實(shí)施方案一需要在處理器與存儲(chǔ)器顆粒外圍增加鎖存器,而實(shí)施方案二保留了方案一的步驟I與步驟4,對(duì)實(shí)施步驟2與步驟3進(jìn)行改進(jìn),目的是省略鎖存器、簡化外圍電路,改進(jìn)的步驟如下:2.無鎖存器的數(shù)據(jù)與地址共用時(shí)序由于本方案不使用鎖存器,處理器和存儲(chǔ)器的外圍電路沒有記錄功能,因此從共用引腳發(fā)出的地址信息必須嚴(yán)格符合存儲(chǔ)器顆粒的地址時(shí)序。存儲(chǔ)器顆粒至少需要16根地址總線作行選與列選(如需更多的地址總線還可以使用原有地址總線)。本方案需要將處理器16根引腳組成一個(gè)引腳組,連到2個(gè)存儲(chǔ)器顆粒,分別稱成為“上存儲(chǔ)器”與“下存儲(chǔ)器”。為了充分利用總線帶寬,所有上存儲(chǔ)器顆粒工作在系統(tǒng)時(shí)鐘CK與數(shù)據(jù)選通DQS時(shí)序,地址信號(hào)在CK上跳沿采樣;而所有下存儲(chǔ)器顆粒工作在反時(shí)鐘CK#與反數(shù)據(jù)選通DQS#時(shí)序,地址信號(hào)在CK下跳沿采樣。圖3顯示了相鄰的2個(gè)地址周期中,2個(gè)上跳沿分別為上存儲(chǔ)器顆粒的第i+Ι個(gè)行選(Ri+1)與第1-1 (Ci^1)個(gè)列選,2個(gè)下跳沿分別為下存儲(chǔ)器顆粒的相應(yīng)行選(R’i+1)與列選(C’g)。地址時(shí)序超前讀周期時(shí)序而在寫周期與共用總線時(shí)序?qū)R。由于DDR3寫周期時(shí)序稍領(lǐng)先讀周期時(shí)序(見圖4),因此從讀周期到寫周期轉(zhuǎn)換時(shí)需要多插入一個(gè)空閑周期。這一特性決定了插入的地址周期(寫周期時(shí)序)也需要增加一個(gè)空閑周期,不論當(dāng)前數(shù)據(jù)是讀寫,增加的空閑周期保持上存儲(chǔ)器顆粒與下存儲(chǔ)器顆粒大致同步,而地址信息嚴(yán)格按照存儲(chǔ)器顆粒的地址時(shí)序發(fā)出。DDR3要求列選與相應(yīng)數(shù)據(jù)傳輸?shù)淖钚【嚯x(CL)是5個(gè)周期,但在方案二的細(xì)粒度訪存模式下,此距離需要通過設(shè)置存儲(chǔ)器顆粒內(nèi)的寄存器增加3個(gè)地址周期,拉長至8周期。3.無鎖存器的外圍多選器電路如圖5,每16根共用引腳DA BUS組成一組,通過多選器連到2個(gè)存儲(chǔ)器顆粒的數(shù)據(jù)總線(每個(gè)存儲(chǔ)器顆粒8根數(shù)據(jù)引腳)以及地址多選器。地址周期中該多選器連通DABUS與地址多選器,而在正常數(shù)據(jù)讀寫周期中連通DA BUS到存儲(chǔ)器顆粒的數(shù)據(jù)總線。地址多選器連接處理器共用地址總線ABUS、數(shù)據(jù)多選器以及存儲(chǔ)器顆粒的地址總線。由于行選信號(hào)需要19根地址總線,而每個(gè)共用引腳組只有16根,本方案設(shè)計(jì)原有地址總線(粗粒度訪存時(shí)走共用地址而細(xì)粒度訪存時(shí)空閑)為每組引腳組分出3根,共同組成寬19的行地址(而無需鎖存)。如果大部分訪存為粗粒度,則本方案與現(xiàn)有處理器相同,通過統(tǒng)一的地址總線發(fā)送訪存指令地址,數(shù)據(jù)吞吐率可以接近P;如果大部分訪存為細(xì)粒度訪存,且處理器核數(shù)足夠多訪存足夠隨機(jī)發(fā)散,相鄰?fù)话l(fā)數(shù)據(jù)傳輸之間需要插入3個(gè)地址周期,數(shù)據(jù)吞吐率接近0.57P。實(shí)施方案三:實(shí)施方案一與實(shí)施方案二的設(shè)計(jì)重點(diǎn)支持粗粒度與細(xì)粒度這兩種極端模式的訪存。中等粒度(比如大于8字節(jié)小于32字節(jié))訪存指令被分解為多個(gè)細(xì)粒度訪存指令。這兩種方案設(shè)計(jì)優(yōu)點(diǎn)是 邏輯簡單,缺點(diǎn)是需要占用總帶寬發(fā)出冗余的相同地址信息。實(shí)施方案三在處理器與存儲(chǔ)器外圍增加一個(gè)存儲(chǔ)管理器,功能是建立隊(duì)列,記錄從處理器不同引腳組發(fā)出的訪存指令,并負(fù)責(zé)按正確時(shí)序向不同存儲(chǔ)器顆粒分別發(fā)出地址。處理器在地址周期從所有共用引腳發(fā)出包含地址信息的訪存請(qǐng)求。本方案不再需要統(tǒng)一的地址總線,所有地址信息一律從數(shù)據(jù)與地址共用的引腳發(fā)出。1.處理器內(nèi)部存控設(shè)計(jì)a)訪存指令隊(duì)列:訪存指令隊(duì)列統(tǒng)一組織各種不同寬度的訪存指令。每個(gè)存儲(chǔ)器顆粒對(duì)應(yīng)一個(gè)隊(duì)列。訪存指令被分別記錄在所有涉及到的存儲(chǔ)器顆粒的隊(duì)列中。b)拼接方法:拼接方法可以采取貪心法一從各個(gè)隊(duì)列首部找到第一個(gè)涉及該存儲(chǔ)器顆粒的訪存,將所有這樣的訪存指令拼接成一個(gè)組合訪存指令。如果兩個(gè)訪存指令有重疊,則截?cái)嗪竺娴脑L存,將其重疊部分留在隊(duì)列中,如圖6所示,同一種線型的線條代表一個(gè)組合訪存指令(共3條)。這樣該組合訪存指令只需要發(fā)出一組包含地址信息的訪存請(qǐng)求,其中地址信息個(gè)數(shù)與包含的訪存?zhèn)€數(shù)相同。
c)訪存請(qǐng)求定義:—個(gè)訪存請(qǐng)求應(yīng)當(dāng)包含地址信息、訪存寬度以及標(biāo)識(shí)讀寫的信息。2.時(shí)序由于新增的存儲(chǔ)管理器具有緩存功能,能夠記錄下較多組的訪存請(qǐng)求,因此本方案采取集中發(fā)出多個(gè)地址周期的方法將一批訪存請(qǐng)求從處理器經(jīng)共用引腳發(fā)往存儲(chǔ)管理器。這樣地址周期就不再穿插于正常數(shù)據(jù)傳輸,而是等待一批數(shù)據(jù)傳出結(jié)束以后再集中進(jìn)行。3.存儲(chǔ)管理器的外圍電路如圖7,所有的64根DA BUS通過數(shù)據(jù)多選器選擇與存儲(chǔ)器顆粒的數(shù)據(jù)引腳連通還是與存儲(chǔ)管理器的輸入引腳連通,存儲(chǔ)管理器的輸出引腳分別與每個(gè)存儲(chǔ)器顆粒的地址總線相連。在地址周期,選擇信號(hào)D_SEL將DABUS與存儲(chǔ)管理器的輸入引腳接通,處理器向存儲(chǔ)管理器發(fā)送一批組合訪存請(qǐng)求緩存于存儲(chǔ)管理器。在訪存請(qǐng)求發(fā)送完畢后,存儲(chǔ)管理器嚴(yán)格按照存儲(chǔ)器顆粒的地址時(shí)序?qū)⒚總€(gè)訪存請(qǐng)求的地址發(fā)送至相應(yīng)的存儲(chǔ)器顆粒。對(duì)于中等粒度的訪存請(qǐng)求,存儲(chǔ)管理器向每個(gè)需要響應(yīng)的存儲(chǔ)器顆粒都發(fā)出相同的地址。4.返回?cái)?shù)據(jù)由存儲(chǔ)控制器正確分離并返回。對(duì)于完整的訪 存請(qǐng)求,存儲(chǔ)控制器將返回的數(shù)據(jù)發(fā)送給發(fā)出請(qǐng)求的處理器核;對(duì)于被截?cái)嗟脑L存請(qǐng)求,存儲(chǔ)控制器將已執(zhí)行部分返回的數(shù)據(jù)進(jìn)行緩存,等待剩余的部分全部執(zhí)行完成并返回?cái)?shù)據(jù)后,由存儲(chǔ)控制器將其拼接成完整的返回?cái)?shù)據(jù),再發(fā)送給發(fā)起該訪存請(qǐng)求的處理器核。5.本方案也可以根據(jù)需要設(shè)計(jì)混合周期:實(shí)施方案三的基本實(shí)現(xiàn)方式是在多個(gè)數(shù)據(jù)傳輸周期后插入多個(gè)地址傳輸周期。作為本方案的變種,也可以根據(jù)需要設(shè)計(jì)混合周期,即在某些周期中一部分存儲(chǔ)器顆粒對(duì)應(yīng)的共用引腳組進(jìn)行數(shù)據(jù)傳輸而其余的共用引腳組傳輸?shù)刂沸畔?。?shí)施方案三不論在粗粒度還是細(xì)粒度訪存模式下,帶寬利用率都不會(huì)低于實(shí)施方案一和實(shí)施方案二,但對(duì)于中等粒度訪存模式,由于減少了處理器發(fā)出的地址信息,其數(shù)據(jù)帶寬利用率會(huì)略高于前兩種實(shí)施方案。
權(quán)利要求
1.一種數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,應(yīng)用于多核/眾核處理器,其特征是,采用數(shù)據(jù)與地址共用處理器芯片引腳的方式;處理器根據(jù)并行線程發(fā)出的訪存指令調(diào)節(jié)程序運(yùn)行期間數(shù)據(jù)信息傳輸與地址信息傳輸?shù)谋壤?,使得運(yùn)行時(shí)程序發(fā)出粗粒度訪存為主的情形下自動(dòng)減少地址信息傳輸,在細(xì)粒度訪存為主的情形下自動(dòng)增加地址信息,達(dá)到自適應(yīng)動(dòng)態(tài)調(diào)節(jié)的作用。
2.如權(quán)利要求1所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,所述粗粒度訪存指的是訪存寬度大于等于32字節(jié);所述細(xì)粒度訪存指的是訪存寬度小于等于8字節(jié)。
3.如權(quán)利要求1所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,在處理器芯片數(shù)據(jù)與地址引腳數(shù)及時(shí)鐘頻率一定的條件下,根據(jù)應(yīng)用程序的動(dòng)態(tài)行為特征自適應(yīng)地動(dòng)態(tài)確定各引腳在每一時(shí)鐘周期讀寫數(shù)據(jù)還是發(fā)出地址信息,使粗粒度訪存的科學(xué)計(jì)算類應(yīng)用程序,與細(xì)粒度訪存的云計(jì)算或其他事務(wù)處理類應(yīng)用程序都能實(shí)現(xiàn)訪存帶寬的高利用率。
4.如權(quán)利要求1所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,把處理器數(shù)據(jù)與地址引腳分成若干組,每組引腳在某一時(shí)鐘周期既可以用于讀寫數(shù)據(jù),也可以用于發(fā)出地址信息;處理器內(nèi)部存儲(chǔ)控制器將不同處理器核發(fā)出的訪存指令針對(duì)不同引腳組建立隊(duì)列,將多個(gè)訪存指令拼成一個(gè)完整的組合訪存指令;由于多個(gè)訪存指令很可能涉及存儲(chǔ)器不同的位置,需要從這些共用的引腳提前發(fā)出多個(gè)地址,在訪存時(shí)序中插入地址周期;每個(gè)時(shí)鐘周期處理器控制確定是存儲(chǔ)器顆粒的數(shù)據(jù)總線還是地址總線與處理器的共用引腳相連,實(shí)現(xiàn)數(shù)據(jù)或地址信息間的切換;返回?cái)?shù)據(jù)由存儲(chǔ)控制器正確分離,分別傳送給原來發(fā)出訪存指令的處理器核。
5.如權(quán)利要求4所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,如果應(yīng)用程序下處理器核發(fā)出大部分訪存指令足夠?qū)?,不需要互相拼接,則共用的引腳很少發(fā)出地址周期,帶寬利用率等同于粗粒度單存儲(chǔ)控制器的情形;如果應(yīng)用程序下處理器核發(fā)出大量發(fā)散的短小訪存指令,則在時(shí)序中插入較多的地址周期,帶寬利用率等同于細(xì)粒度多存儲(chǔ)控制器的情形,由此實(shí)現(xiàn)自適應(yīng)動(dòng)態(tài)調(diào)整“數(shù)據(jù)傳輸速率/地址傳輸速率”比例的目的。
6.如權(quán)利要求1所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,執(zhí)行訪存指令的完整步驟如下: 1)處理器內(nèi)部存儲(chǔ)控制器將不同處理器核發(fā)出的訪存指令針對(duì)不同共用引腳組建立隊(duì)列,并將多個(gè)訪存指令拼成一個(gè)組合訪存指令; 2)由于多個(gè)訪存指令很可能涉及存儲(chǔ)器不同的位置,需要從這些共用的弓I腳提前發(fā)出多個(gè)地址,并發(fā)出相應(yīng)控制信號(hào),在訪存時(shí)序中插入地址周期; 3)存儲(chǔ)器顆粒在每個(gè)時(shí)鐘周期由處理器控制確定數(shù)據(jù)總線還是地址總線與處理器的共用引腳相連,實(shí)現(xiàn)數(shù)據(jù)或地址信息間的切換; 4)返回?cái)?shù)據(jù)應(yīng)當(dāng)由存儲(chǔ)控制器正確分離,分別傳送給原來發(fā)出訪存指令的那些處理器核。
7.如權(quán)利要求1所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,實(shí)施方案如下:(1)處理器內(nèi)部存控將引腳每8個(gè)組成一組,每組對(duì)應(yīng)一個(gè)外部DDR3存儲(chǔ)器顆粒; (2)由于共用總線在任意時(shí)刻只能傳輸數(shù)據(jù)或地址,在需要發(fā)射多個(gè)訪存指令,數(shù)據(jù)連續(xù)傳輸時(shí),存控需要發(fā)出相應(yīng)控制信號(hào),在訪存時(shí)序中插入地址周期; (3)每個(gè)時(shí)鐘周期由存控確定存儲(chǔ)器顆粒的數(shù)據(jù)總線還是地址總線與處理器的共用引腳相連,實(shí)現(xiàn)數(shù)據(jù)或地址信息間的切換; (4)返回?cái)?shù)據(jù)由存儲(chǔ)控制器正確分離,分別傳送給原來發(fā)出訪存指令的那些處理器核; 所述實(shí)施方案在存儲(chǔ)器顆粒與處理器之間增加了鎖存與多選電路,保留現(xiàn)有處理器設(shè)計(jì)中的地址總線,在粗粒度訪存時(shí)直 接將統(tǒng)一地址信息發(fā)往多個(gè)存儲(chǔ)器顆粒的地址總線;對(duì)于細(xì)粒度拼接的組合訪存指令,則需要從各組共用引腳發(fā)出多個(gè)地址信息,并通過鎖存器記錄,分別發(fā)送到不同存儲(chǔ)器顆粒的地址總線;不同總線之間通過控制信號(hào)切換多選電路進(jìn)行連接。
8.如權(quán)利要求1所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,不使用鎖存器的實(shí)施方案如下: (1)處理器內(nèi)部存控將引腳每8個(gè)組成一組,每組對(duì)應(yīng)一個(gè)外部DDR3存儲(chǔ)器顆粒; (2)無鎖存器的數(shù)據(jù)與地址共用時(shí)序: 從共用引腳發(fā)出的地址信息必須嚴(yán)格符合存儲(chǔ)器顆粒的地址時(shí)序;存儲(chǔ)器顆粒至少需要16根地址總線作行選與列選,需要將處理器16根引腳組成一個(gè)引腳組,連到2個(gè)存儲(chǔ)器顆粒,分別稱成為“上存儲(chǔ)器”與“下存儲(chǔ)器”;為了充分利用總線帶寬,所有上存儲(chǔ)器顆粒工作在系統(tǒng)時(shí)鐘CK與數(shù)據(jù)選通DQS時(shí)序,地址信號(hào)在CK上跳沿采樣;而所有下存儲(chǔ)器顆粒工作在反時(shí)鐘CK#與反數(shù)據(jù)選通DQS#時(shí)序,地址信號(hào)在CK下跳沿采樣;地址時(shí)序超前讀周期時(shí)序而在寫周期與共用總線時(shí)序?qū)R; (3)無鎖存器的外圍多選器電路: 每16根共用引腳DA BUS組成一組,通過多選器連到2個(gè)存儲(chǔ)器顆粒的數(shù)據(jù)總線以及地址多選器;地址周期中該多選器連通DA BUS與地址多選器,而在正常數(shù)據(jù)讀寫周期中連通DA BUS到存儲(chǔ)器顆粒的數(shù)據(jù)總線;地址多選器連接處理器共用地址總線ABUS、數(shù)據(jù)多選器以及存儲(chǔ)器顆粒的地址總線;由于行選信號(hào)需要19根地址總線,而每個(gè)共用引腳組只有16根,本方案設(shè)計(jì)原有地址總線為每組引腳組分出3根,共同組成寬19的行地址,而無需鎖存; (4)返回?cái)?shù)據(jù)由存儲(chǔ)控制器正確分離,分別傳送給原來發(fā)出訪存指令的那些處理器核。
9.如權(quán)利要求1所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,在處理器與存儲(chǔ)器外圍增加一個(gè)存儲(chǔ)管理器,其功能是建立隊(duì)列,記錄從處理器不同引腳組發(fā)出的訪存指令,并負(fù)責(zé)按正確時(shí)序向不同存儲(chǔ)器顆粒分別發(fā)出地址;處理器在地址周期從所有共用引腳發(fā)出包含地址信息的訪存請(qǐng)求;不再需要統(tǒng)一的地址總線,所有地址信息一律從數(shù)據(jù)與地址共用的引腳發(fā)出。
10.如權(quán)利要求9所述的數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法,其特征是,實(shí)施方案如下: (I)處理器內(nèi)部存控設(shè)計(jì): a)訪存指令隊(duì)列:訪存指令隊(duì)列統(tǒng)一組織各種不同寬度的訪存指令;每個(gè)存儲(chǔ)器顆粒對(duì)應(yīng)一個(gè)隊(duì)列;訪存指令被分別記錄在所有涉及到的存儲(chǔ)器顆粒的隊(duì)列中; b)拼接方法:拼接方法采取貪心法,從各個(gè)隊(duì)列首部找到第一個(gè)涉及該存儲(chǔ)器顆粒的訪存,將所有這樣的訪存指令拼接成一個(gè)組合訪存指令;如果兩個(gè)訪存指令有重疊,則截?cái)嗪竺娴脑L存,將其重疊部分留在隊(duì)列中,這樣該組合訪存指令只需要發(fā)出一組包含地址信息的訪存請(qǐng)求,其中地址信息個(gè)數(shù)與包含的訪存?zhèn)€數(shù)相同; C)訪存請(qǐng)求定義:一個(gè)訪存請(qǐng)求應(yīng)當(dāng)包含地址信息、訪存寬度以及標(biāo)識(shí)讀寫的信息; (2)時(shí)序: 集中發(fā)出多個(gè)地址周期將一批訪存請(qǐng)求從處理器經(jīng)共用引腳發(fā)往存儲(chǔ)管理器,這樣地址周期就不再穿插于正常數(shù)據(jù)傳輸,而是等待一批數(shù)據(jù)傳出結(jié)束以后再集中進(jìn)行; (3)存儲(chǔ)管理器的外圍電路: 所有的DA BUS通過數(shù)據(jù)多選器選擇與存儲(chǔ)器顆粒的數(shù)據(jù)引腳連通還是與存儲(chǔ)管理器的輸入引腳連通,存儲(chǔ)管理器的輸出引腳分別與每個(gè)存儲(chǔ)器顆粒的地址總線相連;在地址周期,選擇信號(hào)D_SEL將DA BUS與存儲(chǔ)管理器的輸入引腳接通,處理器向存儲(chǔ)管理器發(fā)送一批組合訪存請(qǐng)求緩存于存儲(chǔ)管理器;在訪存請(qǐng)求發(fā)送完畢后,存儲(chǔ)管理器嚴(yán)格按照存儲(chǔ)器顆粒的地址時(shí)序?qū)⒚總€(gè)訪存請(qǐng)求的地址發(fā)送至相應(yīng)的存儲(chǔ)器顆粒;對(duì)于中等粒度的訪存請(qǐng)求,存儲(chǔ)管理器向每個(gè)需要響應(yīng)的存儲(chǔ)器顆粒都發(fā)出相同的地址; (4)返回?cái)?shù)據(jù)由存儲(chǔ)控制器正確分離并返回: 對(duì)于完整的訪存請(qǐng)求,存儲(chǔ)控制器將返回的數(shù)據(jù)發(fā)送給發(fā)出請(qǐng)求的處理器核;對(duì)于被截?cái)嗟脑L存請(qǐng)求,存儲(chǔ)控制器將已執(zhí)行部分返回的數(shù)據(jù)進(jìn)行緩存,等待剩余的部分全部執(zhí)行完成并返回?cái)?shù)據(jù) 后,由存儲(chǔ)控制器將其拼接成完整的返回?cái)?shù)據(jù),再發(fā)送給發(fā)起該訪存請(qǐng)求的處理器核; (5)本方案也可以根據(jù)需要設(shè)計(jì)混合周期: 在某些周期中一部分存儲(chǔ)器顆粒對(duì)應(yīng)的共用引腳組進(jìn)行數(shù)據(jù)傳輸而其余的共用引腳組傳輸?shù)刂沸畔ⅰ?br>
全文摘要
本發(fā)明提供了一種多核處理器中數(shù)據(jù)與地址共用引腳自適應(yīng)調(diào)整訪存粒度的方法。包括采用數(shù)據(jù)與地址共用處理器芯片引腳的方式;處理器根據(jù)并行線程發(fā)出的訪存指令調(diào)節(jié)程序運(yùn)行期間數(shù)據(jù)信息傳輸與地址信息傳輸?shù)谋壤?,使得運(yùn)行時(shí)程序發(fā)出粗粒度訪存為主的情形下自動(dòng)減少地址信息傳輸,在細(xì)粒度訪存為主的情形下自動(dòng)增加地址信息,達(dá)到自適應(yīng)動(dòng)態(tài)調(diào)節(jié)的作用。本發(fā)明所述的方法,能夠根據(jù)程序行為自適應(yīng)改變處理器芯片引腳功能的訪存,可以簡化編程,提高訪存帶寬利用率,解決了任務(wù)處理類程序訪存發(fā)散,訪存帶寬利用率低的問題,具有良好的應(yīng)用前景。
文檔編號(hào)G06F13/16GK103246625SQ20131019702
公開日2013年8月14日 申請(qǐng)日期2013年5月24日 優(yōu)先權(quán)日2013年5月24日
發(fā)明者陳一峯, 崔偉龍, 崔翔 申請(qǐng)人:北京大學(xué)