CN117075820A - 一种消息缓存器和协处理器 - Google Patents
一种消息缓存器和协处理器 Download PDFInfo
- Publication number
- CN117075820A CN117075820A CN202311196993.XA CN202311196993A CN117075820A CN 117075820 A CN117075820 A CN 117075820A CN 202311196993 A CN202311196993 A CN 202311196993A CN 117075820 A CN117075820 A CN 117075820A
- Authority
- CN
- China
- Prior art keywords
- message
- storage area
- reading
- expansion
- block storage
- 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.)
- Pending
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 49
- 238000003860 storage Methods 0.000 claims abstract description 115
- 238000012545 processing Methods 0.000 claims abstract description 66
- 238000012544 monitoring process Methods 0.000 claims 1
- 238000004422 calculation algorithm Methods 0.000 description 32
- 238000000034 method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000013496 data integrity verification Methods 0.000 description 2
- 238000005429 filling process Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种消息缓存器和协处理器,涉及集成电路技术领域,该消息缓存器包括多个消息块存储区、填充模块、读取扩展控制器、读取计数器;填充模块,用于将原始消息对应的一个消息块填充至处于空闲状态的消息块存储区,一个消息块包括多个原始消息字;读取扩展控制器,用于监测到消息块存储区处于读扩状态时,根据读取计数器的计数值,读取消息块存储区中相应位置的消息字并将读取的消息字输出至迭代处理模块进行哈希迭代处理,消息块存储区用于保存原始消息字和扩展消息字,故不需要在迭代处理模块中额外设置消息扩展寄存器组来保存扩展消息字,从而降低了用于哈希计算的硬件电路的资源消耗,提高了资源利用率。
Description
技术领域
本申请实施例涉及集成电路技术领域,尤其涉及一种消息缓存器和协处理器。
背景技术
在信息安全领域,数字指纹和数据完整性验证是重要的应用,其中,哈希计算在数字指纹和数据完整性验证中起到了至关重要的作用,哈希计算指通过哈希算法将接收到的消息转换成固定位数的哈希值(也称消息摘要)的过程。
哈希计算的硬件加速器在执行哈希计算时,一般都需要消息块的缓存模块。在现存的设计方案中,消息块的缓存模块和消息扩展寄存器组是同时存在的,从而导致所占的硬件资源较多。
发明内容
本申请实施例提供了一种消息缓存器和协处理器,用于在哈希计算过程中降低硬件资源消耗。
一方面,本申请实施例提供了一种消息缓存器,包括:
填充模块、读取扩展控制器、读取计数器、多个消息块存储区;
所述填充模块,用于将原始消息对应的一个消息块填充至处于空闲状态的一个消息块存储区,所述一个消息块包括多个原始消息字;
所述读取扩展控制器,用于监测到所述消息块存储区处于读扩状态时,根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理,所述消息块存储区用于保存原始消息字以及基于所述消息块存储区中的消息字确定的扩展消息字。
可选地,所述消息缓存器还包括:存储区选择器;
所述存储区选择器,用于产生填充选择信号和读扩选择信号;
所述填充选择信号用于从处于空闲状态的消息块存储区中选取执行填充操作的消息块存储区;所述读扩选择信号用于从处于读扩状态的消息块存储区中选取执行读扩操作的消息块存储区。
可选地,所述消息缓存器还包括:每个消息块存储区对应的消息块控制器;
所述消息块控制器,用于监测到所述填充模块开始向相应的消息块存储区填充一个消息块时,将所述消息块存储区的状态从所述空闲状态切换至填充状态;
所述消息块控制器,还用于监测到所述填充模块填充完所述一个消息块时,将所述消息块存储区的状态从所述填充状态切换至所述读扩状态。
可选地,还包括:
所述消息块控制器,还用于监测到所述读取扩展控制器读取完所述消息块存储区中的消息字时,将所述消息块存储区的状态从所述读扩状态切换至所述空闲状态。
可选地,所述填充模块包括:填充控制器和填充计数器;
所述填充控制器,用于基于所述填充计数器的计数值,将所述一个消息块中的多个原始消息字依次填充至所述消息块存储区。
可选地,所述读取扩展控制器执行根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理时,具体用于:
所述读取计数器的计数值位于第一区间时,所述读取扩展控制器根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的原始消息字,并将所述原始消息字输出至迭代处理模块进行哈希迭代处理。
可选地,还包括:
所述读取计数器的计数值位于第二区间时,所述读取扩展控制器根据所述读取计数器的计数值,从所述消息块存储区中的多个位置读取消息字,并采用读取的多个消息字确定扩展消息字,并将所述扩展消息字保存至所述消息块存储区中的指定位置,以及将所述扩展消息字输出至迭代处理模块进行哈希迭代处理,所述第二区间的最小值大于所述第一区间的最大值。
可选地,所述读取扩展控制器执行根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理时,具体用于:
所述读取计数器的计数值位于第三区间时,所述读取扩展控制器根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的第一原始消息字和第二原始消息字;将所述第一原始消息字作为第一输出消息字,并基于所述第一原始消息字和所述第二原始消息字,确定第二输出消息字;将所述第一输出消息字和所述第二输出消息字输出至迭代处理模块进行哈希迭代处理。
可选地,所述消息缓存器还包括额外存储区;
所述读取计数器的计数值位于第四区间时,所述读取扩展控制器根据所述读取计数器的计数值,从所述消息块存储区中的多个位置读取消息字,并采用读取的多个消息字确定扩展消息字,并将所述扩展消息字分别保存至所述额外存储区的指定位置和所述消息块存储区中的指定位置。
可选地,还包括:
所述读取计数器的计数值位于第四区间时,所述读取扩展控制器根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字作为第一输出消息字;所述读取扩展控制器根据所述读取计数器的计数值读取所述额外存储区中相应位置的扩展消息字,并基于读取的扩展消息字和所述第一输出消息字确定第二输出消息字;将所述第一输出消息字和所述第二输出消息字输出至迭代处理模块进行哈希迭代处理。
一方面,本申请实施例提供了一种协处理器,包括上述任一所述的消息缓存器。
本申请实施例中,在进行哈希计算过程中,消息缓存器不仅通过多个消息块存储区保存原始消息的消息块,同时对各个消息块进行消息字扩展,并通过消息块存储区保存获得的扩展消息字,故不需要在迭代处理模块中额外设置消息扩展寄存器组来保存扩展消息字,从而降低了用于哈希计算的硬件电路的资源消耗,提高了资源利用率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种协处理器的结构示意图;
图2为本申请实施例提供的一种消息缓存器的结构示意图;
图3为本申请实施例提供的一种消息缓存器的结构示意图;
图4为本申请实施例提供的一种消息缓存器的结构示意图;
图5为本申请实施例提供的一种消息缓存器的结构示意图;
图6为本申请实施例提供的一种消息缓存器的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了方便理解,下面对本发明实施例中涉及的名词进行解释。
哈希计算:将一段接收到的消息通过哈希算法将其转换成固定位数的哈希值(也称消息摘要),哈希算法包括但不限于:SHA2算法(比如,SHA256算法、SHA512算法等)、SM3算法等。
中央处理器(Central Processing Unit,简称CPU),作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
随机存取存储器(Random Access Memory,简称RAM),也叫主存,是与CPU直接交换数据的内部存储器。
只读存储器(Read-Only Memory,简称ROM):以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。
直接内存访问(Direct Memory Access,简称DMA)控制器:一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。它之所以属于外设,是因为它是在处理器的编程控制下来执行传输的。
协处理器:一种协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。
乒乓缓存:当串口缓存1满了时,DMA的目标地址迅速切换到串口缓存2,此时可以处理串口缓存1的数据;当串口缓存2满了时,DMA的目标地址迅速切换到串口缓存1,此时可以处理串口缓存2的数据。如此一直循环下去,就像打乒乓球一样,你推我挡,故称作乒乓缓冲。
在实际应用中,多种哈希算法得到广泛应用。比如,SHA256算法、SHA512算法、SHA384算法、SM3算法等。通过对各种哈希算法进行分析可知,哈希算法的运算特征包括填充和迭代计算两个阶段。
举例来说,SHA256算法的填充过程为:
假设消息的长度为M比特,将位“1”附加到消息的末尾,然后是k个零位,其中k是方程M+1+k=448mod 512的最小非负解。然后附加使用二进制表示的消息长度的64位。例如,(8位ASCII)消息“abc”的长度为8*3=24,则消息后填充一位“1”,然后填充448-(24+1)=423个零位,再将消息长度24转换为64位的二进制数填充在末尾,成为512位的填充消息,如下所示:
SHA256算法的迭代计算过程中的消息字扩展过程为:
采用以下公式(1)进行消息字扩展:
其中,Wt表示第t个扩展消息字,表示第i个消息块对应的第t个原始消息字,和/>为固定运算,可通过查询现有的fips180-2获得,此处不再赘述。
举例来说,SM 3算法的填充过程为:
假设消息的长度为M比特,将位“1”附加到消息的末尾,然后是k个零位,其中k是方程M+1+k=448mod 512的最小非负解。然后附加使用二进制表示的消息长度的64位。例如,(8位ASCII)消息“abc”的长度为8*3=24,则消息后填充一位“1”,然后填充448-(24+1)=423个零位,再将消息长度24转换为64位的二进制数填充在末尾,成为512位的填充消息,如下所示:
SM3算法的迭代计算过程中的消息字扩展过程为:
采用以下公式(2)进行消息扩展:
其中,Wt和W′t表示输出的两个扩展消息字,表示第i个消息块对应的第t个原始消息字,ROTL表示移位算法。
需要说明的是,本申请仅以SHA256算法和SM 3算法为例说明哈希算法的运算过程,并不仅限于这几类哈希算法。
下面具体介绍用于哈希计算的协处理器的内部架构,参见图1,其为本申请实施例提供的一种协处理器的结构示意图,该协处理器100至少包括消息缓存器101和迭代处理模块102。
消息缓存器101,用于缓存原始消息对应的多个消息块以及对每个消息块进行消息字扩展获得的扩展消息字。
迭代处理模块102,用于对多个消息块和相应的扩展消息字进行哈希迭代处理,获得原始消息的消息摘要。
参见图2,为本申请实施例提供的一种消息缓存器的结构示意图,消息缓存器101包括:填充模块201、读取扩展控制器202、读取计数器203以及多个消息块存储区204。
填充模块201,用于将原始消息对应的一个消息块填充至处于空闲状态的一个消息块存储区,一个消息块包括多个原始消息字;
读取扩展控制器202,用于监测到消息块存储区204处于读扩状态时,根据读取计数器的计数值,读取消息块存储区204中相应位置的消息字,并将读取的消息字输出至迭代处理模块102进行哈希迭代处理,消息块存储区204用于保存原始消息字以及基于消息块存储区204中的消息字确定的扩展消息字。
在一些实施例中,消息缓存器101为乒乓缓存,包括两个消息块存储区204。一般来说,每个消息块存储区204的存储空间大于一个消息块所占的存储空间,即每个消息块存储区204不仅可以保存一个消息块包括的多个原始消息字,还可以保存基于消息块存储区204中的消息字计算获得的扩展消息字。
针对不同的哈希算法,一个消息块包含的原始消息字的数量也是不相同的,对消息块进行扩展获得的扩展消息字的数量也是不相同的。
比如,针对SHA256算法,一个消息块包括16个原始消息字,对消息块进行扩展获得48个扩展消息字。
又比如,针对SHA512算法,一个消息块包括16个原始消息字,对消息块进行扩展获得64个扩展消息字。
在一些实施例中,参见图3,消息缓存器101还包括:每个消息块存储区204对应的消息块控制器205。消息块控制器205用于对相应的消息块存储区204进行状态切换。
具体地,消息块控制器205,用于监测到填充模块201开始向相应的消息块存储区204填充一个消息块时,将消息块存储区204的状态从空闲状态切换至填充状态。
消息块控制器205,还用于监测到填充模块201填充完一个消息块时,将消息块存储区204的状态从填充状态切换至读扩状态。
消息块控制器205,还用于监测到读取扩展控制器202读取完消息块存储区204中的消息字时,将消息块存储区204的状态从读扩状态切换至空闲状态。
在实际应用中,参见图4,当填充模块201开始向消息块存储区204填充一个消息块时,消息块控制器205将填充使能标识信号fill_enable置为1,将消息块存储区204的状态从空闲状态切换至填充状态。
填充模块201填充完一个消息块时,消息块控制器205将填充完成标识信号fill_done置为1,将消息块存储区204的状态从填充状态切换至读扩状态。
读取扩展控制器202读取完消息块存储区204中的消息字时,消息块控制器205将读扩完成标识信号blk_read_done置为1,将消息块存储区204的状态从读扩状态切换至空闲状态。
在一些实施例中,消息缓存器还包括:存储区选择器;
存储区选择器,用于产生填充选择信号和读扩选择信号。填充选择信号用于从处于空闲状态的消息块存储区204中选取执行填充操作的消息块存储区204;读扩选择信号用于从处于读扩状态的消息块存储区204中选取执行读扩操作的消息块存储区204。
具体地,乒乓缓存的两个消息块存储区204分别为第一消息块存储区和第二消息块存储区。在初始状态下,第一消息块存储区和第二消息块存储区均处于空闲状态。存储区选择器产生填充选择信号,以选取第一消息块存储区执行填充操作,即,将原始消息对应的一个消息块填充至第一消息块存储区,第一消息块存储区的状态从空闲状态切换至填充状态。
第一消息块存储区填充完时,第一消息块存储区的状态从填充状态切换至读扩状态。存储区选择器产生读扩选择信号,以选取第一消息块存储区执行读扩操作,即,根据读取计数器的计数值,读取第一消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理。
同时,存储区选择器产生填充选择信号,以选取第二消息块存储区执行填充操作,即,将原始消息对应的一个消息块填充至第二消息块存储区,第二消息块存储区的状态从空闲状态切换至填充状态。
第二消息块存储区填充完时,第二消息块存储区的状态从填充状态切换至读扩状态。若读取扩展控制器已读取完第一消息块存储区中的消息字,则第一消息块存储区的状态从读扩状态切换至空闲状态;存储区选择器产生读扩选择信号,以选取第二消息块存储区执行读扩操作,即,根据读取计数器的计数值,读取第二消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理。
若读取扩展控制器没有读取完第一消息块存储区中的消息字,即第一消息块存储区的状态依然是读扩状态,则一直等待,直到第一消息块存储区的状态从读扩状态切换至空闲状态。
在一些实施例中,参见图5,填充模块201包括:填充控制器501和填充计数器502。
填充控制器501,用于基于填充计数器502的计数值,将一个消息块中的多个原始消息字依次填充至处于空闲状态的消息块存储区204。
具体地,填充控制器501不断监测两个消息块存储区204是否处于空闲状态。若存在一个消息块存储区204处于空闲状态,则存储区选择器产生填充选择信号,以选取该消息块存储区204执行填充操作。填充控制器501将一个消息块中的多个原始消息字依次填充至该消息块存储区204。在填充过程中,每填充一个消息字,相应更新填充计数器502的计数值。当填充计数器502的计数值达到上限值时,填充结束。填充计数器502的上限值与哈希算法关联,比如,在实现SHA256算法时,填充计数器502的计数范围为0~15。
若两个消息块存储区204的状态都不为空闲状态,则一直等待直到出现空闲状态为止。
若监测到一个消息块存储区204处于空闲状态后,没有马上对该消息块存储区204执行填充操作,一段时间后,另一个消息块存储区204也切换至空闲状态,此时,可以监测到两个消息块存储区204处于空闲状态。存储区选择器产生填充选择信号,以选择先进入空闲状态的消息块存储区204执行填充操作。
若在初始阶段,两个消息块存储区204均处于空闲状态,则存储区选择器产生填充选择信号,以按照两个消息块存储区204的编号,选取一个消息块存储区204执行填充操作。
在一些实施例中,读取计数器203的计数值位于第一区间时,读取扩展控制器202根据读取计数器的计数值,读取消息块存储区204中相应位置的原始消息字,并将原始消息字输出至迭代处理模块102进行哈希迭代处理。
读取计数器203的计数值位于第二区间时,读取扩展控制器202根据读取计数器203的计数值,从消息块存储区204中的多个位置读取消息字,并采用读取的多个消息字确定扩展消息字,并将扩展消息字保存至消息块存储区204中的指定位置,以及将扩展消息字输出至迭代处理模块102进行哈希迭代处理,第二区间的最小值大于第一区间的最大值。
举例来说,在实现SHA2算法时,第一区间为[0,15],第二区间为[16,63]。当读取计算器的计数值rdext_cnt位于第一区间时,读取计数器的计数值rdext_cnt位于第一区间,则读取扩展控制器读取消息块存储区中寄存器w[rdext_cnt]中的原始消息字,并将原始消息字输出至迭代处理模块进行哈希迭代处理。
当读取计算器的计数值rdext_cn位于第二区间时,读取计数器的计数值rdext_cnt位于第二区间时,则读取扩展控制器根据读取计数器的计数值rdext_cnt,从消息块存储区中的4个寄存器中读取消息字,并采用读取的4个消息字计算扩展消息字,并将扩展消息字保存至消息块存储区中的寄存器w[rdext_cn%16]中,同时将扩展消息字输出至迭代处理模块进行哈希迭代处理。
在一些实施例中,参见图6,消息缓存器还包括额外存储区601。
读取计数器203的计数值位于第三区间时,读取扩展控制器202根据读取计数器203的计数值,读取消息块存储区204中相应位置的第一原始消息字和第二原始消息字;将第一原始消息字作为第一输出消息字,并基于第一原始消息字和第二原始消息字,确定第二输出消息字;将第一输出消息字和第二输出消息字输出至迭代处理模块102进行哈希迭代处理。
读取计数器203的计数值位于第四区间时,读取扩展控制器202根据读取计数器203的计数值,从消息块存储区204中的多个位置读取消息字,并采用读取的多个消息字确定扩展消息字,并将扩展消息字分别保存至额外存储区601的指定位置和消息块存储区204中的指定位置。
读取计数器203的计数值位于第四区间时,读取扩展控制器202根据读取计数器203的计数值,读取消息块存储区204中相应位置的消息字作为第一输出消息字;读取扩展控制器202根据读取计数器203的计数值读取额外存储区601中相应位置的扩展消息字,并基于读取的扩展消息字和第一输出消息字确定第二输出消息字;将第一输出消息字和第二输出消息字输出至迭代处理模块102进行哈希迭代处理。
具体地,第四区间的最小值大于第三区间的最大值,消息字存储区只有在针对输出两个消息字至迭代处理模块的哈希算法类型(比如SM3算法)时才会被使能,其他哈希算法类型不会被使能。
举例来说,在实现SM3算法时,第三区间为[0,11],第四区间为[12,67]。
当读取计算器的计数值rdext_cn位于第三区间时,则读取扩展控制器读取消息块存储区中寄存器w[rdext_cnt%16]中的第一原始消息字和寄存器w[rdext_cnt%16+4]中的第二原始消息字。然后令第一输出消息字Wt为第一原始消息字,以及令第二输出消息字其中,/>表示异或操作。将第一输出消息字Wt和第二输出消息字Wt’输出至迭代处理模块进行哈希迭代处理。
当读取计算器的计数值rdext_cn位于第四区间时,则读取扩展控制器根据读取计数器的计数值rdext_cnt,从消息块存储区中的4个位置读取消息字,并采用读取的4个消息字确定扩展消息字,并将扩展消息字分别保存至额外存储区中的寄存器d[0]~寄存器d[3]。
读取扩展控制器读取消息块存储区中寄存器w[rdext_cnt%16]中的消息字,然后令第一输出消息字Wt=w[rdext_cnt%16]中的消息字;读取扩展控制器从额外存储区中的寄存器d[rdext_cnt%4]中的消息字,然后令第二输出消息字Wt’=w[rdext_cnt%16]中的消息字中的消息字,将第一输出消息字Wt和第二输出消息字Wt’输出至迭代处理模块进行哈希迭代处理。
本申请实施例中,在进行哈希计算过程中,消息缓存器不仅通过多个消息块存储区保存原始消息的消息块,同时对各个消息块进行消息字扩展,并通过消息块存储区保存获得的扩展消息字,故不需要在迭代处理模块中额外设置消息扩展寄存器组来保存扩展消息字,从而降低了用于哈希计算的硬件电路的资源消耗,提高了资源利用率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机设备或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机设备或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机设备或其他可编程数据处理设备上,使得在计算机设备或其他可编程设备上执行一系列操作步骤以产生计算机设备实现的处理,从而在计算机设备或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (11)
1.一种消息缓存器,其特征在于,包括:
填充模块、读取扩展控制器、读取计数器、多个消息块存储区;
所述填充模块,用于将原始消息对应的一个消息块填充至处于空闲状态的一个消息块存储区,所述一个消息块包括多个原始消息字;
所述读取扩展控制器,用于监测到所述消息块存储区处于读扩状态时,根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理,所述消息块存储区用于保存原始消息字以及基于所述消息块存储区中的消息字确定的扩展消息字。
2.如权利要求1所述的消息缓存器,其特征在于,所述消息缓存器还包括:存储区选择器;
所述存储区选择器,用于产生填充选择信号和读扩选择信号;
所述填充选择信号用于从处于空闲状态的消息块存储区中选取执行填充操作的消息块存储区;
所述读扩选择信号用于从处于读扩状态的消息块存储区中选取执行读扩操作的消息块存储区。
3.如权利要求1所述的消息缓存器,其特征在于,所述消息缓存器还包括:每个消息块存储区对应的消息块控制器;
所述消息块控制器,用于监测到所述填充模块开始向相应的消息块存储区填充一个消息块时,将所述消息块存储区的状态从所述空闲状态切换至填充状态;
所述消息块控制器,还用于监测到所述填充模块填充完所述一个消息块时,将所述消息块存储区的状态从所述填充状态切换至读扩状态。
4.如权利要求3所述的消息缓存器,其特征在于,还包括:
所述消息块控制器,还用于监测到所述读取扩展控制器读取完所述消息块存储区中的消息字时,将所述消息块存储区的状态从所述读扩状态切换至所述空闲状态。
5.如权利要求1所述的消息缓存器,其特征在于,所述填充模块包括:填充控制器和填充计数器;
所述填充控制器,用于基于所述填充计数器的计数值,将所述一个消息块中的多个原始消息字依次填充至所述消息块存储区。
6.如权利要求1所述的消息缓存器,其特征在于,所述读取扩展控制器执行根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理时,具体用于:
所述读取计数器的计数值位于第一区间时,所述读取扩展控制器根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的原始消息字,并将所述原始消息字输出至迭代处理模块进行哈希迭代处理。
7.如权利要求6所述的消息缓存器,其特征在于,还包括:
所述读取计数器的计数值位于第二区间时,所述读取扩展控制器根据所述读取计数器的计数值,从所述消息块存储区中的多个位置读取消息字,并采用读取的多个消息字确定扩展消息字,并将所述扩展消息字保存至所述消息块存储区中的指定位置,以及将所述扩展消息字输出至迭代处理模块进行哈希迭代处理,所述第二区间的最小值大于所述第一区间的最大值。
8.如权利要求1所述的消息缓存器,其特征在于,所述读取扩展控制器执行根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字,并将读取的消息字输出至迭代处理模块进行哈希迭代处理时,具体用于:
所述读取计数器的计数值位于第三区间时,所述读取扩展控制器根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的第一原始消息字和第二原始消息字;将所述第一原始消息字作为第一输出消息字,并基于所述第一原始消息字和所述第二原始消息字,确定第二输出消息字;将所述第一输出消息字和所述第二输出消息字输出至迭代处理模块进行哈希迭代处理。
9.如权利要求8所述的消息缓存器,其特征在于,所述消息缓存器还包括额外存储区;
所述读取计数器的计数值位于第四区间时,所述读取扩展控制器根据所述读取计数器的计数值,从所述消息块存储区中的多个位置读取消息字,并采用读取的多个消息字确定扩展消息字,并将所述扩展消息字分别保存至所述额外存储区的指定位置和所述消息块存储区中的指定位置。
10.如权利要求9所述的消息缓存器,其特征在于,还包括:
所述读取计数器的计数值位于第四区间时,所述读取扩展控制器根据所述读取计数器的计数值,读取所述消息块存储区中相应位置的消息字作为第一输出消息字;所述读取扩展控制器根据所述读取计数器的计数值读取所述额外存储区中相应位置的扩展消息字,并基于读取的扩展消息字和所述第一输出消息字确定第二输出消息字;将所述第一输出消息字和所述第二输出消息字输出至迭代处理模块进行哈希迭代处理。
11.一种协处理器,其特征在于,包括权利要求1至10任一所述的消息缓存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311196993.XA CN117075820A (zh) | 2023-09-15 | 2023-09-15 | 一种消息缓存器和协处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311196993.XA CN117075820A (zh) | 2023-09-15 | 2023-09-15 | 一种消息缓存器和协处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117075820A true CN117075820A (zh) | 2023-11-17 |
Family
ID=88702419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311196993.XA Pending CN117075820A (zh) | 2023-09-15 | 2023-09-15 | 一种消息缓存器和协处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117075820A (zh) |
-
2023
- 2023-09-15 CN CN202311196993.XA patent/CN117075820A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107957976B (zh) | 一种计算方法及相关产品 | |
US9043806B2 (en) | Information processing device and task switching method | |
CN108121688B (zh) | 一种计算方法及相关产品 | |
CN108108190B (zh) | 一种计算方法及相关产品 | |
JP2006338538A (ja) | ストリームプロセッサ | |
EP4390706A1 (en) | Embedded vector prefetching method, apparatus and system, and related device | |
CN110688160B (zh) | 一种指令流水线处理方法、系统、设备及计算机存储介质 | |
CN116775544B (zh) | 一种协处理器和计算机设备 | |
US10911221B2 (en) | Memory optimization for nested hash operations | |
CN117075820A (zh) | 一种消息缓存器和协处理器 | |
US7783691B2 (en) | Sharing of a logic operator having a work register | |
US6584514B1 (en) | Apparatus and method for address modification in a direct memory access controller | |
JP2001157049A5 (zh) | ||
CN114064122A (zh) | 指令处理方法、装置、设备及存储介质 | |
CN111930510A (zh) | 电子设备和数据处理方法 | |
CN111915014B (zh) | 人工智能指令的处理方法及装置、板卡、主板和电子设备 | |
CN114004350A (zh) | 神经网络的计算方法、加速器、计算机可读存储介质 | |
CN111104093A (zh) | 有限域运算方法、系统、运算设备和计算机可读存储介质 | |
CN117150192A (zh) | 一种高带宽利用率的稀疏矩阵向量相乘加速装置 | |
CN116225532A (zh) | 一种支持加速向量运算的通用处理器 | |
KR20170037451A (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산을 수행하는 방법 | |
CN117614613A (zh) | 基于向量化计算的md5加速方法及系统 | |
CN118057297A (zh) | 椭圆曲线加密算法的点乘计算电路、方法、设备及介质 | |
JPH06161781A (ja) | 情報処理方法および情報処理装置 | |
JP2002311827A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |