專利名稱:用于多線程并行處理器的指令的制作方法
背景本發(fā)明涉及計算機(jī)處理器的指令。
并行處理是在計算過程中并發(fā)事件信息處理的有效形式。與順序處理相反,并行處理要求在一臺計算機(jī)上同時執(zhí)行多個程序。在并行處理器的范圍,并行性意味著在同一時刻做一件以上的事情。不象所有任務(wù)在單個工作站上順序完成的串行樣式,或各任務(wù)在專門的工作站上完成的管線機(jī)器,對于并行處理提供多個工作站,每個工作站能完成所有任務(wù)。即,通常全部或者多個工作站同時且獨(dú)立地在一個問題的同一個或共同的單元上工作。某些問題適合于應(yīng)用并行處理來解決。
附圖簡述
圖1表示使用基于硬件的多線程(multithreaded)處理器的一個通訊系統(tǒng)的方框圖。
圖2表示圖1中基于硬件的多線程處理器的詳細(xì)方框圖。
圖3表示使用在圖1及圖2中基于硬件的多線程處理器的微引擎(microengine)功能單元的方框圖。
圖4表示在圖3中微引擎的管線的方框圖。
圖5A和圖5B表示與指令有關(guān)的上下文(Content)的示例性格式圖。
圖6表示通用寄存器地址安排的方框圖。
圖7表示用于在基于硬件的多線程處理器中使用的增強(qiáng)帶寬操作的存儲控制器的方框圖。
圖7A表示在圖7的SDRAM控制器中的判優(yōu)策略的流程圖。
圖7B表示優(yōu)化SDRAM控制器的優(yōu)點(diǎn)的時序圖。
圖8表示在基于硬件的多線程處理器中使用的等待時間限止的操作的存儲控制器的方框圖。
圖8A表示優(yōu)化SRAM控制器的優(yōu)點(diǎn)的時序圖。
圖9表示圖1中處理器的通訊總線接口方框圖。
描述參考圖1,通訊系統(tǒng)10數(shù)據(jù)包括并行的基于硬件的多線程處理器12?;谟布亩嗑€程處理器連接到如PCI的總線14,存儲器系統(tǒng)16和第二總線18。系統(tǒng)10對于能分解成各并行子任務(wù)或功能的任務(wù)特別有用。具體說來,基于硬件的多線程處理器12對于面向帶寬而非面向等待時間的任務(wù)是有用的?;谟布亩嗑€程處理器12具有多個微引擎22,每個具有能同時獨(dú)立地在一個任務(wù)上工作的多個硬件控制的線程。
基于硬件的多線程處理器12還包括一個中央控制器20,它幫助加載對基于硬件的多線程處理器12的微碼控制,并完成其他通用計算機(jī)類型的功能,如處理協(xié)議,例外處理,對數(shù)據(jù)包處理的額外支持,其中微引擎將數(shù)據(jù)包送出,進(jìn)行如邊界條件那樣的更詳細(xì)的處理。在實施例中,處理器20是基于StrongArm(Arm是英國ARM有限公司的商標(biāo))的結(jié)構(gòu)。通用微處理器20具有操作系統(tǒng)。通過操作系統(tǒng),處理器20能調(diào)用功能在微引擎22a~22f上操作。處理器20能使用任何支持的操作系統(tǒng),最好是實時操作系統(tǒng)。對于作為實現(xiàn)StrongArm的核心處理器,能夠使用的操作系統(tǒng)如Microsoft NT。Real time,VXWorks和□CUS,一個在因特網(wǎng)上可用的自由件(Freeware)操作系統(tǒng)。
基于硬件的多線程處理器12還包括多個功能微引擎22a~22f。功能微引擎(微引擎)22a~22f中每個保持多個硬件的程序計數(shù)器和與這些程序記數(shù)器有關(guān)的狀態(tài)。實際上,雖然在任何時刻只有一個微引擎在操作,對應(yīng)的多個線程組能在每個微引擎22a~22f上同時活動。
在實施例中,有6個微引擎22a~22f,如圖所示,每個微引擎22a~22f具有處理4個硬件線程的能力。6個微引擎22a~22f帶著包括存儲器系統(tǒng)16和總線接口24和28的共享資源操作。存儲器系統(tǒng)16包括同步動態(tài)隨機(jī)存儲器(SDRAM)控制器26a和靜態(tài)隨機(jī)存儲器(SRAM)控制器26b。SDRAM存儲器16a和SDRAM控制器26a通常用于處理大量的數(shù)據(jù),如處理從網(wǎng)絡(luò)數(shù)據(jù)包來的網(wǎng)絡(luò)有效載荷(Payload)的處理。SRAM控制器26b和SRAM存儲器16b用于對低等待時間,快速訪問任務(wù)的網(wǎng)絡(luò)實現(xiàn),如訪問查找表,用于核心處理器20的存儲器等。
6個微引擎22a~22f根據(jù)數(shù)據(jù)的特性訪問SDRAM16a或SRAM16b。因此,低等待時間低帶寬的數(shù)據(jù)存入SRAM并從中取出,而等待時間不重要的較高帶寬的數(shù)據(jù)存入SDRAM并從中取出。微引擎22a~22f能執(zhí)行到SDRAM控制器26a或SRAM控制器26b的存儲器調(diào)用。
硬件多線程的優(yōu)點(diǎn)能能過SRAM或SDRAM存儲器的訪問解釋。作為一個例子,從一個微引擎通過Thread-0請求的SRAM訪問引起SRAM控制器26b起動對SRAM存儲器16b的訪問。SRAM控制器對SRAM總線判優(yōu),訪問SRAM16b,從SRAM16b取數(shù)據(jù),并將數(shù)據(jù)返回到請求的微引擎22a~22f。在SRAM訪問期間,如果如22a那樣的微引擎只有單個線程能操作,那個微引擎在數(shù)據(jù)從SRAM返回前休眠。通過使用每個微引擎22a~22f中的硬件內(nèi)容(Contert)交換,硬件內(nèi)容交換使得帶單獨(dú)程序計數(shù)器的其他上下文在那同一個微引擎中執(zhí)行。因此,在第一線程,如Thread_0,在等待讀數(shù)據(jù)返回的同時,另外的線程,如Thread_1,能運(yùn)行。在執(zhí)行期間,Thread_1可能訪問SDRAM存儲器16a。在Thread_1在SDRAM單元上操作,且Thread_0在SRADM上操作的同時,一個新的線程,如Thrad_2現(xiàn)能在微引擎22a中操作。Thrad_2能操作一定時間,直至它需要訪問存儲器或完成某些長等待時間的操作,如作出對總線接口的訪問。因此,處理器12能同時具有總線操作,SRAM操作和SDRAM操作,所有均由一個微引擎操作或完成,并還有一個線程可用于在數(shù)據(jù)通道中處理更多的工作。
硬件內(nèi)容交換還與任務(wù)的完成同步。例如,兩個線程能到達(dá)同一個共享資源,如SRAM。如FBUS接口28,SRAM控制器26a,和SDRAM控制器26b這些分別的功能單元的每一個,當(dāng)它們完成一個從一個微引擎線程上下文不斷的請求的任務(wù)時,回報一個標(biāo)志,通知一個操作的完成。當(dāng)微引擎接收到該標(biāo)志時,該微引擎決定打開哪個線程。
基于硬件的多線程處理器12的應(yīng)用一個例子是用作一個網(wǎng)絡(luò)處理器。作為一個網(wǎng)絡(luò)處理器,基于硬件的多線程處理器12接口到網(wǎng)絡(luò)設(shè)備,如媒體訪問控制設(shè)備,例如10/100BaseT Octal MAC13a或Gigabit Ethernet設(shè)備13b。通常,作為一個網(wǎng)絡(luò)處理器?;谟布亩嗑€程處理器12能接口到接收/發(fā)送大量數(shù)據(jù)的任何類型的通訊設(shè)備或接口。在網(wǎng)絡(luò)應(yīng)用中運(yùn)行的通訊系統(tǒng)10能從設(shè)備13a,13b接收多個網(wǎng)絡(luò)數(shù)據(jù)包并以并行方式處理那些數(shù)據(jù)包。采用基于硬件的多線程處理器12,能互相獨(dú)立的處理每個網(wǎng)絡(luò)數(shù)據(jù)包。
使用處理器12的另一個例子是用于頁面圖象(Postscript)處理器的打印機(jī)引擎,或作為用于如RAID盤存儲器那樣的存儲子系統(tǒng)。另一個應(yīng)用是作為匹配引擎來匹配買方和賣方之間的訂單。在系統(tǒng)10上能完成這些和其他并行類型的任務(wù)。
處理器12包括將處理器連接到第二總線18的一個總線接口28。在實施例中,總線接口28將處理器12連接到所謂的FBUS18 CFIFO總線)。FBUS接口28負(fù)責(zé)控制并將處理器接口到FBUS18。FBUS18是64位寬的FIFO總線,用于接口到媒體訪問控制器(MAC)設(shè)備。
處理器12包括如PCI總線接口24的第二接口,它將插在PCI總線上的系統(tǒng)部件連接到處理器12。PCI總線提供到如SDRAM存儲器16a那樣的存儲器16的高速數(shù)據(jù)通道24a。通過該通道,數(shù)據(jù)能借助直接存儲器訪問(DMA)從SDRAM16a穿過PCI總線14快速地移動?;谟布亩嗑€程處理器12支持圖象傳輸?;谟布亩嗑€程處理器12能使用多個DMA通道,所以如果DMA傳輸?shù)囊粋€目標(biāo)忙,另一個DMA通道能擔(dān)當(dāng)PCI總線將信息提交到另一個目標(biāo),以保持高的處理器的效率。此外,PCI總線接口24支持目標(biāo)和基本的操作。目標(biāo)操作是那樣的操作,其中在總線14上的從屬設(shè)備通過從屬于目標(biāo)操作的讀和寫訪問SDRAM。在基本操作中,處理器20直接將數(shù)據(jù)發(fā)送到PCI接口或直接從中接收數(shù)據(jù)。
每個功能單元連結(jié)到一個或多個內(nèi)部總線。如下面所述,內(nèi)部總線是雙32位總線(即一根總線用于讀,一根總線用于寫)?;谟布亩嗑€程處理器12還構(gòu)造成使得在處理器12中內(nèi)部總線的帶寬之和超過連結(jié)到處理器12的外部總線的帶寬。處理器12包括內(nèi)部核心處理器總線32,如ASB總線(先進(jìn)系統(tǒng)總線),它將處理器核心20連接到存儲控制器26a,26c并連接到下述的ASB翻譯點(diǎn)30。ASB總線是與Strong Arm處理核心一起使用的所謂的AMBA總線的子集。處理器12還包括專用總線34,它將微引擎單元連續(xù)到SRAM控制器26b,ASB翻譯器30和FBUS接口28。存儲器總線38將存儲控制器26a,26b連接到總線接口24和28,以及包括用于自引導(dǎo)操作的閃存隨機(jī)存儲器的存儲器系統(tǒng)16等。
參考圖2,每個微引擎22a~22f包括一個判優(yōu)器,它檢查標(biāo)志以確定要操作的可用線程。從任何微引擎22a~22f來的任何線程能訪問SDRAM控制器26a,SDRAM控制器26b或FBUS接口28。存儲控制器26a和26b的每一個包括多個隊列,存儲未完成的存儲器調(diào)用請求。此隊列保持存儲器調(diào)用的次序或者安排存儲器調(diào)用以優(yōu)化存儲器帶寬。例如,如果thread_0(thread_線程)與Thread_1沒有任何依賴關(guān)系,thread_0和thread_1沒有理由不能不按次序地完成它們的存儲器調(diào)用。微引擎22a~22f發(fā)出存儲器調(diào)用請求到存儲控制器26a和26b。微引擎22a~22f用足夠的存儲器調(diào)用操作充滿存儲器子系統(tǒng)26a和26b,使得存儲器子系統(tǒng)26a和26b成為處理器12操作的瓶頸。
如果存儲器子系統(tǒng)用本質(zhì)上獨(dú)立的存儲器請求充滿,處理器12能實現(xiàn)存儲器調(diào)用排序。存儲調(diào)用排序能改善可得到的存儲器帶寬。如下所述,存儲器調(diào)用排序減少了在訪問SRAM中發(fā)生的停頓時間或泡沫。對于對SRAM的存儲器調(diào)用,將在信號線上的電流方向在讀和寫之間切換產(chǎn)生一個泡沫或停頓時間,等待在將SRAM 16b連接到SRAM控制器26b的導(dǎo)線上的電流穩(wěn)定。
即,驅(qū)動在總線上電流的驅(qū)動器需要在改變狀態(tài)的前穩(wěn)定下來。因此,一個讀接著一個寫的重復(fù)周期能破壞峰值帶寬。存儲器調(diào)用排序允許處理器12組織對存儲器的調(diào)用,使得一長串的讀后面接著一長串的寫。這樣能用于使管線中的停頓時間最少,有效地達(dá)到接近于最大可用帶寬。調(diào)用排序幫助維持并行的硬件內(nèi)容線程。在SDRAM,調(diào)用排序使隱去了從一個存儲區(qū)到另一個存儲區(qū)的預(yù)加載。具體說來,如果存儲器系統(tǒng)16b被組織成一個奇數(shù)存儲區(qū)和一個偶數(shù)存儲區(qū),在處理器在奇數(shù)存儲區(qū)運(yùn)行的同時,存儲控制器能開始預(yù)加載偶數(shù)存儲區(qū)。如果存儲器調(diào)用在奇數(shù)和偶數(shù)存儲區(qū)之間交替,預(yù)加載是可能的。通過排列存儲器調(diào)用的次序交替訪問相反的存儲區(qū),處理器12改善了SDRAM的帶寬。此外,也可使用另外的優(yōu)化。例如,可以使用將可以合并的操作在存儲器訪問前合并的合并優(yōu)化,通過檢查地址使已打開的存儲器頁不再重新打開的打開頁優(yōu)化,如下所述的鏈接,和刷新機(jī)構(gòu)。
FBUS接口28支持對每個MAC設(shè)備支持的發(fā)送的接收標(biāo)志,以及指出何時需要服務(wù)的中斷標(biāo)志,F(xiàn)BUS接口28還包括控制器28a,它完成對從FBUS18進(jìn)入的數(shù)據(jù)包的頭標(biāo)處理。控制器28a提取數(shù)據(jù)包的頭標(biāo)并完成在SRAM中的可編微程序源/目標(biāo)/協(xié)議/散列的查找(用于地址光滑)。如果散列未能成功地分解,將數(shù)據(jù)包的頭標(biāo)送到處理器核心20用于進(jìn)一步處理。FBUS接口28支持下列內(nèi)部數(shù)據(jù)事務(wù),F(xiàn)BUS單元(共享總線SRAM)到/從微引擎FBUS單元(通過專用總線)從SDRAM單元寫FBUS單元(通過MBUS)讀入SDRAMFBUS18是標(biāo)準(zhǔn)的工業(yè)總線并包括如64位寬的數(shù)據(jù)總線以及對地址和讀/寫控制的邊帶控制。FBUS接口28提供使用一系列輸入和輸出FIFO29a~29b輸入大量數(shù)據(jù)的能力。從FIFO 29a~29b微引擎22a~22f取出數(shù)據(jù),或命令SDRAM控制器26b將從總線18上的設(shè)備來到接收FIFO的數(shù)據(jù)傳到FBUS接口28。該數(shù)據(jù)能通過存儲控制器26a,借助直接存儲器訪問,送到SDRAM存儲器16a。類似地,微引擎能將數(shù)據(jù)從SDRAM26a移到接口28,經(jīng)過FBUS接口28移出FBUS18。
在微引擎之中數(shù)據(jù)功能是分布式的。到SRAM26a,SDRAM26b和FBUS28的連接是通過命令請求。例如,一個命令請求能將數(shù)據(jù)從位于微引擎22a中的寄存器移動共享資源,如SDRAM位置,SRAM位置,閃存存儲器或某些MAC地址。命令被發(fā)出到每個功能單元的共享資源。然而,共享資源不需要保持?jǐn)?shù)據(jù)的局部緩沖。相反,共享資源訪問位于微引擎內(nèi)部的分布式數(shù)據(jù)。這使微引擎22a~22f局部訪問數(shù)據(jù),而不是判優(yōu)訪問總線去冒險競爭總線。以此特征,對于微引擎22a~22f內(nèi)部數(shù)據(jù)的等待是0個周期停頓。
連結(jié)如存儲控制器26a和26b那樣的共享資源的數(shù)據(jù)總線,如ASB總線30,SRAM總線34和SDRAM總線38,有足夠的帶寬,使得沒有瓶頸。因此,為了避免瓶頸,處理器12具有帶寬要求,為每個功能單元至少提供兩倍內(nèi)部總線的最大帶寬。作為例子,SDRAM能在83MHz運(yùn)行64們寬的總線。SRAM數(shù)據(jù)總線能具有分別的讀寫總線,如能有在166MHz下運(yùn)行的32位寬的讀總線和166MHz下32位寬的寫總線。實際上是在166MHz運(yùn)行64位,是SDRAM帶寬的兩倍。
核心處理器20也能訪問共享資源。核心處理器通過總線32具有到SDRAM控制器26a,到總線接口24和到SRAM控制器26b的直接通訊。然而,為了訪問微引擎22a~22f和位于任何微引擎22a~22f的傳輸寄器,核心處理器20通過在總線上的ASB翻譯器訪問微引擎22a~22f。ASB翻譯器30在物理上能駐留在FBUS接口28,但在邏輯上是單純的。ASB翻譯器30完成在FBUS微引擎輿寄存器位置和核心處理器地址(即ASB總線)之間的地址翻譯,使得核心處理器20能訪問屬于微引擎22a~22c有的寄存器。
雖然微引擎能如下所述那樣使用寄存器組交換數(shù)據(jù),還提供便箋式存儲器27,以允許微引擎將數(shù)據(jù)寫出到該存儲器為其他微引擎讀取。便箋式存儲器27連接到總線34。
處理器核心20包括一個RISC核心50,它實現(xiàn)在5個階段管理中在一周期中完成一個或兩個操作數(shù)的單個循環(huán)移位,處理器核心還提供乘法支持和32位滾動移位支持。此RISC核心50是標(biāo)準(zhǔn)的Strong Arm結(jié)構(gòu),但為了性能的原因以5階段管線實現(xiàn)。處理器核心20還包括16千字節(jié)指定高速緩存52和8千字節(jié)數(shù)據(jù)高速緩存54和預(yù)取流緩存56。核心處理器20與存儲器寫及取指令并行地完成算術(shù)運(yùn)算。核心處理器20通過ARM確定的ASB總線與其他功能單無接口。ASB總線是32位雙向總線32。
微引擎參考圖3,示出微引擎22a~2f中的示例性的一個,如微引擎22f。微引擎包括一個控制存儲70,在實施例中它包括1024個32位字的RAM。該RAM存儲微程序。微程序可通過核心處理器20加載。微引擎22f還包括控制器邏輯72??刂破鬟壿嫲ㄒ粋€指令解碼器73和程序計數(shù)器(PC)單元72a~72d。以硬件形式保持4個微程序計數(shù)器72a~72d。微引擎22f還包括上下文事件切換邏輯74。上下文事件邏輯74接收從每個共享資源,如SRAM 26a,SDRAM 26b,或處理器核心20,控制和狀態(tài)寄存器等,接收消息(如SEQ_#_EVENT_RESPONSE;FBI_EVENT_RESPONSE;SRAM_EVENT_RESPONSE;SDRAM_EVENT_PESPONSE;和ASB-EVENT-RESPONSE)。這些消息提供有關(guān)請求的功能是否已完成的信息,根據(jù)由一個線程請求的功能是否完成以及是否已發(fā)完成信號,該線程需要等待完成信號,而且如果該線程能夠操作,則該線程被放置在可用線程表(未示出)。微引擎22f能具有最大的可用的線程,如4個。
除了對執(zhí)行線程是局部的事件信號以外,微引擎22使用全局的信號狀態(tài)。帶著信號狀態(tài),執(zhí)行的線程能對所有微引擎22廣播信號狀態(tài)。接收請求有效(Receive Request Available)信號,在微引擎中任何所有的線程能接這些信號狀態(tài)轉(zhuǎn)移。能使用這些信號狀態(tài)確定資源的可用性或是否資源準(zhǔn)備服務(wù)。
上下文事件邏輯74具有對4個線程的判優(yōu)。在實施例中,判優(yōu)是一個循環(huán)機(jī)構(gòu)。也能使用其他技術(shù),包括優(yōu)先級隊列或加權(quán)的公平隊列。微引擎22f還包括一個執(zhí)行框(EBOX)數(shù)據(jù)通道76,它包括算術(shù)邏輯單元76a和通用寄存器組76b。算術(shù)邏輯單元76a完成算術(shù)和邏輯功能以及移位功能。寄存器組76b具有相當(dāng)大量的通用寄存器。如圖6所描述,在此實施中,在第一存儲區(qū)BankA有64個通用寄存器,在第2存儲區(qū)Bank B中也有64個。如下面描述,通用寄存器分窗,使得它們能相對地和絕對地編址。
微引擎22f還包括一個寫傳輸寄存器堆棧78和一個讀傳輸寄存器堆棧80。這些寄存器也分窗,所以它們可以相對地和絕對地編址。寫寧夏存器堆棧78是寫到資源的數(shù)據(jù)放置之處。類似地,讀寄存器堆棧80用于從共享資源返回的數(shù)據(jù)。在數(shù)據(jù)到達(dá)之后或同時,從如SRAM控制器26a,SDRAM控制器26b或核心處理器20那樣的有關(guān)共享資源提供一個事件信號給上下文事件判優(yōu)器74,它隨后提醒線程數(shù)據(jù)可用或已發(fā)出。傳輸寄存器存儲區(qū)78和80均通過數(shù)據(jù)通道連結(jié)到執(zhí)行框(EBOX)76。在一個實施中,讀傳輸寄存器有64個寄存器且寫傳輸寄存器也有64個寄存器。
參考圖4,微引擎數(shù)據(jù)通道保持5階段微管線82。該管線包括微指令查找82a,形成寄存器文件地址82b,從寄存器文件讀操作數(shù)82c,ALU,移位或比較操作82d,和結(jié)果寫回到寄存器82e。通過提供寫回數(shù)據(jù)旁路到ALU/移位單元,并通過假設(shè)寄存器作為寄存器文件實現(xiàn)(而不是RAM),微引擎能同時完成寄存器文件的讀和寫,這就完全隱去了寫操作。
SDRAM接口26a提供一個返回信號到請求讀的微引擎,指出在讀請求中是否發(fā)生奇偶校驗錯誤。當(dāng)微引敬使用任何返回數(shù)據(jù)時,微引擎的微碼負(fù)責(zé)檢查SDRAM的讀奇偶校驗標(biāo)志。在檢查此標(biāo)志時,如果它被置位,限據(jù)它轉(zhuǎn)移的指令清除它。只有當(dāng)SDRAM能夠校驗且SDRAM是奇偶校驗保護(hù)的,才能發(fā)出奇偶校驗標(biāo)志。微引擎和PCI單元是僅有被告知奇偶校驗錯誤的請求者。因此,如果處理器核心20或FIFO需要奇偶校驗保護(hù),微引擎在請求中予以協(xié)助。微引擎22a~22f支持條件轉(zhuǎn)移。當(dāng)轉(zhuǎn)移決定是由以前的微控制指令置位的條件碼的結(jié)果,發(fā)生最壞情況的條件轉(zhuǎn)移等待(不包括跳轉(zhuǎn))。等待時間示于下面表1中,|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n2|XX|b1|b2|b3|b4|寄存器地址生成 ||n1|cb|XX|XX|b1|b2|b3|寄存器文件查找 |||n1|cb|XX|XX|b1|b2|ALU/shifter/cc ||||n1|cb|XX|XX|b1|寫回|||m2||n1|cb|XX|XX|其中nx是預(yù)轉(zhuǎn)移微字(n1置位條件碼)cb是條件轉(zhuǎn)移bx是轉(zhuǎn)移后的微碼
XX是放棄的微碼如表1所示,直到周期4n1的條件碼被置位,且作出轉(zhuǎn)移決定(在此情況導(dǎo)致在周期與查找轉(zhuǎn)移路徑)。微引擎招致2個周期的轉(zhuǎn)移等待時間的損失,因為在轉(zhuǎn)移路徑開始用操作b1棄滿管線以前它必須在管線中放棄操作n2和n3(緊接著轉(zhuǎn)移后的2個微字)。如果轉(zhuǎn)移未發(fā)生,沒有微字放棄,且執(zhí)行正常延續(xù)。微引擎具有若干機(jī)構(gòu)來減少或消除有效的轉(zhuǎn)移等待時間。
微引擎支持延遲(deferred)轉(zhuǎn)移。延遲轉(zhuǎn)移進(jìn)在傳移發(fā)生以后在轉(zhuǎn)移生效以前,微引擎允許1或2個微字(即轉(zhuǎn)移生效是在時間上延遲)。因此,如果能找到有用的工作來填補(bǔ)在轉(zhuǎn)移微字以后的浪費(fèi)的周期,則轉(zhuǎn)移的等待時間能被隱去。下面示出1個周期的延遲轉(zhuǎn)移,其中n2被允許在cb之后但在b1之前執(zhí)行,|1|2|3|4|5|6|7|8|--------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n2|XX|b1|b2|b3|b4|寄存器地址生成||n1|cb|n2|XX|b1|b2|b3|寄存器文件查找|||n1|cb|n2|XX|b1|b2|ALU/shifter/cc||||n1|cb|n2|XX|b1|寫回 |||||n1|cb|n2|XX|下面示出2周期延遲的轉(zhuǎn)移,其中n2和n3均允許在轉(zhuǎn)移到b1發(fā)生前完成,注意,2周期轉(zhuǎn)移延遲僅當(dāng)條件碼在轉(zhuǎn)移以前的微字上設(shè)置時才允許。
|1|2|3|4|5|6|7|8|9|-------------+----+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n2|n3|b1|b2|b3|b4|b5|寄存器地址生成||n1|cb|n2|n3|b1|b2|b3|b4|寄存器文件查找|||n1|cb|n2|n3|b1|b2|b3|ALU/shifter/cc||||n1|cb|n2|n3|b1|b2|寫回 |||||n1|cb|n2|n3|b1|微引擎也支持條件碼計算,如果在轉(zhuǎn)移以前,作出轉(zhuǎn)移決定的條件碼被設(shè)置成2個或更多的微字,則能消除1個周期的等待時間,因為轉(zhuǎn)移決定能在1個周期以前作出,
|1|2|3|4|5|6|7|8|--------------+----+----+----+----+----+----+----+----+微存儲查找|n1|n2|cb|XX|b1|b2|b3|b4|寄存器地址生成||n1|n2|cb|XX|b1|b2|b3|寄存器文件查找|||n1|n2|cb|XX|b1|b2|ALU/shifter/cc||||n1|n2|cb|XX|b1|寫回 |||||n1|n2|cb|XX|在此例中,n1設(shè)置條件碼且n2不設(shè)置條件碼,因此,在周期4(而非周期5)能作出轉(zhuǎn)移決定,以消除1個周期的轉(zhuǎn)移等待時間。在下例中,1個周期轉(zhuǎn)移延遲和較早設(shè)置條件碼結(jié)合起來完全隱去轉(zhuǎn)移等待時間。
在1周期延遲轉(zhuǎn)移前的2個周期設(shè)置條件碼(cc’s),|1|2|3|4|5|6|7|8|--------------+----+----+----+----+----+----+----+----+微存儲查找 |n1|n2|cb|n3|b1|b2|b3|b4|寄存器地址生成||n1|n2|cb|n3|b1|b2|b3|寄存器文件查找|||n1|n2|cb|n3|b1|b2|ALU/shifter/cc ||||n1|n2|cb|n3|b1|寫回|||||n1|n2|cb|n3|在條件碼不能提前置位(即在轉(zhuǎn)移前在微字中置位)的情況,微引擎支持轉(zhuǎn)移推測,試圖減少1個周期的轉(zhuǎn)移等待時間。借助“推測”轉(zhuǎn)移路徑或順序路徑,微引擎在確切知道執(zhí)行什么路徑前一個周期預(yù)取推測的路徑。如果推測正確,如下所述消取了1個周期的轉(zhuǎn)移等待時間。
推測發(fā)生轉(zhuǎn)移/轉(zhuǎn)移發(fā)生|1|2|3|4|5|6|7|8|----------------+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n1|b1|b2|b3|b4|b5|寄存器地址生成||n1|cb|XX|b1|b2|b3|b4|寄存器文件查找|||n1|cb|XX|b1|b2|b3|ALU/shifter/cc||||n1|cb|XX|b1|b2|寫回 |||||n1|cb|XX|b1|如果推測轉(zhuǎn)移發(fā)生的微碼不正確,微引擎仍然只浪費(fèi)1個周期,推測發(fā)生轉(zhuǎn)移/轉(zhuǎn)移未發(fā)生
|1|2|3|4|5|6|7|8|--------------+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n1|XX|n2|n3|n4|n5|寄存器地址生成||n1|cb|n1|XX|n2|n3|n4|寄存器文件查找|||n1|cb|n1|XX|n2|n3|ALU/shifter/cc||||n1|cb|n1|XX|n2|寫回 |||||n1|cb|n1|XX|然而,當(dāng)微碼推測轉(zhuǎn)移未發(fā)生時,等待時間損失被不同地分布,對推測轉(zhuǎn)移未發(fā)生/轉(zhuǎn)移未發(fā)生,如下所示沒有浪費(fèi)的周期。
|1|2|3|4|5|6|7|8|---------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n1|n2|n3|n4|n5|n6|寄存器地址生成||n1|cb|n1|n2|n3|n4|n5|寄存器文件查找|||n1|cb|n1|n2|n1|b4|ALU/shifter/cc||||n1|cb|n1|n2|n3|寫回 |||||n1|cb|n1|n2|然而對于推測轉(zhuǎn)移未發(fā)生/轉(zhuǎn)移發(fā)生,有2個浪費(fèi)周期。
|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n1|XX|b1|b2|b3|b4|寄存器地址生成 ||n1|cb|XX|XX|b1|b2|b3|寄存器文件查找|||n1|cb|XX|XX|b1|b2|ALU/shifter/cc||||n1|cb|XX|XX|b1|寫回 |||||n1|cb|XX|XX|微引擎能將轉(zhuǎn)移推測與1周期轉(zhuǎn)移延遲相結(jié)合,以進(jìn)一步改善結(jié)果。對于推測轉(zhuǎn)移發(fā)生帶1周期延遲轉(zhuǎn)移/轉(zhuǎn)移發(fā)生是,
|1|2|3|4|5|6|7|8|---------------+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n2|b1|b2|b3|b4|b5|寄存器地址生成||n1|cb|n2|b1|b2|b3|b4|寄存器文件查找|||n1|cb|n2|b1|b2|b3|ALU/shifter/cc||||n1|cb|n2|b1|b2|寫回 |||||n1|cb|n2|b1|在上述情況通過n2的執(zhí)行并由于正確地推測了轉(zhuǎn)移方向隱去了2周期的轉(zhuǎn)移等待時間。如果微碼推測不正確,對地推測轉(zhuǎn)移發(fā)生帶1周期延遲轉(zhuǎn)移/轉(zhuǎn)移未發(fā)生,如下所述仍遭受1周期的轉(zhuǎn)移等待時間。
|1|2|3|4|5|6|7|8|9|---------------+----+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n2|XX|n3|n4|n5|n6|n7|寄存器地址生成||n1|cb|n2|XX|n3|n4|n5|n6|寄存器文件查找|||n1|cb|n2|XX|n3|n4|n5|ALU/shifter/cc ||||n1|cb|n2|XX|n3|n4|寫回 |||||n1|cb|n2|XX|n3|如果微碼不正確地推測轉(zhuǎn)移未發(fā)生,則管線在正常平靜的情況下順序流動。如果微碼不正確地推測轉(zhuǎn)移未發(fā)生,如下所述對推測轉(zhuǎn)移未發(fā)生/轉(zhuǎn)移發(fā)生情況,微引擎再次遭受1周期的沒有結(jié)果的執(zhí)行。
|1|2|3|4|5|6|7|8|9|----------------+----+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n2|XX|b1|b2|b3|b4|b5|寄存器地址生成 ||n1|cb|n2|XX|b1|b2|b3|b4|寄存器文件查找|||n1|cb|n2|XX|b1|b2|b3|ALU/shifter/cc||||n1|cb|n2|XX|b1|b2|寫回 |||||n1|cb|n2|XX|b1|其中nx是預(yù)轉(zhuǎn)移微字(n1設(shè)置條件碼)cb是條件轉(zhuǎn)移bx是轉(zhuǎn)移后微字XX是放棄的微碼在跳轉(zhuǎn)指令情況,招致3個額外周期的等待時間,因為跳轉(zhuǎn)在ALU階段的周期結(jié)束前轉(zhuǎn)移地址是未知的。
|1|2|3|4|5|6|7|8|9|------------+----+----+----+----+----+----+----+----+----+微存儲查找 |n1|jp|XX|XX|XX|j1|j2|j3|j4|寄存器地址生成||n1|jp|XX|XX|XX|j1|j2|j3|寄存器文件查找|||n1|jp|XX|XX|XX|j1|j2|ALU/shifter/cc||||n1|jp|XX|XX|XX|j1|寫回|||||n1|jp|XX|XX|XX|微引擎支持各種標(biāo)準(zhǔn)類型的ALU指令,包括邏輯和算術(shù)操作,它們在一個或二個操作數(shù)上的ALU操作并將結(jié)果放入目標(biāo)寄存器。ALU按照操作的結(jié)果更新所有的ALU條件碼。在上下文交換期間條件碼的值丟失。
參考圖5A,示出上下文轉(zhuǎn)移指令BR=CTX,BR!=CTX。上下文轉(zhuǎn)移指令導(dǎo)致處理器,如微引擎22f,根據(jù)當(dāng)前執(zhí)行指令是否為指定的上下文數(shù)轉(zhuǎn)移到在指定標(biāo)號處的指令。如圖5A所示,上下文轉(zhuǎn)移指令從轉(zhuǎn)移掩碼字段何時等于“8”或“9”而確定。上下文轉(zhuǎn)移指令能具有下述格式,br=ctx[ctx,label#],option_token(選項_標(biāo)記)br?。絚tx[ctx,label#],option_token(選項_標(biāo)記)字段label#是對應(yīng)于指令地址的符號標(biāo)號。字段ctx是上下文數(shù)。在實施例中,有效的ctx值是0,1,2,3。上下文轉(zhuǎn)移指令可以具有選項_標(biāo)記。選項標(biāo)記“defer one”(延遲1)導(dǎo)致微引擎在完成轉(zhuǎn)移指令前執(zhí)行跟在此指令后的一條指令。
如果該上下文是指定數(shù),指令br=ctx轉(zhuǎn)移,且如果該上下文不是指定數(shù),指令br?。絚tx轉(zhuǎn)移。
參考圖5B,上下文交換指令轉(zhuǎn)移的特殊形式,它導(dǎo)致選擇不同的上下文(且與PC相關(guān))。上下文切換或交換也引入某些轉(zhuǎn)移等待時間。考慮下列上下文切|1|2|3|4|5|6|7|8|9|------------+----+----+----+----+----+----+----+----+----+微存儲查找|o1|ca|br|n1|n2|n3|n4|n5|n6|寄存器地址生成 ||o1|ca|XX|n1|n2|n3|n4|n5|寄存器文件查找|||o1|ca|XX|n1|n2|n3|n4|ALU/shifter/cc ||||o1|ca|XX|n1|n2|n3|換,寫回 |||||o1|ca|XX|n1|n2|
其中ox是老的上下文流br是在老的上下文中的轉(zhuǎn)移微字ca是上下文的重判優(yōu)(引起上下文切換)nx是新的上下文流XX是被放棄的微字在上下文切換中,“br”微字被丟棄,以避免由于保存正確的老的上下文PC引起的控制和時序的復(fù)雜化。
按轉(zhuǎn)移前在微字上設(shè)置的ALU條年碼操作的條件轉(zhuǎn)移能選擇0,1或2周期的轉(zhuǎn)移延遲方式。在按照微字操作的條件轉(zhuǎn)移能選擇0或1周期轉(zhuǎn)移延遲方式以前,條件碼設(shè)置2或更多的微字,所有其他轉(zhuǎn)移(包括上下文重新判優(yōu))能選擇0或1周期的轉(zhuǎn)移延遲方式。結(jié)構(gòu)能設(shè)計成使得在以前轉(zhuǎn)移,跳傳或上下文判優(yōu)微字的轉(zhuǎn)移延遲窗中的一個上下文判優(yōu)微字成為非法選項。即,在某些實施例中,在轉(zhuǎn)移過程中不允許發(fā)生上下文交換,因為如上所述,保存老的上下文程序計數(shù)器(PC)可能過分的復(fù)雜化。結(jié)構(gòu)也能設(shè)計成使得在以前的轉(zhuǎn)移,跳轉(zhuǎn)或上下文判優(yōu)微字的轉(zhuǎn)移延遲窗中的轉(zhuǎn)移成為非法,以避免復(fù)雜的和可能未預(yù)見的轉(zhuǎn)移行為。
上下文交換指令CT_ARB將當(dāng)前在指定微引擎中運(yùn)行的上下文交換出去到存儲器中,讓其他上下文在那個微引擎中執(zhí)行。當(dāng)指定的信號激活時,上下文交換指令CT_ARB還喚醒被交換出的上下文。上下文交換指令的格式是ctx_arb[parameter],option_token“parameter”字段能具有若干值中的一個。如果該參數(shù)據(jù)定為“sramswap”,該上下文交換指令將交換出當(dāng)前的上下文并當(dāng)收到線程的SRAM信號時喚醒它。如果該參數(shù)指定為“sram swap”,該上下文交換指令將交換出當(dāng)前的上下文并當(dāng)收到線程的SDRAM信號時喚醒它。該參數(shù)也能指定為”FBI“。并交換出當(dāng)前的上下文,并當(dāng)收到線程的FBI信號時喚醒它。FBI信號指出FBICSR,Scratchpad(便箋存儲器),TFIFO或RFIFO操作已完成。
該參數(shù)能指定成“seq_num1_chamge/seq_num2_chamge”,它交換出當(dāng)前的上下文并當(dāng)順序數(shù)的值改變時喚醒它。該參數(shù)能指定為“inter_thread”,它交換出當(dāng)前的上下文,并當(dāng)收到線程的內(nèi)線程(interthread)信號時喚醒它,或指定為“Voluntary”,如果另外的線程準(zhǔn)備運(yùn)行,交換出當(dāng)前的上下文,否則不作交換。如果該線程被交換出,在某個后續(xù)的上下文判化點(diǎn)它被自動地重新使能運(yùn)行。該參數(shù)能是“auto_push”,它交換出當(dāng)前的上下文并當(dāng)SRAM傳輸讀寄存器數(shù)據(jù)自動地被FBUS接口壓入時喚醒它,該參數(shù)或者是“start)receive”,它交換出當(dāng)前的上下文并當(dāng)在接收FIFO中的新的數(shù)據(jù)包數(shù)據(jù)可用于為此線程處理時喚醒它。
該參數(shù)也能是“kill”,它防止在對該線程的適當(dāng)使能位在CTX_ENABLES寄存器中置位以前再次執(zhí)行當(dāng)前的上下文或線程,也能是“PCI”,它交換出當(dāng)前的上下文且在PCI單元發(fā)生DMA傳輸已經(jīng)完成的信號時喚醒它。
上下文交換指令CTX_ARB能具有下列option_token(選項_標(biāo)記),deferone(延遲1),它規(guī)定在上下文被交換以前,在此調(diào)用后執(zhí)行1條指令。
每個微引擎22a~22f支持4個上下文的多線程執(zhí)行。其一個理由是在一個線程剛發(fā)出存儲器調(diào)用并在做其他工作以前必須等待該調(diào)用完成的情況允許另一個線程開始執(zhí)行。為了維持微引擎的有效的硬件執(zhí)行,此行為是重要的,因為存儲器等待時間是顯著的。換言之,如果只支持單線程,微引擎將空等許多周期,等待調(diào)用返回,因而減少了整個計算產(chǎn)生率。多線程執(zhí)行通過在若干線程間完成有用的獨(dú)立工作允許一個微引擎隱去存儲器等待時間。提供兩個同步機(jī)構(gòu),以便允許一個線程發(fā)出SRAM或SDRAM調(diào)用,并隨后同步到調(diào)用完成的時間點(diǎn)。
一個機(jī)構(gòu)是即時同步(Immediate Synchronization)。在即時同步時,微引擎發(fā)出調(diào)用并立即交換出上下文。當(dāng)對應(yīng)的調(diào)用完成,該上下文收到信號。一旦收到信號,當(dāng)發(fā)生上下文交換(context_swap)事件并輪到它適行時,該上下文將交換回來執(zhí)行。因此,從單個上下文指令流動觀點(diǎn),在發(fā)出存儲器調(diào)用以后的微字直到調(diào)用完成以前不執(zhí)行。
第二機(jī)構(gòu)是延遲同步(Delayed synchronization)。在延遲同步中,微引擎發(fā)出該調(diào)用,并隨后繼續(xù)執(zhí)行某些其他與該調(diào)回?zé)o關(guān)的有用工作。若干時間以后,有必要在另外的工作完成以前,將線程的執(zhí)行流同步到發(fā)生調(diào)用的完成。在這點(diǎn)上執(zhí)行上下文交換指令,它或者交換出當(dāng)前的線程,并在調(diào)用完成時的以后某時刻將其交換回來,或者因為調(diào)用已經(jīng)完成,繼續(xù)執(zhí)行當(dāng)前線程。使用兩個不同的發(fā)信號方案實現(xiàn)延遲同步。
如果存儲器調(diào)用與傳輸寄存器有關(guān),當(dāng)對應(yīng)的傳輸寄存器的有效位置或清除時產(chǎn)生觸發(fā)該線程的信號。例如,將數(shù)據(jù)放入傳輸寄存器A的SRAM讀在對A的有效位被置位時將收到信號。如果存儲器調(diào)用與傳輸FIFO或接收FIFO有關(guān)而不是一個傳輸寄存器,則當(dāng)在SDRAM控制器26a中完成調(diào)用時產(chǎn)生信號。每個上下文只有一個信號狀態(tài)被保持在微引擎調(diào)度器中,因此在此方案中只有一個未完成的信號存在。
至少有兩個普通的操作算法,由此能設(shè)計微控制器的微程序。一個是以單個線程的執(zhí)行等待時間為代價優(yōu)化整個微控制器的計算產(chǎn)生率和整個存儲器帶寬。當(dāng)系統(tǒng)具有多個微引擎執(zhí)行多個線程,每個微引擎操作互不聯(lián)系的數(shù)據(jù)數(shù)據(jù)包時,此算法有意義。
第二個是以整個微引擎的計算產(chǎn)出量的整個存儲器帶寬為代價優(yōu)化微引擎執(zhí)行等待時間。此算法能涉及執(zhí)行具有實時限制的線程,那是這樣的限制,它規(guī)定某個工作絕對必須在某指定時刻做完。那樣的限制需要將單線程執(zhí)行的優(yōu)化賦予高于如存儲器帶寬或整個計算產(chǎn)生量等其他考慮的優(yōu)先權(quán)。實時線程隱含著只執(zhí)行一個線程的單個微引擎。將不處理多線程,因為目的是允許單個實時線程改可能快地執(zhí)行-多線程的執(zhí)行將阻礙此能力。
在發(fā)出存儲器調(diào)用命令和上下文切換方面這兩種算法的編碼內(nèi)格大不相同。在實時情況,目的是盡可能快地發(fā)出盡可能多的存儲器調(diào)用,以便使由這些調(diào)用招致的存儲器等待時間最小。盡可能早地發(fā)出盡可能多的調(diào)用以后,目的是盡可能使諸微引擎以與這些調(diào)用并行的方工完成盡可能多的計算。對應(yīng)于實時優(yōu)化的計算流程是,1)發(fā)出存儲器調(diào)用12)發(fā)出存儲器調(diào)用23)發(fā)出存儲器調(diào)用34)完成與存儲器調(diào)用1,2,和3無關(guān)的工作5)同步到存儲器調(diào)用1的完成6)完成與存儲器調(diào)用1有關(guān)但與存儲器調(diào)用2和3無關(guān)的工作7)根據(jù)以前的工作發(fā)出任何新的存儲器調(diào)用8)同步到存儲器調(diào)用2的完成9)完成與存儲器調(diào)用1和2有關(guān)但與存儲器調(diào)用3無關(guān)的工作10)根據(jù)以前的工作發(fā)出任何新的存儲器調(diào)用11)同步到存儲器調(diào)用3的完成12)完成與所有3個調(diào)用的完成有關(guān)的工作13)根據(jù)以前的工作發(fā)出新的存儲器調(diào)用。
相反,對產(chǎn)生量和帶寬的優(yōu)化采取不用的方法。對于微引擎計算產(chǎn)出量及整個存儲器帶寬的優(yōu)化,在單個線程執(zhí)行等待時間方面給于較少考慮。為此,目的是在對每個線程的整個微程序中等間隔地存儲器調(diào)用,這將提供對SRAMtSDRAM控制器的均勻的存儲器調(diào)用流,并使1個線程永遠(yuǎn)可用的概率最大,以便隱去在另外線程被交換出時的存儲器等待時間。
寄存器文件地址類型參考圖6,存去的兩個寄存器地址空間是局部可訪問的寄存器和可由所有微引擎訪問的全局可訪問寄存器。通用寄存器(GPR)作為兩個分別的存儲區(qū)(A存儲工和B存儲區(qū))實現(xiàn),它們的地址是逐字交替,使A存儲區(qū)寄存器具有l(wèi)sb=0,而B存儲區(qū)寄存器有l(wèi)sb=1(lsb是最低位)。每個存儲區(qū)在其存儲區(qū)由能完成對兩個不同字的同時讀和寫。
在整個存儲區(qū)A和B,寄存器76b也組織成各32個寄存器的4個窗76b0-76b3,它們對每個線程可相對編址。因此,thread_0在77a(寄存器0)處找到其寄存器0,thread_1在77b(寄存器32)處找到其寄存器0,therad_2在77c(寄存器64)處找到其寄存器0,thread_3在77d(寄存器96)處找到其寄存器0。支持相對編址,所以多個線程能使用完全相同的控制存儲和位置而訪問不同的寄存器窗并完成不同的功能。只要在微引擎22f中使用雙口RAM,采用寄存器窗口編址和存儲區(qū)編址提供必要的讀寫寬。
這些分窗的寄存器從上下文切換到上下文切換不必要保存數(shù)據(jù),從而消除了上下文交換文件或堆棧的正常壓入和彈出操作。對于從一個上下文改變到另一個上下文,這里的上下文切換具有0周期的有效負(fù)載。相對寄存器編址在整個通用寄存器組的地址寬度上將寄存器存儲區(qū)分成窗。相對編址允許相對于窗的起點(diǎn)訪問任何窗。在此結(jié)構(gòu)中也支持絕對地址,其中通過提供確切的寄存器地址,任何一個絕對寄存器能被任何線程訪問。
根據(jù)極據(jù)微字的格式通用寄存器78的編址能以2種方工發(fā)生。兩種方式是絕對編址和相對編址。在絕對方式中,寄存器地址的編址直接以7位源字段(a6~a0或b6~b0)指定,
7 6 5 4 3 2 1 0+---+---+---+---+---+---+---+---+A GPR|a6|0|a5|a4|a3|a2|a1|a0| a6=0B GPR|b6|1|b5|b4|b3|b2|b1|b0| b6=0SRAM/ASB|a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=0 SDRAM|a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=1寄存器地址直接以8位目標(biāo)字段(d7~d0)指定,7 6 5 4 3 2 1 0+---+---+---+---+---+---+---+---+A GPR|d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=0B GPR|d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=1SRAM/ASB|d7|d6|d5|d4|d3|d2|d1|d0|d7=1,d6=0,d5=0SDRAM|d7|d6|d5|d4|d3|d2|d1|d0|d7=1,d6=0,d5=1如果<a6∶a5>=1,1;<b6,b5>=1,1,或<d7∶d6>=1,1,則較低位被解釋為與上下文相關(guān)的地址字段(如下所述)。當(dāng)在A、B絕對字段中規(guī)定非相所的A或B的源地址時,只有SRAM/ASB和SDRAM地址空間的較低部分能被編址。實際上,讀絕對SRAM/SDRAM設(shè)備具有有效的地址空間,但是因為此限止不應(yīng)用于目標(biāo)字段,寫SRAM/SDRAM仍然使用全地址空間。
在相對方工中,指定地址的編址是在上下文空間中的偏移量,由5位源字段(a4~a0或b4~b0)確定,7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR|a4|0|上下文|a3|a2|a1|a0|a4=0B GPR|b4|1|上下文|b3|b2|b1|b0|b4=0SRAM/ASB|ab4|0|ab3|上下文|b2|b1|ab0| ab4=1,ab3=0SDRAM |ab4|0|ab3|上下文|b2|b1|ab0| ab4=1,ab3=1或由6位目標(biāo)字段(d5~d0)確定,7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |d5|d4|上下文|d3|d2|d1|d0| d5=0,d4=0B GPR |d5|d4|上下文|d3|d2|d1|d0| d5=0,d4=1SRAM/ASB|d5|d4|d3|上下文|d2|d1|d0| d5=1,d4=0,d3=0
SDRAM|d5|d4|d3|上下文|d2|d1|d0| d5=1,d4=0,d3=1如果<de∶d4>=1,1,則目標(biāo)地址不確定一個有效寄存器地址,因此沒有目標(biāo)操作數(shù)寫回。
下列寄存器是從微引擎和存儲控制器全局可訪問的,散列單元寄存器便箋存儲器和公用寄存器接收FIFO及接收狀態(tài)FIFO發(fā)送FIFO發(fā)送控制FIFO微引擎不是中斷驅(qū)動的。每個微流執(zhí)行到完成,然后根據(jù)由在處理器12中其他的設(shè)備發(fā)信號的狀態(tài)選擇新的流。
參考圖7,SDRAM存儲器26a數(shù)據(jù)包括存儲調(diào)用請求隊列90,從各個微引擎22a~22f來的存儲調(diào)用請求到達(dá)那里。存儲控制器26a包括一個判優(yōu)器91,它選擇下一個微引擎調(diào)用請求到任何一個功能單元。如果一個微引擎是提供一個調(diào)用請求,該調(diào)用請求將通過地址和命令隊列90,進(jìn)入SDRAM控制器26a。如果調(diào)用請求是稱為“optimized MEM bit-優(yōu)化的存儲器位”的位置位,進(jìn)入的調(diào)用請求將被排序到偶數(shù)存儲區(qū)隊列90a或奇數(shù)存儲區(qū)隊列90b。如果存儲器調(diào)用請求不具有存儲器優(yōu)化位置位,默認(rèn)地進(jìn)入到命令隊列90c。SDRAM控制器26是FBUS接口28,核心處理器20和PCI接口24所共享的資源。SDRAM控制器26還維持一狀態(tài)機(jī)用于完成READ-MODIFY-WRITE(讀-修改-寫)原子操作。SDRAM控制器26也完成字節(jié)對齊用于從SDRAM來的數(shù)據(jù)請求。
命令隊列90c保持從各微引擎來的調(diào)用請求的次序。對于一系列奇數(shù)與偶數(shù)存儲區(qū)調(diào)用,只有完成一系列到奇數(shù)及偶數(shù)存儲區(qū)的存儲區(qū)調(diào)用時才需要返回信號。如果微引擎22f將存儲器調(diào)用排序到奇數(shù)存儲器和偶數(shù)存儲區(qū)調(diào)用,且存儲區(qū)之一如偶數(shù)存儲區(qū),在奇數(shù)存儲區(qū)前被排出存儲器調(diào)用,但信號恰肯定最后是偶數(shù)存儲區(qū)調(diào)用,雖然奇數(shù)存儲區(qū)調(diào)用尚未提供服務(wù),存儲控制器26a可以想象地發(fā)信號給微引擎,通知存儲器請求已完成。這種現(xiàn)象就引起一個相干(conherency)問題。為了避免此情況,提供命令隊列90c,允許一個微引擎有多個未完成的存儲器調(diào)用,只有其最后一個存儲器調(diào)用需要發(fā)完成信號。
SDRAM控制器26a還飯知一個高優(yōu)先級隊列90d。在高優(yōu)先級隊列90d中從一個微引擎進(jìn)入的存儲器調(diào)用直接進(jìn)入到高優(yōu)先級隊列,并以比其他隊列中的存儲器調(diào)用更高的優(yōu)先級操作。偶數(shù)存儲區(qū)隊列90a,奇數(shù)存儲區(qū)隊列90b,命令隊列90c,高優(yōu)先級隊列90d,所有這些隊列在單個RAM結(jié)構(gòu)中實現(xiàn),它在邏輯上分成4個不同的窗,每個窗具有其自己的頭指針及尾指針。因為充滿及排出操作僅是單個輸入和單個輸出,它們能放在同一個RAM結(jié)構(gòu)中以增加RAM結(jié)構(gòu)的密度。
SDRAM控制器26a還包括核心總線接口邏輯,即ASB總線92。ASB總線接口邏輯92將核心處理器92接口到SDRAM控制器26a。ASB總線是包括32位數(shù)據(jù)通道和28位地址通道的總線。通過MEM ASB數(shù)據(jù)設(shè)備98,如一個緩沖器,數(shù)據(jù)存入到存儲器或從存儲器取出。MEM ASB數(shù)據(jù)設(shè)備98是用于寫數(shù)據(jù)的隊列。如果有數(shù)據(jù)經(jīng)過ASB接口92從核心處理器20來,該數(shù)據(jù)能存入MEM ASB設(shè)備98,并隨后從MEM ASB設(shè)備98通過SDRAM接口110傳到SDRAM存儲器16a。雖然未顯示,對讀也有同樣的隊列結(jié)構(gòu)。SDRAM控制器26a還包括一個引擎97,從微引擎及PCI總線彈出數(shù)據(jù)。
另外的隊列包括PCI地址隊列94和保存數(shù)個請求的ASB讀/寫隊列96。存儲器請求經(jīng)過多路復(fù)用器106被送到SDRAM接口110。多路復(fù)用器106由SDRAM判優(yōu)器91控制,后者檢測每個隊列的滿度和請求的狀態(tài),并由此根據(jù)存在優(yōu)先級服務(wù)控制寄存器100中的一個可編程值決定優(yōu)先級。
一旦控制多路復(fù)用器106選定一個存儲器調(diào)用請求,該存儲器調(diào)用請求被送到解碼器108,在那里解碼并產(chǎn)生地址。解碼的地址送到SDRAM接口110,在那里被分解成行和列的地址選通,以訪問SDRAM 16a,并經(jīng)數(shù)據(jù)線16a寫或讀數(shù)據(jù),將數(shù)據(jù)送到總線112。在一實施中,總線112實際上是兩個分別的總線而不是單根總線,分別的總線包括一根連結(jié)到分布式微引擎22a~22f的讀總線和一根連接到分布工微引擎22a~22f的寫總線。
SDRAM控制器26a的一個特征是當(dāng)一個存儲器調(diào)用存入隊列90,除了優(yōu)化的MEM位能被置位,還有一個“chaining bit-鏈結(jié)位”。鏈結(jié)位在置位時允許對連續(xù)的存儲器調(diào)用作專門處理。如前提到,判優(yōu)器12控制選中哪個微引擎來通過命令總線(commander bus)將存儲器調(diào)用請求提供到隊列90(圖7)。鏈接位的確定將控制判優(yōu)器選擇以前請求該總線的功能單元,因為鏈接位的置位指出該微引擎發(fā)出一個鏈接請求。
當(dāng)鏈接位置位時,連續(xù)存儲器調(diào)用被收在隊列90中。那些連續(xù)存儲器調(diào)用通常存入命令隊列90c,因為連續(xù)存儲器調(diào)用是從單個線程來的多個存儲器調(diào)用。為了提供同步,存儲控制器26a只需要在鏈接的存儲器調(diào)用做完的終點(diǎn)發(fā)出信號。然而,在一個優(yōu)化的存儲器鏈接中(如當(dāng)優(yōu)化的EME位及鏈接位被置位),存儲器調(diào)用能進(jìn)入不同的存儲區(qū),并在另一個存儲區(qū)完全排出以前可能在一個存儲區(qū)上發(fā)出信號“done-完成”,因此破壞了相干性。因此,控制器110使用鏈接位維持從當(dāng)前的隊列的存儲器調(diào)用。
參考圖7A,示出在SDRAM控制器26a中判優(yōu)策略的流程表示。判優(yōu)策略有利于鏈接的微引擎存儲器請求。過程115通過檢查鏈接的微引擎存儲器調(diào)用請求115a開始。過程115停留在鏈接請求處,直到鏈接位被清除。過程檢查ASB總線請求115b,然后是PCI總線請求115c,高優(yōu)先級隊列服務(wù)115d,相反的存儲區(qū)請求115e,命令隊列請求115f,和同一存儲區(qū)請求115g。鏈接請求是完全地操作,而115d~115d以循環(huán)方式操作。只有當(dāng)操作115a~115d完全退出時過程處理115e~115g。當(dāng)以前的SDRAM存儲器請求已將鏈接位置位時,才是鏈接的微引擎存儲器調(diào)用請求。當(dāng)鏈接位置位時,判優(yōu)引擎簡單地再次操作同一隊列,直到鏈接位被清除。由于當(dāng)ASB在等待狀態(tài)時在strong arm核心上有嚴(yán)重的性能損失,ASB比PCI有較高的優(yōu)先級。由于PCI的等待時間要求,PCI比微引擎有更高的優(yōu)先級。但是對其他總線,判優(yōu)的優(yōu)先級是不同的。
如圖7B所示,示出沒有活動的存儲器優(yōu)化和帶有存儲器優(yōu)化通常的存儲器時序??梢钥吹?,使用活動的存儲器優(yōu)化使得總線的使用最大,因此隱去了在物理的SDRAM設(shè)備中內(nèi)在的等待時間。在比例中,非優(yōu)化的訪問占用14個周期而優(yōu)化的訪問占用7個周期。
參考圖8,示出對SDAM的存儲控制器26b。存儲控制器26b包括奪址和命令隊列120。雖然存儲控制器26a(圖7)對根據(jù)奇數(shù)和偶數(shù)的存儲區(qū)劃分的存儲器優(yōu)化有一個隊列,存儲控制器26b根據(jù)存儲器操作的類型,存儲控制器26b根據(jù)存儲器操作的類型,即讀或?qū)懀M(jìn)行優(yōu)化。地址和命令隊列120包括一個高優(yōu)先級隊列120a,一個讀隊列120b,它是SRAM實現(xiàn)的主要存儲器調(diào)用功能,以及一個命令隊列120c,通常包括所有到SRAM的寫和未經(jīng)優(yōu)化的讀。
雖然未示出,地址和命令隊列120也能包括一個寫隊列。
SRAM控制器26b還包括核心總線接口邏輯,即ASB總線122。ASB總線接口邏輯122將核心處理器20接口到SRAM控制器26b。ASB總線是包括32位數(shù)據(jù)通道和28位地址通道的總線。數(shù)據(jù)經(jīng)過MEM ASB數(shù)據(jù)設(shè)備,如緩沖器,存入存儲器或從中取出。MEM ASB數(shù)據(jù)設(shè)備128是對寫數(shù)據(jù)的隊列。如果存在從核心處理器20經(jīng)過ASB接口122的進(jìn)入數(shù)據(jù),讀數(shù)據(jù)能存入MEM ASB設(shè)備128并隨后從MEM ASB設(shè)備128經(jīng)過SRAM接口140到SRAM存儲器16b。雖然未示出,對讀能有同樣的隊列結(jié)構(gòu)。SRAM控制器26b還包括一個引擎127,將數(shù)據(jù)從微引擎及PCI總線彈出。
存儲器請求經(jīng)過比路復(fù)用器126送到SRAM接口140。多路復(fù)用器126由SRAM判優(yōu)器131換制,后者檢測每個隊列的滿度和請求的狀態(tài),并由此根據(jù)存儲在優(yōu)先級服務(wù)控制寄存器130的一個可編程值確定優(yōu)先級。一旦對多路復(fù)用器126的控制選擇了一個存儲器調(diào)用請求,該存儲器調(diào)用請求被送到解碼器138,在那里解碼并產(chǎn)生地址,SRAM單元保持對存儲器映射芯片外SRAM(MenoryMapped off chip SRAM)和擴(kuò)展ROM(Expansion ROM)的控制。SRAM控制器26b能夠編址如16兆字節(jié),如8兆字節(jié)映射到SRAM 16b,8兆字為特殊功能保留,包括由閃存隨機(jī)存儲器16c組成的自引導(dǎo)空間,對MAC設(shè)備13a,13b的控制臺端口訪問和對有關(guān)(RWON)計數(shù)器的訪問。SRAM用于局部查找表和隊列管理功能。
SRAM控制器26b支持下列事務(wù),微引擎請求(通過專用總線)到/從SRAM核心處理器(通過ASB總線)到/從SRAMSRAM控制器26b完成存儲器調(diào)用排序以使在從SRAM接口140到存儲器16b的管線中的延遲(泡沫)最小。SRAM控制器26b根據(jù)讀功能進(jìn)行存儲器調(diào)用排序。泡沫可以是1或2個周期,取決于使用的存儲器設(shè)備的類型。
SRAM控制器26b包括一個鎖查找設(shè)備(Lock Lookup device)142,它是用于查找讀鎖(read lock)的8個條目地址上下文的可編址存儲器。每個位置包括一有效位,它由后續(xù)的讀鎖請求檢查。地址和命令隊列120也包括一讀鎖失敗隊列(Read Lock Faik Queue)120d。讀鎖失敗隊列用于保持由于在存儲器位置存在鎖而失敗的讀存儲器調(diào)用請求。即,一個微引擎發(fā)出一個具有讀鎖請求的存儲器請求,該請求在地址和控制隊列120中被處理。存儲器請求在命令隊列120c或讀隊列120b上操作,并將其識別為讀鎖請求??刂破?6b訪問鎖查找設(shè)備142,以確定此存儲器位置是否已經(jīng)鎖定。如果此存儲器位置從任何以前的讀鎖請求被鎖定,則此存儲器鎖定請求將失敗,并將被存入讀鎖失孜隊列120d。如果它被解鎖或如果142在那個地址顯示沒有鎖,則SRAM接口140使用那個存儲器調(diào)用實現(xiàn)對存儲器16b傳統(tǒng)的SRAM地址讀/寫請求。命令控制器和地址生成器138也將鎖輸入到鎖查找設(shè)備142,使得后續(xù)的讀鎖請求找到鎖定的存儲器位置。在對鎖的需要結(jié)束以后,借助于程序中的微控制指令的操作解鎖一存儲器位置。通過清創(chuàng)造在SAM中的有效位解鎖位置。解鎖以后,讀鎖失敗隊列成為最高優(yōu)先級隊列,給所有排隊的讀鎖失敗一個發(fā)出存儲器鎖請求的機(jī)會。
參考圖9,示出微引擎和FBUS接口邏輯(FBI)之間的通訊。在網(wǎng)絡(luò)應(yīng)用中的FBUS接口28能完成從FBUS18進(jìn)入的數(shù)據(jù)包的頭標(biāo)處理。FBUS接口完成的關(guān)鍵功能是提取數(shù)據(jù)包的頭標(biāo),以及在SRAM中微可編程源/目標(biāo)/協(xié)議的散列查找。如果該散列未能成功地分解,該數(shù)據(jù)包的頭標(biāo)被送到核心處理器28作更復(fù)雜的處理。
FBI 28包含一個發(fā)送FIFO 182,一個接收FIFO 183,一個散列單元188和FBI控制及狀態(tài)寄存器189。這4個單元與微引擎22通訊,通過時間多路復(fù)用(time-multipexed)訪問到SRAM總線28,后者連接到在微引擎中的傳輸寄存器78,80。即,所有與微引擎的來往通訊是經(jīng)過傳輸寄存器78,80。FBUS接口28包括一個用于在SRAM不使用SRAM數(shù)據(jù)總線(總線38的部發(fā))的時間周期內(nèi)將數(shù)據(jù)壓入傳輸寄存器的壓入狀態(tài)機(jī)(push state machine 200),和一個用于從對應(yīng)微引擎的傳輸寄存器取出數(shù)據(jù)的彈出狀態(tài)機(jī)(pull statemachine)202。
散列單元包括一對FIFO=s 188a,188b。散列單元確定FBI28接收一個FBI_hash(散列)請求。散列單元188從發(fā)出調(diào)用的微引擎22取得散列鍵在鍵被取出并作散列以后,索引被送回到發(fā)出調(diào)用的微引擎22。在單個FBI_hash請求下完成最多3個散列??偩€34和38每個都是單向的,SDRAM_push/pull_date,和sbus_push/pull_data。每個這樣的總線需要控制信號,它提供對適當(dāng)?shù)奈⒁?2的傳輸寄存器的讀/寫控制。
通常,傳輸寄存器需要防止內(nèi)存控制它們以保證讀的正確性。如果thread_1使用寫傳輸寄存器提供數(shù)據(jù)到SDRAM 16a,在從SDRAM控制器26a回來的信號指出此寄存器已被更新(promoted)并現(xiàn)在可以再使用以前thread_1必須不改寫此寄存器。每次寫不需要從目的地返回指出功能已完成的信號,因為如果線程將多個請求寫到在那個目標(biāo)的同一命令隊列,在那個命令隊列中完成的次序是保證的,因此只有最后命令需要發(fā)回信號到該線程。然而,如果該線程使用多個命令隊列(命令或讀),則這些命令請求必須分解成分別的上下文任務(wù),使得通過上下文交換保持次序。在本章節(jié)開頭指出的例外情況是關(guān)于某個類型的操作,它對FBUS狀態(tài)信息使用從FBI到傳輸寄存器的未經(jīng)請求的PUSH(壓入)操作。為了保護(hù)在傳輸寄存器上的讀/寫決定(determinism),F(xiàn)BI在建立這些專門的FBI壓入操作時,提供專門的Push_protect(壓入_保護(hù))信號。任何使用FBI未經(jīng)請求壓入技術(shù)的微引擎22在訪問FBUS接口/微引擎一致的傳輸寄存器(microengine agreed upon transfer register)以前必須測試該保護(hù)標(biāo)志。如果該標(biāo)志未肯定。則傳輸寄存器可由微引擎訪問。如果該標(biāo)志肯定,則在訪問該寄存器前上下文必須等待N周期。事先,此計數(shù)由被壓入的傳輸寄存器數(shù)加上前端保護(hù)窗(frontend protection window)而確定?;靖拍钍俏⒁姹仨殰y試此標(biāo)志,隨后在連續(xù)周期內(nèi)迅速將它希望從讀通用寄存器傳輸寄存器讀的數(shù)據(jù)移到使得壓入引擎與微引擎讀不會有碰撞。
其它實施例在下列權(quán)利要求范圍之中。
權(quán)利要求
1.一種計算機(jī)指令,其特征在于,包括上下文交換指令,它將在指定的微引擎中當(dāng)前運(yùn)行的上下文交換到存儲器,使另外的上下文在該微引擎中執(zhí)行,并導(dǎo)致選擇不同的上下文及相關(guān)的程序計數(shù)器。
2.如權(quán)利要求1所述的計算機(jī)指令,其特征在于,當(dāng)指定的信號被激活時,所述上下文交換指令喚醒被交換出去的上下文。
3.如權(quán)利要求1所述的計算機(jī)指令,其特征在于,將所述信號指定為所述指令的參數(shù),并指定事件的發(fā)生。
4.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“sram swap”,并且所述上下文交換指令交換出當(dāng)前的上下文,直到收到線程的SRAM信號時喚醒它。
5.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“sram swap”,并且所述上下文交換指令交換出當(dāng)前的上下文,直到收到線程的SDRAM信號時喚醒它。
6.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“FBI”,它交換出當(dāng)前的上下文,并當(dāng)收到指出已完成FBI CSR,Scratchpad,TFIFO,或RFIFO操作的線程的FBI信號時喚醒它。
7.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述的參數(shù)指定為“seq_num1_change/seq_num2_change”,它交換出當(dāng)前的上下文,并當(dāng)順序數(shù)的值改變時喚醒它。
8.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述的參數(shù)指定為“inter_thread”,它交換出當(dāng)前的上下文,并當(dāng)接收到線程的內(nèi)線程信號時喚醒它。
9.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“Voluntary”,如果其他線程已準(zhǔn)備好運(yùn)行則交換出當(dāng)前的上下文,并且如果該線程被交換出則在某個后續(xù)上下文判優(yōu)點(diǎn)所述交換出的線程自動地再使能運(yùn)行。
10.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“auto_push”,它交換出當(dāng)前的上下文,并當(dāng)SRAM傳輸讀寄存器數(shù)據(jù)自動地被FBUS接口壓入時喚醒它。
11.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“start_receive”,它交換出當(dāng)前的上下文,并當(dāng)在接收FIFO中新的數(shù)據(jù)對于該線程用來處理有效時喚醒它。
12.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“kill”,它在對應(yīng)該線程的適當(dāng)?shù)氖鼓芪徊⒃贑TX_ENABLES寄存器中置位以前,防止當(dāng)前的上下文或線程再次執(zhí)行。
13.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,所述參數(shù)指定為“PCI”,它交換出當(dāng)前的上下文,并當(dāng)PCI單元發(fā)信號,通知DMA傳輸已經(jīng)完成時喚醒它。
14.如權(quán)利要求3所述的計算機(jī)指令,其特征在于,還包括選項_標(biāo)記(option_token)“defer one”,它規(guī)定在所述上下文被交換之前并在此調(diào)用后將執(zhí)行一條指令。
15.一種操作處理器的方法,其特征在于,包括計算指定的參數(shù)以確定一個執(zhí)行上下文過程的狀態(tài),和完成交換操作,以導(dǎo)致按照指定參數(shù)的值選擇不同的上下文和相關(guān)的程序計算計數(shù)器。
16.如權(quán)利要求15所述的方法,其特征在于,完成將當(dāng)前在指定微引擎內(nèi)運(yùn)行的上下文交換到存儲器,使另外上下文在該微引擎中執(zhí)行。
17.如權(quán)利要求15所述的方法,其特征在于,所述參數(shù)指定一個事件的發(fā)生。
18.如權(quán)利要求15所述的方法,其特征在于,所述的參數(shù)指定為“sram swap”,并完成一個交換,該交換包括交換出當(dāng)前上下文并當(dāng)收到線程的SRAM信號時喚醒它。
19.如權(quán)利要求15所述的方法,其特征在于,所述參數(shù)指定為“sram swap”,并完成一個交換,該交換包括交換出當(dāng)前上下文并當(dāng)收到線程的SDRAM信號時喚醒它。
20.如權(quán)利要求15所述的方法,其特征在于,所述參數(shù)指定為“inter_thread”,它交換出當(dāng)前的上下文,并當(dāng)收到該線程的內(nèi)線程信號時喚醒它。
21.如權(quán)利要求15所述的方法,其特征在于,還包括選項_標(biāo)志(optional_token)“defer one”,它規(guī)定在所述上下文被交換之前并在此調(diào)用后將執(zhí)行一條指令。
22.一種能執(zhí)行多個上下文的處理器,其特征在于,包括寄存器堆棧,用于每個執(zhí)行的上下文的程序記數(shù)器,連接到寄存器堆棧和存儲上下文交換指令的程序控制存儲的算術(shù)邏輯單元,它使處理器計算指定的參數(shù)以確定執(zhí)行的上下文過程的狀態(tài),和完成交換操作,導(dǎo)致按照指定參數(shù)的值選擇不同的上下文及相關(guān)的程序計數(shù)器,并且它保存老的程序計數(shù)器值。
23.如權(quán)利要求22所述的處理器,其特征在于,當(dāng)指安的信號被激活時,所述上下文交換指令喚醒被交換出的上下文。
24.一種計算機(jī)程序產(chǎn)品,駐留在計算機(jī)可讀媒體上,用于使處理器完成由指令組成的功能,其特征在于,所述指令使處理器計算指定的參數(shù)以確定執(zhí)行上下文過程的狀態(tài),和完成交換操作,使得按照該指定參數(shù)的值選擇不同的上下文和相關(guān)的程序計數(shù)器。
25.如權(quán)利要求24所述的產(chǎn)品,其特征在于,當(dāng)指定的信號被激活時,處理器喚醒交換出去的上下文。
全文摘要
本發(fā)明揭示了一種基于硬件的并行多線程處理器。處理器包括協(xié)調(diào)系統(tǒng)功能的通用處理器和支持多個硬件線程或上下文(CONTEXT)的多個微引擎。處理器還包括存儲控制系統(tǒng),它具有根據(jù)存儲器調(diào)用是否針對偶數(shù)存儲區(qū)或奇數(shù)存儲區(qū)排序存儲器的第一存儲控制器,還具有根據(jù)存儲器調(diào)用是讀調(diào)用還是寫調(diào)用優(yōu)化存儲器調(diào)用的第二存儲控制器。還揭示了根據(jù)執(zhí)行上下文(上下文描述符contentdescriptor)切換的轉(zhuǎn)移的指令。
文檔編號G06F9/32GK1402844SQ00815123
公開日2003年3月12日 申請日期2000年8月31日 優(yōu)先權(quán)日1999年9月1日
發(fā)明者G·沃爾瑞奇, M·J·艾迪萊塔, W·威勒, D·伯恩斯坦因, D·胡伯 申請人:英特爾公司