KR20170117594A - 병렬 처리 시스템 - Google Patents
병렬 처리 시스템 Download PDFInfo
- Publication number
- KR20170117594A KR20170117594A KR1020177026593A KR20177026593A KR20170117594A KR 20170117594 A KR20170117594 A KR 20170117594A KR 1020177026593 A KR1020177026593 A KR 1020177026593A KR 20177026593 A KR20177026593 A KR 20177026593A KR 20170117594 A KR20170117594 A KR 20170117594A
- Authority
- KR
- South Korea
- Prior art keywords
- scheduler
- notification information
- status
- processing
- status notification
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
제1 프로세스 스케줄러 및 제2 프로세스 스케줄러는 서로 통신 가능하도록 구성된다. 제1 프로세스 스케줄러는 제2 프로세스 스케줄러에 의해 검출된 제2 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제1 프로세스 처리부의 동작을 제어하도록 구성된다. 제2 프로세스 스케줄러는 제1 프로세스 스케줄러에 의해 검출된 제1 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제2 프로세스 처리부의 동작을 제어하도록 구성된다.
Description
본 발명은 병렬 처리 시스템, 병렬 처리 방법 및 프로그램에 관한 것이다.
데이터의 고속 처리를 가능하게 하기 위해, 복수의 코어를 동시에 실행함으로써 병렬 처리를 실행하는 공지된 기술이 있다.
전술한 병렬 처리를 실행하는 기술의 일례는, 예를 들어 특허문헌 1에 도시되어 있다. 특허문헌 1에는, 제1 애플리케이션 프로그램이 실행되는 운영 체제 및 OL 원격 제어 수단을 갖는 제1 프로세서 코어; 및 운영 체제를 실행하지 않고 OL 원격 제어 수단으로부터의 요청에 기초하여 제2 애플리케이션 프로그램을 실행하고 경량 스케줄러를 갖는 제2 프로세서 코어를 포함하는 프로그램 병렬 실행 시스템이 기재되어 있다. 특허문헌 1에 따르면, 전술한 구성으로 인해, 제2 프로세서 코어에 의한 처리 시 OS 개입(intervention)으로부터 초래되는 오버헤드의 영향을 줄인 병렬 처리를 실행하는 것이 가능하게 된다.
또한, 병렬 컴퓨터에서 병렬 프로세스 스케줄링을 위한 방법의 일례로서, 특허문헌 2에 기재된 방법이 알려져 있다. 특허문헌 2에는, 병렬 프로세스를 위한 병렬 동기 대기 상태에 있는 디바이스에서 다른 프로세스를 실행하는 기술이 기재되어 있다. 즉, 특허문헌 2에 따르면, 병렬 동기 대기 상태에 있는 병렬 프로세스를 디스패치하는 대신에 실행 가능한 다른 작업의 프로세스를 디스패치함으로써, 시스템의 스루풋 성능이 저하되는 것을 방지하는 것이 가능하게 된다.
그러나, 특허문헌 1에 기재된 기술에 따르면, 제2 프로세서 코어를 제어하는 경량 스케줄러는 메인 시스템과 독립적으로 형성된다. 따라서, 특허문헌 1에 기재된 기술을 사용하는 경우, 경량 스케줄러가 메인 시스템 상의 스케줄링과 협력하여 제어를 실행하는 것은 어려웠다. 그 결과, 시스템 전체적으로 효율적인 스케줄링을 수행하는 것이 어려워지는 경우가 있었다.
또한, 특허문헌 2에 기재된 기술은 프로그램이 대기 상태에 있을 때 실행되는 제어에 관한 것으로, 다른 디바이스의 스케줄링 상황에 적합한 제어를 실행하는 것이 어려웠다. 따라서, 특허문헌 2에 기재된 기술을 사용하는 경우에서도, 예를 들어 컨텍스트 스위치가 실행될 때 다른 디바이스의 스케줄링 상황에 따라, 시스템 전체적으로 효율적인 스케줄링을 수행하는 것이 어려워질 수 있었다.
따라서, 병렬 처리가 실행될 때, 각각의 프로세스를 관리하는 스케줄러들끼리 정보가 공유되지 않기 때문에, 시스템 전체적으로 효율적인 스케줄링을 수행하는 것이 어려워질 수 있다는 문제가 발생하고 있었다.
따라서, 본 발명의 목적은, 병렬 처리가 실행될 때, 각각의 프로세스를 관리하는 스케줄러들끼리 정보가 공유되지 않기 때문에, 시스템 전체적으로 효율적인 스케줄링을 수행하는 것이 어려워질 수 있다는 문제를 해결하는 병렬 처리 시스템을 제공하는 데 있다.
이러한 목적을 달성하기 위해, 본 발명의 일 양태에 따른 병렬 처리 시스템은 복수의 처리부 상에서 연관된 프로세스들을 실행되는 병렬 처리 시스템이다.
병렬 처리 시스템은, 미리 결정된 프로세스를 실행하도록 구성된 제1 프로세스 처리부; 제1 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제1 프로세스 스케줄러; 제1 프로세스 처리부에 의해 실행되는 프로세스와 연관된 프로세스를 실행하도록 구성된 제2 프로세스 처리부; 및 제2 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제2 프로세스 스케줄러를 포함한다.
제1 프로세스 스케줄러 및 상기 제2 프로세스 스케줄러는 서로 통신 가능하도록 구성된다.
제1 프로세스 스케줄러는 제2 프로세스 스케줄러에 의해 검출된 제2 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제1 프로세스 처리부의 동작을 제어하도록 구성된다.
제2 프로세스 스케줄러는 제1 프로세스 스케줄러에 의해 검출된 제1 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제2 프로세스 처리부의 동작을 제어하도록 구성된다.
또한, 본 발명의 다른 양태에 따른 병렬 처리 방법은 복수의 처리부 상에서 연관된 프로세스들을 실행하기 위한 병렬 처리 방법이다. 복수의 처리부에 의해 실행되는 프로세스들은 복수의 스케줄러에 의해 관리된다.
병렬 처리 방법은 스케줄러들 각각에 의해 관리되는 프로세스의 처리 상황을 스케줄러들 중 다른 스케줄러에 통신하는 단계를 포함한다.
스케줄러들 각각은 수신된 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성된다.
또한, 본 발명의 다른 양태에 따른 프로그램은 정보 처리 디바이스가 동작들을 수행하게 하기 위한 명령어들을 포함하는 컴퓨터 프로그램이다. 정보 처리 디바이스는 복수의 처리부 상에서 연관된 프로세스들을 실행하고, 처리부에 의해 실행되는 프로세스들은 복수의 스케줄러에 의해 관리된다.
상기 동작들은, 스케줄러들 각각에 의해 관리되는 프로세스의 처리 상황을 스케줄러들 중 다른 스케줄러에 통신하는 동작; 및 스케줄러들 각각이 수신된 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하게 하는 동작을 포함한다.
전술한 구성으로 인해, 본 발명은 병렬 처리가 실행될 때, 각각의 프로세스를 관리하는 스케줄러들끼리 정보가 공유되지 않기 때문에, 시스템 전체적으로 효율적인 스케줄링을 수행하는 것이 어려워질 수 있다는 문제를 해결하는 병렬 처리 시스템을 제공할 수 있다.
도 1은 본 발명의 제1 예시적 실시예에 따른 병렬 컴퓨터의 구성의 예를 나타내는 블록도이다.
도 2는 본 발명의 제1 예시적 실시예에 따른 병렬 컴퓨터에서 실행되는 프로그램의 예를 나타내는 도면이다.
도 3은 본 발명의 제1 예시적 실시예에 따른 병렬 컴퓨터의 상세 구성의 예를 나타내는 블록도이다.
도 4는 본 발명의 제1 예시적 실시예에 따른 프로세스 스케줄러의 구성의 예를 나타내는 도면이다.
도 5는 본 발명의 제1 예시적 실시예에 따른, 프로세스 스케줄러가 컨텍스트 스위치를 실행할 때 실행되는 동작의 예를 나타내는 흐름도이다.
도 6은 본 발명의 제1 예시적 실시예에 따른, 메인 프로세서 프로세스 스케줄러가 상태 통지 정보를 수신했을 때 실행되는 동작의 예를 나타내는 흐름도이다.
도 7은 본 발명의 제1 예시적 실시예에 따른, 코프로세서 프로세스 스케줄러가 상태 통지 정보를 수신했을 때 실행되는 동작의 예를 나타내는 흐름도이다.
도 8은 본 발명의 제1 예시적 실시예에 따른, 프로세스 스케줄러에 의한 우선도(priority level)의 변경의 예를 나타내는 도면이다.
도 9는 본 발명의 제1 예시적 실시예에 따른, 프로세스 스케줄러에 의한 우선도의 변경의 예를 나타내는 도면이다.
도 10은 본 발명의 제2 예시적 실시예에 따른 병렬 컴퓨터의 구성의 예를 나타내는 블록도이다.
도 11은 본 발명의 제3 예시적 실시예에 따른 병렬 컴퓨터의 구성의 예를 나타내는 블록도이다.
도 12는 본 발명의 제4 예시적 실시예에 따른 병렬 처리 시스템의 구성의 예를 나타내는 블록도이다.
도 2는 본 발명의 제1 예시적 실시예에 따른 병렬 컴퓨터에서 실행되는 프로그램의 예를 나타내는 도면이다.
도 3은 본 발명의 제1 예시적 실시예에 따른 병렬 컴퓨터의 상세 구성의 예를 나타내는 블록도이다.
도 4는 본 발명의 제1 예시적 실시예에 따른 프로세스 스케줄러의 구성의 예를 나타내는 도면이다.
도 5는 본 발명의 제1 예시적 실시예에 따른, 프로세스 스케줄러가 컨텍스트 스위치를 실행할 때 실행되는 동작의 예를 나타내는 흐름도이다.
도 6은 본 발명의 제1 예시적 실시예에 따른, 메인 프로세서 프로세스 스케줄러가 상태 통지 정보를 수신했을 때 실행되는 동작의 예를 나타내는 흐름도이다.
도 7은 본 발명의 제1 예시적 실시예에 따른, 코프로세서 프로세스 스케줄러가 상태 통지 정보를 수신했을 때 실행되는 동작의 예를 나타내는 흐름도이다.
도 8은 본 발명의 제1 예시적 실시예에 따른, 프로세스 스케줄러에 의한 우선도(priority level)의 변경의 예를 나타내는 도면이다.
도 9는 본 발명의 제1 예시적 실시예에 따른, 프로세스 스케줄러에 의한 우선도의 변경의 예를 나타내는 도면이다.
도 10은 본 발명의 제2 예시적 실시예에 따른 병렬 컴퓨터의 구성의 예를 나타내는 블록도이다.
도 11은 본 발명의 제3 예시적 실시예에 따른 병렬 컴퓨터의 구성의 예를 나타내는 블록도이다.
도 12는 본 발명의 제4 예시적 실시예에 따른 병렬 처리 시스템의 구성의 예를 나타내는 블록도이다.
[제1 예시적 실시예]
도 1은 병렬 컴퓨터(4)의 구성의 예를 나타내는 블록도이다. 도 2는 병렬 컴퓨터(4)에서 실행되는 프로그램의 예를 나타내는 도면이다. 도 3은 병렬 컴퓨터(4)의 상세 구성의 예를 나타내는 블록도이다. 도 4는 메인 프로세서 프로세스 스케줄러의 구성의 예를 나타내는 도면이다. 도 5는 프로세스 스케줄러가 컨텍스트 스위치를 실행할 때 실행되는 동작의 예를 나타내는 흐름도이다. 도 6은 메인 프로세서 프로세스 스케줄러(12)가 상태 통지 정보를 수신했을 때 실행되는 동작의 예를 나타내는 흐름도이다. 도 7은 코프로세서 프로세스 스케줄러(14)가 상태 통지 정보를 수신했을 때 실행되는 동작의 예를 나타내는 흐름도이다. 도 8 및 도 9는 프로세스 스케줄러에 의한 우선도의 변경의 예를 각각 나타내는 도면이다.
본 발명의 제1 예시적 실시예에서는, 메인 프로세서 노드(1)와, 액셀러레이터와 같은 코프로세서 노드(2)를 포함하는 병렬 컴퓨터(4)(병렬 처리 시스템)가 설명될 것이다. 본 예시적 실시예에서의 병렬 컴퓨터(4)는 메인 프로세서 노드(1) 상에서 실행되는 프로세스와, 코프로세서 노드(2) 상에서 실행되는 프로세스를 서로 독립적인 프로세스 스케줄러들을 사용하여 관리하도록 구성된다. 후술하는 바와 같이, 각각의 프로세스들을 관리하는 프로세스 스케줄러들 사이에서 미리 결정된 정보를 통신함으로써, 시스템 전체적으로 효율적인 스케줄링이 실현된다.
도 1을 참조하면, 본 예시적 실시예에서의 병렬 컴퓨터(4)는 하나의 메인 프로세서 노드(1)(제1 노드), 및 하나 이상의 코프로세서 노드(2)(제2 노드)를 포함한다. 메인 프로세서 노드(1)는 하나 이상의 코프로세서 노드(2)와 통신 버스(3)에 의해 접속되고, 프로세서 노드들은 서로 통신 가능하도록 구성된다.
메인 프로세서 노드(1)는 메인 프로세서(11), 및 도시하지 않은 저장 디바이스를 포함한다. 메인 프로세서 노드(1) 상에서, 운영 체제(Operating System)(OS)가 실행된다. 메인 프로세서 노드(1) 상에 의해 실행되는 OS는, LinuxTM 및 WindowsTM와 같은 컴퓨터에 사용되는 상품 운영 체제일 수 있다.
메인 프로세서(11) 및 후술하는 코프로세서(21)에 의해 실행되는 프로세스들을 관리하는 프로세스 스케줄러들은 메인 프로세서 노드(1)의 운영 체제 상에서 동작한다. 본 예시적 실시예에서, 메인 프로세서(11) 및 코프로세서(21)에 의해 실행되는 프로세스들은 메인 프로세서 노드(1) 상에서 실행되는 OS 상의 다른 프로세스 스케줄러들에 의해 각각 관리된다. 따라서, 메인 프로세서(11)와 코프로세서(21)의 수에 기초한 프로세스 스케줄러들은 운영 체제 상에서 동작한다.
코프로세서 노드(2)는 코프로세서(21), 및 도시되지 않은 저장 디바이스를 포함한다. OS는 코프로세서 노드(2) 상에서 실행되지 않는다. 코프로세서 노드(21)의 제어 소프트웨어를 포함하는 OS는 메인 프로세서 노드(1) 상에서 실행된다. 코프로세서(21)의 프로세스 상태(레지스터와 같은 컨텍스트)는 통신 버스(3)를 통해 메인 프로세서 노드(1)에 의해 포함되는 저장 디바이스에 저장된다.
본 예시적 실시예에서, 전술한 메인 프로세서 노드(1)와 코프로세서 노드(2)는 배타적으로 동작하는 프로그램을 실행한다. 즉, 메인 프로세서 노드(1)와 코프로세서 노드(2)는 서로 의존 관계에 있는 프로세스들과 같은, 서로 연관된 미리 결정된 프로세스들을 실행한다. 구체적으로, 예를 들어 도 2에 도시된 바와 같이, 프로세스(1)는 메인 프로세서(11)에 의해 실행되고, 프로세스(1)의 연산 결과에 의존하는 프로세스(2)는 코프로세서(21)에 의해 실행된다. 전술한 바와 같이, 메인 프로세서 노드(1)에 의해 실행되는 프로세스와 코프로세서 노드(2)에 의해 실행되는 프로세스는 각각 배타적으로 동작한다. 따라서, 메인 프로세서(11)가 프로세스(1)를 실행하고 있는 동안, 코프로세서 노드(2)는 대기 상태에 있다. 또한, 코프로세서(21)가 프로세스(2)를 실행하고 있는 동안, 메인 프로세서 노드(1)는 대기 상태에 있다. 하나의 프로세서가 대기 상태에 있는 동안, 그 프로세서는 다른 프로세서의 상태를 폴링한다.
또한, 본 예시적 실시예에서, 각각의 프로세스 스케줄러들은 임의의 방법에 의해, 예를 들어 프로세스 스케줄러들 간에 프로세스 ID들을 일치시킴으로써, 연관된 프로세스들(배타적으로 동작하는 프로세스들)을 결정할 수 있다. 한편, 구체적인 결정 방법은 연관된 프로세스들의 결정을 허용할 수 있는 한 특별히 제한되지 않는다.
다음에, 병렬 컴퓨터(4)의 보다 구체적인 구성에 대해서는 도 3을 참조하여 설명할 것이다. 도 3은 본 예시적 실시예에서의 병렬 컴퓨터(4)의 보다 상세한 구성의 예를 나타내고 있다.
도 3을 참조하면, 메인 프로세서 노드(1)는 메인 프로세서(11)(예를 들어, 제1 프로세스 처리부; 제2 프로세스 처리부일 수도 있음), 메인 프로세서 프로세스 스케줄러(12)(제1 프로세스 스케줄러 또는 제2 프로세스 스케줄러), 상태 통지 수단(13), 코프로세서 프로세스 스케줄러(14)(제1 프로세스 스케줄러 또는 제2 프로세스 스케줄러), 및 노드 간 통신 수단(15)을 포함한다.
메인 프로세서(11)는 하나 이상의 프로세서 코어(111)를 포함한다. 메인 프로세서(11)에 의해 포함되는 프로세서 코어(111)는 메인 프로세서 프로세스 스케줄러(12)의 제어하에서 프로세스를 실행한다.
메인 프로세서 프로세스 스케줄러(12)는 프로세서 코어(111)에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리한다.
예를 들어, 메인 프로세서 프로세스 스케줄러(12)는 후술하는 스케줄링 폴리시(122)에 기초하여 컨텍스트 스위치를 실행한다. 즉, 메인 프로세서 프로세스 스케줄러(12)는 프로세서 코어(111)에 의해 실행되는 프로세스를 스위칭한다. 또한, 본 예시적 실시예에서의 메인 프로세서 프로세스 스케줄러(12)는 컨텍스트 스위치를 실행할 때, 상태 통지 수단(13)을 사용하여 컨텍스트 스위치의 실행을 나타내는 상태 통지 정보를 다른 프로세스 스케줄러(코프로세서 프로세스 스케줄러(14))에 통지한다.
구체적으로, 예를 들어 컨텍스트 스위치에 프로세스 컨텍스트를 저장한 후, 메인 프로세서 프로세스 스케줄러(12)는 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 코프로세서 프로세스 스케줄러(14)에 통지한다. 또한, 메인 프로세서 프로세스 스케줄러(12)는, 예를 들어 컨텍스트 스위치에서 프로세스 컨텍스트를 복원한 후, 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 코프로세서 프로세스 스케줄러(14)에 통지한다.
또한, 메인 프로세서 프로세스 스케줄러(12)는, 다른 프로세스 스케줄러로부터 상태 통지 정보를 수신할 때, 우선도 제어 수단(121)을 사용하여 프로세서 코어(111)에 의해 실행되는 프로세스의 우선도를 제어한다. 따라서, 메인 프로세서 프로세스 스케줄러(12)는 프로세서 코어(111)에 디스패치되는 프로세스를 제어한다.
구체적으로, 예를 들어 메인 프로세서 프로세스 스케줄러(12)는, 프로세스가 코프로세서 프로세스 스케줄러(14)로부터 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 수신한다. 그런 다음, 메인 프로세서 프로세스 스케줄러(12)는 후술하는 상태 정보(1251)를 확인하고, 그로 인해 상태 통지 정보에 나타나는 프로세스와 연관되는(배타적으로 동작하는) 프로세스가 대기 상태에 있는지 여부를 확인한다. 연관된 프로세스가 대기 상태에 있는 경우, 메인 프로세서 프로세스 스케줄러(12)의 우선도 제어 수단(121)은 대기 상태에 있는 프로세스의 우선도를 통상보다 낮추도록 제어한다(도 8 참조). 한편, 메인 프로세서 프로세스 스케줄러(12)는, 예를 들어 프로세스가 코프로세서 프로세스 스케줄러(14)로부터 디스패치된 것을 나타내는 상태 통지 정보를 수신한다. 그런 다음, 메인 프로세서 프로세스 스케줄러(12)는 상태 정보(1251)를 확인하고, 그로 인해 상태 통지 정보에 나타나는 프로세스와 연관된 프로세스가 대기 상태에 있는지 여부를 확인한다. 연관된 프로세스가 대기 상태에 있는 경우, 메인 프로세서 프로세스 스케줄러(12)의 우선도 제어 수단(121)은 대기 상태에 있는 프로세스의 우선도를 높임으로써, 우선도를 통상으로 복원한다(도 9 참조).
따라서, 메인 프로세서 프로세스 스케줄러(12)는 프로세서 코어(111)에 의해 실행되는 프로세스의 처리 상황을 검출하고(프로세스의 스위칭을 검출하고), 상태 통지 정보를 다른 프로세스 스케줄러에 송신하도록 구성된다. 또한, 메인 프로세서 프로세스 스케줄러(12)는 자신에 의해 수신된 상태 통지 정보에 기초하여, 프로세서 코어(111)의 동작을 제어하도록(프로세서 코어(111)에 의해 실행되는 프로세스의 우선도를 제어하도록) 구성된다.
메인 프로세서 프로세스 스케줄러(12)는 프로세스의 우선도를 어느 정도 올리거나 내릴 수 있다. 메인 프로세서 프로세스 스케줄러(12)에 의해 제어되는 우선도의 변경 정도를 나타내는 파라미터는 변경 가능하도록 구성될 수 있다.
도 4는, 메인 프로세서 프로세스 스케줄러(12)가 컨텍스트 스위치를 실행할 때 사용되는 구성의 예를 나타내고 있다. 도 4를 참조하면, 메인 프로세서 프로세스 스케줄러(12)는 스케줄링 폴리시(122), 프로세스 스위치 수단(123)과, 프로세스 컨텍스트(124), 및 프로세스 구조체(125)를 포함한다.
스케줄링 폴리시(122)는 컨텍스트 스위치의 타이밍과, 컨텍스트 스위치가 실행될 때에 다음에 실행되어야 할 프로세스를 선택하기 위한 폴리시를 나타낸다. 스케줄링 폴리시(122)는 우선도에 기초한 스케줄링을 허용하는 한 특별히 제한되지 않고 공지인 것이 적용될 수 있다.
프로세스 스위치 수단(123)은 프로세서 코어(111)에 의해 실행되는 프로세스를 스위칭하기 위한 수단이다. 예를 들어, 프로세스 스위치 수단(123)은, 컨텍스트 스위치에서 스위칭 대상로서의 프로세스가 실행중인 프로세스 코어(111)의 컨텍스트를 프로세스 컨텍스트(124)로서 저장한다. 그런 다음, 프로세스 스위치 수단(123)은 디스패치 대상의 프로세스 컨텍스트(124)를 대상 프로세서 코어(111)에 복원한다.
프로세스 컨텍스트(124)는, 프로세스 스위치 수단(123)이 프로세서 코어(111)에 의해 실행되고 있는 프로세스에 대한 컨텍스트 스위치를 실행할 때 프로세서 코어(111)로부터 저장된 컨텍스트 데이터이다.
프로세스 구조체(125)는 프로세스의 정보를 나타내는 구조체이며, 상태 정보(1251)를 포함한다. 전술한 바와 같이, 본 예시적 실시예에서의 병렬 컴퓨터(4)에서는, 메인 프로세서 노드(1)와 코프로세서 노드(2)가 배타적으로 동작하는 프로그램을 실행한다. 따라서, 예를 들어 메인 프로세서 노드(1) 상의 프로세스가 실행되고 있는 동안, 코프로세서 노드(2)는 대기 상태에 있다. 프로세스 스케줄러가 이러한 대기 상태를 구별하게 하기 위해, 메인 프로세서 프로세스 스케줄러(12)에 의해 관리되는 프로세스 구조체(125)는, 하나의 프로세스가 다른 프로세스를 대기하고 있는지(하나의 프로세스가 대기 상태에 있는지) 여부를 나타내는 정보인 상태 정보(1251)를 포함한다. 상태 정보(1251)는, 프로세스 구조체(125)에 나타나는 프로세스가 연관된 프로세스의 처리를 대기하는 경우에, 프로세스가 처리를 대기하고 있음을 나타내도록 제어된다.
상태 통지 수단(13)은, 메인 프로세서 프로세스 스케줄러(12)와 코프로세서 프로세스 스케줄러(14) 사이에서 상태 통지 정보를 송수신할 때에 사용된다. 예를 들어, 메인 프로세서 프로세스 스케줄러(12)는 상태 통지 수단(13)을 사용하여 상태 통지 정보를 코프로세서 프로세스 스케줄러(14)에 송신한다. 또한, 예를 들어 코프로세서 프로세스 스케줄러(14)는 상태 통지 수단(13)을 사용하여, 상태 통지 정보를 메인 프로세서 프로세스 스케줄러(12) 및 다른 코프로세서 프로세스 스케줄러(14)에 송신한다.
코프로세서 프로세스 스케줄러(14)는 대응하는 코프로세서 노드(2)의 프로세서 코어(211)에 의해 실행되는 프로세스를 관리한다. 코프로세서 프로세스 스케줄러(14)는 코프로세서 노드(2)의 수에 의존한다.
코프로세서 프로세스 스케줄러(14)는 메인 프로세서 프로세스 스케줄러(12)와 동일한 구성을 갖는다. 즉, 코프로세서 프로세스 스케줄러(14)는 하기에 나타내는 처리를 실행할 수 있도록 구성된다:
- 대응하는 코프로세서 노드(2)에 의해 실행되는 프로세스에 대한 컨텍스트 스위치를 실행하고(이 처리는, 통신 버스(3)를 통해 실행된다);
- 컨텍스트 스위치를 실행할 때, 상태 통지 정보를 다른 프로세스 스케줄러(메인 프로세서 프로세스 스케줄러(12) 및 다른 코프로세서 프로세스 스케줄러(14))에 송신하고;
- 우선도 제어 수단(141)이 다른 프로세스 스케줄러로부터 수신된 상태 통지 정보에 따라 우선도를 제어하게 한다.
또한, 코프로세서 프로세스 스케줄러(14)는 도 4에 도시된 메인 프로세서 프로세스 스케줄러(12)와 동일한 구성을 갖는다. 즉, 코프로세서 프로세스 스케줄러(14)는 스케줄링 폴리시, 프로세스 스위치 수단, 프로세스 컨텍스트, 및 프로세스 구조체를 포함한다. 또한, 코프로세서 프로세스 스케줄러(14)에 의해 포함되는 프로세스 구조체는 상태 정보를 포함한다.
따라서, 코프로세서 프로세스 스케줄러(14)는 메인 프로세서 프로세스 스케줄러(12)와 동일한 방식으로 구성된다. 따라서, 코프로세서 프로세스 스케줄러(14)에 대한 상세한 설명은 생략한다.
노드 간 통신 수단(15)은, 메인 프로세서(11) 및 코프로세서 프로세스 스케줄러(14)가 코프로세서 노드(2)와 통신할 때 사용된다. 예를 들어, 메인 프로세서(11)는, 프로세서 코어(111)에 의해 실행되는 프로세스를 처리할 때 노드 간 통신 수단(15)을 통해 코프로세서 노드(2)의 프로세서 코어(211)와 통신한다. 또한, 코프로세서 프로세스 스케줄러(14)는 노드 간 통신 수단(15)을 통해 코프로세서 노드(2)의 프로세서 코어(211)에 의해 실행되는 프로세스를 관리한다. 즉, 메인 프로세서 노드(1)로부터 코프로세서 노드(2)와의 통신은 노드 간 통신 수단(15)을 사용하여 수행된다.
또한, 도 3을 참조하면, 코프로세서 노드(2)는 코프로세서(21) 및 노드 간 통신 수단(22)을 포함한다. 코프로세서 노드(2)의 수는 1 이상의 임의의 수일 수 있다.
코프로세서(21)는 하나 이상의 코프로세서 코어(211)를 포함한다. 코프로세서(21)에 의해 포함되는 프로세서 코어(211)는 대응하는 코프로세서 프로세스 스케줄러(14)의 제어하에서 프로세스를 실행한다.
노드 간 통신 수단(22)은, 코프로세서(21)가 메인 프로세서 노드(1)와 통신할 때 사용된다. 예를 들어, 코프로세서(21)는, 프로세서 코어(211)에 의해 실행되는 프로세스를 처리할 때 노드 간 통신 수단(22)을 통해 메인 프로세서 노드(1)의 프로세서 코어(111)와 통신한다. 또한, 코프로세서 노드(2)의 프로세서 코어(211)에 의해 실행되는 프로세스는 노드 간 통신 수단(22)을 통해 접속된 코프로세서 프로세스 스케줄러(14)에 의해 관리된다. 즉, 코프로세서 노드(2)로부터 메인 프로세서 노드(1)와의 통신은 노드 간 통신 수단(22)을 사용하여 수행된다.
이상이, 병렬 컴퓨터(4)의 구성에 대한 설명이다. 다음에, 병렬 컴퓨터(4)의 동작에 대해 설명할 것이다. 우선, 도 5를 참조하여, 메인 프로세서 프로세스 스케줄러(12)가 메인 프로세서(11) 내의 프로세서 코어(111) 상에서 컨텍스트 스위치를 실행할 때의 동작에 대해 설명할 것이다.
도 5를 참조하면, 메인 프로세서 프로세스 스케줄러(12)는 스케줄링 폴리시(122)에 따라, 컨텍스트 스위치에서 스위칭하는 프로세스를 결정한다(단계 S101). 전술한 바와 같이, 메인 프로세서 프로세스 스케줄러(12)에 의해 참조되는 스케줄링 폴리시(122)는 특별히 제한되지 않고 공지인 것이 적용될 수 있다. 또한, 메인 프로세서 프로세스 스케줄러(12)에 의해 사용되는 스케줄링 알고리즘은 특별히 제한되지 않고 공지인 것이 적용될 수 있다.
다음에, 프로세스 스위치 수단(123)은, 컨텍스트 스위치의 대상으로서의 프로세스가 실행되고 있는 프로세서 코어(111)의 컨텍스트를 프로세스 컨텍스트(124)로서 저장한다. 그런 다음, 프로세스 스위치 수단(123)은 디스패치 대상의 프로세스 컨텍스트(124)를 컨텍스트 스위치 대상의 프로세서 코어(111)에 복원한다. 메인 프로세서 프로세스 스케줄러(12)는 이런 동작을 통해 컨텍스트 스위치를 실행한다(단계 S102).
그 후, 메인 프로세서 프로세스 스케줄러(12)는 상태 통지 수단(13)을 사용하여, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보, 및 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 다른 프로세스 스케줄러(14)(코프로세서 프로세스 스케줄러(14))에 통지한다(단계 S103).
메인 프로세서 프로세스 스케줄러(12)가 상태 통지 정보를 송신하는 타이밍은 상기 경우에 제한되지 않는다. 예를 들어, 메인 프로세서 프로세스 스케줄러(12)는, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보, 및 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 상이한 타이밍에서 송신할 수 있다. 예를 들어, 메인 프로세서 프로세스 스케줄러(12)는, 대상 프로세서 코어(111)의 컨텍스트를 프로세스 컨텍스트(124)로서 저장한 후(또는 저장과 동시에), 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 송신한다. 그런 다음, 메인 프로세서 프로세스 스케줄러(12)는, 디스패치 대상의 프로세스 컨텍스트(124)를 컨텍스트 스위치 대상의 프로세서 코어(111)에 복원한 후(또는 복원과 동시에), 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 송신한다. 메인 프로세서 프로세스 스케줄러(12)는, 예를 들어 전술한 바와 같이 동작할 수 있다. 한편, 메인 프로세서 프로세스 스케줄러(12)는, 프로세스가 대기 상태로 천이한 것과, 프로세스가 디스패치된 것을 하나의 상태 통지 정보로 한번에 통지하도록 구성될 수 있다.
다음에, 코프로세서 프로세스 스케줄러(14)가 코프로세서(21) 내의 코프로세서 코어(211) 상에서 컨텍스트 스위치를 실행할 때의 동작에 대해 설명할 것이다.
코프로세서 프로세스 스케줄러(14)가 코프로세서(21) 내의 코프로세서 코어(211) 상에서 컨텍스트 스위치를 실행할 때의 동작은, 도 5에 도시된 메인 프로세서 프로세스 스케줄러(12)가 컨텍스트 스위치를 실행할 때의 동작과 거의 동일하다.
즉, 코프로세서 프로세스 스케줄러(14)는 코프로세서 프로세스 스케줄러(14)에 의해 포함된 스케줄링 폴리시에 따라, 컨텍스트 스위치에서 스위칭하는 프로세스를 결정한다(단계 S101; 도 5 참조).
다음에, 코프로세서 프로세스 스케줄러(14)의 프로세스 스위치 수단은, 컨텍스트 스위치의 대상으로서의 프로세스가 코프로세서 프로세스 스케줄러(14)로 실행되는 프로세서 코어(211)의 컨텍스트를 프로세스 컨텍스트로서 저장한다. 즉, 코프로세서(21)의 프로세서 코어(211)의 프로세스 상태는 메인 프로세서 노드(1) 상에 저장된다. 그런 다음, 코프로세서 프로세스 스케줄러(14)의 프로세스 스위치 수단은, 디스패치 대상의 프로세스 컨텍스트를, 컨텍스트 스위치가 실행되는 프로세서 코어(211)에 복원한다. 코프로세서 프로세스 스케줄러(14)는 통신 버스(3)를 통해 노드 간 통신 수단(15)을 사용함으로써, 코프로세서 노드(2)의 프로세서 코어(211)의 컨텍스트에 액세스하고 전술한 동작을 실행한다(단계 S102; 도 5 참조).
그 후, 코프로세서 프로세스 스케줄러(14)는 상태 통지 수단(13)을 사용하여, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보, 및 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 다른 프로세스 스케줄러(메인 프로세서 프로세스 스케줄러(12) 및 다른 코프로세서 프로세스 스케줄러(14))에 통지한다(단계 S103; 도 5 참조). 한편, 코프로세서 프로세스 스케줄러(14)가 상태 통지 정보를 통지하는 구성으로서, 메인 프로세서 프로세스 스케줄러(12)의 경우와 마찬가지로 다양한 형태가 채용될 수 있다.
다음에, 도 6을 참조하여, 메인 프로세서 프로세스 스케줄러(12)가 다른 프로세스 스케줄러(코프로세서 프로세스 스케줄러(14))로부터 상태 통지 정보를 수신했을 때의 동작에 대해 설명할 것이다.
도 6을 참조하면, 메인 프로세서 프로세스 스케줄러(12)는 상태 통지 수단(13)을 사용하여, 코프로세서 프로세스 스케줄러(14)로부터 프로세스의 스위칭을 나타내는 상태 통지 정보를 수신한다(단계 S201). 구체적으로, 메인 프로세서 프로세스 스케줄러(12)는 코프로세서 프로세스 스케줄러(14)로부터, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보, 또는 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 수신한다. 한편, 메인 프로세서 프로세스 스케줄러(12)는 코프로세서 프로세스 스케줄러(14)로부터, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보, 및 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 동시에 수신할 수 있다.
이어서, 메인 프로세서 프로세스 스케줄러(12)는 프로세스 구조체(125)의 상태 정보(1251)를 참조한다. 따라서, 메인 프로세서 프로세스 스케줄러(12)는, 코프로세서 프로세스 스케줄러(14)에 의해 스위칭된 프로세스와 연관된 메인 프로세서 노드(1) 상의 프로세스가 대기 상태에 있는지 여부를 확인한다(단계 S202).
연관된 프로세스가 대기 상태에 있지 않은 경우(단계 S202, 아니오), 메인 프로세서 프로세스 스케줄러(12)는 처리를 종료한다.
한편, 연관된 프로세스가 대기 상태에 있는 경우(단계 S202, 예), 메인 프로세서 프로세스 스케줄러(12)는, 수신된 상태 통지 정보가, 프로세스가 대기 상태로 천이한 것을 나타내거나 또는 프로세스가 디스패치된 것을 나타내는지를 확인한다(단계 S203).
프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 수신하고 있었던 경우(단계 S203, 대기 상태로 천이됨), 메인 프로세서 프로세스 스케줄러(12)는 도 8에 도시된 바와 같이, 메인 프로세서 노드(1) 상에서 연관된 프로세스를 처리하기 위한 우선도(프로세스 우선도)를 통상보다 낮춘다(단계 S205).
한편, 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 수신하고 있었던 경우(단계 S203, 디스패치됨), 메인 프로세서 프로세스 스케줄러(12)는 도 9에 도시된 바와 같이, 메인 프로세서 노드(1) 상에서 연관된 프로세스를 처리하기 위한 우선도(프로세스 우선도)를 원상태까지 높인다(단계 S204).
메인 프로세서 프로세스 스케줄러(12)는, 예를 들어 전술한 바와 같은 동작에 의해, 수신된 상태 통지 정보에 따라 우선도를 제어한다. 그 결과, 프로세서 코어(111)에 의해 실행하는 프로세스가 제어된다.
다음에, 도 7을 참조하여, 코프로세서 프로세스 스케줄러(14)가 다른 프로세스 스케줄러(메인 프로세서 프로세스 스케줄러(12) 및 다른 코프로세서 프로세스 스케줄러(14))로부터 상태 통지 정보를 수신했을 때의 동작에 대해 설명할 것이다. 코프로세서 프로세스 스케줄러(14)가 다른 프로세스 스케줄러로부터 상태 통지 정보를 수신했을 때의 동작은, 메인 프로세서 프로세스 스케줄러(12)가 다른 프로세스 스케줄러로부터 상태 통지 정보를 수신했을 때의 동작과 거의 동일하다.
도 7을 참조하면, 코프로세서 프로세스 스케줄러(14)는 상태 통지 수단(13)을 사용하여, 다른 프로세스 스케줄러(메인 프로세서 프로세스 스케줄러(12) 또는 다른 코프로세서 프로세스 스케줄러(14))로부터 프로세스의 스위칭을 나타내는 상태 통지 정보를 수신한다(단계 S301). 구체적으로, 코프로세서 프로세스 스케줄러(14)는 다른 프로세스 스케줄러로부터, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보 또는 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 수신한다. 한편, 코프로세서 프로세스 스케줄러(14)는 다른 프로세스 스케줄러로부터, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보, 및 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 동시에 수신할 수 있다.
이어서, 코프로세서 프로세스 스케줄러(14)는 코프로세서 프로세스 스케줄러(14)의 프로세스 구조체의 상태 정보를 참조한다. 따라서, 코프로세서 프로세스 스케줄러(14)는, 다른 프로세스 스케줄러에 의해 스위칭된 프로세스와 연관된 코프로세서 노드(2) 상의 프로세스가 대기 상태에 있는지 여부를 확인한다(단계 S302).
연관된 프로세스가 대기 상태에 있지 않는 경우(단계 S302, 아니오), 코프로세서 프로세스 스케줄러(14)는 처리를 종료한다.
한편, 연관된 프로세스가 대기 상태에 있는 경우(단계 S302, 예), 코프로세서 프로세스 스케줄러(14)는, 수신된 상태 통지 정보가, 프로세스가 대기 상태로 천이한 것을 나타내거나 또는 프로세스가 디스패치된 것을 나타내는지를 확인한다(단계 S303).
프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 수신하고 있었던 경우(단계 S303, 대기 상태로 천이됨), 코프로세서 프로세스 스케줄러(14)는 도 8에 도시된 바와 같이, 코프로세서 노드(2) 상에서 연관된 프로세스를 처리하기 위한 우선도(프로세스 우선도)를 통상보다 낮춘다(단계 S305).
한편, 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 수신하고 있었던 경우(단계 S303, 디스패치됨), 코프로세서 프로세스 스케줄러(14)는 도 9에 도시된 바와 같이, 코프로세서 노드(2) 상에서 연관된 프로세스를 처리하기 위한 우선도(프로세스 우선도)를 통상까지 높인다(단계 S304).
코프로세서 프로세스 스케줄러(14)는, 예를 들어 전술한 동작에 의해, 수신된 상태 통지 정보에 따라서 우선도를 제어한다. 그 결과, 코프로세서 프로세스 스케줄러(14)와 연관된 코프로세서 노드(2) 상의 프로세서 코어(211)에 의해 실행되는 프로세스가 제어된다.
따라서, 본 예시적 실시예에서의 병렬 컴퓨터(4)는 프로세서 코어(111)에 의해 실행되는 프로세스를 관리하는 메인 프로세서 프로세스 스케줄러(12), 및 프로세서 코어(211)에 의해 실행되는 프로세스를 관리하는 코프로세서 프로세스 스케줄러(14)를 갖는다. 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는 상태 통지 수단(13)을 통해 통신 가능하도록 구성된다. 이와 같은 구성에 의해, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는 컨텍스트 스위치를 실행할 때 상태 통지 정보를 다른 프로세스 스케줄러에 송신할 수 있다. 그 결과, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는, 다른 프로세스의 처리 상황에 따라서, 연관된 프로세스의 우선도를 제어할 수 있다. 결과적으로, CPU(Central Processing Unit)의 프로세스에 대한 불필요한 할당을 감소시킬 수 있고, 병렬 컴퓨터(4) 전체에서 효율적인 스케줄링을 실현할 수 있다. 또한, 결과적으로, CPU를 보다 효율적으로 사용할 수 있다.
또한, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 송신하도록 구성된다. 이런 구성에 의해, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14) 각각은, 컨텍스트 스위치에 프로세스 컨텍스트를 저장할 때, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 다른 프로세스 스케줄러에 송신할 수 있다. 그 결과, 상기 상태 통지 정보를 수신한 스케줄러는 상태 통지 정보에 적합한 제어를 실행함으로써, 프로세스 컨텍스트가 저장되어 있는 프로세스와 연관된 프로세스의 우선도를 낮추는 것이 가능하게 된다. 결과적으로, 예를 들어 불필요한 폴링의 실행을 방지하는 것이 가능하게 되고, 불필요한 프로세스의 실행에 의해 다른 프로세스의 실행이 개입하는 것을 방지할 수 있다.
또한, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는, 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 송신할 수 있도록 구성된다. 이런 구성에 의해, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14) 각각은, 컨텍스트 스위치에서 프로세스 컨텍스트를 디스패치할 때, 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 다른 프로세스 스케줄러에 송신할 수 있다. 그 결과, 상기 상태 통지 정보를 수신한 스케줄러는 상태 통지 정보에 적합한 제어를 실행함으로써, 프로세스 컨텍스트가 디스패치된 프로세스와 연관된 프로세스의 우선도를 높이는 것이 가능하게 된다. 결과적으로, 예를 들어 필요에 따라 프로세스의 우선도를 통상으로 높이는 것이 가능하게 된다.
본 예시적 실시예에서, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14) 각각은, 상태 통지 정보를 다른 프로세스 스케줄러에 송신한다. 그러나 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는, 예를 들어 연관된 프로세스를 관리하는 프로세스 스케줄러에 상태 통지 정보를 송신하도록 구성될 수 있다.
또한, 본 예시적 실시예에서, 병렬 컴퓨터(4)는 메인 프로세서 노드(1) 및 코프로세서 노드(2)를 갖는다. 그러나 본 발명은, 병렬 컴퓨터(4)가 메인 프로세서 노드(1) 및 코프로세서 노드(2)를 갖는 경우에 제한되지 않고 적용될 수 있다. 본 발명은, 액셀러레이터들로 하여금 이들이 각각 전문화한 것을 행하게 하는 경우, 각각의 액셀러레이터들에 의해 실행되는 프로세스들을 관리하는 프로세스 스케줄러들이 상태 통지 정보를 서로 송신하게 하도록 구성될 수 있다. 따라서, 연관된 프로세스를 제어하는 스케줄러들이 상태 통지 정보를 서로 송신할 수 있는 한, 본 발명은 그런 구체적인 구성을 제한하지 않으면서 가능할 수 있다. 본 발명은, 예를 들어 각각의 코프로세서 노드(2)를 관리하는 코프로세서 프로세스 스케줄러가 상태 통지 정보를 서로 송신하게 하도록 구성될 수 있다.
또한, 본 예시적 실시예에서, 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는 상태 통지 정보에 따라서 연관된 프로세스의 우선도를 제어하도록 각각 구성된다. 그러나 상태 통지 정보에 따라 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14) 각각에 의해 실행되는 제어는 우선도에 대한 제어에 한정되지 않는다. 메인 프로세서 프로세스 스케줄러(12) 및 코프로세서 프로세스 스케줄러(14)는, 예를 들어 우선도를 제어하는 대신에, 상태 통지 정보와 연관된 프로세스를 디스패치하지 않도록 제어하도록 구성될 수 있다.
또한, 본 예시적 실시예에서, 배타적으로 동작하는 프로그램은 메인 프로세서 노드(1)와 코프로세서 노드(2) 상에서 실행된다. 그러나 메인 프로세서 노드(1)와 코프로세서 노드(2) 상에서 동작하는 프로그램은, 반드시 배타적으로 동작하는 프로그램에 한정되지 않는다. 메인 프로세서 노드(1)와 코프로세서 노드(2) 상에서, 노드들 중 하나의 노드의 동작이 다른 노드의 동작에 영향을 주는 연관된 프로그램이 실행될 수 있다.
[제2 예시적 실시예]
본 발명의 제2 예시적 실시예에서는, 제1 예시적 실시예에서 설명한 병렬 컴퓨터(4)의 다른 구성에 대해 설명할 것이다.
도 10을 참조하면, 본 예시적 실시예에서의 병렬 컴퓨터(5)는 메인 프로세서 노드(51) 및 하나 이상의 코프로세서 노드(52)를 갖는다.
메인 프로세서 노드(51)는 메인 프로세서(511) 및 메인 프로세서 프로세스 스케줄러(512)를 갖는다. 코프로세서 노드(52)는 코프로세서(521) 및 코프로세서 프로세스 스케줄러(522)를 갖는다. 메인 프로세서 프로세스 스케줄러(512) 및 코프로세서 프로세스 스케줄러(522)는 상태 통지 수단(53)에 의해 접속되고, 서로 통신 가능하도록 구성된다.
따라서, 본 예시적 실시예에서의 병렬 컴퓨터(5)는 제1 예시적 실시예에서 설명한 병렬 컴퓨터(4)와 거의 동일한 구성을 가지며, 병렬 컴퓨터(5)의 구성은, 코프로세서 노드(52)가 코프로세서 프로세스 스케줄러(522)를 갖는다는 점에서 병렬 컴퓨터(4)의 구성과 상이하다.
전술한 구성에 의해, 메인 프로세서 프로세스 스케줄러(512)는 컨텍스트 스위치를 실행할 때, 상태 통지 수단(53)을 사용하여 상태 통지 정보를 코프로세서 프로세스 스케줄러(522)에 송신한다. 또한, 코프로세서 프로세스 스케줄러(522)는 컨텍스트 스위치를 실행할 때, 상태 통지 수단(53)을 사용하여 상태 통지 정보를 메인 프로세서 프로세스 스케줄러(512) 및 다른 코프로세서 프로세스 스케줄러(522)에 송신한다.
또한, 메인 프로세서 프로세스 스케줄러(512)는 다른 프로세스 스케줄러로부터 상태 통지 정보를 수신할 때, 메인 프로세서(511)에 의해 실행되는 프로세스의 우선도를 제어한다. 또한, 코프로세서 프로세스 스케줄러(522)는 다른 프로세스 스케줄러로부터 상태 통지 정보를 수신할 때, 코프로세서(521)에 의해 실행되는 프로세스의 우선도를 제어한다.
따라서, 메인 프로세서 노드(51)가 메인 프로세서 프로세스 스케줄러(512)를 갖고, 코프로세서 노드(52)가 코프로세서 프로세스 스케줄러(522)를 갖는 경우라도, 본 발명은 적용 가능하다. 즉, 메인 프로세서 프로세스 스케줄러(512) 및 코프로세서 프로세스 스케줄러(522)가 상이한 노드들에 의해 포함될지라도, 메인 프로세서 프로세스 스케줄러(512)와 코프로세서 프로세스 스케줄러(522)를 상태 통지 수단(53)을 사용하여 접속함으로써, 상태 통지 정보에 기초한 제어의 실행을 가능하게 할 수 있다. 그 결과, 메인 프로세서 프로세스 스케줄러(512) 및 코프로세서 프로세스 스케줄러(522)는 각각 다른 프로세스의 처리 상황에 따라서, 연관된 프로세스의 우선도를 제어할 수 있다.
제2 예시적 실시예에서의 병렬 컴퓨터(5)는 제1 예시적 실시예에서의 병렬 컴퓨터(4)와 동일한 방식으로 다양한 방식에서 수정될 수 있다.
[제3 예시적 실시예]
본 발명의 제3 예시적 실시예에서는, 제1 예시적 실시예에서 설명한 병렬 컴퓨터(4) 및 제2 예시적 실시예에서 설명한 병렬 컴퓨터(5)의 다른 구성 예에 대해 설명할 것이다. 구체적으로, 예를 들어 코프로세서 노드가 메인 프로세서 노드 내의 하나 이상의 프로세서 코어로 구성되어 있는 경우에 대해 설명할 것이다.
도 11을 참조하면, 본 예시적 실시예에서의 병렬 컴퓨터(6)는 프로세서(61)를 갖는다. 프로세서(61)는 프로세서 코어(611)를 가지며, 프로세서 코어(611)에 의해 실행되는 프로세스는 메인 프로세서 프로세스 스케줄러(62)에 의해 관리된다. 또한, 프로세서(61)는 코프로세서 노드와 동등한 프로세서 코어(612)를 가지며, 프로세서 코어(612)에 의해 실행되는 프로세스는 코프로세서 프로세스 스케줄러(63)에 의해 관리된다. 메인 프로세서 프로세스 스케줄러(62) 및 코프로세서 프로세스 스케줄러(63)는 상태 통지 수단(64)에 의해 접속되고, 서로 통신 가능하도록 구성된다.
따라서, 본 예시적 실시예에서의 병렬 컴퓨터(6)는 하나의 노드 상에서, 다른 프로세스 스케줄러에 의해 관리되는 복수의 프로세서 코어를 갖는다. 병렬 컴퓨터(6)가 상태 통지 수단(64)을 갖고 있기 때문에, 메인 프로세서 프로세스 스케줄러(62)는, 컨텍스트 스위치를 실행할 때 상태 통지 수단(64)을 사용하여 전술한 구성에 의해 상태 통지 정보를 코프로세서 처리 스케줄러(63)에 송신할 수 있다. 또한, 코프로세서 프로세스 스케줄러(63)는 컨텍스트 스위치를 실행할 때, 상태 통지 수단(64)을 사용하여, 상태 통지 정보를 메인 프로세서 프로세스 스케줄러(62) 및 다른 코프로세서 프로세스 스케줄러(63)에 송신할 수 있다. 또한, 메인 프로세서 프로세스 스케줄러(62)는 다른 프로세스 스케줄러로부터 상태 통지 정보를 수신하면, 프로세서 코어(611)에 의해 실행되는 프로세스의 우선도를 제어할 수 있다. 또한, 코프로세서 프로세스 스케줄러(63)는 다른 프로세스 스케줄러로부터 상태 통지 정보를 수신하면, 프로세서 코어(612)에 의해 실행되는 프로세스의 우선도를 제어할 수 있다.
그 결과, 메인 프로세서 프로세스 스케줄러(62) 및 코프로세서 프로세스 스케줄러(63)는 각각, 다른 프로세스의 처리 상황에 따라서, 연관된 프로세스의 우선도를 제어할 수 있다. 따라서, 본 발명은 병렬 컴퓨터가 하나의 노드만을 갖는 경우에서도 적용 가능하다.
제3 예시적 실시예에서의 병렬 컴퓨터(6)는, 제1 예시적 실시예에서의 병렬 컴퓨터(4) 및 제2 예시적 실시예에서의 병렬 컴퓨터(5)와 동일한 방식으로 다양한 방식에서 수정될 수 있다.
[제4 예시적 실시예]
본 발명의 제4 예시적 실시예에서는, 복수의 처리부(제1 프로세스 처리부(71) 및 제2 프로세스 처리부(73))가 연관된 프로세스를 실행하는 병렬 처리 시스템(7)에 대해 설명할 것이다. 본 예시적 실시예에서는, 병렬 처리 시스템(7)의 구성에 대해 간략히 설명할 것이다.
도 12를 참조하면, 본 예시적 실시예에서의 병렬 처리 시스템(7)은 제1 프로세스 처리부(71), 제1 프로세스 스케줄러(72), 제2 프로세스 처리부(73), 및 제2 프로세스 스케줄러(74)를 갖는다.
제1 프로세스 처리부(71)는 미리 결정된 프로세스를 실행하도록 구성된다. 제1 프로세스 스케줄러(72)는 제1 프로세스 처리부(71)에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된다.
제2 프로세스 처리부(73)는 제1 프로세스 처리부(71)에 의해 실행되는 프로세스와 연관된 프로세스를 실행하도록 구성된다. 또한, 제2 프로세스 스케줄러(74)는 제2 프로세스 처리부(73)에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된다.
또한, 제1 프로세스 스케줄러(72) 및 제2 프로세스 스케줄러(74)는 서로 통신 가능하도록 구성된다.
이런 구성에 의해, 제1 프로세스 스케줄러(72)는 제1 프로세스 처리부(71)의 처리 상황을 검출한다. 그런 다음, 제1 프로세스 스케줄러(72)는 검출된 제1 프로세스 처리부(71)의 처리 상황을 제2 프로세스 스케줄러(74)에 송신한다. 제2 프로세스 스케줄러(74)는 제2 프로세스 처리부(73)의 처리 상황을 검출한다. 그런 다음, 제2 프로세스 스케줄러(74)는 검출된 제2 프로세스 처리부(73)의 처리 상황을 제1 프로세스 스케줄러(72)에 송신한다.
또한, 제1 프로세스 스케줄러(72)는 제2 프로세스 스케줄러(74)로부터 수신된 제2 프로세스 처리부(73)의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제1 프로세스 처리부(71)의 동작을 제어한다. 또한, 제2 프로세스 스케줄러(74)는 제1 프로세스 스케줄러(72)로부터 수신된 제1 프로세스 처리부(71)의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제2 프로세스 처리부(73)의 동작을 제어한다.
따라서, 본 예시적 실시예에서의 병렬 처리 시스템(7)은 제1 프로세스 처리부(71)를 관리하는 제1 프로세스 스케줄러(72) 및 제2 프로세스 처리부(73)를 관리하는 제2 프로세스 스케줄러(74)를 갖는다. 또한, 제1 프로세스 스케줄러(72) 및 제2 프로세스 스케줄러(74)는 서로 통신 가능하도록 구성된다. 이런 구성에 의해, 제1 프로세스 스케줄러(72)는 검출된 처리 상황을 제2 프로세스 스케줄러(74)에 송신할 수 있다. 또한, 제2 프로세스 스케줄러(74)는 검출된 처리 상황을 제1 프로세스 스케줄러(72)에 송신할 수 있다. 그 결과, 제1 프로세스 스케줄러(72)는 제2 프로세스 처리부(73)의 처리 상황에 따라서, 연관된 프로세스를 실행하는 제1 프로세스 처리부(71)의 동작을 제어할 수 있다. 또한, 제2 프로세스 스케줄러(74)는 제1 프로세스 처리부(71)의 처리 상황에 따라서, 연관된 프로세스를 실행하는 제2 프로세스 처리부(73)의 동작을 제어할 수 있다. 결과적으로, 프로세스에 대한 불필요한 할당이 방지될 수 있고, 병렬 처리 시스템(7) 전체적으로 스케줄링 효율이 증가될 수 있다.
또한, 전술한 병렬 처리 시스템(7)은 정보 처치 디바이스에 미리 결정된 프로그램의 설치에 의해 실현될 수 있다. 구체적으로, 본 발명의 다른 양태에 따른 프로그램은, 정보 처리 디바이스가 다음의 동작들을 수행하게 하기 위한 명령어들을 포함하는 컴퓨터 프로그램이다. 정보 처리 디바이스는, 복수의 처리부 상에서 연관된 프로세스들을 실행하고 처리부에 의해 실행되는 프로세스들은 복수의 스케줄러에 의해 관리된다. 동작들은, 스케줄러들 각각에 의해 관리되는 프로세스의 처리 상황을 스케줄러들 중 다른 스케줄러에 통신하는 동작; 및 스케줄러들 각각이 수신된 처리 상황에 따라, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하게 하는 동작을 포함한다.
또한, 전술한 병렬 처리 시스템(7)의 동작에 의해 실행되는 병렬 처리 방법은, 복수의 처리부 상에서 연관된 프로세스를 실행하기 위한 병렬 처리 방법이다. 복수의 처리부에 의해 실행되는 프로세스들은 복수의 스케줄러에 의해 관리된다. 병렬 처리 방법은 스케줄러들 각각에 의해 관리되는 프로세스의 처리 상황을 스케줄러들 중 다른 스케줄러에 통신하는 단계를 포함한다. 스케줄러들 각각은 수신된 처리 상황에 따라, 그 처리 상황에 의해 나타나는 처리와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성된다.
전술한 구성을 갖는 프로그램 및 병렬 처리 방법의 발명들은 또한 전술한 병렬 처리 시스템(7)과 동일한 액션을 가지므로, 전술한 본 발명의 목적을 달성할 수 있다.
<부기>
위에 개시된 예시적인 실시예들의 일부 또는 전부는 이하의 부기와 같이 기재될 수 있다. 이하에서는, 본 발명에 따른 병렬 처리 시스템 등이 개략적으로 설명될 것이다. 그러나 본 발명은 이하에 제공된 구성에 한정되지 않는다.
(부기 1)
복수의 처리부 상에서 연관된 프로세스들을 실행하는 병렬 처리 시스템으로서, 병렬 처리 시스템은,
미리 결정된 프로세스를 실행하도록 구성된 제1 프로세스 처리부;
제1 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제1 프로세스 스케줄러;
제1 프로세스 처리부에 의해 실행되는 프로세스와 연관된 프로세스를 실행하도록 구성된 제2 프로세스 처리부; 및
제2 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제2 프로세스 스케줄러
를 포함하고,
제1 프로세스 스케줄러 및 상기 제2 프로세스 스케줄러는 서로 통신 가능하도록 구성되고,
제1 프로세스 스케줄러는 제2 프로세스 스케줄러에 의해 검출된 제2 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제1 프로세스 처리부의 동작을 제어하도록 구성되고;
제2 프로세스 스케줄러는 제1 프로세스 스케줄러에 의해 검출된 제1 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제2 프로세스 처리부의 동작을 제어하도록 구성된다.
(부기 2)
부기 1에 따른 병렬 처리 시스템에서,
제1 프로세스 스케줄러는 제1 프로세스 처리부에 의해 실행되는 프로세스를 스위칭할 때, 그 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 제2 프로세스 스케줄러에 송신하도록 구성되고;
제2 프로세스 스케줄러는 수신되었던 상태 통지 정보에 기초하여, 상태 통지 정보에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제2 프로세스 처리부의 동작을 제어하도록 구성된다.
(부기 3)
부기 1 또는 2에 따른 병렬 처리 시스템에서,
제1 프로세스 스케줄러는 제1 프로세스 처리부에 의해 실행되는 프로세스의 프로세스 컨텍스트를 저장할 때, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 제2 프로세스 스케줄러에 송신하도록 구성되고;
제2 프로세스 스케줄러는 수신되었던 상태 통지 정보에 기초하여, 제2 프로세스 처리부가 대기 상태로 천이했던 프로세스와 연관된 프로세스를 처리하게 하는 우선도를 낮추는 제어를 실행하도록 구성된다.
(부기 4)
부기 1 내지 3 중 어느 하나에 따른 병렬 처리 시스템에서,
제1 프로세스 스케줄러는 제1 프로세스 처리부에 의해 실행되는 프로세스의 프로세스 컨텍스트를 복원할 때, 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 제2 프로세스 스케줄러에 송신하도록 구성되고;
제2 프로세스 스케줄러는 수신되었던 상태 통지 정보에 기초하여, 제2 프로세스 처리부가 디스패치된 프로세스와 연관된 프로세스를 처리하게 하는 우선도를 높이는 제어를 실행하도록 구성된다.
(부기 5)
부기 1 내지 4 중 어느 하나에 따른 병렬 처리 시스템에서,
제2 프로세스 스케줄러는, 수신되었던 상태 통지 정보에 의해 나타나는 프로세스와 연관된 프로세스가 제1 프로세스 처리부에 의한 처리를 위해 대기 상태에 있는 경우, 처리를 위해 대기 상태에서 프로세스를 실행하는 제2 프로세스 처리부의 동작을 제어하도록 구성된다.
(부기 6)
부기 1 내지 5 중 어느 하나에 따른 병렬 처리 시스템은,
운영 체제가 설치되는 제1 노드 - 제1 노드는 제1 프로세스 처리부, 제1 프로세스 스케줄러 및 제2 프로세스 스케줄러를 포함함 -; 및
운영 체제가 설치되지 않은 제2 노드 - 제2 노드는 제2 프로세스 처리부를 포함함 -
를 포함하고,
제2 프로세스 처리부는 제1 노드에 의해 포함된 제2 프로세스 스케줄러의 제어하에서 프로세스를 실행하도록 구성된다.
(부기 7)
부기 6에 따른 병렬 처리 시스템에서,
제2 프로세스 스케줄러는 제2 프로세스 처리부에 의해 실행되는 프로세스를 스위칭할 때, 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 제1 프로세스 스케줄러에 송신하도록 구성되고;
제1 프로세스 스케줄러는 수신되었던 상태 통지 정보에 기초하여, 상태 통지 정보에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제1 프로세스 처리부의 동작을 제어하도록 구성된다.
(부기 8)
복수의 처리부 상에서 연관된 프로세스들을 실행하기 위한 병렬 처리 방법으로서, 복수의 처리부에 의해 실행되는 프로세스들은 복수의 스케줄러에 의해 관리되고,
병렬 처리 방법은 스케줄러들 각각에 의해 관리되는 프로세스의 처리 상황을 스케줄러들 중 다른 스케줄러에 통신하는 단계를 포함하고;
스케줄러들 각각은 수신된 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성된다.
(부기 9)
부기 8에 따른 병렬 처리 방법에서,
스케줄러들 각각은 자신에 의해 관리되는 처리부에 의해 실행되는 프로세스를 스위칭할 때, 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 스케줄러들 중 다른 스케줄러에 송신하도록 구성되고;
스케줄러들 각각은 수신되었던 상태 통지 정보에 기초하여, 상태 통지 정보에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성된다.
(부기 9-1)
부기 8 또는 9에 따른 병렬 처리 방법에서,
스케줄러들 각각은 자신에 의해 관리되는 처리부에 의해 실행되는 프로세스의 프로세스 컨텍스트를 저장할 때, 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 스케줄러들 중 다른 스케줄러에 송신하도록 구성되고;
스케줄러들 각각은 수신되었던 상태 통지 정보에 기초하여, 대기 상태로 천이했던 프로세스와 연관된 프로세스의 우선도를 낮추는 제어를 실행하도록 구성된다.
(부기 9-2)
정보 처리 장치에 의해 실현되는 병렬 처리 방법으로서, 상기 정보 처리 장치는,
미리 결정된 프로세스를 실행하도록 구성된 제1 프로세스 처리부;
제1 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제1 프로세스 스케줄러;
제1 프로세스 처리부에 의해 실행되는 프로세스와 연관된 프로세스를 실행하도록 구성된 제2 프로세스 처리부; 및
제2 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제2 프로세스 스케줄러
를 가지며,
제1 프로세스 스케줄러 및 제2 프로세스 스케줄러는 서로 통신하도록 구성되고,
제1 프로세스 스케줄러는 제2 프로세스 스케줄러에 의해 검출된 제2 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제1 프로세스 처리부의 동작을 제어하도록 구성되고;
제2 프로세스 스케줄러는 제1 프로세스 스케줄러에 의해 검출된 제1 프로세스 처리부의 처리 상황에 따라서, 제1 프로세스 처리부에 의해 실행되는 프로세스와 연관된 프로세스를 실행하는 제2 프로세스 처리부의 동작을 제어하도록 구성된다.
(부기 10)
정보 처리 디바이스로 하여금 동작들을 수행하게 하기 위한 명령어들을 포함하는 컴퓨터 프로그램으로서, 정보 처리 디바이스는 복수의 처리부 상에서 연관된 프로세스들을 실행하고, 처리부에 의해 실행된 프로세스들은 복수의 스케줄러에 의해 관리되며, 상기 동작들은,
스케줄러들 각각이 자신에 의해 관리되는 프로세스의 처리 상황을 스케줄러들 중 다른 스케줄러에 통신하게 하는 동작; 및
스케줄러들 각각이 수신된 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하게 하는 동작
을 포함한다.
(부기 11)
부기 10에 따른 컴퓨터 프로그램에서,
스케줄러들 각각은 자신에 의해 관리되는 처리부에 의해 실행되는 프로세스를 스위칭할 때, 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 스케줄러들 중 다른 스케줄러에 송신하도록 구성되고;
스케줄러들 각각은 수신되었던 상태 통지 정보에 기초하여, 그 상태 통지 정보에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성된다.
(부기 11-1)
정보 처리 디바이스로 하여금 제1 프로세스 스케줄러 및 제2 프로세스 스케줄러를 서로 통신하게 하는 것을 포함하는 동작들을 수행하게 하기 위한 명령어들을 포함하는 컴퓨터 프로그램으로서, 상기 정보 처리 디바이스는,
미리 결정된 프로세스를 실행하도록 구성된 제1 프로세스 처리부;
제1 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제1 프로세스 스케줄러;
제1 프로세스 처리부에 의해 실행되는 프로세스와 연관된 프로세스를 실행하도록 구성된 제2 프로세스 처리부; 및
제2 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제2 프로세스 스케줄러
를 가지며,
제1 프로세스 스케줄러는 제2 프로세스 스케줄러에 의해 검출된 제2 프로세스 처리부의 처리 상황에 따라서, 그 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 제1 프로세스 처리부의 동작을 제어하도록 구성되고;
제2 프로세스 스케줄러는 제1 프로세스 스케줄러에 의해 검출된 제1 프로세스 처리부의 처리 상황에 따라서, 제1 프로세스 처리부에 의해 실행되는 프로세스와 연관된 프로세스를 실행하는 제2 프로세스 처리부의 동작을 제어하도록 구성된다.
예시적인 실시예 및 부기에 설명된 프로그램은 저장 디바이스에 저장되거나, 컴퓨터 판독 가능 기록 매체 상에 기록된다. 예를 들어, 기록 매체는 플렉시블 디스크, 광디스크, 광자기 디스크 및 반도체 메모리와 같은 휴대용 매체이다.
본 발명이 예시적인 실시예를 참조하여 설명되었지만, 본 발명은 전술한 예시적인 실시예에 한정되는 것은 아니다. 본 발명의 구성 및 상세는 본 발명의 범위 내에서 본 기술분야의 통상의 기술자에 의해 이해될 수 있는 다양한 방식으로 변경될 수 있다.
본 발명은 2015년 3월 23일자로 출원된 일본 특허 출원 제2015-059545로부터의 우선권 이익에 기초하며 이를 주장하고, 그 개시 내용은 전체가 본 명세서에 참고로 포함된다.
1, 51
메인 프로세서 노드
11, 511 메인 프로세서
111, 211, 611, 612 프로세서 코어
12, 512, 62 메인 프로세서 프로세스 스케줄러
121 우선도 제어 수단
122 스케줄링 폴리시
123 프로세스 스위치 수단
124 프로세스 컨텍스트
125 프로세스 구조체
1251 상태 정보
13, 53, 64 상태 통지 수단
14, 522, 63 코프로세서 프로세스 스케줄러
141 우선도 제어 수단
15 노드 간 통신 수단
2, 52 코프로세서 노드
21, 521 코프로세서
22 노드 간 통신 수단
3 통신 버스
4, 5, 6 병렬 컴퓨터
61 프로세서
7 병렬 처리 시스템
71 제1 프로세스 처리부
72 제1 프로세스 스케줄러
73 제2 프로세스 처리부
74 제2 프로세스 스케줄러
11, 511 메인 프로세서
111, 211, 611, 612 프로세서 코어
12, 512, 62 메인 프로세서 프로세스 스케줄러
121 우선도 제어 수단
122 스케줄링 폴리시
123 프로세스 스위치 수단
124 프로세스 컨텍스트
125 프로세스 구조체
1251 상태 정보
13, 53, 64 상태 통지 수단
14, 522, 63 코프로세서 프로세스 스케줄러
141 우선도 제어 수단
15 노드 간 통신 수단
2, 52 코프로세서 노드
21, 521 코프로세서
22 노드 간 통신 수단
3 통신 버스
4, 5, 6 병렬 컴퓨터
61 프로세서
7 병렬 처리 시스템
71 제1 프로세스 처리부
72 제1 프로세스 스케줄러
73 제2 프로세스 처리부
74 제2 프로세스 스케줄러
Claims (11)
- 복수의 처리부 상에서 연관된 프로세스들을 실행하는 병렬 처리 시스템으로서,
미리 결정된 프로세스를 실행하도록 구성된 제1 프로세스 처리부;
상기 제1 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제1 프로세스 스케줄러;
상기 제1 프로세스 처리부에 의해 실행되는 프로세스와 연관된 프로세스를 실행하도록 구성된 제2 프로세스 처리부; 및
상기 제2 프로세스 처리부에 의해 실행되는 프로세스의 처리 상황을 검출하고 관리하도록 구성된 제2 프로세스 스케줄러
를 포함하고,
상기 제1 프로세스 스케줄러 및 상기 제2 프로세스 스케줄러는 서로 통신 가능하도록 구성되고,
상기 제1 프로세스 스케줄러는 상기 제2 프로세스 스케줄러에 의해 검출된 상기 제2 프로세스 처리부의 처리 상황에 따라서, 상기 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 상기 제1 프로세스 처리부의 동작을 제어하도록 구성되고;
상기 제2 프로세스 스케줄러는 상기 제1 프로세스 스케줄러에 의해 검출된 상기 제1 프로세스 처리부의 처리 상황에 따라서, 상기 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 상기 제2 프로세스 처리부의 동작을 제어하도록 구성되는, 병렬 처리 시스템. - 제1항에 있어서,
상기 제1 프로세스 스케줄러는 상기 제1 프로세스 처리부에 의해 실행되는 프로세스를 스위칭할 때, 상기 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 상기 제2 프로세스 스케줄러에 송신하도록 구성되고;
상기 제2 프로세스 스케줄러는 수신되었던 상기 상태 통지 정보에 기초하여, 상기 상태 통지 정보에 의해 나타나는 상기 프로세스와 연관된 프로세스를 실행하는 상기 제2 프로세스 처리부의 동작을 제어하도록 구성되는, 병렬 처리 시스템. - 제1항 또는 제2항에 있어서,
상기 제1 프로세스 스케줄러는 상기 제1 프로세스 처리부에 의해 실행되는 프로세스의 프로세스 컨텍스트를 저장할 때, 상기 프로세스가 대기 상태로 천이한 것을 나타내는 상태 통지 정보를 상기 제2 프로세스 스케줄러에 송신하도록 구성되고;
상기 제2 프로세스 스케줄러는 수신되었던 상기 상태 통지 정보에 기초하여, 상기 제2 프로세스 처리부가 상기 대기 상태로 천이했던 상기 프로세스와 연관된 프로세스를 처리하게 하는 우선도를 낮추는 제어를 실행하도록 구성되는, 병렬 처리 시스템. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 제1 프로세스 스케줄러는 상기 제1 프로세스 처리부에 의해 실행되는 프로세스의 프로세스 컨텍스트를 복원할 때, 상기 프로세스가 디스패치된 것을 나타내는 상태 통지 정보를 상기 제2 프로세스 스케줄러에 송신하도록 구성되고;
상기 제2 프로세스 스케줄러는 수신되었던 상기 상태 통지 정보에 기초하여, 상기 제2 프로세스 처리부가 상기 디스패치된 프로세스와 연관된 프로세스를 처리하게 하는 우선도를 높이는 제어를 실행하도록 구성되는, 병렬 처리 시스템. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 제2 프로세스 스케줄러는 수신되었던 상태 통지 정보에 의해 나타나는 프로세스와 연관된 프로세스가 상기 제1 프로세스 처리부에 의한 처리를 위해 대기 상태에 있는 경우, 처리를 위해 상기 대기 상태에서 상기 프로세스를 실행하는 상기 제2 프로세스 처리부의 동작을 제어하도록 구성되는, 병렬 처리 시스템. - 제1항 내지 제5항 중 어느 한 항에 있어서,
운영 체제가 설치되는 제1 노드 - 상기 제1 노드는 상기 제1 프로세스 처리부, 상기 제1 프로세스 스케줄러 및 상기 제2 프로세스 스케줄러를 포함함 -; 및
운영 체제가 설치되지 않은 제2 노드 - 상기 제2 노드는 상기 제2 프로세스 처리부를 포함함 -
를 포함하고,
상기 제2 프로세스 처리부는 상기 제1 노드에 의해 포함된 상기 제2 프로세스 스케줄러의 제어하에서 프로세스를 실행하도록 구성되는, 병렬 처리 시스템. - 제6항에 있어서,
상기 제2 프로세스 스케줄러는 상기 제2 프로세스 처리부에 의해 실행되는 프로세스를 스위칭할 때, 상기 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 상기 제1 프로세스 스케줄러에 송신하도록 구성되고;
상기 제1 프로세스 스케줄러는 수신되었던 상기 상태 통지 정보에 기초하여, 상기 상태 통지 정보에 의해 나타나는 상기 프로세스와 연관된 프로세스를 실행하는 상기 제1 프로세스 처리부의 동작을 제어하도록 구성되는, 병렬 처리 시스템. - 복수의 처리부 상에서 연관된 프로세스들을 실행하기 위한 병렬 처리 방법으로서, 상기 복수의 처리부에 의해 실행되는 프로세스들은 복수의 스케줄러에 의해 관리되고,
상기 병렬 처리 방법은 상기 스케줄러들 각각에 의해 관리되는 프로세스의 처리 상황을 상기 스케줄러들 중 다른 스케줄러에 통신하는 단계를 포함하고,
상기 스케줄러들 각각은 수신된 처리 상황에 따라서, 상기 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성되는, 병렬 처리 방법. - 제8항에 있어서,
상기 스케줄러들 각각은 자신에 의해 관리되는 처리부에 의해 실행되는 프로세스를 스위칭할 때, 상기 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 상기 스케줄러들 중 다른 스케줄러에 송신하도록 구성되고;
상기 스케줄러들 각각은 수신되었던 상기 상태 통지 정보에 기초하여, 상기 상태 통지 정보에 의해 나타나는 상기 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성되는, 병렬 처리 방법. - 정보 처리 디바이스로 하여금 동작들을 수행하게 하기 위한 명령어들을 포함하는 컴퓨터 프로그램으로서, 상기 정보 처리 디바이스는 복수의 처리부 상에서 연관된 프로세스들을 실행하고, 상기 처리부들에 의해 실행된 프로세스들은 복수의 스케줄러에 의해 관리되고, 상기 동작들은,
상기 스케줄러들 각각에 의해 관리되는 프로세스의 처리 상황을 상기 스케줄러들 중 다른 스케줄러에 통신하는 동작; 및
상기 스케줄러들 각각이 수신된 처리 상황에 따라서, 상기 처리 상황에 의해 나타나는 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하게 하는 동작
을 포함하는 컴퓨터 프로그램. - 제10항에 있어서,
상기 스케줄러들 각각은 자신에 의해 관리되는 처리부에 의해 실행되는 프로세스를 스위칭할 때, 상기 프로세스가 스위칭된 것을 나타내는 상태 통지 정보를 상기 스케줄러들 중 다른 스케줄러에 송신하도록 구성되고;
상기 스케줄러들 각각은 수신되었던 상기 상태 통지 정보에 기초하여, 상기 상태 통지 정보에 의해 나타나는 상기 프로세스와 연관된 프로세스를 실행하는 처리부의 동작을 제어하도록 구성되는, 컴퓨터 프로그램.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2015-059545 | 2015-03-23 | ||
JP2015059545A JP6079805B2 (ja) | 2015-03-23 | 2015-03-23 | 並列計算装置 |
PCT/JP2015/006492 WO2016151654A1 (ja) | 2015-03-23 | 2015-12-28 | 並列処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170117594A true KR20170117594A (ko) | 2017-10-23 |
KR101818410B1 KR101818410B1 (ko) | 2018-02-21 |
Family
ID=56977117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177026593A KR101818410B1 (ko) | 2015-03-23 | 2015-12-28 | 병렬 처리 시스템 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10162675B2 (ko) |
EP (1) | EP3276489B1 (ko) |
JP (1) | JP6079805B2 (ko) |
KR (1) | KR101818410B1 (ko) |
CN (1) | CN107408061B (ko) |
WO (1) | WO2016151654A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11080095B2 (en) | 2017-06-04 | 2021-08-03 | Apple Inc. | Scheduling of work interval objects in an AMP architecture using a closed loop performance controller |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06301655A (ja) * | 1993-04-14 | 1994-10-28 | Hitachi Ltd | 分散処理システム |
JP3573546B2 (ja) | 1995-10-27 | 2004-10-06 | 富士通株式会社 | 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置 |
JPH1021094A (ja) * | 1996-07-08 | 1998-01-23 | Mitsubishi Electric Corp | リアルタイム制御方式 |
JP3730740B2 (ja) * | 1997-02-24 | 2006-01-05 | 株式会社日立製作所 | 並列ジョブ多重スケジューリング方法 |
US20020184290A1 (en) * | 2001-05-31 | 2002-12-05 | International Business Machines Corporation | Run queue optimization with hardware multithreading for affinity |
US7542473B2 (en) * | 2004-12-02 | 2009-06-02 | Nortel Networks Limited | High-speed scheduling apparatus for a switching node |
JP2008108075A (ja) * | 2006-10-25 | 2008-05-08 | Matsushita Electric Ind Co Ltd | タスク切替え制御方法及びコンピュータシステム |
CN100570566C (zh) | 2007-12-13 | 2009-12-16 | 中兴通讯股份有限公司 | 一种异构多核间协调调度的方法及异构多核*** |
US9367350B2 (en) * | 2008-10-03 | 2016-06-14 | Microsoft Technology Licensing, Llc | Meta-scheduler with meta-contexts |
JP5453825B2 (ja) * | 2009-02-05 | 2014-03-26 | 日本電気株式会社 | プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法 |
JP2013061700A (ja) * | 2011-09-12 | 2013-04-04 | Sony Corp | 情報処理装置、情報処理方法、記録媒体および情報処理システム |
US9122522B2 (en) * | 2011-12-14 | 2015-09-01 | Advanced Micro Devices, Inc. | Software mechanisms for managing task scheduling on an accelerated processing device (APD) |
US8893140B2 (en) | 2012-01-24 | 2014-11-18 | Life Coded, Llc | System and method for dynamically coordinating tasks, schedule planning, and workload management |
CN103761106A (zh) * | 2014-02-07 | 2014-04-30 | 张战 | 流程的控制方法及流程引擎 |
-
2015
- 2015-03-23 JP JP2015059545A patent/JP6079805B2/ja active Active
- 2015-12-28 KR KR1020177026593A patent/KR101818410B1/ko active IP Right Grant
- 2015-12-28 WO PCT/JP2015/006492 patent/WO2016151654A1/ja active Application Filing
- 2015-12-28 EP EP15886211.0A patent/EP3276489B1/en active Active
- 2015-12-28 CN CN201580078148.XA patent/CN107408061B/zh active Active
- 2015-12-28 US US15/554,153 patent/US10162675B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3276489A4 (en) | 2018-08-01 |
US10162675B2 (en) | 2018-12-25 |
EP3276489B1 (en) | 2020-11-18 |
CN107408061B (zh) | 2018-10-19 |
EP3276489A1 (en) | 2018-01-31 |
US20180074853A1 (en) | 2018-03-15 |
JP6079805B2 (ja) | 2017-02-15 |
CN107408061A (zh) | 2017-11-28 |
JP2016181016A (ja) | 2016-10-13 |
WO2016151654A1 (ja) | 2016-09-29 |
KR101818410B1 (ko) | 2018-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5405320B2 (ja) | 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
WO2017179537A1 (ja) | ソフトウェア更新制御装置、ソフトウェア更新制御システム、ソフトウェア更新制御方法、及び、ソフトウェア更新制御プログラムが格納された記録媒体 | |
CN104102548A (zh) | 任务资源调度处理方法和*** | |
WO2019056771A1 (zh) | 分布式存储***升级管理的方法、装置及分布式存储*** | |
CN105579963B (zh) | 任务处理装置、电子设备及方法 | |
JP2019169081A (ja) | 情報処理装置、情報処理方法、プログラム | |
US20140149994A1 (en) | Parallel computer and control method thereof | |
JPWO2011104823A1 (ja) | マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム | |
EP2693343B1 (en) | Parallel processing system and parallel processing system operation method | |
JP2019114173A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US9652299B2 (en) | Controlling the state of a process between a running and a stopped state by comparing identification information sent prior to execution | |
KR101818410B1 (ko) | 병렬 처리 시스템 | |
US9436505B2 (en) | Power management for host with devices assigned to virtual machines | |
JP2007206955A (ja) | 情報処理装置および方法、プログラム、並びに記録媒体 | |
KR101271211B1 (ko) | 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법 | |
JP6442947B2 (ja) | 情報処理装置、情報処理方法及びそのプログラム | |
KR20150104435A (ko) | 라우팅 처리기의 동작 모드 천이 방법 | |
JP4789269B2 (ja) | ベクトル処理装置及びベクトル処理方法 | |
US20180048518A1 (en) | Information processing apparatus, communication method and parallel computer | |
KR20130104958A (ko) | 다중 운영체제들을 실행하는 장치 및 방법 | |
US20080271024A1 (en) | Information processing apparatus, information processing system and information processing method for processing tasks in parallel | |
US20190064912A1 (en) | Information processing apparatus, method and non-transitory computer-readable storage medium | |
US20220261298A1 (en) | Computer system and program execution method | |
US11936514B2 (en) | Processing apparatus, processing system, processing method and processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |