CN113632068A - 将外部存储器虚拟化为在机器学习加速器本地 - Google Patents
将外部存储器虚拟化为在机器学习加速器本地 Download PDFInfo
- Publication number
- CN113632068A CN113632068A CN201980094598.6A CN201980094598A CN113632068A CN 113632068 A CN113632068 A CN 113632068A CN 201980094598 A CN201980094598 A CN 201980094598A CN 113632068 A CN113632068 A CN 113632068A
- Authority
- CN
- China
- Prior art keywords
- machine learning
- environmental
- memory
- computing system
- ambient
- 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
- 238000010801 machine learning Methods 0.000 title claims abstract description 142
- 230000007613 environmental effect Effects 0.000 claims abstract description 83
- 238000000034 method Methods 0.000 claims abstract description 65
- 238000012545 processing Methods 0.000 claims description 94
- 230000008569 process Effects 0.000 claims description 49
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000004590 computer program Methods 0.000 abstract description 10
- 235000019800 disodium phosphate Nutrition 0.000 description 19
- 238000004891 communication Methods 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 13
- 230000009471 action Effects 0.000 description 8
- 239000004744 fabric Substances 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000002618 waking effect Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- XEEYBQQBJWHFJM-UHFFFAOYSA-N Iron Chemical compound [Fe] XEEYBQQBJWHFJM-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Control Of Throttle Valves Provided In The Intake System Or In The Exhaust System (AREA)
- Electrically Operated Instructional Devices (AREA)
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Devices For Executing Special Programs (AREA)
- Power Sources (AREA)
Abstract
方法、系统和装置,包括在计算机存储介质上编码的计算机程序,以用于将外部存储器虚拟化为对机器学习加速器本地的。一种环境计算系统包括:环境机器学习引擎;低功率CPU;以及SRAM,其至少在所述环境机器学习引擎和所述低功率CPU当中被共享;其中所述环境机器学习引擎包括用以从所述环境机器学习引擎所生成的虚拟地址转换为所述SRAM内的物理地址的虚拟地址逻辑。
Description
背景技术
本说明书涉及机器学习加速器。
机器学习(“ML”)加速器是设备或设备上的组件,例如具有被设计用于有效训练机器学习模型、执行机器学习模型或训练机器模型和执行机器学习模型两者的专用架构的集成电路。
ML加速器可以被配置成通过一个或多个机器学习模型执行推理过程。每个推理过程使用机器学习模型的输入和所学习的参数值来生成一个或多个由学习模型预测的输出。ML加速器可以包括一个或多个计算图块。一般来说,计算图块是被配置成独立执行一组计算的自包含计算组件。ML加速器的图块可以被布置在网络中且被编程,以使得ML加速器的每个图块被配置成通过机器学习模型执行推理过程的一部分的操作。例如,如果机器学习模型是神经网络,那么主ML引擎150中的每个图块可以被配置成计算神经网络的一层的计算。
ML加速器需要大量存储器来灵活处理不同种类的机器学习模型。如果ML加速器是环境计算设备(例如蜂窝电话或其他计算设备)中的组件,该ML加速器可以处于低功率状态,但可以监测和响应于来自环境的输入,那么该要求至少产生两个问题:
首先,对于大多数使用ML加速器的环境计算设备来说,分配更大的存储器范围以适应更大的机器学习模型的成本过高。附加地,该方法还导致浪费专用于ML加速器的存储器,该ML加速器可能经常执行仅需要所分配存储器的一小部分的模型。考虑到便携性所设计的环境计算设备的紧密封装芯片上也浪费了物理空间。被分配给ML加速器的存储器也不能用于设备的其他处理组件。
其次,未用于处理机器学习模型的存储器仍会从设备中汲取电力,从而浪费能量。在许多考虑到低功耗所设计的环境计算设备上,该问题更加严重。
发明内容
本说明书描述了用于虚拟化外部存储器以供ML加速器使用的技术。ML加速器可以包括逻辑,例如被实施为集成电路,以便在处理或训练机器学习模型时转换由ML加速器访问的虚拟存储器地址。虚拟存储器地址被转换为ML加速器外部(诸如在RAM上或以通信方式被连接到ML加速器被实施的处理子系统的系统级高速缓存上)的存储器位置。具有对应参数的机器学习模型可以从ML加速器外部被流式传输且由ML加速器访问,以模拟对在ML加速器本地的存储器中的位置的读取和写入。
在本说明书中所描述的主题的特定实施例可以被实施,以便实现以下优点中的一个或多个。小型低功率ML加速器可以被实施,以处理由环境计算设备接收到的环境信号。ML加速器可以是单个计算图块,可以访问更大的共享存储器高速缓存,而不会将对更大的存储器高速缓存的访问仅约束于ML加速器。
虚拟存储器地址可以经济地被指派给流式传输机器学习模型和对应的参数,这是因为ML加速器可以如由针对特定机器学习模型的存储器要求所述地扩大或缩小虚拟存储器地址范围。ML加速器可以访问机器学习模型和在ML加速器外部的存储器上所存储的参数,而无需重新流式传输数据,例如,无需重新流式传输卷积神经网络中经常重新使用的模型参数。进一步地,ML加速器可以访问外部所存储的机器学习模型和参数,而无需任何特殊配置。换句话说,从ML加速器的角度来看,ML加速器似乎正在访问对加速器本地的存储器。
类似地,ML加速器也可以在具有该存储器配置的设备中,访问系统级高速缓存中所存储的数据。分配虚拟存储器地址的能力避免了对ML加速器的大量专用存储器的需求,从而降低了功耗和ML加速器必须在环境计算设备中占用的物理空间。
为在ML加速器上执行而编译的机器学习模型可以使用所公开的存储器虚拟化特征,而无需进行大量配置或定制。针对机器学习模型的编译器可以用指示存储器虚拟化应该被使用的最少的附加指令编译模型。
在附图和下文的描述中阐述了本说明书的主题的一个或多个实施例的细节。主题的其他特征、方面和优点将根据描述、附图和权利要求书而变得明显。
附图说明
图1是实施具有虚拟地址逻辑的ML加速器的示例计算设备的图。
图2是SOC上的示例系统的图,该SOC实施以通信方式被连接到图1的计算设备的SLC。
图3是针对用于使用存储器虚拟化在ML加速器上执行机器学习模型的示例过程的流程图。
在各个附图中,相似的附图标记和指定指示相似的元件。
具体实施方式
本说明书描述了将存储器虚拟化实施为对机器学习(“ML”)加速器本地的技术。ML加速器可以通过由对ML加速器本地的虚拟地址逻辑自动指派的虚拟存储器地址来访问外部存储器,而不是将大量存储器专用作为对ML加速器的本地的。针对ML加速器的虚拟地址逻辑还可以包括取决于在编译通过模型实施推理过程的程序期间被添加到机器学习模型的配置选项而打开或关闭该存储器虚拟化特征的逻辑。
这个和其他配置选项可以在编译机器学习模型期间被包括为可由ML加速器(诸如环境ML引擎134或主ML引擎150,下文所讨论)执行的编译指令。
图1是实施具有虚拟地址逻辑的ML加速器的示例计算设备100的图。设备100可以包括在任何适当的计算设备(例如智能电话、智能手表、健身追踪器、个人数字助理、电子平板计算机、膝上型计算机,仅举几个示例)中所实施的环境计算系统110。计算设备100的环境计算系统110可以被使用,以使得计算设备100可以保持在低功率状态,但通过依序唤醒系统的适当处理组件来持续监测和响应于来自环境的输入。虽然本文关于图1讨论了环境计算系统110,但对实施低功率环境计算系统的一般讨论可以在国际申请No.PCT/US2018/062329中被找到,其通过引用整体并入本文中。
计算设备100的一个或多个组件可以被实施在计算设备内的片上系统(“SOC”)上。SOC可以是集成电路,其例如使用硅中介层、堆叠管芯或互连桥在单个硅衬底上或多个互连管芯上包括系统的每个组件。计算设备的其他组件(包括主CPU集群140、主ML引擎150或处理子系统130)可以被实施在相同或单独的管芯上。
计算设备100可以包括与SOC分离且独立于SOC且可以例如被安装在公共外壳上的组件,包括传感器112、一个或多个显示器、电池和其他组件。计算设备100包括控制子系统120,用于控制至系统中的组件的功率供应及传感器信号。设备100包括用于处理传感器信号和生成输出的处理子系统130。
设备100可以包括多个外围传感器112。外围传感器112可以包括一个或多个音频传感器102、一个或多个雷达传感器104、一个或多个触摸传感器106、全球定位系统(“GPS”)传感器108和/或加速度计109。系统可以包括附加的、更少的或备选的外围传感器。外围传感器112可以是被配置成响应于环境输入生成传感器信号的设备。
环境计算系统110可以包括一个或多个外围接口114。外围接口114可以是计算设备100的组件,即使在设备处于其最低功率状态时该组件也被通电。外围接口114可以包括任何适当的外围接口,以便将从外围传感器112接收到的输入转换成要由环境计算系统110使用的传感器信号。
每个外围接口114被配置成在检测到环境输入时生成相应的中断。一般来说,每个中断可以标识传感器数据的来源,例如负责中断的外围接口或传感器的标识符。中断由一个或多个中断控制器124接收和处理。例如,在接收到中断时,中断控制器124可以唤醒功率控制单元(“PCU”)121,该功率控制单元包括功率管理单元(“PMU”)122和时钟控制单元123。PMU 122可以控制设备100的哪些组件接收功率和每个组件接收多少功率。时钟控制单元123可以控制设备100的组件操作的频率。
在本说明书中,每当传感器信号被描述为其他处理组件的输入时,输入可以是由传感器本身生成的模拟电信号、传感器信号的数字表示或表示原始信号的一个或多个特性的传感器信号的已处理数字表示。
在接收到中断时,PCU 121可以基于中断的来源来确定环境计算系统110的哪些其他组件应该被启动,以便进一步处理引起中断的传感器信号。为了为这种组件提供处理支持,PCU 121可以唤醒静态随机存取存储器(“SRAM”)139和系统通信结构。
系统通信结构是通信子系统,其以通信方式耦合环境计算系统110的内部组件、这些内部组件与外部组件的通信或这些的某种组合。结构可以包括任何适当的通信硬件组合,例如总线或专用互连电路系统。
尽管未描绘,但是计算设备100还可以包括在这种计算设备上常见的一个或多个其他组件,例如显示器、调制解调器、图形处理单元、显示处理器或专用图像处理器,仅举几个示例。这些组件可以在下文所描述的低功率状态期间被断电且如果系统确定传感器信号与需要其启动的应用相匹配,则被启动。
设备100还包括主CPU集群140。主CPU集群140是计算设备100的组件,该组件可以包括一个或多个与处理子系统130中的组件分离的通用处理器。主CPU集群140的处理器一般比处理子系统130中的任何组件具有更多的计算能力,且因此,主CPU集群140的处理器也可能比处理子系统130中的任何组件消耗更多的功率。
控制子系统120还可以包括计时器129,该计时器是可以检测系统故障且解决那些故障的电子计时器。在正常操作期间,控制子系统120可以定期重置计时器129以防止计时器129超时。如果,例如,由于硬件故障或程序错误,控制子系统120未能重置计时器,那么计时器将结束且生成超时信号。超时信号可以被用于发起一个或多个纠正动作。纠正动作可以包括将环境计算系统110置于安全状态且恢复正常系统操作。
处理子系统130包括环境机器学习引擎134。环境ML引擎134是专用处理设备,其被配置成通过一个或多个机器学习模型执行推理过程。
环境ML引擎134可以包括一个或多个乘法累加(“MAC”)单元和一个或多个用于计算神经网络启动或其他神经网络层输出的和寄存器以及用于控制和寄存器与MAC单元之间的数据交换的控制器。环境ML引擎134还可以包括指令存储器、直接存储器访问路径、寄存器和其他处理组件。在一些实现方式中,环境ML引擎134是单个机器学习计算图块,其被配置成加速机器学习推理过程的计算。
环境ML引擎包括虚拟地址逻辑135。虚拟地址逻辑135可以是环境ML引擎134中的专用电路,该专用电路可以将由环境ML引擎生成的虚拟地址转换为SRAM 139中的物理存储器地址,SRAM 139是环境ML引擎134的非本地存储器。在本说明书中,针对计算设备100的组件(例如环境ML引擎134)的非本地存储器是指由组件和一个或多个其他组件使用的存储器。换句话说,非本地存储器不由组件独占地使用。
例如,SRAM 139可以是通用静态随机存取存储器设备,其可以由处理子系统130的多个处理组件(例如低功率DSP 136、高功率DSP138、低功率CPU 132以及环境ML引擎134)共享。因此,SRAM是针对环境ML引擎134的非本地存储器。相反,环境ML引擎134还可以包括本地存储器,该本地存储器由环境ML引擎134独占地使用且可以被集成到与环境ML引擎的其余部分相同的硅管芯中。例如,环境ML引擎134可以具有包括一个或多个集成寄存器的本地存储器。集成寄存器是针对环境ML引擎134的本地存储器,这是因为寄存器中的数据只能被环境ML引擎134读取或写入。
SRAM 139可以存储传感器信号、处理器指令和数据、系统输出和其他数据,例如由或将由环境ML引擎134实施的神经网络模型的神经网络参数。
一般来说,SRAM与DRAM的区别在于SRAM不需要周期性地被刷新。如下文更详细地描述,SRAM 139可供处理子系统130中的处理组件直接或通过直接存储器访问(“DMA”)控制器128访问。在一些实现方式中,SRAM 139包括多个存储器库,每个库具有基本类似的数据容量,例如每个库1、10或100MB。附加地,每个单独的存储器库可以包括多个存储器块,当进入低功率状态时,这些存储器块可以单独地被断电。通过在多个存储器库中仔细对块被断电的顺序进行排序,SRAM存储器地址空间可以保持连续。
虚拟地址逻辑135可以转换环境ML引擎134生成的虚拟存储器地址。在一些实现方式中,虚拟地址逻辑135例如使用环境ML引擎134生成的虚拟地址的最高有效位维护虚拟页面与物理页面之间的映射。
虚拟地址逻辑135可以接收从由环境ML引擎134执行的编译指令生成的虚拟地址读取或写入该虚拟地址的请求。虚拟地址逻辑135然后可以将虚拟地址映射到SRAM 139中的物理地址。在一些实现方式中,虚拟地址逻辑135将虚拟页号映射到物理页号且复制最低有效位以生成物理地址。
将虚拟存储器地址转换为物理存储器地址意味着当ML加速器执行针对机器学习模型的编译指令时,相反,每条对编译指令中的存储器地址中的数据的读取或写入指令导致对应物理存储器地址位置处的数据被读取或写入。在一些实现方式中,虚拟地址逻辑135被配置成响应于环境ML引擎134对被映射到对应物理存储器地址的虚拟存储器地址位置处的数据执行读取或写入指令,向SRAM 139中的对应物理存储器地址位置发出读取或写入指令。
虚拟地址逻辑135可以针对存储器中的对于环境ML引擎134来说是非本地的位置将虚拟存储器地址映射到物理存储器地址。在一些实现方式中,处理子系统130可以覆写由映射的物理存储器地址引用的位置处的现有数据。虚拟地址逻辑135可以被配置成自动地或响应于由在机器学习模型上执行推理过程的编译程序指示的配置选项(例如作为编译程序上的要在环境ML引擎134上执行的一个或多个指令)来执行该初始化步骤。
环境ML引擎134可以通过访问分配的非本地存储器来执行具有一个或多个指令的编译程序,该编译程序使用机器学习模型执行推理过程。从环境ML引擎134的角度来看,虚拟存储器地址位置处所访问的数据被视为对环境ML引擎134本地的,而实际上,数据从共享的存储器来源(诸如从SRAM 139或系统级高速缓存)被访问。
设备100还可以可选地包括主ML引擎150。主ML引擎150是专用处理设备,其被配置成通过一个或多个机器学习模型执行推理过程,即对主ML引擎150执行机器学习模型。每个推理过程使用机器学习模型的输入和所学习的参数值来如利用环境ML引擎134生成一个或多个由学习模型预测的输出。主ML引擎150可以包括一个或多个计算图块,该一个或多个计算图块可以被布置在网络中且被编程,以使得主ML引擎150的每个图块被配置成通过机器学习模型执行推理过程的一部分的操作。具有多个计算图块的合适的机器学习引擎在美国专利No.9,710,265中被描述,其通过引用整体并入本文中。
当设备100包括主ML引擎150和环境ML引擎134两者时,环境ML引擎134一般具有较少的计算图块,且因此具有比主ML引擎150较少的处理能力且比主ML引擎150消耗较少的功率。例如,环境ML引擎134可以被实施为一个或两个计算图块,而主ML引擎150可以具有8个或更多互连图块。
每个计算图块可能具有在图块本地的少量存储器。对计算图块本地的存储器量通常不足以单独处理机器学习模型,这就是为什么(如上文所讨论)单个图块可以被配置到网络中以共享资源且将处理针对给定输入的机器学习模型的任务分配作为被指派给每个计算图块的一系列子任务。
因为环境ML引擎134一般用比主ML引擎150相对较少的计算图块来实施,所以即使在优化网络配置或在图块当中划分处理之后,一个或两个可用的计算图块也可能不足以处理机器学习模型。这种情况可能是因为计算图块可能缺乏处理机器学习模型的计算能力,或是因为计算图块可能没有足够的存储器。在一些实现方式中,即使最基本的联网或分区也不可用,这是因为环境ML引擎134被实施为单个计算图块。因此,虚拟地址逻辑135可以根据环境ML引擎134的要求执行存储器虚拟化以执行机器学习模型。
尽管未在图1中示出,但主ML引擎150还可以包括用于虚拟化针对主ML引擎150的非本地存储器的虚拟地址逻辑。虽然主ML引擎150一般比环境ML引擎134具有更多的计算资源,但主ML引擎150也可能需要访问对主ML引擎150非本地的存储器来执行某些机器学习模型。在那些情况下,虚拟地址逻辑可以使用针对环境ML引擎134中的虚拟地址逻辑135所描述的相同技术来针对主ML引擎150被实施。代替如用环境ML引擎134所描述将虚拟存储器地址转换为SRAM中的物理存储器地址,主ML引擎150的虚拟地址逻辑可以被配置成将虚拟存储器地址转换为系统级高速缓存(“SLC”)的物理存储器地址。
SLC可以是设备或设备的组件,例如计算设备100,其可以针对系统中的多个不同硬件设备缓存从存储器取回的数据或要存储在存储器中的数据。换句话说,SLC的不同高速缓存线可以存储属于不同硬件设备的数据。在一些实现方式中且如下文关于图2所讨论,虚拟地址逻辑可以被实施在主ML引擎150上,以转换对应于SLC上的物理存储器位置的虚拟地址。
接下来,对环境计算系统110的示例操作的讨论被呈现。在本说明书中,术语“唤醒”和“启动”将被用于意味着向针对电子装置的特定处理组件或其他电路系统供应增加的功率量。环境计算系统110可能已经或可能没有向正在被唤醒或启动的处理组件或其他电路系统供电。换句话说,被唤醒或启动的组件先前可能已经或可能没有完全被断电。唤醒或启动处理组件可以引起处理组件执行引导过程且使得针对处理组件的指令和数据被加载到随机存取存储器中。备选地或附加地,唤醒或启动处理组件可以包括从先前挂起的状态恢复。
当PCU 121唤醒SRAM 139时,PCU 121可以唤醒少于SRAM 139的所有块或所有存储器库。PCU 121可以替代地仅唤醒对于处理子系统130的下一组件足够的多个块,以确定是否进一步升级设备100的组件的加电。
PCU 121还可以向SRAM 139的不同块提供不同的功率电平。例如,在监测功率状态下,PMU 122可以向整个SRAM 139供应较低的保持电压以降低其功耗。如果没有处理组件需要访问SRAM 139,那么PMU 122还可以向SRAM 139供应保持电压。在处理功率状态下,PMU122可以向SRAM 139的全部或部分提供正常电压且向SRAM 139的其他部分提供降低的电压或不提供电压。
在处置中断的过程期间,环境计算系统110还可以唤醒一个或多个DMA控制器128。DMA控制器128可以管理允许针对传入传感器信号的较高数据带宽的DMA路径。例如,DMA控制器可以被用于将来自麦克风的音频数据连续地流式传输到SRAM 139中以便处理子系统130中的处理组件访问。相反,DMA控制器也可以被用于连续地流式传输在SRAM 139中所存储的音频数据,以便通过一个或多个扬声器作为声音输出。DMA控制器128也可以被用于将任何适当的传感器数据流式传输到SRAM 139中,但使用编程IO可能比针对少量数据启动DMA控制器在计算上更便宜。因此,环境计算系统110可以针对相对高带宽的传感器数据(例如音频数据和雷达数据)启动和使用DMA控制器128,且可以将编程IO用于其他类型的传感器数据。
在准备结构和SRAM 139之后,PCU 121然后可以使用中断来确定要唤醒处理子系统130的哪个其他组件。例如,PMU 122可以取决于一个或多个传感器中的哪一个生成中断来控制功率是否被提供给处理子系统130的低功率CPU 132、低功率DSP 136或其他组件。在一些实现方式中,外围接口114和控制子系统120的组件是设备100中仅有的在监测功率状态下被通电的组件,该监测功率状态是环境计算系统110正在等待接收由于对计算设备的环境输入而引起的中断的功率状态。
处理子系统130的处理组件可以包括低功率CPU 132、环境ML引擎134、低功率DSP136和高功率DSP 138。在一些实现方式中,处理子系统具有这些组件中的一个或多个的多个实例,例如多个低功率DSP或多个高功率DSP。例如,处理子系统130可以具有专用于处理音频信号的一个高功率DSP和专用于处理雷达信号的单独的高功率DSP。备选地或附加地,处理子系统130可以具有专用于处理图像数据的高功率DSP。
在监测功率状态下,处理子系统130中的处理组件可以维持在保持模式。PCU 121可以通过减少或消除被提供给组件的功率来将组件维持在保持模式。例如,在保持模式下,PCU 121可以为处理组件供应刚好足以维持寄存器状态的功率,但没有足够的功率来处理寄存器中的数据。
低功率CPU 132可以是包括寄存器、控制电路系统和算术逻辑单元(“ALU”)的通用可编程处理器。一般来说,低功率CPU 132比计算设备的主CPU集群140消耗更少的功率,且可以包含更少的处理核心。在一些实现方式中,低功率CPU 132主要是对单个指令和单个数据输入进行操作的标量处理器。基于低功率CPU 132接收的传感器信号的类型和基于那些传感器信号的特性,低功率CPU 132可以确定系统的其他组件应该被启动,例如通信结构、DMA控制器128、部分或全部SRAM 139或这些的某种组合。在启动这些组件之后,低功率CPU132可以可选地返回到非操作状态。
低功率CPU 132可以向环境ML引擎134提供传感器信号或其处理版本以便进一步解释。例如,如果低功率CPU 132接收到对应于加速度计输入的传感器信号,那么低功率CPU132可以确定环境ML引擎134应该进一步处理传感器信号。环境ML引擎134然后可以进一步处理传感器信号。
环境ML引擎134的一项任务是使用传感器信号通过机器学习模型执行推理过程,以生成可以触发唤醒其他处理组件以进一步处理传感器信号的输出。换句话说,环境ML引擎134可以接收传感器信号或其由低功率CPU 132或另一处理组件生成的处理版本,且环境ML引擎134可以生成表示哪些其他处理组件应该进一步处理传感器信号的输出。
环境ML引擎134还可以针对各种不同的任务执行机器学习模型,包括:片上自动语音识别、文本到语音生成或计算设备的用户的手势识别。环境ML引擎134可以将执行机器学习模型的输出提供给低功率CPU 132或另一处理组件,以用于进一步的动作。
如上文所讨论,虚拟地址逻辑135可以被配置成当被指示例如来自针对机器学习模型的编译指令中的指令时执行存储器虚拟化。该选项可以在机器学习模型的编译期间由适当配置的编译器设置,例如作为默认选项或响应于来自用户对实施编译器的程序的提示的输入。无论是否选择了存储器虚拟化,用于在环境ML引擎134上执行机器学习模型的编译指令都保持不变,但是编译器可以例如通过一个或多个指令附加地指示,环境ML引擎134应该使用存储器虚拟化来执行机器学习模型。
如果存储器虚拟化被启用,那么环境ML引擎134可以使用由虚拟地址逻辑135生成的映射虚拟存储器地址,从对环境ML引擎134非本地的存储器的来源流式输入模型参数和其他模型配置信息。例如,针对机器学习模型的模型参数可以被存储在SRAM 139中且由一个或多个物理存储器地址引用。
针对机器学习模型的编译指令可以包括用于在存储器中加载、读取和写入数据的指令。虚拟地址逻辑可以被配置成使得在编译的机器学习模型的编译指令中所引用的虚拟存储器地址被转换为对应的物理存储器地址而不更改编译指令在存储器中的引用。
作为附加步骤,处理子系统130可以最初将针对机器学习模型的模型参数和其他配置信息从另一存储器设备加载到SRAM 139中。例如,DMA控制器128可以将模型参数从DRAM流式传输到SRAM 139中。DRAM可以在环境计算系统110本地或外部。然后,虚拟地址逻辑135可以将虚拟存储器地址映射到模型参数被加载的SRAM 139中的物理存储器位置。作为将参数流式传输到SRAM 139中的一部分,DMA控制器128可以被配置成覆写在SRAM 139中所存储的现有数据,或备选地将模型参数流式传输到SRAM 139中的可用空间中。机器学习模型的编译指令中的一个或多个指令可以指定DMA控制器128是否应该覆写SRAM 139中的现有数据。
如上文所讨论,因为SRAM 139可以包括多个存储器库,这些存储器库取决于计算设备100的状态而可能被或可能不被启动,所以SRAM 139中的一些存储器块或存储器库可能不可用,这是因为已经存在现有数据,或是因为那些特定的存储器块或存储器库没有被启动。
虽然DRAM可以是环境计算系统110的一部分,但DRAM也可以在环境计算系统110外部。在一些实现方式中,DRAM在环境计算系统110外部但仍然在相同的SOC上。在一些实现方式中,DRAM在环境计算系统被实施的SOC外部。在任一实现方式中,DMA控制器128可以被配置成从DRAM流式传输模型参数。
如果模型参数不能被流式传输到SRAM 139中,例如,因为SRAM139当前正被环境计算系统110的其他处理组件使用,那么虚拟地址逻辑135可以将虚拟存储器地址转换为模型参数直接被存储的物理存储器地址。在一些实现方式中,虚拟地址逻辑可以被配置成在模型参数被存储的DRAM上转换物理存储器地址,而不是首先使用DMA控制器128将模型参数流式传输到SRAM 139中。
针对机器学习模型的配置信息还可以包括在编译时指定的一个或多个指令,从而指示环境ML引擎134应该可以访问多少本地存储器。例如,如果编译器在假设执行模型的ML引擎将具有被分配给它的一定大小的存储器的情况下将机器学习模型编译成一组指令,那么虚拟地址逻辑可以被配置成提供该大小的存储器作为被映射到SRAM 139中的物理存储器地址的虚拟存储器地址。备选地,在编译时,执行编译器的程序可以响应于用户提示或默认条件而设置存储器大小。
环境ML引擎134可以引用如上文结合访问对环境ML引擎134本地所存储的数据所描述的虚拟存储器地址。在环境ML引擎134包括一个或多个寄存器的一些实现方式中,环境ML引擎134可以通过虚拟存储器地址访问对环境ML引擎134非本地的数据,且然后将访问的数据加载到环境ML引擎134的寄存器。如此,最有可能由环境ML引擎134重复访问的数据(诸如针对卷积神经网络模型中的卷积的参数或公共参数的子集)可以被存储在环境ML引擎134可用的最快存储器上,该存储器通常是本地寄存器。
由环境ML引擎134生成的输出可以明确指定处理组件ID的组合或枚举功率状态的标识符,或输出可以是由低功率处理组件(例如低功率CPU或低功率DSP)解释的功率状态的表示,以便标识应处理传感器信号的其他高功率处理组件。作为该过程的一部分,低功率处理组件可以明确或隐含地确定是否需要任何其他处理。例如,低功率处理组件可以基于环境ML引擎134的输出来确定不需要进一步处理且环境计算系统110可以变换回监测功率状态。
在最低级别的监测功率状态下,PCU 121可以将环境ML引擎134保持在低功率状态或完全被断电。在处理功率状态下,取决于什么传感器信号在外围接口114处可用和低功率CPU 132或低功率DSP 136如何解释信号,PCU 121可以向或可以不向环境ML引擎134提供功率。在一些实现方式中,低功率DSP 136或低功率CPU 132可以解释信号以指令PCU 121为附加的中间功率状态提供功率,其中环境ML引擎134也针对推理过程被通电,但其他高功率处理组件尚未被通电。
低功率DSP 136和高功率DSP 138是专用处理器,其被配置用于高效解码和处理高度向量化的信号。处理子系统130可以包括针对不同目的而设计的多种DSP。例如,处理子系统130可以包括被配置成处理雷达信号的DSP或被配置成处理音频信号的DSP。
如上文所描述,低功率DSP 136可以执行来自控制子系统120的传感器信号的初始解释。低功率DSP 136还可以执行其他信号处理任务。一般来说,高功率DSP比低功率DSP消耗更高级别的功率,这是因为它们有更多的有源寄存器、它们并行访问和处理更多的数据、因为它们更依赖于存储器操作或它们的某种组合。
图2是SOC 200上的示例系统的图,该SOC实施以通信方式被连接到图1的计算设备100的SLC。例如,SOC 200可以被安装在计算设备100上或被集成到该计算设备中,或是单独的设备或单独设备的组件。
计算设备组件250可以通过SOC结构240与SLC 230通信。计算设备组件250可以是计算设备100上被配置成能够与SLC 230通信的任何组件,且可以包括主ML引擎150、主CPU集群140和环境计算系统110。
SOC结构240是SOC 200的通信子系统且可以包括允许计算设备组件250彼此通信以及做出请求以在SLC 230上读取和写入数据的通信路径。SLC 230具有专用高速缓存存储器,该专用高速缓存存储器可以使用专用寄存器或高速RAM来实施。SOC结构240可以包括任何适当的通信硬件组合,例如总线或专用互连电路系统。
SOC 200还包括允许SLC 230与存储器控制器220之间的通信的通信路径252以及允许存储器控制器220与对SOC 200非本地的DRAM 210之间的通信的芯片间通信路径254。存储器控制器220可以处置请求以向SLC 230和DRAM 210写入存储器以及从SLC 230和DRAM210写入存储器。尽管图2中仅示出了DRAM 210,但存储器控制器220可以与未示出的其他存储器设备(诸如任何易失性或非易失性存储器设备,例如硬盘驱动器或固态驱动器)通信。
SLC 230可以缓存来自计算设备组件250的读取请求、写入请求或两者。SLC 230可以通过用在高速缓存数据中所存储的数据响应于请求而不是从DRAM 210获取数据来缓存来自客户端设备的读取请求。类似地,SLC可以通过将新数据写入高速缓存中而不是将新数据写入DRAM中来缓存来自客户端设备的写入请求。SLC 230然后可以在稍后时间执行回写以将更新的数据存储在DRAM 210中。
如上文所讨论,主ML引擎150可以包括虚拟地址逻辑,以便将虚拟存储器地址转换为映射到对主ML引擎150非本地的存储器的物理存储器地址。尽管虚拟地址逻辑135将物理存储器地址映射到处理子系统130的共享SRAM 139,但针对主ML引擎150的虚拟地址逻辑可以在一些实现方式中将虚拟存储器地址映射到位于SLC 230中的物理存储器地址。
当针对在主ML引擎150上执行的机器学习模型启用存储器虚拟化时,虚拟地址逻辑可以被配置成通过SOC结构240与SLC 230通信以将虚拟存储器地址转换为DRAM 210中的物理存储器地址。作为初始化步骤,存储器控制器220可以流式输入模型参数,模型参数第一次正在从DRAM 210或对SOC 200非本地的其他存储器设备被流式传输到SLC 230中。
图3是针对用于使用存储器虚拟化在ML加速器上执行机器学习模型的示例过程的流程图。出于方便起见,图3中的过程将被描述为由位于一个或多个位置中的一个或多个计算机的系统来执行。例如,根据本说明书适当编程的环境计算系统(例如图1的环境计算系统110)可以执行图3中的过程。用于实施可以执行图3中的过程的系统的附加细节可以在上文图1和图2的描述中被找到。
系统将模型参数从对系统非本地的存储器设备流式输入且流式传输到共享存储器设备中(310)。如上文参考图1和图2所讨论,针对在ML加速器上执行的机器学习模型的模型参数可以被存储在对系统非本地的存储器中,诸如被存储在DRAM上。例如,系统可以通过DMA控制器流式输入模型参数和任何用于执行机器学习模型的配置选项。例如,存储器设备可以是共享SRAM。在一些实现方式中,如较早所讨论,系统可以覆写共享存储器设备中的现有数据。如上文所讨论,ML加速器可以是系统的环境ML引擎或主ML引擎。如果ML加速器是系统的主ML引擎,那么共享存储器设备可以是系统级高速缓存。
系统通过ML加速器上的虚拟地址逻辑生成虚拟存储器地址,这些虚拟存储器地址针对在共享存储器设备中存储模型参数的位置被映射到对应物理存储器地址(320)。如上文参考图1所讨论,虚拟地址逻辑可以从针对机器学习模型的编译指令中的读取或写入指令中所引用的存储器地址生成虚拟存储器地址。虚拟存储器逻辑还可以被配置成生成虚拟存储器地址与物理存储器地址之间的映射,且将映射存储在对ML加速器本地的存储器中,诸如存储在寄存器中。
系统通过执行由虚拟地址逻辑转换的编译指令来执行编译程序以在机器学习模型上执行推理过程(300)。如上文参考图1所讨论,系统执行编译程序,该编译程序使用机器学习模型,具体地使用在共享存储器设备中所存储的模型参数,来执行推理过程。还如上文所讨论,虚拟存储器地址与物理存储器地址之间的转换意味着向物理存储器地址位置发出适当的读取或写入指令,该物理存储器地址位置将编译指令中的读取或写入指令与被映射到物理存储器地址的虚拟存储器地址的位置相匹配。
可以在数字电子电路系统中、在有形地体现的计算机软件或固件中、在计算机硬件中(包括本说明书中所公开的结构和其结构等效物)或它们中的一个或多个的组合中实施本说明书中所描述的主题的实施例和功能操作。可以将本说明书中所描述的主题的实施例实施为一个或多个计算机程序,即,编码在有形的非暂时性存储介质上以便由数据处理装置执行或以控制该数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行存取存储器设备或它们中的一个或多个的组合。备选地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电气、光学或电磁信号上,生成该信号以对信息进行编码以便传输到合适的接收器装置,以便数据处理装置执行。
术语“数据处理装置”是指数据处理硬件且涵盖了用于处理数据的所有种类的装置、设备和机器,通过示例,包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或还可以包括专用逻辑电路系统,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
可以以任何形式的编程语言(包括编译语言或解译语言或宣告式语言或程序式语言)来编写计算机程序(也可以被称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码),且可以以任何形式来部署计算机程序,包括部署为独立的程序或部署为模块、组件、子例程或适合在计算环境中使用的其他单元。程序可以但不需要对应于文件系统中的文件。可以将程序存储在保持其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中,或存储在专用于所探讨的程序的单个文件中,或存储在多个协作文件(例如存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署成在一个计算机上被执行或在被定位于一个站点处或跨多个站点被分布且通过数据通信网络被互连的多个计算机上被执行。
一个或多个计算机被配置成执行特定操作或动作的系统意味着系统已在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作时使系统执行操作或动作。一个或多个计算机程序被配置成执行特定操作或动作意味着一个或多个程序包括在由数据处理装置执行时使装置执行操作或动作的指令。
如本说明书中所使用,“引擎”或“软件引擎”是指提供与输入不同的输出的硬件实施的或软件实施的输入/输出系统。引擎可以在专用数字电路系统中被实施或被实施为要由计算设备执行的计算机可读指令。每个引擎可以被实施在包括一个或多个处理器和计算机可读介质的任何适当类型的计算设备(例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或其他固定的或便携式设备)上。附加地,引擎中的两个或更多个可以被实施在相同的计算设备上或被实施在不同的计算设备上。
可以由执行一个或多个计算机程序的一个或多个可编程计算机来执行本说明书中所描述的过程和逻辑流以通过对输入数据进行操作且生成输出来执行功能。过程和逻辑流也可以由专用逻辑电路系统(例如FPGA或ASIC)或由专用逻辑电路系统和一个或多个编程计算机的组合来执行。
适用于执行计算机程序的计算机可以是基于通用微处理器或专用微处理器或两者,或任何其他种类的中央处理单元。通常,中央处理单元会接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的必要元件是用于执行或实施指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以被专用逻辑电路系统补充或可以被并入该专用逻辑电路系统中。通常,计算机还会包括用于存储数据的一个或多个海量存储设备(例如磁盘、磁光盘或光盘),或计算机还会可操作地被耦合以接收来自该海量存储设备的数据或将数据传送给该海量存储设备或进行两者。然而,计算机不需要具有这种设备。此外,计算机可以被嵌入另一设备中(例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如通用串行总线(USB)闪速驱动器)),仅举几个示例。
适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,通过示例,包括:半导体存储器设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD-ROM盘和DVD-ROM盘。
为了提供与用户的交互,可以在主机设备上实施本说明书中所描述的主题的实施例,该主机设备具有:用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器;以及键盘和指向设备,例如鼠标、轨迹球或存在敏感显示器或其他表面,用户可以通过其来将输入提供给计算机。其他种类的设备也可以被用于提供与用户的交互;例如,被提供给用户的反馈可以是任何形式的传感反馈,例如视觉反馈、听觉反馈或触觉反馈;且可以以任何形式(包括声学输入、语音输入或触觉输入)来接收来自用户的输入。附加地,计算机可以通过将文档发送给用户所使用的设备且接收来自该设备的文档(例如通过响应于从网络浏览器接收到的请求来将网页发送给在用户的设备上的网络浏览器)来与用户交互。此外,计算机可以通过向个人设备(例如智能电话)发送文本消息或其他形式的消息、运行消息传递应用和从用户接收响应消息作为回应来与用户交互。
除了上文所描述的实施例之外,以下实施例也具有创新性:
实施例1是一种环境计算系统,包括:环境机器学习引擎;低功率CPU;以及SRAM,至少在环境机器学习引擎和低功率CPU当中被共享;其中环境机器学习引擎包括用以从环境机器学习引擎所生成的虚拟地址转换为SRAM内的物理地址的虚拟地址逻辑。
实施例2是实施例1的环境计算系统,其中环境计算系统被配置成将针对机器学习模型的参数从与环境计算系统分离的DRAM流式传输到SRAM中。
实施例3是实施例1至2中任一项的环境计算系统,其中环境计算系统被集成到片上系统中,且其中DRAM与片上系统分离。
实施例4是实施例1至3中任一项的环境计算系统,其中从DRAM流式传输机器学习模型的参数覆写了先前在SRAM中的指令或数据。
实施例5是实施例1至4中任一项的环境计算系统,其中环境机器学习引擎被配置成通过从SRAM读取机器学习模型的参数来执行通过机器学习模型的推理过程。
实施例6是实施例1至5中任一项的环境计算系统,其中从SRAM读取机器学习模型的参数包括由环境机器学习引擎执行具有不对应于SRAM中的地址的虚拟地址的读取指令。
实施例7是实施例1至6中任一项的环境计算系统,其中环境机器学习引擎被配置成将读取指令的虚拟地址提供给环境机器学习引擎,以便生成表示SRAM中的位置的物理地址。
实施例8是实施例1至7中任一项的环境计算系统,其中环境机器学习引擎被配置成执行由编译器程序从输入程序生成的指令,该编译器程序将环境机器学习引擎可用的本地存储器的大小作为输入变元,且其中指令是通过向编译器程序提供SRAM的大小作为可用的本地存储器来生成的。
实施例9是实施例1至8中任一项的环境计算系统,其中环境计算系统被配置成执行包括以下的操作:接收表示接收到一个或多个要处理的传感器信号的中断;启动一个或多个其他处理组件中的第一处理组件,包括将要由第一处理组件执行的指令流式传输到SRAM中;由第一处理组件使用SRAM中的指令处理一个或多个传感器信号以确定环境机器学习引擎应进一步处理一个或多个传感器信号;启动环境机器学习引擎,包括将要由环境机器学习引擎使用的参数流式传输到SRAM中;以及由环境机器学习引擎使用SRAM中所存储的参数执行机器学习模型的推理过程。
实施例10是实施例1至9中任一项的环境计算系统,其中将要由环境机器学习引擎使用的参数流式传输到SRAM中覆写了被存储在SRAM中的由第一处理组件执行的指令。
实施例11是实施例1至10中任一项的环境计算系统,其中SRAM进一步被与直接存储器访问控制器、一个或多个其他机器学习引擎或一个或多个其他处理器共享。
实施例12是实施例1至11中任一项的环境计算系统,其中一个或多个其他机器学习引擎包括主机器学习引擎。
实施例13是一种用于在环境计算系统上虚拟化存储器的方法,系统包括:环境机器学习引擎,包括虚拟地址逻辑;低功率CPU;以及SRAM,至少在环境机器学习引擎和低功率CPU当中被共享,其中方法包括:由环境机器学习引擎的虚拟地址逻辑接收由环境机器学习引擎生成的虚拟地址;以及由环境机器学习引擎上的虚拟地址逻辑将由环境机器学习引擎生成的虚拟地址转换为SRAM内的物理地址。
实施例14是实施例13的用于虚拟化存储器的方法,其中环境计算系统是实施例1至12中的任一实施例。
实施例15是一种或多种计算机可读存储介质,被编码有要由环境计算系统的环境机器学习引擎执行的指令,环境计算系统还包括低功率CPU和至少在环境机器学习引擎和低功率CPU当中被共享的SRAM,其中指令中的一个或多个指令包括虚拟地址,这些虚拟地址对应于在环境机器学习引擎和低功率CPU当中所共享的SRAM中的物理地址。
实施例16是实施例15的一种或多种计算机可读存储介质,其中环境计算系统是实施例1至12中的任一实施例。
虽然本说明书包含了许多具体实施细节,但是不应该将这些细节视为对任何发明的范围或可能被要求的内容的范围的限制,而是作为可以针对特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中被描述的某些特征还可以组合地被实施在单个实施例中。相反地,在单个实施例的上下文中被描述的各种特征也可以单独地或以任何适合的子组合被实施在多个实施例中。此外,尽管上文可能将特征描述为以某些组合来起作用且甚至最初如此要求,但是在一些情况下可以从组合中去除来自所要求的组合的一个或多个特征,并且所要求的组合可以涉及子组合或子组合的变化。
类似地,虽然在附图中以特定顺序描绘了操作,但是不应该将其理解为需要以所示出的特定顺序或以依序顺序来执行这种操作,或需要执行所有图示的操作以实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,不应该将在上文所描述的实施例中的各种系统模块和组件的分离理解为在所有实施例中需要这种分离,并且应该理解,所描述的程序组件和系统一般可以一起集成在单个软件产品中或被封装到多个软件产品中。
已经对本主题的特定实施例进行了描述。其他实施例在以下权利要求书的范围内。例如,权利要求书中所阐述的动作可以按照不同的顺序来执行,且仍然实现期望的结果。作为一个示例,随附图式中所描绘的过程不一定需要所示出的特定顺序或依序顺序,来实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。
Claims (22)
1.一种环境计算系统,包括:
环境机器学习引擎;
低功率CPU;以及
外部存储器,所述外部存储器至少在所述环境机器学习引擎和所述低功率CPU当中被共享;
其中所述环境机器学习引擎包括用以从所述环境机器学习引擎所生成的虚拟地址转换为所述外部存储器内的物理地址的虚拟地址逻辑。
2.根据权利要求1所述的环境计算系统,
其中所述环境计算系统被配置成将针对机器学习模型的参数从与所述环境计算系统分离的第二存储器流式传输到SRAM中。
3.根据权利要求2所述的环境计算系统,其中所述环境计算系统被集成到片上系统中,并且其中所述第二存储器与所述片上系统分离。
4.根据权利要求2或权利要求3所述的环境计算系统,其中从所述第二存储器流式传输所述机器学习模型的参数覆写了所述外部存储器中的指令或数据。
5.根据任一前述权利要求所述的环境计算系统,其中所述环境机器学习引擎被配置成通过从所述外部存储器读取机器学习模型的参数来执行通过所述机器学习模型的推理过程。
6.根据权利要求5所述的环境计算系统,其中从所述外部存储器读取所述机器学习模型的参数包括由所述环境机器学习引擎执行具有不对应于所述外部存储器中的地址的虚拟地址的读取指令。
7.根据权利要求6所述的环境计算系统,其中所述环境机器学习引擎被配置成将所述读取指令的虚拟地址提供给所述环境机器学习引擎,以便生成表示所述外部存储器中的位置的物理地址。
8.根据任一前述权利要求所述的环境计算系统,其中所述环境机器学习引擎被配置成执行由编译器程序从输入程序生成的指令,所述编译器程序将所述环境机器学习引擎可用的本地存储器的大小作为输入变元,以及
其中所述指令是通过向所述编译器程序提供所述外部存储器的大小作为可用的本地存储器来生成的。
9.根据任一前述权利要求所述的环境计算系统,其中所述环境计算系统被配置成执行包括以下的操作:
接收表示接收到要处理的一个或多个传感器信号的中断;
启动所述一个或多个其他处理组件中的第一处理组件,包括将要由所述第一处理组件执行的指令流式传输到所述外部存储器中;
由所述第一处理组件使用所述外部存储器中的指令处理所述一个或多个传感器信号以确定所述环境机器学习引擎应进一步处理所述一个或多个传感器信号;
启动所述环境机器学习引擎,包括将要由所述环境机器学习引擎使用的参数流式传输到所述外部存储器中;以及
由所述环境机器学习引擎使用所述外部存储器中所存储的参数执行机器学习模型的推理过程。
10.根据权利要求9所述的环境计算系统,其中将要由所述环境机器学习引擎使用的参数流式传输到所述外部存储器中覆写了被存储在所述外部存储器中的由所述第一处理组件执行的指令。
11.根据任一前述权利要求所述的环境计算系统,其中所述外部存储器进一步被与直接存储器访问控制器、一个或多个其他机器学习引擎或一个或多个其他处理器共享。
12.根据权利要求11所述的环境计算系统,其中所述一个或多个其他机器学习引擎包括主机器学习引擎。
13.根据任一前述权利要求所述的环境计算系统,其中所述外部存储器是SRAM,并且所述第二存储器是DRAM。
14.一种用于在环境计算系统上虚拟化存储器的方法,所述系统包括:
环境机器学习引擎,所述环境机器学习引擎包括虚拟地址逻辑;
低功率CPU;以及
外部存储器,所述外部存储器至少在所述环境机器学习引擎和所述低功率CPU当中被共享,
其中所述方法包括:
由所述环境机器学习引擎的虚拟地址逻辑接收由所述环境机器学习引擎生成的虚拟地址;以及
由所述环境机器学习引擎上的虚拟地址逻辑将由所述环境机器学习引擎生成的虚拟地址转换为所述外部存储器内的物理地址。
15.根据权利要求14所述的方法,其中所述环境计算系统被配置成将针对机器学习模型的参数从与所述环境计算系统分离的第二存储器流式传输到所述外部存储器中。
16.根据权利要求15所述的方法,其中所述环境计算系统被集成到片上系统中,并且其中所述第二存储器与所述片上系统分离。
17.根据权利要求15或权利要求16所述的方法,其中从所述第二存储器流式传输所述机器学习模型的参数覆写了由所述一个或多个其他处理组件中的一个使用的外部存储器中的指令或数据。
18.根据权利要求14至17中任一项所述的方法,其中所述环境机器学习引擎被配置成通过从所述外部存储器读取机器学习模型的参数来执行通过所述机器学习模型的推理过程。
19.根据权利要求18所述的方法,其中从所述外部存储器读取所述机器学习模型的参数包括由所述环境机器学习引擎执行具有不对应于所述外部存储器中的地址的虚拟地址的读取指令。
20.根据权利要求14至19中任一项所述的方法,其中所述外部存储器进一步被与直接存储器访问控制器、一个或多个其他机器学习引擎或一个或多个其他处理器共享。
21.一种或多种计算机可读存储介质,被编码有要由环境计算系统的环境机器学习引擎执行的指令,所述环境计算系统还包括低功率CPU和至少在所述环境机器学习引擎和所述低功率CPU当中被共享的外部存储器,
其中所述指令中的一个或多个指令包括虚拟地址,所述虚拟地址对应于在所述环境机器学习引擎和所述低功率CPU当中所共享的外部存储器中的物理地址。
22.根据权利要求21所述的一种或多种计算机可读存储介质,还包括用以执行根据权利要求14至20中任一项所述的方法的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/397,481 | 2019-04-29 | ||
US16/397,481 US11176493B2 (en) | 2019-04-29 | 2019-04-29 | Virtualizing external memory as local to a machine learning accelerator |
PCT/US2019/063424 WO2020222874A1 (en) | 2019-04-29 | 2019-11-26 | Virtualizing external memory as local to a machine learning accelerator |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410200725.9A Division CN118152305A (zh) | 2019-04-29 | 2019-11-26 | 在环境计算系统上虚拟化存储器的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113632068A true CN113632068A (zh) | 2021-11-09 |
CN113632068B CN113632068B (zh) | 2024-03-12 |
Family
ID=68966036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980094598.6A Active CN113632068B (zh) | 2019-04-29 | 2019-11-26 | 在环境计算系统上虚拟化存储器的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11176493B2 (zh) |
EP (1) | EP3924833A1 (zh) |
JP (2) | JP7412438B2 (zh) |
CN (1) | CN113632068B (zh) |
TW (3) | TWI777775B (zh) |
WO (1) | WO2020222874A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018176000A1 (en) | 2017-03-23 | 2018-09-27 | DeepScale, Inc. | Data synthesis for autonomous control systems |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
US11215999B2 (en) | 2018-06-20 | 2022-01-04 | Tesla, Inc. | Data pipeline and deep learning system for autonomous driving |
US11361457B2 (en) | 2018-07-20 | 2022-06-14 | Tesla, Inc. | Annotation cross-labeling for autonomous control systems |
US11636333B2 (en) | 2018-07-26 | 2023-04-25 | Tesla, Inc. | Optimizing neural network structures for embedded systems |
US11562231B2 (en) | 2018-09-03 | 2023-01-24 | Tesla, Inc. | Neural networks for embedded devices |
KR20210072048A (ko) | 2018-10-11 | 2021-06-16 | 테슬라, 인크. | 증강 데이터로 기계 모델을 훈련하기 위한 시스템 및 방법 |
US11196678B2 (en) | 2018-10-25 | 2021-12-07 | Tesla, Inc. | QOS manager for system on a chip communications |
US11816585B2 (en) | 2018-12-03 | 2023-11-14 | Tesla, Inc. | Machine learning models operating at different frequencies for autonomous vehicles |
US11537811B2 (en) | 2018-12-04 | 2022-12-27 | Tesla, Inc. | Enhanced object detection for autonomous vehicles based on field view |
US11610117B2 (en) | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
US10997461B2 (en) | 2019-02-01 | 2021-05-04 | Tesla, Inc. | Generating ground truth for machine learning from time series elements |
US11567514B2 (en) | 2019-02-11 | 2023-01-31 | Tesla, Inc. | Autonomous and user controlled vehicle summon to a target |
US10956755B2 (en) | 2019-02-19 | 2021-03-23 | Tesla, Inc. | Estimating object properties using visual image data |
US11521116B2 (en) * | 2019-06-25 | 2022-12-06 | Nxp Usa, Inc. | Self-optimizing multi-core integrated circuit |
US20210026686A1 (en) * | 2019-07-22 | 2021-01-28 | Advanced Micro Devices, Inc. | Chiplet-integrated machine learning accelerators |
US20210110243A1 (en) * | 2019-10-10 | 2021-04-15 | Hewlett Packard Enterprise Development Lp | Deep learning accelerator system interface |
US11734605B2 (en) * | 2020-04-29 | 2023-08-22 | SiMa Technologies, Inc. | Allocating computations of a machine learning network in a machine learning accelerator |
US11586894B2 (en) | 2020-05-04 | 2023-02-21 | SiMa Technologies, Inc. | Ordering computations of a machine learning network in a machine learning accelerator for efficient memory usage |
US11886981B2 (en) | 2020-05-01 | 2024-01-30 | SiMa Technologies, Inc. | Inter-processor data transfer in a machine learning accelerator, using statically scheduled instructions |
US11734549B2 (en) | 2020-04-21 | 2023-08-22 | SiMa Technologies, Inc. | Avoiding data routing conflicts in a machine learning accelerator |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1988467A1 (en) * | 2007-05-01 | 2008-11-05 | Vivante Corporation | Virtual memory translation with pre-fetch prediction |
CN104335180A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 虚拟化i/o处理延迟的实时测量 |
CN106708753A (zh) * | 2012-03-30 | 2017-05-24 | 英特尔公司 | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 |
US10699370B1 (en) * | 2018-12-28 | 2020-06-30 | Intel Corporation | Apparatus and method for a compressed stack representation for hierarchical acceleration structures of arbitrary widths |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5184824B2 (ja) | 2007-06-15 | 2013-04-17 | キヤノン株式会社 | 演算処理装置及び方法 |
US9047090B2 (en) | 2012-08-07 | 2015-06-02 | Qualcomm Incorporated | Methods, systems and devices for hybrid memory management |
US8884906B2 (en) | 2012-12-21 | 2014-11-11 | Intel Corporation | Offloading touch processing to a graphics processor |
US10031000B2 (en) | 2014-05-29 | 2018-07-24 | Apple Inc. | System on a chip with always-on processor |
US10410113B2 (en) | 2016-01-14 | 2019-09-10 | Preferred Networks, Inc. | Time series data adaptation and sensor fusion systems, methods, and apparatus |
KR102205087B1 (ko) | 2016-06-17 | 2021-01-20 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 공유형 머신 러닝 데이터 구조 |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
CN106951926B (zh) | 2017-03-29 | 2020-11-24 | 山东英特力数据技术有限公司 | 一种混合架构的深度学习方法及装置 |
US10186011B2 (en) | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
US10776699B2 (en) * | 2017-05-05 | 2020-09-15 | Intel Corporation | Optimized compute hardware for machine learning operations |
US10108538B1 (en) * | 2017-07-31 | 2018-10-23 | Google Llc | Accessing prologue and epilogue data |
CN110678825B (zh) | 2017-11-21 | 2023-12-08 | 谷歌有限责任公司 | 具有机器学习功能的低功率环境计算系统 |
US11416395B2 (en) * | 2018-02-05 | 2022-08-16 | Micron Technology, Inc. | Memory virtualization for accessing heterogeneous memory components |
CN109508782B (zh) | 2018-10-09 | 2022-05-24 | 瑞芯微电子股份有限公司 | 基于神经网络深度学习的加速电路和方法 |
US10746792B1 (en) * | 2018-11-30 | 2020-08-18 | Amazon Technologies, Inc. | Debug mechanisms for a processor circuit |
US11048318B2 (en) * | 2018-12-06 | 2021-06-29 | Intel Corporation | Reducing microprocessor power with minimal performance impact by dynamically adapting runtime operating configurations using machine learning |
-
2019
- 2019-04-29 US US16/397,481 patent/US11176493B2/en active Active
- 2019-11-26 JP JP2021557065A patent/JP7412438B2/ja active Active
- 2019-11-26 CN CN201980094598.6A patent/CN113632068B/zh active Active
- 2019-11-26 EP EP19824100.2A patent/EP3924833A1/en active Pending
- 2019-11-26 WO PCT/US2019/063424 patent/WO2020222874A1/en unknown
- 2019-11-27 TW TW110134876A patent/TWI777775B/zh active
- 2019-11-27 TW TW108143271A patent/TWI741416B/zh active
- 2019-11-27 TW TW111136960A patent/TWI816566B/zh active
-
2021
- 2021-10-21 US US17/507,188 patent/US20220044153A1/en active Pending
-
2023
- 2023-10-31 JP JP2023186440A patent/JP2024010137A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1988467A1 (en) * | 2007-05-01 | 2008-11-05 | Vivante Corporation | Virtual memory translation with pre-fetch prediction |
CN106708753A (zh) * | 2012-03-30 | 2017-05-24 | 英特尔公司 | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 |
CN104335180A (zh) * | 2012-06-15 | 2015-02-04 | 国际商业机器公司 | 虚拟化i/o处理延迟的实时测量 |
US10699370B1 (en) * | 2018-12-28 | 2020-06-30 | Intel Corporation | Apparatus and method for a compressed stack representation for hierarchical acceleration structures of arbitrary widths |
Non-Patent Citations (1)
Title |
---|
胡小龙;周艳科;: "多线程ARM虚拟机的设计与实现", 信息化纵横, no. 11 * |
Also Published As
Publication number | Publication date |
---|---|
JP2024010137A (ja) | 2024-01-23 |
US11176493B2 (en) | 2021-11-16 |
TWI741416B (zh) | 2021-10-01 |
TW202203035A (zh) | 2022-01-16 |
JP2022530309A (ja) | 2022-06-29 |
EP3924833A1 (en) | 2021-12-22 |
TWI816566B (zh) | 2023-09-21 |
JP7412438B2 (ja) | 2024-01-12 |
CN113632068B (zh) | 2024-03-12 |
TW202303402A (zh) | 2023-01-16 |
TWI777775B (zh) | 2022-09-11 |
US20200342350A1 (en) | 2020-10-29 |
WO2020222874A1 (en) | 2020-11-05 |
TW202040365A (zh) | 2020-11-01 |
US20220044153A1 (en) | 2022-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113632068B (zh) | 在环境计算系统上虚拟化存储器的方法和系统 | |
JP6197196B2 (ja) | 電力効率の優れたプロセッサアーキテクチャ | |
CN112840329B (zh) | 低功率高速缓存的环境计算 | |
US8884906B2 (en) | Offloading touch processing to a graphics processor | |
JP5643903B2 (ja) | 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置 | |
US11550592B2 (en) | Methods and apparatus to utilize non-volatile memory for computer system boot | |
CN118152305A (zh) | 在环境计算系统上虚拟化存储器的方法和系统 | |
WO2023225991A1 (en) | Dynamic establishment of polling periods for virtual machine switching operations | |
JP6409218B2 (ja) | 電力効率の優れたプロセッサアーキテクチャ | |
JP6055456B2 (ja) | 階層的キャッシュ設計におけるキャッシュ間の効率的通信のための方法および装置 | |
JP2017021811A (ja) | 電力効率の優れたプロセッサアーキテクチャ | |
JP2016212907A (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 |