冷迪,陳瑞,李英
(深圳供電局有限公司,廣東深圳 518000)
近些年來(lái),計(jì)算機(jī)技術(shù)已經(jīng)延伸至多個(gè)領(lǐng)域,人們可以通過(guò)計(jì)算云平臺(tái)獲取相關(guān)數(shù)據(jù),在運(yùn)行程序的過(guò)程中可以更高效率實(shí)現(xiàn)系統(tǒng)的獨(dú)立、智能運(yùn)行,避免外界的不良影響[1]。國(guó)外的互聯(lián)網(wǎng)公司非常重視計(jì)算云平臺(tái)實(shí)施技術(shù)的發(fā)展,主要以Linux 宏內(nèi)核作為計(jì)算機(jī)平臺(tái)的操作系統(tǒng),與Android 操作系統(tǒng)可以實(shí)現(xiàn)數(shù)據(jù)關(guān)聯(lián),可以在安全機(jī)制得到保障的前提下進(jìn)行計(jì)算平臺(tái)的衍生,真正實(shí)現(xiàn)微內(nèi)核操作平臺(tái)。國(guó)內(nèi)的華為公司主要從宏內(nèi)核架構(gòu)方面進(jìn)行研究,開(kāi)發(fā)一種可以將數(shù)據(jù)服務(wù)進(jìn)行平臺(tái)分離的運(yùn)行系統(tǒng),統(tǒng)一PC 云計(jì)算平臺(tái)與移動(dòng)終端云計(jì)算平臺(tái)的數(shù)據(jù)計(jì)算模式。目前的計(jì)算云平臺(tái)組成架構(gòu)主要是Mach 結(jié)構(gòu),這種型號(hào)的結(jié)構(gòu)可以為計(jì)算云平臺(tái)提供較為穩(wěn)定的數(shù)據(jù)計(jì)算環(huán)境,滿足計(jì)算云平臺(tái)的虛化性,支持多線程的通信,方便實(shí)現(xiàn)多個(gè)CPU 之間指令的控制發(fā)送。
該文主要研究在X86 的架構(gòu)基礎(chǔ)上融入ARM架構(gòu),使兩種型號(hào)的架構(gòu)可以在計(jì)算云平臺(tái)中發(fā)揮數(shù)據(jù)計(jì)算特點(diǎn),為平臺(tái)內(nèi)核提供更安全的保障,同時(shí)應(yīng)用架構(gòu)中的通信算法,優(yōu)化計(jì)算云平臺(tái)中的通信環(huán)境,從而提升計(jì)算云平臺(tái)的微內(nèi)核性能。
X86 架構(gòu)可以在計(jì)算云平臺(tái)中的CPU 與外圍設(shè)備中進(jìn)行數(shù)據(jù)模擬,真實(shí)有效地加載計(jì)算云平臺(tái)中的相關(guān)指令,具有較高的執(zhí)行能力與編譯能力。X86架構(gòu)在對(duì)外部的計(jì)算云平臺(tái)進(jìn)行數(shù)據(jù)傳輸?shù)倪^(guò)程中,會(huì)涉及單元的訪問(wèn)過(guò)程,采用儲(chǔ)存器數(shù)據(jù)提取功能,中斷計(jì)算云平臺(tái)對(duì)核心數(shù)據(jù)的輸出。X86 架構(gòu)的實(shí)現(xiàn)需要使用虛擬地址進(jìn)行數(shù)據(jù)儲(chǔ)存后,才可以得到數(shù)據(jù)處理器的認(rèn)可與訪問(wèn),隨著內(nèi)存量的逐漸增加,架構(gòu)被訪問(wèn)的次數(shù)也就越來(lái)越多[2]。為了能夠使X86 與ARM 混合架構(gòu)可以在計(jì)算云平臺(tái)中具有較好的運(yùn)行環(huán)境,將選用如表1 所示的虛擬平臺(tái)作為架構(gòu)基礎(chǔ)。
表1 虛擬平臺(tái)信息
ARM 架構(gòu)在混合架構(gòu)中主要體現(xiàn)的是數(shù)據(jù)處理能力以及對(duì)信號(hào)的識(shí)別功能,可以在計(jì)算云平臺(tái)的數(shù)據(jù)控制、數(shù)據(jù)應(yīng)用方面提供較高的運(yùn)行性能[3]。為混合架構(gòu)提供40 個(gè)32 位數(shù)據(jù)寄存器,能夠調(diào)節(jié)架構(gòu)中的數(shù)據(jù)儲(chǔ)存模式,從不同的虛擬地址中實(shí)現(xiàn)數(shù)據(jù)特定計(jì)算方案,基于X86 和ARM 混合構(gòu)架的虛擬CPU 結(jié)構(gòu)如圖1所示。
圖1 基于X86和ARM混合構(gòu)架的虛擬CPU結(jié)構(gòu)
計(jì)算云平臺(tái)中的芯片決定混合架構(gòu)能否支撐整體數(shù)據(jù)平臺(tái),需要設(shè)計(jì)數(shù)據(jù)芯片通信與各類模塊,一方面芯片需要滿足應(yīng)用程序的運(yùn)行需求,另一方面需要滿足芯片線路中的寬帶兼容、延時(shí)效果[4]??偩€結(jié)構(gòu)的設(shè)計(jì)還需要按照X86 和ARM 混合架構(gòu)的實(shí)際結(jié)構(gòu)完成時(shí)序仿真,確定總線結(jié)構(gòu)的設(shè)計(jì)滿足平臺(tái)的計(jì)算模塊高效率運(yùn)行。該文研究AMBAAHB 總線設(shè)計(jì)結(jié)構(gòu),針對(duì)其自身的通信開(kāi)放性,結(jié)合外部的數(shù)據(jù)開(kāi)放協(xié)議,廣泛應(yīng)用總線協(xié)議的數(shù)據(jù)開(kāi)放特征。AMBAAHB 總線結(jié)構(gòu)如圖2 所示。
圖2 AMBAAHB總線結(jié)構(gòu)
AMBAAHB 的單線結(jié)構(gòu)可以同時(shí)服務(wù)多臺(tái)計(jì)算機(jī)平臺(tái),計(jì)算云平臺(tái)中的用戶訪問(wèn)算法均需要通過(guò)單線結(jié)構(gòu)完成請(qǐng)求傳輸,且在相同的時(shí)間段內(nèi),只能有一個(gè)用戶獲取訪問(wèn)算法的權(quán)限。當(dāng)多個(gè)用戶同時(shí)向計(jì)算云平臺(tái)發(fā)送訪問(wèn)請(qǐng)求,總線結(jié)構(gòu)中的仲裁器會(huì)針對(duì)不同的用戶地址進(jìn)行仲裁,合理分配不同用戶在不同時(shí)間段內(nèi)的訪問(wèn)權(quán),在單線結(jié)構(gòu)內(nèi)用戶還可以獲取數(shù)據(jù)計(jì)算地址、算法控制命令等信息[5]。為了解決多個(gè)用戶共同訪問(wèn)不能同時(shí)進(jìn)行的問(wèn)題,在總線結(jié)構(gòu)中設(shè)計(jì)優(yōu)先級(jí)矩陣,可以自主判斷處理算法的類型,通過(guò)算法與用戶信息共聯(lián)的方式實(shí)現(xiàn)總線結(jié)構(gòu)中的高效率運(yùn)行。
在X86 和ARM 混合架構(gòu)中的主要運(yùn)行平臺(tái)會(huì)采用二進(jìn)制翻譯模塊實(shí)現(xiàn)X86 架構(gòu)中的指令,訪問(wèn)ARM 結(jié)構(gòu)中的中斷控制器。在整個(gè)計(jì)算云平臺(tái)中的內(nèi)部模塊均具有互聯(lián)結(jié)構(gòu),可以連接外部設(shè)備中的地址數(shù)據(jù),并對(duì)地址數(shù)據(jù)進(jìn)行映射,從數(shù)據(jù)關(guān)聯(lián)的角度完善內(nèi)部模塊之間的數(shù)據(jù)信號(hào)傳輸關(guān)系[6]。每個(gè)模塊均具有相同復(fù)雜度的譯碼,與外部設(shè)備關(guān)聯(lián)后還要對(duì)不同模塊的指令端口進(jìn)行代碼設(shè)計(jì),不同模塊的外部設(shè)備代碼信息如表2 所示。
表2 不同模塊的外部設(shè)備代碼信息
在設(shè)備代碼已知的情況下,優(yōu)化混合架構(gòu)模塊中的數(shù)據(jù)接口,當(dāng)外部設(shè)備分層次對(duì)計(jì)算云平臺(tái)進(jìn)行訪問(wèn)時(shí),不需要占用較多的數(shù)據(jù)端口,以本地設(shè)備中的數(shù)據(jù)類型作為共享模塊參數(shù),還可以降低寬帶數(shù)據(jù)條件,從多個(gè)端口完成ARM 模塊指令。優(yōu)化后的結(jié)構(gòu)模塊不需要等待X86 架構(gòu)中的指令,只需在ARM 的雙口儲(chǔ)存器中形成兩條獨(dú)立的地址傳輸線與編譯傳輸線,即可實(shí)現(xiàn)獨(dú)立模塊的關(guān)聯(lián)運(yùn)行。優(yōu)化后的模塊結(jié)構(gòu)如圖3 所示。
圖3 優(yōu)化后的模塊結(jié)構(gòu)
計(jì)算云平臺(tái)首先需要支持X86 和ARM 混合架構(gòu)的應(yīng)用程序安裝,一般情況下計(jì)算云平臺(tái)中具有混合架構(gòu)程序的安裝目錄,在獲取用戶的訪問(wèn)權(quán)后即可進(jìn)行程序安裝[7]。計(jì)算云平臺(tái)中的系統(tǒng)安裝要同時(shí)符合X86 應(yīng)用程序與ARM 應(yīng)用程序,將兩種程序的安裝包保存在解壓目錄中等待用戶提取,計(jì)算云平臺(tái)安裝包解壓流程如圖4 所示。
圖4 計(jì)算云平臺(tái)安裝包解壓流程
計(jì)算云平臺(tái)獲取兩種應(yīng)用程序后,即可對(duì)數(shù)據(jù)進(jìn)行加載和鏈接工作,首先依據(jù)X86 架構(gòu)的數(shù)據(jù)獲取特點(diǎn),實(shí)現(xiàn)ARM 架構(gòu)中的程序加載鏈接,最后使周邊的數(shù)據(jù)加載器融入計(jì)算云平臺(tái)的算法中[8-10]。在鏈接庫(kù)中將X86 架構(gòu)程序載入虛擬機(jī),實(shí)現(xiàn)計(jì)算云平臺(tái)中的數(shù)據(jù)加載。ARM 加載器具有數(shù)據(jù)審核功能[11],對(duì)于正在加載的數(shù)據(jù)具有駁回權(quán)利,如果計(jì)算云平臺(tái)中沒(méi)有加載數(shù)據(jù)的解析文件,將會(huì)使用其他的文件格式提取數(shù)據(jù)代碼,映射在虛擬機(jī)中模擬儲(chǔ)存,同時(shí)虛擬機(jī)中會(huì)顯示數(shù)據(jù)代碼的加載地址,此時(shí)修改每個(gè)數(shù)據(jù)代碼的動(dòng)態(tài)鏈接即可完成虛擬機(jī)的關(guān)聯(lián)與數(shù)據(jù)審核。
X86 與ARM 混合架構(gòu)與周邊系統(tǒng)的通信以計(jì)算云平臺(tái)為運(yùn)行基礎(chǔ),平臺(tái)中的Java 函數(shù)可以調(diào)動(dòng)任何程序中的運(yùn)行機(jī)制,保證數(shù)據(jù)通信環(huán)境的穩(wěn)定性,還要?jiǎng)?chuàng)建一個(gè)函數(shù)機(jī)制調(diào)動(dòng)內(nèi)核系統(tǒng)的數(shù)據(jù)[12]。計(jì)算云平臺(tái)內(nèi)部數(shù)據(jù)與外部系統(tǒng)的數(shù)據(jù)傳輸通過(guò)信道參數(shù)傳遞,X86 運(yùn)行環(huán)境可以調(diào)用采集功能,在ARM數(shù)據(jù)環(huán)境中使用這些參數(shù),對(duì)傳輸數(shù)據(jù)種類、數(shù)量進(jìn)行定位,再根據(jù)函數(shù)應(yīng)用地址,尋找與函數(shù)對(duì)應(yīng)的參數(shù)名稱,實(shí)現(xiàn)信道數(shù)據(jù)的可逆性,從而提升計(jì)算云平臺(tái)通信功能的安全性。
安裝在X86 和ARM 混合架構(gòu)中的應(yīng)用程序均需要對(duì)數(shù)據(jù)進(jìn)行解壓與拷貝,解壓的數(shù)據(jù)內(nèi)容存放在用戶的程序目錄中,拷貝后的數(shù)據(jù)可以在應(yīng)用程序中進(jìn)行卸載。創(chuàng)建應(yīng)用程序的文件格式,提取程序中dex 文件,檢查文件包是否可以在計(jì)算云平臺(tái)中應(yīng)用,再對(duì)文件包進(jìn)行驗(yàn)證碼驗(yàn)證,預(yù)防安裝包的安裝失敗。
應(yīng)用SkyEye 虛擬機(jī)作為混合架構(gòu)的數(shù)據(jù)裁剪平臺(tái),支持X86 與ARM 應(yīng)用程序的運(yùn)行[13]。為了實(shí)現(xiàn)應(yīng)用程序在計(jì)算云平臺(tái)中的執(zhí)行,第一步要修改虛擬機(jī)中的模塊文件,儲(chǔ)存模塊中的ARM 線程數(shù)據(jù),并刪除其余數(shù)據(jù),并且從平臺(tái)界面中,獲取外圍設(shè)備的其他組件[14]。第二步要修改編譯文件,阻止外設(shè)模塊文件的生成,刪除界面共用文件。第三步要?jiǎng)h除計(jì)算云平臺(tái)中共有的模塊功能,刪除反匯編功能與混合架構(gòu)的執(zhí)行控制程序,還要對(duì)斷點(diǎn)的快照數(shù)據(jù)進(jìn)行解壓儲(chǔ)存[15-16]。設(shè)計(jì)應(yīng)用程序的跨平臺(tái)執(zhí)行方案,從X86 架構(gòu)的“取指-譯碼-執(zhí)行”程序中拓展,融入ARM 的數(shù)據(jù)寄存功能,應(yīng)用程序跨平臺(tái)實(shí)現(xiàn)流程如圖5 所示。
圖5 應(yīng)用程序跨平臺(tái)實(shí)現(xiàn)流程圖
為了驗(yàn)證X86 和ARM 混合架構(gòu)對(duì)計(jì)算云平臺(tái)的作用,對(duì)計(jì)算云平臺(tái)的安全性能與工作模式進(jìn)行測(cè)試與對(duì)比。首先進(jìn)行安全性能方面的實(shí)驗(yàn),對(duì)傳統(tǒng)單架構(gòu)的計(jì)算云平臺(tái)與該文架構(gòu)同時(shí)進(jìn)行安全性能的功能性驗(yàn)證,采用的內(nèi)核編譯環(huán)境為32 位系統(tǒng),每套計(jì)算云平臺(tái)運(yùn)行系統(tǒng)內(nèi)存為6 GB。安全性能測(cè)試實(shí)驗(yàn)步驟如下:
1)在不修改原有平臺(tái)代碼的前提下,進(jìn)行編譯內(nèi)核的設(shè)計(jì),獲取數(shù)據(jù)編碼內(nèi)核中的服務(wù)鏡像信息,可以引用用戶作為校驗(yàn)碼的傳輸者。
2)測(cè)試兩種架構(gòu)中的計(jì)算云平臺(tái)數(shù)據(jù)樣本,提取樣本中的代碼并進(jìn)行初始化,重新對(duì)代碼數(shù)據(jù)進(jìn)行地址修改,觀察發(fā)送代碼的計(jì)算方向。
3)引導(dǎo)兩種代碼向安全方向與不安全方向發(fā)展,引導(dǎo)過(guò)程中會(huì)不斷向用戶發(fā)送安全參數(shù),獲取兩種樣本中的完整代碼。安全測(cè)試過(guò)程中代碼引導(dǎo)結(jié)果如圖6 所示。
再對(duì)兩種構(gòu)架下的計(jì)算云平臺(tái)算法進(jìn)行安全測(cè)試,該文研究的計(jì)算云平臺(tái)算法中具有多種通信策略,應(yīng)用虛擬機(jī)建立數(shù)據(jù)環(huán)境模擬軟、硬件環(huán)境,另外還應(yīng)用64 位CPU 運(yùn)行測(cè)試環(huán)境。設(shè)定每種算法在計(jì)算云平臺(tái)中的工作時(shí)間為10 分鐘,期間每1 分鐘中斷一次內(nèi)核服務(wù)進(jìn)程,利用中斷時(shí)間將寄存器中的數(shù)據(jù)代入算法中,而算法中的數(shù)據(jù)提取是根據(jù)周期換算而得到的,換算公式如下:
式中,r代表?yè)Q算周期,h代表寄存器的運(yùn)行位數(shù),z代表數(shù)據(jù)處理器主頻,l代表數(shù)據(jù)時(shí)間應(yīng)用參數(shù)。最后測(cè)試了算法的5 000 次內(nèi)的安全性能,隨著計(jì)算次數(shù)的提升,安全性能也隨之變化,測(cè)試結(jié)果如圖7 所示。
圖7 安全性能測(cè)試對(duì)比結(jié)果
根據(jù)圖7 可知,該文混合架構(gòu)下的計(jì)算云平臺(tái)算法運(yùn)行參數(shù)較為穩(wěn)定,經(jīng)過(guò)多次的周期性計(jì)算后,安全性能下降不超過(guò)20%,而傳統(tǒng)架構(gòu)下的計(jì)算云平臺(tái)算法運(yùn)行一定周期后,參數(shù)穩(wěn)定性顯著降低,最大下降范圍達(dá)到60%。實(shí)驗(yàn)中再對(duì)計(jì)算云平臺(tái)的工作效率進(jìn)行對(duì)比,模擬計(jì)算云平臺(tái)的翻譯模塊實(shí)現(xiàn)工作效率的測(cè)試與對(duì)比。在兩種工作計(jì)算云平臺(tái)中的多個(gè)寄存器中輸入X86 數(shù)據(jù)指令,并應(yīng)用ARM 指令存放數(shù)據(jù)地址,分別在兩種計(jì)算云平臺(tái)中輸入相同的start-flag 信號(hào),可觀察計(jì)算云平臺(tái)對(duì)信號(hào)的翻譯讀取程度,翻譯模塊的信號(hào)效率對(duì)比結(jié)果如圖8所示。
圖8 翻譯模塊的信號(hào)效率對(duì)比結(jié)果
根據(jù)圖8 可知,混合架構(gòu)下計(jì)算云平臺(tái)翻譯模塊工作效率更高,可以在多層次對(duì)信號(hào)實(shí)現(xiàn)提取,從總線結(jié)構(gòu)中的多個(gè)計(jì)算周期完成信號(hào)功能實(shí)現(xiàn),而傳統(tǒng)計(jì)算云平臺(tái)只能單方面獲取信號(hào)功能[17-18],不具備在總線結(jié)構(gòu)中的優(yōu)先訪問(wèn)權(quán)。
該文主要研究X86 與ARM 混合構(gòu)架在計(jì)算云平臺(tái)中的應(yīng)用,從構(gòu)架組成的基礎(chǔ)上引出計(jì)算云平臺(tái)微內(nèi)核概念,應(yīng)用X86 架構(gòu)與ARM 架構(gòu)中的特點(diǎn)完善混合架構(gòu)的缺陷,并引導(dǎo)計(jì)算云平臺(tái)中的不同模塊在安全機(jī)制、運(yùn)算效率方面的協(xié)同應(yīng)用。在未來(lái)的研究過(guò)程中將會(huì)傾向以微內(nèi)核為目標(biāo),增強(qiáng)算法在計(jì)算云平臺(tái)的可靠性。