季永康
(上海交通大學(xué),上海200240)
隨著集成電路技術(shù)的飛速發(fā)展,片上系統(tǒng)(SoC)中的功能單元越來越多,片內(nèi)功能單元之間的數(shù)據(jù)通信需求也隨之增長。片上系統(tǒng)功能單元之間的通信主要依賴于總線結(jié)構(gòu),由于各個(gè)功能單元、存儲(chǔ)設(shè)備以及I/O 設(shè)備之間的通信需求大幅度增加,現(xiàn)有的總線共享技術(shù)[1-2]不足以滿足片上高速數(shù)據(jù)傳輸?shù)男枰?,?huì)產(chǎn)生總線爭用問題,多個(gè)功能單元對總線的爭用[3]成為當(dāng)前片上高速通信研究的關(guān)鍵。目前解決片上總線爭用問題的方法主要有:采用多層總線[4-5]和設(shè)計(jì)合理的仲裁器[6-7]。
總線爭用的問題是由于任何時(shí)刻總線上只允許兩個(gè)功能單元占用總線資源引起的,因此可以采用多層總線來解決不同功能單元對總線的爭用。由于多層總線會(huì)大量占用片上布線資源,導(dǎo)致芯片面積多大,因此片上多層總線的數(shù)目不宜過多,一般以2~3 層為宜。目前的片上總線(例如AXI、AHB、APB 等)中,傳輸速率高的總線資源開銷更大,因此多層總線中一般會(huì)設(shè)置傳輸速率不同的總線,可以在滿足不同功能單元通信的同時(shí)兼顧片上資源開銷。綜上所示,本文針對傳輸速率不同的兩層總線進(jìn)行仲裁研究。
合理的總線仲裁可以在總線帶寬不變的前提下,滿足多對主從模塊在當(dāng)前時(shí)間段內(nèi)的通信需求。本文基于動(dòng)態(tài)規(guī)劃的方法和多層總線結(jié)構(gòu),設(shè)計(jì)了一種總線仲裁器,根據(jù)各個(gè)功能單元請求傳輸?shù)臄?shù)據(jù)量和不同總線的數(shù)據(jù)傳輸速率,動(dòng)態(tài)地分配各個(gè)傳輸過程所使用總線通道。為了驗(yàn)證本文提出的總線仲裁器,本文開發(fā)了一個(gè)C++的高層次仿真模型,模擬多個(gè)功能單元的數(shù)據(jù)傳輸請求在不同時(shí)刻分組向仲裁器發(fā)起傳輸請求,驗(yàn)證了該總線仲裁器對總線傳輸?shù)男阅芴嵘?/p>
在現(xiàn)有的多層總線系統(tǒng)中,不同傳輸速率的總線用于不同帶寬需求的數(shù)據(jù)傳輸,按照傳統(tǒng)的靜態(tài)總線分配方法:快速總線用于傳輸帶寬需求高的連續(xù)大批量數(shù)據(jù),慢速總線用于傳輸帶寬需求較低的控制信號(hào)。靜態(tài)總線分配方法簡單,不需要復(fù)雜的控制邏輯,但是在圖像處理或視頻處理的應(yīng)用中,非連續(xù)的、小批量的控制信號(hào)較少,而連續(xù)的、大批量的數(shù)據(jù)很多。如果僅按照上述靜態(tài)總線分配方法對總線資源進(jìn)行分配,則可能存在大量數(shù)據(jù)通過快速總線傳輸,而通過慢速總線傳輸?shù)臄?shù)據(jù)很少,在此狀態(tài)下,快速總線持續(xù)處于忙碌狀態(tài),而慢速總線幾乎處于空閑狀態(tài),浪費(fèi)了慢速總線的帶寬。為此,本文設(shè)計(jì)了一種采用動(dòng)態(tài)分配方法的仲裁機(jī)制。
圖1 動(dòng)態(tài)分配的仲裁模塊圖
如圖1 所示,在傳輸速率不同的雙層總線系統(tǒng)中,仲裁器根據(jù)當(dāng)前總線的負(fù)載狀態(tài)以及等待傳輸?shù)臄?shù)據(jù)包大小,在盡可能趨向總線負(fù)載平衡的條件下分配快慢兩種總線資源,減少總線空閑造成的帶寬浪費(fèi)。本設(shè)計(jì)把每個(gè)功能單元的一次傳輸請求作為一個(gè)數(shù)據(jù)包,數(shù)據(jù)包中的數(shù)據(jù)量是已知的。在某時(shí)刻,來自不同功能單元的傳輸請求到達(dá)仲裁器,仲裁器根據(jù)各個(gè)功能單元請求傳輸?shù)臄?shù)據(jù)量和快慢兩種總線的帶寬,分別預(yù)測出兩種總線分別完成各個(gè)傳輸請求的時(shí)間,在時(shí)間尺度上衡量總線的繁忙度,并根據(jù)下文介紹的動(dòng)態(tài)規(guī)劃的算法,找出完成所有傳輸用時(shí)最少的方案。
(1)問題抽象
假設(shè)雙層總線滿負(fù)荷工作,新到達(dá)的數(shù)據(jù)傳輸請求需要等待前面的傳輸釋放總線資源,等待時(shí)間內(nèi)可能會(huì)有新的請求到達(dá)仲裁器,仲裁器會(huì)截?cái)嗖⒈4娴却齻鬏數(shù)恼埱螅虼丝梢钥醋雒扛粢欢螘r(shí)間有n 個(gè)數(shù)據(jù)傳輸請求到達(dá)仲裁器。設(shè)快速總線的傳輸速率是慢速總線傳輸速率的k 倍,用變量t 表示傳輸時(shí)間。對所有的傳輸對應(yīng)的慢速總線傳輸時(shí)間做排序獲得集合T1,集合T1={t1,t2,t3,…,tn}中的元素按照由大到小的順序書寫;對所有的傳輸對應(yīng)的快速總線傳輸時(shí)間做排序獲得集合T2,集合T2={t1/k,t2/k,t3/k,……,tn/k}中的元素同樣按照由大到小的順序書寫。最終將問題抽象成求解完成所有傳輸最小時(shí)間。
(2)算法代入
上述求最小時(shí)間問題可以使用動(dòng)態(tài)規(guī)劃的方法求解,動(dòng)態(tài)規(guī)劃是通過拆分問題,定義問題狀態(tài)和狀態(tài)之間的關(guān)系,使問題能夠以遞推的方式去解決。上述問題中,對快慢兩種總線進(jìn)行分組,考慮到將大數(shù)據(jù)包放在快速傳輸總線上更容易減少總傳輸時(shí)間,因此可以把上述問題轉(zhuǎn)化為首先將所有元素放到從慢速組中,從中找出傳輸時(shí)間最大的元素,并將其慢速組中剔除后放入快速組中。如表1 所示,不斷重復(fù)這一過程,直到快速組和慢速組的傳輸時(shí)間相近,達(dá)到負(fù)載均衡。
表1 動(dòng)態(tài)規(guī)劃問題迭代
計(jì)算每次分組(0 ≤i ≤n)的慢速組傳輸時(shí)間Tsum1(i)和快速組傳輸時(shí)間Tsum2(i),當(dāng)首次出現(xiàn)Tsum2(i)≥Tsum1(i)時(shí),此時(shí)就是所求的最小傳輸時(shí)間分配方案。
為了驗(yàn)證本文提出的總線仲裁機(jī)制,本文開發(fā)了一個(gè)C++的高層次仿真模型,模擬多個(gè)數(shù)據(jù)傳輸請求在不同時(shí)刻分組向達(dá)仲裁器發(fā)起傳輸請求,且在同一時(shí)刻某組中可能存在多個(gè)請求。為了與靜態(tài)總線分配方案作對比,本文以靜態(tài)總線分配方案為基準(zhǔn),將待傳輸?shù)臄?shù)據(jù)分為兩類:一類是適合于快速總線的連續(xù)大批量數(shù)據(jù),稱為快速包;另一類是適合于慢速總線的小批量的數(shù)據(jù),稱為慢速總包??焖倏偩€的傳輸速率是慢速總線的3 倍,需要傳輸?shù)目傉埱蟀鼣?shù)目為data?PackNum,快速包數(shù)和慢速包數(shù)的比例為FSR,快速包的大小dataPackSize1 范圍是10000~100000,慢速包的大小dataPackSize2 范圍是500~5000。為了評估在系統(tǒng)仲裁機(jī)制的作用下,靜態(tài)分配和動(dòng)態(tài)分配完成所有傳輸?shù)臅r(shí)間對比,將動(dòng)態(tài)分配相對于靜態(tài)分配時(shí)間減少的百分比記作Opt_ratio,簡稱時(shí)間減少百分比。各變量具體定義及符號(hào)表示如表2 所示。
表2 變量
控制其他變量不變,研究總請求數(shù)據(jù)包數(shù)data?PackNum 和時(shí)間減少百分比Opt_ratio 的關(guān)系,,模擬仲裁器的工作過程,比較動(dòng)態(tài)總線分配相對于靜態(tài)總線分配節(jié)省的時(shí)間。如圖2 所示,時(shí)間減少百分比Opt_ratio,隨著總數(shù)據(jù)包數(shù)目的增長,先升高后降低,在dataPackNum 為50 左右時(shí)達(dá)到峰值,最大值為27.83%。當(dāng)dataPackNum 在40~100 范圍之間,動(dòng)態(tài)分配的仲裁器作用明顯提升,可以提升25%左右。
圖2 dataPackNum對總傳輸時(shí)間的影響
控制其他變量不變,研究快慢數(shù)據(jù)包比例FSR 和時(shí)間減少百分比Opt_ratio 的關(guān)系。圖3 顯示的是在總請求包數(shù)目為50 的條件下,快速包和慢速包之比FSR對時(shí)間減少百分比Opt_ratio 的影響。當(dāng)FSR 小于3,也就是快速包的比例較少時(shí),時(shí)間減少百分比Opt_ra?tio 在25%以下,且隨著FSR 的增長迅速提升;當(dāng)FSR大于3 時(shí),時(shí)間減少百分比Opt_ratio 均基本保持穩(wěn)定,維持在25%以上。
表3 反映了總請求數(shù)據(jù)包dataPackNum 為60,快慢數(shù)據(jù)包之比FSR 為4 的條件下,在某時(shí)刻請求傳輸?shù)哪辰M數(shù)據(jù)包中,慢速包和快速包的數(shù)目取值范圍對動(dòng)態(tài)分配時(shí)間和靜態(tài)分配時(shí)間的影響。用系統(tǒng)工作的周期數(shù)(cycles)來表示時(shí)間長短,當(dāng)每次到達(dá)的快速包的取值范圍越大,也就是每次可能有更多的快速包到達(dá)仲裁器時(shí),動(dòng)態(tài)分配相對于靜態(tài)分配時(shí)間減少百分比越大。可以看出快速數(shù)據(jù)包越多,動(dòng)態(tài)分配在減少總傳輸時(shí)間方面更具優(yōu)勢。
圖3 快速包和慢速包之比對總傳輸時(shí)間的影響
表3 每組請求快速包和慢速包的數(shù)目取值對總傳輸時(shí)間的影響
本文針對多層總線中靜態(tài)總線分配的現(xiàn)狀,基于動(dòng)態(tài)規(guī)劃的方法設(shè)計(jì)了一種總線仲裁器,根據(jù)數(shù)據(jù)包大小和不同總線傳輸速率,動(dòng)態(tài)分配各個(gè)數(shù)據(jù)包傳輸所用的總線通道。本文設(shè)計(jì)了C++仿真器,模擬了多個(gè)功能單元在不同時(shí)刻向達(dá)仲裁器發(fā)起傳輸請求,并由仲裁模塊分配傳輸總線類型的過程。證明了在數(shù)據(jù)包總數(shù)在40~100 范圍之間時(shí),動(dòng)態(tài)分配的仲裁器作用明顯,可以提升25%左右,且快速數(shù)據(jù)包越多,動(dòng)態(tài)分配在減少總傳輸時(shí)間方面更具優(yōu)勢。