背景
如本領(lǐng)域中的技術(shù)人員已知的,通常被寫為amodd的模運算在第一個數(shù)字(被除數(shù)a)除以第二個數(shù)字(除數(shù)d)之后返回余數(shù)。余數(shù)也可被稱為模值。
存在可用于實現(xiàn)在硬件邏輯(例如,集成電路)中的模運算的幾種方法。這樣的硬件邏輯可形成諸如cpu(中央處理單元)或gpu(圖形處理單元)的處理器的部分。一個示例方法將模值計算為迭代除法實現(xiàn)(例如,計算a/d的迭代除法)的自然副產(chǎn)物。特別地,在除數(shù)d是常數(shù)的情況下,除法器可被優(yōu)化以只除以常數(shù)d并輸出a的模值作為輸出量。
其它示例方法使用不自然地產(chǎn)生模值的其他除法與乘法和減法結(jié)合以使用方程式(1)的恒等性來計算模值;
在除數(shù)d是2的冪的倍數(shù)(即,d=2kd0)的其它例子中,確定模值的問題可簡化為通過輸出輸入量的最低有效k位來確定d0的模值。這意味著只有奇數(shù)d0需要被考慮。因此,x[n-1:0]modd可分解成與x[k-1:0]連結(jié)的x[n-1:k]modd0。例如,xmod6(k=1)可如在方程式(2)中所示的分解,其中“&”指示位串的連結(jié)。
x[n-1:0]mod6=(x[n-1:1]mod3)&x[0](2)
下面所述的實施方式僅作為例子被提供,且不是解決生成用于實現(xiàn)模運算的硬件設(shè)計的已知方法的任何或所有缺點的實現(xiàn)的限制。
概述
這個概述被提供來以簡化的形式介紹一系列概念,其在下面在詳細(xì)描述中被進(jìn)一步描述。這個概述并不打算識別所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不打算用作幫助確定所要求保護(hù)的主題的范圍。
在本文描述了用于生成硬件設(shè)計以使用一個或多個范圍減小級關(guān)于恒定值d來計算對于在目標(biāo)輸入范圍內(nèi)的任何輸入值的模值的方法和引擎。通過迭代過程來生成硬件設(shè)計,迭代過程識別用于將增加的輸入范圍連續(xù)映射到目標(biāo)輸出范圍的最佳部件,直到將目標(biāo)輸入范圍映射到目標(biāo)輸出范圍的部件被識別出為止。每個迭代涉及對于多個范圍減小方法中的每個生成用于將輸入范圍映射到目標(biāo)輸出范圍的至少一個硬件設(shè)計部件,合成所生成的硬件設(shè)計部件,以及基于合成的結(jié)果來選擇所生成的硬件設(shè)計部件作為最佳部件。
第一方面提供生成硬件設(shè)計以關(guān)于恒定值d來計算對于在目標(biāo)輸入范圍內(nèi)的任何整數(shù)輸入值的模值的方法,硬件設(shè)計包括一個或多個范圍減小級,該方法包括在處理模塊中:(a)使用多個模保持范圍減小方法中的每個生成至少一個硬件設(shè)計部件以將期望輸入范圍映射到目標(biāo)輸出范圍;(b)合成硬件設(shè)計部件中的每個;(c)基于該合成來選擇硬件設(shè)計部件中的一個作為對期望輸入范圍的最佳硬件設(shè)計部件;以及(d)擴(kuò)大期望輸入范圍并重復(fù)(a)到(d),直到最佳硬件設(shè)計部件的輸入范圍包括目標(biāo)輸入范圍為止。
第二方面提供生成硬件設(shè)計以關(guān)于恒定值d來計算對于在目標(biāo)輸入范圍內(nèi)的任何整數(shù)輸入值的模值的模硬件生成引擎,硬件設(shè)計包括一個或多個范圍減小級,該引擎包括:多個范圍減小模塊,每個范圍減小模塊配置成使用多個模保持范圍減小方法中的一個生成硬件設(shè)計部件以映射輸入范圍;合成模塊,其配置成生成對于硬件設(shè)計部件的一個或多個合成度量,一個或多個合成度量提供硬件設(shè)計部件的合成版本的質(zhì)量的指示;決策邏輯,其與多個范圍減小模塊和合成模塊通信,決策邏輯配置成:(a)使用多個范圍減小方法中的每個生成至少一個硬件設(shè)計部件以將期望輸入范圍映射到目標(biāo)輸出范圍;(b)從合成模塊得到對于硬件設(shè)計部件中的每個的一個或多個合成度量;(c)基于合成度量來選擇硬件設(shè)計部件中的一個作為對期望輸入范圍的最佳硬件設(shè)計部件;以及(d)擴(kuò)大期望輸入范圍并重復(fù)(a)到(d),直到最佳硬件設(shè)計部件的輸入范圍包括目標(biāo)輸入范圍為止。
第三方面提供計算機(jī)可讀代碼,其適于在代碼在計算機(jī)上運行時執(zhí)行第一方面的方法的步驟。
第四方面提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的第三方面的計算機(jī)可讀代碼。
第五方面提供根據(jù)第一方面中的任一個的方法生成的計算模值的硬件設(shè)計,該硬件設(shè)計在集成電路制造系統(tǒng)中被處理時配置集成電路制造系統(tǒng)以生成集成電路的表現(xiàn)形式來計算模值。
第六方面提供計算機(jī)可讀存儲介質(zhì),其具有存儲在其上的根據(jù)第一方面的方法生成的計算模值的硬件設(shè)計,該硬件設(shè)計在集成電路制造系統(tǒng)中被處理時配置集成電路制造系統(tǒng)以生成集成電路的表現(xiàn)形式來計算模值。
第七方面提供實現(xiàn)根據(jù)第一方面的方法生成的計算模值的硬件設(shè)計的集成電路。
優(yōu)選特征可在適當(dāng)時被組合,如對技術(shù)人員將明顯的,并可與本發(fā)明的任何方面組合。
附圖的簡要說明
本發(fā)明的實施方式將通過示例的方式參考附圖被描述,其中:
圖1是用于生成實現(xiàn)模運算的硬件設(shè)計的模硬件生成引擎的方框圖;
圖2是圖1的模硬件生成引擎的示例實現(xiàn)的方框圖;
圖3是生成實現(xiàn)模運算的硬件設(shè)計的示例方法的流程圖;
圖4是用于選擇部件以實現(xiàn)硬件設(shè)計的最終范圍減小級的示例方法的流程圖;
圖5是用于選擇部件以實現(xiàn)硬件設(shè)計的上游范圍減小級的示例方法的流程圖;
圖6是示出用于生成對于示例模運算的示例硬件設(shè)計的圖3的方法的第一迭代的輸出的示意圖;
圖7是示出用于生成對于圖6的示例模運算的示例硬件設(shè)計的圖3的方法的第二迭代的輸出的示意圖;
圖8是示出用于生成對于圖6的示例模運算的示例硬件設(shè)計的圖3的方法的第三迭代的輸出的示意圖;
圖9是在圖6-8的例子中生成的示例硬件設(shè)計的方框圖;
圖10是示出與使用圖3的方法所生成的實現(xiàn)對于第一輸入范圍和第一除數(shù)的模運算的硬件設(shè)計的延遲時間比較的面積的曲線圖;
圖11是示出與使用圖3的方法所生成的實現(xiàn)對于第二輸入范圍和第二除數(shù)的模運算的硬件設(shè)計的延遲時間比較的面積的曲線圖;
圖12是示出與使用圖3的方法所生成的實現(xiàn)對于第三輸入范圍和第三除數(shù)的模運算的硬件設(shè)計的延遲時間比較的面積的曲線圖;
圖13是示例性基于計算的設(shè)備;以及
圖14是示例性集成電路制造系統(tǒng)的方框圖。
共同的參考數(shù)字在全部附圖中用于指示相似的特征。
詳細(xì)描述
下面僅作為例子描述本發(fā)明的實施方式。這些例子代表實施本發(fā)明的、申請人當(dāng)前已知的最佳方式,但是它們并不是這可被實現(xiàn)的唯一方式。該描述闡述例子的功能和用于構(gòu)造和操作例子的步驟的順序。然而,相同或等效的功能和順序可由不同的例子實現(xiàn)。
其它示例方法經(jīng)由一個或多個模保持映射來生成模值。映射采用在輸入范圍[e,f]中的輸入值,并將它映射到在輸出范圍[m,n]中的值。在其中輸出范圍小于輸入范圍的映射被稱為范圍減小。模保持映射是特殊映射,其中輸入和輸出值將為特定的除數(shù)產(chǎn)生相同的模值。例如,如果對于特定的除數(shù)d,模保持映射的輸入是x而模保持映射的輸出是y,則xmodd=y(tǒng)modd。
在一些例子中,通過一系列的模保持映射來生成模值。例如,第一級可將輸入x映射到第一中間輸出y1,第二級可將第一中間輸出y1映射到第二中間輸出y2,依此類推,直到輸入被映射到輸出范圍[0,d-1]為止。在方程式(3)中表示在輸入、中間輸出和最終輸出之間的關(guān)系:
xmodd=y(tǒng)1modd=y(tǒng)2modd=…=y(tǒng)fmodd=y(tǒng)f(3)
存在用于實現(xiàn)模保持范圍減小的多個不同的方法,其在本文被稱為模保持范圍減小方法或僅稱為范圍減小方法。例如在一些情況下,可通過加上或減去除數(shù)d的倍數(shù)或應(yīng)用諸如在方程式(4)中所示的變換的變換來將輸入值映射到輸出值,其中x是輸入值,而xi是輸入值x的第i位:
x=∑i2ixi→y=∑i(2imodd)xi(4)
雖然有多個不同的范圍減小方法,但是用于通過一個或多個范圍減小級生成實現(xiàn)模運算的硬件設(shè)計的很多工具一般被約束為對于每個范圍減小級只使用一個特定的范圍減小方法。雖然更復(fù)雜的工具可允許對于不同的范圍減小級所使用的不同的范圍減小方法,但是用于特定的范圍減小級的范圍減小方法的選擇一般基于靜態(tài)數(shù)字度量而不是基于實際硬件度量來作出。
相應(yīng)地,在本文描述了用于通過迭代地選擇最佳硬件設(shè)計部件以將越來越大的輸入范圍映射到目標(biāo)輸出范圍直到將目標(biāo)輸入范圍映射到目標(biāo)輸出范圍的硬件設(shè)計部件被選擇為止通過一個或多個范圍減小級來生成實現(xiàn)模運算(由目標(biāo)輸入范圍[minin,maxin]和目標(biāo)輸出范圍[minout,maxout]=[0,d-1]來定義,其中d是恒定除數(shù))的硬件設(shè)計的方法和引擎。每個迭代涉及:對于多個范圍減小方法中的每個生成將特定輸入范圍映射到目標(biāo)輸出范圍的至少一個硬件設(shè)計部件,每個硬件設(shè)計部件包括使用相應(yīng)的范圍減小方法的第一范圍減小級;合成所生成的硬件部件;以及基于該合成來選擇所生成的硬件設(shè)計部件之一作為將特定輸入范圍映射到目標(biāo)輸出范圍的最佳部件。
實現(xiàn)模運算的硬件設(shè)計包括多個連續(xù)的模保持范圍減小級,每個級使用多個范圍減小方法中的一個來實現(xiàn)模保持映射。不同的級可使用不同的范圍減小方法。級被串聯(lián)連接,使得較早的級的輸出成為較遲的級的輸入。每個后繼的級具有比前一級更小的輸入范圍。如果級a饋送到級b內(nèi),則級a被認(rèn)為是級b的上游,且類似地,級b被認(rèn)為是級a的下游。
在一些例子中,從后到前生成模運算硬件設(shè)計。特別是在第一迭代中,通過使用多個范圍減小方法生成潛在部件、合成所生成的部件并基于合成的結(jié)果(例如,具有最低面積或最好的速度的合成)選擇所生成的部件中的一個作為最佳部件來選擇用于將小輸入范圍映射到目標(biāo)輸出范圍的最佳硬件設(shè)計部件。在下一迭代中,用于將比前一迭代更大的輸入范圍映射到目標(biāo)范圍的最佳硬件設(shè)計部件接著以類似的方式被識別,即,通過使用多個范圍減小方法生成將較大的輸入范圍映射到目標(biāo)輸出范圍的部件、合成所生成的部件并基于合成的結(jié)果選擇所生成的部件中的一個。該方法繼續(xù),直到選擇出將整個輸入范圍映射到目標(biāo)輸出范圍的最佳硬件部件為止。
選擇連續(xù)地映射較大的輸入范圍的最佳部件而不是選擇連續(xù)地映射較小的輸入范圍的最佳部件可增加實現(xiàn)模運算的硬件設(shè)計可被產(chǎn)生的速度和/或效率。特別是通過反向工作,待估計的不同可能的部件的數(shù)量可明顯減小。例如,如果g是范圍減小方法的數(shù)量而h是范圍減小級的數(shù)量,則從目標(biāo)輸入范圍解決問題導(dǎo)致大小gh的問題,而從目標(biāo)輸出范圍解決問題導(dǎo)致大小gh的問題。測試表明,在傳統(tǒng)方法可能花費多于一年來使用特定的一組范圍減小方法產(chǎn)生對于特定的輸入和輸出范圍組合的硬件設(shè)計的情況下,可使用本文所述的方法在一天內(nèi)產(chǎn)生對于相同的輸入和輸出范圍組合以及一組范圍減小方法的硬件設(shè)計。
首先參考圖1,其示出用于生成實現(xiàn)模運算的硬件設(shè)計102(其在本文也被稱為模硬件設(shè)計)的模硬件生成引擎100的例子。
模硬件生成引擎100接收目標(biāo)輸入范圍104和恒定除數(shù)(或恒定值)d106作為輸入以用于模運算。目標(biāo)輸入范圍可由最小輸入數(shù)字minin和最大輸入數(shù)字maxin明確地定義;或它可由輸入的位的數(shù)量n來定義。特別地,對于n個位的無符號輸入,目標(biāo)輸入范圍可被確定為[0,2n-1]。目標(biāo)輸出范圍由除數(shù)d定義為[0,d-1]。
模硬件生成引擎100生成硬件設(shè)計以對于所接收的輸入范圍和除數(shù)實現(xiàn)包括一個或多個模保持范圍減小級的模運算。如上所述,每個范圍減小級使用多個范圍減小方法中的一個來將輸入范圍映射到輸出范圍。通過迭代過程來生成硬件設(shè)計,迭代過程選擇用于將增加的輸入范圍連續(xù)地映射到目標(biāo)輸出范圍的最佳部件,直到將目標(biāo)輸入范圍映射到目標(biāo)輸出范圍的部件被選擇為止。每個迭代包括對于多個范圍減小方法中的一個生成至少一個硬件部件以將輸入范圍映射到目標(biāo)輸出范圍,每個部件具有使用相應(yīng)的范圍減小方法來映射輸入范圍的第一范圍減小級;合成所生成的部件;以及基于合成的結(jié)果來選擇所生成的部件中的一個作為最佳部件。
合成的結(jié)果可以是所合成的部件的qor(結(jié)果的質(zhì)量)的指示。例如,合成的結(jié)果可以在一個或多個合成度量的形式中,諸如但不限于延遲時間(即,產(chǎn)生結(jié)果的時間)、面積和功率使用。模硬件生成引擎100接著使用合成的結(jié)果(例如,合成度量)來為特定的輸入范圍選擇最好或最佳部件。
在一些情況下,模硬件生成引擎100接收提供關(guān)于如何從合成的結(jié)果(例如,合成度量)中選擇最好或最佳部件的信息的一個或多個選擇標(biāo)準(zhǔn)108作為輸入。在一些情況下,選擇標(biāo)準(zhǔn)可指示哪個合成度量是最重要的。例如,選擇標(biāo)準(zhǔn)可指定延遲時間是最重要的,使具有最短延遲的部件被選擇為最佳部件。在其它例子中,選擇標(biāo)準(zhǔn)可指定面積是最重要的,使具有最小面積的部件被選擇為最佳部件。
在其它情況下,選擇標(biāo)準(zhǔn)可指定在用于選擇最佳部件的合成度量之間的某個關(guān)系。例如,選擇標(biāo)準(zhǔn)可向合成度量分配指示它們的相對重要性的權(quán)重。在其它例子中,選擇標(biāo)準(zhǔn)可指定合成度量的組合以實現(xiàn)某個目標(biāo)。例如,如果合成度量包括面積a和延遲d,則選擇標(biāo)準(zhǔn)可指示具有最低(a+100d)的部件將被選擇為以特定的面積與延遲比為目標(biāo)。
對本領(lǐng)域中的技術(shù)人員將明顯的是,這些僅僅是例子,且選擇標(biāo)準(zhǔn)可基于合成度量來指定或多或少復(fù)雜度的選擇功能。例如,選擇標(biāo)準(zhǔn)可指定面積是最重要的合成度量,但如果面積不確定地指示一個部件比另一部件好(例如,面積度量是嘈雜的),則延遲可用作輔助度量。這樣的選擇功能可由下面的邏輯來表示,其中a1是部件1的面積,d1是部件1的延遲,a2是部件2的面積,以及d2是部件2的延遲:
術(shù)語“硬件設(shè)計”在本文用于指對于電子系統(tǒng)(例如,處理器)的全部或部分的集成電路的描述,該描述可用于生成集成電路的硬件表現(xiàn)形式(例如,硬件設(shè)計可被合成到硅內(nèi)或用于對現(xiàn)場可編程門陣列(fpga)編程)。硬件設(shè)計可涉及電子系統(tǒng)(例如,處理器)的模塊、塊、單元、子系統(tǒng)、系統(tǒng)或其任何組合。
硬件設(shè)計可以用高級硬件描述語言(hdl)來實現(xiàn),諸如但不限于寄存器傳送語言(rtl)。寄存器傳送語言的例子包括但不限于vhdl(vhsic硬件描述語言)和verilog。對本領(lǐng)域中的技術(shù)人員將明顯的是,可使用其它高級語言,諸如專用高級語言。
現(xiàn)在參考圖2,其示出圖1的模硬件生成引擎100的示例實現(xiàn)的方框圖。模硬件生成引擎100包括用于根據(jù)多個范圍減小方法中的一個來生成硬件設(shè)計部件以將特定輸入范圍映射到特定輸出范圍的多個模保持范圍減小模塊202;用于合成一個或多個部件并生成合成度量的合成模塊204;用于生成硬件設(shè)計以使用范圍減小模塊202和合成模塊204為所接收的目標(biāo)輸入范圍和除數(shù)實現(xiàn)包括一個或多個范圍減小級的模運算的決策邏輯206;以及識別每個迭代的最佳硬件設(shè)計部件208。
每個模保持范圍減小模塊202是接收輸入范圍和除數(shù)并生成在本文可被簡單地稱為“部件”的硬件設(shè)計部件的軟件模塊,該硬件設(shè)計部件使用多個模保持范圍減小方法中的一個來將輸入范圍映射到較小的輸出范圍,同時保持輸入的模值。每個部件可以用高級硬件描述語言(hdl)來實現(xiàn),諸如但不限于寄存器傳送語言(rtl)。寄存器傳送語言的例子包括但不限于vhdl(vhsic硬件描述語言)和verilog。對本領(lǐng)域中的技術(shù)人員將明顯的是,可使用其它高級語言,諸如專用高級語言。
可由范圍減小模塊202使用的示例模保持范圍減小方法包括但不限于相減方法、貪婪模方法、成對貪婪模方法、無符號倍數(shù)法、成對無符號倍數(shù)法、貪婪帶符號方法和成對貪婪帶符號方法。
相減方法通過從輸入x中減去除數(shù)d的倍數(shù)k來將無符號輸入范圍映射到無符號輸出范圍。例如,相減方法可根據(jù)下式將輸入值x映射到輸出值:
如果((x-kd)<0){返回x}否則{返回x-kd}
可使用預(yù)先確定的啟發(fā)法來選擇倍數(shù)k。例如,給定輸入范圍[0,m],可根據(jù)下式來選擇倍數(shù)k:
這基于相減方法對小輸入范圍是最有效的前提,所以在這些情況下,值得嘗試k的各種值。然而如果輸入范圍大,則只有試圖二等分輸入范圍的k的單個值被嘗試。
貪婪模方法通過將輸入轉(zhuǎn)換成2的冪的和并生成作為2的每個冪的模值的和的輸出來將帶符號和無符號輸入范圍映射到無符號輸出范圍。例如,貪婪模方法可根據(jù)下式將輸入x映射到輸出y,其中xi是輸入的第i位:
這樣的方法可被描述為“貪婪的”,因為xi→2imodd的映射是最多的減小,其在隔離中對于xi是可能的。然而,這樣的方法不考慮下面的事實:2imodd可具有大的漢明權(quán)重,其在硬件中實現(xiàn)起來可會是昂貴的。
成對貪婪模方法將帶符號和無符號輸入范圍映射到無符號輸出范圍,并基于與貪婪模方法相同的前提,但也通過對于對(i,j)的(2imodd)的值進(jìn)行檢查,使得(2imodd)+(2jmodd)≥d以如下將輸入x映射到輸出y:
無符號倍數(shù)法將帶符號和無符號輸入范圍映射到無符號輸出范圍,并基于與貪婪模方法相同的前提,但在無符號倍數(shù)法中(2imodd)的值被評估以確定加上除數(shù)d的倍數(shù)是否將減小漢明權(quán)重。基于該評估,嘗試幾個不同的實現(xiàn),其可具有下面的形式:
該方法具有在減小范圍的成本與范圍被減小的量之間的折衷。優(yōu)選地,除數(shù)d的盡可能多的倍數(shù)被加上而不使輸出范圍變得大于目標(biāo)輸出范圍。
成對無符號倍數(shù)法通過實現(xiàn)上面關(guān)于成對貪婪模方法所描述的配對和上面關(guān)于貪婪帶符號方法所描述的添加d的倍數(shù)來將帶符號和無符號輸入范圍映射到無符號輸出范圍。
貪婪帶符號方法通過將輸入轉(zhuǎn)換成2的冪的和并生成作為對于2的每個冪取值的模的和的輸出來將帶符號和無符號輸入范圍映射到帶符號輸出范圍,這保持到范圍
成對貪婪帶符號方法通過結(jié)合貪婪帶符號方法實現(xiàn)上面關(guān)于成對貪婪模方法描述的配對來將帶符號和無符號輸入范圍映射到帶符號輸出范圍。
在本文所述的例子中,模硬件生成引擎100包括三個模保持范圍減小模塊202,但對本領(lǐng)域中的技術(shù)人員將明顯的是,可只使用兩個范圍減小模塊202,或可使用多于三個范圍減小模塊202。
合成模塊204是配置成生成硬件設(shè)計部件的合成版本并為每個合成部件向決策模塊206提供合成度量的軟件模塊。如本領(lǐng)域中的技術(shù)人員已知的,合成用硬件描述語言(hdl)(諸如vhdl)實現(xiàn)的硬件設(shè)計涉及根據(jù)邏輯門將由hdl描述的期望電路行為的抽象形式轉(zhuǎn)換成硬件實現(xiàn)。
合成度量提供合成部件(其可在本文被稱為硬件設(shè)計部件的合成版本)的質(zhì)量的指示。例如,合成度量可提供關(guān)于產(chǎn)生模值的延遲、合成部件的面積和/或功率使用的信息。對本領(lǐng)域中的技術(shù)人員將明顯的是,這些僅僅是例子以及合成度量可傳達(dá)描述或提供合成部件的qor的指示的其它信息。
決策邏輯206是配置成為目標(biāo)輸入范圍和除數(shù)生成硬件設(shè)計以實現(xiàn)包括一個或多個范圍減小級的模運算的軟件部件,其中用于實現(xiàn)特定級的部件(和因而的范圍減小方法)對于用于使用各種范圍減小方法來實現(xiàn)級的部件是基于從合成工具204接收的合成度量的。特別地,決策邏輯206被配置成迭代地選擇用于將增加的輸入范圍連續(xù)地映射到輸出范圍的部件,其中每個迭代涉及使用模保持減小模塊202中的每個來生成將輸入范圍映射到目標(biāo)輸出范圍的部件,使用合成模塊204合成所生成的部件,以及基于由合成模塊204和/或選擇標(biāo)準(zhǔn)生成的合成度量來選擇所生成的部件中的一個作為用于將那個輸入范圍映射到目標(biāo)輸出范圍的最佳部件。
決策邏輯206通過選擇將小輸入范圍映射到目標(biāo)輸出范圍的部件來開始。以類似的方式選擇將較大輸入范圍連續(xù)地映射到目標(biāo)輸出范圍的部件,直到將整個目標(biāo)輸入范圍映射到目標(biāo)輸出范圍的部件被選擇為止。基于在前一迭代中選擇的最佳部件的輸入范圍來選擇用于隨后迭代的輸入范圍。
參考圖3描述用于生成硬件設(shè)計以對于目標(biāo)輸入范圍和除數(shù)實現(xiàn)模運算的示例方法,其由決策邏輯206實現(xiàn)。
在每個迭代中由決策邏輯206選擇的最佳部件可被存儲為最佳部件208以用于在以后的迭代中使用。
現(xiàn)在參考圖3,其示出用于生成對于可由圖2的決策邏輯206執(zhí)行的模運算的硬件設(shè)計的示例方法300。方法300在塊302處開始,其中決策邏輯206接收目標(biāo)輸入范圍和恒定除數(shù)(或恒定值)。如上所述,目標(biāo)輸入范圍可例如由最小輸入數(shù)字和最大輸入數(shù)字或由輸入的位的數(shù)量n來指定。一旦目標(biāo)輸入范圍和恒定除數(shù)被接收到,則方法300就進(jìn)行到塊304。
在塊304處,決策邏輯206識別用于將目標(biāo)輸入范圍的子范圍映射到輸出范圍(例如,[0,d-1])的最佳部件。通過使用范圍減小模塊202的每個來生成將小輸入范圍映射到目標(biāo)輸出范圍的至少一個部件、使用合成模塊204合成所生成的部件并基于由合成模塊204生成的合成度量選擇所生成的部件中的一個來識別最佳部件。下面參考圖4描述可由決策邏輯206實現(xiàn)的塊304的示例方法。一旦決策邏輯206選擇了最佳部件,則方法300就進(jìn)行到塊306。
在塊306處,決策邏輯206確定對于最佳部件的輸入范圍是否包括目標(biāo)輸入范圍。如下面更詳細(xì)描述的,在一些情況下,選擇的部件的輸入范圍可匹配最初指定的輸入范圍(例如,如果最初指定的輸入范圍是[0,13],則選擇的部件的輸入范圍是[0,13])。然而,在其它情況下,對于特定部件的輸入范圍可大于最初指定的輸入范圍(例如,如果最初指定的輸入范圍是[0,13],則選擇的部件的輸入范圍事實上可以是[0,24])。如果選擇的部件的輸入范圍大于最初指定的輸入范圍,則選擇的部件對于較大輸入范圍可被識別為最佳部件。
如果最佳部件的輸入范圍包括目標(biāo)輸入范圍,則不需要另外的級,且方法進(jìn)行到塊310。然而,如果當(dāng)前級的輸入范圍不包含目標(biāo)輸入范圍,則需要至少一個額外/不同的級來將整個目標(biāo)輸入范圍映射到目標(biāo)輸出范圍,且方法300進(jìn)行到塊308。
在塊308處,決策邏輯206識別最佳部件以將比在前一迭代中選擇的最佳部件的輸入范圍更大的輸入范圍映射到目標(biāo)輸出范圍。例如,如果前一選擇的部件是對于[0,15]的輸入范圍的最佳部件,則下一部件的輸入范圍必須大于[0,15](例如,[0,16])。
通過使用模保持范圍減小模塊202中的每個生成映射較大輸入范圍的初級部件(這個初級部件代表將輸入范圍映射到另一范圍的范圍減小級,初級部件可單獨地或結(jié)合在前一迭代中識別的最佳部件來使用,以將輸入范圍映射到目標(biāo)輸出范圍)、對于每個所生成的部件通過組合所生成的部件與一個或沒有以前識別的最佳部件來生成將較大輸入范圍映射到目標(biāo)輸出范圍的次級部件、使用合成模塊204合成次級部件并基于由合成模塊204生成的合成度量選擇次級部件中的一個來選擇對于較大輸入范圍的部件。
例如,如果第一范圍減小方法生成將[0,31]的輸入范圍映射到[0,15]的輸出范圍的初級部件,但目標(biāo)輸出范圍是[0,12],則初級部件可與將[0,15]的輸入范圍映射到[0,12]的輸出范圍的以前識別的最佳部件組合以生成將[0,31]的輸入范圍映射到目標(biāo)輸出范圍[0,12]的次級部件。
以這種方式聯(lián)結(jié)部件基于下面的假設(shè):用于執(zhí)行可使用映射到輸出范圍[minout,maxout]的部件x來完成的全模運算(即,到目標(biāo)輸出范圍[0,d-1]的映射)的最好或最佳硬件設(shè)計是將部件x的輸出饋送到從以前找到的最佳部件的子集中選擇的最佳部件y內(nèi),最佳部件的輸入范圍包括[minout,maxout]且輸出范圍被包括在目標(biāo)輸出范圍內(nèi)。
下面參考圖5描述可由決策邏輯206實現(xiàn)的用于實現(xiàn)塊308的示例方法。一旦決策邏輯206識別出用于將較大輸入范圍映射到目標(biāo)輸出范圍的最佳部件,則方法300就進(jìn)行回到塊306。
在塊310處,一旦對于包括整個目標(biāo)輸入范圍的輸入范圍識別出最佳部件,最佳部件就作為模硬件設(shè)計102被輸出。
現(xiàn)在參考圖4,其示出用于實現(xiàn)圖3的方法300的步驟304以選擇用于將小輸入范圍映射到目標(biāo)輸出范圍的最佳部件的示例方法400。方法400在塊402和404處開始,其中決策邏輯206將期望輸出范圍設(shè)置到目標(biāo)輸出范圍[0,d-1],其中d是恒定除數(shù);以及決策邏輯206將期望輸入范圍設(shè)置為包括在目標(biāo)輸出范圍上的至少一個額外數(shù)字(例如,期望輸入范圍可被設(shè)置為[0,d])。一旦期望輸入和輸出范圍被設(shè)置,方法400就進(jìn)行到塊406。
在塊406處,決策邏輯206使用每個模保持范圍減小模塊202生成將期望輸入范圍映射到在塊402和404中指定的期望輸出范圍的至少一個部件。例如,在存在三個范圍減小模塊202的情況下,決策邏輯206生成至少三個部件,使用第一范圍減小方法來將期望輸入范圍(例如,[0,d])映射到期望輸出范圍(例如,[0,d-1])的第一部件;使用第二范圍減小方法來將期望輸入范圍(例如,[0,d])映射到期望輸出范圍(例如,[0,d-1])的第二部件;以及使用第三范圍減小方法來將期望輸入范圍(例如,[0,d])映射到期望輸出范圍(例如,[0,d-1])的第三部件。
在塊408處,合成模塊204合成在塊406處生成的部件的每一個,分析所合成的部件,并基于該分析來產(chǎn)生對于每個部件的合成度量。如上所述,合成在諸如vhdl的硬件描述語言(hdl)中實現(xiàn)的硬件設(shè)計涉及根據(jù)邏輯門將由hdl描述的期望電路行為的抽象形式轉(zhuǎn)換成硬件實現(xiàn)。合成模塊204分析每個所合成的部件以評估合成的質(zhì)量并接著產(chǎn)生代表該分析的合成度量(例如,延遲、面積、功率)。
在例如決策邏輯206在塊406處生成三個部件的情況下,則合成模塊204分析這三個部件中的每個,然后分析每個所合成的部件以確定例如與部件相關(guān)聯(lián)的延遲、所合成的部件的面積和/或部件的功率使用。
一旦部件被合成且合成度量被生成,方法400就進(jìn)行到塊410。
在塊410處,決策邏輯206基于合成度量來選擇在塊406處生成的部件中的一個作為將期望輸入范圍映射到期望輸出范圍(即,目標(biāo)輸出范圍)的最好或最佳部件。如上所述,決策邏輯206可接收選擇標(biāo)準(zhǔn),其指示哪些度量/特征和其優(yōu)先級/組合應(yīng)在選擇最好或最佳部件時被使用。例如,選擇標(biāo)準(zhǔn)可指定延遲是最重要的,使決策邏輯206選擇具有最小延遲的部件。一旦部件被選擇為最佳部件,它就作為最佳部件208被保存,使得它可在隨后的迭代中被使用。方法400然后進(jìn)行到塊412。
在塊412處,決策邏輯206確定對于選擇的部件的最大輸入范圍。特別地,雖然選擇的部件可已經(jīng)被生成以將期望輸入范圍[0,d]映射到期望輸出范圍[0,d-1],但是該部件也許能夠?qū)⑤^大輸入范圍映射到同一輸出范圍而不需要對部件的任何改變。最大輸入范圍被定義為[0,maxin]。
在一些情況下,決策邏輯206可通過仿真來確定選擇的部件的最大輸入范圍。例如,仿真可被運行,其將增加的數(shù)字連續(xù)輸入到部件內(nèi),直到部件不產(chǎn)生正確的輸出(例如,不在目標(biāo)輸出范圍內(nèi)的或不保持模映射的輸出)為止。
在其它情況下,決策邏輯206可基于用于生成部件的特定的范圍減小方法在數(shù)學(xué)上確定選擇的部件的最大輸入范圍。例如,如果無符號倍數(shù)法被用于生成部件,則最大輸入值至多是基于預(yù)期的輸入位的數(shù)量的值。二進(jìn)制搜索方法可接著用于找到實際最大輸入范圍。
一旦選擇的部件的最大輸入范圍被確定,則方法400就進(jìn)行到塊414。在一些情況下,不是確定對于僅僅選擇的部件的最大輸入范圍,決策邏輯206可被配置成識別對于所生成的部件的每一個的最大輸入范圍,且這個信息及其合成度量可連同所生成的部件一起被存儲,用于以后使用來防止在以后的上游級中不必要地重復(fù)計算。
在塊414處,決策邏輯206將選擇的部件識別為用于將在塊412中識別的最大輸入范圍(例如,[0,maxin])映射到目標(biāo)輸出范圍的最佳部件。通過這樣做,決策邏輯206假設(shè)被確定為用于將輸入范圍[minin,maxin]映射到輸出范圍[minout,maxout]是最佳的但能夠?qū)⑤^大輸入范圍[minapplicable,maxapplicable]映射到同一輸出范圍[minout,maxout]而沒有對設(shè)計進(jìn)行任何改變的部件是對于較大輸入范圍的最佳部件。雖然這個假設(shè)并不總是證明是正確的,但是它在相當(dāng)大比例的時間中是正確的。此外通過做出這個假設(shè),需要被生成和分析的最佳或最好部件的數(shù)量明顯減小,從而允許用于模運算的硬件設(shè)計部件更快地生成。一旦選擇的最佳部件的輸入范圍被設(shè)置為最大輸入范圍,方法400就結(jié)束。
現(xiàn)在參考圖5,其示出用于實現(xiàn)圖3的步驟308的示例方法500以識別用于將較大輸入范圍映射到目標(biāo)輸出范圍的最佳部件。
方法500在塊502處開始,其中決策邏輯206將期望輸入范圍設(shè)置為在前一迭代中識別的最佳部件的最大輸入范圍加上至少一個額外的數(shù)字。例如,在前面選擇的最佳部件的最大輸入范圍是[0,s]的情況下,則期望輸入范圍可被設(shè)置為[0,s+1]。一旦期望輸入范圍被設(shè)置,方法500就進(jìn)行到塊504。
在塊504處,決策邏輯206使用每個模保持范圍減小模塊202來生成映射在塊502中指定的輸入范圍的至少一個初級部件。換句話說,決策邏輯206使用每個范圍減小方法來生成映射期望輸入范圍的至少一個初級部件。例如,在存在三個范圍減小模塊202的情況下,決策邏輯206使用范圍減小模塊202來生成至少三個初級部件,使用第一范圍減小方法來映射期望輸入范圍(例如,[0,s+1])的第一初級部件;使用第二范圍減小方法來映射輸入范圍(例如,[0,s+1])的第二初級部件;以及映射期望輸入范圍(例如,[0,s+1])的第三初級部件。
如上所述,每個初級部件代表將輸入范圍映射到另一范圍的范圍減小級,初級部件可單獨地使用或結(jié)合在以前識別的最佳部件來使用,以將輸入范圍映射到目標(biāo)輸出范圍。
一旦初級部件被生成,方法500就進(jìn)行到塊506。
在塊506處,決策邏輯206通過組合初級部件與一個或沒有以前識別的最佳部件來生成對于將期望輸入范圍映射到目標(biāo)輸出范圍的每個初級部件的次級部件。
特別地,決策邏輯206確定每個初級部件的輸出范圍。決策邏輯206可以用與決策邏輯206確定部件的最大輸入范圍相同的方式確定每個初級部件的輸出范圍。例如,決策邏輯206可運行仿真來確定輸出范圍,或決策邏輯206可在數(shù)學(xué)上確定輸出范圍。
一旦每個部件的輸出范圍被確定,決策邏輯206就為每個初級部件確定輸出范圍是否匹配目標(biāo)輸出范圍。如果用于初級部件的輸出范圍匹配目標(biāo)輸出范圍,則不需要另外的部件/級來將期望輸入范圍映射到目標(biāo)輸出范圍,且對于那個初級部件的次級部件恰好是初級部件。
然而,如果用于特定的初級部件的輸出范圍大于目標(biāo)輸出范圍,則決策邏輯206識別可與初級部件組合的以前識別的最佳部件以將期望輸入范圍映射到目標(biāo)輸出范圍。特別地,決策邏輯206對于具有大于目標(biāo)輸出范圍的輸出范圍的每個初級部件識別以前識別的最佳部件,其具有部件的識別出的輸出范圍落入的輸入范圍。例如,如果用于初級部件的識別出的輸出范圍是[0,16]且存在將[0,18]的輸入范圍映射到目標(biāo)輸出范圍[0,12]的以前識別的最佳部件k;那么由于初級部件的輸出范圍[0,16]落在目標(biāo)輸出范圍[0,18]內(nèi),因此初級部件可與以前識別的最佳部件k組合以將期望輸入范圍映射到目標(biāo)輸出范圍。然后通過將初級部件饋送到以前識別的最佳部件內(nèi)來生成次級部件。
如果識別出的輸出范圍落在多于一個的以前識別的最佳部件的輸入范圍內(nèi),則在一些情況下,決策邏輯206可配置成生成多個次級部件(與每個可能的最佳部件組合的初級部件);且在其它情況下,決策邏輯206可配置成選擇最佳部件中的一個以生成次級部件。例如,決策邏輯206可配置成選擇具有較小輸入范圍的最佳部件。
一旦對于在塊504中生成的每個初級部件生成至少一個次級部件,方法500就進(jìn)行到塊508。
在塊508處,合成模塊204合成在塊506處生成的次級部件中的每一個,分析所合成的次級部件,并基于該分析產(chǎn)生對于每個次級部件的合成度量。如上所述,合成在諸如vhdl的硬件描述語言(hdl)中實現(xiàn)的硬件設(shè)計涉及根據(jù)邏輯門將由hdl描述的期望電路行為的抽象形式轉(zhuǎn)換成硬件實現(xiàn)。合成模塊204分析每個所合成的部件以評估合成的質(zhì)量并接著產(chǎn)生代表該分析的合成度量(例如,延遲、面積、功率)。
在例如決策邏輯206在塊506處生成三個次級部件的情況下,則合成模塊204合成這三個次級部件中的每個,然后分析每個所合成的部件以生成合成度量,諸如但不限于與部件相關(guān)聯(lián)的延遲、所合成的部件的面積和/或部件的功率使用。
合成將期望輸入范圍映射到目標(biāo)輸出范圍的整個部件允許其中一個范圍減小級特別好地饋送到另一范圍減小級內(nèi)的硬件設(shè)計以優(yōu)于其中范圍減小級不特別好地饋送到另一范圍內(nèi)的其他硬件設(shè)計而被選擇。此外,合成整個部件防止當(dāng)完整的硬件設(shè)備被合成時在qor中的任何意外的下降。特別地,通過合成并分析完整的硬件設(shè)計,合成度量將包括在將多個范圍減小級連接在一起時的任何開銷。
一旦次級部件被合成且合成度量被生成,方法500就進(jìn)行到塊510到514,其中基于合成度量將次級部件中的一個選擇為將期望輸入范圍映射到目標(biāo)輸出范圍的最佳部件,對于選擇的次級部件的最大輸入范圍被確定,且選擇的次級部件被識別為最佳部件以將最大輸入范圍映射到目標(biāo)輸出范圍。塊510到514通常相應(yīng)于上面參考圖4所述的方法400的塊410到414。
在隨后的迭代中生成的初級部件可能將較大輸入范圍直接映射到與對于較小輸入范圍的以前選擇的最佳部件相同的輸出范圍。在隨后迭代的初級部件根據(jù)合成度量是“更好”的情況下,則以前識別的部件可以不以形成最終硬件設(shè)計的部分結(jié)束。
例如,決策邏輯206可以把將輸入范圍[0,20]映射到輸出范圍[0,12]的最好部件識別為部件z,并把將輸入范圍[0,30]映射到輸出范圍[0,12]的最好部件識別為部件y。如果合成度量指示部件y相對于部件z是優(yōu)選的,則部件z可以不被包括在最終硬件設(shè)計中。然而,這可能只作為合成度量是嘈雜的結(jié)果而很少發(fā)生。
現(xiàn)在參考圖6-9,其示出使用圖3到圖5的方法生成用于示例模運算的示例硬件設(shè)計。特別地,圖6示出該方法的第一迭代的結(jié)果;圖7示出該方法的第二迭代的結(jié)果;圖8示出該方法的第三迭代的結(jié)果;以及圖9示出所產(chǎn)生的硬件設(shè)計。
在圖6到9的例子中,在硬件中實現(xiàn)的示例模運算由[0,31]的輸入范圍(例如,n=5)和13的恒定除數(shù)來定義。相應(yīng)地,所需要的是生成xmod13的硬件電路,其中x是5位無符號整數(shù)。
在如圖6所示的第一迭代中,識別用于將[0,d]=[0,13]的期望輸入范圍映射到[0,d-1]=[0,12]的目標(biāo)輸出范圍的最佳部件。第一步驟是使用三種不同的減小方法(被標(biāo)記為1、2和3)來生成將期望輸入范圍映射到目標(biāo)輸出范圍的部件。特別地,使用范圍減小方法1生成部件a,使用范圍減小方法2生成部件b,以及使用范圍減小方法3生成部件c。
接著合成所生成的部件(a、b和c),并基于合成度量來選擇最好或最佳部件。在這個例子中,部件c基于合成度量被選擇為用于將[0,13]映射到[0,12]的最佳部件。
確定部件c能夠?qū)嶋H上將[0,18]的輸入范圍映射到[0,12]的相同輸出范圍,而不改變部件c,從而部件c被識別為用于將輸入范圍[0,18]映射到輸出范圍[0,12]的最佳部件。由于部件c的輸入范圍不覆蓋[0,31]的整個目標(biāo)輸入范圍,因此至少一個額外/不同的范圍減小級需要被使用以將目標(biāo)輸入范圍映射到目標(biāo)輸出范圍。
在如圖7所示的第二迭代中,識別用于將擴(kuò)大的輸入范圍映射到目標(biāo)輸出范圍的最佳部件。擴(kuò)大的輸入范圍被設(shè)置為[0,19]以包括超出在第一迭代中識別的最佳部件c的輸入范圍的一個額外數(shù)字。
第一步驟是使用三種不同的減小方法來生成映射期望輸入范圍的初級部件。特別地,使用范圍減小方法1生成新的初級部件d;以及使用范圍減小方法3生成新的初級部件f。然而,由于使用范圍減小方法2生成的部件b能夠?qū)0,24]的輸入范圍映射到[0,12],因此這是用于范圍減小方法2的初級部件。
初級部件d、b和f的輸出范圍分別被識別為[0,18]、[0,12]和[0,18]。由于部件b直接映射到目標(biāo)輸出范圍[0,12],因此初級部件b變成次級部件h。然而,由于初級部件d和f具有大于目標(biāo)輸出范圍的輸出范圍,因此它們與以前識別的最佳部件組合。在這種情況下,唯一識別的最佳部件是部件c。部件c的輸入范圍包括部件d和f的輸出范圍,因此次級部件g和i通過分別組合部件d和f與最佳部件c來生成。
接著合成次級部件(g、h和i),并基于合成度量來選擇最好或最佳次級部件。在這個例子中,基于合成度量來將次級部件g選擇為用于將[0,19]映射到[0,12]的最佳部件。
確定次級部件g能夠?qū)嶋H上將[0,24]的輸入范圍映射到[0,12]的相同輸出范圍,而不改變部件g,因此部件g被選擇為用于將輸入范圍[0,24]映射到輸出范圍[0,12]的最佳部件。
在如圖8所示的第三迭代中,識別用于將擴(kuò)大的輸入范圍映射到目標(biāo)輸出范圍的最佳部件。擴(kuò)大的輸入范圍被設(shè)置為[0,25]以包括超出在第二迭代中識別的最佳部件g的輸入范圍的一個額外數(shù)字。
第一步驟是使用三種不同的減小方法來生成映射期望輸入范圍的初級部件。特別地,使用范圍減小方法1生成新的初級部件j;以及使用范圍減小方法2生成新的初級部件k。然而,由于使用范圍減小方法3生成的部件f能夠?qū)0,24]的輸入范圍映射到[0,12],因此這是用于范圍減小方法3的初級部件。
初級部件j、k和f的輸出范圍分別被識別為[0,24]、[0,24]和[0,18]。由于初級部件j、k和f中的每個具有大于目標(biāo)輸出范圍的輸出范圍,因此它們與以前識別的最佳部件組合以生成次級部件。在這種情況中,存在兩個識別的最佳部件---c和g。最佳部件g的輸入范圍包括初級部件j和k的輸出范圍,因此通過分別組合部件j和k與最佳部件g來生成次級部件l和m。部件c的輸入范圍包括部件f的輸出范圍,因此通過組合部件f與最佳部件c來生成次級部件i。
接著合成次級部件(l、m和i),并基于合成度量來選擇最好或最佳次級部件。在這個例子中,基于合成度量來將次級部件m選擇為用于將[0,25]映射到[0,12]的最佳部件。
確定次級部件m能夠?qū)嶋H上將[0,63]的輸入范圍映射到[0,12]的相同輸出范圍,而不改變部件m,因此部件m被選擇為用于將輸入范圍[0,63]映射到目標(biāo)輸出范圍[0,12]的最佳部件。由于部件m的輸入范圍包括[0,31]的目標(biāo)輸入范圍,因此不需要另外的/不同的范圍減小級,從而該方法結(jié)束。
圖9示出包括三個范圍減小級的所產(chǎn)生的硬件設(shè)計。在第一級中,部件k使用范圍減小方法2將[0,63]的輸入范圍映射到[0,24]的輸出范圍。在第二級中,部件d使用范圍減小方法1將[0,24]的輸入范圍映射到[0,18]的輸出范圍。在第三且最后的級中,部件c使用范圍減小方法3將[0,18]的輸入范圍映射到目標(biāo)輸出范圍[0,12]。
現(xiàn)在參考示出曲線圖的圖10到圖12,曲線圖示出與使用其它方法生成的模運算電路比較的根據(jù)本文所述的方法生成的模運算電路的qor提高。
特別地,圖10示出與以納秒為單位的延遲時間(即,用于將產(chǎn)生的模值的時間)比較的對于具有11位的輸入x和6的除數(shù)的模運算電路的面積。曲線1002示出根據(jù)本文所述的方法生成的這樣的模運算電路的面積和延遲時間;曲線1004示出使用designwaretm工具生成的這樣的模運算電路的面積和延遲時間,designwaretm工具通過從x/d的標(biāo)準(zhǔn)相除部件取余數(shù)來生成模值;以及曲線1006示出使用優(yōu)化的恒定相除部件以找到division=floor(x/d)并接著返回結(jié)果=x-(division*d)來生成的這樣的模運算電路的面積和延遲時間??煽吹剑鶕?jù)本文所述的方法生成的模運算電路可產(chǎn)生比由其它兩種方法產(chǎn)生的模運算電路明顯更好的qor。
圖11示出與以納秒為單位的延遲時間(即,對于將產(chǎn)生的模值的時間)比較的對于具有16位的輸入x和13的除數(shù)的模運算電路的面積。曲線1102示出根據(jù)本文所述的方法生成的這樣的模運算電路的面積和延遲時間;曲線1104示出使用designwaretm工具生成的這樣的模運算電路的面積和延遲時間,designwaretm工具通過從x/d的標(biāo)準(zhǔn)相除部件取余數(shù)來生成模值;以及曲線1106示出使用優(yōu)化的恒定相除部件以找到division=floor(x/d)并接著返回結(jié)果=x-(division*d)來生成的這樣的模運算電路的面積和延遲時間??煽吹?,根據(jù)本文所述的方法生成的模運算電路可產(chǎn)生比由其它兩種方法產(chǎn)生的模運算電路明顯更好的qor。
圖12示出與以納秒為單位的延遲時間(即,對于將產(chǎn)生的模值的時間)比較的對于具有32位的輸入x和3139的除數(shù)的模運算電路的面積。曲線1202示出根據(jù)本文所述的方法生成的這樣的模運算電路的面積和延遲時間;曲線1204示出使用designwaretm工具生成的這樣的模運算電路的面積和延遲時間,designwaretm工具通過從x/d的標(biāo)準(zhǔn)相除部件取余數(shù)來生成模值;以及曲線1206示出使用優(yōu)化的恒定相除部件以找到division=floor(x/d)并接著返回結(jié)果=x-(division*d)來生成的這樣的模運算電路的面積和延遲時間。可看到,根據(jù)本文所述的方法生成的模運算電路可產(chǎn)生比由其它兩種方法產(chǎn)生的模運算電路明顯更好的qor。
圖13示出可被實現(xiàn)為計算和/或電子設(shè)備的任何形式的示例性基于計算的設(shè)備1300的各種部件,且其中本文所述的方法和引擎的實施方式可被實現(xiàn)。
基于計算的設(shè)備1300包括一個或多個處理器1302,其可以是微處理器、控制器或用于處理計算機(jī)可執(zhí)行指令以控制設(shè)備的操作的任何其它適當(dāng)類型的處理器,以便生成實現(xiàn)模運算的硬件設(shè)計。在例如其中使用片上系統(tǒng)架構(gòu)的一些例子中,處理器1302可包括在硬件(而不是軟件或固件)中實現(xiàn)圖3的方法的一部分的一個或多個固定功能塊(也被稱為加速器)??稍诨谟嬎愕脑O(shè)備處提供包括操作系統(tǒng)1304的平臺軟件或任何其它適當(dāng)?shù)钠脚_軟件以實現(xiàn)應(yīng)用軟件,諸如將在設(shè)備上執(zhí)行的模硬件生成引擎1306。
可使用由基于計算的設(shè)備1300可訪問的任何計算機(jī)可讀介質(zhì)提供計算機(jī)可執(zhí)行指令。計算機(jī)可讀介質(zhì)可包括例如計算機(jī)存儲介質(zhì)(諸如存儲器1308)和通信介質(zhì)。諸如存儲器1308的計算機(jī)存儲介質(zhì)(即,非臨時機(jī)器可讀介質(zhì))包括在任何方法或技術(shù)中實現(xiàn)的用于存儲信息(諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù))的易失性和非易失性的、可移動和不可移動的介質(zhì)。計算機(jī)存儲介質(zhì)包括但不限于ram、rom、eprom、eeprom、閃存或其它存儲技術(shù)、cd-rom、數(shù)字通用盤(dvd)或其它光學(xué)存儲器、盒式磁帶、磁帶、磁盤存儲器或其它磁性存儲設(shè)備或可用于存儲由計算設(shè)備訪問的信息的任何其它非傳輸介質(zhì)。相反,通信介質(zhì)可體現(xiàn)計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或在已調(diào)制數(shù)據(jù)信號(諸如載波)或其它傳輸機(jī)構(gòu)中的其它數(shù)據(jù)。如在本文定義的,計算機(jī)存儲介質(zhì)不包括通信介質(zhì)。雖然計算機(jī)存儲介質(zhì)(即,非臨時機(jī)器可讀介質(zhì),例如存儲器1308)被顯示在基于計算的設(shè)備1300內(nèi),但是將認(rèn)識到,存儲器可遠(yuǎn)程地分布或定位并經(jīng)由網(wǎng)絡(luò)或其它通信鏈路(例如,使用通信接口1310)來訪問。
基于計算的設(shè)備1300還可包括布置成向可與基于計算的設(shè)備1300分離或構(gòu)成整體的顯示設(shè)備1314顯示信息的輸入/輸出控制器。顯示信息可提供圖形用戶界面。輸入/輸出控制器1312也可布置成接收并處理來自諸如用戶輸入設(shè)備1316(例如,鼠標(biāo)或鍵盤)的一個或多個設(shè)備的輸入。這個用戶輸入設(shè)備1316可用于提供輸入范圍、除數(shù)和/或選擇標(biāo)準(zhǔn)。在實施方式中,如果顯示設(shè)備1314是觸敏顯示設(shè)備,其也可充當(dāng)用戶輸入設(shè)備1316。輸入/輸出控制器1312也可將數(shù)據(jù)輸出至除了顯示設(shè)備以外的設(shè)備,例如本地連接的打印設(shè)備(未在圖13中示出)。
現(xiàn)在將參考圖14描述在集成電路制造系統(tǒng)處處理集成電路定義數(shù)據(jù)集以便配置該系統(tǒng)來制造電子設(shè)備的例子。
圖14示出包括布局處理系統(tǒng)1404和集成電路生成系統(tǒng)1406的集成電路(ic)制造系統(tǒng)1402的例子。ic制造系統(tǒng)1402配置成接收ic定義數(shù)據(jù)集(例如,硬件設(shè)計,諸如在本文所述的模硬件設(shè)計102),處理ic集成數(shù)據(jù)集,并根據(jù)ic定義數(shù)據(jù)集生成ic。對ic定義數(shù)據(jù)集的處理配置ic制造系統(tǒng)1402以根據(jù)ic定義數(shù)據(jù)集制造集成電路。更具體地,布局處理系統(tǒng)1404配置成接收并處理ic定義數(shù)據(jù)集以確定電路布局。從ic定義數(shù)據(jù)集確定電路布局的方法在本領(lǐng)域中是已知的,且例如可涉及合成rtl代碼以例如根據(jù)邏輯部件(例如,nand、nor、and、or、mux和filp-flop部件)確定待生成的電路的門水平表示??赏ㄟ^確定用于邏輯部件的位置信息從電路的門水平表示來確定電路布局。這可自動地完成或使用用戶參與來完成,以便優(yōu)化電路布局。當(dāng)布局處理系統(tǒng)1404已確定電路布局時,它可向ic生成系統(tǒng)1406輸出電路布局定義。ic生成系統(tǒng)1406根據(jù)電路布局定義生成ic,如在本領(lǐng)域中已知的。例如,ic生成系統(tǒng)1406可實現(xiàn)半導(dǎo)體器件制造過程以生成ic,這可涉及光刻和化學(xué)處理步驟的多步驟序列,在其期間電子電路在由半導(dǎo)體材料制成的晶片上被逐漸創(chuàng)建。電路布局定義可以是可在光刻過程中使用的掩膜的形式以用于根據(jù)電路定義來生成ic??蛇x地,被提供到ic生成系統(tǒng)1406的電路布局定義可以是計算機(jī)可讀代碼的形式,ic生成系統(tǒng)1406可使用計算機(jī)可讀代碼來形成適當(dāng)?shù)难谀ひ杂糜谠谏蒳c時使用。由ic制造系統(tǒng)1402執(zhí)行的不同過程可都在一個位置上例如由一方實現(xiàn)。可選地,ic制造系統(tǒng)1402可以是分布式系統(tǒng),使得一些過程可在不同的位置處被執(zhí)行,并可由不同的方執(zhí)行。例如,可在不同的位置上和/或由不同的方執(zhí)行以下的級中的一些:(i)合成表示ic定義數(shù)據(jù)集的rtl代碼以形成待生成的電路的門級表示,(ii)基于門級表示來生成電路布局,(iii)根據(jù)電路布局來形成掩模,以及(iv)使用掩模來制造集成電路。
在其它例子中,在集成電路制造系統(tǒng)處的集成電路定義數(shù)據(jù)集的處理可配置系統(tǒng)以制造電子設(shè)備(例如,計算模值的硬件)而ic定義數(shù)據(jù)集不被處理以便確定電路布局。例如,集成電路定義數(shù)據(jù)集可定義可配置處理器(諸如fpga)的配置,且那個數(shù)據(jù)集的處理可配置ic制造系統(tǒng)以生成具有那個所定義的配置的可配置處理器(例如,通過將配置數(shù)據(jù)加載到fpga)。
在一些例子中,集成電路定義數(shù)據(jù)集可包括在由數(shù)據(jù)集定義的硬件上或結(jié)合由數(shù)據(jù)集定義的硬件運行的軟件。在圖14所示的例子中,ic生成系統(tǒng)還可由集成電路定義數(shù)據(jù)集配置成在制造集成電路時根據(jù)在集成電路定義數(shù)據(jù)集處定義的程序代碼將固件加載到那個集成電路上或以其他方式使用集成電路提供程序代碼以與集成電路一起使用。
術(shù)語“處理器”和“計算機(jī)”在本文用于指具有處理能力的任何設(shè)備或其部分,使得它可執(zhí)行指令。術(shù)語“處理器”可例如包括中央處理單元(cpu)、圖形處理單元(gpu或vpu)、物理處理單元(ppu)、無線電處理單元(rpu)、數(shù)字信號處理器(dsp)、通用處理器(例如,通用gpu)、微處理器、設(shè)計成在cpu外部加速任務(wù)的任何處理單元等。本領(lǐng)域中的技術(shù)人員將認(rèn)識到,這樣的處理能力被結(jié)合到很多不同的設(shè)備內(nèi),且因此術(shù)語“計算機(jī)”包括機(jī)頂盒、媒體播放器、數(shù)字無線電裝置、pc、服務(wù)器、移動電話、個人數(shù)字助理和很多其它設(shè)備。
本領(lǐng)域中的技術(shù)人員將認(rèn)識到,用于存儲程序指令的存儲設(shè)備可分布在網(wǎng)絡(luò)中。例如,遠(yuǎn)程計算機(jī)可存儲被描述為軟件的過程的例子。本地或終端計算機(jī)可訪問遠(yuǎn)程計算機(jī)并下載軟件的一部分或全部以運行程序??蛇x地,本地計算機(jī)可按需要下載軟件的片段或在本地終端處執(zhí)行一些軟件指令和在遠(yuǎn)程計算機(jī)(或計算機(jī)網(wǎng)絡(luò))處執(zhí)行一些指令。本領(lǐng)域中的技術(shù)人員也將認(rèn)識到,通過利用本領(lǐng)域中的技術(shù)人員已知的常規(guī)技術(shù),軟件指令的全部或一部分可由專用電路實現(xiàn),諸如dsp、可編程邏輯陣列等。
本文所述的方法可由配置有軟件的計算機(jī)執(zhí)行,軟件是存儲在有形存儲介質(zhì)上的機(jī)器可讀形式、例如包括用于配置計算機(jī)來執(zhí)行所述方法的組成部分的計算機(jī)可讀程序代碼的計算機(jī)程序的形式或包括適合于當(dāng)程序在計算機(jī)上運行時執(zhí)行本文所述的任何方法的所有步驟的計算機(jī)程序代碼裝置的計算機(jī)程序的形式,且其中計算機(jī)程序可體現(xiàn)在計算機(jī)可讀存儲介質(zhì)上。有形(或非臨時)存儲介質(zhì)的例子包括磁盤、拇指驅(qū)動器、存儲卡等,且并不包括傳播信號。軟件可適合于在并行處理器或串行處理器上執(zhí)行,使得方法步驟可以按任何適當(dāng)?shù)捻樞蚧蛲瑫r被執(zhí)行。
本文所述的硬件部件可由非臨時計算機(jī)可讀存儲介質(zhì)生成,非臨時計算機(jī)可讀存儲介質(zhì)具有在其上編碼的計算機(jī)可讀程序代碼。
其還意圖包含“描述”或定義實現(xiàn)如上所述的模塊、功能、部件或邏輯的硬件的配置的軟件,諸如hdl(硬件描述語言)軟件,如用于設(shè)計集成電路或用于配置可編程芯片使用的,以實現(xiàn)期望功能。也就是說,可提供計算機(jī)可讀存儲介質(zhì),其具有在其上編碼的用于生成配置成執(zhí)行本文所述的任何方法的處理單元或用于生成包括本文所述的任何裝置的處理單元的計算機(jī)可讀程序代碼。也就是說,計算機(jī)系統(tǒng)可配置成從定義用于組合那些電路元件的規(guī)則的數(shù)據(jù)和電路元件的定義中示出數(shù)字電路的表示,其中非臨時計算機(jī)可讀存儲介質(zhì)可具有存儲在其上的處理器可執(zhí)行指令,其當(dāng)在這樣的計算機(jī)系統(tǒng)處被執(zhí)行時使計算機(jī)系統(tǒng)生成如本文所述的處理單元。例如,非臨時計算機(jī)可讀存儲介質(zhì)可具有存儲在其上的計算機(jī)可讀指令,其當(dāng)在用于生成集成電路的表現(xiàn)形式的計算機(jī)系統(tǒng)處被執(zhí)行時使計算機(jī)系統(tǒng)生成如在本文的例子中所述的處理器的表現(xiàn)形式或生成配置成執(zhí)行如在本文的例子中所述的方法的處理器的表現(xiàn)形式。處理器的表現(xiàn)形式可以是處理器本身或處理器(例如,掩模)的表示,其可用于生成處理器。
存儲機(jī)器可執(zhí)行數(shù)據(jù)以在實現(xiàn)所公開的方面時使用的存儲器可以是非臨時介質(zhì)。非臨時介質(zhì)可以是易失性的或非易失性的。易失性非臨時介質(zhì)的例子包括基于半導(dǎo)體的存儲器,諸如sram或dram??捎糜趯崿F(xiàn)非易失性存儲器的技術(shù)的例子包括光學(xué)和磁性存儲器技術(shù)、閃存、相變存儲器、電阻式ram。
對“邏輯”的特定引用指執(zhí)行一種或多種功能的結(jié)構(gòu)。邏輯的例子包括布置成執(zhí)行那些功能的電路。例如,這樣的電路可包括晶體管和/或在制造過程中可用的其它硬件元件。作為例子,這樣的晶體管和/或其它元件可用于形成實現(xiàn)和/或包含存儲器(諸如寄存器、觸發(fā)器或鎖存器)、邏輯運算符(諸如布爾運算)、數(shù)學(xué)運算符(諸如加法器、乘法器或移位器)和互連的電路或結(jié)構(gòu)。這樣的元件可被提供作為定制電路或標(biāo)準(zhǔn)單元庫、宏或在其它抽象級處被提供??稍谔囟ǖ牟贾弥惺惯@樣的元件互連。邏輯可包括固定功能的電路,且電路可被編程以執(zhí)行一種或多種功能;這樣的編程可從固件或軟件更新或控制機(jī)制提供。被識別為執(zhí)行一種功能的邏輯也可包括實現(xiàn)子過程或組成功能的邏輯。在例子中,硬件邏輯具有實現(xiàn)固定功能操作或多個操作、狀態(tài)機(jī)或過程的電路。
本文給出的任何范圍或設(shè)備值可擴(kuò)展或改變而不失去所尋求的效果,如對技術(shù)人員將明顯的。
將理解,上面描述的益處和優(yōu)點可涉及一個實施方式或可涉及幾個實施方式。實施方式不限于解決任何或所有所陳述的問題的那些實施方式或具有任何或全部所陳述的益處和優(yōu)點的那些實施方式。
對“一個”項目的任何引用指那些項目中的一個或多個。術(shù)語“包括”在本文用于意指包括所識別的方法塊或元件,但這樣的塊或元件并不包括排他列表,且裝置可包含額外的塊或元件,以及方法可包含額外的操作或元件。此外,塊、元件和操作本身并不隱含地是封閉的。
本文描述的方法的步驟可在適當(dāng)?shù)臅r候以任何適當(dāng)?shù)捻樞蚧蛲瑫r被執(zhí)行。在附圖中的方框之間的箭頭示出方法步驟的一個示例順序,但并不意欲排除其它順序或多個步驟并行的執(zhí)行。此外,單獨的塊可從任何方法中刪除而不偏離本文描述的主題的精神和范圍。上面描述的任何例子的方面可與所描述的其它例子中的任一個的方面組合以形成另外的例子,而不失去所尋求的效果。在附圖的元件被示為由箭頭連接的情況下,將認(rèn)識到,這些箭頭示出在元件之間的通信(包括數(shù)據(jù)和控制消息)的僅僅一個示例流。在元件之間的流可以在任一方向上或在兩個方向上。
將理解,優(yōu)選實施方式的上述描述僅作為例子被給出,以及各種修改可由本領(lǐng)域中的技術(shù)人員做出。雖然上面以某個詳細(xì)程度或參考一個或多個單獨的實施方式描述了各種實施方式,但是本領(lǐng)域中的技術(shù)人員可對所公開的實施方式進(jìn)行很多變更而不偏離本發(fā)明的精神或范圍。