CN105874431A - 减少数据交换负载的计算系统以及相关的数据交换方法 - Google Patents
减少数据交换负载的计算系统以及相关的数据交换方法 Download PDFInfo
- Publication number
- CN105874431A CN105874431A CN201580003533.8A CN201580003533A CN105874431A CN 105874431 A CN105874431 A CN 105874431A CN 201580003533 A CN201580003533 A CN 201580003533A CN 105874431 A CN105874431 A CN 105874431A
- Authority
- CN
- China
- Prior art keywords
- circuit
- cache flush
- cache
- storage device
- processes
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/12—Replacement control
-
- 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/0611—Improving I/O performance in relation to response time
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种计算系统,包括多个处理电路和存储装置。所述多个处理电路至少包括第一处理电路和第二处理电路。至少所述第一处理电路和所述第二处理电路共享所述存储装置。所述第一处理电路执行整个高速缓存刷新操作以准备在所述存储装置中的交换数据。所述第二处理电路从所述存储装置中获取所述交换数据。
Description
相关申请的交叉引用
本申请要求2014年5月28日递交的申请号为62/003,611的美国临时案的优先权,在此合并参考该申请案的申请标的。
技术领域
本发明公开的实施例关于一种数据交换方案,特别是关于一种减少数据交换负载(overhead)的计算系统(例如,异构(heterogeneous)计算系统或均匀(homogeneous)计算系统)和相关的数据交换方法。
背景技术
由于半导体工艺的进步,当今的多处理器系统变得流行起来。对于异构计算系统,它具有多个不同的处理器。例如,异构计算系统可包括至少一个第一处理器和至少一个第二处理器,其中每个第一处理器可以具有第一处理器架构(例如,第一指令集架构),并且每个第二处理器可以具有不同于第一处理器架构的第二处理器架构(例如,第二指令集架构)。因此,如果在第一处理器和第二处理器上运行相同的任务,第一处理器执行的指令将与第二处理器执行的指令不同。在一般情况下,由于不同的处理器架构,在异构计算系统中实现的第一处理器和第二处理器具有不同的计算能力(computing power)。例如,第一处理器和第二处理器其中之一可以用来作为主处理器,第一处理器和第二处理器中的另一个可以用作辅助处理器。在第一处理器和第二处理器之间需要进行数据交换,这不可避免地导致大的通信负载(communication overhead)。
因此,需要一种创新的数据交换方案,其能够减少在计算系统中的不同处理电路(例如,不同的处理器)之间的数据交换负载。
发明内容
根据本发明的示例性实施例,提出了解决上述问题的一种降低数据交换负载的计算系统(例如,异构计算系统或均匀计算系统)以及相关的数据交换方法。
根据本发明的第一方面,本发明公开了一种示例性计算系统。示例性计算系统包括多个处理电路和存储装置。所述多个处理电路至少具有第一处理电路和第二处理电路。至少所述第一处理电路和第二处理电路共享所述存储装置。所述第一处理电路用于执行整个高速缓存刷新(whole cache flush)操作以准备在所述存储装置中的交换数据。所述第二处理电路用于从所述存储装置中获取所述交换数据。
根据本发明的第二方面,本发明公开了一种示例性计算系统。示例性计算系统包括多个处理电路和存储装置。所述多个处理电路至少具有第一处理电路和第二处理电路。至少所述第一处理电路和所述第二处理电路共享所述存储装置。关于第二处理电路处理的每一个任务,第二处理电路用于参考高速缓存决定,以选择性地执行高速缓存刷新操作,以存储所述任务的处理结果中的至少一部分,作为存储装置中的交换数据的一部分。所述第一处理电路用于从所述存储装置中获取交换数据。
根据本发明的第三方面,本发明公开了一种示例性数据交换方法。示例性数据交换方法包括:在第一处理电路的高速缓存中执行整个高速缓存刷新操作,以准备由第一处理电路和第二处理电路共享的存储装置中的交换数据,以及第二处理电路从存储装置获取交换数据。
根据本发明的第四方面,本发明公开了一种示例性数据交换方法。示例性数据交换方法包括:关于处理的每一个任务,参考高速缓存刷新决定选择性地在第二处理电路的高速缓存中执行高速缓存刷新操作,以存储所述任务的处理结果的至少一部分,以作为由第一处理电路和第二处理电路共享的存储装置中的交换数据的一部分,以及第一处理电路从存储装置中获取交换数据。
对于已经阅读后续由各附图及内容所显示的较佳实施方式的本领域的技术人员来说,本发明的各目的是明显的。
附图说明
图1是根据本发明一实施例的第一计算系统的示意图。
图2是根据本发明的一实施例的在主机端(host side)的第一处理电路采用的数据交换方法的流程图。
图3是根据本发明的一实施例的在设备端(device side)的第二处理电路采用的数据交换方法的流程图。
图4是根据本发明的一实施例的在主机端和设备端之间的数据交换的时序图。
图5是根据本发明的一实施例的第二计算系统的示意图。
图6是根据本发明的一实施例的第三计算系统的示意图。
图7是根据本发明的一实施例的第四计算系统的示意图。
具体实施方式
在权利要求书及说明书中使用了某些词汇来指称特定的组件。所属领域中的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同样的组件。本权利要求书及说明书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在权利要求书及说明书中所提及的「包括」为开放式的用语,故应解释成「包括但不限定于」。另外,「耦接」一词在此包括任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表所述第一装置可直接电连接于所述第二装置,或通过其他装置或连接手段间接地电连接至所述第二装置。
图1是根据本发明的一实施例的第一计算系统的示意图。计算系统100包括多个子系统(102和104)、高速缓存刷新决定电路105、总线106、存储装置108。子系统102包括第一处理电路112和第一高速缓存114。子系统104包括第二处理电路116和第二高速缓存118。在本实施例中,子系统102可以是主机子系统,以及子系统104可以是设备子系统。此外,计算系统100可以是异构计算系统或均匀计算系统,这取决于实际的设计考虑。
在一个典型的设计中,第一处理电路112可以包括共享相同的高速缓存(即第一缓存114)的一个或多个处理器(或处理器内核),以及第二处理电路112可以包括共享相同的高速缓存(即第二高速缓存118)的一个或多个处理器(或处理器内核)。例如,第一处理电路112可以使用中央处理单元(CPU)来实现,第二处理电路116可以使用图形处理单元(GPU)来实现。另一个例子,在主机端的第一处理电路112可以使用CPU、GPU、数字信号处理器(DSP)或任何其他处理器来实现,在设备端的第二处理电路116可以使用的CPU、GPU、DSP、硬件电路或任何其他处理器来实现。应该注意的是,第一处理电路112和第二处理电路116可以使用相同类型的处理器或不同类型的处理器来实现。简单地说,本发明在第一处理电路112和第二处理电路116的实际实现方面没有任何限制。任何计算系统或电子设备(例如,移动电话、平板、可穿戴设备、个人电脑、笔记本电脑或具有多个处理电路的任何其他设备)使用所提出的数据交换方案均落入本发明的范围内。
存储装置108可以是外部存储装置,如动态随机存取存储器(DRAM),以及第一处理电路112和第二处理电路116可以共享存储装置108。因此,存储装置108可作为存储第一处理电路112和第二处理电路116的读/写数据的全局缓冲区(global buffer)。第一高速缓存114和第二高速缓存118都可以是内部存储装置,如静态随机存取存储器(SRAM)。因此,第一高速缓存114可以作为高速缓存第一处理电路112的读/写数据的专用本地缓冲区,以及第二高速缓存118可以作为高速缓存第二处理电路118的读/写数据的专用本地缓冲区。
如上所述,存储装置108是外部存储装置,由第一处理电路112和第二处理电路116共享。因此,第一处理电路112可以通过总线106访问存储装置108,以及第二处理电路116也可以通过总线106访问存储装置108。第一处理电路112可准备在存储装置108中的交换数据,以及第二处理电路118可以从存储装置108获取交换数据以用于进一步处理。在本实施例中,第一高速缓存114和第二高速缓存118都可以采用写回策略(write-back policy)。根据写回策略,最初只完成写入高速缓存,以及写入备用存储器被推迟,直到高速缓存中包含的是即将由新数据修改/替换的数据。因此,在设备端的第二处理电路116从存储装置(例如,DRAM)108读取由主机端的第一处理电路112更新的数据之前,第一处理电路112需要从第一高速缓存114将“脏”的高速缓存线中最新更新的内容刷新(即写回)至存储装置(例如,DRAM)108。在这种方式中,在第一高速缓存114适当地刷新之后,第二处理电路116可以从存储装置108得到最新更新的内容。
类似地,在主机端的第一处理电路112从存储装置(例如,DRAM)108读取由设备端的第二处理电路116更新的请求数据之前,第二处理电路112需要从第二高速缓存118将“脏”的高速缓存线中最新更新的内容刷新(即写回)至存储装置(例如,DRAM)108。在通过这种方式,在第二高速缓存118适当地刷新之后,第一处理电路112可以从存储装置108中获取最新更新的内容。
基于所提出的数据交换方案,第一处理电路112可以减少的高速缓存刷新负载准备在存储装置108中的交换数据。在存储装置108中的交换数据被运行于第二处理电路116上的任务处理之后,处理结果可从第二高速缓存118刷新到存储装置108中,以及第一处理电路112可以从存储装置108中获取处理结果。此外,基于所提出的数据交换方案,高速缓存刷新决定电路105控制由第二处理电路116执行的高速缓存刷新操作,以减少高速缓存刷新负载。所提出的在主机端和设备端的数据交换方案进一步细节描述如下。
图2是根据本发明的一实施例的在主机端的第一处理电路采用的数据交换方法的流程图。如果可以得到大致相同的结果,则步骤不一定要遵照图2所示的顺序来执行。示例性数据交换方法可采用如图1所示的第一处理电路(例如,中央处理器)112来实施。第一处理电路112可在存储装置108中分配缓冲区。例如,在第一处理电路112中运行的应用程序,可以分配用于存储应用程序数据(例如,属性数据)的缓冲区,在所分配的缓冲区中的数据可以被运行于第二处理电路116上的任务读取,以进一步处理。在步骤202中,第一处理电路112收集应被刷新的缓冲区。例如,应被刷新的缓冲区可以包括将由设备端的第二处理电路(例如,GPU)116使用的在存储装置108中分配的缓冲区。在步骤204中,第一处理电路112确定应被刷新总的缓冲区大小。在步骤206中,第一处理电路112根据第一高速缓存114的大小(即第一处理电路112的高速缓存大小)确定阈值。举例来说,但不限制本发明,阈值可以被设置为等于第一高速缓存114的大小的值,或者也可以被设置为第一高速缓存114的大小的2倍的值。
在步骤208中,第一处理电路112检查是否满足预定标准,通过比较所述总的缓冲区大小,应根据高速缓存大小确定的阈值来刷新。在本实施例中,预定标准(例如,总的缓冲区大小>阈值)控制着应用于第一高速缓存114的整个高速缓存刷新操作的启用。当应被刷新的总的缓冲区大小大于阈值时,第一处理电路112决定满足预定标准。然而,当应被刷新的总的缓冲区大小不大于阈值时,第一处理电路112决定不满足预定标准。由第一处理电路112执行的高速缓存刷新操作是根据预定标准的检查结果来控制的。在一些实施例中,步骤202-208可以由第二处理电路116或任何其他装置来执行,上述实施例并非用以限制本发明。
一般来说,第一高速缓存114是小型的缓冲区,如512KB的高速缓存。第一高速缓存114可包括应被刷新至存储装置108中分配的缓冲区以供第二处理电路116使用的“脏”的缓存数据,以及还可进一步包含不需要被第二处理电路116使用的“脏”的缓存数据。执行由第一处理电路112和第二处理电路116共同使用的一个缓冲区的高速缓存刷新操作,可能需要检查第一高速缓存114中的每个缓存线,以找到应被刷新至存储装置108中分配的缓冲区的高速缓存的数据。当第一处理电路112对每一个缓冲区执行一个高速缓存刷新操作时,主机端会具有巨大的(heavy)高速缓存刷新负载。当满足预定标准(例如,总的缓冲区大小>阈值)时,这意味着在一个操作中刷新整个第一高速缓存114以写回所有在第一高速缓存114中的“脏”的缓存数据,包括应被刷新至存储装置108中分配的缓冲区以供第二处理电路116使用的”脏”的缓存数据,以及不需要被第二处理电路116使用的“脏”的缓存数据,与分别刷新每一个分配的缓冲区相比,这样的方式可以有效地减少高速缓存刷新负载。因此,当满足预定标准(例如预定标准为,总的缓冲区大小>阈值)时,第一处理电路112在第一高速缓存114中执行整个高速缓存刷新操作,以准备在存储装置108中的交换数据(步骤210)。因此,在整个高速缓存刷新操作完成之后,在存储装置108中分配的特定缓冲区中准备的交换数据将包括从第一高速缓存114中刷新的最新更新的内容。
然而,当不满足预定标准(例如预定标准为,总的缓冲区大小>阈值)时,这意味着在第一高速缓存114中的大多数的”脏”的缓存数据可能不会被第二处理电路116使用。刷新整个第一高速缓存114将导致过多的数据,这些数据是不打算被第一处理电路112和第二处理电路116共享的,但从第一高速缓存114刷新到存储装置108。因此,当不满足预定标准(例如预定标准为,总缓冲区大小>阈值)时,第一处理电路112分别对每个缓冲区(在存储装置108中分配的以及由第一处理电路112和第二处理电路116共享)执行高速缓存刷新操作(步骤212)。
第二处理电路116从存储装置108中获取由第一处理电路112准备的交换数据。此外,第二处理电路116执行一个或多个任务以处理由第一处理电路112准备的交换数据,从而产生每个任务的处理结果。如果对于每个任务的处理结果都执行一个高速缓存刷新操作,由于第一处理电路112可能不需要或不是立即需要处理某些任务的结果,那么在设备端可能会有不必要的缓存刷新操作。例如,当任务的处理结果包括中间数据而不是第一处理电路112所需的最终数据,执行高速缓存刷新操作以将中间数据从第二高速缓存118刷新到存储装置108是不必要的,这会增加设备端的高速缓存刷新负载。因此本发明提出对由第二处理电路116执行的每个任务的处理结果选择性执行高速缓存刷新操作,以有效地减少设备端的高速缓存刷新负载。换言之,可以执行一个任务的处理结果的高速缓存刷新操作,而跳过其他不同任务的处理结果的高速缓存刷新操作。
图3是根据本发明的一实施例的在设备端的第二处理电路采用的数据交换方法的流程图。如果可以得到大致相同的结果,则步骤不一定要遵照图3所示的顺序来执行。示例性数据交换方法可以包括高速缓存刷新决策程序(cacheflush decision making procedure)301和高速缓存刷新控制程序302,其中高速缓存刷新决策程序301可以由如图1所示高速缓存刷新决定电路105来执行,以及高速缓存刷新控制程序302可以由如图1所示的第二处理电路(例如,GPU)116来执行。高速缓存刷新决定电路105是用于自动的产生每个任务的高速缓存刷新决定(第二处理电路116至少部分基于从第一处理电路112准备并存储于存储装置108的交换数据中获取的数据来执行每个任务)。在步骤312中,高速缓存刷新决定电路105收集将由第二处理电路116执行的任务。然后,可以触发随后的步骤。在步骤314中,高速缓存刷新决定电路105分析每个任务的处理结果的含义。在步骤316中,高速缓存刷新决定电路105基于从步骤314中得到的分析结果,作出每个任务的处理结果的至少一部分(即,部分或全部)的一个高速缓存刷新决定。
根据设计考虑,每一个任务的处理结果可能部分或全部从第二高速缓存118刷新到存储装置108中,以响应于启用的高速缓存刷新操作。在该实施例中,当分析结果表明,第一处理电路112需要或立即需要任务的处理结果的至少一部分(即,部分或全部),相关的高速缓存刷新决定被作出以启用高速缓存刷新操作。然而,当分析结果表明,第一处理电路112不需要或不是立即需要任务的处理结果的至少一部分(即,部分或全部),相关的高速缓存刷新决定被作出以禁用/跳过高速缓存刷新操作。
假设第一处理电路112为CPU,第二处理电路116为可编程处理器(如GPU)。除了准备在存储装置108中的交换数据,第一处理电路112可以进一步传送程序代码至第二处理电路104。例如,第一处理电路112可执行GPU驱动,以准备将被第二处理电路104执行的程序代码。因此,第二处理电路104可执行由第一处理电路112配置的程序代码,以至少部分基于从第一处理电路112准备并存储于存储装置108的交换数据中获取的数据来执行任务。第一处理电路112可以进一步给高速缓存刷新决定电路105提供程序代码的信息。因此,基于程序代码的信息,高速缓存刷新决定电路105可以很容易地完成步骤312和314。然而,这只是为了说明用途,并不是本发明的限制。任何能够确定由设备端的第二处理电路116执行的任务的处理结果是否被主机端的第一处理电路112所需要或立即需要的方法,都可以被高速缓存刷新决定电路105采用。
高速缓存决定电路105对每一个任务生成一个高速缓存刷新决定至第二处理电路116。关于第二处理电路116处理的每一个任务,第二处理电路116参考相关的高速缓存刷新决定,选择性地执行高速缓存刷新操作,以从第二高速缓存118刷新任务的处理结果的至少一部分,作为由第二处理电路116准备并存储在存储装置108中的交换数据的一部分,第一处理电路112可以从存储装置108中获取由第二处理电路112准备的交换数据。当作出任务的处理结果的至少一部分的高速缓存刷新决定来启用高速缓存刷新操作时(步骤320),高速缓存刷新决定指示第二处理电路116执行高速缓存刷新操作,以存储任务的处理结果的至少一部分至存储装置108,用来作为为第一处理电路112准备的交换数据的一部分(步骤322)。当作出任务的处理结果的至少一部分的高速缓存刷新决定来禁用/跳过高速缓存刷新操作时(步骤320),高速缓存刷新决定指示第二处理电路116避免对第二高速缓存118中的任务的处理结果的至少一部分执行高速缓存刷新操作(步骤324)。
在一个典型的设计,高速缓存刷新决定可能被配置为至少包括第一决定和第二决定,其中的第一决定决定是否需要在第二高速缓存118的一个高速缓存级别(例如,级别1)上执行高速缓存操作;以及第二决定决定是否需要在第二高速缓存118的另一个缓存级别(例如,级别2)上执行高速缓存操作。
图4是根据本发明的一实施例的在主机端和设备端之间的数据交换的时序图。例如,CPU可以设置在主机端,以及GPU设置在设备端。相比于将高速缓存中的“脏”高速缓存数据分别刷新至多个缓冲区的每一个,在一个操作(即整个高速缓存刷新操作)中刷新高速缓存中的所有“脏”高速缓存数据,具有可接受的负载。
此外,相比于将从每个任务获得的数据刷新至共享的存储装置(例如,系统DRAM),所提出的参照高速缓存刷新决定有选择地将从每个任务获得的数据刷新至共享的存储装置(例如,系统DRAM)的操作,可以删除不必要的高速缓存刷新操作(例如,如图4所示的第一次执行序(1st pass)的任务的高速缓存刷新操作)以降低负载。作为本领域的技术人员应可以很容易地理解如图4所示的数据交换过程的详细信息,为简洁起见此处省略进一步的说明。
如图1所示,高速缓存刷新决定电路105可以是不同于第一处理电路112和第二处理电路116任何一个的硬件设备。然而,这只是为了说明的目的,并非用以限制本发明。在第一替代设计中,高速缓存刷新决定电路(用于自动地为每个任务作出高速缓存刷新决定)可以是主机端的第一处理电路的一部分。图5是根据本发明的一实施例的第二计算系统的示意图。计算系统100和计算系统500之间的主要区别是,高速缓存刷新决定电路105是如图512所示的子系统502的第一处理电路512的一部分。例如,第一处理电路(例如,CPU)512可执行GPU驱动,以准备将被第二处理电路(例如,GPU)116执行的程序代码,以及第一处理电路512可进一步确定在程序代码中定义的每个任务的高速缓存刷新决定。因此,第一处理电路512进一步支持为每个任务自动地作出高速缓存刷新决定的高速缓存刷新决定功能,并输出每一个任务的高速缓存刷新决定至第二处理电路116。
在第二替代设计中,高速缓存刷新决定电路(用于自动地为每个任务作出高速缓存刷新决定)可以是设备端的第二处理电路的一部分。图6是根据本发明的一实施例的第三计算系统的示意图。计算系统100和计算系统600之间的主要区别是,高速缓存刷新决定电路105是如图6所示的子系统604的第二处理电路616的一部分。因此,第二处理电路616进一步支持为每个任务自动地作出高速缓存刷新决定的高速缓存刷新决定功能。
在第三替代设计中,每个任务的高速缓存刷新决定可以来自于用户输入。换句话说,每个任务的高速缓存刷新决定可以手动配置。图7是根据本发明的一实施例的第四计算系统的示意图。计算系统100和计算系统700之间的主要差别区别是,如图7所示的子系统704的第二处理电路716从用户界面(未显示)接收用户输入USER_IN,然后从接收的用户输入USER_IN获取高速缓存刷新决定。
本领域的技术人员将容易地观察到,在不脱离本发明的精神和范围内,可以对装置和方法进行多种修改和变动。因此,本发明的范围应以权利要求的范围为准。
Claims (26)
1.一种计算系统,其特征在于,包括:
多个处理电路,至少包括第一处理电路和第二处理电路;
存储装置,至少所述第一处理电路和所述第二处理电路共享所述存储装置;
所述第一处理电路用于执行整个高速缓存刷新操作以准备在所述存储装置中的交换数据,以及所述第二处理电路用于从所述存储装置中获取所述交换数据。
2.如权利要求1所述的计算系统,其特征在于,当满足标准时,所述第一处理电路执行所述整个高速缓存刷新操作。
3.如权利要求2所述的计算系统,其特征在于,所述第一处理电路还用于分配所述存储装置中的至少一个缓冲区,所述交换数据存储在所述至少一个缓冲区中;以及将所述至少一个总的缓冲区大小于阈值相比,以检查是否满足所述标准。
4.如权利要求3所述的计算系统,其特征在于,所述阈值是基于所述第一处理电路的高速缓存大小来设置的。
5.如权利要求3所述的计算系统,其特征在于,当所述至少一个总的缓冲区大小大于所述阈值时,满足所述标准。
6.如权利要求2所述的计算系统,其特征在于,所述第一处理电路还用于分配所述存储装置中的至少一个缓冲区,所述交换数据存储在所述至少一个缓冲区中;当不满足标准时,所述第一处理电路进一步用于对所述至少一个缓冲区的每一个分别执行高速缓存刷新操作。
7.一种计算系统,其特征在于,包括:
多个处理电路,至少包括第一处理电路和第二处理电路;
存储装置,至少所述第一处理电路和所述第二处理电路共享所述存储装置;
其中,关于所述第二处理电路处理的每一任务,所述第二处理电路用于参考高速缓存刷新决定以选择性地执行高速缓存刷新操作,以存储所述任务的处理结果的至少一部分,作为所述存储装置中的交换数据的一部分;以及所述第一处理电路用于从所述存储装置中获取所述交换数据。
8.如权利要求7所述的计算系统,其特征在于,还包括:
高速缓存刷新决定电路,用于自动生成所述高速缓存刷新决定。
9.如权利要求8所述的计算系统,其特征在于,所述高速缓存刷新决定电路是所述第一处理电路的一部分。
10.如权利要求8所述的计算系统,其特征在于,所述高速缓存刷新决定电路是所述第二处理电路的一部分。
11.如权利要求7所述的计算系统,其特征在于,所述高速缓存刷新决定来自于用户输入。
12.如权利要求7所述的计算系统,其特征在于,当所述第一处理电路需要所述任务的所述处理结果的至少一部分时,所述高速缓存刷新决定被作出以指示所述第二处理电路来执行所述高速缓存刷新操作。
13.如权利要求7所述的计算系统,其特征在于,所述高速缓存刷新决定至少包括第一决定和第二决定,所述第一决定决定是否需要在一个高速缓存级别上执行所述高速缓存刷新操作,以及所述第二决定决定是否需要在另一个高速缓存级别上执行所述高速缓存刷新操作。
14.一种数据交换方法,其特征在于,包括:
在第一处理电路的高速缓存中执行整个高速缓存刷新操作,以在所述第一处理电路和第二处理电路共享的存储装置中准备交换数据;
所述第二处理电路从所述存储装置中获取所述交换数据。
15.如权利要求14所述的数据交换方法,其特征在于,还包括:
检查标准;
当满足标准时,执行所述整个高速缓存刷新操作。
16.如权利要求15所述的数据交换方法,其特征在于,还包括
在所述存储装置中分配至少一个缓冲区,所述交换数据存储在所述至少一个缓冲区中;
其中所述检查标准的步骤包括:
通过比较所述至少一个总的缓冲区大小和阈值,检查是否满足所述标准。
17.如权利要求16所述的数据交换方法,其特征在于,包括:
根据所述高速缓存的大小设置所述阈值。
18.如权利要求16所述的数据交换方法,其特征在于,当所述至少一个缓冲区的所述总大小大于所述阈值时,满足所述标准。
19.如权利要求15所述的数据交换方法,其特征在于,还包括:
在所述存储装置中分配至少一个缓冲区,所述交换数据存储在所述至少一个缓冲区中;
其中所述检查标准的步骤包括:
当不满足所述标准时,对所述至少一个缓冲区每一个分别执行所述高速缓存刷新操作。
20.一种数据交换方法,其特征在于,包括:
关于处理的每一个任务,参考高速缓存刷新决定在第二处理电路的高速缓存上选择性地执行高速缓存刷新操作,以存储所述任务的处理结果的至少一部分,来作为存储装置中的交换数据的一部分,第一处理电路和所述第二处理电路共享所述存储装置;
所述第一处理电路从所述存储装置中获取所述交换数据。
21.如权利要求20所述的数据交换方法,其特征在于,还包括:
利用高速缓存刷新决定电路自动地生成所述高速缓存刷新决定。
22.如权利要求21所述的数据交换方法,其特征在于,所述高速缓存刷新决定电路是所述第一处理电路的一部分。
23.如权利要求21所述的数据交换方法,其特征在于,所述高速缓存刷新决定电路是所述第二处理电路的一部分。
24.如权利要求20所述的数据交换方法,其特征在于,还包括:
接收用户输入;
从所述用户输入获取所述高速缓存刷新决定。
25.如权利要求20所述的数据交换方法,其特征在于,当所述第一处理电路需要所述任务的所述处理结果的至少一部分时,所述高速缓存刷新决定被作出以启用所述高速缓存刷新操作。
26.如权利要求20所述的数据交换方法,其特征在于,所述高速缓存刷新决定至少包括第一决定和第二决定,所述第一决定决定是否需要在所述高速缓存的一个高速缓存级别上执行高速缓存刷新操作,以及所述第二决定决定是否需要在所述高速缓存的另一个高速缓存级别上执行所述高速缓存刷新操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462003611P | 2014-05-28 | 2014-05-28 | |
US62/003,611 | 2014-05-28 | ||
PCT/CN2015/080088 WO2015180667A1 (en) | 2014-05-28 | 2015-05-28 | Computing system with reduced data exchange overhead and related data exchange method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105874431A true CN105874431A (zh) | 2016-08-17 |
Family
ID=54698123
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580003539.5A Pending CN105874439A (zh) | 2014-05-28 | 2015-05-28 | 不同计算单元共享内存池的内存池管理方法和相关的计算机可读介质和内存池管理装置 |
CN201580003533.8A Pending CN105874431A (zh) | 2014-05-28 | 2015-05-28 | 减少数据交换负载的计算系统以及相关的数据交换方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580003539.5A Pending CN105874439A (zh) | 2014-05-28 | 2015-05-28 | 不同计算单元共享内存池的内存池管理方法和相关的计算机可读介质和内存池管理装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20160188453A1 (zh) |
CN (2) | CN105874439A (zh) |
WO (2) | WO2015180668A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9563557B2 (en) * | 2014-12-23 | 2017-02-07 | Intel Corporation | Instruction and logic for flush-on-fail operation |
US10848585B2 (en) | 2018-12-03 | 2020-11-24 | Walmart Apollo, Llc | Using a sharded distributed cache as a pipeline integration buffer |
CN112181682B (zh) * | 2020-09-23 | 2023-03-31 | 上海爱数信息技术股份有限公司 | 一种多任务并发场景下的数据传输控制系统及其方法 |
KR20220091193A (ko) * | 2020-12-23 | 2022-06-30 | 현대자동차주식회사 | Vcrm 전송 데이터 최적화 방법 및 그를 위한 장치 |
CN113806244B (zh) * | 2021-11-18 | 2022-02-08 | 深圳比特微电子科技有限公司 | 用于片上系统的内存管理方法和基于片上系统的设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087614A1 (en) * | 2000-08-31 | 2002-07-04 | Andrej Kocev | Programmable tuning for flow control and support for CPU hot plug |
CN1605065A (zh) * | 2001-12-14 | 2005-04-06 | 皇家飞利浦电子股份有限公司 | 数据处理系统 |
US20060195662A1 (en) * | 2005-02-28 | 2006-08-31 | Honeywell International, Inc. | Method for deterministic cache partitioning |
CN101095113A (zh) * | 2004-12-29 | 2007-12-26 | 英特尔公司 | 多处理器环境中基于事务的共享数据操作 |
US7631152B1 (en) * | 2005-11-28 | 2009-12-08 | Nvidia Corporation | Determining memory flush states for selective heterogeneous memory flushes |
CN103109274A (zh) * | 2010-09-20 | 2013-05-15 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6058460A (en) * | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
DE19832060C2 (de) * | 1998-07-16 | 2000-07-06 | Siemens Ag | Doppelbare Prozessoreinrichtung |
US6542920B1 (en) * | 1999-09-24 | 2003-04-01 | Sun Microsystems, Inc. | Mechanism for implementing multiple thread pools in a computer system to optimize system performance |
US6954768B2 (en) * | 2002-08-29 | 2005-10-11 | International Business Machines Corporation | Method, system, and article of manufacture for managing storage pools |
CN1327348C (zh) * | 2005-09-16 | 2007-07-18 | 浙江大学 | 解决频繁分配释放同等大小内存的方法 |
CN100486178C (zh) * | 2006-12-06 | 2009-05-06 | 中国科学院计算技术研究所 | 一种远程内存共享系统及其实现方法 |
CN100487660C (zh) * | 2007-05-28 | 2009-05-13 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理系统及方法 |
CN101197006B (zh) * | 2007-12-19 | 2010-05-19 | 东信和平智能卡股份有限公司 | 智能卡及数据写入方法 |
EP2075698A1 (en) * | 2007-12-28 | 2009-07-01 | Software AG | Method and system for allocating memory in a broker system |
US8051243B2 (en) * | 2008-04-30 | 2011-11-01 | Hitachi, Ltd. | Free space utilization in tiered storage systems |
CN101710309B (zh) * | 2009-12-15 | 2011-05-04 | 北京时代民芯科技有限公司 | 一种基于海量数据传输的dma控制器 |
CN101799773B (zh) * | 2010-04-07 | 2013-04-17 | 福州福昕软件开发有限公司 | 并行计算的内存访问方法 |
KR20120097136A (ko) * | 2011-02-24 | 2012-09-03 | 삼성전자주식회사 | 가상화 환경에서의 메모리 풀 관리 |
-
2015
- 2015-05-28 WO PCT/CN2015/080092 patent/WO2015180668A1/en active Application Filing
- 2015-05-28 US US14/902,596 patent/US20160188453A1/en not_active Abandoned
- 2015-05-28 CN CN201580003539.5A patent/CN105874439A/zh active Pending
- 2015-05-28 US US14/902,582 patent/US20160179668A1/en not_active Abandoned
- 2015-05-28 CN CN201580003533.8A patent/CN105874431A/zh active Pending
- 2015-05-28 WO PCT/CN2015/080088 patent/WO2015180667A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087614A1 (en) * | 2000-08-31 | 2002-07-04 | Andrej Kocev | Programmable tuning for flow control and support for CPU hot plug |
CN1605065A (zh) * | 2001-12-14 | 2005-04-06 | 皇家飞利浦电子股份有限公司 | 数据处理系统 |
CN101095113A (zh) * | 2004-12-29 | 2007-12-26 | 英特尔公司 | 多处理器环境中基于事务的共享数据操作 |
US20060195662A1 (en) * | 2005-02-28 | 2006-08-31 | Honeywell International, Inc. | Method for deterministic cache partitioning |
US7631152B1 (en) * | 2005-11-28 | 2009-12-08 | Nvidia Corporation | Determining memory flush states for selective heterogeneous memory flushes |
CN103109274A (zh) * | 2010-09-20 | 2013-05-15 | 高通股份有限公司 | 多处理器计算平台中的处理器间通信技术 |
Also Published As
Publication number | Publication date |
---|---|
WO2015180667A1 (en) | 2015-12-03 |
CN105874439A (zh) | 2016-08-17 |
US20160188453A1 (en) | 2016-06-30 |
US20160179668A1 (en) | 2016-06-23 |
WO2015180668A1 (en) | 2015-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9910605B2 (en) | Page migration in a hybrid memory device | |
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
CN105874431A (zh) | 减少数据交换负载的计算系统以及相关的数据交换方法 | |
WO2016082793A1 (zh) | 高速缓存cache存储器系统及访问缓存行cache line的方法 | |
CN110427284A (zh) | 数据处理方法、分布式系统、计算机系统和介质 | |
CN103348333B (zh) | 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置 | |
CN103927277A (zh) | Cpu和gpu共享片上高速缓存的方法及装置 | |
CN113821332B (zh) | 自动机器学习系统效能调优方法、装置、设备及介质 | |
CN108139931A (zh) | 通过重映射同步来加速任务子图 | |
US20210373799A1 (en) | Method for storing data and method for reading data | |
US11068418B2 (en) | Determining memory access categories for tasks coded in a computer program | |
CN109213697A (zh) | 智能存储器数据存储或加载方法和装置 | |
US8560803B2 (en) | Dynamic cache queue allocation based on destination availability | |
US11373062B1 (en) | Model training method, data processing method, electronic device, and program product | |
CN107562645B (zh) | 一种内存页管理方法及计算设备 | |
CN109491934B (zh) | 一种集成计算功能的存储管理系统控制方法 | |
CN109582600A (zh) | 一种数据处理方法及装置 | |
US10204060B2 (en) | Determining memory access categories to use to assign tasks to processor cores to execute | |
US11635904B2 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
EP4209914A1 (en) | Reconfigurable cache architecture and methods for cache coherency | |
KR20170041816A (ko) | 이종 프로세서 시스템 내 캐시들 간에 데이터 이동 | |
US20180004672A1 (en) | Cache unit and processor | |
JP7265618B2 (ja) | 深層学習トレーニングタスクに向けたプロセッサメモリを最適化するための方法及び装置 | |
EP4022446B1 (en) | Memory sharing | |
US20170255554A1 (en) | Cache memory and operation method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160817 |
|
WD01 | Invention patent application deemed withdrawn after publication |