WO2014178450A1 - Cpu와 gpu 간의 협업 시스템 및 그 방법 - Google Patents

Cpu와 gpu 간의 협업 시스템 및 그 방법 Download PDF

Info

Publication number
WO2014178450A1
WO2014178450A1 PCT/KR2013/003721 KR2013003721W WO2014178450A1 WO 2014178450 A1 WO2014178450 A1 WO 2014178450A1 KR 2013003721 W KR2013003721 W KR 2013003721W WO 2014178450 A1 WO2014178450 A1 WO 2014178450A1
Authority
WO
WIPO (PCT)
Prior art keywords
gpu
cpu
data
task
cache
Prior art date
Application number
PCT/KR2013/003721
Other languages
English (en)
French (fr)
Inventor
황태호
김동순
Original Assignee
전자부품연구원
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 전자부품연구원 filed Critical 전자부품연구원
Priority to PCT/KR2013/003721 priority Critical patent/WO2014178450A1/ko
Publication of WO2014178450A1 publication Critical patent/WO2014178450A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter

Definitions

  • the present invention relates to a collaboration system and a method between a CPU and a graphics processor (GPU), and more particularly, to a memory structure and a management method for efficient collaboration between a CPU and a GPU.
  • GPU graphics processor
  • AP Application Processor
  • Samsung Exynos, nVidia Tegra, Texas Instrument OMAP, etc. adopts multi-CPU of ARM cortex and multi-GPU of SVix or nVidia or Imagination The trend is to integrate chips.
  • the GP-GPU which was first launched on the PC side with Intel and AMD, has been expanded to APs as mentioned above and integrated into one chip. Commonly shares a lower level cache. However, there are big differences in the way memory management works in mobile APs and PCs.
  • the CPU In today's CPU / GPU integrated system, the CPU is controlling the GPU via Bridge (PC) or Bus (AP).
  • PC Bridge
  • AP Bus
  • the GPU In general, the GPU is mainly delegated the code and data of tasks to be processed through the CPU through the memory interface, and copied it to the GPU local memory, and then the GPU processes it and copies the result back to the CPU main memory.
  • the operating system's software driver controls the GPU through the bridge or bus interface on the CPU, and the memory sharing and cache controllers operate independently of this control structure.
  • an object of the present invention is to provide a cooperative system and method between a CPU and a GPU that can reduce the load of the CPU by controlling the GPU through a separate control module.
  • an object of the present invention is to provide a cache coherency control module that is effective for maintaining cache coherency between a CPU and a GPU by extending a conventional protocol that solves a cache coherency problem between multiple processors.
  • the present invention provides a collaboration system between a CPU and a GPU, comprising: a task management unit receiving a task requested by the CPU and requesting the GPU and transferring a task result processed by the GPU to the CPU; An address mapping unit to assist in mapping the address space of the GPU to the address space of the main memory; A prefetcher for bringing data to be processed from the main memory into the cache memory after the data being processed by the GPU; And a cache coherency controller configured to match data stored in the cache memory of the CPU with data stored in the cache memory of the GPU.
  • the task management unit provides a cooperative system between the CPU and the GPU receives the code information corresponding to the task requested by the CPU and address information of the data required to perform the task from the CPU. do.
  • the task management unit provides a collaboration system between the CPU and the GPU that loads the table mapping the address information of the address space of the GPU and the data required for the task to the address mapping unit.
  • the task management unit provides a collaboration system between the CPU and the GPU that distributes and requests the tasks requested by the CPU to each core of the GPU and monitors the task status of each core of the GPU. .
  • the prefetcher when the prefetcher receives an operation signal from the task management unit, bringing data required for the GPU from the main memory to the cache memory and removing the processed data from the cache memory. It provides a collaborative system between a CPU and a GPU.
  • the task management unit checks whether it is necessary to match the data stored in the cache memory of the CPU and the data stored in the cache memory of the GPU, and if the data match is necessary, the cache consistency controller It provides a cooperative system between the CPU and the GPU to operate.
  • the present invention comprises the steps of receiving a request requested by the CPU to the GPU; Mapping an address space of the GPU to an address space of main memory; Transferring a result of the operation processed by the GPU to the CPU; Identifying data to be processed next to data being processed by the GPU; Importing the identified data from the main memory into a cache memory; And operating a cache coherency control module to match both data when it is necessary to match the data of the CPU with the data of the GPU.
  • the step of receiving a request requested by the CPU to the GPU the step of receiving code information corresponding to the job and address information of the data required for the job from the CPU; And distributing the received task to request each core of the GPU, and monitoring a task state of each core of the GPU.
  • the mapping of the address space of the GPU to the address space of the main memory may include: generating a table mapping the address space of the GPU and address information of data required for the operation; And a step in which the GPU translates an address with reference to the table.
  • the present invention provides a cooperative system between a CPU and a GPU that is synchronized with a control module that manages the work of the GPU and shares only the data area that the CPU delegates to the GPU. This greatly improves performance by allowing the virtual address space used by the CPU to be accessed directly from the cache without copying between memories.
  • the shared structure at the cache level is synchronized with the operation of the task management module to efficiently control prefetching from the main memory to the cache, thereby minimizing direct main memory access by the GPU.
  • control for coherency of the CPU and GPU cache provides a structure that can optimize the problem of performance degradation caused by snooping because the CPU can be enabled / disabled through the task management module according to the task.
  • FIG. 1 is a diagram showing the structure of a collaboration system between a conventional CPU and a GPU.
  • FIG. 2 is a diagram showing the structure of a collaboration system between a CPU and a GPU according to an embodiment of the present invention.
  • FIG. 3 is a view showing the structure of a job manager (Job Manager) in a collaboration system between the CPU and the GPU according to an embodiment of the present invention.
  • Job Manager Job Manager
  • FIG. 4 is a diagram illustrating a structure of an address mapping unit (Re-mapper) in a collaboration system between a CPU and a GPU according to an embodiment of the present invention.
  • Re-mapper address mapping unit
  • FIG. 5 is a diagram illustrating the structure of a pre-fetcher in a collaboration system between a CPU and a GPU according to an embodiment of the present invention.
  • FIG. 6 to 10 are views for explaining the structure of the cache coherency controller (Cache Coherency Controller) in a cooperative system between the CPU and the GPU according to an embodiment of the present invention.
  • cache Coherency Controller cache Coherency Controller
  • FIG. 11 is a diagram illustrating the structure of an extended collaboration system between a CPU and a GPU according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating a structure of a cooperative system between a CPU and a GPU according to an exemplary embodiment of the present invention.
  • a job manager 200 and an address mapping unit 210 may be used.
  • Pre-fetcher 220, and cache coherency controller 230 may be used.
  • the Job Manager (Job Manager: CPU / GPU Inter Processor Communication Controller, 200) allows the CPU to directly interface with each other so that the CPU can be directly driven without a bus or bridge.
  • the task management unit 200 is closely connected to the CPU through the co-processor interface of the CPU, and divides the request generated from the CPU into a plurality of GPU cores, and serves to inform the CPU of the processing result. Therefore, the job management unit 200 includes an interface for transmitting and receiving information necessary for this from the CPU.
  • the address mapping unit (Re-mapper: Memory Management Unit for GPU, 210) serves to assist the mapping of the address space of the GPU to the address space of the main memory used by the CPU.
  • the pre-fetcher 220 detects a data block pattern from main memory and an L2 cache, receives it as a pattern for reference, and pre-fetches necessary data.
  • the cache coherency controller 230 controls the CPU and GPU to share a cache with each other. It is designed to extend the existing Snoop Control Unit (SCU) to maintain coherency with the GPU as well as the CPU.
  • SCU Snoop Control Unit
  • the collaboration process by the collaboration system between the CPU and the GPU according to an embodiment of the present invention proceeds as follows.
  • the CPU delivers the code and data compiled for the GPU core and address and offset information of the data divided for each GPU core to the predetermined interface of the task manager 200.
  • the task manager 200 remaps the data address information of the given main memory into the GPU address space and loads the data into the address mapping unit 210.
  • the task manager 200 operates the prefetcher 220 based on the given address information to bring the data from the main memory to the L2 cache in advance, and operates the cache coherency controller 230 when the CPU needs to control cache coherency. .
  • the task management unit 200 allocates a task to each core of the GPU, and subsequently imports data to be processed next to the L2 through the prefetcher 220 while the assigned task is processed in the GPU, and there may be data already processed. In this case, the cache data is flushed to main memory.
  • the GPU sends a completion signal to the task manager 200 when the task is delegated, and the task manager 200 transmits the task to the CPU.
  • FIG. 3 is a diagram illustrating a structure of a task management unit in a collaboration system between a CPU and a GPU according to an exemplary embodiment of the present invention.
  • the way that an existing CPU delegates work to a GPU is that the CPU directly manages the request request control of the GPU through the system bus. Therefore, the CPU is a structure in which the device driver software of the GPU must continuously manage the operation of the GPU through the interrupt interface of the system bus.
  • the present invention is a device that delegates the management of the operation of the GPU through a separate hardware device of the task management unit to improve this.
  • the task management unit allows the CPU to significantly reduce the administrative load associated with the GPU.
  • the task manager connects to the same interface as the CPU's co-processor instructions and provides registers that allow the GPU to execute tasks, set memory addresses, core offsets, and parameters. It can also provide the ability to monitor the status and behavior of tasks for each core of the GPU.
  • the task management unit is designed to be extended not only with one host CPU but also with additional interfaces (up to four) to manage operations with heterogeneous processors such as multi-core processors and collaboration with other GPU hardware. Can be done.
  • FIG. 4 is a diagram illustrating a structure of an address mapping unit in a collaboration system between a CPU and a GPU according to an exemplary embodiment of the present invention.
  • the OpenCL and OpenGL models are designed assuming that the CPU-GPU system operates on a non-unified memory architecture.
  • the virtual memory address space used by the CPU and the memory address space used by the GPU have evolved to be different.
  • the structure of the CPU-GPU has recently been developed as a shared memory based structure on the SoC, the CPU and the GPU have a need for addressing and translation on the Unified Shared Memory.
  • a common way to solve this problem is to have the GPU use the same virtual memory address space by referring to the same page table on main memory through each TLB like the CPU.
  • the GPU is delegated a large amount of data processing from the CPU, and divides them sequentially and performs parallel processing to return the results.
  • a common address mapping table is shared through a TLB for access to a unified shared memory.
  • the GPU receives a large range of data, and each core of the GPU converts each corresponding space through a TLB.
  • the reuse rate of the conversion information in the TLB is low, so the number of times that the GPU accesses the page table in main memory increases when the data to be processed is large. None else but to do.
  • many GPU cores access the memory bus with their respective TLBs, resulting in more traffic and increased implementation complexity.
  • the present invention is designed in the following approach. Because the range and location of the data required before the CPU delegates work to the GPU is determined, the driver via the OpenCL / OpenGL API on the CPU allocates the memory to be passed to the GPU in as many consecutive pages as possible, and allocates the physical address of that page. Loads a table that maps to the virtual address of the mapped GPU in the address mapping section. If the data is fragmented in units of pages rather than in consecutive pages, the page information is remapping into a contiguous virtual address space for the GPU and reflected in the address mapping table.
  • the address mapping table contains page address information of all data to be passed to the GPU, and the GPU performs address translation by referring to the information in the mapping table loaded in the address mapping unit without additional memory access for address translation.
  • Address mapping is performed by referring to the mapping table by a translator device implemented by the number of cores of the GPU, and accesses the shared address through the cache controller with the converted address information.
  • FIG. 5 is a diagram illustrating a structure of a prefetcher in a collaboration system between a CPU and a GPU according to an embodiment of the present invention.
  • the GPU divides the delegated tasks and processes them in parallel and sequentially, and the present invention designs the prefetchers with the structure as shown in FIG. 5 to manage them more efficiently.
  • the prefetcher reserves L2's cache area twice as much space as the core of the GPU needs for one job and divides it into two windows. The first window loads the data needed for the current GPU's tasks, while the second window's area is reserved for loading data for subsequent tasks.
  • the L2 cache controller does not apply the existing eviction rule, and the two windows are dedicated to hiding memory latency of the GPU.
  • FIG. 6 is a diagram illustrating a structure of a cache coherency controller in a cooperative system between a CPU and a GPU according to an exemplary embodiment of the present invention.
  • the cache coherency controller together with the protocol for coherency between the multicore CPU and the L1 cache with the GPU, transfers memory-to-cache, cache-to-cache data between cores according to the protocol, and L2 cache for pre-fetchering described above. Is in charge of the control.
  • the cache coherency control unit is designed as two structures, one for the single-core CPU and one for extending it.
  • the coherency model for sharing on unified memory between the first single-core CPU and the GPU is shown in FIG. 7.
  • the protocol of state transition for this in FIG. 7 is the same as in FIG. 8.
  • the feature of the protocol of FIG. 8 is basically based on data transfer between L1 caches.
  • snooping is minimized for coherency with the invalidation-based GPU.
  • not only ownership of data, but also cached data itself is copied. Therefore, data shared with the GPU ensures that only one copy exists in the L1 cache.
  • the state of RD is added and an invalidation request of INV_REQ is added.
  • the state of RD indicates when the GPU proceeds to write data after loading data into its cache.
  • a condition for distinguishing the sharing between the CPU and the GPU is added, which is provided through the address mapping unit described above.
  • the address mapping part sets condition r to true for data accessed by referring to its own table.
  • the coherency protocol designed using the state defined in FIG. 9 is shown in FIG. 10.
  • the protocol is basically based on invalidation of data shared with the GPU as in the aforementioned single-core CPU. This basically allows the GPU to invalidate the CPU's shared cache lines to minimize updates when the CPU attempts to share and write data for CPU delegated tasks.
  • FIG. 6 A schematic structure of the cache coherency control unit including such a protocol is shown in FIG. 6, and the cache coherency control unit is mainly composed of three parts.
  • the first is a comparator for coordinating state changes in the protocol described above.
  • the comparator receives address and line status from the L1 cache controllers of the GPU and CPU and manages their status.
  • the second is a cache-to-cache data transfer unit. This unit is responsible for data transfer between the comparator and the L1 cache when data is needed.
  • L2 cache controller not only manages L2 by applying normal cache eviction rule, but also, when requested from the prefetcher described above, partitions L2 into the required size area and performs memory transfer necessary for prefetching of GPU.
  • FIG. 11 is a diagram illustrating an expanded system of a collaboration system between a CPU and a GPU, according to an exemplary embodiment.
  • the collaboration system illustrated in FIG. 11 is a structure in which two CPUs and a GPU share a memory.
  • the structure of the collaboration system between the CPU and the GPU can be extended not only to L2 but also to a shared structure through the L3 cache, and can be extended not only to a single CPU but also to a collaboration structure between multiple CPUs and the GPU.
  • L3 is a shared structure.
  • the task management unit operates through the interface with the CPU as in the structure described above.
  • cache coherency controller should always operate for memory sharing between CPUs.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 CPU와 GPU 간의 효율적인 협업 구조에 관한 것으로서, GPU를 제어하는 별도의 유닛을 통해 CPU의 로드를 경감시키고 GPU에 작업을 할당함에 있어서 직접적인 데이터의 복사가 없이 작업에 사용할 데이터의 주소 영역에 대한 정보만 제공되도록 함으로써, CPU와 GPU 간의 협업의 효율성을 높인 CPU와 GPU 간의 협업 시스템 및 그 방법을 제공한다. 또한 CPU와 GPU 간의 캐시일관성 유지를 위해 종래의 멀티 CPU 간의 캐시일관성 유지에 사용되는 프로토콜을 확장한 프로토콜을 제공하여 CPU와 GPU 간의 캐시 불일치 해소에 적합한 캐시일관성 유지 방법을 제공한다.

Description

CPU와 GPU 간의 협업 시스템 및 그 방법
본 발명은 CPU와 그래픽 프로세서(GPU) 간의 협업 시스템 및 그 방법에 관한 것으로서, 구체적으로는, CPU와 GPU 간의 효율적인 협업을 위한 메모리 구조와 관리 방법에 관한 것이다.
최근 Samsung(社) Exynos, nVidia(社) Tegra, Texas Instrument(社) OMAP 등의 AP(Application Processor)에서 ARM cortex 계열의 멀티 CPU 및 nVidia 혹은 Imagination(社)의 SGX 계열의 멀티 GPU를 채택하여 one chip에 집적되는 추세이다.
전통적으로 멀티 CPU의 경우 시스템 성능 향상을 위해 1차 혹은 2차 캐시를 공유하는 형태가 주류를 이루고 있다. 또한 각 CPU에 속한 캐시 간의 coherency를 위해 MESI(Modified, Exclusive, Shared, Invaild)와 같은 프로토콜이 채택되고 이를 위해 Snoop Control Unit(SCU)이 탑재되어 있다. 그리고 외부 메모리의 접근을 최소화하기 위해 write-back, write-once, write allocate 방식이 적용되었다.
Intel(社), AMD(社)가 주가 되어 PC 쪽에서 먼저 시작된 GP-GPU는 위에서 언급한 것과 같이 AP로 확장되어 one chip에 집적되고 있다. 공통적으로 하위 레벨의 캐시를 공유한다. 하지만 모바일 AP와 PC에서는 memory management의 방식에 큰 차이점이 존재한다.
예컨대 AMD Fusion APU의 경우, CPU와 GPU 각각이 다른 page table을 가지고 동작을 한다. 이에 반해 ARM Mali T604의 경우, Cortext A15과 같은 page table을 가지고 memory를 관리한다. 둘 중 어느 것이 더 좋은 것인지는 아직 검증이 되지 않고 있다.
현재 CPU/GPU 집적 시스템에서 CPU는 Bridge(PC) 혹은 Bus(AP)를 통해 GPU를 제어하고 있다. 일반적으로 GPU는 주로 CPU를 통해 처리하여야할 작업들의 코드와 데이터를 메모리 인터페이스를 통해 위임받고, 이를 GPU 로컬 메모리에 복사한 후, GPU는 이를 처리하여 CPU의 메인 메모리에 결과를 다시 복사하는 구조이다. 이를 위해 현재 CPU-GPU 집적 시스템에서 운영체제의 소프트웨어 드라이버가 CPU에서 브릿지 혹은 버스 인터페이스를 통해 GPU를 제어하는 구조이며, 메모리 공유 및 캐시 컨트롤러는 이 제어 구조와는 별개로 작동한다.
하지만 이로 인해 시스템 성능이 저하되기 때문에 CPU와 GPU 간의 직접적인 inter-processor communication이 필요하고 이를 위한 control unit이 별도로 추가되어야 한다. 또한 캐시 공유에 있어 CPU와 GPU가 별도의 page table을 가지는 것과 공통의 page table을 가지는 것 사이의 검증이 필요하다.
본 발명은 전술한 문제점을 해결하기 위하여, 별도의 제어 모듈을 통해 GPU를 제어하여 CPU의 로드를 감소시킬 수 있는 CPU와 GPU 간의 협업 시스템 및 방법을 제공하는 것을 목적으로 한다.
또한 멀티 프로세서 간의 캐시일관성 문제를 해소하는 종래의 프로토콜을 확장하여, CPU와 GPU 간의 캐시일관성 유지에 효율적인 캐시일관성 제어 모듈을 제공하는 것을 목적으로 한다.
본 발명은 CPU와 GPU 간의 협업 시스템에 있어서, 상기 CPU가 요청하는 작업을 전달받아 상기 GPU에 요청하며, 상기 GPU가 처리한 작업 결과를 상기 CPU로 전달하는 작업관리부; 상기 GPU의 주소 공간과 메인 메모리의 주소 공간의 매핑을 보조하는 주소매핑부; 상기 GPU가 처리 중인 데이터 다음에 처리되어야할 데이터를 상기 메인 메모리로부터 캐시 메모리로 가져오는 프리페처; 및 상기 CPU의 캐시 메모리에 저장된 데이터와 상기 GPU의 캐시 메모리에 저장된 데이터를 일치시키는 캐시일관성제어부를 포함하는 CPU와 GPU 간의 협업 시스템을 제공한다.
본 발명의 일면에 따르면, 상기 작업관리부는 상기 CPU가 요청하는 작업에 해당하는 코드 정보 및 상기 작업을 수행하기 위하여 필요한 데이터의 주소 정보를 상기 CPU로부터 전달받는 것인 CPU와 GPU 간의 협업 시스템을 제공한다.
본 발명의 다른 일면에 따르면, 상기 작업관리부는 상기 GPU의 주소 공간과 상기 작업에 필요한 데이터의 주소 정보를 매핑한 테이블을 상기 주소매핑부에 로드하는 것인 CPU와 GPU 간의 협업 시스템을 제공한다.
본 발명의 다른 일면에 따르면, 상기 작업관리부는 상기 CPU가 요청한 작업을 상기 GPU의 각 코어에 분배하여 요청하고 상기 GPU의 각 코어의 작업 상태를 모니터링하는 것인 CPU와 GPU 간의 협업 시스템을 제공한다.
본 발명의 또 다른 일면에 따르면, 상기 프리페처는 상기 작업관리부로부터 작동신호를 입력받으면, 상기 GPU에 필요한 데이터를 상기 메인 메모리에서 상기 캐시 메모리로 가져오고 처리완료된 데이터를 상기 캐시 메모리에서 제거하는 것인 CPU와 GPU 간의 협업 시스템을 제공한다.
본 발명의 또 다른 일면에 따르면, 상기 작업관리부는 상기 CPU의 캐시 메모리에 저장된 데이터와 상기 GPU의 캐시 메모리에 저장된 데이터를 일치시킬 필요가 있는지 여부를 확인하고, 데이터 일치가 필요하면 상기 캐시일관성제어부를 작동시키는 것인 CPU와 GPU 간의 협업 시스템을 제공한다.
본 발명은 CPU가 요청하는 작업을 전달받아 GPU로 요청하는 단계; 상기 GPU의 주소 공간을 메인 메모리의 주소 공간과 매핑하는 단계; 상기 GPU가 처리한 작업 결과를 상기 CPU로 전달하는 단계; 상기 GPU가 처리 중인 데이터 다음에 처리되어야할 데이터를 확인하는 단계; 상기 확인된 데이터를 상기 메인 메모리로부터 캐시 메모리로 가져오는 단계; 및 상기 CPU의 데이터와 상기 GPU의 데이터를 일치시킬 필요가 있는 경우에 양 데이터를 일치시키기 위해 캐시일관성 제어 모듈을 작동시키는 단계를 포함하는 CPU와 GPU 간의 협업 방법으로 이용될 수 있다.
본 발명의 일면에 따르면, 상기 CPU가 요청하는 작업을 전달받아 GPU로 요청하는 단계는, 상기 CPU로부터 작업에 해당하는 코드 정보 및 작업에 필요한 데이터의 주소 정보를 전달받는 단계; 및 상기 전달받은 작업을 분배하여 상기 GPU의 각 코어에 요청하고, 상기 GPU의 각 코어의 작업 상태를 모니터링하는 단계를 포함하는 것인 CPU와 GPU 간의 협업 방법을 제공한다.
본 발명의 다른 일면에 따르면, 상기 GPU의 주소 공간을 메인 메모리의 주소 공간과 매핑하는 단계는, 상기 GPU의 주소 공간과 상기 작업에 필요한 데이터의 주소 정보를 매핑한 테이블을 생성하는 단계; 및 상기 테이블을 참조하여 상기 GPU가 주소를 변환하는 단계를 포함하는 것인 CPU와 GPU 간의 협업 방법을 제공한다.
본 발명은 GPU의 작업을 관리하는 제어 모듈과 동기화되어 CPU가 GPU에 위임할 데이터 영역만을 공유하는 CPU와 GPU 간의 협업 시스템을 제공한다. 따라서 메모리 간의 복사없이 CPU가 사용하는 가상 주소 공간을 캐시에서 바로 접근할 수 있어 성능이 크게 향상된다.
또한 캐시 레벨에서의 공유 구조에서 작업관리 모듈의 동작과 동기화되어 메인 메모리에서 캐시로의 프리페치를 효율적으로 제어할 수 있어, GPU의 직접적인 메인 메모리 접근을 최소화할 수 있는 장점을 가진다.
그리고 CPU와 GPU의 캐시의 Coherency를 위한 제어는 작업에 따라 CPU가 작업관리 모듈을 통해 Enable/Disable할 수 있는 구조이기 때문에 스누핑에 의한 성능 저하의 문제를 최적화할 수 있는 구조를 제공한다.
도 1은 종래의 CPU와 GPU 간의 협업 시스템의 구조를 나타낸 도면.
도 2는 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템의 구조를 나타낸 도면.
도 3은 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 작업관리부(Job Manager)의 구조를 나타낸 도면.
도 4는 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 주소매핑부(Re-mapper)의 구조를 나타낸 도면.
도 5는 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 프리페처(Pre-fetcher)의 구조를 나타낸 도면.
도 6 내지 도 10은 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 캐시일관성제어부(Cache Coherency Controller)의 구조와 이를 설명하기 위한 도면.
도 11은 본 발명의 일실시예에 따른 CPU와 GPU 간의 확장된 협업 시스템의 구조를 나타낸 도면.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술 되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의된다.
한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성소자, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성소자, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다. 이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하기로 한다.
도 2는 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템의 구조를 나타낸 도면이다.
본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템은 도 1에 도시된 종래의 CPU와 GPU 간의 협업 시스템에 있어서, 작업관리부(Job Manager, 200), 주소매핑부(Re-mapper, 210), 프리페처(Pre-fetcher, 220) 및 캐시일관성제어부(Cache Coherency Controller, 230)를 포함한다.
작업관리부(Job Manager : CPU/GPU Inter Processor Communication Controller, 200)는 CPU가 bus 혹은 bridge를 통해 GPU를 구동하지 않고 직접 구동할 수 있도록 서로 간의 인터페이스를 지정하고 통신하도록 한다.
작업관리부(200)는 CPU의 co-processor 인터페이스로 CPU와 밀접하게 연결되어, CPU에서 발생한 요청사항을 다수개의 GPU 코어에 나누어 요청하고 처리 결과를 CPU로 알려주는 역할을 담당한다. 따라서 작업관리부(200)는 이에 필요한 정보들을 CPU로부터 주고받을 수 있는 인터페이스를 포함한다.
주소매핑부(Re-mapper : Memory Management Unit for GPU, 210)는 GPU의 주소 공간을 CPU가 사용하는 메인 메모리의 주소 공간으로 매핑을 보조하는 기능을 한다.
기존 GPU는 가상 주소메모리 공간을 사용하지 않고, 직접 물리 주소에 접근한다. 설사 GPU가 별도의 MMU를 통해 가상 주소를 사용하더라도 CPU에서 사용하는 주소영역과는 다르기 때문에 GPU가 바라보는 주소 공간을 CPU가 사용하는 메인 메모리의 페이지 테이블을 이용하여 주소 공간으로 매핑하는 기능이 필요한데, 이 기능을 주소매핑부(210)가 담당하는 것이다. GPU 측에서는 주소매핑부(210)를 통해 Unified Shared Memory에 접근한다.
프리페처(Pre-fetcher, 220)는 주 메모리와 L2 캐시로부터의 데이터 블록 패턴을 발견하여 이를 참조를 위한 패턴으로 받고 이를 필요한 데이터를 pre-fetch한다.
캐시일관성제어부(Cache Coherency Controller, 230)는 CPU와 GPU가 서로 cache를 공유할 수 있도록 제어하는 기능을 한다. 이는 CPU뿐만 아니라 GPU와의 coherency도 유지할 수 있도록 기존 SCU(Snoop Control Unit)를 확장하여 설계한다.
본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에 의한 협업 과정은 아래와 같이 진행된다.
CPU는 GPU 코어용으로 컴파일된 코드와 데이터, 그리고 GPU 코어별로 분할된 데이터의 주소 및 오프셋 정보들을 작업관리부(200)의 정해진 인터페이스에 전달한다. 작업관리부(200)는 주어진 메인 메모리의 데이터 주소 정보를 GPU 주소공간으로 remapping 하여 주소매핑부(210)에 로드한다.
작업관리부(200)는 주어진 주소 정보를 바탕으로 프리페처(220)를 작동시켜 메인 메모리에서 L2 캐시로 데이터를 미리 가져오고, CPU에서 cache coherency의 제어가 필요할 경우 캐시일관성제어부(230)를 작동시킨다.
작업관리부(200)는 GPU의 각 코어에 작업을 할당하며, 할당된 작업이 GPU에서 처리되는 동안 이어서 다음에 처리할 데이터를 프리페처(220)를 통해 L2로 가져오고, 이미 처리된 데이터가 있을 경우 메인 메모리에 해당 캐시 데이터를 Flush시킨다.
GPU는 위임받은 작업이 끝나면 작업관리부(200)에게 완료 신호를 보내며, 작업관리부(200)는 CPU로 작업이 완료되었음을 전달한다.
도 3은 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 작업관리부의 구조를 나타낸 도면이다.
기존 CPU가 GPU에게 작업을 위임하는 방식은 CPU가 제어의 요청을 시스템 버스를 통해 GPU의 Host Request Queue를 직접 관리하는 방식이다. 따라서 CPU는 GPU의 디바이스 드라이버 소프트웨어가 시스템 버스의 인터럽트 인터페이스를 통해 GPU의 동작을 지속적으로 관리하여야 하는 구조이다.
반면에 본 발명은 이를 개선하기 위해 작업관리부의 별도의 하드웨어 장치를 통해 GPU가 작동하는 작업들의 관리를 위임하는 장치이다. 작업관리부를 통해 CPU는 GPU와 관련된 관리적인 로드가 크게 경감될 수 있다.
작업관리부는 CPU의 co-processor 명령어와 같은 인터페이스로 연결되어 GPU가 실행해야할 작업 및 메모리 주소, 코어별 오프셋, 파라미터 등을 설정할 수 있는 레지스터들을 제공한다. 또한 GPU의 각 코어별 작업의 상태 및 동작을 모니터링할 수 있는 기능을 제공할 수 있다.
작업관리부는 하나의 Host CPU의 인터페이스뿐만 아니라, 추가적인 인터페이스로 확장(최대 4개)이 가능하도록 설계되어 멀티 코어 프로세서와 다른 GPU 하드웨어와의 협업과 같은 이기종의 프로세서들과의 동작을 관리하는 역할을 수행할 수 있다.
도 4는 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 주소매핑부의 구조를 나타낸 도면이다.
OpenCL, OpenGL의 모델은 CPU-GPU의 시스템이 non-unified memory 구조에서 동작을 가정하고 설계되었다. 즉, 물리적으로 분리된 메모리를 가지고 있기 때문에 CPU가 사용하는 가상 메모리 주소공간과 GPU가 사용하는 메모리 주소공간은 서로 다르게 사용하도록 발전해왔다. 그러나 최근 CPU-GPU의 구조는 SoC상에서 공유 메모리 기반의 구조로 개발되면서 CPU와 GPU는 Unified Shared Memory 상에서 주소체계 및 변환에 대한 필요가 발생하였다. 이 문제를 해결하기 위한 통상적인 방법은 GPU도 CPU와 같이 각각의 TLB를 통해 메인 메모리 상의 같은 페이지 테이블을 참조하여 동일한 가상 메모리 주소공간을 사용하도록 하는 방법이다.
일반적으로 GPU는 CPU로부터 대용량의 데이터 처리를 위임받고, 이를 순차적으로 나누어 병렬 처리하여 결과를 되돌려주는 방식이다. 이러한 점을 고려하였을 때 Unified shared memory 접근을 위해 TLB를 통해 공통의 주소 매핑 테이블을 공유하는 구조는 문제점이 있다. GPU는 큰 범위의 데이터를 전달받게 되고, GPU를 구성하는 각 코어들은 각각의 해당 공간을 TLB를 통해 변환하게 된다.
그러나 제한적인 TLB의 크기와 GPU의 분할 및 순차적인 처리 특성상 TLB에 존재하는 변환 정보의 재사용률이 낮은 점을 고려할 때, GPU가 처리해야할 데이터가 클 경우 메인 메모리의 페이지 테이블에 접근하는 횟수가 증가할 수밖에 없다. 또한 많은 GPU 코어들이 각각의 TLB를 가지고 메모리 버스에 접근할 경우 더욱 많은 트래픽이 발생할 뿐만 아니라 구현의 복잡도 역시 높아진다.
이러한 문제점을 개선하기 위해 본 발명은 다음의 접근 방식으로 설계된다. CPU가 GPU에게 작업을 위임하기 전에 필요한 데이터의 범위와 위치가 정해져 있기 때문에 CPU에서 OpenCL/OpenGL API를 통한 드라이버는 GPU로 넘겨질 메모리를 가능한 연속된 페이지에 allocation하고, 해당 페이지의 물리적 주소를 연속된 GPU의 가상주소로 매핑하는 테이블을 주소매핑부에 로딩한다. 이때 데이터가 연속된 페이지에 위치하지 않고 페이지 단위로 fragmentation되었으면 이 페이지 정보를 GPU를 위한 연속된 가상 주소공간으로 remapping하여 주소 매핑 테이블에 반영한다.
주소 매핑 테이블에는 GPU에 넘겨질 모든 데이터의 페이지주소 정보들이 포함되어 GPU는 주소변환을 위한 추가적인 메모리 접근 없이 주소매핑부에 로딩된 매핑 테이블의 정보를 참조하여 주소변환을 진행한다.
주소매핑부의 주소변환은 GPU의 각 코어의 개수만큼 구현된 translator 장치에 의해 매핑 테이블을 참조하여 수행되고, 변환된 주소 정보로 cache controller를 통해 Unified Shared Memory로 접근한다.
도 5는 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 프리페처의 구조를 나타낸 도면이다. GPU는 위임받은 작업을 분할하여 병렬적으로 그리고 순차적으로 처리하게 되고, 본 발명은 이를 보다 효율적으로 관리하기 위해 도 5와 같은 구조로 프리페처를 설계한다.
작업관리부를 통해 GPU가 동작을 시작하는 것과 함께 프리페처는 L2의 캐시 영역을 GPU의 코어가 한 번의 작업에 필요한 공간의 2배를 예약하고 이를 두 개의 windows로 구분한다. 첫 번째 윈도우에는 현재 GPU의 작업에 필요한 데이터를 로딩하고, 두 번째 windows의 영역에는 다음에 이어서 처리할 작업을 위한 데이터를 로딩하기 위해 예약한다.
이렇게 예약된 window 영역은 L2의 캐시 컨트롤러가 기존의 eviction rule을 적용하지 않으며 두 개의 windows는 GPU의 메모리 latency hiding을 위해 전용으로 사용된다.
도 6은 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템에서 캐시일관성제어부의 구조를 나타낸 도면이다.
캐시일관성제어부는 멀티코어 CPU와 GPU와의 L1 cache간의 coherency를 위한 프로토콜과 더불어 프로토콜에 따른 각 코어간의 memory-to-cache, cache-to-cache의 데이터 전송, 그리고 앞서 설명한 pre-fetchering을 위한 L2 캐시의 제어를 담당한다.
캐시일관성제어부는 Single-Core CPU를 위한 구조와 이를 확장하는 구조의 두 가지로 설계된다. 첫 번째 Single-core CPU와 GPU간의 unified memory상에서의 공유를 위한 coherency 모델은 도 7에 도시된 바와 같다.
도 7에서 이를 위한 상태 변환의 프로토콜은 도 8과 같다. 도 8의 프로토콜의 특징은 기본적으로 L1 캐시 간의 데이터 전송 기반으로 한다. 그리고 GPU에게 작업을 위임한 CPU가 GPU의 동작처리 과정 중에 해당 데이터를 다시 접근하는 경우가 낮기 때문에, Invalidation 기반의 GPU와의 coherency를 위해 snooping을 최소화한다. 즉 데이터의 ownership뿐만 아니라, 캐시된 데이터 자체도 복사되도록 하는 방식이다. 따라서 GPU와 공유된 데이터는 하나의 copy만 L1 캐시에 존재하도록 한다.
그러나 멀티코어 CPU와 GPU를 위한 구조는 CPU간의 coherency의 프로토콜과 함께 동작하여야 하기 때문에 보다 복잡하다. 이를 위해 MOESI기반의 Dragon 프로토콜을 확장한다.
도 9는 확장된 프로토콜에 필요한 상태들의 정의를 보여준다. RD의 상태가 추가되고 INV_REQ의 invalidation request가 추가된다. RD의 상태는 GPU가 데이터를 자신의 cache에 로딩 후, 데이터를 쓰기를 진행할 때의 상태를 나타낸다. 그리고 CPU간의 공유와 GPU와의 공유를 구분하기 위한 condition이 추가되는데 이것은 앞서 설명한 주소매핑부를 통해 제공된다. 주소매핑부는 자신의 테이블을 참조하여 접근하는 데이터의 경우 condition r을 true로 설정한다. 도 9에서 정의된 상태를 이용하여 설계된 coherency 프로토콜은 도 10과 같다.
도 10에서 프로토콜은 기본적으로 앞서 설명한 Single-core CPU에서와 같이 GPU와의 공유되는 데이터는 기본적으로 invalidation을 기본으로 한다. 이것은 CPU가 위임한 작업을 위한 데이터에 대하여 CPU가 공유하여 쓰고자할 때 update를 최소화하기 위해 기본적으로 GPU는 CPU의 공유된 캐시라인들을 invalidation하도록 한다.
이러한 프로토콜을 포함하는 캐시일관성제어부의 개략적은 구조는 도 6에 도시된 바와 같고 캐시일관성제어부는 크게 세 가지 부분으로 구성된다.
첫 번째는 앞서 설명한 프로토콜의 상태 변화를 조정하기 위한 comparator이다. comparator는 GPU와 CPU의 L1 cache controller로부터 주소와 line의 상태를 입력받아 이들의 상태를 관리한다.
두 번째는 cache-to-cache 데이터 전송 unit이다. 이 unit은 comparator로부터 L1 cache간의 데이터 전송이 필요할 경우 이들 간의 데이터 전송을 담당한다.
세 번째는 L2 cache controller이다. L2 controller는 통상적인 cache eviction rule을 적용하여 L2를 관리할뿐만 아니라, 앞서 설명한 프리페처로부터 요청이 있을 경우 L2를 필요한 크기의 영역으로 partitioning하여 GPU의 프리페칭을 위해 필요한 메모리전송을 수행한다.
도 11은 본 발명의 일실시예에 따른 CPU와 GPU 간의 협업 시스템이 확장된 시스템을 나타낸 도면으로, 도 11에 도시된 협업 시스템은 두 개의 CPU와 GPU가 메모리를 공유하는 구조이다.
전술한 CPU와 GPU 간의 협업 시스템의 구조는 L2 뿐만 아니라 L3 캐시를 통한 공유 구조로도 확장이 가능하며, 단일 CPU 뿐만 아니라 멀티 CPU와 GPU 간의 협업 구조로도 확장이 가능하다.
멀티 CPU와 GPU는 L2 캐시는 각각 가지고 있으며, L3는 공유하는 구조이다. 작업관리부는 앞서 설명한 구조에서처럼 CPU와의 인터페이스를 통해 작동한다. 그러나 캐시일관성제어부는 CPU간의 메모리 공유를 위해 항상 동작하여야 한다.
이상의 설명은 본 발명의 기술적 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면, 본 발명의 본질적 특성을 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능하다. 따라서, 본 발명에 표현된 실시예들은 본 발명의 기술적 사상을 한정하는 것이 아니라, 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 권리범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 특허청구범위에 의하여 해석되어야 하고, 그와 동등하거나, 균등한 범위 내에 있는 모든 기술적 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (15)

  1. CPU와 GPU 간의 협업 시스템에 있어서,
    상기 CPU가 요청하는 작업을 전달받아 상기 GPU에 요청하며, 상기 GPU가 처리한 작업 결과를 상기 CPU로 전달하는 작업관리부; 및
    상기 GPU의 주소 공간과 메인 메모리의 주소 공간의 매핑을 보조하는 주소매핑부
    를 포함하는 CPU와 GPU 간의 협업 시스템.
  2. 제1항에 있어서, 상기 작업관리부는
    상기 CPU가 요청하는 작업에 해당하는 코드 정보 및 상기 작업을 수행하기 위하여 필요한 데이터의 주소 정보를 상기 CPU로부터 전달받는 것
    인 CPU와 GPU 간의 협업 시스템.
  3. 제1항에 있어서, 상기 작업관리부는
    상기 GPU의 주소 공간과 상기 작업에 필요한 데이터의 주소 정보를 매핑한 테이블을 상기 주소매핑부에 로드하는 것
    인 CPU와 GPU 간의 협업 시스템.
  4. 제1항에 있어서, 상기 작업관리부는
    코프로세서 인터페이스와 동일한 인터페이스로 상기 CPU와 연결된 것
    인 CPU와 GPU 간의 협업 시스템.
  5. 제1항에 있어서, 상기 작업관리부는
    상기 CPU가 요청한 작업을 상기 GPU의 각 코어에 분배하여 요청하고, 상기 GPU의 각 코어의 작업 상태를 모니터링하는 것
    인 CPU와 GPU 간의 협업 시스템.
  6. 제1항에 있어서,
    상기 GPU가 처리 중인 데이터 다음에 처리되어야할 데이터를 상기 메인 메모리로부터 캐시 메모리로 가져오는 프리페처
    를 더 포함하는 CPU와 GPU 간의 협업 시스템.
  7. 제6항에 있어서, 상기 프리페처는
    상기 작업관리부로부터 작동신호를 입력받으면, 상기 GPU에 필요한 데이터를 상기 메인 메모리에서 상기 캐시 메모리로 가져오고 처리완료된 데이터를 상기 캐시 메모리에서 제거하는 것
    인 CPU와 GPU 간의 협업 시스템.
  8. 제1항에 있어서,
    상기 CPU의 캐시 메모리에 저장된 데이터와 상기 GPU의 캐시 메모리에 저장된 데이터를 일치시키는 캐시일관성제어부
    를 더 포함하는 CPU와 GPU 간의 협업 시스템.
  9. 제8항에 있어서, 상기 작업관리부는
    상기 CPU의 캐시 메모리에 저장된 데이터와 상기 GPU의 캐시 메모리에 저장된 데이터를 일치시킬 필요가 있는지 여부를 확인하고, 데이터 일치가 필요하면 상기 캐시일관성제어부를 작동시키는 것
    인 CPU와 GPU 간의 협업 시스템.
  10. CPU가 요청하는 작업을 전달받아 GPU로 요청하는 단계;
    상기 GPU의 주소 공간을 메인 메모리의 주소 공간과 매핑하는 단계; 및
    상기 GPU가 처리한 작업 결과를 상기 CPU로 전달하는 단계
    를 포함하는 CPU와 GPU 간의 협업 방법.
  11. 제10항에 있어서, 상기 CPU가 요청하는 작업을 전달받아 GPU로 요청하는 단계는
    상기 CPU로부터 작업에 해당하는 코드 정보 및 작업에 필요한 데이터의 주소 정보를 전달받는 단계를 포함하는 것
    인 CPU와 GPU 간의 협업 방법.
  12. 제10항에 있어서, 상기 CPU가 요청하는 작업을 전달받아 GPU로 요청하는 단계는
    상기 전달받은 작업을 분배하여 상기 GPU의 각 코어에 요청하고, 상기 GPU의 각 코어의 작업 상태를 모니터링하는 단계를 포함하는 것
    인 CPU와 GPU 간의 협업 방법.
  13. 제11항에 있어서, 상기 GPU의 주소 공간을 메인 메모리의 주소 공간과 매핑하는 단계는
    상기 GPU의 주소 공간과 상기 작업에 필요한 데이터의 주소 정보를 매핑한 테이블을 생성하는 단계; 및
    상기 테이블을 참조하여 상기 GPU가 주소를 변환하는 단계를 포함하는 것
    인 CPU와 GPU 간의 협업 방법.
  14. 제10항에 있어서,
    상기 GPU가 처리 중인 데이터 다음에 처리되어야할 데이터를 확인하는 단계; 및
    상기 확인된 데이터를 상기 메인 메모리로부터 캐시 메모리로 가져오는 단계
    를 더 포함하는 CPU와 GPU 간의 협업 방법.
  15. 제10항에 있어서,
    상기 CPU의 데이터와 상기 GPU의 데이터를 일치시킬 필요가 있는 경우에 양 데이터를 일치시키기 위해 캐시일관성 제어 모듈을 작동시키는 단계
    를 더 포함하는 CPU와 GPU 간의 협업 방법.
PCT/KR2013/003721 2013-04-30 2013-04-30 Cpu와 gpu 간의 협업 시스템 및 그 방법 WO2014178450A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/KR2013/003721 WO2014178450A1 (ko) 2013-04-30 2013-04-30 Cpu와 gpu 간의 협업 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2013/003721 WO2014178450A1 (ko) 2013-04-30 2013-04-30 Cpu와 gpu 간의 협업 시스템 및 그 방법

Publications (1)

Publication Number Publication Date
WO2014178450A1 true WO2014178450A1 (ko) 2014-11-06

Family

ID=51843571

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2013/003721 WO2014178450A1 (ko) 2013-04-30 2013-04-30 Cpu와 gpu 간의 협업 시스템 및 그 방법

Country Status (1)

Country Link
WO (1) WO2014178450A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105549932A (zh) * 2015-12-11 2016-05-04 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器主机驱动软件结构
WO2016093427A1 (ko) * 2014-12-11 2016-06-16 한화테크윈 주식회사 소형통합제어장치
WO2016093428A1 (ko) * 2014-12-11 2016-06-16 한화테크윈 주식회사 소형통합제어장치
WO2018052606A3 (en) * 2016-09-16 2018-08-09 Intel Corporation Apparatus and method for optimized ray tracing
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11262831B2 (en) 2018-08-17 2022-03-01 Hewlett-Packard Development Company, L.P. Modifications of power allocations for graphical processing units based on usage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060080398A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Direct access of cache lock set data without backing memory
US20090128574A1 (en) * 2006-05-25 2009-05-21 Sony Computer Entertainment Inc. Multiprocessor System, Library Module And Rendering Processing Method
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
US20110023040A1 (en) * 2009-07-24 2011-01-27 Apple Inc. Power-efficient interaction between multiple processors
US20120162237A1 (en) * 2010-12-22 2012-06-28 Jaewoong Chung Bundle-Based CPU/GPU Memory Controller Coordination Mechanism

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060080398A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Direct access of cache lock set data without backing memory
US20090128574A1 (en) * 2006-05-25 2009-05-21 Sony Computer Entertainment Inc. Multiprocessor System, Library Module And Rendering Processing Method
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
US20110023040A1 (en) * 2009-07-24 2011-01-27 Apple Inc. Power-efficient interaction between multiple processors
US20120162237A1 (en) * 2010-12-22 2012-06-28 Jaewoong Chung Bundle-Based CPU/GPU Memory Controller Coordination Mechanism

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016093427A1 (ko) * 2014-12-11 2016-06-16 한화테크윈 주식회사 소형통합제어장치
WO2016093428A1 (ko) * 2014-12-11 2016-06-16 한화테크윈 주식회사 소형통합제어장치
CN105549932A (zh) * 2015-12-11 2016-05-04 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器主机驱动软件结构
CN105549932B (zh) * 2015-12-11 2018-08-21 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器主机驱动装置
WO2018052606A3 (en) * 2016-09-16 2018-08-09 Intel Corporation Apparatus and method for optimized ray tracing
US10580189B2 (en) 2016-09-16 2020-03-03 Intel Corporation Apparatus and method for optimized ray tracing
US11321902B2 (en) 2016-09-16 2022-05-03 Intel Corporation Apparatus and method for optimized ray tracing
US11262831B2 (en) 2018-08-17 2022-03-01 Hewlett-Packard Development Company, L.P. Modifications of power allocations for graphical processing units based on usage
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments

Similar Documents

Publication Publication Date Title
WO2014178450A1 (ko) Cpu와 gpu 간의 협업 시스템 및 그 방법
EP2476051B1 (en) Systems and methods for processing memory requests
US6804741B2 (en) Coherent memory mapping tables for host I/O bridge
Archibald et al. Cache coherence protocols: Evaluation using a multiprocessor simulation model
US7657710B2 (en) Cache coherence protocol with write-only permission
US7702826B2 (en) Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
US8171230B2 (en) PCI express address translation services invalidation synchronization with TCE invalidation
US8868847B2 (en) Multi-core processor snoop filtering
US8719547B2 (en) Providing hardware support for shared virtual memory between local and remote physical memory
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
JP3264319B2 (ja) バスブリッジ
US20020065989A1 (en) Master/slave processing system with shared translation lookaside buffer
US20030041212A1 (en) Distributed read and write caching implementation for optimized input//output applications
JP2004506981A (ja) マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法
US20060080511A1 (en) Enhanced bus transactions for efficient support of a remote cache directory copy
WO2016139444A1 (en) Cache maintenance instruction
WO2023103767A1 (zh) 基于同构多核的多操作系统及通信方法、芯片
US6742103B2 (en) Processing system with shared translation lookaside buffer
EP3274860B1 (en) A method, apparatus and system for optimizing cache memory transaction handling in a processor
US8443148B2 (en) System-wide quiescence and per-thread transaction fence in a distributed caching agent
US20140281270A1 (en) Mechanism to improve input/output write bandwidth in scalable systems utilizing directory based coherecy
US9158692B2 (en) Cache injection directing technique
KR101442643B1 (ko) Cpu와 gpu 간의 협업 시스템 및 그 방법
US7389398B2 (en) Methods and apparatus for data transfer between partitions in a computer system
JPH07152647A (ja) 共有メモリマルチプロセッサ

Legal Events

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

Ref document number: 13883604

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: 13883604

Country of ref document: EP

Kind code of ref document: A1