單個(gè)數(shù)據(jù)緩沖器的并行處理的制作方法
【專利摘要】用于對(duì)單個(gè)可變長(zhǎng)度的數(shù)據(jù)緩沖器執(zhí)行串行數(shù)據(jù)處理算法的技術(shù)包括:將所述緩沖器的段流式傳送到數(shù)據(jù)寄存器中,并行地對(duì)所述段中的每個(gè)執(zhí)行所述算法,以及將對(duì)所述段中的每個(gè)執(zhí)行所述算法的結(jié)果相組合以形成所述串行數(shù)據(jù)處理算法的輸出。
【專利說明】單個(gè)數(shù)據(jù)緩沖器的并行處理
[0001] 相關(guān)申請(qǐng)的交叉引用 該本申請(qǐng)?jiān)?5 U.S.C. $119 (e)下要求2012年7月11日提交的美國臨時(shí)申請(qǐng)序列號(hào) 61/670, 472和2012年9月28日提交的美國專利申請(qǐng)序列號(hào)13/631,761的優(yōu)先權(quán)。
【背景技術(shù)】
[0002] 用于驗(yàn)證數(shù)據(jù)文件和計(jì)算機(jī)程序的安全的軟件在許多不同情景中是流行的,所述 情景諸如操作系統(tǒng)引導(dǎo)序列、程序代碼或數(shù)據(jù)文件的加載、web瀏覽、數(shù)據(jù)通信和數(shù)據(jù)存儲(chǔ)。 諸如用于認(rèn)證和/或加密的那些的串行數(shù)據(jù)處理算法可以以鏈?zhǔn)较嚓P(guān)的方式對(duì)數(shù)據(jù)的單 個(gè)緩沖器進(jìn)行操作。那些算法可受到串行鏈接的約束,因?yàn)樵醋詫?duì)緩沖器中的一個(gè)數(shù)據(jù)塊 的處理的輸出通常需要對(duì)后續(xù)的塊的處理。
[0003] 例如,諸如MD5 (消息摘要的算法)以及SHA1、SHA256和SHA512 (安全哈希算法) 的密碼哈希函數(shù)就通用處理器上的計(jì)算而言可能是昂貴的。這樣的哈希函數(shù)依次對(duì)數(shù)據(jù)的 單個(gè)緩沖器工作,從而利用從每個(gè)數(shù)據(jù)塊得到的計(jì)算結(jié)果更新哈希摘要狀態(tài)并使用彼此相 互依賴的多輪處理。單個(gè)緩沖器的塊的串行處理限制現(xiàn)代處理器上的性能。諸如使用矢量 單指令多數(shù)據(jù)(SMD)單元的多緩沖器處理的方法已被提出以得到應(yīng)用中的更好的性能,其 中能夠?qū)Χ鄠€(gè)獨(dú)立的數(shù)據(jù)緩沖器進(jìn)行工作;然而,那些方法不適用于涉及單個(gè)緩沖器的哈 希的應(yīng)用。樹式哈希是已被使用的另一技術(shù),盡管其跨多個(gè)核或引擎。
【專利附圖】
【附圖說明】
[0004] 本公開中所述的概念以示例的方式而非以限制性的方式在附圖中被示出。為了說 明的簡(jiǎn)單和清晰起見,附圖中所示的元件并不一定是按比例繪制的。例如,為清晰起見一些 元件的尺寸可能相對(duì)于其它元件被夸大。另外,在被認(rèn)為合適的地方,附圖標(biāo)記在圖之間被 重復(fù)以指示相應(yīng)或者類似的元素。
[0005] 圖1是結(jié)合其可實(shí)施所公開的方法的計(jì)算裝置的至少一個(gè)實(shí)施例的簡(jiǎn)化框圖; 圖2是用于單個(gè)數(shù)據(jù)緩沖器的并行處理的系統(tǒng)的至少一個(gè)實(shí)施例的簡(jiǎn)化的模塊圖; 圖3是用于單個(gè)數(shù)據(jù)緩沖器的并行處理的方法的至少一個(gè)實(shí)施例的簡(jiǎn)化流程圖; 圖4是單個(gè)數(shù)據(jù)緩沖器的并行處理的至少一個(gè)實(shí)施例的簡(jiǎn)化的示例;以及 圖5是單個(gè)數(shù)據(jù)緩沖器的并行處理的結(jié)果的至少一個(gè)實(shí)施例的簡(jiǎn)化示例。
【具體實(shí)施方式】
[0006] 雖然本公開的概念易受各種更改和替換形式的影響,但其特定實(shí)施例已通過示例 的方式在附圖中被示出并且將在本文中被詳細(xì)描述。然而,應(yīng)當(dāng)理解的是,并不意圖將本公 開的概念限制到被公開的特別形式,而是相反,意圖是涵蓋與本公開和所附的權(quán)利要求一 致的所有更改、等同物和替代物。
[0007] 在以下描述中,闡述了很多特定細(xì)節(jié),以便提供對(duì)本公開的更透徹的理解,所述細(xì) 節(jié)諸如邏輯實(shí)施、操作碼、用于指定操作數(shù)的手段、資源分區(qū)/分享/復(fù)制實(shí)施、系統(tǒng)部件的 類型和相互關(guān)系以及邏輯分區(qū)/集成選擇。然而,本領(lǐng)域技術(shù)人員將要理解的是,可以在沒 有這樣的特定細(xì)節(jié)的情況下實(shí)踐本公開的實(shí)施例。在其它實(shí)例中,沒有詳細(xì)示出控制結(jié)構(gòu)、 門級(jí)電路和全軟件指令序列,以免模糊對(duì)本文中所述的概念的描述。本領(lǐng)域普通技術(shù)人員 利用所包括的描述將能夠在無需過度實(shí)驗(yàn)的情況下實(shí)施合適的功能。
[0008] 說明書中對(duì)" 一個(gè)實(shí)施例"、"實(shí)施例"、"示例實(shí)施例"等的提及指示被描述的實(shí)施 例可包括特別的特征、結(jié)構(gòu)或特性,但是每個(gè)實(shí)施例可能不一定包括該特別的特征、結(jié)構(gòu)或 特性。此外,這樣的短語不一定指代相同的實(shí)施例。此外,當(dāng)結(jié)合一實(shí)施例描述特別的特 征、結(jié)構(gòu)或特性時(shí),主張的是,無論是否被明確描述,結(jié)合其他實(shí)施例來實(shí)現(xiàn)這樣的特征、結(jié) 構(gòu)或特性都在本領(lǐng)域技術(shù)人員的知識(shí)范圍內(nèi)。
[0009] 本文中所述的概念的實(shí)施例可以以硬件、固件、軟件或它們的任何組合的方式被 實(shí)施。實(shí)施在計(jì)算機(jī)系統(tǒng)中的實(shí)施例可包括部件之間的一個(gè)或多個(gè)點(diǎn)到點(diǎn)或基于總線的互 連。本文中所述的概念的實(shí)施例也可被實(shí)施作為被一個(gè)或多個(gè)機(jī)器可讀或計(jì)算機(jī)可讀的存 儲(chǔ)介質(zhì)載送或存儲(chǔ)于其上的指令,其可被一個(gè)或多個(gè)處理器讀取和執(zhí)行。機(jī)器可讀或計(jì)算 機(jī)可讀的存儲(chǔ)介質(zhì)可被體現(xiàn)為用于以可被機(jī)器(例如,計(jì)算裝置)讀取的形式存儲(chǔ)或傳輸信 息的任何裝置、機(jī)構(gòu)或物理結(jié)構(gòu)。例如,機(jī)器可讀或計(jì)算機(jī)可讀的存儲(chǔ)介質(zhì)可被體現(xiàn)為:只 讀存儲(chǔ)器(ROM)裝置;隨機(jī)存取存儲(chǔ)器(RAM)裝置;磁盤存儲(chǔ)介質(zhì);光學(xué)存儲(chǔ)介質(zhì);閃存裝 置;迷你型或微型SD卡、存儲(chǔ)棒以及其它。
[0010] 在附圖中,為便于描述,可示出示意性元素的特定布置或順序,所述元素諸如表示 裝置、模塊、指令塊和數(shù)據(jù)元素的那些。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,附圖中的示意 性元素的特定順序或布置并不意味著暗示處理的序列或特定順序或者處理的分開是必需 的。此外,附圖中示意性元素的包括并不意味著暗示這樣的元素在所有實(shí)施例中都是必需 的或者在一些實(shí)施例中由這樣的元素表示的特征可以不被包括或與其它元素相組合。
[0011] 通常,用來表示指令塊的示意性元素可使用機(jī)器可讀指令的任何合適形式來實(shí) 施,諸如軟件或固件應(yīng)用、程序、函數(shù)、模塊、例程、進(jìn)程、過程、插件、小應(yīng)用程序、微件、代碼 段和/或其它,并且每個(gè)這樣的指令可使用任何合適的編程語言、庫、應(yīng)用程序編程接口 (API)和/或其他軟件開發(fā)工具被實(shí)施。例如,可使用Java、C++和/或其它編程語言來實(shí) 施一些實(shí)施例。相似地,用來表示數(shù)據(jù)或信息的示意性元素可使用任何合適的電子布置或 結(jié)構(gòu)來實(shí)施,諸如寄存器、數(shù)據(jù)存儲(chǔ)、表格、記錄、陣列、索引、哈希、映射、樹、列表、圖、(任何 文件類型的)文件、文件夾、目錄、數(shù)據(jù)塊和/或其它。
[0012] 此外,在附圖中,在諸如實(shí)線或虛線或者實(shí)線箭頭或虛線箭頭的連接元素被用來 示出兩個(gè)或更多其它示意性元素之間或之中的連接、關(guān)系或關(guān)聯(lián)時(shí),任何這樣的連接元素 的缺少并不意味著暗示沒有連接、關(guān)系或關(guān)聯(lián)能夠存在。換而言之,元素之間的一些連接、 關(guān)系或關(guān)聯(lián)可能未在附圖中示出,以免模糊本公開。此外,為便于說明,可使用單個(gè)連接元 素來代表元素之間的多個(gè)連接、關(guān)系或關(guān)聯(lián)。例如,在連接元素代表信號(hào)、數(shù)據(jù)或指令的通 信時(shí),本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,這樣的元素可能代表如可能需要的一個(gè)或多個(gè)信號(hào) 路徑(例如,總線),以實(shí)現(xiàn)該通信。
[0013] 現(xiàn)在參考圖1,數(shù)據(jù)緩沖器處理模塊130被嵌入在說明性的計(jì)算裝置100中。在 使用中,如下面更詳細(xì)地討論的,數(shù)據(jù)緩沖器處理模塊130將單個(gè)數(shù)據(jù)緩沖器132 (例如,任 意長(zhǎng)度的字符串或"消息")視為輸入。數(shù)據(jù)緩沖器處理模塊130確定單個(gè)數(shù)據(jù)緩沖器132 的并行性等級(jí);也就是說,可被串行數(shù)據(jù)處理算法128 (例如,密碼哈希函數(shù))并行處理的單 個(gè)數(shù)據(jù)緩沖器132的"段"的數(shù)量。數(shù)據(jù)緩沖器處理模塊130管理對(duì)段的并行處理并將并 行處理的結(jié)果組合以形成算法128的最終輸出。雖然不同,但在這樣的并行處理后算法128 的輸出具有可與通常通過以傳統(tǒng)方式(例如,依次地)對(duì)單個(gè)數(shù)據(jù)緩沖器執(zhí)行算法128獲得 的結(jié)果相當(dāng)?shù)陌踩珡?qiáng)度。此外,由于對(duì)單個(gè)數(shù)據(jù)緩沖器132的分段和并行處理,可以實(shí)現(xiàn)性 能獲益。以這種方式,數(shù)據(jù)緩沖器處理模塊130可以對(duì)任何任意的長(zhǎng)度的單個(gè)數(shù)據(jù)緩沖器 執(zhí)行串行數(shù)據(jù)處理算法,即使基礎(chǔ)算法對(duì)特定大小(例如64字節(jié))的塊工作。
[0014] 說明性計(jì)算裝置100包括至少一個(gè)處理器110、存儲(chǔ)器120、輸入/輸出(I/O)子 系統(tǒng)122、存儲(chǔ)裝置124和一個(gè)或多個(gè)外圍裝置140。取決于特別應(yīng)用,計(jì)算裝置100可能 被體現(xiàn)在任何類型的計(jì)算裝置中或被體現(xiàn)為任何類型的計(jì)算裝置,諸如,例如,臺(tái)式計(jì)算機(jī) 系統(tǒng)、膝上型計(jì)算機(jī)系統(tǒng)或平板計(jì)算機(jī)系統(tǒng)、服務(wù)器、企業(yè)計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)的網(wǎng)絡(luò)、手持 或其他移動(dòng)計(jì)算裝置或其他電子裝置。
[0015] 說明性的處理器110包括單個(gè)核的一個(gè)或多個(gè)處理器核或邏輯部分,例如,處理 器核112、114、116,在本文中為描述方便起見它們被簡(jiǎn)稱為"核"。在一些實(shí)施例中,核112、 114、116中的一個(gè)或多個(gè)被配置為使用SIMD (單指令、多數(shù)據(jù))指令集或類似的計(jì)算機(jī)指令 集處理單線程計(jì)算機(jī)程序(諸如,在一些實(shí)施例中,數(shù)據(jù)緩沖器處理模塊130 )。更具體地說, 在一些實(shí)施例中,核112、114、116中的至少一個(gè)利用包括一個(gè)或多個(gè)流擴(kuò)展、諸如流SIMD 擴(kuò)展(SSE)或更遲的版本(例如,SSEn或AVX (高級(jí)矢量擴(kuò)展))的指令集被配置。
[0016] 該一個(gè)或多個(gè)核112、114、116包括一個(gè)或多個(gè)數(shù)據(jù)寄存器118或可通信地耦合到 一個(gè)或多個(gè)數(shù)據(jù)寄存器118。寄存器118可被用來在串行數(shù)據(jù)處理算法128、數(shù)據(jù)緩沖器處 理模塊130和/或計(jì)算裝置100的其它部件的操作期間臨時(shí)存儲(chǔ)數(shù)據(jù)和/或指令。每個(gè)寄 存器118具有寄存器大小或"寬度",其是寄存器118在給定時(shí)間可存儲(chǔ)的數(shù)據(jù)量。數(shù)據(jù)寄 存器118中的至少一個(gè)被配置用于數(shù)據(jù)級(jí)并行性。例如,在一些實(shí)施例中,至少一個(gè)數(shù)據(jù)寄 存器118被配置用于SMD或類似的數(shù)據(jù)級(jí)并行處理;也就是說,它可以被分割成可同時(shí)或 基本同時(shí)對(duì)多個(gè)數(shù)據(jù)執(zhí)行相同的操作的多個(gè)功能單元(例如,"通道"(lane)、"數(shù)據(jù)路徑"或 "執(zhí)行單元")。例如,在SMD或?qū)挾葹?28比特的類似寄存器中,計(jì)算機(jī)指令可以指定每個(gè) 可以并行處理128比特?cái)?shù)據(jù)的部分的寄存器118的通道或數(shù)據(jù)路徑的數(shù)量,以便可以對(duì)每 個(gè)數(shù)據(jù)路徑同時(shí)地、獨(dú)立于其他數(shù)據(jù)路徑地執(zhí)行算法128。
[0017] 說明性核112、114、116也包括一個(gè)或多個(gè)高速緩存存儲(chǔ)器(未示出)或可通信地耦 合到其。高速緩存存儲(chǔ)器可被用來在串行數(shù)據(jù)處理算法128、數(shù)據(jù)緩沖器處理模塊130和/ 或計(jì)算裝置100的其它部件的操作期間臨時(shí)存儲(chǔ)數(shù)據(jù)和/或指令。除了高速緩存存儲(chǔ)器和 寄存器118,處理器110和/或其核112、114、116包括存儲(chǔ)器120或以其它方式可通信地耦 合到存儲(chǔ)器120。存儲(chǔ)器120的各部分可被體現(xiàn)作為任何類型的合適的存儲(chǔ)器裝置,諸如動(dòng) 態(tài)隨機(jī)存取存儲(chǔ)器裝置(DRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器裝置(SDRAM)、雙倍數(shù)據(jù)速率動(dòng) 態(tài)隨機(jī)存取存儲(chǔ)器裝置(DDR SDRAM)和/或其他易失性存儲(chǔ)器裝置。
[0018] 處理器110還可通信地耦合到I/O子系統(tǒng)122。雖然未特別地示出,但I(xiàn)/O子系統(tǒng) 122通常包括存儲(chǔ)器控制器(例如,存儲(chǔ)器控制器子系統(tǒng)或北橋)、輸入/輸出控制器(例如, 輸入/輸出控制器子系統(tǒng)或南橋)和固件裝置。當(dāng)然,在其他實(shí)施例中,具有其他配置的1/ 〇子系統(tǒng)可被使用。例如,在一些實(shí)施例中,I/O子系統(tǒng)122可形成片上系統(tǒng)(SoC)的一部 分并與處理器110和計(jì)算裝置100的其它部件一起被包含在單個(gè)集成電路芯片上。因此, 將理解的是,I/O子系統(tǒng)122的每個(gè)部件在一些實(shí)施例中可被定位在共同的集成電路芯片 上。
[0019] 說明性的I/O子系統(tǒng)122可通信地耦合到一個(gè)或多個(gè)存儲(chǔ)裝置124。存儲(chǔ)裝置 124的各部分可被體現(xiàn)作為用于存儲(chǔ)數(shù)據(jù)和/或指令的任何合適的裝置,諸如磁盤存儲(chǔ)裝 置(例如硬盤)、存儲(chǔ)器卡、存儲(chǔ)器棒和/或其它。在一些實(shí)施例中,串行數(shù)據(jù)處理算法128、 數(shù)據(jù)緩沖器處理模塊130和/或單個(gè)數(shù)據(jù)緩沖器132至少被臨時(shí)體現(xiàn)在存儲(chǔ)裝置124中。 在執(zhí)行期間,串行數(shù)據(jù)處理算法128、數(shù)據(jù)緩沖器處理模塊130和/或單個(gè)數(shù)據(jù)緩沖器132 的各部分可被加載到存儲(chǔ)器120、高速緩存存儲(chǔ)器和/或寄存器118中,以便更快速地處理 或出于其他理由。在其它實(shí)施例中,在各種實(shí)施例中,串行數(shù)據(jù)處理算法128和數(shù)據(jù)緩沖器 處理模塊130每個(gè)均可被體現(xiàn)作為軟件、固件、硬件和/或它們的組合。此外,數(shù)據(jù)緩沖器 處理模塊130可被體現(xiàn)作為串行數(shù)據(jù)處理算法128的子模塊或"擴(kuò)展",或作為可被串行數(shù) 據(jù)處理算法128調(diào)用的函數(shù)、過程或庫對(duì)象和/或其它軟件(例如,操作系統(tǒng)、安全應(yīng)用和/ 或其它)。例如,緩沖器處理模塊130可被體現(xiàn)作為諸如安全哈希算法的現(xiàn)有的或者將來的 密碼哈希算法的一個(gè)或多個(gè)軟件擴(kuò)展。
[0020] I/O子系統(tǒng)122可以可通信地耦合到一個(gè)或多個(gè)外圍裝置140。取決于例如計(jì)算 裝置100的預(yù)期使用,外圍裝置140可包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口、圖形和/或視頻適配器、 鍵盤、觸摸屏、顯示器、打印機(jī)、數(shù)據(jù)存儲(chǔ)裝置和/或其他外圍裝置。此外,應(yīng)當(dāng)理解的是,計(jì) 算裝置100可包括其他部件、子部件以及為了描述的清楚起見未在圖1中示出的裝置。
[0021] 通常,計(jì)算裝置100的各部件通過示意性地被表示為雙頭箭頭的一個(gè)或多個(gè)信號(hào) 路徑如圖1中所示的那樣被可通信地耦合。這樣的信號(hào)路徑可被體現(xiàn)為能夠促進(jìn)相應(yīng)裝置 之間的通信的任何類型的有線或者無線信號(hào)路徑。例如,信號(hào)路徑可被體現(xiàn)為任意數(shù)量的 電線、印刷電路板跡線、通路、總線、點(diǎn)對(duì)點(diǎn)互連、中介裝置,等等。
[0022] 現(xiàn)在參考圖2,示出了其中緩沖器處理模塊130管理串行數(shù)據(jù)處理算法128跨輸入 數(shù)據(jù)緩沖器210的并行執(zhí)行的說明性的系統(tǒng)200。說明性的輸入數(shù)據(jù)緩沖器210是具有任 意大小或長(zhǎng)度L (以例如比特或字節(jié)來度量)的數(shù)據(jù)字符串(例如,數(shù)據(jù)文件或"消息")。如 在下文更詳細(xì)地描述的,緩沖器處理模塊130將輸入數(shù)據(jù)緩沖器210分割成多個(gè)段S,其中 段的數(shù)量是表示期望的或者考慮到系統(tǒng)200的特定設(shè)計(jì)或?qū)嵤┬枰强赡艿目巛斎霐?shù) 據(jù)緩沖器210的并行性等級(jí)或程度的正整數(shù)。緩沖器處理模塊130使輸入數(shù)據(jù)緩沖器210 流式傳送到數(shù)據(jù)寄存器118中,以便每個(gè)段被指派給寄存器118的不同通道或數(shù)據(jù)路徑。緩 沖器處理模塊130發(fā)起對(duì)寄存器118的每個(gè)通道或數(shù)據(jù)路徑并行地執(zhí)行算法128,以便輸入 數(shù)據(jù)緩沖器120的每個(gè)段被串行數(shù)據(jù)處理算法128并發(fā)地處理。
[0023] 算法128并行地處理串行地在具有指定大小B (例如以比特或字節(jié)來度量)的數(shù) 據(jù)塊中的數(shù)據(jù)緩沖器210的每個(gè)段,其中每個(gè)數(shù)據(jù)塊由多個(gè)大小為W(例如以比特或字節(jié)來 度量)的數(shù)據(jù)字組成,使得B是W的倍數(shù)。算法128生成輸出數(shù)據(jù)緩沖器(或"消息摘要", 或者在一些實(shí)施例中是"哈希摘要")212,其具有固定長(zhǎng)度D (例如以比特或字節(jié)來度量)。 在說明性實(shí)施例中,輸入數(shù)據(jù)緩沖器210和輸出數(shù)據(jù)緩沖器212都被存儲(chǔ)在單個(gè)數(shù)據(jù)緩沖 器132中。即,單個(gè)數(shù)據(jù)緩沖器132最初對(duì)應(yīng)于輸入數(shù)據(jù)緩沖器210,但隨著緩沖器處理模 塊130和串行數(shù)據(jù)處理算法128的執(zhí)行的進(jìn)行而被更新。
[0024] 在一些實(shí)施例中,算法128是密碼哈希函數(shù),諸如MD5、SHA1、SHA256或SHA512,并 且數(shù)據(jù)緩沖器處理模塊130在確定段S的數(shù)量時(shí)使用密碼哈希函數(shù)的某些規(guī)定(如例如在 相關(guān)的聯(lián)邦信息處理標(biāo)準(zhǔn)出版物或FIPS PUB中定義的)作為參數(shù)。作為示例,SHA256安全 哈希函數(shù)的標(biāo)準(zhǔn)指定B = 512比特,W = 32比特,D = 256比特。標(biāo)準(zhǔn)SHA256哈希函數(shù)將 任意長(zhǎng)度的輸入緩沖器分解成大小為B的塊,并對(duì)每個(gè)塊執(zhí)行多輪計(jì)算,在每輪中使用來 自該塊的大小為W的字。每輪均更新緩沖器,使得一輪的輸出是后一輪的輸入。
[0025] 傳統(tǒng)上,SHA256哈希函數(shù)依次地處理輸入緩沖器的各塊,使得針對(duì)一個(gè)塊產(chǎn)生的 哈希摘要被用作用于下一個(gè)塊的處理的初始哈希摘要,以此類推,直到輸入緩沖器中的每 個(gè)塊已被處理。相比之下,緩沖器處理模塊130定義跨單個(gè)數(shù)據(jù)緩沖器的多個(gè)段,其中每個(gè) 段包括一個(gè)或多個(gè)塊,并且緩沖器處理模塊130將算法128并行應(yīng)用到數(shù)據(jù)緩沖器的每個(gè) 段。例如,如果數(shù)據(jù)寄存器具有256比特的寬度,那么緩沖器處理模塊130可以將輸入數(shù)據(jù) 緩沖器210分割成(寄存器寬度)/W或256/32 = 8個(gè)段并對(duì)8個(gè)段中的每個(gè)并行地執(zhí)行算 法 128。
[0026] 現(xiàn)在參考圖3,示出了可被緩沖器處理模塊130和/或計(jì)算裝置100的其它模塊或 部件執(zhí)行作為計(jì)算機(jī)化的程序、例程、邏輯和/或指令的、用于對(duì)單個(gè)數(shù)據(jù)緩沖器進(jìn)行并行 處理的說明性的方法300。在塊310,方法300執(zhí)行任意長(zhǎng)度的輸入數(shù)據(jù)緩沖器或消息210 的任何必要的預(yù)處理。例如,在密碼哈希函數(shù)的情況下,通過將多個(gè)數(shù)據(jù)比特附加(例如通 過串接)到消息的末尾直到輸入數(shù)據(jù)緩沖器210具有期望的長(zhǎng)度(其通常由哈希算法標(biāo)準(zhǔn)或 規(guī)定指定)來填補(bǔ)輸入數(shù)據(jù)緩沖器210。在一些實(shí)施例中,填補(bǔ)包括" 1"比特,之后接著是 必要數(shù)量的"〇"比特。在其他實(shí)施例,在填補(bǔ)中可使用"〇"以及"1"比特的其他組合或模 式。定義基礎(chǔ)算法128的標(biāo)準(zhǔn)或規(guī)定指定填補(bǔ)方案。在一些實(shí)施例中,緩沖器210通過足 以使得填補(bǔ)后的緩沖器是塊大小的最小倍數(shù)的多個(gè)比特被擴(kuò)展。用于在塊310預(yù)處理輸入 數(shù)據(jù)緩沖器210的一些技術(shù)包括(1)利用與長(zhǎng)度串接的固定比特模式填補(bǔ)緩沖器直到緩沖 器210的總長(zhǎng)度是B*S的倍數(shù)。這使得緩沖器能夠利用S路SMD處理被有效地處理,從而 生成S個(gè)摘要。然后摘要集合可被視為長(zhǎng)度為S*D的另一數(shù)據(jù)緩沖器,并且然后大小為D 的最終哈??杀簧桑灰约埃?)并行地選擇緩沖器210的其長(zhǎng)度是B*S的倍數(shù)的最大區(qū)域, 以便可以生成S個(gè)摘要。摘要集合然后可與緩沖器的其余部分串接,作為新的數(shù)據(jù)緩沖器, 并且然后可以生成大小為D的最終哈希。
[0027] 在塊312,方法300確定用來分割輸入數(shù)據(jù)緩沖器210的段S的數(shù)量,并跨輸入緩 沖器210創(chuàng)建所確定數(shù)量的段。在一些實(shí)施例中,段的數(shù)量可以是預(yù)定的并且僅作為參數(shù)、 自變量或存儲(chǔ)值而被訪問(例如,從查找表或數(shù)據(jù)庫)。在其他實(shí)施例中,段的數(shù)量可在加載 時(shí)或運(yùn)行時(shí)被確定。在一些實(shí)施例中,段的數(shù)量可以是寄存器118的寬度的函數(shù)、串行數(shù)據(jù) 處理算法128的參數(shù)或規(guī)定(例如,塊大小、字大小、輸出長(zhǎng)度,等等)和/或輸入數(shù)據(jù)緩沖器 210的長(zhǎng)度。作為示例,在SHA256哈希函數(shù)被用作算法128的情況下,S = 8, W = 4字節(jié), 且B = 64字節(jié)。作為另一示例,在具有128比特的寄存器的SMD能力的微處理器上執(zhí)行 SHA-I會(huì)有以下參數(shù)設(shè)置:B = 64字節(jié),W = 4字節(jié),S = 4, D = 20字節(jié)。
[0028] 仍然在塊312,每個(gè)段被定義為由具有特定寬度(例如,32比特)的數(shù)據(jù)字組成。在 一些實(shí)施例中,段字寬度對(duì)應(yīng)于被算法128指定的字寬度W。每個(gè)段是使用輸入數(shù)據(jù)緩沖器 210的每S個(gè)字而被創(chuàng)建的,使得段的長(zhǎng)度可被塊大小B整除。輸入數(shù)據(jù)緩沖器210的長(zhǎng)度 L被段塊大小(S乘以B或SB)除,以確定輸入數(shù)據(jù)緩沖器210的多少可以在具有相同大小 的段中被處理。在輸入數(shù)據(jù)緩沖器的長(zhǎng)度L不可被SB整除時(shí),創(chuàng)建包含剩余數(shù)據(jù)的最后一 個(gè)段。在SHA256示例中,SB = 8*64 = 512字節(jié)。由于有8個(gè)段,因此使用輸入數(shù)據(jù)緩沖 器210中的每8個(gè)數(shù)據(jù)字(32比特,或4字節(jié))形成每個(gè)段,直到512*N比特,其中N是正整 數(shù)且512*N小于L。緩沖器長(zhǎng)度L可以被表示為L(zhǎng) = SB*N+L mod SB,并且段長(zhǎng)度SL可以 被表示為SL = B*N。
[0029] 在塊314,方法300使各段流式傳送到或以其它方式將各段直接讀取到寄存器118 的數(shù)據(jù)路徑中,使得每個(gè)段被讀取到不同的數(shù)據(jù)路徑中(例如,使用交織)。在一些實(shí)施例 中,這是通過使用被遞增直至SB的單個(gè)數(shù)據(jù)指針來實(shí)現(xiàn)的;也就是說,直到所有均等大小 的段已被處理。在SHA256示例中,一次將八個(gè)32比特的字讀入寄存器的8個(gè)數(shù)據(jù)路徑中。
[0030] 在塊316,對(duì)每個(gè)數(shù)據(jù)段并行地執(zhí)行串行數(shù)據(jù)處理算法128。也就是說,針對(duì)每個(gè) 段,算法128依次處理該段的各塊,同時(shí)其他段正被算法128相似地處理。因此,中間結(jié)果 (例如,哈希摘要)針對(duì)每個(gè)段被創(chuàng)建。也對(duì)輸入數(shù)據(jù)緩沖器210的剩余部分(如果有的話)執(zhí) 行算法128并且相應(yīng)的中間結(jié)果被創(chuàng)建。在SHA256示例中,基本上同時(shí)地對(duì)每個(gè)數(shù)據(jù)路徑 /32比特的字執(zhí)行SHA256算法,并且然后下8個(gè)字被讀取到寄存器數(shù)據(jù)路徑中并被SHA256 算法并行處理,以此類推,直到塊大小B。
[0031] 在塊318,所有的中間結(jié)果被組合以產(chǎn)生算法128的最終輸出(例如,哈希摘要)。 中間結(jié)果可以以多種不同的方式被組合,包括使用異或(XOR)或加法(ADD)函數(shù),或通過串 接中間結(jié)果并且然后再次執(zhí)行算法128。在SHA256示例中,8個(gè)哈希摘要中的每個(gè)可被組 合到一個(gè)256比特的哈希摘要中。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,方法300可被容易地適 配到其他處理器配置和串行數(shù)據(jù)處理算法。例如,具有其他寄存器寬度的寄存器可被使用。 例如,通過使用具有512比特的寬度的AVX3,段的數(shù)量S可以是16而非8,并且每個(gè)段可以 由每16個(gè)(32比特的)字組成。
[0032] 方法300的一些實(shí)施例將單個(gè)緩沖器210視為類似于交織的各獨(dú)立緩沖器的段的 集合,并且針對(duì)那些段并行地生成多個(gè)獨(dú)立的哈希摘要。在一些實(shí)施例中,交織的段的數(shù)量 是2的冪。來自對(duì)段的并行處理的中間結(jié)果被算法128處理以形成最終結(jié)果。通常來說, 方法300的一些實(shí)施例以更細(xì)的粒度(例如數(shù)據(jù)字)交織數(shù)據(jù),而非將緩沖器210分解成塊 或更大大小的處理部分。
[0033] 再次參考圖3、4和5,方法300的說明性實(shí)施例使用哈希算法H,其被定義為對(duì)每 個(gè)為B字節(jié)大小的整數(shù)個(gè)塊工作。下面的實(shí)施例以給定的并行等級(jí)S對(duì)長(zhǎng)度為L(zhǎng)的消息M tl 進(jìn)行哈希(其中I I符號(hào)表示串接)。參考圖3的塊310,消息Mtl根據(jù)與H相關(guān)聯(lián)的填補(bǔ)函數(shù) 被預(yù)處理。填補(bǔ)函數(shù)被表示為Pad 11 (消息,消息的長(zhǎng)度,塊大小B),并利用預(yù)定的模式和消 息長(zhǎng)度的串接將消息擴(kuò)展到為B字節(jié)的倍數(shù)的最小長(zhǎng)度。填補(bǔ)函數(shù)Pac^MmUB*^被應(yīng)用 到消息M tl,從而生成長(zhǎng)度為L(zhǎng)'的凡',其中L'是為B*S字節(jié)的倍數(shù)的Mtl可被擴(kuò)展到的最小 長(zhǎng)度。
[0034] 參考圖3的塊312,來自塊310的填補(bǔ)后的消息凡'被分割成每個(gè)長(zhǎng)度為L(zhǎng)' /S的 S個(gè)段。填補(bǔ)后的消息Mtl'以交織的方式被分割,使得Mtl'的每字大小的W比特被指派給不 同的段。每個(gè)段被表示為W比特的字的陣列:
【權(quán)利要求】
1. 一種用于處理數(shù)據(jù)緩沖器的計(jì)算裝置,所述計(jì)算裝置包括: 數(shù)據(jù)緩沖器處理模塊,用以: 訪問具有緩沖器長(zhǎng)度和多個(gè)數(shù)據(jù)段的任意長(zhǎng)度的數(shù)據(jù)緩沖器,每個(gè)數(shù)據(jù)段具有大于零 且小于所述緩沖器長(zhǎng)度的段長(zhǎng)度; 將數(shù)據(jù)段直接讀取到數(shù)據(jù)寄存器中,所述數(shù)據(jù)寄存器具有多個(gè)數(shù)據(jù)路徑,每個(gè)數(shù)據(jù)段 被直接讀取到不同的數(shù)據(jù)路徑中; 基本并行地對(duì)數(shù)據(jù)路徑中的每個(gè)執(zhí)行串行數(shù)據(jù)處理算法,以針對(duì)每個(gè)數(shù)據(jù)路徑產(chǎn)生結(jié) 果;以及 組合所述結(jié)果以形成所述串行數(shù)據(jù)處理算法的輸出。
2. 根據(jù)權(quán)利要求1所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊被體現(xiàn)為對(duì)密碼 哈希算法的擴(kuò)展。
3. 根據(jù)權(quán)利要求1所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊被配置用于在所 述計(jì)算裝置的微處理器的單個(gè)核上的執(zhí)行。
4. 根據(jù)權(quán)利要求3所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊被配置用于在所 述單個(gè)核的單個(gè)線程上的執(zhí)行。
5. 根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊被配 置用于在所述計(jì)算裝置的單指令多數(shù)據(jù)能力的處理器上的執(zhí)行。
6. 根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊被配 置用于與單線程軟件應(yīng)用一起使用。
7. -個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其包含存儲(chǔ)于其上的多個(gè)指令,所述多個(gè)指令響應(yīng) 于被執(zhí)行導(dǎo)致計(jì)算裝置: 將數(shù)據(jù)緩沖器分割成多個(gè)數(shù)據(jù)段,其中每個(gè)數(shù)據(jù)段具有大于零且小于所述數(shù)據(jù)緩沖器 的長(zhǎng)度的段長(zhǎng)度; 將每個(gè)數(shù)據(jù)段直接讀取到所述計(jì)算裝置的數(shù)據(jù)寄存器的不同的數(shù)據(jù)路徑執(zhí)行單元 中; 基本并行地對(duì)數(shù)據(jù)路徑執(zhí)行單元中的每個(gè)執(zhí)行密碼哈希算法,以針對(duì)每個(gè)數(shù)據(jù)路徑執(zhí) 行單元產(chǎn)生結(jié)果; 串接在數(shù)據(jù)路徑執(zhí)行單元處產(chǎn)生的結(jié)果;以及 對(duì)串接后的結(jié)果執(zhí)行所述密碼哈希算法,以產(chǎn)生所述密碼哈希算法的輸出。
8. 根據(jù)權(quán)利要求7所述的一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使所 述計(jì)算裝置基于由所述密碼哈希算法指定的字大小和所述數(shù)據(jù)寄存器的寬度定義所述段 長(zhǎng)度。
9. 根據(jù)權(quán)利要求7所述的一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使所 述計(jì)算裝置以交織的方式創(chuàng)建所述多個(gè)數(shù)據(jù)段。
10. 根據(jù)權(quán)利要求7-9中任一項(xiàng)所述的一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè) 指令還使所述計(jì)算裝置確定與所述密碼哈希算法相關(guān)聯(lián)的塊大小,以及填補(bǔ)所述數(shù)據(jù)緩沖 器,使得所述緩沖器的長(zhǎng)度是所述塊大小的倍數(shù)。
11. 根據(jù)權(quán)利要求10所述的一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使 所述計(jì)算裝置將固定模式的數(shù)據(jù)比特附加到所述數(shù)據(jù)緩沖器,使得所述緩沖器的長(zhǎng)度等于 所述塊大小乘以數(shù)據(jù)段的數(shù)量。
12. 根據(jù)權(quán)利要求7-9中任一項(xiàng)所述的一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè) 指令還使所述計(jì)算裝置基于所述計(jì)算裝置的微處理器的特性確定數(shù)據(jù)段的數(shù)量。
13. 根據(jù)權(quán)利要求7-9中任一項(xiàng)所述的一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè) 指令還使所述計(jì)算裝置基于串行數(shù)據(jù)處理算法的特性確定數(shù)據(jù)段的數(shù)量。
14. 根據(jù)權(quán)利要求7-9中任一項(xiàng)所述的一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其中所述密碼 哈希算法包括安全哈希算法或MD5算法。
15. -種用于處理任意長(zhǎng)度的數(shù)據(jù)緩沖器的方法,所述方法包括: 將所述數(shù)據(jù)緩沖器定義作為多個(gè)數(shù)據(jù)段,每個(gè)數(shù)據(jù)段具有大于零且小于所述數(shù)據(jù)緩沖 器的長(zhǎng)度的段長(zhǎng)度; 將數(shù)據(jù)段流式傳送到數(shù)據(jù)寄存器中,所述數(shù)據(jù)寄存器具有多個(gè)數(shù)據(jù)路徑執(zhí)行單元,每 個(gè)數(shù)據(jù)段使用單個(gè)數(shù)據(jù)指針被流式傳送到不同的數(shù)據(jù)路徑執(zhí)行單元中; 基本并行地在數(shù)據(jù)路徑執(zhí)行單元中的每個(gè)中執(zhí)行串行數(shù)據(jù)處理算法,以針對(duì)每個(gè)數(shù)據(jù) 路徑執(zhí)行單元產(chǎn)生結(jié)果;以及 組合所述結(jié)果以形成所述串行數(shù)據(jù)處理算法的輸出。
16. 根據(jù)權(quán)利要求15所述的方法,包括基于由所述串行數(shù)據(jù)處理算法指定的字大小 和所述數(shù)據(jù)寄存器的寬度定義所述段長(zhǎng)度。
17. 根據(jù)權(quán)利要求15所述的方法,其中將所述數(shù)據(jù)緩沖器定義作為多個(gè)數(shù)據(jù)段包括 將所述數(shù)據(jù)緩沖器以交織方式分割成所述多個(gè)數(shù)據(jù)段。
18. 根據(jù)權(quán)利要求17所述的方法,其中所述數(shù)據(jù)緩沖器包括多個(gè)數(shù)據(jù)字,其中每個(gè)數(shù) 據(jù)字包括多個(gè)數(shù)據(jù)比特,并且所述方法包括:將所述數(shù)據(jù)緩沖器中的每個(gè)數(shù)據(jù)字指派給不 同的數(shù)據(jù)段,使得每個(gè)數(shù)據(jù)段包括數(shù)據(jù)字的陣列。
19. 根據(jù)權(quán)利要求15-18中任一項(xiàng)所述的方法,其中每個(gè)結(jié)果包括多個(gè)數(shù)據(jù)字,每個(gè) 數(shù)據(jù)字包括多個(gè)數(shù)據(jù)比特,并且所述組合包括通過數(shù)據(jù)字來交織所述結(jié)果。
20. 根據(jù)權(quán)利要求15-18所述的方法,還包括針對(duì)每個(gè)數(shù)據(jù)段生成哈希摘要。
21. 根據(jù)權(quán)利要求14所述的方法,還包括組合所述哈希摘要以形成新的數(shù)據(jù)緩沖器 并對(duì)所述新的數(shù)據(jù)緩沖器執(zhí)行密碼哈希函數(shù)。
22. 根據(jù)權(quán)利要求15-18中任一項(xiàng)所述的方法,還包括:確定與所述串行數(shù)據(jù)處理算 法相關(guān)聯(lián)的塊大小,以及填補(bǔ)所述數(shù)據(jù)緩沖器,使得所述緩沖器的長(zhǎng)度是所述塊大小的倍 數(shù)。
23. 根據(jù)權(quán)利要求22所述的方法,還包括:將固定模式的數(shù)據(jù)比特附加到所述數(shù)據(jù)緩 沖器,使得所述緩沖器的長(zhǎng)度等于所述塊大小乘以數(shù)據(jù)段的數(shù)量。
24. 根據(jù)權(quán)利要求15-18中任一項(xiàng)所述的方法,其中所述組合包括串接所述結(jié)果并對(duì) 串接后的結(jié)果執(zhí)行所述串行數(shù)據(jù)處理算法。
25. 根據(jù)權(quán)利要求15-18中任一項(xiàng)所述的方法,還包括基于計(jì)算裝置的微處理器的特 性或所述串行數(shù)據(jù)處理算法的特性確定數(shù)據(jù)段的數(shù)量。
【文檔編號(hào)】G06F9/38GK104364756SQ201380030617
【公開日】2015年2月18日 申請(qǐng)日期:2013年7月10日 優(yōu)先權(quán)日:2012年7月11日
【發(fā)明者】S.M.古利, W.K.費(fèi)哈爾, V.戈帕爾, J.D.圭爾福德, G.M.沃爾里奇, K.S.亞普 申請(qǐng)人:英特爾公司