本發(fā)明總地涉及文本處理,尤其涉及與字符數(shù)據(jù)相關(guān)聯(lián)的處理。
背景技術(shù):文本處理經(jīng)常需要各種類型的字符數(shù)據(jù)處理,包括字符數(shù)據(jù)串的處理。一些類型的處理包括尋找終止點(diǎn)(例如,串的末尾)、確定字符數(shù)據(jù)的長(zhǎng)度、尋找特定字符、復(fù)制字符數(shù)據(jù)等。用以執(zhí)行這些類型的處理的當(dāng)前指令和/或技術(shù)傾向于效率低下。
技術(shù)實(shí)現(xiàn)要素:處理了現(xiàn)有技術(shù)的(多個(gè))缺點(diǎn),并且經(jīng)由提供用于復(fù)制數(shù)據(jù)集的字符的計(jì)算機(jī)程序產(chǎn)品來(lái)提供優(yōu)勢(shì)。該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可由處理電路讀取且存儲(chǔ)用于由該處理電路執(zhí)行以用于執(zhí)行方法的指令。該方法包括(例如):將存儲(chǔ)器的指定塊內(nèi)的數(shù)據(jù)從存儲(chǔ)器載入至寄存器,該數(shù)據(jù)是要復(fù)制的數(shù)據(jù)集的至少一部分;獲得寄存器中載入的數(shù)據(jù)量的計(jì)數(shù);由處理器確定寄存器中載入的數(shù)據(jù)的終止值,該確定包括檢查該數(shù)據(jù)以確定寄存器是否包括終止字符,以及基于寄存器包括該終止字符,設(shè)定終止值為終止字符的位置,并且基于寄存器不包括終止字符,設(shè)定終止值為預(yù)定義值;存儲(chǔ)寄存器中載入的數(shù)據(jù)在存儲(chǔ)器中選定的位置;基于計(jì)數(shù)和終止值中的至少一個(gè)檢查數(shù)據(jù)集中是否存在要復(fù)制的附加數(shù)據(jù);以及基于檢查指示附加數(shù)據(jù)要復(fù)制,復(fù)制該附加數(shù)據(jù)。本文中也描述和要求關(guān)于本發(fā)明的一個(gè)或多個(gè)方面的方法和系統(tǒng)。另外,本文中也描述且可要求關(guān)于本發(fā)明的一個(gè)或多個(gè)方面的服務(wù)。經(jīng)由本發(fā)明的技術(shù)實(shí)現(xiàn)額外特征和優(yōu)勢(shì)。本發(fā)明的其他實(shí)施例和方面在本文中得以詳細(xì)描述且被視為所要求的本發(fā)明的一部分。附圖說(shuō)明現(xiàn)在將參考附圖僅通過(guò)示例方式描述發(fā)明的多個(gè)實(shí)施例,在附圖中:圖1描繪并入且使用本發(fā)明的一個(gè)或者多個(gè)方面的計(jì)算環(huán)境的實(shí)例;圖2A描繪并入且使用本發(fā)明的一個(gè)或者多個(gè)方面的計(jì)算環(huán)境的另一實(shí)例;圖2B描繪根據(jù)本發(fā)明的一個(gè)方面的圖2A的存儲(chǔ)器的進(jìn)一步細(xì)節(jié);圖3描繪根據(jù)本發(fā)明的一個(gè)方面的從一個(gè)存儲(chǔ)器位置向另一個(gè)存儲(chǔ)器位置復(fù)制分隔字符數(shù)據(jù)集的邏輯的一個(gè)實(shí)施例;圖4A描繪根據(jù)本發(fā)明的一個(gè)方面的從其將數(shù)據(jù)載入至向量寄存器的主存儲(chǔ)器的一個(gè)實(shí)例;圖4B描繪根據(jù)本發(fā)明的一個(gè)方面的載入來(lái)自圖4A的主存儲(chǔ)器的字符數(shù)據(jù)的向量寄存器的一個(gè)實(shí)例;圖4C描繪根據(jù)本發(fā)明的一個(gè)方面的從其載入數(shù)據(jù)至向量寄存器主存儲(chǔ)器的另一個(gè)實(shí)例;圖4D和4E描繪根據(jù)本發(fā)明的一個(gè)方面的加載來(lái)自圖4C的主存儲(chǔ)器的字符數(shù)據(jù)的向量寄存器的實(shí)例;圖5描繪根據(jù)本發(fā)明的一個(gè)方面的“向量載入至塊邊界”指令的格式的一個(gè)實(shí)施例;圖6A描繪根據(jù)本發(fā)明的一個(gè)方面的與“向量載入至塊邊界”指令相關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;圖6B描繪根據(jù)本發(fā)明的一個(gè)方面的與“向量載入至塊邊界”指令相關(guān)聯(lián)的邏輯的另一個(gè)實(shí)施例;圖7描繪根據(jù)本發(fā)明的一個(gè)方面的“向量尋找元素不相等”指令的格式的一個(gè)實(shí)施例;圖8描繪根據(jù)本發(fā)明的一個(gè)方面的與“向量尋找元素不相等”指令相關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;圖9描繪根據(jù)本發(fā)明的一個(gè)方面的用以執(zhí)行圖8的邏輯的各種處理塊的一個(gè)實(shí)施例;圖10描繪根據(jù)本發(fā)明的一個(gè)方面的“對(duì)塊邊界載入計(jì)數(shù)”指令的格式的一個(gè)實(shí)施例;圖11描繪根據(jù)本發(fā)明的一個(gè)方面的與“對(duì)塊邊界載入計(jì)數(shù)”指令相關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;圖12描繪根據(jù)本發(fā)明的一個(gè)方面的寄存器文件的一個(gè)實(shí)例;圖13描繪并入本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;圖14描繪并入且使用本發(fā)明一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;圖15描繪并入且使用本發(fā)明一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的進(jìn)一步實(shí)例;圖16描繪并入且使用本發(fā)明一個(gè)或多個(gè)方面的包含計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一實(shí)例;圖17描繪并入且使用本發(fā)明一個(gè)或多個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)的各種元件的一個(gè)實(shí)施例;圖18A描繪并入且使用本發(fā)明一個(gè)或多個(gè)方面的圖17的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一個(gè)實(shí)施例;圖18B描繪并入且使用本發(fā)明一個(gè)或多個(gè)方面的圖17的計(jì)算機(jī)系統(tǒng)的分支單元的一個(gè)實(shí)施例;圖18C描繪并入且使用本發(fā)明一個(gè)或多個(gè)實(shí)施例的圖17的計(jì)算機(jī)系統(tǒng)的載入/存儲(chǔ)單元的一個(gè)實(shí)施例;以及圖19描繪并入且使用本發(fā)明一個(gè)或多個(gè)方面的仿真主機(jī)計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例。具體實(shí)施方式根據(jù)本發(fā)明的一個(gè)方面,提供用于促進(jìn)字符數(shù)據(jù)的處理的能力,包括(但不限于)任何語(yǔ)言中的字母字符;數(shù)字;標(biāo)點(diǎn)符號(hào);和/或其他符號(hào)。字符數(shù)據(jù)可為或可不為數(shù)據(jù)的串。標(biāo)準(zhǔn)與字符數(shù)據(jù)相關(guān)聯(lián),標(biāo)準(zhǔn)的實(shí)例包括(但不限于):ASCII(美國(guó)信息交換標(biāo)準(zhǔn)碼);Unicode,包括(但不限于)UTF(Unicode變換格式)8;UTF16;等。在一個(gè)方面中,提供使用并行處理并且在不引起無(wú)根據(jù)的例外的情況下,從一個(gè)存儲(chǔ)器位置向另一個(gè)存儲(chǔ)器位置復(fù)制終止字符數(shù)據(jù)集的字符(例如,字符的空終止串)的技術(shù)。在一個(gè)或者多個(gè)寄存器內(nèi)加載要復(fù)制的字符數(shù)據(jù)。具體地,在一個(gè)實(shí)施例中,使用將數(shù)據(jù)并行載入向量寄存器至指定邊界并且提供確定載入的字符數(shù)目的方式的指令。在一個(gè)實(shí)施例中,為了確定載入字符的數(shù)目(計(jì)數(shù)),使用另一指令(例如,“對(duì)塊邊界載入計(jì)數(shù)”指令)。另外,使用用以在字符數(shù)據(jù)內(nèi)尋找第一分隔符字符(例如,第一終止字符,諸如零或者空字符)的指令(例如,“向量尋找元素不相等”指令)。該指令并行檢查多個(gè)字節(jié)的數(shù)據(jù)。通過(guò)使用這些指令,可以使用最少數(shù)目的分支指令復(fù)制字符數(shù)據(jù)集。另外,提供字符數(shù)據(jù)的快速并行復(fù)制,同時(shí)防止假意外。如本文描述,向量寄存器的一個(gè)元素(也稱為向量)作為實(shí)例長(zhǎng)度是一、二或者四字節(jié);并且向量操作數(shù)(例如)為具有多個(gè)元素的SIMD(單指令多數(shù)據(jù))操作數(shù)。在其他實(shí)施例中,元素可以是其他大小的;且向量操作數(shù)不需要為SIMD,和/或可包括一個(gè)元素。參看圖1描述并入且使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例。計(jì)算環(huán)境100包括(例如)經(jīng)由(例如)一條或多條總線108和/或其他連接耦接至彼此的處理器102(例如,中央處理單元)、存儲(chǔ)器104(例如,主存儲(chǔ)器)和一個(gè)或多個(gè)輸入/輸出(I/O)器件和/或接口106。在一個(gè)實(shí)例中,處理器102基于由InternationalBusinessMachinesCorporation供應(yīng)的z/Architecture,且為服務(wù)器的一部分,諸如也由InternationalBusinessMachinesCorporation供應(yīng)且實(shí)施z/Architecture的Systemz服務(wù)器。z/Architecture的一個(gè)實(shí)施例描述于題為“z/ArchitecturePrinciplesofOperation”的公開號(hào)(SA22-7832-08號(hào),第九版,2010年8月)的報(bào)告中,該報(bào)告在此以其全文引用的方式并入本文中。在一個(gè)實(shí)例中,該處理器執(zhí)行操作系統(tǒng),諸如,也由InternationalBusinessMachinesCorporation供應(yīng)的z/OS。和為美國(guó)紐約Armonk市的InternationalBusinessMachinesCorporation的注冊(cè)商標(biāo)。本文中使用的其他名稱可能為InternationalBusinessMachinesCorporation或其他公司的注冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱。在另一實(shí)施例中,處理器102基于由InternationalBusinessMachinesCorporation供應(yīng)的Power架構(gòu)。Power架構(gòu)的一個(gè)實(shí)施例描述于“PowerISATM第2.06版修訂B”(InternationalBusinessMachinesCorporation,2010年7月23日)中,該文件在此以其全文引用的方式并入本文中。POWER為InternationalBusinessMachinesCorporation的注冊(cè)商標(biāo)。在再一實(shí)施例中,處理器102基于由IntelCorporation供應(yīng)的Intel架構(gòu)。Intel架構(gòu)的一個(gè)實(shí)施例描述于“64andIA-32ArchitecturesDeveloper'sManual:第2B卷,InstructionsSetReference,A-L”(序號(hào)253666-041US,2011年12月)和“64andIA-32ArchitecturesDeveloper'sManual:第2B卷,InstructionsSetReference,M-Z”(序號(hào)253667-041US,2011年12月)中,這些文件中的每一個(gè)在此以其全文引用的方式并入本文中。為加利福尼亞的圣克拉拉的IntelCorporation的注冊(cè)商標(biāo)。參看圖2A描述并入且使用本發(fā)明的一個(gè)或多個(gè)實(shí)施例的計(jì)算環(huán)境的另一實(shí)施例。在此實(shí)例中,計(jì)算環(huán)境200包括(例如)經(jīng)由(例如)一個(gè)或多個(gè)總線208和/或其他連接耦接至彼此的本地中央處理單元202、存儲(chǔ)器204和一個(gè)或多個(gè)輸入/輸出器件和/或接口206。作為實(shí)例,計(jì)算環(huán)境200可包括:由InternationalBusinessMachinesCorporation(Armonk,NewYork)供應(yīng)的PowerPC處理器、pSeries服務(wù)器或xSeries服務(wù)器;由HewlettPackardCo.(PaloAlto,California)供應(yīng)的具有IntelItaniumII處理器的HPSuperdome;和/或基于由InternationalBusinessMachinesCorporation、HewlettPackard、Intel、Oracle或其他人供應(yīng)的架構(gòu)的其他機(jī)器。本地中央處理單元202包括一個(gè)或多個(gè)本地寄存器210,諸如,在該環(huán)境內(nèi)的處理期間使用的一個(gè)或多個(gè)通用寄存器和/或一個(gè)或多個(gè)專用寄存器。這些寄存器包括表示在任何特定時(shí)間點(diǎn)的環(huán)境狀態(tài)的信息。此外,本地中央處理單元202執(zhí)行存儲(chǔ)于存儲(chǔ)器204中的指令和程序代碼。在一個(gè)特定實(shí)例中,中央處理單元執(zhí)行存儲(chǔ)于存儲(chǔ)器204中的仿真器代碼212。此代碼使得以一個(gè)架構(gòu)中配置的處理環(huán)境能夠仿真另一架構(gòu)。舉例而言,仿真器代碼212允許基于不同于z/Architecture的架構(gòu)的機(jī)器(諸如,PowerPC處理器、pSeries服務(wù)器、xSeries服務(wù)器、HPSuperdome服務(wù)器或其他)仿真z/Architecture并執(zhí)行基于z/Architecture開發(fā)的軟件和指令。參看圖2B描述關(guān)于仿真器代碼212的進(jìn)一步細(xì)節(jié)??蛻糁噶?50包含開發(fā)在不同于本地CPU202的架構(gòu)的架構(gòu)中執(zhí)行的軟件指令(例如,機(jī)器指令)。舉例而言,客戶指令250可能已經(jīng)設(shè)計(jì)以在z/Architecture處理器102上執(zhí)行,但相反,正在本地CPU202(其可為(例如)IntelItaniumII處理器)上仿真客戶指令250。在一個(gè)實(shí)例中,仿真器代碼212包括指令取得單元252以自存儲(chǔ)器204獲得一個(gè)或多個(gè)客戶指令250,并且可選地提供用于所獲得的指令的本地緩沖。仿真器代碼212也包括指令翻譯例程254以確定已獲得的客戶指令的類型且將客戶指令翻譯成一個(gè)或多個(gè)相應(yīng)本地指令256。此翻譯包括(例如)識(shí)別要由客戶指令執(zhí)行的功能并選擇(多個(gè))本地指令以執(zhí)行該功能。另外,仿真器212包括仿真控制例程260以使得執(zhí)行本地指令。仿真控制例程260可使得本地CPU202執(zhí)行仿真一個(gè)或多個(gè)先前所獲得的客戶指令的本地指令的例程,并且,在這種執(zhí)行完成時(shí),將控制返回至指令取得例程以仿真下一個(gè)客戶指令或群客戶指令的獲得。本地指令256的執(zhí)行可包括將數(shù)據(jù)自存儲(chǔ)器204載入至寄存器中;將數(shù)據(jù)自寄存器存儲(chǔ)回至存儲(chǔ)器;或執(zhí)行某類型的算術(shù)或邏輯運(yùn)算(如由翻譯例程確定那樣)。每個(gè)例程(例如)以軟件來(lái)實(shí)施,該軟件存儲(chǔ)于存儲(chǔ)器中且由本地中央處理單元202來(lái)執(zhí)行。在其他實(shí)例中,例程或運(yùn)算中的一個(gè)或多個(gè)以固件、硬件、軟件或其某組合來(lái)實(shí)施??墒褂帽镜谻PU的寄存器210或通過(guò)使用存儲(chǔ)器204中的位置仿真仿真處理器的寄存器。在實(shí)施例中,客戶指令250、本地指令256和仿真器代碼212可常駐于相同存儲(chǔ)器中或可在不同存儲(chǔ)器器件間分配。如本文中所使用,固件包括(例如)處理器的微碼、毫碼和/或宏碼。固件包括(例如)在高級(jí)機(jī)器碼的實(shí)施中使用的硬件級(jí)指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,固件包括(例如)通常作為微碼遞送的專屬碼,該微碼包括受信任軟件或基礎(chǔ)硬件所特有的微碼且控制操作系統(tǒng)對(duì)系統(tǒng)硬件的存取。在一個(gè)實(shí)例中,所獲得的、經(jīng)翻譯并經(jīng)執(zhí)行的客戶指令250為本文中所描述的一個(gè)或者多個(gè)指令。自存儲(chǔ)器取得是一個(gè)架構(gòu)(例如,z/Architecture)的指令,將該指令翻譯且表示為另一架構(gòu)(例如,PowerPC、pSeries、xSeries、Intel等)的本地指令256的序列。然后執(zhí)行這些本地指令。在一個(gè)實(shí)施例中,本文中所描述的各種指令為根據(jù)本發(fā)明的實(shí)施例提供的向量指令,其為向量工具的一部分。向量工具提供(例如)在自一個(gè)至十六個(gè)元素的范圍內(nèi)的固定大小的向量。每向量包括由工具中所定義的向量指令進(jìn)行運(yùn)算的數(shù)據(jù)。在一個(gè)實(shí)施例中,若向量由多個(gè)元素組成,則將每個(gè)元素與其他元素并行地處理。指令完成不出現(xiàn),直至所有元素的處理完成。如本文中所描述,可將向量指令實(shí)施為包括(但不限于)z/Architecture、Power、Intel等的各種架構(gòu)的一部分。盡管本文中所描述的實(shí)施例針對(duì)z/Architecture,但向量指令和本發(fā)明的一個(gè)或多個(gè)實(shí)施例可基于許多其他架構(gòu)。z/Architecture僅為實(shí)例。在將向量工具實(shí)施為z/Architecture的一部分的一個(gè)實(shí)施例中,為了使用向量寄存器和指令,將指定控制寄存器(例如,控制寄存器0)中的向量啟用控制和寄存器控制設(shè)定為(例如)一。若安裝了向量工具且在未設(shè)定啟用控制的情況下執(zhí)行向量指令,則看作為數(shù)據(jù)例外。若未安裝向量工具且執(zhí)行向量指令,則看作為操作例外。向量數(shù)據(jù)例如以與其他數(shù)據(jù)格式相同的自左至右順序顯現(xiàn)于儲(chǔ)存器中。編號(hào)為0至7的數(shù)據(jù)格式的位構(gòu)成儲(chǔ)存器中的最左側(cè)(最低編號(hào))字節(jié)位置中的字節(jié),位8至15形成下個(gè)順序位置中的字節(jié),等等。在另一實(shí)例中,向量數(shù)據(jù)可以另一順序(諸如,自右至左)顯現(xiàn)于儲(chǔ)存器中。用向量工具提供的向量指令中的許多向量指令具有指定位的字段。被稱作寄存器擴(kuò)展位或RXB的此字段包括用于向量寄存器指明的操作數(shù)中的每一個(gè)的最高有效位。用于未由指令指定的寄存器指明的位將保留,且被設(shè)定為零。在一個(gè)實(shí)例中,RXB字段包括四個(gè)位(例如,位0至3),且將位定義如下:0-用于指令的第一向量寄存器指明的最高有效位。1-用于指令的第二向量寄存器指明(若有的話)的最高有效位。2-用于指令的第三向量寄存器指明(若有的話)的最高有效位。3-用于指令的第四向量寄存器指明(若有的話)的最高有效位。由(例如)組譯器取決于寄存器編號(hào)將每位設(shè)定為零或一。舉例而言,對(duì)于寄存器0至15,將位設(shè)定為0;對(duì)于寄存器16至31,將位設(shè)定為1等等。在一個(gè)實(shí)施例中,每個(gè)RXB位為用于包括一個(gè)或多個(gè)向量寄存器的指令中的特定位置的擴(kuò)展位。舉例而言,在一個(gè)或多個(gè)向量指令中,RXB的位0為位置8至11的擴(kuò)展位,其被指派至(例如)V1;RXB的位1為位置12至15的擴(kuò)展位,其被指派至(例如)V2;等等。在另一實(shí)施例中,RXB字段包括額外位,且將一個(gè)以上位用作用于每個(gè)向量或位置的擴(kuò)展。如本文描述,根據(jù)本發(fā)明的一個(gè)方面使用各種指令,以便從一個(gè)存儲(chǔ)器位置向另一個(gè)存儲(chǔ)器位置復(fù)制字符數(shù)據(jù),諸如來(lái)自終止字符串的數(shù)據(jù)。下面進(jìn)一步詳細(xì)描述與復(fù)制相關(guān)聯(lián)的處理和使用的各種指令。。首先參考圖3,在一個(gè)實(shí)施例中,為了復(fù)制終止字符數(shù)據(jù)集的字符(諸如,空終止字符串),使用例如“向量載入至塊邊界”指令,用至少一部分字符數(shù)據(jù)集載入向量寄存器(步驟300)。該指令并行載入直到例如16個(gè)字節(jié)的數(shù)據(jù),而不跨越從其載入數(shù)據(jù)的主存儲(chǔ)器的指定邊界。下面描述與此指令相關(guān)的細(xì)節(jié)。此后,使用例如下面描述的“對(duì)塊邊界載入計(jì)數(shù)”指令確定數(shù)據(jù)的載入字節(jié)的數(shù)目(步驟302)。接著,執(zhí)行關(guān)于字符數(shù)據(jù)的末尾(例如,關(guān)于空或者零)的搜索(步驟304)。在一個(gè)實(shí)施例中,使用下面描述的“向量尋找元素不相等”指令,以在加載的寄存器中搜索終止字符(例如,空、零或者另一終止字符)。在一個(gè)實(shí)例中,該指令在選定向量寄存器中搜索空元素,也稱為零元素(例如,整個(gè)元素是零)。空或者零元素指示字符數(shù)據(jù)的終止;例如,數(shù)據(jù)的具體字符串的末端。搜索的結(jié)果是第一空元素(本文也稱為終止字符)的索引(例如,字節(jié)索引),或者在沒(méi)有找到終止字符或者不相等元素的情況下,載入向量的搜索的結(jié)果是預(yù)指定值,諸如正在搜索向量的大小。此后,做出關(guān)于是否尋找到終止字符的確定(詢問(wèn)306)。如果“向量尋找元素不相等指令”沒(méi)有尋找到終止字符,則做出關(guān)于載入的字符的數(shù)目(例如,依據(jù)“對(duì)塊邊界載入計(jì)數(shù)”指令確定)是否小于向量的大小(例如,16)的另外確定(詢問(wèn)38)。如果小于向量的大小,則將載入字符存儲(chǔ)在存儲(chǔ)器的指定位置(步驟310)。另外,索引(該索引將提供在何處繼續(xù)存儲(chǔ)數(shù)據(jù)在存儲(chǔ)器中的位置)遞增向量大小(步驟312)。也就是,將要存儲(chǔ)的附加數(shù)據(jù)附加在之前數(shù)據(jù)上。例如,附加數(shù)據(jù)的開始地址將是從第一字符存儲(chǔ)的指定位置開始的16字節(jié)(或者依賴于向量大小的其他大小)。處理繼續(xù)步驟300。返回詢問(wèn)308,如果載入字節(jié)的數(shù)目大于或者等于向量大小,則通過(guò)邏輯或者連續(xù)迭代(iteration),依賴于這是否是第一次要么在指定位置要么在從指定位置的偏移,在存儲(chǔ)器中存儲(chǔ)至邊界的載入向量的字節(jié)(步驟314)。另外,將存儲(chǔ)器地址遞增至邊界(以使得下一數(shù)據(jù)集存儲(chǔ)在下一順序寄存器),步驟316,并且處理繼續(xù)步驟300。返回詢問(wèn)306,如果在載入向量中尋找到終止字符,則做出關(guān)于終止字符的索引(由“向量尋找元素不相等”指令提供)是否小于或者等于載入字節(jié)的數(shù)目(從“對(duì)塊邊界載入計(jì)數(shù)”指令確定)的確定(詢問(wèn)318)。如果是這樣,則載入向量的字節(jié)存儲(chǔ)在存儲(chǔ)器中(步驟320),并且不存在另外要存儲(chǔ)的數(shù)據(jù)。已經(jīng)從一個(gè)存儲(chǔ)器位置向另一存儲(chǔ)器位置復(fù)制字符數(shù)據(jù)集。否則,處理繼續(xù)步驟314。用以復(fù)制終止字符串的實(shí)例偽碼提供如下:如上所示,首先寄存器RX通過(guò)例如執(zhí)行RX和RX之間的XOR并且將結(jié)果放置在RX中將RX初始化為零。然后,其中達(dá)16個(gè)字節(jié)的數(shù)據(jù)載入寄存器VSTR中的循環(huán)開始。對(duì)于終止字符在VSTR中執(zhí)行搜索并且將結(jié)果放置在變量VPOS中。另外,載入VSTR的字節(jié)的數(shù)目的計(jì)數(shù)被確定并且放置在變量GLEN中。此后,終止字符的索引從VPOS提取并且放置在GPOS中。如果尋找到終止字符,則轉(zhuǎn)到串的末尾處理(EOS)。如果否,則將該計(jì)數(shù)與向量大小比較,并且如果小于向量大小,則執(zhí)行頁(yè)的末尾(EOP)處理。否則,載入向量的數(shù)據(jù)存儲(chǔ)至另一存儲(chǔ)器位置,并且索引指針RX遞增向量的大小(例如,16),并且處理循環(huán)。在EOP處理,索引被添加至基本寄存器,以獲取在何處存儲(chǔ)數(shù)據(jù)的當(dāng)前值,并且在該位置存儲(chǔ)該數(shù)據(jù)。然后由存儲(chǔ)的字節(jié)的數(shù)目更新該索引。對(duì)于EOS,做出用以確定終止索引是否小于或者等于計(jì)數(shù)的比較。如果否,則載入在頁(yè)的末尾,并且檢測(cè)到的零是不可預(yù)測(cè)數(shù)據(jù)中的零,所以循環(huán)到頁(yè)的末尾處理。否則,遞增指針并且寫出到終止字符的字節(jié)至存儲(chǔ)器。這樣完成處理。在另一實(shí)施例中,不執(zhí)行計(jì)數(shù)與16的比較,相反,來(lái)自LCBB的條件碼指示計(jì)數(shù)是否小于16。在圖4A中描繪從其復(fù)制數(shù)據(jù)的主存儲(chǔ)器400的一個(gè)實(shí)例。如所示,該主存儲(chǔ)器包括字符“HelloWorld!”,并且例如在存儲(chǔ)器位置0X6FF3。作為復(fù)制的一部分,來(lái)自主存儲(chǔ)器的字符數(shù)據(jù)載入至一個(gè)或者多個(gè)向量寄存器。由垂直虛線402示出在載入數(shù)據(jù)中沒(méi)有跨越的主存儲(chǔ)器的邊界。該數(shù)據(jù)載入至向量寄存器420,其實(shí)例描繪在圖4B中。在圖4C中描繪從其復(fù)制數(shù)據(jù)并且載入向量寄存器的主存儲(chǔ)器450的一個(gè)實(shí)例。如所示,該主存儲(chǔ)器包括字符“HelloWorld!”,并且例如在存儲(chǔ)器位置0X6FF6。由在字符數(shù)據(jù)的末尾之前的垂直虛線452示出在載入數(shù)據(jù)中沒(méi)有跨越的主存儲(chǔ)器的邊界。由此,至邊界的字符數(shù)據(jù)首先載入至寄存器470,其實(shí)例描繪在圖4D中,并且然后剩余數(shù)據(jù)載入至向量寄存器490,如圖4E所示。如上所示,在一個(gè)實(shí)施例中,為了從一個(gè)存儲(chǔ)器位置向另一個(gè)存儲(chǔ)器位置復(fù)制終止字符數(shù)據(jù)(諸如空終止字符),使用各種指令。下面詳細(xì)描述這些指令的實(shí)例。用以加載向量寄存器的一個(gè)指令是“向量載入至塊邊界”(VLBB)指令,參考圖5描述其實(shí)例。在一個(gè)實(shí)例中,“向量載入至塊邊界”指令500包括操作碼字段502a(例如,位0至7)、502b(例如,位40至47),其指示“向量載入至塊邊界”操作;向量寄存器字段504(例如,位8至11),其用以指明向量寄存器(V1);索引字段(X2)506(例如,位12至15);基本字段(B2)508(例如,位16至19);位移(displacement)字段(D2)510(例如,位20至31);掩碼字段(M3)512(例如,位32至35);和RXB字段514(例如,位36至39)。在一個(gè)實(shí)例中,字段504至514中的每一個(gè)分開且獨(dú)立于(多個(gè))操作碼字段。另外,在一個(gè)實(shí)施例中,這些字段分開且獨(dú)立于彼此;然而,在其他實(shí)施例中,可組合一個(gè)以上字段。下文描述關(guān)于這些字段的使用的其他信息。在一個(gè)實(shí)例中,由操作碼字段502a指明的操作碼的選定位(例如,前兩個(gè)位)指定指令的長(zhǎng)度和格式。在此特定實(shí)例中,長(zhǎng)度為三個(gè)半字,且格式為帶擴(kuò)展的操作碼字段的向量寄存器和索引存儲(chǔ)器運(yùn)算。向量(V)字段以及由RXB指定的其對(duì)應(yīng)擴(kuò)展位指明向量寄存器。具體地,對(duì)于向量寄存器,使用(例如)寄存器字段的四位字段(其中添加寄存器擴(kuò)展位(RXB)作為最高有效位)指定含有操作數(shù)的寄存器。舉例而言,若四位字段為0110且擴(kuò)展位為0,則五位字段00110指示寄存器編號(hào)6。與指令的字段相關(guān)聯(lián)的下標(biāo)編號(hào)表示該字段適用的操作數(shù)。舉例而言,與V1相關(guān)聯(lián)的下標(biāo)編號(hào)1表示第一操作數(shù),等等。寄存器操作數(shù)的長(zhǎng)度為一個(gè)寄存器,其為(例如)128個(gè)位。在一個(gè)實(shí)例中,在“向量寄存器和索引儲(chǔ)存器運(yùn)算”指令中,將由X2和B2字段指明的通用寄存器的內(nèi)容添加至D2字段的內(nèi)容以形成第二操作數(shù)地址。在一個(gè)實(shí)例中,將針對(duì)“向量載入至塊邊界”指令的位移D2作為12-位無(wú)符號(hào)整數(shù)對(duì)待。在一個(gè)實(shí)施例中,M3字段指定用以用信號(hào)向CPU通知關(guān)于載入至的塊邊界的代碼。若指定保留值,則看作為指定例外。實(shí)例碼和對(duì)應(yīng)值如下:在“向量載入至塊邊界”(VLBB)指令的一個(gè)實(shí)施例的執(zhí)行中,在一個(gè)實(shí)施例中,自左至右進(jìn)行,以零索引字節(jié)元素開始,以來(lái)自第二操作數(shù)的字節(jié)載入第一操作數(shù)(在通過(guò)V1字段加上擴(kuò)展位指明的寄存器中指定)。第二操作數(shù)為通過(guò)第二操作數(shù)地址(也被稱作開始地址)指明的存儲(chǔ)器位置。載入自該存儲(chǔ)器位置開始,且繼續(xù)至由指令(或處理器)計(jì)算出的結(jié)束地址,如下文所描述。若遇到邊界條件,則其為依賴于對(duì)待第一操作數(shù)的其余部分的方式的模型。未看作為關(guān)于未載入的一個(gè)字節(jié)的存取例外。在一個(gè)實(shí)例中,未載入的字節(jié)不可預(yù)測(cè)。在上述實(shí)例指令中,開始地址通過(guò)索引寄存器值(X2)+基寄存器值(B2)+位移(D2)來(lái)確定;然而,在其他實(shí)施例中,通過(guò)以下來(lái)提供開始地址:寄存器值;指令地址+指令文本指定偏移(offset);寄存器值+位移;或寄存器值+索引寄存器值;(僅作為一些實(shí)例)。另外,在一個(gè)實(shí)施例中,指令不包括RXB字段。相反,不使用擴(kuò)展或以另一方式提供擴(kuò)展(諸如,自指令外部的控制),或提供擴(kuò)展作為指令的另一字段的一部分。參看圖6A描述與“向量載入至塊邊界”指令相關(guān)聯(lián)的處理的一個(gè)實(shí)施例的進(jìn)一步細(xì)節(jié)。在該實(shí)例中,在指令中指定邊界大小。計(jì)算環(huán)境的處理器正執(zhí)行此邏輯。在一個(gè)實(shí)施例中,最初,建立邊界掩碼(BdyMask),其用以確定與指定邊界的靠近性(步驟600)。為了建立該掩碼,在一個(gè)實(shí)例中,采用邊界大小(BdySize)(602)的2的補(bǔ)數(shù)否定數(shù)(complementnegation),建立邊界掩碼604(例如,BdyMask=0-BdySize)。在一個(gè)實(shí)例中,通過(guò)指令(例如,M3字段)提供邊界大??;或在另一實(shí)例中,由機(jī)器確定邊界大小,如本文中所描述。此后,計(jì)算開始地址,其指示從其載入將開始的存儲(chǔ)器中的位置(步驟610)。作為實(shí)例,可通過(guò)以下數(shù)據(jù)來(lái)提供開始地址612:寄存器值;指令地址加上指令文本指定偏移;寄存器值加上位移;寄存器值加上索引寄存器值;或寄存器值加上索引寄存器值加上位移。在本文中提供的指令中,由X2字段、B2字段和D2字段來(lái)提供開始地址。即,將通過(guò)X2和B2指明的寄存器的內(nèi)容添加至通過(guò)D2指示的位移以提供開始地址。計(jì)算開始地址的上文所指示的方式僅為實(shí)例;其他實(shí)例也可能。接下來(lái),計(jì)算結(jié)束地址,其指示自何處停止載入(步驟620)。此計(jì)算的輸入(例如)為邊界大小602、開始地址612、向量大小(vec_size)614(例如,以字節(jié)計(jì);例如,16)和邊界掩碼604。在一個(gè)實(shí)例中,如下計(jì)算結(jié)束地址622:EndAddress=min(StartAddress+(BdySize-(StartAddress&BdyMask)),StartAddress+vec_size)。此后,以索引字節(jié)0開始,自始于開始地址且終止于結(jié)束地址的存儲(chǔ)器載入第一操作數(shù)(即,指明的向量寄存器)(步驟630)。此情形使得能夠?qū)⒖勺償?shù)目個(gè)字節(jié)自存儲(chǔ)器載入至向量中,而不跨越指明的存儲(chǔ)器邊界。舉例而言,若存儲(chǔ)器邊界在64個(gè)字節(jié)處,且開始地址在58個(gè)字節(jié)處,則在向量寄存器中載入字節(jié)58至64。在一個(gè)實(shí)例中,并行載入字節(jié)。參考圖6B描述與“向量載入至塊邊界”指令相關(guān)聯(lián)的處理的另一實(shí)施例。在該實(shí)施例中,邊界大小不由指令指定,相反,邊界大小由執(zhí)行該指令的處理器動(dòng)態(tài)確定。在一個(gè)實(shí)施例中,最初,計(jì)算指示從其開始加載的存儲(chǔ)器中的位置的開始地址(步驟650)。作為實(shí)例,開始地址652可以由寄存器值;指令地址加指令文本指定偏移;寄存器值加位移;寄存器值加索引寄存器值;或寄存器值加索引寄存器值加位移提供。在本文中提供的指令中,由X2字段、B2字段和D2字段來(lái)提供開始地址。即,將通過(guò)X2和B2指明的寄存器的內(nèi)容添加至通過(guò)D2指示的位移以提供開始地址。計(jì)算開始地址的上文所指示的方式僅為實(shí)例;其他實(shí)例也可能。此后,做出關(guān)于該邊界是否要?jiǎng)討B(tài)確定的確定(詢問(wèn)654)。如果否,則使用M3字段中指定的值作為邊界大小(BdySize)。否則,處理器動(dòng)態(tài)確定邊界大小(步驟656)。例如,M3字段指定邊界的類型(例如,高速緩沖存儲(chǔ)器線、頁(yè)等),并且基于該類型和處理器的一個(gè)或者多個(gè)特性(例如,處理器的高速緩沖存儲(chǔ)器線大小、處理器的頁(yè)大小等),處理器確定該邊界。作為實(shí)例,基于該類型,處理器使用邊界的固定大小(例如,處理器的預(yù)定義固定高速緩沖存儲(chǔ)器線或者頁(yè)大小),或者基于該類型,處理器確定邊界。例如,如果該類型是頁(yè)邊界,則處理器在翻譯后備緩沖器(TLB)中查找開始地址,并且從其確定頁(yè)邊界。也存在其他實(shí)例。確定邊界大小之后,要么動(dòng)態(tài)要么通過(guò)指定的指令,建立用以確定對(duì)指定邊界的接近性的邊界掩碼(BdyMask)(步驟660)。為了建立掩碼,在一個(gè)實(shí)例中,采用邊界大小(BdySize)(658)的2的補(bǔ)數(shù)否定數(shù),建立邊界掩碼662(例如,BdyMask=0-BdySize)。接下來(lái),計(jì)算指示自何處停止載入的結(jié)束地址(步驟670)。此計(jì)算的輸入為(例如)邊界大小658、開始地址652、向量大小(vec_size)664(例如,以字節(jié)計(jì);例如,16)和邊界掩碼662。在一個(gè)實(shí)例中,如下計(jì)算結(jié)束地址672:EndAddress=min(StartAddress+(BdySize-(StartAddress&BdyMask)),StartAddress+vec_size)。此后,以索引字節(jié)0開始,自始于開始地址且終止于結(jié)束地址的存儲(chǔ)器載入第一操作數(shù)(即,指明的向量寄存器)(步驟680)。此情形使得能夠?qū)⒖勺償?shù)目個(gè)字節(jié)自存儲(chǔ)器載入至向量中,而不跨越指明的存儲(chǔ)器邊界。如上所述,舉例而言,若存儲(chǔ)器邊界處在64個(gè)字節(jié)處,且開始地址處在58個(gè)字節(jié)處,則在向量寄存器中載入字節(jié)58至64。在一個(gè)實(shí)施例中,并行載入這些字節(jié)。根據(jù)“向量載入至塊邊界”指令的任一實(shí)施例載入的向量寄存器的一個(gè)實(shí)例描繪于圖4B中。如所指示,無(wú)數(shù)據(jù)經(jīng)過(guò)由圖4A的虛垂直線指明的邊界載入。經(jīng)過(guò)邊界的位置不可存取且沒(méi)有例外發(fā)生。在一個(gè)特定實(shí)施例中,自左至右載入向量。然而,在另一實(shí)施例中,可自右至左載入向量。在一個(gè)實(shí)施例中,在執(zhí)行時(shí)(runtime)提供向量的方向-自左至右或自右至左。舉例而言,作為實(shí)例,指令存取寄存器、狀態(tài)控制或指示處理的方向?yàn)樽宰笾劣一蜃杂抑磷蟮钠渌麑?shí)體。在一個(gè)實(shí)施例中,不將此方向控制編碼為指令的一部分,而是在執(zhí)行時(shí)將其提供至指令。在一個(gè)實(shí)例中,“向量載入至塊邊界”指令僅僅加載與主存儲(chǔ)器(本文也稱為主儲(chǔ)存器)的塊內(nèi)的第二操作數(shù)的相應(yīng)字節(jié)一致的向量寄存器(第一操作數(shù))的字節(jié)。主存儲(chǔ)器的塊要么在指令中指定(例如,在指令中指定大小,以及從其載入要開始的塊內(nèi)的地址)要么由塊邊界的類型(例如,高速緩沖存儲(chǔ)器線或者頁(yè))和執(zhí)行該指令的處理器的一個(gè)或者多個(gè)特性(諸如高速緩沖存儲(chǔ)器線或者頁(yè)大小)動(dòng)態(tài)確定。如本文使用,主存儲(chǔ)器的塊是指定大小的存儲(chǔ)器的任何塊。指定大小也稱為塊的邊界,該邊界是塊的末端。用于尋找終止字符(諸如空終止符)的一個(gè)指令是“向量尋找元素不相等”指令,(VFBNEZ),其實(shí)例在圖7中描繪。該指令在一個(gè)實(shí)施例中能夠關(guān)于不相等性比較多個(gè)向量的數(shù)據(jù),以及在選定向量中搜索終止符,諸如空或者零元素(例如,整個(gè)元素是零)。在一個(gè)實(shí)施例中,“向量尋找元素不相等”指令700包括:操作碼字段702a(例如,位0至7)、702b(例如,位40至47),其指示“向量尋找不相等”操作;第一向量寄存器字段704(例如,位8至11),其用以指明第一向量寄存器(V1);第二向量寄存器字段706(例如,位12至15),其用以指明第二向量寄存器(V2);第三向量寄存器字段708(例如,位16至19),其用以指明第三向量寄存器(V3);第一掩碼字段(M5)710(例如,位24至27);第二掩碼字段(M4)712(例如,位32至35);和RXB字段714(例如,位36至39)。在一個(gè)實(shí)例中,字段704至714中的每一個(gè)是分開的且獨(dú)立于(多個(gè))操作碼字段。另外,在一個(gè)實(shí)施例中,這些字段是分開的且獨(dú)立于彼此;然而,在其他實(shí)施例中,可組合一個(gè)以上字段。下文描述關(guān)于這些字段的使用的進(jìn)一步信息。在一個(gè)實(shí)例中,由操作碼字段702a指明的操作碼的選定位(例如,前兩個(gè)位)指定指令的長(zhǎng)度和格式。在此特定實(shí)例中,選定位指示長(zhǎng)度為三個(gè)半字,且格式為帶擴(kuò)展的操作碼字段的向量寄存器和寄存器運(yùn)算。每一個(gè)向量(V)字段以及由RXB指定的其對(duì)應(yīng)擴(kuò)展位指明向量寄存器。具體地,對(duì)于向量寄存器,使用(例如)寄存器字段的四位字段(以及作為最高有效位的寄存器擴(kuò)展位(RXB)的增加)指定含有操作數(shù)的寄存器。舉例而言,如果四位字段為0110且擴(kuò)展位為0,則五位字段00110指示寄存器編號(hào)6。與指令的字段相關(guān)聯(lián)的下標(biāo)編號(hào)表示該字段適用的操作數(shù)。舉例而言,與向量寄存器V1相關(guān)聯(lián)的下標(biāo)編號(hào)1表示第一操作數(shù),等等。寄存器操作數(shù)的長(zhǎng)度為一個(gè)寄存器,其為(例如)128個(gè)位。具有例如四位(0-3)的M4字段例如以位1-3指定元素大小控制。元素大小控制指定向量寄存器操作數(shù)中的元素的大小。在一個(gè)實(shí)例中,元素大小控制可以指定字節(jié)、半字(例如,2個(gè)字節(jié))或者字(例如,4個(gè)字節(jié))。例如,0指示字節(jié);1指示半字;并且2指示字,也稱為全字。如果指定保留值,則看作為指定例外。M5字段例如是四位字段(位0-3),例如包括:零搜索字段(ZS,位2),其若為一,則也將第二操作數(shù)的每個(gè)元素與零比較。(在另一實(shí)例中,其是與零比較的第三操作數(shù)或者另一操作數(shù)的每個(gè)元素);以及條件碼設(shè)定字段(CC,位3):其若為零,則不設(shè)定條件碼且條件碼保持不變。若為一,則作為實(shí)例,如以下所指定那樣來(lái)設(shè)定條件碼:0-若設(shè)定了零搜索位,則比較在比不相等比較更低的索引元素中檢測(cè)到兩個(gè)操作數(shù)中的零元素1-檢測(cè)到元素失配,且V2中的元素小于V3中的元素2-檢測(cè)到元素失配,且V2中的元素大于V3中的元素3-所有元素比較起來(lái)相等,且若設(shè)定了零搜索位,則在第二操作數(shù)(或者,在另一實(shí)施例中,其他操作數(shù))中沒(méi)有尋找到零元素。在“向量尋找元素不相等”指令的執(zhí)行中,在一個(gè)實(shí)施例中自左至右進(jìn)行,將第二操作數(shù)的無(wú)符號(hào)的二進(jìn)制整數(shù)元素(包括在由V2和其擴(kuò)展位指定的向量寄存器中)與第三操作數(shù)的對(duì)應(yīng)的無(wú)符號(hào)的二進(jìn)制整數(shù)元素(包括在由V3加上其擴(kuò)展位指定的向量寄存器中)比較。若兩個(gè)元素不相等,則將最左側(cè)不相等元素的字節(jié)索引放置于第一操作數(shù)(在由V1和其擴(kuò)展位指定的向量寄存器中指明)的指定字節(jié)(例如,字節(jié)7)中,且將零存儲(chǔ)至第一操作數(shù)的所有其他字節(jié)。在一個(gè)實(shí)例中,返回的元素(例如,存儲(chǔ)在指定字節(jié)中)的字節(jié)索引是不相等的最左側(cè)元素的第一字節(jié)的索引。例如,如果元素大小是字節(jié),則返回最左側(cè)不相等元素的索引(例如,如果存在16個(gè)元素(0-15),并且元素6不相等,則返回索引6)。類似,如果字節(jié)大小是半字,并且存在8個(gè)元素(0-7),并且元素三的要么字節(jié)6要么字節(jié)7不相等,則返回字節(jié)索引6。此外,如果元素大小是全字并且存在四個(gè)元素(0-3),并且元素一的字節(jié)4-7之一不相等,則返回字節(jié)索引4。如果M5字段中的條件碼設(shè)定位設(shè)定為例如一,則條件碼設(shè)為指示哪個(gè)操作數(shù)更大(如果存在的話)。也就是,例如第二操作數(shù)中的字符的二進(jìn)制整數(shù)等效物與第三操作數(shù)的不相等字符的二進(jìn)制整數(shù)等效物比較,并且基于該比較設(shè)置條件碼。如果元素相等,則將等于向量大小(字節(jié)的數(shù)目,例如16)的字節(jié)索引放置于第一操作數(shù)的指定字節(jié)(例如,字節(jié)7),并且將零放置于所有其他字節(jié)位置中。若條件碼設(shè)定位為一,則設(shè)定選定條件碼(例如,條件碼3)。在其中正在使用僅僅用以尋找終止字符的“向量尋找元素不相等”指令的該實(shí)施例中,第二和第三操作數(shù)二者包括相同的數(shù)據(jù),因此,比較產(chǎn)生不相等字符。若在M5字段中設(shè)定了零搜索位,則也比較第二操作數(shù)(或者在其他實(shí)施例中,第三操作數(shù)或者另一操作數(shù))中的每個(gè)元素與零(也稱為空、終止符、終止字符、串的末尾等)的相等性。若在發(fā)現(xiàn)第二操作數(shù)的任意其他元素不相等之前在第二操作數(shù)中尋找到零元素,則將發(fā)現(xiàn)為零的元素的第一字節(jié)的字節(jié)索引存儲(chǔ)于第一操作數(shù)的指定字節(jié)(例如,字節(jié)7)中。將零存儲(chǔ)于所有其他字節(jié)中,且設(shè)定選定條件碼(例如,條件碼零)。在一個(gè)實(shí)施例中,并行執(zhí)行元素的比較。例如,如果正在比較的向量寄存器在長(zhǎng)度上是16個(gè)字節(jié),則并行比較16個(gè)字節(jié)。在其他實(shí)施例中,數(shù)據(jù)的單元可以與字節(jié)不同,并且并行比較的數(shù)目與單元大小對(duì)應(yīng)。另外,在另一實(shí)施例中,在執(zhí)行時(shí)(runtime)提供向量的方向-自左至右或自右至左。舉例而言,作為實(shí)例,指令存取指示處理的方向?yàn)樽宰笾劣一蜃杂抑磷蟮募拇嫫?、狀態(tài)控制或其他實(shí)體。在一個(gè)實(shí)施例中,不將此方向控制編碼為指令的一部分,而是在執(zhí)行時(shí)將其提供至指令。在另一實(shí)施例中,指令不包括RXB字段。相反,不使用擴(kuò)展或者擴(kuò)展以另一方式(諸如,自從指令的外部的控制)提供,或者提供為指令的另一字段的一部分。參考圖8描述關(guān)于處理“向量尋找元素不相等”指令的一個(gè)實(shí)施例的細(xì)節(jié)。在一個(gè)實(shí)施例中,計(jì)算環(huán)境的處理器正執(zhí)行該邏輯。最初,做出關(guān)于對(duì)空的搜索(也稱為零元素、串的末尾、終止符等)是否要執(zhí)行的確定(詢問(wèn)800)。如果要執(zhí)行對(duì)空的搜索,則做出針對(duì)空字符(即,對(duì)于零元素)的比較(步驟802),并且將結(jié)果輸出至nullidx803。例如,將零元素的最左側(cè)字節(jié)的索引放置在nullidx中。例如,如果元素大小是字節(jié)并且在字節(jié)5中尋找到零元素,則將其中尋找到零元素的字節(jié)的索引(例如,5)放置在nullidx中。類似地,如果元素大小是半字并且存在8個(gè)元素0-7,并且元素三(即,字節(jié)6-7)是零,則將6(對(duì)于字節(jié)索引6)放置于nullidx中。此外,如果元素大小是全字并且存在四個(gè)元素0-3,并且元素一(即,字節(jié)4-7)是零,則將4(對(duì)于字節(jié)索引4)放置于nullidx中。如果沒(méi)有尋找到空元素,則在一個(gè)實(shí)例中,將向量的大小(例如,以字節(jié);例如16)放置在nullidx中。此外,或者如果沒(méi)有空搜索要執(zhí)行,則基于比較運(yùn)算并行執(zhí)行多個(gè)比較(例如,16),以比較A與B(步驟804)。在一個(gè)實(shí)例中,A是第二操作數(shù)的內(nèi)容,并且B是第三操作數(shù)的內(nèi)容,并且該比較運(yùn)算不相等。在變量806中存儲(chǔ)比較的結(jié)果,依賴于搜索是自左還是自右該變量806被稱為左索引(cmpidxl)或右索引(cmpidxr)。例如,如果該比較是不相等比較,搜索是自左向右并且比較導(dǎo)致一個(gè)或者多個(gè)不相等,則與最低不相等元素的第一字節(jié)相關(guān)聯(lián)的索引放置在cmpidxl中。作為一個(gè)實(shí)例,如果元素大小是字節(jié)并且在向量(0-15)中存在16個(gè)元素,并且在元素6中尋找到不相等,則6存儲(chǔ)在cmpidxl中。類似地,如果元素大小是半字并且在向量(0-7)中存在8個(gè)元素,并且在元素3中尋找到不相等(例如在字節(jié)6或7),則返回元素的第一字節(jié)(字節(jié)6)的索引。同樣地,如果元素大小是全字并且存在4個(gè)元素(0-3),并且在元素1(例如在字節(jié)4-7)中尋找到不相等,則返回元素的第一字節(jié)(字節(jié)4)的索引。如果存在不相等比較,則在一個(gè)實(shí)施例中,依賴于比較的方向,cmpidxl或cmpidxr設(shè)定為等于向量的大小(例如,以字節(jié);例如,16)。此后,做出關(guān)于搜索是否自左或自右的確定(詢問(wèn)808)。如果搜索自左,則變量cmpidx設(shè)定為等于cmpidxl(步驟810);否則,cmpidx設(shè)定為等于cmpidxr(步驟812)。設(shè)定cmpidx之后,做出關(guān)于是否對(duì)于空字符執(zhí)行搜索的確定(詢問(wèn)814)。如果沒(méi)有搜索到空字符,則變量idx例如設(shè)定為比較索引cmpidx,步驟(816)。如果搜索到空,則idx設(shè)定為比較索引或者空索引nullidx中的最小值(步驟818)。這結(jié)束處理。在圖9中描繪圖8的處理的塊邏輯的實(shí)例。在該實(shí)例中,存在兩個(gè)輸入,向量B900和向量A902。兩個(gè)輸入被輸入到并行執(zhí)行比較(例如,不相等)的比較邏輯904。例如,一個(gè)輸入(向量A)也被輸入執(zhí)行空處理的零檢測(cè)邏輯906。比較邏輯的輸出(idxL或idxR)908被輸入到結(jié)果確定邏輯912以及零檢測(cè)邏輯的輸出nullidx910被輸入到結(jié)果確定邏輯912。結(jié)果確定邏輯也采用如下控制作為輸入:指示搜索的方向的右/左914;指示零處理是否要執(zhí)行的零檢測(cè)916;以及提供每個(gè)元素的大小(例如,字節(jié)、半字、字)的元素大小918,并且產(chǎn)生存儲(chǔ)在輸出向量922(例如字節(jié)7)中的所得索引920,即resultidx。另外,結(jié)果確定邏輯包括視情況輸出條件碼924的條件碼處理923。用于比較邏輯904的實(shí)例偽碼如下:如所示,變量idxL或者idxR依賴于方向初始化為向量的大小(例如,字節(jié)的數(shù)量;例如,16)。然后,向量A的每個(gè)元素與向量B的對(duì)應(yīng)元素比較。在一個(gè)示例中,該比較是字節(jié)比較,所以對(duì)于16個(gè)字節(jié)中的每個(gè)(i)做出比較。在該實(shí)例中,對(duì)比運(yùn)算不相等,并且如果找到不相等,則將不相等字節(jié)的索引在自左搜索的情況下存儲(chǔ)在idxL中,或者在自右搜索的情況下存儲(chǔ)在idxR中。零檢測(cè)邏輯906的實(shí)例偽碼如下:如所示,測(cè)試向量的每個(gè)元素(j),以看看其是否等于零。如果元素等于零,則nullidx設(shè)定等于該元素的索引乘以元素大小。例如,如果元素大小是半字(2個(gè)字節(jié))并且在元素3中檢測(cè)到空字節(jié),則3乘以2,并且nullidx設(shè)定為表示字節(jié)6的6。類似地,如果元素大小是半字(4字節(jié)),并且在元素3中檢測(cè)到空字節(jié),則3乘以4,并且nullidx設(shè)定為12。同樣,結(jié)果確定邏輯912的實(shí)例偽代碼如下:如所示,如果左/右控制指示左,則cmpidx設(shè)定等于idxL;否則,cmpidx設(shè)定等于idxR。另外,如果零檢測(cè)指示符是ON,則resultidx設(shè)定等于cmpidx或nullidx中的最小值;并且如果條件碼設(shè)定控制是ON并且cmpidx大于nullidx,則條件碼設(shè)定為零。否則,如果零檢測(cè)不是ON,則resultidx設(shè)定等于cmpidx。另外,如果元素大小等于字節(jié),則元素大小掩碼設(shè)定為ξ11111ξ;如果元素大小等于2個(gè)字節(jié),則掩碼設(shè)定為ξ11110ξ,并且如果元素大小等于4個(gè)字節(jié),則掩碼設(shè)定為ξ11100ξ。此后,resultidx設(shè)定等于與元素大小掩碼AND(與)的resultidx。例如,如果元素大小是半字并且字節(jié)7是resultidx,則resultidx=00111AND11110,以提供00110。所以resultidx設(shè)定等于6(即,00110二進(jìn)制),其是元素的第一字節(jié)。此外,條件碼被可選地設(shè)定。如果指令的設(shè)定條件碼控制設(shè)置為ON,則提供條件碼;否則,不設(shè)定條件碼。作為實(shí)例,如果該控制設(shè)定ON,則在resultidx=16的情況下,條件碼設(shè)定為3。否則,如果A的resultidx小于B的resultidx,則條件碼設(shè)定為1;否則,條件碼設(shè)定為2。對(duì)于128位向量,比較邏輯僅僅執(zhí)行例如16字節(jié)比較,而不是例如256字節(jié)比較。這提供更大向量的縮放。另外,左/右控制可以提供為執(zhí)行時(shí)值并且不在指令內(nèi)編碼。另外,返回為結(jié)果的值是字節(jié)位置,而不是元素索引。另外,支持與1字節(jié)和2字節(jié)比較一起的4字節(jié)比較。在另一實(shí)施例中,零搜索不是條件,而相反,當(dāng)執(zhí)行“向量尋找元素不相等”指令時(shí)執(zhí)行零搜索?;诨蛘唔憫?yīng)于執(zhí)行該指令,執(zhí)行零搜索,并且返回零元素的位置(例如,字節(jié)索引)和/或第一不匹配元素的位置(例如,字節(jié)索引)。在一個(gè)實(shí)施例中,無(wú)論實(shí)施例如何,對(duì)于“向量尋找元素不相等”指令執(zhí)行的比較的數(shù)目與向量的字節(jié)的數(shù)目對(duì)應(yīng)。例如,如果正搜索或者比較的向量是16字節(jié),則例如并行執(zhí)行至多16個(gè)比較。在另一實(shí)施例中,一旦尋找到不匹配或者零元素,則比較停止。參考圖10描述“對(duì)塊邊界載入計(jì)數(shù)”(LCBB)指令的一個(gè)實(shí)施例。該指令例如提供從存儲(chǔ)器中的指定地址到指定存儲(chǔ)器邊界的數(shù)據(jù)的字節(jié)的數(shù)目的計(jì)數(shù)(例如,其提供向量寄存器中載入而不跨越存儲(chǔ)器的指定邊界的字節(jié)的數(shù)目)。在一個(gè)實(shí)例中,“對(duì)塊邊界載入計(jì)數(shù)”指令100包括:操作碼字段1002a(例如,位0至7)、1002b(例如,位40至47),其指示“對(duì)塊邊界計(jì)數(shù)”操作;寄存器字段1004(例如,位8至11),其用以指明通用寄存器(R1);索引字段(X2)1006(例如,位12至15);基本字段(B2)1008(例如,位16至19);位移(displacement)字段(D2)1010(例如,位20至31);和掩碼字段(M3)1012(例如,位32至35)。在一個(gè)實(shí)例中,字段1004-1012中的每一個(gè)分開且獨(dú)立于(多個(gè))操作碼字段。另外,在一個(gè)實(shí)施例中,這些字段分開且獨(dú)立于彼此;然而,在其他實(shí)施例中,可組合一個(gè)以上字段。下文描述關(guān)于這些字段的使用的其他信息。在一個(gè)實(shí)例中,由操作碼字段1002a指明的操作碼的選定位(例如,前兩個(gè)位)指定指令的長(zhǎng)度和格式。在此特定實(shí)例中,長(zhǎng)度為三個(gè)半字,且格式為帶擴(kuò)展的操作碼字段的寄存器和索引儲(chǔ)存器運(yùn)算。與指令的字段相關(guān)聯(lián)的下標(biāo)編號(hào)表示該字段適用的操作數(shù)。舉例而言,與R1相關(guān)聯(lián)的下標(biāo)編號(hào)1表示第一操作數(shù),等等。寄存器操作數(shù)的長(zhǎng)度為一個(gè)寄存器,其為(例如)128個(gè)位。在一個(gè)實(shí)例中,在“寄存器和索引儲(chǔ)存器運(yùn)算”指令中,將由X2和B2字段指明的通用寄存器的內(nèi)容添加至D2字段的內(nèi)容以形成第二操作數(shù)地址。在一個(gè)實(shí)例中,將針對(duì)“對(duì)塊邊界載入計(jì)數(shù)”指令的位移D2作為一個(gè)12位無(wú)符號(hào)的整數(shù)對(duì)待。第二操作數(shù)地址用于指示主存儲(chǔ)器中的位置;然而,在該實(shí)施例中,不用于尋址數(shù)據(jù)。在一個(gè)實(shí)施例中,M3字段指定用以用信號(hào)向CPU通知關(guān)于塊邊界大小計(jì)算要載入而不跨越存儲(chǔ)器邊界的可能的字節(jié)的數(shù)目的代碼。若指定保留值,則看作為指定例外。實(shí)例碼和對(duì)應(yīng)值如下:在另一實(shí)例中,邊界大小不包括在該指令中,而相反該邊界大小由執(zhí)行該指令的處理器動(dòng)態(tài)確定。例如,M3字段指定邊界的類型(例如,高速緩沖存儲(chǔ)器線、頁(yè)等),并且基于類型和處理器的一個(gè)或者多個(gè)特性(例如,處理器的高速緩沖存儲(chǔ)器線大小、處理器的頁(yè)大小等),處理器確定該邊界。作為實(shí)例,基于該類型,處理器使用邊界的固定大小(例如,處理器的預(yù)定義固定高速緩沖存儲(chǔ)器線或者頁(yè)大小),或者基于該類型,處理器確定邊界。例如,如果該類型是頁(yè)邊界,則處理器在翻譯后備緩沖器(TLB)中查找開始地址,并且從其確定頁(yè)邊界。也存在其他實(shí)例。例如,可以由指令的另一字段或者依據(jù)指令的外部的控制提供該類型。在“對(duì)塊邊界載入計(jì)數(shù)”指令的一個(gè)實(shí)施例的執(zhí)行中,在第一操作數(shù)指定的通用寄存器中放置含有可能自第二操作數(shù)位置載入而不跨越指定塊邊界(例如覆蓋于要載入的向量寄存器大小(例如,16)處)的字節(jié)的數(shù)目的無(wú)符號(hào)的二進(jìn)制整數(shù)(例如,64位)。由于在指令的執(zhí)行,可選條件碼設(shè)定諸如例如:0–操作數(shù)一是十六1–2–3–操作數(shù)一小于十六在上面的實(shí)例指令中,要從其開始計(jì)數(shù)的開始地址通過(guò)索引寄存器值(X2)+基本寄存器值(B2)+位移(D2)來(lái)確定;然而,在其他實(shí)施例中,通過(guò)以下值來(lái)提供開始地址:寄存器值;指令地址+指令文本指定偏移;寄存器值+位移;或寄存器值+索引寄存器值;(僅作為一些實(shí)例)。參考圖11描述處理“對(duì)塊邊界指令載入計(jì)數(shù)”指令的一個(gè)實(shí)施例的進(jìn)一步細(xì)節(jié)。在一個(gè)實(shí)例中,計(jì)算環(huán)境的處理器正在執(zhí)行該邏輯。在一個(gè)實(shí)施例中,最初建立用以確定指定邊界的接近性的邊界掩碼。(BdyMask)(步驟1100)。為了建立掩碼,在一個(gè)實(shí)例中,采用邊界大小(BdySize)1102的2的補(bǔ)數(shù)否定數(shù),從而建立邊界掩碼1104(例如,BdyMask=0-BdySize)。在一個(gè)實(shí)例中由指令(例如,M3字段)提供邊界大??;或者在另一實(shí)例中,由機(jī)器確定邊界大小,如本文描述。此后,計(jì)算開始地址,其指示從其開始計(jì)數(shù)的存儲(chǔ)器中的位置(步驟1110)。作為實(shí)例,可通過(guò)以下值來(lái)提供開始地址1112:寄存器值;指令地址加上指令文本指定偏移;寄存器值加位移;寄存器值加索引寄存器值;或寄存器值加索引寄存器值加上位移。在本文中提供的指令中,由X2字段、B2字段和D2字段來(lái)提供開始地址。即,將通過(guò)X2和B2指明的寄存器的內(nèi)容添加至通過(guò)D2指示的位移以提供開始地址。計(jì)算開始地址的上文所指示的方式僅為實(shí)例;其他實(shí)例也可能。接下來(lái),計(jì)算結(jié)束地址,其指示在其處停止計(jì)數(shù)的位置(步驟1120)。對(duì)此計(jì)算的輸入為(例如)邊界大小1102、開始地址1112、向量大小(vec_size)1114(例如,以字節(jié)計(jì),例如,16)和邊界掩碼1104。該寄存器例如為可以在其中載入數(shù)據(jù)的寄存器。在一個(gè)實(shí)例中,如下計(jì)算結(jié)束地址11122:此后,計(jì)算計(jì)數(shù)(步驟1130)。例如,count=EndAddress1122-StartAddress1112。在另一實(shí)例中,可以從開始地址計(jì)算計(jì)數(shù)而不需要使用結(jié)束地址。在該實(shí)例中,count=min(16,BdySize–(StartAddressANDBdyMask),其中16是向量寄存器(或者其他寄存器)的大小。在另一實(shí)例中,可以使用其他寄存器大小。在一個(gè)實(shí)施例中,使用“對(duì)塊邊界載入計(jì)數(shù)”指令以確定多少字節(jié)載入寄存器,諸如向量寄存器。如本文描述,該計(jì)數(shù)在確定字符數(shù)據(jù)集(諸如終止字符串)的長(zhǎng)度或者其他處理中有用。如指示,在一個(gè)實(shí)施例中,為了從一個(gè)存儲(chǔ)器位置向另一個(gè)存儲(chǔ)器位置復(fù)制數(shù)據(jù),使用向量寄存器。在一個(gè)向量工具的一個(gè)實(shí)例中,32個(gè)向量寄存器和其他類型的寄存器可映射至該向量寄存器的象限。舉例而言,如圖12中所展示,若存在包括32個(gè)向量寄存器1202的寄存器文件1200且每寄存器的長(zhǎng)度為128個(gè)位,則長(zhǎng)度為64個(gè)位的16個(gè)浮點(diǎn)寄存器1204可重疊這些向量寄存器。因此,作為實(shí)例,當(dāng)修改浮點(diǎn)寄存器2時(shí),然后也修改向量寄存器2。用于其他類型的寄存器的其他映射也可能。上面詳細(xì)描述的是并行復(fù)制終止字符數(shù)據(jù)并且不引起無(wú)根據(jù)的例外的技術(shù)。典型地,難于從一個(gè)分隔串向另一個(gè)并行復(fù)制字符,這是因?yàn)椴恢涝创欠裨诳缭竭吔绲拇嫒】赡芤鸩黄谕拇嫒±獾脑撨x定邊界跨越處附近結(jié)束。之前的技術(shù)僅僅一次復(fù)制一個(gè)字符,或者添加檢查以看看任一串是否在邊界附近。一次對(duì)一個(gè)字符工作固有慢。添加檢查提供復(fù)雜并且添加時(shí)延。通過(guò)使用并行載入數(shù)據(jù)至指定邊界并且提供確定載入的字符的數(shù)目的方式的指令和尋找到第一分隔符的索引的指令(其并行檢查數(shù)據(jù)),提供用最小數(shù)目的分支指令復(fù)制終止字符數(shù)據(jù)(例如,空終止)的技術(shù)。另外,提供串字符的快速并行復(fù)制以及防止假例外。使用上面技術(shù)的一個(gè)或者多個(gè)方面提供性能改進(jìn),包括減少的執(zhí)行時(shí)間。本文中,除非另有明確注釋或由上下文注釋,否則可互換地使用存儲(chǔ)器、主存儲(chǔ)器、儲(chǔ)存器與主儲(chǔ)存器。作為下文進(jìn)一步描述的此實(shí)施方式的一部分提供關(guān)于向量工具的額外細(xì)節(jié)(包括其他指令的實(shí)例)。如本領(lǐng)域技術(shù)人員將了解,本發(fā)明的一個(gè)或多個(gè)實(shí)施例可體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的一個(gè)或多個(gè)實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、常駐軟件、微碼等)或組合軟件與硬件實(shí)施例的實(shí)施例的形式,這些實(shí)施例在本文中大體上皆可被稱作“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的一個(gè)或多個(gè)實(shí)施例可采用體現(xiàn)于一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)(其具有體現(xiàn)于其上的計(jì)算機(jī)可讀程序代碼)中的計(jì)算機(jī)程序產(chǎn)品的形式。可利用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。舉例而言,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可為(但不限于)電子、磁性、光學(xué)、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置或器件或前述中的任何合適組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更特定實(shí)例(非詳盡清單)包括以下:具有一個(gè)或多個(gè)電線的電連接、便攜型計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPROM或快閃存儲(chǔ)器)、光纖、便攜型光盤-只讀存儲(chǔ)器(CD-ROM)、光學(xué)存儲(chǔ)器件、磁性存儲(chǔ)器件或前述的任何合適組合。在此文件的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可為可含有或存儲(chǔ)供指令執(zhí)行系統(tǒng)、裝置或器件使用或結(jié)合指令執(zhí)行系統(tǒng)、裝置或器件而使用的程序的任何有形介質(zhì)。現(xiàn)參看圖13,在一個(gè)實(shí)例中,計(jì)算機(jī)程序產(chǎn)品1300包括(例如)一個(gè)或多個(gè)非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1302以在其上存儲(chǔ)計(jì)算機(jī)可讀程序代碼構(gòu)件或邏輯1304,以提供和促進(jìn)本發(fā)明的一個(gè)或多個(gè)實(shí)施例??墒褂眠m當(dāng)介質(zhì)(包括(但不限于)無(wú)線、有線、光纖纜線、RF等或前述的任何合適組合)傳輸體現(xiàn)于計(jì)算機(jī)可讀介質(zhì)上的程序代碼??梢砸粋€(gè)或多個(gè)程序設(shè)計(jì)語(yǔ)言的任何組合來(lái)編寫用于進(jìn)行本發(fā)明的一個(gè)或多個(gè)方面的操作的計(jì)算機(jī)程序代碼,該一個(gè)或多個(gè)程序設(shè)計(jì)語(yǔ)言包括諸如Java、Smalltalk、C++等的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,和諸如“C”程序設(shè)計(jì)語(yǔ)言、組譯器或類似程序設(shè)計(jì)語(yǔ)言的常規(guī)程序性程序設(shè)計(jì)語(yǔ)言。程序代碼可完全在用戶的計(jì)算機(jī)上執(zhí)行、部分地在用戶的計(jì)算機(jī)上執(zhí)行、作為獨(dú)立軟件包而執(zhí)行、部分地在用戶的計(jì)算機(jī)上且部分地在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行,或完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后者情形下,遠(yuǎn)程計(jì)算機(jī)可經(jīng)由任一類型的網(wǎng)絡(luò)連接至用戶的計(jì)算機(jī),該任一類型的網(wǎng)絡(luò)包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),或可進(jìn)行至外部計(jì)算機(jī)的連接(例如,使用因特網(wǎng)服務(wù)提供者經(jīng)由因特網(wǎng))。本文中參考根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖說(shuō)明和/或方塊圖描述本發(fā)明的一個(gè)或多個(gè)方面。應(yīng)理解,可由計(jì)算機(jī)程序指令來(lái)實(shí)施流程圖說(shuō)明和/或方塊圖的每個(gè)塊和這些流程圖說(shuō)明和/或方塊圖中的塊的組合??蓪⑦@些計(jì)算機(jī)程序指令提供至通用計(jì)算機(jī)、專用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機(jī)器,以使得經(jīng)由該計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實(shí)施流程圖和/或方塊圖塊中所指定的功能/動(dòng)作的構(gòu)件。這些計(jì)算機(jī)程序指令也可存儲(chǔ)于計(jì)算機(jī)可讀介質(zhì)中,該計(jì)算機(jī)可讀介質(zhì)可指導(dǎo)計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置或其他器件以特定方式起作用,使得存儲(chǔ)于該計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生制造物件,其包括實(shí)施流程圖和/或方塊圖方塊中所指定的功能/動(dòng)作的指令。也可將這些計(jì)算機(jī)程序指令載入至計(jì)算機(jī)、其他可編程數(shù)據(jù)處理裝置或其他器件上以使得在該計(jì)算機(jī)、其他可編程裝置或其他器件上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)施的處理程序,使得在該計(jì)算機(jī)或其他可編程裝置上執(zhí)行的指令提供用于實(shí)施流程圖和/或方塊圖塊中所指定的功能/動(dòng)作的處理程序。這些圖中的流程圖和方塊圖說(shuō)明根據(jù)本發(fā)明的一個(gè)或多個(gè)方面的各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)施的架構(gòu)、功能性和操作。就此而言,流程圖或方塊圖中的每個(gè)塊可表示模塊、區(qū)段或代碼的一部分,其包含用于實(shí)施(多個(gè))指定邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令。也應(yīng)注意,在一些替代實(shí)施中,塊中所注釋的功能可能不以諸圖中所注釋的次序發(fā)生。舉例而言,取決于所涉及的功能性,實(shí)際上可實(shí)質(zhì)上同時(shí)執(zhí)行連續(xù)展示的兩個(gè)塊,或有時(shí)可以相反次序執(zhí)行這些塊。也將注意,方塊圖和/或流程圖說(shuō)明的每個(gè)塊和方塊圖和/或流程圖說(shuō)明中的塊的組合可由執(zhí)行指定功能或動(dòng)作的基于專用硬件的系統(tǒng)或?qū)S糜布c計(jì)算機(jī)指令的組合來(lái)實(shí)施。除上述內(nèi)容之外,本發(fā)明的一個(gè)或多個(gè)實(shí)施例也可由供應(yīng)客戶環(huán)境的管理的服務(wù)提供者來(lái)提供、供應(yīng)、部署、管理、服務(wù)等。舉例而言,服務(wù)提供者可為一個(gè)或多個(gè)客戶建立、維護(hù)、支持等執(zhí)行本發(fā)明的一個(gè)或多個(gè)實(shí)施例的計(jì)算機(jī)代碼和/或計(jì)算機(jī)基礎(chǔ)結(jié)構(gòu)。作為回報(bào),作為實(shí)例,服務(wù)提供者可在訂用和/或收費(fèi)協(xié)議下自客戶收取付款。此外或替代地,服務(wù)提供者可自廣告內(nèi)容銷售至一個(gè)或多個(gè)第三方而收取付款。在本發(fā)明的一個(gè)方面中,可部署用于執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面的應(yīng)用程序。作為實(shí)例,應(yīng)用程序的部署包含提供可操作以執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)基礎(chǔ)結(jié)構(gòu)。作為本發(fā)明的另一方面,可部署計(jì)算基礎(chǔ)結(jié)構(gòu),其包含將計(jì)算機(jī)可讀代碼整合至計(jì)算系統(tǒng)內(nèi),其中與該計(jì)算系統(tǒng)組合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。作為本發(fā)明的另一方面,可提供用于整合計(jì)算基礎(chǔ)結(jié)構(gòu)的處理,其包含將計(jì)算機(jī)可讀代碼整合至計(jì)算機(jī)系統(tǒng)中。計(jì)算機(jī)系統(tǒng)包含計(jì)算機(jī)可讀介質(zhì),其中計(jì)算機(jī)介質(zhì)包含本發(fā)明的一個(gè)或多個(gè)方面。與該計(jì)算機(jī)系統(tǒng)組合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。盡管上文描述了各種實(shí)施例,但這些僅為實(shí)例。舉例而言,其他架構(gòu)的計(jì)算環(huán)境可并入且使用本發(fā)明的一個(gè)或多個(gè)方面。另外,可使用其他大小的向量,且在不脫離本發(fā)明的精神的情況下,可作出對(duì)指令的改變。此外,可以在處理中使用其他指令,諸如,但不限于,“向量尋找元素相等”指令。另外,可以使用本發(fā)明的一個(gè)或者多個(gè)方面執(zhí)行不同于空終止字符數(shù)據(jù)的數(shù)據(jù)的復(fù)制。此外,可以使用與向量寄存器不同的寄存器和/或數(shù)據(jù)可以不同于字符數(shù)據(jù),諸如整數(shù)數(shù)據(jù)或其他類型的數(shù)據(jù)。另外,其他類型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為實(shí)例,適合于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)為可使用,其包括直接或經(jīng)由系統(tǒng)總線間接耦接至存儲(chǔ)器元件的至少兩個(gè)處理器。這些存儲(chǔ)器元件包括(例如)在程序代碼的實(shí)際執(zhí)行期間使用的本地存儲(chǔ)器、大容量?jī)?chǔ)存器和高速緩沖存儲(chǔ)器,高速緩沖存儲(chǔ)器提供至少一些程序代碼的臨時(shí)存儲(chǔ)以便減少在執(zhí)行期間必須自大容量?jī)?chǔ)存器取得代碼的次數(shù)。輸入/輸出端或I/O器件(包括(但不限于)鍵盤、顯示器、指點(diǎn)器件、DASD、磁帶、CD、DVD、隨身碟(thumbdrive)和其他存儲(chǔ)器介質(zhì)等)可直接或經(jīng)由介入的I/O控制器而耦接至系統(tǒng)。網(wǎng)絡(luò)適配器也可耦接至系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠經(jīng)由介入的私有或公用網(wǎng)絡(luò)而變得耦接至其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或儲(chǔ)存器件。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)絡(luò)卡僅為可用類型的網(wǎng)絡(luò)適配器中的少數(shù)幾種。參看圖14,描繪實(shí)施本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)5000的代表性組件。代表性主機(jī)計(jì)算機(jī)5000包含與計(jì)算機(jī)存儲(chǔ)器(即,中央儲(chǔ)存器)5002通信的一個(gè)或多個(gè)CPU5001,以及用于與其他計(jì)算機(jī)或SAN等通信的至存儲(chǔ)介質(zhì)器件5011和網(wǎng)絡(luò)5010的I/O接口。CPU5001符合具有構(gòu)建的指令集和構(gòu)建的功能性的架構(gòu)。CPU5001可具有動(dòng)態(tài)地址翻譯(DAT)5003,以用于將程序地址(虛擬地址)變換成存儲(chǔ)器的真實(shí)地址。DAT通常包括翻譯后備緩沖器(TLB)5007以用于高速緩沖翻譯,使得對(duì)計(jì)算機(jī)存儲(chǔ)器5002的塊的稍后存取不需要延遲地址翻譯。通常,高速緩沖存儲(chǔ)器5009用于計(jì)算機(jī)存儲(chǔ)器5002與處理器5001之間。高速緩沖存儲(chǔ)器5009可為層級(jí)式的,其具有可用于一個(gè)以上CPU的大型高速緩沖存儲(chǔ)器和在大型高速緩沖存儲(chǔ)器與每個(gè)CPU之間的較小較快(較低層級(jí))高速緩沖存儲(chǔ)器。在一些實(shí)施中,將較低層級(jí)高速緩沖存儲(chǔ)器分割以提供用于指令取得和數(shù)據(jù)存取的單獨(dú)的低層級(jí)高速緩沖存儲(chǔ)器。在一個(gè)實(shí)施例中,由指令取得單元5004經(jīng)由高速緩沖存儲(chǔ)器5009自存儲(chǔ)器5002取得指令。在指令解碼單元5006中解碼指令,且將指令(在一些實(shí)施例中,其他指令)分派給一個(gè)或多個(gè)指令執(zhí)行單元5008。通常使用若干個(gè)執(zhí)行單元5008,例如,算術(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元和分支指令執(zhí)行單元。由執(zhí)行單元執(zhí)行指令,從而按需要自指令指定的寄存器或存儲(chǔ)器存取操作數(shù)。若將自存儲(chǔ)器5002存取(載入或存儲(chǔ))操作數(shù),則載入/存儲(chǔ)單元5005通常在正被執(zhí)行的指令的控制下處置存取??稍谟布娐分谢蛟趦?nèi)部微碼(固件)中或由兩者的組合來(lái)執(zhí)行指令。如所注釋,計(jì)算機(jī)系統(tǒng)包括在本地(或主)儲(chǔ)存器中的信息,以及尋址、保護(hù)和參考和改變記錄。尋址的一些方面包括地址的格式、地址空間的概念、地址的各種類型,以及將地址的一種類型翻譯至地址的另一類型的方式。主儲(chǔ)存器中的一些儲(chǔ)存器包括永久指派的存儲(chǔ)位置。主儲(chǔ)存器為系統(tǒng)提供數(shù)據(jù)的可直接尋址的快速存取存儲(chǔ)。在可處理數(shù)據(jù)和程序兩者之前將數(shù)據(jù)和程序兩者載入至主儲(chǔ)存器中(自輸入器件)。主儲(chǔ)存器可包括一個(gè)或多個(gè)較小的快速存取緩沖儲(chǔ)存器(有時(shí)稱為高速緩沖存儲(chǔ)器)。高速緩沖存儲(chǔ)器通常與CPU或I/O處理器相關(guān)聯(lián)。通過(guò)程序大體上不可觀測(cè)到不同存儲(chǔ)介質(zhì)的實(shí)體構(gòu)造和用途的效應(yīng)(除了對(duì)性能的效應(yīng)外)??删S持針對(duì)指令和針對(duì)數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩沖存儲(chǔ)器。將高速緩沖存儲(chǔ)器內(nèi)的信息以相鄰字節(jié)維持于被稱為高速緩沖塊或高速緩沖存儲(chǔ)器線(或簡(jiǎn)稱為線)的整體邊界上。模型可提供“EXTRACTCACHEATTRIBUTE(提取高速緩沖存儲(chǔ)器屬性)”指令,其返回以字節(jié)計(jì)的高速緩沖存儲(chǔ)器線的大小。模型也可提供“PREFETCHDATA(預(yù)先取得數(shù)據(jù))”和“PREFETCHDATARELATIVELONG(預(yù)取得數(shù)據(jù)相對(duì)長(zhǎng)度)”指令,其實(shí)現(xiàn)儲(chǔ)存器至數(shù)據(jù)或指令高速緩沖存儲(chǔ)器中的預(yù)取得或數(shù)據(jù)自高速緩沖存儲(chǔ)器的釋放。將儲(chǔ)存器視為長(zhǎng)水平位串。對(duì)于多數(shù)操作,對(duì)儲(chǔ)存器的存取以自左至右順序進(jìn)行。將該位的串再分成八個(gè)位的單元。八位單元被稱為字節(jié),其為所有信息格式的基本建立塊。儲(chǔ)存器中的每個(gè)字節(jié)位置通過(guò)唯一非負(fù)整數(shù)來(lái)識(shí)別,該唯一非負(fù)整數(shù)為該字節(jié)位置的地址或簡(jiǎn)稱為字節(jié)地址。鄰近字節(jié)位置具有連續(xù)地址,其以左側(cè)的0開始且以自左至右順序進(jìn)行。地址為無(wú)符號(hào)二進(jìn)制整數(shù),且為24個(gè)、31個(gè)或64個(gè)位。在儲(chǔ)存器與CPU或通道子系統(tǒng)之間一次一字節(jié)或字節(jié)群組地傳輸信息。除非另有指定,否則,在(例如)z/Architecture中,儲(chǔ)存器中的字節(jié)群組由該群組的最左側(cè)字節(jié)來(lái)尋址。通過(guò)要執(zhí)行的操作隱含或明確指定該群組中的字節(jié)的數(shù)目。當(dāng)在CPU操作中使用時(shí),字節(jié)群組被稱為字段。在每個(gè)字節(jié)群組內(nèi),在(例如)z/Architecture中,以自左至右順序?qū)ξ痪幪?hào)。在z/Architecture中,最左側(cè)位有時(shí)被稱作“高階”位,且最右側(cè)位有時(shí)被稱作“低階”位。然而,位編號(hào)不是存儲(chǔ)地址。可僅尋址字節(jié)。為了對(duì)儲(chǔ)存器中的字節(jié)的單獨(dú)位操作,存取整個(gè)字節(jié)。將字節(jié)中的位自左至右編號(hào)為0至7(在(例如)z/Architecture中)。對(duì)于24位地址,可將地址中的位編號(hào)為8至31或40至63,或?qū)τ?1位地址,可將地址中的位編號(hào)為1至31或33至63;對(duì)于64位地址,可將地址中的位編號(hào)為0至63。在多個(gè)字節(jié)的任何其他固定長(zhǎng)度的格式內(nèi),自0開始對(duì)構(gòu)成該格式的位連續(xù)地編號(hào)。為了錯(cuò)誤檢測(cè)的目的,且優(yōu)選地為了校正的目的,可將一個(gè)或多個(gè)檢查位與每字節(jié)或與字節(jié)群組一起傳輸。由機(jī)器自動(dòng)地產(chǎn)生這種檢查位,且不可直接由程序來(lái)控制這種檢查位。以字節(jié)的數(shù)目來(lái)表達(dá)存儲(chǔ)容量。當(dāng)通過(guò)指令的操作碼隱含存儲(chǔ)操作數(shù)字段的長(zhǎng)度時(shí),認(rèn)為該字段具有固定長(zhǎng)度,其可為個(gè)、兩個(gè)、四個(gè)、八個(gè)或十六個(gè)字節(jié)。對(duì)于一些指令,可隱含更大字段。當(dāng)不隱含而是明確敘述存儲(chǔ)操作數(shù)字段的長(zhǎng)度時(shí),認(rèn)為該字段具有可變長(zhǎng)度??勺冮L(zhǎng)度操作數(shù)的長(zhǎng)度可以一個(gè)字節(jié)的增量變化(或?qū)τ谝恍┲噶?,以兩個(gè)字節(jié)的倍數(shù)或其他倍數(shù)的增量變化)。當(dāng)將信息放置于儲(chǔ)存器中時(shí),替換包括于指明的字段中的僅那些字節(jié)位置的內(nèi)容,即使至儲(chǔ)存器的物理路徑的寬度可能大于正存儲(chǔ)的字段的長(zhǎng)度也如此。某些信息單元將在儲(chǔ)存器中的整體邊界上。當(dāng)其存儲(chǔ)地址為該單元的長(zhǎng)度(以字節(jié)計(jì))的倍數(shù)時(shí),將邊界稱為信息單元的整體。對(duì)整體邊界上的2個(gè)、4個(gè)、8個(gè)和16個(gè)字節(jié)的字段給予特殊名稱。半字為在兩字節(jié)邊界上的兩個(gè)連續(xù)字節(jié)的群組,且為指令的基本建立塊。字為四字節(jié)邊界上的四個(gè)連續(xù)字節(jié)的群組。雙字為八字節(jié)邊界上的八個(gè)連續(xù)字節(jié)的群組。四倍字為16字節(jié)邊界上的16個(gè)連續(xù)字節(jié)的群組。當(dāng)儲(chǔ)存器地址指明半字、字、雙字和四倍字時(shí),地址的二進(jìn)制表示分別含有一個(gè)、兩個(gè)、三個(gè)或四個(gè)最右側(cè)零位。指令將在兩-字節(jié)整體邊界上。多數(shù)指令的存儲(chǔ)操作數(shù)不具有邊界對(duì)準(zhǔn)要求。在實(shí)施針對(duì)指令和數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩沖存儲(chǔ)器的器件上,若程序存儲(chǔ)至高速緩沖存儲(chǔ)器線中(隨后自該高速緩沖存儲(chǔ)器線取得指令),則可經(jīng)歷顯著延遲,而不管儲(chǔ)存器是否更改隨后取得的指令。在一個(gè)實(shí)施例中,可通過(guò)軟件(有時(shí)稱為經(jīng)授權(quán)內(nèi)部碼、固件、微碼、毫碼、微微碼(pico-code)等,前述中的任一個(gè)將與本發(fā)明的一個(gè)或多個(gè)方面一致)來(lái)實(shí)踐本發(fā)明。參看圖14,體現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的軟件程序代碼可由主機(jī)系統(tǒng)5000的處理器5001自長(zhǎng)期存儲(chǔ)介質(zhì)器件5011(諸如,CD-ROM驅(qū)動(dòng)、磁帶機(jī)或硬驅(qū)動(dòng))存取。軟件程序代碼可體現(xiàn)于多種已知介質(zhì)中的任一個(gè)上,以用于供數(shù)據(jù)處理系統(tǒng)(諸如,磁片、硬驅(qū)動(dòng)或CD-ROM)使用。該代碼可分布于這種介質(zhì)上,或可經(jīng)由網(wǎng)絡(luò)5010自計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器5002或儲(chǔ)存器至其他計(jì)算機(jī)系統(tǒng)地分發(fā)至用戶,以供這種其他系統(tǒng)的用戶使用。軟件程序代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序的功能和交互。通常將程序代碼自存儲(chǔ)介質(zhì)器件5011分頁(yè)至相對(duì)較高速計(jì)算機(jī)儲(chǔ)存器5002,在該相對(duì)較高速計(jì)算機(jī)儲(chǔ)存器5002處,程序代碼可用于由處理器5001處理。用于在存儲(chǔ)器中、在物理介質(zhì)上體現(xiàn)軟件程序代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件程序代碼的技術(shù)和方法已熟知,且在本文中將不進(jìn)一步加以討論。當(dāng)在有形介質(zhì)(包括(但不限于)電子存儲(chǔ)器模塊(RAM)、快閃存儲(chǔ)器、光盤(CD)、DVD、磁帶等)上建立和存儲(chǔ)程序代碼時(shí),程序代碼常常被稱作“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)通常可由優(yōu)選在計(jì)算機(jī)系統(tǒng)中的處理電路來(lái)讀取,以用于由處理電路執(zhí)行。圖15說(shuō)明可實(shí)踐本發(fā)明的一個(gè)或多個(gè)方面的代表性工作站或服務(wù)器硬件系統(tǒng)。圖15的系統(tǒng)5020包含代表性基礎(chǔ)計(jì)算機(jī)系統(tǒng)5021(諸如,個(gè)人計(jì)算機(jī)、工作站或服務(wù)器),包括選用的外圍器件?;A(chǔ)計(jì)算機(jī)系統(tǒng)5021包括一個(gè)或多個(gè)處理器5026和總線,該總線用以根據(jù)已知技術(shù)連接處理器5026與系統(tǒng)5021的其他組件并實(shí)現(xiàn)(多個(gè))處理器5026與系統(tǒng)5021的其他組件之間的通信??偩€將處理器5026連接至存儲(chǔ)器5025和長(zhǎng)期儲(chǔ)存器5027,長(zhǎng)期儲(chǔ)存器5027可包括(例如)硬驅(qū)動(dòng)(包括(例如)磁性介質(zhì)、CD、DVD和快閃存儲(chǔ)器中的任一個(gè))或磁帶驅(qū)動(dòng)。系統(tǒng)5021也可能包括用戶接口適配器,用戶接口適配器經(jīng)由總線將微處理器5026連接至或多個(gè)接口器件(諸如,鍵盤5024、鼠標(biāo)5023、打印機(jī)/掃描儀5030和/或其他接口器件),這些接口器件可為諸如觸敏式屏幕、數(shù)字化鍵入板(entrypad)等的任何用戶接口器件??偩€也經(jīng)由顯示器適配器將諸如LCD屏幕或監(jiān)視器的顯示器件5022連接至微處理器5026。系統(tǒng)5021可借助于能夠與網(wǎng)絡(luò)5029通信(5028)的網(wǎng)絡(luò)適配器與其他計(jì)算機(jī)或計(jì)算機(jī)網(wǎng)絡(luò)通信。實(shí)例網(wǎng)絡(luò)適配器為通信頻道、令牌環(huán)、以太網(wǎng)絡(luò)或調(diào)制解調(diào)器。替代地,系統(tǒng)5021可使用諸如CDPD(蜂窩式數(shù)字分組數(shù)據(jù))卡的無(wú)線接口通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這種其他計(jì)算機(jī)相關(guān)聯(lián),或系統(tǒng)5021可為具有另一計(jì)算機(jī)的客戶端/服務(wù)器布置中的客戶端等。所有這些配置以及適當(dāng)通信硬件和軟件為本領(lǐng)域已知。圖16說(shuō)明可實(shí)踐本發(fā)明的一個(gè)或多個(gè)方面的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括多個(gè)單獨(dú)網(wǎng)絡(luò)(諸如,無(wú)線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)),這些網(wǎng)絡(luò)中的每一個(gè)可包括多個(gè)單獨(dú)工作站5041、5042、5043、5044。另外,如本領(lǐng)域技術(shù)人員將了解,可包括一個(gè)或多個(gè)LAN,其中LAN可包含耦接至主機(jī)處理器的多個(gè)智能型工作站。仍參看圖16,網(wǎng)絡(luò)也可包括大型計(jì)算機(jī)或服務(wù)器,諸如,網(wǎng)關(guān)計(jì)算機(jī)(客戶端服務(wù)器5046)或應(yīng)用程序服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可存取數(shù)據(jù)儲(chǔ)存庫(kù)且也可自工作站5045直接存取)。網(wǎng)關(guān)計(jì)算機(jī)5046充當(dāng)至每個(gè)單獨(dú)網(wǎng)絡(luò)的入口點(diǎn)。當(dāng)將一個(gè)聯(lián)網(wǎng)協(xié)議連接至另一聯(lián)網(wǎng)絡(luò)協(xié)議時(shí),需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可優(yōu)選借助于通信鏈路耦接至另一網(wǎng)絡(luò)(例如,因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關(guān)5046直接耦接至一個(gè)或多個(gè)工作站5041、5042、5043、5044??衫每少?gòu)自InternationalBusinessMachinesCorporation的IBMeServerTMSystemz服務(wù)器來(lái)實(shí)施網(wǎng)關(guān)計(jì)算機(jī)。同時(shí)參看圖15和圖16,可體現(xiàn)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的軟件程序代碼可由系統(tǒng)5020的處理器5026自長(zhǎng)期存儲(chǔ)介質(zhì)5027(諸如,CD-ROM驅(qū)動(dòng)或硬驅(qū)動(dòng))存取。軟件程序代碼可體現(xiàn)于多種已知介質(zhì)中的任一個(gè)上,以用于供數(shù)據(jù)處理系統(tǒng)(諸如,磁盤、硬驅(qū)動(dòng)或CD-ROM)使用。程序代碼可分發(fā)于這種介質(zhì)上,或可經(jīng)由網(wǎng)絡(luò)自一個(gè)計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或儲(chǔ)存器至其他計(jì)算機(jī)系統(tǒng)地分發(fā)至用戶5050、5051,以供這種其他系統(tǒng)的用戶使用??商娲?,程序代碼可體現(xiàn)于存儲(chǔ)器5025中,且由處理器5026使用處理器總線來(lái)存取。此程序代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序5032的功能和交互。通常將程序代碼自存儲(chǔ)介質(zhì)5027分頁(yè)至高速存儲(chǔ)器5025,在高速存儲(chǔ)器5025處,程序代碼可用于由處理器5026處理。用于在存儲(chǔ)器中、在物理介質(zhì)上體現(xiàn)軟件程序代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件程序代碼的技術(shù)和方法已熟知且在本文中將不進(jìn)一步加以討論。當(dāng)在有形介質(zhì)(包括(但不限于)電子存儲(chǔ)器模塊(RAM)、快閃存儲(chǔ)器、光盤(CD)、DVD、磁帶等)上建立和存儲(chǔ)程序代碼時(shí),程序代碼常常被稱作“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)通??捎蓛?yōu)選在計(jì)算機(jī)系統(tǒng)中的處理電路來(lái)讀取,以用于由處理電路執(zhí)行。最容易用于處理器的高速緩沖存儲(chǔ)器(通常比處理器的其他高速緩沖存儲(chǔ)器快且小)為最低(L1或?qū)蛹?jí)一)高速緩沖存儲(chǔ)器,且主儲(chǔ)存器(主存儲(chǔ)器)為最高層級(jí)高速緩沖存儲(chǔ)器(若存在3個(gè)層級(jí),則為L(zhǎng)3)。常常將最低層級(jí)高速緩沖存儲(chǔ)器劃分成保持要執(zhí)行的機(jī)器指令的指令高速緩沖存儲(chǔ)器(I-高速緩沖存儲(chǔ)器)和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩沖存儲(chǔ)器(D-高速緩沖存儲(chǔ)器)。參看圖17,針對(duì)處理器5026描繪例示性處理器實(shí)施例。通常,使用高速緩沖存儲(chǔ)器5053的一個(gè)或多個(gè)層級(jí)緩沖存儲(chǔ)器塊以便改進(jìn)處理器性能。高速緩沖存儲(chǔ)器5053為保持有可能使用的存儲(chǔ)器數(shù)據(jù)的高速緩沖存儲(chǔ)器線的高速緩沖器。典型的高速緩沖存儲(chǔ)器線為64個(gè)、128個(gè)或256個(gè)字節(jié)的存儲(chǔ)器數(shù)據(jù)。除用于對(duì)數(shù)據(jù)進(jìn)行高速緩沖外,單獨(dú)的高速緩沖存儲(chǔ)器也常常用于對(duì)指令進(jìn)行高速緩沖。常常通過(guò)本領(lǐng)域中熟知的各種“窺探(snoop)”算法來(lái)提供高速緩沖一致性(存儲(chǔ)器和高速緩沖存儲(chǔ)器中的線的復(fù)制的同步)。處理器系統(tǒng)的主存儲(chǔ)器儲(chǔ)存器5025常常被稱作高速緩沖存儲(chǔ)器。在具有4個(gè)層級(jí)的高速緩沖存儲(chǔ)器5053的處理器系統(tǒng)中,主儲(chǔ)存器5025有時(shí)被稱作層級(jí)5(L5)高速緩沖存儲(chǔ)器,這是因?yàn)槠渫ǔ]^快且僅保持可用于計(jì)算機(jī)系統(tǒng)的非易失性儲(chǔ)存器(DASD、磁帶等)的部分。主儲(chǔ)存器5025對(duì)由操作系統(tǒng)分頁(yè)入和分頁(yè)出主儲(chǔ)存器5025的數(shù)據(jù)頁(yè)“進(jìn)行高速緩沖”。程序計(jì)數(shù)器(指令計(jì)數(shù)器)5061保持追蹤要執(zhí)行的當(dāng)前指令的地址。z/Architecture處理器中的程序計(jì)數(shù)器為64個(gè)位,且可經(jīng)截?cái)嘀?1或24個(gè)位以支持先前尋址限制。程序計(jì)數(shù)器通常體現(xiàn)于計(jì)算機(jī)的PSW(程序狀態(tài)字)中,使得程序計(jì)數(shù)器在上下文切換期間持續(xù)。因此,具有程序計(jì)數(shù)器值的進(jìn)行中程序可由(例如)操作系統(tǒng)來(lái)中斷(自程序環(huán)境至操作系統(tǒng)環(huán)境的上下文切換)。在程序不起作用時(shí),程序的PSW維持程序計(jì)數(shù)器值,且在操作系統(tǒng)正執(zhí)行時(shí),使用操作系統(tǒng)的程序計(jì)數(shù)器(在PSW中)。通常,以等于當(dāng)前指令的字節(jié)的數(shù)目的量來(lái)使程序計(jì)數(shù)器遞增。RISC(精簡(jiǎn)指令集計(jì)算)指令通常為固定長(zhǎng)度,而CISC(復(fù)雜指令集計(jì)算)指令通常為可變長(zhǎng)度。IBMz/Architecture的指令為具有2個(gè)、4個(gè)或6個(gè)字節(jié)長(zhǎng)度的CISC指令。舉例而言,通過(guò)上下文切換操作或分支指令的分支選取操作來(lái)修改程序計(jì)數(shù)器5061。在上下文切換操作中,將當(dāng)前程序計(jì)數(shù)器值連同關(guān)于正執(zhí)行的程序的其他狀態(tài)信息(諸如,條件碼)一起保存于程序狀態(tài)字中,且載入新程序計(jì)數(shù)器值從而指向要執(zhí)行的新程序模塊的指令。執(zhí)行分支選取操作以便通過(guò)將分支指令的結(jié)果載入至程序計(jì)數(shù)器5061中而準(zhǔn)許程序作出決策或在程序內(nèi)循環(huán)。通常,指令讀取單元5055用以代表處理器5026取得指令。取得單元取得“下一個(gè)順序指令”、分支選取指令的目標(biāo)指令或在上下文切換之后的程序的第一指令?,F(xiàn)代指令取得單元常常使用預(yù)取得技術(shù)以基于可能使用經(jīng)預(yù)先取得的指令的可能性而推測(cè)性地預(yù)取得指令。舉例而言,取得單元可取得包括下一個(gè)順序指令的指令的16個(gè)字節(jié)和再下一個(gè)順序指令的額外字節(jié)。然后由處理器5026執(zhí)行所取得的指令。在一個(gè)實(shí)施例中,將(多個(gè))所取得的指令傳遞至取得單元的分派單元5056。分派單元解碼(多個(gè))指令且將關(guān)于(多個(gè))經(jīng)解碼的指令的信息轉(zhuǎn)遞至適當(dāng)單元5057、5058、5060。執(zhí)行單元5057通常將自指令取得單元5055接收關(guān)于經(jīng)解碼的算術(shù)指令的信息,且將根據(jù)指令的操作碼對(duì)操作數(shù)執(zhí)行算術(shù)運(yùn)算。優(yōu)選自存儲(chǔ)器5025、構(gòu)建的寄存器5059或自正執(zhí)行的指令的立即字段,將操作數(shù)提供至執(zhí)行單元5057。當(dāng)存儲(chǔ)執(zhí)行的結(jié)果時(shí),將執(zhí)行的結(jié)果存儲(chǔ)于存儲(chǔ)器5025、寄存器5059中或其他機(jī)器硬件(諸如,控制寄存器、PSW寄存器等)中。處理器5026通常具有用于執(zhí)行指令的功能的一個(gè)或多個(gè)單元5057、5058、5060。參看圖18A,執(zhí)行單元5057可借助于接口邏輯5071與構(gòu)建的通用寄存器5059、解碼/分派單元5056、載入存儲(chǔ)單元5060和其他處理器單元5065通信。執(zhí)行單元5057可使用若干個(gè)寄存器電路5067、5068、5069以保持算術(shù)邏輯單元(ALU)5066將進(jìn)行運(yùn)算的信息。ALU執(zhí)行算術(shù)運(yùn)算(諸如,加法、減法、乘法和除法)以及邏輯函數(shù)(諸如,“和”(and)、“或”(or)和“異或”(XOR)、旋轉(zhuǎn)和移位)。優(yōu)選地,ALU支持依賴于設(shè)計(jì)的專業(yè)化運(yùn)算。其他電路可提供其他構(gòu)建的工具5072,包括(例如)條件碼和恢復(fù)支持邏輯。通常,將ALU運(yùn)算的結(jié)果保持于輸出寄存器電路5070中,輸出寄存器電路5070可將結(jié)果轉(zhuǎn)遞至多種其他處理功能。存在處理器單元的許多布置,本發(fā)明描述僅意欲提供對(duì)一個(gè)實(shí)施例的代表性理解。“加法”指令(例如)將在具有算術(shù)和邏輯功能性的執(zhí)行單元5057中執(zhí)行,而浮點(diǎn)指令(例如)將在具有專業(yè)化的浮點(diǎn)能力的浮點(diǎn)執(zhí)行中執(zhí)行。優(yōu)選地,執(zhí)行單元通過(guò)對(duì)操作數(shù)執(zhí)行操作碼定義的功能而對(duì)由指令識(shí)別的操作數(shù)進(jìn)行運(yùn)算。舉例而言,“加法”指令可由執(zhí)行單元5057對(duì)在由指令的寄存器字段識(shí)別的兩個(gè)寄存器5059中發(fā)現(xiàn)的操作數(shù)執(zhí)行。執(zhí)行單元5057對(duì)兩個(gè)操作數(shù)執(zhí)行算術(shù)加法,且將結(jié)果存儲(chǔ)于第三操作數(shù)中,其中第三操作數(shù)可為第三寄存器或兩個(gè)源寄存器中的一個(gè)。執(zhí)行單元優(yōu)選利用算術(shù)邏輯單元(ALU)5066,算術(shù)邏輯單元(ALU)5066能夠執(zhí)行多種邏輯函數(shù)(諸如,移位、旋轉(zhuǎn)、“和”(And)、“或”(Or)和“異或”(XOR))和多種代數(shù)函數(shù)(包括加法、減法、乘法、除法中的任一個(gè))。一些ALU5066經(jīng)設(shè)計(jì)以用于標(biāo)量運(yùn)算,且一些ALU5066經(jīng)設(shè)計(jì)以用于浮點(diǎn)運(yùn)算。取決于架構(gòu),數(shù)據(jù)可為大端法(BigEndian)(其中最低有效字節(jié)處于最高字節(jié)地址)或小端法(LittleEndian)(其中最低有效字節(jié)處于最低字節(jié)地址)。IBMz/Architecture為大端法。取決于架構(gòu),無(wú)符號(hào)的字段可為符號(hào)和量值(1的補(bǔ)數(shù)或2的補(bǔ)數(shù))。2的補(bǔ)數(shù)是有利的,因?yàn)锳LU并不需要設(shè)計(jì)減法能力,這由于在ALU中,2的補(bǔ)數(shù)中的負(fù)值或正值僅需要加法。通常以速記法來(lái)描述數(shù)字,其中12位字段定義4,096字節(jié)塊的地址,且通常描述為(例如)4Kbyte(千字節(jié))塊。參看圖18B,用于執(zhí)行分支指令的分支指令信息通常發(fā)送至分支單元5058,分支單元5058常常使用分支預(yù)測(cè)算法(諸如,分支歷史表5082)以在其他條件運(yùn)算完成之前預(yù)測(cè)分支的結(jié)果。將取得當(dāng)前分支指令的目標(biāo),且在條件運(yùn)算完成之前推測(cè)性地執(zhí)行當(dāng)前分支指令的目標(biāo)。當(dāng)完成條件運(yùn)算時(shí),基于條件運(yùn)算的條件和所推測(cè)的結(jié)果,完成或放棄推測(cè)性執(zhí)行的分支指令。典型分支指令可測(cè)試條件碼,且在條件碼滿足分支指令的分支要求的情況下分支至目標(biāo)地址,可基于包括(例如)在寄存器字段或指令的立即字段中發(fā)現(xiàn)的數(shù)字的若干個(gè)數(shù)字而計(jì)算目標(biāo)地址。分支單元5058可使用具有多個(gè)輸入寄存器電路5075、5076、5077和輸出寄存器電路5080的ALU5074。舉例而言,分支單元5058可與通用寄存器5059、解碼分派單元5056或其他電路5073通信。指令群組的執(zhí)行可對(duì)于包括(例如)以下的多種原因被中斷:由操作系統(tǒng)啟動(dòng)的上下文切換、引起上下文切換的程序例外或錯(cuò)誤、引起上下文切換的I/O中斷信號(hào)或多個(gè)程序的多線程活動(dòng)(在多線程化環(huán)境中)。優(yōu)選地,上下文切換動(dòng)作保存關(guān)于當(dāng)前正執(zhí)行的程序的狀態(tài)信息,且然后載入關(guān)于正被調(diào)用的另一程序的狀態(tài)信息。舉例而言,可將狀態(tài)信息保存于硬件寄存器中或存儲(chǔ)器中。狀態(tài)信息優(yōu)選包含指向要執(zhí)行的下一個(gè)指令的程序計(jì)數(shù)器值、條件碼、存儲(chǔ)器翻譯信息和構(gòu)建的寄存器內(nèi)容。上下文切換活動(dòng)可單獨(dú)或組合地通過(guò)硬件電路、應(yīng)用程序、操作系統(tǒng)程序或固件程序代碼(微碼、微微碼或經(jīng)授權(quán)內(nèi)部碼(LIC))來(lái)訓(xùn)練。處理器根據(jù)指令定義的方法來(lái)存取操作數(shù)。指令可使用指令的一部分的值來(lái)提供立即操作數(shù),可提供明確指向通用寄存器或?qū)S眉拇嫫?例如,浮點(diǎn)寄存器)的一個(gè)或多個(gè)寄存器字段。指令可利用通過(guò)操作碼字段識(shí)別為操作數(shù)的隱含的寄存器。指令可將存儲(chǔ)器位置用于操作數(shù)。操作數(shù)的存儲(chǔ)器位置可由寄存器、立即字段或寄存器與立即字段的組合來(lái)提供,如通過(guò)z/Architecture長(zhǎng)位移工具(longdisplacementfacility)舉例說(shuō)明,其中指令定義(例如)相加在一起以提供操作數(shù)在存儲(chǔ)器中的地址的基寄存器、索引寄存器和立即字段(位移字段)。除非另有指示,否則本文中的位置通常隱含主存儲(chǔ)器(主儲(chǔ)存器)中的位置。參看圖18C,處理器使用載入/存儲(chǔ)單元5060來(lái)存取儲(chǔ)存器。載入/存儲(chǔ)單元5060可通過(guò)獲得目標(biāo)操作數(shù)在存儲(chǔ)器5053中的地址且在寄存器5059或另一存儲(chǔ)器5053的位置中載入操作數(shù)來(lái)執(zhí)行載入操作,或可通過(guò)獲得目標(biāo)操作數(shù)在存儲(chǔ)器5053中的地址且將自寄存器5059或另一存儲(chǔ)器5053的位置獲得的數(shù)據(jù)存儲(chǔ)于存儲(chǔ)器5053中的目標(biāo)操作數(shù)位置中來(lái)執(zhí)行存儲(chǔ)操作。載入/存儲(chǔ)單元5060可為推測(cè)性的,且可以相對(duì)于指令順序而言無(wú)序的順序存取存儲(chǔ)器,然而,載入/存儲(chǔ)單元5060對(duì)于程序維持按次序執(zhí)行指令的顯現(xiàn)。載入/存儲(chǔ)單元5060可與通用寄存器5059、解碼/分派單元5056、高速緩沖存儲(chǔ)器/存儲(chǔ)器接口5053或其他元件5083通信,且包含各種寄存器電路、ALU5085和控制邏輯5090以計(jì)算存儲(chǔ)地址且提供管線定序以保持操作按次序。一些操作可能為無(wú)序的,但載入/存儲(chǔ)單元提供使得無(wú)序操作對(duì)于程序顯現(xiàn)為已按次序執(zhí)行的功能性,如本領(lǐng)域中所熟知。優(yōu)選地,應(yīng)用程序“看見”的地址常常被稱作虛擬地址。虛擬地址有時(shí)被稱作“邏輯地址”和“有效地址”。這些虛擬地址為虛擬是因?yàn)椋核鼈兺ㄟ^(guò)多種動(dòng)態(tài)地址翻譯(DAT)技術(shù)中的一個(gè)而重新導(dǎo)向至物理存儲(chǔ)器位置,這些DAT技術(shù)包括(但不限于)僅對(duì)虛擬地址加偏移值作為前綴、經(jīng)由一個(gè)或多個(gè)翻譯表翻譯虛擬地址,翻譯表優(yōu)選單獨(dú)或組合地包含至少段表和頁(yè)表,優(yōu)選地,段表具有指向頁(yè)表的入口。在z/Architecture中,提供翻譯層級(jí),包括區(qū)第一表、區(qū)第二表、區(qū)第三表、段表和選用的頁(yè)表。常常通過(guò)利用翻譯后備緩沖器(TLB)(其包含將虛擬地址映射至相關(guān)聯(lián)的物理存儲(chǔ)器位置的入口)來(lái)改進(jìn)地址翻譯的性能。當(dāng)DAT使用翻譯表翻譯虛擬地址時(shí),建立這些入口。然后,虛擬地址的隨后使用可利用快速TLB的入口,而不是緩慢依序翻譯表存取??赏ㄟ^(guò)包括LRU(最近最少使用)的多種替換演算法來(lái)管理TLB內(nèi)容。在處理器為多處理器系統(tǒng)的處理器的狀況下,每處理器具有保持諸如I/O、高速緩沖存儲(chǔ)器、TLB和存儲(chǔ)器的共用資源互鎖以達(dá)成一致性的責(zé)任。通常,在維持高速緩沖一致性中將利用“窺探”技術(shù)。在窺探環(huán)境中,可將每個(gè)高速緩沖存儲(chǔ)器線標(biāo)記為處于以下狀態(tài)中的任一個(gè)以便促進(jìn)共用:共用狀態(tài)、互斥狀態(tài)、改變的狀態(tài)、無(wú)效狀態(tài)等。I/O單元5054(圖17)為處理器提供用于附接至外圍器件(例如,包括磁帶、光盤、打印機(jī)、顯示器和網(wǎng)絡(luò))的構(gòu)件。I/O單元常常由軟件驅(qū)動(dòng)程序呈現(xiàn)至計(jì)算機(jī)程序。在大型計(jì)算機(jī)(諸如,來(lái)自的)中,通道適配器和開放系統(tǒng)適配器為大型計(jì)算機(jī)的I/O單元,這些I/O單元提供操作系統(tǒng)與外圍器件之間的通信。另外,其他類型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為實(shí)例,環(huán)境可包括仿真器(例如,軟件或其他仿真機(jī)制),在該仿真器中仿真特定架構(gòu)(包括(例如)指令執(zhí)行、構(gòu)建的功能(諸如,地址翻譯)和構(gòu)建的寄存器)或其子集(例如,在具有處理器和存儲(chǔ)器的本地計(jì)算機(jī)系統(tǒng)上)。在這種環(huán)境中,仿真器的一個(gè)或多個(gè)仿真功能可實(shí)施本發(fā)明的一個(gè)或多個(gè)方面,即使執(zhí)行該仿真器的計(jì)算機(jī)可具有不同于正仿真能力的架構(gòu)也如此。作為一個(gè)實(shí)例,在仿真模式下,解碼特定指令或正仿真操作,且構(gòu)建適當(dāng)仿真功能以實(shí)施單獨(dú)指令或操作。在仿真環(huán)境中,主機(jī)計(jì)算機(jī)包括(例如):存儲(chǔ)器,其存儲(chǔ)指令和數(shù)據(jù);指令取得單元,其自存儲(chǔ)器取得指令且可選地提供所取得的指令的本地緩沖;指令解碼單元,其接收所取得的指令且確定已取得的指令的類型;和指令執(zhí)行單元,其執(zhí)行這些指令。執(zhí)行可包括:將數(shù)據(jù)自存儲(chǔ)器載入至寄存器中;將數(shù)據(jù)自寄存器存儲(chǔ)回至存儲(chǔ)器;或執(zhí)行某類型的算術(shù)或邏輯運(yùn)算(如由解碼單元確定)。在一個(gè)實(shí)例中,以軟件來(lái)實(shí)施每個(gè)單元。舉例而言,將正由這些單元執(zhí)行的操作實(shí)施為仿真器軟件內(nèi)的一個(gè)或多個(gè)子例程。更具體地,在大型計(jì)算機(jī)中,構(gòu)建的機(jī)器指令常常借助于編譯應(yīng)用程序而由程序員(現(xiàn)今通常為“C”程序員)使用。存儲(chǔ)于存儲(chǔ)介質(zhì)中的這些指令可本地地在z/Architecture服務(wù)器中或者在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。可在現(xiàn)有和未來(lái)大型計(jì)算機(jī)服務(wù)器中和在的其他機(jī)器(例如,PowerSystems服務(wù)器和System服務(wù)器)上仿真這些指令??捎谠谑褂糜葾MDTM和其他制造的硬件的廣泛多種機(jī)器上執(zhí)行Linux的機(jī)器中執(zhí)行這些指令。除了在z/Architecture下在該硬件上執(zhí)行外,也可使用Linux,以及使用由Hercules、UMX或FSI(FundamentalSoftware,Inc)進(jìn)行的仿真機(jī)器,其中執(zhí)行大體上處于仿真模式下。在仿真模式下,由本地處理器執(zhí)行仿真軟件以仿真仿真處理器的架構(gòu)。本地處理器通常執(zhí)行包含固件或本地操作系統(tǒng)的仿真軟件以執(zhí)行仿真處理器的仿真。仿真軟件負(fù)責(zé)取得和執(zhí)行仿真處理器架構(gòu)的指令。仿真軟件維持仿真程序計(jì)數(shù)器以追蹤指令邊界。仿真軟件一次可取得一個(gè)或多個(gè)仿真機(jī)器指令,且將該一個(gè)或多個(gè)仿真機(jī)器指令轉(zhuǎn)換至對(duì)應(yīng)的本地機(jī)器指令群組,以用于由本地處理器執(zhí)行??蓪?duì)這些經(jīng)轉(zhuǎn)換的指令進(jìn)行高速緩沖,使得可實(shí)現(xiàn)較快速轉(zhuǎn)換。盡管如此,仿真軟件仍將維持仿真處理器架構(gòu)的架構(gòu)規(guī)則以便確保操作系統(tǒng)和針對(duì)仿真處理器編寫的應(yīng)用程序正確地操作。此外,仿真軟件將提供通過(guò)仿真處理器架構(gòu)識(shí)別的資源(包括(但不限于)控制寄存器、通用寄存器、浮點(diǎn)寄存器、包括(例如)段表和頁(yè)表的動(dòng)態(tài)地址翻譯功能、中斷機(jī)制、上下文切換機(jī)制、當(dāng)日時(shí)間(TOD)時(shí)鐘和至I/O子系統(tǒng)的構(gòu)建的接口),使得操作系統(tǒng)或經(jīng)設(shè)計(jì)以在仿真處理器上執(zhí)行的應(yīng)用程序可在具有仿真軟件的本地處理器上執(zhí)行。解碼正進(jìn)行仿真特定指令,且調(diào)用子例程以執(zhí)行個(gè)別指令的功能。仿真仿真處理器的功能的仿真軟件功能(例如)按以下來(lái)實(shí)施:“C”子例程或驅(qū)動(dòng)程序,或在理解優(yōu)選實(shí)施例的描述之后將在本領(lǐng)域的技術(shù)人員的技術(shù)內(nèi)的提供用于特定硬件的驅(qū)動(dòng)程序的某其他方法。包括(但不限于)以下的各種軟件和硬件仿真專利說(shuō)明達(dá)成針對(duì)不同機(jī)器構(gòu)建的指令格式用于可用于本領(lǐng)域技術(shù)人員的目標(biāo)機(jī)器的仿真的多種已知方式:Beausoleil等人的題為“MultiprocessorforHardwareEmulation”的美國(guó)專利證書第5,551,013號(hào);和Scalzi等人的題為“PreprocessingofStoredTargetRoutinesforEmulatingIncompatibleInstructionsonaTargetProcessor”的美國(guó)專利證書第6,009,261號(hào);和Davidian等人的題為“DecodingGuestInstructiontoDirectlyAccessEmulationRoutinesthatEmulatetheGuestInstructions”的美國(guó)專利證書第5,574,873號(hào);和Gorishek等人的題為“SymmetricalMultiprocessingBusandChipsetUsedforCoprocessorSupportAllowingNon-NativeCodetoRuninaSystem”的美國(guó)專利證書第6,308,255號(hào);和Lethin等人的題為“DynamicOptimizingObjectCodeTranslatorforArchitectureEmulationandDynamicOptimizingObjectCodeTranslationMethod”的美國(guó)專利證書第6,463,582號(hào);和EricTraut的題為“MethodforEmulatingGuestInstructionsonaHostComputerThroughDynamicRecompilationofHostInstructions”的美國(guó)專利證書第5,790,825號(hào)(前述專利證書中的每一個(gè)在此以其全文引用的方式并入本文中);和許多其他。在圖19中,提供仿真主機(jī)計(jì)算機(jī)系統(tǒng)5092的實(shí)例,其仿真主機(jī)架構(gòu)的主機(jī)計(jì)算機(jī)系統(tǒng)5000'。在仿真主機(jī)計(jì)算機(jī)系統(tǒng)5092中,主機(jī)處理器(CPU)5091為仿真主機(jī)處理器(或虛擬主機(jī)處理器),且包含仿真處理器5093,其具有不同于主機(jī)計(jì)算機(jī)5000'的處理器5091的本地指令集架構(gòu)的本地指令集架構(gòu)。仿真主機(jī)計(jì)算機(jī)系統(tǒng)5092具有仿真處理器5093可存取的存儲(chǔ)器5094。在實(shí)例實(shí)施例中,將存儲(chǔ)器5094分割成主機(jī)計(jì)算機(jī)存儲(chǔ)器5096部分和仿真例程5097部分。主機(jī)計(jì)算機(jī)存儲(chǔ)器5096可用于根據(jù)主機(jī)計(jì)算機(jī)架構(gòu)的仿真主機(jī)計(jì)算機(jī)5092的程序。仿真處理器5093執(zhí)行不同于仿真處理器5091的本地指令的架構(gòu)的構(gòu)建的指令集的本地指令,這些本地指令自仿真例程存儲(chǔ)器5097獲得,且可通過(guò)使用在序列和存取/解碼例程中獲得的一個(gè)或多個(gè)指令自主機(jī)計(jì)算機(jī)存儲(chǔ)器5096中的程序存取主機(jī)指令以用于執(zhí)行,序列和存取/解碼例程可解碼(多個(gè))所存取的主機(jī)指令以確定用于仿真所存取的主機(jī)指令的功能的本地指令執(zhí)行例程。舉例而言,針對(duì)主機(jī)計(jì)算機(jī)系統(tǒng)5000'的架構(gòu)定義的其他工具可通過(guò)構(gòu)建的工具例程來(lái)仿真,包括諸如通用寄存器、控制寄存器、動(dòng)態(tài)地址翻譯和I/O子系統(tǒng)支持和處理器高速緩沖存儲(chǔ)器的工具。仿真例程也可利用可用于仿真處理器5093中的功能(諸如,通用寄存器和虛擬地址的動(dòng)態(tài)翻譯)以改進(jìn)仿真例程的性能。也可提供特殊硬件和卸載引擎以輔助處理器5093仿真主機(jī)計(jì)算機(jī)5000'的功能。本文中所使用的術(shù)語(yǔ)僅用于描述特定實(shí)施例的目的,且并不意欲為本發(fā)明的限制。如本文中所使用,除非上下文另有清晰指示,否則單數(shù)形式“一”、“一個(gè)”和“該”意欲也包括復(fù)數(shù)形式。應(yīng)進(jìn)一步理解,當(dāng)術(shù)語(yǔ)“包含”和/或“包括”用于此說(shuō)明書中時(shí),其指定所敘述特征、整數(shù)、步驟、操作、元件和/或組件的存在,但并不排除一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或其群組的存在或添加。以下權(quán)利要求書中的所有構(gòu)件或步驟加功能元件的對(duì)應(yīng)結(jié)構(gòu)、材料、動(dòng)作和等效物(若有的話)意欲包括用于結(jié)合如特別主張的其他所主張?jiān)?zhí)行功能的任何結(jié)構(gòu)、材料或動(dòng)作。已出于說(shuō)明和描述的目的呈現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的描述,但該描述并不意欲為詳盡的或限于所公開的形式下的本發(fā)明。在不脫離本發(fā)明的范疇和精神的情況下,許多修改和變化對(duì)于本領(lǐng)域技術(shù)人員將為顯而易見。選擇并描述了實(shí)施例以便最佳地解釋本發(fā)明的原理和實(shí)踐應(yīng)用,且使其他本領(lǐng)域技術(shù)人員能夠針對(duì)具有如適合于所預(yù)期的特定用途的各種修改的各種實(shí)施例來(lái)理解本發(fā)明。第23章向量串指令向量串工具指令除非另有指定,否則所有操作數(shù)為向量寄存器操作數(shù)。匯編器語(yǔ)法中的“V”指明向量操作數(shù)。向量尋找任何相等自左至右進(jìn)行,比較第二操作數(shù)的每個(gè)無(wú)符號(hào)二進(jìn)制整數(shù)元素與第三操作數(shù)的每個(gè)無(wú)符號(hào)二進(jìn)制整數(shù)元素的相等性,且若在M5字段中設(shè)定了零搜索標(biāo)志,則視情況與零比較。若M5字段中的結(jié)果類型(RT)標(biāo)志為零,則對(duì)于匹配第三操作數(shù)中的任一元素或視情況匹配零的第二操作數(shù)中的每個(gè)元素,將第一操作數(shù)中對(duì)應(yīng)的元素的位位置設(shè)定為一,否則,將其設(shè)定為零。若M5字段中的結(jié)果類型(RT)標(biāo)志為一,則將匹配第三操作數(shù)中的元素或零的第二操作數(shù)中的最左側(cè)元素的字節(jié)索引存儲(chǔ)于第一操作數(shù)的字節(jié)七中。每個(gè)指令具有擴(kuò)展的記憶碼區(qū)段,其描述推薦的擴(kuò)展的記憶碼及其對(duì)應(yīng)的機(jī)器組譯器語(yǔ)法。程序設(shè)計(jì)注釋:對(duì)于視情況設(shè)定條件碼的所有指令,若設(shè)定條件碼,則性能可能降級(jí)。若M5字段中的結(jié)果類型(RT)標(biāo)志為一且未發(fā)現(xiàn)字節(jié)相等,或?yàn)榱?若設(shè)定了零搜索標(biāo)志),則將與向量中的字節(jié)的數(shù)目相等的索引存儲(chǔ)于第一操作數(shù)的字節(jié)七中。M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作數(shù)中的元素的大小。若指定保留值,則看作為指定例外。0-字節(jié)1-半字2-字3至15-保留M5字段具有以下格式:如下定義M5字段的位:·結(jié)果類型(RT):若為零,則每個(gè)所得元素為關(guān)于該元素的所有范圍比較的掩碼。若為一,則將字節(jié)索引存儲(chǔ)至第一操作數(shù)的字節(jié)七中,且將零存儲(chǔ)于所有其他元素中?!ち闼阉?ZS):若為一,則也將第二操作數(shù)的每個(gè)元素與零比較。·條件碼設(shè)定(CC):若為零,則不設(shè)定條件碼且條件碼保持不變。若為一,則如以下段中所指定來(lái)設(shè)定條件碼。特殊條件若出現(xiàn)以下中的任一個(gè),則辨識(shí)指定例外且不采取其他行動(dòng):1.M4字段含有自3至15的值。2.M5字段的位0不是零。所得條件碼:若CC標(biāo)志為零,則碼保持不變。若CC標(biāo)志為一,則如下來(lái)設(shè)定碼:0若設(shè)定了ZS-位,則在第二操作數(shù)中比零低的索引元素中不存在匹配。1第二操作數(shù)的一些元素匹配第三操作數(shù)中的至少一個(gè)元素。2第二操作數(shù)的所有元素匹配第三操作數(shù)中的至少一個(gè)元素。3第二操作數(shù)中沒(méi)有元素匹配第三操作數(shù)中的任何元素。程序例外:1具有DXCFE的數(shù)據(jù),向量寄存器·在未安裝向量擴(kuò)展工具的情況下的操作·指定(保留的ES值)·事務(wù)約束(TransactionConstraint)擴(kuò)展的記憶碼:向量尋找元素相等自左至右進(jìn)行,將第二操作數(shù)的無(wú)符號(hào)二進(jìn)制整數(shù)元素與第三操作數(shù)的對(duì)應(yīng)的無(wú)符號(hào)二進(jìn)制整數(shù)元素比較。若兩個(gè)元素相等,則將最左側(cè)相等元素的第一字節(jié)的字節(jié)索引放置于第一操作數(shù)的字節(jié)七中。將零存儲(chǔ)于第一操作數(shù)的剩余字節(jié)中。若沒(méi)有發(fā)現(xiàn)字節(jié)相等,或若沒(méi)有發(fā)現(xiàn)字節(jié)為零(若設(shè)定了零比較),則將與向量中的字節(jié)的數(shù)目相等的索引存儲(chǔ)于第一操作數(shù)的字節(jié)七中。將零存儲(chǔ)于剩余字節(jié)中。若在M5字段中設(shè)定了零搜索(ZS)位,則也比較第二操作數(shù)中的每個(gè)元素與零的相等性。若在發(fā)現(xiàn)第二操作數(shù)和第三操作數(shù)的任何其他元素相等之前在第二操作數(shù)中尋找到零元素,則將發(fā)現(xiàn)為零的元素的第一字節(jié)的字節(jié)索引存儲(chǔ)于第一操作數(shù)的字節(jié)七中,且將零存儲(chǔ)于所有其他字節(jié)位置中。若條件碼設(shè)定(CC)標(biāo)志為一,則將條件碼設(shè)定為零。M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作數(shù)中的元素的大小。若指定保留值,則看作為指定例外。0-字節(jié)1-半字2-字3至15-保留M5字段具有以下格式:如下定義M5字段的位:·保留:保留位0至1且位0至1必須為零。否則,看作為指定例外?!ち闼阉?ZS):若為一,則也將第二操作數(shù)的每個(gè)元素與零比較?!l件碼設(shè)定(CC):若為零,則條件碼保持不變。若為一,則如在以下段中所指定來(lái)設(shè)定條件碼。特殊條件若出現(xiàn)以下中的任一個(gè),則辨識(shí)指定例外且不采取其他行動(dòng):1.M4字段含有自3至15的值。2.M5字段的位0至1不是零。所得條件碼:若將M5字段的位3設(shè)定為一,則如下設(shè)定碼:0若設(shè)定了零比較位,則比較在具有比任何相等比較小的索引的元素中檢測(cè)到第二操作數(shù)中的零元素。1比較在一些元素中檢測(cè)到第二操作數(shù)與第三操作數(shù)之間的匹配。若設(shè)定了零比較位,則此匹配出現(xiàn)于具有小于或等于零比較元素的索引的元素中。2--3沒(méi)有元素比較起來(lái)相等。若M5字段的位3為零,則碼保持不變。程序例外:·具有DXCFE的數(shù)據(jù),向量寄存器·在未安裝向量擴(kuò)展工具的情況下的操作·指定(保留的ES值)·事務(wù)約束擴(kuò)展的記憶碼:程序設(shè)計(jì)注釋:1.對(duì)于任一元素大小,始終將字節(jié)索引存儲(chǔ)至第一操作數(shù)中。舉例而言,若將元素大小設(shè)定為半字且比較出第2個(gè)索引的半字相等,則將存儲(chǔ)字節(jié)索引4。2.第三操作數(shù)不應(yīng)含有具有零值的元素。若第三操作數(shù)確實(shí)含有零且在任何其他相等比較之前與第二操作數(shù)中的零元素匹配,則設(shè)定條件碼,而不管零比較位設(shè)定。向量尋找元素不相等自左至右進(jìn)行,將第二操作數(shù)的無(wú)符號(hào)二進(jìn)制整數(shù)元素與第三操作數(shù)的對(duì)應(yīng)的無(wú)符號(hào)二進(jìn)制整數(shù)元素比較。若兩個(gè)元素不相等,則將最左側(cè)不相等元素的字節(jié)索引放置于第一操作數(shù)的字節(jié)七中,且將零存儲(chǔ)至所有其他字節(jié)。若將M5字段中的條件碼設(shè)定(CC)位設(shè)定為一,則設(shè)定條件碼以指示哪一操作數(shù)較大。若所有元素相等,則將等于向量大小的字節(jié)索引放置于第一操作數(shù)的字節(jié)七中,且將零放置于所有其他字節(jié)位置中。若CC位為一,則設(shè)定條件碼三。若在M5字段中設(shè)定了零搜索(ZS)位,則也比較第二操作數(shù)中的每個(gè)元素與零的相等性。若在發(fā)現(xiàn)第二操作數(shù)的任一其他元素不相等之前在第二操作數(shù)中尋找到零元素,則將發(fā)現(xiàn)為零的元素的第一字節(jié)的字節(jié)索引存儲(chǔ)于第一操作數(shù)的字節(jié)七中。將零存儲(chǔ)于所有其他字節(jié)中,且設(shè)定條件碼0。M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作數(shù)中的元素的大小。若指定保留值,則看作為指定例外。0-字節(jié)1-半字2-字3至15-保留M5字段具有以下格式:如下定義M5字段的位:·零搜索(ZS):若為一,則也將第二操作數(shù)的每個(gè)元素與零比較。·條件碼設(shè)定(CC):若為零,則不設(shè)定條件碼且條件碼保持不變。若為一,則如以下段中所指定來(lái)設(shè)定條件碼。特殊條件若出現(xiàn)以下中的任一個(gè),則看作指定例外且不采取其他行動(dòng):1.M4字段含有自3至15的值。2.M5字段的位0至1不是零。所得條件碼:若將M5字段的位3設(shè)定為一,則如下設(shè)定碼:0若設(shè)定了零比較位,則比較在比任何不相等比較低的索引元素中檢測(cè)到兩個(gè)操作數(shù)中的零元素1檢測(cè)到元素失配,且VR2中的元素小于VR3中的元素2檢測(cè)到元素失配,且VR2中的元素大于VR3中的元素3所有元素比較起來(lái)相等,且若設(shè)定了零比較位,則在第二操作數(shù)中沒(méi)有尋找到零元素。若M5字段的位3為零,則碼保持不變。程序例外:·具有DXCFE的數(shù)據(jù),向量寄存器·在沒(méi)有安裝向量擴(kuò)展工具的情況下的操作·指定(保留的ES值)·事務(wù)約束擴(kuò)展的記憶碼:向量串范圍比較自左至右進(jìn)行,將第二操作數(shù)中的無(wú)符號(hào)二進(jìn)制整數(shù)元素與由第三操作數(shù)和第四操作數(shù)中的偶數(shù)-奇數(shù)對(duì)元素定義的值范圍比較。結(jié)合來(lái)自第四操作數(shù)的控制值定義要執(zhí)行的比較的范圍。若元素匹配由第三操作數(shù)和第四操作數(shù)指定的范圍中的任一個(gè),則將其視為匹配。若M6字段中的結(jié)果類型(RT)標(biāo)志為零,則若第一操作數(shù)中對(duì)應(yīng)于第二操作數(shù)中正進(jìn)行比較的元素的元素匹配這些范圍中的任一個(gè),則將該元素的位位置設(shè)定為一,否則,將其設(shè)定為零。若將M6字段中的結(jié)果類型(RT)標(biāo)志設(shè)定為一,則第二操作數(shù)中匹配由第三操作數(shù)和第四操作數(shù)指定的范圍中的任一個(gè)或零比較(若將ZS標(biāo)志設(shè)定為一)的第一元素的字節(jié)索引放置于第一操作數(shù)的字節(jié)七中,且將零存儲(chǔ)于剩余字節(jié)中。若沒(méi)有元素匹配,則將等于向量中的字節(jié)的數(shù)目的索引放置于第一操作數(shù)的字節(jié)七中,且將零存儲(chǔ)于剩余字節(jié)中。M6字段中的零搜索(ZS)標(biāo)志,若設(shè)定為一,則將第二操作數(shù)元素與零的比較添加至由第三操作數(shù)和第四操作數(shù)提供的范圍。若為在比任何其他真比較低的索引元素中的零比較,則將條件碼設(shè)定為零。這些操作數(shù)含有由M5字段中的元素大小控制指定的大小的元素。第四操作數(shù)元素具有以下格式:若ES等于0:若ES等于1:若ES等于2:如下定義第四操作數(shù)元素中的位:·相等(EQ):當(dāng)為一時(shí),進(jìn)行相等性比較?!ご笥?GT):當(dāng)為一時(shí),執(zhí)行大于比較?!ば∮?LT):當(dāng)為一時(shí),執(zhí)行小于比較?!けA羲衅渌磺宜衅渌粦?yīng)為零以確保未來(lái)相容性??梢匀魏谓M合使用這些控制位。若這些位都沒(méi)有經(jīng)設(shè)定,則比較將始終產(chǎn)生假結(jié)果。若所有這些位經(jīng)設(shè)定,則比較將始終產(chǎn)生真結(jié)果。M5字段指定元素大小控制(ES)。ES控制指定向量寄存器操作數(shù)中的元素的大小。若指定保留值,則看作為指定例外。0-字節(jié)1-半字2-字3至15-保留M6字段具有以下格式:如下定義M6字段的位:·反轉(zhuǎn)結(jié)果(IN):若為零,則繼續(xù)進(jìn)行與控制向量中的成對(duì)值的比較。若為一,則反轉(zhuǎn)在這些范圍中的這些成對(duì)的比較的結(jié)果?!そY(jié)果類型(RT):若為零,則每個(gè)所得元素為關(guān)于該元素的所有范圍比較的掩碼。若為一,則將索引存儲(chǔ)至第一操作數(shù)的字節(jié)七中。將零存儲(chǔ)于剩余字節(jié)中?!ち闼阉?ZS):若為一,則也將第二操作數(shù)的每個(gè)元素與零比較。·條件碼設(shè)定(CC):若為零,則不設(shè)定條件碼且條件碼保持不變。若為一,則如以下段中所指定來(lái)設(shè)定條件碼。特殊條件若出現(xiàn)以下中的任一個(gè),則看作指定例外且不采取其他行動(dòng):1.M4字段含有自3至15的值。所得條件碼:0若ZS=1且在比任何比較低的索引元素中發(fā)現(xiàn)零1發(fā)現(xiàn)比較2--3沒(méi)有發(fā)現(xiàn)比較程序例外:·具有DXCFE的數(shù)據(jù),向量寄存器·在沒(méi)有安裝向量擴(kuò)展工具的情況下的操作·指定(保留的ES值)·事務(wù)約束擴(kuò)展的記憶碼:ES=1,ZS=0VR1(a)RT=0的結(jié)果VR1(b)RT=1的結(jié)果將計(jì)數(shù)載入至塊邊界將含有可能自第二操作數(shù)位置載入而不跨越指定塊邊界的字節(jié)的數(shù)目的32-位無(wú)符號(hào)二進(jìn)制整數(shù)(覆蓋于十六處)放置于第一操作數(shù)中。將位移作為12-位無(wú)符號(hào)整數(shù)對(duì)待。第二操作數(shù)地址不用以尋址數(shù)據(jù)。M3字段指定用以用信號(hào)向CPU通知關(guān)于塊邊界大小以計(jì)算載入的可能字節(jié)的數(shù)目的碼。若指定保留值,則看作為指定例外。所得條件碼:0操作數(shù)一為十六1--2--3操作數(shù)一小于十六所得條件碼:程序例外:·在沒(méi)有安裝向量擴(kuò)展工具的情況下的操作·指定程序設(shè)計(jì)注釋:期望結(jié)合向量載入至塊邊界(VECTORLOADTOBLOCKBOUNDARY)使用將計(jì)數(shù)載入至塊邊界(LOADCOUNTTOBLOCKBOUNDARY)以確定載入的字節(jié)的數(shù)目。自VR元素的向量載入GR將具有由M4字段中的ES值指定的大小且通過(guò)第二操作數(shù)地址編索引的第三操作數(shù)的元素放置于第一操作數(shù)位置中。第三操作數(shù)為向量寄存器。第一操作數(shù)為通用寄存器。若通過(guò)第二操作數(shù)地址指定的索引大于具有指定元素大小的第三操作數(shù)中最高編號(hào)的元素,則第一操作數(shù)中的數(shù)據(jù)為不可預(yù)測(cè)。若向量寄存器元素小于雙字,則該元素在64-位通用寄存器中恰好對(duì)準(zhǔn),且零填充剩余位。第二操作數(shù)地址不用以尋址數(shù)據(jù);相反,該地址的最右側(cè)12個(gè)位用以指定元素在第二操作數(shù)內(nèi)的索引。M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作數(shù)中的元素的大小。若指定保留值,則看作為指定例外。0-字節(jié)1-半字2-字3-雙字4至15-保留不變。所得條件碼:碼不變。程序例外:·具有DXCFE的數(shù)據(jù),向量寄存器·在沒(méi)有安裝向量擴(kuò)展工具的情況下的操作·指定(保留的ES值)·事務(wù)約束擴(kuò)展的記憶碼:向量載入至塊邊界以零索引字節(jié)元素開始,以來(lái)自第二操作數(shù)的字節(jié)載入第一操作數(shù)。若遇到邊界條件,則第一操作數(shù)的其余部分為不可預(yù)測(cè)。沒(méi)有看作為關(guān)于未載入的字節(jié)的存取例外。將針對(duì)VLBB的位移作為12-位無(wú)符號(hào)整數(shù)對(duì)待。M3字段指定用以用信號(hào)向CPU通知關(guān)于用以載入至的塊邊界大小的碼。若指定保留值,則看作為指定例外。所得條件碼:碼保持不變。程序例外:·存取(取得,操作數(shù)2)·具有DXCFE的數(shù)據(jù),向量寄存器·在沒(méi)有安裝向量擴(kuò)展工具的情況下的操作·指定(保留的塊邊界碼)·事務(wù)約束程序設(shè)計(jì)注釋:1.在某些情況下,可經(jīng)過(guò)塊邊界載入數(shù)據(jù)。然而,若不存在關(guān)于該數(shù)據(jù)的存取例外,則將僅發(fā)生此情形。向量存儲(chǔ)將第一操作數(shù)中的128-位值存儲(chǔ)至通過(guò)第二操作數(shù)指定的存儲(chǔ)位置。將針對(duì)VST的位移作為12-位無(wú)符號(hào)整數(shù)對(duì)待。所得條件碼:碼保持不變。程序例外:·存取(存儲(chǔ),操作數(shù)2)·具有DXCFE的數(shù)據(jù),向量寄存器·在沒(méi)有安裝向量擴(kuò)展工具的情況下的操作·事務(wù)約束具有長(zhǎng)度的向量存儲(chǔ)自左至右進(jìn)行,將來(lái)自第一操作數(shù)的字節(jié)存儲(chǔ)于第二操作數(shù)位置處。指定第三操作數(shù)的通用寄存器含有32-位無(wú)符號(hào)整數(shù),該整數(shù)含有表示存儲(chǔ)的最高索引字節(jié)的值。若第三操作數(shù)含有大于或等于向量的最高字節(jié)索引的值,則存儲(chǔ)第一操作數(shù)的所有字節(jié)。僅看作為關(guān)于存儲(chǔ)的字節(jié)的存取例外。將針對(duì)具有長(zhǎng)度的向量存儲(chǔ)(VECTORSTOREWITHLENGTH)的位移作為12-位無(wú)符號(hào)整數(shù)對(duì)待。所得條件碼:條件碼保持不變。程序例外:·存取(存儲(chǔ),操作數(shù)2)·具有DXCFE的數(shù)據(jù),向量寄存器·在沒(méi)有安裝向量擴(kuò)展工具的情況下的操作·事務(wù)約束RXB描述所有向量指令具有在標(biāo)注為RXB的指令的位36至40中的字段。此字段含有用于所有向量寄存器指明的操作數(shù)的最高有效位。保留用于沒(méi)有通過(guò)指令指定的寄存器指明的位且應(yīng)將其設(shè)定為零;否則,程序在未來(lái)無(wú)法相容地操作。將最高有效位串接至四-位寄存器指明的左側(cè)以建立五-位向量寄存器指明。如下定義這些位:0.在指令的位8至11中用于向量寄存器指明的最高有效位。1.在指令的位12至15中用于向量寄存器指明的最高有效位。2.在指令的位16至19中用于向量寄存器指明的最高有效位。3.在指令的位32至35中用于向量寄存器指明的最高有效位。向量啟用控制若將控制寄存器零中的向量啟用控制(位46)和AFP寄存器控制(位45)二者設(shè)定為一,則可僅使用向量寄存器和指令。若安裝了向量工具且在沒(méi)有設(shè)定啟用位的情況下執(zhí)行向量指令,則看作為具有DXCFE十六進(jìn)制的數(shù)據(jù)例外。若沒(méi)有安裝向量工具,則看作為操作例外。