專利名稱:處理安全消息認(rèn)證控制指令的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)體系結(jié)構(gòu),尤其涉及擴(kuò)充IBM z/體系結(jié)構(gòu)并能被其他體系結(jié)構(gòu)仿真的新指令。
背景技術(shù):
在本發(fā)明之前,從20世紀(jì)60年代被稱為IBM系統(tǒng)360的機(jī)器開始,到目前為止,通過許多有高度才能的工程師們的工作,IBM已創(chuàng)建了一特殊的體系結(jié)構(gòu),因?yàn)樗哂袑?duì)于計(jì)算系統(tǒng)是基本的這樣一種性質(zhì),而被稱為“大型機(jī)”,其操作原理通過描述可在指令的該“大型機(jī)”實(shí)現(xiàn)上執(zhí)行的指令而規(guī)定該機(jī)器的體系結(jié)構(gòu),這些指令由IBM的發(fā)明家發(fā)明,并且由于它們對(duì)改進(jìn)由“大型機(jī)”所代表的計(jì)算機(jī)器的狀況做出重大的貢獻(xiàn),所以被采納為重大貢獻(xiàn)而被包括在多年所規(guī)定的IBM的操作原理中。《z/體系結(jié)構(gòu)操作原理》的第一版在2000年12月出版,并已作為SA22-7832-00,而成為標(biāo)準(zhǔn)的出版參考書。
我們確定,如此處所描述的,進(jìn)一步的新的指令將有助于本技術(shù)領(lǐng)域并能被包括進(jìn)z/體系結(jié)構(gòu)機(jī)器中,也能被較簡單機(jī)器中的其他體系結(jié)構(gòu)仿真。
發(fā)明內(nèi)容
本發(fā)明提供一種如權(quán)利要求1所要求的方法。
從下面結(jié)合附圖所作的詳細(xì)的描述中,對(duì)技術(shù)熟練的人來說,本發(fā)明的優(yōu)選實(shí)施例的特征將會(huì)是顯然的,在附圖中圖1是一個(gè)RRE指令格式的計(jì)算消息認(rèn)證碼(KMAC)指令的圖示;圖2是一個(gè)示出圖1中KMAC指令的功能碼的表;圖3是一個(gè)圖1中KMAC指令的通用寄存器分配的圖示;圖4示出用于按位異或的符號(hào);圖5示出用于DEA加密和解密的符號(hào);圖6示出KMAC-Query的參數(shù)塊的格式;圖7示出KMAC-DEA的參數(shù)塊的格式;圖8示出KMAC-DEA的操作;圖9示出KMAC-TDEA-128的參數(shù)塊的格式;圖10示出KMAC-TDEA-128的操作;圖11示出KMAC-TDEA-192的參數(shù)塊的格式;圖12示出KMAC-TDEA-192的操作;圖13是一個(gè)示出KMAC的執(zhí)行優(yōu)先級(jí)的表;圖14示出本發(fā)明的密碼協(xié)處理器;以及圖15示出包含根據(jù)優(yōu)選實(shí)施例的指令和數(shù)據(jù)的計(jì)算機(jī)存儲(chǔ)器、以及用于或者在采用這些體系結(jié)構(gòu)指令的計(jì)算機(jī)系統(tǒng)上或者在仿真本發(fā)明的體系結(jié)構(gòu)指令時(shí)讀取、解碼和執(zhí)行這些指令的機(jī)制的一般化優(yōu)選實(shí)施例。
具體實(shí)施例方式
將首先討論計(jì)算消息認(rèn)證碼(KMAC)指令,然后討論優(yōu)選的計(jì)算機(jī)系統(tǒng),或者可選地,討論仿真具有用于執(zhí)行該指令的不同體系結(jié)構(gòu)的計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)系統(tǒng)。
計(jì)算消息認(rèn)證碼(KMAC)圖1示出RRE指令格式的計(jì)算消息認(rèn)證碼(KMAC)指令。
執(zhí)行通用寄存器0中的功能碼指定的功能。忽略該指令的位16-23和R1字段。
通用寄存器0的位位置57-63包含功能碼。圖2示出已分配的功能碼。所有其它功能碼未被分配。通用寄存器0的位56必須為0;否則,認(rèn)可一規(guī)定異常(specification exception)。忽略通用寄存器0的所有其它位。
通用寄存器1包含存儲(chǔ)器中參數(shù)塊最左側(cè)字節(jié)的邏輯地址。在24位尋址模式中,通用寄存器1的位位置40-63的內(nèi)容構(gòu)成地址,忽略位位置0-39的內(nèi)容。在31位尋址模式中,通用寄存器1的位位置33-63的內(nèi)容構(gòu)成地址,忽略位位置0-32的內(nèi)容。
在64位尋址模式中,通用寄存器1的位位置0-63的內(nèi)容組成地址。
圖2示出計(jì)算消息認(rèn)證碼的功能碼。
所有其他的功能碼未被分配。查詢功能提供了表明其它功能的可用性的手段。忽略通用寄存器R2和R2+1的內(nèi)容。
對(duì)于所有其他的功能,按照功能碼所指定的,使用參數(shù)塊中的初始鏈值對(duì)第二操作數(shù)進(jìn)行處理,并用結(jié)果替換該鏈值。該操作也使用參數(shù)塊中的密鑰。該操作繼續(xù)進(jìn)行,直到到達(dá)第二操作數(shù)位置的末尾,或者處理完CPU確定的字節(jié)數(shù),不管哪一個(gè)首先發(fā)生。結(jié)果在條件碼中表明。R2字段指定一對(duì)寄-偶通用寄存器,并且必須指定一偶數(shù)寄存器;否則,認(rèn)可一規(guī)定異常。
第二操作數(shù)的最左側(cè)字節(jié)的位置由通用寄存器R2的內(nèi)容指定。第二操作數(shù)位置中的字節(jié)數(shù)在通用寄存器R2+1中指定。
作為操作的一部分,通用寄存器R2的地址隨著第二操作數(shù)中被處理的字節(jié)數(shù)遞增,而通用寄存器R2+1的長度隨著相同的數(shù)遞減。地址和長度的形成和更新取決于尋址模式。
在24位尋址模式中,通用寄存器R2的位位置40-63的內(nèi)容構(gòu)成第二操作數(shù)的地址,并被忽略;更新地址的40-63位替換通用寄存器R_的相應(yīng)位,忽略來自更新地址的位位置40的進(jìn)位,并且將通用寄存器R_的位位置32-39的內(nèi)容設(shè)為0。在31位尋址模式中,通用寄存器R_的位位置33-63的內(nèi)容構(gòu)成第二操作數(shù)的地址,而位位置0-32的內(nèi)容被忽略;更新地址的33-63位替換通用寄存器R_的相應(yīng)位,忽略來自更新地址的位位置33的進(jìn)位,并且將通用寄存器R_的位位置32的內(nèi)容設(shè)為0。在64位尋址模式中,通用寄存器R_的位位置0-63的內(nèi)容構(gòu)成第二操作數(shù)的地址;更新地址的0-63位替換通用寄存器R_的內(nèi)容,并忽略來自更新地址的位位置0的進(jìn)位。
在24位和31位兩種尋址模式中,通用寄存器R2+1的位位置32-63的內(nèi)容構(gòu)成一個(gè)32位無符號(hào)二進(jìn)制整數(shù),該整數(shù)指定第二操作數(shù)中的字節(jié)數(shù);且更新值替換通用寄存器R2+1的位位置32-63的內(nèi)容。在64位尋址模式中,通用寄存器R2+1的位位置0-63的內(nèi)容構(gòu)成一個(gè)64位無符號(hào)二進(jìn)制整數(shù),該二進(jìn)制整數(shù)指定第二操作數(shù)中的字節(jié)數(shù);且更新值替換通用寄存器R2+1的內(nèi)容。
在24位或31位尋址模式中,通用寄存器R2和R2+1的位位置0-31的內(nèi)容一直保持不變。
圖3示出剛才所描述的通用寄存器的內(nèi)容。
在訪問寄存器模式中,訪問寄存器1和R2分別指定包含參數(shù)塊和第二操作數(shù)的地址空間。
就如同處理從第二操作數(shù)的左端開始逐塊地一直進(jìn)行到右邊那樣獲得結(jié)果。當(dāng)處理完第二操作數(shù)的所有源字節(jié)時(shí)(稱為正常完成),或當(dāng)處理完CPU確定的少于第二操作數(shù)長度的塊數(shù)時(shí)(稱為部分完成),該操作結(jié)束。該CPU確定的塊數(shù)取決于型號(hào),且可能在每次執(zhí)行指令時(shí)是一個(gè)不同的數(shù)。該CPU確定的塊數(shù)通常為非0。在某些不尋常的情況下,該數(shù)有可能為0,且可將條件碼3設(shè)置為無進(jìn)展。但是,CPU防止這種無進(jìn)展情況的無止境的重復(fù)發(fā)生。
當(dāng)鏈值字段與第二操作數(shù)的任何部分重疊時(shí),鏈值字段中的結(jié)果不可預(yù)知。
正常完成發(fā)生在通用寄存器R+1中所指定的第二操作數(shù)中的字節(jié)數(shù)被處理完時(shí)。
當(dāng)由于正常完成操作結(jié)束時(shí),設(shè)置條件碼0并且R2+1中的結(jié)果值為0。在由于部分完成操作結(jié)束時(shí),設(shè)置條件碼3并且R2+1中的結(jié)果值為非0。
在第二操作數(shù)長度初始為0時(shí),不訪問第二操作數(shù)和參數(shù)塊,不改變通用寄存器R2和R2+1,且設(shè)置條件碼0。
如根據(jù)其他CPU和通道程序所觀察的,對(duì)參數(shù)塊和存儲(chǔ)操作數(shù)的引用可以是多路訪問引用,對(duì)這些存儲(chǔ)器位置的訪問不必是塊并發(fā)的,并且這些訪問或引用的次序是未定義的。
對(duì)于第二操作數(shù)的比在指令的單個(gè)執(zhí)行中處理的更大的部分,可報(bào)告訪問異常;但是,對(duì)于超出第二操作數(shù)長度的位置不認(rèn)可訪問異常,對(duì)于超出正在處理的當(dāng)前位置4K字節(jié)以上的位置也不認(rèn)可訪問異常。
功能描述中所使用的符號(hào)圖4和圖5的符號(hào)被用在隨后的計(jì)算消息認(rèn)證碼功能的描述中。對(duì)于數(shù)據(jù)加密算法(DEA)功能,DEA密鑰的每個(gè)字節(jié)中的DEA密鑰奇偶位被忽略,并且不管該密鑰的DEA密鑰奇偶性,操作正常繼續(xù)進(jìn)行。
該數(shù)據(jù)加密算法的進(jìn)一步的描述可參見Data Encryption Algorithm(數(shù)據(jù)加密算法),ANSI-X3.92.1981,American National Standard forInformation System(美國信息系統(tǒng)國家標(biāo)準(zhǔn))。
KMAC-Query(功能碼0)圖3中示出指令所使用的操作數(shù)和地址的位置。用于KMAC-Query功能的參數(shù)塊其格式在圖6中示出。
128位狀態(tài)字存儲(chǔ)在參數(shù)塊中,該字段的位0-127分別相應(yīng)于KMAC指令的功能碼0-127。當(dāng)一個(gè)位為1時(shí),將安裝相應(yīng)的功能;否則,不安裝該功能。
在KMAC-Query功能的執(zhí)行完成時(shí),對(duì)條件碼0進(jìn)行設(shè)置;條件碼3不適用于該功能。
KMAC-DEA(功能碼1)
圖3中示出該指令所使用的操作數(shù)和地址的位置。
用于KMAC-DEA功能的參數(shù)塊其格式在圖7中示出。使用DEA算法及參數(shù)塊中一個(gè)64位密鑰和一個(gè)64位鏈值來計(jì)算操作數(shù)2中的8字節(jié)消息塊(M1,M2,…,Mn)的消息認(rèn)證碼。
消息認(rèn)證碼,也稱輸出鏈值(OCV),被存儲(chǔ)在參數(shù)塊的鏈值字段中。KMAC-DEA操作在圖8中示出。
KMAC-TDEA-128(功能碼2)圖3中示出指令所使用的操作數(shù)和地址的位置。
用于KMAC-TDEA-128功能的參數(shù)塊其格式在圖9中示出。
使用TDEA算法及參數(shù)塊中兩個(gè)64位密鑰和一個(gè)64位鏈值來計(jì)算操作數(shù)2中8字節(jié)消息塊(M1,M2,…,Mn)的消息認(rèn)證碼。
消息認(rèn)證碼,也稱輸出鏈值(OCV),被存儲(chǔ)在參數(shù)塊的鏈值字段中。KMAC-TDEA-128操作在圖10中示出。
KMAC-TDEA-192(功能碼3)圖3中示出指令所使用的操作數(shù)和地址的位置。
用于KMAC-TDEA-192功能的參數(shù)塊其格式在圖11中示出。
使用TDEA算法及參數(shù)塊中三個(gè)64位密鑰和一個(gè)64位鏈值來計(jì)算操作數(shù)2中的8字節(jié)消息塊(M1,M2,…,Mn)的消息認(rèn)證碼。
消息認(rèn)證碼,也稱輸出鏈值(OCV),被存儲(chǔ)在參數(shù)塊的鏈值字段中。KMAC-TDEA-192操作在圖12中示出。
KMAC的特殊條件如果發(fā)生下列任何情況,則認(rèn)可規(guī)定異常,且不采取任何其它動(dòng)作1.通用寄存器0的位56為非0。
2.通用寄存器0的位57-63指定一個(gè)未分配的或未安裝的功能碼。
3.R字段指定一個(gè)奇數(shù)寄存器或通用寄存器0。
4.第二操作數(shù)長度不是指定功能的數(shù)據(jù)塊大小的倍數(shù)(參見第7-92頁圖7-54以確定用于計(jì)算消息認(rèn)證碼功能的數(shù)據(jù)塊大小)。
結(jié)果條件代碼
0正常完成1—2—3部分完成程序異?!ぴL問(讀取,操作數(shù)2,密鑰;讀取和存儲(chǔ),鏈值)·操作(若沒有安裝消息安全幫助)·規(guī)定編程注釋1.通用寄存器0的位56保留用于將來的擴(kuò)展,且應(yīng)當(dāng)設(shè)為0。
2.當(dāng)設(shè)置條件碼3時(shí),通用寄存器R2和R2+1中相應(yīng)的第二操作數(shù)地址與長度以及參數(shù)塊中的鏈值通常被更新,以便程序可以簡單分支回到該指令以繼續(xù)操作。對(duì)于不尋常的情形,CPU防止無進(jìn)展情況下無止境的重復(fù)發(fā)生。這樣,每當(dāng)設(shè)置了條件碼3,程序都能安全分支回到該指令,而不會(huì)進(jìn)入無止境循環(huán)。
3.如果第二操作數(shù)的長度初始為非0,且設(shè)置條件碼0,則以與對(duì)于條件碼3同樣的方式更新寄存器;此種情況下的鏈值是這樣的,即可以對(duì)附加的操作數(shù)進(jìn)行處理就像它們是同一鏈中的部分。
4.在處理消息的第一部分之前,程序必須為鏈值字段設(shè)置初始值。為遵守ANSI X9.9或X9.19,初始鏈值應(yīng)被設(shè)為全部為二進(jìn)制0。
密碼協(xié)處理器優(yōu)選的實(shí)施例提供了密碼協(xié)處理器,該密碼協(xié)處理器可與此處所描述的指令一起使用,并執(zhí)行密碼消息,以及協(xié)助各種鏈?zhǔn)较⑷蝿?wù),所述鏈?zhǔn)较⑷蝿?wù)可與適當(dāng)指令一起用于鏈?zhǔn)胶兔艽a用途。
圖14示出該密碼協(xié)處理器,它直接附接于數(shù)據(jù)通路上,該數(shù)據(jù)通路為具有多個(gè)執(zhí)行流水線的通用微處理器上的所有內(nèi)部執(zhí)行單元公用。微處理器內(nèi)部總線(1)對(duì)于所有其他附接于密碼控制單元(2)的執(zhí)行單元公用,且該控制單元監(jiān)視總線上它應(yīng)執(zhí)行的處理器指令。
密碼控制單元提供密碼協(xié)處理器,該密碼協(xié)處理器直接附接于數(shù)據(jù)通路,該數(shù)據(jù)通路對(duì)通用微處理器上的中央處理單元的所有內(nèi)部執(zhí)行單元公用,該通用微處理器為該中央處理單元提供了可用的硬件(在具有多個(gè)執(zhí)行流水線的優(yōu)選實(shí)施例中的E0…En,或它們的組合)。當(dāng)在命令寄存器(3)中遇到密碼指令時(shí),控制單元(2)從可用的硬件中調(diào)用適當(dāng)?shù)乃惴?。操作?shù)數(shù)據(jù)經(jīng)過輸入FIFO寄存器(4)在同一內(nèi)部微處理器總線上進(jìn)行傳遞。當(dāng)操作完成時(shí),在狀態(tài)寄存器(6)中設(shè)置一個(gè)標(biāo)志,且結(jié)果可從輸出FIFO寄存器(5)中讀出。
本發(fā)明的示出的優(yōu)選實(shí)施例被設(shè)計(jì)成可擴(kuò)展的,以便包括根據(jù)系統(tǒng)的性能目標(biāo)特定實(shí)現(xiàn)所需要的那樣多的硬件引擎。到輸入和輸出寄存器(7)的數(shù)據(jù)通路在所有的引擎中是公用的。
本發(fā)明的密碼功能的優(yōu)選實(shí)施例在CPU上的執(zhí)行單元硬件中實(shí)現(xiàn),并且此實(shí)現(xiàn)能夠降低調(diào)用和執(zhí)行加密操作的等待時(shí)間并提高效率。
這種減少的等待時(shí)間大幅度提高了頻繁進(jìn)行很多加密操作的系統(tǒng)中通用處理器的性能,尤其是當(dāng)僅涉及小量數(shù)據(jù)時(shí)。這允許這樣一實(shí)現(xiàn),該實(shí)現(xiàn)能顯著加速在進(jìn)行安全在線交易中涉及的過程。保證在線交易安全的最常用的方法包括一組3個(gè)算法。第一個(gè)算法在一會(huì)話中僅使用一次,且可在硬件中或軟件中被實(shí)現(xiàn),而其它操作在該會(huì)話的每個(gè)交易中被調(diào)用,并且使用本發(fā)明消除了調(diào)用外部硬件的等待時(shí)間的成本以及在軟件中執(zhí)行算法的時(shí)間上的成本。
在圖15中,已概念性地示出如何在具有上述可以有效使用的微處理器的大型計(jì)算機(jī)上實(shí)現(xiàn)已在一優(yōu)選的實(shí)施例中實(shí)現(xiàn)的功能,這一點(diǎn)我們已在IBM內(nèi)在長位移工具計(jì)算機(jī)體系結(jié)構(gòu)指令格式的一商業(yè)實(shí)現(xiàn)中實(shí)驗(yàn)地證明了,這些指令由程序員,通常是現(xiàn)在的“C”程序員使用。這些存儲(chǔ)在存儲(chǔ)介質(zhì)中的指令格式可以在一臺(tái)Z/體系結(jié)構(gòu)IBM服務(wù)器中本機(jī)執(zhí)行,或者可選地在執(zhí)行其他體系結(jié)構(gòu)的機(jī)器中執(zhí)行。它們可以在現(xiàn)存及將來的IBM大型機(jī)服務(wù)器中和IBM的其它機(jī)器(例如p系列服務(wù)器和x系列服務(wù)器)上被仿真。它們可以在運(yùn)行Linux的機(jī)器上執(zhí)行,運(yùn)行Linux的多種機(jī)器使用由IBM、Intel、AMD、Sun Microsystems和其它廠商制造的硬件。除在z/體系結(jié)構(gòu)下的硬件上執(zhí)行之外,也可以使用Linux執(zhí)行,以及在使用Hercules、UMX、FXI或Platform Solutions的仿真的機(jī)器上執(zhí)行,在這些機(jī)器上一般以一種仿真模式執(zhí)行。在仿真模式中對(duì)被仿真的特定指令解碼,并構(gòu)建一子例程以實(shí)現(xiàn)該個(gè)別指令,如在一“C”子例程或驅(qū)動(dòng)程序中,或使用為特定硬件提供驅(qū)動(dòng)程序的某種其它方法,如本領(lǐng)域的技術(shù)人員在理解了優(yōu)選實(shí)施例的描述后所能掌握的。各種軟件和硬件仿真專利包括不限于US5551013、US6009261、US5574873、US6308255、US6463582、和US5790825,它們示出了實(shí)現(xiàn)對(duì)為不同機(jī)器進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)的指令格式的仿真、以用于本領(lǐng)域的那些技術(shù)人員可用的目標(biāo)機(jī)器的各種已知方法,以及以上引用的這些專利使用的商業(yè)軟件技術(shù)。
在優(yōu)選的實(shí)施例中,用于非超標(biāo)量指令的現(xiàn)有的先前長位移指令格式由基址寄存器和12位無符號(hào)位移之和或基址寄存器、變址寄存器、及12位無符號(hào)位移之和構(gòu)成操作數(shù)存儲(chǔ)器地址,而新的長位移指令格式由基址寄存器和20位有符號(hào)位移之和或基址寄存器、變址寄存器、及20位有符號(hào)位移之和構(gòu)成操作數(shù)存儲(chǔ)器地址。
由圖15所示,這些指令由處理器在硬件中執(zhí)行,或通過所述指令集由在具有不同的本機(jī)指令集的計(jì)算機(jī)中執(zhí)行的軟件仿真來執(zhí)行。在圖15中,#501示出了包含指令和數(shù)據(jù)的計(jì)算機(jī)存儲(chǔ)器。本發(fā)明中所描述的長位移指令最初將存儲(chǔ)在這臺(tái)計(jì)算機(jī)中。#502示出用于從計(jì)算機(jī)存儲(chǔ)器中讀取指令的機(jī)制,并也可以包含它已讀取的這些指令的本地緩沖。然后將這些未處理的指令傳送到指令解碼器503,該指令解碼器503確定所讀取的指令類型。#504示出執(zhí)行指令的機(jī)制。這可包括從存儲(chǔ)器#501將數(shù)據(jù)加載到寄存器中,從寄存器將數(shù)據(jù)存回存儲(chǔ)器中,或執(zhí)行某種類型的算術(shù)或邏輯操作。這種要執(zhí)行的操作的準(zhǔn)確類型已先前由指令解碼器確定。本發(fā)明中所描述的長位移指令將在此處被執(zhí)行。如果長位移指令正在計(jì)算機(jī)系統(tǒng)中本機(jī)執(zhí)行,那么這個(gè)圖就按以上所述完成。然而,如果包含長位移指令的指令集體系結(jié)構(gòu)正在另一臺(tái)計(jì)算機(jī)上被仿真,以上的過程將在主計(jì)算機(jī)#505上的軟件中被實(shí)現(xiàn)。在這種情況下,上述的機(jī)制通常將作為仿真器軟件內(nèi)的一個(gè)或多個(gè)軟件子例程被實(shí)現(xiàn)。在兩種情況下,指令都被讀取、解碼和執(zhí)行。
更具體地說,這些體系結(jié)構(gòu)化的指令可以用于這樣的計(jì)算機(jī)體系結(jié)構(gòu)中,該計(jì)算機(jī)體系結(jié)構(gòu)具有現(xiàn)有的指令格式,這些格式具有用于構(gòu)成操作數(shù)存儲(chǔ)器地址的12位無符號(hào)位移,也具有附加的指令格式,這些格式提供附加的位移位,優(yōu)選為20位,這些位組成擴(kuò)展的用于構(gòu)成操作數(shù)存儲(chǔ)器地址的有符號(hào)位移。這些計(jì)算機(jī)體系結(jié)構(gòu)化指令構(gòu)成計(jì)算機(jī)軟件,該軟件存儲(chǔ)在存儲(chǔ)介質(zhì)中,用于產(chǎn)生利用該計(jì)算機(jī)軟件的處理器的代碼運(yùn)行,且包括由存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)介質(zhì)501中的編譯器或仿真器/解釋器所使用的指令碼,其中該指令碼的第一部分包括一操作碼,該操作碼指定要被執(zhí)行的操作,而第二部分指定參與的操作數(shù)。長位移指令允許使用所述長位移工具指令直接尋址附加的地址。
如由圖15示出的,這些指令在硬件中由處理器執(zhí)行,或由在具有不同本機(jī)指令集的計(jì)算機(jī)上執(zhí)行的軟件仿真所述指令集而執(zhí)行。
根據(jù)優(yōu)選實(shí)施例的計(jì)算機(jī)體系結(jié)構(gòu),位移字段被定義為分兩部分,低位部分是12位,稱為DL,DL1用于操作數(shù)1或DL2用于操作數(shù)2,而高位部分是8位,稱為DH,DH1用于操作數(shù)1或DH2用于操作數(shù)2。
此外,優(yōu)選的計(jì)算機(jī)體系結(jié)構(gòu)有這樣的指令格式,即操作碼在位位置0-7和位位置40-47,稱為R1的目標(biāo)寄存器在位位置8-11,稱為X2的變址寄存器在位位置12-15,稱為B2的基址寄存器在位位置16-19,位移由兩部分組成,稱為DL2的第一部分在位位置20-31,而稱為DH2的第二部分在位位置32-39。
該計(jì)算機(jī)體系結(jié)構(gòu)有這樣的指令格式,即操作碼在位位置0-7和位位置40-47,稱為R1的目標(biāo)寄存器在位位置8-11,稱為R3的源寄存器在位位置12-15,稱為B2的基址寄存器在位位置16-19,位移由兩部分組成,稱為DL2的第一部分在位位置20-31,而稱為DH2的第二部分在位位置32-39。
此外,具有長位移工具的本計(jì)算機(jī)體系結(jié)構(gòu)指令有這樣的指令格式,即操作碼在位位置0-7和位位置40-47,稱為R1的目標(biāo)寄存器在位位置8-11,稱為M3的掩碼值在位位置12-15,稱為B2的基址寄存器在位位置16-19,位移由兩部分組成,稱為DL2的第一部分在位位置20-31,而稱為DH2的第二部分在位位置32-39。
如所示出的,該優(yōu)選的具有長位移工具的計(jì)算機(jī)體系結(jié)構(gòu)有這樣的指令格式,即操作碼在位位置0-7和位置40-47,稱為I2的立即值在位位置8-15,稱為B2的基址寄存器在位位置16-19,位移由兩部分組成,稱為DL1的第一部分在位位置20-31,而稱為DH1的第二部分在位位置32-39。
當(dāng)我們的長位移工具計(jì)算機(jī)體系結(jié)構(gòu)使用創(chuàng)建的新的指令時(shí),會(huì)有效地操作,這些新指令僅使用具有新的20位無符號(hào)位移的指令格式。
我們的計(jì)算機(jī)體系結(jié)構(gòu)的特定實(shí)施例利用現(xiàn)有的指令,這些指令具有僅有12位無符號(hào)位移的指令格式,并且現(xiàn)在被定義成新的指令格式,這樣或者當(dāng)位移的高8位,即字段DH,全為0時(shí),具有現(xiàn)存的12位無符號(hào)位移值,或者當(dāng)位移的高8位,即字段DH,為非0時(shí),具有20位有符號(hào)值。
一種用于為計(jì)算環(huán)境的存儲(chǔ)器中的數(shù)據(jù)計(jì)算消息認(rèn)證碼的裝置,該裝置包括用于通過指令來指定將為其計(jì)算認(rèn)證碼的存儲(chǔ)單元的裝置;用于為該存儲(chǔ)單元計(jì)算認(rèn)證碼的裝置。
權(quán)利要求
1.一種用于在中央處理單元中執(zhí)行機(jī)器指令的方法,該方法包括以下步驟讀取有符號(hào)位移機(jī)器指令以便執(zhí)行,該有符號(hào)位移機(jī)器指令是根據(jù)一計(jì)算機(jī)體系結(jié)構(gòu)為計(jì)算機(jī)執(zhí)行定義的,該有符號(hào)位移機(jī)器指令包括操作碼字段、操作數(shù)基地址字段和包含有符號(hào)位移值的有符號(hào)位移字段;從由所述操作數(shù)基地址字段指定的位置獲得操作數(shù)基地址;如果所述有符號(hào)位移字段包含具有大小的負(fù)的位移值,則從所述操作數(shù)基地址算術(shù)地減去所述有符號(hào)位移值的大小,來確定操作數(shù)的地址;如果所述有符號(hào)位移字段包含具有大小的正的位移值,則向所述操作數(shù)基地址算術(shù)地加上所述有符號(hào)位移值的大小,來確定操作數(shù)的地址;以及執(zhí)行由所述操作碼字段定義的功能,其中所述功能使用所述被確定的地址處的操作數(shù)。
2.根據(jù)權(quán)利要求1的方法,還包括以下步驟從所述有符號(hào)位移字段檢索所述有符號(hào)位移字段值;從所述操作數(shù)基地址字段檢索基地址字段值,該基地址字段值包括所述操作數(shù)基地址在存儲(chǔ)器中的位置;基于所述操作碼字段值確定將執(zhí)行的功能;如果所述操作數(shù)是源操作數(shù),則讀取在所述被確定的地址處的操作數(shù);在所讀取的操作數(shù)上執(zhí)行所述被確定將執(zhí)行的功能,來確定第一結(jié)果操作數(shù)的第一結(jié)果值;以及存儲(chǔ)所述執(zhí)行步驟的所述第一結(jié)果操作數(shù)的第一結(jié)果值;如果所述操作數(shù)是結(jié)果操作數(shù),則讀取源操作數(shù);在所讀取的源操作數(shù)上執(zhí)行所述被確定將執(zhí)行的功能,來確定所述操作數(shù)的第二結(jié)果值;以及在所述被確定的地址處存儲(chǔ)所述執(zhí)行步驟的所述操作數(shù)的第二結(jié)果值。
3.根據(jù)權(quán)利要求1的方法,其中所述有符號(hào)的位移字段包括有符號(hào)部分和無符號(hào)部分。
4.根據(jù)權(quán)利要求3的方法,其中所述有符號(hào)部分包括8位最高有效位部分,并且所述無符號(hào)部分包括12位最低有效位部分。
5.根據(jù)權(quán)利要求3的方法,其中所述有符號(hào)部分包括所述有符號(hào)位移字段的較低階位。
6.根據(jù)權(quán)利要求3的方法,其中所述有符號(hào)位移機(jī)器指令的無符號(hào)部分占據(jù)與同一體系結(jié)構(gòu)的無符號(hào)位移機(jī)器指令中的無符號(hào)位移字段相同的位位置。
7.根據(jù)權(quán)利要求1的方法,其中所述有符號(hào)位移機(jī)器指令包括48位,其中所述操作碼包括位0-7和40-47,第一操作數(shù)位置字段包括位8-11,第二操作數(shù)位置字段包括位12-15,所述基地址字段包括位16-19,所述有符號(hào)位移字段的最低有效部分包括位20-31,以及所述有符號(hào)位移字段的最高有效部分包括位32-39。
8.根據(jù)權(quán)利要求1的方法,其中為所述計(jì)算機(jī)體系結(jié)構(gòu)定義的有符號(hào)位移機(jī)器指令是由另一計(jì)算機(jī)體系結(jié)構(gòu)的中央處理單元讀取和執(zhí)行的,該方法還包括以下步驟解釋所述有符號(hào)位移機(jī)器指令以識(shí)別用于仿真該有符號(hào)位移機(jī)器指令的操作的預(yù)定的軟件子例程;以及執(zhí)行所述預(yù)定的軟件子例程,以完成用于執(zhí)行有符號(hào)位移機(jī)器指令的方法的步驟。
9.根據(jù)權(quán)利要求1的方法,其中所述計(jì)算機(jī)體系結(jié)構(gòu)包括IBM z/Architecture,其中所述有符號(hào)位移機(jī)器指令格式包括RXY、RSY或SIY中的任何一個(gè)。
10.根據(jù)權(quán)利要求1的方法,其中所述有符號(hào)位移機(jī)器指令還包括第三操作數(shù)字段、掩碼字段、或索引字段中的任何一個(gè)。
11.根據(jù)權(quán)利要求1的方法,其中所述被確定將執(zhí)行的功能還使用這樣的值,該值包括所述有符號(hào)位移機(jī)器指令的立即字段值、所述有符號(hào)位移機(jī)器指令的掩碼字段值或這樣的通用寄存器值中的任何一個(gè),所述通用寄存器值是從由所述有符號(hào)位移機(jī)器指令的寄存器字段的值所確定的通用寄存器位置獲得的。
12.一種用于在中央處理單元中執(zhí)行機(jī)器指令的方法,該方法包括以下步驟讀取有符號(hào)位移機(jī)器指令以便執(zhí)行,該有符號(hào)位移機(jī)器指令是根據(jù)一計(jì)算機(jī)體系結(jié)構(gòu)為計(jì)算機(jī)執(zhí)行定義的,該有符號(hào)位移機(jī)器指令包括操作碼字段、操作數(shù)基地址字段和包含有符號(hào)位移值的有符號(hào)位移字段,其特征在于該有符號(hào)位移值的符號(hào)位于該值的兩部分之間;從由所述操作數(shù)基地址字段指定的位置獲得操作數(shù)基地址;如果所述有符號(hào)位移字段包含具有大小的負(fù)的位移值,則從所述操作數(shù)基地址算術(shù)地減去所述有符號(hào)位移值的大小,來確定操作數(shù)的地址;如果所述有符號(hào)位移字段包含具有大小的正的位移值,則向所述操作數(shù)基地址算術(shù)地加上所述有符號(hào)位移值的大小,來確定操作數(shù)的地址;以及執(zhí)行由所述操作碼字段定義的功能,其中該功能使用所述被確定的地址處的操作數(shù)。
13.一種計(jì)算機(jī)程序,包括用于當(dāng)所述計(jì)算機(jī)程序在計(jì)算機(jī)系統(tǒng)上被執(zhí)行時(shí)執(zhí)行根據(jù)上述任何方法權(quán)利要求的方法的所有步驟的指令。
14.一種系統(tǒng),包括適應(yīng)于執(zhí)行根據(jù)上述任何權(quán)利要求的方法的所有步驟的裝置。
全文摘要
一種用于為計(jì)算環(huán)境的存儲(chǔ)器中的數(shù)據(jù)計(jì)算消息認(rèn)證碼的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。一條指令指定將為其計(jì)算認(rèn)證碼的存儲(chǔ)單元。一計(jì)算操作為該存儲(chǔ)單元計(jì)算認(rèn)證碼。
文檔編號(hào)G06F12/06GK1967470SQ200610153808
公開日2007年5月23日 申請(qǐng)日期2004年4月30日 優(yōu)先權(quán)日2003年5月12日
發(fā)明者S·倫德瓦爾, R·史密斯, P·C-C·耶 申請(qǐng)人:國際商業(yè)機(jī)器公司