基于FPGA的密码设备多处理器协调控制技术研究与设计
2008-07-08
作者:刘晶晶1, 戴紫彬2
摘 要: 介绍了一种基于FPGA的密码设备" title="密码设备">密码设备多处理器" title="多处理器">多处理器模型,结合模型的特点论述了利用这种多处理器进行协调控制的机制以及一般设计方法。对处理器相互之间的关系进行了研究与分析,同时也对从处理器与密码设备之间的通信流程进行了详细的分析和设计。针对共享资源的使用提出了一种基于双端口" title="双端口">双端口RAM的解决方法,提高了系统资源的利用效率。
关键词: 协调控制 多处理器 密码设备
随着科学技术的迅猛发展及用户对信息安全和敏感信息保护重视程度的提高,密码技术的使用越来越普及。但是,随着密码运算速度越来越快、密码位数越来越长、密码运算处理量越来越大,对系统计算能力及实时性的要求也在不断提高,以往基于单处理器的系统已经不能满足密码运算对系统加脱密速度和密钥宽度的要求。与此同时,微处理器的价格越来越便宜,在完成复杂的系统任务时,采用多个处理器共同协调完成密码运算任务,以提高系统的计算能力和降低时间,已经成为大势所趋。基于以上情况,综合各方面的考虑,本文提出基于多处理器协调控制的密码设备研究与设计。
通过对密码设备特点和密码运算结构的分析可以知道,进行密码设备的多" title="的多">的多处理器设计一般需要考虑以下几点:
(1)处理器的选型。RISC、CISC和DSP是目前主要采用的处理器架构,可以根据实际情况进行针对性的选择。
(2)处理器的个数。对处理器个数的选择,主要应考察多处理器的使用对于处理效果和处理效率是否能达到设计的要求,总体处理性能是否优于单个处理器的处理性能。
(3)处理器间的互连结构。
(4)多处理器的主从关系以及共享存储区的使用。
本文将讨论密码设备多处理器设计所遵循的一般性原则,分析多个处理器之间的通信及控制关系,并按处理器关系的不同提出密码设备多处理器设计的具体方案。同时,针对多处理器协调控制的相关问题给出基于双端口RAM的缓冲区共享资源的解决办法,以节省系统的资源,提高系统的利用效率。
1 多处理器设计技术研究
1.1 多处理器设计中应注意的问题
在多处理器的设计中应该注意以下问题:
(1)多处理器相互之间关系的处理。
(2)内部资源和缓冲区的利用和分配。
(3)多处理器接口的设计。
(4)时钟频率和读写时序的匹配关系。
(5)总线资源的仲裁和分配。
在多处理器的设计中,应该意识到多处理器的设计并不仅仅是处理器数量的叠加,而应该是处理效果和运算效率的整体性提高,它所注重的是系统之间的合力,而不是单一模块的发展。在有些设计中,往往存在着由于处理器结构和片内资源使用不合理而带来整体性能的降低,达不到设计的要求,甚至其利用率还达不到单个处理器单独使用的效果,给资源带来了浪费。除此以外,在设计中还应该处理好多进程之间的关系,注意相关进程的竞争,避免由此带来的数据混淆和死锁。
1.2 多处理器相互关系研究
处理器按相互之间的关系可以分为两类:主从关系和对等关系。主从关系是按CPU在整个系统中的地位和作用对其进行分类,主处理器在系统中起着主导作用,其生存周期伴随着整个处理活动的始终,它参与了系统的大部分操作,从处理器触发、等待、停止等一系列活动都由其控制,但它并不参与具体的运算和操作,更多的时候,它更像一个控制器;从处理器则主要负责具体的操作,进行大批量的数据运算,返回状态信息,然后由主处理器进行后续操作。而对等关系则可以理解为处理器之间关系是平等的,除了初始化的一些操作外,两者的地位和作用是一样的,竞争使用内部共享资源。
两者之间并没有明显的区别,只是在使用中根据用户不同的需求有针对性地进行选择。其中,具有主从关系的多处理器设计适用于处理器完成不同工作的情况,在这种情况下可以根据用户的使用需要有针对性地进行设计,发挥每个处理器最大的工作效率,避免相关资源的浪费;而具有对等关系的多处理器设计主要应用于几个处理器完成相同或相似功能的操作,与主从关系相比,共享缓冲和接口模块的设计较为简便,但关于总线资源的调度及总线仲裁的设计较为复杂。
1.3 共享资源的使用
FPGA的内部资源是极其有限的,所以在多处理器的设计中有许多资源都是由两个或多个处理器共享,这虽然可以有效地减少资源的使用,提高共享模块的使用效率,但由此对共享资源的使用和控制也带来了新的问题。尤其是中间缓冲的设计,由于其状态量多,信号复杂,往往成为设计中的难点和重点问题。为有效解决上述问题,一般应从以下几个方面加以考虑:
(1)临时数据的存取。当需要使用到前一个或前几个微处理器运算所得的数据时,可以通过添加移位寄存器的方式进行暂存,但这种方法仅仅用于少量信息的存储,当有多位或大量信息时往往造成资源使用的紧张。
(2)合理使用总线仲裁,减少相关数据的等待时间。通过使用总线仲裁机制可以避免总线拥堵,减少时间浪费。
(3)添加状态中断和唤醒机制。中断提供一个主动信息给处理器表示需要进行某些运算,当由于某些原因造成无法及时处理时,可以通过添加等待/唤醒机制节省时间。
2 密码设备多处理器系统的设计
密码设备的处理和控制有其自身的特点:
(1)运算量多且大。密码运算作为一种较为复杂的数学计算,数据量是极为庞大的,无论是算法的实现,中间结果的存储还是直接的运算都会占用很多的处理器资源,但由于其运算相对较为独立,所以使用单一的处理器进行运算有利于程序的优化,提高系统的性能。
(2)具有某些特殊的密码运算。密码运算具有移位、循环这些较为特殊的运算,而且这些运算使用量大,次数多,可设置特殊的指令对其进行操作。
(3)提供较为完备的密码功能。密码设备可提供不同种类不同类型的算法来实现密码设备的功能,而且这些密码算法的使用也可以作为不同的类型加以单列。
综合以上各方面的考虑,采用主从式的多处理器结构进行设计可以有效地利用处理器的资源,简化相关设计的流程,提高系统的效率,其结构模型如图1所示。
其中,可以将相关的数据传输分为两类:主/从CPU之间的通信和从CPU与内部算法模块之间的通信。
2.1 主/从CPU之间的通信
主/从CPU之间的通信过程可以分为以下六个步骤:
(1)主CPU向参数控制寄存器" title="控制寄存器">控制寄存器写参数,向控制寄存器写控制字。
(2)触发从CPU中断。
(3)唤醒从CPU中断,中断处理程序从控制参数寄存器中读出参数。然后跳转至对应操作。
(4)从CPU执行完所需处理后,往状态寄存器写返回参数,然后再向控制寄存器写相关控制字。
(5)触发主CPU中断。
(6)主CPU的中断处理开始运行,从状态寄存器中读取返回参数[1]。
中断的产生是通过一个控制寄存器进行控制的,控制寄存器分别映射到主/从CPU的相关存储空间,这样主/从CPU都可以向控制寄存器写入控制数据。同时控制寄存器也与主/从CPU的中断控制器相连,控制寄存器可以根据写入的控制数据信息触发某个CPU的中断。
当主CPU需要通信时,要先往参数控制寄存器写一个控制参量,包括CPU的相关配置信息、内存及地址的大小,同时向控制寄存器写控制字,并将控制字的C1_val位置为1,用来通知从CPU命令已发送;然后控制寄存器判断C1_val位值并通过中断寄存器向从CPU发送一个中断,从CPU接收到这个中断后,从参数控制寄存器里取出相关参数,并将C1_val置为0,同时将C1_empty位置为1,表示正在进行相关处理和运算;当从CPU密码运算完成时,将C1_empty位置为0,并将控制寄存器的C2_val位置为1,通知主CPU表示运算完成;主CPU接收中断后,清C2_val位,并置C2_empty位,C2_empty触发从CPU中断,通知从CPU状态信息已被读取,然后从CPU可以向状态寄存器中写入新的状态信息。
主/从CPU共享内存的使用,可以通过设立共享缓冲区加以解决,将共享内存分块,由主/从CPU调用。在设计中使用双端口RAM作为两个CPU的交互区,其优点主要有以下两方面:
(1)分配明确的地址空间,减少主/从CPU之间的竞争。使用双端口RAM,对存储空间的使用可以通过选通相对应的地址,直接进行数据的读取和存储。从而避免了数据的混淆和进程死锁。
(2)内外时钟工作在不同的频率。可以通过引入双时钟让主/从CPU工作在不同的频率,分别按照自己的速率进行数据的传输,减少接口模块的设计难度,同时也可以使CPU的设计和选择具有更大的灵活性。
由图2可以看出,利用双端口RAM,两个CPU较好地进行了数据传输,实现了要求,达到了目的[2-3]。
2.2 从CPU和密码模块之间的交互与控制
在密码设备多处理系统模型中,从CPU作为外部主CPU和内部密码模块之间的连接设备,也起着十分重要的作用。在外部主CPU将相关命令和必要参数通过共享缓冲区传送给从CPU以后,具体的密码运算以及所提供功能的具体实现都要由从CPU进行控制。以下结合其模型设计做具体介绍[4]。
就模块控制而言,最关键的问题是密码功能模块之间相互关系的协调以及总线资源的使用和仲裁。密码设备向用户提供多项密码服务功能。一般应包括数据加密、身份认证、数字签名等基本功能,在本设计中,将这些功能单独剥离出来,利用单独的算法协处理器模块加以实现,相互之间的通信和数据交互通过局部总线进行,数据的读取和写入以及局部总线的控制和使用情况都由局部总线状态机进行控制。因篇幅所限,本文只给出如图3所示的从CPU向缓冲区写数据的状态机控制结构图。
S0作为初始状态,从CPU对局部总线状态机触发开始即进入此状态,S1作为等待状态,是状态机的中间环节。一般而言,只要状态机操作没有完成,或者配置参数没有完成都可以进入此状态。
一旦数据开始传输,状态机首先进入等待状态S1,并在S1状态进行判断。如果检测到复位信号Reset=1,则无条件进入状态S0,否则继续等待;随后状态机进行操作参数的配置,通过地址译码单元对相关寄存器进行选通,向命令寄存器写入命令(S2)、向长度寄存器写入传输数据的长度(S3)和向状态寄存器中写入状态信息(S4)。上述操作完成后则无条件返回至等待状态S1,接下来进入向缓冲区写数据的操作状态(S5)。在S5状态,状态机对缓冲区满标志位进行判断,若FF_IR_INFIFO=0,则进入状态S6,否则进入状态S7。当操作进入S7状态时,状态机进行后续信号判断,若WEN_INFIFO=1、READY#=1,则进入等待状态S1,否则继续停留在S7状态;当操作进入S6状态时,若WEN_INFIFO=0、READY#=0,则进入S8状态,然后在S8状态进行猝发传输信号Burst的判断,若为1进入状态S1继续等待,否则进入状态S0,表示数据传输完成。
在本文介绍的主从式多CPU结构中,主CPU用来控制管理各个模块的协同工作,从CPU单独负责密码运算的实现。通过中断通信和内存共享的方式,两块CPU能在同一个系统里达到很好的协作,提高了整体芯片的功能。
密码设备设计的复杂度正在不断提高,随着科学技术的不断发展以及计算机性能的不断提高,以往长度的算法设计已不能满足系统安全的要求。可以预见,在未来的密码设备的设计中,会有越来越多不同种类的CPU集成于同一个密码设备里,如何协调所有的CPU,更有效地发挥所有CPU的性能仍是一项值得研究的课题。
参考文献
[1] 郭凯,陈颖琪,方向忠. HDTV SOC中的多CPU设计.电视技术[J],2005,(3).
[2] USing dual port interronnect to resolve multiprocessor system bottlenecks By Jonathan LaRue and Danny Tseng.http://www.Embedded.com,2006-01-18.
[3] GUZEMAN D. 21st century multiprocessor design. http://www.Embedded.com,2006-05-29.
[4] GENTIE R, KATZ D.Common programming models for use on a dual-core processor. http://www.Embedded.com, 2006-03-22.