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

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

Info

Publication number
CN104364756A
CN104364756A CN201380030617.1A CN201380030617A CN104364756A CN 104364756 A CN104364756 A CN 104364756A CN 201380030617 A CN201380030617 A CN 201380030617A CN 104364756 A CN104364756 A CN 104364756A
Authority
CN
China
Prior art keywords
data
segment
buffer
calculation element
data 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
CN201380030617.1A
Other languages
English (en)
Other versions
CN104364756B (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 CN104364756A publication Critical patent/CN104364756A/zh
Application granted granted Critical
Publication of CN104364756B publication Critical patent/CN104364756B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (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,761的优先权。
背景技术
用于验证数据文件和计算机程序的安全的软件在许多不同情景中是流行的,所述情景诸如操作系统引导序列、程序代码或数据文件的加载、web浏览、数据通信和数据存储。诸如用于认证和/或加密的那些的串行数据处理算法可以以链式相关的方式对数据的单个缓冲器进行操作。那些算法可受到串行链接的约束,因为源自对缓冲器中的一个数据块的处理的输出通常需要对后续的块的处理。
例如,诸如MD5(消息摘要的算法)以及SHA1、SHA256和SHA512(安全哈希算法)的密码哈希函数就通用处理器上的计算而言可能是昂贵的。这样的哈希函数依次对数据的单个缓冲器工作,从而利用从每个数据块得到的计算结果更新哈希摘要状态并使用彼此相互依赖的多轮处理。单个缓冲器的块的串行处理限制现代处理器上的性能。诸如使用矢量单指令多数据(SIMD)单元的多缓冲器处理的方法已被提出以得到应用中的更好的性能,其中能够对多个独立的数据缓冲器进行工作;然而,那些方法不适用于涉及单个缓冲器的哈希的应用。树式哈希是已被使用的另一技术,尽管其跨多个核或引擎。
附图说明
本公开中所述的概念以示例的方式而非以限制性的方式在附图中被示出。为了说明的简单和清晰起见,附图中所示的元件并不一定是按比例绘制的。例如,为清晰起见一些元件的尺寸可能相对于其它元件被夸大。另外,在被认为合适的地方,附图标记在图之间被重复以指示相应或者类似的元素。
图1是结合其可实施所公开的方法的计算装置的至少一个实施例的简化框图;
图2是用于单个数据缓冲器的并行处理的系统的至少一个实施例的简化的模块图;
图3是用于单个数据缓冲器的并行处理的方法的至少一个实施例的简化流程图;
图4是单个数据缓冲器的并行处理的至少一个实施例的简化的示例;以及
图5是单个数据缓冲器的并行处理的结果的至少一个实施例的简化示例。
具体实施方式
虽然本公开的概念易受各种更改和替换形式的影响,但其特定实施例已通过示例的方式在附图中被示出并且将在本文中被详细描述。然而,应当理解的是,并不意图将本公开的概念限制到被公开的特别形式,而是相反,意图是涵盖与本公开和所附的权利要求一致的所有更改、等同物和替代物。
在以下描述中,阐述了很多特定细节,以便提供对本公开的更透彻的理解,所述细节诸如逻辑实施、操作码、用于指定操作数的手段、资源分区/分享/复制实施、系统部件的类型和相互关系以及逻辑分区/集成选择。然而,本领域技术人员将要理解的是,可以在没有这样的特定细节的情况下实践本公开的实施例。在其它实例中,没有详细示出控制结构、门级电路和全软件指令序列,以免模糊对本文中所述的概念的描述。本领域普通技术人员利用所包括的描述将能够在无需过度实验的情况下实施合适的功能。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的提及指示被描述的实施例可包括特别的特征、结构或特性,但是每个实施例可能不一定包括该特别的特征、结构或特性。此外,这样的短语不一定指代相同的实施例。此外,当结合一实施例描述特别的特征、结构或特性时,主张的是,无论是否被明确描述,结合其他实施例来实现这样的特征、结构或特性都在本领域技术人员的知识范围内。
本文中所述的概念的实施例可以以硬件、固件、软件或它们的任何组合的方式被实施。实施在计算机系统中的实施例可包括部件之间的一个或多个点到点或基于总线的互连。本文中所述的概念的实施例也可被实施作为被一个或多个机器可读或计算机可读的存储介质载送或存储于其上的指令,其可被一个或多个处理器读取和执行。机器可读或计算机可读的存储介质可被体现为用于以可被机器(例如,计算装置)读取的形式存储或传输信息的任何装置、机构或物理结构。例如,机器可读或计算机可读的存储介质可被体现为:只读存储器(ROM)装置;随机存取存储器(RAM)装置;磁盘存储介质;光学存储介质;闪存装置;迷你型或微型SD卡、存储棒以及其它。
在附图中,为便于描述,可示出示意性元素的特定布置或顺序,所述元素诸如表示装置、模块、指令块和数据元素的那些。然而,本领域技术人员应当理解的是,附图中的示意性元素的特定顺序或布置并不意味着暗示处理的序列或特定顺序或者处理的分开是必需的。此外,附图中示意性元素的包括并不意味着暗示这样的元素在所有实施例中都是必需的或者在一些实施例中由这样的元素表示的特征可以不被包括或与其它元素相组合。
通常,用来表示指令块的示意性元素可使用机器可读指令的任何合适形式来实施,诸如软件或固件应用、程序、函数、模块、例程、进程、过程、插件、小应用程序、微件、代码段和/或其它,并且每个这样的指令可使用任何合适的编程语言、库、应用程序编程接口(API)和/或其他软件开发工具被实施。例如,可使用Java、C++和/或其它编程语言来实施一些实施例。相似地,用来表示数据或信息的示意性元素可使用任何合适的电子布置或结构来实施,诸如寄存器、数据存储、表格、记录、阵列、索引、哈希、映射、树、列表、图、(任何文件类型的)文件、文件夹、目录、数据块和/或其它。
此外,在附图中,在诸如实线或虚线或者实线箭头或虚线箭头的连接元素被用来示出两个或更多其它示意性元素之间或之中的连接、关系或关联时,任何这样的连接元素的缺少并不意味着暗示没有连接、关系或关联能够存在。换而言之,元素之间的一些连接、关系或关联可能未在附图中示出,以免模糊本公开。此外,为便于说明,可使用单个连接元素来代表元素之间的多个连接、关系或关联。例如,在连接元素代表信号、数据或指令的通信时,本领域技术人员应当理解的是,这样的元素可能代表如可能需要的一个或多个信号路径(例如,总线),以实现该通信。
现在参考图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每个均可被体现作为软件、固件、硬件和/或它们的组合。此外,数据缓冲器处理模块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的并行性等级或程度的正整数。缓冲器处理模块130使输入数据缓冲器210流式传送到数据寄存器118中,以便每个段被指派给寄存器118的不同通道或数据路径。缓冲器处理模块130发起对寄存器118的每个通道或数据路径并行地执行算法128,以便输入数据缓冲器120的每个段被串行数据处理算法128并发地处理。
算法128并行地处理串行地在具有指定大小B(例如以比特或字节来度量)的数据块中的数据缓冲器210的每个段,其中每个数据块由多个大小为W(例如以比特或字节来度量)的数据字组成,使得B是W的倍数。算法128生成输出数据缓冲器(或“消息摘要”,或者在一些实施例中是“哈希摘要”)212,其具有固定长度D(例如以比特或字节来度量)。在说明性实施例中,输入数据缓冲器210和输出数据缓冲器212都被存储在单个数据缓冲器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的任何必要的预处理。例如,在密码哈希函数的情况下,通过将多个数据比特附加(例如通过串接)到消息的末尾直到输入数据缓冲器210具有期望的长度(其通常由哈希算法标准或规定指定)来填补输入数据缓冲器210。在一些实施例中,填补包括“1”比特,之后接着是必要数量的“0”比特。在其他实施例,在填补中可使用“0”以及“1”比特的其他组合或模式。定义基础算法128的标准或规定指定填补方案。在一些实施例中,缓冲器210通过足以使得填补后的缓冲器是块大小的最小倍数的多个比特被扩展。用于在块310预处理输入数据缓冲器210的一些技术包括(1)利用与长度串接的固定比特模式填补缓冲器直到缓冲器210的总长度是B*S的倍数。这使得缓冲器能够利用S路SIMD处理被有效地处理,从而生成S个摘要。然后摘要集合可被视为长度为S*D的另一数据缓冲器,并且然后大小为D的最终哈希可被生成;以及(2)并行地选择缓冲器210的其长度是B*S的倍数的最大区域,以便可以生成S个摘要。摘要集合然后可与缓冲器的其余部分串接,作为新的数据缓冲器,并且然后可以生成大小为D的最终哈希。
在块312,方法300确定用来分割输入数据缓冲器210的段S的数量,并跨输入缓冲器210创建所确定数量的段。在一些实施例中,段的数量可以是预定的并且仅作为参数、自变量或存储值而被访问(例如,从查找表或数据库)。在其他实施例中,段的数量可在加载时或运行时被确定。在一些实施例中,段的数量可以是寄存器118的宽度的函数、串行数据处理算法128的参数或规定(例如,块大小、字大小、输出长度,等等)和/或输入数据缓冲器210的长度。作为示例,在SHA256哈希函数被用作算法128的情况下,S = 8,W = 4字节,且B = 64字节。作为另一示例,在具有128比特的寄存器的SIMD能力的微处理器上执行SHA-1会有以下参数设置:B = 64字节,W = 4字节,S = 4,D = 20字节。
仍然在块312,每个段被定义为由具有特定宽度(例如,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。缓冲器长度L可以被表示为L = SB*N+L mod SB,并且段长度SL可以被表示为SL = B*N。
在块314,方法300使各段流式传送到或以其它方式将各段直接读取到寄存器118的数据路径中,使得每个段被读取到不同的数据路径中(例如,使用交织)。在一些实施例中,这是通过使用被递增直至SB的单个数据指针来实现的;也就是说,直到所有均等大小的段已被处理。在SHA256示例中,一次将八个32比特的字读入寄存器的8个数据路径中。
在块316,对每个数据段并行地执行串行数据处理算法128。也就是说,针对每个段,算法128依次处理该段的各块,同时其他段正被算法128相似地处理。因此,中间结果(例如,哈希摘要)针对每个段被创建。也对输入数据缓冲器210的剩余部分(如果有的话)执行算法128并且相应的中间结果被创建。在SHA256示例中,基本上同时地对每个数据路径/32比特的字执行SHA256算法,并且然后下8个字被读取到寄存器数据路径中并被SHA256算法并行处理,以此类推,直到块大小B。
在块318,所有的中间结果被组合以产生算法128的最终输出(例如,哈希摘要)。中间结果可以以多种不同的方式被组合,包括使用异或(XOR)或加法(ADD)函数,或通过串接中间结果并且然后再次执行算法128。在SHA256示例中,8个哈希摘要中的每个可被组合到一个256比特的哈希摘要中。本领域技术人员应当理解的是,方法300可被容易地适配到其他处理器配置和串行数据处理算法。例如,具有其他寄存器宽度的寄存器可被使用。例如,通过使用具有512比特的宽度的AVX3,段的数量S可以是16而非8,并且每个段可以由每16个(32比特的)字组成。
方法300的一些实施例将单个缓冲器210视为类似于交织的各独立缓冲器的段的集合,并且针对那些段并行地生成多个独立的哈希摘要。在一些实施例中,交织的段的数量是2的幂。来自对段的并行处理的中间结果被算法128处理以形成最终结果。通常来说,方法300的一些实施例以更细的粒度(例如数据字)交织数据,而非将缓冲器210分解成块或更大大小的处理部分。
再次参考图3、4和5,方法300的说明性实施例使用哈希算法H,其被定义为对每个为B字节大小的整数个块工作。下面的实施例以给定的并行等级S对长度为L的消息M0进行哈希(其中||符号表示串接)。参考图3的块310,消息M0根据与H相关联的填补函数被预处理。填补函数被表示为PadH(消息,消息的长度,块大小B),并利用预定的模式和消息长度的串接将消息扩展到为B字节的倍数的最小长度。填补函数PadH(M0,L,B*S)被应用到消息M0,从而生成长度为L'的M0',其中L'是为B*S字节的倍数的M0可被扩展到的最小长度。
参考图3的块312,来自块310的填补后的消息M0'被分割成每个长度为L'/S的S个段。填补后的消息M0'以交织的方式被分割,使得M0'的每字大小的W比特被指派给不同的段。每个段被表示为W比特的字的阵列:
其中每个M0'[n]是到填补后的消息中的字大小W索引。参考图3的块316,S个叶级摘要在段上被生成为,k = 0 ...(S-l)。参考图3的块318,新消息M1可通过将来自块316的结果得到的摘要交织每字大小的W比特而被创建。如果 ,其中每个Dk[n]是到段的摘要中的字大小W索引,那么填补后的M1'可被生成作为PadH[M1,S*D,B]。哈希算法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包括一种用于处理任意长度的数据缓冲器的方法。所述方法包括:将所述数据缓冲器定义作为多个数据段,每个数据段具有大于零且小于所述数据缓冲器的长度的段长度;将数据段流式传送到数据寄存器中,所述数据寄存器具有多个数据路径执行单元,每个数据段使用单个数据指针被流式传送到不同的数据路径执行单元中;基本并行地在数据路径执行单元中的每个中执行串行数据处理算法,以针对每个数据路径执行单元产生结果;以及组合所述结果以形成所述串行数据处理算法的输出。
示例9包括示例8的主题,并且还包括:基于由所述串行数据处理算法指定的字大小和所述数据寄存器的宽度定义所述段长度。
示例10包括示例8和示例9中任一项的主题,并且其中将所述数据缓冲器定义作为多个数据段包括将所述数据缓冲器以交织方式分割成所述多个数据段。
示例11包括示例8-10中任一项的主题,并且其中所述数据缓冲器包括多个数据字,其中每个数据字包括多个数据比特,并且所述方法包括:将所述数据缓冲器中的每个数据字指派给不同的数据段,使得每个数据段包括数据字的阵列。
示例12包括示例8-11中任一项的主题,并且其中每个结果包括多个数据字,每个数据字包括多个数据比特,并且所述组合包括通过数据字来交织所述结果。
示例13包括示例8-12中任一项的主题,并且其中执行串行数据处理算法包括执行密码哈希函数。
示例14包括示例8-13中任一项的主题,包括针对每个数据段生成哈希摘要。
示例15包括示例8-14中任一项的主题,并且还包括组合所述哈希摘要以形成新的数据缓冲器并对所述新的数据缓冲器执行所述密码哈希函数。
示例16包括示例8-15中任一项的主题,并且还包括:确定与所述串行数据处理算法相关联的块大小,以及填补所述数据缓冲器,使得所述缓冲器的长度是所述块大小的倍数。
示例17包括示例8-16中任一项的主题,并且还包括:将固定模式的数据比特附加到所述数据缓冲器,使得所述缓冲器的长度等于所述块大小乘以数据段的数量。
示例18包括示例8-17中任一项的主题,并且其中所述组合包括串接所述结果并对串接后的结果执行所述串行数据处理算法。
示例19包括示例8-18中任一项的主题,并且还包括基于计算装置的微处理器的特性确定数据段的数量。
示例20包括示例8-19中任一项的主题,并且还包括基于所述串行数据处理算法的特性确定数据段的数量。
示例21包括一种计算装置,其具有处理器以及其中存储有多个指令的存储器,所述多个指令在被所述处理器执行时使所述计算装置执行示例8-20中的任一项的方法。
示例22包括包含存储于其上的多个指令的一个或多个机器可读存储介质,所述多个指令响应于被执行导致计算装置执行示例8-20中任一项的方法。
示例23包括包含存储于其上的多个指令的一个或多个机器可读存储介质,所述多个指令响应于被执行导致计算装置:将数据缓冲器分割成多个数据段,每个数据段具有大于零且小于所述数据缓冲器的长度的段长度;将每个数据段直接读取到所述计算装置的数据寄存器的不同的数据路径执行单元中;基本并行地对数据路径执行单元中的每个执行密码哈希算法,以针对每个数据路径执行单元产生结果;串接在数据路径执行单元处产生的结果;以及对串接后的结果执行所述密码哈希算法,以产生所述密码哈希算法的输出。
示例24包括示例23的主题,并且还包括:基于由所述密码哈希算法指定的字大小和所述数据寄存器的宽度定义所述段长度。
示例25包括示例23和示例24中任一项的主题,并且还包括以交织的方式创建所述多个数据段。
示例26包括示例23-25中任一项的主题,并且还包括:确定与所述密码哈希算法相关联的块大小,以及填补所述数据缓冲器,使得所述缓冲器的长度是所述块大小的倍数。
示例27包括示例23-26中任一项的主题,并且还包括:将固定模式的数据比特附加到所述数据缓冲器,使得所述缓冲器的长度等于所述块大小乘以数据段的数量。
示例28包括示例23-27中任一项的主题,并且还包括基于所述计算装置的微处理器的特性确定数据段的数量。
示例29包括示例23-28中任一项的主题,并且还包括基于串行数据处理算法的特性确定数据段的数量。
示例30包括示例23-29中任一项的主题,并且其中所述密码哈希算法包括安全哈希算法或MD5算法。

Claims (25)

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

Publications (2)

Publication Number Publication Date
CN104364756A true CN104364756A (zh) 2015-02-18
CN104364756B CN104364756B (zh) 2019-05-14

Family

ID=49915004

Family Applications (2)

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

Family Applications After (1)

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

Country Status (6)

Country Link
US (2) US10198248B2 (zh)
EP (2) EP2872987B1 (zh)
JP (2) JP6141421B2 (zh)
KR (3) KR20150008483A (zh)
CN (2) CN104364756B (zh)
WO (2) WO2014011746A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106375243A (zh) * 2015-07-22 2017-02-01 华为技术有限公司 数据处理设备和光传送网络交换机
CN107888657A (zh) * 2017-10-11 2018-04-06 上海交通大学 低延迟分布式存储系统
CN108984470A (zh) * 2018-06-19 2018-12-11 四川斐讯信息技术有限公司 一种fpga矿机算力的提升系统及方法
CN114003547A (zh) * 2017-03-14 2022-02-01 珠海市芯动力科技有限公司 可重构并行处理

Families Citing this family (20)

* 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
US9430285B2 (en) * 2012-10-31 2016-08-30 Nec Corporation Dividing and parallel processing record sets using a plurality of sub-tasks executing across different computers
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
EP3108358B1 (en) * 2014-02-20 2021-06-23 Stillwater Supercomputing, Inc. Execution engine for executing single assignment programs with affine dependencies
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
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
EP3384406A4 (en) 2015-12-04 2018-11-14 Hewlett-Packard Enterprise Development LP Combining hashes of data blocks
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
US10725789B2 (en) 2017-11-22 2020-07-28 Electronics And Telecommunications Research Institute Data generation device for parallel processing
KR102290229B1 (ko) * 2017-11-22 2021-08-20 한국전자통신연구원 병렬 처리를 위한 데이터 생성 장치
CN108549583B (zh) * 2018-04-17 2021-05-07 致云科技有限公司 大数据处理方法、装置、服务器及可读存储介质
CN112148391A (zh) 2019-06-26 2020-12-29 北京百度网讯科技有限公司 生成基于芯片的计算功能的方法、装置、设备和存储介质
CN112104449B (zh) * 2020-08-20 2022-02-11 郑州信大捷安信息技术股份有限公司 一种用于哈希算法的sdk

Citations (6)

* 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
CN101542962A (zh) * 2006-11-21 2009-09-23 朗讯科技公司 容许消息数据非顺序到达的情况下消息完整性的处理方法
US20100106976A1 (en) * 2008-10-23 2010-04-29 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems
JP2011081594A (ja) * 2009-10-07 2011-04-21 Mitsubishi Electric Corp データ処理装置及びデータ処理プログラム
CN102053854A (zh) * 2009-10-28 2011-05-11 英特尔公司 用于动态并行化二进制程序的上下文相关切片法
US8055970B1 (en) * 2005-11-14 2011-11-08 Raytheon Company System and method for parallel processing of data integrity algorithms

Family Cites Families (19)

* 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
US7734674B2 (en) 2005-08-08 2010-06-08 Freescale Semiconductor, Inc. Fast fourier transform (FFT) architecture in a multi-mode wireless processing system
US20080010463A1 (en) * 2006-07-10 2008-01-10 Motorola, Inc. Method for producing truncated message digests
US8122247B2 (en) 2006-10-23 2012-02-21 Alcatel Lucent 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
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 (6)

* 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
US8055970B1 (en) * 2005-11-14 2011-11-08 Raytheon Company System and method for parallel processing of data integrity algorithms
CN101542962A (zh) * 2006-11-21 2009-09-23 朗讯科技公司 容许消息数据非顺序到达的情况下消息完整性的处理方法
US20100106976A1 (en) * 2008-10-23 2010-04-29 Samsung Electronics Co., Ltd. Representation and verification of data for safe computing environments and systems
JP2011081594A (ja) * 2009-10-07 2011-04-21 Mitsubishi Electric Corp データ処理装置及びデータ処理プログラム
CN102053854A (zh) * 2009-10-28 2011-05-11 英特尔公司 用于动态并行化二进制程序的上下文相关切片法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106375243A (zh) * 2015-07-22 2017-02-01 华为技术有限公司 数据处理设备和光传送网络交换机
CN106375243B (zh) * 2015-07-22 2019-09-03 华为技术有限公司 数据处理设备和光传送网络交换机
CN114003547A (zh) * 2017-03-14 2022-02-01 珠海市芯动力科技有限公司 可重构并行处理
CN114003547B (zh) * 2017-03-14 2023-12-19 珠海市芯动力科技有限公司 可重构并行处理
CN107888657A (zh) * 2017-10-11 2018-04-06 上海交通大学 低延迟分布式存储系统
CN108984470A (zh) * 2018-06-19 2018-12-11 四川斐讯信息技术有限公司 一种fpga矿机算力的提升系统及方法

Also Published As

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

Similar Documents

Publication Publication Date Title
CN104364756A (zh) 单个数据缓冲器的并行处理
US11106464B2 (en) Apparatuses, methods, and systems for access synchronization in a shared memory
CN114625423A (zh) 用于执行将矩阵变换为行交错格式的指令的系统和方法
BR102020019657A2 (pt) aparelhos, métodos e sistemas para instruções de um acelerador de operações de matriz
CN114153498A (zh) 用于加载片寄存器对的系统和方法
US20230169173A1 (en) Standardized Interface for Intellectual Property Blocks
CN108269226B (zh) 用于处理稀疏数据的装置和方法
CN113885942A (zh) 用于将片寄存器对归零的系统和方法
CN112148210A (zh) 用于存储器保护的装置id
US20210303691A1 (en) Ip independent secure firmware load
CN116860334A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
US10120602B2 (en) Device and method for determining data placement destination, and program recording medium
CN111752745A (zh) 对码字中相邻两位错误的检测
CN115859315A (zh) 用于对安全存储装置的直接外围访问的系统、装置和方法
CN103198258B (zh) 复合系统以及传输数据的方法
TW202223633A (zh) 用於實施16位元浮點矩陣點積指令的裝置、方法及系統
Plank et al. Gf-complete: A comprehensive open source library for Galois field arithmetic version 1.02
CN113849768A (zh) 伴随数据类型转换来加载和存储矩阵数据
US11914564B1 (en) Merkle tree-based data management method and apparatus
Cho et al. Practical Model Checking on FPGAs

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