新聞中心
虛擬化技術(shù)分析:動態(tài)地址轉(zhuǎn)換
作者:Bob Rogers 2018-06-13 15:05:25
云計(jì)算
虛擬化 從硬件的角度來看,此時(shí)的System/360 Model 67并沒有提供虛擬化設(shè)備的支持,是CP-67虛擬機(jī)管理程序自己提供了所需的虛擬化。然而CP-67并不能虛擬化主內(nèi)存,它還是需要Model 67的協(xié)助來完成。

創(chuàng)新互聯(lián)主營孫吳網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,孫吳h5小程序設(shè)計(jì)搭建,孫吳網(wǎng)站營銷推廣歡迎孫吳等地區(qū)企業(yè)咨詢
盡管虛擬化在主機(jī)上是很成熟的技術(shù),我們最近還是經(jīng)常聽聞有關(guān)該技術(shù)的討論。早在1967年,CP-67虛擬機(jī)管理程序就已經(jīng)支持虛擬機(jī)和虛擬化系統(tǒng)鏡像。在這個(gè)虛擬機(jī)管理程序下,整個(gè)磁盤可以被虛擬為多個(gè)小型磁盤。例如像讀卡器、打卡機(jī)和打印機(jī)等單元記錄設(shè)備,甚至無需實(shí)際物理設(shè)備存在就能被虛擬出來。從硬件的角度來看,此時(shí)的System/360 Model 67并沒有提供虛擬化設(shè)備的支持,是CP-67虛擬機(jī)管理程序自己提供了所需的虛擬化。然而CP-67并不能虛擬化主內(nèi)存,它還是需要Model 67的協(xié)助來完成。
System/360 Model 67可以借助CP-67創(chuàng)建的表,來實(shí)施動態(tài)地址轉(zhuǎn)換(DAT)。通過這種方式,虛擬機(jī)中一個(gè)特定內(nèi)存塊可以被映射到實(shí)際內(nèi)存中的任意塊。實(shí)際內(nèi)存中非連續(xù)的內(nèi)存塊在虛擬機(jī)中可能就是連續(xù)的。更有趣的是,“虛擬內(nèi)存”中的塊有可能并不映射到實(shí)際內(nèi)存中。相反,它會被CP-67映射到磁盤上的數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊只有在被引用時(shí)才讀入真實(shí)的內(nèi)存數(shù)據(jù)。這樣的設(shè)計(jì)使得客戶操作系統(tǒng)認(rèn)為數(shù)據(jù)一直在內(nèi)存中。這便所謂的分頁技術(shù),同時(shí)也是虛擬化技術(shù)的基礎(chǔ)。今天的z/os系統(tǒng)正是利用這種機(jī)制隔離不同的應(yīng)用和程序。
轉(zhuǎn)譯后備緩沖區(qū)(TLB)提供了實(shí)用性
動態(tài)地址轉(zhuǎn)換是一個(gè)偉大的想法,但如果每次訪問內(nèi)存中指令或者操作數(shù)地址,都需要進(jìn)行地址轉(zhuǎn)換,那這個(gè)時(shí)間花費(fèi)是不可接受的。大多數(shù)大型機(jī)的指令涉及多個(gè)地址,如果沒有突破性的創(chuàng)新,動態(tài)地址轉(zhuǎn)換反而會降低機(jī)器運(yùn)行效率。這時(shí)出現(xiàn)了讓動態(tài)地址轉(zhuǎn)換依舊可用的創(chuàng)新,那就是轉(zhuǎn)譯后備緩沖區(qū)(TLB)。TLB是一種可以記錄并快速訪問前一次轉(zhuǎn)譯結(jié)果的結(jié)構(gòu)。
在這里我們不會太深入講解TLB的工程設(shè)計(jì),但仍有幾點(diǎn)需要留意。TLB是一個(gè)二維數(shù)組,其內(nèi)容就是一系列的條目。如圖1-01所示,它是長度為32個(gè)條目,寬度為4個(gè)條目的TLB。每個(gè)條目包含一個(gè)已被轉(zhuǎn)譯的虛擬地址和一個(gè)真實(shí)地址。使用索引和內(nèi)容可尋址存儲器,我們可以從TLB中獲得正確的先前轉(zhuǎn)譯。如果先前轉(zhuǎn)譯并沒有在TLB中,其它電子元件就會讀取內(nèi)存中的表并進(jìn)行轉(zhuǎn)換,然后將結(jié)果寫入到TLB的相應(yīng)列中,以備后續(xù)使用。
使用大型的TLB是非常有用的,這樣就能最小化內(nèi)存中表的訪問。然而不幸的是,大型電子電路的速度訪問會非常緩慢,因?yàn)樾盘柋仨氃诟蟮慕Y(jié)構(gòu)中傳播更遠(yuǎn)的距離。此外,內(nèi)容尋址存儲器所需的電路數(shù)增長是非線性的。所以TLB一般來說都比較小。幸運(yùn)的是我們已經(jīng)有一些技術(shù)可以提升有效容量,因此無需使用很大的TLB。
圖1-01 一級TLB
***化TLB的容量
起初,單一的TLB可用于轉(zhuǎn)譯指令地址和操作數(shù)地址。但同時(shí)也有兩個(gè)地方需要轉(zhuǎn)譯,那就是指令提取邏輯和操作數(shù)訪問邏輯。一個(gè)能有效增加容量的方法是使用兩套TLB,一個(gè)用于處理指令地址,另一個(gè)用于處理操作數(shù)地址。處理指令的TLB一般物理位置上臨近指令存取邏輯,處理數(shù)據(jù)的則被放置在操作數(shù)地址邏輯附近。即使這樣的設(shè)計(jì)需要額外邏輯來維護(hù)這兩個(gè)TLB的交互,但這個(gè)額外花銷是值得的,因?yàn)樗鼛砹诵实奶嵘?/p>
另外可做的是增加TLB的層級,這些額外增加的層級可以是大容量和低速度的設(shè)備,因?yàn)樗鼈儍H會在小型高速TLB未***時(shí)使用。這種添加層級的方法已被用于處理器高速緩存幾十年了。每個(gè)次級層次都容量更大,同時(shí)需要更多的周期來訪問。為此IBM工程師用非線性的方式實(shí)現(xiàn)了二級轉(zhuǎn)譯后備緩沖區(qū)(TLB2)。在內(nèi)存中的DAT表并不再是線性表,而是更復(fù)雜的多層結(jié)構(gòu)(如圖2-01所示)。例如在雙層表中,***級表稱為段表,它包含內(nèi)存映射到二級表的入口;二級表稱為頁面表,它包含256個(gè)用于映射4K內(nèi)存的條目。
圖2-01 存儲中的DAT表結(jié)構(gòu)
現(xiàn)代的z系統(tǒng)處理器的TLB2有兩種類型的條目(如圖2-02所示),大小為1MB的段和大小為4K的頁。當(dāng)轉(zhuǎn)譯在***層TLB(TLB1)中找不到時(shí),TLB2就會搜索4KB頁條目所提供的轉(zhuǎn)譯。如果沒有找到,TLB2就會在段條目中搜索包含待轉(zhuǎn)譯的地址。如果這個(gè)條目被找到,就不會再使用內(nèi)存中表的轉(zhuǎn)譯,因?yàn)閷?yīng)的頁表可以直接被訪問,而無需訪問存儲器中的段表。因此如使用TLB2,額外的轉(zhuǎn)譯可以通過訪問內(nèi)存中的表來實(shí)現(xiàn),至少減少了這些訪問的次數(shù)。
圖2-02 二級TLB的結(jié)構(gòu)
增加TLB有效容量的另一種方法是支持更大的頁面,使得僅需要較少的條目就能覆蓋給定的虛擬地址。在z系統(tǒng)的處理器中,這個(gè)特性得到了支持。首先在Z10的處理器上,TLB1會繼續(xù)支持4KB的條目,但TLB2可以容納1MB的頁條目。這些1MB的頁條目可以無需訪問內(nèi)存中的表來創(chuàng)建TLB1所需的4KB條目。在z196處理器中,TLB1已經(jīng)可以支持1MB的頁條目。在這個(gè)處理器中,添加了特殊的數(shù)據(jù)TLB1用于1MB頁條目的處理,同時(shí)指令TLB1也被增強(qiáng)用于支持4KB和1MB兩個(gè)頁條目。在zEC12還引入了2GB頁條目的支持。在這種結(jié)構(gòu)下,有一個(gè)小型的數(shù)據(jù)TLB1持有一些2GB的頁條目,而一些非常大的頁條目被用作DB2緩沖區(qū)域和JAVA堆的有效映射。
虛擬化的創(chuàng)新還在繼續(xù)
本文的簡介并沒有談到z/VM虛擬機(jī)支持客戶機(jī)的虛擬內(nèi)存。為了實(shí)現(xiàn)這種功能,z系統(tǒng)的處理器支持兩層的轉(zhuǎn)譯。首先,客戶機(jī)的虛擬地址被轉(zhuǎn)譯成客戶機(jī)的實(shí)際地址。但是客戶機(jī)的真實(shí)地址是主機(jī)端的虛擬地址,它需要轉(zhuǎn)譯成主機(jī)的真實(shí)地址。在這里我們不會就本話題做進(jìn)一步探討,僅僅有一點(diǎn)提醒大家注意,那便是兩層轉(zhuǎn)譯涉及到許多表的訪問,因?yàn)榭蛻舯淼霓D(zhuǎn)譯還涉及到額外的主機(jī)轉(zhuǎn)譯。還有許多更復(fù)雜的操作在z系統(tǒng)硬件上實(shí)現(xiàn),這種實(shí)現(xiàn)使得對上層操作是透明的。
網(wǎng)頁名稱:虛擬化技術(shù)分析:動態(tài)地址轉(zhuǎn)換
當(dāng)前網(wǎng)址:http://m.fisionsoft.com.cn/article/dhjchjc.html


咨詢
建站咨詢
