本站小编为你精心准备了密码SOC并行处理技术研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
《计算机工程与设计杂志》2014年第七期
基于共享总线的SoC提供全局物理地址空间,所有功能模块通过共享总线进行互连通信。典型的基于总线架构的多引擎密码SoC有文献[4]设计的AESTHEIC。共享总线结构简单,易于实现,发展成熟,具有众多的第三方IP核支持。可以把多个密码处理引擎的地址空间映射到主机的内存空间或I/O空间进行统一访问。但是,采用共享总线互连方式,当处理器数目增加且处理器间数据交换频繁时,总线竞争会造成数据通信的传输瓶颈。同时,将产生主处理器负担过重的问题。而且,当系统中处理模块和存储模块数量增多时,共享总线的延迟开销就会变的很大,限制了总线带宽和吞吐率的提高。通过以上分析,结合两种多引擎密码SoC互连方式的特点和密码处理引擎的的工作方式,提出了一种采用非总线的结构互连四个密码处理引擎,通过AMBA总线连接各功能模块的多引擎密码SoC并行处理架构。该架构在满足功能和性能需求的前提下,有效的控制了芯片面积和功耗,降低了设计复杂度。
2多引擎密码SoC设计
2.1多引擎密码SoC架构在分析多引擎密码SoC互连结构的基础上,本文提出了一种多引擎密码SoC并行处理架构,如图1所示。选用AMBA(advancedmicrocontrollerbusarchitec-ture)总线连接各IP核。AMBA总线规范是ARM公司为高性能嵌入式系统专门设计的一种总线标准。其中,AXI总线,是一种高性能、高带宽、低延迟的片内总线,它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址。支持分离的读写数据通道、并支持显著传输访问和乱序访问,更加容易进行时序收敛[7]。AXI总线上挂接有主处理器、多引擎密码运算模块(MultiPE)、DMA控制器、片上存储器等。APB总线用于低功耗外设的连接。主要挂接有UART接口、JTAG、看门狗等。APB总线通过一个桥接(AXI-APB-Bridge)设备与AXI总线相连。主处理器主要用来运行操作系统、管理程序和用户应用程序,并实现内部各模块的协调与控制。DMA控制器可以不经过主处理器直接对内存或总线从设备进行读写操作,有效的减轻了数据交换对主处理器的依赖,降低了CPU的任务负载,保证系统有较高的吞吐率,提高了系统的整体性能。多引擎密码运算模块是整个芯片的运算核心部件,包含了4个密码处理引擎。本文采用的密码处理引擎可以根据需求,在嵌入式主处理器的调度下,运行不同的算法程序,完成相应的密码处理任务。通信接口主要有位于AXI总线上的USB接口,能够根据特定密码应用协议来实现与外部的高速数据通信,提供高效的密码服务功能。位于APB总线上的低速通信接口,例如UART接口、SPI接口等通信单元,可用于与外部通信设备的连接,扩展密码SoC芯片的功能。
2.2多引擎密码运算模块设计
2.2.1多引擎密码运算模块的结构多引擎密码运算模块是密码SoC的主要部件,其设计如图2所示。多引擎密码运算模块主要由:输入输出接口(AXIwrapper)、数据分配控制器(inMCU)、数据接收控制器(outMCU)、多算法密码引擎(PE)、输入缓存(inFIFO)和输出缓存(outFIFO)等功能单元组成。为了提高数据的传输效率,多引擎密码运算模块采用输入输出相分离的结构。给每一个PE设计有输入缓存和输出缓存,用于数据收发缓冲存储,同时由数据分配控制器和数据接收控制器对数据包进行源、目的地址译码并实现转发,输出端输出的结果可以反馈给输入端做链接处理。这样就构成了一个简单有效的分配-接收系统。设计输入缓存和输出缓存的目的是为了匹配总线数据传输速率和密码引擎数据处理速率,提高总线带宽利用率。输入缓存和输出缓存的深度是影响密码处理性能的关键参数。当密码引擎完成一个数据包的加解密任务后,总线读取输出缓存中的计算结果,此时希望马上有新的待加解密数据输入PE供其处理,从而实现密码运算的无缝链接,提高计算的并行性。所以,可以将PE的输入缓存设为输出缓存的两倍。根据统计,分组密码的最大分组一般小于64x32bit,序列密码、杂凑密码的输入可以是多次输入的组合。因此输入缓存的大小设置为128x32bit,输出缓存的大小设置为64x32bit。
2.2.2多引擎密码运算模块控制机制多个密码引擎之间的合理调度和控制是实现高效并行密码处理的关键。数据分配控制器和数据接收控制器是多引擎密码运算模块的“控制中枢”。它们的实质是有限状态机,用来判断输入\输出端的状态和发出读\写控制信号。下面以数据分配控制器的设计来说明多引擎密码运算模块的控制机制。数据分配控制器的控制原理是:通过解析数据包包头的控制信息来配置控制寄存器,使其具有不同的数据分配方式。表1列出了数据分配控制器的控制寄存器。PE1、PE2、PE3、PE4的输入计数器用来完成进入相应密码引擎数据个数的计数工作。输入引擎选择寄存器用来选定数据包中的数据在那几个PE中分配。输入模式寄存器用来说明数据在选定的PE中采用何种方式来分配,包括串行分配方式和并行分配方式。图3是数据分配控制器状态设计。其中,IDLE是起始状态,PE1W、PE2W、PE3W、PE4W分别是PE1、PE2、PE3、PE4的写状态。inMCU可以根据控制信息的不同在选定的PE组合中串行或并行的分配数据。数据分配控制器首先解析包头、配置IN_SEL、IN_MOD以及各个输入计数器的初始值。然后,inMCU按照配置信息分配数据,若当前输入计数器从初始值自减为0时,会重新复位为初始值,同时inMCU选择下一个PE写入数据。
3多引擎密码SoC并行处理机制设计
3.1通信数据包的设计多引擎密码SoC是一种数据流处理系统,针对不同密码算法的的工作特性和多引擎密码运算模块互连的特点,密码SoC系统和各PE之间采用封装数据包的方式进行通信。为确保通信的高效率,数据包应采取尽量简单的封装格式,本文采取的数据包格式如图4所示。数据包包头由32位的数据组成。32位的包头含有与此次任务相关的关键信息。任务编号对任务队列按顺序编号,便于区分不同任务;数据包大小n指本次传输任务包中的数据个数;读写标志说明该数据包的是待加/解密数据还是加/解密结果;工作模式标识数据在PE间传输的方式,包括串行传输、并行传输和链接传输3种方式;PE编码指选中哪几个PE;数据类型说明数据是密码运算中的哪类数据,包括指令、密钥、IV、命令、待加/解密数据等;源PEID和目的PEID用于说明PE间数据交互时源PE和目的PE。数据分配控制器根据包头信息的不同采取不同的处理方式。如图5所示,数据分配控制器处理基本数据包时,通过解析包头,在选定的PE组合中串行分配数据包中的数据。处理并行数据包时,数据分配控制器连续解析两个包头,在两组选定的PE组合中并行分配数据。处理链接数据包时,数据接收控制器会将包头1所带数据处理结果作为包头2的输入,反馈到输入端供链接处理。数据包的这种设计满足了加解密模式灵活多变的需求。
3.2数据分配机制数据分配机制是影响多引擎密码运算模块密码处理性能的核心因素之一,根据密码引擎结构、不同算法工作模式特点以及系统传输带宽大小,选择一种合适的数据分配机制可以保证各密码引擎负载均衡,有效提高多引擎密码SoC芯片的并行处理性能[8]。本文采用的密码处理引擎,可以通过编写不同的程序,灵活、高效地实现多种不同的密码算法,包括分组密码、序列密码、杂凑函数等。针对不同的密码算法和不同工作模式进行并行性分析,可以得出以下3种并行工作机制。图6是报文内并行工作模式,它的特点是不同报文顺序执行,同一报文的不同分组(或数据块)分配到不同PE中并行执行,每个数据包在PE中的通过时间较短。这种工作模式主要适用于分组密码ECB(electroniccodebook)工作模式、分块的序列密码等无反馈工作模式。图7是一种报文间并行工作模式,它的特点是不同报文被分配到不同PE中并行执行,数据包由不同报文的不同分组(数据块)按一定顺序组合而成,不同报文的数据几乎同时到达指定PE。因为报文与PE一一对应,所以此种工作模式几乎适合所有密码算法工作模式,包括分组密码带反馈工作模式、序列密码、杂凑函数等。图8是另外一种报文间并行工作模式,它假设PE内部已经引入了n级(图8中为三级)流水,那么同一PE中最多可以流水处理n个报文的不同分组(或数据块)。这种工作模式提高了PE中功能模块的利用率,在工作PE数目较少的情况下也能取得一定的并行性。图8报文间并行2
3.3系统运行流程如何合理、高效地调度各功能模块,开发系统运行流程的并行性,将直接决定多引擎密码SoC的密码处理性能。在单个密码处理引擎处理性能一定的情况下,希望多个引擎并行工作来提高系统的吞吐率,同时希望尽量减少数据传输所占用的时钟周期,使密码SoC的吞吐率最大限度接近多引擎密码运算模块的吞吐率。也就是说,在一次加解密任务当中,若单个密码处理引擎处理性能一定,各个引擎并行计算时间越长,或计算时间占系统运行时间比例越高,那么系统的吞吐率就越高。图9给出了理想情况下,系统并行工作的流程。如图9所示,先利用系统DMA向多引擎密码运算模块输入两个数据包,之后系统总线可进行其他操作。当PE计算完成后,向DMA发送中断请求,根据中断请求等级的高低,可以进入中断程序执行读操作。与此同时,PE会读取缓存中的数据包2开始下一组计算。这样就做到了PE计算的无缝连接,最大限度的开发了输入输出操作与计算并行。
4系统综合与仿真验证
为了验证设计的正确性、分析多引擎密码SoC的整体性能,本文采用CMOS65nm工艺对多引擎密码运算模块进行了综合,其时钟频率可以达到200MHz。为了提高系统传输效率,仿真时采用多时钟域的设计,具体设置见表2。然后搭建了验证测试平台,计算了它的吞吐率。将计算结果与相关设计做性能对比,并分析了他们的优劣和造成这种差异的原因。将4个PE配置成AES算法,采用报文间并行1的工作模式。表3中列出了本设计与文献[4]中提出的AES-THEIC密码处理引擎的性能对比。将4个PE配置成SMS4算法,采用报文间并行1的工作模式。表4中列出了本设计与文献[5]中提出的Soph-SEC密码处理引擎的性能对比。通过性能对比发现,由于AESTHEIC和SophSEC密码处理引擎采用了专用的算法结构,对于特定算法的处理性能相对较高。而本设计基于可重构密码协处理器,它的特点在于可以根据配置信息重构为分组、序列、杂凑、ECC等任意密码算法,对于特定算法的针对性有待提升,吞吐率受限。针对多密码处理引擎的情况,本设计更多的关注如何优化数据的分配调度以及各密码处理引擎之间的通信,因此达到了系统设计的目标。
5结束语
提出了一种高效、灵活的多引擎密码SoC并行处理构,重点介绍了多引擎密码运算模块的设计。为了提升系统的处理效率,针对不同的密码算法和不同工作模式,研究了3种并行工作机制。与同类设计相比,本文提出的多引擎密码SoC每个引擎可以重构为不同的密码算法,具有更高的灵活性;数据在各引擎间分配和调度更高效,取得了较高的数据吞吐率。
作者:李军伟戴紫彬南龙梅戴乐育李伟单位:信息工程大学