发明内容
本发明的目的是克服现有技术中的不足,提供一种Filecoin中并行计算PoseidonHash的架构系统。
为了达到上述目的,本发明是通过以下技术方案实现的:
一种Filecoin中并行计算Poseidon Hash的架构系统,包括控制器、存储器、高速接口电路、控制接口电路、哈希-11计算电路、编码模块电路、第一流切换电路、第二流切换电路、哈希-8计算电路、数据排队电路,所述哈希-11计算电路、编码模块电路都通过所述数据排队电路与高速接口电路连接,所述哈希-11计算电路、编码模块电路、高速接口电路都通过第一流切换电路与哈希-8计算电路连接,所述哈希-8计算电路通过第二流切换电路与高速接口电路连接,所述哈希-11计算电路、编码模块电路都连接高速接口电路,所述高速接口电路、控制器都与存储器相连,所述控制器通过控制接口电路与高速接口电路相连。
作为优选,存储器是一种大容量高速的存储器。
作为优选,高速接口电路通过控制接口电路接受控制器的命令,使得所述高速接口电路从存储器读取的数据流c发送给第一流切换电路,同时所述高速接口电路从存储器读取的数据流ab发送给数据排队电路,所述数据流ab是以12个256位整数为单位的数据流,所述数据流c是以8个256位整数为单位的数据流。
作为优选,所述数据排队电路用于将数据流ab发送给哈希-11计算电路和编码模块电路,然后哈希-11计算电路从数据流ab中以每12个256位整数为单位取出11个256位整数进行poseidon hash计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流A,从而从哈希-11计算电路输出数据流A,与此同时,编码模块电路从数据流ab中以每12个256位整数为单位取出2个256位整数进行模加计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流B,从而从编码模块电路输出数据流B。
作为优选,哈希-11计算电路将数据流A同时发送给第一流切换电路和高速接口电路,所述编码模块电路将数据流B同时发送给第一流切换电路和高速接口电路,然后高速接口电路将数据流A、数据流B发送给存储器进行存储。
作为优选,所述第一流切换电路将数据流A、数据流B、数据流c都添加id号,所述id号用来区分是哪个接口流入的数据,并把id号随同数据流A、数据流B、数据流c一起传给哈希-8计算电路
作为优选,所述哈希-8计算电路分别将数据流A、数据流B、数据流c中每8个256位整数数据为单位进行poseidon hash计算得到1个256位整数数据,所述数据流A通过哈希-8计算电路计算得到数据流D,所述数据流B通过哈希-8计算电路计算得到数据流E,所述数据流c通过哈希-8计算电路计算得到数据流C。
作为优选,哈希-8计算电路将数据流D、数据流E、数据流C连同id号传送给第二流切换电路,然后第二流切换电路将数据流D、数据流E、数据流C根据id号对应的传送给高速接口电路,同时删除数据流中的id号,然后高速接口电路将数据流D、数据流E、数据流C发送给给存储器进行存储。
作为优选,哈希-8计算电路、哈希-11计算电路都以流水线的方式工作。
作为优选,模加计算为(x+y)mod p,所述x、y为数据流ab提取要参加编码计算的2个256位整数数据,所述p为一个质数常量。例如p为:0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
本发明的有益效果如下:本发明的哈希-11计算电路计算量最大,因此该电路为满负载工作,经过哈希-11计算电路后输入给哈希-8计算电路的计算数据量减为原来的1/11,因此哈希-8计算电路的初始计算量相对于哈希-11小很多,哈希-8计算电路每计算完一层,数据量就减小7/8,以此类推,哈希-8计算电路的整体负载是很小的,因此通过对哈希-8计算电路的分时复用,达到并行的目标的同时,让实现电路变的简单,功耗更底。且本发明的哈希-8计算电路、哈希-11计算电路都以流水线的方式工作,因此本发明计算速度快,耗时短,功耗低,实现电路简单。
具体实施方式
下面结合说明书附图对本发明的技术方案作进一步说明:
如图1所示,一种Filecoin中并行计算Poseidon Hash的架构系统,包括控制器1、存储器2、高速接口电路3、控制接口电路4、哈希-11计算电路5、编码模块电路6、第一流切换电路7、第二流切换电路8、哈希-8计算电路9、数据排队电路10,所述哈希-11计算电路5、编码模块电路6都通过所述数据排队电路10与高速接口电路3连接,所述哈希-11计算电路5、编码模块电路6、高速接口电路3都通过第一流切换电路7与哈希-8计算电路9连接,所述哈希-8计算电路9通过第二流切换电路8与高速接口电路3连接,所述哈希-11计算电路5、编码模块电路6都连接高速接口电路3,所述高速接口电路3、控制器1都与存储器2相连,所述控制器1通过控制接口电路4与高速接口电路3相连。高速接口电路3、控制接口电路4、哈希-11计算电路5、编码模块电路6、第一流切换电路7、第二流切换电路8、哈希-8计算电路9、数据排队电路10都是数字电路。
如图1所示,存储器2是一种大容量高速的存储器2。
如图1所示,高速接口电路3通过控制接口电路4接受控制器1的命令,使得所述高速接口电路3从存储器2读取的数据流c发送给第一流切换电路7,同时所述高速接口电路3从存储器2读取的数据流ab发送给数据排队电路10。数据流ab是以12个256位整数为单位的数据流,所述数据流c是以8个256位整数为单位的数据流。
如图1所示,所述数据排队电路10用于将数据流ab发送给哈希-11计算电路5和编码模块电路6,然后哈希-11计算电路5从数据流ab中以每12个256位整数为单位取出11个256位整数进行poseidon hash计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流A,从而从哈希-11计算电路5输出数据流A,与此同时,编码模块电路6从数据流ab中以每12个256位整数为单位取出2个256位整数进行模加计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流B,从而从编码模块电路6输出数据流B。哈希-11计算电路5的输入接口是数据流的形式输入,输出也是数据流的形式输出,哈希-11计算电路5的输入同输出的数据数比为11:1。数据流ab中每12个256位整数中的一个整数既要进行poseidon hash计算又要进行模加计算。
如图1所示,哈希-11计算电路5将数据流A同时发送给第一流切换电路7和高速接口电路3,所述编码模块电路6将数据流B同时发送给第一流切换电路7和高速接口电路3,然后高速接口电路3将数据流A、数据流B发送给存储器2进行存储。
如图1所示,第一流切换电路7将数据流A、数据流B、数据流c都添加id号,所述id号用来区分是哪个接口流入的数据,并把id号随同数据流A、数据流B、数据流c一起传给哈希-8计算电路9。
如图1所示,哈希-8计算电路9分别将数据流A、数据流B、数据流c中每8个256位整数数据为单位进行一次poseidon hash计算得到1个256位整数数据,哈希-8计算电路的输入接口是数据流的形式输入,哈希-8计算电路的输出也是数据流的形式输出,哈希-8计算电路的输入同输出的数据数比为8:1。所述数据流A通过哈希-8计算电路9计算得到数据流D,所述数据流B通过哈希-8计算电路9计算得到数据流E,所述数据流c通过哈希-8计算电路9计算得到数据流C。
如图1所示,哈希-8计算电路9将数据流D、数据流E、数据流C连同id号传送给第二流切换电路8,然后第二流切换电路8将数据流D、数据流E、数据流C根据id号对应的传送给高速接口电路3,同时删除数据流中的id号,然后高速接口电路3将数据流D、数据流E、数据流C发送给存储器2进行存储。
第一流切换电路和所述的第二流切换电路都用于切换数据流,第一流切换电路和所述的第二流切换电路所切换的数据流是以8个256位整数数据为单位组成的数据包的数据流,在切换时以8个256位整数数据为单位进行切换。
哈希-11计算电路的计算原理:从数据流ab中12个256位整数单位数据包中取出11个256位整数,按一定的次序排好,从而得到11个256位整数数据的完整数据包,哈希-11计算电路将11个256位整数数据的完整数据包自动添加一个256位整数数据的常量组成一个12个256位整数数据的新数据包,并进行poseidon hash计算,其结果输出一个12个256位整数数据的数据包,取这个结果数据包的第二个的256位整数数据,并输出这个256位整数数据。所述一个256位整数数据的常量用16进制表示,例如:0x7FF。
哈希-8计算电路的计算原理:所述哈希-8计算电路流入的是以8个256位整数数据组成的数据包的数据流,当得到8个256位整数数据的完整数据包后,自动添加一个256位整数的常量,组成9个256位整数数据的新数据包,并进行poseidon hash计算,其结果输出9个256位整数数据的数据包,取这个结果数据包的第二个256位整数数据,并输出这个256位整数数据。这里的256位整数的常量用16进制表示,例如:0xFF如图1所示,模加计算为(x+y)mod p,所述x、y为数据流ab提取要参加编码计算的2个256位整数数据,所述p为一个大质数常量。例如p为0x73eda753299d7d483339d80809 a1d80553bda402fffe5bfeffffffff00000001。
如图2所示,本发明的工作模式为空闲模式、工作模式一、工作模式二、工作模式三,这四种工作模式,空闲模式则是本系统不工作。
工作模式一包括以下步骤:
步骤1:工作模式一开始;
步骤2:控制器把12层数据分批加载到存储器;
步骤3:控制器通过控制接口电路初始化高速接口电路,并启动高速接口电路从存储器读取数据数据流ab,数据流ab是12层输入数据中读取组成的以12个256位整数为数据包的数据流,数据流ab的个数记为12*n;
步骤4:高速接口电路将数据流ab传送给数据排队电路;
步骤5:哈希-11计算电路、编码电路并行工作,哈希-11计算电路、编码电路接收数据排队电路发送来的数据流ab;
步骤6:哈希-11计算电路从数据流ab中以每12个256位整数为单位取出11个256位整数进行poseidon hash计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流A,从而从哈希-11计算电路5输出数据流A;与此同时编码模块电路6从数据流ab中以每12个256位整数为单位取出2个256位整数进行模加计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流B,从而从编码模块电路6输出数据流B;
步骤7:哈希-11计算电路将数据流A传送给高速接口电路和第一流切换电路,编码模块电路将数据流B传送给高速接口电路和第一流切换电路;
步骤8:高速接口电路将数据流A、数据流B发送给存储器进行存储,第一流切换电路接收到数据流A、数据流B,与此同时将数据流A、数据流B都添加各自的id号,所述id号用来区分是哪个接口流入的数据,并把id号随同数据流A、数据流B一起传给哈希-8计算电路;
步骤9:所述数据流A通过哈希-8计算电路计算得到数据流D,所述数据流B通过哈希-8计算电路计算得到数据流E;
步骤10:第二流切换电路接收哈希-8计算电路发送来的数据流D、数据流E、id号,并将数据流D、数据流E根据id号对应的传送给高速接口电路,同时删除数据流中的id号,然后高速接口电路将数据流D、数据流E发送给存储器进行存储;
步骤11:退出
本发明经过哈希-8计算电路计算,8个256位整数数据进,出一个256位整数数据的结果数据。
工作模式二包括以下步骤:
步骤1:工作模式二开始;
步骤2:开始第一流程和第二流程,第一流程和第二流程同时进行;
步骤3:结束。
第一流程为:
步骤S1:控制器把12层数据分批加载到存储器;
步骤S2:控制器通过控制接口电路初始化高速接口电路,并启动高速接口电路从存储器读取数据数据流ab,数据流ab是12层输入数据中读取组成的以12个256位整数为数据包的数据流,数据流ab的个数记为12*n;
步骤S3:高速接口电路将数据流ab传送给数据排队电路;
步骤S4:哈希-11计算电路、编码电路并行工作,哈希-11计算电路、编码电路接收数据排队电路发送来的数据流ab;
步骤S5:哈希-11计算电路从数据流ab中以每12个256位整数为单位取出11个256位整数进行poseidon hash计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流A,从而从哈希-11计算电路5输出数据流A;与此同时编码模块电路6从数据流ab中以每12个256位整数为单位取出2个256位整数进行模加计算得到1个256位整数数据,计算完毕得到n个256位整数数据的数据流B,从而从编码模块电路6输出数据流B;
步骤S6:哈希-11计算电路将数据流A传送给高速接口电路和第一流切换电路,编码模块电路将数据流B传送给高速接口电路和第一流切换电路;
步骤S7:高速接口电路将数据流A、数据流B发送给存储器进行存储,第一流切换电路接收到数据流A、数据流B,与此同时将数据流A、数据流B都添加各自的id号,所述id号用来区分是哪个接口流入的数据,并把id号随同数据流A、数据流B一起传给哈希-8计算电路;
步骤S8:所述数据流A通过哈希-8计算电路计算得到数据流D,所述数据流B通过哈希-8计算电路计算得到数据流E;
步骤S9:第二流切换电路接收哈希-8计算电路传来的数据流D、数据流E、id号,并将数据流D、数据流E根据id号对应的传送给高速接口电路,同时删除数据流中的id号,然后高速接口电路将数据流D、数据流E发送给存储器进行存储。
步骤S10:退出。
第二流程为:
步骤A1:把先前哈希-8计算电路计算结果数据加载到存储器的相应的存储空间;
步骤A2:控制器通过控制接口电路初始化高速接口电路,并启动高速接口E电路从存储器读取数据数据流c,数据流c是以8个256位整数为单位的数据流,数据流c的个数为n,n为8的倍数,数据流c就是先前哈希-8计算电路计算结果数据;
步骤A3:高速接口电路将数据流c发送给第一流切换电路,第一流切换电路接收到数据流c,与此同时将数据流c添加id号,所述id号用来区分是哪个接口流入的数据,并把id号随同数据流c一起传给哈希-8计算电路;
步骤A4:数据流c通过哈希-8计算电路计算得到数据流C;
步骤A5:第二流切换电路接收哈希-8计算电路传来的数据流C,将数据流C根据id号对应的传送给高速接口电路,同时删除数据流中的id号,然后高速接口电路将数据流C发送给存储器进行存储。
步骤A6:控制器判断n/8是否是1,若是,则跳到步骤A7,否则跳到步骤A1,并且n=n/8;
步骤A7:退出。
工作模式三同工作模式二中的第二流程是一样的。
工作模式三包括以下步骤:
步骤1:工作模式三开始;
步骤2:把先前哈希-8计算电路计算结果数据加载到存储器的相应的存储空间;
步骤3:控制器通过控制接口电路初始化高速接口电路,并启动高速接口电路从存储器读取数据数据流c,数据流c是以8个256位整数为单位的数据流,数据流c的个数为n,n为8的倍数;数据流c就是先前哈希-8计算电路计算结果数据;
步骤4:高速接口电路将数据流c发送给第一流切换电路,第一流切换电路接收到数据流c,与此同时将数据流c添加id号,所述id号用来区分是哪个接口流入的数据,并把id号随同数据流c一起传给哈希-8计算电路;
步骤5:数据流c通过哈希-8计算电路计算得到数据流C;
步骤6:第二流切换电路接收哈希-8计算电路传来的数据流C,将数据流C根据id号对应的传送给高速接口电路,同时删除数据流中的id号,然后高速接口电路将数据流C发送给存储器进行存储。
步骤7:控制器判断n/8是否是1,若是,则跳到步骤8,否则跳到步骤2并且n=n/8;
步骤8:退出。
工作模式三同工作模式二中的第二流程是一样的。
本发明的哈希-11计算电路计算量最大,因此该电路为满负载工作,经过哈希-11计算电路后输入给哈希-8计算电路的计算数据量减为原来的1/11,因此哈希-8计算电路的初始计算量相对于哈希-11小很多,哈希-8计算电路每计算完一层,数据量就减小7/8,以此类推,哈希-8计算电路的整体负载是很小的,因此通过对哈希-8计算电路的分时复用,达到并行的目标的同时,让实现电路变的简单,功耗更底。且本发明的哈希-8计算电路、哈希-11计算电路都以流水线的方式工作,因此本发明计算速度快,耗时短,功耗低,实现电路简单。
需要注意的是,以上列举的仅是本发明的一种具体实施例。显然,本发明不限于以上实施例,还可以有许多变形,总之,本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发的保护范围。