CN115136123A - 用于集成电路架构内的自动化数据流和数据处理的瓦片子系统和方法 - Google Patents
用于集成电路架构内的自动化数据流和数据处理的瓦片子系统和方法 Download PDFInfo
- Publication number
- CN115136123A CN115136123A CN202080081425.3A CN202080081425A CN115136123A CN 115136123 A CN115136123 A CN 115136123A CN 202080081425 A CN202080081425 A CN 202080081425A CN 115136123 A CN115136123 A CN 115136123A
- Authority
- CN
- China
- Prior art keywords
- tile
- different
- circuits
- computation
- 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.)
- Pending
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic 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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Logic Circuits (AREA)
Abstract
一种用于多瓦片集成电路的计算瓦片的系统和方法包含:多个不同瓦片计算电路,其中所述多个不同瓦片计算电路中的每个瓦片计算电路被配置成接收固定长度指令;令牌通知任务调度程序,所述令牌通知任务调度程序:追踪由所述多个不同瓦片计算电路中的一个或多个瓦片计算电路发出的多个不同令牌中的一个或多个令牌;并且基于所述追踪选择多个不同计算任务中的不同计算任务;以及工作队列缓冲器,所述工作队列缓冲器:含有多个不同固定长度指令,其中所述固定长度指令中的每一个固定长度指令与所述多个不同计算任务之一相关联;并且基于由所述令牌通知任务调度程序对所述不同计算任务的选择,将所述多个不同固定长度指令之一传输到所述多个不同瓦片计算电路中的一个或多个瓦片计算电路。
Description
相关申请的交叉引用
本申请要求于2019年11月26日提交的美国临时申请第62/940,518号以及于2020年7月9日提交的美国临时申请第63/049,674号的权益,所述美国临时申请两者均通过此引用以其全文并入。
技术领域
本文所描述的发明总体上涉及集成电路系统架构领域,并且更具体地涉及集成电路系统架构领域中的新型且有用的智能集成电路和用所述智能集成电路进行计算的方法。
背景技术
当今,人工智能和机器学习的各种实施方案推动着许多技术领域的创新。通过使机器(例如,计算机和/或计算服务器)能够具有机器学习(深度学习)、推断、推理能力和大数据处理功能的许多系统架构和模型定义了人工智能(AI)系统和人工智能模型(包含算法)。这些AI系统和模型通常被高强度地训练以执行一个或多个具体任务,如自然语言处理、图像识别、规划、做出决策等。例如,这些AI系统和模型的子集包含人工神经网络模型。在许多情况下,人工神经网络模型的训练在整个训练周期上可能需要数千个小时并且可能需要数万亿字节的训练数据以在使用前微调模型的相关神经网络算法。
然而,一旦经过训练,与在训练周期期间使用的较大训练数据集相比,神经网络模型或算法可以快速地部署以基于相对较小的数据集做出推断来完成具体任务(例如,从言语输入数据识别言语等)。神经网络模型或算法基于较小的数据集所做的推断可以是关于神经网络模型计算是否为正确答案的预测或关于情况的指示。
仍然,尽管实施一个或多个神经网络算法的神经网络模型可以不需要与训练阶段中所需要的相同数量的计算资源,但是现场部署神经网络模型仍然需要相当大的电路系统区域、能量和计算能力来分类数据和推断或预测结果。例如,加权和计算通常用于模式匹配和机器学习应用,包含神经网络应用。在加权和计算中,集成电路可以用于将一组输入(xi)与一组权重(wi)相乘并且将每个乘法运算的结果求和以计算最终结果(z)。然而,机器学习应用的典型加权和计算包含数百个或者数千个权重,这使得加权和计算对于使用传统数字电路系统进行计算来说在计算上是成本高昂的。具体地,从数字存储器存取数百个或数千个权重需要相当长的计算时间(即,增加的时延)和相当大的能量。
因此,计算神经网络模型等的加权和计算所需的传统数字电路系统往往很大以容纳存储神经网络模型所需的数百万个权重所需的大量数字存储器电路系统。由于电路系统的大尺寸,需要更多的能量来实现许多传统计算机和电路的计算能力。
另外,用于实施人工智能模型,即神经网络模型的这些传统计算机和电路可以适合于远程计算过程,如在分布计算系统(例如,云)中或当使用许多在场计算服务器等时。然而,当这些远程人工智能处理系统用于针对远程边缘计算装置或在现场装置中计算推断等时表现出时延问题。也就是说,当这些传统远程系统试图实施神经网络模型以用于生成用于远程现场装置的推断时,从远程现场装置接收输入数据具有不可避免的延迟,这是因为输入数据必须经常通过具有不同带宽的网络传输,并且随后,由远程计算系统生成的推断必须通过相同或相似的网络传输回远程现场装置。另外,这些传统电路通常不能管理计算负载(例如,有限的存储和/或有限的计算)并且可能通常依赖于如云等远程计算系统来执行计算密集型计算并且存储计算数据(例如,原始输入和输出)。因此,持续操作需要远程计算系统(例如,云)的恒定和/或持续的存取(例如,24×7次存取),这由于成本或基础设施限制(例如,有限的带宽、低等级的通信系统等)等而可能不适合于许多应用。
在现场水平(例如,位于远程现场装置)实施AI处理系统可以是所提出的用于解决一些时延问题的解决方案。然而,试图在边缘装置(例如,远程现场装置)处实施这些传统AI计算机和系统中的一些可能导致具有许多电路的庞大系统,如上所述,所述庞大系统由于在处理数据和生成推断中使用的计算系统所需的复杂架构而消耗大量能量。因此,仅此提议对于现有技术而言可能是不可行的和/或不可持续的。
因此,需要用于实施位于现场并且优选地用于边缘装置的人工智能模型(例如,本地AI)的可部署系统,所述可部署系统不会导致大型庞大(边缘)装置,减少时延,并且具有必要的计算能力以实时或基本上实时地做出预测或推断,同时还是高效节能的。
本申请的以下描述的实施例提供了此类先进且改进的集成电路和实施技术,所述集成电路和实施技术能够解决用于实施AI和机器学习的传统系统和集成电路架构的缺陷。
发明内容
在一个实施例中,一种多瓦片混合信号集成电路的瓦片子系统包含:多个不同瓦片计算电路,其中所述多个不同瓦片计算电路中的每个瓦片计算电路包含存储固定长度编程的存储设备;基于令牌的任务调度程序,所述基于令牌的任务调度程序:基于检测到由所述多个不同瓦片计算电路中的一个或多个瓦片计算电路发出的多个不同令牌中的一个或多个令牌,追踪所述多个不同瓦片计算电路中的每个瓦片计算电路的状态;并且基于检测到在所述瓦片子系统内发出的所述多个不同令牌中的所述一个或多个令牌,标识多个不同计算任务中的不同计算任务;以及工作队列,所述工作队列包括数据缓冲器,其中所述工作队列:存储多个不同固定长度编程,其中所述多个不同固定长度编程中的每一个固定长度编程与所述多个不同计算任务中的一个或多个计算任务相关联;并且基于由所述基于令牌的任务调度程序对所述不同计算任务的标识将所述多个不同固定长度编程之一传输到所述多个不同瓦片计算电路中的一个或多个瓦片计算电路。
在一个实施例中,由所述一个或多个不同瓦片计算电路执行所述多个不同固定长度编程之一使所述一个或多个不同瓦片计算电路执行以下中的一个或多个:在瓦片上输入数据缓冲器处存取输入数据并且用所述输入数据完成一次或多次计算,并且将所述一个或多个不同瓦片计算电路的一个或多个计算输出输出到瓦片上输出数据缓冲器。
在一个实施例中,所述瓦片子系统包含一个或多个数据传送电路,所述一个或多个数据传送电路包括一个或多个地址生成单元,所述一个或多个地址生成单元计算一个或多个存储器地址,所述一个或多个存储器地址用于从瓦片外存储器阵列存取输入数据以供所述一个或多个不同瓦片计算电路进行一个或多个即将进行的计算。
在一个实施例中,所述基于令牌的任务调度程序进一步基于在所述混合信号集成电路的所述瓦片子系统内发出的所述多个不同令牌来追踪所述一个或多个数据传送电路的状态并且标识不同数据传送任务。
在一个实施例中,所述多个不同固定长度编程中的每一个固定长度编程进一步与多个不同数据传送任务中的一个或多个数据传送任务相关联,所述工作队列基于由所述基于令牌的任务调度程序对所述不同数据传送任务的标识来将所述多个固定长度编程中与所述多个不同数据传送任务中的一个数据传送任务相关联的一个固定长度编程传输到所述一个或多个数据传送电路。
在一个实施例中,由所述一个或多个数据传送电路执行所述固定长度编程引起以下之一:(a)将计算输入数据从瓦片外存储器阵列传送到所述一个或多个不同瓦片计算电路的瓦片上输入缓冲器;和(b)从所述一个或多个瓦片计算电路的瓦片上输出缓冲器传送计算输出数据。
在一个实施例中,由所述一个或多个数据传送电路执行所述固定长度编程引起:将计算输入数据从存储器阵列传送到所述瓦片子系统;以及所述一个或多个数据传送电路通过使所述计算输入数据交错、去交错和对所述计算输入数据进行填充中的一者或多者来格式化所述计算输入数据。
在一个实施例中,所述一个或多个不同瓦片计算电路包括矩阵乘法累加器和流式算术逻辑电路中的一个或多个。
在一个实施例中,所述一个或多个不同瓦片计算电路中的每个瓦片计算电路包含将来自所述一个或多个不同瓦片计算电路中的相应一个瓦片计算电路的处理电路的所述计算输出的序列合计的累加器。
在一个实施例中,所述累加器将一个或多个激活函数应用于计算输出的序列。
在一个实施例中,所述基于令牌的任务调度程序包括多个令牌追踪层,其中所述多个层中的每个不同的层追踪在所述瓦片子系统内发出的不同令牌,并且所述标识所述不同计算任务包含将所述多个令牌追踪层中的两个或更多个令牌追踪层的不同令牌的计数组合。
在一个实施例中,所述瓦片子系统包含一个或多个片上网络路由器,所述一个或多个片上网络路由器将数据包和数字令牌中的一个或多个传入和传出所述瓦片子系统。
在一个实施例中,所述一个或多个片上网络路由器定义片上网络系统的一部分,所述部分将所述瓦片子系统与所述混合信号集成电路的多个不同瓦片的阵列互连,并且所述片上网络系统的拓扑包括环形拓扑、网格拓扑和交叉开关拓扑之一。
在一个实施例中,一种多瓦片集成电路的计算瓦片包含:多个不同瓦片计算电路,其中所述多个不同瓦片计算电路中的每个瓦片计算电路被配置成接收固定长度指令;令牌通知任务调度程序,所述令牌通知任务调度程序:追踪由所述多个不同瓦片计算电路中的一个或多个瓦片计算电路发出的多个不同令牌中的一个或多个令牌;并且基于所述追踪选择多个不同计算任务中的不同计算任务;以及工作队列缓冲器,所述工作队列缓冲器:含有多个不同固定长度指令,其中所述多个不同固定长度指令中的每一个固定长度指令与所述多个不同计算任务中的一个或多个计算任务相关联;并且基于由所述令牌通知任务调度程序对所述不同计算任务的选择,将所述多个不同固定长度指令之一传输到所述多个不同瓦片计算电路中的一个或多个瓦片计算电路。
在一个实施例中,所述计算瓦片包含一个或多个数据传送电路,所述一个或多个数据传送电路包括一个或多个地址生成单元,所述一个或多个地址生成单元计算一个或多个存储器地址,以用于从瓦片外存储器阵列存取输入数据以通过所述一个或多个不同瓦片计算电路进行一个或多个即将进行的计算。
在一个实施例中,所述令牌通知任务调度程序进一步基于检测到在所述计算瓦片内发出的所述多个不同令牌来追踪所述一个或多个数据传送电路的状态并且标识不同数据传送任务。
在一个实施例中,一种实施多瓦片集成电路的计算瓦片的方法包含:由令牌通知任务调度程序追踪由多个不同瓦片计算电路中的一个或多个瓦片计算电路发出的多个不同令牌中的一个或多个令牌,其中所述多个不同瓦片计算电路中的每个瓦片计算电路被配置成接收固定长度指令;以及由所述令牌通知任务调度程序基于所述追踪选择多个不同计算任务中的不同计算任务;以及实施含有多个不同固定长度指令的工作队列缓冲器,其中所述多个不同固定长度指令中的每一个固定长度指令与所述多个不同计算任务中的一个或多个计算任务相关联;以及由所述工作队列基于由所述令牌通知任务调度程序对所述不同计算任务的选择来将所述多个不同固定长度指令之一传输到所述多个不同瓦片计算电路中的一个或多个瓦片计算电路。
附图说明
图1-1A展示了根据本申请的一个或多个实施例的智能集成电路100的示意图;
图2展示了根据本申请的一个或多个实施例的使用混合信号集成电路进行数据处理的示例性方法200;并且
图3展示了根据本申请的一个或多个实施例的用于具有集成电路的基于瓦片的数据流架构的设备。
具体实施方式
以下对本申请的优选实施例的描述并非旨在将本发明限制于这些优选的实施例,而是使得本领域的任何技术人员能够制造和使用这些发明。
1.智能处理概述
本申请的实施例提供了灵活并且可再编的系统,所述系统可以被编程以适应各种计算密集型应用或具有不同复杂性和大小的程序。虽然根据本申请的一个或多个实施例的集成电路架构的物理配置可以保持相同或基本上相同,但是架构内的不同处理元件可以被编程以处理多个应用或单个应用的一个或多个部分。
进一步地,本申请的一个或多个实施例内所实施的存储装置的实施方案和特定布置提供了优于现有技术集成电路的若干个技术优点,所述优点包含降低了处理数据密集型应用或程序所需的存储器或存储设备的总体需求。例如,在一个实施例中,可以提供主(大型)缓冲器以接收输入数据(例如,原始输入数据或来自上流层或源的数据),并且多个不同本地缓冲器中的每个本地缓冲器可以与计算元件(例如,矩阵乘法加速器)111共同布置。在此实施例中,每个本地缓冲器可以被布置成邻近计算元件或与计算元件直接相邻以用于快速存取,并且因此高效处理来自主缓冲器的输入数据。
另外,这种布置可以允许沿着数据处理流水线异步处理数据,从而使得能够同时处理数据的多个片段并且可能沿着流水线在不同阶段处理数据的多个片段。对于数据的复制的需求可以明显减少。
另外,本申请的一个或多个实施例可以用于实施令牌驱动的数据处理系统,其中可以不需要中央过程控制来驱动集成电路的数据产生计算元件与数据消耗计算元件之间的事务。
具体地,在一个或多个实施例中,本申请的集成电路可以包含可以使用令牌触发微处理器(本文中有时称为“纳米处理器”)程序和/或应用的架构。虽然在本文所述的许多实施例中,令牌可以用于自动触发程序或应用的执行和/或实施,但是在不同实施方案中,令牌可以用于触发集成电路内的其它单元。几个实例可以包含,使用令牌以触发有限状态机器、触发数据包或工作队列项目的释放、触发另一令牌的生成、启动数据处理或计算等。在若干个实施例中描述了可以是基于令牌的管理模块的无限应用(在本文中有时称为流记分板模块或任务调度程序),所述基于令牌的管理模块用于使用集成电路自动触发任何类型和/或任何数量的功能/操作。
在本申请的优选实施例中,集成电路架构可以包含片上网络系统,所述片上网络系统使得能够在集成电路的不同组件之间进行令牌的通信和/或传递。然而,应该注意,可以使用任何合适的令牌通信方案和/或互连,包含但不限于串行通信总线等。在基于令牌的集成电路架构的一些实施例中的内部识别的约束条件可以包含在令牌与令牌可以表示的事件或请求之间的次序和/或时延方面的约束条件。例如,在本申请的一个实施例中,可以不释放和/或生成令牌(不考虑互连),直到完成了相关联的触发事件(例如,清空本地数据缓冲器、由MMA等针对输入数据进行计算和/或任何合适的事件)。在又另一个实施例中,如果令牌的早期释放不会引起对次序约束条件的违背,则在相关联的触发事件之前可以生成和/或释放所述令牌。因此,在本申请的若干个实施例中,应当注意,可以以任何合适的方式部署令牌以实现在整个集成电路上对数据流和/或对数据处理的基于令牌的控制。
另外,本文中所描述的基于令牌的管理模块通常可以用于实现通过追踪令牌和令牌触发条件等的基于令牌的控制。基于令牌的管理模块可以具有可配置的约束条件,使得触发还可以取决于本地单元或电路的状态并且不仅仅基于所标识的或接收到的令牌的数量。也就是说,在本申请的若干个实施例中,数据流、数据处理、一个或多个操作/功能等可以基于令牌的释放或生成进行管理,应当注意,简单地确定和/或标识集成电路的组件的状态和/或标识集成电路内的过程或操作的状态可以用作用于还使另一个操作、功能、过程或流自动化的触发事件。例如,一个或多个工作队列的利用状态(例如,深度)和/或能力可以用作触发事件。此类实施例的技术益处可以是,操作仅在可能需要的计算资源(例如,具有一个或多个工作队列的空间)可获得时才运行。因此,本申请的实施例可以提供关于如何配置触发自动化操作、功能或过程的事件和/或依赖性的灵活性,并且因此允许生成使用更多资源或更有效地使用资源的更复杂的程序或应用,这通过减少执行某一动作所需要生成的事件的数量改善了本文描述的一个或多个系统的操作效率。
1.1数据流架构概述的概述瓦片子系统
在一个或多个实施例中,混合信号计算瓦片阵列可以具有许多挑战,所述挑战可以包含如何将给定任务分配给有限的计算资源(例如,可用的处理、存储器等);瓦片之间有限的通信带宽;管理并发运行任务的数据流;确定何时可以满足任务的依赖性,这可能是任务能够执行的先决条件;以及分解太大而无法适合单个瓦片的任务,使得可以将任务在多个瓦片之间划分并且将所得的输出组合。集成电路系统的性能可以通过在各个瓦片和瓦片内的电路之间进行高效和协调的通信来提高,一旦满足任务依赖性并且具有可用的计算资源,就将任务调度为尽快运行,并且一旦从数据源和/或上游处理中的一个或多个获得足够数量的输入数据,就启动任务。
在一个或多个实施例中,混合信号计算瓦片可以包含:计算单元,所述计算单元可以执行混合信号计算;任务调度机构,所述任务调度机构可以确定何时需要执行任务;工作队列,所述工作队列可以存储任务以及执行所述任务可能需要的任何任务执行或处理数据(例如,输入数据的位置、存储结果的位置、计算任务编程以及执行任务可能需要的任何其它信息);存储器阵列(例如,SRAM阵列);存储器控制器(例如,SRAM控制器),所述存储器控制器可以在存储器阵列与计算单元之间有效地移动数据;处理器(例如,纳米处理器);联网单元(例如,片上网络(NoC)),所述联网单元可以允许给定的瓦片与包含集成电路的其它瓦片的其它组件进行通信;以及电路系统,所述电路系统可以使上述组件能够协作执行混合信号计算。
根据一个或多个优选实施例,计算单元可以包含矩阵乘法加速器(MMA)、可以至少部分使用SRAM控制单元相对于SRAM阵列执行直接存储器存取(DMA)的输入缓冲器、可以将来自MMA的至少部分结果合计的累加器、输出缓冲器、数据格式化程序和计算控制元件。在一个或多个优选实施例中,可以将组件组合以提供类似的功能,例如,累加器、输出缓冲器和数据格式化程序可以组合成单个组件。
根据一个或多个优选实施例,任务调度机构可以包含流记分板(FSB),所述流记分板可以使用令牌或类似的标记来追踪任务依赖性,并且一旦满足任务依赖性的至少一部分,就可以自动使任务通过工作队列执行。作为FSB的非限制性实例,参考于2019年12月31日发布的题为“用于实施智能处理计算架构的系统和方法(SYSTEMS AND METHODS FORIMPLEMENTING AN INTELLIGENCE PROCESSING COMPUTING ARCHITECTURE)”的美国专利10,521,395,所述美国专利通过此引用以其整体并入。
根据一个或多个优选实施例,工作队列可以存储固定长度命令(例如,源数据位置、指定数据位置、计算单元编程的位置以及执行任务所需的任何其它数据的位置),所述命令在发出时可以在计算单元上启动任务的执行。在此实施例中,任务可以以与指令序列相比更小的占用空间格式表示。根据一个或多个优选实施例,一旦任务调度机构确定任务的依赖性被满足,任务调度机构就可以向工作队列传达所述任务应该被执行,这进而可以使工作队列向目标计算单元提供在目标计算单元上启动任务的执行的命令(例如,固定长度命令)。
根据一个或多个优选实施例,存储器控制器可以用给定瓦片中的组件执行DMA,所述组件可以允许数据以更快的速度在存储器与给定瓦片的组件之间传送。根据一个或多个优选实施例,存储器控制器可以含有地址生成单元,所述地址生成单元可以根据需要使数据交错、去交错和/或对数据进行填充,所述数据呈适当的格式以供从存储设备或其它计算元件进行计算。在此实施例中,可以减少存储器使用量和所需的通信,并且可以节省存储器缓冲器空间。
2.智能处理计算架构
如图1-1A所示,用于处理计算密集型程序和/或应用(例如,机器学习应用、神经网络等)的智能处理计算架构100(或在本文中可替代地称为智能处理集成电路100)包含智能处理阵列105,所述智能处理阵列包含:多个智能(计算)处理(瓦片)单元110;片上网络系统120,所述片上网络系统包含多个片上网络路由器125;集成电路控制器电路130;瓦片扇区控制器电路140;和串行连接总线150。优选地,多个智能处理单元110中的每个智能处理单元包含:矩阵乘法加速器111(在本文中还可以称为加速器电路)、计算机处理电路(例如,微处理器、纳米处理器等)112、流记分板(基于令牌的管理)模块114(例如,任务调度机构)、单指令多数据(SIMD)单元116(例如,流式算术逻辑单元(SALU)等),以及本地缓冲器(例如,静态随机存取存储器(SRAM)等)118。另外,在一个优选实施例中,130、140和150中的每一个可以包含计算机处理电路112、流记分板模块114、SALU 116和本地缓冲器118。在一个或多个实施例中,本地数据缓冲器118在本文中有时可以称为瓦片上存储器或瓦片上缓冲器,其指示本地数据缓冲器118可以布置在智能处理瓦片110内并且与智能处理瓦片110内的各种或一个或多个电路、组件和/或模块直接通信。
图1A包含智能处理计算架构100的进一步详细的实施例,并且包含用于与智能处理阵列105介接的另外的外围互连。例如,测试结构、监测器、模拟探针和/或任何合适的外围装置可以沿着智能计算架构100的智能处理阵列105的外围连接或布置。
虽然在一个或多个优选实施例中,智能处理单元110可以包含矩阵乘法加速器111、计算机处理电路112、流记分板模块114、SIMD单元116和本地缓冲器118,但应当注意,在不有意地偏离本申请中描述的发明范围的情况下,智能处理单元110可以包含电路和模块的任意合适组合,并且因此可以排除上述电路和模块中的一个或多个和/或可以包含上述电路和模块的任意组合。例如,在一些实施例中,智能处理单元110可以包含流记分板模块114和本地缓冲器118(SRAM)或由其组成,而不具有计算电路系统等(例如,计算机处理电路112)。在另一实例中,智能处理单元110可以包含流记分板模块114、本地缓冲器118(SRAM)和片外接口(例如,USB、PCIe、HDMI、MIPI-CSI、I2C、以太网、蓝牙和/或任何合适的片外接口组件)或由其组成。
另外或可替代地,虽然在架构100内处理可以包含模拟处理组件等,但应当注意,架构100的实施例还可以使得能够使用任何合适的电路系统进行数字处理,所述电路系统包含但不限于嵌入式现场可编程门阵列(eFPGA)、脉动阵列、浮点单元等。
智能处理阵列105(智能加速器)优选地包含可以用于协同工作以执行计算密集型应用等的多个不同智能处理单元110。在一些实施例中,智能处理阵列105可以用于定义能够将原始输入数据和/或来自上游装置或过程的数据处理成最终输出状态的一个或多个智能处理流水线。在此实施例中,智能处理流水线的(例如,由一个或多个不同智能处理单元110等实现的)每个阶段可以由不同智能处理单元110定义,所述智能处理单元可以被专门编程以执行应用或程序的一部分。智能处理阵列105的不同智能处理单元110中的每个智能处理单元优选地用于独立于智能处理阵列105内的其它或异构智能处理单元110进行操作或计算。因此,因为智能处理流水线的每个阶段都可以被配置成具有其自己的处理部分(例如,智能处理单元110),所以每个智能处理流水线可以用于沿着流水线内的每个阶段独立地处理输入数据,从而在处理输入方面能够具有相当高的效率。也就是说,数据或原始输入数据的异步处理可以基于相应的智能处理单元110的独立处理和/或计算来实现。
另外或可替代地,在智能处理阵列105内定义的一个或多个智能处理流水线中的每个智能处理流水线可以被灵活地配置成能够执行单个阵列105内的不同(非依赖性)应用或程序,或者灵活地被配置成能够沿着阵列105内的各个智能处理单元110执行单个应用或单个程序的不同部分。例如,第一神经网络应用可以沿着智能处理阵列105的第一部分进行编程,所述第一部分包含智能处理单元110的第一集合,并且第二神经网络应用可以沿着智能处理阵列105的第二部分进行编程,所述第二部分包含智能处理单元110的第二不同的集合。在第二实例中,单个计算密集型应用(例如,神经网络等)可以被分割为子应用(或程序)并且每个部分被编程到阵列105内的不同智能处理单元110。另外或可替代地,在此第二实例中,应用的多个部分或多个子应用可以被编程到同一智能处理单元110。在又另一实例中,多个智能处理单元110可以被聚集以执行单个应用或单个程序的一个或多个子部分。也就是说,单个智能处理单元110可以用于实施应用或程序的仅一部分,并且因此,整个应用或程序由各自处理整个应用或程序的仅一部分的多个智能处理单元110处理。应当注意,集成电路阵列105和/或每个智能处理单元100可以用于并行地(即,同时)、同时地(即,在共同时间段内、几乎在同一时间进行处理等)或同步地(即,独立于其它过程和/或处理单元110进行处理)计算多个不同的应用和/或单个应用或单个程序的多个不同分区。另外,应当注意,任何合适的和/或类型的应用或程序都可以沿着智能处理阵列105进行分割,其包含可以分割为可以具有可以表示为令牌的依赖性的多个操作阶段的应用和/或程序。
多个智能处理(瓦片)单元110优选地用于针对从如缓冲器或另一智能处理单元110等上游装置或上游层接收到的某些输入数据执行应用或程序。如上所述,多个智能处理单元110中的每个智能处理单元都包含矩阵乘法加速器(例如,数据处理电路等)111、计算机处理电路(例如,微处理器)112、流记分板模块114、SIMD单元116和本地数据缓冲器118,所述本地数据缓冲器使多个智能处理单元110中的每个智能处理单元能够实现和/或完成输入数据的处理以输出数据和/或执行应用或程序。
多个智能处理单元110中的每个智能处理单元优选地用于从其本地缓冲器118中提取和/或存取输入数据,针对矩阵乘法加速器111处的输入数据进行计算并且将针对输入数据计算的结果(输出数据)输出回其本地缓冲器118(或者可能输出到下游组件或处理部分的本地缓冲器)。
在本申请的另外和/或可替代的实施例中,智能阵列的多个智能处理单元110的一个或多个不同的子集(即,两个或更多个)可以聚类和/或聚集成相对于整体架构100而言更小的芯片(例如,小芯片、系统级封装(system-in-a-package,SIP)、3D封装等)。在此类实施例中,可以在整体架构100内构成小芯片以构成完整和/或独立的芯片。此类实施例的技术益处使得能够实现增强的架构定制水平。
在又另外的实施例中,多个集成电路架构100可以组合和/或一起封装在多芯片架构中。在此类实施例中,多个架构100可以以系统或电路板(面板)级别构成。多个芯片之间的互连可以使用任何合适的互连技术或接口进行,所述互连技术或接口包含PCIe或专门创建的桥接接口。
流记分板模块114可以优选地由一个或多个计算处理电路和流记分板子模块的组合(例如,由一个或多个处理电路执行的计算机程序和/或表的组合等)来实施。另外,流记分板模块114可以包含多个接口,所述多个接口用于实施流经一个或多个智能处理流水线的数据的流控制以及由智能处理阵列105的一个或多个智能处理流水线正在处理的程序或应用执行的控制。
在优选实施例中,流记分板模块114可以包含配置接口、令牌接口和通知接口。流记分板114的配置接口可以用于读取和写入流记分板模块114的内部状态,如用于对触发条件进行编程。流记分板114的令牌接口可以使智能集成电路100能够向流记分板114呈现令牌。响应于通过令牌接口呈现令牌,流记分板114可以用于更新其内部状态,并且必要时,根据令牌参数值(例如,令牌计数值等,如方法300中进一步详细讨论的)和流记分板114的配置来更新通知接口。流记分板的通知接口可以通过流记分板模块114来实施,以向智能集成电路110指示已经满足用于执行一个或多个程序的一个或多个条件(或先决条件)。应当注意,流记分板模块114的通知接口可以用于触发智能集成电路110内任意数量的操作,例如,在没有显式程序执行的情况下进行数据传送。
应当注意,配置接口、令牌接口和/或通知接口可以以任何合适的方式实施,包含用由如微处理器等一个或多个处理电路执行的模块的组合实施。
片上网络系统120包含多个片上网络路由器125,所述多个片上网络路由器用于在智能集成电路100的不同组件之间建立通信网络。在一个实施例中,芯片路由器125中的每个芯片路由器可以包含专用的输入和输出链路,所述专用的输入和输出链路用于接收和发射沿架构100在北、南、东、西方向上,并且具体地在智能处理阵列105内的通信。在一些实施例中,片上网络系统120使不同智能处理单元110中的每个智能处理单元能够在其之间传递数据,使得当一个智能处理单元110完成处理输入数据以生成输出时,所述一个智能处理单元110可以用于通过片上网络系统的网络路由器中的一个或多个网络路由器将输出传递给另一个智能处理单元和/或允许另一个智能处理单元110抓取输出数据。作为一个实例,数字令牌和/或数据包可以沿着片上系统120上的网络的多个网络路由器携带。
另外或可替代地,每个瓦片子系统可以包含片上网络系统的一部分,其允许给定的瓦片子系统传输由一个或多个瓦片上电路或组件发出的数字令牌。例如,一个或多个片上网络路由器可以用于将由计算元件或单元发出的令牌传输到给定瓦片的瓦片上任务调度程序。
集成电路控制器130优选地包含芯片级控制逻辑,所述芯片级控制逻辑包含启动逻辑、安全特征、计时逻辑等。
瓦片扇区控制器电路140优选地包含智能处理计算架构100的高电压部分或电路,所述高电压部分或电路实现了矩阵乘法加速器111内的可再编程非易失性存储器。
串行连接总线150优选地包含通用串行总线(USB)端口和外围组件互连快速(PCI快速)接口和/或任何合适的高速接口之一。在优选实施例中,原始输入数据(例如,原始图像数据等)和/或经处理的输入数据(例如,来自上游装置、上游层等)可以在串行连接总线150处接收并通过主要或主缓冲器组件传递到系统中。另外或可替代地,在串行连接总线150处接收到的输入数据可以通过片上网络系统120传递到智能处理集成电路100的主要缓冲器或直接传递到智能处理单元100的本地缓冲器118。另外或可替代地,主要缓冲器,其有时在本文中称为主缓冲器,也可以称为瓦片外(单元外)存储器或缓冲器。具体地,由于与架构100一起操作的主缓冲器可以被布置成远离智能处理瓦片110和在所述智能处理瓦片之外,因此所述主缓冲器可以认为是瓦片外组件。
另外或可替代地,任何合适的片外连接都可以被实施用于将数据传入和/或传出智能处理阵列105和/或在整个智能集成电路100中传输。例如,任何合适的外围装置,包含但不限于成像装置(例如,相机)、主机系统(例如,片上系统)或工作站、另一智能集成电路和/或等等。
因此,应当注意,包含令牌在内的任何类型或种类的数据都可以沿着串行连接总线150或其它合适的片外连接/接口传递。例如,来自智能集成电路100的数据(例如,计算结果或其它输出等)可以通过串行连接总线150或片外连接发送到另一装置或系统。因此,如本文所述的一个或多个实施例中的流控制当可操作地连接或介接时可以以某种方式从智能集成电路100扩展到其它装置。也就是说,在一些实施例中,基于令牌的流控制可以在多个智能集成电路100之间或在装置与主机之间实现。
3.用于自动化数据流架构的瓦片子系统|方法
如图2中的实例所示,用于通过智能处理混合信号集成电路(例如,电路100)来自动化和智能处理数据的方法200包含:实施任务调度程序(例如,FSB模块)S210,所述任务调度程序使用如令牌等追踪元件追踪一个或多个组件的状态数据(例如,数据移动和处理完成状态);通过工作队列来控制任务执行S220,所述工作队列与任务调度程序可操作地通信并且分派固定长度命令以基于状态数据控制计算单元、控制单元和/或数据传送单元中的一个或多个;通过使用于消费或存储的输入数据交错、去交错和/或对所述输入数据进行填充中的一者或多者来格式化输入数据S230;基于编码值将计算结果累加并应用一个或多个激活函数进行神经网络处理等S240。在一个或多个实施例中,方法200可以任选地包含:将输入和/或输出缓冲器实施为多缓冲的,使得能够实现数据的存储和/或移动的并行性S235;以及进一步地,使用片上网络路由系统在整个混合信号集成电路中路由数据S245。
3.1任务调度
S210,包含实施任务调度程序,可以用于实施任务调度机构320,以追踪集成电路的一个或多个组件和活动的状态数据,并且确定任务的依赖性是否已被满足。在此类实施例中,当确定任务的依赖性被满足时,任务调度机构320可以向工作队列330发信号通知或传达应执行所述任务。
响应于工作队列330接收到给定任务应执行的通知,S220,包含控制任务执行,可以用于实施工作队列330以自动向计算单元输入缓冲器控制器390提供命令或控制指令(例如,固定长度命令),以使用存储器控制器350启动DMA数据从存储器阵列340到输入缓冲器314的传送。
S230,包含格式化和/或填充输入数据,在完成数据移动之前,可以用于通过执行使输入数据交错、去交错和/或对输入数据进行填充中的一者或多者来格式化输入数据,所述输入数据呈适当的格式以供从存储设备或其它计算元件进行计算。也就是说,在传送输入数据的同时或期间,数据传送单元中的一个或多个(例如,SRAM或SRAM控制器)可以用于用填充值(即,在计算过程中意图忽略的值)来增加输入数据和/或从输入数据集中提取或删除无关的数据。在优选实施例中,输入数据的格式化可以由数据传送单元在从存储器阵列(或片外存储器)传输或读取输入数据之后以及在被存储在布置在计算瓦片内的输入数据缓冲器等之前执行。
一旦DMA数据传送和数据格式化完成,计算单元输入缓冲器控制器390可以向计算控件316发送信号以启动混合信号计算,这进而可以触发计算单元核312使用从输入缓冲器314存取或提供的输入数据开始混合信号计算。
S240,包含基于编码值将计算结果累加并应用一个或多个激活函数,可以用于实施累加器318以基于混合信号计算的完成来合计来自计算单元核312的混合信号计算结果。在一个或多个实施例中,如果计算单元核312的模数转换器等尚未格式化计算单元核312的输出数据以及尚未应用一个或多个所需的激活函数来转换输出数据,则累加器310可以任选地用于格式化输出数据,并将一个或多个激活函数应用于计算单元核312和/或通常计算单元310的输出数据。
在累加器318完成时,计算单元输出控制器380可以使用存储器控制器350将累加器318的结果发送到存储器阵列340和/或使用联网单元370发送到另一处理组件。
4.数据流架构系统的瓦片子系统
如图3中的实例所示,混合信号计算瓦片300可以包含计算单元310、计算单元核312、输入缓冲器314、计算控件316、累加器318、任务调度机构320、工作队列330、存储器阵列340、存储器控制器350、处理器360、联网单元370、计算单元输出控制器380和计算单元输入缓冲器控制器390。
根据一个或多个优选实施例,处理器360可以将任务信息编程到工作队列330、存储器控制器350、任务调度机构320和混合信号计算瓦片300的任何其它组件的任意组合中。
根据一个或多个实施例,混合信号计算瓦片300的组件(例如,310、320、330等)可以组合,使得可以至少部分地保持每个单独组件的单独的功能。根据一个或多个实施例,可以存在多个相似的组件,例如,计算瓦片300可以具有多个计算单元310,计算单元310可以具有多个累加器318等。根据一个或多个实施例,混合信号计算瓦片300可以包含另外的处理组件,例如,数字信号处理器(DSP)引擎、图像信号处理器(ISP)、通用串行总线(USB)控制器、外围组件互连快速(PCIe)控制器,以及能够执行计算和/或通信的任何其它组件。
4.1计算单元310
根据一个或多个实施例,计算单元310可以执行混合信号计算。在一个或多个优选实施例中,计算单元310可以包含矩阵乘法加速器(MMA),例如在模拟域中执行计算的矩阵乘法加速器111。
根据一个或多个实施例,计算单元310可以包含计算单元核312,所述计算单元核可以执行混合信号处理。根据一个或多个优选实施例,当计算单元310含有MMA时,计算单元核312可以包含可编程电阻器阵列(例如,闪存阵列)和输出编码值和/或二进制输出值的模数转换器(ADC)。
根据一个或多个实施例,计算单元310可以包含输入缓冲器314,所述输入缓冲器可以允许多个组件同时写入输入缓冲器314(例如,多缓冲)。作为非限制性实例,计算单元310可以从输入缓冲器314读取用于当前计算的数据,而用于下一次计算的数据可以同时写入输入缓冲器314的不同位置,并且因此,在一个或多个实施例中,输入缓冲器314包括用于并行或同时读取和写入功能的多缓冲配置。根据一个或多个优选实施例,输入缓冲器314可以具有以顺序方式写入输入缓冲器314的数据,同时可以以并行方式从输入缓冲器314读取数据。根据一个或多个优选实施例,存储在输入缓冲器314中的数据可以传送到计算单元核312。根据一个或多个优选实施例,输入缓冲器314可以至少部分地实施缓冲器追踪,其中任务可以通过共享缓冲器进行通信,如于2020年5月21日提交的题为“用于集成电路架构内数据流的缓冲器追踪的系统和方法(SYSTEMS AND METHODS FOR BUFFER TRACKING FORDATAFLOW WITHIN AN INTEGRATED CIRCUIT ARCHITECTURE)”的美国临时专利申请63/028,180中更详细地描述的,所述美国临时专利申请通过此引用以其整体并入。在一个或多个实施例中,缓冲器追踪与双缓冲同义。
根据一个或多个实施例,计算单元310可以包含计算控件316,所述计算控件可以至少部分地控制计算单元310内的处理,例如开始计算。根据一实施例,计算控件316可以向其它组件发出信号,表示计算完成。因此,在一个或多个实施例中,计算控件316与每个计算单元核312和输入缓冲器314相邻和/或直接信号或接触通讯,用于控制其一个或多个操作。
另外或可替代地,在一个或多个优选实施例中,计算单元310可以包含多个计算控件316,所述多个计算控件各自可以优选地布置在输入缓冲器314的任一侧。在此类优选实施例中,多个计算控件316可以包含:第一计算控件316,所述第一计算控件可以沿着输入缓冲器314的第一侧(例如,左侧)布置;以及第二计算控件316,所述第二计算控件可以沿着输入缓冲器的第二侧(例如,右侧)布置。在此布置中,计算单元输入缓冲器控制器390可以用于向第一和第二计算控件316中的一个或两者提供计算开始和/或计算配置信号。
另外或者可替代地,计算控件316可以与计算单元输出控制器380进行信号和/或电通信,使得计算控件316的输出(例如,完成的计算(左和/或右))可以直接发送到至少计算单元输出控制器380和可能发送到计算单元输入缓冲器控制器390。
根据一个或多个实施例,计算单元310可以包含累加器318,其可以至少部分地聚集来自计算单元核312的序列或并行输出(例如,偏移二进制结果等)。根据一个或多个实施例,累加器318可以将结果格式化为混合信号计算瓦片300(或集成电路100)的一个或多个组件的一个或多个下游所需的格式。根据一个或多个实施例,累加器318可以包含激活函数电路系统或激活应用激活函数,例如,Hard ReLU、Hard Sigmoid、Hard Tanh等,到计算单元310内的数据。根据一个或多个实施例,累加器318可以包含输出缓冲器,所述输出缓冲器可以至少部分地实施缓冲追踪。
另外或可替代地,累加器318可以被布置成邻近计算单元计算单元310中的每个计算单元和/或与其直接信号或接触通信,使得可以合计计算单元核312的计算输出并将其与累加器318一起存储。
另外或可替代地,计算单元310可以包含多个累加器318,所述多个累加器包含各自可以相邻地布置或在计算单元核312的每一侧的第一累加器318和第二累加器310。累加器318可以与至少计算单元输出控制器380进行信号和/或电通信并且从而提供从计算单元核312聚集(格式化和转换)的输出数据。
根据一个或多个实施例,计算单元310可以在混合信号计算完成时生成令牌。根据优选实施例,混合信号计算可以向另一组件,例如任务调度机构320、网络单元370,以及能够接收令牌的任何其它组件发送令牌。
4.2任务调度机构320
根据一个或多个实施例,任务调度机构320可以追踪任务的依赖性,并且一旦满足了任务的先决条件数和/或依赖性的组合,任务调度机构320可以生成信号以指示先决条件数和/或依赖性的组合已经满足。也就是说,在一个或多个实施例中,任务调度机构320可以用作可编程依赖性管理单元,所述单元可以专门用于检测令牌或类似的标记,这些令牌或标记可以被计数和/或组合以指示所有处理的完成、一个或多个数据缓冲器的状态,以及随后(或有时,并行)操作开始(例如,维护和传达组件之间的生产者-消费者关系等)所需的数据移动。作为非限制性实例,任务依赖性可以包含到达计算单元的输入数据、能够保持结果变为可用的输出缓冲器、可用的所需计算处理、存储在瓦片存储器中的瓦片编程,以及任务成功完成的任何其它要求。在一个或多个优选实施例中,当任务依赖性得到满足时,调度机构320随后可以向工作队列330进行通信,即可以执行所述任务。优选地,发往工作队列330的信号包含工作队列330应导致启动和/或执行的程序标识符和/或程序值。在一个或多个实施例中,任务调度机构320可以追踪至少与一个或多个数据缓冲器的状态、计算单元核312的利用和/或操作状态、和/或混合信号计算瓦片300和/或集成电路100内的数据移动有关的数据。
在一个或多个优选实施例中,任务调度机构320(有时在本文中称为“任务调度程序”)可以包含FSB模块,所述模块使用令牌来追踪任务依赖性,并且一旦满足了由令牌计数指示的任务依赖性,FSB模块可以分派命令,所述命令指示任务依赖性已经满足于另一个组件(例如,工作队列330)。在一个或多个实施例中,FSB模块可以被配置成追踪分层结构中的令牌,使得每个层可以追踪不同令牌和/或事件。根据一个或多个优选实施例,瓦片中的每个组件(例如,计算单元、SRAM、SALU、NOC、处理器等)可以具有单独或不同的FSB模块。在一个或多个变体实施例中,任务调度程序的多个不同层(即FSB模块)可以被计数和/或考虑组合(例如,统一)以允许多个级别的事件组合。也就是说,在此类变体实施例中,任务调度机构320可以跨多个级别组合不同令牌,以实现触发事件和/或实现用于使程序执行等的必要令牌计数。根据另一实施例,FSB模块可以由瓦片或集成电路的多个组件共享。
任何结构都可以用于实施任务调度机构320,只要所述结构可以追踪任务依赖性并在满足依赖性时创建信号。作为非限制性实例,任务调度机构320可以与运行汇编代码的处理器一起实施,所述汇编代码追踪任务依赖性并且满足依赖性时创建信号。对于另一个非限制性实例,任务调度机构320可以与有限状态机器(FSM)一起实施,所述有限状态机器追踪任务依赖性并在满足依赖性时创建信号。
4.3工作队列330
根据一个或多个实施例,工作队列330可以存储固定长度命令,所述命令可以允许执行任务,并且所述命令可以包含如源数据位置、目标数据位置、计算单元编程的位置以及执行任务所需的任何其它数据的位置等参数。在此类实施例中,当组件(例如,任务调度机构320)指示应执行任务时,工作队列330可以通过提供与工作队列330一起等待的固定长度命令来启动要在另一组件(例如,计算单元310)中执行的任务。根据一个或多个优选实施例,一旦任务被执行,所述任务就可以从工作队列330中移除。
根据一个或多个优选实施例,当任务调度机构320发出信号表明应该运行任务时,工作队列330可以通过触发计算单元输入缓冲器控制器390来在至少计算单元310中启动要执行的任务,以使用存储器控制器350启动DMA数据从存储器阵列340传送到输入缓冲器314。一旦DMA数据传送完成,工作队列330可以通过向输入缓冲器控制器390发送信号来启动混合信号计算,以通过信令计算控件316启动计算。根据一个或多个实施例,启动任务的信号可以是令牌、数据包、专用信号线、或用于传达已准备好启动任务的任何其它方式。在一个或多个实施例中,信号可以是令牌诱导的信号,因为所述信号可以在任务调度机构320响应于预先必要的令牌计数和/或令牌组合而产生。
根据一个或多个优选实施例,工作队列330可以由处理器配置和/或编程。根据一个或多个实施例,工作队列330可以由FSM配置和/或编程。
根据一个或多个实施例,工作队列330可以直接存取处理器的寄存器文件,这可以减少将数据移入和移出寄存器文件的负担。根据一个或多个实施例,工作队列330可以包含任何固定长度或任何可变长度的命令。
在工作队列330可以用于接收可变长度命令的变体实施方案中,工作队列可以用于将可变长度命令分区和/或转换成多个不同固定长度命令,以适合从工作队列330接收编程的计算元件的命令存储。在此类实施例中,如计算单元核312等计算元件可以具有用于处理其多个阶段的固定的编程。
另外或可替代地,工作队列330内的命令可以被排队,从而允许根据需要通过集成电路系统进行紧凑的传输。
根据一个或多个优选实施例,瓦片中的每个组件(例如,计算单元、SRAM、SALU、NOC、处理器等)可以具有单独的工作队列330。在另一实施例中,工作队列330可以由瓦片或集成电路的组件中的一个或多个组件共享。
应当注意,任务调度机构320的操作与一个或多个工作队列330一起允许具有若干技术优势,包含降低了集成电路系统内计算元件的操作复杂性和工作量。例如,任务调度机构320和一个或多个工作队列330一起工作可以用于消除每个计算元件具有标准指令存储、获取和解码机构的开销的需要,从而既节省了电路系统面积和功率,又节省了(控制流)验证系统的复杂性。
4.4存储器阵列340
根据一个或多个实施例,存储器阵列340可以是能够存储随后可以检索的指令和/或数据的任何结构。在一个或多个优选实施例中,存储器阵列340可以包含至少部分SRAM。
4.5存储器控制器350
根据一个或多个实施例,存储器控制器350可以控制对存储器阵列340的读取和/或写入存取。根据一个或多个优选实施例,存储器控制器350可以含有SRAM控制器(SCTL)。
根据一个或多个优选实施例,存储器控制器350可以促进存储器阵列340与组件之间的DMA。作为非限制性实例,存储器控制器350可以允许输入缓冲器314执行DMA以从存储器阵列340加载数据。根据一实施例,存储器控制器350可以允许其它存储器存取方法,例如,存储在单个存储器位置的存储器。另外或可替代地,存储器控制器350可以填充所存取的数据。作为非限制性实例,存储器控制器350可以用10个黑色像素填充图像的周长(即,对于8位空间灰度图像,值=0×0)。另外或可替代地,存储器控制器350可以格式化数据。作为非限制性实例,数据可以需要以某种格式存储或由计算组件使用。根据一个或多个实施例,存储器控制器350可以包含地址生成单元或电路,其可以使数据交错、去交错或对数据进行填充,并进一步计算一个或多个存储器地址,用于由给定瓦片的一个或多个计算电路或单元的任何一个进行一个或多个即将进行的计算。
4.6处理器360
根据一个或多个实施例,处理器360可以处理计算密集型程序和/或应用(例如,机器学习应用、神经网络等)。在一个或移动实施例中,处理器360可以是纳米处理器、简化指令集计算机(RISC)(例如,RISC-V)、微处理器、或可以执行处理的任何其它结构。根据一个或多个实施例,处理器360可以被实施为FSM。在一个或多个实施例中,处理器360可以用于生成多个不同令牌,所述多个不同令牌可以通过数据总线等传递到给定的瓦片中。在此类实施例中,多个不同令牌可以由一个或多个数据传送电路或单元以及给定瓦片的一个或多个计算电路或单元存储,并在一个或多个事件的满足或发生后在给定瓦片内发出或释放。
4.7联网单元370
根据一个或多个实施例,联网单元370可以允许混合信号计算瓦片300内的组件进行通信。根据一个或多个优选实施例,联网单元370可以包含片上网络(NoC)。作为非限制性实例,NoC拓扑可以包含环、网格、交叉开关和任何其它允许组件进行通信的拓扑。
4.8计算单元输出控制器380
根据一个或多个实施例,计算单元输出控制器380可以将计算单元310的输出路由到指定,例如存储器控制器350、网络单元370以及能够接收数据的任何其它组件。根据优选实施例,计算单元输出控制器380可以生成可以指示任务已经完成的令牌。根据优选实施例,任务完成令牌可以被发送到另一组件,例如任务调度机构320、网络单元370以及能够接收令牌的任何其它组件。
4.9计算单元输入缓冲器控制器390
根据一个或多个实施例,计算单元输入缓冲器控制器390可以接收来自工作队列330的信号,所述信号指示可以执行任务。响应于接收到对可以执行任务的指示,计算单元输入缓冲器控制器390可以从存储器控制器350请求数据。响应于对数据的请求,存储器控制器350可以将所请求的数据发送到单元输入缓冲器控制器390。响应于从存储器控制器350接收到数据,单元输入缓冲器控制器390可以将数据发送到输入缓冲器314。一旦数据被加载到输入缓冲器314中,计算单元输入缓冲器控制器390就可以通过信号计算控件316来初始化计算。
5.实施智能处理的计算机程序产品和/或智能处理集成电路的基于令牌的控制
优选的实施例的系统和方法及其变型可以至少部分地体现为和/或实施为被配置成接收存储计算机可读指令的计算机可读介质的机器。所述指令优选地由优选地与系统以及处理器和/或控制器的一个或多个部分集成在一起的计算机可执行组件来执行。计算机可读介质可以存储在任何合适的计算机可读介质上,如RAM、ROM、闪速存储器、EEPROM、光学装置(CD或DVD)、硬盘驱动器、软盘驱动器或任何合适的装置。计算机可执行组件优选地是通用或专用处理器,但是任何合适的专用硬件或硬件/固件组合装置可以可替代地或另外执行指令。
尽管为了简明而省略了优选实施例,但优选实施例包含本文中描述的各种方法的每种组合和排列。
如本领域技术人员将从前面的详细描述以及从附图和权利要求书中认识到的,可以对本发明的优选的实施例进行修改和变化而不偏离如在以下权利要求书中限定的本发明的范围。
Claims (17)
1.一种多瓦片混合信号集成电路的瓦片子系统,所述瓦片子系统包括:
多个不同瓦片计算电路,其中所述多个不同瓦片计算电路中的每个瓦片计算电路包含存储固定长度编程的存储设备;
基于令牌的任务调度程序,所述基于令牌的任务调度程序:
(i-a)基于检测到由所述多个不同瓦片计算电路中的一个或多个瓦片计算电路发出的多个不同令牌中的一个或多个令牌,追踪所述多个不同瓦片计算电路中的每个瓦片计算电路的状态;并且
(ii-a)基于检测到在所述瓦片子系统内发出的所述多个不同令牌中的所述一个或多个令牌,标识多个不同计算任务中的不同计算任务;以及
工作队列,所述工作队列包括数据缓冲器,其中所述工作队列:
(i-b)存储多个不同固定长度编程,其中所述多个不同固定长度编程中的每一个固定长度编程与所述多个不同计算任务中的一个或多个计算任务相关联;并且
(ii-b)基于由所述基于令牌的任务调度程序对所述不同计算任务的所述标识将所述多个不同固定长度编程之一传输到所述多个不同瓦片计算电路中的一个或多个瓦片计算电路。
2.根据权利要求1所述的瓦片子系统,其中
由所述一个或多个不同瓦片计算电路执行所述多个不同固定长度编程之一使所述一个或多个不同瓦片计算电路执行以下中的一个或多个:
在瓦片上输入数据缓冲器处存取输入数据并且用所述输入数据完成一次或多次计算,
将所述一个或多个不同瓦片计算电路的一个或多个计算输出输出到瓦片上输出数据缓冲器,
在瓦片外输入数据缓冲器处存取输入数据并且用所述输入数据完成一次或多次计算,以及
将所述一个或多个不同瓦片计算电路的一个或多个计算输出输出到瓦片外输出数据缓冲器。
3.根据权利要求1所述的瓦片子系统,其进一步包括:
一个或多个数据传送电路,所述一个或多个数据传送电路包括一个或多个地址生成单元,所述一个或多个地址生成单元计算一个或多个存储器地址,所述一个或多个存储器地址用于从瓦片外存储器阵列和瓦片上存储器存取输入数据以供所述一个或多个不同瓦片计算电路进行一个或多个即将进行的计算。
4.根据权利要求3所述的瓦片子系统,其中
所述基于令牌的任务调度程序进一步基于在所述混合信号集成电路的所述瓦片子系统内发出的所述多个不同令牌来追踪所述一个或多个数据传送电路的状态并且标识不同数据传送任务。
5.根据权利要求3所述的瓦片子系统,其中:
所述多个不同固定长度编程中的每一个固定长度编程进一步与多个不同数据传送任务中的一个或多个数据传送任务相关联,
所述工作队列基于由所述基于令牌的任务调度程序对所述不同数据传送任务的标识来将所述多个固定长度编程中与所述多个不同数据传送任务中的一个数据传送任务相关联的一个固定长度编程传输到所述一个或多个数据传送电路。
6.根据权利要求5所述的瓦片子系统,其中
由所述一个或多个数据传送电路执行所述固定长度编程引起以下之一:(a)将计算输入数据从瓦片外存储器阵列传送到所述一个或多个不同瓦片计算电路的瓦片上输入缓冲器;和(b)从所述一个或多个瓦片计算电路的瓦片上输出缓冲器传送计算输出数据。
7.根据权利要求5所述的瓦片子系统,其中
由所述一个或多个数据传送电路执行所述固定长度编程引起:
(a)将计算输入数据从存储器阵列传送到所述瓦片子系统;以及
(b)所述一个或多个数据传送电路通过使所述计算输入数据交错、去交错和对所述计算输入数据进行填充中的一者或多者来格式化所述计算输入数据。
8.根据权利要求1所述的瓦片子系统,其中
所述一个或多个不同瓦片计算电路包括矩阵乘法累加器和流式算术逻辑电路中的一个或多个。
9.根据权利要求1所述的瓦片子系统,其中
所述一个或多个不同瓦片计算电路中的每个瓦片计算电路包含将来自所述一个或多个不同瓦片计算电路中的相应一个瓦片计算电路的处理电路的计算输出的序列合计的累加器。
10.根据权利要求9所述的瓦片子系统,其中
所述累加器将一个或多个激活函数应用于所述计算输出的序列。
11.根据权利要求1所述的瓦片子系统,其中:
所述基于令牌的任务调度程序包括多个令牌追踪层,其中所述多个层中的每个不同的层追踪在所述瓦片子系统内发出的不同令牌,并且
所述标识所述不同计算任务包含将所述多个令牌追踪层中的两个或更多个令牌追踪层的不同令牌的计数组合。
12.根据权利要求1所述的瓦片子系统,其进一步包括:
一个或多个片上网络路由器,所述一个或多个片上网络路由器将数据包和数字令牌中的一个或多个传入和传出所述瓦片子系统。
13.根据权利要求12所述的瓦片子系统,其中
所述一个或多个片上网络路由器定义片上网络系统的一部分,所述部分将所述瓦片子系统与所述混合信号集成电路的多个不同瓦片的阵列互连,并且
所述片上网络系统的拓扑包括环形拓扑、网格拓扑、环面拓扑和交叉开关拓扑之一。
14.一种多瓦片集成电路的计算瓦片,所述计算瓦片包括:
多个不同瓦片计算电路,其中所述多个不同瓦片计算电路中的每个瓦片计算电路被配置成接收固定长度指令;
令牌通知任务调度程序,所述令牌通知任务调度程序:
(i-a)追踪由所述多个不同瓦片计算电路中的一个或多个瓦片计算电路发出的多个不同令牌中的一个或多个令牌;并且
(ii-a)基于所述追踪选择多个不同计算任务中的不同计算任务;以及
工作队列缓冲器,所述工作队列缓冲器:
(i-b)含有多个不同固定长度指令,其中所述多个不同固定长度指令中的每一个固定长度指令与所述多个不同计算任务中的一个或多个计算任务相关联;并且
(ii-b)基于由所述令牌通知任务调度程序对所述不同计算任务的所述选择,将所述多个不同固定长度指令之一传输到所述多个不同瓦片计算电路中的一个或多个瓦片计算电路。
15.根据权利要求14所述的计算瓦片,其进一步包括:
一个或多个数据传送电路,所述一个或多个数据传送电路包括一个或多个地址生成单元,所述一个或多个地址生成单元计算一个或多个存储器地址,所述一个或多个存储器地址用于从瓦片外存储器阵列存取输入数据以供所述一个或多个不同瓦片计算电路进行一个或多个即将进行的计算。
16.根据权利要求15所述的计算瓦片,其中
所述令牌通知任务调度程序进一步基于检测到在所述计算瓦片内发出的所述多个不同令牌来追踪所述一个或多个数据传送电路的状态并且标识不同数据传送任务。
17.一种实施多瓦片集成电路的计算瓦片的方法,所述方法包括:
由令牌通知任务调度程序追踪由多个不同瓦片计算电路中的一个或多个瓦片计算电路发出的多个不同令牌中的一个或多个令牌,其中所述多个不同瓦片计算电路中的每个瓦片计算电路被配置成接收固定长度指令;以及
由所述令牌通知任务调度程序基于所述追踪选择多个不同计算任务中的不同计算任务;以及
实施含有多个不同固定长度指令的工作队列缓冲器,其中所述多个不同固定长度指令中的每一个固定长度指令与所述多个不同计算任务中的一个或多个计算任务相关联;以及
由所述工作队列基于由所述令牌通知任务调度程序对所述不同计算任务的所述选择来将所述多个不同固定长度指令之一传输到所述多个不同瓦片计算电路中的一个或多个瓦片计算电路。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962940518P | 2019-11-26 | 2019-11-26 | |
US62/940,518 | 2019-11-26 | ||
US202063049674P | 2020-07-09 | 2020-07-09 | |
US63/049,674 | 2020-07-09 | ||
PCT/US2020/061928 WO2021108356A1 (en) | 2019-11-26 | 2020-11-24 | Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115136123A true CN115136123A (zh) | 2022-09-30 |
Family
ID=75974909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080081425.3A Pending CN115136123A (zh) | 2019-11-26 | 2020-11-24 | 用于集成电路架构内的自动化数据流和数据处理的瓦片子系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11016810B1 (zh) |
EP (1) | EP4066124A1 (zh) |
CN (1) | CN115136123A (zh) |
WO (1) | WO2021108356A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI773106B (zh) * | 2021-01-28 | 2022-08-01 | 華邦電子股份有限公司 | 具有運算功能的記憶體裝置及其操作方法 |
US12112113B2 (en) | 2021-03-05 | 2024-10-08 | Apple Inc. | Complementary die-to-die interface |
US11675722B2 (en) * | 2021-04-16 | 2023-06-13 | Apple Inc. | Multiple independent on-chip interconnect |
US11934313B2 (en) | 2021-08-23 | 2024-03-19 | Apple Inc. | Scalable system on a chip |
CN113986508B (zh) * | 2021-11-01 | 2024-06-18 | 同济大学 | 基于pn机模型的业务流网分解方法、系统、设备及介质 |
US11880709B2 (en) | 2022-01-04 | 2024-01-23 | The Toronto-Dominion Bank | System and method for handling real-time transactional events |
US20230325091A1 (en) * | 2022-02-04 | 2023-10-12 | Chronos Tech Llc | Devices and methods for synchronous and asynchronous interface using a circular fifo |
CN114780227B (zh) * | 2022-06-20 | 2022-09-23 | 中国人民解放军国防科技大学 | 一种基于芯粒化网络处理器架构的任务调度映射方法及系统 |
CN115562832B (zh) * | 2022-10-14 | 2023-04-07 | 天津大学 | 一种基于深度强化学习的多资源服务功能链调度方法 |
CN117348998A (zh) * | 2023-12-04 | 2024-01-05 | 北京怀美科技有限公司 | 应用于检测计算的加速芯片架构及计算方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0304628D0 (en) | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
KR100601881B1 (ko) * | 2004-01-28 | 2006-07-19 | 삼성전자주식회사 | 원칩 시스템에서 라우터들간의 라우팅 경로 설정 장치 및방법 |
US7506134B1 (en) * | 2006-06-16 | 2009-03-17 | Nvidia Corporation | Hardware resource based mapping of cooperative thread arrays (CTA) to result matrix tiles for efficient matrix multiplication in computing system comprising plurality of multiprocessors |
US9104483B2 (en) * | 2007-01-18 | 2015-08-11 | International Business Machines Corporation | System and method for automating and scheduling remote data transfer and computation for high performance computing |
US8341582B2 (en) * | 2009-01-30 | 2012-12-25 | Active-Semi, Inc. | Programmable analog tile configuration tool |
DE102009016742B4 (de) * | 2009-04-09 | 2011-03-10 | Technische Universität Braunschweig Carolo-Wilhelmina | Mehrprozessor-Computersystem |
US20100281483A1 (en) * | 2009-04-30 | 2010-11-04 | Novafora, Inc. | Programmable scheduling co-processor |
US8751556B2 (en) * | 2010-06-11 | 2014-06-10 | Massachusetts Institute Of Technology | Processor for large graph algorithm computations and matrix operations |
US9158610B2 (en) * | 2011-08-04 | 2015-10-13 | Microsoft Technology Licensing, Llc. | Fault tolerance for tasks using stages to manage dependencies |
-
2020
- 2020-11-24 WO PCT/US2020/061928 patent/WO2021108356A1/en unknown
- 2020-11-24 CN CN202080081425.3A patent/CN115136123A/zh active Pending
- 2020-11-24 US US17/102,643 patent/US11016810B1/en active Active
- 2020-11-24 EP EP20893441.4A patent/EP4066124A1/en active Pending
-
2021
- 2021-04-15 US US17/231,089 patent/US12014214B2/en active Active
-
2024
- 2024-05-23 US US18/672,842 patent/US20240311194A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210232435A1 (en) | 2021-07-29 |
US11016810B1 (en) | 2021-05-25 |
US20210157648A1 (en) | 2021-05-27 |
WO2021108356A1 (en) | 2021-06-03 |
US12014214B2 (en) | 2024-06-18 |
US20240311194A1 (en) | 2024-09-19 |
EP4066124A1 (en) | 2022-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115136123A (zh) | 用于集成电路架构内的自动化数据流和数据处理的瓦片子系统和方法 | |
EP3685319B1 (en) | Direct access, hardware acceleration in neural network | |
US10949328B2 (en) | Data flow graph computation using exceptions | |
US20240037314A1 (en) | Systems and methods for intelligently buffer tracking for optimized dataflow within an integrated circuit architecture | |
US20200042856A1 (en) | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit | |
JP2020537789A (ja) | 超並列ソフトウェア定義ハードウェアシステムにおける静的ブロックスケジューリング | |
CN112771498B (zh) | 用于实施智能处理计算架构的系统和方法 | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
KR20190044570A (ko) | 복수-타일 프로세싱 구성에서의 동기화 | |
TW201923562A (zh) | 組合多執行緒處理器中多個執行緒之狀態 | |
US20190279038A1 (en) | Data flow graph node parallel update for machine learning | |
US20190057060A1 (en) | Reconfigurable fabric data routing | |
US20190197018A1 (en) | Dynamic reconfiguration using data transfer control | |
US11782760B2 (en) | Time-multiplexed use of reconfigurable hardware | |
KR20190044566A (ko) | 복수-타일 프로세싱 구성에서의 동기화 | |
US20190130291A1 (en) | Dynamic reconfiguration with partially resident agents | |
US20210326189A1 (en) | Synchronization of processing elements that execute statically scheduled instructions in a machine learning accelerator | |
US20190228340A1 (en) | Data flow graph computation for machine learning | |
US20190272460A1 (en) | Configurable neural network processor for machine learning workloads | |
EP3343462A1 (en) | Scalable free-running neuromorphic computer | |
US11625519B2 (en) | Systems and methods for intelligent graph-based buffer sizing for a mixed-signal integrated circuit | |
US20240273334A1 (en) | Neural network accelerator architecture based on custom instruction on fpga | |
CN118504630A (zh) | 基于fpga上的定制指令和dma的神经网络加速器架构 | |
WO2019169238A1 (en) | Dynamic reconfiguration using data transfer control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220930 |