CN112633505A - 一种基于risc-v的人工智能推理方法和*** - Google Patents
一种基于risc-v的人工智能推理方法和*** Download PDFInfo
- Publication number
- CN112633505A CN112633505A CN202011554149.6A CN202011554149A CN112633505A CN 112633505 A CN112633505 A CN 112633505A CN 202011554149 A CN202011554149 A CN 202011554149A CN 112633505 A CN112633505 A CN 112633505A
- Authority
- CN
- China
- Prior art keywords
- vector
- instruction
- data
- memory
- 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
Links
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 61
- 238000000034 method Methods 0.000 title claims abstract description 55
- 239000013598 vector Substances 0.000 claims abstract description 326
- 230000015654 memory Effects 0.000 claims abstract description 81
- 238000012545 processing Methods 0.000 claims abstract description 77
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000007613 environmental effect Effects 0.000 claims description 20
- 230000004913 activation Effects 0.000 claims description 17
- 238000009825 accumulation Methods 0.000 claims description 13
- 238000007781 pre-processing Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 abstract description 13
- 239000011159 matrix material Substances 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 5
- 241000282326 Felis catus Species 0.000 description 4
- 230000017105 transposition Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000017525 heat dissipation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种基于RISC‑V的人工智能推理方法和***,方法包括:直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;从存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;反馈处理过的向量数据以完成推理。本发明能够将RISC‑V指令集应用到AI芯片的推理计算中,便于人工智能推理的应用和落地。
Description
技术领域
本发明涉及人工智能领域,更具体地,特别是指一种基于RISC-V的人工智能推理方法和***。
背景技术
目前,人工智能(AI)芯片大致的分类如下:从应用场景角度看,AI芯片主要有两个方向,一个是在数据中心部署的云端,一个是在消费者终端部署的终端。从功能角度看,AI芯片主要做两个事情,一是Training(训练),二是Inference(推理)。目前AI芯片的大规模应用分别在云端和终端。云端的AI芯片同时做两个事情:Training和Inference。Training即用大量标记过的数据来“训练”相应的***,使之可以适应特定的功能,比如给***海量的“猫”的图片,并告诉***这个就是“猫”,之后***就“知道”什么是猫了;Inference即用训练好的***来完成任务,接上面的例子,就是你将一张图给之前训练过的***,让它得出这张图是不是猫这样的结论。
云端的AI芯片目前主要是GPU,由于训练需要的数据量大、算力大、功耗大,需要大规模的散热,Training将在很长一段时间里集中在云端,Inference的完成目前也主要集中在云端,但随着越来越多厂商的努力,很多的应用将逐渐转移到终端,如目前应用比较多的自动驾驶芯片。
在终端完成Inference,主要是满足终端低延时的需求,云端推理的延时与网络相关,一般延时较大,难以满足终端(如自动驾驶)的需求;满足终端多样化需求;以及初步筛选终端的数据,将有效数据传送到云端等等。
RISC-V是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件而不必支付给任何公司专利费。虽然这不是第一个开源指令集,但它具有重要意义,因为其设计使其适用于现代计算设备(如仓库规模云计算机、高端移动电话和微小嵌入式***)。设计者考虑到了这些用途中的性能与功率效率。该指令集还具有众多支持的软件,这解决了新指令集通常的弱点。
RISC-V指令集的设计考虑了小型、快速、低功耗的现实情况来实做,但并没有对特定的微架构做过度的设计。指令集因为位于硬件和软件之间,所以是电脑主要的沟通桥梁,因此如果有一个设计良好的指令集是开源而且可以被任何人使用的,就可以让更多的资源能够重复利用,而大大的减少软件的成本。而这样的指令集也会增加硬件供应商市场的竞争力,因为硬件供应商们可以挪用更多资源来进行设计,减少处理软件支持的事务。然而,RISC-V指令集缺少处理器的硬件设计和软件支持,导致其不能用作AI芯片的推理计算。
针对现有技术中RISC-V指令集缺少处理器的硬件设计和软件支持、不能用作AI芯片的推理计算的问题,目前尚无有效的解决方案。
发明内容
有鉴于此,本发明实施例的目的在于提出一种基于RISC-V的人工智能推理方法和***,能够将RISC-V指令集应用到AI芯片的推理计算中,便于人工智能推理的应用和落地。
基于上述目的,本发明实施例的第一方面提供了一种基于RISC-V的人工智能推理方法,包括执行以下步骤:
通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;
从存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;
响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;
反馈处理过的向量数据以完成推理。
在一些实施方式中,存储器包括向量数据存储器、指令存储器、和标量数据存储器;寄存器包括向量寄存器和标量寄存器。
在一些实施方式中,基于指令将数据从存储器加载到对应的寄存器包括:基于环境参数确定单次向量操作个数,以使用指令中的向量加载指令将单次向量操作个数个向量数据加载到向量寄存器。
在一些实施方式中,方法还包括:由卷积控制单元基于指令中的寄存器配置指令确定环境参数,环境参数包括向量有效位宽、向量寄存器每组个数、寄存器位宽、和当前需要操作向量个数;
基于环境参数确定单次向量操作个数包括:基于寄存器位宽除以向量有效位宽乘以向量寄存器每组个数而确定允许操作向量最大个数,并将允许操作向量最大个数和当前需要操作向量个数中的较小值确定为单次向量操作个数。
在一些实施方式中,由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据包括:
响应于向量寄存器有数据、向量处理单元的影子寄存器为空、并且卷积控制单元允许,将向量数据从向量寄存器缓存到影子寄存器;
在影子寄存器中依次对向量数据执行重排序处理和预处理,并存入向量处理单元的乘法器输入缓存;
由向量处理单元的乘法器阵列从乘法器输入缓存获取向量数据以在卷积控制单元的控制下执行乘积运算;
由向量处理单元的乘积累加器从乘法器阵列获取向量数据以在卷积控制单元的控制下执行累加运算;
由向量处理单元的向量激活单元从乘积累加器获取向量数据以在卷积控制单元的控制下使用查找表执行非线性向量运算。
在一些实施方式中,方法还包括:由卷积控制单元基于指令中的查找表激活指令为向量激活单元配置查找表的缓存区;
由卷积控制单元基于指令中的实时控制指令使向量数据选择性地执行乘积运算、累加运算、或非线性向量运算。
在一些实施方式中,方法还包括执行以下步骤:
响应于指令是标量指令,而基于标量指令在算数/逻辑运算单元处理对应的标量数据;
反馈处理过的标量数据以完成推理。
本发明实施例的第二方面提供了一种基于RISC-V的人工智能推理***,包括:
处理器;和
存储器,存储有处理器可运行的程序代码,程序代码在被运行时执行以下步骤:
通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;
从存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;
响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;
反馈处理过的向量数据以完成推理。
在一些实施方式中,存储器包括向量数据存储器、指令存储器、和标量数据存储器;寄存器包括向量寄存器和标量寄存器;基于指令将数据从存储器加载到对应的寄存器包括:基于环境参数确定单次向量操作个数,以使用指令中的向量加载指令将单次向量操作个数个向量数据加载到向量寄存器;
步骤还包括:由卷积控制单元基于指令中的寄存器配置指令确定环境参数,环境参数包括向量有效位宽、向量寄存器每组个数、寄存器位宽、和当前需要操作向量个数;基于环境参数确定单次向量操作个数包括:基于寄存器位宽除以向量有效位宽乘以向量寄存器每组个数而确定允许操作向量最大个数,并将允许操作向量最大个数和当前需要操作向量个数中的较小值确定为单次向量操作个数。
在一些实施方式中,由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据包括:响应于向量寄存器有数据、向量处理单元的影子寄存器为空、并且卷积控制单元允许,将向量数据从向量寄存器缓存到影子寄存器;在影子寄存器中依次对向量数据执行重排序处理和预处理,并存入向量处理单元的乘法器输入缓存;由向量处理单元的乘法器阵列从乘法器输入缓存获取向量数据以在卷积控制单元的控制下执行乘积运算;由向量处理单元的乘积累加器从乘法器阵列获取向量数据以在卷积控制单元的控制下执行累加运算;由向量处理单元的向量激活单元从乘积累加器获取向量数据以在卷积控制单元的控制下使用查找表执行非线性向量运算。
本发明具有以下有益技术效果:本发明实施例提供的基于RISC-V的人工智能推理方法和***,通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;从获取存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;反馈处理过的向量数据以完成推理的技术方案,能够将RISC-V指令集应用到AI芯片的推理计算中,便于人工智能推理的应用和落地。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于RISC-V的人工智能推理方法的流程示意图;
图2为本发明提供的基于RISC-V的人工智能推理方法的模块示意图;
图3为本发明提供的基于RISC-V的人工智能推理方法的指令获取流程图;
图4为本发明提供的基于RISC-V的人工智能推理方法的向量处理单元结构图;
图5为本发明提供的基于RISC-V的人工智能推理方法的向量重排序流程图;
图6为本发明提供的基于RISC-V的人工智能推理方法的向量处理单元整体流程图;
图7为本发明提供的基于RISC-V的人工智能推理方法的卷积控制单元示意图;
图8为本发明提供的基于RISC-V的人工智能推理方法的处理器片上互联结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种便于人工智能推理的应用和落地的基于RISC-V的人工智能推理方法的一个实施例。图1示出的是本发明提供的基于RISC-V的人工智能推理方法的流程示意图。
所述的基于RISC-V的人工智能推理方法,如图1所示,包括执行以下步骤:
步骤S101,通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;
步骤S103,从存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;
步骤S105,响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;
步骤S107,反馈处理过的向量数据以完成推理。
本发明公开了一种基于RISC-V指令集的AI推理芯片架构,能够完成卷积计算或矩阵计算,也可以作为AI推理加速器、协助处理器完成卷积/矩阵计算。由于完全兼容RISC-V精简指令集,本发明可以在RISC-V软件工具链上做进一步的开发,因而大大减小了软件工具链的开发难度。本发明设计核心是基于RISC-V指令集的卷积运算架构,可以完成标量运算、向量运算、卷积运算、矩阵运算、非线性激活运算等,能够满足人工智能推理的所有计算需求。本发明的芯片也可以通过片上网格(Mesh)互联网络(NoC)互联起来,组成更大算力的架构,满足不同的终端算力需求。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
在一些实施方式中,存储器包括向量数据存储器、指令存储器、和标量数据存储器;寄存器包括向量寄存器和标量寄存器。
在一些实施方式中,基于指令将数据从存储器加载到对应的寄存器包括:基于环境参数确定单次向量操作个数,以使用指令中的向量加载指令将单次向量操作个数个向量数据加载到向量寄存器。
在一些实施方式中,方法还包括:由卷积控制单元基于指令中的寄存器配置指令确定环境参数,环境参数包括向量有效位宽、向量寄存器每组个数、寄存器位宽、和当前需要操作向量个数;
基于环境参数确定单次向量操作个数包括:基于寄存器位宽除以向量有效位宽乘以向量寄存器每组个数而确定允许操作向量最大个数,并将允许操作向量最大个数和当前需要操作向量个数中的较小值确定为单次向量操作个数。
在一些实施方式中,由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据包括:
响应于向量寄存器有数据、向量处理单元的影子寄存器为空、并且卷积控制单元允许,将向量数据从向量寄存器缓存到影子寄存器;
在影子寄存器中依次对向量数据执行重排序处理和预处理,并存入向量处理单元的乘法器输入缓存;
由向量处理单元的乘法器阵列从乘法器输入缓存获取向量数据以在卷积控制单元的控制下执行乘积运算;
由向量处理单元的乘积累加器从乘法器阵列获取向量数据以在卷积控制单元的控制下执行累加运算;
由向量处理单元的向量激活单元从乘积累加器获取向量数据以在卷积控制单元的控制下使用查找表执行非线性向量运算。
在一些实施方式中,方法还包括:由卷积控制单元基于指令中的查找表激活指令为向量激活单元配置查找表的缓存区;
由卷积控制单元基于指令中的实时控制指令使向量数据选择性地执行乘积运算、累加运算、或非线性向量运算。
在一些实施方式中,方法还包括执行以下步骤:
响应于指令是标量指令,而基于标量指令在算数/逻辑运算单元处理对应的标量数据;
反馈处理过的标量数据以完成推理。
下面根据具体实施例进一步阐述本发明的具体实施方式。
本发明的架构顶层原理图参见图2。如图2所示,本发明包括DMA(直接存储器访问)接口、标量数据存储单元、指令存储单元、向量存储单元、指令取指、指令译码、指令预测、32个标量寄存器、32个向量寄存器、控制寄存器、标量算术逻辑单元、向量处理单元、卷积控制单元以及乘法器阵列。
DMA接口负责将DDR(内存储器)中的指令与数据加载到相应的存储单元;标量/向量/指令存储单元都是紧密耦合存储器,相比于缓存(cache)而言,这种紧密耦合存储器功耗低、延时固定,不存在cache不命中的情况,可以满足处理器的实时性、可靠性的需求。
取指/译码/预测单元是处理器从指令存储单元中读取指令、指令译码、分支预测的过程。参见图3所示取指简图,取指后处理器判断取出的指令是向量指令还是标量指令,然后做向量/标量的数据加载、执行、写回的过程。此单元还有指令预测功能,每条指令取出之后,就会生成下一条指令地址,若预译码单元判断出本条指令为分支指令,处理器会重新计算下一条指令的地址,并取出备用。
向量寄存器/标量寄存器是RISC-V架构中规定的寄存器。标量寄存器为32个32位寄存器,向量寄存器是32个位宽可自定义的向量寄存器。标量寄存器的功能有缓存函数调用返回地址、堆指针、临时变量、函数参数或返回值等。向量寄存器是用于缓存向量数据变量、掩码数据、中间计算结果等。该处理器中的向量功能单元和标量功能单元共用处理器的配置寄存器和状态寄存器。
其中,标量算术逻辑单元完成标量算术/逻辑运算;向量处理单元主要完成除卷积/乘积之外的向量运算,如矩阵转置、变形、非线性运算、向量累加等功能;卷积控制单元负责向量指令译码、模块寄存器配置、非线性函数查找表缓存、向量逻辑控制等;乘法器阵列单元主要完成卷积和矩阵乘的功能,内部集成了8个(自定义数量)乘法器模块,每个模块集成了64个8位乘法器(乘法器数量根据架构自定义)。
具体地,向量处理单元的结构详见图4。向量寄存器的位宽N是硬件设计时确定下的寄存器长度,如N=128、512或1024等。整个数据处理流程如下:
1)用指令vsetvli(RISC-V指令集向量大小设置命令)设置向量有效位宽SEW,以及每组中向量寄存器的个数LMUL,当前需要操作的向量个数Nw,允许操作的最大向量个数为Ne;由于向量寄存器的限制,Ne为(N/SEW)*LMUL;若Nw>Ne,则每次操作的向量个数为Ne,若Nw小于或等于Ne,则每次操作的向量个数为Nw。
2)用向量加载指令(如vlen.v(n=8,16,32,…))加载向量数据到向量寄存器中。
3)向量数据被缓存到影子寄存器中。影子寄存器是用于缓存向量寄存器中的数据,受向量加载指令、卷积控制和自身状态共同控制。当向量寄存器中有了新数据,且卷积允许运行,且影子寄存器空状态,才允许把向量寄存器中的数据加载到影子寄存器中。
4)影子寄存器中的向量根据卷积控制单元的配置在向量重排序单元中进行数据重排序,以如图5所示的方式将二维矩阵转换为3维矩阵,根据矩阵乘的原理,增加矩阵数据的重复利用率。数据重排序单元还有矩阵转置等功能,负责使数据的排列满足乘法器直接调用的需求。
5)向量预处理负责将向量进行缩放、偏移、截取等。
6)处理好的数据,进入乘法器输入缓存中。缓存的目的是:如上图所示的矩阵乘,第一个矩阵的行数据要与第二个矩阵的所有的列数据相乘,得到输出矩阵的行数据,这个过程中很多数据可以复用,因此设置一个输入缓存单元,缓存复用数据。这种机制可以有效减少处理器对DDR的访问次数,降低了处理器对DDR带宽的需求。
7)缓存的数据进入乘法器阵列做乘积运算。乘法器阵列是根据向量寄存器能够加载的数据量的最大值设置的,能够满足数据吞吐的峰值需求,也不会出现冗余,充分利用硬件资源,而不浪费。
8)乘积数据直接进入累加器做累加运算。累加器中设有累加缓存单元,存储中间结果,当累加值为最后输出结果时,才会被输出到下一个单元。
9)向量激活单元负责非线性向量运算,使用查找表的方法。查找表的配置通过数据加载指令把参数加载到向量激活单元的缓存区。
10)最终的计算结果,在向量存储指令的控制下,通过向量寄存器,存储到相应的位置。整个计算过程受卷积控制单元控制,不需要的环节可设置为bypass(绕过)。整个过程在图6中完整地示出。
具体地,卷积控制单元的结构详见图7。卷积控制单元根据向量指令,控制着整个卷积/矩阵乘的过程。取指译码单元发送过来的向量指令在卷积控制单元中译码。
1)若指令为卷积控制寄存器配置命令,则配置寄存器。配置寄存器是映射到处理器存储空间上。当向量命令的寻址是此空间地址段,则认为是配置寄存器的命令,寄存器根据地址进行区分。配置寄存器包括不同单元模块的寄存器,如向量重排序单元的数据大小、数据输入维度、数据输出维度、是否转置等寄存器;再如向量预处理单元的数据缩放系数、数据偏移系数、截取系数等寄存器。
2)若指令为配置向量激活单元的查找表,则直接将数据配置到向量激活单元的查找表缓存区。
3)若为卷积实时控制指令,则根据指令实时控制,如数据乘、数据加载、数据存储指令。
另外,本发明的处理器可以通过片上网格(Mesh)互联网络(NoC),将多个处理器互联起来,组成更大算力的架构(如人工智能处理器AIPU),其结构详见图8。处理器数目可大可小,非常灵活,可适用于不同的硬件规模应用中。通过网络互联的处理器架构支持单指令多数据(SIMD)或多指令多数据(MIMD)模式,软件编程更加灵活。
从上述实施例可以看出,本发明实施例提供的基于RISC-V的人工智能推理方法,通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;从存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;反馈处理过的向量数据以完成推理的技术方案,能够将RISC-V指令集应用到AI芯片的推理计算中,便于人工智能推理的应用和落地。
需要特别指出的是,上述基于RISC-V的人工智能推理方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于基于RISC-V的人工智能推理方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
基于上述目的,本发明实施例的第二个方面,提出了一种便于人工智能推理的应用和落地的基于RISC-V的人工智能推理***的一个实施例。***包括:
处理器;和
存储器,存储有处理器可运行的程序代码,程序代码在被运行时执行以下步骤:
通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;
从存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;
响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;
反馈处理过的向量数据以完成推理。
在一些实施方式中,存储器包括向量数据存储器、指令存储器、和标量数据存储器;寄存器包括向量寄存器和标量寄存器;基于指令将数据从存储器加载到对应的寄存器包括:基于环境参数确定单次向量操作个数,以使用指令中的向量加载指令将单次向量操作个数个向量数据加载到向量寄存器;
步骤还包括:由卷积控制单元基于指令中的寄存器配置指令确定环境参数,环境参数包括向量有效位宽、向量寄存器每组个数、寄存器位宽、和当前需要操作向量个数;基于环境参数确定单次向量操作个数包括:基于寄存器位宽除以向量有效位宽乘以向量寄存器每组个数而确定允许操作向量最大个数,并将允许操作向量最大个数和当前需要操作向量个数中的较小值确定为单次向量操作个数。
在一些实施方式中,由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据包括:响应于向量寄存器有数据、向量处理单元的影子寄存器为空、并且卷积控制单元允许,将向量数据从向量寄存器缓存到影子寄存器;在影子寄存器中依次对向量数据执行重排序处理和预处理,并存入向量处理单元的乘法器输入缓存;由向量处理单元的乘法器阵列从乘法器输入缓存获取向量数据以在卷积控制单元的控制下执行乘积运算;由向量处理单元的乘积累加器从乘法器阵列获取向量数据以在卷积控制单元的控制下执行累加运算;由向量处理单元的向量激活单元从乘积累加器获取向量数据以在卷积控制单元的控制下使用查找表执行非线性向量运算。
从上述实施例可以看出,本发明实施例提供的***,通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;从获取存储器获取和翻译指令,基于指令将数据从存储器加载到对应的寄存器;响应于指令是向量指令,而由卷积控制单元基于向量指令在向量处理单元处理对应的向量数据;反馈处理过的向量数据以完成推理的技术方案,能够将RISC-V指令集应用到AI芯片的推理计算中,便于人工智能推理的应用和落地。
需要特别指出的是,上述***的实施例采用了所述基于RISC-V的人工智能推理方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述基于RISC-V的人工智能推理方法的其他实施例中。当然,由于所述基于RISC-V的人工智能推理方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述***也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种基于RISC-V的人工智能推理方法,其特征在于,包括执行以下步骤:
通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;
从所述存储器获取和翻译所述指令,基于所述指令将所述数据从所述存储器加载到对应的寄存器;
响应于所述指令是向量指令,而由卷积控制单元基于所述向量指令在向量处理单元处理对应的向量数据;
反馈处理过的所述向量数据以完成推理。
2.根据权利要求1所述的方法,其特征在于,所述存储器包括向量数据存储器、指令存储器、和标量数据存储器;所述寄存器包括向量寄存器和标量寄存器。
3.根据权利要求2所述的方法,其特征在于,基于所述指令将所述数据从所述存储器加载到对应的寄存器包括:基于环境参数确定单次向量操作个数,以使用所述指令中的向量加载指令将单次向量操作个数个所述向量数据加载到所述向量寄存器。
4.根据权利要求3所述的方法,其特征在于,还包括:由所述卷积控制单元基于所述指令中的寄存器配置指令确定环境参数,所述环境参数包括向量有效位宽、向量寄存器每组个数、寄存器位宽、和当前需要操作向量个数;
基于环境参数确定单次向量操作个数包括:基于所述寄存器位宽除以所述向量有效位宽乘以所述向量寄存器每组个数而确定允许操作向量最大个数,并将所述允许操作向量最大个数和所述当前需要操作向量个数中的较小值确定为所述单次向量操作个数。
5.根据权利要求1所述的方法,其特征在于,由卷积控制单元基于所述向量指令在向量处理单元处理对应的向量数据包括:
响应于所述向量寄存器有数据、所述向量处理单元的影子寄存器为空、并且所述卷积控制单元允许,将所述向量数据从所述向量寄存器缓存到所述影子寄存器;
在所述影子寄存器中依次对所述向量数据执行重排序处理和预处理,并存入所述向量处理单元的乘法器输入缓存;
由所述向量处理单元的乘法器阵列从所述乘法器输入缓存获取所述向量数据以在所述卷积控制单元的控制下执行乘积运算;
由所述向量处理单元的乘积累加器从所述乘法器阵列获取所述向量数据以在所述卷积控制单元的控制下执行累加运算;
由所述向量处理单元的向量激活单元从所述乘积累加器获取所述向量数据以在所述卷积控制单元的控制下使用查找表执行非线性向量运算。
6.根据权利要求5所述的方法,其特征在于,还包括:
由所述卷积控制单元基于所述指令中的查找表激活指令为所述向量激活单元配置所述查找表的缓存区;
由所述卷积控制单元基于所述指令中的实时控制指令使所述向量数据选择性地执行乘积运算、累加运算、或非线性向量运算。
7.根据权利要求1所述的方法,其特征在于,还包括执行以下步骤:
响应于所述指令是标量指令,而基于所述标量指令在算数/逻辑运算单元处理对应的标量数据;
反馈处理过的所述标量数据以完成推理。
8.一种基于RISC-V的人工智能推理***,其特征在于,包括:
处理器;和
存储器,存储有处理器可运行的程序代码,所述程序代码在被运行时执行以下步骤:
通过直接存储器访问接口获取人工智能推理的指令和数据并写入存储器;
从所述存储器获取和翻译所述指令,基于所述指令将所述数据从所述存储器加载到对应的寄存器;
响应于所述指令是向量指令,而由卷积控制单元基于所述向量指令在向量处理单元处理对应的向量数据;
反馈处理过的所述向量数据以完成推理。
9.根据权利要求8所述的***,其特征在于,所述存储器包括向量数据存储器、指令存储器、和标量数据存储器;所述寄存器包括向量寄存器和标量寄存器;基于所述指令将所述数据从所述存储器加载到对应的寄存器包括:基于环境参数确定单次向量操作个数,以使用所述指令中的向量加载指令将单次向量操作个数个所述向量数据加载到所述向量寄存器;
所述步骤还包括:由所述卷积控制单元基于所述指令中的寄存器配置指令确定环境参数,所述环境参数包括向量有效位宽、向量寄存器每组个数、寄存器位宽、和当前需要操作向量个数;
基于环境参数确定单次向量操作个数包括:基于所述寄存器位宽除以所述向量有效位宽乘以所述向量寄存器每组个数而确定允许操作向量最大个数,并将所述允许操作向量最大个数和所述当前需要操作向量个数中的较小值确定为所述单次向量操作个数。
10.根据权利要求8所述的***,其特征在于,由卷积控制单元基于所述向量指令在向量处理单元处理对应的向量数据包括:响应于所述向量寄存器有数据、所述向量处理单元的影子寄存器为空、并且所述卷积控制单元允许,将所述向量数据从所述向量寄存器缓存到所述影子寄存器;在所述影子寄存器中依次对所述向量数据执行重排序处理和预处理,并存入所述向量处理单元的乘法器输入缓存;由所述向量处理单元的乘法器阵列从所述乘法器输入缓存获取所述向量数据以在所述卷积控制单元的控制下执行乘积运算;由所述向量处理单元的乘积累加器从所述乘法器阵列获取所述向量数据以在所述卷积控制单元的控制下执行累加运算;由所述向量处理单元的向量激活单元从所述乘积累加器获取所述向量数据以在所述卷积控制单元的控制下使用查找表执行非线性向量运算。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011554149.6A CN112633505B (zh) | 2020-12-24 | 2020-12-24 | 一种基于risc-v的人工智能推理方法和*** |
PCT/CN2021/122287 WO2022134729A1 (zh) | 2020-12-24 | 2021-09-30 | 一种基于risc-v的人工智能推理方法和*** |
US18/246,662 US11880684B2 (en) | 2020-12-24 | 2021-09-30 | RISC-V-based artificial intelligence inference method and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011554149.6A CN112633505B (zh) | 2020-12-24 | 2020-12-24 | 一种基于risc-v的人工智能推理方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112633505A true CN112633505A (zh) | 2021-04-09 |
CN112633505B CN112633505B (zh) | 2022-05-27 |
Family
ID=75324611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011554149.6A Active CN112633505B (zh) | 2020-12-24 | 2020-12-24 | 一种基于risc-v的人工智能推理方法和*** |
Country Status (3)
Country | Link |
---|---|
US (1) | US11880684B2 (zh) |
CN (1) | CN112633505B (zh) |
WO (1) | WO2022134729A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116513A (zh) * | 2021-12-03 | 2022-03-01 | 中国人民解放军战略支援部队信息工程大学 | 多指令集架构向risc-v指令集架构的寄存器映射方法及装置 |
WO2022134729A1 (zh) * | 2020-12-24 | 2022-06-30 | 苏州浪潮智能科技有限公司 | 一种基于risc-v的人工智能推理方法和*** |
CN115576606A (zh) * | 2022-11-16 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 实现矩阵转置乘的方法、协处理器、服务器及存储介质 |
WO2023284130A1 (zh) * | 2021-07-15 | 2023-01-19 | 深圳供电局有限公司 | 用于卷积计算的芯片及其控制方法、电子装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030221086A1 (en) * | 2002-02-13 | 2003-11-27 | Simovich Slobodan A. | Configurable stream processor apparatus and methods |
CN107832804A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN111027690A (zh) * | 2019-11-26 | 2020-04-17 | 陈子祺 | 执行确定性推理的组合处理装置、芯片和方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516026B2 (en) * | 2003-03-10 | 2013-08-20 | Broadcom Corporation | SIMD supporting filtering in a video decoding system |
GB2489914B (en) * | 2011-04-04 | 2019-12-18 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing vector operations |
US9342284B2 (en) * | 2013-09-27 | 2016-05-17 | Intel Corporation | Optimization of instructions to reduce memory access violations |
CN106990940B (zh) | 2016-01-20 | 2020-05-22 | 中科寒武纪科技股份有限公司 | 一种向量计算装置及运算方法 |
US11106976B2 (en) * | 2017-08-19 | 2021-08-31 | Wave Computing, Inc. | Neural network output layer for machine learning |
US11803377B2 (en) * | 2017-09-08 | 2023-10-31 | Oracle International Corporation | Efficient direct convolution using SIMD instructions |
US20200174707A1 (en) * | 2017-10-27 | 2020-06-04 | Wave Computing, Inc. | Fifo filling logic for tensor calculation |
CN110007961B (zh) | 2019-02-01 | 2023-07-18 | 中山大学 | 一种基于risc-v的边缘计算硬件架构 |
US11113397B2 (en) * | 2019-05-16 | 2021-09-07 | Cisco Technology, Inc. | Detection of malicious executable files using hierarchical models |
US11768911B2 (en) * | 2019-09-24 | 2023-09-26 | Alibaba Group Holding Limited | Method and apparatus for execution of neural network |
CN111078287B (zh) | 2019-11-08 | 2022-07-19 | 苏州浪潮智能科技有限公司 | 一种向量运算协处理方法与装置 |
CN111158756B (zh) | 2019-12-31 | 2021-06-29 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
CN112633505B (zh) | 2020-12-24 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种基于risc-v的人工智能推理方法和*** |
-
2020
- 2020-12-24 CN CN202011554149.6A patent/CN112633505B/zh active Active
-
2021
- 2021-09-30 WO PCT/CN2021/122287 patent/WO2022134729A1/zh active Application Filing
- 2021-09-30 US US18/246,662 patent/US11880684B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030221086A1 (en) * | 2002-02-13 | 2003-11-27 | Simovich Slobodan A. | Configurable stream processor apparatus and methods |
CN107832804A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN111027690A (zh) * | 2019-11-26 | 2020-04-17 | 陈子祺 | 执行确定性推理的组合处理装置、芯片和方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022134729A1 (zh) * | 2020-12-24 | 2022-06-30 | 苏州浪潮智能科技有限公司 | 一种基于risc-v的人工智能推理方法和*** |
US11880684B2 (en) | 2020-12-24 | 2024-01-23 | Inspur Suzhou Intelligent Technology Co., Ltd. | RISC-V-based artificial intelligence inference method and system |
WO2023284130A1 (zh) * | 2021-07-15 | 2023-01-19 | 深圳供电局有限公司 | 用于卷积计算的芯片及其控制方法、电子装置 |
CN114116513A (zh) * | 2021-12-03 | 2022-03-01 | 中国人民解放军战略支援部队信息工程大学 | 多指令集架构向risc-v指令集架构的寄存器映射方法及装置 |
CN114116513B (zh) * | 2021-12-03 | 2022-07-29 | 中国人民解放军战略支援部队信息工程大学 | 多指令集架构向risc-v指令集架构的寄存器映射方法及装置 |
CN115576606A (zh) * | 2022-11-16 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 实现矩阵转置乘的方法、协处理器、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112633505B (zh) | 2022-05-27 |
WO2022134729A1 (zh) | 2022-06-30 |
US20230367593A1 (en) | 2023-11-16 |
US11880684B2 (en) | 2024-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112633505B (zh) | 一种基于risc-v的人工智能推理方法和*** | |
US11263007B2 (en) | Convolutional neural network hardware acceleration device, convolutional calculation method, and storage medium | |
CN111310910B (zh) | 一种计算装置及方法 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
WO2021115208A1 (zh) | 神经网络处理器、芯片和电子设备 | |
CN112667289B (zh) | 一种cnn推理加速***、加速方法及介质 | |
WO2022142479A1 (zh) | 一种硬件加速器、数据处理方法、***级芯片及介质 | |
CN110991619A (zh) | 神经网络处理器、芯片和电子设备 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN113065643A (zh) | 一种用于执行多任务卷积神经网络预测的装置和方法 | |
WO2021115149A1 (zh) | 神经网络处理器、芯片和电子设备 | |
CN113127407A (zh) | 基于nvm进行ai计算的芯片架构 | |
EP4287076A1 (en) | Neuro-synaptic processing circuitry | |
CN115048334A (zh) | 可编程阵列处理器控制装置 | |
CN114492777A (zh) | 一种算力可扩展的多核神经网络张量处理器 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN115081603A (zh) | 执行Winograd卷积的计算装置、集成电路装置及板卡 | |
JP2022527318A (ja) | データ処理装置、及び人工知能チップ | |
US10387155B2 (en) | Controlling register bank access between program and dedicated processors in a processing system | |
CN214846708U (zh) | 基于nvm进行ai计算的芯片架构 | |
CN114418077A (zh) | 一种加速神经网络计算的方法、***、设备和存储介质 | |
CN117093263A (zh) | 处理器、芯片、板卡及方法 | |
CN110956257A (zh) | 神经网络加速器 | |
JPH01255036A (ja) | マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |