專(zhuān)利名稱(chēng):數(shù)據(jù)處理器的狀態(tài)引擎的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于數(shù)據(jù)處理器、尤其是并行處理器中的狀態(tài)引擎。
背景技術(shù):
經(jīng)常出現(xiàn)因而必須對(duì)連續(xù)數(shù)據(jù)流執(zhí)行功能的情況。如果這些功能以處理器中的軟件來(lái)實(shí)現(xiàn),則從數(shù)據(jù)流依次到達(dá)的每個(gè)數(shù)據(jù)報(bào)(數(shù)據(jù)包)必須被存儲(chǔ)、處理、然后轉(zhuǎn)發(fā)。這個(gè)過(guò)程將耗用一些有限量的時(shí)間來(lái)執(zhí)行。隨著數(shù)據(jù)包到達(dá)的速率增大,將到達(dá)單處理器不再能跟上步伐的點(diǎn)。那么這些功能必須分布在被安排成流水線的多個(gè)處理器之間或者并行設(shè)置的多個(gè)處理器之間-每個(gè)處理器以某種循環(huán)序列依次接收來(lái)自數(shù)據(jù)流的數(shù)據(jù)包。從并行處理器輸出的數(shù)據(jù)包通常在轉(zhuǎn)發(fā)之前被重新排序。
這是對(duì)于高性能數(shù)據(jù)包處理的一種充分證明了的方式,但隨著處理器數(shù)量增加而在其可縮放性上受到限制。無(wú)論是對(duì)于代碼還是數(shù)據(jù),對(duì)共享存儲(chǔ)器的訪問(wèn)最終成為瓶頸。對(duì)共享狀態(tài)的同時(shí)R/W訪問(wèn)將進(jìn)一步增加系統(tǒng)控制信令的復(fù)雜度以便解決爭(zhēng)用。
這留下了由多個(gè)并行處理器對(duì)共享狀態(tài)信息的多個(gè)項(xiàng)目進(jìn)行高速訪問(wèn)的問(wèn)題。隨著處理器數(shù)量及其算法復(fù)雜度增加,對(duì)于到共享數(shù)據(jù)的系統(tǒng)總線的地址和數(shù)據(jù)帶寬要求也將增加。這可能成為瓶頸。本說(shuō)明稍后描述的狀態(tài)元素技術(shù)通過(guò)局部化和管理對(duì)共享狀態(tài)的串行化來(lái)支持并行處理系統(tǒng)。
切題的一個(gè)好的例子是網(wǎng)絡(luò)路由器中通信量管理的難題。按流量的通信量處理中的一個(gè)公認(rèn)的重大問(wèn)題是,需要對(duì)大量隊(duì)列中的每一個(gè)維護(hù)狀態(tài)的大量項(xiàng)目。這意味著(a)需要實(shí)現(xiàn)相當(dāng)大的共享存儲(chǔ)器;(b)如果每個(gè)隊(duì)列要求對(duì)不同(共享)狀態(tài)變量進(jìn)行分別訪問(wèn),則需要許多存儲(chǔ)器地址帶寬;以及(c)存儲(chǔ)器訪問(wèn)等待時(shí)間可能很長(zhǎng),因而在修改過(guò)程中導(dǎo)致?tīng)顟B(tài)阻塞,從而影響性能。
對(duì)共享狀態(tài)變量的爭(zhēng)用可通過(guò)實(shí)現(xiàn)稍后所述的狀態(tài)元素來(lái)解決。但是,高性能系統(tǒng)中的狀態(tài)元素概念本身不是一種解決方案。為了最大吞吐量和靈活性,大量狀態(tài)元素被組合到狀態(tài)引擎中。這允許對(duì)共享狀態(tài)的多個(gè)并發(fā)訪問(wèn)。本發(fā)明旨在解決以下問(wèn)題1.并行處理器可創(chuàng)建對(duì)狀態(tài)的相同項(xiàng)目的高速率訪問(wèn)。
2.如果給定功能需要從相同地址訪問(wèn)多個(gè)變量,即需要訪問(wèn)和處理狀態(tài)記錄,則發(fā)生什么情況?3.如果在處理器中對(duì)單個(gè)數(shù)據(jù)報(bào)執(zhí)行的多個(gè)功能各要求訪問(wèn)狀態(tài)變量或記錄的不同的獨(dú)立可尋址的表,則發(fā)生什么情況?簡(jiǎn)言之,所針對(duì)的基本問(wèn)題在于高速率的狀態(tài)訪問(wèn)。這個(gè)問(wèn)題必須以靈活方式來(lái)解決,使所存儲(chǔ)的狀態(tài)的數(shù)量以及狀態(tài)訪問(wèn)的速率能夠易于縮放。
發(fā)明概述在一個(gè)方面,本發(fā)明提供一種并行處理器,它包括提供對(duì)共享狀態(tài)的相干并行訪問(wèn)的狀態(tài)元素部件。
并行處理器最好是陣列處理器,例如SIMD處理器。并行處理器還可包括串行化和/或同步對(duì)所述共享狀態(tài)的多個(gè)訪問(wèn)/更新的部件。
所述狀態(tài)可包括狀態(tài)的單個(gè)項(xiàng)目或者狀態(tài)的多個(gè)項(xiàng)目,以及可包括在存儲(chǔ)器中的單個(gè)存儲(chǔ)位置或數(shù)據(jù)結(jié)構(gòu)。
對(duì)所述狀態(tài)的操作可作為操作的固定或硬連接集合來(lái)執(zhí)行。其它部件可提供數(shù)據(jù)以更新所述狀態(tài)。部件還可向所述狀態(tài)發(fā)送命令和數(shù)據(jù),因而所述操作是可編程的。
多個(gè)所述狀態(tài)元素部件可組織成狀態(tài)細(xì)胞部件,從而對(duì)所述狀態(tài)的操作可以是流水線式的。可以有多個(gè)所述狀態(tài)細(xì)胞部件,從而允許與所述狀態(tài)有關(guān)的多個(gè)請(qǐng)求同時(shí)被處理。
狀態(tài)細(xì)胞部件還可包括輸入和輸出互連部件,提供對(duì)所述狀態(tài)細(xì)胞部件的訪問(wèn)或者來(lái)自所述狀態(tài)細(xì)胞部件的訪問(wèn);所述輸入和輸出互連部件的總線接口,所述總線接口與系統(tǒng)總線接口;以及控制單元,與所述系統(tǒng)總線互連,用于控制對(duì)所述狀態(tài)的訪問(wèn)。
各所述狀態(tài)元素部件最好包括本地存儲(chǔ)器,以及數(shù)據(jù)記錄的各字段存儲(chǔ)在相應(yīng)狀態(tài)元素部件的相應(yīng)存儲(chǔ)器中。
各所述狀態(tài)元素部件最好包括所述狀態(tài)的本地存儲(chǔ)器、適合對(duì)所述本地存儲(chǔ)器中的所述狀態(tài)執(zhí)行運(yùn)算的算術(shù)單元、以及控制所述運(yùn)算的命令和控制邏輯。
本發(fā)明還考慮結(jié)合了如以上陳述的任一項(xiàng)所指定的并行處理器的計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)處理器。
處理器可設(shè)置在單個(gè)硅片上。
附圖簡(jiǎn)介現(xiàn)在將參照附圖來(lái)描述本發(fā)明,附圖中
圖1是全部根據(jù)本發(fā)明、使用狀態(tài)元素的狀態(tài)引擎的示意圖;圖2是狀態(tài)引擎的功能表示;圖3是組成狀態(tài)引擎的一部分的狀態(tài)細(xì)胞的實(shí)現(xiàn);圖4是作為設(shè)計(jì)用于通信量處理和隊(duì)列管理的復(fù)雜狀態(tài)引擎的通用狀態(tài)引擎的特定實(shí)現(xiàn);圖5與使用本發(fā)明所實(shí)施的狀態(tài)元素的益處對(duì)照來(lái)說(shuō)明訪問(wèn)共享狀態(tài)的先有技術(shù)方法;圖6是根據(jù)本發(fā)明的狀態(tài)元素的功能概覽;圖7是狀態(tài)元素的實(shí)現(xiàn)概覽;以及圖8和圖9表示狀態(tài)元素的狀態(tài)和命令單元的優(yōu)選實(shí)現(xiàn)的相應(yīng)實(shí)例。
所示實(shí)施例的詳細(xì)描述現(xiàn)在參照?qǐng)D5-9來(lái)描述狀態(tài)元素的一個(gè)特定設(shè)計(jì)。但是,其它設(shè)計(jì)對(duì)于包含在狀態(tài)引擎中是可行的。
當(dāng)流水線或并行處理器共享要求對(duì)其讀寫(xiě)訪問(wèn)的狀態(tài)變量時(shí)出現(xiàn)問(wèn)題??赡懿辉试S處理器同時(shí)讀取/修改/回寫(xiě)共享變量,因?yàn)閬?lái)自第一回寫(xiě)的結(jié)果將被第二個(gè)蓋寫(xiě)。需要對(duì)訪問(wèn)串行化。
這引起兩個(gè)重要問(wèn)題1.必須實(shí)現(xiàn)用于使處理器相互鎖定的系統(tǒng),使得它們可仲裁資源,然后當(dāng)存在爭(zhēng)用時(shí)對(duì)它鎖定。這個(gè)控制信令可能是復(fù)雜的,并增加大量功能和性能開(kāi)銷(xiāo)。
2.當(dāng)處理器已經(jīng)成功地協(xié)商資源時(shí),它應(yīng)當(dāng)使用那個(gè)資源,然后盡快釋放它,以便限制施加到其它處理器上的延遲。如果訪問(wèn)等待時(shí)間對(duì)于外部存儲(chǔ)器很長(zhǎng),則這可嚴(yán)重影響系統(tǒng)性能。
信標(biāo)可用來(lái)互鎖處理器或控制邏輯,以及高速緩存可用來(lái)攔截并發(fā)訪問(wèn)并將它們串行化。但是,這些操作可能是復(fù)雜的、緩慢的和/或要求結(jié)合到硬件中的大量支持。嵌入式存儲(chǔ)器可減少封鎖時(shí)間,但延遲可能仍然明顯。本說(shuō)明中所述的狀態(tài)元素采用不同的方式,通過(guò)這種方式,可接受存在串行化點(diǎn),并建立一種方法以管理它而不是創(chuàng)建互鎖。在如稍后會(huì)變得更為清楚的廣義方面,功能與本地存儲(chǔ)器共存,該功能在存儲(chǔ)器中而不是在軟件中執(zhí)行讀取、修改和回寫(xiě)。它是一種物理解決方案而不是基于軟件的解決方案。
這個(gè)解決方案的一種缺點(diǎn)在于,它“管束”軟件。先前可編程的某個(gè)方面這時(shí)由阻塞軟件的另外某個(gè)方面所取代。這兩個(gè)方面是相互關(guān)聯(lián)的。第一個(gè)問(wèn)題是軟件的串行化,但這具有以下結(jié)果如果解決方案是通過(guò)硬件,而不是在系統(tǒng)中具有讀取/修改/回寫(xiě)周轉(zhuǎn)時(shí)間以及復(fù)雜控制信號(hào)的數(shù)十個(gè)周期,它將減少到幾個(gè)周期以內(nèi),但這時(shí)進(jìn)行實(shí)際修改的實(shí)體是硬件。不但消除等待時(shí)間問(wèn)題,這個(gè)解決方案還針對(duì)它引入的可能處理軟件的其它問(wèn)題。
本解決方案的這個(gè)方面的獨(dú)創(chuàng)性在于靠近存儲(chǔ)器的邏輯的重新定位與使它半可編程的組合。
狀態(tài)元素是本上下文中的關(guān)鍵組件,它們執(zhí)行到共享存儲(chǔ)器中的訪問(wèn)的串行化。在其中對(duì)共享狀態(tài)的同時(shí)訪問(wèn)是越來(lái)越可能的并行處理器的上下文中,存在可能許多的狀態(tài)元素,它們?nèi)渴遣⑿械?,?zhí)行來(lái)自并行處理器的功能調(diào)用,但全部為SIMD,其中并行處理器從單指令流進(jìn)行操作,狀態(tài)元素并行但從各自的指令流進(jìn)行操作。它們響應(yīng)來(lái)自處理器的請(qǐng)求有效地操作。
狀態(tài)元素可用于MIMD體系結(jié)構(gòu),或者實(shí)際上用于存在要解決的沖突的任何位置。但是,它特別適用于SIMD體系結(jié)構(gòu),因?yàn)镸IMD更容許存儲(chǔ)器訪問(wèn)中的非確定性,而SIMD更偏向一切都是確定性的。
本發(fā)明的這個(gè)方面的一個(gè)優(yōu)點(diǎn)是系統(tǒng)總線上的負(fù)荷的減小。功能調(diào)用一般通過(guò)總線發(fā)出,以便指示狀態(tài)元素執(zhí)行功能。發(fā)出命令,該命令產(chǎn)生讀取請(qǐng)求,使數(shù)據(jù)被返回,以及使已修改數(shù)據(jù)再次被回寫(xiě)。在狀態(tài)元素中,不是具有通過(guò)系統(tǒng)總線的三個(gè)訪問(wèn),這時(shí)只有一個(gè)。因此,可遠(yuǎn)程執(zhí)行相當(dāng)復(fù)雜的操作,而無(wú)需不斷向處理器回送信息。
在優(yōu)選實(shí)現(xiàn)中,命令行允許命令被發(fā)出,以訪問(wèn)和修改一段存儲(chǔ)器或者在狀態(tài)元素中存放微碼。因此,狀態(tài)元素包括基本存儲(chǔ)器加上ALU、在其中寫(xiě)入微碼的控制器單元以及特殊功能單元、如加法單元。設(shè)計(jì)原理的一部分是使元素能夠成為申請(qǐng)人的工具包的一部分,其中所需功能可根據(jù)需要被“固定”。
因此存在兩級(jí)靈活性。一方面,存儲(chǔ)器中的微碼可改變,使得不是通過(guò)添加被傳遞到命令行以進(jìn)行回寫(xiě)的固定操作來(lái)執(zhí)行例如讀取/修改等操作,而是可能通過(guò)另一段軟件,例如讀取、添加值、保存、添加另一個(gè)值并回寫(xiě)。如果需要條件讀取/修改/回寫(xiě),則可添加條件塊。如果想要?dú)v史功能,則可提供在其中保持標(biāo)志集的歷史塊。因此,可保持控制標(biāo)志,允許將來(lái)訪問(wèn),其中可根據(jù)那個(gè)標(biāo)志來(lái)執(zhí)行兩個(gè)操作中的一個(gè)或另一個(gè)。
狀態(tài)元素是關(guān)鍵組件,它們執(zhí)行到共享存儲(chǔ)器中的訪問(wèn)的串行化。狀態(tài)元素被組合在狀態(tài)引擎中并連接到總線。狀態(tài)元素可比作微型微碼ALU,但重點(diǎn)是在存儲(chǔ)器訪問(wèn)而不是在處理側(cè)。狀態(tài)元素主要包括具有靈活的、但著重進(jìn)出存儲(chǔ)器的數(shù)據(jù)的快速傳遞的附加功能的存儲(chǔ)器。它對(duì)存儲(chǔ)器執(zhí)行靈活的功能。
在采用單處理器的系統(tǒng)、如數(shù)據(jù)包隊(duì)列控制系統(tǒng)中,當(dāng)處理器從存儲(chǔ)器中尋找數(shù)據(jù)時(shí)沒(méi)有爭(zhēng)用。數(shù)據(jù)包隊(duì)列的狀態(tài)對(duì)于單處理器是可用的。單處理器可保持多達(dá)10000個(gè)這種隊(duì)列。但是,與此對(duì)比,考慮多個(gè)處理器共享對(duì)存儲(chǔ)器中的某些狀態(tài)的訪問(wèn)的情況。在任何時(shí)刻,一個(gè)以上處理器可能需要更新同一個(gè)隊(duì)列的狀態(tài)。因此存在更大的爭(zhēng)用可能。如果爭(zhēng)用將通過(guò)復(fù)制處理器來(lái)避免,則存在更大的復(fù)雜度,尤其是在采取措施以保留處理器之間的狀態(tài)相干性以及所需存儲(chǔ)裝置大小方面。因此,需要讓狀態(tài)保持在存儲(chǔ)器中,它對(duì)于所有處理器是可用的,但其方式是,整個(gè)過(guò)程沒(méi)有被減慢到不能接受的程度。
圖5a示意說(shuō)明本發(fā)明能夠解決的問(wèn)題的類(lèi)型。該圖表示包含響應(yīng)來(lái)自兩個(gè)處理器中的一個(gè)或另一個(gè)的請(qǐng)求而經(jīng)由片上總線訪問(wèn)的傳統(tǒng)存儲(chǔ)器的過(guò)程的時(shí)間線。假定是處理器間串行化。例如,如果處理器1發(fā)出讀取請(qǐng)求,則被尋址數(shù)據(jù)從存儲(chǔ)器中被讀取,以及數(shù)據(jù)通過(guò)總線傳送給處理器。然后,數(shù)據(jù)在處理器中進(jìn)行修改,以及結(jié)果經(jīng)由總線回寫(xiě)到存儲(chǔ)器。在這時(shí),例如來(lái)自第二處理器的其它任何請(qǐng)求被封鎖。這是必要的,因?yàn)橥瑯拥臄?shù)據(jù)不能同時(shí)在不同處理器的控制下經(jīng)過(guò)修改。在封鎖周期結(jié)束時(shí),存儲(chǔ)器再次變成對(duì)下一個(gè)請(qǐng)求是可用的。顯然,封鎖周期對(duì)各個(gè)處理器執(zhí)行的整個(gè)過(guò)程的速度施加了相當(dāng)大的約束。
狀態(tài)元素對(duì)這種已知方法提供一種備選方案,它要求一種配置,其中并行處理器從存儲(chǔ)器中讀取、修改、回寫(xiě)數(shù)據(jù),并請(qǐng)求存儲(chǔ)器代表它來(lái)執(zhí)行修改。然而,本發(fā)明的優(yōu)選實(shí)現(xiàn)中的狀態(tài)元素定位串行化點(diǎn),它不在每個(gè)處理器之內(nèi)/之間,而是在具有對(duì)于其中存儲(chǔ)了共享狀態(tài)變量的存儲(chǔ)器的本地快速訪問(wèn)的簡(jiǎn)單共享處理器中。
狀態(tài)元素與面向?qū)ο蟮脑O(shè)計(jì)中的對(duì)象相似。它已經(jīng)秘密地存儲(chǔ)了只有經(jīng)由對(duì)象的方法才可訪問(wèn)的數(shù)據(jù)。通過(guò)發(fā)出命令,并行處理器可被認(rèn)為正進(jìn)行對(duì)于對(duì)象的方法調(diào)用。
狀態(tài)元素的優(yōu)選實(shí)施例包括與簡(jiǎn)單算術(shù)和邏輯單元結(jié)合的、具有單周期讀/寫(xiě)訪問(wèn)時(shí)間的小塊嵌入式存儲(chǔ)器60,如圖6中一般所示。算術(shù)單元61(從處理器)接收包含地址、數(shù)據(jù)和命令代碼的命令。地址標(biāo)識(shí)將被訪問(wèn)的狀態(tài)變量,數(shù)據(jù)提供簡(jiǎn)單計(jì)算機(jī)用來(lái)修改變量的操作數(shù),以及命令62選擇已編程微碼63的本地存儲(chǔ)線程,它能夠在極少數(shù)量的系統(tǒng)時(shí)鐘周期內(nèi)讀取、修改和回寫(xiě)狀態(tài)變量。結(jié)果可返回到發(fā)出該命令的處理器。
實(shí)施例的詳細(xì)情況狀態(tài)元素包括嵌入式存儲(chǔ)器和附加功能。該功能可以是硬布線的(有限狀態(tài)機(jī))或者是可編程的微碼電路。后一種方式更通用和復(fù)雜。組件模塊及其互連的系統(tǒng)的更完整圖形如圖7所示。注意特殊功能和條件塊的存在。這些極大地?cái)U(kuò)展了元素的工作能力。
狀態(tài)元素設(shè)計(jì)中的重點(diǎn)在于快速存儲(chǔ)器訪問(wèn)速度而不是處理能力。嵌入式存儲(chǔ)器塊足夠小,使得單周期訪問(wèn)時(shí)間是可實(shí)現(xiàn)的??膳渲玫淖x取/修改/回寫(xiě)(R/M/W)在兩個(gè)周期時(shí)段內(nèi)是可能的,因?yàn)槟軌驅(qū)ψx取的結(jié)果執(zhí)行簡(jiǎn)單算術(shù)運(yùn)算,并在第二周期內(nèi)讓它回轉(zhuǎn)以便回寫(xiě)。命令通??稍?到5個(gè)時(shí)鐘周期內(nèi)完全被處理。
圖8說(shuō)明算術(shù)單元的簡(jiǎn)單性以及命令行與存儲(chǔ)器之間的路徑如何具有最小延遲。圖9表示一個(gè)更復(fù)雜的變體,其中,狀態(tài)的多個(gè)項(xiàng)目保存在存儲(chǔ)器中。對(duì)命令行周轉(zhuǎn)(以及微碼存儲(chǔ)大小)的影響很顯著。但是,這并不是說(shuō),圖9的電路不可用于適當(dāng)?shù)那闆r中。例如,在具有更復(fù)雜的狀態(tài)集的較低性能的系統(tǒng)中,它可能是優(yōu)選方法。
狀態(tài)引擎的總體概述狀態(tài)引擎可采用狀態(tài)元素作為原子部分以結(jié)構(gòu)化及明確定義的方式來(lái)構(gòu)建。正如簡(jiǎn)單細(xì)胞組合成簡(jiǎn)單有機(jī)物、分子可以是簡(jiǎn)單細(xì)胞的構(gòu)造塊、原子是分子的組成部分那樣,狀態(tài)元素可組合成狀態(tài)細(xì)胞,它們成倍增加為狀態(tài)陣列,狀態(tài)陣列又可以組合在一起以形成狀態(tài)引擎。雖然特定狀態(tài)元素設(shè)計(jì)稍后在此上下文中描述,但本發(fā)明包括利用其它狀態(tài)元素的狀態(tài)引擎。
這種分級(jí)設(shè)計(jì)構(gòu)架如圖1所示。所示組成部分為狀態(tài)記錄-這是概念實(shí)體,由具有給定基地址的一個(gè)或多個(gè)狀態(tài)變量的組構(gòu)成。
命令行-由處理器發(fā)送到狀態(tài)引擎的消息。命令行中的字段包含命令代碼、地址和數(shù)據(jù)。處理器有效地請(qǐng)求對(duì)給定地址中的狀態(tài)記錄執(zhí)行由命令代碼索引到的功能。參數(shù)可在通用數(shù)據(jù)字段中提供以及返回。
狀態(tài)元素-狀態(tài)元素是保密的小存儲(chǔ)器,它包含只有經(jīng)由狀態(tài)元素的控制邏輯所執(zhí)行的功能才可訪問(wèn)的狀態(tài)變量。這些功能通常讀取狀態(tài)變量,執(zhí)行某種修改,以及回寫(xiě)新的值。結(jié)果也可記錄在命令行的數(shù)據(jù)字段中。狀態(tài)元素的主要作用是通過(guò)以最大速度對(duì)存儲(chǔ)器執(zhí)行簡(jiǎn)單功能來(lái)管理狀態(tài)訪問(wèn)串行化點(diǎn)。狀態(tài)元素的特定實(shí)現(xiàn)已經(jīng)在本說(shuō)明中進(jìn)行了描述。
狀態(tài)細(xì)胞-如果記錄中有一個(gè)以上狀態(tài)變量,則可允許整個(gè)記錄作為一個(gè)條目被存儲(chǔ)在單個(gè)狀態(tài)元素中。但是,當(dāng)記錄中的每個(gè)字段將需要被依次處理時(shí),這將把可用帶寬限制到此狀態(tài)。在狀態(tài)細(xì)胞中,記錄的每個(gè)字段作為單個(gè)狀態(tài)變量存儲(chǔ)在其本身的狀態(tài)元素中。這些狀態(tài)元素則共同鏈接成流水線。命令行從一個(gè)元素傳遞到下一個(gè)元素,相同的地址和控制字在每一級(jí)用于從公共記錄中揀選不同的字段,并對(duì)它執(zhí)行某種功能。狀態(tài)細(xì)胞邏輯提供有效地構(gòu)成面向存儲(chǔ)器的流水線處理系統(tǒng)的它的組成元素之間的同步。
因此,狀態(tài)細(xì)胞的主要作用是提供構(gòu)造允許高速處理更復(fù)雜的狀態(tài)記錄的簡(jiǎn)單流水線處理器的方法。
狀態(tài)陣列-用于狀態(tài)細(xì)胞的狀態(tài)元素的嵌入式存儲(chǔ)器的體積必須較小,以便快速(理想地為單周期)訪問(wèn)。這對(duì)于可存儲(chǔ)在單狀態(tài)細(xì)胞中的狀態(tài)記錄的示例數(shù)量設(shè)置了限制。為了增加狀態(tài)的數(shù)量,給定類(lèi)型的狀態(tài)細(xì)胞可以平鋪以形成大的狀態(tài)陣列。在設(shè)備布局過(guò)程中的縮放通過(guò)狀態(tài)陣列互連來(lái)簡(jiǎn)化?;ミB框架的分段以及平鋪陣列中利用明確定義的接口的相鄰細(xì)胞的耦合如圖2所示?;ミB保留對(duì)相同狀態(tài)細(xì)胞的訪問(wèn)之間的順序。由于不要求訪問(wèn)不同狀態(tài)細(xì)胞的命令行之間的順序保留,因此不需要對(duì)陣列中的不同細(xì)胞的命令行訪問(wèn)的等待時(shí)間被平衡。陣列是以簡(jiǎn)單方式可縮放的,并且是布局友好的。
通過(guò)成倍增加狀態(tài)細(xì)胞來(lái)增加總狀態(tài)存儲(chǔ)容量還可增加整體狀態(tài)訪問(wèn)帶寬,因?yàn)楦鱾€(gè)狀態(tài)細(xì)胞的吞吐量可能略低于互連的吞吐量。如果狀態(tài)細(xì)胞的數(shù)量增加到互連成為限制因素的點(diǎn),則合計(jì)吞吐量可通過(guò)提供多個(gè)互連信道來(lái)進(jìn)一步增加,其中每個(gè)信道訪問(wèn)陣列(即表)的不同部分。這與設(shè)計(jì)具有多個(gè)獨(dú)立可尋址信道以增加隨機(jī)訪問(wèn)帶寬的存儲(chǔ)器系統(tǒng)相似。
狀態(tài)陣列的主要作用是提供可縮放容量。它還提供用于縮放地址和數(shù)據(jù)帶寬的方式。
狀態(tài)引擎-狀態(tài)引擎把狀態(tài)陣列與所有附加膠合邏輯以及構(gòu)造可經(jīng)由系統(tǒng)總線配置及訪問(wèn)的塊所要求的設(shè)施相結(jié)合。組件包括●總線接口邏輯●系統(tǒng)控制邏輯-狀態(tài)引擎控制器可向狀態(tài)陣列發(fā)出(保密)系統(tǒng)命令。這些命令由外部塊通過(guò)經(jīng)由實(shí)用總線接口對(duì)控制器的訪問(wèn)來(lái)調(diào)用。只有(公開(kāi))狀態(tài)命令可經(jīng)由主數(shù)據(jù)流接口到達(dá)。系統(tǒng)命令配置陣列或者提取診斷信息。
●旁路邏輯-旁路模式使命令能夠跳過(guò)它們不要求訪問(wèn)的陣列。這將節(jié)省功率和帶寬。所需提取和插入點(diǎn)也可由系統(tǒng)控制器使用。
●陣列間交換連接器-這包括用于路由各表格之間的訪問(wèn)的(Banyan)交換技術(shù)的新應(yīng)用。它可能僅當(dāng)存在通過(guò)各狀態(tài)陣列的一個(gè)以上獨(dú)立路由時(shí)才被要求。
狀態(tài)引擎行為包括●消息廣播-系統(tǒng)命令可在整個(gè)存儲(chǔ)器陣列上廣播,用于檢索狀態(tài)或傳遞配置和控制消息。這個(gè)方法還用于把微碼加載到狀態(tài)陣列中。
●多個(gè)訪問(wèn)-如果多個(gè)陣列連接到管道中,則顯然每個(gè)命令行必須包含各陣列的不同地址和命令信息。因此,從處理器發(fā)出的單個(gè)命令產(chǎn)生多個(gè)狀態(tài)訪問(wèn)。
●命令行“變形”-當(dāng)命令行逐個(gè)陣列地傳播時(shí),它們被使用并且有時(shí)因各個(gè)狀態(tài)元素訪問(wèn)而被更新。由一個(gè)陣列中的狀態(tài)元素插入到命令中的數(shù)據(jù)可由下一個(gè)陣列中的狀態(tài)元素使用。數(shù)據(jù)、也許甚至地址可被修改。
實(shí)施例的詳細(xì)情況把狀態(tài)元素共同“縫合”到流水線中的狀態(tài)細(xì)胞如圖3所示。構(gòu)成狀態(tài)細(xì)胞的狀態(tài)元素的流水線存儲(chǔ)一組狀態(tài)記錄的成分變量。訪問(wèn)這些狀態(tài)記錄的命令到達(dá)第一狀態(tài)元素。控制字段用來(lái)確定對(duì)狀態(tài)記錄的第一成分進(jìn)行的更新,在本例中是經(jīng)由微碼控制器進(jìn)行。然后,命令行被傳遞到下一個(gè)狀態(tài)元素,以便更新?tīng)顟B(tài)記錄的下一個(gè)成分。這對(duì)于狀態(tài)細(xì)胞中的流水線長(zhǎng)度重復(fù)進(jìn)行。來(lái)自流水線的最后級(jí)的結(jié)果返回給請(qǐng)求處理器。
狀態(tài)陣列的體系結(jié)構(gòu)以及狀態(tài)引擎組件的互連如圖4所示。這使用標(biāo)準(zhǔn)/已知的路由選擇和負(fù)荷平衡技術(shù)把輸入命令行分配給適當(dāng)?shù)臓顟B(tài)細(xì)胞。
附加特征負(fù)荷平衡-狀態(tài)記錄可根據(jù)需要?jiǎng)討B(tài)分配(以及還可重新分配)是可能的。如果存在通過(guò)給定陣列的多個(gè)路徑,則希望所存儲(chǔ)狀態(tài)在可用狀態(tài)元素/細(xì)胞之間均勻分布。這種系統(tǒng)中的狀態(tài)條目的可用性可由控制器通過(guò)下列方式來(lái)通知確保記錄從各元素依次被分配,從而平衡負(fù)荷。
因此,本質(zhì)上,本發(fā)明的優(yōu)選實(shí)現(xiàn)提供以下特征,其中針對(duì)與并行處理器的高速數(shù)據(jù)查找關(guān)聯(lián)的所有指定問(wèn)題●形式框架,用于創(chuàng)建采用智能存儲(chǔ)器(通常為狀態(tài)元素)的并行協(xié)處理器。
●單個(gè)訪問(wèn),多個(gè)查找-單個(gè)訪問(wèn)對(duì)狀態(tài)引擎內(nèi)的多個(gè)獨(dú)立狀態(tài)表起作用,即,由于來(lái)自總線的單個(gè)請(qǐng)求而到不同存儲(chǔ)器所保存的不同表中的多個(gè)查找。
●流水線體系結(jié)構(gòu)-到不同表中的查找不是從點(diǎn)源向不同存儲(chǔ)器中發(fā)出的。而是,訪問(wèn)本身(以命令行的形式)以串行方式從一個(gè)表格路由到另一個(gè)表格。它是通過(guò)狀態(tài)引擎?zhèn)鞑サ膶?duì)象。
●命令行“變形”-當(dāng)命令行沿管道逐個(gè)表格地傳播時(shí),它們被使用并且有時(shí)因每個(gè)表訪問(wèn)而被更新。由一個(gè)表插入到命令中的數(shù)據(jù)可由下一個(gè)中的狀態(tài)元素使用。
●狀態(tài)細(xì)胞概念-高吞吐量流水線處理(可縮放處理能力)●狀態(tài)陣列概念-用于縮放狀態(tài)數(shù)量、帶寬和負(fù)荷平衡的“布局友好”方案●狀態(tài)引擎概念-來(lái)自單個(gè)命令的多個(gè)正交查找利用多通道狀態(tài)引擎體系結(jié)構(gòu)的交換技術(shù)。控制器為數(shù)據(jù)和指令廣播提供系統(tǒng)命令。
●狀態(tài)元素可交互。
本發(fā)明所針對(duì)的問(wèn)題特別適合對(duì)于通信量處理應(yīng)用中訪問(wèn)共享狀態(tài)的陣列處理器的應(yīng)用。狀態(tài)引擎被認(rèn)為是以針對(duì)高速狀態(tài)訪問(wèn)的附加問(wèn)題的方式來(lái)設(shè)置狀態(tài)元素(管理狀態(tài)爭(zhēng)用所需的)的一種方式。
但是,狀態(tài)引擎還可從相同或相似的狀態(tài)元素來(lái)構(gòu)造,以便滿足其它應(yīng)用的需求-例如通信量調(diào)節(jié)的相關(guān)領(lǐng)域中的計(jì)量表管理。因此,狀態(tài)引擎可用于把狀態(tài)元素技術(shù)傳遞給其中并行(或者甚至流水線)處理器以高速率訪問(wèn)共享狀態(tài)的其它任何應(yīng)用。
附加可選特征系統(tǒng)線程-后臺(tái),系統(tǒng)線程可編程為當(dāng)沒(méi)有為來(lái)自處理器的命令提供服務(wù)時(shí)對(duì)狀態(tài)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行操作。例如,能夠用于標(biāo)識(shí)空閑的狀態(tài)條目。
查找空閑隊(duì)列算法-“查找_空閑_隊(duì)列”系統(tǒng)功能。這是后臺(tái)線程,它實(shí)現(xiàn)重新分配用來(lái)表示/管理轉(zhuǎn)為空閑(即空)的隊(duì)列的狀態(tài)條目的“兩擊輸出(Two strikes and out)”算法。
特殊功能單元-“標(biāo)志單元”和“地址單元”是設(shè)計(jì)用于支持查找空閑隊(duì)列算法的特殊功能單元。它們提供的特征被認(rèn)為是通用值的,并且可由其它算法(例如維護(hù)狀態(tài)元素中的計(jì)量表所需的)使用調(diào)度算法-自同步公平排隊(duì)算法所要求的信息無(wú)法直接映射到狀態(tài)元素中。它以使訪問(wèn)和操作更健壯和有效的形式來(lái)表示。
因此,可以理解,構(gòu)成本發(fā)明的組成部分的狀態(tài)元素可提供以下特征●智能存儲(chǔ)器-狀態(tài)元素在存儲(chǔ)器端而不是處理器端局部化并行數(shù)據(jù)訪問(wèn)的串行化。這極大地減小了一般與狀態(tài)的阻塞關(guān)聯(lián)的等待時(shí)間。
●功能多用性-狀態(tài)元素提供大量(已配置/)已編程遠(yuǎn)程功能,它們可對(duì)存儲(chǔ)數(shù)據(jù)執(zhí)行-功能將包括少量數(shù)據(jù)讀取、寫(xiě)入、算術(shù)運(yùn)算和條件訪問(wèn)。
●靈活性-這些功能可以(但不一定需要)以微碼來(lái)表示,使得狀態(tài)元素仍然可編程,并且沒(méi)有使處理器中運(yùn)行的軟件“依靠”硬連接到狀態(tài)元素中的功能。
●系統(tǒng)效率-讀取/回寫(xiě)出現(xiàn)在ALU與狀態(tài)元素內(nèi)部的存儲(chǔ)器之間。只有命令才通過(guò)系統(tǒng)總線傳播。這與傳統(tǒng)方法相比,減小了系統(tǒng)總線上的負(fù)荷。
●系統(tǒng)簡(jiǎn)單性-讀取/修改/寫(xiě)入被封裝在狀態(tài)元素內(nèi),以及通過(guò)狀態(tài)元素邏輯固有地實(shí)施串行化。處理器無(wú)需首先相互協(xié)商便可同時(shí)發(fā)出使某個(gè)功能對(duì)狀態(tài)的同一個(gè)項(xiàng)目起作用的命令。
●不需要在返回時(shí)對(duì)結(jié)果歸類(lèi)-存在到請(qǐng)求處理器的自動(dòng)返回。
應(yīng)當(dāng)認(rèn)識(shí)到,爭(zhēng)用不是通信量處理獨(dú)有的一個(gè)問(wèn)題,因此狀態(tài)元素還可用作任何應(yīng)用中支持并行處理器的通用工具。當(dāng)實(shí)時(shí)(數(shù)據(jù)流處理)系統(tǒng)中的任何兩個(gè)處理器要求對(duì)共享狀態(tài)變量的R/M/W訪問(wèn)時(shí),可能出現(xiàn)爭(zhēng)用。因此,狀態(tài)元素可與處理器的任何并行或流水線配置結(jié)合使用。
權(quán)利要求
1.一種并行處理器,包括提供對(duì)共享狀態(tài)的相干并行訪問(wèn)的狀態(tài)元素部件。
2.如權(quán)利要求1所述的并行處理器,其特征在于,所述并行處理器是陣列處理器。
3.如權(quán)利要求2所述的并行處理器,其特征在于,所述陣列處理器是SIMD處理器。
4.如以上權(quán)利要求中的任一項(xiàng)所述的并行處理器,其特征在于還包括使對(duì)所述共享狀態(tài)的多個(gè)訪問(wèn)/更新串行化和/或同步的部件。
5.如以上權(quán)利要求中的任一項(xiàng)所述的并行處理器,其特征在于,所述狀態(tài)包括狀態(tài)的單個(gè)項(xiàng)目。
6.如權(quán)利要求1至4中的任一項(xiàng)所述的并行處理器,其特征在于,所述狀態(tài)包括狀態(tài)的多個(gè)項(xiàng)目。
7.如權(quán)利要求1至4中的任一項(xiàng)所述的并行處理器,其特征在于,所述狀態(tài)包括存儲(chǔ)器中的單個(gè)存儲(chǔ)位置或者數(shù)據(jù)結(jié)構(gòu)。
8.如權(quán)利要求1所述的并行處理器,其特征在于,對(duì)所述狀態(tài)的操作是作為固定的或硬連接的操作集來(lái)執(zhí)行的。
9.如權(quán)利要求8所述的并行處理器,其特征在于還包括提供數(shù)據(jù)以更新所述狀態(tài)的部件。
10.如權(quán)利要求8所述的并行處理器,其特征在于還包括向所述狀態(tài)發(fā)送命令和數(shù)據(jù)的部件,從而所述操作是可編程的。
11.如權(quán)利要求1所述的并行處理器,其特征在于還包括多個(gè)所述狀態(tài)元素部件,它們組織成狀態(tài)細(xì)胞部件,從而對(duì)所述狀態(tài)的操作可以是流水線式的。
12.如權(quán)利要求11所述的并行處理器,其特征在于還包括多個(gè)所述狀態(tài)細(xì)胞部件,從而允許與所述狀態(tài)有關(guān)的多個(gè)請(qǐng)求同時(shí)被處理。
13.如權(quán)利要求12所述的并行處理器,其特征在于還包括輸入和輸出互連部件,它們提供對(duì)所述狀態(tài)細(xì)胞部件的訪問(wèn)和來(lái)自所述狀態(tài)細(xì)胞部件的訪問(wèn);用于所述輸入和輸出互連部件的總線接口,所述總線接口與系統(tǒng)總線相接口;以及控制單元,與所述系統(tǒng)總線互連,用于控制對(duì)所述狀態(tài)的訪問(wèn)。
14.如權(quán)利要求11至13中的任一項(xiàng)所述的并行處理器,其特征在于,各個(gè)所述狀態(tài)元素部件包括本地存儲(chǔ)器,以及數(shù)據(jù)記錄的各個(gè)字段存儲(chǔ)在相應(yīng)狀態(tài)元素部件的相應(yīng)存儲(chǔ)器中。
15.如以上權(quán)利要求中的任一項(xiàng)所述的并行處理器,其特征在于,各個(gè)所述狀態(tài)元素部件包括所述狀態(tài)的本地存儲(chǔ)器、適合對(duì)所述本地存儲(chǔ)器中的所述狀態(tài)執(zhí)行運(yùn)算的算術(shù)單元、以及控制所述運(yùn)算的命令和控制邏輯。
16.一種計(jì)算機(jī)系統(tǒng),包括如以上權(quán)利要求中的任一項(xiàng)所述的并行處理器。
17.一種網(wǎng)絡(luò)處理器,包括如以上權(quán)利要求中的任一項(xiàng)所述的并行處理器。
18.在單硅片上實(shí)現(xiàn)的、如以上權(quán)利要求中的任一項(xiàng)所述的并行處理器。
全文摘要
對(duì)并行處理器、如SIMD陣列處理器共享的狀態(tài)的相干訪問(wèn)和更新通過(guò)具有存儲(chǔ)狀態(tài)并允許訪問(wèn)串行化的本地存儲(chǔ)器的狀態(tài)元素的使用而成為可能。對(duì)狀態(tài)的單個(gè)或多個(gè)項(xiàng)目的操作通過(guò)固定/硬接線的操作集來(lái)執(zhí)行,但通過(guò)發(fā)送命令和數(shù)據(jù)來(lái)控制操作,它們是可編程的。各狀態(tài)元素包括本地存儲(chǔ)器、算術(shù)單元以及命令和控制邏輯。多個(gè)狀態(tài)元素在狀態(tài)細(xì)胞中是流水線式的,狀態(tài)細(xì)胞又被組織成實(shí)現(xiàn)對(duì)共享狀態(tài)訪問(wèn)的完全控制的狀態(tài)陣列和狀態(tài)引擎。讀取/修改/寫(xiě)入操作可以僅在兩個(gè)周期中執(zhí)行,以及完整的命令僅在三到五個(gè)周期中執(zhí)行。
文檔編號(hào)H04L12/54GK1735878SQ200380108223
公開(kāi)日2006年2月15日 申請(qǐng)日期2003年11月11日 優(yōu)先權(quán)日2002年11月11日
發(fā)明者A·斯潘塞 申請(qǐng)人:克利爾斯皮德科技有限公司