季永康
(上海交通大學,上海200240)
隨著集成電路技術的飛速發展,片上系統(SoC)中的功能單元越來越多,片內功能單元之間的數據通信需求也隨之增長。片上系統功能單元之間的通信主要依賴于總線結構,由于各個功能單元、存儲設備以及I/O 設備之間的通信需求大幅度增加,現有的總線共享技術[1-2]不足以滿足片上高速數據傳輸的需要,會產生總線爭用問題,多個功能單元對總線的爭用[3]成為當前片上高速通信研究的關鍵。目前解決片上總線爭用問題的方法主要有:采用多層總線[4-5]和設計合理的仲裁器[6-7]。
總線爭用的問題是由于任何時刻總線上只允許兩個功能單元占用總線資源引起的,因此可以采用多層總線來解決不同功能單元對總線的爭用。由于多層總線會大量占用片上布線資源,導致芯片面積多大,因此片上多層總線的數目不宜過多,一般以2~3 層為宜。目前的片上總線(例如AXI、AHB、APB 等)中,傳輸速率高的總線資源開銷更大,因此多層總線中一般會設置傳輸速率不同的總線,可以在滿足不同功能單元通信的同時兼顧片上資源開銷。綜上所示,本文針對傳輸速率不同的兩層總線進行仲裁研究。
合理的總線仲裁可以在總線帶寬不變的前提下,滿足多對主從模塊在當前時間段內的通信需求。本文基于動態規劃的方法和多層總線結構,設計了一種總線仲裁器,根據各個功能單元請求傳輸的數據量和不同總線的數據傳輸速率,動態地分配各個傳輸過程所使用總線通道。為了驗證本文提出的總線仲裁器,本文開發了一個C++的高層次仿真模型,模擬多個功能單元的數據傳輸請求在不同時刻分組向仲裁器發起傳輸請求,驗證了該總線仲裁器對總線傳輸的性能提升。
在現有的多層總線系統中,不同傳輸速率的總線用于不同帶寬需求的數據傳輸,按照傳統的靜態總線分配方法:快速總線用于傳輸帶寬需求高的連續大批量數據,慢速總線用于傳輸帶寬需求較低的控制信號。靜態總線分配方法簡單,不需要復雜的控制邏輯,但是在圖像處理或視頻處理的應用中,非連續的、小批量的控制信號較少,而連續的、大批量的數據很多。如果僅按照上述靜態總線分配方法對總線資源進行分配,則可能存在大量數據通過快速總線傳輸,而通過慢速總線傳輸的數據很少,在此狀態下,快速總線持續處于忙碌狀態,而慢速總線幾乎處于空閑狀態,浪費了慢速總線的帶寬。為此,本文設計了一種采用動態分配方法的仲裁機制。

圖1 動態分配的仲裁模塊圖
如圖1 所示,在傳輸速率不同的雙層總線系統中,仲裁器根據當前總線的負載狀態以及等待傳輸的數據包大小,在盡可能趨向總線負載平衡的條件下分配快慢兩種總線資源,減少總線空閑造成的帶寬浪費。本設計把每個功能單元的一次傳輸請求作為一個數據包,數據包中的數據量是已知的。在某時刻,來自不同功能單元的傳輸請求到達仲裁器,仲裁器根據各個功能單元請求傳輸的數據量和快慢兩種總線的帶寬,分別預測出兩種總線分別完成各個傳輸請求的時間,在時間尺度上衡量總線的繁忙度,并根據下文介紹的動態規劃的算法,找出完成所有傳輸用時最少的方案。
(1)問題抽象
假設雙層總線滿負荷工作,新到達的數據傳輸請求需要等待前面的傳輸釋放總線資源,等待時間內可能會有新的請求到達仲裁器,仲裁器會截斷并保存等待傳輸的請求,因此可以看做每隔一段時間有n 個數據傳輸請求到達仲裁器。設快速總線的傳輸速率是慢速總線傳輸速率的k 倍,用變量t 表示傳輸時間。對所有的傳輸對應的慢速總線傳輸時間做排序獲得集合T1,集合T1={t1,t2,t3,…,tn}中的元素按照由大到小的順序書寫;對所有的傳輸對應的快速總線傳輸時間做排序獲得集合T2,集合T2={t1/k,t2/k,t3/k,……,tn/k}中的元素同樣按照由大到小的順序書寫。最終將問題抽象成求解完成所有傳輸最小時間。
(2)算法代入
上述求最小時間問題可以使用動態規劃的方法求解,動態規劃是通過拆分問題,定義問題狀態和狀態之間的關系,使問題能夠以遞推的方式去解決。上述問題中,對快慢兩種總線進行分組,考慮到將大數據包放在快速傳輸總線上更容易減少總傳輸時間,因此可以把上述問題轉化為首先將所有元素放到從慢速組中,從中找出傳輸時間最大的元素,并將其慢速組中剔除后放入快速組中。如表1 所示,不斷重復這一過程,直到快速組和慢速組的傳輸時間相近,達到負載均衡。

表1 動態規劃問題迭代
計算每次分組(0 ≤i ≤n)的慢速組傳輸時間Tsum1(i)和快速組傳輸時間Tsum2(i),當首次出現Tsum2(i)≥Tsum1(i)時,此時就是所求的最小傳輸時間分配方案。

為了驗證本文提出的總線仲裁機制,本文開發了一個C++的高層次仿真模型,模擬多個數據傳輸請求在不同時刻分組向達仲裁器發起傳輸請求,且在同一時刻某組中可能存在多個請求。為了與靜態總線分配方案作對比,本文以靜態總線分配方案為基準,將待傳輸的數據分為兩類:一類是適合于快速總線的連續大批量數據,稱為快速包;另一類是適合于慢速總線的小批量的數據,稱為慢速總包??焖倏偩€的傳輸速率是慢速總線的3 倍,需要傳輸的總請求包數目為data?PackNum,快速包數和慢速包數的比例為FSR,快速包的大小dataPackSize1 范圍是10000~100000,慢速包的大小dataPackSize2 范圍是500~5000。為了評估在系統仲裁機制的作用下,靜態分配和動態分配完成所有傳輸的時間對比,將動態分配相對于靜態分配時間減少的百分比記作Opt_ratio,簡稱時間減少百分比。各變量具體定義及符號表示如表2 所示。

表2 變量
控制其他變量不變,研究總請求數據包數data?PackNum 和時間減少百分比Opt_ratio 的關系,,模擬仲裁器的工作過程,比較動態總線分配相對于靜態總線分配節省的時間。如圖2 所示,時間減少百分比Opt_ratio,隨著總數據包數目的增長,先升高后降低,在dataPackNum 為50 左右時達到峰值,最大值為27.83%。當dataPackNum 在40~100 范圍之間,動態分配的仲裁器作用明顯提升,可以提升25%左右。

圖2 dataPackNum對總傳輸時間的影響
控制其他變量不變,研究快慢數據包比例FSR 和時間減少百分比Opt_ratio 的關系。圖3 顯示的是在總請求包數目為50 的條件下,快速包和慢速包之比FSR對時間減少百分比Opt_ratio 的影響。當FSR 小于3,也就是快速包的比例較少時,時間減少百分比Opt_ra?tio 在25%以下,且隨著FSR 的增長迅速提升;當FSR大于3 時,時間減少百分比Opt_ratio 均基本保持穩定,維持在25%以上。
表3 反映了總請求數據包dataPackNum 為60,快慢數據包之比FSR 為4 的條件下,在某時刻請求傳輸的某組數據包中,慢速包和快速包的數目取值范圍對動態分配時間和靜態分配時間的影響。用系統工作的周期數(cycles)來表示時間長短,當每次到達的快速包的取值范圍越大,也就是每次可能有更多的快速包到達仲裁器時,動態分配相對于靜態分配時間減少百分比越大??梢钥闯隹焖贁祿蕉啵瑒討B分配在減少總傳輸時間方面更具優勢。

圖3 快速包和慢速包之比對總傳輸時間的影響

表3 每組請求快速包和慢速包的數目取值對總傳輸時間的影響
本文針對多層總線中靜態總線分配的現狀,基于動態規劃的方法設計了一種總線仲裁器,根據數據包大小和不同總線傳輸速率,動態分配各個數據包傳輸所用的總線通道。本文設計了C++仿真器,模擬了多個功能單元在不同時刻向達仲裁器發起傳輸請求,并由仲裁模塊分配傳輸總線類型的過程。證明了在數據包總數在40~100 范圍之間時,動態分配的仲裁器作用明顯,可以提升25%左右,且快速數據包越多,動態分配在減少總傳輸時間方面更具優勢。