KR20160061422A - 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템 - Google Patents

소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템 Download PDF

Info

Publication number
KR20160061422A
KR20160061422A KR1020167011573A KR20167011573A KR20160061422A KR 20160061422 A KR20160061422 A KR 20160061422A KR 1020167011573 A KR1020167011573 A KR 1020167011573A KR 20167011573 A KR20167011573 A KR 20167011573A KR 20160061422 A KR20160061422 A KR 20160061422A
Authority
KR
South Korea
Prior art keywords
core
type
loops
cores
block
Prior art date
Application number
KR1020167011573A
Other languages
English (en)
Other versions
KR101770234B1 (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 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20160061422A publication Critical patent/KR20160061422A/ko
Application granted granted Critical
Publication of KR101770234B1 publication Critical patent/KR101770234B1/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
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • Y02B60/142
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법(500)에 관한 것으로서, 상기 방법(500)은 상기 멀티-프로세서 시스템의 이용가능한 제1 유형의 코어의 제1 개수 및 상기 멀티-프로세서 시스템의 이용가능한 제2 유형의 코어의 제2 개수를 평가하는 단계(501); 상기 제1 유형의 코어 연결할 상기 연산 블록의 루프의 제1 개수 및 상기 제2 유형의 코어에 연결할 상기 연산 블록의 루프의 제2 개수를 결정하는 단계(502); 상기 제1 유형의 코어에 상기 제1 개수의 루프를 연결하고, 상기 제2 유형의 코어에 상기 제2 개수의 루프를 연결하는 단계(503); 및 상기 연결(503)에 따라 연산 블록의 루프를 실행하는 단계(504)를 포함한다.

Description

소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템{METHOD AND SYSTEM FOR ASSIGNING A COMPUTATIONAL BLOCK OF A SOFTWARE PROGRAM TO CORES OF A MULTI-PROCESSOR SYSTEM}
본 개시는 소프트웨어 프로그램의 연산 블록(computational block)을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템에 관한 것이다. 본 개시는 추가적으로 멀티코어 및 매니코어 이종 컴퓨팅 시스템에서 적응적 임무 스케쥴링의 시스템 및 방법에 관한 것이다.
멀티-코어 및 매니-코어 이종 컴퓨팅 시스템(MMCHCS)이 최근 네트워킹, 이동 전화, PDA같은 이동 시스템, 및 서브노트북 컴퓨터에서까지 널리 사용된다. 이러한 시스템은 고성능 연산처리(operation)을 위한 통상의 코어 및 전력 인지 연산처리를 위한 저전력 코어 2개의 유형의 프로세서 코어를 포함한다. 제2 유형의 코어는 가능한 경우라면 컴퓨팅 시스템의 에너지 소비를 차단하는 것을 허용한다. 이는 컴퓨팅 시스템의 전력 소비를 감소시키게 하고 재충전 없이 이동 시스템의 배터리 수명을 연장시킨다. 매우 빈번하게, 모든 코어 또는 프로세서가 동일한 칩에 위치되고, 이런 경우 이러한 시스템은 시스템-온-칩(SOC)으로 알려져 있다. MMCHCS의 연산처리를 위해 사용되는 통상적인 시스템 소프트웨어는 컴파일러와 스케쥴러를 포함한다. 컴파일러는 그러한 장치의 프로그램 실행을 만드는 것을 담당하고, 스케쥴러는 런타임(run-time)에서 그러한 장치의 로딩(loading)을 담당한다. 이러한 시스템의 소프트웨어 개발에서 주된 문제는, 어떤 종류의 코어가 MMCHCS의 현재 프로그램 블록의 연산을 위해 사용되어야 하는 문제에 대한 해결방안이다. 현대의 컴파일러에서 상기 해결방안은 프로그래머에 의해 소위 수동으로(manually) 마련된다. 이는 각 프로그래머가 MMCHCS의 효율성의 예측에 대해 자신의 생각을 따라 그의 프로그램의 현재 블록의 실행을 위해 그가 어떤 종류의 코어를 사용할지를 선택하고, 소위 수동으로 혼자서 현재 블록을 그의 프로그램의 코어 유형에 정밀하게 할당하는 것을 의미한다.
프로그램의 하기 실행 동안 어떠한 방법으로도 이러한 할당을 변경할 수 없다. 현대 스케쥴러도 이 정책을 변경할 수 없다. 이로 인해 연산의 불균형에 기인한 MMCHCS의 효율의 상실이 따른다.
각 프로그램(100)은 도 1에 도시된 바와 같이 순차적인(sequential) 블록(101, 105, 109)을 포함한다. 제1 및 마지막 블록(101, 109)는 항상 순차적이나, 다른 모든 중간 블록(103, 105, 107)은 순차적 또는 병렬적(parallel) 또는 대규모 병렬적(massive parallel)이다.
병렬적(103) 및 대규모 병렬적(107) 블록 간의 차이점은, 병렬적 블록(103)이 특정 코어 상에서 실행되고 있을 때의 병렬 루프 개수에 있다. 예를 들어, 병렬 블록(103)이 8개의 루프를 가지고 있고 컴퓨팅 시스템이 8개의 이용가능한 코어를 포함하고 있다면, 이러한 블록은 병렬적 또는 단순 병렬적이고, 모든 루프가 한번에 코어에 로딩될 수 있으므로 대규모 병렬적은 아니다. 8개의 루프가 있고 시스템 상에는 이용가능한 코어가 2개만 있다면, 모든 루프를 로딩하기 위해 4회가 필요하므로, 대규모 병렬적 블록이 있다.
대규모 병렬적 블록의 하기 정의가 이하에서 사용된다. K개의 코어 또는 프로세서가 있고 블록에는 N개의 병렬 루프가 있다. 그리고 N / K > 3이면, 고려되는 블록은 대규모 병렬적이다. 그렇지 않으면 블록은 단순 병렬적 또는 병렬적이다. 그러므로 모든 이용가능한 루프가 1회 또는 2회 또는 3회에 로딩될 수 있다면, 고려되는 병렬 블록은 단순 병렬적 또는 병렬적이다. 그렇지 않다면, 모든 이용가능한 루프를 로딩하기 위해 그것은 4회 또는 더 많은 횟수가 필요하고, 대규모 병렬적 블록이 있다.
현재 사용되는 멀티-코어 및 매니-코어 이종 컴퓨팅 시스템(MMCHCS)은 프로그램 블록을 프로세서 코어에 스케쥴링 하는 것에 대해 정적(static)이다. CPU에 대한 작업부하(workload)를 할당하는 것은 정적이고 동적으로 변경되지 않는다. 특히 정적 부하 균형(static load balancing) 방법이 사용되고 배경 태스크는 감시되지 않는다. 현재 사용되는 MMCHCS 시스템은 비적응적이고 사용자 비친화적이다.
본 발명의 목적은 멀티-프로세서 시스템 상에서 적응적인 스케쥴링 프로그램 태스크를 위한 기술을 제공하는 것이다.
상기 목표는 독립항의 특징에 의해 달성된다. 추가적인 구현 형태는 종속항, 발명의 상세한 설명 및 도면으로부터 명백하다.
본 발명은, 멀티-프로세서 시스템 상의 적응적 스케쥴링 프로그램 태스크를 위한 기술이, 런타임에 이러한 시스템의 전력 효율적인 부하 분산을 제공하기 위해, 소프트웨어 안의 현재 대규모 병렬 연산 블록을 MMCHCS 안의 코어 유형에 자동적으로 할당하는 것에 의해 달성된다는 것을 알아낸 것에 기초한다.
현재의 병렬 연산 블록의 자동 할당은, 런타임에 이러한 시스템의 최적의 부하 분산을 제공하기 위해, MMCHCS 안의 코어 유형에 소프트웨어에서 제공된다.
동적 루프-프로세서 매핑은 멀티-코어 및 매니-코어 프로세서에서 대규모 병렬 블록 실행을 위한 런타임 내에 이용가능한 자원에 기초한다. 대규모 병렬 블록 실행 전 MMCHCS의 예측된 이용가능한 자원에 기초해서, 스케쥴러는 얼마나 많은 루프가 및 어느 루프가 MMCHCS의 코어와 관련되어 있는지 결정한다. 이 해결수단은 대규모 병렬 블록 실행 동안 다른 유형의 코어의 로딩의 지연(latency)을 최소화한다.
상기 해결방안의 적용은 2개의 유형의 코어를 포함하는 멀티-코어 및 매니-코어 구조를 가진 연산 시스템의 사용 효율을 증가시킨다.
개시된 방법은 적절한 인건비로 구체적으로 구현될 수 있다. 본 발명을 달성하는 방법은 가장 일반적인 병렬처리의 특별한 경우에 적용될 수 있다. 즉 하나의 초기 태스크의 많은 동일한 서브태스크를 병렬 실행하는 경우가 관찰된다. 그러한 종류의 병렬처리는 병렬적으로 하나의 루프의 상이한 반복(iteration)을 실행할 때 존재한다. 한편 전체 프로그램의 런타임의 대부분을 차지하는 것이 바로 그 루프이다. 본 발명을 달성하는 방법은 루프 반복의 병렬처리화를 이용하는 것에 의한 병렬처리를 사용하는 매우 효율적인 접근방법을 제공한다.
본 발명을 상세하게 기술하기 위해, 다음 용어, 약어 및 표시법이 사용된다.
MMCHCS: 멀티-코어 및 매니-코어 이종 연산 시스템
SoC: 시스템온칩
CPU: 중앙처리장치
제1 실시예를 따라, 본 발명은 멀티-프로세서 시스템에서 연산 블록을 소프트웨어 프로그램에 할당하는 방법과 관련되고, 상기 방법은: 상기 멀티-프로세서 시스템의 이용가능한 제1 유형의 코어의 제1 개수 및 상기 멀티-프로세서 시스템의 이용가능한 제2 유형의 코어의 제2 개수를 평가하는 단계; 상기 제1 유형의 코어에 연결할 상기 연산 블록의 루프의 제1 개수 및 상기 제2 유형의 코어에 연결할 상기 연산 블록의 루프의 제2 개수를 결정하는 단계; 상기 제1 유형의 코어에 상기 제1 개수의 루프를 연결하고, 상기 제2 유형의 코어에 상기 제2 개수의 루프를 연결하는 단계; 및 상기 연결에 따라 연산 블록의 루프를 실행하는 단계를 포함한다.
루프의 제1 개수를 제1 유형의 코어에 연결하고, 루프의 제2 개수를 제2 유형의 코어에 연결하는 것에 의해, 멀티-프로세서 시스템의 성능이 증가하고 최소 완료 시간이 감소한다. 루프를 프로세서 코어로의 그러한 특정한 연결로 인해, 부하 분산 문제가 해결되고 각 특정 애플리케이션의 총 완료 시간이 최소화된다. 완료 시간이 그것의 가능한(potential) 최소값에 도달하도록 하는 루프-코어 최적 매핑이 제공된다. 상기 연결에 따라 연산 블록의 루프를 실행하는 것이 완료 시간이 그것의 가능한 최소값에 도달하도록 한다.
제1 측면에 따른 방법의 제1 가능한 구현 형태에서, 상기 제1 유형의 코어에 연결할 상기 연산 블록의 루프의 제1 개수 및 상기 제2 유형의 코어에 연결할 상기 연산 블록의 루프의 제2 개수를 결정하는 단계는, 상기 이용가능한 제1 유형의 코어 및 상기 이용가능한 제2 유형의 코어 간의 부하 분산(load balancing) 관계에 따른다.
루프의 제1 개수 및 제2 개수를 결정하는 것이 제1 유형의 이용가능한 코어 및 제2 유형의 이용가능한 코어 간의 부하 분산 관계에 따르는 것은 이종 하드웨어를 위한 병렬 애플리케이션을 개발하는 데 드는 프로그래머의 수고를 줄인다. 이런 종류의 효과는 결과적으로, MMCHCS 하드웨어 같은 멀티-프로세서를 위한 병렬 애플리케이션을 개발하는 과정을 더 용이하게 한다. 그 전에는, 프로그래머는 어떻게 코어로부터 프로세서를 분리해 낼지에 대해 검토하는 데 많은 시간을 쓸 필요가 있었지만, 이제 이 일이 자동으로 될 수 있다. 구체적인 결정은 결과적으로, 소프트웨어 개발 또는 현존하는 코드를 특정 아키텍처으로의 효율적 포팅(porting)의 인건비의 감소에 이르게 한다.
제1 측면 자체 또는 제1 측면의 제1 구현 형태에 따르는 방법의 제2 가능한 구현 형태에서, 상기 제1 유형의 코어에 연결할 상기 연산 블록의 루프의 제1 개수 및 상기 제2 유형의 코어에 연결할 상기 연산 블록의 루프의 제2 개수를 결정하는 단계는, 제1 유형의 코어 및 제2 유형의 코어의 장치 성능에 따른다.
루프의 제1 개수 및 제2 개수를 결정하는 단계가 제1 유형의 코어 및 제2 유형의 코어의 장치 성능에 따를 때, 루프는 코어의 성능에 따라 코어에 동적으로 할당된다. 이는 멀티-프로세서 시스템을 빠르게 하고 연산 복잡도를 감소시킨다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제3 가능한 구현 형태에서, 상기 멀티-프로세서 시스템의 이용가능한 제1 유형의 코어의 제1 개수 및 상기 멀티-프로세서 시스템의 이용가능한 제2 유형의 코어의 제2 개수를 평가하는 단계는, 멀티-프로세서의 배경 부하(background load)를 평가하는 것에 기초한다.
제1 유형의 이용가능한 코어의 제1 개수 및 제2 유형의 이용가능한 코어의 제2 개수를 평가하는 단계는, 멀티-프로세서의 배경 부하를 평가하는 것에 기초하는 것은 MMCHCS 같은 멀티-프로세서 시스템의 특정 태스크를 배경 부하의 변화에 동적으로 적응시키는 것을 제공한다. 동적 블록 감시의 사용은, MMCHCS의 실행 특화된 태스크를, 동적인(on-the-fly) 배경 부하의 변화에, 동적으로 적응시키는 것을 제공한다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제4 가능한 구현 형태에서, 루프의 제1 개수는, 제1 코어 상에서의 루프 런타임, 제2 코어 상의 루프 런타임, 제1 코어의 시계방향 주파수(clock-wise frequency), 제2 코어의 시계방향 주파수 중 적어도 1개의 파라미터를 기초하여 결정된다.
루프의 제1 개수가 이런 파라미터를 기초하여 결정될 때, 전체 시스템의 성능은 최적화될 수 있다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제5 가능한 구현 형태에서, 상기 루프의 제1 개수는 하기 관계식을 따라 결정된다:
Figure pct00001
여기서 K1은 제1 유형의 코어의 개수, K2은 제2 유형의 코어의 개수, K1act는 K1의 실제 값, K2act는 K2의 실제 값, f1은 제1 코어의 시계방향 주파수, f2는 제2 코어의 시계방향 주파수, N은 연산 블록의 총 루프 개수, 실수에 대한 연산자
Figure pct00002
는 그 수의 소수 부분을 삭제함에 의한 그 수의 정수값에 대한 평가이다.
루프의 제1 개수가 이러한 관계에 따라 결정될 때, 멀티-프로세서 시스템의 성능이 결정되고 그에 따라 제어된다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제6 가능한 구현 형태에서, 상기 루프의 제2 개수는, 상기 루프의 제2 개수와 상기 루프의 제1 개수의 합이 루프의 총 개수에 대응되도록 결정된다.
루프의 제2 개수는, 루프의 제2 개수와 루프의 제1 개수의 합이 루프의 총 개수에 대응되도록 결정될 때, 루프 각각은 런타임에 특정 코어에 할당될 수 있다. 루프의 실행을 위한 대기시간이 줄어든다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제7 가능한 구현 형태에서, 상기 이용가능한 코어의 제1 개수를 평가하는 것은 배경 부하를 처리하는(busy) 제1 유형의 코어의 개수를 평가하는 것에 기초하고; 상기 이용가능한 코어의 제2 개수를 평가하는 것은 배경 부하를 처리하는 제2 유형의 코어의 개수를 평가하는 것에 기초한다.
이용가능한 코어의 제1 개수를 평가하는 것은 배경 부하를 처리하는(busy) 제1 유형의 코어의 개수를 평가하는 것에 기초하고; 이용가능한 코어의 제2 개수를 평가하는 것은 배경 부하를 처리하는 제2 유형의 코어의 개수를 평가하는 것에 기초할 때, 멀티-프로세서 시스템은 특정 태스크를 배경 부하의 변화에 적응시키는 것을 제공한다. 이것은 실행하는 특정 태스크를 배경 부하의 변화에 대해, 즉 동적으로(on-the-fly), 적응시키도록 한다.
제1 측면의 제7 구현 형태를 따르는 방법의 제8 가능한 구현 형태에서, 상기 이용가능한 제1 유형의 코어의 제1 개수와 배경 부하를 처리하는 제1 유형의 코어의 개수의 합이 제1 유형의 총 개수에 대응하고; 상기 이용가능한 제2 유형의 코어의 제2 개수와 배경 부하를 처리하는 제2 유형의 코어의 개수의 합이 제2 유형의 총 개수에 대응한다.
제1 측면의 제7 구현 형태를 따르는 방법의 제8 가능한 구현 형태에서, 이용가능한 제1 유형의 코어의 제1 개수와 배경 부하를 처리하는 제1 유형의 코어의 개수의 합이 제1 유형의 총 개수에 대응하고; 이용가능한 제2 유형의 코어의 제2 개수와 배경 부하를 처리하는 제2 유형의 코어의 개수의 합이 제2 유형의 총 개수에 대응할 때, 루프 각각은 런타임에 특정 코어에 할당될 수 있다. 루프의 실행을 위한 대기시간이 줄어든다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제9 가능한 구현 형태에서, 상기 멀티-프로세서 시스템은, 멀티-코더 및 매니-코어 이종 컴퓨팅 시스템을 포함한다.
상기 방법은 이렇게, 이러한 시스템이 동적이고 적응적이도록 하는 멀티-코더(multi-core) 및 매니-코어(multi-core) 이종 컴퓨팅 시스템에 최적으로 적응될 수 있다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제10 가능한 구현 형태에서, 상기 소프트웨어 프로그램의 연산 블록은 대규모 병렬 연산 블록이다.
대규모 병렬 연산 블록에 대해, 상당한 성능 개선이 달성될 수 있다.
제1 측면 자체 또는 제1 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 방법의 제11 가능한 구현 형태에서, 제1 유형의 코어의 전력 소모가 제2 유형의 코어의 전력 소모와 상이하다.
제1 유형의 코어의 전력 소모가 제2 유형의 코어의 전력 소모와 상이할 때, 프로그램 태스크의 적응적인 스케쥴링이 상기 개시된 방법을 이용하여 효율적으로 수행될 수 있다.
제2 측면에 따르면, 본 발명은 소프트웨어 프로그램의 연산 블록의 루프를, 제1 유형 및 제2 유형을 포함하는 멀티-프로세서 시스템의 코어에 할당하는 시스템에 관한 것으로서, 상시 시스템은 제1 유형의 코어의 이용가능한 자원 및 제2 유형의 코어의 이용가능한 자원을 평가하도록 구성된 감시 블록; 및 제1 유형의 코어 및 제2 유형의 코어의 평가된 이용가능한 자원에 기초하여, 루프를 제1 유형의 코어 및 제2 유형의 코어에 연결하도록 구성된 연결 블록을 포함한다.
제1 유형의 코어 및 제2 유형의 코어의 평가된 이용가능한 자원에 기초하여, 루프를 제1 유형의 코어 및 제2 유형의 코어에 연결하도록 구성된 연결 블록에 의해, 멀티-프로세서의 성능은 증가되고 최소 완료 시간은 감소된다. 그러한 루프의 프로세서 코어로의 특정한 연결에 의해, 부하 분산 문제가 해결되고 각 특정 애플리케이션의 총 완료 시간이 최소화된다. 완료 시간을 가능한 최소값에 도달하도록 하는, 루프-코어의 최적화된 매핑이 달성된다.
제2 측면을 따르는 시스템의 제1 가능한 구현 형태에서, 상기 시스템은 상기 연결 블록에 의해 상기 코어에 연결된 루프를 실행하도록 구성된 대규모 병렬 연산 블록을 포함한다.
상기 연결에 따라 대규모 병렬 연산 블록의 루프를 실행하는 것은 완료 시간이 그것의 가능한 최소값에 도달하도록 한다.
제2 측면 자체 또는 제2 측면의 선행하는 구현 형태 중 어느 한 가지를 따르는 시스템의 제2 가능한 구현 형태에서, 상기 연결 블록은, 상기 대규모 병렬 연산 블록이 상기 연결된 루프와 런타임(run-time)에 실행되도록, 상기 루프를 상기 코어에 적응적으로 연결하도록 구성된다.
상기 대규모 병렬 연산 블록이 연결된 루프와 런타임(run-time)에 실행될 때, 시스템의 성능이 동적으로 최적화될 수 있다.
본 발명의 추가적인 일 측면은, 기능적으로 상이한 전력 소모 코어를 구비하는 멀티-코어 및 매니-코어 이종 컴퓨팅 시스템 내에서 적응적 태스크 스케쥴링 방법을 제공하며, 상기 방법은 다음 단계를 포함한다: 1) 대규모 병렬 블록 실행의 시작 전에 MMCHCS 시스템을 동적으로 감시하는 것을 통해, 감시 블록에 기초하여, 2) 제1 및 제2 유형의 유효한 코어 갯수 k 1act k 2act 를 평가하는 단계, 3) 제1 유형의 코어와 연결될 루프의 개수 n 1 을 평가하는 단계, 4) n 2 = N - n 1 에 기초하여, 제2 유형의 코어와 연결될 루프의 개수 n 2 을 평가하는 단계, 5) n 1 개의 루프와, 연결 블록의 제1 유형의 코어와의 연결을 특정하는 단계, 6) n 2 개의 루프와, 연결 블록의 제2 유형의 코어와의 연결을 특정하는 단계, 7) 특정된 순서에 따라 특정된 코어상에서 루프를 실행하는 단계.
본 발명의 추가적인 일 측면은, 기능적으로 상이한 전력 소모 코어를 구비하는 멀티-코어 및 매니-코어 이종 컴퓨팅 시스템 내에서 적응적 태스크 스케쥴링 시스템을 제공하며, 대규모 병렬 블록 실행 전에 MMCHCS의 코어의 유휴(free) 자원을 동적 감시 및 평가를 담당하는 감시 블록; 및 루프와 코어를 동적으로 연결하기 위해, 멀티-코어 및 매니-코어 프로세서에서 대규모 병렬 블록 실행을 위한 런타임 내 이용가능한 자원에 기초한 동적 루프-코어 매핑을 담당하는 연결 블록을 포함한다.
추가적인 일 측면은, 다수의 대규모 병렬 블록이 상기 방법을 따라 동시에 실행되는 SoC 유형의 신호 프로세서를 구비하는 시스템을 제공한다.
여기 개시된 상기 방법, 시스템 및 장치는 디지털 신호 프로세서(DSP) 또는 마이크로-프로세서 또는 모든 다른 부-프로세서(side-processor) 내의 소프트웨어로서 또는 주문형 반도체(ASIC) 안에서 하드웨어 회로로서 구현될 수 있다.
본 발명은 디지털 전자회로, 컴퓨터 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합, 즉, 전통적인 이동 기기의 이용가능한 하드웨어 또는 여기 개시된 방법의 프로세싱을 위해 전용되는(dedicated) 새로운 하드웨어로 구현될 수 있다.
본 발명의 추가적인 실시예가 다음 도면에 대해 개시될 것이다:
도 1은 전통적인 프로그램 구조의 일례를 도시한다.
도 2는 일 구현 형태에 따르는, MMCHCS에서 코어 간에 분산된 루프를 도해하는 일례를 도시한다.
도 3은 일 구현 형태에 따르는, 대규모 병렬 블록 전의 감시 블록 및 대규모 병렬 블록 실행 전의 대규모 병렬 블록 내의 연결 블록을 구비하는 수정된 프로그램 구조의 일례를 도시한다.
도 4는 일 구현 형태에 따르는, 감시 데이터에 기초하여 K 1 act K 2 act 를 선택하기 위한 방법(400)의 도식적인 다이어그램을 도시한다.
도 5는 일 구현 형태에 따르는, 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법(500)의 도식적인 다이어그램을 도시한다.
도 2는 일 구현 형태에 따라, 멀티-코어 및 매니-코어 이종 컴퓨팅 시스템(200)에서 코어 간에 분산된 루프를 도해하는 일례를 도시한다.
멀티-코어 및 매니-코어 이종 컴퓨팅 시스템은 K 1 개의 제1 유형의 코어(207) 및 K 2 개의 제2 유형의 코어(209), 총 K=K 1 +K 2 개의 코어를 구비한다. 제1 유형의 코어(207) 상에서 실행될 루프의 개수(203)는 n 1 로 표기되고, 제2 유형의 코어(209) 상에서 실행될 루프의 개수(205)는 n 1 로 표기된다. 그러면 n 1 n 2 는 다음 형태로 나타낼 수 있다:
n 1 = l 1 K 1 + m 1 ,
n 2 = l 2 K 2 + m 2
도 2는 상기 언급된 관계를 도해한다. 그러면 MMSHCS의 i 유형(i=1,2)의 코어상에서의 총 실행시간
Figure pct00003
은 다음과 같다:
Figure pct00004
여기서,
Figure pct00005
은 MMSHCS의 i 유형(i=1,2)의 코어상에서의 1개의 루프의 시간이다.
만일
l i >> 1
이면
T fi
Figure pct00006
l i T i
이고,
n i = l i k i , ( i=1,2).
이다.
이러한 경우 상이한 유형의 코어 상의 부하 분산 조건은 다음과 같이 쓸 수 있다:
T f1 = T f2 ,
또는
l 1 T 1
Figure pct00007
l 2 T 2 ,
또는
Figure pct00008
몇 가지 변환 후 마지막 수식에 n 2 = N - n 1 을 치환하면 다음과 같은 결과가 된다:
Figure pct00009
Figure pct00010
도 3은 일 구현 형태에 따르는, 대규모 병렬 블록 전의 감시 블록 및 대규모 병렬 블록 실행 전의 대규모 병렬 블록 내의 연결 블록을 구비하는 수정된 프로그램 구조의 일례를 도시한다.
이 예에서, 다음과 같은 표기법이 사용된다: K 1 =K 2 T 1 = 2 T 2 이면, n 1
Figure pct00011
N / 3, n 2
Figure pct00012
2N / 3 이다. 이것은 더욱 생산적인(productive) 코어(여기서는 제2 유형)는, 2배 덜 생산적인 코어(여기서는 제1 유형)에 비해 루프의 2/3로 평가된다.
수식 (1) 및 (2)를 사용함에 있어 주된 문제는 T 1 T 2 의 추정이다. 이러한 값은 다음 관계식을 만족한다는 것이 알려져 있다.
T i = A / f i , (i=1,2) .
여기서 A는 임의의 상수이고, f i 은 코어 i의 시계방향의 주파수이다. 그러면 수식 (1)은 다음 형태로 다시 쓸 수 있다:
Figure pct00013
상기 개시된 바와 같은 태스크를 할당하는 것 외에, MMCHCS에서는 다른 보조 태스크도 실행된다. 그러므로 조사되는 태스크 안의 사이클을 고려함에 의해 평가하기 전에 MMCHCS의 감시가 제공되어야 하고 고려되는 시스템의 코어의 배경 부하를 알아내야 한다.
MMCHCS 시스템 내 코어의 실제 개수(real number) K 1 K 2 대신, 그것들의 실제 값(actual value) K 1 act K 2 act 이 사용된다. 이러한 값은 정수 유형 뿐 아니라 실수 유형(real type)일 수 있고, 다음 조건을 만족한다:
0 ≤ K i act ≤ K i , (i=1,2) .
그러므로, 수식 (3)은 다음과 같이 다시 쓸 수 있다:
Figure pct00014
여기서 연산자
Figure pct00015
는 실수의 정수값에 대한 평가를 나타낸다. 상기 연산은 실수의 소수 부분을 생략함으로써 수행된다. 적절한 프로그램 구조가 도 3에 도시된다. 그것은 대규모 병렬 블록(305) 전의 감시 블록(303) 및 대규모 병렬 블록 실행(309) 전의 대규모 병렬 블록 내(305)의 연결 블록(307)을 포함한다.
도 4는 일 구현 형태에 따르는, 감시 데이터에 기초하여 K 1 act K 2 act 를 선택하기 위한 방법(400)의 도식적인 다이어그램을 도시한다.
이 예는 감시 데이터 상에서 어떻게 K 1 act K 2 act 를 평가하는지를 도시한다. 시스템(400)은 제1 유형의 4개의 코더(401) 및 제2 유형의 3개의 코어(403)를 포함한다. 고려하는 시스템의 감시는 현재 사이클의 시작 전에 제공된다. 그 모니터링은 제1 유형의 코어(401)의 배경 부하(405)는 10%이고, 제2 유형의 코어(403)의 배경 부하(407)는 20%임을 도시한다. 그러면 수식 (3)에서의 K 1 = 4K 2 = 3 대신, K 1 act = 3.6 K 2 act = 2.4 로 대체될 수 있다. 적절한 도해가 도 4에 도시되었다.
n 2 의 평가를 위해, 다음 관계식이 사용된다.
n 2 = N - n 1 . (5)
수식 (4) 및 (5)가 MMCHCS의 부하 분산을 평가하기 위해 사용된다. 그것들은 대규모 병렬 블록 실행 동안 상이한 유형의 코어의 로딩의 지연을 최소화하도록 한다.
이하에는, 대규모 병렬 블록의 루프가 프로세서 코어에 연결되고, 이는 MMCHCS에서의 동적 태스크 스케쥴링 방법을 수식화한다.
1. 도 3에 대해 상기에서 개시된 감시 블록(303)에 기초하여, 대규모 병렬 블록 실행 전에 MMCHCS 시스템의 동적 감시를 통해, 제1 및 제2 유형의 코어의 실제 값 K 1 act K 2 act 가 평가된다. 도 2 및 3에 관하여 K 1 act K 2 act 가 어떻게 획득될 수 있는지 도시되었다.
2. 수식 (4)에 따라 제1 유형의 코어와 연결될 루프의 개수 n 1 이 평가된다.
3. 수식 (5)에 따라 제2 유형의 코어와 연결될 루프의 개수 n 2 가 평가된다.
4. n 1 개의 루프가 연결 블록의 제1 유형의 코어와 연결된다.
5. n 2 개의 루프가 연결 블록의 제2 유형의 코어와 연결된다.
6. 대규모 병렬 블록에서 특정된 순서에 따라 특정된 코어 상의 루프를 실행한다. 항목 1, 2 및 3은 도 3 에 관하여 상기에 개시한 감시 블록(303)에 대응하고, 항목 4, 5는 도 3 에 도시된 연결 블록(307)에 대응한다.
도 5는 일 구현 형태에 따라, 도 3에 관하여 상기 기재된 소프트웨어 프로그램(300)의 연산 블록(301)을, 도 4에 관하여 상기 기재된 멀티-프로세서 시스템(400)의 코어(401, 403)에 할당하기 위한 방법(500)의 도식적인 다이어그램을 도시한다. 상기 방법(500)은, 멀티 프로세서 시스템(400)의 이용가능한 제1 유형의 코어(409)의 제1 개수(K1act) 및 멀티 프로세서 시스템(400)의 이용가능한 제2 유형의 코어(411)의 제2 개수(K2act)를 평가하는 단계(501); 제1 유형의 코어(409)와 연결할 연산 블록의 루프(203)의 제1 개수(n1) 및 제2 유형의 코어(411)와 연결할 연산 블록의 루프(205)의 제2 개수(n2)를 결정하는 단계(502); 상기 제1 유형의 코어(409)에 상기 제1 개수(n1)의 루프(203)를 연결하고, 상기 제2 유형의 코어(411)에 상기 제2 개수(n2)의 루프(205)를 연결하는 단계(503); 및 상기 연결(503)에 따라 연산 블록(301)의 루프(203, 205)를 실행하는 단계(504)를 포함한다.
상기 방법(500)의 일 구현 형태에서, 상기 제1 유형의 코어(409)에 연결할 상기 연산 블록의 루프(203)의 제1 개수(n1) 및 상기 제2 유형의 코어(411)에 연결할 상기 연산 블록의 루프(205)의 제2 개수(n2)를 결정하는 단계(502)는, 상기 이용가능한 제1 유형의 코어(409) 및 상기 이용가능한 제2 유형의 코어(411) 간의 부하 분산(load balancing) 관계에 따른다. 상기 방법(500)의 일 구현 형태에서, 상기 제1 유형의 코어(409)에 연결할 상기 연산 블록의 루프(203)의 제1 개수(n1) 및 상기 제2 유형의 코어(411)에 연결할 상기 연산 블록의 루프(205)의 제2 개수(n2)를 결정하는 단계 (502)는, 제1 유형의 코어(409) 및 제2 유형의 코어(411)의 장치 성능에 따른다. 상기 방법(500)의 일 구현 형태에서, 상기 멀티-프로세서 시스템(400)의 이용가능한 제1 유형의 코어(409)의 제1 개수(K1act) 및 상기 멀티-프로세서 시스템(400)의 이용가능한 제2 유형의 코어(411)의 제2 개수(K2act)를 평가하는 단계(501)는, 멀티-프로세서(400)의 배경 부하(background load)를 평가하는 것에 기초한다. 상기 방법(500)의 일 구현 형태에서, 루프의 제1 개수(n1)는, 제1 코어(409) 상에서의 루프 실행 시간(T1), 제2 코어(411) 상에서의 루프 실행 시간(T2), 제1 코어(409)의 시계방향 주파수(clock-wise frequency)(f1), 제2 코어(411)의 시계방향 주파수(f2) 중 적어도 1개의 파라미터를 기초하여 결정된다. 상기 방법(500)의 일 구현 형태에서, 상기 루프의 제1 개수(n1)는 하기 관계식을 따라 결정되고,
Figure pct00016
여기서 K1은 제1 유형의 코어의 개수, K2은 제2 유형의 코어의 개수, K1act는 K1의 실제 값, K2act는 K2의 실제 값, f1은 제1 코어의 시계방향 주파수, f2는 제2 코어의 시계방향 주파수, N은 연산 블록의 총 루프 개수, 실수에 대한 연산자
Figure pct00017
는 그 수의 소수 부분을 삭제함에 의한 그 수의 정수값에 대한 평가이다.
상기 방법(500)의 일 구현 형태에서, 상기 루프(205)의 제2 개수(n2)는, 상기 루프(205)의 제2 개수(n2)와 상기 루프(203)의 제1 개수(n1)의 합이 루프의 총 개수(N)에 대응되도록 결정된다. 상기 방법(500)의 일 구현 형태에서, 이용가능한 코어(409)의 제1 개수(K1act)를 평가하는 것(501)은, 배경 부하를 처리하는(busy) 제1 유형의 코어의 개수를 평가하는 것에 기초하고; 이용가능한 코어(411)의 제2 개수(K2act)를 평가하는 것은 배경 부하를 처리하는 제2 유형의 코어의 개수를 평가하는 것에 기초한다. 상기 방법(500)의 일 구현 형태에서, 상기 이용가능한 제1 유형의 코어(409)의 제1 개수(K1act)와 배경 부하(405)를 처리하는 제1 유형의 코어의 개수의 합이 제1 유형의 총 개수(K1)에 대응하고, 이용가능한 제2 유형의 코어(411)의 제2 개수(K2act)와 배경 부하(407)를 처리하는 제2 유형의 코어의 개수의 합이 제2 유형의 총 개수(K2)에 대응한다. 상기 방법(500)의 일 구현 형태에서, 상기 멀티-프로세서 시스템(400)은, 멀티-코어(multi-core) 및 매니-코어(many-core) 이종 컴퓨팅 시스템을 포함한다. 상기 방법(500)의 일 구현 형태에서, 상기 소프트웨어 프로그램(300)의 연산 블록(301)은, 대규모 병렬(massive parallel) 연산 블록(301)이다. 상기 방법(500)의 일 구현 형태에서, 제1 유형의 코어(409)의 전력 소모가 제2 유형의 코어(411)의 전력 소모와 상이하다.
상기 방법(500)은 도 3에 관하여 상기에 기재된 것처럼 시스템(300) 안에서 프로세싱될 수 있다.
전술 내용으로부터, 다양한 방법, 시스템, 기록 매체 상의 컴퓨터 프로그램 및 유사한 것이 제공된다는 것은 통상의 기술자에게 명백하다.
본 개시는 또한, 실행된다면 적어도 하나의 컴퓨터로 하여금 여기에 기술된 수행 및 연산 단계를 실행하도록 하는, 컴퓨터로 실행가능한 코드 또는 컴퓨터로 실행가능한 명령을 포함하는 컴퓨터 프로그램 제품(product)을 지원한다.
많은 대체, 개량 및 변경이 상기 교시에 비추어 통상의 기술자에게 명백할 것이다. 물론 통상의 기술자는 여기 기술된 것 외에 본 발명에 대한 많은 적용이 존재한다는 것을 쉽게 인식한다. 본 발명이 하나 또는 더 많은 특정 실시예에 관해서 기술되었지만, 통상의 기술자는 본 발명의 범위로부터 벗어나지 않고 많은 변형이 만들어질 수 있다는 것을 인식한다. 그러므로 첨부된 청구범항의 범위와 그의 균등물 내에서, 본 발명이 여기 기술된 것과 달리 실시될 수 있음이 이해되어야 한다.

Claims (15)

  1. 소프트웨어 프로그램(300)의 연산 블록(301)을 멀티-프로세서 시스템(400)의 코어(401, 403)에 할당하는 방법(500)으로서,
    상기 멀티-프로세서 시스템(400)의 이용가능한 제1 유형의 코어(409)의 제1 개수(K1act) 및 상기 멀티-프로세서 시스템(400)의 이용가능한 제2 유형의 코어(411)의 제2 개수(K2act)를 평가하는 단계(501);
    상기 제1 유형의 코어(409)에 연결할 상기 연산 블록의 루프(203)의 제1 개수(n1) 및 상기 제2 유형의 코어(411)에 연결할 상기 연산 블록의 루프(205)의 제2 개수(n2)를 결정하는 단계(502);
    상기 제1 유형의 코어(409)에 상기 제1 개수(n1)의 루프(203)를 연결하고, 상기 제2 유형의 코어(411)에 상기 제2 개수(n2)의 루프(205)를 연결하는 단계(503); 및
    상기 연결(503)에 따라 연산 블록(301)의 루프(203, 205)를 실행하는 단계(504)
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 유형의 코어(409)에 연결할 상기 연산 블록의 루프(203)의 제1 개수(n1) 및 상기 제2 유형의 코어(411)에 연결할 상기 연산 블록의 루프(205)의 제2 개수(n2)를 결정하는 단계(502)는,
    상기 이용가능한 제1 유형의 코어(409) 및 상기 이용가능한 제2 유형의 코어(411) 간의 부하 분산(load balancing) 관계에 따르는, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제1 유형의 코어(409)에 연결할 상기 연산 블록의 루프(203)의 제1 개수(n1) 및 상기 제2 유형의 코어(411)에 연결할 상기 연산 블록의 루프(205)의 제2 개수(n2)를 결정하는 단계 (502)는,
    제1 유형의 코어(409) 및 제2 유형의 코어(411)의 장치 성능에 따르는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 멀티-프로세서 시스템(400)의 이용가능한 제1 유형의 코어(409)의 제1 개수(K1act) 및 상기 멀티-프로세서 시스템(400)의 이용가능한 제2 유형의 코어(411)의 제2 개수(K2act)를 평가하는 단계(501)는,
    멀티-프로세서(400)의 배경 부하(background load)를 평가하는 것에 기초한, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    루프의 제1 개수(n1)는, 제1 코어(409) 상에서의 루프 실행 시간(T1), 제2 코어(411) 상에서의 루프 실행 시간(T2), 제1 코어(409)의 시계방향 주파수(clock-wise frequency)(f1), 제2 코어(411)의 시계방향 주파수(f2) 중 적어도 1개의 파라미터를 기초하여 결정되는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 루프의 제1 개수(n1)는 하기 관계식을 따라 결정되고,
    Figure pct00018

    여기서 K1은 제1 유형의 코어의 개수, K2은 제2 유형의 코어의 개수, K1act는 K1의 실제 값 K2act는 K2의 실제 값, f1은 제1 코어의 시계방향 주파수, f2는 제2 코어의 시계방향 주파수, N은 연산 블록의 총 루프 개수이고, 실수에 대한 연산자
    Figure pct00019
    는 그 수의 소수 부분을 삭제함에 의한 그 수의 정수값에 대한 평가를 나타내는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 루프(205)의 제2 개수(n2)는,
    상기 루프(205)의 제2 개수(n2)와 상기 루프(203)의 제1 개수(n1)의 합이 루프의 총 개수(N)에 대응되도록 결정되는, 방법
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    이용가능한 코어(409)의 제1 개수(K1act)를 평가하는 것(501)은, 배경 부하를 처리하는(busy) 제1 유형의 코어의 개수를 평가하는 것에 기초하고; 이용가능한 코어(411)의 제2 개수(K2act)를 평가하는 것은 배경 부하를 처리하는 제2 유형의 코어의 개수를 평가하는 것에 기초하는, 방법.
  9. 제8항에 있어서,
    상기 이용가능한 제1 유형의 코어(409)의 제1 개수(K1act)와 배경 부하(405)를 처리하는 제1 유형의 코어의 개수의 합이 제1 유형의 총 개수(K1)에 대응하고,
    이용가능한 제2 유형의 코어(411)의 제2 개수(K2act)와 배경 부하(407)를 처리하는 제2 유형의 코어의 개수의 합이 제2 유형의 총 개수(K2)에 대응하는, 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 멀티-프로세서 시스템(400)은,
    멀티-코어(multi-core) 및 매니-코어(many-core) 이종 컴퓨팅 시스템을 포함하는, 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 소프트웨어 프로그램(300)의 연산 블록(301)은,
    대규모 병렬(massive parallel) 연산 블록(301)인, 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    제1 유형의 코어(409)의 전력 소모가 제2 유형의 코어(411)의 전력 소모와 상이한, 방법.
  13. 소프트웨어 프로그램의 연산 블록의 루프를, 제1 유형 및 제2 유형을 포함하는 멀티-프로세서 시스템의 코어에 할당하는 시스템(300)으로서,
    제1 유형의 코어의 이용가능한 자원 및 제2 유형의 코어의 이용가능한 자원을 평가하도록 구성된 감시 블록(303); 및
    제1 유형의 코어 및 제2 유형의 코어의 평가된 이용가능한 자원에 기초하여, 루프를 제1 유형의 코어 및 제2 유형의 코어에 연결하도록 구성된 연결 블록(307)을 포함하는,
    시스템.
  14. 제13항에 있어서,
    상기 연결 블록(307)에 의해 상기 코어에 연결된 루프를 실행하도록 구성된 대규모 병렬 연산 블록(305)를 포함하는, 시스템.
  15. 제14항에 있어서,
    상기 연결 블록은,
    상기 대규모 병렬 연산 블록(305)이 상기 연결된 루프와 런타임(run-time)에 실행되도록, 상기 루프를 상기 코어에 연결하도록 구성된, 시스템.
KR1020167011573A 2013-10-03 2013-10-03 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템 KR101770234B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/RU2013/000876 WO2015050474A1 (en) 2013-10-03 2013-10-03 Method and system for assigning a computational block of a software program to cores of a multi-processor system

Publications (2)

Publication Number Publication Date
KR20160061422A true KR20160061422A (ko) 2016-05-31
KR101770234B1 KR101770234B1 (ko) 2017-09-05

Family

ID=50588784

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167011573A KR101770234B1 (ko) 2013-10-03 2013-10-03 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템

Country Status (5)

Country Link
US (1) US10162679B2 (ko)
EP (1) EP3039544B1 (ko)
JP (1) JP2016532183A (ko)
KR (1) KR101770234B1 (ko)
WO (1) WO2015050474A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016532183A (ja) * 2013-10-03 2016-10-13 華為技術有限公司Huawei Technologies Co.,Ltd. ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法及びシステム
JP6753999B2 (ja) * 2017-02-28 2020-09-09 株式会社日立製作所 分散データベースシステム及び分散データベースシステムのリソース管理方法
WO2019079994A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 核心调度方法和终端
CN112559952B (zh) * 2019-09-26 2023-07-07 无锡江南计算技术研究所 基于序列分层的异构众核快速傅里叶变换方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0268651A (ja) * 1988-09-02 1990-03-08 Fujitsu Ltd くり返し制御構造の並列処理方式
JPH0743651B2 (ja) * 1989-10-26 1995-05-15 工業技術院長 マルチプロセッサ割り付け方法
US6587938B1 (en) 1999-09-28 2003-07-01 International Business Machines Corporation Method, system and program products for managing central processing unit resources of a computing environment
US8020163B2 (en) 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
WO2005029318A2 (en) * 2003-09-19 2005-03-31 University Of Delaware Methods and products for processing loop nests
ATE364869T1 (de) 2003-11-25 2007-07-15 Imec Inter Uni Micro Electr Heterogenes mehrrechnersystem in form eines network on chip, sowie verfahren und betriebssystem zur kontrolle desselben
US7285958B2 (en) * 2004-01-15 2007-10-23 Metrotech Corporation, Inc. Method and apparatus for digital detection of electronic markers using frequency adaptation
US7446773B1 (en) * 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
CA2595858A1 (en) * 2005-05-24 2006-11-30 Turbo Data Laboratories Inc. Multiprocessor system, and its information processing method
TW200805047A (en) 2005-12-23 2008-01-16 Koninkl Philips Electronics Nv Performance analysis based system level power management
CA2638453C (en) * 2006-03-14 2010-11-09 Transgaming Technologies Inc. General purpose software parallel task engine
US7924459B2 (en) * 2006-04-11 2011-04-12 Canon Kabushiki Kaisha Data processing apparatus and method of expanding dot arrangement patterns
JP2008084009A (ja) * 2006-09-27 2008-04-10 Toshiba Corp マルチプロセッサシステム
WO2009037731A1 (ja) * 2007-09-21 2009-03-26 Fujitsu Limited 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ
JP2009086733A (ja) * 2007-09-27 2009-04-23 Toshiba Corp 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
KR100962531B1 (ko) * 2007-12-11 2010-06-15 한국전자통신연구원 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법
US8296743B2 (en) * 2007-12-17 2012-10-23 Intel Corporation Compiler and runtime for heterogeneous multiprocessor systems
US8930926B2 (en) * 2008-02-08 2015-01-06 Reservoir Labs, Inc. System, methods and apparatus for program optimization for multi-threaded processor architectures
US8448140B2 (en) * 2008-07-02 2013-05-21 Tokyo Institute Of Technology Execution time estimation method and device
JP5343523B2 (ja) 2008-11-17 2013-11-13 富士通株式会社 ジョブ管理装置、ジョブ管理方法およびジョブ管理プログラム
KR101275698B1 (ko) * 2008-11-28 2013-06-17 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 데이터 처리 방법 및 장치
US8495604B2 (en) * 2009-12-30 2013-07-23 International Business Machines Corporation Dynamically distribute a multi-dimensional work set across a multi-core system
JP2011197803A (ja) * 2010-03-17 2011-10-06 Ricoh Co Ltd プログラム実行制御方法
JP5148674B2 (ja) * 2010-09-27 2013-02-20 株式会社東芝 プログラム並列化装置およびプログラム
US8789065B2 (en) * 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US20120192200A1 (en) 2011-01-21 2012-07-26 Rao Jayanth N Load Balancing in Heterogeneous Computing Environments
US8707314B2 (en) * 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US8949809B2 (en) * 2012-03-01 2015-02-03 International Business Machines Corporation Automatic pipeline parallelization of sequential code
WO2013154539A1 (en) * 2012-04-10 2013-10-17 Empire Technology Development Llc Balanced processing using heterogeneous cores
US9639372B2 (en) * 2012-12-28 2017-05-02 Intel Corporation Apparatus and method for heterogeneous processors mapping to virtual cores
JP6171658B2 (ja) * 2013-07-19 2017-08-02 富士通株式会社 並列処理最適化プログラム、並列処理最適化方法および情報処理装置
JP2016532183A (ja) * 2013-10-03 2016-10-13 華為技術有限公司Huawei Technologies Co.,Ltd. ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法及びシステム
US20160139901A1 (en) * 2014-11-18 2016-05-19 Qualcomm Incorporated Systems, methods, and computer programs for performing runtime auto parallelization of application code

Also Published As

Publication number Publication date
EP3039544B1 (en) 2018-12-12
US20160239348A1 (en) 2016-08-18
US10162679B2 (en) 2018-12-25
EP3039544A1 (en) 2016-07-06
JP2016532183A (ja) 2016-10-13
WO2015050474A1 (en) 2015-04-09
KR101770234B1 (ko) 2017-09-05

Similar Documents

Publication Publication Date Title
US10748237B2 (en) Adaptive scheduling for task assignment among heterogeneous processor cores
US11449364B2 (en) Processing in a multicore processor with different cores having different architectures
KR101738641B1 (ko) 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
US8707314B2 (en) Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US20150046679A1 (en) Energy-Efficient Run-Time Offloading of Dynamically Generated Code in Heterogenuous Multiprocessor Systems
KR101770234B1 (ko) 소프트웨어 프로그램의 연산 블록을 멀티-프로세서 시스템의 코어에 할당하는 방법 및 시스템
EP3032413B1 (en) Code generation method, compiler, scheduling method, apparatus and scheduling system
US9471387B2 (en) Scheduling in job execution
US10083066B2 (en) Processing data by using simultaneous multithreading
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
US20030177163A1 (en) Microprocessor comprising load monitoring function
CN108139929B (zh) 用于调度多个任务的任务调度装置和方法
KR101177059B1 (ko) 병렬 제어 모듈을 동적으로 할당하는 방법
KR101065436B1 (ko) 불확실한 계산량을 가진 실시간 병렬 작업을 위한 멀티코어 프로세서의 확률적 스케줄링 방법
US10846086B2 (en) Method for managing computation tasks on a functionally asymmetric multi-core processor
WO2019153681A1 (zh) 一种智能指令调度器
Halimi et al. FoREST-mn: Runtime DVFS beyond communication slack
US20100153685A1 (en) Multiprocessor system
JP2020160482A (ja) 性能見積もり装置、端末装置、システムlsi及びプログラム
KR102022972B1 (ko) 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법
CN107408056B (zh) 用于动态循环-处理器映射的调度设备和方法
De Sensi et al. State-aware concurrency throttling
Ahmed et al. Parallel application power and performance prediction modeling using simulation
CN116185575A (zh) 一种任务调度方法以及计算机设备
CN118034909A (zh) 一种面向异构计算系统的自动调优负载均衡方法

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
GRNT Written decision to grant