專利名稱:電子系統(tǒng)中的暫時輔助資源共享的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及電子系統(tǒng),更詳細地說,涉及通過資源共享來優(yōu)化電子電路。
背景技術(shù):
因為許多原因,電子系統(tǒng)一般含有復(fù)制的(duplicative)電路。復(fù)制的電路可被設(shè)計到電子系統(tǒng)中,用于實現(xiàn)并行操作和額外的數(shù)據(jù)吞吐量。例如,分組路由器使用許許多多的同樣信道來獲得所需要的吞吐量。此外,多媒體、電信、數(shù)字信號處理(DSP)和微處理器設(shè)計中的應(yīng)用自然需要關(guān)鍵電路資源的多份拷貝。另一方面,在大電路設(shè)計中,電路資源的平面復(fù)制經(jīng)常是無意識的,并不會被仔細考慮,為改善留下了空間。資源共享是可以通過共享和重新使用復(fù)制的電路來優(yōu)化電子電路的一種方式。通過在若干處理器或用戶之間共享復(fù)制的電路,資源共享使得電子系統(tǒng)在設(shè)計和制造上更加便宜和更加有效。為了使用資源共享來優(yōu)化設(shè)計,必須首先識別該復(fù)制的電路,之后在任意可能的時間將其共享。圖IA示出了根據(jù)現(xiàn)有技術(shù)中的在具有相同電路及共同輸入/輸出 (I/O)信號的模塊之間的資源共享。圖IA包括兩個相同的電路和/或功能模塊,克隆產(chǎn)品 (克隆產(chǎn)品)A 101和克隆產(chǎn)品B 102,該克隆產(chǎn)品A 101和克隆產(chǎn)品B 102分別具有同樣的I/O信號,入。(IN)。和出。(OUT)。。因為克隆產(chǎn)品A 101和克隆產(chǎn)品B 102含有復(fù)制的電路和同樣的1/0,所以克隆產(chǎn)品A 101和克隆產(chǎn)品B 102被確定為用于共享的候選物??寺‘a(chǎn)品A 101和克隆產(chǎn)品B 102中每一個包括復(fù)制的電路,該復(fù)制的電路可由克隆產(chǎn)品A 101和克隆產(chǎn)品B 102共享。通過用單個共享資源103來替換克隆產(chǎn)品A 101和克隆產(chǎn)品 B 102并適當(dāng)?shù)貙睮/O布線,可以實現(xiàn)在復(fù)制的電路克隆產(chǎn)品A 101和克隆產(chǎn)品B 102 之間共享資源??寺‘a(chǎn)品A 101和克隆產(chǎn)品B 102的功能都得到保持,但通過資源共享,電路所需要的資源減少了。資源共享可能導(dǎo)致電子電路總的尺寸減小。結(jié)果,資源共享變成了流行課題,已經(jīng)使用資源共享研究出了用于優(yōu)化電子系統(tǒng)的不同方法。在電子電路設(shè)計中,經(jīng)常執(zhí)行變換來優(yōu)化某些設(shè)計目標(biāo)。變換可用來完成資源共享,因此降低了電路所使用的面積?!昂喜⒆儞Q(folding transformation)”是用于降低集成電路所使用的硅的面積的系統(tǒng)方法之一。這種算法操作可應(yīng)用于單個功能單元用以減少其資源需求,也可應(yīng)用于多個功能單元用以減少其數(shù)量。圖IB舉例說明了根據(jù)現(xiàn)有技術(shù)的資源共享,該資源共享在具有相同或相似功能和/或電路并包括不同的I/O信號的用于共享的候選物之間使用2X合并變換。共享之前,兩個候選物克隆產(chǎn)品A 101和克隆產(chǎn)品B 102中的每一個都具有連接到同一時鐘源Ck的分開的時鐘輸入,以及不同的1/0(即,INtl 和OUTtl對應(yīng)于克隆產(chǎn)品A 101,而入I(IN1)和出^OUT1)對應(yīng)于克隆產(chǎn)品B 102)。因為克隆產(chǎn)品A 101和克隆產(chǎn)品B 102中的每一個都包含相同或相似的電路和/或功能,因此可共享克隆產(chǎn)品A 101和克隆產(chǎn)品B 102中的每一個所利用的資源。可執(zhí)行合并變換來共享資源,包括將克隆產(chǎn)品A 101和克隆產(chǎn)品B 102合并到單組公共硬件資源上,例如共享資源 103,并增加多路復(fù)用電路以在分別對應(yīng)于克隆產(chǎn)品A 101和克隆產(chǎn)品B 102的I/O之間選擇。而在本例中,兩個候選物屬于同一時鐘域,資源共享也可以在不同時鐘域的候選物之間,例如在給定的時間處候選物中只有一個候選物將被使用的情況下。在至少某些實施例中,多路復(fù)用電路包括多路復(fù)用和多路分解電路(例如圖IB中所示的MUX 105和DeMUX 106),以及選擇電路(例如選擇電路109)。在圖IB所示出的配置中,多路復(fù)用電路連接到共享資源103上,用于在克隆產(chǎn)品A 101的I/O和克隆產(chǎn)品B 102 的I/O之間交替選擇。當(dāng)選擇電路109輸出第一選擇值(比如說二進制0),該值被置于線 113上,使得MUX 105的選擇輸入133選擇對應(yīng)于克隆產(chǎn)品A 101的輸入INtl以通過MUX105 并進入到共享資源103的輸入。同樣地,置于線131上的該值(二進制0)也在DeMUX 106 的選擇輸入135處被接收,使得共享資源103的輸出通過DeMUX 106,并通過DeMUX 106的對應(yīng)于克隆產(chǎn)品A 101的輸出Out 0??商鎿Q地,當(dāng)選擇電路109輸出第二選擇值(比如說二進制1)到線131上時,該值使得MUX 105的選擇輸入133選擇對應(yīng)于克隆產(chǎn)品B 102的輸入IN1以通過MUX 105進入到共享資源103的輸入。同樣地,置于線131上的該值(二進制的1)也在DeMUX 106的選擇輸入135處被接收,使得共享資源103的輸出通過DeMUX 106,并在DeMUX 106的對應(yīng)于克隆產(chǎn)品B 102的OUT1處被輸出。這樣,即使克隆產(chǎn)品A 101和克隆產(chǎn)品B 102包含不同的I/O信號,也可共享克隆產(chǎn)品A 101和克隆產(chǎn)品B 102的資源。使用大致一半的原始資源(減去多路復(fù)用器開銷)便可保持克隆產(chǎn)品A 101和克隆產(chǎn)品B 102兩者的功能。專利號為7,093,204 (下文中用“Oktem的專利”表示)、題為“用于多信道電路的自動合成的方法和設(shè)備”的美國專利描述了一種方法和裝置,該方法和裝用于從使用合并變換的單信道電路中自動生成多信道電路的時間多路復(fù)用設(shè)計。在Oktem的專利中,單信道電路被復(fù)制N次,造成了含有N條分開的信道的多信道電路。之后該N條信道中的每一個變成了具有相同電路和不同I/O信號的用于共享的候選物。之后執(zhí)行合并變換,用于共享多信道電路的N個信道中的資源。然而,Oktem的專利改變了所接收的電路的功能,而不是在不改變其功能的情況下優(yōu)化電路?!?04專利部分內(nèi)容的接續(xù),美國專利公開號為 2007-0174794 Al擴展了 Oktem的專利,用于接收具有多個邏輯模塊實例的設(shè)計,并自動將該系統(tǒng)轉(zhuǎn)換為具有初始塊的共享時間多路復(fù)用變型的第二設(shè)計。此外,Oktem的專利沒有教導(dǎo)出于資源共享的目的,發(fā)現(xiàn)之前未知的相似或相同的電路子集。更多關(guān)于合并變換的細節(jié)可在Keshab K. Parhi, Wiley-Interscience, 1999的“VLSI數(shù)字信號處理系統(tǒng)設(shè)計和實現(xiàn)”中找到。Oktem的專利包含現(xiàn)有技術(shù)的論述,由此其被我們作為參考包括進來。Atmakuri等人的專利號為6,438,730的美國專利進一步討論了集成電路上的傳統(tǒng)資源共享。Atmakuri的專利確定了響應(yīng)于公共選擇信號,電子電路中的兩個或以上的支路是否驅(qū)動公共輸出。若是則確定判定結(jié)構(gòu)是否在支路中含有公共的算術(shù)運算,以使得設(shè)計可被優(yōu)化。資源共享與調(diào)度一起,也被認(rèn)為是高級綜合,在其中共享用于執(zhí)行多個功能的算術(shù)運算是普遍的。此外,許多之前的資源共享解決方案限于特定情況。例如和初始模塊比起來,之前的一些解決方案以非常不同的方式實現(xiàn)共享模塊,例如頻繁發(fā)生軟件程序碎片的硬件實現(xiàn),或者將初始網(wǎng)表轉(zhuǎn)換成執(zhí)行另一功能的網(wǎng)表。Milito的專利號為5,596,576、題為“用于資源共享的系統(tǒng)和方法”的美國專利陳述了向用戶動態(tài)分配資源,并以不同速率向用戶計費。在一些專利中資源共享的概念涉及通信信道或無線頻譜,例如Acampora的專利號為 4,495,619、題為“使用資源共享和編碼的用于增加的容量的發(fā)射機和接收機”。以Lou等人的專利號為7,047,344、題為“資源共享設(shè)備”的美國專利為代表的另一種類涉及共享通過總線連接的個人計算機的外圍設(shè)備,諸如打印機、鍵盤和鼠標(biāo)。Whitaker等人(以下稱作“Whitaker的專利”)的題為“使用選擇操作符的數(shù)字邏輯優(yōu)化”的美國專利6,779,158描述了 ASIC型網(wǎng)表的變換,通過晶體管和標(biāo)準(zhǔn)單元級的資源共享,并通過使用實質(zhì)上是多路復(fù)用的選擇強化的標(biāo)準(zhǔn)單元,所述變換優(yōu)化了諸如面積的設(shè)計目標(biāo)。在這些標(biāo)準(zhǔn)單元的布局上給予了很多考慮。然而該領(lǐng)域中傳統(tǒng)的常識是在映射到ASIC型門電路之前要觀察最重要的共享。當(dāng)Whitaker的專利提及可能考慮更高級的提取,其中模塊將含有多個單元,其不提供在映射到單元發(fā)生之前可以應(yīng)用的解決方案。 此外,假定沒有用Whitaker的專利中描述的ASIC型單元庫來設(shè)計FPGA,則該專利沒有應(yīng)用到FPGA上。電子電路中已使用時間多路復(fù)用資源共享。例如,J.E.Thornton在“控制數(shù)據(jù) 6600中的并行操作”,AFIPS Proceedings FJCC,第2部分,26卷,1964,3340頁中所描述的⑶C 6600計算機的外圍和控制處理器(PACP),通過循環(huán)的方式獲得共用資源的訪問權(quán)來共享執(zhí) 亍硬件。此夕卜,Tumme It shammer,Hoe禾口 Piischel的、公布在IEEE Trans, on CAD26(9)2007年9月上的“時間多路復(fù)用多常數(shù)乘法”中討論了單個常數(shù)乘法中的時間共享,用以減小數(shù)字信號處理器(DSP)應(yīng)用中的電路尺寸。然而,其技術(shù)局限于多常數(shù)乘法。Maiyuran等人的專利號為6,735,712的、的題為“用于按需資源共享的利用多時鐘交叉域的可動態(tài)配置的時鐘方案”(以下稱作“Maiyuran的專利”)描述了以不同時鐘頻率驅(qū)動的兩個或多個模塊之間或之中的資源共享。Maiyuran的專利局限于使用三個時鐘, 并且公開了一個模塊如何從其他模塊中臨時使用部分資源。Maiyuran的專利選擇性地應(yīng)用具有第一或第二時鐘的頻率的時鐘信號。這樣一種可動態(tài)配置的時鐘方案可能難于實現(xiàn), 并且可能導(dǎo)致限制性的應(yīng)用,而固定頻率的時鐘信號更實用。專利號為6,401,176, Fadavi-Ardekani等人的題為“多端口共享存儲器的多代理使用”采取了仲裁器和超級代理,該超級代理比其他代理更頻繁地使用共享存儲器。給該超級代理提供了優(yōu)先訪問權(quán),限制了代理“打開窗口”。N. Weaveret等人在2003 FPGA討論會上提出的“用于Xilinx Virtex FPGA的放置后C-slow再定時”描述了半手動的FPGA流程,其通過使用由再定時跟蹤的所有觸發(fā)器的復(fù)制品,接收電路設(shè)計并創(chuàng)建該設(shè)計的多線程版本。然而,此方法改變了設(shè)計或邏輯模塊的功能。等效的技術(shù)由Mplicity公司(M普力斯緹公司)商業(yè)化,該Mplicity公司發(fā)布了門級Hannibal工具和RTLGenghis-Khan工具。所述Harmibal工具將單個邏輯模塊變換成增強的虛擬多級邏輯塊。Genghis自動將單邏輯塊RTL變換成虛擬多級邏輯塊RTL,而Khan執(zhí)行自動門級優(yōu)化。該過程啟用開關(guān)可被設(shè)置成2x,3x或4x。Mplicity的資料公開了多核CPU的應(yīng)用。對于單個時鐘域則公開了對時鐘的處理。Mplicity的資料還公開了若干個基于塊的技術(shù),用于驗證用其工具所創(chuàng)建的多線程塊。然而,Mplicity的資料沒有公開具有不同功能的共享塊或者自動選擇用于多線程的單個或多個塊。由A. DeHon等人在FCCM 2006上提出的“分組切換vs.時間多路復(fù)用FPGA覆蓋網(wǎng)絡(luò)”的出版物,比較了分組切換網(wǎng)絡(luò)和FPGA互連的虛擬化(時間復(fù)用)以用于Butterfly Fat Tree(蝴蝶胖樹)中的稀疏計算(sparse computation)。但是此成果并未公開同步 (clocking)或使用一個以上的時鐘域。
發(fā)明內(nèi)容
本發(fā)明的至少某些實施例包括用于優(yōu)化集成電路的方法和設(shè)備,包括接收該集成電路的設(shè)計;識別兩個或多個具有相似功能的設(shè)計的子集,作為用于共享的候選物;以及通過在用于共享的每個候選物間使用合并變換來共享資源而產(chǎn)生設(shè)計的修改描述,該合并變換包括將用于共享的候選物合并到一組對每個都共有的電路資源上,并在每個用于共享的候選物的操作之間進行時間多路復(fù)用。實施例進一步包括確定用于共享的候選物中的哪個可在更高時鐘頻率下被操作; 以及在更高時鐘頻率下、在快速時鐘的交替的微周期內(nèi),執(zhí)行用于共享的候選物的時間多路復(fù)用,其中快速時鐘比初始電路的一個或多個系統(tǒng)時鐘快。實施例進一步包括確定用于共享的候選物中的哪個包括暫時不相交的功能;以及通過使用初始電路的一個或多個系統(tǒng)時鐘,執(zhí)行具有暫時不相交的功能的用于共享的候選物的時間多路復(fù)用。某些實施例包括通過生成多路復(fù)用電路,在每個用于共享的候選物的操作之間進行時間多路復(fù)用,用以在對應(yīng)于每個用于共享的候選物的輸入中時間復(fù)用,以及還包括生成多路分解電路,以用于將從設(shè)計的共享子集處接收的輸出時間多路分解。
從之后詳細的描述中并結(jié)合附圖可獲得對本發(fā)明至少某些實施例的更好的理解, 其中圖IA例示了根據(jù)現(xiàn)有技術(shù)中具有相同電路和共同輸入/輸出(I/O)信號的模塊之間的資源共享。圖IB例示了根據(jù)現(xiàn)有技術(shù)用于共享的候選物之間的使用2X合并變換的資源共享,所述候選物具有相同的或相似的功能和/或電路,并包括不同的I/O信號。圖2A例示了根據(jù)本發(fā)明示例性實施例的用于共享的候選物之間的使用快速時鐘 2X合并變換的資源共享,所述候選物具有相同或相似的功能和/或電路,并包括不同的I/O信號。圖2B例示了電路時序圖,其示出了圖2A中根據(jù)本發(fā)明示例性實施例的用于共享的2X合并的候選物之間的時間多路復(fù)用。圖2C例示了根據(jù)本發(fā)明示例性實施例的圖2A中用于共享的候選物之間使用快速時鐘2X合并變換的資源共享,該候選物還包括X-周期時序邏輯延遲。圖2D例示了根據(jù)本發(fā)明示例性實施例的圖2A中用于共享的候選物之間使用快速時鐘2X合并變換的資源共享,該候選物還包括1-周期時序延遲。圖2E例示了電路時序圖,其示出了圖2D根據(jù)本發(fā)明示例性實施例的用于共享的 2X合并的候選物之間的時間多路復(fù)用。圖3例示了根據(jù)本發(fā)明代表性實施例的用于共享的候選物之間使用快速時鐘4X 合并變換的資源共享,所述候選物具有X-周期時序延遲和不同的I/O信號。圖4例示了根據(jù)本發(fā)明的一個實施例的示例性方法,用于在共享資源內(nèi)N折 (N-pIieating)的狀態(tài)時序元件。圖5A例示了根據(jù)本發(fā)明示例性實施例的用于共享的候選物間的資源共享,該候選物包括流水線和狀態(tài)時序元件。圖5B例示了電路時序圖,該電路時序圖示出了圖5A中根據(jù)本發(fā)明示例性實施例的用于共享的候選物之間的時間多路復(fù)用。圖6A例示了循環(huán)展開。圖6B例示了根據(jù)本發(fā)明示例性實施例的循環(huán)再卷起(re-rolling)。圖7例示了根據(jù)本發(fā)明示例性實施例的連接到I/O總線的I/O客戶間的資源共享。圖8A例示了根據(jù)本發(fā)明示例性實施例的具有一個或多個未使用地址端口的存儲器中的資源共享。圖8B例示了存儲器地址位的配置的并排(side-by-side)比較。圖8C例示了分別使用3位和4位地址的可尋址存儲器單元的并排比較。圖9例示了根據(jù)本發(fā)明的示例性實施例的存儲器中的資源共享。圖IOA例示了根據(jù)本發(fā)明一個實施例在與多路復(fù)用器選擇電路耦接的交叉開關(guān)上執(zhí)行合并變換。圖IOB例示了根據(jù)本發(fā)明另一實施例在與多路復(fù)用器選擇電路耦接的交叉開關(guān)上執(zhí)行合并變換。圖IlA例示了根據(jù)本發(fā)明示例性實施例的通過N路復(fù)用共享資源的方法。圖IlB例示了根據(jù)本發(fā)明示例性實施例的通過N路復(fù)用(N-plexing)共享資源方法的更多細節(jié)。圖IlC例示了占據(jù)(account for)根據(jù)本發(fā)明示例性實施例通過圖11A-11B中的 N路復(fù)用共享資源的方法中的時序邏輯。圖IlD例示了根據(jù)本發(fā)明示例性實施例的評測共享時機的方法。圖12例示了根據(jù)本發(fā)明示例性實施例使用展開來驗證利用N路復(fù)用的資源共享的方法。圖13A例示了根據(jù)本發(fā)明示例性實施例在具有一個或多個未使用地址端口的存儲器間資源共享的方法。圖13B例示了根據(jù)本發(fā)明示例性實施例在存儲器間資源共享的方法。圖14例示了根據(jù)本發(fā)明示例性實施例將設(shè)計的一個或多個子集分解為用于資源共享的更小子集的方法。圖15例示了根據(jù)本發(fā)明示例性實施例通過再卷起展開的(unrolled)循環(huán)、使用合并變換來識別共享時機的方法。圖16例示了示例性的數(shù)據(jù)處理系統(tǒng),在該系統(tǒng)上可實施本發(fā)明的方法和設(shè)備。
具體實施例方式出于解釋的目的,為了提供對本發(fā)明透徹的理解,整個說明書列出了大量的具體細節(jié)。然而對本領(lǐng)域技術(shù)人員來說顯而易見的是,在缺少這些具體細節(jié)中一些細節(jié)的情況下也可以實現(xiàn)本發(fā)明。在其他實例中,為了避免使本發(fā)明的描述模糊,不再描述公知的或者常規(guī)的細節(jié)。I. 時丨旬g用合并變j免的Ng各g用申,子設(shè)i十
通過使用資源共享,至少某些實施例能夠優(yōu)化電子系統(tǒng)。資源共享使得電子系統(tǒng)更加便宜,也具有更好的空間效率和能效。實施例通過使用合并變換并結(jié)合同一時鐘或不同的時鐘來描述共享,而在完全相同的時序限制下,產(chǎn)生的電子系統(tǒng)能夠執(zhí)行和初始系統(tǒng)完全相同的功能,但是卻使用較少的資源來做這些。實施例可以被用來優(yōu)化電子電路,該電路在一個或多個現(xiàn)場可編程門陣列(FPGA) 上、專用集成電路(ASIC)上、微處理器(CPU)上、數(shù)字信號處理器(DSP)上、印刷電路板 (PCP)上、其他電路設(shè)計等的上面實現(xiàn)。此外,實施例找出在電子系統(tǒng)設(shè)計內(nèi)的用于共享的時機,并在一個或多個所定位的“用于共享的候選物上”執(zhí)行資源共享??梢砸粋€或多個規(guī)范級來描述這些用于共享的候選物,該規(guī)范級包括高級描述,例如芯片級或系統(tǒng)級,嵌入式系統(tǒng)級,軟件子例程級,映射網(wǎng)表級,寄存器傳輸邏輯(RTL)級,硬件描述語言(HDL)級,原理圖級,技術(shù)獨立門級,技術(shù)依賴門級,和/或電路平面布置圖級等。此外,用于共享的候選物可以是任意類型,例如一個或多個功能模塊,子電路,數(shù)據(jù)塊或代碼塊,軟件例程,環(huán)結(jié)構(gòu)體的一部分,數(shù)據(jù)流程圖的子集,和/或控制流程圖的子集等。此外,用于共享的候選物可以相互之間完全相同,或者在不同程度上有所區(qū)別,其包括一個或多個用于共享的相似候選物,用于共享的連接候選物的集合,用于共享的并非全部連接的候選物的集合,用于共享的周圍有邏輯電路的候選物,用于共享并與其他用于共享的候選物的子集相似的候選物,以及可由用于共享的特殊設(shè)計的超級候選物所代替的用于共享的候選物。在用于共享的候選物不相同的情況下,可使用控制電路來選擇輸出在候選物間有所不同的功能,用以允許候選物共享其共有的資源。本發(fā)明的實施例描述了用于識別電子系統(tǒng)中用于共享資源的候選物,將它們相互間時間多路復(fù)用,優(yōu)化性能,并驗證功能正確性的新穎機制。此處該過程被定義為N路復(fù)用 (N-plexing)。此外,更快的時鐘可能有助于減少現(xiàn)有的資源復(fù)制,用以降低面積、成本和/ 或功耗需求,特別是利用用于多個邏輯信道的片上支持。本發(fā)明的至少某些實施例接收集成電路的描述(門級網(wǎng)表,RTL描述,HDL描述,高級描述,用C語言的描述等),并以相同或其他方式產(chǎn)生經(jīng)修改的描述,其目標(biāo)是改善成本、 大小、能耗或功耗特征中的一個或多個。首要的基本策略在于識別用于共享未被同時使用的候選物,例如可以被實施來共享某些物理資源(公共的的DSP功能,MPEG-4功能等)的用于不兼容標(biāo)準(zhǔn)(GSM vs. CDMA, Quick Time vs. WINDOWS MEDIA vs. REAL VIDEO vs. DIVX 等)的通信和多媒體電路。第二基本策略在于識別用于共享的候選物,可在較高時鐘頻率下加速和/或操作該候選物,并通過多功能(例如,D0LBY7. 1家庭-影院音響的7個相同信道,畫中畫視頻流,多個TCP/IP鏈路或網(wǎng)絡(luò)電話(Voice Over IP)信道)來共享該候選物。此外,本發(fā)明預(yù)期了源自所述兩個基本策略的策略,例如功能分解。派生策略的一個實例為將用于共享的候選物(例如乘法器或FFT電路)分解成若干個相同的部件,該相同的部件可被共享,導(dǎo)致形成了具有相同功能的更小的電路。另一個實例為將兩個用于共享的候選物分解,使得能夠共享他們各自的部件。圖2A例示了根據(jù)本發(fā)明示例性實施例的用于共享的候選物之間使用快速時鐘2X 合并變換的資源共享,所述候選物具有相同的或相似的功能和/或電路,并包括不同的I/O 信號。出于公開的目的,諸如圖2A-圖7中所示的克隆產(chǎn)品A 201和克隆產(chǎn)品B 201的克隆的電路,可以是電子系統(tǒng)設(shè)計和/或描述的任意子集。此外,克隆產(chǎn)品A 201和克隆產(chǎn)品B 202指的是具有相同或相似的電路和/或功能的用于共享的任意候選物,包括具有相同電路和/或功能的候選物,和/或在電路和/或功能上以不同程度變化而不同的候選物。在共享之前,這兩個相同或相似的用于共享的候選物克隆產(chǎn)品A 201和克隆產(chǎn)品 B 202每個都具有各自的時鐘信號Ck,以及不同的1/0(例如,對應(yīng)于克隆產(chǎn)品A 201的INtl 和OUT0,以及對應(yīng)于克隆產(chǎn)品B 202的IN1和OUT1)??寺‘a(chǎn)品A 201包括IN0和OUT0,而克隆產(chǎn)品B 202包括INJPOUV出于描述的目的,假定INtl和IN1是不同的輸入,以及OUTtl 和OUT1是不同的輸出。因此,克隆產(chǎn)品A 201包含了和克隆產(chǎn)品B 202不同的輸入/輸出。 因為克隆產(chǎn)品A 201和克隆產(chǎn)品B 202包含了相同或相似的電路,所以可通過使用合并變換而共享克隆產(chǎn)品A 201和克隆產(chǎn)品B 202中的每一者所利用的資源。通過將克隆產(chǎn)品A 201和克隆產(chǎn)品B 202合并到單組公共資源、共享資源203和連接復(fù)用電路上而執(zhí)行該合并變換,以在分別對應(yīng)于克隆產(chǎn)品A201的I/O和對應(yīng)于克隆產(chǎn)品B 202的I/O之間選擇。多路復(fù)用線路包括多路復(fù)用電路和多路分解電路(例如圖2A中顯示的MUX 205 和DeMUX 206),以及選擇電路(例如選擇電路209)。在圖2A所例示的配置中,多路復(fù)用電路連接到共享資源203周圍,用以在克隆產(chǎn)品A 201的I/O和克隆產(chǎn)品B 202的I/O之間二者擇一。MUX 205可被實施為本領(lǐng)域公知和可預(yù)期的常規(guī)多路復(fù)用器,或者實施為并行多路復(fù)用器或PMUX,其假定了獨熱(one-hot)編碼選擇信號。當(dāng)然也有其他可能,例如通過使用異或(XOR)門(這兼顧了輸入和輸出),可以將反相器多路復(fù)用到旁路(線)上。更普遍地講,通過考慮功能,可執(zhí)行函數(shù)Fl(X)和F2(x)(此處χ是一個或多個輸入信號)的多路復(fù)用/多路分解,G(sel,x) = (sel ? Fl(x) :F2(x)),并使用現(xiàn)有的邏輯優(yōu)化工具來綜合其實施。因此,有各種不同的“多路復(fù)用”電路的實施。此外,時間多路復(fù)用設(shè)計子集并不具有同樣的功能,即,F(xiàn)l(X) ! =F2(x)。在發(fā)明人是Igor L. Markov和Kenneth S. McElvain的美國專利申請序列號為12,204,777、題為 “電子系統(tǒng)中的近似功能匹配”的共同待決的專利申請中教導(dǎo)了識別子集組,該識別子集組允許緊湊的(compact)多路復(fù)用形式,該申請作為參考被并入本文。該共同待決的申請也教導(dǎo)了如何創(chuàng)立超級模塊,即,多路復(fù)用形式的簡潔實施。當(dāng)選擇電路209輸出第一選擇值(比如說二進制0),該值被置于線261上,使得 MUX 205的選擇輸入263選擇對應(yīng)于克隆產(chǎn)品A 201的輸入INtl,從而通過MUX 205而進入到共享資源203的輸入。類似地,在DeMUX 206的選擇輸入265處也接收置于線261上的該值(二進制0),使得共享資源203的輸出通過DeMUX 206而在對應(yīng)于克隆產(chǎn)品A 201的 DeMUX 206的OUTtl處輸出??商鎿Q地,當(dāng)選擇電路209輸出第二選擇值(比如說二進制1) 時,該值被置于線261上,使得MUX 205的選擇輸入263選擇對應(yīng)于克隆產(chǎn)品B 202的輸入 IN1,從而通過MUX 205而進入到共享資源203的輸入。類似地,在DeMUX 206的選擇輸入 265處也接收置于線261上的該值(二進制1),使得共享資源203的輸出通過DeMUX 206 而在對應(yīng)于克隆產(chǎn)品B202的DeMUX 206的OUT1處輸出。照這樣,即使克隆產(chǎn)品A 201較之于克隆產(chǎn)品B 202包括了不同的I/O信號,也可共享克隆產(chǎn)品A 201和克隆產(chǎn)品B 202 的資源。通過使用大致一半的初始資源(即,減去多路復(fù)用電路開銷)而保持了克隆產(chǎn)品 A 201和克隆產(chǎn)品B 202的功能。上面以實例的方式給出但非限制,因為可以以本領(lǐng)域公知的不同方式實現(xiàn)多路分解電路。例如,DeMUX 206可以是常規(guī)的多路分解器??商鎿Q地,DeMUX 206可以被實施為并行多路分解器或pDeMUX,其假定了獨熱編碼選擇信號。該多路分解器用于從共享資源中分配時間多路復(fù)用輸出信號到一組接收邏輯電路,該接收邏輯電路對應(yīng)于之前由共享電路資源的相同或相似設(shè)計子集中的每一者所提供的輸出信號,其中該多路分解器包括選擇輸入,用以在基于所分配線程的接收邏輯電路間選擇。然而,可以以一組輸出使能時序電路來實現(xiàn)多路分解器電路206,以從共享資源中分配時間多路復(fù)用輸出信號到一組接收邏輯電路,該接收邏輯電路對應(yīng)于之前由共享電路資源的相同或相似設(shè)計子集中的每一者所提供的輸出信號。在這種情況下,每組輸出使能時序電路包括使能輸入,用以在基于前述所分配線程的接收邏輯電路之間選擇。此外,多路分解器206可以所分配的時間復(fù)用輸出信號的扇出電路來實現(xiàn)。在此情況下,接收邏輯本身將必須含有使能信號,用以在基于所分配線程的接收邏輯電路間選擇。其他這樣的電路配置也預(yù)期在本發(fā)明的范圍內(nèi)。為了對用于諸如克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的使用合并變換的電路元件共享資源,功能必須是暫時不相交(disjoint)或者能夠被加速到更高的時鐘頻率。暫時不相交的功能意味著輸入和/或輸出在不同時間是看得見的。也就是說,在同樣的系統(tǒng)時鐘周期期間,各自的輸入和/或輸出將永不重疊。例如,暫時不相交地功能可被置于不同的時鐘周期或者被數(shù)百萬的時鐘周期所分開。此外,不是暫時不相交的功能必須能夠在較高頻率下操作。這種功能被認(rèn)為是“同時期可見的(contemporaneously observable) ”或“暫時重疊的”功能。在“同時期可見的”或“暫時重疊的”功能的情況下,必須在同樣的系統(tǒng)時鐘的時鐘周期期間執(zhí)行這種功能。為了實現(xiàn)該功能,在一些情況下,系統(tǒng)時鐘可被加速,獲得比初始系統(tǒng)時鐘快2、3、4或甚至是16倍的快速時鐘。如果使用快速時鐘而將系統(tǒng)時鐘加速到原來的N倍,則可將N倍的功能擠進(pack into)初始系統(tǒng)時鐘的單個周期??稍诳焖贂r鐘周期所劃定的“微周期(micro-cycle) ”期間執(zhí)行此功能。例如,如果初始系統(tǒng)時鐘可被加速到2X倍,則在與初始系統(tǒng)時鐘同樣的周期期間執(zhí)行兩倍的功能。圖2A描述了以下情況,其中用于共享克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的候選物包括暫時重疊或同期可見的功能和/或操作。也就是說,用于共享克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的候選物包括一個或多個重疊輸入和/或輸出。這意味著要么同時需要克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的某些輸入,要么同時需要克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的某些輸出,或者二者兼有之。共享前,克隆產(chǎn)品A 201和克隆產(chǎn)品B 202均被由“Ck”表示的系統(tǒng)時鐘所時鐘控制。共享后,快速時鐘2X用于時鐘控制選擇電路209和共享資源203。 在這種情況下,選擇快速時鐘2X來將系統(tǒng)時鐘加速2倍。因此,快速時鐘2X在時鐘頻率上是命名為Ck的初始系統(tǒng)時鐘的二倍,該初始系統(tǒng)時鐘之前用于時鐘控制克隆產(chǎn)品A 201和克隆產(chǎn)品B 202。如上所述,選擇電路用于在分別對應(yīng)于克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的1/0 之間二選其一地做出選擇。如今快速時鐘2X被施加到選擇電路209上,選擇電路觸發(fā)快了兩倍。因此,用快速時鐘2X來時鐘控制選擇電路209創(chuàng)建了微周期,該微周期內(nèi)選擇電路在分別對應(yīng)于克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的1/0間二選其一地觸發(fā)。如今可在快速時鐘2X的周期所劃定的交替的微周期上執(zhí)行克隆產(chǎn)品A201和克隆產(chǎn)品B 202的功能。結(jié)果在初始系統(tǒng)時鐘的一個時鐘周期期間執(zhí)行克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的功能。也就是說,至少某些實施例中,現(xiàn)在使用快速時鐘在同一個時鐘周期期間執(zhí)行兩倍的在初始
16系統(tǒng)時鐘的一個時鐘周期期間被初始執(zhí)行的功能。結(jié)果,使用合并變換并結(jié)合加速的時鐘來實現(xiàn)電子系統(tǒng)中的暫時輔助資源共享。現(xiàn)參見圖2B,其例示了電路時序圖,該電路時序圖示出了圖2A中根據(jù)本發(fā)明示例性實施例的用于共享的2X合并的候選物之間的時間多路復(fù)用。正如可從圖2B中看到的那樣,初始時鐘或系統(tǒng)時鐘“Ck”通過值從0到1再返回0而循環(huán),而快速時鐘2X在同樣的時間周期內(nèi)做兩次這樣的轉(zhuǎn)換。也就是說,快速時鐘2X被加速到二倍的初始系統(tǒng)時鐘頻率。 如上所述,該快速時鐘用于建立微周期,在該微周期內(nèi),初始電路克隆產(chǎn)品A 201和克隆產(chǎn)品B 202中每一者的功能可跨過共享資源203而被時間多路復(fù)用。在圖2B中,快速時鐘2X 在to時刻從低到高轉(zhuǎn)換。至少某些實施例中,該轉(zhuǎn)換可對應(yīng)于二進制上從0到1的轉(zhuǎn)換。 然而這是以解釋而非限制的方式給出的,因為任意時鐘轉(zhuǎn)換都認(rèn)為是位于本發(fā)明公開的范圍之內(nèi)??焖贂r鐘2X在t0時刻從低到高轉(zhuǎn)換,因此時鐘選擇電路209使得選擇電路209輸出一個值(比如說二進制0)到線261上,并且進入到MUX 205的選擇輸入263上。此值可進一步使得MUX 205選擇輸入IN。,以通過MUX205而到達輸出。這并不打算限制本說明,因為快速時鐘2X從低到高的轉(zhuǎn)換可以被配置使得選擇電路209輸出不同的值并選擇MUX 205 的不同輸入。這僅僅是設(shè)計選擇。也就是說,圖2A中,可配置選擇電路209以使得在快速時鐘2X從低到高的第一次轉(zhuǎn)換期間,選擇MUX 205的輸入1隊。但是選擇電路209也可被配置,以使得在快速時鐘2X從低到高的第一次轉(zhuǎn)換期間,選擇MUX 205的輸入IN115類似地,快速時鐘2X在t0時刻從低到高轉(zhuǎn)換,因此時鐘選擇電路209使得選擇電路209輸出一個值(比如說二進制0)到線261上,并且進入到DeMUX 206的選擇輸入265 上。此值可進一步使得DeMUX 206選擇輸入OUT。,以傳到DeMUX 206的輸出。再一次地,這并不打算限制本說明,因為可以配置快速時鐘2X的從低到高的轉(zhuǎn)換,以使得選擇電路209 輸出不同的值并選擇DeMUX 206的不同輸出。這僅僅是設(shè)計選擇。也就是說,圖2A中,可配置選擇電路209,以使得在快速時鐘2X從低到高的第一次轉(zhuǎn)換期間,選擇MUX 205的輸入 IN。。但是也可配置選擇電路209,以使得在快速時鐘2X從低到高的第一次轉(zhuǎn)換期間,選擇 DeMUX 206 的輸出 OUT1。然而在這兩個情況下,置于線261上并分別在MUX 205的選擇輸入263和DeMUX 206的選擇輸入265處接收的值,使得在快速時鐘2X的周期所劃定的給定微周期期間選擇對應(yīng)于克隆產(chǎn)品A 201和/或克隆產(chǎn)品B 202的功能的交替選擇。這樣,選擇電路209可操作用來選擇正確的輸入和對應(yīng)的輸出,以啟動克隆產(chǎn)品A 201與克隆產(chǎn)品B 202之間的時間多路復(fù)用,現(xiàn)在克隆產(chǎn)品A 201和克隆產(chǎn)品B 202被合并到共享資源203上。快速時鐘2X在tl時刻從低到高轉(zhuǎn)換,因此時鐘選擇電路209使得選擇電路209 輸出一個值(比如說二進制1)到線261上,并且進入到MUX 205的選擇輸入263上。此值可進一步使得MUX 205選擇輸入IN1,通過MUX 205而到達輸出。這并不打算限制本說明, 因為可以配置快速時鐘2X的從低到高的轉(zhuǎn)換,使得選擇電路209輸出不同的值并選擇MUX 205的不同輸入。這僅僅是設(shè)計選擇。也就是說,圖2A中,可配置選擇電路209,以使得在快速時鐘2X從低到高的第二次轉(zhuǎn)換期間,選擇MUX 205的輸入IN115然而也可配置選擇電路209,以使得在快速時鐘2X從低到高的第二次轉(zhuǎn)換期間,選擇MUX 205的輸入IN。。類似地,快速時鐘2X在tl時刻從低到高轉(zhuǎn)換,因此時鐘選擇電路209使得選擇電路209輸出一個值(比如說二進制1)到線261上,并且進入到DeMUX 206的選擇輸入265 上。此值可進一步使得DeMUX 206選擇輸出OUT1,傳到DeMUX 206的輸出。再一次地,這并不打算限制本說明,因為可以配置快速時鐘2X的從低到高的轉(zhuǎn)換,使得選擇電路209輸出不同的值并選擇DeMUX 206的不同輸出。然而在這兩個例子中,置于線261上并分別在MUX 205的選擇輸入263和DeMUX 206的選擇輸入265處接收的值,使得在快速時鐘2X的周期所劃定的給定微周期期間選擇對應(yīng)于克隆產(chǎn)品A 201和/或克隆產(chǎn)品B 202的功能的交替選擇。這樣,選擇電路209可操作用于選擇正確的輸入和對應(yīng)的輸出,以啟動在克隆產(chǎn)品A 201和克隆產(chǎn)品B 202之間的時間多路復(fù)用,現(xiàn)在克隆產(chǎn)品A 201和克隆產(chǎn)品B 202被合并到共享資源203上。此外,選擇電路209的操作可被看作通過共享資源203而分配一個或多個線程?;诠蚕碣Y源的候選物數(shù)量來分配線程。通過對信號時間多路復(fù)用、通過共享資源203使用分配的線程來調(diào)整(coordinate)輸入和其對應(yīng)的輸出。每個分配的線程與快速時鐘的微周期對應(yīng),在該微周期內(nèi)執(zhí)行用于共享的各個候選物的每個操作的時間多路復(fù)用。因此,在與初始系統(tǒng)時鐘所劃定的周期相同的時間周期內(nèi),圖2A的配置使用由快速時鐘所輔助的合并變換來共享候選物克隆產(chǎn)品A 201和克隆產(chǎn)品B 202中的資源。在克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的功能暫時不相交的情況下,共有功能可被合并到共享資源203上,通過使用初始系統(tǒng)時鐘的周期來時間復(fù)用共有功能;然而,在克隆產(chǎn)品A 201和克隆產(chǎn)品B 202的功能為暫時重疊和/或同時期可見的情況下,共有功能可被合并到共享資源203上,通過使用快速時鐘所分隔的微周期來時間復(fù)用共有功能。這在圖2B中有例示,其中在t0期間,即快速時鐘2X的第一轉(zhuǎn)換期間,選擇克隆產(chǎn)品A 201的功能并允許對應(yīng)于克隆產(chǎn)品A 201的輸入INtl從MUX 205的輸入通過進入到共享資源203的輸入。來自共享資源203的輸出隨后通過對應(yīng)于克隆產(chǎn)品A 201的DeMUX 206 的輸出OUT—類似地,在tl期間,即快速時鐘2X的第二轉(zhuǎn)換期間,選擇克隆產(chǎn)品B 202的功能并允許對應(yīng)于克隆產(chǎn)品B 202的輸入IN1 WMUX 205的輸入通過進入到共享資源203。 來自共享資源203的輸出隨后通過對應(yīng)于克隆產(chǎn)品B 202的DeMUX 206的輸出0UI\。此模式無限重復(fù)。因此,使用利用快速時鐘并由時間多路復(fù)用所輔助的合并變換實質(zhì)上需要克隆產(chǎn)品A 201和克隆產(chǎn)品B 202以前所需要的一半資源。此外,使用時間輔助的合并保持了完全相同的電路功能,該電路功能最初可分別使用克隆產(chǎn)品A 201和克隆產(chǎn)品B 202而得到的。 在可將經(jīng)識別的用于共享的候選物的功能和/或電路加速到更高頻率的情況下,使用快速時鐘執(zhí)行該臨時輔助資源共享是有利的,因為由此引起的面積節(jié)省大概在10% -90%,其取決于許多因素,包括半導(dǎo)體工藝、電路制造、使用和市場-特定功率-性能的限制。在集成電路和其他電子子系統(tǒng)領(lǐng)域,當(dāng)前的潮流是將越來越多的電路和/或功能組合到更小的電路外形(profile)上。隨著集成電路和其他電子系統(tǒng)以及子系統(tǒng)變得越來越復(fù)雜,節(jié)省面積的需要與成本節(jié)約直接關(guān)聯(lián)。此外,一個重要的副產(chǎn)品是降低了由漏電流引起的功耗。漏電流直接正比于電路設(shè)計中晶體管的數(shù)量;因此,每當(dāng)整個電路或其他硬件資源減少時,由漏電流引起的耗用功率(power drain)也減少。此外,由于半導(dǎo)體做得越來越小,漏電流耗用功率的問題變得越來越顯著,并造成在許多新的半導(dǎo)體制造工藝中增加小部分總功率。
另外,此處描述的實施例允許共享時機的精確或部分匹配。如上所論述的,用于共享的候選物可包括相同或相似的電路和/或功能,并以任意規(guī)格標(biāo)準(zhǔn)被匹配??墒褂媒M合邏輯綜合來獲得部分匹配,以實現(xiàn)部分匹配的有效多路復(fù)用。此說明書打算定位用于共享的候選物,該候選物可以是電子設(shè)計的任意子集。兩個相似候選物中的每個可被重新構(gòu)造成超級模塊,該超級模塊具有每個候選物的功能。在超級模塊情況的至少某些實施例中,控制電路可用于選擇出功能和/或其他硬件資源,其在兩個相似的設(shè)計子集之間有所不同。 因此,實施例在相同或相似的電路和/或功能的任意集合中提供共享資源,該集合可以是電路設(shè)計的任意子集。因此,在更多種類的情況下,某些實施例能共享更多的資源,并具有更小的開銷,結(jié)果使得系統(tǒng)成本、大小、能量和功率需求有了更大程度的節(jié)約,并可能改善性能。當(dāng)然,在用于共享的候選物之間的功能不是暫時不相交的情況下,暫時輔助資源共享或N路復(fù)用設(shè)計需要加速系統(tǒng)時鐘的能力。在該情況下,可結(jié)合該描述的原理來使用公知的電路優(yōu)化技術(shù)。在N路復(fù)用之后可應(yīng)用公知的設(shè)計優(yōu)化來改善性能、面積、功率和其他參數(shù)。圖IlA例示了根據(jù)本發(fā)明示例性實施例通過N路復(fù)用共享資源的方法。提供了實施例用以優(yōu)化電子系統(tǒng)。為了這樣做,接收電子電路或其他電子系統(tǒng)的設(shè)計或描述(操作 1101)。讀取電子系統(tǒng)的輸入描述后,至少某些實施例識別用于共享的時機。其可通過自動或通過讀取提供的提示或通過跟隨特定指示來實現(xiàn)。如前所述,可以以任意方式來實現(xiàn)該電子電路,可以以任意水平來表示該電子電路?;谙嗤蛳嗨频碾娐泛?或功能來識別用于共享的候選物(操作1103)。至少某些實施例中,暫時不相交的候選物被識別(操作1105)和N路復(fù)用,包括將用于共享的暫時不相交的候選物合并到每個所共有的電路上 (操作1107),之后使用初始系統(tǒng)時鐘,在每個暫時不相交的候選物中時間多路復(fù)用(操作 1109)。下一步,用于共享的能夠在更高頻率下操作的候選物(操作1111)被識別并被N路復(fù)用,包括將能夠在更高頻率下操作的候選物合并到每個所共有的電路上(操作1113),之后使用快速時鐘在能夠在更高頻率下操作的每個候選物中時間多路復(fù)用(操作1115)。對于可合并的資源(用于共享的候選物),其輸出從未在同一時間被使用,實施例可以產(chǎn)生一個或多個使能信號,對于每個時鐘周期而言,該使能信號識別其輸出已被使用的候選物。對于可在更高時鐘速率下操作的可合并資源和/或物理資源而言,通過在快速時鐘的交替時鐘周期上使用它們,實施例識別能夠共享這種模塊的多個功能。本發(fā)明能夠改變或加速一個或多個系統(tǒng)時鐘中,或者它能夠用一個或多個新時鐘來豐富該系統(tǒng)。至少在某些實施例中,連到初始可合并資源的輸入可能通過選擇/多路復(fù)用器門而被重新連接(re-cormect)到共享資源上。圖IlB例示了根據(jù)本發(fā)明示例性實施例的通過N路復(fù)用共享資源方法的更多細節(jié)。至少在某些實施例中,為了執(zhí)行時間多路復(fù)用,必須添加多路復(fù)用和多路分解電路來通過共享的資源選擇合適的線程和協(xié)調(diào)的(coordinate) 信號。在例示的實施例中,多路復(fù)用電路(例如圖2A中的MUX 205)連接到共享資源的輸入,例如圖2A中的共享資源203(操作1117)。之后,多路分解電路(例如圖2A中的DeMUX 206)連接到共享資源的輸出(操作1119)。之前供應(yīng)到N個用于共享的候選物的每個候選物的輸入被連接到多路復(fù)用電路的輸入(操作1121)。之前N個用于共享的候選物的每個候選物所供應(yīng)的輸出被連接到多路分解電路的輸出(操作1123)。然后,分配線程(操作
191125),并且使用選擇電路來調(diào)整(coordinate)通過共享資源的時間多路復(fù)用信號,以適當(dāng)?shù)赜|發(fā)多路復(fù)用和多路分解電路中的輸入(操作1127)。II.占據(jù)(account for)時序邏輯圖2C例示了圖2A中根據(jù)本發(fā)明示例性實施例的在用于共享的候選物之間使用快速時鐘2X合并變換的資源共享,所述候選物還包括X-周期時序邏輯延遲。在這種情況下, 克隆產(chǎn)品A 201和克隆產(chǎn)品B 202中的每個都包含χ階的時序邏輯。時序邏輯和純組合邏輯的不同點在于每一階時序邏輯需要1-周期的延遲,用于信號通過電路。因此,χ階的時序邏輯導(dǎo)致跨過克隆產(chǎn)品A 201和克隆產(chǎn)品B 202中每一者的χ-周期時序延遲。類似地,表示要由克隆產(chǎn)品A 201和克隆產(chǎn)品B 202共享的硬件資源的共享資源203必須也包含χ-周期的時序延遲。也就是說,在輸入INtl和IN1分別到達OUTtl和OUT1前,將分別進入到χ-周期時序克隆產(chǎn)品A 201和χ-周期時序克隆產(chǎn)品B 202的輸入INtl和IN1將被延遲初始系統(tǒng)時鐘的χ個時鐘周期。相應(yīng)地,跨過共享資源203的延遲將是χ個周期。為了占據(jù)χ-周期時序候選物克隆產(chǎn)品A 201和克隆產(chǎn)品B 202中的時序延遲,也必須在選擇線267上增加χ-周期延遲,該選擇線267饋入DeMUX206的選擇輸入265。線 267上的該χ-周期延遲將適當(dāng)?shù)卣紦?jù)跨過共享資源203的χ-周期時序延遲,使得在合適的時間在DeMUX 206的選擇輸入265處接收選擇電路209置于線261上的選擇信號。在例示的實施例中,可使用延遲電路占據(jù)該延遲。在圖2C中,這是用延遲電路211實現(xiàn)的。延遲電路211也由快速時鐘2X時鐘控制。延遲電路可被設(shè)計為使用下列等式來延遲選擇信號(χ MOD N)=選擇線267的延遲,其中χ表示時鐘周期內(nèi)跨越共享資源203的時序延遲,以及其中N表示合并到共享資源上的候選物數(shù)量。使用該等式,選擇線267的延遲可被適當(dāng)?shù)卦O(shè)置以匹配跨過共享資源203的延遲。 例如,在克隆產(chǎn)品A 201、克隆產(chǎn)品B 202和共享資源203中的每一者都包括3-周期時序延遲的情況下,若χ = 3,,則公式(3 MOD 2) = 1,1-周期延遲可置于線261上,從而在其到達線267以饋入DeMUX 206的選擇輸入265之前,將選擇信號261延遲1個周期。然而,這是以解釋而非限制的方式給出的,可使用任意數(shù)量的各種電路配置來適當(dāng)?shù)匮舆t選擇信號 267和/或在合適的時間觸發(fā)DeMUX 206的輸入265。在快速時鐘2X的情況下,這樣的一個例子為在DeMUX 206的選擇輸入265處簡單地切換導(dǎo)線。操作期間,選擇電路206將由快速時鐘2X時鐘控制。在快速時鐘2X的第一周期上,選擇電路209將輸出一個值(表示0)到線261上,使得選擇輸入263選擇MUX 205的輸入之一(比如說INtl)用以通過MUX 205并被輸出到共享資源203。然而,在該值到達DeMUX 206的輸入265之前,由選擇電路209置于線261上的值將被延遲。特別是,線261上的該值將在延遲電路211處被接收,并被適當(dāng)?shù)匮舆t。選擇電路209和延遲電路211的組合選擇正確的線程,該線程在正確的時間通過共享資源203。這樣,基于分配的進程通過時間多路復(fù)用該信號通過共享資源203而調(diào)整輸入和其對應(yīng)的輸出。每個分配進程將對應(yīng)于快速時鐘的一個微周期,在該微周期中執(zhí)行各個候選物(克隆產(chǎn)品A 201和克隆產(chǎn)品B 202)的每個操作的時間多路復(fù)用。該操作更詳細地示例于圖2D-2E中。圖2D例示了圖2A中根據(jù)本發(fā)明示例性實施例的用于共享的候選物間使用快速時鐘2X合并變換的資源共享,所述候選物進一步包括 1-周期時序延遲。圖2D含有圖2C所示框圖中“共享后”部分的放大視圖。共享后,共享資源203包括鎖存器217,該鎖存器是本領(lǐng)域公知的用于順序存儲電子信號的時序邏輯元件 (通常存儲二進制值)。諸如鎖存器217的鎖存器在時鐘信號的一個相位(例如,低或高) 期間存儲其輸入的信號值,而當(dāng)時鐘信號在相反相位(例如,高或低)時允許信號“透明”通過。因此對電路中信號必須通過的每個鎖存器而言,發(fā)生時序延遲。這是以解釋而非限制的方式給出的,因為諸如觸發(fā)器的其他時序邏輯元件也會促成電子電路和系統(tǒng)中的時序延遲。圖2D中,共享資源203也包括組合邏輯電路222和223,來自MUX 205的輸入信號必須通過組合邏輯電路222和223才能到達DeMUX 206。然而不像諸如鎖存器217的時序邏輯電路,組合邏輯電路并不會促成跨過電子電路的時序延遲。因此在操作中,來自MUX 205的輸入在快速時鐘2X的第一周期期間將通過組合邏輯電路222并存儲于鎖存器217 中。在快速時鐘2X的下一周期,存儲于鎖存器217中的輸入值將通過組合邏輯電路223并被輸出到DeMUX 206的輸出。以同樣方式配置MUX 205和DeMUX 206,正如其在圖2C中那樣。此外,將延遲電路 211配置得和圖2C中一樣。在該例中,圖2D使用的選擇邏輯電路是二元計數(shù)器(modulo-2 counter) 2090然而,這是以解釋方式而非限制,因為任意選擇電路或本領(lǐng)域公知的其他機制都被認(rèn)為位于本描述的范圍。在例示的實施例中,二元計數(shù)器由快速時鐘2X時鐘控制。 所述二元計數(shù)器通過值0、1重復(fù)地相加,之后重復(fù)返回0,等等。結(jié)果,通過重復(fù)放置值0或 1到線261上、定義分別對應(yīng)于線程_0和線程_1的微周期0和微周期1,二元計數(shù)器209 執(zhí)行前述選擇電路的操作。因此,二元計數(shù)器209放置值0或1到線261上,該放置值0或 1經(jīng)由延遲電路211饋入到MUX 205的選擇輸入263和DeMUX 206的選擇輸入265。在圖2D的例子中,公式(1M0D 2) = 1個周期延遲,因此在從二元計數(shù)器209輸出到線261上的值和延遲信號267之間將有1-周期延遲。二元計數(shù)器209在值0和1之間觸發(fā)MUX 205和DeMUX 206的選擇輸入,使得分別選擇對應(yīng)于OUTtl和OUT1的INtl和IN1被選擇。當(dāng)二元計數(shù)器209在快速時鐘2X的第一周期輸出0(數(shù)到0)時,一個周期的延遲之后選擇MUX205的INtl以及DeMUX 206的OUT。。之前提供給克隆產(chǎn)品A 201的輸入INtl被輸入到共享資源203中并通過組合邏輯電路222傳播,最后存儲(或鎖存)于鎖存器217上。 在快速時鐘2X的下一周期,在鎖存器217中鎖存的值從鎖存器217被輸出,并通過組合邏輯電路223傳播到DeMUX 206的輸入。一個周期的延遲之后,選擇線267到達DeMUX 206 的選擇輸入265,并選擇DeMUX 206的輸出OUTtl?,F(xiàn)在使用時間多路復(fù)用并跨過共享資源 203,執(zhí)行之前在克隆產(chǎn)品A 201中所執(zhí)行的功能。同樣地,在快速時鐘2X的下一周期,當(dāng)二元計數(shù)器209輸出1 (數(shù)到1),一個周期的延遲之后選擇MUX 205的IN1以及DeMUX 206的0UI\。因此之前提供給克隆產(chǎn)品B 202 的輸入IN1被輸入到共享資源203中,在該共享資源中其通過組合邏輯電路222傳播,最后鎖存于鎖存器217上。在快速時鐘2X的下一周期,從鎖存器217將鎖存器217中鎖存的值輸出和通過組合邏輯電路223傳播并進入到DeMUX 206的輸入。一個周期的延遲之后,選擇線267到達DeMUX 206的選擇輸入265,并選擇DeMUX 206的輸出0UI\。如今使用時間多路復(fù)用并跨過共享資源203,執(zhí)行之前在克隆產(chǎn)品B 202中所執(zhí)行的功能。
21
圖2E詳細地例示了這些操作,其示出了圖2D根據(jù)本發(fā)明示例性實施例的用于共享的2X合并候選物之間的時間多路復(fù)用。正如所示的那樣,快速時鐘2X被加速到以前的初始系統(tǒng)時鐘Ck頻率的二倍(2X)。在例示的實施例中,在時間周期t0,快速時鐘2X在241 處的第一次正轉(zhuǎn)換(即,從0到1的轉(zhuǎn)換)期間,圖2D中的二元計數(shù)器209數(shù)到值0并將該值置于線261上(操作248)。線261上的值0使得MUX 205將入^ (InO)傳過組合邏輯電路222,將產(chǎn)生的信號傳播到鎖存器217上(也由快速時鐘2X時鐘控制),并在鎖存器217 的輸出233處被鎖存(操作250)。在此例中,因為存在位于共享資源203內(nèi)的時序邏輯元件(存器217),所以跨過延遲電路211將有1-周期延遲。從而,線267上的值將是線261上的被延遲一個周期的值。 其在圖2E的時序圖中得到例示,其中在t0時線261上的值0在tl時出現(xiàn)在線267上,tl 是快速時鐘2X的下一時鐘周期。在時間周期tl,在242處快速時鐘2X的第二次正轉(zhuǎn)換期間,圖2D中的二元計數(shù)器209數(shù)到值1并將該值置于線261上(操作249)。線261上的值1使得MUX 205將入 !(Inl)傳過組合邏輯電路222,將產(chǎn)生的信號傳播到鎖存器217上(也由快速時鐘2X時鐘控制),在鎖存器217的輸出233處被鎖存(操作251)。此外在tl處,線267上的值0使得DeMUX 206的出Q(0UtQ)被選擇(操作252)。在快速時鐘2X的每個周期重復(fù)該過程??紤]到將兩個用于共享的候選物合并到共享資源上而籌劃(cast) 了上述實施例。術(shù)語N路復(fù)用(N-plexing)指的是基于N個經(jīng)識別的用于共享的候選物而執(zhí)行N次時間多路復(fù)用的合并變換。例如,在上述例子中,用兩(2)個相同或相似的用于共享的候選物 (克隆產(chǎn)品A201和克隆產(chǎn)品B202)來執(zhí)行N路復(fù)用。然而說明書并不局限于此,因為只要對應(yīng)的電路和/或功能可被加速N倍,任意數(shù)量的用于共享的候選物就可被識別,以用于共享電路資源。圖3例示了根據(jù)本發(fā)明示例性實施例在用于共享的候選物之間使用快速時鐘 4X合并變換的資源共享,所述候選物具有χ-周期時序延遲和不同的I/O信號。在圖3的例子中,現(xiàn)在我們有四(4)個設(shè)計子集,所述設(shè)計子集用以合并到共享資源203上并被合適地時間多路復(fù)用,所述設(shè)計已被識別為用于共享的候選物。共享前,χ-周期時序克隆產(chǎn)品 A 201、η-周期時序克隆產(chǎn)品B 202、χ-周期時序克隆產(chǎn)品C 207和χ-周期時序克隆產(chǎn)品 D 208被識別為包含了相同或相似的功能和/或電子電路。圖3示出了用四(4)個經(jīng)識別的用于共享的候選物來N路復(fù)用?,F(xiàn)在這四個候選物被合并到一組其共有的資源上。因此在該實施例中,四倍的功能被壓縮到同一共享資源 203中。從而,必須提供初始系統(tǒng)時鐘頻率的四倍頻率的快速時鐘一快速時鐘4Χ,以跨過共享資源完成四倍的工作。在2路復(fù)用的例子中,快速時鐘需要是初始系統(tǒng)時鐘的兩倍快,以在同一共享資源203上執(zhí)行兩個不同的用于共享候選物的功能。在圖3的例子中,現(xiàn)在有四個用于共享的候選物,因此必須將時鐘加速到快速時鐘4Χ,使得在快速時鐘4Χ所劃定的四個微周期內(nèi)跨過共享資源203可以完成四倍的工作。此外在某些實施例中,可使用公式 (x MOD η)來計算延遲電路211中的延遲,其中χ是跨過了每一個用于共享的候選物及共享資源203的時序延遲,而N如之前那樣是共享資源的候選物的數(shù)量。諸如2位格雷碼計數(shù)器209的選擇電路現(xiàn)在在四(4)個不同的輸入/輸出組合或線程間選擇。在例示的實施例中,2位計數(shù)器用于在四個線程中的每一個上循環(huán),因為2位計數(shù)器依次計數(shù)包含0,1,2和3的四個值,之后重復(fù)返回到0。每個分配的線程對應(yīng)于如之前那樣的一個計數(shù)值,但是此例中有四個不同的線程在四個微周期間協(xié)調(diào)。2位格雷碼計數(shù)器209可用作選擇電路。格雷碼是二進制數(shù)字系統(tǒng),其中兩個連續(xù)的二進制碼區(qū)別僅在于一位。通過連續(xù)的二進制值增或減時,格雷碼具有僅改變一位值的特點。因此可以使用格雷碼計數(shù)器,以使用最不可能的二進制轉(zhuǎn)換來循環(huán)二進制值。結(jié)果,因為在電路內(nèi)切換晶體管,2位格雷碼計數(shù)器209能降低功耗量。至少在某些實施例中這是重要的,因為選擇電路以快速時鐘頻率在0,1,2和3之間不斷地切換值。然而,這是以解釋而非限制的方式給出的,因為任意以有組織和協(xié)調(diào)的方式在四個不同輸入之間重復(fù)地選擇的選擇電路都認(rèn)為是位于本發(fā)明的范圍之內(nèi)。共享資源203、2位格雷碼計數(shù)器209和延遲電路211中的每一個都由快速時鐘 4X時鐘控制。MUX 205包含了對應(yīng)于ΙΝ0、ΙΝ”ΙΝ2和IN3的四個輸入0-3。DeMUX 206包含了對應(yīng)于OUTtl、OUT1、OUT2和OUT3的四個輸出0-3。在第一微周期內(nèi),比如說微周期1,將執(zhí)行對應(yīng)于克隆產(chǎn)品A 201的從InO到OutO的功能,在微周期2內(nèi)將執(zhí)行對應(yīng)于克隆產(chǎn)品B 202的從IN1到OUT1的功能,同樣地在微周期3和4內(nèi)將分別執(zhí)行克隆產(chǎn)品C 207和克隆產(chǎn)品D 208的功能。因此,實施例需要加速該系統(tǒng)時鐘,通常加速等于或小于用于共享資源的候選物的數(shù)量N的倍數(shù)。然而,也支持更快的時鐘。只要在足夠的時鐘速率下時鐘控制N個候選物以處理給初始電路的輸入,實施例就可操作用來在經(jīng)識別的任意N個共享候選物中共享資源。圖4包括例示了根據(jù)本發(fā)明一個實施例的示例性方法的框圖,用于占據(jù)共享資源內(nèi)的狀態(tài)時序元件。共享前,電路400包括組合邏輯電路401,狀態(tài)時序元件402在組合邏輯電路401的輸入而狀態(tài)時序元件403在輸出。狀態(tài)時序元件被定義為任意的時序邏輯電路,例如位于反饋環(huán)內(nèi)的鎖存器或觸發(fā)器。立刻參考圖5Α,克隆產(chǎn)品A顯示了位于反饋環(huán)內(nèi)的時序元件的一個例子。在例示的實施例中,F(xiàn)FIa是狀態(tài)時序元件,因為它的位置在反饋環(huán)430Α內(nèi)。當(dāng)諸如圖4中的元件402和403的狀態(tài)時序元件存在于設(shè)計中用以N路復(fù)用時,每個狀態(tài)時序元件必須是N折的(N-plicated)。N折包含將每個狀態(tài)時序元件變換成N 個時序元件,如前面的那樣,其中N是被N路復(fù)用到共享資源的候選物的數(shù)量。N折包含用一串N個等時(isochronous)狀態(tài)元件來替換每個狀態(tài)時序元件。在一些實施例中,一串 N個等時狀態(tài)元件可由N階移位寄存器實現(xiàn)。在其他實施例中,諸如隨機存取存儲器(RAM) 的存儲器可用于代替一串N個等時狀態(tài)元件。共享后,至少在某些實施例中,含有組合邏輯電路401和狀態(tài)時序元件402及403 的N個候選物被合并到一組共享資源上。N個組合邏輯電路元件401被N路復(fù)用到共享的組合邏輯電路405上,以及N個狀態(tài)時序元件402和403被N折分別產(chǎn)生狀態(tài)時序元件404 和406,其中狀態(tài)時序元件404和406中的每一個都包括一串N個等時狀態(tài)元件(由N表示),詳細顯示于407中。當(dāng)能夠N折所有的時序元件時,這經(jīng)常是低效的。如果時序元件首先被識別,而之后被歸類為流水線(pipeline)或狀態(tài)時序元件,則可避免這種完全的復(fù)制。流水線時序元件跨過共享資源僅僅增加了延遲,并可用來占據(jù)圖2A的延遲電路211。 至少在某些實施例中,狀態(tài)時序元件需要N折。只要設(shè)計被多路復(fù)用N次,每個狀態(tài)時序元件一定是N折的。這樣做是為了保持每個線程的環(huán)境(context)。這在圖5A和5B中有更詳細的顯示。圖5A例示了根據(jù)本發(fā)明示例性實施例的用于共享的候選物之間的資源共享,該候選物包括流水線和狀態(tài)時序元件。在例示的實施例中,共享前候選物克隆產(chǎn)品A包括時序元件(觸發(fā)器)FF0a、FF1a、FF& 和組合邏輯電路419A和420A,而候選物克隆產(chǎn)品B包括FF0B、FFIb, FF2b和組合邏輯電路 419B和420B。因為FFIa和FFIb是時序元件且被分別包含于反饋環(huán)430A和430B中,所以它們被識別為將被N折的狀態(tài)時序元件。因為剩余的觸發(fā)器并非位于反饋環(huán)內(nèi),所以它們被識別為流水線時序元件。在例示的實施例中,共享后狀態(tài)時序邏輯電路是N折的,結(jié)果形成了一串N個等時狀態(tài)元件FFIa和FF1B。注意在共享后,N個狀態(tài)元件FFIa和FFIb仍然位于共享資源的反饋環(huán)430內(nèi)。流水線時序元件并不改變,除非它們現(xiàn)在由快速時鐘2X所時鐘控制。圖5B例示了示出了圖5A中根據(jù)本發(fā)明示例性實施例的用于共享的候選物之間的時間多路復(fù)用的時序圖。快速時鐘2X的第一正轉(zhuǎn)換發(fā)生于時間、處。正如前面那樣,快速時鐘2X初始系統(tǒng)時鐘的頻率的二倍。在時間、處,輸入^itl(對應(yīng)于線程0)從諸如圖 2A(未示出)MUX 205的多路復(fù)用電路中被選擇,并通過FF0a/FF0b傳播。Ltl (線程0)通過組合邏輯電路419繼續(xù)傳播和進入到第一 FF1,并被存儲(保持)于第一 FFl的輸出472 處,直到下一時鐘周期為止(操作441完成)。在時間、處,快速時鐘2X的第二個正轉(zhuǎn)換發(fā)生,存儲于第一 FFl的輸出472(線程0)處的值傳播到第二 FFl并被存儲于輸出471處,直到下一周期為止(操作443完成)。 同時,也在、處,輸入^i1 (線程1)從諸如圖2A的MUX 205的多路復(fù)用電路(未示出)中被選擇,并通過FF0a/FF0b傳播,繼續(xù)通過組合邏輯電路419并進入到第一 FF1,以及被保持于第一 FFl的輸出472處,直到下一時鐘周期為止(操作442完成)。在時間t2,快速時鐘2X的第三個正轉(zhuǎn)換發(fā)生,存儲于第一 FFl的輸出472(線程 1)處的值傳播到第二 FF1,并被保持于輸出471處,直到下一周期為止(操作446完成)。 同時,也在t2處,輸入^itl(線程0)從諸如圖2A的MUX 205的多路復(fù)用電路(未示出)中再一次被選擇,并通過FF0a/FF0b傳播,繼續(xù)通過組合邏輯電路419向第一 FFl前進(操作 445)。在同一時鐘周期中,保持于第二 FFl的輸出471(進程0)處的該值被分成反饋通路和前饋通道。前饋通道包含保持于第二 FFl的輸出471 (線程0)處的信號,該信號通過組合邏輯電路420傳播到FF2A/FF2B,其中該信號保持于FF2a/FF 的輸出OutcZOut1處(操作 444完成)。反饋通道包含保持于第二 FFl的輸出471(線程0)處的信號,該信號在反饋環(huán) 430周圍傳播并通過組合邏輯電路419傳播,其中該信號通過FF0a/FF0b而與來自輸入的值(線程0)邏輯組合,并進入到組合邏輯電路419。一旦來自線程0的每個值被組合和保持于第一 FFl中,操作445便完成了。在時間t3,快速時鐘2X的第四個正轉(zhuǎn)換發(fā)生,存儲于第一 FFl的輸出472 (線程0) 處的值傳播到第二 FF1,并被保持于輸出471處,直到下一周期為止(操作448完成)。同時也在t3處,輸Ah1 (線程1)從諸如圖2A的MUX 205的多路復(fù)用電路(未示出)中再一次被選擇,并通過FF0A/FF0J.播,繼續(xù)通過組合邏輯電路419向第一FFl前進(操作447)。 在同一時鐘周期中,保持于第二 FFl的輸出471處(進程1)的該值被分成反饋通路和前饋通道。前饋通道包含保持于第二 FFl的輸出471處的信號(線程1),該信號通過組合邏輯電路420傳播到FF2A/FF2B,其中該信號保持于FF2a/FF 的輸出OutcZOut1處(操作449完成)。反饋通道包含保持于第二 FFl的輸出471(線程1)處的信號,該信號在反饋環(huán)430周圍傳播并通過組合邏輯電路419傳播,其中該信號通過FF0a/FF0b而與來自輸入In1 (還是線程1)的值邏輯組合,并進入到組合邏輯電路419。一旦來自線程1的每個值被組合和保持于第一 FFl中,操作447便完成了。對于快速時鐘2X的每個周期重復(fù)該過程。通過所描述的將該狀態(tài)時序元件N折來占據(jù)狀態(tài)時序元件的反饋。以這種方式,保持通過共享資源而運行的進程。例如線程0的輸入值與線程0的反饋值組合。同樣地,線程1的輸入值與線程1的反饋值組合。該調(diào)整允許在沒有混合線程的情況下多個候選物共享包括狀態(tài)時序元件的資源。因此,在N個共享相同硬件資源的候選物間共享資源時,N折起了保持每個線程環(huán)境的作用。圖IlC例示了占據(jù)根據(jù)本發(fā)明示例性實施例的通過圖1IA-IIB中的N路復(fù)用共享資源的方法中的時序邏輯。至少在某些實施例中,必須識別用于共享的候選物內(nèi)的時序元件(操作11 )。下一步,實施例確定被識別的時序元件是否是流水線或狀態(tài)時序元件(操作1131)。一旦識別是狀態(tài)時序元件,它們可如上所述的那樣被N折(操作1133)。之后可確定和占據(jù)跨過共享資源的時序延遲(操作113 。占據(jù)跨過共享資源的時序延遲的一種這樣的方式提供了延遲電路,例如圖2A中的延遲電路211。如上所述,在N路復(fù)用后可應(yīng)用公知的設(shè)計優(yōu)化,以改善性能、面積、功率和其他參數(shù)。例如,通過該設(shè)計,寄存器再定時(retiming)可以更統(tǒng)一地分配N折觸發(fā)器,減小了關(guān)鍵路徑的長度,從而允許更快的時鐘速度或更大的時序余量(timing slack)。實際上,它對于此技術(shù)的成功可能是重要的,因為它會在整個設(shè)計中分布N路復(fù)用的觸發(fā)器(FF)。但在一些例子中,這并不需要,且可避免。III.評測和驗證圖IlD例示了根據(jù)本發(fā)明示例性實施例評測共享時機的方法。讀取電子系統(tǒng)的輸入描述后,至少在某些實施例中識別用于共享的時機。至少在某些實施例中,考慮每個可合并的資源(例如用于共享的候選物)(操作1137),并評測從N路復(fù)用資源中潛在地獲得的改善(操作1138)??煞謩e考慮每個可合并的資源。在示出的實施例中,在判定塊1139 處,確定是否已經(jīng)考慮了足夠數(shù)量的經(jīng)識別的可合并資源。如果未考慮足夠數(shù)量的可合并資源,則控制流向操作1140而考慮下一個可合并資源。如果已考慮足夠數(shù)量的可合并資源,則控制流向操作1141,在該操作中評測了每個可合并資源的等級(rank)并建立了等級閾值(操作1142)。至少在某些實施例中,等級閾值可以是截止定點(cut-off),在該點之下可合并資源并不會提供足夠的好處來證明正被N路復(fù)用。等級閾值可基于許多因素來確定,包括上述優(yōu)化參數(shù)的任意組合。一旦每個可合并資源被分級以及等級閾值已被建立,則實施例開始處理該可合并資源,從具有最高等級的可合并資源開始(操作1143)。在判定塊1144處再次考慮每個可合并資源,并確定可合并資源是否滿足等級閾值。若否,則可合并資源不包含在N路復(fù)用資源的最終輸出中(操作1148)且控制流到圖IlA0如是這樣的話,實施例提供如果可合并資源與之前已包含在最終輸出中的可合并資源兼容的話,可合并資源被N路復(fù)用并包含于最終的輸出中(操作1145)。至少在某些實施例中,如果其與之前合并的資源不兼容,則可合并資源可能不會包含于最終輸出中。例如,在考慮中的可合并資源可能是之前合并的資源的子集或超集。在這些實施例中,可合并資源可能不包含于最終輸出中??刂屏飨蚺卸▔K1146,在該處確定是否已經(jīng)評測了所有被分級的資源。若是,則控制流向圖12。若否,則控制流向操作1147,在操作1147處之前計算的等級被隨意
25地更新,之后控制流回到操作1142,在操作1142處重建等級閾值。評測、可能評分、可能執(zhí)行每個用于共享的時機??赏ㄟ^嘗試性的實施來執(zhí)行評測,評測可能會也可能不會包含于最終輸出中,這依賴于是否改善了參數(shù),所述參數(shù)例如實際的資源利用、成本、空間、性能度量、能量或功率消耗。實施例也可能用N路復(fù)用時間共享資源來驗證電子系統(tǒng)。至少在某些實施例中, 通過“展開(unfolding) ” N路復(fù)用資源而重建初始電路、功能模塊和/或附加物來執(zhí)行驗證(validating)。圖12例示了根據(jù)本發(fā)明示例性實施例使用展開來驗證利用N路復(fù)用的資源共享的方法。至少在某些實施例中,展開(或非虛擬化(imVirtUalized))N路復(fù)用共享的資源,用于重建初始電路設(shè)計。之后該重建的電路設(shè)計與初始電路設(shè)計相比較,用以驗證N路復(fù)用的設(shè)計。展開被定義為與合并相反。因此N路復(fù)用的集成電路設(shè)計的展開應(yīng)該產(chǎn)生初始電路設(shè)計,就像它在合并前的那樣。至少在某些實施例中,這包括為每個線程_ 識別碼(thread_id)克隆(clone)共享的邏輯(操作1250),需要時輸出(fan out)各自的輸入信號,以及循環(huán)遍歷(iterate through)線程選擇電路的所有可能thread_id,例如圖2A中的選擇電路209 (操作1251)。之后實施例可能通過恒定傳播各個thread_id經(jīng)由每個克隆產(chǎn)品簡化該設(shè)計,以復(fù)原初始模塊或子電路(操作1253)。恒定傳播是將公知常數(shù)值帶入表達式的過程。在這種情況下,threacLid是可能被傳播以簡化電路的公知常數(shù)。 該threacLid的恒定傳播建立了分離的時間片(time-slice),其中多路復(fù)用電路不再存在 (從N路復(fù)用電路中移除MUX和DeMUX)。恒定傳播thread_id的另一個效果在于快速時鐘將變成之后可被移除的懸擺線(dangling wire)??刂屏飨虿僮?255,其中產(chǎn)生的電路對著初始設(shè)計的對應(yīng)部分被等效核查。例如基于仿真或SAT的技術(shù)的現(xiàn)代技術(shù)可快速地證明結(jié)果設(shè)計的等效性(equivalence)。在操作1263處,如果分離的時間片與初始電路不匹配,控制流向操作1269,此處電路是無效的。如果存在匹配,修改的電路設(shè)計是有效的(操作 1265)。在其他實施例中,使用公知的仿真驅(qū)動技術(shù)來執(zhí)行驗證。一種這樣的技術(shù)包括用多個輸入/輸出組合輪換合并資源的1/0,并將結(jié)果與初始電路上執(zhí)行的相同仿真比較。例如可將用于MPEG4電路的同一電影驅(qū)動到合并資源的輸入,并確定合并資源的輸出或性能是否不同。IV.處理存儲器因為存儲元件必須將其值保持許多周期,不能通過執(zhí)行幾個線程而共享一個這樣的元件。然而,如果一直在容量以下使用一個固定大小的存儲器模塊,另一模塊可能適合未使用的地址空間。使用了不到50%容量的一對同樣大小的模塊(用于FPGA的常見例子)允許容易地整合到一個現(xiàn)有存儲器上。當(dāng)共享存儲模塊時,一個或多個擴展的地址位可在初始模塊間起邏輯選擇的作用,而不需要選擇電路或多路復(fù)用電路。圖8A例示了根據(jù)本發(fā)明示例性實施例在具有一個或多個未使用地址端口的存儲器中的資源共享。至少在某些實施例中,諸如RAM 801和RAM 802的存儲器可被識別為用于共享的候選物,或者可以是經(jīng)識別的用于共享的候選物的任意子集。如果RAM 801和RAM 802包括至少一個未使用的地址端口,則其可通過使用N路復(fù)用在不需要多路復(fù)用電路的情況下被共享。在圖8A中,RAM 801 包括數(shù)據(jù)_輸入(datajn)端口 815、地址端口 811、讀/寫端口 813和數(shù)據(jù)_輸出(data_ out)端口 817。同樣地,RAM 802包括datajn端口 815、地址端口 811、讀/寫端口 813和data_0Ut端口 817。用一個未使用的地址端口來尋址的存儲器的一個例子示于圖8B中,其例示了存儲地址位配置的并排比較。圖8B的左手邊舉例說明了具有一個未使用地址位的 4位可尋址存儲器的例子。在該例中,最高有效位(MSB)是未使用的。結(jié)果,存儲器中的可尋址存儲單元(memory location)被限制成可存取3位的地址單元。這樣一種存儲器只包括八(8)個可尋址存儲單元(見圖8C)。然而在圖8B的右手邊,說明了沒有未使用地址的 4位可尋址存儲器的例子。在該例中,存儲器內(nèi)的可尋址存儲單元包括可存取全部4位地址的所有存儲單元。這樣一種存儲器包括十六(16)個可尋址存儲單元,其是左邊存儲器的兩倍。這進一步顯示于圖8C中,圖8C例示了分別使用3位和4位尋址的可尋址存儲單元的并排比較。例如圖8C左手邊描述的那樣,使用3位尋址的結(jié)果是只有總共8(0到7)個可尋址存儲單元可用于存儲數(shù)據(jù)。相反,例如圖8C右手邊描述的那樣,使用4位地址的結(jié)果是總共16(0到1 個可尋址存儲單元可用于存儲數(shù)據(jù)。因此,通過提供兩倍的可尋址存儲單元,每個額外的存儲器地址位(或端口)導(dǎo)致存儲器容量翻倍。因此在圖8A中,如果RAM 801和RAM 802中的每個都具有未使用的地址端口,則它們中的每個將只支持一半的可尋址存儲單元,該單元將在其他方面可用。使用N路復(fù)用共享之后,通過將未使用的地址端口用作線程標(biāo)識符(thread_id),RAM 801和RAM802中的每一個可被塞入具有雙倍容量的共享存儲器內(nèi)。例如在圖8B中,如果bit3被用作thread_ id,則當(dāng)thread_id,位3(bit3) =0時,可存取最初的(first)八個可尋址單元。最初的八個可尋址單元可被分配到可合并存儲器RAM 801或RAM 802中的一者。同樣地,當(dāng)thread_ id,bit3= 1時,可存取其次的(second)八個可尋址單元。其次的八個可尋址單元可被分配到可合并存儲器RAM 801或RAM 802中的另一者。該合并技術(shù)形成了諸如圖8A中具有翻倍容量的RAM 803的共享存儲器。RAM 803包括data_in端口 821、讀/寫端口擬4和data_ out端口 825。然而RAM 803的可用地址端口 823的最高有效位(MSB)被用作thread_id 822,用于在RAM 203的內(nèi)容中選擇,而RAM 203對應(yīng)于合并候選物RAM 801和RAM 802。因此thread_id 822的值可被用于在共享的RAM 803中的RAM 801和RAM 802之間選擇。電路操作期間,建立在每個RAM中的解碼器被用于解碼存儲地址,并將其置于存儲器的地址端口上。在此例中,內(nèi)置解碼器可被影響(leveraged),以在共享雙倍容量RAM 803的每個候選物之間提供多路復(fù)用。這可以在無需多路復(fù)用電路的情況下完成,所述多路復(fù)用電路例如關(guān)于附圖2A所描述的MUX 205。圖13A例示了根據(jù)本發(fā)明示例性實施例在具有一個或多個未使用地址端口的存儲器間資源共享。至少在某些實施例中,識別兩個或多個具有一個或多個未使用地址端口的現(xiàn)有存儲器(操作1311)。使用合并變換,在兩個或多個存儲器之間共享資源,其中未使用的地址位可被用作threacLid,以在兩個或多個共享資源的存儲器之間切換(操作 1313)。最后,實施例影響內(nèi)置解碼器來執(zhí)行多路復(fù)用(操作1315)。在被N路復(fù)用的可合并資源中經(jīng)常發(fā)現(xiàn)嵌入式存儲器。當(dāng)從預(yù)設(shè)計部件的庫中取出存儲塊時,新的存儲塊可能與任意公知的配置不匹配。這發(fā)生在合并最大的可用RAM時。 例如,可能沒有另外的同樣大小的RAM來與最大可用RAM共享資源。如果最大可用RAM包括十(10)個地址端口,而其他可用于共享的RAM只包含九(9)個地址端口,則其不匹配,也不能如圖8描述的那樣被合并。同樣的問題在包含預(yù)制造存儲器的FPGA上發(fā)生得甚為頻繁。 圖9例示了根據(jù)本發(fā)明示例性實施例連接等效存儲塊以提供兩倍的容量。至少在某些實施例中,相等大小的存儲器可被匹配以用于資源共享。這示于圖9的左手邊,其中RAM 902被連接到一起以在合并電路中提供二倍的容量。然而在某些例子中,同樣尺寸的兩個RAM可能不可用。在這種情況下,現(xiàn)有的RAM可能被重新平衡以共享資源。在圖9中,RAM 901包括8位的data_in端口 911、8位的data_out端口 912、9位的地址端口 913和讀/寫端口 914。因此,RAM 901可能被重新平衡以匹配RAM 902的其他實例。此處,對于固定容量,可以利用FPGA和ASIC設(shè)計環(huán)境的性能來重新配置固定容量的存儲器I/O。實施例提供了 RAM 901的重新平衡,包括增加至少一個額外的地址端口到現(xiàn)有存儲器結(jié)構(gòu)上并減少一半的數(shù)據(jù)端口組。一旦存儲器被重新平衡,其可與其他RAM 902組合,假定在存儲器庫中或合并電路內(nèi)可用其他的RAM 902。圖1 例示了根據(jù)本發(fā)明示例性實施例在存儲器間共享資源的方法。至少在某些實施例中,可根據(jù)需要重新平衡存儲器(操作1301)。例如,如果現(xiàn)有存儲器與在大小上彼此不兼容,為了在它們上面執(zhí)行合并技術(shù),則可能需要重新平衡來匹配存儲結(jié)構(gòu)。在這些情況下,可以通過增加地址線并移除數(shù)據(jù)線、并以與圖9中示例性實施例相似的方式來重新平衡現(xiàn)有存儲器。該操作后可能隨后是通過將兼容存儲器(重新平衡的或其它形式的)合并成雙倍容量的共享存儲器(操作130 來在現(xiàn)有存儲器中共享電路。最后,實施例影響內(nèi)置解碼器以執(zhí)行多路復(fù)用(操作1305)。以這種方式,當(dāng)存儲器配置不同時,通過重新平衡而組合現(xiàn)有存儲器。V.使用內(nèi)置的功能部件在存儲器的情況下中,現(xiàn)有內(nèi)置解碼器和寄存器可被影響,而不需要額外的多路復(fù)用電路。例如,圖2中的多路復(fù)用和多路分解電路中的每一個可能是多余的,因為可影響內(nèi)置地址解碼器來提供多路復(fù)用,而存儲器中的寄存器可以提供多路分解。然而,使用集成電路設(shè)計的內(nèi)置功能部件(feature),其他配置作為共享時機存在。例如,展開的循環(huán)通常包含復(fù)制的電路和/或功能。圖6A例示了循環(huán)展開(loop unrolling)。循環(huán)結(jié)構(gòu)(例如圖6A左上方所描述的例子)是用于程序代碼的常用技術(shù)。出于各種不同的原因循環(huán)結(jié)構(gòu)用在編程中,并且基于編程語言循環(huán)結(jié)構(gòu)可采取任意數(shù)量的不同形式。圖6A右上方顯示了該圖左上方顯示的示例循環(huán)結(jié)構(gòu)的展開方案。此外,基于該圖右上方的展開循環(huán),圖6A的較低部分例示了硬件中所產(chǎn)生的電路的實例。對于循環(huán)結(jié)構(gòu)中的每次迭代,展開的循環(huán)可包括相同或相似的電路和/或功能,正如圖6A中較低部分所描述的那樣。在該圖中,相同或相似的電路包括克隆產(chǎn)品A 606、克隆產(chǎn)品B 607、克隆產(chǎn)品C 608和克隆產(chǎn)品D 609。同樣地,展開的循環(huán)也典型地包括耦合到相同或相似電路和/或功能的已注冊輸入和輸出。已注冊的I/O包括reg(注冊)601、reg 602、reg 603、reg 604和reg 605。在遍歷循環(huán)結(jié)構(gòu)的每次迭代(iteration)的最后,索引值(此例中是j)和變量(此例中是數(shù)據(jù))必須更新和存儲以用于下一個循環(huán)迭代。因此,至少在某些實施例中,來自循環(huán)結(jié)構(gòu)每次迭代的存儲值可存儲于已注冊的輸出/輸入中。結(jié)果,經(jīng)常有很多包含于展開的循環(huán)中的復(fù)制電路和/或功能。該電路可提供共享時機。諸如圖6A較低部分所示的優(yōu)化電路和/或功能的一種方法是循環(huán)再卷起 (re-roll)。參見圖6B,其例示了根據(jù)本發(fā)明示例性實施例的循環(huán)再卷起。在圖6B的上部, 展開的循環(huán)和圖6A描述的相似。至少在某些實施例中,展開的循環(huán)可被再卷起以利用共享時機。圖6B的下部例示了對應(yīng)于該圖上部的展開循環(huán)的再卷起循環(huán)。在該例中,對于展開的循環(huán)的每次迭代,可發(fā)現(xiàn)相同或相似的電路和/或功能,并被識別為可合并資源。例如, 圖6B中潛在的可合并資源可包括克隆產(chǎn)品A 606、克隆產(chǎn)品B 607、克隆產(chǎn)品C 608和克隆產(chǎn)品D 609。此外,圖6B中潛在的可合并資源也可包括reg 601、reg 602、reg 603、reg 604 和 reg 605。一旦可合并資源被識別并被確定為在展開的循環(huán)內(nèi),則根據(jù)圖6B所述的配置可合并資源可被N路復(fù)用?,F(xiàn)在,每個循環(huán)迭代在reg 601/602/603/604/605 (reg 601/602/603/604/605 是 reg 601、reg 602、reg 603、reg 604、reg 605 的共享方案)注冊。此外,包含于克隆產(chǎn)品A 606、克隆產(chǎn)品B 607、克隆產(chǎn)品C 608和克隆產(chǎn)品D 609中的復(fù)制電路可被合并到共享資源657上。反饋循環(huán)671模擬循環(huán)結(jié)構(gòu),諸如圖6A右上方所述的循環(huán)結(jié)構(gòu)。對于每次迭代,值被循環(huán)回MUX 655,并在reg 601/602/603/604/605被注冊。 在下一次迭代中,注冊值將可用于共享資源657上。再一次,共享資源的候選物數(shù)量決定了快速時鐘頻率,在這種情況下達到4X的初始系統(tǒng)時鐘。2位格雷碼計數(shù)器651被用作選擇電路,而注冊的輸出被置于reg 653中,因此在該配置中避免了輸出多路復(fù)用器的需要。圖15例示了根據(jù)本發(fā)明示例性實施例通過再卷起展開的循環(huán)、使用合并變換來識別共享時機的方法。至少在某些實施例中,接收集成電路的描述和/或設(shè)計(操作1501), 并識別位于展開的循環(huán)結(jié)構(gòu)中的用于共享的候選物(操作1505)。一旦識別了展開的循環(huán)中的用于共享的候選物,則可使用圖6B較低部所描述的合并變換來共享資源,從而以較少的資源創(chuàng)建經(jīng)修改的電路設(shè)計(操作1507)。這樣,展開的循環(huán)可被再卷起,以利用資源共享時機來優(yōu)化集成電路設(shè)計。通過使用集成電路設(shè)計的內(nèi)置功能部件,其他配置存在作為共享時機。例如,圖7 例示了根據(jù)本發(fā)明示例性實施例連接到I/O總線的I/O客戶端間的資源共享。至少在某些實施例中,根據(jù)該描述的原理可共享I/O客戶端。示范性電路設(shè)計700包括I/O客戶克隆產(chǎn)品1 702、克隆產(chǎn)品2 703、克隆產(chǎn)品3 704和克隆產(chǎn)品4 705,每一個都如圖所描述的那樣耦合到I/O總線701上。此外,設(shè)計700包括分別對應(yīng)于每個I/O客戶的I/O連接711-714。 共享之后,每個I/O客戶可被合并到共有電路上(共享的720),并使用總線701被時間復(fù)用。因為在該情況下有四(4)個可合并資源,所以利用了快速時鐘4X。此外,該情況下的選擇電路722包括由快速時鐘直接觸發(fā)的簡單觸發(fā)器。在圖7中,可影響總線701來提供多路復(fù)用。從總線上發(fā)出的信號和發(fā)往總線的信號可由總線控制器所控制,該控制器可被配置為在對應(yīng)于每個可合并資源(該可合并資源包括克隆產(chǎn)品1 702、克隆產(chǎn)品2 703、克隆產(chǎn)品3 704和克隆產(chǎn)品4 705)的輸入間選擇,所述可合并資源跨過共享的資源720而共享資源。這樣,通過總線701本身而提供了多路復(fù)用和多路分解功能。因此,多路復(fù)用器和多路分解器(例如圖2A中的MUX 205和DeMUX 206)不再是必需的??杀蛔R別為合并電路和/或功能的額外實例在圖10A-10B中有描述。圖IOA例示了根據(jù)本發(fā)明一個實施例在與多路復(fù)用器選擇電路耦接的交叉開關(guān)(crossbar)上執(zhí)行合并變換。至少在某些實施例中,可通過使用32位總線1010來執(zhí)行交叉開關(guān)1011。共享前,MUX 1001到1004中的每一個與32位總線的每一者耦接,并用于選通電路,以允許輸 Λ 1021、1022、1023和1024上的耦接總線的一者分別傳到MUX 1001到1004的輸出1025、 1026、1027、1028。在例示的實施例中,MUX 1001到1004中的每一個分別包含3位選擇輸入 1005、1006、1007 和 1008,每一個分別包含 32 位輸入 1021、1022、1023 和 1024。MUX 1001
29到1004中的每一個還分別包括32位輸出1025、1026、1027和1(^8。依賴于3位選擇輸入上的值,允許來自交叉開關(guān)1011的32位總線1010上的對應(yīng)的32位輸入通過。合并變換后,多路復(fù)用器1001、1002、1003和1004中的每一個被合并到共享MUX 1033上,并使用額外的MUX 1031來選定選擇輸入1005到1008。此外,使用多路分解器1032 來對輸出多路分解,以將共享MUX 1033的輸出分解成輸出1025到10 ,輸出1025到10 分別由之前合并的MUX 1001到1004提供。如之前例示的例子中,選擇電路1030可以是由快速時鐘觸發(fā)的觸發(fā)器。在該配置中,如例示的那樣,32位MUX可用于在眾多可合并32 位MUX間共享資源。然而,該配置較之于最優(yōu)配置包含了稍多的多路復(fù)用開銷。圖IOB例示了根據(jù)本發(fā)明另一實施例在與多路復(fù)用器選擇電路耦接的交叉開關(guān)上執(zhí)行合并變換。該圖中,通過替換具有輸出使能鎖存器(或觸發(fā)器)1053、1054、1055和1056的多路分解器 1032,圖IOA中的合并電路被進一步優(yōu)化。此外,PMUX 1031用于替換普通MUX 1031,以在輸出使能線上提供獨熱方案(one-hot scenario),該輸出使能線用于選擇哪個輸出使能鎖存器將傳遞從共享MUX 1033輸出的值。輸出使能鎖存器1053到1056用作多路分解器電路。只要選定了選擇輸入1005到1008中的一個,就相應(yīng)地選定了對應(yīng)的輸出使能鎖存器 1053 到 1056。在一些情況下,通過將一件件設(shè)計分解成更小件的設(shè)計并在更小件中尋找共享時機,可以識別可合并資源。圖14例示了根據(jù)本發(fā)明示例性實施例將一個或多個設(shè)計子集分解為用于資源共享的更小子集的方法。至少在某些實施例中,接收集成電路的設(shè)計和/或其他描述(操作1407),以及設(shè)計的一個或多個子集被分解為更小的子集,用于尋找共享時機(操作1409)。在設(shè)計的更小子集間識別了可合并資源后,資源可在更小子集間共享(操作1411)。這樣,可以發(fā)現(xiàn)另外的資源共享時機。圖16顯示了典型的數(shù)據(jù)處理系統(tǒng)的一個例子,例如數(shù)據(jù)處理系統(tǒng)1600,其可用于本發(fā)明。注意,在圖16例示了數(shù)據(jù)處理系統(tǒng)的各個部件時,并不打算代表任意特定的結(jié)構(gòu)或互連所述部件的方式,因為這些細節(jié)并非與發(fā)明密切相關(guān)。還應(yīng)該明白的是,也可使用具有更少部件或可能具有更多部件的網(wǎng)絡(luò)計算機或其他數(shù)據(jù)處理系統(tǒng)。圖16的數(shù)據(jù)處理系統(tǒng)例如可以是工作站、運行窗口(Windows)操作系統(tǒng)的個人計算機(PC)或者蘋果麥金托什 (Macintosh)計算機。如圖16所示,數(shù)據(jù)處理系統(tǒng)1601包括耦接到微處理器1603的系統(tǒng)總線1602、R0M 1607、易失性RAM 1605以及非易失性存儲器1606。微處理器1603可以如圖16的例子所示的那樣耦接到高速緩存存儲器1604上,該微處理器可以是設(shè)計成執(zhí)行任意指令集的處理器。系統(tǒng)總線1602與這些各種各樣的部件互連在一起,也將部件1603、1607、1605和1606 互連到顯示控制器和顯示設(shè)備1608,以及互連到諸如輸入/輸出(1/0)設(shè)備1610的外圍設(shè)備上,例如鍵盤、調(diào)制解調(diào)器、網(wǎng)絡(luò)接口、打印機、掃描儀、視頻攝像機和該領(lǐng)域公知的其他設(shè)備。通常,1/0設(shè)備1610通過輸入/輸出控制器1609耦接到系統(tǒng)總線1602上。易失性 RAM 1605通常被實施為動態(tài)RAM(DRAM),該動態(tài)RAM為了刷新和保持存儲器中的數(shù)據(jù),不斷地需要電源。非易失性存儲器1606通常是磁性硬盤驅(qū)動器,或磁光驅(qū),或光驅(qū),或DVDRAM或即使電源從系統(tǒng)移除也能保持?jǐn)?shù)據(jù)的其他種類的存儲器系統(tǒng)。通常,雖然不需要,但是非易失性存儲器1606也將是隨機存取存儲器。雖然圖16顯示出了非易失性存儲器1606是直接耦合到數(shù)據(jù)處理系統(tǒng)中其余部件的本地設(shè)備,但是應(yīng)該理解的是,本發(fā)明可以利用與系統(tǒng)遠離的非易失性存儲器,例如通過諸如調(diào)制解調(diào)器和以太網(wǎng)(未示出)的網(wǎng)絡(luò)接口而耦接到數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò)存儲設(shè)備。系統(tǒng)總線1602可包括一條或多條通過各種橋、控制器和/或適配器(未示出)而相互連接的總線,這在本領(lǐng)域是公知的。在一個實施例中,I/O 控制器1609包括用于控制USB外圍設(shè)備的USB(通用串行總線)適配器,和/或用于控制 IEEE-1394外圍設(shè)備的IEEE-1394總線適配器。本說明書中顯而易見的是,本發(fā)明的特征可以至少一部分具體化于軟件、硬件、固件或其組合中。也就是說,該技術(shù)可以在響應(yīng)于其處理器、執(zhí)行存儲器所包含的指令序列的計算機系統(tǒng)或其他數(shù)據(jù)處理系統(tǒng)中執(zhí)行,該處理器例如是微處理器,所述存儲器例如是ROM 1607、易失性RAM 1605、非易失性存儲器1606,高速緩存1604或遠程存儲設(shè)備(未示出)。 在各個實施例中,可結(jié)合軟件指令來使用硬件電路,用以執(zhí)行本發(fā)明。因此,該技術(shù)不限定于硬件電路和軟件的任何具體組合,或者用于由數(shù)據(jù)處理系統(tǒng)1600執(zhí)行的指令的任意特定源。此外,在該說明書中,將各種功能和操作描述為由軟件代碼執(zhí)行或由軟件代碼所引起,用于簡化描述。但是本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識到,通過這種表達所表示的是該功能由處理器執(zhí)行代碼而產(chǎn)生,該處理器例如是微處理器1603??墒褂脵C器可讀介質(zhì)來存儲軟件和數(shù)據(jù),當(dāng)數(shù)據(jù)處理系統(tǒng)1600執(zhí)行該軟件和數(shù)據(jù)時將使系統(tǒng)執(zhí)行本發(fā)明的各種方法。該可執(zhí)行軟件和數(shù)據(jù)可存儲于各種地方,例如包括圖16所示的ROM 1607、易失性RAM 1605、非易失性存儲器1606和/或高速緩存1604。部分軟件和/或數(shù)據(jù)可存儲于這些存儲設(shè)備中的任意一者中。本發(fā)明還涉及用于執(zhí)行此處操作的裝置??梢詾榱怂枰哪康亩貏e地構(gòu)造該裝置,或者該裝置可以包含通用計算機,其被存儲于計算機中的計算機程序選擇性地激活或重新配置。這樣一種計算機程序可被存儲于或發(fā)送到機器可讀介質(zhì)中。機器可讀介質(zhì)包括以機器(例如計算機、網(wǎng)絡(luò)設(shè)備、個人數(shù)字助理、制造工具、具有一組一個或多個處理器的任意設(shè)備,等等)可存取的方式提供(例如存儲和/或發(fā)送)信息的任意機制。例如,機器可讀介質(zhì)包括可記錄的/不可記錄的介質(zhì),例如但不限定于機器可讀存儲介質(zhì)(如任意類型的盤,包括軟磁盤,光盤,CD-ROM,磁光盤,只讀存儲器(ROM),隨機存取存儲器(RAM), EPR0M,EEPR0M,閃速存儲器,磁卡或光卡,或者適于存儲電子指令的任意類型的介質(zhì)),或者機器可讀傳輸(但不是存儲)介質(zhì),例如但不限定于任意類型的電子、光學(xué)、聲學(xué)或其他形式的傳播信號(例如,載波、紅外信號、數(shù)字信號等)。此外,需要明白的是,此處描述的各種實施例可由數(shù)據(jù)處理系統(tǒng)來執(zhí)行,該系統(tǒng)比系統(tǒng)1600具有更多或更少的部件;例如,這種數(shù)據(jù)處理系統(tǒng)可以是蜂窩式電話,或個人數(shù)字助理(PDA),或娛樂系統(tǒng),或媒體播放器(如iPod)或者消費電子設(shè)備等,其中的每一個可用于執(zhí)行本發(fā)明的一個或多個實施例。在前述的整個說明書中,提及的“一個實施例”、“實施例”、“一個示例性實施例”等表示描述的實施例可能包括特定的功能部件(feature)、結(jié)構(gòu)或特征,但是每個實施例可能不必包括特定的功能部件、結(jié)構(gòu)或特征。此外,這種短語不必指代同樣的實施例。當(dāng)結(jié)合實施例描述特定的功能部件、結(jié)構(gòu)或特征時,認(rèn)為將這些功能部件、結(jié)構(gòu)或特征與其他實施例結(jié)合在本領(lǐng)域技術(shù)人員的知識范圍內(nèi),不論這是否被明確描述過。只要不脫離本發(fā)明原理, 在此處所顯示的結(jié)構(gòu)和實施例中可以做各種改變。此外,可結(jié)合其他圖中顯示的實施例來使用顯示于各個圖中的實施例的功能部件。
在上面所列出的描述以及權(quán)利要求中,可以使用術(shù)語“耦接”和“連接”連同它們的派生詞。需要明白的是,這些術(shù)語并不規(guī)定為相互同義。更確切地,在特定的實施例中,“連接”用于表明兩個或多個元件相互之間直接物理或電氣連接?!榜罱印钡囊馑伎梢允莾蓚€或多個元件直接物理或電氣連接。然而,“耦接”的意思也可以是兩個或多個元件相互之間并非直接連接,不過仍然相互合作或相互作用。上面所列出的詳細描述的某些部分,以計算機存儲器內(nèi)數(shù)據(jù)位操作的算法或符號表示來呈現(xiàn)。這些算法描述或表示是數(shù)據(jù)處理領(lǐng)域技術(shù)人員向該領(lǐng)域其他技術(shù)人員最有效地傳達他們工作主旨(substance)而使用的手段。在這兒,算法通常被設(shè)想成能導(dǎo)致所需結(jié)果的操作的首尾一致的(self-consistent)序列。該操作是需要對物理量進行物理處理 (physical manipulation)的操作。雖然并不必然如此,但通常這些量以電或磁信號的形式存在,該信號能夠被存儲、轉(zhuǎn)換、組合、比較或處理等。主要是共用的原因,已證明把這些信號稱作位、值、元件、符號、特性、術(shù)語、數(shù)量等等有時是很方便的。此外,上面所列出的詳細描述的某些部分使用電路和寄存器傳輸級(RTL)表示, 用以舉例說明本發(fā)明。這些例子并不表示對本發(fā)明的限制,此處教導(dǎo)的方法也適用于行為描述和軟件程序。然而應(yīng)該記住的是,所有這些和所有相似的術(shù)語將與合適的物理量相關(guān),僅并僅是應(yīng)用到這些量上的方便標(biāo)簽。除非特別聲明,否則正如從上述提出的論述中顯而易見的那樣,應(yīng)該明白,整個說明書中,使用諸如“處理”、或“計算”、或“運算”、或“確定”、或“顯示” 等術(shù)語的論述,指代計算機系統(tǒng)或類似的電子計算設(shè)備的動作和過程,所述類似的電子計算設(shè)備將計算機系統(tǒng)寄存器和存儲器內(nèi)表示為物理(電學(xué))量的數(shù)據(jù)進行操作并變換為其他數(shù)據(jù),所述其他數(shù)據(jù)類似地表示為計算機系統(tǒng)存儲器或寄存器或其他這種信息存儲、發(fā)送或顯示設(shè)備中的物理量。另外,此處出現(xiàn)的算法和顯示,與任意特定的計算機系統(tǒng)或其他裝置并不是內(nèi)在地相關(guān)??梢勒沾颂幍慕虒?dǎo)而用程序使用各種通用系統(tǒng),或者它可證明建造更專用的裝置用于執(zhí)行該方法操作是方便的。這些用于多種系統(tǒng)的結(jié)構(gòu)來自上面的描述。此外,沒有關(guān)于任意特定的程序語言來描述本發(fā)明。應(yīng)該明白的是,各種程序語言可用于執(zhí)行此處本發(fā)明的所述教導(dǎo)。本發(fā)明的實施例可能包括上面提出的各種操作、或更少操作、或更多操作、或不同于此處所述的順序的操作。該操作可實施于機器可執(zhí)行指令中,該指令使得通用或?qū)S锰幚砥鲌?zhí)行某些操作??商鎿Q的,這些操作可由特定硬件部分執(zhí)行,該特定硬件部分包含了用于執(zhí)行該操作的硬連線邏輯,或者可由已編程的計算機部件和自定義硬件部件的任意組合
來完成。出于解釋的目的,貫穿上面的描述,為了提供對本發(fā)明透徹的理解提出了眾多具體的細節(jié)。然而對于本領(lǐng)域技術(shù)人員來說顯而易見的是,沒有這些具體細節(jié)中的某一些也可實行本發(fā)明。因此,應(yīng)該根據(jù)所附權(quán)利要求書和其法律等效物來判斷本發(fā)明的范圍和精神。
權(quán)利要求
1.一種優(yōu)化集成電路的方法,該方法包括接收所述集成電路的設(shè)計的描述;識別兩個或多個具有相似功能、但是具有一個或多個不同的輸入/輸出(I/O)信號的設(shè)計的子集,作為用于共享的候選物;以及使用合并變換產(chǎn)生設(shè)計的共享子集,該設(shè)計由在每個用于共享的候選物中共享電路資源所產(chǎn)生,該合并變換包括將用于共享的候選物合并到一組每個都共有的電路資源上,并在每個用于共享的候選物的操作間進行時間多路復(fù)用。
2.根據(jù)權(quán)利要求1所述的方法,其中,用于共享的候選物包括下列中的一個或多個具有相同功能的候選物;具有相似功能的候選物;用于共享的連接的候選物的集合;用于共享的候選物的集合,所述候選物并非全部都連接;周圍具有邏輯電路的用于共享的候選物; 具有與用于共享的其他候選物的子集相似的功能的用于共享的候選物;以及可由特別設(shè)計的超級模塊取代的用于共享的候選物。
3.根據(jù)權(quán)利要求2所述的方法,其中,采用額外的選擇電路來選出在每個用于共享的候選物之間不同的功能。
4.根據(jù)權(quán)利要求1所述的方法,還包括確定哪個用于共享的候選物在更高的時鐘頻率下可被操作;以及在更高時鐘頻率下,在由快速時鐘周期所劃定的交替的微周期內(nèi),執(zhí)行用于共享的候選物的時間多路復(fù)用。
5.根據(jù)權(quán)利要求4所述的方法,還包括;確定哪個用于共享的候選物中包括暫時不相交功能;以及通過使用時鐘,執(zhí)行具有暫時不相交功能的用于共享的候選物的時間多路復(fù)用,所述時鐘源自初始電路的一個或多個系統(tǒng)時鐘。
6.根據(jù)權(quán)利要求5所述的方法,其中,通過加速電路的初始系統(tǒng)時鐘、豐富具有一個或多個額外的時鐘信號的電路或多路復(fù)用一個或多個時鐘中的一種方式,來獲得所述快速時鐘。
7.根據(jù)權(quán)利要求6所述的方法,其中,所述快速時鐘比所述一個或多個系統(tǒng)時鐘的速度最多快至η倍,其中η等于合并到所述共享電路資源的用于共享的候選物的數(shù)量。
8.根據(jù)權(quán)利要求7所述的方法,其中,在每個用于共享的候選物的操作間進行時間多路復(fù)用還包括生成多路復(fù)用電路,用以對對應(yīng)于每個用于共享的候選物的輸入進行時間多路復(fù)用。
9.根據(jù)權(quán)利要求8所述的方法,其中,生成所述多路復(fù)用電路包括將之前提供給每個用于共享的候選物的輸入重新連接到多路復(fù)用器的輸入;以及將多路復(fù)用器的輸出連接到所述設(shè)計的共享子集的輸入上。
10.根據(jù)權(quán)利要求9所述的方法,其中,在每個用于共享的候選物的操作間進行時間多路復(fù)用還包括生成多路分解電路,用于對接收來自所述設(shè)計的共享子集的輸出進行時間多路分解。
11.根據(jù)權(quán)利要求10所述的方法,其中,生成所述多路分解電路包括將所述設(shè)計的共享子集的輸出連接到所述多路分解電路的輸入上,用以接收來自所述設(shè)計的共享子集的經(jīng)時間多路復(fù)用的輸出;以及將之前從每個所述用于共享的候選物所提供的輸出重新連接到所述多路分解電路的輸出上。
12.根據(jù)權(quán)利要求11所述的方法,該方法還包括分配線程到每個所述用于共享的候選物上;以及基于所分配的線程,通過所述設(shè)計的共享子集來調(diào)整經(jīng)時間多路復(fù)用的信號。
13.根據(jù)權(quán)利要求12所述的方法,其中,所述多路分解電路以多路分解器的形式實現(xiàn), 以將來自所述設(shè)計的共享子集的經(jīng)時間多路復(fù)用的輸出分布到一組接收邏輯電路上,其中該多路分解器包括用于基于所分配的線程在所述接收邏輯電路中進行選擇的選擇輸入。
14.根據(jù)權(quán)利要求12所述的方法,其中,所述多路分解電路是一組輸出使能時序電路, 用于將來自所述設(shè)計的共享子集的經(jīng)時間多路復(fù)用的輸出分布到一組接收邏輯電路上,其中所述一組輸出使能時序電路中的每一者包括用于基于所分配的線程在所述接收邏輯電路中能夠進行選擇的使能輸入。
15.根據(jù)權(quán)利要求12所述的方法,其中,所述多路分解電路是扇出電路,用于將來自所述設(shè)計的共享子組的經(jīng)時間多路復(fù)用的輸出分布到一組接收邏輯電路上,其中每個所述接收邏輯電路包括用于基于所分配的線程在所述接收邏輯電路中能夠進行選擇的使能信號輸入。
16.根據(jù)權(quán)利要求12所述的方法,其中,使用選擇電路來實現(xiàn)將線程分配到每個所述用于共享的候選物上和基于所分配的線程并通過所述設(shè)計的共享子集來調(diào)整經(jīng)時間多路復(fù)用的信號,用以通過觸發(fā)耦接到所述多路復(fù)用電路的選擇輸入的選擇線來在線程間進行切換,并觸發(fā)耦接到所述多路分解電路的選擇輸入的選擇線。
17.根據(jù)權(quán)利要求16所述的方法,其中所述選擇電路是η元計數(shù)器,其中η是合并到所述共享電路資源上的用于共享的候選物的數(shù)量。
18.根據(jù)權(quán)利要求17所述的方法,該方法還包括增加零個或多個周期的時序延遲到所述選擇線上,以用于占據(jù)所述設(shè)計的共享子集上的時序延遲,所述選擇線耦接到所述多路分解電路的輸入。
19.根據(jù)權(quán)利要求18所述的方法,其中,根據(jù)公式(χMOD η)來增加所述時序延遲,其中χ表示所述設(shè)計的共享子集上的所述時序延遲,以及η表示合并到所述共享電路資源的用于共享的候選物的數(shù)量。
20.根據(jù)權(quán)利要求19所述的方法,該方法還包括將所述設(shè)計的共享子集中的時序元件識別為流水線時序元件和狀態(tài)時序元件中的一種。
21.根據(jù)權(quán)利要求20所述的方法,該方法還包括將在所述設(shè)計的共享子集中被識別的每個狀態(tài)時序元件η-折,其中η-折包括將每個狀態(tài)時序元件變換成η個邏輯流水線時序元件。
22.根據(jù)權(quán)利要求21所述的方法,其中,所述η個邏輯流水線時序元件組成具有η階的移位寄存器。
23.根據(jù)權(quán)利要求1所述的方法,其中,用于共享的候選物包括軟件例程、數(shù)據(jù)流圖的子集、控制流圖的子集、功能模塊、HDL代碼塊、循環(huán)結(jié)構(gòu)體和子電路中的一個或多個。
24.根據(jù)權(quán)利要求1所述的方法,其中,待優(yōu)化的所述集成電路以現(xiàn)場可編程邏輯陣列 (FPGA)或?qū)S眉呻娐?ASIC)中的一個或多個形式得以實現(xiàn)。
25.根據(jù)權(quán)利要求24所述的方法,其中,以一個或多個規(guī)范級來描述所述電路,所述規(guī)范級包括高級描述、映射網(wǎng)表,RTL級、HDL級、原理圖級、電路級、技術(shù)獨立門級、技術(shù)依賴門布局級和平面布置圖級。
26.根據(jù)權(quán)利要求21所述的方法,該方法還包括識別所述電路內(nèi)的展開的循環(huán)結(jié)構(gòu),并將該展開的循環(huán)結(jié)構(gòu)再卷起,包括如果一個或多個用于共享的候選物在展開的循環(huán)結(jié)構(gòu)內(nèi),則通過使用合并變換來共享所述用于共享的候選物中的資源,從而生成卷回的循環(huán)結(jié)構(gòu),以及在輸入和反饋環(huán)之間多路復(fù)用,所述輸入被提供給所述展開的循環(huán)結(jié)構(gòu),所述反饋環(huán)來自所述設(shè)計的共享子集的輸出,其中所述反饋環(huán)和所述多路復(fù)用電路的剩余輸入一起被短路。
27.根據(jù)權(quán)利要求21所述的方法,該方法還包括影響所述用于共享的候選物的內(nèi)置功能部件,以在每個所述用于共享的候選物的操作間執(zhí)行時間多路復(fù)用,該內(nèi)置功能部件包括解碼器、多路復(fù)用器和總線。
28.根據(jù)權(quán)利要求27所述的方法,其中,如果所述用于共享的候選物包括現(xiàn)有存儲器結(jié)構(gòu),則執(zhí)行下列各項在用于共享的候選物內(nèi)識別現(xiàn)有存儲器結(jié)構(gòu),所述候選物至少包括一個未使用的地址端口 ;以及使用合并變換來生成共享存儲器結(jié)構(gòu),該共享存儲器結(jié)構(gòu)由共享每個所述現(xiàn)有存儲器結(jié)構(gòu)中的資源而產(chǎn)生,所述合并變換包括將現(xiàn)有存儲器結(jié)構(gòu)合并到一組每個都共有的電路資源上,并在每個現(xiàn)有存儲器結(jié)構(gòu)的操作間進行時間多路復(fù)用。
29.根據(jù)權(quán)利要求28所述的方法,其中,通過影響新的存儲器結(jié)構(gòu)中的內(nèi)置地址解碼器來執(zhí)行時間多路復(fù)用,其中所述共享存儲器結(jié)構(gòu)的至少一個未使用的地址端口被用作線程標(biāo)識符,用以在共享所述共享存儲器結(jié)構(gòu)的電路資源的現(xiàn)有結(jié)構(gòu)中進行多路復(fù)用。
30.根據(jù)權(quán)利要求29所述的方法,還包括優(yōu)化所述集成電路中的現(xiàn)有存儲器結(jié)構(gòu),包括識別作為用于共享資源的候選物的設(shè)計中的兼容和不兼容的存儲器結(jié)構(gòu);重新平衡不兼容的存儲器結(jié)構(gòu)的1/0,以在作為用于共享的候選物的設(shè)計中構(gòu)建額外的兼容的存儲器結(jié)構(gòu),所述重新平衡包括增加至少一個額外的地址端口到不兼容的存儲器結(jié)構(gòu),并將現(xiàn)有存儲器結(jié)構(gòu)的一組數(shù)據(jù)端口減半,從而產(chǎn)生重新平衡的兼容的存儲器結(jié)構(gòu), 該重新平衡的兼容的存儲器結(jié)構(gòu)具有至少一個未使用地址端口和雙倍的可尋址存儲單元數(shù)量;以及使用合并變換來生成共享存儲器結(jié)構(gòu),該共享存儲器結(jié)構(gòu)由所述兼容的存儲器結(jié)構(gòu)中的共享資源產(chǎn)生,所述合并變換包括將所述兼容的存儲器結(jié)構(gòu)合并到一組每個都共有的電路資源上,并在每個所述兼容的存儲器結(jié)構(gòu)的操作間進行時間多路復(fù)用。
31.根據(jù)權(quán)利要求30所述的方法,其中,通過影響所述共享存儲器結(jié)構(gòu)的內(nèi)置地址解碼器來執(zhí)行時間多路復(fù)用,其中所述共享存儲器結(jié)構(gòu)的至少一個未使用的地址端口被用作線程標(biāo)識符,以在共享資源的所述兼容的存儲器結(jié)構(gòu)中進行多路復(fù)用。
32.根據(jù)權(quán)利要求27所述的方法,其中,如果所述用于共享的候選物是耦接到雙向I/O總線的I/O客戶端,則該雙向I/O總線執(zhí)行所述多路復(fù)用。
33.根據(jù)權(quán)利要求21所述的方法,該方法還包括評測從所述合并變換中獲得的結(jié)果, 以確定是否在修改的電路描述的最終輸出中包括每個候選物,其中,如果從資源共享中獲得的結(jié)果改善了一組參數(shù)中的一個或多個,則每個所述用于共享的候選物被包含于所述修改的電路描述的最終輸出中,所述參數(shù)包括實際資源利用、成本、大小、空間、性能度量、以及能量和功率消耗。
34.根據(jù)權(quán)利要求33所述的方法,該方法還包括通過執(zhí)行下列各項中的一個或多個來驗證修改的電路描述檢查多個個案的結(jié)果,出于一種或多種目的在所述個案中使用所述修改的電路描述的每個資源,并將從檢查中獲得的結(jié)果與將同樣數(shù)量的多個個案應(yīng)用于初始電路設(shè)計上所獲得的結(jié)果進行比較;以及將合并的電路展開,以確定所述設(shè)計的初始電路配置是否得到恢復(fù)。
35.根據(jù)權(quán)利要求1所述的方法,該方法還包括 將所述設(shè)計的一個或多個子集分解成更小的子集;以及使用合并變換在每個更小的子集中共享電路資源,所述合并變換包括將所述更小的子集合并到一組每個都共有的電路資源上,并在每個所述更小子集的操作間進行時間多路復(fù)用。
36.根據(jù)權(quán)利要求35所述的方法,該方法還包括 確定哪個更小的子集在更高時鐘頻率下可被操作;在更高時鐘頻率下,在由快速時鐘周期所劃定的交替的微周期內(nèi),執(zhí)行更小子集的時間多路復(fù)用;確定哪個更小子集包括暫時不相交功能;以及使用初始電路的一個或多個系統(tǒng)時鐘,來執(zhí)行具有暫時不相交功能的更小子集的時間多路復(fù)用。
37.一種提供指令的計算機可讀存儲介質(zhì),當(dāng)由計算機運行時所述指令執(zhí)行用于優(yōu)化集成電路的方法,該方法包括接收所述集成電路的設(shè)計的描述;識別兩個或多個具有相似功能、但是具有一個或多個不同的輸入/輸出(I/O)信號的設(shè)計的子集,作為用于共享的候選物;以及使用合并變換產(chǎn)生所述設(shè)計的共享子集,該設(shè)計由在每個用于共享的候選物中共享電路資源所產(chǎn)生,該合并變換包括將用于共享的候選物合并到一組每個都共有的電路資源上,并在每個用于共享的候選物的操作間進行時間多路復(fù)用。
38.根據(jù)權(quán)利要求37所述的計算機可讀存儲介質(zhì),其中,用于共享的候選物包括下列中的一個或多個具有相同功能的候選物;具有相似功能的候選物;用于共享的連接的候選物的集合;用于共享的候選物的集合,這些候選物并非全部都連接;周圍具有邏輯電路的用于共享的候選物;具有與用于共享的其他候選物的子集相似的功能的用于共享的候選物;以及可由特別設(shè)計的超級模塊取代的用于共享的候選物。
39.根據(jù)權(quán)利要求37所述的計算機可讀存儲介質(zhì),所述方法還包括 確定哪個用于共享的候選物在更高的時鐘頻率下可被操作;以及在更高時鐘頻率下,在由快速時鐘周期所劃定的交替的微周期內(nèi),執(zhí)行用于共享的候選物的時間多路復(fù)用。
40.根據(jù)權(quán)利要求39所述的計算機可讀存儲介質(zhì),所述方法還包括;確定哪個用于共享的候選物包括暫時不相交功能;以及通過使用時鐘,執(zhí)行具有暫時不相交功能的用于共享的候選物的時間多路復(fù)用,所述時鐘源自初始電路的一個或多個系統(tǒng)時鐘。
41.根據(jù)權(quán)利要求40所述的計算機可讀存儲介質(zhì),其中所述快速時鐘比所述一個或多個系統(tǒng)時鐘的速度最多快至η倍,其中η等于合并到所述共享電路資源的用于共享的候選物的數(shù)量。
42.根據(jù)權(quán)利要求41所述的計算機可讀存儲介質(zhì),其中在每個用于共享的候選物的操作間進行時間多路復(fù)用還包括生成多路復(fù)用電路,用以對對應(yīng)于每個用于共享的候選物的輸入進行時間多路復(fù)用。
43.根據(jù)權(quán)利要求42所述的計算機可讀存儲介質(zhì),其中生成所述多路復(fù)用電路包括將之前提供給每個用于共享的候選物的輸入重新連接到多路復(fù)用器的輸入;以及將多路復(fù)用器的輸出連接到所述設(shè)計的共享子集輸入上。
44.根據(jù)權(quán)利要求43所述的計算機可讀存儲介質(zhì),其中在每個用于共享的候選物的操作間進行時間多路復(fù)用還包括生成多路分解電路,用于對接收來自所述設(shè)計的共享子集的輸出進行時間多路分解。
45.根據(jù)權(quán)利要求44所述的計算機可讀存儲介質(zhì),其中,生成所述多路分解電路包括將所述設(shè)計的共享子集的輸出連接到所述多路分解電路的輸入上,用以接收來自所述設(shè)計的共享子集的經(jīng)時間多路復(fù)用的輸出;以及將之前從每個所述用于共享的候選物所提供的輸出重新連接到所述多路分解電路的輸出上。
46.根據(jù)權(quán)利要求45所述的計算機可讀存儲介質(zhì),所述方法還包括分配線程到每個所述用于共享的候選物上;以及基于所分配的線程,通過所述設(shè)計的共享子集來調(diào)整經(jīng)時間多路復(fù)用的信號。
47.根據(jù)權(quán)利要求46所述的計算機可讀存儲介質(zhì),其中,所述多路分解電路以多路分解器的形式實現(xiàn),以將來自所述設(shè)計的共享子集的經(jīng)時間多路復(fù)用的輸出分布到一組接收邏輯電路上,其中該多路分解器包括用于基于所分配的線程而在接收邏輯電路中進行選擇的選擇輸入。
48.根據(jù)權(quán)利要求47所述的計算機可讀存儲介質(zhì),其中,使用選擇電路來實現(xiàn)將線程分配到每個所述用于共享的候選物上和基于所分配的線程并通過所述設(shè)計的共享子集來調(diào)整經(jīng)時間多路復(fù)用的信號,用以通過觸發(fā)耦接到所述多路復(fù)用電路的選擇輸入的選擇線來在線程間進行切換,并觸發(fā)耦接到所述多路分解電路的選擇輸入的選擇線
49.根據(jù)權(quán)利要求48所述的計算機可讀存儲介質(zhì),所述方法還包括增加零個或多個周期的時序延遲到所述選擇線上,以用于占據(jù)所述設(shè)計的共享子集上的時序延遲,所述選擇線耦接到所述多路分解電路的輸入。
50.根據(jù)權(quán)利要求49所述的計算機可讀存儲介質(zhì),所述方法還包括將所述設(shè)計的共享子集中的時序元件識別為流水線時序元件和狀態(tài)時序元件中的一種。
51.根據(jù)權(quán)利要求50所述的計算機可讀存儲介質(zhì),所述方法還包括將在所述設(shè)計的共享子集中被識別的每個狀態(tài)時序元件η-折,其中η-折包括將每個狀態(tài)時序元件變換成 η個邏輯流水線時序元件。
52.根據(jù)權(quán)利要求51所述的計算機可讀存儲介質(zhì),所述方法還包括識別電路內(nèi)的展開的循環(huán)結(jié)構(gòu),并將該展開的循環(huán)結(jié)構(gòu)再卷起,包括如果一個或多個用于共享的候選物在展開的循環(huán)結(jié)構(gòu)內(nèi),則通過使用合并變化來共享所述用于共享的候選物中的資源、從而生成卷回的循環(huán)結(jié)構(gòu),以及在輸入和反饋環(huán)之間多路復(fù)用,所述輸入被提供給所述展開的循環(huán)結(jié)構(gòu),所述反饋環(huán)從所述設(shè)計的共享子集的輸出端進行,其中所述反饋環(huán)和所述多路復(fù)用電路的剩余輸入一起被短路。
53.根據(jù)權(quán)利要求51所述的計算機可讀存儲介質(zhì),所述方法還包括影響用于共享的候選物的內(nèi)置功能部件,以在每個所述用于共享的候選物的操作間執(zhí)行時間多路復(fù)用,該內(nèi)置功能部件包括解碼器、多路復(fù)用器和總線。
54.根據(jù)權(quán)利要求53所述的計算機可讀存儲介質(zhì),其中,如果所述用于共享的候選物包括現(xiàn)有存儲器結(jié)構(gòu),則執(zhí)行下列各項在用于共享的候選物內(nèi)識別現(xiàn)有存儲器結(jié)構(gòu),所述候選物至少包括一個未使用的地址端口 ;以及使用合并變換來生成共享存儲器結(jié)構(gòu),該共享存儲器結(jié)構(gòu)由每所述現(xiàn)有存儲器結(jié)構(gòu)中共享資源而產(chǎn)生,所述合并變換包括將現(xiàn)有存儲器結(jié)構(gòu)合并到一組每個都共有的電路資源上,并在每個現(xiàn)有存儲器結(jié)構(gòu)的操作間進行時間多路復(fù)用。
55.根據(jù)權(quán)利要求53所述的計算機可讀存儲介質(zhì),所述方法還包括優(yōu)化所述集成電路中的現(xiàn)有存儲器結(jié)構(gòu),包括識別作為用于共享資源的候選物的設(shè)計中的兼容和不兼容的存儲器結(jié)構(gòu);重新平衡不兼容存儲器結(jié)構(gòu)的1/0,以在作為用于共享的候選物的設(shè)計中構(gòu)建額外的兼容的存儲器結(jié)構(gòu),所述重新平衡包括增加至少一個額外的地址端口到不兼容的存儲器結(jié)構(gòu),并將現(xiàn)有存儲器結(jié)構(gòu)的一組數(shù)據(jù)端口減半,從而產(chǎn)生重新平衡的兼容的存儲器結(jié)構(gòu),該重新平衡的兼容的存儲器結(jié)構(gòu)具有至少一個未使用地址端口和雙倍的可尋址存儲單元數(shù)量;以及使用合并變換來生成共享存儲器結(jié)構(gòu),該共享存儲器結(jié)構(gòu)由在所述兼容的存儲器結(jié)構(gòu)中共享資源而產(chǎn)生,所述合并變換包括將所述兼容的存儲器結(jié)構(gòu)合并到一組每個都共有的電路資源上,并在每個所述兼容的存儲器結(jié)構(gòu)的操作間進行時間多路復(fù)用。
56.根據(jù)權(quán)利要求51所述的計算機可讀存儲介質(zhì),評測從所述合并變換中獲得的結(jié)果,以確定是否在所述修改的電路描述的最終輸出中包括每個候選物。
57.根據(jù)權(quán)利要求56所述的計算機可讀存儲介質(zhì),所述方法還包括通過執(zhí)行下列各項中的一個或多個來驗證所述修改的電路描述檢查多個個案的結(jié)果,出于一種或多種目的在所述個案中使用所述修改的電路描述的每個資源,并將從檢查中獲得的結(jié)果與將同樣數(shù)量的多個個案應(yīng)用于初始電路設(shè)計上獲得的結(jié)果進行比較;以及將合并的電路展開,以確定所述設(shè)計的初始電路配置是否得到恢復(fù)。
58.根據(jù)權(quán)利要求57所述的計算機可讀存儲介質(zhì),所述方法還包括 將所述設(shè)計的一個或多個子集分解成更小的子集;以及使用合并變換而在每個更小的子集間共享電路資源,所述合并變換包括將所述更小的子集合并到一組每個都共有的電路資源上,并在每個所述更小子集的操作間進行時間多路復(fù)用。
59.根據(jù)權(quán)利要求58所述的計算機可讀存儲介質(zhì),還包括 確定哪個更小的子集在更高時鐘頻率下可被操作;在更高時鐘頻率下,在由快速時鐘周期所劃定的交替微的周期內(nèi),執(zhí)行更小子集的時間多路復(fù)用;確定哪個更小子集中包括暫時不相交功能;以及使用初始電路的一個或多個系統(tǒng)時鐘,來執(zhí)行具有暫時不相交功能的更小子集的時間多路復(fù)用。
全文摘要
一種用于優(yōu)化集成電路的方法和裝置,通過識別電路中具有相似功能的能夠共享電路資源的功能模塊,以及產(chǎn)生電路的修改的描述來優(yōu)化集成電路,在該電路中將相似功能模塊被合并到共有電路資源上并使用初始系統(tǒng)時鐘或快速時鐘來時間復(fù)用該相似功能模塊。
文檔編號G06F7/57GK102369508SQ200980143247
公開日2012年3月7日 申請日期2009年7月24日 優(yōu)先權(quán)日2008年9月4日
發(fā)明者I·L·馬爾科夫, K·S·麥克埃爾文 申請人:新思公司