欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

地址創(chuàng)建器和算術電路的制作方法

文檔序號:6447269閱讀:211來源:國知局
專利名稱:地址創(chuàng)建器和算術電路的制作方法
技術領域
本發(fā)明涉及在具有可自由改變的連接配置的可重配置處理器的集群中所使用的地址創(chuàng)建器(address creator)和算術電路。
背景技術
已經(jīng)出現(xiàn)了所謂的可重配置處理器技術,所述可重配置處理器技術在單個處理器內提供多個集群(cluster),并且在適當?shù)臅r候轉換多個集群之間的互連,從而力求在合適的集群中執(zhí)行合適的處理,并且提高總的處理速度。這里所使用的集群每個都包括運算單元和保持所述運算單元的存儲器,并且期望所述集群高速地執(zhí)行運算。
在集群配置程序設計中,通常以諸如下列示例的排列來執(zhí)行運算a[i]=b[i]×c[i]。在這種情況下,為輸入數(shù)據(jù)a和b指定地址,將它們寫入存儲器,并且執(zhí)行運算。為運算結果c確定寫入地址,并且將運算結果c寫入所確定的地址。具體地說,在集群配置中,可以通過使用運算單元的資源來計算存儲器地址。在數(shù)字通信技術中,尤其是在用于減小突發(fā)錯誤的影響的交錯處理(interleave processing)中,存在已公開的涉及交錯地址創(chuàng)建器的技術,所述交錯地址創(chuàng)建器在創(chuàng)建用于交錯的地址時,從初始值0開始計數(shù)。例如,日本早期公開專利申請No.2000-78030公開了這種技術的示例。
由于地址是由軟件在常規(guī)處理過程中連續(xù)創(chuàng)建的,因此處理要花費時間。就是說,通過運算來確定存儲器地址,并且通過使用在已確定地址上的存儲器來執(zhí)行運算,其結果是,地址創(chuàng)建帶來處理負擔,并且處理效率很差。

發(fā)明內容
本發(fā)明的目的在于,要解決傳統(tǒng)技術的以上問題中的至少一個。
根據(jù)本發(fā)明一個方面的地址創(chuàng)建器安裝在處理器中,所述處理器在轉換多個算術和邏輯單元(ALU)模塊的連接配置時執(zhí)行預定運算處理,所述多個ALU模塊中的每個都具有多個ALU。地址創(chuàng)建器包括地址創(chuàng)建單元,所設置的地址創(chuàng)建單元與設在所述ALU模塊中的多個存儲器一一對應,所述地址創(chuàng)建單元在每次轉換所述連接配置時,創(chuàng)建用于從/向所述存儲器讀取/寫入數(shù)據(jù)的地址。
根據(jù)本發(fā)明另一方面的算術電路包括第一地址創(chuàng)建器,所述第一地址創(chuàng)建器將第一地址和第一令牌一起輸出,所述第一地址是通過在預定定時上將預定增量加到第一初始地址值上而創(chuàng)建的;第一存儲器,所述第一存儲器接收所述第一令牌,并且通過將由所述第一地址所指定的數(shù)據(jù)和第二令牌一起輸出來做出響應;運算單元,所述運算單元接收所述第二令牌,并且通過基于從所述第一存儲器中所輸出的數(shù)據(jù)執(zhí)行運算來做出響應;第二地址創(chuàng)建器,所述第二地址創(chuàng)建器將第二地址和第三令牌一起輸出,所述第二地址是通過在預定定時上,將預定增量加到第二初始地址值上而創(chuàng)建的;以及第二存儲器,所述第二存儲器接收所述第三令牌,并且通過將來自所述運算單元的運算結果寫入由所述第二地址創(chuàng)建器所創(chuàng)建的地址上來做出響應。
根據(jù)本發(fā)明一個方面的算術電路包括第一讀取地址創(chuàng)建器,所述第一讀取地址創(chuàng)建器輸出第一讀取地址,所述第一讀取地址是通過在預定定時上,將預定增量加到第一初始讀取地址值上而創(chuàng)建的;第一寫入地址創(chuàng)建器,所述第一寫入地址創(chuàng)建器輸出第一寫入地址,所述第一寫入地址是通過在預定定時上,將預定增量加到第一初始寫入地址值上而創(chuàng)建的;第一選擇器,所述第一選擇器從來自所述第一讀取地址創(chuàng)建器的輸入和來自所述第一寫入地址創(chuàng)建器的輸入中選擇其一,并且將其作為第一地址輸出;第一存儲器,所述第一存儲器輸入從所述第一選擇器所輸出的第一數(shù)據(jù);第二讀取地址創(chuàng)建器,所述第二讀取地址創(chuàng)建器輸出第二讀取地址,所述第二讀取地址是通過在預定定時上,將預定增量加到第二初始讀取地址值上而創(chuàng)建的;第二寫入地址創(chuàng)建器,所述第二寫入地址創(chuàng)建器輸出第二寫入地址,所述第二寫入地址是通過在預定定時上,將預定增量加到第二初始寫入地址值上而創(chuàng)建的;第二選擇器,所述第二選擇器從來自所述第二讀取地址創(chuàng)建器的輸入和來自所述第二寫入地址創(chuàng)建器的輸入中選擇其一,并且將其作為第二地址輸出;第二存儲器,所述第二存儲器輸入從所述第二選擇器所輸出的第二數(shù)據(jù);以及排序單元,所述排序單元輸入來自所述第一存儲器的所述第一數(shù)據(jù),以及來自所述第二存儲器的所述第二數(shù)據(jù),對它們進行排序,并且以排序后的順序,將所述第一數(shù)據(jù)和所述第二數(shù)據(jù)寫入所述第一存儲器和所述第二存儲器。
本發(fā)明的其他目的、特征和優(yōu)點在以下結合附圖對本發(fā)明的詳細描述中被具體闡明,或者從中將變得清楚。


圖1是根據(jù)本發(fā)明的可重配置處理器中的集群配置的框圖;圖2是寫入存儲器操作的基本配置的框圖;圖3是從存儲器讀取操作的基本配置的框圖;圖4是使用地址創(chuàng)建器的算術電路的配置的框圖;圖5是通過使用更新觸發(fā)而自動更新的地址創(chuàng)建器的框圖;圖6是在自主更新模式中,更新四次地址值時的時序圖;圖7是在令牌更新模式中,更新四次地址值時的時序圖;圖8是控制更新開始時間、執(zhí)行算術運算,并且輸出結果的配置的框圖;圖9是在外部運算模式中的地址創(chuàng)建器的時序圖;圖10是將流水線段數(shù)設置為2時的時序圖;圖11是冒泡排序程序的圖;圖12是在執(zhí)行冒泡排序時,將地址創(chuàng)建器連接到存儲器端口的配置的框圖;圖13是在具有兩個端口的存儲器中實現(xiàn)冒泡排序的配置的框圖;以及圖14是在冒泡排序中的階段轉換的時序圖。
具體實施例方式
以下參考附圖,解釋了本發(fā)明的示例性實施例。
圖1是根據(jù)本發(fā)明的可重配置處理器的集群配置的框圖。集群10包括執(zhí)行實際處理的ALU塊11,以及提供了用于重新配置的配置信息的序列發(fā)生器(sequencer)12。
ALU塊11包括多個ALU模塊13、存儲器14、計數(shù)器15、比較器16、總線橋17和網(wǎng)絡18,其中所述ALU模塊13包括各種類型的運算單元元件,所述存儲器14讀取被處理的數(shù)據(jù),并且存儲處理結果的數(shù)據(jù),所述計數(shù)器15創(chuàng)建地址,所述比較器16對輸入其中的兩個信號進行比較(確定這兩個信號的狀況)。網(wǎng)絡18在到ALU模塊13中的每個的信號輸入單元處包括了寄存器19和選擇器20。
基于配置信息可以重新配置ALU模塊13、存儲器14和比較器16的組合(選擇)的連接狀態(tài),所述配置信息由序列發(fā)生器12與運算內容等等相對應地輸出。由網(wǎng)絡18的選擇器20來轉換連接狀態(tài)改變。
根據(jù)本發(fā)明的算術電路是通過將運算單元、存儲器和地址創(chuàng)建器組合起來而形成的。所述運算單元包括各自的ALU模塊13,所述存儲器包括各自的存儲器14,并且所述地址創(chuàng)建器包括各自的計數(shù)器15。
圖2是寫入存儲器操作的基本配置的框圖。地址創(chuàng)建器100連接到存儲器110的地址寫入端口。地址創(chuàng)建器100自動地創(chuàng)建地址,并且將其順序地輸出到存儲器,從而使地址創(chuàng)建處理能夠作為單獨的硬件來提供,而不是由序列發(fā)生器控制來提供。
地址創(chuàng)建器100接收來自序列發(fā)生器12(見圖1)的激活請求101,并且開始創(chuàng)建地址。當處理結束時,地址創(chuàng)建器100將結束通知102發(fā)送到序列發(fā)生器12。當不是處在自主更新模式中時,地址創(chuàng)建器100在輸入了輸入令牌103之后創(chuàng)建地址。將所創(chuàng)建的地址作為寫入地址104輸出。此時還輸出地址令牌105。
具有令牌指示出執(zhí)行處理的權力。處理器在具有令牌時執(zhí)行處理,并且當處理結束時,處理器將令牌輸出到下一個處理器,從而將處理的權力傳遞到下一個處理器。在這種情況下,地址創(chuàng)建器100將地址令牌105發(fā)送到存儲器110,從而將處理傳遞到存儲器110。
存儲器110輸入寫入地址104和地址令牌105,同時將寫入數(shù)據(jù)111和數(shù)據(jù)輸入令牌112輸入其其他端口。在存儲器110中所指定的寫入地址104處寫入所輸入的寫入數(shù)據(jù)111。
圖3是從存儲器讀取操作的基本配置的框圖。地址創(chuàng)建器100連接到存儲器210的地址讀取端口。地址創(chuàng)建器100自主地創(chuàng)建地址,并且將它們順序地輸出到存儲器,從而使地址創(chuàng)建處理能夠作為單獨的硬件來提供,而不是由序列發(fā)生器控制來提供。
地址創(chuàng)建器100的操作與圖2中所解釋的寫入存儲器操作中的相同。但是,地址不是作為寫入地址104,而是作為讀取地址204而輸出的。由于這里并未寫入數(shù)據(jù),因此沒有輸入寫入數(shù)據(jù)。通過將讀取地址204和地址令牌105輸入存儲器210來讀取數(shù)據(jù)。讀取并且輸出在存儲器210中所指定的讀取地址204處所存儲的讀取數(shù)據(jù)211。輸出令牌212也和讀取數(shù)據(jù)211一起輸出。
下面將參考圖4和圖5,解釋通過使用地址創(chuàng)建器和存儲器來執(zhí)行運算,并且輸出運算結果的電路配置。例如,當運算a[i]=b[i]×c[i]時,可以將a[i]分配到存儲器A,將b[i]分配到存儲器B,并且c[i]分配到存儲器C。由于將數(shù)據(jù)寫入存儲器A,因此所提供的地址創(chuàng)建器用于寫入。由于數(shù)據(jù)從存儲器B和C中讀出,因此所提供的地址創(chuàng)建器用于讀出。通過創(chuàng)建與i相對應的地址0到255,可以在每個時鐘上,以與這些地址創(chuàng)建器同步的形式從/向存儲器讀取/寫入數(shù)據(jù)。
當從序列發(fā)生器12輸入命令時,地址創(chuàng)建器開始操作,并且當其操作結束時,將操作結束信號發(fā)送到序列發(fā)生器12。地址創(chuàng)建器保存地址值,并且連續(xù)地輸出所保存的地址值。令牌也和地址值一起輸出。在開始時加載地址值的初始值,并且根據(jù)預定的更新定時更新地址值。
圖4是使用地址創(chuàng)建器的算術電路的配置的框圖。在圖4中,a[i]和&a[i]由標號“&”分開標識,a[i]代表數(shù)據(jù),并且&a[i]代表數(shù)據(jù)被讀取/寫入的地址。
地址創(chuàng)建器310輸出其保存的讀取地址311,并且輸出地址令牌312。最初的地址是被加載的初始值,并且在每次時鐘輸入時利用增量來更新地址值。存儲器330接收從地址創(chuàng)建器310所輸出的讀取地址311和地址令牌312,并且將在讀取地址311所指定的地址處所存儲的讀取數(shù)據(jù)331,連同令牌332一起發(fā)送到運算單元350。
地址創(chuàng)建器320將其保存的地址連同地址令牌一起輸出。最初的地址是被加載的初始值,并且在每次時鐘輸入時利用增量來更新地址值。存儲器340接收從地址創(chuàng)建器320所輸出的讀取地址321和地址令牌322,并且將在讀取地址321所指定的地址處所存儲的讀取數(shù)據(jù),作為讀取數(shù)據(jù)341發(fā)送到運算單元350。
運算單元350接收從存儲器330和340所輸出的讀取數(shù)據(jù)331和341,并且執(zhí)行運算。雖然早先提到的示例是乘法,但可以使用加法、減法、乘法和除法的任意運算。另一方面,地址創(chuàng)建器300將其保存的地址連同令牌一起輸出。最初的地址是被加載的初始值,并且在每次時鐘輸入時利用增量來更新地址。
存儲器360接收來自地址創(chuàng)建器300的寫入地址301和地址令牌302,接收來自運算單元350的寫入數(shù)據(jù)351和數(shù)據(jù)令牌352,并且寫入運算結果。
圖5是通過使用更新觸發(fā)而自動更新的地址創(chuàng)建器的配置的框圖。地址創(chuàng)建器的更新觸發(fā)具有(1)自主更新模式或者(2)令牌更新模式。
(1)自主更新模式在自主更新模式中,在運算開始之后的每次時鐘信號的輸入時,自主地更新地址,并且創(chuàng)建輸出令牌。只有利用時鐘信號的輸入,才能自主地觸發(fā)地址更新的定時,而不能利用令牌的輸入來觸發(fā)。
(2)令牌更新模式在令牌更新模式中,當輸入令牌時更新地址。地址更新的定時不是由時鐘定時,而是由令牌的輸入來觸發(fā),因此更新定時不是自主的,而是可以由來自另一個電路的輸入來控制。例如,通過等待將要輸入的令牌,可以使地址的更新定時與由地址創(chuàng)建器所輸出的地址上所寫入數(shù)據(jù)的到達定時相匹配。
地址創(chuàng)建器310、地址創(chuàng)建器320、存儲器330、存儲器340和運算單元350的操作都與圖3中的相同,并且將不再進行解釋。令牌322不僅被輸出到運算單元350,還被輸出到地址創(chuàng)建器410。
地址創(chuàng)建器410將其保存的寫入地址411連同地址令牌412一起輸出。寫入地址411的最初值是被加載的初始值,并且在每次輸入令牌332時利用增量來更新所述寫入地址411的值。
存儲器420接收來自地址創(chuàng)建器410的寫入地址411和地址令牌412,接收來自運算單元350的寫入數(shù)據(jù)421和數(shù)據(jù)令牌422,并且將由寫入數(shù)據(jù)421所示出的運算結果的數(shù)據(jù)寫到由寫入地址411所示出的地址上。
地址創(chuàng)建器(1)地址創(chuàng)建器的基本設置內容地址創(chuàng)建器的基本設置內容是初始值、增量值、更新的數(shù)目以及更新觸發(fā)模式設置。所述初始值是地址的初始值。所述增量值是在需要時加到地址上的值。假設只有加法,那么所述增量可以是不帶參考碼(referencecode)的整數(shù)。假設是減法,那么可以通過將參考碼位附加到主字段上,或者通過將絕對值加到參考碼位上,從而用數(shù)字表示所述增量。
地址創(chuàng)建器的基本操作如下所述。首先,(1)由來自序列發(fā)生器12的信號激活地址創(chuàng)建器。當?shù)刂穭?chuàng)建器激活時,將地址的初始值加載到地址創(chuàng)建器內的內部計數(shù)器中。之后,(2)在自主更新情況下,由時鐘信號的輸入所指定的更新定時上,或者在令牌更新模式中由令牌的輸入所指定的更新定時上,輸出此時的計數(shù)器值,以作為創(chuàng)建地址值。同時輸出了輸出令牌。
之后,(3)通過將增量值加到計數(shù)器值上來更新計數(shù)器的值,并且(4)當對計數(shù)器值進行加的次數(shù)達到設定的數(shù)目時,終止計數(shù)器值和令牌的輸出。然后,將該終止告知序列發(fā)生器12。
圖6是在自主更新模式中,更新四次地址值時的時序圖。在用于集群組的先頭集群,或者當只使用一個集群等等的時候,使用自主更新模式,并且例如當用作令牌處理的主方式(master)時,所述自主更新模式很有效。
輸入激活請求601,并且隨之加載地址的初始值。在接收到該激活請求時,創(chuàng)建輸出令牌602,并且和地址的初始值一起輸出。在連續(xù)輸出輸出令牌602期間,在每次輸入時鐘信號時將增量值加到地址的初始值上,從而更新輸出地址603。當達到預定的更新次數(shù)時,輸出令牌602變?yōu)榱悴⑶移漭敵鼋Y束,并且輸出結束通知604。
圖7是在令牌更新模式中,更新四次地址值時的時序圖。令牌更新模式用于集群組的下游集群等等,并且例如當用作令牌處理的從方式(slave)時,所述令牌更新模式很有效。
輸入激活請求701,隨之加載地址的初始值,并且輸出輸出地址702。在等到被輸入的輸入令牌703之后,輸出并更新地址。當輸入輸入令牌703時,創(chuàng)建輸出令牌704,并且在一個時鐘之后將其輸出,并且在該時刻輸出地址的初始值。在又一個時鐘之后更新地址,將增量值加到地址的初始值上,并且該地址成為輸出地址705。
當現(xiàn)在輸入輸入令牌706時,再次創(chuàng)建輸出令牌707,并且在一個時鐘之后將其輸出,并且輸出被更新的地址。同樣地,在又一個時鐘之后更新地址,將增量值加到地址上,并且該地址成為輸出地址708。
輸入另一個輸入令牌709。同樣地,再次創(chuàng)建輸出令牌710,并且在一個時鐘之后將其輸出,并且輸出輸出地址708。同樣地,在又一個時鐘之后更新地址,并且將增量值加到地址上。由于輸入令牌709持續(xù)為高電平,因此輸出令牌710不會下降,并且輸出被更新的輸出地址711。
由于輸入令牌709在地址的更新定時上下降,因此在一個時鐘之后,輸出令牌710下降。包括初始值,現(xiàn)在已經(jīng)輸出了四次地址,因此輸出結束,并且輸出結束通知712。
(2)結束通知的設置可以認為,由地址創(chuàng)建器所輸出的結束通知是用作序列發(fā)生器12中的配置轉換觸發(fā)。但是,序列發(fā)生器12不需要使用結束通知,而是例如可以通過參考來自運算單元的標志來轉換其配置。另外,可以對配置進行安排,使序列發(fā)生器12參考來自一些地址創(chuàng)建器,而不是全部地址創(chuàng)建器的結束通知,因此存在不向序列發(fā)生器12發(fā)送結束通知的地址創(chuàng)建器。
(3)設置增量值以1作為增量值,計數(shù)器的值每次可以增加1。增量值可以是2的冪。例如,在以字為單位的數(shù)據(jù)的情況下,由于數(shù)據(jù)的位數(shù)是2的冪,因此使計數(shù)器增長2的冪是有用的。在這種情況下,將增量值設置為2n的n。此外,增量值可以是變量。
(4)設置更新開始時間在地址創(chuàng)建器中可以設置更新開始時間,在所述更新開始時間上,輸出令牌,并且更新地址。該時間可以由時鐘數(shù)目來指定。配置是這樣,將來自指定了更新開始時間的電路的輸出加到來自另一電路配置的輸出上,所述另一電路配置接收上述地址創(chuàng)建器的輸出,并且在存儲器上執(zhí)行兩個運算。這樣使令牌輸出和地址更新能夠從預定的更新開始時間開始。
圖8是控制更新開始時間、執(zhí)行運算,并且輸出結果的配置的框圖。地址創(chuàng)建器310、地址創(chuàng)建器320、存儲器330、存儲器340和運算單元350的操作與圖3中的相同,并且將不再進行解釋。運算單元350將其運算結果作為運算數(shù)據(jù)801輸出,并且輸出令牌802。該輸出被輸入到FF(觸發(fā)器,flip-flop)810,并且存儲在其中,然后輸出到加法器840。
地址創(chuàng)建器820將其保存的讀取地址821,連同地址令牌822一起輸出到存儲器830。最初的地址是被加載的初始值,并且在每次時鐘輸入時利用增量來更新地址。存儲器830接收來自地址創(chuàng)建器820的讀取地址821和令牌822,并且將在由讀取地址821所指定的地址上所存儲的讀取數(shù)據(jù)831,連同令牌832一起輸出到加法器840。
將運算數(shù)據(jù)803和讀取數(shù)據(jù)831輸入加法器840,所述加法器840接收令牌832,并且把它們加起來,從而輸出輸出數(shù)據(jù)841和令牌842。
這樣,地址創(chuàng)建器820必須比地址創(chuàng)建器310和地址創(chuàng)建器320晚一個時鐘開始更新。將地址創(chuàng)建器310和地址創(chuàng)建器320的更新開始時間設置為0,并且將地址創(chuàng)建器820的更新開始時間設置為1。該設置指示出從加載地址的初始值到更新地址之間的轉變所花費的時間。
可以考慮下列用于延遲更新開始時間的其他方法(1)將下游地址創(chuàng)建器設置到令牌更新模式;以及(2)在時間0處從存儲器中讀取,并且在存儲器之后插入多個觸發(fā)器,以創(chuàng)建延遲。
(5)設置更新間隔更新間隔是可以在地址創(chuàng)建器中設置的一項。用時鐘的數(shù)目來指定更新間隔的時間。所指定的間隔指定了令牌輸出和地址更新之間的間隔。當出于某種原因而必須在流水線的下游離散地輸入存儲器數(shù)據(jù),例如當運算不能在一個時鐘內結束等等的時候,這是尤其有效的。雖然除非另外設置,通常都將更新間隔設置為一個時鐘單位,但是也可以將其設置為2、3、…、255。
(6)設置結束通知延遲由于集群具有流水線配置,因此有時,例如在從上游地址創(chuàng)建器輸出時,則期望延遲發(fā)送到序列發(fā)生器12的結束通知。在這種情況下,通過在地址創(chuàng)建器中設置結束通知延時,可以將對設定時鐘數(shù)的結束通知進行延遲。在預見到結束的情況下延遲所述結束通知,然后發(fā)送所述結束通知。
(7)設置初始地址值的加載防止有時,例如在更新配置以處理正被執(zhí)行的程序中的“if”語句時,則期望在重新配置時,防止初始地址值等等的加載。因此,通過在地址創(chuàng)建器中設置加載禁止,即使在存在來自序列發(fā)生器12的激活請求時,也可以防止在激活時加載初始地址值等等??梢詫⑦@種設置普遍應用在諸如初始地址值、累加值等等的所有參數(shù)值上,或者也可以通過允許一些參數(shù)的加載,并且防止一些參數(shù)的加載來對每個參數(shù)單獨設置。
(8)設置外部運算模式(FF操作模式)有時,例如在使增量值可變時,則期望將運算單元用于地址運算。在這種情況下,優(yōu)選地,是讓地址創(chuàng)建器簡單地作為可加載的觸發(fā)器進行操作。通過將地址創(chuàng)建器設置到外部運算模式,并且輸入在另一集群中運算出的地址更新值,可以將地址更新值設置到從運算單元加載的模式。在這種情況下,停止內部的計數(shù)器,并且在接收到輸入令牌時,加載地址更新值。
圖9是在外部運算模式中的地址創(chuàng)建器的時序圖。首先,輸入激活請求。當輸入數(shù)據(jù)連同輸入令牌一起被輸入時,在一個時鐘之后創(chuàng)建輸出令牌。輸入數(shù)據(jù)成為輸出地址,并且和輸出令牌一起被輸出,并且在激活請求時為0的令牌數(shù)目被向上計數(shù)到1。
再一個時鐘之后,當輸入令牌連同輸入數(shù)據(jù)一起被輸入時,在又一個時鐘之后創(chuàng)建輸出令牌。同樣地,輸入數(shù)據(jù)成為輸出地址,并且和輸出令牌一起被輸出,并且在激活請求時為1的令牌數(shù)目被向上計數(shù)到2。再一個時鐘之后,當輸入令牌連同輸入數(shù)據(jù)一起被輸入時,在又一個時鐘之后創(chuàng)建輸出令牌。同樣地,輸入數(shù)據(jù)成為輸出地址,并且和輸出令牌一起被輸出,并且在激活請求時為2的令牌數(shù)目被向上計數(shù)到3。由于該輸入令牌是在兩個連續(xù)的時鐘內輸入的,因此這里輸入了另一個輸入令牌。
因此,再一個時鐘之后,雖然輸入令牌下降,但是輸出令牌持續(xù)為高電平。同樣地,輸入數(shù)據(jù)成為輸出地址,并且和輸出令牌一起被輸出,并且在激活請求時為3的令牌數(shù)目被向上計數(shù)到4。現(xiàn)在,輸出令牌與輸入令牌相應地下降,并且令牌數(shù)目計數(shù)器到達所設置的值4,由此發(fā)送結束通知,并且處理結束。
對于結束通知,可以使用兩種方法。(1)在地址創(chuàng)建器中對輸入令牌的數(shù)目進行計數(shù),并且從地址創(chuàng)建器發(fā)送通知。(2)無需在地址創(chuàng)建器中對令牌的數(shù)目進行計數(shù),而經(jīng)由另一集群中的外部運算單元的比較器來發(fā)送結束通知。圖9的時序圖示出了情況(1)。
(9)由外部輸入來設置值在多重循環(huán)等中,決定性的是內部循環(huán)的數(shù)目而非外部運算結果等等。有時期望從運算單元中寫入所設置的值。因此,給地址創(chuàng)建器一個被稱為運算設置的設置項,從而可以將來自運算單元的輸出結果寫入該設置。就是說,該運算設置根據(jù)運算單元的運算結果來確定所設置的值。當實現(xiàn)該功能時,需要寄存器來存儲由地址創(chuàng)建器內的運算單元確定的所設置的值??梢灾苯訉⒌刂返某跏贾导虞d到計數(shù)器??梢詫⑦@種設置普遍應用在諸如初始地址值、累加值等等的所有參數(shù)值上,或者也可以通過允許一些參數(shù)的加載,并且防止一些參數(shù)的加載來對每個參數(shù)單獨設置。
(10)地址重繞設置當在流水線中出現(xiàn)了冒險(hazard)時,有時期望重繞(rewind)所創(chuàng)建的地址。接下來將解釋用于處理所述地址重繞的方法。
(A)減去固定值當產(chǎn)生重繞請求時,從當前地址值中減去所設置的值。在地址創(chuàng)建器中設置該重繞值,并且從當前地址值中減去所述重繞值。當向下計數(shù)時,可以將該值設置為負數(shù),在這種情況下,實際上作為加法來執(zhí)行。
(B)在流水線中存儲已發(fā)射的地址,并且加載所存儲的地址。
通常,將已發(fā)射的地址輸入到形成流水線的移位寄存器中。當產(chǎn)生重繞請求時,加載在所設置的數(shù)目之前的已發(fā)射的地址。這樣可以設置流水線級數(shù),并且當產(chǎn)生重繞請求時,可以在指定數(shù)目個時鐘之前的位置上加載已發(fā)射的地址。
圖10是將流水線級數(shù)設置為2時的時序圖。當輸出令牌為1時,輸出地址從10計數(shù)到14,并且在其到達15之前做出重繞請求。輸出地址立刻返回到12,并且然后從13計數(shù)到15。下面將解釋該示例。
存在流水線0、1和2。將輸出地址不改變地傳遞到流水線0,在一個時鐘之后傳遞到流水線1,并且在又一個時鐘之后傳遞到流水線2。當數(shù)到輸出地址14時,流水線2正數(shù)到12。這里假設在地址12處發(fā)生冒險。發(fā)送需要重繞的通知,并且計數(shù)值14從12開始重新計數(shù),然后是13、14和15。以同樣的方式將輸出地址操作發(fā)送到流水線0到2,直到重繞操作最終結束。
在對地址創(chuàng)建的數(shù)目進行計數(shù)時,有時可能需要減去該數(shù)目,并且在這種情況下,可以設置重繞的數(shù)目。重繞數(shù)目是當產(chǎn)生重繞請求時,從當前地址發(fā)射的數(shù)目中所減去的值,并且和流水線數(shù)目相匹配。
在方法(B)中,可以計數(shù)并減去在流水線上的有效已發(fā)射地址的數(shù)目,而不是具有固定值的重繞的數(shù)目。可替換地,在方法(B)中,可以將這時的已發(fā)射的數(shù)目輸入到流水線中,然后從流水線中讀取并加載。為了添加這種功能,地址創(chuàng)建器必須能夠從外部輸入重繞請求。
冒泡排序操作的地址創(chuàng)建器選擇功能雖然根據(jù)圖11的冒泡排序程序,假設地址創(chuàng)建器通常以1∶1的排列方式連接到存儲器的地址端口,但是存在在一個存儲器地址上需要兩個或更多個寫入/讀取地址創(chuàng)建器的情況,例如&a[j]和&a[j+1]。
冒泡排序是一種排序算法。例如,對于n的排列,從排列中的最后一個元素開始比較相鄰的元素,并且當前一元素的值大于后一元素時,交換這兩個元素。重復該過程直到最前面的元素,從而使最小值出現(xiàn)在最前面。然后,除了最前面的元素之外,重復該過程,使得第二小的值成為第二個元素。通過重復該過程,可以以一種從前到后遞增的順序來排列多個元素。
圖11是冒泡排序程序的示意圖。循環(huán)從i=0到255運行,在該循環(huán)中是一個從j=0到255的循環(huán)。在j的循環(huán)中,將a[j]與a[j+1]進行比較,并且當a[j]更大時將二者交換。對于j=0到255重復該比較,并且然后再一次從j=0開始。然后對于i=0到255重復。
冒泡排序的各個過程包括比較兩個相鄰元素,并且交換它們,因此,可以從兩個相鄰的存儲器中指定并讀取地址,并且在對地址進行排序之后,將其重新插入到存儲器中。
圖12是在執(zhí)行冒泡排序時,將地址創(chuàng)建器連接到存儲器端口的配置的框圖。如該示例中所示,連接了用于從存儲器中讀取的令牌和地址,也連接了用于向存儲器寫入的令牌和地址,因此存在這些對的兩種配置。存儲器輸入到排序單元中,對換排序單元的輸出,并且將其寫入各自的存儲器中,由此交換數(shù)據(jù)的順序。
在讀取階段,地址創(chuàng)建器1010將讀取地址1011和地址令牌1012輸出到存儲器1050。地址創(chuàng)建器1030將讀取地址1031和地址令牌1032輸出到存儲器1060。
存儲器1050將在指定地址上的數(shù)據(jù)作為讀取數(shù)據(jù)1051,連同令牌1052一起輸出到排序單元1070。存儲器1060將在指定地址上的數(shù)據(jù)作為讀取數(shù)據(jù)1061,連同令牌1062一起輸出到排序單元1070。排序單元1070將讀取數(shù)據(jù)1051和讀取數(shù)據(jù)1061進行比較,當讀取數(shù)據(jù)1051更小時,則不改變它們,并且當讀取數(shù)據(jù)1051更大時,將兩者交換。
這里過程轉變到寫入階段。在指定了地址之后,將從排序單元1070所輸出的數(shù)據(jù)重新寫入存儲器1050和1060。就是說,地址創(chuàng)建器1020將寫入地址1021和地址令牌1022一起寫入存儲器1050,而地址創(chuàng)建器1040將寫入地址1041和地址令牌1042一起寫入存儲器1060。
排序單元1070將要被寫入存儲器1050的數(shù)據(jù)作為寫入數(shù)據(jù)1053,連同令牌1054一起輸出到存儲器1050,并且將要被寫入存儲器1060的數(shù)據(jù)作為寫入數(shù)據(jù)1063,連同令牌1064一起輸出到存儲器1060。存儲器1050在指定的地址上寫入寫入數(shù)據(jù)1053,并且存儲器1060在指定的地址上寫入寫入數(shù)據(jù)1063。
雖然傳統(tǒng)的存儲器一般不具有多于兩個的讀取/寫入端口,但是圖12的示例需要四個端口。因此,在這種情況下,配置是不現(xiàn)實的。
因此,使用了時分轉換(time-division switching),以分離讀取階段和寫入階段。在讀取階段期間,將創(chuàng)建讀取地址的地址創(chuàng)建器連接到存儲器,并且在寫入階段期間,將創(chuàng)建寫入地址的地址創(chuàng)建器連接到存儲器,從而使具有兩個端口的存儲器能夠實現(xiàn)冒泡排序。
圖13是在具有兩個端口的存儲器中實現(xiàn)冒泡排序的配置的框圖。在地址創(chuàng)建器和存儲器之間插入了選擇器,從而可以在讀取階段和寫入階段之間進行轉換。讀取階段和寫入階段具有相同的配置,并且通過時分來進行控制。
該配置與圖12的配置的不同在于,在地址創(chuàng)建器1010與1020和存儲器1050之間插入了選擇器1080,并且在地址創(chuàng)建器1030與1040和存儲器1060之間插入了選擇器1090。選擇器1080和1090在讀取階段分別選擇地址創(chuàng)建器1010和1030,并且在寫入階段分別選擇地址創(chuàng)建器1020和1040。
即使在存儲器1050和1060只具有兩個讀取/寫入端口,而不是四個時,選擇器1080和1090也可以通過使用地址創(chuàng)建器來實現(xiàn)冒泡排序。大多數(shù)處理與圖12中的處理相同,差別在于將讀取/寫入端口劃分為兩部分。
在圖12中,地址創(chuàng)建器1010將讀取地址1011和地址令牌1012直接寫入存儲器1050,并且地址創(chuàng)建器1020將寫入地址1021和地址令牌1022直接寫入存儲器1050。在圖13中,首先將上述信號輸入到選擇器1080中,并且作為地址1081和地址令牌1082輸出到存儲器1050。
同樣地,選擇器1090首先輸入來自地址創(chuàng)建器1030的讀取地址1031和地址令牌1032,以及來自地址創(chuàng)建器1040的寫入地址1041和地址令牌1042,然后將它們作為地址1091和地址令牌1092輸出到存儲器1060。將這些輸出到存儲器1050和1060之后的處理與圖12中的相同,并且將不再進行解釋。
圖14是在冒泡排序中的階段轉換的時序圖。下面將參考圖13和圖13中所使用的圖12的配置,來解釋圖14的時序圖。在第一階段中,地址創(chuàng)建器1010和1030輸出讀取地址和地址令牌,并且存儲器1050和1060接收讀取地址1011和1031,以及地址令牌1021和1032的輸入。
在接下來的階段中,存儲器1050和1060輸出讀取數(shù)據(jù)1051和1061,以及數(shù)據(jù)令牌1052和1062。選擇器1080和1090從讀取階段轉變到寫入階段,并且地址創(chuàng)建器1020和1040輸出寫入地址1021和1041,以及地址令牌1022和1042。存儲器1050和1060接收寫入地址1021和1041,以及地址令牌1022和1042的輸入。
通過以上述方式,在讀取階段和寫入階段之間進行輪流轉換,當使用具有兩個端口的存儲器時,可以實現(xiàn)冒泡排序。當使用1RW的存儲器作為存儲器時,使用4∶1的選擇器,從而能夠管理四個階段。
根據(jù)上述配置,在創(chuàng)建存儲器的地址的過程中,通過為存儲器端口安裝專用硬件,可以使用各種類型的參數(shù)和設置值來設置操作,從而高速地創(chuàng)建地址。
因此,可以快速地讀取運算中所需的數(shù)據(jù),并且可以快速地將運算結果存儲到存儲器中,從而提高了總的處理能力。
如上所述,當想要使用硬件來創(chuàng)建用于輸入到存儲器的地址時,根據(jù)本發(fā)明的地址創(chuàng)建器和算術電路很有效,并且根據(jù)本發(fā)明的地址創(chuàng)建器和算術電路尤其適用于在可重配置處理器中所使用的集群。
根據(jù)本發(fā)明的地址創(chuàng)建器和算術電路,由于可以快速地創(chuàng)建地址,可以快速地從存儲器中讀取運算所需的數(shù)據(jù),并且可以快速地將運算結果寫入存儲器中,從而提高了集群的處理能力。
雖然為了全面并且清楚的公開,已經(jīng)根據(jù)具體實施例描述了本發(fā)明,但是所附帶的權利要求書并不因此受限,而應將其解釋為,包括了本領域的技術人員可能想到的,完全落在這里所提出的基本教導之內的所有修改和替換結構。
本文件并入了2004年6月30日在日本遞交的日本優(yōu)先權文件2004-193579的全部內容,以作為參考。
權利要求
1.一種安裝在處理器中的地址創(chuàng)建器,所述處理器在轉換多個算術和邏輯單元模塊的連接配置時執(zhí)行預定運算處理,所述多個算術和邏輯單元模塊中的每個都具有多個算術和邏輯單元,所述地址創(chuàng)建器包括多個地址創(chuàng)建單元,所述多個地址創(chuàng)建單元是分別對應于設在所述算術和邏輯單元模塊中的多個存儲器而設置的,所述地址創(chuàng)建單元在每次轉換所述連接配置時,創(chuàng)建用于從所述存儲器讀取數(shù)據(jù)或向所述存儲器寫入數(shù)據(jù)的地址。
2.如權利要求1所述的地址創(chuàng)建器,其中每個地址創(chuàng)建單元具有地址計數(shù)器,所述地址計數(shù)器基于來自序列發(fā)生器的外部輸入而設置地址的初始值、增加或減小的地址增量值、地址創(chuàng)建的數(shù)目以及地址創(chuàng)建模式,所述序列發(fā)生器控制著所述連接配置的轉換。
3.如權利要求2所述的地址創(chuàng)建器,其中所述地址計數(shù)器可以選擇下列模式中的任一種自主更新模式,在所述序列發(fā)生器的激活請求之后,所述自主更新模式自主地創(chuàng)建被更新的地址,并且將指示出所輸出數(shù)據(jù)的有效性的令牌位附加到所述數(shù)據(jù)上;以及令牌更新模式,在來自所述序列發(fā)生器的激活請求之后,在每次輸入指示出數(shù)據(jù)的有效性的令牌位時更新所述地址,并且基于所述令牌位的輸入,將指示出所輸出數(shù)據(jù)的有效性的令牌位附加到所述數(shù)據(jù)上。
4.如權利要求2所述的地址創(chuàng)建器,其中所述地址計數(shù)器基于時鐘信號的輸入定時而遞增地址。
5.如權利要求2所述的地址創(chuàng)建器,其中每個地址計數(shù)器包括增加設置單元,所述增加設置單元設置將被加上的預定增量值。
6.如權利要求2所述的地址創(chuàng)建器,其中所述地址計數(shù)器可以設置由所述算術和邏輯單元模塊運算出的地址。
7.如權利要求2所述的地址創(chuàng)建器,包括加載接收設置單元,所述加載接收設置單元對是否從所述序列發(fā)生器接收所述地址的初始值進行設置。
8.如權利要求2所述的地址創(chuàng)建器,其中每個地址計數(shù)器還包括模式轉換單元,并且當所述模式轉換單元包括外部運算模式時,所述地址計數(shù)器存儲并輸出從外部輸入的數(shù)據(jù),而不加上所述預定增量值。
9.如權利要求2所述的地址創(chuàng)建器,其中所述地址計數(shù)器包括重繞單元,所述重繞單元通過在更新時減小地址來重繞地址。
10.如權利要求2所述的地址創(chuàng)建器,其中當所述地址創(chuàng)建的數(shù)目達到預定的數(shù)目時,所述地址計數(shù)器停止更新預定增量值,并且將結束信號輸出到所述序列發(fā)生器。
11.如權利要求3所述的地址創(chuàng)建器,其中所述地址計數(shù)器包括間隔設置單元,所述間隔設置單元基于來自所述序列發(fā)生器的外部輸入,設置處在所述自主更新模式中時對地址的創(chuàng)建之間的間隔。
12.如權利要求5所述的地址創(chuàng)建器,其中由所述增加設置單元所設置的所述預定增量值是2的冪,并且所述增加設置單元將所述預定增量值設置為所述2的冪的指數(shù)。
13.如權利要求10所述的地址創(chuàng)建器,還包括延遲單元,所述延遲單元對輸出所述結束信號的定時進行延遲。
14.如權利要求1所述的地址創(chuàng)建器,其中每個地址創(chuàng)建單元包括輸出所述存儲器中的讀取地址的讀取地址創(chuàng)建單元,以及輸出所述存儲器中的寫入地址的寫入地址創(chuàng)建單元;以及選擇器,當從所述存儲器讀取數(shù)據(jù)時,所述選擇器將所述讀取地址創(chuàng)建單元連接到所述存儲器,并且當向所述存儲器寫入數(shù)據(jù)時,所述選擇器將所述寫入地址創(chuàng)建單元連接到所述存儲器。
15.一種算術電路,包括第一地址創(chuàng)建器,所述第一地址創(chuàng)建器將第一地址和第一令牌一起輸出,所述第一地址是通過在預定定時上,將預定增量加到第一初始地址值上而創(chuàng)建的;第一存儲器,所述第一存儲器接收所述第一令牌,并且通過將由所述第一地址所指定的數(shù)據(jù)和第二令牌一起輸出來做出響應;運算單元,所述運算單元接收所述第二令牌,并且通過基于從所述第一存儲器中所輸出的數(shù)據(jù)執(zhí)行運算來做出響應;第二地址創(chuàng)建器,所述第二地址創(chuàng)建器將第二地址和第三令牌一起輸出,所述第二地址是通過在預定定時上,將預定增量加到第二初始地址值上而創(chuàng)建的;以及第二存儲器,所述第二存儲器接收所述第三令牌,并且通過將來自所述運算單元的運算結果寫入由所述第二地址創(chuàng)建器所創(chuàng)建的地址上來做出響應。
16.如權利要求15所述的算術電路,還包括存儲來自所述運算單元的運算結果的緩沖器;其中所述第二存儲器寫入在所述緩沖器中所寫入的所述運算結果。
17.一種算術電路,包括第一讀取地址創(chuàng)建器,所述第一讀取地址創(chuàng)建器輸出第一讀取地址,所述第一讀取地址是通過在預定定時上,將預定增量加到第一初始讀取地址值上而創(chuàng)建的;第一寫入地址創(chuàng)建器,所述第一寫入地址創(chuàng)建器輸出第一寫入地址,所述第一寫入地址是通過在預定定時上,將預定增量加到第一初始寫入地址值上而創(chuàng)建的;第一選擇器,所述第一選擇器從來自所述第一讀取地址創(chuàng)建器的輸入和來自所述第一寫入地址創(chuàng)建器的輸入中選擇其一,并將其作為第一地址輸出;第一存儲器,所述第一存儲器輸入從所述第一選擇器所輸出的第一數(shù)據(jù);第二讀取地址創(chuàng)建器,所述第二讀取地址創(chuàng)建器輸出第二讀取地址,所述第二讀取地址是通過在預定定時上,將預定增量加到第二初始讀取地址值上而創(chuàng)建的;第二寫入地址創(chuàng)建器,所述第二寫入地址創(chuàng)建器輸出第二寫入地址,所述第二寫入地址是通過在預定定時上,將預定增量加到第二初始寫入地址值上而創(chuàng)建的;第二選擇器,所述第二選擇器從來自所述第二讀取地址創(chuàng)建器的輸入和來自所述第二寫入地址創(chuàng)建器的輸入中選擇其一,并且將其作為第二地址輸出;第二存儲器,所述第二存儲器輸入從所述第二選擇器所輸出的第二數(shù)據(jù);以及排序單元,所述排序單元輸入來自所述第一存儲器的所述第一數(shù)據(jù),以及來自所述第二存儲器的所述第二數(shù)據(jù),對所述第一數(shù)據(jù)和所述第二數(shù)據(jù)進行排序,并且以排序后的順序,將所述第一數(shù)據(jù)和所述第二數(shù)據(jù)寫入所述第一存儲器和所述第二存儲器。
全文摘要
根據(jù)本發(fā)明,提供了與多個ALU模塊的存儲器相對應的多個地址創(chuàng)建器。所述地址創(chuàng)建器在每次轉換連接配置時,創(chuàng)建用于從/向存儲器讀取/寫入數(shù)據(jù)的地址。在創(chuàng)建存儲器中的地址的過程中,通過為存儲器端口安裝專用硬件,地址創(chuàng)建器能夠通過使用各種類型的參數(shù)和設置值來對操作進行設置,從而可以高速地創(chuàng)建地址。
文檔編號G06F9/30GK1716182SQ20041010358
公開日2006年1月4日 申請日期2004年12月30日 優(yōu)先權日2004年6月30日
發(fā)明者若吉光春, 瓜生士郎 申請人:富士通株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
大竹县| 潼关县| 周口市| 新晃| 五大连池市| 丰台区| 宜兰市| 民县| 慈利县| 廊坊市| 榆树市| 集安市| 闵行区| 蓬安县| 定西市| 长宁区| 额尔古纳市| 舒城县| 华亭县| 四平市| 长武县| 洪洞县| 兰西县| 灯塔市| 宕昌县| 临夏市| 永宁县| 南川市| 德阳市| 六盘水市| 镶黄旗| 温州市| 平邑县| 尚志市| 满城县| 巴南区| 曲靖市| 旺苍县| 芜湖县| 芜湖县| 通道|