CN105335331A - 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 - Google Patents
一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 Download PDFInfo
- Publication number
- CN105335331A CN105335331A CN201510886219.0A CN201510886219A CN105335331A CN 105335331 A CN105335331 A CN 105335331A CN 201510886219 A CN201510886219 A CN 201510886219A CN 105335331 A CN105335331 A CN 105335331A
- Authority
- CN
- China
- Prior art keywords
- data
- computing
- reconfigurable
- general
- reconfigurable arrays
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于大规模粗粒度可重构处理器的SHA256实现方法及系统,其包括:先进先出寄存器组组、通用寄存器堆、算术逻辑单元、比特置换网络、字节置换网络以及数据载入单元和数据输出单元。该方法针对SHA256方法,通过将多轮迭代在可重构处理器中部分展开和中间结果数据缓存的方式进行优化和加速。
Description
技术领域
本发明设计嵌入式可重构系统领域,尤其设计一种应用于通信、加密等领域的基于大规模粗粒度嵌入式可重构系统及其处理方法。
背景技术
通用处理器与专用集成电路(ASIC)是传统的计算机系统结构领域的两大主流方法。然而,随着应用领域对系统的性能、能耗、上市时间等指标需求的不断提高,这两种传统计算模式的弊端就暴露出来。
通用处理器方法适用范围广,但是计算效率低,专用集成电路虽然可以提高计算速度和计算效率,满足性能需求,但是ASIC器件的灵活性很差。
为了在灵活性和计算效率之间实现很好的权衡,可重构计算(reconfigurablecomputing)技术应运而生。可重构计算是当前计算机系统结构领域的发展趋势之一,它的架构介于通用处理器和ASIC之间,并且综合了二者长处。它通过对可重构设备进行配置,可以使之由一个通用的计算平台转化为一个专用的硬件系统,以完成具体的计算任务,相当于计算任务同时在时间和空间上展开,显示出了应用的灵活性和很高的计算性能。此外,可重构计算技术还具有系统能耗低、可靠性高、上市时间短等优势。这些优势使得可重构计算技术在各个应用领域尤其是嵌入式应用领域有着广阔的应用前景。很多在嵌入式领域中的主流应用,例如多媒体应用、加/解密应用以及通信应用等都非常适合利用可重构计算技术实现。当前的可重构计算技术主要还是用于尖端技术领域中的计算平台,但随着可重构逻辑器件成本逐渐降低,运行时可重构计算技术不断完善,我们有理由相信可重构计算技术具备的种种优势会使其在更多的领域里大有作为。
目前国内外已研究有多重可重构系统,如ReMAP,AsAP,DRP等。但是,这些阵列的互联方式较为简单,在SHA256方法的运算中需要大量的中间数据存储以及较多的轮数,因此运算的效率和速度较低。传统的可重构计算系统在SHA256的运算效率与运算周期方面存在较大问题。
发明内容
有鉴于此,本发明提出一种基于大规模粗粒度可重构处理器的SHA256实现方法,利用可重构技术的并行性处理、运算模块独立可配置等优点,在支持一定的灵活性的同时,通过提高对SHA256算法的并行度以及优化流水线等方法实现了SHA256算法的高效运算。
本发明提供了一种基于大规模粗粒度可重构处理器的SHA256系统,其包括:先进先出寄存器组、通用寄存器堆、算术逻辑单元、比特置换网络、字节置换网络以及数据载入单元和数据输出单元;
所述可重构处理器,微处理器通过系统总线发送明文数据给可重构处理器,明文数据将存入输入先进先出寄存器组,并在最终计算完成后输出密文数据到输出先进先出寄存器组,并发送中断信号,最终输出先进先出寄存器组中的数据由微处理器读出;
首先,对配置单元中的配置存储器进行初始化,微处理器将所需要的配置信息通过配置单元的配置与控制接口发送到配置存储器中,然后通过配置单元中的配置解析模块解析配置存储器,实现对计算阵列的配置、启动以及切换操作;
优选地,所述的可重构处理器有10个可重构阵列块、1个通用寄存器堆、1个输入先进先出寄存器组和1个输出先进先出寄存器组;其中多个可重构阵列块通过一个1个通用寄存器堆可以互相进行数据的储存、读取和传递,保证了SHA256方法中的大量数据交换以及并行运算;且多个可重构阵列块中相邻的两个可重构阵列块通过数据载入单元和数据输出单元连接;第一个可重构阵列块通过数据载入单元与输入先进先出寄存器组相连,同时最后一个可重构阵列块通过数据输出单元与输出先进先出寄存器组相连;
优选地,所述的可重构阵列块包括4个可重构阵列运算行和1个通用寄存器读端口运算行选择器和1个通用寄存器写端口运算行选择器;其每个可重构阵列运算行共享1个通用寄存器堆的读端口和写端口;在SHA256运算中可重构阵列运算行可通过通用寄存器堆读出各种缓冲数据如w[i],k[i]以及各种临时的消息摘要,同时可以向通用寄存器堆写入消息摘要的每轮计算的中间值以及缓冲数据w[i]和临时数据w[i]+k[i],这些缓冲数据被其他可重构阵列块读出用于下一轮计算。
优选地,所述的可重构阵列运算行包括数据载入单元,数据输出单元,字节置换网络,比特置换网络和16个8位算术逻辑单元;数据经过数据载入单元,由选择器通过读取并解析不同的配置信息来选择数据流入的字节置换网络和比特置换网络;字节置换网络与比特置换网络的128位的输出分为16个8位的数据分别固定对应于16个8位算术逻辑单元,一次性可以运算4组SHA256数据;每个算术逻辑单元可以使用数据选择器选择其中三个置换网络的输出作为其输入;数据载入单元可以暂存算术逻辑单元的结果并读取配置信息决定将数据输出到先进先出寄存器组、下一个可重构阵列运算行还是通用寄存器堆;
优选地,算术逻辑单元中包含了模加运算、异或运算、3输入异或加、3输入异或同或加运算;同时每个算术逻辑单元有最多3个输入和最多2个输出,其中算术逻辑单元执行上述运算操作的同时,支持任选一个输入作为输出;由于SHA256方法中全部为32位运算,因此每4个8位的算术逻辑单元可以通过进位端口连接成为1个32位的算术逻辑单元;
优选地,SHA256的流程被分为4个步骤,其中前两个步骤与第三个步骤为并行执行:
(1)第一个步骤是计算包含64个字的缓冲区数据w[i],其中i由1到64的整数,w[i](1≤i≤16)为512位的明文数据,w[i](17≤i≤64)由w[i-2]、w[i-7]、w[i-15]和w[i-16]计算而来,每4个连续的w[i]占用通用寄存器堆中的一个存储单元,使用4个可重构阵列块陆续读入16个w[k](i-16≤k≤i-1)数据用于计算w[k](i≤k≤i+3),使用比特置换网络实现w[k-2]和w[k-15]的循环左移操作,其中i≤k≤i+3,字节置换网络与比特置换网络用于控制数据的流向,从而为算术逻辑单元输出合适的操作数,并由算术逻辑单元执行数据间的模加及异或运算,最终得出4个w[k](i≤k≤i+3)数据,并存放于通用寄存器堆中,令i为17执行上述运算,然后每次令i加4重复执行上述运算,经过12次上述运算即可得出全部w[i](17≤i≤64)数据;
(2)第二个步骤是计算2个64个字的缓冲区数据w[i]与k[i]的和,其中(1≤i≤64),每4个w[i]与k[i]组成两个128位的数据预先储存在通用寄存器堆中,并在一个可重构阵列块中利用算术逻辑单元执行w[i]+k[i]操作,重复执行16次即可计算出所有结果,然后将结果存于通用寄存器堆中;
(3)第三个步骤是SHA256流程的主循环运算,由A,B,C,D,E,F,G,H这8个32位的数和第二轮中计算出的w[i]+k[i]运算64轮得出最终的消息摘要,其中i代表轮数,且第一轮A,B,C,D,E,F,G,H的值恒定,将8个32位的迭代中间值A,B,C,D,E,F,G,H分别组合成两个128位数存放在通用寄存器堆中,使用2个可重构阵列块进行并行计算,一个用于E,F,G,H和w[i]+k[i]之间的异或、同或和模加运算以及E的移位相加运算,另一个用于A,B,C之间的异或加以及A的移位相加运算,然后在通过2个可重构阵列块并行分别计算出新的A,B,C,D和E,F,G,H,并覆盖掉原来的通用寄存器堆中的原始值,用于下一轮的计算,其中由比特置换网络执行移位操作,由字节置换网络和比特置换网络同时执行数据的交换从而为算术逻辑单元输出合适的操作数,并由算术逻辑单元执行模加、异或、同或运算,每512位的明文数据需要经过64轮计算。
(4)第四个步骤是每个512位数据块64轮计算完成后,将A,B,C,D,E,F,G,H与上一轮的消息摘要进行模加运算,计算出新的消息摘要,并作为下一个512位数据块第一轮计算的A,B,C,D,E,F,G,H数据。该部分使用1个可重构阵列块,分成两次分别计算出消息摘要前4个字和后4个字,然后存入通用寄存器堆,覆盖掉原有的A,B,C,D,E,F,G,H数据,若当前为最后一个512位的数据块,则此时的A,B,C,D,E,F,G,H即为总的消息摘要。
1.本发明还提供了一种基于大规模粗粒度的可重构处理器处理方法,其包括以下步骤:
(1)分析SHA256方法的计算特点,并归纳出数据流图;
(2)根据数据流图中的运算流程,以及SHA256需要补位等特点,制定SHA256的数据输入方式;
(3)确定了数据输入方式以及数据流图之后,针对可重构处理器的特点,在了解其各寄存器、运算器以及各功能模块的作用机制的情况下配置可重构处理器,并生成配置信息;
(4)通过微处理器将配置信息以及所需要的各种初始数据存入相应的存储器中;
(5)最后微处理器启动可重构处理器,并将配置信息及数据发送给可重构处理器;
(6)当可重构处理器完成当前任务后,发送中断信号;
技术效果:本发明基于大规模粗粒度动态可重构处理器,通过10个可重构阵列块包含多个运算单元,借助通用寄存器堆提高SHA256算法的运算并行度,在具有一定灵活性的同时,提高SHA256方法的运算效率,尽可能的减少运算周期。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明的基于大规模粗粒度嵌入式可重构系统处理器框图;
图2、图3、图4与图5各为一个可重构阵列块的运算流图,共同构成本发明中SHA256方法消息调度w[i]的运算流图,其中>表示算术右移,>>表示循环右移,表示异或运算,Wi表示w[i],其中
图6、图7、图8与图9各为一个可重构阵列块的运算流图,共同构成本发明中SHA256方法主循环的运算流图,其中WK表示w[i]+k[i],Ch表示Ch(E,F,G),Ma表示Ma(A,B,C),∑1表示∑1(E),∑0表示∑0(A)。
具体实施方式
下面结合附图对本发明做进一步的说明。
图1为基于大规模粗粒度可重构处理器结构框图,其中包括10个可重构阵列块、1个通用寄存器堆、1个输入先进先出寄存器组和1个输出先进先出寄存器组。通过先进先出寄存器组缓冲可重构处理器与总线接口之间的数据传输。通用寄存器堆用于各可重构阵列块之间的数据互通和数据缓存。
其中可重构阵列块中又包含4个可重构阵列运算行、一个1个通用寄存器堆读端口运算行选择器和1个通用寄存器堆写端口运算行选择器。通过1个通用寄存器读端口运算行选择器可以选择从可重构阵列块中的指定可重构阵列运算行读取通用寄存器堆的数据,通用寄存器堆写端口可以选择数据从指定可重构阵列运算行写入寄存器堆,大大增加量数据流通的灵活性。
其中,每个可重构阵列运算行中具有2个数据载入单元、数据输入单元、算术运算单元、2个字节置换网络和2个比特置换网络,用于充当各可重构阵列运算行算术运算单元之间的数据互联。其中数据载入单元可以选择该可重构阵列运算行的数据来源,可选的数据来源为上一个可重构阵列运算行的数据输出单元、输入先进先出寄存器组以及通用寄存器堆。数据输出单元可以选择该可重构阵列运算行的数据输出方向,可选的数据输出为通用寄存器堆、输出先进先出寄存器组以及输出先进先出寄存器组。同时,只有第一个可重构阵列块的第一个可重构阵列运算行可以选择输入为输入先进先出寄存器组,最后一个可重构阵列块的最后一个可重构阵列运算行可以选择输出先进先出寄存器组。
其中,算术运算单元与比特置换网络承担了SHA256方法中的所有运算操作。其中比特置换网络用于数据的循环移位和算术移位。算术运算单元承担了SHA256中的模加、异或、非、同或等运算操作。
本发明实施了一种基于大规模粗粒度可重构处理器的处理方法,其包含以下步骤:
(1)分析SHA256方法的计算特点,并归纳出数据流图;
(2)根据数据流图中的运算流程,以及SHA256需要补位等特点,制定SHA256的数据输入方式;
(3)确定了数据输入方式以及数据流图之后,针对可重构处理器的特点,在了解其各寄存器、运算器以及各功能模块的作用机制的情况下配置可重构处理器,并生成配置信息;
(4)通过微处理器将配置信息以及所需要的各种初始数据存入相应的存储器中;
(5)最后微处理器启动可重构处理器,并将配置信息及数据发送给可重构处理器;
(6)当可重构处理器完成当前任务后,发送中断信号;
该实施基于SHA256方法,需要将其转化为数据流图,并制定SHA256方法的数据输入方式,然后根据数据流图和数据输入方式对应特定的可重构系统处理器生成相应的配置信息,通过配置可重构阵列块将SHA256映射到该阵列上,由此实现SHA256方法。下面就每一个步骤进行具体的说明:
(1)分析SHA256方法特点,归纳出数据流图
SHA256方法是将消息分为多个512位消息块,然后分别计算出每个512位消息块的消息摘要,然后依次模加。其中每个512位的消息摘要只要由一组中间数据A,B,C,D,E,F,G,H进行64轮运算得到。其中,第一个数据块的第一轮A,B,C,D,E,F,G,H为常量,每一轮通过各种函数计算更新A,B,C,D,E,F,G,H的值。
(2)根据数据流图中的运算流程,以及SHA256需要补位等特点,制定SHA256的数据输入方式;
由于SHA256方法需要将消息长度扩展成512的整数倍,因此需要对最后一个不足512位的消息块进行补位,因此微处理器需要将消息进行补位并分成多个512位的消息块,然后通过总线发送给逐个发送给可重构处理器;
(3)针对可重构处理器的特点,在了解其各寄存器、运算器以及各功能模块的作用机制的情况下配置可重构处理器,并生成配置信息;
SHA256的运算主要分为4个步骤,其中第1个和第2个步骤为计算64个字大小的w[i]+k[i]缓冲区(1≤i≤64)。k[i]为常量。当1≤i≤16时,w[i]为512位的消息,当17≤i≤64时,
w[i]=σ1(w[i-2])+w[i-7]+σ0(w[i-15])+w[i-16]
其中:
其中∧为与运算,为非运算,为异或运算,ROTRy(x)为将x循环右移y位,SHRy(x)为将x算术右移y位。
由此可见w[i]缓冲区数据由4个32位的数据运算而来,为了提高通用寄存器堆利用效率,4个32位的数据占用一个通用寄存器堆的存储单元,因此为了提高计算效率,使用4个可重构阵列块(#0~#3)陆续从通用寄存器堆读取4个存储单元即16个w[i]数据,然后并行计算出4个w[i]缓冲区数据,并存到通用寄存器堆中。使用1个可重构阵列块一次性读取4个w[i]数据和4个k[i]数据然后执行模加操作,最终计算出w[i]+k[i]。4个可重构阵列块(#0~#3)的配置方式分别如图2~图5所示。此方法极大的节省了通用寄存器堆的读写占用以及提高运算单元的利用率。
第3个步骤是SHA256方法的主循环运算,其主要操作为:
H=G
G=F
F=E
E=D+H+w[i]+k[i]+Ch(E,F,G)+∑1(E)
D=C
C=B
B=A
A=H+w[i]+k[i]+Ch(E,F,G)+∑1(E)+∑0(A)+Ma(A,B,C)
A,B,C,D,E,F,G,H按照以上过程进行每一轮的计算,其中:
其中∧为与运算,为非运算,为异或运算,ROTRy(x)为将x循环右移y位,SHRy(x)为将x算术右移y位。
其中A,B,C,D和E,F,G,H在通用寄存器堆中分别占用一个存储单元。每轮运算需要4个可重构阵列块(#4~#7),其配置方式分别如图6~图9所示。在运算过程中首先使用两个可重构阵列块#4和#5进行并行运算。其中#4读入E,F,G,H和w[i]+k[i],通过3个可重构阵列运算行计算出Ch+H+w[i]+k[i]和∑1(E)两个数据,并将其存入通用寄存器堆,并只占用一个存储单元。#5读入A,B,C,D一组数据,并通过三个可重构阵列运算行计算出∑0(A)和Ma(A,B,C)两个数据,并存入通用寄存器堆且与Ch+H+w[i]+k[i]和∑1(E)共用一个存储单元。然后#7可重构阵列块使用一个可重构阵列运算行读入上述存储单元和E,F,G,H两组数据,并计算得出新的用于下一轮的E,F,G,H数据,将其存入通用寄存器堆,并覆盖原来的E,F,G,H数据。通过#6可重构阵列块从通用寄存器堆读入∑0(A)、Ma(A,B,C)、Ch+H+w[i]+k[i]、∑1(E)和A,B,C,D两组数据,并使用一个可重构阵列运算行执行模加操作,计算出新的用于下一轮的A,B,C,D数据,将其存入通用寄存器堆,并覆盖掉原来A,B,C,D数据。一轮计算一共占用了4个可重构阵列块,其中#4和#5为并行运算,各使用3个可重构阵列运算行,#6和#7为并行运算,各使用一个可重构阵列运算行。由于每个可重构阵列运算行使用2个运算周期,因此,一轮计算共用8个周期。每个512数据块需要计算64轮。
第4个步骤为每个512数据块64轮计算完成后,将A,B,C,D,E,F,G,H与上一轮的消息摘要进行模加运算,计算出新的消息摘要,并作为下一个512消息块第一轮计算的A,B,C,D,E,F,G,H数据。该部分使用1个可重构阵列块,分成两次分别计算出消息摘要前4个字和后4个字,然后存入通用寄存器堆,覆盖掉原有的A,B,C,D,E,F,G,H数据。若当前为最后一个512位的数据块,则此时的A,B,C,D,E,F,G,H即为总的消息摘要。
按照此运算流程对可重构处理器的各寄存器进行配置,生成配置信息。
(4)通过微处理器将配置信息以及所需要的各种初始数据存入相应的存储器中;
其中配置信息为上述步骤所生成的配置信息,初始数据为k[i]缓冲区数据等各种常量。
(5)最后微处理器启动可重构处理器,并将配置信息及数据发送给可重构处理器;
(6)当可重构处理器完成当前任务后,发送中断信号;
以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换,这些等同变换均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
Claims (8)
1.一种基于大规模粗粒度可重构处理器的SHA256系统,其包括:
可重构处理器、微处理器、系统总线;
其中,所述可重构处理器包括:配置单元、输入先进先出寄存器组、输出先进先出寄存器组、通用寄存器堆、可重构阵列块;
其中,配置单元包括配置与控制接口、配置存储器、配置解析模块;可重构阵列块包括:可重构阵列运算行、写端口运算行选择器、读端口运算行选择器;
其中,可重构阵列运算行包括算术逻辑单元、比特置换网络、字节置换网络以及数据载入单元和数据输出单元;
其中,通过分析SHA256的特征来确定SHA256的运算流程,将多轮的SHA256运算展开成一幅数据流图映射到可重构处理器中,通过多幅数据流图最终完成SHA256的整个运算;
其中,微处理器通过系统总线发送明文数据给可重构处理器,明文数据将存入输入先进先出寄存器组,并在最终计算完成后输出密文数据到输出先进先出寄存器组,并发送中断信号,最终输出先进先出寄存器组中的数据由微处理器读出;
首先,对配置单元中的配置存储器进行初始化,微处理器将所需要的配置信息通过配置与控制接口发送到配置存储器中,然后通过配置解析模块解析配置存储器,实现对计算阵列的配置、启动以及切换操作。
2.如权利要求1所述的系统,其特征在于:所述的可重构处理器有M个可重构阵列块、1个通用寄存器堆、1个输入先进先出寄存器组和1个输出先进先出寄存器组,其中M取整数;其中M个可重构阵列块通过一个1个通用寄存器堆互相进行数据的储存、读取和传递;且多个可重构阵列块中相邻的两个可重构阵列块通过数据载入单元和数据输出单元连接;第一个可重构阵列块通过第一个可重构阵列运算行的数据载入单元与输入先进先出寄存器组相连,同时第M个可重构阵列块通过第N个可重构阵列运算行的数据输出单元与输出先进先出寄存器组相连,其中N为一个可重构阵列块包含可重构阵列运算行个数。
3.如权利要求2所述的系统,其特征在于:所述的可重构阵列块包括N个可重构阵列运算行和1个通用寄存器读端口运算行选择器和1个通用寄存器写端口运算行选择器,其中N取整数;其每N个可重构阵列运算行共享1个通用寄存器堆的读端口和写端口;在SHA256运算中可重构阵列运算行可通过通用寄存器堆读出各种缓冲数据如w[i],k[i]以及各种临时的消息摘要,其中w[i]为一共64个字的消息调度,k[i]为64个字的常数,同时向通用寄存器堆写入消息摘要的每轮计算的中间值以及缓冲数据w[i]和临时数据w[i]+k[i],这些缓冲数据被其他可重构阵列块读出用于下一轮计算。
4.如权利要求3所述的系统,其特征在于:所述的可重构阵列运算行包括X1个数据载入单元,X2个数据输出单元,X3个字节置换网络,X4个比特置换网络和X5个8位算术逻辑单元,其中X1,X2,X3,X4和X5均取整数;数据经过数据载入单元,由选择器通过读取并解析不同的配置信息来选择数据流入的字节置换网络和比特置换网络;字节置换网络与比特置换网络的输出分为X5个8位的数据分别固定对应于X5个8位算术逻辑单元,并行运算X5/4组SHA256数据;每个算术逻辑单元使用数据选择器选择任意三个置换网络的输出作为其输入;数据输出单元暂存算术逻辑单元的结果并读取配置信息决定将数据输出到先进先出寄存器组、下一个可重构阵列运算行或通用寄存器堆。
5.如权利要求4所述的系统,其特征在于:算术逻辑单元中包含了模加运算、异或运算、与运算、与非运算、直通输出等运算操作;同时每个算术逻辑单元有最多3个输入和最多2个输出,其中算术逻辑单元执行上述运算操作的同时,支持任选一个输入作为输出;每4个8位的算术逻辑单元通过进位端口连接成为1个32位的算术逻辑单元。
6.如权利要求2所述的系统,其特征在于:SHA256流程包括如下4个步骤,其中对于每个512位消息块,前3个步骤执行64次后执行第4个步骤,前2个步骤顺序执行并与第3个步骤并行执行,第4个步骤只执行1次:
(1)第1个步骤:计算包含64个字的缓冲区数据w[i],其中1≤i≤64,w[i](1≤i≤16)为512位的明文数据,w[i](17≤i≤64)由w[i-2]、w[i-7]、w[i-15]和w[i-16]计算而来,每4个连续的w[i]占用通用寄存器堆中的一个存储单元,使用4个可重构阵列块陆续读入16个w[k](i-16≤k≤i-1)数据用于计算w[k](i≤k≤i+3),使用比特置换网络实现w[k-2]和w[k-15]的循环左移操作,其中i≤k≤i+3,字节置换网络与比特置换网络用于控制数据的流向,从而为算术逻辑单元输出合适的操作数,并由算术逻辑单元执行数据间的模加及异或运算,最终得出4个w[k](i≤k≤i+3)数据,并存放于通用寄存器堆中,令i为17执行上述运算,然后每次令i加4重复执行上述运算,经过12次上述运算即可得出全部w[i](17≤i≤64)数据;
(2)第2个步骤:计算2个64个字的缓冲区数据w[i]与k[i]的和,其中(1≤i≤64),每4个w[i]与k[i]组成两个128位的数据预先储存在通用寄存器堆中,并在一个可重构阵列块中利用算术逻辑单元执行w[i]+k[i]操作,重复执行16次即可计算出所有结果,然后将结果存于通用寄存器堆中;
(3)第3个步骤:SHA256流程的主循环运算,由A,B,C,D,E,F,G,H这8个32位数和第二轮中计算出的w[i]+k[i]运算64轮得出最终的消息摘要,其中i代表轮数(1≤i≤64),且第1轮A,B,C,D,E,F,G,H的值为常量,将8个32位的迭代中间值A,B,C,D,E,F,G,H分别组合成两个128位数存放在通用寄存器堆中,使用2个可重构阵列块进行并行计算,一个用于E,F,G,H和w[i]+k[i]之间的异或、同或和模加运算以及E的移位相加运算,另一个用于A,B,C之间的异或加以及A的移位相加运算,然后在通过2个可重构阵列块并行分别计算出新的A,B,C,D和E,F,G,H,并覆盖掉原来的通用寄存器堆中的原始值,用于下一轮的计算,其中由比特置换网络执行移位操作,由字节置换网络和比特置换网络同时执行数据的交换从而为算术逻辑单元输出合适的操作数,并由算术逻辑单元执行模加、异或、同或运算,经过64轮计算即可得出512个字节的消息摘要;
(4)第4个步骤:每个512位数据块的64轮计算完成后,将A,B,C,D,E,F,G,H与上一轮的消息摘要进行模加运算,计算出新的消息摘要,并作为下一个512位数据块第一轮计算的A,B,C,D,E,F,G,H数据,该部分使用1个可重构阵列块,分成两次分别计算出消息摘要前4个字和后4个字,然后存入通用寄存器堆,覆盖掉原有的A,B,C,D,E,F,G,H数据,若当前为最后一个512位的数据块,则此时的A,B,C,D,E,F,G,H即为总的消息摘要。
7.一种基于大规模粗粒度可重构处理器的SHA256实现方法,其包括以下步骤:
(1)分析SHA256的计算特点,并归纳出数据流图;
(2)根据数据流图中的运算流程,以及SHA256需要补位等特点,制定SHA256的数据输入方式;
(3)确定了数据输入方式以及数据流图之后,针对可重构处理器的特点,在了解其各寄存器、运算器以及各功能模块的作用机制的情况下配置可重构处理器,并生成配置信息;
(4)通过微处理器将配置信息以及所需要的各种初始数据存入相应的存储器中;
(5)最后微处理器启动可重构处理器,并将配置信息及数据发送给可重构处理器;
(6)当可重构处理器完成当前任务后,发送中断信号。
8.如权利要求7所述的方法,其特征在于:所述可重构处理器完成当前任务即SHA256流程,包括如下4个步骤,其中对于每个512位消息块,前3个步骤执行64次后执行第4个步骤,前2个步骤顺序执行并与第3个步骤并行执行,第4个步骤只执行1次:
(1)第1个步骤:计算包含64个字的缓冲区数据w[i],其中1≤i≤64,w[i](1≤i≤16)为512位的明文数据,w[i](17≤i≤64)由w[i-2]、w[i-7]、w[i-15]和w[i-16]计算而来,每4个连续的w[i]占用通用寄存器堆中的一个存储单元,使用4个可重构阵列块陆续读入16个w[k](i-16≤k≤i-1)数据用于计算w[k](i≤k≤i+3),使用比特置换网络实现w[k-2]和w[k-15]的循环左移操作,其中i≤k≤i+3,字节置换网络与比特置换网络用于控制数据的流向,从而为算术逻辑单元输出合适的操作数,并由算术逻辑单元执行数据间的模加及异或运算,最终得出4个w[k](i≤k≤i+3)数据,并存放于通用寄存器堆中,令i为17执行上述运算,然后每次令i加4重复执行上述运算,经过12次上述运算即可得出全部w[i](17≤i≤64)数据;
(2)第2个步骤:计算2个64个字的缓冲区数据w[i]与k[i]的和,其中(1≤i≤64),每4个w[i]与k[i]组成两个128位的数据预先储存在通用寄存器堆中,并在一个可重构阵列块中利用算术逻辑单元执行w[i]+k[i]操作,重复执行16次即可计算出所有结果,然后将结果存于通用寄存器堆中;
(3)第3个步骤:SHA256流程的主循环运算,由A,B,C,D,E,F,G,H这8个32位数和第二轮中计算出的w[i]+k[i]运算64轮得出最终的消息摘要,其中i代表轮数(1≤i≤64),且第1轮A,B,C,D,E,F,G,H的值为常量,将8个32位的迭代中间值A,B,C,D,E,F,G,H分别组合成两个128位数存放在通用寄存器堆中,使用2个可重构阵列块进行并行计算,一个用于E,F,G,H和w[i]+k[i]之间的异或、同或和模加运算以及E的移位相加运算,另一个用于A,B,C之间的异或加以及A的移位相加运算,然后在通过2个可重构阵列块并行分别计算出新的A,B,C,D和E,F,G,H,并覆盖掉原来的通用寄存器堆中的原始值,用于下一轮的计算,其中由比特置换网络执行移位操作,由字节置换网络和比特置换网络同时执行数据的交换从而为算术逻辑单元输出合适的操作数,并由算术逻辑单元执行模加、异或、同或运算,经过64轮计算即可得出512个字节的消息摘要;
(4)第4个步骤:每个512位数据块的64轮计算完成后,将A,B,C,D,E,F,G,H与上一轮的消息摘要进行模加运算,计算出新的消息摘要,并作为下一个512位数据块第一轮计算的A,B,C,D,E,F,G,H数据。该部分使用1个可重构阵列块,分成两次分别计算出消息摘要前4个字和后4个字,然后存入通用寄存器堆,覆盖掉原有的A,B,C,D,E,F,G,H数据,若当前为最后一个512位的数据块,则此时的A,B,C,D,E,F,G,H即为总的消息摘要。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510886219.0A CN105335331B (zh) | 2015-12-04 | 2015-12-04 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510886219.0A CN105335331B (zh) | 2015-12-04 | 2015-12-04 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105335331A true CN105335331A (zh) | 2016-02-17 |
CN105335331B CN105335331B (zh) | 2018-08-21 |
Family
ID=55285877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510886219.0A Active CN105335331B (zh) | 2015-12-04 | 2015-12-04 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105335331B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912501A (zh) * | 2016-05-06 | 2016-08-31 | 东南大学—无锡集成电路技术研究所 | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 |
CN105975251A (zh) * | 2016-05-19 | 2016-09-28 | 东南大学—无锡集成电路技术研究所 | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 |
CN106021171A (zh) * | 2016-05-06 | 2016-10-12 | 东南大学—无锡集成电路技术研究所 | 一种基于大规模粗粒度可重构处理器的sm4-128的密钥扩展实现方法及系统 |
CN109033008A (zh) * | 2018-07-24 | 2018-12-18 | 山东大学 | 一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 |
CN110059493A (zh) * | 2019-04-10 | 2019-07-26 | 无锡沐创集成电路设计有限公司 | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统 |
CN111464308A (zh) * | 2020-03-12 | 2020-07-28 | 烽火通信科技股份有限公司 | 一种实现多种哈希算法可重构的方法和系统 |
CN112165388A (zh) * | 2020-09-29 | 2021-01-01 | 中国电子科技集团公司第五十八研究所 | 基于sha3算法的可重构平台 |
CN112631610A (zh) * | 2020-11-30 | 2021-04-09 | 上海交通大学 | 一种针对粗粒度可重构结构的数据重用消除访存冲突方法 |
CN112861154A (zh) * | 2021-02-24 | 2021-05-28 | 中国科学院计算技术研究所 | 面向数据流架构的sha算法执行方法、存储介质、电子装置 |
CN113300831A (zh) * | 2021-07-26 | 2021-08-24 | 苏州浪潮智能科技有限公司 | 一种安全散列算法的实现方法、系统、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090063820A1 (en) * | 2007-08-17 | 2009-03-05 | Jinwen Xi | Application Specific Instruction Set Processor for Digital Radio Processor Receiving Chain Signal Processing |
US20100274939A1 (en) * | 2009-04-22 | 2010-10-28 | Bernhard Egger | Reconfigurable processor and interrupt handling method |
CN102508816A (zh) * | 2011-11-15 | 2012-06-20 | 东南大学 | 一种应用于粗粒度可重构阵列的配置方法 |
CN102855197A (zh) * | 2011-11-08 | 2013-01-02 | 东南大学 | 一种面向大规模粗粒度可重构系统存储系统的实现方法 |
-
2015
- 2015-12-04 CN CN201510886219.0A patent/CN105335331B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090063820A1 (en) * | 2007-08-17 | 2009-03-05 | Jinwen Xi | Application Specific Instruction Set Processor for Digital Radio Processor Receiving Chain Signal Processing |
US20100274939A1 (en) * | 2009-04-22 | 2010-10-28 | Bernhard Egger | Reconfigurable processor and interrupt handling method |
CN102855197A (zh) * | 2011-11-08 | 2013-01-02 | 东南大学 | 一种面向大规模粗粒度可重构系统存储系统的实现方法 |
CN102508816A (zh) * | 2011-11-15 | 2012-06-20 | 东南大学 | 一种应用于粗粒度可重构阵列的配置方法 |
Non-Patent Citations (1)
Title |
---|
杨晓辉,戴紫彬: "一种基于FPGA的可重构密码芯片的设计与实现", 《电子技术应用》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021171A (zh) * | 2016-05-06 | 2016-10-12 | 东南大学—无锡集成电路技术研究所 | 一种基于大规模粗粒度可重构处理器的sm4-128的密钥扩展实现方法及系统 |
CN105912501B (zh) * | 2016-05-06 | 2018-11-06 | 东南大学—无锡集成电路技术研究所 | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 |
CN105912501A (zh) * | 2016-05-06 | 2016-08-31 | 东南大学—无锡集成电路技术研究所 | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 |
CN105975251A (zh) * | 2016-05-19 | 2016-09-28 | 东南大学—无锡集成电路技术研究所 | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 |
CN109033008A (zh) * | 2018-07-24 | 2018-12-18 | 山东大学 | 一种动态可重构的Hash计算架构及其方法、Key-Value存储系统 |
CN110059493B (zh) * | 2019-04-10 | 2023-04-07 | 无锡沐创集成电路设计有限公司 | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统 |
CN110059493A (zh) * | 2019-04-10 | 2019-07-26 | 无锡沐创集成电路设计有限公司 | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统 |
CN111464308A (zh) * | 2020-03-12 | 2020-07-28 | 烽火通信科技股份有限公司 | 一种实现多种哈希算法可重构的方法和系统 |
CN111464308B (zh) * | 2020-03-12 | 2022-07-01 | 烽火通信科技股份有限公司 | 一种实现多种哈希算法可重构的方法和系统 |
CN112165388A (zh) * | 2020-09-29 | 2021-01-01 | 中国电子科技集团公司第五十八研究所 | 基于sha3算法的可重构平台 |
CN112631610A (zh) * | 2020-11-30 | 2021-04-09 | 上海交通大学 | 一种针对粗粒度可重构结构的数据重用消除访存冲突方法 |
CN112631610B (zh) * | 2020-11-30 | 2022-04-26 | 上海交通大学 | 一种针对粗粒度可重构结构的数据重用消除访存冲突方法 |
CN112861154A (zh) * | 2021-02-24 | 2021-05-28 | 中国科学院计算技术研究所 | 面向数据流架构的sha算法执行方法、存储介质、电子装置 |
CN113300831A (zh) * | 2021-07-26 | 2021-08-24 | 苏州浪潮智能科技有限公司 | 一种安全散列算法的实现方法、系统、介质及设备 |
CN113300831B (zh) * | 2021-07-26 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种安全散列算法的实现方法、系统、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105335331B (zh) | 2018-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105335331A (zh) | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 | |
CN105912501B (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 | |
Samardzic et al. | F1: A fast and programmable accelerator for fully homomorphic encryption | |
CN109213723B (zh) | 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质 | |
CN111512292A (zh) | 用于可配置空间加速器中的非结构化数据流的装置、方法和系统 | |
CN100536390C (zh) | 一种椭圆曲线密码协处理器 | |
CN101782893B (zh) | 可重构数据处理平台 | |
US7577799B1 (en) | Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture | |
CN104933008B (zh) | 可重构系统和可重构阵列结构及其应用 | |
CN101986264B (zh) | 用于simd向量微处理器的多功能浮点乘加运算装置 | |
CN110321162B (zh) | 基于粗粒度可重构计算单元的present加密算法实现方法及系统 | |
CN110059493B (zh) | 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统 | |
Feldmann et al. | F1: A fast and programmable accelerator for fully homomorphic encryption (extended version) | |
CN105975251B (zh) | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 | |
CN108959168B (zh) | 基于片上内存的sha512全流水电路及其实现方法 | |
CN106294278B (zh) | 用于动态可重构阵列计算系统的自适硬件预配置控制器 | |
CN102567279B (zh) | 一种动态可重构阵列时序配置信息的生成方法 | |
CN111079078B (zh) | 面向结构网格稀疏矩阵的下三角方程并行求解方法 | |
CN103761072A (zh) | 一种粗粒度可重构层次化的阵列寄存器文件结构 | |
CN106933510B (zh) | 一种存储控制器 | |
CN106021171A (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128的密钥扩展实现方法及系统 | |
CN105577363A (zh) | 针对sm4密码算法的可扩展流水线电路及其实现方法 | |
CN105183701A (zh) | 1536点fft处理方式及相关设备 | |
CN104756069A (zh) | 元素选择单元及其中的方法 | |
CN113407483B (zh) | 一种面向数据密集型应用的动态可重构处理器 |
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 |