CN107430586B - 自适应芯片和配置方法 - Google Patents

自适应芯片和配置方法 Download PDF

Info

Publication number
CN107430586B
CN107430586B CN201580077557.8A CN201580077557A CN107430586B CN 107430586 B CN107430586 B CN 107430586B CN 201580077557 A CN201580077557 A CN 201580077557A CN 107430586 B CN107430586 B CN 107430586B
Authority
CN
China
Prior art keywords
dynamic reconfigurable
adaptive chip
unit
chip
data
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
Application number
CN201580077557.8A
Other languages
English (en)
Other versions
CN107430586A (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.)
Qingdao Robei Electronics Co Ltd
Original Assignee
Qingdao Robei Electronics Co Ltd
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 Qingdao Robei Electronics Co Ltd filed Critical Qingdao Robei Electronics Co Ltd
Publication of CN107430586A publication Critical patent/CN107430586A/zh
Application granted granted Critical
Publication of CN107430586B publication Critical patent/CN107430586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17752Structural details of configuration resources for hot reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/1774Structural details of routing resources for global signals, e.g. clock, reset
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Logic Circuits (AREA)

Abstract

一种自适应芯片(100)和配置方法,包括:多个动态可重构单元(110),以阵列形式设置,每个动态可重构单元(110)可按需动态重配置为不同的运算功能和/或输入输出功能,其中,每个动态可重构单元(110)与多个相邻的动态可重构单元(110)连接,从所述多个相邻的动态可重构单元(110)中的一个或多个获得数据,将基于所述数据的运算结果输出给至少一个相邻的动态可重构单元(110)。可降低成本。

Description

自适应芯片和配置方法
技术领域
本公开涉及芯片及电子装置,尤其涉及一种自适应芯片及其配置方法和具有该自适应芯片的电子装置。
背景技术
科技的发展对芯片设计与制造提出了越来越高的要求,采用以IP核复用及其软硬件协同验证为技术支撑的系统级芯片(SoC),已成为高性能集成电路设计的主流方法。从芯片系统定义、前端电路设计、后端物理实现、芯片制造、封测到软件开发再到最终的量产也已演变成一个浩大的系统工程。目前,主流的芯片仍然是ASIC与FPGA芯片。
ASIC是应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC在批量生产时与通用集成电路相比具有体积小、功耗低等优点,但ASIC是一种不可重构的芯片,具有较长的上市时间,而且需要流片。一次流片费用非常高,只有量大情况下,成本才能降低。
FPGA基于ASIC,其基本原理是利用LUT(查找表)。LUT本质上是一个内存表,它把数据事先写入内存表后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。FPGA允许芯片结构可以静态重配置,甚至局部动态重配置,在上市时间上比ASIC优势明显,但是总体上仍旧需要将设计好的电路事先烧写进芯片里面。FPGA针对量小的应用成本比较低,但是量大的话,成本相对较高。
ASIC具有固定性,一旦设计完成,芯片功能就被固定下来。除非芯片损坏,否则ASIC的功能不会改变。这种芯片只能适应特定的功能,而不能随着需求的不同而改变,硬件的升级也基本不可能实现。如果芯片是为卫星设计,一旦卫星到达太空,想实现硬件的升级,要付出非常庞大的成本。
虽然FPGA公司能够提供一些可配置芯片,但是因为采用了查找表的方式,需要在写入芯片前,将所有的可能出现的数据计算出来,然后将这些庞大的数据写入到每个查找表中。这样,随着配置数据的增大,写入FPGA的时间就会越来越长。即使可以实现局部重配置,由于配置的数据量巨大,导致重配置的速度受到极大的限制,所以FPGA无法实现超快速的重配置。
随着芯片规模和设计复杂度的增大,芯片重配置的时间越来越长,很难利用现有的FPGA技术实现动态的实时重构。
因此,需要设计一种能够实现动态重新配置功能的自适应芯片,实现一芯多用的功能。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请公开一种自适应芯片及其配置方法和具有该自适应芯片的电子装置。根据本公开的自适应芯片可以实现快速动态重配置。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提供一种自适应芯片,包括:多个动态可重构单元,以阵列形式设置,每个动态可重构单元可按需动态重配置为执行不同的运算功能和/或输入输出控制功能,其中,每个动态可重构单元与多个相邻的动态可重构单元连接,从所述多个相邻的动态可重构单元中的一个或多个获得数据,将基于所述数据的运算结果输出给至少一个相邻的动态可重构单元。
根据一些实施例,每个动态可重构单元与四至八个相邻的动态可重构单元连接。
根据一些实施例,每个动态可重构单元包括算术逻辑时序单元,所述算术逻辑时序单元配置为实现算术运算、逻辑运算、空运算、时序延迟及计数中的至少一种。
根据一些实施例,每个动态可重构单元通过配置成相应的电路结构实现软件算法功能。
根据一些实施例,每个动态可重构单元还包括变量保持器、输入控制器、输出控制器。
根据一些实施例,所述算术逻辑时序单元配置为根据指令执行不同的运算功能。
根据一些实施例,每个指令的执行周期是一个时钟。
根据一些实施例,所述自适应芯片配置为通过动态可重构单元的级联实现操作的级联以实现更多的指令。
根据一些实施例,所述算术逻辑时序单元包括时钟输入端、重置端、多个指令输入端、多个操作输入端、多个操作输出端。
根据一些实施例,所述多个操作输入端包括多个被操作数输入端、多个操作数输入端、以及进位输入端。
根据一些实施例,所述多个操作输出端包括输出结果低位输出端、输出结果高位输出端、以及标志位输出端。
根据一些实施例,所述输入控制器用于控制所述多个操作输入端的数据来源。
根据一些实施例,所述数据来源为所述多个相邻的动态可重构单元至少之一或所述变量保持器。
根据一些实施例,所述输出控制器用于使来自所述多个操作输出端的数据以单独和/或合并的方式输出给所述多个相邻的动态可重构单元至少之一。
根据一些实施例,所述变量保持器用于寄存参与运算的数据。
根据一些实施例,所述变量保持器用于寄存指令、操作数、及输入控制器的配置数据,该配置数据用于控制所述输入控制器的数据来源。
根据一些实施例,所述变量保持器具有独立的数据通道以分别从顶层输入操作指令、输入控制器的配置数据和可寄存操作数。
根据一些实施例,所述自适应芯片用于以流水线或并行的方式实现串行运算的算法。
根据一些实施例,所述自适应芯片包括地址输入端子和地址控制单元,所述地址控制单元通过所述地址输入端子来选择多个动态可重构单元之一进行配置。
根据一些实施例,所述自适应芯片配置为:在配置一次之后,根据输入数据进行运算;运算完成后,擦除重配置,然后再根据新的输入数据进行新的运算,以此往复。
根据一些实施例,所述自适应芯片划分成至少两个运算区域,所述至少两个运算区域并行进行配置与运算,从而实现并行化处理。
根据本公开的另一方面,提供一种可用于前述任一自适应芯片的配置方法,包括:定义分别用于多个动态可重构单元的多个配置,每个配置包括至少一个配置参数值;将所述多个配置分别写入到相应的多个动态可重构单元中。
根据一些实施例,定义分别用于多个动态可重构单元的多个配置可包括:将预定运算编译为包括所述多个动态可重构单元的结构,每个动态可重构单元配置为完成至少一种运算。
根据一些实施例,将所述多个配置分别写入到相应的多个动态可重构单元包括:选定所述多个动态可重构单元之一,将相应配置的所述至少一个配置参数值写入到所述多个动态可重构单元之一。
根据本公开的另一方面,提供一种电子装置,用于执行至少第一功能和第二功能,所述电子装置可包括任一前述自适应芯片,其中:在所述第一功能将被执行或正被执行时,所述自适应芯片被动态配置为用于执行所述第一功能的部分或全部;在所述第一功能执行完毕之后,所述第二功能将被执行或正被执行时,所述自适应芯片被动态配置为用于执行所述第二功能的部分或全部。
根据本公开一些实施例的自适应芯片,通过在不同时间点对芯片进行自动重配置可以在有限的芯片面积上实现无限的电路算法。
根据本公开一些实施例的自适应芯片,可以根据应用要求不同,自动调整芯片内部结构,实现动态重配置,实现芯片面积的无限大,且功耗少,成本低。
根据本公开一些实施例的自适应芯片,由于可以动态重新擦写,所有逻辑单元可以重新利用,逻辑单元就成了无穷多,再也不受限制。自适应芯片只受重新擦写的速度限制,而没有容量限制。
根据本公开一些实施例的自适应芯片,可以分区域进行配置和运算,实现边配置边运算,运算完成后切换配置的时间可以快到纳秒级别。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,而不是限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它特征及优点将变得更加明显。
图1示出根据本公开一些示范性实施例的自适应芯片的示意图。
图2示出根据本公开一些示范性实施例的用于自适应芯片的动态可重构单元的示意图。
图3示出根据本公开一些示范性实施例的算术逻辑时序单元。
图4示出根据本公开一些示范性实施例的输入控制器。
图5示出根据本公开一些示范性实施例的输出控制器。
图6示出根据本公开一些示范性实施例的变量保持器。
图7示出根据本公开一些示范性实施例的地址控制器。
图8示出了根据本公开一些示范性实施例的包括自适应芯片的电子装置。
图9示出了根据本公开一些示范性实施例的自适应芯片的示意性配置与使用方式。
图10示出了根据本公开一些示范性实施例的自适应芯片的示意性配置与使用方式。
图11示出了根据本公开一些示范性实施例的自适应芯片的示意性配置与使用方式。
图12示出了根据本公开一些示范性实施例的自适应芯片的示意性配置与使用方式。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、模块、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、模块或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用各种形式来实现这些功能实体,或在一个或多个硬件模块或电路单元中实现这些功能实体。
图1示出根据本公开示例性实施例的自适应芯片的示意图。
如图1所示,自适应芯片100包括多个基本单元,即动态可重构单元110。动态可重构单元110以阵列形式设置,每个动态可重构单元110与多个相邻的动态可重构单元110连接。如下面将描述的,每个动态可重构单元110可按需动态重配置为不同的运算功能和/或输入输出功能。每个动态可重构单元110从一个或多个相邻的动态可重构单元110中获得数据,并可将基于这些数据的运算结果输出给至少一个相邻的动态可重构单元。
图1中示出每个动态可重构单元110与四个相邻的动态可重构单元110连接,但本公开不限于此。例如,每个动态可重构单元110可与四至八个甚至更多相邻的动态可重构单元110连接。
对于图1所示的每个动态可重构单元110,数据可以从4个不同的方向进出,即数据可来自相邻的四个不同动态可重构单元110,并可在运算后将结果输出到相邻的四个不同动态可重构单元110进行进一步的计算,以此类推,可动态构造一运算网络。动态可重构单元110通过配置成相应的电路结构,从而实现软件算法功能。
自适应芯片100在配置一次之后,根据输入数据进行运算。运算完成后,可擦除重配置,然后再根据新的输入数据进行新的运算,以此往复,达到芯片面积无限大的效果。
根据本公开的自适应芯中包括若干基本单元(动态可重构单元),每个基本单元可寄存配置数据,且与相邻的基本单元连接。根据配置,每个基本单元从一个或多个相邻的基本单元中获得数据,并可将基于这些数据的运算结果输出给至少一个相邻的基本单元。当数据传输进来的时候,根据配置进行运算。因此,本公开提供了可动态重配置的新型芯片,通过在不同时间点对芯片进行自动重配置,可以在有限的芯片面积上实现无限的电路算法。另外,可以根据应用要求不同,自动调整芯片内部结构,实现动态重配置,且功耗少,成本低。
如前所述,根据本公开的自适应芯可以根据配置进行不同的输入、输出和运算,因此可以快速实现软件算法直接到芯片结构的转变,相对于FPGA采用的LUT结构具有明显优势。FPGA在动态可重构方面受配置数据量大的困扰,所以FPGA动态重配置的速度难以提升,只能到毫秒级别。根据本公开的自适应芯片没有采用LUT结构,可以实现快速动态重新配置。根据本公开的自适应芯的基本单元可以重新利用,基本单元就成了无穷多,再也不受限制。自适应芯片只受重新擦写(配置)的速度限制,而没有容量限制。
图2示出根据本公开一些示范性实施例的用于自适应芯片100的动态可重构单元110。图3示出根据本公开示范性实施例的算术逻辑时序单元112。图4示出根据本公开一些示范性实施例的输入控制器114。图5示出根据本公开一些示范性实施例的输出控制器116。图6示出根据本公开一些示范性实施例的变量保持器118。
下面参照图2-6描述根据本公开示范性实施例的动态可重构单元110
如图2-6所示,动态可重构单元110可包括算术逻辑时序单元112。根据示范性实施例,动态可重构单元110还可包括输入控制器114、输出控制器116和变量保持器118。
算术逻辑时序单元110可包括时钟输入端子clk、重置端子rst、多个指令输入端子op、多个操作输入端子、多个操作输出端子。多个操作输入端子可包括多个被操作数输入端子A、多个操作数输入端子B、以及操作辅助输入端子cin。多个操作输出端子可包括输出结果低位输出端子D、输出结果高位输出端子E、以及标志位输出端子cout。
输入控制器114可用于控制所述多个操作输入端的数据来源。数据来源可为多个相邻的动态可重构单元110或变量保持器118。
输出控制器116可用于使来自多个操作输出端的数据以单独和/或合并的方式输出给多个相邻的动态可重构单元110。
算术逻辑时序单元112可根据输入的数据和配置执行算术运算、逻辑运算、空运算、时序延迟或计数,并输出运算结果。算术逻辑时序单元112的数据输入可由输入控制器114控制,且算术逻辑时序单元112的结果输出可由输出控制器116控制,但本公开不限于此。
变量保持器118可寄存参与运算的数据和配置参数值。例如,变量保持器可用于寄存指令、操作数、及输入控制器的配置数据。输入控制器的配置数据可用于控制输入控制器114的数据来源。
变量保持器118可具有独立的数据通道以分别从顶层输入指令、操作数及选通数据。
参照图3,根据示范性实施例的算数逻辑时序单元(Arithmetic Logic TimeUnit:ALTU)112主要负责实现算数运算、逻辑运算、时序延迟与计数。算数逻辑时序单元112可以实现16种不同的运算功能,其中包括10个逻辑运算功能、1个空运算、3个算术运算和2个时序运算功能。不同的运算功能通过一个4位的op输入进行控制。
每个端子的位宽和功能如表1所示。参照图3,clk用于时钟输入信号,rst用于重置信号,op用于操作指令,A、B、cin用于操作输入,D、E、cout用于操作输出。
图3和表1所示仅是为了说明本公开的技术方案,而不是限制本公开的范围。易于理解,基于本公开的内容和教导,还可提出各种实现方式和各种变型,而不是局限于本说明书中公开的实施例。
表1、算数逻辑时序单元端子
根据示范性实施例的算数逻辑时序单元112可配置为根据指令执行各种运算功能和操作,诸如直通操作、输入输出交换操作、按位取反操作、与或和逻辑与操作、补码操作,进位加操作、延迟操作、计数操作,等等,所列仅是示例,本公开不限于此。。
算数逻辑时序单元112是每个动态可重构单元110的核心部分,承载着所有的运算功能。每个算数逻辑时序单元112可执行16个指令中的一个,每个指令执行的周期可为1个时钟周期。动态可重构单元110可以级联以实现更多的指令。部分指令可以当作16位的操作,双操作数的指令做8位的运算。超过8位的运算可以通过多个动态可重构单元110级联来实现。
参照图4,输入控制器114控制算数逻辑时序单元112的输入端子A、B、cin的数据来源。通过select来控制输入数据的四个方向(即,相邻的动态可重构单元),这四个方向可用附图标记Top、Bottom、Left、Right表示。编码方式可例如通过以Top为0,Right为1,Bottom为2,Left为3的顺时针方向递增。四个方向可以通过2个比特的编码实现,例如,如表2所示。
表2、输入控制器的编码形式
方向 十进制 二进制
Top 0 00
Right 1 01
Bottom 2 10
Left 3 11
端子A、B和cin的输入数据的来源方向可以每个通过2个比特来控制,总共使用6个比特。但是B的数据来源除了这4个方向之外,还可以通过保持器内的Bmem来输入。因此select再增加一位作为最高位,当该位为1的时候,B的数据来源为变量保持器118内的Bmem的数值,如表3所示。
表3、Select控制信号
Select信号位 控制信号输入源
1:0 A
3:2 B
5:4 Cin
6 B或者Bmem
动态可重构单元110的数据通路主要依赖于输入控制器114。输入控制器114通过select信号来选择端子A、B和cin的数据来源,用于提供给算数逻辑时序单元112进行运算。端子A、B和cin的数据可以来源于同一个方向的输入,也可以来源于不同方向的输入。
参照图5,输出控制器116相对而言属于简单控制器,用于把输出的结果往四个方向传递。算数逻辑时序单元112的运算结果通过cout、D和E进入输出控制器后,经过输出控制器的组合,然后通过四个不同的方向输出。
参照图6,变量保持器118主要寄存3个重要的参与运算的数据,来自op端子的运算符,用来控制算数逻辑时序单元112进行运算;来自Bmem端子的寄存操作数;来自select端子的配置数据,用来控制输入控制器114的数据来源。select的最高位用来控制操作数来自顶层输入还是来自相邻的动态可重构单元的输出结果。当rst为低电平时,保持器重置,3个数据都清零。当rst和ce为高电平时,数据开始保持。每个变量保持器118的输入端都直接连接最顶层的数据输入通道,所以op、Bmem和select都有各自独立的数据通道,从顶层输入,而不需要通过方向控制来输入信号。Bmem、op和select都直接连接到顶层的输入端子。当ce为高电平时,顶层输入进入保持器,数据不被重写的时候,保持不变,并且通过regselect、regbmem和regop进行输出。当op的指令不为0时,可使能输入控制器。这里的“顶层”是指自适应芯片的端子,而不是相邻的单元。
图7示出根据本公开示范性实施例的地址控制器120。
参照图1和图7,可以通过地址控制器120来选择任一个动态可重构单元110来进行配置,配置后该动态可重构单元110自动运行。
如图7所示,地址控制器120有mode标志位端子和addr地址输入端子。当mode端子为1的时候,地址输入信息有效,否则无效。经过地址控制器120对地址的分析,分解成行和列两个信息。Row用来选定行,Column用来选定列,从而选定某一个动态可重构单元进行配置。然而,本公开不限于此,也可以采用其他方式进行配置。
例如,根据另一些实施例,由于根据本公开的自适应芯片的基本单元布置与液晶或OLED显示屏的像素设置类似,因此也可以通过类似逐像素显示的方式进行各基本单元的配置,此处不再赘述。
根据一些实施例,在配置自适应芯片时,首先定义分别用于多个动态可重构单元的多个配置,每个配置包括至少一个配置参数值;然后将所述多个配置分别写入到相应的多个动态可重构单元。
根据一些实施例,定义分别用于多个动态可重构单元的多个配置可包括将预定运算(例如,C程序)编译为包括所述多个动态可重构单元的结构,每个动态可重构单元配置为完成一种运算。
根据一些实施例,将所述多个配置分别写入到相应的多个动态可重构单元可包括选定所述多个动态可重构单元之一,然后将相应配置的所述至少一个配置参数值写入到所述多个动态可重构单元之一。
图8示出了其中应用有根据本公开的自适应芯片的电子装置。
如图8所示,根据本公开一些实施例的电子装置800可包括根据本公开的自适应芯片100,例如,电子装置800可以是可编程片上系统(SOPC)、移动终端、机器人系统,等等。
根据本公开的自适应芯片100是一种将空间和时间进行转换的系统,通过在不同时间点对芯片进行自动重配置可以在有限的芯片面积上实现无限的电路算法。传统的做法是将很多不同的应用集中在一起,做成SopC系统,非常庞大,要使用很多的芯片面积,导致成本上升,同时功耗也非常大。根据本公开的自适应芯片100利用非常小的芯片面积,通过在不同时间对芯片结构进行重配置,可以实现芯片面积的无限大。
例如,根据本实施例的电子装置800可用于执行至少第一功能和第二功能。在第一功能将被执行或正被执行时,自适应芯片110被动态配置为用于执行所述第一功能的部分或全部。在第一功能执行完毕之后,第二功能将被执行或正被执行时,自适应芯片110被动态配置为用于执行第二功能的部分或全部。
根据本实施例的电子装置800可以应用在航空航天、机器人、监控、消费电子和图像处理设备等领域。在上述领域中,芯片可以根据需要,自己调整内部电路结构,以适应不同的计算要求和环境变化。
例如,芯片可以让太空中的卫星进行硬件升级加速,针对不同的任务进行硬件优化,以及实现不同的太空任务。在机器人领域中,由于传统机器人的控制芯片功能固定,不能实现一芯多用功能,每个机器人生产出来只能做固定的用途,自适应芯片可以让同一个机器人具有不同的功能,甚至机器人的功能可以从网络上下载,动态配置后执行。在消费电子领域中,未来手机和电脑除了可以下载软件之外,也可以下载针对该软件优化过的硬件,对软件进行动态实时加速;在手机上网时可以优化网络传输速度,通话时可以配置成噪声过滤功能,游戏时可以配置成3D动画显示优化功能等。在大数据处理上,自适应芯片相比传统的云计算电脑在能耗上有非常大的节约,在成本上也会降低很多。例如,自适应芯片可以在摄像头启动的时候自动优化成适合图像处理加速架构的芯片。自适应芯片可以在监控摄像头的每个摄像头上进行图像预处理,进行危险人物自动比对并报警等,实现摄像头按照需要进行重配置。
图9示出了根据本公开的自适应芯片的示意性配置与使用方式。
下面参照图9,通过与CPU、FPGA的数据处理过程进行比较,描述根据公开的自适应芯片带来的优势。
对于CPU而言,需处理的信息数据从输入设备流经内存,由CPU进行处理。CPU执行读出数据、处理数据和往内存写数据3项基本工作。但在通常情况下,一条指令可以包含按明确顺序执行的许多操作,CPU的工作就是执行这些指令,每条指令需要消耗数个时钟周期。完成一条指令后,CPU的控制单元又将告诉指令读取器从内存中读取下一条指令来执行。这个过程不断快速地重复,快速地执行一条又一条指令,产生例如在显示器上所看到的结果。在处理这么多指令和数据的同时,由于数据转移时差和CPU处理时差,为了保证每个操作准时发生,CPU通过时钟控制着CPU所执行的每一个动作。时钟就像一个节拍器,它不停地发出脉冲,决定CPU的步调和处理时间,这就是我们所熟悉的CPU主频。主频数值越高,表明CPU的工作速度越快。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。通常情况下,FPGA利用小型查找表来实现组合逻辑。每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块。这些模块间利用金属连线互相连接或连接到I/O模块。FPGA基于ASIC,利用LUT的方式,LUT本质上是一个RAM,它把数据事先写入RAM后,每当输入一个信号就等于输入一个地址进行查表,找出地址对应的内容,然后输出。FPGA允许芯片结构可以静态重配置,甚至局部动态重配置,在上市时间上比ASIC优势明显。但是,仍旧需要将设计好的电路烧写进芯片里面。FPGA针对量小的应用成本比较低,但是量大的话,成本相对较高。
根据本公开的自适应芯片100是一个全新的架构,可以实现任意软件算法直接到芯片结构的转变。FPGA采用的LUT结构,在动态可重构方面受配置数据量大的困扰,所以FPGA动态重配置的速度不可能提升上去,只能到毫秒级别。但是根据本公开的自适应芯片本身由于可以动态重新擦写,所有逻辑单元可以重新利用,逻辑单元就成了无穷多,再也不受限制。根据本公开的自适应芯片就只受重新擦写的速度限制,而没有容量限制。
假定在图9所示的实施例中,有a个单位的数据任务需处理。
如果采用CPU方案,处理1个单位数据的算法需n个时钟,完成a个单位的数据任务所需时长为a*n。
如果采用FPGA方案,处理1个单位数据的算法需1个时钟,完成a个单位的数据任务所需时长为a。
根据本公开的自适应芯片100的处理过程参照图9,由处理器对自适应芯片100进行自动配置,自适应芯片处理1个单位数据的算法需1个时钟,完成a个单位的数据任务需进行m次配置,完成a个单位的数据任务所需时长为a*m+配置时间。在具体操作中,配置时间相对a*m数量级相差很大,基本可以忽略不计。
因此,从处理时长上看,a<a*m<a*n,即对a个单位的数据任务处理效率从高到低依次为:FPGA、自适应芯片、CPU。但是,FPGA随着处理数据量的增大,芯片面积增大,成本显著上升。因此,FPGA不可能做到无限大,对大中型数据处理与计算而言受到制约。但是根据本公开的自适应芯片本身由于可以动态重新配置,所有逻辑单元可以重新利用。因此,逻辑单元就成了无穷多,再也不受限制,适用于大中型数据运算处理。在处理效率与成本控制方面,具有无可比拟的优势。
图10示出了根据本公开的自适应芯片的示意性配置与使用方式。
根据本公开的自适应芯片100可划分成至少两个运算区域,所述至少两个运算区域并行进行配置与运算,从而实现并行化处理。例如,一个用于配置,一个用于计算,配置完成后可以立即切换,原来用于计算的可以再配置,刚配置好的可以直接输入数据进行计算。切换时间非常短,可以控制在纳秒时间等级。因此,可以实现边配置边运算,且运算完成后切换配置的时间可以快到纳秒级别,大大提高了数据处理能力。
如图10所示,根据本实施例的自适应芯片100配合双核处理器一起使用。处理器的每个核的指令执行是单指令方式,一次只能执行一条指令。自适应芯片内部设置运算区域101和运算区域102,通过多核处理器的一个核1001来配置其中一个区域,当配置完成后,处理器的另外一个核1002向配置完成的自适应芯片部分配送大数据进行运算,而负责配置的处理器核1001可以继续配置另外一个自适应芯片部分。当一个部分的大数据运算处理完毕,可以直接切换到新的自适应芯片区域去处理新的数据。这种方式可以实现一芯多用,平行化处理数据,大大提升速度。当然,自适应芯片内部也可以设置多个运算区域,原理同本实施例。
图11和12示出了根据本公开的自适应芯片的示意性配置与使用方式。
在例如对一些大数据场合的数据进行处理运算时,可以将根据本公开的自适应芯片串联或并联使用。参照图7,将多个自适应芯片1120~1170串联使用,用来增加每次利用CPU1110重配置的时候可用的面积。参照图8,将多个自适应芯片1220~11260并联使用,并可利用CPU 1210进行配置,多个自适应芯片可以同时处理数据,大大增加处理速度。
综上所述,根据本公开实施例的自适应芯片,具有以下优点中的一种或多种:
第一、自适应芯设置若干基本单元(动态可重构单元),每个基本单元寄存配置数据,且与相邻的基本单元连接。当数据传输进来的时候,根据配置选择不同的输入通道并进行运算,并将运算结果发送到相邻的基本单元中。因此,本公开提供了可动态重配置的新型芯片,通过在不同时间点对芯片进行自动重配置,可以在有限的芯片面积上实现无限的电路算法。另外,可以根据应用要求不同,自动调整芯片内部结构,实现动态重配置,达到芯片面积无限大的效果,且功耗少,成本低。
第二、自适应芯片基于全新的架构,可以快速实现软件算法直接到芯片结构的转变,相对于FPGA采用的LUT结构具有明显优势。FPGA在动态可重构方面受配置数据量大的困扰,所以FPGA动态重配置的速度难以提升,只能到毫秒级别。根据本公开的自适应芯片没有采用LUT结构,可以实现快速动态重新配置。由于可以动态重新擦写,所有逻辑单元可以重新利用,逻辑单元就成了无穷多,再也不受限制。自适应芯片只受重新擦写的速度限制,而没有容量限制。
第三、自适应芯片可以实现边应用边开发升级,降低成本。使硬件可以像软件一样可以下载,允许硬件自动升级。
第四、自适应芯片可以分区域进行配置和运算,实现边配置边运算,运算完成后切换配置的时间可以快到纳秒级别。如果传统的SOC相当于模拟世界,自适应芯片就是数字世界,当数字采样足够快,也就是自适应芯片切换足够快,就可以近似还原到模拟的信号,也就是无穷大的集成电路面积。
第五、配置时只需要将类似于图像像素结构的配置参数值传输进芯片,不需要改变配置的基本单元,不需要进行大数据量的配置传输,因为配置一个单元只要几十个bit。因此节省了时间。同时,配置内容非常少,传输时间就非常短。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开实施的范围,即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。
本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。

Claims (23)

1.一种自适应芯片,包括:
多个动态可重构单元,以阵列形式设置,每个动态可重构单元可按需动态重配置为执行不同的运算功能和/或输入输出控制功能,
其中,每个动态可重构单元与多个相邻的动态可重构单元连接与交互数据,从所述多个相邻的动态可重构单元中的一个或多个获得数据,将基于所述数据的运算结果输出给至少一个相邻的动态可重构单元;
其中每个动态可重构单元包括算术逻辑时序单元,所述算术逻辑时序单元配置为实现算术运算、逻辑运算、空运算、时序延迟及计数中的至少一种;
其中每个动态可重构单元还包括变量保持器、输入控制器、输出控制器。
2.如权利要求1所述的自适应芯片,其中每个动态可重构单元与四至八个相邻的动态可重构单元连接。
3.如权利要求1所述的自适应芯片,其中每个动态可重构单元通过配置成相应的电路结构实现软件算法功能。
4.如权利要求1所述的自适应芯片,其中所述算术逻辑时序单元配置为根据指令执行不同的运算功能。
5.如权利要求4所述的自适应芯片,其中每个指令的执行周期是一个时钟。
6.如权利要求4所述的自适应芯片,其中所述自适应芯片配置为通过动态可重构单元的级联实现操作的级联以实现更多的指令。
7.如权利要求1所述的自适应芯片,其中所述算术逻辑时序单元包括时钟输入端、重置端、多个指令输入端、多个操作输入端、多个操作输出端。
8.如权利要求7所述的自适应芯片,其中所述多个操作输入端包括多个被操作数输入端、多个操作数输入端、以及进位输入端。
9.如权利要求7所述的自适应芯片,其中所述多个操作输出端包括输出结果低位输出端、输出结果高位输出端、以及标志位输出端。
10.如权利要求7所述的自适应芯片,其中所述输入控制器用于控制所述多个操作输入端的数据来源。
11.如权利要求10所述的自适应芯片,其中所述数据来源为所述多个相邻的动态可重构单元至少之一或所述变量保持器。
12.如权利要求7所述的自适应芯片,其中所述输出控制器用于使来自所述多个操作输出端的数据以单独和/或合并的方式输出给所述多个相邻的动态可重构单元至少之一。
13.如权利要求1所述的自适应芯片,其中所述变量保持器用于寄存参与运算的数据。
14.如权利要求7所述的自适应芯片,其中所述变量保持器用于寄存指令、操作数、及输入控制器的配置数据,该配置数据用于控制所述输入控制器的数据来源。
15.如权利要求14所述的自适应芯片,其中所述变量保持器具有独立的数据通道以分别从顶层输入操作指令、输入控制器的配置数据和可寄存操作数。
16.如权利要求1所述的自适应芯片,其中所述自适应芯片用于以流水线或并行的方式实现串行运算的算法。
17.如权利要求1所述的自适应芯片,其中所述自适应芯片包括地址输入端子和地址控制单元,所述地址控制单元通过所述地址输入端子来选择多个动态可重构单元之一进行配置。
18.如权利要求1所述的自适应芯片,其中所述自适应芯片配置为:在配置一次之后,根据输入数据进行运算;运算完成后,擦除重配置,然后再根据新的输入数据进行新的运算,以此往复。
19.如权利要求1所述的自适应芯片,其中所述自适应芯片划分成至少两个运算区域,所述至少两个运算区域并行进行配置与运算,从而实现并行化处理。
20.一种用于如权利要求1-19中任一项所述的自适应芯片的配置方法,包括:
定义分别用于多个动态可重构单元的多个配置,每个配置包括至少一个配置参数值;
将所述多个配置分别写入到相应的多个动态可重构单元中。
21.如权利要求20所述的配置方法,其中定义分别用于多个动态可重构单元的多个配置包括:将预定运算编译为包括所述多个动态可重构单元的结构,每个动态可重构单元配置为完成至少一种运算。
22.如权利要求20所述的配置方法,将所述多个配置分别写入到相应的多个动态可重构单元包括:选定所述多个动态可重构单元之一,将相应配置的所述至少一个配置参数值写入到所述多个动态可重构单元之一。
23.一种电子装置,用于执行至少第一功能和第二功能,所述电子装置包括如权利要求1-19任一项所述的自适应芯片,其中:
在所述第一功能将被执行或正被执行时,所述自适应芯片被动态配置为用于执行所述第一功能的部分或全部;
在所述第一功能执行完毕之后,所述第二功能将被执行或正被执行时,所述自适应芯片被动态配置为用于执行所述第二功能的部分或全部。
CN201580077557.8A 2015-07-31 2015-07-31 自适应芯片和配置方法 Active CN107430586B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/085701 WO2017020165A1 (zh) 2015-07-31 2015-07-31 自适应芯片和配置方法

Publications (2)

Publication Number Publication Date
CN107430586A CN107430586A (zh) 2017-12-01
CN107430586B true CN107430586B (zh) 2018-08-21

Family

ID=57942250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580077557.8A Active CN107430586B (zh) 2015-07-31 2015-07-31 自适应芯片和配置方法

Country Status (5)

Country Link
US (1) US10693466B2 (zh)
JP (1) JP2018530040A (zh)
CN (1) CN107430586B (zh)
CA (1) CA2994188C (zh)
WO (1) WO2017020165A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108388516B (zh) * 2018-03-14 2021-07-23 上海微小卫星工程中心 可重构fpga软件的专用验证测试系统
JP7176323B2 (ja) * 2018-09-25 2022-11-22 株式会社デンソー 車両制御装置
CN109145517B (zh) * 2018-10-08 2022-10-28 华大恒芯科技有限公司 一种芯片设计工程改变命令eco方法
CN111433758B (zh) * 2018-11-21 2024-04-02 吴国盛 可编程运算与控制芯片、设计方法及其装置
CN109902040B (zh) * 2019-02-01 2021-05-14 京微齐力(北京)科技有限公司 一种集成fpga和人工智能模块的系统芯片
CN109902037B (zh) * 2019-02-01 2021-09-28 京微齐力(北京)科技有限公司 连接不同时钟域下的fpga和人工智能模块的系统芯片
CN111611195A (zh) * 2019-02-26 2020-09-01 北京知存科技有限公司 可软件定义存算一体芯片及其软件定义方法
CN110515891B (zh) * 2019-10-22 2020-02-14 广东高云半导体科技股份有限公司 一种fpga芯片及其配置方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236632A (zh) * 2011-05-27 2011-11-09 清华大学 一种层次化描述动态可重构处理器配置信息的方法
CN102279753A (zh) * 2011-09-08 2011-12-14 无锡东集电子有限责任公司 可重构系统配置管理的方法及用于可重构系统的配置管理单元
CN102306141A (zh) * 2011-07-18 2012-01-04 清华大学 一种描述动态可重构阵列配置信息的方法
CN102567279A (zh) * 2011-12-22 2012-07-11 清华大学 一种动态可重构阵列时序配置信息的生成方法
CN102662765A (zh) * 2012-04-28 2012-09-12 中国科学技术大学 一种运行效率指导的可重构多核处理器的资源分配方法
CN103942181A (zh) * 2014-03-31 2014-07-23 清华大学 用于生成动态可重构处理器的配置信息的方法、装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993008538A1 (en) 1991-10-17 1993-04-29 Kawasaki Steel Corporation Processor for neural network
US5581981A (en) * 1993-11-12 1996-12-10 Thiele Engineering Company Method of packaging toothbrushes
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
AU2002220600A1 (en) * 2000-10-06 2002-04-15 Pact Informationstechnologie Gmbh Cell system with segmented intermediate cell structure
JP2006519548A (ja) 2003-02-19 2006-08-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ プログラム可能な論理セルのアレイをもつ電子回路
JP4423953B2 (ja) 2003-07-09 2010-03-03 株式会社日立製作所 半導体集積回路
JP2006053687A (ja) 2004-08-10 2006-02-23 Sony Corp 演算装置
WO2008023342A1 (en) * 2006-08-25 2008-02-28 Nxp B.V. Configurable logic device
US20090077153A1 (en) * 2007-09-14 2009-03-19 Cswitch Corporation Reconfigurable arithmetic unit
JP5355152B2 (ja) 2009-03-10 2013-11-27 三菱電機株式会社 動的再構成装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236632A (zh) * 2011-05-27 2011-11-09 清华大学 一种层次化描述动态可重构处理器配置信息的方法
CN102306141A (zh) * 2011-07-18 2012-01-04 清华大学 一种描述动态可重构阵列配置信息的方法
CN102279753A (zh) * 2011-09-08 2011-12-14 无锡东集电子有限责任公司 可重构系统配置管理的方法及用于可重构系统的配置管理单元
CN102567279A (zh) * 2011-12-22 2012-07-11 清华大学 一种动态可重构阵列时序配置信息的生成方法
CN102662765A (zh) * 2012-04-28 2012-09-12 中国科学技术大学 一种运行效率指导的可重构多核处理器的资源分配方法
CN103942181A (zh) * 2014-03-31 2014-07-23 清华大学 用于生成动态可重构处理器的配置信息的方法、装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DTSER:UNIFYING FUNCTIONALITY AND PARALLELISM SPECIALIZATION FOR ENERGY-EFFICIENT COMPUTING;Venkatraman Govindrarju 等;《IEEE Computer Society》;20120930;第32卷(第5期);第38-51页 *
Memory Access Optimization in Compilation for Coarse-Grained Reconfigurable Architectures;YONGJOO KIM 等;《ACM Transactions on Design Attomation of Electronic Systems》;20111031;第16卷(第4期);第42:1-42:26页 *

Also Published As

Publication number Publication date
US10693466B2 (en) 2020-06-23
WO2017020165A1 (zh) 2017-02-09
CA2994188C (en) 2021-05-25
CN107430586A (zh) 2017-12-01
CA2994188A1 (en) 2017-02-09
US20190007049A1 (en) 2019-01-03
JP2018530040A (ja) 2018-10-11

Similar Documents

Publication Publication Date Title
CN107430586B (zh) 自适应芯片和配置方法
US9164952B2 (en) Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6538470B1 (en) Devices and methods with programmable logic and digital signal processing regions
Ma et al. Automatic compilation of diverse CNNs onto high-performance FPGA accelerators
CN103677739B (zh) 一种可配置的乘累加运算单元及其构成的乘累加运算阵列
US8533431B2 (en) Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
CN105468335A (zh) 流水级运算装置、数据处理方法及片上网络芯片
US7752419B1 (en) Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
WO2010088017A1 (en) Digital signal processing block with preadder stage
CN109284824A (zh) 一种基于可重构技术的用于加速卷积和池化运算的装置
US20070074001A1 (en) Reconfigurable integrated circuit device
Suzuki et al. Stream applications on the dynamically reconfigurable processor
US11507531B2 (en) Apparatus and method to switch configurable logic units
CN109993272A (zh) 卷积及降采样运算单元、神经网络运算单元和现场可编程门阵列集成电路
CN103078729B (zh) 基于fpga的双精度混沌信号发生器
CN112149047A (zh) 数据的处理方法及装置、存储介质和电子装置
CN202395792U (zh) 基于fpga的双精度混沌信号发生器
CN101827044B (zh) 一种基于混合qr分解的最小二乘fpga求解装置
CN1954311A (zh) 可重配置电路及可重配置电路的控制方法
Wang et al. A DSP48-based reconfigurable 2-D convolver on FPGA
Cardarilli et al. Fine-grain reconfigurable functional unit for embedded processors
CN112100955A (zh) 一种信号传输方法及装置
EP3392760B1 (en) Dense digital arithmetic circuitry utilization for fixed-point machine learning
Ito et al. A uniform partitioning method for Mono-Instruction Set Computer (MISC)
Vignesh et al. Implementation of Multiple Kernels for Edge Detection using Pipelined Architecture on FPGA

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant