KR101400286B1 - 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 - Google Patents

다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 Download PDF

Info

Publication number
KR101400286B1
KR101400286B1 KR1020080006704A KR20080006704A KR101400286B1 KR 101400286 B1 KR101400286 B1 KR 101400286B1 KR 1020080006704 A KR1020080006704 A KR 1020080006704A KR 20080006704 A KR20080006704 A KR 20080006704A KR 101400286 B1 KR101400286 B1 KR 101400286B1
Authority
KR
South Korea
Prior art keywords
processor
moving
information
thread
clone
Prior art date
Application number
KR1020080006704A
Other languages
English (en)
Other versions
KR20090080753A (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 KR1020080006704A priority Critical patent/KR101400286B1/ko
Priority to US12/216,149 priority patent/US8171267B2/en
Publication of KR20090080753A publication Critical patent/KR20090080753A/ko
Application granted granted Critical
Publication of KR101400286B1 publication Critical patent/KR101400286B1/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치에 관한 것으로, 본 발명에 따른 다중 프로세서 시스템의 작업 이동 방법은 제 1 프로세서의 제 1 프로세스와 수행할 명령이 동일하고 대상 데이터가 상이한 제 2 프로세스가 제 2 프로세서에 할당되어 있는지 여부를 검사하고, 검사 결과에 따라 작업 이동 방법으로서 제 1 프로세스를 이동시키는 방법과 제 1 프로세스에 포함된 스레드만을 이동시키는 방법 중 어느 하나를 선택하고, 선택된 이동 방법에 따라 제 1 프로세서로부터 제 2 프로세서로 작업을 이동시킴으로써, 작업 이동에 소요되는 비용 및 전력 소모량을 최소화할 수 있으며, 그 결과 임베디드 시스템과 같이 저전력 환경 하에서의 전력 소모를 균일하게 유지함으로써 시스템의 성능을 최적화함과 동시에 회로의 물리적인 손상을 방지할 수 있다.
다중 프로세서, 임베디드 시스템, 프로세스 이동, 스레드 이동, 작업 이동 테이블

Description

다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치{Method and apparatus for migrating task in multi-processor system}
본 발명은 복수 개의 프로세서(processor)를 구비한 다중 프로세서 시스템(multi-processor system)에서 운영 체제(operating system)가 로드 밸런싱(load balancing) 또는 전력 소모량의 균일화를 위하여 프로세서에 할당된 작업들을 현재의 프로세서에서 다른 프로세서로 이동시키는 방법 및 장치에 관한 것이다.
기술의 발전은 전자 회로를 미세화하고 클럭 사이클(clock cycle) 시간을 줄여 왔다. 칩(chip)의 전력 소모의 증가로 인해 회로의 성능 향상이 둔화됨에 따라 현재의 프로세서 아키텍쳐(processor architecture)는 하나의 칩의 저장 용량을 증가시키고 다수의 프로세서를 탑재하는 방향으로 발전하고 있다. 이러한 다중 프로세서 환경 하에서는 동시에 다수의 작업을 처리할 수 있는 병렬화(parallelism)가 구현될 수 있어, 단일 프로세서 환경에 비해 현저한 성능 향상을 기대할 수 있게 되었다. 그러나, 프로세서의 개수가 증가하는 만큼 시스템의 성능(performance)이 비례하여 향상되지 못하는 현상이 발생하였다. 그 이유는 모든 프로세서들이 균등 하게 작업들을 분배하여 실행하는 것이 아니라 다른 프로세서에 비해 특정 프로세서에 더 많은 작업이 할당되어 실행하는 로드 불균형(load imbalance)이 발생하기 때문이다. 따라서, 이러한 문제점을 해결하기 위해 로드가 많은 프로세서에서 상대적으로 로드가 적은 다른 프로세서로 작업을 이동(task migration)시켜 각 프로세서에 할당되는 작업들의 균형을 맞추는 로드 밸런싱 기술이 제시되고 있다.
한편, 제품이나 솔루션(solution)에 추가로 탑재되어 그 제품 안에서 특정 작업을 수행하도록 구현된 임베디드 시스템(embedded system)은 범용 시스템에 비해 상대적으로 적은 연산 능력을 요구하는 것이 일반적이었으나, 기술의 발달에 따라 처리해야 할 데이터의 용량이 증가하고 보다 강력한 처리 능력이 요구됨에 따라 둘 이상의 프로세서를 구비한 다중 프로세서 기반 임베디드 시스템으로 발전하고 있는 추세이다.
이러한 임베디드 시스템은 휴대 단말, 자동차 제어, 생활 가전, 의료 자동화 및 센서 네트워크 등과 같은 폭 넓은 응용 분야를 가지고 있는데, 동작 환경의 요구 및 제약으로 인해, 저전력(low power) 하에서도 안정적이고 높은 성능(high performance)을 보장할 수 있어야 한다. 특히, 임베디드 시스템에서는 저전력이라는 제약으로 통상적인 운영 체제에서 발생하는 로드 불균형과는 달리 프로세서에 공급될 수 있는 전력의 제약으로 인해 작업 이동이 요구될 수 있다. 예를 들어, 프로세서에 공급되는 전력이 부족할 경우 클럭 주파수(clock frequency)가 제한되므로 작업 수행 성능이 저하될 수 있으며, 반면에 특정 프로세서에 전력이 집중될 경우 발열로 인한 핫-스팟(hot-spot)이 생성되어 타이밍 에러(timing error)가 발생 하거나 회로에 물리적인 손상을 야기할 우려가 있다. 따라서, 이러한 임베디드 시스템에서는 저전력 요구에 따라 수행할 작업들을 프로세서들에 적절히 분배하고 필요에 따라 이동시킴으로써 프로세서들의 전력 소모량을 균일하게 유지시킬 필요가 있다.
본 발명이 해결하고자 하는 기술적 과제는 다중 프로세서 시스템에서 로드 불균형이 발생하거나 특정 프로세서에서 전력 소모가 집중되는 현상이 발생함으로 인해 하나의 프로세서로부터 다른 프로세서로 작업을 이동시킬 때 발생하는 비효율을 해결하고, 임베디드 시스템의 저전력 환경 하에서의 불균일한 전력 소모를 방지하는 다중 프로세서 시스템의 작업 이동 방법 및 장치를 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명에 따라, 복수 개의 프로세서들을 구비한 다중 프로세서 시스템에서 상기 프로세서들 중 제 1 프로세서가 처리하려는 작업을 상기 프로세서들 중 제 2 프로세서로 이동시키는 작업 이동 방법은 상기 작업을 수행하려는 제 1 프로세스와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는지 여부를 검사하는 단계; 상기 검사 결과에 따라 상기 작업 이동 방법으로서 상기 제 1 프로세스를 이동시키는 방법과 상기 제 1 프로세스에 포함된 스레드만을 이동시키는 방법 중 어느 하나를 선택하는 단계; 및 상기 선택된 이동 방법에 따라 상기 제 1 프로세서로부터 상기 제 2 프로세서로 상기 작업을 이동시키는 단계를 포함하는 것을 특징으로 한다.
상기 다른 기술적 과제를 해결하기 위하여, 본 발명은 상기 기재된 다중 프로세서 시스템의 작업 이동 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따라, 복수 개의 프로 세서들을 구비한 다중 프로세서 시스템에서 상기 프로세서들 중 제 1 프로세서가 처리하려는 작업을 상기 프로세서들 중 제 2 프로세서로 이동시키는 작업 이동 장치는 상기 작업을 수행하려는 제 1 프로세스와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는지 여부를 검사하는 검사부; 상기 검사 결과에 따라 상기 작업 이동 방법으로서 상기 제 1 프로세스를 이동시키는 방법과 상기 제 1 프로세스에 포함된 스레드만을 이동시키는 방법 중 어느 하나를 선택하는 이동 방법 선택부; 및 상기 선택된 이동 방법에 따라 상기 제 1 프로세서로부터 상기 제 2 프로세서로 상기 작업을 이동시키는 작업 이동부를 포함하는 것을 특징으로 한다.
이하에서는 도면을 참조하여 본 발명의 다양한 실시예들을 상세히 설명한다. 이하의 실시예들을 설명함에 있어서, ARM이란 임베디드 시스템에서 통상적으로 널리 사용되는 프로세서(CPU 또는 코어(core)라고도 한다.)를 의미하는 용어로 사용될 것이다. ARM은 이하의 실시예들이 구현되는 환경에서 사용될 수 있는 프로세서의 일종이며, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 ARM 이외에도 다양한 종류의 프로세서들이 사용될 수 있음을 알 수 있다.
도 1은 본 발명의 일 실시예가 구현되는 환경을 설명하기 위한 도면으로서, 본 시스템은 작업을 처리하는 프로세서(110)인 ARM, 주기억장치인 메모리(150), 사용자로부터 입력을 받아 결과를 표시하는 입출력 장치(160), 보조기억장치인 디스크(170) 및 컴퓨터 내부의 회로에서 프로세서(110)와 메모리(150), 입출력 장치(160) 및 디스크(170) 간의 정보를 전송하기 위해 공용으로 사용하는 전기적 통로인 BUS(100)를 포함한다.
도 1에서 프로세서(110)인 ARM을 중심으로 프로세스(process)(120), 스레드(thread)(130) 및 공유 데이터(140)가 도시되어 있는데, 이들은 이상에서 설명한 물리적인 장치와는 별도로 컴퓨터 시스템 상에서 구현되는 논리적인 개념들로서, 비록 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 익숙한 개념들이지만, 이하의 실시예들에서 작업 이동 방법들 간의 차이점을 쉽게 이해하기 위하여 보다 구체적으로 설명할 필요가 있다. 이하에서 각각의 개념과 차이점을 설명한다.
프로세스(120)는 통상적으로 프로세서(110)에 할당되어 실행될 수 있는 개체로서 실행중인 프로그램을 의미한다. 프로세스(120)는 프로세서(110)를 점유하기 위해, 프로세서 할당 시간, 메모리(150), 파일, 입출력 장치(160)와 같은 물리적인 자원을 필요로 하며, 프로세스(120)가 생성되거나 실행될 때 이러한 자원들을 할당받게 된다. 또한, 프로세스(120)는 단순히 프로그램 코드 이외에도 현재의 활동 상태를 나타내는 프로그램 카운터(counter)와 프로세서(110)의 레지스터(register) 내용을 포함한다. 프로세스(120)들 간의 공용되는 프로그램인 데이터베이스, 문서 편집기 등은 재진입 프로그램(reentrant program)이라고 하며, 프로세스(120)는 이러한 재진입 프로그램을 위해 일시적인 데이터를 보관하는 스택(stack)과 공통 데이터를 보관하는 데이터 부분을 갖는다.
이상에서 설명한 프로세스(120)의 특징은 크게 프로그램 실행을 위한 자원과 실행되는 제어의 흐름(디스패칭(dispatching)의 대상 객체라고 볼 수 있다.)의 2 가지 요소로 요약할 수 있다. 우선, 자원의 관점에서 볼 때, 운영 체제는 프로세스(120)를 저장하고 표현하기 위한 프로세스 제어 블럭(PCB; process control block)과 같은 정보를 갖고 있어야 하므로 프로세스(120)의 생성 및 유지 관리에 많은 비용이 필요하다. 다음으로, 제어의 흐름의 관점에서 하나의 프로세스(120)는 다수의 실행 단위들로 구성될 수 있다. 즉, 하나의 프로세스(120)를 실행함에 있어서 각각 하나의 실행 포인터만 존재하는 다수의 실행 단위들이 포함될 수 있다. 여기서, 실행 단위를 스레드(130) 또는 경량 프로세스(LWP; light weight process) 처리라고 하며, 자원 단위의 처리를 프로세스(120) 또는 작업(task)이라고 한다.
스레드(130)는 프로세스(120)와 마찬가지로 프로세서(110)를 이용하는 기본 단위이면서 프로그램 명령을 실행하는 프로세스 내의 개체, 즉 명령어를 독립적으로 실행할 수 있는 하나의 제어 흐름이다. 스레드(130)는 같은 그룹의 스레드들과 코드, 주소 공간, 운영 체제의 자원인 파일, 신호 등을 공유하며, 이러한 스레드의 그룹을 프로세스(120)라고 볼 수 있다. 즉, 하나의 프로세스(120)를 중량 프로세스(HWP; heavy weight process)라고도 하며, 하나의 프로세스(120)는 하나 이상의 스레드(130)를 포함한다.
과거 MS-DOS와 같은 전통적인 운영 체제 하에서 하나의 프로세스에서 하나의 스레드만을 실행할 수 있는 단일 스레드 지원 시스템도 있었으나, 본 발명의 다양한 실시예들은 하나의 프로세스에서 다수의 스레드들을 실행할 수 있는 다중 스레 드 지원 시스템을 가정하고 있다. 다중 스레드 지원 시스템은 하나의 프로세스 내에 하나 이상의 스레드를 포함하고, 각각의 스레드들은 해당 프로세스의 자원과 상태를 공유하며 같은 주소 공간에 존재하면서 동일한 데이터에 접근한다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 이러한 다중 스레드 지원 시스템의 예로서 범용 운영 체제로서 윈도우즈 NT, 솔라리스(solaris) 등이 있으며, 임베디드 운영 체제로서 윈도우즈 CE 등이 있음을 알 수 있다.
이러한 다중 스레드 지원 시스템에 기초하여 도 1을 살펴보면, 프로세서(110) 상에서 작업을 처리하는 단위인 프로세스(120)는 타원으로 도시되어 있다. 프로세스(110) 상에 지그재그 모양의 실로 표현된 것은 스레드(130)를 나타내는 것으로 하나의 프로세스(110)는 하나 이상의 스레드(120)를 포함한다. 각각의 스레드(120)들은 스택과 레지스터를 가지고 있으며, 이러한 스레드(120)는 명령어를 독립적으로 실행하는 실행 단위를 나타낸다. 하나의 프로세스(120)는 코드, 데이터 및 파일과 같은 공유 데이터(140)를 가지고 있는데, 특정 프로세스에 포함되는 동일 그룹의 스레드들은 이러한 공유 데이터(140)를 공유하게 된다. 도 1에서 하나의 프로세스(120)에는 하나의 공유 데이터(140)가 대응되고 있으며, 하나의 프로세스(120)에 포함되는 스레드(130)들이 공유 데이터(140)를 공유하고 있음을 볼 230수 있다.
도 1과 같이 프로세스와 스레드가 공존하는 본 실시예의 환경 하에서, 프로세스의 생성 및 종료에 비해 스레드의 생성 및 종료 과정이 더 빠르고 적은 로드(load)를 발생시키며, 또한 스레드는 동일 프로세스 내에서 스레드 간의 빠른 작업 교환이 가능하다는 특징이 있다. 왜냐하면, 스레드는 각각 자신의 스택 및 레지스터 상태를 가지면서도 동일 프로세서 내의 자원들을 공유하므로, 스레드의 생성 및 스레드들 간의 작업 교환은 프로세스 생성 및 프로세스들 간의 작업 교환에 비해 보다 높은 효율과 경제성을 보장할 수 있기 때문이다.
이상에서 설명한 프로세스 및 스레드의 특징 및 차이점에 기초하여, 이하에서는 본 발명의 실시예들이 구현되는 다중 프로세서 시스템에서 작업을 이동하는 방법에 관하여 설명한다. 앞서 설명한 바와 같이 다중 프로세서 시스템에서는 로드 불균형이 발생하거나 특정 프로세서에서 전력 소모가 집중되는 현상이 발생함으로 인해 하나의 프로세서로부터 다른 프로세서로 작업을 이동시킬 필요가 있다. 이러한 작업 이동은 이동 대상에 따라 크게 프로세스 이동과 스레드 이동으로 구분할 수 있다. 여기서, 프로세스 이동은 운영 체제에서 작업 이동을 요구할 때 해당 작업을 수행하는 프로세스 자체를 이동시키는 것을 의미하고, 스레드 이동은 프로세스에 포함된 스레드만을 이동시키는 것을 의미하는 용어로서, 도 2a 내지 도 2d를 참조하여 보다 구체적으로 설명한다.
도 2a는 다중 프로세서 시스템에서 운영 체제, 보다 구체적으로는 운영 체제의 스케줄러(scheduler)가 작업 이동을 요청하기 전의 상황을 설명하기 위한 도면으로, 도 1에서 설명한 물리적인 환경에서 BUS와 ARM만을 발췌하여 도시한 것이다. 프로세서(210), 프로세스(220) 및 스레드(230)는 앞서 설명한 논리적인 개념과 동일한 것이며, 데이터(240)는 프로세서(210)가 처리할 대상 객체를 나타내는 것으로 프로세서(210)들에 할당된 각각의 스레드(230)들에 대응된다. 도 2a에서 어두운 색 깔로 표시된 프로세스 222와 프로세스 223은 동일한 코드를 수행하는 프로세스를 의미하며, 양 프로세스들(222, 223)은 처리할 데이터만 C와 D로 다르다. 이하에서는 이렇게 수행하는 명령어 코드는 동일하지만, 처리할 대상만이 다른 프로세스를 클론 프로세스(clone process)라고 명명하겠다. 이러한 클론 프로세스는 일반적으로 데이터 수준의 병렬화(data level parallelism)를 구현하기 위해 생성된다.
도 2a에서는 ARM 1에 3 개의 프로세스와 스레드가 할당되어 있고, ARM 2에 1개의 작업들(프로세스들 또는 스레드들)이 할당되어 있는 상황을 가정하고 있다. 이 때, ARM 1에 할당된 작업들이 ARM 2에 할당된 작업들에 비해 상대적으로 많은 로드를 발생시킨다고 가정할 때, 운영 체제는 ARM 1에서 ARM 2로 작업들 중 일부를 이동시키고자 할 것이다. 또는, 저전력 환경 하에서 ARM 1에 할당된 작업들이 소모하는 전력량이 너무 많아 ARM 2와의 전력 소모량의 차이가 지나치게 크다고 판단될 경우, 역시 운영 체제는 작업을 이동시키고자 할 것이다. 이러한 상황 하에서 도 2b 및 도 2c를 참조하여 각각 프로세스 이동과 스레드 이동 방법을 설명한다.
도 2b는 프로세스 이동 방법에 따라 작업을 이동시키는 방법을 설명하기 위한 도면으로, 도 2a의 상황에서 프로세스 221과 프로세스 222를 ARM 1에서 ARM 2로 이동시킨 결과를 도시한 것이다. 도 2a에서 ARM 1에 할당되어 있던 프로세스 221과 프로세스 222에 포함된 스레드 및 관련 작업들(B, C, D) 모두가 ARM 2로 그대로 이동한 것을 확인할 수 있다.
여기서, 도 2b에서 ARM 2에 할당되어 있는 프로세스 222와 프로세스 223가 서로 클론 프로세스임을 주목하자. 앞서 설명한 바와 같이 클론 프로세스란 수행할 명령이 동일하고 처리할 데이터가 상이한 프로세스를 의미한다. 이러한 클론 프로세스가 서로 다른 프로세서(도 2b에서는 ARM 1 및 ARM 2)에서 각각 할당되어 작업을 실행하고 있을 때에는 전혀 문제가 없는데 반해, 클론 프로세스가 동일한 프로세서(도 2b에서는 ARM 2)에 할당되어 작업을 실행할 경우에는 불필요한 자원을 낭비하는 문제점이 있다. 왜냐하면, 도시된 프로세스 222와 프로세스 223은 대상 데이터만이 다를 뿐, 수행할 명령이 동일하므로 동일한 코드를 실행하게 되므로 하나의 프로세서(ARM 2)에서 불필요한 중복 코드를 2 개나 실행하고 있는 결과를 초래한다. 또한, 작업 이동시에도 ARM 2에 이미 프로세스 223을 위한 코드가 할당되어 있음에도 불구하고, ARM 1로부터 동일한 코드를 이동시킴으로써 메모리의 낭비와 작업 이동에 따른 오버헤드(overhead)를 발생시킨다. 이상과 같은 프로세스 이동 방법과 관련한 문제점들을 해결하기 위해 이하의 도 2c에서는 스레드 이동 방법을 제시하고 있다.
도 2c는 스레드 이동 방법에 따라 작업을 이동시키는 방법을 설명하기 위한 도면으로, 도 2a의 상황에서 프로세스 222에 포함된 스레드를 ARM 1에서 ARM 2로 이동시킨 결과를 도시한 것이다. 도 2a에서 ARM 1에 할당된 프로세스 222와 ARM 2에 할당된 프로세스 223이 서로 클론 프로세스라는 점, 즉 명령어 실행을 위한 코드가 중복된다는 점에 착안하여, 도 2c에서는 프로세스 222 전체를 이동시키지 않고, 프로세스 222에 포함된 스레드와 대상 데이터 C만을 이동시키고 있다. 이동된 스레드와 데이터 C가 프로세스 223에 할당되어 작업을 수행함은 당연하다. 이러한 스레드 이동 방법은 앞서 설명한 도 2b의 프로세스 이동 방법에 비해 작업 이동에 소요되는 비용이 절감되고, 프로세서에 할당된 프로세스의 수도 줄여줌으로써 시스템 전체의 오버헤드가 감소하는 효과가 나타난다.
그러나, 도 2c에서 추가적으로 프로세스 221에 포함된 스레드를 ARM 1에서 ARM 2로 이동시키려고 하는 경우를 가정하자. 이 때, ARM 1와 ARM 2에는 클론 프로세스가 없으므로, 스레드 이동이 불가능하다는 문제점이 발생한다. 이러한 문제점은 작업 이동이 요청될 때, 도 2b의 프로세스 이동 방법과 도 2c의 스레드 이동 방법이 서로 유연하게 혼합되어 사용되지 않고 각각 한 가지 방법만을 선택하여야만 하는 구조적 경직성에 기인한다. 따라서, 이하에서 설명할 본 발명의 실시예들에서는 작업 이동이 요청될 때에 클론 프로세스의 존재 여부에 기초해 프로세스 이동 방법과 스레드 이동 방법 중 어느 하나를 선택하여 작업 이동을 수행하는 방법을 제시한다.
도 2d는 앞서 설명한 도 2c의 상황에서 다시 프로세스 221을 ARM 1에서 ARM 2로 이동시키는 방법을 설명하기 위한 도면으로서, 이전 작업 이동에서 스레드 이동 방법에 따라 작업을 이동시킨 상황을 가정한다. 본 발명의 일 실시예에 따르면 비록 이전 작업 이동에서는 스레드 이동 방법을 사용하였을지라도 현재의 작업 이동시에는 클론 프로세스가 존재하는지 여부를 검사한 후, 프로세스 이동 방법이나 스레드 이동 방법 중 어느 하나의 방법을 선택하여 작업 이동을 수행한다. 도 2d에는 프로세스 221에 대응하는 클론 프로세스가 존재하지 않으므로, 본 실시예는 프로세스 이동 방법에 따라 프로세스 221을 ARM 1에서 ARM 2로 이동시켰다.
이상에서 본 발명의 실시예들이 채용하고 있는 발명의 기본 개념을 설명하였 다. 이하에서는 이러한 실시예들을 구현하기 위한 보다 상세한 구성에 대하여 설명한다.
도 3은 본 발명의 일 실시예에 따른 다중 프로세서 시스템에서 작업을 이동하는 장치를 도시한 도면으로서, BUS(300), 다중 프로세서(310), 스케줄러(320) 및 작업 이동 테이블(task migration table)(330)을 포함한다. 도 1에서와 마찬가지로 메모리, 입출력 장치, 디스크 등의 장치가 포함될 수 있으나 편의상 생략하였다. 다중 프로세서(310)가 2 개 이상의 프로세서들을 포함할 수 있음은 당연하다. 스케줄러(320)는 운영 체제 내에서 다수의 작업들 또는 프로세스들을 다수의 프로세서들에 적절하게 할당하는 역할을 수행하는데, 본 실시예에서는 작업 이동을 위해 프로세스 이동 방법과 스레드 이동 방법을 선택하는 주체가 된다. 이러한 스케줄러(320)는 다시 프로세서 선택부(321), 검사부(322), 이동 방법 선택부(323), 작업 이동부(324) 및 클론 프로세스 정보 생성부(325)를 포함한다. 이하에서 각각을 자세히 설명한다.
프로세서 선택부(321)는 다중 프로세서들의 로드 또는 전력 소모량에 기초하여 복수 개의 프로세서들 중에서 작업을 이동시킬 소스(source) 프로세서와 대상 프로세서를 선택한다. 여기서, 소스 프로세서는 로드 또는 전력 소모량이 많은 프로세서가 될 것이고, 대상 프로세서는 소스 프로세서에 비해 상대적으로 로드 또는 전력 소모량이 적은 프로세서가 될 것이다.
검사부(322)는 소스 프로세서에 할당된 프로세스와 수행할 명령이 동일하고 처리할 데이터가 상이한 클론 프로세스가 대상 프로세서에 할당되어 있는지 여부를 검사한다. 이를 위해 클론 프로세스 정보 생성부(325)를 먼저 설명한다.
클론 프로세스 정보 생성부(325)는 이미 생성된 프로세스들과 수행할 명령이 동일하고 처리할 데이터가 상이한지 여부를 나타내는 클론 프로세스 정보를 생성한다. 이러한 클론 프로세스 정보 생성부(325)는 컴파일시(compile time)에 생성된 병렬화(parallelization) 정보로부터 각각의 프로세스들이 프로세서들에 할당되는 정보를 추출함으로써 클론 프로세스 정보를 생성할 수 있다. 병렬화 정보는 스케줄러가 작업을 수행할 프로세스들을 각각의 프로세서들에 어떻게 분배하여 할당할 것인지에 관한 정보를 말한다. 이러한 정보들은 스케줄링 프로그램을 생성할 때에 미리 정해진 알고리즘에 따라 할당 규칙이 정해질 수 있으므로, 클론 프로세스들이 어떻게 생성되는지에 관한 정보를 추출할 수 있다.
또 다른 방법으로, 클론 프로세스 정보 생성부(325)는 실시간으로 프로세스들의 생성 정보를 추적(track)함으로써 상기 클론 프로세스 정보를 생성할 수 있다. 예를 들어, UNIX 기반의 시스템 등에서 프로세스를 실행할 때 호출하는 folk() 함수와 같이, 프로세스를 생성하기 위해 호출되는 함수나 동작을 추적하면 동일한 코드를 갖는 클론 프로세스 정보를 프로세스 생성시에 실시간으로 추출할 수 있다.
이렇게 생성된 클론 프로세스 정보는 검사부(332)에 제공되어 클론 프로세스의 존재 여부를 판단하는 근거로 활용될 수 있으나, 필요에 따라 별도의 작업 이동 테이블(330)에 저장될 수도 있다.
작업 이동 테이블(330)은 이동 대상 프로세스들 각각에 대응하여 클론 프로 세스 정보 및 해당 프로세스에 포함된 스레드 정보를 저장하는 논리적인 데이터 구조 또는 물리적인 저장 장치가 될 수 있다. 즉, 작업 이동 테이블(330)은 클론 프로세스 정보 생성부(325)에 의해 생성된 클론 프로세스 정보를 저장하는 메모리, 디스크 또는 이에 상응하는 하드웨어로 구현될 수 있다. 작업 이동 테이블(330)의 데이터 구조와 이를 이용하는 구체적인 방법은 이후에 다시 자세히 설명한다.
검사부(322)는 클론 프로세스 정보 생성부(325)에서 생성된 클론 프로세스 정보에 기초하여 이동 대상 프로세스와 수행할 명령이 동일하고 처리할 데이터가 상이한 클론 프로세스를 탐색하고, 탐색된 클론 프로세스가 대상 프로세서에 할당되어 있는지 여부를 판단한다. 왜냐하면, 이동시키고자 하는 프로세스에 대응하는 클론 프로세스가 존재하더라고 이러한 클론 프로세스가 대상 프로세서에 할당되어 있지 않다면, 스레드 이동을 수행할 수 없기 때문이다.
다음으로, 이동 방법 선택부(323)는 검사부(322)에 의한 검사 결과에 따라 작업 이동 방법으로서 프로세스 이동 방법과 해당 프로세스에 포함된 스레드만을 이동시키는 스레드 이동 방법 중 어느 하나를 선택한다. 이러한 이동 방법 선택부(323)는 물리적으로 메모리 상에 구현된 소프트웨어(software)로도 구현 가능하지만, 빠른 성능을 위해 논리 회로와 같은 하드웨어(hardware)로도 구현할 수도 있을 것이다. 구체적으로 이동 방법 선택부(323)는 대상 프로세서에 클론 프로세스가 할당되어 있는 경우 해당 프로세스에 포함된 스레드만을 이동시키는 스레드 이동 방법을 선택하고, 반대로 대상 프로세서에 클론 프로세스가 할당되어 있지 않을 경우 해당 프로세스 자체를 이동시키는 프로세스 이동 방법을 선택한다.
마지막으로, 작업 이동부(324)는 이동 방법 선택부(323)에 의해 선택된 이동 방법에 따라 소스 프로세서로부터 대상 프로세서로 작업을 이동시킨다. 만약 이동 방법 선택부(323)가 프로세스 이동 방법을 선택하였다면 이동 대상 프로세스를 직접 소스 프로세서(실제로는 소스 프로세서에 할당하는 작업 큐(queue)가 될 것이다.)로부터 대상 프로세서(실제로는 대상 프로세서에 할당하는 작업 큐가 될 것이다.)로 이동시키고, 스레드 이동 방법을 선택하였다면 해당 데이터를 처리하는 스레드만을 클론 프로세스로 이동시킬 것이다. 이 경우, 스레드 이동으로 인해 원래의 프로세스에 더 이상 잔여 스레드가 없다면 해당 프로세스는 더 이상 수행할 작업이 없으므로 스케줄러(320)에 의해 종료될 것이다.
이상에서 다중 프로세서 시스템에서 작업을 이동하는 장치에 관하여 설명하였다. 본 실시예에 따르면 로드 불균형이 발생하거나 특정 프로세서에서 전력 소모가 집중되는 현상이 발생함으로 인해 운영 체제로부터 작업 이동에 대한 요청이 있을 때, 클론 프로세스의 존재 여부에 따라 프로세스 이동 방법과 스레드 이동 방법 중 어느 하나의 방법을 실시간으로 선택함으로써, 작업 이동에 소요되는 비용 및 전력 소모량을 최소화할 수 있다. 그 결과, 임베디드 시스템과 같이 저전력 환경 하에서의 전력 소모를 균일하게 유지함으로써 시스템의 성능을 최적화함과 동시에 회로의 물리적인 손상을 방지할 수 있다.
도 4는 본 발명의 일 실시예에 따른 다중 프로세서 시스템에서 작업을 이동하는 방법을 도시한 흐름도로서 다음과 같은 단계들을 포함한다.
410 단계에서 제 1 프로세서(소스 프로세서를 의미한다.)에 할당된 제 1 프 로세스와 수행할 명령이 동일하고 처리할 데이터가 상이한 제 2 프로세스(클론 프로세스를 의미한다.)가 제 2 프로세서(대상 프로세서를 의미한다.)에 할당되어 있는지 여부를 검사한다. 본 단계에 앞서 소스 프로세서와 대상 프로세서를 선택하는 과정이 선행할 수 있음은 당연하다.
420 단계에서 410 단계의 검사 결과에 따라 작업 이동 방법으로서 제 1 프로세스를 이동시키는 방법과 제 1 프로세스에 포함된 스레드만을 이동시키는 방법 중 어느 하나를 선택한다. 즉, 제 2 프로세서에 제 2 프로세스가 할당되어 있는 경우 스레드만을 이동시키는 스레드 이동 방법을 선택하고, 제 2 프로세서에 제 2 프로세스가 할당되어 있지 않을 경우 제 1 프로세스를 이동시키는 프로세스 이동 방법을 선택한다.
430 단계에서 420 단계를 통해 선택된 이동 방법에 따라 제 1 프로세서로부터 제 2 프로세서로 작업을 이동시킨다.
도 5는 본 발명의 다른 실시예에 따른 다중 프로세서 시스템에서 작업 이동 테이블을 이용하여 작업을 이동하는 방법을 설명하기 위한 도면으로서, 앞서 도 3에서 설명한 작업 이동 테이블의 구조와 이를 활용하는 방법을 제시한다.
작업 이동 테이블(500)은 다중 프로세서 시스템의 이동 대상 프로세스들 각각에 대응하여 다음과 같은 정보들을 포함할 수 있다. 이들 정보들은 본 실시예의 기술 사상이 동일 또는 유사하게 유지되는 한도 내에서 구현 환경에 따라 유연하게 구성될 수 있을 것이다.
첫째, 작업 이동 테이블(500)은 클론 프로세스 정보를 포함한다. 클론 프로 세스 정보는 클론 프로세스가 존재하는지 여부와 어떤 프로세스가 클론 프로세스인지 여부 등을 저장할 수 있다. 이러한 정보들은 간단한 비트(bit)를 이용한 플래그(flag)나 대응하는 프로세스 ID와 같은 정보를 기록하는 방법 등으로 구현될 수 있다. 둘째, 작업 이동 테이블(500)은 프로세스와 해당 프로세스에 포함된 스레드 정보를 저장하는 작업 정보를 포함한다. 셋째, 작업 이동 테이블(500)은 이러한 프로세스들이 어떠한 프로세서에 할당될지 또는 할당되어 있는지 여부를 나타내는 코어(core) 정보를 포함한다. 넷째, 작업 이동 테이블(500)은 프로세스들이 어떤 소스 프로세서에서 대상 프로세서로 이동하는지에 관한 정보를 포함한다. 물론, 실제적으로 프로세스들은 프로세서들에 직접 이동하는 것이 아니라 프로세서들에 작업을 할당하는 작업 큐에 입력(enqueue)될 것이다.
도 5에는 작업 이동을 관리하는 3 개의 메모리 상주 프로그램인 데몬(daemon)들이 예시되어 있다. 이하에서는 각각의 데몬들의 역할과 작업 이동 절차를 설명한다.
마스터 이동 데몬(master migration daemon)(510)은 시스템 전체의 작업 이동을 관리하는 최상위 관리자로서, 작업 이동 테이블(500)을 모니터링(monitoring)하면서 작업 이동 요청을 처리한다. 로드 불균형이 발생하거나 특정 프로세서에서 전력 소모가 집중되는 현상이 발생하면, 마스터 이동 데몬은 작업을 이동시킬 작업들을 선택한다. 즉, 현재 작업이 할당되어 있는 소스 프로세서와 선택된 작업을 이동시킬 대상 프로세서를 선택한다. 프로세서 선택의 관점에서 마스터 이동 데몬(510)은 앞서 도 3을 통해 설명한 프로세서 선택부(도 3의 321)에 대응되는 개 념일 수 있다. 이어서, 마스터 이동 데몬(510)은 선택된 작업의 이동 비트(bit)를 설정함으로써 이동이 시작됨을 표시한다. 여기서, 이동 비트를 설정한다는 것은 마스터 이동 데몬(510)이 작업 이동 테이블(500)에 저장된 프로세스의 이동 정보를 특정 비트로 설정한다는 것을 의미한다.
소스 슬레이브 이동 데몬(source slave migration daemon)(520)은 다중 프로세서들 각각에 대응하여 해당 프로세서의 작업 이동을 관리한다. 소스 슬레이브 이동 데몬(520)은 작업 이동 테이블(500)에서 마스터 이동 데몬(510)에 의해 설정된 이동 비트를 통해 이동 대상 작업을 감지한 후, 설정된 이동 비트를 클리어(clear)함으로써 이동이 준비됨을 표시한다.
이어서, 마스터 이동 데몬(510)은 이동 비트가 클리어되었음을 감지하고, 작업 이동 테이블(500)에서 이동 대상 프로세스에 대응하는 클론 프로세스가 존재하는지 여부를 검사한다. 검사 결과에 따라 프로세스 이동 방법 또는 스레드 이동 방법 중 어느 하나를 선택하는 것은 앞서 설명한 바와 같다. 마스터 이동 데몬(510)은 이렇게 선택된 이동 방법과 이동 대상에 관한 메시지를 수신 슬레이브 이동 데몬(530)으로 전송한다.
수신 슬레이브 이동 데몬(destination slave migration daemon)(530)은 마스터 이동 데몬(510)으로부터 수신한 메시지에 따라 작업 이동을 수행한다. 작업 이동이 완료되었다면, 수신 슬레이브 이동 데몬(530)은 작업 이동 테이브(500)에 기록된 이동이 완료된 프로세스의 내용을 갱신한다. 즉, 스레드 이동에 의해 클론 프로세스가 종료되었다면 클론 프로세스 정보를 삭제하고, 프로세스 내에 포함되어 있는 스레드 정보의 변경 내용을 기록하고, 할당된 프로세서를 갱신하며, 이동 정보를 삭제한다.
이상에서 다중 프로세서 시스템에서 작업 이동 테이블을 이용하여 작업을 이동하는 방법을 설명하였다. 본 실시예에 따르면 작업 이동 테이블에 기록된 프로세스 정보를 탐색하여 이동 대상 프로세스에 대응하는 클론 프로세스의 존재 여부를 용이하게 파악할 수 있고, 메모리 상주 프로그램인 데몬을 이용함으로써 효율적으로 작업 이동을 관리할 수 있다.
도 6a 및 도 6b는 각각 본 발명의 일 실시예에 따른 다중 프로세서 시스템에서 작업을 이동시키기 위해 라이브러리(library) 형태로 구현된 프로그램 코드를 예시한 도면과 그에 따른 제어 순서를 도시한 도면이다.
도 6a에서 main() 함수는 대칭키 암호화 알고리즘의 일종인 DES(data encryption standard) 알고리즘을 예시한 것으로서, 문맥(context)이 복원하여 mg_id를 검사하고, mg_id 값이 0인 경우 암호화할 소스 데이터로서 plain_buffer에 문자열을 입력받은 후, 키(key)로 암호화하여 그 결과를 cipher_buffer에 기록하여 출력한다. 여기서, restore()는 문맥을 복원하는 함수이고, migration_point()는 작업 이동 여부를 확인하여 문맥을 저장하거나 복원하는 함수이고, read_data()는 문자열과 키를 입력받는 함수이고, do_des()는 DES 암호화를 수행하는 함수이며, write_data()는 암호화된 결과를 기록하는 함수를 나타낸다.
도 6a에서 프로그램은 migration_point()에 도착할 때마다 이동 비트(migration bit)가 설정되어 있는지 여부를 검사하고, 만약 이동 비트가 설정 되어 있다면 현재의 문맥을 저장하고 수행을 종료한다. 이어서, 대상 프로세서(작업이 이동될 수신 프로세서를 의미한다.)에서 프로세스 이동 방법을 선택하였다면, 예시된 프로그램의 구현에서는 소스 프로세서에 할당되었던 프로세스와 동일한 프로세스를 새롭게 생성한다. 새롭게 생성된 프로세스는 main()에서부터 수행되다가 restore() 함수에서 이전에 수행되었던 문맥을 복원하고, 수행이 종료되었던 migration_point() 다음부터 이어서 프로그램을 수행하게 된다. 도 6b에서 migration_point()는 610을 나타내고, 검사 결과 이동 비트가 설정되었다면 620으로 분기하여 현재의 문맥을 저장하고 수행을 종료한다.
다시 도 6a로 돌아와서, 대상 프로세서에서 스레드 이동 방법을 선택하였다면, 새로운 스레드가 생성될 프로세스(클론 프로세스를 의미한다.)가 migration_point()에 도착했을 때, 이동 비트가 설정되어 있으면 새로운 스레드를 생성하고, 생성된 새로운 스레드는 기존에 수행되던 문맥을 복원하여 기존 프로세스와 새로운 스레드가 같이 수행될 수 있도록 한다. 도 6b에서 스레드 이동 방법을 선택한 경우 620으로 분기하여 스레드를 생성하고 문맥을 복원한 후, migration_point()를 나타내는 610 지점으로 돌아와 프로그램을 계속하여 수행하게 된다.
이상에서 본 발명의 일 실시예에 따른 다중 프로세서 시스템에서 작업을 이동시키기 위해 라이브러리 형태로 구현된 프로그램 코드를 예시하였으나, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 이상에서 예시한 실시예들의 원리를 도 6a와 같은 라이브러리 형태로 구현된 프로그램 코드 이외에 운영 체제의 커널(kernel)의 모듈(module) 형태로 구현하거나, 또는 작업 이동 테이블의 기능을 하드웨어로서 구현할 수 있음을 용이하게 도출할 수 있다.
한편, 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이상에서 본 발명에 대하여 그 다양한 실시예들을 중심으로 살펴보았다. 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 본 발명의 일 실시예가 구현되는 환경을 설명하기 위한 도면이다.
도 2a 내지 도 2d는 다중 프로세서 시스템에서 작업을 이동하는 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 다중 프로세서 시스템에서 작업을 이동하는 장치를 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 다중 프로세서 시스템에서 작업을 이동하는 방법을 도시한 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 다중 프로세서 시스템에서 작업 이동 테이블을 이용하여 작업을 이동하는 방법을 설명하기 위한 도면이다.
도 6a 및 도 6b는 각각 본 발명의 일 실시예에 따른 다중 프로세서 시스템에서 작업을 이동시키기 위한 프로그램 코드 및 이에 따른 제어 순서를 예시한 도면이다.

Claims (15)

  1. 복수 개의 프로세서(processor)들을 구비한 다중 프로세서 시스템에서 상기 프로세서들 중 제 1 프로세서가 처리하려는 작업을 상기 프로세서들 중 제 2 프로세서로 이동시키는 작업 이동 방법에 있어서,
    상기 작업을 수행하려는 제 1 프로세스(process)와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는지 여부를 검사하는 단계;
    상기 검사 결과에 따라 상기 작업 이동 방법으로서 상기 제 1 프로세스를 이동시키는 방법과 상기 제 1 프로세스에 포함된 스레드(thread)만을 이동시키는 방법 중 어느 하나를 선택하는 단계; 및
    상기 선택된 이동 방법에 따라 상기 제 1 프로세서로부터 상기 제 2 프로세서로 상기 작업을 이동시키는 단계를 포함하고,
    상기 선택하는 단계는,
    상기 검사하는 단계에서 상기 제 1 프로세스(process)와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는 경우에는 상기 제 1 프로세스를 이동시키는 방법을 선택하고, 그렇지 않은 경우에는 상기 제 1프로세스에 포함된 스레드만을 이동시키는 것을 특징으로 하는 작업 이동 방법.
  2. 제 1 항에 있어서,
    상기 이동 방법을 선택하는 단계는
    상기 제 2 프로세서에 상기 제 2 프로세스가 할당되어 있는 경우 상기 스레드만을 이동시키는 스레드 이동 방법을 선택하고,
    상기 제 2 프로세서에 상기 제 2 프로세스가 할당되어 있지 않을 경우 상기 제 1 프로세스를 이동시키는 프로세스 이동 방법을 선택하는 것을 특징으로 하는 작업 이동 방법.
  3. 제 1 항에 있어서,
    이미 생성된 프로세스들과 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한지 여부를 나타내는 클론 프로세스(clone process) 정보를 생성하는 단계를 더 포함하고,
    상기 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는지 여부를 검사하는 단계는
    상기 생성된 클론 프로세스 정보에 기초하여 상기 다중 프로세서 시스템 내의 복수 개의 프로세스들 중에서 상기 제 1 프로세스와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스를 탐색하는 단계; 및
    상기 탐색된 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는지 여부를 판단하는 단계를 포함하는 것을 특징으로 하는 작업 이동 방법.
  4. 제 3 항에 있어서,
    상기 클론 프로세스 정보를 생성하는 단계는 상기 작업을 수행할 프로그램의 컴파일시(compile time)에 생성된 병렬화 정보로부터, 프로세서들이 상기 이미 생성된 각각의 프로세스들을 할당한 정보를 추출함으로써 상기 클론 프로세스 정보를 생성하는 것을 특징으로 하는 작업 이동 방법.
  5. 제 3 항에 있어서,
    상기 클론 프로세스 정보를 생성하는 단계는 실시간으로 프로세스들의 생성 정보를 추적함으로써 상기 클론 프로세스 정보를 생성하는 것을 특징으로 하는 작업 이동 방법.
  6. 제 3 항에 있어서,
    상기 이동 대상 프로세스들 각각에 대응하여 상기 클론 프로세스 정보 및 해당 프로세스에 포함된 스레드 정보를 저장하는 단계를 더 포함하는 것을 특징으로 하는 작업 이동 방법.
  7. 제 1 항에 있어서,
    상기 다중 프로세서들의 로드(load) 또는 전력 소모량에 기초하여 상기 제 1 프로세서 및 상기 제 2 프로세서를 선택하는 단계를 더 포함하고,
    상기 제 1 프로세서 및 상기 제 2 프로세서를 선택하는 단계는,
    상기 제 1 프로세서에 비해 상대적으로 로드 또는 전력 소모량이 적은 프로세서가 있는 경우에는, 상기 로드 또는 전력 소모량이 적은 프로세서를 상기 제 2 프로세서로 선택하는 단계를 포함하는 것을 특징으로 하는 작업 이동 방법.
  8. 제 1 항 내지 제 7 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  9. 복수 개의 프로세서들을 구비한 다중 프로세서 시스템에서 상기 프로세서들 중 제 1 프로세서가 처리하려는 작업을 상기 프로세서들 중 제 2 프로세서로 이동시키는 작업 이동 장치에 있어서,
    상기 작업을 수행하려는 제 1 프로세스와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는지 여부를 검사하는 검사부;
    상기 검사 결과에 따라 상기 작업 이동 방법으로서 상기 제 1 프로세스를 이동시키는 방법과 상기 제 1 프로세스에 포함된 스레드만을 이동시키는 방법 중 어느 하나를 선택하는 이동 방법 선택부; 및
    상기 선택된 이동 방법에 따라 상기 제 1 프로세서로부터 상기 제 2 프로세서로 상기 작업을 이동시키는 작업 이동부를 포함하고,
    상기 이동 방법 선택부는,
    상기 검사부에서, 상기 제 1 프로세스(process)와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는 경우에는 상기 제 1 프로세스를 이동시키는 방법을 선택하고, 그렇지 않은 경우에는 상기 제 1프로세스에 포함된 스레드만을 이동시키는 것을 특징으로 하는 작업 이동 장치.
  10. 제 9 항에 있어서,
    상기 이동 방법 선택부는
    상기 제 2 프로세서에 상기 제 2 프로세스가 할당되어 있는 경우 상기 스레드만을 이동시키는 스레드 이동 방법을 선택하고,
    상기 제 2 프로세서에 상기 제 2 프로세스가 할당되어 있지 않을 경우 상기 제 1 프로세스를 이동시키는 프로세스 이동 방법을 선택하는 것을 특징으로 하는 작업 이동 장치.
  11. 제 9 항에 있어서,
    이미 생성된 프로세스들과 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한지 여부를 나타내는 클론 프로세스 정보를 생성하는 클론 프로세스 정보 생성부를 더 포함하고,
    상기 검사부는
    상기 생성된 클론 프로세스 정보에 기초하여 상기 다중 프로세서 시스템 내의 복수 개의 프로세스들 중에서 상기 제 1 프로세스와 수행할 명령이 동일하고 상기 명령의 대상 데이터가 상이한 제 2 프로세스를 탐색하고,
    상기 탐색된 제 2 프로세스가 상기 제 2 프로세서에 할당되어 있는지 여부를 판단하는 것을 특징으로 하는 작업 이동 장치.
  12. 제 11 항에 있어서,
    상기 클론 프로세스 정보 생성부는 상기 작업을 수행할 프로그램의 컴파일시에 생성된 병렬화 정보로부터, 프로세스들이 상기 이미 생성된 각각의 프로세스들을 할당한 정보를 추출함으로써 상기 클론 프로세스 정보를 생성하는 것을 특징으로 하는 작업 이동 장치.
  13. 제 11 항에 있어서,
    상기 클론 프로세스 정보 생성부는 실시간으로 프로세스들의 생성 정보를 추 적함으로써 상기 클론 프로세스 정보를 생성하는 것을 특징으로 하는 작업 이동 장치.
  14. 제 11 항에 있어서,
    상기 이동 대상 프로세스들 각각에 대응하여 상기 클론 프로세스 정보 및 해당 프로세스에 포함된 스레드 정보를 저장하는 작업 이동 테이블을 더 포함하는 것을 특징으로 하는 작업 이동 장치.
  15. 제 9 항에 있어서,
    상기 다중 프로세서들의 로드 또는 전력 소모량에 기초하여 상기 제 1 프로세서 및 상기 제 2 프로세서를 선택하고, 상기 제 1 프로세서에 비해 상대적으로 로드 또는 전력 소모량이 적은 프로세서가 있는 경우에는, 상기 로드 또는 전력 소모량이 적은 프로세서를 상기 제 2 프로세서로 선택하는 프로세서 선택부를 더 포함하는 것을 특징으로 하는 작업 이동 장치.
KR1020080006704A 2008-01-22 2008-01-22 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 KR101400286B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080006704A KR101400286B1 (ko) 2008-01-22 2008-01-22 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
US12/216,149 US8171267B2 (en) 2008-01-22 2008-06-30 Method and apparatus for migrating task in multi-processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080006704A KR101400286B1 (ko) 2008-01-22 2008-01-22 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20090080753A KR20090080753A (ko) 2009-07-27
KR101400286B1 true KR101400286B1 (ko) 2014-05-26

Family

ID=40877480

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080006704A KR101400286B1 (ko) 2008-01-22 2008-01-22 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치

Country Status (2)

Country Link
US (1) US8171267B2 (ko)
KR (1) KR101400286B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529864B2 (en) * 2009-08-28 2016-12-27 Microsoft Technology Licensing, Llc Data mining electronic communications
US8498890B2 (en) * 2009-09-18 2013-07-30 International Business Machines Corporation Planning and orchestrating workflow instance migration
KR101697937B1 (ko) 2010-01-08 2017-02-01 삼성전자주식회사 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
KR101662030B1 (ko) * 2010-01-14 2016-10-14 삼성전자주식회사 태스크 이동 시스템 및 그 방법
JP5488697B2 (ja) * 2010-08-30 2014-05-14 富士通株式会社 マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
US8413158B2 (en) 2010-09-13 2013-04-02 International Business Machines Corporation Processor thread load balancing manager
US9075610B2 (en) * 2011-12-15 2015-07-07 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
US10185566B2 (en) 2012-04-27 2019-01-22 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
WO2014021995A1 (en) * 2012-07-31 2014-02-06 Empire Technology Development, Llc Thread migration across cores of a multi-core processor
KR102183274B1 (ko) * 2013-01-16 2020-11-26 에스케이플래닛 주식회사 분산 처리 시스템 및 그 방법, 그리고 이에 적용되는 장치
US9588804B2 (en) * 2014-01-21 2017-03-07 Qualcomm Incorporated System and method for synchronous task dispatch in a portable device
KR102205836B1 (ko) * 2014-01-29 2021-01-21 삼성전자 주식회사 태스크 스케줄링 방법 및 장치
US9652298B2 (en) * 2014-01-29 2017-05-16 Vmware, Inc. Power-aware scheduling
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
US9910700B2 (en) * 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
US10459759B2 (en) 2015-08-26 2019-10-29 Netapp, Inc. Migration between CPU cores
ES2703473B2 (es) * 2016-07-12 2020-10-22 Proximal Systems Corp Aparato, sistema y procedimiento de gestion de acoplamiento de intermediario

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3250729B2 (ja) 1999-01-22 2002-01-28 日本電気株式会社 プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体
JP3826848B2 (ja) 2002-06-07 2006-09-27 日本電気株式会社 動的負荷均等化方法および動的負荷均等化装置
JP2006260445A (ja) 2005-03-18 2006-09-28 Fujitsu Ltd マルチプロセッサシステム
KR20060132852A (ko) * 2004-02-20 2006-12-22 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010084893A (ko) 2000-11-24 2001-09-07 홍기수 통신망을 이용한 전자 상거래 방식에서의 할인 구매시스템 및 그 방법
KR100756766B1 (ko) 2001-12-26 2007-09-07 주식회사 하이닉스반도체 반도체 소자의 제조 방법
US20060037017A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another
US7437581B2 (en) 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
JP4448784B2 (ja) 2005-03-15 2010-04-14 株式会社日立製作所 並列計算機の同期方法及びプログラム
JP4717492B2 (ja) 2005-04-12 2011-07-06 富士通株式会社 マルチコアモデルシミュレータ
US7523344B2 (en) * 2006-05-08 2009-04-21 Sun Microsystems, Inc. Method and apparatus for facilitating process migration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3250729B2 (ja) 1999-01-22 2002-01-28 日本電気株式会社 プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体
JP3826848B2 (ja) 2002-06-07 2006-09-27 日本電気株式会社 動的負荷均等化方法および動的負荷均等化装置
KR20060132852A (ko) * 2004-02-20 2006-12-22 가부시키가이샤 소니 컴퓨터 엔터테인먼트 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치
JP2006260445A (ja) 2005-03-18 2006-09-28 Fujitsu Ltd マルチプロセッサシステム

Also Published As

Publication number Publication date
US8171267B2 (en) 2012-05-01
US20090187912A1 (en) 2009-07-23
KR20090080753A (ko) 2009-07-27

Similar Documents

Publication Publication Date Title
KR101400286B1 (ko) 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
Chen et al. GFlink: An in-memory computing architecture on heterogeneous CPU-GPU clusters for big data
US8205200B2 (en) Compiler-based scheduling optimization hints for user-level threads
US8484495B2 (en) Power management in a multi-processor computer system
US9146609B2 (en) Thread consolidation in processor cores
EP1963963A2 (en) Methods and apparatus for multi-core processing with dedicated thread management
US8578388B2 (en) Optimizing the performance of hybrid CPU systems based upon the thread type of applications to be run on the CPUs
KR20130080722A (ko) 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법
US20130346997A1 (en) Mechanism of supporting sub-communicator collectives with o(64) counters as opposed to one counter for each sub-communicator
US20210191757A1 (en) Sub-idle thread priority class
Sun et al. HPSO: Prefetching based scheduling to improve data locality for MapReduce clusters
US8862786B2 (en) Program execution with improved power efficiency
Norollah et al. Efficient scheduling of dependent tasks in many-core real-time system using a hardware scheduler
US20170017525A1 (en) Honoring hardware entitlement of a hardware thread
CN111124599A (zh) 虚拟机内存数据迁移方法、装置、电子设备及存储介质
Olivier et al. OS support for thread migration and distribution in the fully heterogeneous datacenter
Scogland et al. Asymmetric interactions in symmetric multi-core systems: analysis, enhancements and evaluation
Queudet et al. KTS: a real-time mapping algorithm for NoC-based many-cores
KR101332839B1 (ko) 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
CN117407054A (zh) 中断处理方法、电子设备和存储介质
Czarnul A multithreaded CUDA and OpenMP based power‐aware programming framework for multi‐node GPU systems
Jeong et al. Demand memcpy: Overlapping of computation and data transfer for heterogeneous computing
Ren et al. Efficient shuffle management for DAG computing frameworks based on the FRQ model
US11467836B2 (en) Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core
Sun et al. Energy optimization of mixed-criticality distributed real-time embedded systems

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: 20170418

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180423

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190422

Year of fee payment: 6