一种基于大规模粗粒度可重构处理器的sha256实现方法及系统的制作方法

文档序号:9579219阅读:500来源:国知局
一种基于大规模粗粒度可重构处理器的sha256实现方法及系统的制作方法
【技术领域】
[0001] 本发明设计嵌入式可重构系统领域,尤其设计一种应用于通信、加密等领域的基 于大规模粗粒度嵌入式可重构系统及其处理方法。
【背景技术】
[0002] 通用处理器与专用集成电路(ASIC)是传统的计算机系统结构领域的两大主流方 法。然而,随着应用领域对系统的性能、能耗、上市时间等指标需求的不断提高,这两种传统 计算模式的弊端就暴露出来。
[0003]通用处理器方法适用范围广,但是计算效率低,专用集成电路虽然可以提高计算 速度和计算效率,满足性能需求,但是ASIC器件的灵活性很差。
[0004] 为了在灵活性和计算效率之间实现很好的权衡,可重构计算(reconfigurable computing)技术应运而生。可重构计算是当前计算机系统结构领域的发展趋势之一,它的 架构介于通用处理器和ASIC之间,并且综合了二者长处。它通过对可重构设备进行配置, 可以使之由一个通用的计算平台转化为一个专用的硬件系统,以完成具体的计算任务,相 当于计算任务同时在时间和空间上展开,显示出了应用的灵活性和很高的计算性能。此外, 可重构计算技术还具有系统能耗低、可靠性高、上市时间短等优势。这些优势使得可重构计 算技术在各个应用领域尤其是嵌入式应用领域有着广阔的应用前景。很多在嵌入式领域中 的主流应用,例如多媒体应用、加/解密应用以及通信应用等都非常适合利用可重构计算 技术实现。当前的可重构计算技术主要还是用于尖端技术领域中的计算平台,但随着可重 构逻辑器件成本逐渐降低,运行时可重构计算技术不断完善,我们有理由相信可重构计算 技术具备的种种优势会使其在更多的领域里大有作为。
[0005] 目前国内外已研究有多重可重构系统,如ReMAP,AsAP,DRP等。但是,这些阵列的 互联方式较为简单,在SHA256方法的运算中需要大量的中间数据存储以及较多的轮数,因 此运算的效率和速度较低。传统的可重构计算系统在SHA256的运算效率与运算周期方面 存在较大问题。

【发明内容】

[0006] 有鉴于此,本发明提出一种基于大规模粗粒度可重构处理器的SHA256实现方法, 利用可重构技术的并行性处理、运算模块独立可配置等优点,在支持一定的灵活性的同时, 通过提高对SHA256算法的并行度以及优化流水线等方法实现了SHA256算法的高效运算。
[0007] 本发明提供了一种基于大规模粗粒度可重构处理器的SHA256系统,其包括:先进 先出寄存器组、通用寄存器堆、算术逻辑单元、比特置换网络、字节置换网络以及数据载入 单元和数据输出单元;
[0008] 所述可重构处理器,微处理器通过系统总线发送明文数据给可重构处理器,明文 数据将存入输入先进先出寄存器组,并在最终计算完成后输出密文数据到输出先进先出寄 存器组,并发送中断信号,最终输出先进先出寄存器组中的数据由微处理器读出;
[0009] 首先,对配置单元中的配置存储器进行初始化,微处理器将所需要的配置信息通 过配置单元的配置与控制接口发送到配置存储器中,然后通过配置单元中的配置解析模块 解析配置存储器,实现对计算阵列的配置、启动以及切换操作;
[0010] 优选地,所述的可重构处理器有10个可重构阵列块、1个通用寄存器堆、1个输入 先进先出寄存器组和1个输出先进先出寄存器组;其中多个可重构阵列块通过一个1个通 用寄存器堆可以互相进行数据的储存、读取和传递,保证了SHA256方法中的大量数据交换 以及并行运算;且多个可重构阵列块中相邻的两个可重构阵列块通过数据载入单元和数据 输出单元连接;第一个可重构阵列块通过数据载入单元与输入先进先出寄存器组相连,同 时最后一个可重构阵列块通过数据输出单元与输出先进先出寄存器组相连;
[0011] 优选地,所述的可重构阵列块包括4个可重构阵列运算行和1个通用寄存器读端 口运算行选择器和1个通用寄存器写端口运算行选择器;其每个可重构阵列运算行共享1 个通用寄存器堆的读端口和写端口;在SHA256运算中可重构阵列运算行可通过通用寄存 器堆读出各种缓冲数据如w[i],k[i]以及各种临时的消息摘要,同时可以向通用寄存器堆 写入消息摘要的每轮计算的中间值以及缓冲数据w[i]和临时数据w[i]+k[i],这些缓冲数 据被其他可重构阵列块读出用于下一轮计算。
[0012] 优选地,所述的可重构阵列运算行包括数据载入单元,数据输出单元,字节置换网 络,比特置换网络和16个8位算术逻辑单元;数据经过数据载入单元,由选择器通过读取 并解析不同的配置信息来选择数据流入的字节置换网络和比特置换网络;字节置换网络与 比特置换网络的128位的输出分为16个8位的数据分别固定对应于16个8位算术逻辑单 元,一次性可以运算4组SHA256数据;每个算术逻辑单元可以使用数据选择器选择其中三 个置换网络的输出作为其输入;数据载入单元可以暂存算术逻辑单元的结果并读取配置信 息决定将数据输出到先进先出寄存器组、下一个可重构阵列运算行还是通用寄存器堆;
[0013] 优选地,算术逻辑单元中包含了模加运算、异或运算、3输入异或加、3输入异或同 或加运算;同时每个算术逻辑单元有最多3个输入和最多2个输出,其中算术逻辑单元执行 上述运算操作的同时,支持任选一个输入作为输出;由于SHA256方法中全部为32位运算, 因此每4个8位的算术逻辑单元可以通过进位端口连接成为1个32位的算术逻辑单元;
[0014] 优选地,SHA256的流程被分为4个步骤,其中前两个步骤与第三个步骤为并行执 行:
[0015] (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-Ι)数据用于计算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)数据;
[0016] (2)第二个步骤是计算2个64个字的缓冲区数据w[i]与k[i]的和,其中 (1<i$64),每4个w[i]与k[i]组成两个128位的数据预先储存在通用寄存器堆中,并 在一个可重构阵列块中利用算术逻辑单元执行w[i]+k[i]操作,重复执行16次即可计算出 所有结果,然后将结果存于通用寄存器堆中;
[0017] (3)第三个步骤是SHA256流程的主循环运算,由A,B,C,D,E,F,G,Η这8个32位 的数和第二轮中计算出的w[i]+k[i]运算64轮得出最终的消息摘要,其中i代表轮数,且 第一轮A,B,C,D,E,F,G,Η的值恒定,将8个32位的迭代中间值A,B,C,D,E,F,G,Η分别组 合成两个128位数存放在通用寄存器堆中,使用2个可重构阵列块进行并行计算,一个用 于E,F,G,Η和w[i]+k[i]之间的异或、同或和模加运算以及Ε的移位相加运算,另一个用于 A,B,C之间的异或加以及A的移位相加运算,然后在通过2个可重构阵列块并行分别计算出 新的A,B,C,D和E,F,G,H,并覆盖掉原来的通用寄存器堆中的原始值,用于下一轮的计算, 其中由比特置换网络执行移位操作,由字节置换网络和比特置换网络同时执行数据的交换 从而为算术逻辑单元输出合适的操作数,并由算术逻辑单元执行模加、异或、同或运算,每 512位的明文数据需要经过64轮计算。
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1