技術領域
本文所公開的實施例涉及集成電路,并且更具體地涉及集成電路中的專用處理塊。
背景技術:
將可配置器件如可編程邏輯器件(PLD)視為集成電路的一個示例。可配置器件的應用增加了復雜度,在可配置器件中包括專用處理塊已經變得更加普遍。此類專用處理塊可以包括已經被部分或完全硬連線以執行一種或多種特定任務(如邏輯或數學運算)的電路系統的集合。
專用處理塊還可以包含一個或更多個專用結構,如可配置存儲器元件陣列。普遍實現在此類專用處理塊中的結構的示例包括:乘法器、算術邏輯單元(ALU)、桶式移位器、各種存儲器元件(如先進先出(FIFO)/后進先出(LIFO)/串進并出(SIPO)/隨機存取存儲器(RAM)/只讀存儲器(ROM)/內容可尋址存儲器(CAM)塊和寄存器文件)、AND/NAND/OR/NOR陣列等,或其組合。
技術實現要素:
根據一些實施例,集成電路上的乘法器累加器塊可以包括第一、第二、和第三輸入,輸出,以及第一和第二算術操作符級。該第一、第二、和第三輸入可以直接耦合至該專用處理塊外部的外部可配置互連電路系統。該第一算術操作符級(例如,乘法器級)可以接收來自該第一和第二輸入的信號,然而,該第二算術操作符級(例如,加法器級)可以從該第三輸入接收信號并具有耦合至該乘法器累加器塊的該輸出的輸出端口。作為一個示例,該第一和第二算術操作符級都作用于浮點數輸入。
該乘法器累加器塊內的內部可配置互連電路系統可以包括:第一多路復用器,其在從該第一算術操作符級生成的信號與在該第二算術操作符級的該輸出端口生成的信號之間選擇。
可以理解的是能夠以許多方式實現本發明,如過程、裝置、系統、設備、計算機可讀介質上的指令、或上述的任何期望組合。本文公開了本發明的若干實施例。
在一些實施例中,上述內部可配置互連電路系統可以包括:第二多路復用器,其在從該第一算術操作符級生成的信號與從該第二輸入接收的信號之間選擇,并且將所選擇的信號路由至該第二算術操作符級。
如果期望的話,上述專用處理塊可以具有第四輸入和第三多路復用器。該第四輸入可以直接耦合至附加乘法器累加器塊,并且可以將信號路由至該第一和第二多路復用器兩者。該內部可配置互連電路系統中的該第三多路復用器可以被配置成:在從該第一多路復用器生成的信號與從該第二輸入接收的信號之間選擇,并且可以進一步被配置成將這些選擇的信號路由至該第一算術操作符級。
本發明進一步特征、其本質和各種優勢從附圖和以下對優選實施例的詳細說明中將更加明顯。
附圖說明
圖1是根據實施例的示意性集成電路的圖。
圖2是根據實施例的示意性專用處理塊的邏輯圖。
圖3是根據實施例的示意性專用處理塊的更詳細的圖。
圖4是根據實施例的專用處理塊的示意性布置的圖,該專用處理塊具有執行順序縮放乘積(sequential scaled product)的數據路徑的示例性選擇。
圖5是根據實施例的專用處理塊的示意性布置的圖,該專用處理塊具有執行混合遞歸和順序縮放乘積的數據路徑的示例性選擇。
圖6是根據實施例的專用處理塊的示意性布置的圖,該專用處理塊具有執行和的順序乘積的數據路徑的示例性選擇。
圖7是根據實施例的專用處理塊的示意性布置的圖,該專用處理塊具有執行和的遞歸縮放乘積的數據路徑的示例性選擇。
圖8是根據實施例的專用處理塊的示意性布置的圖,該專用處理塊具有實現霍納法則(Horner’s rule)的數據路徑的示例性選擇。
圖9是根據實施例的用于執行縮放積和(scaled product sum)運算的示意性步驟的流程圖。
圖10是根據實施例的用于使用霍納法則執行多項式求值的示意性步驟的流程圖。
具體實施方式
專用處理塊可以包括已經被部分或完全硬連線以執行一個或更多個具體任務(如邏輯或數學運算)的電路系統的集合。專用處理塊還可以包含一個或更多個專用結構,如可配置存儲器元件陣列。普遍實現在此類專用處理塊中的結構的示例包括:乘法器、算術邏輯單元(ALU)、桶式移位器、各種存儲器元件(如FIFO/LIFO/SIPO/RAM/ROM/CAM塊和寄存器文件)、AND/NAND/OR/NOR陣列等,或其組合。
已經設置于可編程邏輯器件(PLD)上的一種特別有用類型的專用處理塊是能夠用于處理音頻信號(作為示例)的數字信號處理(DSP)塊。當它們包括用于執行乘法運算、求和、和/或乘法運算的累加的結構時,此類塊有時可以稱為乘法累加(“MAC”)塊。
例如,美國加利福尼亞州圣何塞市(San Jose,California)的阿爾特拉公司(Altera Corporation)所銷售的PLD作為和家族的部分包括多個MAC塊,它們當中的每一個包括多個乘法器。這些MAC塊中的每一個還包括加法器和寄存器,以及允許該塊的各部件以不同方式被配置的可編程連接器(例如,多路復用器)。
實現一些應用可能需要多于一個的專用處理塊。此類功能的示例包括實現矢量(點積)運算或積和運算,如有限脈沖響應(FIR)濾波器,僅舉以上幾例。在給定的專用處理塊中產生的并在另一專用處理塊中消耗的信號可以要求使用特定處理塊外部的互連資源。就延遲和功耗而言,對此類資源的使用可能不是高效的。因此,可以期望將直接互連資源連同可配置互連電路系統一起引入到相鄰的專用處理塊之間,該可配置互連電路系統可以將信號路由至那些直接互連資源并路由來自那些互連資源的信號。
對于本領域技術人員而言將明顯的是,可以在沒有這些具體細節中的某些或全部的情況下實踐當前示例性實施例。在其他實例中,公知的操作未詳細描述以防不必要地模糊當前實施例。
圖1中示出了集成電路102的示意性實施例。集成電路102可以包括存儲和處理電路系統104以及輸入-輸出電路系統108。存儲和處理電路系統104可以包括嵌入式微處理器、數字信號處理器(DSP)、微控制器、專用處理塊、算術處理電路、或其他處理電路系統。該存儲和處理電路系統104可以進一步具有隨機存取存儲器(RAM)、先進先出(FIFO)電路系統、棧或后進先出(LIFO)電路系統、只讀存儲器(ROM)、內容可尋址存儲器(CAM)、或其他存儲器元件。
輸入/輸出電路系統可以包括并行輸入/輸出電路系統、差分輸入/輸出電路、串行數據收發器電路系統、或適用于發送和接收數據的其他輸入/輸出電路系統。內部互連資源106(如導線和總線)可以用于將數據從一個部件發送至另一部件,或可以用于將數據從一個部件廣播至一個或更多個其他部件。
內部互連資源106還可以包括片上網絡(NoC)或其他片上互連資源。外部互連資源109(如導線和總線)、光學互連基礎設施、或具有可選中間開關的有線和無線網絡可以用于與其他設備通信。
示意性系統圖2根據實施例示出了示例性專用處理塊的邏輯圖,如可以包括在圖1的存儲和處理電路系統104中的乘法器累加器(MAC)塊200。在這種邏輯表示中,省略了實施細節以簡化討論,如寄存器和一些可編程路由特征(如可以允許將具體結構的輸出直接路由至MAC塊200外部的多路復用器)。另外,在實際實施例中,所示的一些元件可以實現不只一次。例如,乘法器201可以實際代表兩個或更多個乘法器,如前述PLD的和家族中的MAC塊。
在圖2的邏輯表示中,加法器級202接著乘法器級201。該乘法器級可以實現定點乘法器或浮點乘法器。可以由27×27定點乘法器和一些附加邏輯構造浮點乘法器。該附加邏輯可以計算指數、以及特殊條件和誤差條件,如NAN(非數值)、零和無窮大。可選地,可以提供其他邏輯以按照IEEE754格式對乘法器的結果四舍五入。當乘法器201的輸出被直接從MAC塊200輸出時,這種四舍五入能夠被實現為乘法器結構(未示出)內的最后的加法器的部分,或被實現在MAC塊200外的可編程邏輯中。
乘法器級201可以直接以乘法器相加(MADD)模式饋送加法器級202,如圖2中所描繪的。加法器級202可以實現定點加法器或浮點加法器。
圖3根據實施例示出了示例性專用處理塊300的更詳細的圖。專用處理塊300可以具有耦合至外部可配置互連資源的輸入352、353、和354。專用處理塊300還可以具有直接耦合至相鄰的專用處理塊300的輸入355和351。
類似地,專用處理塊300可以具有耦合至外部可配置互連資源的輸出363以及分別直接耦合至另一相鄰的類似專用處理塊300的輸入351和355的輸出361和365。除了在專用處理塊300的鏈的末端,在輸入355與輸出365之間和在輸入351與輸出361之間存在直接連接。
作為一個示例,專用處理塊300可以處理32位寬的信號,諸如,如標準IEEE754所定義的單精度浮點數。如果期望的話,專用處理塊300可以處理任何位寬。例如,專用處理塊300可以處理雙精度浮點數(即,64位寬的信號)、四倍精度浮點數字(即,128位寬的信號)、半精度浮點數(即,16位寬的信號),僅舉幾例。
相應地,專用處理塊300中的寄存器和多路復用器的數量可以適配于輸入的信號的位寬。例如,如果所有輸入信號都是32位寬,每個寄存器(即,寄存器331至337)可以實際具有32個1位的寄存器。類似地,每個二對一多路復用器(即,多路復用器341、342、344、345、346、349、和350)可以實際具有32個二對一多路復用器,并且每個三對一多路復用器(即,多路復用器343、347、和348)可以實際具有32個三對一多路復用器。例如,組成多路復用器344的這32個二對一多路復用器中的每一個可以從在輸入354接收到的信號接收一位并從寄存器333接收一位。多路復用器344的所有這32個二對一多路復用器可以共享相同的控制信號,使得選擇從輸入354接收的所有信號或者選擇從寄存器333接收的所有信號。
如果期望的話,可以可選地繞過寄存器331至337(未示出)。例如,多路復用器可以接收寄存器的輸入信號和輸出信號。多路復用器可以選擇寄存器的輸入信號以繞過寄存器,并選擇寄存器的輸出信號以執行流水線。
在一些實施例中,專用處理塊300可以包括附加流水線(未示出)。作為一個示例,專用處理塊300在乘法器級與輸出363和/或輸出365之間、在輸入355與輸出365之間、在輸入355與乘法器級310之間等可以具有可選地可繞過的寄存器級。可選地,還可以在乘法器級310和加法器級320之一或兩者內部設置可繞過的流水線(未示出)。
專用處理塊300可以具有多路復用器341至344以在輸入之間進行選擇。例如,多路復用器341可以在從輸入356和輸入351接收的信號之間進行選擇,多路復用器342可以在從輸入352與寄存器331的輸出接收的信號之間進行選擇,多路復用器343可以在從輸入353、寄存器332、和寄存器331接收的信號之間進行選擇,并且多路復用器344可以在從輸入354和寄存器333接收的信號之間進行選擇。
可配置互連資源可以將信號從多個來源(包括輸入351、352、353、354、355、和356以及加法器級320的輸出)路由至乘法器級310。可配置互連資源可以將信號從多個來源(包括輸入351、352、353、355、和356以及乘法器級310的輸出)路由至加法器級320。
在一些實施例中,乘法器級310的輸出、輸入355、或加法器320的輸出可以經由多路復用器347、輸出365、和直接連接被路由至相鄰的類似專用處理塊300的輸入355,并從中經由多路復用器348和/或349路由至相鄰的專用路由至相鄰的類似專用處理塊的加法器級,和/或經由多路復用器345和346路由至相鄰的類似專用處理塊的乘法器級。
具體地,多路復用器349可以被配置成在輸入351或352處接收的信號與在輸入355處接收的信號之間進行選擇。類似地,可以提供多路復用器348以在輸入353處、輸入355處、以及從乘法器級310的輸出接收的信號之間進行選擇,作為加法器級320的輸入。因此,加法器級320可以從均耦合至外部可配置互連資源的兩個輸入(即,輸入352和353)接收信號,并且來自這些輸入的路徑兩者均繞過乘法器級310。
可以以各種不同方式配置專用處理塊300,以實現各種功能。例如,專用處理塊300可以被配置以實現移位寄存器、乘法器、乘法加法功能、乘法累加功能、縮放乘積(scaled product)、縮放積和、縮放積差(scaled product difference),僅舉幾例。
考慮下述場景:其中,專用處理塊300被用作移位寄存器。在這種場景下,數據可以在輸入352處進入專用處理塊300并且可以被儲存在寄存器332。從那里,可以通過多路復用器343至寄存器333路由數據,并從那里路由通過多路復用器344并繞過寄存器334至輸出361。寄存器332或333的輸出中的任一個可以被分接,但兩者不同時被分接。例如,可以通過在輸入354提供零來分接寄存器332的輸出,由此在乘法器的輸出處產生零。乘法器348可以被配置成選擇乘法器輸出作為對加法器級320的第一輸入。可以選擇乘法器349以選擇寄存器332的輸出作為對加法器級的第二輸入。將加法器級的輸出路由至輸出363可以在輸出363處提供寄存器332的輸出。可以通過在輸入354提供值‘1’來分接寄存器334的輸出。將寄存器333的輸出乘以‘1’在乘法器級310的輸出處產生寄存器333的輸出。可以配置多路復用器350使得乘法器輸出繞過加法器級320,由此將寄存器333的輸出提供至輸出363。
根據實施例的多個專用處理塊可以被布置在行或列中,使得能夠使用輸出365與輸入355之間和輸出361與輸入351之間的前述直接連接將信息從一個塊饋送至下一個塊,以創造更復雜的結構。
圖4根據經配置以執行順序縮放乘積運算的實施例示出了一行四個專用處理塊400A、400B、400C、和400D(例如,乘法器累加器塊400鏈)。可替代地,這種配置中的專用處理塊400可以被布置在一列中。在該列布置中,每個MAC塊400可以旋轉90度,而不需要必須對輸入和輸出重新路由,或者可替代地,如果塊400未被旋轉,塊400外部的可配置路由結構(有時稱為“軟”路由電路系統)可以用于互連該系列的塊400。如所示的,專用處理塊400A、400B、400C、和400D各自可以由專用處理塊300用附加寄存器(如耦合至乘法器級310的輸出的寄存器410)實現。
有時還被稱為縮放乘積的序列的乘積被定義為以下乘積
在圖4的示例中,有待相乘的序列值可以是X=(A,B,C,D,E)。專用處理塊400A可以在輸入353和354接收信號A和B,同時專用處理塊400B、400C、和400D在輸入354分別接收輸入C、D和E。
專用處理塊400A中的可配置互連資源可以將信號A和B從輸入353和354路由至乘法器級310,這可以計算A*B的乘積。
類似地,專用處理塊400B、400C、和400D中的可配置互連資源可以將信號C、D、和E中的每一個從對應輸入354路由至對應乘法器級310。信號C、D、和E中的每一個可以乘以在用于右側的相鄰的專用處理塊內產生的先前的累加結果。例如,專用處理塊400B的乘法器級310可以用專用處理塊400A中產生的結果乘以C。用于右側的相鄰的專用處理塊中(例如,專用處理塊400A中)的可配置互連電路系統可以將該結果從乘法器級310路由通過多路復用器347和輸出365至當前專用處理塊(例如,專用處理塊400B)的輸入355。當前專用處理塊(例如,專用處理塊400B)中的可配置互連電路系統可以將在輸入355處接收的先前計算(例如,A*B)的結果路由通過多路復用器345和346至乘法器級310。
由于來自用于右側的相鄰的專用處理塊的中間結果由一個流水線級延遲,最右側專用處理塊400A左側的每個專用處理塊需要附加流水線級(即,輸入480處的信號C可以由一個流水線級481延遲,輸入482處的信號D可以由兩個流水線級483延遲,并且專用處理塊400D的輸入484處的信號E可以由三個流水線級485延遲)。在一個實施例中,可以使用這些專用處理塊外部的資源實現這些流水線級。
最左側的專用處理塊中的乘法器級(例如,專用處理塊400D的乘法器級310)可以計算縮放乘積的最終結果(即,序列A*B*C*D*E的乘積)。最左側專用處理塊中的可配置互連電路系統可以將該結果從乘法器級310路由通過寄存器410和多路復用器350至輸出363。
圖4中用虛線示出了多路復用器343、344、345、346、347、和350對數據路徑的示例性選擇。
如所示的,專用處理塊400A、400B、400C、和400D的資源中的一些可以保持未使用。如果期望的話,可以由那些未使用的資源來執行其他算術運算。例如,專用處理塊400B或400C可以執行兩個獨立數字的相加。如圖4中所示,專用處理塊400B可以在輸入353和352接收信號F和G。可配置的互連資源可以將信號F路由通過多路復用器343、寄存器333、多路復用器348、和寄存器335至加法器級320,并將信號G路由通過多路復用器342、寄存器332、多路復用器349、和寄存器336至加法器級320。加法器級320可以計算F與G之和,并且可配置互連資源可以將和F+G路由通過寄存器337和多路復用器350至輸出363。
如果期望的話,可以在專用處理塊400A、400B、400C、和400D中執行其他算術運算。作為另一示例,專用處理塊400A可以計算在輸入352接收的第一信號與在輸入355從相鄰專用處理塊接收的第二信號之和,并在輸出363提供結果。在本示例中,可配置的互連資源可以將第一信號路由通過多路復用器342、寄存器332、多路復用器349、和寄存器336至加法器級320,并將第二信號路由通過多路復用器348和寄存器335至加法器級320。加法器級320可以計算第一和第二信號之和,并且可配置互連資源可以將該和路由通過寄存器337和多路復用器350至輸出363。
作為另一示例,專用處理塊400D可以計算在輸入352接收的第一信號與在輸入353接收的第二信號之和,并在輸出365提供結果。在本示例中,可配置的互連資源可以將第一信號路由通過多路復用器342、寄存器332、多路復用器349、和寄存器336至加法器級320,并將第二信號路由通過多路復用器343、寄存器333、多路復用器348和寄存器335至加法器級320。加法器級320可以計算第一信號和第二信號之和,并且可配置互連資源可以將該和路由通過寄存器337和多路復用器347至輸出365。
圖5根據實施例示出了一行五個專用處理塊500A、500B、500C、500D、和500E,其被配置成執行兩個順序縮放乘積運算,緊接著遞歸縮放乘積運算。如所示的,專用處理塊500A、500B、500C、500D、和500E可以各自由專用處理塊300用附加寄存器(如耦合至乘法器級310的輸出的寄存器510)實現。
在圖5的示例中,有待相乘的序列值可以是X1=(A,B,C),并且X2=(D,E,F)。專用處理塊500A和500B可以接收信號A、B、和C并以與圖4中所展示的相同方式計算乘積A*B*C,其中不同之處在于,專用處理塊500B的可配置互連資源可以將乘積A*B*C路由至輸出363(而不是將A*B*C路由至圖4中的專用處理塊400B的輸出365)。在本示例中,可以由一個流水線級581將輸入580處的信號C延遲,以幫助將塊500之間的輸入信號同步化。
類似地,專用處理塊500D和500E可以接收信號D、E、和F并以專用處理塊500A和500B計算A*B*C的相同方式計算乘積D*E*F。具體地,可以由一個流水線級583延遲輸入582處的信號F,以幫助塊500之間的輸入同步化。專用處理塊500E的可配置互連資源可以將乘積D*E*F路由至輸出363。
專用處理塊500A、500B、500C、500D、和500E外部的可配置互連資源可以將乘積A*B*C從專用處理塊500B的輸出363路由至專用處理塊500C的輸入353并將乘積D*E*F從專用處理塊500E的輸出363路由至專用處理塊500C的輸入354。
專用處理塊500C內的可配置互連電路系統可以將信號A*B*C從輸入353路由通過多路復用器343、寄存器333、和多路復用器346至乘法器級310,并將信號D*E*F從輸入354路由通過多路復用器344和寄存器334至乘法器級310。乘法器級310可以計算乘積A*B*C*D*E*F,并且可配置互連電路系統可以將該乘積路由通過寄存器510和多路復用器350至專用處理塊500C的輸出363。圖5中用虛線示出了多路復用器343、344、345、346、347、和350對數據路徑的示例性選擇。
類似于圖4中所示的,如果期望的話,專用處理塊500A、500B、500C、500D、和500E中的未使用的資源可以用于執行附加算術運算。
圖6根據實施例示出了一行四個專用處理塊300A、300B、300C、和300D,其被配置成用于執行順序縮放和的乘積運算、順序縮放差的乘積運算、或順序縮放加法/減法的乘積運算。如所示的,專用處理塊300A、300B、300C、和300D可以各自由MAC塊300實現,其中,加法器級320可以被配置成執行加法或減法。因此,專用處理塊300A、300B、300C、和300D中的每一個塊可以執行或者加法或者減法。
有時還被稱為縮放積和的序列的和的乘積被定義為如下乘積
有時還被稱為縮放積差的序列的差的乘積被定義為如下乘積
在圖6的示例中,有待相乘的序列值可以是X=(A,C,E,G)并且Z=(B,D,F,H)。專用處理塊300A可以在輸入352和353接收信號A和B,同時專用處理塊300B、300C、和300D分別在輸入352和353接收輸入C和D、E和F、以及G和H。
專用處理塊300A中的可配置互連資源可以將信號A和B從輸入352和353路由至加法器級320,這可以計算A+B之和。
類似地,專用處理塊300B、300C、和300D中的可配置互連資源可以將信號C、E、和G中的每一個從對應的輸入352路由至對應的加法器級320,并將信號D、F、H中的每一個從對應的輸入353路由至對應的加法器級320。對應的加法器級320中的每一個可以計算所接收的信號之和(或差)。換言之,專用處理塊300A、300B、300C、和300D的加法器級320可以分別計算和A+B、C+D、E+F、和G+H(或差A-B、C-D、E-F、和G-H)。
最右側專用處理塊(例如,專用處理塊300A)中的可配置互連資源可以將該和(或差)路由至輸出363,同時其他專用處理塊(例如,專用處理塊300B、300C、和300D)中的可配置互連資源可以將該和(或差)路由通過多路復用器345和346至對應的專用處理塊的乘法器塊310。
專用處理塊外部的可配置互連資源可以將除了最左側專用處理塊之外所有的專用處理塊的對應輸出363(例如,專用處理塊300A、300B、和300C的輸出363)耦合至用于左側的相鄰的專用處理塊的對應輸入354(例如,專用處理塊300B、300C、和300D的輸入354)。作為一個示例,專用處理塊300A的輸出363可以通過這些專用處理塊外部的可配置互連資源耦合至專用處理塊300B的輸入354。作為另一示例,專用處理塊300B的輸出363可以通過這些專用處理塊外部的可配置互連資源耦合至專用處理塊300C的輸入354。
除了最右側專用處理塊之外所有的專用處理塊(例如,專用處理塊300B)中的可配置互連電路系統可以將在輸入354處接收的先前計算(例如,A+B)的結果路由通過多路復用器344和寄存器334至乘法器級310。
由于在輸入354接收的來自用于右側的相鄰的專用處理塊的中間結果由一個流水線步驟延遲,最右側專用處理塊300A左側的每個專用處理塊需要一個附加流水線級(即,MAC塊300B的輸入680和682處的信號C和D可以各自被一個流水線級681延遲,MAC塊300C的輸入684和686處的信號E和F可以各自被兩個流水線級685延遲,并且MAC塊300D的輸入688和690處的信號G和H可以各自被三個流水線級689延遲)。在一個實施例中,可以使用這些專用處理塊外部的可配置資源實現這些流水線級。
除了最右側專用處理塊之外的所有專用處理塊中的乘法器級(例如,專用處理塊300B、300C、和300D的乘法器級310)可以基于從輸入354接收的信號和從加法器級320接收的信號計算積和。對應的專用處理塊中的可配置互連電路系統可以將來自乘法器級310的和的積路由通過多路復用器350至輸出363。
圖6中用虛線示出了多路復用器342、343、344、345、346、348、349、和350對數據路徑的示例性選擇。通過配置專用處理塊300A、300B、300C、和300D中的所有加法器級320來執行減法,可以用數據路徑的相同選擇來計算差的乘積。通過單獨地配置專用處理塊300A、300B、300C、和300D中的每一個的加法器級320來執行加法或者減法任一,可以用數據路徑的相同選擇執行混合加法和減法的乘積。
圖7根據實施例示出了一行四個專用處理塊700A、700B、700C、和700D,其被配置成執行遞歸縮放和的乘積運算、遞歸縮放差的乘積運算、或加法/減法的遞歸縮放乘積運算。如所示的,專用處理塊700A、700B、700C、和700D可以各自由專用處理塊300用耦合在多路復用器345和多路復用器346之間的附加寄存器745實現,輸出363被分成輸出763A和763B,其中,輸出763A耦合至加法器級320,并且輸出763B耦合至乘法器級310,并且其中加法器級320可以被配置成執行加法或減法。因此,專用處理塊700A、700B、700C、和700D中的每個塊可以執行加法或者減法任一。
在圖7的示例中,有待相乘的序列值可以是X=(A,C,E,G)并且Z=(B,D,F,H)。專用處理塊700A可以在輸入353和352接收信號G和H,同時專用處理塊700B、700C、和700D分別在輸入353和352接收輸入E和F、C和D、以及A和B。
專用處理塊700A、700B、700C、和700D中的可配置互連資源可以將信號A、C、E、和G中的每一個從對應的輸入353路由至對應的加法器級320,并將信號B、D、F、H中的每一個從對應的輸入352路由至對應的加法器級320。對應的加法器級320中的每一個可以計算所接收的信號之和(或差)。換言之,專用處理塊700D、700C、700B、和700A的加法器級320可以分別計算和A+B、C+D、E+F、和G+H(或差A-B、C-D、E-F、和G-H)。
專用處理塊700D和700B中的可配置互連資源可以將該和(或差)路由至輸出763A,同時專用處理塊700A和700C中的可配置互連資源可以將該和(或差)路由通過多路復用器345、寄存器745和多路復用器346至對應的專用處理塊的乘法器塊310。
專用處理塊外部的可配置互連資源可以將專用處理塊700D和700B的對應輸出763A耦合至用于右側的相鄰的專用處理塊的對應輸入354。換言之,專用處理塊700D的輸出763A可以通過這些專用處理塊外部的可配置互連資源耦合至專用處理塊700C的輸入354,并且專用處理塊700B的輸出763A可以通過這些專用處理塊外部的可配置互連資源耦合至專用處理塊700A的輸入354。
專用處理塊700C和700A中的可配置互連電路系統可以將在對應的輸入354處接收的先前計算(例如,A+B和E+F)的結果路由通過多路復用器344和寄存器334至乘法器級310。
專用處理塊700A和700C的乘法器級310可以基于從輸入354接收的信號和從加法器級320接收的信號計算積和。因此,專用處理塊700C的乘法器級310可以計算(A+B)*(C+D),同時專用處理塊700A的乘法器級310計算(E+F)*(G+H)。
專用處理塊700A中的可配置互連電路系統可以將和的乘積(即,(E+F)*(G+H))從乘法器級310路由至輸出763B。專用處理塊外部的可配置互連資源可以將專用處理塊700A的輸出763B耦合至專用處理塊700D的輸入354。
專用處理塊700C中的可配置互連電路系統可以將和的乘積(即,(A+B)*(C+D))從乘法器級310路由通過多路復用器347至輸出365,信號從該輸出365經由直接連接到達相鄰的專用處理塊700D的輸入355。專用處理塊700D內的可配置互連電路系統可以將在輸入355接收的信號(即,(A+B)*(C+D))路由通過多路復用器345、寄存器745、和多路復用器346至乘法器級310,并將在輸入354接收的信號(即,(E+F)*(G+H))路由通過多路復用器344和寄存器334至乘法器級340。
乘法器級310可以計算兩個信號的乘積(即,(A+B)*(C+D)*(E+F)*(G+H)),并在專用處理塊700D的輸出763B提供結果。
圖7中用虛線示出了多路復用器342、343、344、345、346、347、348、和349對數據路徑的示例性選擇。通過配置專用處理塊700A、700B、700C、和700D中的所有加法器級320來執行減法,可以用數據路徑的相同選擇來計算差的乘積。通過單獨地配置專用處理塊700A、700B、700C、和700D中的每一個的加法器級320來執行加法或者減法任一,可以用數據路徑的相同選擇執行混合加法和減法的乘積。
圖8是根據實施例的四個專用處理塊300A、300B、300C和300D的示意性布置的圖,這些專用處理塊具有實現霍納法則(Horner’s role)的數據路徑的示例性選擇。如所示的,專用處理塊300A、300B、300C和300D可以各自由專用處理塊300實現。
通過霍納法則進行多項式求值是計算時普遍使用的功能。多項式
y=x4+Ax3+Bx2+Cx+D (4)
可被寫作
y=((((x+A)x+B)x+C)x+D) (5)
在圖8的示例中,每個專用處理塊可以計算該等式的一部分。例如,專用處理塊300A可以在輸入352和353接收信號A和X以及在輸入354處接收信號X的另一實例。專用處理塊300B、300C、和300D可以在輸入352分別接收信號B、C、和D,并且專用處理塊300B和300C可以在輸入354分別接收信號X的另一實例。
由于來自先前運算(例如,專用處理塊300A的加法器級320中信號A和X的相加)的中間結果相對于在輸入354接收的信號X的實例被兩個流水線步驟延遲,對于在輸入354接收的信號X的每個實例需要兩個附加流水線級。例如,在專用處理塊300A、300B、和300C的輸入354接收的信號X的實例可以分別被兩個、四個、和六個附加流水線級延遲(即,在MAC塊300A的輸入880接收的信號X可以被兩個流水線級881延遲;在MAC塊300B的輸入882接收的信號X可以被四個流水線級883延遲;并且在輸入884接收的信號C可以被六個流水線級885延遲)。在一個實施例中,可以使用這些專用處理塊外部的資源實現這些附加流水線級。
最右側專用處理塊中的(例如,專用處理塊300A中的)可配置互連資源可以將信號A和X從輸入352和353路由至加法器級320,該加法器級可以計算A+X之和。
在除最左側專用處理塊之外的所有專用處理塊(例如,專用處理塊300D)中的可配置互連電路系統可以將計算的和(例如專用處理塊300A中A+X,或專用處理塊300B中((A+X)X+B))從加法器級320路由通過多路復用器345和346至對應的專用處理塊的乘法器級310。
類似地,除了最左側專用處理塊之外的所有專用處理塊中的(例如,專用處理塊300A、300B、和300C中的)可配置互連資源可以將在輸入354接收的信號X的實例從對應的輸入354路由通過多路復用器344和寄存器334至對應的乘法器級310,這可以計算從加法器級320接收的信號與信號X的實例的乘積。例如,專用處理塊300A的乘法器級310可以計算乘積(A+X)*X。作為另一個示例,專用處理塊300B的乘法器級310可以計算乘積((A+X)*X+B)*X。
除了最左側專用處理塊之外的所有專用處理塊中的(例如,專用處理塊300A、300B、和300C中的)可配置互連資源可以將由乘法器級320計算的乘積從該乘法器級路由通過乘法器347至輸出365,該乘積被從該輸出經直接連接發送至相鄰的專用處理塊的輸入355。例如,可以將乘積(A+X)*X從專用處理塊300A的乘法器級310路由通過多路復用器347至輸出365,并從此處直接路由至專用處理塊300B的輸入355。
除了最右側專用處理塊之外的所有專用處理塊中的(例如,專用處理塊300B、300C、和300D中的)可配置互連資源可以將在輸入355(例如,相鄰的專用處理塊的乘法器級310的輸出)接收的信號從輸入355路由通過多路復用器348和寄存器335至加法器級320。
對應的加法器級320中的每一個可以計算所接收的信號之和。換言之,專用處理塊300A、300B、300C、和300D的加法器級320可以分別計算和X+A、(X+A)X+B、((X+A)*X+B)*X+C、以及(((X+A)*X+B)*X+C)*X+D。
最左側專用處理塊中的(例如,專用處理塊300D中的)可配置互連資源可以將該和從加法器級320路由至輸出363。
圖8中用虛線示出了多路復用器342、343、344、345、346、347、348、349、和350對數據路徑的示例性選擇。
圖9是根據實施例的用于執行縮放積和運算的示意性步驟的流程圖。在步驟910過程中,第一專用處理塊的第一、第二、和第三輸入可以接收第一、第二、和第三信號。例如,圖7的專用處理塊700C可以分別在輸入352、353、和354接收信號D、C和(A+B)。
在步驟920過程中,該第一專用處理塊中的可配置互連電路系統可以將該第一和第二信號從該第一和第二輸入路由至該第一專用處理塊中的加法器級。例如,圖7的專用處理塊700C中的包括多路復用器342、343、348、和349的可配置互連電路系統可以將信號D和信號C從輸入352和353路由至專用處理塊700C的加法器級320。
在步驟930過程中,加法器可以計算該第一信號和第二信號的和。例如,圖7的專用處理塊700C的加法器級320可以計算信號D和C之和(即,生成和(C+D))。
在步驟940過程中,該可配置互連電路系統可以在第一專用處理塊中將該第一和第二信號的和從該加法器級路由至乘法器級。例如,圖7的專用處理塊700C中的包括多路復用器345和346的可配置互連電路系統可以將D和C之和從加法器級320路由至專用處理塊700C的乘法器級310。
在步驟950過程中,該可配置互連電路系統可以將該第三信號從該第三輸入路由至該乘法器級。例如,圖7的專用處理塊700C中包括多路復用器344的可配置互連電路系統可以將信號(A+B)從輸入353路由至專用處理塊700C的乘法器級310。
在步驟960過程中,該乘法器級可以計算該第三信號與該第一和第二信號之和的乘積。例如,圖7的專用處理塊700C的乘法器級310可以計算和(C+D)與信號(A+B)的乘積,由此計算縮放積和(A+B)*(C+D)。
圖10是根據實施例的用于使用霍納法則執行多項式求值的示意性步驟的流程圖。在步驟1010過程中,第一專用處理塊的第一和第二輸入可以經由附加可配置互連電路系統接收第一和第二信號。例如,圖8的專用處理塊300B可以分別在輸入354和352接收信號X和信號B,由此信號B和X經由可配置互連電路系統被路由至輸入352和354,該可配置互連電路系統可以形成于圖7的專用處理塊外部。
在步驟1020過程中,該第一專用處理塊的第三輸入可以直接從第二專用處理塊的輸出接收第三信號。例如,圖8的專用處理塊300B的輸入355可以直接從專用處理塊300A的輸出365接收信號。
在步驟1030過程中,該第一專用處理塊的可配置互連電路系統可以將該第二和第三信號從該第一專用處理塊的該第二和第三輸入路由至該第一專用處理塊的加法器級。例如,圖8的專用處理塊300B中的可包括多路復用器342、349、和348的可配置互連電路系統可以將信號B和(X+A)*X從輸入352和355分別路由至專用處理塊300B的加法器級320。
在步驟1040過程中,第一專用處理塊的加法器級可以計算第二與第三信號之和。例如,圖8的專用處理塊300B的加法器級310可以計算(X+A)*X與B之和。換言之,專用處理塊300B的加法器級310可以計算(X+A)*X+B。
在步驟1050過程中,該第一專用處理塊的可配置互連電路系統可以將該第一信號從該第一專用處理塊的該第一輸入路由至該第一專用處理塊的乘法器級并將該和從該第一專用處理塊的該加法器級路由至該第一專用處理塊的該乘法器級。例如,圖8的專用處理塊300B中的可包括多路復用器344、345、和346的可配置互連電路系統可以將來自輸入354的信號X和來自加法器級310的信號(X+A)*X+B分別路由至專用處理塊300B的乘法器級310。
在此所述的方法和裝置可以并入任何適當的集成電路(IC)或集成電路的系統中。例如,該方法和裝置可以并入各種類型的器件中,如微處理器或其他IC。示例性IC包括可編程陣列邏輯(PAL)、可編程邏輯陣列(PLA)、現場可編程邏輯陣列(FPLA)、電可編程邏輯器件(EPLD)、電可擦除可編程邏輯器件(EEPLD)、邏輯單元陣列(LCA)、現場可編程門陣列(FPGA)、粗粒度可編程邏輯器件(CGPLD)、粗粒度可重構陣列(CGRA)、專用標準產品(ASSP)專用集成電路(ASIC),僅舉幾例。
在此所述的集成電路可以是包括以下部件中的一個或更多個的數據處理系統的部分:處理器、存儲器、I/O電路系統、和外圍器件。該數據處理系統能夠用于廣泛應用中,如計算機聯網、數據聯網、儀表化、視頻處理、數字信號處理、或其中期望使用專用處理塊的優勢的任何其他合適的應用。該集成電路能夠用于執行各種不同的邏輯功能。例如,該集成電路能夠被配置成與系統處理器協同工作的處理器或控制器。該集成電路還可以用作仲裁器,該仲裁器用于仲裁對數據處理系統中的共享資源的訪問。在又一示例中,集成電路能夠被配置成處理器和該系統中的其他部件中的一個之間的接口。在一個實施例中,該集成電路可以是受讓人所擁有的可編程邏輯器件家族中的一個。
雖然這些方法操作以特定順序加以描述,應當理解的是,在所描述的操作之間可以執行其他操作,所描述的操作可以被調整為使得它們在稍微不同的時間發生,或者所描述的操作可以分布在允許以與處理相關聯的各種間隔發生處理操作的系統中,只要對覆蓋操作的處理是以期望方式執行的。
附加實施例
附加實施例1.一種集成電路上的乘法器累加器塊,包括:第一、第二、和第三輸入,該第一、第二、和第三輸入直接耦合至形成于該乘法器累加器塊外部的外部可配置互連電路系統;輸出;第一算術操作符級,其從該第一和第二輸入接收信號;第二算術操作符級,其從該第三輸入接收信號并具有耦合至該輸出的輸出端口;內部可配置互連電路系統,其形成于該乘法器累加器塊內,并且包括:第一多路復用器,其在從該第一算術操作符級生成的信號與在該第二算術操作符級的該輸出端口生成的信號之間選擇。
附加實施例2.如附加實施例1所述的乘法器累加器塊,其中,該內部可配置互連電路系統進一步包括:第二多路復用器,其在從該第一算術操作符級生成的信號與從該第二輸入接收的信號之間選擇,并第二多路復用器將所選擇的信號路由至該第二算術操作符級。
附加實施例3.如附加實施例2所述的乘法器累加器塊,進一步包括:附加輸出,其直接耦合至附加乘法器累加器塊的輸入;以及第三多路復用器,其具有連接至該附加輸出的多路復用器輸出、從該第一算術操作符級接收信號的第一多路復用器輸入、以及耦合至該第二算術操作符級的該輸出端口的第二多路復用器輸入。
附加實施例4.如附加實施例2所述的乘法器累加器塊,進一步包括:第四輸入,其直接耦合至附加乘法器累加器塊,其中,該第一和第二多路復用器接收來自該第四輸入的信號。
附加實施例5.如附加實施例4所述的乘法器累加器塊,其中,該內部可配置互連電路系統進一步包括:第三多路復用器,其在從該第一多路復用器生成的信號與從該第二輸入接收的信號之間選擇,并將所選擇的信號路由至該第一算術操作符級。
附加實施例6.如附加實施例1所述的乘法器累加器塊,其中,該第一算術操作符級包括乘法器。
附加實施例7.如附加實施例1所述的乘法器累加器塊,其中,該第二算術操作符級包括加法器。
附加實施例8.如附加實施例1所述的乘法器累加器塊,其中,該第一和第二算術操作符級作用于浮點數信號。
附加實施例9.一種用于操作多個專用處理塊中的第一專用處理塊的方法,包括:在該第一專用處理塊的第一、第二、和第三輸入接收第一、第二、和第三信號;用該第一專用處理塊中的可配置互連電路系統,在第一專用處理塊中將該第一和第二信號從該第一和第二輸入路由至的加法器級;使用該加法器級計算該第一和第二信號的和;用該可配置互連電路系統,在第一專用處理塊中將該第一和第二信號的和從該加法器級路由至乘法器級;用該可配置互連電路系統將該第三信號從該第三輸入路由至該乘法器級;以及使用該乘法器級計算該第三信號與該第一和第二信號之和的乘積。
附加實施例10.如附加實施例9所述的方法,進一步包括:在該多個專用處理塊中的第二專用處理塊的第四輸入接收第四信號;在該第二專用處理塊的第五輸入接收第五信號;用該第二專用處理塊中的附加可配置互連電路系統,將該第四和第五信號從該低第四和第五輸入路由至該第二專用處理塊中的附加加法器級;以及使用該第二專用處理塊中的該附加加法器級計算該第四和第五信號的附加和。
附加實施例11.如附加實施例10所述的方法,進一步包括:在該第一專用處理塊的輸出接收來自該乘法器級該乘積;以及將該乘積從該輸出經由路由路徑路由至該多個專用處理塊中的第二專用處理塊的第六輸入。
附加實施例12.如附加實施例11所述的方法,其中,該路由路徑將該第一專用處理塊的該輸出直接連接至該第二專用處理塊的該第六輸入。
附加實施例13.如附加實施例12所述的方法,進一步包括:用該第二專用處理塊中的多路復用器,在第二專用處理塊中從該第六輸入接收該乘積并從該附加加法器級接收該附加和;用該多路復用器從該第六輸入選擇該乘積;以及在第二專用處理塊中將所選擇的該乘積從該多路復用器路由至乘法器級。
附加實施例14.如附加實施例11所述的方法,其中,該路由路徑包括位于該多個專用處理塊外部的外部可配置互連電路系統。
附加實施例15.如附加實施例14所述的方法,進一步包括:用該第二專用處理塊中的多路復用器從該第六輸入接收該乘積并從該第二專用處理塊中的該附加加法器級接收該附加和;用該多路復用器從該第二專用處理塊中的該附加加法器級選擇該附加和;以及在第二專用處理塊中將所選擇的該附加和從該多路復用器路由至乘法器級。
附加實施例16.一種用于操作第一和第二專用處理塊的方法,其中,該第一和第二專用處理塊中的每一個包括加法器級、乘法器級、和可配置互連電路系統,該方法包括:在該第一專用處理塊的第一和第二輸入經由附加可配置互連電路系統接收第一和第二信號;在該第一專用處理塊的第三輸入直接從該第二專用處理塊的輸出接收第三信號;用該第一專用處理塊中的該可配置互連電路系統將該第二和第三信號從該第一專用處理塊的該第二和第三輸入路由至該第一專用處理塊的該加法器級;用該第一專用處理塊的該加法器級計算該第二和第三信號的和;以及用該第一專用處理塊的該可配置互連電路系統將該第一信號從該第一專用處理塊的該第一輸入路由至該第一專用處理塊的該乘法器級并將該和從該第一專用處理塊的該加法器級路由至該第一專用處理塊的該乘法器級。
附加實施例17.如附加實施例16所述的方法,進一步包括:
使用該第一專用處理塊的該乘法器級計算該和與該第一信號的乘積;以及用該第一專用處理塊中的該可配置互連電路系統將該乘積從該第一專用處理塊的該乘法器級路由至該第一專用處理塊的附加輸出。
附加實施例18.如附加實施例16所述的方法,進一步包括:在該第二專用處理塊的第四和第五輸入經由該附加可配置互連電路系統接收第四和第五信號;以及用該第二專用處理塊中的該可配置互連電路系統將該第四和第五信號從該第二專用處理塊的該第四和第五輸入路由至該第二專用處理塊的該加法器級。
附加實施例19.如附加實施例18所述的方法,進一步包括:用該第二專用處理塊的該加法器級計算該第四和第五信號的附加和;以及用該第二專用處理塊的該可配置互連電路系統將第六信號從該第二專用處理塊的第六輸入路由至該第二專用處理塊的該乘法器級并將該附加和從該第二專用處理塊的該加法器級路由至該第二專用處理塊的該乘法器級。
附加實施例20.如附加實施例19所述的方法,進一步包括:使用該第二專用處理塊的該乘法器級計算該附加和與該第六信號的附加乘積;以及用該第二專用處理塊中的該可配置互連電路系統將該附加乘積從該第二專用處理塊的該乘法器級路由至該第二專用處理塊的該輸出。
前述僅是本發明的說明性的原理,并且在不背離發明范圍和精神的情況下本領域技術人員能夠做出各種修改。