專(zhuān)利名稱(chēng)::并行處理器中的多線程執(zhí)行的制作方法并行處理器中的多線程執(zhí)行本申請(qǐng)是申請(qǐng)日2000.08.17,申請(qǐng)?zhí)枮?0815246.2(國(guó)際申請(qǐng)?zhí)枮镻CT/US00/22650),名稱(chēng)為"在并行處理器中執(zhí)行多線程"的申請(qǐng)的分案申請(qǐng)。
背景技術(shù):
:本發(fā)明涉及一種并行處理器。并行處理是在計(jì)算處理中進(jìn)行并發(fā)事件信息處理的有效形式。并行處理需要在計(jì)算機(jī)同時(shí)執(zhí)行許多程序,與串行處理不同。在并行處理器中的環(huán)境中,并行處理涉及同時(shí)做多件事。與在一個(gè)站串行執(zhí)行全部任務(wù)的串行范例或在專(zhuān)門(mén)的站執(zhí)行任務(wù)的流不機(jī)不同,并行處理配備多個(gè)站,每個(gè)站能執(zhí)行全部任務(wù)。也就是說(shuō),全部的站或多個(gè)站對(duì)問(wèn)題的相同或共同要素一般同時(shí)且獨(dú)立地工作。有些問(wèn)題適合用并行處理解決。因此,計(jì)算機(jī)處理類(lèi)型包括單指令流單數(shù)流型,串行的馮.諾依曼型計(jì)算機(jī)中存在單一指令流。第2種處理類(lèi)型是單指令流多數(shù)據(jù)流處理(SIMD)。這種處理能有多個(gè)算術(shù)邏輯處理器和一個(gè)控制處理器。每一處理器在鎖步執(zhí)行數(shù)據(jù)操作。這些處理器由控制處理器進(jìn)行同步。第3種類(lèi)型是多指令流單數(shù)據(jù)流(MISD)處理。這種處理具有流經(jīng)執(zhí)行不同指令流的線性處理器陣的相同數(shù)據(jù)流。第4種是多指令流多數(shù)據(jù)流(MIMD)處理。這種處理采用多個(gè)單元器,每-一處理器執(zhí)行自己的指令流,以處理供給各處理器的數(shù)據(jù)流。多指令流多數(shù)據(jù)流(M頂D)處理器可具有若干指令處理單元,因而有若干數(shù)據(jù)流。
發(fā)明內(nèi)容根據(jù)本發(fā)明的一個(gè)方面,微控制功能執(zhí)行單元包含存放微程序的控制存儲(chǔ)器和保持多個(gè)微程序計(jì)算器的微引擎控制器。該單元還包含對(duì)指令進(jìn)行譯碼的譯碼邏輯和一個(gè)現(xiàn)境事件仲裁器,該仲裁器響應(yīng)外部標(biāo)志,判斷微控制功能執(zhí)行單元中可執(zhí)行的多個(gè)線程中的哪一個(gè)升級(jí)到執(zhí)行狀態(tài)。本發(fā)明的一個(gè)或多個(gè)方面可提供以下一個(gè)或多個(gè)優(yōu)點(diǎn)。微引擎能處理多個(gè)硬件線程。每一微引擎保持多個(gè)硬件形式的程序計(jì)數(shù)器和該程序計(jì)數(shù)器相關(guān)聯(lián)的狀態(tài)。實(shí)際上,相應(yīng)的多個(gè)線程組可在一微引擎上同時(shí)工作,但任何時(shí)僅有一個(gè)線程真正運(yùn)作。硬件環(huán)境對(duì)換使任務(wù)完成同步。舉例來(lái)說(shuō),2個(gè)線程可試圖存取相同共用資源。資源完成一個(gè)微引擎線程環(huán)境所請(qǐng)求的任務(wù)時(shí),該資源便回報(bào)一通知操作完成的標(biāo)志。微引擎收到該標(biāo)志時(shí),便可判定開(kāi)通哪一線程。硬件多線程處理可用于使微引擎上的第1線程啟動(dòng)例如存取存儲(chǔ)器這種事務(wù)。存儲(chǔ)器存取期間,若微引擎例如僅具有一個(gè)可運(yùn)作的線程,該微引擎就會(huì)休眠直到從存儲(chǔ)器返回?cái)?shù)據(jù)為止。通過(guò)在微引擎內(nèi)利用硬件環(huán)境對(duì)換,該硬件環(huán)境對(duì)換使具有獨(dú)行程序計(jì)數(shù)器的其他環(huán)境能在相同微引擎中執(zhí)行。因此,第1線程等待存儲(chǔ)器送回讀出數(shù)據(jù)的同時(shí),可執(zhí)行另一線程。這些特征可擴(kuò)展到微引擎中同時(shí)工作的多個(gè)線程,以便在數(shù)據(jù)通路中處理更多工作。附圖簡(jiǎn)要說(shuō)明圖1是采用基于硬件的多線程處理器的通信系統(tǒng)的框圖。圖2是圖1中基于硬件的多線程處理器的具體框圖。圖3是圖1和圖2中基于硬件的多線程處理器所用的微引擎功能單元的框圖。圖3—3是圖3中微引擎流水線的框圖。圖3—4是表示環(huán)境切換指令格式的示意圖。圖3—5是表示通用寄存器地址安排的框圖。圖4是基于硬件的多線程處理器中所用的強(qiáng)化帶寬操作用存儲(chǔ)控制器的框圖。圖4一3是表示圖4中SDRAM控制器的仲裁策略的流程圖。圖4—4是說(shuō)明對(duì)SDRAM控制器進(jìn)行優(yōu)化的好處的時(shí)序圖。圖5是基于硬件的多線程處理器中所用的等待時(shí)間有限的操作用存儲(chǔ)控制器的框屈。圖5—3是表示對(duì)SRAM控制器進(jìn)行優(yōu)化的好處的時(shí)序圖。圖6是圖1中處理器的通信總線接口的框圖。說(shuō)明體系結(jié)構(gòu)參照?qǐng)D1,通信系統(tǒng)IO包括一并行、基于硬件的多線程處理器12。該基于硬件的多線程處理器12與諸如PCI總線14這種總線、存儲(chǔ)器系統(tǒng)16和第二總線18連接。系統(tǒng)IO對(duì)可分解為并行子任務(wù)或功能的任務(wù)尤其有用。具體來(lái)說(shuō),硬件多線程處理器12對(duì)那些面向帶寬的任務(wù)而非面向等待時(shí)間的任務(wù)有用。硬件多線程處理器12具有多重微引擎22,分別配備可對(duì)一任務(wù)同時(shí)作用和獨(dú)立工作的多重硬件控制的線程。硬件多線程處理器12還包括一中央控制器20,該控制器有助于對(duì)硬件多線程處理器12的其他資源加載微碼控制,并執(zhí)行其他通用計(jì)算機(jī)類(lèi)型功能,諸如處理協(xié)議、異常以及微引擎在邊界狀態(tài)等條件下傳出數(shù)據(jù)分組進(jìn)行更為細(xì)節(jié)處理場(chǎng)合對(duì)分組處理的額外支持。一實(shí)施例中,處理器20是一基于StrongArm(Arm是英國(guó)Arm有限公司的商標(biāo))的體系結(jié)構(gòu)。通用微處理器20具有一操作系統(tǒng)。通過(guò)該操作系統(tǒng),處理器20可調(diào)用功能在微引擎22a22f上操作。處理器20可利用任何得到支持的操作系統(tǒng),最好用實(shí)時(shí)操作系統(tǒng)。對(duì)按StrongArm結(jié)構(gòu)實(shí)現(xiàn)的核心處理器來(lái)說(shuō),可用諸如微軟NT實(shí)時(shí)、VXWorks和"CUS這種操作系統(tǒng)和可從互聯(lián)網(wǎng)得到的免費(fèi)件操作系統(tǒng)。硬件多線程處理器12還包含多個(gè)功能微引擎22a22f。這些功能微引擎(微引擎)22a22f分別在硬件及其關(guān)聯(lián)狀態(tài)方面保持多個(gè)程序計(jì)數(shù)器。實(shí)際上,各微引擎22a22f中可同時(shí)使相應(yīng)的多組線程工作,而任何時(shí)候僅一個(gè)真正操作。一實(shí)施例中,存在6個(gè)微引擎22a22f,如圖所示,每一微引擎22a22f能處理4個(gè)硬件線程。6個(gè)微引擎22a22f以包括存儲(chǔ)器系統(tǒng)16以及總線接口24和28在內(nèi)的共用資源進(jìn)行工作。存儲(chǔ)器系統(tǒng)16包含同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)的控制器26a和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)的控制器26b。SDRAM存儲(chǔ)器16a和SDRAM控制器26a通常用于處理大量數(shù)據(jù),例如處理來(lái)自網(wǎng)絡(luò)數(shù)據(jù)分組的網(wǎng)絡(luò)有效負(fù)載。SRAM控制器26b和SRAM存儲(chǔ)器16b在網(wǎng)絡(luò)實(shí)施例當(dāng)中實(shí)現(xiàn)較小等待時(shí)間、迅速存取任務(wù),例如存取查找表、核心處理器20的存儲(chǔ)器等。6個(gè)微引擎22a22f根據(jù)數(shù)據(jù)特性存取SDRAM16a或SRAM16b。因此,對(duì)SR雄存入并讀取短等待時(shí)間且小帶寬的數(shù)據(jù),而對(duì)SDRAM則存入并讀取等待時(shí)間不重要的大帶寬數(shù)據(jù)。微引擎22a22f可對(duì)SDRAM控制器26a或SR認(rèn)控制器26b執(zhí)行存儲(chǔ)器指針指令。可通過(guò)SRAM或SDRAM的存儲(chǔ)器存取說(shuō)明硬件多線程的優(yōu)點(diǎn)。舉例來(lái)說(shuō),一線程0所請(qǐng)求的微引擎對(duì)SRAM的存取會(huì)使SRAM控制器26b啟動(dòng)對(duì)SRAM存儲(chǔ)器16b的存取。SRAM控制器控制對(duì)SRAM總線的仲裁,對(duì)SRAM16進(jìn)行存取,從SRAM16b讀取數(shù)據(jù),并使數(shù)據(jù)返回至提出請(qǐng)求的微引擎22a-22b。SRAM存取期間,若微引擎(例如22a)僅具有一個(gè)可運(yùn)作的線程,該微引擎會(huì)休眠直到從SRAM返回?cái)?shù)據(jù)。通過(guò)采用每一微引擎22a22f內(nèi)的硬件環(huán)境對(duì)換,該硬件環(huán)境對(duì)換能使具有獨(dú)特程序計(jì)數(shù)器的其他環(huán)境在該相同微引擎中執(zhí)行。因此,第一線程(例如線程0)等待所讀出數(shù)據(jù)返回的同時(shí),另一線程例如線程1可起作用。執(zhí)行期間,線程1可存取SDRAM存儲(chǔ)器16a。線程1在SDRAM單元上運(yùn)作,線程0在SRAM單元上運(yùn)作的同時(shí),新線程例如線程2可在微引擎22a中現(xiàn)場(chǎng)運(yùn)作。線程2可運(yùn)作一些時(shí)間直到該線程需要存取存儲(chǔ)器或執(zhí)行某些其他長(zhǎng)等待時(shí)間操作,諸如對(duì)總線接口進(jìn)行存取。因此,處理器12可同時(shí)使總線運(yùn)作、SRAM運(yùn)作和SDRAM運(yùn)作均得到完成,或由一個(gè)微引擎22a在其上運(yùn)作,全部完成或正在工作的總線操作、SR認(rèn)操作和SDR認(rèn)操作,并且使另一個(gè)線程可用于處理數(shù)據(jù)通路中更多的工作。硬件環(huán)境對(duì)換還使任務(wù)完成同步。舉例來(lái)說(shuō),2個(gè)線程會(huì)同時(shí)命中相同的共用資源例如SRAM。諸如FBUS(F總線)接口28、SRAM控制器26a和SD畫(huà)26b等每一個(gè)獨(dú)立功能單元當(dāng)其完成其中一個(gè)微引擎線程環(huán)境所請(qǐng)求的任務(wù)時(shí),便回報(bào)一通知完成運(yùn)作的標(biāo)志。微引擎收到該標(biāo)志,便能判斷開(kāi)通哪一線程。利用硬件多線程處理器的一個(gè)例子是用作網(wǎng)絡(luò)處理器。作為網(wǎng)絡(luò)處理器,硬件多線程處理器12作為與諸如媒體存取控制器(例如10/100BaseT8進(jìn)制MAC13a或千兆位以太網(wǎng)13b)這種網(wǎng)絡(luò)裝置的接口。通常作為一網(wǎng)絡(luò)處理器,硬件多線程處理器12可作為與任何類(lèi)型通信設(shè)備的接口或收發(fā)大量數(shù)據(jù)的接口。在聯(lián)網(wǎng)應(yīng)用中起作用的通信系統(tǒng)10可從設(shè)備13a和13b接收多個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組,以并行方式處理這些數(shù)據(jù)分組??刹捎糜布嗑€程處理器12獨(dú)立處理各網(wǎng)絡(luò)數(shù)據(jù)分組。處理器12的另一應(yīng)用例是一附錄處理器用打印引擎或作為存儲(chǔ)子系統(tǒng)(即RAID磁盤(pán)存儲(chǔ)器)的處理器。再一應(yīng)用是作為配對(duì)引擎。舉例來(lái)說(shuō),在證券業(yè)中,電子交易的出現(xiàn)要求用電子配對(duì)引擎來(lái)搓合買(mǎi)方和賣(mài)方的報(bào)單??稍谙到y(tǒng)10上完成上述和其他并行任務(wù)。處理器12包括一將該處理器與第2總線18連接的總線接口28。一實(shí)施例中,總線接口28將處理器12與所謂的FBUS18(FIFO總線)連接。FBUS接口28負(fù)責(zé)控制處理器12和形成該處理器與FBUS18的接口。FBUS18是64位寬的FIFO總線,用于形成與媒體存取控制器(MAC)設(shè)備的接口。處理器12包括一第二接口(例如PCI總線接口24),該接口將駐留PCI總線14上的其他系統(tǒng)組成部分與處理器12連接。PCI總線接口24提供一至存儲(chǔ)器16(例如SDR認(rèn)存儲(chǔ)器16a)的高速數(shù)據(jù)通路24a。通過(guò)該通路,數(shù)據(jù)可從SDRAM16a通過(guò)直接存儲(chǔ)器存取(DMA)的傳送經(jīng)PCI總線14轉(zhuǎn)移。硬件多線程處理器12支持圖像傳送。硬件多線程處理器12能用多個(gè)DMA通道,因而若畫(huà)A傳送的一個(gè)目標(biāo)忙,另一讓A通道便可接管PCI總線對(duì)另一目標(biāo)傳送信息,以維持處理器12高效。此外,PCI總線接口還支持目標(biāo)和主機(jī)操作。目標(biāo)操作是總線14上的從屬裝置通過(guò)對(duì)該操作起從屬作用的讀和寫(xiě)存取SDR細(xì)場(chǎng)合的操作。主機(jī)操作中,處理器核心20直接對(duì)PCI接口24收、發(fā)數(shù)據(jù)。每一功能單元連接1條或多條內(nèi)部總線。下文將說(shuō)明,內(nèi)部總線是32位的雙總線(即1條總線用于讀,另1條用于寫(xiě))。硬件多線程處理器12結(jié)構(gòu)上還做成處理器12中內(nèi)部總線帶寬之和大于處理器12所接外部總線的帶寬。處理器12包含內(nèi)部核心處理器總線,例如ASB總線(高級(jí)系統(tǒng)總線AdvancedsystemBus),該總線將處理器核心接到存儲(chǔ)控制器26a、26b和ASB譯碼器30,后文將說(shuō)明。ASB總線是配合StrongArm處理器核心用的所謂AMBA總線的子集。處理器12還包含將微引擎單元接到SRAM控制器26b、ASB變換器30和FBUS接口28的專(zhuān)用總線34。存儲(chǔ)器總線38將存儲(chǔ)控制器26a、26b接到總線接口24、28和包含用于引導(dǎo)操作等的快速擦寫(xiě)R0M16c的存儲(chǔ)器系統(tǒng)16。參照?qǐng)D2,每一微引擎22a22f包含仲裁器,檢查標(biāo)志以判定可提供的工作線程。來(lái)自任一微引擎22a22f的任何線程都可訪問(wèn)SDRAM控制器26a、SR細(xì)控制器26b或FBUS接口28。存儲(chǔ)控制器26a和26b分別包含多個(gè)隊(duì)列,以存放待處理的存儲(chǔ)器指針請(qǐng)求。這些隊(duì)列保持存儲(chǔ)器指針的次序或者安排存儲(chǔ)器指針來(lái)優(yōu)化存儲(chǔ)器帶寬。舉例來(lái)說(shuō),若線程0相對(duì)線程1獨(dú)立或者無(wú)關(guān),線程1和O便沒(méi)有理由無(wú)法不按順序完成其存儲(chǔ)器指針指向SRAM單元。微引擎22a22f對(duì)存儲(chǔ)控制器26a和26b發(fā)布存儲(chǔ)器指針請(qǐng)求。微引擎22a22f以足夠的存儲(chǔ)器指針操作充滿存儲(chǔ)器子系統(tǒng)26a和26b,使得該存儲(chǔ)器子系統(tǒng)26a和26b成為處理器12運(yùn)作的瓶頸。若存儲(chǔ)器子系統(tǒng)16充滿本質(zhì)上獨(dú)立的存儲(chǔ)器請(qǐng)求,處理器12便可進(jìn)行存儲(chǔ)器指針?lè)诸?lèi)。該存儲(chǔ)器指針?lè)诸?lèi)改善能達(dá)到的存儲(chǔ)器帶寬。如下文所述,存儲(chǔ)器指針?lè)诸?lèi)減少存取SRAM時(shí)所出現(xiàn)的空載時(shí)間或空泡。通過(guò)存儲(chǔ)器指針指向SR雄,在讀寫(xiě)之間對(duì)信號(hào)線電流方向的切換,產(chǎn)生等待SRAM16b與SRAM控制器26b連接的導(dǎo)體上的電流穩(wěn)定的空泡或空載時(shí)間。也就是說(shuō),在總線上驅(qū)動(dòng)電流的驅(qū)動(dòng)器需要在狀態(tài)變化前穩(wěn)定。因此,讀后接著寫(xiě)的重復(fù)周期會(huì)使峰值帶寬下降。存儲(chǔ)器指針?lè)诸?lèi)允許組織指針指向存儲(chǔ)器,使得長(zhǎng)串的讀出后面接著長(zhǎng)串的寫(xiě)入。這可用于使流水線的空載時(shí)間最少,以有效達(dá)到接近最大可用帶寬。指針?lè)诸?lèi)有助于保持并行硬件環(huán)境線程。對(duì)于SDRAM,指針?lè)诸?lèi)使一存儲(chǔ)組對(duì)另一存儲(chǔ)組可隱藏預(yù)充電。具體而言,若存儲(chǔ)器系統(tǒng)166組織成奇數(shù)存儲(chǔ)組和偶數(shù)存儲(chǔ)組,而處理器在奇數(shù)存儲(chǔ)組上工作,存儲(chǔ)控制器便可在偶數(shù)存儲(chǔ)組啟動(dòng)預(yù)充電。若存儲(chǔ)器指針在奇數(shù)和偶數(shù)存儲(chǔ)組之間交替變化,便可預(yù)充電。通過(guò)安排存儲(chǔ)器指針的順序交替訪問(wèn)相對(duì)存儲(chǔ)組,處理器12改善SDRAM的帶寬。此外,還可采用其他優(yōu)化。舉例來(lái)說(shuō),可采用可歸并的運(yùn)作在存儲(chǔ)器存取前歸并場(chǎng)合的歸并優(yōu)化、通過(guò)檢査地址不重新打開(kāi)存儲(chǔ)器開(kāi)放頁(yè)面場(chǎng)合的開(kāi)放頁(yè)面優(yōu)化、將在下面說(shuō)明的鏈接以及刷新機(jī)制。FBUS接口28支持MAC裝置所支持的各端口用的收和發(fā)標(biāo)志,還支持表明業(yè)務(wù)何時(shí)得到保證的中斷標(biāo)志。FBUS接口28還包含對(duì)來(lái)自FBUS18的輸入數(shù)據(jù)組首部進(jìn)行處理的控制器28a??刂破?8a提取該分組的首部,并且在SR認(rèn)中進(jìn)行可微編程源/宿/協(xié)議散列査找(用于地址平滑)。如果散列未成功分辨,將分組首部送到處理器核心20進(jìn)行附加處理。FBUS接口28支持下列內(nèi)部數(shù)據(jù)事務(wù)至/來(lái)自微引擎從SDRAM單元寫(xiě)入讀出至SDRAMFBUS18是標(biāo)準(zhǔn)業(yè)界總線,其中包含例如64位寬的數(shù)據(jù)總線、地址邊帶控制和讀/寫(xiě)控制。FBUS接口28能用一系列輸入輸出FIF029a29b輸入大量數(shù)據(jù)。微引擎22a22f從FIF029a29b取得數(shù)據(jù),命令SDRAM控制器26a將來(lái)自己從總線18上的裝置得到數(shù)據(jù)的接收FIFO的數(shù)據(jù)移入FBUS接口28。該數(shù)FBUS單元(共用總線SRAM)FBUS單元(經(jīng)專(zhuān)用總線)FBUS單元(經(jīng)MBUS)據(jù)可通過(guò)存儲(chǔ)控制器26a,經(jīng)直接存儲(chǔ)器存取送到SDRAM存儲(chǔ)器16a。同樣,微引擎能將從SDRAM26a至接口28的數(shù)據(jù)經(jīng)FBUS接口28移出到FBUS18。在微引擎之間分配數(shù)據(jù)功能。經(jīng)由命令請(qǐng)求連接SRAM26a、SDRAM26b和FBUS28。命令請(qǐng)求可以是存儲(chǔ)器請(qǐng)求或FBUS請(qǐng)求。例如,命令請(qǐng)求能將數(shù)據(jù)從位于微引擎22a的寄存器移到共用資源,例如移到SDRAM位置、SRAM位置、快速擦寫(xiě)存儲(chǔ)器或某MAC地址。這些命令送出到每一功能單元和共用資源。然而,共用資源不需要保持?jǐn)?shù)據(jù)的局部緩存。反之,共用資源存取位于微引擎內(nèi)部的分布數(shù)據(jù)。這使微引擎22a22f可局部存取數(shù)據(jù),而不是對(duì)總線上存取的仲裁,冒爭(zhēng)用總線的風(fēng)險(xiǎn)。利用此特征,等待數(shù)據(jù)內(nèi)部到達(dá)微引擎22a22f的阻塞周期為0。連接這些資源(例如存儲(chǔ)控制器26a和26b)的例如ASB總線30、SRAM總線34和SDRAM總線38等數(shù)據(jù)總線具有足夠的帶寬,使得無(wú)內(nèi)部阻塞。因此,為了避免阻塞,處理器12具有每一功能單元配備內(nèi)部總線最大帶寬至少2倍的帶寬要求。例如,SDRAM可以83MHz運(yùn)作于64位寬總線。SRAM數(shù)據(jù)總線可具有讀寫(xiě)分開(kāi)的總線,例如可以是運(yùn)作于166MHz的32位寬讀出總線和運(yùn)作于166MHz的32位寬寫(xiě)入總線。也就是說(shuō),運(yùn)作于166Mhz的64位實(shí)際上是SDRAM帶寬的2倍。核心處理器20也可存取共用資源。核心處理器20經(jīng)總線32直接與SDRAM控制器26a、總線接口24和SRAM控制器26b通信。然而,為了訪問(wèn)微引擎22a22f和任一微引擎22a22f的傳送寄存器,核心處理器24經(jīng)ASB變換器30在總線34上存取微引擎22a22f。ASB變換器30可在實(shí)體上駐留于FBUS接口28,但邏輯上不同。ASB變換器30進(jìn)行FBUS微引擎?zhèn)魉图拇嫫魑恢门c核心處理器地址(即ASB總線)之間的地址變換,以便核心處理器20能訪問(wèn)屬于微引擎22a22c的寄存器。雖然如下文所述微引擎22可用寄存器組交換數(shù)據(jù),但還提供便箋存儲(chǔ)器27,使微引擎能將數(shù)據(jù)寫(xiě)到該存儲(chǔ)器,供其他微引擎讀取。便箋式存儲(chǔ)器27連接總線34。處理器核心20包含在5級(jí)流水線實(shí)現(xiàn)的RISC核心50,該流水線進(jìn)行在單個(gè)周期內(nèi)對(duì)1個(gè)操作數(shù)或2個(gè)操作數(shù)的單周期移位,提供乘法支持和32位滾筒型移位支持。此RISC核心50具有標(biāo)準(zhǔn)StrongArn^體系結(jié)構(gòu),但由于性能上的原屈,用5級(jí)流水線實(shí)現(xiàn)。處理器核心20還包含16K字節(jié)指令快速緩存器52、8K字節(jié)數(shù)據(jù)快速緩存器54和預(yù)讀取流緩存器56。核心處理器20執(zhí)行與存儲(chǔ)器寫(xiě)入和指令讀取并行的算術(shù)運(yùn)算。核心處理器20經(jīng)ARM規(guī)定的ASB總線與其他功能單元形成接口。ASB總線是32位雙向總線32。微引擎參照?qǐng)D3,示出微引擎22a22f中一示范例,例如微引擎22f。微引擎包含控制存儲(chǔ)器70,在一實(shí)施例中該存儲(chǔ)器包含這里達(dá)1024字(每字32位)的RAM。該RAM存儲(chǔ)一微程序。該微程序可由核心處理器20加載。微引擎22f還包含控制器邏輯72。該控制器邏輯包含指令譯碼器73和程序計(jì)數(shù)器(PC)單元72a72d。按硬件維持4個(gè)微程序計(jì)數(shù)器72a72d。微引擎2f還包含環(huán)境事件切換邏輯74。該環(huán)境事件邏輯74從例如SRAM26a、SDRAM26b或處理器核心20、控制及狀態(tài)寄存器等共用資源的每一個(gè)接收消息(例如序號(hào)#事件響應(yīng)SEQJLEVENT—RESPONSE、FBI事件響應(yīng)FBI—EVENT—RESPONSE、SRAM事件響應(yīng)SRAM—EVENT—RESPONSE、SDR旭事件響應(yīng)SDRAM—EVENT—RESPONSE和ASB事件響應(yīng)ASB一EVENT—RESPONSE)。這些消息提供有關(guān)請(qǐng)求的功能是否完成的信息。根據(jù)線程請(qǐng)求的功能是否完成和信號(hào)傳送是否完成,線程需要等待該完成信號(hào),如果線程能工作,便將該線程放到可用線程列表(未示出)。微引擎22a可具有最多例如4個(gè)可用線程。除執(zhí)行線程局部所有的事件信號(hào)外,微引擎22還用全局的信令狀態(tài)。借助該信令狀態(tài),執(zhí)行線程可對(duì)全部微引擎22廣播信號(hào)狀態(tài)。接收請(qǐng)求可行信號(hào)后,微引擎中的全部任何線程可按這些信令狀態(tài)分支??捎眠@些信令狀態(tài)判定資源的可用性或資源提供服務(wù)是否適當(dāng)。環(huán)境事件邏輯74具有對(duì)4個(gè)線程的仲裁。一實(shí)施例中,仲裁是一循環(huán)機(jī)制。可用包括優(yōu)先級(jí)排隊(duì)或加權(quán)合理排隊(duì)在內(nèi)的其他技術(shù)。微引擎22f還包括一執(zhí)行框(EB0X)數(shù)據(jù)通路76,其中包含算術(shù)邏輯單元76a和通用寄存器組76b。算術(shù)邏輯單元76a執(zhí)行算術(shù)和邏輯功能以及移位功能。寄存器組76b具有數(shù)量較多的通用寄存器。圖3—4中將說(shuō)明,此實(shí)施例中,第1組(組A)具有64個(gè)通用寄存器,第2組(組B)也具有64個(gè)。這些通用寄存器形成窗口(后文將說(shuō)明),以便其可相對(duì)尋址和絕對(duì)尋址。微引擎22f還包含寫(xiě)傳送寄存器堆棧78和讀傳送堆棧80。這些寄存器也形成窗口,以便其可相對(duì)尋址和絕對(duì)尋址。資源的寫(xiě)入數(shù)據(jù)位于寫(xiě)傳送寄存器堆棧78。讀寄存器堆棧80則用于從共用資源返回的數(shù)據(jù)。分別來(lái)自例如SR認(rèn)控制器26a、SDRAM控制器26b或核心處理器20之類(lèi)共用資源的事件信號(hào),與數(shù)據(jù)的到達(dá)串行或并行提供給環(huán)境事件仲裁器74,提醒線程數(shù)據(jù)可用或數(shù)據(jù)已發(fā)送。傳送寄存器組78和80都通過(guò)數(shù)據(jù)通路連接執(zhí)行框(EBOX)76。一實(shí)施例中,讀傳送寄存器具有64個(gè)寄存器,寫(xiě)傳送寄存器也有64個(gè)。如圖3—3所示,微引擎數(shù)據(jù)通路維持5級(jí)微流水線82。該流水線包含査找微指令字82a、形成寄存器文件地址82b、從寄存器文件讀操作數(shù)82c、ALU或移位或比較運(yùn)算82d和結(jié)果寫(xiě)回寄存器82e。通過(guò)提供回寫(xiě)數(shù)據(jù)旁路至ALU/移位器單元,假定按寄存器文件而非R認(rèn)實(shí)現(xiàn)寄存器,微引擎可執(zhí)行寄存器文件同時(shí)讀寫(xiě),完全隱藏寫(xiě)操作。SDR認(rèn)接口26a在讀數(shù)據(jù)上對(duì)提出請(qǐng)求的微引擎送回一表明是否在讀請(qǐng)求上出現(xiàn)奇偶差錯(cuò)的信號(hào)。微引擎采用任何送回的數(shù)據(jù)時(shí),微引擎的微碼負(fù)責(zé)校驗(yàn)SDRAM讀奇偶標(biāo)志。校驗(yàn)該標(biāo)志時(shí),如果設(shè)定該標(biāo)志,分支動(dòng)作將其消除。僅在啟用SDRAM供校驗(yàn)時(shí)發(fā)送奇偶標(biāo)志,SDRAM受奇偶性防護(hù)。微引擎和PCI單元是通知奇偶差錯(cuò)的唯一請(qǐng)求者。因此,如果處理器核心20或FIF0要求奇偶性保護(hù),微引擎就按請(qǐng)求幫助。微引擎22a22f支持條件分支。分支判決結(jié)果是先前微控制指令設(shè)定條件碼時(shí),出現(xiàn)條件分支執(zhí)行時(shí)間(不包含轉(zhuǎn)移)最壞的情況。表l示出該等待時(shí)間如下I1I2|3|4|5|6|7|8|------------------+----+----+----+----+——_—+----+---+____+微存儲(chǔ)查找|nl|cb|n2|XX|bl|b2(b3|b4|寄存器地址生成I|nl|cb|XX|XX|bl|b2|b3|寄存器文件查找II|nl|cb|XX|XX|bl|b2|ALU/shifter/cc||||nl|cb|XX|XX|bl|寫(xiě)回(IIm2||nl|cb|XX|XX|其中,nx是預(yù)分支微字(nl設(shè)定為cc)cb是條件轉(zhuǎn)移bx是后分支微字xx是異常微字如表1所示,直到周期4才設(shè)定條件碼nl,能進(jìn)行分支判決,這在本例中使用周期5上査找分支路徑。微引擎由于必須在分支路徑用操作bl填充流水和n3(緊接分支后的2個(gè)微字),帶來(lái)2個(gè)周期的分支等待時(shí)間損失。如果不進(jìn)行分支,就不吸收微字,按常規(guī)繼續(xù)執(zhí)行。微引擎有若干機(jī)制用于減少或消除有效分支等待時(shí)間。微引擎支持延遲分支。延遲分支是微引擎允許在分支后實(shí)施分支前出現(xiàn)1個(gè)或2個(gè)微字的情況(即分支作用在時(shí)間上"延遲")。因此,如果能找到有用的工作填補(bǔ)分支微字后所浪費(fèi)的周期,就能隱去分支等待時(shí)間。下面示出延遲l周期的分支,其中允許在cb后、bl前執(zhí)行n2:11I2|3|4|5|6|7|8|-----------------+—+—+—+—+-----(■—+—+—+微存儲(chǔ)查找(nl!cb(n2iXXibl!b2lb3!b4I寄存器地址生成I|nl|cb|n2|XX|M|b2|b3|寄存器文件查找Jjjnl|cbjn2iXXjbl|b2|ALU/shifter/cc||1jnl|cb|n2|XX|bl|寫(xiě)回!III|nl|cb|n2|XX|下面示出2周期的延遲分支,其中n2和n3都允許在分支到bl出現(xiàn)前完成。注意,僅分支前在微字設(shè)定條件碼時(shí),允許2周期分支延遲。I1!2|3!引5|6|7|8|9|微存儲(chǔ)查找In〗!cbIn2In3IblIb2Ib3Ib4Ib5I寄存器地址生成1In"cbln21n3|bllb2|b3|b4i寄存器文件查找IIjnl!cb|n2|n3|bl|b2|b3IALU/shifter/cc||||nl|cb|n2|n3|bl|b2|寫(xiě)回!1I1Inl|cb|n2|n3|bl|微引擎也支持條件碼估值。如果分支前判決分支的條件碼設(shè)定2個(gè)或多個(gè)微字,則由于能早1周期進(jìn)行分支判決,能消除1周期的等待時(shí)間如下iH2|3|4j516|7j8|_____________+—+—+—+—-+—+—+—+—微存儲(chǔ)查找|nl|n2|cb!XX!bl!b2|b3(b4!寄存器地址生成!|nl|n2!cb|XX|bl|b2|b3|寄存器文件查找jijni|n2|cb|XXjbl1b2iALU/shifter/cc|||(nl|n2|cb|XX|blI寫(xiě)回lIjI|nl|n2jcb|XX|此例中,nl設(shè)定條件碼,n2不設(shè)定條件碼。因此,可在周期4而不是周期5進(jìn)行分支判決,以消除1周期的分支等待時(shí)間。下面的例子中,將l周期延遲與條件碼提早設(shè)定加以組合,以完全隱去分支等待時(shí)間<table>tableseeoriginaldocumentpage15</column></row><table>其中,在l周期延遲分支前的2周期設(shè)定條件碼cc。在不能提前設(shè)定條件碼的情況下(即條件碼設(shè)定在分支前的微字中時(shí)),微引擎支持試圖減少1周期留下的暴露分支等待時(shí)間的分支猜測(cè)。通過(guò)"猜測(cè)"分支路徑或串行路徑,微定序器在確切知道執(zhí)行何路徑前預(yù)先取得猜測(cè)路徑1。猜測(cè)如果正確,就消除1周期分支等待時(shí)間如下<table>tableseeoriginaldocumentpage15</column></row><table>其中猜測(cè)進(jìn)行分支而且也進(jìn)行分支。如果微碼猜測(cè)進(jìn)行的分支不正確,微引擎仍然浪費(fèi)l周期<table>tableseeoriginaldocumentpage15</column></row><table>其中猜測(cè)進(jìn)行分支但不進(jìn)行分支。然而,微碼猜測(cè)不進(jìn)行分支時(shí),有差異地分配等待時(shí)間損失。對(duì)猜測(cè)不進(jìn)行分支而且也不進(jìn)行分支而言,不存在浪費(fèi)周期,如下所示1微存儲(chǔ)查找寄存器地址生成寄存器文件查找ALU/shifter/cc寫(xiě)回I213|4|5|6|718||nl|cb|nl(n2|n3(n4|n5|n6|IInlIcbInl(n2(n3(n4(n5(II|nl|cb|nl|n2|nl|b4|IiI|nl|cb|nl|n2|n3IIIII|nl|cb|nl(n21然而,對(duì)猜測(cè)不進(jìn)行分支但進(jìn)行分支而言,存在2個(gè)浪費(fèi)周期如下I1I2|3|4j5|6|7|8|微存儲(chǔ)查找|nl|cb|nl|XX|bl|b2|b3|b4!寄存器地址生成I|nl|cb|XX|XX|bl|b2|b3|寄存器文件查找JIinl|cb|XX|XX|bl|b2|ALU/shifter/cc||||n|cb|XX|XX|bl|寫(xiě)回IIiI|nl|cb!XX|XX|微引擎可組合分支猜測(cè)和1周期分支延遲,以進(jìn)一步改善結(jié)果。對(duì)猜測(cè)進(jìn)行分支加上1周期延遲分支而且也進(jìn)行分支而言,其結(jié)果為I1i2|3|4|5|6|7|8|微存儲(chǔ)查找inlIcb!n2iblIb2ib3!b4!b5I寄存器地址生成I|nl|cb|n2|bl|b2|b3|b4|寄存器文件查找II|nl|cb|n2|bl|b2|b3|ALU/shifter/cc|||inljcb)n21bl|b2|寫(xiě)回jIJI|nl|cb|n2|bl|上述情況下,通過(guò)執(zhí)行n2和正確猜測(cè)分支方向,隱去2周期分支等待時(shí)間。如果微碼猜測(cè)不正確,仍暴露1周期等待時(shí)間如下II!2|3|4|5|6|7|8j9|-------------------+—+——+——+——+—+—+——+——+——+微存儲(chǔ)查找InlIcbIn2IXXIn3In4In5In6In7I寄存器地址生成IInl|cb|n2iXX|n3in4|n5|n6|寄存器文件查找II|nl|cb|n2|XX|n3|n4|n5|ALU/shifter/cc||||nl|cb|n2|XX|n3|n4|寫(xiě)回IIIIinl|cb!n2|XXin3|其中,猜測(cè)進(jìn)行分支加上1周期延遲分支但不進(jìn)行分支。如果微碼正確猜測(cè)不進(jìn)行分支,流水線按常規(guī)不受干擾的情況順序進(jìn)行。微碼錯(cuò)誤猜測(cè)不進(jìn)行分支,微引擎又暴露1周期非生產(chǎn)性執(zhí)行如下I1I2|3|4|5j6!7!8191微存儲(chǔ)查找Inljcbln2iXXIbl|b2|b3|b4|b5|寄存器地址生成I|nl|cb|n2|XX|bl|b2|b3|b4|寄存器文件查找II|nl|cb|n2|XX|bl|b2|b3|ALU/shifter/cciI||nl|cb|n2|XX|bl|b2|寫(xiě)回IIII|nl|cb|n2|XX|bl|其中,猜測(cè)不進(jìn)行分支但進(jìn)行分支,而且nx是預(yù)分支微字(nl設(shè)定為cc)cb是條件轉(zhuǎn)移bx是后分支微字xx是異常微字在轉(zhuǎn)移指令的情況下,由于直到ALU級(jí)中存在轉(zhuǎn)移的周期結(jié)束才知道分支地址,造成3個(gè)額外周期的等待時(shí)間如下I1I2|3|4|5161718!9|微存儲(chǔ)查找inlUp|XXiXX|XX|jlIj2|j3|j4|寄存器地址生成Iinl|jp|XX|XX|XX|jl|j2|j3|寄存器文件查找IIjnUJp|XX|XX|XX|jl|j2|ALU/shifter/ccIII|nl|jp|XX|XX|XX|jl|寫(xiě)回j!ii|nlIJpjXXlXXjXXi環(huán)境切換參照?qǐng)D3—4,其中示出環(huán)境切換指令的格式。環(huán)境切換是促使選擇不同環(huán)境(及其相關(guān)聯(lián)PC)的特殊分支形式。環(huán)境切換也引入一些分支等待時(shí)間??紤]以下的環(huán)境切換|I|2|3!4|5|6|7|8|9|------------------+——+—+——+—+—+——+——+—斗一+孩t存儲(chǔ)查找IolIcajbr1nlIn2In3In4In5In6I寄存器地址生成!|olicaiXXlnl|n2|n3!n4|n5i寄存器文件查找!(|ol(ca(XX(nl|n21n3|n4|ALU/shifter/cc||||ol!cajXX(nl|n2|n3|寫(xiě)回jIi!|ol|ca|XX|nl|n2|其中,ox是舊環(huán)境流br是舊環(huán)境中分支微字ca是環(huán)境再仲裁(致使環(huán)境切換)nx是新環(huán)境流XX是異常微字環(huán)境切換中,致使"br"微字異常,以避免保留正確舊環(huán)境PC會(huì)造成的控制和定時(shí)復(fù)雜性。按照分支前在微字上設(shè)定的ALU條件碼操作的條件分支可選擇0、1或2周期分支延遲模式。所有其他分支(包括環(huán)境再仲裁)可選擇O或l周期分支延遲模式。可設(shè)計(jì)體系結(jié)構(gòu)使環(huán)境仲裁微字在前置分支的分支延遲窗內(nèi)、轉(zhuǎn)移或使該微字為非法任選項(xiàng)。也就是說(shuō),某些實(shí)施例中,由于如上所述原因,其會(huì)造成保存舊環(huán)境PC過(guò)度復(fù)雜,流水線中分支轉(zhuǎn)換時(shí)不允許發(fā)生環(huán)境切換。還可設(shè)計(jì)體系結(jié)構(gòu),使在前置分支的分支延遲窗內(nèi)的分支、轉(zhuǎn)換或者環(huán)境仲裁微字非法,以免分支行為復(fù)雜且不可預(yù)測(cè)。每一微引擎22a22f支持4個(gè)環(huán)境的多線程執(zhí)行。其原因之一是使1個(gè)線程可正好在另一線程發(fā)布存儲(chǔ)器指針后開(kāi)始執(zhí)行,并且必須等待直到該指針完成后才進(jìn)行更多工作。由于存儲(chǔ)器等待時(shí)間顯著,此性能對(duì)維持微引擎硬件有效執(zhí)行至關(guān)重要。換句話說(shuō),若僅支持一個(gè)線程執(zhí)行,微引擎就會(huì)閑置大量周期,等待指針?lè)祷?,從而使總的?jì)算吞吐量減少。多線程執(zhí)行通過(guò)跨越多個(gè)線程執(zhí)行有用的獨(dú)立工作,使微引擎可隱去存儲(chǔ)器等待時(shí)間。提供2種同步機(jī)制,以便使線程可發(fā)布SRAM或SDR細(xì)指針,并且在完成該訪問(wèn)時(shí),接著與下-個(gè)時(shí)間點(diǎn)同步。一種機(jī)制是立即同步。立即同步中,微引擎發(fā)布指針,并且立即換出該環(huán)境。相應(yīng)的指針完成時(shí)便發(fā)信號(hào)通知該環(huán)境。一旦發(fā)信號(hào),便換回環(huán)境,以便當(dāng)出現(xiàn)環(huán)境對(duì)換事件且輪到其運(yùn)作時(shí)執(zhí)行。因此,從單一環(huán)境指令流的角度看,微字在發(fā)出存儲(chǔ)器指針后要到指針完成才得以執(zhí)行。第2種機(jī)制是延遲同步。延遲同步中,微引擎發(fā)布指針后,繼續(xù)執(zhí)行一些其他與指針無(wú)關(guān)的有用工作。過(guò)些時(shí)間,變成需要線程執(zhí)行流與所發(fā)布指針的完成同步后再進(jìn)一步工作。這時(shí),執(zhí)行同步微字,換出當(dāng)前線程,并且在過(guò)一些時(shí)間完成指針時(shí)將其換回,或者由于已經(jīng)完成指針而繼續(xù)執(zhí)行當(dāng)前線程。用以下2種不同信令方案實(shí)現(xiàn)延遲同步。若存儲(chǔ)器指針與傳送寄存器關(guān)聯(lián),在設(shè)定或消除相應(yīng)傳送寄存器有效位時(shí)便產(chǎn)生觸發(fā)線程的信號(hào)。舉例來(lái)說(shuō),設(shè)定寄存器A有效位時(shí),便發(fā)出在傳送寄存器A中存數(shù)據(jù)這種SRAM讀出的信號(hào)。若存儲(chǔ)器指針與傳送FIFO或接收FIFO關(guān)聯(lián),而不是與傳送寄存器關(guān)聯(lián),在SDRAM控制器26a中完成訪問(wèn)時(shí)產(chǎn)生信號(hào)。微引擎調(diào)度器中僅保持每一環(huán)境一種信號(hào)狀態(tài),因而此方案中只能存在一個(gè)待處理信號(hào)。至少有2種可設(shè)計(jì)微控制器微程序的一般操作范例。一種是優(yōu)化總體的微控制器計(jì)算吞吐量和總體的存儲(chǔ)器帶寬,其代價(jià)是花費(fèi)一個(gè)線程執(zhí)行等待時(shí)間。當(dāng)系統(tǒng)具有對(duì)非相關(guān)數(shù)據(jù)分組執(zhí)行每一微引擎多線程的多重微引擎時(shí),此范例會(huì)有意義。第2種范例是以總體的微引擎計(jì)算吞吐量和總體存儲(chǔ)器帶寬的代價(jià)來(lái)優(yōu)化微引擎執(zhí)行等待時(shí)間。此范例涉及以實(shí)時(shí)約束執(zhí)行線程,該約束支配按某規(guī)定時(shí)間必須絕對(duì)完成的某工作。這種約束要求給單一線程執(zhí)行的優(yōu)化比諸如存儲(chǔ)器帶寬或總體計(jì)算吞吐量之類(lèi)其他考慮高的優(yōu)先級(jí)。實(shí)時(shí)線程隱含僅執(zhí)行一個(gè)線程的單一微引擎。目標(biāo)是使單一實(shí)施線程盡快執(zhí)行,而多線程的執(zhí)行妨礙此性能,所以不處理多線程。在發(fā)布存儲(chǔ)器指針和環(huán)境切換方面,這2種范例的編碼方式顯著不同。在實(shí)時(shí)情況下,目標(biāo)是盡快發(fā)布盡量多的存儲(chǔ)器指針,以便使這些指針?biāo)鶐?lái)的存儲(chǔ)器等待時(shí)間最短。已盡量提早發(fā)布盡量多的指針,目標(biāo)是微引擎與指針盡可能并行執(zhí)行盡量多的計(jì)算。與實(shí)時(shí)優(yōu)化時(shí)相對(duì)應(yīng)的計(jì)算流是0)發(fā)布存儲(chǔ)器指針1o)發(fā)布存儲(chǔ)器指針2o)發(fā)布存儲(chǔ)器指針30)進(jìn)行與存儲(chǔ)器指針l、2、3無(wú)關(guān)的工作0)與存儲(chǔ)器指針1的完成同步o)進(jìn)行取決于存儲(chǔ)器指針1且與存儲(chǔ)器指針2和3無(wú)關(guān)的工作o)根據(jù)前面的工作發(fā)布新存儲(chǔ)器指針o)與存儲(chǔ)器指針2的完成同步o)進(jìn)行取決于存儲(chǔ)器指針1和2且與存儲(chǔ)器指針3無(wú)關(guān)的工作o)根據(jù)前面的工作發(fā)布新存儲(chǔ)器指針o)與存儲(chǔ)器指針3的完成同步o)進(jìn)行取決于全部3個(gè)指針完成的工作o)根據(jù)前面的工作發(fā)布新存儲(chǔ)器指針?lè)粗瑢?duì)吞吐量和帶寬的優(yōu)化則采取不同方法。對(duì)微引擎計(jì)算吞吐量和總體存儲(chǔ)器帶寬而言,不考慮單線程執(zhí)行等待時(shí)間。為了實(shí)現(xiàn)這點(diǎn),目標(biāo)是對(duì)每一線程在微程序上均勻分隔存儲(chǔ)器指針。這將給SRAM和SDRAM的控制器提供均勻的存儲(chǔ)器指針流,并且使總可獲得一線程的概率最大,以隱去換出另一線程時(shí)帶來(lái)的存儲(chǔ)器等待時(shí)間。寄存器文件地址類(lèi)型參照?qǐng)D3—5,所存在的2個(gè)寄存器地址空間是局部可存取寄存器和全部微引擎均可存取的全局可存取寄存器。通用寄存器(GRP)做成2個(gè)分開(kāi)組(A組和B組),其地址逐字交錯(cuò),使得A組寄存器具有LSB=0,B組寄存器具有LSB二1。每組可進(jìn)行本組內(nèi)2個(gè)不同字的同時(shí)讀寫(xiě)。整個(gè)組A和組B上,寄存器集合76b也組織成每一線程具有可相對(duì)尋址的32個(gè)寄存器的4個(gè)窗76b。76b:,。因此,線程0在77a(寄存器0)找到其寄存器0,線程1在77b(寄存器32)找到其寄存器0,線程2在77c(寄存器64)找到其寄存器0,線程3在77d(寄存器96)找到其寄存器0。支持相對(duì)尋址,以便多線程能準(zhǔn)確使用相同的控制存儲(chǔ)器和位置,但訪問(wèn)不同的寧寄存器窗,并執(zhí)行不同功能。寄存器窗尋址和寄存器組尋址的使用,僅在以微引擎22f中以雙端口RAMS提供必要的讀帶寬。這些開(kāi)窗的寄存器不需要保存環(huán)境切換之間的數(shù)據(jù),從而消除環(huán)境對(duì)換文件或堆棧的常規(guī)推入和推出。這里環(huán)境切換對(duì)從一環(huán)境到另一環(huán)境的變化具有0周期的開(kāi)銷(xiāo)。相對(duì)寄存器尋址將寄存器組劃分成跨越通用寄存器集合地址寬度的窗。相對(duì)尋址允許訪問(wèn)相對(duì)于窗起始點(diǎn)的任何窗。此體系結(jié)構(gòu)內(nèi)也支持絕對(duì)尋址,其中,通過(guò)提供寄存器的準(zhǔn)確地址,任何線程可訪問(wèn)任一絕對(duì)寄存器。通用寄存器48的尋址可出現(xiàn)2種方式,取決于微字格式。這2種方式是絕對(duì)方式和相對(duì)方式。絕對(duì)方式中,在7位源段(a6a0或b6b0)直接指定寄存器地址的尋址:AGPR:BGPR:S國(guó)/ASB:SD隨在8位宿段(d7-76543210+..+..+..+..+..++..+..+Ia6i01a5Ia41a3Ia21alIa01a6=0|b6|1|b5|b4|b3|b2|bl|b0|b6=0a6IIa4I0Ia3Ia2IalIa0Ia6=l,a5=0,a4=0Ia6Ia5Ia410Ia3Ia2IalIa0Ia6=l,a5=0,a4=l-dO)直接指定寄存器地址76543210AGPR:Id7|d6|d5|d4|d3|d2|dl|d0|BGPR:id7|d6|d5id4|d3|d2|dl|d0|SRAM/ASB:id7Id6Id5Id4Id3Id2IdlId0iSDRAM:|d7|d6|d5|d4|d3Id2IdlIdOd7=0,d6=0d7=0,d6=ld7=l,d6=0,d5=0d7=l,d6=0,d5=l若〈a6:a5〉二l,1,<b6:b5>=l,1或〈d7:d6X,1,低端位便變換成環(huán)境相對(duì)地址字段(下文說(shuō)明)。當(dāng)A、B絕對(duì)字段指定非相對(duì)A或B源地址時(shí),僅能對(duì)SRAM/ASB和SDRAM地址空間的低端半部分尋址。實(shí)際上,讀絕對(duì)方式的SRAM/SDRAM具有有效地址空間。但由于該限制不適用宿段,寫(xiě)SRAM/SDRAM可用全地址空間。相對(duì)方式中,在按5位源段(a4a0或b4b0)規(guī)定的環(huán)境空間內(nèi)偏置指定地址的尋址76543210+..+..+..4—十…+..++..+AGPR:la4i0l環(huán)境la2lalla0iBGPR:Ib7Ui環(huán)境lb2lbllb01SRAM/ASB:iab410Iab3I環(huán)境|bl|abO|SDRAM:|ab4|0iab3|環(huán)境|bl|abOa4=0b4=0ab4二l,ab3=0ab4=l,ab3=l或者在按6位宿段(d5d0)規(guī)定的環(huán)境空間內(nèi)偏置指定地址的尋址76543210+..+..++..+.+."+..+..+AGPR:Id5ld4l環(huán)境d2|dl|d0|d5=0,d4=0BGPR:Id5ld4l環(huán)境ld2ldlid01d5=0,d4=lSRAM/ASB:|d5|d4|d3|環(huán)境|dl|d0|d5二l,d4=0,d3=0SDRAM:|d5|d4|d3|環(huán)境|dl|d0|d5=l,d4=0,d3=l如果〈d5:d4X,1,則宿地址找不到有效寄存器,因而不回寫(xiě)宿操作數(shù)。從微引擎和存儲(chǔ)控制器可全局存取以下寄存器散列單元寄存器便箋和共用寄存器接收FIFO和接收狀態(tài)FIFO發(fā)送FIFO發(fā)送控制FIFO不中斷驅(qū)動(dòng)微引擎。執(zhí)行每一微流直到完成為止,根據(jù)處理器12中其他裝置用信號(hào)通知的狀態(tài)選擇一新流。參照?qǐng)D4,SDRAM存儲(chǔ)控制器26a包含存儲(chǔ)器指針隊(duì)列90,其中存儲(chǔ)器指針請(qǐng)求從各微引擎22a22f到達(dá)。存儲(chǔ)控制器26a包括一仲裁器91,該仲裁器選擇下一微引擎指針請(qǐng)求至任何功能單元。設(shè)一個(gè)微引擎提出訪問(wèn)請(qǐng)求,該請(qǐng)求會(huì)來(lái)到SDRAM控制器26a內(nèi)部的地址和命令隊(duì)列90。若該訪問(wèn)請(qǐng)求具有稱(chēng)為"經(jīng)優(yōu)化存儲(chǔ)位"的位集合,便將進(jìn)入的指針請(qǐng)求分類(lèi)為偶數(shù)組隊(duì)列90a或奇數(shù)組隊(duì)列90b。若存儲(chǔ)器指針請(qǐng)求沒(méi)有存儲(chǔ)器優(yōu)化位集合,系統(tǒng)設(shè)定就轉(zhuǎn)入一排序隊(duì)列90c。SDRAM控制器26是一FBUS接口28、核心處理器20和PCI接口24所共用的資源。SDRAM控制器26還維持一用于執(zhí)行讀出-修改-寫(xiě)入自動(dòng)操作的狀態(tài)機(jī)。SDRAM控制器26還對(duì)SDRAM的數(shù)據(jù)請(qǐng)求進(jìn)行字節(jié)對(duì)準(zhǔn)。命令隊(duì)列90c保持來(lái)自微引擎的指針請(qǐng)求的排序。根據(jù)一系列奇數(shù)和偶數(shù)組指針,可要求信號(hào)僅在指向偶數(shù)組和奇數(shù)組兩者的存儲(chǔ)器指針序列完成時(shí)返回信號(hào)。若微引擎22f將存儲(chǔ)器指針?lè)诸?lèi)成奇數(shù)組指針和偶數(shù)組指針,并且存儲(chǔ)器指針在奇數(shù)組前漏出其中一個(gè)組(例如偶數(shù)組),但在最后的偶數(shù)指針上信號(hào)肯定,便可想象存儲(chǔ)控制器26a可返回信號(hào)通知微引擎已完成存儲(chǔ)器請(qǐng)求,即使奇數(shù)組指針不提供服務(wù)也這樣。這種現(xiàn)象可造成一相干問(wèn)題。通過(guò)提供排序隊(duì)列90c使微引擎可讓多個(gè)待處理存儲(chǔ)器指針中僅最后的存儲(chǔ)器指針通知完成,從而可避免上述情況。SDR顏控制器26a還包含高優(yōu)先級(jí)隊(duì)列90d。高優(yōu)先級(jí)隊(duì)列90d中,來(lái)自個(gè)微引擎的輸入存儲(chǔ)器指針直接進(jìn)入高優(yōu)先級(jí)隊(duì)列,并且以高于其他隊(duì)列中其他存儲(chǔ)器指針的優(yōu)先級(jí)進(jìn)行工作。偶數(shù)組隊(duì)列90a、奇數(shù)組隊(duì)列90b、命令隊(duì)列90c和高優(yōu)先級(jí)隊(duì)列90d,所有這些隊(duì)列都在一個(gè)RAM結(jié)構(gòu)中實(shí)現(xiàn)。該結(jié)構(gòu)邏輯上分成4個(gè)不同的窗,各窗分別具有其本身首部和尾部指針。由于填入和漏出操作僅是單一輸入和單一輸出,可將它們置于同一RAM結(jié)構(gòu)以提高R認(rèn)結(jié)構(gòu)密度。SDR謹(jǐn)控制器26a還包括核心總線接口邏輯即ASB總線92。ASB總線接口邏輯92形成核心處理器20與SDRAM控制器26a的接口。ASB總線是一包含32位數(shù)據(jù)通路和28位地址通路的總線。通過(guò)MEMASB數(shù)據(jù)設(shè)備98(例如緩存器)對(duì)存儲(chǔ)器存取數(shù)據(jù)。MEMASB數(shù)據(jù)設(shè)備98是一寫(xiě)數(shù)據(jù)隊(duì)列。若有從核心處理器20經(jīng)ASB接口92進(jìn)入的數(shù)據(jù),該數(shù)據(jù)可存入MEMASB設(shè)備98,接著通過(guò)SDRAM接口110從MEMASB設(shè)備98移至SDRAM存儲(chǔ)器16a。雖然未示出,但可對(duì)讀出提供相同的隊(duì)列結(jié)構(gòu)。SDRAM控制器26a還包括一引擎97從微引擎和PCI總線拉進(jìn)數(shù)據(jù)。附加隊(duì)列包括保持若干請(qǐng)求的PCI地址隊(duì)列94和ASB讀/寫(xiě)隊(duì)列96。存儲(chǔ)器請(qǐng)求經(jīng)復(fù)用器106送至SDRAM接口110。復(fù)用器106由SDR細(xì)仲裁器91控制,該仲裁器檢測(cè)各隊(duì)列滿員程度和請(qǐng)求狀態(tài),并根據(jù)優(yōu)先級(jí)業(yè)務(wù)控制寄存器100存放的可編程值,從所檢測(cè)的情況判定優(yōu)先級(jí)。-旦對(duì)復(fù)用器106的控制選擇-一存儲(chǔ)器指針請(qǐng)求,就將此存儲(chǔ)器指針請(qǐng)求送至一譯碼器108對(duì)其進(jìn)行譯碼,并生成一地址。該經(jīng)過(guò)解碼的地址送至SDRAM接口110,將其分解成行地址和列地址選通信號(hào)來(lái)存取SDRAM16a,并通過(guò)將數(shù)據(jù)送至總線112的數(shù)據(jù)線16a讀出或?qū)懭霐?shù)據(jù)。一實(shí)施例中,總線112實(shí)際上是2條分開(kāi)的總線,而不是單一總線。該分開(kāi)的總線會(huì)包含連接分布式微引擎22a22f的讀出總線和連接分布式微引擎22a22f的寫(xiě)入總線。SDRAM控制器26a其特征在于,在隊(duì)列90中存儲(chǔ)存儲(chǔ)器指針時(shí),除可設(shè)定該經(jīng)優(yōu)化存儲(chǔ)位外,還有"鏈接位"。該鏈接位當(dāng)其設(shè)定時(shí)允許對(duì)鄰接存儲(chǔ)器指針專(zhuān)門(mén)處理。如上文所述,仲裁器12控制選擇哪一微引擎在命令總線上將存儲(chǔ)器指針請(qǐng)求提供給隊(duì)列90(圖4)。對(duì)鏈接位的肯定將控制仲裁器使之選擇先前請(qǐng)求該總線的功能單元,這是因?yàn)閷?duì)鏈接位的設(shè)定表明微引擎發(fā)出一鏈接請(qǐng)求。設(shè)定鏈接位時(shí),會(huì)按隊(duì)列90接收鄰接存儲(chǔ)器指針。由于鄰接存儲(chǔ)器指針是來(lái)自單一線程的多存儲(chǔ)器指針,這些鄰接指針通常按排序隊(duì)列90c存儲(chǔ)。為了提供同步,存儲(chǔ)控制器26a僅需要在完成時(shí)在鏈接存儲(chǔ)器指針未端給出信號(hào)。但經(jīng)優(yōu)化存儲(chǔ)器鏈接中,(例如經(jīng)優(yōu)化存儲(chǔ)位和鏈接位設(shè)定時(shí))存儲(chǔ)器指針便會(huì)進(jìn)入不同組,并且在其他組充分露出前有可能對(duì)發(fā)布信號(hào)"完成"的其中一個(gè)存儲(chǔ)組完成,這樣就破壞相干性。因此,控制器IIO用鏈接位保持來(lái)自當(dāng)前隊(duì)列的存儲(chǔ)器指針。參照?qǐng)D4一3,示出SDRAM控制器26a中仲裁策略的流程表示。仲裁策略優(yōu)待鏈接微引擎存儲(chǔ)器請(qǐng)求。處理過(guò)程115通過(guò)鏈接微引擎存儲(chǔ)器指針請(qǐng)求的檢査115a開(kāi)始進(jìn)行。過(guò)程115停留于鏈接請(qǐng)求,直到使鏈接位清零。過(guò)程對(duì)后面接著PCI總線請(qǐng)求115c、高優(yōu)先級(jí)隊(duì)列業(yè)務(wù)115d、相對(duì)組請(qǐng)求115e、排序隊(duì)列請(qǐng)求115f和相同組請(qǐng)求115g的ASB總線請(qǐng)求115b進(jìn)行檢查。對(duì)鏈接請(qǐng)求提供完整的業(yè)務(wù),而對(duì)業(yè)務(wù)115b115d則按循環(huán)順序提供。僅當(dāng)業(yè)務(wù)115a115d完全漏出時(shí),該過(guò)程才進(jìn)行業(yè)務(wù)115e115g的處理。當(dāng)先前SDRAM存儲(chǔ)器請(qǐng)求對(duì)鏈接位設(shè)定時(shí),設(shè)定所鏈接的微引擎存儲(chǔ)器指針請(qǐng)求。當(dāng)設(shè)定鏈接位時(shí),仲裁引擎便再次僅對(duì)相同隊(duì)列服務(wù),直到鏈接位清零。ASB處于等待狀態(tài)時(shí)對(duì)StrongArm核心帶來(lái)嚴(yán)重性能損失,故ASB優(yōu)先級(jí)高于PCI。因?yàn)镻CI的等待時(shí)間要求,PCI優(yōu)先級(jí)高于微引擎。但就其他總線而言,該仲裁優(yōu)先級(jí)可能不同。如圖4—4所示,示出的是不具有有效存儲(chǔ)器優(yōu)化和具有有效存儲(chǔ)器優(yōu)化的典型存儲(chǔ)器定時(shí)??梢灾?,對(duì)有效存儲(chǔ)器優(yōu)化的利用使總線應(yīng)用程度最大,從而隱去實(shí)際SDRAM裝置內(nèi)固有的等待時(shí)間。本例中,非優(yōu)化存取可用14周期,而優(yōu)化存取則可用7周期。參照?qǐng)D5,其中示出SR雄的存儲(chǔ)控制器26b。該存儲(chǔ)控制器26b包括一地址及命令隊(duì)列120。存儲(chǔ)控制器26a(圖4)具有一基于奇數(shù)和偶數(shù)分組的存儲(chǔ)器優(yōu)化隊(duì)列,存儲(chǔ)控制器26b則根據(jù)存儲(chǔ)器操作類(lèi)型(即讀出或?qū)懭?優(yōu)化。地址及命令隊(duì)列120包括一高優(yōu)先級(jí)隊(duì)列120a、一作為SR認(rèn)執(zhí)行的主導(dǎo)存儲(chǔ)器指針功能的讀隊(duì)列120b、以及一通常包括要非優(yōu)化的全部SRAM讀寫(xiě)的排序隊(duì)列120c。盡管未圖示,地址及命令隊(duì)列120也可包括一寫(xiě)隊(duì)列。SRAM控制器26b還包括核心總線接口邏輯即ASB總線122。ASB總線接口邏輯122形成核心處理器20與SRAM控制器26b的接口。ASB總線是一包括32位數(shù)據(jù)通路和28位地址通路的總線。通過(guò)MEMASB數(shù)據(jù)設(shè)備128(例如緩存器)對(duì)存儲(chǔ)器存取數(shù)據(jù)。MEMASB數(shù)據(jù)設(shè)備128是一寫(xiě)數(shù)據(jù)隊(duì)列。若有從核心處理器20通過(guò)ASB接口122的進(jìn)入數(shù)據(jù),該數(shù)據(jù)可存入MEMASB設(shè)備128,接著通過(guò)SRAM接口140從MEMASB設(shè)備128移至SRAM存儲(chǔ)器16b。雖未圖示,但可提供相同的隊(duì)列結(jié)構(gòu)用于讀出。SR認(rèn)控制器26b還包括一引擎127從微引擎和PCI總線拉進(jìn)數(shù)據(jù)。存儲(chǔ)器請(qǐng)求經(jīng)復(fù)用器126送至SDRAM接口140。復(fù)用器126由SDRAM仲裁器131控制,該仲裁器檢測(cè)各隊(duì)列滿員程度和請(qǐng)求狀態(tài),并根據(jù)優(yōu)先級(jí)業(yè)務(wù)控制寄存器130存放的可編程值,從所檢測(cè)的情況判定優(yōu)先級(jí)。一旦對(duì)復(fù)用器126的控制選擇一存儲(chǔ)器指針請(qǐng)求,就將此存儲(chǔ)器指針請(qǐng)求送至一譯碼器138對(duì)其進(jìn)行譯碼,并生成一地址。SRAM單元保持對(duì)經(jīng)存儲(chǔ)器映射的離片SRAM和擴(kuò)展ROM的控制。SRAM控制器26b可對(duì)例如16M字節(jié)尋址,而例如用于SRAM16b的8M字節(jié)映射保留用于專(zhuān)用功能,其中包括通過(guò)快速擦寫(xiě)R0M16的引導(dǎo)空間;MAC器件13a、13b用的控制臺(tái)端口存取訪問(wèn);以及對(duì)關(guān)聯(lián)(RMON)計(jì)數(shù)器的存取。SR雄用于局部査找表和隊(duì)列管理功能。SRAM控制器26b支持下列事務(wù)微引擎請(qǐng)求(經(jīng)專(zhuān)用總線)至/自SRAM核心處理器(經(jīng)ASB總線)至/自SRAM。SRAM控制器26b進(jìn)行存儲(chǔ)器指針?lè)诸?lèi)以使SR雄接口140至存儲(chǔ)器16b的流水線中延遲(空泡)最少。SR認(rèn)控制器26b根據(jù)讀功能進(jìn)行存儲(chǔ)器指針?lè)诸?lèi)。一個(gè)空泡可以是1周期或者2周期,取決于所用存儲(chǔ)器件的類(lèi)型。SRAM控制器26b包括一鎖定査找器件142,是一8輸入項(xiàng)地址內(nèi)容可尋址存儲(chǔ)器用于對(duì)讀出鎖定的査找。每一位置包括一由后續(xù)讀出-鎖定請(qǐng)求檢査的有效位。地址及命令隊(duì)列120還包括一讀出鎖定失效隊(duì)列120d。該隊(duì)列120d用于保持因存儲(chǔ)器一部分存在鎖定而失效的讀存儲(chǔ)器指針請(qǐng)求。也就是說(shuō),其中一個(gè)微引擎所發(fā)布的存儲(chǔ)器請(qǐng)求所具有的讀出鎖定請(qǐng)求在地址及控制隊(duì)列120中處理。該存儲(chǔ)器請(qǐng)求將對(duì)排序隊(duì)列120c或讀隊(duì)列120b運(yùn)作,并將其識(shí)別為讀出鎖定請(qǐng)求??刂破?6b將存取鎖定查找器件142以判斷該存儲(chǔ)位置是否已經(jīng)鎖定。若此存儲(chǔ)位置根據(jù)任何先前的讀出鎖定請(qǐng)求而被鎖定,該存儲(chǔ)鎖定請(qǐng)求將失效,并將存入讀出鎖定失效隊(duì)列120d。若解鎖或者142表示該地址未鎖定,SRAM接口140就將用該存儲(chǔ)器指針的地址對(duì)存儲(chǔ)器16b進(jìn)行常規(guī)的SR認(rèn)地址讀/寫(xiě)請(qǐng)求。命令控制器及地址發(fā)生器138也會(huì)將該鎖定輸入鎖定査找器件142,以便后續(xù)讀出鎖定請(qǐng)求將發(fā)現(xiàn)該存儲(chǔ)位置被鎖定。鎖定需要結(jié)束后通過(guò)對(duì)程序中微控制指令的運(yùn)作來(lái)使存儲(chǔ)位置解鎖。通過(guò)對(duì)CAM中有效位清零將該位置解鎖。解鎖后,讀出鎖定失效隊(duì)列120d變成最高優(yōu)先級(jí)隊(duì)列,給丟失的全部排隊(duì)的讀出鎖定一次機(jī)會(huì)發(fā)出一存儲(chǔ)器鎖定請(qǐng)求。如圖5—3所示,示出的是沒(méi)有有效存儲(chǔ)器優(yōu)化和具有有效存儲(chǔ)器優(yōu)化的靜態(tài)隨機(jī)存取存儲(chǔ)器的典型時(shí)序。可以知道,分組讀寫(xiě)改善消除死周期的周期時(shí)間。參照?qǐng)D6,示出的是微引擎22和FBUS接口邏輯(FBI)之間的通信。網(wǎng)絡(luò)應(yīng)用中的FBUS接口28可對(duì)來(lái)自FBUS18的來(lái)向數(shù)據(jù)分組進(jìn)行首部處理。FBUS接口28所進(jìn)行的一項(xiàng)關(guān)鍵功能是對(duì)數(shù)據(jù)分組首部的提取和對(duì)SRAM中可微編程源/宿/協(xié)議散列查找。若該散列不能成功分辨,數(shù)據(jù)分組首部就提升至核心處理器28用于更為高級(jí)的處理。FBI28包含發(fā)送FIFO182、接收FIFO183、散列單元188以及FBI控制及狀態(tài)寄存器189。這4個(gè)單元通過(guò)對(duì)微引擎中與傳送寄存器78、80連接的SRAM總線28的時(shí)間復(fù)用存取與微引擎22通信。也就是說(shuō),全部對(duì)微引擎的收發(fā)通信都通過(guò)傳送寄存器78、80。FBUS接口28包括一用于在SRAM不用SRAM數(shù)據(jù)總線(部分總線38)的時(shí)間周期期間將數(shù)據(jù)推入傳送寄存器的推狀態(tài)機(jī)200以及一用于從相應(yīng)微引擎中的傳送寄存器當(dāng)中讀取數(shù)據(jù)的拉狀態(tài)機(jī)202。散列單元包括一對(duì)FIFO18a、188b。該散列單元判定FBI28收到一FBI散列請(qǐng)求。散列單元188從進(jìn)行調(diào)用的微引擎22當(dāng)中取得散列鍵。讀取該鍵并散列后,將索引號(hào)送回進(jìn)行調(diào)用的微引擎22。在單個(gè)FBI散列請(qǐng)求下,進(jìn)行多達(dá)3次散列??偩€34和38均為單向SDRAM推/拉數(shù)據(jù)總線以及S總線推/拉數(shù)據(jù)總線。上述總線每一條需要對(duì)適當(dāng)微引擎22的傳送寄存器提供讀/寫(xiě)控制的控制信號(hào)。傳送寄存器通常要求保護(hù)其環(huán)境控制以保證讀出的正確性。具體來(lái)說(shuō),若線程1用寫(xiě)傳送寄存器對(duì)SDRAM16a提供數(shù)據(jù),線程1必須等到SDRAM控制器16a返回的信號(hào)表明該寄存器已提升并可重新使用才重寫(xiě)此寄存器。每次寫(xiě)均不需要表明已經(jīng)完成該功能的目的地所返回的信號(hào),其原因在于若該線程用多個(gè)請(qǐng)求對(duì)該目的地的相同命令隊(duì)列寫(xiě)入,該命令隊(duì)列內(nèi)確保完成命令,因而僅最后的命令需要將信號(hào)傳回該線程。但若該線程采用多個(gè)命令隊(duì)列(排序和讀出),這些命令請(qǐng)求就必需分解成獨(dú)立的環(huán)境任務(wù),以便通過(guò)環(huán)境對(duì)換保持排序。本節(jié)開(kāi)頭提出的特例涉及對(duì)FBUS狀態(tài)信息釆用FBI至傳送寄存器的非請(qǐng)求型推(PUSH)的某類(lèi)操作。為了保護(hù)傳送寄存器的讀/寫(xiě)判定,F(xiàn)BI當(dāng)設(shè)定這些專(zhuān)用FBI推操作時(shí)提供一專(zhuān)用的推保護(hù)信號(hào)。采用FBI非請(qǐng)求型推方法的任何微引擎22必須在存取傳送寄存器同意的FBUS接口/微引擎前測(cè)試該保護(hù)標(biāo)志。若該標(biāo)志并非肯定,該微引擎便可存取傳送寄存器。若該標(biāo)志肯定,則存取寄存器前環(huán)境應(yīng)等待N周期。根據(jù)所推的傳送寄存器個(gè)數(shù)加上前端保護(hù)窗,確定先驗(yàn)的此計(jì)數(shù)?;舅枷胧?,微引擎必須測(cè)試此標(biāo)志,然后以連續(xù)周期快速將希望從所讀傳送寄存器讀出的數(shù)據(jù)移到GPR,因而推引擎不與微引擎讀出沖突。其他實(shí)施例應(yīng)理解,雖然結(jié)合詳細(xì)說(shuō)明描述了本發(fā)明,但上述描述用于說(shuō)明,并非限定本發(fā)明范圍,該范圍由所附權(quán)利要求的范圍限定。其他方而、優(yōu)點(diǎn)和修改均在以下權(quán)利要求書(shū)范圍內(nèi)。權(quán)利要求1.一種處理引擎處所用的方法,該處理引擎處于一具有多個(gè)可編程多線程處理引擎的處理器內(nèi),其特征在于,所述方法包括執(zhí)行具有第一程序計(jì)數(shù)器的第一線程的至少一個(gè)指令,所述至少一個(gè)指令包括向所述多個(gè)處理引擎所共用的資源發(fā)出一請(qǐng)求的至少一個(gè)指令;在處理引擎執(zhí)行所述至少一個(gè)指令向所述共用的資源發(fā)出所述請(qǐng)求之后,將執(zhí)行對(duì)換至一具有第二程序計(jì)數(shù)器的第二線程;以及在檢測(cè)出響應(yīng)對(duì)所述共用的資源的請(qǐng)求而生成的信號(hào)之后,將執(zhí)行對(duì)換至所述第一線程。2.如權(quán)利要求l所述的方法,其特征在于,還包括選擇一線程以便由所述處理引擎執(zhí)行。3.如權(quán)利要求2所述的方法,其特征在于,所述處理引擎的線程包括具有下列狀態(tài)其中之一的線程當(dāng)前正由所述引擎執(zhí)行;可用于執(zhí)行、但當(dāng)前未執(zhí)行;以及在處于可用于執(zhí)行之前等待對(duì)一信號(hào)的檢測(cè),其中所述選擇步驟包從可用于執(zhí)行、但當(dāng)前未執(zhí)行的各線程當(dāng)中選擇一線程。4.如權(quán)利要求3所述的方法,其特征在于,所述選擇所述線程的步驟包括按循環(huán)在可用于執(zhí)行、但當(dāng)前未執(zhí)行的各線程當(dāng)中選擇所述線程。5.如權(quán)利要求2所述的方法,其特征在于,選擇所述線程的步驟包括在檢測(cè)出所述信號(hào)之后但將執(zhí)行對(duì)換至所述第一線程之前選擇一不同于所述第一線程的線程。6.如權(quán)利要求l所述的方法,其特征在于,將執(zhí)行對(duì)換的步驟包括選擇一與所選定線程相關(guān)聯(lián)的程序計(jì)數(shù)器。7.如權(quán)利要求l所述的方法,其特征在于,還包括在所述至少一個(gè)指令向所述共用的資源發(fā)出所述請(qǐng)求之后但將所述第一線程對(duì)換出去之前執(zhí)行所述第一線程的另外指令。8.如權(quán)利要求l所述的方法,其特征在于,還包括執(zhí)行一所述第一線程明確請(qǐng)求線程對(duì)換的指令;以及響應(yīng)所述明確請(qǐng)求線程對(duì)換的指令,將執(zhí)行對(duì)換至所述第二線程。9.如權(quán)利要求8所述的方法,其特征在于,所述第一線程明確請(qǐng)求線程對(duì)換的所述指令,不包括一向共用的資源發(fā)出一請(qǐng)求的指令。10.如權(quán)利要求l所述的方法,其特征在于,所述至少一個(gè)指令對(duì)所述信號(hào)進(jìn)行識(shí)別。11.如權(quán)利要求l所述的方法,其特征在于,所述信號(hào)包括一響應(yīng)對(duì)所述請(qǐng)求提供的服務(wù)而生成的信號(hào)。12.如權(quán)利要求l所述的方法,其特征在于,所述共用的資源包括下列其中之一一存儲(chǔ)器,為處于所述處理器內(nèi)部的所述多個(gè)處理引擎所共用;以及一存儲(chǔ)器,為處于所述處理器外部的所述多個(gè)處理引擎所共用。13.如權(quán)利要求l所述的方法,其特征在于,還包括接收一分組;以及用所述第一線程處理所述分組。14.一種網(wǎng)絡(luò)設(shè)備,其特征在于,包括至少一個(gè)以太網(wǎng)媒體存取控制器;至少一個(gè)處理器,與所述至少一個(gè)以太網(wǎng)媒體存取控制器以通信方式連接,所述至少一個(gè)處理器包括多個(gè)可編程的多線程處理引擎,這些引擎中的單個(gè)引擎均包括一仲裁器來(lái)選擇一線程加以執(zhí)行;至少一個(gè)存儲(chǔ)器的至少一個(gè)接口,處于所述網(wǎng)絡(luò)處理器的外部;以及所述至少一個(gè)以太網(wǎng)媒體存取控制器的至少一個(gè)接口,其中所述至少一個(gè)存儲(chǔ)器處于所述網(wǎng)絡(luò)處理器的外部。15.如權(quán)利要求14所述的設(shè)備,其特征在于,所述處理引擎中的各個(gè)處理引擎的各線程包括具有下列狀態(tài)其中之一的諸多線程.-當(dāng)前正由所述處理引擎執(zhí)行;可用于執(zhí)行、但當(dāng)前未由所述處理引擎執(zhí)行;以及在處于可用于執(zhí)行之前等待對(duì)一與針對(duì)所述處理引擎所共用資源的請(qǐng)求相關(guān)聯(lián)的信號(hào)的檢測(cè),其中一單個(gè)處理引擎的所述仲裁器從可用于執(zhí)行、但當(dāng)前未執(zhí)行的各線程當(dāng)中選擇一線程。16.如權(quán)利要求15所述的設(shè)備,其特征在于,所述仲裁器按循環(huán)在可用于執(zhí)行的各線程當(dāng)中選擇。17.如權(quán)利要求14所述的設(shè)備,其特征在于,各所述單個(gè)處理引擎用一與所述處理引擎的仲裁器所選定線程相關(guān)聯(lián)的程序計(jì)數(shù)器。18.如權(quán)利要求14所述的設(shè)備,其特征在于,各所述處理引擎以一包括至少一個(gè)明確請(qǐng)求當(dāng)前線程對(duì)換的指令在內(nèi)的指令集為特征。19.一種處理器,其特征在于,包括多個(gè)可編程的多線程處理引擎,這些引擎中的單個(gè)引擎均包括一仲裁器來(lái)選擇一線程加以執(zhí)行;一處于所述網(wǎng)絡(luò)處理器內(nèi)部的存儲(chǔ)器,為多處理引擎所共用;至少一個(gè)存儲(chǔ)器的至少一個(gè)接口,處于所述網(wǎng)絡(luò)處理器的外部;以及至少一個(gè)媒體存取控制器的至少一個(gè)接口。20.如權(quán)利要求19所述的處理器,其特征在于,所述處理引擎中的各個(gè)處理引擎的各線程包括具有下列狀態(tài)其中之一的諸多線程當(dāng)前正由所述處理引擎執(zhí)行;可用于執(zhí)行、但當(dāng)前未由所述處理引擎執(zhí)行;以及在處于可用于執(zhí)行之前等待對(duì)一與針對(duì)所述處理引擎所共用資源的請(qǐng)求相關(guān)聯(lián)的信號(hào)的檢測(cè),其中所述處理引擎的所述仲裁器從可用于執(zhí)行、但當(dāng)前未執(zhí)行的各線程當(dāng)中選擇一線程。21.如權(quán)利要求20所述的處理器,其特征在于,所述仲裁器按循環(huán)在可用于執(zhí)行的各線程當(dāng)中選擇。22.如權(quán)利要求19所述的處理器,其特征在于,各所述處理引擎用一與所述處理引擎的仲裁器所選定線程相關(guān)聯(lián)的程序計(jì)數(shù)器。23.如權(quán)利要求19所述的處理器,其特征在于,各所述處理引擎以一包括至少一個(gè)明確請(qǐng)求線程對(duì)換的指令在內(nèi)的指令集為特征。全文摘要說(shuō)明并行的硬件多線程處理器。該處理器包含一個(gè)諧調(diào)系統(tǒng)功能的通用處理器和支持多個(gè)硬件線程和多個(gè)微引擎。該處理器還包含具有第1存儲(chǔ)控制器和第2存儲(chǔ)控制器的存儲(chǔ)器控制系統(tǒng),第1存儲(chǔ)控制器根據(jù)存儲(chǔ)器訪問(wèn)是指向偶數(shù)存儲(chǔ)組還是指向奇數(shù)存儲(chǔ)組,將存儲(chǔ)器訪問(wèn)加以分類(lèi),第2存儲(chǔ)控制器則根據(jù)存儲(chǔ)器訪問(wèn)是讀訪問(wèn)還是寫(xiě)訪問(wèn),對(duì)存儲(chǔ)器訪問(wèn)進(jìn)行優(yōu)化。文檔編號(hào)G06F9/38GK101221493SQ200710180338公開(kāi)日2008年7月16日申請(qǐng)日期2000年8月17日優(yōu)先權(quán)日1999年8月31日發(fā)明者D·F·胡珀,D·伯恩斯坦因,G·沃爾里奇,M·J·阿迪萊塔,W·維勒申請(qǐng)人:英特爾公司