KR20060132852A - 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치 - Google Patents
멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치 Download PDFInfo
- Publication number
- KR20060132852A KR20060132852A KR1020067012780A KR20067012780A KR20060132852A KR 20060132852 A KR20060132852 A KR 20060132852A KR 1020067012780 A KR1020067012780 A KR 1020067012780A KR 20067012780 A KR20067012780 A KR 20067012780A KR 20060132852 A KR20060132852 A KR 20060132852A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- task
- sub
- processing unit
- priority
- 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
-
- 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
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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/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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
멀티 프로세싱 시스템상에서 프로세서 태스크를 실행하기 위한 방법과 장치가 제공된다. 상기 멀티 프로세싱 시스템은 공유 메모리로 접근할 수 있는 다수의 서브 프로세싱 유닛과 메인 프로세싱 유닛을 포함한다. 각각의 서브 프로세싱 유닛은 공유 메모리로부터 분리된 칩상 로컬 메모리(on-chip local memory)를 포함한다. 상기 방법과 장치는 프로세서 태스크가 그 실행을 위하여 공유 메모리로부터 서브 프로세싱 유닛의 로컬 메모리로 복사되는 것을 제공하고, 공유 메모리로부터 프로세서 태스크의 실행을 차단하며; 및 적어도 하나의 프로세서 태스크를 하나의 서브 프로세싱 유닛으로부터 다른 서브 프로세싱 유닛으로 이동하는 것;을 의도한다.
멀티 프로세서 시스템, 메인 프로세싱 유닛, 서브 프로세싱 유닛, 프로세서 태스크, 공유 메모리, 로컬 메모리, 태스크 테이블, 태스크 큐, 서브 프로세싱 유닛 식별자, 프로세서 태스크 우선권 식별자
Description
본 발명은 멀티 프로세싱 시스템에서 프로세서 태스크를 처리하는 방법 및 장치에 관한 것으로서, 특히, 사실상 자체 통제를 기초로 멀티-프로세싱 시스템의 서브 프로세싱 유닛들 사이에서 프로세서 태스크를 예정하고 실행하는 방법 및 장치에 관한 것이다.
실시간, 멀티미디어 애플리케이션은 점점 더 중요해지고 있다. 이들 애플리케이션은 초당 수천 메가바이트의 데이터 처리와 같은 극히 빠른 처리 속도를 요구한다. 단일 프로세싱 유닛은 빠른 처리 속도가 가능하지만, 일반적으로 멀티 프로세서 구조의 처리 속도에 필적할 수 없다. 게다가, 멀티 프로세서 시스템에서 다수의 서브 프로세서는 원하는 처리 결과를 달성하기 위해 동시에(또는 적어도 일제히 협력하여) 작동할 수 있다.
멀티 프로세싱 기법을 사용할 수 있는 컴퓨터 및 전산 장치의 타입들은 광범위하다. 퍼스널 컴퓨터(PCs) 및 서버뿐만 아니라, 이들 전산 장치들은 휴대폰, 모빌 컴퓨터, 개인휴대정보단말기(PDAs), 셋톱 박스, 디지털 텔레비전 외 다수를 포함한다.
실시간, 멀티미디어 소프트웨어 애플리케이션은 처리 지시 및 데이터와 같은 처리 코드로 구성된다. 적어도 일부의 처리 지시 및/또는 처리 데이터의 수집은 프로세서 태스크로서 관련될 수 있다. 프로세서 태스크 내의 프로그램 보고서는 순차적으로 실행될 수 있는 반면에, 다른 프로세서 태스크는 멀티 프로세서 시스템의 다른 프로세서상에서 동시에 실행될 수 있다. 따라서, 소프트웨어 애플리케이션은 멀티 프로세싱 시스템에 의해 실행될 프로세서 태스크를 포함하도록 고려될 수 있다.
멀티 프로세싱 시스템에서 설계의 관심사는 시스템의 어느 서브 프로세싱 유닛이 어느 프로세서 태스크를 실행하는가를 처리하는 방법이다. 어떤 멀티 프로세싱 시스템에서, 프로세서 태스크는 어느 서브 프로세싱 유닛이 실행을 수행할 것인지를 구체화한다. 이러한 접근의 결점은 프로그래머가 서브 프로세싱 유닛 사이에서 프로세서 태스크의 배치를 최적화할 수 없다는 점이다. 예를 들면, 하나 이상의 프로세서 태스크는 동시에 같은 서브 프로세싱 유닛을 구체화할 수 있다. 이것은 프로세서 태스크의 일부가 상기 구체화된 서브 프로세싱 유닛이 이용가능하게 될 때까지 대기하고 있고, 그로 인하여 그 실행을 보류하도록 지시한다. 공교롭게도, 이것은 또한 프로세서 태스크의 실행에 관한 예측할 수 없는 지연 시간(latency)을 초래한다.
다른 시스템들은 관리 요소(a managing element)가 서브 프로세싱 유닛과 교류하고, 그 사이에서 프로세서 태스크를 예정함을 의도한다. 그러므로, 통신 프로토콜은 그러한 교류를 촉진하도록 배치되어야 한다.
공교롭게도 통신 프로토콜은 종종 관리 요소 및 서브 프로세싱 유닛 사이에서 메시지 지연을 초래한다. 게다가, 그러한 프로토콜은 일반적으로 느린 기억장치 대응 입출력 공간(a memory mapped I/O space)의 사용을 요구할 수 있다. 나아가, (그 자체가 시스템의 프로세서일 수 있는) 관리 요소는 변화를 위해 상당한 시간을 요구할 수 있는 다중 분할 도메인을 사용할 수 있다(예 : 700us). 이들 특성들은 또한 프로세서 태스크의 실행을 지연하고, 예측할 수 없는 지연 시간을 초래한다. 따라서, 멀티 프로세싱 시스템의 전체적인 프로세서 처리량 및 효율성은 희생되고, 시스템 이용자의 실시간 및/또는 멀티미디어 경험상에서 상당한 충격을 초래할 수 있다.
그러므로, 하드 프로세서 에러의 악영향을 감소시킨 효율적인 멀티 프로세싱을 이루기 위한 새로운 방법 및 장치에 대한 기술의 필요성이 요구된다.
본 발명의 하나 이상의 양상에 따라서, 멀티 프로세싱 시스템상에서 프로세서 태스크를 실행하는 방법이 고려된다. 상기 멀티 프로세싱 시스템은 공유 메모리에 접근할 수 있는 다수의 서브 프로세싱 유닛과 하나의 메인 프로세싱 유닛을 포함한다. 각각의 서브 프로세싱 유닛은 공유 메모리로부터 분리된 칩상 로컬 메모리(on-chip local memory)를 포함한다. 상기 방법은 프로세서 태스크가 그것을 실행하기 위해서 공유 메모리로부터 서브 프로세싱 유닛의 로컬 메모리로 복사되는 것을 제공하고, 공유 메모리로부터 프로세서 태스크의 실행을 차단하며; 및 적어도 하나의 프로세서 태스크는 하나의 서브 프로세싱 유닛에서 다른 서브 프로세싱 유닛으로 이동되는 것을 포함한다.
적어도 하나의 프로세서 태스크의 이동은 바람직하게 일정 조건을 기초로 한다. 상기 조건은 프로세서 태스크와 관련된 각각의 우선권 순위에 기초로 할 수 있다.
본 발명의 하나 이상의 실시예에서, 조건의 만족 및 이동 개시는 선점적 실행(preemptive action)을 기초로 하지 않는다. 바람직하게, 상기 방법은 서브 프로세싱 유닛이 우선권 순위를 기초로 한 실행 목적의 프로세서 태스크를 공유 메모리로부터 선택하는 것을 요구함을 더 포함한다. 또한, 상기 방법은 서브 프로세싱 유닛이 공유 메모리로부터 더 낮은 우선권을 갖는 프로세서 태스크보다 더 높은 우선권을 갖는 프로세서 태스크를 선택하는 것을 요구함을 포함할 수 있다.
바람직하게, 상기 방법은 첫 번째 서브 프로세싱 유닛에 의해 공유 메모리로부터 실행 목적의 제 1 우선권 순위를 갖는 첫 번째 프로세서 태스크를 선택하고; 두번째 서브 프로세싱 유닛에 의해 공유 메모리로부터 실행 목적의 제 2 우선권 순위를 갖는 두 번째 프로세서 태스크를 선택하며; 및 세 번째 프로세서 태스크의 우선권 순위가 실행될 준비가 된 다른 프로세서 태스크보다 더 높기 때문에 세 번째 프로세서 태스크가 선택될 때, 첫 번째 서브 프로세싱 유닛을 제 3 우선권 순위를 갖는 세 번째 프로세서 태스크에게 양보(yielding)하는 것을 더 포함한다.
또한, 상기 방법은 첫 번째 프로세서 태스크를 첫 번째 서브 프로세싱 유닛의 로컬 메모리로부터 공유 메모리로 재기입하는 것을 포함할 수 있다. 바람직하게, 상기 방법은 첫 번째 프로세서 태스크의 우선권 순위가 실행될 준비가 된 공유 메모리의 다른 프로세서 태스크보다 더 높기 때문에 첫 번째 프로세서 태스크가 선택될 때, 두 번째 서브 프로세싱 유닛을 첫 번째 프로세서 태스크에게 양보하고, 그것에 의하여 첫 번째 프로세서 태스크가 첫 번째 서브 프로세싱 유닛으로부터 두 번째 서브 프로세싱 유닛으로 비선점적으로 이동하는 것을 포함한다. 상기 방법은 또한 두 번째 프로세서 태스크를 두 번째 서브 프로세싱 유닛의 로컬 메모리로부터 공유 메모리로 재기입할 수 있다.
상기 방법은 또한 하나의 서브 프로세싱 유닛 상에서 작동하는 더 낮은 우선권을 갖는 프로세서 태스크가 우선적으로 더 높은 우선권을 가진 프로세서 태스크로 치환될 수 있음을 고려한다.
상기 방법은 또한 서브 프로세싱 유닛이 공유 메모리로부터 더 낮은 우선권을 갖는 프로세서 태스크보다 더 높은 우선권을 갖는 프로세서 태스크를 선택하는 것을 요구함을 포함할 수 있다.
바람직하게, 상기 방법은 다수의 서브 프로세싱 유닛에 의해 관련된 우선권 순위를 갖는 실행 목적의 다수의 프로세서 태스크를 공유 메모리로부터 선택하고; 주어진 우선권 순위를 갖는 공유 메모리의 n번째 프로세서 태스크가 실행할 준비가 되도록 유발시키며; 및 주어진 우선권 순위가 다수의 프로세서 태스크의 어떤 우선권 순위보다 높은지를 결정하는 것을 더 포함한다.
바람직하게, 적어도 하나의 서브 프로세싱 유닛은 그 결정을 수행할 수 있다. 상기 방법은 또한 주어진 우선권 순위보다 더 낮은 우선권 순위를 갖는 다수의 프로세서 태스크 중 하나를 n번째 프로세서 태스크와 우선적으로 치환하는 것을 포함한다.
하나 이상의 서브 프로세싱 유닛은 적어도 치환을 개시할 수 있고, 다수의 서브 프로세싱 유닛 중 하나가 더 낮은 우선권 순위를 갖는 프로세서 태스크의 실행을 양보하도록 유발시킬 수 있다. 상기 방법은 개시하는 서브 프로세싱 유닛은 더 낮은 우선권 순위를 갖는 프로세서 태스크의 치환을 개시하기 위해서 양보하는 서브 프로세싱 유닛에 대한 인터럽트을 일으키는 것을 제공함을 포함할 수 있다. 바람직하게, 상기 방법은 또한 양보하는 서브 프로세싱 유닛이 더 낮은 우선권을 갖는 프로세서 태스크를 그것의 로컬 메모리로부터 공유 메모리로 재기입하는 것을 제공함을 포함한다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 상기 방법은 바람직하게 서브 프로세싱 유닛이 주어진 우선권 순위를 갖는 공유 메모리의 n번째 프로세서 태스크가 다수의 프로세서 태스크가 갖는 어떤 우선권 순위보다 더 높은지를 결정할 수 있는 것을 제공함을 포함한다.
바람직하게, 서브 프로세싱 유닛은 n번째 프로세서 태스크가 다수의 프로세서 태스크보다 더 높은 우선권 순위를 갖는지를 결정하는데 공유 태스크 우선권 테이블(a shared task priority table)을 사용한다. 공유 태스크 우선권 테이블은 서브 프로세싱 유닛 식별자(sub-processing unit identifiers) 및 프로세서 태스크 우선권 식별자(processor task priority identifiers)에 대한 항목을 포함할 수 있고, 각각의 항목은 서브 프로세싱 유닛 식별자 및 관련된 서브 프로세싱 유닛 상에서 실행하는 주어진 프로세서 태스크의 우선권 순위를 나타내는 우선권 식별자 쌍(priority identifier pair)을 포함할 수 있다.
n번째 프로세서 태스크가 다수의 프로세서 태스크보다 더 높은 우선권 순위를 갖는지를 결정하려는 서브 프로세싱 유닛은 낮은 우선권 순위를 나타내는 항목 쌍을 찾기 위해 공유 태스크 우선권 테이블을 조사할 수 있다. 바람직하게, 더 낮은 우선권 순위는 공유 태스크 우선권 테이블의 가장 낮은 우선권 순위이다. 서브 프로세싱 유닛은 바람직하게 항목 쌍이 통용하도록 공유 태스크 우선권 테이블을 수정한다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 상기 방법은 프로세서 태스크는 그것들을 실행하기 위해 공유 메모리로부터 서브 프로세싱 유닛의 로컬 메모리로 복사되고, 공유 메모리로부터 프로세서 태스크의 실행을 차단하는 것을 제공하며; 서브 프로세싱 유닛은 프로세서 태스크의 우선권 순위를 기초로 한 실행 목적의 프로세서 태스크를 공유 메모리로부터 선택하는 것을 제공하고; 주어진 서브 프로세싱 유닛에 의해 제공된 인터럽트에 응하여 주어진 하나의 서브 프로세싱 유닛 상에서 실행하는 더 높은 우선권을 가진 프로세서 태스크를 더 낮은 우선권을 갖는 프로세서 태스크를 실행하는 다른 서브 프로세싱 유닛으로 이동하는 것을 포함한다.
상기 방법은 또한 다수의 서브 프로세싱 유닛에 의해 관련된 우선권 순위를 갖는 실행 목적의 다수의 프로세서 태스크를 공유 메모리로부터 선택하고; 주어진 서브 프로세싱 유닛에서 인터럽트를 받으며; 및 다수의 서브 프로세싱 유닛 상에서 실행하는 다수의 프로세서 태스크 중 어느 것이 주어진 서브 프로세싱 유닛 상에서 실행하는 프로세서 태스크의 우선권 순위보다 더 낮은, 가장 낮은 우선권 순위를 갖는지를 결정하는 것을 포함한다. 주어진 서브 프로세싱 유닛은 그 결정을 수행할 수 있다.
상기 방법은 바람직하게 주어진 프로세서 태스크가 가장 낮은 우선권 순위를 갖는 프로세서 태스크를 실행하는 서브 프로세싱 유닛으로 이동하고, 그 프로세서 태스크를 치환하는 것을 더 포함한다. 주어진 서브 프로세싱 유닛은 적어도 이동을 개시할 수 있고, 가장 낮은 우선권 순위를 갖는 프로세서 태스크를 실행하는 서브 프로세싱 유닛이 더 높은 우선권 순위를 갖는 주어진 프로세서 태스크에게 실행을 양보하도록 유발시킨다. 주어진 서브 프로세싱 유닛은 바람직하게 가장 낮은 우선권 순위를 갖는 프로세서 태스크의 치환을 개시하기 위해서 양보하는 서브 프로세싱 유닛에 대한 인터럽트를 일으킨다.
상기 양보하는 서브 프로세싱 유닛은 더 낮은 우선권을 갖는 프로세서 태스크를 그것의 로컬 메모리로부터 공유 메모리로 재기입할 수 있다. 또한, 양보하는 서브 프로세싱 유닛은 더 높은 우선권을 갖는 주어진 프로세서 태스크를 주어진 서브 프로세싱 유닛의 로컬 메모리로부터 실행을 위한 그 로컬 메모리로 복사할 수 있다.
주어진 서브 프로세싱 유닛은 바람직하게 어느 프로세서 태스크가 가장 낮은 우선권 순위를 갖는지를 결정하는데 공유 태스크 우선권 테이블을 사용한다. 상기 공유 태스크 우선권 테이블은 서브 프로세싱 유닛 식별자와 프로세서 태스크 우선권 식별자에 대한 항목을 포함할 수 있고; 및 각각의 항목은 서브 프로세싱 유닛 식별자와 관련된 서브 프로세싱 유닛 상에서 실행하는 주어진 프로세서 태스크의 우선권 순위를 나타내는 우선권 식별자 쌍을 포함할 수 있다. 주어진 서브 프로세싱 유닛은 가장 낮은 우선권 순위를 나타내는 항목 쌍을 찾기 위해 공유 태스크 우선권 테이블을 조사할 수 있다. 상기 서브 프로세싱 유닛은 바람직하게 항목 쌍이 통용하도록 공유 태스크 우선권 테이블을 수정할 수 있다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 멀티 프로세서 장치는 각각의 서브 프로세싱 유닛이 프로세서 태스크를 실행하는 칩상 로컬 메모리를 포함하는 다수의 프로세싱 유닛; 및 실행될 준비가 된 프로세서 태스크를 저장할 수 있는 공유 메모리를 포함한다. 상기 프로세서 태스크는 그것들을 실행하기 위해서 공유 메모리로부터 서브 프로세싱 유닛의 로컬 메모리로 복사되고, 상기 프로세서 태스크는 공유 메모리로부터 실행되지는 않으며, 및 적어도 하나의 프로세서 태스크는 하나의 서브 프로세싱 유닛으로부터 다른 서브 프로세싱 유닛으로 이동된다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 장치의 서브 프로세싱 유닛은 상기에서 기술된 바와 같이 방법 절차를 수행하도록 할 수 있다.
본 발명의 다른 양상, 특성 및 이점은 첨부한 도면과 관련하여 기재된 본 문서로부터 당업자에게 명백할 것이다.
설명하기 위한 목적으로, 도면에는 바람직하고, 이해가 되는 그림들이 나타나 있다. 그러나, 본 발명은 도면에서 보여준 정밀한 배치와 수단에 제한되는 것은 아니다.
도 1은 본 발명의 하나 이상의 양상에 따라서 멀티 프로세싱 시스템의 구조를 설명하는 그림이다.
도 2는 공유 메모리에서 프로세서 태스크의 저장을 설명하는 블록도이다.
도 3은 본 발명에 따라서 프로세서 요소(PE)의 바람직한 구조를 설명하는 그림이다.
도 4는 본 발명에 따라서 전형적인 서브 프로세싱 유닛(SPU)의 구조를 설명하는 그림이다.
도 5는 본 발명의 하나 이상의 양상에 따라서 사용될 수 있는 프로세서 태스크 테이블의 예를 설명한 것이다.
도 6은 도 5의 태스크 테이블에 의해 확립된 프로세서 태스크의 연결 목록에 대한 상태도이다.
도 7은 프로세서 태스크의 실행을 처리하기 위해 도 5의 태스크 테이블과 관련하여 사용될 수 있는 태스크 큐(task queue)의 예를 설명한 것이다.
도 8은 본 발명의 하나 이상의 양상에 따라서 멀티 프로세싱 시스템에 의해 수행될 수 있는 처리 단계를 설명하는 흐름도이다.
도 9는 본 발명에 따라서 멀티 프로세싱 시스템에 의해 수행될 수 있는 더 나아간 처리 단계를 설명하는 흐름도이다.
도 10은 본 발명에 따라서 멀티 프로세싱 시스템에 의해 수행될 수 있는 한층 더 나아간 처리 단계를 설명하는 흐름도이다.
도 11은 본 발명의 다양한 양상에 따라서 멀티 프로세싱 시스템에 의해 수행 될 수 있고, 공유 메모리에서 프로세서 태스크를 개시하기 위한 처리 단계를 설명하는 흐름도이다.
도 12는 본 발명의 하나 이상의 양상에 따라서 프로세스 태스크의 다른 상태를 설명하는 상태도이다.
도 13은 본 발명의 하나 이상의 양상에 따라서 프로세서 태스크가 어떻게 공유 메모리로부터 복사되고, 공유 메모리로 재기입될 수 있는지를 설명하는 블록도이다.
도 14는 도 13의 복사 및 재기입 기법과 관련된 처리 지연 시간(processing latency)을 설명하는 타이밍 도표이다.
도 15는 본 발명의 하나 이상의 더 나아간 양상에 따라서 프로세서 태스크가 어떻게 공유 메모리로부터 복사되고, 공유 메모리로 재기입될 수 있는지를 설명하는 블록도이다.
도 16은 도 15의 복사 및 재기입 기법과 관련된 처리 지연 시간(processing latency)을 설명하는 타이밍 도표이다.
도 17은 본 발명의 하나 이상의 한층 더 나아간 양상에 따라서 프로세서 태스크가 어떻게 공유 메모리로부터 복사되고, 공유 메모리로 재기입될 수 있는지를 설명하는 블록도이다.
도 18은 도 17의 복사 및 재기입 기법과 관련된 처리 지연 시간(processing latency)을 설명하는 타이밍 도표이다.
도 19는 본 발명의 하나 이상의 한층 더 나아간 양상에 따라서 프로세서 태 스크가 어떻게 공유 메모리로부터 복사되고, 공유 메모리로 재기입될 수 있는지를 설명하는 블록도이다.
도 20은 본 발명의 어떤 양상의 비선점형 프로세서 태스크 이동 특성을 설명하는 블록도이다.
도 21은 본 발명의 어떤 양상의 더 나아간 비선점형 프로세서 태스크 이동 특성을 설명하는 블록도이다.
도 22는 본 발명의 어떤 양상의 한층 더 나아간 비선점형 프로세서 태스크 이동 특성을 설명하는 블록도이다.
도 23은 본 발명의 어떤 양상의 선점형 멀티 태스킹 특성을 설명하는 블록도이다.
도 24는 본 발명의 어떤 양상의 더 나아간 선점형 멀티 태스킹 특성을 설명하는 블록도이다.
도 25는 본 발명의 어떤 양상의 선점형 프로세서 태스크 이동 특성을 설명하는 블록도이다.
도 26은 본 발명의 어떤 양상의 더 나아간 선점형 프로세서 태스크 이동 특성을 설명하는 블록도이다.
도 27은 본 발명의 하나 이상의 양상에 따라서 어떤 프로세서의 인터럽트(interrupt) 기법을 설명하는 부분 블록도 및 부분 흐름도이다.
도 28은 본 발명의 하나 이상의 양상에 따라서 더 나아간 프로세서의 인터럽트(interrupt) 기법을 설명하는 부분 블록도 및 부분 흐름도이다.
도 29는 본 발명의 하나 이상의 양상에 따라서 한층 더 나아간 프로세서의 인터럽트(interrupt) 기법을 설명하는 부분 블록도 및 부분 흐름도이다.
도 30은 본 발명의 하나 이상의 더 나아간 양상에 따라서 하나 이상의 서브 프로세싱 유닛을 포함하는 프로세싱 시스템의 구조를 설명하는 그림이다.
도 31은 본 발명의 하나 이상의 양상에 따라서 분포된 멀티 프로세싱 시스템의 시스템 도(system diagram)이다.
도 32는 본 발명의 멀티 프로세싱 유닛과 관련하여 사용될 수 있는 소프트웨어 셀 특성에 대한 블록도이다.
이하의 도면들에서, 동일한 참조 번호는 동일한 구성 요소를 지시한다. 도 1에는 본 발명의 하나 이상의 양상에 따라서 멀티 프로세싱 시스템(100)을 보여주고 있다. 멀티 프로세싱 시스템(100)은 모선(108) 상에서 DRAM과 같은 공유 메모리(106)와 짝지어진 (어떤 수라도 사용될 수 있는)다수의 프로세서 (102)를 포함한다. 공유 메모리(106)는 DRAM일 필요는 없다는 것을 유념할 필요가 있다; 게다가, 그것은 어떤 알려진 또는 이후 전개되는 기술을 사용하여 형성될 수 있다.
프로세서(102) 중 하나는 바람직하게 메인 프로세싱 유닛이며, 예를 들면 프로세싱 유닛(102A)을 들 수 있다. 다른 프로세싱 유닛(102)은 바람직하게 프로세싱 유닛 102B, 102C, 102C 등과 같은 서브 프로세싱 유닛(SPUs)이다. 서브 프로세싱 유닛(102)는 어떤 알려진 또는 이후 전개되는 컴퓨터 구조를 사용하여 실행될 수 있다. 모든 서브 프로세싱 유닛(102)은 같은 구조를 사용하여 실행될 필요는 없다. 게다가, 그들은 이종 또는 동정의 구성일 수 있다. 메인 프로세싱 유닛(102A)은 동일한 칩에서, 동일한 패키지에서, 동일한 회로판 상에서, 동일한 제품에서 등과 같이 서브 프로세싱 유닛(102B~D)과 관련하여 국소적으로 배치될 수 있다. 대안으로, 메인 프로세싱 유닛(102A)은 모선 상에서 짝지워질 수 있는 다른 제품들에서, (인터넷과 같은)통신 네트워크에서 등과 같은 서브 프로세싱 유닛(102B~D)으로부터 동떨어져 배치될 수 있다. 마찬가지로, 서브 프로세싱 유닛(102B~D)은 서로 국소적으로 또는 동떨어져 배치될 수 있다.
메인 프로세싱 유닛(102A)은 서브 프로세싱 유닛(102B~D)에 의해서 데이터 및 애플리케이션 처리를 계획하고 조정하기 위해 사용될 수 있다. 그 결과, 서브 프로세싱 유닛(102B~D)은 동시 및 독립적인 방법으로 이들 데이터 및 애플리케이션의 처리를 수행한다. 그러나, 본 발명의 몇 가지 양상에 따라서, 메인 프로세싱 유닛(102A)은 서브 프로세싱 유닛 사이에서 프로세서 태스크의 실행을 계획하는데 구심적 역할을 취하지는 않는다. 오히려, 그러한 계획은 바람직하게 SPUs 자체에 남겨둔다.
도 1에서 프로세서(102)에 대한 역할 및 기능의 할당은 유연하다. 예를 들면, 임의의 프로세서(102)는 메인 프로세서 유닛 또는 서브 프로세싱 유닛일 수 있다.
도 2와 관련하여, 메인 프로세싱 유닛(102A)은 바람직하게 SPUs(102B~F)에 대한 서비스 프로세서의 역할을 떠맡는다. 특히, 상기 SPUs 사이에서 프로세서 태스크의 계획 및 관리에 관한 한 더욱 그러하다. 본 발명의 몇 가지 양상에 따라서, 메인 프로세싱 유닛(102A)은 소프트웨어 애플리케이션 내에 포함되고, 공유 메모리(106)의 배치, SPUs의 배치, 및 공유 메모리(106) 내의 프로세서 태스크(110)의 최초 저장에 관여하는 프로세서 태스크를 검토할 수 있다. 공유 메모리(106)의 배치에 관하여, 메인 프로세싱 유닛(102A)은 바람직하게 얼마나 많은 메모리 공간이 주어진 수의 프로세서 태스크(110)에 할당되어야 하는지를 결정한다. 이 점에서, 메인 프로세싱 유닛(102A)은 몇몇의 프로세서 태스크(110)의 저장을 위해 공유 메모리(106)의 첫 번째 구역(106A)을 할당할 수 있고, 다른 프로세서 태스크(110)의 저장을 위해 공유 메모리(106)의 두 번째 구역(106B)을 할당할 수 있다. 메인 프로세싱 유닛(102A)는 또한 공유 메모리(106)의 각각의 구역(106A 및 106B) 내에 데이터 동기화에 관한 규칙을 설정할 수 있다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 공유 메모리(106)의 각각의 구역(106A 및 106B)은 오직 공유 메모리(106)의 주어진 지역 내에서 저장된 특정 프로세서 태스크(110)를 수행하기 위해 배치된 서브 프로세싱 유닛(102)과 같은 규정된 수의 서브 프로세싱 유닛(102)에 의해서만 접근될 수 있다. 예를 들면, 서브 프로세싱 유닛(102B~D)은 바람직하게 공유 메모리(106)의 첫 번째 구역(106A) 내에서 프로세서 태스크에 접근할 수 있는 유일한 SPUs이다. 마찬가지로, 서브 프로세싱 유닛(102E~F)은 바람직하게 공유 메모리(106)의 두 번째 구역(106B) 내에서 프로세서 태스크에 접근할 수 있는 유일한 SPUs이다. 공유 메모리(106)의 각각의 구역(106A 및 106B)을 차단하는 기법에 관한 더욱 상세한 것은 본 문서에서 참고문헌으로 도입된 미국 특허 전문공개 No. 6,526,491의 "광역 네트워크에 있어서 컴퓨 터 구조에 대한 메모리 차단 시스템 및 방법"에서 확인할 수 있다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 일단 프로세서 태스크(110)가 공유 메모리(106) 내에 배치되고, 서브 프로세싱 유닛(102)이 상기 태스크를 실행하기 위하여 배치되면, 메인 프로세싱 유닛(102A)은 바람직하게 상기 프로세서 태스크(110)의 실행에 대한 계획 및 관리에 관여하지 않는다. 대신에 그러한 책임들은 관여된 특정 서브 프로세싱 유닛(102)으로 넘어간다.
본 발명의 다양한 실시예의 프로세서 태스크 관리 특성에 관하여 더욱 상세한 것을 논하기 이전에, 먼저 멀티 프로세서 시스템을 실행하기 위한 바람직한 컴퓨터 구조에 대한 기술이 언급될 것이다. 이 점에서 있어서, 프로세서 요소(PE)(200)의 기본적인 프로세싱 모듈의 블록도인 도 3을 참고한다. 이러한 컴퓨터 구조에 따라서, 멀티 프로세싱 컴퓨터 시스템의 모든 서브 프로세서는 통상의 컴퓨터 모듈(또는 셀)로부터 구성된다. 이러한 통상의 컴퓨터 모듈은 일정한 구조를 가지며, 바람직하게 같은 명령어 집합(instruction set) 구조를 사용한다. 본 발명의 대안적 실시예로, 서브 프로세싱 유닛은 이종 구조일 수 있다. 멀티 프로세싱 컴퓨터 시스템은 하나 이상의 클라이언트, 서버, PCs, 모빌 컴퓨터, 게임 기계, PDAs, 셋톱 박스, 설비, 디지털 텔레비전 및 컴퓨터 프로세서를 사용하는 다른 장치들로 이루어질 수 있다.
기본적인 프로세싱 모듈은 프로세서 요소(PE)이다. 도 3에 나타난 것과 같이, PE(200)은 I/O 인터페이스(202), 프로세싱 유닛(PU)(204), 기억 장치 직접 접근 제어기(DMAC)(206), 및 다수의 서브 프로세싱 유닛(208) 즉, 서브 프로세싱 유 닛(209A), 서브 프로세싱 유닛(209B), 서브 프로세싱 유닛(209C), 서브 프로세싱 유닛(209D)을 포함한다. 로컬(또는 내부) PE 모선(212)은 PU(204), 서브 프로세싱 유닛(208), DMAC(206), 및 메모리 인터페이스(210) 사이에서 데이터 및 애플리케이션을 전송한다. 로컬 PE 모선(212)은 예를 들면, 종래의 구조를 가질 수 있고, 또는 패킷 교환 망(packet switch network)으로서 실행될 수 있다. 패킷 교환 망으로서의 실행은 더 많은 하드웨어가 요구되는 반면, 이용가능한 대역폭이 증가한다.
PE(200)은 실행하는 디지털 논리(implementing digital logic)에 대한 다양한 방법을 사용하여 구성될 수 있다. 그러나, PE(200)는 바람직하게 실리콘 기재상에서 CMOS(a complementary metal oxide semiconductor)를 사용하는 단일 직접 회로로서 구성된다.
기재로서의 대안적인 물질은 갈륨 아시나이드(gallium arsinide), 갈륨 알루미늄 아시나이드 및 다양한 도펀트(dopant)를 사용하는 다른 소위 Ⅲ-B 화합물을 포함한다. PE(200)는 또한 RSFQ(rapid single-flux-quantum) 논리 등의 초전도 재료를 사용하여 실행될 수 있었다.
PE(200)는 높은 대역폭 메모리 커넥션(216)을 통해 DRAM(dynamic random access memory)(214)과 긴밀히 연결된다. DRAM(214)는 PE(200)에 대한 메인(또는 공유) 메모리로서 작용할 수 있다.
비록 DRAM(214)는 바람직하게 다이나믹 랜덤 어세스 메모리지만, 상기 DRAM은 SRAM(static random access memory), MRAM(magnetic random access memory), 광학 메모리, 홀로그래픽 메모리 등 다른 수단으로 사용됨으로써 실행될 수 있었다. DMAC(206)와 메모리 인터페이스(210)는 DRAM(214)와 서브 프로세싱 유닛(208) 및 PE(200)의 PU(204) 사이에 데이터의 이동을 촉진시킨다. DMAC(206) 및/또는 메모리 인터페이스(210)는 서브 프로세싱 유닛(208) 및 PU(204)와 관련하여 통합적으로 또는 분리하여 배치될 수 있다는 것을 유념할 필요가 있다. 게다가, 도 3에 나타나 있는 바와 같이, 분리된 구조 대신에 DMAC(206)의 기능 및/또는 메모리 인터페이스(210)의 기능은 하나 이상의 (바람직하게는 모든) 서브 프로세싱 유닛(208) 및 PU(204)와 통합될 수 있다.
PU(204)는 독립형의 데이터 및 애플리케이션 처리를 할 수 있는 표준 프로세서일 수 있다. 서브 프로세싱 유닛(208)은 바람직하게 SIMD(single istruction, multiple data) 프로세서이다. 서브 프로세서 유닛(208)은 바람직하게 동시 및 독립적으로 방법으로 데이터 및 애플리케이션의 처리를 수행한다. DMAC(206)은 공유 DRAM(214)에 저장된 데이터 및 애플리케이션(예를 들면, 프로세서 태스크(110))에대한 PU(204) 및 서브 프로세싱 유닛(208)에 의한 접근을 조절한다. PU(204)는 메인 프로세싱 유닛의 역할을 착수하는 서브 프로세싱 유닛(208) 중 하나에 의해 실행될 수 있다.
이러한 모듈 방식의 구조에 따라서, 특정 컴퓨터 시스템에 의해 사용된 PEs(200)의 수는 그 시스템에 의해 요구되는 처리 능력을 기초로 한다. 예를 들면, 하나의 서버는 4개의 PEs(200)를 사용할 수 있고, 하나의 컴퓨터 단말장치(workstation)는 2개의 PEs(200)를 사용할 수 있으며, 하나의 PDA는 하나의 PE(200)을 사용할 수 있다. 특정 소프트웨어 셀을 처리하기 위해 할당된 PE(200)의 서브 프로세싱 유닛의 수는 셀 내의 프로그램 및 데이터의 복잡성 및 크기에 의존한다.
도 4는 서브 프로세싱 유닛(208)의 바람직한 구조 및 기능을 설명한다. 서브 프로세싱 유닛(208)은 로컬 메모리(250), 레지스터(252), 하나 이상의 부동 소수점 처리 장치(254) 및 하나 이상의 정수 처리기(256)를 포함한다. 그러나, 요구되는 처리 능력에 따라, 더 많은 또는 더 적은 수의 부동 소수점 처리 장치(254) 및 정수 처리기(256)가 사용될 수 있다. 부동 소수점 처리 장치(254)는 바람직하게 초당 320억 부동 소수점 연산 속도(32 GFLOPS)로 작동하며, 정수 처리기(256)는 바람직하게 초당 320억 연산 속도로 작동한다.
바람직한 실시예에서, 로컬 메모리(250)는 256 킬로바이트의 저장소를 포함하며, 레지스터(252)의 수용 능력은 128×128 바이트이다. 프로세서 태스크(110)는 공유 메모리(214)를 사용하여 실행되지 않는다는 것을 유념할 필요가 있다. 오히려, 태스크(110)는 주어진 서브 프로세싱 유닛(208)의 로컬 메모리(250)로 복사되고, 국소적으로 실행된다.
로컬 메모리(250)는 캐시 메모리일 수 있고, 아닐 수도 있다. 로컬 메모리(250)는 바람직하게 SRAM(static random access memory)으로 구조화될 수 있다.
PU(204)는 PU(240)에 의해 개시된 기억 장치 직접 접근(direct memory accesses)에 대한 캐시 일관성 유지를 요구할 수 있다. 그러나, 캐시 일관성 유지는 서브 프로세싱 유닛(208)에 의해 개시된 기억 장치 직접 접근 또는 외부장치로부터 및 외부장치로 접근하는 것이 요구되지 않는다.
서브 프로세싱 유닛(208)은 애플리케이션 및 데이터를 서브 프로세싱 유닛(208)으로부터 서브 프로세싱 유닛(208)으로 전송하기 위한 모선 인터페이스(I/F)(258)를 더 포함한다. 바람직한 실시예에서, 도 3에서 나타난 바와 같이, 모선 I/F(258)은 서브 프로세싱 유닛(208) 내에서 통합적으로 배치될 수 있고, 또는 외부적으로 배치될 수 있음을 나타내기 위해 띠줄(dash line)로써 보여준 DMAC(206)와 연결되어 있다. 한 쌍의 모선(268A, 268B)은 버스 I/F(258)와 로컬 메모리(250) 사이에서 DMAC를 상호 연결한다. 상기 모선들(268A, 268B)은 바람직하게 256 바이트의 넓이를 갖는다.
서브 프로세싱 유닛(208)은 내부 모선(260, 262 및 264)을 더 포함한다. 바람직한 실시예에서, 모선(260)은 256 바이트의 넓이를 가지며, 로컬 메모리(250)와 레지스터(252) 사이에 교류를 제공한다. 모선들(262 및 264)은 각각 레지스터(252)와 부동 소수점 처리 장치(254) 사이 및 레지스터(252)와 정수 처리기(256) 사이에서 교류를 제공한다. 바람직한 실시예에서, 레지스터(252)로부터 부동 소수점 또는 정수 처리기로 향하는 모선(264 및 262)의 넓이는 384 바이트이며, 부동 소수점 또는 정수 처리기(254, 256)로부터 레지스터(252)로 향하는 모선(264 및 262)의 넓이는 128 바이트이다. 부동 소수점 또는 정수 처리기(254, 256)로부터 레지스터(252)로 보다 레지스터(252)로부터 부동 소수점 또는 정수 처리기(254, 256)로 향하는 이들 모선의 더 큰 넓이는 처리가 이루어지는 동안 레지스터(252)로부터 더 큰 데이터 흐름을 수용한다. 최대 3글자가 각각의 계산에 있어서 요구된다. 그러나, 각각의 계산 결과는 통상적으로 오직 한 글자이다.
본 발명의 다양한 프로세서 태스크 관리 특성으로 다시 전환하며, 도 2와 관련하여, 서브 프로세싱 유닛(102)은 어느 프로세서 태스크(110)가 실행 목적으로 공유 메모리(106)로부터 SPUs(102)의 로컬 메모리 중 하나로 복사될 것인지를 결정하기 위해서 태스크 테이블을 이용하는 것이 바람직하다. 이 점에 있어서, 본 발명의 다양한 양상에 따라서 이용될 수 있는 태스크 테이블(280)에 대한 개념적인 설명이 나타난 도 5를 참고한다. 태스크 테이블(280)은 바람직하게 공유 메모리(106)에 저장된다(태스크 테이블(280)이 어떻게 개시되는지에 대한 상세한 것은 추후에 논의될 것이다). 태스크 테이블(280)은 바람직하게 다수의 태스크 테이블 항목 T1, T2, T3 등을 포함한다. 각각의 태스크 테이블 항목은 바람직하게 프로세서 태스크(110) 중의 하나와 관련된다(도 2). 예로 연결된 번지 지정 또는 태스크 테이블 항목을 프로세서 태스크(110)와 관련짓는 몇 가지 다른 수단에 의함을 들 수 있다.
바람직한 실시예에서, 각각의 태스크 테이블 항목은 적어도 하나의 상태 표시(STAT), 우선권 표시(PRI), 및 포인터 쌍(PREV, NEXT)을 포함할 수 있다. STAT는 바람직하게 주어진 태스크 테이블 항목과 관련된 프로세서 태스크가 하나 이상의 서브 프로세싱 유닛에 의해 실행될 준비(READY)가 되었는지(또는 실행 중(RUNNING)인지)에 관한 표시를 제공한다. PRI는 바람직하게는 관련된 프로세서 태스크(110)의 우선권 순위에 관한 표시를 제공한다. 소프트웨어 프로그래머에 의해 확립될 수 있거나, 또는 소프트웨어 애플리케이션의 실행을 통해 나중에 확립될 수 있는 프로세서 태스크(110)와 관련된 꽤 많은 우선권 순위가 있을 수 있다. 하여튼 프로세서 태스크(110)의 우선권 순위는 프로세서 태스크가 실행될 순서를 확립하기 위해 이 용될 수 있다. PREV 값은 바람직하게 연결된 태스크 테이블 항목의 순서 목록(또는 프로세서 태스크 목록)에서 이전 태스크 테이블 항목(또는 이전 프로세서 태스크(110))에 대한 포인터이다. NEXT 값은 바람직하게 연결된 태스크 테이블 항목의 순서 목록(또는 프로세서 태스크 목록)에서 다음 태스크 테이블 항목(또는 다음 프로세서 태스크)에 대한 포인터이다.
본 발명의 하나 이상의 양상에 따라서, 태스크 테이블(280)은 바람직하게 프로세서 태스크가 실행을 위해 공유 메모리(106)로부터 복사되는 순서를 결정하기 위해서 서브 프로세싱 유닛(102)에 의해 이용된다. 예를 들면, 멀티 프로세싱 시스템(100 또는 200) 상에서 소프트웨어 애플리케이션을 적절히 실행하기 위해서, 어떤 프로세서 태스크(110)는 특정한 순서로 또는 T1, T8, T6 및 T9과 같이 마침내 일반적인 순서와 관련하여 실행될 수 있다. 프로세서 태스크 순서의 이러한 실례를 반영하기 위하여, 태스크 테이블(280)은 바람직하게 태스크 테이블 항목의 연결 목록 나아가 프로세서 태스크를 생성하는 태스크 테이블 항목 각각의 PREV 및 NEXT 부분에 포인터를 포함한다. 상기 예의 개별성에 따라서, 태스크 테이블 항목 T1은 태스크 테이블 항목 T8을 가리키는 NEXT 값을 포함한다. 태스크 테이블 항목 T8은 태스크 테이블 항목 T1을 가리키는 포인트 PREV 값을 포함하고, 태스크 테이블 항목 T6을 가리키는 NEXT 값을 포함한다. 태스크 테이블 항목 T6은 태스크 테이블 항목 T8을 가리키는 PREV 값을 포함하고, 태스크 테이블 항목 T9를 가리키는 NEXT 값을 포함한다. 태스크 테이블 항목 T9는 태스크 테이블 항목 T6을 가리키는 PREV 값을 포함한다.
도 6에 관하여, 상기 예의 태스크 테이블 항목의 연결 목록은 태스크 테이블 항목 T1과 관련된 특정 프로세서 태스크로부터의 이동이 태스크 테이블 항목 T8과 관련된 다른 프로세서 태스크의 계획 및 실행을 초래하는 상태도로서 개념적으로 설명될 수 있다. 또 다른 예로서, 태스크 테이블 항목 T8과 관련된 프로세서 태스크로부터의 이동은 태스크 테이블 항목 T6과 관련된 프로세서 태스크의 계획 및 실행을 초래한다. 태스크 테이블 항목(및/또는 프로세서 태스크 자체)의 순환적 연관은 첫 번째, 또는 헤드(HEAD) 태스크 테이블 항목 T1이 태스크 테이블 항목 T9를 가리키는 PREV 값을 포함하고, 태스크 테이블 항목 T9가 태스크 테이블 항목 T1을 가리키는 NEXT 값을 포함하는 것을 확실하게 함으로써 얻을 수 있다.
실행이 이루어지는 동안, 공유 메모리(106)(바람직하게 주어진 구역 106A 및 106B 내)의 프로세서 태스크(110) 풀을 실행시키기 위해 할당된 각각의 서브 프로세싱 유닛(102)은 먼저 어느 프로세서 태스크(110)가 다음 실행을 위해 취해질 것인가를 결정하기 위해 태스크 테이블(280)에 접근한다. 연결 목록의 첫 번째(또는 헤드) 항목의 식별을 돕기 위하여, 서브 프로세싱 유닛(102)은 또한 바람직하게 도 7에서 개념적으로 설명되는 태스크 큐(282)에 접근한다.
태스크 큐(282)는 바람직하게 관련된 프로세서 태스크(110) 각각의 우선권 순위에 대한 항목을 포함한다. 각각의 항목은 바람직하게 적어도 하나의 헤드(HEAD) 포인터와 테일(TAIL) 포인터를 포함한다.
도 6과 더 관련하여, 설명된 상태도의 예시적 연결 목록은 우선권 순위 1을 갖는 프로세서 태스크(110)에 대한 전형이다. 게다가, 항목 T1, T8, T6, 및 T9에 대한 각각의 태스크 테이블 항목(도 5)은 1의 PRI 값을 포함한다.
우선권 순위 1과 관련된 태스크 큐 항목의 헤드 포인터와 테일 포인터는 태스크 테이블 항목 T1 및 태스크 테이블 항목 T9에 대한 포인터들을 각각 포함한다. 태스크 큐(282)의 다른 항목들은 다른 연결 목록에 대한 다른 우선권 순위의 헤드 및 테일 포인터와 관련된다. 이 점에서, 본 발명의 다양한 실시예는 각각의 연결 목록이 동일한 또는 유사한 우선권 순위의 항목을 포함하는, 태스크 테이블 항목을 갖는 다수의 연결 목록(및, 나아가 프로세서 태스크)을 포함할 수 있음이 고려된다. 각각의 서브 프로세싱 유닛(102)은 바람직하게 어느 프로세서 태스크(110)가 실행을 위해 공유 메모리(106)로부터 복사될 것인지를 결정하기 위해서 태스크 테이블(280) 및 태스크 큐(282)를 이용한다. 만약 각각의 연결된 목록이 적절하게 생성되고 유지된다면, 상기 프로세서 태스크(110)는 전체적인 소프트웨어 애플리케이션의 실행에 있어서 바람직한 결과를 이루기 위하여 적절한 방법으로 실행될 수 있다.
본 발명의 다양한 양상에 따라서, 서브 프로세싱 유닛(102)은 소프트웨어 애플리케이션의 실행이 이루어지는 동안에 태스크 테이블(280)과 태스크 큐(282)를 유지하고 수정한다. 이 점에서, 본 발명에 대한 하나 이상의 바람직한 특성을 이루기 위해 적절한 처리 흐름을 설명하는 흐름도인 도 8~10을 참고한다. 액션(action) 300에서, 특정 서브 프로세싱 유닛(102)은 공유 메모리(106)로부터 그것의 로컬 메모리로 프로세서 태스크의 복사를 개시하기 위해 호출된다. 액션 302에서, 서브 프로세싱 유닛(102)은 태스크 큐(282)를 그것의 로컬 메모리로 고정시키고 복사한다. 그 후, 태스크 큐(282)는 가장 높은 우선권을 갖는 준비된 태스크(액션 304)를 찾게 된다. 도 7에서 설명된 예를 사용하면, 태스크 큐(282)는 우선권 순위 1과 같은 가장 높은 우선권을 갖는 프로세서 태스크와 관련된 태스크 테이블 항목 T1을 가리키는 헤드 포인터를 포함한다. 태스크 테이블 항목 T1과 관련된 프로세서 태스크가 실행의 목적이 된 이후에는, 서브 프로세싱 유닛은 바람직하게 프로세서 태스크에 대한 참조를 제거하기 위해 태스크 큐(282)를 수정한다(액션 306). 바람직한 실시예에 따라서, 이것은 태스크 테이블 항목 T1에 대한 헤드 포인터를 다른 태스크 테이블 항목으로 수정함을 수반한다. 이는 상기 다른 태스크 테이블 항목이 실행을 위해 취급될 새로운 프로세서 태스크를 나타내는 새로운 첫 번째(또는 헤드) 태스크 테이블이 될 것이기 때문이다. 특히, 태스크 테이블 항목 T1의 NEXT 포인터는 우선권 순위 1의 새로운 헤드 포인터로서 사용될 수 있다. 게다가, 도 6에서 설명한 바와 같이, 태스크 테이블 항목 T1과 관련된 프로세서 태스크가 실행된다면, 그것은 더 이상 준비 상태가 아니며, 상태도로부터 제거되어야 한다. 이것은 상태도의 헤드 항목으로서 태스크 테이블 항목 T8을 남겨두어야 한다. 태스크 테이블 항목 T1은 더 이상 준비(READY) 상태도의 일부가 아니기 때문에, 태스크 테이블 항목 T8의 PREV 포인터는 태스크 테이블 항목 T9를 가리키는 것으로 수정될 수 있다. 따라서, 액션 380에서, 태스크 테이블은 수정될 수 있도록 SPU(102)의 로컬 메모리로 표지되고 복사된다. 마찬가지로, 태스크 테이블 항목 T9의 NEXT 포인터는 태스크 테이블 항목 T8을 가리키는 것으로 수정될 수 있다.
본 발명의 바람직한 양상에 따라서, SPU(102)는 바람직하게 태스크 테이블 항목 T1의 STAT 값을 준비(READY)에서 실행(RUNNING)으로 수정한다(액션 310, 도 9). 액션 312에서는, 바람직하게 SPU(102)가 다음 태스크를 가져오도록 호출되었을 때(액션 300), 이전 태스크를 실행하고 있었는지에 대한 결정이 이루어진다. 이것은 SPU(102) 상에서 실행하는 이전 태스크가 다른 태스크에 양보할 때 일어날 수 있다. 상기에 관한 예로서, 만약 이전 태스크가 다음 프로세서 태스크(110)에 양보했거나, 다음 프로세서 태스크(110)에 의해 침해되지 않았다면, 액션 312의 결정에 대한 결과는 부정(No)이다. 따라서, 과정의 순서는 SPU(102)가 수정된 태스크 큐(282)와 수정된 태스크 테이블(280)을 공유 메모리(106)로 재기입하는 액션 318로 바람직하게 진행한다. 이 점에서, 태스크 테이블(280) 및 태스크 큐(282)는 갱신되고, 바람직한 동기화 기법에 따라서, 다른 서브 프로세싱 유닛(102)에 의해 복사되고 수정될 수 있도록 해제한다.
이전 프로세서 태스크(110)가 실행하려는 다음 프로세서 태스크에 양보한 경우처럼, 만일 액션 312의 결정에 대한 결과는 긍정(Yes)이라면, 과정의 순서는 액션 314로 바람직하게 진행한다. 거기에서 SPU는 양보하는 프로세서 태스크와 관련된 태스크 테이블 항목의 STAT 값을 실행(RUNNING)에서 준비(READY)로 수정한다. 나아가, 그 다음 SPU는 양보하는 프로세서 태스크를 적절한 연결 목록으로 다시 재도입하기 위하여, (양보하는 프로세서 태스크와 관련된 태스크 테이블 항목을 포함하여) 다양한 태스크 테이블 항목들에 대한 PREV 및 NEXT 포인터를 수정할 수 있다. 바람직하게, 이것은 관련된 태스크 테이블 항목의 PRI 값에서 반영되었기 때문에, 양보하는 프로세서 태스크(110)의 우선권 순위를 참고함으로써 달성될 수 있 다. 액션 316에서, 양보하는 프로세서 태스크는 나중에 채택될 수 있도록 공유 메모리(106)로 재기입될 수 있다. 그 후, 과정의 순서는 태스크 큐(282)와 태스크 테이블(280)이 공유 메모리(106)로 재기입되는 액션 318로 진행한다.
액션 320(도 10)에서, 다음 프로세서 태스크(110)(예 : 태스크 테이블 항목 T8과 관련된 프로세서 태스크)는 서브 프로세싱 유닛에 의해서 공유 메모리(106)로부터 그것의 로컬 메모리로 복사된다. 액션 322에서, 서브 프로세싱 유닛(120)은 바람직하게 그것의 레지스터를 재생 및/또는 갱신한다. 마침내, 액션 324에서, 새로운 프로세서 태스크(110)는 서브 프로세싱 유닛(102)에 의해 실행된다.
상기 액션의 순서는 단지 예로서 나타내어진 것임을 유념할 필요가 있으며, 이들 액션의 순서는 본 발명의 사상 및 범위로부터 출발하지 않고도 수정될 수 있음은 당업자에게 자명할 것이다. 예를 들면, 본 명세서에서 추후 논의될 것처럼, 프로세서 태스크가 공유 메모리(106)로부터 복사되고, 공유 메모리로 재기입되는 순서 및 태스크 테이블(280)과 태스크 큐(282)가 이용되는 순서는 바람직한 결과를 이루기 위해서 수정될 수 있다.
상기에서 논의된 바와 같이, 메인 프로세싱 유닛(102A)은 시스템상에서 초기화가 이루어지는 동안 바람직하게 이용될 수 있다. 이는 상기 시스템을 프로세서 태스크(110)의 실행 및 관리가 서브 프로세싱 유닛(102)에 의해서 처리될 수 있는 상태로 놓기 위함이다. 또한, 서브 프로세싱 유닛(102)은 우선 첫째로 태스크 테이블(280)과 태스크 큐(282)를 생성하기 위해서 초기화 루틴(initialization routine)을 수행한다. 이들 초기화 과정들은 도 11의 흐름도에서 설명된다.
액션 350에서, 메인 프로세싱 유닛(102)과 같은 서비스 프로세서는 소프트웨어 애플리케이션이 시스템상에서 실행되도록 검토하고, 프로세서 태스크(110)를 실행하기 위해 많은 서브 프로세싱 유닛(102)들을 배치한다. 상기 과정의 순서는 서비스 프로세서가 소프트웨어 애플리케이션을 검토하고, 프로세서 태스크(110)를 수용하는 한 부분 이상의 공유 메모리(106)를 배치하는 액션 352로 바람직하게 진행한다. 액션 354에서, 프로세서 태스크(110)는 액션 352에서 수행되었던 임의의 메모리 배치에 따라서 공유 메모리(106)로 선적된다. 이 단계의 초기화 과정에서, 서비스 프로세서는 바람직하게 서브 프로세싱 유닛(102) 사이에서 프로세서 태스크의 유지 및/또는 배치에 더 이상 관여되지 않는다.
과정의 순서는 서브 프로세싱 유닛(102)이 우선 첫째로 어느 SPU가 태스크 테이블(280) 및 태스크 큐(282)를 준비할 것인지를 결정하기 위해 서로 초기화하는 액션 356으로 바람직하게 진행한다. 액션 358에서, 태스크 테이블(280) 및 태스크 큐(282)를 생성하도록 요구된 서브 프로세싱 유닛(102)은 그러한 정보를 준비하고, 공유 메모리(106)에서 상기 정보를 저장한다. 예로서, 태스크 테이블(280) 및 태스크 큐(282)의 초기화는 바람직하게 개시 태스크(initial task)를 실행할 각각의 SPU 커넬(kernel)을 갖춤으로써 수행된다. 하기에서 재현되는 프로그램 init.c는 각각의 SPU에 의해서 수행되는 개시 태스크의 바람직한 예이다.
#include <spurs.h>
#include "task_instance.h"
int
main()
{
spurs_beggin_init();
if (spurs_get_spu_id() == 0) {
spurs_create_task(melchior);
spurs_create_task(balthasar);
spurs_create_task(caspar);
spurs_start_task(melchior);
spurs_start_task(balthasar);
spurs_start_task(caspar);
}
spurs_end_init();
return 0;
}
이 점에서, 'melchior', 'balthasar' 및 'caspar'는 단지 전형적인 스타트업 태스크인 개시 태스크의 이름이다. 모든 SPU 커넬은 이러한 개시 태스크, init.c를 실행하지만, 오직 하나의 SPU - ID0을 갖는 SPU - 만이 코드행(if (spurs_get_spu_id() == 0))에 의해 규정된 바와 같은 이들 태스크를 실행한다. 다른 ID를 가진 것과 같이, 모든 다른 SPUs는 spurs_end_init()에서 기다린다. 따라서, 각각의 SPU 커넬은 개시 태스크를 실행하고, 이러한 개시 태스크를 끝마친 후 SPU 커넬은 바로 본 명세서에서 기술된 바와 같이 다음 태스크를 찾기 시작한다.
상기에서 논의된 바와 같이, 서비스 프로세서로서 행동하는 메인 프로세서 유닛(102)은 하나 이상의 프로세서 태스크를 하나의 그룹 내에 있는 것으로 지명할 수 있다. 이것은 바람직하게 초기화 단계 동안 수행된다. 예를 들면, 둘 이상의 프로세서 태스크는 서로 긴밀하게 교류되어야 하므로, 그들이 하나의 태스크 그룹을 이루어 함께 모이게 된다면 더 효율적으로 실행될 것이다. 암호 프로그램은 그들이 하나 이상의 태스크 그룹으로 형성되었다면, 더 효율적으로 실행되고 긴밀하게 교류되는 프로세서 태스크를 포함할 수 있는 애플리케이션의 한 예이다.
본 발명의 프로세서 태스크 관리 특성은 메인 프로세싱 유닛(102A)이 특정 서브 프로세싱 유닛(102) 또는 서브 프로세싱 유닛(102)의 그룹에 대한 장치 드라이버의 부하를 낮추는 것(off-load)을 돕기 위해서 이용될 수 있다. 예로서, 기가바이트 이서넷 핸들러(gigabit Ethernet handler)와 같은 네트워크 인터페이스는 CPU 파워의 80%까지 이용할 수 있다. 만약 네트워크 인터페이스가 메인 프로세싱 유닛(102A)에 의해서 단독으로 실행된다면, 그 후 메인 프로세싱 유닛(102A)은 다른 서비스 지향적인 프로세싱 태스크를 실행하는 것이 가능하지 않을지도 모른다. 따라서, 메인 프로세싱 유닛(102A)이 하나 이상의 서브 프로세싱 유닛(102)에 대한 네트워크 인터페이스 프로그램의 부하를 낮추도록 하는 것이 경제적일 수 있다. 메인 프로세싱 유닛(102A)은 네트워크 인터페이스의 프로세싱 태스크를 공유 메모리(106)로 배치하고, 상기 프로세싱 태스크를 실행할 하나 이상의 서브 프로세싱 유닛(102)을 배치함으로써 이러한 결과를 획득할 수 있다. 이에 응하여, SPUs는 그러한 프로세서 태스크의 실행을 관리하고 계획하기에 적절한 태스크 테이블(280) 및 태스크 큐(282)를 형성할 수 있다. 그러므로, 메인 프로세싱 유닛(102A)은 유리하게도 다른 태스크를 실행하는데 더 많은 CPU 파워를 쏟을 수 있다. 메인 프로세싱 유닛(102A)은 또한 디지털 텔레비전 장치 드라이버와 같은 다른 장치 드라이버의 부하를 덜 수 있다. SPUs의 부하를 낮출 좋은 후보인 다른 장치 드라이버는 엄중한 통신규약 스택(protocol stacks)을 가진 것이다. 예를 들면, HDD 레코더를 목적으로 하는 것과 같은 실시간 고속 접근 장치에 대한 드라이버는 부하를 유리하게 덜게 될 수 있다. 부하를 덜 수 있는 태스크의 다른 예들은 가상 사설망 및 IP(예로, VoIP) 애플리케이션 상에서의 멀티미디어에 사용되는 망 패킷 암호/기술(network packet encryption/description)을 포함한다.
프로세서 태스크의 지위에 대한 상태도의 한 예인 도 12를 참고한다. 태스크 상태는 5가지 카테고리로 분류될 수 있다: RUNNING 상태, READY 상태, BLOCKED 상태, DORMANT 상태, 및 NON-EXISTENT 상태. 프로세서 태스크는 현재 실행하고 있을 때 RUNNING 상태에 있다. 어떤 상황 하에서, 프로세서 태스크는 인터럽트가 있는 동안과 같이 심지어 비태스크 콘텍스트(non-task context)에서 RUNNING 상태를 유지할 수도 있다. 프로세서 태스크는 태스크가 실행될 준비가 될 때 READY 상태에 있다. 그러나, 더 높은 우선 순위를 갖는 하나 이상의 프로세서 태스크가 이미 실행되고 있고 서브 프로세싱 유닛이 그 태스크를 채택할 수 없기 때문에 실행될 수 없다. READY 프로세서 태스크의 우선권 순위가 공유 메모리(106)의 READY 태스크 풀 사이에서 충분히 높다면, 서브 프로세싱 유닛은 상기 프로세서 태스크를 채택할 수 있고, 그것을 실행할 수 있다. 따라서, 프로세서 태스크의 상태는 그 태스크가 전송(dispatch)되었을 때, READY에서 RUNNING으로 전환할 수 있다. 역으로, RUNNING 태스크의 태스크 상태는 만약 상기 태스크가 선점(preempted)되었거나 또는 그 실행이 있는 동안에 침해(usurped)되었다면, READY 상태로 전환할 수 있다. 프로세서 태스크의 선점(preemption)에 대한 예는 다른 프로세서 태스크에 양보하는 하나의 프로세서 태스크와 관련하여 상기에서 논의되었다.
BLOCKED 상태의 카테고리는 WAITING 상태, SUSPENDED 상태, 및 WAITING-SUSPENDED 상태를 포함할 수 있다. 태스크의 실행이 계속되기 전에 어떤 조건이 부합되어야 함을 명시하는 서비스 콜(service call)의 호출 때문에 상기 태스크의 실행이 차단될 때, 프로세서 태스크는 WAITING 상태에 있다. 따라서, RUNNING 태스크의 상태는 서비스 콜의 호출이 있자마자 WAITING 상태로 전환할 수 있다. WAITING 상태에서 프로세서 태스크는 특정된 조건이 부합될 때에는 READY 상태로 방출될 수 있다. 그것에 의해 프로세싱 태스크가 그 후 서브 프로세싱 유닛(102)에 의해 채택되는 것을 가능케 한다. 프로세서 태스크는 (스스로 초래할 수 있는) 상기 태스크가 강제적으로 중단될 때, RUNNING 상태로부터 SUSPENDED 상태로 들어갈 수 있다. 마찬가지로, READY 상태에서 프로세서 태스크는 강요된 실행을 통해 SUSPENDED 상 태로 들어갈 수 있다. SUSPENDED 프로세서 태스크는 상기 프로세서 태스크의 강제적인 중단이 해제될 때, 재개될 수 있고 READY 상태로 들어갈 수 있다. 프로세서 태스크는 상기 태스크가 일정 조건이 만족되도록 기다리고, 강제적으로 중지되었을 때, WAITING-SUSPENDED 상태에 있다. 따라서, WAITING-SUSPENDED 프로세서 태스크는 프로세서 태스크의 강제적인 중지가 해제되었을 때, 상기 프로세서 태스크가 조건이 만족되기를 기다리는 WAITING 상태로 들어갈 수 있다.
프로세서 태스크는 태스크가 실행되지 않았거나 이미 그 실행을 마쳤을 때에는 DORMANT 상태에 있다. DORMANT 프로세서 태스크는 적절한 상황 하에서 READY 상태로 들어갈 수 있다. NON-EXISTENT 상태는 예를 들면, 그것이 아직 생성되지 않았거나 이미 삭제되었기 때문에 태스크가 시스템에 존재하지 않는 소위 가상 상태(virtual state)이다.
만약 READY 상태로 전환된 태스크가 RUNNING 상태에 있는 태스크보다 더 높은 우선권을 갖는다면, 상기 더 낮은 우선권의 태스크는 바람직하게 READY 상태로 전환되고, 더 높은 우선권의 태스크는 바람직하게 전송(dispatch)되고, RUNNING 상태로 전환된다. 이런 상황에서, 더 낮은 우선권의 태스크는 더 높은 우선권의 태스크에 의해 선점되었다.
비선점형, 우선권에 기초한 태스크 예정(task scheduling)은 프로세서 태스크에 할당된 우선권에 기초하여 수행된다. 만약 동일한 우선권을 가진 다수의 프로세서 태스크가 있다면, 예정은 선도착 선처리, 즉 선착순으로 수행된다. 이러한 태스크 예정 규칙은 태스크 우선권에 기초한 태스크들 사이에서 우선권을 이용하여 명확해질 수 있다. 만약 실행 가능한 태스크가 있다면, 배치된 서브 프로세싱 유닛(102)과 많아야 동일한 수의 높은 우선권 태스크는 RUNNING 상태에 있을 것이다. 잉여의 실행 가능한 태스크는 READY 상태에 있을 것이다. 다른 우선권을 갖는 태스크 사이에서, 가장 높은 우선권을 갖는 태스크는 더 높은 서열(precedence)을 갖는다. 동일한 우선권을 갖는 태스크 중에서, 가장 먼저 실행 가능한(실행중이거나 또는 준비된) 상태로 들어간 프로세서 태스크는 더 높은 서열을 갖는다. 그러나, 동일한 우선권을 갖는 태스크 사이에서의 서열은 어떤 서비스 콜의 호출로 바뀔 수도 있다. 프로세서 태스크가 다른 프로세서 태스크 이상의 서열을 받았을 때, 즉시 전송(dispatch)이 일어나고, 그 태스크는 RUNNING 상태로 전환되는 것이 바람직하다.
본 발명의 어떤 양상에 따라서 어떤 선점 특정을 설명한 도 13~14를 참고한다. 상기에서 논의된 바와 같이, RUNNING 상태의 프로세서 태스크(예 : 태스크 A)는 선점되거나, READY 상태에 있는 다른 프로세서 태스크(태스크 B)에게 양보할 수 있다. 도 13 및 14에서 설명한 바와 같이, 태스크 A는 양보점(the point of the yield)까지 서브 프로세싱 유닛(102) 상에서 실행되고 있다. 그 점(point)에서, SPU의 커넬은 태스크 A를 공유 메모리(106)로 다시 복사하기 위해 작동한다(태스크 A의 저장). 그 후, 태스크 B는 공유 메모리(106)로부터 SPU의 로컬 메모리로 복사된다(태스크 B의 재생). 그때, SPU는 태스크 B를 실행한다. 이러한 기법은 로컬 메모리 이용량 및 높은 대역폭과 관련하여 상대적으로 고성능을 사용하지만, 반면 양보점으로부터 최적화되지 않은 태스크 B의 실행까지의 태스크 실행 지연 시간(task execution latency)이 있다.
도 15~16과 관련하여, 대안적인 접근은 본 발명의 더 나아간 양상에 따라서 설명된다. 이러한 시나리오에서, 태스크 B는 태스크 A를 로컬 메모리로부터 공유 메모리(106)로 복사하기 전에 공유 메모리(106)로부터 서브 프로세싱 유닛(102)의 로컬 메모리로 복사될 수 있다. 이 점에 있어서, 서브 프로세싱 유닛(102)은 공유 메모리(106)로부터 태스크 B를 식별하고 회수하기 위해 조치를 취하는 동안, 동시에 태스크 A를 실행할 수 있다. 이것은 공유 메모리(106)로부터 서브 프로세싱 유닛(102A)의 로컬 메모리로 태스크 테이블(280)과 태스크 큐(282)를 복사하는 것과 다음 READY 태스크(예 : 태스크 B)를 식별하기 위해서 상기 태스크 테이블과 태스크 큐를 사용하는 것을 수반한다. 양보점(the yield point)에서, 본 명세서에 의해 논의된 바와 같이 태스크 테이블(280)과 태스크 큐(282)의 수정을 수반할 수 있는 서브 프로세싱 유닛(102A)의 커넬은 태스크 A를 로컬 메모리로부터 공유 메모리(106)로 복사한다. 그 후, 서브 프로세싱 유닛(102)은 태스크 B의 실행을 착수할 수 있다. 이러한 기법은 도 13~14에서 설명된 기법과 비교하여 볼 때, 양보 및 태스크 B의 실행 사이의 지연 시간(latency)을 상당히 감소시킨다. 도 17 및 18과 관련하여, 양보와 태스크 B의 실행 사이의 지연 시간은 본 발명의 하나 이상의 더 나아간 양상에 따라서 더욱 감소될 수 있다. 특히, 서브 프로세싱 유닛(102)은 도 15 및 16과 관련하여 본 명세서에서 논의된 바와 같이, 양보점까지 상당히 유사한 방법으로 작동될 수 있다. 그러나, 양보(the yield) 이후에, 서브 프로세싱 유닛(102)은 바람직하게 태스크 B의 실행을 개시한다. 거의 동시에, 서브 프로세싱 유닛(102)의 커넬은 바람직하게 태스크 A를 서브 프로세싱 유닛(102)의 로컬 메모 리로부터 공유 메모리(106)로 복사하기 위해 작동된다. 태스크 B가 양보 직후 바로 실행되었기 때문에, 지연 시간은 도 13~16에서 설명된 접근법과 비교하여 볼 때, 상당히 감소된다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 서브 프로세싱 유닛(102)은 로컬 메모리에서 실행할 다수의 프로세서 태스크를 유지할 수 있다. 이것은 도 19에서 설명된다. 로컬 메모리는 다수의 프로세서 태스크의 실행을 관리하기 위해서 다수의 페이지(page)와 페이지 테이블(page table)을 포함한다. 이러한 접근법의 이점은 비록 로컬 메모리 내에 상당히 더 많은 공간이 프로세스 태스크 실행에 의해서 독점될 것이라는 결점이 있지만, 지연 시간은 더욱 감소될 수 있다.
본 발명의 하나 이상의 양상에 따라서, 프로세서 태스크 이동을 설명하는 도 20~22를 참고한다.이들 도면은 프로세서 태스크, 예를 들어 태스크 B가 어떻게 하나의 서브 프로세싱 유닛 SPU1에서 다른 서브 프로세싱 유닛 SPU2로 이동될 수 있는지를 설명한다. 상기 이동은 각각의 프로세서 태스크와 관련된 개별적인 우선권 순위와 같은 어떤 조건을 기초로 할 수 있다. 본 발명의 몇 가지 양상에 따라서, 하나의 서브 프로세싱 유닛으로부터 다른 서브 프로세싱 유닛으로의 프로세서 태스크의 이동은 선점적이지 않을 수 있다. 다시 말해, 프로세서 태스크의 이동은 우선권 조건 및 시기의 결과로써 자연스럽게 흐를 수 있다. 그러나, 이동을 유발시키는 어떤 결정을 기초로 하지는 않는다.
이러한 비선점형 이동은 하기의 예로써 설명될 수 있다. 실행될 준비가 된 프로세서 태스크에 대한 우선권 순위에 영향을 끼치는 태스크 테이블을 이용하는 공유 메모리(106)로부터 프로세서 태스크 B가 선택되었다고 가정하자. 태스크 B는 서브 프로세싱 유닛 SPU1 상에서 실행하고 있다. 마찬가지로, 프로세서 태스크 C가 태스크 테이블에 따라서 공유 메모리(106)로부터 선택되었고, 서브 프로세싱 유닛 SPU2 상에서 실행하고 있다고 가정하자. 프로세서 태스크 B 및 프로세서 태스크 C가 선택되었던 그 시기에, 더 높은 우선권 순위를 갖는 프로세서 태스크 A는 실행될 준비가 되지 않았고, 그러므로 실행하기 위해 선택되지 않았다. 그러나, 프로세서 태스크 B 및 프로세서 태스크 C가 실행하는 동안에, 프로세서 태스크 A는 실행할 준비가 됨을 가정한다.
도 21과 관련하여, 프로세서 태스크 B는 서브 프로세싱 유닛 SPU1을 양보할 수 있다. 프로세서 태스크 B에 의한 이러한 양보 행위는 양보가 소프트웨어 애플리케이션의 전반적인 실행에 이익이 될 것이라는 결정을 내린 프로그래머 때문에 일어날 수 있다. 어떤 경우라도, 서브 프로세싱 유닛 SPU1은 프로세서 태스크 B를 공유 메모리(106)로 재기입하고, 태스크 테이블을 갱신함으로써 양보에 반응한다. 또한, 서브 프로세싱 유닛 SPU1은 공유 메모리(106)에 있는 다수의 프로세서 태스크 중 어느 것이 복사되고, 실행될 것인지를 결정하기 위해 태스크 테이블에 접근한다. 이러한 예에서, 프로세서 태스크 A는 태스크 테이블에 따르면 가장 높은 우선권을 가지므로, 서브 프로세싱 유닛 SPU1은 공유 메모리(106)로부터 그것의 로컬 메모리로 실행할 프로세서 태스크 A를 복사한다. 이 점에서, 서브 프로세싱 유닛 SPU1은 프로세서 태스크 A를 실행하고, 서브 프로세싱 유닛 SPU2는 프로세서 태스크 C를 계속해서 실행한다.
더 나아가 도 22와 관련하여, 프로세서 태스크 C는 서브 프로세싱 유닛 SPU2를 다른 프로세서 태스크에게 양보할 수 있다. 또한, 양보는 프로그램 지시 및/또는 프로세서 태스크 C의 조건을 통해 야기될 수 있다. 어떤 경우라도, 서브 프로세싱 유닛 SPU2는 프로세서 태스크 C를 공유 메모리(106)로 재기입하고, 따라서 태스크 테이블을 갱신한다. 서브 프로세싱 유닛 SPU2는 또한 실행될 준비가 된 프로세서 태스크 중에서 어느 것이 복사될 것인지를 결정하기 위해서 태스크 테이블로 접근한다. 이러한 예에서, 프로세서 태스크 B는 실행될 준비가 되고, 실행될 준비가 된 다수의 프로세서 태스크 중에서 가장 높은 우선권을 가진다. 따라서, 서브 프로세싱 유닛 SPU2는 공유 메모리(106)로부터 그것의 로컬 메모리로 실행할 프로세서 태스크 B를 복사한다.
도 20에서 설명된 처리 조건과 도 22에서 설명된 처리 조건의 비교는 프로세서 태스크 B가 서브 프로세싱 유닛 SPU1으로부터 서브 프로세싱 유닛 SPU2로 이동했음을 나타낸다.
본 발명의 선점형 멀티 태스킹 양상을 설명하는 도 23~24를 참고한다. 본 발명의 이들 양상은 서브 프로세싱 유닛 SPU2와 같은 하나의 서브 프로세싱 유닛 상에서 실행하는 더 낮은 우선권의 프로세서 태스크는 프로세서 태스크 A와 같은 더 높은 우선권을 갖는 프로세서 태스크로 우선적으로(선점적으로) 치환될 수 있음을 제공한다. 더욱 특히, 프로세서 태스크 B는 프로세서 태스크 C가 서브 프로세싱 유닛 SPU2 상에서 실행할 수 있는 동안에, 프로세서 태스크 B는 서브 프로세싱 유닛 SPU1 상에서 실행할 수 있다(도 23). 그 후, 더 높은 우선권 태스크인 태스크 A는 실행할 준비가 될 수 있다. 이것은 시스템의 다른 서브 프로세싱 유닛에 의한 어떤 행위 때문에 일어날 수 있다.
논의의 목적으로, 서브 프로세싱 유닛 SPU1은 예를 들어, 프로세서 태스크 B의 실행 결과로써, 프로세서 태스크 A를 RUNNING 상태로 전환했다고 가정한다. 결과로써, 서브 프로세싱 유닛 SPU1은 바람직하게 프로세서 태스크 A의 우선권 순위가 다른 서브 프로세싱 유닛 상에서 실행하는 프로세서 태스크의 어떤 우선권 순위보다 더 높은지에 관해서 바람직하게 결정한다. 이러한 간소화한 사건에서, 서브 프로세싱 유닛 SPU1은 프로세서 태스크 A가 프로세서 태스크 C보다 더 높은 우선권 순위를 갖는지에 관해서 결정한다. 만약 그렇다면, 서브 프로세싱 유닛 SPU1은 적어도 프로세서 태스크 C에 대한 프로세서 태스크 A로의 치환을 개시한다. 다시 말해, 서브 프로세싱 유닛 SPU1은 바람직하게 프로세서 태스크 C가 서브 프로세싱 유닛 SPU2를 프로세서 태스크 A에게 양보하도록 유발시킨다. 이 점에 있어서, 서브 프로세싱 유닛 SPU1의 커넬은 서브 프로세싱 유닛 SPU2의 커넬에 대한 인터럽트(interrupt)을 일으킬 수 있다. 상기 인터럽트에 응하여, 서브 프로세싱 유닛 SPU2는 프로세서 태스크 C를 공유 메모리(106)로 재기입하고, 태스크 테이블을 갱신할 수 있다(도 24). 서브 프로세싱 유닛 SPU2는 또한 실행하려는 프로세서 태스크 A를 공유 메모리로부터 그것의 로컬 메모리로 복사할 수 있다.
본 발명의 어떤 직접 이동(direct migration)을 설명하는 도 25~26을 참고한다. 이들 양상은 하나의 서브 프로세싱 유닛 상에서 실행하는 더 높은 우선권을 가진 프로세서 태스크가 더 낮은 우선권을 가진 프로세서 태스크를 실행하는 다른 서 브 프로세싱 유닛으로 이동될 수 있음을 제공한다. 이러한 이동은 더 높은 우선권을 가진 프로세서 태스크를 실행하는 서브 프로세싱 유닛에 의해 제공된 직접적인 인터럽트(interrupt)에 반응하게 될 수 있다. 도 25와 관련하여, 서브 프로세싱 유닛 SPU1은 어떤 다른 태스크를 실행해야 함을 지시하는 인터럽트를 받을 수 있다. 인터럽트는 또한 서브 프로세싱 유닛 SPU1이 시스템에서 다른 어떤 서브 프로세싱 유닛이 더 낮은 우선권을 갖는 프로세싱 태스크를 실행하고 있는지에 관하여 결정하도록 유발시킬 수 있다. 만약 그렇다면, 그러한 서브 프로세싱 유닛은 더 높은 우선권을 갖는 프로세싱 태스크를 선호하여 그 프로세서 태스크의 실행을 양보할 수 있다. 더욱 특히, 만약 서브 프로세싱 유닛 SPU1이 서브 프로세싱 유닛 SPU2가 프로세서 태스크 A보다 더 낮은 우선권을 갖는 프로세서 태스크 B와 같은 프로세서 태스크를 실행하도록 결정한다면, 그 후 서브 프로세싱 유닛 SPU1의 커넬은 바람직하게 서브 프로세싱 유닛 SPU2의 커넬에 대한 인터럽트를 일으킨다. 상기 인터럽트에 반응하여, 서브 프로세싱 유닛 SPU2는 바람직하게 프로세서 태스크 B를 그것의 로컬 메모리로부터 공유 메모리(106)로 재기입하고, 태스크 테이블을 갱신한다. 또한, 서브 프로세싱 유닛 SPU2는 바람직하게 실행하려는 프로세서 태스크 A를 서브 프로세싱 유닛 SPU1의 로컬 메모리로부터 그것의 로컬 메모리로 복사한다.
도 27은 어떻게 프로세싱 유닛("PU")이 본 발명의 한 양상에 따라서 인터럽트을 처리할 수 있는지를 설명한다. 첫 번째 단계에서, PU는 인터럽트를 받는다. 그 후, PU는 어느 서브 프로세싱 유닛 - 그룹 SPU0, SPU1, SPU2로부터 - 이 가장 낮은 우선권을 갖는지를 결정한다. 그때, PU는 가장 낮은 우선권을 갖는 SPU로 인 터럽트를 보낸다. 도 27의 경우에, SPU2는 가장 낮은 우선권을 갖으므로, 상기 PU는 SPU2로 인터럽트를 보낼 것이다.
본 발명의 하나 이상의 더 나아간 양상에 따라서, 하나의 서브 프로세싱 유닛으로부터 다른 서브 프로세싱 유닛으로의 인터럽트는 수많은 방법으로 처리될 수 있다. 본 발명의 하나의 실시예에서, 어떻게 시스템에서 하나의 서브 프로세싱 유닛이 다른 서브 프로세싱 유닛에게 인터럽트를 처리하도록 지정할 수 있는지를 설명하는 도 28을 참고한다. 지정된 서브 프로세싱 유닛은 상기 모든 태스크 이동 인터럽트를 수용하고, 그 자체로 처리하거나 또는 인터럽트를 다른 서브 프로세싱 유닛으로 전달할 지에 관하여 결정한다. 예를 들면, 만약 인터럽트가 지정된 서브 프로세싱 유닛에 대해 예정된다면, 그때 인터럽트는 그 서브 프로세싱 유닛 자체로 처리할 수 있다. 대안적으로, 만약 인터럽트가 지정된 서브 프로세싱 유닛에 대해 예정되지 않는다면, 그때 지정된 서브 프로세싱 유닛은 인터럽트를 가장 낮은 우선권을 갖는 프로세서 태스크를 실행하고 있는 그룹의 서브 프로세싱 유닛에게로 전송될 수 있다.
도 29는 분포된 인터럽트 처리 계획(interrupt handling scheme)이 사용될 수 있는 대안적인 접근방식을 설명한다. 이 기법에 따라서, 각각의 인터럽트는 각각의 서브 프로세싱 유닛에 할당된다. 예를 들면, 인터럽트 A는 서브 프로세싱 유닛 SPU0에 할당될 수 있다. 인터럽트 B, C는 서브 프로세싱 유닛 SPU1에 할당될 수 있고, 인터럽트 D, E, F는 서브 프로세싱 유닛 SPU2에 할당될 수 있다.
도 23~26에 관한 상기의 논의는 서브 프로세싱 유닛이 시스템의 다른 서브 프로세싱 유닛 상에서 실행하는 프로세서 태스크의 우선권 순위를 결정할 수 있음을 수반한다. 본 발명의 하나의 실시예에 따라서, 서브 프로세싱 유닛은 실행하는 프로세서 태스크의 우선권 순위를 결정하는데 공유 태스크 우선권 테이블(shared task priority table)을 이용할 수 있다. 공유 태스크 우선권 테이블은 공유 메모리에 배치될 수 있고, 서브 프로세싱 유닛 식별자(sub-processing unit identifiers) 및 프로세서 태스크 우선권 식별자(processor task priority identifiers)에 대한 다수의 항목을 포함할 수 있다. 예를 들면, 서브 프로세싱 유닛 식별자는 서브 프로세싱 유닛에 대한 유일한 숫자 및/또는 문자·숫자 겸용 코드일 수 있다. 프로세서 태스크 우선권 식별자는 바람직하게 실행되고 있는 특정 프로세서 태스크의 어떤 우선권 순위를 나타낸다. 공유 태스크 우선권 테이블의 각각의 항목은 서브 프로세싱 유닛 식별자 및 관련된 서브 프로세싱 유닛 상에서 실행하는 주어진 프로세서 태스크의 우선권 순위를 나타내는 우선권 식별자를 하나의 쌍으로 포함한다. 따라서, 실행하는 프로세서 태스크의 우선권 순위를 결정하려는 서브 프로세싱 유닛은 더 낮은 우선권의 프로세서 태스크를 실행하는 서브 프로세싱 유닛을 찾기 위해 공유 태스크 우선권 테이블에 접근할 수 있다. 바람직하게, 가장 낮은 우선권 프로세서 태스크를 실행하는 서브 프로세싱 유닛은 더 높은 우선권 순위를 갖는 프로세서 태스크에 양보를 위해 식별된다.
본 발명의 다른 실시예는 서브 프로세싱 유닛이 어느 서브 프로세싱 유닛이 가장 낮은 우선권 프로세서 태스크를 실행하는지를 나타내는 공유 변수(shared variable)를 이용하는 것을 제공할 수 있다. 공유 변수의 이용은 바람직하게 우선 권 순위에 대한 정확한 지시가 보증되도록 원자적 갱신 처리(atomic update processes)로써 이루어질 수 있다. 대안적인 접근방안은 연속적으로 하나의 서브 프로세싱 유닛으로부터 다른 서브 프로세싱 유닛으로 전송되는 차례로 나열된 메시지를 이용할 수 있다. 상기 메시지는 우선권 순위 및 더 낮은 우선권 순위의 프로세서 태스크에 대한 서브 프로세싱 유닛으로 갱신될 수 있다.
도 30과 관련하여, 본 발명의 대안적인 실시예는 프로세서 태스크(110)를 실행하기 위해 배치된 서브 프로세싱 유닛(208)의 수는 향상된 처리 능력을 제공하기 위해 다수의 프로세서 요소(precessor element)(200)와 함께 연결됨으로써 증가될 수 있음을 기대한다. 예를 들면, 둘 이상의 프로세서 요소(200A, 200B)는 하나 이상의 칩 패키지 내에 있거나 또는 한 세트의 멀티 프로세서 유닛을 이루는 등 함께 묶이거나 연결될 수 있다. 이러한 구조는 광대역 엔진(BE, broadband engine)으로서 언급될 수 있다. 광대역 엔진(290)은 모선(212) 상에서 데이터 통신을 위해 상호 연결된 두 개의 프로세서 요소(200A, 200B)를 포함한다. 부가적인 데이터 모선(216)은 바람직하게 프로세서 요소(200A, 200B) 및 공유 DRAM(214) 사이에서의 통신을 가능하게 하도록 제공된다. 하나 이상의 입출력(I/O) 인터페이스(202A, 202B)와 (도면에서는 나타나지 않은) 외부 모선은 광대역 엔진(290) 및 임의의 외부 요소 사이에서 통신을 제공한다. 광대역 엔진(290)의 각각의 프로세서 요소(200A 및 200B)는 도 3과 관련하여 상기에서 논의된 서브 프로세싱 요소(208)에 의해 수행된 데이터 및 애플리케이션의 병행 및 독립적인 처리와 유사한, 동시 및 독립적인 방법으로 데이터 및 애플리케이션 처리를 수행한다. 본 발명의 다양한 양 상에 따라서, 상기 광대역 엔진(BE)은 단일 프로세서 요소 또는 멀티 프로세서 요소를 포함할 수 있다. 덧붙여서, 광대역 엔진(BE)은 다수의 광대역 엔진의 프로세서 요소들로부터 이루어질 수 있다.
도 31을 참고한다. 여기서, 독립형의 멀티 프로세싱 요소(208) 또는 광대역 엔진(290)(다수 셋트의 멀티 프로세싱 요소)은 멀티 프로세싱 시스템(500)을 형성하기 위해 다수의 제품 사이에서 분포될 수 있다. 상기 시스템(500)의 (컴퓨터 및/또는 전산 장치로써 실행되는) 요소들 또는 기관들은 바람직하게 네트워크(504) 상에서 통신을 한다. 네트워크(504)는 랜(LAN, local area network), 인터넷과 같은 글로벌 네트워크, 또는 임의의 다른 컴퓨터 네트워크일 수 있다.
네트워크(504)에 연결된 기관들은 예를 들어, 클라이언트 컴퓨터(506), 서버 컴퓨터(508), PDAs(510), 디지털 텔레비전(512), 및 다른 유무선 컴퓨터 및 전산 장치들을 포함한다. 예를 들면, 클라이언트(506A)는 하나 이상의 PEs(200) 또는 다른 적절한 멀티 프로세싱 시스템으로부터 구성된 랩탑(laptop) 컴퓨터일 수 있다. 클라이언트(506B)는 하나 이상의 PEs(200) 또는 다른 적절한 멀티 프로세싱 시스템으로부터 구성된 데스크 탑 컴퓨터(또는 셋톱 박스)일 수 있다. 나아가, 서버(506A)는 또한 바람직하게 하나 이상의 PEs(200)으로부터 구성된 (데이터베이스 성능을 사용하는) 행정적 실체일 수 있다. 그 외에도 다수가 있을 수 있다.
따라서, 멀티 프로세싱 시스템(500)의 처리 능력은 하나의 제품과 같이 국소적으로 분포되거나 다수 제품과 같이 떨어져서 분포된 다수의 프로세서 요소(200)에 의존할 수 있다. 이 점에 있어서, 본 발명의 하나 이상의 양상에 따라서 전반적 인 컴퓨터 네트워크에 대한 블록도인 도 32를 참고한다. 또, PEs(200) 및/또는 (다수의 PEs로 이루어진) 광대역 엔진(280)은 컴퓨터 시스템(500)에 있어서 전반적인 분포 구조를 실행하도록 이용될 수 있다.
시스템(500)의 서버(508)는 클라이언트(506)보다 더 많은 데이터 및 애플리케이션 처리를 수행할 수 있기 때문에, 서버(508)는 클라이언트(506)보다 더 많은 전산 모듈(예 : PEs(200))을 포함한다. 반면에, 이러한 예로 PDAs(510)는 가장 적은 양의 처리를 수행한다. 따라서, PDAs(510)는 단일 PE(200)과 같은 가장 적은 수의 PEs(200)를 포함한다. DTVs(512)는 실제로 클라이언트(506)와 서버(508)의 전산 모듈 수 내에 해당하는 처리 수준을 수행한다. 따라서, DTVs(512)는 클라이언트(506)와 서버(508)의 전산 모듈 수 내에 해당하는 다수의 프로세서 요소를 포함한다.
분포된 멀티 프로세싱 시스템(500)에 관한 더 상세한 설명은 지금부터 제공될 것이다. 시스템(500)에 대한 동일한 구조는 적응성, 처리 속도, 및 처리 효율성을 촉진시킨다. 시스템(500)의 각 기관은 프로세서 요소(200)와 같은 하나 이상의 동일한 전산 모듈을 사용하여 처리를 수행하고, 데이터 및 애플리케이션의 처리는 네트워크의 기관 내에서 공유되기 때문에, 데이터 및/또는 애플리케이션 처리를 수행하는 특정 컴퓨터 또는 전산 장치는 그리 중요하지 않다. 시스템(500)에 의해 처리된 데이터 및 애플리케이션을 포함하는 소프트웨어 셀을 특유의 형태로 식별함으로써, 상기 처리 결과는 이러한 처리가 어디서 발생했는지와는 상관없이 처리를 요구하는 컴퓨터 또는 전산 장치에 전송될 수 있다.
이러한 처리를 수행하는 모듈은 통상의 구조를 가지고, 통산의 명령어 집합 구조를 사용하기 때문에, 프로세서 사이에서 성능을 달성하기 위한 소프트웨어의 부가된 층(layer)에 대한 컴퓨터상의 부담은 피하게 된다. 이러한 구조 및 프로그래밍 모델은 실시간, 멀티미디어 애플리케이션과 같은 것을 실행하는데 필요한 처리 속도를 촉진시킨다.
시스템(500)에 의해 촉진된 처리속도 및 효율성을 더 이용하기 위해서는, 이 시스템에 의해 처리된 데이터 및 애플리케이션이 특유의 형태로 식별되고, 동일하게 포맷된 소프트웨어 셀(502) 내로 묶일 수 있다. 각각의 소프트웨어 셀(502)은 애플리케이션 및 데이터 모두를 포함하거나 포함할 수 있다. 또한, 각각의 소프트웨어 셀은 대역적으로 네트워크(504)와 시스템(500)을 통하여 셀을 식별하는 ID를 포함한다. 이러한 소프트웨어 셀에 대한 동일 구조 및 네트워크를 통한 소프트웨어 셀의 특유한 형태의 식별은 네트워크(504)의 어떤 컴퓨터 또는 전산 장치상의 애플리케이션 및 데이터의 처리를 촉진시킨다. 예를 들면, 클라이언트(506)는 소프트웨어 셀을 공식화할 수 있지만, 클라이언트(506)의 제한된 처리 성능 때문에, 소프트웨어 셀을 처리하려는 서버로 전송한다. 그러므로, 소프트웨어 셀(502)은 네트워크(504) 상에 처리 자원의 가능성에 기초하여 처리할 네트워크(504)를 통해 이동할 수 있다.
상기 시스템(500)의 프로세서 및 소프트웨어 셀의 동일한 구조는 또한 오늘날 동일한 네트워크의 많은 문제를 피할 수 있다. 예를 들면, 자바 가상 머신(Java virtual machine)과 같은 가상 머신 등의 어떤 명령어 집합을 사용하는 임의의 ISA 상의 애플리케이션 처리를 가능하도록 하는 비효율적인 프로그래밍 모듈은 피하게 된다. 그러므로, 상기 시스템(500)은 광대역 처리를 종래의 네트워크보다 훨씬 더 효율적이고, 효과적으로 이행할 수 있다.
변호사 도켓 번호 SCEI 1.0-186을 갖는, 멀티 프로세서 시스템에서 태스크 이동 방법 및 장치(METHODS AND APPARATUS FOR TASK MANAGEMENT IN A MULTI-PROCESSOR SYSTEM)의 표제를 달고, 본 출원과 같이 동일한 날짜에 미국 특허 상표청(the United States Patent and Trademark Office)에 제출된, 공동 위탁된 미국 특허 공개 일련 번호 No. 10-783,246은 본 명세서에 의해 그대로 참고하여 구체화된다.
비록 본 발명은 특정한 실시예와 관련하여 기술되었지만, 이들 실시예들은 단지 본 발명의 원리 및 응용을 설명하는 것임은 자명하다. 그러므로, 다양한 수정이 실례가 되는 실시예에 적용될 수 있고, 부가된 클레임에 의해 정의된 것처럼 본 발명의 사상 및 범위로부터 출발하지 않고 다른 배치(arrangement)가 고안될 수 있음은 자명하다.
본 발명은 멀티 프로세싱 시스템의 서브 프로세싱 유닛 사이에서 프로세서 태스크를 계획하고 실행하는 기술에 적용할 수 있다.
Claims (55)
- 공유 메모리에 접근할 수 있는 다수의 프로세싱 유닛을 포함하는 멀티 프로세싱 시스템상에서 프로세서 태스크를 실행하는 방법으로,선택된 프로세서 태스크가 공유 메모리로부터 복사되고, 하나 이상의 프로세싱 유닛에 의해 실행되는 것을 제공하는 단계; 및하나의 프로세싱 유닛으로부터 다른 프로세싱 유닛으로 적어도 하나의 프로세서 태스크를 이동시키는 단계;를 포함하는 것을 특징으로 하는 방법.
- 제 1항에 있어서, 상기 공유 메모리로부터 프로세서 태스크의 실행을 차단하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 1항에 있어서, 상기 다수의 프로세싱 유닛은 메인 프로세서 유닛과 각각이 로컬 메모리를 갖는 다수의 서브 프로세싱 유닛을 포함하며, 상기 프로세서 태스크는 상기 로컬 메모리로 복사되고 상기 로컬 메모리에서 실행되는 것을 특징으로 하는 방법.
- 제 1항에 있어서, 적어도 하나의 프로세서 태스크의 이동은 소정의 조건을 기초로 하는 것을 특징으로 하는 방법.
- 제 4항에 있어서, 상기 조건은 상기 프로세서 태스크와 관련된 각각의 우선권 순위를 기초로 하는 것을 특징으로 하는 방법.
- 제 5항에 있어서, 상기 조건의 만족과 상기 이동 개시는 선점적 실행(preemptive action)을 기초로 하지 않음을 특징으로 하는 방법.
- 제 5항에 있어서, 상기 서브 프로세싱 유닛이 우선권 순위를 기초로 하는 실행 목적의 프로세서 태스크를 상기 공유 메모리로부터 선택하는 것을 요구하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 3항에 있어서, 상기 서브 프로세싱 유닛이 상기 공유 메모리로부터 더 낮은 우선권의 프로세서 태스크보다 더 높은 우선권의 프로세서 태스크를 선택하는 것을 요구하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 3항에 있어서, 첫 번째 서브 프로세싱 유닛에 의해 상기 공유 메모리로부터 실행 목적의 제 1 우선권 순위를 갖는 첫 번째 프로세서 태스크를 선택하는 단계;두 번째 서브 프로세싱 유닛에 의해 상기 공유 메모리로부터 실행 목적의 제 2 우선권 순위를 갖는 두 번째 프로세서 태스크를 선택하는 단계; 및세 번째 프로세서 태스크의 우선권 순위가 실행될 준비가 된 임의의 다른 프 로세서 태스크보다 더 높기 때문에 상기 세 번째 프로세서 태스크가 선택되었을 때, 상기 첫 번째 서브 프로세싱 유닛을 제 3 우선권 순위를 갖는 상기 세 번째 프로세서 태스크에게 양보(yielding)하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
- 공유 메모리에 접근할 수 있는 다수의 프로세싱 유닛을 포함하는 멀티 프로세싱 시스템상에서 프로세서 태스크를 실행하는 방법으로,선택된 프로세서 태스크가 상기 공유 메모리로부터 복사되고, 하나 이상의 상기 프로세싱 유닛에 의해 실행되는 것을 제공하는 단계;상기 프로세싱 유닛이 상기 프로세서 태스크의 우선권 순위를 기초로 한 실행 목적의 프로세서 태스크를 상기 공유 메모리로부터 선택하는 것을 제공하는 단계; 및상기의 하나의 프로세싱 유닛 상에서 실행되는 더 낮은 우선권을 갖는 프로세서 태스크가 더 높은 우선권을 갖는 프로세서 태스크로 우선적으로 치환될 수 있음을 제공하는 단계;를 포함하는 것을 특징으로 하는 방법.
- 제 10항에 있어서, 상기 공유 메모리로부터 상기 프로세서 태스크의 실행을 차단하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 10항에 있어서, 상기 다수의 프로세싱 유닛은 메인 프로세서 유닛과 각각 이 로컬 메모리를 갖는 다수의 서브 프로세싱 유닛을 포함하며, 상기 프로세서 태스크는 상기 로컬 메모리로 복사되고 상기 로컬 메모리에서 실행되는 것을 특징으로 하는 방법.
- 제 12항에 있어서, 상기 서브 프로세싱 유닛이 상기 공유 메모리로부터 더 낮은 우선권의 프로세서 태스크보다 더 높은 우선권의 프로세서 태스크를 선택하는 것을 요구하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 12항에 있어서, 다수의 서브 프로세싱 유닛에 의해 상기 공유 메모리로부터 실행 목적의 관련된 우선권 순위를 갖는 다수의 프로세서 태스크를 선택하는 단계;실행할 준비가 된 주어진 우선권 순위를 가진 상기 공유 메모리에 있는 n번째 프로세서 태스크를 불러오는 단계; 및상기 주어진 우선권 순위가 상기 다수의 프로세서 태스크의 어떤 우선권 순위보다 더 높은지를 결정하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
- 제 14항에 있어서, 적어도 하나의 서브 프로세싱 유닛이 상기 결정을 수행하는 것을 특징으로 하는 방법.
- 제 14항에 있어서, 상기 주어진 우선권 순위보다 더 낮은 우선권 순위를 갖 는 상기 다수의 프로세서 태스크 중 하나를 상기 n번째 프로세서 태스크로 우선적으로 치환하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 16항에 있어서, 상기 하나 이상의 서브 프로세싱 유닛은 적어도 상기 치환을 개시할 수 있고, 상기 다수의 서브 프로세싱 유닛 중 하나가 더 낮은 우선권 순위를 갖는 상기 프로세서 태스크의 실행을 양보하도록 유발시키는 것을 특징으로 하는 방법.
- 제 17항에 있어서, 상기 개시하는 서브 프로세싱 유닛이 더 낮은 우선권 순위를 갖는 상기 프로세서 태스크의 치환을 개시하기 위해서 상기 양보하는 서브 프로세싱 유닛에 대한 인터럽트를 일으키는 것을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 17항에 있어서, 상기 양보하는 서브 프로세싱 유닛이 더 낮은 우선권을 갖는 상기 프로세서 태스크를 그것의 로컬 메모리로부터 상기 공유 메모리로 재기입하는 것을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 17항에 있어서, 상기 양보하는 서브 프로세싱 유닛이 실행 목적의 더 높은 우선권을 갖는 상기 n번째 프로세서 태스크를 상기 공유 메모리로부터 그것의 로컬 메모리로 복사하는 것을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방 법.
- 공유 메모리에 접근할 수 있는 다수의 서브 프로세싱 유닛과 메인 프로세싱 유닛을 포함하며, 각각의 서브 프로세싱 유닛은 공유 메모리로부터 분리된 칩상 로컬 메모리(on-chip local memory)를 포함하는 멀티 프로세싱 시스템상에서 프로세서 태스크를 실행하는 방법으로,프로세서 태스크를 실행하기 위해서 상기 프로세서 태스크는 상기 공유 메모리로부터 상기 서브 프로세싱 유닛의 로컬 메모리로 복사되고, 상기 공유 메모리로부터 상기 프로세서 태스크의 실행을 차단하는 것을 제공하는 단계;다수의 서브 프로세싱 유닛에 의해 실행 목적의 관련된 우선권 순위를 갖는 프로세서 태스크를 상기 공유 메모리로부터 선택하는 단계; 및상기 서브 프로세싱 유닛은 주어진 우선권 순위를 갖는 상기 공유 메모리에서의 n번째 프로세서 태스크가 다수의 프로세서 태스크의 어떤 우선권 순위보다 더 높은지를 결정할 수 있음을 제공하는 단계;를 포함하는 것을 특징으로 하는 방법.
- 제 21항에 있어서, 상기 하나의 서브 프로세싱 유닛 상에서 실행하는 더 낮은 우선권을 갖는 프로세서 태스크가 더 높은 우선권을 갖는 프로세서 태스크로 우선적으로 치환되도록 하는 것을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 21항에 있어서, 상기 서브 프로세싱 유닛이 상기 n번째 프로세서 태스크가 상기 다수의 프로세서 태스크보다 더 높은 우선권 순위를 갖는지를 결정하는데 공유 태스크 우선권 테이블(a shared task priority table)을 사용하는 것을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 23항에 있어서, 상기 공유 태스크 우선권 테이블은 서브 프로세싱 유닛 식별자(sub-processing unit identifiers)와 프로세서 태스크 우선권 식별자(processor task priority identifiers)의 항목을 포함하고; 및각각의 항목은 관련된 서브 프로세싱 유닛 상에서 실행하는 주어진 프로세서 태스크의 우선권 순위를 나타내는 서브 프로세싱 유닛 식별자와 우선권 식별자 쌍(priority identifier pair)을 포함하는 것을 특징으로 하는 방법.
- 제 21항에 있어서, 상기 n번째 프로세서 태스크가 상기 다수의 프로세서 태스크보다 더 높은 우선권 순위를 갖는지를 결정하려는 서브 프로세싱 유닛은 더 낮은 우선권 순위를 나타내는 항목 쌍을 찾기 위해 상기 공유 태스크 우선권 테이블을 조사하는 것을 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 공유 메모리에 접근할 수 있는 다수의 서브 프로세싱 유닛과 메인 프로세싱 유닛을 포함하며, 각각의 프로세싱 유닛은 공유 메모리로부터 분리된 칩상 로컬 메모리(on-chip local memory)를 포함하는 멀티 프로세싱 시스템상에서 프로세서 태 스크를 실행하는 방법으로,프로세서 태스크를 실행하기 위해서 상기 프로세서 태스크는 상기 공유 메모리로부터 상기 서브 프로세싱 유닛의 로컬 메모리로 복사되고, 상기 공유 메모리로부터 상기 프로세서 태스크의 실행을 차단하는 것을 제공하는 단계;상기 서브 프로세싱 유닛은 상기 프로세서 태스크의 우선권 순위를 기초로 한 실행 목적의 프로세서 태스크를 상기 공유 메모리로부터 선택하는 것을 제공하는 단계; 및상기 주어진 서브 프로세싱 유닛에 의해 제공된 인터럽트에 응하여, 주어진 하나의 서브 프로세싱 유닛 상에서 실행하는 더 높은 우선권을 갖는 프로세서 태스크를 더 낮은 우선권을 갖는 프로세서 태스크를 실행하는 다른 서브 프로세싱 유닛으로 이동시키는 단계;를 포함하는 것을 특징으로 하는 방법.
- 다수의 프로세싱 유닛으로, 각각의 프로세싱 유닛은 프로세서 태스크가 실행되는 로컬 메모리를 포함하는 다수의 프로세싱 유닛; 및실행될 준비가 된 프로세서 태스크를 저장할 수 있는 공유 메모리;를 포함하며,상기 프로세서 태스크는 상기 공유 메모리로부터 프로세서 태스크를 실행하는 상기 프로세싱 유닛의 로컬 메모리로 복사되며, 적어도 하나의 프로세서 태스크는 하나의 프로세싱 유닛으로부터 다른 프로세싱 유닛으로 이동되는 것을 특징으로 하는 멀티 프로세싱 장치.
- 제 27항에 있어서, 상기 공유 메모리로부터 상기 프로세서 태스크의 실행을 차단하는 것을 더 포함하는 것을 특징으로 하는 장치.
- 제 27항에 있어서, 상기 다수의 프로세싱 유닛은 메인 프로세서 유닛; 및다수의 서브 프로세싱 유닛에 있어 각각의 서브 프로세싱 유닛이 상기 프로세서 태스크가 로컬 메모리로 복사되고 로컬 메모리에서 실행되는 소정의 로컬 메모리를 갖는 다수의 서브 프로세싱 유닛;을 포함하는 것을 특징으로 하는 장치.
- 제 29항에 있어서, 적어도 하나의 프로세서 태스크의 이동은 소정의 조건을 기초로 하는 것을 특징으로 하는 장치.
- 제 30항에 있어서, 상기 조건은 상기 프로세서 태스크와 관련된 각각의 우선권 순위를 기초로 하는 것을 특징으로 하는 장치.
- 제 31항에 있어서, 상기 조건의 만족과 상기 이동 개시는 선점적 실행(preemptive action)을 기초로 하지 않음을 특징으로 하는 장치.
- 제 31항에 있어서, 상기 서브 프로세싱 유닛은 프로세서 태스크의 우선권 순위를 기초로 한 실행 목적의 프로세서 태스크를 상기 공유 메모리로부터 선택하는 것을 특징으로 하는 장치.
- 제 29항에 있어서, 상기 서브 프로세싱 유닛은 상기 공유 메모리로부터 더 낮은 우선권을 갖는 프로세서 태스크보다 더 높은 우선권을 갖는 프로세서 태스크를 선택하는 것을 특징으로 하는 장치.
- 제 29항에 있어서, 첫 번째 서브 프로세싱 유닛은 실행 목적의 제 1 우선권 순위를 갖는 첫 번째 프로세서 태스크를 상기 공유 메모리로부터 선택하고;두 번째 서브 프로세싱 유닛은 실행 목적의 제 2 우선권 순위를 갖는 두 번째 프로세서 태스크를 상기 공유 메모리로부터 선택하며; 및상기 첫 번째 서브 프로세싱 유닛은 세 번째 프로세서 태스크의 우선권 순위가 실행될 준비가 된 다른 프로세서 태스크보다 더 높기 때문에 상기 세 번째 프로세서 태스크가 선택되었을 때, 제 3 우선권 순위를 갖는 상기 세 번째 프로세서 태스크에게 양보(yielding)하는 것;을 특징으로 하는 장치.
- 제 29항에 있어서, 상기 서브 프로세싱 유닛은 우선권 순위와 관련된 실행 목적의 다수의 프로세서 태스크를 상기 공유 메모리로부터 선택하고; 및실행할 준비가 된 주어진 우선권 순위를 갖는 공유 메모리에서의 n번째 프로세서 태스크가 상기 다수의 프로세서 태스크의 다른 우선권 순위보다 더 높은 순위의 우선권을 갖는지를 결정하는 것;을 특징으로 하는 장치.
- 제 36항에 있어서, 적어도 하나의 서브 프로세싱 유닛이 상기 결정을 수행하는 것을 특징으로 하는 장치.
- 제 36항에 있어서, 적어도 하나의 서브 프로세싱 유닛이 상기 주어진 우선권 순위보다 더 낮은 우선권 순위를 갖는 상기 다수의 프로세서 태스크 중의 하나를 상기 n번째 프로세서 태스크로 우선적으로 치환하는 것을 특징으로 하는 장치.
- 제 38항에 있어서, 상기 하나 이상의 서브 프로세싱 유닛이 적어도 상기 치환을 개시할 수 있고, 상기 다수의 프로세싱 유닛 중 하나가 더 낮은 우선권 순위를 갖는 상기 프로세서 태스크의 실행을 양보하도록 유발시키는 것을 특징으로 하는 장치.
- 제 39항에 있어서, 상기 개시하는 서브 프로세싱 유닛은 더 낮은 우선권 순위를 갖는 상기 프로세서 태스크의 치환을 개시하기 위해서 상기 양보하는 서브 프로세싱 유닛에 대한 인터럽트를 일으키는 것을 특징으로 하는 장치.
- 제 39항에 있어서, 상기 양보하는 서브 프로세싱 유닛은 더 낮은 우선권을 갖는 상기 프로세서 태스크를 그것의 로컬 메모리로부터 상기 공유 메모리로 재기입하는 것을 특징으로 하는 장치.
- 제 39항에 있어서, 상기 양보하는 서브 프로세싱 유닛은 더 높은 우선권을 갖는 상기 n번째 프로세서 태스크를 상기 공유 메모리로부터 그것의 로컬 메모리로 복사하는 것을 특징으로 하는 장치.
- 다수의 프로세싱 유닛으로, 각각의 서브 프로세싱 유닛은 프로세서 태스크가 실행되는 칩상 로컬 메모리(on-chip local memory)를 갖는 다수의 서브 프로세싱 유닛; 및실행될 준비가 된 프로세서 태스크를 저장할 수 있는 공유 메모리;를 포함하며,상기 프로세서 태스크는 상기 공유 메모리로부터 프로세서 태스크를 실행하기 위하여 상기 서브 프로세싱 유닛의 로컬 메모리로 복사되고, 상기 프로세서 태스크는 상기 공유 메모리로부터 실행되지 않으며,상기 서브 프로세싱 유닛은 상기 프로세서 태스크의 우선권 순위를 기초로 한 실행 목적의 프로세서 태스크를 상기 공유 메모리로부터 선택하고; 및적어도 상기 하나의 서브 프로세싱 유닛은 상기 주어진 서브 프로세싱 유닛에 의해 제공된 인터럽트에 응하여 상기 주어진 하나의 서브 프로세싱 유닛 상에서 실행하는 더 높은 우선권의 프로세서 태스크를 더 낮은 우선권을 갖는 프로세서 태스크를 실행하는 다른 서브 프로세싱 유닛으로 이동하는 것을 특징으로 하는 장치.
- 제 43항에 있어서, 상기 서브 프로세싱 유닛은 상기 공유 메모리로부터 더 낮은 우선권을 갖는 프로세서 태스크보다 더 높은 우선권을 갖는 프로세서 태스크를 선택하는 것을 특징으로 하는 장치.
- 제 43항에 있어서, 상기 서브 프로세싱 유닛은 관련된 우선권 순위를 갖는 실행 목적의 다수의 프로세서 태스크를 상기 공유 메모리로부터 선택하고; 및상기 서브 프로세싱 유닛 상에서 실행하는 상기 다수의 프로세서 태스크 중 어느 것이 상기 주어진 서브 프로세싱 유닛 상에서 실행하는 상기 프로세서 태스크의 우선권 순위보다 더 낮은, 가장 낮은 우선권 순위를 갖는지를 결정하는 것을 특징으로 하는 장치.
- 제 45항에 있어서, 상기 주어진 서브 프로세싱 유닛은 상기 결정을 수행하는 것을 특징으로 하는 장치.
- 제 45항에 있어서, 상기 주어진 프로세서 태스크는 가장 낮은 우선권 순위를 갖는 상기 프로세서 태스크를 실행하는 상기 서브 프로세싱 유닛으로 이동되고, 그 프로세서 태스크를 치환하는 것을 특징으로 하는 장치.
- 제 47항에 있어서, 상기 주어진 서브 프로세싱 유닛은 적어도 상기 이동을 개시하고, 가장 낮은 우선권 순위의 상기 프로세서 태스크를 실행하는 상기 서브 프로세싱 유닛이 더 높은 우선권 순위를 갖는 상기 주어진 프로세서 태스크에 실행을 양보하도록 유발시키는 것을 특징으로 하는 장치.
- 제 48항에 있어서, 상기 주어진 서브 프로세싱 유닛은 가장 낮은 우선권 순위를 갖는 상기 프로세서 태스크의 치환을 개시하기 위해서 상기 양보하는 서브 프로세싱 유닛에 대한 인터럽트를 일으키는 것을 특징으로 하는 장치.
- 제 48항에 있어서, 상기 양보하는 서브 프로세싱 유닛은 더 낮은 우선권을 갖는 상기 프로세서 태스크를 그것의 로컬 메모리로부터 상기 공유 메모리로 재기입하는 것을 특징으로 하는 장치.
- 제 45항에 있어서, 상기 양보하는 서브 프로세싱 유닛은 더 높은 우선권을 갖는 실행 목적의 상기 주어진 프로세서 태스크를 상기 주어진 서브 프로세싱 유닛의 로컬 메모리로부터 그것의 로컬 메모리로 복사하는 것을 특징으로 하는 장치.
- 제 43항에 있어서, 상기 주어진 서브 프로세싱 유닛이 어느 프로세서 태스크가 가장 낮은 우선권 순위를 갖는지를 결정하는데 공유 태스크 우선권 테이블(a shared task priority table)을 사용하는 것을 특징으로 하는 장치.
- 제 52항에 있어서, 상기 공유 태스크 우선권 테이블은 서브 프로세싱 유닛 식별자(sub-processing unit identifiers) 및 프로세서 태스크 우선권 식별자(processor task priority identifiers)에 대한 항목을 포함하고; 및각각의 항목은 관련된 서브 프로세싱 유닛 상에서 실행하는 주어진 프로세서 태스크의 우선권 순위를 나타내는 서브 프로세싱 유닛 식별자 및 우선권 식별자 쌍(priority identifier pair)을 포함하는 것을 특징으로 하는 장치.
- 제 53항에 있어서, 상기 주어진 서브 프로세싱 유닛은 가장 낮은 우선권 순위를 나타내는 항목 쌍을 찾기 위해 상기 공유 태스크 우선권 테이블을 조사하는 것을 특징으로 하는 장치.
- 제 53항에 있어서, 상기 서브 프로세싱 유닛은 상기 항목 쌍이 통용하도록 상기 공유 태스크 우선권 테이블을 수정하는 것을 특징으로 하는 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/783,238 | 2004-02-20 | ||
US10/783,238 US7565653B2 (en) | 2004-02-20 | 2004-02-20 | Methods and apparatus for processor task migration in a multi-processor system |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20060132852A true KR20060132852A (ko) | 2006-12-22 |
Family
ID=34861181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020067012780A KR20060132852A (ko) | 2004-02-20 | 2005-02-18 | 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7565653B2 (ko) |
EP (1) | EP1769347A2 (ko) |
JP (1) | JP2005235229A (ko) |
KR (1) | KR20060132852A (ko) |
CN (1) | CN1910554A (ko) |
TW (1) | TWI291656B (ko) |
WO (1) | WO2005081104A2 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110095052A (ko) * | 2010-02-18 | 2011-08-24 | 삼성전자주식회사 | 로드 밸런싱 장치 |
US8332461B2 (en) | 2010-01-14 | 2012-12-11 | Samsung Electronics Co., Ltd. | Task migration system and method thereof |
KR101366075B1 (ko) * | 2007-12-20 | 2014-02-21 | 삼성전자주식회사 | 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치 |
KR101400286B1 (ko) * | 2008-01-22 | 2014-05-26 | 삼성전자주식회사 | 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 |
US8832174B2 (en) | 2010-01-08 | 2014-09-09 | Samsung Electronics Co., Ltd. | System and method for dynamic task migration on multiprocessor system |
US8875151B2 (en) | 2007-07-10 | 2014-10-28 | Samsung Electronics Co., Ltd. | Load balancing method and apparatus in symmetric multi-processor system |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7392524B2 (en) * | 2004-04-06 | 2008-06-24 | International Business Machines Corporation | Method, system, and storage medium for managing computer processing functions |
US7788314B2 (en) * | 2004-04-23 | 2010-08-31 | Waratek Pty Ltd. | Multi-computer distributed processing with replicated local memory exclusive read and write and network value update propagation |
US7788668B2 (en) * | 2005-06-09 | 2010-08-31 | Lockheed Martin Corporation | System and method for implementing distributed priority inheritance |
US8849968B2 (en) * | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US8037474B2 (en) * | 2005-09-27 | 2011-10-11 | Sony Computer Entertainment Inc. | Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution |
US7522168B2 (en) * | 2005-09-27 | 2009-04-21 | Sony Computer Entertainment Inc. | Cell processor task and data management |
US20070055852A1 (en) * | 2005-09-06 | 2007-03-08 | Alcatel | Processing operation management systems and methods |
US7734827B2 (en) * | 2005-09-27 | 2010-06-08 | Sony Computer Entertainment, Inc. | Operation of cell processors |
US8141076B2 (en) * | 2005-09-27 | 2012-03-20 | Sony Computer Entertainment Inc. | Cell processor methods and apparatus |
US8316220B2 (en) * | 2005-09-27 | 2012-11-20 | Sony Computer Entertainment Inc. | Operating processors over a network |
US7975269B2 (en) * | 2005-09-27 | 2011-07-05 | Sony Computer Entertainment Inc. | Parallel processor methods and apparatus |
US7506123B1 (en) | 2005-09-27 | 2009-03-17 | Sony Computer Entertainment Inc. | Method and system for performing memory copy function on a cell processor |
US8074231B2 (en) * | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US20070094495A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Statically Verifiable Inter-Process-Communicative Isolated Processes |
US8595747B2 (en) * | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
US9870267B2 (en) * | 2006-03-22 | 2018-01-16 | Intel Corporation | Virtual vector processing |
JP4557949B2 (ja) * | 2006-04-10 | 2010-10-06 | 富士通株式会社 | 資源ブローカリングプログラム、該プログラムを記録した記録媒体、資源ブローカリング装置、および資源ブローカリング方法 |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US8032898B2 (en) * | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US7647483B2 (en) * | 2007-02-20 | 2010-01-12 | Sony Computer Entertainment Inc. | Multi-threaded parallel processor methods and apparatus |
US8789063B2 (en) * | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US8589943B2 (en) | 2007-08-15 | 2013-11-19 | Sony Computer Entertainment Inc. | Multi-threaded processing with reduced context switching |
TWI419074B (zh) * | 2007-10-29 | 2013-12-11 | Mstar Semiconductor Inc | 數位電視之處理裝置及處理方法 |
US8966490B2 (en) * | 2008-06-19 | 2015-02-24 | Freescale Semiconductor, Inc. | System, method and computer program product for scheduling a processing entity task by a scheduler in response to a peripheral task completion indicator |
US20110099552A1 (en) * | 2008-06-19 | 2011-04-28 | Freescale Semiconductor, Inc | System, method and computer program product for scheduling processor entity tasks in a multiple-processing entity system |
WO2009153619A1 (en) * | 2008-06-19 | 2009-12-23 | Freescale Semiconductor, Inc. | A system, method and computer program product for debugging a system |
US8296773B2 (en) * | 2008-06-30 | 2012-10-23 | International Business Machines Corporation | Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance |
TWI383617B (zh) * | 2008-10-31 | 2013-01-21 | Ind Tech Res Inst | 具排列架構之無線通訊方法及系統 |
WO2010137262A1 (ja) * | 2009-05-25 | 2010-12-02 | パナソニック株式会社 | マルチプロセッサシステム、マルチプロセッサ制御方法、及びマルチプロセッサ集積回路 |
JP5214537B2 (ja) * | 2009-05-25 | 2013-06-19 | 株式会社東芝 | マルチプロセッサシステム |
JP4871373B2 (ja) | 2009-06-19 | 2012-02-08 | 任天堂株式会社 | 情報処理システムおよび情報処理装置 |
JP5674296B2 (ja) | 2009-09-09 | 2015-02-25 | 任天堂株式会社 | 情報処理システムおよび情報処理装置 |
TWI395437B (zh) * | 2009-12-31 | 2013-05-01 | Htc Corp | 資料網路傳輸之通訊方法、通訊裝置及其電腦可讀取記錄媒體 |
US10678744B2 (en) * | 2010-05-03 | 2020-06-09 | Wind River Systems, Inc. | Method and system for lockless interprocessor communication |
JP2011250874A (ja) | 2010-05-31 | 2011-12-15 | Nintendo Co Ltd | 情報処理プログラム、情報処理装置、情報処理システム及び情報処理方法 |
JP5593566B2 (ja) | 2010-06-10 | 2014-09-24 | 任天堂株式会社 | 情報処理システム、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |
JP5677811B2 (ja) | 2010-06-11 | 2015-02-25 | 任天堂株式会社 | 携帯型情報端末、携帯情報システム、携帯型情報端末制御プログラム |
JP2012018657A (ja) | 2010-06-11 | 2012-01-26 | Nintendo Co Ltd | 情報処理端末、情報処理システム、情報処理プログラム |
JP5507350B2 (ja) * | 2010-06-11 | 2014-05-28 | 任天堂株式会社 | 携帯型情報端末、携帯型情報端末制御プログラム、携帯型情報システム、および、携帯型情報端末制御方法 |
US8413158B2 (en) | 2010-09-13 | 2013-04-02 | International Business Machines Corporation | Processor thread load balancing manager |
JP4999213B2 (ja) * | 2010-09-17 | 2012-08-15 | 任天堂株式会社 | 情報処理プログラム、携帯端末装置、システム、情報処理方法及び通信システム |
GB2484904A (en) * | 2010-10-21 | 2012-05-02 | Bluwireless Tech Ltd | Data processing system with a plurality of data processing units and a task-based scheduling scheme |
GB2484899A (en) * | 2010-10-21 | 2012-05-02 | Bluwireless Tech Ltd | Data processing system with a plurality of data processing units and a task-based scheduling scheme |
GB2484905B (en) * | 2010-10-21 | 2014-07-16 | Bluwireless Tech Ltd | Data processing systems |
GB2484907B (en) * | 2010-10-21 | 2014-07-16 | Bluwireless Tech Ltd | Data processing systems |
JP4882022B1 (ja) | 2010-12-28 | 2012-02-22 | 任天堂株式会社 | 通信システム、情報処理プログラム、情報処理方法、情報処理装置、情報処理システム |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US8561078B2 (en) | 2011-09-27 | 2013-10-15 | Throughputer, Inc. | Task switching and inter-task communications for multi-core processors |
GB2490766B (en) * | 2011-04-16 | 2013-04-24 | Mark Henrik Sandstrom | Task switching and inter-task communications for multi-core processors |
EP2437168B1 (en) * | 2011-04-18 | 2023-09-06 | Huawei Technologies Co., Ltd. | Method and device for balancing load of multiprocessor system |
WO2012153200A1 (en) * | 2011-05-10 | 2012-11-15 | International Business Machines Corporation | Process grouping for improved cache and memory affinity |
JP5667000B2 (ja) * | 2011-06-28 | 2015-02-12 | 株式会社富士通アドバンストエンジニアリング | プロセス優先制御システム,プロセス優先制御方法およびプロセス優先制御プログラム |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
WO2013162589A1 (en) * | 2012-04-27 | 2013-10-31 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
US8874805B2 (en) * | 2012-11-19 | 2014-10-28 | International Business Machines Corporation | Offloading input/output (I/O) completion operations |
US9146777B2 (en) | 2013-01-25 | 2015-09-29 | Swarm Technology Llc | Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process |
US9195575B2 (en) * | 2013-05-17 | 2015-11-24 | Coherent Logix, Incorporated | Dynamic reconfiguration of applications on a multi-processor embedded system |
CN104754647B (zh) * | 2013-12-29 | 2018-06-22 | 中国移动通信集团公司 | 一种负载迁移的方法和设备 |
JP6740210B2 (ja) * | 2014-07-24 | 2020-08-12 | アリフォンソ イニゲス, | 動的に構成可能な先回りコプロセッシングセルを用いる並列処理のためのシステムおよび方法 |
KR20160061726A (ko) * | 2014-11-24 | 2016-06-01 | 삼성전자주식회사 | 인터럽트 핸들링 방법 |
CN104657222B (zh) * | 2015-03-13 | 2017-11-21 | 浪潮集团有限公司 | 一种面向smp调度系统的优化方法 |
US10552205B2 (en) * | 2016-04-02 | 2020-02-04 | Intel Corporation | Work conserving, load balancing, and scheduling |
CN106201711B (zh) * | 2016-06-29 | 2019-07-26 | 联想(北京)有限公司 | 一种任务处理方法及服务器 |
JP7331768B2 (ja) * | 2020-04-28 | 2023-08-23 | 株式会社デンソー | リアルタイム演算処理装置 |
JP7322797B2 (ja) * | 2020-04-28 | 2023-08-08 | 株式会社デンソー | リアルタイム演算処理装置 |
CN115396750B (zh) * | 2022-07-08 | 2024-10-01 | 国网山东省电力公司营销服务中心(计量中心) | 一种ii型集中器光伏发电电能表数据采集方法及系统 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5841538B2 (ja) * | 1975-12-04 | 1983-09-13 | 株式会社東芝 | マルチプロセツサシステム ノ ユウセンセイギヨホウシキ |
US4394727A (en) * | 1981-05-04 | 1983-07-19 | International Business Machines Corporation | Multi-processor task dispatching apparatus |
US4837688A (en) * | 1986-07-25 | 1989-06-06 | International Business Machines Corporation | Multi-channel shared resource processor |
US5109512A (en) | 1990-05-31 | 1992-04-28 | International Business Machines Corporation | Process for dispatching tasks among multiple information processors |
US5452452A (en) * | 1990-06-11 | 1995-09-19 | Cray Research, Inc. | System having integrated dispatcher for self scheduling processors to execute multiple types of processes |
US5469571A (en) * | 1991-07-15 | 1995-11-21 | Lynx Real-Time Systems, Inc. | Operating system architecture using multiple priority light weight kernel task based interrupt handling |
US5630128A (en) * | 1991-08-09 | 1997-05-13 | International Business Machines Corporation | Controlled scheduling of program threads in a multitasking operating system |
US5379428A (en) | 1993-02-01 | 1995-01-03 | Belobox Systems, Inc. | Hardware process scheduler and processor interrupter for parallel processing computer systems |
JP2809962B2 (ja) | 1993-03-02 | 1998-10-15 | 株式会社東芝 | 資源管理方式 |
US6105053A (en) | 1995-06-23 | 2000-08-15 | Emc Corporation | Operating system for a non-uniform memory access multiprocessor system |
JPH09237256A (ja) | 1996-02-29 | 1997-09-09 | Mitsubishi Electric Corp | 並列計算機における動的負荷分散方法 |
US5826081A (en) * | 1996-05-06 | 1998-10-20 | Sun Microsystems, Inc. | Real time thread dispatcher for multiprocessor applications |
US6321308B1 (en) | 1997-03-21 | 2001-11-20 | Emc Corporation | Method and apparatus for managing access requests from a plurality of devices using dual level queue locking scheme and a doubly-linked circular queue |
FI108478B (fi) * | 1998-01-21 | 2002-01-31 | Nokia Corp | Sulautettu jõrjestelmõ |
JP2002007364A (ja) * | 2000-06-22 | 2002-01-11 | Fujitsu Ltd | 並列計算機システムのジョブスケジューリングを行うスケジューリング装置 |
JP3472540B2 (ja) | 2000-09-11 | 2003-12-02 | 日本電信電話株式会社 | サーバ選択装置、サーバ選択方法、及びサーバ選択プログラムを記録した記録媒体 |
US6904483B2 (en) | 2001-03-20 | 2005-06-07 | Wind River Systems, Inc. | System and method for priority inheritance |
US7233998B2 (en) | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
JP3884990B2 (ja) | 2002-04-26 | 2007-02-21 | 富士通株式会社 | マルチプロセッサ装置 |
US7389508B2 (en) | 2003-09-25 | 2008-06-17 | International Business Machines Corporation | System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment |
-
2004
- 2004-02-20 US US10/783,238 patent/US7565653B2/en active Active
-
2005
- 2005-02-18 EP EP05710665A patent/EP1769347A2/en not_active Withdrawn
- 2005-02-18 CN CNA2005800029511A patent/CN1910554A/zh active Pending
- 2005-02-18 KR KR1020067012780A patent/KR20060132852A/ko not_active Application Discontinuation
- 2005-02-18 TW TW094105113A patent/TWI291656B/zh active
- 2005-02-18 WO PCT/JP2005/003064 patent/WO2005081104A2/en not_active Application Discontinuation
- 2005-02-21 JP JP2005044875A patent/JP2005235229A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8875151B2 (en) | 2007-07-10 | 2014-10-28 | Samsung Electronics Co., Ltd. | Load balancing method and apparatus in symmetric multi-processor system |
KR101366075B1 (ko) * | 2007-12-20 | 2014-02-21 | 삼성전자주식회사 | 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치 |
US9135060B2 (en) | 2007-12-20 | 2015-09-15 | Samsung Electronics Co., Ltd. | Method and apparatus for migrating task in multicore platform |
KR101400286B1 (ko) * | 2008-01-22 | 2014-05-26 | 삼성전자주식회사 | 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 |
US8832174B2 (en) | 2010-01-08 | 2014-09-09 | Samsung Electronics Co., Ltd. | System and method for dynamic task migration on multiprocessor system |
US8332461B2 (en) | 2010-01-14 | 2012-12-11 | Samsung Electronics Co., Ltd. | Task migration system and method thereof |
KR20110095052A (ko) * | 2010-02-18 | 2011-08-24 | 삼성전자주식회사 | 로드 밸런싱 장치 |
Also Published As
Publication number | Publication date |
---|---|
US7565653B2 (en) | 2009-07-21 |
CN1910554A (zh) | 2007-02-07 |
WO2005081104A8 (en) | 2005-11-24 |
WO2005081104A3 (en) | 2006-03-30 |
TW200540705A (en) | 2005-12-16 |
EP1769347A2 (en) | 2007-04-04 |
WO2005081104A2 (en) | 2005-09-01 |
JP2005235229A (ja) | 2005-09-02 |
US20050188372A1 (en) | 2005-08-25 |
TWI291656B (en) | 2007-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20060132852A (ko) | 멀티 프로세서 시스템에서 프로세서 태스크 이동 방법 및장치 | |
US7614053B2 (en) | Methods and apparatus for task management in a multi-processor system | |
US20060190942A1 (en) | Processor task migration over a network in a multi-processor system | |
US7516456B2 (en) | Asymmetric heterogeneous multi-threaded operating system | |
US8091078B2 (en) | Dynamically partitioning processing across a plurality of heterogeneous processors | |
US7653908B2 (en) | Grouping processors and assigning shared memory space to a group in a heterogeneous computer environment | |
US8234652B2 (en) | Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks | |
US8635615B2 (en) | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof | |
US20010005853A1 (en) | Method and system for performing a task on a computer | |
JP4963018B2 (ja) | スケジューリング方法およびスケジューリング装置 | |
US20090064168A1 (en) | System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks By Modifying Tasks | |
US10402223B1 (en) | Scheduling hardware resources for offloading functions in a heterogeneous computing system | |
JP4183712B2 (ja) | マルチプロセッサシステムにおいてプロセッサタスクを移動するデータ処理方法、システムおよび装置 | |
JP3546694B2 (ja) | マルチスレッド計算機システム及びマルチスレッド実行制御方法 | |
US11392388B2 (en) | System and method for dynamic determination of a number of parallel threads for a request | |
CN114489807A (zh) | 在计算节点上分配对作业的处理 | |
Akram et al. | Real‐time partitioned scheduling: Exploiting the inter‐resource affinity for task allocation on multiprocessors | |
US20230315652A1 (en) | Efficient queue access for user-space packet processing | |
JPH11249917A (ja) | 並列型計算機及びそのバッチ処理方法及び記録媒体 | |
JP2004086921A (ja) | マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法 | |
KR20240108239A (ko) | 트레이닝 시스템 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |