KR20070090649A - 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법 - Google Patents

멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법 Download PDF

Info

Publication number
KR20070090649A
KR20070090649A KR1020060020608A KR20060020608A KR20070090649A KR 20070090649 A KR20070090649 A KR 20070090649A KR 1020060020608 A KR1020060020608 A KR 1020060020608A KR 20060020608 A KR20060020608 A KR 20060020608A KR 20070090649 A KR20070090649 A KR 20070090649A
Authority
KR
South Korea
Prior art keywords
task
memory
schedule
dsp
tasks
Prior art date
Application number
KR1020060020608A
Other languages
English (en)
Other versions
KR100791296B1 (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 KR1020060020608A priority Critical patent/KR100791296B1/ko
Publication of KR20070090649A publication Critical patent/KR20070090649A/ko
Application granted granted Critical
Publication of KR100791296B1 publication Critical patent/KR100791296B1/ko

Links

Images

Classifications

    • EFIXED CONSTRUCTIONS
    • E06DOORS, WINDOWS, SHUTTERS, OR ROLLER BLINDS IN GENERAL; LADDERS
    • E06BFIXED OR MOVABLE CLOSURES FOR OPENINGS IN BUILDINGS, VEHICLES, FENCES OR LIKE ENCLOSURES IN GENERAL, e.g. DOORS, WINDOWS, BLINDS, GATES
    • E06B9/00Screening or protective devices for wall or similar openings, with or without operating or securing mechanisms; Closures of similar construction
    • E06B9/24Screens or other constructions affording protection against light, especially against sunshine; Similar screens for privacy or appearance; Slat blinds
    • E06B9/40Roller blinds
    • E06B9/42Parts or details of roller blinds, e.g. suspension devices, blind boxes
    • E06B9/44Rollers therefor; Fastening roller blinds to rollers

Abstract

멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및 방법이 제공된다. 비대칭 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치는 새로운 태스크가 할당되면 범용 프로세서(General Purpose Processor, 이하 GPP)로부터 인터럽트를 입력 받아 스케줄을 작성하는 스케줄 작성부, 스케줄을 작성하기 위해 기존에 수행하던 태스크들 및 로컬 메모리에 남아있는 태스크들에 대한 정보를 모두 메인 메모리로 저장하는 메모리 관리부, 작성된 스케줄에 따라 새롭게 할당된 태스크를 로드하고 수행을 시작하는 실행부 및 새롭게 할당된 태스크 수행 시 타이머를 세팅하고 관리하는 타이머 관리부를 포함한다.
비대칭, 멀티 코어, 스케줄링, 메모리

Description

멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및 방법{Apparatus and method for providing cooperative scheduling on multi-core system}
도 1은 소니, 도시바, 아이비엠(Sony Toshiba Ibm ; STI) 3사에서 셀(Cell ; 개발코드명) 프로세서용으로 개발한 실시간 스케줄러의 기능분할을 도시한 도면이다.
도 2는 도 1에서 도시한 장치에서의 컨텍스트 스위칭을 도시한 도면이다.
도 3은 본 발명의 실시예에 따른 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치의 구성을 나타낸 블록도이다.
도 4는 도 3에서 도시된 장치가 포함된 본 발명의 실시예에 다른 멀티 코어 시스템의 구성을 나타낸 블록도이다.
도 5는 DSP 태스크가 DSP 코어 상에서 수행될 때의 DSP 코어의 메모리의 구조를 세부적으로 나타낸 도면이다.
도 6은 실시간 DSP 스케줄러의 동작 과정을 설명하는 흐름도이다.
도 7은 본 발명의 실시에에 따른 멀티 코어 시스템에서 새로운 태스크를 할당하는 과정을 나타낸 흐름도이다.
도 8은 도 7에서 도시한 새로운 태스크를 할당 후, 타이머 인터럽트에 의한 컨텍스트 스위칭의 과정을 나타낸 흐름도이다.
<도면의 주요 부분에 관한 부호의 설명>
300 : 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치
301 : 스케줄 작성부
302 : 메모리 관리부
303 : 실행부
304 : 타이머 관리부
본 발명은 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및 방법에 관한 것으로서, 더욱 상세하게는 일반적인 프로세싱을 담당하는 GPP 코어들과 연산을 담당하는 이산 신호 프로세서(Digital Signal Processor, 이하 DSP) 코어들로 구성되는 비대칭형 멀티 코어 시스템에서 메모리 보호가 없는 DSP 코어 상에서 성능의 향상을 위해 실시간 태스크 스케줄링을 제공하는 장치 및 방법에 관한 것이다.
여러 차세대 내장 시스템(Embedded System)용 프로세서들은 성능의 향상을 위해 복수개의 프로세서 코어를 한 칩에 내장하는 멀티 코어 구조를 가진다.
특히 비대칭형 멀티 코어(Asymmetric multi-core) 구조는 일반적인 프로세싱을 담당하는 GPP 코어들과 연산을 담당하는 DSP 코어들로 구성되어 있으며, 이 중에서 DSP 코어에 해당하는 부분은 성능, 집적도, 전력 등을 고려하여 GPP 코어보다 단순한 구조를 가지는데 이를 위해서 기억 관리 장치(Memory Management Unit, 이하 MMU) 등의 메모리 주소 변환 기능 및 메모리 보호기능을 갖지 않는 경우가 많다.
상술한 MMU가 없는 DSP 코어는 일반적으로 하나의 작업에 정적(Static)으로 할당되어 사용되고 있으나, 최근 시스템에서 수행되어야 할 작업들이 더욱 다양해지고 특히 동적으로 변하는 작업들이 많아지는 상황에서 DSP 코어 상에서 수행될 태스크의 멀티 태스킹을 지원하는 스케줄링에 대한 필요가 요구되고 있다.
MMU가 없는 DSP 코어 상에서 수행될 태스크의 멀티 태스킹을 지원하는 방법으로 운영체제의 스케줄링 기법과 DSP 코어의 로컬 메모리를 전부 저장했다가 복구하는 방법 등이 대안으로 제시될 수 있겠지만, 일반적으로 운영체제의 스케줄링 기법은 메모리 주소 변환 및 메모리 보호기능을 가정하고 있으며, DSP 코어의 로컬 메모리를 전부 저장, 복구하는 방법은 컨텍스트 스위칭 오버헤드가 크다는 단점이 있다.
도 1은 소니, 도시바, 아이비엠(Sony Toshiba Ibm ; STI) 3사에서 셀(Cell ; 개발코드명, 이하 Cell) 프로세서용으로 개발한 실시간 스케줄러의 기능분할을 도시한 도면이다.
독립된 스트리밍 프로세서 코어(Synergetic Processing Element, 이하 SPE) 쓰레드(Thread)(104)는 Cell 프로세서 내의 DSP 코어인 SPE(102) 상에서 수행되는 프로그램으로 DSP 코어상에서 생성되는 DSP 태스크에 해당하는 것이다.
실시간 스케줄러(103)는 SPE(102) 상이 아니라 GPP 코어인 메인 프로세서 역 할을 하는 프로세서 코어(Power Processing Element, 이하 PPE)(101) 상에서 수행된다.
PPE(101) 상에서 수행되면서 필요한 경우 SPE(102) 쪽으로 SPE 쓰레드(104)를 다운로드 하는 역할을 한다.
도 2는 도 1에서 도시한 장치에서의 컨텍스트 스위칭을 도시한 도면이다.
PPE(201)에서 실시간 스케줄러(203)가 구동되고 있으므로, 컨텍스트 스위칭 과정 역시 PPE(201)에 의해 시작하게 된다.
PPE(201) 상에서 수행되는 실시간 스케줄러(203)는 현재 수행중인 SPE 쓰레드(204a)의 수행에 필요한 컨텍스트와 같은 정보를 메인 메모리(205)에 저장하고 다음으로 수행할 SPE 쓰레드(204b)의 컨텍스트를 메인 메모리로(205)부터 SPE의 로컬 스토리지로 다운로드 하게 된다.
또한 컨텍스트 정보는 레지스터, 메모리와 메모리 또는 메모리와 주변장치 간에 CPU를 개입시키지 않고 직접 데이터를 전송하는 메모리 직접 접근(Direct Memory Access, 이하 DMA)의 커멘드큐로도 다운로드 된다.
이때 SPE(202)는 메모리 보호 기능이 없는 DSP 코어이므로 각 SPE 쓰레드(204a)가 모든 로컬 스토리지에 접근 할 수 있다는 가정하에 로컬 스토리지 전체를 컨텍스트로서 저장하고 복구한다.
일반적으로 실시간 운영체제(Real Time Operating System)에서는 시간제약이 직접적으로 기술되지 않고, 태스크들의 우선순위(Priority)라는 간접적인 형태로 기술된다.
태스크들을 우선순위로 처리하는 형태를 통해 스케줄러의 구현 및 동작이 간단해 진다는 장점이 있으나 비디오 코덱 등 정해진 실시간 요구사항이 있는 경우에는, 프로그래머가 수동으로 우선순위를 할당해 주어야 한다.
또한 현재의 시스템 상태에 따라 실시간 요구사항을 만족시킬 수 있을지 여부가 달라지게 되는데, 그 점에 대한 판단을 할 수 없다는 문제점도 있다.
도 1에서 도시한 장치의 실시간 스케줄러는 직접적으로 태스크들의 실시간 요구사항을 기술하고 이를 이용하여 스케줄링을 수행하는 실시간 스케줄러이다.
이와 같은 실시간 스케줄러는 사용자에 의한 우선순위 할당 과정이 필요 없으므로 개발 생산성이 높아지는 장점이 있지만 매 컨텍스트 스위칭 시 마다, GPP 코어인 PPE의 개입을 필요로 한다.
PPE는 운영체제를 비롯하여 많은 프로그램들이 수행되는 중심 프로세서이므로, SPE의 컨텍스트 스위칭 시 마다 PPE가 개입해야 한다는 것은 시스템 전체의 성능에 영향을 줄 수 있다.
또한 컨텍스트 스위칭 시 마다 256KB(Per SPE)의 용량을 가지는 모든 로컬 스토리지의 내용을 저장하고 복구하므로 컨텍스트 스위칭 시간이 길다는 문제점이 있다.
본 발명은 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및 방법에 관한 것으로서 GPP에서 수행해야 하는 작업의 양을 줄임으로써 GPP 상에서 수행되는 다른 프로드램들에 미치는 성능간섭을 줄이는데 그 목적이 있다.
본 발명의 다른 목적은 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및 방법을 통해 DSP 태스크가 가져야 할 특성을 정의함으로써 DSP 태스크에 대한 컨텍스트 스위칭 시간을 줄이는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치는 새로운 태스크가 할당되면 GPP로부터 인터럽트를 입력 받아 스케줄을 작성하는 스케줄 작성부, 스케줄을 작성하기 위해 기존에 수행하던 태스크들 및 로컬 메모리에 남아있는 태스크들에 대한 정보를 모두 메인 메모리로 저장하는 메모리 관리부, 작성된 스케줄에 따라 새롭게 할당된 태스크를 로드하고 수행을 시작하는 실행부 및 새롭게 할당된 태스크 수행 시 타이머를 세팅하고 관리하는 타이머 관리부를 포함한다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 방법은 새로운 태스크가 할당되면 GPP로부터 인터럽트를 입력 받아 스케줄을 작성하는 스케줄 작성 단계, 스케줄을 작성하기 위해 기존에 수행하던 태스크들 및 로컬 메모리에 남아있는 태스크들에 대한 정보를 모두 메인 메모리로 저장하는 메모리 관리 단계, 작성된 스케줄에 따라 새롭게 할당된 태스크를 로드하고 수행을 시작하는 실행 단계 및 새롭게 할당된 태스크 수행 시 타이머를 세팅하고 관리하는 타이머 관리 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치의 구성을 나타낸 블록도이다.
멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치(300)는 새로운 태스크가 할당되면 GPP로부터 인터럽트를 입력 받아 스케줄을 작성하는 스케줄 작성부(301), 스케줄을 작성하기 위해 기존에 수행하던 태스크들 및 로컬 메모리에 남아있는 태스크들에 대한 정보를 모두 메인 메모리로 저장하는 메모리 관리부(302), 작성된 스케줄에 따라 새롭게 할당된 태스크를 로드하고 수행을 시작하는 실행부(303), 새롭게 할당된 태스크 수행 시 타이머를 세팅하고 관리하는 타이머 관리부 (304)로 구성된다.
도 4는 도 3에서 도시된 장치가 포함된 본 발명의 실시예에 다른 멀티 코어 시스템의 구성을 나타낸 블록도이다.
본 발명의 실시예에 따른 멀티 코어 시스템(400)의 구성은 GPP(401), DSP(402), 리눅스(Linux) 등과 같은 일반적인 운영체제(403), DSP 코어의 기능을 사용하지 않는 GPP 어플리케이션(404), GPP 코어와 DSP 코어에서 수행될 코드들을 모두 가지고 있는 어플리케이션(405), GPP코어 위에서 동작하며 어플리케이션(404, 405)으로부터 DSP 태스크 수행에 대한 요구를 받아 처리하는 실시간 DSP 스케줄러(406), DSP 태스크들을 DSP 코어에 할당하는 수행 제어 및 태스크 할당 장치(407), 각 DSP에서 수행될 태스크들에 대한 정보를 가지고 있는 DSP태스크 큐(Queues)(408), DSP 코어의 메모리(409), 도 3에서 도시된 장치(410), 어플리케이션의 수행을 위해 DSP 위에서 수행되는 프로그램인 DSP 태스크(411)로 구성된다.
본 발명의 실시예에 따른 멀티 코어 시스템(400)의 동작은 크게 실시간 DSP 스케줄러(406)와 본 발명의 실시예에 따른 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치(410)의 역할 분담으로 설명될 수 있다.
첫째, 실시간 DSP 스케줄러(406)는 GPP 상에서 동작하며 어플리케이션(404, 405)에 의해 새로운 DSP 태스크의 수행 요구가 있을 경우 수행된다.
또한 태스크 할당 및 태스크 수행 제어를 담당하며 태스크 할당의 결과로서 DSP 태스크 큐(408)를 업데이트하고, 이를 각 DSP 코어들(402)에게 인터럽트를 통해 알린다.
둘째, 본 발명의 실시예에 따른 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치(410)는 각 DSP 코어 상에서 동작하며 실제 컨텍스트 스위칭을 담당한다.
또한 태스크가 새롭게 할당되었을 때 이를 이용하여 각 DSP 코어의 스케줄을 수정하며 각 DSP 코어의 스케줄에 따라 타이머 인터럽트를 이용하여, 제한시간이 초과되거나 더 높은 우선순위에 의해 강제로 CPU를 차지하는 선점(Preemption) 방식으로 스케줄링을 수행한다.
도 5는 DSP 태스크가 DSP 코어 상에서 수행될 때의 DSP 코어의 메모리(409)의 구조를 세부적으로 나타낸 도면이다.
참고로 본 발명의 실시예에 따른 DSP 태스크는 다음과 같은 조건을 만족시켜야 한다.
첫째, 각 DSP 태스크는 위치 독립(Position-Independent) 방식으로 작성된다. 즉, DSP 코어의 로컬 메모리 상의 어느 부분에 로드(Load)되더라도 수행이 가능해야 한다.
둘째, 각 DSP 태스크는 미리 정의된 만큼의 로컬 메모리만을 사용한다.
여기에는 텍스트(Text) 영역, 데이터(Data) 영역, 힙(Heap) 영역, 스택(Stack) 영역 등이 포함된다.
각 영역의 최대 허용값은 스케줄러에게 알려지며, 각 영역의 최대 허용값 이외의 부분에 대한 접근은 없는 것으로 가정한다.
셋째, 각 DSP 태스크의 텍스트 영역은 해당 DSP 태스크가 로컬 메모리로 로 드된 후에도 변경되지 않는다.
넷째, 각 DSP 태스크는 특정 DSP 코어의 독자성에 의존적이어서는 안 된다. 즉, 어떤 DSP 코어에 로드되더라도 수행 가능해야 하며 이는 DSP 태스크간의 통신은 메인 메모리와 GPP를 항상 경유해야 함을 의미한다.
다섯째, 각 DSP 태스크는 수행주기(단, 비주기성 태스크의 경우는 주기가 0), 데드라인(비실시간 태스크의 경우는 0), 주기별 수행시간 등의 파라메터를 가지며 각 DSP 태스크의 프로세서 이용률은 주기별 수행시간/수행주기로 정의된다.
DSP 태스크가 DSP 코어 상에서 수행될 때의 DSP 코어의 메모리(409)의 구조는 본 발명의 실시예에 따른 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치(410), DSP 태스크가 사용하는 스택 영역(501), DSP 태스크가 사용하는 동적 할당 메모리인 힙 영역(502), DSP 태스크에서 사용하는 자료 영역(503), DSP 태스크에서 수행되는 프로그램 코드가 저장되는 텍스트 영역(504), 동시에 존재하는 다른 DSP 태스크가 사용하는 영역(505)으로 나뉘어진다.
이 중에서 텍스트 영역(504)은 디스크 파일 시스템과 같은 외부기억장치에 저장되어 있는 프로그램 코드(오브젝트 파일)의 내용과 계속 동일한 것으로 가정한다. 따라서 컨텍스트 스위칭 시 저장되지 않는다.
또한 스택 영역(501)의 스택 포인터는 DSP 태스크가 사용하는 최대 메모리 사용량을 기반으로 정해진다.
도 6은 실시간 DSP 스케줄러(406)의 동작 과정을 설명하는 흐름도이다.
어플리케이션으로부터 새롭게 수행해야 할 DSP 태스크의 Set이 들어오면 실 시간 DSP 스케줄러(406)의 동작이 시작된다(S601).
현재 수행 중인 DSP 태스크들에 새롭게 수행할 DSP태스크를 합쳐, 전체 수행할 태스크의 Set을 만든다(S602).
S602에서 만들어진 태스크의 Set을 프로세서 이용률의 내림차순으로 정렬한다(S603).
가장 프로세싱 파워를 많이 사용하는 것이 맨 처음에 오도록 하여 정렬된 각 태스크에 대해, DSP 코어(402) 1번부터 N 번까지를 순서대로 살펴본다(S604).
현재 DSP 코어(402) N 에 해당하는 DSP태스크 큐(408)에 들어있는 태스크들의 프로세서 이용률의 합에, 새롭게 넣으려는 태스크의 프로세서 이용률을 합했을 때, 1.0 (100%) 보다 작거나 큰지를 판단하여(S605), 작다면 이 DSP 코어(402)에 해당 DSP 태스크(411)가 스케줄 가능하다고 판단한다.
그리고 할당할 수 있는 DSP 코어를 발견했다면, 태스크의 리스트를 탐색하면서 해당 요청을 만족시킬 수 있는 리스트를 발견하는 대로 할당하는 최초 맞춤(First-fit) 방식으로 해당 DSP 태스크를 할당 가능한 DSP 코어에 할당하고, 실시간 DSP 스케줄러(406)는 할당된 DSP태스크를 정렬된 리스트에서 삭제한 후 다음 DSP 태스크에 대해서 검사한다(S607).
S607이후, 실시간 DSP 스케줄러(406)는 모든 DSP 태스크를 DSP 코어에 할당했는지를 판단하여(S608) 모든 DSP 태스크를 DSP 코어에 할당했다면 태스크 할당은 성공한 것으로 판단하고(S609) 어플리케이션에게 수행 성공을 알린다.
만일 S605의 결과가 1.0 보다 크다면, 다음 DSP 코어에 해당 DSP 태스크를 할당할 수 있는지 알아본다(S606).
모든 DSP 코어에 대해 순서대로 살펴보았을 때 할당이 불가능하다면, 실시간 DSP 스케줄러(406)는 태스크 할당이 실패한 것으로 판단하고(S610) 어플리케이션에게 수행 실패를 알린다.
참고로 비실시간 태스크들은, 가장 이용률이 낮은 DSP 코어들로부터 차례로 할당한다.
도 7은 본 발명의 실시에에 따른 멀티 코어 시스템에서 새로운 태스크를 할당하는 과정을 나타낸 흐름도이다.
즉, 태스크 할당이 새롭게 수행되는 경우, 도 3에서 도시한 장치의 수행 순서를 나타낸다.
태스크가 새롭게 할당되면(S701), 메모리 관리부(302)는 기존에 수행하던 태스크들 및 로컬 메모리에 남아있던 태스크들에 대한 정보는 모두 메인 메모리로 저장하고 일단 선점된다(S702).
S702후 스케줄 작성부(301)는 PPE로부터 인터럽트를 받아 마감시간(Deadline)까지의 시간적 여유가 가장 짧은 것부터 처리하는 EDF(Earliest Deadline First)방식에 의해 새롭게 스케줄을 작성한다(S703).
그리고 타이머 관리부(304)는 첫 태스크의 종료 예정시간에 타이머 인터럽트가 발생하도록 타이머를 세팅한다(S704).
S704후 실행부(303)에서 첫 태스크를 로드하고 수행을 시작한다(S705).
도 8은 도 7에서 도시한 새로운 태스크를 할당 후, 타이머 인터럽트에 의한 컨텍스트 스위칭의 과정을 나타낸 흐름도이다.
즉, 타이머 인터럽트에 의해 컨텍스트 스위칭 시, 도 3에서 도시한 장치의 수행 순서를 나타낸다.
매 태스크 수행 시, 일정 시간 후에 선점이 되도록 타이머 관리부(304)는 타이머를 세팅하고 수행한다(S801).
이때 타이머 값은, 수행할 태스크의 수행시간과 태스크 릴리즈(release) 시간이 현재 시간과 가장 가까운 것, 이 둘 중에서 작은 값으로 결정되며 지정된 수행시간 또는 지정된 수행시간 이후에 선점되도록 한다.
해당 태스크에 설정된 타이머가 종료(Fire)되고 선점되면 메모리 관리부(302)는 마감시점이 현재 시간과 가장 가까운 태스크의 레지스터 정보 등, 로컬 메모리 외의 컨텍스트 정보들을 메인 메모리에 저장한다(S802).
S802후, 메모리 관리부(302)는 해당 태스크의 지난번 수행 시 사용했던 로컬 메모리 영역이 아직 남아 있는지 확인하고(S803), 남아 있다면 그 영역을 다시 사용하도록 한다.
만일 S803의 결과 남아 있지 않다면, 메모리 관리부(302)는 현재 다른 태스크에 의해서 사용되지 않은 연속된 빈 로컬 메모리 영역이, 새롭게 수행할 태스크의 필요량만큼 남아 있는지 확인한다(S804).
확인 후, 빈 영역이 남아 있다면, 그 영역에 새로이 수행할 태스크를 로드한다(S807).
만일 S804 결과 빈 영역도 없는 경우, 메모리 관리부(302)는 현재 로컬 메모 리를 차지하고 있는 태스크들 중에서 일부를 메인 메모리에 저장하여 로컬 메모리의 빈 영역을 확보하고(S805, S806), 실행부(303)는 확보된 로컬 메모리에 새로이 수행할 태스크를 로드한다(S807).
메인 메모리에 저장할 태스크의 선정 기준은 필요한 로컬 메모리 공간의 크기가 M 이라면, M 보다 같거나 큰 태스크들 중에서 가장 먼저 발견되는 것을 기준으로 한다.
만일 이런 기준을 만족시키는 하나의 태스크도 없다면, 메모리 관리부(302)는 로컬 메모리의 처음부터 메모리를 할당한다(S805).
메모리 관리부(302)는 S805에서 할당된 공간에 존재하던 기존 태스크를 메인 메모리에 저장하며(S806), 이때 태스크가 차지하는 영역 중 텍스트 영역에 대해서는 저장하지 않음으로써 컨텍스트 스위칭 시간을 줄일 수 있다.
실행부(303)가 새롭게 할당 된 태스크의 로드 시(S807), 메모리 관리부(302)는 단편화(fragmentation)를 방지하기 위해, 일정한 블럭을 단위로 로컬 메모리를 나누어 할당한다.
블럭의 크기는 로컬 메모리의 크기에 따라 달라질 수 있으나, 보통 16KB 정도가 적당하다.
S807후, 타이머 관리부(304)는 새롭게 할당 된 태스크에 대해 타이머를 설정하고 수행을 시작함으로써(S808) 컨텍스트 스위칭이 이루어지게 된다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수 적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 스케줄링 과정에서 GPP에서 수행해야 하는 작업의 양을 DSP에서 담당함으로써 GPP상에서 수행되는 다른 프로그램들에 미치는 성능 간섭을 줄이고 일반적인 운영체제인 비 실시간 운영체제 만으로도 DSP의 실시간 처리를 가능하게 하는 장점이 있다.
둘째, DSP 태스크가 가져야 할 특성을 정의함으로써 DSP 태스크에 대한 컨텍스트 스위칭 시간을 줄이는 장점도 있다.

Claims (5)

  1. 새로운 태스크가 할당되면 범용 프로세서로부터 인터럽트를 입력 받아 스케줄을 작성하는 스케줄 작성부;
    상기 스케줄을 작성하기 위해 기존에 수행하던 태스크들 및 로컬 메모리에 남아있는 태스크들에 대한 정보를 모두 메인 메모리로 저장하는 메모리 관리부;
    상기 작성된 스케줄에 따라 새롭게 할당된 태스크를 로드하고 수행을 시작하는 실행부; 및
    상기 새롭게 할당된 태스크 수행 시 타이머를 세팅하고 관리하는 타이머 관리부를 포함하는 비대칭 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치.
  2. 제 1항에 있어서
    상기 메모리 처리부는 컨텍스트 스위칭 시 기존에 로컬 메모리에 있던 태스크를 저장할 때 텍스트 영역에 대해서는 저장하지 않는 비대칭 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치.
  3. 새로운 태스크가 할당되면 범용 프로세서로부터 인터럽트를 입력 받아 스케줄을 작성하는 스케줄 작성 단계;
    상기 스케줄을 작성하기 위해 기존에 수행하던 태스크들 및 로컬 메모리에 남아있는 태스크들에 대한 정보를 모두 메인 메모리로 저장하는 메모리 관리 단계;
    상기 작성된 스케줄에 따라 새롭게 할당된 태스크를 로드하고 수행을 시작하는 실행 단계; 및
    상기 새롭게 할당된 태스크 수행 시 타이머를 세팅하고 관리하는 타이머 관리 단계를 포함하는 비대칭 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 방법.
  4. 제 3항에 있어서
    상기 메모리 관리 단계는 컨텍스트 스위칭 시 기존에 로컬 메모리에 있던 태스크를 저장할 때 텍스트 영역에 대해서는 저장하지 않는 비대칭 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 방법.
  5. 제 3항에 있어서,
    상기 메모리 관리 단계는 로컬 메모리에 새로운 태스크를 로드할 때 현재 로컬 메모리 영역의 사용 여부를 판단하여 로드되는 새로운 태스크에 할당하는 단계를 포함하는 비대칭 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 방법.
KR1020060020608A 2006-03-03 2006-03-03 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법 KR100791296B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060020608A KR100791296B1 (ko) 2006-03-03 2006-03-03 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060020608A KR100791296B1 (ko) 2006-03-03 2006-03-03 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법

Publications (2)

Publication Number Publication Date
KR20070090649A true KR20070090649A (ko) 2007-09-06
KR100791296B1 KR100791296B1 (ko) 2008-01-04

Family

ID=38689018

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060020608A KR100791296B1 (ko) 2006-03-03 2006-03-03 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법

Country Status (1)

Country Link
KR (1) KR100791296B1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009139966A1 (en) * 2008-05-16 2009-11-19 Microsoft Corporation Scheduling collections in a scheduler
KR100958303B1 (ko) * 2007-12-12 2010-05-19 한국전자통신연구원 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법
CN102193826A (zh) * 2011-05-24 2011-09-21 哈尔滨工程大学 一种异构多核处理器高效任务调度方法
CN103019838A (zh) * 2012-11-14 2013-04-03 清华大学 一种基于多dsp处理器平台的分布式实时多任务操作系统
KR101465657B1 (ko) * 2014-03-10 2014-12-10 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534139B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534137B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534138B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
CN114203127A (zh) * 2021-12-16 2022-03-18 东风电子科技股份有限公司 针对点阵液晶屏进行数据输出显示的改进方法、装置、处理器及其计算机可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102442921B1 (ko) 2017-12-11 2022-09-13 삼성전자주식회사 디지털 시그널 프로세서(dsp)의 태스크 관리 효율을 높일 수 있는 전자 장치

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021094A (ja) 1996-07-08 1998-01-23 Mitsubishi Electric Corp リアルタイム制御方式
KR19980027320A (ko) * 1996-10-15 1998-07-15 김광호 멀티 프로세서 컴퓨터 시스템
KR100298212B1 (ko) * 1997-12-17 2001-08-07 이계철 우선순위역전현상을해결하기위한실시간태스크스케쥴링방법
KR100401613B1 (ko) * 2000-12-26 2003-10-11 현대자동차주식회사 범용 운영체제의 실시간 처리방법
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
KR100471746B1 (ko) * 2002-07-26 2005-03-16 재단법인서울대학교산학협력재단 연성 실시간 태스크 스케줄링 방법 및 그 기록매체
KR100988395B1 (ko) * 2003-02-18 2010-10-18 마이크로소프트 코포레이션 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321876B2 (en) 2007-12-12 2012-11-27 Electronics And Telecommunications Research Institute System and method of dynamically loading and executing module devices using inter-core-communication channel in multicore system environment
KR100958303B1 (ko) * 2007-12-12 2010-05-19 한국전자통신연구원 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법
US8561072B2 (en) 2008-05-16 2013-10-15 Microsoft Corporation Scheduling collections in a scheduler
WO2009139966A1 (en) * 2008-05-16 2009-11-19 Microsoft Corporation Scheduling collections in a scheduler
CN102193826A (zh) * 2011-05-24 2011-09-21 哈尔滨工程大学 一种异构多核处理器高效任务调度方法
CN102193826B (zh) * 2011-05-24 2012-12-19 哈尔滨工程大学 一种异构多核处理器高效任务调度方法
CN103019838A (zh) * 2012-11-14 2013-04-03 清华大学 一种基于多dsp处理器平台的分布式实时多任务操作系统
CN103019838B (zh) * 2012-11-14 2015-07-08 清华大学 一种基于多dsp处理器平台的分布式实时多任务操作系统
KR101465657B1 (ko) * 2014-03-10 2014-12-10 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534139B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534137B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
KR101534138B1 (ko) * 2014-08-27 2015-07-24 성균관대학교산학협력단 가상머신을 위한 협력 스케줄링 방법
CN114203127A (zh) * 2021-12-16 2022-03-18 东风电子科技股份有限公司 针对点阵液晶屏进行数据输出显示的改进方法、装置、处理器及其计算机可读存储介质

Also Published As

Publication number Publication date
KR100791296B1 (ko) 2008-01-04

Similar Documents

Publication Publication Date Title
KR100791296B1 (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
JP4056471B2 (ja) プロセッサに譲渡するためのシステム
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US9135060B2 (en) Method and apparatus for migrating task in multicore platform
JP5466568B2 (ja) 資源管理方法、資源管理プログラム、および、資源管理装置
KR101626378B1 (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
CN101310257A (zh) 多处理器系统和用于使计算机执行多处理器系统的控制方法的程序
US10248456B2 (en) Method and system for providing stack memory management in real-time operating systems
KR20210095690A (ko) 리소스 관리 방법과 장치, 전자 디바이스 및 기록 매체
US20130097382A1 (en) Multi-core processor system, computer product, and control method
CN115237556A (zh) 调度方法及装置、芯片、电子设备及存储介质
WO2013145199A1 (ja) 仮想計算機のスケジュール方法
US7225443B2 (en) Stack usage in computer-related operating systems
JP4017005B2 (ja) 演算装置
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
JP2005327007A (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
CN112948069A (zh) 用于运行计算单元的方法
JP2003186686A (ja) リソース制御装置、方法及び記憶媒体
KR100676671B1 (ko) 유저 쓰레드 관리 장치 및 그 방법
KR100401560B1 (ko) 운영체제의 커널 스택 동적 할당 방법
KR102575773B1 (ko) 대칭적 인터페이스를 이용하여 외부 서비스 요청 처리가 가능한 프로세서
CN110333899B (zh) 数据处理方法、装置和存储介质
WO2022168661A1 (ja) スケジューラ、スケジューリング方法、及び、コンピュータ読み取り可能な記憶媒体
US8566829B1 (en) Cooperative multi-level scheduler for virtual engines
JP2011257973A (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
LAPS Lapse due to unpaid annual fee