KR100400165B1 - 처리 시스템 스케쥴링 - Google Patents

처리 시스템 스케쥴링 Download PDF

Info

Publication number
KR100400165B1
KR100400165B1 KR10-2001-7004826A KR20017004826A KR100400165B1 KR 100400165 B1 KR100400165 B1 KR 100400165B1 KR 20017004826 A KR20017004826 A KR 20017004826A KR 100400165 B1 KR100400165 B1 KR 100400165B1
Authority
KR
South Korea
Prior art keywords
processor
job
task
scheduling
algorithm
Prior art date
Application number
KR10-2001-7004826A
Other languages
English (en)
Other versions
KR20010080208A (ko
Inventor
홀름베르크퍼안데르스
클링라르스-외르얀
욘슨스텐에드바르트
소호니밀린드
티케카닉힐
Original Assignee
텔레폰아크티에볼라게트 엘엠 에릭슨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from SE9803901A external-priority patent/SE9803901D0/xx
Application filed by 텔레폰아크티에볼라게트 엘엠 에릭슨 filed Critical 텔레폰아크티에볼라게트 엘엠 에릭슨
Publication of KR20010080208A publication Critical patent/KR20010080208A/ko
Application granted granted Critical
Publication of KR100400165B1 publication Critical patent/KR100400165B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 작업을 병렬로 처리하도록 배열된 다수의 메모리-공유 프로세서(10a-e)와 데이터 일관성을 보장하는 데이터 일관성 수단(14)을 포함하는 처리 시스템(1)을 나타낸다. 상기 처리 시스템(1)은 제 1 알고리즘에 따라 프로세서(10a-e)상에서 실행하기 위해 작업을 스케쥴링하는 스케쥴러(17)를 포함한다. 본 발명에 따른 상기 처리 시스템(1)은 또한 제 2 알고리즘에 의해 주어지는 순서, 바람직하게는 글로벌 생성 순서에 따라 작업을 회수하는 수단(18)을 이용한다. 제 2 알고리즘은 제 1 알고리즘과 상이하다. 제 1 알고리즘은 사용된 특정 시스템에 맞게 조절될 수 있으며, 특정 프로세서로의 스케쥴링을 예컨대 소스, 목표, 통신 채널, 또는 해당 작업에 대한 생성 프로세서를 기반으로 할 수 있다. 처리 시스템(1)은 공통 작업 큐(16)를 이용하며, 스케쥴링은 조정 가능하게 수행되는 것이 바람직하다.

Description

처리 시스템 스케쥴링{PROCESSING SYSTEM SCHEDULING}
개선된 컴퓨터 시스템 처리 용량에 대한 요구의 지속적인 증가로, 더욱 빠르고 효과적인 프로세서가 필요하게 되었다. 프로세서의 처리 용량을 증가시키기 위한 종래의 접근 방법은 더욱 더 높은 클록 주파수를 사용하여 프로세서의 속도를 증가시키는 것에 의존한다. 그러나, 여러 번의 데이터 처리와 메모리 액세스는 제한적인 요인이므로, 또 다른 대책이 필요하다.
특히 응용 소프트웨어를 변형하지 않고 처리 시스템의 처리 용량을 증가시키는 공통적인 방법은 소위 슈퍼스칼라 프로세서를 사용하는 것이며, 이것은 인접한 명령어 사이에서 발견되는 파인-그레인(fine-grained) 병렬성을 조사한다. 슈퍼스칼라 프로세서에서, 프로세서내의 기능 유닛은 다수의 명령어를 동시에 병렬로 실행하도록 배열된다. 이것을 종종 명령어-레벨 병렬성(ILP)이라 한다.
처리 용량을 증가시키는 또 다른 방법은 멀티프로세서 시스템, 즉 다수의 프로세서가 병렬로 동작하는 시스템으로 처리 시스템을 구축하는 것이다. 일부 처리 시스템은 대칭 멀티프로세서(SMPs)로 공지된 구조를 통해 처리하여 높은 성능을 얻는다. 슈퍼스칼라 프로세서에 의해 얻어진 파인-그레인 병렬성과 대조적으로, SMP 구조는 병행 프로그래밍 원리에 따라 설계된 프로그램에 명백히 규정되어 있거나, 컴파일하는 동안 단일-프로세서 시스템상에서 순차 실행되도록 설계된 프로그램으로부터 얻어지는 코어스-그레인(coarse-grained) 병렬성을 이용한다. SMP 구조에서, 다수의 태스크(task) 각각은 다수의 프로세서의 각각 한 프로세서에서 수행된다. 이러한 태스크는 상호 병행 처리 또는 스레드(threads)이다.
1995년, Italy, Ligure, Santa Margherita, 22ndAnnual International Symposium on Computer Architecture에서, Sohi, Breach, 및 Vijaykumar에 의한 Multiscalar Processors 논문에는, 소위 멀티스칼라 프로세서가 기재되어 있다. 멀티스칼라 실행 모델에 있어서, 제어 종속성과 관련된 정적 프로그램을 나타내는 제어 흐름 그래프(CFG)가 태스크로 분할되며, 멀티스칼라 프로세서는 태스크내의 임의의 명령을 검사하기 위해 잠시 중단하지 않고 태스크 크기의 단계를 받아 추론적으로 CFG를 마친다. 태스크의 초기 프로그램 카운터를 처리 유닛으로 전달함으로써, 수집된 실행 처리 유닛 중 하나에 태스크가 할당되어 실행된다. 이렇게 되면, 다수의 태스크가 처리 유닛에서 병렬로 실행될 수 있으므로, 사이클마다 다수의 명령어로 이루어진 총 실행 속도를 나타낸다. 멀티스칼라 하드웨어의 기능은 CFG를 마치고, 태스크를 처리 유닛에 할당하여, 순차 실행 형태로 상기 태스크를 실행하는 것이다. 추가 하드웨어가 제공되어, 추론적인 메모리 연산을 보류하고, 메모리 종속성의 변화를 검출하여, 필요에 따라 보정 작업을 개시한다. 헤드에서의 태스크가 비추론적임이 보장되는 유일한 태스크이므로, 헤드를 제외한 모든 유닛에 의해 수행되는 메모리 연산은 추론적이다.
외부 이벤트가 가장 최초 작업의 발단인 프로세서 시스템에 있어서, 작업 양상은 매우 확률적이며, 프로세서 시스템내에 비동기적인 작업 스트림을 생성한다. 상기 시스템에서 효과적인 작업 처리를 얻는 것은 특히 어렵다. 더 효과적인 처리 시스템에 대한 일반적인 요구가 여전히 존재한다.
Uchida 등에게 허여된 미국 특허 제 5,239,539 호는 복수의 호출 프로세서 간에 균일하게 로드(loads)를 분산함으로써 ATM 교환기의 스위칭 네트워크를 제어하는 제어기를 개시한다. 주 프로세서는 발생된 호출 처리를 호출 발생 시퀀스에 따라 또는 각 호출 셀에 부여된 채널 식별자를 이용하여 프로세서에 할당한다. 스위칭 상태 제어기가 스위칭 네트워크내의 복수의 버퍼에 대한 이용 정보를 수집하여, 호출 프로세서가 스위칭 상태 제어기의 내용에 따라 호출 처리를 수행한다.
일본 특허 요약서 JP 제 6276198 호는 복수의 프로세서 유닛이 구비된 패킷 스위치를 개시하며, 패킷의 스위칭 처리는 상호 독립적인 유닛을 이용하여 수행된다.
일본 특허 요약서 JP 제 4100449 A 호는 ATM 채널을 STM-멀티플렉싱함으로써 ATM 교환기와 신호 프로세서 배열(SPA) 사이에 신호 셀을 분산시키는 ATM 통신 시스템을 개시한다. 처리 로드를 분산시키는 것은 라우팅 태그 가산기(routing tag adder)에 의해 각 가상 채널에 추가된 SPA 번호에 따라 STM을 이용하여 신호 셀을 스위칭함으로써 실현된다.
일본 특허 요약서 JP 제 5274279 호는 프로세서 요소 그룹이 병렬 및 파이프라인 처리를 담당하는 계층적 프로세서 집합을 형성하는 병렬 처리 장치를 개시한다.
본 발명은 공유 메모리를 구비한 복수의 메모리를 갖는 처리 시스템에 관한 것으로, 특히 상기 시스템에서의 작업 스케쥴링(job scheduling)에 관한 것이다.
도 1은 본 발명의 실시예에 따른 처리 시스템의 개략도이며;
도 2는 본 발명의 다른 실시예에 따른 처리 시스템의 개략도이며;
도 3a는 본 발명에 따른 공통 작업 큐의 실시예를 나타내는 개략적인 블록도이며;
도 3b는 본 발명에 따른 공통 작업 큐의 다른 실시예를 나타내는 개략적인 블록도이며;
도 3c는 본 발명에 따른 공통 작업 큐의 선택적인 실시예를 나타내는 개략적인 블록도이며;
도 3d는 본 발명에 따른 분할된 공통 작업 큐의 실시예를 나타내는 개략적인 블록도이며;
도 4a는 본 발명에 따른 처리 시스템내의 상이한 통신 채널로부터 도달하는 작업의 경로를 나타내는 개략도이며;
도 4b는 본 발명에 따른 처리 시스템의 내부적으로 생성된 작업의 경로를 나타내는 개략도이며;
도 4c는 본 발명에 따른 처리 시스템의 상이한 목표에 지정된 작업의 경로를 나타내는 개략도이며;
도 4d는 본 발명에 따른 처리 시스템의 상이한 소스로부터 데이터를 요청하는 작업을 나타내는 개략도이며;
도 5는 공유-메모리 소프트웨어의 블록/객체-지향 설계를 이용한 처리 시스템의 개략적인 블록도이며;
도 6은 본 발명에 따른 통신 시스템을 나타내는 도면이며;
도 7은 본 발명과 함께 이용될 수 있는 데이터 일관성 방법의 마커 과정을 나타내는 개략도이고;
도 8은 본 발명에 따른 작업 처리 과정을 나타내는 흐름도이다.
따라서, 본 발명의 목적은 효과적인 병렬 작업 실행을 제공하는 처리 시스템을 제공하는 것이다. 본 발명의 다른 목적은 효과적인 병렬 작업 처리를 위해 배열되는 공유-메모리 프로세서를 제공하는 것이다. 본 발명의 또 다른 목적은 작업-병렬 실행을 위해 처리 시스템에서의 스케쥴링 효율을 개선하는 것이다. 본 발명의 또 다른 목적은 단일-프로세서 시스템용으로 존재하는 응용 소프트웨어를 멀티-프로세서 시스템에서 재이용하는 것이다.
이러한 그리고 다른 목적은 첨부된 특허 청구 범위에 정의된 바와 같이 본 발명에 의해 달성된다.
본 발명의 제 1 양상에 있어서, 처리 시스템은 작업을 병렬 처리하도록 배열된 다수의 메모리 공유 프로세서, 및 데이터 일관성을 보장하는 데이터 일관성 수단을 포함한다. 처리 시스템은 제 1 알고리즘에 따라 프로세서상에서 실행할 작업을 스케쥴링하는 스케쥴러를 포함하며, 이것은 작업 국소성/평행성(locality /concurrency)을 이용하여 실행 효율을 증가시킨다. 또한, 본 발명에 따른 처리 시스템은 제 2 알고리즘에 의해 부여되는 순서로 작업을 회수하는 수단을 사용한다. 제 2 알고리즘은 제 1 알고리즘과 상이하다. 제 2 알고리즘은 예컨대 생성의 글로벌 순서가 유지되는 선입선출 원리에 따라 동작하는 것이 바람직하다. 제 1 알고리즘은 이용되는 특정 시스템에 맞게 조절될 수 있으며, 예컨대 소스(source), 목표, 통신 채널, 또는 해당 작업에 대한 작성 프로세서를 기반으로 하여 소정의 프로세서로 스케쥴링할 수 있다. 처리 시스템은 공통 작업 큐를 이용하며, 스케쥴링은 적응되게 수행되는 것이 바람직하다. 또한, 스케쥴러 및 회수 수단은 분산 유닛인 것이 바람직하다.
본 발명의 제 2 양상에 있어서, 전기통신 시스템은 상술한 바와 같이 처리 시스템을 포함한다.
본 발명의 제 3 양상에 있어서, 상기 시스템에 대한 작업 처리 방법은, 공통 작업 큐에 작업을 저장하는 단계, 병렬 메모리 공유 프로세서 상에서 작업을 실행하는 단계, 및 공유 메모리내의 글로벌 데이터가 프로세서에 의해 처리될 때 데이터 일관성을 보장하는 단계를 포함한다. 상기 방법은 제 1 알고리즘에 따라 프로세서상에서 실행하기 위해 공통 큐내의 작업을 스케쥴링하는 단계, 및 제 1 알고리즘과 상이한 제 2 알고리즘에 따라 작업을 회수하는 단계를 더 포함한다. 제 2 알고리즘은 예컨대 생성의 글로벌 순서가 유지되는 선입선출 원리에 따라 동작하는 것이 바람직하다. 제 1 알고리즘은 사용되는 특정 알고리즘에 맞게 조절될 수 있으며, 예컨대 소스, 목표, 통신 채널, 또는 해당 작업에 대한 작성 프로세서를 기반으로 하여 특정 프로세서로의 스케쥴링을 할 수 있다. 실행 작업 스케쥴링은 소정의 응용 특성, 동작 위상, 및/또는 시스템의 하드웨어 구조에 맞게 조절되는 것이 바람직하다.
공유 메모리 시스템에 있어서, 전체 응용 프로그램과 데이터는 시스템내의 모든 공유 메모리 프로세서에 액세스될 수 있다. 따라서, 프로세서가 글로벌 데이터를 처리할 때 데이터 일관성(순차화(sequencing)는 물론 관련된 원자적 액세스)이 보장되어야 한다.
본 발명에 따르면, 추론적인 병렬 작업 실행에 의해 데이터 일관성이 보장될 수 있으며, 여기서 작업 간의 종속성 충돌이 검출되어, 이 종속성 충돌이 검출되는 추론적으로 실행된 작업은 롤백(roll back)되어 재시작된다. 종속성 충돌은 변수 마킹을 기반으로 하여 검출되기도 하고, 또는 선택적으로 판독 및 기록 번지가 비교되는 번지 비교를 기반으로 하여 검출된다.
개별적인 데이터를 마킹하는 대신 더 넓은 영역을 마킹함으로써, 더 코어스한-그레인 종속성 충돌 검사가 실현된다.
본 발명에 따른 해결 방법은 처리 시스템의 처리 용량을 실질적으로 증가시킨다.
공유-메모리 멀티프로세서를 이용하여 데이터 일관성을 보장하는 적절한 수단을 제공함으로써, 단일 프로세서 시스템에 이미 존재하는 응용 소프트웨어가 재이용될 수 있다. 기존의 표준 마이크로프로세서를 이용하여 다중 프로세서를 구현하는 경우, 응용 소프트웨어를 자동으로 변형하고, 가능하다면 시스템의 가상 기계/운영 시스템을 다중 프로세서를 지원하도록 변형함으로써 모든 응용 소프트웨어가 재이용될 수 있다. 반면, 다중 프로세서가 독점적인 설계의 특수 하드웨어로 구현된다면, 응용 소프트웨어는 멀티프로세서 환경으로 직접 이동될 수 있다. 어떤 방법이든, 이것은 귀중한 시간을 절약하며, 스크래치(scratch)로부터 응용 소프트웨어를 설계하는 것에 비해 프로그래밍 비용을 감소시킨다.
본 발명은 효과적으로 작업을 스케쥴링하여 고유의 작업 국소성/평행성을 이용하여 병렬로 실행함으로써 처리 용량을 증가시키는 장점을 제공한다. 또한, 상기 시스템은 하드웨어 구조, 응용 특성, 및 연산 모드에 소프트웨어가 용이하게 적용될 수 있으며, 즉 대부분의 처리 시스템, 특히 이벤트 기반(event-based) 처리 시스템에 보편적으로 적용될 수 있다. 더욱이, 본 발명은 특히 블록/객체-지향 설계인 경우 이미 존재하는 응용 소프트웨어의 재이용을 또한 허용한다. 본 발명에 의해 제공되는 다른 장점은 본 발명에 따른 실시예의 상세한 설명을 읽으면 명백해진다.
본 발명의 목적과 장점은 첨부 도면과 함께 다음의 상세한 설명을 참조함으로써 가장 잘 이해될 수 있다.
전 도면을 통해, 대응하거나 유사한 요소에 대해서는 동일한 참조 문자가 사용된다.
도 1은 본 발명에 따른 처리 시스템의 개략도이다. 본 발명에 따라 처리 용량을 증가시키는 효과적인 방법은 다중 공유-메모리 프로세서(10a-e)를 사용하는 것을 포함한다. 다중 공유-메모리 프로세서(10a-e)는 표준 마이크로프로세서를 기반으로 한 멀티프로세서 시스템 형태로 구현되는 것이 바람직하다. "다중 공유-메모리 프로세서"라는 용어는 본 명세서에서 동일한 칩에 구현된 다중 공유-메모리 프로세서 유닛과 같이 논리적으로 유사한 구현을 또한 포함한다. 모든 프로세서(10a-e)는 소위 공유 메모리(11)라고 하는 공통 메모리를 공유한다. 일반적으로, 작업 신호 형태의 외부 이벤트는 먼저 입/출력(I/O) 유닛(15)에 도달하며, 이 입/출력 유닛(15)으로부터 작업 큐(16)로 전송된다. 작업 큐내의 항목은 보통 실질적인 작업 자체라기 보다는 오히려 작업 신호 또는 작업의 다른 표현이다. 그러나, 상세한 설명에서, "작업"은 또한 "작업의 표현"의 발생을 나타내는데 교환가능하게 사용된다. 작업 큐내의 항목과 관련된 작업은 실행을 위해 프로세서(10a-e) 중 하나로 스케쥴링된다. 상기 작업은 회수를 위해 소정의 순서인 완결 순서(commit order)로 또한 스케쥴링된다. 회수는 작업을 실행하는 동안 수행된 변화를 메모리에 확인시키고, 내부적으로 발생된 작업을 공통 큐에 삽입하여, 아웃바운드(outbound) 신호를 외부 유닛 등으로 전송하는 것을 수반한다. 스케쥴러(17)는 작업 입력이 작업 큐(16)로 입력될 때 또는 이후 필요한 때 스케쥴링을 수행한다. 실제 스케쥴링의 더 상세한 설명은 이하에 제공된다.
스케쥴링에 따라, 작업은 상이한 프로세서로 분산되어 실행된다. 프로세서는 공유-메모리 프로세서이므로, 명령어와 데이터는 공유 메모리(11)에 저장된다. 상이한 프로세서에서 병렬로 실행된 작업은 어느 정도의 상호 종속성을 가질 가능성이 있다. 글로벌 데이터에 대해 동시 처리 상황이 발생할 수 있다. 데이터가 일관성이 있도록 하기 위해, 데이터 일관성을 보장하는 수단(14)이 제공된다. 상기 데이터 일관성 보장 수단(14)은 통상적으로 상이한 프로세서(10a-e)의 기능뿐만 아니라 공유 메모리(11)의 기능을 수반하므로, 도 1에 파선으로 도시된 바와 같이 통상 분산 방식으로 구성된다. 이하, 데이터 일관성 보장 수단(14)이 더 기술된다.
작업 실행이 완료되면, 작업은 회수 또는 완결되어야 한다. 상기 회수는 스케쥴링된 완결 순서에 따라 완결기(committer)(18)에 의해 수행된다. 따라서, 완결기(18)는 공유 메모리(11) 및 작업 큐(16)와 협동하여 적절한 방식으로 회수한다. 완결기(18)와 완결 순서가 이하에 더 논의된다. 하나의 작업을 실행하면 공유 메모리에 저장된 데이터에 변화를 일으키는 결과를 나타낼 수 있지만, 새로운 작업 또는 메시지를 발생시킬 수 있다. 이와 같이 내부적으로 발생된 작업 또는 메시지는 외부 유닛 또는 본 시스템의 프로세서에 사용될 수 있다. 외부 유닛에 사용되는 작업과 메시지는 입/출력(I/O) 유닛(15)에 이르러 올바른 수신기로 더 전송된다. 또한, 내부 작업은 상기 경로를 따라 또는 작업 큐내로 직접 또는 심지어 소정의 프로세서로 직접 향하게 된다.
이벤트 기반 시스템에 대한 계산은 일반적으로 외부 세계로부터의 입력 작업이 시스템의 상태를 변경함으로써 결과적으로 출력 작업이 나타날 수 있는 상태 기계(state machine)로서 모델링된다. 독립/해체(disjoint) 상태 기계가 각 작업 단계를 처리할 수 있다면, 다양한 상태 기계 사이에는 어떠한 데이터 공유가 존재하지 않는다. 그러나, 글로벌 상태로 표현되는 글로벌 자원이 존재한다고 하면, 소정의 글로벌 상태에서의 동작은 보통 단 하나의 프로세서를 이용하는 "어타믹(atomic)"이어야 하며, 이것은 소정의 글로벌 상태를 한 번에 액세스하여 시스템 상태 기계의 일부를 실행한다. 공통 큐내의 작업 사이에 시퀀스 종속성이 심지어 존재할 수 있다. 공유-메모리 시스템에서, 공유 메모리내의 전체 프로그램 공간과 데이터 공간은 모든 프로세서에 액세스될 수 있다. 따라서, 프로세서가 모든 또는 적어도 하나 보다 많은 프로세서에 공통인 글로벌 데이터를 처리할 필요가 있을 때 데이터 일관성을 보장해야 한다. 이것은 데이터 일관성 수단에 의해 얻어진다.
소프트웨어가 시퀀스 프로그래밍에 기초하는 프로세서 시스템에서는, 작업이 올바른 순서로 회수되는 것이 중요하다. 이와 같이 함으로써 작업 사이의 시퀀스 종속성을 검출하고 정정할 수 있다. 각 우선 순위 레벨에서 가장 논리적인 회수 순서는 선입선출(FIFO) 원리에 따르는 것이다. 즉, 가장 오래된 작업이 먼저 회수된다. 상이한 소스로부터 발생하는 작업은 또한 서로 의존하게 될 수 있으며, 예컨대 생성의 글로벌 순서가 완결 순서로 이용될 수 있다. 비동기 작업은 실행 즉시 회수될 수 있으므로, 디폴트 글로벌 순서로 주어질 수 있다. 따라서, 완결 스케쥴링은 보통 작업 큐의 FIFO 순서에 따라 수행된다.
또한, 실행을 위한 가장 원시적인 작업 스케쥴링 방식은 FIFO 순서에 따른다. 즉, 실행될 작업의 큐가 작업 큐(16)에 있으며, 작업은 이들이 작업 큐(16)에 들어온 순서와 동일한 순서로 실행되도록 분산된다. 그 후, 시스템내에 이용가능한 프로세서가 있기만 하면, 이용가능한 가장 오래된 작업이 각기 다른 프로세서로 스케쥴링된다. 프로세서가 이용가능해지면, 가장 오래된 작업이 상기 프로세서로 향하게 된다. 그 다음, 일단 작업이 실행되면, 회수 절차에 의해 글로벌 순서가 유지된다.
이와 같은 설계는 프로그램 순서에 의해 어느 정도 완벽하게 규정된 작업 순서에 따라 프로세서로 작업을 스케쥴링한다. 그러나, 멀티프로세서 시스템에서 작업을 스케쥴링할 때 중요할 수 있는 수 개의 다른 고려 사항이 있다. 예컨대, 상이한 프로세서에 의해 실행된 작업은 동일한 데이터를 처리할 수 있는데, 이것은 데이터 불일치성/충돌로 이어지며, 그 다음 롤백이나 기능 정지(stall)로 이어져 전반적인 처리 속도를 감소시킨다. 시간과 공간에서 데이터 국소성을 이용하기 위해 캐시(cache)가 사용된다. 대응하는 작업 국소성이 또한 존재하며, 이것은 더 효과적인 방식으로 작업을 스케쥴링하는데 사용될 수 있다. 또한, 대칭 구성에서, 모든 프로세서는 모든 태스크를 수행하는데 필요한 용량을 가지고 있지 않고, 작업은 이용가능한 올바른 용량을 갖는 프로세서를 기다려야 한다.
따라서, 본 발명에 따르면, 제 1 알고리즘에 따라 실행 스케쥴링이 수행되고, 제 2 알고리즘에 따라 완결 스케쥴링이 수행된다. 제 2 알고리즘은 제 1 알고리즘과 다르며, 예컨대 생성의 글로벌 순서를 유지하는 FIFO 유형이 바람직하다. 제 1 알고리즘, 즉 실행 스케쥴링이 수행된 이후의 규칙은 소정의 처리 시스템에 맞게 조정되는 것이 바람직하다. 따라서, 알고리즘은 특정 응용 특성, 동작 위상, 및 처리 시스템의 하드웨어 구조에 맞게 조절될 수 있다. 이러한 조정은 시스템을 설치 또는 변형할 때 수행될 수 있지만, 동작 중에 주기적으로 또는 간헐적으로 또한 수행될 수 있다.
제 1 알고리즘은 전체적인 시스템 성능을 최적화시키는 규칙 또는 발견적 지도법(heuristic)을 이용한다. 첫번째 고려 사항은 동시 처리 상황을 감소시키고 또는 로컬 프로세서 캐시에서의 캐시 적중률(hit ratio)을 최적화시키기 위해 동일한 데이터를 동일한 프로세서에서 가능한 한 많이 처리하게 하는 작업을 유지하는 것이다. 두번째 고려 사항은 프로세서 간에 로드의 균형을 맞추어 언제라도 모두를 사용중으로 유지하는 것이다. 세번째 고려 사항은 결핍(starvation)을 피하고 실시간 요구조건을 충족하는 것이다. 모든 작업은 일정 시간 주기 이내에 프로세서로 스케쥴링되도록 보장되어야 한다.
도 2는 본 발명에 따른 처리 시스템(10)의 또 다른 실시예를 나타낸다. 여기서, 데이터 일관성을 보장하는 수단(14)이 모든 프로세서(10a-e)에 대한 공통 수단으로 도시되어 있지만, 프로세서(10a-e)의 실제 작업 실행 부분과 분리된다. 상기 도면은 작업이 프로세서(10a-e)상에서 추론적으로 실행되는 상황에 대한 것이며, 데이터 일관성을 보장하는 수단(14)은 라이트-백(write-back) 메모리 영역과 종속성 검사 수단 등을 포함한다. 프로세서(10a-e)는 예컨대 메모리(11)내의 프로그램 기억 장소(12)로부터 프로그램 명령어를 판독할 수 있는 한편, 데이터 일관성을 보장하는 수단(14)은 주로 메모리(11)내의 데이터 기억장소(13)에 대해 동작한다.
작업 큐(16)는 작업 실행에 필요한 모든 정보를 포함하므로 병렬 처리를 위한 핵심 구성 요소이다. 도 3a는 본 발명에 따른 작업 큐(16)의 실시예에 대한 개략도이다. 다음 예에는, 설명을 용이하게 하기 위해, 처리 시스템에 3개의 프로세서만이 존재한다. 도 3a의 작업 큐(16)는 FIFO 작업 버퍼로서 배열된다. 작업 큐(16)내의 각 엔트리(entry)(20)는 상기 도면의 한 라인에 대응하며, 작업 관련 정보가 입력되는 다수의 위치(21-24)를 포함한다. 작업의 발생, 작업 유형의 분류, 작업의 예정 목표, 실행 데이터 등과 같이 관련 정보와 더불어 작업(21)의 사양 또는 임의의 다른 표현이 이용될 수 있다. 작업 큐(16)는 실행 상황을 기억하기 위해 2개의 플래그를 또한 포함한다. 시작 플래그(23)는 특정 엔트리의 작업이 프로세서(10a-e) 중 임의의 프로세서에서 실행을 시작했는지를 나타낸다. "1"은 작업이 시작되는 것을 나타내고, "0"은 작업이 여전히 실행 대기 중인 것을 나타낸다. 준비 플래그(24)는 작업이 그 실행을 끝마치고 회수 대기 중인지를 유사한 방법으로 나타낸다. 여기서, "1"은 작업이 준비되어 있음을 나타낸다. 이와 같이 용이한 구성의 작업 큐(16)가 본 발명과 함께 이용될 수 있다.
작업 큐가 FIFO 큐이므로, 완결 순서는 큐내의 작업 순서에 의해 정해진다. 포인터(25)는 완결 순서와 관련되며, 작업 큐내의 가장 오래된 작업을 가리킨다. 지시된 작업이 회수되면, 포인터는 작업 큐(16)내에서 한 단계 위로 이동하여, 다음 회수될 작업을 가리킨다. FIFO 큐와 포인터(25)를 이용하여 제 2 알고리즘을 위한 간단한 FIFO 동작이 생성된다.
상기 도면에서, 스케쥴러와 완결기는 개별적인 유닛으로 도시되어 있다. 그러나, 실제로는 상기 수단의 본래 특성은 이들을 분산 방식으로 구현하는 것이다. 따라서, 스케쥴러의 부분 또는 그 기능은 공유 메모리뿐만 아니라 다른 프로세서에 나타나거나 수행될 수 있다. 이와 동일한 방법으로, 완결기도 분산 수단으로 구현되는 것이 바람직하다.
도 3a의 실시예에 있어서, 작업 큐 자체에 실행 스케쥴링 정보가 전혀 저장되지 않으므로, 실행 스케쥴링은 프로세서(10a-e)가 이용가능한 경우 수행되어야 한다. 이러한 경우, 프로세서가 자유 실행 용량을 스케쥴러에 통지하며, 스케쥴러는 프로세서에 적합한 작업을 위해 작업 큐를 조사한다. 그 다음, 상기 적합한 작업이 상기 기재된 제 1 알고리즘에 따라 선택된다. 그 다음, 상기 선택된 작업이 자유 프로세서에서 실행된다. 프로세서가 이용될 수 있는 경우 그리고 미리 이용될 수 없는 경우 실제 스케쥴링이 수행되는 절차의 장점은 알고리즘으로 하여금 다수의 상이한 우선 순위된 선택 사항을 조사하게 함으로써 불균일한 로드 분배가 용이하게 보상될 수 있다는 것이다. 제 1 우선 순위에 따라 소정의 프로세서로 예정된 작업은 이용가능한 다른 작업이 없는 경우 다른 프로세서에서 적당하게 수행될 수 있다(원래는 상기 프로세서에 대한 것임). 따라서, 일시적인 불균일한 로드가 분산될 수 있다.
그러나, 프로세서가 이용될 수 있는 경우 스케쥴링이 발생하고 스케쥴링 자체가 너무 많은 프로세서 용량을 요구하므로, 수행될 스케쥴링을 위해 프로세서가 대기해야 하므로, 이러한 방법은 어떤 응용에서도 느려질 수 있다.
도 3b는 본 발명에 대한 작업 큐(16)의 선택적인 실시예를 나타낸다. 완결 스케쥴링은 동일한 방법으로 이루어지지만, 작업 큐(16)는 이러한 실시예에서 각 엔트리마다 하나의 추가적인 필드를 포함한다. 스케쥴링된 실행 태그(26)는 현재 작업의 바람직한 프로세서에 대한 정보를 포함한다. 새로운 작업이 큐에 입력되면, 스케쥴러(17)가 작업 자체의 정보(21) 및 관련 정보(22) 등에 따라 실행 스케쥴링을 수행한다. 스케쥴러(17)는 적합한 프로세서를 발견하여 그 표시를 실행 태그(26)에 저장한다. 프로세서가 이용될 수 있는 경우, 이용가능한 프로세서 표시에 대한 실행 태그가 조사되어 실행이 시작된다.
스케쥴링이 미리 이루어지므로, 새로운 작업의 실행을 시작하는 절차가 신속해진다. 그러나, 상기 특정 프로세서에 대해 스케쥴링된 작업이 없는 경우에는, 자유 프로세서 용량이 즉시 이용될 수 없다. 그러나, 이와 같은 상황에서 한 가지 가능한 해결 방법은 다른 프로세서로 이미 스케쥴링된 어떤 대기중인 작업을 자유 프로세서로 재스케쥴링하는 것이다.
도 3c에는, 본 발명에 유용한 작업 큐에 대한 또 다른 실시예가 도시되어 있다. 여기서, 완결 스케쥴링은 작업 큐의 각 목록마다 완결 태그(27)를 삽입함으로써 수행된다. 완결 태그(27)는 작업이 작업 큐에 입력될 때 제 2 알고리즘에 따라 설정되어 글로벌 작업 순서를 나타낸다. 상기 작업 큐에 있어서, 완결 태그(27)는 순서를 기억하고 있으므로 각기 다른 작업 위치가 FIFO 순서로 될 필요는 없다. 회수시, 완결기(18)는 회수 준비가 된 작업에 대응하는 가장 낮은 완결 태그를 갖는 작업을 조사한다.
도 3d는 본 발명에 유용한 작업 큐의 또 다른 해결 방법을 나타낸다. 여기서, 작업 큐(16)는 각각이 하나의 특정 프로세서에 대응하는 3개의 섹션(28)으로 분리된다. 새로운 작업이 작업 큐에 입력되면, 스케쥴러(17)는 글로벌 작업 순서에 따라 완결 태그(27)를 설정한다. 그러나, 스케쥴러(17)는 제 1 알고리즘에 따라 작업 큐에서의 위치를 결정한다. 작업이 제 1 프로세서로 스케쥴링되면, 상기 작업은 작업 큐의 제 1 섹션에 입력되고, 작업이 제 2 프로세서로 스케쥴링되면, 상기 작업은 작업 큐의 제 2 섹션에 입력되며, 작업이 제 3 프로세서로 스케쥴링되면, 상기 작업은 작업 큐의 제 3 섹션에 입력된다. 프로세서가 이용가능해지면, 상기 특정 프로세서에 대응하는 섹션(28)내의 제 1 작업이 선택되어 실행된다. 회수시, 완결 태그(27)는 회수가 올바른 글로벌 순서로 수행되도록 하는데 사용된다. 이와 같이 함으로써, 프로세서에 대한 병렬 종속/결합 큐가 가능해진다.
공통 작업 큐는 한 유닛으로 구현되는 것으로 상술되어 있다. 그러나, 공통 작업 큐는 상호 의존하는 상이한 메모리 유닛의 메모리 부분으로 구성될 수 있다. 상기 결합 큐는 상기 기재된 큐 설계 중 어떤 것도 포함할 수 있다. 또한, 상이한 프로세서에 대해 각기 다른 액세스 시간을 나타내는 종속 메모리 영역을 사용할 수 있다.
당업자에게 자명한 바와 같이, 상술된 4개의 작업 큐에 대한 실시예는 작업 큐만이 구현될 수 있는 방법에 대한 예이다. 실행과 완결 순서의 개별적인 스케쥴링에 대한 기본 개념을 유지하면서 다양한 변화 및 변형이 이루어질 수 있다.
실행 스케쥴링은 시스템 동작을 최적화할 때 매우 중요하다. 상기 기재된 바와 같이, 스케쥴링은 사용될 특정 시스템에 맞게 조절되어야 한다. 도 4a는 본 발명의 제 1 실시예에 따른 처리 시스템의 개략도이다. 처리 시스템은 다수의 공유-메모리 프로세서(10a-10e), 공유 메모리(11), I/O-유닛(15), 스케쥴러(17), 데이터 일관성 수단(14), 및 공통 작업 큐(16)를 포함한다.
I/O-유닛(15)은 착신 외부 작업을 수신하여 발신 작업을 출력한다. 스케쥴러(17)는 실행 및 완결을 위해 착신 작업을 스케쥴링하여, 상기 작업을 작업 큐(16)에 배열한다. 각 프로세서는 공통 작업 큐(16)로부터 작업을 인출(fetch) 또는 수신하여 처리한다. 이와 같은 인출은 제 1 알고리즘의 스케쥴링과 적절한 우선 순위에 따라 수행된다.
통상적으로, 작업은 신호 메시지 형태이며, 이러한 경우 각 메시지는 헤더(header)와 신호부(signal body)로 이루어져 있다. 신호부는 소프트웨어 태스크를 실행하는데 필요한 파라미터를 포함한다. 본 발명 전체에 걸쳐, "태스크" 및 "작업"은 교환가능하게 사용될 수 있다. 일반적으로, 신호부는 공유 메모리내의 소프트웨어 코드/데이터에 대한 명시적 또는 암시적 포인터뿐만 아니라 필요한 입력 피연산자를 포함한다. 따라서, 프로세서가 개별적으로 작업을 추출하고 처리하여, 대응하는 소프트웨어 태스크 또는 작업을 병렬로 처리한다.
병렬로 태스크를 실행하는 동안, 프로세서는 공유 메모리의 글로벌 데이터를 처리할 필요가 있다. 다수의 프로세서가 액세스되여 동일한 글로벌 데이터를 처리하거나 부정확한 순서로 데이터에 작용하는 데이터 불일치를 피하기 위해(작업 또는 태스크의 수명 동안, 즉 작업이 회수되기까지), 데이터 일관성 수단(14)은 데이터 일관성이 항상 보장되도록 해야 한다. 본 발명은 충돌 검출과 롤백 절차를 이용하여 데이터 일관성을 보장한다.
소프트웨어 태스크는 추론적으로 병렬로 실행되며, 종속성 충돌이 검출되는 추론적으로 실행된 태스크가 롤백되어 재시작될 수 있도록 하기 위해 종속성 충돌이 검출된다. 주로, 마커 방법 또는 번지 비교 방법으로 충돌 검출이 이루어진다. 마커 방법에 있어서, 각 프로세서는 공유 메모리내의 변수 이용을 마킹하는 수단을 포함하며, 그 마킹을 기반으로 변수 액세스 충돌이 검출된다. 충돌 검출은 일반적으로 롤백으로 인한 페널티(penalty)(결과적으로 처리 낭비로 나타남)를 갖는다. 이용 전에 자원을 로킹하는 것은 롤백으로 인한 페널티를 줄이기 위해 충돌 검출과 결합하여 사용될 수 있다는 것을 알아두어야 한다.
작업 신호는 보통, 메모리에 저장된 응용 소프트웨어의 명령어에 대한 명시적인 또는 암시적인 포인터뿐만 아니라, 상기 명령어를 실행하는데 필요한 오퍼랜드를 포함한다. 이러한 점에서, 작업 신호는 대응하는 작업을 완벽하게 정의하는 독립식이다.
정보 흐름이 프로토콜에 의해 관리되는 시스템에 대한 일반적인 조건은 소정의 관련 이벤트가 수신된 순서로 처리되어야 한다(소정의 시스템 프로토콜에 의해 제기된 순서 조건이 충족되어야 함)는 것이다. 이것은 시스템이 어떻게 구현될지라도 시스템의 불변이다. 작업 간의 회수 순서는 통상적으로 처리 코어로의 도착/생성에 의해 정해지며, 일반적으로 변하지 않는다. 그러나, 상이한 우선 순위 레벨의 작업 신호를 처리하는 처리 시스템에서, 더 낮은 우선 순위의 작업 신호 이전에 더 높은 우선 순위 레벨의 작업 신호를 회수하는 것이 유용할 수 있다. 일반적으로, 동일한 우선 순위 레벨내의 작업은 이들이 도착/생성되는 순서와 동일한 순서로 회수된다.
이하, 데이터 일관성을 보장하는 충돌 검출이 좀 더 상세히 기술된다.
스케쥴링 예
트래픽 소스 기반 매핑(Traffic source based mapping)
예컨대, 계층적 처리 시스템은 중앙 상위-레벨 프로세서 노드와 소위 영역 프로세서라 하는 다수의 하위-레벨 프로세서를 포함하며, 여기서 각 영역 프로세서는 다수의 하드웨어 장치에 서비스를 차례로 제공한다. 이러한 시스템에서, 하드웨어 장치로부터 발생하는 이벤트 및 장치 그룹에 서비스를 제공하는 영역 프로세서로부터 발생하는 이벤트는 소정의 프로토콜로 정해진 순서 조건에 의해 제기된 상태를 만족한다(상위 레벨에서 처리함으로써 보호되는 오차 상태는 제외됨). 따라서, 특정 장치/영역 프로세서로부터의 작업이 작업 그룹을 형성하며, 이것은 상기와 같은 다른 그룹에 일반적으로 독립적이다(시퀀스 종속성이 유지되는 한). 각 그룹내에서, 작업은 동일한 데이터에 액세스하려는 경향이 있으므로(관련 시간 척도 동안), 캐시 적중률이 개선될 가능성이 있다. 또한, 상이한 영역 프로세서로부터의 작업 사이의 시퀀스 종속성은 거의 존재하지 않는다. 이와 같은 특성을 유지하기 위해, 장치/영역 프로세서 각각은 항상 동일한 프로세서(10a-e)로 작업을 제공해야 한다. 예컨대, 전기통신 응용에 있어서, 사용자로부터 수신된 숫자의 시퀀스, 또는 트렁크(trunk) 장치에 수신된 ISDN 사용자 부분 메시지 시퀀스는 수신된 순서로 처리되어야 한다. 그러나, 2개의 독립적인 트렁크 장치에 수신되는 메시지의 시퀀스는 개별적인 트렁크 장치에 대한 시퀀싱이 유지되기만 한다면 임의의 순서로 처리될 수 있다.
도 4a에 있어서, 특정 하드웨어 장치나 통신 채널과 같은 규정된 소스로부터의 작업(31)은 규정된 프로세서(10e)로 스케쥴링되고, 특정 영역 프로세서와 같은 다르게 규정된 소스로부터의 작업(32)은 다르게 규정된 프로세서(10b)로 스케쥴링된다는 것을 알 수 있다. 소스의 수가 보통 공유-메모리 프로세서의 수를 매우 초과하므로, 각 프로세서는 일반적으로 다수의 소스에 할당된다. 전형적인 전기통신/데이터 통신 응용에서는, 단일 중앙 프로세서 노드와 통신하는 영역 프로세서가 1024개일 수 있다. 로드 균형 방법에 있어서 중앙 노드의 다수의 공유-메모리 프로세서상으로 영역 프로세서를 매핑한다는 것은 각 공유-메모리 프로세서가 대략 205개의 영역 프로세서를 얻는다는 것을 의미한다(중앙 노드에 5개의 프로세서가 있고, 모든 영역 프로세서가 동일한 로드를 생성한다고 가정함). 그러나, 실제로는 신호 장치, 가입자 단말기 등의 하드웨어 장치로부터의 작업을 훨씬 더 정교하게 스케쥴링하는데 유리할 수 있다. 이것은 일반적으로 로드 균형을 얻는 것을 더욱 용이하게 한다. 전기 통신망의 각 영역 프로세서는 수 백개의 하드웨어 장치를 제어한다. 따라서, 단일 중앙 노드 프로세서에서 10,000개 이상의 하드웨어 장치를 처리하는 대신(이것은 당연히 시간-공유 방식으로 로드를 처리함), 본 발명에 따른 해결 방법은 하드웨어 장치로부터의 작업을 중앙 노드내의 다수의 공유-메모리 프로세서로 스케쥴링하는 것이다.
프로세서-투-프로세서(processor-to-processor:CP-to-CP) 신호에 의해 접속된 슬라이스에서의 외부 작업 또는 소위 내부 작업을 처리하는 Telefonaktiebolaget LM Ericsson의 AXE Digital Switching System과 같은 시스템은 프로토콜에 의해 제기되는 것 이외에 자신의 스케쥴링 조건을 제기한다. 상기 CP-to-CP 신호는 일반적으로 이들이 생성된 순서로 처리되어야 한다(그렇지 않은 경우, 실행 상태에서 마지막 슬라이스에 의해 생성된 더 높은 우선 순위 신호로 교체됨). 이와 같은 추가 스케쥴링 조건은, 각 CP-to-CP 신호(내부 작업)는 자신이 생성된 프로세서와 동일한 프로세서에서 처리되는 경우 만족된다. 이것은, 프로세서(10a)로부터 작업 큐(16)까지, 그리고 다시 상기와 동일한 프로세서(10a)까지 파선(37)으로 도 4b에 도시되어 있다. 마찬가지로, 프로세서(10e)에 의해 생성된 내부 작업은 선(30)으로 나타나 있는 바와 같이 동일한 프로세서(10a)로 피드백된다. 따라서, 내부 작업들은 이들을 생성된 동일한 프로세서 또는 프로세서 집합으로 이들을 피드백시킴에 따라 이들이 생성된 순서와 동일한 순서로 처리되도록 함으로써 제어된다. 상기 스케쥴링 모두는 캐시 적중률을 개선시키며 종속 관계를 감소시킬 수 있다.
소프트웨어 기능/데이터 목표/소스 기반 매핑
이전에 언급된 바와 같이, 어떤 시스템은 내부 작업에 의해 접속된 "슬라이스"에서 외부 작업을 처리한다(예컨대, CP-to-CP 버퍼링된 신호). 실행 스케쥴링은 다수의 공유-메모리 프로세서 집합이 멀티프로세서 파이프라인으로 동작하는 방식으로 수행될 수 있는데, 여기서 각 외부 작업은 파이프라인의 상이한 프로세서 스테이지(stage)에서 실행되는 연쇄 작업으로 슬라이스에서 처리된다. 이것은 제 1 알고리즘이 파이프라인의 제 1 프로세서에 의해 생성된 내부 작업의 실행을 자체 또는 다른 특정 프로세서로 스케쥴링된다는 것을 의미한다. 따라서, 이와 같은 스케쥴링은 이미 기술된 도 4b의 스케쥴링과 다르다. 한 스테이지에 의해 발생된 모든 신호는 이들이 발생된 순서와 동일한 순서로 다음 스테이지에 제공되기만 하면, 이들이 생성되는 순서와 동일한 순서로 신호를 처리하는 시퀀싱 조건이 보장된다. 이 규칙에서 벗어나면 경합(racing)을 일으키게 되며, 이것은 처리량을 감소시키는 종속성 충돌과 롤백을 일으키는 결과로 나타낸다. 소정의 슬라이스의 실행이 하나의 신호보다 많은 신호에서 끝나면, 상기 신호는 이들이 발생된 순서와 동일한 순서로 그 다음 프로세서 스테이지에 제공되어야 한다. 선택적으로, 신호가 2 또는 그 이상의 프로세서에 분산된다면, 경합을 일으킬 가능성이 비교적 희박해져 롤백을 피하도록 할 필요가 있다.
도 4b의 처리 시스템은 또한 이러한 가능성을 설명하는데 사용된다. 멀티프로세서 파이프라인의 일부인, 예컨대 10a와 같은 프로세서에 의해 발생된 내부 작업은 굵은 파선(37)을 따라 동일한 프로세서로 피드백되지 않는 대신, 가는 파선(38)을 따라 다른 프로세서(10d)에 제공된다. 이렇게 되면, 물리적 장치가 병렬일지라도, 파이프라인내의 프로세서의 논리적인 순서는 병렬이기 보다는 오히려 직렬이 된다.
멀티프로세서 파이프라인의 프로세서 스테이지가 제 1 연쇄 작업에 속하는 작업을 실행하여 그 결과 나타나는 내부 작업 신호를 다음 프로세서 스테이지로 전송하면, 보편적으로 그 다음 연쇄 작업으로부터의 작업 처리를 시작하는 것이 자유로워지므로 처리 용량을 개선한다는 것을 알아두어야 한다.
일반적인 관점에서, "파이프라인" 실행은 글로벌 데이터에 대해 어타믹 액세스의 충돌 횟수를 감소시키는 한편, 예컨대 트래픽 소스 기반 작업 실행에서 캐시 적중률이 개선되며 시퀀스 종속성이 감소될 수 있다. 따라서, 가장 바람직한 상태는 두 가지를 조합한 것으로서, 이 경우 어타믹 액세스가 어려운 높은 위험을 나타내는 흐름은 파이프라인에서 처리되는 반면, 카테고리(category) 사이에서 거의 또는 전혀 없는 시퀀스 종속성을 갖는 카테로리로 분류될 수 있는 흐름은 병렬로 처리된다.
클러스터(cluster)의 이용
도 5는 공유-메모리 소프트웨어의 객체 지향 설계를 갖는 간략한 공유-메모리 멀티프로세서 시스템의 개략도이다. 공유 메모리(11)내의 소프트웨어는 블록/객체-지향 설계를 가지며, 한 세트의 블록 또는 클래스(B1 에서 Bn)으로 구성되며, 여기서 각 블록은 소정의 기능을 실행할 책임이 있다. 일반적으로, 각 블록은 코드가 저장되는 프로그램 섹터와 데이터가 저장되는 데이터 섹터라는 두 개의 주요 섹터로 분할된다. 블록의 프로그램 섹터내의 코드는 단지 동일한 블록에 속한 데이터에 액세스하여 작용할 수 있다. 그 다음, 데이터 섹터도 마찬가지로 두 섹터로 분리되는 것이 바람직하다. "글로벌" 데이터의 제 1 섹터는 다수의 글로벌 변수(GV1 에서 GVn)를 포함하고, 제 2 섹터는, 예컨대 레코드(R1 에서 Rn)와 같은 "전용(private)" 데이터를 포함한다. 각 레코드는 레코드(Rx)로 나타낸 바와 같이 다수의 레코드 변수(RV1 에서 RVn)를 통상적으로 포함한다.
일반적으로, 블록으로의 신호 입력은 블록내의 데이터 처리를 개시한다. 외부 또는 내부 작업을 수신하면, 각 프로세서는 작업 신호에 의해 표시된 블록내의 코드를 실행하여 상기 블록의 글로벌 변수와 레코드 변수에 작용함으로써, 소프트웨어 태스크를 실행한다. 소프트웨어 태스크의 실행은 프로세서 각각에 물결 모양의 선으로 도 5에 나타나 있다.
도 5의 예에 있어서, 제 1 프로세서(10a)는 소프트웨어 블록(B88)내의 코드를 실행한다. 다수의 명령어(이 중 I20 에서 I23 명령어만 도시되어 있음)가 실행되며, 각 명령어는 블록내의 하나 이상의 변수에 작용한다. 예컨대, 명령어(I20)는 레코드(R1)의 레코드 변수(RV28)에 작용하고, 명령어(I21)는 레코드(R5)의 레코드 변수(RV59)에 작용하며, 명령어(I22)는 글로벌 변수(GV43)에 작용하며, 명령어(I23)는 글로벌 변수(GV67)에 작용한다. 마찬가지로, 프로세서(10b)는 블록(B1)내의 코드를 실행하여 변수에 작용하고, 프로세서(10c)는 블록(B5)내의 코드를 실행하여 변수에 작용하며, 프로세서(10d)는 블록(B2)내의 코드를 실행하여 변수에 작용한다.
블록-지향 소프트웨어에 대한 예로는 Telefonaktiebolaget LM Ericsson의 PLEX(Programming Language for Exchanges) 소프트웨어가 있으며, 여기서 전체 소프트웨어가 블록으로 구성된다. 자바 애플리케이션은 실질적인 객체-지향 설계의 예이다.
객체-지향 소프트웨어 설계에 있어서, 공유 메모리내의 소프트웨어는 상술된 바와 같이 블록 또는 클래스로 구성되며, 특정 블록으로 향하는 외부 작업 수신시, 대응하는 프로세서가 블록/객체내의 코드를 실행하여 다른 블록/객체로 향하는 내부 작업 형태의 결과를 발생시킬 수 있다. 상기 내부 작업이 실행을 위한 것일 때, 이것은 지정된 블록/객체에서 실행되며 다른 블록/객체로 향하는 다른 내부 작업을 발생시킨다. 상기 일련의 과정은 몇 번의 내부 작업 이후에 일반적으로 소멸한다. 예컨대, 전기통신 응용에 있어서, 각 외부 작업은 보편적으로 5-10개의 내부 작업을 발생시킬 수 있다.
객체-지향 소프트웨어 설계용으로 제작된 파이프라인 실행 스케쥴링은 소프트웨어 블록/클래스의 클러스터를 프로세서에 할당하여 목표 블록에 따라 작업을 스케쥴링하는 것이다. 클러스터 중 하나가 한 프로세서에 할당되며, 다른 클러스터는 다른 프로세서에 할당된다. 이러한 방법으로, 공유 메모리내의 각 블록/클래스 클러스터는 규정된 프로세서로 할당되며, 상기 할당 방식은 예컨대 스케쥴러내의 룩업 테이블(look-up table) 및 공유 메모리내의 룩업 테이블에 구현된다. 룩업 테이블은 목표 블록을 작업 ID 등에 따라 각 작업에 연결시켜서, 각 목표 블록을 규정된 블록 클러스터에 연결한다. 스케쥴러는 룩업 테이블내의 정보에 따라 외부 작업을 프로세서에 분산한다. 공유 메모리내의 룩업 테이블은 모든 프로세서에 의해 이용될 수 있으므로, 내부 작업을 프로세서에 분산시킬 수 있다. 즉, 프로세서는 내부 작업을 발생시킬 때, 룩업 테이블로 하여금 i) 작업 ID에 따른 대응하는 목표 블록, ii) 식별된 목표 블록이 속하는 크러스터, 및 iii) 식별된 클러스터가 할당되는 프로세서를 결정하도록 한 다음, 내부 작업 신호를 적당한 프로세서에 제공한다. 작업 ID 외에 실행 상태와 같은 정보를 이용하여 좀 더 정교한 방법으로 오버래핑(overlapping) 클러스터를 이용한 할당 방식이 실현될 수 있을 지라도, 각 블록이 통상적으로 하나의 유일한 클러스터에 속한다는 것이 중요하다.
도 4c는 작업의 목표 블록(39a-c) 기반 실행 스케쥴링 알고리즘을 나타낸다. 공유 메모리(11)내에서 소정의 목표 블록(39a)을 갖는 작업은 실선 경로(34)로 나타나 있는 바와 같이 소정의 프로세서(10e)에서 실행되도록 스케쥴링된다. 공유 메모리(11)내에서 다른 목표 블록(39b)을 갖는 다른 작업은 파선 경로(33)로 나타나 있는 바와 같이 소정의 프로세서(10b)에서 실행되도록 스케쥴링된다.
도 4d는 작업 실행 스케쥴링 기반 데이터 소스를 나타낸다. 작업은 블록/클래스(39a)내의 코드를 실행하며, 그 작업은 프로세서(10d)로 스케쥴링된 스케쥴링 알고리즘 기반 소스에 따른다. 입력 데이터는 실선(35)을 따른다. 다른 블록/클래스(39b)내의 코드를 실행하는 또 다른 작업은 프로세서(10b)로 스케쥴링된다. 입력 데이터는 파선(36)을 따른다.
최대 이득을 얻기 위해서는, 모든 프로세서가 균일하게 로드되도록 프로세서로의 스케쥴링이 이루어져야 한다. 따라서, 블록/클래스의 클러스터는 "균등 로드" 기준(각 클러스터에 소비된 시간 양은 예컨대 단일 프로세서에서 실행되는 유사한 응용으로부터 알 수 있고, 또는 시스템 성능을 감시하여 분할을 재조정함으로써 얻어질 수 있음)에 따라 분할된다.
실제 실행 스케쥴링이 수행되는 방법에 관계없이, 일시적으로 또는 고정적으로 상이한 프로세서상의 로드가 균일하지 않는 상황이 발생할 수 있다. 이러한 상황은 각기 다른 작업에 대한 지연 시간이 매우 상이한 결과를 나타낼 수 있다. 이와 같은 상황이 발생하는 것을 방지하기 위해서는, 때때로 제 1 알고리즘을 조정하는 것이 바람직하다. 적응성 로드 균등화를 달성하는데 사용될 수 있는 간단한 절차는 가장 높은 로드를 갖는 프로세서에 최초 스케쥴링된 작업을 다른 규정된 프로세서로 재스케쥴링하는 것이다. 상기 재스케쥴링은 주기적으로, 또는 심하게 불균일한 작업 분산이 검출될 때 간헐적으로 수행될 수 있다. 이와 같은 절차는 로드 분배의 일시적인 변화뿐만 아니라 장시간의 변화를 처리한다.
이제, 충돌 검출에 대해 기술된다. 데이터 일관성을 보장하는 수단으로 충돌 검출을 이용하는 시스템에서, 소프트웨어 태스크(작업)는 추론적으로 다수의 프로세서에 의해 병렬로 실행되어, 종속성 충돌이 검출되고, 이 종속성 충돌이 검출되는 추론적으로 실행된 태스크가 롤백되어 적당한 순서로 재시작될 수 있다.
롤백에 대한 기본 원리는 충돌을 일으키는데 관련된 하나 또는 두 가지 작업의 처음으로 되돌아가는 것이다. 실행시 이루어진 모든 변화는 상기 시점까지 취소되고, 효율을 떨어뜨리는 것없이 진행이 보장되도록 롤백 작업은 이후에 그러한 방법으로, 또는 이러한 지연 후에 재시작된다. 이것은 롤백을 다시 일으키는 것이 상기 방식에는 허용되지 않는다는 것을 일반적으로 의미한다. 롤백에 대한 실제 결정은 생성, 충돌 작업 등의 글로벌 순서에 의존하게 된다.
바람직하게도, 충돌 검출에 있어서 각 프로세서가 태스크 실행시 공유 메모리에 변수 이용을 마킹함으로써 변수 액세스 충돌이 검출될 수 있다는 것이다. 매우 기본적인 이의 단계에서, 마커 방법은 공유 메모리의 각 변수 이용을 마킹하는 것으로 구성된다. 그러나, 개별적인 데이터 대신 더 넓은 영역을 표시함으로써, 더 코어스한-그레인 종속성 충돌 검사가 실현된다. 더 코어스한-그레인 종속성 검사를 구현하는 한 가지 방법은 페이징을 포함하는 표준 메모리 관리 기술을 이용하는 것이다. 다른 방법은 변수 그룹을 마킹하는 것으로써, 이것은 개별적인 레코드 변수를 마킹하는 대신 레코드내의 모든 레코드 변수를 포함한 전체 레코드를 마킹하는데 특히 효과적인 것으로 판명되었다. 그러나, 작업이 소정의 데이터 영역을 이용한다면, 이 때 동일한 영역을 사용하는 일부 다른 작업의 가능성이 매우 낮아지는 그러한 방법으로 "데이터 영역"을 선택하는 것이 중요하다. 그렇지 않으면, 코어스-그레인 데이터 영역 마킹이 사실상 롤백 빈도를 더 높이는 결과를 일으킬 수 있다.
도 7은 종속성 충돌을 객체-지향 소프트웨어 설계에서 검출하기 위한 변수 마킹의 사용을 나타낸다. 공유 메모리(11)는 상술된 바와 같이 블록/클래스(B1 내지 Bn)로 구성되며, 다수의 프로세서(10a 에서 10c)는 공유 메모리(11)에 접속된다. 도 7에는 두 블록, 즉 블록(B2)과 블록(B4)이 더 자세히 도시되어 있다. 이러한 특수 마커 방법의 실시에 있어서, 블록내의 각 글로벌 변수(GV1 에서 GVn)와 각 레코드(R1 에서 Rn)는 도 7에 도시되어 있는 바와 같이 마커 필드와 관련된다.
마커 필드는 공유 메모리에 접속된 각 프로세서마다 1 비트를 가지므로, 이러한 실시예에서 각 마커 필드는 3 비트(판독, 기록, 및 실행 상태용이 바람직함)를 갖는다. 모든 비트는 시작시에 리셋되며, 각 프로세서는 변수 또는 레코드를 액세스(판독 또는 기록)하기 전에 자신의 비트를 설정한 다음, 전체 마커 필드를 판독하여 값을 구한다. 마커 필드에 설정되는 임의의 다른 비트가 있다면 곧 충돌이 일어날 위험이 있어서, 프로세서는 대응하는 모든 마커 비트를 리셋하는 것을 포함하여 실행 중 상기 시점까지 이루어진 모든 변화를 취소하여 실행중인 태스크를 롤백한다. 반면, 어떤 다른 비트도 설정되어 있지 않다면, 프로세서는 태스크의 실행을 계속한다. 각 프로세서는 실행하는 동안 액세스된 각 변수의 번지를 기록하며, 이것을 이용하여, 회수/완결될 때 대응하는 각 마커 필드내의 각자의 비트를 리셋한다. 충돌이 검출될 때 롤백을 실행할 수 있도록 하기 위해, 각 작업을 실행하는 동안 모든 변형된 변수(즉, 변형전의 변수 상태)와 이들 번지의 사본을 유지하는 것이 필요하다.
도 7에 있어서, 프로세서(10b)는 글로벌 변수(GV1)를 액세스할 필요가 있으며, GV1과 연결된 마커 필드의 제 2 위치에 자신의 비트를 설정한 다음, 전체 마커 필드를 판독한다. 이러한 경우에, 필드(110)는 프로세서(10a)에 의해 설정된 비트와 프로세서(10b)에 의해 설정된 비트를 포함하며, 결과적으로 즉각적인 변수 액세스 충돌이 검출된다. 프로세서(10b)는 실행중인 태스크를 롤백한다. 마찬가지로, 프로세서(10b)가 레코드(R2)에 액세스할 필요가 있는 경우, 상기 프로세서는 제 2 위치에 자신의 비트를 설정한 다음 전체 마커 필드를 판독한다. 필드(011)는 10b에 의해 설정된 비트와 10c에 의해 설정된 비트를 포함하므로, 레코드 액세스 충돌이 검출된다. 또한, 이러한 경우에, 프로세서(10b)는 실행중인 태스크를 롤백한다. 프로세서(10c)가 레코드(R1)에 액세스할 필요가 있을 때, 상기 프로세서는 관련 마커 필드의 제 3 위치에 자신의 비트를 설정한 다음, 전체 필드를 판독하여 값을 구한다. 이러한 경우에, 설정되는 다른 비트가 전혀 없어서, 프로세서(10c)는 레코드에 액세스하여 판독 또는 기록하는 것을 허용받는다. 충돌을 검출하는 작업이 롤백되면, 생성 등의 글로벌 순서에 따라 충돌하는 작업을 롤백하는 것이 또한 필요하다는 것을 알아두어야 한다.
바람직한 마커 필드 접근 방법은 상술된 단일 비트 대신 프로세서마다 두 비트를 제공하는 것이다. 한 비트는 기록을 위한 것이고, 한 비트는 판독을 위한 것이다. 이것은 거의 판독되는 데이터로 인해 롤백을 최소로 한다. 또한, 프로세서 당 마커 필드 대신에 작업 당 마커 필드를 갖는 것이 가능해진다.
충돌 검출을 위한 다른 접근 방법은 번지 비교 방법이라 하며, 여기서 판독 및 기록 번지는 태스크의 끝에서 비교된다. 마커 방법과 비교하여 주된 차이점은 다른 프로세서에 의한 액세스가 주로 태스크 실행이 시작되는 동안에 검사되지 않고 회수시에만 검사된다는 점이다. 번지 비교 방법을 구현하는 특정 유형의 종속성 검사 유닛에 대한 예는 국제 특허 출원 WO 제 88/02513 호에 개시되어 있다.
순차적으로 프로그램된 응용 소프트웨어가 존재한다는 것은 일반적으로 대상이 넓음을 나타내며, 단일-프로세서 시스템의 경우 이미 수천 또는 수백만 라인의 소프트웨어 코드가 존재한다. 기존의 표준 마이크로프로세서를 이용하여 다중 프로세서를 구현하는 경우, 현재의 모든 소프트웨어는 응용 소프트웨어의 자동 변형, 및 가능하다면 가상 기계/운영 시스템을 변형하여 사용될 수 있다. 상기와 같은 자동 변형은 재컴파일 또는 이에 상당하는 것을 통해 수행되는 것이 바람직하다. 가상 기계/운영 소프트웨어의 변형은, 응용 소프트웨어가 다중 프로세서상에서 실행될 때 데이터 일관성 수단을 지원한다. 반면, 다중 프로세서가 독점적인 설계의 특정 하드웨어로 구현된다면, 응용 소프트웨어는 멀티프로세서 환경으로 직접 이동할될 수 있다. 따라서, 모든 소프트웨어 코드는 멀티프로세서 환경으로 이동되어 재사용되므로 시간과 돈을 절약한다.
선행 기술에서, 단일-프로세서 시스템은 계층화된 관점으로 나타날 수 있다. 하위층에서는, 표준 마이크로프로세서와 같은 프로세서가 발견될 수 있다. 다음 레벨은 운영 시스템을 포함하고, 그 다음으로 가상 기계를 포함하며, 이것은 상위 레벨에서 발견된 응용 소프트웨어를 해석한다.
또한, 멀티프로세서 시스템도 계층화된 관점으로 나타날 수 있다. 하위 레벨에서는, 다수의 공유-메모리 프로세서가 발견된다. 그 다음, 운영 시스템이 이어진다. 예컨대 SUN 워크스테이션에서 실행되는 APZ 에뮬레이터(emulator), SIMAX와 같은 고성능 컴파일 에뮬레이터, 또는 잘 알려진 자바 가상 기계일 수 있는 가상 기계는 멀티프로세서 지원 및 데이터-일관성 관련 지원을 위해 변형된다. 순차적으로 프로그램된 응용 소프트웨어는 컴파일된 경우에 데이터 일관성 관련 지원을 위해 간단히 코드를 추가하고 블록/클래스를 재컴파일하며, 해석 또는 후처리 객체 부호인 경우에 해석기를 변형하여 데이터 일관성 지원을 위한 명령어를 적당한 위치에 삽입함으로써 일반적으로 변형된다.
변수 마킹을 기반으로 하여 충돌을 검출하는 경우, 다음 단계가 취해짐으로써 단일-프로세서 시스템용으로 기록된 응용 소프트웨어가 멀티프로세서 환경으로 이동될 수 있다. 변수에 대한 액세스를 각각 기록하기 전에, 변수의 번지 및 최초 상태를 저장하기 위한 코드가 응용 소프트웨어에 삽입됨으로써 적합한 롤백을 가능하게 한다. 변수에 대한 액세스를 각각 판독 및 기록하기 전에, 마커 필드를 검사하고 변수의 번지를 저장하여, 마커 필드에 마커 비트를 설정하기 위한 코드가 소프트웨어에 삽입된다. 그 다음, 응용 소프트웨어가 재컴파일, 재해석, 또는 후처리된다. 하드웨어/운영 시스템/가상 기계는 또한 롤백을 구현하고 마커 필드를 재설정하여 충돌 검출 관련 지원을 제공하도록 변형된다. 따라서, 마커 필드를 검사하기 위한 코드를 실행할 때 충돌이 검출된다면, 이러한 제어는 보통 하드웨어/운영 시스템/가상 기계로 전달되며, 이것은 변형된 변수에 대해 저장된 사본을 이용하여 롤백을 수행한다. 이 외에도, 작업이 회수되면, 하드웨어/운영 시스템/가상 기계는 통상 작업에 의해 액세스된 변수의 저장 번지에 의해 제공되는 마커 필드 각각의 관련 비트를 테이크 오버하여 리셋한다.
단일-프로세서 시스템에서 실행하기 위한 현재의 응용 소프트웨어는 다중 처리 시스템에서 실행될 수 있으므로 이동될 수 있으며, 상기 소프트웨어는 이 때 한 번에 한 단계씩 연속해서 변형되어, 가능한 때 소프트웨어를 더 "병렬"로 함으로써 더 많은 성능을 얻을 수 있다.
물론, 응용 소프트웨어는 예컨대 완전히 새로운 응용을 위해 멀티스레드 (multithread)된 소프트웨어를 설계하거나 소정의 프로그래밍 언어에 병렬 구조를 이용함으로써 스크래치로부터 설계될 수 있다.
도 8은 본 발명에 따른 작업 처리 방법의 주요 기능을 나타내는 흐름도를 도시한다. 상기 과정은 단계 40에서 시작한다. 작업이 공통 작업 큐에 저장된다(단계 41). 제 1 알고리즘에 따라 실행 스케쥴링이 수행된다(단계 42). 작업은 이들이 스케쥴링된 프로세서상에서 처리된다(단계 43). 데이터 충돌 검출 등을 이용하여 임의의 데이터 종속성이 해결된다(단계 44). 상기 작업은 마지막으로, 제 1 알고리즘과 상이한 제 2 알고리즘에 따라 회수 또는 완결된다(단계 45). 상기 절차가 종료된다(단계 46). 상술된 바와 같이, 각 단계가 상이한 순서로 수행될 수 있다. 예컨대, 실제 완결 스케쥴링은 작업 큐에 작업을 저장할 때 수행될 수 있다. 실행 스케쥴링은 저장 단계와 관련하여 수행될 수 있지만, 실제 작업을 실행하기 바로 전에 수행될 수 있다.
도 6은 본 발명에 따른 하나 이상의 처리 시스템이 구현되는 통신 시스템의 개략도이다. 통신 시스템(2)은 PSTN(Public Switched Telephone Network), PLMN(Public Land Mobile Network), ISDN(Integrated Services Digital Network), 및 ATM(Asynchronous Transfer Mode) 네트워크와 같은 상이한 베어러 서비스 네트워크를 지원할 수 있다. 통신 시스템(2)은 기본적으로, 트렁크 그룹으로 보통 분류되는 물리적 링크에 의해 상호 접속된 다수의 스위칭/라우팅 노드(50-1 에서 50-6)를 포함한다. 스위칭/라우팅 노드(50-1 에서 50-4)는 전화기(51-1 에서 51-4)와 컴퓨터(52-1 에서 52-4)와 같은 액세스 단말기가 로컬 교환기(local exchange)(도시되지 않음)를 통해 접속되는 액세스 지점을 갖는다. 스위칭/라우팅 노드(50-5)는 이동 교환국(Mobile Switching Center:MSC)(53)에 접속된다. MSC(53)는 2개의 기지국 제어기(Base Station Controller:BSC)(54-1 및 54-2)와 홈 위치 레지스터(Home Location Register:HLR) 노드(55)에 접속된다. 제 1 BSC(54-1)는 1 또는 그 이상의 이동 유닛(57-1 및 57-2)과 통신하는 다수의 기지국(56-1 및 56-2)에 접속된다. 마찬가지로, 제 2 BSC(54-2)은 1 또는 그 이상의 이동 유닛(57-3)과 통신하는 다수의 기지국(56-3 및 56-4)에 접속된다. 스위칭/라우팅 노드(50-6)는 데이터 베이스 시스템(DBS)이 제공된 호스트 컴퓨터(58)에 접속된다. 컴퓨터(52-1 에서 52-4)와 같이 시스템(2)에 접속된 사용자 단말기는 호스트 컴퓨터(58)내의 데이터 베이스 시스템으로부터 데이터 베이스 서비스를 요청할 수 있다. 자바 서버와 같은 서버(59)가 스위칭/라우팅 노드(50-4)에 접속된다. 사무용 네트워크와 같은 전용 네트워크(도시되지 않음)가 또한 도 6의 통신 시스템에 접속될 수 있다.
통신 시스템(2)은 네트워크에 접속된 사용자에게 다양한 서비스를 제공한다. 상기 서비스의 예로는 PSTN과 PLMN에서의 일상적인 전화 호출, 메시지 서비스, LAN 상호 접속, 지능망(Intelligent Network:IN) 서비스, ISDN 서비스, CTI(Computer Telephony Integration) 서비스, 영상 회의, 파일 전송, 소위 인터넷 액세스, 페이징 서비스, 주문형 비디오 서비스 등이 있다.
본 발명에 있어서, 시스템(2)내의 각 스위칭 노드(50)에 본 발명에 따른 처리 시스템(1-1 에서 1-6)이 제공되는 것이 바람직하다. 호출 설정은 예컨대 작업 시퀀스를 실행할 것을 처리 시스템에 요청한다. 이러한 작업 시퀀스는 프로세서 레벨에 호출 설정 서비스를 정의한다. 본 발명에 따른 처리 시스템은 또한 MSC(53), BSC(54-1 및 54-2), HLR 노드(55), 호스트 컴퓨터(58), 및 통신 시스템(2)의 서버(59) 각각에 배치되는 것이 바람직하다.
예컨대, 인터넷 프로토콜(IP) 패킷으로 동작하는 서버는 본 발명에 따른 처리 시스템을 포함한다. 상기 처리 시스템의 스케쥴러는 하나의 동일한 전송 제어 프로토콜(Transmission Control Protocol:TCP) 세션에 속하는 IP-패킷을 하나의 동일한 프로세서로 스케쥴링하도록 배치될 수 있다.
이벤트 기반 시스템이란 용어는 전기통신, 데이터 통신, 및 트랜잭션-지향 시스템을 포함하지만 이것으로 제한되지는 않는다.
"공유-메모리 프로세서"란 용어는 기존의 표준 마이크로프로세서로 제한되지 않고, 모든 처리 유닛에 액세스가 가능한 응용 소프트웨어와 데이터를 갖는 공통 메모리를 위해 동작하는 대칭 멀티프로세서 및 특정 하드웨어와 같은 처리 유닛의 임의의 유닛을 포함한다. 또한, 이것은 공유 메모리가 다수의 메모리 유닛에 분산되고 액세스가 대칭적이지 않아서, 분산된 공유 메모리의 상이한 부분으로의 액세스 시간이 각기 다른 프로세서마다 각각 다를 수 있는 시스템을 포함한다.
상술된 실시예는 단지 예로서 제시된 것이며, 이것으로 본 발명이 제한되지 않는다는 것을 알아두어야 한다. 여기 개시되어 특허 청구된 기본 원리를 유지하는 다른 수정, 변경, 및 개선은 본 발명의 범위와 의도에 포함된다.

Claims (56)

  1. 처리 시스템(1; 1-1 - 1-12)으로서,
    착신 작업을 위한 작업 큐(16);
    작업을 병렬로 실행하기 위한 다수의 공유-메모리 프로세서(10a-10e);
    제 1 알고리즘에 따라 상기 프로세서를 이용하여 실행하기 위해 상기 작업을 스케쥴링하는 스케쥴러(17);
    상기 공유 메모리(11)의 데이터가 프로세서(10a-10e)에 의해 처리될 때 병렬 작업 사이에 데이터 일관성을 보장하는 수단(14); 및
    상기 제 1 알고리즘과 상이한 제 2 알고리즘에 따라 상기 작업을 회수하는 수단(18)을 포함하는 것을 특징으로 하는 처리 시스템.
  2. 제 1 항에 있어서,
    상기 회수 수단(18)과 상기 스케쥴러(17)는 분산 수단인 것을 특징으로 하는 처리 시스템.
  3. 제 1 항 또는 2 항에 있어서,
    상기 회수 수단(18)은 선입선출 원리에 따라 동작하는 것을 특징으로 하는 처리 시스템.
  4. 제 3 항에 있어서,
    상기 회수 수단(18)은 가장 오래된 작업이 첫 번째로 회수되는 글로벌 작업 순서에 따라 작업을 회수하는 것을 특징으로 하는 처리 시스템.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 제 1 알고리즘은 영구적으로 또는 간헐적으로 하나 이상의 특정 응용 특성, 동작 위상, 및 처리 시스템(1; 1-1 - 1-12)의 하드웨어 구조에 적응되는 것을 특징으로 하는 처리 시스템.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 스케쥴러(17)는 규정된 소스에 의해 발생된 작업을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 처리 시스템.
  7. 제 6 항에 있어서,
    상기 소스는 하나 이상의 입력 포트, 외부 프로세서, 및 하드웨어 장치 중에서 선택되는 것을 특징으로 하는 처리 시스템.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 스케쥴러(17)는 상기 프로세서의 제 1 프로세서에 의해 발생된 작업을 상기 제 1 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 처리 시스템.
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 스케쥴러(17)는 규정된 목표로 정해진 작업을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 처리 시스템.
  10. 제 1 항 또는 제 2 항에 있어서,
    상기 작업은 공유 메모리(11)내의 상이한 데이터 영역(39a-e)으로부터 입력 데이터를 요청하며, 상기 스케쥴러는 데이터 영역으로부터의 데이터를 요청하는 작업을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 처리 시스템.
  11. 제 1 항 또는 제 2 항에 있어서,
    상기 공유 메모리내의 소프트웨어는 다수의 소프트웨어 블록을 포함하고, 각 작업은 하나 이상의 소프트웨어 블록에 목표가 정해지며, 상기 스케쥴러는 목표 기반 스케쥴링을 수행하도록 블록 클러스터를 각 프로세서에 할당하기 위해 배치되는 것을 특징으로 하는 처리 시스템.
  12. 제 1 항 또는 제 2 항에 있어서,
    상기 스케쥴러(17)는 동일한 통신 채널에 도달하는 작업을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 처리 시스템.
  13. 제 1 항 또는 제 2 항에 있어서,
    상기 스케쥴러(17)는 가장 높은 로드를 갖는 프로세서로 스케쥴링된 작업을 다른 규정된 프로세서로 주기적으로 재스케쥴링하도록 배치되는 것을 특징으로 하는 처리 시스템.
  14. 제 1 항 또는 제 2 항에 있어서,
    상기 제 1 알고리즘은 정적 작업 분류와 종속성 분석을 기반으로 하는 것을 특징으로 하는 처리 시스템.
  15. 제 1 항 또는 제 2 항에 있어서,
    상기 프로세서(10a-e)는 추론적으로 다수의 작업을 병렬로 실행하도록 배치되며, 상기 데이터 일관성 보장 수단(14)은
    종속성을 검출하는 수단; 및
    종속성 충돌이 검출되는 추론적으로 실행된 작업을 취소하고 재시작하는 수단을 포함하는 것을 특징으로 하는 처리 시스템.
  16. 제 15 항에 있어서,
    상기 프로세서(10a-e) 각각은 공유 메모리(11)내의 변수 이용을 마킹하는 수단을 포함하며, 상기 종속성을 검출하는 수단은 상기 마킹을 기반으로 하여 변수 액세스 충돌을 검출하는 수단을 포함하는 것을 특징으로 하는 처리 시스템.
  17. 제 16 항에 있어서,
    상기 마킹 수단은 변수 그룹을 마킹하는 것을 특징으로 하는 처리 시스템.
  18. 제 15 항에 있어서,
    상기 공유 메모리(11)내의 소프트웨어는 다수의 소프트웨어 블록을 포함하고, 각 작업은 소프트웨어 블록과 관련되며, 프로세서(10a-e) 각각은 블록내의 변수 이용을 마킹하는 수단을 포함하고, 종속성 검출 수단은 상기 마킹을 기반으로 하여 변수 액세스 충돌을 검출하는 수단을 포함하는 것을 특징으로 하는 처리 시스템.
  19. 제 1 항 또는 제 2 항에 있어서,
    상기 작업 큐(16)내의 각 작업은 상기 제 1 알고리즘에 따라 작업이 실행되는 프로세서를 나타내는 정보(26, 28)를 포함하는 것을 특징으로 하는 처리 시스템.
  20. 제 1 항 또는 제 2 항에 있어서,
    상기 작업 큐(16)내의 각 작업은 상기 제 2 알고리즘에 따라 작업이 회수되는 순서를 나타내는 정보(25, 27)와 관련되는 것을 특징으로 하는 처리 시스템.
  21. 제 1 항 또는 제 2 항에 있어서,
    상기 작업 큐(16)는 분할되며, 각 작업은 상기 제 1 알고리즘에 따라 작업이 실행될 프로세서에 따라 특정 섹션(28)에 저장되는 것을 특징으로 하는 처리 시스템.
  22. 제 1 항 또는 제 2 항에 있어서,
    상기 작업 큐(16)는 상호 의존하는 물리적으로 분리된 부분을 포함하는 것을 특징으로 하는 처리 시스템.
  23. 제 22 항에 있어서,
    상기 프로세서(10a-e)의 제 1 프로세서에 대한 상기 분리된 부분의 액세스 시간은 상기 프로세서(10a-e)의 제 2 프로세서에 대한 상기 분리된 부분의 액세스 시간과 상이한 것을 특징으로 하는 처리 시스템.
  24. 처리 시스템(1; 1-1 - 1-12)을 갖는 통신 시스템(2)으로서,
    상기 처리 시스템은,
    착신 작업을 위한 작업 큐(16);
    작업을 병렬로 실행하기 위한 다수의 공유-메모리 프로세서(10a-10e);
    제 1 알고리즘에 따라 상기 프로세서를 이용하여 실행하기 위해 상기 작업을 스케쥴링하는 스케쥴러(17);
    상기 공유 메모리(11)의 데이터가 프로세서(10a-10e)에 의해 처리될 때 병렬 작업 사이의 데이터 일관성을 보장하는 수단(14); 및
    상기 제 1 알고리즘과 다른 제 2 알고리즘에 따라 상기 작업을 회수하는 수단(18)을 포함하는 것을 특징으로 하는 통신 시스템.
  25. 제 24 항에 있어서,
    상기 회수 수단(18)과 상기 스케쥴러(17)는 분산 수단인 것을 특징으로 하는 통신 시스템.
  26. 제 24 항 또는 25 항에 있어서,
    상기 회수 수단(18)은 선입선출 원리에 따라 동작하는 것을 특징으로 하는 통신 시스템.
  27. 제 24 항 또는 제 25 항에 있어서,
    상기 제 1 알고리즘은 영구적으로 또는 간헐적으로 하나 이상의 특정 응용 특성, 동작 위상, 및 통신 시스템(2)의 하드웨어 구조에 적응되는 것을 특징으로 하는 통신 시스템.
  28. 제 24 항 또는 제 25 항에 있어서,
    상기 스케쥴러(17)는 상기 프로세서의 제 1 프로세서에 의해 발생된 작업을 상기 제 1 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 통신 시스템.
  29. 제 24 항 또는 제 25 항에 있어서,
    상기 스케쥴러(17)는 상기 규정된 소스에 의해 발생된 작업을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 통신 시스템.
  30. 제 29 항에 있어서,
    상기 처리 시스템(1-12)은 인터넷 프로토콜(IP) 패킷으로 동작하는 서버(59)에 포함되며, 상기 스케쥴러(17)는 하나의 동일한 전송 제어 프로토콜(TCP) 세션에 속한 IP-패킷을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 통신 시스템.
  31. 제 24 항 또는 제 25 항에 있어서,
    상기 스케쥴러(17)는 규정된 목표로 예정된 작업을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 통신 시스템.
  32. 제 24 항 또는 제 25 항에 있어서,
    상기 스케쥴러(17)는 동일한 통신 채널에 도달하는 작업을 하나의 동일한 프로세서로 스케쥴링하도록 배치되는 것을 특징으로 하는 통신 시스템.
  33. 제 24 항 또는 제 25 항에 있어서,
    상기 스케쥴러(17)는 가장 높은 로드를 갖는 프로세서로 스케쥴링된 작업을 다른 규정된 프로세서로 주기적으로 재스케쥴링하도록 배치되는 것을 특징으로 하는 통신 시스템.
  34. 제 24 항 또는 제 25 항에 있어서,
    상기 제 1 알고리즘은 정적인 작업 분류와 종속성 분석을 기반으로 하는 것을 특징으로 하는 통신 시스템.
  35. 작업을 병렬로 실행하기 위해 다수의 공유-메모리 프로세서(10a-e)를 갖는 프로세서 시스템(1; 1-1 - 1-12)에서의 작업 처리 방법에 있어서,
    착신 작업을 작업 큐(16)에 저장하는 단계;
    상기 작업 큐(16)내의 작업을 제 1 알고리즘에 따라 상기 프로세서(10a-e)로 스케쥴링하는 단계;
    상기 작업을 상기 프로세서(10a-e)상에서 실행하는 단계;
    상기 공유 메모리(11)의 데이터가 프로세서(10a-e)에 의해 처리될 때 병렬 작업 사이의 데이터 일관성을 보장하는 단계; 및
    상기 제 1 알고리즘과 상이한 제 2 알고리즘에 따라 상기 작업을 회수하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  36. 제 35 항에 있어서.
    상기 제 2 알고리즘은 선입선출 원리에 따라 동작하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  37. 제 36 항에 있어서,
    상기 제 2 알고리즘에 따른 상기 회수하는 단계는 작업 큐(16)내의 가장 오래된 작업이 먼저 회수되는 글로벌 작업 순서를 기반으로 하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  38. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 제 1 알고리즘을 영구적으로 또는 간헐적으로 하나 이상의 특정 응용 특성, 동작 위상, 및 처리 시스템(1; 1-1 - 1-12)의 하드웨어 구조에 적응시키는 단계를 더 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  39. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 스케쥴링하는 단계는 상기 프로세서의 제 1 프로세서에 의해 발생된 작업을 상기 제 1 프로세서로 스케쥴링하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  40. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 스케쥴링 단계는 규정된 소스에 의해 발생된 작업을 하나의 동일한 프로세서로 스케쥴링하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  41. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 스케쥴링하는 단계를 규정된 목표로 정해진 작업을 하나의 동일한 프로세서로 스케쥴링하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  42. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    작업은 공유 메모리(11)내의 상이한 데이터 영역(30a-c)으로부터의 입력 데이터를 요청하며, 상기 스케쥴링하는 단계는 데이터 영역으로부터의 데이터를 요청하는 작업을 하나의 동일한 프로세서로 스케쥴링하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  43. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 공유 메모리(11)내의 소프트웨어는 다수의 소프트웨어 블록을 포함하고, 각 작업은 하나 이상의 소프트웨어 블록으로 목표가 정해지며, 상기 스케쥴링하는 단계는 블록 클러스터를 각 프로세서에 할당하여 목표 기반 스케쥴링을 수행하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  44. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 스케쥴링하는 단계는 동일한 통신 채널에 도달하는 작업을 하나의 동일한 프로세서로 스케쥴링하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  45. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 제 1 알고리즘을 조정하는 상기 단계는 가장 높은 로드를 갖는 프로세서로 스케쥴링된 작업을 다른 규정된 프로세서로 간헐적으로 재스케쥴링하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  46. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 스케쥴링 단계는 정적인 작업 분류와 종속성 분석을 기반으로 하여 작업을 스케쥴링하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  47. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 작업 실행은 작업을 추론적으로 병렬 실행하는 단계를 포함하며,
    상기 데이터 일관성을 보장하는 단계는,
    종속성 충돌을 검출하는 단계; 및
    종속성 충돌이 검출된 추론적으로 실행된 작업을 취소하고 재시작하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  48. 제 47 항에 있어서,
    상기 각 프로세서(10a-e)는 공유 메모리(11)내의 변수 이용을 마킹하는 단계를 더 포함하며, 상기 종속성 충돌을 검출하는 단계는 상기 마킹을 기반으로 하여 변수 액세스 충돌을 검출하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  49. 제 48 항에 있어서,
    상기 마킹하는 단계는 변수를 그룹화하여 마킹하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  50. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 스케쥴링 단계는 상기 작업 큐(16)로의 새로운 작업의 입력과 관련하여 수행되는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  51. 제 50 항에 있어서,
    상기 스케쥴링 단계는 상기 작업 큐(16)내에 실행 태그(26)를 설정하는 단계를 더 포함하며, 상기 실행 태그(26)는 작업이 실행될 프로세서를 나타내는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  52. 제 50 항에 있어서,
    상기 스케쥴링 단계는 상기 작업 큐(16)의 섹션(28)에 작업을 저장하는 단계를 더 포함하며, 상기 섹션(28)은 작업이 실행될 프로세서에 의존하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  53. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 스케쥴링 단계는 상기 프로세서 중 하나가 자유롭게 새로운 작업을 실행하기 시작하는 것과 관련하여 수행되는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  54. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    상기 제 2 알고리즘에 따라, 작업이 회수될 순서를 결정하는 회수 스케쥴링 단계를 더 포함함으로써, 상기 회수하는 단계가 상기 회수 스케쥴링에 따라 작업을 회수하는 단계를 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  55. 제 54 항에 있어서,
    상기 회수 스케쥴링은 상기 작업 큐에 회수 태그(27)를 설정하는 단계를 더 포함하며, 상기 회수 태그(27)는 작업이 회수될 순서를 나타내는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
  56. 제 35 항 내지 제 37 항 중 어느 한 항에 있어서,
    단일-프로세서 시스템용 응용 소프트웨어를 다수의 공유-메모리 프로세서(10a-e)로 이동시킴으로써 이것에 따라 실행하는 단계를 더 포함하는 것을 특징으로 하는 프로세서 시스템에서의 작업 처리 방법.
KR10-2001-7004826A 1998-11-16 1999-11-12 처리 시스템 스케쥴링 KR100400165B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9803901-9 1998-11-16
SE9803901A SE9803901D0 (sv) 1998-11-16 1998-11-16 a device for a service network
PCT/SE1999/002065 WO2000029943A1 (en) 1998-11-16 1999-11-12 Processing system scheduling

Publications (2)

Publication Number Publication Date
KR20010080208A KR20010080208A (ko) 2001-08-22
KR100400165B1 true KR100400165B1 (ko) 2003-10-01

Family

ID=50202831

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-7004826A KR100400165B1 (ko) 1998-11-16 1999-11-12 처리 시스템 스케쥴링

Country Status (7)

Country Link
EP (1) EP1131704B1 (ko)
JP (1) JP2002530738A (ko)
KR (1) KR100400165B1 (ko)
AU (1) AU1437400A (ko)
BR (1) BR9915366A (ko)
CA (1) CA2350798A1 (ko)
WO (1) WO2000029943A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441742B1 (ko) * 2002-07-26 2004-07-23 (주)엔텔스 정보교환 버스를 이용한 프로세스간 통신 데이터 제어방법및 그 시스템
KR101084044B1 (ko) 2010-03-03 2011-11-16 서울대학교산학협력단 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263331A (ja) * 2002-03-07 2003-09-19 Toshiba Corp マルチプロセッサシステム
US7020746B2 (en) * 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US8054487B2 (en) 2004-12-16 2011-11-08 International Business Machines Corporation Mechanism to create a reservation against a future scheduling object instantiation
KR100731969B1 (ko) * 2005-06-28 2007-06-25 엠텍비젼 주식회사 복수 경로를 통한 메모리 공유 방법 및 장치
KR100728650B1 (ko) * 2005-07-26 2007-06-14 엠텍비젼 주식회사 복수 경로를 통한 다중 분할된 메모리 공유 방법 및 장치
US7865896B2 (en) 2005-12-15 2011-01-04 International Business Machines Corporation Facilitating scheduling of jobs by decoupling job scheduling algorithm from recorded resource usage and allowing independent manipulation of recorded resource usage space
US7926057B2 (en) 2005-12-15 2011-04-12 International Business Machines Corporation Scheduling of computer jobs employing dynamically determined top job party
KR100716184B1 (ko) * 2006-01-24 2007-05-10 삼성전자주식회사 네트워크 프로세서에서의 큐 관리 방법 및 그 장치
KR100944912B1 (ko) * 2007-12-14 2010-03-03 한국전자통신연구원 서버 가상화 환경을 위한 디스크 입출력 스케쥴러 및 그의스케쥴링 방법
CN101408852B (zh) * 2008-11-26 2011-09-28 阿里巴巴集团控股有限公司 一种调度任务的方法、装置和系统
US9170849B2 (en) * 2012-01-09 2015-10-27 Microsoft Technology Licensing, Llc Migration of task to different pool of resources based on task retry count during task lease
US11620477B2 (en) 2019-06-03 2023-04-04 Cerebri AI Inc. Decoupled scalable data engineering architecture
KR102307641B1 (ko) * 2021-04-30 2021-10-01 나무기술 주식회사 클라우드 운영 데이터 분석을 위한 병렬 처리 제어 시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0230721A3 (en) * 1986-01-22 1988-04-27 Mts Systems Corporation Multiprocessor control system
US5379428A (en) * 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
US5848257A (en) * 1996-09-20 1998-12-08 Bay Networks, Inc. Method and apparatus for multitasking in a computer system
JPH10143382A (ja) * 1996-11-08 1998-05-29 Hitachi Ltd 共有メモリ型マルチプロセッサシステムの資源管理方法
GB2321546B (en) * 1996-12-16 2001-03-28 Ibm Constructing a multiscalar program including a plurality of thread descriptors that each reference a next thread descriptor to be processed

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441742B1 (ko) * 2002-07-26 2004-07-23 (주)엔텔스 정보교환 버스를 이용한 프로세스간 통신 데이터 제어방법및 그 시스템
KR101084044B1 (ko) 2010-03-03 2011-11-16 서울대학교산학협력단 고화질 멀티 포맷 비디오 코덱 시스템을 위한 멀티 프로세서 플랫폼 기반 시스템

Also Published As

Publication number Publication date
AU1437400A (en) 2000-06-05
EP1131704A1 (en) 2001-09-12
EP1131704B1 (en) 2014-03-26
BR9915366A (pt) 2001-07-31
WO2000029943A1 (en) 2000-05-25
KR20010080208A (ko) 2001-08-22
JP2002530738A (ja) 2002-09-17
CA2350798A1 (en) 2000-05-25

Similar Documents

Publication Publication Date Title
KR100400165B1 (ko) 처리 시스템 스케쥴링
CN100557570C (zh) 多处理器系统
US6389446B1 (en) Multi-processor system executing a plurality of threads simultaneously and an execution method therefor
US20050022173A1 (en) Method and system for allocation of special purpose computing resources in a multiprocessor system
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
EP0969381A2 (en) Method of efficient non-virtual main memory management
US20060037017A1 (en) System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another
IL135459A (en) Thread switch control in a multi threaded processor system
CN100492282C (zh) 处理系统、通信系统及在处理系统中处理作业的方法
US20050066302A1 (en) Method and system for minimizing thread switching overheads and memory usage in multithreaded processing using floating threads
US6912712B1 (en) Real time control system for multitasking digital signal processor using ready queue
EP0362880A2 (en) Process for partially swapping real storage areas used by a program between a real storage and an auxiliary storage
Manner Hardware task/processor scheduling in a polyprocessor environment
US20080134187A1 (en) Hardware scheduled smp architectures
KR100401443B1 (ko) 이벤트를 기반으로한 시스템의 병행 처리
JPH08305671A (ja) ジョブスケジューリング方式
Bellosa Locality-information-based scheduling in shared-memory multiprocessors
JPH1078942A (ja) マルチプロセッサシステム
Ueng et al. Multi-Threaded Design for a Software Distributed Shared Memory Systems
JPH10340197A (ja) キャッシング制御方法及びマイクロコンピュータ
EP0482706A2 (en) Method for intelligent data cache prefetching, and computer for implementing this method
Bhoedjang et al. User-space solutions to thread switching overhead
Wang Parallel Discrete Event Simulation on multi-core systems
GB2284081A (en) Cache affinity scheduler
Rixner Memory system architecture for real-time multitasking systems

Legal Events

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

Payment date: 20070914

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee