單個(gè)數(shù)據(jù)緩沖器的并行處理的制作方法
【專利摘要】用于對(duì)單個(gè)可變長(zhǎng)度的數(shù)據(jù)緩沖器執(zhí)行串行數(shù)據(jù)處理算法的技術(shù)包括:填補(bǔ)緩沖器的數(shù)據(jù)段,使數(shù)據(jù)段流式傳送到數(shù)據(jù)寄存器中,以及對(duì)段中的每個(gè)并行地執(zhí)行串行數(shù)據(jù)處理算法。
【專利說(shuō)明】單個(gè)數(shù)據(jù)緩沖器的并行處理
[0001] 相關(guān)申請(qǐng)的交叉引用 該本申請(qǐng)?jiān)?5 U.S.C. $119 (e)下要求2012年7月11日提交的美國(guó)臨時(shí)申請(qǐng)序列號(hào) 61/670, 472和2012年9月28日提交的美國(guó)專利申請(qǐng)序列號(hào)13/631,763的優(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ù)式哈希是已被使用的另一技術(shù),盡管其跨多個(gè)核或引擎。
【專利附圖】
【附圖說(shuō)明】
[0004] 本公開(kāi)中所述的概念以示例的方式而非以限制性的方式在附圖中被示出。為了說(shuō) 明的簡(jiǎn)單和清晰起見(jiàn),附圖中所示的元件并不一定是按比例繪制的。在被認(rèn)為合適的地方, 附圖標(biāo)記在圖之間被重復(fù)以指示相應(yīng)或者類似的元素。
[0005] 圖1是結(jié)合其可實(shí)施所公開(kāi)的方法的計(jì)算裝置的至少一個(gè)實(shí)施例的簡(jiǎn)化框圖; 圖2是用于單個(gè)數(shù)據(jù)緩沖器的并行處理的系統(tǒng)的至少一個(gè)實(shí)施例的簡(jiǎn)化的模塊圖;以 及 圖3是用于單個(gè)數(shù)據(jù)緩沖器的并行處理的方法的至少一個(gè)實(shí)施例的簡(jiǎn)化流程圖。
【具體實(shí)施方式】
[0006] 雖然本公開(kāi)的概念易受各種更改和替換形式的影響,但其特定實(shí)施例已通過(guò)示例 的方式在附圖中被示出并且將在本文中被詳細(xì)描述。然而,應(yīng)當(dāng)理解的是,并不意圖將本公 開(kāi)的概念限制到被公開(kāi)的特別形式,而是相反,意圖是涵蓋與本公開(kāi)和所附的權(quán)利要求一 致的所有更改、等同物和替代物。
[0007] 說(shuō)明書(shū)中對(duì)" 一個(gè)實(shí)施例"、"實(shí)施例"、"說(shuō)明性實(shí)施例"等的提及指示被描述的實(shí) 施例可包括特別的特征、結(jié)構(gòu)或特性,但是每個(gè)實(shí)施例可能或可能不一定包括該特別的特 征、結(jié)構(gòu)或特性。此外,這樣的短語(yǔ)不一定指代相同的實(shí)施例。此外,當(dāng)結(jié)合一實(shí)施例描述 特別的特征、結(jié)構(gòu)或特性時(shí),主張的是,無(wú)論是否被明確描述,結(jié)合其他實(shí)施例來(lái)實(shí)現(xiàn)這樣 的特征、結(jié)構(gòu)或特性都在本領(lǐng)域技術(shù)人員的知識(shí)范圍內(nèi)。
[0008] 被公開(kāi)的實(shí)施例在某些情況下可以以硬件、固件、軟件或它們的任何組合的方式 被實(shí)施。被公開(kāi)的實(shí)施例也可被實(shí)施作為被瞬時(shí)或非瞬時(shí)機(jī)器可讀(例如,計(jì)算機(jī)可讀)存 儲(chǔ)介質(zhì)載送或存儲(chǔ)于其上的指令,其可被一個(gè)或多個(gè)處理器讀取和執(zhí)行。機(jī)器可讀的存儲(chǔ) 介質(zhì)可被體現(xiàn)作為任何存儲(chǔ)裝置、機(jī)構(gòu)或用于以可被機(jī)器讀取的形式存儲(chǔ)或傳輸信息的其 他物理結(jié)構(gòu)(例如,易失性或者非易失性存儲(chǔ)器、介質(zhì)磁盤(pán)或其他介質(zhì)裝置)。
[0009] 在附圖中,一些結(jié)構(gòu)或方法特征可能以特定的布置和/或順序被示出。然而,應(yīng)當(dāng) 理解的是,這樣的特定布置和/或順序可能不是必需的。相反,在一些實(shí)施例中,這樣的特 征與說(shuō)明性附圖中所示的相比可以以不同的方式和/或順序被布置。此外,特定附圖中包 含結(jié)構(gòu)或方法特征并不意味著暗示這樣的特征在所有實(shí)施例中是必需的,并且在一些實(shí)施 例中,這樣的特征可以不被包括或可與其他特征相結(jié)合。
[0010] 現(xiàn)在參考圖1,數(shù)據(jù)緩沖器處理模塊130被嵌入在說(shuō)明性的計(jì)算裝置100中。在使 用中,數(shù)據(jù)緩沖器處理模塊130將單個(gè)數(shù)據(jù)緩沖器132(例如,任意長(zhǎng)度的字符串或"消息") 視為輸入。數(shù)據(jù)緩沖器處理模塊130確定單個(gè)數(shù)據(jù)緩沖器132的并行性等級(jí);也就是說(shuō),可 被串行數(shù)據(jù)處理算法128 (例如,密碼哈希函數(shù))并行處理的單個(gè)數(shù)據(jù)緩沖器132的"段"的 數(shù)量。數(shù)據(jù)緩沖器處理模塊130管理通過(guò)算法128對(duì)段的并行處理。雖然不同,但在這樣 的并行處理后算法128的輸出具有可與通常通過(guò)以傳統(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é))的 塊工作。
[0011] 說(shuō)明性計(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ì)算裝置或其他電子裝置。
[0012] 說(shuō)明性的處理器110包括單個(gè)核的一個(gè)或多個(gè)處理器核或邏輯部分,例如,處理 器核112、114、116,在本文中為描述方便起見(jiàn)它們被簡(jiǎn)稱為"核"。在一些實(shí)施例中,核112、 114、116中的一個(gè)或多個(gè)被配置為使用SIMD (單指令、多數(shù)據(jù))指令集或類似的計(jì)算機(jī)指令 集處理單線程計(jì)算機(jī)程序(諸如,在一些實(shí)施例中,數(shù)據(jù)緩沖器處理模塊130 )。更具體地說(shuō), 在一些實(shí)施例中,核112、114、116中的至少一個(gè)利用包括一個(gè)或多個(gè)流擴(kuò)展、諸如流SIMD 擴(kuò)展(SSE)或更遲的版本(例如,SSEn或AVX (高級(jí)矢量擴(kuò)展))的指令集被配置。
[0013] 該一個(gè)或多個(gè)核112、114、116包括一個(gè)或多個(gè)數(shù)據(jù)寄存器118或可通信地耦合到 一個(gè)或多個(gè)數(shù)據(jù)寄存器118。寄存器118可被用來(lái)在串行數(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í)并行處理;也就是說(shuō),它可以被分割成可同時(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。
[0014] 說(shuō)明性核112、114、116也包括一個(gè)或多個(gè)高速緩存存儲(chǔ)器(未示出)或可通信地耦 合到其。高速緩存存儲(chǔ)器可被用來(lái)在串行數(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ǔ)器裝置。
[0015] 處理器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í)施例中可被定位在共同的集成電路芯片 上。
[0016] 說(shuō)明性的I/O子系統(tǒng)122可通信地耦合到一個(gè)或多個(gè)存儲(chǔ)裝置124。存儲(chǔ)裝置 124的各部分可被體現(xiàn)作為用于存儲(chǔ)數(shù)據(jù)和/或指令的任何合適的裝置,諸如磁盤(pán)存儲(chǔ)裝 置(例如硬盤(pán))、存儲(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ù)據(jù)處理算法128和/或數(shù)據(jù)緩沖器處理模塊130 可被體現(xiàn)作為電路、機(jī)器可執(zhí)行邏輯單元,等等。也就是說(shuō),在各種實(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ù)、過(guò)程或庫(kù)對(duì)象和/或其它軟件(例 如,操作系統(tǒng)、安全應(yīng)用和/或其它)。例如,緩沖器處理模塊130可被體現(xiàn)作為諸如安全哈 希算法的現(xiàn)有的或者將來(lái)的密碼哈希算法的一個(gè)或多個(gè)軟件擴(kuò)展。
[0017] I/O子系統(tǒng)122可以可通信地耦合到一個(gè)或多個(gè)外圍裝置140。取決于例如計(jì)算 裝置100的預(yù)期使用,外圍裝置140可包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口、圖形和/或視頻適配器、 鍵盤(pán)、觸摸屏、顯示器、打印機(jī)、數(shù)據(jù)存儲(chǔ)裝置和/或其他外圍裝置。此外,應(yīng)當(dāng)理解的是,計(jì) 算裝置100可包括其他部件、子部件以及為了描述的清楚起見(jiàn)未在圖1中示出的裝置。
[0018] 通常,計(jì)算裝置100的各部件通過(guò)示意性地被表示為雙頭箭頭的一個(gè)或多個(gè)信號(hào) 路徑如圖1中所示的那樣被可通信地耦合。這樣的信號(hào)路徑可被體現(xiàn)為能夠促進(jìn)相應(yīng)裝置 之間的通信的任何類型的有線或者無(wú)線信號(hào)路徑。例如,信號(hào)路徑可被體現(xiàn)為任意數(shù)量的 電線、印刷電路板跡線、通路、總線、點(diǎn)對(duì)點(diǎn)互連、中介裝置,等等。
[0019] 現(xiàn)在參考圖2,示出了其中緩沖器處理模塊130管理串行數(shù)據(jù)處理算法128跨輸 入數(shù)據(jù)緩沖器210的并行執(zhí)行的說(shuō)明性的系統(tǒng)200。說(shuō)明性的輸入數(shù)據(jù)緩沖器210是具有 任意大小或長(zhǎng)度L (以例如比特或字節(jié)來(lái)度量)的數(shù)據(jù)字符串(例如,數(shù)據(jù)文件或"消息")。 如在下文更詳細(xì)地描述的,緩沖器處理模塊130將輸入數(shù)據(jù)緩沖器210的內(nèi)容分割成多個(gè) 段S,其中段的數(shù)量是表示期望的或者考慮到系統(tǒng)200的特定設(shè)計(jì)或?qū)嵤┬枰强赡艿?跨輸入數(shù)據(jù)緩沖器210的并行性等級(jí)或程度的正整數(shù)。在說(shuō)明性的實(shí)施例中,每個(gè)段可根 據(jù)串行數(shù)據(jù)處理算法128的要求被填補(bǔ)到指定長(zhǎng)度。換而言之,一些段可被填補(bǔ)而另外的 不被填補(bǔ),這取決于填補(bǔ)之前的段的長(zhǎng)度和串行數(shù)據(jù)處理算法128的規(guī)定。
[0020] 緩沖器處理模塊130使輸入數(shù)據(jù)緩沖器210的內(nèi)容(例如,段,根據(jù)需要被填補(bǔ))流 式傳送到數(shù)據(jù)寄存器118中,以便每個(gè)段被指派給寄存器118的不同通道或數(shù)據(jù)路徑。緩 沖器處理模塊130發(fā)起對(duì)寄存器118的每個(gè)通道或數(shù)據(jù)路徑并行地執(zhí)行算法128,以便每個(gè) 段被串行數(shù)據(jù)處理算法128并發(fā)地處理。
[0021] 算法128并行地處理串行地在具有指定大小B (例如以比特或字節(jié)來(lái)度量)的數(shù) 據(jù)塊中的數(shù)據(jù)緩沖器210的每個(gè)段(根據(jù)需要被填補(bǔ)),其中每個(gè)數(shù)據(jù)塊由多個(gè)大小為W(例 如以比特或字節(jié)來(lái)度量)的數(shù)據(jù)字組成,使得B是W的倍數(shù)。算法128為每個(gè)段生成輸出 (或"消息摘要",或者在一些實(shí)施例中是"哈希摘要"),其至少可被臨時(shí)存儲(chǔ)在輸出數(shù)據(jù)緩 沖器212中。每個(gè)輸出數(shù)據(jù)緩沖器212(1)... (S)(其中S是段的數(shù)量)的內(nèi)容具有固定長(zhǎng) 度D (例如以比特或字節(jié)來(lái)度量)。在各種實(shí)施例中,輸入數(shù)據(jù)緩沖器210和輸出數(shù)據(jù)緩沖 器212 (1)... 212 (S)都可被體現(xiàn)為單個(gè)數(shù)據(jù)緩沖器132,或者被體現(xiàn)在一個(gè)或多個(gè)臨時(shí)存 儲(chǔ)緩沖器中。例如,單個(gè)數(shù)據(jù)緩沖器132的內(nèi)容可最初對(duì)應(yīng)于輸入數(shù)據(jù)緩沖器210的內(nèi)容, 并且可隨著緩沖器處理模塊130和/或串行數(shù)據(jù)處理算法128的執(zhí)行的進(jìn)行而被更新。
[0022] 在一些實(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)度的輸入緩沖器的內(nèi)容分解成大小為B的塊,并對(duì)每個(gè)塊執(zhí)行多輪計(jì)算,在每輪中 使用來(lái)自該塊的大小為W的字。每輪均更新緩沖器,使得一輪的輸出是后一輪的輸入。
[0023] 傳統(tǒng)上,SHA256哈希函數(shù)依次地處理輸入緩沖器的內(nèi)容的各塊,使得針對(duì)一個(gè)塊 產(chǎn)生的哈希摘要用作用于下一個(gè)塊的處理的初始哈希摘要,以此類推,直到輸入緩沖器中 的每個(gè)數(shù)據(jù)塊已被處理。相比之下,緩沖器處理模塊130跨單個(gè)數(shù)據(jù)緩沖器定義多個(gè)段,其 中每個(gè)段包括一個(gè)或多個(gè)數(shù)據(jù)塊,并且緩沖器處理模塊130將算法128并行應(yīng)用到數(shù)據(jù)緩 沖器的每個(gè)段。例如,如果數(shù)據(jù)寄存器具有256比特的寬度,那么緩沖器處理模塊130可以 將輸入數(shù)據(jù)緩沖器210的內(nèi)容分割成(寄存器寬度)/W或256/32 = 8個(gè)段并對(duì)8個(gè)段中的 每個(gè)并行地執(zhí)行算法128。
[0024] 現(xiàn)在參考圖3,示出了可被緩沖器處理模塊130和/或計(jì)算裝置100的其它模塊 或部件執(zhí)行作為計(jì)算機(jī)化的程序、例程、邏輯和/或指令的、用于對(duì)單個(gè)數(shù)據(jù)緩沖器進(jìn)行并 行處理的說(shuō)明性的方法300。在塊310,方法300確定用來(lái)將輸入數(shù)據(jù)緩沖器210的內(nèi)容分 割成段S的數(shù)量,并相應(yīng)地通過(guò)分割輸入緩沖器210的內(nèi)容來(lái)創(chuàng)建所確定數(shù)量的段。在一 些實(shí)施例中,段的數(shù)量可以是預(yù)定的并且僅作為參數(shù)、自變量或存儲(chǔ)值而被訪問(wèn)(例如,從 查找表或數(shù)據(jù)庫(kù))。在其他實(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é)。
[0025] 仍然在塊310,每個(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的多少內(nèi)容可以在具 有相同大小的段中被處理。其中輸入數(shù)據(jù)緩沖器的長(zhǎng)度L不可被SB整除,段中的一個(gè)或多 個(gè)可被填補(bǔ)或可創(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。
[0026] 在塊312,方法300執(zhí)行每個(gè)段的任何必要的填補(bǔ),作為預(yù)處理例程的一部分或根 據(jù)需要"即時(shí)進(jìn)行"。例如,在密碼哈希函數(shù)的情況下,可根據(jù)需要通過(guò)將多個(gè)數(shù)據(jù)比特加對(duì) 緩沖器長(zhǎng)度的指示附加(例如通過(guò)串接)到消息的末尾以使得該段具有指定的長(zhǎng)度以供所 選的算法128處理來(lái)填補(bǔ)每個(gè)段。在一些實(shí)施例中,填補(bǔ)包括"1"比特之后接著是必要數(shù) 量的"0"比特,之后接著是緩沖器長(zhǎng)度。在其他實(shí)施例,在每個(gè)段的填補(bǔ)中可使用"0"以及 "1"比特的其他組合或模式。定義基礎(chǔ)算法128的標(biāo)準(zhǔn)或規(guī)定指定填補(bǔ)方案。在一些實(shí)施 例中,每個(gè)段通過(guò)足以使得填補(bǔ)后的緩沖器是塊大小的最小倍數(shù)的多個(gè)比特被擴(kuò)展。例如, 緩沖器210的每個(gè)段可被填補(bǔ)為B字節(jié)的其最近的倍數(shù),并且然后在S路SBffi處理被應(yīng)用 到算法128以生成S個(gè)摘要的情況下被處理。在此情況下,每段填補(bǔ)根據(jù)算法128的標(biāo)準(zhǔn) 填補(bǔ)方案被完成。在某些情況下(諸如在剩余段的情況下),與其他填補(bǔ)后的段相比段可具 有不同的填補(bǔ)后長(zhǎng)度。例如,在段中的數(shù)據(jù)加必不可少的填補(bǔ)的量超過(guò)塊大小時(shí)填補(bǔ)可能 導(dǎo)致具有額外塊的段。
[0027] 在塊314,方法300使各段流式傳送到或以其它方式將各段讀取到寄存器118的數(shù) 據(jù)路徑中,使得每個(gè)段被讀取到不同的數(shù)據(jù)路徑中(例如,使用交織)。在一些實(shí)施例中,這 是通過(guò)使用被遞增直至SB的單個(gè)數(shù)據(jù)指針來(lái)實(shí)現(xiàn)的;也就是說(shuō),直到所有均等大小的段已 被處理。在SHA256示例中,一次將八個(gè)32比特的字讀入寄存器的8個(gè)數(shù)據(jù)路徑中。作為 另一個(gè)示例,在具有128比特寄存器的SMD能力的微處理器上執(zhí)行SHA-I會(huì)有以下參數(shù)設(shè) 置:B = 64字節(jié),W = 4字節(jié),S = 4, D = 20字節(jié)。
[0028] 在塊316,對(duì)每個(gè)填補(bǔ)后的數(shù)據(jù)段并行地執(zhí)行串行數(shù)據(jù)處理算法128。也就是說(shuō), 針對(duì)每個(gè)填補(bǔ)后的段,算法128依次處理該段的各塊,同時(shí)其他段正被算法128相似地處 理。因此,中間結(jié)果(例如,哈希摘要)針對(duì)每個(gè)填補(bǔ)后的段被創(chuàng)建。在SHA256示例中,基本 上同時(shí)地對(duì)每個(gè)數(shù)據(jù)路徑/32比特的字執(zhí)行SHA256算法,并且然后下8個(gè)字被讀取到寄存 器數(shù)據(jù)路徑中并被SHA256算法并行處理,以此類推,直到塊大小B。
[0029] 由于每個(gè)數(shù)據(jù)段根據(jù)算法128的規(guī)定被填補(bǔ)和處理這一事實(shí),在一些實(shí)施例中, 沒(méi)有必要組合各個(gè)段結(jié)果。因此,段結(jié)果可被存儲(chǔ)在分別的緩沖器中或者一起被存儲(chǔ)在一 個(gè)緩沖器中(例如,如果被串接的話)??蛇x地,在塊318,單獨(dú)的S個(gè)摘要可被組合以形成單 個(gè)結(jié)果,例如,算法128的最終輸出。例如,S個(gè)摘要的集合可被視為長(zhǎng)度為S*D的另一數(shù)據(jù) 緩沖器,并且然后可以以單個(gè)緩沖器的方式生成大小為D的最終哈希。段結(jié)果可以以多種 不同的方式被組合,包括使用異或(XOR)或加法(ADD)函數(shù),或通過(guò)串接段結(jié)果并且然后再 次執(zhí)行算法128。使用SHA256示例,8個(gè)哈希摘要中的每個(gè)可被組合成一個(gè)256比特的哈 希摘要。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,方法300可被容易地適配到其他處理器配置和串 行數(shù)據(jù)處理算法。例如,具有其他寄存器寬度的寄存器可被使用。作為示例,使用具有512 比特的寬度的AVX3,段的數(shù)量S會(huì)是16、而非8,并且每個(gè)段會(huì)由每16個(gè)(32比特的)字組 成。
[0030] 在一些實(shí)施例中,數(shù)據(jù)段類似于交織的獨(dú)立緩沖器,其中如上面討論的那樣針對(duì) 那些段并行地生成多個(gè)獨(dú)立的哈希摘要。在一些實(shí)施例中,交織的段的數(shù)量是2的冪。在創(chuàng) 建段時(shí),方法300的一些實(shí)施例以更細(xì)的粒度(例如,數(shù)據(jù)字)交織數(shù)據(jù),而非將緩沖器210 分解成塊或更大尺寸的處理部分。
[0031] 再次參考圖3,方法300的說(shuō)明性實(shí)施例使用哈希算法H,其被定義為對(duì)每個(gè)為B 字節(jié)大小的整數(shù)個(gè)塊工作。下面的實(shí)施例以給定的并行性等級(jí)S對(duì)長(zhǎng)度為L(zhǎng)的消息Mtl進(jìn) 行哈希(其中I I符號(hào)表示串接)。在段被創(chuàng)建后,與H相關(guān)聯(lián)的填補(bǔ)功能利用預(yù)定的模式和 段長(zhǎng)度的串接將消息的每個(gè)段擴(kuò)展到為B字節(jié)的倍數(shù)的最小長(zhǎng)度。
[0032] 參考圖3的塊310,消息Mtl被分割成每個(gè)長(zhǎng)度為L(zhǎng)/S的S個(gè)段。消息M tl可以以交 織的方式被分割,使得Mtl的每字大小的W比特被指派給不同的段。每個(gè)段可被表示為W比 特的字的陣列:
【權(quán)利要求】
1. 一種用于處理數(shù)據(jù)緩沖器的計(jì)算裝置,所述計(jì)算裝置包括: 數(shù)據(jù)緩沖器處理模塊,用以: 訪問(wèn)具有緩沖器長(zhǎng)度和多個(gè)數(shù)據(jù)段的任意長(zhǎng)度的數(shù)據(jù)緩沖器,每個(gè)數(shù)據(jù)段具有大于零 且小于所述緩沖器長(zhǎng)度的段長(zhǎng)度; 根據(jù)串行數(shù)據(jù)處理算法填補(bǔ)每個(gè)數(shù)據(jù)段; 將填補(bǔ)后的數(shù)據(jù)段中的每個(gè)直接讀取到數(shù)據(jù)寄存器中,所述數(shù)據(jù)寄存器具有多個(gè)數(shù)據(jù) 路徑,每個(gè)填補(bǔ)后的數(shù)據(jù)段被直接讀取到不同的數(shù)據(jù)路徑中;以及 基本并行地對(duì)數(shù)據(jù)路徑中的每個(gè)執(zhí)行串行數(shù)據(jù)處理算法,以針對(duì)每個(gè)數(shù)據(jù)路徑產(chǎn)生結(jié) 果。
2. 根據(jù)權(quán)利要求1所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器具有任意的長(zhǎng)度。
3. 根據(jù)權(quán)利要求1或權(quán)利要求2所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊包括 用以將填補(bǔ)后的數(shù)據(jù)段中的每個(gè)直接讀取到所述數(shù)據(jù)寄存器的不同數(shù)據(jù)路徑中的數(shù)據(jù)緩 沖器處理模塊。
4. 根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊包括用 以根據(jù)所述串行數(shù)據(jù)處理算法填補(bǔ)數(shù)據(jù)段中的每個(gè)的數(shù)據(jù)緩沖器處理模塊。
5. 根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊被體現(xiàn) 為對(duì)密碼哈希算法的擴(kuò)展。
6. 根據(jù)權(quán)利要求1-5中任一項(xiàng)所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊包括用 以在所述計(jì)算裝置的微處理器的單個(gè)核上執(zhí)行的數(shù)據(jù)緩沖器處理模塊。
7. 根據(jù)權(quán)利要求6所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊包括用以在所述單 個(gè)核的單個(gè)線程上執(zhí)行的數(shù)據(jù)緩沖器處理模塊。
8. 根據(jù)權(quán)利要求1-7中任一項(xiàng)所述的計(jì)算裝置,其中所述數(shù)據(jù)緩沖器處理模塊包括用 以在所述計(jì)算裝置的單指令多數(shù)據(jù)能力的處理器上執(zhí)行的數(shù)據(jù)緩沖器處理模塊。
9. 根據(jù)權(quán)利要求1-8中任一項(xiàng)所述的計(jì)算裝置,所述數(shù)據(jù)緩沖器處理模塊包括用以與 單線程軟件應(yīng)用一起執(zhí)行的數(shù)據(jù)緩沖器處理模塊。
10. -個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì),其包含存儲(chǔ)于其上的多個(gè)指令,所述多個(gè)指令響應(yīng) 于被執(zhí)行導(dǎo)致計(jì)算裝置: 將所述計(jì)算裝置的任意長(zhǎng)度的數(shù)據(jù)緩沖器定義作為多個(gè)數(shù)據(jù)段,每個(gè)數(shù)據(jù)段具有大于 零且小于所述數(shù)據(jù)緩沖器的長(zhǎng)度的段長(zhǎng)度; 根據(jù)串行數(shù)據(jù)處理算法填補(bǔ)每個(gè)數(shù)據(jù)段; 將填補(bǔ)后的數(shù)據(jù)段流式傳送到數(shù)據(jù)寄存器中,所述數(shù)據(jù)寄存器具有多個(gè)數(shù)據(jù)路徑執(zhí)行 單元,每個(gè)填補(bǔ)后的數(shù)據(jù)段使用單個(gè)數(shù)據(jù)指針被流式傳送到不同的數(shù)據(jù)路徑執(zhí)行單元中; 以及 基本并行地在數(shù)據(jù)路徑執(zhí)行單元中的每個(gè)中執(zhí)行串行數(shù)據(jù)處理算法,以針對(duì)每個(gè)數(shù)據(jù) 路徑執(zhí)行單元產(chǎn)生結(jié)果。
11. 根據(jù)權(quán)利要求10所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使所述計(jì)算裝 置:基于由所述串行數(shù)據(jù)處理算法指定的字大小和所述數(shù)據(jù)寄存器的寬度定義所述段長(zhǎng) 度。
12. 根據(jù)權(quán)利要求10或權(quán)利要求11所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中將所述數(shù)據(jù)緩沖器 定義作為多個(gè)數(shù)據(jù)段包括以交織方式將所述數(shù)據(jù)緩沖器分割成所述多個(gè)數(shù)據(jù)段。
13. 根據(jù)權(quán)利要求12所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述數(shù)據(jù)緩沖器包括多個(gè)數(shù)據(jù) 字,并且其中以交織方式將所述數(shù)據(jù)緩沖器分割成所述多個(gè)數(shù)據(jù)段包括:將所述數(shù)據(jù)緩沖 器中的每個(gè)數(shù)據(jù)字指派給不同的數(shù)據(jù)段,使得每個(gè)數(shù)據(jù)段包括數(shù)據(jù)字的陣列。
14. 根據(jù)權(quán)利要求10-13中任一項(xiàng)所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中每個(gè)結(jié)果包括多個(gè) 數(shù)據(jù)字,并且其中所述多個(gè)指令還使所述計(jì)算裝置通過(guò)所述數(shù)據(jù)字交織所述結(jié)果。
15. 根據(jù)權(quán)利要求10-14中任一項(xiàng)所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中執(zhí)行串行數(shù)據(jù)處理 算法包括執(zhí)行密碼哈希函數(shù)。
16. 根據(jù)權(quán)利要求15所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使所述計(jì)算裝置 針對(duì)填補(bǔ)后的數(shù)據(jù)段中的每個(gè)生成哈希摘要。
17. 根據(jù)權(quán)利要求16所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使所述計(jì)算裝置 組合所述哈希摘要以形成新的數(shù)據(jù)緩沖器并對(duì)所述新的數(shù)據(jù)緩沖器執(zhí)行所述密碼哈希函 數(shù)。
18. 根據(jù)權(quán)利要求17所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中組合所述哈希摘要包括串接所述 結(jié)果并對(duì)串接后的結(jié)果執(zhí)行所述串行數(shù)據(jù)處理算法。
19. 根據(jù)權(quán)利要求10-18中任一項(xiàng)所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使 所述計(jì)算裝置確定與所述串行數(shù)據(jù)處理算法相關(guān)聯(lián)的塊大小,以及填補(bǔ)數(shù)據(jù)段中的每個(gè), 使得填補(bǔ)后的數(shù)據(jù)段中的每個(gè)的長(zhǎng)度是所述塊大小的倍數(shù)。
20. 根據(jù)權(quán)利要求19所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使所述計(jì)算裝置 將固定模式的數(shù)據(jù)比特附加到數(shù)據(jù)段中的每個(gè)。
21. 根據(jù)權(quán)利要求10-20中任一項(xiàng)所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使 所述計(jì)算裝置基于所述計(jì)算裝置的微處理器的特性確定數(shù)據(jù)段的數(shù)量。
22. 根據(jù)權(quán)利要求10-21中任一項(xiàng)所述的機(jī)器可讀存儲(chǔ)介質(zhì),其中所述多個(gè)指令還使 所述計(jì)算裝置基于所述串行數(shù)據(jù)處理算法的特性確定數(shù)據(jù)段的數(shù)量。
23. -種用于處理任意長(zhǎng)度的數(shù)據(jù)緩沖器的方法,所述方法包括: 將所述數(shù)據(jù)緩沖器定義作為多個(gè)數(shù)據(jù)段,每個(gè)數(shù)據(jù)段具有大于零且小于所述數(shù)據(jù)緩沖 器的長(zhǎng)度的段長(zhǎng)度; 根據(jù)串行數(shù)據(jù)處理算法填補(bǔ)每個(gè)數(shù)據(jù)段; 將填補(bǔ)后的數(shù)據(jù)段流式傳送到數(shù)據(jù)寄存器中,所述數(shù)據(jù)寄存器具有多個(gè)數(shù)據(jù)路徑執(zhí)行 單元,每個(gè)填補(bǔ)后的數(shù)據(jù)段使用單個(gè)數(shù)據(jù)指針被流式傳送到不同的數(shù)據(jù)路徑執(zhí)行單元中; 以及 基本并行地在數(shù)據(jù)路徑執(zhí)行單元中的每個(gè)中執(zhí)行串行數(shù)據(jù)處理算法,以針對(duì)每個(gè)數(shù)據(jù) 路徑執(zhí)行單元產(chǎn)生結(jié)果。
24. 根據(jù)權(quán)利要求23所述的方法,其中所述數(shù)據(jù)緩沖器包括多個(gè)數(shù)據(jù)字,并且其中: 將所述數(shù)據(jù)緩沖器定義作為多個(gè)數(shù)據(jù)段包括以交織方式將所述數(shù)據(jù)緩沖器分割成所 述多個(gè)數(shù)據(jù)段,以及 以交織方式將所述數(shù)據(jù)緩沖器分割成所述多個(gè)數(shù)據(jù)段包括:將所述數(shù)據(jù)緩沖器中的每 個(gè)數(shù)據(jù)字指派給不同的數(shù)據(jù)段,使得每個(gè)數(shù)據(jù)段包括數(shù)據(jù)字的陣列。
25. 根據(jù)權(quán)利要求23或權(quán)利要求24所述的方法,還包括:確定與所述串行數(shù)據(jù)處理算 法相關(guān)聯(lián)的塊大小,以及填補(bǔ)數(shù)據(jù)段中的每個(gè),使得填補(bǔ)后的數(shù)據(jù)段中的每個(gè)的長(zhǎng)度是所 述塊大小的倍數(shù)。
【文檔編號(hào)】G06F9/38GK104364757SQ201380030628
【公開(kāi)日】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)人:英特爾公司