CN104364757A - 单个数据缓冲器的并行处理 - Google Patents

单个数据缓冲器的并行处理 Download PDF

Info

Publication number
CN104364757A
CN104364757A CN201380030628.XA CN201380030628A CN104364757A CN 104364757 A CN104364757 A CN 104364757A CN 201380030628 A CN201380030628 A CN 201380030628A CN 104364757 A CN104364757 A CN 104364757A
Authority
CN
China
Prior art keywords
data
segment
data buffer
calculation element
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380030628.XA
Other languages
English (en)
Other versions
CN104364757B (zh
Inventor
S.M.古利
W.K.费哈尔
V.戈帕尔
J.D.圭尔福德
G.M.沃尔里奇
K.S.亚普
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104364757A publication Critical patent/CN104364757A/zh
Application granted granted Critical
Publication of CN104364757B publication Critical patent/CN104364757B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

用于对单个可变长度的数据缓冲器执行串行数据处理算法的技术包括:填补缓冲器的数据段,使数据段流式传送到数据寄存器中,以及对段中的每个并行地执行串行数据处理算法。

Description

单个数据缓冲器的并行处理
相关申请的交叉引用
该本申请在35 U.S.C.$119(e)下要求2012年7月11日提交的美国临时申请序列号61/670,472和2012年9月28日提交的美国专利申请序列号13/631,763的优先权。
背景技术
用于验证数据文件和计算机程序的安全的软件在许多不同情景中是流行的,所述情景诸如操作系统引导序列、程序代码或数据文件的加载、web浏览、数据通信和数据存储。诸如用于认证和/或加密的那些的串行数据处理算法可以以链式相关的方式对数据的单个缓冲器进行操作。那些算法可受到串行链接的约束,因为源自对缓冲器中的一个数据块的处理的输出通常需要对后续的块的处理。
例如,诸如MD5(消息摘要的算法)以及SHA1、SHA256和SHA512(安全哈希算法)的密码哈希函数就通用处理器上的计算而言可能是昂贵的。这样的哈希函数依次对数据的单个缓冲器工作,从而利用从每个数据块得到的计算结果更新哈希摘要状态并使用彼此相互依赖的多轮处理。单个缓冲器的块的串行处理限制现代处理器上的性能。诸如使用矢量单指令多数据(SIMD)单元的多缓冲器处理的方法已被提出以得到应用中的更好的性能,其中能够对多个独立的数据缓冲器进行工作;然而,那些方法不适用于涉及单个缓冲器的哈希的应用。树式哈希是已被使用的另一技术,尽管其跨多个核或引擎。
附图说明
本公开中所述的概念以示例的方式而非以限制性的方式在附图中被示出。为了说明的简单和清晰起见,附图中所示的元件并不一定是按比例绘制的。在被认为合适的地方,附图标记在图之间被重复以指示相应或者类似的元素。
图1是结合其可实施所公开的方法的计算装置的至少一个实施例的简化框图;
图2是用于单个数据缓冲器的并行处理的系统的至少一个实施例的简化的模块图;以及
图3是用于单个数据缓冲器的并行处理的方法的至少一个实施例的简化流程图。
具体实施方式
虽然本公开的概念易受各种更改和替换形式的影响,但其特定实施例已通过示例的方式在附图中被示出并且将在本文中被详细描述。然而,应当理解的是,并不意图将本公开的概念限制到被公开的特别形式,而是相反,意图是涵盖与本公开和所附的权利要求一致的所有更改、等同物和替代物。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的提及指示被描述的实施例可包括特别的特征、结构或特性,但是每个实施例可能或可能不一定包括该特别的特征、结构或特性。此外,这样的短语不一定指代相同的实施例。此外,当结合一实施例描述特别的特征、结构或特性时,主张的是,无论是否被明确描述,结合其他实施例来实现这样的特征、结构或特性都在本领域技术人员的知识范围内。
被公开的实施例在某些情况下可以以硬件、固件、软件或它们的任何组合的方式被实施。被公开的实施例也可被实施作为被瞬时或非瞬时机器可读(例如,计算机可读)存储介质载送或存储于其上的指令,其可被一个或多个处理器读取和执行。机器可读的存储介质可被体现作为任何存储装置、机构或用于以可被机器读取的形式存储或传输信息的其他物理结构(例如,易失性或者非易失性存储器、介质磁盘或其他介质装置)。
在附图中,一些结构或方法特征可能以特定的布置和/或顺序被示出。然而,应当理解的是,这样的特定布置和/或顺序可能不是必需的。相反,在一些实施例中,这样的特征与说明性附图中所示的相比可以以不同的方式和/或顺序被布置。此外,特定附图中包含结构或方法特征并不意味着暗示这样的特征在所有实施例中是必需的,并且在一些实施例中,这样的特征可以不被包括或可与其他特征相结合。
现在参考图1,数据缓冲器处理模块130被嵌入在说明性的计算装置100中。在使用中,数据缓冲器处理模块130将单个数据缓冲器132(例如,任意长度的字符串或“消息”)视为输入。数据缓冲器处理模块130确定单个数据缓冲器132的并行性等级;也就是说,可被串行数据处理算法128(例如,密码哈希函数)并行处理的单个数据缓冲器132的“段”的数量。数据缓冲器处理模块130管理通过算法128对段的并行处理。虽然不同,但在这样的并行处理后算法128的输出具有可与通常通过以传统方式(例如,依次地)对单个数据缓冲器执行算法128获得的结果相当的安全强度。此外,由于对单个数据缓冲器132的分段和并行处理,可以实现性能获益。以这种方式,数据缓冲器处理模块130可以对任何任意的长度的单个数据缓冲器执行串行数据处理算法,即使基础算法对特定大小(例如64字节)的块工作。
说明性计算装置100包括至少一个处理器110、存储器120、输入/输出(I/O)子系统122、存储装置124和一个或多个外围装置140。取决于特别应用,计算装置100可能被体现在任何类型的计算装置中或被体现为任何类型的计算装置,诸如,例如,台式计算机系统、膝上型计算机系统或平板计算机系统、服务器、企业计算机系统、计算机的网络、手持或其他移动计算装置或其他电子装置。
说明性的处理器110包括单个核的一个或多个处理器核或逻辑部分,例如,处理器核112、114、116,在本文中为描述方便起见它们被简称为“核”。在一些实施例中,核112、114、116中的一个或多个被配置为使用SIMD(单指令、多数据)指令集或类似的计算机指令集处理单线程计算机程序(诸如,在一些实施例中,数据缓冲器处理模块130)。更具体地说,在一些实施例中,核112、114、116中的至少一个利用包括一个或多个流扩展、诸如流SIMD扩展(SSE)或更迟的版本(例如,SSEn或AVX(高级矢量扩展 ))的指令集被配置。
该一个或多个核112、114、116包括一个或多个数据寄存器118或可通信地耦合到一个或多个数据寄存器118。寄存器118可被用来在串行数据处理算法128、数据缓冲器处理模块130和/或计算装置100的其它部件的操作期间临时存储数据和/或指令。每个寄存器118具有寄存器大小或“宽度”,其是寄存器118在给定时间可存储的数据量。数据寄存器118中的至少一个被配置用于数据级并行性。例如,在一些实施例中,至少一个数据寄存器118被配置用于SIMD或类似的数据级并行处理;也就是说,它可以被分割成可同时或基本同时对多个数据执行相同的操作的多个功能单元(例如,“通道”(lane)、“数据路径”或“执行单元”)。例如,在SIMD或宽度为128比特的类似寄存器中,计算机指令可以指定每个可以并行处理128比特数据的部分的寄存器118的通道或数据路径的数量,以便可以对每个数据路径同时地、独立于其他数据路径地执行算法128。
说明性核112、114、116也包括一个或多个高速缓存存储器(未示出)或可通信地耦合到其。高速缓存存储器可被用来在串行数据处理算法128、数据缓冲器处理模块130和/或计算装置100的其它部件的操作期间临时存储数据和/或指令。除了高速缓存存储器和寄存器118,处理器110和/或其核112、114、116包括存储器120或以其它方式可通信地耦合到存储器120。存储器120的各部分可被体现作为任何类型的合适的存储器装置,诸如动态随机存取存储器装置(DRAM)、同步动态随机存取存储器装置(SDRAM)、双倍数据速率动态随机存取存储器装置(DDR SDRAM)和/或其他易失性存储器装置。
处理器110还可通信地耦合到I/O子系统122。虽然未特别地示出,但I/O子系统122通常包括存储器控制器(例如,存储器控制器子系统或北桥)、输入/输出控制器(例如,输入/输出控制器子系统或南桥)和固件装置。当然,在其他实施例中,具有其他配置的I/O子系统可被使用。例如,在一些实施例中,I/O子系统122可形成片上系统(SoC)的一部分并与处理器110和计算装置100的其它部件一起被包含在单个集成电路芯片上。因此,将理解的是,I/O子系统122的每个部件在一些实施例中可被定位在共同的集成电路芯片上。
说明性的I/O子系统122可通信地耦合到一个或多个存储装置124。存储装置124的各部分可被体现作为用于存储数据和/或指令的任何合适的装置,诸如磁盘存储装置(例如硬盘)、存储器卡、存储器棒和/或其它。在一些实施例中,串行数据处理算法128、数据缓冲器处理模块130和/或单个数据缓冲器132至少被临时体现在存储装置124中。在执行期间,串行数据处理算法128、数据缓冲器处理模块130和/或单个数据缓冲器132的各部分可被加载到存储器120、高速缓存存储器和/或寄存器118中,以便更快速地处理或出于其他理由。在其他实施例中,串行数据处理算法128和/或数据缓冲器处理模块130可被体现作为电路、机器可执行逻辑单元,等等。也就是说,在各种实施例中,串行数据处理算法128和/或数据缓冲器处理模块130每个均可被体现作为软件、固件、硬件和/或它们的组合。此外,数据缓冲器处理模块130可被体现作为串行数据处理算法128的子模块或“扩展”,或作为可被串行数据处理算法128调用的函数、过程或库对象和/或其它软件(例如,操作系统、安全应用和/或其它)。例如,缓冲器处理模块130可被体现作为诸如安全哈希算法的现有的或者将来的密码哈希算法的一个或多个软件扩展。
I/O子系统122可以可通信地耦合到一个或多个外围装置140。取决于例如计算装置100的预期使用,外围装置140可包括一个或多个网络接口、图形和/或视频适配器、键盘、触摸屏、显示器、打印机、数据存储装置和/或其他外围装置。此外,应当理解的是,计算装置100可包括其他部件、子部件以及为了描述的清楚起见未在图1中示出的装置。
通常,计算装置100的各部件通过示意性地被表示为双头箭头的一个或多个信号路径如图1中所示的那样被可通信地耦合。这样的信号路径可被体现为能够促进相应装置之间的通信的任何类型的有线或者无线信号路径。例如,信号路径可被体现为任意数量的电线、印刷电路板迹线、通路、总线、点对点互连、中介装置,等等。
现在参考图2,示出了其中缓冲器处理模块130管理串行数据处理算法128跨输入数据缓冲器210的并行执行的说明性的系统200。说明性的输入数据缓冲器210是具有任意大小或长度L(以例如比特或字节来度量)的数据字符串(例如,数据文件或“消息”)。如在下文更详细地描述的,缓冲器处理模块130将输入数据缓冲器210的内容分割成多个段S,其中段的数量是表示期望的或者考虑到系统200的特定设计或实施需要而是可能的跨输入数据缓冲器210的并行性等级或程度的正整数。在说明性的实施例中,每个段可根据串行数据处理算法128的要求被填补到指定长度。换而言之,一些段可被填补而另外的不被填补,这取决于填补之前的段的长度和串行数据处理算法128的规定。
缓冲器处理模块130使输入数据缓冲器210的内容(例如,段,根据需要被填补)流式传送到数据寄存器118中,以便每个段被指派给寄存器118的不同通道或数据路径。缓冲器处理模块130发起对寄存器118的每个通道或数据路径并行地执行算法128,以便每个段被串行数据处理算法128并发地处理。
算法128并行地处理串行地在具有指定大小B(例如以比特或字节来度量)的数据块中的数据缓冲器210的每个段(根据需要被填补),其中每个数据块由多个大小为W(例如以比特或字节来度量)的数据字组成,使得B是W的倍数。算法128为每个段生成输出(或“消息摘要”,或者在一些实施例中是“哈希摘要”),其至少可被临时存储在输出数据缓冲器212中。每个输出数据缓冲器212(1)...(S)(其中S是段的数量)的内容具有固定长度D(例如以比特或字节来度量)。在各种实施例中,输入数据缓冲器210和输出数据缓冲器212(1)... 212(S)都可被体现为单个数据缓冲器132,或者被体现在一个或多个临时存储缓冲器中。例如,单个数据缓冲器132的内容可最初对应于输入数据缓冲器210的内容,并且可随着缓冲器处理模块130和/或串行数据处理算法128的执行的进行而被更新。
在一些实施例中,算法128是密码哈希函数,诸如MD5、SHA1、SHA256或SHA512,并且数据缓冲器处理模块130在确定段S的数量时使用密码哈希函数的某些规定(如例如在相关的联邦信息处理标准出版物或FIPS PUB中定义的)作为参数。作为示例,SHA256安全哈希函数的标准指定B = 512比特,W = 32比特,D = 256比特。标准SHA256哈希函数将任意长度的输入缓冲器的内容分解成大小为B的块,并对每个块执行多轮计算,在每轮中使用来自该块的大小为W的字。每轮均更新缓冲器,使得一轮的输出是后一轮的输入。
传统上,SHA256哈希函数依次地处理输入缓冲器的内容的各块,使得针对一个块产生的哈希摘要用作用于下一个块的处理的初始哈希摘要,以此类推,直到输入缓冲器中的每个数据块已被处理。相比之下,缓冲器处理模块130跨单个数据缓冲器定义多个段,其中每个段包括一个或多个数据块,并且缓冲器处理模块130将算法128并行应用到数据缓冲器的每个段。例如,如果数据寄存器具有256比特的宽度,那么缓冲器处理模块130可以将输入数据缓冲器210的内容分割成(寄存器宽度)/W或256/32 = 8个段并对8个段中的每个并行地执行算法128。
现在参考图3,示出了可被缓冲器处理模块130和/或计算装置100的其它模块或部件执行作为计算机化的程序、例程、逻辑和/或指令的、用于对单个数据缓冲器进行并行处理的说明性的方法300。在块310,方法300确定用来将输入数据缓冲器210的内容分割成段S的数量,并相应地通过分割输入缓冲器210的内容来创建所确定数量的段。在一些实施例中,段的数量可以是预定的并且仅作为参数、自变量或存储值而被访问(例如,从查找表或数据库)。在其他实施例中,段的数量可在加载时或运行时被确定。在一些实施例中,段的数量可以是寄存器118的宽度的函数、串行数据处理算法128的参数或规定(例如,块大小、字大小、输出长度,等等)和/或输入数据缓冲器210的长度。作为示例,在SHA256哈希函数被用作算法128的情况下,S = 8,W = 4字节,且B = 64字节。
仍然在块310,每个段被定义为由具有特定宽度(例如,32比特)的数据字组成。在一些实施例中,段字宽度对应于被算法128指定的字宽度W。每个段是使用输入数据缓冲器210的每S个字而被创建的,使得段的长度可被块大小B整除。输入数据缓冲器210的长度L可被段块大小(S乘以B或SB)除,以确定输入数据缓冲器210的多少内容可以在具有相同大小的段中被处理。其中输入数据缓冲器的长度L不可被SB整除,段中的一个或多个可被填补或可创建包含剩余数据的最后一个段。在SHA256示例中,SB = 8*64 = 512字节。由于有8个段,因此使用输入数据缓冲器210中的每8个数据字(32比特,或4字节)形成每个段,直到512*N比特,其中N是正整数且512*N小于L。
在块312,方法300执行每个段的任何必要的填补,作为预处理例程的一部分或根据需要“即时进行”。例如,在密码哈希函数的情况下,可根据需要通过将多个数据比特加对缓冲器长度的指示附加(例如通过串接)到消息的末尾以使得该段具有指定的长度以供所选的算法128处理来填补每个段。在一些实施例中,填补包括“1”比特之后接着是必要数量的“0”比特,之后接着是缓冲器长度。在其他实施例,在每个段的填补中可使用“0”以及“1”比特的其他组合或模式。定义基础算法128的标准或规定指定填补方案。在一些实施例中,每个段通过足以使得填补后的缓冲器是块大小的最小倍数的多个比特被扩展。例如,缓冲器210的每个段可被填补为B字节的其最近的倍数,并且然后在S路SIMD处理被应用到算法128以生成S个摘要的情况下被处理。在此情况下,每段填补根据算法128的标准填补方案被完成。在某些情况下(诸如在剩余段的情况下),与其他填补后的段相比段可具有不同的填补后长度。例如,在段中的数据加必不可少的填补的量超过块大小时填补可能导致具有额外块的段。
在块314,方法300使各段流式传送到或以其它方式将各段读取到寄存器118的数据路径中,使得每个段被读取到不同的数据路径中(例如,使用交织)。在一些实施例中,这是通过使用被递增直至SB的单个数据指针来实现的;也就是说,直到所有均等大小的段已被处理。在SHA256示例中,一次将八个32比特的字读入寄存器的8个数据路径中。作为另一个示例,在具有128比特寄存器的SIMD能力的微处理器上执行SHA-1会有以下参数设置:B = 64字节,W = 4字节,S = 4,D = 20字节。
在块316,对每个填补后的数据段并行地执行串行数据处理算法128。也就是说,针对每个填补后的段,算法128依次处理该段的各块,同时其他段正被算法128相似地处理。因此,中间结果(例如,哈希摘要)针对每个填补后的段被创建。在SHA256示例中,基本上同时地对每个数据路径/32比特的字执行SHA256算法,并且然后下8个字被读取到寄存器数据路径中并被SHA256算法并行处理,以此类推,直到块大小B。
由于每个数据段根据算法128的规定被填补和处理这一事实,在一些实施例中,没有必要组合各个段结果。因此,段结果可被存储在分别的缓冲器中或者一起被存储在一个缓冲器中(例如,如果被串接的话)。可选地,在块318,单独的S个摘要可被组合以形成单个结果,例如,算法128的最终输出。例如,S个摘要的集合可被视为长度为S*D的另一数据缓冲器,并且然后可以以单个缓冲器的方式生成大小为D的最终哈希。段结果可以以多种不同的方式被组合,包括使用异或(XOR)或加法(ADD)函数,或通过串接段结果并且然后再次执行算法128。使用SHA256示例,8个哈希摘要中的每个可被组合成一个256比特的哈希摘要。本领域技术人员应当理解的是,方法300可被容易地适配到其他处理器配置和串行数据处理算法。例如,具有其他寄存器宽度的寄存器可被使用。作为示例,使用具有512比特的宽度的AVX3,段的数量S会是16、而非8,并且每个段会由每16个(32比特的)字组成。
在一些实施例中,数据段类似于交织的独立缓冲器,其中如上面讨论的那样针对那些段并行地生成多个独立的哈希摘要。在一些实施例中,交织的段的数量是2的幂。在创建段时,方法300的一些实施例以更细的粒度(例如,数据字)交织数据,而非将缓冲器210分解成块或更大尺寸的处理部分。
再次参考图3,方法300的说明性实施例使用哈希算法H,其被定义为对每个为B字节大小的整数个块工作。下面的实施例以给定的并行性等级S对长度为L的消息M0进行哈希(其中||符号表示串接)。在段被创建后,与H相关联的填补功能利用预定的模式和段长度的串接将消息的每个段扩展到为B字节的倍数的最小长度。
参考图3的块310,消息M0被分割成每个长度为L/S的S个段。消息M0可以以交织的方式被分割,使得M0的每字大小的W比特被指派给不同的段。每个段可被表示为W比特的字的阵列:
其中每个M0[n]是消息中的字大小W索引。参考图3的块312,由算法128指定的填补功能被应用到消息的每个段,从而生成每个具有填补后的长度的各个段。每个段的填补后的长度是为B字节的倍数的、相应段可被扩展到的最小长度。如上面提到的,一些段可能具有不同于其他段的填补后的长度。
参考图3的块316,S个叶级摘要Dk在填补后的段上被生成为,k = 0 ...(S-l)。参考图3的块318(可选地),新消息M1可通过将来自块316的结果得到的摘要交织每字大小的W比特而被创建。如果 ,那么每个Dk[n]可以是到段的摘要中的字大小W索引。哈希算法H然后可被应用到M1(例如, H(M1))。
在一些实施例中,排列在存储器中的数据缓冲器210的内容被直接读取(例如,“流式传送”)到SIMD寄存器中而无需变换。在一些实施例中,方法300允许数据被流式传送(例如,从网络连接)以被直接馈送到寄存器118中,而无需在开始的时间知道缓冲器210的长度。因此,单线程应用不必被修改(除了在哈希算法级)以利用所公开的并行处理的性能益处。
在一些实施例中,算法128可以基于计算和/或安全考虑而被选择或排序,并且可利用本文中所公开的并行化版本(例如SHAlx4、SHAlx8、SHA256x4、SHA256x8,等等)来扩充各种协议/标准中的密码哈希算法的当前(可能被排序的)列表。
在例如涉及验证被安全加载的文件的签名的应用的一些实施例中,签名实体将所选的安全的现有密码哈希算法(例如SHA256)替换为对于用于验证的计算来说最高效的方法300的版本。例如,如果验证实体在其处理器核中具有128比特的SIMD数据路径执行单元,并且如果SHA256强度摘要是期望的,那么SHA256x4算法可能是被期望的(因为SHA256算法是基于32比特的,128比特的SIMD执行单元可以并行处理128/32 = 4个段)。因此,代替使用当前被使用的32比特算法之一(例如,MD5、SHAl、SHA256),验证实体会使用相应的MD5x8、SHAlx4、SHA256x4并行化算法。在一些实施例中,附加的并行性在MD5的情况下由于该算法的受约束的数据相关链而可能是期望的,即使从128比特的SIMD的角度来说仅仅需要4个段。
在其中可能会有不同计算强度的很多验证装置的实施例中,签名实体可能需要确定针对大部分其验证装置而工作的并行性等级。所公开的实施例不需要服务器很准确地估计其,因为在签名期间可以创建更大的并行性等级,并且验证代理在验证期间可以执行多遍的方法,如果它们的SIMD或硬件能力不能一次处理所有如指定那样多的段的话。例如,签名者可以使用x4方案,而验证代理可以执行两遍x2方案。
在一些实施例中,如果需要太多遍(例如,由于管理摘要的多个状态变量),可能会导致一定效率损失,然而,仍然可以有效地以流式传送方式仅一次就将数据引入。在此情况下,该应用将需要循环通过状态变量的集合。例如,在某些情况下,客户装置可能根本不具有SIMD单元,并且需要执行简单的标量操作以处理SHA256x4哈希。在此情况下,代替与1组SHA256状态变量(32字节)一起工作地,它将同时对4个这样的状态变量的副本(128字节)工作,从而在它数据处理来自数据缓冲器的字时循环通过它们。状态大小方面的该增长是很小的。然而,与用于块(例如用于SHA)的消息调度相关联的工作集合大小增长在某些情况下可能是不期望的。如果工作集合大小方面的增长是有问题的,则可以选择存储四个数据块,并严格地一次对一个交织块工作。很多其它变化是可能的,并且各种实施例可以允许任何装置在无过度负担的情况下有效地处理并行哈希签名。然而,如果固定硬件引擎被设计为对给定缓冲器/长度输入执行整个哈希函数、包括填补,那么填补可被设计为与用以实现相同的结果的硬件相同。如果硬件引擎以每块为基础进行工作或者具有不包括填补的模式,那么它可被用来执行所公开的多哈希方法。
虽然所公开的实施例能够做到大的并行性程度(例如,x32或x64),但在一些实施例中根据现有装置或合理预期的未来装置的能力(例如,x4或x8)来配置方法300可能是期望的。
在一些实施例中,方法300的SHA256x4版本已被示出为提供相对于对合理大小的1KB数据缓冲器的最好SHA256算法计算的大约2.6x的性能增益。在一些实施例中,方法300的MD5x8版本已被示出为导致相对于标准MD5算法的大约4.4x性能增益。多哈希性能应该与未来处理器的增大的数据路径宽度成比例地攀升。此外,通过使用所公开的实施例,结果得到的摘要应当至少与通过基础哈希函数的直接应用获得的摘要一样安全和抗冲突。除了当今最通常被使用的哈希函数,所公开的实施例可被适配用于新的SHA3候选。
示例
下面提供本文中所公开的装置、系统和方法的说明性的示例。装置、系统和方法的实施例可包括下述示例中的任何一个或多个以及其任何组合。
示例1包括一种用于处理数据缓冲器的计算装置。该计算装置包括:数据缓冲器处理模块,用以:访问具有缓冲器长度和多个数据段的任意长度的数据缓冲器,每个数据段具有大于零且小于所述缓冲器长度的段长度;根据串行数据处理算法填补每个数据段;将填补后的数据段中的每个直接读取到数据寄存器中,所述数据寄存器具有多个数据路径,每个填补后的数据段被直接读取到不同的数据路径中;以及基本并行地对数据路径中的每个执行串行数据处理算法,以针对每个数据路径产生结果。
示例2包括示例1的主题,并且其中所述数据缓冲器具有任意的长度。
示例3包括示例1和示例2中任一项的主题,并且其中所述数据缓冲器处理模块包括用以将填补后的数据段中的每个直接读取到所述数据寄存器的不同数据路径中的数据缓冲器处理模块。
示例4包括示例1-3中任一项的主题,并且其中所述数据缓冲器处理模块包括用以根据所述串行数据处理算法填补数据段中的每个的数据缓冲器处理模块。
示例5包括示例1-4中任一项的主题,并且其中所述数据缓冲器处理模块被体现为对密码哈希算法的扩展。
示例6包括示例1-5中任一项的主题,并且其中所述数据缓冲器处理模块包括用以在所述计算装置的微处理器的单个核上执行的数据缓冲器处理模块。
示例7包括示例1-6中任一项的主题,并且其中所述数据缓冲器处理模块包括用以在所述单个核的单个线程上执行的数据缓冲器处理模块。
示例8包括示例1-7中任一项的主题,并且其中所述数据缓冲器处理模块包括用以在所述计算装置的单指令多数据能力的处理器上执行的数据缓冲器处理模块。
示例9包括示例1-8中任一项的主题,并且其中所述数据缓冲器处理模块包括用以与单线程软件应用一起执行的数据缓冲器处理模块。
示例10包括一种用于处理任意长度的数据缓冲器的方法。所述方法包括:将所述数据缓冲器定义作为多个数据段,每个数据段具有大于零且小于所述数据缓冲器的长度的段长度;根据串行数据处理算法填补每个数据段;将填补后的数据段流式传送到数据寄存器中,所述数据寄存器具有多个数据路径执行单元,每个填补后的数据段使用单个数据指针被流式传送到不同的数据路径执行单元中;以及基本并行地在数据路径执行单元中的每个中执行串行数据处理算法,以针对每个数据路径执行单元产生结果。
示例11包括示例10的主题,并且还包括:基于由所述串行数据处理算法指定的字大小和所述数据寄存器的宽度定义所述段长度。
示例12包括示例10和示例11中任一项的主题,并且其中将所述数据缓冲器定义作为多个数据段包括以交织方式将所述数据缓冲器分割成所述多个数据段。
示例13包括示例10-12中任一项的主题,并且其中所述数据缓冲器包括多个数据字,并且以交织方式将所述数据缓冲器分割成所述多个数据段包括:将所述数据缓冲器中的每个数据字指派给不同的数据段,使得每个数据段包括数据字的阵列。
示例14包括示例10-13中任一项的主题,并且其中每个结果包括多个数据字,并且还包括通过所述数据字交织所述结果。
示例15包括示例10-14中任一项的主题,并且其中执行串行数据处理算法包括执行密码哈希函数。
示例16包括示例10-15中任一项的主题,并且还包括针对填补后的数据段中的每个生成哈希摘要。
示例17包括示例10-16中任一项的主题,并且还包括组合所述哈希摘要以形成新的数据缓冲器并对所述新的数据缓冲器执行所述密码哈希函数。
示例18包括示例10-17中任一项的主题,并且其中所述组合包括串接所述结果并对串接后的结果执行所述串行数据处理算法。
示例19包括示例10-18中任一项的主题,并且还包括:确定与所述串行数据处理算法相关联的块大小,以及填补数据段中的每个,使得填补后的数据段中的每个的长度是所述块大小的倍数。
示例20包括示例10-19中任一项的主题,并且还包括:将固定模式的数据比特附加到数据段中的每个。
示例21包括示例10-20中任一项的主题,并且还包括基于计算装置的微处理器的特性确定数据段的数量。
示例22包括示例10-21中任一项的主题,并且还包括基于所述串行数据处理算法的特性确定数据段的数量。
实例23包括一种计算装置,其具有处理器以及其中存储有多个指令的存储器,所述多个指令在被所述处理器执行时使所述计算装置执行示例10-22中的任一项的方法。
示例24包括包含存储于其上的多个指令的一个或多个机器可读存储介质,所述多个指令响应于被执行导致计算装置执行示例10-22中任一项的方法。
示例25包括包含存储于其上的多个指令的一个或多个机器可读存储介质,所述多个指令响应于被执行导致计算装置:将数据缓冲器分割成多个数据段,每个数据段具有大于零且小于所述数据缓冲器的长度的段长度;根据串行数据处理算法填补每个数据段;将每个填补后的数据段直接读取到所述计算装置的数据寄存器的不同的数据路径执行单元中;以及基本并行地对数据路径执行单元中的每个执行密码哈希算法,以针对每个数据路径执行单元产生结果。
示例26包括示例25的主题,并且还包括组合在所述数据路径执行单元处产生的结果。
示例27包括示例25或26中任一项的主题,并且还包括对组合后的结果执行所述密码哈希算法。
示例28包括示例25-27中任一项的主题,并且其中所述密码哈希算法包括安全哈希算法或MD5算法。
示例29包括示例25-28中任一项的主题,并且还包括:基于由所述密码哈希算法指定的字大小和所述数据寄存器的宽度定义所述段长度。
示例30包括示例25-29中任一项的主题,并且其中将所述数据缓冲器定义作为多个数据段包括以交织方式将所述数据缓冲器分割成所述多个数据段。
示例31包括示例25-30中任一项的主题,并且其中所述数据缓冲器包括多个数据字,每个数据字包括多个数据比特,并且以交织方式将所述数据缓冲器分割成所述多个数据段包括:将所述数据缓冲器中的每个数据字指派给不同的数据段,使得每个数据段包括数据字的阵列。
示例32包括示例25-31中任一项的主题,并且其中每个结果包括多个数据字,并且所述方法包括通过所述数据字交织所述结果。
示例33包括示例25-32中任一项的主题,并且还包括基于所述计算装置的微处理器的特性和所述密码哈希算法的特性中的一个或多个确定数据段的数量。

Claims (25)

1. 一种用于处理数据缓冲器的计算装置,所述计算装置包括:
数据缓冲器处理模块,用以:
  访问具有缓冲器长度和多个数据段的任意长度的数据缓冲器,每个数据段具有大于零且小于所述缓冲器长度的段长度;
  根据串行数据处理算法填补每个数据段;
  将填补后的数据段中的每个直接读取到数据寄存器中,所述数据寄存器具有多个数据路径,每个填补后的数据段被直接读取到不同的数据路径中;以及
  基本并行地对数据路径中的每个执行串行数据处理算法,以针对每个数据路径产生结果。
2. 根据权利要求1所述的计算装置,其中所述数据缓冲器具有任意的长度。
3. 根据权利要求1或权利要求2所述的计算装置,其中所述数据缓冲器处理模块包括用以将填补后的数据段中的每个直接读取到所述数据寄存器的不同数据路径中的数据缓冲器处理模块。
4. 根据权利要求1-3中任一项所述的计算装置,其中所述数据缓冲器处理模块包括用以根据所述串行数据处理算法填补数据段中的每个的数据缓冲器处理模块。
5. 根据权利要求1-4中任一项所述的计算装置,其中所述数据缓冲器处理模块被体现为对密码哈希算法的扩展。
6. 根据权利要求1-5中任一项所述的计算装置,其中所述数据缓冲器处理模块包括用以在所述计算装置的微处理器的单个核上执行的数据缓冲器处理模块。
7. 根据权利要求6所述的计算装置,其中所述数据缓冲器处理模块包括用以在所述单个核的单个线程上执行的数据缓冲器处理模块。
8. 根据权利要求1-7中任一项所述的计算装置,其中所述数据缓冲器处理模块包括用以在所述计算装置的单指令多数据能力的处理器上执行的数据缓冲器处理模块。
9. 根据权利要求1-8中任一项所述的计算装置,所述数据缓冲器处理模块包括用以与单线程软件应用一起执行的数据缓冲器处理模块。
10. 一个或多个机器可读存储介质,其包含存储于其上的多个指令,所述多个指令响应于被执行导致计算装置:
将所述计算装置的任意长度的数据缓冲器定义作为多个数据段,每个数据段具有大于零且小于所述数据缓冲器的长度的段长度;
根据串行数据处理算法填补每个数据段;
将填补后的数据段流式传送到数据寄存器中,所述数据寄存器具有多个数据路径执行单元,每个填补后的数据段使用单个数据指针被流式传送到不同的数据路径执行单元中;以及
基本并行地在数据路径执行单元中的每个中执行串行数据处理算法,以针对每个数据路径执行单元产生结果。
11. 根据权利要求10所述的机器可读存储介质,其中所述多个指令还使所述计算装置:基于由所述串行数据处理算法指定的字大小和所述数据寄存器的宽度定义所述段长度。
12. 根据权利要求10或权利要求11所述的机器可读存储介质,其中将所述数据缓冲器定义作为多个数据段包括以交织方式将所述数据缓冲器分割成所述多个数据段。
13. 根据权利要求12所述的机器可读存储介质,其中所述数据缓冲器包括多个数据字,并且其中以交织方式将所述数据缓冲器分割成所述多个数据段包括:将所述数据缓冲器中的每个数据字指派给不同的数据段,使得每个数据段包括数据字的阵列。
14. 根据权利要求10-13中任一项所述的机器可读存储介质,其中每个结果包括多个数据字,并且其中所述多个指令还使所述计算装置通过所述数据字交织所述结果。
15. 根据权利要求10-14中任一项所述的机器可读存储介质,其中执行串行数据处理算法包括执行密码哈希函数。
16. 根据权利要求15所述的机器可读存储介质,其中所述多个指令还使所述计算装置针对填补后的数据段中的每个生成哈希摘要。
17. 根据权利要求16所述的机器可读存储介质,其中所述多个指令还使所述计算装置组合所述哈希摘要以形成新的数据缓冲器并对所述新的数据缓冲器执行所述密码哈希函数。
18. 根据权利要求17所述的机器可读存储介质,其中组合所述哈希摘要包括串接所述结果并对串接后的结果执行所述串行数据处理算法。
19. 根据权利要求10-18中任一项所述的机器可读存储介质,其中所述多个指令还使所述计算装置确定与所述串行数据处理算法相关联的块大小,以及填补数据段中的每个,使得填补后的数据段中的每个的长度是所述块大小的倍数。
20. 根据权利要求19所述的机器可读存储介质,其中所述多个指令还使所述计算装置将固定模式的数据比特附加到数据段中的每个。
21. 根据权利要求10-20中任一项所述的机器可读存储介质,其中所述多个指令还使所述计算装置基于所述计算装置的微处理器的特性确定数据段的数量。
22. 根据权利要求10-21中任一项所述的机器可读存储介质,其中所述多个指令还使所述计算装置基于所述串行数据处理算法的特性确定数据段的数量。
23. 一种用于处理任意长度的数据缓冲器的方法,所述方法包括:
将所述数据缓冲器定义作为多个数据段,每个数据段具有大于零且小于所述数据缓冲器的长度的段长度;
根据串行数据处理算法填补每个数据段;
将填补后的数据段流式传送到数据寄存器中,所述数据寄存器具有多个数据路径执行单元,每个填补后的数据段使用单个数据指针被流式传送到不同的数据路径执行单元中;以及
基本并行地在数据路径执行单元中的每个中执行串行数据处理算法,以针对每个数据路径执行单元产生结果。
24. 根据权利要求23所述的方法,其中所述数据缓冲器包括多个数据字,并且其中:
将所述数据缓冲器定义作为多个数据段包括以交织方式将所述数据缓冲器分割成所述多个数据段,以及
以交织方式将所述数据缓冲器分割成所述多个数据段包括:将所述数据缓冲器中的每个数据字指派给不同的数据段,使得每个数据段包括数据字的阵列。
25. 根据权利要求23或权利要求24所述的方法,还包括:确定与所述串行数据处理算法相关联的块大小,以及填补数据段中的每个,使得填补后的数据段中的每个的长度是所述块大小的倍数。
CN201380030628.XA 2012-07-11 2013-07-10 单个数据缓冲器的并行处理 Active CN104364757B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261670472P 2012-07-11 2012-07-11
US61/670472 2012-07-11
US13/631,763 US10203934B2 (en) 2012-07-11 2012-09-28 Parallell processing of a single data buffer
US13/631763 2012-09-28
PCT/US2013/049887 WO2014011743A1 (en) 2012-07-11 2013-07-10 Parallel processing of a single data buffer

Publications (2)

Publication Number Publication Date
CN104364757A true CN104364757A (zh) 2015-02-18
CN104364757B CN104364757B (zh) 2020-08-11

Family

ID=49915004

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201380030628.XA Active CN104364757B (zh) 2012-07-11 2013-07-10 单个数据缓冲器的并行处理
CN201380030617.1A Active CN104364756B (zh) 2012-07-11 2013-07-10 单个数据缓冲器的并行处理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201380030617.1A Active CN104364756B (zh) 2012-07-11 2013-07-10 单个数据缓冲器的并行处理

Country Status (6)

Country Link
US (2) US10198248B2 (zh)
EP (2) EP2872990B1 (zh)
JP (2) JP5981030B2 (zh)
KR (3) KR20150008483A (zh)
CN (2) CN104364757B (zh)
WO (2) WO2014011743A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108027772A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 用于逻辑处理器的不同的系统寄存器
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501448B2 (en) 2008-05-27 2016-11-22 Stillwater Supercomputing, Inc. Execution engine for executing single assignment programs with affine dependencies
US10198248B2 (en) 2012-07-11 2019-02-05 Intel Corporation Parallel processing of a single data buffer
WO2014068950A1 (ja) * 2012-10-31 2014-05-08 日本電気株式会社 データ処理システム、データ処理方法およびプログラム
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US9425953B2 (en) 2013-10-09 2016-08-23 Intel Corporation Generating multiple secure hashes from a single data buffer
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
JP6721911B2 (ja) * 2014-02-20 2020-07-15 スティルウォーター スーパーコンピューティング,インク. アフィン従属による単一割当プログラムを実行するための実行エンジン
US9912481B2 (en) * 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
CN106375243B (zh) * 2015-07-22 2019-09-03 华为技术有限公司 数据处理设备和光传送网络交换机
CN107615273A (zh) 2015-12-04 2018-01-19 慧与发展有限责任合伙企业 组合数据块的散列
US10776310B2 (en) * 2017-03-14 2020-09-15 Azurengine Technologies Zhuhai Inc. Reconfigurable parallel processor with a plurality of chained memory ports
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
CN107888657B (zh) * 2017-10-11 2020-11-06 上海交通大学 低延迟分布式存储系统
KR102290229B1 (ko) * 2017-11-22 2021-08-20 한국전자통신연구원 병렬 처리를 위한 데이터 생성 장치
US10725789B2 (en) 2017-11-22 2020-07-28 Electronics And Telecommunications Research Institute Data generation device for parallel processing
CN108549583B (zh) * 2018-04-17 2021-05-07 致云科技有限公司 大数据处理方法、装置、服务器及可读存储介质
CN108984470A (zh) * 2018-06-19 2018-12-11 四川斐讯信息技术有限公司 一种fpga矿机算力的提升系统及方法
CN112148391A (zh) * 2019-06-26 2020-12-29 北京百度网讯科技有限公司 生成基于芯片的计算功能的方法、装置、设备和存储介质
CN112104449B (zh) * 2020-08-20 2022-02-11 郑州信大捷安信息技术股份有限公司 一种用于哈希算法的sdk

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001056221A2 (en) * 2000-01-31 2001-08-02 Vdg Inc. Block encryption method and schemes for data confidentiality and integrity protection
US20080165953A1 (en) * 2006-10-23 2008-07-10 Sarvar Patel Processing method for message integrity with tolerance for non-sequential arrival of message data
CN101288058A (zh) * 2005-08-08 2008-10-15 飞思卡尔半导体公司 多模式无线宽带信号处理器系统和方法
US20100106976A1 (en) * 2008-10-23 2010-04-29 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems
US8055970B1 (en) * 2005-11-14 2011-11-08 Raytheon Company System and method for parallel processing of data integrity algorithms

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018778A (en) 1996-05-03 2000-01-25 Netcell Corporation Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory
US20070294510A1 (en) 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
DE19957594B4 (de) 1999-11-30 2004-08-26 OCé PRINTING SYSTEMS GMBH Verfahren zum Synchronisieren von threads eines Computerprogramms
CA2343437A1 (en) 2001-04-06 2002-10-06 Ibm Canada Limited-Ibm Canada Limitee Method and system for cross platform, parallel processing
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US8140824B2 (en) 2002-11-21 2012-03-20 International Business Machines Corporation Secure code authentication
US7552419B2 (en) 2004-03-18 2009-06-23 Intel Corporation Sharing trusted hardware across multiple operational environments
US20080010463A1 (en) * 2006-07-10 2008-01-10 Motorola, Inc. Method for producing truncated message digests
WO2008064153A2 (en) 2006-11-21 2008-05-29 Lucent Technologies Inc. Processing method for message integrity with tolerance for non-sequential arrival of message data
CN101304473B (zh) 2008-06-20 2010-09-08 中山大学 一种基于散列表的双向机顶盒会话信息维护方法
US8493979B2 (en) * 2008-12-30 2013-07-23 Intel Corporation Single instruction processing of network packets
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US8996556B2 (en) 2009-06-05 2015-03-31 Microsoft Technology Licensing, Llc Parallel processing of an ordered data stream
JP2011081594A (ja) 2009-10-07 2011-04-21 Mitsubishi Electric Corp データ処理装置及びデータ処理プログラム
US8443343B2 (en) 2009-10-28 2013-05-14 Intel Corporation Context-sensitive slicing for dynamically parallelizing binary programs
US8467532B2 (en) 2010-01-04 2013-06-18 Tata Consultancy Services Limited System and method for secure transaction of data between a wireless communication device and a server
US8842833B2 (en) 2010-07-09 2014-09-23 Tata Consultancy Services Limited System and method for secure transaction of data between wireless communication device and server
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
US8856546B2 (en) * 2012-06-07 2014-10-07 Intel Corporation Speed up secure hash algorithm (SHA) using single instruction multiple data (SIMD) architectures
US10198248B2 (en) 2012-07-11 2019-02-05 Intel Corporation Parallel processing of a single data buffer

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001056221A2 (en) * 2000-01-31 2001-08-02 Vdg Inc. Block encryption method and schemes for data confidentiality and integrity protection
CN101288058A (zh) * 2005-08-08 2008-10-15 飞思卡尔半导体公司 多模式无线宽带信号处理器系统和方法
US8055970B1 (en) * 2005-11-14 2011-11-08 Raytheon Company System and method for parallel processing of data integrity algorithms
US20080165953A1 (en) * 2006-10-23 2008-07-10 Sarvar Patel Processing method for message integrity with tolerance for non-sequential arrival of message data
US20100106976A1 (en) * 2008-10-23 2010-04-29 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MARTIJN SPRENGERS: "GPU-based Password Cracking On the Security of Password Hashing Schemes regarding Advances in Graphics Processing Units", 《RADBOUD UNIVERSITY NIJMEGEN FACULTY OF SCIENCE KERCKHOFFS INSTITUTE》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108027772A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 用于逻辑处理器的不同的系统寄存器
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
CN108027772B (zh) * 2015-09-19 2022-11-15 微软技术许可有限责任公司 用于逻辑处理器的不同的系统寄存器

Also Published As

Publication number Publication date
US10198248B2 (en) 2019-02-05
EP2872987A4 (en) 2016-02-24
EP2872990A1 (en) 2015-05-20
WO2014011743A1 (en) 2014-01-16
EP2872990B1 (en) 2019-10-09
EP2872987B1 (en) 2019-10-16
KR101755541B1 (ko) 2017-07-07
CN104364756A (zh) 2015-02-18
JP5981030B2 (ja) 2016-08-31
JP2015523596A (ja) 2015-08-13
WO2014011746A1 (en) 2014-01-16
KR20150008483A (ko) 2015-01-22
CN104364757B (zh) 2020-08-11
US10203934B2 (en) 2019-02-12
CN104364756B (zh) 2019-05-14
KR20150008185A (ko) 2015-01-21
US20140019693A1 (en) 2014-01-16
KR101753548B1 (ko) 2017-07-03
EP2872990A4 (en) 2016-03-02
KR20160105988A (ko) 2016-09-08
JP6141421B2 (ja) 2017-06-07
JP2015529865A (ja) 2015-10-08
EP2872987A1 (en) 2015-05-20
US20140019694A1 (en) 2014-01-16

Similar Documents

Publication Publication Date Title
CN104364757A (zh) 单个数据缓冲器的并行处理
US11681529B2 (en) Apparatuses, methods, and systems for access synchronization in a shared memory
US10073815B2 (en) System and method for speeding up general matrix-matrix multiplication on the GPU
KR102449616B1 (ko) 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치
BR102020019657A2 (pt) aparelhos, métodos e sistemas para instruções de um acelerador de operações de matriz
CN114625423A (zh) 用于执行将矩阵变换为行交错格式的指令的系统和方法
CN102455971B (zh) 应用级随机指令测试方法、系统及装置
CN114153498A (zh) 用于加载片寄存器对的系统和方法
US20230169173A1 (en) Standardized Interface for Intellectual Property Blocks
CN112148210A (zh) 用于存储器保护的装置id
CN116860334A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
CN112256623A (zh) 一种基于异构系统的处理性能优化方法及装置
CN113032275A (zh) 字段测试方法、装置、电子设备及存储介质
US10120602B2 (en) Device and method for determining data placement destination, and program recording medium
CN111752745A (zh) 对码字中相邻两位错误的检测
CN103198258B (zh) 复合系统以及传输数据的方法
CN113849770A (zh) 矩阵数据按行分散和收集
CN113849768A (zh) 伴随数据类型转换来加载和存储矩阵数据
Plank et al. Gf-complete: A comprehensive open source library for Galois field arithmetic version 1.02
US11914564B1 (en) Merkle tree-based data management method and apparatus

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant