午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

中央處理器和在其中執(zhí)行隱秘操作、協(xié)處理器操作的方法

文檔序號:10686816閱讀:335來源:國知局
中央處理器和在其中執(zhí)行隱秘操作、協(xié)處理器操作的方法
【專利摘要】提供一種中央處理器及其操作方法。該中央處理器,包括:隱秘指令存儲器,用于預(yù)先存儲與隱秘操作相關(guān)的隱秘指令所對應(yīng)的指令數(shù)據(jù),其中禁止從該中央處理器外部存取該隱秘指令存儲器;指令控制器,用于根據(jù)當(dāng)前程序中的一隱秘指令,在該隱秘指令存儲器中查找該隱秘指令所對應(yīng)的指令數(shù)據(jù),并根據(jù)該對應(yīng)的指令數(shù)據(jù)將該隱秘指令翻譯為至少一個微操作;以及執(zhí)行單元,用于執(zhí)行所述微操作。
【專利說明】
中央處理器和在其中執(zhí)行隱秘操作、協(xié)處理器操作的方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及中央處理器及其操作方法,更具體地,涉及執(zhí)行隱秘操作或協(xié)處理器 操作的中央處理器及其操作方法。
【背景技術(shù)】
[0002] 在計算機(jī)系統(tǒng)中,用于執(zhí)行特定功能的軟件是通過程序代碼實現(xiàn)的。出于商業(yè)利 益或安全的考慮,軟件開發(fā)者有時不希望披露程序中與隱秘操作對應(yīng)的代碼段。例如,該隱 秘操作可以是不希望公開的核心算法的操作步驟,也可以是與安全相關(guān)的操作。為此,可以 采用諸如加密等手段對該隱秘操作的代碼進(jìn)行保護(hù),但是這增加了實現(xiàn)的復(fù)雜度,而且在 保密性與效率之間往往難以取得理想的折衷。一方面,保密性的提高伴隨著額外的計算開 銷,另一方面,使用輕量級的加解密算法實現(xiàn)的保密并不可靠。
[0003] 同時,從硬件商的角度來說,有時候希望限制其開發(fā)的軟件的執(zhí)行平臺,或者對這 種限制進(jìn)行控制。例如,中央處理器(CPU)生產(chǎn)商可能希望使得某種軟件只能在其生產(chǎn)的 CPU上執(zhí)行,或者只能在特定型號或批次的CPU上執(zhí)行。類似地,為了實現(xiàn)這種限制,造成復(fù) 雜度和開銷的增加。
[0004] 此外,協(xié)處理器在計算機(jī)系統(tǒng)中被廣泛用于執(zhí)行特定功能以減輕CPU的負(fù)荷。協(xié)處 理器通常以系統(tǒng)設(shè)備的身份出現(xiàn),因而需要在每種操作系統(tǒng)(0S)中編寫相應(yīng)的驅(qū)動程序。 這些驅(qū)動程序互不相同,增加了開發(fā)的工作量,而且缺乏靈活度。另外,通過逆向工程等方 法分析驅(qū)動程序,未經(jīng)授權(quán)者有可能獲取開發(fā)者不愿披露的實現(xiàn)細(xì)節(jié)。

【發(fā)明內(nèi)容】

[0005] 因此,為了解決上述問題,本發(fā)明提供能夠高效率地執(zhí)行隱秘操作的中央處理器 及其操作方法。此外,本發(fā)明還提供能夠高效率地執(zhí)行協(xié)處理器操作的中央處理器及其操 作方法。
[0006] 根據(jù)本發(fā)明實施例的一個方面,提供一種中央處理器,包括:隱秘指令存儲器,用 于預(yù)先存儲與隱秘操作相關(guān)的隱秘指令所對應(yīng)的指令數(shù)據(jù),其中禁止從該中央處理器外部 存取該隱秘指令存儲器;指令控制器,用于根據(jù)當(dāng)前程序中的一隱秘指令,在該隱秘指令存 儲器中查找該隱秘指令所對應(yīng)的指令數(shù)據(jù),并根據(jù)該對應(yīng)的指令數(shù)據(jù)將該隱秘指令翻譯為 至少一個微操作;以及執(zhí)行單元,用于執(zhí)行所述微操作。
[0007] 根據(jù)本發(fā)明的實施例,該隱秘指令可以為該中央處理器的自定義微碼指令。
[0008] 根據(jù)本發(fā)明的實施例,該隱秘指令存儲器可以為該中央處理器的微碼補(bǔ)丁存儲器 的至少一部分,而且可以利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。
[0009] 根據(jù)本發(fā)明的實施例,當(dāng)該指令控制器未找到該隱秘指令所對應(yīng)的指令數(shù)據(jù)時, 該中央處理器可以終止執(zhí)行該當(dāng)前程序。
[0010] 根據(jù)本發(fā)明的實施例,該當(dāng)前程序中的該隱秘指令對該當(dāng)前程序的開發(fā)者及該中 央處理器的制造商以外的第三方是保密的。
[0011] 根據(jù)本發(fā)明實施例的另一方面,提供一種在中央處理器中執(zhí)行隱秘操作的方法包 括:在該中央處理器中預(yù)先存儲與該隱秘操作相關(guān)的隱秘指令所對應(yīng)的指令數(shù)據(jù),其中禁 止從該中央處理器外部存取所述指令數(shù)據(jù);讀取當(dāng)前程序中的一隱秘指令;在已存儲的指 令數(shù)據(jù)中查找該隱秘指令所對應(yīng)的指令數(shù)據(jù);根據(jù)該對應(yīng)的指令數(shù)據(jù)將該隱秘指令翻譯為 至少一個微操作;以及執(zhí)行所述微操作。
[0012] 根據(jù)本發(fā)明的實施例,該隱秘指令可以為該中央處理器的自定義微碼指令。
[0013] 根據(jù)本發(fā)明的實施例,可以利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。
[0014] 根據(jù)本發(fā)明的實施例,該方法可以進(jìn)一步包括:當(dāng)未找到該隱秘指令所對應(yīng)的指 令數(shù)據(jù)時,終止執(zhí)行該當(dāng)前程序。
[0015] 根據(jù)本發(fā)明的實施例,該當(dāng)前程序中的該隱秘指令對該當(dāng)前程序的開發(fā)者及該中 央處理器的制造商以外的第三方是保密的。
[0016] 根據(jù)本發(fā)明實施例的另一方面,提供一種中央處理器,包括:協(xié)處理器指令存儲 器,用于預(yù)先存儲與控制協(xié)處理器的操作相關(guān)的協(xié)處理器指令所對應(yīng)的指令數(shù)據(jù);協(xié)處理 器接口,用于與該協(xié)處理器通信;指令控制器,用于根據(jù)當(dāng)前程序中的一協(xié)處理器指令,在 該協(xié)處理器指令存儲器中查找該協(xié)處理器指令所對應(yīng)的指令數(shù)據(jù),并根據(jù)該對應(yīng)的指令數(shù) 據(jù)將該協(xié)處理器指令翻譯為與該協(xié)處理器接口相關(guān)的至少一個微操作;以及執(zhí)行單元,用 于執(zhí)行所述微操作以通過該協(xié)處理器接口控制該協(xié)處理器的操作。
[0017] 根據(jù)本發(fā)明的實施例,該協(xié)處理器指令可以為該中央處理器的自定義微碼指令。
[0018] 根據(jù)本發(fā)明的實施例,該協(xié)處理器指令存儲器可以為該中央處理器的微碼補(bǔ)丁存 儲器的至少一部分,而且可以利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。
[0019] 根據(jù)本發(fā)明的實施例,該協(xié)處理器的操作可以包括初始化、讀、寫、控制、讀狀態(tài)中 的至少一個。
[0020] 根據(jù)本發(fā)明的實施例,可以禁止從該中央處理器外部存取該協(xié)處理器指令存儲 器。
[0021] 根據(jù)本發(fā)明實施例的另一方面,提供一種在中央處理器中執(zhí)行協(xié)處理器操作的方 法,包括:在該中央處理器中預(yù)先存儲與控制協(xié)處理器的操作相關(guān)的協(xié)處理器指令所對應(yīng) 的指令數(shù)據(jù);讀取當(dāng)前程序中的一協(xié)處理器指令;在已存儲的指令數(shù)據(jù)中查找該協(xié)處理器 指令所對應(yīng)的指令數(shù)據(jù);根據(jù)該對應(yīng)的指令數(shù)據(jù)將該協(xié)處理器指令翻譯為與協(xié)處理器接口 相關(guān)的至少一個微操作;以及執(zhí)行所述微操作以通過該協(xié)處理器接口控制該協(xié)處理器的操 作。
[0022] 根據(jù)本發(fā)明的實施例,該協(xié)處理器指令可以為該中央處理器的自定義微碼指令。
[0023] 根據(jù)本發(fā)明的實施例,可以利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。
[0024]根據(jù)本發(fā)明的實施例,該協(xié)處理器的操作可以包括初始化、讀、寫、控制、讀狀態(tài)中 的至少一個。
[0025] 根據(jù)本發(fā)明的實施例,可以禁止從該中央處理器外部存取所述指令數(shù)據(jù)。
[0026] 通過使用根據(jù)本發(fā)明的執(zhí)行隱秘操作的中央處理器及其操作方法,可以有效地隱 藏隱秘操作的細(xì)節(jié),防止應(yīng)用程序被逆向工程等方法分析造成技術(shù)秘密的泄露,同時可以 便捷地執(zhí)行隱秘操作。此外,可以利用自定義隱秘操作來限制軟件的執(zhí)行平臺。
[0027]通過使用根據(jù)本發(fā)明的執(zhí)行協(xié)處理器操作的中央處理器及其操作方法,可以高效 率地執(zhí)行協(xié)處理器操作而無需考慮操作系統(tǒng)的環(huán)境,從而減少了驅(qū)動程序的開發(fā)成本。進(jìn) 一步,還可以隱藏協(xié)處理器的操作的具體實現(xiàn)細(xì)節(jié),以防止因協(xié)處理器驅(qū)動程序被逆向工 程等方法分析造成技術(shù)秘密的泄露。
【附圖說明】
[0028]圖1A示出根據(jù)實施例的執(zhí)行隱秘操作的中央處理器的框圖;
[0029]圖1B示出根據(jù)將隱秘指令定義為新的自定義微碼指令的實施例的執(zhí)行隱秘操作 的中央處理器的框圖;
[0030] 圖2示出根據(jù)實施例的在中央處理器中執(zhí)行隱秘操作的方法的流程圖;
[0031] 圖3示出根據(jù)實施例的執(zhí)行協(xié)處理器操作的中央處理器的框圖;以及 [0032]圖4示出根據(jù)實施例的在中央處理器中執(zhí)行協(xié)處理器操作的方法的流程圖。
【具體實施方式】
[0033]下面參照附圖詳細(xì)描述根據(jù)本發(fā)明的示范性實施例。附圖中,將相同或類似的附 圖標(biāo)記賦予結(jié)構(gòu)以及功能基本相同的組成部分,并且為了使說明書更加簡明,省略了關(guān)于 基本上相同的組成部分的冗余描述。
[0034]圖1A示出根據(jù)實施例的執(zhí)行隱秘操作的中央處理器(CPU) 100的框圖。
[0035] 參照圖1A,CPU 100包括隱秘指令存儲器101、指令控制器102、和執(zhí)行單元103。
[0036]在隱秘指令存儲器101中預(yù)先存儲與隱秘操作相關(guān)的隱秘指令所對應(yīng)的指令數(shù) 據(jù)。為了防止指令數(shù)據(jù)泄露,禁止從CPU 100外部存取隱秘指令存儲器101。
[0037] 根據(jù)實施例,該隱秘指令可以是CPU 1 00的自定義微碼指令(mi crocode instruction)。需要指出的是,本說明書中的微碼(microcode)是指固化在CPU內(nèi)部的硬件 編碼,用于將指令集中的復(fù)雜長指令翻譯為CPU能夠執(zhí)行的微指令(或微操作或hops"),因 而有別于部分廠商(如,IBM)用于作為固件(firmware)的別稱的術(shù)語"微碼"。
[0038] 在CPU生產(chǎn)階段,將微碼作為硬件編碼固化在電路中。在CPU出廠之后,微碼就不能 被直接修改或替換;為了保證微碼執(zhí)行的靈活性,可以在出廠之后升級CPU微碼的功能。微 碼功能升級可以通過軟件方法寫入,寫入的代碼會被存儲到CPU的微碼補(bǔ)丁存儲器中。由 此,微碼在執(zhí)行過程中會查詢微碼補(bǔ)丁存儲器,如果執(zhí)行的代碼有被補(bǔ)丁更新過,則執(zhí)行微 碼補(bǔ)丁存儲器中的代碼,從而實現(xiàn)微碼功能升級的目標(biāo)?,F(xiàn)有技術(shù)的CPU微碼補(bǔ)丁僅限于對 已經(jīng)固化的微碼的修復(fù)和糾錯,而本發(fā)明一實施例系利用微碼補(bǔ)丁來擴(kuò)展CPU的新功能。
[0039] 根據(jù)實施例,隱秘指令存儲器101可以是CPU 100的微碼補(bǔ)丁存儲器或其中的一部 分,并利用微碼補(bǔ)丁來預(yù)先存儲或更新其中存儲的指令數(shù)據(jù)。即是說,當(dāng)一個應(yīng)用程序中有 一段操作需要隱秘時,則將該應(yīng)用程序中的該段隱秘操作所對應(yīng)的代碼用至少一個隱秘指 令代替,在將隱秘指令定義為新的自定義微碼指令的實施例中,通過微碼補(bǔ)丁的方式將該 隱秘指令所對應(yīng)的指令數(shù)據(jù)預(yù)先存儲或更新至隱秘指令存儲器101中。
[0040] 在執(zhí)行程序的過程中,指令控制器102根據(jù)當(dāng)前執(zhí)行的程序代碼中的隱秘指令,在 隱秘指令存儲器101中查找該隱秘指令所對應(yīng)的指令數(shù)據(jù),并根據(jù)找到的對應(yīng)的指令數(shù)據(jù) 將該隱秘指令翻譯為至少一個微操作,將所述微操作交給執(zhí)行單元103執(zhí)行。
[0041] 圖1B為根據(jù)將隱秘指令定義為新的自定義微碼指令的實施例的執(zhí)行隱秘操作的 中央處理器(CPU)IOO'的框圖。參照圖1B,CPU 100'除了包括隱秘指令存儲器101'、指令控 制器102'和執(zhí)行單元103'之外,還包括指令高速緩存(instruction cache) 104、指令譯碼 器(instruction decoder)105、寄存器別名表(Register Alias Table,RAT)106、保留站 (Reservation Station,RS) 107、和重排序緩沖器(Reorder Buffer,ROB) 108。這里,指令高 速緩存104高速緩存諸如x86指令集架構(gòu)等的指令集架構(gòu)的宏指令;指令譯碼器105從指令 高速緩存104中讀取宏指令,其中如果宏指令是簡單指令,則直接由指令譯碼器105翻譯為 微操作后送至CPU 100'的后端(包括寄存器別名表106、保留站107、重排序緩沖器108及執(zhí) 行單元103'等)執(zhí)行,如果宏指令是本發(fā)明的隱秘指令,則指令譯碼器105無法直接譯碼,于 是該隱秘指令被送至指令控制器102';指令控制器102'根據(jù)隱秘指令存儲器101'中預(yù)先以 微碼補(bǔ)丁形式存儲的該隱秘指令所對應(yīng)的指令數(shù)據(jù)將該隱秘指令翻譯為CHJ能夠執(zhí)行的至 少一個微操作,具體而言,根據(jù)該隱秘指令所包含的操作碼(例如"OF 3B")為索引在微碼補(bǔ) 丁中查找對應(yīng)的包括多個微操作的指令數(shù)據(jù),這些指令數(shù)據(jù)與原本在以軟件程序中以軟件 程序代碼實現(xiàn)的隱秘操作相關(guān),在本發(fā)明中,這些指令數(shù)據(jù)是在微碼補(bǔ)丁中以微碼語言實 現(xiàn),微碼的編寫語言不同于常規(guī)編程語言,本身破譯難度就高;然后,這些微操作被提供到 CPU 100'后端的寄存器別名表106,寄存器別名表106產(chǎn)生微操作的依賴性(dependency)并 按照程序次序向保留站107發(fā)送微操作,并向重排序緩沖器108發(fā)送微操作。重排序緩沖器 108為從寄存器別名表106發(fā)射的每個微操作分配條目(entry)以存儲對應(yīng)微操作的相關(guān)信 息。保留站107將微操作分派到多個執(zhí)行單元103'中合適的一個執(zhí)行。執(zhí)行單元103'將它們 的執(zhí)行結(jié)果提供到重排序緩沖器108,以確保微操作的按照程序中的次序退出(retire)。圖 1B是根據(jù)CPU 100'是亂序執(zhí)行的超標(biāo)量流水線CPU為例來說明,但本發(fā)明不限于此。
[0042]值得注意的是,當(dāng)一個應(yīng)用程序中有一段操作需要隱秘時,本發(fā)明的本實施例將 該應(yīng)用程序中的該段隱秘操作所對應(yīng)的代碼用至少一個隱秘指令代替,并通過微碼補(bǔ)丁的 方式將該隱秘指令所對應(yīng)的指令數(shù)據(jù)預(yù)先存儲或更新至隱秘指令存儲器101中。以X86架構(gòu) 體系為例,自定義指令的通用格式可以包括指令前綴、操作碼(Opcode)、操作數(shù)地址(ModR/ M)等字段,其中只有操作碼是必需的,其他字段都是可選的。本發(fā)明中的自定義微碼指令在 符合該格式的基礎(chǔ)上使用保密的操作碼以達(dá)到隱秘的目的,為了便于描述,本說明書中使 用的隱秘指令僅包括操作碼(Opcode),然而本發(fā)明不限于此。由于隱秘指令存儲器101禁止 從CPU外部存取,保證了隱秘操作的安全性,另外,由于應(yīng)用程序開發(fā)者在程序中需要執(zhí)行 該隱秘操作的地方添加該隱秘指令即可,而該隱秘指令只有當(dāng)前程序的開發(fā)者及CPU的制 造商知道其含義,而對于第三方而言是保密的,例如對于第三方而言,僅可見一未知的操作 碼,因此無法通過逆向工程的方式對應(yīng)用程序中的此指令進(jìn)行破譯,進(jìn)一步提高了安全性。 [0043]下面以一個變型國密算法SM3為例來說明如何實現(xiàn)隱秘指令的功能。
[0044]國密算法SM3的計算過程分成三步:填充、迭代壓縮、生成雜湊值。在迭代壓縮過程 中的壓縮函數(shù)如下面所示:
[0045] 令A(yù),B,C,D,E,F(xiàn),G,H為字寄存器,SS1,SS2,TT1,TT2為中間變量,壓縮函數(shù)V i+1 = CF (V⑴,Bw),0<i彡n-1。計算過程描述如下:
[0046] ABCDEFGH-V ⑴
[0047] F0Rj = 0T063
[0048] SSI -((A<<<12)+E+(Tj<<<j))<<<7
[0049] 狡沒汝幻 # (.4. H j}
[0050] TTl^FFj(A,B,C)+D+SS2+ff/ j
[0051] TT2-GGj(E,F(xiàn),G)+H+SSl+Wj
[0052] D-C
[0053] C-B<<<9
[0054] B-A
[0055] A-TT1
[0056] H<-G
[0057] G-F<<<19
[0058] F^E
[0059] E-Po(TT2)
[0060] ENDFOR
[0061 ] aB€^£F€M B Vix>
[0062]在某些應(yīng)用場景(如軍事上)中,加密算法往往要限定使用范圍,所以設(shè)計算法時 既想借鑒公開算法的技術(shù)特點,又想達(dá)到"隱藏式安全(security through obscurity)"的 目的。對于SM3算法來說,達(dá)到這一目的的方法之一就是將上述的壓縮算法進(jìn)行修改。以一 個簡單的修改方法為例:可以將該壓縮算法的計算過程中的第一行ABCDEFGH-V (i)修改為 HGFEDCBA-V⑴;將最后一行V(i+1)-ABCDEFGH ? V⑴修改為V(i+1)-HGFEDCBA ? V⑴,其他計 算過程不變。
[0063]為了隱藏上述變型SM3算法,可以設(shè)計一個二字節(jié)長度的隱秘指令:"OF 3B"。該指 令的操作碼(Opcode)為"OF 3B",其他字段全部不存在。在將隱秘指令定義為CPU 100的新 的自定義微碼指令的實施例中,通過微碼補(bǔ)丁將與上述變型SM3算法的操作對應(yīng)的指令數(shù) 據(jù),包括實現(xiàn)上述計算過程的微操作代碼,以微碼編程語言的形式寫入隱秘指令存儲器101 中。
[0064] 此外,可以定義該指令的參數(shù):例如CPU100的通用寄存器ECX(RCX)表示要做SM3計 算的數(shù)據(jù)長度,ESI (RSI)表示數(shù)據(jù)的起始地址,EDI (RDI)表示計算結(jié)果的存儲地址。當(dāng)要使 用該變型SM3算法時,程序開發(fā)者先定義好這些通用寄存器的值,再將"OF 3B"添加到程序 中合適的位置,即可使用上述的變型SM3算法。
[0065] 如果有人試圖通過逆向工程(如,反匯編技術(shù))來推測該變型SM3算法的執(zhí)行過程, 貝1J當(dāng)看到指令"OF 3B"時,無法猜出其行為,這就達(dá)到了隱藏"秘密算法/操作"的細(xì)節(jié)的目 的,實現(xiàn)了一種"隱藏式安全"。
[0066] 作為可選的實施例,當(dāng)指令控制器102未找到該隱秘指令所對應(yīng)的指令數(shù)據(jù)時,中 央處理器100可以終止當(dāng)前程序的執(zhí)行。該特性可以用于限制程序的執(zhí)行平臺。例如,可以 在程序中加入用于限定執(zhí)行平臺的隱秘指令,并僅在相應(yīng)的平臺(即,CPU)的隱秘指令存儲 器中存儲該隱秘指令的指令數(shù)據(jù)。從而,當(dāng)該程序在未存儲相應(yīng)的指令數(shù)據(jù)的平臺中執(zhí)行 時,當(dāng)執(zhí)行到該隱秘指令時,程序執(zhí)行將被終止,從而達(dá)到限制執(zhí)行平臺的效果。
[0067] 圖2示出根據(jù)實施例的在CPU中執(zhí)行隱秘操作的方法的流程圖。
[0068] 在步驟S200,與隱秘操作相關(guān)的隱秘指令所對應(yīng)的指令數(shù)據(jù)被預(yù)先存儲在CPU中, 而且禁止從CPU外部存取指令數(shù)據(jù)以免泄露關(guān)于隱秘操作的細(xì)節(jié)。例如,所述指令數(shù)據(jù)可以 是與上述國密算法SM3的操作相關(guān)的指令數(shù)據(jù)。
[0069] 如之前所述,該隱秘指令可以是CPU的自定義微碼指令。此外,可以利用微碼補(bǔ)丁 來預(yù)先存儲或更新指令數(shù)據(jù)。例如,在將隱秘指令定義為新的自定義微碼指令時,可以通過 微碼補(bǔ)丁將該隱秘指令所對應(yīng)的指令數(shù)據(jù)寫入CHJ中。
[0070] 在步驟S201,讀取當(dāng)前執(zhí)行的程序代碼中的一隱秘指令。例如,從圖1B中的指令高 速緩存104中讀取該隱秘指令。
[0071] 在步驟S202,在已存儲的指令數(shù)據(jù)中查找該隱秘指令所對應(yīng)的指令數(shù)據(jù)。
[0072]在步驟S203,確定是否找到對應(yīng)的指令數(shù)據(jù)。當(dāng)找到指令數(shù)據(jù)時,在步驟S204,根 據(jù)找到的對應(yīng)的指令數(shù)據(jù)將該隱秘指令翻譯為至少一個微操作。之后,在步驟S205,執(zhí)行所 述微操作。
[0073]可選地,當(dāng)未找到該隱秘指令所對應(yīng)的指令數(shù)據(jù)時,在步驟S206,CPU終止當(dāng)前程 序的執(zhí)行。如之前所述,該可選步驟可以達(dá)到限制程序執(zhí)行平臺的效果。
[0074]圖3示出根據(jù)實施例的執(zhí)行協(xié)處理器操作的CPU 300的框圖。
[0075] 參照圖3,CPU 300包括協(xié)處理器指令存儲器301、指令控制器302、執(zhí)行單元303和 協(xié)處理器接口 304。
[0076]協(xié)處理器指令存儲器301中預(yù)先存儲有與控制協(xié)處理器的操作相關(guān)的協(xié)處理器指 令所對應(yīng)的指令數(shù)據(jù)。
[0077]根據(jù)實施例,該協(xié)處理器指令可以是CPU 300的自定義微碼指令。
[0078]根據(jù)實施例,協(xié)處理器指令存儲器301可以是CPU 300的微碼補(bǔ)丁存儲器或其中的 一部分,并利用微碼補(bǔ)丁來預(yù)先存儲或更新其中存儲的指令數(shù)據(jù)。例如,在將協(xié)處理器指令 定義為新的自定義微碼指令的實施例中,可以通過微碼補(bǔ)丁的方式將該協(xié)處理器指令所對 應(yīng)的指令數(shù)據(jù)預(yù)先存儲協(xié)處理器指令存儲器301中。
[0079] 協(xié)處理器接口304是用于與協(xié)處理器(圖中未繪示)通信的接口。協(xié)處理器是獨立 于CPU 300之外的處理器,協(xié)助CPU 300執(zhí)行特定功能以減輕CPU 300的負(fù)荷。
[0080] 在執(zhí)行程序的過程中,指令控制器302如果接收到當(dāng)前執(zhí)行的程序代碼中的協(xié)處 理器指令,在協(xié)處理器指令存儲器301中查找該協(xié)處理器指令所對應(yīng)的指令數(shù)據(jù),并根據(jù)找 到的對應(yīng)指令數(shù)據(jù)將該協(xié)處理器指令翻譯為與協(xié)處理器接口 304相關(guān)的至少一個微操作, 將所述微操作交給執(zhí)行單元303執(zhí)行,以通過協(xié)處理器接口 304控制該協(xié)處理器的操作。
[0081] 根據(jù)實施例,該協(xié)處理器操作可以包括協(xié)處理器的初始化、讀、寫、控制、讀狀態(tài)中 的至少一個。在通過自定義微碼指令實現(xiàn)協(xié)處理器操作的實施例中,一種方法是為每一個 操作分別定義一個"自定義微碼指令",另一種方法是僅為協(xié)處理器操作定義一條"自定義 微碼指令",并使用不同的參數(shù)來區(qū)別不同的操作。
[0082] 下面舉例說明如何實現(xiàn)協(xié)處理器指令的功能。
[0083] 首先,可以采用上述第一種自定義微碼指令的方法,設(shè)計一個二字節(jié)長度的協(xié)處 理器指令:"OF 3C"。該指令的操作碼(Opcode)為"OF 3C",其他字段全部不存在。同時,當(dāng) CPU 300的通用寄存器(如,EAX或RAX)的值為0xl,0x2,0x3,0x4,0x5時分別對應(yīng)于協(xié)處理器 的"初始化"、"讀"、"寫"、"控制"、"讀狀態(tài)"操作。此外,還可以利用其他通用寄存器來傳遞 一些參數(shù),例如"讀"、"寫"操作中使用的緩沖區(qū)地址等。如上所述,可以通過微碼補(bǔ)丁將與 上述協(xié)處理器的操作相關(guān)的指令數(shù)據(jù)寫入?yún)f(xié)處理器指令存儲器301中。
[0084] 作為示例,協(xié)處理器接口 304可以連接到協(xié)處理器的四個寄存器接口:控制寄存 器、狀態(tài)寄存器、命令描述符地址寄存器。以及響應(yīng)描述符地址寄存器。從而,對這個協(xié)處理 器進(jìn)行的"初始化"、"讀"、"寫"、"控制"、"讀狀態(tài)"等操作都是通過按一定的順序讀寫這四 個寄存器來完成的。然而,上述僅僅是示例,本發(fā)明不限于此。
[0085] 當(dāng)CPU 300所在的計算機(jī)系統(tǒng)啟動中需要初始化協(xié)處理器時,可以在需調(diào)用協(xié)處 理器的應(yīng)用程序代碼中添加例如下面的以匯編語言序列(也可以是其他語言,本發(fā)明不限 于此)編寫的協(xié)處理器指令:
[0086] Movl$0xl, %eax
[0087] .byte 0x0f,0x3c
[0088] 上述協(xié)處理器指令將被指令控制器302翻譯為協(xié)處理器操作,從而執(zhí)行協(xié)處理器 的"初始化"(0x1)操作,返回狀態(tài)被保存在通用寄存器EAX中。當(dāng)然這里的通用寄存器EAX僅 為舉例,本發(fā)明不限于此。
[0089]當(dāng)應(yīng)用程序要傳輸數(shù)據(jù)給協(xié)處理器進(jìn)行處理時,可以在需調(diào)用協(xié)處理器的應(yīng)用程 序代碼中添加例如下面的以匯編語言序列編寫的協(xié)處理器指令:
[0090] Movl address,%edi//以指針寄存器EDI保存寫緩沖區(qū)地址為例
[0091] Movl$0x3, %eax
[0092] .byte 0x0f,0x3c
[0093] 上述協(xié)處理器指令將被指令控制器302翻譯為協(xié)處理器操作,從而執(zhí)行協(xié)處理器 的"寫"(0x3)操作,返回狀態(tài)被保存在通用寄存器EAX中,返回的處理結(jié)果(假如有的話)被 保存在指針寄存器(如EDI)指向的緩沖區(qū)中。當(dāng)然這里的通用寄存器EAX和指針寄存器EDI 僅為舉例,本發(fā)明不限于此。
[0094]當(dāng)應(yīng)用程序要從協(xié)處理器讀取數(shù)據(jù)時,可以在需調(diào)用協(xié)處理器的應(yīng)用程序代碼中 添加例如下面的以匯編語言序列編寫的協(xié)處理器指令:
[0095] Movl address,%esi//以指針寄存器ESI保存讀緩沖區(qū)地址為例
[0096] Movl$0x2, %eax
[0097] .byte 0x0f,0x3c
[0098] 上述協(xié)處理器指令將被指令控制器302翻譯為協(xié)處理器操作,從而執(zhí)行協(xié)處理器 的"讀"(0x2)操作,讀取的數(shù)據(jù)被保存在指針寄存器ESI指向的緩沖區(qū)中,返回狀態(tài)被保存 在通用寄存器EAX中。當(dāng)然這里的通用寄存器EAX和指針寄存器ESI僅為舉例,本發(fā)明不限于 此。
[0099] 根據(jù)實施例,可以禁止從CPU 300外部存取協(xié)處理器指令存儲器301,以防止協(xié)處 理器指令的指令數(shù)據(jù)被泄露。在一實施例中,該協(xié)處理器指令存儲器301可以是CPU 300的 微碼指令存儲器,也可以是獨立的另一指令存儲器。此外,通過協(xié)處理器接口 304在中央處 理器300與協(xié)處理器之間傳輸?shù)臄?shù)據(jù)可以被禁止存取。如果CPU 300與協(xié)處理器之間有物理 通道暴露在主板上,可以根據(jù)實際需要在物理通道上增加安全防護(hù)手段(如加密和散列值 驗證(HMAC)等)來保證物理通道的安全可靠。
[0100]本發(fā)明使用一條或幾條自定義的協(xié)處理器指令即能代替協(xié)處理器的驅(qū)動程序,凡 是使用這個協(xié)處理器的應(yīng)用程序直接調(diào)用協(xié)處理器指令就可以實現(xiàn)控制協(xié)處理器的操作。 此外,在協(xié)處理器指令以微碼指令實現(xiàn)的實施例中,由于微碼指令對應(yīng)用程序開發(fā)者及處 理器的制造商之外的第三方是保密的,且微碼指令所對應(yīng)的指令數(shù)據(jù)的編寫語言是非公開 的,因此這條協(xié)處理器指令的行為是很難被"猜測"到的,進(jìn)而也就提高了協(xié)處理器操作的 安全性。
[0101] 圖4示出根據(jù)實施例的在CPU中執(zhí)行協(xié)處理器操作的方法的流程圖。
[0102] 在步驟S400,與控制協(xié)處理器的操作相關(guān)的協(xié)處理器指令所對應(yīng)的指令數(shù)據(jù)被預(yù) 先存儲在CHJ中。例如,所述指令數(shù)據(jù)可以是與上面示例中的協(xié)處理器的"初始化"、"讀"、 "寫"、"控制"、"讀狀態(tài)"等操作中的每一個分別對應(yīng)的指令數(shù)據(jù)(第一種方法),或者可以是 與統(tǒng)一的協(xié)處理器操作(第二種方法)對應(yīng)的指令數(shù)據(jù),并通過寄存器值來區(qū)分具體的協(xié)處 理器操作。
[0103] 如之前所述,該協(xié)處理器指令可以是CPU的自定義微碼指令。此外,可以利用微碼 補(bǔ)丁來預(yù)先存儲或更新指令數(shù)據(jù)。例如,在將協(xié)處理器指令定義為新的自定義微碼指令的 實施例中,可以通過微碼補(bǔ)丁將該協(xié)處理器指令的指令數(shù)據(jù)寫入CPU中。
[0104] 在步驟S401,讀取當(dāng)前執(zhí)行的程序代碼中的一協(xié)處理器指令。
[0105] 在步驟S402,在已存儲的指令數(shù)據(jù)中查找該協(xié)處理器指令所對應(yīng)的指令數(shù)據(jù)。 [0106]在步驟S403,根據(jù)找到的對應(yīng)的指令數(shù)據(jù)將該協(xié)處理器指令翻譯為與協(xié)處理器接 口相關(guān)的至少一個微操作。之后,在步驟S404,執(zhí)行所述微操作以通過該協(xié)處理器接口控制 該協(xié)處理器的操作。
[0107] 根據(jù)實施例,如之前所述,可以禁止從CPU外部存取其中存儲的指令數(shù)據(jù)以免泄露 關(guān)于協(xié)處理器操作的細(xì)節(jié)。
[0108] 如上所述,已經(jīng)在上面具體地描述了本發(fā)明的各個實施例,但是本發(fā)明不限于此。 本領(lǐng)域的技術(shù)人員應(yīng)該理解,可以根據(jù)設(shè)計要求或其他因素進(jìn)行各種修改、組合、子組合或 者替換,而它們在所附權(quán)利要求書及其等效物的范圍內(nèi)。
【主權(quán)項】
1. 一種中央處理器,包括: 隱秘指令存儲器,用于預(yù)先存儲與隱秘操作相關(guān)的隱秘指令所對應(yīng)的指令數(shù)據(jù),其中 禁止從該中央處理器外部存取該隱秘指令存儲器; 指令控制器,用于根據(jù)當(dāng)前程序中的一隱秘指令,在該隱秘指令存儲器中查找該隱秘 指令所對應(yīng)的指令數(shù)據(jù),并根據(jù)該對應(yīng)的指令數(shù)據(jù)將該隱秘指令翻譯為至少一個微操作; 以及 執(zhí)行單元,用于執(zhí)行所述微操作。2. 如權(quán)利要求1所述的中央處理器,其中該隱秘指令為該中央處理器的自定義微碼指 令。3. 如權(quán)利要求1所述的中央處理器,其中該隱秘指令存儲器為該中央處理器的微碼補(bǔ) 丁存儲器的至少一部分,而且 其中利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。4. 如權(quán)利要求1所述的中央處理器,其中當(dāng)該指令控制器未找到該隱秘指令所對應(yīng)的 指令數(shù)據(jù)時,該中央處理器終止執(zhí)行該當(dāng)前程序。5. 如權(quán)利要求1所述的中央處理器,其中該當(dāng)前程序中的該隱秘指令對該當(dāng)前程序的 開發(fā)者及該中央處理器的制造商以外的第三方是保密的。6. -種在中央處理器中執(zhí)行隱秘操作的方法,包括: 在該中央處理器中預(yù)先存儲與該隱秘操作相關(guān)的隱秘指令所對應(yīng)的指令數(shù)據(jù),其中禁 止從該中央處理器外部存取所述指令數(shù)據(jù); 讀取當(dāng)前程序中的一隱秘指令; 在已存儲的指令數(shù)據(jù)中查找該隱秘指令所對應(yīng)的指令數(shù)據(jù); 根據(jù)該對應(yīng)的指令數(shù)據(jù)將該隱秘指令翻譯為至少一個微操作;以及 執(zhí)行所述微操作。7. 如權(quán)利要求6所述的方法,其中該隱秘指令為該中央處理器的自定義微碼指令。8. 如權(quán)利要求6所述的方法,其中利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。9. 如權(quán)利要求6所述的方法,進(jìn)一步包括: 當(dāng)未找到該隱秘指令所對應(yīng)的指令數(shù)據(jù)時,終止執(zhí)行該當(dāng)前程序。10. 如權(quán)利要求6所述的方法,其中該當(dāng)前程序中的該隱秘指令對該當(dāng)前程序的開發(fā)者 及該中央處理器的制造商以外的第三方是保密的。11. 一種中央處理器,包括: 協(xié)處理器指令存儲器,用于預(yù)先存儲與控制協(xié)處理器的操作相關(guān)的協(xié)處理器指令所對 應(yīng)的指令數(shù)據(jù); 協(xié)處理器接口,用于與該協(xié)處理器通信; 指令控制器,用于根據(jù)當(dāng)前程序中的一協(xié)處理器指令,在該協(xié)處理器指令存儲器中查 找該協(xié)處理器指令所對應(yīng)的指令數(shù)據(jù),并根據(jù)該對應(yīng)的指令數(shù)據(jù)將該協(xié)處理器指令翻譯為 與該協(xié)處理器接口相關(guān)的至少一個微操作;以及 執(zhí)行單元,用于執(zhí)行所述微操作以通過該協(xié)處理器接口控制該協(xié)處理器的操作。12. 如權(quán)利要求11所述的中央處理器,其中該協(xié)處理器指令為該中央處理器的自定義 微碼指令。13. 如權(quán)利要求11所述的中央處理器,其中該協(xié)處理器指令存儲器為該中央處理器的 微碼補(bǔ)丁存儲器的至少一部分,而且 其中利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。14. 如權(quán)利要求11所述的中央處理器,其中該協(xié)處理器的操作包括初始化、讀、寫、控 制、讀狀態(tài)中的至少一個。15. 如權(quán)利要求11所述的中央處理器,其中禁止從該中央處理器外部存取該協(xié)處理器 指令存儲器。16. -種在中央處理器中執(zhí)行協(xié)處理器操作的方法,包括: 在該中央處理器中預(yù)先存儲與控制協(xié)處理器的操作相關(guān)的協(xié)處理器指令所對應(yīng)的指 令數(shù)據(jù); 讀取當(dāng)前程序中的一協(xié)處理器指令; 在已存儲的指令數(shù)據(jù)中查找該協(xié)處理器指令所對應(yīng)的指令數(shù)據(jù); 根據(jù)該對應(yīng)的指令數(shù)據(jù)將該協(xié)處理器指令翻譯為與協(xié)處理器接口相關(guān)的至少一個微 操作;以及 執(zhí)行所述微操作以通過該協(xié)處理器接口控制該協(xié)處理器的操作。17. 如權(quán)利要求16所述的方法,其中該協(xié)處理器指令為該中央處理器的自定義微碼指 令。18. 如權(quán)利要求16所述的方法,其中利用微碼補(bǔ)丁來預(yù)先存儲或更新所述指令數(shù)據(jù)。19. 如權(quán)利要求16所述的方法,其中該協(xié)處理器的操作包括初始化、讀、寫、控制、讀狀 態(tài)中的至少一個。20. 如權(quán)利要求16所述的方法,其中禁止從該中央處理器外部存取所述指令數(shù)據(jù)。
【文檔編號】G06F9/30GK106055309SQ201610378308
【公開日】2016年10月26日
【申請日】2016年5月27日
【發(fā)明人】李凱, 沈昀, 黃振華
【申請人】上海兆芯集成電路有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1