首页> 中国专利> 用于使用元数据在神经网络中进行机会性负载平衡的方法和系统

用于使用元数据在神经网络中进行机会性负载平衡的方法和系统

摘要

用于使用元数据在深度神经网络(DNN)中进行机会性负载平衡的方法和系统。针对DNN系统的给定架构、功能或计算方面而捕获、获得或确定代表性计算成本。所述代表性计算成本被实现为针对所述DNN系统的所述给定架构、功能或计算方面的元数据。在一个实现方式中,所述计算出的计算成本被实现为所述元数据。调度器检测在后续层中是否存在准备好执行的神经元。所述调度器使用所述元数据和神经元可用性来跨计算资源和可用资源进行调度和负载平衡。

著录项

  • 公开/公告号CN112219192A

    专利类型发明专利

  • 公开/公告日2021-01-12

    原文格式PDF

  • 申请/专利权人 超威半导体公司;

    申请/专利号CN201980037280.4

  • 发明设计人 尼古拉斯·马来亚;靖子·埃克特;

    申请日2019-05-21

  • 分类号G06F9/50(20060101);G06N3/04(20060101);G06N3/08(20060101);G06F9/38(20060101);

  • 代理机构31263 上海胜康律师事务所;

  • 代理人李献忠;张静

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 09:30:39

说明书

相关申请的交叉引用

本申请要求于2018年6月26日提交的美国非临时专利申请第16/019,374号的权益,其内容在此以引用方式并入本文。

背景技术

深度神经网络(DNN)被用于许多人工智能和机器学习应用。这些DNN通常在输入层与输出层之间包括多个隐藏层。最近,DNN已经开始使用越来越多的层数,这为图像、视频和语音识别处理和分析中的各种预测问题提供了更大的容量和准确性。然而,更深的DNN也导致了越来越大的性能挑战。

例如,DNN的计算成本极高。一个神经网络的训练任务需要几天、几周甚至几个月才能完成,这并不罕见。这些DNN是大规模并行的,并且需要大吞吐量装置才能得到有效解决。然而,目前大多数DNN在层与层之间进行串行化。许多DNN具有超过100个这样的层,使得这对提高并行性有很大的限制。

一种被称为“层融合”的常见技术允许将一个以上的层暴露给同时计算,但这需要显式的编程来实现。编程器将编译器暴露给跨各层的整个计算。然而,层融合并非严格的,而是机会性的,目前没有一个编译器有能力识别后续层可能有足够的计算需求以保证提前开始对它们进行计算。此外,这种方式也很困难。编程器必须将编译器暴露给跨各层的整个计算。这被认为对编程极具挑战性,并且是不直观的(即在过程中可能会丢失抽象的层概念)。除了在高度优化的库中进行层融合的特殊实现之外,各层是隐式串行化的。

即使经过了优化,此网络也无法转移到许多其他连接性、网络架构大不相同、硬件功能等不同的网络。此外,优化过程易于出错、费时且实施成本高昂。此外,即使融合了几个层,也不会暴露整个计算图,而只是暴露融合的层。最后,这种方式无法利用在运行时间期间对神经网络进行的如修剪等动态编辑。这一点很重要,因为修剪会改变被修剪层的计算强度。

附图说明

从结合附图以举例方式给出的以下描述中可以获得更加详细的理解,在附图中:

图1是根据某些实现方式的示例装置的框图;

图2是根据某些实现方式的图1的装置的框图;

图3是根据某些实现方式的异构系统架构(HSA)平台的框图;

图4是根据某些实现方式的示例系统的框图,示出了队列结构;

图5A是根据某些实现方式的命令分组处理的示例框图;

图5B示出了根据某些实现方式的包括命令分组和间接缓冲器(IB)命令分组的示例元素;

图5C是根据某些实现方式的示例间接缓冲器;

图6示出了深度神经网络(DNN)的两个代表性层;

图7是根据某些实现方式的用于使用DNN系统中的计算内核来确定计算成本的示例框图;以及

图8是根据某些实现方式的用于使用元数据在DNN中进行机会性负载平衡的方法的流程图。

具体实施方式

本文描述了一种用于使用元数据在深度神经网络(DNN)中进行机会性负载平衡的方法和系统。通过将整个计算图或其至少部分暴露给硬件调度器、编译器、分派器或操作系统(O/S)调度器(统称为“调度器”),可以充分利用DNN计算的并行性。在一个实现方式中,利用元数据对DNN的计算内核、神经元、层或其他架构、功能或计算方面、部分、特性和/或特征进行标记,从而使得调度器可以更有效和智能地预测计算复杂程度,并且跨现有资源进行负载平衡。这些元数据提供了有关计算内核的计算复杂程度的基本信息,从而允许准确的负载平衡。例如,表现出具有一定规律和频率的重复计算的卷积神经网络特别适合于改善的负载平衡和作业调度。然而,该方法适用于具有常规计算模式的其他类型的网络。在一个实现方式中,该方法适用于类似于数据流的架构,在这种架构中,显式地暴露整个计算图允许充分地利用DNN所固有的并行性。

图1是本公开的一个或多个特征能够在其中实现的示例装置100的框图。装置100包括例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还可选地包括输入驱动器112和输出驱动器114。应理解,装置100包括图1中未示出的附加部件。

在各种替代方案中,处理器102包括中央处理单元(CPU)、图形处理单元(GPU)、位于同一管芯上的CPU和GPU、或者一个或多个处理器核,其中每个处理器核可以是CPU或GPU。在各种替代方案中,存储器104与处理器102位于相同的管芯上,或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM或高速缓存。

存储装置106包括固定式或可移除存储装置,例如,硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物特征扫描仪或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。输出装置110包括但不限于显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线IEEE 802信号的无线局域网卡)。

输入驱动器112与处理器102和输入装置108进行通信,并且允许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110进行通信,并且允许处理器102将输出发送到输出装置110。应指出,输入驱动器112和输出驱动器114为可选部件,并且装置100在输入驱动器112和输出驱动器114不存在的情况下将以相同方式进行操作。输出驱动器116包括耦合到显示装置118的加速处理装置(“APD”)116。APD接受来自处理器102的计算命令和图形渲染命令,处理这些计算和图形渲染命令,并将像素输出提供给显示装置118进行显示。

如下文进一步详细描述的,APD 116包括一个或多个并行处理单元,以根据单指令多数据(“SIMD”)范型执行计算。因此,尽管在本文将各种功能描述为由APD 116执行或与其相结合执行,但是在各种替代方案中,被描述为由APD 116正在执行的功能另外地或替代地由具有类似能力的其他计算装置执行,这些计算装置在某些情况下不是由主机处理器(例如,处理器102)驱动的,并且在某些实现方式中向显示装置118提供(图形)输出。例如,可以设想,任何按照SIMD范型执行处理任务的处理系统都可以执行本文所描述的功能。替代性地,可以设想,不按照SIMD范型执行处理任务的计算系统执行本文所描述的功能。

图2是装置100的框图,示出了与在APD 116上执行处理任务有关的附加细节。处理器102在系统存储器104中维护一个或多个控制逻辑模块,以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和APD 116的操作的各种特征。例如,操作系统120直接与硬件进行通信,并为在处理器102上执行的其他软件提供与硬件的接口。内核模式驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用程序编程接口(“API”)以访问APD 116的各种功能,从而控制APD 116的操作。内核模式驱动器122还包括即时编译器,该即时编译器对程序进行编译,以供APD 116的处理部件(如下面进一步详细讨论的SIMD单元138)执行。

APD 116执行针对所选功能的命令和程序,如适合并行处理和/或非有序处理的图形操作和非图形操作。APD 116用于执行如像素操作、几何计算等图形流水线操作,并且基于从处理器102接收到的命令将图像渲染到显示装置118。APD 116还基于从处理器102接收到的命令执行与图形操作不直接相关的计算处理操作,如与视频、物理模拟、计算流体动力学或其他任务相关的操作。

APD 116包括计算单元132,这些计算单元包括根据SIMD范型以并行方式在处理器102的请求下执行操作的一个或多个SIMD单元138。SIMD范型是这样一种范型:其中多个处理元件共享单个程序控制流单元和程序计数器,并且因此执行相同的程序,但是能够利用不同的数据执行该程序。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同的指令,但是利用不同的数据执行该指令。如果不是所有的通道都需要执行给定的指令,则可以利用断言来关闭通道。断言也能够用于以不同控制流执行程序。更具体地,对于具有条件分支或其他指令、其中控制流基于由单独通道执行的计算的程序,对与当前未被执行的控制流路径相对应的通道的断言、以及对不同控制流路径的串行执行允许任意控制流。在一个实现方式中,每个计算单元132可以具有本地L1高速缓存。在一个实现方式中,多个计算单元132共享L2高速缓存。

计算单元132中的基本执行单元是工作项。每个工作项代表将在特定通道中并行执行的程序的单个实例。工作项可以作为“波前”在单个SIMD处理单元138上同时执行。一个或多个波前被包括在“工作组”中,该工作组包括被指定用于执行同一程序的工作项集合。工作组是通过执行组成该工作组的各个波前来执行的。在各替代方案中,波前在单个SIMD单元138上顺序执行,或在不同的SIMD单元138上部分地或全部地并行执行。波前可被认为是可以在单个SIMD单元138上同时执行的最大工作项集合。因此,如果从处理器102接收到的命令指示特定程序将要被并行化至该程序无法同时在单个SIMD单元138上执行的程度,则该程序被分成两个或更多个波前,所述两个或更多个波前在两个或更多个SIMD单元138上被并行化或在同一SIMD单元138上被串行化(或根据需要既被并行化又被串行化)。调度器136执行与在不同计算单元132和SIMD单元138上调度各个波前有关的操作。

由计算单元132所提供的并行性适合于与图形有关的操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,从处理器102接受图形处理命令的图形流水线134将计算任务提供给计算单元132以并行执行。

计算单元132还被用于执行与图形不相关的计算任务或不作为图形流水线134的“正常”操作(例如,被执行来补充为图形流水线134的操作执行的处理的自定义操作)的一部分执行。在处理器102上执行的应用程序126或其他软件将定义这种计算任务的程序传输给APD 116以供执行。

图3示出了部分基于图1和图2的装置的异构系统架构(HSA)平台300。HSA平台300包括与系统存储器350连接或通信(统称为“连接”)的HSA加速处理单元(APU)310。HSA APU310包含:多核CPU 320,具有多个HSA计算单元(H-CU)332、334、336的GPU 330,以及HSA存储器管理单元(HMMU或HSA MMU)340。CPU 320包括任意数量的核,在图3中示出了核322、324、326、328。GPU 330包括任意数量的H-CU,尽管图3中示出了三个。虽然在所描述的实现方式中讨论并呈现了HSA,但是在同质或异质系统上都可以利用本发明的系统和方法。系统存储器350包括一致性系统存储器352和非一致性系统存储器357之一或两者。

HSA 300提供了基本计算元素的统一视图。HSA 300允许编程器写入程序,这些程序将CPU 320(也称为延迟计算单元)与GPU 330(也称为吞吐量计算单元)无缝集成,同时受益于各自最佳属性。HSA 300允许编程器利用GPU 330中的并行处理器作为传统多线程CPU320的对等体。对等装置被定义为与另一个装置共享同一存储器一致性域的HSA装置。

HSA 300中的装置使用队列相互进行通信,如参照图4-6进一步解释的。队列是HSA架构中不可缺少的一部分。队列是生产者在其中向消费者发出请求或任务的物理存储器区域。依据HSA硬件的复杂程度,队列可能由软件或硬件的任何组合来管理。从某种意义上说,由硬件管理的队列具有显著的性能优势,因为在延迟处理器(如CPU 320)上运行的应用程序直接将工作排队列到吞吐处理器(如GPU 330),而无需任何中间的操作系统调用。这允许在HSA 300中的装置之间进行非常低延迟的通信。

图4是示例系统400的框图,示出了队列结构。系统400包括CPU 405、系统存储器415、驱动器410、图形处理单元(GPU)420和通信基础设施或总线425。本领域的技术人员将理解,系统400包括除了图4中所示部件之外或不同于所示部件的软件、硬件和固件部件。应理解,系统400包括图4中未示出的附加部件。

CPU 405、GPU 420和系统存储器415可以按照关于图1-3所描述的那样来实现。CPU405执行操作系统(未示出)以及一个或多个应用程序,并且是系统400的控制处理器。在CPU405上执行的操作系统控制、促进访问并协调完成针对系统400的任务。驱动器410(例如,图形驱动器)包括软件、固件、硬件或其任何组合。在一个实现方式中,驱动器410完全以软件实现。驱动器410为CPU 405以及在CPU 405上执行的应用程序提供接口和/或应用程序编程接口(API)以访问GPU 420。总线425提供系统400的各部件之间的耦合,并且包括一个或多个通信总线,诸如外围部件互连(PCI)、高级图形端口(AGP)等等。

GPU 420向系统400提供如本文所述的图形加速功能和其他计算功能。GPU 420包括:多个命令处理器(CP)——CP 1、……、CP n430,以及多个引擎——引擎1、……、引擎n435,例如3D引擎、统一视频解码器(UVD)引擎、数字版权管理(DRM)直接存储器访问(DMA)引擎等等。

CP 1、……、CP n 430控制GPU 420内的处理,并连接到引擎1、……、引擎n 435。每个CP 1、……、CP n 430与引擎1、……、引擎n 435相关联,并且每对是一个引擎块(EB)——EB 1、……、EB n 437。在另一个实施方案中,CP 1、……、CP n 430是单个命令处理器。一般来说,CP 1、……、CP n 430从CPU 405接收要执行的指令,并且协调这些指令在GPU 420中的引擎1、……、引擎n 435上的执行。在某些情况下,CP 1、……、CP n 430生成要在GPU 420中执行的一个或多个命令,这些命令与从CPU 405接收到的每个命令相对应。实现CP1、……、CP n 430的功能的逻辑指令是以硬件、固件或软件或其组合来实现的。

存储器415包括一个或多个存储器装置,并且可以是动态随机存取存储器(DRAM)或用于数据的非持久性存储的类似存储器装置。存储器415包括一个或多个存储器缓冲器445,CPU 405通过该一个或多个存储器缓冲器将命令传送到GPU 420。适当时,存储器缓冲器445对应于引擎435或引擎块437。存储器缓冲器445被实现为队列、环形缓冲器或其他适合于对工作项或命令分组进行有效排队列的数据结构。在队列的情况下,命令分组以循环的方式被放入存储器缓冲器445并从中取出。为了说明的目的,本文中将存储器缓冲器445称为队列1、……、队列n 445。

存储器415包括间接缓冲器455。间接缓冲器455保持实际命令(例如,指令、数据、指针和非指针)。例如,当CPU 405将命令分组传送至GPU 420时,命令分组被存储在间接缓冲器455中,并且指向该间接缓冲器455的指针被插入队列1、……、队列n 445。如下文所述,某些间接缓冲器455保持神经元数据。也就是说,多个间接缓冲器被用于不同的目的。CPU405经由驱动器410作为队列1、……、队列n 445的命令的写入器,GPU 420作为这类命令的读取器,协调分别指示队列1、……、队列n 445中最后添加的项和最后读取的项的写指针和读指针。

图5A是如在GPU 500、驱动器510、队列515和间接缓冲器535之间的命令分组处理的示例框图。GPU 500包括GPU存储器502、寄存器504、命令处理器505和引擎508。寄存器504包括读指针512和写指针514。队列515包括元素520、522、524和空闲空间530。每个元素,例如元素520、522、524,存储队列分组。图5B示出了示例元素570,该示例元素包括命令分组572以及指向间接缓冲器535的间接缓冲器(IB)命令分组576。如图5C所示,间接缓冲器535包括指示GPU 500执行操作的命令分组540。例如,HSA中的内核分派分组(命令分组540的示例)包括如下信息,诸如计算内核应如何启动线程(网格维度、工作组大小)、专用和组存储器分配的所需大小、存储器中包括用于计算内核的可执行ISA映像的对象的句柄、以及附加控制和同步信息。一般来说,在DNN中,计算内核通常是由如例如MIOpen和rocBLAS等高级库实现的卷积、矩阵乘法、快速傅里叶变换(FFT)、池化和激活。

上述架构提供了从主机处理器(由驱动器510表示的写入器)到GPU 500(由命令处理器505表示的读取器)的单向通信。最初,读指针512和写指针514指向同一位置,表明队列515为空。队列515具有空闲空间530,驱动器510向该空闲空间中写入与任务相对应的命令分组。然后,驱动器510将写指针514更新到最后命令分组之后的一个位置或第一可用空间。现在,写指针514和读指针512指向不同的位置。命令处理器505在读指针512位置处取出命令分组,并走动读指针512,直到其等于写指针514。

神经网络中的卷积是一种局部操作,因为只有少量神经元的输出才是计算后续层中的一些神经元所必需的。结果是,后续层中的计算可以并行进行,而无需等待当前层中所有神经元计算完成。图6以有向无环图(DAG)表示示出了来自DNN 600的两个代表性层,即层1605和层2 610。层1 605包括例如神经元620、622和624,层2 610包括例如神经元630、632、634、636和638。在某些情况下,一些第二层神经元将能够在整个第一层被评估之前运行。这在图6中由更黑和更粗的线所示,其中可以在对层1 605中的最后神经元(例如神经元624)进行计算之前对层2 610中的两个神经元(例如神经元630和632)进行评估。

在两种情况下这是有益的。首先,对各层进行朴素顺序执行可能会使一些计算资源空闲。在这种情况下,那些空闲资源可以部署在下一层。其次,如果第二层需要的工作实质上比第一层要多,则利用几个可用计算资源更早地从该层开始可能会更有效率。现代DNN具有许多隐藏层(数百甚至数千个),因此在完成单个层中的计算之前先从许多深处的层开始计算可能是有利的。然而,为了准确地预测哪些计算应被优先化,调度器(如例如图2中的调度器136)需要一些关于任何计算的成本预期是什么的知识。

本文描述的方法和系统用元数据来标记或关联DNN系统的某些架构、功能或计算方面、部分、特性或特征(统称为“(一个或多个)方面”),以允许更准确的作业调度和负载平衡,其中该元数据提供了与某个DNN方面有关或相关联的代表性计算成本。例如,DNN系统的这些特定方面可以是计算内核、神经元、层或其他一些方面。在一个说明性示例中,元数据是内核或过滤器大小、丢弃层、层中所存在的神经元的数量、激活函数以及其他可以用来确定计算成本的类似项。可以通过如本文所述的框架、通过例如应用程序或用户来自动利用元数据对DNN系统的各方面进行标记。

元数据可以保存在各种地方,包括但不限于指令、标量寄存器、L1/L2高速缓存、表等等。在一个实现方式中,该位置取决于元数据大小、对压缩的适应能力、元数据在何处被捕获以及哪个调度器在使用元数据。

在一个说明性示例中,如激活函数和每层神经元数量等一些元数据最容易通过软件(例如,编程器、编译器等等)捕获,并且存储在作业请求或指令中,而其他元数据则需要在硬件中的运行时间(例如,内核运行时间)测量,并且存储在硬件表中。

在另一个说明性示例中,位置取决于哪个调度器正在使用元数据。如果元数据是在O/S级上利用的,如图2中的O/S 120,则元数据可以被嵌入到作业请求消息中,该消息被发送到OS调度器。如果元数据是在硬件调度器或分派器级上利用的,如图2中的调度器136或图7中的硬件分派器720,则元数据可以存储在如硬件表710等硬件表中,该硬件表与调度器136或硬件分派器720处于共同的位置。在硬件调度器也利用由软件所捕获的元数据(例如,激活函数)的情况下,元数据可以从软件传递到作业请求消息,然后传递到OS,最后传递到硬件表。

可以使用多种技术来测量计算成本。在一个实现方式中,使用内核大小与评估时间之间的关系来确定计算成本。在一个说明性实现方式中,使用了不同的启发式方法,这些方法识别出较大的过滤器大小对应于更多的工作。

在另一个说明性实现方式中,内核的运行时间提供了相对速度的指示以确定计算成本。这需要分派器对内核大小的运行时间进行表查询以分配工作。所估计的运行时间与资源可用性相结合,以有效地分派一个工作组,同时跨计算资源平衡负载。

在一个实现方式中,如

除了使用内核的计算成本,调度器还需要检测后续层中的一些神经元已经准备好要执行。在一个实现方式中,这是通过构建在DNN中正进行的计算的DAG来实现的。DAG允许调度器为特定的神经元分配或去分配锁,而不是将计算限制在整个层。也就是说,调度器可以将一层中的特定神经元暴露出来,以供在不需要其他神经元或其他神经元正被使用时使用。一旦调度器有了预期计算的整个图以及元数据,调度器就会使用启发式方法来跨可用计算资源调度运行,以确保高效的处理。

图7是用于使用DNN系统700中的计算内核来确定计算成本以允许进行更准确的作业调度和负载平衡的示例框图。在此实现方式中,计算成本是作为元数据被存储在表中的内核运行时间。DNN系统700至少包括与表通信或连接到表的处理器,如GPU 705,其中该表例如是硬件表710。例如,该表可以在存储器、寄存器、高速缓存或其他类似空间中实现。GPU705至少包括分派器,如与多个计算单元(CU)——CU 0 722、CU 1 724、……、CU N 726通信的硬件分派器720。硬件表710将内核ID 730与所测得内核运行时间732相关联。在一个实现方式中,由于某些类型的DNN(如卷积神经网络(CNN))的规律性,内核运行时间测量可能仅需要执行一次。

当确定工作分配时,硬件分派器720考虑与每个内核相关联的元数据。在此说明中,元数据是所测得内核运行时间。例如,硬件分派器720通过查找内核ID 730并检索相关联的所测得内核运行时间732来针对每个内核考虑所测得内核运行时间732。在一个实现方式中,硬件分派器720将所测得内核运行时间732与处理器或计算单元资源结合使用,以便有效地分派工作组,同时跨处理器或计算单元资源平衡负载。

在一个实现方式中,元数据适用于DNN的动态修剪和稀疏性。在这些情况下,各个神经元被随机从DNN中切除或移除。一种评估和分派工作的动态方法将允许在各个迭代之间进行负载平衡。一种实现此目的的方式是,例如,允许调度器或单独的帮助程序线程检查要计算的神经元的就绪状态,其中该就绪状态是指或说明每个神经元的依赖关系(其是可以预先计算的)。此信息(即就绪状态)将被标记为针对此神经元的元数据。例如,当一个神经元被修剪时,所有依赖的神经元的就绪状态都会被更新,并被调度器用于在各个迭代之间进行负载平衡。

在一个实现方式中,元数据被用于多个装置之间,其中元数据通过开始在不等待本地存储数据的后续层上执行计算来允许重叠的计算和通信(无论是在装置之间还是在CU之间)。

图8是用于使用元数据在DNN中进行机会性负载平衡的方法800的流程图。针对DNN系统的给定架构、功能或计算方面而捕获、获得或确定代表性计算成本(步骤805)。代表性计算成本被实现为针对DNN系统的给定架构、功能或计算方面的元数据(步骤810)。在一个实现方式中,所计算出的计算成本被实现为元数据。调度器检测在后续层中是否有准备好执行的神经元(步骤815)。调度器使用元数据和神经元可用性来跨计算资源和可用资源进行调度和负载平衡(步骤820)。

应理解,基于本文的公开内容,许多变型是可能的。虽然上面以特定的组合描述了特征和要素,但是每个特征或要素能够单独使用而无需其他特征和要素,或者以具有或不具有其他特征和要素的各种组合使用。

所提供的方法能够在通用计算机、处理器或处理器核中实现。合适的处理器例如包括通用处理器、专用处理器、常见处理器、数字信号处理器(DSP)、多个微处理器、与DSP核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。这类处理器可以通过以下方式来制造:使用处理后的硬件描述语言(HDL)指令的结果以及包括网表在内的其他中间数据(这种指令能够被存储在计算机可读介质上)来配置制造过程。此类处理的结果可以是掩模作品,这些掩模作品接着被用于半导体制造过程中以制造实现各实施方案的各方面的处理器。

本文所提供的方法或流程图可以在并入非暂时性计算机可读存储介质中的计算机程序、软件或固件中实现,以便由通用计算机或处理器执行。非暂时性计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、磁性介质(诸如内部硬盘和可移除磁盘)、磁光介质以及诸如CD-ROM盘和数字通用光盘(DVD)等光学介质。

***

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号