新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > SOC參數(shù)自動(dòng)配置設(shè)計(jì)方法與功耗優(yōu)化

SOC參數(shù)自動(dòng)配置設(shè)計(jì)方法與功耗優(yōu)化

作者: 時(shí)間:2012-10-29 來(lái)源:網(wǎng)絡(luò) 收藏

∥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 ] 對(duì)應(yīng)fifo_width=16 的情況, 如果在dma_top 模塊中用Vperl 語(yǔ)法例化了dma_fifo ( Instance(dmafifo);) ,那么Vperl把din[15:0]連接進(jìn)dma_top ,并進(jìn)而生成dma_top.v 代碼,即dma_top.v 的信號(hào)定義。

Vperl 實(shí)際上是接管了模塊間的信號(hào)連接工作,使得設(shè)計(jì)師不用擔(dān)心改變對(duì)模塊間關(guān)系的影響。 另外,Vperl 的另一項(xiàng)優(yōu)點(diǎn)就是省去了每個(gè)HDL 文件中繁瑣的信號(hào)定義,避免因?yàn)樾盘?hào)定義引起的語(yǔ)法錯(cuò)誤(比如信號(hào)忘記定義、信號(hào)名打錯(cuò)等) ,大大加快源代碼的編寫(xiě)速度。 當(dāng)然,使用Vperl 需要遵循一定的語(yǔ)法。

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

參數(shù)優(yōu)化

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

參數(shù)的屬性

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

數(shù)值相關(guān)

兩參數(shù)的數(shù)值相關(guān)意味著一個(gè)參數(shù)的選擇限制了另一個(gè)參數(shù)的選擇范圍。 例如對(duì)于容量限制為64 ×8 bit s 的直接存儲(chǔ)器存取(DMA) 緩沖區(qū),可以緩沖64 個(gè)8 位數(shù)據(jù),但是當(dāng)用于緩沖32 位數(shù)據(jù)時(shí),只能放16 個(gè)數(shù)據(jù)。 在這里數(shù)據(jù)個(gè)數(shù)和數(shù)據(jù)格式是數(shù)值相關(guān)的。 再如可配置處理器的乘法器(MUL) 單元一般不會(huì)和乘累加器(MAC)單元一起出現(xiàn),因?yàn)閮烧叩墓δ苁侵丿B的。 在進(jìn)行參數(shù)選擇時(shí),利用數(shù)值相關(guān)性可以去除一些不可能的參數(shù)值,縮小參數(shù)的選擇范圍。

性能相關(guān)

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

單調(diào)性

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

層次性

模塊參數(shù)只影響模塊自身,比如Cache 容量、Cache 行大小和關(guān)聯(lián)組個(gè)數(shù)。 多個(gè)模塊參數(shù)可以形成一個(gè)系統(tǒng)參數(shù),比如從系統(tǒng)角度來(lái)看,Cache 失配率就是一個(gè)系統(tǒng)參數(shù)。 利用參數(shù)的層次性可以進(jìn)行局部?jī)?yōu)化。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉