CN114003544A - 一种控制芯片、工作量证明系统和传输方法 - Google Patents
一种控制芯片、工作量证明系统和传输方法 Download PDFInfo
- Publication number
- CN114003544A CN114003544A CN202111636746.8A CN202111636746A CN114003544A CN 114003544 A CN114003544 A CN 114003544A CN 202111636746 A CN202111636746 A CN 202111636746A CN 114003544 A CN114003544 A CN 114003544A
- Authority
- CN
- China
- Prior art keywords
- data
- chip
- spi
- register
- workload
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Microcomputers (AREA)
Abstract
本申请实施例公开了一种控制芯片、工作量证明系统和传输方法;控制芯片包括:数据寄存器、处理模块和串行外设接口SPI驱动模块;所述数据寄存器用于存放待发送的M比特的任务数据,并在所述处理模块的控制下输出所存放的所述任务数据;其中,M为所述数据寄存器的位宽;所述处理模块用于控制所述SPI驱动模块,将所述数据寄存器连续N次输出的任务数据,通过一个SPI数据帧发送给工作量证明芯片;其中,N为大于1的正整数。本申请实施例可以提高工作量证明系统的效率。
Description
技术领域
本文涉及区块链领域,尤其涉及一种控制芯片、工作量证明系统和传输方法。
背景技术
区块链作为一个共享数据库,存储于其中的数据或信息,具有“不可伪造”、“全程留痕”、“可以追溯”“公开透明”、“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。
POW(Proof Of Work,工作量证明)是一种对应服务与资源滥用、或是阻断服务攻击的经济对策,被广泛应用在区块链领域。其典型特征体现在区块链建立新区块的过程中,为了防止被别人篡改信息,必须提供一个答案或证实一个特定的艰巨任务作为工作量证明;而这个证明很难给出,需要大量运算才能算出。
发明内容
以下是对本申请详细描述的主题的概述。本概述并非是为了限制本申请的保护范围。
本申请提供了一种控制芯片、工作量证明系统和传输方法,可以提高工作量证明系统的效率。
一方面,本申请提供了一种控制芯片,应用于工作量证明系统,包括:
数据寄存器、处理模块和串行外设接口SPI驱动模块;
所述数据寄存器用于存放待发送的M比特的任务数据,并在所述处理模块的控制下输出所存放的所述任务数据;其中,M为所述数据寄存器的位宽;
所述处理模块用于控制所述SPI驱动模块,将所述数据寄存器连续N次输出的任务数据,通过一个SPI数据帧发送给工作量证明芯片;其中,N为大于1的正整数。
可选地,所述数据寄存器包括M比特的发送缓冲区;所述N等于一次任务周期中要发送给一个工作量证明芯片的任务数据的总比特数除以M。
可选地,所述的控制芯片还包括:
第一寄存器和第二寄存器;
所述处理模块控制所述SPI驱动模块,将所述数据寄存器连续N次输出的任务数据,通过一个SPI数据帧发送给工作量证明芯片包括:
所述处理模块根据所述数据寄存器的位宽M,以及一个任务周期中要发送给每个工作量证明芯片的任务数据的总比特数确定N,并将N保存在所述第一寄存器中;对于每个工作量证明芯片分别进行如下发送操作:控制所述数据寄存器持续输出任务数据到所述第二寄存器中,直到连续输出的次数到达所述第一寄存器中保存的数值N,控制所述SPI驱动模块将所述第二寄存器中保存的任务数据通过一个SPI数据帧发送给该工作量证明芯片。
可选地,所述处理模块还用于控制所述SPI驱动模块通过一个SPI数据帧接收从工作量证明芯片读取的结果数据;其中,所述结果数据为N’×M’比特,M’是工作量证明芯片中数据寄存器的位宽,N’为正整数。
可选地,所述的控制芯片还包括:
第一寄存器和第二寄存器;
所述处理模块控制所述SPI驱动模块通过一个SPI数据帧接收从工作量证明芯片读取结果数据包括:
所述处理模块根据所述控制芯片的数据寄存器的位宽M,以及一个SPI数据帧中结果数据的总比特数确定N,并将N保存在所述第一寄存器中;控制所述SPI驱动模块将所述SPI数据帧中的所述结果数据保存在所述第二寄存器中;依序读取所述第二寄存器中的结果数据写入所述控制芯片的数据寄存器中,每次读取M比特,直到写入次数到达所述第一寄存器中保存的数值N。
另一方面,本申请实施例提供了一种工作量证明系统,包括:上述任一实施例所述的控制芯片、串行外设接口SPI总线以及通过所述SPI总线和所述控制芯片连接的多个工作量证明芯片;
其中,每个所述工作量证明芯片分别用于在所述SPI总线上的片选信号有效时,从一个SPI数据帧中持续接收任务数据并保存。
可选地,所述工作量证明芯片还用于在获得结果数据后,根据控制芯片的指示,将N’×M’比特的结果数据通过一个SPI数据帧中发送给控制芯片;M’为工作量证明芯片中数据寄存器的位宽,N’为正整数。
可选地,所述工作量证明芯片还用于在写入一个SPI数据帧中任务数据的最后M’比特的过程中,如果检测到所述片选信号转变为无效,则不将所述最后M’比特的任务数据写入本芯片的SPI对应的地址空间中;其中,M’为工作量证明芯片中数据寄存器的位宽。
再一方面,本申请实施例还提供了一种传输方法,应用在上述的工作量证明系统中,包括:
将控制芯片中数据寄存器连续N次输出的任务数据写入一个SPI数据帧,N为正整数;
将所述SPI数据帧通过SPI总线发送给工作量证明芯片。
可选地,所述的传输方法还包括:
所述工作量证明芯片获得结果数据后,根据控制芯片的指示,将N’×M’bit的结果数据通过一个SPI数据帧中发送给控制芯片;M’为工作量证明芯片中数据寄存器的位宽,N’为正整数。
与相关技术相比,本申请实施例可以一次性将数据寄存器连续N次输出的任务数据发送给工作量证明芯片,由于一个SPI数据帧中固定包含command和addr数据,因此可明显节省传输command和addr数据的开销,从而能够提高将任务数据传输给工作量证明芯片的效率,减少任务周期内发送任务数据的时间消耗,有利于减少算力损失。由于在一个任务周期中需要给多个工作量证明芯片发送任务数据,因此任务数据的发送是影响任务周期所花费时间的主要因素,本申请实施例通过减少发送任务数据的时间,提高了工作量证明系统整体的效率。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1是每帧传输一个位宽的任务数据的写时序示意图;
图2是每帧传输一个位宽的结果数据的读时序示意图;
图3是本申请实施例的控制芯片的示意图;
图4是基一个示例性实施例的控制芯片的示意图;
图5是本申请实施例的工作量证明系统的示意图;
图6是本申请实施例的传输方法的示意图;
图7是示例一中写时序的示意图;
图8是示例二中读时序的示意图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。此外,可以在保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对本申请的限制。此外该方法和/或过程不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
另外,在本申请中如涉及“第一”、“第二”等的描述仅用于描述中进行区分,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
目前很多区块链平台中,在创建有效区块时需要完成工作量证明。由于工作量证明的计算量可能会非常庞大,相关技术中提供了一种工作量证明系统,可以由一个中心节点发布工作量证明的任务,由系统中多个工作量证明节点各自进行工作量证明中的部分计算,如果取得有效的结果则汇总到中心节点;在一个工作量证明的任务周期内,该工作量证明系统按顺序完成以下四个步骤:1)接收到来自中心节点的新任务;2)控制芯片将任务数据下发到所有工作量证明芯片;3)各工作量证明芯片分别开始计算;4)控制芯片获取工作量证明芯片算得的有效的结果数据,若有则提交给中心节点,提交成功后可生成新区块。
考虑到任务更新的周期一般比较短,比如为大约2秒,一旦任务更新,就会开始一个新的工作量证明的任务周期;因此需要尽可能快的完成上述四个步骤,才能确保在任务更新前成功提交当前任务的结果。在一个工作量证明的任务周期内,步骤3)主要和工作量证明芯片本身的性能有关;步骤1)和2)是工作量证明芯片开始计算前的准备工作,这两个步骤占用的时间比例越小,工作量证明芯片的算力损失越小,工作量证明系统的效率越高。步骤4)是从工作量证明芯片中读取有效结果,这一步骤消耗的时间越少,工作量证明系统抢在任务更新前提交结果的概率越大。其中步骤1)主要由互联网速率决定,2)和4)主要受到工作量证明芯片的通讯接口的速率和效率影响。在这四个步骤中,提高工作量证明芯片性能,即加快步骤3)的成本一般来说比较昂贵;步骤1)中互联网的速率有上限;而如果从步骤2)和/或4)入手,对于已有的工作量证明系统和芯片而言,替换/改造通讯接口的成本将会非常大。基于以上考虑,本申请实施例提供了一种控制芯片、工作量证明系统和传输方法,能够以很小的代价显著提升工作量证明系统中的传输效率,减少工作量证明芯片的算力损失,而且可以兼容现有的工作量证明芯片。
工作量证明芯片所在的板级系统一般基于SPI(Serial Peripheral Interface,串行外设接口)全双工协议的总线进行通信,SPI是一种全双工、同步的通信总线,以主从方式工作,这种模式通常有一个主设备和至少一个从设备。在工作量证明系统的场景中,可以将用于下发任务数据和获取结果数据的控制芯片作为主设备,将每个工作量证明芯片各作为一个从设备。一个工作量证明的任务周期中,下发任务数据的步骤可以看成是控制芯片向工作量证明芯片中写入数据,即下发任务数据是写时序;而获取结果数据的步骤可以看成是控制芯片从工作量证明芯片中读取数据,即获取结果数据是读时序。
一个示例中,按照SPI地址空间的位宽(或者SPI总线收发两端数据寄存器的位宽)进行传输,每次传输一个位宽的任务/结果数据。
本示例中,一个工作量证明芯片的SPI信号定义如表一所示:
表一、工作量证明芯片中的SPI信号定义
Signal Name | Type | Description |
cs_n | input | 片选信号,低有效 |
sck | input | 串行时钟输入 |
si | input | 串行数据输入 |
so | output | 串行数据输出 |
其中,cs_n信号用来表示该工作量证明芯片是否被选中,可以看成是该工作量证明芯片的使能信号,当cs_n有效时(高电平或低电平时),该工作量证明芯片的访问才被使能,对于该工作量证明芯片的读或写操作才有效,即该工作量证明芯片才能够被写入数据或被读取数据;在本示例中cs_n为低电平时表示该工作量证明芯片被选中,作为目前通信的从设备。
sck信号是主设备产生的时钟信号;由于SPI是串行通讯协议,也就是说数据是一位一位传输(即:逐个比特传输)的,因此需要存在sck信号,通过sck提供时钟脉冲,si、so信号基于此脉冲完成数据传输。
si信号是主设备数据输出,从设备数据输入,对于工作量证明芯片而言即接收到串行的任务数据,是控制芯片向工作量证明芯片中写数据;so信号是主设备数据输入,从设备数据输出,对于工作量证明芯片而言即输出串行的结果数据,是控制芯片从工作量证明芯片中读取数据。
本示例中,假设控制芯片和工作量证明芯片SPI的地址空间均为16 bit(比特),两个芯片中和SPI总线配合使用的数据寄存器的位宽均为16 bit;其中,位宽是指一次能传输的数据量。
本示例中,SPI写时序如图1所示。
一个写时序frame(帧)包括三部分数据:command、addr和data。
command: 共8 bit,表示当前frame的行为是写时序;
addr: 共16 bit,表示芯片被访问的地址;
data: 共16 bit,表示控制芯片要写入工作量证明芯片的16 bit任务数据。
本示例中,SPI读时序如图2所示。
一个读时序frame包括三部分数据:command、addr和data。
command: 共8 bit,表示当前frame的行为是读时序;
addr: 共16 bit,表示芯片被访问的地址;
data: 共16 bit,表示存储在工作量证明芯片addr地址空间的、要被控制芯片获取的16 bit的结果数据。
可以看到,无论是读时序还是写时序至少需要16次时钟信号的改变(16个时钟周期),才能完成16 bit数据的传输。假设任务数据和结果数据都是1024 bit,假如每次传输16 bit,则完成整个任务数据的传输,共需要传输64次。而一次写时序frame共需要40个时钟周期,完成整个任务数据的传输,共需要40 x 64 = 2560个时钟周期。任务数据为1024bit,得到传输效率为1024 / 2560 = 40%。类似的,完成整个结果数据的传输,共需要传输64次。一次读时序frame共需要40个时钟周期,完成整个获取结果数据包的传输,共需要40 x 64 = 2560个时钟周期。数据包为1024bit,得到传输效率为1024 / 2560 = 40%。
可以看到,由于SPI协议支持的速率范围为4-16MHz,因此工作量证明芯片在获取任务数据和提供结果数据时的传输速率的区间基本是确定的,所需要的时钟周期也基本确定,控制芯片和工作量证明芯片之间的传输时间较难缩短。而在工作量证明系统中,工作量证明芯片负责运算,为区块链提供算力。工作量证明芯片和控制芯片之间的传输效率,将会影响整个工作量证明系统的效率,进而影响区块链系统的效率。
本申请实施例提供了一种控制芯片,应用于工作量证明系统,如图3所示,包括:
数据寄存器31、处理模块32和SPI驱动模块33;
其中,数据寄存器31用于存放待发送的M bit的任务数据,并在处理模块32的控制下输出所存放的任务数据;其中,M为所述数据寄存器的位宽;
处理模块32用于控制SPI驱动模块33,将数据寄存器31连续N次输出的任务数据,通过一个SPI数据帧发送给工作量证明芯片;N为大于1的正整数。
本实施例中,可以一次性将数据寄存器31连续N次输出的任务数据发送给工作量证明芯片,由于一个SPI数据帧中固定包含command和addr数据,相较于将数据寄存器31每次输出的任务数据各用一个SPI数据帧传输的方案,本实施例可明显节省传输command和addr数据的开销,从而能够提高将任务数据传输给工作量证明芯片的效率,减少任务周期内发送任务数据的时间消耗,有利于减少算力损失。由于在一个任务周期中需要给多个工作量证明芯片发送任务数据,因此任务数据的发送是影响任务周期所花费时间的主要因素,本实施例通过减少发送任务数据的时间,提高了工作量证明系统整体的效率。
本实施例中,一个控制芯片需要给多个工作量证明芯片发送任务数据,针对每个工作量证明芯片,都可以分别按照本实施例的方式处理。对于工作量证明芯片而言,硬件和软件都可以不需要进行改动,仍然保持是在片选信号有效时持续读取SPI数据帧中的数据并以addr为起始地址,依序保存。本实施例在兼容当前工作量芯片的基础上,只需要对控制芯片进行少许修改,就可以显著提升传输效率。
本实施例中,一个任务周期中,中心节点下发的任务数据可以先保存在SPI的地址空间对应的存储区域中,该存储区域可以设置在控制芯片或控制板或其它部件的存储模块中;然后按照数据寄存器31的位宽M,先写入任务数据中的前M bit到数据寄存器31中;待数据寄存器31中的任务数据输出后,再写入接下来的M bit任务数据到数据寄存器31中,以此类推;直到写完全部的任务数据。
本实施例中,数据寄存器31是对应于SPI总线的寄存器,可用于在SPI的地址空间和SPI总线之间传输数据;数据寄存器31可以包括两个缓冲区,一个是发送缓冲区,用于保存待写入工作量证明芯片的任务数据;另一个是接收缓冲区,用于保存从工作量证明芯片获取的结果数据;两个缓冲区的位宽通常相等。
本实施例的一种实施方式中,假设数据寄存器一次输出M bit的任务数据,command为8 bit,addr为16 bit,将连续N次输出的任务数据放在一个SPI数据帧中发送给工作量证明芯片时,一个SPI数据帧中包含(N×M+24)bit的数据,即一次写时序是(N×M+24)个时钟周期。一个SPI数据中包含N×M bit的任务数据,假设一个任务周期中要发送给一个工作量证明芯片的任务数据为S bit,则该任务周期共需要使用S/(N×M)个写时序,即使用S/(N×M)的SPI数据帧完成针对该工作量证明芯片的任务数据发送;这里为了方便说明,假设S/(N×M)是整数,如果S/(N×M)不是整数,可以向上取整后作为所要使用的写时序个数(SPI数据帧个数)。
从上述分析可知,一次任务周期中,针对一个工作量证明芯片完成任务数据的传输所需要的时钟周期的总个数P为:
P =(N×M+24)S/(N×M)= S+ 24×S/(N×M)
可以看出,(N×M)越大,完成一个任务周期中针对一个工作量证明芯片的任务数据发送所需要的时钟周期就越少;由于M一般取决于硬件的位宽,在硬件已经选定(比如工作量证明芯片已经生产或购买好)的情况下是不可变的,因此可以通过加大N来进一步减少一个任务周期中,向一个工作量证明芯片发送任务数据所使用的时钟周期的总个数P。而传输效率为S/P,P减少则传输效率增大,即一个SPI数据帧越大(包含的任务数据越多),传输效率越高。
一种示例性实施例中,数据寄存器31包括M bit的发送缓冲区,M为正整数;通常,M可以为8或16,可以和接收任务数据的工作量证明芯片中的数据寄存器的位宽相同。
本实施例中,N可以等于一次任务周期中要发送给一个工作量证明芯片的任务数据的总bit数S除以M。
本实施例相当于将一个任务周期中要发送给一个工作量证明芯片的所有任务数据放在一个SPI数据帧中传输,即一个任务周期中要发送给一个工作量证明芯片的任务数据只使用一次写时序完成发送,该写时序需要S+24个时钟周期,传输效率为S/(S+24)。
本实施例的一种实施方式中,S=1024 bit,M=16 bit,则N=1024/16=64。一个任务周期中,针对每个工作量证明芯片分别使用一个写时序传输任务数据,该写时序包含1048个时钟周期,传输效率为1024/1048=97.7%。可以看到,和图1所示的方案中40%的传输效率相比, 97.7% / 40% = 2.44,传输效率得到了倍增;该实施方式中,一个任务周期中给一个工作量证明芯片传输任务数据所花费的时钟周期和图1所示的方案相比:1048 / 2560 =40.9%,可以看到时针周期减少了超过一半,大大减少了发送时间。
本实施例中,对于控制芯片所要发送任务数据的讴歌工作量证明芯片,N可以均相同,为S除以M。
本实施例的替换方案中,考虑到如果任务数据较多,放到一个SPI数据帧中万一发生传输错误则代价较大,也可以将N设置为(S/M)/Q,Q可以是2的正整数次幂,比如为2、4、8等。比如S=1024 bit,M=16 bit时,N可以等于1024/16/4=16,即:将一个任务周期中要发送给一个工作量证明芯片的任务数据分在4个写时序中发送,这样针对一个工作量证明芯片发送任务数据需要1024+ 24×1024/(16×16)=1120个时钟周期,传输效率为1024/1120=91.4%,虽然略低于N=64的方案,但比40%还是大有提高。
一种示例性实施例中,控制芯片可以但不限于为集成有处理器核的FPGA(FieldProgrammable Gate Array);工作量证明芯片又可以称为算力芯片。
一种示例性实施例中,控制芯片如图4所示,还包括:
第一寄存器34和第二寄存器35;
处理模块32控制SPI驱动模块33,将数据寄存器31连续N次输出的任务数据,通过一个SPI数据帧发送给工作量证明芯片包括:
处理模块32根据数据寄存器31的位宽M,以及一个任务周期中要发送给每个工作量证明芯片的任务数据的总bit数S确定N,并将N保存在第一寄存器34中;对于每个工作量证明芯片分别进行如下发送操作:控制数据寄存器31持续输出任务数据到第二寄存器35中,直到连续输出的次数到达第一寄存器中保存的数值N,控制SPI驱动模块33将第二寄存器35中保存的全部任务数据通过一个SPI数据帧发送给该工作量证明芯片。
本实施例中,通过在控制芯片中增加两个寄存器,可以实现通过一个SPI数据帧发送数据寄存器31连续N次输出的任务数据,处理模块32和两个寄存器直接在芯片内直接交互,交互时间基本可忽略不计。本实施例的替代方案中,第一、第二寄存器可以不设置在控制芯片中;或者不增加寄存器,直接通过纯软件控制的方式来实现通过一个SPI数据帧发送数据寄存器31连续N次输出的任务数据,不再使用第二寄存器进行中转,将这连续N次中,每次数据寄存器31输出的任务数据依序放入SPI数据帧。
本实施例中,N×M bit的任务数据可以占据第二寄存器35的全部或部分存储空间;第二寄存器35中的容量可设置的比较大,以确保N较大时存储空间也足够使用。在初始化时,第二寄存器35可以为空,这样第二寄存器35中将保存的都是数据寄存器31输出的任务数据。对于每次数据寄存器31输出的任务数据,第二寄存器35可以依序保存;在一次发送SPI数据帧后,可以清空第二寄存器35,或用下一批的任务数据覆盖第二寄存器35中原有的任务数据。
本实施例中,处理模块32可以对数据寄存器31的输出进行计数,并将计数值和第一寄存器34中保存的数值N进行比较,如果未到达N则控制数据寄存器31继续输出任务数据到第二寄存器35;或者,处理模块32在每次控制数据寄存器31输出后,就将第一寄存器34中的数值减去1,直至该数值为0,则代表已输出N次。
本实施例中,根据S和M确定N时,可以但不限于直接用S/M作为N。
一种示例性实施例中,处理模块32还可以用于控制SPI驱动模块33通过一个SPI数据帧接收从工作量证明芯片读取结果数据;其中,结果数据为N’×M’ bit,M’是工作量证明芯片中数据寄存器的位宽,N’为正整数。
本实施例中,工作量证明芯片的数据寄存器的位宽M’和控制芯片的数据寄存器31的位宽M可以相等;N’和N可以相等。
本实施例中,对于接收的N’×M’ bit的结果数据,可以每次保存M bit到数据寄存器31的接收缓冲区中,然后再从接收缓冲区输出到SPI的地址空间对应的存储区域里,该存储区域可以位于控制芯片或控制板或其它部件的存储模块中;每次从接收缓冲区输出的Mbit结果数据依序写入存储模块,直到SPI数据帧中的结果数据全部保存到存储模块中;该结果数据可以提交到中心节点。
本实施例中,可以一次性传输工作量证明芯片的数据寄存器连续N’次输出的结果数据,由于一个SPI数据帧中固定包含command和addr数据,相较于将每M’ bit结果数据各用一个SPI数据帧传输的方案,本实施例可明显节省传输command和addr数据的开销,从而能够提高获取结果数据的传输效率,减少任务周期内获取结果数据的时间消耗。
本实施例中,控制芯片所交互的多个工作量证明芯片中,可能部分或全部工作量证明芯片能产生有效的结果数据;本实施例中,对于产生了结果数据的工作量证明芯片,可以分别采用本实施例的方式获取结果数据。
本实施例中,工作量证明芯片本身的控制逻辑可以不改变,仍然是片选信号有效时就持续通过数据寄存器输出;数据寄存器每次读取尚未输出过的M’ bit的结果数据,写入到SPI数据帧中;片选信号如果持续有效,工作量证明芯片可以直到将本任务周期的全部结果数据都写入SPI数据帧中后,将该SPI数据帧发送到控制芯片。
本实施例的替代方案中,可以对至少部分产生了结果数据的工作量证明芯片,按照图2所示的方案获取结果数据。虽然获取结果数据的传输效率没有得到提升,但由于发送任务数据时传输效率已大大提升,因此针对整个工作量证明系统而言,传输效率仍有提高。
本实施例的一种实施方式中,控制芯片如图4所示,还包括:
第一寄存器34和第二寄存器35;
处理模块32控制SPI驱动模块33通过一个SPI数据帧接收从工作量证明芯片读取结果数据可以包括:
处理模块32根据数据寄存器31的位宽M,以及一个SPI数据帧中结果数据的总bit数确定N,并将N保存在第一寄存器34中;控制SPI驱动模块33将SPI数据帧中的结果数据保存在第二寄存器35中;依序读取第二寄存器35中M bit的结果数据写入数据寄存器31中,每次读取M bit,直到写入次数到达第一寄存器中保存的数值N。
本实施例的替代方案中,第一、第二寄存器可以不设置在控制芯片中;或者不增加寄存器,直接通过纯软件控制的方式分N次将SPI数据帧中的结果数据通过数据寄存器31转移到存储模块中,不再使用第二寄存器进行中转。
本申请实施例还提供了一种工作量证明系统,如图5所示,包括:上述任一实施例中的控制芯片51、SPI总线52以及通过SPI总线52与控制芯片51连接的多个工作量证明芯片53;
其中,每个工作量证明芯片53分别用于在片选信号有效时,从一个SPI数据帧中持续接收任务数据并保存。
一种示例性实施例中,工作量证明芯片53还可以用于在获得结果数据后,根据控制芯片的指示,将N’×M’bit的结果数据通过一个SPI数据帧中发送给控制芯片;M’为工作量证明芯片中数据寄存器的位宽,N’为正整数。
本实施例中,控制芯片的指示可以是指SPI总线上的片选信号,工作量证明芯片53当该片选信号有效时输出结果数据给控制芯片。
本实施例中,如果多个工作量证明芯片均获得了结果数据,可以分别按照本实施例的方式进行结果数据的发送。
一种示例性实施例中,工作量证明芯片53还可以用于在写入一个SPI数据帧中任务数据的最后M’ bit的过程中,如果检测到所述片选信号转变为无效,则不将所述最后M’bit的任务数据写入本芯片的SPI对应的地址空间中;其中,M’为工作量证明芯片中数据寄存器的位宽。
本实施例中,片选信号转变为无效是指片选信号的电平高低发生变化,比如片选信号是低电平有效时,片选信号变为高电平则意味着片选信号转变成了无效。
本申请实施例还提供了一种传输方法,应用在上述实施例提供的工作量证明系统中,该方法如图6所示,包括:
S601、将控制芯片中数据寄存器31连续N次输出的任务数据写入一个SPI数据帧,N为正整数;
S602、将SPI数据帧通过SPI总线发送给工作量证明芯片。
本实施例中,控制芯片与多个工作量证明芯片交互时,可以针对每个工作量证明芯片分别采用本实施例的步骤进行发送。
一种示例性实施例中,所述方法还可以包括:
工作量证明芯片获得结果数据后,根据控制芯片的指示,将N’×M’bit的结果数据通过一个SPI数据帧中发送给控制芯片;M’为工作量证明芯片中数据寄存器的位宽,N’为正整数。
本实施例中,如果多个工作量证明芯片均获得了结果数据,可以分别按照本实施例的方式进行结果数据的发送。
下面用两个具体示例说明上述实施例。
示例一
本示例中通过一个SPI数据帧发送控制芯片的数据寄存器连续N次输出的任务数据,如图7所示,一次写时序的frame包括三部分:command、addr_base和data_array。
command: 共8bit,表示当前frame的行为是写时序;
addr_base: 共16bit,表示芯片被访问的起始地址;
data_array: 由N个16 bit的任务数据组成,N可以是任意值,或根据一个任务周期中任务数据的总bit数S除以16 bit确定。
举例说明:假设工作量证明芯片使用的是16 bit位宽的寄存器,若当前frame为写时序,data_array 中包含的N个16 bit的任务数据分别是data 0、data 1、……、data N,则data 0会被写入到地址addr_base, data 1会被写入到地址addr_base+1, ……, data N会被写入地址addr_base+N。
本示例中,基于工作量证明芯片中数据寄存器的位宽是16 bit,任务数据的写入是以16 bit为单位写入的;若最后一个data N在写入过程中传输未达到16 bit时,出现stop信号(cs_n为高),则最后这个16bit的data N将不会被写入到工作量证明芯片的SPI对应的地址空间。
本示例中,一次写时序frame共完成1024 bit的传输,共需要8+16+1024 = 1048个周期,得到传输效率为1024 / 1048 = 97.7%。完成同样bit数的任务数据的发送,本示例共消耗的时间是图1所示方案的1048 / 2560 = 40.9%,效率是97.7% / 40% = 2.44倍。
示例二
本示例在发送任务数据的步骤可以采用示例一的方案;和示例一所不同的是,示例二中发送结果数据时是通过一个SPI数据帧传输工作量证明芯片中的数据寄存器连续N’次输出的结果数据。本示例中的读时序如图8所示,一次读时序的frame包括三部分:command、addr_base和data_array。
command: 共8bit,表示当前frame的行为是读时序;
addr_base: 共16bit,表示工作量证明芯片被访问的起始地址;
data_array: 由N’个16 bit的data组成,N’为任意值或根据结果数据的总bit数除以工作量证明芯片的数据寄存器位宽16 bit得到。
举例说明:假设工作量证明芯片使用的是16 bit位宽的寄存器,若当前frame为读时序,data_array 中包含的N个16 bit的结果数据分别是data 0、data 1、……、data N’,则data 0为芯片地址addr_base所存储的数据,data1为芯片地址addr_base+1所存储的数据,……,data n为芯片地址addr_base+N’所存储的数据。其中,N’可以等于N。
在连续读的过程中,控制芯片可以在任意时刻发出stop信号(cs_n为高),stop信号产生后,so线将停止输出数据。
一次读时序frame共完成1024bit的传输,共需要8+16+1024 = 1048个周期,得到传输效率为1024 / 1048 = 97.7%。完成同样bit数的结果数据的读取,本示例共消耗的时间是图2方案的1048 / 2560 = 40.9%,效率是97.7% / 40% = 2.44倍。
本示例应用于工作量证明系统,在下发任务数据包和获取结果数据包的过程中,相对于图1和图2的方案,可以大大减少在通讯总线上数据传输的时间消耗。提升下发任务数据的效率,可减少任务周期内准备工作的时间消耗,有利于减少算力损失;提升获取结果数据的效率,可减少从工作量证明芯片读取结果数据的时间,有利于提高工作量证明系统在任务更新前提交结果的概率。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种控制芯片,应用于工作量证明系统,其特征在于,包括:
数据寄存器、处理模块和串行外设接口SPI驱动模块;
所述数据寄存器用于存放待发送的M比特的任务数据,并在所述处理模块的控制下输出所存放的所述任务数据;其中,M为所述数据寄存器的位宽;
所述处理模块用于控制所述SPI驱动模块,将所述数据寄存器连续N次输出的任务数据,通过一个SPI数据帧发送给工作量证明芯片;其中,N为大于1的正整数。
2.如权利要求1所述的控制芯片,其特征在于:
所述数据寄存器包括M比特的发送缓冲区;所述N等于一次任务周期中要发送给一个工作量证明芯片的任务数据的总比特数除以M。
3.如权利要求1所述的控制芯片,其特征在于,还包括:
第一寄存器和第二寄存器;
所述处理模块控制所述SPI驱动模块,将所述数据寄存器连续N次输出的任务数据,通过一个SPI数据帧发送给工作量证明芯片包括:
所述处理模块根据所述数据寄存器的位宽M,以及一个任务周期中要发送给每个工作量证明芯片的任务数据的总比特数确定N,并将N保存在所述第一寄存器中;对于每个工作量证明芯片分别进行如下发送操作:控制所述数据寄存器持续输出任务数据到所述第二寄存器中,直到连续输出的次数到达所述第一寄存器中保存的数值N,控制所述SPI驱动模块将所述第二寄存器中保存的任务数据通过一个SPI数据帧发送给该工作量证明芯片。
4.如权利要求1所述的控制芯片,其特征在于:
所述处理模块还用于控制所述SPI驱动模块通过一个SPI数据帧接收从工作量证明芯片读取的结果数据;其中,所述结果数据为N’×M’比特,M’是工作量证明芯片中数据寄存器的位宽,N’为正整数。
5.如权利要求4所述的控制芯片,其特征在于,还包括:
第一寄存器和第二寄存器;
所述处理模块控制所述SPI驱动模块通过一个SPI数据帧接收从工作量证明芯片读取结果数据包括:
所述处理模块根据所述控制芯片的数据寄存器的位宽M,以及一个SPI数据帧中结果数据的总比特数确定N,并将N保存在所述第一寄存器中;控制所述SPI驱动模块将所述SPI数据帧中的所述结果数据保存在所述第二寄存器中;依序读取所述第二寄存器中的结果数据写入所述控制芯片的数据寄存器中,每次读取M比特,直到写入次数到达所述第一寄存器中保存的数值N。
6.一种工作量证明系统,其特征在于,包括:权利要求1-5中任一项所述的控制芯片、串行外设接口SPI总线以及通过所述SPI总线和所述控制芯片连接的多个工作量证明芯片;
其中,每个所述工作量证明芯片分别用于在所述SPI总线上的片选信号有效时,从一个SPI数据帧中持续接收任务数据并保存。
7.如权利要求6所述的工作量证明系统,其特征在于:
所述工作量证明芯片还用于在获得结果数据后,根据控制芯片的指示,将N’×M’比特的结果数据通过一个SPI数据帧中发送给控制芯片;M’为工作量证明芯片中数据寄存器的位宽,N’为正整数。
8.如权利要求6所述的工作量证明系统,其特征在于:
所述工作量证明芯片还用于在写入一个SPI数据帧中任务数据的最后M’比特的过程中,如果检测到所述片选信号转变为无效,则不将所述最后M’比特的任务数据写入本芯片的SPI对应的地址空间中;其中,M’为工作量证明芯片中数据寄存器的位宽。
9.一种传输方法,应用在如权利要求6-8中任一项所述的工作量证明系统中,其特征在于,包括:
将控制芯片中数据寄存器连续N次输出的任务数据写入一个SPI数据帧,N为正整数;
将所述SPI数据帧通过SPI总线发送给工作量证明芯片。
10.如权利要求9所述的传输方法,其特征在于,还包括:
所述工作量证明芯片获得结果数据后,根据控制芯片的指示,将N’×M’bit的结果数据通过一个SPI数据帧中发送给控制芯片;M’为工作量证明芯片中数据寄存器的位宽,N’为正整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111636746.8A CN114003544A (zh) | 2021-12-30 | 2021-12-30 | 一种控制芯片、工作量证明系统和传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111636746.8A CN114003544A (zh) | 2021-12-30 | 2021-12-30 | 一种控制芯片、工作量证明系统和传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114003544A true CN114003544A (zh) | 2022-02-01 |
Family
ID=79932179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111636746.8A Pending CN114003544A (zh) | 2021-12-30 | 2021-12-30 | 一种控制芯片、工作量证明系统和传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114003544A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461477A (zh) * | 2022-04-11 | 2022-05-10 | 中科声龙科技发展(北京)有限公司 | 一种实现芯片检测的方法、装置、计算机存储介质及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064805A (zh) * | 2012-12-25 | 2013-04-24 | 深圳先进技术研究院 | Spi控制器及通信方法 |
US20210051146A1 (en) * | 2019-08-12 | 2021-02-18 | Lenovo (Singapore) Pte. Ltd. | Device authentication across unsecure network |
US20210126950A1 (en) * | 2019-10-25 | 2021-04-29 | Samsung Electronics Co., Ltd. | Electronic device for controlling function execution using decentralized network and operation method thereof |
CN113721988A (zh) * | 2021-11-01 | 2021-11-30 | 中科声龙科技发展(北京)有限公司 | 基于芯片的工作量证明方法和用于工作量证明的芯片 |
-
2021
- 2021-12-30 CN CN202111636746.8A patent/CN114003544A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064805A (zh) * | 2012-12-25 | 2013-04-24 | 深圳先进技术研究院 | Spi控制器及通信方法 |
US20210051146A1 (en) * | 2019-08-12 | 2021-02-18 | Lenovo (Singapore) Pte. Ltd. | Device authentication across unsecure network |
US20210126950A1 (en) * | 2019-10-25 | 2021-04-29 | Samsung Electronics Co., Ltd. | Electronic device for controlling function execution using decentralized network and operation method thereof |
CN113721988A (zh) * | 2021-11-01 | 2021-11-30 | 中科声龙科技发展(北京)有限公司 | 基于芯片的工作量证明方法和用于工作量证明的芯片 |
Non-Patent Citations (2)
Title |
---|
段琼琼等: "基于区块链的智能物件认证技术方案设计", 《信息网络安全》, no. 09, 10 September 2018 (2018-09-10) * |
雷红: "一种自定义SPI 总线协议的设计与实现", 《信息通信》, no. 05, 15 May 2017 (2017-05-15), pages 1 - 3 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461477A (zh) * | 2022-04-11 | 2022-05-10 | 中科声龙科技发展(北京)有限公司 | 一种实现芯片检测的方法、装置、计算机存储介质及终端 |
CN114461477B (zh) * | 2022-04-11 | 2022-06-28 | 中科声龙科技发展(北京)有限公司 | 一种实现芯片检测的方法、装置、计算机存储介质及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5040660B2 (ja) | 記憶領域割当システム及び方法と制御装置 | |
CN100481043C (zh) | 用于处理输入/输出命令的方法、系统和程序 | |
CN102460405B (zh) | 用于通过存储器装置来控制主机存储器存取的方法及系统 | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
WO1992015162A1 (en) | Method and apparatus for controlling data communication operations within stations of a local area network | |
US8386908B2 (en) | Data transmission methods and universal serial bus host controllers utilizing the same | |
JP2009511318A (ja) | マイクロコントローラとFlexRay通信モジュールとを繋ぐ加入者インタフェース、FlexRay加入者装置、およびマイクロコントローラとFlexRay通信モジュールとを繋ぐ加入者インタフェースを経由するメッセージの伝送方法 | |
CN114051611B (zh) | 用于非连续存储器的dma分散和聚集操作 | |
US20090216914A1 (en) | Information Processing Apparatus and Information Processing Method | |
CN112463700B (zh) | 一种控制axi总线带宽的方法和装置 | |
CN104050113A (zh) | 通过易失性影子存储器访问非易失性存储器 | |
CN116601601A (zh) | 在多过程系统内执行可编程原子单元资源的方法 | |
CN114003544A (zh) | 一种控制芯片、工作量证明系统和传输方法 | |
US7881201B2 (en) | Resending control circuit, sending device, resending control method and resending control program | |
JP2009502072A (ja) | FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
US20030172203A1 (en) | Automated transfer of a data unit comprising a plurality of fundamental data units between a host device and a storage medium | |
CN1705929B (zh) | 用于将数据返回给通过总线接收的读请求的方法和系统 | |
WO2010050957A1 (en) | Bit inversion for communication interface | |
WO2021208805A1 (zh) | 硬件单板的逻辑地址空间的配置方法、设备和存储介质 | |
CN101241478B (zh) | 数据传送方法 | |
CN106030557B (zh) | 多端口共享存储器 | |
CN101145139A (zh) | 资源管理装置 | |
US20050027906A1 (en) | System and method for adaptive buffer allocation in a memory device interface | |
JP2002297210A (ja) | データ伝送装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220201 |