亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令和邏輯的制作方法

文檔序號(hào):6542306閱讀:252來(lái)源:國(guó)知局
用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令和邏輯的制作方法
【專利摘要】本申請(qǐng)公開(kāi)了用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令和邏輯。指令和邏輯為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力。諸個(gè)實(shí)施例包括多個(gè)硬件線程或處理核心、高速緩存,該高速緩存用于存儲(chǔ)共享頁(yè)面地址的安全數(shù)據(jù),該共享頁(yè)面地址被分配給硬件線程可訪問(wèn)的安全飛地。解碼級(jí)解碼第一指令,并根據(jù)該共享頁(yè)面地址的飛地頁(yè)面高速緩存映射來(lái)標(biāo)記條目,以阻止為所述第一或第二硬件線程中的任一個(gè)創(chuàng)建用于訪問(wèn)該共享頁(yè)面的新轉(zhuǎn)換,該第一指令將所述共享頁(yè)面地址指定為操作數(shù)。解碼第二指令以供執(zhí)行,該第二指令將所述安全飛地指定為操作數(shù),并且執(zhí)行單元記錄當(dāng)前正在訪問(wèn)與安全飛地相對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù)據(jù)的硬件線程,并在任一硬件線程退出安全飛地時(shí)將所記錄的硬件線程的數(shù)量遞減。
【專利說(shuō)明】用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令和 邏輯

【技術(shù)領(lǐng)域】
[0001] 本公開(kāi)涉及處理邏輯、微處理器以及相關(guān)的指令集體系結(jié)構(gòu)的領(lǐng)域,這些指令集 體系結(jié)構(gòu)在被處理器或其他處理邏輯所執(zhí)行時(shí)運(yùn)行邏輯、數(shù)學(xué)或其他功能性操作。具體而 言,本公開(kāi)涉及用于為安全飛地頁(yè)面高速緩存(secureenclavepagecaches)提供高級(jí)分 頁(yè)能力的指令和邏輯。

【背景技術(shù)】
[0002] 用于支持諸如語(yǔ)音、視頻、事務(wù)以及私有數(shù)據(jù)之類(lèi)的新使用模型和服務(wù)的應(yīng)用和 高性能網(wǎng)絡(luò)在安全領(lǐng)域提出了新的挑戰(zhàn)。處于保密和完整性的目的而保護(hù)存儲(chǔ)器中的或在 傳輸途中的數(shù)據(jù)是重要的,但為了支持高速加密操作和維持對(duì)受保護(hù)的代碼和/或數(shù)據(jù)的 安全訪問(wèn)所需的存儲(chǔ)器,增加了復(fù)雜性最終增加了成本。
[0003] 已知的一種用于創(chuàng)建和維持安全、受保護(hù)或隔離的分區(qū)或環(huán)境的技術(shù)是建立飛地 (enclave)。飛地是信息和處理能力的集合,其可作為一組來(lái)保護(hù)。信息和處理能力可包括 網(wǎng)絡(luò)、主機(jī)或應(yīng)用。
[0004] 常用的用于處理數(shù)據(jù)和/或指令的技術(shù)是通過(guò)支持虛擬存儲(chǔ)器的高速緩存,例如 通過(guò)采用轉(zhuǎn)換后備緩沖器(TLB)在硬件中根據(jù)頁(yè)面表中存在的映射快速地進(jìn)行從線性地址 到物理存儲(chǔ)器地址的轉(zhuǎn)換。TLB中的條目可與一個(gè)或多個(gè)特定的處理器核心、硬件線程或邏 輯處理器相關(guān)聯(lián)。因此,可保護(hù)在高速緩存中訪問(wèn)的數(shù)據(jù)不被未經(jīng)授權(quán)的處理器核心、硬件 線程或邏輯處理器所訪問(wèn)。
[0005] 管理許可、物理存儲(chǔ)器和/或改變頁(yè)面表中的映射通常由操作系統(tǒng)(OS)來(lái)管理, 但當(dāng)存儲(chǔ)器內(nèi)容受保護(hù)時(shí)(例如在飛地中),OS可能未被許可或未被信任來(lái)訪問(wèn)實(shí)際受保護(hù) 的內(nèi)容,即飛地具有私有存儲(chǔ)器。因此,在不能信任OS的情況下,確保私有存儲(chǔ)器內(nèi)容的安 全性和/或完整性并管理有限量物理存儲(chǔ)器的技術(shù)限制提出了一系列獨(dú)特的安全性和性 能挑戰(zhàn)。
[0006] 迄今為止,解決這些挑戰(zhàn)的安全性解決方案以及對(duì)此類(lèi)性能限制問(wèn)題以及設(shè)計(jì)、 驗(yàn)證和其它復(fù)雜性的潛在解決方案尚未被充分探索。

【專利附圖】

【附圖說(shuō)明】
[0007] 在附圖的各圖中通過(guò)示例而非限制地示出本發(fā)明。
[0008] 圖IA是執(zhí)行用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的系統(tǒng)的一 個(gè)實(shí)施例的框圖。
[0009] 圖IB是執(zhí)行用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的系統(tǒng)的另 一實(shí)施例的框圖。
[0010] 圖IC是執(zhí)行用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的系統(tǒng)的另 一實(shí)施例的框圖。
[0011] 圖2是執(zhí)行用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的處理器的 一個(gè)實(shí)施例的框圖。
[0012] 圖3A示出根據(jù)一個(gè)實(shí)施例的打包數(shù)據(jù)類(lèi)型。
[0013] 圖3B示出根據(jù)一個(gè)實(shí)施例的打包數(shù)據(jù)類(lèi)型。
[0014] 圖3C示出根據(jù)一個(gè)實(shí)施例的打包數(shù)據(jù)類(lèi)型。
[0015] 圖3D示出根據(jù)一個(gè)實(shí)施例的用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的 指令編碼。
[0016] 圖3E示出根據(jù)另一實(shí)施例的用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的 指令編碼。
[0017] 圖3F示出根據(jù)另一實(shí)施例的用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的 指令編碼。
[0018] 圖3G示出根據(jù)另一實(shí)施例的用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的 指令編碼。
[0019] 圖3H示出根據(jù)另一實(shí)施例的用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的 指令編碼。
[0020] 圖4A示出用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的處理器 微體系結(jié)構(gòu)的一個(gè)實(shí)施例的要素。
[0021] 圖4B示出用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的處理器 微體系結(jié)構(gòu)的另一實(shí)施例的要素。
[0022] 圖5是用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的處理器的 一個(gè)實(shí)施例的框圖。
[0023] 圖6是用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的計(jì)算機(jī)系 統(tǒng)的一個(gè)實(shí)施例的框圖。
[0024] 圖7是用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的計(jì)算機(jī)系 統(tǒng)的另一實(shí)施例的框圖。
[0025] 圖8是用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的計(jì)算機(jī)系 統(tǒng)的另一實(shí)施例的框圖。
[0026] 圖9是用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的芯片上系 統(tǒng)的一個(gè)實(shí)施例的框圖。
[0027] 圖10是用于執(zhí)行為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的處理器的 實(shí)施例的框圖。
[0028] 圖11是為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的IP核開(kāi)發(fā)系統(tǒng)的一個(gè)實(shí)施 例的框圖。
[0029] 圖12示出為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的體系結(jié)構(gòu)仿真系統(tǒng)的一 個(gè)實(shí)施例。
[0030] 圖13示出用于轉(zhuǎn)換為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的系統(tǒng)的 一個(gè)實(shí)施例。
[0031] 圖14示出使用指令以向安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的處理系統(tǒng)的 一個(gè)實(shí)施例。
[0032] 圖15示出使用指令以向安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的處理器中的 裝置的實(shí)施例。
[0033] 圖16示出用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的過(guò)程的一個(gè)實(shí)施例 的流程圖。
[0034] 圖17示出用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的過(guò)程的替代實(shí)施例 的流程圖。
[0035] 圖18A示出用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的過(guò)程的另一實(shí)施 例的流程圖。
[0036] 圖18B示出用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的過(guò)程的另一實(shí)施 例的流程圖。

【具體實(shí)施方式】
[0037] 下文揭示了一種用于在處理器、計(jì)算機(jī)系統(tǒng)或其他處理設(shè)備中、或與處理器、計(jì)算 機(jī)系統(tǒng)或其他處理設(shè)備一起結(jié)合以為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令和 處理邏輯。
[0038] 在特殊高速緩存或僅保持私有或受保護(hù)數(shù)據(jù)的高速緩存(例如與飛地相關(guān)聯(lián))的 一部分中,對(duì)未加密的私有或受保護(hù)數(shù)據(jù)的訪問(wèn)可僅限于經(jīng)授權(quán)的處理器核心、硬件線程 或邏輯處理器。這樣的飛地私有存儲(chǔ)器可被稱為飛地頁(yè)面高速緩存(EPC)存儲(chǔ)器。
[0039] 如同其它物理存儲(chǔ)器一樣,通過(guò)按照需要將數(shù)據(jù)和/或代碼置入分頁(yè)和移出分 頁(yè),可使EPC支持更大的私有或受保護(hù)的地址空間。改變頁(yè)面的映射通常由OS管理,但在 飛地中,OS不一定有對(duì)飛地私有存儲(chǔ)器的內(nèi)容的訪問(wèn)權(quán)。
[0040] TLB中的條目與一個(gè)或多個(gè)特定處理器核心、硬件線程或邏輯處理器相關(guān)聯(lián),當(dāng)頁(yè) 面正在被移出至存儲(chǔ)器或非易失性存儲(chǔ)時(shí),一個(gè)或多個(gè)特定處理器核心、硬件線程或邏輯 處理器不應(yīng)當(dāng)被允許修改該頁(yè)面。因此,改變飛地的頁(yè)面的映射(即逐出頁(yè)面或加載該飛地 的新頁(yè)面)可能需要系統(tǒng)通過(guò)如下方式使訪問(wèn)飛地資源的該一個(gè)或多個(gè)處理器核心、硬件 線程或邏輯處理器"靜默":在EPC存儲(chǔ)器內(nèi)容被加密并寫(xiě)回、新頁(yè)面從存儲(chǔ)器被加載并解 密、TLB條目被轉(zhuǎn)儲(chǔ)存儲(chǔ)和替換等等的同時(shí),將訪問(wèn)飛地資源的該一個(gè)或多個(gè)處理器核心、 硬件線程或邏輯處理器置于臨時(shí)停用或禁止?fàn)顟B(tài),或使飛地中的任何應(yīng)用停止運(yùn)行??赡?需要硬件保護(hù)機(jī)制來(lái)保護(hù)EPC中的頁(yè)面,以在不能信任OS的情況下確保私有存儲(chǔ)器內(nèi)容的 安全性和/或完整性,并輔助管理有限量的物理私有存儲(chǔ)器。
[0041] 涉及安全飛地的一個(gè)示例方法在2012年6月19日提交的名稱為"Methodand ApparatustoProvideSecureApplicationExecution(用于提供安全應(yīng)用執(zhí)行的方法 和裝置)"的共同待審的美國(guó)專利申請(qǐng)S/N13/527, 547中有描述。
[0042] 每當(dāng)EPC存儲(chǔ)器中的頁(yè)面被逐出,它就需要利用EPC存儲(chǔ)器發(fā)信號(hào)通知所有處理 器核心或邏輯處理器,并且需要所有處理器核心或邏輯處理器退出飛地以替換頁(yè)面內(nèi)容、 轉(zhuǎn)儲(chǔ)存儲(chǔ)TLB條目或多個(gè)條目、等等。此外,在硬件中確保滿足這樣的要求以保護(hù)飛地隱私 性可涉及相當(dāng)程度的設(shè)計(jì)和驗(yàn)證復(fù)雜性。
[0043] 將理解,例如,如果在EPC存儲(chǔ)器內(nèi)容被加密并寫(xiě)回、新頁(yè)面從存儲(chǔ)器被加載并解 密、TLB條目被轉(zhuǎn)儲(chǔ)清除并替換等等場(chǎng)合下的分頁(yè)過(guò)程可被分拆成多個(gè)階段,其中在一個(gè)或 多個(gè)階段期間僅短暫地中斷處理器核心或邏輯處理器,則可減小由于分頁(yè)過(guò)程引起的性能 降級(jí)。
[0044] 本文中公開(kāi)了用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令和邏輯。一 些實(shí)施例包括多個(gè)硬件線程、邏輯處理器或處理核心、用于存儲(chǔ)用于共享頁(yè)面地址的安全 數(shù)據(jù)的高速緩存,該共享頁(yè)面地址被分配給安全飛地并可由硬件線程、邏輯處理器或處理 核心訪問(wèn)。解碼級(jí)解碼第一指令(例如下文更詳細(xì)討論的EBLOCK指令),該第一指令指定共 享頁(yè)面地址作為操作數(shù)。一個(gè)或多個(gè)執(zhí)行單元標(biāo)記與共享頁(yè)面地址的飛地頁(yè)面高速緩存映 射相對(duì)應(yīng)的條目,以阻止為所述多個(gè)硬件線程、邏輯處理器或處理核心創(chuàng)建用于訪問(wèn)該共 享頁(yè)面的新的TLB轉(zhuǎn)換。解碼第二指令(例如也在下文中詳細(xì)討論的ETRACK指令)以供執(zhí) 行,該第二指令指定所述安全飛地作為操作數(shù),并且一個(gè)或多個(gè)執(zhí)行單元記錄當(dāng)前正在訪 問(wèn)與安全飛地相對(duì)應(yīng)的該飛地頁(yè)面高速緩存中的安全數(shù)據(jù)的硬件線程。當(dāng)硬件線程中的任 一個(gè)退出安全飛地時(shí),遞減所記錄的硬件線程的數(shù)量。
[0045] 然后OS可將處理器間中斷(IPI)發(fā)送至當(dāng)前正在訪問(wèn)與安全飛地相對(duì)應(yīng)的飛地 頁(yè)面高速緩存中的安全數(shù)據(jù)的任何硬件線程、邏輯處理器或處理核心。當(dāng)硬件線程、邏輯處 理器或處理核心確收IPI并退出安全飛地時(shí),它們的TLB條目或多個(gè)TLB條目被轉(zhuǎn)儲(chǔ)清除, 并且所記錄的硬件線程的數(shù)量遞減。當(dāng)所記錄的硬件線程的數(shù)量達(dá)到零時(shí),可以安全地使 OS逐出頁(yè)面或多個(gè)頁(yè)面、對(duì)數(shù)據(jù)加密并將它們寫(xiě)回存儲(chǔ)器或非易失性存儲(chǔ)器。OS可使用第 三指令(例如也在下文中詳細(xì)討論的EWB指令)來(lái)完成逐出和寫(xiě)回。由于對(duì)安全數(shù)據(jù)的飛地 保護(hù)可能不能信任0S,所以如果所記錄的硬件線程的數(shù)量未達(dá)到零,則第三指令的一個(gè)實(shí) 施例可能失敗。在替代實(shí)施例中,第三指令可等待,直到所記錄的硬件線程的數(shù)量達(dá)到零才 執(zhí)行。
[0046] 將可理解,管理許可、物理存儲(chǔ)器和/或改變頁(yè)面表中的映射通常由操作系統(tǒng) (OS)來(lái)管理,但當(dāng)存儲(chǔ)器內(nèi)容受保護(hù)時(shí)(例如在飛地中),OS可能未被許可或未被信任來(lái)訪 問(wèn)實(shí)際受保護(hù)的內(nèi)容,因?yàn)轱w地具有私有存儲(chǔ)器。因此,利用為安全飛地頁(yè)面高速緩存提供 高級(jí)分頁(yè)能力的指令和處理邏輯,可在不能信任OS的情況下按照分級(jí)方式實(shí)現(xiàn)確保私有 存儲(chǔ)器內(nèi)容的安全性和/或完整性并且管理有限量物理存儲(chǔ)器的技術(shù)限制,無(wú)需精巧的硬 件支持和/或設(shè)計(jì)努力。
[0047] 在以下描述中,陳述了諸如處理邏輯、處理器類(lèi)型、微體系結(jié)構(gòu)條件、事件、啟用機(jī) 制等多種特定細(xì)節(jié),以提供對(duì)本發(fā)明實(shí)施例的更透徹理解。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)領(lǐng) 會(huì),沒(méi)有這些具體細(xì)節(jié)也可實(shí)踐本發(fā)明。此外,沒(méi)有詳細(xì)示出一些公知的結(jié)構(gòu)、電路等等,以 避免不必要地混淆本發(fā)明的實(shí)施例。
[0048] 雖然下述的諸個(gè)實(shí)施例參照處理器來(lái)描述,但其他實(shí)施例也適用于其他類(lèi)型的集 成電路和邏輯設(shè)備。本發(fā)明的實(shí)施例的類(lèi)似技術(shù)和教導(dǎo)可應(yīng)用于其它類(lèi)型的電路或半導(dǎo)體 器件,這些其它類(lèi)型的電路或半導(dǎo)體器件也可受益于更高的流水線吞吐量和提高的性能。 本發(fā)明的諸個(gè)實(shí)施例的教示適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機(jī)器。然而,本發(fā)明不限 于執(zhí)行512位、256位、128位、64位、32位、或16位數(shù)據(jù)運(yùn)算的處理器或機(jī)器,并適用于執(zhí)行 數(shù)據(jù)操作或管理的任何處理器和機(jī)器。此外,下述描述提供了示例,并且附圖出于示意性目 的示出了多個(gè)示例。然而,這些示例不應(yīng)該被理解為具有限制性目的,因?yàn)樗鼈儍H僅旨在提 供本發(fā)明的諸個(gè)實(shí)施例的示例,而并非對(duì)本發(fā)明的實(shí)施例的所有可能實(shí)現(xiàn)方式進(jìn)行窮舉。
[0049] 雖然下述的示例描述了在執(zhí)行單元和邏輯電路情況下的指令處理和分配,但本發(fā) 明的其他實(shí)施例也可通過(guò)存儲(chǔ)在機(jī)器可讀有形介質(zhì)上的數(shù)據(jù)和/或指令來(lái)完成,這些數(shù)據(jù) 和/或指令在被機(jī)器執(zhí)行時(shí)使得機(jī)器執(zhí)行與本發(fā)明至少一個(gè)實(shí)施例相一致的功能。在一個(gè) 實(shí)施例中,與本發(fā)明的實(shí)施例相關(guān)聯(lián)的功能被具體化在機(jī)器可執(zhí)行指令中。這些指令可用 來(lái)使通過(guò)這些指令編程的通用處理器或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā)明的諸個(gè)實(shí)施 例也可以作為計(jì)算機(jī)程序產(chǎn)品或軟件來(lái)提供,該計(jì)算機(jī)程序產(chǎn)品或軟件可包括其上存儲(chǔ)有 指令的機(jī)器或計(jì)算機(jī)可讀介質(zhì),這些指令可被用來(lái)對(duì)計(jì)算機(jī)(或其他電子設(shè)備)進(jìn)行編程來(lái) 執(zhí)行根據(jù)本發(fā)明的實(shí)施例的一個(gè)或多個(gè)操作。另選地,本發(fā)明的諸個(gè)實(shí)施例的這些步驟可 由包含用于執(zhí)行這些步驟的固定功能邏輯的專用硬件組件來(lái)執(zhí)行,或由經(jīng)編程的計(jì)算機(jī)組 件以及固定功能硬件組件的任何組合來(lái)執(zhí)行。
[0050] 被用于對(duì)邏輯進(jìn)行編程以執(zhí)行本發(fā)明的諸個(gè)實(shí)施例的指令可被存儲(chǔ)在系統(tǒng)中的 存儲(chǔ)器(諸如,DRAM、高速緩存、閃存、或其他存儲(chǔ)器)內(nèi)。進(jìn)一步的,指令可經(jīng)由網(wǎng)絡(luò)或其他 計(jì)算機(jī)可讀介質(zhì)來(lái)分發(fā)。因此,計(jì)算機(jī)可讀介質(zhì)可包括用于以機(jī)器(諸如,計(jì)算機(jī))可讀的格 式存儲(chǔ)或發(fā)送信息的任何機(jī)制,但不限于:磁盤(pán)、光盤(pán)、致密盤(pán)只讀存儲(chǔ)器(CD-ROM)、磁光 盤(pán)、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPR0M)、電可擦 除可編程只讀存儲(chǔ)器(EEPR0M)、磁卡或光卡、閃存、或在經(jīng)由互聯(lián)網(wǎng)通過(guò)電、光、聲、或其他 形式的傳播信號(hào)(諸如,載波、紅外信號(hào)、數(shù)字信號(hào)等)發(fā)送信息中所用的有形機(jī)器可讀存儲(chǔ) 器。因此,計(jì)算機(jī)可讀介質(zhì)包括用于存儲(chǔ)或發(fā)送機(jī)器(例如,計(jì)算機(jī))可讀形式的電子指令或 信息的任何類(lèi)型的有形機(jī)器可讀介質(zhì)。
[0051] 設(shè)計(jì)會(huì)經(jīng)歷多個(gè)階段,從創(chuàng)新到仿真到制造。表示設(shè)計(jì)的數(shù)據(jù)可用多種方式來(lái)表 示該設(shè)計(jì)。首先,如仿真中將有用的,可使用硬件描述語(yǔ)言或其他功能性描述語(yǔ)言來(lái)表示硬 件。此外,可在設(shè)計(jì)過(guò)程的某些階段產(chǎn)生具有邏輯和/或晶體管門(mén)電路的電路級(jí)模型。此 夕卜,大多數(shù)設(shè)計(jì)在某些階段都達(dá)到表示硬件模型中多種設(shè)備的物理布置的數(shù)據(jù)水平。在使 用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是指定在用于制造集成電路的 掩模的不同掩模層上存在或不存在各種各樣特征的數(shù)據(jù)。在任何的設(shè)計(jì)表示中,數(shù)據(jù)可被 存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。存儲(chǔ)器或磁/光存儲(chǔ)器(諸如,盤(pán))可以是存儲(chǔ)信息的 機(jī)器可讀介質(zhì),這些信息是經(jīng)由光學(xué)或電學(xué)波來(lái)發(fā)送的,這些光學(xué)或電學(xué)波被調(diào)制或以其 他方式生成以傳送這些信息。當(dāng)發(fā)送指示或承載代碼或設(shè)計(jì)的電學(xué)載波達(dá)到實(shí)現(xiàn)電信號(hào)的 復(fù)制、緩沖或重新發(fā)送的程度時(shí),即產(chǎn)生了新的副本。因此,通信提供商或網(wǎng)絡(luò)提供商會(huì)在 有形機(jī)器可讀介質(zhì)上至少臨時(shí)地存儲(chǔ)具體化本發(fā)明的諸個(gè)實(shí)施例的技術(shù)的物品(諸如,編 碼在載波中的信息)。
[0052] 在現(xiàn)代處理器中,多個(gè)不同執(zhí)行單元被用于處理和執(zhí)行多種代碼和指令。并不是 所有指令都被同等地創(chuàng)建,因?yàn)槠渲杏幸恍└斓乇煌瓿啥硪恍┬枰鄠€(gè)時(shí)鐘周期來(lái)完 成。指令的吞吐量越快,則處理器的總體性能越好。因此,使大量指令盡可能快地執(zhí)行將會(huì) 是有利的。然而,某些指令具有更大的復(fù)雜度,并需要更多的執(zhí)行時(shí)間和處理器資源。例如, 存在浮點(diǎn)指令、加載/存儲(chǔ)操作、數(shù)據(jù)移動(dòng)等等。
[0053] 因?yàn)楦嗟挠?jì)算機(jī)系統(tǒng)被用于互聯(lián)網(wǎng)、文本以及多媒體應(yīng)用,所以逐漸地引進(jìn)更 多的處理器支持。在一個(gè)實(shí)施例中,指令集可與一個(gè)或多個(gè)計(jì)算機(jī)體系結(jié)構(gòu)相關(guān)聯(lián),一個(gè)或 多個(gè)計(jì)算機(jī)體系結(jié)構(gòu)包括數(shù)據(jù)類(lèi)型、指令、寄存器體系結(jié)構(gòu)、尋址模式、存儲(chǔ)器體系結(jié)構(gòu)、中 斷和例外處理、外部輸入輸出(I/O)。
[0054] 在一個(gè)實(shí)施例中,指令集體系結(jié)構(gòu)(ISA)可由一個(gè)或更多微體系結(jié)構(gòu)來(lái)執(zhí)行,微體 系結(jié)構(gòu)包括用于實(shí)現(xiàn)一個(gè)或多個(gè)指令集的處理器邏輯和電路。因此,具有不同微體系結(jié)構(gòu) 的諸個(gè)處理器可共享公共指令集的至少一部分。例如,INTEL?奔騰四(Pentium4)處理 器、丨ntel?酷睿(Core?)處理器、以及來(lái)自加利福尼亞州桑尼威爾(Sunnyvale)的超微半 導(dǎo)體有限公司(AdvancedMicroDevices,Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指 令集(在更新的版本中加入了一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計(jì)。類(lèi)似地,由其他處理器開(kāi) 發(fā)公司(諸如,ARM控股有限公司、MIPS或它們的授權(quán)方或兼容方)所設(shè)計(jì)的諸多處理器可 共享至少一部分公共指令集,但可包括不同的處理器設(shè)計(jì)。例如,ISA的相同寄存器體系結(jié) 構(gòu)在不同的微體系結(jié)構(gòu)中可使用新的或已知的技術(shù)以不同方法來(lái)實(shí)現(xiàn),包括專用物理寄存 器、使用寄存器重命名機(jī)制(諸如,使用寄存器別名表RAT、重排序緩沖器R0B、以及隱退寄 存器文件)的一個(gè)或多個(gè)動(dòng)態(tài)分配物理寄存器。在一個(gè)實(shí)施例中,寄存器可包括:可由軟件 編程者尋址或不可尋址的一個(gè)或多個(gè)寄存器、寄存器體系結(jié)構(gòu)、寄存器文件、或其他寄存器 集合。
[0055] 在一個(gè)實(shí)施例中,指令可包括一個(gè)或多個(gè)指令格式。在一個(gè)實(shí)施例中,指令格式可 指示多個(gè)字段(位的數(shù)目、位的位置等)以特別指定將要被執(zhí)行的操作以及將要被執(zhí)行的操 作的操作數(shù)。一些指令格式可進(jìn)一步被指令模板(或子格式)所細(xì)分定義。例如,給定指令 格式的指令模板可被定義為具有指令格式字段的不同的子集,和/或被定義為具有不同解 釋的給定字段。在一個(gè)實(shí)施例中,使用指令格式(并且,如果定義過(guò),則以該指令格式的一個(gè) 給定指令模板)來(lái)表示指令,并且該指令指定或指示操作以及該操作將操作的操作數(shù)。
[0056] 科學(xué)應(yīng)用、金融應(yīng)用、自動(dòng)向量化通用應(yīng)用、RMS(識(shí)別、挖掘和合成)應(yīng)用以及視 覺(jué)和多媒體應(yīng)用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語(yǔ)音識(shí)別算法和音頻處 理)可能需要對(duì)大量數(shù)據(jù)項(xiàng)執(zhí)行相同的操作。在一個(gè)實(shí)施例中,單指令多數(shù)據(jù)(SMD)指的 是使得處理器在多個(gè)數(shù)據(jù)元素上執(zhí)行一操作的一種類(lèi)型的指令。SMD技術(shù)可被用于處理器 中,這些處理器將寄存器中的諸個(gè)位(bit)邏輯地劃分入多個(gè)固定大小或可變大小的數(shù)據(jù) 元素,每個(gè)數(shù)據(jù)元素表示單獨(dú)的值。例如,在一個(gè)實(shí)施例中,64位寄存器中的諸個(gè)位可被組 織為包含四個(gè)單獨(dú)的16位數(shù)據(jù)元素的源操作數(shù),每個(gè)數(shù)據(jù)元素表示單獨(dú)的16位值。該數(shù) 據(jù)類(lèi)型可被稱為"打包"數(shù)據(jù)類(lèi)型或"向量"數(shù)據(jù)類(lèi)型,并且該數(shù)據(jù)類(lèi)型的操作數(shù)被稱為打包 數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個(gè)實(shí)施例中,打包數(shù)據(jù)項(xiàng)或向量可以是存儲(chǔ)在單個(gè)寄存器 中的打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)可以是SMD指令(或"打包 數(shù)據(jù)指令"或"向量指令")的源操作數(shù)或目的地操作數(shù)。在一個(gè)實(shí)施例中,SIMD指令指定 了將要被執(zhí)行在兩個(gè)源向量操作數(shù)上的單個(gè)向量操作,以生成具有相同或不同大小的、具 有相同或不同數(shù)量的數(shù)據(jù)元素的、具有相同或不同數(shù)據(jù)元素次序的目的地向量操作數(shù)(也 被稱為結(jié)果向量操作數(shù))。
[0057] 諸如由InteKfe酷睿(Core?)處理器(具有包括x86、MMX?、流SMD擴(kuò)展(SSE)、 SSE2、SSE3、SSE4. 1、SSE4. 2指令的指令集)、ARM處理器(諸如,ARMCortex?處理器族,具 有包括向量浮點(diǎn)(VFP)和/或NEON指令的指令集)、MIPS處理器(諸如,中國(guó)科學(xué)院計(jì)算機(jī) 技術(shù)研宄所(ICT)開(kāi)發(fā)的龍芯處理器族)所使用的SMD技術(shù)之類(lèi)的SMD技術(shù)在應(yīng)用性能 上帶來(lái)了極大的提高(Core?和MMX?是加利福尼亞州圣克拉拉市的英特爾公司的注冊(cè)商標(biāo) 或商標(biāo))。
[0058] 在一個(gè)實(shí)施例中,目的地寄存器/數(shù)據(jù)和源寄存器/數(shù)據(jù)是表示對(duì)應(yīng)數(shù)據(jù)或操作 的源和目的地的通用術(shù)語(yǔ)。在一些實(shí)施例中,它們可由寄存器、存儲(chǔ)器或具有與所示出的那 些名稱或功能不同的名稱或功能的其他存儲(chǔ)區(qū)域所實(shí)現(xiàn)。例如,在一個(gè)實(shí)施例中,"DEST1" 可以是臨時(shí)存儲(chǔ)寄存器或其他存儲(chǔ)區(qū)域,而"SRC1"和"SRC2"是第一和第二源存儲(chǔ)寄存器 或其他存儲(chǔ)區(qū)域,等等。在其他實(shí)施例中,SRC和DEST存儲(chǔ)區(qū)域中的兩個(gè)或更多區(qū)域可對(duì) 應(yīng)于相同存儲(chǔ)區(qū)域中的不同數(shù)據(jù)存儲(chǔ)元素(例如,SIMD寄存器)。在一個(gè)實(shí)施例中,例如通 過(guò)將對(duì)第一和第二源數(shù)據(jù)執(zhí)行的操作的結(jié)果寫(xiě)回至兩個(gè)源寄存器中作為目的地寄存器的 那個(gè)寄存器,源寄存器中的一個(gè)也可以作為目的地寄存器。
[0059]圖IA是根據(jù)本發(fā)明的一個(gè)實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)的框圖,該計(jì)算機(jī)系統(tǒng)被 形成為具有包括執(zhí)行單元以執(zhí)行指令的處理器。根據(jù)本發(fā)明,諸如根據(jù)在此所描述的實(shí) 施例,系統(tǒng)100包括諸如處理器102之類(lèi)的組件,以采用包括邏輯的執(zhí)行單元來(lái)執(zhí)行算法 以處理數(shù)據(jù)。系統(tǒng)100代表基于可從美國(guó)加利福尼亞州圣克拉拉市的英特爾公司獲得的 PENTIUM?ΠΙ、PENTIUM?4、XeontD1、Itanium?、XScaletn'和 / 或StrongARMtni微處理 器的處理系統(tǒng),不過(guò)也可使用其它系統(tǒng)(包括具有其它微處理器的PC、工程工作站、機(jī)頂盒 等)。在一個(gè)實(shí)施例中,樣本系統(tǒng)100可執(zhí)行可從美國(guó)華盛頓州雷蒙德市的微軟公司買(mǎi)到的 WINDOWStm操作系統(tǒng)的一個(gè)版本,不過(guò)也可使用其它操作系統(tǒng)(例如UNIX和Linux)、嵌入式 軟件、和/或圖形用戶界面。因此,本發(fā)明的各實(shí)施例不限于硬件和軟件的任何具體組合。
[0060] 實(shí)施例不限于計(jì)算機(jī)系統(tǒng)。本發(fā)明的替換實(shí)施例可被用于其他設(shè)備,諸如手持式 設(shè)備和嵌入式應(yīng)用。手持設(shè)備的一些示例包括蜂窩電話、網(wǎng)際協(xié)議設(shè)備、數(shù)碼相機(jī)、個(gè)人數(shù) 字助理(PDA)以及手持PC。嵌入式應(yīng)用可包括:微控制器、數(shù)字信號(hào)處理器(DSP)、芯片上 系統(tǒng)、網(wǎng)絡(luò)計(jì)算機(jī)(NetPC)、機(jī)頂盒、網(wǎng)絡(luò)中樞、廣域網(wǎng)(WAN)交換機(jī)、或可執(zhí)行根據(jù)至少一 個(gè)實(shí)施例的一個(gè)或多個(gè)指令的任何其他系統(tǒng)。
[0061] 圖IA是計(jì)算機(jī)系統(tǒng)100的框圖,計(jì)算機(jī)系統(tǒng)100被形成為具有處理器102,處理 器102包括一個(gè)或多個(gè)執(zhí)行單元108以執(zhí)行算法,以執(zhí)行根據(jù)本發(fā)明的一個(gè)實(shí)施例的至少 一個(gè)指令。參照單處理器桌面或服務(wù)器系統(tǒng)來(lái)描述了一個(gè)實(shí)施例,但替代實(shí)施例可被包括 在多處理器系統(tǒng)中。系統(tǒng)100是"中樞"系統(tǒng)體系結(jié)構(gòu)的示例。計(jì)算機(jī)系統(tǒng)100包括處理 器102以處理數(shù)據(jù)信號(hào)。處理器102可以是復(fù)雜指令集計(jì)算機(jī)(CISC)微處理器、精簡(jiǎn)指令 集計(jì)算(RISC)微處理器、超長(zhǎng)指令字(VLIW)微處理器、實(shí)現(xiàn)指令集組合的處理器或任意其 它處理器設(shè)備(諸如數(shù)字信號(hào)處理器)。處理器102耦合至處理器總線110,處理器總線110 可在處理器102和系統(tǒng)100內(nèi)的其他組件之間傳輸數(shù)據(jù)信號(hào)。系統(tǒng)100的諸個(gè)元素執(zhí)行本 領(lǐng)域所熟知的常規(guī)功能。
[0062] 在一個(gè)實(shí)施例中,處理器102包括第一級(jí)(LI)內(nèi)部高速緩存存儲(chǔ)器104。取決于 體系結(jié)構(gòu),處理器102可具有單個(gè)內(nèi)部高速緩存或多級(jí)內(nèi)部高速緩存。或者,在另一個(gè)實(shí)施 例中,高速緩存存儲(chǔ)器可位于處理器102的外部。其他實(shí)施例也可包括內(nèi)部高速緩存和外 部高速緩存的組合,這取決于特定實(shí)現(xiàn)和需求。寄存器文件106可在多個(gè)寄存器(包括整數(shù) 寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器、指令指針寄存器)中存儲(chǔ)不同類(lèi)型的數(shù)據(jù)。
[0063] 執(zhí)行單元108(包括執(zhí)行整數(shù)和浮點(diǎn)操作的邏輯)也位于處理器102中。處理器 102還包括微代碼(UC〇de)ROM,其存儲(chǔ)用于特定宏指令的微代碼。對(duì)于一個(gè)實(shí)施例,執(zhí)行單 元108包括處理打包指令集109的邏輯。通過(guò)將打包指令集109包括在通用處理器102的 指令集內(nèi)并包括相關(guān)的電路以執(zhí)行這些指令,可使用通用處理器102中的打包數(shù)據(jù)來(lái)執(zhí)行 許多多媒體應(yīng)用所使用的操作。因此,通過(guò)將處理器數(shù)據(jù)總線的全帶寬用于對(duì)打包數(shù)據(jù)進(jìn) 行操作,許多多媒體應(yīng)用可獲得加速,并更為有效率地執(zhí)行。這能減少在處理器數(shù)據(jù)總線上 傳輸更小數(shù)據(jù)單元以在一個(gè)時(shí)間對(duì)一個(gè)數(shù)據(jù)元素執(zhí)行一個(gè)或多個(gè)操作的需要。
[0064] 執(zhí)行單元108的替換實(shí)施例也可被用于微控制器、嵌入式處理器、圖形設(shè)備、DSP 以及其他類(lèi)型的邏輯電路。系統(tǒng)100包括存儲(chǔ)器120。存儲(chǔ)器設(shè)備120可以是動(dòng)態(tài)隨機(jī)存 取存儲(chǔ)器(DRAM)設(shè)備、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)設(shè)備、閃存設(shè)備或其他存儲(chǔ)器設(shè)備。存 儲(chǔ)器120可存儲(chǔ)可由處理器102執(zhí)行的指令和/或數(shù)據(jù),數(shù)據(jù)由數(shù)據(jù)信號(hào)表示。
[0065] 系統(tǒng)邏輯芯片116耦合至處理器總線110和存儲(chǔ)器120。在所示出的實(shí)施例中的系 統(tǒng)邏輯芯片116是存儲(chǔ)器控制器中樞(MCH)。處理器102可經(jīng)由處理器總線110與MCH116 通信。MCH116提供至存儲(chǔ)器120的高帶寬存儲(chǔ)器路徑118,用于指令和數(shù)據(jù)存儲(chǔ),以及用于 存儲(chǔ)圖形命令、數(shù)據(jù)和文本。MCH116用于引導(dǎo)處理器102、存儲(chǔ)器120以及系統(tǒng)100內(nèi)的其 他組件之間的數(shù)據(jù)信號(hào),并在處理器總線110、存儲(chǔ)器120和系統(tǒng)1/0122之間橋接數(shù)據(jù)信 號(hào)。在一些實(shí)施例中,系統(tǒng)邏輯芯片116可提供耦合至圖形控制器112的圖形端口。MCH116 經(jīng)由存儲(chǔ)器接口 118耦合至存儲(chǔ)器120。圖形卡112通過(guò)加速圖形端口(AGP)互連114耦 合至MCHl16。
[0066] 系統(tǒng)100使用外圍設(shè)備中樞接口總線122以將MCH116耦合至I/O控制器中樞 (100 130。ICH130經(jīng)由本地I/O總線向一些I/O設(shè)備提供直接連接。本地I/O總線是高 速I(mǎi)/O總線,用于將外圍設(shè)備連接至存儲(chǔ)器120、芯片組以及處理器102。一些示例是音頻 控制器、固件中樞(閃存BIOS) 128、無(wú)線收發(fā)機(jī)126、數(shù)據(jù)存儲(chǔ)器124、包括用戶輸入和鍵盤(pán) 接口的傳統(tǒng)I/O控制器、串行擴(kuò)展端口(諸如通用串行總線USB)以及網(wǎng)絡(luò)控制器134。數(shù)據(jù) 存儲(chǔ)設(shè)備124可以包括硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)驅(qū)動(dòng)器、CD-ROM設(shè)備、閃存設(shè)備、或其他大容量存 儲(chǔ)設(shè)備。
[0067] 對(duì)于系統(tǒng)的另一個(gè)實(shí)施例,根據(jù)一個(gè)實(shí)施例的指令可被用于芯片上系統(tǒng)。芯片上 系統(tǒng)的一個(gè)實(shí)施例包括處理器和存儲(chǔ)器。用于這樣一個(gè)系統(tǒng)的存儲(chǔ)器是閃存存儲(chǔ)器。閃存 存儲(chǔ)器可位于與處理器和其他系統(tǒng)組件相同的管芯上。此外,諸如存儲(chǔ)器控制器或圖形控 制器之類(lèi)的其他邏輯塊也可位于芯片上系統(tǒng)上。
[0068] 圖IB示出數(shù)據(jù)處理系統(tǒng)140,數(shù)據(jù)處理系統(tǒng)140實(shí)現(xiàn)本發(fā)明的一個(gè)實(shí)施例的原理。 本領(lǐng)域的技術(shù)人員將容易理解,在此描述的諸個(gè)實(shí)施例可用于替代處理系統(tǒng),而不背離本 發(fā)明的實(shí)施例的范圍。
[0069] 計(jì)算機(jī)系統(tǒng)140包括處理核心159,處理核心159能執(zhí)行根據(jù)一個(gè)實(shí)施例的至少一 個(gè)指令。對(duì)于一個(gè)實(shí)施例,處理核心159表示任何類(lèi)型的體系結(jié)構(gòu)的處理單元,包括但不限 于:CISC、RISC或VLIW類(lèi)型體系結(jié)構(gòu)、處理核心159也可適于以一種或多種處理技術(shù)來(lái)制 造,并且通過(guò)充分詳細(xì)地表示在機(jī)器可讀介質(zhì)上可以便于其制造。
[0070] 處理核心159包括執(zhí)行單元142、一組寄存器文件145以及解碼器144。處理核心 159也包括對(duì)于理解本發(fā)明的實(shí)施例不是必需的額外電路(沒(méi)有示出)。執(zhí)行單元142用于 執(zhí)行處理核心159所接收到的指令。除了執(zhí)行典型的處理器指令外,執(zhí)行單元142也執(zhí)行 打包指令集143中的指令,用于對(duì)打包數(shù)據(jù)格式執(zhí)行操作。打包指令集143包括用于執(zhí)行 本發(fā)明的諸個(gè)實(shí)施例的指令以及其他打包指令。執(zhí)行單元142通過(guò)內(nèi)部總線耦合至寄存器 文件145。寄存器文件145表示處理核心159上的存儲(chǔ)區(qū)域,用于存儲(chǔ)包括數(shù)據(jù)的信息。如 前所述的,可以理解,該存儲(chǔ)區(qū)域被用于存儲(chǔ)打包數(shù)據(jù)不是關(guān)鍵。執(zhí)行單元142耦合至解碼 器144。解碼器144用于將處理核心159所接收到的指令解碼為控制信號(hào)和/或微代碼進(jìn) 入點(diǎn)。響應(yīng)于這些控制信號(hào)和/或微代碼進(jìn)入點(diǎn),執(zhí)行單元142執(zhí)行合適的操作。在一個(gè) 實(shí)施例中,解碼器用于解釋指令的操作碼,操作碼指示應(yīng)當(dāng)對(duì)該指令內(nèi)所指示的對(duì)應(yīng)數(shù)據(jù) 執(zhí)行何種操作。
[0071] 處理核心159耦合至總線141,用于與多個(gè)其他系統(tǒng)設(shè)備進(jìn)行通信,這些系統(tǒng)設(shè)備 包括但不限于:例如,同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(SDRAM)控制器146、靜態(tài)隨機(jī)存取存儲(chǔ)器 (SRAM)控制器147、猝發(fā)閃存接口 148、個(gè)人計(jì)算機(jī)存儲(chǔ)卡國(guó)際協(xié)會(huì)(PCMCIA)/致密閃存 (CF)卡控制器149、液晶顯示器(IXD)控制器150、直接存儲(chǔ)器存?。―MA)控制器151、以及 替代的總線主接口 152。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)140也包括I/O橋154,用于經(jīng)由 I/O總線153與多個(gè)I/O設(shè)備進(jìn)行通信。這樣的I/O設(shè)備可包括但不限于:例如,通用異步 接收機(jī)/發(fā)射機(jī)(UART) 155、通用串行總線(USB) 156、藍(lán)牙無(wú)線UART157、以及I/O擴(kuò)展接 P158〇
[0072] 數(shù)據(jù)處理系統(tǒng)140的一個(gè)實(shí)施例提供了移動(dòng)通信、網(wǎng)絡(luò)通信和/或無(wú)線通信,并提 供了能夠執(zhí)行SMD操作的處理核心159,SMD操作包括文本串比較操作。處理核心159可 編程有多種音頻、視頻、圖像和通信算法,包括離散變換(諸如Walsh-Hadamard變換、快速 傅立葉變換(FFT)、離散余弦變換(DCT)、以及它們相應(yīng)的逆變換)、壓縮/解壓縮技術(shù)(諸如 色彩空間變換)、視頻編碼運(yùn)動(dòng)估計(jì)或視頻解碼運(yùn)動(dòng)補(bǔ)償、以及調(diào)制/解調(diào)(MODEM)功能(諸 如脈沖編碼調(diào)制PCM)。
[0073] 圖IC示出了能夠執(zhí)行用于為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令的 數(shù)據(jù)處理系統(tǒng)的另一替換實(shí)施例。根據(jù)一個(gè)替代實(shí)施例,數(shù)據(jù)處理系統(tǒng)160可包括主處理 器166、SMD協(xié)處理器161、高速緩存處理器167以及輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng) 168可選地耦合至無(wú)線接口 169。SMD協(xié)處理器161能夠執(zhí)行包括根據(jù)一個(gè)實(shí)施例的指令 的操作。處理核心170可適于以一種或多種處理技術(shù)來(lái)制造,并且通過(guò)充分詳細(xì)地表示在 機(jī)器可讀介質(zhì)上可以便于包括處理核心170的數(shù)據(jù)處理系統(tǒng)160的全部或一部分的制造。
[0074] 對(duì)于一個(gè)實(shí)施例,SMD協(xié)處理器161包括執(zhí)行單元162以及一組寄存器文件164。 主處理器166的一個(gè)實(shí)施例包括解碼器165,用于識(shí)別指令集163的指令,指令集163包括 根據(jù)一個(gè)實(shí)施例的用于由執(zhí)行單元162所執(zhí)行的指令。對(duì)于替換實(shí)施例,SMD協(xié)處理器161 也包括解碼器165B的至少一部分以解碼指令集163的指令。處理核心170也包括對(duì)于理 解本發(fā)明的實(shí)施例不是必需的額外電路(沒(méi)有示出)。
[0075] 在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,數(shù)據(jù)處理指令流控制通用類(lèi)型的 數(shù)據(jù)處理操作,包括與高速緩存存儲(chǔ)器167以及輸入/輸入系統(tǒng)168的交互。SMD協(xié)處理 器指令嵌入數(shù)據(jù)處理指令流中。主處理器166的解碼器165將這些SMD協(xié)處理器指令識(shí)別 為可由附連的SMD協(xié)處理器161來(lái)執(zhí)行的類(lèi)型。因此,主處理器166在協(xié)處理器總線171 上發(fā)出這些SMD協(xié)處理器指令(或表示SMD協(xié)處理器指令的控制信號(hào)),任何附連的SMD 協(xié)處理器從協(xié)處理器總線171接收到這些指令。在該情況中,SMD協(xié)處理器161將接受并 執(zhí)行任何接收到的針對(duì)該SMD協(xié)處理器的SMD協(xié)處理器指令。
[0076] 可經(jīng)由無(wú)線接口 169接收數(shù)據(jù)以通過(guò)SMD協(xié)處理器指令進(jìn)行處理。對(duì)于一個(gè)示 例,語(yǔ)音通信可以數(shù)字信號(hào)的形式被接收到,其將被SMD協(xié)處理器指令所處理,以重新生 成表示該語(yǔ)音通信的數(shù)字音頻采樣。對(duì)于另一個(gè)示例,壓縮音頻和/或視頻可以數(shù)字位流 的形式被接收到,其將被SMD協(xié)處理器指令所處理,以重新生成數(shù)字音頻采樣和/或運(yùn)動(dòng) 視頻幀。對(duì)于處理核心170的一個(gè)實(shí)施例,主處理器166和SMD協(xié)處理器161被集成在單 個(gè)處理核心170中,該單個(gè)處理核心170包括執(zhí)行單元162、一組寄存器文件164、以及解碼 器165以識(shí)別指令集163的指令,指令集163包括根據(jù)一個(gè)實(shí)施例的指令。
[0077] 圖2是包括邏輯電路以執(zhí)行根據(jù)本發(fā)明的一個(gè)實(shí)施例的指令的處理器200的微 體系結(jié)構(gòu)的框圖。在一些實(shí)施例中,根據(jù)一個(gè)實(shí)施例的指令可被實(shí)現(xiàn)為對(duì)具有字節(jié)大小、 字大小、雙字大小、四字大小等并具有諸多數(shù)據(jù)類(lèi)型(諸如單精度和雙精度整數(shù)和浮點(diǎn)數(shù)據(jù) 類(lèi)型)的數(shù)據(jù)元素執(zhí)行操作。在一個(gè)實(shí)施例中,有序前端201是處理器200的一部分,其獲 取將要被執(zhí)行的指令,并準(zhǔn)備這些指令以在稍后供處理器流水線使用。前端201可包括諸 個(gè)單元。在一個(gè)實(shí)施例中,指令預(yù)取器226從存儲(chǔ)器獲取指令,并將指令饋送至指令解碼器 228,指令解碼器228隨后解碼或解釋指令。例如,在一個(gè)實(shí)施例中,解碼器將所接收到的指 令解碼為機(jī)器可執(zhí)行的被稱為"微指令"或"微操作"(也稱為微操作數(shù)或uop)的一個(gè)或多 個(gè)操作。在其他實(shí)施例中,解碼器將指令解析為操作碼和對(duì)應(yīng)的數(shù)據(jù)及控制字段,它們被微 體系結(jié)構(gòu)用于執(zhí)行根據(jù)一個(gè)實(shí)施例的操作。在一個(gè)實(shí)施例中,追蹤高速緩存230接受經(jīng)解 碼的微操作,并將它們組裝為程序有序序列或微操作隊(duì)列234中的蹤跡,以用于執(zhí)行。當(dāng)追 蹤高速緩存230遇到復(fù)雜指令時(shí),微代碼ROM232提供完成操作所需的微操作。
[0078] -些指令被轉(zhuǎn)換為單個(gè)微操作,而其他指令需要若干個(gè)微操作以完成整個(gè)操作。 在一個(gè)實(shí)施例中,如果需要超過(guò)四個(gè)微操作來(lái)完成指令,則解碼器228訪問(wèn)微代碼ROM232 以進(jìn)行該指令。對(duì)于一個(gè)實(shí)施例,指令可被解碼為少量的微操作以用于在指令解碼器228 處進(jìn)行處理。在另一個(gè)實(shí)施例中,如果需要若干微操作來(lái)完成操作,則可將指令存儲(chǔ)在微代 碼ROM232中。追蹤高速緩存230參考進(jìn)入點(diǎn)可編程邏輯陣列(PLA)來(lái)確定正確的微指令 指針,以從微代碼ROM232讀取微代碼序列以完成根據(jù)一個(gè)實(shí)施例的一個(gè)或多個(gè)指令。在微 代碼ROM232完成對(duì)于指令的微操作序列化之后,機(jī)器的前端201恢復(fù)從追蹤高速緩存230 提取微操作。
[0079] 無(wú)序執(zhí)行引擎203是將指令準(zhǔn)備好用于執(zhí)行的單元。無(wú)序執(zhí)行邏輯具有若干個(gè)緩 沖器,用于將指令流平滑并且重排序,以優(yōu)化指令流進(jìn)入流水線后的性能,并調(diào)度指令流以 供執(zhí)行。分配器邏輯分配每個(gè)微操作需要的機(jī)器緩沖器和資源,以用于執(zhí)行。寄存器重命 名邏輯將諸個(gè)邏輯寄存器重命名為寄存器文件中的條目。在指令調(diào)度器(存儲(chǔ)器調(diào)度器、快 速調(diào)度器202、慢速/通用浮點(diǎn)調(diào)度器204、簡(jiǎn)單浮點(diǎn)調(diào)度器206)之前,分配器也將每個(gè)微 操作的條目分配在兩個(gè)微操作隊(duì)列中的一個(gè)之中,一個(gè)微操作隊(duì)列用于存儲(chǔ)器操作,另一 個(gè)微操作隊(duì)列用于非存儲(chǔ)器操作。微操作調(diào)度器202、204、206基于對(duì)它們的依賴輸入寄存 器操作數(shù)源的準(zhǔn)備就緒以及微操作完成它們的操作所需的執(zhí)行資源的可用性來(lái)確定微操 作何時(shí)準(zhǔn)備好用于執(zhí)行。一個(gè)實(shí)施例的快速調(diào)度器202可在主時(shí)鐘周期的每半個(gè)上進(jìn)行調(diào) 度,而其他調(diào)度器可僅僅在每個(gè)主處理器時(shí)鐘周期上調(diào)度一次。調(diào)度器對(duì)分配端口進(jìn)行仲 裁以調(diào)度微操作以便執(zhí)行。
[0080] 寄存器文件208、210位于調(diào)度器202、204、206和執(zhí)行塊211中的執(zhí)行單元212、 214、216、218、220、222、224之間。也存在單獨(dú)的寄存器文件208、210,分別用于整數(shù)和浮點(diǎn) 操作。一個(gè)實(shí)施例的每個(gè)寄存器文件208、210也包括旁路網(wǎng)絡(luò),旁路網(wǎng)絡(luò)可將剛完成的還 沒(méi)有被寫(xiě)入寄存器文件的結(jié)果旁路或轉(zhuǎn)發(fā)給新的依賴微操作。整數(shù)寄存器文件208和浮點(diǎn) 寄存器文件210也能夠彼此通信數(shù)據(jù)。對(duì)于一個(gè)實(shí)施例,整數(shù)寄存器文件208被劃分為兩 個(gè)單獨(dú)的寄存器文件,一個(gè)寄存器文件用于低階的32位數(shù)據(jù),第二個(gè)寄存器文件用于高階 的32位數(shù)據(jù)。一個(gè)實(shí)施例的浮點(diǎn)寄存器文件210具有128位寬度的條目,因?yàn)楦↑c(diǎn)指令通 常具有從64至128位寬度的操作數(shù)。
[0081] 執(zhí)行塊 211 包括執(zhí)行單元 212、214、216、218、220、222、224,在執(zhí)行單元212、214、 216、218、220、222、224中實(shí)際執(zhí)行指令。該區(qū)塊包括寄存器文件208、210,寄存器文件208、 210存儲(chǔ)微指令需要執(zhí)行的整數(shù)和浮點(diǎn)數(shù)據(jù)操作數(shù)值。一個(gè)實(shí)施例的處理器200包括有多 個(gè)執(zhí)行單元:地址生成單元(AGU) 212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮 點(diǎn)ALU222、浮點(diǎn)移動(dòng)單元224。對(duì)于一個(gè)實(shí)施例,浮點(diǎn)執(zhí)行塊222、224執(zhí)行浮點(diǎn)、MMX、SIMD、 SSE以及其他操作。一個(gè)實(shí)施例的浮點(diǎn)ALU222包括64位/64位浮點(diǎn)除法器,用于執(zhí)行除 法、平方根、以及余數(shù)微操作。對(duì)于本發(fā)明的諸個(gè)實(shí)施例,涉及浮點(diǎn)值的指令可使用浮點(diǎn)硬 件來(lái)處理。在一個(gè)實(shí)施例中,ALU操作進(jìn)入高速ALU執(zhí)行單元216、218。一個(gè)實(shí)施例的高速 ALU216、218可執(zhí)行高速操作,有效等待時(shí)間為半個(gè)時(shí)鐘周期。對(duì)于一個(gè)實(shí)施例,大多數(shù)復(fù)雜 整數(shù)操作進(jìn)入慢速ALU220,因?yàn)槁貯LU220包括用于長(zhǎng)等待時(shí)間類(lèi)型操作的整數(shù)執(zhí)行硬 件,諸如,乘法器、移位器、標(biāo)記邏輯和分支處理。存儲(chǔ)器加載/存儲(chǔ)操作由AGU212、214來(lái) 執(zhí)行。對(duì)于一個(gè)實(shí)施例,整數(shù)ALU216、218、220被描述為對(duì)64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作。 在替代實(shí)施例中,可實(shí)現(xiàn)ALU216、218、220以支持包括16、32、128、256等各種數(shù)據(jù)位。類(lèi)似 地,可實(shí)現(xiàn)浮點(diǎn)單元222、224以支持具有各種位寬的多個(gè)操作數(shù)。對(duì)于一個(gè)實(shí)施例,浮點(diǎn)單 元222、224可結(jié)合SMD和多媒體指令對(duì)128位寬度打包數(shù)據(jù)操作數(shù)進(jìn)行操作。
[0082] 在一個(gè)實(shí)施例中,在父加載完成執(zhí)行之前,微操作調(diào)度器202、204、206就分派依 賴操作。因?yàn)樵谔幚砥?00中微操作被投機(jī)地調(diào)度和執(zhí)行,所以處理器200也包括處理存 儲(chǔ)器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則可能存在帶有臨時(shí)錯(cuò)誤數(shù) 據(jù)離開(kāi)調(diào)度器并運(yùn)行在流水線中的依賴操作。重放機(jī)制跟蹤使用錯(cuò)誤數(shù)據(jù)的指令,并重新 執(zhí)行這些指令。僅僅依賴操作需要被重放,而允許獨(dú)立操作完成。處理器的一個(gè)實(shí)施例的 調(diào)度器和重放機(jī)制也被設(shè)計(jì)為捕捉為安全飛地頁(yè)面高速緩存提供高級(jí)分頁(yè)能力的指令。
[0083] 術(shù)語(yǔ)"寄存器"指代被用作為指令的一部分以標(biāo)識(shí)操作數(shù)的板上處理器存儲(chǔ)位置。 換句話說(shuō),寄存器是那些處理器外部(從編程者的角度來(lái)看)可用的處理器存儲(chǔ)位置。然而, 一實(shí)施例的寄存器不限于表示特定類(lèi)型的電路。相反,一實(shí)施例的寄存器能夠存儲(chǔ)并提供 數(shù)據(jù),能夠執(zhí)行在此所述的功能。本文所描述的寄存器可利用任何數(shù)量的不同技術(shù)通過(guò)處 理器中的電路來(lái)實(shí)現(xiàn),這些不同技術(shù)諸如專用物理寄存器、利用寄存器重命名的動(dòng)態(tài)分配 物理寄存器、專用和動(dòng)態(tài)分配物理寄存器的組合等。在一個(gè)實(shí)施例中,整數(shù)寄存器存儲(chǔ)32 位整數(shù)數(shù)據(jù)。一個(gè)實(shí)施例的寄存器文件也包含八個(gè)多媒體SMD寄存器,用于打包數(shù)據(jù)。對(duì) 于以下討論,寄存器應(yīng)被理解為設(shè)計(jì)成保存打包數(shù)據(jù)的數(shù)據(jù)寄存器,諸如來(lái)自美國(guó)加利福 尼亞州圣克拉拉市的英特爾公司的啟用了MMX技術(shù)的微處理器的64位寬MMXtm寄存器(在 一些實(shí)例中也稱為"mm寄存器)。"這些MMX寄存器(可用在整數(shù)和浮點(diǎn)格式中)可與伴隨 SMD和SSE指令的打包數(shù)據(jù)元素一起操作。類(lèi)似地,涉及SSE2、SSE3、SSE4或更新的技術(shù) (統(tǒng)稱為"SSEx")的128位寬XMM寄存器也可被用于保持這樣打包數(shù)據(jù)操作數(shù)。在一個(gè)實(shí) 施例中,在存儲(chǔ)打包數(shù)據(jù)和整數(shù)數(shù)據(jù)時(shí),寄存器不需要區(qū)分這兩類(lèi)數(shù)據(jù)類(lèi)型。在一個(gè)實(shí)施例 中,整數(shù)和浮點(diǎn)數(shù)據(jù)可被包括在相同的寄存器文件中,或被包括在不同的寄存器文件中。進(jìn) 一步的,在一個(gè)實(shí)施例中,浮點(diǎn)和整數(shù)數(shù)據(jù)可被存儲(chǔ)在不同的寄存器中,或被存儲(chǔ)在相同的 寄存器中。
[0084] 在下述附圖的示例中,描述了多個(gè)數(shù)據(jù)操作數(shù)。圖3A示出了根據(jù)本發(fā)明一個(gè)實(shí)施 例的多媒體寄存器中的各種打包數(shù)據(jù)類(lèi)型表示。圖3A示出用于128位寬操作數(shù)的打包字 節(jié)310、打包字320以及打包雙字(dword)330的數(shù)據(jù)類(lèi)型。本示例的打包字節(jié)格式310是 128位長(zhǎng),并且包含十六個(gè)打包字節(jié)數(shù)據(jù)元素。字節(jié)在此被定義為是8位數(shù)據(jù)。每一個(gè)字節(jié) 數(shù)據(jù)元素的信息被存儲(chǔ)為:對(duì)于字節(jié)0存儲(chǔ)在位7到位0,對(duì)于字節(jié)1存儲(chǔ)在位15到位8, 對(duì)于字節(jié)2存儲(chǔ)在位23到位16,最后對(duì)于字節(jié)15存儲(chǔ)在位120到位127。因此,在該寄存 器中使用了所有可用的位。該存儲(chǔ)配置提高了處理器的存儲(chǔ)效率。同樣,因?yàn)樵L問(wèn)了十六 個(gè)數(shù)據(jù)元素,所以現(xiàn)在可對(duì)十六個(gè)數(shù)據(jù)元素并行地執(zhí)行一個(gè)操作。
[0085] 通常,數(shù)據(jù)元素是單獨(dú)的數(shù)據(jù)片,與具有相同長(zhǎng)度的其他數(shù)據(jù)元素一起存儲(chǔ)在單 個(gè)寄存器或存儲(chǔ)器位置中。在涉及SSEx技術(shù)的打包數(shù)據(jù)序列中,存儲(chǔ)在XMM寄存器中的數(shù) 據(jù)元素的數(shù)目是128位除以單個(gè)數(shù)據(jù)元素的位長(zhǎng)。類(lèi)似地,在涉及MMX和SSE技術(shù)的打包 數(shù)據(jù)序列中,存儲(chǔ)在MMX寄存器中的數(shù)據(jù)元素的數(shù)目是64位除以單個(gè)數(shù)據(jù)元素的位長(zhǎng)。雖 然圖3A中所示的數(shù)據(jù)類(lèi)型是128位長(zhǎng),但本發(fā)明的諸個(gè)實(shí)施例也可操作64位寬、256位寬、 512位寬或其他大小的操作數(shù)。本示例的打包字格式320是128位長(zhǎng),并且包含八個(gè)打包字 數(shù)據(jù)元素。每個(gè)打包字包含十六位的信息。圖3A的打包雙字格式330是128位長(zhǎng),并且包 含四個(gè)打包雙字?jǐn)?shù)據(jù)元素。每個(gè)打包雙字?jǐn)?shù)據(jù)元素包含三十二位信息。打包四字是128位 長(zhǎng),并包含兩個(gè)打包四字?jǐn)?shù)據(jù)元素。
[0086] 圖3B示出了替代的寄存器內(nèi)數(shù)據(jù)存儲(chǔ)格式。每個(gè)打包數(shù)據(jù)可包括超過(guò)一個(gè)獨(dú)立 數(shù)據(jù)元素。示出了三個(gè)打包數(shù)據(jù)格式:打包半數(shù)據(jù)元素314、打包單數(shù)據(jù)元素342、以及打包 雙數(shù)據(jù)元素343。打包半數(shù)據(jù)元素341、打包單數(shù)據(jù)元素342、打包雙數(shù)據(jù)元素343的一個(gè)實(shí) 施例包含定點(diǎn)數(shù)據(jù)元素。對(duì)于替代實(shí)施例中,一個(gè)或多個(gè)打包半數(shù)據(jù)元素341、打包單數(shù)據(jù) 元素342、打包雙數(shù)據(jù)元素343可包含浮點(diǎn)數(shù)據(jù)元素。打包半數(shù)據(jù)元素341的一個(gè)替代實(shí) 施例是一百二十八位長(zhǎng)度,包含八個(gè)16位數(shù)據(jù)元素。打包單數(shù)據(jù)元素342的一個(gè)替代實(shí)施 例是一百二十八位長(zhǎng)度,且包含四個(gè)32位數(shù)據(jù)元素。打包雙數(shù)據(jù)元素343的一個(gè)實(shí)施例是 一百二十八位長(zhǎng)度,且包含兩個(gè)64位數(shù)據(jù)元素。可以理解的是,這樣的打包數(shù)據(jù)格式進(jìn)一 步可被擴(kuò)展至其他寄存器長(zhǎng)度,例如,96位、160位、192位、224位、256位、512位或更長(zhǎng)。
[0087] 圖3C示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的多媒體寄存器中的多種有符號(hào)和無(wú)符號(hào) 打包數(shù)據(jù)類(lèi)型表示。無(wú)符號(hào)打包字節(jié)表示344示出了SMD寄存器中的無(wú)符號(hào)打包字節(jié)的 存儲(chǔ)。每一個(gè)字節(jié)數(shù)據(jù)元素的信息被存儲(chǔ)為:對(duì)于字節(jié)〇存儲(chǔ)在位7到位0,對(duì)于字節(jié)1存 儲(chǔ)在位15到位8,對(duì)于字節(jié)2存儲(chǔ)在位23到位16,等等,最后對(duì)于字節(jié)15存儲(chǔ)在位120到 位127。因此,在該寄存器中使用了所有可用的位。該存儲(chǔ)配置可提高處理器的存儲(chǔ)效率。 同樣,因?yàn)樵L問(wèn)了十六個(gè)數(shù)據(jù)元素,所以可對(duì)十六個(gè)數(shù)據(jù)元素并行地執(zhí)行一個(gè)操作。有符號(hào) 打包字節(jié)表示345示出了有符號(hào)打包字節(jié)的存儲(chǔ)。注意到,每個(gè)字節(jié)數(shù)據(jù)元素的第八位是 符號(hào)指示符。無(wú)符號(hào)打包字表示346示出了SMD寄存器中字7到字O如何被存儲(chǔ)。有符 號(hào)打包字表示347類(lèi)似于無(wú)符號(hào)打包字寄存器內(nèi)表示346。注意到,每個(gè)字?jǐn)?shù)據(jù)元素的第 十六位是符號(hào)指示符。無(wú)符號(hào)打包雙字表示348示出了雙字?jǐn)?shù)據(jù)元素如何存儲(chǔ)。有符號(hào)打 包雙字表示349類(lèi)似于無(wú)符號(hào)打包雙字寄存器內(nèi)表示348。注意到,必要的符號(hào)位是每個(gè)雙 字?jǐn)?shù)據(jù)元素的第三十二位。
[0088] 圖3D是與可從美國(guó)加利福尼亞州圣克拉拉市的英特爾公司的萬(wàn)維網(wǎng)(www) intel.com/products/processor/manuals/上獲得的"Intel? 64 和IA-32 英特爾體系結(jié) 構(gòu)軟件開(kāi)發(fā)者手冊(cè)卷2:指令集參考(丨ntel? 64和IA_32IntelArchitectureSoftware Developer'sManualVolume2:InstructionSetReference)" 中描述的操作碼格式類(lèi)型 相對(duì)應(yīng)的具有32或更多位的操作編碼(操作碼)格式360以及寄存器/存儲(chǔ)器操作數(shù)尋址 模式的一個(gè)實(shí)施例的描述。在一個(gè)實(shí)施例中,可通過(guò)一個(gè)或更多個(gè)字段361和362來(lái)編碼 指令??梢詷?biāo)識(shí)每個(gè)指令高達(dá)兩個(gè)操作數(shù)位置,包括高達(dá)兩個(gè)源操作數(shù)標(biāo)識(shí)符364和365。 對(duì)于一個(gè)實(shí)施例,目的地操作數(shù)標(biāo)識(shí)符366與源操作數(shù)標(biāo)識(shí)符364相同,而在其他實(shí)施例中 它們不相同。對(duì)于可選實(shí)施例,目的地操作數(shù)標(biāo)識(shí)符366與源操作數(shù)標(biāo)識(shí)符365相同,而在 其他實(shí)施例中它們不相同。在一個(gè)實(shí)施例中,由源操作數(shù)標(biāo)識(shí)符364和365所標(biāo)識(shí)的源操 作數(shù)中的一個(gè)被指令的結(jié)果所覆寫(xiě),而在其他實(shí)施例中,標(biāo)識(shí)符364對(duì)應(yīng)于源寄存器元素, 而標(biāo)識(shí)符365對(duì)應(yīng)于目的地寄存器元素。對(duì)于一個(gè)實(shí)施例,操作數(shù)標(biāo)識(shí)符364和365可被 用于標(biāo)識(shí)32位或64位的源和目的地操作數(shù)。
[0089] 圖3E示出了具有四十個(gè)或更多位的另一個(gè)替代操作編碼(操作碼)格式370。操 作碼格式370對(duì)應(yīng)于操作碼格式360,并包括可選的前綴字節(jié)378。根據(jù)一個(gè)實(shí)施例的指令 可通過(guò)字段378、371和372中的一個(gè)或多個(gè)來(lái)編碼。通過(guò)源操作數(shù)標(biāo)識(shí)符374和375以 及通過(guò)前綴字節(jié)378,可標(biāo)識(shí)每個(gè)指令中高達(dá)兩個(gè)操作數(shù)位置。對(duì)于一個(gè)實(shí)施例,前綴字節(jié) 378可被用于標(biāo)識(shí)32位或64位的源和目的地操作數(shù)。對(duì)于一個(gè)實(shí)施例,目的地操作數(shù)標(biāo) 識(shí)符376與源操作數(shù)標(biāo)識(shí)符374相同,而在其他實(shí)施例中它們不相同。對(duì)于替代實(shí)施例,目 的地操作數(shù)標(biāo)識(shí)符376與源操作數(shù)標(biāo)識(shí)符375相同,而在其他實(shí)施例中它們不相同。在一 個(gè)實(shí)施例中,指令對(duì)由操作數(shù)標(biāo)識(shí)符374和375所標(biāo)識(shí)的一個(gè)或多個(gè)操作數(shù)進(jìn)行操作,并 且由操作數(shù)標(biāo)識(shí)符374和375所標(biāo)識(shí)的一個(gè)或多個(gè)操作數(shù)被指令的結(jié)果所覆寫(xiě),然而在其 他實(shí)施例中,由標(biāo)識(shí)符374和375所標(biāo)識(shí)的操作數(shù)被寫(xiě)入另一個(gè)寄存器中的另一個(gè)數(shù)據(jù)元 素中。操作碼格式360和370允許由MOD字段363和373以及由可選的比例-變址-基址 (scale-index-base)和位移(displacement)字節(jié)所部分指定的寄存器到寄存器尋址、存 儲(chǔ)器到寄存器尋址、由存儲(chǔ)器對(duì)寄存器尋址、由寄存器對(duì)寄存器尋址、直接對(duì)寄存器尋址、 寄存器至存儲(chǔ)器尋址。
[0090] 接下來(lái)轉(zhuǎn)到圖3F,在一些替換實(shí)施例中,64位(或128位、或256位、或512位或更 多)單指令多數(shù)據(jù)(SIMD)算術(shù)操作可經(jīng)由協(xié)處理器數(shù)據(jù)處理(CDP)指令來(lái)執(zhí)行。操作編碼 (操作碼)格式380示出了一個(gè)這樣的⑶P指令,其具有CDP操作碼字段382和389。對(duì)于替 代實(shí)施例,該類(lèi)型⑶P指令操作可由字段383、384、387和388中的一個(gè)或多個(gè)來(lái)編碼???以對(duì)每個(gè)指令標(biāo)識(shí)高達(dá)三個(gè)操作數(shù)位置,包括高達(dá)兩個(gè)源操作數(shù)標(biāo)識(shí)符385和390以及一 個(gè)目的地操作數(shù)標(biāo)識(shí)符386。協(xié)處理器的一個(gè)實(shí)施例可對(duì)8、16、32和64位值操作。對(duì)于一 個(gè)實(shí)施例,對(duì)整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實(shí)施例中,使用條件字段381,可有條件地執(zhí)行 指令。對(duì)于一些實(shí)施例,源數(shù)據(jù)大小可通過(guò)字段383來(lái)編碼。在一些實(shí)施例中,可對(duì)SMD字段執(zhí)行零(Z)、負(fù)(N)、進(jìn)位(C)和溢出(V)檢測(cè)。對(duì)于一些指令,飽和類(lèi)型可通過(guò)字段384 來(lái)編碼。
[0091] 接下來(lái)轉(zhuǎn)到圖3G,其描繪了根據(jù)另一個(gè)實(shí)施例的用于為安全飛地頁(yè)面高速緩存提 供高級(jí)分頁(yè)能力的另一個(gè)替換操作編碼(操作碼)格式397,該替換操作編碼(操作碼)格式 397對(duì)應(yīng)于可在萬(wàn)維網(wǎng)intel.com/products/processor/manuals/上從加利福尼亞州圣克 拉拉市的Intel公司獲得的"丨ntel?高級(jí)向量擴(kuò)展編程參考"("丨ntel?AdvancedVector ExtensionsProgrammingReference")中所描述的操作碼格式類(lèi)型。
[0092] 原始x86指令集向1字節(jié)操作碼提供多種地址字節(jié)(syllable)格式以及包含在附 加字節(jié)中的直接操作數(shù),其中可從第一個(gè)"操作碼"字節(jié)中獲知附加字節(jié)的存在。此外,特定 字節(jié)值被預(yù)留給操作碼作為修改符(稱為前綴prefix,因?yàn)樗鼈儽环胖迷谥噶钪?。當(dāng)256 個(gè)操作碼字節(jié)的原始配置(包括這些特殊前綴值)耗盡時(shí),指定單個(gè)字節(jié)以跳出(escape)到 新的256個(gè)操作碼集合。因?yàn)樘砑恿讼蛄恐噶?諸如,SIMD),即便通過(guò)使用前綴進(jìn)行了擴(kuò)展 以后,也需要產(chǎn)生更多的操作碼,并且"兩字節(jié)"操作碼映射也已經(jīng)不夠。為此,將新指令加 入附加的映射中,附加的映射使用兩字節(jié)加上可選的前綴作為標(biāo)識(shí)符。
[0093] 除此外,為了便于在64位模式中實(shí)現(xiàn)額外的寄存器,在前綴和操作碼(以及任何 的用于確定操作碼所需的跳出字節(jié))之間使用額外的前綴(被稱為"REX")。在一個(gè)實(shí)施例 中,REX具有4個(gè)"有效載荷"位,以指示在64位模式中使用附加的寄存器。在其他實(shí)施例 中,可具有比4位更少或更多的位。至少一個(gè)指令集的通用格式(一般對(duì)應(yīng)于格式360和/ 或格式370)被一般地不出如下:
[0094] [prefixes] [rex]escape[escape2]opcodemodrm(等等)
[0095] 操作碼格式397對(duì)應(yīng)于操作碼格式370,并包括可選的VEX前綴字節(jié)391 (在一個(gè) 實(shí)施例中,以十六進(jìn)制的C4開(kāi)始)以替換大部分的其他公共使用的傳統(tǒng)指令前綴字節(jié)和跳 出代碼。例如,以下示出了使用兩個(gè)字段來(lái)編碼指令的實(shí)施例,其可在原始指令中存在第二 跳出代碼時(shí)、或在需要在REX字段中使用額外位(諸如,XB和W字段)時(shí)被使用。在以下所示 的實(shí)施例中,傳統(tǒng)跳出由新的跳出值所表示,傳統(tǒng)前綴被完全壓縮為"有效載荷(payload)" 字節(jié)的一部分,傳統(tǒng)前綴被重新申明并可用于未來(lái)的擴(kuò)展,第二跳出代碼被壓縮在"映射 (map)"字段中且未來(lái)的映射或特征空間可用,并且加入新的特征(諸如,增加的向量長(zhǎng)度以 及額外的源寄存器區(qū)分符)。
[0096]

【權(quán)利要求】
1. 一種處理器,包括: 第一硬件線程和第二硬件線程; 飛地頁(yè)面高速緩存,用于將共享頁(yè)面地址的安全數(shù)據(jù)存儲(chǔ)在高速緩存行中,所述共享 頁(yè)面地址被分配給所述第一和第二硬件線程可訪問(wèn)的相應(yīng)安全飛地; 解碼級(jí),用于解碼第一指令以供所述處理器執(zhí)行,所述第一指令將所述共享頁(yè)面地址 指定為操作數(shù);以及 一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第一指令: 標(biāo)記與所述共享頁(yè)面地址的飛地頁(yè)面高速緩存映射相對(duì)應(yīng)的條目,以阻止為所述第一 或第二硬件線程中的任一個(gè)創(chuàng)建用于訪問(wèn)與所述共享頁(yè)面地址相對(duì)應(yīng)的安全數(shù)據(jù)的新轉(zhuǎn) 換。
2. 如權(quán)利要求1所述的處理器,其特征在于,所述第一指令是EBLOCK指令,所述 EBLOCK指令指定所述共享頁(yè)面地址以防止在任何轉(zhuǎn)換后備緩沖器(TLB)中創(chuàng)建與所述共 享頁(yè)面地址相對(duì)應(yīng)的新轉(zhuǎn)換。
3. 如權(quán)利要求1所述的處理器,其特征在于,包括: 所述解碼級(jí),用于解碼第二指令以供所述處理器執(zhí)行,所述第二指令將所述安全飛地 指定為操作數(shù);以及 一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第二指令: 記錄當(dāng)前正在訪問(wèn)與所述安全飛地相對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù)據(jù)的硬件 線程。
4. 如權(quán)利要求3所述的處理器,其特征在于,所述第二指令是ETRACK指令,所述 ETRACK指令指定所述安全飛地以記錄當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程的數(shù)量。
5. 如權(quán)利要求4所述的處理器,其特征在于,所述一個(gè)或多個(gè)執(zhí)行單元響應(yīng)于經(jīng)解碼 的第二指令: 當(dāng)所述硬件線程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地 中執(zhí)行的硬件線程的數(shù)量遞減。
6. 如權(quán)利要求4所述的處理器,其特征在于,所述一個(gè)或多個(gè)執(zhí)行單元響應(yīng)于經(jīng)解碼 的第一指令: 當(dāng)所述硬件線程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地 中執(zhí)行的硬件線程的數(shù)量遞減。
7. -種處理器,包括: 第一硬件線程和第二硬件線程; 飛地頁(yè)面高速緩存,用于將共享頁(yè)面地址的安全數(shù)據(jù)存儲(chǔ)在高速緩存行中,所述共享 頁(yè)面地址被分配給所述第一和第二硬件線程可訪問(wèn)的相應(yīng)安全飛地; 解碼級(jí),用于解碼第一指令以供所述處理器執(zhí)行,所述第一指令將所述安全飛地指定 為操作數(shù);以及 一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第一指令: 記錄當(dāng)前正在訪問(wèn)與所述安全飛地相對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù)據(jù)的硬件 線程。
8. 如權(quán)利要求7所述的處理器,其特征在于,所述第一指令是ETRACK指令,所述 ETRACK指令指定所述安全飛地以記錄當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程的數(shù)量。
9. 如權(quán)利要求8所述的處理器,其特征在于,所述一個(gè)或多個(gè)執(zhí)行單元響應(yīng)于經(jīng)解碼 的第一指令: 當(dāng)所述硬件線程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地 中執(zhí)行的硬件線程的數(shù)量遞減。
10. 如權(quán)利要求7所述的處理器,其特征在于,包括: 所述解碼級(jí),用于解碼第二指令以供所述處理器執(zhí)行,所述第二指令將所述共享頁(yè)面 地址指定為操作數(shù);以及 一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第二指令: 標(biāo)記與所述共享頁(yè)面地址的飛地頁(yè)面高速緩存映射相對(duì)應(yīng)的條目,以阻止為所述第一 或第二硬件線程中的任一個(gè)創(chuàng)建用于訪問(wèn)與所述共享頁(yè)面地址相對(duì)應(yīng)的安全數(shù)據(jù)的新轉(zhuǎn) 換。
11. 如權(quán)利要求10所述的處理器,其特征在于,所述第二指令是EBLOCK指令,所述 EBLOCK指令指定所述共享頁(yè)面地址以防止在任何TLB中創(chuàng)建與所述共享頁(yè)面地址相對(duì)應(yīng) 的新轉(zhuǎn)換。
12. 如權(quán)利要求11所述的處理器,其特征在于,所述一個(gè)或多個(gè)執(zhí)行單元響應(yīng)于經(jīng)解 碼的第二指令: 當(dāng)所述硬件線程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地 中執(zhí)行的硬件線程的數(shù)量遞減。
13. 如權(quán)利要求7所述的處理器,其特征在于,包括: 所述解碼級(jí),用于解碼第二指令以供所述處理器執(zhí)行,所述第二指令將所述共享頁(yè)面 地址指定為操作數(shù);以及 一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第二指令: 如果所記錄的當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程的數(shù)量達(dá)到零,則逐出并寫(xiě)回 與所述共享頁(yè)面地址相對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù)據(jù)。
14. 如權(quán)利要求13所述的處理器,其特征在于,所述第二指令是飛地寫(xiě)回(EWB)指令, 所述飛地寫(xiě)回(EWB)指令指定所述共享頁(yè)面地址,以從飛地頁(yè)面高速緩存中逐出并寫(xiě)回所 述共享頁(yè)面。
15. 如權(quán)利要求14所述的處理器,其特征在于,如果所記錄的當(dāng)前正在所述安全飛地 中執(zhí)行的硬件線程的數(shù)量尚未達(dá)到零,則所述第二指令失敗。
16. 如權(quán)利要求14所述的處理器,其特征在于,所述第二指令等待直到所記錄的當(dāng)前 正在所述安全飛地中執(zhí)行的硬件線程的數(shù)量達(dá)到零才執(zhí)行。
17. -種方法,包括: 在多線程處理器中執(zhí)行第一硬件線程和第二硬件線程; 將共享頁(yè)面地址的安全數(shù)據(jù)存儲(chǔ)在高速緩存行中,所述共享頁(yè)面地址被分配給所述第 一和第二硬件線程可訪問(wèn)的相應(yīng)安全飛地; 解碼第一指令以供所述處理器執(zhí)行,所述第一指令將所述共享頁(yè)面地址指定為操作 數(shù);以及 響應(yīng)于解碼所述第一指令,標(biāo)記與所述共享頁(yè)面地址的飛地頁(yè)面高速緩存映射相對(duì)應(yīng) 的條目,以阻止為所述第一或第二硬件線程中的任一個(gè)創(chuàng)建用于訪問(wèn)與所述共享頁(yè)面地址 相對(duì)應(yīng)的安全數(shù)據(jù)的新轉(zhuǎn)換。
18. 如權(quán)利要求17所述的方法,其特征在于,所述第一指令是EBLOCK指令,所述 EBLOCK指令指定所述共享頁(yè)面地址以防止在任何TLB中創(chuàng)建與所述共享頁(yè)面地址相對(duì)應(yīng) 的新轉(zhuǎn)換。
19. 如權(quán)利要求17所述的方法,其特征在于,包括: 響應(yīng)于解碼所述第一指令,還記錄當(dāng)前正在訪問(wèn)與所述安全飛地相對(duì)應(yīng)的飛地頁(yè)面高 速緩存中的安全數(shù)據(jù)的硬件線程。
20. 如權(quán)利要求19所述的方法,其特征在于,響應(yīng)于解碼所述第一指令,當(dāng)所述硬件線 程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程 的數(shù)量遞減。
21. 如權(quán)利要求20所述的方法,其特征在于,當(dāng)所述硬件線程中的任一個(gè)硬件線程退 出所述安全飛地時(shí),在與所述任一個(gè)硬件線程相對(duì)應(yīng)的TLB中轉(zhuǎn)儲(chǔ)清除與所述共享頁(yè)面地 址相對(duì)應(yīng)的轉(zhuǎn)換。
22. 如權(quán)利要求17所述的方法,其特征在于,包括: 解碼第二指令以供所述處理器執(zhí)行,所述第二指令將所述安全飛地指定為操作數(shù);以 及 響應(yīng)于解碼所述第二指令,記錄當(dāng)前正在訪問(wèn)與所述安全飛地相對(duì)應(yīng)的飛地頁(yè)面高速 緩存中的安全數(shù)據(jù)的硬件線程。
23. 如權(quán)利要求22所述的方法,其特征在于,響應(yīng)于解碼所述第二指令,當(dāng)所述硬件線 程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程 的數(shù)量遞減。
24. 如權(quán)利要求22所述的方法,其特征在于,包括: 解碼第三指令以供所述處理器執(zhí)行,所述第三指令將所述共享頁(yè)面地址指定為操作 數(shù);以及 響應(yīng)于解碼所述第三指令,如果所記錄的當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程 的數(shù)量達(dá)到零,則逐出并寫(xiě)回與所述共享頁(yè)面地址相對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù) 據(jù)。
25. 如權(quán)利要求24所述的方法,其特征在于,響應(yīng)于解碼所述第三指令以供所述處理 器執(zhí)行,在將所述安全數(shù)據(jù)寫(xiě)回存儲(chǔ)器或非易失性存儲(chǔ)器之前加密與所述共享頁(yè)面地址相 對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù)據(jù)。
26. 如權(quán)利要求24所述的方法,其特征在于,如果所記錄的當(dāng)前正在所述安全飛地中 執(zhí)行的硬件線程的數(shù)量尚未達(dá)到零,則所述第三指令失敗。
27. 如權(quán)利要求24所述的方法,其特征在于,所述第三指令等待直到所記錄的當(dāng)前正 在所述安全飛地中執(zhí)行的硬件線程的數(shù)量達(dá)到零才執(zhí)行。
28. -種方法,包括: 在多線程處理器中執(zhí)行第一硬件線程和第二硬件線程; 將共享頁(yè)面地址的安全數(shù)據(jù)存儲(chǔ)在高速緩存行中,所述共享頁(yè)面地址被分配給所述第 一和第二硬件線程可訪問(wèn)的相應(yīng)安全飛地; 解碼第一指令以供所述處理器執(zhí)行,所述第一指令將所述安全飛地指定為操作數(shù);以 及 響應(yīng)于解碼所述第一指令,記錄當(dāng)前正在訪問(wèn)與所述安全飛地相對(duì)應(yīng)的飛地頁(yè)面高速 緩存中的安全數(shù)據(jù)的硬件線程。
29. 如權(quán)利要求28所述的方法,其特征在于,所述第一指令是ETRACK指令,所述 ETRACK指令指定所述安全飛地以記錄當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程的數(shù)量。
30. 如權(quán)利要求28所述的方法,其特征在于,響應(yīng)于解碼所述第一指令,當(dāng)所述硬件線 程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程 的數(shù)量遞減。
31. 如權(quán)利要求30所述的方法,其特征在于,響應(yīng)于解碼所述第一指令,防止在任何 TLB中創(chuàng)建與所述共享頁(yè)面地址相對(duì)應(yīng)的新轉(zhuǎn)換。
32. 如權(quán)利要求30所述的方法,其特征在于,包括: 解碼第二指令以供所述處理器執(zhí)行,所述第二指令將所述共享頁(yè)面地址指定為操作 數(shù);以及 響應(yīng)于解碼所述第二指令,如果所記錄的當(dāng)前正在所述安全飛地中執(zhí)行的硬件線程 的數(shù)量達(dá)到零,則逐出并寫(xiě)回與所述共享頁(yè)面地址相對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù) 據(jù)。
33. 如權(quán)利要求32所述的方法,其特征在于,響應(yīng)于解碼所述第二指令以供所述處理 器執(zhí)行,在將所述安全數(shù)據(jù)寫(xiě)回存儲(chǔ)器或非易失性存儲(chǔ)器之前加密與所述共享頁(yè)面地址相 對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù)據(jù)。
34. 如權(quán)利要求33所述的方法,其特征在于,如果所記錄的當(dāng)前正在所述安全飛地中 執(zhí)行的硬件線程的數(shù)量尚未達(dá)到零,則所述第二指令失敗。
35. 一種處理系統(tǒng),包括: 存儲(chǔ)器;以及 處理器,包括: 第一硬件線程和第二硬件線程, 飛地頁(yè)面高速緩存,用于將共享頁(yè)面地址的安全數(shù)據(jù)存儲(chǔ)在高速緩存行中,所述共享 頁(yè)面地址被分配給所述第一和第二硬件線程可訪問(wèn)的相應(yīng)安全飛地, 解碼級(jí),用于解碼第一指令以供所述處理器執(zhí)行,所述第一指令將所述共享頁(yè)面地址 指定為操作數(shù),以及 一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第一指令,標(biāo)記與所述共享頁(yè)面地址的飛 地頁(yè)面高速緩存映射相對(duì)應(yīng)的條目,以阻止為所述第一或第二硬件線程中的任一個(gè)創(chuàng)建用 于訪問(wèn)與所述共享頁(yè)面地址相對(duì)應(yīng)的安全數(shù)據(jù)的新轉(zhuǎn)換; 所述解碼級(jí),用于解碼第二指令以供所述處理器執(zhí)行,所述第二指令將所述安全飛地 指定為操作數(shù),以及 所述一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第二指令: 記錄當(dāng)前正在訪問(wèn)與所述安全飛地相對(duì)應(yīng)的飛地頁(yè)面高速緩存中的安全數(shù)據(jù)的硬件 線程, 當(dāng)所述硬件線程中的任一個(gè)退出所述安全飛地時(shí),將所記錄的當(dāng)前正在所述安全飛地 中執(zhí)行的硬件線程的數(shù)量遞減。
36. 如權(quán)利要求35所述的處理系統(tǒng),其特征在于,當(dāng)所述硬件線程中的任一個(gè)硬件線 程退出所述安全飛地時(shí),在與所述任一個(gè)硬件線程相對(duì)應(yīng)的TLB中轉(zhuǎn)儲(chǔ)清除與所述共享頁(yè) 面地址相對(duì)應(yīng)的轉(zhuǎn)換。
37. 如權(quán)利要求36所述的處理系統(tǒng),其特征在于,所述處理器包括: 所述解碼級(jí),用于解碼第三指令以供所述處理器執(zhí)行,所述第三指令將所述共享頁(yè)面 地址指定為操作數(shù);以及 所述一個(gè)或多個(gè)執(zhí)行單元,用于響應(yīng)于經(jīng)解碼的第三指令,如果所記錄的當(dāng)前正在所 述安全飛地中執(zhí)行的硬件線程的數(shù)量達(dá)到零,則逐出并寫(xiě)回與所述共享頁(yè)面地址相對(duì)應(yīng)的 飛地頁(yè)面高速緩存中的安全數(shù)據(jù)。
38. 如權(quán)利要求37所述的處理系統(tǒng),其特征在于,如果所記錄的當(dāng)前正在所述安全飛 地中執(zhí)行的硬件線程的數(shù)量尚未達(dá)到零,則所述第三指令失敗。
【文檔編號(hào)】G06F12/08GK104484284SQ201410124302
【公開(kāi)日】2015年4月1日 申請(qǐng)日期:2014年3月28日 優(yōu)先權(quán)日:2013年3月31日
【發(fā)明者】C·V·羅扎斯, I·埃里克山德洛維奇, I·安奈蒂, A·貝倫宗, M·A·戈德史密斯, B·E·亨特利, A·伊凡諾夫, S·P·約翰遜, R·M·勒斯列-赫德, F·X·麥克金, G·尼格, R·拉波波特, S·D·羅杰斯, U·R·薩瓦高恩卡, V·R·斯卡拉塔, V·尚伯格, W·H·史密斯, W·C·伍德 申請(qǐng)人:英特爾公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1