WO2015180667A1 - Computing system with reduced data exchange overhead and related data exchange method thereof - Google Patents

Computing system with reduced data exchange overhead and related data exchange method thereof Download PDF

Info

Publication number
WO2015180667A1
WO2015180667A1 PCT/CN2015/080088 CN2015080088W WO2015180667A1 WO 2015180667 A1 WO2015180667 A1 WO 2015180667A1 CN 2015080088 W CN2015080088 W CN 2015080088W WO 2015180667 A1 WO2015180667 A1 WO 2015180667A1
Authority
WO
WIPO (PCT)
Prior art keywords
processing circuit
cache
cache flush
decision
storage device
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.)
Ceased
Application number
PCT/CN2015/080088
Other languages
French (fr)
Inventor
Yu-Cheng CHU
Shen-Kai Chang
Yong-ming CHEN
Chi-Cheng Ju
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Priority to CN201580003533.8A priority Critical patent/CN105874431A/en
Priority to US14/902,582 priority patent/US20160179668A1/en
Publication of WO2015180667A1 publication Critical patent/WO2015180667A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Definitions

  • the disclosed embodiments of the present invention relate to a data exchange scheme, and more particularly, to a computing system (e.g., a heterogeneous computing system or a homogeneous computing system) with reduced data exchange overhead and a related data exchange method thereof.
  • a computing system e.g., a heterogeneous computing system or a homogeneous computing system
  • the heterogeneous computing system may include at least one first processor and at least one second processor, where each first processor may have first processor architecture (e.g., first instruction set architecture) , and each second processor may have second processor architecture (e.g., second instruction set architecture) that is different from the first processor architecture.
  • first processor may have first processor architecture (e.g., first instruction set architecture)
  • second processor e.g., second instruction set architecture
  • first processor and the second processor implemented in the heterogeneous computing system have different computing power due to different processor architecture.
  • one of the first processor and the second processor may be used to serve as a main processor, and the other of the first processor and the second processor may be used to serve as an auxiliary processor.
  • the data exchange is needed between the first processor and the second processor, which results in large communication overhead inevitably.
  • a computing system e.g., a heterogeneous computing system or a homogeneous computing system
  • reduced data exchange overhead and a related data exchange method thereof are proposed to solve the above-mentioned problem.
  • an exemplary computing system includes a plurality of processing circuits and a storage device.
  • the processing circuits have at least a first processing circuit and a second processing circuit.
  • the storage device is shared between at least the first processing circuit and the second processing circuit.
  • the first processing circuit is arranged to perform a whole cache flush operation to prepare exchange data in the storage device.
  • the second processing circuit is arranged to get the exchange data from the storage device.
  • an exemplary computing system includes a plurality of processing circuits and a storage device.
  • the processing circuits have at least a first processing circuit and a second processing circuit.
  • the storage device is shared between at least the first processing circuit and the second processing circuit.
  • Concerning each task processed by the second processing circuit the second processing circuit is arranged to refer to a cache flush decision to selectively perform a cache flush operation for storing at least a portion of a processing result of the task as part of exchange data in the storage device.
  • the first processing circuit is arranged to get the exchange data from the storage device.
  • an exemplary data exchange method includes: performing a whole cache flush operation upon a cache of a first processing circuit to prepare exchange data in a storage device shared between the first processing circuit and a second processing circuit; and getting the exchange data from the storage device for the second processing circuit.
  • an exemplary data exchange method includes: concerning each task processed, referring to a cache flush decision to selectively perform a cache flush operation upon a cache of a second processing circuit for storing at least a portion of a processing result of the task as part of exchange data in a storage device shared between a first processing circuit and the second processing circuit; and getting the exchange data from the storage device for the first processing circuit.
  • FIG. 1 is a diagram illustrating a first computing system according to an embodiment of the present invention.
  • FIG. 2 is a flowchart illustrating a data exchange method employed by a first processing circuit on a host side according to an embodiment of the present invention.
  • FIG. 3 is a flowchart illustrating a data exchange method employed by a second processing circuit on a device side according to an embodiment of the present invention.
  • FIG. 4 is a sequence diagram illustrating data exchange between a host side and a device side according to an embodiment of the present invention.
  • FIG. 5 is a diagram illustrating a second computing system according to an embodiment of the present invention.
  • FIG. 6 is a diagram illustrating a third computing system according to an embodiment of the present invention.
  • FIG. 7 is a diagram illustrating a fourth computing system according to an embodiment of the present invention.
  • FIG. 1 is a diagram illustrating a first computing system according to an embodiment of the present invention.
  • the computing system 100 includes a plurality of subsystems 102, 104, a cache flush decision circuit 105, a bus 106, and a storage device 108.
  • the subsystem 102 includes a first processing circuit 112 and a first cache 114.
  • the subsystem 104 includes a second processing circuit 116 and a second cache 118.
  • the subsystem 102 may be a host subsystem, and the subsystem 104 may be a device subsystem.
  • the computing system 100 may be a heterogeneous computing system or a homogeneous computing system, depending upon actual design consideration.
  • the first processing circuit 112 may include one or more processors (or processor cores) sharing the same cache (i.e., first cache 114)
  • the second processing circuit 112 may include one or more processors (or processor cores) sharing the same cache (i.e., second cache 118)
  • the first processing circuit 112 may be implemented using a central processing unit (CPU)
  • the second processing circuit 116 may be implemented using a graphics processing unit (GPU) .
  • the first processing circuit 112 on the host side may be implemented using a CPU, a GPU, a digital signal processor (DSP) or any other processor
  • the second processing circuit 116 on the device side may be implemented using a CPU, a GPU, a DSP, a hardware circuit or any other processor.
  • the first processing circuit 112 and the second processing circuit 116 may be implemented using processors of the same type or processors of different types. To put it simply, the present invention has no limitations on the actual implementation of the first processing circuit 112 and the second processing circuit 116. Any computing system or electronic device (e.g., mobile phone, tablet, wearable device, personal computer, notebook computer or any other device with multiple processing circuits) using the proposed data exchange scheme falls within the scope of the present invention.
  • the storage device 108 may be an external storage device, such as a dynamic random access memory (DRAM) , and may be shared between the first processing circuit 112 and the second processing circuit 116. Hence, the storage device 108 may serve as a global buffer for storing read/write data of the first processing circuit 112 and the second processing circuit 116.
  • Each of the first cache 114 and the second cache 118 may be an internal storage device, such as a statistic random access memory (SRAM) .
  • the first cache 114 may serve as a dedicated local buffer for caching read/write data of the first processing circuit 112
  • the second cache 118 may serve as a dedicated local buffer for caching read/write data of the second processing circuit 118.
  • the storage device 108 is an external storage device shared between the first processing circuit 112 and the second processing circuit 116.
  • the first processing circuit 112 can access the storage device 108 via the bus 106
  • the second processing circuit 116 can also access the storage device 108 via the bus 106.
  • the first processing circuit 112 may prepare exchange data in the storage device 108
  • the second processing circuit 118 may get the exchange data from the storage device 108 for further processing.
  • each of the first cache 114 and the second cache 118 may employ a write-back policy. In accordance with the write-back policy, write is done only to a cache initially, and the write to the backing storage is postponed until the cache contains data that is about to be modified/replaced by new data.
  • the first processing circuit 112 before the second processing circuit 116 on the device side reads data updated by the first processing circuit 112 on the host side from the storage device (e.g., DRAM) 108, the first processing circuit 112 must flush (i.e., write back) the latest updated contents in “dirty” cache lines from the first cache 114 to the storage device (e.g., DRAM) 108. In this way, the second processing circuit 116 can get the latest updated contents from the storage device 108 after the first cache 114 is properly flushed.
  • the storage device e.g., DRAM
  • the second processing circuit 112 must flush (i.e., write back) the latest updated contents in “dirty” cache lines from the second cache 118 to the storage device (e.g., DRAM) 108. In this way, the first processing circuit 112 can get the latest updated contents from the storage device 108 after the second cache 118 is properly flushed.
  • the first processing circuit 112 can prepare the exchange data in the storage device 108 with reduced cache flush overhead. After the exchange data in the storage device 108 is processed by task (s) running on the second processing circuit 116, a processing result may be flushed from the second cache 118 into the storage device 108, and the first processing circuit 112 can get the processing result from the storage device 108. Further, based on the proposed data exchange scheme, the cache flush decision circuit 105 controls the cache flush operation performed by the second processing circuit 116 for reducing the cache flush overhead. Further details of the proposed data exchange scheme on the host side and the device side are described as below.
  • FIG. 2 is a flowchart illustrating a data exchange method employed by a first processing circuit on a host side according to an embodiment of the present invention. Provided that the result is substantially the same, the steps are not required to be executed in the exact order shown in FIG. 2.
  • the exemplary data exchange method may be employed by the first processing circuit (e.g., CPU) 112 shown in FIG. 1.
  • the first processing circuit 112 may allocate buffers in the storage device 108.
  • application (s) running on the first processing circuit 112 may allocate buffer (s) for storing application data (e.g., attribute data) , where data in the allocated buffer (s) may be read by task (s) running on the second processing circuit 116 for further processing.
  • application data e.g., attribute data
  • the first processing circuit 112 collects buffers which should be flushed out.
  • the buffers which should be flushed out may include buffers allocated in the storage device 108 that will be used by the second processing circuit (e.g., GPU) 116 on the device side.
  • the first processing circuit 112 determines the total size of buffers that should be flushed out.
  • the first processing circuit 112 determines a threshold based on the size of the first cache 114 (i.e., the cache size of the first processing circuit 112) .
  • the threshold may be set by a value that is equal to the size of the first cache 114, or may be set by a value that is two times as large as the size of the first cache 114.
  • the first processing circuit 112 checks if a predetermined criterion is met by comparing the total size of buffers that should be flushed out with the threshold determined based on the cache size.
  • the predetermined criterion e.g., total buffer size > threshold
  • the predetermined criterion controls the enablement of a whole cache flush operation applied to the first cache 114.
  • the first processing circuit 112 decides that the predetermined criterion is met.
  • the first processing circuit 112 decides that the predetermined criterion is not met.
  • steps 202-208 may be performed by the second processing circuit 116 or any other device, which is not meant to be a limitation of the present invention.
  • the first cache 114 is a small-sized buffer, such as a 512KB cache.
  • the first cache 114 may include “dirty” cached data that should be flushed to a buffer allocated in the storage device 108 for use by the second processing circuit 116, and may further include “dirty” cached data that needs not be used by the second processing circuit 116.
  • Performing a cache flush operation for one buffer used by both of the first processing circuit 112 and the second processing circuit 116 may need to check each cache line in the first cache 114 to find out cached data that should be flushed to the buffer allocated in the storage device 108.
  • the first processing circuit 112 performs one cache flush operation for each buffer, there will be heavy cache flush overhead on the host side.
  • the predetermined criterion e.g., total buffer size > threshold
  • the first processing circuit 112 performs a whole cache flush operation upon the first cache 114 to prepare exchange data in the storage device 108 (Step 210) .
  • the exchange data prepared in the specific buffers allocated in the storage device 108 would include latest updated contents flushed from the first cache 114.
  • the predetermined criterion e.g., total buffer size > threshold
  • the predetermined criterion e.g., total buffer size > threshold
  • the first processing circuit 112 performs a cache flush operation for each buffer (which is allocated in the storage device 108 and shared by the first processing circuit 112 and the second processing circuit 116) separately (Step 212) .
  • the second processing circuit 116 gets the exchange data prepared by the first processing circuit 112 from the storage device 108. In addition, the second processing circuit 116 performs one or more tasks to process the exchange data prepared by the first processing circuit 112, thereby generating a processing result of each task. If one cache flush operation is performed for the processing result of each task, there will be unnecessary cache flush operations on the device side since the first processing circuit 112 may not need or immediately need processing results of certain tasks. For example, when a processing result of a task includes intermediate data rather than final data needed by the first processing circuit 112, performing a cache flushing operation for flushing the intermediate data from the second cache 118 to the storage device 108 is unnecessary, which increases the cache flush overhead on the device side.
  • the present invention therefore proposes selectively performing a cache flushing operation for a processing result of each task performed by the second processing circuit 116 to effectively reduce the cache flush overhead on the device side.
  • a cache flushing operation for a processing result of one task may be performed, while a cache flushing operation for a processing result of a different task may be skipped.
  • FIG. 3 is a flowchart illustrating a data exchange method employed by a second processing circuit on a device side according to an embodiment of the present invention. Provided that the result is substantially the same, the steps are not required to be executed in the exact order shown in FIG. 3.
  • the exemplary data exchange method may include a cache flush decision making procedure 301 and a cache flush control procedure 302, where the cache flush decision making procedure 301 may be performed by the cache flush decision circuit 105 shown in FIG. 1, and the cache flush control procedure 302 may be performed by the second processing circuit (e.g., GPU) 116 shown in FIG. 1.
  • the second processing circuit e.g., GPU
  • the cache flush decision circuit 105 is used to generate a cache flush decision for each task (which is performed by the second processing circuit 116 based at least partly on data derived from the exchange data prepared by the first processing circuit 112 and stored in the storage device 108) automatically.
  • the cache flush decision circuit 105 collects tasks to be performed by the second processing circuit 116. Then, the following steps may be triggered.
  • the cache flush decision circuit 105 analyzes the meaning of a processing result of each task.
  • the cache flush decision circuit 105 makes one cache flush decision for at least a portion (i.e., part or all) of the processing result of each task based on an analyzing result obtained in step 314.
  • the processing result of each task may be partially or fully flushed from the second cache 118 to the storage device 108 in response to an enabled cache flush operation.
  • the analyzing result indicates that at least a portion (i.e., part or all) of a processing result of a task is needed or immediately needed by the first processing circuit 112
  • an associated cache flush decision is made to enable a cache flush operation.
  • the analyzing result indicates that at least a portion (i.e., part or all) of a processing result of a task is not needed or immediately needed by the first processing circuit 112
  • an associated cache flush decision is made to disable/skip a cache flush operation.
  • the first processing circuit 112 is a CPU
  • the second processing circuit 116 is a programmable processor such as a GPU.
  • the first processing circuit 112 may further transmit a program code to the second processing circuit 104.
  • the first processing circuit 112 may execute a GPU driver to prepare the program code to be executed by the second processing circuit 104.
  • the second processing circuit 104 may execute the program code configured by the first processing circuit 112 to perform tasks based at least partly on data derived from the exchange data prepared by the first processing circuit 112 and stored in the storage device 108.
  • the first processing circuit 112 may further provide information of the program code to the cache flush decision circuit 105.
  • the cache flush decision circuit 105 can easily accomplish steps 312 and 314 on the basis of the information of the program code.
  • this is for illustrative purposes only, and is not meant to be a limitation of the present invention. Any means capable of determining whether a processing result of a task performed by the second processing circuit 116 on the device side is needed or immediately needed by the first processing circuit 112 on the host side may be employed by the cache flush decision circuit 105.
  • the cache flush decision circuit 105 generates one cache flush decision for each task to the second processing circuit 116. Concerning each task processed by the second processing circuit 116, the second processing circuit 116 therefore refers to an associated cache flush decision to selectively perform a cache flush operation for flushing at least a portion of a processing result of the task from the second cache 118 to act as part of exchange data prepared by the second processing circuit 116 and stored in the storage device 108, where the first processing circuit 112 can get the exchange data prepared by the second processing circuit 112 from the storage device 108.
  • the second processing circuit 116 is instructed by the cache flush decision to perform the cache flush operation to store at least the portion of the processing result of the task into the storage device 108 to serve as part of the exchange data prepared for the first processing circuit 112 (step 322) .
  • the second processing circuit 116 is instructed by the cache flush decision to avoid performing the cache flush operation upon at least the portion of the processing result of the task in the second cache 118 (step 324) .
  • the cache flush decision may be configured to include at least a first decision and a second decision, where the first decision decides whether the cache flush operation is needed to be performed upon one cache level (e.g., level 1) of the second cache 118, and the second decision decides whether the cache flush operation is needed to be performed upon another cache level (e.g., level 2) of the second cache 118.
  • first decision decides whether the cache flush operation is needed to be performed upon one cache level (e.g., level 1) of the second cache 118
  • the second decision decides whether the cache flush operation is needed to be performed upon another cache level (e.g., level 2) of the second cache 118.
  • FIG. 4 is a sequence diagram illustrating data exchange between a host side and a device side according to an embodiment of the present invention.
  • a CPU may be located on the host side
  • a GPU may be located on the device side.
  • flushing out all “dirty” cached data in a cache in one operation i.e., a whole cache flush operation
  • the proposed operation of referring to a cache flush decision to selectively flush out data derived from each task to the shared storage device can remove unnecessary cache flush operations (e.g., a cache flush operation for a task of the 1 st pass shown in FIG. 4) for reducing the overhead.
  • unnecessary cache flush operations e.g., a cache flush operation for a task of the 1 st pass shown in FIG. 4
  • the cache flush decision circuit 105 may be a hardware device different from any of the first processing circuit 112 and the second processing circuit 116. However, this is for illustrative purposes only, and is not meant to be a limitation of the present invention.
  • a cache flush decision circuit (which is used to make a cache flush decision for each task automatically) may be part of a first processing circuit on a host side.
  • FIG. 5 is a diagram illustrating a second computing system according to an embodiment of the present invention. The major difference between the computing systems 100 and 500 is that the cache flush decision circuit 105 is incorporated into the first processing circuit 512 of the subsystem 502 shown in FIG. 5.
  • the first processing circuit (e.g., CPU) 512 may execute a GPU driver to prepare the program code to be executed by the second processing circuit (e.g., GPU) 116 and further determine a cache flush decision for each task defined in the program code.
  • the first processing circuit 512 further supports the cache flush decision function for making a cache flush decision for each task automatically, and outputs the cache flush decision of each task to the second processing circuit 116.
  • FIG. 6 is a diagram illustrating a third computing system according to an embodiment of the present invention.
  • the major difference between the computing systems 100 and 600 is that the cache flush decision circuit 105 is incorporated into the second processing circuit 616 of the subsystem 604 shown in FIG. 6.
  • the second processing circuit 616 further supports the cache flush decision function for making a cache flush decision for each task automatically.
  • FIG. 7 is a diagram illustrating a fourth computing system according to an embodiment of the present invention. The major difference between the computing systems 100 and 700 is that the cache flush decision circuit 105 is omitted, and the second processing circuit 716 of the subsystem 704 shown in FIG. receives a user input USER_IN from a user interface (not shown) , and then derives a cache flush decision from the received user input USER_IN.

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

A computing system includes a plurality of processing circuits and a storage device. The processing circuits have at least a first processing circuit and a second processing circuit. The storage device is shared between at least the first processing circuit and the second processing circuit. The first processing circuit performs a whole cache flush operation to prepare exchange data in the storage device. The second processing circuit gets the exchange data from the storage device.

Description

COMPUTING SYSTEM WITH REDUCED DATA EXCHANGE OVERHEAD AND RELATED DATA EXCHANGE METHOD THEREOF 
CROSS REFERENCE TO RELATED APPLICATIONS
This application claims the benefit of U.S. provisional application No. 62/003, 611, filed on 05/28/2014 and incorporated herein by reference.
TECHNICAL FIELD
The disclosed embodiments of the present invention relate to a data exchange scheme, and more particularly, to a computing system (e.g., a heterogeneous computing system or a homogeneous computing system) with reduced data exchange overhead and a related data exchange method thereof.
BACKGROUND
A multi-processor system becomes popular nowadays due to advance of the semiconductor process. Regarding a heterogeneous computing system, it has processors that are not identical. For example, the heterogeneous computing system may include at least one first processor and at least one second processor, where each first processor may have first processor architecture (e.g., first instruction set architecture) , and each second processor may have second processor architecture (e.g., second instruction set architecture) that is different from the first processor architecture. Hence, if the same task is running on the first processor and the second processor, instructions executed by the first processor would be different from that executed by the second processor. In general, the first processor and the second processor implemented in the heterogeneous computing system have different computing power due to different processor architecture. For example, one of the first processor and the second processor may be used to serve as a main processor, and the  other of the first processor and the second processor may be used to serve as an auxiliary processor. The data exchange is needed between the first processor and the second processor, which results in large communication overhead inevitably.
Thus, there is a need for an innovative data exchange scheme which is capable of reducing the data exchange overhead between different processing circuits (e.g., different processors) in a computing system.
SUMMARY
In accordance with exemplary embodiments of the present invention, a computing system (e.g., a heterogeneous computing system or a homogeneous computing system) with reduced data exchange overhead and a related data exchange method thereof are proposed to solve the above-mentioned problem.
According to a first aspect of the present invention, an exemplary computing system is disclosed. The exemplary computing system includes a plurality of processing circuits and a storage device. The processing circuits have at least a first processing circuit and a second processing circuit. The storage device is shared between at least the first processing circuit and the second processing circuit. The first processing circuit is arranged to perform a whole cache flush operation to prepare exchange data in the storage device. The second processing circuit is arranged to get the exchange data from the storage device.
According to a second aspect of the present invention, an exemplary computing system is disclosed. The exemplary computing system includes a plurality of processing circuits and a storage device. The processing circuits have at least a first processing circuit and a second processing circuit. The storage device is shared between at least the first processing circuit and the second processing circuit. Concerning each task processed by the second processing circuit, the second processing circuit is arranged to refer to a cache flush decision to selectively perform a cache flush operation for storing at least a portion of a processing result of the task as part of exchange data in the storage device. The first processing circuit is arranged to get the exchange data from the storage device.
According to a third aspect of the present invention, an exemplary data exchange method is disclosed. The exemplary data exchange method includes: performing a  whole cache flush operation upon a cache of a first processing circuit to prepare exchange data in a storage device shared between the first processing circuit and a second processing circuit; and getting the exchange data from the storage device for the second processing circuit.
According to a fourth aspect of the present invention, an exemplary data exchange method is disclosed. The exemplary data exchange method includes: concerning each task processed, referring to a cache flush decision to selectively perform a cache flush operation upon a cache of a second processing circuit for storing at least a portion of a processing result of the task as part of exchange data in a storage device shared between a first processing circuit and the second processing circuit; and getting the exchange data from the storage device for the first processing circuit.
These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
BRIEF DESCRIPTION OF DRAWINGS
FIG. 1 is a diagram illustrating a first computing system according to an embodiment of the present invention.
FIG. 2 is a flowchart illustrating a data exchange method employed by a first processing circuit on a host side according to an embodiment of the present invention.
FIG. 3 is a flowchart illustrating a data exchange method employed by a second processing circuit on a device side according to an embodiment of the present invention.
FIG. 4 is a sequence diagram illustrating data exchange between a host side and a device side according to an embodiment of the present invention.
FIG. 5 is a diagram illustrating a second computing system according to an embodiment of the present invention.
FIG. 6 is a diagram illustrating a third computing system according to an embodiment of the present invention.
FIG. 7 is a diagram illustrating a fourth computing system according to an  embodiment of the present invention.
DETAILED DESCRIPTION
Certain terms are used throughout the description and following claims to refer to particular components. As one skilled in the art will appreciate, manufacturers may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following description and in the claims, the terms "include" and "comprise" are used in an open-ended fashion, and thus should be interpreted to mean "include, but not limited to... ". Also, the term "couple" is intended to mean either an indirect or direct electrical connection. Accordingly, if one device is coupled to another device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
FIG. 1 is a diagram illustrating a first computing system according to an embodiment of the present invention. The computing system 100 includes a plurality of  subsystems  102, 104, a cache flush decision circuit 105, a bus 106, and a storage device 108. The subsystem 102 includes a first processing circuit 112 and a first cache 114. The subsystem 104 includes a second processing circuit 116 and a second cache 118. In this embodiment, the subsystem 102 may be a host subsystem, and the subsystem 104 may be a device subsystem. In addition, the computing system 100 may be a heterogeneous computing system or a homogeneous computing system, depending upon actual design consideration.
In one exemplary design, the first processing circuit 112 may include one or more processors (or processor cores) sharing the same cache (i.e., first cache 114) , and the second processing circuit 112 may include one or more processors (or processor cores) sharing the same cache (i.e., second cache 118) . For one example, the first processing circuit 112 may be implemented using a central processing unit (CPU) , and the second processing circuit 116 may be implemented using a graphics processing unit (GPU) . For another example, the first processing circuit 112 on the host side may be implemented using a CPU, a GPU, a digital signal processor (DSP) or any other processor, and the second processing circuit 116 on the device side may be implemented using a CPU, a GPU, a DSP, a hardware circuit or any other  processor. It should be noted that the first processing circuit 112 and the second processing circuit 116 may be implemented using processors of the same type or processors of different types. To put it simply, the present invention has no limitations on the actual implementation of the first processing circuit 112 and the second processing circuit 116. Any computing system or electronic device (e.g., mobile phone, tablet, wearable device, personal computer, notebook computer or any other device with multiple processing circuits) using the proposed data exchange scheme falls within the scope of the present invention.
The storage device 108 may be an external storage device, such as a dynamic random access memory (DRAM) , and may be shared between the first processing circuit 112 and the second processing circuit 116. Hence, the storage device 108 may serve as a global buffer for storing read/write data of the first processing circuit 112 and the second processing circuit 116. Each of the first cache 114 and the second cache 118 may be an internal storage device, such as a statistic random access memory (SRAM) . Hence, the first cache 114 may serve as a dedicated local buffer for caching read/write data of the first processing circuit 112, and the second cache 118 may serve as a dedicated local buffer for caching read/write data of the second processing circuit 118.
As mentioned above, the storage device 108 is an external storage device shared between the first processing circuit 112 and the second processing circuit 116. Hence, the first processing circuit 112 can access the storage device 108 via the bus 106, and the second processing circuit 116 can also access the storage device 108 via the bus 106. The first processing circuit 112 may prepare exchange data in the storage device 108, and the second processing circuit 118 may get the exchange data from the storage device 108 for further processing. In this embodiment, each of the first cache 114 and the second cache 118 may employ a write-back policy. In accordance with the write-back policy, write is done only to a cache initially, and the write to the backing storage is postponed until the cache contains data that is about to be modified/replaced by new data. Hence, before the second processing circuit 116 on the device side reads data updated by the first processing circuit 112 on the host side from the storage device (e.g., DRAM) 108, the first processing circuit 112 must flush (i.e., write back) the latest updated contents in “dirty” cache lines from the first cache 114 to the storage device (e.g., DRAM) 108. In this way, the second processing circuit 116 can get the latest updated contents from the storage device 108 after the first  cache 114 is properly flushed.
Similarly, before the first processing circuit 112 on the host side reads requested data updated by the second processing circuit 116 on the device side from the storage device (e.g., DRAM) 108, the second processing circuit 112 must flush (i.e., write back) the latest updated contents in “dirty” cache lines from the second cache 118 to the storage device (e.g., DRAM) 108. In this way, the first processing circuit 112 can get the latest updated contents from the storage device 108 after the second cache 118 is properly flushed.
Based on the proposed data exchange scheme, the first processing circuit 112 can prepare the exchange data in the storage device 108 with reduced cache flush overhead. After the exchange data in the storage device 108 is processed by task (s) running on the second processing circuit 116, a processing result may be flushed from the second cache 118 into the storage device 108, and the first processing circuit 112 can get the processing result from the storage device 108. Further, based on the proposed data exchange scheme, the cache flush decision circuit 105 controls the cache flush operation performed by the second processing circuit 116 for reducing the cache flush overhead. Further details of the proposed data exchange scheme on the host side and the device side are described as below.
FIG. 2 is a flowchart illustrating a data exchange method employed by a first processing circuit on a host side according to an embodiment of the present invention. Provided that the result is substantially the same, the steps are not required to be executed in the exact order shown in FIG. 2. The exemplary data exchange method may be employed by the first processing circuit (e.g., CPU) 112 shown in FIG. 1. The first processing circuit 112 may allocate buffers in the storage device 108. For example, application (s) running on the first processing circuit 112 may allocate buffer (s) for storing application data (e.g., attribute data) , where data in the allocated buffer (s) may be read by task (s) running on the second processing circuit 116 for further processing. In step 202, the first processing circuit 112 collects buffers which should be flushed out. For example, the buffers which should be flushed out may include buffers allocated in the storage device 108 that will be used by the second processing circuit (e.g., GPU) 116 on the device side. In step 204, the first processing circuit 112 determines the total size of buffers that should be flushed out. In step 206, the first processing circuit 112 determines a threshold based on the size of the first cache 114 (i.e., the cache size of the first processing circuit 112) . By way of example,  but not limitation, the threshold may be set by a value that is equal to the size of the first cache 114, or may be set by a value that is two times as large as the size of the first cache 114.
In step 208, the first processing circuit 112 checks if a predetermined criterion is met by comparing the total size of buffers that should be flushed out with the threshold determined based on the cache size. In this embodiment, the predetermined criterion (e.g., total buffer size > threshold) controls the enablement of a whole cache flush operation applied to the first cache 114. When the total size of buffers that should be flushed out is larger than the threshold, the first processing circuit 112 decides that the predetermined criterion is met. However, when the total size of buffers that should be flushed out is not larger than the threshold, the first processing circuit 112 decides that the predetermined criterion is not met. The cache flush operation performed by the first processing circuit 112 is controlled based on the checking result of the predetermined criterion. In some other embodiments, steps 202-208 may be performed by the second processing circuit 116 or any other device, which is not meant to be a limitation of the present invention.
In general, the first cache 114 is a small-sized buffer, such as a 512KB cache. The first cache 114 may include “dirty” cached data that should be flushed to a buffer allocated in the storage device 108 for use by the second processing circuit 116, and may further include “dirty” cached data that needs not be used by the second processing circuit 116. Performing a cache flush operation for one buffer used by both of the first processing circuit 112 and the second processing circuit 116 may need to check each cache line in the first cache 114 to find out cached data that should be flushed to the buffer allocated in the storage device 108. When the first processing circuit 112 performs one cache flush operation for each buffer, there will be heavy cache flush overhead on the host side. When the predetermined criterion (e.g., total buffer size > threshold) is met, this means flushing the whole first cache 114 in one operation to write back all “dirty” cached data in the first cache 114, including “dirty” cached data that should be flushed to buffers allocated in the storage device 108 for use by the second processing circuit 116 and other “dirty” cached data that needs not be used by the second processing circuit 116, can effectively reduce the cache flush overload when compared to flushing each of the allocated buffers separately. Hence, when the predetermined criterion (e.g., total buffer size > threshold) is met, the first processing circuit 112 performs a whole cache flush operation upon the first cache  114 to prepare exchange data in the storage device 108 (Step 210) . Hence, after the whole cache flush operation is done, the exchange data prepared in the specific buffers allocated in the storage device 108 would include latest updated contents flushed from the first cache 114.
However, when the predetermined criterion (e.g., total buffer size > threshold) is not met, this means it is possible that most of “dirty” cached data in the first cache 114 may not be used by the second processing circuit 116. Flushing the whole first cache 114 will result in too much data that is not intended to be shared between the first processing circuit and the second processing circuit 116 but flushed from the first cache 114 to the storage device 108. Hence, when the predetermined criterion (e.g., total buffer size > threshold) is not met, the first processing circuit 112 performs a cache flush operation for each buffer (which is allocated in the storage device 108 and shared by the first processing circuit 112 and the second processing circuit 116) separately (Step 212) .
The second processing circuit 116 gets the exchange data prepared by the first processing circuit 112 from the storage device 108. In addition, the second processing circuit 116 performs one or more tasks to process the exchange data prepared by the first processing circuit 112, thereby generating a processing result of each task. If one cache flush operation is performed for the processing result of each task, there will be unnecessary cache flush operations on the device side since the first processing circuit 112 may not need or immediately need processing results of certain tasks. For example, when a processing result of a task includes intermediate data rather than final data needed by the first processing circuit 112, performing a cache flushing operation for flushing the intermediate data from the second cache 118 to the storage device 108 is unnecessary, which increases the cache flush overhead on the device side. The present invention therefore proposes selectively performing a cache flushing operation for a processing result of each task performed by the second processing circuit 116 to effectively reduce the cache flush overhead on the device side. In other words, a cache flushing operation for a processing result of one task may be performed, while a cache flushing operation for a processing result of a different task may be skipped.
FIG. 3 is a flowchart illustrating a data exchange method employed by a second processing circuit on a device side according to an embodiment of the present invention. Provided that the result is substantially the same, the steps are not required  to be executed in the exact order shown in FIG. 3. The exemplary data exchange method may include a cache flush decision making procedure 301 and a cache flush control procedure 302, where the cache flush decision making procedure 301 may be performed by the cache flush decision circuit 105 shown in FIG. 1, and the cache flush control procedure 302 may be performed by the second processing circuit (e.g., GPU) 116 shown in FIG. 1. The cache flush decision circuit 105 is used to generate a cache flush decision for each task (which is performed by the second processing circuit 116 based at least partly on data derived from the exchange data prepared by the first processing circuit 112 and stored in the storage device 108) automatically. In step 312, the cache flush decision circuit 105 collects tasks to be performed by the second processing circuit 116. Then, the following steps may be triggered. In step 314, the cache flush decision circuit 105 analyzes the meaning of a processing result of each task. In step 316, the cache flush decision circuit 105 makes one cache flush decision for at least a portion (i.e., part or all) of the processing result of each task based on an analyzing result obtained in step 314.
According to the design consideration, the processing result of each task may be partially or fully flushed from the second cache 118 to the storage device 108 in response to an enabled cache flush operation. In this embodiment, when the analyzing result indicates that at least a portion (i.e., part or all) of a processing result of a task is needed or immediately needed by the first processing circuit 112, an associated cache flush decision is made to enable a cache flush operation. However, when the analyzing result indicates that at least a portion (i.e., part or all) of a processing result of a task is not needed or immediately needed by the first processing circuit 112, an associated cache flush decision is made to disable/skip a cache flush operation.
Consider a case where the first processing circuit 112 is a CPU, and the second processing circuit 116 is a programmable processor such as a GPU. In addition to preparing the exchange data in the storage device 108, the first processing circuit 112 may further transmit a program code to the second processing circuit 104. For example, the first processing circuit 112 may execute a GPU driver to prepare the program code to be executed by the second processing circuit 104. Hence, the second processing circuit 104 may execute the program code configured by the first processing circuit 112 to perform tasks based at least partly on data derived from the exchange data prepared by the first processing circuit 112 and stored in the storage device 108. The first processing circuit 112 may further provide information of the  program code to the cache flush decision circuit 105. Hence, the cache flush decision circuit 105 can easily accomplish  steps  312 and 314 on the basis of the information of the program code. However, this is for illustrative purposes only, and is not meant to be a limitation of the present invention. Any means capable of determining whether a processing result of a task performed by the second processing circuit 116 on the device side is needed or immediately needed by the first processing circuit 112 on the host side may be employed by the cache flush decision circuit 105.
The cache flush decision circuit 105 generates one cache flush decision for each task to the second processing circuit 116. Concerning each task processed by the second processing circuit 116, the second processing circuit 116 therefore refers to an associated cache flush decision to selectively perform a cache flush operation for flushing at least a portion of a processing result of the task from the second cache 118 to act as part of exchange data prepared by the second processing circuit 116 and stored in the storage device 108, where the first processing circuit 112 can get the exchange data prepared by the second processing circuit 112 from the storage device 108. When a cache flush decision for at least a portion of a processing result of a task is made to enable a cache flush operation (step 320) , the second processing circuit 116 is instructed by the cache flush decision to perform the cache flush operation to store at least the portion of the processing result of the task into the storage device 108 to serve as part of the exchange data prepared for the first processing circuit 112 (step 322) . When a cache flush decision for at least a portion of a processing result of a task is made to disable/skip a cache flush operation (step 320) , the second processing circuit 116 is instructed by the cache flush decision to avoid performing the cache flush operation upon at least the portion of the processing result of the task in the second cache 118 (step 324) .
In one exemplary design, the cache flush decision may be configured to include at least a first decision and a second decision, where the first decision decides whether the cache flush operation is needed to be performed upon one cache level (e.g., level 1) of the second cache 118, and the second decision decides whether the cache flush operation is needed to be performed upon another cache level (e.g., level 2) of the second cache 118.
FIG. 4 is a sequence diagram illustrating data exchange between a host side and a device side according to an embodiment of the present invention. For example, a CPU may be located on the host side, and a GPU may be located on the device side.  Compared to flushing out “dirty” cached data in a cache for each of a plurality of buffers separately, flushing out all “dirty” cached data in a cache in one operation (i.e., a whole cache flush operation) has acceptable overhead. Further, compared to flushing out data derived from each task to a shared storage device (e.g., a system DRAM) , the proposed operation of referring to a cache flush decision to selectively flush out data derived from each task to the shared storage device (e.g., system DRAM) can remove unnecessary cache flush operations (e.g., a cache flush operation for a task of the 1st pass shown in FIG. 4) for reducing the overhead. As a person skilled in the art can readily understand details of the data exchange process shown in FIG. 4, further description is omitted here for brevity.
As shown in FIG. 1, the cache flush decision circuit 105 may be a hardware device different from any of the first processing circuit 112 and the second processing circuit 116. However, this is for illustrative purposes only, and is not meant to be a limitation of the present invention. In a first alternative design, a cache flush decision circuit (which is used to make a cache flush decision for each task automatically) may be part of a first processing circuit on a host side. FIG. 5 is a diagram illustrating a second computing system according to an embodiment of the present invention. The major difference between the  computing systems  100 and 500 is that the cache flush decision circuit 105 is incorporated into the first processing circuit 512 of the subsystem 502 shown in FIG. 5. For example, the first processing circuit (e.g., CPU) 512 may execute a GPU driver to prepare the program code to be executed by the second processing circuit (e.g., GPU) 116 and further determine a cache flush decision for each task defined in the program code. Hence, the first processing circuit 512 further supports the cache flush decision function for making a cache flush decision for each task automatically, and outputs the cache flush decision of each task to the second processing circuit 116.
In a second alternative design, a cache flush decision circuit (which is used to make a cache flush decision for each task automatically) may be part of a second processing circuit on a device side. FIG. 6 is a diagram illustrating a third computing system according to an embodiment of the present invention. The major difference between the  computing systems  100 and 600 is that the cache flush decision circuit 105 is incorporated into the second processing circuit 616 of the subsystem 604 shown in FIG. 6. Hence, the second processing circuit 616 further supports the cache flush decision function for making a cache flush decision for each task automatically.
In a third alternative design, a cache flush decision for each task may be derived from a user input. In other words, the cache flush decision for each task may be configured manually. FIG. 7 is a diagram illustrating a fourth computing system according to an embodiment of the present invention. The major difference between the  computing systems  100 and 700 is that the cache flush decision circuit 105 is omitted, and the second processing circuit 716 of the subsystem 704 shown in FIG. receives a user input USER_IN from a user interface (not shown) , and then derives a cache flush decision from the received user input USER_IN.
Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.

Claims (26)

  1. A computing system comprising:
    a plurality of processing circuits, comprising at least a first processing circuit and a second processing circuit; and
    a storage device, shared between at least the first processing circuit and the second processing circuit;
    wherein the first processing circuit is arranged to perform a whole cache flush operation to prepare exchange data in the storage device, and the second processing circuit is arranged to get the exchange data from the storage device.
  2. The computing system of claim 1, wherein the whole cache flush operation is performed by the first processing circuit when a criterion is met.
  3. The computing system of claim 2, wherein the first processing circuit is further arranged to allocate at least one buffer in the storage device, where the exchange data is stored in the at least one buffer; and a total size of the at least one buffer is compared with a threshold to check if the criterion is met.
  4. The computing system of claim 3, wherein the threshold is set based on a cache size of the first processing circuit.
  5. The computing system of claim 3, wherein the criterion is met when the total size of the at least one buffer is larger than the threshold.
  6. The computing system of claim 2, wherein the first processing circuit is further arranged to allocate at least one buffer in the storage device, where the exchange data is stored in the at least one buffer; and when the criterion is not met, the first processing circuit is further arranged to perform a cache flush operation for each of the at least one buffer, separately.
  7. A computing system comprising:
    a plurality of processing circuits, comprising at least a first processing circuit and a second processing circuit; and
    a storage device, shared between at least the first processing circuit and the second processing circuit;
    wherein concerning each task processed by the second processing circuit, the second processing circuit is arranged to refer to a cache flush decision to selectively perform a cache flush operation for storing at least a portion of a processing result of  the task as part of exchange data in the storage device; and the first processing circuit is arranged to get the exchange data from the storage device.
  8. The computing system of claim 7, further comprising:
    a cache flush decision circuit, arranged to generate the cache flush decision automatically.
  9. The computing system of claim 8, wherein the cache flush decision circuit is part of the first processing circuit.
  10. The computing system of claim 8, wherein the cache flush decision circuit is part of the second processing circuit.
  11. The computing system of claim 7, wherein the cache flush decision is derived from a user input.
  12. The computing system of claim 7, wherein when at least the portion of the processing result of the task is needed by the first processing circuit, the cache flush decision is made to instruct the second processing circuit to perform the cache flush operation.
  13. The computing system of claim 7, wherein the cache flush decision comprises at least a first decision and a second decision, the first decision decides whether the cache flush operation is needed to be performed upon one cache level, and the second decision decides whether the cache flush operation is needed to be performed upon another cache level.
  14. A data exchange method comprising:
    performing a whole cache flush operation upon a cache of a first processing circuit to prepare exchange data in a storage device shared between the first processing circuit and a second processing circuit; and
    getting the exchange data from the storage device for the second processing circuit.
  15. The data exchange method of claim 14, further comprising:
    checking a criterion;
    wherein the whole cache flush operation is performed when the criterion is met.
  16. The data exchange method of claim 15, further comprising
    allocating at least one buffer in the storage device, where the exchange data is stored in the at least one buffer;
    wherein checking the criterion comprises:
    checking if the criterion is met by comparing a total size of the at least one buffer  with a threshold.
  17. The data exchange method of claim 16, further comprising:
    setting the threshold based on a size of the cache.
  18. The data exchange method of claim 16, wherein the criterion is met when the total size of the at least one buffer is larger than the threshold.
  19. The data exchange method of claim 15, further comprising:
    allocating at least one buffer in the storage device, where the exchange data is stored in the at least one buffer;
    wherein checking the criterion comprises:
    when the criterion is not met, performing a cache flush operation for each of the at least one buffer, separately.
  20. A data exchange method comprising:
    concerning each task processed, referring to a cache flush decision to selectively perform a cache flush operation upon a cache of a second processing circuit for storing at least a portion of a processing result of the task as part of exchange data in a storage device shared between a first processing circuit and the second processing circuit; and
    getting the exchange data from the storage device for the first processing circuit.
  21. The data exchange method of claim 20, further comprising:
    utilizing a cache flush decision circuit to generate the cache flush decision automatically.
  22. The data exchange method of claim 21, wherein the cache flush decision circuit is part of the first processing circuit.
  23. The data exchange method of claim 21, wherein the cache flush decision circuit is part of the second processing circuit.
  24. The data exchange method of claim 20, further comprising:
    receiving a user input; and
    deriving the cache flush decision from the user input.
  25. The data exchange method of claim 20, wherein when at least the portion of the processing result of the task is needed by the first processing circuit, the cache flush decision is made to enable the cache flush operation.
  26. The data exchange method of claim 20, wherein the cache flush decision comprises at least a first decision and a second decision, the first decision decides whether the cache flush operation is needed to be performed upon one cache level of  the cache, and the second decision decides whether the cache flush operation is needed to be performed upon another cache level of the cache.
PCT/CN2015/080088 2014-05-28 2015-05-28 Computing system with reduced data exchange overhead and related data exchange method thereof Ceased WO2015180667A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201580003533.8A CN105874431A (en) 2014-05-28 2015-05-28 Computing system for reducing data exchange load and related data exchange method
US14/902,582 US20160179668A1 (en) 2014-05-28 2015-05-28 Computing system with reduced data exchange overhead and related data exchange method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462003611P 2014-05-28 2014-05-28
US62/003,611 2014-05-28

Publications (1)

Publication Number Publication Date
WO2015180667A1 true WO2015180667A1 (en) 2015-12-03

Family

ID=54698123

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/CN2015/080092 Ceased WO2015180668A1 (en) 2014-05-28 2015-05-28 Memory pool management method for sharing memory pool among different computing units and related machine readable medium and memory pool management apparatus
PCT/CN2015/080088 Ceased WO2015180667A1 (en) 2014-05-28 2015-05-28 Computing system with reduced data exchange overhead and related data exchange method thereof

Family Applications Before (1)

Application Number Title Priority Date Filing Date
PCT/CN2015/080092 Ceased WO2015180668A1 (en) 2014-05-28 2015-05-28 Memory pool management method for sharing memory pool among different computing units and related machine readable medium and memory pool management apparatus

Country Status (3)

Country Link
US (2) US20160179668A1 (en)
CN (2) CN105874439A (en)
WO (2) WO2015180668A1 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
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
WO2019199848A1 (en) * 2018-04-10 2019-10-17 Google Llc Memory management in gaming rendering
US10848585B2 (en) 2018-12-03 2020-11-24 Walmart Apollo, Llc Using a sharded distributed cache as a pipeline integration buffer
CN112181682B (en) * 2020-09-23 2023-03-31 上海爱数信息技术股份有限公司 Data transmission control system and method under multi-task concurrent scene
KR102882436B1 (en) * 2020-12-23 2025-11-06 현대자동차주식회사 Method for optimizing vcrm trasmission data optimization and apparatus therefor
CN113806244B (en) * 2021-11-18 2022-02-08 深圳比特微电子科技有限公司 Memory management method for system on chip and device based on system on chip

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010025352A1 (en) * 1998-07-16 2001-09-27 Majid Ghameshlu Duplicable processor device
US20050015637A1 (en) * 2001-12-14 2005-01-20 Josephus Theodorus Johannes Van Eijndhoven Data processing system
CN101197006A (en) * 2007-12-19 2008-06-11 东信和平智能卡股份有限公司 Smart card and data write-in method
CN101710309A (en) * 2009-12-15 2010-05-19 北京时代民芯科技有限公司 DMA controller on basis of massive data transmitting

Family Cites Families (15)

* Cited by examiner, † Cited by third party
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
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
US7065169B2 (en) * 2000-08-31 2006-06-20 Hewlett-Packard Development Company, L.P. Detection of added or missing forwarding data clock signals
US6954768B2 (en) * 2002-08-29 2005-10-11 International Business Machines Corporation Method, system, and article of manufacture for managing storage pools
US7984248B2 (en) * 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US20060195662A1 (en) * 2005-02-28 2006-08-31 Honeywell International, Inc. Method for deterministic cache partitioning
CN1327348C (en) * 2005-09-16 2007-07-18 浙江大学 Method for resolving frequently distributing and releasing equal size internal memory
US7631152B1 (en) * 2005-11-28 2009-12-08 Nvidia Corporation Determining memory flush states for selective heterogeneous memory flushes
CN100486178C (en) * 2006-12-06 2009-05-06 中国科学院计算技术研究所 A remote internal memory sharing system and its realization method
CN100487660C (en) * 2007-05-28 2009-05-13 中兴通讯股份有限公司 A dynamic memory management system and method for a multi-threaded processor
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
CN101799773B (en) * 2010-04-07 2013-04-17 福州福昕软件开发有限公司 Memory access method of parallel computing
US8937622B2 (en) * 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
KR20120097136A (en) * 2011-02-24 2012-09-03 삼성전자주식회사 Management of memory pool in a virtualization system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010025352A1 (en) * 1998-07-16 2001-09-27 Majid Ghameshlu Duplicable processor device
US20050015637A1 (en) * 2001-12-14 2005-01-20 Josephus Theodorus Johannes Van Eijndhoven Data processing system
CN101197006A (en) * 2007-12-19 2008-06-11 东信和平智能卡股份有限公司 Smart card and data write-in method
CN101710309A (en) * 2009-12-15 2010-05-19 北京时代民芯科技有限公司 DMA controller on basis of massive data transmitting

Also Published As

Publication number Publication date
US20160188453A1 (en) 2016-06-30
WO2015180668A1 (en) 2015-12-03
CN105874431A (en) 2016-08-17
US20160179668A1 (en) 2016-06-23
CN105874439A (en) 2016-08-17

Similar Documents

Publication Publication Date Title
US20160179668A1 (en) Computing system with reduced data exchange overhead and related data exchange method thereof
US9965392B2 (en) Managing coherent memory between an accelerated processing device and a central processing unit
JP6739253B2 (en) Cache coherent system including master side filter and data processing system including the same
US8166339B2 (en) Information processing apparatus, information processing method, and computer program
CN107436809A (en) Data processor
US8521968B2 (en) Memory controller and methods
JP2017033501A (en) Storage device and control method
US20170004087A1 (en) Adaptive cache management method according to access characteristics of user application in distributed environment
US20150074357A1 (en) Direct snoop intervention
US9772678B2 (en) Utilization of processor capacity at low operating frequencies
CN107851064A (en) Address conversion and data pre-fetching in cache memory system
US10509744B2 (en) Semiconductor system including heterogeneous memory module
CN105103139B (en) Method and apparatus for improving the performance across the semaphore supervisory sequence of coherent bus
CN114880097B (en) A process scheduling method and computing device
US10019373B2 (en) Memory management method for supporting shared virtual memories with hybrid page table utilization and related machine readable medium
JP2004199684A (en) Memory power management using prefetch buffer
JP6676052B2 (en) System and method for enabling improved latency in a non-uniform memory architecture
US20170178275A1 (en) Method and system for using solid state device as eviction pad for graphics processing unit
US8769239B2 (en) Re-mapping memory transactions
US9354812B1 (en) Dynamic memory utilization in a system on a chip
US20160320972A1 (en) Adaptive compression-based paging
KR102485999B1 (en) Cache coherent system including master-side filter and data processing system having the same
US20230168822A1 (en) Memory management method and semiconductor device adjusting size of contiguous memory allocation area
AU2018295010B2 (en) System and method for dynamic buffer sizing in a computing device
KR101416248B1 (en) Data processing apparatus and data processing method thereof

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14902582

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15799696

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15799696

Country of ref document: EP

Kind code of ref document: A1