CN117520254A - 处理器、芯片、板卡及方法 - Google Patents

处理器、芯片、板卡及方法 Download PDF

Info

Publication number
CN117520254A
CN117520254A CN202210913657.1A CN202210913657A CN117520254A CN 117520254 A CN117520254 A CN 117520254A CN 202210913657 A CN202210913657 A CN 202210913657A CN 117520254 A CN117520254 A CN 117520254A
Authority
CN
China
Prior art keywords
instruction
data
memory
register
type
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
Application number
CN202210913657.1A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202210913657.1A priority Critical patent/CN117520254A/zh
Publication of CN117520254A publication Critical patent/CN117520254A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)

Abstract

本披露公开了一种处理器、芯片、板卡及相应方法。该处理器可以作为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了执行融合运算指令的硬件架构,其可以提高机器的处理效率。

Description

处理器、芯片、板卡及方法
技术领域
本披露一般地涉及处理器领域。更具体地,本披露涉及一种至少支持两种编程架构的处理器、芯片、板卡及基于这种处理器执行运算的方法。
背景技术
传统的处理器,例如中央处理器(CPU)、图形处理器(GPU)、数字信号处理器(DSP)等,支持的编程架构或编程模型为内存(RAM)→寄存器(REG)→运算器→寄存器→RAM,也即需要进行运算的数据存储在RAM中,程序员编程控制处理器从RAM加载数据到寄存器,在寄存器中完成运算,最后将结果写回RAM中。
随着智能计算的发展,出现了一些用于智能计算的处理器,例如用于数据流处理的DPU、用于神经网络的NPU、用于张量处理的TPU等。这一类型的处理器通常支持的编程架构或编程模型为RAM->运算器->RAM。在这种编程模型下,程序员只需要一条运算指令指令,就可以完成一次向量运算操作。
目前的处理器只能支持上述两种编程模型之一,而这两种编程模型各有优劣,适应不同的使用场景。而随着处理任务类型的丰富,仅提供一种编程模型难以满足变化的任务需求。因此,亟需一种能够有效地支持至少上述两种编程架构的处理器。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种至少支持两种编程架构的处理器、芯片、板卡及基于该处理器执行运算的方法。
在第一方面中,本披露公开一种处理器,包括控制器、运算器、存储器和寄存器,所述处理器至少支持第一编程架构和第二编程架构,其中:所述第一编程架构包括所述控制器、所述运算器和所述存储器,所述第一编程架构支持第一类型的指令,所述第一类型的指令的操作数包含存储器信息;所述第二编程架构包括所述控制器、所述运算器、所述存储器和所述寄存器,所述第二编程架构支持第二类型的指令,所述第二类型的指令的操作数包含寄存器信息。
在第二方面中,本披露提供一种基于处理器执行运算的方法,所述处理器包括控制器、运算器、存储器和寄存器,所述处理器至少支持第一编程架构和第二编程架构,其中所述第一编程架构包括所述控制器、所述运算器和所述存储器,所述第一编程架构支持第一类型的指令,所述第一类型的指令的操作数包含存储器信息;所述第二编程架构包括所述控制器、所述运算器、所述存储器和所述寄存器,所述第二编程架构支持第二类型的指令,所述第二类型的指令的操作数包含寄存器信息;所述方法包括:所述控制器响应于第一类型的指令,控制所述存储器和所述运算器执行所述第一类型的指令;以及所述控制器响应于第二类型的指令,控制所述存储器、所述寄存器和所述运算器执行所述第二类型的指令。
在第三方面中,本披露提供一种芯片,包括前述第一方面任一实施例的处理器。
在第四方面中,本披露提供一种板卡,包括前述第三方面任一实施例的芯片。
通过如上所提供的处理器、芯片、板卡和方法,本披露实施例提供了一种有效支持至少两种编程架构的处理器及在其上执行运算的方案,其使得程序员可以灵活根据使用场景选择适合的编程架构,从而优化不同场景下的运算任务的执行。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1示出本披露实施例的板卡的结构图;
图2示出本披露实施例的组合处理装置的结构图;
图3示出本披露实施例的计算装置的内部结构示意图;
图4示出了根据本披露一些实施例的处理器的示例性结构框图;
图5a-图5b分别示出了根据本披露一些实施例的处理器在第一编程架构中激活的通路和处理流程;以及
图5c-图5d分别示出了根据本披露一些实施例的处理器在第二编程架构中激活的通路和处理流程。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了图2中的计算装置201的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31(也称为控制器)、运算模块32(也称为运算器)及存储模块33(也称为存储器)。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、权值存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责计算装置301与DRAM 204间的数据搬运。
如背景技术中所提到的,现有的处理器仅能支持一种编程架构,而不同的编程架构又各有优缺点。
例如,对于CPU所支持的传统编程架构,也即RAM→寄存器→运算器→寄存器→RAM,当要进行向量运算时,程序员需要将数据切分为多个批次。对于每一批数据,程序员需首先使用寄存器读指令(例如LOAD_RAM指令)将数据从RAM中搬运到寄存器中,然后使用运算指令(例如COMP_REG指令)控制运算器从寄存器中读取数据进行运算,运算完成后将数据写回寄存器,最后使用寄存器写指令(例如STORE_RAM指令)将数据从寄存器写回到RAM中。这种编程模型的优点为,当完成一个比较复杂的运算,并且运算的中间结果能够多次复用时,数据能够在寄存器中进行驻留,且反复多次使用,减少读写RAM的开销。缺点为程序员需要手动进行数据切分,且使用LOAD_RAM/COMP_REG/STORE_RAM指令显式控制寄存器,增加程序员工作量。此外,当数据没有复用时,反而增加了寄存器读写,增加了功耗。
又例如,对于智能计算处理器所支持的新编程架构,也即RAM(例如存储模块33中的NRAM331或WRAM 332)→运算器(例如运算模块32)→RAM(例如存储模块33中的NRAM331或WRAM 332),程序员只需要一条运算指令(例如COMP_RAM指令),即完成一次向量运算操作。从程序员角度来看,数据从RAM读取出来,由运算器完成运算,再写回到RAM中。这个过程中,寄存器对程序员不可见,所有的循环切分由硬件来完成。这种编程模型的优点为,硬件处理了数据拆分过程,减少程序员的工作量,且由于没有循环控制,运行速度更快,编程模型对程序员更加友好;当处理数据没有复用的应用时,不需要进行寄存器读写,减少寄存器读写开销。缺点为当进行复杂运算时,中间运算数据需要多次读写RAM,功耗较高。
有鉴于此,在本披露实施例的处理器中,包括控制器、运算器、存储器和寄存器以支持至少上述两种编程架构。该处理器可以实现为前述计算装置201。
图4示出了根据本披露一些实施例的处理器的示例性结构框图。
如图所示,处理器400包括控制器410、运算器420、存储器430和寄存器440等四大部分。存储器430用来存储运算相关数据,运算器420用来执行运算,控制器410用来接收和译码指令,寄存器440也用来存储运算相关数据,尤其是中间结果。运算器420、存储器430和寄存器440两两之间互相连接。控制器410、运算器420和存储器430的功能与图3中的控制模块31、运算模块32和存储模块33类似,此处不再重复。
处理器400至少支持第一编程架构和第二编程架构。本披露中的编程架构是指基于硬件处理器系统和软件开发的特性,面向开发者和用户的简化处理器,其有利于开发者和用户理解并使用硬件处理器。为了支持不同的应用场景,本披露基于同一硬件处理器,提供了两种不同的编程架构。相应地,指令集作为硬件处理器与系统软件之间的桥梁,为方便开发者和用户使用,两种不同的编程架构分别支持两套不同的指令集。
第一编程架构包括控制器410、运算器420和存储器430,在第一编程模型下,控制器可以控制运算器对存储器直接进行读写,也即其编程模型为RAM→运算器→RAM。第一编程架构支持第一类型的指令,这种第一类型的指令的操作数包含存储器信息,例如RAM地址。当控制器接收到第一类型的指令时,对其进行译码,并响应于该第一类型的指令,控制存储器430和运算器420执行第一类型的指令。控制器410中支持第一编程架构的功能单元可以称为第一控制单元411。这种模式下,开发者和用户只能显式地控制存储器,而寄存器对开发者和用户不可见,即开发者和用户不能直接使用寄存器资源进行编程。
第二编程架构包括控制器410、运算器420、存储器430和寄存器440,在第二编程模型下,控制器可以控制运算器对寄存器直接进行读写,也即其编程模型为RAM→寄存器→运算器→寄存器→RAM。第二编程架构支持第二类型的指令,这种第二类型的指令的操作数包含寄存器信息,例如寄存器编号,诸如R0、R1等等。当控制器接收到第二类型的指令时,对其进行译码,并响应于该第二类型的指令,控制存储器430、寄存器440和运算器420执行第二类型的指令。控制器410中支持第二编程架构的功能单元可以称为第二控制单元412。此模式下,寄存器对开发者和用户可见,即开发者和用户不仅能够显式地控制存储器,还能直接使用寄存器资源进行编程。
从上述处理器结构可以看出,其通过同时支持两种编程架构,可以使得程序员能够根据使用场景灵活选择合适的编程架构,在同一处理器上执行不同编程架构的任务。例如,在涉及复杂运算并且运算的中间结果能够多次复用时,可以采用第二种编程架构,此时寄存器暴露给程序员,程序员需要显式控制寄存器。又例如,在涉及简单的运算,并且数据基本没有复用时,可以采用第一种编程架构。此时寄存器对于程序员不可见,减少了程序员的工作量。
应当理解,尽管在图中将第一控制单元和第二控制单元示出为分离的模块,其仅表示功能上的划分,二者在硬件上可以共享全部或部分部件。
图5a-图5b分别示出了根据本披露一些实施例的处理器在第一编程架构中激活的通路和处理流程。在此示例中,由控制器中的第一控制单元511来实现第一类型的指令的译码以及随后的控制。
如图5a所示,当第一控制单元511接收到第一类型的指令,例如第一运算指令(COMP_RAM)后,会激活第一控制单元511到存储器530的通路、第一控制单元511到运算器520的通路,以及存储器530与运算器520之间的通路。第一运算(COMP_RAM)指令的操作数可以包括输入数据的存储器地址和输出数据的存储器地址。
更具体地,如图5b所示,首先在步骤S521中,第一控制单元将待运算数据切分成多个数据块。假设输入的待运算数据的数据量为X,而当前可调度的运算器的单次处理量为M,则可以将待运算数据切分为ceil(X/M)份。例如,第一控制单元在译码时,可以根据COMP_RAM指令中的参数信息,例如数据量大小等信息,确定应该拆分的数量,继而以循环的方式控制每次拆分中数据块的读写和运算过程。具体地,第一控制单元可以将一条COMP_RAM指令译码为需要循环执行的多条微指令,每条微指令处理一个数据块。
接着,在步骤S522中,第一控制单元通过循环来控制对该多个数据块的处理。也即,运算器一次能够处理M的数据量,那么第一控制单元会执行ceil(X/M)次循环,每次针对一个数据块控制其读写和运算过程。
在每一次循环中,第一控制单元511控制从存储器530读取对应的数据块并输送给运算器520(步骤S523)。例如,第一控制单元511向存储器530发送读取数据控制信号,存储器530读出M的数据,将数据发送给运算器520。进一步地,第一控制单元511控制运算器520对数据块执行运算(步骤S524)。例如,第一控制单元511发送运算控制信号给运算器520,使得运算器520接收到数据块后完成该数据块的运算。进一步地,第一控制单元511控制将运算器520的运算结果写回到存储器530(步骤S525)。例如,第一控制单元511发送存储数据控制信号给存储器530,存储器530将对应数据块的运算结果写入到存储器中。
从上述第一编程架构下的通路和处理流程可以看出,处理器自动进行数据切分和循环控制,无需程序员通过编程来显式地实现,由此大大降低了编程工作量。例如,当运算过程中没有产生数据复用时,程序员可以选择第一种编程模型,减少编程复杂难度,减少寄存器读写功耗开销。第一类指令是使用存储器的第一运算指令COMP_RAM,其能够处理任意长度的数据,例如包括但不限于第一编程架构下的卷积、激活函数等运算指令。第一类指令所涉及的数据来自于存储器,运算器完成运算后,结果写回存储器。
应当理解,尽管在上面的循环步骤中将每次循环过程中的数据加载(Load)、计算(Compute)和回存(Store)描述为顺序的过程,但是在不同循环之间(例如相邻循环之间),这些加载、计算和回存可以并行进行,从而形成LCS流水处理,以提高处理效率。
图5c-图5d分别示出了根据本披露一些实施例的处理器在第二编程架构中激活的通路和处理流程。在此示例中,由控制器中的第二控制单元512来实现第二类型的指令的译码以及随后的控制。
如图5c所示,当第二控制单元512接收到第二类型的指令,例如寄存器写指令(LOAD_RAM)、第二运算指令(COMP_REG)、寄存器读指令(STORE_RAM)等指令后,需要激活的通路包括:第二控制单元512到存储器530的通路、第二控制单元512到运算器520的通路,存储器530与寄存器540之间的通路,以及寄存器540与运算器520之间的通路。可以看出,相比于第一编程架构,此时增加了寄存器540,并且存储器530与运算器520之间可以不激活通路。
更具体地,如图5d所示,首先在步骤S541中,当第二控制单元512接收到LOAD_RAM指令后,会控制从存储器530读取数据并写入寄存器540中。例如,第二控制单元512给存储器530发送读取数据控制信号,以使得存储器530读出数据后,将数据写到寄存器540中。
接着,在步骤S542中,当第二控制单元512接收到COMP_REG指令后,会控制运算器520从寄存器540读取数据进行运算并将运算结果写回到寄存器540。例如,第二控制单元512给运算器520发送运算控制信号,以使得运算器520从寄存器540中读出数据,完成运算后,将结果写回到寄存器540中。
最后,在步骤S543中,当第二控制单元512接收到STORE_RAM指令后,会控制将运算结果从寄存器540写回到存储器530。例如,第二控制单元512给存储器530发送控制信号,以使得存储器530从寄存器540中接收到数据后,写入存储器530中。
从上述第二编程架构下的通路和处理流程可以看出,控制单元根据详细的指令来实现每一次的数据处理,需要程序员在编程时显式地控制寄存器的使用。例如,在运算过程中产生数据复用时,程序员可以使用第二种编程模型,从而减少读写存储器产生的功耗开销。第二类型的指令主要包括LOAD_RAM指令、COMP_REG指令和STORE_RAM指令这三种类型的指令,LOAD_RAM指令、COMP_REG指令和STORE_RAM指令的操作数包括相关数据的寄存器地址。其中,LOAD_RAM和STORE_RAM是第二编程架构下对RAM的访存指令,COMP_REG指令是使用寄存器的运算指令,其例如包括但不限于第二编程架构下的加法、乘法等运算指令。
同样地,可以理解,尽管在上面的处理流程中将各个步骤描述为顺序的过程,但是在各次数据处理之间,这些步骤可以并行进行,从而形成多级流水处理,以提高处理效率。
本披露实施例还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的处理器。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。本披露实施例还提供了基于前述处理器执行运算的方法。本领域技术人员可以理解,处理器执行运算的方法步骤与前面结合附图描述的处理器的各个电路及作用相对应,因此前面描述的特征同样适用于方法步骤,此处不再重复。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1、一种处理器,包括控制器、运算器、存储器和寄存器,所述处理器至少支持第一编程架构和第二编程架构,其中:
所述第一编程架构包括所述控制器、所述运算器和所述存储器,所述第一编程架构支持第一类型的指令,所述第一类型的指令的操作数包含存储器信息;
所述第二编程架构包括所述控制器、所述运算器、所述存储器和所述寄存器,所述第二编程架构支持第二类型的指令,所述第二类型的指令的操作数包含寄存器信息。
条款2、根据条款1所述的处理器,其中所述控制器包括第一控制单元,用于实现所述第一类型的指令的译码,所述第一控制单元进一步用于按如下进行控制:
将待运算数据切分成多个数据块,并通过循环来控制对所述多个数据块的处理,其中在每一次循环中:
控制从所述存储器读取对应的数据块并输送给所述运算器;
控制所述运算器对所述数据块执行运算;以及
控制将所述运算器的运算结果写回到所述存储器。
条款3、根据条款2所述的处理器,其中所述第一控制单元进一步用于按如下将待运算数据切分成多个数据块:
根据所述待运算数据的数据量X以及当前可调度的所述运算器的单次处理量M,将所述待运算数据切分为ceil(X/M)份。
条款4、根据条款1-3任一所述的处理器,其中所述第一类型的指令包括第一运算指令,所述第一运算指令的操作数包括输入数据的存储器地址和输出数据的存储器地址。
条款5、根据条款1-4任一所述的处理器,其中所述控制器包括第二控制单元,用于实现所述第二类型的指令的译码,所述第二控制单元进一步用于按如下进行控制:
控制从所述存储器读取数据并写入所述寄存器中;
控制所述运算器从所述寄存器读取数据进行运算并将运算结果写回到所述寄存器;以及
控制将运算结果从所述寄存器写回到所述存储器。
条款6、根据条款5所述的处理器,其中所述第二类型的指令包括寄存器读指令、第二运算指令和寄存器写指令,所述寄存器读指令、第二运算指令和寄存器写指令的操作数包括相关数据的寄存器地址。
条款7、一种基于处理器执行运算的方法,所述处理器包括控制器、运算器、存储器和寄存器,所述处理器至少支持第一编程架构和第二编程架构,其中所述第一编程架构包括所述控制器、所述运算器和所述存储器,所述第一编程架构支持第一类型的指令,所述第一类型的指令的操作数包含存储器信息;所述第二编程架构包括所述控制器、所述运算器、所述存储器和所述寄存器,所述第二编程架构支持第二类型的指令,所述第二类型的指令的操作数包含寄存器信息;所述方法包括:
所述控制器响应于第一类型的指令,控制所述存储器和所述运算器执行所述第一类型的指令;以及
所述控制器响应于第二类型的指令,控制所述存储器、所述寄存器和所述运算器执行所述第二类型的指令。
条款8、根据条款7所述的方法,其中所述控制器控制执行所述第一类型的指令包括:
将待运算数据切分成多个数据块,并通过循环来控制对所述多个数据块的处理,其中在每一次循环中:
控制从所述存储器读取对应的数据块并输送给所述运算器;
控制所述运算器对所述数据块执行运算;以及
控制将所述运算器的运算结果写回到所述存储器。
条款9、根据条款8所述的方法,其中将待运算数据切分成多个数据块包括:
根据所述待运算数据的数据量X以及当前可调度的所述运算器的单次处理量M,将所述待运算数据切分为ceil(X/M)份。
条款10、根据条款7-9任一所述的方法,其中所述第一类型的指令包括第一运算指令,所述第一运算指令的操作数包括输入数据的存储器地址和输出数据的存储器地址。
条款11、根据条款7-10任一所述的方法,其中所述控制器控制执行所述第二类型的指令包括:
控制从所述存储器读取数据并写入所述寄存器中;
控制所述运算器从所述寄存器读取数据进行运算并将运算结果写回到所述寄存器;以及
控制将运算结果从所述寄存器写回到所述存储器。
条款12、根据条款11所述的方法,其中所述第二类型的指令包括寄存器读指令、第二运算指令和寄存器写指令,所述寄存器读指令、第二运算指令和寄存器写指令的操作数包括相关数据的寄存器地址。
条款13、一种芯片,包括根据条款1-6任一所述的处理器。
条款14、一种板卡,包括根据条款13所述的芯片。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (14)

1.一种处理器,包括控制器、运算器、存储器和寄存器,所述处理器至少支持第一编程架构和第二编程架构,其中:
所述第一编程架构包括所述控制器、所述运算器和所述存储器,所述第一编程架构支持第一类型的指令,所述第一类型的指令的操作数包含存储器信息;
所述第二编程架构包括所述控制器、所述运算器、所述存储器和所述寄存器,所述第二编程架构支持第二类型的指令,所述第二类型的指令的操作数包含寄存器信息。
2.根据权利要求1所述的处理器,其中所述控制器包括第一控制单元,用于实现所述第一类型的指令的译码,所述第一控制单元进一步用于按如下进行控制:
将待运算数据切分成多个数据块,并通过循环来控制对所述多个数据块的处理,其中在每一次循环中:
控制从所述存储器读取对应的数据块并输送给所述运算器;
控制所述运算器对所述数据块执行运算;以及
控制将所述运算器的运算结果写回到所述存储器。
3.根据权利要求2所述的处理器,其中所述第一控制单元进一步用于按如下将待运算数据切分成多个数据块:
根据所述待运算数据的数据量X以及当前可调度的所述运算器的单次处理量M,将所述待运算数据切分为ceil(X/M)份。
4.根据权利要求1-3任一所述的处理器,其中所述第一类型的指令包括第一运算指令,所述第一运算指令的操作数包括输入数据的存储器地址和输出数据的存储器地址。
5.根据权利要求1-4任一所述的处理器,其中所述控制器包括第二控制单元,用于实现所述第二类型的指令的译码,所述第二控制单元进一步用于按如下进行控制:
控制从所述存储器读取数据并写入所述寄存器中;
控制所述运算器从所述寄存器读取数据进行运算并将运算结果写回到所述寄存器;以及
控制将运算结果从所述寄存器写回到所述存储器。
6.根据权利要求5所述的处理器,其中所述第二类型的指令包括寄存器读指令、第二运算指令和寄存器写指令,所述寄存器读指令、第二运算指令和寄存器写指令的操作数包括相关数据的寄存器地址。
7.一种基于处理器执行运算的方法,所述处理器包括控制器、运算器、存储器和寄存器,所述处理器至少支持第一编程架构和第二编程架构,其中所述第一编程架构包括所述控制器、所述运算器和所述存储器,所述第一编程架构支持第一类型的指令,所述第一类型的指令的操作数包含存储器信息;所述第二编程架构包括所述控制器、所述运算器、所述存储器和所述寄存器,所述第二编程架构支持第二类型的指令,所述第二类型的指令的操作数包含寄存器信息;所述方法包括:
所述控制器响应于第一类型的指令,控制所述存储器和所述运算器执行所述第一类型的指令;以及
所述控制器响应于第二类型的指令,控制所述存储器、所述寄存器和所述运算器执行所述第二类型的指令。
8.根据权利要求7所述的方法,其中所述控制器控制执行所述第一类型的指令包括:
将待运算数据切分成多个数据块,并通过循环来控制对所述多个数据块的处理,其中在每一次循环中:
控制从所述存储器读取对应的数据块并输送给所述运算器;
控制所述运算器对所述数据块执行运算;以及
控制将所述运算器的运算结果写回到所述存储器。
9.根据权利要求8所述的方法,其中将待运算数据切分成多个数据块包括:
根据所述待运算数据的数据量X以及当前可调度的所述运算器的单次处理量M,将所述待运算数据切分为ceil(X/M)份。
10.根据权利要求7-9任一所述的方法,其中所述第一类型的指令包括第一运算指令,所述第一运算指令的操作数包括输入数据的存储器地址和输出数据的存储器地址。
11.根据权利要求7-10任一所述的方法,其中所述控制器控制执行所述第二类型的指令包括:
控制从所述存储器读取数据并写入所述寄存器中;
控制所述运算器从所述寄存器读取数据进行运算并将运算结果写回到所述寄存器;以及
控制将运算结果从所述寄存器写回到所述存储器。
12.根据权利要求11所述的方法,其中所述第二类型的指令包括寄存器读指令、第二运算指令和寄存器写指令,所述寄存器读指令、第二运算指令和寄存器写指令的操作数包括相关数据的寄存器地址。
13.一种芯片,包括根据权利要求1-6任一所述的处理器。
14.一种板卡,包括根据权利要求13所述的芯片。
CN202210913657.1A 2022-07-29 2022-07-29 处理器、芯片、板卡及方法 Pending CN117520254A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210913657.1A CN117520254A (zh) 2022-07-29 2022-07-29 处理器、芯片、板卡及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210913657.1A CN117520254A (zh) 2022-07-29 2022-07-29 处理器、芯片、板卡及方法

Publications (1)

Publication Number Publication Date
CN117520254A true CN117520254A (zh) 2024-02-06

Family

ID=89750058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210913657.1A Pending CN117520254A (zh) 2022-07-29 2022-07-29 处理器、芯片、板卡及方法

Country Status (1)

Country Link
CN (1) CN117520254A (zh)

Similar Documents

Publication Publication Date Title
CN111291880B (zh) 计算装置以及计算方法
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
CN110298443B (zh) 神经网络运算装置及方法
CN112799726B (zh) 数据处理装置、方法及相关产品
WO2023071238A1 (zh) 计算图的编译、调度方法及相关产品
CN112465133B (zh) 控制流多核并行方法、计算机设备和存储介质
CN111176608A (zh) 一种用于执行向量比较运算的装置和方法
CN112766475B (zh) 处理部件及人工智能处理器
CN117520254A (zh) 处理器、芯片、板卡及方法
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
CN115373646A (zh) 扩展信息方法、装置和相关产品
CN117093263A (zh) 处理器、芯片、板卡及方法
CN113746471B (zh) 运算电路、芯片和板卡
CN113742266B (zh) 集成电路装置、电子设备、板卡和计算方法
CN113469328B (zh) 执行转数穿过的装置、板卡、方法及可读存储介质
CN115437603B (zh) 用于生成随机数的方法及其相关产品
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
CN114692847B (zh) 数据处理电路、数据处理方法及相关产品
WO2022111013A1 (zh) 支援多种访问模式的设备、方法及可读存储介质
WO2022001438A1 (zh) 一种计算装置、集成电路芯片、板卡、设备和计算方法
CN118259916A (zh) 编译方法、运行方法及相关产品
CN117667212A (zh) 指令控制装置、方法、处理器、芯片和板卡
CN117648091A (zh) 计算图的编译方法及相关产品
CN117687935A (zh) 指令控制方法、数据缓存方法及相关产品
CN114298292A (zh) 获取算子数据和离线模型操作的设备及方法

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