CN113011553A - 加速器、操作加速器的方法和包括加速器的装置 - Google Patents
加速器、操作加速器的方法和包括加速器的装置 Download PDFInfo
- Publication number
- CN113011553A CN113011553A CN202010886046.3A CN202010886046A CN113011553A CN 113011553 A CN113011553 A CN 113011553A CN 202010886046 A CN202010886046 A CN 202010886046A CN 113011553 A CN113011553 A CN 113011553A
- Authority
- CN
- China
- Prior art keywords
- accelerator
- command
- commands
- peripheral device
- target command
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000002093 peripheral effect Effects 0.000 claims abstract description 159
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000013528 artificial neural network Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
- 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
- G06F9/5044—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 considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/122—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware performs an I/O function other than control of data transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- 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
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Abstract
提供了一种加速器、操作加速器的方法和包括加速器的装置。所述操作加速器的方法包括:从中央处理器(CPU)接收用于加速器和加速器的外围装置的多个命令;根据执行所述多个命令中的每个的对象来处理接收的所述多个命令;和在所述多个命令的执行完成之后,将指示所述多个命令的执行的完成的完成消息发送到CPU。
Description
本申请要求于2019年12月20日在韩国知识产权局提交的第10-2019-0172348号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及加速器、操作加速器的方法以及包括加速器的装置。
背景技术
包括深度神经网络(DNN)的机器学习应用可包括包含大量的计算或存储器需求的许多操作。因此,机器学习应用会使用大量的资源。因此,存在对用于神经网络计算的改进技术的期望。
发明内容
提供本发明内容以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求权利的主题的关键特征或者必要特征,也不意在用于帮助确定要求权利的主题的范围。
在一个总体方面中,一种操作加速器的方法包括:从中央处理器(CPU)接收用于加速器和加速器的外围装置的多个命令;根据执行所述多个命令中的每个的对象来处理接收的所述多个命令;和在所述多个命令的执行完成之后,将指示所述多个命令的执行的完成的完成消息发送到CPU。
在执行所述多个命令之中的目标命令的对象是加速器的情况下,处理所述多个命令的步骤可包括:在加速器中执行目标命令。在执行目标命令的对象是外围装置的情况下,处理所述多个命令的步骤可包括:将目标命令发送到外围装置。
在执行目标命令的对象是外围装置的情况下,在将目标命令从加速器发送到外围装置之后,可在没有CPU的干预的情况下在外围装置中执行目标命令。
在执行目标命令的对象是外围装置的情况下,在外围装置中执行从加速器发送的目标命令之后,将指示目标命令的执行的完成的完成消息从外围装置发送到加速器。
在所述多个命令之中的第一命令的执行完成之后,处理所述多个命令的步骤可包括:根据执行第二命令的对应的对象处理第二命令,第二命令是第一命令的随后的命令。
加速器可与CPU一起被包括在装置中,并且加速器被配置为执行能够在所述装置中被处理的处理之中的基于神经网络的推断。
所述多个命令之中的用于加速器的至少一个命令可以是用于在加速器中执行至少一个基于神经网络的操作的命令。
可基于相关性和执行顺序中的一个或两个将从CPU接收的所述多个命令存储在包括在加速器中的命令队列中。
在执行所述多个命令之中的目标命令的对象是被配置为与另外的装置通信的外围装置的情况下,处理所述多个命令的步骤可包括:将加速器的处理结果与目标命令一起发送到外围装置。目标命令可包括与同所述另外的装置的连接相关联的连接信息。
在执行所述多个命令之中的目标命令的对象是存储装置的情况下,处理所述多个命令的步骤可包括:将包括指示从存储装置读取数据还是将数据写入存储装置的信息的目标命令发送到存储装置。
加速器、CPU和外围装置可在同一装置中通过外围组件互连快速(PCIe)通信来发送或接收数据信号和/或控制信号。
在另一总体方面,一种加速器包括:核控制器,被配置为根据执行每个命令的对象,将从CPU接收并存储在命令队列中的多个命令之中的将被执行的目标命令发送到加速器控制器或外围装置控制器;加速器控制器,被配置为在加速器是执行目标命令的对象的情况下从核控制器接收目标命令,并且执行接收的目标命令;和外围装置控制器,被配置为在外围装置是执行目标命令的对象的情况下从核控制器接收目标命令,并且将接收的目标命令发送到外围装置。在存储在命令队列中的所述多个命令的执行完成之后,核控制器可被配置为将指示所述多个命令的执行的完成的完成消息发送到CPU。
在另一总体方面中,一种装置包括:CPU,被配置为将用于加速器和外围装置的多个命令发送到加速器;加速器,被配置为在所述多个命令之中的目标命令将由加速器执行的情况下执行目标命令,并且在目标命令将由外围装置执行的情况下将目标命令发送到外围装置;以及外围装置,被配置为在目标命令将由外围装置执行的情况下执行从加速器接收的目标命令。在所述多个命令的执行完成之后,加速器可将指示所述多个命令的执行的完成的完成消息发送到CPU。
在另一总体方面中,一种加速器包括:一个或多个处理器,用于从中央处理器(CPU)接收将被处理的一个或多个命令;针对所述多个命令中的每个确定各个命令将由所述一个或多个处理器处理还是将由外围装置处理;在确定各个命令将由所述一个或多个处理器处理的情况下,处理各个命令;在确定各个命令将由外围装置处理的情况下,将命令发送到外围装置;以及仅在确认所述多个命令中的所有命令已被处理之后,将完成消息发送到CPU。
加速器的所述一个或多个处理器可针对所述多个命令中的每个基于各个命令是否需要基于神经网络的推断的执行或用于神经网络学习的梯度的计算,来确定各个命令将由所述一个或多个处理器处理还是将由外围装置处理。
加速器的所述一个或多个处理器可在确定各个命令将由外围装置处理的情况下,在确定外围装置执行各个命令需要所述一个或多个处理器的处理结果的情况下,将处理结果发送到外围装置。
加速器的所述一个或多个处理器可在从外围装置接收到指示将由外围装置处理的所有命令已由外围装置处理的命令完成消息之后,将完成消息发送到CPU。
从下面的具体实施方式、附图和权利要求,其他的特征和方面将是清楚的。
附图说明
图1a和图1b是示出装置的示例的示图。
图2是示出中央处理器(CPU)、加速器和外围装置中的每个的操作的示例的示图。
图3、图4、图5和图6是示出加速器如何将命令直接发送到外围装置的示例的示图。
图7和图8是示出装置的示例的示图。
图9是示出操作加速器的方法的示例的流程图。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不受限于在此阐述的那些顺序,而是除了必须以特定的顺序发生的操作之外,可如在理解本申请的公开之后将是清楚地那样被改变。
在此描述的特征可以以不同的形式来实现,而不应被解释为受限于在此描述的示例。相反,在此描述的示例仅已被提供,以示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。
虽然诸如“第一”、“第二”和“第三”的术语可在此用于描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应被这些术语限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一个构件、组件、区域、层或部分区分开来。因此,在不脱离示例的教导的情况下,在此描述的示例中提及的第一构件、组件、区域、层或部分也可被称为第二构件、组件、区域、层或部分。
贯穿说明书,当组件被描述为“连接到”或“结合到”另一组件时,所述组件可直接“连接到”或“结合到”所述另一组件,或者可存在介于其间的一个或多个其他组件。相反,当元件被描述为“直接连接到”或“直接结合到”到另一元件时,可不存在介于其间的其他元件。同样地,相似的表述(例如,“在……之间”与“直接在……之间”以及“与……邻近”与“直接与……相邻”)也应以相同的方式来解释。如在此所使用的,术语“和/或”包括相关联所列项中的任何一个或者任何两个或更多个的任何组合。
在此使用的术语仅用于描述各种示例的目的,并且将不用于限制公开。除非上下文清楚地另有指示,否则单数形式也意在包括复数形式。术语“包括”、“包含”和“具有”说明存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但并不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解以及基于对本申请的公开的理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)将被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且将不以理想化或过于形式化的意义进行解释。
此外,在示例实施例的描述中,当认为在理解本申请的公开之后由此已知的结构或功能的详细描述将导致对示例实施例的模糊解释时,将省略这样的描述。
在下文中,将参照附图详细描述示例,并且附图中的相同的参考标号始终表示相同的元件。
图1a和图1b是示出装置的示例的示图。
参照图1a,装置100包括中央处理器(CPU)110、加速器120、外围装置130和动态随机存取存储器(DRAM)140。这里,装置100可以是电子装置。
在图1a的示例中,当将在加速器120中执行的神经处理单元(NPU)操作的结果的目的地是外围装置130时,CPU 110可通过控制信号路径将用于执行NPU操作的命令发送到加速器120。加速器120可根据命令执行NPU操作,并通过数据路径将执行NPU操作的结果存储在DRAM 140中。然后,加速器120可通过完成信号路径将指示命令的执行的完成的完成消息发送到CPU 110。当CPU 110从加速器120接收到完成消息时,CPU 110可通过控制信号路径将用于读取NPU操作的结果的命令发送到外围装置130。然后,外围装置130可根据CPU 110的命令从DRAM 140读取NPU操作的结果。例如,当外围装置130是被配置为与另外的装置通信的网络接口装置时,外围装置130可将NPU操作的结果发送到该另外的装置。又例如,当外围装置130是存储装置时,外围装置130可存储NPU操作的结果。然后,外围装置130可通过完成信号路径将完成消息发送到CPU 110。
如以上参照图1a所述,CPU 110可将命令发送到装置,并且然后仅在指示命令的执行的完成的完成消息被接收到之后,按照序列顺序将下一命令发送到另外的装置。因此,在这样的示例中,可能需要CPU 110的频繁干预,导致延迟的增加。为了使这样的不必要的延迟最小化并提高吞吐量,提供了图1b中示出的结构。
参照图1b,装置1000包括CPU 1110、加速器1120和外围装置1130。
CPU 1110可以是被配置为处理装置1000中执行的处理操作的通用处理器。CPU1110可生成用于包括在装置1000中的另外的装置(例如,加速器1120和外围装置1130)的命令,从而控制另外的装置的操作。在一个示例中,CPU 1110可将用于加速器1120和外围装置1130的命令发送到加速器1120。也就是说,除了用于加速器1120的命令之外,CPU 1110还可将用于外围装置1130的命令发送到加速器1120,而不是将用于外围装置1130的命令直接发送到外围装置1130。这些命令可通过控制信号路径从CPU 1110发送到加速器1120。
加速器1120可以是被配置为处理在专用处理器中比在通用处理器(例如,CPU1110)中更有效地执行的处理操作的专用处理器。例如,加速器1120可通过基于深度神经网络(DNN)执行至少一个操作来执行输入数据的推断。加速器1120可计算用于确定包括在神经网络中的节点的参数的梯度。例如,加速器1120可包括一个或多个处理器(例如,NPU、图形处理单元(GPU)、张量处理单元(TPU)等)。
在一个示例中,加速器1120可通过控制信号路径从CPU 1110接收用于加速器1120和外围装置1130的命令。加速器1120可根据执行每个命令的对象来处理接收的命令。例如,当执行接收的命令之中的目标命令的对象是加速器1120时,加速器1120可直接执行目标命令。然而,当执行接收的命令之中的目标命令的对象是外围装置1130时,加速器1120可将目标命令发送到外围装置1130。目标命令可通过加速器1120与外围装置1130之间的控制信号路径从加速器1120发送到外围装置1130。当外围装置1130执行与目标命令有关的操作需要从加速器1120处理和获得的操作结果时,加速器1120的操作结果可通过数据路径从加速器1120发送到外围装置1130。
外围装置1130可以是与CPU 1110和加速器1120一起包括在装置1000中的组件,并且由除了CPU 1110和加速器1120之外的各种装置来实现。例如,外围装置1130可包括接口装置(诸如,网络接口卡(NIC))、存储装置(诸如,固态驱动器(SSD))等。外围装置1130可执行与从加速器1120接收的命令有关的操作。当命令的执行完成时,指示命令的执行的完成的完成消息可通过完成信号路径从外围装置1130发送到加速器1120。当处理结果需要从外围装置1130发送到加速器1120时,处理结果可通过数据路径从外围装置1130发送到加速器1120。
虽然为了便于描述,在图1b中示出了一个外围装置(例如,外围装置1130),但是多个外围装置可被包括在装置1000中,并且下面的描述可应用于包括在装置1000中的每个外围装置和加速器1120。
当从CPU 1110发送的命令全部被加速器1120和/或外围装置1130执行时,加速器1120可将指示命令的执行的完成的完成消息发送到CPU 1110。对于完成消息的发送,完成信号路径可被使用。
例如,当NPU操作的结果的目的地是外围装置1130时,可在图1b中示出的结构中执行下面的操作。CPU 1110可通过控制信号路径将用于加速器1120和外围装置1130的所有命令发送到加速器1120。根据命令之中的第一命令,可在加速器1120中执行NPU操作。当命令之中的第二命令用于外围装置1130时,加速器1120可通过控制信号路径将第二命令发送到外围装置1130。然后,外围装置1130可执行与第二命令有关的操作。例如,外围装置1130可从加速器1120读取NPU操作的结果,并且将该结果发送到另外的装置。在这个示例中,NPU操作的结果可通过数据路径从加速器1120发送到外围装置1130。然后,外围装置1130可通过完成信号路径将完成消息发送到加速器1120。当加速器1120验证不再有将被执行的命令时,加速器1120可通过完成信号路径将完成消息发送到CPU 1110。
图1b中示出的控制信号路径/完成信号路径可包括控制信号路径或完成信号路径。通过控制信号路径,命令可被发送。通过完成信号路径,完成消息可被发送。数据路径可以是传输执行命令所需的数据或通过执行命令而获得的结果数据(例如,NPU操作的结果,而不是命令和完成消息)所通过的路径。
与以上参照图1a描述的结构不同,CPU 1110可将用于加速器1120和外围装置1130两者的所有命令发送到加速器1120,并且当在加速器1120和/或外围装置1130中执行了所有命令时,加速器1120随后可将完成消息发送到CPU 1110。因此,CPU 1110的干预可被最小化,并且因此延迟可有效地减少。
图2是示出CPU、加速器和外围装置中的每个的操作的示例的示图。
在图2的示例中,以流程图的形式示出CPU、加速器和外围装置如何进行操作。
参照图2,在操作210中,CPU将用于加速器和外围装置的命令发送到加速器。也就是说,除了用于加速器的至少一个命令之外,用于外围装置的至少一个命令也可被发送到加速器。
在操作220中,加速器将接收的命令存储在命令队列中。命令可基于相关性(dependency)和/或执行顺序被存储在命令队列中。因此,可以防止在当前命令被完全执行之前执行下一命令,并且因此可基于预设的相关性和/或执行顺序来执行命令。
在操作230中,加速器从命令队列确认将被执行的目标命令。为了确认将被执行的目标命令,存储在命令队列中的命令的相关性和/或执行顺序可被考虑。
在操作240中,加速器验证执行目标命令的对象。例如,加速器可验证目标命令与加速器相关联还是与外围装置相关联。当执行目标命令的对象是加速器时,可执行操作250。当执行目标命令的对象是外围装置时,可执行操作260。
在操作250中,加速器执行与加速器相关联的目标命令。例如,根据目标命令,加速器可执行神经网络中定义的至少一个运算(例如,卷积运算、线性整流单元(ReLU)运算和S形运算)。也就是说,加速器可根据目标命令执行基于神经网络的推断或计算用于神经网络学习的梯度。
在操作260中,加速器将目标命令发送到外围装置。目标命令可与外围装置相关联。根据示例,外围装置执行目标命令所需的加速器的处理结果可被附加地发送到外围装置。
在操作261中,外围装置执行与外围装置相关联的目标命令。例如,当外围装置是被配置为与另外的装置通信的接口装置时,外围装置可将加速器的处理结果发送到该另外的装置。又例如,当外围装置是存储装置时,外围装置可从存储装置读取数据,或将加速器的处理结果写入存储装置。
在操作262中,当在外围装置中完成目标命令的执行时,外围装置将命令完成消息发送到加速器,而不是发送到CPU。
在操作270中,当在加速器或外围装置中完成目标命令的执行时,加速器验证是否存在下一命令。例如,加速器可验证命令队列中是否存在仍待执行的命令。当存在下一命令或仍待执行的命令时,可执行操作230,并且可根据执行下一命令的对应的对象来执行下一命令。当不存在下一命令或仍待执行的命令时,可执行操作280。
在操作280中,当从CPU接收并存储在命令队列中的所有命令的执行完成时,加速器将命令完成消息发送到CPU。
如上所述,与加速器和外围装置两者相关联的所有命令可从CPU发送到加速器,并且当所有命令的执行完成时,命令完成消息可从加速器发送到CPU,而不是每当每个命令的执行由加速器或外围装置完成时,CPU进行干预并且给出下一命令。因此,可以使可能由于CPU的干预而发生的延迟最小化,并且减少CPU上的负载,从而实现更快的处理。通过可使CPU的干预最小化的结构,可以去除除了加速器和外围装置之外的硬件的参与,并有效地减少延迟。因此,可以提高吞吐量,并且有效地减小将加速器的操作结果存储在加速器的内部存储器中所需的DRAM的大小。
图3至图6是示出加速器如何将命令直接发送到外围装置的示例的示图。
参照图3,外围装置330可从加速器320接收命令并且执行接收的命令。
CPU 310可将与加速器320和外围装置330相关联的命令发送到加速器320。由加速器320接收的命令可基于相关性和/或执行顺序被存储在命令队列321中。在命令队列321中,Cmnd ID指示命令的标识符,Cmnd指示命令的内容。Next Cmnd指示是否存在下一命令,或者指示下一命令的标识符。在图3的示例中,Cmnd指示命令。
核控制器323可从命令队列321确认需要在当前时间执行的目标命令,验证执行确认的目标命令的对象,并将目标命令发送到加速器核325或外围装置控制器327。当执行目标命令的对象是加速器320时,核控制器323可将目标命令发送到加速器核325。当执行目标命令的对象是外围装置330时,核控制器323可将目标命令发送到外围装置控制器327。
加速器核325可执行从核控制器323接收的目标命令。例如,加速器核325可通过执行基于神经网络的运算来响应于输入数据执行推断操作。由加速器核325执行的操作的结果可被存储在内部存储器329中。在内部存储器329中,阴影部分可指示存储数据的部分,空的部分可指示未存储数据且因此可用于将被存储在其中的新操作结果的部分。
外围装置控制器327可将目标命令发送到外围装置330,使得从核控制器323接收的目标命令由外围装置330执行。根据示例,当外围装置330执行目标命令需要加速器核325的操作结果时,存储在内部存储器329中的操作结果可被发送到外围装置330。
外围装置330可执行从外围装置控制器327接收的目标命令。当目标命令的执行完成时,外围装置330可将命令完成消息发送到外围装置控制器327,以通知目标命令的执行完成。
在下文中,将更详细地描述示例。
参照图4,NIC 430可从加速器420接收命令并且执行接收的命令。NIC430可以是被配置为与另外的装置通信的接口装置的示例。然而,示例不限于NIC 430,并且其他各种接口和/或通信装置可被应用。
由加速器420执行的操作的结果(例如,梯度)可在没有CPU 410的干预或帮助的情况下被立即发送到NIC 430,然后通过网络被发送到另外的装置(例如,另外的服务器)。这样的方法可实现快速数据共享,这将在下文中详细描述。
当存在将这样的加速器420的操作结果发送到装置外部的需要时,除了用于加速器420的命令之外,CPU 410还可将用于NIC 430的命令发送到加速器420。为此,可单独地存在指示是否存在相关联的NIC命令的比特。
从CPU 410接收的命令可被存储在命令队列421中。在图4的示例中,在命令队列421中,需要在加速器命令之后执行的NIC命令和加速器命令可存储为与加速器命令所在的行相同的行中的对。例如,针对第一命令,除非第二命令可被执行,否则NIC命令可不需要在加速器命令之后被执行。然而,因为NIC命令在加速器命令之后,所以第二命令可指示NIC命令需要在加速器命令之后执行。
当核控制器423通过参照命令队列421验证将被执行的命令与加速器420相关联时,核控制器423可基于加速器核425的可用性将这样的加速器命令发送到加速器核425。例如,当加速器核425的可用性低时,核控制器423可在预设时间量过去之后或者当可用性变得大于或等于阈值比率时将加速器命令发送到加速器核425。
加速器核425可根据接收的加速器命令来执行操作。例如,当Conv(z,w)被接收为加速器命令时,加速器核425可对(z,w)执行卷积运算,当Conv(x,y)被接收为加速器命令时,加速器核425可对(x,y)执行卷积运算,其中,x、y、z和w指示数据。当操作的执行完成时,执行操作的结果可被存储在内部存储器中,并且加速器核425可向核控制器423通知命令的执行的完成。
当核控制器423通过参照命令队列421验证存在相关联的NIC命令时,核控制器423可将NIC命令发送到NIC控制器427。NIC命令可包括:与装置和需要被发送操作结果的另外的装置(例如,对方服务器)之间的网络连接相关联的连接信息、与将被发送的操作结果的数据相关联的信息(例如,操作结果存储在内部存储器中的物理地址、操作结果的数据的长度)等。例如,当装置根据互联网协议版本4(IPv4)传输控制协议(TCP)连接到另外的装置时,NIC命令可包括装置和另外的装置中的每个的IP地址、端口信息和TCP ack/seq序号等。
也就是说,通过参照命令队列421,可以验证在加速器核425执行对应的命令之后是否需要将操作结果发送到装置的外部,并且验证将操作结果发送到哪里。
如上所述,核控制器423可从命令队列421读取命令,并且将对应的命令分配到加速器核425和NIC控制器427。
NIC控制器427可以是安装在加速器420中以控制NIC 430的逻辑。在一个示例中,NIC控制器427可包括用于控制NIC 430的传输队列和完成队列。为了将命令发送到NIC430,NIC控制器427可将命令输入到传输队列,然后将值写入NIC 430的门铃(例如,内部寄存器)。然后,NIC 430可从传输队列读取命令以执行操作(例如,将操作结果发送到另外的装置),并且然后将对应的结果写入完成队列。然后,核控制器423可基于完成队列来确定命令的执行是否完成。在图4的示例中,存储在命令队列421中的NIC命令1.2.3.4/12可以是生成用于TCP通信的TCP头所需的信息。传输队列和完成队列的对可作为用于单个NIC 430的多个对存在。在这种情况下,各种加速器可同时使用NIC 430。
当存储在命令队列421中的所有命令被执行时,核控制器423可将命令完成消息以及中断一起发送到CPU 410。当包括用于NIC 430的命令的所有命令的执行完成时,加速器420可将命令完成消息发送到CPU 410。因此,可以通过限制CPU 410的参与直到操作结果从加速器420被获得并且被发送到另外的装置为止,来防止不必要的延迟的增加。
在一个示例中,加速器420和NIC 430可存在于不同的板中,CPU 410、加速器420和NIC 430可通过外围组件互连快速(PCIe)互连来连接。通过CPU 410与加速器420之间的通信,可主要交换命令。通过加速器420与NIC430之间的通信,可交换命令和数据(例如,操作结果)。此外,加速器420中的组件可在电路上彼此通信。
通过上述方法,可以更快速地将数据发送到装置的外部,并且能够在分布式处理环境中快速数据共享。例如,在需要通过在服务器之间共享梯度来执行更新的神经网络学习处理中,可通过该方法来减少学习时间。通过允许NIC 430在操作结果被获得时立即将操作结果发送到外部,可以减小存储操作结果的DRAM的大小。
参照图5,SSD 530可从加速器520接收命令并且执行接收的命令。SSD 530可以是包括在装置中的存储装置的示例。然而,示例不限于SSD 530,并且其他各种存储装置可被应用。
加速器520可从CPU 510接收用于加速器520和SSD 530的命令。核控制器523可通过SSD控制器527将用于SSD 530的命令发送到SSD 530,使得命令被执行。为此,加速器520可包括用于控制SSD 530的SSD控制器527,并且对应形式的命令可被存储在命令队列521中。例如,将被存储在命令队列521中的SSD命令可包括与内部SSD数据的位置和长度相关联的信息以及指示是读取数据还是写入数据的信息。
例如,当需要通过从SSD 530读取数据来执行操作时,可首先执行SSD读取命令。当SSD读取命令的执行完成时,加速器核525可立即开始操作。因此,可以在没有由于CPU 510引起的延迟的情况下实现快速操作。
在命令队列521中,SSD read(x,y)指示用于基于(x,y)读取数据的SSD命令,Conv(z,w)指示用于对(z,w)执行卷积运算的加速器命令。Next Cmnd指示是否存在下一命令或下一命令的标识符。命令可以以链的形式表示。
通过上述方法,即使当大量数据被存储在存储装置(例如,SSD 530)中时,也可通过允许加速器520在数据被读取之后立即开始操作来实现快速操作。
参照图6,存储器630可从加速器620接收命令并且执行接收的命令。存储器630可以是可通过PCIe通信访问的存储器,并且可以是例如内部GPU存储器和内部CPU存储器。在命令队列中,Mem read(x,y)指示用于从存储器读取数据(x,y)的命令。在这个示例中,存储器630可通过包括在加速器620中的直接存储器存取(DMA)627可访问。例如,即使当由于操作系统(OS)的磁盘高速缓存而导致数据被包括在内部GPU存储器或内部CPU存储器中时,也可以通过应用上述方法来使延迟最小化。
图7和图8是示出装置的示例的示图。
参照图7,装置可以是服务器700。服务器700包括CPU 710、加速器720和外围装置730。CPU 710可将用于加速器720和外围装置730的命令发送到加速器720。加速器720可根据执行每个命令的对象来处理接收的命令。外围装置730可执行从加速器720发送的命令,并且将指示命令的执行的完成的完成消息发送到加速器720。当所有命令被执行时,加速器720可将指示命令的执行的完成的完成消息发送到CPU 710。
参照图8,装置可以是用户终端800。用户终端800包括CPU 810、加速器820和外围装置830。这样的组件中的每个可执行以上参照图7描述的对应操作。虽然为了便于描述,在图8中智能电话被示出为用户终端800的示例,但是各种计算装置(诸如,个人计算机(PC),平板PC和膝上型计算机)、各种可穿戴装置(诸如,智能手表和智能眼镜)、各种家用电器(诸如,智能扬声器、智能电视(TV)和智能冰箱)、以及智能车辆、智能信息亭、物联网(IoT)装置等可不受限制地被应用。
图9是示出操作加速器的方法的示例的流程图。
在图9的示例中,示出了加速器如何进行操作。
参照图9,在操作910中,加速器从CPU接收用于加速器和加速器的外围装置的命令。在操作920中,加速器根据执行每个命令的对象来处理接收的命令。在操作930中,当命令的执行完成时,加速器将指示命令的执行的完成的完成消息发送到CPU。
为了以上参照图9描述的操作的更详细的描述,可对以上参照图1a至图8描述的内容进行参照。
在此针对图1b和图3至图8描述的加速器、包括加速器的装置以及其他设备、单元、模块、装置和其他组件通过硬件组件来实现。可用于执行在本申请中描述的操作的硬件组件的示例在合适的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑模单元、加法器、减法器、乘法器、除法器、积分器和被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,执行在本申请中描述的操作的硬件组件中的一个或多个通过计算硬件(例如,通过一个或多个处理器或计算机)来实现。可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简单起见,单数术语“处理器”或“计算机”可用于本申请中描述的示例的描述,但是在其他的示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或二者。例如,单个硬件组件或者两个或更多个硬件组件可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,一个或多个其他硬件组件可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。
图1b至图9中示出的执行在本申请中描述的操作的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述地执行指令或软件,以执行在本申请中描述的由所述方法执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。
用于控制处理器或计算机以实现硬件组件并执行如上所述的方法的指令或软件被编写为计算机程序、代码段、指令或它们的任意组合,以单独地或共同地指示或配置处理器或计算机如机器或专用计算机那样进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由处理器或计算机使用解释器执行的高级代码。本领域普通技术的编程人员可基于附图中示出的框图和流程图以及说明书中的相应描述容易地编写指令或软件,附图中示出的框图和流程图以及说明书中的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制处理器或者计算机以实现硬件组件并执行如上所述的方法的指令或软件、以及任意相关联的数据、数据文件和数据结构被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-RLTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态驱动器(SSD)、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任意其他装置,任意其他装置被配置为以非暂时性的方式存储指令或软件以及任意相关联的数据、数据文件和数据结构,并向处理器或者计算机提供指令或软件以及任意相关联的数据、数据文件和数据结构使得处理器或者计算机可执行指令。
虽然本公开包括特定的示例,但是本领域普通技术人员将清楚的是,在不脱离权利要求及它们的等同物的精神和范围的情况下,可在这些示例中进行形式和细节的各种改变。在此描述的示例仅应被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为可适用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合,和/或由其他组件或它们的等同物替换或补充,则可实现合适的结果。因此,公开的范围不是由具体实施方式限定,而是由权利要求及它们的等同物限定,并且在权利要求及它们的等同物的范围内的所有变化应被解释为包括在公开中。
Claims (23)
1.一种操作加速器的方法,包括:
从中央处理器接收用于加速器和加速器的外围装置的多个命令;
根据执行所述多个命令中的每个的对象来处理接收的所述多个命令;和
在所述多个命令的执行完成之后,将指示所述多个命令的执行的完成的完成消息发送到中央处理器。
2.根据权利要求1所述的方法,其中,处理所述多个命令的步骤包括:
在执行所述多个命令之中的目标命令的对象是加速器的情况下,在加速器中执行目标命令;和
在执行目标命令的对象是外围装置的情况下,将目标命令发送到外围装置。
3.根据权利要求2所述的方法,其中,在执行目标命令的对象是外围装置的情况下,在将目标命令从加速器发送到外围装置之后,在没有中央处理器的干预的情况下在外围装置中执行目标命令。
4.根据权利要求2所述的方法,其中,在执行目标命令的对象是外围装置的情况下,在外围装置中执行目标命令之后,将指示目标命令的执行的完成的完成消息从外围装置发送到加速器。
5.根据权利要求1至权利要求4中的任一项所述的方法,其中,处理所述多个命令的步骤包括:
在所述多个命令之中的第一命令的执行完成之后,根据执行第二命令的对应的对象处理第二命令,第二命令是第一命令的随后的命令。
6.根据权利要求1至权利要求4中的任一项所述的方法,其中,加速器与中央处理器一起被包括在装置中,并且加速器被配置为执行在能够在所述装置中被处理的处理之中的基于神经网络的推断。
7.根据权利要求1至权利要求4中的任一项所述的方法,其中,所述多个命令之中的用于加速器的至少一个命令是用于在加速器中执行至少一个基于神经网络的操作的命令。
8.根据权利要求1至权利要求4中的任一项所述的方法,其中,基于相关性和执行顺序中的一个或两个将从中央处理器接收的所述多个命令存储在包括在加速器中的命令队列中。
9.根据权利要求1至权利要求4中的任一项所述的方法,其中,处理所述多个命令的步骤包括:
在执行所述多个命令之中的目标命令的对象是被配置为与另外的装置通信的外围装置的情况下,将加速器的处理结果与目标命令一起发送到外围装置,
其中,目标命令包括与同所述另外的装置的连接相关联的连接信息。
10.根据权利要求1至权利要求4中的任一项所述的方法,其中,处理所述多个命令的步骤包括:
在执行所述多个命令之中的目标命令的对象是存储装置的情况下,将包括指示从存储装置读取数据还是将数据写入存储装置的信息的目标命令发送到存储装置。
11.根据权利要求1至权利要求4中的任一项所述的方法,其中,加速器、中央处理器和外围装置被配置为:在同一装置中通过外围组件互连快速通信来发送或接收数据信号和/或控制信号。
12.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时,使所述处理器执行根据权利要求1所述的方法。
13.一种加速器,包括:
核控制器,被配置为根据执行每个命令的对象,将从中央处理器接收并存储在命令队列中的多个命令之中的将被执行的目标命令发送到加速器控制器或外围装置控制器;
加速器控制器,被配置为在加速器是执行目标命令的对象的情况下从核控制器接收目标命令,并且执行接收的目标命令;和
外围装置控制器,被配置为在外围装置是执行目标命令的对象的情况下从核控制器接收目标命令,并且将接收的目标命令发送到外围装置,
其中,在存储在命令队列中的所述多个命令的执行完成之后,核控制器被配置为将指示所述多个命令的执行的完成的完成消息发送到中央处理器。
14.根据权利要求13所述的加速器,其中,在所述多个命令之中的第一命令的执行完成之后,核控制器被配置为根据执行第二命令的对应的对象将第二命令发送到加速器控制器或外围装置控制器,第二命令是第一命令的随后的命令。
15.根据权利要求13或权利要求14所述的加速器,其中,加速器与中央处理器一起被包括在装置中,并且加速器被配置为执行在能够在所述装置中被处理的处理之中的基于神经网络的推断。
16.根据权利要求13或权利要求14所述的加速器,其中,命令队列被包括在加速器中,并且从中央处理器接收的所述多个命令基于相关性和执行顺序中的一个或两个被存储在命令队列中。
17.根据权利要求13或权利要求14所述的加速器,其中,加速器、中央处理器和外围装置被配置为:在同一装置中通过外围组件互连快速通信来发送或接收数据信号和/或控制信号。
18.一种电子装置,包括:
中央处理器,被配置为将用于加速器和外围装置的多个命令发送到加速器;
加速器,被配置为在所述多个命令之中的目标命令将由加速器执行的情况下执行目标命令,并且在目标命令将由外围装置执行的情况下将目标命令发送到外围装置;以及
外围装置,被配置为在目标命令将由外围装置执行的情况下执行从加速器接收的目标命令,
其中,在所述多个命令的执行完成之后,加速器被配置为将指示所述多个命令的执行的完成的完成消息发送到中央处理器。
19.根据权利要求18所述的电子装置,其中,在目标命令将由外围装置执行的情况下,在目标命令从加速器被发送到外围装置之后,在没有中央处理器的干预的情况下目标命令在外围装置中被执行。
20.一种加速器,包括:
一个或多个处理器,被配置为:
从中央处理器接收将被处理的一个或多个命令;
针对所述一个或多个命令中的每个确定各个命令将由所述一个或多个处理器处理还是将由外围装置处理;
在确定各个命令将由所述一个或多个处理器处理的情况下,处理各个命令;
在确定各个命令将由外围装置处理的情况下,将各个命令发送到外围装置;以及
仅在确认所述一个或多个命令中的所有命令已被处理之后,将完成消息发送到中央处理器。
21.根据权利要求20所述的加速器,其中,所述一个或多个处理器被配置为:针对所述一个或多个命令中的每个,基于各个命令是否需要基于神经网络的推断的执行或用于神经网络学习的梯度的计算,来确定各个命令将由所述一个或多个处理器处理还是将由外围装置处理。
22.根据权利要求20或权利要求21所述的加速器,其中,所述一个或多个处理器被配置为:在确定各个命令将由外围装置处理的情况下,在确定外围装置执行各个命令需要所述一个或多个处理器的处理结果的情况下,将处理结果发送到外围装置。
23.根据权利要求20或权利要求21所述的加速器,其中,所述一个或多个处理器被配置为:在从外围装置接收到指示将由外围装置处理的命令已由外围装置处理的命令完成消息之后,将完成消息发送到中央处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190172348A KR20210080009A (ko) | 2019-12-20 | 2019-12-20 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
KR10-2019-0172348 | 2019-12-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113011553A true CN113011553A (zh) | 2021-06-22 |
Family
ID=73138691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010886046.3A Pending CN113011553A (zh) | 2019-12-20 | 2020-08-28 | 加速器、操作加速器的方法和包括加速器的装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20210191728A1 (zh) |
EP (1) | EP3839732A3 (zh) |
KR (1) | KR20210080009A (zh) |
CN (1) | CN113011553A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210080009A (ko) * | 2019-12-20 | 2021-06-30 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
US20240086106A1 (en) * | 2022-09-09 | 2024-03-14 | Western Digital Technologies, Inc. | Accelerator Queue in Data Storage Device |
KR102640910B1 (ko) * | 2023-08-11 | 2024-02-23 | 리벨리온 주식회사 | 인공지능 연산과 연관된 데이터 복구 방법 및 시스템 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6436327A (en) * | 1987-07-31 | 1989-02-07 | Hitachi Ltd | Optical printer controller |
KR100248048B1 (ko) * | 1997-06-30 | 2000-03-15 | 윤종용 | 보조디스플레이장치를구비한컴퓨터 |
US7071946B2 (en) * | 1997-12-30 | 2006-07-04 | Micron Technology, Inc. | Accelerated graphics port for a multiple memory controller computer system |
US7487264B2 (en) * | 2002-06-11 | 2009-02-03 | Pandya Ashish A | High performance IP processor |
US7430652B2 (en) * | 2003-03-28 | 2008-09-30 | Tarari, Inc. | Devices for performing multiple independent hardware acceleration operations and methods for performing same |
US7114035B2 (en) * | 2003-09-04 | 2006-09-26 | International Business Machines Corporation | Software-controlled cache set management with software-generated class identifiers |
US7500047B1 (en) * | 2004-12-03 | 2009-03-03 | Crossroads Systems, Inc. | System and method for processing commands |
JP5353278B2 (ja) * | 2009-02-06 | 2013-11-27 | 富士通株式会社 | 通信装置 |
US9405550B2 (en) * | 2011-03-31 | 2016-08-02 | International Business Machines Corporation | Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link |
JP5507587B2 (ja) * | 2012-01-11 | 2014-05-28 | ファナック株式会社 | 補助指令の実行機能を有する数値制御装置 |
US8589607B1 (en) * | 2012-08-07 | 2013-11-19 | Lsi Corporation | Methods and structure for hardware management of serial advanced technology attachment (SATA) DMA non-zero offsets in a serial attached SCSI (SAS) expander |
US20140289445A1 (en) * | 2013-03-22 | 2014-09-25 | Antony Savich | Hardware accelerator system and method |
US20170153892A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Instruction And Logic For Programmable Fabric Hierarchy And Cache |
US10503434B2 (en) * | 2017-04-12 | 2019-12-10 | Micron Technology, Inc. | Scalable low-latency storage interface |
US10776145B2 (en) * | 2017-04-21 | 2020-09-15 | Dell Products L.P. | Systems and methods for traffic monitoring in a virtualized software defined storage architecture |
US10719474B2 (en) * | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US20190163364A1 (en) * | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
TW201926147A (zh) * | 2017-12-01 | 2019-07-01 | 阿比特電子科技有限公司 | 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統 |
KR102559581B1 (ko) * | 2018-05-23 | 2023-07-25 | 삼성전자주식회사 | 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US10877766B2 (en) * | 2018-05-24 | 2020-12-29 | Xilinx, Inc. | Embedded scheduling of hardware resources for hardware acceleration |
US11133076B2 (en) * | 2018-09-06 | 2021-09-28 | Pure Storage, Inc. | Efficient relocation of data between storage devices of a storage system |
KR102382186B1 (ko) * | 2018-10-10 | 2022-04-05 | 삼성전자주식회사 | 딥 러닝을 위한 고성능 컴퓨팅 시스템 |
US10713196B1 (en) * | 2018-12-20 | 2020-07-14 | Intel Corporation | Flexible and scalable accelerator architecture |
US11961007B2 (en) * | 2019-02-06 | 2024-04-16 | Qualcomm Incorporated | Split network acceleration architecture |
US20200133909A1 (en) * | 2019-03-04 | 2020-04-30 | Intel Corporation | Writes to multiple memory destinations |
US20190243780A1 (en) * | 2019-04-10 | 2019-08-08 | Vinodh Gopal | Scalable application-customized memory compression |
US10970238B2 (en) * | 2019-04-19 | 2021-04-06 | Intel Corporation | Non-posted write transactions for a computer bus |
US11702086B2 (en) * | 2019-08-21 | 2023-07-18 | Micron Technology, Inc. | Intelligent recording of errant vehicle behaviors |
US20210142177A1 (en) * | 2019-11-13 | 2021-05-13 | Nvidia Corporation | Synthesizing data for training one or more neural networks |
US20210149734A1 (en) * | 2019-11-15 | 2021-05-20 | Nvidia Corporation | Techniques for modifying an executable graph to perform a workload associated with a new task graph |
US20210149719A1 (en) * | 2019-11-15 | 2021-05-20 | Nvidia Corporation | Techniques for modifying executable graphs to perform different workloads |
KR20210080009A (ko) * | 2019-12-20 | 2021-06-30 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스 |
-
2019
- 2019-12-20 KR KR1020190172348A patent/KR20210080009A/ko unknown
-
2020
- 2020-07-07 US US16/922,073 patent/US20210191728A1/en not_active Abandoned
- 2020-08-28 CN CN202010886046.3A patent/CN113011553A/zh active Pending
- 2020-11-05 EP EP20205918.4A patent/EP3839732A3/en active Pending
-
2022
- 2022-04-11 US US17/717,302 patent/US20220229668A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3839732A2 (en) | 2021-06-23 |
US20210191728A1 (en) | 2021-06-24 |
EP3839732A3 (en) | 2021-09-15 |
KR20210080009A (ko) | 2021-06-30 |
US20220229668A1 (en) | 2022-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230334294A1 (en) | Multi-memory on-chip computational network | |
CN110520856B (zh) | 处理不邻近存储器作为邻近存储器以提高神经网络的性能 | |
US10846621B2 (en) | Fast context switching for computational networks | |
US20190180183A1 (en) | On-chip computational network | |
CN113011553A (zh) | 加速器、操作加速器的方法和包括加速器的装置 | |
JP7451614B2 (ja) | オンチップの計算ネットワーク | |
JP5658509B2 (ja) | 自律的メモリアーキテクチャー | |
US10931512B2 (en) | Computer readable media, methods, and computer apparatuses for network service continuity management | |
CN113760531A (zh) | 调度器、操作调度器的方法以及包括调度器的加速器设备 | |
US11023825B2 (en) | Platform as a service cloud server and machine learning data processing method thereof | |
CN114008589A (zh) | 用于在顺序处理器上进行多次执行的动态代码加载 | |
US20210256373A1 (en) | Method and apparatus with accelerator | |
WO2022031446A1 (en) | Optimized sensor fusion in deep learning accelerator with integrated random access memory | |
CN111258950B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
CN110750210B (zh) | 存储系统 | |
EP4174671A1 (en) | Method and apparatus with process scheduling | |
US11093276B2 (en) | System and method for batch accessing | |
CN115994040A (zh) | 计算系统以及进行数据广播和数据归约的方法及存储介质 | |
US20220342835A1 (en) | Method and apparatus for disaggregation of computing resources | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
US20220083838A1 (en) | Method and apparatus with neural network inference optimization implementation | |
CN111258653B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
CN113031853A (zh) | 互连装置、互连装置的操作方法以及人工智能加速器系统 | |
US20220075645A1 (en) | Operation method of host processor and accelerator, and electronic device including the same | |
US11720417B2 (en) | Distributed inferencing using deep learning accelerators with integrated random access memory |
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 |