CN109791510B - 在异构计算中管理数据流 - Google Patents
在异构计算中管理数据流 Download PDFInfo
- Publication number
- CN109791510B CN109791510B CN201780056281.4A CN201780056281A CN109791510B CN 109791510 B CN109791510 B CN 109791510B CN 201780056281 A CN201780056281 A CN 201780056281A CN 109791510 B CN109791510 B CN 109791510B
- Authority
- CN
- China
- Prior art keywords
- processing device
- memory
- heterogeneous processing
- iteration
- heterogeneous
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
- Hardware Redundancy (AREA)
Abstract
实施例包括用于在计算设备上实施数据流管理的计算设备、装置和装置实施的方法。实施例方法可以包括:初始化第一异构处理设备的第一存储器的缓冲分区,以用于由第一异构处理设备执行第一操作的第一迭代的输出,其中,被分配用于由第二异构处理设备执行的第二操作的第一迭代依赖于该输出。实施例方法可以包括:识别用于从缓冲分区传送第一异构处理设备的输出以作为第二异构处理设备的输入的存储器管理操作。实施例方法可以包括:分配第二存储器以用于存储由第三异构处理设备执行的迭代的数据,以最小化用于所分配的第二存储器的存储器管理操作的数量。
Description
背景技术
异构计算利用各种计算元件来加速应用程序。在诸如计算机视觉和机器学习之类的领域中,跨多个阶段进行流水线计算是一种常见做法。从数据流的角度来看,通常会遇到输入/输出(I/O)流水线操作,以将计算结果从一个阶段传输到另一个阶段,例如,操作A的输出用作操作B的输入。在每个阶段,每个操作可以由多个核功能表示,其中每个功能表示在特定计算元件上执行的一系列计算。作为示例,存储单元可以在第一阶段由中央处理单元(CPU)功能修改,并且在第二阶段用作图形处理单元(GPU)功能的输入。现有的异构计算运行时间(runtime)不具有关于各阶段之间的数据流的知识。因此,在存储器设备之间来回复制不必要的数据以供各种计算元件使用。另外,主机和计算元件之间的现有数据同步机制在始终涉及主机存储器的意义上是严格的。
发明内容
各种实施例可以包括用于在计算设备上实施数据流管理的装置和方法。各种实施例可以包括:初始化第一异构处理设备的第一存储器的缓冲分区(buffer partition),以用于由第一异构处理设备执行第一操作的第一迭代的输出,其中,被分配用于由第二异构处理设备执行的第二操作的第一迭代依赖于该输出;识别用于从缓冲分区传送第一异构处理设备的该输出以作为第二异构处理设备的输入的存储器管理操作;以及分配第二存储器以用于存储由第三异构处理设备执行的迭代的数据,以最小化用于所分配的第二存储器的存储器管理操作的数量。
各种实施例可以进一步包括:识别被分配用于由第一异构处理设备执行的第一操作的第一迭代与被分配用于由第二异构处理设备执行的第二操作的第一迭代之间的依赖性;以及映射第一异构处理设备和第二异构处理设备的迭代执行的路径。
各种实施例可以进一步包括:确定被分配用于由第一异构处理设备执行的第一操作的第一迭代与被分配用于由第二异构处理设备执行的第二操作的第一迭代之间的依赖性是否跨越了不同类型的异构处理设备之间的边界。在各种实施例中,初始化缓冲分区可以包括:响应于确定所述依赖性跨越不同类型的异构处理设备之间的边界而初始化缓冲分区;以及响应于确定所述依赖性没有跨越不同类型的异构处理设备之间的边界,省去用于从缓冲分区传送第一异构处理设备的所述输出以作为第二异构处理设备的输入的存储器管理操作。
各种实施例可以进一步包括:识别被分配以执行第一操作的第一迭代的第一异构处理设备,以及被分配以依赖于第一操作的第一迭代的执行而执行第二操作的第一迭代的第二异构处理设备;以及针对被分配用于由第二异构处理设备执行的第二操作的第一迭代的依赖性,确定是否在第一存储器中初始化缓冲分区。在各种实施例中,识别用于传送所述输出的存储器管理操作可以包括:响应于确定在第一存储器中初始化缓冲分区,识别用于传送所述输出的存储器管理操作。
各种实施例还可以包括:通过绕过主机存储器由第一异构处理设备直接访问缓冲分区,来从第一存储器的缓冲分区中取回数据。
各种实施例还可以包括:将第一存储器的缓冲分区的第一存储器地址直接映射到第二异构处理设备的第三存储器的第二存储器地址,而不同步到二者间的主机存储器的存储器地址。
在各种实施例中,识别用于传送输出的存储器管理操作可以包括:应用预定义规则、算法、历史数据、统计计算或启发法中的一个。
在各种实施例中,所述存储器管理操作可以包括复制存储器管理操作、映射存储器管理操作、解映射存储器管理操作或无存储器管理操作中的一个。
进一步的实施例包括一种计算设备,其具有多个异构处理设备、多个存储器、互连,并且所述异构处理设备被配置为执行上面概述的方法的操作。其他方面包括具有用于执行上面概述的方法的功能的单元的计算设备。进一步的方面包括一种非暂时性处理器可读储存介质,其上存储有处理器可执行指令,其被配置以使计算设备的处理设备执行上面概述的方法的操作。
附图说明
并入本文并构成本说明书的一部分的附图示出了各种实施例的示例性实施例,并且与上面给出的一般描述和下面给出的详细描述一起用于解释权利要求的特征。
图1是示出适合于实施实施例的计算设备的组件框图。
图2是示出适合于实施实施例的示例性多核处理器的组件框图。
图3是示出适合于实施实施例的示例性异构计算设备的方框图。
图4是示出用于执行用于实施实施例的已声明操作的数据依赖性的数据流的示例的图示。
图5是示出用于实施实施例的在没有管理数据流的情况下的数据流的示例的操作执行流程图。
图6是示出用于实施实施例的管理数据流的示例的操作执行流程图。
图7是示出用于实施实施例的管理数据流的示例的操作执行流程图。
图8A和8B是示出用于实施实施例的示例性存储器管理操作的存储器管理操作执行流程图。
图9是示出根据实施例的用于实施缓冲分区初始化的方法的过程流程图。
图10是示出根据实施例的用于实施存储器分配的方法的过程流程图。
图11是示出适用于各种实施例的示例性移动计算设备的组件框图。
图12是示出适用于各种实施例的示例性移动计算设备的组件框图。
图13是示出适用于各种实施例的示例***器的组件框图。
具体实施方式
将参考附图详细描述各种实施例。只要有可能,在整个附图中将使用相同的附图标记来表示相同或相似的部分。对特定示例和实施方式的参考是出于说明性目的,并且不旨在限制权利要求的范围。
各种实施例可以包括方法、实施这样的方法的***和设备,用于通过在为跨异步处理设备执行的操作分配存储器时考虑程序的多个已声明操作(declared operations),来管理异构计算设备中的数据流。各种实施例的装置和方法可以包括:在异构处理设备之间映射用于已声明操作的数据流,在计算开始时确定数据放置(data placement),为数据分配存储器以减少对存储器管理操作的需要,包括数据同步操作,以及为需要被同步以便在异构处理设备之间使用的数据创建缓冲分区。
术语“计算设备”和“移动计算设备”在本文中可互换使用,以指代以下任何一项或全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型电脑、平板电脑、可转换膝上型电脑/平板电脑(二合一电脑)、智能本、超极本、上网本、掌上电脑、无线电子邮件接收器、支持多媒体互联网的蜂窝电话、移动游戏机、无线游戏控制器以及包含存储器和可编程处理器的类似个人电子设备。术语“计算设备”还可以指固定计算设备,包括个人计算机、台式计算机、一体式计算机、工作站、超级计算机、大型计算机、嵌入式计算机、服务器、家庭影院计算机和游戏机。
异构计算使用流处理,利用多种类型的异构处理设备(例如,中央处理单元(CPU)和硬件加速器,包括图形处理单元(GPU)、数字信号处理器(DSP)等)来执行计算。计算可以是由多个设备特定内核实施的常见操作。多个异构处理设备可以被配置为对数据集执行计算。异构处理设备执行所述计算的一个阶段的输出可以作为输入传递给相同或不同类型的异构处理设备。可以将所述数据集和输出划分为在所述计算的每个阶段处的数据分区,并且分派到异构处理设备的专用存储器。数据集的分区可以是预编程的,在阶段之间的数据依赖性可以是已知的,并且对作为迭代输入馈送的迭代输出的运行时跟踪可以使用到缓冲器的身份映射(例如,迭代i写入缓冲器条目i)和连续但不相连的缓冲器位置(例如,第一操作的输出可以写入连续的缓冲器位置,第二操作可以写入与第一操作写入的连续缓冲器位置不相连的连续缓冲器位置)来实现。
在运行时,异构计算设备可以生成用于执行已声明操作的数据依赖性的数据流(例如,图形)。依据该数据流,计算设备可以基于在相同和/或不同类型的异构处理设备之间的数据依赖性,确定用于在任何阶段处的数据分区的存储器分配,以减少传递数据所必需的存储器管理操作的数量(包括数据同步操作)。对该数据流的生成可以在执行之前或执行期间的任何时间实施,并且可以针对各个操作和/或针对多个操作来实施。
依据该数据流,在运行时,可以识别可能需要存储器管理操作(包括数据同步操作)以便异构处理设备访问来自先前操作的数据输出的数据依赖性。在运行时,可以比较每个阶段处的数据分区。异构计算设备可以为将要由一不同类型的异构处理设备访问的每个数据分区,根据生成用于该数据分区的输出数据的异构处理设备的类型创建缓冲分区。缓冲分区的创建可以是基于异构处理设备的各种组合的,当异构处理设备不能直接访问存储数据输出的存储器时,可以为所述组合实现数据同步操作。当数据同步操作仅对数据输出的部分而言是必需的时,为了避免对整个数据输出执行数据同步操作,异构计算设备可以使用缓冲分区来存储需要数据同步操作的输出数据的部分。可以对存储在缓冲分区中的输出数据的部分而不是对整个输出数据执行数据同步操作。
可以针对每个缓冲分区实施缓冲分区算法,以确定对于存储在缓冲分区中的输出数据要实施什么(如果有的话)数据同步操作。算法的结果可以取决于在写入缓冲分区之前和从缓冲分区读取之后执行操作的异构处理设备的类型。基于异构处理设备的类型,可以选择适当的数据同步操作来访问缓冲分区。
为了减少包括数据同步操作的存储器管理操作,在运行时,可以分配可由多个不同类型的异构处理设备访问的数据分区的存储器,使得异构处理设备访问数据不需要存储器管理操作。例如,通常GPU可以使用其他异构处理设备不可访问的专用存储器,并且GPU输出的数据可能必须与CPU的主机存储器同步,以便异构处理设备使用该数据。为了由GPU使用输出数据,异构计算设备可以分配GPU可访问的存储器的一部分以存储GPU的输出以供GPU稍后访问。因此,当在GPU上执行的操作依赖于由GPU执行的操作输出的数据时,GPU可以访问存储在专用GPU存储器的所分配部分上的数据,并且不需要针对CPU主机存储器进行数据同步操作以便GPU访问输出数据。为了由DSP使用输出数据,异构计算设备可以分配GPU可访问的存储器的一部分来存储GPU的输出,以及分配DSP可访问的存储器的一部分,其可以被直接映射以用于DSP访问输出数据。因此,当在DSP上执行的操作依赖于由GPU执行的操作输出的数据时,DSP可以访问存储在从GPU存储器映射的DSP存储器的所分配部分上的数据,并且不需要针对CPU主机存储器进行数据同步操作并复制到DSP存储器以便DSP访问输出数据。
存储器分配算法可以基于处于数据流的开始阶段处并且基于了解在数据流的每个阶段处的异构处理设备之间的转换,来为数据分区分配存储器。如本文所述,可以在任何点生成数据流,因此数据流的开始不必与开始操作一致,并且可以在操作的整个执行期间多次生成。存储器分配算法可以分析输入以确定用于异构处理设备的存储器分配,这可以减少当与生成输出数据的异构处理设备不同的异构处理设备访问该输出数据时所需的数据同步操作的数量。
图1示出了包括适用于各种实施例的计算设备10的***。计算设备10可以包括片上***(SoC)12,其具有处理器14、存储器16、通信接口18和储存存储器接口20。计算设备10还可以包括通信组件22,诸如有线或无线调制解调器,储存存储器24和用于建立无线通信链路的天线26。处理器14可以包括各种处理设备中的任何一种,例如多个处理器内核。
术语“片上***”(SoC)在本文中用于指代互连的电子电路的集合,其通常但非排他地包括处理设备、存储器和通信接口。处理设备可以包括各种不同类型的处理器14和处理器内核,例如通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器和多核处理器。处理设备还可以体现其他硬件和硬件组合,例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、其他可编程逻辑器件、分立门逻辑、晶体管逻辑、性能监视硬件、看门狗硬件和时间参考。可以配置集成电路,使得集成电路的组件驻留在单片半导体材料上,例如硅。
SoC 12可以包括一个或多个处理器14。计算设备10可以包括多于一个SoC 12,从而增加处理器14和处理器内核的数量。计算设备10还可以包括不与SoC 12相关联的处理器14。各个处理器14可以是多核处理器,如下面参考图2所述。处理器14各自可以被配置用于特定目的,所述特定目的可以与计算设备10的其他处理器14相同或不同。相同或不同配置的处理器14和处理器内核中的一个或多个可以被编组在一起。一组处理器14或处理器内核可以被称为多处理器集群。
SoC 12的存储器16可以是易失性或非易失性存储器,其被配置用于存储数据和处理器可执行代码以供处理器14访问。计算设备10和/或SoC 12可以包括配置用于各种目的的一个或多个存储器16。一个或多个存储器16可以包括易失性存储器,例如随机存取存储器(RAM)或主存储器,或高速缓冲存储器。这些存储器16可以被配置为临时保持从数据传感器或子***接收的有限量的数据,从非易失性存储器请求的、从非易失性存储器加载到存储器16预期将来基于各种因素访问的数据和/或处理器可执行代码指令,和/或由处理器14产生并临时存储以供将来快速访问而不存储在非易失性存储器中的中间处理数据和/或处理器可执行代码指令。
存储器16可以被配置为至少临时地存储数据和处理器可执行代码,该数据和处理器可执行代码从另一个存储器设备(例如另一个存储器16或储存存储器24)加载到存储器16,以便由一个或多个处理器14访问。加载到存储器16的数据或处理器可执行代码可以是响应于处理器14执行功能而被加载的。响应于执行功能而将数据或处理器可执行代码加载到存储器16可以源自于由于所请求的数据或处理器可执行代码没有位于存储器16中而不成功或“未命中”的对存储器16的存储器访问请求。响应于未命中,可以做出对另一个存储器16或储存存储器24的存储器访问请求以将所请求的数据或处理器可执行代码从另一个存储器16或储存存储器24加载到存储器设备16。响应于执行功能而将数据或处理器可执行代码加载到存储器16可以源自于对另一个存储器16或储存存储器24的存储器访问请求,并且可以将数据或处理器可执行代码加载到存储器16以供稍后访问。
储存存储器接口20和储存存储器24可以一致地工作以允许计算设备10将数据和处理器可执行代码存储在非易失性储存介质上。储存存储器24可以被配置为非常类似于存储器16的实施例,其中储存存储器24可以存储数据或处理器可执行代码以供一个或多个处理器14访问。非易失性的储存存储器24可以在关闭计算设备10的电源之后保留信息。当重新接通电源并且计算设备10重新启动时,存储在储存存储器24上的信息可以用于计算设备10。储存存储器接口20可以控制对储存存储器24的访问并允许处理器14从储存存储器24读取数据并将数据写入储存存储器24。
计算设备10的一些或所有组件可以不同地和/或组合地布置,同时仍然服务于各种实施例的功能。计算设备10可以不限于每个组件中的一个,并且每个组件的多个实例可以包括在计算设备10的各种配置中。
图2示出了适用于实施实施例的多核处理器。多核处理器14可以包括多种处理器类型,包括例如CPU和各种硬件加速器,包括例如GPU和/或DSP。多核处理器14还可以包括定制硬件加速器,其可以包括定制处理硬件和/或被配置为实施专用功能集的通用硬件。
多核处理器可以具有多个同构或异构处理器内核200、201、202、203。同构多核处理器可以包括多个同构处理器内核。处理器内核200、201、202、203可以是同构的,因为多核处理器14的处理器内核200、201、202、203可以被配置用于相同的目的并且具有相同或相似的性能特性。例如,多核处理器14可以是通用处理器,并且处理器内核200、201、202、203可以是同构通用处理器内核。多核处理器14可以是GPU或DSP,并且处理器内核200、201、202、203可以分别是同构图形处理器内核或数字信号处理器内核。多核处理器14可以是具有同构处理器内核200、201、202、203的定制硬件加速器。
异构多核处理器可以包括多个异构处理器内核。处理器内核200、201、202、203可以是异构的,因为多核处理器14的处理器内核200、201、202、203可以被配置用于不同目的和/或具有不同的性能特性。这种异构处理器内核的异构性可以包括不同的指令集架构、流水线、操作频率等。这种异构处理器内核的示例可以包括所谓的“big.LITTLE”架构,其中较慢的低功率处理器内核可以与更强大和耗电的处理器内核相耦合。在类似的实施例中,SoC(例如,图1的SoC 12)可以包括任何数量的同构或异构多核处理器14。在各种实施例中,并非所有处理器内核200、201、202、203都需要是异构处理器内核,因为异构多核处理器可以包括包含至少一个异构处理器内核在内的处理器内核200、201、202、203的任何组合。
可以为多核处理器14的处理器内核200、201、202、203中的每一个指定专用高速缓存210、212、214、216,其可以专用于由指定的处理器内核200、201、202、203进行读和/或写访问。专用高速缓存210、212、214、216可以存储数据和/或指令,并使存储的数据和/或指令可用于专用高速缓存210、212、214、216所专用于的处理器内核200、201、202、203,以供处理器内核200、201、202、203执行中使用。专用高速缓存210、212、214、216可以包括如本文中参考图1的存储器16所述的易失性存储器。
多核处理器14还可以包括共享高速缓存230,其可以被配置为由处理器内核200、201、202、203进行读和/或写访问。专用高速缓存210、212、214、216可以存储数据和/或指令,并使存储的数据和/或指令可用于处理器内核200、201、202、203,以供处理器内核200、201、202、203执行中使用。共享高速缓存230还可以起到用于输入到多核处理器14和/或从多核处理器14输出的数据和/或指令的缓冲器的作用。共享高速缓存230可以包括如本文中参考图1的存储器16所述的易失性存储器。
在图2中所示的示例中,多核处理器14包括四个处理器内核200、201、202、203(即,处理器内核0、处理器内核1、处理器内核2和处理器内核3)。在该示例中,为每个处理器内核200、201、202、203指定相应的专用高速缓存210、212、214、216(即,处理器内核0和专用高速缓存0、处理器内核1和专用高速缓存1、处理器内核2和专用高速缓存2及处理器内核3和专用高速缓存3)。为了便于解释,本文的示例可以参考图2中所示的四个处理器内核200、201、202、203和四个专用高速缓存210、212、214、216。然而,图2中所示和本文所述的四个处理器内核200、201、202、203和四个专用高速缓存210、212、214、216仅作为示例提供,并且绝不意味着将各种实施例限制为具有四个指定的专用高速缓存的四核处理器***。计算设备10、SoC 12或多核处理器14可以单独地或组合地包括比本文示出和描述的四个处理器内核200、201、202、203和专用高速缓存210、212、214、216更少或更多。为了便于参考,术语“硬件加速器”、“定制硬件加速器”、“多核处理器”、“处理器”和“处理器内核”在本文中可互换使用。
图3示出了异构计算设备的示例性实施例。异构计算设备300(例如,图1中的计算设备10)可以包括至少两个但多达任何整数“N”个处理设备(例如,图1和2中的处理器14);例如,处理设备(例如,CPU)302、硬件加速器(例如,GPU)306a、硬件加速器(例如,DSP)306b和/或定制硬件加速器306c。每个处理设备302、306a、306b、306c可以与处理设备高速缓存(例如,图2中的专用高速缓存210、212、214、216和/或共享高速缓存230)相关联。例如,处理设备302可以与处理设备高速缓存(例如,CPU高速缓存)308相关联,硬件加速器306a可以与硬件加速器高速缓存(例如,GPU高速缓存)310a相关联,硬件加速器306b可以与硬件加速器高速缓存(例如,DSP高速缓存)310b相关联,和/或定制硬件加速器306c可以与定制硬件加速器高速缓存310c相关联。处理设备302还可以与主机存储器304(例如,图1中的存储器16、24)相关联。每个硬件加速器306a,306b,306c还可以与处理设备专用/设备特定/专用存储器(例如,图1中的存储器16、24)相关联。例如,硬件加速器306a可以包括硬件专用存储器(例如,GPU专用存储器)314a,硬件加速器306b可以包括硬件专用存储器(例如,DSP专用存储器)314b,和/或定制硬件加速器306c可以包括定制硬件加速器专用存储器314c。如本文所讨论的,处理设备302、306a、306b、306c中的每一个可以相对于彼此和/或在它们各自的处理器内核(例如,图2中的处理器内核200、201、202、203)之间是同构的和/或异构的。
互连312可以通信地连接到处理设备302、306a、306b、306c,以及任何数量的主存储器或随机存取存储器组件(例如主机存储器304),任何数量的硬件加速器专用存储器314a、314b、314c,以及任何数量的处理设备高速缓存308和硬件加速器高速缓存310a、310b、310c。在各种实施例中,处理设备302、306a、306b、306c的不同组合可以访问一个或多个主机存储器304、硬件加速器专用存储器314a、314b、314c、主机存储器304的分区和/或硬件加速器专用存储器314a、314b、314c的分区。互连312可以被配置为启用和控制各种所连接组件之间的数据传输。互连312可以被配置为在处理设备302、306a、306b、306c之间传送数据,使得处理设备302、306a、306b、306c可以共享工作负载的处理并共享和/或输出工作负载处理的结果。
图3示出了异构计算设备300的非限制性示例。本文示出和描述的示例,特别是参考图3的并与图3相关的示例,是非限制性的。异构计算设备可以包括任何数量和/或组合的处理设备、处理器内核、主机存储器、硬件加速器专用存储器、处理设备高速缓存(例如,专用高速缓存和/或共享高速缓存)、互连以及这些组件之间的连接。在各种实施例中,异构计算设备的组件的任何组合可以分布在多个SoC(例如,图1中的SoC 12)上,所述多个SoC可以经由互连312或互连312的扩展通信地连接。
本文参考图4-7描述的各种实施例是使用包括CPU(例如,图1和2中的处理器14,以及图3中的处理设备302)、GPU(例如,图1和2中的处理器14,以及图3中的硬件加速器306a)和DSP(例如,图1和2中的处理器14,以及图3中的硬件加速器306b)的示例性硬件组件来描述的。硬件组件的这种组合决不限于可以作为用于实施本文描述的各种实施例的硬件组件而被包括的处理器和/或硬件加速器的数量或类型。可以使用不同类型的两个或更多个处理器和/或硬件加速器的任何组合来实施各种实施例。
图4示出了用于执行已声明操作402a、402b、402c的数据依赖性的数据流400的示例性实施例。为了执行已声明操作402a、402b、402c,可以将已声明操作402a、402b、402c的迭代分配给各种处理设备(例如,CPU、GPU和DSP)。例如,可以为CPU分配第一已声明操作402a的第一组迭代(CPU迭代)404a,可以为GPU分配第一已声明操作402a的第一组迭代(GPU迭代)406a,以及可以为DSP分配第一已声明操作402a的第一组迭代(DSP迭代)408a。CPU、GPU和DSP中的每一个可以彼此独立地执行其被分配的迭代404a、406a、408a。取决于迭代次数404a、406a、408a,第一操作402a的复杂性,以及CPU、GPU和DSP的资源的能力和/或可用性,执行迭代404a、406a、408a的时间可以变化。
对用于第二已声明操作402b的所分配的迭代404b、404c、406b、408b的执行,或者对用于第三已声明操作402c的所分配的迭代404d、404e、408c、408d的执行,可以依赖于先前的已声明操作402a、402b的所分配的迭代404a-404c、406a、406b、408a、408b的执行的完成。图4示出了第二已声明操作402b的迭代404b、404c、406b、408b的示例依赖性,其依赖于第一已声明操作402a的迭代404a、406a、408a的完成。图4中的示例示出了依赖性,包括:用于第二已声明操作402b的第二组GPU迭代406b和第二组CPU迭代404b依赖于第一组GPU迭代406a的完成;用于第二已声明操作402b的第二组CPU迭代404b和第三组CPU迭代404c依赖于第一组CPU迭代404a的完成。类似地,用于第二已声明操作402b的第三组CPU迭代404c和第二组DSP迭代408b依赖于第一组DSP迭代408a的完成。
类似地,图4中的示例示出了第三已声明操作402c的迭代404d、404e、408c、408d的示例依赖性,其依赖于第二已声明操作402b的迭代404b、404c、406b、408b的完成。图4中的示例示出了依赖性,包括:用于第三已声明操作402c的第四组CPU迭代404d依赖于第二组GPU迭代406b的完成;用于第三已声明操作402c的第五组CPU迭代404e依赖于第二组CPU迭代404b的完成;用于第三已声明操作402c的第三组DSP迭代408c依赖于第三组CPU迭代404c和第二组DSP迭代408b的完成;用于第三已声明操作402c的第四组DSP迭代408d依赖于第二组DSP迭代408b的完成。
如图4中的示例所示,各种先前的已声明操作402a-402c的迭代404a-404e、406a、406b、408a-408d可以依赖于至少一个先前迭代组404a-404e、406a、406b、408a-408d的执行。任何先前迭代组404a-404e、406a、406b、408a-408d的执行可以是由与被分配用于执行迭代组404a-404e、406a、406b、408a-408d的处理设备相同和/或不同类型的处理设备的处理设备来实施的。即,将要由处理设备执行的迭代组404a-404e、406a、406b、408a-408d可以依赖于由同构和/或异构处理设备执行的迭代404a-404e、406a、406b、408a-408d的执行。
处理设备(包括存储器/高速缓存监视器/控制器(未示出))可以通过识别用于执行针对已声明操作402a-402c而分配给每个处理设备的迭代404a-404e、406a、406b、408a-408d的依赖性,来映射用于已声明操作402a-402c的数据流400。如本文进一步描述的,异构处理设备之间的依赖性可以被称为跨越处理设备边界(crossing processing deviceboundaries)。
图5示出了在没有管理数据流的情况下的数据流的示例性实施例。通常,用于实施已声明操作402a-402c的迭代502a-502c、504a-504c、506a-506c的数据可以存储在存储器500中(例如,图1中的存储器16、24,图3中的主机存储器304),存储器500可由被分配用于执行迭代502a-502c、504a-504c、506a-506c的异构处理设备访问。存储器500可以是异构处理设备可直接或间接访问的共享存储器,并且可以包括被指定用于由至少一个处理设备访问的分区。每个处理设备可以从存储器读取并写入存储器500,或者可以将来自存储器500的数据复制到处理设备具有读写访问权限的处理设备的专用存储器(例如,图2中的专用高速缓存210、212、214、216和共享高速缓存230,图3中的处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c、硬件加速器专用存储器314a、314b、314c)。在各种实施例中,第一处理设备可以访问存储器500以取回/读取用于执行其被分配的迭代502a-502c的数据,或访问其专用存储器以取回/读取从存储器500复制的用于执行其被分配的迭代504a-504c、506a-506c的数据。第一处理设备还可以访问存储器500以存储/写入由于执行其被分配的迭代502a-502c所产生的数据,或访问其专用存储器以存储/写入由于执行其被分配的迭代502a-502c、504a-504c、506a-506c所产生的数据。
第二处理设备也可以访问存储器500以取回/读取用于执行其被分配的迭代502a-502c的数据,或者访问其专用存储器以取回/读取从存储器500复制的用于执行其被分配的迭代504a-504c、506a-506c的数据。在各种实施例中,从存储器500取回或复制到专用存储器并从专用存储器取回的数据可以包括由第一处理设备存储和/或复制到存储器500的数据。由第二处理设备从存储器500取回的或复制到专用存储器并从专用存储器取回的数据以及由第一处理设备存储和/或复制到存储器500的数据可以包括由于执行第一处理设备的所分配的迭代502a-502c、504a-504c、506a-506c所产生的数据。在各种实施例中,第二处理设备可以直接访问由第一处理设备存储在存储器500上的数据。这样,第二处理设备可以不需要存储器管理操作(“N”)来访问存储器500中的用于执行其被分配的迭代502a-502c、504a-504c、506a-506c的数据。在各种实施例中,第二处理设备可以经由第二处理设备的专用存储器间接地访问由第一处理设备存储在存储器500上的数据。这样,第二处理设备可能需要存储器管理操作来访问存储器500中的用于执行其被分配的迭代502a-502c、504a-504c、506a-506c的数据。存储器管理操作可以用于通过将第二处理设备可访问的存储器500和/或专用存储器中的位置映射(“M”)和解映射(“U”)到具有第二处理设备通常不可访问的数据的存储器500的位置,来使存储在存储器500中的位置处的数据可用于第二处理设备。存储器管理操作可用于将存储在第二处理设备不可访问的存储器500中的位置处的数据复制(“C”)到第二处理设备的专用存储器。
图5中的示例示出了各种实施例,其中,第一、第二或第三处理设备可以需要或可以不需要不同的存储器管理操作来访问用于执行其被分配的迭代502a-502c、504a-504c、506a-506c的数据。例如,CPU和DSP可以具有对存储器500的共享部分的直接访问权限,并且CPU和/或DSP可能不需要存储器管理操作来访问由CPU和/或DSP存储在存储器500中的数据。因此,CPU和/或DSP可以不需要存储器管理操作来取回或存储用于执行CPU迭代502a-502c的和/或由于执行CPU迭代502a-502c所产生的数据。类似地,CPU和/或DSP可以不需要存储器管理操作来取回或存储用于执行DSP迭代502a和502b的和/或由于执行DSP迭代502a和502b所产生的数据。在该示例中,CPU和DSP可能不具有对与GPU共享的存储器500的部分和/或GPU专用存储器的直接访问权限。因此,为了CPU、DSP和/或GPU能够访问由GPU存储的数据,并且GPU能够访问由CPU和/或DSP存储的数据,可能需要存储器管理操作来存储和/或取回该数据。例如,为了将作为执行GPU迭代504a、504b的结果的数据存储到存储器,可以将得到的数据映射到存储器500的可访问部分。为了取回由于执行GPU迭代504a、504b和/或CPU迭代502b所产生的数据,可以在GPU执行GPU迭代504b、504c之前解映射该数据。为了DSP取回由于执行GPU迭代504b所产生的数据,可以将数据复制到DSP专用存储器用于执行DSP迭代506c。
图6示出了管理数据流的示例性实施例。通过对已声明操作402a-402c实施缓冲分区和存储器分配,可以减少存储器管理操作的数量。如本文所述,可以基于用于已声明操作402a-402c的迭代502a-502c、504a-504c、506a-506c之间的依赖性,来映射已声明操作402a-402c的数据流。通过分析数据流(例如,图4中的数据流400),可以识别处理设备之间的边界跨越(boundary crossings)。当由第二处理设备执行的已声明操作的迭代依赖于由第一处理设备执行的先前的已声明操作的迭代的执行时,以及当第一和第二处理设备是异构的时,可以发生边界跨越。为了帮助减少存储器管理操作的数量,可以在第一处理设备的存储器600、602a、602b(例如,图2中的专用高速缓存210、212、214、216和共享高速缓存230,图3中的主机存储器304、处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c和硬件加速器专用存储器314a、314b、314c)中初始化缓冲分区604a-604e。缓冲分区604a-604e可以被配置为存储由于执行迭代502a、502b、504b、506a、506b的部分所产生的数据,并使得数据可由第二处理设备访问。在各种实施例中,不是直接地或通过复制操作将数据取回和/或存储到图5中的存储器500中,而是对于迭代502a-502c、504a-504c、506a-506c的执行,可以将数据存储到处理设备的存储器中。在各种实施例中,可以使用诸如安卓离子存储器管理之类的常用存储器管理技术来实施用于处理设备的存储器的存储器管理。
对数据流的分析还可以识别每个所识别的依赖性所需的存储器管理操作,包括跨越处理设备边界的依赖性所需的存储器管理操作。使用存储器管理操作的信息,可以分配可由至少一个相应处理设备访问的存储器600、602a、602b来存储用于执行被分配给每个处理设备的迭代502a-502c、504a-504c、506a-506c的数据。在各种实施例中,处理设备的存储器之间的存储器管理操作以及存储器分配可以由预定义的规则、算法、历史数据、统计计算和/或启发法确定。
实施数据流管理,可以在存储器600、602a、602b中为每个处理设备存储用于执行每次迭代的数据,其可由至少一个相应处理设备访问,并且可以在缓冲分区604a-604e中存储用于执行具有跨越处理设备边界的依赖性的迭代502b、502c、504b、504c、506c的数据,其与由于迭代执行所产生的数据的其余部分分开存储。如在图5中的示例中那样,在图6中的示例中,CPU和/或DSP可以不需要存储器管理操作来取回或存储用于执行CPU迭代502a-502c的和/或由于执行CPU迭代502a-502c所产生的数据。类似地,CPU和/或DSP可以不需要存储器管理操作来取回或存储用于执行DSP迭代502a和502b的和/或由于执行DSP迭代502a和502b所产生的数据。利用数据流管理,针对由GPU存储或将要由GPU取回的数据的部分,GPU可以不再需要存储器管理操作来取回或存储用于执行GPU迭代504a、504b的和/或由于执行GPU迭代504a、504b所产生的数据。利用数据流管理,对于某些处理设备边界跨越依赖性可能需要存储器管理操作。类似于图5中所示的示例,在图6中所示的示例中,CPU和DSP可以能够直接访问相同的存储器,并且针对CPU和DSP之间的处理设备边界跨越,可以不需要存储器管理操作来将数据从缓冲分区604b、604e取回和/或存储到缓冲分区604b、604e。在该示例中,针对CPU和/或DSP与GPU之间的处理设备边界跨越,仍然可能需要存储器管理操作来将数据从缓冲分区604a、604c、604d取回和/或存储到缓冲分区604a、604c、604d。
图7示出了管理数据流的示例性实施例。图7中的示例示出了数据流管理可以在已声明过程402a-402d的执行之前或期间的任何点处实施。没有必要对所有已声明过程402a-402d实施数据流管理。在图7所示的示例中,没有对已声明过程402d(包括CPU迭代502d、GPU迭代504d和DSP迭代506d)实施数据流管理。因此,已声明过程402d以类似于图5中的示例的描述的方式实施。在执行已声明过程402a-402d之后,以类似于图6中所示的示例的描述的方式,在执行已声明过程402a-402c之前实施数据流管理。可以针对任何两个或更多个已声明过程实施数据流管理。
图8A和8B是示出用于实施实施例的示例性存储器管理操作的存储器管理操作执行流程图。图8A中所示的存储器管理操作需要使用主机存储器(例如,图5中的存储器500)对处理设备的存储器(例如,图2中的专用高速缓存210、212、214、216和共享高速缓存230,图3中的处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c)之间的数据进行桥接(bridging)。对于无存储器管理操作的情况,可以将来自第一处理设备存储器的第一存储器地址800的数据写入806到主机存储器的存储器地址802,并从主机存储器的存储器地址802取回808,以写入到第二处理设备存储器的第二存储器地址804。对于第二处理设备对第一处理设备存储器的存储器访问,可能需要映射和解映射存储器管理操作。为了访问第一处理设备存储器,可以将第一存储器地址800映射810到主机存储器的存储器地址802。第二处理设备可以具有对主机存储器的存储器地址802的访问权限,并且可以从被映射到第一存储器地址800的存储器地址802请求数据,并且借助于该映射从第一存储器地址800取回数据。然后,第一存储器地址800可以从存储器地址802解映射812。对于第二处理设备对第一处理设备存储器的存储器访问,可能需要复制存储器管理操作。为了从第一处理设备存储器进行复制,可以将第一存储器地址800的数据复制814到主机存储器的存储器地址802,然后复制816到第二存储器地址804。
在各种实施例中,使用数据流管理可以消除使用主机存储器对在处理设备的存储器之间的数据进行桥接的需要。对于无存储器管理操作的情况,从第一处理设备存储器的第一存储器地址800的数据取回可以绕过818主机存储器,并且可以由相同的第一处理设备直接访问。对于映射存储器管理操作,第一处理设备存储器的第一存储器地址800可以直接映射820到第二处理设备存储器的第二存储器地址804,而不同步到与二者间的主机存储器的存储器地址802。在各种实施例中,第一存储器地址800可以是第一处理设备存储器中的缓冲分区的地址。
图9示出了根据实施例的用于实施缓冲分区初始化的方法900。方法900可以在计算设备中以处理器(例如,图1和2中的处理器14和图3中的处理设备302)中执行的软件、通用硬件、专用硬件或者软件配置的处理器和专用硬件的组合来实施,例如在包括其他单独组件(例如,图1中的存储器16、24、图2中的专用高速缓存210、212、214、216和共享高速缓存230、图3中的处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c和主机存储器304、以及各种存储器/高速缓存控制器(未示出))的存储器管理***内执行软件的处理器。为了包含在在各种实施例中体现的可替换配置,实施方法900的硬件在本文中称为“处理设备”。
在框902中,处理设备可以识别至少两个已声明操作(例如,第一操作和第二操作)。在框904中,处理设备可以识别针对已声明过程的迭代执行的、异构处理设备之间的依赖性。例如,处理设备可以识别被分配用于由第一异构处理设备执行的第一操作的第一迭代与被分配用于由第二异构处理设备执行的第二操作的第一迭代之间的依赖性。
在框906中,处理设备可以针对每个已声明操作映射异构处理设备(例如,第一异构处理设备和第二异构处理设备)进行迭代执行的路径。处理设备可以分析被分配给各种异构处理设备以供执行的已声明过程的迭代的依赖性。该依赖性可用于创建迭代的执行顺序,其可被布置到用于指示该执行顺序的各种表示性数据结构中。
在确定框908中,处理设备可以确定迭代的依赖性是否跨越不同异构处理设备之间的边界。处理设备可以分析所映射的数据流,以确定第二异构处理设备对第二操作的第一迭代的执行何时可以依赖于第一异构处理设备对第一操作的第一迭代的执行。处理设备可以针对第一和第二异构处理设备中的每一个识别处理设备的类型,并且比较每个处理设备的类型以确定其类型是否不同。
在框910中,响应于确定迭代的依赖性跨越不同异构处理设备之间的边界(即,确定框908=“是”),处理设备可以初始化缓冲分区以用于由第一异构处理设备执行的第一操作的迭代的输出,其中,由第二异构处理设备执行的第二操作的迭代依赖于该输出。例如,可以初始化第一异构处理设备的第一存储器的缓冲分区,以用于第一异构处理设备执行的第一操作的第一迭代的输出,其中,被分配用于由第二异构处理设备执行的第二操作的第一迭代依赖于该输出。可以在生成第一操作的迭代的输出(第二操作的迭代的执行依赖于该输出)的处理设备的存储器(例如,图2中的专用高速缓存210、212、214、216和共享高速缓存230、图3中的处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c)上初始化缓冲分区。
响应于确定迭代的依赖性未跨越不同异构处理设备之间的边界(即,确定框908=“否”),和/或在框910中初始化缓冲分区之后,处理设备可以为操作的迭代的数据分配存储器,如本文中参考图10所示的方法1000进一步描述的。在各种实施例中,响应于确定迭代的依赖性未跨越不同异构处理设备之间的边界(即,确定框908=“否”),处理设备可以省去用于从缓冲分区传送第一异构处理设备的输出以作为第二异构处理设备的输入的存储器管理操作。
图10示出了根据实施例的用于实施存储器分配的方法1000。方法1000可以在计算设备中以处理器(例如,图1和2中的处理器14和图3中的处理设备302)中执行的软件、通用硬件、专用硬件或者软件配置的处理器和专用硬件的组合来实施,例如在包括其他单独组件(例如,图1中的存储器16、24、图2中的专用高速缓存210、212、214、216和共享高速缓存230、图3中的处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c和主机存储器304、以及各种存储器/高速缓存控制器(未示出))的存储器管理***内执行软件的处理器。为了包含在在各种实施例中体现的可替换配置,实施方法1000的硬件在本文中称为“处理设备”。在各种实施例中,方法1000可以进一步说明方法900的框912。
在框1002中,处理设备可以识别被分配以执行第一操作的迭代的第一异构处理设备和被分配以执行依赖于第一操作的迭代的执行的第二操作的迭代的第二异构处理设备。处理设备可以分析所映射的数据流,以确定第二异构处理设备对第二操作的迭代的执行何时可以依赖于第一异构处理设备对第一操作的迭代的执行。
在确定框1004中,处理设备可以针对被分配用于由第二异构处理设备执行的第二操作的迭代的依赖性,确定是否在第一异构处理设备的存储器(例如,图2中的专用高速缓存210、212、214、216和共享高速缓存230、图3中的处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c)中初始化缓冲分区。
在框1006中,响应于针对第二异构处理设备的依赖性确定在第一异构处理设备的存储器中初始化缓冲分区(即,确定框1004=“是”),处理设备可以识别用于从缓冲分区提供或传送第一异构处理设备执行第一操作的迭代的输出以作为用于执行第二操作的迭代的第二异构处理设备的输入的存储器管理操作。在各种实施例中,所述存储器管理操作可以包括复制存储器管理操作、映射存储器管理操作、解映射存储器管理操作和/或无存储器管理操作。
在框1010中,响应于针对第二异构处理设备的依赖性确定不在第一异构处理设备的存储器中初始化缓冲分区(即,确定框1004=“否”),处理设备可以识别用于提供第一异构处理设备执行第一操作的迭代的输出以作为用于执行第二操作的迭代的第二异构处理设备的输入的存储器管理操作。在各种实施例中,处理设备可以应用预定义的规则、算法、历史数据、统计计算和/或启发法,以识别将执行哪些存储器管理操作以从第一异构处理设备(从第一异构处理设备的存储器的缓冲分区,或者经由主机存储器设备(例如,图1中的存储器16、24和图3中的主机存储器304))向第二异构处理设备传送数据。
在框1006和1010中的任一个中识别存储器管理操作之后,在框1008中,处理设备可以分配至少一个存储器(例如,图1中的存储器16、24、图2中的专用高速缓存210、212、214、216和共享高速缓存230、以及图3中的主机存储器304、处理设备高速缓存308、硬件加速器高速缓存310a、310b、310c)(例如,第二存储器),以用于存储用于由第三异构处理设备执行的迭代的数据,以最小化用于所分配的存储器的存储器管理操作的数量。在各种实施例中,第三异构处理设备可以包括第一异构处理设备和第二异构处理设备之一。在各种实施例中,处理设备可以应用预定义的规则、算法、历史数据、统计计算和/或启发法来识别哪个存储器可以最小化异构处理设备与所分配的存储器之间的事务的数量。处理设备可以分析用于异构处理设备的存储器管理操作,并基于具有在存储器与异构处理设备之间的最低事务数量的存储器来选择要分配的存储器,以实施存储器管理操作。
各种实施例(包括但不限于,上面参考图1-10描述的实施例)可以在包括移动计算设备在内的各种计算***中实施,其中一个示例适用于图11中示出了各种实施例。移动计算设备1100可以包括耦合到触摸屏控制器1104和内部存储器1106的处理器1102。处理器1102可以是指定用于通用或专用处理任务的一个或多个多核集成电路。内部存储器1106可以是易失性或非易失性存储器,并且还可以是安全和/或加密的存储器,或不安全和/或未加密的存储器,或其任何组合。可以利用的存储器类型的示例包括但不限于DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1104和处理器1102还可以耦合到触摸屏面板1112,例如电阻感测触摸屏、电容感测触摸屏、红外感测触摸屏等。另外,计算设备1100的显示器不需要具有触摸屏功能。
移动计算设备1100可以具有一个或多个无线电信号收发机1108(例如,Peanut、蓝牙、ZigBee、Wi-Fi、RF无线电)和天线1110,用于发送和接收通信,彼此耦合和/或耦合到处理器1102。收发机1108和天线1110可以与上述电路一起使用以实施各种无线传输协议栈和接口。移动计算设备1100可以包括蜂窝网络无线调制解调器芯片1116,其实现经由蜂窝网络的通信并且耦合到处理器。
移动计算设备1100可以包括耦合到处理器1102的***设备连接接口1118。***设备连接接口1118可以单独地配置为接受一种类型的连接,或者可以被配置为接受各种类型的物理和通信连接(通用的或专有的),例如通用串行总线(USB)、FireWire、Thunderbolt或PCIe。***设备连接接口1118还可以耦合到类似配置的***设备连接端口(未示出)。
移动计算设备1100还可以包括用于提供音频输出的扬声器1114。移动计算设备1100还可以包括壳体1120,壳体1120由塑料、金属或材料的组合构成,用于容纳本文所述的全部或一些组件。移动计算设备1100可以包括耦合到处理器1102的电源1122,例如一次性电池或可充电电池。可充电电池还可以耦合到***设备连接端口,以从移动计算设备1100外部的源接收充电电流。移动计算设备1100还可以包括用于接收用户输入的物理按钮1124。移动计算设备1100还可以包括用于打开和关闭移动计算设备1100的电源按钮1126。
各种实施例(包括但不限于,上面参考图1-10描述的实施例)可以在包括膝上型计算机1200(其示例在图12中示出)的各种计算***中实施。许多膝上型计算机包括用作计算机的定点设备的触摸板触摸表面1217,因此可以接收拖动、滚动和轻弹手势,类似于在配备有触摸屏显示器并且如上所述的计算设备上实施的那些。膝上型计算机1200通常包括耦合到易失性存储器1212和大容量非易失性存储器(例如闪存的磁盘驱动器1213)的处理器1211。另外,计算机1200可以具有可以连接到无线数据链路的用于发送和接收电磁辐射的一个或多个天线1208,和/或耦合到处理器1211的蜂窝电话收发机1216。计算机1200还可以包括耦合到处理器1211的软盘驱动器1214和压缩光盘(CD)驱动器1215。在笔记本配置中,计算机外壳包括触摸板1217、键盘1218和显示器1219,其全部耦合到处理器1211。计算设备的其他配置可以包括耦合到处理器(例如,通过USB输入)的计算机鼠标或跟踪球,如众所周知的那样,其也可以与各种实施例结合使用。
各种实施例(包括但不限于,上面参考图1-10描述的实施例)也可以在固定计算***中实施,例如各种可商购服务器中的任何一种。图13中示出了示例***器1300。这种服务器1300通常包括耦合到易失性存储器1302和大容量非易失性存储器(例如磁盘驱动器1304)的一个或多个多核处理器组件1301。如图13所示,多核处理器组件1301可以通过将其***组件的机架中而添加到服务器1300。服务器1300还可以包括耦合到处理器1301的软盘驱动器、压缩光盘(CD)或数字通用盘(DVD)光盘驱动器1306。服务器1300还可以包括耦合到多核处理器组件1301的网络访问端口1303,用于与网络1305建立网络接口连接,例如耦合到其他广播***计算机和服务器的局域网、互联网、公共交换电话网和/或蜂窝数据网(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或任何其他类型的蜂窝数据网络)。
用于在可编程处理器上执行以执行各种实施例的操作的计算机程序代码或“程序代码”可以用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl的高级编程语言或各种其他编程语言来编写。存储在本申请中使用的计算机可读储存介质上的程序代码或程序可以指代其格式可由处理器理解的机器语言代码(例如目标代码)。
提供前述方法说明和过程流程图仅作为说明性示例,并且不旨在要求或暗示各种实施例的操作必须以所呈现的顺序执行。如本领域技术人员将理解的,前述实施例中的操作顺序可以以任何顺序执行。诸如“之后”、“然后”、“接下来”等的词语并不旨在限制操作的顺序;这些词只是用来引导读者通读对方法的说明。此外,对单数形式的权利要求元素的任何引用(例如,使用冠词“一”、“一个”或“该”)不应被解释为将该元素限制为单数。
结合各种实施例描述的各种说明性逻辑块、模块、电路和算法操作可以实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,上面已经在其功能方面对各种说明性的组件、块、模块、电路和操作进行了总体描述。这种功能是实施为硬件还是软件取决于特定应用和施加于整个***的设计约束。技术人员可以针对每个特定应用以不同方式实施所描述的功能,但是这种实施决策不应被解释为导致脱离权利要求的范围。
可以用被设计为执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件或者其任意组合,来实施或执行用于实施结合本文公开的实施例描述的各种说明性逻辑、逻辑块、模块和电路的硬件。通用处理器可以是微处理器,但是可替换地,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器的组合、一个或多个微处理器结合DSP内核的组合或者任何其它此种配置。可替换地,一些操作或方法可以由特定于给定功能的电路执行。
在一个或多个实施例中,所描述的功能可以用硬件、软件、固件或其任何组合来实施。如果以软件实施,则所述功能可以作为一个或多个指令或代码存储在非暂时性计算机可读介质或非暂时性处理器可读介质上。本文公开的方法或算法的操作可以体现在处理器可执行软件模块中,该处理器可执行软件模块可以驻留在非暂时性计算机可读或处理器可读储存介质上。非暂时性计算机可读或处理器可读储存介质可以是计算机或处理器可以访问的任何储存介质。作为示例而非限制,这种非暂时性计算机可读或处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘储存设备、磁盘储存设备或其它磁储存设备或者可以用于以指令或数据结构的形式存储所需程序代码并且能够被计算机访问的任何其它介质。本文所使用的磁盘和光盘包括压缩光盘(CD)、激光盘、光盘、数字通用光盘(DVD)、软盘和蓝光盘,其中磁盘通常磁性地再现数据,而光盘通常利用激光光学地再现数据。上述的组合也包括在非暂时性计算机可读和处理器可读储存介质的范围内。另外,方法或算法的操作可以作为代码和/或指令的一个或任何组合或集合驻留在非暂时性处理器可读介质和/或计算机可读介质上,其可以合并到计算机程序产品中。
提供前面对所公开实施例的说明是为了使所属领域的技术人员能够实现或使用权利要求。对于本领域技术人员来说,对这些实施例的各种修改是显而易见的,并且在不脱离权利要求的范围的情况下,本文定义的一般原理可以应用于其他实施例和实施方式。因此,本公开内容不旨在限于本文描述的实施例和实施方式,而是应被赋予与所附权利要求以及本文公开的原理和新颖特征相一致的最大范围。
Claims (26)
1.一种在计算设备上实施数据流管理的方法,包括:
识别被分配用于由第一异构处理设备执行的第一操作的第一迭代与被分配用于由第二异构处理设备执行的第二操作的第一迭代之间的依赖性;映射所述第一异构处理设备和所述第二异构处理设备的迭代执行的路径;
初始化所述第一异构处理设备的第一存储器的缓冲分区,以用于由所述第一异构处理设备执行所述第一操作的所述第一迭代的输出,其中,被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代依赖于所述输出;
识别用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为所述第二异构处理设备的输入的存储器管理操作;以及
分配第二存储器,用于存储由第三异构处理设备执行的迭代的数据,所述分配是基于在所分配的第二存储器与所述第三异构处理设备之间的最低数量的存储器管理操作来进行的。
2.根据权利要求1所述的方法,还包括:确定被分配用于由所述第一异构处理设备执行的所述第一操作的所述第一迭代与被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代之间的所述依赖性是否跨越了不同类型的异构处理设备之间的边界,
其中,初始化缓冲分区包括:
响应于确定所述依赖性跨越不同类型的异构处理设备之间的边界而初始化所述缓冲分区;以及
响应于确定所述依赖性没有跨越不同类型的异构处理设备之间的边界,省去用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为所述第二异构处理设备的输入的所述存储器管理操作。
3.根据权利要求1所述的方法,还包括:
识别被分配以执行所述第一操作的所述第一迭代的所述第一异构处理设备,以及被分配以依赖于所述第一操作的所述第一迭代的执行来执行所述第二操作的所述第一迭代的所述第二异构处理设备;以及
针对被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代的所述依赖性,确定是否在所述第一存储器中初始化所述缓冲分区,
其中,识别用于传送所述输出的存储器管理操作包括:响应于确定在所述第一存储器中初始化所述缓冲分区,识别用于传送所述输出的所述存储器管理操作。
4.根据权利要求1所述的方法,还包括:通过由所述第一异构处理设备绕过主机存储器而直接访问所述缓冲分区,来从所述第一存储器的所述缓冲分区中取回数据。
5.根据权利要求1所述的方法,还包括:将所述第一存储器的所述缓冲分区的第一存储器地址直接映射到所述第二异构处理设备的第三存储器的第二存储器地址,而不同步到二者之间的主机存储器的存储器地址。
6.根据权利要求1所述的方法,其中,识别用于传送所述输出的存储器管理操作包括应用预定义规则、算法、历史数据、统计计算或启发法中的一个。
7.根据权利要求1所述的方法,其中,所述存储器管理操作包括复制存储器管理操作、映射存储器管理操作、解映射存储器管理操作或无存储器管理操作中的一个。
8.一种计算设备,包括:
多个异构处理设备,包括第一异构处理设备、第二异构处理设备、第三异构处理设备和第四异构处理设备;
多个存储器,包括与所述第一异构处理设备相关联的第一存储器和与所述第三异构处理设备相关联的第二存储器;以及
互连,耦合到所述多个异构处理设备和所述多个存储器,
其中,所述第四异构处理设备被配置为执行包括如下的操作:
识别被分配用于由第一异构处理设备执行的第一操作的第一迭代与被分配用于由第二异构处理设备执行的第二操作的第一迭代之间的依赖性;映射所述第一异构处理设备和所述第二异构处理设备的迭代执行的路径;
初始化所述第一存储器的缓冲分区,以用于由所述第一异构处理设备执行所述第一操作的所述第一迭代的输出,其中,被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代依赖于所述输出;
识别用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为所述第二异构处理设备的输入的存储器管理操作;以及
分配所述第二存储器,用于存储由所述第三异构处理设备执行的迭代的数据,所述分配是基于在所分配的第二存储器与所述第三异构处理设备之间的最低数量的存储器管理操作来进行的。
9.根据权利要求8所述的计算设备,其中,所述第四异构处理设备被配置为执行还包括如下的操作:确定被分配用于由所述第一异构处理设备执行的所述第一操作的所述第一迭代与被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代之间的所述依赖性是否跨越了不同类型的异构处理设备之间的边界,
其中,所述第四异构处理设备被配置为执行操作以使得初始化缓冲分区包括:
响应于确定所述依赖性跨越不同类型的异构处理设备之间的边界而初始化所述缓冲分区;以及
响应于确定所述依赖性没有跨越不同类型的异构处理设备之间的边界,省去用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为所述第二异构处理设备的输入的所述存储器管理操作。
10.根据权利要求8所述的计算设备,其中,所述第四异构处理设备被配置为执行还包括如下的操作:
识别被分配以执行所述第一操作的所述第一迭代的所述第一异构处理设备,以及被分配以依赖于所述第一操作的所述第一迭代的执行来执行所述第二操作的所述第一迭代的所述第二异构处理设备;以及
针对被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代的所述依赖性,确定是否在所述第一存储器中初始化所述缓冲分区,
其中,识别用于传送所述输出的存储器管理操作包括:响应于确定在所述第一存储器中初始化所述缓冲分区,识别用于传送所述输出的所述存储器管理操作。
11.根据权利要求8所述的计算设备,还包括耦合到所述互连的主机存储器,
其中,所述第一异构处理设备被配置为执行还包括如下的操作:通过访问所述缓冲分区并绕过所述主机存储器,来直接从所述第一存储器的所述缓冲分区中取回数据。
12.根据权利要求8所述的计算设备,还包括:
第三存储器,其与所述第二异构处理设备相关联并且耦合到所述互连;以及
耦合到所述互连的主机存储器,
其中,所述第四异构处理设备被配置为执行还包括如下的操作:将所述第一存储器的所述缓冲分区的第一存储器地址直接映射到所述第三存储器的第二存储器地址,而不同步到二者之间的主机存储器的存储器地址。
13.根据权利要求8所述的计算设备,其中,所述第四异构处理设备被配置为执行操作,以使得识别用于传送所述输出的存储器管理操作包括应用预定义规则、算法、历史数据、统计计算或启发法中的一个。
14.根据权利要求8所述的计算设备,其中,所述存储器管理操作包括复制存储器管理操作、映射存储器管理操作、解映射存储器管理操作或无存储器管理操作中的一个。
15.一种计算设备,包括:
多个异构处理设备,包括第一异构处理设备、第二异构处理设备、第三异构处理设备和第四异构处理设备;
多个存储器,包括与所述第一异构处理设备相关联的第一存储器和与所述第三异构处理设备相关联的第二存储器;
用于识别被分配用于由所述第一异构处理设备执行的第一操作的第一迭代与被分配用于由所述第二异构处理设备执行的第二操作的第一迭代之间的依赖性的单元;用于映射所述第一异构处理设备和所述第二异构处理设备的迭代执行的路径的单元;
用于初始化所述第一存储器的缓冲分区,以用于由所述第一异构处理设备执行所述第一操作的所述第一迭代的输出的单元,其中,被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代依赖于所述输出;
用于识别用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为所述第二异构处理设备的输入的存储器管理操作的单元;以及
用于分配所述第二存储器,以用于存储由第三异构处理设备执行的迭代的数据-单元,所述分配是基于在所分配的第二存储器与所述第三异构处理设备之间的最低数量的存储器管理操作来进行的。
16.根据权利要求15所述的计算设备,还包括:用于确定被分配用于由所述第一异构处理设备执行的所述第一操作的所述第一迭代与被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代之间的所述依赖性是否跨越了不同类型的异构处理设备之间的边界的单元,
其中,用于初始化缓冲分区的单元包括:
用于响应于确定所述依赖性跨越不同类型的异构处理设备之间的边界而初始化所述缓冲分区的单元;以及
用于响应于确定所述依赖性没有跨越不同类型的异构处理设备之间的边界,省去用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为所述第二异构处理设备的输入的所述存储器管理操作的单元。
17.根据权利要求15所述的计算设备,还包括:
用于识别被分配以执行所述第一操作的所述第一迭代的所述第一异构处理设备,以及被分配以依赖于所述第一操作的所述第一迭代的执行来执行所述第二操作的所述第一迭代的所述第二异构处理设备的单元;以及
用于针对被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代的所述依赖性,确定是否在所述第一存储器中初始化所述缓冲分区的单元,
其中,用于识别用于传送所述输出的存储器管理操作的单元包括:用于响应于确定在所述第一存储器中初始化所述缓冲分区,识别用于传送所述输出的所述存储器管理操作的单元。
18.根据权利要求15所述的计算设备,还包括:
主机存储器;以及
用于通过访问所述缓冲分区并绕过所述主机存储器,来直接从所述第一存储器的所述缓冲分区中取回数据的单元。
19.根据权利要求15所述的计算设备,还包括:
与所述第二异构处理设备相关联的第三存储器;
主机存储器;以及
用于将所述第一存储器的所述缓冲分区的第一存储器地址直接映射到所述第三存储器的第二存储器地址,而不同步到二者之间的所述主机存储器的存储器地址的单元。
20.根据权利要求15所述的计算设备,其中:
用于识别用于传送所述输出的存储器管理操作的单元包括:用于应用预定义规则、算法、历史数据、统计计算或启发法中的一个的单元;以及
所述存储器管理操作包括复制存储器管理操作、映射存储器管理操作、解映射存储器管理操作或无存储器管理操作中的一个。
21.一种非暂时性处理器可读介质,其上存储有处理器可执行指令,所述处理器可执行指令被配置为使计算设备的处理设备执行包括如下的操作:
识别被分配用于由第一异构处理设备执行的第一操作的第一迭代与被分配用于由第二异构处理设备执行的第二操作的第一迭代之间的依赖性;映射所述第一异构处理设备和所述第二异构处理设备的迭代执行的路径;
初始化所述第一异构处理设备的第一存储器的缓冲分区,以用于由所述第一异构处理设备执行所述第一操作的所述第一迭代的输出,其中,被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代依赖于所述输出;
识别用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为第二异构处理设备的输入的存储器管理操作;以及
分配第二存储器,以用于存储由第三异构处理设备执行的迭代的数据,所述分配是基于在所分配的第二存储器与所述第三异构处理设备之间的最低数量的存储器管理操作来进行的。
22.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括如下的操作:确定被分配用于由所述第一异构处理设备执行的所述第一操作的所述第一迭代与被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代之间的所述依赖性是否跨越了不同类型的异构处理设备之间的边界,
其中,存储的可执行指令被配置为使所述计算设备的所述处理设备执行操作以使得初始化缓冲分区包括:
响应于确定所述依赖性跨越不同类型的异构处理设备之间的边界而初始化所述缓冲分区;以及
响应于确定所述依赖性没有跨越不同类型的异构处理设备之间的边界,省去用于从所述缓冲分区传送所述第一异构处理设备的所述输出以作为所述第二异构处理设备的输入的所述存储器管理操作。
23.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括如下的操作:
识别被分配以执行所述第一操作的所述第一迭代的所述第一异构处理设备,以及被分配以依赖于所述第一操作的所述第一迭代的执行来执行所述第二操作的所述第一迭代的所述第二异构处理设备;以及
针对被分配用于由所述第二异构处理设备执行的所述第二操作的所述第一迭代的所述依赖性,确定是否在所述第一存储器中初始化所述缓冲分区,
其中,识别用于传送所述输出的存储器管理操作包括:响应于确定在所述第一存储器中初始化所述缓冲分区,识别用于传送所述输出的所述存储器管理操作。
24.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括如下的操作:通过由所述第一异构处理设备绕过主机存储器而直接访问所述缓冲分区,来从所述第一存储器的所述缓冲分区中取回数据。
25.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的可执行指令被配置为使所述计算设备的所述处理设备执行还包括如下的操作:将所述第一存储器的所述缓冲分区的第一存储器地址直接映射到所述第二异构处理设备的第三存储器的第二存储器地址,而不同步到二者之间的主机存储器的存储器地址。
26.根据权利要求21所述的非暂时性处理器可读介质,其中:
所述存储器管理操作包括复制存储器管理操作、映射存储器管理操作、解映射存储器管理操作或无存储器管理操作中的一个;以及
所存储的可执行指令被配置为使所述计算设备的所述处理设备执行操作以使得识别用于传送所述输出的存储器管理操作包括应用预定义规则、算法、历史数据、统计计算或启发法中的一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/266,656 | 2016-09-15 | ||
US15/266,656 US10152243B2 (en) | 2016-09-15 | 2016-09-15 | Managing data flow in heterogeneous computing |
PCT/US2017/044601 WO2018052551A1 (en) | 2016-09-15 | 2017-07-31 | Managing data flow in heterogeneous computing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109791510A CN109791510A (zh) | 2019-05-21 |
CN109791510B true CN109791510B (zh) | 2023-05-26 |
Family
ID=59523345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780056281.4A Active CN109791510B (zh) | 2016-09-15 | 2017-07-31 | 在异构计算中管理数据流 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10152243B2 (zh) |
EP (1) | EP3513289A1 (zh) |
CN (1) | CN109791510B (zh) |
WO (1) | WO2018052551A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102655094B1 (ko) * | 2018-11-16 | 2024-04-08 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
JP2020177074A (ja) * | 2019-04-16 | 2020-10-29 | 株式会社デンソー | 車両用装置、車両用装置の制御方法 |
US20220197696A1 (en) * | 2020-12-23 | 2022-06-23 | Advanced Micro Devices, Inc. | Condensed command packet for high throughput and low overhead kernel launch |
KR20220170664A (ko) * | 2021-06-23 | 2022-12-30 | 에스케이하이닉스 주식회사 | 호스트 장치, 저장 장치 및 그 동작 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105431827A (zh) * | 2013-08-07 | 2016-03-23 | 高通股份有限公司 | 针对异构多处理器***中的共享存储区域的动态地址协商 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112226A1 (en) * | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
FR2897611B1 (fr) * | 2006-02-20 | 2008-05-30 | Gilles Allard | Produit de traitement d'un reservoir et d'une cuvette de chasse d'eau |
US8176282B2 (en) * | 2009-03-11 | 2012-05-08 | Applied Micro Circuits Corporation | Multi-domain management of a cache in a processor system |
KR20110116553A (ko) * | 2010-04-19 | 2011-10-26 | 삼성전자주식회사 | 미디어 프로세싱 애플리케이션 실행 장치 및 방법 |
US8723877B2 (en) * | 2010-05-20 | 2014-05-13 | Apple Inc. | Subbuffer objects |
US9645866B2 (en) | 2010-09-20 | 2017-05-09 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US9830163B2 (en) * | 2012-06-08 | 2017-11-28 | Advanced Micro Devices, Inc. | Control flow in a heterogeneous computer system |
RU2012127578A (ru) | 2012-07-02 | 2014-01-10 | ЭлЭсАй Корпорейшн | Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред |
US9697124B2 (en) * | 2015-01-13 | 2017-07-04 | Qualcomm Incorporated | Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture |
US9818166B2 (en) * | 2015-01-16 | 2017-11-14 | Intel Corporation | Graph-based application programming interface architectures with producer/consumer nodes for enhanced image processing parallelism |
US10417128B2 (en) * | 2015-05-06 | 2019-09-17 | Oracle International Corporation | Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches |
US9836396B2 (en) * | 2015-05-21 | 2017-12-05 | Mediatek Inc. | Method for managing a last level cache and apparatus utilizing the same |
US9727463B2 (en) * | 2015-05-22 | 2017-08-08 | Nvidia Corporation | Assymetric coherent caching for heterogeneous computing |
US9870339B2 (en) * | 2015-06-26 | 2018-01-16 | Intel Corporation | Hardware processors and methods for tightly-coupled heterogeneous computing |
US9836369B2 (en) | 2015-10-29 | 2017-12-05 | Netapp, Inc. | Storage system to recover and rewrite overwritten data |
-
2016
- 2016-09-15 US US15/266,656 patent/US10152243B2/en active Active
-
2017
- 2017-07-31 EP EP17749093.5A patent/EP3513289A1/en active Pending
- 2017-07-31 WO PCT/US2017/044601 patent/WO2018052551A1/en active Search and Examination
- 2017-07-31 CN CN201780056281.4A patent/CN109791510B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105431827A (zh) * | 2013-08-07 | 2016-03-23 | 高通股份有限公司 | 针对异构多处理器***中的共享存储区域的动态地址协商 |
Also Published As
Publication number | Publication date |
---|---|
EP3513289A1 (en) | 2019-07-24 |
WO2018052551A1 (en) | 2018-03-22 |
US20180074727A1 (en) | 2018-03-15 |
CN109791510A (zh) | 2019-05-21 |
US10152243B2 (en) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791510B (zh) | 在异构计算中管理数据流 | |
CN107621959B (zh) | 电子装置及其软件训练方法、计算*** | |
KR102553261B1 (ko) | 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법 | |
CN113448504A (zh) | 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器 | |
US10169105B2 (en) | Method for simplified task-based runtime for efficient parallel computing | |
US11614892B2 (en) | Memory system architecture for heterogeneous memory technologies | |
US20220405015A1 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
US11675506B2 (en) | Storage device supporting multi-tenancy and operating method thereof | |
US20160026436A1 (en) | Dynamic Multi-processing In Multi-core Processors | |
US20170031632A1 (en) | Data storage device, method of operating the same, and data processing system including the same | |
KR20130081526A (ko) | 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들 | |
CN109314103B (zh) | 用于远程现场可编程门阵列处理的方法和装置 | |
CN109983443B (zh) | 实现分叉非易失性存储器快速驱动器的技术 | |
JP6293910B2 (ja) | 動的言語でのインラインキャッシュのためのハードウェアアクセラレーション | |
KR102330394B1 (ko) | 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법 | |
KR20230156062A (ko) | 페이지 재매핑 및 회전들을 통한 어드레스 공간 레이아웃 랜덤화 엔트로피의 증가 | |
US9658976B2 (en) | Data writing system and method for DMA | |
CN109690501A (zh) | 混合输入/输出相关写入 | |
US10261831B2 (en) | Speculative loop iteration partitioning for heterogeneous execution | |
US11797183B1 (en) | Host assisted application grouping for efficient utilization of device resources | |
WO2022056656A1 (en) | Weights layout transformation assisted nested loops optimization for ai inference | |
CN110832462B (zh) | 反向平铺 | |
US20230409495A1 (en) | Storage device, operation method of the storage device, and electronic system including the storage device | |
TW201604772A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |