KR20110046719A - 복수 코어 장치 및 그의 로드 조정 방법 - Google Patents

복수 코어 장치 및 그의 로드 조정 방법 Download PDF

Info

Publication number
KR20110046719A
KR20110046719A KR1020090103328A KR20090103328A KR20110046719A KR 20110046719 A KR20110046719 A KR 20110046719A KR 1020090103328 A KR1020090103328 A KR 1020090103328A KR 20090103328 A KR20090103328 A KR 20090103328A KR 20110046719 A KR20110046719 A KR 20110046719A
Authority
KR
South Korea
Prior art keywords
core
context
request
task
load
Prior art date
Application number
KR1020090103328A
Other languages
English (en)
Other versions
KR101680109B1 (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 KR1020090103328A priority Critical patent/KR101680109B1/ko
Priority to US12/915,927 priority patent/US20110107344A1/en
Publication of KR20110046719A publication Critical patent/KR20110046719A/ko
Application granted granted Critical
Publication of KR101680109B1 publication Critical patent/KR101680109B1/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/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
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)

Abstract

본 발명은 복수 코어 장치에 관한 것으로, 본 발명의 일 실시 예에 따르는 복수 코어 장치는, 작업(task)이 활동(active) 상태로부터 유휴(sleep) 상태로 전환될 때, 전환되는 작업의 진행 정보를 포함하는 컨텍스트(Context)를 포함하는 저장 요청을 송신하는 제1 코어, 수행 요청을 수신하여 수행 요청에 포함된 컨텍스트에 상응하는 작업을 수행하는 제2 코어 및 제1 코어로부터 저장 요청을 수신하고, 저장 요청에 포함된 컨텍스트를 저장하고, 저장된 컨텍스트 중 하나 이상을 제2 코어에 할당하고, 제2 코어에 대한 컨텍스트의 할당에 따라 제2 코어에 상응하는 컨텍스트가 포함된 수행 요청을 제2 코어에 송신하는 로드 조정 장치를 포함할 수 있다. 본 발명의 일 실시 예에 따르면 복수 코어 장치의 로드를 효율적으로 조정할 수 있고 복수 코어용 운영 체제 개발 비용을 절감할 수 있다.
복수 코어, 멀티 코어, 로드 밸런스, 작업 컨텍스트

Description

복수 코어 장치 및 그의 로드 조정 방법 { Multi-Core Apparatus And Method For Balancing Load Of The Same }
본 발명은 복수 코어 장치 및 그의 로드 조정 방법 및 장치에 관한 것으로, 더욱 상세하게는 복수 코어의 수행 중인 작업에 관한 데이터를 저장 및 제공하여 복수 코어 장치의 로드를 조정하는 장치 및 방법에 관한 것이다.
복수 코어(multi-core) 시스템은 복수의 코어(core)를 사용하는 시스템을 말한다. 최근 임베디드(embedded) 시스템에서, 단일 코어(single-core) 시스템에서의 처리능력(performance)의 예전과 같은 급격한 증가를 기대하기 어렵게 되어, 복수 코어 기반 기술이 점차 주목을 받고 있다.
복수 코어 시스템에서는 하나의 작업(task)이 시간의 흐름에 따라 여러 코어에서 수행될 수 있다. 예를 들어 작업이 실행된 후 처음에는 제1 코어에서 작업이 수행되다가 10초 후부터는 제1 코어에서 수행을 중단하고 제2 코어에서 작업이 계속될 수 있다. 이때 제1 코어의 캐시(cache)에 로드돼 있던 데이터가 쓸모없게 되 고, 제2 코어에서는 캐시에 비해 상대적으로 속도가 느린 새로 외부 메모리 장치로부터 데이터를 다시 로드해야 하는 문제가 있었다.
또한, 복수 코어 시스템을 위해서 종래의 단일 코어용 운영 체제(OS, Operating System)를 대신할 수 있는 복수 코어용 운영 체제를 별도로 개발해야 하는 문제가 있었다. 복수 코어용 운영 체제의 개발은 많은 비용과 시간을 필요로 하며, 안전성의 검증이 어려운 문제가 있다.
또한, 가상화기법(Virtualization) 사용 시 가상 코어(virtual core) 이용을 위하여 가상 코어가 물리적 코어의 제곱만큼 존재해야 하므로, 이로 인하여 낭비되는 자원이 많고 수행 속도가 저하되는 문제가 있다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로 복수 코어 시스템에서 효율적으로 로드 조정을 하는 복수 코어 장치 및 로드 조정 방법을 제공하는 데 그 목적이 있다.
또한, 본 발명은 효율적으로 가상 코어를 이용할 수 있는 복수 코어 장치 및 로드 조정 방법을 제공하는 데 그 목적이 있다.
또한, 본 발명은 복수 코어용 운영 체제 개발 비용을 절감할 수 있는 복수 코어 장치 및 로드 조정 방법을 제공하는 데 그 목적이 있다.
상술한 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따르는 복수 코어(multi-core) 장치는, 작업(task)이 활동(active) 상태로부터 유휴(sleep) 상태로 전환될 때, 전환되는 작업의 진행 정보를 포함하는 컨텍스트(Context)를 포함하는 저장 요청을 송신하는 제1 코어, 수행 요청을 수신하여 수행 요청에 포함된 컨텍스트에 상응하는 작업을 수행하는 제2 코어 및 제1 코어로부터 저장 요청을 수신하고, 저장 요청에 포함된 컨텍스트를 저장하고, 저장된 컨텍스트 중 하나 이상을 제2 코어에 할당하고, 제2 코어에 대한 컨텍스트의 할당에 따라 제2 코어에 상응하는 컨텍스트가 포함된 수행 요청을 제2 코어에 송신하는 로드 조정 장치를 포함할 수 있다.
상술한 과제를 달성하기 위하여, 본 발명의 일 실시 예에 따르는 로드 조정 방법은, 제1 코어에서 작업(task)이 활동(active) 상태로부터 유휴(sleep) 상태로 전환될 때, 전환되는 작업의 진행 정보를 포함하는 컨텍스트(Context)를 포함하는 저장 요청을 제1 코어로부터 수신하는 저장 요청 단계, 저장 요청에 포함된 컨텍스트를 저장하는 컨텍스트 저장 단계, 저장된 컨텍스트 중 하나 이상을 제2 코어에 할당하는 할당 단계 및 할당 단계에 따라 제2 코어가 제2 코어에 할당된 컨텍스트의 작업을 수행하도록 제2 코어에 할당된 컨텍스트가 포함된 수행 요청을 제2 코어에 송신하는 수행 요청 단계를 포함할 수 있다.
기타 실시 예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 일 실시 예에 따르면 작업 컨텍스트의 저장과 제공을 통해 효율적으로 복수 코어 장치의 로드 조정을 할 수 있는 효과가 있다.
또한, 본 발명의 일 실시 예에 따르면 작업 컨텍스트의 저장과 제공을 통해 효율적으로 가상 코어를 이용할 수 있는 효과가 있다.
또한, 본 발명의 일 실시 예에 따르면 작업 컨텍스트의 저장과 제공을 통해 복수 코어용 운영 체제 개발 비용을 절감할 수 있는 효과가 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시 예들에 의하여 도면들을 참고하여 본 발명에 대해 설명하도록 한다.
본 명세서에서 작업(task)은 컴퓨터에서 처리해야 할 일의 단위를 말한다.
본 명세서에서 작업의 컨텍스트(context)는 작업의 진행 정보를 나타내는 데이터이다. 작업이 중단되는 경우 컨텍스트를 저장해 두면 이후에 저장된 컨텍스트를 꺼내어 작업을 중단된 시점부터 재개할 수 있다. 즉, 컨텍스트는 중단된 작업의 재개를 위해 필요한 데이터이다. 작업의 컨텍스트는 예를 들어 작업의 프로그램 카운터(Program Counter)와 메모리 관리 정보, 어카운팅(Accounting) 정보, 레지스터(resister), 작업 상태 및 입출력 상태 정보 등을 포함할 수 있다. 컨텍스트의 구체적인 구조는 운영 체제나 시스템의 종류나 모델에 따라 달라질 수 있다.
컨텍스트 스위치(context switch)는 코어의 컨텍스트를 교환(switch)하는 것 을 말한다. 코어의 컨텍스트가 교환되는 것은 그 코어에서 수행되는 작업이 교환(switch)되는 것을 말한다. 코어에서 어떤 작업이 수행되던 중에 컨텍스트 스위치가 일어나면 현재 작업의 컨텍스트가 일정한 저장소에 저장되고, 새로이 수행될 작업의 컨텍스트가 코어로 불러들여진다. 컨텍스트 스위치가 일어날 당시 현재 작업이 없거나(유휴상태의 코어) 새로이 수행될 작업이 없는 경우(단순히 현재 작업을 다른 프로세스로 넘김)의 컨텍스트 스위치도 생각할 수 있다. 컨텍스트 스위치가 일어나면 컨텍스트 스위치 이전에 그 코어에서 수행되던 작업은 유휴(sleep) 상태로 전환되고, 컨텍스트 스위치 이후에 그 코어에서 새로이 수행되는 작업은 활동(active) 상태로 전환된다고 할 수 있다.
유휴(sleep) 상태는 작업이 실질적으로 수행되지 않고 중단된 상태를 말한다. 다만, 어떤 코어에서 수행되지 않고 중단되어 유휴 상태인 작업이라도, 다른 코어에서 수행중인 경우를 생각할 수 있다. 작업이 중단된 코어의 관점에서 그 작업은 유휴 상태이지만 그 코어를 수행하는 다른 코어의 관점에서는 활동 상태이다. 또한, 전체 복수 코어 장치의 관점에서는 실질적으로 수행 중이므로 그 작업은 활동 상태라고 말할 수 있다.
활동(active) 상태는 작업이 코어에서 수행되는 상태를 말한다. 각 코어의 관점에 따라 활동 상태와 유휴상태가 달라질 수 있음은 상기 유휴 상태에 대한 설명에서 설명하였다.
도 1은 본 발명의 일 실시 예에 따르는 복수 코어 장치의 블록 구성도이다.
도 1을 참조하면 본 발명의 일 실시 예에 따르는 복수 코어(multi-core) 장치는 로드 조정 장치(100), 제1 코어(core)(210), 제2 코어(220), 버스(BUS, 230), 메모리(memory, 240) 및 주변장치(peripheral, 250)를 포함할 수 있다.
버스(230)는 코어들(210, 220)과 다른 구성부(로드 조정 장치(100), 메모리(240) 및 주변장치(250)) 사이에서 정보나 신호를 주고받는데 사용되도록 구성된 전기적 통로이다.
제1 코어(210) 및 제2 코어(220)는 작업(task)을 수행한다.
주변장치(250)는 입출력장치(I/O)와 저장 장치를 포함할 수 있다. 넓은 의미에서 메모리(240)도 주변장치(250)에 포함되지만, 여기서는 설명의 편의를 위해 별도의 구성요소로 분리하였다.
메모리(240)는 작업에 필요한 데이터와 기타 데이터를 저장한다. 메모리(240)는 OS 커널 메모리(242)를 포함할 수 있다. OS 커널 메모리(242)는 작업 컨텍스트 저장부(130)에 미처 저장되지 못하였거나 작업 컨텍스트 저장부(130)에 저장되는 것이 부적당한 유휴 작업 컨텍스트(244)를 저장할 수 있다.
특히 본 발명에 따르는 제1 코어(210)는 컨텍스트 스위치(context switch)가 일어날 때 유휴(sleep) 상태로 전환되는 작업(task)의 컨텍스트를 저장하도록 로드 조정 장치(100)에 요청하는 저장 요청을 로드 조정 장치(100)에 송신하고, 활동(active) 상태로 전환되는 작업의 저장된 컨텍스트를 요청하는 컨텍스트 요청을 로드 조정 장치(100)에 송신한다.
로드 조정 장치(100)는 제1 코어(210)의 저장 요청에 따라 유휴(sleep) 상태 로 전환되는 작업(task)의 컨텍스트(Context)를 저장하고, 제1 코어(210)의 제공 요청에 따라 활동(active) 상태로 전환되는 작업의 저장된 컨텍스트를 제1 코어(210)에 제공한다. 제1 코어(210)는 로드 조정 장치(100)로부터 제공받은 컨텍스트를 이용하여 새로이 활동 상태로 전환되는 작업의 수행을 재개한다.
로드 조정 장치(100)는 또한, 제2 코어(220)에서 활동 상태로 수행될 작업을 할당한다. 로드 조정 장치(100)는 제1 코어(210)에서 수행되다가 컨텍스트 스위치에 의하여 유휴 상태로 전환된 작업들 중 하나 이상을 제2 코어(220)에서 수행되도록 할 수 있다.
제2 코어(220)는 로드 조정 장치(100)의 작업 할당에 따라 작업을 할당받아 수행한다.
제1 코어(210)는 운영 체제의 명령에 따라서 제1 코어(210)에서 수행될 작업을 선택하고 컨텍스트 스위치를 수행한다. 또한, 제1 코어(210)는 컨텍스트를 로드 조정 장치(100)가 저장하도록 요청하고, 로드 조정 장치(100)로부터 저장된 컨텍스트를 제공받는다.
제1 코어(210)는 로드 조정 장치(100)와의 관계에서 능동적으로 행동한다. 즉, 수행할 작업을 스스로 선택하고, 그에 필요한 세부 작업을 로드 조정 장치(100)에 요청한다.
제2 코어(220)는 로드 조정 장치(100)와의 관계에서 수동적으로 행동한다. 즉, 제2 코어(220)는 로드 조정 장치(100)가 할당해 준 작업을 수행한다는 점에서 수동적이다.
제1 코어(210)의 능동성과 제2 코어(220)의 수동성을 강조하는 시각에서, 제1 코어(210)는 능동 코어, 제2 코어(220)는 수동 코어라고 칭할 수도 있다. 여기서는 제1 코어(210) 및 제2 코어(220)라는 명칭을 유지할 것이다.
제2 코어(220)의 개수는 하나일 수도 있고 복수가 될 수도 있다. 제2 코어(220)가 복수인 경우 로드 조정 장치(100)는 제2 코어(220)들 사이에 로드가 적절히 분배될 수 있도록 작업을 할당할 수 있다.
제2 코어(220)에서는 컨텍스트 스위치가 로드 조정 장치(100)에 의하여 수동적으로 일어나지만 제2 코어(220)에서도 컨텍스트 스위치가 일어날 경우 유휴 상태로 전환되는 작업의 컨텍스트를 로드 조정 장치(100)가 저장하도록 요청하고, 활동 상태로 전환되는 작업의 컨텍스트를 로드 조정 장치(100)로부터 제공받아 작업을 재개하는 데 활용한다.
로드 조정 장치(100)는 작업의 컨텍스트를 저장하면서, 그 저장되는 컨텍스트와 연관시켜서 그 작업에 관한 캐시 데이터를 저장할 수 있다. 이후 저장된 작업의 컨텍스트를 제1 코어(210) 또는 제2 코어(220)에 제공할 때 그 컨텍스트와 연관시켜 저장된 캐시 데이터를 제1 코어(210) 또는 제2 코어(220)에 함께 제공할 수 있다.
작업에 관한 캐시를 함께 저장하고 함께 제공하면 작업과 함께 캐시가 복구되어 작업의 재개 후 더욱 효율적인 작업 수행이 가능하다.
본 발명의 일 실시 예에 따르는 로드 조정 장치(100)는 자원 관리부(110), 캐시 관리부(120), 작업 컨텍스트 저장부(130), 컨텍스트 디스크립터(context descriptor, 140) 및 동기화부(150)를 포함할 수 있다.
작업 컨텍스트 저장부(130)는 제1 코어(210) 또는 제2 코어(220)에서 유휴(sleep) 상태로 전환되는 작업(task)의 컨텍스트(Context), 즉 유휴 작업 컨텍스트(131)를 저장하고, 제1 코어(210) 또는 제2 코어(220)에서 활동(active) 상태로 전환되는 작업의 저장된 컨텍스트를 제1 코어(210) 또는 제2 코어(220)에 제공한다.
제1 코어(210)에서 작업이 유휴 상태로 전환되면 제1 코어(210)는 작업 컨텍스트 저장부(130)가 유휴 상태로 전환되는 작업의 컨텍스트를 저장하도록 요청한다. 그에 따라 작업 컨텍스트 저장부(130)는 유휴 상태로 전환되는 작업의 컨텍스트(131)를 저장한다.
이후, 제1 코어(210) 또는 제2 코어(220)에서 해당 작업이 다시 활동 상태로 전환되어 재개되면 해당 작업의 저장된 컨텍스트를 그 작업을 수행하게 되는 제1 코어(210) 또는 제2 코어(220)에 제공한다.
작업 컨텍스트 저장부(130)는 유휴 작업 컨텍스트들(131a, 131b, 131c)을 저장한다. 작업 컨텍스트 저장부(130)는 메모리(240)보다 그 접근 속도가 빠른 것으로 가정할 수 있다. 이 경우 컨텍스트 스위치로 인한 부담이 적어질 수 있다. 다만, 속도가 더 빠른 저장소는 일반적으로 가격이 비싸고 용량이 한정되므로 작업 컨텍스트 저장부(130)의 크기는 적절한 크기로 유지하고, 유휴 작업 컨텍스트(131, 244)가 많아서 작업 컨텍스트 저장부(130)의 크기가 부족한 경우 넘치는 부분은 메모리(240)의 OS 커널 메모리(242)에 저장하도록 할 수 있다. 이때, 빈번히 재개되 는 작업, 중요한 작업, 우선순위가 높은 작업, 병렬 프로세스가 가능한 작업 등의 유휴 작업 컨텍스트(131a, 131b, 131c)가 작업 컨텍스트 저장부(130)에 저장되고, 비교적 가끔 재개되는 작업, 덜 중요한 작업, 우선순위가 낮은 작업, 병렬 프로세스가 불가능한 작업 등의 유휴 작업 컨텍스트들(244a, 244b, 244c)은 OS 커널 메모리(242)에 저장되도록 할 수 있다.
자원 관리부(110)는 제2 코어(220)에서 활동 상태로 수행될 작업을 할당한다. 자원 관리부(110)는 우선순위 정책이나 기타 정책을 참고하여 제2 코어(220)에서 활동 상태로 수행될 작업을 할당한다. 다만, 제1 코어(210)에서 활동 상태로 수행되는 작업은 제2 코어(220)에서 활동 상태로 수행될 수 없다. 다만, 작업을 더 작은 단위의 작업으로 나누어 각 코어에서 활동 상태로 수행되도록 할 수는 있다.
로드 조정 장치(100)는 캐시의 효율적인 활용을 위해 캐시 관리부(120)를 더 포함할 수 있다.
캐시 관리부(120)는 작업이 유휴 상태로 전환될 때 유휴 상태로 전환되는 작업에 관한 캐시(cache) 데이터를 그 작업의 컨텍스트와 연관시켜 저장할 수 있다. 제1 코어(210)의 결정이나 자원 관리부(110)의 결정에 따라 작업이 유휴 상태로 전환되면, 그 작업의 컨텍스트는 작업 컨텍스트 저장부(130)에 저장되고, 그 작업에 대한 캐시 데이터는 그 작업의 컨텍스트는 연관시켜서 캐시 관리부(120)에 저장된다.
또한, 캐시 관리부(120)는 유휴 상태로 전환된 작업이 다시 활동 상태로 전환될 때 그 작업의 컨텍스트와 연관시켜 저장된 캐시 데이터를 제공할 수 있다. 제 1 코어(210)의 결정이나 자원 관리부(110)의 결정에 따라 작업이 활동 상태로 전환되면, 그 작업의 컨텍스트가 그 작업을 수행할 코어에 제공되고, 그 작업의 컨텍스트와 연관시켜 저장된 캐시 데이터도 마찬가지로 그 작업을 수행할 코어에 제공된다.
제1 코어(210)가 컨텍스트 스위치를 하기로 결정하면 작업 컨텍스트 저장부(130)에 임의의 작업의 컨텍스트를 요청한다. 이때, 제1 코어(210)가 요청한 작업이 어느 코어에서도 활동 상태가 아니라면 제1 코어(210)가 요청한 작업의 컨텍스트는 작업 컨텍스트 저장부(130)에 저장되어 있거나, OS 커널 메모리(242)에 저장되어 있게 된다. 이 경우, 작업 컨텍스트 저장부(130)는 작업 컨텍스트 저장부(130)에 저장되어 있거나, OS 커널 메모리(242)에 저장되어 있는 컨텍스트를 제1 코어(210)에 제공할 수 있다.
반대로, 제1 코어(210)가 요청한 작업이 제2 코어(220)에서 수행중인 경우도 있다. 이때에는 자원 관리부(110)는 그 작업을 수행중인 제2 코어(220)가 해당 작업을 중단하도록 제어한다. 또한, 작업 컨텍스트 저장부(130)는 그 작업을 수행중인 제2 코어(220)로부터 해당 작업의 컨텍스트를 수신해서 제1 코어(210)에 제공한다. 또한, 캐시 관리부(120)는 그 작업을 수행중인 제2 코어(220)로부터 해당 작업에 대한 캐시 데이터를 수신해서 제1 코어(210)에 제공한다.
캐시 관리부(120)가 없는 경우의 실시 예도 생각할 수 있다. 이 경우 캐시의 효율적인 활용은 생각하기 어렵지만, 본 발명의 다른 특징인 단일 코어 OS활용 등의 효과는 유지될 수 있다.
컨텍스트 디스크립터(140)는 작업 컨텍스트 저장부(130)에 저장될 유휴 작업 컨텍스트(131, 244)의 저장 형식을 작업 컨텍스트 저장부(130)에 제공한다. 컨텍스트의 저장 형식은 데이터 구조나 데이터 값의 의미 정보 등을 포함할 수 있다. 컨텍스트의 저장 형식은 OS나 시스템에 따라 달리 설정될 수 있으며, 복수의 OS가 수행중인 시스템이라면 컨텍스트 디스크립터(140)는 복수의 컨텍스트 저장 형식을 제공할 수 있다.
동기화부(150)는 코어 간 동기화를 지원한다. 복수 코어 시스템에서는 동기화의 지원이 필수적이다. 동기화부(150)는 예를 들어 하드웨어 세마포어(semaphore)를 포함할 수 있다. 동기화부(150)가 로드 조정 장치(100) 내부에 구비되지 않은 경우에는 복수 코어 장치에 포함된 다른 동기화 지원 장치를 이용하여 동기화를 이룰 수 있다.
도 2는 본 발명의 일 실시 예에 따르는 복수 코어 로드 과정의 상세 순서도이다.
도 2의 과정은 로드 조정 장치(100)에서 수행되는 것으로 가정할 수 있다.
도 2의 과정에서 로드 조정 장치(100)는 제1 코어(210)의 요청에 따라 컨텍스트 및 캐시 데이터를 저장 및 제공한다.
제1 코어(210)가 OS의 정책에 따라 스스로 컨텍스트 스위치를 수행하는 경우에 로드 조정 장치가 도 2의 과정을 수행하게 된다. 제1 코어(210)는 OS의 정책에 따라 스스로 컨텍스트 스위치를 수행하고, 그에 따라 유휴 상태로 전환되는 작업의 컨텍스트 및 캐시 데이터를 포함하는 저장 요청을 로드 조정 장치(100)에 송신할 수 있다.
단계 310에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 제1 코어(210)로부터 유휴 상태로 전환되는 작업의 컨텍스트 및 캐시 데이터를 포함하는 저장 요청을 수신한다. 캐시 관리부(120)를 구비하지 않는 실시 예에서는 저장 요청은 캐시 데이터를 제외한 컨텍스트만을 포함할 수도 있다. 이 경우 단계 330 및 단계 360을 제외한 나머지 과정이 수행될 수 있다.
단계 320에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 제1 코어(210)로부터 수신한 유휴 상태로 전환되는 작업의 컨텍스트 및 캐시 데이터를 포함하는 저장 요청에 따라 그 작업의 컨텍스트를 저장한다.
단계 330에서 로드 조정 장치(100)의 캐시 관리부(120)는 제1 코어(210)로부터 저장된 유휴 상태로 전환되는 작업의 컨텍스트와 연관시켜서 그 작업에 대한 캐시 데이터를 저장한다. 로드 조정 장치(100)가 캐시 관리부(120)를 구비하지 않는 실시 예에서는 단계 330과 단계 360을 제외한 나머지 과정만이 수행될 수 있다.
단계 340에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 제1 코어(210)로부터 활동 상태로 전환되는 작업의 컨텍스트를 요청하는 컨텍스트 요청을 수신한다. 제1 코어(210)가 컨텍스트 스위치를 수행하므로 유휴 상태로 전환되는 작업뿐 아니라 활동 상태로 전환되는 작업도 마찬가지로 존재한다. 제1 코어(210)는 활동 상태로 전환되는 작업의 컨텍스트를 요청하는 컨텍스트 요청을 로드 조정 장치(100)에 송신할 수 있다.
단계 350에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 제1 코어(210)로부터 수신한 활동 상태로 전환되는 작업의 컨텍스트를 요청하는 컨텍스트 요청에 따라 활동 상태로 전환되는 작업의 컨텍스트를 제1 코어(210)에 제공한다. 활동 상태로 전환되는 작업의 컨텍스트는 작업 컨텍스트 저장부(130) 또는 OS 커널 메모리(242)에 저장되어 있을 수도 있고 실시 예에 따라서는 제2 코어(220)에 해당 컨텍스트가 저장되어 있을 수도 있다. 각 경우의 구체적인 컨텍스트 제공 과정에 대해서는 도 4를 참조하여 후술한다.
단계 360에서 로드 조정 장치(100)의 캐시 관리부(120)는 제1 코어(210)에 제공하는 활동 상태로 전환되는 작업의 컨텍스트에 연관시켜 저장된 캐시 데이터를 제1 코어(210)에 제공할 수 있다. 로드 조정 장치(100)가 캐시 관리부(120)를 구비하지 않는 실시 예에서는 단계 330과 단계 360을 제외한 나머지 과정만이 수행될 수 있음은 상술한 바와 같다.
도 3은 본 발명의 다른 실시 예에 따르는 복수 코어 로드 조정 과정의 순서도이다.
도 3의 과정은 로드 조정 장치(100)에서 수행되는 것으로 가정할 수 있다.
도 3을 참조하면, 단계 410에서 로드 조정 장치(100)의 자원 관리부(110)는 제2 코어(220)에 작업을 할당한다.
상술한 바와 같이 제2 코어(220)는 하나가 될 수도 있고, 복수가 될 수도 있다. 자원 관리부(110)는 우선 순위 정책과 기타 상황을 고려하여 제2 코어(220)에 서 활동 상태로 수행될 작업을 할당한다. 이러한 할당 작업은 주기적으로, 또는 다른 변동 사항이 있거나, 제2 코어(220)에서 수행중인 작업이 종료 직전 상태가 되어 더 이상 활동 상태로 수행될 필요가 없는 경우 또는 외부로부터 요청이 있는 경우에 수행될 수 있다.
단계 420에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 제2 코어(220)에 작업이 할당됨에 따라 유휴 상태로 전환되는 작업의 컨텍스트를 제2 코어로부터 수신하여 저장한다. 이러한 컨텍스트 저장 작업은 제2 코어(220) 또는 자원 관리부(110)의 요청에 의하여 수행될 수도 있고, 작업 컨텍스트 저장부(130) 스스로의 판단에 의하여 수행될 수도 있다.
단계 430에서 로드 조정 장치(100)의 캐시 관리부(120)는 유휴 상태로 전환되는 작업에 대한 캐시 데이터를 유휴 상태로 전환되는 작업의 컨텍스트와 연관시켜 저장한다. 컨텍스트와 캐시 데이터를 연관시켜 저장하면 이후에 그 작업이 다시 재개될 때 연관시켜 저장된 컨텍스트와 캐시 데이터를 다시 불러들여 효율적으로 작업을 재개할 수 있다.
단계 440에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 제2 코어(220)에 작업을 할당함에 따라 제2 코어에서 활동 상태로 전환되는 작업, 즉 제2 코어에 할당된 작업의 컨텍스트를 포함하는 수행 요청을 제2 코어(220)에 송신한다. 단계 420 또는 단계 320의 과정을 통해 저장된 컨텍스트는 후에 그 작업이 재개될 때 단계 440과 같은 과정을 통해 그 작업을 재개하는 코어에 제공될 수 있다.
단계 450에서 로드 조정 장치(100)의 캐시 관리부(120)는 활동 상태로 전환 되는 작업의 컨텍스트와 연관시켜 저장된 캐시 데이터를 제2 코어(220)에 제공한다. 로드 조정 장치에 캐시 관리부(120)가 구비된 경우의 실시 예에서는 수행 요청은 제2 코어에 할당된 작업의 컨텍스트 및 캐시 데이터를 포함할 수 있다.
단계 430 또는 단계 330의 과정을 통해 저장된 캐시 데이터는 후에 그 작업이 재개될 때 그 작업의 컨텍스트와 함께 제공되어 효율적인 작업 재개를 지원할 수 있다.
단계 430의 과정과 단계 450의 과정은 로드 조정 장치(100)가 캐시 관리부(120)를 구비할 경우에 수행되고, 로드 조정 장치(100)가 캐시 관리부(120)를 구비하지 않는 경우에는 생략될 수 있다. 즉, 캐시의 전달 없이 컨텍스트만 전달될 수 있다.
도 2의 과정과 도 3의 과정은 병렬적으로 수행될 수 있다.
도 4는 본 발명의 또 다른 실시 예에 따르는 복수 코어 로드 조정 과정의 순서도이다.
도 4의 과정은 도 2의 과정을 대체하여 수행될 수 있다.
도 4의 과정은 로드 조정 장치(100)에서 수행되는 것으로 가정할 수 있다.
도 4의 과정은 제1 코어(210)에서 컨텍스트 스위치가 수행되는 경우 로드 조정 장치(100)에서 수행되는 과정이다. 제1 코어(210)는 OS의 정책에 따라 스스로 컨텍스트 스위치를 수행하고, 그에 따라 유휴 상태로 전환되는 작업의 컨텍스트 및 캐시 데이터를 포함하는 저장 요청을 로드 조정 장치(100)에 송신할 수 있다.
단계 510 내지 단계 530은 제1 코어(210)에서 유휴 상태로 전환되는 작업의 컨텍스트와 그에 관한 캐시를 저장하는 과정을 나타낸다.
단계 510은 도 2의 단계 310에 상응하고, 단계 520은 도 2의 단계 320에 상응하고, 단계 530은 도 2의 단계 330에 상응하므로 여기서는 자세한 설명을 생략한다.
단계 540에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 제1 코어(210)로부터 활동 상태로 전환되는 작업의 컨텍스트를 요청하는 컨텍스트 요청을 수신한다.
단계 550에서 로드 조정 장치(100)의 작업 컨텍스트 저장부(130)는 활동 상태로 전환되는 작업이 제2 코어(220) - 복수라면 여러 개의 제2 코어(220) 중 어느 하나 - 에서 수행 중인지 판단한다. 이를 위하여 작업 컨텍스트 저장부(130), 자원 관리부(110) 또는 로드 조정 장치(100)의 다른 구성부나 복수 코어 장치의 구성부 중 어느 하나 이상은 각 코어에서 현재 수행중인 작업을 관리하는 테이블을 유지할 필요가 있다. 각 코어에서 컨텍스트 스위치가 수행되면 그에 따라 테이블을 갱신하는 방식으로 최신 정보를 유지할 수 있다.
단계 550에서 활동 상태로 전환되는 작업이 제2 코어(220)에서 수행 중이라면 단계 560으로 진행한다.
단계 560에서 자원 관리부(110)는 제2 코어(220)에서 수행중인 제1 코어(210)가 요청한 컨텍스트에 상응하는 작업을 중단한다. 제1 코어(210)의 요청에 따라 해당 작업을 제1 코어(210)에 할당하기 위해서이다. 작업이 중단된 제2 코 어(220)에는 다른 작업을 할당하거나, 적당한 다른 작업이 없는 경우 유휴 상태로 유지시킬 수도 있다.
단계 570에서 로드 조정 장치(100)는 제1 코어(210)가 요청한 컨텍스트와 그에 관한 캐시 데이터를 제2 코어(220)로부터 제1 코어(210)로 전달할 수 있다. 작업의 수행상태를 최대한 유지하면서 수행되는 코어를 바꾸어 효율적으로 컨텍스트 스위치가 수행될 수 있다.
단계 550에서 활동 상태로 전환되는 작업이 제2 코어(220)에서 수행 중이 아니라면 단계 580으로 진행한다.
단계 580에서는 제2 코어(220)에서 해당 작업이 수행되고 있지 않으므로, 다른 메모리 장치, 예를 들면 작업 컨텍스트 저장부(130)나 OS 커널 메모리(242)에 저장된 유휴 작업 컨텍스트(131, 244)와 캐시 관리부(120)에 저장된 해당 컨텍스트와 연관시켜 저장된 캐시 데이터를 제1 코어(210)에 송신한다.
도 4의 과정과 도 3의 과정은 병렬적으로 수행될 수 있다.
도 5는 본 발명의 일 실시 예에 따르는 코어 가상화(Virtualization)를 나타낸 도면이다.
도 5의 시스템에서 복수 코어용으로 개발된 OS가 아닌 단일 코어용 OS(620)가 사용된다. 각 단일 코어용 OS(620)에는 애플리케이션(630)이 탑재되어 수행된다.
단일 코어용 OS(620)는 가상 코어(610) 상에서 실행되고, 가상 코어(610)는 로드 조정 장치(100)를 이용하여 복수의 코어를 효율적으로 활용할 수 있다.
즉, 가상 코어(610)는 하나의 제1 코어(210)에 인스트럭션을 수행하도록 요청하고 그 응답을 받으므로 하나의 코어만을 사용하는 단일 코어용 OS(620)가 도 5의 시스템에서 활용 가능하다. 하지만, 제1 코어(210)에서 유휴 상태로 전환된 작업은 로드 조정 장치(100)에 의해서 효율적으로 제2 코어(220)에 배분되어 실행되므로 실제 단일 코어용 OS는 모든 코어를 활용할 수 있다.
각 가상 코어의 관점에서 제1 코어(210), 즉 실제로 인스트럭션과 응답을 주고받는 코어는 모두 동일할 필요는 없다. 즉, 어떤 가상 코어의 관점에서 제1 코어(210)는 도 5에서와 같이 도면부호 210의 코어이지만 다른 가상 코어의 관점에서 제1 코어는 도면부호 220a, 220b 또는 220c중 어느 하나의 코어가 될 수도 있다.
이러한 가상화 방식을 통해서 단일 코어용 OS만을 활용해서도 효율적인 가상화 및 복수 코어 활용을 기대할 수 있다.
또한, 단일 코어용 OS만으로 복수 코어 시스템을 활용할 수 있어, 복수 코어용 OS 개발 비용을 절감할 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구 의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
도 1은 본 발명의 일 실시 예에 따르는 복수 코어 장치의 블록 구성도이다.
도 2는 본 발명의 일 실시 예에 따르는 복수 코어 로드 과정의 상세 순서도이다.
도 3은 본 발명의 다른 실시 예에 따르는 복수 코어 로드 조정 과정의 순서도이다.
도 4는 본 발명의 또 다른 실시 예에 따르는 복수 코어 로드 조정 과정의 순서도이다.
도 5는 본 발명의 일 실시 예에 따르는 코어 가상화(Virtualization)를 나타낸 도면이다.

Claims (12)

  1. 작업(task)이 활동(active) 상태로부터 유휴(sleep) 상태로 전환될 때, 상기 전환되는 작업의 진행 정보를 포함하는 컨텍스트(Context)를 포함하는 저장 요청을 송신하는 제1 코어;
    수행 요청을 수신하여 상기 수행 요청에 포함된 컨텍스트에 상응하는 작업을 수행하는 제2 코어; 및
    상기 제1 코어로부터 상기 저장 요청을 수신하고, 상기 저장 요청에 포함된 컨텍스트를 저장하고, 저장된 컨텍스트 중 하나 이상을 상기 제2 코어에 할당하고, 상기 제2 코어에 대한 컨텍스트의 할당에 따라 상기 제2 코어에 상응하는 컨텍스트가 포함된 수행 요청을 상기 제2 코어에 송신하는 로드 조정 장치를 포함하는 복수 코어 장치.
  2. 제1항에 있어서,
    상기 제1 코어는, 작업이 활동 상태로부터 유휴 상태로 전환될 때, 상기 전환되는 작업의 컨텍스트(Context) 및 상기 전환되는 작업의 캐시 데이터를 포함하는 상기 저장 요청을 송신하고,
    상기 제2 코어는 상기 로드 조정 장치로부터 상기 수행 요청을 수신하여 상기 수행 요청에 포함된 캐시 데이터를 상기 제2 코어의 캐시에 저장하고
    상기 로드 조정 장치는, 상기 제1 코어로부터 상기 저장 요청을 수신하고, 상기 저장 요청에 포함된 컨텍스트 및 캐시 데이터를 서로 연관시켜 저장하고, 상기 제2 코어에 대한 컨텍스트의 할당에 따라 상기 제2 코어에 할당된 컨텍스트 및 상기 할당된 컨텍스트와 연관시켜 저장된 캐시 데이터를 포함하는 상기 수행 요청을 상기 제2 코어에 송신하는 것을 특징으로 하는 복수 코어 장치.
  3. 제1항에 있어서,
    상기 제1 코어는, 유휴 상태의 작업을 활동 상태로 전환하려고 할 때 상기 전환하려는 작업에 상응하는 컨텍스트를 요청하는 컨텍스트 요청을 상기 로드 조정 장치에 송신하고,
    상기 로드 조정 장치는, 상기 컨텍스트 요청을 수신하면, 상기 컨텍스트 요청에 상응하는 컨텍스트를 상기 제1 코어에 송신하는 것을 특징으로 하는 복수 코어 장치.
  4. 제3항에 있어서,
    상기 로드 조정 장치는, 상기 컨텍스트 요청을 수신하였을 때, 상기 컨텍스트 요청에 상응하는 컨텍스트에 해당하는 작업이 제2 코어에서 수행 중이면, 상기 제2 코어에서 상기 제2 작업의 수행을 중단하도록 제어하는 것을 특징으로 하는 로 드 조정 장치.
  5. 제4항에 있어서,
    상기 로드 조정 장치는, 상기 컨텍스트 요청을 수신하였을 때, 상기 컨텍스트 요청에 상응하는 컨텍스트에 해당하는 작업이 제2 코어에서 수행 중이면, 상기 제2 코어로부터 상기 컨텍스트 요청에 상응하는 컨텍스트를 전달받아 상기 제1 코어에 송신하는 것을 특징으로 하는 로드 조정 장치.
  6. 제5항에 있어서,
    상기 로드 조정 장치는, 상기 컨텍스트 요청을 수신하였을 때, 상기 컨텍스트 요청에 상응하는 컨텍스트에 해당하는 작업이 제2 코어에서 수행 중이면, 상기 제2 코어로부터 상기 컨텍스트 요청에 상응하는 캐시 데이터를 전달받아 상기 제1 코어에 송신하는 것을 특징으로 하는 로드 조정 장치.
  7. 제1 코어에서 작업(task)이 활동(active) 상태로부터 유휴(sleep) 상태로 전환될 때, 상기 전환되는 작업의 진행 정보를 포함하는 컨텍스트(Context)를 포함하는 저장 요청을 상기 제1 코어로부터 수신하는 저장 요청 단계;
    상기 저장 요청에 포함된 컨텍스트를 저장하는 컨텍스트 저장 단계;
    저장된 상기 컨텍스트 중 하나 이상을 제2 코어에 할당하는 할당 단계; 및
    상기 할당 단계에 따라 상기 제2 코어가 상기 제2 코어에 할당된 컨텍스트의 작업을 수행하도록 상기 제2 코어에 할당된 컨텍스트가 포함된 수행 요청을 상기 제2 코어에 송신하는 수행 요청 단계를 포함하는 로드 조정 방법.
  8. 제7항에 있어서,
    상기 저장 요청 단계는 제1 코어에서 작업이 활동 상태로부터 유휴 상태로 전환될 때, 상기 전환되는 작업의 컨텍스트 및 상기 전환되는 작업의 캐시 데이터를 포함하는 상기 저장 요청을 상기 제1 코어로부터 수신하는 단계를 포함하고,
    상기 컨텍스트 저장 단계는 상기 저장 요청에 포함된 컨텍스트 및 캐시 데이터를 서로 연관시켜 저장하는 단계를 포함하고,
    상기 수행 요청 단계는 상기 제2 코어에 할당된 컨텍스트 및 상기 제2 코어에 할당된 컨텍스트에 연관시켜 저장된 캐시 데이터를 포함하는 상기 수행 요청을 송신하는 단계를 포함하고,
    상기 제2 코어는 상기 수행 요청을 수신하면 상기 수행 요청에 포함된 캐시 데이터를 상기 제2 코어의 캐시에 저장하는 것을 특징으로 하는 로드 조정 방법.
  9. 제7항에 있어서,
    상기 제1 코어에서 작업이 유휴 상태로부터 활동 상태로 전환될 때, 상기 전환되는 작업의 컨텍스트(Context)를 요청하는 컨텍스트 요청을 수신하는 단계; 및
    상기 컨텍스트 요청을 상기 제1 코어로부터 수신하면 상기 컨텍스트 요청에 상응하는 컨텍스트를 상기 제1 코어에 송신하는 단계를 더 포함하는 로드 조정 방법.
  10. 제9항에 있어서,
    상기 컨텍스트 요청을 수신하였을 때, 상기 컨텍스트 요청에 상응하는 컨텍스트에 해당하는 작업이 제2 코어에서 수행 중이면, 상기 제2 코어에서 상기 컨텍스트 요청에 상응하는 컨텍스트에 해당하는 작업의 수행을 중단하도록 제어하는 단계를 더 포함하는 로드 조정 방법.
  11. 제10항에 있어서,
    상기 컨텍스트 요청을 수신하였을 때, 상기 컨텍스트 요청에 상응하는 컨텍스트에 해당하는 작업이 제2 코어에서 수행 중이면, 상기 제2 코어로부터 상기 컨텍스트 요청에 상응하는 컨텍스트를 전달받아 상기 제1 코어에 송신하는 단계를 더 포함하는 로드 조정 방법.
  12. 제11항에 있어서,
    상기 컨텍스트 요청을 수신하였을 때, 상기 컨텍스트 요청에 상응하는 컨텍스트에 해당하는 작업이 제2 코어에서 수행 중이면, 상기 제2 코어로부터 상기 컨텍스트 요청에 상응하는 캐시 데이터를 전달받아 상기 제1 코어에 송신하는 단계를 더 포함하는 로드 조정 방법.
KR1020090103328A 2009-10-29 2009-10-29 복수 코어 장치 및 그의 로드 조정 방법 KR101680109B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090103328A KR101680109B1 (ko) 2009-10-29 2009-10-29 복수 코어 장치 및 그의 로드 조정 방법
US12/915,927 US20110107344A1 (en) 2009-10-29 2010-10-29 Multi-core apparatus and load balancing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090103328A KR101680109B1 (ko) 2009-10-29 2009-10-29 복수 코어 장치 및 그의 로드 조정 방법

Publications (2)

Publication Number Publication Date
KR20110046719A true KR20110046719A (ko) 2011-05-06
KR101680109B1 KR101680109B1 (ko) 2016-12-12

Family

ID=43926790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090103328A KR101680109B1 (ko) 2009-10-29 2009-10-29 복수 코어 장치 및 그의 로드 조정 방법

Country Status (2)

Country Link
US (1) US20110107344A1 (ko)
KR (1) KR101680109B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566836B2 (en) * 2009-11-13 2013-10-22 Freescale Semiconductor, Inc. Multi-core system on chip
US9317329B2 (en) 2010-11-15 2016-04-19 Qualcomm Incorporated Arbitrating resource acquisition for applications of a multi-processor mobile communications device
KR101834195B1 (ko) 2012-03-15 2018-04-13 삼성전자주식회사 다중코어 시스템 및 로드 밸런싱 방법
US9880953B2 (en) * 2015-01-05 2018-01-30 Tuxera Corporation Systems and methods for network I/O based interrupt steering
US11204871B2 (en) * 2015-06-30 2021-12-21 Advanced Micro Devices, Inc. System performance management using prioritized compute units
US20170031724A1 (en) * 2015-07-31 2017-02-02 Futurewei Technologies, Inc. Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks
US10409704B1 (en) * 2015-10-05 2019-09-10 Quest Software Inc. Systems and methods for resource utilization reporting and analysis
US11029998B2 (en) 2016-06-03 2021-06-08 International Business Machines Corporation Grouping of tasks for distribution among processing entities
US10691502B2 (en) 2016-06-03 2020-06-23 International Business Machines Corporation Task queuing and dispatching mechanisms in a computational device
US10185593B2 (en) 2016-06-03 2019-01-22 International Business Machines Corporation Balancing categorized task queues in a plurality of processing entities of a computational device
US11150944B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Balancing mechanisms in ordered lists of dispatch queues in a computational device
US11379269B2 (en) * 2020-08-26 2022-07-05 International Business Machines Corporation Load balancing based on utilization percentage of CPU cores
US11888938B2 (en) * 2021-07-29 2024-01-30 Elasticflash, Inc. Systems and methods for optimizing distributed computing systems including server architectures and client drivers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018680A1 (en) * 2001-07-18 2003-01-23 Lino Iglesias Smart internetworking operating system for low computational power microprocessors
US6986141B1 (en) * 1998-03-10 2006-01-10 Agere Systems Inc. Context controller having instruction-based time slice task switching capability and processor employing the same
KR20060031868A (ko) * 2003-07-15 2006-04-13 인텔 코오퍼레이션 다중 코어 프로세서 성능을 개선하기 위한 방법, 시스템 및장치
US7444641B1 (en) * 1998-03-10 2008-10-28 Agere Systems Inc. Context controller having context-specific event selection mechanism and processor employing the same

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101599A (en) * 1998-06-29 2000-08-08 Cisco Technology, Inc. System for context switching between processing elements in a pipeline of processing elements
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
US7584332B2 (en) * 2006-02-17 2009-09-01 University Of Notre Dame Du Lac Computer systems with lightweight multi-threaded architectures
US8225315B1 (en) * 2007-07-23 2012-07-17 Oracle America, Inc. Virtual core management
US8122182B2 (en) * 2009-01-13 2012-02-21 Netapp, Inc. Electronically addressed non-volatile memory-based kernel data cache
US8230201B2 (en) * 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986141B1 (en) * 1998-03-10 2006-01-10 Agere Systems Inc. Context controller having instruction-based time slice task switching capability and processor employing the same
US7444641B1 (en) * 1998-03-10 2008-10-28 Agere Systems Inc. Context controller having context-specific event selection mechanism and processor employing the same
US20030018680A1 (en) * 2001-07-18 2003-01-23 Lino Iglesias Smart internetworking operating system for low computational power microprocessors
KR20060031868A (ko) * 2003-07-15 2006-04-13 인텔 코오퍼레이션 다중 코어 프로세서 성능을 개선하기 위한 방법, 시스템 및장치

Also Published As

Publication number Publication date
US20110107344A1 (en) 2011-05-05
KR101680109B1 (ko) 2016-12-12

Similar Documents

Publication Publication Date Title
KR20110046719A (ko) 복수 코어 장치 및 그의 로드 조정 방법
US10810045B2 (en) Method and apparatus for allocating central processing unit (CPU) resources in a default resource pool
JP5939740B2 (ja) 動的にリソースを割り当てる方法、システム及びプログラム
CN107003887B (zh) Cpu超载设置和云计算工作负荷调度机构
KR101781063B1 (ko) 동적 자원 관리를 위한 2단계 자원 관리 방법 및 장치
US9063783B2 (en) Coordinating parallel execution of processes using agents
US9183016B2 (en) Adaptive task scheduling of Hadoop in a virtualized environment
US8234652B2 (en) Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks
US8312464B2 (en) Hardware based dynamic load balancing of message passing interface tasks by modifying tasks
US8108876B2 (en) Modifying an operation of one or more processors executing message passing interface tasks
JP4947081B2 (ja) パススルーi/oデバイスを伴うlparの動的マイグレーション装置、その方法及びそのプログラム
US9477286B2 (en) Energy allocation to groups of virtual machines
US8127300B2 (en) Hardware based dynamic load balancing of message passing interface tasks
EP2216732A1 (en) Virtual machine software license management
JP2008226181A (ja) 並列実行プログラム、該プログラムを記録した記録媒体、並列実行装置および並列実行方法
US20090064166A1 (en) System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks
CN104102548A (zh) 任务资源调度处理方法和系统
US10496444B2 (en) Computer and control method for computer
US20140089624A1 (en) Cooperation of hoarding memory allocators in a multi-process system
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
Monaco et al. Shared resource orchestration extensions for kubernetes to support real-time cloud containers
KR20130112180A (ko) 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
JP2010231601A (ja) グリッドコンピューティングシステム、リソース制御方法およびリソース制御プログラム
KR101334842B1 (ko) 가상화 지원 단말 플랫폼을 위한 가상머신 관리장치 및 방법
JP2017156907A (ja) 情報処理装置、情報処理方法およびプログラム

Legal Events

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