RISC结构微处理器专用存储单元的研究与实现
采用通用微处理器实现密码算法虽然灵活性好,但性能不佳,实现速度也较慢。而采用专用ASIC针对特定密码算法进行加速,灵活性不高。RISC结构密码专用微处理器设计是面向通用微处理器与高效密码处理器的结合,在RISC结构中整合了一个密码运算单元,并且这些运算单元是基于可重构的,对它配置不同的信息可以完成不同的算法,该运算单元与算术运算单元ALU并行工作,并访问同一个寄存器文件[1]。RISC体系结构作为计算机设计策略的一种类型己愈来愈多地应用于计算机的体系设计中。RISC结构的指令系统中,采用大量的寄存器--寄存器操作指令,但只有load/store指令可以访问内存。从内存中取出的数据要送到寄存器,在寄存器之间对数据进行快速处理,从而避免了由于频繁访问内存而降低执行速度[2]。RISC指令寻址模式和指令操作都相对简单,这虽然有利于简化微结构实现,但是在进行大量数据流处理特别是密码运算时,由于它需要存储较多的数据,所以必须频繁地利用load/store指令控制数据的进出,这需要占用较多的指令和较多的时钟周期。因此,针对上述问题,本文在32位RISC密码专用微处理器中设计了一个专用存储单元用来存放密码运算的相关数据,在密码运算时可以对其直接访问,大大减少了指令条数,提高了密码运算效率。
1 应用分析
通过对DES、RIJNDAEL、SERPENT、RC6、IDEA等分组密码算法的分析,很多不同分组密码算法具有相同或相似的基本操作运算,或者说,同一基本操作运算在不同的算法中出现的频率也不相同,如表1所示。
在表1所示常见操作中:S盒变换需要用到查找表LUT数据,算法不同,S盒查找表的大小也不相同,例如,DES是8个6~4的查找表,AES是1个8~8的查找表;位置换操作需要用到相关的控制信息,不同的置换其控制信息也不相同,例如,DES算法就用到了六种置换的控制信息;有限域乘法运算中需要对不可约多项式和乘数多项式进行配置;密码运算中还有密钥及运算生成的子密钥数据。由此可见,密码运算中需要存储大量的不同类型的数据,每种数据的存储量大小也各不相同。这就决定了基于RISC结构的密码专用微处理器需要具有较灵活的存储结构。
因此,为了提高密码运算的执行效率,在密码微处理器中可以设计一个内部的专用存储单元,用来存储密钥和一些特定的配置数据。对专用存储单元的访问要结合密码运算单元的特点才能具有较好的灵活性。因此在本设计中,微处理器完成密码运算时使用专用存储单元,而完成其他运算时则使用数据存储器。这样,既具有了其专用性又保留了其通用性,能够高效地实现密码算法[3]。
2 专用存储单元的设计
2.1 整体结构
密码专用微处理器在支持原load指令和store指令访问数据存储单元的基础上,硬件上又加入了专用存储单元的访问逻辑。专用存储单元与数据存储单元分离独立地存储相应的数据,这样就减少了大量RISC结构中难以避免的寄存器与存储单元交换数据的指令[4]。密码专用微处理器的整体结构如图1所示。
专用存储单元放置于IF/ID极间寄存器之后,在进行密码运算时,操作数从寄存器堆中取出,对于密码运算的配置信息,则从专用存储单元中取出直接进入IU运算单元完成配置。
专用存储单元共分为三个模块:S盒模块、密钥模块、bit置换和有限域模块,每一个模块又由一些地址位宽和数据位宽各不相同的RAM组成,如图2所示。
图2中,存放S盒LUT数据部分由8个28×8的RAM构成,存放密钥部分由1个27×32的RAM构成,存放置换和有限域配置信息部分由6个24×32的RAM构成。三个存储模块统一编址,对于S盒存储模块前2bit进行译码,后8bit进行寻址;对于密钥存储模块前3bit进行译码,后7bit进行寻址;对于存储置换和有限域模块,前6bit进行译码,后4bit进行寻址。访问专用存储单元时由Opcode及指令字中其他字段参加译码来控制对不同数据的访问。
2.2 S盒存储模块
通过对DES、AES、IDEA等41种分组密码算法分析可知,有30种算法使用了S盒替代操作,共计十种不同类型的S盒,十种S盒中为二种以上不同算法所使用的仅有4×4、6×4、8×8、8×32 四种S盒,其他六种不同类型的S盒查表操作可以采用以上四种S盒查表操作或逻辑运算实现[5]。本设计的S盒实现方式是基于查找表LUT(Look Up Table)的实现方式,将S盒查找表存储在RAM中,操作数作为读地址。这种方法占用较多存储单元,但运算速度快,最主要的是它具有可配置性,能满足当前多种密码运算的需要,并且不进行配置时它本身不带有任何算法信息,使得本身更具有安全性。S盒电路结构如图3所示。
S盒代替电路在设计上考虑支持8×8、8×32、4×4、6×4四种查表模式,采用RAM组的设计方式,为支持32bit的数据路径,采用了4个双端口28×8的RAM组并联电路,即2个28×8的RAM构成一个RAM组。
- 可适配多路并行移位操作指令及其硬件实现研究(11-08)