一种软硬件结合加速器及其实现方法技术

技术编号:7468921 阅读:495 留言:0更新日期:2012-06-30 10:55
本发明专利技术涉及一种软硬件结合加速器及其实现方法,在处理器上增加连接有大数乘法加速器,大数乘法加速器中增加硬件逻辑从高速RAM将数据装载入单周期乘法器,增加硬件逻辑将乘法结果和目标高速RAM中数据相加,再输出到目标高速RAM中。在单周期乘法器运行时,读取下一次乘法运算数据,同时读取目标RAM数据,每次运算平均需要乘法1个周期,加法和写回目标RAM数据1个周期,每次2个周期。本发明专利技术有益的效果是:在充分利用处理器现有硬件资源的基础上,仅增加少量硬件资源,处理大数计算最耗时部分,其他部分由软件完成。这样在成本仅略有增加的情况下,大幅提高大数计算的速度,从而达到了成本和性能上的平衡。

【技术实现步骤摘要】

本专利技术涉及计算方法的实现领域,尤其是。
技术介绍
随着通讯技术的发展,信息的安全问题也越来越重要。如何保证传输的信息安全、 完整和不可抵赖性已经成为传输中需要解决的重要问题。为此出现了各种信息加密、解密技术。RSA公钥加密算法是目前最具影响力的公开密钥算法。RSA公钥加密算法是1977 年由Ron Rivest、Adi Shamir和LenAdleman在美国麻省理工学院开发的,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法中包含的数据都是非常大的,越大则越难被破解,一般用二进制表示都有512位,1024位,甚至2048位,这样的数我们称之为大数。 ECC算法也是一种公开密钥算法,具体原理我们不做阐述,其中运算的数据也是大数。还有其他加解密算法等场合,均需要进行大数的运算。一般处理器字长32位、或者64位,远远小于大数的位数,因而无法直接进行大数的直接计算。大数由于位数多,导致大数计算的运算量非常大,采用软件实现大数运算(图 1)成本低廉但是由于运算量大,速度慢,性能低,对处理器要求高,在某些场合(例如嵌入式应用)是无法接受的。如果完全硬件实现,采用硬件实现大数运算(图2、速度可以很快, 性能高,但是需要的硬件资源较多,即成本会比较高。在进行大数运算的处理器上本身就会有一定的硬件资源,如乘法器、高速RAM 等。软件实现大数运算实际上就是调用了处理器现有的资源进行运算。通过软件调用,同一时刻只能有某个特定硬件资源工作,不能做到几个硬件资源同时工作,例如某个时刻仅运行乘法器做乘法运算,某个时刻仅读取RAM……这样,处理器硬件资源由于不能并行工作而无法发挥到最大的性能。根据大数运算的需要,和处理器原有硬件资源的特点,通过修改处理器,增加辅助逻辑的方法,让大数计算时,处理器的硬件资源发挥最大性能。这样仅添加少量硬件、增加少量成本,即可显著提高大数计算性能,从而达到最佳的性价比。
技术实现思路
本专利技术的目的正是要解决上述技术存在的不足,而提供,采用软硬件结合方法实现大数的乘、除运算,仅增加少量成本就能达到较高的性能,可以达到成本性能之间的平衡。本专利技术解决其技术问题采用的技术方案这种软硬件结合加速器,在处理器上增加连接有大数乘法加速器,大数乘法加速器中增加硬件逻辑从高速RAM将数据装载入单周期乘法器,增加硬件逻辑将乘法结果和目标高速RAM中数据相加,再输出到目标高速RAM 中。本专利技术所述的软硬件结合加速器的实现方法,具体如下(1)、长度η的大数A{A……AAA},长度m的大数B{B…… BBB}相乘。将大数B中B和大数A相乘,得到长度n+1的中间结果大数{C ……C C C },重复上述过程,将B 、Β ……B ,分别和大数A 相乘,总计得到m个中间结果大数;最终将这些中间结果分别左移,相加,最终得到一个长度m+n的结果大数;O)、大数乘法加速器中增加硬件逻辑从高速RAM将数据装载入单周期乘法器,增加硬件逻辑将乘法结果和目标高速RAM中数据相加,再输出到目标高速RAM中;(3)、在单周期乘法器运行时,读取下一次乘法运算数据,同时读取目标RAM数据, 每次运算平均需要乘法1个周期,加法和写回目标RAM数据1个周期,每次2个周期。所述的单周期乘法器,在单周期内完成一个32bit*32bit的乘法,但是结果输出需要2个周期;所述的高速RAM,在单周期内完成一次读操作,或者一次写操作。本专利技术有益的效果是本专利技术中提出了一种软硬件结合实现大数计算的方法。在充分利用处理器现有硬件资源的基础上,仅增加少量硬件资源,处理大数计算最耗时部分, 其他部分由软件完成。这样在成本仅略有增加的情况下,大幅提高大数计算的速度,从而达到了成本和性能上的平衡。从而适合嵌入式、对成本要求比较严格的场合使用。附图说明图1为软件方式进行大数运算的示意图图2为硬件方式进行大数运算的示意图图3为本专利技术进行大数运算的示意图4为大数乘法原理示意图5为n*l大数乘法原理示意图6为n*l大数乘法加速器工作示意图图7为10进制乘法示意图8为现有技术的处理器结构;图9为本专利技术的处理器结构。具体实施方式下面结合附图和实施例对本专利技术作进一步说明一个大数乘法加速器实现的例子1、大数乘法计算原理总所周知普通10进制乘法我们可以采用竖式乘法(图7),大数乘法计算方法的原理和普通10进制乘法原理一致,也可以采用竖式乘法的方式(图4);如大数A有η个32bit,则称大数A长度n,长度η的大数A{Α……ΑΑ A },长度m的大数B {B ……B B B W]}相乘。将大数B中_和大数A相乘, 得到长度n+1的中间结果大数{C ……C C C },重复上述过程,将 B、B……B ,分别和大数A相乘,总计得到m个中间结果大数。最终将这些中间结果分别左移,相加,最终得到一个长度m+n的结果大数。2、实际处理器拥有资源1)单周期乘法器,可在单周期内完成一个32bit*32bit的乘法,但是结果输出需要2个周期。2)高速RAM,可在单周期内完成一次读操作,或者一次写操作。3、计算量分析如果m和η均为32,处理器字长为32bit,上述计算,总计大约需要IOM次乘法, 2080次加法,每次运算需要输入2个数据,耗时2个周期、保存1个数据,耗时1个周期,每次乘法运算完成得到结果需要2个周期,每次乘法运算需要1个周期,每次加法运算需要1 个周期,这样最少需要10 * (2+1+2+1)+2080* 0+1+1) = 14464个周期。4、大数乘法加速器设计原理处理器乘法运算速度很快只需要1个周期,但是乘法结果输出却需要2个周期,每次乘法、加法进行输入输入需要1个周期,输出数据需要1个周期,实际运算外消耗时间比运算时间还要多。这样设计大数乘法加速器增加硬件逻辑自动从高速RAM将数据装载入单周期乘法器。增加硬件逻辑自动将乘法结果和目标高速RAM中数据相加,再输出到目标高速RAM 中。(图8、图9)在乘法器运行时,可以读取下一次乘法运算数据,同时读取目标RAM数据,这样每次运算平均仅需要乘法1个周期,加法和写回目标RAM数据1个周期,每次2个周期。这样 m和η均为32bit,一次大数乘法大约要32*32*2 = 2048个周期。仅为软件计算理论周期数的14. 16%,计算速度大为提升。下面演示长度η的乘数A和长度1的乘数B相乘,加速器具体工作方式记长度η的乘数Α,每32bit数据为A W]、A、A……A,长度1的乘数 B,数据为B 。A放置在高速RAM地址A中,B放置在高速RAM地址B中,相乘结果C,长度为(n+1),每32bit数据为C、C、C……C放置在高速RAM地址C中。如图6,第3个周期得到结果以0],第5个周期得到结果C,第7个周期将得到 C……5、大数乘法加速器优点分析1)充分利用了 CPU的原有资源,单周期32bit乘法器、高速RAM,仅增加了 3个 RAM读取逻辑,1个RAM写入逻辑,1个加法逻辑,需要的硬件资源非常少。总所周知,单周期32bit乘法器、高速RAM需要的硬件资源是远大于加法逻辑本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:杨波徐功益邱柏云贺晓明
申请(专利权)人:杭州晟元芯片技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术