KR101548068B1 - 운영 체제를 구동하는 프로세서 코어들의 동적 할당 - Google Patents

운영 체제를 구동하는 프로세서 코어들의 동적 할당 Download PDF

Info

Publication number
KR101548068B1
KR101548068B1 KR1020137028252A KR20137028252A KR101548068B1 KR 101548068 B1 KR101548068 B1 KR 101548068B1 KR 1020137028252 A KR1020137028252 A KR 1020137028252A KR 20137028252 A KR20137028252 A KR 20137028252A KR 101548068 B1 KR101548068 B1 KR 101548068B1
Authority
KR
South Korea
Prior art keywords
core
cores
program
operating system
token
Prior art date
Application number
KR1020137028252A
Other languages
English (en)
Other versions
KR20140002012A (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 심볼테크놀로지스,인코포레이티드
Publication of KR20140002012A publication Critical patent/KR20140002012A/ko
Application granted granted Critical
Publication of KR101548068B1 publication Critical patent/KR101548068B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • 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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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)
  • Power Sources (AREA)

Abstract

운영 체제를 구동하는 컴퓨터 내의 다중 프로세서 코어들의 동적 할당을 위한 방법 및 장치는 각 준비상태 큐로부터의 명령을 처리하지 못하게 코어를 정지시키는 동작을 하는 프로그램을 제공하는 것(300)을 포함한다. 다음 단계는 상기 프로그램의 실행을 허용하게 하기 위해서 이용가능한 토큰의 최대 카운트를 설정하는 것(302) - 여기서 최대 카운트는 전체 코어의 수보다 적음 - 을 포함한다. 다음 단계는 상기 코어들이 토큰을 획득하는 것(304) - 여기서 적어도 하나의 코어는 토큰을 획득할 수 없음 - 을 포함한다. 한 코어가 토큰을 획득한 경우(306), 상기 코어가 상기 프로그램을 실행하고(308), 그렇지 않은 경우에는, 상기 코어는 상기 프로그램을 실행하지 않으며 그 코어의 각 준비상태 큐로부터의 명령을 처리하기 위해서 활성 상태를 유지한다(310).

Description

운영 체제를 구동하는 프로세서 코어들의 동적 할당{DYNAMIC ALLOCATION OF PROCESSOR CORES RUNNING AN OPERATION SYSTEM}
본 발명은 일반적으로 다중-코어 컴퓨터 프로세서에 관한 것이며, 특히 운영 체제를 구동하는 프로세서 코어들의 동적 할당에 관한 것이다.
현재, 예를 들어 Microsoft® Windows® 7 운영 체제와 같은 운영 체제(OS)를 서비스하는 다중 코어를 갖는 다중-코어 프로세서 머신이 존재한다. 그러한 머신들은 작동중인 각 프로세서 코어를 위해 증가한 양의 전력을 이용하는데, 이는 모바일 기기와 같이 배터리 전력으로 동작하는 이들 머신에는 단점일 수 있다. 전력-측면에서 볼 때, 특정한 전력 관리 조건이 존재하는 경우, 가능한 한 많은 코어를 아마도 스트레스(stress)의 기간 동안 일시적으로 아이들(idle) 상태로 만드는 것이 유리할 것이다.
그러나, Microsoft® Windows® 7 운영 체제와 같은 운영 체제(OS)는 구동하는 동안 그의 프로세서 내의 활성 코어의 수의 증/감을 지원하지 못한다. Microsoft® Windows® 7 OS가 그러한 "핫 코어" 재-할당을 지원하지 못하는 이유는 이 OS가 부트 시간(boot time)에 존재하는 코어들을 기반으로 자원을 할당하고 임계 상정(critical assumption)을 하기 때문이다. Microsoft® Windows® 7 OS는 사용되지 않는 코어들이 파킹(park)되게 하거나 폐기되게 하여 이들을 효과적으로 정지시킬 수 있으나, 이는 단지 OS가 부하(loading)를 인식한 결과로서 행해지며, 경-부하 상태(light loading condition)에서는 이 OS는 부하 균형을 유지하여 코어들을 파킹할 수 있다.
이 문제에 대한 한 해법은 가상의 코어 세트를 OS에 제시하기 위해 OS와 프로세서 하드웨어 간에 작동하는 하이퍼바이저 소프트웨어를 이용하는 것일 수 있다. 실제로, 하이퍼바이저 소프트웨어는 OS에게 다중 코어의 거짓 이미지를 생성한다. 그렇게 하면 OS는 자신이 다중 활성 코어들을 갖고 있다고 믿지만 하드웨어는 실제로는 모든 활성 코어보다 적은 수의 코어를 갖게 된다. 불행하게도, 하이퍼바이저 소프트웨어는 합리적인 성능 결과를 달성하기 위해서 상당한 량의 하이퍼바이저 코드 풋프린트(code footprint)를 필요로 하고 프로세서들 내에 가상 지원도 필요로 하므로 용량이 크다. 더욱이, 하이퍼바이저 소프트웨어에 의해 생기는 성능 패널티(penalty)도 있다.
다른 해법으로는 임의 비-사용 코어들을 효과적으로 파킹하는 프로세서 친화도(process affinity) - 여기서 OS 프로세스들은 물리적으로 하나의 코어에 할당됨 - 를 이용하여 성취되는 "코어 파킹(core parking)"이 있다. 그러나, 이는 OS에 의해 제어되기 때문에 보증된 기술이 아니며 다시 OS에 의해 감지되는 작업량 의존 기능이다.
따라서, 부하를 거의 실시간으로 처리하는 것에 관계없이 전력 측면에서 운영 체제를 서비스하는 활성 코어들을 신속하게 증감하는 것이 필요하다. 더욱이, OS를 재부팅하지 않고 활성 코어들을 동적으로 할당하는 것이 유리하다.
이하 상세한 설명은 물론이고 동일 참조 번호가 개별 도면들 전반에서 동일한 또는 기능적으로 유사한 요소들을 지칭하고 있는 첨부 도면은 이 명세서에 통합되어 그의 일부를 형성하며, 청구된 발명을 포함하는 개념의 실시 예들을 예시하고 이들 실시 예의 다양한 원리 및 장점을 설명하는 역할을 한다.
도 1은 종래 기술의 다중-코어 프로세서의 간단한 블록 도이다.
도 2는 본 발명에 따른 활성 코어들의 동적 할당의 간단한 블록 도이다.
도 3은 본 발명의 추가 실시 예에 따른 방법의 간단한 블록 도이다.
숙련된 기술자이면, 도면 내의 요소들이 간결함과 명료함을 위해 예시되어 있고 스케일로 그려질 필요가 없음을 이해할 것이다. 예를 들어, 본 발명의 실시 예들에 대한 이해를 도모하기 위해서 도면 내의 요소들 중 어떤 것의 치수는 다른 요소에 비해서 과장되어 있을 수 있다.
장치 및 방법 컴포넌트들은, 본 설명의 이득을 갖는 이 기술 분야에서 통상적인 지식을 가진 자들이 쉽게 알 수 있는 세부사항들이 이 공개를 불명료하게 하지 않도록 하기 위해서, 본 발명의 실시 예들을 이해하는데 적절한 특정 세부 사항들만을 보여주고 있는 도면의 적소에 관례적인 심볼로 표현되어 있다.
본 발명은 전력 이유로 운영 체제를 서비스하고 있는 활성 코어들을 간단히 증감할 수 있는 신규의 기술을 제공하는 것이다. 이는 운영 체제(OS)의 수정 또는 지원 없이 행해진다. 이는 운영 체제에 변화를 줌이 없이 하드웨어 배열을 이용하여 성취되며, 이는 드라이버 콜(driver calls)을 이용한 응용으로서 구현될 수 있다. 유리하게도, 본 발명은 OS를 재부팅하지 않고 프로세스 부하에 관계없이 활성 코어들을 동적으로 할당함으로써 전력 드레인(power drain)을 신속하게 줄일 수 있다.
도 1은 예를 들어 Microsoft® Windows® 7 OS에 의해 이용될 수 있는 바와 같은 종래 기술의 다중-코어 프로세서의 블록 도이다. 4-코어 프로세서 예는 코어 CPU 0(110) CPU 1(112), CPU 2(114) 및 CPU 3(116)으로 도시되어 있다. 디스패처 데이터베이스(100)는 OS에 의해 제어되는 작업량 레포지토리이다. 데이터베이스(100)는 코어들에 의해 서비스되는 프로세스와 스레드(processes and threads)를 보유하고 있다. OS는 데이터베이스(100)에게 그의 프로세스 및 스레드를 각 코어에 대한 준비상태 큐(ready queue)에 분배하도록 지시한다. 예를 들어, 코어 CPU 0(110)은 CPU 0(110)에 의해서 서비스되는 데이터베이스(100)가 분배한 프로세스 및 스레드를 보유하는 CPU 0 준비상태 큐를 갖고 있다. 유사하게, 코어 CPU 1(112)은 CPU 1(112)에 의해서 서비스되는 데이터베이스(100)가 분배한 프로세스 및 스레드를 보유하는 CPU 1 준비상태 큐를 갖고 있고, 코어 CPU 2(114)는 CPU 2(114)에 의해서 서비스되는 데이터베이스(100)가 분배한 프로세스 및 스레드를 보유하는 CPU 2 준비상태 큐를 갖고 있으며, 코어 CPU 3(116)은 CPU 3(116)에 의해서 서비스되는 데이터베이스(100)가 분배한 프로세스 및 스레드를 보유하는 CPU 3 준비상태 큐를 갖고 있다. 데이터베이스(100)에 의한 분배는, 부하 균형 코어 파킹 규칙(load balancing core parking rules)과 같은 다른 고려가 영향을 미치지 않는다는 가정하에 각각의 코어가 시간에 따라 거의 동등한 프로세싱 부하를 공유하도록 하는 공정성 규칙(fairness rules)에 따라서 실행된다.
도 2는 본 발명에 따른 컴퓨터의 다중-코어 프로세서의 블록 도이다. 도 2에 도시된 프로세서 및 코어는 마이크로프로세서, 디지털 신호 프로세서(DSP), 마이크로콘트롤러, 메모리 장치, 응용-특정 집적 회로, 및/또는 로직 회로 등과 같은 기본적인 컴포넌트를 포함할 수 있다. 컴퓨터는 전력 제한이 있는 모바일 컴퓨팅 기기일 수 있다. 그러한 기기들은 통상, 하이-레벨 디자인 언어 또는 디스크립션을 이용하여 표현된, 컴퓨터 명령어를 이용하여 표현된, 메시징/시그널링 플로우 다이어그램을 이용하여 표현된, 및/또는 로직 플로우 다이어그램을 이용하여 표현된 알고리즘 및/또는 프로토콜을 구현하는데 적응된다. 이와 같이, 알고리즘, 로직 플로우, 메시징/시그널링 플로우, 콜 플로우, 및/또는 프로토콜 명세가 주어지면, 이 기술에 숙련된 자들은 주어진 로직을 실행하는 사용자 기기를 구현하는데 이용될 수 있는 많은 디자인 및 개발 기술을 알 수 있다.
그러므로, 도 2의 프로세서는, 본 설명에 따라서, 본 발명의 다양한 실시 예를 구현하는데 적응된 공지된 장치를 나타낸다. 더욱이, 이 기술에 숙련된 자들은 본 발명의 양태들이 다양한 물리적인 컴포넌트들 안과 전반에 구현될 수 있고 단일 플랫폼 구현에 전혀 한정되지 않음을 인식하고 있을 것이다. 예를 들어, 본 발명의 양태들은 위에 열거한 기기들 중 어떤 것에도 구현될 수 있고 또는 그러한 컴포넌트들 전반에 분배될 수도 있다. 본 발명의 목적을 위해서, 용어 프로세서 코어, 코어 및 중앙 처리 장치(CPU)는 동등한 것이다.
도 2를 다시 참조해 보면, 본 발명은 컴퓨터의 프로세서의 코어들 중 한 코어를 유일한 활성 코어로 남겨두고 그 이외의 코어들의 이용을 정지(halt)시키는 동적 기술을 소개한다. 다른 실시 예에서는 2개 이상의 코어를 활성 코어로 남겨 둘 수 있다. 코어들의 정지는 OS에 대한 수정이나 그의 지원 없이도 전력 이유로 실행된다. 이는 운영 체제에 변화를 주지 않고도 하드웨어 배열을 이용하여 성취되고, 이는 드라이버 호출을 갖는 애플리케이션으로서 구현될 수 있다. OS를 재부팅할 필요는 없으며 코어 정지는 OS가 부하를 인식하는 것에 관계없이 실행된다. 본 발명이 여기서 Microsoft® Windows® 7 OS에 대한 특정 응용에 관해서 기술될지라도, 본 발명이 또한 다른 유형의 다중-코어 프로세서 시스템에 응용될 수 있음을 이해하여야 한다.
본 발명은 도 1에 도시된 바와 같은 동일한 디스패처 데이터베이스(100), CPU 준비상태 큐(102, 104, 106, 108), 및 코어들을 이용한다. 그러나, 본 발명은, 예를 들어 GPIO(General Purpose Input Output)와 같은 컴퓨터의 I/O 인터페이스들 중 하나에 연결하는 하드웨어 배열(200)을 소개한다. 하드웨어 배열은 외부에서 아니면 심지어 내부에서 컴퓨터 I/O 인터페이스에 연결된 주변 장치로서 구현될 수 있다. 하드웨어 배열은 인터페이스 어드레스 버스에 연결될 수 있고, 어드레스 버스를 통해서 각각의 코어가 액세스할 수 있는 글로벌 세마포어(global semaphore)를 소개한다. 글로벌 세마포어는 본 발명에 따라서 코어들에게 코어홀트 프로그램(CoreHalt program)을 실행하기 위한 토큰(token)을 제공한다. 이 기술분야에 알려져 있듯이, 코어 동작은 퀀텀 클럭 사이클(즉, 100 밀리세컨드)마다 인터럽트된다. 이 인터럽션에서, 각 코어는 코어홀트 프로그램을 구동시키는 데에 있어서 글로벌 세마포어로부터 토큰을 얻기 위한 시도를 할 것이다. 여기에는 코어들에 대한 이용가능한 최대 카운트(예를 들어, 전체 코어의 수 마이너스 1)의 토큰들이 있다. 예를 들어 일 실시 예에서, 하나 이외의 모든 코어들은 토큰을 획득할 수 있다. 토큰을 획득하는 임의 코어는 코어홀트 프로그램의 홀트 어셈블러 스테이트먼트를 실행할 것이다.
코어홀트 프로그램은 코어가 그의 준비상태 큐로부터의 명령을 처리하는 것을 정지하기 위한 어셈블리 명령을 포함한다. 물리적인 코어마다 하나의 그러한 코어홀트 프로그램이 하나씩 있을 것이다. 코어홀트 프로그램은 통상 장치가 필요한 특권 레벨(privilege level)을 보유하도록 장치 드라이버 내에서 구현될 것이다. 이 예에서, 글로벌 세마포어는 3개의 코어홀트 프로그램이 그들의 각 코어(도 2의 212, 214, 216)에서 실행될 수 있게 해준다. 토큰을 획득하지 못한 네 번째 코어(110)는 글로벌 세마포어가 그것에 토큰을 제공하기를 대기하고 이러한 대기는 코어가 그의 준비상태 큐에서 작업량을 실행할 수 있게 해준다. 각 코어(212, 214, 216)에서 실행되는 코어홀트 프로그램들은 이들 코어가 그들의 각각의 준비상태 큐(104, 106, 108)를 처리하는 것을 정지시킬 것이다. 실제로, 코어홀트 프로그램들은 다음 퀀텀 클럭 사이클 인터럽션이 발생할 때까지 코어들이 어셈블러 정지 명령을 실행하게 하므로, 이들 코어가 효과적으로 아이들 상태가 되고 그 결과 이들만이 대기 전력을 이용할 수 있다. 각 코어(110)에 의해서 실행이 차단된 코어홀트 프로그램은 이 코어가 그의 준비상태 큐(102)에 있는 작업량을 처리할 수 있게 활성 상태로 유지시킬 것이다. 세마포어에 의해서 실행이 허용되는 나머지 3개의 코어홀트 프로그램들은 그들 각각의 코어(212, 214, 216)에 대한 정지 명령을 실행할 것이며, 이는 이후 어떤 작업량 실행에도 관여하지 않는다.
실제로, 본 발명은 데이터베이스 또는 준비상태 큐에 있는 부하를 처리하는 것에 관계없이 그리고 OS에 대한 수정이나 그의 지원이 없이도 컴퓨터의 전원(204)(예를 들어, 배터리)으로부터의 전력 소비를 보통은 대략 25% 줄여준다. 이러한 전력 감소는 대기 전력을 소모하는 정지된 코어들의 결과로서 나타나며, 또한 시스템은 시간당 저율의 명령을 실행하기 때문에 메모리 및 주변 컴포넌트와 같은 다른 컴포넌트에 대한 부하를 줄여준다. 물론, 토큰의 최대 카운트는 각 사이클 동안 대략 50%, 75%, 또는 심지어 100% 활성 코어가 허용되도록 변경될 수 있음을 이해하여야 한다. 25% 실시 예에서, 퀀텀 클럭 사이클에서 각 인터럽션 후에, 각 코어는 다시 세마코어 토큰을 얻기 위한 시도를 하며, 일단 토큰의 최대 카운트에 도달하면 한 코어는 그렇게 할 수 없다. 각각의 코어는 임의 한 사이클에서 토큰을 획득할 수 있는 균등한 기회를 가지므로, 코어들 모두는 시간에 따라서 그들의 대기상태 큐를 처리할 기회를 균등하게 갖는다.
각각의 코어홀트 프로그램은 친화도(affinity)를 이용하여 그의 특정 코어에 할당될 수 있으며, 여기서, OS 프로세스들은 물리적으로 특정 코어에 할당된다. 이때 코어홀트 프로그램은 Microsoft® Windows® 7 OS에서 다른 프로그램들 및 드라이버들보다 해당 운영 체제에서 가장 높은 이용가능한 우선순위로 올라서도록 준비될 수 있다. 그 결과, 코어홀트 프로그램의 실행은 거의 실시간으로 동작하고 다른 프로그램들 및 드라이버들과의 충돌을 경감시킨다.
본 발명의 동작 및 모니터링은, 컴퓨터의 사용자 인터페이스(202)상의 아이콘, 버튼 또는 다른 기능의 활성화를 통해서 사용자에 의해 토글(toggle)될 수 있는 본 발명의 코어 할당, 전력 절감 기능을 컴퓨터 상에 배치함으로써, 컴퓨터 상에서 사용자에 의해 활성화되거나 하드웨어에 의해 활성화될 수 있음을 생각해 볼 수 있다. 또한 코어 할당, 전력 절감 기능이 동작중이거나 작동중이 아님을 나타내거나 달성되고 있는 전력 절감을 나타내는 사용자 인터페이스(202) 상의 표시(display)를 컴퓨터가 사용자에게 제공할 수 있다는 것도 생각해 볼 수 있다. 또한 컴퓨터의 사용자 인터페이스(202) 상의 아이콘, 버튼 또는 다른 기능의 활성화를 통해서 이용가능한 토큰의 최대 카운트를 사용자가 제어하여 본 발명을 이용하여 얻을 수 있는 전력 절감의 량을 얻을 수 있는 것도 생각해 볼 수 있다.
사용자 활성화/불활성화는 코어홀트 프로그램에게 글로벌 세마포어 및 후속 정지 명령에 관여하거나 관여 해제하도록 지시하는 소프트웨어 코어의 결과로 나타날 수 있다. 또한 하드웨어 활성화/불활성화는, 세마포어 동작이 활성화 또는 불활성화되게 하거나, 예를 들어 4개의 코어 중에서 2개를 정지하게 하거나 4개의 코어 중에서 3개를 정지하게 하거나 등과 같이 토큰 행동(token behavior)을 가변하여 활성화되게 하는 글로벌 세마포어 하드웨어에 대한 하드웨어 신호의 결과로 나타날 수 있다. 또한 일시적인 전력 스트레스 상황은 본 발명을 이용하여 경감할 수 있음도 생각해 볼 수 있다. 예를 들어, 시스템이 벽 전원에서 배터리 소스로 천이하는 도크-언도크 시나리오(dock-to-undock scenario)에서, 본 발명이 전력 드로우(power draw)를 줄일 수 있고 시스템이 정상적으로(하나의 코어 상에서) 셧다운(shutdown)되게 할 수 있음도 생각해 볼 수 있다. 더욱이, 이 발명은 기존의 이용가능한 코어 스로틀링(core throttling)의 방법에 연관되어 작용할 수 있다.
도 3은 본 발명에 따른 운영 체제를 가동하는 다중 프로세서 코어의 동적 할당을 위한 방법의 흐름도를 보여주고 있다.
본 발명은 프로세서의 코어가 각 준비상태 큐로부터의 명령을 처리하는 것을 정지시키는 동작을 하는 프로그램을 제공하는 단계(300)로 시작한다.
다음 단계는 프로그램의 실행을 허용하기 위해 이용가능한 토큰의 최대 카운트를 설정하는 단계(302)를 포함하며, 여기서 최대 카운트는 프로세서 내의 코어의 전체 수보다 적다.
다음 단계는 코어들이 토큰을 획득하는 단계(304)를 포함하고, 여기서 적어도 하나의 코어는 토큰을 획득할 수 없다.
코어가 토큰을 획득한 경우(306), 다음 단계는 이 코어의 각 준비상태 큐의 처리를 정지시키기 위하여 이 코어가 프로그램을 실행하는 단계(308)를 포함한다. 코어가 토큰을 획득하지 못한 경우(306), 토큰이 없는 코어는 프로그램을 실행할 수 없으며, 그 결과 그의 각 대기상태 큐로부터의 명령을 처리하도록 활성 상태로 남게 된다(310).
어떤 경우에도, 다음 단계는 미리 정해진 시간 량, 즉 다음 퀀텀 클럭 사이클을 대기하는 단계(312)를 포함한다.
시간이 종료한 후, 즉 인터럽트가 생성된 후, 프로세스는 코어들 중에서 어느 것이 다음 사이클 동안 활성 상태로 남아있는지를 알기 위해 코어들이 토큰을 획득하는 단계(304)로 복귀한다.
양호하게는, 상기 방법은 컴퓨터의 사용자 인터페이스를 통해서 컴퓨터의 사용자에 의해 동작(314)되고 모니터되는 것을 생각해 볼 수 있다.
유리하게도, 본 발명은 요즈음의 데스크탑 윈도우 운영 체제의 경우인 강제 코어 파킹을 지원하지 않는 Microsoft® Windows® 7 OS에 강제 코어 파킹을 구현할 수 있다. 본 발명은 구현이 비교적 간단하고 운영 체제에 변화를 주지 않으며 드라이버 콜이 있는 응용으로 구현될 수 있다.
앞의 명세서에서, 특정 실시 예들이 기술되었다. 그러나, 아래의 청구항들에 기술된 본 발명의 범위를 벗어나지 않고도 다양한 수정 및 변경을 행할 수 있음은 이 기술에 통상적인 숙련자이면 이해할 것이다. 따라서, 명세서 및 도면은 제한 의미가 아니라 예시적인 의미로 이해되어야 하고 모든 그러한 수정은 본 기술의 범위 내에 속하는 것으로 보아야한다.
어떤 이점, 장점 또는 해법이 좀 더 나타나게 하거나 더 표명되게 할 수 있는 이점, 장점, 문제 해법, 및 임의 요소(들)는 임의 또는 모든 청구항들의 중요한, 요구되는, 또는 근본적인 특징부 또는 요소들로서 해석되지 않아야 한다. 본 발명은 단지 이 출원의 계류 동안 이루어진 임의 보정을 포함하는 첨부 청구항들 및 공표된 이들 청구항의 모든 균등물에 의해서만 정의된다.
더욱이, 이 문서에서, 제1 및 제2, 상부, 하부 등과 같은 관련 용어는 엔티티나 액션들 간의 임의 실질적인 관계 또는 순서를 필연적으로 요구하거나 암시함이 없이 한 엔티티나 액션을 다른 엔티티나 액션과 구별하기 위해서만 이용될 수 있다. 용어 "포함한다", "포함하는", "갖고 있다", "갖고 있는", "구비한다", "구비하는", "내포한다", "내포하는" 또는 그의 임의 다른 변형은 비-배타적인 포함을 포괄하는 의미이며, 따라서 한 리스트의 요소를 갖는, 포함하는, 내포하는 프로세스, 방법, 아티클 또는 장치는 단지 이들 요소만을 포함하는 것이 아니라 그러한 프로세스, 방법, 아티클 또는 장치에 명시적으로 열거되지 않았거나 내재하는 다른 요소들도 포함할 수 있다. "...를 포함하는", "...를 갖고 있는", "...를 구비하는", "...를 내포하는" 앞에 오는 요소는, 부가적인 제한이 없다면, 이 요소를 포함하는, 갖는, 구비하는, 내포하는 프로세스, 방법, 아티클, 또는 장치에 추가의 동일한 요소들이 존재하는 것을 배제하지 않는다. 부정관사는 여기에 다른 식으로 명료하게 언급되지 않는다면 1 이상인 것으로 정의된다. 용어 "실질적으로", "근본적으로", "대략", "약" 또는 그의 임의 다른 버전은 이 기술 분야에 통상적인 숙련자가 이해하는 것에 가까운 것으로 정의되며, 비-제한 실시 예에서, 이 용어는 10% 이내, 다른 실시 예에서는 5% 이내, 또 다른 실시 예에서는 1% 이내, 또 다른 실시 예에서는 0.5% 이내인 것으로 정의된다. 여기에 이용되는 용어 "결합"은 반드시 직접도 아니고 반드시 기계적으로의 결합이 아닐지라도 연결로서 정의된다. 특정 방식으로 "구성"되는 장치 또는 구조는 적어도 이 방식으로 구성되지만 열거되지 않은 방식으로도 구성될 수 있다.
몇몇 실시 예들은 마이크로프로세서, 디지털 신호 프로세서, 주문 제작 프로세서 및 필드 프로그램어블 게이트 어레이(FPGA)와 같은 1 초과의 범용 또는 전용 프로세서(또는 "처리 장치"), 및 특정 비-프로세서 회로와 연동하여, 여기에 기술된 방법 및/또는 장치의 기능들의 일부, 대부분 또는 전부를 구현하기 위해 1 이상의 프로세서를 제어하는 고유 저장된 프로그램 명령(소프트웨어와 펌웨어를 포함함)으로 구성될 수 있음을 이해할 것이다. 대안으로, 일부 또는 모든 기능은 프로그램 명령을 저장하지 않은 상태 머신에 의해서 또는 1 이상의 주문형 집적 회로(ASIC)로 구현될 수 있으며, 여기서 각 기능 또는 기능들 중 어떤 조합은 커스텀 로직으로 구현된다. 물론 2개의 접근방식의 조합도 이용될 수 있다.
더욱이, 일 실시 예는 여기에 기술되고 청구된 방법을 실행하기 위해 컴퓨터(예를 들어, 프로세서를 포함해서)를 프로그래밍하기 위한 컴퓨터 판독가능 코드를 저장하고 있는 컴퓨터-판독가능 저장 매체로 구현될 수 있다. 그러한 컴퓨터-판독가능 저장 매체의 예로는, 제한됨이 없이, 하드 디스크, CD-ROM, 광 저장 장치, 자기 저장 장치, ROM(판독 전용 메모리), PROM(프로그램어블 판독 전용 메모리), EPROM(소거가능한 프로그램어블 판독 전용 메모리), EEPROM(전기적으로 소거가능한 프로그램어블 판독 전용 메모리), 플래시 메모리 등이 있다. 더구나, 통상적인 숙련자는, 예를 들어, 이용가능한 시간, 현재 기술 및 경제적인 고려에 의해 동기가 부여된 유의미한 노력을 하고 다양한 디자인 선택을 하더라도, 여기 공개된 개념 및 원리를 따르면 최소의 경험으로 IC를 위한 그러한 소프트웨어 명령 및 프로그램을 쉽게 생성할 수 있을 것이라고 예상된다.
이 개시물의 요약서는 독자가 기술 개시물의 본질을 빠르게 확인할 수 있게 제공된다. 이는 청구항들의 범위 또는 의미를 해석하거나 제한하는데 이용되지 않는다는 이해의 바탕으로 제공된다. 또한, 이전의 상세한 설명에서, 다양한 특징부들은 다양한 실시 예에서 이 개시물의 흐름을 위한 목적으로 함께 그룹핑되어 있음을 알 수 있다. 이 개시물의 방법은 청구된 실시 예들이 각 청구항에 명료하게 인용되어 있는 것보다 더 많은 특징부를 필요로 하는 의도를 반영하는 것으로 해석되지 않는다. 오히려, 다음의 청구항들이 반영하고 있듯이, 본 발명의 대상은 단일 공개된 실시 예의 모든 특징부보다 적게 존재한다. 그러므로, 다음의 청구항들은 상세한 설명 내에 통합되어 있고, 각 청구항은 개별적으로 청구 대상으로서 그 자신의 지위를 유지한다.

Claims (16)

  1. 운영 체제를 구동하는 컴퓨터 내의 다중 프로세서 코어(core)들의 동적 할당(dynamic allocation)을 위한 방법으로서,
    각각의 준비상태 큐(ready queue)로부터의 명령(instruction)들을 처리하지 못하게 코어를 정지시키도록 동작가능한 프로그램을 제공하는 단계(300);
    상기 프로그램의 실행을 허용하는 데 이용가능한 토큰의 최대 카운트를 설정하는 단계(302) - 상기 최대 카운트는 코어들의 총수보다 적음 -; 및
    상기 코어들이 토큰을 획득하는 단계(304) - 적어도 하나의 코어는 토큰을 획득할 수 없을 것임 -
    를 포함하고,
    토큰이 코어에 의해 획득된 경우(306)에는, 그 코어는 그 코어의 각각의 준비상태 큐의 처리를 정지시키도록 상기 프로그램을 실행하고(308),
    토큰이 코어에 의해 획득되지 못한 경우(306)에는, 그 코어는 상기 프로그램을 실행하지 않으며, 그 코어의 각각의 준비상태 큐로부터의 명령들을 처리하기 위해서 활성 상태를 유지(310)하는 방법.
  2. 제1항에 있어서,
    미리 정해진 시간량을 대기하는 단계(312); 및
    상기 획득하는 단계(304)로 되돌아가는 단계를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 시간량은 상기 코어들을 포함하는 컴퓨터의 퀀텀 클럭 사이클(quantum clock cycle)인 방법.
  4. 제1항에 있어서,
    상기 설정하는 단계(302)는 입력/출력 인터페이스에 연결된 주변 장치에 의해 제공된 어드레스 버스 상에서 글로벌 세마포어(global semaphore)로 제공된 토큰들을 포함하는 방법.
  5. 제1항에 있어서,
    상기 제공하는 단계(300)는 각각의 코어에 프로그램을 제공하는 방법.
  6. 제1항에 있어서,
    상기 제공하는 단계(300)는 상기 운영 체제에서 최고의 이용가능한 우선순위를 갖도록 상기 프로그램을 제공하는 방법.
  7. 제1항에 있어서,
    상기 컴퓨터의 사용자 인터페이스를 통해서 사용자가 상기 방법을 운영하는 단계(314)를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 운영 체제는 Microsoft® Windows® 7 운영 체제인 방법.
  9. 운영 체제를 구동하는 다중 프로세서 코어들을 동적으로 할당하도록 동작가능한 컴퓨터로서,
    각각의 준비상태 큐(104, 106, 108)로부터의 명령들을 처리하지 못하게 코어(212, 214, 216)를 정지시키도록 동작가능한 프로그램; 및
    상기 프로그램의 실행을 허용하는 데 이용가능한 토큰들을 제공하도록 동작가능한 주변 장치(200) - 최대 카운트를 갖는 토큰들은 코어들의 총수보다 적음 -
    를 포함하고,
    상기 코어들은 토큰들을 획득하기 위한 시도를 하도록 동작가능하며, 적어도 하나의 코어(110)는 토큰을 획득할 수 없을 것이고,
    토큰이 코어(212, 214, 216)에 의해 획득된 경우에는, 그 코어(212, 214, 216)가 그 코어의 각각의 준비상태 큐(104, 106, 108)의 처리를 정지시키도록 상기 프로그램을 실행하며,
    토큰이 코어(110)에 의해 획득되지 못한 경우에는, 그 코어는 상기 프로그램을 실행하지 않고, 그 코어의 각각의 준비상태 큐(102)로부터의 명령들을 처리하기 위해서 활성 상태를 유지하는 컴퓨터.
  10. 제9항에 있어서,
    상기 코어들(110, 212, 214, 216)은 미리 정해진 시간량을 대기하고, 토큰들을 획득하기 위한 시도를 다시 하도록 동작가능한 컴퓨터.
  11. 제10항에 있어서,
    상기 미리 정해진 시간량은 상기 코어들을 포함하는 컴퓨터의 퀀텀 클럭 사이클인 컴퓨터.
  12. 제9항에 있어서,
    상기 토큰들은 상기 컴퓨터의 입력/출력 인터페이스에 연결된 상기 주변 장치(200)에 의해 제공된 어드레스 버스 상에서 글로벌 세마포어로 제공되는 컴퓨터.
  13. 제9항에 있어서,
    상기 프로그램은 각각의 코어에 제공되는 컴퓨터.
  14. 제9항에 있어서,
    상기 프로그램들은 상기 운영 체제에서 최고의 이용가능한 우선순위를 갖도록 제공되는 컴퓨터.
  15. 제9항에 있어서,
    사용자 인터페이스(202)
    를 더 포함하며,
    사용자는 상기 사용자 인터페이스를 통해 상기 프로그램 및 토큰들의 기능을 동작시킬 수 있는 컴퓨터.
  16. 제9항에 있어서,
    상기 운영 체제는 Microsoft® Windows® 7 운영 체제인 컴퓨터.
KR1020137028252A 2011-03-30 2012-03-12 운영 체제를 구동하는 프로세서 코어들의 동적 할당 KR101548068B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/076,353 2011-03-30
US13/076,353 US8407506B2 (en) 2011-03-30 2011-03-30 Dynamic allocation of processor cores running an operating system
PCT/US2012/028678 WO2012134776A1 (en) 2011-03-30 2012-03-12 Dynamic allocation of processor cores running an operating system

Publications (2)

Publication Number Publication Date
KR20140002012A KR20140002012A (ko) 2014-01-07
KR101548068B1 true KR101548068B1 (ko) 2015-08-27

Family

ID=45977025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137028252A KR101548068B1 (ko) 2011-03-30 2012-03-12 운영 체제를 구동하는 프로세서 코어들의 동적 할당

Country Status (7)

Country Link
US (1) US8407506B2 (ko)
EP (1) EP2691830B1 (ko)
JP (1) JP5866430B2 (ko)
KR (1) KR101548068B1 (ko)
CN (1) CN103502906B (ko)
CA (1) CA2831240C (ko)
WO (1) WO2012134776A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819345B2 (en) * 2012-02-17 2014-08-26 Nokia Corporation Method, apparatus, and computer program product for inter-core communication in multi-core processors
EP3282359A1 (en) * 2016-08-09 2018-02-14 Alcatel Lucent Method for managing a virtual radio access network and method for calibrating a software component
CN110427223A (zh) * 2019-07-02 2019-11-08 中国航空工业集团公司雷华电子技术研究所 一种基于上位机pcie总线动态加载多核dsp的方法及系统
US11281474B2 (en) * 2020-03-31 2022-03-22 International Business Machines Corporation Partial computer processor core shutoff
CN111782411A (zh) * 2020-07-02 2020-10-16 江苏华创微系统有限公司 在numa系统中提升抢锁操作公平性的方法
CN114610394B (zh) * 2022-03-14 2023-12-22 海飞科(南京)信息技术有限公司 指令调度的方法、处理电路和电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754788B2 (en) * 2001-03-15 2004-06-22 International Business Machines Corporation Apparatus, method and computer program product for privatizing operating system data
FR2823932B1 (fr) * 2001-04-23 2003-06-27 Intaan Technology Systeme et procede pour la distribution dynamique de donnees et/ou de services
US7117388B2 (en) * 2003-04-28 2006-10-03 International Business Machines Corporation Dynamic, Non-invasive detection of hot-pluggable problem components and re-active re-allocation of system resources from problem components
CN1287290C (zh) * 2003-07-15 2006-11-29 中兴通讯股份有限公司 嵌入式实时操作系统中非缓冲内存动态分配方法
US20060136919A1 (en) 2004-12-17 2006-06-22 Sun Microsystems, Inc. System and method for controlling thread suspension in a multithreaded processor
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
JP2008257578A (ja) * 2007-04-06 2008-10-23 Toshiba Corp 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法
CN101464813A (zh) * 2007-12-19 2009-06-24 国际商业机器公司 用于多核处理器上的自动工作量分配的系统和方法
JP4877347B2 (ja) * 2009-03-25 2012-02-15 ブラザー工業株式会社 ネットワーク装置
JP5095682B2 (ja) * 2009-07-03 2012-12-12 レノボ・シンガポール・プライベート・リミテッド 情報処理装置、情報処理装置の電力制御方法、およびコンピュータが実行可能なプログラム
US8972707B2 (en) * 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US9342379B2 (en) * 2011-01-21 2016-05-17 Wind River Systems, Inc. Lock free acquisition and release of a semaphore in a multi-core processor environment

Also Published As

Publication number Publication date
JP5866430B2 (ja) 2016-02-17
CA2831240A1 (en) 2012-10-04
US20120254647A1 (en) 2012-10-04
JP2014509767A (ja) 2014-04-21
EP2691830B1 (en) 2015-01-07
CN103502906B (zh) 2016-02-03
KR20140002012A (ko) 2014-01-07
EP2691830A1 (en) 2014-02-05
US8407506B2 (en) 2013-03-26
CA2831240C (en) 2016-07-05
CN103502906A (zh) 2014-01-08
WO2012134776A1 (en) 2012-10-04

Similar Documents

Publication Publication Date Title
US11797327B2 (en) Dynamic virtual machine sizing
KR101548068B1 (ko) 운영 체제를 구동하는 프로세서 코어들의 동적 할당
US8799929B2 (en) Method and apparatus for bandwidth allocation mode switching based on relative priorities of the bandwidth allocation modes
EP3039540B1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
US7877753B2 (en) Multi-processor system and program for causing computer to execute controlling method of interruption of multi-processor system
US20200150996A1 (en) Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
US10437308B2 (en) Predictive virtual machine halt
US11086658B2 (en) System performance enhancement with SMI on multi-core systems
US11061730B2 (en) Efficient scheduling for hyper-threaded CPUs using memory monitoring
JP2011216004A (ja) マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法
US10810032B2 (en) System and method for dynamic guest-controlled halt polling using a CPU governor
JP5678347B2 (ja) Itシステムの構成方法、そのコンピュータプログラムおよびitシステム
CN115098230A (zh) 管理线程的方法及装置
US20240231867A9 (en) Paravirtual pause loops in guest user space
KR20180034355A (ko) 프로그램 운영 방법 및 장치와 이를 위한 기록매체
KR20130097827A (ko) 프로그램 운영 방법 및 장치와 이를 위한 기록매체

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