用于將邏輯地址轉(zhuǎn)換成物理地址的設(shè)備和方法
【專利摘要】在本發(fā)明中,安全執(zhí)行從邏輯地址向?qū)嶋H地址的轉(zhuǎn)換而未減少性能。在其中CPU(10)使管理程序(191)運行并且在這樣的控制之下運行訪客分區(qū)(192a-192c)的環(huán)境中,向CPU(10)添加可從訪客分區(qū)執(zhí)行的用于將邏輯地址轉(zhuǎn)換成實際地址的轉(zhuǎn)換命令(LTOR命令)。如果訪客分區(qū)(192a)指明邏輯地址并且執(zhí)行LTOR命令,則CPU(10)將這樣的邏輯地址轉(zhuǎn)換成實際地址;然而CPU并不向訪客分區(qū)(192a)返回實際地址而實際上返回編碼的實際地址。利用這一信息,訪客分區(qū)(192a)在不了解未知實際地址的情況下經(jīng)由總線(60)向加速器(20)傳遞編碼的實際地址,并且加速器(20)向?qū)嶋H地址轉(zhuǎn)換經(jīng)編碼的實際地址并且訪問存儲器。
【專利說明】用于將邏輯地址轉(zhuǎn)換成物理地址的設(shè)備和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用于將邏輯地址轉(zhuǎn)換成物理地址的裝置和方法。具體而言,本發(fā)明涉及一種用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機并且將虛擬機用來訪問存儲器的邏輯地址轉(zhuǎn)換成存儲器中的物理地址的裝置和方法。
【背景技術(shù)】
[0002]近年來,隨著虛擬化技術(shù)的發(fā)展,已經(jīng)變得有可能使用管理程序以邏輯上劃分單個物理機、然后將由此獲得的機器作為多個虛擬機操作。通過使用管理程序?qū)⑻摂M機相互分離,從而一個虛擬機不能訪問另一虛擬機的存儲器區(qū)域。這通過如以下描述的地址轉(zhuǎn)換來實現(xiàn)。
[0003]在使用邏輯上劃分的CPU的情況下,通過使用兩個類型的地址來訪問存儲器。在它們之中,物理地址僅可由管理程序使用。同時,在虛擬機上的程序、比如OS (下文將程序稱為“訪客分區(qū)”)使用的地址是邏輯地址。在訪客分區(qū)訪問存儲器時,CPU或者管理程序根據(jù)轉(zhuǎn)換表將邏輯地址轉(zhuǎn)換成物理地址。
[0004]同時,作為一種增加具體處理的速度的方法,有一種用硬件加速器(下文簡稱為“加速器”)或連接到CPU的其它設(shè)備分流具體工作負(fù)載的方法。例如Power7 (商標(biāo))或者PowerEN(商標(biāo))芯片能夠通過使用ICSWX指令來調(diào)用加速器。如果虛擬機執(zhí)行ICSWX指令,則向目標(biāo)加速器發(fā)送虛擬機的ID (LPARID)和在其中布置關(guān)于存儲器的參數(shù)的地址。
[0005]在這一環(huán)境中,一般通過存儲器或者在大數(shù)據(jù)的情況下通過高速緩存在訪客分區(qū)與加速器之間交換數(shù)據(jù)。另外,如果數(shù)據(jù)變復(fù)雜,則有必要使用數(shù)據(jù)結(jié)構(gòu)、比如鏈接表、樹等并且向數(shù)據(jù)中布置指向存儲器上的其它區(qū)域的指針。在這一情況下,訪客分區(qū)預(yù)備數(shù)據(jù)結(jié)構(gòu),因此指針指向邏輯地址。然而加速器需要物理地址以便訪問存儲器,因此有必要以一種方式或者另一方式向加速器通知在物理地址與邏輯地址之間的對應(yīng)。下文將“向加速器通知在物理地址與邏輯地址之間的對應(yīng)”的處理稱為“映射”。
[0006]一般而言,映射由管理程序執(zhí)行。
[0007]附帶提一點,在官方公報中描述的技術(shù)之中,有一種其中在分區(qū)中的地址與分區(qū)公共的地址之間執(zhí)行地址轉(zhuǎn)換的技術(shù)(例如見專利文獻(xiàn)I)。
[0008]在專利文獻(xiàn)I中的技術(shù)中,為了通過將分級總線SMP的內(nèi)部劃分成多個分區(qū)來實現(xiàn)在分區(qū)之間的共享存儲器,提供一種用于在每個節(jié)點的入口在分區(qū)中的地址與分區(qū)公共的共享存儲器空間地址之間雙向轉(zhuǎn)換共享區(qū)域中的地址的手段。
[0009][現(xiàn)有技術(shù)參考文獻(xiàn)]
[0010][專利文獻(xiàn)]
[0011][專利文獻(xiàn)I]
[0012]第4123621號日本專利
【發(fā)明內(nèi)容】
[0013][本發(fā)明要解決的問題]
[0014]如以上描述的那樣,常規(guī)地,如果需要向加速器等傳遞物理地址,則管理程序已經(jīng)執(zhí)行映射。
[0015]然而在管理程序執(zhí)行映射時,每當(dāng)執(zhí)行映射時,上下文切換在訪客分區(qū)與管理程序之間出現(xiàn)、由此有問題地減少性能。
[0016]這里,只要訪客分區(qū)能夠被通知物理地址,訪客分區(qū)就也能夠執(zhí)行映射。然而如果加速器被通知映射中的錯誤對應(yīng),則加速器訪問向另一訪客分區(qū)指派的存儲器、由此引起可能違反在分區(qū)之間的分離這樣的另一問題。
[0017]在專利文獻(xiàn)I中公開的技術(shù)并不提供任何用于這些問題的解決手段。
[0018]因而,本發(fā)明的目的是安全執(zhí)行從邏輯地址向物理地址的轉(zhuǎn)換而未減少性能。
[0019][用于解決問題的手段]
[0020]為了實現(xiàn)以上目的,本發(fā)明提供一種用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機并且將虛擬機用來訪問存儲器的邏輯地址轉(zhuǎn)換成在存儲器中的物理地址的裝置,該裝置包括:接受單元,用于在由虛擬機執(zhí)行可由虛擬機執(zhí)行并且用來將邏輯地址轉(zhuǎn)換成物理地址的指令時,從虛擬機接受邏輯地址;轉(zhuǎn)換單元,用于將由接受單元接受的邏輯地址轉(zhuǎn)換成先前與邏輯地址關(guān)聯(lián)的物理地址;加密信息生成單元,用于通過加密物理地址信息來生成加密的信息,物理地址信息包括通過由轉(zhuǎn)換單元執(zhí)行的轉(zhuǎn)換而獲得的物理地址;以及輸出單元,用于向虛擬機輸出由加密信息生成單元生成的加密的信息。
[0021]這里,該裝置可以包括:哈希生成單元,用于生成用于位串的哈希,位串包括通過由轉(zhuǎn)換單元執(zhí)行的轉(zhuǎn)換而獲得的物理地址;以及級聯(lián)單元,用于級聯(lián)由哈希生成單元生成的哈希與物理地址,從而在物理地址信息中包括哈希。
[0022]在這一實例中,級聯(lián)單元還可以級聯(lián)虛擬機的標(biāo)識符與物理地址,從而在物理地址信息中包括標(biāo)識符。
[0023]另外,哈希生成單元可以生成用于還包括標(biāo)識符的位串的哈希。
[0024]此外,本發(fā)明提供一種用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機并且將虛擬機用來訪問存儲器的邏輯地址轉(zhuǎn)換成在存儲器中的物理地址的裝置,該裝置包括:接受單元,用于在由虛擬機執(zhí)行可由虛擬機執(zhí)行并且用來將邏輯地址轉(zhuǎn)換成物理地址的指令時,從虛擬機接受邏輯地址;轉(zhuǎn)換單元,用于將由接受單元接受的邏輯地址轉(zhuǎn)換成位串,位串包括虛擬機的標(biāo)識符和先前與邏輯地址關(guān)聯(lián)的物理地址;哈希生成單元,用于生成用于通過轉(zhuǎn)換單元執(zhí)行的轉(zhuǎn)換而獲得的位串的哈希;級聯(lián)單元,用于級聯(lián)通過由轉(zhuǎn)換單元執(zhí)行的轉(zhuǎn)換而獲得的位串與由哈希生成單元生成的哈希;加密信息生成單元,用于通過加密通過由級聯(lián)單元執(zhí)行的級聯(lián)而獲得的物理地址信息來生成加密的信息;以及輸出單元,用于向虛擬機輸出由加密信息生成單元生成的加密的信息。
[0025]另外,本發(fā)明提供一種系統(tǒng),該系統(tǒng)包括:中央處理單元,用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機;以及訪問設(shè)備,用于通過使用存儲器中的與虛擬機用來訪問存儲器而使用的邏輯地址對應(yīng)的物理地址來訪問存儲器,其中中央處理單元包括:接受單元,用于在由虛擬機執(zhí)行可由虛擬機執(zhí)行并且用來將邏輯地址轉(zhuǎn)換成物理地址的指令時,從虛擬機接受邏輯地址;轉(zhuǎn)換單元,用于將由接受單元接受的邏輯地址轉(zhuǎn)換成先前與邏輯地址關(guān)聯(lián)的物理地址;加密信息生成單元,用于通過加密物理地址信息來生成加密的信息,物理地址信息包括通過轉(zhuǎn)換單元執(zhí)行的轉(zhuǎn)換而獲得的物理地址;以及輸出單元,用于向虛擬機輸出加密信息生成單元生成的加密的信息,并且其中訪問設(shè)備包括:接收單元,用于從已經(jīng)接收到由輸出單元輸出的加密的信息的虛擬機接收加密的信息;獲取單元,用于通過解密由接收單元接收的加密的信息來獲取物理地址信息;以及訪問單元,用于通過使用在由獲取單元獲取的物理地址信息中包括的物理地址來訪問存儲器。
[0026]可以配置這一系統(tǒng)使得CPU包括:第一哈希生成單元,用于生成第一哈希,第一哈希是用于位串的哈希,位串包括通過由轉(zhuǎn)換單元執(zhí)行的轉(zhuǎn)換而獲得的物理地址;以及級聯(lián)單元,用于級聯(lián)第一哈希與物理地址,從而在物理地址信息中包括由第一哈希生成單元生成的第一哈希;并且使得接入設(shè)備包括:第二哈希生成單元,用于生成第二哈希,第二哈希是用于位串的哈希,位串包括在由獲取單元獲取的物理地址信息中包括的物理地址;比較單元,用于比較在由獲取單元獲取的物理地址信息中包括的第一哈希與由第二哈希生成單元生成的第二哈希;以及控制單元,用于在由比較單元執(zhí)行的比較的結(jié)果示出第一哈希與第二哈希重合的情況下控制在物理地址信息中包括的物理地址以由訪問單元使用。
[0027]在該情況下,可以配置該系統(tǒng)使得級聯(lián)單元還級聯(lián)第一標(biāo)識符與物理地址,第一標(biāo)識符是虛擬機的標(biāo)識符,從而在物理地址信息中包括第一標(biāo)識符,使得接收單元還從虛擬機接收第二標(biāo)識符,第二標(biāo)識符是虛擬機的標(biāo)識符,使得比較單元還比較在物理地址信息中包括的第一標(biāo)識符與由接收單元接收的第二標(biāo)識符,并且使得控制單元在由比較單元執(zhí)行的比較的結(jié)果示出第一標(biāo)識符與第二標(biāo)識符重合的情況下控制在物理地址信息中包括的物理地址以由訪問單元使用。
[0028]另外,可以配置該系統(tǒng)使得第一哈希生成單元生成第一哈希,第一哈希是用于還包括第一標(biāo)識符的位串的哈希,并且使得第二哈希生成單元生成第二哈希,第二哈希是用于位串的哈希,位串包括在由獲取單元獲取的物理地址信息中包括的物理地址和第一標(biāo)識符。
[0029]另外,該系統(tǒng)還可以包括不能被除了 CPU和訪問設(shè)備之外的設(shè)備使用的存儲設(shè)備,并且可以配置該系統(tǒng)使得加密信息生成單元通過使用在存儲設(shè)備中存儲的加密密鑰來加密物理地址信息,并且使得獲取單元通過使用在存儲設(shè)備中存儲的加密密鑰或者與加密密鑰對應(yīng)的解密密鑰來解密加密的信息。
[0030]另外,本發(fā)明提供一種用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機并且將虛擬機用來通過其訪問存儲器的邏輯地址轉(zhuǎn)換成在存儲器中的物理地址的方法,該方法包括以下步驟:在由虛擬機執(zhí)行可由虛擬機執(zhí)行并且用來將邏輯地址轉(zhuǎn)換成物理地址的指令時從虛擬機接受邏輯地址;將在接受步驟中接受的邏輯地址轉(zhuǎn)換成先前與邏輯地址關(guān)聯(lián)的物理地址;通過加密物理地址信息來生成加密的信息,物理地址信息包括通過在轉(zhuǎn)換步驟中執(zhí)行的轉(zhuǎn)換而獲得的物理地址;并且向虛擬機輸出在生成加密的信息的步驟中生成的加密的信息。
[0031][本發(fā)明的優(yōu)點]
[0032]根據(jù)本發(fā)明,可以安全執(zhí)行從邏輯地址向物理地址的轉(zhuǎn)換而未減少性能。
【專利附圖】
【附圖說明】
[0033]圖1是圖示本發(fā)明的實施例被應(yīng)用于的系統(tǒng)的配置示例的框圖;[0034]圖2是圖示在本發(fā)明的實施例中的在訪客分區(qū)將邏輯地址轉(zhuǎn)換成加密的實際地址并且向加速器傳遞加密的實際地址時執(zhí)行的操作的高匡的圖;
[0035]圖3是示意地圖示在本發(fā)明的實施例中的其中CPU將邏輯地址轉(zhuǎn)換成加密的實際地址信息的處理內(nèi)容的圖;
[0036]圖4是圖示在本發(fā)明的實施例中的CPU的功能配置示例的框圖;
[0037]圖5是圖示在本發(fā)明的實施例中的CPU的典型操作的流程圖;
[0038]圖6是示意地圖示在本發(fā)明的實施例中的其中加速器將加密的實際地址信息轉(zhuǎn)換成實際地址信息的處理內(nèi)容的圖;
[0039]圖7是圖示在本發(fā)明的實施例中的加速器的功能配置示例的框圖;并且
[0040]圖8是圖示在本發(fā)明的實施例中的加速器的典型操作的流程圖。
【具體實施方式】
[0041 ] 下文將通過參照附圖具體描述本發(fā)明的優(yōu)選實施例。
[0042]圖1是圖示這一實施例被應(yīng)用于的系統(tǒng)的配置示例的框圖。
[0043]如圖所示,這一系統(tǒng)包括通過總線60連接的中央處理單元(CPU)IO、加速器20a和20b、存儲器30、存儲器控制器40以及加密密鑰存儲區(qū)域50。雖然在圖1中圖示加速器20a和20b,但是如果無需區(qū)分它們,則它們可以在一些情況下稱為加速器20。另外,雖然在圖1中圖示兩個加速器20,但是加速器20的數(shù)目不限于兩個并且它可以是一個或者是三個或者更多。
[0044]CPUlO是用于控制整個系統(tǒng)的操作的設(shè)備。具體而言,在這一實施例中,管理程序用來在物理機上操作多個虛擬機,從而操作系統(tǒng)(OS)和應(yīng)用在每個虛擬機上操作。
[0045]加速器20是通過代表CPU執(zhí)行CPU將執(zhí)行的具體處理的部分來增加系統(tǒng)的吞吐量的設(shè)備。這里作為具體處理圖示數(shù)據(jù)加密、壓縮、解壓等。另外,雖然在這一實施例中提供加速器20作為訪問存儲器30的訪問設(shè)備的示例,但是可以提供除了加速器20之外的設(shè)備。
[0046]存儲器30是用于存儲CPUlO在處理中使用的數(shù)據(jù)或者作為處理結(jié)果獲得的數(shù)據(jù)的設(shè)備。具體而言,在這一實施例中,存儲器30可以例如是動態(tài)隨機存取存儲器(DRAM)。
[0047]存儲器控制器40是控制向和從存儲器30寫入和讀取數(shù)據(jù)的設(shè)備。
[0048]加密密鑰存儲區(qū)域50用于在存儲在隨后將描述的CPUlO的加密處理中和在加速器20的解密處理中使用的加密密鑰時使用。假設(shè)加密密鑰存儲區(qū)域50僅可從CPUlO和加速器20訪問。這一類型的區(qū)域例如可由可信平臺模塊(TPM)實現(xiàn)。在這一實施例中,提供加密密鑰存儲區(qū)域50作為用于不能被除了 CPU和訪問設(shè)備之外的設(shè)備使用的存儲設(shè)備的示例。
[0049]假設(shè)管理程序在這一系統(tǒng)中將邏輯地址轉(zhuǎn)換成實際地址(物理地址),在訪客分區(qū)與管理程序之間出現(xiàn)上下文切換,由此降低了性能。因此,在這一實施例中,訪客分區(qū)代表管理程序?qū)⑦壿嫷刂忿D(zhuǎn)換成實際地址。更具體而言,向CPUlO添加可從訪客分區(qū)執(zhí)行的從邏輯地址向?qū)嶋H地址的轉(zhuǎn)換指令(下文稱為“LT0R指令”)。
[0050]然而如果使訪客分區(qū)能夠?qū)⑦壿嫷刂忿D(zhuǎn)換成實際地址,則訪客分區(qū)可能有意地或者錯誤地向加速器通知無效實際地址、由此侵犯向另一訪客分區(qū)指派的存儲器。因此,在這一實施例中,向訪客分區(qū)傳遞加密的實際地址(下文稱為“加密的實際地址”)以保護向每個訪客分區(qū)指派的存儲器。
[0051]圖2是示意地圖示在訪客分區(qū)通過使用LTOR指令將邏輯地址轉(zhuǎn)換成加密的實際地址并且向加速器20傳遞加密的實際地址時出現(xiàn)的情形的圖。
[0052]如圖所示,CPUlO操作管理程序191并且在管理程序191的控制之下操作訪客分區(qū)192a、192b和192c。雖然在圖中圖示訪客分區(qū)192a、192b和192c,但是如果無需相互區(qū)分訪客分區(qū),則它們可以在一些情況下稱為訪客分區(qū)192。另外,雖然在圖中圖示三個訪客分區(qū)192,但是訪客分區(qū)192的數(shù)目不限于三個,而它可以是一個或者兩個或者是四個或者更多。
[0053]這里假設(shè)例如訪客分區(qū)192a執(zhí)行LTOR指令。然后,CPUlO從訪客分區(qū)192a接收邏輯地址并且將邏輯地址轉(zhuǎn)換成實際地址。然而在這一實施例中,CPUlO未向訪客分區(qū)192a直接發(fā)送回實際地址、但是如以上描述的那樣發(fā)送回加密的實際地址。由此,訪客分區(qū)192a通過總線60向加速器20傳遞地址而未知實際地址。
[0054]同時,已經(jīng)接收加密的實際地址的加速器20通過使用加密密鑰將加密的實際地址轉(zhuǎn)換成實際地址、然后通過使用實際地址來訪問存儲器30 (見圖1)。
[0055]這里假設(shè)用于CPUlO的加密和用于加速器20的解密的加密密鑰如以上描述的那樣存儲于僅可由CPUlO和加速器20訪問的加密密鑰存儲區(qū)域50 (見圖1)中。
[0056]如以上描述的那樣,這一實施例包括執(zhí)行其中CPUlO將邏輯地址轉(zhuǎn)換成加密的實際地址的處理和其中加速器20將加密的實際地址轉(zhuǎn)換成實際地址的處理。因此,將對于它們中的每個處理進行以下描述。
[0057][其中CPUlO將邏輯地址轉(zhuǎn)換成加密的實際地址的處理]
[0058]圖3是示意地圖示在執(zhí)行這一類型的處理時出現(xiàn)的情形的圖。
[0059]首先,訪客分區(qū)192執(zhí)行LTOR指令,按照該LTOR指令從訪客分區(qū)192向CPUlO發(fā)送邏輯地址(IA)。
[0060]然后,CPUlO基于地址轉(zhuǎn)換表(IB)將邏輯地址轉(zhuǎn)換為實際地址信息。這里,實際地址信息從左側(cè)開始包括加密位、填充、LPARID、在實際地址上的有效地址(下文簡稱為“有效地址”)。在它們之中,加密位指示是否加密實際地址信息:“ I”指示加密實際地址信息;并且“O”指示未加密實際地址信息。由于未加密緊接在IB中的轉(zhuǎn)換之后的實際地址信息,所以加密位是“O”。此外,LPARID是訪客分區(qū)192的標(biāo)識符(ID),該訪客分區(qū)是邏輯分區(qū)(LPAR)0 在圖 3 中,LPARID 縮寫為 “L”。
[0061]另外,CPU100通過將哈希函數(shù)、比如安全哈希算法I (SHA-1)應(yīng)用于由實際地址信息中的LPARID和有效地址組成的位串來生成哈希、然后在填充位置中嵌入哈希以生成哈希級聯(lián)的位串(1C)。
[0062]另外,CPUlO根據(jù)高級加密標(biāo)準(zhǔn)(AES)等加密由哈希級聯(lián)的位串LPARID中的哈希和有效地址組成的位串并且將加密位改變成“I”以生成加密的實際地址信息(下文稱為“加密的實際地址信息”)(ID)0
[0063]由此,CPUlO向訪客分區(qū)192發(fā)送加密的實際地址信息,并且訪客分區(qū)192接收加密的實際地址信息(IE)。
[0064]隨后對執(zhí)行如圖3中所示處理的CPUlO的功能配置進行描述。[0065]圖4是圖示CPUlO的功能配置示例的框圖。
[0066]如圖所示,CPUlO包括指令解碼器11、授權(quán)確定電路12、操作數(shù)取回電路13、地址轉(zhuǎn)換電路14、地址轉(zhuǎn)換表141和狀態(tài)寄存器142。此外,CPUlO還包括哈希電路15、級聯(lián)電路16、加密電路17、加密密鑰接收電路171和位改變電路18。
[0067]指令解碼器11解碼管理程序191或者訪客分區(qū)192執(zhí)行的指令。
[0068]授權(quán)確定電路12確定指令解碼器11解碼的指令是否已經(jīng)由具有用于執(zhí)行指令的授權(quán)的軟件執(zhí)行。具體而言,如果指令解碼器11解碼的指令是LTOR指令,則授權(quán)確定電路12確定指令是否已經(jīng)由訪客分區(qū)192執(zhí)行。
[0069]操作數(shù)取回電路13取回指令解碼器11解碼的指令的操作數(shù)。具體而言,如果指令解碼器11解碼的指令是LTOR指令,則操作數(shù)取回電路113取回邏輯地址作為操作數(shù)。在這一實施例中,提供操作數(shù)取回電路13作為接受邏輯地址的接受單元的示例。
[0070]地址轉(zhuǎn)換電路14將操作數(shù)取回電路13取回的邏輯地址轉(zhuǎn)換成實際地址信息。實際地址信息如以上描述的那樣包括加密位、填充、LPARID和有效地址。在這一實施例中,有效地址用作物理地址的示例,并且LPARID用作虛擬機的標(biāo)識符的示例。另外,提供地址轉(zhuǎn)換電路14作為將邏輯地址轉(zhuǎn)換成物理地址的轉(zhuǎn)換單元或者將邏輯地址轉(zhuǎn)換成位串的轉(zhuǎn)換單元的示例,該位串包括虛擬機的標(biāo)識符和物理地址,還作為向物理地址級聯(lián)標(biāo)識符的級聯(lián)單元的示例。
[0071]在地址轉(zhuǎn)換電路14將邏輯地址轉(zhuǎn)換成實際地址信息時參考地址轉(zhuǎn)換表141。地址轉(zhuǎn)換表141保持在邏輯地址與在實際地址上的有效地址(在圖4中簡稱為“實際地址”)之間的對應(yīng)。
[0072]在地址轉(zhuǎn)換電路14將邏輯地址轉(zhuǎn)換成實際地址信息時參考狀態(tài)寄存器142。如果CPUlO接收到指令,則狀態(tài)寄存器142保持已經(jīng)執(zhí)行指令的訪客分區(qū)192的LPARID。
[0073]哈希電路15生成哈希,該哈希是由在地址轉(zhuǎn)換電路14執(zhí)行的轉(zhuǎn)換之后的實際地址信息中的LPARID和有效地址組成的部分。在這一實施例中,在實際地址信息中的LPARID和有效地址用作包括物理地址的位串的示例。另外,提供哈希電路15作為生成位串的哈希的哈希生成單元或者第一哈希生成單元的示例。
[0074]級聯(lián)電路16通過級聯(lián)在地址轉(zhuǎn)換電路14執(zhí)行的轉(zhuǎn)換之后的實際地址信息中的加密位、LPARID和有效地址與哈希電路15生成的哈希來生成哈希級聯(lián)的位串、由此生成哈希級聯(lián)的位串。在這一實施例中,提供級聯(lián)電路16作為級聯(lián)哈希與物理地址的級聯(lián)單元或者級聯(lián)位串與哈希的級聯(lián)單元的示例。
[0075]加密電路17加密由在級聯(lián)電路16生成的哈希級聯(lián)的位串中的哈希、LPARID和有效地址組成的部分。在這一實施例中,由在哈希級聯(lián)的位串中的哈希、LPARID和有效地址組成的部分用作包括物理地址的物理地址信息的示例,并且由加密的哈希、LPARID和有效地址組成的部分用作加密的信息的示例。此外,提供加密電路17作為通過加密物理地址信息來生成加密的信息的加密信息生成單元的示例。
[0076]加密密鑰接收電路171從加密密鑰存儲區(qū)域50 (見圖1)接收在加密電路17執(zhí)行加密時使用的加密密鑰。
[0077]位改變電路18通過改變在加密電路17加密的實際地址信息中的加密位來生成加密的實際地址信息。在這一實施例中,提供位改變電路18作為輸出加密的信息的輸出單元的示例。
[0078]隨后以下將描述執(zhí)行如圖3中所示處理的CPUlO的操作。
[0079]在CPUlO中,指令解碼器11首先解碼指令,然后授權(quán)確定電路12確定是否具有用于執(zhí)行指令的授權(quán)的軟件執(zhí)行指令。在這一實施例中,在指令解碼器11解碼的指令是LTOR指令并且訪客分區(qū)192執(zhí)行LTOR指令的情況下,換而言之,在訪客分區(qū)192中的OS或者應(yīng)用執(zhí)行以需要轉(zhuǎn)換成加密的實際地址信息的邏輯地址為變元的LTOR指令的情況下,執(zhí)行以下處理。
[0080]圖5是圖示CPUlO在以上情況下的典型操作的流程圖。
[0081]如圖所示,在CPUlO中,操作數(shù)取回電路13首先接收邏輯地址(步驟101)。
[0082]然后,地址轉(zhuǎn)換電路14將在步驟101中接收的邏輯地址轉(zhuǎn)換成實際地址信息(步驟102)。更具體而言,地址轉(zhuǎn)換電路14基于地址轉(zhuǎn)換表141將邏輯地址轉(zhuǎn)換成有效地址并且向有效地址添加在狀態(tài)寄存器142中保持的加密位、填充和LPARID以獲得實際地址信肩、O
[0083]隨后,哈希電路15生成哈希(摘要),該哈希是由在步驟102中獲得的實際地址信息LPARID和有效地址組成的部分(步驟103)。
[0084]另外,級聯(lián)電路16生成哈希級聯(lián)的位串,在該哈希級聯(lián)的位串中級聯(lián)在步驟102中獲得的實際地址信息與在步驟103中生成的哈希(摘要)(步驟104)。
[0085]另外,加密電路17加密在步驟104中生成的哈希級聯(lián)的位串中的哈希、LPARID和有效地址組成的部分(步驟105)。更具體而言,加密電路17通過使用加密密鑰接收電路171從加密密鑰存儲區(qū)域50接收的加密密鑰根據(jù)AES或者其它標(biāo)準(zhǔn)加密該部分。
[0086]然后,位改變電路18將在步驟105中的加密之后的哈希級聯(lián)的位串的第一加密位從“O”改變成“I”以生成加密的實際地址信息(步驟106)。
[0087]向訪客分區(qū)192發(fā)送回以上處理生成的加密的實際地址信息。隨后,在訪客分區(qū)192中的OS或者應(yīng)用接收加密的實際地址信息并且通過使用ICSWX指令等向加速器20發(fā)送加密的實際地址信息。下文將在以下描述ICSWX指令作為訪客分區(qū)192用于向加速器20發(fā)送加密的實際地址信息的指令的示例。
[0088][加速器20用于將加密的實際地址轉(zhuǎn)換成實際地址的處理]
[0089]圖6是示意地圖示在執(zhí)行以上處理時出現(xiàn)的情形的圖。
[0090]首先,在訪客分區(qū)192中的OS或者應(yīng)用通過使用ICSWX指令向加速器20發(fā)出執(zhí)行處理的請求。這時,向加速器20傳遞在訪客分區(qū)中的LPARID作為ICSWX指令的變元。另夕卜,執(zhí)行ICSWX指令,按照該ICSWX指令從訪客分區(qū)192向加速器20傳遞加密的實際地址信息(2A)。更具體而言,向加速器20傳遞加密的實際地址信息作為ICSWX指令的變元或者在ICSWX指令的變元指定的存儲器地址存儲的數(shù)據(jù)。
[0091]換而言之,加速器20在發(fā)現(xiàn)ICSWX指令的變元或者在存儲器30中的加密的實際地址信息時執(zhí)行以下描述的解密過程。
[0092]首先,加速器20通過根據(jù)AES或者其它標(biāo)準(zhǔn)解密由在加密的實際地址信息中的哈希、LPARID和有效地址組成的加密的位串來生成解密的位串(2B)。
[0093]隨后,加速器20通過將哈希函數(shù)、比如SHA-1應(yīng)用于由在解密的位串中的LPARID和有效地址組成的位串來生成哈希(2C)。[0094]由此,加速器20比較在解密的位串中的哈希與在2C中生成的哈希(2D)。如果哈希作為結(jié)果相互重合,則處理繼續(xù)下一步驟。否則,認(rèn)為錯誤并且不執(zhí)行后續(xù)處理。
[0095]此外,雖然未圖示,但是在2D中比較在執(zhí)行ICSWX指令的訪客分區(qū)192中的LPARID與在解密的位串中的LPARID。如果前一個LPARID與后一個LPARID作為結(jié)果重合,則處理繼續(xù)下一步驟。否則,認(rèn)為錯誤并且不執(zhí)行后續(xù)處理。
[0096]如果哈希和LPARID在2D中相互重合,則加速器20向解密的位串中的哈希填充零(2E)。
[0097]另外,加速器20將解密的位串中的加密位改變成零以生成實際地址信息(2F)。
[0098]然后,最終加速器20通過使用在2F中生成的實際地址信息來訪問存儲器30(2G)。
[0099]以下描述執(zhí)行如圖6中所示處理的加速器20的功能配置。
[0100]圖7是圖示加速器20的功能配置示例的框圖。
[0101]如圖所示,加速器20包括指令解碼器21、操作數(shù)取回電路22、解密電路23、加密密鑰接收電路231、哈希電路24和比較器電路25。另外,加速器20包括填充電路26、位改變電路27和存儲器訪問電路28。
[0102]指令解碼器21接收并且通過使用ICSWX指令來解碼從CPUlO發(fā)送的指令。發(fā)送的指令除了關(guān)于處理內(nèi)容的指引之外還包括在發(fā)送器的訪客分區(qū)中的LPARID。
[0103]操作數(shù)取回電路22取回指令解碼器21和解碼的指令的操作數(shù)和LPARID。操作數(shù)在許多情況下包括加密的實際地址信息。在這一實施例中,提供操作數(shù)取回電路22作為用于接收加密的信息的接收單元或者用于接收虛擬機的標(biāo)識符的接收單元的示例。
[0104]解密電路23通過解密在操作數(shù)取回電路22取回的加密的實際地址信息中的哈希、LPARID和有效地址組成的加密的部分來生成解密的位串。在這一實施例中,由哈希、LPARID和有效地址組成的加密的部分用作加密的信息的示例,并且解密的位串用作物理地址信息的示例。此外,提供解密電路23作為用于通過解密加密的信息來獲取物理地址信息的獲取單元的示例。
[0105]加密密鑰接收電路231從加密密鑰存儲區(qū)域50 (見圖1)接收用于在解密電路23執(zhí)行的解密中使用的加密密鑰。
[0106]哈希電路24生成由在解密電路23生成的解密的位串中的LPARID和有效地址組成的哈希。在這一示例中,作為包括物理地址的位串的示例,使用由在解密的位串中的LPARID和有效地址組成的部分。另外,作為生成位串的哈希的第二哈希生成單元的示例,提供哈希電路24。
[0107]比較器電路25比較在解密電路23生成的解密的位串中的哈希與哈希電路24生成的哈希并且比較在解密電路23生成的解密的位串中的LPARID與操作數(shù)取回電路22取回的LPARID。如果這些比較的結(jié)果示出哈希和LPARID均相互重合,則在下文描述的電路中執(zhí)行操作。在這一實施例中,提供比較器電路25作為比較哈希的比較單元或者比較標(biāo)識符的比較單元的示例和作為控制物理地址以便由訪問單元使用的控制單元的示例。
[0108]填充電路26向由在解密電路23生成的解密的位串中的哈希組成的部分填充零。
[0109]位改變電路27通過改變在填充電路26填充的解密的位串中的加密位來生成實際地址信息。
[0110]存儲器訪問電路28通過使用位改變電路27生成的實際地址信息來訪問存儲器30。在這一實施例中,提供存儲器訪問電路28作為通過使用物理地址來訪問存儲器的訪問單元的示例。
[0111]隨后將描述執(zhí)行如圖6中所示處理的加速器20的操作。
[0112]在加速器20中,指令解碼器21首先解碼指令。在這一實施例中,如果指令解碼器21解碼的指令的操作數(shù)包括加密的實際地址信息,則加速器20執(zhí)行下文描述的處理。
[0113]圖8是圖示加速器20在這一實例中的典型操作的流程圖。
[0114]如圖所示,在加速器20中,操作數(shù)取回電路22首先取回LPARID和加密的實際地址信息(步驟201)。這里在加密的實際地址信息中的加密位是“0”,可以在現(xiàn)有方法中進行對存儲器30的訪問,因此省略其描述。下文對于其中在加密的實際地址信息中的加密位是“I”的情況進行描述。
[0115]在這一情況下,解密電路23首先通過解密由在加密的實際地址信息中的哈希、LPARID和有效地址組成的加密的部分來生成解密的位串(步驟202)。更具體而言,解密電路23通過使用加密密鑰接收電路231從加密密鑰存儲區(qū)域50接收的加密密鑰根據(jù)AES或者其它標(biāo)準(zhǔn)執(zhí)行解密。然而注意可以通過使用與用于加密電路17執(zhí)行的加密的加密密鑰不同的加密密鑰對應(yīng)的解密密鑰來進行解密。
[0116]隨后,哈希電路24生成由在步驟202中獲得的解密的位串中的LPARID和有效地址組成的哈希(摘要)(步驟203)。
[0117]由此,比較器電路25比較在步驟202中生成的解密的位串中的哈希與在步驟203中生成的哈希以確定這些哈希相互重合(步驟204)。
[0118]如果確定哈希作為結(jié)果未相互重合,則可以在訪客分區(qū)192中更改在實際地址信息中的LAPRID或者有效地址,因此處理中止。同時,如果確定哈希相互重合,則比較器電路25比較在步驟201中接收的LPARID與在步驟202中生成的解密的位串中的LPARID以確定LPARID是否相互重合(步驟205)。
[0119]如果確定LPARID作為結(jié)果未相互重合,則可以重寫LPARID,因此中止處理。同時,如果確定LPARID相互重合,則處理繼續(xù)填充電路26的步驟和后續(xù)步驟。
[0120]換而言之,填充電路26向在步驟202中生成的解密的位串中的哈希填充零(步驟206)。
[0121]另外,位改變電路27將在步驟206中的填充之后的解密的位串的第一加密位從“ I ”改變成“ O ”以生成實際地址信息(步驟207 )。
[0122]另外,存儲器訪問電路28通過使用在步驟207中生成的實際地址信息的有效地址來訪問存儲器30 (步驟208)。
[0123]如以上描述的那樣,在這一實施例中,CPUlO加密實際地址并且向訪客分區(qū)192通知加密的實際地址而不是直接發(fā)送實際地址。這使訪客分區(qū)192能夠直接對待實際地址、由此實現(xiàn)減少映射的開銷。
[0124]另外,在這一實施例中,采取用于防止使用無效加密的實際地址的措施。更具體而言,檢查在實際地址中的LPARID是否與在發(fā)送器的訪客分區(qū)192中的LPARID重合和實際地址是否與其摘要重合。由此,即使更改實際地址,接收器仍然可以檢測更改、由此防止訪客分區(qū)192向加速器20傳遞無效實際地址。
[0125]雖然在生成哈希時的處理對象在這一實施例中是由LPARID和有效地址組成的部分,但是處理對象可以僅為有效地址。換而言之,可以生成僅包括有效地址的哈希。
[0126]另外,雖然實際地址信息在這一實施例中包括LPARID和哈希,但是有可能運用如下示例實施例,在該實施例中,實際地址信息未包括LPARID和哈希中的至少一項。
[0127]盡管已經(jīng)通過使用實施例來描述本發(fā)明,但是本發(fā)明的技術(shù)范圍不限于前述實施例的描述。本領(lǐng)域技術(shù)人員清楚的是可以運用各種改變或者備選實施例而未脫離本發(fā)明的精神實質(zhì)和范圍。
[0128][標(biāo)號說明]
[0129]10 CPU
[0130]11,21 指令解碼器
[0131]12 授權(quán)確定電路
[0132]13,22 操作數(shù)取回電路
[0133]14 地址轉(zhuǎn)換電路
[0134]141 地址轉(zhuǎn)換表
[0135]142 狀態(tài)寄存器
[0136]15,24 哈希電路
[0137]16 級聯(lián)電路
[0138]17 加密電路
[0139]171,231 加密密鑰接收電路
[0140]18,27 位改變電路
[0141]20 加速器
[0142]23 解密電路
[0143]25 比較器電路
[0144]26 填充電路
[0145]28 存儲器訪問電路
[0146]30 存儲器
[0147]40 存儲器控制器
[0148]50 加密密鑰存儲區(qū)域
[0149]60 總線
【權(quán)利要求】
1.一種用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機并且將由所述虛擬機用來訪問存儲器的邏輯地址轉(zhuǎn)換成在所述存儲器中的物理地址的裝置,所述裝置包括: 接受單元,用于在由所述虛擬機執(zhí)行可由所述虛擬機執(zhí)行、并且用來將所述邏輯地址轉(zhuǎn)換成所述物理地址的指令時,從所述虛擬機接受所述邏輯地址; 轉(zhuǎn)換單元,用于將由所述接受單元接受的所述邏輯地址轉(zhuǎn)換成先前與所述邏輯地址關(guān)聯(lián)的所述物理地址; 加密信息生成單元,用于通過加密物理地址信息來生成加密的信息,所述物理地址信息包括通過由所述轉(zhuǎn)換單元執(zhí)行的所述轉(zhuǎn)換而獲得的所述物理地址;以及 輸出單元,用于向所述虛擬機輸出由所述加密信息生成單元生成的所述加密的信息。
2.根據(jù)權(quán)利要求1所述的裝置,還包括: 哈希生成單元,用于生成用于位串的哈希,所述位串包括通過由所述轉(zhuǎn)換單元執(zhí)行的所述轉(zhuǎn)換而獲得的所述物理地址;以及 級聯(lián)單元,用于級聯(lián)由所述哈希生成單元生成的所述哈希與所述物理地址,從而在所述物理地址信息中包括所述哈希。
3.根據(jù)權(quán)利要求2所述的裝置, 其中所述級聯(lián)單元還級聯(lián)所述虛擬機的標(biāo)識符與所述物理地址,從而在所述物理地址信息中包括所述標(biāo)識符。
4.根據(jù)權(quán)利要求3所述的裝置,其中所述哈希生成單元生成用于還包括所述標(biāo)識符的所述位串的哈希。
5.一種用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機并且將由所述虛擬機用來訪問存儲器的邏輯地址轉(zhuǎn)換成在所述存儲器中的物理地址的裝置,所述裝置包括: 接受單元,用于在由所述虛擬機執(zhí)行可由所述虛擬機執(zhí)行、并且用來將所述邏輯地址轉(zhuǎn)換成所述物理地址的指令時,從所述虛擬機接受所述邏輯地址; 轉(zhuǎn)換單元,用于將由所述接受單元接受的所述邏輯地址轉(zhuǎn)換成位串,所述位串包括所述虛擬機的標(biāo)識符和先前與所述邏輯地址關(guān)聯(lián)的所述物理地址; 哈希生成單元,用于生成用于通過所述轉(zhuǎn)換單元執(zhí)行的所述轉(zhuǎn)換而獲得的所述位串的哈希; 級聯(lián)單元,用于級聯(lián)通過由所述轉(zhuǎn)換單元執(zhí)行的所述轉(zhuǎn)換而獲得的所述位串與由所述哈希生成單元生成的所述哈希; 加密信息生成單元,用于通過加密通過由所述級聯(lián)單元執(zhí)行的所述級聯(lián)而獲得的物理地址信息來生成加密的信息;以及 輸出單元,用于向所述虛擬機輸出由所述加密信息生成單元生成的所述加密的信息。
6.一種系統(tǒng),包括: 中央處理單元,用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機;以及訪問設(shè)備,用于通過使用存儲器中的與所述虛擬機用來訪問所述存儲器而使用的邏輯地址對應(yīng)的物理地址來訪問所述存儲器,其中: 所述中央處理單元包括: 接受單元,用于在由所述虛擬機執(zhí)行可由所述虛擬機執(zhí)行、并且用來將所述邏輯地址轉(zhuǎn)換成所述物理地址的指令時,從所述虛擬機接受所述邏輯地址; 轉(zhuǎn)換單元,用于將由所述接受單元接受的所述邏輯地址轉(zhuǎn)換成先前與所述邏輯地址關(guān)聯(lián)的所述物理地址; 加密信息生成單元,用于通過加密物理地址信息來生成加密的信息,所述物理地址信息包括通過所述轉(zhuǎn)換單元執(zhí)行的所述轉(zhuǎn)換而獲得的所述物理地址;以及 輸出單元,用于向所述虛擬機輸出所述加密信息生成單元生成的所述加密的信息;并且 所述訪問設(shè)備包括: 接收單元,用于從已經(jīng)接收到由所述輸出單元輸出的所述加密的信息的所述虛擬機接收所述加密的信息; 獲取單元,用于通過解密由所述接收單元接收的所述加密的信息來獲取所述物理地址/[目息;以及 訪問單元,用于通過使用在由所述獲取單元獲取的所述物理地址信息中包括的所述物理地址來訪問所述存儲器。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中: 所述CPU包括: 第一哈希生成單元,用于生成第一哈希,所述第一哈希是用于位串的哈希,所述位串包括通過由所述轉(zhuǎn)換單 元執(zhí)行的所述轉(zhuǎn)換而獲得的所述物理地址;以及 級聯(lián)單元,用于級聯(lián)所述第一哈希與所述物理地址,從而在所述物理地址信息中包括所述由第一哈希生成單元生成的所述第一哈希;并且所述接入設(shè)備包括: 第二哈希生成單元,用于生成第二哈希,所述第二哈希是用于位串的哈希,所述位串包括在由所述獲取單元獲取的所述物理地址信息中包括的所述物理地址; 比較單元,用于比較在由所述獲取單元獲取的所述物理地址信息中包括的所述第一哈希與由所述第二哈希生成單元生成的所述第二哈希;以及 控制單元,用于在由所述比較單元執(zhí)行的所述比較的結(jié)果示出所述第一哈希與所述第二哈希重合的情況下,控制在所述物理地址信息中包括的所述物理地址以由所述訪問單元使用。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中: 所述級聯(lián)單元還級聯(lián)第一標(biāo)識符與所述物理地址,所述第一標(biāo)識符是所述虛擬機的標(biāo)識符,從而在所述物理地址信息中包括所述第一標(biāo)識符; 所述接收單元還從所述虛擬機接收第二標(biāo)識符,所述第二標(biāo)識符是所述虛擬機的標(biāo)識符; 所述比較單元還比較在所述物理地址信息中包括的所述第一標(biāo)識符與由所述接收單元接收的所述第二標(biāo)識符;并且 所述控制單元在由所述比較單元執(zhí)行的所述比較的結(jié)果示出所述第一標(biāo)識符與所述第二標(biāo)識符重合的情況下,控制在所述物理地址信息中包括的所述物理地址以由所述訪問單元使用。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中: 所述第一哈希生成單元生成所述第一哈希,所述第一哈希是用于還包括所述第一標(biāo)識符的所述位串的所述哈希;并且所述第二哈希生成單元生成所述第二哈希,所述第二哈希是用于位串的哈希,所述位串包括在由所述獲取單元獲取的所述物理地址信息中包括的所述物理地址和所述第一標(biāo)識符。
10.根據(jù)權(quán)利要求6至9中的任一權(quán)利要求所述的系統(tǒng),還包括不能被除了所述CPU和所述訪問設(shè)備之外的設(shè)備使用的存儲設(shè)備,其中: 所述加密信息生成單元通過使用在所述存儲設(shè)備中存儲的所述加密密鑰來加密所述物理地址信息;并且 所述獲取單元通過使用在所述存儲設(shè)備中存儲的所述加密密鑰或者與所述加密密鑰對應(yīng)的解密密鑰來解密所述加密的信息。
11.一種用于操作通過邏輯上劃分物理機而實現(xiàn)的虛擬機并且將所述虛擬機用來通過其訪問存儲器的邏輯地址轉(zhuǎn)換成在所述存儲器中的物理地址的方法,所述方法包括步驟: 在由所述虛擬機執(zhí)行可由所述虛擬機執(zhí)行、并且用來將所述邏輯地址轉(zhuǎn)換成所述物理地址的指令時,從所述虛擬機接受所述邏輯地址; 將在所述接受步驟中接受的所述邏輯地址轉(zhuǎn)換成先前與所述邏輯地址關(guān)聯(lián)的所述物理地址; 通過加密物理地址信息來生成加密的信息,所述物理地址信息包括通過在所述轉(zhuǎn)換步驟中執(zhí)行的所述轉(zhuǎn)換而獲得的所述物理地址;并且 向所述虛擬機輸出在生成加密的信息的所述`步驟中生成的所述加密的信息。
【文檔編號】G06F9/46GK103765395SQ201280040865
【公開日】2014年4月30日 申請日期:2012年7月27日 優(yōu)先權(quán)日:2011年8月29日
【發(fā)明者】田中宏幸, 三木雅紀(jì) 申請人:國際商業(yè)機器公司