新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > SOC參數自動配置設計方法與功耗優(yōu)化

SOC參數自動配置設計方法與功耗優(yōu)化

作者: 時間:2012-10-29 來源:網絡 收藏

∥Synchronous FIFO.fifo _depth x fifo _width bit words。

module dma _fifo (clk,rstp,din,writep,readp,dout ,emptyp,fullp);

input clk;

input rstp;

input [15:0] din;

input readp;

input writep;

output [15:0]dout;

output emptyp;

output fullp;

reg emptyp;

reg fullp;

reg [15:0]dout;

reg [ (DEPTH-1):0 ]  tail;

reg [ (DEPTH-1):0 ]  head;

reg [ (DEPTH-1):0 ]  count;

reg [15:0 ] fifomem [0:MAX_COUNT];

……

∥Update FIFO memory。

always @(posedge clk) begin

if ( rstp==1′b0 writep==1′b1 fullp==1′b0)

fifomem [head]= din [15:0];

end

∥Update the head register。

always @(posedge clk) begin

if ( rstp==1′b1)

head[1:0 ]=2′b0;

else

if (writep==1′b1 fullp==1′b0)

head[1:0 ]=head[1:0 ] + 1;

end

……

在上述程序段中, din [15:0 ] 對應fifo_width=16 的情況, 如果在dma_top 模塊中用Vperl 語法例化了dma_fifo ( Instance(dmafifo);) ,那么Vperl把din[15:0]連接進dma_top ,并進而生成dma_top.v 代碼,即dma_top.v 的信號定義。

Vperl 實際上是接管了模塊間的信號連接工作,使得設計師不用擔心改變對模塊間關系的影響。 另外,Vperl 的另一項優(yōu)點就是省去了每個HDL 文件中繁瑣的信號定義,避免因為信號定義引起的語法錯誤(比如信號忘記定義、信號名打錯等) ,大大加快源代碼的編寫速度。 當然,使用Vperl 需要遵循一定的語法。

配置機制中,結合Eperl 和Vperl這兩種工具就可以由選定的參數組合地配置硬件結構。 對于軟件而言,由C 語言編寫的應用程序不需要修改,但是編譯器需要針對不同的執(zhí)行單元的配置增加減少指令并進行優(yōu)化。

參數優(yōu)化

一個 中包括了P1 , P2 , P3 , ..., Pn 等參數。每個參數的值都可以從一個有限集合中選取。 為了選擇最優(yōu)的參數值,也就是為了達到最優(yōu)的系統(tǒng)配置,使功耗、性能和面積達到合理的目標,需要進行參數優(yōu)化。 一種方法是運行一次仿真后,記錄下指令序列(trace) ,將不同的參數配置結合指令序列通過純軟件的行為分析器進行分析。 這種方法的優(yōu)勢是速度快。 但是在不同的結構參數下,指令序列差別很大,特別是當指令集都發(fā)生改變時,結果的可信度大大降低;而且行為分析器對一些動態(tài)參數,比如動態(tài)電壓,對功耗的影響無法估計,所以可能不得不進行多次仿真來獲得較準確的功耗估計。 由于仿真時間一般較長,參數的優(yōu)化算法對設計周期的影響很大。

參數的屬性

設計中的定制概念不再是晶體管級的定制,而是體現在模塊級層面上,具體表現為系統(tǒng)的結構參數。 SOC 的系統(tǒng)參數具有一些屬性,如大多數系統(tǒng)參數是相互影響的,這些相關性必須在參數配置時予以考慮。 相關性可以區(qū)分為數值相關和性能相關。 參數自身也有單調性和層次性。

數值相關

兩參數的數值相關意味著一個參數的選擇限制了另一個參數的選擇范圍。 例如對于容量限制為64 ×8 bit s 的直接存儲器存取(DMA) 緩沖區(qū),可以緩沖64 個8 位數據,但是當用于緩沖32 位數據時,只能放16 個數據。 在這里數據個數和數據格式是數值相關的。 再如可配置處理器的乘法器(MUL) 單元一般不會和乘累加器(MAC)單元一起出現,因為兩者的功能是重疊的。 在進行參數選擇時,利用數值相關性可以去除一些不可能的參數值,縮小參數的選擇范圍。

性能相關

兩參數的性能相關意味著一個參數的改變會影響另一個參數的最優(yōu)選擇。性能相關是有方向性的,如果參數B 與A 性能相關, 則參數A 是B 的主動參數,參數B 是A 的隨動參數。 在參數選擇時,可以先確定A 再確定B 。如寄存器的個數相關與MUL 單元相關意味著MUL 單元是主動參數,而寄存器個數是隨動參數。 兩個參數也可能互相相關,也就是說參數A 和B 之間形成環(huán)路。 這時兩個參數必須同時調整才能得到最優(yōu)的方案。 例如高速緩存的組參數和每個緩存塊的容量參數的性能是相關的。 在進行參數選擇時,性能不相關的參數可以獨立選取最優(yōu)解。

單調性

很多參數對某一優(yōu)化目標而言是單調函數。 例如決定UART 緩沖區(qū)大小的參數,對功耗這一優(yōu)化目標,一般是緩沖區(qū)越大功耗越大。 參數的方向性也可以縮小參數的選擇范圍。

層次性

模塊參數只影響模塊自身,比如Cache 容量、Cache 行大小和關聯組個數。 多個模塊參數可以形成一個系統(tǒng)參數,比如從系統(tǒng)角度來看,Cache 失配率就是一個系統(tǒng)參數。 利用參數的層次性可以進行局部優(yōu)化。



評論


相關推薦

技術專區(qū)

關閉