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

利用可編程轉(zhuǎn)移表快速轉(zhuǎn)移的系統(tǒng)和方法

文檔序號:6580963閱讀:300來源:國知局

專利名稱::利用可編程轉(zhuǎn)移表快速轉(zhuǎn)移的系統(tǒng)和方法
技術(shù)領(lǐng)域
:本發(fā)明大體上涉及處理器執(zhí)行期間的轉(zhuǎn)移,更具體地,涉及用于自動評估多條件表達并跳到多個可能目標指令之一的可編程轉(zhuǎn)移表。
背景技術(shù)
:程序由具有單一入口點(第一條指令)和單一出口點(最后一條指令)的順序指令的塊或串構(gòu)成。在任意特定塊之后可以從多個指令塊選擇要執(zhí)行的指令塊。當存在多于一個的可能塊時,必須使用一個或多個條件來確定選擇哪個塊。多個塊之間的鏈接模型被稱為程序的控制或流表。這些指令的塊在存儲器中被一起封裝。當對隨后的塊(塊B)沒有選擇時,在第一塊(塊A)之后其通常被立即替換。這意味著不需要控制的任何清楚改變來從塊A得到塊B。一些塊選擇后續(xù)的塊。僅清楚多個后續(xù)之一,例如塊B,可以在之后被順序地替換。其他的塊,塊C,在塊A中被清楚地指出。條件機制被用來確定選擇哪個塊。如果條件滿足,則被選擇的后續(xù)塊是塊C。如果條件不滿足,則被選擇的后續(xù)是塊B。這些是條件轉(zhuǎn)移。轉(zhuǎn)移被本領(lǐng)域中已知并且對于計算機系統(tǒng)執(zhí)行任何程序來說是本質(zhì)的。已知的計算機系統(tǒng)典型地包含專用寄存器,程序計數(shù)器寄存器,程序計數(shù)器寄存器提供執(zhí)行的下一個指令的地址的指示。該寄存器通常在執(zhí)行一個指令后自動增加,使得其當前指示下一個順序指令的地址。轉(zhuǎn)移指令被用來改變該行為。這些轉(zhuǎn)移指令指出用于下一個可執(zhí)行指令的可替換地址(目標位置)。條件轉(zhuǎn)移指令還指出使用可替換地址必須滿足的條件,否則程序計數(shù)器如正常情況增加。因此這些轉(zhuǎn)移指令定義指令塊的結(jié)束。典型的程序必須在如其執(zhí)行的稱為轉(zhuǎn)移點的多個地方執(zhí)行轉(zhuǎn)移操作。每個轉(zhuǎn)移點具有與其相關(guān)聯(lián)的特定轉(zhuǎn)移函數(shù),其不同于大多數(shù)其他轉(zhuǎn)移點處的轉(zhuǎn)移函數(shù)??梢愿鶕?jù)M個條件表達的向量和最多2M個可能目標地址的集合來定義轉(zhuǎn)移函數(shù)。無論何時程序執(zhí)行達到應(yīng)用轉(zhuǎn)移函數(shù)的轉(zhuǎn)移點,處理器評估這些條件表達,并且因此生成M布爾值的向量。轉(zhuǎn)移函數(shù)將該向量的2M個可能值的每一個映射到程序指令存儲器中的一些目標地址。程序員希望寫入執(zhí)行盡可能少指令的代碼來評估轉(zhuǎn)移函數(shù)并且之后在每個轉(zhuǎn)移點處執(zhí)行轉(zhuǎn)移。兩個目標是最小化可執(zhí)行代碼的大小并且最大化執(zhí)行性能,同時保持靈活性。大多數(shù)通用微處理器提供多種簡單的雙路條件轉(zhuǎn)移指令,其中依據(jù)一個特定條件表達為真或為假來采用或不采用轉(zhuǎn)移。如果轉(zhuǎn)移點要求評估多于一個的條件表達,并且可以使執(zhí)行跳到多于兩個的可能目標的一個,則程序必須執(zhí)行多個簡單雙路條件轉(zhuǎn)移指令。其中程序必須評估多個條件表達并且從代碼中的一個特定位置跳到多個可能目標之一的復(fù)雜轉(zhuǎn)移模式在多種計算情形中是自然發(fā)生的。在執(zhí)行這種復(fù)雜轉(zhuǎn)移決定時,程序員典型地希望寫入要求盡可能少的指令并且盡可能快的執(zhí)行的代碼。
發(fā)明內(nèi)容與本發(fā)明一致的系統(tǒng)和方法提供了比現(xiàn)有轉(zhuǎn)移處理方案更有效且靈活的轉(zhuǎn)移處4理。根據(jù)與本發(fā)明一致的系統(tǒng)和方法,處理器允許一個指令根據(jù)之前存儲在可編程轉(zhuǎn)移表中的某些任意轉(zhuǎn)移函數(shù),指出任意數(shù)量的不同條件表達的評估并且之后跳到多個可能目標之一。通過將這種復(fù)雜轉(zhuǎn)移計算壓縮到一個指令中,減小了可執(zhí)行代碼的大小(如由存儲在存儲器中的指令測量的)并且增加了性能(如由動態(tài)取出并執(zhí)行的指令測量的)。該技術(shù)還通過允許軟件定義多個不同的轉(zhuǎn)移函數(shù)并將轉(zhuǎn)移函數(shù)放置在轉(zhuǎn)移表中而提供靈活性。在一個實施例中,在包括處理器和程序計數(shù)器的數(shù)據(jù)處理系統(tǒng)的處理器中執(zhí)行一個方法,該方法包括以下步驟執(zhí)行包括多個微碼指令的計算機程序,其中多個微碼指令中的一個是具有多個條件的轉(zhuǎn)移指令;評估轉(zhuǎn)移指令;基于轉(zhuǎn)移指令的多個評估條件的結(jié)果跳到下一個指令;以及執(zhí)行下一個指令。在第二實施例中,計算機可讀介質(zhì)存儲用于執(zhí)行評估多條件轉(zhuǎn)移指令的方法的計算機可執(zhí)行指令,該方法包括以下步驟執(zhí)行包括多個微碼指令的計算機程序;評估包括多個條件的轉(zhuǎn)移指令;基于多個評估條件的結(jié)果跳到下一個指令;以及執(zhí)行下一個指令。在第三實施例中,用于執(zhí)行包括至少一個轉(zhuǎn)移指令的數(shù)據(jù)處理裝置包括存儲程序的存儲器,其中至少一個轉(zhuǎn)移指令包括包含轉(zhuǎn)移代碼的字段;以及轉(zhuǎn)移表數(shù)據(jù)結(jié)構(gòu),將至少一個轉(zhuǎn)移代碼映射到具有至少兩個條件表達的至少一個轉(zhuǎn)移函數(shù),其中基于兩個或更多條件表達的轉(zhuǎn)移函數(shù)的可能輸出存儲在轉(zhuǎn)移表數(shù)據(jù)結(jié)構(gòu)中;以及處理器,執(zhí)行程序并使用轉(zhuǎn)移表數(shù)據(jù)結(jié)構(gòu)來執(zhí)行至少一個轉(zhuǎn)移指令?!┭芯苛讼铝懈綀D和詳細描述,與本發(fā)明一致的其他系統(tǒng)、方法、特征和優(yōu)點將對本領(lǐng)域技術(shù)人員顯而易見。這些附加的系統(tǒng)、方法特征和優(yōu)點將被包括在本說明書和本發(fā)明的范圍中。結(jié)合并構(gòu)成本說明書的一部分的附圖示出了與本發(fā)明一致的裝置和方法的實現(xiàn)方式,并與說明書一起,解釋了與本發(fā)明一致的優(yōu)點和原理。在附圖中圖1是示出了根據(jù)一個實施例的示例性網(wǎng)絡(luò)環(huán)境的框圖;圖2是示出了根據(jù)一個實施例的示例性路由器的框圖;圖3是示出了根據(jù)一個實施例的查找單元的框圖;圖4是示出了根據(jù)一個實施例的包處理引擎的框圖;圖5是示出了根據(jù)一個實施例的用于地址計算的技術(shù)的邏輯圖;圖6示出了根據(jù)一個實施例的轉(zhuǎn)移表的實例;以及圖7是示出了根據(jù)一個實施例的用于反復(fù)取出并執(zhí)行任意數(shù)量的微指令的技術(shù)的流程圖。具體實施例方式與本發(fā)明一致的方法和系統(tǒng)提供了程序執(zhí)行期間靈活且有效的轉(zhuǎn)移。通過為處理器提供轉(zhuǎn)移表,處理器可以自動地評估存在兩個以上可能輸出的轉(zhuǎn)移函數(shù)。轉(zhuǎn)移函數(shù)將條件代碼的M-位向量映射到指出2W個可能轉(zhuǎn)移目標中的一個的N位值。存在將每個M位向量值映射到N位轉(zhuǎn)移目標值的(2X"M)個可能函數(shù)。因此,可能在單一指令中評估多個條5件,并且可以基于這些條件的結(jié)果選擇多個目標中的任意一個。因此,可以比現(xiàn)有處理環(huán)境中更有效地執(zhí)行傳統(tǒng)存儲的程序代碼和微碼。此外,在編譯時定義轉(zhuǎn)移表,為編程器提供了處理轉(zhuǎn)移指令中的增加的靈活性?,F(xiàn)在將詳細參照附圖中所示的與本發(fā)明一致的實現(xiàn)方式。處理器遇到從多個條件轉(zhuǎn)移指令中受益的情況的一個領(lǐng)域是網(wǎng)絡(luò)設(shè)備中的包處理。諸如路由器103的網(wǎng)絡(luò)設(shè)備典型地具有查找單元(LU)101,來處理包頭部并確定每個包的目的地或下一跳,如下所述。在一些實施例中,替代LU,一個或多個其它組件執(zhí)行這個功能。雖然下面根據(jù)路由器103描述了實施例,但是僅通過實例和說明給出路由器103,并且其他類型的處理裝置和系統(tǒng)也可以采用本文揭露的多條件轉(zhuǎn)移指令。圖1示出了根據(jù)一個實施例的示例性網(wǎng)絡(luò)。路由器103接收來自諸如路由器105的其他網(wǎng)絡(luò)裝置的數(shù)據(jù)包。LU101處理這些數(shù)據(jù)包并確定每個數(shù)據(jù)包的下一跳。一旦確定了下一跳,則每個數(shù)據(jù)包被轉(zhuǎn)發(fā)到那個裝置,例如,計算機107。在進行該確定的過程中,包處理引擎(PPE)或其他路由器組件(圖1中未示出)執(zhí)行可以受益于多條件轉(zhuǎn)移指令的程序。圖2是根據(jù)一個實施例的示例性數(shù)據(jù)處理裝置200的框圖。裝置200可以包括輸入塊210、輸出塊220、處理塊230、包存儲器240、和控制存儲器250。輸入塊210可包括可以在進入鏈接上接收包且對包執(zhí)行初始處理的一個或多個輸入單元(例如,輸入線卡)。在一個實施例中,初始處理可以包括分析包以識別其控制信息和其包數(shù)據(jù)(例如有效載荷)。控制信息可以包括來自包頭部的信息,并且包數(shù)據(jù)可以包括來自包的有效載荷的信息。在一個實施例中,控制信息可以包括來自包頭部的源地址和/或目的地址。在另一個實施例中,控制信息可以包括源地址、目的地址、優(yōu)先權(quán)信息、和/或來自包頭部的其他信息。輸出塊220可包括可以接收來自處理塊230和/或包存儲器240的包信息、根據(jù)包信息構(gòu)造包、并且在外出鏈接上輸出這些包的一個或多個輸出單元(例如輸出線卡)。處理塊230可包括可以執(zhí)行路由函數(shù)并處理在輸入塊210和輸出塊220之間傳遞的包的處理邏輯。處理塊230可以接收來自輸入塊210的控制信息并基于存儲在控制存儲器250中的數(shù)據(jù)結(jié)構(gòu)來處理該控制信息。當處理控制信息時,處理塊230可以向控制存儲器250進行某些請求以讀和/或?qū)憯?shù)據(jù)。包存儲器240可以包括存儲裝置,諸如動態(tài)隨機訪問存儲器(DRAM)。包存儲器240可以存儲與通過輸入塊210接收的包相關(guān)聯(lián)的包數(shù)據(jù)。在一個實現(xiàn)方式中,包存儲器240可以將包數(shù)據(jù)存儲為可變長度數(shù)據(jù)單元。在另一個實現(xiàn)方式中,包存儲器240可以將包數(shù)據(jù)存儲為固定長度數(shù)據(jù)單元。在這種情況中,包數(shù)據(jù)可以被分為一個或多個固定長度的數(shù)據(jù)單元并被存儲在包存儲器240中的相鄰或非相鄰位置。如果存儲在非連續(xù)位置,諸如鏈接的列表的數(shù)據(jù)結(jié)構(gòu)可以用來識別與特定包相關(guān)聯(lián)的數(shù)據(jù)單元??刂拼鎯ζ?50可以包括存儲器裝置,諸如DRAM或延遲縮減DRAM(RLDRAM)。控制存儲器250可以存儲數(shù)據(jù)結(jié)構(gòu)以幫助包處理。在一個實現(xiàn)方式中,數(shù)據(jù)結(jié)構(gòu)可以包括路由表、轉(zhuǎn)發(fā)表、統(tǒng)計數(shù)據(jù)、和/或管理數(shù)據(jù)(例如,服務(wù)質(zhì)量(QoS)參數(shù))。在一個實施例中,處理塊230包括查找單元(LU)260。在一個實施例中,LU260可以被實現(xiàn)為專用集成電路(ASIC)。LU260包含負責利用多條件轉(zhuǎn)移指令執(zhí)行指令的元件,如下所述。圖3是根據(jù)一個實施例的LU260的高水平簡化框圖。省略了與本發(fā)明無關(guān)的LU260的一些部件,并且LU260的元件的數(shù)量、結(jié)構(gòu)、和排列不旨在表示任意實施例的數(shù)量、結(jié)構(gòu)、或物理布局,只是為了附圖清楚而簡化。例如,在一個實施例中,LU260可以具有16個PPE和四個縱橫開關(guān),以及與存儲器單元和LU260外部的其他單元交互的元件。此外,雖然在圖3中示出為查找單元,本發(fā)明的技術(shù)可以以多種其他類型的單元實現(xiàn),并且查找單元僅是這種單元的示例和說明。LU260執(zhí)行與包頭部處理有關(guān)的函數(shù),包括輸入處理、路由查找、分類、過濾、修正、計數(shù)、封裝、和統(tǒng)計。輸入塊210向LU260發(fā)送包頭部并且LU向輸出塊220發(fā)送完全處理的新頭部。如下所述,通過相同的多線程包處理引擎(PPE)315的集合來完成頭部處理。利用PPE號識別每個PPE315。頭部經(jīng)由分派塊313進入LU260,并且通過縱橫塊317發(fā)送到PPE315。分派塊313為每個頭部挑選最輕加載的引擎。一旦分配了PPE315,頭部移動到該PPE并停留在該PPE中直到完成在頭部上的處理。每個PPE315具有其自身的本地存儲器(LMem)319來在處理期間維持包頭部和需要的其它狀態(tài)。如下所述每個PPE315支持多路轉(zhuǎn)移。圖3中的PPE的數(shù)量僅是示例性和說明性的,并且可以使用期望的其他數(shù)量的PPE來提供充足的處理能力以服務(wù)LU260要求處理的最高通信量。在一些實施例中,PPE315使用的數(shù)據(jù)結(jié)構(gòu)被保存在與PPE共享的稱為DMem(在LU260外部且未在圖3中示出)的單一大平滑地址空間中。(在不同的PPE315中執(zhí)行的,或者在相同PPE315中不同的上下文中執(zhí)行的)單獨線程之間的匿em訪問不是同步的;代替地,提供了單獨的鎖塊333用于同步線程的機制。多線程可以通過從鎖塊333獲取鎖、在數(shù)據(jù)結(jié)構(gòu)上工作、并且釋放鎖來共享公共數(shù)據(jù)結(jié)構(gòu)。PPE315還可以與實現(xiàn)特定功能的多個其他塊交互,諸如用于更新包和字節(jié)計數(shù)器的計數(shù)器塊337、以及用于獲取哈希值的哈希塊335。當PPE315完成處理頭部時,其通知記錄器塊321。記錄器塊321負責維持屬于同一流的頭部的次序,并且在一個頭部關(guān)于其記錄器流處于隊列的最前面時從PPE315推出該頭部。圖4示出了根據(jù)一個實施例的示例性PPE315的簡化構(gòu)架。為了圖清楚省略或重新排列了PPE315的某些元件。PPE315使用具有四個32位算數(shù)邏輯單元(ALU)(CALU401a-d)(總地,CALU401)的超長指令字(VLIW)構(gòu)架用于條件轉(zhuǎn)移和操作數(shù)調(diào)節(jié)。與本申請無關(guān)的其他ALU可以出現(xiàn)并且為了圖的清楚被省略。PPE315中的每個線程均訪問32個64位通用寄存器(GPR)405,和8KB的本地存儲器LMem407(每線程1KB私有)。典型的微指令允許4GPR讀、2GPR寫、2LMem訪問(讀或?qū)?和兩個64位常數(shù)??梢蕴崛?個任意位字段的總和并將其反饋至每個CALU401。在一個實施例中開關(guān)盒412被用來連接PPE315的多個元件。其他實施例可以使用其他互連接技術(shù),諸如一個或多個總線。用于PPE315的上述內(nèi)部構(gòu)架僅是示例性和說明性的,并且可以如所期望的使用包括其他數(shù)量、結(jié)構(gòu)、和排列的元件的其他內(nèi)部構(gòu)架。轉(zhuǎn)向圖5,根據(jù)本發(fā)明的一個實施例描述了示出地址計算技術(shù)的視圖。在該實施例中,圖4中的PPE315執(zhí)行的下一個指令的地址不依賴于當前指令的地址,但是依賴于當前指令的CC572和NEXTPC570字段指出的計算。用于6位CC字段572的大部分編碼指出7了PPE315應(yīng)該根據(jù)PPE315條件轉(zhuǎn)移輸出(CB0)表510中的特定轉(zhuǎn)移函數(shù)來執(zhí)行轉(zhuǎn)移。CC字段572的特定值用作索引來指出CB0表510中的特定入口。用于CC字段572的小數(shù)量編碼指出用于計算下一個指令地址的特定硬線方法。然而,這些硬線方法不涉及CBO表510。CB0表510中的每個入口的大小是,2M位。PPE315截取每個入口的值作為2M個元件的向量,其中每個元件具有N位大小。當PPE315執(zhí)行其CC字段指出CB0表入口的指令時,PPE315使用由MCALU計算的條件代碼位來從由CBO表入口表示的向量選擇一個元件。之后PPE315將選擇的元件的N位值添加到當前指令的NEXTPC570值來確定取出并執(zhí)行的下一個指令的地址。在圖5所示的實例中,M值是4并且N值是3。因此,該實例中CBO表中的每個入口的大小是3*24,其等于3*16或48位。在操作中,從微碼存儲器(UMem)590獲取的微指令595包含6位CC字段572,其在6位組合器代碼(CC)信號線500上發(fā)送,以對CB0轉(zhuǎn)移表存儲器單元510尋址,索引并選擇相對于6位CC值的56個48位CB0510表入口中的一個。之后在48位信號線520上向多路復(fù)用器530輸出該48位CBO表510入口,在16個3位元件線u0到u15上分割該48位表入口。每個CALU401生成由在微指令595中編碼的CALU401操作確定的1位條件代碼值和輸入到CALU401中的數(shù)據(jù)操作數(shù)。將這四個條件代碼位表示為CO、Cl、C2、和C3。4位信號550組合條件代碼C3、C2、Cl、和CO的值,并且在信號線540上被發(fā)送,以通過多路復(fù)用器530將所選的48位表入口的十六個3位元件中的一個選擇到3位輸出線555上。之后,由加法器560將3位元件值加到微指令595的NEXTPC字段570的15位值上,得出15位地址值,之后該15位地址值被傳送到程序計數(shù)器580上作為UMem590中下一個指令或微指令的位置用于PPE315執(zhí)行。圖5中位寬和元件、存儲器單元、表入口、信號線、字段等的排列,以及條件代碼的數(shù)量僅是示例性和說明性的,并且可以如所期望的使用任意大小的元件、存儲器單元、表入口、信號線、和寄存器。圖6示處了用于評估轉(zhuǎn)移函數(shù)的示例性轉(zhuǎn)移表510。在稱為組合器代碼(CC)601的6位微指令字段中編碼轉(zhuǎn)移指令。這提供了64種可能的順序動作。大多數(shù)CC用作轉(zhuǎn)移表510中入口的索引,定義用于具有8個或更少輸出的條件轉(zhuǎn)移的順序動作。轉(zhuǎn)移表510不必需具有用于每個可能CC的入口。在一個實施例中,使用56個元件轉(zhuǎn)移表。被稱為條件轉(zhuǎn)移輸出(CBO)入口605的每個轉(zhuǎn)移入口包括CC601和將4個條件代碼位CO到C3映射到一個3位輸出代碼或元件的對應(yīng)的轉(zhuǎn)移函數(shù)。因此,轉(zhuǎn)移表510中CBO入口605中的每個轉(zhuǎn)移函數(shù)描述為被分為16個3位元件的48位入口。該4個條件代碼位CO到C3用來形成一個4位索引(C3、C2、Cl、C0h該4位索引被映射到CB0表入口605中以選擇3位元件。由PPE采取的順序動作是將元件值加到NEXTPC。例如,讓我們假設(shè)我們希望分配CC001001來表示條件轉(zhuǎn)移if(cO&cl)〈A0〉elseif(c2)〈Al〉elseif(c3)〈A2〉else〈A3〉其中,A0、A1、A2、A3表示四個可能條件輸出的偏移。偏移A0、A1、A2、和A3必須是以0開始的順序次序并且還以連續(xù)次序來生成下一個指令的地址。將條件代碼位映射到期望偏移的CBO表入口在下面的表1中示出表1:索引001001(二進制)處的實例CBO表入口<table>tableseeoriginaldocumentpage9</column></row><table>之后對應(yīng)的48位CB0入將為:(3,3,3,0,1,1,1,0,2,2,2,0,1,1,1,0)作為二進制中的16個3位元件值(Oil.Oil.Oil.000.001.001.001.000.010.010.010.000.001.001.001.000)(分離該3位元件的點僅用于易讀目的并且不在CBO入口中出現(xiàn))。因此,例如,如果轉(zhuǎn)移指令具有CC=001001和NEXTPC=100,以及條件代碼位向量是{C3,C2,Cl,CO}=U),0,l,0h該條件代碼位向量將從左邊映射第三個CB0元件,其為011。因此,轉(zhuǎn)移輸出將是NEXTPC+3,或103,并PPE將跳到UMem地址103處的指令。存在少于4個可能的轉(zhuǎn)移目標。例如轉(zhuǎn)移函數(shù)if(cO&cl)〈AO〉elseif(c2|c3)〈Al〉else〈A2〉僅具有三個可能轉(zhuǎn)移目標A0、A1、和A2。下面示出了將條件代碼位映射到期望偏移的表表2:用于三路轉(zhuǎn)移的實例CBO表入口<table>tableseeoriginaldocumentpage9</column></row><table>對應(yīng)的48位CB0入口將為:{2,2,2,0,1,1,1,0,1,1,1,0,1,1,1,0}作為二進制中的16個3位元件值(010.010.010.000.001.001.001.000.001.001.001.000.001.001.001.000)(分離該3位元件的點僅用于易讀目的并且不在CBO入口中出現(xiàn))。CBO表允許本領(lǐng)域技術(shù)人員定義56個不同轉(zhuǎn)移函數(shù)的任意集合。將4位條件代碼值映射到3位UMem地址偏移的任意轉(zhuǎn)移函數(shù)可以在CBO表入口中編碼,導(dǎo)致多至八種(8)可能目標指令。在該實例中,轉(zhuǎn)移表510使用16元件入口。轉(zhuǎn)移表510的內(nèi)容由編譯器定義用于給定微碼加載并且在路由器被初始化時和在任意PPE開始之前被加載??蛇x地,轉(zhuǎn)移表510可以在運行時被動態(tài)地定義。在該情況中,路由器可以快速地修改給定微碼和CBO表。路由器可以將微碼加載到UMem未使用的位置并且將對應(yīng)的轉(zhuǎn)移函數(shù)加載到CBO表未使用的位置。之后路由器可以重寫冊陷阱向量表中的包裹(parcel)陷阱向量,使得PPE可以在新進入的包裹被服務(wù)時執(zhí)行新的微碼和轉(zhuǎn)移函數(shù)。本領(lǐng)域技術(shù)人員將認識到,轉(zhuǎn)移表510可以是任意大小的表,并且可以基于計算和存儲資源使用的可接受水平而相應(yīng)地調(diào)整上面描述的多個入口和元件大小。圖7是示出了用于反復(fù)取出并執(zhí)行PPE315中任意數(shù)量的微指令的技術(shù)的流程圖。在框700中,從包含在程序計數(shù)器PC中的地址取出并執(zhí)行第一條指令。在框710中,檢查該指令以看其是否為最后的指令。如果是,則PPE315在框770中停止執(zhí)行。如果不是,則在框720中檢查微指令的CC字段以確定是否使用CBO表。如果否,則在框760中,程序計數(shù)器PC通過一些非-CBO技術(shù)更新,諸如硬線轉(zhuǎn)移函數(shù)。如果框720確定使用CBO表,則在框730中,CC字段用作索引來從CBO表選擇入口。之后在框740中,條件代碼向量{c3、c2、cl、cO}用來從CBO表入口選擇元件,如上面所描述的。之后,在框750中選擇的元件用作一個偏移來通過將當前微指令的NEXTPC字段的值加到包含在由條件代碼向量選擇的元件中的偏移值來更新程序計數(shù)器PC。通過框760或框750來更新程序計數(shù)器PC時,PPE315返回到框700以反復(fù)取出并執(zhí)行程序計數(shù)器PC指向的指令。圖7示出的操作和操作次序僅是示例性和說明性的并且可以使用其它操作或操作次序來根據(jù)期望的其他實施例計算下一個指令的地址。雖然已經(jīng)在附圖中示出并詳細描述了一些示例性實施例,但是可以理解,這些實施例僅是示例性的并且是在不背離權(quán)利要求限定的本發(fā)明基本范圍的情況下設(shè)計的。通過實例而不是限制的方式,利用的特定邏輯組件可以由功能相似且提供本質(zhì)上相同結(jié)果的已知的等價物或其他組件的排列來替換。權(quán)利要求一種數(shù)據(jù)處理系統(tǒng)中的方法,所述數(shù)據(jù)處理系統(tǒng)包括執(zhí)行所述方法的處理器和程序計數(shù)器,所述方法包括以下步驟執(zhí)行包括多條微碼指令的計算機程序,其中所述多條微碼指令之一是具有多個條件的轉(zhuǎn)移指令;評估所述轉(zhuǎn)移指令;基于所述轉(zhuǎn)移指令的多個被評估條件的結(jié)果跳到下一條指令;以及執(zhí)行所述下一條指令。2.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟定義將轉(zhuǎn)移代碼映射到轉(zhuǎn)移函數(shù)入口的轉(zhuǎn)移表。3.根據(jù)權(quán)利要求2所述的方法,其中,評估轉(zhuǎn)移指令包括以下步驟基于所述轉(zhuǎn)移指令中的所述轉(zhuǎn)移代碼選擇轉(zhuǎn)移函數(shù)入口。4.根據(jù)權(quán)利要求3所述的方法,其中,評估轉(zhuǎn)移指令還包括以下步驟在所述轉(zhuǎn)移函數(shù)入口中定位與所述被評估條件的結(jié)果對應(yīng)的輸出元件。5.根據(jù)權(quán)利要求4所述的方法,其中,跳到下一條指令包括以下步驟從所述輸出元件讀取偏移;以及將所述偏移加到基地址以確定所述下一條指令的地址。6.根據(jù)權(quán)利要求5所述的方法,其中,執(zhí)行所述下一條指令包括以下步驟執(zhí)行所述程序計數(shù)器指向的指令。7.根據(jù)權(quán)利要求2所述的方法,其中,定義轉(zhuǎn)移表包括以下步驟在編譯時定義所述轉(zhuǎn)移表。8.根據(jù)權(quán)利要求2所述的方法,其中,定義轉(zhuǎn)移表包括以下步驟在運行時定義所述轉(zhuǎn)移表。9.根據(jù)權(quán)利要求1所述的方法,其中,評估轉(zhuǎn)移指令包括以下步驟評估至少四個條件。10.根據(jù)權(quán)利要求1所述的方法,其中,所述方法在路由器中執(zhí)行。11.一種存儲計算機可執(zhí)行指令的計算機可讀介質(zhì),所述計算機可執(zhí)行指令用于執(zhí)行評估多條件轉(zhuǎn)移指令的方法,所述方法包括以下步驟執(zhí)行包括多條微碼指令的計算機程序;評估包括多個條件的轉(zhuǎn)移指令;基于多個被評估條件的結(jié)果跳到下一條指令;以及執(zhí)行所述下一條指令。12.根據(jù)權(quán)利要求11所述的計算機可讀介質(zhì),還包括以下步驟定義將轉(zhuǎn)移代碼映射到轉(zhuǎn)移函數(shù)入口的轉(zhuǎn)移表。13.根據(jù)權(quán)利要求12所述的計算機可讀介質(zhì),其中,評估轉(zhuǎn)移指令包括以下步驟基于所述轉(zhuǎn)移指令中的所述轉(zhuǎn)移代碼選擇轉(zhuǎn)移函數(shù)入口。14.根據(jù)權(quán)利要求13所述的計算機可讀介質(zhì),其中,評估轉(zhuǎn)移指令還包括以下步驟在所述轉(zhuǎn)移函數(shù)入口中定位與所述被評估條件的結(jié)果對應(yīng)的輸出元件。15.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),其中,跳到下一條指令包括以下步驟從所述輸出元件讀取偏移并將所述偏移加到基地址以確定所述下一條指令的地址。16.根據(jù)權(quán)利要求15所述的計算機可讀介質(zhì),其中,執(zhí)行所述下一條指令包括以下步驟執(zhí)行所述程序計數(shù)器指向的指令。17.根據(jù)權(quán)利要求12所述的計算機可讀介質(zhì),其中定義轉(zhuǎn)移表包括以下步驟在編譯時定義所述轉(zhuǎn)移表。18.根據(jù)權(quán)利要求12所述的計算機可讀介質(zhì),其中定義轉(zhuǎn)移表包括以下步驟在運行時定義所述轉(zhuǎn)移表。19.根據(jù)權(quán)利要求11所述的計算機可讀介質(zhì),其中評估轉(zhuǎn)移指令包括以下步驟評估至少四個條件。20.—種用于執(zhí)行包括至少一條轉(zhuǎn)移指令的程序的數(shù)據(jù)處理裝置,包括存儲器,存儲所述程序,其中,所述至少一條轉(zhuǎn)移指令包括包含轉(zhuǎn)移代碼的字段;以及轉(zhuǎn)移表數(shù)據(jù)結(jié)構(gòu),將至少一個轉(zhuǎn)移代碼映射到至少一個具有至少兩個條件表達式的轉(zhuǎn)移函數(shù),其中基于所述兩個或更多個條件表達式的所述轉(zhuǎn)移函數(shù)的可能輸出存儲在所述轉(zhuǎn)移表數(shù)據(jù)結(jié)構(gòu)中;以及處理器,執(zhí)行所述程序并使用所述轉(zhuǎn)移表數(shù)據(jù)結(jié)構(gòu)來執(zhí)行所述至少一條轉(zhuǎn)移指令。全文摘要與本發(fā)明一致的方法和系統(tǒng)提供了允許軟件定義多個轉(zhuǎn)移函數(shù)的可編程表,每一個均將條件代碼向量映射到轉(zhuǎn)移偏移。使用可以由編程員指定的條件轉(zhuǎn)移輸出表,該技術(shù)允許靈活的多路轉(zhuǎn)移功能。任何指令可以指定任意條件表達的評估來計算用于條件代碼的值,并且可以選擇特定的轉(zhuǎn)移函數(shù)。當處理器執(zhí)行指令時,處理器的算術(shù)/邏輯功能單元評估條件表達并且之后處理器根據(jù)特定的轉(zhuǎn)移函數(shù)執(zhí)行轉(zhuǎn)移操作。文檔編號G06F9/32GK101763247SQ20091017980公開日2010年6月30日申請日期2009年9月30日優(yōu)先權(quán)日2008年12月23日發(fā)明者杰弗里·G·利比,約翰·基恩,莎拉達·葉盧瑞,讓-馬克·弗拉伊朗,阿努拉·P·古普塔,阿瓦尼德拉·戈德博爾申請人:叢林網(wǎng)絡(luò)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
蓝田县| 孙吴县| 梁平县| 禹州市| 贵南县| 漳平市| 铜川市| 忻城县| 株洲市| 商洛市| 澳门| 玉环县| 梅河口市| 湖南省| 忻州市| 枣强县| 内黄县| 吕梁市| 信阳市| 泰兴市| 武陟县| 孟州市| 确山县| 周至县| 涞源县| 随州市| 瓦房店市| 康保县| 米脂县| 贵阳市| 大庆市| 禄丰县| 华坪县| 孟州市| 共和县| 沈丘县| 靖江市| 宁国市| 保定市| 石嘴山市| 武城县|