




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二届中国电子学会Xilinx开放源码硬件创新大赛基于多核技术的FPGA信息加密解密器设计研究报告大连理工大学参赛队2010年3月10日基于多核技术的FPGA信息加密解密器设计 指导老师:邱铁 团队成员:刘大伟、黄磊、满俊麟、张宝伟 联系方式 目录1.研究背景- 5 -1.1系统原理和技术特点:- 5 -1.2多核技术:- 6 -1.3多核的挑战:- 6 -1.3.1 硬件挑战- 6 -1.3.2 软件挑战- 6 -1.4 多核的发展- 7 -1.5 优势- 7 -2 多核构架设计- 8 -2.1 系统架构结构概况- 8 -2.2 本地子系统- 8 -2.2.1 微处理器核- 9 -2.2.2 本地指令存储器- 11 -2.2.3 本地数据存储器- 11 -2.3 调度模块- 11 -2.3.1 任务分配器- 11 -2.3.2 任务调度器- 11 -2.3.3 全局数据通道- 12 -2.4 通讯互连架构- 12 -2.4.1 局部总线- 12 -2.4.2 全局总线- 13 -2.4.3 总线桥- 13 -2.5 全局共享模块- 14 -2.5.1 共享数据存储器- 14 -2.5.2 中断控制器- 14 -3.调度算法的实现- 14 -3.1 多核CPU与调度算法的总体设计- 14 -3.2 存储地址分配- 16 -3.3 局部总线各模块的设计- 16 -3.3.1 本地指令存储器的设计- 16 -3.3.2 本地数据存储器的设计- 17 -3.4 调度模块中各模块的设计- 18 -3.4.1任务分配器- 19 -3.4.2任务调度器- 21 -3.4.3 全局数据通道- 24 -3.5 全局总线各模块的设计- 25 -3.5.1 共享数据存储器- 25 -3.5.2 中断控制器- 25 -3.6 总线桥的设计- 26 -3.6.1 总线转换器- 26 -3.6.2 从主译码器- 27 -3.6.3 从主数据通道- 27 -4.加密解密算法实现- 29 -4.1加密解密算法的选择- 29 -4.2 RSA算法的实现- 30 -4.2.1汇编指令集- 30 -4.2.2汇编程序设计- 36 -4.3 RSA算法与四核调度- 39 -5.功能实现- 39 -5.1 测试原理- 39 -5.2 应用模型- 40 -5.3 系统级功能验证结果- 40 -参 考 文 献- 46 -1.研究背景网络通信中的加密解密技术是信息安全技术领域的一项重要课题,本项目是针对当前网络通信特点数据量较大,其通信速度受加密器和解密的限制,本项目采用FPGA设计多核CPU,实现对网络传输信息进行加密和解密,保证通信网络高效安全的实现。1.1系统原理和技术特点:1.在传统的网络通信中,加密和解密的速度影响着通信的速度。单CPU难以满足高效性的要求。本项目采用FPGA设计具有4个核的处理器,外加一个硬核,用硬核来控制4个软核,设计及优化调度算法,使四个核能协同工作,提高加密解密速度,保证数据传输速率。2.加密解密采取RSA算法加密过程中,每个处理器完成一步加密技术,采用流水线式的处理机制,产生随机数判断素数加密解密,这样不仅保证了网络传输的安全性,也保证了传输的高效性。3.此项目中注重处理器的选型,处理器的数量,算法的编写,内存的分配等等。4.Xilinx基于FPGA的嵌入式解决方案提供了构建范围广泛的嵌入式网络系统所需要的所有组件和资源。Xilinx嵌入式解决方案的一个主要优点是其处理器、IP内核以及软件组件的灵活性和可扩展能力。1.2多核技术:1.多核平台的建立,及多核调度算法的的设计及优化。2.将加密解密过程进行分配,用多核分步进行调度,及每一轮过程中给各处理机分配合适的负载量。3.利用平台使加密解密速度与网络传输速率相匹配。1.3多核的挑战:在单颗芯片上集成如此多的资源可以在很大程度上提升整体性能,但同时也在硬件和软件的设计上对设计人员提出了新的挑战。1.3.1 硬件挑战传统的并行处理系统是用来做科学运算、数据库,以及其他的与嵌入式系统工作环境大相径庭的应用领域。因此,相对传统的并行处理系统而言,设计人员必须着重考虑多处理器系统芯片的两个应用特征:(1) 实时性:所谓实时性,其核心含义在于确定性8,实时性操作要求系统架构有可以预见的性能体现,也就是说系统的每个组成单元都有可以预见的为,这样软件开发人员可以计划如何在系统的关键部分获得要求的性能。(2) 低功耗:大多数嵌入式设备都运行在对功耗要求比较严格的场合。封装和机械散热装置解决了传统计算机的功耗问题,但是对于多处理器系统芯片的设计,就需要从各个抽象层次去考虑功耗问题,在系统级设计时就必须对功耗有足够精确的控制。1.3.2 软件挑战软件的设计在多处理器系统芯片的整体设计中起着越来越重要的作用,优秀的操作系统和应用软件使得同样的硬件平台能够更高效地完成系统功能。设计多处理器系统芯片在软件方面所面临的挑战主要体现在以下几个方面:软硬件开发环境和工具:嵌入式软件的开发属于跨平台开发,即开发平台使用的处理器和开发对象的处理器往往不是同一类型,因此,工程师需要交叉的软件集成开发环境,即进行代码编写、编译、链接和调试应用程序的集成开发环境。软硬件协同设计:多处理器系统是一个专用系统,所以在设计过程中,软件设计和硬件设计是紧密结合、相互协调的,这就产生了软硬件协同设计、协同验证这种全新的设计方法,这就要求设计人员在设计时从系统功能的实现考虑,把实现时的软硬件同时考虑进去,硬件设计则需要包括芯片级“功能定制”设计。这样既可以最大限度地利用有效资源,缩短开发周期,又能够获得更好的设计效果。操作系统:大部分嵌入式系统都采用实时操作系统,而如今很多商业实时操作系统都包括许多功能,从而显得过于庞大。对于多处理器系统芯片而言,根据应用环境的需要,仅仅需要这些操作系统的核心功能以支持少量应用软件的运行。1.4 多核的发展在单颗芯片上集成多个处理器来提高系统芯片的整体性能,已经成为下一代集成电路的设计趋势。多处理器系统芯片的设计已经成为国内外研究的热点。从产业界看,国际上已有多家公司建立了MPSoC平台,如表1.1所示,分别有ARM的MPCORE,Philip的Nexperia,TI的OMAP以及Xilinx的Vertex-II Pro等。目前,国内的多核发展水平还没有到达国际的水平,但是这同时也意味着国内市场多核发展的广阔空间。自2006年开始,国内不少单位也开展MPSoC/NoC方面研究,并获得国家自然科学基金的资助,如表1.1所示。表1.1 国家自然科学基金在MPSoC/NoC方向上的资助情况项目名称项目执行年限项目承担单位集成电路NoC低功耗通讯协议栈基础研究2006.1-2008.12合肥工业大学多芯核共享的测试相应数据压缩方法研究2006.1-2008.12中科院计算技术研究所无线通信自重构容错NoC研究2006.7-2008.12西安邮电学院多核体系结构下并行应用的性能评测与优化技术研究2007.1-2008.12北京应用物理与计算数学研究所多核处理器系统的流式优化研究2007.1-2009.12清华大学多核学习研究2007.1-2009.12西安电子科技大学1.5 优势网络通信中的信息加密解密技术是信息安全技术领域的一项重要课题,随着网络技术的发展,通过公司间通过通讯互联网来进行通讯越来越普及而公司内部亦大都通过局域网来传输,这就为信息的安全性埋下隐患,防范不好造成珍贵数据的丢失,重者被其他企业窃取商业机密而痛失买卖。目前市场上的加密解密设备均为单核,密钥长度短(易被暴力破解(1),运算速度远远达不到用户需求(视频会议,多线程通讯等等,需要很大计算量)。本公司所设计的产品是针对以上技术瓶颈,采用国际公认的高难度加密算法(RSA),配合超长密钥(2048位),本产品采用FPGA设计具有4个核的处理器,外加一个硬核。用硬核来控制4个软核,设计及优化调度算法,使4个软核进行流水线能协同工作,提高加密,解密速度。保证客户网络通信的高效和安全。2 多核构架设计2.1 系统架构结构概况图2.1 系统架构图如图2.1所示,该系统架构有如下几个主要部分:基于自己编写的微处理器的本地子系统、基于双层总线的通讯架构、调度模块和全局共享模块。本地子系统主要有自己编写的微处理器核、本地存储器以及局部总线组成,并可扩展其他模块,但是在本设计中,仅研究了他的最简单的结构。子系统的数目可以配置,此多核系统具有4个子系统。调度模块包含了任务分配模块、任务调度模块和全局数据通道模块。全局总线包含了总线桥和译码器等。而全局共享模块包含共享数据存储器和中断控制器。2.2 本地子系统本地子系统包括微处理器核和本地存储器,其中每个处理器核都可以通过局部总线独占性地访问本地存储器,这样处理器之间就不会相互影响,为多核的并行操作奠定了基础。在此体系中,微处理器采用的是自己编写的一个简单的处理器核,处理器核采用的是哈佛结构(即程序指令和数据指令分开组织和存储的)同时具有基本的加、减和移位等操作。同时也因为处理器核采用的是哈佛结构,所以本地处理器也分为本地指令存储器和本地数据存储器。2.2.1 微处理器核本课题研究的是多核与调度算法的设计,但是目前我们没有微处理器核,所以就把已有的向量机的内核做了一些改动,编写了可以适合本课题的微处理器核。(1) 微处理器图2.2 微处理器的五级流水线该微处理器具有五级流水线,包括指令预取、指令译码、执行、存储器访问以及回写操作。如图2.2,在指令预取阶段,从Cache或主存储器中取出指令,并将其放入指令流水线,该指令为当前指令的下两条指令。在指令译码阶段,对指令进行译码,从寄存器组中读取寄存器操作数。执行阶段,对操作数进行移位操作,产生算术逻辑单元ALU的结果,如果指令是存储访问指令Load/Store,则在ALU中计算存储器的地址。如果需要则在存储器访问阶段访问数据存储器,否则ALU的结果只是简单的缓冲一个时钟周期,以便与所有的指令具有同样的流水线流程。将指令产生的结果写到寄存器中则是在回写操作阶段实现的。(2) 微处理器总线接口描述该微处理器所采用的总线协议是自己定义的,我们称之为Start-Finish协议。其原理是:在做任何事之前,首先发出Start信号,表示我要做某事;待某事做完了,则返回Finish信号,表示该事情已经做完,你可以继续做其他的事了。举个简单的例子:在指令取指阶段,首先要发出Start信号,告诉存储器将要进行取指操作,然后根据指令地址从指令存储器中取出指令,最后返回Finish信号,告诉CPU取指操作已经文成,可以进行下一阶段的操作。该微处理器核的总线接口如图2.3所示,各个信号描述如表2.1所示。表2.1 处理器核的接口信号描述信号名输入/输出功能描述clk输入总线时钟信号,所有其他信号都在此信号的上升沿被采样Enable输入总线使能信号,用于启动系统和总线,高电平有效ResetN输入总线复位信号,用于复位系统和总线,低电平有效ResetAddr输入32位中断地址总线TaskFinished输出任务完成信号,高电平有效InsMemStart输出指令操作开始信号InsMemFinish输入指令操作完成信号InsMemRW输出指令读/写控制信号,高电平时为读操作,低电平为写操作。注:该信号总是处于高电平状态InsAddress输出32位指令地址总线InsData输入32位指令数据总线MemStart输出数据操作开始信号MemFinish输入数据操作完成信号MemRW输出数据读/写控制信号,高电平时为读操作,低电平时为写操作Address输出32位数据地址总线Data输入/输出32位数据读/写总线,当MemRW为高电平时,为读数据总线;当MemRW为低电平时,为写数据总线。图2.3 处理器核总线接口信号2.2.2 本地指令存储器本地指令存储器的这要功能是存放指令。微处理器核通过指令控制信号访问独自的本地指令存储器,构成局部子系统,其他处理器核没有访问权限。对于各个处理器核来说,各自的本地指令存储器的大小为1KB。2.2.3 本地数据存储器本地数据存储器的主要功能是存放临时数据。微处理器核通过数据控制信号访问独自的本地数据存储器,构成局部子系统,其他处理器核没有访问权限。对于各个处理器核来说,各自的本地指令存储器的大小也为1KB。2.3 调度模块在多核中,什么是任务调度呢?通过查阅书籍我们可以知道任务调度是指如何把复杂的应用程序的所有任务,合理地调度分配到多核系统的各个核上,并追求整个应用程序的最小完成时间。任务调度问题是多核调度的关键,如果处理不好,则可能导致多核系统效率低下,甚至可能不如单个计算机,严重的可能导致计算失败。因此,在多核系统中,要取得好的系统和应用性能,有效地调度任务是一个非常关键的问题。我们将任务调度模块分为三个部分:任务分配模块、任务调度模块和全局数据通道模块。2.3.1 任务分配器在本多核系统中,任务分配器的功能是:处理选择任务在哪个核上执行,分配决策必须在调度决策执行前做出。在任务分配中,分配算法需要注意以下两个规则:(1) 分配更多的任务到结点能力强的;(2) 如果某个节点的负载已经很重,不要在调度其他任务到该结点。2.3.2 任务调度器在本多核系统中,任务调度器的功能是:负责各个微处理器核与共享内存之间的通信和各个微处理器核之间的任务调度。2.3.3 全局数据通道在本多核系统中,全局数据通道负责把共享数据存储器中的数据读入到相应的微处理器核中。2.4 通讯互连架构通讯互连架构主要功能是:连接各系统主设备(微处理器核)和各系统从设备(本地指令存储器、本地数据存储器和全局共享模块),包括局部总线(第一层Start-Finish总线)和全局总线(第二层Start-Finish总线),如图2.1所示。在第一层Start-Finish总线中,主设备为微处理器核,从设备为本地存储器。因为采用的是哈佛结构,所以把本地存储器设计成本地指令存储器和本地数据存储器。因为只存在单个主设备和单个从设备,所以不存在总线冲突。每个微处理器核都可以随时对本地指令存储器和本地数据存储器发起读写操作,而互不干扰,从而极大地提高了数据运算的并行性。全局Start-Finish总线中则有多个主设备和一个从设备,因此存在总线冲突的情况,需要一定的策略来解决。两层总线之间的连接通过总线桥来完成。2.4.1 局部总线局部总线是用Start-Finish总线实现的,在本地子系统通讯层次中主设备自己所编写的微处理器核,从设备为本地指令存储器和本地数据存储器,由于该微处理器核采用的是哈佛结构,所以指令的读取和数据的读取互不冲突,因此可以把本地指令存储器和本地数据存储器看做是一个本地存储器。因为只存在单个的主设备和单个的从设备,所以不存在总线冲突,只需要简单的译码器来判断微处理器核选择的是本地存储器还是全局通讯层次的全局存储器。每个微处理器都拥有一个私有的,唯一的本地存储器,通过局部总线访问本地存储器,从而极大地提高了系统架构执行的并行性。其结构如图2.4所示。图2.4 局部总线图2.5 全局总线2.4.2 全局总线全局总线则连接各个本地子系统、调度模块和全局共享模块。本地子系统(包括处理器核、本地指令存储器和本地数据存储器)为主设备,全局共享模块(包括共享数据存储器和中断控制器)为从设备,由于存在多核主设备和多核从设备,所以在全局总线上必须设计译码器,所有总线主设备发出的总线请求都必须通过译码器来选择从设备,共享数据存储器把共享数据信息发送给所有的处理器核,而中断控制器则把地址信息发给任务分配器。其结构如图2.5所示。2.4.3 总线桥总线桥的主要功能是连接局部总线和全局总线,并且控制处理器核对存储器的访问。总线桥通过微处理器核发出的地址判断本次操作是对本地数据存储器还是共享数据存储器发起访问,然后决定是把处理器核发出的地址、数据和控制信号传递到局部总线还是全局总线。同样,由本地数据存储器和共享数据存储器传递给处理器核的数据和应答信号也是通过译码器(由地址线产生的)来进行选择。总线桥的功能框图如图2.6所示。图2.6 总线桥功能框图2.5 全局共享模块在本多核系统设计中,全局共享模块主要包括:共享数据存储器和中断控制器。分别介绍如下。2.5.1 共享数据存储器共享数据存储器主要用来实现多核之间的通讯,处理器通过Store/Load指令实现各个处理器核与共享数据存储器的数据传递,从而实现多核之间的通讯。共享存储器的大小为4KB,地址空间从0x18000000-0x18000FFF。2.5.2 中断控制器中断控制器主要实现多核之间的任务调度,记录对其他处理器发起中断的中断地址,然后把该地址发送给任务分配中,在任务分配器中统一进行任务调度。中断控制器的起始地址是0x18100000。 3.调度算法的实现3.1 多核CPU与调度算法的总体设计图3.1 4核CPU与调度算法的总体设计框图任务分配器是调度模块的一部分,为了框图的整体对称性,因此把任务分配器画在了调度模块的外面。4核CPU与调度算法设计具体分为两个通讯层次:本地通讯层次和全局通讯层次。本地通讯层次主要由微处理器、本地指令存储器和本地数据存储器组成;全局通讯层次包含如下模块:共享数据存储器和中断控制器。调度模块包括任务分配器、任务调度器和全局数据通道。如图3.1所示,顶层结构由7个模块组成,分别为:4个本地子系统通讯层次模块、1个调度模块、1个共享数据存储器和1个中断控制器。各种模块的功能描述如下:本地子系统通讯层次模块:包括处理器、本地指令存储器以及本地数据存储器。每个处理器都有一个指令存储单元和一个数据存储单元。为了保证这种私有的、唯一的属性,每个本地指令存储器和本地数据存储器只能唯一地由特定的处理器来访问。即本地指令存储器和本地数据存储器只能被本地处理器来访问。调度模块:实现处理器与共享数据存储器间的通讯及各个处理器间的相互调度。共享数据存储器:实现处理器之间信息交换的数据存储区域。总线桥模块:用于连接本地子系统通讯层次与全局通讯层次的数据通道以及相应的控制通道。中断控制器:处理来自各处理器的中断请求信号,产生面向各处理器的中断请求,并将中断请求发送给任务分配器。 下面将依次介绍各个模块的设计。3.2 存储地址分配表3.1 本地存储器地址分配表本地存储器本地指令存储器Pn本地数据存储器PnP0(1KB)0X00000000-0X000003FFP0(1KB)0X00000000-0X000003FFP1(1KB)0X00001000-0X000013FFP1(1KB)0X00001000-0X000013FFP2(1KB)0X00002000-0X000023FFP2(1KB)0X00002000-0X000023FFP3(1KB)0X00003000-0X000033FFP3(1KB)0X00003000-0X000033FF本设计平台中,有四种存储器分别是:本地指令存储器、本地数据存储器、共享数据存储器和中断控制器。其中本地指令存储器和本地数据存储器属于本地存储器,而共享数据存储器和中断控制器则属于全局共享存储器。表3.2 共存存储器地址分配表共享存储器共享数据存储器(4KB)0X18007000-0X18000FFF中断控制存储器(1KB)0X18100000-0X181003FF本设计中对存储器的地址分配采用的是分布式共享存储类型,即:指令存储器和数据存储器的地址是按照分布式存储类型分配的,采用分布式分配编址;而本地存储器和全局共享存储器是按照共享存储类型分配的,采用统一编址。具体分配的地址如表3.1和表3.2所示。3.3 局部总线各模块的设计局部总线主要连接微处理器核与本地指令存储器、本地数据存储器,以构成局部子系统。局部总线是Start-Finish总线的简单实现,只有一个微处理器核、一个本地指令存储器和一个本地数据存储器。3.3.1 本地指令存储器的设计表3.3 本地指令存储器信号描述信号名输入/输出功能描述clk输入全局时钟信号InsMemStart输入指令操作开始信号InsAddress输入32位指令地址总线InsMemRW输入指令读/写控制信号,高电平时为读操作,低电平为写操作。注:该信号总是处于高电平状态InsData输出32位指令数据总线InsMemFinish输出指令操作完成信号图3.2 本地指令存储器模型本地指令存储器是用来存储相对应的微处理器的指令程序代码,当系统上电复位后,处理器将从中读取指令,执行程序。其模型如图3.2所示,各信号描述如表3.3所示。模块设计具体方案的伪指令如下:如果InsMemStart为高电平根据指令地址InsAddress,读出指令存储器中的指令数据放入InsData中返回InsMemFinish = 高电平信号如果InsMemStart为低电平返回InsMemFinish = 低电平信号3.3.2 本地数据存储器的设计表3.4 本地数据存储器信号描述信号名输入/输出功能描述clk输入全局时钟信号MemStart输入数据操作开始信号Address输入32位数据地址总线MemRW输入数据读/写控制信号,高电平时为读操作,低电平为写操作。DataIn输入32位数据写总线DataOut输出32位数据读总线MemFinish输出数据操作完成信号图3.3 本地数据存储器模型本地数据存储器是用来存储数据信息的,其中数据信息以二进制的形式存在。微处理器可以对本地数据存储器中的数据进行读数操作,也可以把计算完成后的结果写入到本地数据存储器中。其模型如图3.3所示,各信号描述如表3.4所示。该模块具体设计方案的伪指令如下:如果MemStart为高电平如果MemRW = 高电平根据数据地址Address,读出数据存储器中的数据放入DataOut中。如果MemRW = 低电平把数据DataIn写入地址Address中。返回MemFinish = 高电平信号如果MemStart为低电平返回MemFinish = 低电平信号3.4 调度模块中各模块的设计在多核系统中,并行任务调度问题是指,如何把复杂的应用程序的所有任务合理地调度分配到的各个处理器核上,并追求整个应用程序的最小完成时间。一般而言,任务调度大致包括以下两个过程:(1) 任务分配阶段:即把任务分配到合适的处理器核上;(2) 任务的具体调度阶段:即已分配到各处理器核上各个任务的具体执行问题。在具体的任务调度算法中,有写可以明显的区分这两个阶段,有些则不一定能看出。从不同的角度出发,任务调度问题有着许多不同的分类,如静态和动态调度、集中式和分布式调度、抢占式和非抢占式调度、自适应和非自适应调度等。(1) 静态调度和动态调度静态调度也叫编译时间调度,它在编译时就已经确定了并行程序的各种属性(如任务处理时间、通信和数据依赖等),以及每个任务分配到哪一个处理器核都是在编译时就确定了的。使用静态调度对许多科学计算问题都是非常有效的,如用图像处理中物体识别和数值计算等任务的调度都很适合用静态调度处理。动态调度也叫实时调度,他在应用程序执行过程中根据得到的相应的调度信息来调度任务,有很多不确定的因素存在,且调度开销较大。因此,动态调度的目标不仅是最小化任务调度的完成时间,还要最小化调度本身的开销。(2) 集中式调度和分布式调度在集中式调度方法中,由一个成为中心调度器的处理器来收集全局的调度信息,其他处理器把他们的状态信息传送给中心调度器,并由中心调度器做出调度决定。集中式调度的主要优点在于实现比较简单。在分布式调度中,调度任务和调度信息分布在各个处理器上,分布式调度是由各个处理器单元的调度程序根据局部范围内的一些调度信息来进行任务调度,其最大优点在于具有良好的可扩展性。在本设计中,调度模块连接各本地子系统和全局共享模块,本地子系统(包括微处理器核、本地指令存储器和本地数据存储器)为主设备,全局共享模块(包括共享数据存储器和中断控制器)为从设备,调度模块主要包括任务分配器、任务调度器和全局数据通道。3.4.1任务分配器在此多核系统中,任务分配器的功能是:处理选择任务在哪个核上执行,分配决策必须在调度决策执行前做出,所以属于静态调度,采用的调度算法是多轮可分负载调度算法19。可分负载理论是调度理论中的一个新的分支,可用于描述并行分布式系统中的通讯和计算问题,是关于可分计算和通信的一种方法学。可分负载理论假设任务是可以被划分成为任意大小的子任务,然后可以在并行分布式系统中的不同节点上并行处理这些子任务,各任务之间不存在相互的约束关系。可分负载理论实用于并行分布式计算模型、分析各种不同的通信拓扑结构和性能评价等方面。可分负载理论为任务调度提供了一个易于处理的、实际的方法,允许对并行分布式计算系统中的计算和通信模型的整合。可分负载调度算法按对负载的分配方法可以分为:单轮可分负载调度算法和多轮可分负载调度两种类型的可分负载调度。单轮可分负载调度算法:就是指主处理机节点将应用划分成为块数与从处理机节点数目相等的子任务,然后一次性完成对负载的分配处理,每一个从处理机在整个应用的调度处理过程中仅一次接收并处理从主机节点发送来的子任务。多轮可分负载调度算法:就是指主处理机节点将应用划分成为块数大于从处理机数目的子任务,采取并行多次分配方法多次将子任务分发给各个从处理机节点,每一个从处理机节点在整个应用的调度处理过程中将不止一次地接收并处理主处理机节点发来的子任务。本多核设计系统中任务分配器所采用的多轮可分负载调度算法比较简单,首先已经确定了调度的轮数,其次所有分配的子任务的负载量是一样的。在任务分配器中,设计了一个数组,把事先分配好的任务放在数据里,由于该分配器是任务调度模块的一部分,故该任务分配器也设计了核间通讯的中断地址线,分配器对中断地址线中的中断地址和数组中的任务进行统一处理,在分配到各个处理器核上。任务分配器的框图如图3.5所示,各信号描述如表3.5所示。任务分配器的调度算法流程图如图3.4所示(以两个核为例),首先把一个任务划分为多个子任务,存放在任务数组中,按不同地址将任务分给不同的处理器,中断也是通过不同地址进行区别。图3.4 任务分配器调度算法流程图表3.5 任务分配器信号描述信号名输入/输出功能描述clk输入全局时钟信号IntAddr输入32位中断地址总线线TaskFinished输入4位任务完成信号总线,分别对应4个核Enable输入4位使能信号总线,分别对应4个核ResetN输入4位复位信号总线,分别对应4个核ResetAddr输出4个32位中断地址总线,分别对应4个核图3.5 任务分配器框图3.4.2任务调度器在本多核系统中,任务调度器的功能是:负责各个微处理器核与共享内存之间的通信和各个微处理器核之间的任务调度,所以采用动态调度策略,采用的调度算法是FIFO调度算法。FIFO调度算法:是指根据先入库先发出的原则,对于发出的存货以先入库存货的单价计算发出存货成本的方法。采用这种方法的具体做法是:先按存货的期初余额的单价计算发出的存货的成本,领发完毕后,再按第一批入库的存货的单价计算,依此从前向后类推,计算发出存货和结存货的成本。后来该方法被用于与计算机科学中。在本设计系统中,是指任务先到先被执行,如果多核中有多个任务同时到达,规定:任务标号(同处理器核是一个标号)小的先被执行。图3.6 任务调度器框图表3.6 任务调度器信号描述信号名输入/输出功能描述clk输入全局时钟信号MemStart_N输入数据操作开始信号MemRW_N输入数据读/写控制信号,高电平时为读操作,低电平时为写操作。Address_N输入32位数据地址总线DataIn_N输入32位数据读/写总线,当MemRW为高电平时,为读数据总线;当MemRW为低电平时,为写数据总线。MemStart输出数据操作开始信号MemRW输出数据读/写控制信号,高电平时为读操作,低电平时为写操作Address输出32位数据地址总线DataIn输出32位数据读/写总线,当MemRW为高电平时,为读数据总线;当MemRW为低电平时,为写数据总线。IntAddr输出32位中断地址总线该任务调度模块实际上是主设备到从设备之间的数据信号通道和控制信号通道。因为Start-Finish总线具有流水性,主设备发出的数据信号总是延迟与地址信号,所以主设备到从设备多路选择器又可以分为地址/控制信号多路选择器和数据多路选择器,但在本设计中为了减少设计的逻辑层次,把地址/控制信号多路选择器和数据多路选择器好分到同一个模块中,即任务调度模块。图3.6为任务调度器的模块框图,其输入输出信号描述见表3.6。图3.7 任务调度器的算法输出流程图控制信号,地址信号,数据信号进入任务分配器中,首先被存放在FIFO数组中,在通过译码器(由地址总线组成)来区别从设备(共享数据存储器和中断控制存储器)。具体操作伪代码如下:如果地址总线的高12位等于“00011000000”从设备选择共享数据存储器;如果地址总线的高12位等于“00011000001”从设备选择中断控制存储器;任务调度器的算法输出流程图如图3.7所示,任务调度器的算法输入流程图如图3.8所示。图3.8 任务调度器的算法输入流程图3.4.3 全局数据通道全局数据通道是从设备到主设备之间的数据信号通道和控制信号通道,在本设计中,只有共享数据存储器把数据直接送到个处理器核上,而中断控制存储器则把中断地址送到任务分配器中。该数据通道的设计是采用广播式,即把共享数据存储器中数据送到每个处理器核上,至于哪一个处理器核选择该数据不是有本模块负责,而是由总线桥模块负责。图3.9为全局数据通道的框图,其信号描述见表3.7。该模块设计方案的伪代码如下:如果clk从低电平-高电平如果MemFinish为高电平把DataOut和MemFinish的值分别分配给输出端口DataOut_N和MemFinish_N如果MemFinish 为低电平把0分配给输出端口DataOut_N和MemFinish_N图3.9 全局数据通道框图表3.7 全局数据通道信号描述信号名输入/输出功能描述clk输入全局时钟信号DataOut输入32位数据总线MemFinish输入数据操作结束信号DataOut_N输出32位数据总线MemFinish_N输出数据操作结束信号3.5 全局总线各模块的设计全局总线连接全局共享模块,主要包括共享数据存储器和中断控制存储器,下面将对他们分别介绍。3.5.1 共享数据存储器共享数据存储器主要用来实现多核之间的通讯,处理器通过Store/Load指令实现各个处理器核与共享数据存储器的数据传递,从而实现多核之间的通讯。共享存储器的大小为4KB,地址空间从0x18000000-0x18000FFF。其具体设计与本地数据存储器的设计是一样的,其框图见图3.3,各信号描述如表3.4。3.5.2 中断控制器中断控制器主要实现多核之间的任务调度,记录对其他处理器发起中断的中断地址,然后把该地址发送给任务分配中,在任务分配器中统一进行任务调度。中断控制器的起始地址是0x18100000。即地址总线中的地址的高12位是0x181,就认为是处理器核发来的中断地址。中断控制器接收到中断地址,在把该地址发送到任务分配器中,有任务分配器来具体操作。为了方便起见,我把中断控制器模块集成到了调度模块中,具体请看任务调度器模块。3.6 总线桥的设计总线桥的主要功能是连接局部总线和全局总线,并且控制处理器核对存储器的访问。总线桥通过微处理器核发出的地址判断本次操作是对本地数据存储器还是共享数据存储器发起访问,然后决定是把处理器核发出的地址、数据和控制信号传递到局部总线还是全局总线。同样,由本地数据存储器和共享数据存储器传递给处理器核的数据和应答信号也是通过译码器(由地址线产生的)来进行选择。总线桥的功能框图如图2.6所示。从框图中可以看出,总线桥模块由三部分组成,分别是:总线转换器,从-主译码器和从-主数据通道,下面将分别介绍。3.6.1 总线转换器总线转换器的主要功能是判断处理器核是对本地数据存储器还是全局共享模块发起访问,然后决定是把处理器核发出的地址、数据和控制信号传递到局部总线还是全局总线。总线转换器的框图如图3.10所示,其信号描述如表3.8所示。图3.10 总线转换器框图表3.8 总线转换器信号描述信号名输入/输出功能描述clk输入全局时钟信号MemStart输入数据操作开始信号MemRW输入数据读/写控制信号,高电平时为读操作,低电平时为写操作。Address输入32位数据地址总线DataIn输入32位数据写总线,当MemRW为高电平时,为读数据总线;当MemRW为低电平时,为写数据总线。MemStart_lc输出局部数据操作开始信号MemRW_lc输出局部数据读/写控制信号,高电平时为读操作,低电平时为写操作。Address_lc输出局部32位数据地址总线DataIn_lc输出局部32位数据写总线,当MemRW为高电平时,为读数据总线;当MemRW为低电平时,为写数据总线。MemStart_sh输出全局数据操作开始信号MemRW_sh输出全局数据读/写控制信号,高电平时为读操作,低电平时为写操作。Address_sh输出全局32位数据地址总线DataIn_sh输出全局32位数据写总线,当MemRW为高电平时,为读数据总线;当MemRW为低电平时,为写数据总线。sel输出标志位,当sel=1时,处理器核对全局共享模块发起访问;当sel=0时,处理器对本地数据存储器发起访问具体设计方案的伪代码如下:如果地址总线的高8位等于“00011000”处理器核对全局共享模块发起访问标志位sel 为 1如果地址总线的高8位等于“00000000”处理器核对本地数据存储器发起访问标志位sel 为 03.6.2 从主译码器译码器的主要功能是根据处理器核发出的地址进行译码产生控制信号。本设计中是根据总线转换器中的sel信号,如果sel = 1时,处理器对全局共享模块发起访问,如果sel = 0时,处理器对本地数据存储器发起访问。为了数据的同步性,在本设计中,把译码器集成到了从主数据通道中。3.6.3 从主数据通道从主数据通道的主要功能是是把局部总线和全局总线结合到一起。即根据从主译码器来确定,是本地数据存储器还是共享数据存储器把数据和应答信号传递给处理器核。其具体框图见图3.11,各信号描述如表3.9所示。图3.11 从-主数据通道框图该模块具体设计方案的伪代码如下:如果cs为高电平如果MemFinish_lc为高电平把Data_lc和MemFinish_lc的值赋给DataOut和MemFinish如果MemFinish_lc为低电平把0赋给DataOut和MemFinish如果cs为低电平如果MemFinish_sh为高电平把Data_sh和MemFinish_sh的值赋给DataOut和MemFinish如果MemFinish_sh为低电平把0赋给DataOut和MemFinish表3.9 从-主数据通道信号描述信号名输入/输出功能描述clk输入全局时钟信号sel输入译码器输出信号,当sel=1时,全局共享模块把数据和控制信号返回给处理器;当sel=0时,本地数据存储器把数据和控制信号返回给处理器。Data_lc输入局部32位数据读/写总线,当MemRW为高电平时,为 读数据总线;当MemRW为低电平时,为写数据总线。MemFinish_lc输入局部数据操作完成信号Data_sh输入全局32位数据读/写总线,当MemRW为高电平时,为 读数据总线;当MemRW为低电平时,为写数据总线。MemFinish_sh输入全局数据操作完成信号DataOut输出32位数据读/写总线,当MemRW为高电平时,为读数据总线;当MemRW为低电平时,为写数据总线。MemFinish输出数据操作完成信号4 加密解密算法实现4.1加密解密算法的选择现阶段比较普遍的算法有DES,RSA等算法。DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。一般ATM机使用的算法为DES算法。RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。 密钥对的产生。选择两个大素数,p 和q 。计算: n = p * q 然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足 e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) 其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。 加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,., mi ,块长s,其中 2s = n, s 尽可能的大。对应的密文是: ci = mie ( mod n ) ( a ) 解密时作如下计算: mi = cid ( mod n ) ( b ) 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。 由于我们要实现的是4核调度,所以数据量不会很大,而且RSA属于对称加密解密算法(加密和解密是互逆的),在调度上比DES有优势,所以我们最终选择了RSA算法。 4.2 RSA算法的实现4.2.1汇编指令集本项目为了减少占用的内核空间,采用的汇编指令是自行设计的,下面为部分汇编指令集计算类指令(1)数据传送指令指令格式MOVS Rd,operand2MOV R0,#0X00|00|010|0000|00000|00000|000000000000MOVS R0,#0X00|00|011|0000|00000|00000|000000000000MOV R0,R10|00|000|0000|00000|00001|000000000000MOVS R0,R10|00|001|0000|00000|00001|000000000000(2)计算类指令-与指令格式ANDNS Rd,Rs,operand2ANDN R0,R1,R20|00|100|0010|00000|00001|00010|0000000TST R0,R1,R20|00|101|0010|00000|00001|00010|0000000AND R0,R1,R20|00|001|0010|00000|00001|00010|0000000AND R0,R1,#0X00|00|011|0010|00000|00001|000000000000AN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大庆出租车考试练习题库
- 立德树人理念下初中体育教学中德育渗透研究
- 2025年甘肃省高考历史试卷真题(含答案解析)
- 行业资质证书专注于特定行业的权威证书(5篇)
- 电影拍摄项目合作及投资分配协议
- 印刷制作及版权许可协议
- 2025年一建考试《机电工程管理与实务》案例分析题库-电气设备安装与调试技术解析
- 传统节日中的故事童话色彩作文5篇范文
- 2025年导游资格证考试笔试旅游服务质量管理与旅游行业法规解读试卷
- 2025年医用X射线设备项目立项申请报告模板
- 宝妈日常心理护理
- 2025年社会学概论测试题含答案(附解析)
- 2025-2030中国酶联免疫吸附测定(ELISA)行业市场发展趋势与前景展望战略研究报告
- 2024年安徽大学专职辅导员招聘笔试真题
- 电机学II知到智慧树章节测试课后答案2024年秋广东工业大学
- JT-T-1178.2-2019营运货车安全技术条件第2部分:牵引车辆与挂车
- CODE扫描器常用中文设置扫描枪常用配置中文新参考模板
- 监控施工技术方案
- 消防器材购销合同2
- 沃尔玛专用汇总Wal-MartTerminology
- 补缴养老保险费资格审核表
评论
0/150
提交评论