亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于處理器的轉(zhuǎn)移指令的制作方法

文檔序號:6547143閱讀:223來源:國知局
專利名稱:用于處理器的轉(zhuǎn)移指令的制作方法
背景技術(shù)
本發(fā)明涉及轉(zhuǎn)移指令。
并行處理是計算過程中并發(fā)事件信息處理的有效形式。并行處理要求在一臺計算機中同時執(zhí)行多個程序。順序處理或串行處理將所有任務(wù)順序地在單個工作站上完成,而管線處理使任務(wù)在專用的工作站上完成。無論在并行處理機,管線機或順序處理機上執(zhí)行的計算機程序都包括轉(zhuǎn)移,其中順序地執(zhí)行一個指令流,并從該序列轉(zhuǎn)移到不同的指令序列。
附圖簡要說明

圖1是使用一個處理器的通信系統(tǒng)的方框圖。
圖2是圖1的詳細方框圖。
圖3是用于圖1和2的處理器中的一個微引擎的方框圖。
圖4是圖3的微引擎管線的方框圖。
圖5A-5C示出轉(zhuǎn)移指令的示例性格式。
圖6是通用寄存器的方框圖。
描述參照圖1,通信系統(tǒng)10包括一處理器12。在一個實施例中,處理器是基于硬件的多線程處理器12。處理器12連接到如PCI總線14,存儲系統(tǒng)16和第二總線18那樣的總線。對于能了解成并行子任務(wù)或功能的任務(wù)系統(tǒng)10特別有用。具體說來,基于硬件的多線程處理器12對面向?qū)拵Ф窍虻却龝r間的任務(wù)有用?;谟布亩嗑€程處理器12有多個微引擎22,每個有多個硬件控制的線程,它們能同時活動并對一個任務(wù)獨立地工作。
基于硬件的多線程處理器12還包括中央處理器20,它對基于硬件的多線程處理器12加載微碼控制予以協(xié)助,并完成其他計算機類型的功能,如處理協(xié)議,例如,對包括處理的額外支持,其中微引擎將包送出,作如在邊界條件中那樣更的處理。在一個實施例中,處理器20是基于Strong ArmR(Arm是美國ARM有限公司的商標)的結(jié)構(gòu)。通向處理器20具有操作系統(tǒng)。通過操作系統(tǒng)處理器20能調(diào)用功能在微引擎22a-22f上運行。處理器20能使用任何支持的操作系統(tǒng),最好是實時操作系統(tǒng)。對作為Strong Arm結(jié)構(gòu)實現(xiàn)的核心處理器能使用的操作系統(tǒng)如Microsoft NTRreal-time,VXWorks,和CUS,一個在因特網(wǎng)上可用的自由件(freeware)操作系統(tǒng)。
基于硬件的多線程處理器12還包括多個功能引擎22a-22f。功能微引擎(微引擎)22a-22f每個包含硬件的程序計數(shù)器和與這些程序計數(shù)器有關(guān)的狀態(tài)。實際上,對應(yīng)的多個線程組能在每個微引擎22a-22f上同時活動而在任何時刻只有一個實際在操作。
微引擎22a-22f每個具有處理4個硬件線程的能力。微引擎22a-22f帶著共享資源操作,包括存儲系統(tǒng)16和總線接口24和28。存儲系統(tǒng)16包括同步動態(tài)隨機存儲器(SDRAM)控制器26a靜態(tài)隨機存儲器(SRAM)控制器26b。SDRAM存儲器16a和SDRAM控制器26a通常用于處理大量數(shù)據(jù),如處理從網(wǎng)絡(luò)包來的網(wǎng)絡(luò)有效負載(Payload)。SRAM控制器26b和SRAM存儲器16b用于如網(wǎng)絡(luò)包處理,頁式圖象(Postscript)處理器,或作為用于如RAID盤存儲的存儲子系統(tǒng)的處理器,或用于低等待時間,快速訪問任務(wù)的處理器,這些任務(wù)如訪問查找表,核心處理器20的存儲器等。
處理器12包括總線接口28,將處理器連接到第二總線18。在一個實施例中,總線28將處理器12連接到所謂的FBUS(FIFO總線)。處理器12包括如PCI總線接口24那樣的第二接口。將在PCI總路線14上的其他系統(tǒng)部件連接的處理器12。PCI總線接口24提供到SDRAM存儲器16a的高速數(shù)據(jù)通道24a。通過該通道,數(shù)據(jù)能借助直接存儲器訪問(DMA)傳輸,通過PCI總線14從SDRAM16a快速傳遞。
每個功能單元連接到一個或多個內(nèi)部總線。內(nèi)部總線是雙向32位總線(即一根總線用于讀,一根總線用于寫)?;谟布亩嗑€程處理器12還構(gòu)造成使得在處理器12中內(nèi)部總線的帶寬之和超過連接到處理器12的外部總線的帶寬,處理器12包括一內(nèi)部核心處理器總線32,如ASB總線(先進系統(tǒng)總線),它將處理器核心20連接到存儲控制器26a、26c和如下所述的ASB翻譯器。ASB總線是與Strong Arm處理器核心一起用的所謂AMBA總線的子集。處理器12還包括一專用總線34,它將微引擎單元連接到SRAM控制器26b,ASB翻譯器30和FBUS接口28。存儲器總線38將存儲控制器26a、26b連接至總線接口24和28以及存儲系統(tǒng)16,包括用于自引導(dǎo)操作等的閃存只讀存儲器16c。
參考圖2,每個微引擎22a-22f包括判優(yōu)電路,它檢查標志以確定在可用的線程上操作。從任何一微引擎22a-22f來的任一線程能訪問SDRAM控制器26a,SRAM控制器26b或FBUS接口28。存儲控制器26a和26b每個包括多個隊列,存放未完成的存儲器調(diào)用請求。FBUS總線28對每個MAC設(shè)備支持的端口支持發(fā)送和接收(Transnit and Receive)標志,以及指出何時要求服務(wù)的中斷標志。FBUS接口28還包括控制器28a,它完成從FBUS18來的包的頭標處理??刂破?8a提取包的頭標,并完成在SRAM中的可編微程序的源/目標/協(xié)議的散列查找(用于地址光滑)。
核心處理器20訪問共享資源。核心處理器20具有通過總線32到SDRAM控制器26a,到總線接口24,和到SRAM控制器26b的直接通信。但是,為了訪問微引擎22a-22f和位于任一個微引擎22a-22f的傳輸寄存器,核心處理器20通過ASB翻譯器30,經(jīng)總線34訪問微引擎22a-22f。ASB翻譯器30物理上駐留在FBDS接口28中,但邏輯上是分開的。ASB翻譯器30實現(xiàn)FBUS微引擎?zhèn)鬏敿拇嫫魑恢煤秃诵奶幚砥鞯刂?即ASB總線)之間的地址翻譯,使核心處理器20能訪問屬于微引擎22a-22c的寄存器。
雖然微引擎22能如下所述使用寄存器組交換數(shù)據(jù),還提供一便箋式存儲器27,以允許微引擎寫出數(shù)據(jù)到該存儲器為其他微引擎讀取,便箋式存儲器27連接到總線34。
處理器核心20包括以5階段管理實施在單個周期內(nèi)完成一個或二個操作數(shù)的單個循環(huán)移位的RISU核心50,并提供乘法支持及32位滾動移位支持。此RISC核心50是標準的Strong ArmR結(jié)構(gòu),但為性能的原因以5階段管線實現(xiàn)。
處理器核心20還包括16千字節(jié)指令高速緩存52,8千字節(jié)數(shù)據(jù)高緩存54和預(yù)取流緩沖器56。核心處理器20與存儲器寫及取指令并行地完成算術(shù)運算。核心處理器20通過ARM定義的ASB總線與其他功能單元接口,ASB總線是32位雙向總線32。
參考圖3,示例性的微引擎22f包括一個含有存儲微程序的RAM的控制存儲70。微程序可由核心處理器20加載。微引擎22f還包括控制器邏輯72。控制器邏輯包括指令解碼器73和程序計數(shù)器(PC)單元72a-72d。這4個程序計數(shù)器72a-72d保持在硬件中。微引擎22f還包括上下文事件交換邏輯(ContextEvent Swithing Logic)74。上下文事件邏輯74從每個共享資源,如SRAM26a,SDRAM26b或控制器核心20,控制和狀態(tài)寄存器等,接收消息(如SEQ-#-EVENT_RESPONSE;FBI-EVENT-RESPONSE;SRAM-EVENT-RESPONSE;SDRAM-EVENT-RESPONSE;和ASB-EVENT-RESPONSE)。這些消息提供有關(guān)被請求的功能是否已完成的,。信箱線程請求的功能是否已完成并已發(fā)完成信號,線程需要等待完成信號,且如果該線程能夠操作,則將其放入右用線程表中(未示出)。微引擎22f能是有最多可用線程,如4個。
除了對執(zhí)行的線程是局部的事件信號外,微引擎22利用全局的發(fā)信號狀態(tài)。執(zhí)行的線程能用發(fā)信號狀態(tài)將一個信號狀態(tài)廣播到所有的微引擎22。接收請求可用(Refust Available)信號,在微引擎中的任何或所有線程能根據(jù)這些信號狀態(tài)轉(zhuǎn)移。這里信號狀態(tài)能被用于確定一個資源的可用性,或資源是否準備服務(wù)。
上下文事件邏輯74具有對4個線程的判優(yōu)。在一個實施例中,判優(yōu)是一個循環(huán)機制。也能用其他技術(shù),包括優(yōu)先級排隊或加數(shù)的公平排隊。微引擎22f還包括執(zhí)行框(EBOX)數(shù)據(jù)通道76,它包括算術(shù)邏輯單元76a和通用寄存器組76b。算術(shù)邏輯單元76a完成算術(shù)邏輯功能及功能。算術(shù)邏輯單元包括由下面描述的指令使用的條件碼的位。寄存器組76b是有相當大數(shù)目的通用寄存器,它們?nèi)缦率瞿菢臃执?,使得可相對及絕對編址。微引擎22f還包括寫傳輸寄存器堆線78和讀傳輸寄存器堆線80。這些寄存器也分窗,使得它們相對和絕對可編址。寫傳輸寄存器堆線78是寫到資源的數(shù)據(jù)的放置處。類似地,讀寄存器堆線80用于雙共享資源來的返回數(shù)據(jù)。數(shù)據(jù)到達之后或同時,從相應(yīng)的共享資源,如SRAM控制器26a,SDRAM控制器26b或核心處理器,來的事伯被送到上下文事件判優(yōu)器74,它隨之提醒線程,該數(shù)據(jù)已就緒或已被發(fā)出。傳輸寄存78和80均通過數(shù)據(jù)通道連接到執(zhí)行框(EBOX)76。
參考圖4,微引擎通道保持5階段微一管線82。此管線包括查找微指令字82a,形成寄存器文件地址82b,從寄存器文件82c讀操作數(shù),ALU。移位或比較操作82d,和結(jié)果寫回到寄存儲82e。借助一個寫回數(shù)據(jù)旁路進入ALU/移位單元,并借助假設(shè)寄存器作為寄存器文件(而非RAM)實現(xiàn),微引擎能實現(xiàn)同時的文件讀和寫,這是全隱去了寫操作。
在微引擎22a-22f中支持的指令組支持條件轉(zhuǎn)移。當轉(zhuǎn)移的決定是由以前的微控制指令設(shè)置的條件碼的結(jié)果時,出現(xiàn)最壞情況的條件轉(zhuǎn)移等待時間(不包括跳),等待時間示于下面表1中
表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所示,直到周期4的n1條件碼被設(shè)置,并作出轉(zhuǎn)移決定(在此情況導(dǎo)致在周期5查找轉(zhuǎn)移路徑),微引擎22f招致個,周期的轉(zhuǎn)移等待時間,因為在轉(zhuǎn)移路徑開始用b1充滿管線以前在管線中必須放棄操作n2和n3(緊跟轉(zhuǎn)移后的2個微字)。如果轉(zhuǎn)移未發(fā)生,不放棄微字,執(zhí)行正常繼續(xù)。微引擎有若干機制來減少或消除實際的轉(zhuǎn)移等待時間。
微引擎支持可選送的延遲(deferred)轉(zhuǎn)移。可選的延遲是在執(zhí)行轉(zhuǎn)移之后而在轉(zhuǎn)移生效之前,微引擎或2個微字(即轉(zhuǎn)移生效在時間上“延遲”了)。,如果在轉(zhuǎn)移微字之后找到有用的工作充滿浪費的周期,則轉(zhuǎn)移的等待時間能被隱去。在表2中示出1同期延遲轉(zhuǎn)移,其中在cb之后而在b1之前允許n2表2| 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 |在表3中示出2周期延遲轉(zhuǎn)移,其中在發(fā)生到b1的轉(zhuǎn)移前允許完成n2和n3。注意,只有條件碼在轉(zhuǎn)移前的微字上設(shè)置時才允許2周期轉(zhuǎn)移延遲。
表3
| 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 |微引敬也支持條件碼計算。如果據(jù)此作出轉(zhuǎn)移決定的條件碼在轉(zhuǎn)移前設(shè)置2個或更多的微字,則表4所示,因為決定在早一個周期作出,消除了1個周期的轉(zhuǎn)移等待時間。
表4| 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è)置條件碼。因此,轉(zhuǎn)移決定能在周期4(而不是周期5)作出,消除了1周期的轉(zhuǎn)移等待時間。在表5的例子中,1周期轉(zhuǎn)移延遲和早設(shè)置條件碼結(jié)合起來,完全隱去了轉(zhuǎn)移等待時間。即,在1周期延遲轉(zhuǎn)移前2個周期設(shè)置條件碼(cc)表5| 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 |在條件碼不能提前設(shè)置的情況(即在轉(zhuǎn)移前的微字中設(shè)置),微引擎支持轉(zhuǎn)移推測,試圖減少余下的1個周期的轉(zhuǎn)移等待時間。借助“推測”路徑或順序路徑,微引擎在確切知道路徑前一個周期預(yù)取推測的路徑。如果推測正確,如表6所示,消除了1周期的轉(zhuǎn)移等待時間。
表6推測轉(zhuǎn)移發(fā)生/轉(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ā)生不正確,如表7所示,微引擎仍然只浪費1個周期。
表7推測轉(zhuǎn)移發(fā)生/轉(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 |但是當微碼推測轉(zhuǎn)移未發(fā)生時,等待時間的損失不同地分布。對推測轉(zhuǎn)移未發(fā)生/轉(zhuǎn)移未發(fā)生的情況,如表8所示沒有浪費的周期。
表8| 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ā)生的情況,如表9所示有2個周期浪費。
表9| 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 |微引擎結(jié)合轉(zhuǎn)移推測和1周期轉(zhuǎn)移延遲來進一步改善結(jié)果。對于推測轉(zhuǎn)移發(fā)生并帶1周期延遲;轉(zhuǎn)移/轉(zhuǎn)移是發(fā)生的情況如圖10所示。
表10| 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并由于正確推測了轉(zhuǎn)移方向,隱去了2周期的轉(zhuǎn)移等待時間。
如果微碼推測不正確,如表11所示仍然有1周期的轉(zhuǎn)移等待時間(推測轉(zhuǎn)移發(fā)生帶1周期延遲轉(zhuǎn)移/轉(zhuǎn)移未發(fā)生)。
表11| 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ā)生,如表12引所示微引擎經(jīng)受1周期沒有結(jié)果的執(zhí)行。
表12推測轉(zhuǎn)移未發(fā)生/轉(zhuǎn)移是發(fā)生| 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)移地址未知(表13)表13| 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 |按照在轉(zhuǎn)移前的微字上設(shè)置的ALU條件碼操作的條件轉(zhuǎn)移碼選擇0,1或2或3周期的轉(zhuǎn)移長方式。條件碼在按期操作的條件轉(zhuǎn)移能選擇0或1周期轉(zhuǎn)移延遲方式以前,設(shè)置2個或更多的微字。所有期貨轉(zhuǎn)移(包括上下文重新判優(yōu))能選擇0或1周期的轉(zhuǎn)移延遲方式。結(jié)構(gòu)能設(shè)計成使得在以前的轉(zhuǎn)移,跳轉(zhuǎn)或上下文判優(yōu)微字的轉(zhuǎn)移延遲窗之中的一個上下文判優(yōu)微字為非法操作。即,在某些實施例中,在管線中轉(zhuǎn)移變換期間不允許發(fā)生上下文切換,因為保存老的上下文PC是過分的復(fù)雜。結(jié)構(gòu)也能設(shè)計成使得在以前的轉(zhuǎn)移,跳轉(zhuǎn)或上下文判優(yōu)微字的轉(zhuǎn)移延遲窗之中的一個上下文判優(yōu)微字為非法操作,以避免復(fù)雜的和可能未能預(yù)見的轉(zhuǎn)移行為,參考圖5A,示出轉(zhuǎn)移指定的一般格式。
轉(zhuǎn)移指令BR BR<O,BR=O BR<O。BR i=O BR=COUT,BR>O Br?。紺OUT,BR>O一組轉(zhuǎn)移指令是無條件轉(zhuǎn)移B根據(jù)ALU條件碼轉(zhuǎn)移到指定標號的指令。示例性的ALU條件碼是符號,零,和進位(Carryout-cout)。
格式br[label#],optional-token(label-標號)br=o[label#],optional-token可先標記br?。給[label#],optional-tokenbr>[label#],optional-tokenbr>o[label#],optional-tokenbr<o[label#],optional-tokenbr<=o[label#],optional-tokenbr=Cout[label#],optional-tokenbr!=Cout[label#],optional-token參數(shù)labet#是對應(yīng)于指令地址的符號標號。轉(zhuǎn)移指令的分類可有列optional-token可選標記延遲1條指令,延遲2條指令,和延遲3條指令,這些optional-token使得處理器要完成轉(zhuǎn)移操作之前執(zhí)行條,2條或3條指令,設(shè)置條件碼的ALU操作在轉(zhuǎn)移指令前可以出現(xiàn)若干指令。延遲2和延遲3不與下述的轉(zhuǎn)移推測一起使用。
第四個optional-token是推測轉(zhuǎn)移(guess-branch)標記,它引起處理器預(yù)取對“轉(zhuǎn)移發(fā)生”條件的指令,而作下一條順序指令。在轉(zhuǎn)移指令前立即發(fā)生設(shè)置條件碼的ALU操作。
BR-BCLR;BR-BSET當指定位被置位或清除時第二組轉(zhuǎn)移指令是轉(zhuǎn)移到指定標號。這些指令在處理器的狀態(tài)寄存器中設(shè)置條件碼。指令格式是br-bclr[reg,bit-positior,label#],optional-token;br-bset[reg,bit-positior,label#],optional-token操作數(shù)字段RegA保存操作數(shù)的與上下文相關(guān)的傳輸寄存器或通用寄存器。Bit-positionA是指定在一長字中位的位置的數(shù)。Bito是最低位。有效的bit-positson的值是0到31。Label#是對應(yīng)目標指令的地址的符號標號。
轉(zhuǎn)移指令組也具有,optional-token;如上所述為延遲1指令,延遲2指令及延遲3指令轉(zhuǎn)移推測。
例br-bcln[reg,bit-position,label#],如果位被清除,延遲〔1〕轉(zhuǎn)移。
BR=BYTE;Br?。紹YTE第三組轉(zhuǎn)移指令是那樣的指令,如果長字中的指定字節(jié)匹配byte-compare-Valne(字節(jié)—比較—值),引起處理器轉(zhuǎn)移到指定標號處的指令。By=byte指令對“轉(zhuǎn)移發(fā)生”條件預(yù)取指令而不預(yù)取下一條順序指令。Br?。絙yte指令預(yù)取下一條順序指令。這些指令設(shè)置條件碼。
格式br=byte[reg,byte-spec,byte,compare-value,label#],opetional-tokenbr!=byte[reg,byte-spec,byte,compare-value,label#],opetional-tokenReg是存放操作數(shù)的與上下文相關(guān)的傳輸寄存器或通用寄存器。Byte-specNumber是指定與byte-compart-value比較的在寄存器中一字節(jié)的數(shù)。有效的byte spec值是0到3,0值對照最右邊的字節(jié)。byte-compart-value是用于比較的參數(shù)。在此實施中,有效的byte-compart-value是0到255。Label#是對應(yīng)于指令地址的符號。
此組轉(zhuǎn)移指令也有optional-token;延遲1指令,延遲2指令,延遲3指令,和轉(zhuǎn)移推測。延遲2和3只對Br?。紹YTE使用。
例br!=byte[reg,byte-spec,byte-compart-value,labe#],defer[3]此微字指令提供將寄存器操作數(shù)的對齊字節(jié)與一即時指定字節(jié)值比較的技術(shù),其中byte-spec表示比較的對齊字節(jié)(0是最右字節(jié),3是最左字節(jié))。ALU條件碼通過從指定的寄存器字節(jié)減去指定的字節(jié)值而設(shè)置。如果值匹配,發(fā)生指定的轉(zhuǎn)移。有3個周期轉(zhuǎn)移等待時間與此指令有關(guān),因此為了用有用的工作充滿等待時間,允許0,1,2,3的轉(zhuǎn)移延遲。該寄存器是A或B存儲區(qū)的寄存器。
CTX-ARB參考圖5B,上下文交換指令CTX-ARB交換出在指定微引擎中當前運行的上下文到存儲器,讓其化上下文在那個微引擎中執(zhí)行。當指定的信號激活時,上下文交換指令CTX-ARB還喚醒被交換出的上下文。上下文交換指令的格式是ctx-arb[parameter],optional-token“parameter—參數(shù)”字段能具有若干值之一。如果該參考數(shù)指定為“sramSwap”,上下文交換指令交換出當前的上下文并當接收到線程的SRAM信號時喚醒它。如果該參數(shù)指定為“sram swap”上下文交換指令交換出當前的上下文并當接收到線程的SDRAM信號時喚醒它。該參數(shù)也能指定為“FBI”它交換出當前的上下文并當接收到線程的FBI信號時喚醒它。FBI信號指出已完成FBICSR,Scratchpad,TFIFO,或RFIFO操作。
參數(shù)也能指定為“seg-num1-charge/seg-num2-change”,它交換出當前的上下文并當順序數(shù)的值改變時喚醒它。參數(shù)也能指定為“inter-thread”,它交換出當前的上下文并當收到線程的內(nèi)線程(Cinterthread)信號時喚醒它,或指定為“Voluntary”,如果另外線程準備運行時交換出當前的上下文,原則不交換。如果線程交換出,在某個后續(xù)上下文判優(yōu)點它自動地再能運行。參數(shù)能是“anto-push”,它交換出當前上下文并當SRAM傳輸讀寄存器數(shù)據(jù)被FBUS接口自動壓入時喚醒它,參數(shù)或是“stert-receive”,它交換出當前上下文,并當在receive FIFO中的新的包數(shù)據(jù)對此線程可用處理時喚醒它。
該參數(shù)也能是“kill”它防止當前的上下文或線程,在對該線程的適當?shù)氖鼓芪辉贑TX-ENABLES寄存器中被置位以前再次執(zhí)行,參數(shù)能是“pci”,它交換出當前上下文并當PCI單元DMA傳輸已完成的信號時喚醒它。
上下文交換指令CTX-ARB能具有下述optiohal-token,延遲1規(guī)定在此調(diào)回后上下文被交換前執(zhí)行一條指令。
BR=CTX,BR?。紺TX參考圖5C,示出上下文轉(zhuǎn)移指令BR=CTX,Br?。紺TX。上下文轉(zhuǎn)移指令引起處理器,如微引擎22f,根據(jù)當前執(zhí)行的上下文是否為指定的上下文數(shù)而轉(zhuǎn)移指令是從轉(zhuǎn)移掩碼字段在等于“8”或“9”時確定。上下文轉(zhuǎn)移指定能具有下述格式,格式br=ctx[ctx,label#],optional-tokenbr!=ctx[ctx,label#],optional-tokenLabel#是對應(yīng)于指令地址的符號標號。Ctx一上下文數(shù)是一個上下文(線程)的數(shù)。在此例中,有效的Ctx值是0,1,2,3。
此指令有optional-token“defer one”(“延遲1”)指令,它導(dǎo)致處理器在完成轉(zhuǎn)移操作前執(zhí)行該指令后的指令。
BR-INP-STATE再參考圖5A,另外轉(zhuǎn)移指令類在指定的狀態(tài)名的狀態(tài)被設(shè)置成1時或0并指出當前的處理狀態(tài)。這對所有微引擎都可用。在圖6中示出使用br-mask字段的格式被用于規(guī)定轉(zhuǎn)移。對轉(zhuǎn)移掩碼=15,使用擴展的字段指定如下所列的各種信號和狀態(tài)信號。
格式br-inp-state[state-name,label#],optional-tokenLabel#是對應(yīng)于指令地址的符號標號。State-name是狀態(tài)名,如果rec-reg-avail被設(shè)置,它指出RCV-REQ FIFO具有空間可用于另外的接收請求。如果Push-protect被設(shè)置,它指出FBI單元當前正在寫到SRAM傳喻寄存器。此指令也具有optional-token“延遲1”,它在完成轉(zhuǎn)移操作前執(zhí)行此指令后的指令。
BR-!SIGNAL另一類轉(zhuǎn)移指令使得如果指定信號未認定時引起處理器轉(zhuǎn)移。如果信號認定,指令清除此信號并不發(fā)生轉(zhuǎn)移。在最后一個長字被寫到傳統(tǒng)寄存器的兩個周期之后,SRAM和SDRAM信號被送給微引擎。在信號后一個周期,倒數(shù)第二長字被寫入。當該信號被提交時,所有其他長字是有效的。程序員用此指令適當?shù)剡x擇讀傳輸寄存器的時間,保證讀出適當?shù)臄?shù)據(jù)。
格式br-signal[stignal-name,label#],optional-tokenLabel#是對應(yīng)于指令地址的符號標號。Signal-name能是sram,sdram,fbi,ihter-thread,auto-push,start-receive,seg-num1,seg-num2。
此轉(zhuǎn)移指令組具有下列optional-tokendefer one(延遲1)指令,defertwo(延遲令2)指令,和defer three(延遲令3)指令。這些optional token引起處理器在此指令后而在完成轉(zhuǎn)移操作之前執(zhí)行1,2或3條指令。設(shè)置條件碼的ALU操作在轉(zhuǎn)移指令前可以存在若干指令,defer two和deferthree不能與轉(zhuǎn)移推測一起使用。
第4個optional token是guess-branch(推測—轉(zhuǎn)移)預(yù)取。推測轉(zhuǎn)移預(yù)取標記預(yù)對“轉(zhuǎn)移發(fā)生”的指令而不是下一條順序指令。此標記與延遲1指令一起用以改善性能。
例xfer-order $ xfero $ xfer1$xfer2$xfer3sram[read,$xfer0,op1,0,2],sig-donewai t#br_!signal[sram,wait#],guess_branchnop;delay 1 cycle before reading $xfer0alu[gpr0,0,b,$xfer0];val id data is written to gpr0alu[gpr1,0,b,$xfer1];valid data is written to gpr0self#br[self#]參考圖6,存在的兩個寄存器空間是局部可訪問寄存器,和由所有微引擎可訪問的全部可訪問寄存器。通用寄存器(GPR)作為兩個分別的存儲區(qū)實施(A存儲區(qū)和B存儲區(qū)),它們的地址逐字交替,使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,thread-2在77c(寄存器64)處找到其寄存器0,thread-3在77d(寄存器96)處找到其寄存器0。支持相對編址,使得多個線程能使用完全相同的控制存儲及位置卻訪問不同的寄存器窗并完成不同的功能。使用寄存器窗編址和存儲區(qū)編址雖然在微引擎22f中只使用雙口RAM卻提供必要的讀帶寬。
這些分窗的寄存器從上下文切換到上下文切換不需要保存數(shù)據(jù),所以消除了上下文交換文件或堆線的正常壓入和彈出操作。這里的上下文交換對于從一個上下文改變到另一個具有。周期開銷。相對寄存器編址將寄存器存儲區(qū),在遍及整個通用寄存器組的寬度分成窗。相對編址允許相對于一個窗的起始點訪問任何一個窗。在此結(jié)構(gòu)中也支持絕對編址,其中通過提供寄存器的準確地址,由任何一個線程能訪問任何一中的個絕對寄存器。
通用寄存器78的編址根據(jù)微字的格式能以2種方式出現(xiàn)。兩種方式是絕對相對方式。在絕對方式中,寄存器地址的編址直接以7位源字段(a6-a0或b6-b0)指定,如圖14所示表14
7 6 5 4 3 2 1 0+---+---+---+---+---+---+---+---+AGPR| 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位目標字段(d7-d0)指定,見表15。
表157 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如果<a6a5>=1,1,<b6b5>=1,1,或<d7d6>=1,1,則較低位被解釋為與上下文相關(guān)的地址字段(如下所述)。當在A、B絕對字段中指定非相對的A或B源地址,只有SRAM/SDRAM設(shè)備具有有效的地址空間;但是因為此限止不施加到目標字段,寫SRAM/SDRAM仍然使用全地址空間。
在相對方式中,編址一指定的地址是在上下文空間偏移量,如由5位源字段(a4-a0或b4-b0)確定,表16表167 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位目標字段(d5-d0)確定,表17表177 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR| d5|d4 |上下文| d3 | d2 | d1 | d0 | d5=0,d4=0
B GPR| d5 | d4 | 上下文 | d3 | d2 | d1 | d0 | d5=0,d4=1SRAM/ASB | d5 | d4 | d3 | 上下文 | d2 | d1 | d0 | d5=1,d4=0,d3=0SDRAM| d5 | d4 | d3 | 上下文 | d2 | d1 | d0 | d5=1,d4=0,d3=1如果<d5d4>=1,1,則目標地址不選址一個有效寄存器,因而不寫日月標操作板。
其他實施倒在下面權(quán)利要求的范圍之內(nèi)。
權(quán)利要求
1.一種計算機指令,其特征在于,包括轉(zhuǎn)移指令,所述轉(zhuǎn)移指令根據(jù)任何一指定值是真或假引起指令流執(zhí)行的轉(zhuǎn)移并且包括一個標記,所述標記規(guī)定在所述指令后并在完成轉(zhuǎn)移操作前執(zhí)行指令流中指令的數(shù)目。
2.如權(quán)利要求1所述的指令,其特征在于,所述轉(zhuǎn)移指令包括規(guī)定轉(zhuǎn)移推測操作的第二標記。
3.如權(quán)利要求1所述的指令,其特征在于,所述可選的標記包括defer-i,它引起處理器在完成轉(zhuǎn)移操作前執(zhí)行轉(zhuǎn)移指令后的第ith條指令。
4.如權(quán)利要求1的所述指令,其特征在于,所述可選的標記能規(guī)定在完成轉(zhuǎn)移操作前,執(zhí)行在所述轉(zhuǎn)移指令后的1,2或3條指令。
5.如權(quán)利要求1的所述指令,其特征在于,所述指令具有如下格式br[label#],optional-token其中br是轉(zhuǎn)移操作,label#是轉(zhuǎn)移到的地址的符號表示,optional-token規(guī)定在br轉(zhuǎn)移指令指定的轉(zhuǎn)移操作完成前執(zhí)行的指令數(shù)目。
6.如權(quán)利要求1所述的指令,其特征在于,由程序員或匯編程序指定一條所述可選的標記,以便可變周期能延遲轉(zhuǎn)移。
7.如權(quán)利要求1所述的指令,其特征在于,指定可選標記中的一個,以便幫助匯編程序產(chǎn)生更有效的碼。
8.如權(quán)利要求1所述的指令,其特征在于,所述的轉(zhuǎn)移指令是無條件轉(zhuǎn)移或根據(jù)ALU條件碼轉(zhuǎn)移到指定標號處的指令。
9.如權(quán)利要求1所述的指令,其特征在于,當指定位被置位或清除時,所述指令是到指定標號的轉(zhuǎn)移指令。
10.如權(quán)利要求1所述的指令,其特征在于,如果一長字中的指定字節(jié)匹配或不匹配字節(jié)-比較-值,則所述的轉(zhuǎn)移指令是引起處理器轉(zhuǎn)移到指定標號的指令的轉(zhuǎn)移指令。
11.如權(quán)利要求1所述的指令,其特征在于,所述的轉(zhuǎn)移指令是引起處理器根據(jù)當前的上下文是否為所述轉(zhuǎn)移指令中的指定上下文,轉(zhuǎn)移到指定標號的轉(zhuǎn)移指令。
12.如權(quán)利要求1所述的指令,其特征在于,如果指令狀態(tài)名的狀態(tài)是一選定值,則所述的轉(zhuǎn)移指令是引起處理器轉(zhuǎn)移的轉(zhuǎn)移指令。
13.如權(quán)利要求1所述的指令,其特征在于,如果一指定信號不被認定,則所述的轉(zhuǎn)移指令是引起處理器轉(zhuǎn)移的轉(zhuǎn)移指令。
14.如權(quán)利要求1所述的指令,其特征在于,所述的轉(zhuǎn)移指令還包括一附加標記,即推測-轉(zhuǎn)移標記,它使得處理器預(yù)取“轉(zhuǎn)移發(fā)生”情況的指令,而不是下一條順序的指令。
15.一種計算機程序,其特征在于,包括使得處理器執(zhí)行計算機指令完成一功能的多條指令,所述程序具有在包括不同的延遲轉(zhuǎn)移標記的不同程序部分中的第二多個轉(zhuǎn)移指令,其中轉(zhuǎn)移標記規(guī)定在完成由第二多個轉(zhuǎn)移指定的轉(zhuǎn)移操作之前執(zhí)行的指令數(shù)目。
16.如權(quán)利要求15所述的程序,其特征在于,至少一條轉(zhuǎn)移指令還包括另外的標記,即推測轉(zhuǎn)移標記,它使得處理器預(yù)取“轉(zhuǎn)移發(fā)生”情況的指令,而不是下一條順序的指令。
17.一種操作處理器的方法,其特征在于,包括執(zhí)行轉(zhuǎn)移指令,它根據(jù)任一指定值是真或假引起指令流的轉(zhuǎn)移,以及根據(jù)計算指定完成轉(zhuǎn)移操作以前執(zhí)行的指令數(shù)的標記,延遲執(zhí)行所述轉(zhuǎn)移指令的轉(zhuǎn)移操作。
18.如權(quán)利要求17所述的方法,其特征在于,還包括計算指定轉(zhuǎn)移推測操作第二標記,它使得處理器預(yù)取“轉(zhuǎn)移發(fā)生”情況的指令,而不是下一條順序的指令。
19.如權(quán)利要求17所述的方法,其特征在于,由程序員選擇所述的可選標記。
20.如權(quán)利要求17所述的方法,其特征在于,由程序員或匯編程序指定所述的可選標記,以便可變周期能延遲轉(zhuǎn)移。
21.如權(quán)利要求17所述的方法,其特征在于,指定一個可選標記,以便幫助匯編程序產(chǎn)生更有效的程序碼。
全文摘要
描述一種如基于處理器(12)的多線程硬件處理器。處理器(12)包括計算機指令(20),它是根據(jù)任何指令值是真或假引起指令流執(zhí)行中的轉(zhuǎn)移的轉(zhuǎn)移指令。該指令還包括一標記,它規(guī)定在完成轉(zhuǎn)移操作之前執(zhí)行該轉(zhuǎn)移指令后的指令的數(shù)目。
文檔編號G06F9/32GK1399736SQ00815417
公開日2003年2月26日 申請日期2000年8月31日 優(yōu)先權(quán)日1999年9月1日
發(fā)明者G·沃爾里奇, M·J·阿迪萊塔, W·維勒, D·伯恩斯坦因, D·胡珀 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1