WO2012011644A1 - 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템 - Google Patents

중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템 Download PDF

Info

Publication number
WO2012011644A1
WO2012011644A1 PCT/KR2010/009416 KR2010009416W WO2012011644A1 WO 2012011644 A1 WO2012011644 A1 WO 2012011644A1 KR 2010009416 W KR2010009416 W KR 2010009416W WO 2012011644 A1 WO2012011644 A1 WO 2012011644A1
Authority
WO
WIPO (PCT)
Prior art keywords
simulation
gpu
data
processing unit
cores
Prior art date
Application number
PCT/KR2010/009416
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 US13/811,436 priority Critical patent/US9378533B2/en
Publication of WO2012011644A1 publication Critical patent/WO2012011644A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Definitions

  • the present invention relates to a central processing unit for performing GPU simulation, a method for GPU simulation thereof, and a computing system including the same.
  • the GPU Graphics Processing Unit
  • 2D two-dimensional
  • 3D three-dimensional
  • GPU Graphics Processing Unit
  • GPUs are evolving into structures similar to multi-core central process units (CPUs).
  • CPUs central process units
  • GPGPU general purpose computation on graphics processing unit
  • Graphics processing must handle huge amounts of operations at the same time, which often do not depend on each other.
  • the structure of a GPU which is similar in shape to a multi-core CPU, is effective in parallel processing of independent operations.
  • GPU simulators and source code dynamic analysis tools are required to effectively model GPUs, improve GPU performance, and develop new GPUs. In response to these demands, GPU simulators and source code dynamic analysis tools are being actively developed.
  • An object of the present invention is to provide a central processing unit having an improved GPU simulation speed, and a computing system including the same. It is also an object of the present invention to provide a GPU simulation method having an improved speed.
  • a GPU (Graphics Processing Unit) simulation method of a central processing unit including a plurality of cores (Multi Core) to achieve the above object is to generate a main thread (thread), the main thread corresponding to any one of the cores Making a step; Creating a plurality of work threads and mapping the work threads to the cores; Allocating simulation operations for computation units of a graphics processing unit (GPU) to the working threads according to the control of the main thread; Performing the allocated simulation operations in the working threads and outputting simulation data; And generating synchronization data based on the simulation data in the main thread.
  • GPU Graphics Processing Unit
  • the main thread may be an upper thread of the working threads.
  • the generating of the plurality of work threads may include generating work threads based on the number of cores.
  • the generating of the plurality of work threads may include generating the work threads as many as the number of cores except cores corresponding to the main thread among the cores.
  • mapping of the working threads to the cores is performed under the control of the main thread.
  • mapping of the working threads to the cores may include mapping the working threads to cores other than the core corresponding to the main thread among the cores.
  • the generating of the synchronization data may include storing the output simulation data and generating the synchronization data based on the stored simulation data.
  • the generating of the synchronization data may include generating the synchronization data based on the stored simulation data when the allocated simulation operations are completed.
  • a central processing unit (CPU) including a plurality of cores.
  • a central processing unit (CPU) includes an upper core corresponding to a main thread; And a plurality of lower cores corresponding to at least one working thread, wherein the at least one working thread performs simulation operations on computation units of a graphics processing unit (GPU) to generate simulation data, and the main thread Assign simulation operations for the computational units of the GPU to the at least one working thread, and generate synchronization data based on the simulation data.
  • GPU graphics processing unit
  • the main thread may be an upper thread of the at least one working thread.
  • the main thread may generate the at least one working thread based on the number of the lower cores.
  • the main thread may create the at least one working thread by the number of the lower cores.
  • the upper core may store the generated simulation data, and the main thread may generate synchronization data based on the stored simulation data.
  • the main thread may generate synchronization data based on the stored simulation data when simulation operations for computation units of the GPU are terminated.
  • a computing system includes a central processing unit (CPU) including a plurality of cores; RAM (Random Acess Memory, RAM) for storing a GPU (Graphics Processing Unit) simulation code, wherein the central processing unit comprises an upper core corresponding to the main thread; And a plurality of lower cores corresponding to at least one work thread, wherein the main thread allocates simulation operations for the compute units of the GPU to the at least one work thread, and is generated in the at least one work thread. Synchronization data is generated based on simulation data, and the at least one working thread generates simulation data by performing simulation operations on computation units of the GPU assigned to each.
  • CPU central processing unit
  • RAM Random Acess Memory
  • GPU Graphics Processing Unit
  • the main thread may generate the at least one working thread based on the number of the lower cores.
  • the main thread can load the GPU simulation code.
  • the main thread may allocate simulation operations for the computation units of the GPU to the at least one working thread based on the GPU simulation code.
  • the RAM may store the simulation data generated by the at least one working thread.
  • the RAM may provide the simulation data to the upper core when simulation operations for computation units of the GPU are terminated in the at least one working thread.
  • the main thread may generate synchronization data based on the simulation data when simulation operations for the calculation units of the GPU are terminated.
  • the central processing unit generates work threads corresponding to a plurality of cores, and GPU simulation is performed in parallel in the work threads.
  • a central processing unit with improved GPU simulation speed and a computing system including the same.
  • a GPU simulation method with improved speed is provided.
  • FIG. 1 is a block diagram illustrating a computing system.
  • FIG. 2 is a block diagram illustrating a first calculator of the GPU of FIG. 1.
  • FIG. 3 is a flowchart illustrating a method of performing a simulation on the GPU illustrated in FIG. 1.
  • FIG. 4 is a block diagram illustrating a central processing unit, RAM, and a system bus.
  • 5 to 7 are block diagrams illustrating a data processing process of a main thread and a work thread.
  • FIG. 8 is a flowchart illustrating a method of performing GPU simulation according to an exemplary embodiment of the present invention.
  • FIG. 9 is a block diagram illustrating a case where one work thread corresponds to one core according to another exemplary embodiment.
  • A, B and C are interpreted to mean logic (A or B or C) rather than using exclusive logic or. And it is to be understood that the steps in the method may be executed in a different order unless the principles of the present invention are changed.
  • the computing system 100 may include a central processing unit (CPU) 110, a RAM 120, a random access memory (RAM), a user interface 130, a power supply 140, a system bus 150, a fire. Volatile memory device 160, and GPU 170.
  • CPU central processing unit
  • RAM random access memory
  • user interface 130 a user interface 130
  • power supply 140 a system bus 150
  • system bus 150 a fire. Volatile memory device 160
  • GPU 170 is a block diagram illustrating a computing system 100.
  • GPU 1 is a block diagram illustrating a computing system 100.
  • the computing system 100 may include a central processing unit (CPU) 110, a RAM 120, a random access memory (RAM), a user interface 130, a power supply 140, a system bus 150, a fire. Volatile memory device 160, and GPU 170.
  • the central processing unit 110 includes the first to Nth cores 111 to 11N (where N is a natural number). That is, the central processing unit 110 includes a plurality of cores. For example, central processing unit 110 may include four cores, but is not limited thereto.
  • the central processing unit 110 is configured to control the overall operation of the computing system 100.
  • Data processed by the CPU 110 or the GPU 170 may be stored in the nonvolatile memory device 160.
  • Data provided through the user interface 130 may be stored in the nonvolatile memory device 160.
  • the user interface 130 may receive data from a user and provide it to the computing system 100.
  • the RAM 120 may store data calculated by the CPU 110 or the GPU 170. Data stored in the RAM 120 may be provided to the central processing unit 110 or the GPU 170 in response to a call of the central processing unit 110 or the GPU 170. In exemplary embodiments, the CPU 110 or the GPU 170 may load data stored in the RAM 120, perform an operation on the loaded data, and load the RAM 120 according to the data generated as a result of the operation. The stored data can be updated. In addition, the RAM 120 may store data of the nonvolatile memory device 160 by loading data from the nonvolatile memory device 160.
  • the storage and reading speed of data is faster in the RAM 120 than in the nonvolatile memory device 160.
  • Data stored in the nonvolatile memory device 160 is preserved even when power is cut off from the computing system 100, while data stored in the RAM 120 is not preserved when power is cut off from the computing system 100.
  • data related to the predetermined operation is loaded from the nonvolatile memory device 160 into the RAM 120.
  • the CPU 110 may perform a predetermined operation using the data stored in the RAM 120.
  • the system bus 150 provides a data communication function between the components included in the computing system 100. If the system bus 150 is an advanced graphics port (AGP) bus, sufficient graphics data may not be delivered to the GPU. In this case, the graphics data will be stored in local memory included in the GPU without passing through the AGP bus.
  • AGP advanced graphics port
  • the GPU 170 is electrically connected to the CPU 110, the RAM 120, the user interface 130, the power supply 140, and the nonvolatile memory device 160 through the system bus 150. GPU 170 processes graphics data. GPU 170 receives data via system bus 150. And generate graphical and video images for display on a monitor (not shown) or other display device.
  • GPU 170 is a general purpose computation on graphics processing unit (GPU).
  • the general purpose GPU refers to a GPU that additionally performs operations performed by the central processing unit 110 as well as operations for graphics and video images for display. That is, the GPU 170 may perform general purpose operation.
  • the GPU 170 may perform an efficient operation for an application having a large amount of data, a high degree of parallelism between the data, and a small dependency between the data.
  • computing system 100 may include one or more GPUs.
  • the computing system 100 may process general purpose operations without including the GPU 170. While the GPU 170 is not included in the computing system 100, simulation is performed on the computing units included in the GPU 170 (described in detail with reference to FIG. 2) to generate a virtual GPU.
  • FIG. 2 is a block diagram illustrating the first calculator 200 of the GPU 170 of FIG. 1.
  • the first calculator 200 includes first to R-th operation blocks 210 to 2R0.
  • the first operation block 210 may include a cache 211, a multi thread issue block 212, a plurality of scale processor (SP) blocks 213, super function unit (SFU) blocks 214, and Operation block memory 215 is included.
  • SP scale processor
  • SFU super function unit
  • Operation block memory 215 is included.
  • the second to Rth operation blocks 220 to 2R0 may be configured similarly to the first operation block 210.
  • the cache 211 stores data to be processed in the SP blocks 213 and the SFU blocks 214.
  • Multithreaded issue block 212 stores the operator to be processed in SP blocks 213 and SFU blocks 214.
  • the SP blocks 213 perform a simple operation compared to the SFU blocks 214.
  • the SP blocks 213 may each perform an arithmetic logic operation.
  • SFU blocks 214 perform special operations that are difficult to perform in SP blocks 213.
  • the SFU blocks 214 may perform a square root operation, an exponentiation, a trigonometric operation, or the like.
  • the operation block memory 215 stores data processed in the SP blocks 213 and the SFU blocks 214. Data stored in the operation block memory 215 will be output to the outside in response to a call from the outside.
  • Data stored in cache 211 is sent to multithreaded issue block 212.
  • the multi-threaded issue block 212 then allocates data transmitted from the operator and cache 211 stored in the multi-threaded issue block 212 to the SP blocks 213 and the SFU blocks 214.
  • SP blocks 213 and SFU blocks 214 process the received operator and data, respectively.
  • the processed data is stored in the operation block memory 215.
  • the data stored in the operation block memory 215 will be output to the outside.
  • the SP blocks 213 and the SFU blocks 214 are collectively referred to as a "GPU calculation unit".
  • each of the GPU arithmetic units of the first arithmetic block 210 processes data allocated to each of the GPU arithmetic units. That is, the first operation block 210 processes data in parallel. Similarly, the first to R-th operation blocks 210 to 2R0 included in the first operation unit 200 may process data allocated to each. Similarly, the first to Nth operations included in the GPU 170 will process the data allocated to each. As a result, the GPU 170 can perform efficient operation when the degree of parallelism between the data is high and the dependency between the data is small.
  • the simulation may be performed in parallel for each of the GPU computing units. That is, when the CPU 110 performs the simulation on the GPU computing units, the simulation may be performed on the GPU computing units in parallel using the plurality of cores 111 to 11N.
  • the computing system 100 may include a plurality of central processing units.
  • the simulation may be performed in parallel on GPU computing units using a plurality of central processing units.
  • 3 is a flowchart illustrating a method of performing GPU simulation. 1 and 3, in operation S11, simulation of each of the GPU computing units is performed. For example, in the computing system 100, when an operation to be processed by the GPU 170 is called, GPU simulation code is performed to perform simulation on the GPU calculation units. As the simulation is performed, the virtual GPU 170 may be generated.
  • step S12 it is verified whether a simulation has been performed for all GPU computing units. If the simulation is not performed for all the calculation units, the simulation is continuously performed for the calculation units for which the simulation is not performed (S11). If the simulation has been performed for all the computational units, the simulation ends. If only one core is used to simulate the computational units, efficient GPU simulation running time will not be guaranteed.
  • FIG. 4 is a block diagram illustrating a central processing unit 110, a RAM 120, and a system bus 150. 1 and 4, the central processing unit 110 and the RAM 120 are electrically connected through the system bus 150.
  • the central processing unit 100 includes a plurality of cores 111-11N.
  • RAM 120 stores GPU simulation code.
  • the GPU simulation code may be stored in the nonvolatile memory device 160.
  • the GPU simulation code stored in the nonvolatile memory device 160 may be loaded into the RAM 120.
  • the CPU 110 may load the GPU simulation code from the RAM 120 and perform simulation on the GPU computation units using the loaded GPU simulation code.
  • GPU simulation code may be loaded directly from nonvolatile memory device 160.
  • the central processing unit 110 performs a simulation on the GPU computing units using one core of the plurality of cores.
  • the GPU simulation code is transmitted to the central processing unit 110 via the system bus 150.
  • the central processing unit 110 may generate a call signal (not shown), and in response to the generated call signal, data to be processed stored in the RAM 120 may be transmitted to the central processing unit 110. .
  • the central processing unit 110 operates in units of threads.
  • a thread may be created by an operating system (OS).
  • OS operating system
  • the central processing unit 110 may create a thread, place the thread in a core having a small amount of calculation, and perform an operation on the thread.
  • threads are arranged in the core having the least amount of computation among the plurality of cores 111-11N.
  • the core corresponding to each thread can create subthreads of each thread.
  • the generated lower threads will correspond to any one of the plurality of cores 111-11N.
  • the thread corresponding to the core that created the created lower threads is called the main thread.
  • the core corresponding to the main thread can create a plurality of sub-threads.
  • the generated lower threads correspond to any one of the plurality of cores (the second to N cores 112 to 11N in FIG. 4) except for the core corresponding to the main thread.
  • a plurality of sub-threads may be generated in each of the seven cores except for the core corresponding to the main thread.
  • the first core 111 is shown to correspond to the main thread, but this is illustrative and any one of the second to Nth cores 112 to 11N may correspond to the main thread.
  • the core corresponding to the main thread generates at least one lower thread (hereinafter, referred to as a worker thread) based on the number of cores included in the CPU 110. .
  • the core corresponding to the main thread controls the GPU simulation.
  • the core corresponding to each working thread performs simulations on GPU computational units.
  • the number of working threads may be determined by the number of cores included in the central processing unit 110.
  • the core corresponding to the main thread allocates each working thread to the cores 112 to 11N except for the core 111 corresponding to the main thread among the cores included in the central processing unit 110.
  • the first to Mth working threads 181 to 18M are allocated to the second core 172.
  • work threads will be allocated to the third to Nth cores 113 to 11N, respectively.
  • the core corresponding to the main thread then assigns simulation operations for GPU computational units to each working thread.
  • 5 to 7 are block diagrams illustrating data processing of main threads and work threads.
  • the GPU simulation code is stored in the RAM 120.
  • the first core 111 may allocate simulation operations for GPU computing units to each working thread based on the GPU simulation code. For example, the first core 111 transmits address information of the GPU simulation code to each working thread based on the GPU simulation code.
  • the simulation operations for the GPU computing units may be performed on the first to Mth working threads 181 to 18M of the second core 172, and on the working threads (not shown) of the third core 113. And assigned to working threads (not shown) of the Nth core 11N.
  • the working threads will receive GPU simulation code from RAM 120 to perform the assigned simulation operations.
  • the main thread can send address information corresponding to the assigned simulation operations to the working thread.
  • Each working thread will request a portion of the GPU simulation code corresponding to the address information from RAM 120 based on the received address information.
  • the simulated data in each working thread is transmitted to the RAM 120.
  • the first simulated data a is transmitted from the first working thread 181 to the RAM 120.
  • the second simulated data b is sent to the RAM 120 from the Mth thread of work.
  • the third simulated data c from the working thread (not shown) of the third core 113 and the fourth simulated data d from the working thread of the Nth core 11N are respectively stored in the RAM 120. Is sent.
  • simulated data in work threads not shown in FIG. 6 will also be sent to RAM 120.
  • the cores corresponding to the work threads will transmit the simulated data to the RAM 120 and then send the simulation completion signals to the first core 111 to which the main thread is assigned.
  • the first core 111 may load the simulated data from the RAM 120.
  • the first core 111 synchronizes simulated data in each working thread. That is, the first core 111 synchronizes the simulated data in the main thread.
  • a simulation is performed on GPU computing units in a plurality of work threads
  • a simulation is performed on GPU simulation code allocated to each work thread.
  • the data generated in each working thread is transmitted to the RAM (120).
  • the core corresponding to the main thread divides and synchronizes simulation results for the GPU computational units performed. That is, the core corresponding to the main thread collects simulation data about GPU computational units stored in the RAM 120 and synchronizes the simulation data into one simulation result data.
  • the synchronized data will constitute data for the virtual GPU.
  • the main thread loads first to fourth simulated data a to d from the RAM 120. It will then synchronize the loaded data. Synchronization on the simulated data is performed after the simulation for the GPU compute units allocated to all working threads is finished. And, although not shown in FIG. 7, the synchronized data will be transmitted to the RAM 120.
  • step S110 the core corresponding to the main thread creates a plurality of working threads.
  • the main thread will correspond to any one of the cores included in the central processing unit 110.
  • multiple work threads will be assigned to cores that do not correspond to the main thread.
  • M work threads may be generated in each of the seven cores except the core corresponding to the main thread.
  • the main thread may generate work threads as many as the number of cores that do not correspond to the main thread among the cores included in the central processing unit 110. For example, if the central processing unit 110 includes eight cores, seven work threads may be created.
  • the core corresponding to the main thread allocates simulation operations for GPU computing units (see FIG. 2) to the working threads (S120).
  • operation S130 a simulation is performed on GPU computing units in each working thread.
  • step S140 the core corresponding to the main thread synchronizes data simulated by the work threads.
  • simulated data in a working thread is sent to the main thread, and the core corresponding to the main thread can synchronize the simulated data.
  • the data simulated in the working thread is stored in the RAM 120 (see FIG. 4), and when the simulation operations for the GPU computing units are all completed, the data stored in the RAM 120 is transmitted to the main thread. Synchronization may be performed on the data transmitted at 120.
  • the core corresponding to each working thread will send a completion signal to the main thread when sending simulated data to RAM 120.
  • the core corresponding to the main thread may transmit a data request signal to the RAM 120 and receive data from the RAM 120.
  • 9 is a block diagram illustrating a case in which one work thread corresponds to one core according to another embodiment of the present invention.
  • the main thread corresponds to the first core 111.
  • the first through N-th working threads correspond to the second through N-th cores 112 through 11N.
  • the main thread will assign simulation operations for GPU computational units to each of the first through N-th working threads.
  • the first through N-th working threads will perform simulation operations assigned to each.
  • the main thread will then perform synchronization on the simulated data in the first through N-1th working threads.
  • the work threads corresponding to the plurality of cores are generated, and the simulation is performed in parallel in the work threads.
  • the simulation speed will improve. Therefore, according to an embodiment of the present invention, a GPU simulator having improved speed is provided.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명의 실시 예에 따른 중앙 처리 장치(CPU)는 주 쓰레드에 대응되는 상위 코어, 및 각각 적어도 하나의 작업 쓰레드에 대응되는 복수의 하위 코어를 포함한다. 작업 쓰레드는 GPU(Graphics Processing Unit)의 연산 유닛들에 대한 시뮬레이션 연산들을 수행하여 시뮬레이션 데이터를 생성하고, 상기 주 쓰레드는 생성된 시뮬레이션 데이터에 기반하여 동기화(synchronization) 데이터를 생성한다.

Description

중앙 처리 장치, 그것의 GPU 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템
본 발명은 GPU 시뮬레이션을 수행하는 중앙 처리 장치, 그것의 GPU 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템에 관한 것이다.
최근 들어, 첨단 컴퓨터 애플리케이션(application)들이 더욱 복잡해지고, 이를 처리하는 시스템들에 대한 요구들이 증가함에 따라, 더 높은 연산 처리량(computational throughput)에 대한 요구도 커지고 있다. 특히, 그래픽 애플리케이션들은, 바람직한 시각 효과들을 성취하기 위해 짧은 시간 동안 막대한 횟수의 데이터 접근들, 데이터 연산들, 및 데이터 조작들을 필요로 한다. 따라서, 그래픽 애플리케이션들에는 향상된 데이터 연산 처리량이 요구된다. 특히, 실시간 멀티미디어 애플리케이션들은 초당 수천 메가 비트의 빠른 처리 속도를 필요로 한다.
2차원(two dimensions,2D) 또는 3차원(three dimensions,3D) 그래픽 연산의 가속화를 위하여 개발된 GPU(Graphics Processing Unit)는 구조적으로 그래픽 연산에 최적화된 특수 목적 연산 프로세서의 형태를 취한다. 그래픽 관련 연산이 정교해지고 복잡해지면서, 현대의 GPU는 멀티 코어 CPU(Multi Core Central Process Unit)와 유사한 형태의 구조로 발전하고 있다. 그리고, 이러한 특성을 활용하여, GPU를 CPU와 같은 범용 목적 연산에 활용하는 범용 GPU(GPGPU: General Purpose computation on Graphics Processing Unit)가 개발되고 있다.
그래픽 처리는 동시에 방대한 양의 연산들을 처리해야 하는데, 이러한 연산들은 서로 의존성이 없는 경우가 많다. 멀티 코어 CPU와 유사한 형태를 가지는 GPU의 구조는 의존성이 없는 연산들을 병렬처리하는데 있어서 효과적이다.
GPU를 효과적으로 모델링하고, GPU의 성능을 개선하고, 새로운 GPU를 개발하기 위하여 GPU 시뮬레이터와 소스 코드 동적 분석 도구들이 요구된다. 이러한 요구에 따라 GPU 시뮬레이터와 소스 코드 동적 분석 도구들이 활발히 개발되고 있다.
본 발명의 목적은 향상된 GPU 시뮬레이션 속도를 가지는 중앙 처리 장치, 그리고 그것을 포함하는 컴퓨팅 시스템을 제공하는 데에 있다. 또한, 본 발명의 목적은 향상된 속도를 가지는 GPU 시뮬레이션 방법을 제공하는데에 있다.
상기 목적을 달성하기 위한 복수의 코어(Multi Core)를 포함하는 중앙 처리 장치의 GPU(Graphics Processing Unit) 시뮬레이션 방법은 주 쓰레드(Thread)를 생성하고, 상기 주 쓰레드를 상기 코어들 중 어느 하나에 대응시키는 단계; 복수의 작업 쓰레드를 생성하고, 상기 작업 쓰레드들을 상기 코어들에 대응시키는 단계; 상기 주 쓰레드의 제어에 따라 GPU(Graphics Processing Unit)의 연산 유닛들에 대한 시뮬레이션 연산들을 상기 작업 쓰레드들에 할당하는 단계; 상기 작업 쓰레드들에서 상기 할당된 시뮬레이션 연산들을 수행하고, 시뮬레이션 데이터를 출력하는 단계; 및 상기 주 쓰레드에서 상기 시뮬레이션 데이터에 기반하여 동기화(synchronization) 데이터를 생성하는 단계를 포함한다.
실시 예로서, 상기 주 쓰레드는 상기 작업 쓰레드들의 상위 쓰레드일 수 있다.
실시 예로서, 상기 복수의 작업 쓰레드를 생성하는 단계는 상기 코어들의 개수에 기반하여 작업 쓰레드들을 생성하는 단계를 포함할 수 있다.
실시 예로서, 상기 복수의 작업 쓰레드를 생성하는 단계는 상기 코어들 중 상기 주 쓰레드에 대응하는 코어를 제외한 코어들의 개수만큼 상기 작업 쓰레드들을 생성하는 단계를 포함할 수 있다.
실시 예로서, 상기 작업 쓰레드들을 상기 코어들에 대응시키는 단계는 상기 주 쓰레드의 제어에 따라 수행된다.
실시 예로서, 상기 작업 쓰레드들을 상기 코어들에 대응시키는 단계는 상기 작업 쓰레드들을 상기 코어들 중 상기 주 쓰레드에 대응하는 코어를 제외한 코어들에 대응시키는 단계를 포함할 수 있다.
실시 예로서, 상기 동기화 데이터를 생성하는 단계는 상기 출력된 시뮬레이션 데이터를 저장하고 상기 저장된 시뮬레이션 데이터에 기반하여 상기 동기화 데이터를 생성하는 단계를 포함할 수 있다.
실시 예로서, 상기 동기화 데이터를 생성하는 단계는 상기 할당된 시뮬레이션 연산들이 종료될 때, 상기 저장된 시뮬레이션 데이터에 기반하여 상기 동기화 데이터를 생성하는 단계를 포함할 수 있다.
본 발명의 다른 일면은 복수의 코어(Multi Core)를 포함하는 중앙 처리 장치(CPU)에 관한 것이다. 본 발명의 실시 예에 따른 중앙 처리 장치(CPU)는 주 쓰레드(thread)에 대응되는 상위 코어; 적어도 하나의 작업 쓰레드에 대응되는 하위 코어를 복수 개 포함하되, 상기 적어도 하나의 작업 쓰레드는 GPU(Graphics Processing Unit)의 연산 유닛들에 대한 시뮬레이션 연산들을 수행하여 시뮬레이션 데이터를 생성하고, 상기 주 쓰레드는 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들을 상기 적어도 하나의 작업 쓰레드에 할당하고, 상기 시뮬레이션 데이터에 기반하여 동기화(synchronization) 데이터를 생성한다.
실시 예로서, 상기 주 쓰레드는 상기 적어도 하나의 작업 쓰레드의 상위 쓰레드일 수 있다.
실시 예로서, 상기 주 쓰레드는 상기 하위 코어들의 개수에 기반하여 상기 적어도 하나의 작업 쓰레드를 생성할 수 있다.
실시 예로서, 상기 주 쓰레드는 상기 하위 코어들의 개수만큼 상기 적어도 하나의 작업 쓰레드를 생성할 수 있다.
실시 예로서, 상기 상위 코어는 상기 생성된 시뮬레이션 데이터를 저장하고, 상기 주 쓰레드는 상기 저장된 시뮬레이션 데이터에 기반하여 동기화 데이터를 생성할 수 있다.
실시 예로서, 상기 주 쓰레드는 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들이 종료될 때, 상기 저장된 시뮬레이션 데이터에 기반하여 동기화 데이터를 생성할 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은 복수의 코어(Multi Core)를 포함하는 중앙 처리 장치(CPU); GPU(Graphics Processing Unit) 시뮬레이션 코드를 저장하는 램(Random Acess Memory,RAM)을 포함하되, 상기 중앙 처리 장치는 주 쓰레드(thread)에 대응되는 상위 코어; 적어도 하나의 작업 쓰레드에 대응되는 하위 코어를 복수 개 포함하되, 상기 주 쓰레드는 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들을 상기 적어도 하나의 작업 쓰레드에 할당하고, 상기 적어도 하나의 작업 쓰레드에서 생성된 시뮬레이션 데이터에 기반하여 동기화(synchronization) 데이터를 생성하고, 상기 적어도 하나의 작업 쓰레드는 각각에 할당된 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들을 수행하여 시뮬레이션 데이터를 생성한다.
실시 예로서, 상기 주 쓰레드는 상기 하위 코어들의 개수에 기반하여 상기 적어도 하나의 작업 쓰레드를 생성할 수 있다.
실시 예로서, 상기 주 쓰레드는 상기 GPU 시뮬레이션 코드를 로드할 수 있다.
실시 예로서, 상기 주 쓰레드는 상기 GPU 시뮬레이션 코드에 기반하여 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들을 상기 적어도 하나의 작업 쓰레드에 할당할 수 있다.
실시 예로서, 상기 램은 상기 적어도 하나의 작업 쓰레드에서 생성된 상기 시뮬레이션 데이터를 저장할 수 있다.
실시 예로서, 상기 램은 상기 적어도 하나의 작업 쓰레드에서 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들이 종료될 때, 상기 시뮬레이션 데이터를 상기 상위 코어에 제공할 수 있다.
실시 예로서, 상기 주 쓰레드는 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들이 종료될 때, 상기 시뮬레이션 데이터에 기반하여 동기화 데이터를 생성할 수 있다.
본 발명의 실시 예에 따르면, 중앙 처리 장치에서 복수의 코어에 대응하는 작업 쓰레드들을 생성하고, 작업 쓰레드에서 병렬적으로 GPU 시뮬레이션이 수행된다. 따라서, 향상된 GPU 시뮬레이션 속도를 가지는 중앙 처리 장치, 그리고 그것을 포함하는 컴퓨팅 시스템이 제공된다. 또한, 향상된 속도를 가지는 GPU 시뮬레이션 방법이 제공된다.
도 1은 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 도 1의 GPU의 제 1 연산부를 보여주는 블록도이다.
도 3은 도 1에 도시된 GPU에 대한 시뮬레이션을 수행하는 방법을 보여주는 순서도이다.
도 4는 중앙 처리 장치, 램 및 시스템 버스를 보여주는 블록도이다.
도 5 내지 도 7 는 주 쓰레드 및 작업 쓰레드들의 데이터 처리 과정을 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 GPU 시뮬레이션을 수행하는 방법을 보여주는 순서도이다.
도 9 본 발명의 다른 실시 예에 따라 하나의 코어에 하나의 작업 쓰레드가 대응되는 경우를 보여주는 블록도이다.
이하의 설명은 사실상 예시적인 것에 불과하고 본 출원의 기술적 사상의 범위를 제한하기 위한 것이 아니다. 앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
A, B 및 C 중 적어도 하나라는 표현은 배타적 논리 or를 사용하는 것이 아닌 논리 (A or B or C)를 의미하는 것으로 해석된다. 그리고 본 발명의 원리를 변경하지 않는 한, 방법 안의 단계들은 다른 순서로 실행될 수 있다고 이해되어야 한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명한다.
도 1은 컴퓨팅 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(100)은 중앙 처리 장치(CPU,110), 램(120, RAM, Random Access Memory), 사용자 인터페이스(130), 전원(140), 시스템 버스(150), 불휘발성 메모리 장치(160), 그리고 GPU(170)를 포함한다.
중앙 처리 장치(110)는 제 1 내지 제 N 코어(111~11N)를 포함한다(여기서, N 은 자연수). 즉, 중앙 처리 장치(110)는 복수의 코어를 포함한다. 예를 들면, 중앙 처리 장치(110)는 4개의 코어들을 포함할 수 있으며, 여기에 한정되는 것은 아니다.
중앙 처리 장치(110)는 컴퓨팅 시스템(100)의 제반 동작을 제어하도록 구성된다. 중앙 처리 장치(110) 또는 GPU(170)에 의해 처리된 데이터는 불휘발성 메모리 장치(160)에 저장될 수 있다. 사용자 인터페이스(130)를 통해 제공된 데이터는 불휘발성 메모리 장치(160)에 저장될 수 있다. 사용자 인터페이스(130)는 사용자(user)로부터 데이터를 수신하여 컴퓨팅 시스템(100)에 제공할 것이다.
램(120)은 중앙 처리 장치(110) 또는 GPU(170)에서 연산된 데이터를 저장할 수 있다. 램(120)에 저장된 데이터는 중앙 처리 장치(110) 또는 GPU(170)의 호출에 응답하여 중앙 처리 장치(110) 또는 GPU(170)에 제공될 수 있다. 예시적으로, 중앙 처리 장치(110) 또는 GPU(170)는 램(120)에 저장된 데이터를 로드하고, 로드된 데이터에 대해 연산을 수행하고, 연산 결과로서 발생된 데이터에 따라 램(120)에 저장된 데이터를 업데이트(update)할 수 있다. 또한, 램(120)은 불휘발성 메모리 장치(160)로부터 데이터를 로드함으로써, 불휘발성 메모리 장치(160)의 데이터를 저장할 수 있다.
데이터의 저장 및 읽기 속도는 램(120)이 불휘발성 메모리 장치(160)보다 빠르다. 그리고, 불휘발성 메모리 장치(160)에 저장된 데이터는 컴퓨팅 시스템(100)에 전원이 차단되더라도 보존되는 반면, 램(120)에 저장된 데이터는 컴퓨팅 시스템(100)에 전원이 차단되면 보존되지 않는다. 중앙 처리 장치(110)에서 소정의 연산이 수행되기 전에, 소정의 연산과 관련된 데이터는 불휘발성 메모리 장치(160)에서 램(120)으로 로드된다. 그리고, 중앙 처리 장치(110)는 램(120)에 저장된 데이터를 이용하여 소정의 연산을 수행할 것이다.
시스템 버스(150)는 컴퓨팅 시스템(100)에 포함된 구성들간의 데이터 통신 기능을 제공한다. 시스템 버스(150)가 AGP(advanced graphics port) 버스인 경우, 충분한 그래픽 데이터가 GPU로 전달될 수 없다. 이 경우, 그래픽 데이터는 AGP 버스를 통과하지 않고, GPU에 포함된 로컬 메모리에 저장될 것이다.
GPU(170)는 시스템 버스(150)를 통해, 중앙 처리 장치(110), 램(120), 사용자 인터페이스(130), 전원(140), 그리고 불휘발성 메모리 장치(160)에 전기적으로 연결된다. GPU(170)는 그래픽 데이터를 처리한다. GPU(170)는 시스템 버스(150)를 통해 데이터를 수신한다. 그리고 모니터(미도시) 또는 다른 디스플레이 장치(display device) 상의 디스플레이를 위한 그래픽 및 비디오 이미지들을 발생시킨다.
또한, GPU(170)는 범용 GPU(General Purpose computation on Graphics Processing Unit)이다. 범용 GPU란, 디스플레이를 위한 그래픽 및 비디오 이미지등을 위한 연산뿐만 아니라, 중앙 처리 장치(110)에서 수행되는 연산을 추가적으로 수행하는 GPU를 의미한다. 즉, GPU(170)는 범용 목적 연산을 수행할 수 있다. 예시적으로, GPU(170)는 많은 량의 데이터를 가지는, 그 데이터 간의 병렬도는 높은, 그리고 그 데이터 간의 의존성이 작은 어플리케이션(application)에 대해 효율적인 연산을 수행할 수 있다. 예시적으로, 컴퓨팅 시스템(100)은 하나 이상의 GPU들을 포함할 수 있다.
본 발명의 실시 예에 따르면, 컴퓨팅 시스템(100)은 GPU(170)를 포함하지 않으면서도, 범용 목적 연산을 처리할 수 있다. 컴퓨팅 시스템(100)에 GPU(170)가 포함되지 않으면서도, GPU(170)에 포함된 연산 유닛들(도 2에서 상세히 설명된다.)에 대한 시뮬레이션이 수행됨으로써, 가상의 GPU를 생성한다.
도 2는 도 1의 GPU(170)의 제 1 연산부(200)를 보여주는 블록도이다. 제 1 연산부(200)는 제 1 내지 제 R 연산 블록(210~2R0)을 포함한다. 제 1 연산 블록(210)은 캐시(211), 멀티 쓰레드 이슈(Multi Thread issue) 블록(212), 복수의 SP(Scalar Processor) 블록(213), SFU(Super Function Unit) 블록들(214) 및 연산 블록 메모리(215)를 포함한다. 도 2에 도시되지 않으나, 제 2 내지 제 R 연산 블록(220~2R0)은 제 1 연산 블록(210)과 마찬가지로 구성될 것이다.
캐시(211)는 SP 블록들(213) 및 SFU 블록들(214)에서 처리될 데이터를 저장한다. 멀티 쓰레드 이슈 블록(212)은 SP 블록들(213) 및 SFU 블록들(214)에서 처리될 연산자를 저장한다.
SP 블록들(213)은 SFU 블록들(214)에 비해 단순한 연산을 수행한다. 예를 들면, SP 블록들(213)은 각각 산술 논리 연산을 수행할 수 있다. SFU 블록들(214)은 SP 블록들(213)에서 수행하기 어려운 특수 연산을 수행한다. 예를 들면, SFU 블록들(214)는 제곱근 연산(square root), 지수승 연산(exponentiation), 삼각함수 연산(trigonometric) 등을 수행할 수 있다. 그리고 연산 블록 메모리(215)는 SP 블록들(213) 및 SFU 블록들(214)에서 처리된 데이터를 저장한다. 연산 블록 메모리(215)에 저장된 데이터는 외부로부터의 호출에 응답하여 외부로 출력될 것이다.
캐시(211)에 저장된 데이터는 멀티 쓰레드 이슈 블록(212)에 전송된다. 그리고 멀티 쓰레드 이슈 블록(212)은 멀티 쓰레드 이슈 블록(212)에 저장된 연산자 및 캐시(211)로부터 전송된 데이터를 SP 블록들(213) 및 SFU 블록들(214)에 할당한다. SP 블록들(213) 및 SFU 블록들(214)은 각각 수신된 연산자 및 데이터를 처리한다. 처리된 데이터는 연산 블록 메모리(215)에 저장된다. 그리고 외부로부터의 호출 신호(미도시)에 응답하여, 연산 블록 메모리(215)에 저장된 데이터는 외부로 출력될 것이다. 이하, SP 블록들(213) 및 SFU 블록들(214)을 통칭하여 "GPU 연산 유닛"이라고 한다.
도 2에 도시된 바와 같이, 제 1 연산 블록(210)의 GPU 연산 유닛들 각각은 GPU 연산 유닛들 각각에 할당된 데이터를 처리한다. 즉, 제 1 연산 블록(210)은 병렬적으로 데이터를 처리한다. 마찬가지로, 제 1 연산부(200)에 포함된 제 1 내지 제 R 연산 블록(210~2R0)은 각각에 할당된 데이터를 처리할 것이다. 마찬가지로, GPU(170)에 포함된 제 1 내지 제 N 연산부는 각각에 할당된 데이터를 처리할 것이다. 결과적으로, GPU(170)는 데이터 간의 병렬도는 높은, 그리고 그 데이터 간의 의존성이 작은 경우에 효율적인 연산을 수행할 수 있다.
또한, 가상의 GPU(170)가 시뮬레이션되는 경우, GPU 연산 유닛들 각각에 대해 병렬적으로 시뮬레이션이 수행될 수 있다. 즉, 중앙 처리 장치(110)에서 GPU 연산 유닛들에 대한 시뮬레이션을 수행할 때, 복수의 코어(111~11N)를 이용하여 GPU 연산 유닛들에 대해 병렬적으로 시뮬레이션이 수행될 수 있을 것이다.
도 1에 하나의 중앙 처리 장치(110)를 포함하는 것으로 도시되나, 이는 예시적인 것으로서 컴퓨팅 시스템(100)은 복수의 중앙 처리 장치를 포함할 수 있을 것이다. 이 경우, 복수의 중앙 처리 장치를 이용하여 GPU 연산 유닛들에 대해 병렬적으로 시뮬레이션이 수행될 수 있을 것이다.
도 3은 GPU 시뮬레이션을 수행하는 방법을 보여주는 순서도이다. 도 1 및 도 3을 참조하면, S11단계에서, GPU 연산 유닛들 각각에 대한 시뮬레이션이 수행된다. 예시적으로, 컴퓨팅 시스템(100)에서, GPU(170)에 의해 처리될 연산이 호출되는 경우, GPU 시뮬레이션 코드가 수행되어 GPU 연산 유닛들에 대한 시뮬레이션이 수행된다. 시뮬레이션이 수행됨에 따라, 가상의 GPU(170)가 생성될 수 있다.
S12단계에서, 모든 GPU 연산 유닛들에 대한 시뮬레이션이 수행되었는지가 검증된다. 모든 연산 유닛들에 대한 시뮬레이션이 수행되지 않은 경우, 시뮬레이션이 수행되지 않은 연산 유닛들에 대해 계속 시뮬레이션이 수행된다(S11). 모든 연산 유닛들에 대한 시뮬레이션이 수행된 경우, 시뮬레이션은 종료된다. 단지 하나의 코어가 이용되어 연산 유닛들에 대한 시뮬레이션이 수행되는 경우, 효율적인 GPU 시뮬레이션 러닝 타임(running time)은 보장되지 않을 것이다.
도 4는 중앙 처리 장치(110), 램(120) 및 시스템 버스(150)를 보여주는 블록도이다. 도 1 및 도 4를 참조하면, 중앙 처리 장치(110) 및 램(120)은 시스템 버스(150)를 통하여 전기적으로 연결된다. 중앙 처리 장치(100)는 복수의 코어(111~11N)를 포함한다. 램(120)은 GPU 시뮬레이션 코드를 저장한다.
예시적으로, GPU 시뮬레이션 코드는 불휘발성 메모리 장치(160)에 저장될 수 있다. 그리고, 컴퓨팅 시스템(100) 내부에서 GPU(170)에 의해 처리될 연산이 호출되는 경우, 불휘발성 메모리 장치(160,도 1 참조)에 저장된 GPU 시뮬레이션 코드는 램(120)에 로드될 것이다. 그리고, 중앙 처리 장치(110)는 램(120)으로부터 GPU 시뮬레이션 코드를 로드하고, 로드된 GPU 시뮬레이션 코드를 이용하여 GPU 연산 유닛들에 대한 시뮬레이션을 수행할 것이다. 도 4와 다르게, GPU 시뮬레이션 코드는 불휘발성 메모리 장치(160)로부터 직접 로드될 수도 있을 것이다. 중앙 처리 장치(110)는 복수의 코어 중 하나의 코어를 이용하여 GPU 연산 유닛들에 대한 시뮬레이션을 수행한다.
GPU 시뮬레이션 코드는 시스템 버스(150)를 통하여 중앙 처리 장치(110)에 전송된다. 예를 들면, 중앙 처리 장치(110)에서 호출 신호(미도시)를 발생하고, 발생된 호출 신호에 응답하여, 램(120)에 저장된 처리될 데이터가 중앙 처리 장치(110)에 전송될 수 있다.
중앙 처리 장치(110)는 쓰레드(thread) 단위로 동작한다. 예시적으로, 쓰레드(thread)는 OS(operation system)에 의하여 생성될 수 있다. 중앙 처리 장치(110)는 쓰레드를 생성하고, 연산량이 적은 코어에 쓰레드를 배치하고, 쓰레드에서 연산이 수행될 수 있다. 이처럼 복수의 코어(111~11N)를 이용하여 데이터를 처리하게 되면, 복수의 코어(111~11N) 중에서 연산량이 가장 적은 코어에 쓰레드를 배치하게 된다.
각 쓰레드에 대응되는 코어는 각 쓰레드들의 하위 쓰레드들을 생성할 수 있다. 생성된 하위 쓰레드들은 각각 복수의 코어(111~11N) 중 어느 하나에 대응될 것이다. 이때, 생성된 하위 쓰레드들을 생성한 코어에 대응하는 쓰레드를 주 쓰레드라고 한다.
즉, 주 쓰레드에 대응하는 코어는 복수의 하위 쓰레드를 생성할 수 있다. 생성된 하위 쓰레드들은, 주 쓰레드에 대응하는 코어를 제외한 복수의 코어 중 어느 하나(도 4에서, 제 2 내지 N 코어(112~11N))에 대응된다. 예를 들면, 중앙 처리 장치(110)에 8개의 코어가 포함된 경우, 주 쓰레드와 대응되는 코어를 제외한 7개의 코어들 각각에 복수의 하위 쓰레드가 생성될 수 있다. 도 4에서, 제 1 코어(111)가 주 쓰레드에 대응되는 것으로 도시되나, 이는 예시적인 것으로, 제 2 내지 제 N 코어(112~11N) 중 어느 하나가 주 쓰레드에 대응될 수 있다.
본 발명의 실시 예에 따르면, 주 쓰레드에 대응되는 코어는 중앙처리장치(110)에 포함된 코어들의 개수에 기반하여 적어도 하나의 하위 쓰레드(이하, 작업 쓰레드(worker thread)라고 한다)를 생성한다. 그리고 주 쓰레드에 대응되는 코어는 GPU 시뮬레이션을 제어한다. 각각의 작업 쓰레드에 대응되는 코어는 GPU 연산 유닛들에 대한 시뮬레이션을 수행한다.
작업 쓰레드의 수는 중앙 처리 장치(110)에 포함된 코어의 수에 의해서 결정될 수 있다. 주 쓰레드에 대응하는 코어는 각 작업 쓰레드를 중앙 처리 장치(110)에 포함된 코어들 중 주 쓰레드에 대응하는 코어(111)를 제외한 코어들(112~11N)에 할당한다. 도 4를 참조하면, 제 1 내지 제 M 작업 쓰레드(181~18M)는 제 2 코어(172)에 할당된다. 마찬가지로, 도 4에 도시되지 않으나, 제 3 내지 제 N 코어(113~11N)에 각각 작업 쓰레드들이 할당될 것이다. 그리고, 주 쓰레드에 대응하는 코어는 GPU 연산 유닛들에 대한 시뮬레이션 연산들을 각 작업 쓰레드에 할당한다.
도 5 내지 도 7은 주 쓰레드 및 작업 쓰레드들의 데이터 처리 과정을 보여주는 블록도이다. 도 5를 참조하면, GPU 시뮬레이션 코드는 램(120)에 저장된다. 제 1 코어(111)는 GPU 시뮬레이션 코드에 기반하여 GPU 연산 유닛들에 대한 시뮬레이션 연산들을 각 작업 쓰레드에 할당할 수 있다. 예를 들면, 제 1 코어(111)는 GPU 시뮬레이션 코드에 기반하여, GPU 시뮬레이션 코드의 주소 정보를 각 작업 쓰레드에 전송한다.
예시적으로, GPU 연산 유닛들에 대한 시뮬레이션 연산들은 제 2 코어(172)의 제 1 내지 제 M 작업 쓰레드(181~18M)에, 제 3 코어(113)의 작업 쓰레드들(미도시)에, 그리고 제 N 코어(11N)의 작업 쓰레드들(미도시)에 각각 할당된다.
작업 쓰레드들은 할당된 시뮬레이션 연산들을 수행하기 위해 램(120)으로부터 GPU 시뮬레이션 코드를 수신할 것이다. 예를 들면, 주 쓰레드는 할당된 시뮬레이션 연산들에 대응하는 주소 정보를 작업 쓰레드에 전송할 수 있다. 각 작업 쓰레드는 수신된 주소 정보에 기반하여, 램(120)으로부터 주소 정보에 대응하는 GPU 시뮬레이션 코드의 일부를 요청할 것이다.
도 6을 참조하면, 각 작업 쓰레드에서 시뮬레이션 된 데이터는 램(120)에 전송된다. 제 1 작업 쓰레드(181)로부터 제 1 시뮬레이션 된 데이터(ⓐ)가 램(120)에 전송된다. 제 M 작업 쓰레드로부터 제 2 시뮬레이션된 데이터(ⓑ)가 램(120)에 전송된다. 제 3 코어(113)의 작업 쓰레드(미도시)로부터 제 3 시뮬레이션 된 데이터(ⓒ)가, 그리고 제 N 코어(11N)의 작업 쓰레드로부터 제 4 시뮬레이션 된 데이터(ⓓ)가 각각 램(120)에 전송된다. 마찬가지로, 도 6에 도시되지 않은 작업 쓰레드들에서 시뮬레이션 된 데이터도 램(120)에 전송될 것이다.
작업 쓰레드들에 대응되는 코어들은 시뮬레이션 된 데이터를 램(120)에 전송한 후, 각각 시뮬레이션 완료 신호들을 주 쓰레드가 할당된 제 1 코어(111)에 전송할 것이다. 완료 신호들에 따라 모든 작업 쓰레드에 할당된 시뮬레이션이 완료되었다고 판단되면, 제 1 코어(111)는 램(120)으로부터 시뮬레이션 된 데이터를 로드할 수 있다.
도 7을 참조하면, 제 1 코어(111)는 각 작업 쓰레드에서 시뮬레이션 된 데이터를 동기화(synchronization)한다. 즉, 제 1 코어(111)는 주 쓰레드에서 시뮬레이션 된 데이터를 동기화한다.
만약, 하나의 코어에서 시뮬레이션이 수행된다면 별도의 동기화가 수행되지 않을 것이다. 즉, 하나의 코어에서 시뮬레이션이 수행되는 경우, GPU 연산 유닛들에 대한 시뮬레이션이 수행되면서 생성된 데이터는 램(120)에 저장될 것이다. 그리고 저장된 데이터는 시뮬레이션의 수행이 완료될 때까지 업데이트 될 것이다. 따라서, 시뮬레이션이 완료되면 가상의 GPU에 대한 데이터가 램(120)에 적재된 상태로서, 별도의 동기화가 수행되지 않을 것이다.
반면, 복수의 작업 쓰레드에서 GPU 연산 유닛들에 대한 시뮬레이션이 수행되는 경우, 각 작업 쓰레드에서 자신이 할당받은, GPU 시뮬레이션 코드에 대한 시뮬레이션이 수행된다. 그리고 각각의 작업 쓰레드에서 생성된 데이터는 램(120)에 전송된다. 주 쓰레드에 대응하는 코어는 나뉘어져서 수행된 GPU 연산 유닛들에 대한 시뮬레이션 결과를 동기화한다. 즉, 주 쓰레드에 대응하는 코어는 램(120)에 저장된 GPU 연산 유닛들에 대한 시뮬레이션 데이터를 취합하여 하나의 시뮬레이션 결과 데이터로 동기화한다. 동기화된 데이터는 가상의 GPU에 대한 데이터를 구성할 것이다.
도 7을 참조하면, 각 작업 쓰레드에서 시뮬레이션 된 데이터가 램(120)에 전송되는 경우, 주 쓰레드는 램(120)으로부터 제 1 내지 제 4 시뮬레이션 된 데이터(ⓐ~ⓓ)를 로드한다. 그리고 로드된 데이터에 대해 동기화를 수행할 것이다. 시뮬레이션 된 데이터에 대한 동기화는, 모든 작업 쓰레드들에 할당된 GPU 연산 유닛들에 대한 시뮬레이션이 종료된 후에 수행된다. 그리고, 도 7에 도시되지 않으나, 동기화된 데이터는 램(120)에 전송될 것이다.
도 8은 본 발명의 실시 예에 따른 GPU 시뮬레이션을 수행하는 방법을 보여주는 순서도이다. 도 4 및 도 8을 참조하면, S110단계에서 주 쓰레드에 대응하는 코어는 복수의 작업 쓰레드를 생성한다. 주 쓰레드는 중앙 처리 장치(110)에 포함된 코어들 중 어느 하나에 대응될 것이다. 그리고 복수의 작업 쓰레드는 주 쓰레드에 대응되지 않는 코어들에 할당될 것이다. 예시적으로, 중앙 처리 장치(110)에 8개의 코어가 포함된 경우, 주 쓰레드와 대응되는 코어를 제외한 7개의 코어들 각각에 M개의 작업 쓰레드가 생성될 수 있다. 예시적으로, 주 쓰레드는 중앙 처리 장치(110)에 포함된 코어들 중 주 쓰레드에 대응되지 않는 코어들의 개수만큼 작업 쓰레드들을 생성할 수 있다. 예를 들면, 중앙 처리 장치(110)가 8개의 코어를 포함하는 경우, 7개의 작업 쓰레드를 생성할 수 있다.
주 쓰레드에 대응하는 코어는 GPU 연산 유닛들(도 2 참조)에 대한 시뮬레이션 연산들을 작업 쓰레드들에 할당한다(S120). 그리고 각 작업 쓰레드에서 GPU 연산 유닛들에 대한 시뮬레이션이 수행된다(S130).
S140단계에서, 주 쓰레드에 대응하는 코어는 작업 쓰레드들에 의해 시뮬레이션 된 데이터를 동기화한다. 예시적으로, 작업 쓰레드에서 시뮬레이션 된 데이터는 주 쓰레드에 전송되고, 주 쓰레드에 대응하는 코어는 시뮬레이션 된 데이터를 동기화할 수 있다. 예시적으로, 작업 쓰레드에서 시뮬레이션 된 데이터는 램(120,도 4 참조)에 저장되고, GPU 연산 유닛들에 대한 시뮬레이션 연산들이 모두 완료되면 램(120)에 저장된 데이터는 주 쓰레드에 전송되고, 램(120)에서 전송된 데이터에 대한 동기화가 수행될 수 있다. 예를 들면, 각 작업 쓰레드에 대응하는 코어는 시뮬레이션 된 데이터를 램(120)에 전송할 때, 완료 신호를 주 쓰레드에 전송할 것이다. 모든 작업 쓰레드로부터 완료 신호가 수신된 경우, 주 쓰레드에 대응하는 코어는 램(120)에 데이터 요청 신호를 전송하고 램(120)으로부터 데이터를 수신할 수 있다.
도 9는 본 발명의 다른 실시 예에 따라 하나의 코어에 하나의 작업 쓰레드가 대응되는 경우를 보여주는 블록도이다. 도 9를 참조하면, 주 쓰레드는 제 1 코어(111)에 대응된다. 그리고 제 1 내지 제 N-1 작업 쓰레드는 제 2 내지 제 N 코어(112~11N)에 대응된다. 주 쓰레드는 제 1 내지 제 N-1 작업 쓰레드 각각에 GPU 연산 유닛들에 대한 시뮬레이션 연산들을 할당할 것이다. 제 1 내지 제 N-1 작업 쓰레드는 각각에 할당된 시뮬레이션 연산들을 수행할 것이다. 그리고 주 쓰레드는 제 1 내지 제 N-1 작업 쓰레드에서 시뮬레이션 된 데이터에 대해 동기화를 수행할 것이다.
본 발명의 실시 예에 따르면, 복수의 코어에 대응하는 작업 쓰레드들을 생성하고, 작업 쓰레드에서 병렬적으로 시뮬레이션이 수행된다. 중앙 처리 장치에 포함된 코어의 개수가 증가할수록 시뮬레이션 속도는 향상될 것이다. 따라서, 본 발명의 실시 예에 따르면 향상된 속도를 가지는 GPU 시뮬레이터가 제공된다.
한편, 본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.

Claims (14)

  1. 복수의 코어(Multi Core)를 포함하는 중앙 처리 장치(CPU)에 있어서,
    주 쓰레드가 할당되는 상위 코어; 및
    각각 적어도 하나의 작업 쓰레드가 할당되는 복수의 하위 코어를 포함하되,
    상기 복수의 하위 코어는, 상기 복수의 하위 코어 각각에 할당된 적어도 하나의 작업 쓰레드에서 GPU(Graphics Processing Unit)의 연산 유닛들에 대한 시뮬레이션 연산들을 수행하여 시뮬레이션 데이터를 생성하고,
    상기 상위 코어는 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들을 상기 복수의 작업 쓰레드에 할당하고, 상기 생성된 시뮬레이션 데이터에 기반하여 동기화(synchronization) 데이터를 생성하는 중앙 처리 장치.
  2. 제 1 항에 있어서,
    상기 주 쓰레드는 상기 작업 쓰레드들의 상위 쓰레드인 중앙 처리 장치.
  3. 제 1 항에 있어서,
    상기 상위 코어는 상기 하위 코어들의 개수에 기반하여 상기 복수의 작업 쓰레드를 생성하는 중앙 처리 장치.
  4. 제 3 항에 있어서,
    상기 상위 코어는 상기 하위 코어들의 개수만큼 상기 복수의 작업 쓰레드를 생성하는 중앙 처리 장치.
  5. 제 1 항에 있어서,
    상기 상위 코어는 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들이 종료될 때, 상기 시뮬레이션 데이터에 기반하여 동기화 데이터를 생성하는 중앙 처리 장치.
  6. 중앙 처리 장치(CPU); 및
    GPU(Graphics Processing Unit) 시뮬레이션 코드를 저장하는 램(Random Acess Memory,RAM)을 포함하되,
    상기 중앙 처리 장치는
    주 쓰레드에 대응되는 상위 코어; 및
    각각 적어도 하나의 작업 쓰레드가 할당되는 복수의 하위 코어를 포함하되,
    상기 복수의 하위 코어는, 상기 복수의 하위 코어 각각에 할당된 적어도 하나의 작업 쓰레드에서 GPU(Graphics Processing Unit)의 연산 유닛들에 대한 시뮬레이션 연산들을 수행하여 시뮬레이션 데이터를 생성하고,
    상기 상위 코어는 상기 GPU 시뮬레이션 코드에 기반하여 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들을 상기 복수의 작업 쓰레드에 할당하고, 상기 생성된 시뮬레이션 데이터에 기반하여 동기화(synchronization) 데이터를 생성하는 컴퓨팅 시스템.
  7. 제 6 항에 있어서,
    상기 동기화 데이터는 가상의 GPU를 구성하는 컴퓨팅 시스템.
  8. 제 6 항에 있어서,
    상기 상위 코어는 상기 하위 코어들의 개수에 기반하여 상기 복수의 작업 쓰레드를 생성하는 컴퓨팅 시스템.
  9. 제 6 항에 있어서,
    상기 램은 상기 복수의 작업 쓰레드에서 생성된 상기 시뮬레이션 데이터를 저장하는 컴퓨팅 시스템.
  10. 제 6 항에 있어서,
    상기 램은 상기 GPU의 연산 유닛들에 대한 시뮬레이션 연산들이 종료될 때, 상기 시뮬레이션 연산들에 따른 상기 시뮬레이션 데이터를 상기 상위 코어에 제공하는 컴퓨팅 시스템.
  11. 제 6 항에 있어서,
    상기 생성된 동기화 데이터는 상기 램에 저장되는 컴퓨팅 시스템.
  12. 복수의 코어(Multi Core)를 포함하는 중앙 처리 장치의 GPU(Graphics Processing Unit) 시뮬레이션 방법에 있어서,
    주 쓰레드를 생성하고, 상기 주 쓰레드를 상기 복수의 코어 중 어느 하나에 대응시키는 단계;
    복수의 작업 쓰레드를 생성하고, 상기 복수의 작업 쓰레드를 상기 복수의 코어 중 상기 주 쓰레드에 대응되는 코어를 제외한 코어들에 대응시키는 단계;
    상기 주 쓰레드에 대응하는 코어의 제어에 따라, GPU(Graphics Processing Unit)의 연산 유닛들에 대한 시뮬레이션 연산들을 상기 작업 쓰레드들에 할당하는 단계;
    상기 작업 쓰레드들에서 상기 할당된 시뮬레이션 연산들을 수행하여 시뮬레이션 데이터를 생성하는 단계; 및
    상기 주 쓰레드에서 상기 시뮬레이션 데이터를 동기화(synchronization) 하는 단계를 포함하는 GPU 시뮬레이션 방법.
  13. 제 12 항에 있어서,
    상기 복수의 작업 쓰레드를 생성하는 단계는
    상기 코어들의 개수에 기반하여 작업 쓰레드들을 생성하는 단계를 포함하는 GPU 시뮬레이션 방법.
  14. 제 13 항에 있어서,
    상기 동기화하는 단계는
    상기 작업 쓰레드들에서 상기 할당된 시뮬레이션 연산들이 종료된 후에, 상기 저장된 시뮬레이션 데이터를 동기화하는 단계를 포함하는 GPU 시뮬레이션 방법.
PCT/KR2010/009416 2010-07-22 2010-12-28 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템 WO2012011644A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/811,436 US9378533B2 (en) 2010-07-22 2010-12-28 Central processing unit, GPU simulation method thereof, and computing system including the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2010-0071036 2010-07-22
KR1020100071036A KR101136850B1 (ko) 2010-07-22 2010-07-22 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템

Publications (1)

Publication Number Publication Date
WO2012011644A1 true WO2012011644A1 (ko) 2012-01-26

Family

ID=45497038

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2010/009416 WO2012011644A1 (ko) 2010-07-22 2010-12-28 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템

Country Status (3)

Country Link
US (1) US9378533B2 (ko)
KR (1) KR101136850B1 (ko)
WO (1) WO2012011644A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107066378A (zh) * 2017-01-24 2017-08-18 成都皓图智能科技有限责任公司 一种实时在线gpu通用计算模拟及调试方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013204890A1 (de) * 2013-03-20 2014-09-25 Siemens Aktiengesellschaft Verfahren zur Magnetresonanztomographie-Bildrekonstruktion
KR102293445B1 (ko) 2013-08-26 2021-08-26 에스케이플래닛 주식회사 홈 어플리케이션 서비스를 위한 장치
KR101603711B1 (ko) * 2014-04-25 2016-03-15 전자부품연구원 그래픽 처리 장치의 동작을 위한 작업 할당 시스템 및 방법
JP6394341B2 (ja) * 2014-07-23 2018-09-26 富士通株式会社 計算装置、計算方法、および計算プログラム
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
CN107817969B (zh) * 2016-08-31 2020-10-16 华为技术有限公司 一种程序生成方法、装置及计算机系统
KR101887288B1 (ko) 2016-12-26 2018-08-09 연세대학교 산학협력단 그래픽 처리 장치에서의 범용 연산처리의 스크래치패드 메모리 최적 컴파일 방법 및 장치
KR102111766B1 (ko) 2018-08-29 2020-05-15 한국과학기술원 적응 제어 알고리즘을 위한 중앙처리장치-병렬처리장치 구조 기반의 데이터 처리 장치 및 그 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090065133A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 분산 병렬 처리 시스템에서 태스크 스레드 그룹별 태스크분배 장치, 방법 및 처리 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7016998B2 (en) * 2000-11-27 2006-03-21 Silicon Graphics, Inc. System and method for generating sequences and global interrupts in a cluster of nodes
US8274518B2 (en) 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US20060242618A1 (en) * 2005-02-14 2006-10-26 Yao-Ting Wang Lithographic simulations using graphical processing units
US7924278B2 (en) * 2006-07-28 2011-04-12 Microsoft Corporation Real-time GPU rendering of piecewise algebraic surfaces
EP2060985A1 (en) 2007-11-12 2009-05-20 2M Soft. di Marco Marcinno' Functional testing method and device for an electronic product
EP2257874A4 (en) * 2008-03-27 2013-07-17 Rocketick Technologies Ltd DESIGN SIMULATION ON THE BASIS OF PARALLEL PROCESSORS
US8279227B2 (en) * 2008-04-04 2012-10-02 Sony Corporation Method for detecting collisions among large numbers of particles
KR100949746B1 (ko) 2008-07-10 2010-03-25 삼성중공업 주식회사 멀티코어 프로세싱 환경에서의 객체 검색 방법 및 장치
TWI378356B (en) * 2009-04-21 2012-12-01 Nat Univ Tsing Hua Method and device for multi-core instruction-set simulation
US8537169B1 (en) * 2010-03-01 2013-09-17 Nvidia Corporation GPU virtual memory model for OpenGL
US8385666B2 (en) * 2010-03-31 2013-02-26 Microsoft Corporation Classification and encoder selection based on content

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090065133A (ko) * 2007-12-17 2009-06-22 한국전자통신연구원 분산 병렬 처리 시스템에서 태스크 스레드 그룹별 태스크분배 장치, 방법 및 처리 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CORPORAAL, H. ET AL.: "MOVE: a framework for high-performance processor design", THE 1991 ACM/IEEE CONFERENCE ON SUPERCOMPUTING, 1991, pages 692 - 701 *
SHEN, S. ET AL.: "Full system simulation with QEMU: an approach to multi-view 3D GPU design", 2010 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS (ISCAS), 30 May 2010 (2010-05-30), pages 3877 - 3880 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107066378A (zh) * 2017-01-24 2017-08-18 成都皓图智能科技有限责任公司 一种实时在线gpu通用计算模拟及调试方法

Also Published As

Publication number Publication date
KR101136850B1 (ko) 2012-04-20
US9378533B2 (en) 2016-06-28
US20130207983A1 (en) 2013-08-15
KR20120009919A (ko) 2012-02-02

Similar Documents

Publication Publication Date Title
WO2012011644A1 (ko) 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템
US11822491B2 (en) Techniques for an efficient fabric attached memory
CN101573690B (zh) 线程排队的方法和装置
KR102103596B1 (ko) 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법
US8773449B2 (en) Rendering of stereoscopic images with multithreaded rendering software pipeline
WO2013025081A1 (ko) 단말 및 그 단말에서 어플리케이션 수행 방법
WO2014014282A1 (en) Method and apparatus for data processing using graphic processing unit
CN111667542B (zh) 适用于人工神经网络的用于处理压缩数据的解压缩技术
CN103425534A (zh) 在许多应用之间共享的图形处理单元
CN110675480A (zh) 用于获取纹理操作的采样位置的方法和装置
CN103778591A (zh) 处理图形运算负载平衡的方法及系统
Langguth et al. Scalable heterogeneous CPU-GPU computations for unstructured tetrahedral meshes
CN114840339A (zh) Gpu服务器、数据计算方法及电子设备
Lena GPI2 for GPUs: A PGAS framework for efficient communication in hybrid clusters
WO2016027910A1 (ko) 레이 트레이싱 방법, 이를 수행하는 레이 트레이싱 장치 및 이를 저장하는 기록매체
WO2021080122A1 (en) Method and apparatus for analyzing protein-ligand interaction using parallel operation
WO2013015569A2 (ko) 시뮬레이션 장치 및 그의 시뮬레이션 방법
US20150006585A1 (en) Multithreaded code generator for distributed memory systems
Huang et al. Performance optimization of High-Performance LINPACK based on GPU-centric model on heterogeneous systems
Qin et al. Gpu-based in situ visualization for large-scale discrete element simulations
Wang et al. Multi-gpu compositeless parallel rendering algorithm
Nezarat et al. A new high performance gpu-based approach to prime numbers generation
WO2022092414A1 (ko) 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법
US20230315655A1 (en) Fast data synchronization in processors and memory
CN116774968A (zh) 具有一组线程束的高效矩阵乘法和加法

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13811436

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 10855072

Country of ref document: EP

Kind code of ref document: A1