掌桥专利:专业的专利平台
掌桥专利
首页

一种基于流式处理芯片的计算量证明系统的设计方法

文献发布时间:2023-06-19 12:07:15



技术领域:

本发明属于计算机处理技术领域,更具体地涉及一种基于流式处理芯片的计算量证明系统的设计方法。

背景技术:

计算量证明(Proof of Work ,简称POW)是以太坊等主流区块链采用的一种底层共识机制,其需要大量的哈希运算和消耗巨量的存储带宽,以找到符合特定难度条件的哈希值。由于以太坊计算量证明算法需要频繁访问一个超过1GB的数据集(该数据集随着时间近似线性的增长,2021年数据集将超过4GB,2024年数据集将超过6GB),因此对系统的内存容量和访存带宽具有较高要求。

为了解决以太坊计算量证明的快速运算问题,目前绝大多数的解决方法是:采用英伟达和AMD的高性能GPU显卡,由于显卡同时具有运算能力强和内存带宽高的特点,因此显卡相较于CPU和FPGA,在处理计算量证明时具有更好的性价比和性能功耗比。

另一方面,也有一些芯片设计公司针对以太坊计算量证明专门定制了类似GPU的芯片。这些芯片具有和GPU相当的访存带宽,同时采用定制的运算模块(计算性能超过了GPU运算单元,而功耗得到了大幅降低)。

无论是GPU还是类似GPU的ASIC芯片,都有一个共同的问题:片外内存带宽较低,从而导致芯片的性能难以提升。

此外,以太坊计算量证明所需的内存容量超过了4GB,以目前的芯片设计工艺,根本不可能在单芯片内部集成4GB的SRAM。因此也限制了GPU和ASIC芯片性能的进一步提升。

发明内容:

为解决上述问题,克服现有技术的不足,本发明提供了一种基于流式处理芯片的计算量证明系统的设计方法,能够有效的解决以太坊计算量证明的快速运算的问题。

本发明解决上述技术问题的具体技术方案为:基于流式处理芯片的计算量证明系统的设计方法,其特征在于所述证明系统的设计方法包括:

(1) Write packet :主控制器发出的对chipid芯片内部SRAM和REG的写操作;数据包[191:190]=’b01(二进制表示01)表示该报文为write packet;数据包第[189]位, 0表示仅写到chip_id对应的chip,1表示广播到所有chip;数据包的第[188]位保留,将来可用于地址扩展;地址位于数据包的[159:128]位,共32位;packet目标chipid芯片编号,数据包的[187:184]共4位 ;数据包的[183:176], [175:168]和[167:160]用于ECC64校验,分别校验{[191:184], [159:112]}, [111:56]和[55:0],且对包内所有bit进行交织,使得任意连续3bit都属于不同ECC组,以容忍最长3bit的burst错误 ;数据位于[127:0],主控制器与芯片间数据包的格式,数据包宽度192位;

(2) Read req packet :主控制器对各chipid芯片内部SRAM或reg的读请求,发生情况:更新SRAM的时候,检查SRAM是否写入正确;主控器需要检查和观测芯片内部寄存器;数据包[191:188]=’b0001(二进制表示0001)表示该报文为read packet;数据包[187:184]共4位,表示主控制器发起本次packet的目标chipid芯片编号;地址位于数据包的[159:128]位,共32位;数据位于数据包的[127:0];主控制器与芯片间数据包的格式,数据包宽度192位,

(3)Read data send back packet: Chipid芯片回送内部SRAM或REG数据到主控制器;数据包[191:188]=’b1001(二进制表示1001)表示该报文为read data send backpacket;地址和数据在数据包里的位置同read packet:[187:184]共4位,表示发起本packet的chipid芯片编号;主控制器与芯片间数据包的格式,数据包宽度192位,

(4)Error packet :Chipid芯片检测到错误后发送到主控制器, 发生情况:芯片间Serdes ECC error,非法地址,非法packet类型,FIFO under/over flow,Serdes Lane挂死;数据包[191:188]=’b1011(二进制表示1011)表示该报文为error packet;地址和ECC在数据包里的位置同write packet;数据包[187:184]共4位,表示发起本packet的chipid芯片编号;数据包[127:116]共12位全部为0;数据包[115:112]共4位,代表错误类型,4’b0000表示ECC已纠错,4’b0001表示ECC本身奇偶校验错,4’b0010表示ECC出错但未纠错,4’b0100表示非法读地址,4’b1000表示非法写地址,4’b1100表示非法packet类型,4’b1110表示FIFO under/over flow,4’b1111表示lane挂死;数据包[111:96]代表发生错误的lane的id;主控制器与芯片间数据包的格式,数据包宽度192位。

进一步地,所述的所述基于流式处理芯片的计算量证明系统采用预设数量芯片互联的系统架构,每颗芯片内部使用sram存储数据集的一部分,预设数量芯片的总存储容量超过所需的存储空间,芯片和芯片之间通过高速serdes总线连接。

进一步地,步骤(4)中的所述的错误发生情况包括:

Ⅰ:芯片间Serdes ECC error、 Ⅱ:非法地址、Ⅲ:非法packet类型、Ⅳ:FIFOunder/over flow 、Ⅴ:Serdes Lane挂死。

本发明的有益效果是:本发明采用流式处理芯片的全系统结构设计 ,利用

芯片与主控制器间的命令和报文格式 ,结合全系统进行Ethash算法运算,解决了以太坊计算量证明的快速运算的问题

本发明依据数据包的[183:176], [175:168]和[167:160]用于ECC64校验,分别校验{[191:184], [159:112]}, [111:56]和[55:0],且对包内所有bit进行交织,使得任意连续3bit都属于不同ECC组,获得了容忍最长3bit的burst错误的效果。

具体实施方式:

在本发明的描述中具体细节仅仅是为了能够充分理解本发明的实施例,但是作为本领域的技术人员应该知道本发明的实施并不限于这些细节。另外,公知的结构和功能没有被详细的描述或者展示,以避免模糊了本发明实施例的要点。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

本发明的具体实施方式:

工作原理是:

(1) Write packet :主控制器发出的对chipid芯片内部SRAM和REG的写操作,地址位于数据包的[159:128]位,共32位;packet目标chipid芯片编号,数据包的[187:184]共4位 ;数据包的[183:176], [175:168]和[167:160]用于ECC64校验,分别校验{[191:184],[159:112]}, [111:56]和[55:0],且对包内所有bit进行交织,使得任意连续3bit都属于不同ECC组,以容忍最长3bit的burst错误 ;主控制器与芯片间数据包的格式,数据包宽度192位 ;

(2) Read req packet :主控制器对各chipid芯片内部SRAM或reg的读请求,发生情况;更新SRAM的时候,检查SRAM是否写入正确;主控器需要检查和观测芯片内部寄存器;数据包[187:184]共4位,表示FPGA发起本次packet的目标chipid芯片编号;主控制器与芯片间数据包的格式,数据包宽度192位 ;

(3)Read data send back packet: Chipid芯片回送内部SRAM或REG数据到主控制器,发生情况;地址安排:同read packet;[187:184]共4位,表示发起本packet的chipid芯片编号;主控制器与芯片间数据包的格式,数据包宽度192位 ;

(4)Error packet :Chipid芯片检测到错误后发送到主控制器,发生情况包括:

Ⅰ:芯片间Serdes ECC error、 Ⅱ:非法地址、Ⅲ:非法packet类型、Ⅳ:FIFOunder/over flow 、Ⅴ:Serdes Lane挂死。

在使用过程中:

(1)为了满足超过4GB的存储空间,采用多颗芯片互联的系统架构设计,每颗芯片内部使用sram存储数据集的一部分,多颗芯片的总存储容量将超过所需的存储空间,芯片和芯片之间通过多条高速serdes总线连接。

(2)ETHASH算法的核心计算单元是一个64轮循环的计算和访存操作,为了提高计算效率,将该循环拆分成流水线操作,每个流水级处理1轮循环的计算和访存操作。

(3)在多芯片组成的流式处理架构上,每个芯片负责处理64级流水线的一个或者多个流水级,同时每个芯片也负责响应其他芯片的访存和计算请求,进行相应的操作。

(4)为了降低全系统PCB的设计复杂度,我们摒弃多芯片全互联的拓扑结构,采用ring模式的多芯片互联方案。当芯片0(芯片编号从0开始)需要发送数据或者命令给芯片N(N>1),数据和命令需要串行通过芯片1,芯片2,……,一直到芯片N。中间经过的芯片遇到这些数据和命令,将直接把数据发送到下一级芯片。

(5)主控制器由一个台式机或者嵌入式SoC芯片实现,主控制器通过低速或者高速总线(不限于使用I2C,SPI,Serdes等IO接口)与每一颗芯片连接,形成一个带外的主控网络。主控制器负责初始化所有的芯片,启动和结束任务,错误处理和恢复。

(6)考虑到算法流水级的数量,为了降低通信链路过长导致的数据延迟开销,本方案仅包括以下几种芯片数量的系统结构:8,9,10,11,12,13,16,17,32,33。

具体实施时:

假设系统的芯片数量是4,单芯片内部的Sram容量超过1GB。系统总的存储容量超过4GB。

64级计算分成两个32级流水线阶段,接下来描述32级流水处理的步骤。

实施例一:

第一步:芯片0处理第1个流水级,然后把中间结果通过serdes发送给芯片1

第二步:芯片1处理第2个流水级,然后把中间结果通过serdes发送给芯片2

第三步:依次处理,经过8轮,4个芯片共计算了32个流水级

第四步:按照上述步骤一到三,再经过8轮计算,4个芯片一共计算了64个流水级,完成整个算法

实施例二:

第一步:芯片0处理第1-8,共8个流水级,然后把中间结果通过serdes发送给芯片1

第二步:芯片1处理第9-16,共8流水级,然后把中间结果通过serdes发送给芯片2

第三步:依次处理,经过1轮,4个芯片共计算了32个流水级

第四步:按照上述步骤一到三,再经过1轮计算,4个芯片一共计算了64个流水级,完成整个算法

第一种方案在芯片微结构上设计更简洁。

第二种方案具有更好的访存局部性和更高的带宽利用率,类似于内存的burst操作。

传统内存的burst操作:8个流水级计算需要访问8次内部存储,一定会有多次访问命中到同一颗芯片的sram。这样可以将访问同一颗芯片的请求命令和返回数据进行打包,提高serdes带宽的利用率。但是该设计需要更多的内部buffer用于存储多个流水级的中间结果。

综上所述:(1)为了满足超过4GB的存储空间,我们采用多颗芯片互联的系统架构设计,每颗芯片内部使用sram存储数据集的一部分。多颗芯片的总存储容量将超过所需的存储空间。芯片和芯片之间通过多条高速serdes总线连接。

(2)ETHASH算法的核心计算单元是一个64轮循环的计算和访存操作,为了提高计算效率,我们将该循环拆分成流水线操作,每个流水级处理1轮循环的计算和访存操作。

(3)在多芯片组成的流式处理架构上,每个芯片负责处理64级流水线的一个或者多个流水级,同时每个芯片也负责响应其他芯片的访存和计算请求,进行相应的操作。

(4)为了降低全系统PCB的设计复杂度,我们摒弃多芯片全互联的拓扑结构,采用ring模式的多芯片互联方案。当芯片0(芯片编号从0开始)需要发送数据或者命令给芯片N(N>1),数据和命令需要串行通过芯片1,芯片2,……,一直到芯片N。中间经过的芯片遇到这些数据和命令,将直接把数据发送到下一级芯片。

(5)主控制器由一个台式机或者嵌入式SoC芯片实现,主控制器通过低速或者高速总线(不限于使用I2C,SPI,Serdes等IO接口)与每一颗芯片连接,形成一个带外的主控网络。主控制器负责初始化所有的芯片,启动和结束任务,错误处理和恢复。

(6)考虑到算法流水级的数量,为了降低通信链路过长导致的数据延迟开销,本方案仅包括以下几种芯片数量的系统结构:8,9,10,11,12,13,16,17,32,33 。

采用流式处理芯片的全系统结构设计 ,利用芯片与主控制器间的命令和报文格式 ,结合全系统进行Ethash算法运算,解决了以太坊计算量证明的快速运算的问题;

本发明依据数据包的[183:176], [175:168]和[167:160]用于ECC64校验,分别校验{[191:184], [159:112]}, [111:56]和[55:0],且对包内所有bit进行交织,使得任意连续3bit都属于不同ECC组,获得了容忍最长3bit的burst错误的效果。

相关技术
  • 一种基于流式处理芯片的计算量证明系统的设计方法
  • 一种工作量证明运算芯片核心计算部件的优化方法和电路
技术分类

06120113178130