KR101366075B1 - 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치 - Google Patents

멀티코어 플랫폼에서의 태스크 이동 방법 및 장치 Download PDF

Info

Publication number
KR101366075B1
KR101366075B1 KR20070134452A KR20070134452A KR101366075B1 KR 101366075 B1 KR101366075 B1 KR 101366075B1 KR 20070134452 A KR20070134452 A KR 20070134452A KR 20070134452 A KR20070134452 A KR 20070134452A KR 101366075 B1 KR101366075 B1 KR 101366075B1
Authority
KR
South Korea
Prior art keywords
task
core
data
input
codes
Prior art date
Application number
KR20070134452A
Other languages
English (en)
Other versions
KR20090066765A (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 KR20070134452A priority Critical patent/KR101366075B1/ko
Priority to US12/216,996 priority patent/US9135060B2/en
Publication of KR20090066765A publication Critical patent/KR20090066765A/ko
Application granted granted Critical
Publication of KR101366075B1 publication Critical patent/KR101366075B1/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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Abstract

본 발명은 멀티코어 시스템에서 각각의 태스크를 적당한 코어에서 수행되도록 이동시키는 방법 및 장치에 관한 것으로, 제 1 코어에서 수행 중인 태스크의 코드들을 제 2 코어로 전송하고, 이 전송의 동작과 중첩시켜 제 1 코어에서 태스크를 수행하고, 전송된 코드들에 기초하여 제 2 코어에서 태스크의 수행을 속행한다.
멀티코어, 태스크, 임베디드 시스템

Description

멀티코어 플랫폼에서의 태스크 이동 방법 및 장치{Method and apparatus for migrating task in multicore platform}
본 발명은 멀티코어가 사용되는 모바일 디바이스, 멀티미디어 디바이스, 홈 디바이스 등의 임베디드 시스템을 구동하기 위한 운영체제에 관한 것으로 특히, 멀티코어가 사용되는 컴퓨터, 노트북 등의 컴퓨터 시스템을 구동하기 위한 운영체제에서 각각의 태스크를 적당한 코어에서 수행되도록 이동시키는 방법 및 장치에 관한 것이다.
그동안 코어의 성능/속도 경쟁을 통해서 발전해오던 프로세서 기술이 최근에는 싱글 코어의 성능이 한계에 다다르면서 다수의 코어들을 가지는 멀티코어(multicore) 플랫폼의 중요성이 점차 증가되고 있다. 게다가 추가적으로는 수십~수백 개의 코어가 사용되는 매니코어(manycore) 플랫폼으로 발전할 것으로 예상되고 있다.
현재 멀티코어 플랫폼에서 멀티태스킹(multi-tasking)을 수행하기 위하여 운영체제는 수행하고자 하는 태스크들 각각을 각각의 코어에 할당하고 각각의 태스크의 우선순위에 따라 각각의 태스크를 스케줄링한다. 이때, 각 태스크가 다수의 코 어 중 어느 코어에서 수행될 지를 결정하고, 각 태스크를 해당 코어에 할당하는 방법은 크게 정적인(static) 방법과 동적인(dynamic) 방법으로 나누어 볼 수 있다.
먼저 정적인 방법을 살펴보면, 정적인 방법에서는 태스크가 수행될 코어가 정적으로 고정되어 변화하지 않는다. 즉, 최초에 하나의 태스크를 하나의 코어에 할당하고 나면 그 이후에는 그 태스크가 완료될 때까지 해당 코어에서 그 동작을 수행한다. 다음으로 동적인 방법을 살펴보면, 동적인 방법에서는 시스템의 로드(load)나 응용의 구성 변경에 따라 태스크가 여러 코어를 이동하면서 수행된다. 즉, 최초에 하나의 태스크를 소정의 코어에 할당을 하였더라도 이후의 상황에 따라서 해당 태스크를 다른 코어로 이동시켜 수행되도록 할 수 있다.
이상에서 살펴본 바와 같이, 정적인 방법은 태스크의 이동이 없어서 그 스케줄링이 단순한 장점을 가지지만 다수의 코어를 능동적으로 변화시킬 수 없기 때문에 코어들 각각에 대한 이용률(utilization)이 떨어지고 동적인 환경 변화에 대처할 수 없는 단점을 가진다. 사용자의 다양한 요구에 맞추기 위해서는 유연성(flexibility) 있는 시스템이 필요하게 되는데, 이 경우에는 시스템의 로드나 응용의 구성 변경에 동적으로 대처할 수 있는 방법이 필요하다. 이를 위해서 동적인 방법을 통해 태스크를 수행하도록 한다.
그런데, 동적으로 태스크의 할당을 변화시키기 위해서는 태스크를 최초에 할당된 소정의 코어에서 이후 다른 코어로 이동시켜야(migration) 하는데 이때 이동에 의해 발생하는 자원의 낭비(migration cost)를 줄이는 것이 매우 중요하다. 특히, 멀티미디어 태스크 등 실시간 태스크가 사용되는 임베디드 시스템에서는 태스 크 이동으로 인하여 서비스가 중단되지 않고 수행되어야 한다.
본 발명이 이루고자 하는 기술적 과제는 멀티코어 플랫폼에서 태스크가 수행을 멈추지 않고 한 코어에서 다른 코어로 태스크를 이동할 수 있도록 하는 방법 및 장치를 제공하고자 한다. 또한, 상기된 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
상기된 기술적 과제를 해결하기 위하여, 본 발명에 따른 다수의 코어들을 포함하는 멀티코어 플랫폼에서의 태스크 이동 방법은 상기 코어들 중 제 1 코어에서 수행 중인 태스크의 코드들을 상기 코어들 중 제 2 코어로 전송하는 단계; 상기 전송의 동작과 중첩시켜 상기 제 1 코어에서 상기 태스크를 수행하는 단계; 및 상기 전송된 코드들에 기초하여 상기 제 2 코어에서 상기 태스크의 수행을 속행하는 단계를 포함한다.
상기된 다른 기술적 과제를 해결하기 위하여, 본 발명은 상기된 움직임 보상 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
상기된 또 다른 기술적 과제를 해결하기 위하여, 본 발명에 따른 다수의 코어들을 포함하는 멀티코어 플랫폼에서의 태스크 이동 장치는 현재 수행 중인 태스크의 코드들을 전송하고, 상기 전송의 동작과 중첩시켜 상기 태스크를 수행하는 제 1 코어; 및 상기 전송된 코드들에 기초하여 상기 태스크의 수행을 속행하는 제 2 코어를 포함한다.
본 발명의 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
현재 멀티코어 플랫폼에서 멀티태스킹(multi-tasking)을 수행하기 위하여 운영체제는 수행하고자 하는 태스크들 각각을 각각의 코어에 할당하고 각각의 태스크의 우선 순위에 따라 각각의 태스크를 스케줄링한다. 이때, 태스크가 다수의 코어 중 어느 코어에서 수행될지를 결정하고, 각 태스크를 해당 코어에 할당하는 방법은 크게 정적인(static) 방법과 동적인(dynamic) 방법으로 나누어 볼 수 있고, 멀티 코어 시스템에서의 태스크의 이동에 대해서 좀 더 상세히 알아보면 다음과 같다.
우선, 코어 간의 태스크 이동을 위해서는 태스크가 수행되던 상태를 나타내는 정보를 이전 코어에서 다음에 수행될 코어로 모두 이동시켜야 한다. 이러한 상태 정보에는 태스크가 사용하던 코어의 레지스터 파일(register file) 정보뿐만 아니라, 태스크가 사용하던 메모리의 내용도 함께 포함된다. 일반적으로, 멀티 코어 플랫폼에서는 캐쉬(cache)이외에 코어 별로 스크래치패드 메모리(SPM: ScratchPad Memory)와 같은 로컬 메모리(local memory)가 사용된다. 스크래치패드 메모리는 캐쉬처럼 하드웨어에 의해 일관성(consistency)이 유지되지 않기 때문에 응용 프로그램이나 운영체제에서 소프트웨어적으로 필요한 데이터를 DRAM이나 다른 메모리로부터 가지고 와야 한다. 스크래치패드 메모리는 하드웨어 구성에 따라 수백KB를 차지하므로, 메모리의 내용을 이동시키는 비용을 줄이는 것이 중요하다.
이러한 메모리의 내용에 대한 이동을 위해서, 기존 방법에서는 전체 복사(total copy), 선행 복사(pre-copy), 디맨드 페이지(demand page) 방법 등이 제안되었다. 여기서, 전체 복사는 태스크의 수행을 일시적으로 중단하고 로컬 메모리의 내용 등을 포함한 모든 정보를 이동시킨 후, 새로운 코어에서 태스크의 수행을 속행(resume)하는 방법이다. 한편, 선행 복사는 로컬 메모리의 페이지 수정이 일정 수준 이하로 내려갈 때까지 태스크 수행과 로컬 메모리의 내용 이동을 병행하다가 일정 수준 이하가 되면 태스크의 수행을 중단하고, 나머지를 이동시키는 방법이다. 마지막으로, 디멘드 페이지는 가상 메모리의 디맨드 페이징(demand paging) 방법을 사용하여 태스크를 바로 이동시킨 후 필요한 메모리 내용을 페이지 폴트(page fault)가 발생할 때마다 복사해 오는 방법이다.
이러한 종래의 메모리 내용에 대한 이동은 주로 분산 시스템에서 빠른 태스크 이동을 위해 제안되었다. 그밖에도, 멀티코어 플랫폼에서 스케줄링에 따라 수행될 태스크의 데이터를 미리 로딩하는 방법을 사용하여, 이와 같은 로딩에 의해 태스크 수행이 멈추는 시간을 줄이는 방법이 제안되었다.
전체 복사(total copy), 선행 복사(pre-copy), 디멘드 페이지(demand page) 방법은 주로 실 시간성이 요구되지 않는 분산 시스템에서 사용되는 방법으로 멀티코어 플랫폼에는 적합하지 않다. 특히, 전체 복사 방법은 태스크가 사용하는 로컬 메모리의 내용 전체를 복사하는 동안 태스크의 수행이 멈춰 있어야 하므로 태스크 수행이 오래 동안 중단된다. 또한, 선행 복사 방법은 동일한 로컬 메모리의 내용에 대한 복사가 여러 번 일어날 수 있으므로 메모리 복사에 의한 오버헤드가 크다. 특히, 멀티코어 플랫폼에서는 태스크에 대한 데이터를 로컬 메모리의 입력 버퍼에 저장한 후 이것을 처리하여 출력 버퍼에 저장하는 작업을 반복하는데, 이 데이터에 대한 고려가 없이 메모리의 내용 전체를 복사함에 따라 불필요한 데이터의 이동이 발생하게 된다. 또한, 디멘드 페이지 방법은 가상 메모리 하드웨어가 제공되어야 하는데, 임베디드 시스템에서는 많은 경우 이를 제공하지 않고 있어 사용되기 어렵다.
한편, 멀티코어 플랫폼에서 스케줄링에 따라 수행될 태스크 데이터를 미리 로딩하는 방법은 주로 태스크가 새로 로딩될 때 로딩 시간을 이전 태스크의 수행시간과 중첩(overlap)시켜 성능을 향상시키는 방법으로 태스크의 수행 중에 태스크 중단 없이 태스크를 이동시키는 것과는 상이하다.
도 1은 본 발명의 일 실시예가 적용되는 멀티코어/매니코어 플랫폼의 구성도이다. 도 1을 참조하면, 본 실시예가 적용되는 멀티코어/매니코어 플랫폼은 제 1 코어(11), 제 1 스크래치패드 메모리(12), 제 2 코어(21), 제 2 스크래치패드 메모리(22), 제 3 코어(31), 제 3 스크래치패드 메모리(32), ..., 제 N 코어(41), 제 N 스크래치패드 메모리(42), DRAM(5), DMA(Direct Memory Access)(6), H/W 모듈(7) 및 통신 네트워크(8)로 구성된다. 도 1에 도시된 각 코어는 특정 태스크를 수행한다. 본 실시예에서, 코어들은 동종의(homogeneous) 코어들로 구성될 수도 있고, CPU(Central Processing unit), DSP(Digital signal processor), 재구성 가능한 프로세서(Reconfigurable Processor, RP) 등의 이종의(heterogeneous) 코어들로 구성될 수 있다.
또한, 각 코어는 스크래치패드 메모리와 같은 로컬 메모리를 가지고 있으며, 여기에 태스크 수행에 필요한 코드들과 데이터가 저장된다. 즉, 각 코어는 태스크의 코드들과 데이터를 DRAM(5)으로부터 로컬 메모리에 복사한 후, 이것에 기초하여 태스크를 수행한다. 각 코어는 DRAM(5)에 비해 로컬 메모리에 보다 빨리 접근할 수 있기 때문에 태스크를 빠르게 수행할 수 있다. 어떤 코어에서 다른 코어로 태스크를 이동시키기 위해서는 로컬 메모리의 내용 등을 포함한 태스크의 현재 수행 상태를 새로운 코어로 옮겨야 한다. H/W 모듈(7)은 멀티코어/매니코어 플랫폼 특유의 기능을 지원한다. 멀티코어/매니코어 플랫폼이 동영상 재생 장치라면, H/W 모듈(7)은 동영상 코덱 모듈이 될 수 있다. 또한, 통신 네트워크(8)는 도 1에 도시된 구성 요소들을 연결하며, 버스의 형태로 구현될 수 있다.
도 2는 도 1에 도시된 멀티코어/매니코어 플랫폼 중 코어들이 매쉬(mesh) 형태로 연결된 구조의 예시도이다. 도 2에 도시된 매쉬 형태 이외에도 멀티코어/매니코어 플랫폼의 코어들은 다양한 연결 방식을 가질 수 있다. 도 2를 참조하면, 코어들간의 연결 방식에 따라 코어들간의 통신 속도는 다르게 나타날 수 있음을 알 수 있다. 즉, 서로 가까운 곳에 배치된 코어들간의 통신이 멀리 배치된 코어간의 통신 보다 더 빠르다. 따라서, 각 코어에 태스크들을 배치할 때에도 태스크들간의 통신 양에 따라 그 배치를 다르게 해야 한다. 이를 적용하면, 시스템의 로드나 응용의 조합에 따라 태스크의 배치가 성능에 영향을 주는 것을 알 수 있다. 따라서, 최적의 성능을 보일 수 있도록 시스템을 구성하기 위해서는 태스크들의 배치를 코어들의 배치 환경에 맞게 변화시켜야 한다.
도 3 및 도 4는 일반적인 멀티 코어 시스템에서의 태스크 이동 모습을 도시한 도면이다. 도 3 및 도 4에 도시된 바와 같이, 일반적으로 제 1 코어(110)로부터 제 2 코어(210)로 태스크를 이동시키기 위해서는, 제 1 코어(110)는 태스크의 수행을 일단 중단하고, 로컬 메모리(120)의 내용 등을 포함한 태스크의 현재 수행 상태를 나타내는 정보를 모두 제 2 코어(210)로 옮긴 후에 제 2 코어(210)에서 태스크 수행을 속행한다. 이때, 로컬 메모리는 하드웨어 구성에 따라 수백 KB가 되므로 그 내용이 이동되는 동안 태스크 수행이 중단되게 된다.
도 5는 본 발명의 일 실시예가 적용되는 로컬 메모리의 구조에 대한 예시도이다. 도 5에 도시된 실시예에서는 하나의 태스크가 하나의 로컬 메모리를 모두 사용하고 있지만, 다른 실시예로 다수의 태스크가 하나의 로컬 메모리를 나누어 사용할 수도 있도록 구성하는 것도 가능하다. 도 5를 참조하면, 태스크가 사용하는 로컬 메모리는 태스크의 코드들이 저장되는 영역, 읽기 전용 데이터(Read Only data)가 저장되는 영역, 읽기 쓰기 데이터(Read Write data)가 저장되는 영역, 입력(input) 버퍼 및 출력(output) 버퍼로 구성된다. 이와 같은 영역들은 로컬 메모리의 논리적 맵에 해당한다.
태스크는 일련의 명령어들(instruction)의 집합이다. 태스크의 코드들은 이 명령어들을 나타낸다. 태스크의 읽기 전용 데이터는 코어에 의한 태스크 수행에 필요한 데이터 중 태스크 수행에 의해 변경되지 않는 데이터를 말한다. 태스크의 읽기 쓰기 데이터는 코어에 의한 태스크 수행에 필요한 데이터 중 태스크 수행에 의해 변경되는 데이터를 말한다. 입력 버퍼에는 태스크에 대해 입력되는 데이터가 저장된다. 출력 버퍼에는 태스크 수행에 따라 입력 버퍼에 저장된 데이터가 처리된 후, 그 처리 결과가 저장된다.
로컬 메모리에 관련된 태스크의 수행 동작을 살펴보면, 코어는 태스크의 수행 과정에 필요한 데이터를 입력 버퍼로부터 읽어서, 이것을 처리한 후 그 결과를 출력 버퍼에 저장한다. 이때, 태스크의 상태 변화는 읽기 쓰기 데이터의 형태로 로컬 메모리에 저장된다. 태스크의 코드들과 읽기 전용 데이터는 태스크의 수행에 따라 그 값이 변경되지 않기 때문에 태스크의 수행과 무관하게 어떤 코어에서 다른 코어로 이동시킬 수 있다. 그리고, 입력 버퍼와 출력 버퍼의 데이터는 현재 이것을 처리할 코어에 의해 접근될 수 있으면 된다. 이와 같이, 로컬 메모리에 저장된 데이터를 그 데이터의 속성에 따라 이동시키기 위해서는 같은 속성의 데이터들이 도 5와 같이 연속적으로 모여 있는 것이 좋다. 그러나, 반드시 연속되어 있을 필요는 없음을 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
도 6은 본 발명의 실시예에 따른 멀티 코어 시스템에서의 태스크 이동 모습을 도시한 도면이다. 도 6을 참조하면, 본 실시예에서는 상기된 내용에 착안하여 태스크 수행에도 변하지 않는 코드와 읽기 전용 데이터를 태스크 수행과 함께 중첩시켜서 미리 이동시키고 태스크 수행에 따라 변하는 읽기 쓰기 데이터를 이동시킬 때만 태스크 수행을 일시적으로 중단시켜서 태스크 수행이 중단되는 구간을 최소화한다. 이때, 태스크 수행에 따라 처리될 입력 데이터는 새로운 코어의 로컬 메모리로 전달되도록 설정하고, 현재 코어에서는 남아 있는 입출력 데이터만 처리하도록 한다. 따라서, 태스크 이동 중간에 일시적으로 현재 코어 및 새로운 코어에서 태스크가 동시에 수행되게 된다. 현재 코어에 남아있는 입출력 데이터의 처리가 종료되면, 태스크 이동이 완전히 종료되고 태스크가 사용하던 현재 코어의 로컬 메모리는 다른 태스크가 사용할 수 있다.
도 6에 도시된 실시예를 도 1에 도시된 멀티코어/매니코어 플랫폼에 적용하여, 본 실시예의 동작을 설명하면 다음과 같다. 태스크는 제 1 코어(11)로부터 제 2 코어(21)로 이동한다고 가정한다. 제 1 코어(11)는 현재 수행 중인 태스크의 코드들 및 읽기 전용 데이터를 제 2 코어(21)로 전송하고, 이 전송의 동작과 중첩시켜 태스크의 코드들, 읽기 전용 데이터, 읽기 쓰기 데이터 등에 기초하여 이 태스크에 대해 이미 입력된 데이터를 처리함으로써 태스크를 수행한다. 제 1 코어(11)는 이 태스크에 대해 이미 입력된 데이터에 대한 처리가 완료되면 태스크의 수행을 중단하고, 태스크들의 읽기 쓰기 데이터를 제 2 코어(21)로 전송한다. 제 2 코어(21)는 제 1 코어(11)로부터 전송된 코드들, 읽기 전용 데이터, 읽기 쓰기 데이터 등에 기초하여 태스크에 대해 입력될 데이터를 처리함으로써 중단된 태스크의 수행을 속행한다.
도 7은 본 발명의 실시예에 따른 멀티 코어 시스템에서의 코어의 상세 구성도이다. 도 7에는 도 1에 도시된 코어들 중 제 1 코어(11)의 구성이 예로 들어 도시되어 있으나, 다른 코어에 대해서도 마찬가지로 적용된다. 도 7을 참조하면, 제 1 코어(11)는 태스크 수행부(111), 이동 관리자(migration manager)(112), 스케줄러(scheduler)(113), 태스크 할당 테이블(task allocation table)(114) 및 통신 관리자(communication manager)(115)로 구성된다. 도 7에는 제 1 코어(11)의 구성도가 복잡하고 장황하게 되는 것을 방지하기 위하여, 본 실시예에 관련된 구성만이 도시되어 있으나, 도 7에 도시된 구성 외에 다른 구성도 포함될 수 있음은 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
태스크 수행부(111)는 태스크를 수행한다. 스케줄러(112)는 각 코어의 로드나 응용의 구성에 따라 태스크가 어떤 코어로부터 어떤 코어로 이동할지를 결정한다. 예를 들어, 제 1 코어(11)의 로드가 제 2 코어(21)의 로드보다 크다면, 스케줄러(112)는 태스크 수행부(111)에 의해 현재 수행 중인 태스크에 대해 앞으로 입력될 데이터의 처리 주체를 제 2 코어(21)로 결정한다. 이동 관리자(113)는 스케줄러(112)에서의 결정에 따라 각 태스크의 처리 주체로서 어떤 코어가 할당되었는지를 나타내는 태스크 할당 테이블(114)을 갱신한다. 통신 관리자(115)는 이동 관리자(113)에 의해 갱신된 태스크 할당 테이블(114)을 참조하여 태스크에 관련된 데이터를 어느 코어로 전송할지를 결정한다. 상기된 예에서, 통신 관리자(115)는 이동 관리자(113)에 의해 갱신된 태스크 할당 테이블을 참조하여 제 2 코어(21)로 태스크의 코드들 및 읽기 전용 데이터를 전송한다.
도 8은 도 7에 도시된 태스크 할당 테이블(114)의 구조를 도시한 도면이다.
도 8을 참조하면, 도 7에 도시된 태스크 할당 테이블(114)은 태스크의 아이디가 기록되는 ID 필드, 태스크의 현재 상태가 기록되는 State 필드, 태스크에 현재 할당된 코어의 아이디가 기록되는 Core 필드, 태스크가 이동할 코어의 아이디가 기록되는 Migration 필드로 구성된다. 물론, 태스크 할당 테이블에는 상기된 필드 이외에도 다른 정보가 기록되는 필드 등을 포함할 수 있다.
이동 관리자(113)는 스케줄러(112)에 의해 태스크에 대해 앞으로 입력될 데이터의 처리 주체가 제 2 코어(21)로 결정되면, 제 1 코어(11)의 State 필드의 값을 실행(running) 상태로부터 이동(migrating) 상태로 바꾸고, Migration 필드에 태스크가 이동할 코어의 아이디를 기록한다. 통신 관리자(115)는 태스크 할당 테이블(114)을 참조한 결과, 어떤 아이디를 갖는 태스크의 State 필드의 값이 이동 상태이면, Migration 필드에 기록된 아이디를 갖는 코어로 태스크에 대해 앞으로 입력될 데이터를 전송한다. 태스크 이동이 완료되면, 즉 제 1 코어(11)에 연결된 제 1 스크래치패드 메모리(12)의 입력 버퍼가 비게 되면, 이동 관리자(113)는 Core 필드의 값을 태스크가 이동된 코어의 아이디로 변경하고, State 필드의 값을 이전 상태로 변경한다.
도 9-도 12는 본 발명의 일 실시예에 따른 멀티 코어 시스템에서의 로컬 메모리의 상태 변화를 순차적으로 도시한 도면이다.
도 9를 참조하면, 제 1 코어(11)는 제 2 코어(2)로의 태스크 이동이 결정되면, 제 1 코어(11)에 연결된 제 1 스크래치패드 메모리(12)에 저장된 태스크의 코 드들과 읽기 전용 데이터를 제 2 코어(21)에 연결된 제 2 스크래치패드 메모리(22)로 옮긴다. 특히, 본 실시예에 따르면, 제 1 코어(11)는 DMA(6)를 통하여 태스크의 코드들과 읽기 전용 데이터를 전송함으로써 이 전송의 동작과 중첩시켜 태스크를 수행할 수 있도록 한다. 현재 태스크를 수행 중인 코어와 태스크가 이동해야 할 코어는 반드시 동종의 코어일 필요는 없다. 동종이거나 인스트럭션이 호환되는 코어들간에는 현재 코어에서 사용 중인 코드들을 그대로 복사하여 새로운 코어에서 사용하면 되지만, 서로 다른 코어들간에는 새로운 코어에서 DRAM으로부터 코드들을 로드한 후, 새로운 코어에서 코드들을 실행하기 위한 환경에 맞게 이것들을 변경해야 한다.
도 10에는 본 실시예에 따라 현재 코어의 입력 버퍼에 들어오는 새로운 데이터가 새로운 코어로 전송되는 모습이 도시되어 있다. 태스크에 대해 이미 입력된 데이터는 제 1 코어(11)에 연결된 제 1 스크래치패드 메모리(12)의 입력 버퍼에 저장되어 있다. 이 후, 제 1 코어(11)는 제 2 코어(21)로의 태스크 이동이 결정되면, 태스크에 대해 앞으로 입력될 데이터의 저장 위치를 제 2 코어(21)에 연결된 제 2 스크래치패드 메모리(22)의 입력 버퍼로 설정함으로써 이 태스크에 대해 이후 입력으로 들어오는 데이터는 제 2 코어(21)로 전송이 되어 제 2 코어(21)에서 처리되도록 한다. 제 2 코어(21)는 제 2 코어(21)에 연결된 스크래치패드 메모리(22)의 입력 버퍼에 저장된 데이터를 처리함으로써 태스크의 수행을 속행한다. 도 10을 참조하면, 제 1 코어(11)에 연결된 제 1 스크래치패드 메모리(12)의 입력 버퍼에 I1, I2가 큐잉(queuing)되어 있는 상태에서 태스크 이동이 결정되면, I3부터는 제 2 코 어(21)에 연결된 제 2 스크래치패드 메모리(22)의 입력 버퍼에 저장됨을 알 수 있다.
도 11에는 본 실시예에 따라 현재 코어의 입력 버퍼에 큐잉되어 있는 데이터의 처리가 완료된 후에 태스크의 수행을 일시적으로 중단하고 태스크의 현재 상태를 포함하는 읽기 쓰기 데이터를 새로운 코어로 전송하는 모습이 도시되어 있다. 도 11을 참조하면, 제 1 코어(11)는 태스크에 대해 이미 입력된 데이터에 대한 처리가 완료되면, 즉 제 1 코어(11)에 연결된 제 1 스크래치패드 메모리(12)의 입력 버퍼가 비게 되면, 태스크의 수행을 중단하고, 이 제 1 스크래치패드 메모리(12)에 저장된 읽기/쓰기 데이터를 제 2 코어(21)에 연결된 제 2 스크래치패드 메모리(22)로 옮긴다. 이 과정에서도 태스크에 대해 새로 입력되는 데이터는 계속적으로 제 2 코어(21)에 연결된 제 2 스크래치패드 메모리(22)의 입력 버퍼에 저장된다. 도 11에는 읽기 쓰기 데이터가 이동하는 과정에 제 2 스크래치패드 메모리(22)의 입력 버퍼에 I4가 계속 큐잉되는 모습이 도시되어 있다.
도 12에는 본 실시예에 따라 현재 코어는 이미 처리된 출력 데이터를 DRAM이나 다른 코어로 전송하는 작업을 계속 수행하고 새로운 코어는 새로운 데이터를 처리하는 모습이 도시되어 있다. 도 12를 참조하면, 제 1 코어(11)는 제 1 코어(11)에 연결된 제 1 스크래치패드 메모리(12)의 출력 버퍼의 O2를 출력하고, 제 2 코어(21)는 제 2 코어(21)에 연결된 제 2 스크래치패드 메모리(22)의 입력 버퍼의 I3을 처리함으로써 O3을 생성한다. 제 1 코어(11)의 입출력 버퍼가 모두 비어지면 태스크 이동이 완료되고, 새로운 태스크가 제 1 코어(11)에 연결된 제 1 스크래치패 드 메모리(12)를 사용할 수 있다.
도 13은 본 발명의 일 실시예에 따른 멀티 코어 시스템에서의 태스크 이동 방법의 흐름도이다. 도 13을 참조하면, 본 실시예에 따른 태스크 이동 방법은 도 1에 도시된 멀티코어/매니코어 플랫폼에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하 생략된 내용이라 하더라도 멀티코어/매니코어 플랫폼에 관하여 이상에서 기술된 내용은 본 실시예에 따른 태스크 이동 방법에도 적용된다.
101 단계에서 제 1 코어(11)는 태스크의 이동이 결정되면, 멀티코어/매니코어 플랫폼의 코어들 중 제 1 코어(11)에서 수행 중인 태스크의 코드들 및 읽기 전용 데이터를 멀티코어/매니코어 플랫폼의 코어들 중 제 2 코어(21)로 전송한다. 102 단계에서 제 1 코어(11)는 태스크에 대해 앞으로 입력될 데이터의 저장 위치를 제 2 코어(21)에 연결된 제 2 스크래치 패드 메모리(22)의 입력 버퍼로 설정한다. 103 단계에서 제 1 코어(11)는 제 1 코어(11)에 연결된 제 1 스크래치패드 메모리(11)의 입력 버퍼가 비어 있는지를 확인한다. 104 단계에서 제 1 코어(11)는 103 단계에서의 확인 결과, 제 1 스크래치패드 메모리(11)의 입력 버퍼가 비어 있지 않으면, 101 단계에서의 전송의 동작과 중첩시켜 태스크를 수행한다.
105 단계에서 제 1 코어(11)는 103 단계에서의 확인 결과, 제 1 스크래치패드 메모리(11)의 입력 버퍼가 비어 있으면, 제 1 코어(11)에서의 태스크의 수행을 중단한다. 106 단계에서 제 1 코어(11)는 태스크의 읽기/쓰기 데이터를 제 2 코어(21)로 전송한다. 107 단계에서 제 1 코어(11)는 제 1 코어(11)로부터 전송된 코드들, 읽기 전용 데이터 및 읽기/쓰기 데이터에 기초하여 105 단계에서 중단된 태 스크의 수행을 속행한다.
이와 같이 멀티코어/매니코어 플랫폼에서 태스크가 동적으로 코어를 이동하는 경우 메모리 이동에 의한 오버헤드가 발생할 수 있다. 상기된 바와 같은 본 실시예에 따르면, 태스크가 사용하는 데이터의 속성에 따라 코어들간의 데이터 이동이 태스크 수행과 중첩되어 이루어질 수 있도록 함으로써 태스크 수행의 중단을 최소화하였고, 그 결과 태스크 수행이 연속적으로 이루어질 수 있도록 하였다. 나아가, 상기된 바와 같이 태스크 이동에도 불구하고 태스크 수행이 연속적으로 이루어짐에 따라 태스크 이동에 의한 코어의 동적 재 할당이 원활하게 이루어지게 되고, 그 결과 시스템 로드나 응용의 조합에 맞게 태스크 할당을 조절하여 코어의 이용률을 높일 수 있고, 이에 따라 적은 수의 코어들로 멀티코어 시스템을 구축할 수 있게 되어 하드웨어 비용을 감축시킬 수 있게 된다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일 실시예가 적용되는 멀티코어/매니코어 플랫폼의 구성도이다.
도 2는 도 1에 도시된 멀티코어/매니코어 플랫폼 중 코어들이 매쉬 형태로 연결된 구조의 예시도이다.
도 3 및 도 4는 일반적인 멀티 코어 시스템에서의 태스크 이동 모습을 도시한 도면이다.
도 5는 본 발명의 일 실시예가 적용되는 로컬 메모리의 구조에 대한 예시도이다.
도 6은 본 발명의 실시예에 따른 멀티 코어 시스템에서의 태스크 이동 모습을 도시한 도면이다.
도 7은 본 발명의 실시예에 따른 멀티 코어 시스템에서의 코어의 상세 구성도이다.
도 8은 도 7에 도시된 태스크 할당 테이블(114)의 구조를 도시한 도면이다.
도 9-도 12는 본 발명의 일 실시예에 따른 멀티 코어 시스템에서의 로컬 메모리의 상태 변화를 순차적으로 도시한 도면이다.
도 13은 본 발명의 일 실시예에 따른 멀티 코어 시스템에서의 태스크 이동 방법의 흐름도이다.

Claims (15)

  1. 다수의 코어들을 포함하는 멀티코어 플랫폼에서의 태스크 이동 방법에 있어서,
    상기 코어들 중 제 1 코어에서 수행 중인 태스크의 코드들을 상기 코어들 중 제 2 코어로 전송하는 단계;
    상기 전송의 동작과 중첩시켜 상기 제 1 코어에서 상기 코드들에 기초하여 상기 태스크에 대해 이미 입력된 데이터를 처리함으로써 상기 태스크를 수행하는 단계; 및
    상기 전송된 코드들에 기초하여 상기 제 2 코어에서 상기 태스크에 대해 입력될 데이터를 처리함으로써 상기 태스크의 수행을 속행하는 단계를 포함하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 태스크에 대해 이미 입력된 데이터에 대한 처리가 완료되면 상기 제 1 코어에서의 상기 태스크의 수행을 중단하는 단계를 더 포함하고,
    상기 태스크의 수행을 속행하는 단계는 상기 중단된 태스크의 수행을 속행하는 것을 특징으로 하는 방법.
  4. 제 3 항에 있어서,
    상기 태스크에 대해 이미 입력된 데이터는 상기 제 1 코어에 연결된 로컬 메모리의 입력 버퍼에 저장되어 있고,
    상기 태스크에 대해 앞으로 입력될 데이터의 저장 위치를 상기 제 2 코어에 연결된 로컬 메모리의 입력 버퍼로 설정하는 단계를 더 포함하고,
    상기 태스크의 수행을 속행하는 단계는 상기 제 2 코어에 연결된 로컬 메모리의 입력 버퍼에 저장된 데이터를 처리함으로써 상기 중단된 태스크의 수행을 속행하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    상기 제 1 코어에 연결된 로컬 메모리의 입력 버퍼가 비게 되면 상기 제 1 코어에서의 상기 태스크의 수행을 중단하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 전송하는 단계는 상기 제 1 코어에서 수행 중인 태스크의 코드들 및 읽기 전용 데이터를 상기 제 2 코어로 전송하고,
    상기 태스크에 대해 이미 입력된 데이터에 대한 처리가 완료되면 상기 태스크의 읽기/쓰기 데이터를 상기 제 2 코어로 전송하는 단계를 더 포함하고,
    상기 태스크의 수행을 속행하는 단계는 상기 전송된 코드들, 읽기 전용 데이터 및 읽기/쓰기 데이터에 기초하여 상기 태스크의 수행을 속행하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 전송하는 단계는
    상기 태스크에 대해 앞으로 입력될 데이터의 처리 주체를 상기 제 2 코어로 결정하는 단계;
    상기 결정에 따라 각 태스크의 처리 주체로서 어떤 코어가 할당되었는지를 나타내는 태스크 할당 테이블을 갱신하는 단계; 및
    상기 갱신된 태스크 할당 테이블을 참조하여 상기 제 2 코어로 상기 코드 및 읽기 전용 데이터를 전송하는 단계를 포함하는 방법.
  8. 제 1 항 및 제 3 항 내지 제 7 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  9. 다수의 코어들을 포함하는 멀티코어 플랫폼에서의 태스크 이동 장치에 있어서,
    현재 수행 중인 태스크의 코드들을 전송하고, 상기 전송의 동작과 중첩시켜 상기 코드들에 기초하여 상기 태스크에 대해 이미 입력된 데이터를 처리함으로써 상기 태스크를 수행하는 제 1 코어; 및
    상기 전송된 코드들에 기초하여 상기 태스크에 대해 입력될 데이터를 처리함으로써 상기 태스크의 수행을 속행하는 제 2 코어를 포함하는 장치.
  10. 삭제
  11. 제 9 항에 있어서,
    상기 제 1 코어는 상기 태스크에 대해 이미 입력된 데이터에 대한 처리가 완료되면 상기 태스크의 수행을 중단하고,
    상기 제 2 코어는 상기 중단된 태스크의 수행을 속행하는 것을 특징으로 하는 장치.
  12. 제 11 항에 있어서,
    상기 태스크에 대해 이미 입력된 데이터는 상기 제 1 코어에 연결된 로컬 메 모리의 입력 버퍼에 저장되어 있고,
    상기 제 1 코어는 상기 태스크에 대해 앞으로 입력될 데이터의 저장 위치를 상기 제 2 코어에 연결된 로컬 메모리의 입력 버퍼로 설정하고,
    상기 제 2 코어는 상기 제 2 코어에 연결된 로컬 메모리의 입력 버퍼에 저장된 데이터를 처리함으로써 상기 중단된 태스크의 수행을 속행하는 것을 특징으로 하는 장치.
  13. 제 12 항에 있어서,
    상기 제 1 코어는 상기 제 1 코어에 연결된 로컬 메모리의 입력 버퍼가 비게 되면 상기 제 1 코어에서의 상기 태스크의 수행을 중단하는 것을 특징으로 하는 장치.
  14. 제 9 항에 있어서,
    상기 제 1 코어는 상기 제 1 코어에서 수행 중인 태스크의 코드들 및 읽기 전용 데이터를 상기 제 2 코어로 전송하고, 상기 태스크에 대해 이미 입력된 데이터에 대한 처리가 완료되면 상기 태스크의 읽기/쓰기 데이터를 상기 제 2 코어로 전송하고,
    상기 제 2 코어는 상기 전송된 코드들, 읽기 전용 데이터 및 읽기/쓰기 데이터에 기초하여 상기 태스크의 수행을 속행하는 것을 특징으로 하는 장치.
  15. 제 9 항에 있어서,
    상기 제 1 코어는
    상기 태스크에 대해 앞으로 입력될 데이터의 처리 주체를 상기 제 2 코어로 결정하는 스케줄러;
    상기 결정에 따라 각 태스크의 처리 주체로서 어떤 코어가 할당되었는지를 나타내는 태스크 할당 테이블을 갱신하는 이동 관리자; 및
    상기 갱신된 태스크 할당 테이블을 참조하여 상기 제 2 코어로 상기 코드들을 전송하는 통신 관리자를 포함하는 장치.
KR20070134452A 2007-12-20 2007-12-20 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치 KR101366075B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20070134452A KR101366075B1 (ko) 2007-12-20 2007-12-20 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
US12/216,996 US9135060B2 (en) 2007-12-20 2008-07-14 Method and apparatus for migrating task in multicore platform

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20070134452A KR101366075B1 (ko) 2007-12-20 2007-12-20 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20090066765A KR20090066765A (ko) 2009-06-24
KR101366075B1 true KR101366075B1 (ko) 2014-02-21

Family

ID=40790238

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20070134452A KR101366075B1 (ko) 2007-12-20 2007-12-20 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치

Country Status (2)

Country Link
US (1) US9135060B2 (ko)
KR (1) KR101366075B1 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7841436B2 (en) 2008-01-21 2010-11-30 Amigo Mobility International Personal mobility vehicle
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US20090309243A1 (en) * 2008-06-11 2009-12-17 Nvidia Corporation Multi-core integrated circuits having asymmetric performance between cores
US8270962B1 (en) * 2009-10-20 2012-09-18 Sprint Communications Company L.P. Emergency calls on a wireless communication device during a device reboot
US8473723B2 (en) * 2009-12-10 2013-06-25 International Business Machines Corporation Computer program product for managing processing resources
KR101697937B1 (ko) 2010-01-08 2017-02-01 삼성전자주식회사 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
KR101662030B1 (ko) 2010-01-14 2016-10-14 삼성전자주식회사 태스크 이동 시스템 및 그 방법
KR101653204B1 (ko) 2010-03-16 2016-09-01 삼성전자주식회사 멀티 코어 시스템에서 데이터 병렬 처리를 위한 동적 태스크 관리 시스템 및 방법
GB2495417B (en) * 2010-05-14 2017-11-29 Ibm A method for dynamically changing the configuration of a system
JP5488697B2 (ja) * 2010-08-30 2014-05-14 富士通株式会社 マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
JPWO2012098683A1 (ja) * 2011-01-21 2014-06-09 富士通株式会社 スケジューリング方法およびスケジューリングシステム
US8782645B2 (en) 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
KR101901587B1 (ko) * 2011-12-13 2018-10-01 삼성전자주식회사 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치
WO2013101139A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
KR101834195B1 (ko) * 2012-03-15 2018-04-13 삼성전자주식회사 다중코어 시스템 및 로드 밸런싱 방법
US9286116B2 (en) 2012-07-06 2016-03-15 Microsoft Technology Licensing, Llc Multiple core real-time task execution
US9009508B2 (en) * 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US9063906B2 (en) * 2012-09-27 2015-06-23 International Business Machines Corporation Thread sparing between cores in a multi-threaded processor
CN104008013B (zh) * 2013-02-26 2018-02-09 华为技术有限公司 一种核资源分配方法、装置及众核系统
WO2014196976A1 (en) * 2013-06-06 2014-12-11 Empire Technology Development, Llc Shared cache data movement in thread migration
US10275276B2 (en) * 2013-08-19 2019-04-30 International Business Machines Corporation Migrating jobs from a source server from which data is migrated to a target server to which the data is migrated
KR20160004152A (ko) * 2014-07-02 2016-01-12 삼성전자주식회사 멀티 프로세서의 태스크(task) 우선순위 결정 방법 및 이를 구현하는 전자장치
KR102275869B1 (ko) * 2015-02-09 2021-07-12 현대모비스 주식회사 차량 제어 장치 및 차량 제어 방법
GB2538754B (en) * 2015-05-27 2018-08-29 Displaylink Uk Ltd Single-chip multi-processor communication
CN105573129B (zh) * 2015-11-10 2019-04-09 华南理工大学 基于Cordova的跨平台智能家居移动终端
US10037227B2 (en) 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores
US10552205B2 (en) * 2016-04-02 2020-02-04 Intel Corporation Work conserving, load balancing, and scheduling
DE102017124105A1 (de) * 2016-10-24 2018-04-26 Denso Corporation Verfahren zur Portierung einer Single-Core Steuerungssoftware auf ein Multi-Core Steuergerät oder zur Optimierung einer Multi-Core Steuerungssoftware
US10491524B2 (en) 2017-11-07 2019-11-26 Advanced Micro Devices, Inc. Load balancing scheme
CN111381945B (zh) * 2018-12-29 2024-02-09 华为技术有限公司 任务迁移方法及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067331A (ja) 2000-07-14 2001-03-16 Hitachi Ltd マルチプロセッサシステムの無停止プログラム変更方法およびマルチプロセッサシステム
JP2003271404A (ja) 2002-03-19 2003-09-26 Fujitsu Ltd マルチプロセッサシステム
KR20060132852A (ko) * 2004-02-20 2006-12-22 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1675619A4 (en) * 2003-09-29 2010-10-06 Palmetto Pharmaceuticals Llc EXTENDED RELEASE ARGININE FORMULATIONS, METHODS OF MAKING, AND USES
US20060179436A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for providing a task change application programming interface
US7482572B1 (en) * 2005-07-25 2009-01-27 Itt Manufacturing Enterprises, Inc. Transmissive diffuser with a layer of polytetrafluoroethylene on the output surface for use with an on-orbit radiometric calibration
US8006077B2 (en) * 2007-03-29 2011-08-23 Intel Corporation Thread migration control based on prediction of migration overhead

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001067331A (ja) 2000-07-14 2001-03-16 Hitachi Ltd マルチプロセッサシステムの無停止プログラム変更方法およびマルチプロセッサシステム
JP2003271404A (ja) 2002-03-19 2003-09-26 Fujitsu Ltd マルチプロセッサシステム
KR20060132852A (ko) * 2004-02-20 2006-12-22 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치

Also Published As

Publication number Publication date
KR20090066765A (ko) 2009-06-24
US20090165014A1 (en) 2009-06-25
US9135060B2 (en) 2015-09-15

Similar Documents

Publication Publication Date Title
KR101366075B1 (ko) 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
KR101901587B1 (ko) 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치
US5349656A (en) Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information
US5559978A (en) Method for increasing the efficiency of a virtual memory system by selective compression of RAM memory contents
KR100591727B1 (ko) 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 정보처리시스템
US20050132364A1 (en) Method, apparatus and system for optimizing context switching between virtual machines
US9052957B2 (en) Method and system for conducting intensive multitask and multiflow calculation in real-time
EP4239473A1 (en) Container-based application management method and apparatus
US20130060988A1 (en) Method for symmetric live migration of virtual machines
US9086920B2 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
JP2007512632A (ja) アクティビティ情報を用いての仮想マシンの管理
JP2007108981A (ja) ストレージ装置及びボリューム間のデータ交換方法
US5392409A (en) I/O execution method for a virtual machine system and system therefor
US8954969B2 (en) File system object node management
JP2004078322A (ja) タスク管理システム、プログラム、記録媒体、及び制御方法
US20220237016A1 (en) Apparatus for determining resource migration schedule
US7694302B1 (en) Symmetric multiprocessor synchronization using migrating scheduling domains
JP5737298B2 (ja) スケジューリング方法およびスケジューリングシステム
US8010963B2 (en) Method, apparatus and program storage device for providing light weight system calls to improve user mode performance
US20090320036A1 (en) File System Object Node Management
US8424013B1 (en) Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt
CN114371911A (zh) 虚拟机调度方法、装置、电子设备和可读存储介质
KR102076248B1 (ko) 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
KR102563648B1 (ko) 멀티 프로세서 시스템 및 그 구동 방법
JP4872942B2 (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
FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200120

Year of fee payment: 7