KR20120086999A - 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법 - Google Patents

멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법 Download PDF

Info

Publication number
KR20120086999A
KR20120086999A KR1020110008411A KR20110008411A KR20120086999A KR 20120086999 A KR20120086999 A KR 20120086999A KR 1020110008411 A KR1020110008411 A KR 1020110008411A KR 20110008411 A KR20110008411 A KR 20110008411A KR 20120086999 A KR20120086999 A KR 20120086999A
Authority
KR
South Korea
Prior art keywords
data
local memory
cores
local
parallel
Prior art date
Application number
KR1020110008411A
Other languages
English (en)
Other versions
KR101754998B1 (ko
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 KR1020110008411A priority Critical patent/KR101754998B1/ko
Priority to US13/305,163 priority patent/US8745339B2/en
Publication of KR20120086999A publication Critical patent/KR20120086999A/ko
Application granted granted Critical
Publication of KR101754998B1 publication Critical patent/KR101754998B1/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]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem

Abstract

멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법이 개시된다. 본 발명의 실시예들에 따르면, 멀티 코어 시스템에서 데이터의 분할(Partitioning), 할당(Scheduling) 등을 로컬 메모리 정보에 대응하여 동적으로 제어함으로써, CPU 및 로컬 메모리의 활용성을 높이고, 데이터 병렬 처리의 성능을 향상시킬 수 있다.

Description

멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법{Multi Core System and Method for Processing Data}
본 발명의 실시예들은 멀티 코어 시스템 및 그 멀티 코어 시스템에서의 데이터 병렬 처리 방법에 관한 것이다.
한 개의 프로세서(Processor)를 사용하는 기존의 싱글 코어 시스템(Single Core System)은 클럭(Clock) 향상의 한계 및 전력 문제 때문에, 프로세서를 여러 개 사용하는 멀티 코어 시스템으로 변화하고 있다.
또한, 이러한 하드웨어의 한계로 인한 변화는 필연적으로 소프트웨어의 변화 역시 야기했다. 기존 소프트웨어는 싱글 코어 기반만을 고려하여 작성되었기 때문에, 멀티 코어에서는 동작할 때는 성능 향상을 기대할 수 없었다. 이는 싱글 코어와 멀티 코어의 구조가 완전히 다르기 때문이다. 따라서, 이를 해결하기 위해, 멀티 코어용 OS, 병렬 처리를 가능하게 해주는 병렬 프로그래밍 모델, 동적 실행 환경 등에 대한 연구가 계속 되고 있다.
본 발명의 실시예들은 멀티 코어 시스템에서 데이터의 분할(Partitioning), 할당(Scheduling) 등을 로컬 메모리 정보에 대응하여 동적으로 제어함으로써, CPU 및 로컬 메모리의 활용성을 높이고, 데이터 병렬 처리의 성능을 향상시키는데 그 목적이 있다.
본 발명의 일실시예에 따른 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법은, 복수 개의 코어 각각에 대응하는 복수 개의 로컬 메모리(Local Memory)에 대한 로컬 메모리 정보를 획득하는 단계; 및 상기 로컬 메모리 정보에 기반하여, 상기 데이터를 복수 개의 서브 데이터(Subdata)로 분할(Partitioning)하는 단계를 포함한다.
본 발명의 일실시예에 따른 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법은, 복수 개의 코어 중 상기 데이터의 서브 데이터를 처리할 코어에 대응하는 로컬 메모리에 대한 로컬 메모리 정보를 획득하는 단계; 상기 로컬 메모리 정보에 기반하여, 상기 서브 데이터를 처리할 코어에 할당될 상기 서브 데이터의 부분의 크기(Size of a Part of Subdata)를 연산하는 단계; 및 상기 연산된 크기의 상기 서브 데이터의 부분을 상기 서브 데이터를 처리할 코어에게 할당하는 단계를 포함한다.
본 발명의 일실시예에 따른 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법은, 상기 데이터에 대한 병렬 처리의 런타임(Runtime) 중 코어에 대응하는 로컬 메모리에 대한 로컬 메모리 정보를 획득하는 단계; 및 상기 로컬 메모리의 가용량이 증가한 경우 상기 데이터에 멀티 버퍼링(Multi-Buffering)을 수행하고, 상기 가용량이 감소한 경우 상기 데이터에 대하여 재분할을 수행하는 단계를 포함한다.
본 발명의 일실시예에 따른 데이터를 병렬 처리하는 멀티 코어 시스템은, 복수 개의 로컬 메모리; 상기 복수 개의 로컬 메모리 각각을 포함하는 복수 개의 코어; 상기 복수 개의 코어가 공유하는 공유 메모리; 및 상기 데이터를 병렬 처리하도록 상기 복수 개의 코어를 제어하는 제어부를 포함하고, 상기 제어부는 상기 복수 개의 로컬 메모리(Local Memory)에 대한 로컬 메모리 정보를 획득하며, 상기 로컬 메모리 정보에 기반하여, 상기 데이터를 복수 개의 서브 데이터(Subdata)로 분할(Partitioning)한다.
본 발명의 일실시예에 따른 데이터를 병렬 처리하는 멀티 코어 시스템은, 복수 개의 로컬 메모리; 상기 복수 개의 로컬 메모리 각각을 포함하는 복수 개의 코어; 상기 복수 개의 코어가 공유하는 공유 메모리; 및 상기 데이터를 병렬 처리하도록 상기 복수 개의 코어를 제어하는 제어부를 포함하고, 상기 제어부는 상기 복수 개의 코어 중 상기 데이터의 서브 데이터를 처리할 코어에 대응하는 상기 로컬 메모리에 대한 로컬 메모리 정보를 획득하며, 상기 로컬 메모리 정보에 기반하여, 상기 서브 데이터를 처리할 코어에 할당될 상기 서브 데이터의 부분의 크기(Size of a Part of Subdata)를 연산하고, 상기 연산된 크기의 상기 서브 데이터의 부분을 상기 서브 데이터를 처리할 코어에게 할당한다.
본 발명의 일실시예에 따른 데이터를 병렬 처리하는 멀티 코어 시스템은, 복수 개의 로컬 메모리; 상기 복수 개의 로컬 메모리 각각을 포함하는 복수 개의 코어; 상기 복수 개의 코어가 공유하는 공유 메모리; 및 상기 데이터를 병렬 처리하도록 상기 복수 개의 코어를 제어하는 제어부를 포함하고, 상기 제어부는 상기 데이터에 대한 병렬 처리의 런타임(Runtime) 중 상기 복수 개의 로컬 메모리에 대한 로컬 메모리 정보를 획득하며, 상기 복수 개의 로컬 메모리 중 어느 하나의 가용량이 증가한 경우 상기 데이터에 멀티 버퍼링(Multi-Buffering)을 수행하고, 상기 가용량이 감소한 경우 상기 데이터에 대하여 재분할을 수행한다.
멀티 코어 시스템에서 데이터의 분할(Partitioning), 할당(Scheduling) 등을 로컬 메모리 정보에 대응하여 동적으로 제어함으로써, CPU 및 로컬 메모리의 활용성을 높이고, 데이터 병렬 처리의 성능을 향상시킬 수 있다.
도 1은 본 발명의 일실시예에 따른 멀티 코어 시스템을 나타내는 도면이다.
도 2는 본 발명의 일실시예에 따른 멀티 코어 시스템이 멀티 버퍼링을 수행하는 동작을 나타내는 도면이다.
도 3은 본 발명의 일실시예에 따른 멀티 코어 시스템이 재분할(Repartitioning)을 수행하는 동작을 나타내는 도면이다.
도 4 내지 도 6은 본 발명의 일실시예에 따른 데이터 병렬 처리 방법을 나타내는 흐름도이다.
이하에서, 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 멀티 코어 시스템을 나타내는 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 데이터를 병렬 처리하는 멀티 코어 시스템(Multi Core System)(100)은 복수 개의 로컬 메모리(Local Memory)(121, 122, 123, 124), 복수 개의 로컬 메모리(121, 122, 123, 124) 각각을 포함하는 복수 개의 코어(Core)(111, 112, 113, 114), 복수 개의 코어(111, 112, 113, 114)가 공유하는 공유 메모리(Shared Memory)(130) 및 데이터를 병렬 처리하도록 복수 개의 코어(111, 112, 113, 114)를 제어하는 제어부(140)를 포함한다.
본 발명의 일측에 따르면, 제어부(140)는 복수 개의 로컬 메모리(121, 122, 123, 124)에 대한 로컬 메모리 정보를 획득할 수 있다.
일실시예에 따른 로컬 메모리 정보는 로컬 메모리의 총 크기, 사용 중인 크기, 사용 가능한 크기, 사용 빈도, 접근 비용 등에 대한 정보를 포함할 수 있다.
제어부(140)는 로컬 메모리 정보에 기반하여, 데이터를 복수 개의 서브 데이터(Subdata)로 분할(Partitioning)할 수 있다. 자세히 설명하면, 제어부(140)는 로컬 메모리 정보로부터 복수 개의 서브 데이터의 분할 비율을 결정하고, 결정된 분할 비율에 따라 데이터를 복수 개의 서브 데이터로 분할할 수 있다.
본 발명의 일측에 따르면, 제어부(140)는 복수 개의 로컬 메모리(121, 122, 123, 124)의 크기의 비율(Ratio)대로 데이터를 복수 개의 서브 데이터로 분할할 수 있다. 예를 들어, 4개의 로컬 메모리(121, 122, 123, 124)의 크기의 비율이 3:1:2:1인 경우, 제어부(140)는 데이터를 3:1:2:1 비율의 크기를 갖는 4개의 서브 데이터로 분할할 수 있다.
실시예에 따라서는, 제어부(140)는 로컬 메모리 정보에 기반하여, 데이터를 복수 개의 서브 데이터의 집합으로 분할할 수 있다. 이 때, 각 집합은 적어도 하나의 서브 데이터를 포함할 수 있다.
본 발명의 일측에 따르면, 제어부(140)는 복수 개의 코어(111, 112, 113, 114) 중 데이터의 서브 데이터를 처리할 코어에 대응하는 로컬 메모리에 대한 로컬 메모리 정보를 획득할 수 있다.
또한, 제어부(140)는 로컬 메모리 정보에 기반하여, 서브 데이터를 처리할 코어에 할당될 서브 데이터의 부분의 크기(Size of a Part of Subdata)를 연산할 수 있다.
또한, 제어부(140)는 연산된 크기의 서브 데이터의 부분을 서브 데이터를 처리할 코어에게 할당할 수 있다.
예를 들어, 코어 1(112)이 서브 데이터를 처리하는 경우, 제어부(140)는 코어 1(112)에 대응하는 로컬 메모리(122)에 대한 로컬 메모리 정보를 획득할 수 있다. 또한, 제어부(140)는 로컬 메모리(122)에 대한 로컬 메모리 정보에 기반하여, 코어 1(112)에 할당될 서브 데이터의 부분의 크기를 연산할 수 있다. 또한, 제어부(140)는 연산된 크기를 갖는 부분을 코어 1(112)로 할당할 수 있다.
본 발명의 일측에 따르면, 제어부(140)는 데이터에 대한 병렬 처리의 런타임(Runtime) 중 복수 개의 로컬 메모리(121, 122, 123, 124)에 대한 로컬 메모리 정보를 획득할 수 있다.
또한, 제어부(140)는 복수 개의 로컬 메모리(121, 122, 123, 124) 중 어느 하나의 가용량이 증가한 경우, 데이터에 멀티 버퍼링(Multi-Buffering)을 수행할 수 있다. 또한, 제어부(140)는 복수 개의 로컬 메모리(121, 122, 123, 124) 중 어느 하나의 가용량이 감소한 경우 데이터에 대하여 재분할을 수행할 수 있다.
본 발명의 일측에 따르면, 제어부(140)는 멀티 버퍼링을 수행한 이후에 로컬 메모리의 가용량이 다시 감소한 경우, 감소한 가용량에 대응하는 로컬 메모리의 크기를 반환할 수 있다.
이하 도 2 및 도 3을 참조하여, 본 발명의 일실시예에 따른 멀티 코어 시스템(100)의 제어부(140)가 멀티 버퍼링 및 재분할을 수행하는 동작에 대해서 상세히 설명한다.
도 2는 본 발명의 일실시예에 따른 멀티 코어 시스템이 멀티 버퍼링을 수행하는 동작을 나타내는 도면이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템은 로컬 메모리(211)에 대하여 A0 서브 데이터(221) 및 A1 서브 데이터(222)를 할당하여 데이터를 처리할 수 있다. 이 때, A0 서브 데이터(221)를 처리하는 런타임 중 로컬 메모리(211)의 가용량이 증가하여 로컬 메모리(212)가 된 경우, 멀티 코어 시스템은 데이터에 대하여 멀티 버퍼링을 수행할 수 있다. 즉, 로컬 메모리(211)의 가용량이 증가하여 로컬 메모리(212)가 되었기 때문에, 멀티 코어 시스템은 A0 서브 데이터(221) 및 A1 서브 데이터(222)를 합친 서브 데이터(223)를 로컬 메모리(212)에 올릴 수 있다.
본 발명의 일측에 따르면, 가용량이 증가하여 로컬 메모리(212)가 된 이후에 가용량이 다시 감소한 경우, 멀티 코어 시스템은 다시 감소한 가용량만큼에 대응하는 로컬 메모리의 크기를 반환할 수 있다.
도 3은 본 발명의 일실시예에 따른 멀티 코어 시스템이 재분할(Repartitioning)을 수행하는 동작을 나타내는 도면이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템은 로컬 메모리(311)에 대하여 A0 서브 데이터(321)를 할당하여 데이터를 처리할 수 있다. 이 때, A0 서브 데이터(321)를 처리하는 런타임 중 로컬 메모리(311)의 가용량이 감소하여 로컬 메모리(312)가 된 경우, 멀티 코어 시스템은 데이터에 대하여 재분할을 수행할 수 있다. 즉, 로컬 메모리(311)의 가용량이 감소하여 로컬 메모리(312)가 되었기 때문에, 멀티 코어 시스템은 A0 서브 데이터(321)를 A0' 서브 데이터(322) 및 A0'' 서브 데이터(323)으로 재분할할 수 있고, A0' 서브 데이터(322)를 로컬 메모리(312)에 올릴 수 있다.
도 4 내지 도 6은 본 발명의 일실시예에 따른 데이터 병렬 처리 방법을 나타내는 흐름도이다.
도 4를 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법은, 복수 개의 코어 각각에 대응하는 복수 개의 로컬 메모리(Local Memory)에 대한 로컬 메모리 정보를 획득할 수 있다(410).
일실시예에 따른 로컬 메모리 정보는 로컬 메모리의 총 크기, 사용 중인 크기, 사용 가능한 크기, 사용 빈도, 접근 비용 등에 대한 정보를 포함할 수 있다.
또한, 데이터 병렬 처리 방법은 획득한 로컬 메모리 정보에 기반하여, 데이터를 복수 개의 서브 데이터(Subdata)로 분할(Partitioning)할 수 있다(420).
자세히 설명하면, 데이터 병렬 처리 방법은 로컬 메모리 정보로부터 복수 개의 서브 데이터의 분할 비율을 결정하고, 결정된 분할 비율에 따라 데이터를 복수 개의 서브 데이터로 분할할 수 있다.
본 발명의 일측에 따르면, 데이터 병렬 처리 방법은 복수 개의 로컬 메모리(Local Memory)의 크기의 비율(Ratio)대로 데이터를 복수 개의 서브 데이터로 분할할 수 있다.
예를 들어, 4개의 로컬 메모리의 크기의 비율이 3:1:2:1인 경우, 데이터 병렬 처리 방법은 데이터를 3:1:2:1 비율의 크기를 갖는 4개의 서브 데이터로 분할할 수 있다.
실시예에 따라서는, 데이터 병렬 처리 방법은 로컬 메모리 정보에 기반하여, 데이터를 복수 개의 서브 데이터의 집합으로 분할할 수 있다. 이 때, 각 집합은 적어도 하나의 서브 데이터를 포함할 수 있다.
도 5를 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법은, 복수 개의 코어 중 데이터의 서브 데이터를 처리할 코어에 대응하는 로컬 메모리에 대한 로컬 메모리 정보를 획득할 수 있다(510).
데이터 병렬 처리 방법은 획득한 로컬 메모리 정보에 기반하여, 서브 데이터를 처리할 코어에 할당될 서브 데이터의 부분의 크기(Size of a Part of Subdata)를 연산할 수 있다(520).
데이터 병렬 처리 방법은 연산된 서브 데이터의 부분의 크기가 0보다 큰지 여부를 판단할 수 있다(530).
연산된 서브 데이터의 부분의 크기가 0보다 큰 경우, 데이터 병렬 처리 방법은 연산된 크기를 갖는 서브 데이터의 부분을 서브 데이터를 처리할 코어에게 할당할 수 있다(540).
연산된 서브 데이터의 부분의 크기가 0보다 같거나 작은 경우, 데이터 병렬 처리 방법은 나머지 코어 중 어느 하나가 서브 데이터를 처리하도록 할 수 있다(550).
도 6을 참조하면, 본 발명의 일실시예에 따른 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법은, 데이터에 대한 병렬 처리의 런타임(Runtime) 중 코어에 대응하는 로컬 메모리에 대한 로컬 메모리 정보를 획득할 수 있다(610).
데이터 병렬 처리 방법은 로컬 메모리 정보에 기반하여, 복수 개의 로컬 메모리 중 런타임 중간에 가용량이 변화한 로컬 메모리가 있는지 여부를 판단할 수 있다(620).
복수 개의 로컬 메모리 중 적어도 하나의 로컬 메모리의 가용량이 증가한 경우, 데이터 병렬 처리 방법은 데이터에 멀티 버퍼링(Multi-Buffering)을 수행할 수 있다(631). 또한, 데이터 병렬 처리 방법은 멀티 버퍼링을 수행한 서브 데이터를 할당할 수 있다(640).
본 발명의 일측에 따르면, 멀티 버퍼링을 수행한 이후에 로컬 메모리의 가용량이 다시 감소한 경우, 데이터 병렬 처리 방법은 감소한 가용량에 대응하는 로컬 메모리의 크기를 반환할 수 있다.
복수 개의 로컬 메모리 중 적어도 하나의 로컬 메모리의 가용량이 감소한 경우, 데이터 병렬 처리 방법은 데이터에 재분할을 수행할 수 있다(632). 또한, 데이터 병렬 처리 방법은 재분할을 수행한 서브 데이터를 할당할 수 있다(640).
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 멀티 코어 시스템
111, 112, 113, 114 : 복수 개의 코어
121, 122, 123, 124 : 복수 개의 로컬 메모리
130: 공유 메모리
140: 제어부

Claims (10)

  1. 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법에 있어서,
    복수 개의 코어 각각에 대응하는 복수 개의 로컬 메모리에 대한 로컬 메모리 정보를 획득하는 단계; 및
    상기 로컬 메모리 정보에 기반하여, 상기 데이터를 복수 개의 서브 데이터로 분할하는 단계
    를 포함하는 데이터 병렬 처리 방법.
  2. 제1항에 있어서,
    상기 분할하는 단계는
    상기 복수 개의 로컬 메모리의 크기의 비율대로 상기 데이터를 상기 복수 개의 서브 데이터로 분할하는 데이터 병렬 처리 방법.
  3. 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법에 있어서,
    복수 개의 코어 중 상기 데이터의 서브 데이터를 처리할 코어에 대응하는 로컬 메모리에 대한 로컬 메모리 정보를 획득하는 단계;
    상기 로컬 메모리 정보에 기반하여, 상기 서브 데이터를 처리할 코어에 할당될 상기 서브 데이터의 부분의 크기를 연산하는 단계; 및
    상기 연산된 크기의 상기 서브 데이터의 부분을 상기 서브 데이터를 처리할 코어에게 할당하는 단계
    를 포함하는 데이터 병렬 처리 방법.
  4. 제3항에 있어서,
    상기 연산된 크기가 0보다 같거나 작은 경우, 나머지 코어 중 어느 하나가 상기 서브 데이터를 처리하는 단계
    를 더 포함하는 데이터 병렬 처리 방법.
  5. 멀티 코어 시스템에서 데이터를 병렬 처리하는 데이터 병렬 처리 방법에 있어서,
    상기 데이터에 대한 병렬 처리의 런타임 중 코어에 대응하는 로컬 메모리에 대한 로컬 메모리 정보를 획득하는 단계; 및
    상기 로컬 메모리의 가용량이 증가한 경우 상기 데이터에 멀티 버퍼링을 수행하고, 상기 가용량이 감소한 경우 상기 데이터에 대하여 재분할을 수행하는 단계
    를 포함하는 데이터 병렬 처리 방법.
  6. 제5항에 있어서,
    상기 멀티 버퍼링을 수행한 이후에 상기 가용량이 다시 감소한 경우, 감소한 가용량에 대응하는 상기 로컬 메모리의 크기를 반환하는 단계
    를 더 포함하는 데이터 병렬 처리 방법.
  7. 제1항 내지 제6항 중 어느 한 항의 방법을 실행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
  8. 데이터를 병렬 처리하는 멀티 코어 시스템에 있어서,
    복수 개의 로컬 메모리;
    상기 복수 개의 로컬 메모리 각각을 포함하는 복수 개의 코어;
    상기 복수 개의 코어가 공유하는 공유 메모리; 및
    상기 데이터를 병렬 처리하도록 상기 복수 개의 코어를 제어하는 제어부
    를 포함하고,
    상기 제어부는
    상기 복수 개의 로컬 메모리에 대한 로컬 메모리 정보를 획득하며,
    상기 로컬 메모리 정보에 기반하여, 상기 데이터를 복수 개의 서브 데이터로 분할하는 멀티 코어 시스템.
  9. 데이터를 병렬 처리하는 멀티 코어 시스템에 있어서,
    복수 개의 로컬 메모리;
    상기 복수 개의 로컬 메모리 각각을 포함하는 복수 개의 코어;
    상기 복수 개의 코어가 공유하는 공유 메모리; 및
    상기 데이터를 병렬 처리하도록 상기 복수 개의 코어를 제어하는 제어부
    를 포함하고,
    상기 제어부는
    상기 복수 개의 코어 중 상기 데이터의 서브 데이터를 처리할 코어에 대응하는 상기 로컬 메모리에 대한 로컬 메모리 정보를 획득하며,
    상기 로컬 메모리 정보에 기반하여, 상기 서브 데이터를 처리할 코어에 할당될 상기 서브 데이터의 부분의 크기를 연산하고,
    상기 연산된 크기의 상기 서브 데이터의 부분을 상기 서브 데이터를 처리할 코어에게 할당하는 멀티 코어 시스템.
  10. 데이터를 병렬 처리하는 멀티 코어 시스템에 있어서,
    복수 개의 로컬 메모리;
    상기 복수 개의 로컬 메모리 각각을 포함하는 복수 개의 코어;
    상기 복수 개의 코어가 공유하는 공유 메모리; 및
    상기 데이터를 병렬 처리하도록 상기 복수 개의 코어를 제어하는 제어부
    를 포함하고,
    상기 제어부는
    상기 데이터에 대한 병렬 처리의 런타임 중 상기 복수 개의 로컬 메모리에 대한 로컬 메모리 정보를 획득하며,
    상기 복수 개의 로컬 메모리 중 어느 하나의 가용량이 증가한 경우 상기 데이터에 멀티 버퍼링을 수행하고, 상기 가용량이 감소한 경우 상기 데이터에 대하여 재분할을 수행하는 멀티 코어 시스템.
KR1020110008411A 2011-01-27 2011-01-27 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법 KR101754998B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110008411A KR101754998B1 (ko) 2011-01-27 2011-01-27 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법
US13/305,163 US8745339B2 (en) 2011-01-27 2011-11-28 Multi-core system and method for processing data in parallel in multi-core system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110008411A KR101754998B1 (ko) 2011-01-27 2011-01-27 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법

Publications (2)

Publication Number Publication Date
KR20120086999A true KR20120086999A (ko) 2012-08-06
KR101754998B1 KR101754998B1 (ko) 2017-07-06

Family

ID=46578376

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110008411A KR101754998B1 (ko) 2011-01-27 2011-01-27 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법

Country Status (2)

Country Link
US (1) US8745339B2 (ko)
KR (1) KR101754998B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210001221A (ko) * 2019-06-27 2021-01-06 중앙대학교 산학협력단 파일 시스템 단편화 제거 방법, 이를 수행하기 위한 기록매체 및 장치

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975331A (zh) * 2016-04-26 2016-09-28 浪潮(北京)电子信息产业有限公司 一种数据并行处理方法及装置
US11567555B2 (en) * 2019-08-30 2023-01-31 Intel Corporation Software assisted power management

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4621359A (en) * 1984-10-18 1986-11-04 Hughes Aircraft Company Load balancing for packet switching nodes
US6292822B1 (en) * 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US7136981B2 (en) * 2001-09-13 2006-11-14 Conocophillips Company Method and apparatus for creating a virtual storage volume with a file size independent of a file size limitation
US7532750B2 (en) * 2002-04-17 2009-05-12 Sony Corporation Image processing apparatus and method, program, and image processing system
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
US8230426B2 (en) * 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP4528284B2 (ja) 2006-06-13 2010-08-18 株式会社日立産機システム プログラマブルコントローラ
US7647483B2 (en) 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
JP5224498B2 (ja) 2007-02-28 2013-07-03 学校法人早稲田大学 メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
US7805579B2 (en) 2007-07-31 2010-09-28 International Business Machines Corporation Methods and arrangements for multi-buffering data
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8683471B2 (en) 2008-10-02 2014-03-25 Mindspeed Technologies, Inc. Highly distributed parallel processing on multi-core device
JP5343523B2 (ja) * 2008-11-17 2013-11-13 富士通株式会社 ジョブ管理装置、ジョブ管理方法およびジョブ管理プログラム
JP5411530B2 (ja) 2009-03-04 2014-02-12 キヤノン株式会社 並列処理プロセッサシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210001221A (ko) * 2019-06-27 2021-01-06 중앙대학교 산학협력단 파일 시스템 단편화 제거 방법, 이를 수행하기 위한 기록매체 및 장치

Also Published As

Publication number Publication date
US20120198182A1 (en) 2012-08-02
KR101754998B1 (ko) 2017-07-06
US8745339B2 (en) 2014-06-03

Similar Documents

Publication Publication Date Title
KR101572879B1 (ko) 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US8528001B2 (en) Controlling and dynamically varying automatic parallelization
US9141173B2 (en) Thread consolidation in processor cores
EP2466460A1 (en) Compiling apparatus and method for a multicore device
US9009703B2 (en) Sharing reconfigurable computing devices between workloads
KR20110075295A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
CN101551761A (zh) 一种异构多处理器中共享流内存的方法
US9229717B2 (en) Register allocation for clustered multi-level register files
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
US8352702B2 (en) Data processing system memory allocation
US9600344B2 (en) Proportional resizing of a logical partition based on a degree of performance difference between threads for high-performance computing on non-dedicated clusters
US20170286168A1 (en) Balancing thread groups
US10846138B2 (en) Allocating resources of a memory fabric
KR20120086999A (ko) 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법
US9158551B2 (en) Activating and deactivating Operating System (OS) function based on application type in manycore system
US8914778B2 (en) Data placement for execution of an executable
US10628223B2 (en) Optimized allocation of tasks in heterogeneous computing systems
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
JP2013114538A (ja) 情報処理装置、情報処理方法及び制御プログラム
KR101755154B1 (ko) 이종 연산 처리 장치에 대한 동적 작업 할당 방법 및 장치
Nozal et al. Towards co-execution of massive data-parallel OpenCL kernels on CPU and Intel Xeon Phi
KR101989033B1 (ko) 플랫폼 관리 장치 및 방법
Hollmann et al. Invasive computing: an application assisted resource management approach
Wu et al. PVMsim: A parallel simulation platform to evaluate virtual machines
KR101284195B1 (ko) 개방형 범용 병렬 컴퓨팅 프레임워크 동적 작업 분배 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right