專(zhuān)利名稱(chēng)::到一個(gè)共享的協(xié)處理器資源的多個(gè)邏輯接口的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及網(wǎng)絡(luò)處理器系統(tǒng)領(lǐng)域,更詳細(xì)講,涉及含有一個(gè)或多個(gè)協(xié)議處理器單元(PPU)的一個(gè)嵌入式處理器組合(complex)。在該處理器系統(tǒng)中通過(guò)把PPU與協(xié)處理器(coprocessor)連接起來(lái)以便在它們中傳輸數(shù)據(jù)與指令的接口使用多個(gè)與PPU相關(guān)的協(xié)處理器。另一個(gè)目的是使用多邏輯協(xié)處理器接口(從一個(gè)程序設(shè)計(jì)員的角度來(lái)看)來(lái)訪(fǎng)問(wèn)一個(gè)共享的協(xié)處理器資源。在某些情況下該協(xié)處理器資源由一個(gè)PPU內(nèi)的多個(gè)處理線(xiàn)索共享,而在其它情況下一個(gè)單個(gè)的協(xié)處理器資源由多個(gè)PPU共享。本發(fā)明的又一個(gè)目的涉及在一個(gè)PPU和它的協(xié)處理器之間的接口處啟動(dòng)的特定操作。這一操作是有條件地執(zhí)行協(xié)處理器指令的能力。這對(duì)計(jì)數(shù)器協(xié)處理器尤其有用,但是通常也可用于其它的協(xié)處理器。該協(xié)處理器接口有能力根據(jù)對(duì)一條特定的協(xié)處理器命令的預(yù)期的響應(yīng)時(shí)間來(lái)鑒別長(zhǎng)等待時(shí)間事件與短等待時(shí)間事件。因此這種識(shí)別被用于對(duì)線(xiàn)索執(zhí)行的優(yōu)先權(quán)進(jìn)行控制。本發(fā)明還有一個(gè)目的是能比其它已知的協(xié)處理器接口提供更大的靈活性與效率的一個(gè)協(xié)處理器接口。通過(guò)下面更詳細(xì)描述的方式這些和其它的目的均可實(shí)現(xiàn)。描述對(duì)一個(gè)網(wǎng)絡(luò)處理器的程序設(shè)計(jì)能力進(jìn)行控制的一個(gè)嵌入式處理器組合(processorcomplex)的操作。該處理器組合包括多個(gè)協(xié)議處理器單元(PPU),每個(gè)協(xié)議處理器單元包括一個(gè)或多個(gè)核心語(yǔ)言處理器(CLP)。每個(gè)CLP有多條代碼線(xiàn)索。每個(gè)PPU使用多個(gè)協(xié)處理器為PPU執(zhí)行特定任務(wù)。該組合使用多個(gè)邏輯協(xié)處理器接口訪(fǎng)問(wèn)一個(gè)與CLP共享的協(xié)處理器資源。特定的操作指令由CLP執(zhí)行導(dǎo)致命令被送往協(xié)處理器。這些指令一方面用于啟動(dòng)特定協(xié)處理器指令的有條件的執(zhí)行。該指令能夠根據(jù)對(duì)一個(gè)具體的協(xié)處理器命令的預(yù)期的響應(yīng)時(shí)間來(lái)識(shí)別長(zhǎng)等待時(shí)間事件(longlatencyevents)與短等待時(shí)間事件(shortlatencyevents)。這就允許該組合根據(jù)所處理的等待時(shí)間事件的時(shí)間長(zhǎng)度與類(lèi)型把控制從一條線(xiàn)索轉(zhuǎn)移到另一條線(xiàn)索。具體實(shí)施例方式本發(fā)明將用提供并控制一個(gè)網(wǎng)絡(luò)處理器的程序設(shè)計(jì)能力的一個(gè)嵌入式處理器組合這一術(shù)語(yǔ)來(lái)描述。一個(gè)該組合的實(shí)現(xiàn)典型地包括與硬件加速器一起工作的八個(gè)主處理單元或協(xié)議處理器單元(PPU),來(lái)支持高速模式查詢(xún)、數(shù)據(jù)操縱(manipulation)、內(nèi)部芯片管理功能、幀解析、和數(shù)據(jù)預(yù)取(prefetching)。每個(gè)PPU包括以下結(jié)構(gòu)部件兩個(gè)CLP;至少一個(gè),而最好是幾個(gè)專(zhuān)用的和/或共享的協(xié)處理器單元和該主處理單元與每個(gè)協(xié)處理器單元之間的一個(gè)接口。每個(gè)協(xié)處理器單元能執(zhí)行特定的網(wǎng)絡(luò)任務(wù)。主處理單元執(zhí)行在一個(gè)儲(chǔ)存的程序中的一系列的指令。每個(gè)協(xié)處理器單元能對(duì)所述主處理單元作出響應(yīng)并適于在該主處理單元的控制下有效地執(zhí)行特定任務(wù)。主處理單元與每個(gè)協(xié)處理器單元之間的接口實(shí)現(xiàn)一個(gè)或多個(gè)下述功能每個(gè)協(xié)處理器單元的配置;由每個(gè)共用處理單元完成的特定任務(wù)的初始化;訪(fǎng)問(wèn)與每個(gè)協(xié)處理器單元相關(guān)的狀態(tài)信息;以及提供用于返回與由每個(gè)協(xié)處理器單元完成的特定任務(wù)相關(guān)的結(jié)果的方法。主處理單元和協(xié)處理器單元各包括一個(gè)或多個(gè)特殊用途寄存器。該接口能夠從所述主處理單元及協(xié)處理器單元把專(zhuān)用寄存器映射到一個(gè)公用地址映射。每個(gè)PPU包括一個(gè)或多個(gè)核心語(yǔ)言處理器(CLP)和幾個(gè)專(zhuān)用的協(xié)處理器。當(dāng)PPU包括多個(gè)CLP時(shí),協(xié)處理器在CLP中共享。每個(gè)CLP包括一個(gè)算法邏輯單元(ALU)并支持對(duì)于每個(gè)PPU總共有四條線(xiàn)索的兩條代碼線(xiàn)索。CLP和協(xié)處理器含有包括標(biāo)量寄存器和陣列寄存器在內(nèi)的特殊用途寄存器的獨(dú)立的拷貝。某些協(xié)處理器包括對(duì)協(xié)處理器命令從CLP向該協(xié)處理器的陣列或標(biāo)量寄存器的轉(zhuǎn)移進(jìn)行調(diào)節(jié)的FIFO緩沖器。一個(gè)CLP一次只執(zhí)行一條線(xiàn)索命令。對(duì)于一個(gè)程序員而言,每條線(xiàn)索均有其自己的協(xié)處理器或協(xié)處理器組的外部特征。大部分協(xié)處理器都執(zhí)行專(zhuān)門(mén)的功能并且相互之間能夠同時(shí)操作而且也能與CLP同時(shí)操作。對(duì)PPU的控制存儲(chǔ)典型地由內(nèi)部及外部存儲(chǔ)器兩者提供。例如,內(nèi)部SRAM可用于即時(shí)訪(fǎng)問(wèn);外部ZBTSRAM用于快速訪(fǎng)問(wèn);而外部DDRSDRAM則用于大存儲(chǔ)容量的要求。圖1示出了維護(hù)一個(gè)數(shù)據(jù)接口(14)和一個(gè)執(zhí)行接口(16)和幾個(gè)協(xié)處理器的一個(gè)協(xié)議處理器單元(PPU)(10),這幾個(gè)協(xié)處理器包括一個(gè)樹(shù)檢索引擎(12),一個(gè)校驗(yàn)和協(xié)處理器(20),一個(gè)串拷貝協(xié)處理器(22),一個(gè)排隊(duì)(enqueue)協(xié)處理器(24),一個(gè)數(shù)據(jù)存儲(chǔ)(datastore)協(xié)處理器(26),一個(gè)控制訪(fǎng)問(wèn)總線(xiàn)協(xié)處理器(28),一個(gè)計(jì)數(shù)器協(xié)處理器(30)和一個(gè)規(guī)則協(xié)處理器(32)。PPU包括一對(duì)核心語(yǔ)言處理器(CLP)(34)和(36)。每個(gè)CLP包括一個(gè)指令取出解碼與執(zhí)行(InstructionFetchDecodeandExecute)裝置,多個(gè)特殊與一般用途的寄存器和兩條線(xiàn)索。一個(gè)協(xié)處理器執(zhí)行接口(CPEI)判優(yōu)器(arbiter)(40)對(duì)兩個(gè)CLP與協(xié)處理器之間的指令進(jìn)行判優(yōu)。一個(gè)協(xié)處理器數(shù)據(jù)接口(CPDI)判優(yōu)器(42)確定協(xié)處理器與CLP(34)和(36)之間的通信的優(yōu)先權(quán)。用于CLP的全部指令均存儲(chǔ)在一個(gè)指令存儲(chǔ)器(圖1中未示出)中。CLP#1(34)從一個(gè)硬件分類(lèi)器沿總線(xiàn)(46)接收通信,該硬件分類(lèi)器提供來(lái)自一個(gè)配送器(dispatcher)的激勵(lì),從而開(kāi)始處理一個(gè)新數(shù)據(jù)包。該CLP沿著來(lái)自指令存儲(chǔ)器的總線(xiàn)(48)發(fā)送取出指令以處理該新的數(shù)據(jù)包。同樣,CLP(36)沿著來(lái)自一個(gè)硬件分類(lèi)器的總線(xiàn)(50)接收分類(lèi)結(jié)果并沿著總線(xiàn)(52)向一個(gè)指令存儲(chǔ)器接口發(fā)送請(qǐng)求。該指令存儲(chǔ)器接口及硬件分類(lèi)器均設(shè)置在PPU的外面,圖1中未予示出。排隊(duì)協(xié)處理器(24)沿總線(xiàn)(60)向一個(gè)外部結(jié)束單元(未示出)發(fā)送指令。數(shù)據(jù)存儲(chǔ)協(xié)處理器(26)沿著總線(xiàn)(62)向一個(gè)入數(shù)據(jù)存儲(chǔ)接口(ingressdatastoreinterface)或者沿著總線(xiàn)(64)向一個(gè)出數(shù)據(jù)存儲(chǔ)接口(egressdatastoreinterface)傳送數(shù)據(jù)。控制數(shù)據(jù)流由一個(gè)外部控制訪(fǎng)問(wèn)總線(xiàn)判優(yōu)器(未顯示)沿著總線(xiàn)(68)進(jìn)行判優(yōu)。訪(fǎng)問(wèn)規(guī)則在CAB判優(yōu)器(68)中當(dāng)被寫(xiě)或讀的數(shù)據(jù)流經(jīng)總線(xiàn)(70)。數(shù)據(jù)訪(fǎng)問(wèn)沿著總線(xiàn)(70)輸入或輸出。計(jì)數(shù)器協(xié)處理器(30)和規(guī)則協(xié)處理器32各沿著總線(xiàn)(72)和(74)分別向計(jì)數(shù)器管理器和規(guī)則管理器提供訪(fǎng)問(wèn)。圖2示出了根據(jù)本發(fā)明的兩個(gè)CLP的附加的細(xì)節(jié)。每個(gè)CLP包括一般用途寄存器(generalpurposeregister)(80)和專(zhuān)用寄存器(specialpurposeregister)(82)。這些專(zhuān)用寄存器包括多個(gè)標(biāo)量寄存器(84)與陣列寄存器(86)。它還具有一個(gè)指令取出、解碼與執(zhí)行功能(88)。處理組合包括以下組成部分多個(gè)協(xié)議處理器單元。在一個(gè)優(yōu)選的實(shí)施例中,服務(wù)器使用八個(gè)協(xié)議處理器單元(PPU)。每個(gè)PPU包括共享多個(gè)協(xié)處理器(示出七個(gè))的一個(gè)或多個(gè)CLP。PPU執(zhí)行用于轉(zhuǎn)發(fā)幀,更新表格以及維護(hù)網(wǎng)絡(luò)處理單元的代碼。這些CLP同時(shí)執(zhí)行存儲(chǔ)在一個(gè)公用指令存儲(chǔ)器中的代碼。每個(gè)CLP包括一個(gè)核心和一個(gè)三級(jí)傳輸線(xiàn)(3-stagepipeline),16個(gè)GPR(一般用途寄存器)和一個(gè)ALU(算法邏輯單元)。協(xié)處理器相互之間能夠同時(shí)執(zhí)行操作而且能與CLP同時(shí)執(zhí)行操作。當(dāng)該協(xié)處理器通過(guò)接口與CLP連接時(shí),它將擴(kuò)展基本的CLP指令及寄存器模型。每個(gè)協(xié)處理器的命令是作為新的匯編助記符號(hào)(assemblermnernonics)出現(xiàn)的,而該協(xié)處理器的寄存器對(duì)于CLP程序員而言是作為新的標(biāo)量與陣列寄存器(arrayregister)而出現(xiàn)的。一些陣列寄存器設(shè)置于共享的存儲(chǔ)器池(44)中。該協(xié)處理器能夠與CLP異步運(yùn)行。這就允許CLP在一個(gè)協(xié)處理器執(zhí)行一個(gè)命令的同時(shí)繼續(xù)處理指令。一條等待指令導(dǎo)致該CLP等待直至一條協(xié)處理器執(zhí)行命令被完成為止。指令存儲(chǔ)器(56)典型地向8個(gè)嵌入式RAM組成。它們?cè)诔跏蓟陂g加載并含有用于發(fā)送幀及管理該系統(tǒng)的程序指令。該指令存儲(chǔ)器有用于數(shù)據(jù)傳送任務(wù),用于引導(dǎo)通信,以及控制任務(wù)的16K指令。一個(gè)調(diào)度程序單元。該單元跟蹤線(xiàn)索的使用情況,取出并向空閑線(xiàn)分配新的幀。數(shù)據(jù)幀被分配給下一個(gè)可用的PPU。這將幀地址從上與下的配送器隊(duì)列up-GDQ,up-GCQ,dn-GRO/1,dn-GBO/1和dn-GCQ)中出隊(duì)列。出隊(duì)列后,配送器(dispatcher)單元從上或下的數(shù)據(jù)存儲(chǔ)器(DS)中讀出幀頭部分并將其存儲(chǔ)于共享存儲(chǔ)池(44)中。只要CLP一空閑,配送器單元就通過(guò)總線(xiàn)(46)或(50)把適當(dāng)?shù)目刂菩畔⑷绱a指令地址(CID)傳給CLP。配送器利用一個(gè)獨(dú)立的總線(xiàn)(58)把幀頭信息傳遞至共享存儲(chǔ)池(44)。配送器還通過(guò)把實(shí)現(xiàn)這些功能的工作分配給一條可用的線(xiàn)索來(lái)控制定時(shí)器與中斷。一個(gè)樹(shù)檢索存儲(chǔ)器(TreeSearchMemory,TSM)判優(yōu)器(110)。有幾個(gè)共享的內(nèi)部及外部存儲(chǔ)器單元可供每個(gè)CLP使用。由于該存儲(chǔ)器是共享的,用一個(gè)判優(yōu)器來(lái)控制對(duì)該存儲(chǔ)器的訪(fǎng)問(wèn)。該TSM能被代碼直接訪(fǎng)問(wèn),而且比如說(shuō)能被用于在該TSM中儲(chǔ)存路由表(routingtables)。而且,在樹(shù)檢索期間,該TSM將被TSE(12)訪(fǎng)問(wèn)。一個(gè)結(jié)束單元(CompletionUnit,CU)。該結(jié)束單元執(zhí)行兩個(gè)功能。第一個(gè),它通過(guò)接口把CLP與上和下的EDS(排隊(duì),離隊(duì)與程序島(ScheduleIsland)連起來(lái)。EDS執(zhí)行排隊(duì)操作,從而一個(gè)幀地址與稱(chēng)為FCB頁(yè)的相應(yīng)參數(shù)一起被列入或者是一個(gè)傳輸隊(duì)列,一個(gè)放棄隊(duì)列,或者是一個(gè)調(diào)度隊(duì)列。當(dāng)該目標(biāo)是一個(gè)傳輸隊(duì)列時(shí),硬件設(shè)置的信息流控制機(jī)制確定該幀是放入該傳輸隊(duì)列,還是放入一個(gè)放棄隊(duì)列。第二,該結(jié)束單元保障幀的序列。由于可能發(fā)生多條線(xiàn)索碰巧對(duì)屬于同一信息流的幀進(jìn)行處理的情況,必須采取預(yù)防措施按照正確的順序把這些幀列入上或下的傳輸隊(duì)列。該結(jié)束單元使用一個(gè)由硬件分類(lèi)器(54)根據(jù)幀調(diào)度生成的標(biāo)簽。硬件分類(lèi)器。該硬件分類(lèi)器位于調(diào)度單元與PPU之間的數(shù)據(jù)路徑上。它執(zhí)行分類(lèi)并向目的線(xiàn)索提供信息。對(duì)于上行幀(up-frames)而言,硬件分類(lèi)器加速器(HardwareClassifierAssist)對(duì)幀格式的眾所周知的情況進(jìn)行分類(lèi)。分類(lèi)結(jié)果在幀調(diào)度期間,按照CIA(代碼指令地址)以及四個(gè)GPR(一般用途寄存器)的內(nèi)容的方式,被送至CLP。對(duì)于下行幀(dn-frames)而言,硬件分類(lèi)器加速器根據(jù)幀頭確定CIA。對(duì)于上行與下行幀的調(diào)度,硬件分類(lèi)器加速器均生成一個(gè)標(biāo)簽,被結(jié)束單元用于維護(hù)幀序列。上行與下行數(shù)據(jù)存儲(chǔ)接口及判優(yōu)器。每條線(xiàn)索均通過(guò)數(shù)據(jù)存儲(chǔ)協(xié)處理器(26)對(duì)上行與下行的數(shù)據(jù)存儲(chǔ)器進(jìn)行訪(fǎng)問(wèn)讀“更多數(shù)據(jù)”時(shí)提供讀訪(fǎng)問(wèn),而把數(shù)據(jù)池的內(nèi)容寫(xiě)回?cái)?shù)據(jù)存儲(chǔ)器時(shí)提供寫(xiě)訪(fǎng)問(wèn)。由于有多條線(xiàn)索并且一次只有其中的一條線(xiàn)索能夠訪(fǎng)問(wèn)上行數(shù)據(jù)存儲(chǔ)器以及一次只有一條線(xiàn)索能夠訪(fǎng)問(wèn)下行數(shù)據(jù)存儲(chǔ)器,因此每個(gè)數(shù)據(jù)存儲(chǔ)器需要一個(gè)判優(yōu)器??刂圃L(fǎng)問(wèn)總線(xiàn)(CAB)判優(yōu)器與WEB監(jiān)視接口(WEBWatchinterface)。CAB判優(yōu)器在對(duì)CAB進(jìn)行訪(fǎng)問(wèn)的線(xiàn)索中進(jìn)行判優(yōu)。所有的線(xiàn)索均通過(guò)CAB協(xié)處理器(28)對(duì)CAB進(jìn)行訪(fǎng)問(wèn)。這就允許對(duì)處理器單元中的所有的存儲(chǔ)器及寄存器功能進(jìn)行訪(fǎng)問(wèn)。這就允許任一條線(xiàn)索對(duì)所有的配置區(qū)進(jìn)行修改或讀操作。該CAB可被看做是處理器單元的存儲(chǔ)器映射。CAB監(jiān)視接口提供從使用三個(gè)芯片I/O端口的芯片的外部對(duì)整個(gè)CAB的訪(fǎng)問(wèn)。調(diào)試,中斷及單步控制。CAB允許GCH線(xiàn)索或CAB監(jiān)視來(lái)控制每條線(xiàn)索。例如,CAB可以被GFH線(xiàn)索或CAB監(jiān)視使用,來(lái)在單步執(zhí)行模式中運(yùn)行一個(gè)選擇的線(xiàn)索。核心語(yǔ)言處理器(CLP)網(wǎng)絡(luò)服務(wù)器在其體系中使用了幾種類(lèi)型的CLP。每一類(lèi)型均被編程以執(zhí)行一個(gè)具體功能。GDH是一種通用數(shù)據(jù)處理機(jī)(GeneralDataHandler),主要用于幀的傳送。每個(gè)GDH通常有一個(gè)專(zhuān)用的控制處理器。每個(gè)控制處理器采用多個(gè)根據(jù)本發(fā)明的協(xié)處理器。系統(tǒng)要求的CLP的數(shù)量一般由性能的估測(cè)來(lái)決定。體系與結(jié)構(gòu)是完全可調(diào)的,只受硅面大小的限制,隨著CLP數(shù)量的增加應(yīng)該包括一個(gè)較大的判優(yōu)器與指令存儲(chǔ)器。GCH引導(dǎo)單元處理機(jī)(GuidedCellHandler)具有與GDH相同的硬件。然而,一個(gè)引導(dǎo)幀只能由GCH處理。如果GCH也可以處理數(shù)據(jù)幀(該情況中,它起到一個(gè)GDH的作用)CLP-Eua寄存器可以在Web上編程。與GDH硬件加速器相比,GCH具有附加的硬件來(lái)執(zhí)行樹(shù)插入和刪除。GCH用于執(zhí)行引導(dǎo)單元的相關(guān)的代碼,執(zhí)行與芯片及樹(shù)管理相關(guān)的代碼如老化(aging)并用于與CP和/或另一個(gè)GCH交換控制信息。當(dāng)沒(méi)有這樣的任務(wù)要執(zhí)行時(shí),GCH將執(zhí)行與幀傳送相關(guān)的代碼并且在這種情況下,完全象一個(gè)GDH一樣運(yùn)行。GPH(通用處理器處理機(jī))。該處理器對(duì)與PowexPC連接的硬件郵箱(mailbox)進(jìn)行訪(fǎng)問(wèn)。由于RIT1/2不包含PowerPC,該GPH將與一個(gè)GDH完全一樣地運(yùn)行。GTH(通用樹(shù)處理機(jī))有與GDH和GCH的硬件加速器相似的附加硬件用于執(zhí)行樹(shù)插入,樹(shù)刪除及繩(rope)管理。當(dāng)在GPQ中沒(méi)有含有樹(shù)管理命令的幀時(shí)GTH將處理數(shù)據(jù)幀。參見(jiàn)圖2,CLP#1(34)包括一個(gè)指令取出、解碼、和執(zhí)行單元(88),一般用途寄存器(80)和包括標(biāo)量寄存器(84)及陣列寄存器(86)的特殊用途寄存器(82)。同樣,CLP#2(36)含有類(lèi)似的組成部分。除兩條指令之外CLP(34)完全在其執(zhí)行單元(102)內(nèi)執(zhí)行指令。兩個(gè)例外是圖4中的直接與間接協(xié)處理器執(zhí)行指令(417)。這兩條指令在所附協(xié)處理器之一上開(kāi)始命令處理。協(xié)處理器相互間能夠同時(shí)執(zhí)行命令而且也能在CLP中進(jìn)行指令處理的同時(shí)執(zhí)行命令。只要一個(gè)CLP指令使用一個(gè)協(xié)處理器,它就指定一個(gè)數(shù)值范圍為0至15的稱(chēng)為協(xié)處理器標(biāo)識(shí)符的4位二進(jìn)制數(shù)來(lái)指明為該操作選擇哪個(gè)協(xié)處理器。共享存儲(chǔ)池4K字節(jié)的共享存儲(chǔ)池(44)擁有用于至少某些協(xié)處理器的陣列寄存器。它被在PPU中運(yùn)行的所有線(xiàn)索使用。1K字節(jié)被每條線(xiàn)索使用并被再分成以下區(qū)FCB頁(yè)(可認(rèn)為是供排隊(duì)協(xié)處理器使用的一個(gè)陣列寄存器);數(shù)據(jù)取(DataFetch);高速暫存區(qū)(ScratchMemoryArea,可認(rèn)為是用于CLP的一個(gè)陣列寄存器),和系統(tǒng)區(qū)。該共享存儲(chǔ)池可被看作根據(jù)線(xiàn)索的數(shù)量分成相等的段。在每段內(nèi),地址空間被再分成陣列寄存器用于需要陣列寄存器的CLP及各個(gè)協(xié)處理器。該池內(nèi)地址線(xiàn)中的兩個(gè)根據(jù)活動(dòng)的CLP與活動(dòng)的線(xiàn)索來(lái)驅(qū)動(dòng)。PPU協(xié)處理器每個(gè)協(xié)處理器是一個(gè)專(zhuān)用的硬件加速器引擎,如果被嵌入到核心中,該引擎執(zhí)行要求大量的串行代碼的功能。這些協(xié)處理器與CLP并行地運(yùn)行并提供用于數(shù)據(jù)移動(dòng)的功能,包括IP頭修改,維護(hù)信息流控制算法中使用的有關(guān)信息流的信息,通過(guò)CAB訪(fǎng)問(wèn)內(nèi)部寄存器,維護(hù)對(duì)信息流控制以及管理信息塊(MIB)的計(jì)數(shù),標(biāo)準(zhǔn)的和專(zhuān)用的(proprietary),和對(duì)將被傳送的幀進(jìn)行排隊(duì)。每個(gè)協(xié)處理器,除非另有說(shuō)明,維護(hù)一組用于PPU中的每條線(xiàn)索的標(biāo)量寄存器及陣列寄存器。再次參見(jiàn)圖2,PPU(10)包括兩個(gè)核心語(yǔ)言處理器(34,36)和幾個(gè)所附的協(xié)處理器(12,20,22,24,26,28,30和32)。這些協(xié)處理器為特定的網(wǎng)絡(luò)處理任務(wù)如高速模式檢索,數(shù)據(jù)操縱,內(nèi)部芯片管理功能,幀解析,以及數(shù)據(jù)提取提供硬件加速。各種協(xié)處理器及其功能描述如下樹(shù)檢索協(xié)處理器樹(shù)檢索引擎(TSE)協(xié)處理器(12)被指定協(xié)處理器標(biāo)識(shí)符2。TSE具有用于樹(shù)管理的命令并通過(guò)判優(yōu)器(110)直接訪(fǎng)問(wèn)樹(shù)檢索存儲(chǔ)器。它具有檢索算法用于執(zhí)行對(duì)LPM(要求可變長(zhǎng)匹配的最長(zhǎng)的前縱匹配模式),F(xiàn)M(有精確匹配的固定大小模式)和STM(涉及或者定義一個(gè)范圍或者定義一個(gè)比特掩碼的模式的軟件管理樹(shù))的檢索以實(shí)現(xiàn)幀傳送及修改信息。一個(gè)數(shù)據(jù)存儲(chǔ)協(xié)處理器(26),被指定協(xié)處理器標(biāo)識(shí)符1,用于收集,修改或者把幀數(shù)據(jù)送入網(wǎng)絡(luò)處理器的幀數(shù)據(jù)存儲(chǔ)器(112)中。本發(fā)明中使用的樹(shù)檢索結(jié)構(gòu)與操作的細(xì)節(jié)可在下面的美國(guó)專(zhuān)利申請(qǐng)中找到,它們的代理人卷號(hào)為RAL9-99-0139;RAL9-99-0140和RAL9-99-0141。校驗(yàn)和協(xié)處理器常規(guī)的校驗(yàn)和協(xié)處理器(20)利用向其提供的用于計(jì)算因特網(wǎng)校驗(yàn)和的相應(yīng)算法來(lái)計(jì)算與確認(rèn)校驗(yàn)和。該協(xié)處理器用一個(gè)半字長(zhǎng)的校驗(yàn)和結(jié)果對(duì)半字長(zhǎng)數(shù)據(jù)進(jìn)行校驗(yàn)和的操作。下面的命令可以使用生成校驗(yàn)和(GenerateChecksum);以及驗(yàn)證校驗(yàn)和(VerifyChecksum)命令的結(jié)果放在一個(gè)累加標(biāo)量寄存器和一個(gè)標(biāo)樁標(biāo)量寄存器(StakeScalarregister)中。累加標(biāo)量寄存器含有校驗(yàn)和的計(jì)算結(jié)果,而標(biāo)樁標(biāo)量寄存器含有緊隨在包含于校驗(yàn)和中的最后半個(gè)字的字節(jié)的位置。用于校驗(yàn)和協(xié)處理器的數(shù)據(jù)存于共享存儲(chǔ)池中。到協(xié)處理器的命令包括以下選項(xiàng)1)IP報(bào)頭一個(gè)IP報(bào)頭被指明時(shí),第三層報(bào)頭的起始位置(即標(biāo)樁)被傳送。硬件從該報(bào)頭的長(zhǎng)度字段來(lái)確定IP報(bào)頭的長(zhǎng)度并把該值加載到一個(gè)長(zhǎng)度標(biāo)量寄存器。生成校驗(yàn)和時(shí),用值零來(lái)代替含有當(dāng)前校驗(yàn)和的半個(gè)字。2)數(shù)據(jù)塊存于共享存儲(chǔ)池中的數(shù)據(jù)被看作是一個(gè)數(shù)據(jù)塊而且可以生成一個(gè)校驗(yàn)和或者可對(duì)該校驗(yàn)和進(jìn)行驗(yàn)證。共享存儲(chǔ)池中的起始位置,以及長(zhǎng)度被傳送。驗(yàn)證(verifying)一個(gè)數(shù)據(jù)塊時(shí),校驗(yàn)和被置入累加標(biāo)量寄存器。校驗(yàn)(checking)一個(gè)數(shù)據(jù)塊時(shí),校驗(yàn)和被放入累加寄存器。排隊(duì)協(xié)處理器排隊(duì)協(xié)處理器(24)提供兩個(gè)功能1.它允許代碼來(lái)建立一個(gè)FCB(幀控制塊)頁(yè),一個(gè)用于建立上行與下行FCB頁(yè)的稱(chēng)為一個(gè)工作FCB頁(yè)的256比特寄存器。該寄存器含有被要求按照EDS(排隊(duì),離隊(duì)/調(diào)度)(Enqueue,Dequeue/Scheduling)上行或EDS下行對(duì)幀進(jìn)行排隊(duì)的全部參數(shù),該寄存器中含有的參數(shù)的例子是用于上行的FCB地址,目標(biāo)部分號(hào)(targetpartnumber),幀修改信息以及下一個(gè)循環(huán)的標(biāo)識(shí)。2.它提供在一個(gè)CLP和結(jié)束單元(CU)之間的一個(gè)接口。CU的操作與CLP無(wú)關(guān),但是它為每個(gè)CLP處理順包括一個(gè)稱(chēng)為準(zhǔn)備FCB頁(yè)(ReadyFCBPage)的寄存器。在排隊(duì)時(shí),該寄存器被拷貝到CU然后該隊(duì)列被排隊(duì)處理器接收。此時(shí),CLP被騰空以便處理下一幀。EQ設(shè)置其準(zhǔn)備比特(?)然而,如果CU中的準(zhǔn)備FCB頁(yè)不為空,EQ將封鎖從CLP向CU的傳輸,直至EQ寄存器為空再允許傳輸。排隊(duì)協(xié)處理器管理在一條線(xiàn)索與結(jié)束單元之間的接口和存于共享存儲(chǔ)池中的FCB頁(yè)的使用。每條線(xiàn)索有3個(gè)FCB頁(yè)位置,有關(guān)一個(gè)幀的排隊(duì)信息可以存入其中。其中兩個(gè)頁(yè)用于在連續(xù)的排隊(duì)期間通過(guò)兩個(gè)頁(yè)之間的交換來(lái)改善結(jié)束單元的接口的性能。在這兩個(gè)頁(yè)之間對(duì)為該線(xiàn)索所寫(xiě)的匯編語(yǔ)言代碼沒(méi)有區(qū)別,因?yàn)檫@是由硬件管理的。第三頁(yè)由該線(xiàn)索用于準(zhǔn)許通過(guò)代碼來(lái)建立新幀。這方面的一個(gè)例子是建立用于學(xué)習(xí)的定向通信(guidedtraffic),該通信被重新排隊(duì)以供一條GTH線(xiàn)索執(zhí)行的信息。一條CLP線(xiàn)索發(fā)出一條排隊(duì)命令時(shí),F(xiàn)CB頁(yè)被標(biāo)明在使用中(in-use)。如果其它位置可供使用,則一個(gè)新幀可被調(diào)至該線(xiàn)索而不用等待來(lái)自排隊(duì)協(xié)處理器的應(yīng)答。結(jié)束單元通過(guò)排隊(duì)協(xié)處理器從共享存儲(chǔ)池取出FCB頁(yè),而且它將該頁(yè)提供給EDS(正如排隊(duì)命令指明的那樣,或入或出)。一旦出現(xiàn)這種情況,F(xiàn)CB頁(yè)被標(biāo)明為空閑。如果兩個(gè)FCB頁(yè)均被標(biāo)明在使用中,則第三幀不允許開(kāi)始。下面的命令由排隊(duì)協(xié)處理器支持排隊(duì)入(EnqueueIngress,ENQUP)通過(guò)結(jié)束單元排隊(duì)到入數(shù)據(jù)流控制和調(diào)度程序(scheduler)。排隊(duì)出(EnqueueEgress,ENQDN)通過(guò)結(jié)束單元排隊(duì)到出數(shù)據(jù)流控制和調(diào)度程序。排隊(duì)清除(EnqueueClear,ENQCLR)清除(將所有字段置為零)當(dāng)前的PCB頁(yè)。數(shù)據(jù)存儲(chǔ)協(xié)處理器該協(xié)處理器(26)執(zhí)行下列功能1.它與上行數(shù)據(jù)存儲(chǔ)器及下行數(shù)據(jù)存儲(chǔ)器進(jìn)行接口。2.它在一個(gè)定時(shí)器事項(xiàng)或中斷的調(diào)度期間接收配置信息。3.它對(duì)幀計(jì)算校驗(yàn)和。該協(xié)處理器一般包括一個(gè)320字節(jié)的數(shù)據(jù)緩沖器和一個(gè)8個(gè)字的存儲(chǔ)器,每個(gè)字128比特。幀數(shù)據(jù)通過(guò)數(shù)據(jù)存儲(chǔ)協(xié)處理器被訪(fǎng)問(wèn),從而與包含從媒體接收的幀的入數(shù)據(jù)存儲(chǔ)器和包含從包路由交換機(jī)接收的重新裝配的幀的出數(shù)據(jù)存儲(chǔ)器接口。在一個(gè)計(jì)時(shí)器事項(xiàng)或中斷的調(diào)度期間,它還接收配置信息。該數(shù)據(jù)存儲(chǔ)協(xié)處理器使用在一個(gè)共享存儲(chǔ)池中定義的陣列。這些陣列是數(shù)據(jù)池(datapool),可容納8個(gè)四倍長(zhǎng)字(QuadWords),和兩個(gè)高速暫存陣列,其中一個(gè)容納8個(gè)四倍長(zhǎng)字和一個(gè)容納4個(gè)四倍長(zhǎng)字。用于控制從和向入或出數(shù)據(jù)存儲(chǔ)器讀和寫(xiě)陣列內(nèi)容的附加標(biāo)量寄存器在該數(shù)據(jù)存儲(chǔ)協(xié)處理器中。為由該數(shù)據(jù)存儲(chǔ)協(xié)處理器支持的每條線(xiàn)索定義了一組陣列與標(biāo)量寄存器。這些共享存儲(chǔ)池陣列用作數(shù)據(jù)存儲(chǔ)協(xié)處理器的工作區(qū)取代對(duì)一個(gè)數(shù)據(jù)存儲(chǔ)器的直接讀或?qū)?,更大量的幀?shù)據(jù)從該數(shù)據(jù)存儲(chǔ)器被讀到這些共享存儲(chǔ)池陣列中或者更大量的數(shù)據(jù)從這些陣列中被寫(xiě)入到數(shù)據(jù)存儲(chǔ)器中。傳送單位是一個(gè)四倍長(zhǎng)字,定義為16個(gè)字節(jié)。下列命令可供數(shù)據(jù)存儲(chǔ)協(xié)處理器使用1.寫(xiě)入出數(shù)據(jù)存儲(chǔ)器(WriteEgressDataStore,WRDNDS)允許CLP寫(xiě)入出數(shù)據(jù)存儲(chǔ)器。寫(xiě)操作只在多個(gè)四倍長(zhǎng)字單位中進(jìn)行。數(shù)據(jù)取自數(shù)據(jù)存儲(chǔ)協(xié)處理器陣列中的一個(gè)陣列(數(shù)據(jù)池或高速暫存陣列)。2.讀出出數(shù)據(jù)存儲(chǔ)器(ReadEgressDataStore,RDDNDS)允許CLP從出數(shù)據(jù)存儲(chǔ)器中讀出數(shù)據(jù)并將其置入數(shù)據(jù)存儲(chǔ)協(xié)處理器陣列中的一個(gè)陣列。讀操作只在多個(gè)四倍長(zhǎng)字單位中對(duì)出數(shù)據(jù)存儲(chǔ)器進(jìn)行。3.寫(xiě)入數(shù)據(jù)存儲(chǔ)器(WriteIngressDataStore,WRUPDS)允許CLP向入數(shù)據(jù)存儲(chǔ)器寫(xiě)數(shù)據(jù)。寫(xiě)操作只在多個(gè)四倍長(zhǎng)字單位中對(duì)入數(shù)據(jù)存儲(chǔ)器進(jìn)行。4.讀出入數(shù)據(jù)存儲(chǔ)器(ReadIngressDataStore,RDUPDS)允許CLP從入數(shù)據(jù)存儲(chǔ)器讀出數(shù)據(jù)(只在多個(gè)四倍長(zhǎng)字單位中)。從出數(shù)據(jù)存儲(chǔ)器讀取更多幀數(shù)據(jù)(RDMOREDN)對(duì)出數(shù)據(jù)存儲(chǔ)器進(jìn)行的一個(gè)硬件輔助的讀操作。RDMOREDN從上一個(gè)讀命令停止的地方繼續(xù)讀取幀并把數(shù)據(jù)送入數(shù)據(jù)池(Datapool)。由于數(shù)據(jù)被移入數(shù)據(jù)池,該硬件跟蹤被讀取的幀中的當(dāng)前位置并從雙緩沖器中捕獲連接指針以便確定下個(gè)雙緩沖器(buffertwin)的位置。該地址被硬件用于后續(xù)的RDMOREDN請(qǐng)求,直至該雙緩沖器被讀完而且下一個(gè)雙緩沖器被讀取。由于數(shù)據(jù)池的內(nèi)容是一個(gè)雙緩沖器的內(nèi)容的映射,幀數(shù)據(jù)就有能力在數(shù)據(jù)池內(nèi)交換(wrap);代碼則保持對(duì)數(shù)據(jù)池內(nèi)的數(shù)據(jù)位置的跟蹤。從入數(shù)據(jù)存儲(chǔ)器讀取更多幀數(shù)據(jù)(RDMOREUP)對(duì)入數(shù)據(jù)存儲(chǔ)器進(jìn)行的一個(gè)硬件輔助的讀操作。RDMOREUP從上一個(gè)讀命令停止的地方繼續(xù)讀取幀并把讀出數(shù)據(jù)送入數(shù)據(jù)池。由于數(shù)據(jù)被移入數(shù)據(jù)池,該硬件跟蹤被讀的幀中的當(dāng)前位置并捕獲含于緩沖器控制塊區(qū)中的連接以便確定該幀的下一個(gè)數(shù)據(jù)緩沖器的位置。讀地址被硬件用于后續(xù)的RDMOREUP請(qǐng)求,直至該數(shù)據(jù)緩沖器被讀完而且下一個(gè)緩沖器被讀取。代碼則保持對(duì)數(shù)據(jù)池內(nèi)的幀數(shù)據(jù)位置的跟蹤。租用雙緩沖器(LeaseTwinBuffer,LEASETWIN),返回一個(gè)空閑的雙緩沖器(在出數(shù)據(jù)存儲(chǔ)器中建立新數(shù)據(jù)時(shí)使用)的地址??刂圃L(fǎng)問(wèn)總線(xiàn)(CAB)協(xié)處理器該協(xié)處理器(28)允許網(wǎng)絡(luò)處理器在整個(gè)網(wǎng)絡(luò)處理器系統(tǒng)中對(duì)所選的寄存器進(jìn)行控制。出于包括系統(tǒng)初始化在內(nèi)的目的它能夠把某些寄存器初始化,而且為了系統(tǒng)診斷與維護(hù)它能對(duì)某些寄存器執(zhí)行讀操作。該協(xié)處理器與嵌入式處理器組合(EPC)Web判優(yōu)器接口。該判優(yōu)器在CLP與Web監(jiān)視之間判優(yōu)。這就允許所有的CLP在Web上讀與寫(xiě)。該CAB協(xié)處理器為一個(gè)CLP線(xiàn)索提供到CAB判優(yōu)器和控制訪(fǎng)問(wèn)總線(xiàn)的接口。一條線(xiàn)索必須為一個(gè)CAB訪(fǎng)問(wèn)而加載操作數(shù),如CAB地址與數(shù)據(jù)。訪(fǎng)問(wèn)CAB的協(xié)議則由CAB接口協(xié)處理器處理,其提供下列命令判優(yōu)CAB訪(fǎng)問(wèn)(ArbitrateforCABAccess,WEBARB)由一條線(xiàn)索使用以獲得對(duì)CAB的訪(fǎng)問(wèn)。一旦訪(fǎng)問(wèn)被批準(zhǔn),該線(xiàn)索即保持對(duì)CAB的控制直至其釋放CAB為止。讀/寫(xiě)CAB(Read/wieteCAB,WEBACCESS)向或從CAB及其所附的CAB可訪(fǎng)問(wèn)寄存器移動(dòng)數(shù)據(jù)。PPU內(nèi)的源及目的是一般用途寄存器(GPR)。預(yù)占CAB(Pre-emptCAB,WEBPREEMPT)只供GFH線(xiàn)索使用,它允許GFH為了一個(gè)單一的讀/寫(xiě)訪(fǎng)問(wèn)而獲得對(duì)CAB的控制,即使該CAB已被授予給另一條線(xiàn)索。有關(guān)校驗(yàn)和,數(shù)據(jù)存儲(chǔ)器,隊(duì)列以及CAB協(xié)處理器的結(jié)構(gòu)與操作的其他細(xì)節(jié)示于美國(guó)專(zhuān)利申請(qǐng)《串拷貝(StrCopy)協(xié)處理器》中,其代理人卷號(hào)為RAL9-99-0083。串拷貝協(xié)處理器(StringCopyCoprocessor)(22)擴(kuò)展了CLP的移動(dòng)數(shù)據(jù)塊的能力。數(shù)據(jù)只在共享存儲(chǔ)池內(nèi)移動(dòng)。下列命令可供使用串拷貝(Strcopr)本命令用于在陣列之間移動(dòng)多個(gè)字節(jié)的數(shù)據(jù)。該命令傳遞源數(shù)據(jù)塊的起始字節(jié)位置,信宿數(shù)據(jù)塊(sinkdatablock),以及要移動(dòng)的字節(jié)數(shù)。計(jì)數(shù)器協(xié)處理器計(jì)數(shù)器協(xié)處理器(30)沿總線(xiàn)(72)向可以在所有的PPU間共享的一個(gè)計(jì)數(shù)器管理器(未示出)提供訪(fǎng)問(wèn)。該協(xié)處理器與所有的計(jì)數(shù)器程序接口并執(zhí)行計(jì)數(shù)器的更新。這是由其標(biāo)量寄存器與協(xié)處理器執(zhí)行接口(16)之間的一個(gè)FIFO緩沖器(76)實(shí)現(xiàn)的。一個(gè)第二FIFO緩沖器(78)位于它的陣列寄存器與協(xié)處理器數(shù)據(jù)接口(14)之間。每條線(xiàn)索就象擁有其自己的計(jì)數(shù)器協(xié)處理器一樣運(yùn)行。一個(gè)外部(至PPU)地址及數(shù)據(jù)總線(xiàn)用于該協(xié)處理器。這樣,該系統(tǒng)就能夠?qū)崿F(xiàn)允許一個(gè)以上的PPU通過(guò)外部總線(xiàn)來(lái)判優(yōu)計(jì)數(shù)器協(xié)處理器的使用。一條線(xiàn)索能夠通過(guò)計(jì)數(shù)器共用處理要求一個(gè)計(jì)數(shù)器的更新并且能夠持續(xù)進(jìn)行處理而不用等待計(jì)數(shù)器管理器完成操作。計(jì)數(shù)器協(xié)處理器就該請(qǐng)求向計(jì)數(shù)器管理器發(fā)生信號(hào)并把計(jì)數(shù)器訪(fǎng)問(wèn)命令的操作數(shù)傳遞給計(jì)數(shù)器管理器以供處理。該計(jì)數(shù)器協(xié)處理器有一個(gè)8層的(eight-deep)隊(duì)列用于容納由在PPU中運(yùn)行的四條線(xiàn)索發(fā)出的計(jì)數(shù)器訪(fǎng)問(wèn)命令。該計(jì)數(shù)器協(xié)處理器提供下列命令計(jì)數(shù)器訪(fǎng)問(wèn)(CtrAccfess),增加或把一個(gè)值加到一個(gè)計(jì)數(shù)器。該命令的操作數(shù)是一個(gè)計(jì)數(shù)器標(biāo)識(shí)符(以計(jì)數(shù)器存儲(chǔ)器的形式),索引與移位,一個(gè)增加或加法命令,和一個(gè)值字段;讀一個(gè)計(jì)數(shù)或?qū)懸粋€(gè)計(jì)數(shù);或者讀出與清除一個(gè)計(jì)數(shù)值。除非計(jì)數(shù)器協(xié)處理器的隊(duì)列已滿(mǎn)一條線(xiàn)索不等待命令的執(zhí)行。計(jì)數(shù)器協(xié)處理器及其操作的更多細(xì)節(jié)可見(jiàn)于標(biāo)題為《用于管理大計(jì)數(shù)器陣列的協(xié)處理器》,代理人卷號(hào)為RAL9-2000-0078-USI的美國(guó)專(zhuān)利申請(qǐng)。規(guī)則協(xié)處理器(PolicyCoprocessor)規(guī)則協(xié)處理器(32)為一條線(xiàn)索提供到規(guī)則管理器(未示出)的一個(gè)接口(74)。這是由它的標(biāo)量寄存器與協(xié)處理器執(zhí)行接口(16)之間的一個(gè)FIFO緩沖器(76)實(shí)現(xiàn)的。一個(gè)第二FIFO緩沖器(78)位于其陣列寄存器與協(xié)處理器數(shù)據(jù)接口(14)之間。一條線(xiàn)索通過(guò)該接口請(qǐng)求對(duì)一個(gè)幀的“顏色”(“color”)進(jìn)行更新。一個(gè)幀的顏色用作網(wǎng)絡(luò)處理器的可配置的信息流控制機(jī)制的組成部分,決定著對(duì)該幀執(zhí)行何種操作。一條線(xiàn)索必須等待規(guī)則管理器,通過(guò)規(guī)則協(xié)處理器,返回一個(gè)結(jié)果。規(guī)則管理器訪(fǎng)問(wèn)用于信息流的規(guī)則控制塊,而該幀是該信息流的一個(gè)部分。操作數(shù)包括規(guī)則控制塊地址,信息包的長(zhǎng)度以及當(dāng)前指定給該幀的顏色。返回的結(jié)果是給該幀的一種新的顏色。每個(gè)CLP(34,36)通過(guò)兩個(gè)接口即協(xié)處理器執(zhí)行接口(16)與協(xié)處理器數(shù)據(jù)接口(14)與協(xié)處理器(12,20,22,24,26,28,30和32)連接。這些接口的功能將在圖4中更詳細(xì)描述。一個(gè)4比特共用處理標(biāo)識(shí)符唯一地標(biāo)識(shí)PPU中的每個(gè)協(xié)處理器。每個(gè)協(xié)處理器能夠支持多達(dá)256個(gè)特殊用途寄存器。一個(gè)取值范圍為0至255的8比特寄存器號(hào)碼唯一地標(biāo)識(shí)一個(gè)協(xié)處理器內(nèi)的一個(gè)特殊用途寄存器。協(xié)處理器號(hào)碼與寄存器號(hào)碼的組合唯一地標(biāo)識(shí)PPU內(nèi)的寄存器。有兩種類(lèi)型的特殊用途寄存器標(biāo)量寄存器與陣列寄存器。寄存器碼0至239為標(biāo)量寄存器售留。一個(gè)標(biāo)量寄存器有一個(gè)1比特的最小長(zhǎng)度和一個(gè)32比特的最大長(zhǎng)度。標(biāo)量寄存器的比特被標(biāo)以從0至31的號(hào)碼,在最右端或最低有效位從0開(kāi)始,而在最左端或最高有效位至31結(jié)束。長(zhǎng)度小于32個(gè)比特的標(biāo)量寄存器從右側(cè)排起,余下的位被看作未生效。CLP對(duì)長(zhǎng)度小于32比特的標(biāo)量寄存器執(zhí)行讀操作時(shí),未生效的位的值取決于硬件。對(duì)未生效的位的寫(xiě)操作無(wú)效。寄存器號(hào)碼240至255為陣列寄存器保留。一個(gè)陣列寄存器有一個(gè)兩個(gè)字節(jié)的最小長(zhǎng)度和一個(gè)256個(gè)字節(jié)的最大長(zhǎng)度。CLP對(duì)一個(gè)陣列寄存器讀或?qū)?,在共享存?chǔ)池(44)內(nèi)分區(qū)(partition),一次兩個(gè)字節(jié)(半字長(zhǎng)),一次四個(gè)字節(jié)(一個(gè)字)或一次16個(gè)字節(jié)(四倍長(zhǎng)字)。一般用途寄存器的使用在技術(shù)中是周知的,因此用一般的方式來(lái)討論。一般用途寄存器可以由兩個(gè)途徑被程序員觀(guān)察。程序員可以把一個(gè)一般用途寄存器看作是一個(gè)32比特寄存器,正如用取自0,2,4,6,……14組的一個(gè)4比特?cái)?shù)表示的32比特的標(biāo)簽指明的那樣。在這種意義上程序員見(jiàn)到的是8個(gè)32比特的一般用途寄存器。根據(jù)用一個(gè)取自0,1,2,3,……15組的一個(gè)4比特?cái)?shù)表示的16位的標(biāo)簽,程序員也可以把一個(gè)一般用途寄存器做為一個(gè)16比特寄存器來(lái)使用。在這種意義上程序員見(jiàn)到的是16個(gè)16比特一般用途寄存器。每個(gè)協(xié)處理器包括儲(chǔ)存來(lái)自忙信號(hào)字段的信息的一個(gè)狀態(tài)寄存器。這個(gè)寄存器向一個(gè)程序員指明一個(gè)給定的協(xié)處理器是否可用、或者它是否忙。一個(gè)協(xié)處理器結(jié)束代碼寄存器儲(chǔ)存來(lái)自圖4中的OK/K.O.字段(415)的信息。因此,如果一個(gè)程序員需要知道一個(gè)給定的協(xié)處理器是否忙或是否可用,該程序員能夠從一個(gè)協(xié)處理器狀態(tài)寄存器得到這一信息。與此類(lèi)似,一個(gè)協(xié)處理器結(jié)束代碼寄存器向一個(gè)程序員提供關(guān)于協(xié)處理器任務(wù)結(jié)束的信息。每個(gè)CUP包括下列16比特程序寄存器一個(gè)程序計(jì)數(shù)器寄存器,一個(gè)程序狀態(tài)寄存器,一個(gè)連接寄存器,和一個(gè)關(guān)鍵字(key)長(zhǎng)度寄存器。還提供兩個(gè)32比特寄存器時(shí)間簽(timestamp)寄存器,和隨機(jī)數(shù)生成器寄存器。還為前面提到的每個(gè)寄存器提供一個(gè)標(biāo)量寄存器號(hào)碼。一般用途寄存器可以?xún)煞N方式被程序員觀(guān)察。一個(gè)程序員可以把一個(gè)一般用途寄存器看作是一個(gè)32比特寄存器。一個(gè)程序員也可以把一個(gè)一般用途寄存器用作一個(gè)16比特寄存器。陣列寄存器通過(guò)陣列寄存器號(hào)碼展示在程序員面前。圖4描述了通過(guò)協(xié)處理器執(zhí)行接口(16)和協(xié)處理器數(shù)據(jù)接口(14)把CLP(34)與其協(xié)處理器(401)連接起來(lái)的接口信號(hào)。獨(dú)立線(xiàn)連接的數(shù)量由挨著每項(xiàng)獨(dú)立的任務(wù)中的箭頭出現(xiàn)的有編號(hào)的標(biāo)簽指明。為了便于討論,所選的協(xié)處理器(20,22,……)代表其協(xié)處理器標(biāo)識(shí)符與根據(jù)下面討論的操作而出現(xiàn)在(411),(420),或者(429)上的協(xié)處理器標(biāo)識(shí)符相配匹的協(xié)處理器。執(zhí)行接口(16)使CLP(34)能夠在任何一個(gè)協(xié)處理器(20,22,……)上開(kāi)始命令的執(zhí)行。協(xié)處理器號(hào)碼(411)在16個(gè)協(xié)處理器中選擇一個(gè)作為該命令的目標(biāo)。當(dāng)CLP把起始字段(410)觸發(fā)至邏輯1時(shí),如由協(xié)處理器號(hào)(411)指明的選中的協(xié)處理器(450)開(kāi)始執(zhí)行由6比特操作字段(OPfield)(412)指定的命令。操作重量(OPargument)是44比特的數(shù)據(jù),與該命令一道傳送供協(xié)處理器(450)執(zhí)行。忙信號(hào)(414)是一個(gè)16比特的字段,每個(gè)協(xié)處理器(401)對(duì)應(yīng)一個(gè)比特,并指明一個(gè)協(xié)處理器是否忙于執(zhí)行一條命令(比特=1)或者這個(gè)協(xié)處理器是否未執(zhí)行命令(比特=0)。這16比特存儲(chǔ)于標(biāo)量寄存器中,這里,寄存器的位0對(duì)應(yīng)協(xié)處理器0,位1對(duì)應(yīng)協(xié)處理器1,等等。OK/K.O.字段(415)是一個(gè)16比特字段,每個(gè)協(xié)處理器(401)一個(gè)比特。它是專(zhuān)供命令使用的一個(gè)比特返回值代碼。例如,它可以用于向CLP(34)指明給予一個(gè)協(xié)處理器(401)的一條命令是否以失敗結(jié)束,或者一條命令是否成功。這一信息存儲(chǔ)于CLP標(biāo)量寄存器中,這里該寄存器的位0對(duì)應(yīng)協(xié)處理器0,位1對(duì)應(yīng)協(xié)處理器1,等等。直接/間接字段(417)向選中的協(xié)處理器(450)指明協(xié)處理器執(zhí)行指令的哪種格式在執(zhí)行。如果直接/間接=0,則直接格式在執(zhí)行,否則,如果直接/間接=1則間接格式在執(zhí)行。協(xié)處理器數(shù)據(jù)接口(14)包含3組信號(hào)。寫(xiě)接口(419,420,421,422,423,424)涉及向一個(gè)協(xié)處理器中的一個(gè)標(biāo)量或陣列寄存器寫(xiě)數(shù)據(jù)。讀接口(427,428,429,430,431,432,433)涉及從一個(gè)協(xié)處理器內(nèi)的一個(gè)特殊用途寄存器(80),或者是一個(gè)標(biāo)量寄存器(84)或者是一個(gè)陣列寄存器(86)讀數(shù)據(jù)。第三組(425,426,427)在一個(gè)標(biāo)量寄存器或陣列寄存器的讀與寫(xiě)期間都要使用。讀接口與寫(xiě)接口二者的復(fù)制功能用于支持同時(shí)的讀與寫(xiě)以把數(shù)據(jù)從一個(gè)寄存器移至另一個(gè)寄存器。寫(xiě)接口用寫(xiě)字段(419)選擇由協(xié)處理器號(hào)碼(420)指定的一個(gè)協(xié)處理器(450)。只要CLP(34)想把數(shù)據(jù)寫(xiě)入選中的協(xié)處理器,寫(xiě)字段(419)即被強(qiáng)制置為一。協(xié)處理器寄存器標(biāo)識(shí)符(421)指定選中的協(xié)處理器(450)內(nèi)CLP(34)將進(jìn)行寫(xiě)操作的寄存器。協(xié)處理器寄存器標(biāo)識(shí)符(421)是一個(gè)8比特字段,因此(256)個(gè)寄存器被支持。取值范圍為0至239的一個(gè)協(xié)處理器寄存器標(biāo)識(shí)符指定對(duì)一個(gè)標(biāo)量寄存器的一個(gè)寫(xiě)操作。取值范圍為240至255的一個(gè)協(xié)處理器寄存器標(biāo)識(shí)符指定對(duì)一個(gè)陣列寄存器的一個(gè)寫(xiě)操作。在陣列寄存器寫(xiě)的情況下,該移位字段(422)指定陣列寄存器中數(shù)據(jù)寫(xiě)操作的起始點(diǎn)。這個(gè)字段的大小為8比特,因此將支持一個(gè)陣列內(nèi)的256個(gè)地址。數(shù)據(jù)出字段(423)攜帶將被寫(xiě)入?yún)f(xié)處理器(450)的數(shù)據(jù)。它的大小為128比特,因此一次可寫(xiě)多達(dá)128位的信息。寫(xiě)有效字段(424)向CLP(34)指明何時(shí)協(xié)處理器(450)完成接收數(shù)據(jù)。這就允許CLP(34)在協(xié)處理器(450)接收數(shù)據(jù)的同時(shí)暫停并保持?jǐn)?shù)據(jù)有效。除了數(shù)據(jù)從協(xié)處理器被讀取之外,讀接口(14)在結(jié)構(gòu)上與寫(xiě)接口(16)相似。讀字段(428)對(duì)應(yīng)寫(xiě)字段(419),并由CLP(34)用于指明何時(shí)對(duì)選擇的協(xié)處理器(450)執(zhí)行一個(gè)讀操作。協(xié)處理器號(hào)碼標(biāo)識(shí)符字段。(429)判斷選擇哪個(gè)協(xié)處理器(450)。寄存器號(hào)碼字段(430)、位移字段(431),以及讀有效字段(433)與寫(xiě)接口中的(421)(422),及(424)對(duì)應(yīng)。數(shù)據(jù)入字段(432)把數(shù)據(jù)從協(xié)處理器(450)傳輸至CLP(34)。讀或?qū)懖僮髂苡腥N長(zhǎng)度中的一種指明傳送16比特的半長(zhǎng)字,指明傳送32比特的字,以及指明傳送128比特的四倍長(zhǎng)字。讀數(shù)據(jù)(432)和寫(xiě)數(shù)據(jù)(423)寬度為128比特。少于128比特的數(shù)據(jù)傳輸是右對(duì)齊的。信號(hào)(425)與(426)指明數(shù)據(jù)傳輸?shù)拇笮 ?6比特傳輸由取值均為0的(425)與(426)指明,32比特傳輸由分別取值1和0的(425)和(426)指明,而128比特傳輸由分別取值0和1的(425)和(426)指明。變址數(shù)(modifier)字段(427)在數(shù)據(jù)讀或數(shù)據(jù)寫(xiě)操作期間均要使用。每個(gè)協(xié)處理器就象該協(xié)處理器的硬件設(shè)計(jì)器定義的那樣以其自己的方式解釋它的含義。它為程序員提供一個(gè)方法以便在讀或?qū)懖僮髌陂g均為硬件規(guī)定一個(gè)附加位的信息。數(shù)據(jù)存儲(chǔ)協(xié)處理器能夠跳過(guò)信息包緩沖器鏈接表中的信息包緩沖器中的連接字段。啟動(dòng)一個(gè)協(xié)處理器中的一項(xiàng)任務(wù)之后,CLP可以繼續(xù)執(zhí)行指令,或者可以拖延指令的執(zhí)行直至該協(xié)處理器中的任務(wù)完成。在CLP在與協(xié)處理器中的任務(wù)執(zhí)行的同時(shí)繼續(xù)執(zhí)行指令的情況下,在某一后續(xù)的時(shí)間點(diǎn)上,由主處理器單元執(zhí)行的等待指令將使其拖延其它指令的執(zhí)行直至在一個(gè)或多個(gè)協(xié)處理器上的任務(wù)執(zhí)行結(jié)束。在一種形式中,等待指令拖延在CLP上的執(zhí)行直至在一個(gè)或多個(gè)協(xié)處理器內(nèi)的任務(wù)完成,這時(shí)CLP恢復(fù)對(duì)跟隨在等待指令后面的指令的指令執(zhí)行。在另一種形式中,等待地令拖延CLP的執(zhí)行直至在一個(gè)特定的協(xié)處理器內(nèi)的任務(wù)完成。在這個(gè)任務(wù)完成時(shí),CLP對(duì)來(lái)自該協(xié)處理器的一個(gè)一比特的返回代碼連同來(lái)自等待指令內(nèi)的一比特一起進(jìn)行檢查以確定是否恢復(fù)對(duì)跟隨在等待指令后面的指令的指令執(zhí)行或者將執(zhí)行轉(zhuǎn)移至由程序員規(guī)定的某個(gè)其他指令。協(xié)處理器執(zhí)行指令通過(guò)把圖1中的協(xié)處理器執(zhí)行接口(16)中的‘開(kāi)始’信號(hào)置成1的方式來(lái)模擬在一個(gè)協(xié)處理器上的命令處理。參見(jiàn)圖5,協(xié)處理器標(biāo)識(shí)符(520)是從指令字段(500)獲得的并通過(guò)開(kāi)始信號(hào)指明一個(gè)所選的協(xié)處理器。6比特的協(xié)處理器命令是從指令字段(501)獲得的并通過(guò)一個(gè)信號(hào)向所選的協(xié)處理器指明哪個(gè)命令開(kāi)始執(zhí)行。一旦把開(kāi)始信號(hào)激活至1,所選的協(xié)處理器將其忙信號(hào)激活至1并使其保持1值直至它完成命令的執(zhí)行,這時(shí)它把該信號(hào)去話(huà)(deactivate)至0。CLP連續(xù)地讀取16位的信號(hào)并把它們置入標(biāo)量寄存器。根據(jù)命令的完成,所選的協(xié)處理器把這一狀態(tài)置入標(biāo)量寄存器。再參見(jiàn)圖5,如果指令的異步執(zhí)行字段(502)是0則CLP通過(guò)將其忙信號(hào)去活來(lái)指明指令完成。出現(xiàn)這種情況時(shí),CLP恢復(fù)指令的取出與執(zhí)行。如果指令的異步執(zhí)行字段(502)是1則CLP不管忙信號(hào)的狀態(tài)繼續(xù)指令的取出與執(zhí)行。當(dāng)所選的協(xié)處理器中的命令處理起動(dòng),CLP通過(guò)一個(gè)信號(hào)向該協(xié)處理器提供44比特的附加的命令專(zhuān)用信息。該信息是根據(jù)在圖5a與5d中描述的指令格式用4種方法中的1種方法獲得的。圖5a的協(xié)處理器執(zhí)行間接格式從指令字段(504)獲得指令信息的高位的12比特(523)。指令信息的低位32比特(524)是從32比特的一般用途寄存器(505)獲得的。所選的寄存器由取值限制在{0,2,4,……14}范圍內(nèi)的4比持的指令字段(503)決定。通過(guò)這種方式,從該寄存器中選出一個(gè)32比特寄存器。CLP把該信號(hào)置成1以向所選的協(xié)處理器指明這是指令的間接形式。用于執(zhí)行指令的條件協(xié)處理器執(zhí)行間接格式示于圖5b。這里,指令以與圖5a中的方式相同的方式根據(jù)被滿(mǎn)足的某些條件而執(zhí)行。如果這些條件未予滿(mǎn)足,指令即不執(zhí)行。這些指令是根據(jù)CLP中的ALU代碼執(zhí)行的。條件執(zhí)行使用產(chǎn)生被縮短至2比特的操作字段(OPfield)的4比特。這樣,系統(tǒng)就允許對(duì)64個(gè)可能的命令中的4個(gè)命令實(shí)施條件執(zhí)行。其他命令假定為0。這樣,基于長(zhǎng)和短等待時(shí)間的條件執(zhí)行就能夠借此而實(shí)現(xiàn)。協(xié)處理器指令的條件執(zhí)行在有關(guān)計(jì)數(shù)器協(xié)處理器的操作中尤其有用。圖5c的協(xié)處理器執(zhí)行直接格式從指令字段(506)中獲得命令信息的低位的16比特(527)。命令信息的高位28比特(526)被置成0。CLP把該信號(hào)置成0以向所選的協(xié)處理器指明這是指令的直接形式。條件協(xié)處理器執(zhí)行直接格式示于圖5d中,正如其配置,可根據(jù)某些被滿(mǎn)足的條件,以與圖5c中相同的方式來(lái)執(zhí)行。與圖5b的情況相同,條件執(zhí)行使用能夠產(chǎn)生被縮短至2比特的操作字段的4比特。這樣,系統(tǒng)就允許對(duì)64個(gè)可能的命令中的4個(gè)命令實(shí)施條件執(zhí)行。圖6a描述了用于協(xié)處理器等待指令的指令格式。CLP執(zhí)行從指令字段(600)獲得的16比特掩碼(mask)與協(xié)處理器狀態(tài)寄存器的比特智能“與”操作(thebitwiseANDoperation)。如果結(jié)果不是表明一個(gè)或多個(gè)協(xié)處理器當(dāng)前仍在執(zhí)行命令的0,CLP則拖延命令的取出與執(zhí)行。但是它繼續(xù)執(zhí)行上述的“與”操作直至結(jié)果為零的時(shí)候。圖6b描述了協(xié)處理器等待與轉(zhuǎn)移(Branch)格式。協(xié)處理器標(biāo)識(shí)符字段(601)指明協(xié)處理器狀態(tài)中的哪個(gè)特定比特將被測(cè)試。例如,如果字段(601)含有1則協(xié)處理器狀態(tài)寄存器的比特1被測(cè)試。如果標(biāo)識(shí)字段(601)含有15,則協(xié)處理器狀態(tài)的比特15被測(cè)試。如果測(cè)過(guò)的比特的值是1表明對(duì)應(yīng)的協(xié)處理器尚未完成命令的執(zhí)行,則CLP拖延指令的取出與執(zhí)行。但是它繼續(xù)執(zhí)行上述操作直至測(cè)過(guò)的比特的值是0表明對(duì)應(yīng)的協(xié)處理器已經(jīng)完成命令的執(zhí)行。這時(shí),按照該指令的OK字段(602)的值以及由協(xié)處理器標(biāo)識(shí)符(601)選擇的標(biāo)量寄存器中的協(xié)處理器結(jié)束代碼中的比特的值,兩項(xiàng)動(dòng)作中的一項(xiàng)操作就會(huì)發(fā)生。CLP或者恢復(fù)對(duì)下一個(gè)后續(xù)指令的取出與執(zhí)行,或者轉(zhuǎn)移并恢復(fù)對(duì)根據(jù)下表由指令字段(603)指明的指令地址的指令的取出與執(zhí)行通過(guò)啟動(dòng)一個(gè)共用處理單元中的一項(xiàng)任務(wù)來(lái)執(zhí)行指令在申請(qǐng)是09/548,109,標(biāo)題為“用于通信系統(tǒng)網(wǎng)絡(luò)處理器的協(xié)處理器結(jié)構(gòu)與方法”的共同未決的美國(guó)專(zhuān)利申請(qǐng)中給出了更為詳細(xì)的描述。本發(fā)明還涉及每個(gè)CLP中的多條指令執(zhí)行線(xiàn)索9其中每條線(xiàn)索涉及被處理的一個(gè)不同的信息包)的每一條線(xiàn)中的獨(dú)立的處理以及用于處理訪(fǎng)問(wèn)數(shù)據(jù)過(guò)程中的延遲時(shí)間的過(guò)程。每條執(zhí)行線(xiàn)索均是一個(gè)執(zhí)行一系列指令的獨(dú)立的處理過(guò)程,由于這些線(xiàn)索被允許對(duì)協(xié)處理器硬件進(jìn)行訪(fǎng)問(wèn)。樹(shù)檢索協(xié)處理器被安裝管道(pipeline)以使多條執(zhí)行線(xiàn)索與樹(shù)檢索管道中同時(shí)但以不同階段重疊進(jìn)行訪(fǎng)問(wèn)的每個(gè)協(xié)處理器連接。優(yōu)選地,本發(fā)明采用多條具有零開(kāi)銷(xiāo)的指令執(zhí)行線(xiàn)索把執(zhí)行從一條線(xiàn)索切換下一條線(xiàn)索。這些線(xiàn)索被排隊(duì)以便向共享存儲(chǔ)器提供迅速的訪(fǎng)問(wèn)分配。這些線(xiàn)索的排隊(duì)用于把最高優(yōu)先權(quán)的線(xiàn)索盡可能快地交給它的長(zhǎng)等待時(shí)間的事件。如前所述,每個(gè)PPU含有多個(gè)指令預(yù)取緩沖器,每條執(zhí)行線(xiàn)索一個(gè)。這些預(yù)取緩沖器在指令帶寬未被活動(dòng)的(active)執(zhí)行線(xiàn)索全部利用的時(shí)間間隔內(nèi)為空閑的執(zhí)行線(xiàn)索啟動(dòng)指令的預(yù)取。這有助于保證當(dāng)控制被切換至一條新的執(zhí)行線(xiàn)索時(shí),該線(xiàn)索的指令預(yù)取緩沖器將是滿(mǎn)的,這樣就避免了由于缺少可用的指令以供執(zhí)行而使該新線(xiàn)索即刻拖延的可能性。因此,對(duì)指令存儲(chǔ)器的訪(fǎng)問(wèn)優(yōu)先權(quán)受到控制以便當(dāng)前的執(zhí)行線(xiàn)索接受最高的優(yōu)先權(quán),而負(fù)責(zé)控制當(dāng)前線(xiàn)索是否拖延的執(zhí)行線(xiàn)索被賦予第二優(yōu)先權(quán)。同樣,執(zhí)行隊(duì)列底部的執(zhí)行線(xiàn)索在指令取出訪(fǎng)問(wèn)中被授與最后的優(yōu)先權(quán)。當(dāng)一條活動(dòng)的線(xiàn)索的執(zhí)行由于一個(gè)長(zhǎng)等待時(shí)間的事件(即樹(shù)檢索)而拖延時(shí)全面控制賦予下一條線(xiàn)索,或者當(dāng)執(zhí)行由于一個(gè)短等待時(shí)間的事件(即局部數(shù)據(jù)存儲(chǔ)中的協(xié)處理器操作,或指令取出等待時(shí)間)而拖延時(shí)臨時(shí)控制賦予下一條線(xiàn)索。如果臨時(shí)控制被賦予一條替代線(xiàn)索,則只要原來(lái)的線(xiàn)索一被解鎖控制即被返回給原來(lái)的線(xiàn)索。相反,如果全面控制被賦予一條替代線(xiàn)索,該替代線(xiàn)索將維持受控狀態(tài)直至其被鎖定為止。這就避免了因短等待時(shí)間的事件而浪費(fèi)周期,但還允許主要執(zhí)行線(xiàn)索更快地達(dá)到長(zhǎng)等待時(shí)間事件。否則,多條執(zhí)行線(xiàn)索可能幾乎同時(shí)達(dá)到一個(gè)長(zhǎng)等待時(shí)間的事件,這就會(huì)降低把一條線(xiàn)索的PPU執(zhí)行與一條替代線(xiàn)索的樹(shù)檢索重疊的好處。與根據(jù)等待時(shí)間進(jìn)行控制分配相關(guān)的細(xì)節(jié)在申請(qǐng)?zhí)枮?9/542,189,標(biāo)題為‘具有多條指令線(xiàn)索的網(wǎng)絡(luò)處理器’并且由代理人卷號(hào)RAL9-2000-0008標(biāo)識(shí)的未決的美國(guó)專(zhuān)利申請(qǐng)中給出。這一分配與線(xiàn)索執(zhí)行控制的細(xì)節(jié)描述如下。當(dāng)計(jì)算機(jī)首次加電時(shí),每條CLP線(xiàn)索均處于起始狀態(tài)。當(dāng)一個(gè)信息包被調(diào)至一個(gè)處理器時(shí),相應(yīng)的線(xiàn)索轉(zhuǎn)為準(zhǔn)備狀態(tài),此時(shí)它開(kāi)始要求執(zhí)行周期。一個(gè)判優(yōu)器根據(jù)該判優(yōu)器的邏輯功能按照一個(gè)布爾方程把執(zhí)行周期賦予該線(xiàn)索。如果該周期被賦予,則該線(xiàn)索從準(zhǔn)備狀態(tài)轉(zhuǎn)為執(zhí)行狀態(tài)。在執(zhí)行狀態(tài)中,該線(xiàn)索繼續(xù)提出請(qǐng)求直至由于一個(gè)時(shí)間延遲事件或被處理的信息包被排隊(duì)而使執(zhí)行拖延為止,這意味著在對(duì)該信息包執(zhí)行的代碼完成了。如果周期不再被賦予,這就意味著另一條線(xiàn)索在起控制作用。這就是該判優(yōu)器不授予周期的唯一原因。但是在這兩種狀態(tài)(準(zhǔn)備與執(zhí)行)中,該線(xiàn)索將不斷地請(qǐng)求因時(shí)間延尺事件而中止的新的執(zhí)行周期,直至達(dá)到信息包處理并且下一個(gè)信息包被排隊(duì)以便被調(diào)度為止。系統(tǒng)則返回起始狀態(tài)并等待下一個(gè)信息包。等待階段或者處理一個(gè)長(zhǎng)等待時(shí)間的事件或者處理一個(gè)短等待時(shí)間的事件。無(wú)論哪一事件出現(xiàn),處理器均要拖延并且活動(dòng)線(xiàn)索則省略等待階段。該線(xiàn)索然后停止請(qǐng)求執(zhí)行周期直至等待時(shí)間事件被完成。把一條線(xiàn)索從起始階段轉(zhuǎn)至準(zhǔn)備狀態(tài)的同一個(gè)調(diào)度操作把該線(xiàn)索的號(hào)碼輸入到一個(gè)FIFO緩沖器中以便第一個(gè)信息包被傳至的該線(xiàn)索成為具有最高優(yōu)先權(quán)的線(xiàn)索。后續(xù)的調(diào)度操作把附加的線(xiàn)索的號(hào)碼提供到該FIFO中。FIFO的最高優(yōu)先權(quán)位置中的線(xiàn)索號(hào)碼將留在該位置直至它遇到一個(gè)長(zhǎng)等待時(shí)間的事件,于是該線(xiàn)索返回FIFO的起始部分并從最高優(yōu)先權(quán)的線(xiàn)索變?yōu)樽畹蛢?yōu)先權(quán)的線(xiàn)索。一個(gè)短等待時(shí)間的事件則不會(huì)使該線(xiàn)索失去在FIFO緩沖器中的優(yōu)先權(quán)。如果該線(xiàn)已經(jīng)完成對(duì)該信息包的處理,則該信息包被排隊(duì)以便傳至一個(gè)輸出端口并且該線(xiàn)索號(hào)碼則從FIFO緩沖器中刪除。新的信息包調(diào)自一個(gè)高級(jí)別控制器(未示出)。該控制器選擇一條線(xiàn)索與一個(gè)處理器來(lái)處理每個(gè)信息包。這一選定向FIFO緩沖器提供一個(gè)輸入命令。它還向狀態(tài)裝置提供一個(gè)輸入信號(hào)以令該裝置從起始狀態(tài)轉(zhuǎn)向準(zhǔn)備狀態(tài)。與來(lái)自外部控制器的命令一道,該信息包將被調(diào)至的線(xiàn)索的號(hào)碼也必須從該控制器傳遞到FIFO。基本上有兩種類(lèi)型的事件可使執(zhí)行拖延,導(dǎo)致一個(gè)短中斷的那些事件和導(dǎo)致當(dāng)前程序流的一個(gè)擴(kuò)展中斷的那些事件。短中斷可以由要求會(huì)因程序流中的一個(gè)變化而被重新填充的指令預(yù)取隊(duì)列的一個(gè)轉(zhuǎn)移指令引起。另一方面,在等待一個(gè)協(xié)處理器執(zhí)行一個(gè)與處理器的局部存儲(chǔ)器中的數(shù)據(jù)相關(guān)的任務(wù)時(shí)程序可以拖延。這方面的一個(gè)例子是用于計(jì)算一個(gè)經(jīng)過(guò)修改的幀頭字段的新的校驗(yàn)和的一個(gè)校驗(yàn)和協(xié)處理器。如果等待時(shí)間小于25個(gè)處理器周期則一個(gè)事件被認(rèn)為是一個(gè)短中斷。長(zhǎng)等待時(shí)間的事件通常采用一個(gè)大于25個(gè)而通常是多達(dá)50至100個(gè)處理器周期的等待時(shí)間。這些都會(huì)對(duì)總本性能產(chǎn)生更為顯著的影響。有多種不同的方法用于判定一個(gè)長(zhǎng)等待時(shí)間的或短等待時(shí)間的事件。等待時(shí)間的長(zhǎng)度可受程序員的控制,這樣,硬件或其配置就不是判定中的一個(gè)因素了。另一方面,一個(gè)閥值寄存器可被置以一個(gè)25個(gè)周期的閥值,而硬件能夠確定一個(gè)操作會(huì)要求多少個(gè)周期并根據(jù)該確定自動(dòng)作出決定。一個(gè)協(xié)處理器指令是處理器執(zhí)行的指令的一個(gè)類(lèi)型。字段中的某些比特確定哪個(gè)協(xié)處理器被指定。一比特用于把具體的指令定義為一個(gè)長(zhǎng)或一個(gè)短等待時(shí)間的事件。這樣,一個(gè)程序員能定義對(duì)控制存儲(chǔ)器的兩個(gè)相同的訪(fǎng)問(wèn),一個(gè)定義為一個(gè)長(zhǎng)等待時(shí)間的事件而另一個(gè)定義為一個(gè)短等待時(shí)間的事件,就是可能的。線(xiàn)索執(zhí)行控制功能被設(shè)計(jì)來(lái)把這些長(zhǎng)等待時(shí)間的事件的影響降至最低。因此,一個(gè)長(zhǎng)等待時(shí)間的事件將導(dǎo)致對(duì)向一條替代線(xiàn)索的轉(zhuǎn)換的全面控制,而一個(gè)短等待時(shí)間的事件則只導(dǎo)致向一條替代線(xiàn)索臨的臨時(shí)轉(zhuǎn)換。協(xié)議處理器單元PPU及核心語(yǔ)言處理器的基本細(xì)節(jié)為該
技術(shù)領(lǐng)域:
的普通技術(shù)人員所知,而且除了已被修改或補(bǔ)充而成為網(wǎng)絡(luò)處理器系統(tǒng)的部分總體結(jié)構(gòu)以及與特定功能的協(xié)處理器和其他系統(tǒng)部件相互連接的那部分之外這些細(xì)節(jié)并不包括本發(fā)明的部分。特殊的細(xì)節(jié)包括在本發(fā)明中使用的獨(dú)立的協(xié)處理器的結(jié)構(gòu)與程序設(shè)計(jì)并不被認(rèn)為包括本發(fā)明的一部分。雖然已結(jié)合其實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是顯然,通過(guò)上面的講解,許多的替換,修改,與變化對(duì)于本
技術(shù)領(lǐng)域:
的技術(shù)人員而言將是可以理解的。因此,本發(fā)明意在把諸如這些替換,修改以及變更均囊括于所附的權(quán)利要求的精神與范圍之內(nèi)。權(quán)利要求1.在用于控制一個(gè)網(wǎng)絡(luò)處理器的程序設(shè)計(jì)能力的一個(gè)嵌入式處理器組合的操作中,該處理器組合包括多個(gè)協(xié)議處理器單元(PPU),每個(gè)PPU至少有一個(gè)核心語(yǔ)言處理器(CLP),每個(gè)CLP至少有兩條代碼線(xiàn)索,每個(gè)PPU使用多個(gè)用于為該P(yáng)PU執(zhí)行特定任務(wù)的協(xié)處理器,和在每個(gè)CLP與該協(xié)處理器之間提供訪(fǎng)問(wèn)的多個(gè)邏輯協(xié)處理器接口。2.在根據(jù)權(quán)利要求1的操作中,其特征在于該協(xié)處理器包括支持每個(gè)CLP的多條代碼線(xiàn)索的專(zhuān)用的協(xié)處理器。3.在根據(jù)權(quán)利要求1的操作中,其特征在于該協(xié)處理器是從包括一個(gè)樹(shù)檢索協(xié)處理器,一個(gè)校驗(yàn)和協(xié)處理器,一個(gè)串拷貝協(xié)處理器,一個(gè)排隊(duì)協(xié)處理器,一個(gè)數(shù)據(jù)存儲(chǔ)協(xié)處理器,一個(gè)CAB協(xié)處理器,一個(gè)計(jì)數(shù)器協(xié)處理器和一個(gè)規(guī)則協(xié)處理器的一個(gè)協(xié)處理器組中挑選出來(lái)的。4.在根據(jù)權(quán)利要求3的操作中還包括一個(gè)用于確定多條線(xiàn)索之間的優(yōu)先權(quán)的協(xié)處理器執(zhí)行接口判優(yōu)器。5.在根據(jù)權(quán)利要求3的操作中包括一個(gè)確定數(shù)據(jù)線(xiàn)索之間的優(yōu)先權(quán)的協(xié)處理器數(shù)據(jù)接口判優(yōu)器。6.在根據(jù)權(quán)利要求3的操作中在每條線(xiàn)索和至少一個(gè)協(xié)處理器之間還包括一個(gè)FIFO緩沖器。7.在根據(jù)權(quán)利要求6的操作中,其特征在于該FIFO緩沖器位于每條線(xiàn)索與計(jì)數(shù)器協(xié)處理器之間。8.在根據(jù)權(quán)利要求6的操作中,其特征在于該FIFO緩沖器位于每條線(xiàn)索與規(guī)則協(xié)處理器之間。9.包括用于控制一個(gè)網(wǎng)絡(luò)處理的程序設(shè)計(jì)能力的一個(gè)嵌入式處理器組合的一個(gè)網(wǎng)絡(luò)處理系統(tǒng),所述組合包括多個(gè)協(xié)議處理器單元(PPU),每個(gè)PPU含有至少一個(gè)核心語(yǔ)言處理器(CLP),每個(gè)CLP至少有兩條代碼線(xiàn)索;用于為該系統(tǒng)執(zhí)行特定任務(wù)的多個(gè)協(xié)處理器,和與每個(gè)CLP一起訪(fǎng)問(wèn)和共享協(xié)處理器資源的多個(gè)協(xié)處理器接口。10.權(quán)利要求9的網(wǎng)絡(luò)處理系統(tǒng),其特征在于該協(xié)處理器接口專(zhuān)用于支持每個(gè)CLP的代碼線(xiàn)索。11.權(quán)利要求10的網(wǎng)絡(luò)處理系統(tǒng),其特征在于該協(xié)處理器是從包括一個(gè)樹(shù)檢索協(xié)處理器,校驗(yàn)和協(xié)處理器,串拷貝協(xié)處理器,排隊(duì)協(xié)處理器,數(shù)據(jù)存儲(chǔ)協(xié)處理器,CAB協(xié)處理器,計(jì)數(shù)器協(xié)處理器和規(guī)則協(xié)處理器的一個(gè)協(xié)處理器組中挑選出來(lái)的。12.權(quán)利要求10的網(wǎng)絡(luò)處理系統(tǒng),其特征在于在每條線(xiàn)索和至少一個(gè)協(xié)處理器之間還包括一個(gè)FIFO緩沖器。13.權(quán)利要求12的網(wǎng)絡(luò)處理系統(tǒng),其特征在于該FIFO緩沖器位于每條線(xiàn)索和計(jì)數(shù)器協(xié)處理器之間。14.根據(jù)權(quán)利要求12的網(wǎng)絡(luò)處理系統(tǒng),其特征在于該FIFO緩沖器位于每條線(xiàn)索與規(guī)則協(xié)處理器之間。15.權(quán)利要求9的網(wǎng)絡(luò)處理系統(tǒng),其特征在于包括由CLP的線(xiàn)索執(zhí)行的產(chǎn)生控制協(xié)處理器操作的命令的特定操作指令,這些命令流經(jīng)CLP與協(xié)處理器之間的接口。16.根據(jù)權(quán)利要求15的網(wǎng)絡(luò)處理系統(tǒng),其特征在于該指令用于啟動(dòng)特定的協(xié)處理器操作的條件執(zhí)行。17.根據(jù)權(quán)利要求15的網(wǎng)絡(luò)處理系統(tǒng),其特征在于該指令根據(jù)響應(yīng)一個(gè)特定的協(xié)處理器命令而訪(fǎng)問(wèn)數(shù)據(jù)的預(yù)期的響應(yīng)時(shí)間起動(dòng)系統(tǒng)來(lái)識(shí)別長(zhǎng)等待時(shí)間的事件與短等待時(shí)間的事件,并且當(dāng)一條活動(dòng)的線(xiàn)索的執(zhí)行由于一個(gè)長(zhǎng)等待時(shí)間的事件而拖延時(shí)把全面控制賦予另一條線(xiàn)索,或者當(dāng)一條活動(dòng)的線(xiàn)的執(zhí)行由于一個(gè)短等待時(shí)間的事件而拖延時(shí)把臨時(shí)控制賦予另一條線(xiàn)索。18.一種控制一個(gè)嵌入式處理器組合內(nèi)的指令執(zhí)行的方法,該組合含有多個(gè)協(xié)議處理器單元(PPU),每個(gè)協(xié)議處理器單元含有至少一個(gè)核心語(yǔ)言處理器(CLP),每個(gè)CLP至少有兩條代碼線(xiàn)索,該方法包括每個(gè)PPU使用用于執(zhí)行PPU的特定任務(wù)的多個(gè)協(xié)處理器,以及在協(xié)處理器與每個(gè)CLP之間提供訪(fǎng)問(wèn)的多個(gè)邏輯協(xié)處理器接口的使用。19.根據(jù)權(quán)利要求18的方法,其特征在于包括支持PPU的多條代碼線(xiàn)索的專(zhuān)用的協(xié)處理器的使用。20.根據(jù)權(quán)利要求19的方法,其特征在于一個(gè)或多個(gè)協(xié)處理器選自包括一個(gè)樹(shù)檢索協(xié)處理器,校驗(yàn)和協(xié)處理器,串拷貝協(xié)處理器,排隊(duì)協(xié)處理器,數(shù)據(jù)存儲(chǔ)協(xié)處理器,CAB協(xié)處理器,計(jì)數(shù)器協(xié)處理器和規(guī)則協(xié)處理器的協(xié)處理器組。21.根據(jù)權(quán)利要求20的方法,其特征在于一個(gè)協(xié)處理器執(zhí)行接口判優(yōu)器用于確定執(zhí)行線(xiàn)索間的優(yōu)先權(quán)。22.根據(jù)權(quán)利要求20的方法,其特征在于一個(gè)協(xié)處理器數(shù)據(jù)接口判優(yōu)器用于確定數(shù)據(jù)線(xiàn)索間的優(yōu)先權(quán)。23.根據(jù)權(quán)利要求20的方法,其特征在于還包括在每條線(xiàn)索與至少一個(gè)協(xié)處理器之間提供一個(gè)FIFO緩沖器。24.根據(jù)權(quán)利要求23的方法,其特征在于該FIFO緩沖器位于每條線(xiàn)索與計(jì)數(shù)器協(xié)處理器之間。25.根據(jù)權(quán)利要求23的方法,其特征在于該FIFO緩沖器接口位于每條線(xiàn)索與規(guī)則協(xié)處理器之間。26.根據(jù)權(quán)利要求18的方法,其特征在于包括提供由CLP執(zhí)行的生成用于控制協(xié)處理器操作的命令的專(zhuān)用操作指令的步驟,這些命令流經(jīng)CLP與協(xié)處理器之間的接口。27.根據(jù)權(quán)利要求26的方法,其特征在于該操作指令啟動(dòng)特定的協(xié)處理器操作的條件執(zhí)行。28.根據(jù)權(quán)利要求27的方法,其特征在于該執(zhí)行或者是直接的或者是間接。29.根據(jù)權(quán)利要求18的方法,其特征在于包括提供指令的步驟,提供的指令根據(jù)對(duì)一個(gè)特定的協(xié)處理器命令的預(yù)期的響應(yīng)時(shí)間啟動(dòng)系統(tǒng)識(shí)別長(zhǎng)等待時(shí)間的事件與短等待時(shí)間的事件,并且當(dāng)一條活動(dòng)的線(xiàn)索的執(zhí)行由于一個(gè)長(zhǎng)等待時(shí)間的事件而拖延時(shí)把全面控制賦予另一條線(xiàn)索,或者當(dāng)一條活動(dòng)的線(xiàn)索的執(zhí)行由于一個(gè)短等項(xiàng)等時(shí)間的事件而拖延時(shí)把臨時(shí)控制賦予另一條線(xiàn)索。全文摘要一個(gè)嵌入式的處理器組合含有多個(gè)協(xié)議處理器單元(PPU)。每個(gè)單元包括至少一個(gè),而最好是兩個(gè)獨(dú)立運(yùn)行的核心語(yǔ)言處理器(CLP)。每個(gè)CLP支持通過(guò)邏輯協(xié)處理器的執(zhí)行或數(shù)據(jù)接口與用于每個(gè)PPU的多個(gè)專(zhuān)用的協(xié)處理器相互作用的雙線(xiàn)線(xiàn)索。操作指令啟動(dòng)PPU識(shí)別長(zhǎng)與短等待時(shí)間的事件并根據(jù)這一識(shí)別控制與轉(zhuǎn)移線(xiàn)索執(zhí)行的優(yōu)先權(quán)。該指令還根據(jù)某些特定事件的出現(xiàn)與未出現(xiàn),啟動(dòng)特定協(xié)處理器操作的條件執(zhí)行。文檔編號(hào)G06F13/14GK1342940SQ0113245公開(kāi)日2002年4月3日申請(qǐng)日期2001年9月5日優(yōu)先權(quán)日2000年9月6日發(fā)明者戈登·泰勒·戴維斯,馬可·C.·海德斯,羅斯·博伊德·里文斯,馬克·安舍尼·里納爾迪申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司