CN111433758B - 可编程运算与控制芯片、设计方法及其装置 - Google Patents
可编程运算与控制芯片、设计方法及其装置 Download PDFInfo
- Publication number
- CN111433758B CN111433758B CN201880059121.XA CN201880059121A CN111433758B CN 111433758 B CN111433758 B CN 111433758B CN 201880059121 A CN201880059121 A CN 201880059121A CN 111433758 B CN111433758 B CN 111433758B
- Authority
- CN
- China
- Prior art keywords
- data
- programmable
- control chip
- chip
- control
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013461 design Methods 0.000 title description 12
- 238000004891 communication Methods 0.000 claims abstract description 15
- 230000008569 process Effects 0.000 claims abstract description 12
- 230000015654 memory Effects 0.000 claims description 42
- 238000004088 simulation Methods 0.000 claims description 29
- 238000004422 calculation algorithm Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 16
- 230000003044 adaptive effect Effects 0.000 claims description 9
- 230000007547 defect Effects 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 8
- 230000005855 radiation Effects 0.000 claims description 8
- 230000001133 acceleration Effects 0.000 claims description 7
- 238000013473 artificial intelligence Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 7
- 101100365384 Mus musculus Eefsec gene Proteins 0.000 claims description 6
- 230000003287 optical effect Effects 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000007667 floating Methods 0.000 claims description 3
- 238000003475 lamination Methods 0.000 claims description 3
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 238000005316 response function Methods 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 2
- 230000002457 bidirectional effect Effects 0.000 claims 2
- 238000007689 inspection Methods 0.000 claims 2
- 230000003139 buffering effect Effects 0.000 abstract description 5
- 238000004364 calculation method Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 9
- 238000004519 manufacturing process Methods 0.000 description 7
- 239000002245 particle Substances 0.000 description 6
- 238000005265 energy consumption Methods 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 3
- 238000005065 mining Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002787 reinforcement Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/12—Geometric CAD characterised by design entry means specially adapted for CAD, e.g. graphical user interfaces [GUI] specially adapted for CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/31—Design entry, e.g. editors specifically adapted for circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/08—HW-SW co-design, e.g. HW-SW partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/02—Reliability analysis or reliability optimisation; Failure analysis, e.g. worst case scenario performance, failure mode and effects analysis [FMEA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/22—Yield analysis or yield optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Architecture (AREA)
- Human Computer Interaction (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Logic Circuits (AREA)
- Microcomputers (AREA)
Abstract
一种可编程的运算与控制芯片,包括:采用控制流运算方式的至少一个控制器(110);至少一条总线(120);采用数据流运算方式的至少一个可编程运算结构(130),通过所述至少一条总线(120)与所述至少一个控制器(110)通信;及至少一个数据缓存装置(140),所述至少一个数据流装置(140)包括缓存器和/或缓存阵列,其中,所述至少一个控制器(110)配置为对所述至少一个可编程运算结构(130)和/或所述至少一个数据缓存装置(140)进行控制与调度、对数据串并行进行分配与处理、和/或对芯片内部结构进行动态可重构。
Description
技术领域
本公开涉及芯片及电子装置,尤其涉及一种一种可编程的运算与控制芯片、该芯片的应用方法以及具有该芯片的装置。
背景技术
科技的发展对芯片设计与制造提出了越来越高的要求,采用以IP核复用及其软硬件协同验证为技术支撑的系统级芯片(SoC),已成为高性能集成电路设计的主流方法。从芯片系统定义、前端电路设计、后端物理实现、芯片制造、封测到软件开发再到最终的量产也已演变成一个浩大的系统工程。高性能与低功耗是芯片设计的两个相悖方向,计算芯片公司都在努力寻求一个高性能低功耗的解决方案。
发明内容
本申请公开一种可编程运算与控制芯片、方法及其装置,能够实现高效能低功耗的运算处理。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提供一种可编程的运算与控制芯片,包括:采用控制流运算方式的至少一个控制器;至少一条总线;采用数据流运算方式的至少一个可编程运算结构,通过所述至少一条总线与所述至少一个控制器通信;及至少一个数据缓存装置,与所述至少一个可编程运算结构进行数据交换,所述至少一个数据缓存装置包括缓存器和/或缓存阵列,其中,所述至少一个控制器配置为对所述至少一个可编程运算结构和/或所述至少一个数据缓存装置进行控制与调度、对数据串并行操作进行分配与处理、和/或对所述至少一个可编程运算结构进行动态可重构。
根据一些实施例,所述至少一个控制器包括CPU、DSP、MCU、GPU、DMA控制器中的至少一个。
根据一些实施例,所述至少一个控制器还可以编程为对数据流运算的执行流程进行控制,包括:对执行数据流运算的可编程运算结构进行控制与调度。
根据一些实施例,所述至少一个控制器还配置为对控制流运算的执行流程进行控制,包括:执行串行运算、读数据、写数据、跳转、中断、小量数据的运算中的至少一种。
根据一些实施例,所述至少一个数据缓存装置包括并行或高速串行的高带宽存储器/存储器阵列。
根据一些实施例,至少一个数据缓存装置通过至少一条总线或高并行DMA与控制流运算的所述至少一个控制器及外设进行数据交换。
根据一些实施例,所述至少一个数据缓存装置包括多个数据缓存装置,所述多个数据缓存装置分布在所述至少一个可编程运算结构周围,所述多个数据缓存装置包括第一和第二数据缓存装置;所述运算与控制芯片配置为使得第一数据从第一数据缓存装置输出到所述至少一个可编程运算结构,并经过所述至少一个可编程运算结构的运算而输出第二数据至第二数据缓存装置或所述第一数据缓存装置。
根据一些实施例,所述多个数据缓存装置和所述至少一个可编程运算结构配置为进行数据的乒乓操作:第一数据从第一数据缓存装置输出,经过所述至少一个可编程运算结构输出第二数据至第二数据缓存装置,然后再经过重构过的所述至少一个可编程运算结构的运算而输出结果至所述第一数据缓存装置。
根据一些实施例,所述至少一个数据缓存装置采用多条双口RAM实现或者通过一块或多块高带宽的RAM来实现,所述RAM实现形式包括寄存器、SRAM、MRAM、RRAM、RERAM、或eFlash。
根据一些实施例,运算与控制芯片还包括:至少一个总线交换器,设置在所述至少一个可编程运算结构与所述至少一个数据缓存装置之间,所述至少一个总线交换器为可编程或可动态重构的交叉连接结构从而连接所述至少一个数据缓存装置和所述至少一个可编程运算结构。
根据一些实施例,所述至少一个控制器控制所述至少一个可编程运算结构执行数据流运算,并根据下列公式确定是否需要通过所述至少一个可编程运算结构执行数据流运算:
T_conf+T_delay*N/Path<<N*T_n
其中,T_conf为配置所述至少一个可编程运算结构的时间;T_delay为相邻两个数据结果出来的最大延时;N为需要运算的数据个数;Path为同时并行运算的路数;T_n为每个数据在普通串行控制流运算方式中运算完成需要的时间。
根据一些实施例,所述至少一个可编程运算结构包括FPGA、DSP、自适应芯片、人工智能运算结构、片上网络中的至少一个。
根据一些实施例,所述自适应芯片包括:多个阵列排布的动态可重构单元,每个动态可重构单元与周围的4~8个相邻动态可重构单元相连且还通过其上方以及下方的多条数据传输线与不相邻的动态可重构单元相连,所述每个动态可重构单元从有相连关系中的一个或多个获得数据,将基于所述数据的运算结果输出给至少一个相连的动态可重构单元或数据传输线。
根据一些实施例,每个动态可重构单元可按需动态重配置,且每个动态可重构单元执行的运算指令可以不相同,动态可重构单元所执行的指令依托于公式:
其中,Sela为A数据通过配置指定的数据来源,Selb为B数据通过配置指定的数据来源,Selc为Cin数据通过配置指定的数据来源,xa为所有可能的A数据来源,xb为所有可能的B数据来源,xc为所有可能的Cin数据来源,N为每个数据信号可以获取的来源的途径,f为操作函数;an,bn,cinn分别为A,B,Cin的第n路上的数据,Result为函数结果输出,cout是进位或标志位输出,δ(xa-Sela),δ(xb-Selb),δ(xc-Selc)为单位脉冲响应函数,当且仅当xa=Sela,xb=Selb,xc=Selc时,以上三个函数才为1,否则为0。
根据一些实施例,每个动态可重构单元包括算术逻辑时序单元,所述算术逻辑时序单元配置为实现算术运算、逻辑运算、查找运算、路径选择运算、浮点运算、空运算、时序延迟及计数中的至少一种。
根据一些实施例,所述多个动态可重构单元可配置通过组合其中的至少两个从而实现复杂指令,所述复杂指令通过多个基础运算指令的组合实现。
根据一些实施例,所述至少一个可编程运算结构以流水线或并行的方式实现串行运算的算法。
根据一些实施例,所述至少一个可编程运算结构划分成至少两个运算区域,所述至少两个运算区域可交叉并行进行配置与运算,从而实现并行化处理和数据处理中的数据交叉与复用。
根据一些实施例,所述至少一个可编程运算结构采用配置缓存器模式。
根据一些实施例,所述至少一个可编程运算结构包括第一可编程运算结构和第二可编程运算结构,在所述第一可编程运算结构进行配置时所述第二可编程运算结构进行运算,当配置以及运算完成后,所述第二可编程运算结构切换为进行配置且所述第一可编程运算结构切换为进行运算。
根据一些实施例,运算与控制芯片还包括多个外部存储器接口,所述多个外部存储器接口用于挂接一个或多个DDR存储器、一个或多个HBM高并行存储器、一个或多个HMC存储器、一个或多个PCIE/USB接口的SSD/SATA存储器、一个或多个光通信接口的存储器、一个或多个高速以太网接口的网络存储器、一个或多个内置MRAM/RRAM/eFlash/SRAM/DRAM存储器以及其他高速接口等以实现高速存储。
根据一些实施例,运算与控制芯片还包括多个可编程接口,每个接口通过程序设置重定义内部连接从而实现芯片内部多个结构与外部通讯。
根据一些实施例,运算与控制芯片还包括MIPI/USB/HDMI/VGA显示器接口、图像传感器接口、激光雷达传感器接口、语音接口、AD/DA转换接口、Serdes接口等中的一种或多种。
根据一些实施例,所述至少一个可编程运算结构包括至少一个可编程运算阵列。
根据一些实施例,运算与控制芯片还包括用于所述运算与控制芯片之间通信的高速通信接口,以使多个运算与控制芯片进行阵列式连接和处理。
根据一些实施例,所述多个运算与控制芯片、和/或所述多个运算与控制芯片与存储器可以采用SIP封装等多模块封装在一起的封装技术。
根据一些实施例,所述多个运算与控制芯片采用叠片封装,且所述多个运算与控制芯片之间设定主从芯片,实现数据动态调度。
根据本发明的另一方面,提供一种用于如前述任一项所述的运算与控制芯片的仿真方法,包括:构造多个模拟模块,每个模拟模块对应所述运算与控制芯片的硬件运算单元;在每个模拟模块内利用寄存器状态更新函数模拟时钟脉冲;调用所述寄存器状态更新函数更新时钟状态;利用每个模拟模块对所述运算与控制芯片的相应硬件单元在每个时钟周期的运算进行模拟。
根据一些实施例,仿真方法还包括:在对需要更新时钟状态的模拟模块按照特定的顺序进行数据更新。
根据一些实施例,仿真方法还包括:通过设置单步执行,实时检测硬件运算单元中每一个时钟相应的寄存器状态。
根据一些实施例,仿真方法还包括:通过Model-View的形式对所述至少一个可编程运算结构进行属性编辑。
根据本发明的另一方面,提供一种用于如前述任一项所述的运算与控制芯片的方法,包括:将运算划分为控制流运算和数据流运算;将与数据流运算对应的配置写入到所述至少一个可编程运算结构,并向所述至少一个可编程运算结构批量灌注数据从而所述至少一个可编程运算结构利用灌注的数据执行数据流运算。
根据本发明的另一方面,提供一种用于如前述任一项所述的运算与控制芯片的方法,包括:将数据流运算从编程语言编译为数据流图(DFG)文件;将所述数据流图(DFG)文件转化为配置文件;将所述配置文件送入模拟工具进行仿真或者写入所述至少一个可编程运算结构。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,而不是限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它特征及优点将变得更加明显。
图1示出根据本公开示例性实施例的可编程的运算与控制芯片的示意图;
图2示出根据本公开另一实施例的数据缓存装置和可编程运算结构配置为进行数据的乒乓操作的结构和时序;
图3示出根据本公开实施例可用作可编程运算结构的自适应芯片;
图4示出根据本公开示例实施例的采用配置缓存器模式的可编程运算结构;
图5示出根据本公开示例实施例总线交换器调节数据缓存装置的每行数据和可编程运算结构的连接方式的示意图;
图6示出根据本公开示例实施例配置多个可编程运算结构的示意图;
图7示出根据本公开示例实施例的用于运算与控制芯片的仿真方法;
图8示出根据本公开示例实施例的通过Model-View的形式对可编程运算结构进行属性编辑的界面图;
图9示出根据本公开示例实施例用于运算与控制芯片的方法的流程图;
图10示出根据本公开示例实施例用于运算与控制芯片的方法的流程图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、模块、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、模块或者操作以使说明书简洁。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用各种形式来实现这些功能实体,或在一个或多个硬件模块或电路单元中实现这些功能实体。
如果把CPU或DSP的一个核心比作一个流水线的机器人,当前CPU的架构设计一直围绕如何增强指令执行的效率,为此采取的措施是不断提升主频、加多流水线(现在的CPU往往拥有20以上的流水数目)。这个流水线的机器人虽然有不同长度的流水线,但是计算单元就一个。每个计算都要一个指令,每个指令都要基本上经过取指令、译码、取数据、计算、回存等几个步骤。其中取指令、取数据、回存都要操作缓存器甚至是外部存储器,需要消耗大量的能量。译码与计算能耗相对少很多,计算所占的能耗约是整体流水线能耗的1/8以下。但是计算机对我们来说,数据计算才是核心。也就是如果采用指令解析形式的架构(CPU,GPU,DSP等),其有效能耗利用不到12.5%。流水线级数越长,每条指令与计算相关的操作越少,其有效能耗越低。
高性能与低功耗是芯片设计的两个相悖方向,计算芯片公司都在努力寻求一个高性能低功耗的解决方案。一种方式是FPGA内嵌ARM核来达到低功耗高性能的目的。但这种方案无疑加大了项目设计难度,因为FPGA和CPU编程与原理各不相同。即使可以通过高级语言综合将C/C++/SystemC转化成RTL,也很难在软硬件结合的环境中准确控制其时序。这种方案要求设计人员要精通完全不同的软件与硬件设计模式。但是,这两套设计模式相冲突,一般人很难灵活切换与掌控。
另一种方式是开发片上多核网络芯片,也就是一颗芯片内部集成成百上千的精简化的RISC处理器核心,然后核与核之间通过特制网络协议进行通讯。当大量数据涌入的时候,每个核都要将传输到自己位置上的包识别一次,如果确认该包属于自己,则执行数据,否则转发到下一个核。海量数据在片上多核网络芯片的网络上传输,会大大降低数据到达时间,增加延迟与功耗,每个核等待与指令解析和包识别都是功耗上升的关键因素。因此,多核系统最大的问题在于多核协作与调度,多核系统无法发挥出等效于每个核相加的效能。多核的计算性能的提升,并不能发挥出每个核的能效。相反,多核系统反而增加了能耗,导致计算能效下降。
根据本公开一方面的技术构思,提出一种SOC架构,可具有多个CPU、多个存储控制器、多个接口。为了实现高性能并行,这些单元模块被有效进行整合,实现高效能的处理与低功耗。
根据本公开另一方面的技术构思,提出一种高速动态可重构的软硬件结构的软硬件实现。硬件包含一个或多个控制器(可以为CPU/DSP/MCU/GPU/其他处理器),一个或多个动态可重构的可编程运算结构,一个或多个数据调度控制器(DMA),一种或多种外部存储控制器(DDR/HBM/HMC/SSD等),一种或多种外部高速接口(光通信/PCIE/USB/Ethernet/MIPI等)和总线等。
根据本公开另一方面的技术构思,适合控制流计算的可以直接运行在CPU上面,适合数据流运算的先将配置放在可编程运算结构里面,然后批量灌数据进行并行运算。例如,数据流计算有大量的数据通过一样的运算算法实现,其余都是控制流计算。
根据本公开另一方面的技术构思,可编程的运算与控制芯片架构采用传统结构加并行结构组成。传统结构采用内部缓存中转数据,通过总线与外围不同带宽不同速度的接口相衔接,同时控制器(例如,CPU)可以通过高速总线实现多颗芯片协作。并行结构由可编程运算结构作为主导,在可编程运算结构周围分布着平行缓存和高带宽高速存取接口,可以与多条DDR内存、多个SSD存储设备、HBM或3D存储颗粒等直接衔接。并行处理器的协作并行存储与CPU的cache可以通过高速数据交换,也可以作为高带宽高速存取接口的缓存。可编程运算结构每行和每列通过总线贯穿,可以实现内部数据跳跃,节省传输延迟。CPU部分负责运行操作系统、执行常规软件和读写接口,达到对于传统CPU运算软件兼容。可编程运算结构部分负责新运算方式,做到数据处理并行化,降低功耗,实现软件定义芯片的新模式。可编程运算结构根据应用级别不同,可以分为异构256核、1024核、4096核、16384核等的等级。也可以在单芯片中实现多个可编程运算阵列的组合,实现双配置或多配置无缝切换,进一步提升并行计算的能力。
图1示出根据本公开示例性实施例的可编程的运算与控制芯片的示意图。
参见图1,根据本公开示例性实施例的运算与控制芯片100包括:采用控制流运算方式的至少一个控制器110;至少一条总线120;采用数据流运算方式的至少一个可编程运算结构130,可编程运算结构130通过所述至少一条总线与所述至少一个控制器通信;及至少一个数据缓存装置140,与至少一个可编程运算结构130进行数据交换,数据缓存装置140包括缓存器和/或缓存阵列。
在图1所示的结构中,所述至少一个控制器110配置为对所述至少一个可编程运算结构130和/或所述至少一个数据缓存装置140进行控制与调度、对数据串并行操作进行分配与处理、和/或至少一个可编程运算结构130进行动态可重构。
根据一些实施例,可编程运算结构130包括可编程运算阵列。根据一些实施例,可编程运算结构130可包括FPGA、DSP、自适应芯片、人工智能运算结构、片上网络中的至少一个。
根据本公开的一些实施例,可编程运算结构130以流水线或并行的方式实现串行运算的算法。
根据本公开的一些实施例,可编程运算结构130可划分成至少两个运算区域,至少两个运算区域可交叉并行进行配置与运算,从而实现并行化处理和数据处理中的数据交叉与复用。
根据一些实施例,控制器110包括CPU、DSP、MCU、GPU、DMA控制器中的至少一个。
根据一些实施例,控制器110还配置为对数据流运算的执行流程进行控制,包括:对执行数据流运算的可编程运算阵列进行控制与调度。
根据一些实施例,控制器110还配置为对控制流运算的执行流程进行控制,包括执行串行运算、读数据、写数据、跳转、中断、小量数据的运算中的至少一种。例如,控制器110执行控制流运算,完成对执行流程的准确时序的先后控制。
根据一些实施例,数据缓存装置140包括并行或高速串行的多端口高带宽存储器/存储器阵列。根据一些实施例,数据缓存装置140可采用多条双口RAM实现或者通过一块或多块高带宽的RAM来实现。例如,RAM实现形式包括寄存器、SRAM、MRAM、RRAM、RERAM、或eFlash。例如,每个双口RAM可以同时具备输入与输出口,并且输入输出口可以同时操作。当数据缓存装置140配置成输入模式(Memin模式)的时候,可以通过总线写入数据,一次写入位宽为总线位宽,可以按照地址写入;也可以通过外部高速接口或者外部存储控制器进行并行输入,并行输入数据的位宽可调节。当数据缓存装置140写满或者有数据的时候,在触发数据传输指令后,每排的RAM作为输出口并行向高速动态重构逻辑阵列写入数据。双口RAM对于每个数据都会记录其有效比特位,如果数据是无效的,则有效比特位为0,否则为1。
根据一些实施例,数据缓存装置140通过至少一条总线120或高并行DMA与控制流运算的控制器110及外设进行数据交换。
根据一些实施例,数据缓存装置140包括多个数据缓存装置,多个数据缓存装置分布在可编程运算结构130周围。根据一些实施例,例如参见图2,多个数据缓存装置140包括第一和第二数据缓存装置142和144。运算与控制芯片110配置为使得第一数据从第一数据缓存装置142输出到可编程运算结构130,并经过可编程运算结构130的运算而输出第二数据至第二数据缓存装置144或原来的第一数据缓存装置142。
根据一些实施例,运算与控制芯片100还包括总线交换器150。总线交换器150设置在可编程运算结构130与数据缓存装置140之间。总线交换器150为可编程或可动态重构的交叉连接结构从而连接数据缓存装置140和可编程运算结构130,如图5所示。也可以在多个可编程运算结构130中间插入总线交换器,动态重构。总线交换器150的配置采用总线或者DMA进行配置。总线交换器150可实现不同行或者列的数据进行直接传输的交换。
根据一些实施例,运算与控制芯片100还包括多个外部存储器接口160。外部存储器接口160用于挂接一个或多个DDR存储器、一个或多个HBM高并行存储器、一个或多个HMC存储器、一个或多个PCIE/USB接口的SSD/SATA存储器、一个或多个光通信接口的存储器、一个或多个高速以太网接口的网络存储器。运算与控制芯片100也可包括一个或多个内置MRAM/RRAM/eFlash/SRAM/DRAM存储器以实现高速存储。
根据一些实施例,运算与控制芯片100还包括多个可编程接口,每个接口通过程序设置重定义内部连接从而实现芯片内部多个结构与外部通讯。
根据一些实施例,运算与控制芯片100还包括MIPI/USB/HDMI/VGA显示器接口、图像传感器接口、激光雷达传感器接口、语音接口、AD/DA转换接口、Serdes接口中的一种或多种。
根据一些实施例,运算与控制芯片100还包括用于运算与控制芯片之间通信的高速通信接口,以使多个运算与控制芯片进行阵列式连接和处理,从而加强并行计算能力。
图2示出根据本公开另一实施例的数据缓存装置和可编程运算结构配置为进行数据的乒乓操作的结构和时序。
参见图2,第一数据在S1阶段从第一数据缓存装置142输出,经过可编程运算结构130在S2阶段输出第二数据至第二数据缓存装置144。可编程运算结构130在S3阶段重构。然后,第二数据在S4阶段再输出给可编程运算结构130,经过重构过的可编程运算结构130的运算而在S5阶段输出结果至第一数据缓存装置142,从而第一和第二数据缓存装置142和144及可编程运算结构130配置为进行数据的乒乓操作。
根据本公开的技术构思,控制器110控制可编程运算结构130是否执行数据流运算。根据一些实施例,控制器130根据下列公式确定是否需要通过可编程运算结构130执行数据流运算:
T_conf+T_delay*N/Path<<N*T_n
其中,T_conf为配置可编程运算结构的时间;T_delay为相邻两个数据结果出来的最大延时;N为需要运算的数据个数;Path为同时并行运算的路数;T_n为每个数据在普通串行控制流运算方式中运算完成需要的时间。
图3示出根据本公开实施例可用作可编程运算结构的自适应芯片300。
如图3所示,自适应芯片300包括多个阵列排布的动态可重构单元310。每个动态可重构单元310可与周围的4~8个相邻动态可重构单元相连,还可通过其上方以及下方的多条数据传输线与不相邻的动态可重构单元相连。每个动态可重构单元310从有相连关系的输入端中的一个或多个获得数据,将基于数据的运算结果输出给输出端。
对于图3所示的每个动态可重构单元310,数据可以从8个不同的方向进出,即数据可来自相邻的四个不同动态可重构单元310,并可在运算后将结果输出到相邻的八个不同动态可重构单元310进行进一步的运算,但本公开不限于此。
自适应芯片300在配置一次之后,根据输入数据进行运算。运算完成后,可擦除重配置,然后再根据新的输入数据进行新的运算,以此往复,达到芯片面积无限大的效果。
自适应芯片300中包括若干基本动态可重构单元310,每个基本单元可寄存配置数据,且与相邻的基本单元连接。根据配置,每个基本单元从一个或多个相邻的基本单元中获得数据,并可将基于这些数据的运算结果输出给至少一个相邻的基本单元。当数据传输进来的时候,根据配置进行运算。通过在不同时间点对芯片进行自动重配置,可以在有限的芯片面积上实现无限的电路算法。
根据一些实施例,每个动态可重构单元310可包括算术逻辑时序单元,算术逻辑时序单元配置为实现算术运算、逻辑运算、查找运算、路径选择运算、浮点运算、空运算、时序延迟及计数中的至少一种。
动态可重构单元310拥有自己的指令集,包含数据输入选择、数据计算操作、数据寄存或输出等控制。
指令可采用16bit指令。也可以采用32bit指令,将Row和col编排进去。具体字节意义与分布如下表,其中字节排布或者顺序不是必要参考条件,可以采用不同顺序搭配。
16bit指令排布方式
32bit指令排布方式
根据一些实施例,每个动态可重构单元310可按需动态重配置,且每个动态可重构单元执行的运算指令可以不相同,动态可重构单元所执行的指令依托于公式:
其中,Sela为A数据通过配置指定的数据来源,Selb为B数据通过配置指定的数据来源,Selc为Cin数据通过配置指定的数据来源。xa为所有可能的A数据来源,xb为所有可能的B数据来源,xc为所有可能的Cin数据来源。N为每个数据信号可以获取的来源的途径,例如,如果连接了四个邻域,则n为4;如果连接了8个邻域则为8;如果该单元连接了总线,则连了m条总线,n为8+m。f为操作函数,例如可以为加、减、乘、左移、右移、查找等操作。an,bn,cinn分别为A,B,Cin的第n路上的数据。Result为函数结果输出,cout是进位或标志位输出。δ(xa-Sela),δ(xb-Selb),δ(xc-Selc)为单位脉冲响应函数,当且仅当xa=Sela,xb=Selb,xc=Selc时,以上三个函数才为1,否则为0。
下表示出根据本公开示例实施例的用于动态可重构单元310的指令。
根据一些实施例,多个动态可重构单元310可配置通过组合其中的至少两个从而实现复杂指令,复杂指令通过多个基础运算指令的组合实现。例如,复杂指令EQU判断两整型数据是否相等,相等C路输出1,否则C路输出为0。实现思路可以是两路数据相减或进行异或(xor),再用比较指令和0比。
图4示出根据本公开示例实施例的采用配置缓存器模式的可编程运算结构130。
参见图4,可编程运算结构130采用配置缓存器170。例如,采用一个小型存储器用于存储下一步要更改的配置,当需要配置的时候,可以存储下一个配置,通过串行控制器或总线获取的命令为配置时,将配置缓存器中的数据并行或串行的写入到可重构运算结构中(写入配置寄存器),以节约配置时间。随着切换指令下达,立即将写入缓存的指令直接写入到高速动态重构逻辑阵列中,如此可以实现1~10ns切换一次的功效。
图5示出根据本公开示例实施例总线交换器150调节数据缓存装置140的每行数据和可编程运算结构130的连接方式的示意图。
参见图5,总线交换器150动态重构,调节数据缓存装置140的每行数据和可编程运算结构130的连接方式,可实现不同行或者列的数据进行直接传输的交换。易于理解,总线交换器是充分而不必要条件。
图6示出根据本公开示例实施例配置多个可编程运算结构的示意图。
根据本公开的一些实施例,可以配置多个可编程运算结构和数据缓存装置。在让一部分进行配置的同时,一部分进行数据处理,从而加速计算性能,降低切换时间。虽然与前述采用配置缓存器170的方式相比需要冗余资源,但多个可编程运算结构和数据缓存装置可以便于中间衔接,切换时间更短。
例如,参见图6,多个可编程运算结构130包括第一可编程运算结构132和第二可编程运算结构134。在第一可编程运算结构132进行配置时第二可编程运算结构134进行运算,当配置以及运算完成后,第二可编程运算结构134切换为进行配置且第一可编程运算结构132切换为进行运算,从而实现快速接续运算,提高总体运算效率。
根据本公开的一些实施例,多个运算与控制芯片、和/或多个运算与控制芯片与存储器采用SIP封装,从而实现计算性能的倍增。根据一些实施例,多个运算与控制芯片采用叠片封装,且多个运算与控制芯片之间设定主从芯片,实现数据动态调度。这样,可以实现打破摩尔定律的低功耗高性能处理器堆。
图7示出根据本公开示例实施例的用于前述运算与控制芯片的仿真方法。参见图7,根据本公开示例实施例的用于前述运算与控制芯片的仿真方法,在S701,构造多个模拟模块,每个模拟模块对应运算与控制芯片的硬件运算单元。
在S703,在每个模拟模块内利用寄存器状态更新函数模拟时钟脉冲。由于软件中没有时钟的概念,所以软件模拟采用状态更新的方式对硬件电路进行模拟,每次寄存器状态更新代表硬件电路上的一个时钟脉冲。
在S705,调用寄存器状态更新函数更新时钟状态。对于每个模拟模块里面都有一个更新函数,当运行仿真的时候可以调用该函数实现状态更新。
在S707,利用每个模拟模块对运算与控制芯片的相应硬件单元在每个时钟周期的运算进行模拟。即,状态更新后再模拟逻辑部分进行计算。
根据一些实施例,软件中可以设置单步执行,用于实时检测硬件中每一个时钟相应的寄存器状态。
根据一些实施例,在对需要更新时钟状态的模拟模块按照特定的顺序进行数据更新。例如,在采用update的方式对需要更新寄存器状态的模拟器进行数据更新时,可按照特定的顺序进行数据更新,以避免出现数据时序紊乱问题。
图8示出根据本公开示例实施例的通过Model-View的形式对可编程运算结构进行属性编辑的界面图。
如图8所示,根据一些实施例,通过Model-View的形式对所述至少一个可编程运算结构进行属性编辑。例如,Model为内建高速可编程运算阵列的模拟器,针对每个运算单元的模拟。当选中一个运算单元的时候,通过属性编辑器可以编辑该单元的具体属性,并直接反应到Model里面。当选中一个运算单元的时候,该单元高亮,并且通过参数传递给右侧的属性编辑器,在属性编辑器中可以对该单元的属性进行编辑,直接可以反馈到运算单元中。
在示例实施例中,每个计算单元有3种输入A,B,Cin;每种输入都可以从八个方向进行输入,所以在右侧属性栏里面设置了一个八向罗盘,用户将鼠标点击到8个方向中其中一个方向的位置,就会将该位置的编号作为输入方向写入到配置中,同时对工作空间中的单元增加或改变输入该数据的箭头,从临近的单元获得输出。
图9示出根据本公开示例实施例用于运算与控制芯片的方法,可对运算进行调度与控制。
参见图9,在S901,将运算划分为控制流运算和数据流运算。适合控制流计算的可以直接运行在控制器上面,适合数据流运算的先将配置放在可编程运算结构里面。例如,数据流计算有大量的数据通过一样的运算算法实现,其余都是控制流计算。
如前所述,根据一些实施例,控制器130根据下列公式确定是否需要通过可编程运算结构130执行数据流运算:
T_conf+T_delay*N/Path<<N*T_n
其中,T_conf为配置可编程运算结构的时间;T_delay为相邻两个数据结果出来的最大延时;N为需要运算的数据个数;Path为同时并行运算的路数;T_n为每个数据在普通串行控制流运算方式中运算完成需要的时间。
在S903,将与数据流运算对应的配置写入到至少一个可编程运算结构,并向至少一个可编程运算结构批量灌注数据从而至少一个可编程运算结构利用灌注的数据执行数据流运算。
图10示出根据本公开示例实施例用于运算与控制芯片的方法,可对数据流运算进行编译和配置或仿真。
参见图10,在S1001,将数据流运算从编程语言编译为DFG文件。例如,采用Clang将C代码标记成并行的进行编译,生成DFG文件。又例如,将预定运算(例如,C程序)编译为包括多个动态可重构单元的结构。
在S1003,将DFG文件转化为配置文件。例如,借助DFG文件直接生成数据流图,再将数据流图对应到芯片结构中去,作为配置。
在S1005,将配置文件送入模拟工具进行仿真或者写入至少一个可编程运算结构。例如,可利用已经对芯片进行完整建模的软件读入配置,进行数据仿真与验证。又例如,将多个配置的配置参数分别写入到相应的多个动态可重构单元。
根据本公开的芯片可以应用于各种需要高效能或可靠运算的场景。下面举例进行描述。易于理解,这些仅是根据本公开的芯片的示例性应用,而不是用于限制目的。
根据一实施例,一种抗辐射芯片包括根据本公开的运算与控制芯片。所述运算与控制芯片配置为在检测到数据发生辐射翻转后,通过动态重构的方式来重配置,和/或利用冗余单元通过动态重构避开辐射损坏单元。抗辐射芯片可以用于宇航、航空和核电的应用。
在宇航、核电等恶劣环境下,存在着大量的高能粒子射线。宇航和核电中的电路系统和检测装置由于受到粒子的辐射,数据容易发生翻转,尤其是控制数据的翻转。所述芯片不仅可以通过采用抗辐照加固工艺线来抵抗部分剂量的辐照,在检测到数据翻转后,还会通过动态可重构的方式来重配置配置数据来进一步提高抗辐照剂量。同时,所述芯片由于有大量的冗余,可以通过动态重构避开损坏单元,继续执行,来保障芯片受损后的继续执行,延长使用寿命。
可采用每个单元的配置数据采用三选二多冗余。一旦有翻转,采用冗余校验,找出正确的来继续执行。当三个数据都不相同的时候,说明同时有两位或以上发生翻转,则直接触发中断,请求控制器调度重新配置来实现自修复。
也可以采用双备份。对每个备份采用双比特位/单比特位校验来确定翻转与否,这样可以节省一路数据的存储,降低功耗。采用双比特位校验可以防止相近区域内同时发生翻转。
根据一实施例,一种软自毁装置包括根据本公开的运算与控制芯片。所述运算与控制芯片利用接收的算法配置数据对至少一个可编程运算结构进行重构,在预设条件被触发时,所述运算与控制芯片对所述至少一个可编程运算结构自行重构以擦除配置的算法结构。该方案可以用于保密装置的软自毁,如导弹、无人机、无人船、无人潜艇、无人战车等设备中。所述芯片可以自身可以不存储算法,通过网络传输算法进入到至少一个可编程运算结构中,一旦触发异常(如定时到、被蒱捉),可以自行重构和擦除内部算法结构。
根据一实施例,一种人工智能计算设备或矿机包括根据本公开的运算与控制芯片。所述运算与控制芯片通过动态重构的方式适应新的算法。例如,可以用于人工智能的运算、矿机的运算等。人工智能和矿机的运算由于算法不断演进,很多固化的人工智能算法很快就被更优化的淘汰。可编程运算与控制芯片可以通过动态调整数据流的运算方式来适应新的算法。
根据一实施例,一种服务器芯片包括根据本公开的运算与控制芯片。所述运算与控制芯片可为不同的算法需求配置不同的可编程数据流运算硬件以实现运算加速和/或降低功耗。该方案可以用于大数据、服务器、云运算等领域作为主控芯片,取代现有的服务器芯片。所述芯片自身带有CPU和并行运算能力,可以允许算法根据自身需求配置不同的可编程数据流运算硬件,并实现动态可重构,加速运算,降低功耗。
根据一实施例,一种机器人控制芯片包括根据本公开的运算与控制芯片,用于机器人的控制与调度。外界接入的设备通过协议被自动识别,该设备的驱动电路配置和协议通过网络查询并自动下载以重构所述至少一个可编程运算结构,然后可直接使用该接入的设备。
根据一实施例,一种工艺缺陷检测结构包括根据本公开的运算与控制芯片,用于工艺厂的良率检测。
芯片从制造厂回来,并不代表每个芯片都正常,就算表面功能正常的芯片,也可能存在着内部的小问题。很多逻辑门在高频工艺下不能满足时序要求。逻辑不存在共性,即使一个逻辑能跑过,但是逻辑与逻辑的组合,往往不能满足设定的频率要求。根据本实施例的检测模式,芯片内部采用异构单元,可以实现256核心到16000核心的布局与重构。芯片内部的通路、逻辑计算全部通过门电路实现,其范围基本上覆盖了所有CPU、GPU和AI芯片的所有的共性操作。通过逐次迭代跳过缺陷单元来检测缺陷所在的单元位置。当一条通路存在问题的时候,可以采用逐一遍历的方式跳过有问题的单元进行执行,也可以通过行检测有问题和列检测有问题反推交叉位置存在计算问题的方式来找出问题单元,从而实现反向缺陷定位。经过细化处理,可以分析出缺陷所在的操作功能和数据缺陷所在的位数。然后标记出来。可以向厂商提供具体哪个位置和哪根线上出了问题,由厂家进一步追寻缺陷出现的工艺问题。新产线的良率检测往往要经历非常长的周期方能稳定,很多时间基本上浪费在缺陷位置查找上。根据本公开的技术方案可以协助新产线快速定位逻辑缺陷位置,帮助老产线在逻辑良率上进行提升,以求达到更高的芯片设计客户满意度。
根据一实施例,一种基带处理结构包括根据本公开的运算与控制芯片,用于终端设备或网络设备基带数据处理。所述运算与控制芯片通过大数据量的数据流运算实现并行处理。4G时代以后,数据带宽增长很快,现有的做法是通过多个处理器或SIMD的方式对基带数据进行处理。如前所述,可以通过大数据量的数据流运算实现并行处理,降低功耗。
根据一实施例,一种SSD控制器包括根据本公开的运算与控制芯片,用于连接存储颗粒和CPU。该SSD控制器配置为,对于小量数据的串行运算或数据存取,所述运算与控制芯片读取/写入存储颗粒并与CPU进行数据交互;对于大量数据的并行运算,所述运算与控制芯片接收CPU发送的用于至少一个可编程运算结构的配置,利用该配置重构,执行存储颗粒内部数据的并行运算,返回所述并行运算的结果给CPU。也可以通过SIP封装等片内集成的方式,将本公开的运算与控制芯片与存储颗粒封装在一起,实现单芯片存储解决方案。随着运算与控制芯片的加强,可以直接抛开主CPU,用所述的运算与控制芯片直接替代CPU的位置,实现更低功耗的存储内计算。
根据一实施例,一种图像传感控制器包括根据本公开的运算与控制芯片,用于图像传感器数据或雷达传感器数据的预处理。所述运算与控制芯片接收CPU发送的配置数据和读取指令,重构后的运算与控制芯片对图像传感器数据或雷达传感器数据进行运算,返回结果给CPU。这样,图像传感器或雷达数据的处理可以从CPU端转移到传感器端,减少数据在CPU与传感器之间的搬移,进一步减少计算量。CPU对传感器端发送配置数据和读取指令,传感器中的数据经过配置后的所述芯片计算,将结果传送给CPU。另外,还可进一步通过互联网传输给云服务器。
根据一实施例,一种计算加速器包括根据本公开的运算与控制芯片。所述运算与控制芯片采用动态重构满足不同算法对于硬件加速的需求以用于云数据并行处理的加速。该方案可以用于云服务器中的数据处理加速。现在的云计算平台数据量庞大,其中很多数据需要并行处理,所以才有了云计算服务器与FPGA的搭配。但是FPGA不能实现极高速度的动态重构,该方案的芯片可以采用超高速的动态重构来满足不同算法对于硬件加速的需求。
综上所述,根据本公开实施例的可编程的运算与控制芯片、用于该芯片的方法以及具有该芯片的装置具有以下优点中的一种或多种。
根据一些实施例,运算与控制芯片可具有多个控制器、总线、可编程运算结构及数据缓存装置,能够实现高性能并行,实现高效能的处理与低功耗。
根据一些实施例,适合控制流计算的可以直接运行在控制器上面,适合数据流运算的先将配置放在可编程运算结构里面,从而实现高效能运算。
根据一些实施例,可以在单芯片中实现多个可编程运算结构的组合,实现双配置或多配置无缝切换,进一步提升并行计算的能力。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开实施的范围,即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。
本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
Claims (39)
1.一种可编程的运算与控制芯片,包括:
采用控制流运算方式的至少一个控制器;
至少一条双向总线;
采用数据流运算方式的至少一个可编程运算结构,通过所述至少一条双向总线与所述至少一个控制器通信;
至少一个数据缓存装置,与所述至少一个可编程运算结构进行数据交换,所述至少一个数据缓存装置包括缓存器和/或缓存阵列,
其中,所述至少一个控制器对所述至少一个可编程运算结构和/或所述至少一个数据缓存装置进行控制与调度、对数据串并行操作进行分配与处理、和/或对所述至少一个可编程运算结构进行动态可重构;
所述至少一个控制器包括CPU、DSP、MCU、GPU、DMA控制器中的至少一个;
所述至少一个可编程运算结构包括FPGA、DSP、自适应芯片、人工智能运算结构、片上网络中的至少一个;
所述自适应芯片包括:多个阵列排布的动态可重构单元,每个动态可重构单元与周围的4~8个相邻动态可重构单元相连且还通过其上方以及下方的多条数据传输线与不相邻的动态可重构单元相连,所述每个动态可重构单元从有相连关系的接入端中的一个或多个获得数据,将基于所述数据的运算结果输出给至少一个相连的接出端;
每个动态可重构单元可按需动态重配置,且每个动态可重构单元执行的运算指令可以不相同,动态可重构单元所执行的指令依托于公式:
其中,Sela为A数据通过配置指定的数据来源,Selb为B数据通过配置指定的数据来源,Selc为Cin数据通过配置指定的数据来源,xa为所有可能的A数据来源,xb为所有可能的B数据来源,xc为所有可能的Cin数据来源,N为每个数据信号可以获取的来源的途径,f为操作函数;an,bn,cinn分别为A,B,Cin的第n路上的数据,Result为函数结果输出,cout是进位或标志位输出,δ(xa-Sela),δ(xb-Selb),δ(xc-Selc)为单位脉冲响应函数,当且仅当xa=Sela,xb=Selb,xc=Selc时,以上三个函数才为1,否则为0。
2.如权利要求1所述的运算与控制芯片,其中所述至少一个控制器还配置为对数据流运算的执行流程进行控制,包括:对执行数据流运算的可编程运算结构进行控制与调度。
3.如权利要求1所述的运算与控制芯片,其中所述至少一个控制器还配置为对控制流运算的执行流程进行控制,包括:执行串行运算、读数据、写数据、跳转、中断、小量数据的运算中的至少一种。
4.如权利要求1所述的运算与控制芯片,其中所述至少一个数据缓存装置包括并行或高速串行的多端口高带宽存储器/存储器阵列。
5.如权利要求1所述的运算与控制芯片,其中所述至少一个数据缓存装置通过至少一条总线或高并行DMA与控制流运算的所述至少一个控制器及外设进行数据交换。
6.如权利要求1所述的运算与控制芯片,其中
所述至少一个数据缓存器包括多个数据缓存装置,所述多个数据缓存装置分布在所述至少一个可编程运算结构周围,所述多个数据缓存装置包括第一和第二数据缓存装置;
所述运算与控制芯片配置为使得第一数据从第一数据缓存装置输出到所述至少一个可编程运算结构,并经过所述至少一个可编程运算结构的运算而输出第二数据至第二数据缓存装置或所述第一数据缓存装置。
7.如权利要求6所述的运算与控制芯片,其中所述多个数据缓存装置和所述至少一个可编程运算结构配置为进行数据的乒乓操作:第一数据从第一数据缓存装置输出,经过所述至少一个可编程运算结构输出第二数据至第二数据缓存装置,然后再经过重构过的所述至少一个可编程运算结构的运算而输出结果至所述第一数据缓存装置。
8.如权利要求1所述的运算与控制芯片,其中所述至少一个数据缓存装置采用多条双口RAM实现或者通过一块或多块高带宽的RAM来实现,所述RAM实现形式包括寄存器、SRAM、MRAM、RRAM、RERAM、或eFlash。
9.如权利要求1所述的运算与控制芯片,还包括:
至少一个总线交换器,设置在所述至少一个可编程运算结构与所述至少一个数据缓存装置之间,所述至少一个总线交换器为可编程或可动态重构的交叉连接结构从而连接所述至少一个数据缓存装置和所述至少一个可编程运算结构。
10.如权利要求1所述的运算与控制芯片,其中所述至少一个控制器控制所述至少一个可编程运算结构执行数据流运算,并根据下列公式确定是否需要通过所述至少一个可编程运算结构执行数据流运算:
T_conf+T_delay*N/Path<<N*T_n
其中,T_conf为配置所述至少一个可编程运算结构的时间;T_delay为相邻两个数据结果出来的最大延时;N为需要运算的数据个数;Path为同时并行运算的路数;T_n为每个数据在普通串行控制流运算方式中运算完成需要的时间。
11.如权利要求1所述的运算与控制芯片,每个动态可重构单元包括算术逻辑时序单元,所述算术逻辑时序单元配置为实现算术运算、逻辑运算、查找运算、路径选择运算、浮点运算、空运算、时序延迟及计数中的至少一种。
12.如权利要求1所述的运算与控制芯片,所述多个动态可重构单元可配置通过组合其中的至少两个从而实现复杂指令,所述复杂指令通过多个基础运算指令的组合实现。
13.如权利要求1所述的运算与控制芯片,其中所述至少一个可编程运算结构以流水线或并行的方式实现串行运算的算法。
14.如权利要求1所述的运算与控制芯片,其中所述至少一个可编程运算结构划分成至少两个运算区域,所述至少两个运算区域可交叉并行进行配置与运算,从而实现并行化处理和数据处理中的数据交叉与复用。
15.如权利要求1所述的运算与控制芯片,其中所述至少一个可编程运算结构采用配置缓存器模式。
16.如权利要求1所述的运算与控制芯片,其中所述至少一个可编程运算结构包括第一可编程运算结构和第二可编程运算结构,在所述第一可编程运算结构进行配置时所述第二可编程运算结构进行运算,当配置以及运算完成后,所述第二可编程运算结构切换为进行配置且所述第一可编程运算结构切换为进行运算。
17.如权利要求1所述的运算与控制芯片,还包括:
多个外部存储器接口,所述多个外部存储器接口用于挂接一个或多个DDR存储器、一个或多个HBM高并行存储器、一个或多个HMC存储器、一个或多个PCIE/USB接口的SSD/SATA存储器、一个或多个光通信接口的存储器、一个或多个高速以太网接口的网络存储器、一个或多个内置MRAM/RRAM/eFlash/SRAM/DRAM存储器以实现高速存储。
18.如权利要求1所述的运算与控制芯片,还包括多个可编程接口,每个接口通过程序设置重定义内部连接从而实现芯片内部多个结构与外部通讯。
19.如权利要求1所述的运算与控制芯片,还包括MIPI/USB/HDMI/VGA显示器接口、图像传感器接口、激光雷达传感器接口、语音接口、AD/DA转换接口、Serdes接口中的一种或多种。
20.如权利要求1所述的运算与控制芯片,所述至少一个可编程运算结构包括至少一个可编程运算阵列。
21.如权利要求1所述的运算与控制芯片,还包括用于所述运算与控制芯片之间通信的高速通信接口,以使多个运算与控制芯片进行阵列式连接和处理。
22.如权利要求21所述的运算与控制芯片,其中所述多个运算与控制芯片、和/或所述多个运算与控制芯片与存储器采用SIP封装或其他集成封装形式。
23.如权利要求22所述的运算与控制芯片,其中所述多个运算与控制芯片采用叠片封装,且所述多个运算与控制芯片之间设定主从芯片,实现数据动态调度。
24.一种用于如权利要求1-23中任一项所述的运算与控制芯片的仿真方法,包括:
构造多个模拟模块,每个模拟模块对应所述运算与控制芯片的硬件运算单元;
在每个模拟模块内利用寄存器状态更新函数模拟时钟脉冲;
调用所述寄存器状态更新函数更新时钟状态;
利用每个模拟模块对所述运算与控制芯片的相应硬件单元在每个时钟周期的运算进行模拟。
25.如权利要求24所述的仿真方法,还包括:在对需要更新时钟状态的模拟模块按照特定的顺序进行数据更新。
26.如权利要求24所述的仿真方法,还包括:通过设置单步执行,实时检测硬件运算单元中每一个时钟相应的寄存器状态。
27.如权利要求24所述的仿真方法,还包括:通过Model-View的形式对所述至少一个可编程运算结构进行属性编辑。
28.一种用于如权利要求1-23中任一项所述的运算与控制芯片的方法,包括:
将运算划分为控制流运算和数据流运算;
将与数据流运算对应的配置写入到所述至少一个可编程运算结构,并向所述至少一个可编程运算结构批量灌注数据从而所述至少一个可编程运算结构利用灌注的数据执行数据流运算。
29.一种用于如权利要求1-23中任一项所述的运算与控制芯片的方法,包括:
将运算划分为控制流运算和数据流运算;
将与数据流运算对应的配置写入到所述至少一个可编程运算结构,并向所述至少一个可编程运算结构批量灌注数据从而所述至少一个可编程运算结构利用灌注的数据执行数据流运算;将数据流运算从编程语言编译为数据流图DFG文件;
将所述数据流图DFG文件转化为配置文件;
将所述配置文件送入模拟工具进行仿真或者写入所述至少一个可编程运算结构。
30.一种抗辐射芯片,包括如权利要求1-23中任一项所述的运算与控制芯片,其中所述运算与控制芯片配置为在检测到数据发生辐射翻转后,通过动态重构的方式来重配置,和/或
利用冗余单元通过动态重构避开辐射损坏单元。
31.一种软自毁装置,包括如权利要求1-23中任一项所述的运算与控制芯片,其中所述运算与控制芯片利用接收的算法配置数据对至少一个可编程运算结构进行重构,在预设条件被触发时,所述运算与控制芯片对所述至少一个可编程运算结构自行重构以擦除配置的算法结构。
32.一种人工智能计算设备,包括如权利要求1-23中任一项所述的运算与控制芯片,其中所述运算与控制芯片通过动态重构的方式适应不同的算法。
33.一种服务器芯片,包括如权利要求1-23中任一项所述的运算与控制芯片和CPU,其中所述运算与控制芯片可为不同的算法需求配置不同的可编程数据流运算硬件以实现运算加速和/或降低功耗。
34.一种机器人控制芯片,包括如权利要求1-23中任一项所述的运算与控制芯片,用于机器人的控制与调度,其中外界接入的设备通过协议被自动识别或机器人的调度任务可自动下载,该设备的驱动电路配置和协议通过网络查询并自动下载以重构所述至少一个可编程运算结构。
35.一种工艺缺陷检测装置,包括如权利要求1-23中任一项所述的运算与控制芯片,用于工艺厂的良率检测。
36.一种基带处理装置,包括如权利要求1-23中任一项所述的运算与控制芯片,用于终端设备或网络设备基带数据处理,其中所述运算与控制芯片通过数据流运算实现并行处理。
37.一种SSD控制器,包括如权利要求1-23中任一项所述的运算与控制芯片,用于连接存储模块和CPU,SSD控制器配置为:
对于小量数据的串行运算,所述运算与控制芯片读取存储模块并传输给CPU;
对于大量数据的并行运算,所述运算与控制芯片接收CPU发送的用于至少一个可编程运算结构的配置,利用该配置重构,执行存储模块内部数据的并行运算,返回所述并行运算的结果给CPU,与存储实现单片封装。
38.一种图像传感控制器,包括如权利要求1-23中任一项所述的运算与控制芯片,用于图像传感器数据或雷达传感器数据的预处理,其中:
所述运算与控制芯片接收CPU发送的配置数据和读取指令,重构后的运算与控制芯片对图像传感器数据或雷达传感器数据进行运算,返回结果给CPU。
39.一种计算加速器,包括如权利要求1-23中任一项所述的运算与控制芯片,所述运算与控制芯片采用动态重构满足不同算法对于硬件加速的需求以用于云数据并行处理的加速。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/116804 WO2020103058A1 (zh) | 2018-11-21 | 2018-11-21 | 可编程运算与控制芯片、设计方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111433758A CN111433758A (zh) | 2020-07-17 |
CN111433758B true CN111433758B (zh) | 2024-04-02 |
Family
ID=70773615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880059121.XA Active CN111433758B (zh) | 2018-11-21 | 2018-11-21 | 可编程运算与控制芯片、设计方法及其装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210406437A1 (zh) |
CN (1) | CN111433758B (zh) |
WO (1) | WO2020103058A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737185A (zh) * | 2020-06-30 | 2020-10-02 | 飞诺门阵(北京)科技有限公司 | 一种网络设备 |
CN116113940A (zh) * | 2020-08-21 | 2023-05-12 | 华为技术有限公司 | 一种图计算装置、处理方法及相关设备 |
CN112859714A (zh) * | 2021-02-22 | 2021-05-28 | 广州科方生物技术股份有限公司 | 基于arm+fpga的化学发光分析平台控制系统及方法 |
CN112950806A (zh) * | 2021-03-23 | 2021-06-11 | 功智域控科技(苏州)有限公司 | 一种车载adas数据记录仪及其使用方法 |
CN115147861A (zh) * | 2021-03-31 | 2022-10-04 | 广东高云半导体科技股份有限公司 | 进行人物特征识别的人工智能系统及方法 |
CN113434455B (zh) * | 2021-06-22 | 2023-10-24 | 中国电子科技集团公司第十四研究所 | 一种基于fpga的光纤接口数据缓存管理方法 |
CN113496107B (zh) * | 2021-06-29 | 2024-04-09 | 山东华芯半导体有限公司 | 一种可综合的cpu模型 |
CN113656345B (zh) * | 2021-09-03 | 2024-04-12 | 西安紫光国芯半导体有限公司 | 一种计算器件、计算系统及计算方法 |
CN113918233A (zh) * | 2021-09-13 | 2022-01-11 | 山东产研鲲云人工智能研究院有限公司 | 一种ai芯片控制方法、电子设备及ai芯片 |
CN114996204B (zh) * | 2022-06-13 | 2023-04-14 | 北京中科昊芯科技有限公司 | 一种片上系统可配置装置 |
CN116151187B (zh) * | 2023-02-14 | 2024-01-19 | 芯华章科技(北京)有限公司 | 处理触发条件的方法、装置和存储介质 |
CN116737649B (zh) * | 2023-06-15 | 2024-06-07 | 上海国宇智链航天科技有限公司 | 商业航天器的多层冗余可重构计算系统和实现方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073481A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 多核dsp可重构专用集成电路系统 |
CN203706197U (zh) * | 2014-02-10 | 2014-07-09 | 东南大学 | 一种粗粒度动态可重构数据规整控制单元结构 |
CN104750660A (zh) * | 2015-04-08 | 2015-07-01 | 华侨大学 | 一种具有多工作模式的嵌入式可重构处理器 |
CN105512088A (zh) * | 2015-11-27 | 2016-04-20 | 中国电子科技集团公司第三十八研究所 | 一种可重构的处理器架构及其重构方法 |
CN105930596A (zh) * | 2016-04-27 | 2016-09-07 | 山东理工大学 | 非端部接触式少片根部加强型副簧根部厚度的设计方法 |
CN106569968A (zh) * | 2016-11-09 | 2017-04-19 | 天津大学 | 用于可重构处理器的阵列间数据传输结构与调度方法 |
CN106815178A (zh) * | 2017-01-20 | 2017-06-09 | 无锡十月中宸科技有限公司 | 基于可编程逻辑器件的高速可重构数据处理装置及方法 |
CN206258865U (zh) * | 2016-11-18 | 2017-06-16 | 成都嘉纳海威科技有限责任公司 | 一种可重构的信号处理器asic架构 |
WO2018121118A1 (zh) * | 2016-12-26 | 2018-07-05 | 上海寒武纪信息科技有限公司 | 计算装置和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
US6667636B2 (en) * | 2001-06-11 | 2003-12-23 | Lsi Logic Corporation | DSP integrated with programmable logic based accelerators |
CN201383145Y (zh) * | 2009-02-18 | 2010-01-13 | 江俊逢 | 一种可重构i/o芯片 |
CN103218345A (zh) * | 2013-03-15 | 2013-07-24 | 上海安路信息科技有限公司 | 可适应多种数据流计算模式的动态可重构系统及运作方法 |
WO2017020165A1 (zh) * | 2015-07-31 | 2017-02-09 | 吴国盛 | 自适应芯片和配置方法 |
CN105930598B (zh) * | 2016-04-27 | 2019-05-03 | 南京大学 | 一种基于控制器流水架构的层次化信息处理方法及电路 |
-
2018
- 2018-11-21 WO PCT/CN2018/116804 patent/WO2020103058A1/zh active Application Filing
- 2018-11-21 US US17/289,003 patent/US20210406437A1/en active Pending
- 2018-11-21 CN CN201880059121.XA patent/CN111433758B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073481A (zh) * | 2011-01-14 | 2011-05-25 | 上海交通大学 | 多核dsp可重构专用集成电路系统 |
CN203706197U (zh) * | 2014-02-10 | 2014-07-09 | 东南大学 | 一种粗粒度动态可重构数据规整控制单元结构 |
CN104750660A (zh) * | 2015-04-08 | 2015-07-01 | 华侨大学 | 一种具有多工作模式的嵌入式可重构处理器 |
CN105512088A (zh) * | 2015-11-27 | 2016-04-20 | 中国电子科技集团公司第三十八研究所 | 一种可重构的处理器架构及其重构方法 |
CN105930596A (zh) * | 2016-04-27 | 2016-09-07 | 山东理工大学 | 非端部接触式少片根部加强型副簧根部厚度的设计方法 |
CN106569968A (zh) * | 2016-11-09 | 2017-04-19 | 天津大学 | 用于可重构处理器的阵列间数据传输结构与调度方法 |
CN206258865U (zh) * | 2016-11-18 | 2017-06-16 | 成都嘉纳海威科技有限责任公司 | 一种可重构的信号处理器asic架构 |
WO2018121118A1 (zh) * | 2016-12-26 | 2018-07-05 | 上海寒武纪信息科技有限公司 | 计算装置和方法 |
CN106815178A (zh) * | 2017-01-20 | 2017-06-09 | 无锡十月中宸科技有限公司 | 基于可编程逻辑器件的高速可重构数据处理装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111433758A (zh) | 2020-07-17 |
WO2020103058A1 (zh) | 2020-05-28 |
US20210406437A1 (en) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111433758B (zh) | 可编程运算与控制芯片、设计方法及其装置 | |
US11893424B2 (en) | Training a neural network using a non-homogenous set of reconfigurable processors | |
US20220164285A1 (en) | Compensating for dram activation penalties | |
US11847395B2 (en) | Executing a neural network graph using a non-homogenous set of reconfigurable processors | |
US11182221B1 (en) | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
CN114586019A (zh) | 基于存储器的处理器 | |
US11714780B2 (en) | Compiler flow logic for reconfigurable architectures | |
JP2009505171A (ja) | ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置 | |
US11182264B1 (en) | Intra-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) | |
Paul et al. | MAHA: An energy-efficient malleable hardware accelerator for data-intensive applications | |
Yousefzadeh et al. | Energy-efficient in-memory address calculation | |
EP4268088A1 (en) | A network on chip processing system | |
Gao | Scalable Near-Data Processing Systems for Data-Intensive Applications | |
CN116755923A (zh) | 一种抗单粒子翻转的存算架构fpga | |
CN113344178A (zh) | 一种可实现多种神经网络中卷积计算的方法及硬件结构 |
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 | ||
GR01 | Patent grant |