WO2017034200A1 - 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법 - Google Patents

매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법 Download PDF

Info

Publication number
WO2017034200A1
WO2017034200A1 PCT/KR2016/008902 KR2016008902W WO2017034200A1 WO 2017034200 A1 WO2017034200 A1 WO 2017034200A1 KR 2016008902 W KR2016008902 W KR 2016008902W WO 2017034200 A1 WO2017034200 A1 WO 2017034200A1
Authority
WO
WIPO (PCT)
Prior art keywords
core
cores
demultiplexing
platform
manicore
Prior art date
Application number
PCT/KR2016/008902
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 서경대학교 산학협력단
Publication of WO2017034200A1 publication Critical patent/WO2017034200A1/ko

Links

Images

Classifications

    • 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]
    • 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/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • 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/54Interprogram communication
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Definitions

  • the present invention relates to a method for allocating a process to cores and a communication method between core processes in a manicore platform. More particularly, the present invention relates to a method and process allocation between cores when processing a process on a manicore platform having a plurality of cores. The present invention relates to a method for allocating processes to cores and a method for communicating between core processes in a manicore platform to be optimized.
  • CPUs central processing units
  • processors for high-performance computing are made up of dozens of cores, and these processors are called manicore processors or manicore platforms.
  • the present invention is to solve this problem, a method for efficiently allocating cores in a manicore platform and a direct communication path between cores to allocate a process to the core in a manicore platform capable of efficient parallel processing and a communication method between core processes
  • the purpose is to provide.
  • a plurality of cores included in a first core and a second core are arranged in a horizontal and vertical direction, and in a manicore platform connecting the plurality of cores in a mesh-shaped communication bus structure, each core A user dynamic network that connects cores and directly transmits and receives data stored in a register provided in the first core to a register provided in the second core, and a shared memory accessible by each core.
  • Each core includes a core processor, a core bus switch and a cache memory for switching a communication bus and the user dynamic network, and the core processor stores data received through the user dynamic network, Convert the order of multiple demultiplexing queues and the data stored in the demultiplexing queues. In that it comprises a buffer for demultiplexing it can be achieved by a manifold core platform as claimed.
  • Another object of the present invention is a core core in a manicore platform in which a plurality of cores included in the first core and the second core are arranged in a horizontal and vertical direction, and connecting the plurality of cores in a mesh-shaped communication bus structure.
  • the communication method of the first core and the second core is provided with a plurality of demultiplexing queue for storing data, respectively, the data stored in any one of the demultiplexing queue selected from the first core to the user dynamic network And by directly transmitting to any one of the demultiplexing queues selected by the second core.
  • the apparatus for inter-core communication of a manicore platform consisting of a plurality of cores is a demultiplexing of the communication bus configured in the mesh form between the cores, the core side receiving the communication between the cores A demux buffer, and a demux queue connected to the demultiplexing buffer.
  • the communication bus may transfer communication information between cores in a mesh-type physical network in which all cores of the manicore platform are connected in a two-dimensional square.
  • the communication information between the cores is data having one or a plurality of core word sizes, and may include data to be transmitted from a process performed in a core to a process performed in another core.
  • the core word is composed of a word size according to the architecture of the core constituting the manicore platform.
  • the demultiplexing buffer is a device configured separately for each core of the manicore platform.
  • the output unit of the demultiplexing is connected to a plurality of demultiplexing queues so that communication information received from other cores can be delivered to the demultiplexing queue. .
  • the demultiplexing queue is a special register connected to the demultiplexing buffer, and a core that receives communication information between cores can recognize data contained in the communication information by reading a plurality of special registers to which the demultiplexing queue is mapped.
  • the direct communication method between cores is called a user dynamic network in the present invention. Basically, it performs communication between cores to operate the system, but it takes a step further and provides a way to make parallel programming more efficient on the manicore platform by directly controlling communication between multiple cores.
  • the method for allocating a process to a core and a communication method between core processes in a manicore platform by efficiently allocating a process to a core in a manicore platform, resources can be efficiently processed in parallel in a real-time computing environment having a mesh structure. It can be utilized. In addition, data communication between processes running on individual cores of the manicore platform can be handled in a short response time.
  • FIG. 1 is a conceptual diagram illustrating a mesh structure of a 4x4 manicore platform according to the present invention.
  • FIG. 2 is a conceptual diagram showing the structure of each core constituting the manicore platform of the mesh structure according to the present invention.
  • FIG. 3 is a block diagram of a core bus switch and a core processor according to an embodiment of the present invention.
  • FIG. 4 is a structural diagram of a system stack.
  • FIG. 5 is a conceptual diagram illustrating a method of allocating threads in the manicore platform shown in FIG. 1.
  • FIG. 6 is an exemplary diagram illustrating a method of sharing memory in a manicore platform.
  • FIG. 7 is a conceptual diagram illustrating a dynamic network between core processes via a core bus.
  • FIG. 8 illustrates, as an embodiment of the present invention, a communication using a user dynamic network and shared memory between applications that allocate process cores and run on individual cores in a manicore platform.
  • the inter-core communication bus is a physical network of a mesh type in which all cores of a manicore platform are connected in a two-dimensional square, and may transmit communication information between cores.
  • the communication information between cores according to the present invention may include data to be transmitted from one core to a process executed in another core by a process having one or more core word sizes.
  • core words are designed to have a word size according to the architecture of the core constituting the manicore platform.
  • the demultiplexing buffer according to the present invention is a device configured in each core of the manicore platform, and the output of the demultiplexing is connected to a plurality of demultiplexing queues to transmit communication information received from other cores to the demultiplexing queue. Can be.
  • the demultiplexing queue is a special register connected to the demultiplexing buffer. A core receiving the communication information between cores may recognize data contained in the communication information by reading a plurality of special registers to which the demultiplexing queue is mapped.
  • the Manicore platform is a system that can provide parallel processing environment with many homogeneous cores.
  • cores that can handle individual processes are connected through a physical communication bus, and each core can transmit data to other cores.
  • 1 is a conceptual diagram illustrating a mesh structure of a 4x4 manicore platform according to the present invention.
  • Each core can communicate between cores using a communication bus.
  • Core 0 is the main core that performs tasks related to the operation of the system by executing the hypervisor and the supervisor.
  • tasks are allocated from the core 0 through the communication bus.
  • a communication bus that provides data interworking function between cores is implemented as a user dynamic network, which takes precedence over shared memory implemented on a manicore platform.
  • Each core can handle processes such as information processing independently.
  • User dynamic networks are optimized for point-to-point data communication between cores that require minimal latency. Since the user dynamic network is based on a hardware communication bus configured for this, it takes a method of directly connecting registers to registers without going through a cache in moving data from one core to another core. Compared to the improved performance. Core processors can communicate quickly and directly over user dynamic networks, making them particularly useful for parallel programming.
  • Core 0 is configured to include a core bus switch, a core processor, and cache memory that bridges the communication bus between cores.
  • the information transmitted through the core bus switch is stored in the cache memory, but in the present invention, the communication is performed between the core processors in real time using a user dynamic network.
  • the demultiplexing queue stores the information transmitted through the user dynamic network.
  • the core receiving the communication information between the cores accesses the demultiplexing queue through the register in which the address of the demultiplexing queue is recorded, thereby storing the information inside the communication information.
  • the data can be recognized.
  • Each core in the two-dimensional mesh structure creates a number of queues to receive information delivered to the user dynamic network, which is called a demultiplexing queue and writes the address for each queue to the specified register.
  • Software running on the core's processor can access the demultiplexing queue through an address written to a register.
  • the information transmitted between cores and cores necessarily has a specific identification value.
  • the identification value is used to determine which demultiplexing queue to store information in when the core receives the information and is removed after the information is stored in the queue.
  • software accesses the demultiplexing queue through a register, it acquires the information with the header removed, including its identification.
  • each core When several pieces of information are stored in a demultiplexed queue, each core must be inverted to prevent the first information stored in the queue from being used by the software so that subsequently arrived information cannot be accessed while stored in the queue. Create a multiplex buffer.
  • the size of the demultiplexing buffer is implementation dependent, and instead of being stored in the demultiplexing queue in the order in which the information arrives at the core, the demultiplexing buffer can be used to change the order of the information loaded in the queue.
  • hypervisor layer which is a system stack that controls the hardware configuration.
  • 4 is a structural diagram of a system stack. The hypervisor abstracts and operates all the hardware in the system, not just the manimani platform.
  • supervisor layer on top of the hypervisor that provides libraries for controlling input and output devices and systems for the application.
  • FIG. 5 is a conceptual diagram illustrating a method of allocating threads in the manicore platform shown in FIG. 1. Allocate tasks by assigning threads to Core 1, Core 4, and Core 5 that are close to Core 0. The cores share information through shared memory implemented on the Manicore platform.
  • FIG. 6 is an exemplary diagram illustrating a method of sharing a memory in a manicore platform.
  • Core 0 shares memory with Core 1 through shared memory
  • Core 2 shares memory with Core 3.
  • This sharing method allows the system to automatically create shares through thread allocation in one application, but it can also create shared memory between two or more applications allocated to different cores by the user. All shared memory information is transferred through the communication bus between cores.
  • a path for performing a user dynamic network on the core bus is specified for direct communication between cores. This path allows for immediate exchange of information between core processes directly without passing through shared or cache memory.
  • 7 is a conceptual diagram illustrating a dynamic network between core processes through a core bus.
  • Core 0 delivers information to Core 1, Core 4, and Core 5 over a user dynamic network, where Core 1, Core 4, and Core 5 either process the received information or process the received information. I can deliver it.
  • the received information between cores is stored in a space called demultiplexing queue and processed. The queue is performed by FIFO method.
  • User dynamic networks enable users to efficiently and quickly deliver urgent data in a system or application, effectively performing parallel programming.
  • FIG. 8 is an exemplary embodiment of the present invention, in which a process core is allocated in a manicore platform and communication using a shared memory and a user dynamic network between applications running on individual cores is illustrated.
  • Application 0 runs the main process on core 0.
  • the main process assigns threads created in the core to each of cores 1, 2, 3, and 4 as threads 1, 2, 3, and 4 to run one application.
  • application 0 is driven using a total of five cores, and applications 1, 2, 3, and 4 are driven separately on cores 5, 6, 7, and 8, respectively.
  • Application 1 shares memory using shared memory with Core 1, which has Thread 1 assigned by Application 1 through shared memory.
  • applications 2, 3, and 4 share memory with threads 2, 3, and 4 of application 0 in parallel, allowing parallel programming.
  • applications 1, 2, 3, and 4 can send and receive urgent data through the application 0 main process and the user dynamic network.
  • the information processed here is given priority over shared memory.
  • the present invention allows a user to freely perform real-time processing and efficiently utilize limited memory resources.
  • first and second may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another.
  • the first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component.
  • each component shown in the embodiments of the present invention are shown independently to represent different characteristic functions, and do not mean that each component is made of separate hardware or one software component unit.
  • each component is included in each component for convenience of description, and at least two of the components may be combined into one component, or one component may be divided into a plurality of components to perform a function.
  • Integrated and separate embodiments of the components are also included within the scope of the present invention without departing from the spirit of the invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법에 관한 것이다. 본 발명에서는 복수 개 코어를 포함하는 매니코어 플랫폼에 있어서, 각 코어들 사이를 연결하는 통신 버스와, 각 코어들 사이를 연결하며, 제1 코어에 구비된 레지스터에 저장된 데이터를 직접적으로 제2 코어에 구비된 레지스터에 직접 데이터를 송수신하는 사용자 동적 네트워크와, 각 코어가 억세스 가능한 공유메모리를 포함하고, 각 코어에는 코어 프로세서와, 통신 버스와 상기 사용자 동적 네트워크를 스위칭하는 코어 버스 스위치와, 사용자 동적 네트워크를 통해 수신된 데이터를 저장하는 역 다중화 버퍼 및 캐쉬 메모리를 포함하는 것을 특징으로 하는 매니코어 플랫폼이 제공된다.

Description

매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법
본 발명은 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법에 관한 것으로서, 보다 상세하게는 다수 개 코어로 이루어진 매니코어 플랫폼 상에서 프로세스를 처리할 때 코어 간의 통신 방법 및 프로세스 할당을 최적화하는 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법에 관한 것이다.
현재 프로세서의 발전은 단일 코어의 기술적인 성능 향상보다는 하나의 프로세서를 다수의 코어로 구성하고 이를 최적화하는 방향으로 나아가고 있으며, 작은 휴대용 장치에도 멀티코어 CPU(Central Processing Unit)가 장착되고 있다.
이러한 추세에 걸맞게 고성능 컴퓨팅을 위한 프로세서는 수십 개에 달하는 코어로 구성되고 있으며, 이러한 프로세서에 대한 명칭을 매니코어 프로세서 또는 매니코어 플랫폼이라고 한다.
이렇게 하나의 프로세서에 구성되는 코어의 개수가 증가하고 이것이 보편화되면서, 다수 개 코어를 효율적으로 사용하는 병렬 처리 방법에 대한 관심도 및 중요도가 높아졌다.
고성능 컴퓨팅 성능을 최대로 이끌어내기 위해서는 프로세스가 다수 개 코어에 효율적으로 분배되어야 하며, 코어 간의 통신 또한 코어의 프로세스 처리를 지연시키지 않는 방향으로 수행되어야 한다.
종래 전통적인 병렬 처리 방법은 프로세스가 가진 최대의 컴퓨팅 성능을 온전히 이끌어내지 못하는 단점을 가지고 있는 것이 발견되는 추세이며, 시대적인 흐름으로 볼 때 이러한 단점은 시간이 흐를수록 더 크게 부각될 것이다. 따라서 상기한 문제점을 해결할 수 있는 새로운 병렬 처리 방법이 필요하게 되었다.
[선행기술문헌] 대한민국공개특허 제10-2012-0066189호(2012.06.22. 공개)
매니코어 플랫폼이 발달하면서 병렬 프로그래밍에 대한 문제는 날이 갈수록 증가하고 있다. 이는 하드웨어적인 병렬구조와 소프트웨어적인 병렬구조는 차이가 존재하기 때문이다. 본 발명은 이러한 문제점을 해결하고자 하는 것으로서, 매니코어 플랫폼에서 코어를 효율적으로 할당하고 코어 간의 직접적인 통신 통로를 만들어 효율적인 병렬처리가 가능한 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법을 제공하는 것을 목적으로 한다.
본 발명의 상기 목적은 제1코어 및 제2코어가 포함하는 복수 개 코어가 가로 및 세로 방향으로 배열되고, 상기 복수 개 코어 사이를 매쉬 형태의 통신 버스 구조로 연결하는 매니코어 플랫폼에 있어서, 각 코어들 사이를 연결하며, 상기 제1코어에 구비된 레지스터에 저장된 데이터를 직접적으로 상기 제2코어에 구비된 레지스터에 직접 데이터를 송수신하는 사용자 동적 네트워크와, 각 코어가 억세스 가능한 공유메모리를 포함하고, 각 코어에는 코어 프로세서와, 통신 버스와 상기 사용자 동적 네트워크를 스위칭하는 코어 버스 스위치 및 캐쉬 메모리를 포함하는 것을 특징으로 하며, 코어 프로세서에는 상기 사용자 동적 네트워크를 통해 전송받는 데이터를 저장하며 FIFO 방식의 복수 개 역 다중화 큐와, 역 다중화 큐에 저장된 데이터의 순서를 변환하기 위한 역 다중화 버퍼를 포함하는 것을 특징으로 하는 매니코어 플랫폼에 의해서 달성 가능하다.
본 발명의 또 다른 목적은 제1코어 및 제2코어가 포함하는 복수 개 코어가 가로 및 세로 방향으로 배열되고, 복수 개 코어 사이를 매쉬 형태의 통신 버스 구조로 연결하는 매니코어 플랫폼에서 코어 프로세스 사이의 통신하는 방법에 있어서, 제1코어 및 상기 제2코어에는 각각 데이터가 저장되는 복수 개 역 다중화 큐가 구비되고, 상기 제1코어에서 선택된 어느 하나의 역 다중화 큐에 저장된 데이터는 사용자 동적 네트워크를 이용하여 상기 제2코어에서 선택된 어느 하나의 역 다중화 큐에 직접적으로 송신하는 것을 특징으로 하는 코어 프로세스 사이의 통신하는 방법에 의해서 달성 가능하다.
상기한 기술적 과제를 달성하기 위한 기술적 수단으로, 다수 개 코어로 구성된 매니코어 플랫폼의 코어 간 통신을 위한 장치는 코어 간에 메쉬 형식으로 구성된 통신 버스, 코어 간의 통신을 수신하는 코어측이 가지고 있는 역 다중화 버퍼(demux buffer), 및 역 다중화 버퍼와 연결되어 있는 역 다중화 큐(demux queue)를 포함한다.
상기한 통신 버스는 매니코어 플랫폼의 모든 코어를 2차원 정방형으로 연결한 메쉬 형식의 물리적 네트워크로 코어 간의 통신 정보를 전달할 수 있다.
상기한 코어 간의 통신 정보는 한 개 또는 다수 개의 코어 워드 크기를 가진 데이터로, 코어에서 수행되는 프로세스가 다른 코어에서 수행되는 프로세스에게 전달할 데이터를 포함할 수 있다. 상기한 코어 워드는 매니코어 플랫폼를 구성하고 있는 코어의 아키텍쳐에 따른 워드 크기로 구성한다.
상기한 역 다중화 버퍼는 매니코어 플랫폼의 각 코어에 개별적으로 구성되어 있는 장치로 역 다중화의 출력부는 다수 개의 역 다중화 큐에 연결되어 있어서, 다른 코어에서 수신한 통신 정보를 역 다중화 큐에 전달할 수 있다.
상기한 역 다중화 큐는 역 다중화 버퍼에 연결된 특수 레지스터로, 코어 간의 통신 정보를 수신한 코어는 역 다중화 큐가 매핑되어 있는 다수 개의 특수 레지스터를 읽음으로써 통신 정보 내부에 담긴 데이터를 인식할 수 있다.
코어 간의 직접적인 통신 방법을 본 발명에서는 사용자 동적 네트워크라고 부른다. 기본적으로 시스템 운영을 위해 코어 간의 통신을 수행하지만 한 발 더 나아가 여러 코어 간의 통신을 직접으로 제어할 수 있는 방법으로 매니코어 플랫폼에서 병렬 프로그래밍을 더욱 효율적으로 할 수 있는 방안을 마련해 준다.
본 발명에 따른 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법에 의하면 매니코어 플랫폼에서 프로세스를 코어에 효율적으로 할당함으로써 매쉬 구조 형태의 실시간 연산 환경에서 효율적으로 병렬처리함으로써 자원을 활용할 수 있다. 또한, 매니코어 플랫폼의 개별적인 코어에서 구동되는 프로세스 간의 데이터 통신을 짧은 반응시간 내에 처리할 수 있다.
도 1은 본 발명에 따른 4x4 매니코어 플랫폼의 매쉬 구조를 나타내는 개념도.
도 2는 본 발명에 따른 매쉬구조의 매니코어 플랫폼을 구성하는 각 코어의 구조를 나타내는 개념도.
도 3은 본 발명에 따른 일 실시예의 코어 버스 스위치와 코어 프로세서의 구성도.
도 4는 시스템 스택의 구조도.
도 5는 도 1에 제시된 매니코어 플랫폼에서 쓰레드를 할당하는 방식을 설명하는 개념도.
도 6은 매니코어 플랫폼에서 메모리를 공유하는 방법을 설명하는 예시도.
도 7은 코어 버스를 통한 코어 프로세스간의 동적 네트워크를 설명하는 개념도.
도 8은 본 발명의 실시예로서, 매니코어 플랫폼에서 프로세스 코어를 할당하고 개별 코어에서 구동되는 응용 간의 공유 메모리와 사용자 동적 네트워크를 사용하는 통신 예시도.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명에 따른 코어간 통신 버스는 매니코어 플랫폼의 모든 코어를 2차원 정방형으로 연결한 메쉬 형식의 물리적 네트워크로, 코어 간의 통신 정보를 전달할 수 있다.
본 발명에 따른 코어 간의 통신 정보는, 한 개 또는 다수 개의 코어 워드 크기를 가진 데이터로 코어에서 수행되는 프로세스가 다른 코어에서 수행되는 프로세스에게 전달할 데이터를 포함할 수 있다. 이렇나 코어 워드는 매니코어 플랫폼를 구성하고 있는 코어의 아키텍쳐에 따른 워드 크기를 갖도록 설계한다.
본 발명에 따른 역 다중화 버퍼는 매니코어 플랫폼의 각 코어에 개별적으로 구성되어 있는 장치로, 역 다중화의 출력부는 다수 개의 역 다중화 큐에 연결되어 있어서 다른 코어에서 수신한 통신 정보를 역 다중화 큐에 전달할 수 있다. 역 다중화 큐는, 역 다중화 버퍼에 연결된 특수 레지스터로, 코어 간의 통신 정보를 수신한 코어는 역 다중화 큐가 매핑되어 있는 다수 개의 특수 레지스터를 읽음으로써 통신 정보 내부에 담긴 데이터를 인식할 수 있다.
매니코어 플랫폼은 동종의 다수 개의 코어로 병렬 처리 환경을 제공할 수 있는 시스템이다. 매니코어 플랫폼은 개별적인 프로세스를 처리할 수 있는 코어가 물리적인 통신 버스를 통해 연결되어 있으며, 각 코어는 다른 코어에게 데이터를 전송할 수 있다. 도 1은 본 발명에 따른 4x4 매니코어 플랫폼의 매쉬 구조를 나타내는 개념도이다. 각 코어는 통신 버스를 이용하여 코어 간에 통신을 할 수 있다. 코어 0는 하이퍼바이저와 슈퍼바이저를 수행하여 시스템의 운영과 관련된 일을 수행하는 주요 코어가 되며 코어 1 ~ 코어 15에서 코어 0으로부터 통신 버스를 통해 작업을 할당받아 수행한다.
매니코어 플랫폼에서 코어 간에 데이터 연동 기능을 제공하는 통신 버스는 사용자 동적 네트워크(User Dynamic Network)로 구현되며, 이는 매니코어 플랫폼 상에 구현된 공유 메모리(Shared Memory)보다 우선시된다. 각 코어는 독립적으로 정보처리 등의 프로세스를 처리할 수 있다.
사용자 동적 네트워크는 최소한의 지연시간이 필요한 코어 간의 점대점 데이터 통신에 최적화되어 있다. 사용자 동적 네트워크는 이를 위해 구성된 하드웨어적인 통신 버스에 기반하기 때문에, 하나의 코어에서 다른 코어로 데이터가 이동함에 있어 캐쉬를 거치지 않고 레지스터에서 레지스터로 바로 연결하는 방식을 취하고 있어, 종래 코어 간 통신 방법에 비해 향상된 성능을 보인다. 코어 프로세서들은 사용자 동적 네트워크를 통해 직접적으로 빠른 통신이 가능하며 병렬프로그래밍에 특히 유용하게 사용할 수 있다.
도 2는 본 발명에 따른 매쉬구조의 매니코어 플랫폼을 구성하는 각 코어의 구조를 나타내는 개념도이다. 코어 0는 코어 간의 통신 버스(Bus)를 이어주는 코어 버스 스위치, 코어 프로세서, 및 캐쉬 메모리를 포함하도록 구성된다. 일반적으로 코어 버스 스위치를 통해 전달된 정보는 캐쉬 메모리로 저장되지만 본 발명에서는 사용자 동적 네트워크를 이용하여 실시간으로 코어 프로세서 간에 통신이 이루어지도록 구성하였다.
도 3은 본 발명에 따른 일 실시예의 코어 버스 스위치와 코어 프로세서의 구성도이다. 구체적으로 코어 버스 스위치와 코어 0 프로세서를 상세하게 도시한 구성도이다. 역 다중화 큐는 사용자 동적 네트워크를 통해 전달된 정보를 저장하는 역할을 하며, 코어 간의 통신 정보를 수신한 코어는 역 다중화 큐의 주소가 기록된 레지스터를 통해 역 다중화 큐에 접근함으로써 통신 정보 내부에 담긴 데이터를 인식할 수 있다. 2차원 매쉬 구조상의 각 코어는 사용자 동적 네트워크로 전달되는 정보를 수신하기 위해 다수 개의 큐를 생성하는데, 이때 이 큐를 역 다중화 큐라고 하며, 각 큐에 대한 주소를 지정된 레지스터에 기록한다. 코어의 프로세서 상에서 실행되는 소프트웨어는 레지스터에 기록된 주소를 통해 역 다중화 큐에 접근할 수 있다.
사용자 동적 네트워크에서 코어와 코어 사이에 전송되는 정보는 필수적으로 특정한 식별값을 갖는다. 해당 식별값은 코어가 정보를 수신할 때, 어떠한 역 다중화 큐에 정보를 저장할 것인가를 결정하기 위해 사용되며, 큐에 정보가 저장된 이후에는 제거된다. 따라서 소프트웨어가 레지스터를 통해 역 다중화 큐에 접근하면 해당 식별값을 비롯한 헤더가 제거된 정보를 취득한다.
하나의 역 다중화 큐에 어떠한 정보가 여러 개 저장되어 있을 때, 큐에 가장 먼저 저장된 정보가 소프트웨어에 의해 사용되지 않아서 그 후로 도착한 정보들이 큐에 저장된 채로 접근되지 못하는 경우를 막기 위해, 각 코어는 역 다중화 버퍼를 생성한다. 역 다중화 버퍼의 크기는 구현하기에 따라 다르며, 정보가 코어에 도착한 순서대로 역 다중화 큐에 저장되는 대신, 역 다중화 버퍼를 사용하여 큐에 적재된 정보의 순서가 변경될 수 있도록 한다.
매니코어 플랫폼의 코어들을 제어하기 위해서 하드웨어 구성을 제어하는 시스템 스택인 하이퍼 바이저 계층이 존재한다. 도 4는 시스템 스택의 구조도이다. 하이퍼 바이저는 매니 매니코어 플랫폼뿐만 아니라 시스템이 가진 모든 하드웨어들을 추상화 하고 운영하는 역할을 한다. 하이퍼 바이저 위에 어플리케이션을 위한 입출력 장치와 시스템을 제어하는 라이브러리를 제공하는 슈퍼 바이져 계층이 존재한다.
매니코어 플랫폼에서 응용을 수행할 때 쓰레드를 할당하는 방법은 최대한 메인 프로세서와 가까운 코어에 쓰레드를 할당하는 것이 효율적이다. 메인 프로세서에서는 새로운 쓰레드가 생성되면 메인 프로세서가 할당된 코어의 부담을 줄여주기 위해 코어 0와 가까이 위치하는 코어에 쓰레드를 할당하여 작업을 분담한다. 도 5는 도 1에 제시된 매니코어 플랫폼에서 쓰레드를 할당하는 방식을 설명하는 개념도이다. 코어 0와 가까운 코어 1, 코어 4, 코어 5 등에 쓰레드를 할당하여 작업을 분담한다. 해당 코어들은 매니코어 플랫폼상에 구현된 공유 메모리를 통해 정보를 공유하게 된다.
매니코어 플랫폼에서 응용이 두 개 이상의 코어를 이용하면 코어들은 매니코어 플랫폼상에 구현된 공유 메모리를 통해 정보를 공유하게 된다. 도 6은 매니코어 플랫폼에서 메모리를 공유하는 방법을 설명하는 예시도이다. 코어 0는 공유 메모리를 통해 코어 1과 메모리를 공유하며 코어 2는 코어 3과 메모리를 공유한다. 해당 공유 방법은 하나의 응용에서 쓰레드 할당을 통해 시스템이 자동적으로 공유를 생성할 수 있지만 사용자에 의해 다른 코어에 할당된 두 개 이상의 응용간의 공유 메모리를 생성할 수 있다. 공유된 메모리 정보를 모두 코어간의 통신 버스를 통해 전달이 된다.
매니코어 플랫폼에서 코어간의 직접적인 통신을 위해 코어 버스에 사용자 동적 네트워크를 수행하는 통로를 지정하였다. 이러한 통로를 통해 공유메모리 또는 캐쉬 메모리를 통과하지 않고 직접 코어 프로세스끼리 즉각적인 정보 교환이 가능하다. 도 7은 코어 버스를 통한 코어 프로세스간의 동적 네트워크를 설명하는 개념도이다. 도 7에서는 코어 0가 코어 1, 코어 4, 및 코어 5에 사용자 동적 네트워크를 통해 정보를 전달하면 코어 1, 코어 4, 및 코어 5는 받은 정보를 가공하거나 혹은 받은 정보를 가공하지 않고 코어 6에 전달할 수 있다. 코어간의 수신된 정보들은 역 다중화 큐라는 공간에 저장된 후 처리되며 큐는 FIFO방식으로 수행된다. 사용자 동적 네트워크를 이용하면 시스템 또는 응용에서 사용자가 긴급한 데이터를 효율적이고 빠르게 전달할 수 있어 병렬프로그래밍을 효과적으로 수행한다.
도 8은 본 발명의 실시예로서, 매니코어 플랫폼에서 프로세스 코어를 할당하고 개별 코어에서 구동되는 응용 간의 공유 메모리와 사용자 동적 네트워크를 사용하는 통신 예시도이다. 응용 0은 코어 0에 메인 프로세스를 구동한다. 메인 프로세스는 코어에서 생성되는 쓰레드를 각 코어 1, 2, 3, 4에 쓰레드 1, 2, 3, 4로 할당하여 하나의 응용이 구동된다. 이와 같은 방법으로 응용 0는 총 5개의 코어를 사용하여 구동되며 응용 1, 2, 3, 4는 각각 코어 5, 6, 7, 8에서 개별 구동된다. 응용 1은 공유 메모리를 통해 응용 1의 쓰레드 1이 할당된 코어 1과 공유 메모리 방식을 사용하여 메모리를 공유하게 된다. 또한, 응용 2, 3, 4는 동일한 방식으로 응용 0의 쓰레드 2, 3, 4와 메모리를 공유하여 병렬 프로그래밍이 가능하다. 그와 동시에 응용 1, 2, 3, 4는 응용 0의 메인 프로세스와 사용자 동적 네트워크를 통해 긴급한 데이터를 서로 주고받을 수 있다. 여기서 처리되는 정보는 공유메모리보다 우선시 되어 처리된다. 이처럼 본 발명을 사용하면 사용자가 자유롭게 실시간 처리를 할 수 있으며 한정된 메모리 자원을 효율적으로 활용할 수 있다.
본 명세서의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 명세서의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한 본 발명의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 포함한 것으로 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있고 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리범위에 포함된다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.

Claims (5)

  1. 제1코어 및 제2코어가 포함하는 복수 개 코어가 가로 및 세로 방향으로 배열되고, 상기 복수 개 코어 사이를 매쉬 형태의 통신 버스 구조로 연결하는 매니코어 플랫폼에 있어서,
    상기 각 코어들 사이를 연결하며, 상기 제1코어에 구비된 레지스터에 저장된 데이터를 직접적으로 상기 제2코어에 구비된 레지스터에 직접 데이터를 송수신하는 사용자 동적 네트워크와,
    상기 각 코어가 억세스 가능한 공유메모리를 포함하고,
    상기 각 코어에는
    코어 프로세서와,
    상기 통신 버스와 상기 사용자 동적 네트워크를 스위칭하는 코어 버스 스위치 및
    캐쉬 메모리를 포함하는 것을 특징으로 하며,
    상기 코어 프로세서에는
    상기 사용자 동적 네트워크를 통해 전송받는 데이터를 저장하며 FIFO 방식의 복수 개 역 다중화 큐와,
    상기 역 다중화 큐에 저장된 데이터의 순서를 변환하기 위한 역 다중화 버퍼를 포함하는 것을 특징으로 하는 매니코어 플랫폼.
  2. 제1항에 있어서,
    상기 코어 프로세서에는 상기 복수 개 역 다중화 큐의 각각의 위치를 저장하는 복수 개 역 다중화 큐 주소를 저장하는 레지스터가 더 포함되는 것을 특징으로 하는 매니코어 플랫폼.
  3. 제1항 또는 제2항에 있어서,
    상기 코어 프로세서에는 상기 사용자 동적 네트워크를 통해 전송받는 데이터의 헤더에 포함된 식별자를 비교하는 헤더 내 식별자 비교 모듈이 더 포함되는 것을 특징으로 하는 매니코어 플랫폼.
  4. 제1코어 및 제2코어가 포함하는 복수 개 코어가 가로 및 세로 방향으로 배열되고, 상기 복수 개 코어 사이를 매쉬 형태의 통신 버스 구조로 연결하는 매니코어 플랫폼에서 코어 프로세스 사이의 통신하는 방법에 있어서,
    상기 제1코어 및 상기 제2코어에는 각각 데이터가 저장되는 복수 개 역 다중화 큐가 구비되고, 상기 제1코어에서 선택된 어느 하나의 역 다중화 큐에 저장된 데이터는 사용자 동적 네트워크를 이용하여 상기 제2코어에서 선택된 어느 하나의 역 다중화 큐에 직접적으로 송신하는 것을 특징으로 하는 코어 프로세스 사이의 통신하는 방법.
  5. 제4항에 있어서,
    상기 제1코어에 저장된 데이터를 상기 제2코어에 전송하기 이전에, 상기 제1코어에는 역 다중화 버퍼를 구비하고, 상기 제1코어에서 선택된 상기 역 다중화 큐에 저장된 복수 개 데이터 중에서 상기 제2코어에 전송하기 원하는 데이터를 인출하는 단계를 더 구비하는 것을 특징으로 하는 코어 프로세스 사이의 통신하는 방법.
PCT/KR2016/008902 2015-08-26 2016-08-12 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법 WO2017034200A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20150120306 2015-08-26
KR10-2015-0120306 2015-08-26

Publications (1)

Publication Number Publication Date
WO2017034200A1 true WO2017034200A1 (ko) 2017-03-02

Family

ID=58100333

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/008902 WO2017034200A1 (ko) 2015-08-26 2016-08-12 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법

Country Status (2)

Country Link
KR (1) KR101797929B1 (ko)
WO (1) WO2017034200A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022111457A1 (zh) * 2020-11-24 2022-06-02 北京灵汐科技有限公司 核心簇同步的方法及控制方法、数据处理方法、电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950005795B1 (ko) * 1992-12-22 1995-05-31 재단법인한국전자통신연구소 다중 프로세서 시스템에서 프로세서 보드 사이의 데이타 전송을 지원하는 방법
WO2002029583A1 (en) * 2000-10-04 2002-04-11 Agile Tv Corporation System, method, and node of a multi-dimensional plex communication network and node thereof
US20120120959A1 (en) * 2009-11-02 2012-05-17 Michael R Krause Multiprocessing computing with distributed embedded switching
KR101163868B1 (ko) * 2007-10-02 2012-07-13 오픈픽 인크. 프로세서 간 통신을 위한 시스템 및 방법
US20120226873A1 (en) * 2011-03-04 2012-09-06 Nxp B.V. Multiprocessor arrangement having shared memory, and a method of communication between processors in a multiprocessor arrangement

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4100256B2 (ja) * 2003-05-29 2008-06-11 株式会社日立製作所 通信方法および情報処理装置
US8549092B2 (en) 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
KR101235831B1 (ko) * 2010-05-11 2013-02-21 한국전자통신연구원 통신 시스템에서 데이터 송수신 장치 및 방법
KR101671184B1 (ko) 2010-12-14 2016-11-01 삼성전자주식회사 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950005795B1 (ko) * 1992-12-22 1995-05-31 재단법인한국전자통신연구소 다중 프로세서 시스템에서 프로세서 보드 사이의 데이타 전송을 지원하는 방법
WO2002029583A1 (en) * 2000-10-04 2002-04-11 Agile Tv Corporation System, method, and node of a multi-dimensional plex communication network and node thereof
KR101163868B1 (ko) * 2007-10-02 2012-07-13 오픈픽 인크. 프로세서 간 통신을 위한 시스템 및 방법
US20120120959A1 (en) * 2009-11-02 2012-05-17 Michael R Krause Multiprocessing computing with distributed embedded switching
US20120226873A1 (en) * 2011-03-04 2012-09-06 Nxp B.V. Multiprocessor arrangement having shared memory, and a method of communication between processors in a multiprocessor arrangement

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022111457A1 (zh) * 2020-11-24 2022-06-02 北京灵汐科技有限公司 核心簇同步的方法及控制方法、数据处理方法、电子设备

Also Published As

Publication number Publication date
KR101797929B1 (ko) 2017-11-15
KR20170026130A (ko) 2017-03-08

Similar Documents

Publication Publication Date Title
US11347556B2 (en) Configurable logic platform with reconfigurable processing circuitry
US9823868B2 (en) Method and apparatus for virtualization
EP3206339B1 (en) Network card configuration method and resource management center
US7689694B2 (en) Process management apparatus, computer systems, distributed processing method, and computer program for avoiding overhead in a process management device
US20150163172A1 (en) Server switch integration in a virtualized system
KR20040014604A (ko) 리소스 할당 방법 및 프로세서
US8195737B2 (en) Process management apparatus, computer systems, distributed processing method, and computer program
WO2016015493A1 (zh) 一种硬件虚拟端口及处理器系统
WO2017034200A1 (ko) 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법
US8782665B1 (en) Program execution optimization for multi-stage manycore processors
US9282051B2 (en) Credit-based resource allocator circuit
US8824317B2 (en) Parallel calculation system, and method and program thereof
US10069767B1 (en) Method of dynamically allocating buffers for packet data received onto a networking device
US9548947B2 (en) PPI de-allocate CPP bus command
WO2022160626A1 (zh) 命令处理装置以及方法、电子设备、以及计算机存储介质
US9699107B2 (en) Packet engine that uses PPI addressing
CN117631976A (zh) 用于基于存储器的通信队列的存取请求重新排序
US20160057079A1 (en) Ppi allocation request and response for accessing a memory system
US20160057058A1 (en) Cpp bus transaction value having a pam/lam selection code field

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

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

Country of ref document: EP

Kind code of ref document: A1