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