再生邏輯塊以實現(xiàn)提高的吞吐量的制作方法
【專利說明】
【背景技術】
[0001]通常期望增大通過處理器內的流水線(例如,算術邏輯單元)的數(shù)據吞吐量,且這通常是通過加快處理器的時鐘速度來實現(xiàn)的。然而,時鐘速度受限于在流水線內寄存器組之間的邏輯的數(shù)量,因為該邏輯必須在一個時鐘周期內全部被執(zhí)行。對此的已知解決方案是將組合邏輯分為多個周期,并將寄存器組插入每個邏輯塊之間。由于每個寄存器級之間有更少的邏輯,因此可以提高時鐘速度,且現(xiàn)在時鐘速度受限于執(zhí)行產生的邏輯塊中最慢的邏輯塊所用的時間。用這種方式分開組合邏輯使時鐘速率能夠加快,時鐘速率加快增大了吞吐量,但也增大了延遲(因為數(shù)據需要額外的周期以通過所有邏輯)。除了人工設計之外,可使用被稱為“寄存器重定時”的技術來確定如何劃分邏輯以及應將寄存器放置在哪兒。
[0002]如下所述的實施例不限于解決在處理器內設計流水線的已知方法的任何或全部缺點的實現(xiàn)方式。
【發(fā)明內容】
[0003]本
【發(fā)明內容】
被提供從而以簡化方式介紹以下【具體實施方式】中會進一步描述的一組概念。該
【發(fā)明內容】
不旨在確定所要求保護的主題的關鍵特性或基本特性,也不旨在用于幫助確定所要求保護的主題的范圍。
[0004]描述了使用再生邏輯塊來提高流水線的吞吐量的數(shù)據通路流水線。在實施例中,流水線或其部分包括若干并行的邏輯通路,每個邏輯通路包括相同的邏輯。在連續(xù)的時鐘周期上輪流啟用在每個邏輯通路起始端的輸入寄存器級,使得輪流將數(shù)據讀入每個邏輯通路,且不同通路上的邏輯異相地運行。將邏輯通路的輸出讀入一個或多個輸出寄存器級,且使用多工器合并邏輯通路,該多工器在任何時鐘周期上從邏輯通路中的一個選擇輸出。描述了各種優(yōu)化技術,并在各種示例中還可使用寄存器重定時。在各種示例中,數(shù)據通路流水線在處理器內。
[0005]第一方面提供數(shù)據通路流水線,其包括:在流水線內形成并行邏輯通路的一個或多個再生邏輯塊;在每個邏輯通路的起始端的輸入寄存器塊,其中在任何時鐘周期中只啟用輸入寄存器級的一個子集;一個或多個輸出寄存器塊,其被布置成從一個或多個邏輯通路接收數(shù)據;以及多工器,其被布置成將并行邏輯通路合并為單個輸出。
[0006]第二方面提供操作數(shù)據通路流水線的方法,該方法包括:在連續(xù)的時鐘周期上輪流啟用一組輸入寄存器塊中的每一個,以將數(shù)據傳遞到多個并行邏輯通路中;在多個時鐘周期上處理每個邏輯通路中的數(shù)據;以及在連續(xù)的時鐘周期上輪流從每個邏輯通路選擇一個輸出。
[0007]第三方面提供設計數(shù)據通路流水線的方法,該流水線包括邏輯且該方法包括:再生邏輯的至少一部分以形成多個邏輯通路;將輸入寄存器塊添加到每個邏輯通路的起始端;將輸出寄存器塊添加到每個邏輯通路的末端;配置流水線以在連續(xù)的時鐘周期上輪流啟用輸入寄存器塊;配置流水線以在連續(xù)的時鐘周期上輪流啟用輸出寄存器塊;以及增加多工器以合并來自邏輯通路的輸出。
[0008]另一方面提供一種計算機可讀存儲介質,在其上編碼用于生成處理器的計算機可讀程序代碼,該處理器包括如上所述的流水線,并提供了一種計算機可讀存儲介質,在其上編碼用于生成處理器的計算機可讀程序代碼,該處理器被配置成實施如上所述的方法。
[0009]本文所述的方法可通過配置有軟件的計算機來實施,該軟件為機器可讀形式,并被存儲在有形的存儲介質上,例如,當程序在計算機上運行時且計算機程序可在計算機可讀存儲介質上實現(xiàn)的情況下,以包括用于配置計算機以實施所述的方法的組成部分的計算機可讀程序代碼的計算機程序的形式,或者以包括適用于實施本文所述的任何方法的所有步驟的計算機程序代碼方法的計算機程序的形式。有形的(或非暫時性的)存儲介質的示例包含磁盤、拇指驅動器、記憶卡等,且不包含傳播的信號。軟件可適合于在平行處理器或串行處理器上被執(zhí)行,從而使能夠以任何合適的次序或同時實施方法步驟。
[0010]本文所述的硬件組件可由在其上編碼計算機可讀程序代碼的非暫時性計算機可讀存儲介質而產生。
[0011]這確認了固件和軟件可被單獨地使用且有價值。其旨在包含運行在“基本的(dumb) ”或標準的硬件上或控制“基本的”或標準的硬件的軟件,以實現(xiàn)期望的功能。其還旨在包含“描述”或定義硬件配置的軟件,例如HDL(硬件描述語音)軟件,如被用于設計硅芯片或用于配置通用可編程芯片,以實現(xiàn)期望的功能。
[0012]如對于技術人員很明顯的,優(yōu)選的特性可被適當?shù)亟Y合,且可與本發(fā)明的任何方面相結合。
【附圖說明】
[0013]參考以下附圖,以示例的方式描述本發(fā)明的實施例,其中:
[0014]圖1示出示例處理器的示意圖,其中可實施本文所述的方法;
[0015]圖2示出兩個執(zhí)行流水線的示意圖;
[0016]圖3示出圖2所示的改進的執(zhí)行流水線的波形;
[0017]圖4示出可對圖2所示的改進的流水線做出的進一步的優(yōu)化;
[0018]圖5示出可對流水線做出的進一步的優(yōu)化;
[0019]圖6示出全流水線式功能單元和使用流水線操作(pipelining)和側流線(sidelining)組合的功能單元的比較;
[0020]圖7示出兩個進一步改進的流水線;
[0021]圖8為示出流水線操作的示例方法的流程圖,其中流水線使用了側流線;以及
[0022]圖9為設計改進的流水線的示例方法的流程圖。
[0023]整個附圖中共同的參考標記用來指示相似的特征。
【具體實施方式】
[0024]下文中只以示例的方式描述了本發(fā)明的實施例。這些示例代表目前申請人所知道的實施本發(fā)明的最佳方式,然而它們不是實施本發(fā)明的唯一的方式。本說明書闡述了示例的功能以及用于構造和操作示例的步驟的順序。然而,可由不同的示例來實現(xiàn)相同或等同的功能和順序。
[0025]如上所述,通過在流水線內增加額外的寄存器級,在每個寄存器級之間的邏輯更少,并且可提高時鐘速度。然而,隨著級間的邏輯減少,寄存器的設置和保持時間變?yōu)閷拇嫫骷夐g的延遲的更重要的貢獻,且這是限制進一步提高時鐘速度的能力的其中一個因素(因為延遲對應于最小可能的時鐘周期)。而且,增加額外的寄存器級可對設計尺寸(其中寄存器被放置于邏輯的中間,相較于在邏輯的輸入端或輸出端中的任一個處,其通常需要存儲更多位)以及還有可對該設計的有效功率(由于定時硬件在使用中的以往周期的大量的寄存器時鐘)產生不利影響。
[0026]本文描述了數(shù)據通路流水線以及設計和操作數(shù)據通路流水線的方法,該方法使時鐘速度能夠加快,并因此可增加流水線的吞吐量。如下所述,在一些示例中,這些方法可結合寄存器重定時(或其他常規(guī)的流水線操作技術)來使用,或者這些方法可獨立于寄存器重定時來使用。在本文所述的方法中,組合邏輯被再生,且再生版本并行且異相地運行。這降低了再生塊中的每一個再生塊內的有效時鐘速度(或有效時鐘速率)(例如,數(shù)據可只在交替的時鐘周期上被定時進入再生塊中,從而塊可具有用以完成的兩個時鐘周期)。通過減少寄存器級的數(shù)量,與標準解決方案相比,減少了總的設置和保持時間,這使實際的時鐘速度能夠被加快。如下面更詳細地描述,可通過優(yōu)化邏輯的哪個部分被再生以及輸出多工器(其將來自再生塊的結果合并回到單一通路)和輸出寄存器的位置來實現(xiàn)時鐘速度和/或設備區(qū)的進一步的改進。在很多示例中,本文所述的方法被實現(xiàn)用于不包含任何組合反饋(即,邏輯塊不向其本身反饋)的組合邏輯。然而,在其他示例中,可包含反饋。
[0027]術語“數(shù)據通路流水線”(也可將其稱為“執(zhí)行流水線”或“流水線”)指的是邏輯塊,該邏輯塊花費多個時鐘周期以用于待處理信息,且因此通常包括多個寄存器級,在寄存器級之間具有邏輯。在各個示例中,流水線可能是處理器的一部分(如下面描述的實例中),S卩,CPU、GPU或DSP的一部分;然而還可在其它情況下實現(xiàn)本文所述的方法。
[0028]術語“組合邏輯(combinat1n