KR20140046897A - 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 - Google Patents
멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 Download PDFInfo
- Publication number
- KR20140046897A KR20140046897A KR1020120113103A KR20120113103A KR20140046897A KR 20140046897 A KR20140046897 A KR 20140046897A KR 1020120113103 A KR1020120113103 A KR 1020120113103A KR 20120113103 A KR20120113103 A KR 20120113103A KR 20140046897 A KR20140046897 A KR 20140046897A
- Authority
- KR
- South Korea
- Prior art keywords
- task
- scheduling
- communication scheme
- processing element
- mapped
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
멀티코어 프로세서에서 수행되는 프로그램의 컴파일 시에 스크래치패드 메모리의 크기에 따라 태스크에 지정되는 통신방식을 최적화함으로써 프로그램의 절전성능과 동작속도를 향상시킬 수 있는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법이 개시된다.
Description
멀티코어 프로세서에서 수행되는 프로그램의 컴파일링, 태스크 매핑 및 태스크 스케줄링 기술과 관련된다.
멀티코어 아키텍처의 성능을 극대화하기 위해서는 멀티코어 아키텍처의 특성에 적합한 프로그래밍이 필요하다.
멀티코어 프로세서를 통하여 수행되는 프로그래밍에 있어서 매핑(mapping)이란, 그래프로 표현된 애플리케이션의 각 부분, 즉 태스크(task)를 멀티코어 구조의 어느 프로세싱 엘리먼트에서 수행할 것인지를 결정하는 절차를 의미한다.
또한, 스케줄링이란, 구체적인 매핑 방법이 정해진 후, 각각의 태스크가 프로세싱 엘리먼트 상에서 수행되는 순서와 타이밍을 결정하는 절차를 의미한다.
그런데, 멀티코어 상에서 수행되는 멀티코어 프로그램은, 프로그래머가 수작업으로 작성하기에는 프로그래밍의 복잡도가 너무나 커서 프로그래밍의 생산성이 낮거나 프로그램의 품질이 열악한 등의 문제점이 있다. 특히, 프로그래밍의 복잡도를 높이는 요인으로는 매핑 및 스케줄링이 있다.
특히, 멀티코어 프로그램은 프로그램의 높은 복잡도로 인하여, 각각의 코어에 매핑된 태스크에 대하여 소스 PE(Source Processing Element)와 목적지 PE(Destination Processing Element) 간에 "어떤 통신방식을 사용할 것인가"를 프로그램 개발자가 직접 지정을 하는 데에 큰 어려움이 따른다.
멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법을 제공하는 것을 목적으로 한다.
일측면에 따른 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법은, 2 이상의 프로세싱 엘리먼트에 대한 2 이상의 태스크의 매핑 및, 2 이상의 상기 태스크의 각각에 관한 소스 프로세싱 엘리먼트와 목적지 프로세싱 엘리먼트 간에 지정된 통신방식을 포함하는 초기 해를 생성하는 단계; 상기 초기 해에 포함된 상기 매핑 및 상기 통신방식을 근사적으로 최적화하는 단계; 및 상기 태스크를 스케줄링하는 단계;를 포함한다.
다른 측면에 따른 멀티코어 프로세서의 태스크 매핑 방법은, 멀티코어 프로세서의 복수의 프로세싱 엘리먼트 중 하나의 프로세싱 엘리먼트에 매핑된 태스크를, 0과 1 사이의 제1 확률로, 다른 프로세싱 엘리먼트로 이동시키는 단계;상기 제1 확률로 다시 매핑되는 상기 태스크를, 0과 1 사이의 제2 확률로, 상기 하나의 프로세싱 엘리먼트가 아닌 프로세싱 엘리먼트의 다른 태스크와 대체하는 단계;를 포함한다.
또 다른 측면에 따른 멀티코어 프로세서의 태스크 스케줄링 방법은, 멀티코어 프로세서의 2 이상의 프로세싱 엘리먼트에서 수행되는 2 이상의 태스크에 대하여 제1 시간 구간 내에서 스케줄링을 시도하는 단계; 상기 스케줄링을 시도하는 단계에서 하나의 태스크와 다른 태스크가 중첩되어 스케줄링이 실패한 경우, 중첩된 시간길이를 구하는 단계; 및 상기 제1 시간 구간과 상기 중첩된 시간길이의 합에 상당하는 제2 시간 구간 내에서 스케줄링을 재시도하는 단계;를 포함한다.
멀티코어 프로세서에서 수행되는 프로그램의 컴파일 시에 스크래치패드 메모리의 크기에 따라 태스크에 지정되는 통신방식을 최적화함으로써 프로그램의 절전성능과 동작속도를 향상시킬 수 있다.
도 1A 및 도 1B는 공유 메모리를 이용한 멀티코어 프로세서의 프로세싱엘리먼트 사이의 통신의 예를 설명하기 위한 도면,
도 2A 및 도 2B는 메시지 패싱을 이용한 멀티코어 프로세서의 프로세싱엘리먼트 사이의 통신의 예를 설명하기 위한 도면,
도 3은 일측면에 따른 태스크의 매핑 및 통신방식 결정 방법을 예시한 흐름도,
도 4는 도 4의 초기 해 변경단계 (S110)를 더욱 자세히 나타낸 도면,
도 5는 β의 확률로 태스크가 위치교환하는 경우를 예시한 도면,
도 6은 (1-β)의 확률로 태스크가 위치변경하는 경우를 예시한 도면,
도 7은 최적화 과정의 흐름의 일례를 나타낸 흐름도,
도 8은 모듈로 알고리즘을 이용한 인스트럭션 스케줄링의 절차를 예시한 흐름도,
도 9는 변형된 모듈로 알고리즘을 이용한 태스크 스케줄링의 절차를 예시한 흐름도,
도 10은 일측면에 따른 재구성 가능한 프로세서에서 수행되는 컴파일링 방법의 일례를 나타낸 흐름도,
도 11은 일측면에 따른 재구성 가능한 프로세서에서 수행되는 컴파일링 방법의 다른 예를 나타낸 흐름도,
도 12는 다른 측면에 따른 재구성 가능한 프로세서의 태스크 매핑 방법의 일례를 나타낸 흐름도,
도 13은 또 다른 측면에 따른 재구성 가능한 프로세서의 태스크 스케줄링 방법의 일례를 나타낸 흐름도이다.
도 2A 및 도 2B는 메시지 패싱을 이용한 멀티코어 프로세서의 프로세싱엘리먼트 사이의 통신의 예를 설명하기 위한 도면,
도 3은 일측면에 따른 태스크의 매핑 및 통신방식 결정 방법을 예시한 흐름도,
도 4는 도 4의 초기 해 변경단계 (S110)를 더욱 자세히 나타낸 도면,
도 5는 β의 확률로 태스크가 위치교환하는 경우를 예시한 도면,
도 6은 (1-β)의 확률로 태스크가 위치변경하는 경우를 예시한 도면,
도 7은 최적화 과정의 흐름의 일례를 나타낸 흐름도,
도 8은 모듈로 알고리즘을 이용한 인스트럭션 스케줄링의 절차를 예시한 흐름도,
도 9는 변형된 모듈로 알고리즘을 이용한 태스크 스케줄링의 절차를 예시한 흐름도,
도 10은 일측면에 따른 재구성 가능한 프로세서에서 수행되는 컴파일링 방법의 일례를 나타낸 흐름도,
도 11은 일측면에 따른 재구성 가능한 프로세서에서 수행되는 컴파일링 방법의 다른 예를 나타낸 흐름도,
도 12는 다른 측면에 따른 재구성 가능한 프로세서의 태스크 매핑 방법의 일례를 나타낸 흐름도,
도 13은 또 다른 측면에 따른 재구성 가능한 프로세서의 태스크 스케줄링 방법의 일례를 나타낸 흐름도이다.
이하, 첨부된 도면을 참조하여 실시를 위한 구체적인 예를 상세히 설명한다.
도 1A 및 도 1B는 공유 메모리를 이용한 멀티코어 프로세서의 프로세싱엘리먼트 사이의 통신의 예를 설명하기 위한 도면이다.
도 1A와 도 1B에서, 동일한 도면부호는 동일한 구성요소를 나타낸다.
멀티코어 프로세서 내의 프로세싱 엘리먼트(112a,112b) 간에는 통신을 수행한다. 도 1A와 도 1B에서 PE들은 공유 메모리(120)를 이용하여 서로 통신을 수행한다.
공유 메모리를 이용한 통신방식은 크게 아래와 같은 단계를 통하여 수행된다.
① 소스 PE(Source Processing Element)(112a)가 공유 메모리에 데이터를 기록(write)한다.
② 공유 메모리가 소스 PE(112a)에 ACK를 보낸다.
③ 소스 PE(112a)가 기록을 완료한 경우, 소스 PE(112a)가 목적지 PE(Destination Processing Element) (112b)에 동기 패킷(sync packet)을 보낸다.
④ 목적지 PE(112b)가 공유 메모리에 읽기 요청(read request)을 보낸다.
⑤ 공유 메모리가 목적지 PE(112b)로 데이터를 전송한다.
이 방식은 프로그래밍이 간단하고, 멀티태스크가 용이하다는 장점이 있다. 반면, 프로세싱 엘리먼트로부터 공유 메모리까지의 경로(도2b에서 "path(shared memory"로 도시함)가 긴 경우가 종종 발생하는 점, 공유 메모리의 크기가 큰 점 및 공유 메모리의 동작 속도가 비교적 느린 점 등으로 인하여 전력 소비량이 많고 태스크의 수행 속도가 느리다는 단점이 있다.
도 2A 및 도 2B는 메시지 패싱을 이용한 멀티코어 프로세서의 프로세싱엘리먼트 사이의 통신의 예를 설명하기 위한 도면이다.
도 2A와 도 2B에서, 동일한 도면부호는 동일한 구성요소를 나타낸다.
도 2A와 도 2B에서, PE들(112a,112b)은 각각의 PE 내부의 스크래치패드 메모리(SPM: Scratch Pad Memory)를 이용하여 서로 통신을 수행한다. 즉, 소스 PE(112a)는 전송해야 하는 데이터를 공유 메모리(120)에 기록하는 대신, 목적지 PE(112b)의 SPM으로 직접 전송한다. 이 경우, 소스 PE(112a)로부터 목적지 PE(112b)까지의 최단경로(도 2b에서 "path(PSM)"으로 도시함)를 통하여 데이터를 전송할 수 있게 되므로, 공유 메모리(120)를 경유하는 도 1B에 도시된 경로("path(shared memory)")에 비하여 전송 시간이 짧아지는 장점을 갖는다. 또한, PSM은 공유 메모리에 비하여 현저히 작은 저장 용량을 갖는 경우가 일반적이므로, 메시지 패싱을 이용한 통신방식은 전력 소비량도 적다는 장점이 있다.
반면, SPM의 작고 한정된 저장 용량으로 인하여, 모든 메시지를 메시지 패싱을 이용한 통신 방식으로 전송할 수는 없는 단점도 있다.
즉, 메시지 패싱을 이용한 통신 방식을 적용할 때 얻을 수 있는 이득은 두 PC 간의 거리 등 여러 요인에 따라 달라지므로, 공유 메모리를 이용한 통신 방식과 메시지 패싱을 이용한 통신 방식 중에서 어느 통신 방식을 이용할 것인지에 관한 선택은 매핑 및 스케줄링 시에 함께 결정되는 것이 바람직하다.
도 3은 일측면에 따른 태스크의 매핑 및 통신방식 결정 방법을 예시한 흐름도이다.
태스크 스케줄링을 하기 위하여 맨 먼저 결정되어야 하는 것은, 각 PE에 대한 태스크의 매핑 및 태스크에 관한 소스PE와 목적지PE 간 통신방식이다.
도 3에 예시한 태스크 매핑 및 통신방식 결정 방법은 일종의 확률적 알고리즘인 시뮬레이티드 어닐링 알고리즘(SA: Simulated Annealing)을 기반으로 하고 있다.
시뮬레이티드 어닐링 알고리즘은 다음과 같은 기본적인 절차로 이루어진다.
(1) 초기 해를 생성한다.
(2) 초기 해를 랜덤하게 변화시켜 신규 해를 얻는다.
(3) 신규 해가 초기 해보다 더 좋다면 신규 해로 초기 해를 대체하되, 신규 해가 초기 해보다 더 좋지 않다면 소정의 확률 r(r은 0보다 크고 1보다 작다)로써 신규 해로 초기 해를 대체한다.
(1) 내지 (3)의 절차를 통하여, 시뮬레이티드 어닐링 알고리즘은 국소탐색 알고리즘(Local Search Algorithm)보다 우수한 해를 얻을 수 있다는 장점이 있다.
도 3의 태스크 매핑 및 통신방식 결정 방법은, 초기 해 생성단계(S100) 및 초기 해 변경단계(S110)를 포함하여 이루어진다.
초기 해 생성단계(S100)에서는, 각 PE에 대한 태스크 매핑 및 각 태스크에의 관한 소스PE와 목적지PE 간 통신방식을 포함하는 초기 해(Initial Solution)가 생성된다.
다음으로, 초기 해 변경단계(S110)에서는 생성된 초기 해에 포함된 태스크매핑 상태 및 각 태스크의 통신방식을 변경한 새로운 해가 생성된다.
도 4는 도 3의 초기 해 변경단계 (S110)를 더욱 자세히 나타낸 도면이다.
초기 해 변경단계(S110)는 태스크 이동단계(S112) 및 통신방식 변경단계(S114)를 더 포함할 수 있다.
태스크 이동단계(S112)에서는, 초기 해에서 특정 PE에 매핑된 태스크에 대하여, 태스크를 이동할 것인지 여부가 결정된다. 예컨대, α의 확률로 태스크를 특정 PE로부터 다른 PE로 이동시킬 수 있다(S1120). 이 때, α는 0과 1 사이의 값이 된다. 또한, 태스크가 이동하지 않을 확률은 (1-α)이 된다(S1130).
만약 태스크가 이동하게 된 경우에는, 다시 β의 확률로 타 PE의 타 태스크와 서로 위치 교환을 하도록 할 수 있다(S1121). 이 때, β는 0과 1 사이의 값이 된다.
도 5는 β의 확률로 태스크가 위치교환하는 경우를 예시한 도면이다.
즉, 프로세싱 엘리먼트(PE0)에 task(0)이라는 태스크가 매핑되고, 프로세싱 엘리먼트(PE1)에 task(1)이라는 태스크가 매핑된 경우, 태스크 이동단계(S112)에서 β의 확률로 프로세싱 엘리먼트(PE0)에 매핑되는 태스크는 task(1)로, 프로세싱 엘리먼트(PE1)에 매핑되는 태스크는 task(0)로 변경된다(S1121).
한편, (1-β)의 확률로 태스크의 위치는 하나의 프로세싱 엘리먼트로부터 타 프로세싱 엘리먼트로 위치변경될 수 있다.
도 6은 (1-β)의 확률로 태스크가 위치변경하는 경우를 예시한 도면이다.
즉, 프로세싱 엘리먼트(PE0)에 task(0)이라는 태스크가 매핑된 경우, 이 태스크를 프로세싱 엘리먼트(PE2)로 이동시킬 수 있다(S1122).
다시 도 4로 돌아오면, 통신방식 변경단계(S114)에서는, 특정 태스크에 대한 소스PE와 목적지PE 간 통신방식을 변경할 것인지 여부가 결정된다.
예컨대, γ의 확률로 통신방식이 현재의 통신방식으로부터 다른 통신방식으로 변경될 수 있다(S1140,S1142, S1144). 만약 현재의 통신방식이 메시지 패싱을 이용한 통신방식이라면, 공유메모리를 이용한 통신방식으로 변경될 확률은 γ가 된다. 이 때, γ는 0과 1 사이의 값이 된다.
또한, 통신방식 변경단계(S114)에서 (1-γ)의 확률로 특정 태스크의 통신방식은 변경되지 않을 수도 있다(S1141,1143,1145).
한편, 초기 해 변경단계(S110)가 수행된 후의 해에는 일반적으로 추가적인 최적화(optimization) 과정이 수행될 필요가 있다.
메시지 패싱을 이용한 통신방식을 사용하기 위한 SPM의 크기는 제한되어 있다는 점을 고려할 때, 최적화된 해를 얻기 위해서는 "프로세싱 엘리먼트가 SPM의 용량을 초과하지 않으면서도 SPM의 용량을 최대한 활용"하는 것이 바람직하다.
또한, 특정 태스크에 대한 통신방식을 공유 메모리를 이용한 통신방식 대신 메시지 패싱을 이용한 통신방식으로 하는 경우의 이득은 PE 간 통신 거리나 통신 데이터량 또는 SPM 사용량 등 여러 요인에 따라 달라지는 점을 고려할 때, "공유 메모리를 이용한 통신방식을 사용할 때보다 메시지 패싱을 이용한 통신방식을 사용할 때의 이득이 큰 태스크에 대해서 우선적으로 메시지 패싱을 이용한 통신방식을 적용"하는 것이 좋다.
이를 위하여, 소스PE와 목적지PE를 갖는 태스크(t)에 대한 이득(G(t))을 수학식 1과 같이 정의할 수 있다.
[
수학식
1]
G(t) = ( L × A ) / T
이 때, L은 소스PE로부터 목적지PE까지의 통신 거리, A는 소스PE와 목적지PE 간 통신량, B는 SPM 사용량 합계를 가리킨다.
최적화 과정을 수행하기 위해서 휴리스틱(Heuristic), 특히 탐욕 알고리즘휴리스틱(Greedy Algorithm Heuristic)을 적용할 수 있다. 이러한 의미에서, 초기 해 변경단계(S110) 이후에 수행되는 최적화 과정은 근사적 최적화 과정으로 볼 수 있다.
도 7은 최적화 과정의 흐름의 일례를 나타낸 흐름도이다.
도 7에서 나타낸 바와 같이, 최적화 과정은 위법성 제거 단계(S200) 및 활용도 향상 단계(S210)를 포함한다.
위법성 제거 단계(S200)에서는 초기 해 변경단계(S110) 후의 해에 포함된 태스크들의 매핑 및 통신방식에 존재하는 위법성이 제거된다.
초기 해 변경단계(S110) 후의 해에 포함된 태스크들의 매핑 및 통신방식에는, SPM의 용량을 초과하는(즉, "위법한") 프로세싱 엘리먼트들이 존재할 확률이 높다. 위법성 제거 단계에서는 위법한 프로세싱 엘리먼트들의 위법성이 제거된다.
예컨대, 먼저 위법한 프로세싱 엘리먼트들을 용량 초과량이 많은 순서대로 나열한다. 그 다음, 위법한 프로세싱 엘리먼트에 관한 태스크(들) 중 메시지 패싱을 이용한 통신방식이 지정된 태스크(들)의 통신방식을, 위법성이 해소될 때까지(즉, SPM의 용량이 초과되지 않을 때까지) 공유 메모리를 이용한 통신방식으로 변경한다.
이 때, 통신방식을 변경하여야 하는 태스크가 여러 개인 경우에는 수학식 1에서 언급한 이득이 낮은 태스크부터 변경하는 것이 바람직하다.
용량 초과량이 많은 프로세싱 엘리먼트로부터 시작하여 모든 위법한 프로세싱 엘리먼트들에 대하여 태스크의 통신방식 변경작업을 마치면, 해는 적법하게 된다.
다음으로, 활용도 향상 단계(S210)에서는 프로세싱 엘리먼트의 SPM의 잔여 공간을 더욱 활용하기 위한 절차가 수행된다.
위법성 제거단계가 수행된 후에는 프로세싱 엘리먼트의 SPM에 잔여 공간이 너무 많이 남는 문제가 발생할 수 있다. 이는, 초기 해 때문일 수도 있고, 위법성 제거단계에서 큰 용량을 사용하는 태스크의 통신방식을 공유 메모리를 이용한 통신방식으로 변경하였기 때문일 수도 있다.
이처럼 SPM에 잔여 공간이 남아 있는 프로세싱 엘리먼트에 대하여, 통신방식이 태스크의 통신방식 활용도 향상 단계에서는, 먼저 프로세싱 엘리먼트들을 SPM의 잔여 공간이 많이 남은 순서대로 나열한다. 그 다음, 프로세싱 엘리먼트의 태스크(들) 중 공유 메모리를 이용한 통신방식이 지정된 태스크(들)의 통신방식을, 메시지 패싱을 이용한 통신방식으로 변경한다.
이 때, 통신방식을 변경하여야 하는 태스크가 여러 개인 경우에는, 수학식 1에서 언급한 이득이 높은 태스크부터 변경하는 것이 바람직하다.
SPM의 잔여 공간이 많이 남은 프로세싱 엘리먼트로부터 시작하여 SPM의잔여 공간을 활용할 수 있는 모든 프로세싱 엘리먼트들에 대하여 태스크의 통신방식 변경작업을 마치면, SPM의 활용도가 이전에 비하여 향상된다. 따라서 해는 더욱 양호하게 된다.
근사적 최적화 절차가 수행된 다음에는 스케줄링이 필요하다.
매핑이 태스크를 수행할 프로세싱 엘리먼트를 어떻게 지정할 것인가에 대한 문제라면, 스케줄링은 태스크를 어느 시점에 수행할 것인가에 대한 문제이다.
스케줄링을 위한 알고리즘은 매우 다양하게 존재하나, 여기에서는 비주기 애플리케이션(acyclic application)뿐만 아니라 후방 연관성(backward dependency)을 가진 주기적 애플리케이션(cyclic application)에 대한 스케줄링도 지원할 수 있는 스케줄링 알고리즘을 제안한다. 이를 편의상 "변형된 모듈로 알고리즘(Modified Modulo Algorithm)"이라고 한다.
모듈로 알고리즘(Modulo Algorithm)은 일종의 우선순위 기반 스케줄링 알고리즘(prioritybased scheduling algorithm)이다. 모듈로 알고리즘은 반복 수행이 이루어지는 사이클과 사이클 사이의 시간 간격을 의미하는 초기 간격(II: Initiation Interval)을 예측하여, 예측한 시간 간격 내에 모든 태스크를 스케줄링하는 것을 시도한 후, 시도가 실패하였을 때 반복 수행 간격을 조금씩 늘려 가면서 최적의 초기 간격을 찾는다.
도 8은 모듈로 알고리즘을 이용한 인스트럭션 스케줄링의 절차를 예시한 흐름도이다.
본래 모듈로 알고리즘은 인스트럭션(instruction)을 스케쥴링하기 위한 알고리즘이다. 예컨대, 어떤 반복 수행되는 루틴에 관한 반복 수행 간격을 II(Initinal Interval)만큼 부여받을 수 있다(S300). 이 때, 특정 시간 구간(t) 내에서 스케줄링을 하도록 조건을 부여받을 수 있다(S310). 이러한 반복 수행간격 및 시간 구간을 가지고 스케줄링이 반복적으로 시도된다(S320). 시도된 스케줄링이 실패하는 경우, 시간 구간을 t+1, t+2 등으로 1(또는 "단위 시간")만큼씩 늘려가면서 스케줄링을 재시도한다(S350). 만약 인스트럭션의 반복수행 사이클 사이에서 미리 정한 초기 간격(II) 내에 스케줄링을 할 수 없다고 판단되면(S340), 초기 간격을 1(또는 "단위 시간")만큼 늘려서 반복 수행 간격을 (II+1)로 재설정할 수 있다(S360). 이 경우, 다시 특정 시간 구간(t)부터 스케줄링 시도가 반복된다.
그런데, 이와 같은 방식은 인스트럭션 스케줄링에는 적합할 수 있으나, 태스크 스케줄링에 적용하는 경우에는 스케줄링을 수행하는 시간이 지나치게 많이 소요되는 문제점이 있다. 따라서, 인스트럭션 스케줄링에 사용되는 알고리즘을 그대로 태스크 스케줄링에 적용할 수는 없다.
도 9는 변형된 모듈로 알고리즘을 이용한 태스크 스케줄링의 절차를 예시한 흐름도이다.
예컨대, 어떤 반복 수행되는 루틴을 갖는 태스크들을 스케줄링하기 위하여 반복 수행 간격을 II(Initinal Interval)만큼 부여받을 수 있다(S400). 이 때, 특정 시간 구간(t) 내에서 스케줄링을 하도록 조건을 부여받을 수 있다(S410). 이러한 반복 수행간격 및 시간 구간을 가지고 스케줄링이 반복적으로 시도된다(S420). 시도된 스케줄링이 실패하는 경우, 스케줄링을 재시도한다(S450).
변형된 모듈로 알고리즘이 본래의 모듈로 알고리즘과 다른 첫 번째 특징은, 소정의 시간 구간(t) 내에서 스케줄링을 수행하다가 특정 태스크(task(a))가 다른 태스크(task(b))와 중첩됨으로써 스케줄링에 실패하는 경우, 태스크가 중첩된 시간길이(toverlap)을 구한다는 점이다(S420). 이어지는 태스크 스케줄링 시도에서는 새로운 시간 구간을 (t + toverlap)으로 설정하여 스케줄링을 시도한다(S450). 즉, 본래의 모듈로 알고리즘이 단위 시간(예컨대 "1")만큼 시간 구간을 증가시킨 후 스케줄링을 재시도하는 것과 차이가 있다.
만약 반복수행 사이클 사이에서 미리 정한 초기 간격(II) 내에 스케줄링을 할 수 없다고 판단되면(S440), 초기 간격을 늘려서 반복 수행 간격을 재설정할 수 있다(S460). 이 경우, 다시 특정 시간 구간(t)부터 스케줄링 시도가 반복된다.
변형된 모듈로 알고리즘이 본래의 모듈로 알고리즘과 다른 두 번째 특징은, 초기 간격을 재설정하여야 하는 경우, 재설정 직전의 초기 간격(II)에서 구한 중첩 시간(toverlap)의 최소값, 즉 min(toverlap)을 구한다는 점이다(S432). 이어지는 태스크 스케줄링 시도에서는, 새로운 초기 간격을 (II + min(toverlap))으로 하여 스케줄링을 시도한다(S442). 즉, 본래의 모듈로 알고리즘이 단위 시간(예컨대 "1")만큼 초기 간격을 증가시킨 후 스케줄링을 재시도하는 것과 차이가 있다.
이러한 두 가지 특징을 갖는 변형된 모듈로 알고리즘을 이용하여 태스크 스케줄링을 수행함으로써, 본래의 모듈로 알고리즘을 이용하여 태스크 스케줄링을 수행하는 경우에 비하여 스케줄링의 수행 시간을 현저히 단축시킬 수 있다. 일반적으로 toverlap은 단위 시간보다 긴 시간 구간이고, min(toverlap)도 단위 시간보다 긴 시간 간격이므로, 스케줄링 재시도 회수가 동일한 경우, 변형된 모듈로 알고리즘에 따른 스케줄링이 본래의 모듈로 알고리즘보다 넓은 시간 대역에 대하여 스케줄링을 시도하기 때문이다.
또한, 이와 같은 변형된 모듈로 알고리즘을 이용하여 스케줄링 결과물을 얻더라도, 본래의 모듈로 알고리즘을 이용하여 얻은 스케줄링 결과물과 비교할 때, 품질이 실질적으로 거의 하락하지 않는다.
도 10은 일측면에 따른 재구성 가능한 프로세서에서 수행되는 컴파일링 방법의 일례를 나타낸 흐름도이다.
도 10에 예시한 바와 같이, 재구성 가능한 프로세서에서 수행되는 컴파일링 방법은, 초기 해 생성단계(S500), 근사적 최적화단계(S510) 및 스케줄링 단계(S520)를 포함하여 이루어진다.
초기 해 생성단계(S500)에서는, 앞서 언급한 바와 같은 확률적 알고리즘을 이용하여 다수의 프로세싱 엘리먼트에 대해서 다수의 태스크가 매핑되고, 태스크의 각각에 관한 소스 프로세싱 엘리먼트와 목적지 프로세싱 엘리먼트 간의 통신방식이 지정되도록 초기 해가 생성된다. 예컨대 확률적 알고리즘으로서 시뮬레이티드 어닐링 알고리즘이 사용될 수 있다. 또한, 통신방식은 공유 메모리를 이용한 통신방식과 스크래치패드 메모리를 이용한 메시지 패싱 통신방식 중의 어느 하나로 지정된다. 한편, 초기 해에 따라 매핑된 태스크의 재배치 및/또는 각 태스크에 지정된 통신방식의 변경이 각각의 태스크에 대하여 확률적으로 이루어질 수 있다.
근사적 최적화단계(S510)에서는, 초기 해에 포함된 매핑 및 통신방식을 근사적으로 최적화한다. 근사적인 최적화를 위하여 앞서 언급한 바와 같은 최적화를 위한 휴리스틱이 사용될 수 있다.
예컨대, 특정 프로세싱 엘리먼트에 매핑된 태스크에 관한 데이터의 크기의 합이 스크래치 패드 메모리의 용량을 초과하지 않도록 위법성을 제거하는 최적화 절차가 수행될 수 있다.
또는, 스크래치 패드 메모리에 잔여 공간이 존재하는 프로세싱 엘리먼트에 대하여 상기 스크래치 패드 메모리의 활용도를 향상시킬 수 있도록, 태스크에 지정된 통신방식이 공유 메모리 통신방식으로부터 메시지 패싱 통신방식으로 변경될 수 있다.
스케줄링 단계(S520)에서는, 복수의 태스크에 관한 스케줄링이 수행된다.
태스크를 스케줄링하는 단계는, 스케줄링을 시도하고, 시도된 스케줄링이 실패한 경우, 하나의 태스크와 다른 태스크의 중첩된 시간길이를 구하여 스케줄링에 할당된 시간 구간과 중첩된 시간길이의 합에 상당하는 새로운 시간 구간을 바탕으로 스케줄링을 재시도하는 반복적인 과정을 거쳐서 수행될 수 있다.
도 11은 일측면에 따른 재구성 가능한 프로세서에서 수행되는 컴파일링 방법의 다른 예를 나타낸 흐름도이다.
초기 해 생성단계(S600), 근사적 최적화단계(S610) 및 스케줄링 단계(S620)는 각각 도 10에 나타낸 실시예의 초기 해 생성단계(S500), 근사적 최적화단계(S510) 및 스케줄링 단계(S520)와 마찬가지로 수행된다.
다만, 도 11의 실시예에서는 스케줄링(S620)이 수행된 후, 스케줄링의 결과를 평가하는 절차가 더 수행된다(S630). 또한, 스케줄링의 평과 결과를 바탕으로 초기 해 생성단계(S600)에서 얻어진 초기 해보다 양호한 신규 초기 해를 생성할 수 있으며(S640), 신규 초기 해에 대하여 다시 근사적 최적화단계(S610) 및 그 이후의 절차가 반복적으로 수행될 수 있다.
도 12는 다른 측면에 따른 재구성 가능한 프로세서의 태스크 매핑 방법의 일례를 나타낸 흐름도이다.
도 12에 예시한 재구성 가능한 프로세서의 태스크 매핑 방법은, 태스크 재배치단계(S700) 및 통신방식 변경단계(S710)를 포함하여 이루어진다.
태스크 재배치단계(S700)에서는, 멀티코어 프로세서의 복수의 프로세싱 엘리먼트 중 하나의 프로세싱 엘리먼트에 매핑된 태스크를, 0과 1 사이의 제1 확률로, 다른 프로세싱 엘리먼트로 이동시키는 절차가 수행된다.
이 때, 다시 제1 확률로 다시 매핑되는 태스크를, 0과 1 사이의 제2 확률로, 타 프로세싱 엘리먼트의 타 태스크와 대체하여 서로 위치변경하는 절차가 수행될 수도 있다.
통신방식 변경단계(S710)에서는, 프로세싱 엘리먼트들에 매핑된 각각의 태스크에 지정된 소스PE와 목적지 PE 간 통신방식을 0과 1 사이의 제3 확률로 변경하는 절차가 수행된다.
이러한 태스크 재배치 및 통신방식 변경 과정을 통하여, 더욱 바람직한 매핑 결과를 얻을 수 있게 된다.
도 13은 또 다른 측면에 따른 재구성 가능한 프로세서의 태스크 스케줄링 방법의 일례를 나타낸 흐름도이다.
도 13에 예시한 바와 같이, 재구성 가능한 프로세서의 태스크 스케줄링 방법은, 스케줄링 시도 단계(S800), 중첩된 시간길이 계산단계(S810), 반복 수행 간격 계산단계(S820) 및 스케줄링 재시도 단계(S830)를 포함하여 이루어진다.
스케줄링 시도 단계(S800)에서는, 태스크들이 제1 시간 구간 내에서 수행될 수 있도록 스케줄링을 시도한다.
만약 하나의 태스크와 다른 태스크가 중첩되어 스케줄링이 실패한 경우, 중첩된 시간길이 계산단계(S810)에서는 중첩된 시간길이가 계산되며, 제1 시간 구간 및 중첩된 시간길이의 합에 상당하는 시간길이를 갖는 제2 시간 구간에서 새로운 스케줄링이 시도될 수 있다.
또한, 도 13의 실시예는 반복수행되는 주기적 루틴을 가진 경우에도 적용될 수 있으므로, 태스크 중 적어도 일부가 제1 반복 수행 간격을 가지고 반복 수행되는 경우, 중첩된 여러 시간길이 중 최소값을 구하여, 현재의 반복 수행 간격과 중첩된 시간길이의 최소값의 합에 상당하는 시간길이를 새로운 반복 수행 간격으로 설정할 수 있다(S820). 그 후, 제2 반복 수행 간격 및 제2 시간 구간의 조건 하에서 스케줄링이 반복적으로 재시도된다(S830).
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.
Claims (26)
- 2 이상의 프로세싱 엘리먼트에 대한 2 이상의 태스크의 매핑 및, 2 이상의 상기 태스크의 각각에 관한 소스 프로세싱 엘리먼트와 목적지 프로세싱 엘리먼트 간에 지정된 통신방식을 포함하는 초기 해를 생성하는 단계;
상기 초기 해에 포함된 상기 매핑 및 상기 통신방식을 근사적으로 최적화하는 단계; 및
상기 태스크를 스케줄링하는 단계;
를 포함하며, 상기 통신방식은 컴파일 시에 지정되는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제1항에 있어서,
상기 초기 해는 확률적 알고리즘을 이용하여 생성하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제2항에 있어서,
상기 확률적 알고리즘은 시뮬레이티드 어닐링 알고리즘인 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제1항에 있어서,
상기 초기 해를 생성하는 단계에서,
상기 통신방식은 공유 메모리를 이용한 제1 통신방식과 2 이상의 상기 프로세싱 엘리먼트의 각각에 포함된 스크래치패드 메모리를 이용한 제2 통신방식 중에서 선택적으로 지정되는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제4항에 있어서,
상기 초기 해에 포함된 상기 매핑 및 상기 통신방식을 근사적으로 최적화하는 단계는,
2 이상의 상기 프로세싱 엘리먼트의 각각에 매핑된 각각의 태스크를 재배치하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제5항에 있어서,
상기 재배치하는 단계는,
복수의 상기 프로세싱 엘리먼트 중 하나의 프로세싱 엘리먼트에 매핑된 태스크를, 0과 1 사이의 제1 확률로, 다른 프로세싱 엘리먼트로 다시 매핑하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제6항에 있어서,
상기 다시 매핑하는 단계는,
상기 하나의 프로세싱 엘리먼트에 매핑된 상기 태스크를,
0과 1 사이의 제2 확률로, 상기 하나의 프로세싱 엘리먼트가 아닌 프로세싱 엘리먼트의 다른 태스크와 대체하여 다시 매핑하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제6항에 있어서,
상기 다시 매핑하는 단계는,
상기 태스크의 각각에 대하여 상기 제1 통신방식과 상기 제2 통신방식 중에서 선택적으로 지정된 통신방식을 0과 1 사이의 제3 확률로 다른 통신방식으로 변경하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제4항에 있어서,
상기 초기 해에 포함된 상기 매핑 및 상기 통신방식을 근사적으로 최적화하는 단계는,
탐욕 알고리즘 휴리스틱을 이용하여 수행되는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제4항에 있어서,
상기 초기 해에 포함된 상기 매핑 및 상기 통신방식을 근사적으로 최적화하는 단계는,
특정 프로세싱 엘리먼트에 매핑된 적어도 하나의 태스크에 관한 데이터의 크기의 합이 스크래치 패드 메모리의 용량을 초과하지 않도록 위법성을 제거하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제10항에 있어서,
상기 위법성을 제거하는 단계는,
상기 특정 프로세싱 엘리먼트에 매핑된 적어도 하나의 상기 제2 통신방식이 지정된 태스크에 대하여 통신방식을 상기 제1 통신방식으로 변경하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제11항에 있어서,
상기 위법성을 제거하는 단계는,
2 이상의 상기 프로세싱 엘리먼트 전부에 대해서 위법성이 제거될 때까지 수행되는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제12항에 있어서,
상기 위법성을 제거하는 단계는,
스크래치 패드 메모리의 용량 초과가 많은 프로세싱 엘리먼트로부터 순서대로 수행되는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제4항에 있어서,
상기 초기 해에 포함된 상기 매핑 및 상기 통신방식을 근사적으로 최적화하는 단계는,
스크래치 패드 메모리에 잔여 공간이 존재하는 프로세싱 엘리먼트에 대하여 상기 스크래치 패드 메모리의 활용도를 향상시키는 단계를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제14항에 있어서,
상기 활용도를 향상시키는 단계는,
상기 특정 프로세싱 엘리먼트에 매핑된 적어도 하나의 상기 제1 통신방식이 지정된 태스크에 대하여, 통신방식을 상기 제2 통신방식으로 변경하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제1항에 있어서,
상기 태스크를 스케줄링하는 단계는,
적어도 하나의 태스크의 스케줄링을 위한 제1 시간 구간 내에서 스케줄링을 시도하는 단계;
상기 스케줄링을 시도하는 단계에서 하나의 태스크와 다른 태스크가 중첩되어 스케줄링이 실패한 경우, 중첩된 시간길이를 구하는 단계; 및
상기 제1 시간 구간과 상기 중첩된 시간길이의 합에 상당하는 제2 시간 구간 내에서 스케줄링을 재시도하는 단계;
를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제16항에 있어서,
상기 태스크를 스케줄링하는 단계는,
적어도 하나의 상기 태스크 중 적어도 일부가 제1 반복 수행 간격을 가지고 반복 수행되는 경우, 적어도 하나의 상기 중첩된 시간길이의 최소값을 구하는 단계; 및
상기 제1 반복 수행 간격과 상기 중첩된 시간길이의 최소값의 합에 상당하는 제2 반복 수행 간격을 가지고 반복 수행되도록 스케줄링을 재시도하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제1항에 있어서,
상기 태스크를 스케줄링하는 단계 후에,
스케줄링 결과를 평가하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 제18항에 있어서,
상기 스케줄링 결과를 평가하는 단계에서 얻어진 평가 내용을 이용하여 상기 초기 해를 다시 생성하는 단계;를 더 포함하는 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법. - 멀티코어 프로세서의 복수의 프로세싱 엘리먼트 중 하나의 프로세싱 엘리먼트에 매핑된 태스크를, 0과 1 사이의 제1 확률로, 다른 프로세싱 엘리먼트로 이동시키는 단계;
상기 제1 확률로 다시 매핑되는 상기 태스크를, 0과 1 사이의 제2 확률로, 상기 하나의 프로세싱 엘리먼트가 아닌 프로세싱 엘리먼트의 다른 태스크와 대체하는 단계;를 포함하는 멀티코어 프로세서의 태스크 매핑 방법. - 제20항에 있어서,
복수의 상기 프로세싱 엘리먼트에 매핑된 적어도 하나의 태스크의 각각에는 공유 메모리를 이용한 제1 통신방식과 상기 태스크가 매핑된 프로세싱 엘리먼트의 스크래치패드 메모리를 이용한 제2 통신방식 중에서 하나의 통신방식이 선택적으로 지정된 멀티코어 프로세서의 태스크 매핑 방법. - 제21항에 있어서,
적어도 하나의 상기 태스크의 각각에 대하여, 0과 1 사이의 제3 확률로 상기 태스크에 지정된 통신방식을 변경하는 단계;를 더 포함하는 멀티코어 프로세서의 태스크 매핑 방법. - 제22항에 있어서,
특정 프로세싱 엘리먼트에 매핑된 적어도 하나의 상기 제2 통신방식이 지정된 태스크에 대하여 통신방식을 상기 제1 통신방식으로 변경하여 상기 특정 프로세싱 엘리먼트에 매핑된 적어도 하나의 태스크에 관한 데이터의 크기의 합이 상기 특정 프로세싱 엘리먼트의 스크래치 패드 메모리의 용량을 초과하지 않도록 하는 단계;를 더 포함하는 멀티코어 프로세서의 태스크 매핑 방법. - 제22항에 있어서,
스크래치 패드 메모리에 잔여 공간이 존재하는 프로세싱 엘리먼트에 대하여, 상기 특정 프로세싱 엘리먼트에 매핑된 적어도 하나의 상기 제1 통신방식이 지정된 태스크의 통신방식을 상기 제2 통신방식으로 변경하는 단계;를 더 포함하는 멀티코어 프로세서의 태스크 매핑 방법. - 멀티코어 프로세서의 2 이상의 프로세싱 엘리먼트에서 수행되는 2 이상의 태스크에 대하여 제1 시간 구간 내에서 스케줄링을 시도하는 단계;
상기 스케줄링을 시도하는 단계에서 하나의 태스크와 다른 태스크가 중첩되어 스케줄링이 실패한 경우, 중첩된 시간길이를 구하는 단계; 및
상기 제1 시간 구간과 상기 중첩된 시간길이의 합에 상당하는 제2 시간 구간 내에서 스케줄링을 재시도하는 단계;
를 포함하는 멀티코어 프로세서의 태스크 스케줄링 방법. - 제25항에 있어서,
적어도 하나의 상기 태스크 중 적어도 일부가 제1 반복 수행 간격을 가지고 반복 수행되는 경우, 적어도 하나의 상기 중첩된 시간길이의 최소값을 구하는 단계; 및
상기 제1 반복 수행 간격과 상기 중첩된 시간길이의 최소값의 합에 상당하는 제2 반복 수행 간격을 가지고 반복 수행되도록 스케줄링을 재시도하는 단계;를 더 포함하는 멀티코어 프로세서의 태스크 스케줄링 방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120113103A KR101926464B1 (ko) | 2012-10-11 | 2012-10-11 | 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 |
EP13188361.3A EP2720147B1 (en) | 2012-10-11 | 2013-10-11 | Apparatus and method for compiling program to be executed on multi-core processor, and task mapping method and task scheduling method of reconfigurable processor |
US14/051,910 US9298430B2 (en) | 2012-10-11 | 2013-10-11 | Method of compiling program to be executed on multi-core processor, and task mapping method and task scheduling method of reconfigurable processor |
CN201310473475.8A CN103729228B (zh) | 2012-10-11 | 2013-10-11 | 编译程序的方法以及任务映射方法和任务调度方法 |
JP2013214187A JP6291209B2 (ja) | 2012-10-11 | 2013-10-11 | マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120113103A KR101926464B1 (ko) | 2012-10-11 | 2012-10-11 | 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140046897A true KR20140046897A (ko) | 2014-04-21 |
KR101926464B1 KR101926464B1 (ko) | 2018-12-07 |
Family
ID=49382262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120113103A KR101926464B1 (ko) | 2012-10-11 | 2012-10-11 | 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9298430B2 (ko) |
EP (1) | EP2720147B1 (ko) |
JP (1) | JP6291209B2 (ko) |
KR (1) | KR101926464B1 (ko) |
CN (1) | CN103729228B (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10281892B2 (en) * | 2012-08-02 | 2019-05-07 | Siemens Aktiengesellschaft | Pipelining for cyclic control systems |
CN103995744B (zh) * | 2014-05-22 | 2017-04-26 | 西安交通大学 | 一种用于消除存储访问拥塞的同构计算任务分组方法 |
CN104572266B (zh) * | 2015-01-04 | 2018-03-06 | 华东师范大学 | 制程变异下基于UPPAAL‑SMC的MPSoC任务调度建模与评估方法 |
CN107291548B (zh) | 2016-03-31 | 2021-04-13 | 阿里巴巴集团控股有限公司 | 任务的资源调度方法及装置 |
JP6873256B2 (ja) | 2017-09-27 | 2021-05-19 | 日立Astemo株式会社 | 車載マルチコア制御用データ伝達装置および電子制御装置 |
CN108108237B (zh) * | 2017-12-27 | 2021-09-28 | 电子科技大学 | 一种基于milp的周期关联任务异构多核映射调度方法 |
US11128531B2 (en) * | 2018-04-30 | 2021-09-21 | Hewlett Packard Enterprise Development Lp | Systems and methods for aggregate bandwidth and latency optimization |
CN110514982B (zh) * | 2019-08-22 | 2022-03-22 | 上海兆芯集成电路有限公司 | 性能分析系统与方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110034597A (ko) * | 2008-07-10 | 2011-04-05 | 로케틱 테크놀로지즈 리미티드 | 효율적인 디펜던시 문제의 병렬 계산 |
KR20110052903A (ko) * | 2009-11-13 | 2011-05-19 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법 |
KR20110083941A (ko) * | 2010-01-15 | 2011-07-21 | 삼성전자주식회사 | 대규모 병렬 프로세서 어레이 시스템의 데이터 처리 장치 및 방법 |
US20120144401A1 (en) * | 2010-12-03 | 2012-06-07 | International Business Machines Corporation | Data Communications For A Collective Operation In A Parallel Active Messaging Interface Of A Parallel Computer |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3364274B2 (ja) * | 1993-05-21 | 2003-01-08 | 松下電器産業株式会社 | タスク割り当て装置 |
JP3016359B2 (ja) * | 1995-07-21 | 2000-03-06 | 日本電気株式会社 | マルチプロセッサシステムにおけるプロセッサ割り当て装置、プロセッサ割り当て方法、およびプロセッサ割り当てプログラムを記憶する媒体 |
CA2275826A1 (en) * | 1999-06-18 | 2000-12-18 | Jia Xu | A method of scheduling executions of periodic and asynchronous real-time processes having hard or soft deadlines |
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 |
US7564847B2 (en) * | 2004-12-13 | 2009-07-21 | Intel Corporation | Flow assignment |
US20060161755A1 (en) * | 2005-01-20 | 2006-07-20 | Toshiba America Electronic Components | Systems and methods for evaluation and re-allocation of local memory space |
CN101479704B (zh) * | 2006-03-27 | 2013-09-04 | 相干逻辑公司 | 为多处理器系统设计程序 |
CN101165655A (zh) * | 2006-10-20 | 2008-04-23 | 国际商业机器公司 | 多处理器计算系统及其任务分配方法 |
JP2007188523A (ja) * | 2007-03-15 | 2007-07-26 | Toshiba Corp | タスク実行方法およびマルチプロセッサシステム |
US20090213755A1 (en) | 2008-02-26 | 2009-08-27 | Yinghai Lu | Method for establishing a routing map in a computer system including multiple processing nodes |
US8161127B2 (en) | 2009-02-23 | 2012-04-17 | International Business Machines Corporation | Process mapping in parallel computing |
US8407707B2 (en) | 2009-05-18 | 2013-03-26 | Lsi Corporation | Task queuing in a network communications processor architecture |
CN101620526B (zh) * | 2009-07-03 | 2011-06-15 | 中国人民解放军国防科学技术大学 | 一种减少流处理器片上指令存储器资源消耗的方法 |
KR101647817B1 (ko) * | 2010-03-31 | 2016-08-24 | 삼성전자주식회사 | 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법 |
CN102087609B (zh) * | 2011-02-23 | 2013-06-05 | 中国人民解放军国防科学技术大学 | 多处理器平台下的动态二进制翻译方法 |
-
2012
- 2012-10-11 KR KR1020120113103A patent/KR101926464B1/ko active IP Right Grant
-
2013
- 2013-10-11 EP EP13188361.3A patent/EP2720147B1/en active Active
- 2013-10-11 US US14/051,910 patent/US9298430B2/en active Active
- 2013-10-11 CN CN201310473475.8A patent/CN103729228B/zh active Active
- 2013-10-11 JP JP2013214187A patent/JP6291209B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110034597A (ko) * | 2008-07-10 | 2011-04-05 | 로케틱 테크놀로지즈 리미티드 | 효율적인 디펜던시 문제의 병렬 계산 |
KR20110052903A (ko) * | 2009-11-13 | 2011-05-19 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법 |
KR20110083941A (ko) * | 2010-01-15 | 2011-07-21 | 삼성전자주식회사 | 대규모 병렬 프로세서 어레이 시스템의 데이터 처리 장치 및 방법 |
US20120144401A1 (en) * | 2010-12-03 | 2012-06-07 | International Business Machines Corporation | Data Communications For A Collective Operation In A Parallel Active Messaging Interface Of A Parallel Computer |
Non-Patent Citations (2)
Title |
---|
Grigoris Dimitroulakos 외 2명. 'Design space exploration of an optimized compiler approach ~'. The Journal of Supercomputing, Kluwer Academic Pubilshers, BO, Vol.40, No.2, 2007.02.24., pp.127-157. * |
Vivy Suhendra 외 2명. 'Integrated Scratchpad Memory Optimization and Task Scheduling for MPSoC Architectures'. CASES '06, 2006.10.22., pp.1-10. * |
Also Published As
Publication number | Publication date |
---|---|
US20140109069A1 (en) | 2014-04-17 |
EP2720147A3 (en) | 2014-10-29 |
KR101926464B1 (ko) | 2018-12-07 |
US9298430B2 (en) | 2016-03-29 |
JP2014078239A (ja) | 2014-05-01 |
EP2720147A2 (en) | 2014-04-16 |
CN103729228A (zh) | 2014-04-16 |
EP2720147B1 (en) | 2020-06-17 |
JP6291209B2 (ja) | 2018-03-14 |
CN103729228B (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101926464B1 (ko) | 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법 | |
US10402176B2 (en) | Methods and apparatus to compile code to generate data flow code | |
US20150193234A1 (en) | Register allocation for vectors | |
KR101645035B1 (ko) | 병렬 프로그래밍 조절 장치 및 방법 | |
JP6432450B2 (ja) | 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム | |
JP7523964B2 (ja) | アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置 | |
KR101893796B1 (ko) | 동적 데이터 구성을 위한 방법 및 장치 | |
Hong et al. | GPU code optimization using abstract kernel emulation and sensitivity analysis | |
JP2017073000A (ja) | 並列化方法、並列化ツール、車載装置 | |
US8612958B2 (en) | Program converting apparatus and program conversion method | |
US20140196016A1 (en) | Layered programming for heterogeneous devices | |
JP2008305337A (ja) | プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム | |
Baloukas et al. | Mapping embedded applications on MPSoCs: the MNEMEE approach | |
JP2004310651A (ja) | コスト解析に基づいてループの自動並列化処理を行う情報処理装置 | |
Fujita et al. | CHARM-SYCL: New Unified Programming Environment for Multiple Accelerator Types | |
TWI455030B (zh) | 決定程式任務之平行度的方法與計算裝置及其機器可讀取媒體 | |
KR20100046877A (ko) | 언롤 루프에 대한 레지스터 스필을 줄이는 컴파일러 및 그 방법 | |
KR20110080540A (ko) | 컴퓨팅 시스템 및 방법 | |
Thoman et al. | Optimizing task parallelism with library-semantics-aware compilation | |
JP6322968B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
Li et al. | An efficient code update scheme for DSP applications in mobile embedded systems | |
CN116204195A (zh) | 面向simd与vliw架构可量化的指令调度方法及系统 | |
JP2006065682A (ja) | コンパイラプログラム、コンパイル方法およびコンパイラ装置 | |
Li | Software update management in wireless sensor networks | |
JP2009175797A (ja) | コンパイル方法及びコンパイラプログラム |
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 |