摘要:針對(duì)目前交換機(jī)的輸入緩沖區(qū)讀延遲增大導(dǎo)致交叉開關(guān)吞吐率下降的問題,提出了多VC共享預(yù)取結(jié)構(gòu)SPB,用于隱藏?cái)?shù)據(jù)緩沖區(qū)SRAM的讀延遲.設(shè)計(jì)了旁路寫入控制、讀寫地址管理、預(yù)取管理等關(guān)鍵功能,用Verilog語(yǔ)言實(shí)現(xiàn)了SPB結(jié)構(gòu),通過模擬器測(cè)試了SPB結(jié)構(gòu)的讀寫性能.模擬和分析結(jié)果表明,采用SPB結(jié)構(gòu)的輸入緩沖區(qū)能夠降低讀寫延遲,提高輸入緩沖區(qū)的寫入和讀出吞吐率.SPB結(jié)構(gòu)能夠被方便地應(yīng)用于靜態(tài)分配多隊(duì)列或動(dòng)態(tài)分配多隊(duì)列緩沖區(qū)中,加快緩沖區(qū)的讀寫速度,從而提高整個(gè)交換機(jī)的吞吐率.
關(guān)鍵詞:交換機(jī);緩沖電路;訪問控制
中圖分類號(hào):TP338 文獻(xiàn)標(biāo)識(shí)碼:A
A Multi-VC Shared Prefetch Structure for Input-buffered Switch
ZHANG He-ying, WANG Ke-fei, LIU Lu, XIAO Li-quan
(College of Computer, National Univ of Defense Technology, Changsha, Hunan 410073, China)
Abstract: At present, the read latency of input buffer in switch is increasing, which greatly decreases the throughput of crossbar. To address this issue, a multi-VC shared prefetch structure was proposed in order to hide the read latency of data buffer implemented by SRAM with registered output. Some critical functions of SPB were designed, such as bypass write control, the management of write and read address, prefetch control, etc. Moreover, the SPB structure was implemented in Verilog and its performance was tested by cycle accurate simulator. The simulation results and analysis show that input buffer with SPB structure will not only decrease the read and write latency but also increase the throughput of the input buffer. The SPB structure proposed can be used in combination with either SAMQ or DAMQ buffer to speed up the read and write operation of the buffer, and further improve the throughput of the whole switch.
Key words: switches; buffer circuits; access control
高速互連網(wǎng)絡(luò)是超級(jí)計(jì)算機(jī)中的關(guān)鍵部件之一,在很大程度上決定了超級(jí)計(jì)算機(jī)的通信性能和整機(jī)性能.交換機(jī)是高速互連網(wǎng)絡(luò)的主要組成部分,其交換結(jié)構(gòu)、緩沖區(qū)管理、微體系結(jié)構(gòu)等關(guān)鍵技術(shù)一直是研究的熱點(diǎn)[1-5].根據(jù)緩沖區(qū)的位置可以將交換機(jī)劃分為:輸入緩沖交換機(jī)、輸出緩沖交換機(jī)、交叉點(diǎn)緩沖交換機(jī)等[6].其中輸入緩沖交換機(jī)無需交叉開關(guān)加速,容易實(shí)現(xiàn),是目前高速互連網(wǎng)絡(luò)交換機(jī)的常用結(jié)構(gòu).
在高速互連網(wǎng)絡(luò)中,為了提高鏈路的利用率,單根物理鏈路通常被多個(gè)虛信道(Virtual Channel,簡(jiǎn)稱VC)共享[7].相應(yīng)地,輸入緩沖區(qū)需要接收多個(gè)VC的數(shù)據(jù),并分別存放,這種緩沖區(qū)稱為多VC共享緩沖區(qū).根據(jù)實(shí)現(xiàn)方式,可以將多VC共享緩沖區(qū)分為靜態(tài)多VC共享緩沖區(qū)和動(dòng)態(tài)多VC共享緩沖區(qū)[8].靜態(tài)多VC共享緩沖區(qū)也稱為靜態(tài)分配多隊(duì)列SAMQ(Statically Allocated Multi-Queue),為每個(gè)VC分配獨(dú)立的緩沖區(qū)空間,每個(gè)VC只能使用固定位置、確定數(shù)量的緩沖空間.動(dòng)態(tài)多VC共享緩沖區(qū)的典型代表是動(dòng)態(tài)分配多隊(duì)列DAMQ(Dynamically Allocated Multi-Queue),所有共享緩沖區(qū)的VC的數(shù)據(jù)在緩沖區(qū)中隨機(jī)存放,每個(gè)VC占用的空間可以根據(jù)需要?jiǎng)討B(tài)變化,只要緩沖區(qū)中有空閑空間,理論上任何一個(gè)VC都可以申請(qǐng)占用,除非出于緩沖區(qū)分配的公平性考慮,限制某些VC占用過多的緩沖區(qū)空間[9].動(dòng)態(tài)多VC共享緩沖區(qū)相比于靜態(tài)多VC共享緩沖區(qū)能夠有效提高緩沖區(qū)利用率,但是實(shí)現(xiàn)復(fù)雜.隨著采用瓦片結(jié)構(gòu)的大規(guī)模交叉開關(guān)的普及[3,10],交換芯片內(nèi)部需要的存儲(chǔ)資源極大地增加,導(dǎo)致芯片面積開銷急劇增大.為了減少緩沖區(qū)占用的面積資源,DAMQ結(jié)構(gòu)被用于構(gòu)建大規(guī)模交叉開關(guān)的輸入緩沖區(qū)和行列緩沖區(qū).
在輸入緩沖交換機(jī)的緩沖區(qū)實(shí)現(xiàn)中,無論是靜態(tài)多VC共享緩沖區(qū)還是動(dòng)態(tài)多VC共享緩沖區(qū),一般都采用標(biāo)準(zhǔn)SRAM(Static Random Access Memory)存儲(chǔ)器來實(shí)現(xiàn).隨著工作頻率的提高,為了保證讀出數(shù)據(jù)的穩(wěn)定可靠,SRAM的讀時(shí)序發(fā)生了重大變化.工作頻率低于700 MHz的SRAM讀延遲通常為1個(gè)時(shí)鐘周期,工作頻率大于700 MHz的SRAM讀延遲普遍增加為2個(gè)時(shí)鐘周期.這種SRAM一般被稱為寄存型SRAM,增加的延遲是由于將輸出的數(shù)據(jù)在SRAM內(nèi)部寄存一拍(時(shí)鐘周期也稱為拍)才輸出而導(dǎo)致的.僅僅1個(gè)時(shí)鐘周期的延遲,對(duì)于交換機(jī)調(diào)度性能的影響非常大.在交換機(jī)輸入端口輸入的數(shù)據(jù)量比較大的情況下,從輸入緩沖區(qū)中連續(xù)讀出數(shù)據(jù)可以隱藏單個(gè)數(shù)據(jù)的讀出延遲.但是,當(dāng)交換機(jī)的輸入端口輸入的數(shù)據(jù)量比較小,讀出數(shù)據(jù)非連續(xù)時(shí),單個(gè)數(shù)據(jù)的讀出延遲無法隱藏,導(dǎo)致交換機(jī)吞吐率下降,數(shù)據(jù)轉(zhuǎn)發(fā)延遲增加.為了提高交換機(jī)的吞吐率,需要隱藏輸入緩沖區(qū)的讀出延遲,最理想的讀出時(shí)序是在讀請(qǐng)求輸入的同一時(shí)鐘周期讀出數(shù)據(jù).
文獻(xiàn)[8]采用預(yù)取方法隱藏緩沖區(qū)的讀出延遲,用寄存器組為每個(gè)VC構(gòu)造獨(dú)立的預(yù)取緩沖區(qū),將數(shù)據(jù)提前從共享數(shù)據(jù)緩沖區(qū)讀出,保存到預(yù)取緩沖區(qū).當(dāng)交換機(jī)的端口數(shù)比較多,或者VC數(shù)量比較多的情況下,寄存器組占用的存儲(chǔ)空間比較大,而且不方便芯片設(shè)計(jì)的后端布局布線.為此,本文提出一種基于標(biāo)準(zhǔn)存儲(chǔ)單元RA(寄存器陣列Register Array)的多VC共享預(yù)取結(jié)構(gòu)用于隱藏緩沖區(qū)讀出延遲,同時(shí)減少面積資源開銷.采用本文提出的預(yù)取結(jié)構(gòu),可以保證交換機(jī)的輸入緩沖區(qū)具有零延遲的讀寫性能,從而提高輸入緩沖交換機(jī)的吞吐率.
1 多VC共享預(yù)取結(jié)構(gòu)
輸入緩沖交換機(jī)主要包括輸入端口、輸入緩沖區(qū)、仲裁器、輸出端口等.目前,出于節(jié)約成本和IP(Intellectual property)資源可獲得性考慮,高速互連網(wǎng)絡(luò)交換機(jī)的輸入緩沖區(qū)主要采用SRAM來實(shí)現(xiàn).輸入緩沖區(qū)的深度是物理鏈路傳輸帶寬與點(diǎn)到點(diǎn)往返傳輸延遲之積,寬度是網(wǎng)絡(luò)中傳輸?shù)淖钚?shù)據(jù)單元,例如報(bào)文微片flit.隨著芯片工作頻率的提高,為了保證從SRAM中讀出數(shù)據(jù)的信號(hào)完整性和驅(qū)動(dòng)能力,SRAM將讀出數(shù)據(jù)寄存輸出,導(dǎo)致讀延遲增大.工作頻率大于700 MHz的SRAM讀延遲為2個(gè)時(shí)鐘周期,即第一個(gè)時(shí)鐘周期收到讀請(qǐng)求和讀地址,第三個(gè)時(shí)鐘周期輸出數(shù)據(jù).增加的讀延遲對(duì)交換機(jī)交叉開關(guān)的設(shè)計(jì)產(chǎn)生了較大的影響,需要屏蔽增加的讀延遲,才能夠保證交叉開關(guān)的吞吐率.
為此,本文提出了用快速多端口存儲(chǔ)器RA構(gòu)建預(yù)取緩沖區(qū)以屏蔽SRAM讀延遲的輸入緩沖區(qū)結(jié)構(gòu),稱為SPB(Shared Prefetch Buffer).RA能夠在讀請(qǐng)求有效的當(dāng)拍輸出數(shù)據(jù),但是容量一般比SRAM小,適合用于保存少量數(shù)據(jù)、要求讀寫延遲比較低的場(chǎng)合.為了隱藏2個(gè)時(shí)鐘周期的SRAM讀延遲,每個(gè)VC在RA中至少需要占用3個(gè)存儲(chǔ)單元.為了避免計(jì)算地址時(shí)的加法運(yùn)算,在預(yù)取緩沖區(qū)RA中為每個(gè)VC分配4個(gè)固定位置的存儲(chǔ)單元.不失一般性,假設(shè)n個(gè)VC共享同一個(gè)物理鏈路,n一般為大于1的自然數(shù).輸入緩沖區(qū)需要保存n個(gè)VC的數(shù)據(jù),預(yù)取緩沖區(qū)RA的深度為4n,寬度與數(shù)據(jù)緩沖區(qū)SRAM相同.在預(yù)取緩沖區(qū)RA中分配給每個(gè)VC的存儲(chǔ)空間地址見表1.
1.1 帶SPB結(jié)構(gòu)的輸入緩沖區(qū)總體結(jié)構(gòu)
帶有多VC共享預(yù)取結(jié)構(gòu)SPB的輸入緩沖區(qū)總體結(jié)構(gòu)如圖1所示,主要包括數(shù)據(jù)緩沖區(qū)SRAM,SRAM讀寫地址管理模塊,預(yù)取緩沖區(qū)RA,RA旁路寫入及讀寫地址管理模塊等.數(shù)據(jù)緩沖區(qū)SRAM用于保存從交換機(jī)輸入端口的物理鏈路上輸入的多個(gè)VC的數(shù)據(jù),每個(gè)VC的數(shù)據(jù)按照FIFO(First-In First-Out)方式組織;SRAM讀寫地址管理模塊根據(jù)對(duì)SRAM的讀寫請(qǐng)求,生成讀寫SRAM的讀地址和寫地址;預(yù)取緩沖區(qū)RA用于保存提前從SRAM中讀出的數(shù)據(jù),由于RA需要能夠同時(shí)接收從SRAM讀出的數(shù)據(jù)和旁路寫入的數(shù)據(jù),因此選擇具有兩個(gè)寫端口和一個(gè)讀端口的RA作為預(yù)取緩沖區(qū),每個(gè)VC的數(shù)據(jù)在預(yù)取緩沖區(qū)中也以FIFO方式組織.RA旁路寫入及讀寫地址管理模塊主要實(shí)現(xiàn)如下功能:1)根據(jù)數(shù)據(jù)寫入請(qǐng)求和數(shù)據(jù)讀出請(qǐng)求,計(jì)算每個(gè)VC在SRAM中保存的數(shù)據(jù)數(shù)量;2)根據(jù)每個(gè)VC在SRAM和RA中保存的數(shù)據(jù)數(shù)量,決定將輸入端口寫入的數(shù)據(jù)直接保存到預(yù)取緩沖區(qū)RA中還是寫入到SRAM中,分別生成RA旁路寫入請(qǐng)求和SRAM寫入請(qǐng)求;3)根據(jù)接收到的數(shù)據(jù)讀出請(qǐng)求和每個(gè)VC在SRAM中保存數(shù)據(jù)的計(jì)數(shù)值,生成SRAM讀請(qǐng)求;4)根據(jù)每個(gè)VC對(duì)RA的占用情況,生成預(yù)取緩沖區(qū)RA的兩個(gè)寫地址和一個(gè)讀地址,其中從SRAM讀出的數(shù)據(jù)通過寫端口1保存到RA中,旁路寫入的數(shù)據(jù)通過寫端口2保存到RA中.
SRAM讀寫地址管理模塊的具體實(shí)現(xiàn)與采用靜態(tài)方式或動(dòng)態(tài)方式在VC之間分配數(shù)據(jù)緩沖區(qū)有關(guān),文獻(xiàn)[8]給出了采用動(dòng)態(tài)方式分配數(shù)據(jù)緩沖區(qū)的詳細(xì)實(shí)現(xiàn)細(xì)節(jié).采用靜態(tài)方式分配數(shù)據(jù)緩沖區(qū)的實(shí)現(xiàn)比較簡(jiǎn)單,一般是將數(shù)據(jù)緩沖區(qū)平均分配給n個(gè)VC,每個(gè)VC的數(shù)據(jù)存放在固定的存儲(chǔ)區(qū)域,按照FIFO方式組織.SRAM讀寫地址管理模塊分別根據(jù)對(duì)數(shù)據(jù)緩沖區(qū)的讀請(qǐng)求和寫請(qǐng)求遞增讀地址和寫地址.該模塊的具體實(shí)現(xiàn)不是本文的研究重點(diǎn),在此不再贅述,本文主要研究RA旁路寫入及讀寫地址管理模塊的詳細(xì)實(shí)現(xiàn).
1.2 SPB預(yù)取緩沖區(qū)讀寫管理
預(yù)取緩沖區(qū)讀寫管理集中在RA旁路寫入及讀寫地址管理模塊,主要根據(jù)接收到的數(shù)據(jù)寫入請(qǐng)求決定將數(shù)據(jù)寫入SRAM還是RA,以及寫入到RA中的位置;根據(jù)接收到的數(shù)據(jù)讀出請(qǐng)求決定從RA的哪個(gè)位置輸出數(shù)據(jù).每個(gè)VC具有獨(dú)立的RA旁路寫入及讀寫地址管理模塊,相互之間的連接關(guān)系如圖2所示.RA旁路寫入及讀寫地址管理模塊的輸入信號(hào)包括數(shù)據(jù)寫入請(qǐng)求、數(shù)據(jù)讀出請(qǐng)求、SRAM讀響應(yīng),輸出信號(hào)包括RA旁路寫入請(qǐng)求、RA寫地址1、RA寫地址2、RA讀地址、SRAM讀請(qǐng)求、SRAM寫入請(qǐng)求等.
每個(gè)VC的RA旁路寫入及讀寫地址管理模塊從交換機(jī)的輸入端口接收數(shù)據(jù)寫入請(qǐng)求,從交換機(jī)的交叉開關(guān)仲裁器接收數(shù)據(jù)讀出請(qǐng)求,從數(shù)據(jù)緩沖區(qū)SRAM接收SRAM讀響應(yīng);生成SRAM寫入請(qǐng)
求和SRAM讀請(qǐng)求發(fā)送到SRAM讀寫地址管理模塊及數(shù)據(jù)緩沖區(qū)SRAM中;生成RA旁路寫入請(qǐng)求發(fā)送到預(yù)取緩沖區(qū)RA,每個(gè)時(shí)鐘周期最多有一個(gè)VC的RA旁路寫入請(qǐng)求有效,n個(gè)VC的RA旁路寫入請(qǐng)求中只要有一個(gè)有效,即在預(yù)取緩沖區(qū)RA的寫端口2生成寫請(qǐng)求;當(dāng)SRAM讀響應(yīng)有效時(shí),生成寫請(qǐng)求發(fā)送到預(yù)取緩沖區(qū)RA的寫端口1;根據(jù)預(yù)取緩沖區(qū)RA的寫端口1的寫入請(qǐng)求,在n個(gè)VC的RA寫地址1中進(jìn)行多路選擇,寫入請(qǐng)求有效的VC的RA寫地址1將被選中作為RA的寫端口1的寫地址,從SRAM中預(yù)取的數(shù)據(jù)將被保存到預(yù)取緩沖區(qū)的寫地址1指向的位置.類似地,根據(jù)預(yù)取緩沖區(qū)RA的寫端口2的寫入請(qǐng)求,在n個(gè)VC的RA寫地址2中進(jìn)行多路選擇,寫入請(qǐng)求有效的VC的RA寫地址2將被選中作為RA的寫端口2的寫地址,旁路寫入的數(shù)據(jù)將被寫入到預(yù)取寄存器RA的寫地址2指向的位置.
RA旁路寫入及讀寫地址管理模塊根據(jù)數(shù)據(jù)讀出請(qǐng)求,生成對(duì)RA的讀請(qǐng)求,每個(gè)時(shí)鐘周期最多有一個(gè)VC的數(shù)據(jù)讀出請(qǐng)求有效,只要有VC的數(shù)據(jù)讀出請(qǐng)求有效即生成對(duì)預(yù)取緩沖區(qū)RA的讀請(qǐng)求;根據(jù)數(shù)據(jù)讀出請(qǐng)求,從n個(gè)VC的RA讀地址中進(jìn)行多路選擇,數(shù)據(jù)讀出請(qǐng)求有效的VC的RA讀地址被選中作為預(yù)取緩沖區(qū)RA的讀地址.從讀地址輸出的數(shù)據(jù)將被發(fā)送到交換機(jī)的交叉開關(guān)仲裁器,通過交叉開關(guān)轉(zhuǎn)發(fā)到輸出端口.
1.3 RA旁路寫入及讀寫地址管理
每個(gè)VC的RA旁路寫入及讀寫地址管理模塊的結(jié)構(gòu)均相同,如圖3所示.主要包括RA旁路寫入管理模塊、SRAM數(shù)據(jù)計(jì)數(shù)模塊、SRAM讀請(qǐng)求生成模塊、RA讀地址管理模塊、SRAM讀響應(yīng)寫入管理模塊等.
1.3.1 RA旁路寫入管理模塊
RA旁路寫入管理模塊接收數(shù)據(jù)寫入請(qǐng)求,生成RA旁路寫入請(qǐng)求和RA寫地址2,或者生成SRAM寫入請(qǐng)求.RA寫地址2是預(yù)取緩沖區(qū)RA的第2寫端口的寫地址.
每個(gè)VC在預(yù)取緩沖區(qū)RA中占用4個(gè)存儲(chǔ)空間,為了記錄每個(gè)存儲(chǔ)空間是否保存了有效數(shù)據(jù),為每個(gè)存儲(chǔ)空間設(shè)置狀態(tài)變量.該狀態(tài)變量有3種取值,分別為:
0:沒有保存數(shù)據(jù),也沒有請(qǐng)求從數(shù)據(jù)緩沖區(qū)SRAM中讀數(shù)據(jù);
1:沒有保存數(shù)據(jù),但是已經(jīng)請(qǐng)求從數(shù)據(jù)緩沖區(qū)SRAM中讀數(shù)據(jù);
2:保存了有效數(shù)據(jù).
輸入緩沖區(qū)電路復(fù)位時(shí),預(yù)取緩沖區(qū)RA中分配給每個(gè)VC的4個(gè)存儲(chǔ)單元的狀態(tài)被設(shè)置為0.收到VC的數(shù)據(jù)寫入請(qǐng)求時(shí),根據(jù)該VC在SRAM中保存的數(shù)據(jù)的計(jì)數(shù)值和預(yù)取緩沖區(qū)4個(gè)存儲(chǔ)單元的狀態(tài)決定是否可以將輸入端口輸入的數(shù)據(jù)旁路寫入到預(yù)取緩沖區(qū).具體判斷方法如下:若該VC在SRAM中保存的數(shù)據(jù)的計(jì)數(shù)值為0,而且預(yù)取緩沖區(qū)4個(gè)存儲(chǔ)單元中至少有一個(gè)的狀態(tài)為0,則生成RA旁路寫入請(qǐng)求;否則,生成SRAM寫入請(qǐng)求.如果預(yù)取緩沖區(qū)的4個(gè)存儲(chǔ)單元中僅有一個(gè)狀態(tài)為0,將該存儲(chǔ)單元的地址作為RA寫地址2,發(fā)送到預(yù)取緩沖區(qū)RA的寫端口2,將該存儲(chǔ)單元的狀態(tài)改為2;否則,若預(yù)取緩沖區(qū)的4個(gè)存儲(chǔ)單元中有多個(gè)狀態(tài)為0,需要將旁路寫入的數(shù)據(jù)保存到最早進(jìn)入0狀態(tài)的存儲(chǔ)單元,以保持?jǐn)?shù)據(jù)寫入的順序.為此,需要標(biāo)識(shí)最早進(jìn)入狀態(tài)0的存儲(chǔ)單元,本文采用基于順序號(hào)的識(shí)別方法.根據(jù)進(jìn)入狀態(tài)0的順序,為4個(gè)存儲(chǔ)單元分配順序號(hào),編號(hào)為1到4.相應(yīng)地,為每個(gè)旁路寫入請(qǐng)求按照到達(dá)順序分配順序號(hào),編號(hào)也為1到4.兩個(gè)順序號(hào)匹配的存儲(chǔ)單元被選擇用于存儲(chǔ)當(dāng)前旁路寫入的數(shù)據(jù),將其地址作為寫地址2,發(fā)送到預(yù)取寄存器RA的寫端口2.兩個(gè)順序號(hào)被循環(huán)使用.匹配順序號(hào)的寫入方式能夠保證旁路寫入的數(shù)據(jù)以FIFO方式被保存在預(yù)取寄存器中.
1.3.2 SRAM數(shù)據(jù)計(jì)數(shù)模塊
SRAM數(shù)據(jù)計(jì)數(shù)模塊負(fù)責(zé)生成每個(gè)VC保存在SRAM中的數(shù)據(jù)的總數(shù),實(shí)現(xiàn)方法比較簡(jiǎn)單.輸入緩沖區(qū)復(fù)位時(shí),將計(jì)數(shù)值初始化為0;接收到SRAM寫入請(qǐng)求時(shí),對(duì)計(jì)數(shù)值加1;接收到SRAM讀請(qǐng)求時(shí),對(duì)計(jì)數(shù)值減1;同時(shí)接收到這兩個(gè)信號(hào),計(jì)數(shù)值保持不變.將生成的計(jì)數(shù)值發(fā)送到RA旁路寫入管理模塊和SRAM讀請(qǐng)求生成模塊,作為相關(guān)判斷依據(jù).
1.3.3 SRAM讀請(qǐng)求生成模塊
SRAM讀請(qǐng)求生成模塊接收到數(shù)據(jù)讀出請(qǐng)求時(shí),如果該VC在SRAM中的數(shù)據(jù)計(jì)數(shù)值大于0,表明該VC有數(shù)據(jù)保存在SRAM中,交叉開關(guān)仲裁器從預(yù)取緩沖區(qū)讀出數(shù)據(jù)的同時(shí),SRAM讀請(qǐng)求生成模塊生成對(duì)SRAM的讀請(qǐng)求.這樣可以保證預(yù)取緩沖區(qū)有數(shù)據(jù)被讀出時(shí),能夠及時(shí)從數(shù)據(jù)緩沖區(qū)SRAM中讀出數(shù)據(jù),提前保存到預(yù)取緩沖區(qū)RA中.此外,由于交叉開關(guān)仲裁器發(fā)出的數(shù)據(jù)讀出請(qǐng)求在每個(gè)時(shí)鐘周期最多對(duì)一個(gè)VC有效,由該讀請(qǐng)求觸發(fā)對(duì)SRAM的讀請(qǐng)求,可以保證每個(gè)時(shí)鐘周期最多有一個(gè)VC將會(huì)發(fā)出SRAM讀請(qǐng)求,避免了多個(gè)VC同時(shí)讀SRAM的情況的發(fā)生.
1.3.4 RA讀地址管理模塊
RA讀地址管理模塊負(fù)責(zé)生成預(yù)取緩沖區(qū)RA的讀地址.當(dāng)輸入緩沖區(qū)電路復(fù)位時(shí),RA讀地址被初始化為0;接收到數(shù)據(jù)讀出請(qǐng)求時(shí),RA讀地址加1,當(dāng)RA讀地址為3時(shí),加1后變?yōu)?.將RA讀地址發(fā)送到預(yù)取緩沖區(qū)RA的讀端口,當(dāng)數(shù)據(jù)讀出請(qǐng)求有效時(shí),從RA讀地址指向的存儲(chǔ)單元輸出數(shù)據(jù),發(fā)送到交叉開關(guān)的輸出端口.此時(shí),如果該VC在SRAM中保存的數(shù)據(jù)數(shù)量大于0,將RA讀地址指向的存儲(chǔ)單元的狀態(tài)改為1,表明該存儲(chǔ)單元請(qǐng)求從SRAM讀出數(shù)據(jù);否則,將RA讀地址指向的存儲(chǔ)單元的狀態(tài)改為0,并分配順序號(hào),表明該存儲(chǔ)單元可以接收相同順序號(hào)的旁路數(shù)據(jù).
1.3.5 SRAM讀響應(yīng)寫入管理模塊
從數(shù)據(jù)緩沖區(qū)SRAM中讀出的數(shù)據(jù)將被保存到預(yù)取緩沖區(qū)RA中,等待交叉開關(guān)仲裁器讀取.SRAM讀響應(yīng)中包含數(shù)據(jù)有效信號(hào)和從SRAM中讀出的數(shù)據(jù).當(dāng)SRAM讀響應(yīng)有效時(shí),預(yù)取緩沖區(qū)的4個(gè)存儲(chǔ)單元中至少有一個(gè)存儲(chǔ)單元可以接收SRAM讀響應(yīng)中攜帶的數(shù)據(jù).若僅有一個(gè)存儲(chǔ)單元可以接收,則將該存儲(chǔ)單元的地址作為預(yù)取緩沖區(qū)寫端口1的寫地址,即RA寫地址1,發(fā)送到預(yù)取緩沖區(qū)RA的寫端口1.相應(yīng)地,SRAM讀響應(yīng)的數(shù)據(jù)被保存到RA寫地址1指向的存儲(chǔ)單元中,將該存儲(chǔ)單元的狀態(tài)從1更新為2.如果有兩個(gè)或兩個(gè)以上的存儲(chǔ)單元可以接收SRAM讀響應(yīng)的數(shù)據(jù),需要將數(shù)據(jù)保存到最早變?yōu)榭梢越邮誗RAM讀響應(yīng)的存儲(chǔ)單元.仍然采用順序號(hào)來區(qū)別狀態(tài)都為1的存儲(chǔ)單元.順序號(hào)的取值范圍為1到4,當(dāng)有存儲(chǔ)單元狀態(tài)變?yōu)?時(shí),將當(dāng)前的順序號(hào)分配給該存儲(chǔ)單元,將順序號(hào)加1;當(dāng)順序號(hào)等于4時(shí),加1后變?yōu)?,達(dá)到循環(huán)使用的目的.同時(shí),對(duì)SRAM讀響應(yīng)也進(jìn)行編號(hào),編號(hào)范圍為1~4,當(dāng)SRAM讀響應(yīng)有效時(shí),讀響應(yīng)攜帶的數(shù)據(jù)將被保存到相同順序號(hào)的狀態(tài)為1的存儲(chǔ)單元中,將該存儲(chǔ)單元的狀態(tài)從1更新為2;同時(shí),編號(hào)加1,當(dāng)編號(hào)為4時(shí),加1后變?yōu)?.匹配順序號(hào)的寫入方式能夠保證從SRAM讀出的數(shù)據(jù)以FIFO方式被保存在預(yù)取緩沖區(qū)中.
采用上述預(yù)取緩沖區(qū)讀寫管理實(shí)現(xiàn)了寫入數(shù)據(jù)的旁路寫入和SRAM寫入,數(shù)據(jù)從預(yù)取緩沖區(qū)讀出,并對(duì)數(shù)據(jù)緩沖區(qū)SRAM中的數(shù)據(jù)進(jìn)行預(yù)取,以屏蔽讀出延遲.下面,將對(duì)上述SPB結(jié)構(gòu)進(jìn)行實(shí)現(xiàn)和測(cè)試,證明其實(shí)現(xiàn)了快速讀寫的性能.
2 性能測(cè)試與分析
我們用Verilog硬件描述語(yǔ)言實(shí)現(xiàn)了本文提出的SPB預(yù)取結(jié)構(gòu),SRAM的管理采用文獻(xiàn)[8]提出的DAMQ結(jié)構(gòu),6個(gè)VC共享輸入緩沖區(qū)和預(yù)取緩沖區(qū),采用模擬器對(duì)讀寫性能進(jìn)行了模擬測(cè)試.文獻(xiàn)[8]提出的DAMQ-PF緩沖區(qū)管理機(jī)制采用寄存器組構(gòu)建預(yù)取緩沖區(qū)并設(shè)計(jì)了相應(yīng)的預(yù)取緩沖區(qū)管理方法,采用本文提出的SPB結(jié)構(gòu)作為預(yù)取緩沖區(qū)的緩沖區(qū)管理機(jī)制被稱為DAMQ-SPB.通過比較DAMQ,DAMQ-PF和DAMQ-SPB的性能,發(fā)現(xiàn)DAMQ-SPB的讀寫延遲、吞吐率均與DAMQ-PF相當(dāng),讀寫延遲低于DAMQ,吞吐率高于DAMQ.
2.1 訪問延遲
輸入緩沖區(qū)的訪問延遲包括數(shù)據(jù)寫入延遲和數(shù)據(jù)讀出延遲.傳統(tǒng)DAMQ的寫入延遲為3個(gè)時(shí)鐘周期,讀出延遲也為3個(gè)時(shí)鐘周期[9].如果采用增加了讀延遲的寄存型SRAM,傳統(tǒng)DAMQ的讀延遲將會(huì)大于3個(gè)時(shí)鐘周期.由于采用預(yù)取緩沖區(qū)屏蔽SRAM的讀延遲和空閑地址隊(duì)列的讀延遲,DAMQ-PF實(shí)現(xiàn)了零延遲寫入和讀出.DAMQ-SPB的寫入過程與DAMQ-PF基本相同,區(qū)別在于DAMQ-PF將旁路寫入的數(shù)據(jù)保存到寄存器組成的預(yù)取緩沖區(qū),而DAMQ-SPB將旁路寫入的數(shù)據(jù)保存到標(biāo)準(zhǔn)存儲(chǔ)單元RA組成的預(yù)取緩沖區(qū).由于DAMQ-SPB的旁路寫入時(shí)序與DAM-PF相同,因此,DAMQ-SPB能夠?qū)崿F(xiàn)零延遲寫入.與寫入過程類似,從DAMQ-SPB讀出數(shù)據(jù)時(shí),是從預(yù)取緩沖區(qū)RA中讀出,其讀延遲為0.因此,DAMQ-SPB能夠?qū)崿F(xiàn)零延遲讀出.
圖4給出了DAMQ-SPB的讀寫波形,圖中,clk為700 MHz的工作時(shí)鐘;w_en是輸入緩沖區(qū)的數(shù)據(jù)寫入請(qǐng)求,每一位對(duì)應(yīng)一個(gè)VC;w_data是218位的寫入數(shù)據(jù);vc_r_en是數(shù)據(jù)讀出請(qǐng)求,與數(shù)據(jù)寫入請(qǐng)求類似,每一位對(duì)應(yīng)一個(gè)VC;vci_r_data_reg是讀出的數(shù)據(jù),i為VC號(hào),取值范圍為0到5.從圖中可以看出,數(shù)據(jù)寫入請(qǐng)求可以連續(xù)有效,即每個(gè)時(shí)鐘周期均可以向DAMQ-SPB緩沖區(qū)寫入不同VC或者相同VC的數(shù)據(jù).數(shù)據(jù)讀出請(qǐng)求也可以連續(xù)有效,每一個(gè)時(shí)鐘周期都可以從DAMQ-SPB緩沖區(qū)讀出不同VC或相同VC的數(shù)據(jù),而且在讀請(qǐng)求有效的當(dāng)拍輸出數(shù)據(jù),表明實(shí)現(xiàn)了零延遲的數(shù)據(jù)讀出.
2.2 吞吐率
輸入緩沖區(qū)的寫入吞吐率定義為每個(gè)時(shí)鐘周期平均接收的數(shù)據(jù)數(shù)量,具體計(jì)算公式為:寫入吞吐率=寫入數(shù)據(jù)的時(shí)鐘周期總數(shù)/測(cè)試運(yùn)行的時(shí)鐘周期總數(shù).類似地,輸入緩沖區(qū)的讀出吞吐率定義為每個(gè)時(shí)鐘周期平均輸出的數(shù)據(jù)數(shù)量,具體計(jì)算公式為:讀出吞吐率=輸出數(shù)據(jù)的時(shí)鐘周期總數(shù)/測(cè)試運(yùn)行的時(shí)鐘周期總數(shù).可以看出寫入吞吐率和讀出吞吐率的變化范圍為0~1.表2給出了DAMQ,DAMQ-PF和DAMQ-SPB的最大寫入吞吐率和讀出吞吐率.最大寫入吞吐率是指只要輸入緩沖區(qū)可以接收數(shù)據(jù),就寫入數(shù)據(jù)到輸入緩沖區(qū).最大讀出吞吐率是指只要輸入緩沖區(qū)中有數(shù)據(jù),就從輸入緩沖區(qū)讀出數(shù)據(jù).
從表2可以看出,DAMQ的最大寫入吞吐率和讀出吞吐率最低,DAMQ-PF和DAMQ-SPB都能夠獲得很高的吞吐率.原因是DAMQ的寫入延遲和讀出延遲比較大,導(dǎo)致吞吐率下降.DAMQ-PF和DAMQ-SPB可以每個(gè)時(shí)鐘周期接收數(shù)據(jù),因此能夠獲得100%的寫入吞吐率.由于讀出操作受寫入操作限制,只有寫入數(shù)據(jù)到輸入緩沖區(qū)之后,才能夠從中讀出數(shù)據(jù),在相同的測(cè)試時(shí)間內(nèi)讀出數(shù)據(jù)的數(shù)量總小于寫入數(shù)據(jù)的數(shù)量,因此3種算法的讀出吞吐率略小于寫入吞吐率.如果降低寫入吞吐率,讀出吞吐率也會(huì)隨之降低,如表3所示.DAMQ-PF的測(cè)試結(jié)果與DAMQ-SPB相同,表中沒有列出.表3中的寫入吞吐率是測(cè)試激勵(lì)可以控制的,讀出吞吐率隨著寫入吞吐率或者流量注入率的改變而變化,一般會(huì)低于寫入吞吐率,二者越接近表明緩沖區(qū)讀延遲低,讀出吞吐率高.
2.3 面積
為了提高超級(jí)計(jì)算機(jī)的組裝密度,互連網(wǎng)絡(luò)交換機(jī)的端口數(shù)呈現(xiàn)不斷上升的趨勢(shì),世界知名超級(jí)計(jì)算機(jī)研制廠商已經(jīng)陸續(xù)推出了多達(dá)48個(gè)或64個(gè)端口的交換機(jī).這類多端口交換機(jī)的出現(xiàn)導(dǎo)致交換機(jī)內(nèi)部微體系結(jié)構(gòu)發(fā)生了巨大變化,目前普遍采用基于瓦片的多級(jí)交換結(jié)構(gòu).這種結(jié)構(gòu)相比于傳統(tǒng)的單級(jí)交換結(jié)構(gòu),具有結(jié)構(gòu)規(guī)整,易于后端布局布線的突出優(yōu)點(diǎn),但是對(duì)存儲(chǔ)資源的需求也急劇增加.以文獻(xiàn)[3]提出的64端口交換機(jī)為例,傳統(tǒng)的單級(jí)交換結(jié)構(gòu)最少僅需64個(gè)緩沖區(qū),而基于瓦片結(jié)構(gòu)的交換機(jī)不僅需要輸入緩沖區(qū),還需要行緩沖區(qū)和列緩沖區(qū),緩沖區(qū)的數(shù)目增加到1 088個(gè).如果采用文獻(xiàn)[8]提出的DAMQ-PF緩沖區(qū),為了隱藏讀延遲,需要的寄存器數(shù)量為1 088×6×3×Wflit,其中Wflit為一個(gè)微片的寬度,不同的網(wǎng)絡(luò)可以定義不同寬度的flit.在DAMQ-SPB的實(shí)現(xiàn)中,Wflit為218 bit.如果DAMQ-PF也采用218 bit的微片,需要的寄存器數(shù)量為4 269 312個(gè).在40 nm的芯片制造工藝下,每個(gè)寄存器的面積大約為9 μm2,寄存器占用的面積至少為38.4 mm2.這些寄存器之間還需要大量的連線,將會(huì)占用更大的面積.如果采用DAMQ-SPB結(jié)構(gòu),用RA代替寄存器構(gòu)造預(yù)取緩沖區(qū),需要的兩寫一讀、深度為18、寬度為218 bit的RA的數(shù)量為1 088個(gè),這些RA占用的面積約為1 088×42 013 μm2=45.7 mm2.為了避免計(jì)算讀寫地址時(shí)的加法運(yùn)算,在預(yù)取緩沖區(qū)中為每個(gè)VC分配4個(gè)存儲(chǔ)單元,需要采用深度為24的RA,占用的面積約為1 088×56 018 μm2=60.9 mm2,需要的寄存器數(shù)量為5 692 416個(gè),占用的面積至少為51.2 mm2.可以看出,用RA實(shí)現(xiàn)的預(yù)取緩沖區(qū)占用的面積資源稍大于寄存器實(shí)現(xiàn)的預(yù)取緩沖區(qū).但是,寄存器實(shí)現(xiàn)的預(yù)取緩沖區(qū)需要的連線資源遠(yuǎn)遠(yuǎn)大于RA實(shí)現(xiàn)的預(yù)取緩沖區(qū).而且,RA實(shí)現(xiàn)的預(yù)取緩沖區(qū)除了控制邏輯占用面積資源之外,存儲(chǔ)器本身不需要額外的連線資源,因此更易于布局布線的實(shí)現(xiàn).
3 結(jié) 論
本文針對(duì)目前采用SRAM實(shí)現(xiàn)的交換機(jī)輸入緩沖區(qū)讀延遲增大的問題,提出了一種新的多VC共享預(yù)取結(jié)構(gòu)SPB,用于隱藏?cái)?shù)據(jù)緩沖區(qū)SRAM的讀延遲.給出了旁路寫入控制、讀寫地址管理、預(yù)取管理等功能模塊的詳細(xì)實(shí)現(xiàn),利用Verilog語(yǔ)言實(shí)現(xiàn)了SPB結(jié)構(gòu),對(duì)其讀寫性能進(jìn)行了測(cè)試.測(cè)試結(jié)果表明,帶有SPB結(jié)構(gòu)的緩沖區(qū)具有低延遲、高吞吐率的讀寫性能.SPB結(jié)構(gòu)既可以與SAMQ緩沖區(qū)結(jié)合使用,也可以與DAMQ緩沖區(qū)結(jié)合使用,而且能夠方便地?cái)U(kuò)展到用于隱藏?cái)?shù)據(jù)緩沖區(qū)SRAM更大的讀出延遲,具有良好的可擴(kuò)展性和可用性.
參考文獻(xiàn)
[1] JAMALI M, KHADEMZADEH A. Improving the performance of interconnection networks using DAMQ buffer schemes[J]. IJCSNS International Journal of Computer Science and Network Security, 2009, 9(7):7-13.
[2] KODI A, SARATHY A, LOURI A. Adaptive channel buffers in on-chip interconnection networks—a power and performance analysis[J]. IEEE Transactions on Computers, 2008, 57(9): 1169-1181.
[3] KIM J, DALLY W J, TOWLES B, et al. Microarchitecture of a high-radix router[C]//Proceedings of the 32nd Annual International Symposium on Computer Architecture. New York: ACM, 2005: 420-431.
[4] SCOTT S, ABTS D, KIM J, et al. The blackwidow high-radix clos network[C]//Proceedings of the 33rd Annual International Symposium on Computer Architecture. New York: ACM, 2006:16-28.
[5] AHN J H, CHOO S, KIM J. Network within a network approach to create a scalable high-radix router microarchitecture[C]//Proceedings of 2012 IEEE 18th International Symposium on High Performance Computer Architecture (HPCA). New York: IEEE, 2012:1-12.
[6] MCKEOWN N, MEKKITTIKUL A. Achieving 100% throughput in an input-queued switch[J]. IEEE Transactions on Communications, 1999, 47(8):1260-1267.
[7] DALLY W J, TOWLES B. Principles and practices of interconnection networks[M]. San Francisco: Morgan Kaufmann Publishers, 2004.
[8] ZHANG He-ying, WANG Ke-fei, DAI Yi, et al. A multi-VC dynamically shared buffer with prefetch for network on chip[C]//Proceedings of 2012 IEEE Seventh International Conference on Networking, Architecture, and Storage. Washington, DC: IEEE Computer Society, 2012:320-327.
[9] TAMIR Y, FRAZIER G L. Dynamically-allocated multi-queue buffers for VLSI communication switches[J]. IEEE Transactions on Computers, 1992, 14(6): 725-737.
[10]VISHNU A, TEN BRUGGENCATE M, OLSON R. Evaluating the potential of cray gemini interconnect for PGAS communication runtime systems[C]//Proceedings of 2011 IEEE 19th Annual Symposium on High Performance Interconnects. Washington, DC: IEEE Computer Society, 2011:70-77.