CN117749736A - 一种芯片及密文计算方法 - Google Patents

一种芯片及密文计算方法 Download PDF

Info

Publication number
CN117749736A
CN117749736A CN202410182271.7A CN202410182271A CN117749736A CN 117749736 A CN117749736 A CN 117749736A CN 202410182271 A CN202410182271 A CN 202410182271A CN 117749736 A CN117749736 A CN 117749736A
Authority
CN
China
Prior art keywords
node
data
routing
die
register
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.)
Granted
Application number
CN202410182271.7A
Other languages
English (en)
Other versions
CN117749736B (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.)
Open Security Research Inc
Original Assignee
Open Security Research Inc
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 Open Security Research Inc filed Critical Open Security Research Inc
Priority to CN202410182271.7A priority Critical patent/CN117749736B/zh
Publication of CN117749736A publication Critical patent/CN117749736A/zh
Application granted granted Critical
Publication of CN117749736B publication Critical patent/CN117749736B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种芯片及密文计算方法,所述芯片包括至少两个裸片,裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,其中:分布式控制节点,用于接收并解析控制指令,并将得到的数据搬运控制流和密文计算控制流转发至至少一个路由节点;路由节点,用于将数据搬运控制流转发至对应的数据存储节点,并将密文计算控制流转发至对应的算子节点;数据存储节点,用于响应于数据搬运控制流,通过至少一个路由节点和数据搬运节点,从存储模块获取待计算数据;算子节点,用于响应于密文计算控制流,通过路由节点从数据存储节点中读取待计算数据,并生成计算结果。如此,可以解决算力分割方法复杂以及数据流和控制流的拥塞问题。

Description

一种芯片及密文计算方法
技术领域
本申请涉及数据处理技术领域,尤其涉及一种芯片及密文计算方法。
背景技术
芯片是网络设备的重要组成部分,芯片包括用于数据交换的芯片,它的主要功能是完成网络设备的任意网络端口之间数据的交换。过去,芯片的交换带宽和端口数较少,每个芯片中通常只包含一个裸片(die),实现难度不大。而随着芯片要实现的交换带宽越来越大,端口数量越来越多,芯片所需要的硅面积越来越大,只靠一个die实现一个芯片已经变得十分困难。所以,逐渐出现用多个die实现的芯片。而随着芯片内die数量的增加,芯片的架构势必会产生新的变化,以适应芯片中多die封装的要求。
现有技术中,在多die封装的芯片上进行计算时,多采用一对多的仲裁互联结构,仲裁互联单元与多个计算单元连接。一对多的结构会导致仲裁互联单元的互联线密度很大,布局布线很不均衡;轮询仲裁的数据传输方式会导致数据传输拥塞,传输效率不高。针对多die封装的芯片,每个die上单位算力比较大,不适合进行算力分割,并且每个die的结构是固定的,不够灵活,算力分割复杂。
发明内容
有鉴于此,本申请实施例至少提供一种芯片及密文计算方法。
本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供一种芯片,所述芯片包括至少两个裸片,所述裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,所述路由节点与对应的算子节点和数据存储节点连接,其中:
所述分布式控制节点,用于接收并解析控制指令,并将得到的数据搬运控制流和密文计算控制流转发至所述至少一个路由节点;
所述路由节点,用于将所述数据搬运控制流转发至对应的数据存储节点,并将所述密文计算控制流转发至对应的算子节点;
所述数据存储节点,用于响应于所述数据搬运控制流,通过所述至少一个路由节点和所述数据搬运节点,从存储模块获取待计算数据;
所述算子节点,用于响应于所述密文计算控制流,通过所述路由节点从所述数据存储节点中读取所述待计算数据,并生成计算结果。
在一些实施例中,针对所述至少两个裸片中相邻的第一裸片和第二裸片,所述第一裸片和所述第二裸片之间通过至少一个寄存器选择单元连接,所述寄存器选择单元的第一端与所述第一裸片中的一个路由节点连接,所述寄存器选择单元的第二端与所述第二裸片中的一个路由节点连接;所述寄存器选择单元用于基于延迟选择参数确定所述第一裸片中的一个路由节点与所述第二裸片中的一个路由节点之间的裸片间延迟。
在一些实施例中,所述寄存器选择单元包括N个寄存器和选择器,N为正整数;其中,所述N个寄存器的前N-1个寄存器中每个寄存器的第一端连接下一个寄存器的第二端;所述N个寄存器中每个寄存器的第一端还连接于所述选择器;所述寄存器选择单元的第1个寄存器的第二端与所述第一裸片中的一个路由节点连接;所述选择器的第二端与所述第二裸片中的一个路由节点连接;所述选择器用于基于所述延迟选择参数在所述N个寄存器中选择第n个寄存器的第一端作为所述选择器的第一端;所述裸片间延迟由第1个寄存器至第n个寄存器确定。
在一些实施例中,所述算子节点还用于通过连接的路由节点将所述计算结果存储于所述数据存储节点。
在一些实施例中,所述分布式控制节点还用于接收数据回读指令,并通过所述至少一个路由节点将所述数据回读指令转发至对应的数据存储节点;所述数据存储节点,响应于所述数据回读指令,通过所述至少一个路由节点和所述数据搬运节点,将所述计算结果转发至存储模块。
在一些实施例中,所述算子节点包括以下至少之一:多项式计算节点和快速数论变换节点;相应地,所述数据存储节点包括以下至少之一:与所述多项式计算节点对应的第一数据存储节点,和与所述快速数论变换节点对应的第二数据存储节点,以及所述多项式计算节点和所述快速数论变换节点对应的第三数据存储节点。
另一方面,本申请实施例提供一种密文计算方法,应用于包括至少两个裸片的芯片中,所述裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,所述路由节点与对应的算子节点和数据存储节点连接;所述方法包括:通过所述分布式控制节点接收并解析控制指令,并将得到的数据搬运控制流和密文计算控制流转发至所述至少一个路由节点;通过所述路由节点将所述数据搬运控制流转发至对应的数据存储节点,并将所述密文计算控制流转发至对应的算子节点;通过所述数据存储节点响应于所述数据搬运控制流,通过所述至少一个路由节点和所述数据搬运节点,从存储模块获取待计算数据;通过所述算子节点响应于所述密文计算控制流,通过所述路由节点从所述数据存储节点中读取所述待计算数据,并生成计算结果。
在一些实施例中,针对所述至少两个裸片中相邻的第一裸片和第二裸片,所述第一裸片和所述第二裸片之间通过至少一个寄存器选择单元连接,所述寄存器选择单元的第一端与所述第一裸片中的一个路由节点连接,所述寄存器选择单元的第二端与所述第二裸片中的一个路由节点连接;所述方法还包括:通过所述寄存器选择单元基于延迟选择参数确定所述第一裸片中的一个路由节点与所述第二裸片中的一个路由节点之间的裸片间延迟。
在一些实施例中,所述寄存器选择单元包括N个寄存器和选择器,N为正整数;其中,所述N个寄存器的前N-1个寄存器中每个寄存器的第一端连接下一个寄存器的第二端;所述N个寄存器中每个寄存器的第一端还连接于所述选择器;所述寄存器选择单元的第1个寄存器的第二端与所述第一裸片中的一个路由节点连接;所述选择器的第二端与所述第二裸片中的一个路由节点连接;所述方法还包括:通过所述选择器基于所述延迟选择参数在所述N个寄存器中选择第n个寄存器的第一端作为所述选择器的第一端;所述裸片间延迟由第1个寄存器至第n个寄存器确定。
在一些实施例中,所述方法还包括:通过所述算子节点和连接的路由节点将所述计算结果存储于所述数据存储节点。
本申请实施例中,芯片包括至少两个裸片,裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,路由节点与对应的算子节点和数据存储节点连接。如此,可以解决算力分割方法复杂以及数据流和控制流的拥塞问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1为本申请实施例提供的一种仲裁互联结构的示意图;
图2为本申请实施例提供的一种芯片功能单元的结构示意图;
图3为本申请实施例提供的一种芯片的组成结构示意图;
图4为本申请实施例提供的另一种芯片的组成结构示意图;
图5为本申请实施例提供的又一种芯片的组成结构示意图;
图6为本申请实施例提供的再一种芯片的组成结构示意图;
图7为本申请实施例提供的一种密文计算方法的实现流程示意图;
图8为本申请实施例提供的一种路由节点的组成结构示意图;
图9为本申请实施例提供的一种寄存器选择单元的组成结构示意图;
图10为本申请实施例提供的一种全同态密文计算加速器的应用示意图;
图11为本申请实施例提供的一种片上网络的组成结构示意图;
图12为本申请实施例提供的一种密文计算加速器的工作流程示意图;
图13为本申请实施例提供的一种密文计算系统的示意图;
图14为本申请实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
本申请实施例提供一种芯片及密文计算方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。
密文计算加速器是一种在芯片上对密文计算算子进行加速的硬件,这种芯片的规模一般会比较大,通常是多die结构。在多die芯片上实现密文计算算子时会遇到算力分割方法复杂,数据流和控制流传输拥塞等问题。
图1为本申请实施例提供的一种仲裁互联结构的示意图。相关技术中,在多die封装的芯片上进行计算时,多采用一对多的仲裁互联结构,其结构图如图1所示。一个存储单元610与一个仲裁互联单元620连接,该仲裁互联单元620与多个计算单元630连接。
首先,从图1所示的结构可以看出,一个仲裁互联单元620通过多条互联线与多个计算单元630连接,仲裁互联单元620的互联线密度很大,布局布线很不均衡,存在布线拥塞的问题。
其次,仲裁互联单元620与计算单元630之间的通信方式为一对多通信方式,在仲裁互联单元620与多个计算单元630进行数据传输时,需要采用轮询仲裁的策略分配每个通道的数据传输时间。仲裁互联单元620需要确定每个计算单元630的优先级,通过固定顺序依次与每个计算单元630进行通信,传输数据流和控制流。在仲裁互联单元620与一个计算单元630进行通信时,其它计算单元630无法和仲裁互联单元620进行通信,传输数据流和控制流。这种仲裁互联结构会导致数据传输效率比较低,存在数据流和控制流拥塞的问题。
图2为本申请实施例提供的一种芯片功能单元的结构示意图。相关技术中,以传统的单核中央处理器(Central Processing Unit,CPU)为例,如图2所示,CPU(1401)包括控制单元1402、存储单元1403以及运算单元1404。在进行数据处理时,控制单元1402中的指令计数器1406向内存1405发送指令地址,内存1405在收到指令地址后,将对应的指令发送到控制单元1402的指令寄存器1407中。指令寄存器1407向存储单元1403以及运算单元1404发送控制指令,存储单元1403向内存1405发送操作数地址,存储单元1403和内存1405之间进行数据传输,运算单元1404和存储单元1403之间进行数据传输。
首先,从图2可以看出,相关技术中,芯片内部的功能单元是唯一的,以传统的单核CPU为例,在CPU中具有唯一的控制单元、存储单元以及运算单元。其中,控制单元发送控制指令,存储单元对数据进行存储,运算单元对数据进行运算。针对不同的处理任务,采用同一种芯片结构对任务进行处理;针对不同规格大小的芯片,每个芯片的结构也是固定的。因此,芯片的结构固定,不够灵活。
其次,从图2可以看出,CPU中的运算单元可以对数据进行计算,CPU的算力取决于CPU中运算单元的算力。相关技术中,芯片的面积会影响芯片可配置的算力的大小,芯片的面积越大,可配置的算力越大。但是,CPU中的算力往往设置较大的颗粒度,并且只配置一个运算单元不能对CPU进行算力分割,CPU的面积与算力配置往往不能完全匹配,存在芯片面积的浪费。针对不同的需求,需要分别设计不同规格的芯片,每种规格芯片单独配置算力,不够灵活。因此,相关技术中,芯片的单位算力设置较大,算力分割复杂。
本申请实施例提供一种芯片,芯片包括至少两个裸片,裸片包括依次连接的分布式控制节点(Distributed Control Unit,DCU)、至少一个路由节点(Routing Node,RN)和数据搬运节点(Data Transport Unit,DU),路由节点与对应的算子节点和数据存储节点(Memory Module,MM)连接。通过在裸片中设置至少一个路由节点,可以解决算力分割方法复杂以及数据流和控制流的拥塞问题。
图3为本申请实施例提供的一种芯片的组成结构示意图,如图3所示,所述芯片包括至少两个裸片,所述裸片包括依次连接的分布式控制节点101、至少一个路由节点102和数据搬运节点103,所述路由节点102与对应的算子节点104和数据存储节点105连接。
其中,裸片为芯片的部分组件,可以看做“小芯片”,用于处理各种数据计算任务。至少两个裸片封装在一起,共同组成芯片,处理各种数据计算任务。芯片中的裸片数量可以根据实际需求确定。示例性地,多裸片封装的芯片可以用于密文计算、也可以用于人工智能(Artificial Intelligence,AI)计算等大量数据计算的场景。
其中,裸片中的所有节点为用于实现特定功能的电路。
其中,每个路由节点102对应一个算子节点104和一个数据存储节点105,并且每个路由节点102连接对应的算子节点104和数据存储节点105。
在一些实施例中,所述分布式控制节点101,用于接收并解析控制指令,并将得到的数据搬运控制流和密文计算控制流转发至所述至少一个路由节点102。
其中,分布式控制节点101为裸片中的一种节点,用于生成控制流,将控制流转发至其它节点,对其它节点进行控制调度。分布式控制节点101与路由节点102连接。
其中,控制指令为与芯片处理的任务相关的指令。示例性地,芯片处理的任务为密文计算任务,控制指令为密文计算任务对应的计算指令。
在一些实施例中,裸片包括一个路由节点102,分布式控制节点101接收上位机发送的密文计算任务对应的计算指令,对计算指令进行解析,生成数据搬运控制流和密文计算控制流,发送至路由节点102。
在一些实施例中,裸片包括至少两个路由节点102,分布式控制节点接收上位机发送的密文计算任务对应的计算指令,对计算指令进行解析,生成数据搬运控制流和密文计算控制流,发送至至少两个路由节点102。
其中,数据搬运控制流为与数据传输相关的控制信息,用于控制数据在节点的传输。密文计算控制流为与密文计算相关的控制信息,用于控制节点进行密文计算。示例性地,数据搬运控制流指示了数据存储节点105需要从存储单元106获取待计算数据,密文计算控制流指示了算子节点104需要进行密文计算。
在一些实施例中,所述路由节点102,用于将所述数据搬运控制流转发至对应的数据存储节点105,并将所述密文计算控制流转发至对应的算子节点104。
其中,路由节点102为裸片中的一种节点,用于实现路由选择和数据交换的功能。每个裸片包含至少一个路由节点102,路由节点102的数量可以根据实际需求确定。每个路由节点102与对应的算子节点104和数据存储节点105连接。
在一些实施例中,路由节点102有多个方向的双向抽头,可以动态地实现一对一的数据传输路径,数据流和控制流在路由节点102可以通过各自独立的路径转发到其它节点,而不会采用轮询仲裁的策略进行数据流和控制流的传输。每个路由节点102通过各自独立的路径与其它节点直接相连,路由节点102与其它节点(例如,算子节点104、数据存储节点105等)之间的通信方式为点对点通信。在路由节点102收到数据流和控制流后,可以根据路由节点102与其它节点之间的路径,直接将数据流和控制流转发到对应的节点,路由节点与多个其它节点之间的数据传输互不影响,数据传输无需等待,可以避免数据流和控制流的拥塞。通过路由节点102与对应的算子节点104和数据存储节点105连接,相比仲裁互联结构,布线更加均衡;通过路由节点102的路由结构实现路由节点102与其它节点之间的点对点通信,相比仲裁互联结构的一对多通信,可以解决数据流和控制流的拥塞问题。
在一些实施例中,路由节点102接收到分布式控制节点101发送的数据搬运控制流和密文计算控制流后,根据预先确定的路由配置,将数据搬运控制流转发至对应的数据存储节点105,并将密文计算控制流转发至对应的算子节点104。
在一些实施例中,路由节点102与其它路由节点102连接,在接收到其它路由节点102转发的数据搬运控制流和密文计算控制流后,根据预先确定的路由配置,将数据搬运控制流转发至对应的数据存储节点105,并将密文计算控制流转发至对应的算子节点104。
在一些实施例中,所述数据存储节点105,用于响应于所述数据搬运控制流,通过所述至少一个路由节点102和所述数据搬运节点103,从存储模块106获取待计算数据。
其中,数据存储节点105为裸片中的一种节点,用于存储密文计算中的数据。示例性地,数据存储节点105存储密文计算中的待计算数据,或者存储密文计算结果。
在一些实施例中,数据存储节点105在收到数据搬运控制流后,确定需要从存储模块106获取待计算数据。数据存储节点105与路由节点102、数据搬运节点103以及存储模块106依次连接,可以通过路由节点102和数据搬运节点103,从存储模块106获取待计算数据。
在一些实施例中,数据存储节点105在收到数据搬运控制流后,确定需要从存储模块106获取待计算数据。数据存储节点105与至少两个路由节点102、数据搬运节点103以及存储模块106依次连接,可以通过至少两个路由节点102和数据搬运节点103,从存储模块106获取待计算数据。
其中,数据搬运节点103为裸片中的一种节点,用于和存储模块进行数据交换。示例性地,数据搬运节点103将从其它节点接收的数据存储在存储模块106中,或者从存储模块106中读取数据。存储模块106可以是内存、U盘、移动硬盘、终端等各种具有数据存储功能的硬件设备。示例性地,存储模块为动态存储器(Dynamic Random Access Memory,DRAM)。
在一些实施例中,所述算子节点104,用于响应于所述密文计算控制流,通过所述路由节点102从所述数据存储节点105中读取所述待计算数据,并生成计算结果。
其中,算子节点104为裸片中的一种节点,用于对待计算数据进行计算,生成计算结果。
在一些实施例中,算子节点104在收到密文计算控制流后,确定需要从对应的数据存储节点105中读取待计算数据。算子节点104与路由节点102、数据存储节点105依次连接,可以通过路由节点102从数据存储节点105中读取待计算数据,并生成计算结果。在一些实施例中,不同裸片的面积不同,根据每个裸片的面积,评估每个裸片中可以布局的路由节点102的数目,每个路由节点102连接对应的算子节点104和数据存储节点105。裸片面积越大,布局的路由节点102的数目越多,相应的算子节点104和数据存储节点105的数目越多,每个算子节点104具有一定的算力,因此裸片的算力越大。
其中,裸片包括至少一个路由节点102和路由节点102对应的算子节点104、数据存储节点105,裸片的面积不同,路由节点102和算子节点104、数据存储节点105的数目不同,因此,相比现有技术中芯片的固定结构,裸片的结构不是固定的,可以根据裸片的面积进行灵活适配。
其中,每个算子节点104具有一定的算力,裸片中设置的算力颗粒度较小。针对不同面积的裸片,通过改变路由节点102的数目,可以改变算子节点104的数目,进而改变裸片的算力。由于裸片中的算子节点104数目可以灵活调整,因此裸片的算力与裸片的面积可以实现匹配,裸片的面积越大,裸片的算力越大,不会存在裸片面积的浪费。针对不同规格的裸片,仅仅改变裸片中算子节点104的数目便可以对裸片的算力进行调整;针对不同的场景,算力需求,采用同一种芯片设计方案可以适配不同的芯片。因此,相比现有技术,裸片的单位算力较小,算力分割简单。
示例性地,芯片包括两个裸片,每个裸片包括依次连接的分布式控制节点、第一路由节点、第二路由节点和数据搬运节点,每个路由节点与对应的算子节点和数据存储节点连接。
示例性地,芯片包括两个裸片,第一裸片包括依次连接的分布式控制节点、第一路由节点和数据搬运节点,第二裸片包括依次连接的分布式控制节点、第二路由节点、第三路由节点和数据搬运节点,每个路由节点与对应的算子节点和数据存储节点连接。
本申请实施例中,芯片包括至少两个裸片,裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,路由节点与对应的算子节点和数据存储节点连接。如此,通过在裸片中设置至少一个路由节点,可以解决算力分割方法复杂以及数据流和控制流的拥塞问题。
图4为本申请实施例提供的另一种芯片的组成结构示意图,如图4所示,基于图3,针对所述至少两个裸片中相邻的第一裸片和第二裸片,所述第一裸片和所述第二裸片之间通过至少一个寄存器选择单元(Register Selection Unit,RSU)201连接,所述寄存器选择单元201的第一端与所述第一裸片中的一个路由节点102连接,所述寄存器选择单元201的第二端与所述第二裸片中的一个路由节点102连接;所述寄存器选择单元201用于基于延迟选择参数确定所述第一裸片中的一个路由节点102与所述第二裸片中的一个路由节点102之间的裸片间延迟。
在一些实施例中,芯片上存在许多布线,布线用于将各个节点的通信线路连接起来,进行信号传输。由于不同节点之间的布线各不相同,信号在不同节点之间传输时,存在延迟,不同节点之间的延迟不同,不同裸片之间的延迟也不同。其中,在相邻裸片之间进行数据传输时,需要保证相邻裸片的数据传输的同步性,不同裸片的数据传输延迟需要保持一致。由于相邻裸片之间的不同布线,相邻裸片间的走线延迟不一致,会导致不同节点的数据处理逻辑产生错误。针对相邻裸片之间走线延迟不一致的问题,相关技术中,提前进行实际测量得到相邻裸片之间的走线延迟,在后续数据传输时,把实测的延迟数据考虑进去,进行数据传输,保证相邻裸片的数据传输的同步性,这种方法实现较为复杂。
其中,寄存器选择单元201为裸片中的一种节点,用于根据延迟选择参数调整两个相邻节点之间的延迟。延迟选择参数为根据网络传输情况实时确定的参数,用于调整两个相邻节点之间的延迟。
在一些实施例中,在芯片中相邻的第一裸片和第二裸片之间通过至少一个寄存器选择单元201连接,寄存器选择单元201的第一端与第一裸片中的一个路由节点102连接,寄存器选择单元201的第二端与第二裸片中的一个路由节点102连接,通过寄存器选择单元201动态调整相邻裸片的路由节点102之间的延迟。其中,寄存器选择单元201的数量与裸片中路由节点的数量有关。
在一些实施例中,寄存器选择单元201的数量与相邻的第一裸片和第二裸片中较少的路由节点102的数量一致。
在一些实施例中,寄存器选择单元201的数量少于相邻的第一裸片和第二裸片中较少的路由节点102的数量。
示例性地,芯片包括两个裸片,第一裸片包括两个路由节点,第二裸片包括两个路由节点,在两个裸片之间设置两个寄存器选择单元,将第一裸片中的两个路由节点分别与第二裸片中的两个路由节点连接起来,调整裸片间延迟。
示例性地,芯片包括两个裸片,第一裸片包括两个路由节点,第二裸片包括一个路由节点,在两个裸片之间设置一个寄存器选择单元,将第一裸片中的一个路由节点与第二裸片中的路由节点连接起来,调整裸片间延迟。
本申请实施例中,在相邻的两个裸片之间设置至少一个寄存器选择单元,基于延迟选择参数确定第一裸片中的一个路由节点与第二裸片中的一个路由节点之间的裸片间延迟,通过不同的延迟选择参数可以对相邻裸片间的走线延迟进行动态调整,例如,当相邻裸片间的走线延迟过大时,通过减小延迟选择参数使相邻裸片间的走线延迟适当减小,当相邻裸片间的走线延迟过大时,通过增大延迟选择参数使相邻裸片间的走线延迟适当增大,保证相邻裸片间走线延迟的一致性,实现相邻裸片间数据传输的同步。
图5为本申请实施例提供的又一种芯片的组成结构示意图,基于图4,所述寄存器选择单元包括N个寄存器(1至N)和选择器302,N为正整数;其中,所述N个寄存器(1至N)的前N-1个寄存器中每个寄存器的第一端连接下一个寄存器的第二端;所述N个寄存器(1至N)中每个寄存器的第一端还连接于所述选择器302;所述寄存器选择单元的第1个寄存器的第二端与所述第一裸片中的一个路由节点102连接;所述选择器302的第二端与所述第二裸片中的一个路由节点102连接。
所述选择器302用于基于所述延迟选择参数303在所述N个寄存器(1至N)中选择第n个寄存器的第一端作为所述选择器302的第一端;所述裸片间延迟由第1个寄存器至第n个寄存器确定。
其中,寄存器为有限存储容量的存储组件,用于暂存数据和指令。选择器302为选择特定寄存器的组件,用于从N个寄存器(1至N)中接收特定寄存器的数据。
在一些实施例中,寄存器选择单元包括N个寄存器(1至N)和选择器302,N个寄存器的前N-1个寄存器中每个寄存器的第一端连接下一个寄存器的第二端;N个寄存器(1至N)中每个寄存器的第一端还连接于选择器302;第1个寄存器的第二端与第一裸片中的一个路由节点102连接;选择器的第二端与第二裸片中的一个路由节点102连接。基于这种连接方式,第一裸片中一个路由节点102的控制流和数据流可以按照寄存器的连接顺序依次传输到每个寄存器中,选择器接收特定寄存器(第n个寄存器)的控制流和数据流,并传输到第二裸片中的一个路由节点102,实现不同裸片路由节点102之间的通信。
其中,第一裸片的一个路由节点102的信号通过寄存器选择单元传输到第二裸片的一个路由节点102,信号在两个路由节点102之间传输时存在时延,通过寄存器选择单元可以动态调整两个路由节点102之间的时延。信号每经过一个寄存器,传输时延会增大。选择器根据延迟选择参数在N个寄存器(1至N)中选择第n个寄存器的第二端作为选择器302的第一端,此时信号经过前n个寄存器(1至n)输入到选择器中,两个路由节点102之间信号的延迟由前n个寄存器(1至n)的延迟确定。通过延迟选择参数303可以调整选择器302选择的寄存器,从而调整信号的传输路径,改变两个路由节点102之间的时延。当需要减小两个裸片间延迟时,设置较小的延迟选择参数303,让选择器302选择较小位次的寄存器;当需要增大两个裸片间延迟时,设置较大的延迟选择参数303,让选择器302选择较大位次的寄存器。
在一些实施例中,寄存器选择单元中每个寄存器的延迟是相同的,裸片间延迟由选择的寄存器的个数确定。
在一些实施例中,寄存器选择单元中不同寄存器的延迟是不同的,裸片间延迟由具体选择的寄存器确定。
示例性地,寄存器选择单元包括5个寄存器和选择器,延迟选择参数表明选择器选择第3个寄存器的第一端作为选择器的第一端,第一裸片的一个路由节点的信号经过前3个寄存器传输到选择器,裸片间延迟由第1个寄存器至第3个寄存器确定。
本申请实施例中,寄存器选择单元包括N个寄存器和选择器,基于延迟选择参数在N个寄存器中选择第n个寄存器的第一端作为选择器的第一端,裸片间延迟由第1个寄存器至第n个寄存器确定。如此,选择器基于延迟选择参数选择特定的寄存器,可以调整路由节点间的延迟和裸片间的延迟。
在一些实施例中,所述算子节点104还用于通过连接的路由节点102将所述计算结果存储于所述数据存储节点105。
其中,算子节点104在从数据存储节点105中读取待计算数据并生成计算结果后,需要将计算结果存储起来,方便上位机回读密文计算结果。算子节点104和数据存储节点105与对应的路由节点102连接,因此,算子节点104可以通过对应的路由节点102将计算结果存储在数据存储节点105。
本申请实施例中,算子节点104通过连接的路由节点102将计算结果存储于数据存储节点105,可以实现密文计算结果的有效保存,方便对密文计算结果进行读取。
在一些实施例中,所述分布式控制节点101还用于接收数据回读指令,并通过所述至少一个路由节点102将所述数据回读指令转发至对应的数据存储节点105。
所述数据存储节点105,响应于所述数据回读指令,通过所述至少一个路由节点102和所述数据搬运节点103,将所述计算结果转发至存储模块106。
其中,数据回读指令为对数据进行读取的指令,用于读取密文计算结果。
在一些实施例中,在密文计算处理完成后,上位机需要从存储模块中读取密文计算结果,此时密文计算结果存储在数据存储节点105中,因此上位机向分布式控制节点101发送数据回读指令,告知分布式控制节点101进行数据回读。分布式控制节点101通过至少一个路由节点102与数据存储节点105连接,在接收上位机发送的数据回读指令后,通过至少一个路由节点102将数据回读指令转发至对应的数据存储节点105,告知数据存储节点105需要进行数据回读。数据存储节点105在收到数据回读指令后,通过至少一个路由节点102将计算结果转发到数据搬运节点103,通过数据搬运节点103将计算结果转发至存储模块106。如此,上位机可以读取存储模块中的密文计算结果。
在一些实施例中,数据存储节点105通过一个路由节点102与分布式控制节点101连接,分布式控制节点101通过相连的路由节点102将数据回读指令转发至对应的数据存储节点105。
在一些实施例中,数据存储节点105通过至少两个路由节点102与分布式控制节点101连接,分布式控制节点101通过至少两个路由节点102将数据回读指令转发至对应的数据存储节点105。
在一些实施例中,数据存储节点105通过一个路由节点102与数据搬运节点103连接,数据存储节点105通过相连的路由节点102和数据搬运节点103,将计算结果转发至存储模块106。
在一些实施例中,数据存储节点105通过至少两个路由节点102与数据搬运节点103连接,数据存储节点103通过至少两个路由节点102和数据搬运节点103,将计算结果转发至存储模块106。
本申请实施例中,通过分布式控制节点接收数据回读指令,将数据回读指令转发至对应的数据存储节点,数据存储节点响应数据回读指令,将计算结果转发至存储模块。如此,通过将计算结果存储到存储模块中,方便对密文计算结果进行回读。
图6为本申请实施例提供的再一种芯片的组成结构示意图,基于图4,所述算子节点104包括以下至少之一:多项式计算(Polynomial Evaluation,PE)节点401和快速数论变换(Number Theoretic Transform,NTT)节点402;相应地,所述数据存储节点105包括以下至少之一:与所述多项式计算节点401对应的第一数据存储节点403,与所述快速数论变换节点402对应的第二数据存储节点404,与所述多项式计算节点401和所述快速数论变换节点402对应的第三数据存储节点405。
其中,快速数论变换节点402为裸片中的一种节点,用于对待计算数据进行快速数论变换,得到计算结果。这种算法是以数论为基础,对样本点进行数论变换,按时间抽取的方法,得到一组等价的迭代方程,有效高速简化了方程中的计算公式,与直接计算相比,大大减少了运算次数。
其中,多项式计算节点401为裸片中的一种节点,用于对待计算数据进行多项式计算,得到计算结果。
在一些实施例中,算子节点104包括多项式计算节点401,数据存储节点105包括与多项式计算节点401对应的第一数据存储节点403,多项式计算节点401的计算结果存储在与多项式计算节点401对应的第一数据存储节点403中。
在一些实施例中,算子节点104包括快速数论变换节点402,数据存储节点105包括与快速数论变换节点402对应的第二数据存储节点404,快速数论变换节点402的计算结果存储在与快速数论变换节点402对应的第二数据存储节点404中。
在一些实施例中,算子节点104包括多项式计算节点401和快速数论变换节点402,数据存储节点105包括与所述多项式计算节点401和所述快速数论变换节点402对应的第三数据存储节点405。
在一些实施例中,算子节点104包括多项式计算节点401和快速数论变换节点402,数据存储节点105包括与多项式计算节点401对应的第一数据存储节点403和与快速数论变换节点402对应的第二数据存储节点404,多项式计算节点401的计算结果存储在与多项式计算节点401对应的第一数据存储节点403中,快速数论变换节点402的计算结果存储在与快速数论变换节点402对应的第二数据存储节点404中。
本申请实施例中,通过多项式计算节点和快速数论变换节点对待计算数据进行不同的计算,并将计算结果存储在对应的数据存储节点。如此,可以提高密文计算的准确性和效率。
在一些实施例中,所述路由节点102的数目与所述裸片的面积相关;与所述路由节点102连接的算子节点104的数目与所述裸片的面积相关;与所述路由节点102连接的数据存储节点105的数目与所述裸片的面积相关。
其中,裸片的面积影响裸片中不同节点的数量,裸片的面积越大,裸片中可以布局的路由节点102的数目越多,每个路由节点102与对应的算子节点104和数据存储节点105连接,因此裸片中的算子节点104和数据存储节点105的数目越多。裸片的面积可以根据需求进行定制,通过调整裸片的面积,可以调整裸片的算力。
其中,裸片中的算子节点数目越多,裸片可以执行的计算量越大,裸片的算力越大。
在一些实施例中,芯片包含的至少两个裸片的面积是相同的,在至少两个裸片中设置相同数目的路由节点102、算子节点104以及数据存储节点105。
在一些实施例中,芯片包含的至少两个裸片的面积并不相同,针对每一裸片,根据裸片的面积确定固定数量的路由节点102、算子节点104以及数据存储节点105。面积较大的裸片,设置数目较多的路由节点102、算子节点104以及数据存储节点105;面积较小的裸片,设置数目较少的路由节点102、算子节104点以及数据存储节点105。
本申请实施例中,路由节点、算子节点以及数据存储节点的数目与裸片的面积相关,随着裸片面积的变化,裸片中的节点数目相应地变化,可以实现每个裸片的算力可配置。
图7为本申请实施例提供的一种密文计算方法的实现流程示意图,该方法可以由计算机设备的处理器执行。如图7所示,所述方法应用于包括多个裸片的芯片中,所述裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,所述路由节点与对应的算子节点和数据存储节点连接;所述方法包括步骤S501至步骤S504。
步骤S501、通过所述分布式控制节点接收并解析控制指令,并将得到的数据搬运控制流和密文计算控制流转发至所述至少一个路由节点。
其中,分布式控制节点为裸片中的一种节点,用于生成控制流,将控制流转发至其它节点,对其它节点进行控制调度。分布式控制节点与路由节点连接。
其中,控制指令为与芯片处理的任务相关的指令。示例性地,芯片处理的任务为密文计算任务,控制指令为密文计算任务对应的计算指令。
在一些实施例中,分布式控制节点接收上位机发送的密文计算任务对应的计算指令,对计算指令进行解析,生成数据搬运控制流和密文计算控制流,发送至路由节点。
其中,数据搬运控制流为与数据传输相关的控制信息,用于控制数据在节点的传输。密文计算控制流为与密文计算相关的控制信息,用于控制节点进行密文计算。示例性地,数据搬运控制流指示了数据存储节点需要从存储模块获取待计算数据,密文计算控制流指示了算子节点需要进行密文计算。
步骤S502、通过所述路由节点将所述数据搬运控制流转发至对应的数据存储节点,并将所述密文计算控制流转发至对应的算子节点。
其中,路由节点为裸片中的一种节点,用于实现路由选择和数据交换的功能。每个裸片包含至少一个路由节点,路由节点的数量可以根据实际需求确定。每个路由节点与对应的算子节点和数据存储节点连接。
在一些实施例中,路由节点接收到分布式控制节点发送的数据搬运控制流和密文计算控制流后,根据预先确定的路由配置,将数据搬运控制流转发至对应的数据存储节点,并将密文计算控制流转发至对应的算子节点。
在一些实施例中,路由节点与其它路由节点连接,在接收到其它路由节点转发的数据搬运控制流和密文计算控制流后,根据预先确定的路由配置,将数据搬运控制流转发至对应的数据存储节点,并将密文计算控制流转发至对应的算子节点。
步骤S503、通过所述数据存储节点响应于所述数据搬运控制流,通过所述至少一个路由节点和所述数据搬运节点,从存储模块获取待计算数据。
其中,数据存储节点为裸片中的一种节点,用于存储密文计算中的数据。示例性地,数据存储节点存储密文计算中的待计算数据,或者存储密文计算结果。
在一些实施例中,数据存储节点在收到数据搬运控制流后,确定需要从存储模块获取待计算数据。数据存储节点与至少一个路由节点、数据搬运节点以及存储模块依次连接,可以通过至少一个路由节点和数据搬运节点,从存储模块获取待计算数据。
其中,数据搬运节点为裸片中的一种节点,用于和存储模块进行数据交换。示例性地,数据搬运节点将从其它节点接收的数据存储在存储模块中,或者从存储模块中读取数据。存储模块可以是DRAM。
步骤S504、通过所述算子节点响应于所述密文计算控制流,通过所述路由节点从所述数据存储节点中读取所述待计算数据,并生成计算结果。
其中,算子节点为裸片中的一种节点,用于对待计算数据进行计算,生成计算结果。
在一些实施例中,算子节点在收到密文计算控制流后,确定需要从数据存储节点中读取待计算数据。算子节点与路由节点、数据存储节点依次连接,可以通过路由节点从数据存储节点中读取待计算数据,并生成计算结果。
本申请实施例中,芯片包括至少两个裸片,裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,路由节点与对应的算子节点和数据存储节点连接。如此,在多die封装的芯片中能够实现密文计算加速。通过路由节点的路由结构可以解决数据流和控制流的拥塞问题。
在一些实施例中,针对所述至少两个裸片中相邻的第一裸片和第二裸片,所述第一裸片和所述第二裸片之间通过至少一个寄存器选择单元连接,所述寄存器选择单元的第一端与所述第一裸片中的一个路由节点连接,所述寄存器选择单元的第二端与所述第二裸片中的一个路由节点连接。
所述方法还包括:通过寄存器选择单元基于延迟选择参数确定所述第一裸片中的一个路由节点与所述第二裸片中的一个路由节点之间的裸片间延迟。
其中,寄存器选择单元为裸片中的一种节点,用于根据延迟选择参数调整两个相邻节点之间的延迟。延迟选择参数为根据网络传输情况实时确定的参数,用于调整两个相邻节点之间的延迟。
在一些实施例中,在芯片中相邻的第一裸片和第二裸片之间通过至少一个寄存器选择单元连接,寄存器选择单元的第一端与第一裸片中的一个路由节点连接,寄存器选择单元的第二端与第二裸片中的一个路由节点连接,通过寄存器选择单元动态调整相邻裸片的路由节点之间的延迟。其中,寄存器选择单元的数量与裸片中路由节点的数量有关。
在一些实施例中,所述寄存器选择单元包括N个寄存器和选择器,N为正整数;其中,所述N个寄存器的前N-1个寄存器中每个寄存器的第一端连接下一个寄存器的第二端;所述N个寄存器中每个寄存器的第一端还连接于所述选择器;所述第1个寄存器的第二端与所述第一裸片中的一个路由节点连接;所述选择器的第二端与所述第二裸片中的一个路由节点连接。
所述方法还包括:通过所述选择器基于所述延迟选择参数在所述N个寄存器中选择第n个寄存器的第一端作为所述选择器的第一端;所述裸片间延迟由第1个寄存器至第n个寄存器确定。
其中,寄存器为有限存储容量的存储组件,用于暂存数据和指令。选择器为选择特定寄存器的组件,用于从N个寄存器中接收特定寄存器的数据。
其中,第一裸片的一个路由节点的信号通过寄存器选择单元传输到第二裸片的一个路由节点,信号在两个路由节点之间传输时存在时延,通过寄存器选择单元可以动态调整两个路由节点之间的时延。信号每经过一个寄存器,传输时延会增大。选择器根据延迟选择参数在N个寄存器中选择第n个寄存器的第二端作为选择器的第一端,此时信号经过前n个寄存器输入到选择器中,两个路由节点之间信号的延迟由前n个寄存器的延迟确定。通过延迟选择参数可以调整选择器选择的寄存器,从而调整信号的传输路径,改变两个路由节点之间的时延。当需要减小两个裸片间延迟时,设置较小的延迟选择参数,让选择器选择较小位次的寄存器;当需要增大两个裸片间延迟时,设置较大的延迟选择参数,让选择器选择较大位次的寄存器。
在一些实施例中,所述方法还包括:通过算子节点和所述算子节点连接的路由节点将所述计算结果存储于所述数据存储节点。
其中,算子节点在从数据存储节点中读取待计算数据并生成计算结果后,需要将计算结果存储起来,方便上位机回读密文计算结果。算子节点和数据存储节点与对应的路由节点连接,因此,算子节点可以通过对应的路由节点将计算结果存储在数据存储节点。
在一些实施例中,所述方法还包括:通过分布式控制节点接收数据回读指令,并通过所述至少一个路由节点将所述数据回读指令转发至对应的数据存储节点;通过所述数据存储节点响应所述数据回读指令,并通过所述至少一个路由节点和所述数据搬运节点,将所述计算结果转发至存储模块。
其中,数据回读指令为对数据进行读取的指令,用于读取密文计算结果。
在一些实施例中,数据存储节点通过一个路由节点与分布式控制节点连接,分布式控制节点通过相连的路由节点将数据回读指令转发至对应的数据存储节点。
在一些实施例中,数据存储节点通过至少两个路由节点与分布式控制节点连接,分布式控制节点通过至少两个路由节点将数据回读指令转发至对应的数据存储节点。
在一些实施例中,数据存储节点通过一个路由节点与数据搬运节点连接,数据存储节点通过相连的路由节点和数据搬运节点,将计算结果转发至存储模块。
在一些实施例中,数据存储节点通过至少两个路由节点与数据搬运节点连接,数据存储节点通过至少两个路由节点和数据搬运节点,将计算结果转发至存储模块。
在一些实施例中,所述算子节点包括以下至少之一:多项式计算节点和快速数论变换节点;相应地,所述数据存储节点包括以下至少之一:与所述多项式计算节点对应的第一数据存储节点,和与所述快速数论变换节点对应的第二数据存储节点。
其中,快速数论变换节点为裸片中的一种节点,用于对待计算数据进行快速数论变换,得到计算结果。这种算法是以数论为基础,对样本点进行数论变换,按时间抽取的方法,得到一组等价的迭代方程,有效高速简化了方程中的计算公式,与直接计算相比,大大减少了运算次数。
其中,多项式计算节点为裸片中的一种节点,用于对待计算数据进行多项式计算,得到计算结果。
在一些实施例中,所述路由节点的数目与所述裸片的面积相关;与所述路由节点连接的算子节点的数目与所述裸片的面积相关;与所述路由节点连接的数据存储节点的数目与所述裸片的面积相关。
其中,裸片的面积影响裸片中不同节点的数量,裸片的面积越大,裸片中可以布局的路由节点的数目越多,每个路由节点与对应的算子节点和数据存储节点连接,因此裸片中的算子节点和数据存储节点的数目越多。裸片的面积可以根据需求进行定制,通过调整裸片的面积,可以调整裸片的算力。
其中,裸片中的算子节点数目越多,裸片可以执行的计算量越大,裸片的算力越大。
下面说明本申请实施例提供的一种芯片及应用于芯片的密文计算方法在实际场景中的应用。
针对上述在多die芯片上实现密文计算算子时会遇到跨die线延迟不确定,算力分割方法复杂,数据流和控制流传输拥塞等问题。本申请可以根据每个die的面积可以评估每个die可以布局的密文计算算子的数目,根据算子评估数据调整片上网络(Network onChip,NOC)的结构,从而实现每个die的算力可配置。
图8为本申请实施例提供的一种路由节点的组成结构示意图。在一些实施例中,路由节点的结构如图8所示,路由节点701有八个方向的双向抽头,可以动态地实现一对一的数据传输路径,通过路由节点701的路由结构可以解决数据流和控制流的拥塞问题。
图9为本申请实施例提供的一种寄存器选择单元的组成结构示意图。在一些实施例中,寄存器选择单元的结构如图9所示,寄存器选择单元由n级寄存器(包括寄存器1至n共n个寄存器)和一个选择器820组成,n的大小可以由select参数(选择参数)830动态选择,用于对其跨die路径的走线延迟,即在由select参数确定的延迟时间后,选择器820向外发送输出信号840。由此,通过在die间的路由节点之间插入数量可以配置的寄存器选择单元,从而实现die间走线延迟可以做到动态调整。
本申请提出一种在多die芯片上通过NOC简单高效地实现密文计算加速器的方法。由于采用的NOC互联结构在芯片上可以均衡布局布线,静态路由的数据传输方式不会导致数据传输拥塞,数据传输效率较高。本申请方案包括:
芯片上的NOC由数据搬运节点、路由节点、多项式计算节点、快速数论变换节点和数据存储节点五种节点和分布式控制单元、die间寄存器选择单元组成。
分布式控制单元通过周边组件互连快速通道(Peripheral ComponentInterconnect Express,PCIE)接口读取指令数据并产生控制流,通过路由节点RN传输至各个节点,对节点进行控制调度。
多个并行的数据搬运节点从DRAM上搬运数据至路由节点,路由节点再将数据分发至各个数据存储节点、快速数论变换节点和多项式计算节点。
在多die芯片上实现密文计算算子时,首先评估每个die可以承载的密文计算算子数目,再按照NOC基本结构进行算子分配,从而实现每个die的算力可配置。通过路由节点的路由结构解决数据流和控制流的拥塞问题。在die间的路由节点之间插入数量可以配置的寄存器选择单元,从而实现路由节点之间的走线延迟以及die间走线延迟可以做到动态调整。
在一些实施场景中,和明文计算相比,密文计算的计算量有上百倍的增加,为了提升密文计算速度,通常都会用专用的密文计算加速卡对密文计算进行加速,本方案实现的密文计算加速器就能够对密文计算进行数十倍的硬件加速。
图10为本申请实施例提供的一种全同态密文计算加速器的应用示意图。如图10所示,本申请已经应用在全同态密文计算加速器中,明文数据901被加密为密文数据902之后,上位机HOST通过PCIE接口将全同态密文计算任务下发至密文计算加速器900中(即将密文数据902发送至密文计算加速器900),密文计算加速器900通过片上网络实现密文计算任务的指令传输译码、片上数据搬运以及快速数论变换和多项式计算,输出密文数据903,最后,密文数据903被解密为明文数据904。
图11为本申请实施例提供的一种片上网络的组成结构示意图。以4个die的芯片实现的密文计算加速器为例,NOC的结构如图11所示。NOC由数据搬运节点1030、路由节点1003、数据存储节点1001、数据存储节点1004、快速数论变换节点1002、多项式计算节点1005、分布式控制单元1020、die间的寄存器选择单元1040六部分组成。可以理解的是,为了避免重复性标注,图10中仅示例性地对die0中第一个路由节点1003及其相关节点进行标注。
其中,图11中虚线为控制流路径,图11中细实线为控制流和数据流路径,图11中粗实线为数据流路径。
图12为本申请实施例提供的一种密文计算加速器的工作流程示意图,基于图11,如图12所述,所述流程包括步骤S1101至S1108:
步骤S1101、上位机1010将密文计算任务编译成计算指令和计算数据;
步骤S1102、上位机1010通过PCIE接口将计算数据下发至DRAM;
步骤S1103、上位机1010通过PCIE接口将计算指令下发至每个die的分布式控制单元1020;
步骤S1104、每个die的分布式控制单元1020对计算指令进行解析,并生成数据搬运控制流和密文计算控制流发送给路由节点1003;
步骤S1105、路由节点1003将数据搬运控制流转发给数据存储节点1001和数据存储节点1004,数据存储节点1001和数据存储节点1004从DRAM读取计算数据并存储在数据存储节点的片上存储器上;
步骤S1106、路由节点1003将密文计算控制流转发给快速数论变换节点1002和多项式计算节点1005,快速数论变换节点1002通过路由节点1003读取对应的数据存储节点并进行快速数论变换;多项式计算节点1005通过路由节点1003读取对应的数据存储节点并进行多项式计算;
步骤S1107、多项式计算节点1005的计算结果通过路由节点1003转发至对应的数据存储节点,并存储在该数据存储节点的片上存储器中;快速数论变换节点1002的计算结果通过路由节点1003转发至对应的数据存储节点,并存储在该数据存储节点的片上存储器中;
步骤S1108、多项式计算结束后,上位机1010下发数据回读指令,数据存储节点1004将多项式计算节点1005的计算结果存储在DRAM中;快速数论变换结束后,上位机1010下发数据回读指令,数据存储节点1001将快速数论变换节点1002的计算结果存储在DRAM中。
其中,上位机1010可以通过PCIE接口回读多项式计算节点1005的计算结果和快速数论变换节点1002的计算结果。
在上述多die结构的芯片中,die的面积可以根据需要随意定制,NOC的结构也可以随着die的面积增加或减少,通过动态调整RN及其互联节点的数目可以很容易地实现每个die的算力调整。
通过上述实施例,可以提升密文计算加速器在多die芯片上实现的效率,便于每个die的算力分配;通过路由结构解决密文计算控制流和数据流拥塞的问题;通过die间的寄存器选择单元动态调整die间走线延迟,优化die间时序。
本申请实施例提供一种密文计算设备,所述密文计算设备包括前述任一项所述的芯片。
图13为本申请实施例提供的一种密文计算系统的示意图。如图13所示,本申请实施例提供一种密文计算系统1200,包括上位机1210、前述的密文计算设备1220和存储模块1230;其中,
所述上位机1210,用于将密文计算任务编译成控制指令和待计算数据,并将所述控制指令下发至每一所述裸片的分布式控制节点,将所述待计算数据下发至所述存储模块1230。
其中,上位机1210为直接发出操作命令的计算机,用于控制密文计算设备1220进行计算。
其中,控制指令为与芯片处理的任务相关的指令。示例性地,芯片处理的任务为密文计算任务,控制指令为密文计算任务对应的计算指令。
其中,待计算数据为密文计算中的原始数据,用于进行密文计算。
在一些实施例中,上位机1210获取密文计算任务后,对密文计算任务进行处理,将密文计算任务编译成控制指令和待计算数据。上位机1210通过PCIE接口将待计算数据下发至存储模块1230,在存储模块1230中存储待计算的计算数据。上位机1210通过PCIE接口将控制命令下发至密文计算设备1220中每一裸片的分布式控制节点,通知每一裸片需要进行密文计算,每一裸片的分布式控制节点基于控制命令控制裸片中的其它节点进行密文计算。其中,上位机1210通过PCIE接口与每一裸片中的分布式控制节点进行通信。
在一些实施例中,所述上位机1210还用于向所述分布式控制节点发送数据回读指令,在所述数据存储节点将所述计算结果转发至存储模块之后,从所述存储模块1230中读取所述计算结果。
其中,数据回读指令为对数据进行读取的指令,用于读取密文计算结果。
在一些实施例中,在密文计算处理完成后,上位机1210需要从存储模块1230中读取密文计算结果,此时密文计算结果存储在数据存储节点中,因此上位机1210需要和分布式控制节点通信,通过PCIE接口向分布式控制节点发送数据回读指令,告知分布式控制节点进行数据回读。分布式控制节点在接收上位机1210发送的数据回读指令后,通过至少一个路由节点将数据回读指令转发至对应的数据存储节点,告知数据存储节点需要进行数据回读。数据存储节点在收到数据回读指令后,通过至少一个路由节点将计算结果转发到数据搬运节点,通过数据搬运节点将计算结果转发至存储模块1230。如此,上位机可以通过PCIE接口读取存储模块1230中的密文计算结果。
本申请实施例中,通过上位机将密文计算任务编译成控制指令和待计算数据并下发到分布式控制节点和存储模块中。如此,上位机可以对密文计算设备进行控制,执行密文计算任务。通过上位机向分布式控制节点发送数据回读指令,并通过数据存储节点将计算结果存储在存储模块中。如此,上位机可以方便读取密文计算结果。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的密文计算方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
本申请实施例提供一种计算机程序,包括计算机可读代码,在所述计算机可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于实现上述方法中的部分或全部步骤。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请设备、存储介质、计算机程序及计算机程序产品实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
图14为本申请实施例提供的一种计算机设备的硬件实体示意图,如图14所示,该计算机设备1300的硬件实体包括:处理器1301和存储器1302,其中,存储器1302存储有可在处理器1301上运行的计算机程序,处理器1301执行程序时实现上述任一实施例的方法中的步骤。
存储器1302存储有可在处理器上运行的计算机程序,存储器1302配置为存储由处理器1301可执行的指令和应用,还可以缓存待处理器1301以及计算机设备1300中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
处理器1301执行程序时实现上述任一项的密文计算方法的步骤。处理器1301通常控制计算机设备1300的总体操作。
本申请实施例提供一种计算机存储介质,计算机存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一实施例的密文计算方法的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
上述处理器可以为目标用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各步骤/过程的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种芯片,其特征在于,所述芯片包括至少两个裸片,所述裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,所述路由节点与对应的算子节点和数据存储节点连接,其中:
所述分布式控制节点,用于接收并解析控制指令,并将得到的数据搬运控制流和密文计算控制流转发至所述至少一个路由节点;
所述路由节点,用于将所述数据搬运控制流转发至对应的数据存储节点,并将所述密文计算控制流转发至对应的算子节点;
所述数据存储节点,用于响应于所述数据搬运控制流,通过所述至少一个路由节点和所述数据搬运节点,从存储模块获取待计算数据;
所述算子节点,用于响应于所述密文计算控制流,通过所述路由节点从所述数据存储节点中读取所述待计算数据,并生成计算结果。
2.根据权利要求1所述的芯片,其特征在于,针对所述至少两个裸片中相邻的第一裸片和第二裸片,所述第一裸片和所述第二裸片之间通过至少一个寄存器选择单元连接,所述寄存器选择单元的第一端与所述第一裸片中的一个路由节点连接,所述寄存器选择单元的第二端与所述第二裸片中的一个路由节点连接;
所述寄存器选择单元用于基于延迟选择参数确定所述第一裸片中的一个路由节点与所述第二裸片中的一个路由节点之间的裸片间延迟。
3.根据权利要求2所述的芯片,其特征在于,所述寄存器选择单元包括N个寄存器和选择器,N为正整数;其中,
所述N个寄存器的前N-1个寄存器中每个寄存器的第一端连接下一个寄存器的第二端;
所述N个寄存器中每个寄存器的第一端还连接于所述选择器;
所述寄存器选择单元的第1个寄存器的第二端与所述第一裸片中的一个路由节点连接;
所述选择器的第二端与所述第二裸片中的一个路由节点连接;
所述选择器用于基于所述延迟选择参数在所述N个寄存器中选择第n个寄存器的第一端作为所述选择器的第一端;所述裸片间延迟由第1个寄存器至第n个寄存器确定。
4.根据权利要求2所述的芯片,其特征在于,所述算子节点还用于通过连接的路由节点将所述计算结果存储于所述数据存储节点。
5.根据权利要求4所述的芯片,其特征在于,所述分布式控制节点还用于接收数据回读指令,并通过所述至少一个路由节点将所述数据回读指令转发至对应的数据存储节点;
所述数据存储节点,响应于所述数据回读指令,通过所述至少一个路由节点和所述数据搬运节点,将所述计算结果转发至存储模块。
6.根据权利要求1至5任一项所述的芯片,其特征在于,所述算子节点包括以下至少之一:多项式计算节点和快速数论变换节点;相应地,所述数据存储节点包括以下至少之一:与所述多项式计算节点对应的第一数据存储节点,与所述快速数论变换节点对应的第二数据存储节点,以及所述多项式计算节点和所述快速数论变换节点对应的第三数据存储节点。
7.一种密文计算方法,其特征在于,应用于包括至少两个裸片的芯片中,所述裸片包括依次连接的分布式控制节点、至少一个路由节点和数据搬运节点,所述路由节点与对应的算子节点和数据存储节点连接;所述方法包括:
通过所述分布式控制节点接收并解析控制指令,并将得到的数据搬运控制流和密文计算控制流转发至所述至少一个路由节点;
通过所述路由节点将所述数据搬运控制流转发至对应的数据存储节点,并将所述密文计算控制流转发至对应的算子节点;
通过所述数据存储节点响应于所述数据搬运控制流,通过所述至少一个路由节点和所述数据搬运节点,从存储模块获取待计算数据;
通过所述算子节点响应于所述密文计算控制流,通过所述路由节点从所述数据存储节点中读取所述待计算数据,并生成计算结果。
8.根据权利要求7所述的方法,其特征在于,针对所述至少两个裸片中相邻的第一裸片和第二裸片,所述第一裸片和所述第二裸片之间通过至少一个寄存器选择单元连接,所述寄存器选择单元的第一端与所述第一裸片中的一个路由节点连接,所述寄存器选择单元的第二端与所述第二裸片中的一个路由节点连接;所述方法还包括:
通过所述寄存器选择单元基于延迟选择参数确定所述第一裸片中的一个路由节点与所述第二裸片中的一个路由节点之间的裸片间延迟。
9.根据权利要求8所述的方法,其特征在于,所述寄存器选择单元包括N个寄存器和选择器,N为正整数;其中,所述N个寄存器的前N-1个寄存器中每个寄存器的第一端连接下一个寄存器的第二端;所述N个寄存器中每个寄存器的第一端还连接于所述选择器;所述寄存器选择单元的第1个寄存器的第二端与所述第一裸片中的一个路由节点连接;所述选择器的第二端与所述第二裸片中的一个路由节点连接;所述方法还包括:
通过所述选择器基于所述延迟选择参数在所述N个寄存器中选择第n个寄存器的第一端作为所述选择器的第一端;所述裸片间延迟由第1个寄存器至第n个寄存器确定。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
通过所述算子节点和连接的路由节点将所述计算结果存储于所述数据存储节点。
CN202410182271.7A 2024-02-19 2024-02-19 一种芯片及密文计算方法 Active CN117749736B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410182271.7A CN117749736B (zh) 2024-02-19 2024-02-19 一种芯片及密文计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410182271.7A CN117749736B (zh) 2024-02-19 2024-02-19 一种芯片及密文计算方法

Publications (2)

Publication Number Publication Date
CN117749736A true CN117749736A (zh) 2024-03-22
CN117749736B CN117749736B (zh) 2024-05-17

Family

ID=90253044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410182271.7A Active CN117749736B (zh) 2024-02-19 2024-02-19 一种芯片及密文计算方法

Country Status (1)

Country Link
CN (1) CN117749736B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008076790A2 (en) * 2006-12-14 2008-06-26 Rambus Inc. Multi-die memory device
US20110018623A1 (en) * 2009-07-22 2011-01-27 More Grant M Integrated circuit package
US9689918B1 (en) * 2012-09-18 2017-06-27 Mentor Graphics Corporation Test access architecture for stacked memory and logic dies
US10673440B1 (en) * 2019-08-13 2020-06-02 Xilinx, Inc. Unified programmable computational memory and configuration network
CN113642722A (zh) * 2021-07-15 2021-11-12 深圳供电局有限公司 用于卷积计算的芯片及其控制方法、电子装置
CN114679424A (zh) * 2022-03-31 2022-06-28 中科芯集成电路有限公司 一种多裸芯集成微系统dma实现方法
WO2023023975A1 (zh) * 2021-08-25 2023-03-02 华为技术有限公司 一种芯片、芯片制造方法、以及相关装置
WO2023082458A1 (zh) * 2021-11-15 2023-05-19 长鑫存储技术有限公司 一种存内计算方法及电路、半导体存储器和存储结构
CN116368481A (zh) * 2020-09-28 2023-06-30 赛灵思公司 具有数据处理引擎阵列的多裸片集成电路

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008076790A2 (en) * 2006-12-14 2008-06-26 Rambus Inc. Multi-die memory device
US20110018623A1 (en) * 2009-07-22 2011-01-27 More Grant M Integrated circuit package
US9689918B1 (en) * 2012-09-18 2017-06-27 Mentor Graphics Corporation Test access architecture for stacked memory and logic dies
US10673440B1 (en) * 2019-08-13 2020-06-02 Xilinx, Inc. Unified programmable computational memory and configuration network
CN116368481A (zh) * 2020-09-28 2023-06-30 赛灵思公司 具有数据处理引擎阵列的多裸片集成电路
CN113642722A (zh) * 2021-07-15 2021-11-12 深圳供电局有限公司 用于卷积计算的芯片及其控制方法、电子装置
WO2023023975A1 (zh) * 2021-08-25 2023-03-02 华为技术有限公司 一种芯片、芯片制造方法、以及相关装置
WO2023082458A1 (zh) * 2021-11-15 2023-05-19 长鑫存储技术有限公司 一种存内计算方法及电路、半导体存储器和存储结构
CN114679424A (zh) * 2022-03-31 2022-06-28 中科芯集成电路有限公司 一种多裸芯集成微系统dma实现方法

Also Published As

Publication number Publication date
CN117749736B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
US20190156180A1 (en) Neural network device
WO2020001438A1 (zh) 片上代码断点调试方法、片上处理器及芯片断点调试系统
JP7074833B2 (ja) ネットワークオンチップによるデータ処理方法及び装置
WO2006012284A2 (en) An apparatus and method for packet coalescing within interconnection network routers
EP2116938A1 (en) Operation apparatus and control method
US8543949B1 (en) Allocating hardware resources for high-level language code sequences
US20190158575A1 (en) Platform as a service cloud server and multi-tenant operating method thereof
CN115168260B (zh) 直接内存存取装置、数据传输方法及集成电路系统
CN111651383B (zh) 用于具有数据流管理器的处理器中的数据流的方法和装置
KR102539571B1 (ko) 네트워크 온칩 데이터 처리 방법 및 장치
KR102539572B1 (ko) 네트워크 온칩 데이터 처리 방법 및 장치
US20190156245A1 (en) Platform as a service cloud server and machine learning data processing method thereof
WO1995028676A1 (en) Local semiautonomous dedicated-storage access for parallel processors
CN117749736B (zh) 一种芯片及密文计算方法
CN103853135A (zh) 调节对从设备的访问
US20040054818A1 (en) Flexible results pipeline for processing element
CN103227755A (zh) 使用推测技术的处理器到基于消息的网络的接口
CN116737083B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备
CN116032746B (zh) 资源池的信息处理方法及装置、存储介质及电子装置
US7302667B1 (en) Methods and apparatus for generating programmable device layout information
US20060277020A1 (en) A reconfigurable system for verification of electronic circuits using high-speed serial links to connect asymmetrical evaluation and canvassing instruction processors
KR20230059536A (ko) 프로세스 스케줄링 방법 및 장치
KR102539574B1 (ko) 네트워크 온칩 데이터 처리 방법 및 장치
KR102539573B1 (ko) 네트워크 온칩 데이터 처리 방법 및 장치
US10997277B1 (en) Multinomial distribution on an integrated circuit

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
GR01 Patent grant