CN104536913B - 一种基于多块ram的大数运算电路的数据转移方法 - Google Patents

一种基于多块ram的大数运算电路的数据转移方法 Download PDF

Info

Publication number
CN104536913B
CN104536913B CN201410749759.XA CN201410749759A CN104536913B CN 104536913 B CN104536913 B CN 104536913B CN 201410749759 A CN201410749759 A CN 201410749759A CN 104536913 B CN104536913 B CN 104536913B
Authority
CN
China
Prior art keywords
ram
opr
written
addresses
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410749759.XA
Other languages
English (en)
Other versions
CN104536913A (zh
Inventor
刘奇浩
孙晓宁
刘大铕
王运哲
赵阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Sinochip Semiconductors Co Ltd
Original Assignee
Shandong Sinochip Semiconductors Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Sinochip Semiconductors Co Ltd filed Critical Shandong Sinochip Semiconductors Co Ltd
Priority to CN201410749759.XA priority Critical patent/CN104536913B/zh
Publication of CN104536913A publication Critical patent/CN104536913A/zh
Priority to PCT/CN2015/096774 priority patent/WO2016091166A1/zh
Application granted granted Critical
Publication of CN104536913B publication Critical patent/CN104536913B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)

Abstract

本发明的基于多块RAM的大数运算电路,包括CPU、运算模块Operator Core以及5块存储器RAM;特征在于:所述5块存储器RAM的数据和地址线总线经不同的多路选择器与运算模块Operator Core和CPU选择性连通;在大数运算过程中无需频繁占用总线。在256位大数的点加、倍点和点乘运算过程中,CPU只需将待运算数据和参数写入至5个存储器RAM的相应位置,然后由运算模块Operator Core经多路选择器读取数据进行运算即可,运算结束后将运算结果写入至存储器RAM中,CPU再将运算结果读出即可。整个运算过程无需频繁占用BUS总线,不易造成数据存储时的堵塞,保证了运算的高效性。

Description

一种基于多块RAM的大数运算电路的数据转移方法
技术领域
本发明涉及一种基于多块RAM的大数运算电路的数据转移方法,更具体的说,尤其涉及一种可避免对总线的频繁占用和数据调用时数据堵塞的基于多块RAM的大数运算电路的数据转移方法。
背景技术
目前基于有限域上椭圆曲线离散对数问题的非对称密码算法ECC(EllipticCurve Cryptography)被公认为是最高比特强度的公钥密码体制,广泛应用于快速加密、密钥交换、身份验证、数字签名、保密通信等领域。椭圆曲线公钥密码算法作为ECC算法中的一种,加密强度可采用256位,安全性高、存储空间小,可以快速完成签名、密钥交换以及加密应用。
有限域运算层的主要功能是提供算法所需要的数论运算支持,包括256位大整数模加、模减、模乘、模逆、模幂、比较运算。有限域运算作为算法实现最基础的部分,其运算效率将对整个密码系统的效率起决定性作用。所发明所涉及的数据转移方法适用于256位模加、模减、模乘、比较运算。
同时,将有限域运算层的各种基础运算按照一定的规则进行排序后,即可构成椭圆曲线运算层的各种算法,包括点加、倍点、点乘、坐标转换。所设计的数据转移方法适用于256位点加、倍点、点乘运算。这种数据转移方法适用于基数在素数域中Jacobian加重射影坐标系下的椭圆曲线公钥密码算法。
一次完整的点乘运算过程需要调用大量的底层运算,因此可以通过对硬件资源分配方式的优化提升椭圆曲线密码算法的运算性能。如图1所示,目前多数SOC系统中采用RAM、运算单元分别连接在总线上的方式,由于运算模块中存储空间的限制,运算结果需要通过系统总线转移到RAM中,进行后续计算时,需要再次将中间结果通过总线BUS转移到运算单元中,频繁占用总线。如中国第CN200510130627.X发明采用32个子寄存器构成寄存器堆作为数据暂存单元,缓解大数模运算过程中寄存器堆的复用问题。但是上述发明受运算所限制,只能支持模运算,对上层运算产生的中间变量则无能为力。
发明内容
本发明为了克服上述技术问题的缺点,提供了一种基于多块RAM的大数运算电路的数据转移方法。
本发明的基于多块RAM的大数运算电路,包括CPU、运算模块Operator Core以及5块存储器RAM;其特别之处在于:所述5块存储器RAM的数据和地址线总线经不同的多路选择器与运算模块Operator Core和CPU选择性连通;在大数运算过程中,运算模块OperatorCore直接从5块存储器RAM中读取待运算数据、暂存中间数据以及保存运算结果,无需占用存储器RAM与CPU之间的总线,运算结束后,CPU直接从存储器RAM中取出运算结果。
本发明的基于多块RAM的大数运算电路,所述运算模块Operator Core、CPU与存储器RAM之间的连接总线包括32位数据线和11位地址线;11位地址线的高3位对5块存储器RAM进行选取,低8位对存储器RAM中的8bit存储单元进行寻址。
本发明的基于多块RAM的大数运算电路的数据转移方法,5块存储器RAM分别为RAM_A、RAM_B、RAM_M、RAM_R和RAM_Q,设待点加运算的原始操作数a和b的坐标分别为(Opr_a_x, Opr_a_y, Opr_a_z)、(Opr_b_x, Opr_b_y, Opr_b_z);
ECC算法的256位点加运算通过以下步骤来实现:
a-1).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值Opr_a_x, Opr_a_y, Opr_a_z分别写入至RAM_A的0x00、0x20和0x40地址,将b的坐标值Opr_b_x, Opr_b_y,Opr_b_z分别写入至RAM_B的0x00、0x20和0x40地址,并在RAM_A的0x60地址存储Opr_b_z,在RAM_B的0x60地址存储Opr_a_z;CPU将相关参数模值m存储至RAM_M的0x00地址,将相关参数乘法辅助值R写入到存储器RAM_R的0x00地址;以方便运算模块Operator Core进行取值;b-1).中间结果的写入,在运算模块Operator Core进行点加运算的过程中,通过多路选择器直接从存储器RAM中读取数据和存储中间结果,无需占用存储器RAM与CPU之间的总线;中间结果Opr_t1存储至RAM_A的0x80地址,中间结果Opr_t2分别存储至RAM_A的0xa0地址和RAM_B的0x80地址,以备运算模块Operator Core对中间结果进行调用;c-1).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_B的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_B中读取结果即可。
本发明的基于多块RAM的大数运算电路的数据转移方法,设待倍点运算的点a的坐标为(Opr_a_x, Opr_a_y,Opr_a_z),ECC算法的256位倍点运算通过以下步骤来实现:
a-2).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值Opr_a_x、Opr_a_y和Opr_a_z分别写入至RAM_A和RAM_B的0x00、0x20和0x40地址;CPU将相关参数模值m存储至RAM_M的0x00地址,将相关参数乘法辅助值R写入到存储器RAM_B的0x00地址,倍点运算辅助值a写入至存储器RAM_R的0x20地址;以方便运算模块Operator Core进行取值;b-2).中间结果的写入,在倍点运算的过程中,运算模块Operator Core直接经多路选择器读取和存储数据,将中间结果Opr_t1存储至RAM_A的0x60和RAM_B的0x60地址中,将中间结果Opr_t2存储至RAM_A的0x80和RAM_B的0x80地址中,以便算模块Operator Core对中间结果进行调用;c-2).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_B的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_B读取结果即可。
本发明的基于多块RAM的大数运算电路的数据转移方法,设待点乘运算的原始操作数a的坐标为(1Px, 1Py, 1Pz)ECC算法的256位点乘运算通过以下步骤来实现:
a-3).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值1Px, 1Py和1Pz写入到数据存储器RAM_M的0x20、0x40、0x60地址,将原始操作数k写入到数据存储器RAM_M的0xe0地址;将相关参数模值m写入到数据存储器RAM_M的0x00地址,相关参数乘法辅助值R写入到数据存储器RAM_R的0x00地址,倍点运算辅助值a写入到数据存储器RAM_R的0x20地址;b-3).中间结果的写入,在运算过程中,运算模块Operator Core通过多路选择器进行数据的读取和存储,中间运算操作数a的x、y、z值写入到数据存储器RAM_A的0x00、0x20、0x40地址;中间运算操作数b的x、y、z值写入到数据存储器RAM_B的0x00、0x20、0x40地址;中间运算结果5倍点的x、y、z写入到数据存储器RAM_M的0x80、0xa0、0xc0地址;中间运算结果9倍点的x、y、z写入到数据存储器RAM_R的0x40、0x60、0x80地址;中间运算结果13倍点的x、y、z写入到数据存储器RAM_R的0xa0、0xc0、0xe0地址;中间运算结果Pu点的x、y、z写入到数据存储器RAM_B的0xa0、0xc0、0xe0地址;中间运算过程备份参数a_b写入到数据存储器RAM_A的0xa0地址;中间运算过程非邻接表达式参数高256位kp_h写入到数据存储器RAM_A的0xc0地址,低256位kp_l写入到数据存储器RAM_A的0xe0地址;中间运算结果写入到数据存储器RAM_A、RAM_B的0x60、0x80地址;c-3).最终结果的写入,运算结束后,运算模块OperatorCore将运算结果存储在RAM_Q的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_Q读取结果即可。
本发明的有益效果是:本发明的基于多块RAM的大数运算电路,运算模块OperatorCore和CPU的数据和地址总线通过多路选择器与多个存储器RAM选择性连通,在256点大数运算过程中,运算模块Operator Core通过多路选择器进行数据的读取和存储,无需占用存储器RAM与CPU之间总线,避免了对系统内部总线的频繁占用,提高了运算效率。
通过将存储器RAM的数量设置为5个,并将原始数据、相关参数、中间结果和最终结果在5个存储器RAM中进行合理性存储,避免了运算时的数据堵塞,有效地实现了256位大数的点加、倍点和点乘运算。
本发明的基于多块RAM的大数运算电路和数据转移方法的优点体现在:
(1)通过将RAM直接挂接到运算模块上,并采用一种基于多块RAM的数据转移方法,克服了运算过程中产生的中间结果由于存储空间不够的原因,造成的频繁占用系统内部数据总线的情况;
(2)通过将数据存储器RAM进行合理的分块,在当前运算操作下不会对同一块RAM进行读写操作,避免了数据调度顺序不合理出现的数据阻塞;
(3)在进行运算的全过程中,CPU不需要进行参与,只在运算开始前写入原始数据,并在运算完成后读出运算结果,降低了对CPU的载荷;
(4)按照本方法对运算过程中产生的中间结果的分配方法,可以采用单端口RAM设计SM2算法相关的运算单元,减小了因为采用双端口RAM造成的额外面积开销;
(5)本设计在点乘运算操作下,适用于固定点与非固定点点乘,可以充分利用内部存储空间,最多可以存储预计算过程中产生的四个点,通用性强。
附图说明
图1为现有大数运算电路的原理图;
图2为本发明的基于多块RAM的大数运算电路的原理图;
图3为本发明的大数运算电路在点加运算时各RAM的数据存储示意图;
图4为本发明的大数运算电路在倍点运算时各RAM的数据存储示意图;
图5为本发明的大数运算电路在点乘运算时各RAM的数据存储示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
如图1所示,给出了现有大数运算电路的原理图,所示的运算模块Operator Core和RAM挂接于系统内部总线BUS上,其由三部分构成,分别为:总线数据接口BUS_Data、数据存储模块RAM、运算模块Operator Core。总线上的数据通过BUS_Data进行交互,运算模块Operator Core启动前,待运算操作数以及相关参数通过BUS_Data接口被写入到相应的数据存储模块RAM中;运算电路Operator Core完成后,运算结果通过BUS_Data被读出到总线BUS上。数据存储模块RAM负责存储初始操作数、运算中间结果、运算完成结果。这种结构形式的运算电路,运算模块Operator Core从存储器RAM读取、写入数据的过程中,均需占用BUS总线,不能保证大数运算的高效进行。
如图2所示,给出了本发明的基于多块RAM的大数运算电路的原理图,其由运算模块Operator Core、CPU和多块存储器RAM组成,所示的运算模块Operator Core和CPU通过多路选择器与存储器RAM相连接,以使得存储器RAM与运算模块Operator Core和CPU选择性连通。在256位大数的运算过程中,存储器RAM的数量选取为5个,CPU和运算模块OperatorCore与存储器RAM相连接的总线包括32位数据线和11位地址线,11位地址线的高3位对5块存储器RAM进行选取,低8位对存储器RAM中的8bit存储单元进行寻址。
在256位大数的点加、倍点和点乘运算过程中,CPU只需将待运算数据和参数写入至5个存储器RAM的相应位置,然后由运算模块Operator Core经多路选择器读取数据进行运算即可,运算结束后Operator Core将运算结果写入至存储器RAM中,CPU再将运算结果读出即可。整个运算过程无需频繁占用BUS总线,不易造成数据存储时的堵塞,保证了运算的高效性。
如图3所示,给出了本发明的大数运算电路在点加运算时各RAM的数据存储示意图,5块存储器RAM分别为RAM_A、RAM_B、RAM_M、RAM_R和RAM_Q,设待点加运算的原始操作数a和b的坐标分别为(Opr_a_x, Opr_a_y, Opr_a_z)、(Opr_b_x, Opr_b_y, Opr_b_z);
ECC算法的256位点加运算通过以下步骤来实现:
a-1).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值Opr_a_x, Opr_a_y, Opr_a_z分别写入至RAM_A的0x00、0x20和0x40地址,将b的坐标值Opr_b_x, Opr_b_y,Opr_b_z分别写入至RAM_B的0x00、0x20和0x40地址,并在RAM_A的0x60地址存储Opr_b_z,在RAM_B的0x60地址存储Opr_a_z;CPU将相关参数模值m存储至RAM_M的0x00地址,将相关参数乘法辅助值R写入到存储器RAM_R的0x00地址;以方便运算模块Operator Core进行取值;
b-1).中间结果的写入,在运算模块Operator Core进行点加运算的过程中,通过多路选择器直接从存储器RAM中读取数据和存储中间结果,无需占用存储器RAM与CPU之间的总线;中间结果Opr_t1存储至RAM_A的0x80地址,中间结果Opr_t2分别存储至RAM_A的0xa0地址和RAM_B的0x80地址,以备运算模块Operator Core对中间结果进行调用;
c-1).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_B的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_B中读取结果即可。
为了方便起见,a、b点的坐标(Opr_a_x, Opr_a_y, Opr_a_z)、(Opr_b_x, Opr_b_y, Opr_b_z)分别用(x1,y1,z1)、(x2,y2,z2)表示,中间结果Opr_t1、Opr_t2分别用t1、t2表示,点加运算过程为:
t1=z1*z1;x2=x2*t1;t1=z1*t1;y2 =y2 *t1;t1=z2*z2
t2=x1*t1;t1 =z2*t1;t1=y1*t1;t1=2t1;t1=y2+t1
x2=x2-t2;t2=2*t2;t2=x2+t2;z2=z2*x2;t1=x2*t1
x2 =x2*x2;t2=x2*t2;t1=x2*t1;x2=y2*y2;x2=x2-t2
t2=t2 -x2;t2=t2-x2;t2=t2*y2;y2=t2-t1;y2= y2/2;
上述各公式均为模运算。
由此可见,对原始操作数和相关参数采用如图3所示的存储形式,既方便了运算过程中数据的调用和存储,有避免了所用数据的覆盖,保证了点加运算的高效性。
如图4所示,给出了本发明的大数运算电路在倍点运算时各RAM的数据存储示意图,设待倍点运算的点a的坐标为(Opr_a_x, Opr_a_y,Opr_a_z),ECC算法的256位倍点运算通过以下步骤来实现:
a-2).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值Opr_a_x、Opr_a_y和Opr_a_z分别写入至RAM_A和RAM_B的0x00、0x20和0x40地址;CPU将相关参数模值m存储至RAM_M的0x00地址,将相关参数乘法辅助值R写入到存储器RAM_B的0x00地址,倍点运算辅助值a写入至存储器RAM_R的0x20地址;以方便运算模块Operator Core进行取值;
b-2).中间结果的写入,在倍点运算的过程中,运算模块Operator Core直接经多路选择器读取和存储数据,将中间结果Opr_t1存储至RAM_A的0x60和RAM_B的0x60地址中,将中间结果Opr_t2存储至RAM_A的0x80和RAM_B的0x80地址中,以便算模块Operator Core对中间结果进行调用;
c-2).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_B的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_B读取结果即可。
为了方便起见,原始操作数a的坐标为(Opr_a_x, Opr_a_y,Opr_a_z)、(x2,y2,z2)表示,中间结果Opr_t1、Opr_t2分别用t1、t2表示,倍点运算过程为:
t1=z2 *z2;z2=y2*z2;z2=2z2;t2 =x2 *x2;t1=t1*t1;
t1=a*t1;t1=t2+t1;t2=2*t2;t1=t2+t1;y2=2y2;
y2=y2*y2;t2=y2*y2;t2=t2/2;y2=y2*x2;x2=t1*t1;
x2 =x2-y2;x2=x2-y2;y2=y2–x2;y2=y2*t1;y2=y2-t2;
上述各公式均为模运算。
由此可见,对原始操作数和相关参数采用如图4所示的存储形式,既方便了运算过程中数据的调用和存储,有避免了所用数据的覆盖,保证了点加运算的高效性。
如图5所示,给出了本发明的大数运算电路在点乘运算时各RAM的数据存储示意图,设待点乘运算的原始操作数a的坐标为(1Px, 1Py, 1Pz)ECC算法的256位点乘运算通过以下步骤来实现:
a-3).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值1Px, 1Py和1Pz写入到数据存储器RAM_M的0x20、0x40、0x60地址,将原始操作数k写入到数据存储器RAM_M的0xe0地址;将相关参数模值m写入到数据存储器RAM_M的0x00地址,相关参数乘法辅助值R写入到数据存储器RAM_R的0x00地址,倍点运算辅助值a写入到数据存储器RAM_R的0x20地址;
b-3).中间结果的写入,在运算过程中,运算模块Operator Core通过多路选择器进行数据的读取和存储,中间运算操作数a的x、y、z值写入到数据存储器RAM_A的0x00、0x20、0x40地址;中间运算操作数b的x、y、z值写入到数据存储器RAM_B的0x00、0x20、0x40地址;中间运算结果5倍点的x、y、z写入到数据存储器RAM_M的0x80、0xa0、0xc0地址;中间运算结果9倍点的x、y、z写入到数据存储器RAM_R的0x40、0x60、0x80地址;中间运算结果13倍点的x、y、z写入到数据存储器RAM_R的0xa0、0xc0、0xe0地址;中间运算结果Pu点的x、y、z写入到数据存储器RAM_B的0xa0、0xc0、0xe0地址;中间运算过程备份参数a_b写入到数据存储器RAM_A的0xa0地址;中间运算过程非邻接表达式参数高256位kp_h写入到数据存储器RAM_A的0xc0地址,低256位kp_l写入到数据存储器RAM_A的0xe0地址;中间运算结果写入到数据存储器RAM_A、RAM_B的0x60、0x80地址;
c-3).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_Q的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_Q读取结果即可。

Claims (3)

1.一种基于多块RAM的大数运算电路的数据转移方法,多块RAM的大数运算电路包括CPU、运算模块Operator Core以及5块存储器RAM;所述5块存储器RAM的数据和地址线总线经不同的多路选择器与运算模块Operator Core和CPU选择性连通;在大数运算过程中,运算模块Operator Core直接从5块存储器RAM中读取待运算数据、暂存中间数据以及保存运算结果,无需占用存储器RAM与CPU之间的总线,运算结束后,CPU直接从存储器RAM中取出运算结果;
所述运算模块Operator Core、CPU与存储器RAM之间的连接总线包括32位数据线和11位地址线;11位地址线的高3位对5块存储器RAM进行选取,低8位对存储器RAM中的8bit存储单元进行寻址;
其特征在于:大数运算电路的数据转移方法为:5块存储器RAM分别为RAM_A、RAM_B、RAM_M、RAM_R和RAM_Q,设待点加运算的原始操作数a和b的坐标分别为(Opr_a_x, Opr_a_y,Opr_a_z)、(Opr_b_x, Opr_b_y, Opr_b_z);
ECC算法的256位点加运算通过以下步骤来实现:
a-1).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值Opr_a_x, Opr_a_y,Opr_a_z分别写入至RAM_A的0x00、0x20和0x40地址,将b的坐标值Opr_b_x, Opr_b_y, Opr_b_z分别写入至RAM_B的0x00、0x20和0x40地址,并在RAM_A的0x60地址存储Opr_b_z,在RAM_B的0x60地址存储Opr_a_z;CPU将相关参数模值m存储至RAM_M的0x00地址,将相关参数乘法辅助值R写入到存储器RAM_R的0x00地址;以方便运算模块Operator Core进行取值;
b-1).中间结果的写入,在运算模块Operator Core进行点加运算的过程中,通过多路选择器直接从存储器RAM中读取数据和存储中间结果,无需占用存储器RAM与CPU之间的总线;中间结果Opr_t1存储至RAM_A的0x80地址,中间结果Opr_t2分别存储至RAM_A的0xa0地址和RAM_B的0x80地址,以备运算模块Operator Core对中间结果进行调用;
c-1).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_B的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_B中读取结果即可。
2.根据权利要求1所述的多块RAM的大数运算电路的数据转移方法,其特征在于,设待倍点运算的点a的坐标为(Opr_a_x, Opr_a_y,Opr_a_z),ECC算法的256位倍点运算通过以下步骤来实现:
a-2).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值Opr_a_x、Opr_a_y和Opr_a_z分别写入至RAM_A和RAM_B的0x00、0x20和0x40地址;CPU将相关参数模值m存储至RAM_M的0x00地址,将相关参数乘法辅助值R写入到存储器RAM_B的0x00地址,倍点运算辅助值a写入至存储器RAM_R的0x20地址;以方便运算模块Operator Core进行取值;
b-2).中间结果的写入,在倍点运算的过程中,运算模块Operator Core直接经多路选择器读取和存储数据,将中间结果Opr_t1存储至RAM_A的0x60和RAM_B的0x60地址中,将中间结果Opr_t2存储至RAM_A的0x80和RAM_B的0x80地址中,以便算模块Operator Core对中间结果进行调用;
c-2).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_B的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_B读取结果即可。
3.根据权利要求1所述的多块RAM的大数运算电路的数据转移方法,其特征在于,设待点乘运算的原始操作数a的坐标为(1Px, 1Py, 1Pz)ECC算法的256位点乘运算通过以下步骤来实现:
a-3).原始操作数和相关参数的写入,CPU将原始操作数a的坐标值1Px, 1Py和1Pz写入到数据存储器RAM_M的0x20、0x40、0x60地址,将原始操作数k写入到数据存储器RAM_M的0xe0地址;将相关参数模值m写入到数据存储器RAM_M的0x00地址,相关参数乘法辅助值R写入到数据存储器RAM_R的0x00地址,倍点运算辅助值a写入到数据存储器RAM_R的0x20地址;
b-3).中间结果的写入,在运算过程中,运算模块Operator Core通过多路选择器进行数据的读取和存储,中间运算操作数a的x、y、z值写入到数据存储器RAM_A的0x00、0x20、0x40地址;中间运算操作数b的x、y、z值写入到数据存储器RAM_B的0x00、0x20、0x40地址;中间运算结果5倍点的x、y、z写入到数据存储器RAM_M的0x80、0xa0、0xc0地址;中间运算结果9倍点的x、y、z写入到数据存储器RAM_R的0x40、0x60、0x80地址;中间运算结果13倍点的x、y、z写入到数据存储器RAM_R的0xa0、0xc0、0xe0地址;中间运算结果Pu点的x、y、z写入到数据存储器RAM_B的0xa0、0xc0、0xe0地址;中间运算过程备份参数a_b写入到数据存储器RAM_A的0xa0地址;中间运算过程非邻接表达式参数高256位kp_h写入到数据存储器RAM_A的0xc0地址,低256位kp_l写入到数据存储器RAM_A的0xe0地址;中间运算结果写入到数据存储器RAM_A、RAM_B的0x60、0x80地址;
c-3).最终结果的写入,运算结束后,运算模块Operator Core将运算结果存储在RAM_Q的0x00、0x20和0x40地址,CPU通过多路选择器从RAM_Q读取结果即可。
CN201410749759.XA 2014-12-10 2014-12-10 一种基于多块ram的大数运算电路的数据转移方法 Active CN104536913B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410749759.XA CN104536913B (zh) 2014-12-10 2014-12-10 一种基于多块ram的大数运算电路的数据转移方法
PCT/CN2015/096774 WO2016091166A1 (zh) 2014-12-10 2015-12-09 一种运算电路以及数据转移方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410749759.XA CN104536913B (zh) 2014-12-10 2014-12-10 一种基于多块ram的大数运算电路的数据转移方法

Publications (2)

Publication Number Publication Date
CN104536913A CN104536913A (zh) 2015-04-22
CN104536913B true CN104536913B (zh) 2017-07-28

Family

ID=52852443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410749759.XA Active CN104536913B (zh) 2014-12-10 2014-12-10 一种基于多块ram的大数运算电路的数据转移方法

Country Status (2)

Country Link
CN (1) CN104536913B (zh)
WO (1) WO2016091166A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104536913B (zh) * 2014-12-10 2017-07-28 山东华芯半导体有限公司 一种基于多块ram的大数运算电路的数据转移方法
CN105391736A (zh) * 2015-12-11 2016-03-09 捷德(中国)信息科技有限公司 一种交易动态数据认证方法及系统
CN109284082A (zh) * 2017-07-21 2019-01-29 深圳市中兴微电子技术有限公司 一种ecc和sm2通用的点运算方法及装置
CN109241784A (zh) * 2018-08-16 2019-01-18 深圳忆联信息系统有限公司 一种ssd的国密sm2签名验证方法及系统
CN111258636B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN110245096B (zh) * 2019-06-24 2023-07-25 苏州暴雪电子科技有限公司 一种实现处理器直接连接扩展计算模块的方法
CN111290973B (zh) * 2020-05-11 2020-11-27 深圳市科信通信技术股份有限公司 数据写入方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1822539A (zh) * 2005-12-16 2006-08-23 清华大学 椭圆曲线密码芯片的寄存器堆
CN2864808Y (zh) * 2005-12-23 2007-01-31 航天信息股份有限公司 椭圆曲线加密算法的协处理器
CN102307090A (zh) * 2011-06-21 2012-01-04 西安电子科技大学 基于ⅱ型最优正规基的椭圆曲线密码协处理器
CN102412965A (zh) * 2011-08-09 2012-04-11 深圳市德卡科技有限公司 椭圆曲线密码协处理器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7634666B2 (en) * 2003-08-15 2009-12-15 Cityu Research Limited Crypto-engine for cryptographic processing of data
CN104536913B (zh) * 2014-12-10 2017-07-28 山东华芯半导体有限公司 一种基于多块ram的大数运算电路的数据转移方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1822539A (zh) * 2005-12-16 2006-08-23 清华大学 椭圆曲线密码芯片的寄存器堆
CN2864808Y (zh) * 2005-12-23 2007-01-31 航天信息股份有限公司 椭圆曲线加密算法的协处理器
CN102307090A (zh) * 2011-06-21 2012-01-04 西安电子科技大学 基于ⅱ型最优正规基的椭圆曲线密码协处理器
CN102412965A (zh) * 2011-08-09 2012-04-11 深圳市德卡科技有限公司 椭圆曲线密码协处理器

Also Published As

Publication number Publication date
CN104536913A (zh) 2015-04-22
WO2016091166A1 (zh) 2016-06-16

Similar Documents

Publication Publication Date Title
CN104536913B (zh) 一种基于多块ram的大数运算电路的数据转移方法
CN101547089B (zh) 集成电路中素数域椭圆曲线密码算法的实现方法
CN101170406B (zh) 双核公钥密码算法运算协处理器的一种实现方法
CN100470464C (zh) 基于改进的蒙哥马利算法的模乘器
CN100536390C (zh) 一种椭圆曲线密码协处理器
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
CN101834723A (zh) 一种rsa算法及其ip核
WO2017000756A1 (zh) 基于3072点快速傅里叶变换的数据处理方法及处理器、存储介质
CN112865954A (zh) 用于Paillier解密的加速器、芯片及系统
CN105790939A (zh) 一种vlsi实现加速器的素数域椭圆曲线密码系统
CN103956991B (zh) 一种基于cpu/gpu异构平台的fir滤波并行实现方法
CN115344236B (zh) 多项式乘法运算方法、多项式乘法器、设备及介质
CN105871552A (zh) 双核并行rsa密码处理方法及协处理器
CN101630244B (zh) 一种流水线型椭圆曲线双标量乘法系统及方法
CN107957975A (zh) 一种计算方法及相关产品
CN102307090B (zh) 基于ⅱ型最优正规基的椭圆曲线密码协处理器
MuthuKumar et al. High speed hardware implementation of an elliptic curve cryptography (ECC) co-processor
CN117113442B (zh) 一种面向同态加密算法Paillier的数据通路的加速系统
CN103020014A (zh) 一种大点数fft的实现方法
Wang et al. TCPM: A reconfigurable and efficient Toom-Cook-based polynomial multiplier over rings using a novel compressed postprocessing algorithm
CN103345379A (zh) 一种复数乘法器及其实现方法
CN105553646A (zh) 面向分组密码算法并行计算的可重构s盒电路结构
CN103023659B (zh) 一种参数位宽可扩展的ecc加密硬件装置
CN111835517B (zh) 一种双域椭圆曲线点乘硬件加速器
CN105786528B (zh) 一种基于Avalon接口的SM3算法IP核的设计方法

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant