新聞中心

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

        SOC參數自動配置設計方法與功耗優化

        作者: 時間: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 的另一項優點就是省去了每個HDL 文件中繁瑣的信號定義,避免因為信號定義引起的語法錯誤(比如信號忘記定義、信號名打錯等) ,大大加快源代碼的編寫速度。 當然,使用Vperl 需要遵循一定的語法。

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

        參數優化

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

        參數的屬性

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

        數值相關

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

        性能相關

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

        單調性

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

        層次性

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 惠来县| 鱼台县| 佛山市| 略阳县| 安新县| 连州市| 怀远县| 桐城市| 龙南县| 洪泽县| 阿瓦提县| 卓资县| 隆德县| 华容县| 北安市| 南木林县| 云梦县| 容城县| 那坡县| 安多县| 若羌县| 姜堰市| 贵阳市| 千阳县| 江阴市| 京山县| 九寨沟县| 任丘市| 荣成市| 资讯 | 青州市| 华坪县| 元朗区| 贺兰县| 五峰| 兴文县| 兴山县| 蛟河市| 手游| 江永县| 山东省|