KR100384086B1 - 데이터 처리 시스템 - Google Patents

데이터 처리 시스템 Download PDF

Info

Publication number
KR100384086B1
KR100384086B1 KR10-2001-7006707A KR20017006707A KR100384086B1 KR 100384086 B1 KR100384086 B1 KR 100384086B1 KR 20017006707 A KR20017006707 A KR 20017006707A KR 100384086 B1 KR100384086 B1 KR 100384086B1
Authority
KR
South Korea
Prior art keywords
processor
processors
task
perform
tools
Prior art date
Application number
KR10-2001-7006707A
Other languages
English (en)
Inventor
크리스토퍼앤드류힌슬리
Original Assignee
타오 그룹 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 타오 그룹 리미티드 filed Critical 타오 그룹 리미티드
Application granted granted Critical
Publication of KR100384086B1 publication Critical patent/KR100384086B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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 hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

데이터 처리 시스템은 특유의 자율적인 툴들을 형성하는 복수의 개별적 코드 세그먼트들을 이용하고, 이 코드 세그먼트들은 처리를 로드하거나 실행할 때에만 완전히 실행가능한 처리로 바인드된다. 이것은 처리 코드가 짧게 될 수 있게 하고 필요한 툴들이 필요한 경우에만 로컬 메모리로 들여오거나 로컬 메모리로부터 출력될 수 있게 한다. 이 시스템은 프로세서 노드들의 상호 연결된 어레이를 가질 수 있으며 노드들간에 병렬 방식으로 자동적이고 투명하게 처리들을 사용자에게 할당하여, 이용 가능한 처리 능력이 가장 효율적으로 될 수 있게 보장한다. 툴들은 상이한 하드웨어 아키텍쳐들 간에 이식을 가능하게 하는 가상 코드로 기억된다.

Description

데이터 처리 시스템{Data processing system}
본 발명은 데이터 처리 시스템과 그 데이터 처리 시스템을 동작시키기 위한 오퍼레이팅 시스템에 관한 것이다. 특히 본 발명은 컴퓨터 및 컴퓨터 네트워크들을 위한 오퍼레이팅 시스템에 관한 것이다.
컴퓨터나 컴퓨터 시스템이 기능하기 위해서는, 하나 이상의 프로세서, 입력/출력 수단, 메모리 및 각종 주변 장치들과 같은 하드웨어와, 그 하드웨어가 특정의 방식으로 실행되게 하는 오퍼레이팅 프로그램들 및 그 오퍼레이팅 프로그램에 명령하여 연산을 행하게 하는 보다 더 높은 레벨의 프로그램들의 형태의 소프트웨어를 구비해야 한다. 이용가능한 각종 프로세서들로부터 최대한의 성능을 얻고자 하는 시도로 다수의 오퍼레이팅 시스템들이 설계되었었다. 이들 오퍼레이팅 시스템들중 대다수는 하나의 특정 프로세서에 대해 특유성을 갖고 있다. 또한, 그들은 하나 또는 소수의 처리 언어를 지원할 수 있을 뿐이다.
본 발명은 병렬 동작이 가능한 복수의 프로세서들을 포함하고 가장 효율적인 방식으로 시스템 내의 개개의 프로세서들에게 수행될 처리들을 할당하는 개선된 수단을 포함하는 개선된 컴퓨터 및 컴퓨터 오퍼레이팅 시스템을 설계하고자 하는 시도로 이루어졌다.
본 발명에 따르면, 프로세서들의 랜덤한 네트워크에서 노드들로서 임의의 방식으로 서로 연결된 복수의 프로세서들을 포함하는 데이터 처리 시스템으로서, 상기 네트워크는, 태스크를 수행하도록 명령을 수신 시에 상기 네트워크내의 어떤 주어진 노드에서의 프로세서는 상기 프로세서 또는 인접 노드들중의 하나에서의 데이터 프로세서가 그 시점에서 상기 태스크를 보다 양호하게 수행할 수 있는지의 여부를 판정하고, 상기 판정은 그 시점에서 상기 태스크를 수행하기 위한 상기 프로세서 자신 또는 각 인접 프로세서의 능력들의 연속 가변 측정치들에 기초하여 이루어지고, 상기 프로세서는 상기 판정에 따라서 상기 태스크를 스스로 수행할 것인지 또는 상기 태스크를 수행하라는 명령을 그 시점에서 상기 태스크를 보다 더 양호하게 수행할 수 있는 인접 프로세서에게 패스하는, 할당 처리를 수행하도록 구성된 것을 특징으로 하는 데이터 처리 시스템이 제공된다.
바람직하게는 명령을 수신하는 프로세서는, 상기 처리를 수행하는 그것의 인접 프로세서들의 등급과 자신의 등급을 결정하고, 그 결정된 등급을 비교하여 어느 프로세서가 가장 높은 등급을 갖는지를 결정하고, 다음에 상기 인접 프로세서들중에서 가장 높은 등급을 갖는 인접 프로세서에 상기 처리를 할당하거나, 상기 프로세서가 그것의 인접 프로세서들중 특정의 프로세서와 같거나 더 높은 등급을 갖는 경우에는 상기 태스크를 자신이 수행한다. 명령을 수신하는 프로세서 및 하나 이상의 인접 프로세서들이 동일한 최상의 등급을 갖는 경우에는 그 명령을 수신하는 프로세서 자신이 그 처리를 수행한다.
한 실시예에 있어서, 각 프로세서의 등급은 그 프로세서 상에서 현재 실행중인 처리들의 수로부터 결정된다. 예컨대, 각 프로세서의 등급은 상기 프로세서에 이용가능한 오프칩 통신 속도의 함수에 의해 곱해지고 상기 프로세서에서 실행중인 처리들의 수로 나뉘어진 상기 프로세서의 초당 유효 연산 등급으로부터 결정된다. 또다른 실시예에서는, 각 프로세서의 등급은 상기 프로세서의 로컬 메모리의 이용가능한 양으로부터 결정된다. 상기 판정을 행하는 다른 방법들과 체계들이 사용될수도 있다.
도 1은 컴퓨터 시스템의 프로그램 편성을 개략적으로 도시하는 도면.
도 2는 제 1 도의 편성의 계층(hierachy)을 도시하는 도면.
도 3은 컴퓨터 시스템의 셋업(setting up)중에 다수의 관련된 마이크로프로세서들 간의 상호 관계를 도시하는 도면.
도 4는 처리중의 나중 스테이지에서의 동일 관계를 도시하는 도면.
도 5는 처리 할당에 대한 개략적인 흐름도를 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
1 : 커널 2 : 툴 오브젝트
3 : 툴 4 : 프로세서
이제 첨부 도면을 참조하여 단지 예로서 본 발명의 실시예들에 대해 설명하기로 한다.
다음의 설명은 다수의 프로세서를 갖는 컴퓨팅 네트워크에 관한 것으로서, 이들 프로세서들은 예컨대 동일 웨이퍼 또는 칩 위 등의 동일한 근접 영역내에 배열되거나, 또는 도선에 의한 배선이나, 광 파이버나, 장거리 통신 회선이나 기타 다른 수단에 의해서 링크된 네트워크내에 분산 배치될 수 있다. 상술한 시스템은 충분히 유연성이 있어서 이들 구성들 및 기타 다른 구성들 중 어느 것이나 적합하다. 대안적으로는 상기 시스템은 단 한 개의 프로세서를 포함할 수도 있다. 하나 또는 복수의 프로세서는 오퍼레이팅 시스템의 제어 하에서 연산, 프로그램 및 처리를 수행하도록 배열된다. 오퍼레이팅 시스템은 프로그램들이 가상 프로세서로서 알려져 있고 미리 규정된 자신의 언어를 갖는 상상의 프로세서용으로 기입될 수 있게 한다. 이 가상 프로세서는, 그 가상 프로세서용으로 기입된 프로그램 코드가 단지 로드 시에 각 프로세서의 고유의 코드로 번역될 뿐이므로, 특정 유형의 목표 프로세서 또는 상이한 유형들의 프로세서의 조합이 사용될 수 있게 한다. 따라서, 실행가능한 파일들은 수정이나 재컴파일(recompilation) 없이도 특정의 지원된 프로세서로 전송될 수 있다. 상기 시스템에 적합한 통상의 프로세서들은 Inmos T800 Transputer, Motorrola 680Xo, Intel 80386/80486, TM534C40 Archimedes ARM 및SUN SPARC를 포함한다. 물론 다른 프로세서들도 적합하다. 오퍼레이팅 시스템은 병렬 처리에 적합하므로, 특정의 한 시점에서 단 하나의 연산이 수행될 수 있도록 데이터 및 연산을 파이프 라인화해야 하는 종래의 컴퓨팅 시스템들과는 대조적으로 하나 이상의 연산을 동시에 행해질 수 있다. 멀티태스킹 및 멀티유저 기능도 포함된다.
그 시스템은 데이터 흐름 구동형이며, 기본적으로 로딩 시에만 완전 실행가능한 태스크에 결합(bound)되는 다수의 코드 세그먼트들이나 툴(tool)들을 포함한다. 따라서 이들 툴들 각각은 매우 짧을 수 있고 툴 자체로는 그들의 단순성에 있어서 거의 사소한 것일 수 있다. 비교를 위해 설명하자면, 종래의 컴퓨팅은 링킹으로서 알려진 어떤 한 처리의 컴파일 스테이지 직후에 라이브러리, 함수 등과 같은 루틴들을 결합한다는 것을 유의한다. 그 결과로 얻어지는 파일은 로드 시에 거의 수정이 불필요한 다량의 거대한 완전 자기 완결형의 실행가능 이미지이다. 그 파일은 프로세서들 간에 이식이 불가능하고, 적은 메모리 용량을 갖는 시스템들과 같은 구성 요소들을 변경하는 것에 쉽게 적응될 수 없다. 또한, 그의 구성 요소 부분들은 다른 태스크들에의 재사용이 불가능하거나 실제로 전혀 변경될 수 없다. 물론, 최후의 순간(적시 처리(just in time process))에 동작을 형성하도록 함께 모아져야만 되는 본 발명에 사용된 작은 구성 요소들은 완전 이식이 가능하고 또한 그 처리들이 상이한 직무를 수행하고 있는 중일지라도 둘 이상의 처리들 간에 동시에 공유될 수도 있다. 툴들은 특정 애플리케이션용으로 설계되어 있는 것들이 있거나 의식적으로 어떤 특정한 애플리케이션 없이 설계되어 있는 것들도 있다. 또한 지연 결합 처리에 있어서는, 프로그램 구성 요소들이 실행중에도 결합될 수 있다. 따라서, (공칭의) 대용량을 갖는 대형 애플리케이션들이 사실상 작은 메모리 용량의 시스템에서 실행될 수 있고, 후술되는 바와 같이 특정의 한 시점에서 요구되는 그 특정의 한 코드 세그먼트(또는 복수의 세그먼트들)만을 메모리에서 사용할 수 있도록 선택할 수 있다.
시스템에서의 데이터는 메시지의 형태로 코드 구성 요소들 간에 패스(passed)된다. 메시지를 송수신할 수 있는 한 코드 구성 요소는 하나의 처리로서 알려져 있으며, 툴들의 집합과 이들 툴들의 결합 논리 및 처리되고 있는 데이터로 구성되어 있다. 시스템은 도 1에 개략적으로 도시되어 있으며 도 1에는 프로그램 코드의 중앙 커널(kernel)이 도시되어 있다. 커널은 하나의 "블럭"이며 네트워크내의 모든 프로세서들에 의해서 사용되는 기본 오퍼레이팅 시스템이다. 통상적으로 커널은 8 내지 16 킬로바이트로 되어 있다. 커널의 외측에는 다수의 툴 오브젝트들(2)이 개략적으로 도시되어 있고 그들의 소정의 집합은 하나의 처리를 형성할 수 있다. 프로그램 코드의 제 3 레벨은 툴들(3)에 의해서 주어진다. 상기 도면에서는 통상적인 하나의 처리를 화살표로 나타내고 있다. 따라서, P1 이라고 불러야 할 하나의 처리는 커널 코드(1) 플러스 2개의 툴 오브젝트들(M1 과 M2)을 포함한다. 수 백 바이트만의 길이로 이루어질 수 있는 이들 툴 오브젝트들 각각은 하나 이상의 툴들(3)을 이용할 수 있다. 이 경우에, 툴 오브젝트(M1)는 툴들(T1, T2 및 T3)을 이용하고 툴 오브젝트(M2)는 T3(또다시), T4, T5 및 T6 을 이용한다. 따라서, 필요할 경우에만 함께 모아지는 다수의 비교적 작은 세그먼트들을 사용함으로써 비교적 복잡한 처리나 프로그램이 실행될 수 있음을 상기 도면으로부터 알 수 있다. 각각의 처리를 상이한 프로세서에 배치시킴으로써 하나 이상의 처리가 동시에 실행될 수 있다. 처리들의 실제 배치는 이하에서 개략적으로 설명되는 자동적 방법에 의해서 행하여지고, 그 자동적 방법은 사용자에게 그리고 실제로 시스템 전체에도 투명하다. 따라서 최적의 로드 균형화 및 통신 효율이 보장된다. 이 결과로서, 통신하는 다수의 처리들이 병렬로 자동 실행될 수 있다.
도 2에는 시스템의 3개의 기본적인 구성 오브젝트들이 도시되어 있다. 이들은 데이터 오브젝트, 툴 오브젝트(툴) 및 처리 오브젝트를 포함한다. 처리 오브젝트는 다양한 툴 오브젝트들을 호출하는 수단으로서 작용한다. 처리는 기본적으로 활성화도(activity)의 논리적 흐름을 지시하고 툴 오브젝트들이 데이터에 대해 작용하도록 지시한다. 따라서, 처리 오브젝트는 도 2에 도시된 계층적 구조의 상부에 있다. 툴 오브젝트는 종래의 함수 호출이나 서브루틴에 대응한다. 그것은 단지 참조로 사용될 수 있고 처리 오브젝트와 같은 그 밖의 소정의 것들에 의해 활성화되어야 한다. 이것은 C 언어의 함수가 코드의 주체(main body)에 의해 호출되는 방식과 유사하며, 중요한 차이점은 본 시스템에서 각각의 코드 세그먼트, 즉 툴이 완전히 독립적이라는 것이다. 마지막으로, 데이터 오브젝트는 데이터 파일에 대응한다. 데이터 파일은 자신에 관한 정보와 그것이 어떻게 처리될 수 있는가에 관한 정보를 포함할 수 있다. 이 정보는 예컨대 상기 파일에 관련된 로컬 데이터 및 데이터 구조를 조작하는데 사용된 툴을 지시하는 정보를 포함할 수 있다. 하나의 처리는 공개적으로 규정된 입출력, 예컨대 ASCII 데이터 스트림을 가질 수 있다. 따라서 그 처리는 저작자에 의해서만이 아니라, 제 3 자 처리에 의해서도 사용될 수 있다. 공개적으로 사용할 수 없는 처리는 사적 입출력 구조를 가질 것이고 따라서 입출력 인터페이스의 세부가 공개적으로 사용될 수 없게 되면 특정 프로그램의 저작자에 의해서만 사용이 자유롭다. 일의 완전한 직무인 하나의 애플리케이션을 형성하기 위해서 하나 이상의 처리들이 조합될 수 있다. 한 애플리케이션이 두개 이상의 프로세서들을 실행시킬 수 있음을 유의한다.
전술한 바와 같이, 애플리케이션들은 멀티태스킹 및/또는 병렬 처리될 수 있다. 처리들은 자(child) 처리들(손자(grandchild) 처리들) 등을 스스로 활성화할 수 있는 다른 처리들, 즉 자(child) 처리들을 활성화할 수 있다. 이들 처리들은 프로세서들의 사용 가능한 네트워크를 통해서 동적으로 분산화되고 그리고 프로그래머나 애플리케이션은 실제의 분산화를 알지는 못한다. 처리들 간의 통신은 모자 계층(parent-child hierarchy)에 기초하고 있다. "마스터(master)" 노드들이나 프로세서들은 그 자체로서 존재하지는 않고 소정 수의 프로세서들의 어떤 임의의 톱폴로지(topology)가 사용될 수 있다. 도 5는 네트워크 내의 상이한 프로세서들 간에 프로세서들을 분산하기 위한 하나의 가능한 알고리즘을 도시하고 있다.
모 처리(parent process)가 자 처리(child process)와 공동으로 처리하기를 원하는 경우에, 먼저 메시지가 제 1 프로세서, 특히 그 프로세서상의 커널 처리로 패스된다. 이 처리는 프로세서로부터의 메시지 및 프로세서로의 메시지를 처리하고 처리 제어/메시지 스위쳐(switcher)로서 작용한다. 이어서, "A"로 명기된 제 1 프로세서의 커널은 그 프로세서의 "파워 등급(power rating)"을 계산한다. 파워등급은 본질적으로 그 특정의 처리를 수행하기 위한 그 프로세서내의 용량이나 공간의 척도이다. 파워 등급은, 프로세서의 1초당 유효 연산 수를 그 프로세서 상에서 실행하는 처리들의 수로 나누고 그 프로세서에 이용가능한 오프 칩(off chip) 통신 속도의 함수로 곱한 프로세서의 등급으로서 규정될 수 있다. 물론 다른 파워 등급 결정 방법들이 사용될 수도 있다. 예컨대, 특정 처리를 수행하기 위한 메시지가 그 처리에 필요한 바이트 수를 수반할 것이다. 따라서, 파워 등급은 그 바이트 수가 프로세서들의 로컬 메모리내에서 이용 가능한지의 여부를 판정하는 단계를 포함할 수 있다. 이 메모리는 트랜스퓨터(transputer)와 같은 프로세서를 위한 온칩 메모리이거나, 오프 칩일 수도 있다. 다음으로, 로컬 커널은 네트워크 내의 모든 인접 프로세서의 커널에 명령하여(여기서 인접이란 토폴로지적으로(topologically) 인접하고 있는 것을 의미하며 물리적으로는 프로세서들이 멀리 떨어져 위치하고 있음을 상기한다) 그것들의 파워 등급을 계산한다. 다음에, 각 인접 프로세서들은 각각의 파워 등급을 표시하는 모 프로세서 A로 메시지를 다시 전송한다. 다음으로, A의 메일 가디안(mail guardian)은 모든 파워 등급들을 비교하고 그 자신의 파워 등급이 그의 인접 프로세서의 파워 등급보다 크거나 같은 지의 여부를 결정한다. 그리고 크거나 같은 경우에는 A의 메일 가디안은 그 처리 자체를 받아들일 것을 결정한다. 이것은 자 프로세서를 설치(install)할 것을 자신의 동적 바인더(dynamic binder)와 번역기(아래 참조)에 명령함으로써 행하여지고, 명령 프로세서에 메시지를 전송하여 수신 프로세서 상의 특유의 메일박스 어드레스를 통지한다. 프로세서 A의 파워 등급이 그의 인접 프로세서의 파워등급 이하인 경우에는 그 처리를 받아들이기 위해서 가장 큰 파워 등급을 갖는 프로세서라면 어느 것이든 선택된다. 모든 파워 등급이 동일한 경우에는 프로세서 A가 그 처리를 수용할 것이다. 대안적으로는 인접 프로세서가 임의로 선택될 수도 있다. 그 처리가 또다른 프로세서에 할당되는 경우 프로세서 A 는 "X 바이트가 필요, 처리 명, 모 메일박스 번호"를 패스하는 메시지를 그 프로세서로 전송한다.
그 자 처리를 받아들이기 위한 한 프로세서를 찾아낸 경우에는, 그 동적 처리 할당은 중단되고 그 처리가 수행될 수 있을 것이다. 그러나, 새로운 프로세서로부터 동일한 할당 시퀀스를 반복하는 것이 보다 더 일반적이다. 즉, 도 5에 도시된 흐름도에 있어서 그 선택된 새로운 프로세서인 프로세서 B는 프로세서 A로 되고 그 싸이클은 인접 프로세서들에게 그들의 파워 등급들을 계산하도록 요청하는 단계로부터 다시 시작한다. 따라서, 최소 전류 활성화도를 가지며 이에 따라서 한 처리를 자동으로 수행하는데 최대의 용량을 가지는 로컬 프로세서에 대한 검색은 원래의 마스터 모(master parent)인 중심점에서부터 흘러나오는 경향이 있다. 이것은 실질적으로 프로세서들의 네트워크 간의 로드 균형화 및 조밀하게 결합된 처리들 간의 로컬 통신들을 보증한다. 또한, 전술한 바로부터 마스터 노드(master node)가 불필요하고 특정의 네트워크에서 동일 유형인 경우 특정의 한 프로세서가 특정의 시점에서 수행할 수 있도록 통상 특정의 인접 프로세서보다 단지 하나의 처리를 더 갖는다는 것을 알 수 있다. 대안적으로는, 몇몇 실시예들에 있어서 원한다면 사용자는 어느 프로세서가 또는 어느 유형의 프로세서가 처리를 수행할 수 있는지를 선택할 수 있다. 예컨대, 네트워크가 두 유형의 프로세서를 포함하는 경우, 이들 유형중 하나는 예를 들어 메모리 용량에 의존하여 특정의 처리를 수행하는데 보다 더 적합할 수도 있다. 다음으로, 사용자는 이 처리가 특정 유형의 프로세서에 의해서 수행되어야 함을 지정할 수 있다. 또한 그 처리 및 그 프로그래머가 네트워크 내에 어디에 있는지를 정확히 알 필요가 없음을 알 수 있다. 메시지가 프로세서들 간에 데이터나 코드를 운반할 수 있으므로 메시지들이 실행가능한 코드의 형태로 될 수 있게 한다.
대안적인 실시예에 있어서, 프로세서들은 상호간에 그들의 "파워 등급"에 관한 정보를 연속적으로 전달할 수도 있다. 이것은 정상적인 통신 도중에 패스되는 메시지들에서 내장된 정보로서 패스되거나, 또는 프로세서들 간에 메시지들이 전혀 패스되고 있지 않는 기간 동안에 파워 등급 정보의 특정한 교환만 발생할 수도 있으므로, 미사용된 통신 시간을 가장 효율적으로 이용하게 한다. 다음으로, 각각의 프로세서는 예컨대 룩업 테이블(look-up table)을 구비할 수 있고, 이 룩업 테이블은 그것의 바로 인접해 있는 프로세서들의 상태와 그 자신의 당면한 상태를 제공한다. 예컨대, 파워 등급 정보는 프로세서들 간에 패스되는 각각의 일반적인 메시지의 종료 시나 개시 시에 일 바이트 또는 적은 수의 바이트의 형태로 패스될 수 있다. 이 실시예에 있어서, 하나의 처리를 수행하라는 요청을 수신하는 경우에, 프로세서는 그 처리 자체를 수용해야 할지 아니면 인접 프로세서로 그것을 넘겨주어야 할지를 즉각 판정할 수 있고, 그 중 하나를 인식할 것이다. 요청에 대해 인접 프로세서로 넘겨주어야 한다고 판정한 경우, 그 요청은 전송되고 이어서 수신 프로세서는 프로세서가 그 처리 자체를 수행하는데 가장 적합하다는 것을 판정할 때까지 그 결정 처리를 또다시 시작한다.
처리는 다음의 뚜렷한 5가지로 구분한 상태들 중의 한 상태에 있을 수 있다.
1. 활성적으로 처리중
2. 입력 대기
3. 취소
4. 비활성 상태
5. 휴면 상태
상태 1 과 2에 대해서는 해설이 불필요하므로 설명은 생략한다. 상태 3 은 하나의 처리가 취소하라는 명령을 수신했을 때 발생한다. 이 상태에서 하나의 처리는 비활성 상태로 되어야 할 필요가 있는 특정의 작용을 수행한다. 이것은 예컨대 긴급 메일 처리 단계, 만약 있다면 취소 메시지들을 그의 모든 자 처리들에게 전송하는 단계, 및 일반적으로는 비활성 상태로 될 수 있는 양호한 상태를 준비하는 단계를 포함할 수 있다. 그 처리가 애플리케이션의 상부 레벨을 형성하는 경우, 그의 정확한 현재 상태를 메시지로서 디스크 파일에 종종 저장할 것이다. 상태 4 는 효과적으로 종료되는 처리를 나타낸다. 종래의 시스템들에 있어서 이것은 메모리에서의 처리가 존재하지 않으며 그의 메모리 공간이 다음의 사용을 위해 소거됨을 의미한다. 그러나 본 발명을 따르는 시스템에서는, 처리는 비활성 상태로서 표기되지만 그의 메모리 공간이 실제적으로 불필요하다면 그리고 실제로 불필요해질 때까지 제거되지는 않는다. 따라서, 동일한 로컬 프로세서에서의 또다른 처리가 상태 4 에서의 비활성 처리를 참조하는 경우 즉각적으로 상태 2로 진행할 수있다. 상태 5 는 예컨대 디스크나 다른 기억 매체와 같은 영구 기억부내에 있는 경우의 처리 상태이다. 하나의 처리가 상태 4 에서 비활성 상태이고 그의 메모리 공간이 또다른 처리를 위해 필요하게 되는 경우, 그 처리는 상태 4 에서 상태 5 로 진행한다. 즉, 디스크 상에 기억되고 로컬 프로세서 메모리로부터 제거된다. 상태 5에서의 처리가 특정 로컬 프로세서를 위해 요구되는 경우, 그 처리는 영구 기억부로부터 로드된다. 그리고, 프로세서에 대해서 메일이 사용가능할 수 있고, 그 메일은 디스크상의 처리 상태 또는 그 처리의 자신의 헤더, 즉 그 처리의 정보 형성 부분중 어느 하나로부터의 3개의 소스들이나, 처리가 제 1 장소에 로드되게 하는 모 처리로부터의 메일로부터 취하여진다. 이것은 그 처리로 하여금 상태 4 에서 상태 2 로 그 다음에 상태 1 로 전이하게 할 수도 있다.
"디스크"라는 용어는 앞에서 소개되어 있다. 이것은 물리적 기억 매체에 기억된 데이터 오브젝트들 "파일"의 집합을 포함하는 장치이다.
전술된 바와 같이, 모든 처리는 메일박스 설비에 자동적으로 제공되며 메일을 읽고 알려진 메일 어드레스를 갖는 특정의 다른 처리로 메일을 전송할 수 있다. 이 처리는 예컨대, 자 처리, 그 처리의 모 처리, 예컨대 디스크 드라이브나 디스플레이인 어떤 명명된 자원, 전체 기억 어드레스가 알려져 있는 특정의 비활성 처리, 또는 알려진 메일박스 어드레스를 갖는 다른 어떤 처리일 수 있을 것이다. 활성적 처리가 메일을 비활성 처리로 전송하면 그 메일로 인해서 비활성 처리가 자 처리로서 실행되게 하거나, 또는 그 메일이 목표 처리가 기동될 때까지 기억될 수도 있다.
두개의 활성적 처리들 간에 패스되는 메시지는 다음의 구조를 취할 수도 있다.
# 비트수 설명
32 바이트 단위의 메시지 길이
32 메시지 유형 마스크 - 메시지의 유형
예컨대, 코드, 디버깅 정보, 에러 데이터
32 메시지 데이터 오프셋-메시지의 개시를 나타내고
그러므로 DTM(아래 참조)이 고정된 길이가 아닌
사실을 허용함
32 다음 수신지 포인터(NDP) - 응답이 보내져야 되는
어드레스를 의미함
64 발신측 메일박스
64 수신지 목표 메일박스(DTM) - 처리 ID의 리스트
64 제 2 의 DTM
.. (그 이상의 DTM들)
..
..
(XXX) 메시지 데이터
메시지 길이는 메시지의 전체 길이의 바이트 카운트이다.
다음 수신지 포인터(Next Destination Pointer, NDP)가 "0"의 수신지 목표메일박스(Destination Target Mailbox)를 가리키는 경우에 응답은 불필요하거나 또는 기대되지 않는다. 메시지들에 대한 온워드(onward) 수신지 메일박스의 어레이는 특정 메시지가 전송되어야 함을 의미하지는 않는다. 어레이에서 유효한 DTM이 존재하는 것은 메시지에 대한 응답이 그 처리로 전송되어야 함을 의미한다. 응답을 필요로 하지 않는 메시지의 간단한 경우에 있어서 DTM 어레이는 3개의 값들, 즉 발신측 처리 메일박스, 목표 처리 메일박스, 이어서 0을 포함할 것이다. 메시지를 목표 ID 0 로 전송하고자 하는 시도로 인해서 그 메시지는 시스템 메일 관리자에게 발송되게 한다. 전송자에 대한 응답을 요구하는 메시지는 4개의 값들, 즉 발신측 메일박스, 수신지 메일박스, 발신측 메일박스, 0 으로 이루어진 DTM 어레이를 가질 것이다.
데이터의 스트림을 처리하는 처리들의 파이프 라인은, 파이프에서의 처리들중의 하나로서의 최종 수신지와, 발신측 메일 박스를 포함하여, 두 개의 구성 요소들 + (처리 파이프의 수)를 갖는 DTM 어레이를 수신할 것이다.
"포크된(forked)" 파이프 체계가 가능하지만, 하나의 처리가 그 포크(fork)를 능동적으로 생성하고 가능한 또다른 처리가 나중에 그 포크를 능동적으로 결합하는 것을 필요로 한다. 단순한 선형 파이프들은 유닉스(Unix) 필터들(당업자들에게 공지되어 있음)과 유사한 방식으로 동작시키지만 병렬로 실행될 수 있고 네트워크에서 지속 가능한 재사용가능한 툴 오브젝트들만을 필요로 한다.
포크되고 결합된 메시징(forked and jointed messaging)은 간단한 입출력 필터 툴들과 함께 쉘(shell)을 사용하여 프로그램하는 경우 자동적으로 처리된다.
수신지 처리의 메모리 공간에서 일단 메시지 구조는 다음의 메시지 길이 앞에 부가되는 4개의 또다른 요소들을 갖는다.
# 비트수 설명
32 순방향 링크 포인터
32 역방향 링크 포인터
32 메시지 길이(바이트 단위)
32 메시지 유형 마스크
등등
순방향 및 역방향 링크는 만약 있다면 다른 메시지들을 가리키고, 이 다른 메시지들은 처리의 착신 메일박스에 대해서 메시지들의 링크된 리스트를 구성한다.
프로세서에 의해서 메일은 2개의 스테이지에서 판독된다. 즉, 그 메시지에 대해서 동적으로 할당된 버퍼로부터 먼저 그 메시지의 크기, 이어서 그 메시지의 나머지가 판독된다. 이 메카니즘은 메시지가 장애가 있는 노드 또는 어떤 이유로 메시지를 수신할 수 없는 커널의 주위에서 새 방향으로 돌려지게 될 수 있게 한다.
메시지들은 메일 그룹 분배기에 의해서 하나 이상의 수신지로 분배될 수 있게 된다. 처리들의 그룹에 속해 있는지를 알고 있는 특정의 처리는 그 그룹의 일원이라고 선언하는 메일 그룹 분배기로 메시지를 전송할 수 있다. 대안적으로는, 하나의 처리는 하나의 메시지를 그의 일원의 처리들 모두를 규정하는 메일 그룹 분배기로 전송할 수 있다. 일단 통보를 받으면, 메일 그룹 분배기는 모든 일원의 처리들에 그 그룹에 사용될 메일박스 ID를 통보한다. 그 그룹의 모든 일원에게 분배되는 메일은 그룹 메일 박스에 전송되고 카피(copy)들은 발신자를 제외한 모든 일원에게 전송된다. 단일의 처리는 하나 이상의 메일 그룹에 속할 수 있고 서브 그룹들이 제공될 수도 있다. 또한 다른 모든 처리들이 인식하고 있지 않아도 사적 메시지들은 한 그룹내의 처리들 사이에서 전송될 수 있다.
다음과 같은 유형의 툴들이 사용될 수도 있다. 즉, 영구적 툴(permanent tool)들은 오퍼레이팅 시스템의 핵심을 형성한다. 그들은 부트업(boot-up) 시퀀스에 의해서 활성화되고 이어서 비활성화될 수 없다. 모든 프로세서는 항상 사용가능한 각 영구 툴의 카피를 가지고 있다.
반영구적 툴들은 부트 처리에 의해서 모든 프로세서에 대해 활성화된다. 사용자는 어느 반영구 툴이 활성화될 수 있는지를 선택할 수 있다. 일단 활성화되면 그들은 비활성화될 수 없다.
라이브러리 툴들은 필요할 시에 툴들의 명명된 라이브러리로부터 이용된다. 일단 활성화되면, 그것들은 메모리 제약에 의해서 그들의 비활성화가 요구될 때까지 그들을 참조하는 애플리케이션을 실행한 특정 프로세서의 메모리에서 캐쉬된(cached) 상태로 유지된다.
애플리케이션 툴들은 가상 또는 비가상중의 하나이다. 가상인 것들은 애플리케이션이 실행중일 때 반드시 활성화 상태는 안되지만 하나의 처리가 그들을 참조하려고 시도할 때는 필요시에 활성화된다. 실행중이 아닐 때, 가상 툴은 메모리 공간이 다른 경우에 요구되지 않으면 캐쉬된 상태로 유지된다. 따라서, 사용 가능한 메모리내에 부합하지 않는 큰 애플리케이션에서의 툴들에 대해 자동적인 "오버레이(overlay)"가 사용가능하다. 비가상 툴들은 애플리케이션에 의해 로드되고 그것의 실행에 앞서 활성화된 상태에 있게 된다. 따라서 그것들은 항상 사용가능하고 실행중에는 메모리내에 있다.
네트워크내의 각각의 프로세서 또는 프로세서들의 그룹은 동적 바인더 및 번역기 "DBAT"(dynamic binder and translator)로서 알려진 영구적 툴을 포함한다. DBAT는 프로세서의 본래의 코드로 기록되고, 따라서 각각의 상이하게 지원되는 프로세서에 대해 특정 버젼의 DBAT가 필요하게 된다. DBAT는 가상 처리 코드를 프로세서의 특정 코드의 본래의 코드로 변환할 수 있다. 각각의 DBAT는 툴들의 리스트를 사용하고, 그 리스트는 영구 외부 툴 목록(permanent and external tool list; PETL)이며, 상기 PETL은 모든 영구 및 반영구 툴들(이 리스트는 모든 노드에 대해서 동일함)과, 노드에 의해 현재 참조되거나, 각각의 개별 노드에 대해서 이미 참조되고 아직 활성화 상태이거나 아직 여전히 비활성화 상태인 라이브러리들과 같은 모든 외부 툴들에 관한 정보를 포함한다. 메시지 실행을 위한 명령 수신시에 오브젝트는 그 처리의 로컬 메모리 영역내로 판독된다. 용어 프로세서는 또한 하나의 DBAT와 네트워크로 접속되어 있는 한개 이상의 프로세서를 의미하기도 한다. 그 오브젝트를 통해서 패스(pass)가 이루어진다. 그 패스에서 DBAT는 툴들을 PETL에 부가한다.
외부 툴들은 다음과 같은 방식으로 PETL에 부가된다. 즉, 툴이 이미 PETL내에 있는 경우에 그것이 사용가능한 것으로서 받아들여지거나, 또는 툴이 PETL에 존재하지 않는다면 그것은 사용가능한 툴 리스트에서 판독되고 그 사용가능한 툴 리스트내에 링크된다. 이 새로 설치된 툴이 다른 툴 참조들을 포함하고 있다면 DBAT는 이들을 같은 방식으로 반복해서 처리한다. DBAT는 모든 외부 툴들이 사용가능할 때까지 계속된다.
DBAT는 처리 및 새로 설치된 툴들의 VP 코드를 목표 프로세서에 대해 "번역"하여, 그 코드내의 툴들에 대해 포인터 정보를 삽입하여 정정한다. 미해결된 가상 툴 참조들은 TRAP으로 변환되어 툴의 완전한 경로명을 지시하는 파라미터와 함께 DBAT 내부의 가상 툴 조작자(handler)에 도달된다. 완료시에, DBAT는 그 처리에 대해 제어를 제공한다.
각각의 외부 툴은 착신 처리에 의해서 참조되므로, 그것은 그 툴이 현재 그 툴을 사용하고 있는 처리들의 수에 대한 값을 갖도록 증가된 그의 사용상황 플래그(usage flag)를 갖는다. 각각의 처리가 비활성화될 때, 그 사용상황 플래그는 감분된다. 처리가 툴을 사용하고 있지 않는 경우에는, 그 툴은 0의 사용상황 값을 가지며 PETL로부터의 제거에 의해서 비활성화될 수 있고 그의 메모리는 해방된다(released). 이것은 메모리 공간 가비지 콜렉션(garbage collection)이 발생하는 경우에만 생길 뿐이며, 시스템이 툴들을 캐쉬(cache)할 수 있게 한다. 반영구 및 영구 툴들은 1의 초기 사용상황 값으로 부트업(boot up)시에 DBAT에 의해서 설치되며, 따라서 그 툴들은 비활성화될 수 없음을 보증한다. 가상 툴들은 실행 동안에 처리에 의해서 호출된다. 가상 툴은 툴의 통상적 파라미터외에, 툴의 경로와 명칭에 대한 포인터로 참조된다.
DBAT내의 가상 툴 조작자는 툴이 이미 사용가능한지를 알아보기 위해 PETL을검사한다. 만일 사용가능하다면 그 툴은 통상의 외부 툴의 경우 처럼 사용된다. 그것이 존재하지 않는 경우에는, DBAT는 그 툴을 활성화하고(처리 개시 중에 활성화된 특정의 외부 툴의 경우와 동일한 처리), 이어서 툴 참조로 패스된다. 이것은 가비지 콜렉션이 착신 툴을 위한 충분한 메모리를 찾지 못할지라도 메모리 제약으로 인해서 장애가 발생할 수 있는 것을 제외하면 완전히 투과(transparent)된다. 이런 메모리를 보장하기 위해 가상 메모리 기술이 사용될 수 있다.
도 3 및 도 4는 동작시의 시스템을 개략적으로 도시하고 있다. 3개의 프로세서들(또는 프로세서 어레이들)(4)이 도시되어 있고, 개략적으로 중앙의 "가상" 프로세서(VP)에 '링크'되어 있다. 각 프로세서는 온칩이든 오프칩이든 총 메모리를 가지고 있다고 가정한다. 부트업 시에, 각각의 프로세서는 DBAT 와, 모든 다른 영구적 툴들(P1, ... Pn) 및 반영구적 툴들(SP1... SPm)을 취입한다. 이 상태가 도 3에 도시되어 있다. 모든 프로세서는 동일 그룹의 영구 및 반영구 툴들을 포함한다.
도 4는 나중 상태를 도시하고 있다. 한 개의 프로세서는 라이브러리 툴들(L1, L2, L3, L4)을 사용하는 처리를 수행하도록 명령받았다. 따라서 그 프로세서는 이들 툴들을 읽어들였다. 다음에, 이 프로세서는 특정 처리를 실행하도록 요구 시에 다양한 가상 또는 다른 툴들을 읽어들일 수 있다. 또다른 프로세서는 툴들(L5, L6, L7, L8)을 읽어들였다. 마지막 프로세서는 현재 어떠한 처리도 수행하지 않고 있다. 물론 두개 이상의 프로세서는 라이브러리의 카피를 로컬 메모리에 독입함으로써 동일한 라이브러리 기능을 사용할 수도 있다. 일단 하나의 처리가 종료되면, 그 라이브러리 툴들은 다시 필요해질 때까지 또는 가비지 콜렉션 때까지 각각의 로컬 메모리에 캐쉬된 채 유지된다. 물론 전술한 바와 같이 특정의 프로세서 네트워크 상에서 몇개의 처리들이 동시에 실행될 수도 있다.
VP 코드를 원래의 프로세서 코드로의 번역을 처리하는 것과 마찬가지로, DBAT는 몇몇 실시예에서 원래의 프로세서 코딩을 인식할 수 있다. 원래의 코딩을 사용하는 것은 코드의 이식성(portablility)을 방해하지만 하드웨어의 특정 툴들(통상 드라이버들)에 대한 전략으로서 수용가능하다.
하나의 처리나 툴이 VP 코드나 원래의 코드에서 코드화될 수 있고 혼합된 소스 오브젝트들이 함께 사용될 수도 있음을 유의한다. 그러나 대개 VP 및 원래 코드는 하나의 오브젝트 안에서 혼합될 수 없다. DBAT에 근거한 유틸리티는 VP 코드 입력을 수용하고 나중의 실행을 위해 원래의 코드를 출력할 것이다. 이것은 시간 임계적 애플리케이션으로 하여금 VP "소스"에서 충분히 이식가능하게 할 수 있지만 목표 시스템에 대해서 완전히 "컴파일"된다.
애플리케이션의 구속을 받지 않는 카피의 방지를 돕기 위해서, 애플리케이션은 특정 프로세서들에 근거하여 상이한 생성물들의 형성을 위해 하우스(house)에서 원래의 VP 코딩을 유지하는 원래의 코드화된 오브젝트 능력을 사용하는 것을 유지할 수 있다. 그러나, 이 특징을 사용하는 것은 애플리케이션들이 혼합된 프로세서 유형들을 갖는 병렬 시스템들 상에서 실행되는 것을 방지한다.
외부적으로 참조된 툴이 사용가능하지 않은 경우, 누락된 툴의 알려진 세부사항들과 함께 DBAT의 작용하에서 에러가 표시될 수도 있다. 이어서 사용자는 그 누락된 툴을 다른 것과 일시 교체할지 또는 또다른 것으로 영구히 대체할지의 여부를 결정할 수 있다. 툴 손실은 누락되거나 파손된 액세스 루트/경로에 의해서, 또는 예컨대 플로피디스크와 같은 제거가능형 매체가 현재 액세스 불가능한 경우에 생길 수 있다. 오브젝트는 네트워크로 이동하거나 네트워크를 이탈하게 될 수 있지만, 이것은 종종 전체 애플리케이션, 그의 모든 종속 처리들 등의 제거를 포함할 수 있다.
전술한 가상 프로세서는 이식가능한 "실행가능" 코드를 구성하는데 사용되는 상상의 프로세서이다. 전술한 바와 같이, VP 호환성인 어셈블러 및 컴파일러의 출력은 DBAT를 사용하는 극단적으로 지연 결합 시스템에 기인하는 링킹을 필요로 하지 않는다.
VP 코드에서의 "실행가능" 코드는 제어가 그 코드로 패스되기 이전에 로드시에 그의 호스트 목표 프로세서에 대해서 DBAT에 의해 처리된다. VP는 가정된 32 비트 선형 어드레스 공간을 갖는 16×32 비트 레지스터 세트를 갖지만, 16 에 국한되지는 않는다. 레지스터(RO 내지 R15)는 완전히 일반용이다. IP, 세그먼트 포인터, 플래그 등과 같은 레지스터들이 가정된다. 즉, 그들은 목표 프로세서에 의해서 필요에 따라 실행된다. VP 코드는 오퍼레이팅 원리와는 무관하게 현대적인 목표 프로세서로 "번역"하기 위해서 극히 간단하게 설계된다. 32 비트 프로세서와는 다른 워드 크기의 프로세서가 쉽게 조작될 수 있다. VP 레지스터 세트 사용상황은 최종 목표 실행가능 코드에서 제거되지 않는다. 레지스터 세트는 메모리(소위 고스트 레지스터)에서 종종 실행되고, 목표 레지스터 세트는 메모리 레지스터 상에서 VP 동작 세트를 실행하도록 요구시에 사용된다. 고유의 프로세서에 의한 VP 코딩의 이 의사 해석은 몇몇 프로세서들에 대해 약간의 속도 단점을 가질 수도 있지만, 전체적으로는 이점이 많다. 캐쉬된 메모리 또는 고속의 메모리를 갖는 프로세서들(이를테면 트랜스퓨터)은 특히 트랜스퓨터에서처럼 원래의 레지스터 세트가 매우 작은 경우에 성능을 실질적으로 향상시킬 수 있다. 나가는 태스크(outgoing task)의 레지스터 세트의 위치를 저장하기 위한 메모리 기입과 인입 태스크(incoming task)의 레지스터 위치를 재기억하기 위한 메모리 판독을 제외하면, 원래의 프로세서의 상태는 무시될 수 있기 때문에 상기와 같은 체계를 이용하면 태스크 스위칭 시간이 매우 빠르게 된다. 트랜스퓨터 아키텍쳐는 이것조차 불필요하게 만든다. 몇몇 실시예들은 VP 코딩을 원래의 코딩으로 변환하지 않는 DBAT의 간단한 버전을 가질 수도 있다. 이들은 목표 프로세서 매크로 어셈블러에 의해서 목표 실행가능형으로 컴파일되는 VP 매크로들을 사용한다. 그러나 어떤 구성들, 예컨대 툴들에 대한 참조, 오브젝트들 등은 DBAT에 의한 처리와 수정을 위해 유지된다. 산업 표준의 목표 매크로 어셈블러들은 이 변환에 완전히 적합하다.
궁극적으로 목표 프로세서상에서 실행되는 코드의 효율성은 각각 VP 컴파일러와 DBAT에 의한 컴파일과 어셈블리의 두 단계에 좌우된다. VP 출력을 그것의 최고 효율로 감소시킬 수 있는 컴파일러의 능력은 제한되지 않지만, 분명히 피프홀 최적화(peephole optimisation)가 거의 또는 전혀 발생하지 않을 수 있다. DBAT는 VP 코드의 몇몇 시퀀스들에 의해 생성될 수 있는 용장적인 원래의 레지스터/고스트(ghost) 레지스터의 이동을 없앰으로써 주로 생성된 최종 코드에 대한 피프홀 최적화를 수행한다.
트랜스퓨터에서는, VP 고스트 레지스터들이 종래의 레지스터 이용보다 같거나 더 양호한 성능의 결과를 얻을 수 있다. 고스트 레지스터들은 트랜스퓨터상의 온칩 RAM내에 배치되어, 모든 처리들의 실행에 대해 "데이터 캐쉬"를 효율적으로 생성한다. 최고 48개까지 처리들은 Inmos T800 트랜스퓨터상에서 온칩 메모리 고스트 레지스터들을 사용할 수 있다. 추가적인 처리들은 오프칩 메모리에서 공간을 필요로 한다.
상술한 시스템은 윈도우즈, 마우스 등을 사용하여 오퍼레이팅용 그래픽 유저 인터페이스를 포함할 수도 있다. 윈도우즈는 표시 수단에 대해서 대체될 수 있으며, 마우스나, 키보드 또는 기타 다른 입력 수단에 의해서 동작되거나 그들의 내용이 동작될 수 있다.
본원 발명의 데이터 처리 시스템은, 데이터 프로세서들이 공통의 코드 세그먼트 세트를 공유하고, 할당된 태스크를 실행하는데 필요한 선택된 코드 세그먼트를 해당 프로세서의 고유의 코드로 번역하는 번역기를 구비함으로써, 서로 다른 고유의 코드를 각기 갖는 다른 유형의 데이터 프로세서들이 공통의 시스템내에서 서로 연결될 수 있게 하며, 또한 각 프로세서들이 할당된 태스크를 실행하기 위해 실제 필요한 툴들 만을 선택할 수 있으므로, 태스크 실행에 필요한 툴들 만이 로컬 메모리에 로드되게 하여, 로딩 시간이 단축되고 각 프로세서에 요구되는 메모리 용량을 적게 유지할 수 있도록 함으로써, 데이터 처리 시스템이 고속으로 동작하면서도 비교적 적은 메모리 용량을 갖게 설계할 수 있는 등의 효과가 있다.

Claims (6)

  1. 프로세서들의 네트워크에서 노드들로서 서로 연결된 복수의 프로세서들을 포함하는 데이터 처리 시스템에 있어서,
    상기 네트워크는, 상기 네트워크내의 어떤 주어진 노드에서의 프로세서가 태스크를 수행하라는 명령을 수신 했을 때에 상기 프로세서 또는 인접 노드들중의 하나에 있는 데이터 프로세서가 그 시점에서 상기 태스크를 보다 양호하게 수행할 수 있는지의 여부를 판정하고, 상기 판정은 그 시점에서 상기 태스크를 수행하기 위한 상기 프로세서 자신 및 각 인접 프로세서의 능력들의 연속 가변 측정치들에 기초하여 이루어지고, 상기 판정에 따라서 상기 태스크를 스스로 수행하거나 또는 상기 태스크를 수행하라는 명령을 그 시점에서 상기 태스크를 보다 더 양호하게 수행할 수 있는 인접 프로세서에 패스하는, 할당 처리를 수행하도록 프로그램된 것을 특징으로 하는 데이터 처리 시스템.
  2. 제 1 항에 있어서,
    상기 할당 처리 동안에 상기 명령을 최초로 수신하는 프로세서는, 상기 태스크를 수행할 수 있는 자신의 능력을 나타내는 등급을 결정하고, 상기 등급을 그것의 인접 프로세서들로부터 얻어진 대응하는 등급들과 비교하여 어느 프로세서가 가장 높은 등급을 갖는지를 결정하고, 다음에 상기 인접 프로세서들중에서 가장 높은 등급을 갖는 인접 프로세서에 상기 태스크를 할당하거나, 또는 자신의 인접 프로세서들중 어떤 프로세서와 같거나 더 높은 등급을 갖는 경우에는 상기 태스크를 자신이 수행하는 데이터 처리 시스템.
  3. 제 2 항에 있어서,
    각 프로세서의 등급은 상기 프로세서 상에서 현재 실행중인 처리들의 수로부터 결정되는, 데이터 처리 시스템.
  4. 제 2 항에 있어서,
    각 프로세서의 등급은 상기 프로세서에 이용가능한 오프칩 통신 속도의 함수에 의해 곱해지고 상기 프로세서에서 실행중인 처리들의 수로 나눈 상기 프로세서의 초당 유효 연산들 등급으로부터 결정되는 데이터 처리 시스템.
  5. 제 2 항에 있어서,
    각 프로세서의 등급은 상기 프로세서의 로컬 메모리의 이용가능한 양으로부터 결정되는, 데이터 처리 시스템.
  6. 제 1 항 내지 제 5 항중 어느 한 항에 있어서,
    상기 명령이 인접 프로세서들중의 하나로 패스되는 경우에, 상기 프로세서 자신은, 그것의 인접 프로세서들중의 하나 또는 상기 프로세서가 그 시점에서 상기태스크를 훨씬 더 양호하게 수행할 수 있는지의 여부를 판정하고, 상기 판정에 따라서 상기 태스크를 자신이 수행하거나 인접 프로세서가 보다 더 양호한 등급을 갖는 경우에 그 인접 프로세서에게 상기 태스크를 또다시 재할당하는 할당 처리를 반복하는, 데이터 처리 시스템.
KR10-2001-7006707A 1992-10-30 1993-07-01 데이터 처리 시스템 KR100384086B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9222799A GB2272085A (en) 1992-10-30 1992-10-30 Data processing system and operating system.
GB9222799.0 1992-10-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1019950701769A Division KR100419108B1 (ko) 1992-10-30 1993-07-01 데이터처리시스템

Publications (1)

Publication Number Publication Date
KR100384086B1 true KR100384086B1 (ko) 2003-05-16

Family

ID=10724294

Family Applications (3)

Application Number Title Priority Date Filing Date
KR10-2001-7006707A KR100384086B1 (ko) 1992-10-30 1993-07-01 데이터 처리 시스템
KR1019950701769A KR100419108B1 (ko) 1992-10-30 1993-07-01 데이터처리시스템
KR10-2001-7006706A KR100384085B1 (ko) 1992-10-30 1993-07-01 데이터 처리 시스템

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1019950701769A KR100419108B1 (ko) 1992-10-30 1993-07-01 데이터처리시스템
KR10-2001-7006706A KR100384085B1 (ko) 1992-10-30 1993-07-01 데이터 처리 시스템

Country Status (11)

Country Link
US (1) US5930511A (ko)
EP (3) EP0756232B1 (ko)
JP (2) JP3722156B2 (ko)
KR (3) KR100384086B1 (ko)
AU (3) AU679686B2 (ko)
CA (2) CA2358010C (ko)
DE (3) DE69327739T2 (ko)
GB (4) GB2272085A (ko)
HK (3) HK1005476A1 (ko)
SG (3) SG34219A1 (ko)
WO (1) WO1994010628A1 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7035906B1 (en) 1996-11-29 2006-04-25 Ellis Iii Frampton E Global network computers
US7634529B2 (en) 1996-11-29 2009-12-15 Ellis Iii Frampton E Personal and server computers having microchips with multiple processing units and internal firewalls
US20050180095A1 (en) * 1996-11-29 2005-08-18 Ellis Frampton E. Global network computers
US7506020B2 (en) 1996-11-29 2009-03-17 Frampton E Ellis Global network computers
US8312529B2 (en) 1996-11-29 2012-11-13 Ellis Frampton E Global network computers
US6732141B2 (en) 1996-11-29 2004-05-04 Frampton Erroll Ellis Commercial distributed processing by personal computers over the internet
US6167428A (en) * 1996-11-29 2000-12-26 Ellis; Frampton E. Personal computer microprocessor firewalls for internet distributed processing
US6725250B1 (en) 1996-11-29 2004-04-20 Ellis, Iii Frampton E. Global network computers
US8225003B2 (en) 1996-11-29 2012-07-17 Ellis Iii Frampton E Computers and microchips with a portion protected by an internal hardware firewall
US7926097B2 (en) 1996-11-29 2011-04-12 Ellis Iii Frampton E Computer or microchip protected from the internet by internal hardware
US7805756B2 (en) * 1996-11-29 2010-09-28 Frampton E Ellis Microchips with inner firewalls, faraday cages, and/or photovoltaic cells
US7024449B1 (en) 1996-11-29 2006-04-04 Ellis Iii Frampton E Global network computers
US6934945B1 (en) 1997-03-14 2005-08-23 Cardsoft, Inc. Method and apparatus for controlling communications
US5925102A (en) * 1997-03-28 1999-07-20 International Business Machines Corporation Managing processor resources in a multisystem environment in order to provide smooth real-time data streams, while enabling other types of applications to be processed concurrently
US6134216A (en) * 1997-10-29 2000-10-17 Lucent Technologies Inc. Integrated overload control for overload control for distributed real time systems
AU1728900A (en) * 1998-11-18 2000-06-05 Johns Hopkins University, The Enhanced virtual executor
US6728961B1 (en) * 1999-03-31 2004-04-27 International Business Machines Corporation Method and system for dynamically load balancing a process over a plurality of peer machines
US7043725B1 (en) * 1999-07-09 2006-05-09 Hewlett-Packard Development Company, L.P. Two tier arrangement for threads support in a virtual machine
GB9920676D0 (en) * 1999-09-01 1999-11-03 Tao Group Ltd Translating and executing object-oriented computer programs
US6532538B1 (en) * 2000-02-17 2003-03-11 International Business Machines Corporation Method and system for supporting multiple operating systems on the same disk running on different computers at the same time
GB0011974D0 (en) * 2000-05-19 2000-07-05 Smith Neale B rocessor with load balancing
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
AU2001294677A1 (en) * 2000-09-22 2002-04-02 Patchlink.Com Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
JP4123712B2 (ja) * 2000-11-27 2008-07-23 株式会社日立製作所 通信処理方法ならびに通信処理プログラムが記録される記録媒体
US7398216B2 (en) * 2000-12-12 2008-07-08 Lockheed Martin Corporation Network dynamic service availability
US6922832B2 (en) * 2000-12-12 2005-07-26 Lockheed Martin Corporation Execution of dynamic services in a flexible architecture for e-commerce
JP2005031771A (ja) * 2003-07-08 2005-02-03 Hitachi Ltd ジョブスケジューリング管理方法及びシステム並びにプログラム
US7032053B2 (en) * 2003-08-14 2006-04-18 International Business Machines Corporation System and method for loading, executing, and adapting a portable running operation system from a removable module to multiple computer systems
US20060095898A1 (en) * 2004-10-28 2006-05-04 International Business Machines Corporation Method for integrating multiple object files from heterogeneous architectures into a set of files
US7554909B2 (en) * 2005-03-21 2009-06-30 Intel Corporation Dynamic service management for multicore processors
CN101198930B (zh) * 2005-04-13 2011-07-27 艾利森电话股份有限公司 用于支持计算机系统中的数据值一致性的系统和方法
JP4781089B2 (ja) * 2005-11-15 2011-09-28 株式会社ソニー・コンピュータエンタテインメント タスク割り当て方法およびタスク割り当て装置
US8924467B2 (en) 2005-12-28 2014-12-30 International Business Machines Corporation Load distribution in client server system
US8125796B2 (en) 2007-11-21 2012-02-28 Frampton E. Ellis Devices with faraday cages and internal flexibility sipes
US8184335B2 (en) * 2008-03-25 2012-05-22 Xerox Corporation Method for ad-hoc parallel processing in a distributed environment
US8224955B2 (en) 2009-05-07 2012-07-17 International Business Machines Corporation Ensuring affinity at all affinity domains by folding at each affinity level possible for a partition spanning multiple nodes
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics
US8819686B2 (en) * 2009-07-23 2014-08-26 Empire Technology Development Llc Scheduling threads on different processor cores based on memory temperature
US8429735B2 (en) 2010-01-26 2013-04-23 Frampton E. Ellis Method of using one or more secure private networks to actively configure the hardware of a computer or microchip
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
WO2012093488A1 (ja) * 2011-01-07 2012-07-12 富士通株式会社 スケジューリング方法、およびマルチコアプロセッサシステム
US9852000B2 (en) * 2013-08-27 2017-12-26 Empire Technology Development Llc Consolidating operations associated with a plurality of host devices
US10901415B1 (en) 2015-05-26 2021-01-26 Waymo Llc Non-passenger requests for autonomous vehicles
US9368026B1 (en) 2015-05-26 2016-06-14 Google Inc. Fallback requests for autonomous vehicles
US10454872B2 (en) * 2015-06-22 2019-10-22 Microsoft Technology Licensing, Llc Group email management
US10332320B2 (en) 2017-04-17 2019-06-25 Intel Corporation Autonomous vehicle advanced sensing and response
EP3462313A1 (de) * 2017-09-27 2019-04-03 Siemens Aktiengesellschaft Verfahren und verteiltes datenbanksystem zum rechnergestützten ausführen eines programmcodes
US10725834B2 (en) 2017-11-30 2020-07-28 International Business Machines Corporation Job scheduling based on node and application characteristics

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016283A (en) * 1982-10-15 1984-04-19 General Electric Company, Plc, The Plural data processing units
JPH0778785B2 (ja) * 1986-03-29 1995-08-23 株式会社東芝 プロセッサ選択方法
JPH01263734A (ja) * 1988-04-08 1989-10-20 Internatl Business Mach Corp <Ibm> マルチ・タスク環境における動的リンク識別子供給方法
DE4007998A1 (de) * 1989-03-13 1990-09-20 Hitachi Ltd Prozess-planungsverfahren und mehrfach-rechner
CA2025160A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5276881A (en) * 1990-06-25 1994-01-04 Hewlett-Packard Company ANDF producer using the HPcode-Plus compiler intermediate language
JP3203701B2 (ja) * 1990-11-01 2001-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コードセグメントのリンク方法とそのシステム及びコードセグメントのダイナミックリンク方法
US5297285A (en) * 1991-07-23 1994-03-22 Telefonaktiebolaget L M Ericsson System for dynamically linking modular portions of computer software
US5649204A (en) * 1991-08-22 1997-07-15 Rec Software, Inc. Method and apparatus for consolidating software module linkage information used for starting a multi-module program
US5301326A (en) * 1991-09-24 1994-04-05 Microsoft Corporation Method and system for controlling the execution of an application program
IL99923A0 (en) * 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5359721A (en) * 1991-12-18 1994-10-25 Sun Microsystems, Inc. Non-supervisor mode cross address space dynamic linking
AU3650693A (en) * 1992-03-09 1993-10-05 Ian Chester Distributed processing system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Proceedings of the 1986 International Conference on Parallel Processing, Pages 519-527, IL, USA, Aug.19.1986 *

Also Published As

Publication number Publication date
EP0756233A1 (en) 1997-01-29
GB9506109D0 (en) 1995-05-31
SG52857A1 (en) 1998-09-28
GB9222799D0 (en) 1992-12-09
SG42445A1 (en) 1997-08-15
GB9523209D0 (en) 1996-01-17
AU6203696A (en) 1996-10-10
SG34219A1 (en) 1996-12-06
AU676815B2 (en) 1997-03-20
CA2358010A1 (en) 1994-05-11
AU679686B2 (en) 1997-07-10
JP2006031721A (ja) 2006-02-02
HK1005474A1 (en) 1999-01-08
EP0667011A1 (en) 1995-08-16
GB2293674B (en) 1996-08-14
DE69327739T2 (de) 2000-09-28
GB9523109D0 (en) 1996-01-10
KR100384085B1 (ko) 2003-05-16
GB2272085A (en) 1994-05-04
EP0667011B1 (en) 1997-04-09
AU676816B2 (en) 1997-03-20
WO1994010628A1 (en) 1994-05-11
US5930511A (en) 1999-07-27
DE69322887D1 (de) 1999-02-11
CA2146672C (en) 2002-02-05
GB2293675A (en) 1996-04-03
DE69309704T2 (de) 1997-10-30
GB2286269B (en) 1996-06-12
EP0756232B1 (en) 2000-01-26
CA2146672A1 (en) 1994-05-11
HK1005475A1 (en) 1999-01-08
AU4508093A (en) 1994-05-24
KR950704737A (ko) 1995-11-20
GB2293675B (en) 1996-08-14
DE69309704D1 (de) 1997-05-15
EP0756232A1 (en) 1997-01-29
KR100419108B1 (ko) 2004-05-20
EP0756233B1 (en) 1998-12-30
AU6203796A (en) 1996-10-10
GB2286269A (en) 1995-08-09
HK1005476A1 (en) 1999-01-08
DE69327739D1 (de) 2000-03-02
JP3722156B2 (ja) 2005-11-30
JPH08502612A (ja) 1996-03-19
GB2293674A (en) 1996-04-03
CA2358010C (en) 2002-04-30
DE69322887T2 (de) 1999-05-27

Similar Documents

Publication Publication Date Title
KR100384086B1 (ko) 데이터 처리 시스템
US6078945A (en) Operating system for use with computer networks incorporating two or more data processors linked together for parallel processing and incorporating improved dynamic load-sharing techniques
US8281311B2 (en) Executing a distributed software application on a plurality of compute nodes according to a compilation history
US5355492A (en) System for compiling parallel communications instructions including their embedded data transfer information
US5226131A (en) Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer
US20090271784A1 (en) Executing A Distributed Java Application On A Plurality Of Compute Nodes
Lee et al. Issues in dataflow computing
US7032103B2 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
US5515535A (en) System and method for parallel variable optimization
Takesue A unified resource management and execution control mechanism for data flow machines
Kesseler The implementation of functional languages on parallel machines with distributed memory
JP3241214B2 (ja) 分散処理装置及びプロセス実行方法
JPH11316692A (ja) データ処理システム
Saphir Message Buffering and its effect on the Communication Performance of Parallel Computers
Büttner et al. ARTS of PEACE—A high-performance middleware layer for parallel distributed computing
JPH10187468A (ja) 並列分散処理システムおよびその方法
Boku et al. INSPIRE: A general purpose network simulator generating system for massively parallel processors
Shekhar et al. Linda sub system on transputers
JP2001134446A (ja) メモリ割り付け最適化システム、方法、及び記録媒体
Bi Towards abstraction of message passing programming
Tew et al. Distributed Places
Hinrichs PCS+ Tool Chain User’s Guide Version 3.0
Hempel ‘The ANL/GMD Macros (PARMACS) in Fortran for Portable Parallel Programming using the Message Passing Programming Model
JPH0358123A (ja) 分散型制御システム
Kodama et al. EM-C: Programming with Explicit Parallelism and Locality for the EM-4 Multiprocessor

Legal Events

Date Code Title Description
A107 Divisional application of patent
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: 20061025

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee