KR960012654B1 - 초대형 컴퓨터 - Google Patents

초대형 컴퓨터 Download PDF

Info

Publication number
KR960012654B1
KR960012654B1 KR1019870009566A KR870009566A KR960012654B1 KR 960012654 B1 KR960012654 B1 KR 960012654B1 KR 1019870009566 A KR1019870009566 A KR 1019870009566A KR 870009566 A KR870009566 A KR 870009566A KR 960012654 B1 KR960012654 B1 KR 960012654B1
Authority
KR
South Korea
Prior art keywords
processor
gate
signal
output
input
Prior art date
Application number
KR1019870009566A
Other languages
English (en)
Other versions
KR880003237A (ko
Inventor
다니엘 힐리스 더불유.
Original Assignee
씽킹 머쉰즈 코퍼레이션
쉬릴 핸들러
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 씽킹 머쉰즈 코퍼레이션, 쉬릴 핸들러 filed Critical 씽킹 머쉰즈 코퍼레이션
Publication of KR880003237A publication Critical patent/KR880003237A/ko
Application granted granted Critical
Publication of KR960012654B1 publication Critical patent/KR960012654B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/803Three-dimensional arrays or hypercubes
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation

Abstract

요약 없음.

Description

초대형 컴퓨터
제1도는 종래의 병렬 프로세서의 도식적 다이아그램.
제2도는 제1도의 병렬 프로세서의 경로배정회로의 도식적 다이아그램.
제3도는 본 발명의 선호된 실시예의 일반적 도식 다이아그램.
제4도는 본 발명의 프로세서 유니트의 도식적 다이아그램.
제5도와 제6도는 제4도의 프로세서 유니트를 평행 프로세서 배열로 하는 구조를 묘사하는 도식적 설명도.
제7도는 제4도의 프로세서 유니트의 요소를 설명하는 도식적 상세 다이아그램.
제8-12도는 제7도의 요소의 도식적 상세 다이아그램.
제13도의 본 발명의 선호된 실시예를 위한 번지 지정계획의 설명도.
제14도는 본 발명의 부분을 이해하는데 유용한 도식적 설명도.
* 도면의 주요부분에 대한 부호의 설명
10 : 컴퓨터20 : 마이크로컨트롤러
35 : 병렬처리 직접회로40 : 데이타소오스
36 : 프로세서/메모리50 : 멀티플렉스/디멀티플렉스
60, 65, 70, 75 : 버스컨트롤회로90 : 데이타싱크
180 : 통신접속 유니트200 : 경로배정회로
250 : RAM280 : 산술논리 유니트(ALU)
290 : 플랙컨트롤러292 : 플랙레지스터
140 : 타이밍 제너레이터210 : 메시지디덱터
215 : 버퍼 및 어드레스회복기220 : 메시지엔젝터
310 : 터미널320 : LAN
330 : 프로세서배열400 : 경로배정논리셀
410 : 공통출력버스420 : 처리 및 저장수단
430 : 자기-검색회로425 : 패스트랜지스터
440 : 클락회로350 : 마이크로프로세서
450 : 인식회로360 : 기능회로
370 : 메모리460 : 성능측정회로
470 : 대량저장모듈480 : 표준디스크 컨트롤러
500 : 케비넷505 : 통신모듈
510 : 어드레스맵퍼520 : 메모리접속장치
540 : 데이타캐쉬(data cache)550 : 에러교정기
530 : 가상프로세서시이퀀스560 : 알파루터
570 : 베타루터580 : 인터셉터
590 : 오더캐쉬(order cache)625 : 페이지테이블
610 : 은-셋트 레지스터660 : 회복계수기
665 : 횡열수레지스터670 : 멀티플렉서
675 : 비교기680 : 문맥레지스터
685 : 스택레지스터690 : 톱레지스터
695 :테스크레지스터705 : 상태레지스터
760 : 에러제어회로770, 780 : 배타적-OR게이트
775 : 디코더830, 840 : 멀티플렉서
832, 834, 842 : 플립-플롭
본 발명은 대규모 병렬 프로세서에 관한 것으로, 특히 '400특허에 처음 발표된 방법과 장치의 개량에 관한 것이다.
제1도에서 재생된 '400특허의 제1A도에서 도시된 바와같이, 발표된 이들 컴퓨터 시스템은 메인프레임 컴퓨터(10), 마이크로 컨트롤러(20), 병렬처리직접회로(35)의 배열(30), 데이타소오스(40), 제1버퍼와 멀티플렉스/디멀티플렉스(50), 제1, 제2, 제3 및 제4양방향 버스컨트롤회로(60, 65, 70, 75), 제2버퍼 및 멀티플렉스/디멀티플렉스(80) 및 데이타싱크(90)를 포함한다. 메인프레임 컴퓨터(10)는 적절하게 프로그램된 시중구입 가능한 병용 컴퓨터, 이를테면 Digital Equipment Corp.에 의해 제조된 VAX(TM) 컴퓨터 같은 것을 사용할 수 있다. 마이크로 컨트롤러(20)는 32비트 평행버스(22)에 의해 배열(30)에 공급되는 명령순서로 발생시키기 위해 통상적으로 설계된 명령순서 발생기이다. 마이크로프로세서(20)는 배열(30)으로부터 라인(26)상의 신호를 받아들인다.
이 신호는 데이타출력과 상황정보를 위해 사용될 수 있는 일반 목적 혹은 전역신호(GLOBAL Signal)이다. 버스(22)와 라인(26)은 각 IC 35에 병렬로 연결된다. 결과적으로, 마이크로 컨트롤러(20)으로부터의 신호는 배열(30)내의 각 IC 35에 동시에 공급되고 마이크로 컨트롤러(20)에 공급되는 라인(26)상의 신호는 배열의 IC 35의 전부로부터 신호출력을 복합함에 의해 형성된다.
배열(30)은 수천개의 동일한 IC 35를 내장하고 ; 각 IC 35는 여러개의 동일한 프로세서/메모리(36)를 내장하고 있다. '400특허에서 발표된 실시예에서, 상기 배열은 최대 32,768(=215)의 동일한 IC 35를 내장하고, 각 IC 35는 32(=25)의 동일한 프로세서/메모리 36을 가지게 됨을 표시하고 있다. 특허에 대한 이 응용의 만족시, 각기 16(=24)의 동일한 프로세서/메모리를 가진 최대 4096(=212)의 동일한 IC 35를 가지는 배열이 제조되었고 컨넥션머신(TM) 컴퓨터로 양수인에 의해 선적되었다.
프로세서/메모리(36)는 두개의 지역으로 구성되고 상호연결된다. 한지역은 통상의 2-차원 그리드 패턴이어서 이속에 프로세서/메모리가 사각배열로 조직되고 배열내에서 그들의 4개의 가장 인접한 이웃에 연결된다. 편의상 이들 배열의 측부는 북쪽, 동쪽, 남쪽 및 서쪽으로 구분한다. 각 프로세서/메모리를 그의 사방 가까운 이웃에 연결하기 위해 개개의 프로세서/메모리는 그리드의 각 열과 각 행으로 인접 프로세서/메모리 사이의 전기 도체에 의해 연결된다.
제2지역을 15차원의 부울 n-제곱의 배열이다. n-제곱 배열을 이해하기 위해서는 IC들을 0에서 32,767수를 매기고 이들 숫자 혹은 번지를 열다섯 2진수를 사용하여 2진수 표시하는 것이 도움이 된다. 우리가 물체의 위치를 2차원 그리드에 두개의 수를 사용함에 의해 하나의 수가 2차원 그리드의 제1좌측 위치에 명시하고 다른수는 제2차측 위치에 명시함에 의해 명확히 할 수 있듯이, 우리는 부울 15-제곱의 15차원의 각각에서 하나의 IC의 위치를 인지하는데 수를 사용할 수 있다. 그러나 n-제곱에서는 하나의 IC가 각 차원에서 오직 두개의 다른 위치 0과 1중 하나를 가진다. 따라서, 2진수 표시법에서의 15진수 IC 번지는 n-차원의 15차원에서의 IC 위치일 수 있고 이를 명시하기 위해 사용된다.
더구나, 2진수는 오직 두개의 값, 영과 일만을 가질 수 있기 때문에, 또 IC가 유일하게 15개의 2진수에 의해 인식되기 때문에 각 IC가 그의 소유번지로부터의 오직 하나의 진수만큼 다른 2진수인 다른 15IC를 가진다. 우리는 2진수 번지가 제11C의 가장 가까운 이웃으로 제11C의 2진수에 하나만 다른 이들 15IC를 참조하게 될 것이다. 햄밍길이(hamming distance)의 수학적 정의에 정통한 이들은 제11C가 햄밍거리 하나에 의해 그의 가장 가까운 15이웃의 각각으로부터 분리됨을 인식할 것이다.
부울 15-제곱의 형태의 상기 참조된 응용의 IC 35를 연결하기 위해 각 IC는 15입력라인(38)과 15출력라인(39)에 의해 그의 가장 가까운 15이웃에 연결된다. 이들 각 IC(35)에 연결된 15입력라인(38)의 각각은 부울 15제곱의 15차원중 다른 하나와 조합되고 비슷하게 각 IC 35로부터의 15출력라인(39)의 각각은 다른 차원과도 조합된다.
부울 15제곱의 상호연결 패턴을 통하여 연결되도록 하기 위하여 계산 결과가 멧시지 포켓형태로 조직된다 ; 이들 포켓은 하나의 IC로부터 다음 것으로 포켓의 부분인 번지정보를 따라 각 IC에 경로배정회로에 의해 선로전송된다.
도시된 프로세서/메모리(36)는 '400특허의 제7A도에 더 상세히 발표되어 있다. 제7A도에서 도시된 바와 같이 프로세서/메모리는 32×12비트 임의 접근 메모리(RAM)(250), 산술논리 유니트(ALU)(280) 및 플랙컨트롤러(290)를 포함한다. ALU는 3개의 소오스, 램내의 두개의 레지스터와 하나의 플랙입력으로부터의 데이타를 기초로 하여 작동하여 두개의 출력 RAM 레지스터에 쓰여질 합출력과 플랙 컨트롤러내의 특정 레지스터와 특정한 다른 프로세서/메모리에 유용하도록 만들어진 올림수출력(carry output)을 만든다.
램(RAM)(250)에 가는 입력은 어드레스버스(152, 154, 156, 158), ALU(270)으로부터의 합출력라인(285), '400특허의 제6B도의 통신접속 유니트(CIU)(180)으로부터의 메시지 패키트 입력라인(message packet input line)(122)와 플랙 컨트롤러(290)으로부터의 기록가능라인(WRITE ENABLE line)(298)이다.
RAM(250)으로부터의 출력은 라인(256, 257)이다. 라인(256, 257)상의 신호는 RAM(250)내의 두 상이한 레지스터의 같은 칼럼으로부터 얻어진다. 이들 레지스터는 레지스터 A와 다른 레지스터 B로 설계된다. 버스(152, 154, 156, 158)를 마이크로 컨트롤러(20)으로부터의 명령문에 따라 이들 레지스터와 이속의 칼럼의 번지를 정한다.
ALU(280)의 여덟개의 디코더(282)중 하나, 합출력 셀렉터(284)와 올림수 출력 셀렉터(286)을 포함한다. '400특허에서 상세히 설명된 바와같이, 이는 ALU가 ADD, 논리 OR 및 논리 AND를 포함하는 많은 기능을 위해 합 및 올림수 출력을 만드는 것이 가능하게 한다. ALU(280)은 한번에 3개의 비트, RAM(250)내의 레지스터 A와 B로부터의 라인(256, 257)상의 둘과 플랙 컨트롤러(290)으로부터 오는 라인(296)상의 하나를 기초로 하여 작동한다. ALU는 두출력을 가진다 ; 하나는 RAM(250)의 레지스터 A에 씌어지는 라인(285)상의 합이고, 다른 하나는 플랙 레지스터(292)에 휘어지고, 다른 프로세서/메모리(36)의 북쪽, 동쪽, 남쪽, 서쪽과 데이지 입력에 공급되는 라인(287)상의 캐리(carry)이다. 상기에서 다른 프로세서/메모리 이 프로세서/메모리가 연결되어 있다. 캐리라인(287)상의 신호는 또한 메시지 패키트 출력라인(123)을 통하여 통신접속 유니트(180)에 공급된다.
또한 각 집적회로(35)는 IC 상의 프로세서/메모리를 위한 일정한 감독회로를 IC를 그의 가장 가까운 이웃 IC에 부울 n-제곱상태로 연결하기 위한 경로배정회로(200)를 포함한다.
'400특허에서 발표한 바와같이, 감독회로는 타이밍 제너 레이터(timing generator)(140), 마이크로 컨트롤러(20)으로부터 받은 명령을 해독하여 해독된 명령을 IC의 프로세서/메모리에 공급하기 위한 프로그램 가능한 논리배열(150)과 IC의 프로세서/메모리와 상기 IC와 조합된 경로배정회로 사이에서 나가고 들어가는 메시지 패키지의 흐름을 제어하는 통신 접속장치(180)를 포함한다.
경로배정회로(200)는 부울 n-제곱의 가장 가까운 이웃 IC로부터 또 IC로 메시지 패키트의 경로배정을 제어한다. 이 회로를 통하여 메시지 패키트는 부울 n-제곱의 어느 IC로부터 어느 다른 IC로 경로배정될 수 있다. '400특허의 제6B도에서 도시된 바와같이 회로(200)는 라인배정기(205), 메시지 디덱터(210), 버퍼 및 어드레스 회복기(215)와 메시지 인젝터(220)를 루프상태로 이 순서로 연결시켜 한 요소의 출력이 다음 요소의 입력으로 되게 하고 메시지 인젝터(220)의 출력이 라인배정기(line assigner)(205)에 공급되도록 함을 포함한다. 라인배정기(205)는 실질적으로 동일한 경로지정 논리 쉘 400의 15개씩의 나란한 배열을 포함한다. 이 배열의 각 종열(columm)은 부울 15-제곱의 한차원에서 가장 가까운 이웃 경로배정회로(200) 사이의 메시지 패키트의 흐름을 제어한다. 이 배열의 각 횡열(row)은 경로배정회로(200)내의 한 메시지 패키트에 저장을 제어한다. 경로배정회로(routing circuit)의 메시지 디덱터(message detector)(210)이 특별한 경로배정회로와 관련되어 프로세서/메모리에 번지지정된 메시지 패키트를 통신 접속 유니트(CIU)(180)에 공급한다 ; 메시지 인젝터(220)는 CIU(180)으로부터의 메시지 패키트를 경로배정회로에서 순환하는 메시지 패키트의 그룹으로 주사한다.
'400특허의 제11도에서 9개의 이러한 경로배정논리셀(400)이 도시되어 있다. 이는 여기서 제2도로 재생되었다. 왼편 종열의 3개의 셀(cell)을 첫번째 차원과 조합되었고, 중간 종열의 3개의 두번째 차원과 조합되었으며, 오른편의 종열 3개는 15번째 차원과 조합된다. 셀의 각 종열은 그의 차원과 조합된 출력라인(39)에 연결된 출력버스(410)을 가진다. 횡열에 관하여서는 바닥횡열의 3개의 셀은 배열에서 가장 낮은 셀이고 입력배관(38)으로부터 입력을 받아들인다. 상부 3개 셀은 배열에서 최상부 셀들이다. 중간의 3개의 셀은 바닥과 상부 사이의 모든 셀을 대표한다. 그러나 도시된 바와같이 바닥 횡열에 연결되었다.
제2도에서는 3개의 처리 및 저장수단(420)이 도시되었고, 이들은 메시지 디덱터(210)의 부분, 버퍼 및 어드레스 회복기(215)의 경로배정회로(200)의 메시지 인젝터(220)를 나타내어 라인배정기(205)내에 셀(400)의 해당 3횡열으로부터의 메시지를 처리하고 저장한다.
만일 경로배정 충돌이 일어나지 않으면 메시지 패키트는 첫번째 차원의 경로배정셀로 가는 입력으로부터 메시지 싸이클중 번지가 지정되는 프로세서/메모리내의 레지스터에 경로배정되게 될 것이다.
만일 경로배정 충돌이 있다면, 메시지 패키트는 하나 이상의 중간점에서 경로배정회로의 처리 및 저장수단에 일시적으로 저장되게 된다 ; 하나 이상의 경로배정싸이클이 메시지 패키트를 그에 목적지로 경로배정하는데 필요하게 될 것이다.
제2도는 각 경로배정셀(400)의 입력과 출력단자와 편리한 요약체를 구비한다. 바닥 횡열을 따라 3개의 셀(400)에 의해 도시된 바와같이 부울 15-제곱의 상이한 차원으로부터의 메시지 패키트는 NAND 게이트(405)에 공급된다. 이들 게이트는 리셋트상태중을 제외한 모든 시간에 사용될 수 있다. 거꾸로된 메시지 패키트인 각 NAND 게이트(405)의 출력은 최하부 횡열의 셀(400)중 하나의 입력단자 L-in에 공급된다. 단자 L-in에 메시지 패키트가 있음을 나타내는 신호는 또한 같은 셀의 입력단자 L-in에 공급된다. 바닥횡열의 각 셀에 대해 이 메시지 존재 신호는 셀에 받아들여진 메시지 패키트의 계속 처리를 위한 바닥횡열내의 다음 종열에 셀을 조정하는 효과를 가지는 접지에 잡힌다. 셀로 가는 압력에 메시지 패키트의 존재를 나타내는 이러한 메시지 존재신호는 메시지 패키트를 위한 회로(200)를 통과하는 데이타 통로를 설정하기 위해 경로배정회로(200) 전체가 사용된다.
라인(38)중 하나로부터 받은 메시지 패키트는 단자 M-OUT으로부터 한 종열내의 가장 낮은 셀(400)으로부터 경로 배정되어 그의 바로 오른쪽에 있는 종열내의 셀(400)의 단자 M-IN에 공급된다. 동시에 메시지 존재신호는 바로 오른쪽에 있는 셀의 단자 MP-IN으로 단자 MP-OUT으로부터 경로배정된다.
모든 셀(400)의 M-IN 단자에서 받은 신호는 어떤 다른 신호가 회로망에 있는가에 따라 버스단자, U-OUT 단자 혹은 M-OUT 단자중 어느 하나상의 셀로부터 경로배정되게 한다. 한 종열내의 모든 셀(400)의 BUS 단자는 출력라인(39)에 가는 NOR 게이트(415)를 통하여 부울 n-제곱의 차원인 가장 가까운 이웃 셀로 연결되는 공통 출력버스(410)에 연결된다. NOR 게이트(415)로 가는 다른 입력은 타이밍 신호 t-INV-OUT-n이다. 여기서 n은 차원의 수이다. 이 타이밍 신호는 메시지 패키트내의 이중 어드레스의 적절한 어드레스 비트를 보충하여 메시지 패키트가 부울 15-제곱을 통하여 움직임에 따라 이 어드레스를 수정하도록 만든다.
U-out 단자로부터 셀을 떠난 메시지는 종열내의 바로 그위의 셀의 L-in 단자로 공급되고 L-in 단자상에 수용된 어느 신호와 마찬가지로 동일한 방식으로 상기 셀에 의해 처리된다. 메시지 존재신호는 동일한 방식으로 UP-out 단자로부터 바로 그위의 셀의 LP-in 단자에 전달된다.
각 종열의 셀(400)의 회로는 각 종열(혹은 차원)의 출력버스(410)상에 상부에 가장 가까운 횡열에서 순환하는 상기 차원에 번지 지정된 메시지를 위치시켜 모든 횡열을 상부횡열로 압축시키도록 설계되어 있다. 이 결과 제어신호 그랜트(Grant)(G)와 올-풀(All Full)(AF)가 각 종열내에 구비되어 종열내의 그들 위의 셀의 상황의 종열의 개별셀에 정보를 준다. 특히 그랜트(Grant)(G)신호는 각 종열 혹은 차원의 출력버스(410)으로의 접근을 G-in 및 G-out 단자를 통한 셀의 각 종열 아래로 공급되는 신호에 의해 제어한다. 이 신호를 전달하는 회로는 상기 차원에 번지 지정된 종열내의 최상부 메시지 패키트에 버스의 접근을 구비하여 상기 종열내의 낮은 셀의 모든 메시지가 출력버스 위로 경로배정됨을 막는다. 올-풀(AF)신호는 한 셀(400)으로부터 같은 종열내의 그위 셀로 메시지가 이동함을 종열내의 그위의 모든 셀내에 메시지가 있느냐에 따라 AF-out과 AF-in 단자를 통하여 각 셀에 지시함에 의해 제어한다. 만일 모든 상부셀이 비었다면, 각 하부셀의 메시지는 그 종열내에서 한셀 위로 움직인다.
상부 횡열내의 셀에 대해서는 단자로 가는 입력이 항시 높다. 이들 셀에 대해서는 G-in 단자로 가는 입력신호가 리셋트신호의 보조이고 따라서 리셋트중을 제외하고는 높다. 결과적으로 하나의 종열내의 상부셀내의 메시지 패키트는 만일 상기 차원에 번지 지정된다면 정상적으로 출력버스(410)으로의 접근을 가지게 된다. 그러나 만일 출력라인(39)가 꺼지게 되면 이 라인은 낮은 신호를 상기 라인과 조합된 차원의 상부셀의 G-in 입력단자에 공급함에 의해 상호 연결된 15-제곱회로망으로부터 제거될 수 있다. 셀(400)의 바닥횡열에서 G-out 단자로부터 나온 그랜트신호는 접지를 출력버스에 공급할 수 있는 패스 트랜지스터(pass transistor)(425)를 제어하는데 사용된다. 특히 만일 상기 출력라인에 진행된 메시지가 없다면, 0-비트가 상기 차원에 출력라인에 씌어진다.
셀의 특정한 플립-플롭의 작동은 타이밍신호 t-COL-n에 의해 제어된다. 여기서 n은 차원의 수이고, 한편 다른 플립-플롭은 베이직 클락신호 파이 1에 의해 감시된다. 하기의 설명으로부터 나타나게 되겠지만 각 종열(column)내의 경로배정셀은 배열(30)내의 모든 경로배정회로내의 같은 종열내의 모든 다른 경로배정셀과 동시에 작동한다.
병렬상태로 작동하는 수천개의 동일한 프로세서/메모리의 사용은 완전히 신규한 연산전망을 열어 놓는다. 직렬 컴퓨터의 한계때문에 시도될 수 없었던 문제들이 지금부터 컨넥션 머신 컴퓨터(connection machine computer)같은 병렬 컴퓨터를 사용함에 의해 짧은 시간내에 실시될 수 있다.
계산능력에 이러한 방대한 증가는 더욱 복잡한 문제를 세금, 현제의 병렬 컴퓨터들에서도 흥미를 자극하고, 또 더큰 병렬 컴퓨터에 대한 요구를 자극한다. 극히 큰 대형 컴퓨터가 동시에 병렬 컴퓨터에 의해 유리하게 번지 지정될 수 있는 모든 문제에 필요하지는 않다.
일부 문제들은 간단하게 큰 병렬 컴퓨터의 모든 자원을 차지할 충분한 데이타를 가지지 않는다 ; 그리고 다른 것은 병렬 컴퓨터의 계산력에 대한 심각한 요구를 만들지 않는다. 항시 병렬 컴퓨터의 실질적인 부분을 이용한 방법을 발견할 수 없다면 경제분야에 이러한 컴퓨터를 뒷받침하기 곤란하다.
하나의 타협책을 부가적인 병렬 프로세서를 흉내내기 위해 과오한 용량의 프로세서 및 메모리능력을 사용하는 것이다. 이 기술에 따르면 각 물리적 프로세서와 조합된 메모리는 다수의 부-메모리로 분할될 수 있고 각 부-메모리는 이때 이것이 마치 별도의 프로세서와 조합된 것같이 연속으로 사용될 수 있다. 따라서 제1명령 혹은 명령의 셋트가 병렬 컴퓨터의 프로세서 전부에 공급되어 적어도 일부의 프로세서가 제1부-메모리내의 제1위치 혹은 위치들에 저장된 데이타를 처리하도록 만든다. 이후, 같은 제1명령 혹은 명령 셋트가 컴퓨터의 프로세서 전부에 공급되어 적어도 일부 프로세서가 제2부-메모리내의 같은 제1위치에 저장된 데이타를 처리하도록 만들게 된다. 그리고 부-메모리(sub-memories) 각각에 대하여도 이렇게 진행한다. 이 기술이 많은 상황에서 아주 유용하기는 하지만, 모방된 프로세서의 각 그룹에 대해 데이타를 처리하는 물리적 프로세서는 아직까지도 통상의 직렬(혹은 폰 노이만(von Neumann) 프로세서일 뿐이다. 결과적으로 만일 대량의 모방된 프로세서 및 /혹은 대량의 데이타가 물리적 프로세서와 조합된다면, 물리적 프로세서에 폰 노이만 병목형상(Von Neumann bottleneck)이 일어나게 된다.
본 발명은 병렬 컴퓨터의 자원을 많은 수의 사용자 사이에 할당함에 의해 병렬 컴퓨터의 이용을 개선하기 위한 방법과 장치에 관한 것이다. 본 발명에 따르면, 병렬 컴퓨터는 이 컴퓨터상에서 동시에 실시되는 다수의 데이타 베이스와 프로세서의 요구에 맞도록 많은 수의 사용자 사이로 잠정 분할된다. 이는 병렬 컴퓨터를 다수의 프로세서 배열로 분할하고 이들의 각각이 서로에 관해 독립하여 사용될 수 있게 하는 수단에 의해 성취된다. 이 분할은 분할이 쉽게 변화되고 시간 분할 환경에서 실제 메인 프레임의 두 연속 타임슬롯사이에서 변화되는 사고에서 동적으로 만들어진다.
더구나, 병렬 컴퓨터는 배열내의 각 물리적 프로세서에 의해 부가적인 병렬 프로세서의 모방을 허용하고 또 모방된 병렬 프로세서 사이의 통신을 위해 구비되도록 조직된다. 본 발명에 따르면, 특정한 물리적 프로세서와 조합된 모방된 프로세서가 서로 통신하는 것이 가능할 뿐 아니라 어떤 물리적 프로세서와 조합된 어떤 모방된 프로세서가 병렬 컴퓨터내의 어떤 다른 물리적 프로세서와 조합된 어떤 다른 모방된 프로세서와도 통신할 수 있게 된다. 가상 메모리의 관념으로의 유주법에 의해 우리는 이들 모방된 프로세서를 이후 가상 프로세서로 기술할 것이다. 또 본 발명에 따르면, 가상 프로세서를 가상 메모리에 저장하는 수단 또한 구비될 것이다.
이 설계의 결과로서, 1,000,000개 정도의 많은 수의 물리적 프로세서와 1,000,000,000,000 정도의 많은 수의 가상 프로세서를 가진 병렬 컴퓨터를 만드는 것이 가능하다. 더구나, 컴퓨터가 다수의 독립된 프로세서 배열로 동적으로 인식될 수 있기 때문에, 이런 크기의 장치가 이때 번지 지정된 문제를 위한 적당량의 용량을 가지는 전체 컴퓨터의 일부분에서만 사용하는 각 사용자를 가진 많은 수의 사용자에 의해 분할되어질 수 있다. 특히 그의 1,000의 사용자가 LAN(local area network)에 의해 병렬 컴퓨터에 접속될 수 있다.
프로세서간에 통신하기 위해 물리적 프로세서가 충분한 크기의 2진수 n-제곱의 형태로 상호연결되어 각 물리적 프로세서를 제곱상태로 특정위치에 할당하도록 하고, 각 가상 프로세서는 그의 소유번지에 할당된다. 따라서 이 번지 지정구조는 번지를 최대 240가상 프로세서까지 허용하도록 만든다.
본 발명의 병렬 컴퓨터의 다른 현상은 다음의 것을 포함한다 ;
이 컴퓨터는 정규의 단위명령셋트(normal word-at-a-time instruction set)를 지원한다. 부가하여, 병렬명령의 정확한 동형셋트(isomorphic set)를 지원한다. 각 단위명령 작업을 위해 해당 데이타 평행작업이 데이타의 전체 셋트상에서 동시에 작동된다.
이 컴퓨터는 복수의 프로세서에 걸린 명령의 분배와 동시 실행을 위한 하드웨어지원(hardware support)을 구비한다. 결과적으로 기계에 걸리는 작업은 서로에 관해 완벽하게 결정된 사간에 발행한다.
사용자는 주요한 사무취급의 실패없는 작업을 보장하는데 필요한 만큼의 가외 배정을 해도 좋다. 이는 비-한계적 응용의 간단한 자기-검색으로부터 실패없는 사무취급을 위한 충분한 4배의 단위가외까지의 범위로 된다. 가외의 요소는 필요할때만 배정되기 때문에 가외의 비용을 이러한 가외의 범위가 필요할때만 개상된다.
본 발명의 이들 목적과 기타 목적 및 현상, 장점들이 본 발명의 선호된 실시예를 설명하는 하기의 상세설명에 의해 쉽게 나타날 것이다.
제3도에서 도시한 바와같이, 본 발명의 선호된 실시예는 다수의 사용자 터미널(310 A-N), 국지간 회로망(LAN ; local area network)(320) 및 프로세서 배열(330)을 포함하는 시스템(300)이다. 도시적으로 각 터미널은 키이 보-드(314)와 CRT 영상표시기(316), 프린터 같은 출력장치(도시하지 않았음)와 터미널과 LAN(320)간의 접속장치(318)를 가지는 콘솔(312)을 포함한다. 종래 퍼스널 컴퓨터도 필요에 따라 터미널(310)으로 사용될 수 있다.
프로세서 배열(330)은 설명적으로 262,144(=218)의 물리적 프로세서 유니트(PPU), 각 프로세서와 조합된 4메가바이트와 고속 임의 접근 메모리 혹은 기록/판독 메모리, 실질적인 부가적 저속 대량저장 기록/판독 메모리와 확장 지원회로를 포함한다. 테라바이트의 고속 메모리는 대표적으로 집적회로 메모리칩에 의해 구비된다. 대량 저장 기록/판독 메모리는 예를들어, 각기 300미가바이트의 용량을 가지고 총용량이 10테라바이트인 32,768(=215)의 하드 디스크 드라이브가 된다. 262,144의 PPU는 18-차원의 하이퍼큐브에 연결되며 여기서 각 PPU는 하기에서 상세히 설명되는 바와같이 하이퍼큐브(hypercube)의 18변의 각각을 따라 18의 인접 PPUs에 연결된다.
LAN(320)은 터미널(310)을 프로세서 배열(330)내의 PPU의 일부와 연결하여 특정의 터미널이 특정한 PPU와 통신하도록 한다. 이들 PPU는 차례로 그 배열내의 다른 PPU를 동적으로 제어하고 이 다른 PPU는 또다른 PPU를 순환적으로 제어하게 되어 특정한 문제를 위한 적절한 처리와 메모리를 구비한다. 선호적으로 LAN은 크로스-바아 스위치 만큼 유연하여 어떤 터미널이든 회로망에 연결된 아무 PPU에나 연결될 수 있고 또 이들 연결이 언제나 필요에 따라 설사 시간 분할 환경에 필요한 만큼이라도 변화될 수 있도록 된다. 수많은 종래의 LAN중 어느것, 이를테면 Ethernet(TM)시스템 혹은 디지탈 PBX 같은 것이 이 목적을 위해 사용될 수 있지만, 단 시스템 300에 포함될 터미널의 수를 연결할 충분한 능력을 가져야 한다. 만일 필요하다면 다수의 LAN이 사용될 수 있다. 설명적으로 LAN은 본 발명의 시스템에서 1,000터미널을 연결할 수 있어야 한다.
알 수 있는 바와같이 본 발명의 장치는 종래 기계에서 실시되던 것보다 상당히 큰량의 임의 접근 메모리를 지원한다. 이는 전체 데이타 베이스가 주 메모리에 저장될 수 있도록 한다. 주 메모리에서는 접근 시간이 디스크보다 잠정적으로 수천배 빠르다. 대표적으로 이러한 대용량의 메모리는 한사람의 사용자가 단순히 한위치만을 열고 늘려두기에는 너무 비싸기 때문에 테라바이트 메모리는 직렬 기계에서는 경제적이지 못하다.
본 발명에서는 메모리의 많은 부분이 동시에 열리고 있기 때문에 이런 문제는 발생되지 않는다.
상기 참조된 .913 응용의 가르침을 따르면, 각 PPU는 PPU와 조합된 메모리를 잠정 분할하고 각 부-메모리를 상이한 가상 프로세서에 배정함에 의해 다수의 가상 프로세서로써 작동될 수 있다.
본 발명에 따르면 메모리의 잠정 분할은 심지어 디스크 혹은 테이프 저장장치상의 메모리 같은 가상 메모리까지 확장될 수 있다.
더구나, 각 가상 프로세서는 컴퓨터내의 처리작업의 물리적 프로세서의 등가물로써 간주될 수 있다.
본 발명에 따르면 사용자는 PPU에 데이타 처리와 메모리를 위한 그의 요구를 명시할 수 있고, PPU는 이때 이들 요구를 만족하기에 충분한 프로세서의 그룹(물리적 프로세서 및 가상 프로세서 둘다)을 형성할 수 있다. 잠정적으로 프로세서의 그룹은 하나의 프로세서가 하나 이상의 다른 프로세서를 제어하고 이들 다른 프로세서 또다른 프로세서를 제어하고 이를 계속 진행하도록 순환적으로 조직된다. 선호적으로 데이타 베이스의 각 요소는 프로세서중 하나와 일-대-일 베이스로 저장되고 프로세서는 데이타 베이스와 같은 동일구조로 조직된다. 결과적으로 이 배열은 :
1. 각 프로세서는 계산/논리작업, 데이타 이동을 포함하는 정규의 폰 노이만(von Neumann) 타입 작업과 서브 루틴 콜(subroutine calls)과 브랜치(branches) 같은 작업의 정규 제어 흐름을 실시할 수 있다.
2. 각 프로세서는 병렬명령 실시중에 그의 제어하에 있는 데이타 프로세서의 셋트를 배정할 수 있다. 배정하는 프로세서는 제어 프로세서로 불리어지고 배정된 프로세서는 데이타 프로세서로 불리어진다. 이들은 데이타 프로세서가 제어 프로세서의 충분한 용량을 가지고 있고 데이타 프로세서 스스로 배정할 수 있기 때문에 상대적인 용어이다.
3. 각 프로세서는 그의 배정된 데이타 프로세서들로부터 문맥셋트(context set)를 선택할 수 있다. 이 문맥셋트는 병렬상태로 병렬상태로 작업될 데이타의 셋타이다. 이 문맥셋트는 데이타 프로세서의 전부에 혹은 현재 문맥셋트내의 데이타 프로세서 전부에 공급된 일부 조건에 따라 선택된다. 문맥셋트는 저장되고 회복되기도 한다.
4. 각 프로세서는 그의 문맥셋트내의 모든 데이타에서 동시적으로 병렬작업을 실시한다. 병렬작업은 이들이 문맥셋트내의 모든 데이타에 동시적으로 공급되는 것을 제외하고는 카테고리 1에서의 순서적 작업과 정확히 일치한다. 이들은 모든 데이타조작, 메모리참조(통신) 및 센츄럴 플로우 오퍼레이션(control flow oporation)을 포함한다. 프로그래머가 볼 수 있는 한 이들 작업은 데이타셋트 상태로 모든 프로세서 상에서 동시에 발생한다.
5. 각 프로세서는 나누어진 데이타 베이스를 열 수 있고 또 그의 데이타 요소의 부분을 그의 메모리속으로 실을 수 있다. 또한 가상 프로세서도 데이타 베이스로 수정할 수 있다.
본 발명의 병렬 컴퓨터의 명령은 종래 컴퓨터의 명령과 유사하다. 이들은 3개의 카테고리로 나누어진다 : 이는 로컬명령(local instructions), 파라렐명령(parallel instructions), 및 문맥명령(context instructions)이다.
로컬명령은 정확히 종래 컴퓨터의 명령과 같고, 서브루틴콜, 조건 및 비-조건 브랜치, 리턴, 레지스터에 기초한 산술테이타 이동, 논리작업 및 테스팅이다. 로컬명령은 프로세서내에서 실시된다.
파라렐명령은 이들의 데이타 프로세서의 문맥셋트상에서 동시적으로 실시되는 것을 제외하고는 정확히 로컬명령과 같다. 파라렐명령의 그룹은 명령문(orders)으로 불리어지며, 문맥셋트상태로 모든 가상 데이타 프로세서상에서 동시적으로 실행된다. 각 로컬 데이타 명령에 대해 해당 파라텔 데이타 명령이 있다.
문맥명령은 병렬상태로 실행될 가상 데이타 프로세서의 셋트를 규정하기 위하여 사용된다. 4개의 문맥명령이 있다 :
set 모든 가상 프로세서가 일정 조건에 만족하게 하는 문맥 ; restrict 현재의 문맥내의 프로세서의 부-문맥이 일정조건을 만족하게 하는 문맥 ;
push 현재 문맥을 스택에 넣는다 ;
pop 현재 문맥을 스택에서 뺀다.
이들 문맥 명령은 파라텔 테이타 명령과 상호 혼합되어 그룹을 형성하여 명령문을 형성한다.
명령문은 본 발명의 병렬 컴퓨터에서 동시화의 기본 유니트이다.
하나의 명령문은 컨트롤 프로세서와 데이타 프로세서간의 통신 유니트이다. 가장 간단한 경우, 하나의 명령문은 하나의 명령(instruction)이다. 이는 또 명령문내에서 물리적 데이타 프로세서를 거쳐 동기화 위한 관련이 없이 함께 실행될 수 있는 명령의 그룹이 된다. 컨트롤 프로세서의 기본동작은 하나의 명령문을 알파루터(alpha router)를 통하여 등록하고(제7도), 모든 데이타 베이스에 의해 이것이 실행되어 졌음을 확인하기 위해 기다리는 것이다. 다른 가상 프로세서는, 일반적 의지에서, 다른 시간에서 명령물내의 여려 명령을 실행할 수 있다.
또한 명령은 시스템내의 명령을 위한 캐슁(caching)의 기본 유니트이다. 이는 하나의 명령문에 허락되는 명령의 수가 제한됨을 의미한다. 하나의 명령문은 콜명령을 포함하기 때문에, 명령문에 의해 실행되는 작업의 수는 마음대로 커도 좋다. 서브 루틴 콜에 부가하여, 명령문은 명령문내에 간단한 루프와 조건 브랜치를 포함한다.
명령은 명령문내의 명령이 비동시적으로 실시될 수 있게 함을 보장하는 간단한 규칙에 따라 명령문으로 모아진다.
이는, 예를들어, 명령문내의 최종 명령어로써만 비국부 통신(non-local communication)을 포함하는 명령을 허용함에 의해 성취될 수 있다.
명령문은 제어 프로세서로부터 데이타 프로세서로 알파루터를 통하여 퍼진다. 모든 데이타 프로세서에 의해 명령문이 실행되었을때 제어 프로세서에 신호할 책임이 알파루터에 있다. 또한 이 신호전달구조는 제어 프로세서내의 프로그램 흐름의 제어를 위한 조건 코드를 결합하는데 사용된다.
제4도의 도식적 다이아그램내에 도시된 바와 같이, 각 PPU는 마이크로 프로세서(350), 기능회로(360) 및 메모리(370)를 포함한다. 선택적으로 PPU는 또한, 수학적 작업을 고속으로 실행하는 능력을 위해 특정한 수학적 회로를 포함할 수 있다. 마이크로 프로세서(350), 메모리(370) 및 수학적 회로(380)는 종래의 집적회로일 수 있다. 예를들면, 마이크로 프로세서(350)는 인텔 8086(Intel 8086)일 수 있고 수학적 회로(380)는 인텔 8087 같은 플롯팅 포인트 악셀 레이터(floating point accelerator)일 수 있다. 선택적으로 모토로라 68000(Motorola 68000)이 사용될 수 있고 또 페어 촤일드 클립퍼(Fairchild Clipper) 같은 마이크로 프로세서도, 이들이 별도의 명령과 데이타 핀(data pins)을 가졌기 때문에 특히 유리하다.
메모리(370)는 어떤 고속, 대용량 판독/기록 메모리이건 관계없다. 설명적으로, 이 메모리가 32-4×64킬로비트 집적회로 칩의 배열에 의해 구비된 4메가바이트 메모리이어도 좋다. 부가적인 메모리는 여러 탐지와 정정을 위해 등가와 여러 제어비트를 저장하는데 유리하게 사용된다. 큰 용량의 메모리 칩이 구입가능하게 됨에 따라, 이러한 칩이 메모리의 크기를 증가시키는데 와/혹은 필요한 집적회로 칩의 수를 감소시키기 위해 사용될 수 있다.
기능회로(360)는 메모리 접속장치, 메시지 경로배정, 여러 교정, 명령분류 및 동기화, 데이타 캐슁 및 가상 프로세서 제어를 위해 있다. 이 회로는 PPU로부터 정보를 받아 동적 메모리를 구동하기에 적절한 어드레스정보를 만든다. 또한 PPU의 데이타 핀과 동적 메모리의 데이타 핀으로 또 드로부터 데이타를 움직인다. 기능회로는 또한 PPU를 가상 프로세서로써 작동시키는데 필요한 모든 관리기능을 실시한다.
기능회로(360)가 마이크로 프로세서(350)와 메모리(370) 사이에 위치된 마이크로 프로세서(350), 기능회로(360) 및 메모리(370)의 이 조직은 마이크로 프로세서가, 마이크로 프로세서와 메모리가 한데 직접 연결된 '400 특허에서 기술된 시스템에서 보다 극히 방대하게 큰 량의 메모리를 번지 지정할 수 있게 만든다.
동시에, 또한 본 발명의 조직은 하기에서 기술되는 바와 같이 메시지 패키지 경로배정과 조화된다.
PPU는 열여섯 PPU 0-15의 집적회로와 지원회로가 제5도에서 도시된 바와 같이 하나의 회로 보오드 400에 장착되도록 열여섯의 유니트로 조직된다. 지원회로는 디스크 접속장치와, 일반적인 입력/출력회로(420), 자기-검색회로(430), 클락회로(440), 인식회로(450) 및 성능측정회로(460)를 포함한다.
디스크 접속장치(410)는 PPU 0에 연결된 표준 SCSI(small computer system interface) 접속장치이다.
이는 하기에서 기술되는 대량 저장모듈(470)에 연결되도록 설계되었다. 그의 최대 통신 대역폭은 초당 기의 10매가 비트이다. 회로 보오드(400)상의 다른 PPU는 파일 보조로 작용하는 PPU 0를 통하여 대량 저장모듈과 접속한다.
입력/출력회로(420)는 PPU 1에 연결된 32-비트폭의 병렬 포트 혹은 직렬 포트이다. 이 포트(port)는 초당 기의 50메가비트의 최대 대역폭(band width)을 가지고 있다. 회로(420)는 LAN(320)을 PPU 1에 접속시킨다. 이는 회로망(network)상에서 또다른 터미널 혹은 간단히 병렬 혹은 직렬 포트로써 나타난다. 회로 보오드(400)상의 다른 PPU는 PPU 1을 통하여 입력/출력회로(420)과 접속한다. 이 배열의 결과로, 어느 터미널(310 A-N)에서 사용자가 프로세서 배열(330)내의 어느 PPU를, 사용자가 전화망에 연결된 어느 전화에 전화걸 수 있는 것과 아주 동일한 방식으로 선택적으로 번지 지정할 수 있다.
자기-검색회로(self-checking circuitry)(430)는 회로 보오드(400)상에서 일어나는 모든 결함을 탐지할 수 있어 모듈을 시스템으로부터 제거할 수 있도록 한다. 장점적으로, 이는 발광 다이오드에 연결되어, 유지관리에 도움을 주도록 모듈이 off-라인임을 볼 수 있게 가시적 표시를 한다.
각 회로 보오드는 그 자신의 클락회로(440)을 가지고 있고, 이는 이 시스템의 다른 PPU의 클락회로와 동기화되어 있다. 인식회로(450)는 보오드의 제조 및 관리이력, 일련번호 등을 가지고 있는 전기적으로 지울수 있는 영속성 메모리이다. 성능 측정회로(460)는 소프트웨어 성능을 감시한다.
대량 저장모듈(470)은 설명적으로 표준 디스크 컨트롤러(480)와 표준 5-1/4인치 300메가바이트 드라이브(49)를 포함하고, 총 저장용량이 2400메가바이트가 되도록 같은 컨트롤러에 최대 일곱개의 부가적인 드라이브를 더 부가할 수 있는 준비를 해둔다.
회로 보오드(400)와 저장모듈(470)은 16개의 보오드(400)와 16개의 모듈(470)의 뱅크(502)를 포함하는 캐비넷(500)내에 장착되어 있다. 따라서, 262,144 PPU의 시스템의 경우에, 1,024(=210) 캐비넷이 PPU를 싸기위해 사용된다. 이 캐비넷들은 광섬유 통신라인에 의해 상호 연결된다. 따라서 각 캐비넷은 캐비넷 사이에서 데이타를 다중화(multiplex)하고 전송하는데 사용되는 적어도 하나의 광섬유 송수신기를 포함하는 하나 이상의 통신모듈(505)을 포함한다. 송수신기는 초당 100메가비트의 데이타 속도를 가지고 한 캐비넷의 여러 PPU로부터 다른 캐비넷의 다른 PPU로 시간 다중화 통신을 할 수 있는 종래의 통상적인 광섬유 송수신기어어서, 광섬유 통신라인의 큰 대역폭을 잡을 수 있는 장점이 있다.
유리하게는, 적어도 두개의 송수신기가 각 통신모듈에 사용되는 신호가 각 통신모듈에서 동시에 전송되고 수신될 수 있도록 할 수 있다.
PPU 330을 선호적으로 상기 참조된 '943 응용의 가로침에 따라 하이퍼큐브로 상호 연결된다. 따라서 각 PPU는 입체회로망에서 하이드로큐트의 4차원에 해당하는 동일회로 보오드상의 4개의 다른 PPU에 연결되고 또 하이드로큐브의 4개의 또다른 차원에 해당하는 캐비넷내의 4개의 다른 회로 보오드상의 4개의 PPU에 연결된다. 262.144 PPU의 시스템의 경우에, 캐비넷내의 각 PPU는 다른 캐비넷내의 열 PPU에 연결된다. 이들 열개의 다른 연결은 하이드로큐브의 나머지 차원에 해당한다. 이들 열차원의 각각 위의 각 캐비넷의 연결은 별도의 통신모듈(505)을 통하여 만들어진다.
제7도에서 도시한 바와 같이, 기능회로는 9개의 주기능 유니트를 포함한다 : 이들은 어드레스 맵퍼(address mapper)(510), 메모리 접속장치(memory interface)(520), 가상 프로세서 순서기(virtual processor sequencer)(530), 데이타 캐쉬(540), 에러 고정기(550), 알파루터(560) 베타루터(570), 인터셉터(interceptor)(580) 및 오디캐쉬(order cache)(590)들이다. 설명적으로, 모든 이들 기능 유니트는 하나의 집적회로 혹은 칩으로 이용되지만 다수의 칩으로 사용되어도 좋다. 어드레스 핀(532)와 데이타 핀(582)은 VP 시이퀀서(530)와 인터셉터(580)을 PPU의 마이크로 프로세서(350)에 연결한다. 어드레스 핀(522)과 데이타 핀(552)은 메모리 접속장치(520)와 여러 교정기(550)를 PPU의 메모리(370)에 연결한다. 알파 핀(562)과 큐브핀(cube pins)(572)은 PPU의 알파와 베타루터(560, 570)를 하기에서 더 상세히 설명되는 바와 같이, 다른 PPU의 다른 알파와 베타루터에 연결한다.
제8도에서 도시된 바와 같이, 어드레스 맵퍼(510)는 PPU 어드레스 레지스터(605), 온셋트 레지스터(onset register)(610), VP 오프 셋트 레지스터(VP offset register)(615), VP 인크리먼트 레지스터(VP increment register)(620), 페이지 테이블(page table)(625)를 포함한다. 맵퍼는 또한 제1, 제2 및 제3멀티플렉서(630, 635, 640)과 제1 및 제2어드레스(645, 650)를 포함한다. 어드레스 맵퍼로 가는 입력은 어드레스 버스(602)를 통하여 VP 시이퀀서(530)로부터 수신되고 맵퍼로부터의 출력은 물리적 어드레스 버스(652)를 통하여 메모리 접속장치(interface)(520)에 공급된다. 페이지 비트의 두 비트는 페이지 비트라인(654)를 통하여 VP 시이퀀서(530)에 공급된다. 표시된 바와 같이, 어드레스 버스는 24-비트 폭이고 물리적 어드레스 버스는 22-비트 폭이다.
어드레스 맵퍼의 작동을 이해하기 위해서는, 본 발명의 시스템을 위한 번지지정도식을 이해하는 것이 도움이 된다. 제13도에서 도시된 바와 같이, 시스템에 저장되는 4타입의 어드레스가 있다 ; 위치격(locatives) ; 루터 어드레스(router addersses) ; 가상 어드레스(virtual addresses) ; 및 물리적 어드레스(physical addresses).
1,000의 사용자의 필요를 만족하도록 충분한 가상 프로세서를 지원하기 위해, 본 발명의 시스템을 비로 가상 메모리가 저장되더라도 가상 프로세서를 지원한다. 따라서, 디스크상에 물리적으로 저장된 데이타라도 가상 프로세서와 조합될 수 있다. 결과적으로, 본 발명의 시스템은 최대 트릴론(
Figure kpo00001
240)까지의 가상 프로세서를 지원하도록 설계된다. 전체 어드레스 공간이 원리적으로 단일의 사용자에 의해 사용되기 때문에 CM2는 64-비트 어드레스 공간을 가진 번지지정구조를 지원한다.
대부분의 일반적 형태의 어드레스는 64비트의 저장장소를 필요로 하는 위치격이다. 위치격은 전체 시스템내의 모든 가상 프로세서내의 모든 메모리 위치로 지정될 수 있다.
가장 중요한 40비트의 위치격은 가상 프로세서가 번지지정됨을 규정한다. 가장 적게 중요한 24비트는 상기 가상 프로세서내의 오프셋트를 규정한다. 264는 전체 시스템의 가상 메모리의 크기보다 크기 때문에, 부호화에 여분의 방이 있다. 특히 가상 프로세서를 규정하는 40비트는 별도로 가상 프로세서가 있는 PPU를 규정하고(18비트), 가상 프로세서가 시작하는 상기 물리적 프로세싱 유니트의 가상 메모리내의 워드를 규정한다(22비트). 가상 프로세서는 물리적 프로세싱 유니트의 24-비트 가상 어드레스 공간내의 모든 균등 32-비트 경계에서 시작된다.
루터 어드레스는 통신망에 의해 사용된 어드레스이다.
이들은 기본적으로 위치격의 압축된 형태이고 이는 24-비트 오프셋트와 가상 프로세서 어드레스의 22-비트 오프셋트 부분의 4배를 한데 더 함에 의해 형성된다. 루터 어드레스는 시스템내의 일부 물리적 프로세서 유니트의 가상 메모리내의 하나의 워드를 규정한다. 루터 어드레스의 길이는 42비트이고, 이는 전체 시스템상의 가상 메모리 워드의 수에 일치한다.
PPU내에는, 모든 포인터가 24-비트 가상 어드레스의 단어로 저장된다. 이러한 어드레스에서, 8비트는 메모리의 페이지를 나타내고 16비트는 상기 페이지내의 바이트의 어드레스를 나타낸다. 이 페이지는 가상 메모리 시스템을 위한 요구에 기초한 캐슁(demandbased caching)의 유니트이다. 어느 주어진 시간에 최대 64페이지가 물리적으로 메모리내에 있게 된다.
24-비트 가상 어드레스는 페이지 테이블(625)에 의해 22-비트 물리적 어드레스로 사상(mapping) 된다. 이 페이지 테이블은 가상 메모리에서 28페이지의 각각을 물리적 메모리의 26페이지로 사상한 6-비트 룩업 테이블에 의해 256-워드이다.
어드레스 맵퍼(510)는 기능회로로 들어가는 가상 어드레스를 잡고 이를 메모리를 위한 물리적 어드레스 혹은 통신을 위한 루터 어드레스의 어느것으로 바꾼다. 어드레스 맵퍼는 번지지정의 3개의 상이한 모우드를 지원하도록 설계된다 : 정규 모우드, 가상 프로세서 상대 모우드 및 확장된 모우드, 정규 번지지정 모우드에서는, 24-비트 물리적 어드레스가 PPU로부터 직접 잡혀지고 또 8비트 페이지수와 16-비트 페이지 오프셋트로 분할된다. 8비트 페이지수는 가상 페이지를 물리적 어드레서에 상상함을 포함하는 페이지 테이블(625)로의 인덱스로써 사용된다. 참조 페이지가 물리적 메모리에 있는 경우, 페이지 테이블은 물리적 어드레스의 어느 부분에 페이지가 있는가를 말하는 6-비트 어드레스를 만들게 된다. 이는 16-비트 오프셋트와 결합되어 메모리 접속장치로 직접 가는 22-비트 물리적 어드레스를 형성한다. 참조된 페이지가 “교체(swapped out)”된 경우에는, 페이지 테이블이 페이지 비트의 셋팅에 의해 지시되게 되고 트랩(trap)이 잡혀져서 페이지가 2차 저장장치로부터 물리적 메모리로 로드(load)된다. 페이지는 퍼스트-인(first-in)/퍼스트-아웃(first-out) 베이스 선입/선출의 원칙으로 로드되어 새로운 프로세서가 가장 나중에 로드된 프로세서의 상부에 로드되도록 한다. 또한, 프로세서 비트의 사용이 특정한 프로세서를 “와이어-인(wire-in)”하여 이들이 절대 2차 저장장치로 가지 않도록 하는 것이 가능하다.
번지지정의 제2모우드는 가상 프로세서 관계이다.
이경우, 버스로부터 은 어드레스는 현재 실행되는 가상 프로세서를 위한 가상 프로세서 오프셋트 어드레스에 관한 오프셋트인 것으로 잡혀진다. 이들 두 24-비트 어드레스는 가산기(650)에 의해 한데 더해져서, 24-비트 가상 어드레스를 만들고 이는 이때 전과 같이 프로세서 테이블을 통하여 물리적 어드레스로 바뀌어진다. 가상 프로세서 오프셋트는 가상 프로세서 시이퀀스에 의해, 혹은 아마도, 고정된 크기의 가상 프로세서인 경우에 증식에 의해 고정된다.
번지지정의 최종 형태는 프로세서 상호간의 통신이 성취되는 구조이다. 이경우, 관련기능은 베타 루퍼를 통하여 연산되고 어드레스는 하기와 같이 계산된다 : 도착지 PPU의 18-비트 어드레스가 칩(오프셋트)로부터 오는 24-비트 물리적 어드레스의 합으로 연결되고 24-비트 온셋트 워드는 온셋트 레지스터(610)로 로드된다. 대표적으로 이는 확장된 번지지정 작업중에 앞서의 싸이클에 의해 로드된다. 메시지 어드레스가 받아들여져 있을때, 온셋트와 오프셋트의 합으로부터 계산된 수신 어드레스의 메모리부분은 가상 메모리 어드레스로 사용되고 프로세서 테이블을 통하여 물리적 어드레스에 정규의 번지지정으로 인덱스된다.
메모리 접속장치 유니트(520)는 번지지정의 물리적 다중화와 동적 램을 위한 메모리 회복을 위한 것이다. 제9도에서 도시된 바와 같이, 접속장치(520)는 회복 계수기(refresh counter)(660), 횡일수 레지스터(row number register)(665), 멀티플렉스(multiplexer)(670) 및 비교기(comparator)(675)를 포함한다. 멀티플렉스(670)는 22-비트 물리적 어드레스를 11 어드레스 핀으로 다중화 한다. 회복 계수기(660)는 진단 목적으로 리셋트된다. 메모리 접속장치 유니트는 또한 오늘날의 대부분의 동적 램에 의해 지원되는 바와 같이 고속 블록 모우드 억세서(fast blockmode accesses)의 장점을 취하도록 설계되었다. 이를 실행하기 위해, 메모리 접속 유니트는 횡열 레지스터(665)에서 최종 횡열 접근된 횡열수를 저장한다.
만일 접근이 이미 열린 것과 같이 횡열에 실시되었음을 비교기(675)가 판정한다면, 이때 다른 싸이클이 실시되어 어드레스의 종열부분만을 스트로브(strobe)시킨다. 따라서 메모리의 동일 블록에의 참조는 일반적인 임의 접근에 필요한 시간의 약 반에 실시될 수 있다. 이는 연속 데이타의 블록접근에 특히 중요하다.
가상 프로세서 시이퀀서(530)는 가상 프로세서의 오우버 헤드를 위해 필요한 리스트 작업의 다른 수행을 위한 간단한 한정상태 기계이다. PPU는 제시간에 그들의 작업을 연속적으로 다중화 함에 의해 복수의 가상 프로세서를 수행한다. PPU의 메모리 공간(그의 가상 메모리를 포함한)의 일정부분은 비록 가상 프로세서에 대한 가상 메모리의 총량이 완전히 변수이기는 하지만 각 가상 프로세서에 배정된다. 대표적으로 PPU에 의해 수행되는 가상 프로세서는 이미 다른 작업과 정합한다. 각 작업에 대해, PPU는 실행될 명령문을 공급하는 작업의 현재 문맥에서 모든 프로세서를 통하여 순서적으로 실시한다. 또한 일의 순서와 조합된 명령문의 각각을 통하여 순서를 밟아야 한다. 그러나, 실행될 임의 문맥에 있지 않는 PPU에 의해 실행되는 가상 프로세서를 통하여 순서적 실시를 할 필요는 없다. 결과적으로, PPU에 의해 실행되는 가상 프로세서를 통하여 시이퀀스를 진행하는데 필요한 시간을 상당히 절약한다.
가상 프로세서와 복수 작업 문맥절환 둘다는 하드웨어에서 직접 지원된다. 메로리에서의 가상 프로세서의 구조는 제4도에서 도식적으로 도시되었다. 작업은 작업 리스트라 불리는 원형의 리스트로 한데 연결되어 있고 어느 주어진 시강에서의 PPU는 작업 리스트내의 작업중 하나의 포인터함을 포함한다. 시이퀀서(530)의 도움으로, PPU는 각 작업을 통하여 차례로 순환하여, 다음 작업으로 가기전에 현재 작업의 문맥내의 모든 가상 프로세서에 대한 순서를 수행한다. 따라서, 만일 문맥이 비교적 작다면, 모든 가상 프로세서가 현재 문맥내에 있는 것보다 훨씬 적은 량의 시간이 그의 실행에 소요된다.
각 작업은 이를 3조각의 정보를 가진 해더(header)와 조합한다 : 이들 정보는 링크된 리스트로서 저장된 스택(stack)에의 포인터(pointer)와, 현재 문맥에의 포인터와, 작업내의 모든 가상 프로세서의 리스트에의 포인터이다.
또한 시이퀀서(sequencer)는 작업 리스트와 그 작업 주변의 보조정보, 이를테면 선행과 실행통계 같은 것의 다음 작업에의 포인터를 포함한다. PPU는 가상 메모리내의 각 가상 프로세서의 위치를 링크된 리스트를 따르고, 다음 문맥 포인터를 출발하여 눌 터미네이터(null terminater)가 도달할때까지 계속함에 의해 판정한다. 이들 리스트는 메모리의 보호구역내에 저장된다.
푸쉬-문맥(push-context) 명령을 실행하기 위해서는, PPU가 새로운 저장요소를 배정하고 또 현재의 문맥 포인터를 스택으로 밀어, 스택 포인터를 스택의 상부로 변화시킨다.
팝-문맥(pop-context) 명령은 만일 스택이 인더 플로우한다면 상부 레벨 문맥 포인터(top level context pointer)가 사용되는 것을 제외하고는 꼭 꺼꾸로이다. 다음 대부분의 공통작업은 문맥을 일부 조건에 따라 현재 문맥의 부분집합에 한정하고 있다. 이경우, 가상 프로세서 리스트는 조건에 따라 분할되어 현재 문맥으로부터 출발한다. 특정한 조건에 맞는 가상 프로세서는 리스트의 단부에 첨가된다. 이때 리스트의 꼬리에의 포인터는 현재 문맥이 된다. 이 방법으로, 연속 문맥을 나타내는 포개진 부분집합의 순서가 효과적으로 저장된다. 이 계획으로 현재 문맥에 없는 가상 프로세서는 명령문 실행중에 아무런 오우버 헤드로 지지않는다.
제10도에서 도시된 바와 같이, 가상 프로세서 시이퀀서(530)는 다섯계의 임차 레지스터를 포함하며, 이들의 각각은 가상 프로세서 어드레스의 가장 중요한 22비트를 잡아둘 수 있다. 문맥 레지스터(680)는 현재 문맥 리스트의 시작에 이르는 포인터를 잡는다. 스택 레지스터(685)는 현재 작업을 위한 문맥 스택에 가는 포인터를 잡는다. 작업 레지스터(695)는 작업 리스트내의 다음 작업으로 가는 포인터를 잡고 넥스터 레지스터(next register)(700)는 가상 프로세서 리스트내의 다음 가상 프로세서에 가는 포인터를 잡는다.
부가적인 레지스터는 필요에 따라 보조정보를 저장하는데 사용되게 된다. 시이퀀서(530)의 출력은 프로그램 가능한 논리배역(PLA)(710)으로부터의 신호에 응답하여 멀티플렉스(715)에 의해 선택된다.
가상 프로세서 시이퀀서는 그 속에, 상태 레지스터(705)와 PLA(710)에서 수행되는 한정상태 기계를 포함하여, 이들 레지스터를 조작하고 레지스터를 어드레스 맵퍼와 순서 캐쉬내에서 제어하도록 한다. 이 한정상태 기계는 작업과 가상 프로세서 둘다를 교체하는 오우버 헤드의 실시에 필요한 리스트 조작명령을 통하여 시이퀀스 진행한다. 상태기계의 출력은 기능회로의 휴지상태로부터 오는 조건 비트와 현재 상태에 따른다. 예를들면, 페이지 테이블(625)의 페이지 비트등에 따른다. 또한 PLA는 현재 데이타가 눌 디텍타에 의해 탐지됨으로써 눌이냐 아니냐에 따라 조건적으로 종속하는 전이를 만들 수 있다.
데이타 캐쉬(data cache)(540)는 데이타 판독만을 캐쉬하기 위한 완전한 종래의 캐쉬이다.
여러 교정기(550)는 6-비트 캡밍코드에 기초한 표준 싱글-비트 에러교정, 복수-비트 에러탐지논리이다. 제11도에서 도시된 바와 같이, 이는 라인 드라이브(line drivers)(740,745,750,755), 패리티 비트(parity bit)를 계산하기 위한 여러 제어회로(760,765), 패리티 에러를 탐지하기 위한 배타적-OR 게이트(770), 에러가 교정될 수 있는지를 판정하기 위한 디-코더(775) 및 탐지된 에러를 교정하기 위한 배타적-OR 게이트(780)를 포함한다. 에러제어회로(760)는 에러고정비트를 물리적 메모리에 기록된 모든 데이타에 더한다. 물리적 메모리로부터 판독된 모든 데이타는 에러제어회로(765)에서 패리티 비트를 메모리로부터 읽혀진 데이타를 위해 다시 계산하고 이들 비트를 XOR 게이트(770)에서 메모리로부터 읽혀진 패리티 비트와 비교함에 의해 검색된다. 디코더(775)는 에러가 교정될 수 있냐를 결정하고, 가능하다면 게이트(770)에 적절한 신호를 공급함에 의해 그렇게 한다.
만일 복수의 에러가 발생하면, 유니트 파괴가 디코너(775)에 의해 신호된다.
알파 및 베타 루터(560,570)는 각기 명령어과 데이타 분류를 위해 사용되고, 비록 경로배정 하드웨어가 별도이더라도 물리적 통신선을 나눈다. 제12도에서 도시한 바와 같이, 알파 루터(550)는 플립플롭(805 A-N)에 의해 제어되는 AND 게이트(800 A-N), 제1 및 제2 OR 게이트(810)(815)의 배열, 플립플롭(825 A-N)에 의해 제어되는 멀티플렉스(820 A-N)의 배열, 플립플롭(832,834)에 의해 제어되는 제1멀티플렉스(830), 플립플롭(842)에 의해 제어되는 제2멀티플렉스(840)를 포함한다. 입력라인(802 A-N)는 AND 게이트(800 A-N)에 공급되고 출력라인(822 A-N)은 멀티플렉스(820 A-N)로부터 연장한다. 이들 라인들은 PPU의 알파 루터를 2진수 하이퍼큐브내의 가장 가까운 이웃 PPU의 알파루터에 연결하다. 따라서, AND-게이트(800 A-N), 멀티플렉스(820 A-N)와 그들의 조합된 회로의 수는 하이드로큐브의 차원의 수, 설명적으로 열여덟에 일치한다. 그러나 여기서는 설명의 목적으로 3개만 도시되었다. 각 차원에 조합된 입력과 출력라인이 동일한 알파루터에 가기 때문에, 만일 필요하다면 이들 라인이 다중화될 수 있다.
더구나, 이들 라인이 베타루터의 입력 및 출력라인과 같은 동일 PPU에 가기 때문에, 이들 또한 베타루터의 라인과도 다중화될 수 있다.
알파루터는 명령어를 분류하고 동기화 하는데 사용된다.
이는 기본적으로 이는 프로세서, 혹은 어느 수의 프로세서들이 동시에, 명령의 소오스인 것을 제외하고는 '400 특허에서 설명된 명령분류 트리와 전역-혹은 트리(global-or tree)와 같은 동일한 기능을 제공한다. 이들 명령은 명령문으로 불리는 그룹으로 트랜치된다. 명령문의 실행도 알파루터에 의해 전체 기계에 걸쳐 동기화되어 하나의 명령문은 다음 명령문이 등록되기전에 실행완료된다.
전파될 명령문은 로컬 인터셉터(580)으로부터의 명령 입력라인에 받아들여지고 다른 루터로부터 받아들여진 명령문은 명령 출력라인을 통하여 명령문 캐쉬(540)에 공급된다. 수신된 명령문의 완료를 표시하는 동기화 신호는 PPU에 의해 싱크 입력라인(synch in line)상의 루터에 공급되고 다른 PPU에 의해 명령문의 완료를 지시하는 신호는 싱크 출력라인상의 PPU에 공급된다.
알파루터의 작동 모우드는 PPU로부터 수신된 신호를 따라 플립플롭에 의해 제어된다. 따라서, 만일 로컬 PPU가 명령문을 다른 PPU에 피트리든 것이라면, 플립플롭(842)는 멀티플렉스(840)가 신호를 명령은 입력라인에 전송하도록 고정하고 플립플롭(825 A-N)은 멀티플렉스(820 A-N)를 이들 신호의 전달을 위해 고정한다. 만일 로컬 PPU가 또다른 PPU로부터 명령문을 수용하기 위한 것이면, 플립플롭(832, 834)는 그로부터 명령문이 기대되는 멀티플렉스(830)에 가는 특정한 유입차원라인(incoming dimension line)을 규정하도록 고정한다. 만일 명령문이 또다른 PPU에 통과하여 지나간다면, 플립플롭(842)은 또한 멀티플렉스(840)가 멀티플렉스(830)로부터 멀티플렉스(820 A-N)로 전달하도록 고정된다. 이 배열에 의해, PPU는 명령문을 그의 가장 가까운 이웃의 각각에 전파할 수 있고 이에 의해 그들을 제어할 수 있다 ; 또 각 PPU는 그의 가장 가까운 하나로부터의 명령문을 듣고 그에 의해 제어될 수 있게 된다.
하나의 명령문이 등록된 후, 이 명령문을 등록한 PPU는 동기화 신호에 의해 명령문의 성능을 감지한다. PPU는 싱크신호(synch signal)를 싱크 입력라인을 통하여 OR-게이트(815)에 또 플립플롭(825 A-N)을 고정함에 의해 등록하여 멀티플렉스(820 A-N)가 이 신호를 OR-게이트(815)로부터 전달하도록 한다. 싱크신호는 플립플롭(805 A-N)을 고정하여 AND-게이트(800 A-N)이 수신된 신호를 OR-게이트(810)으로 통과시킬 수 있도록 함에 의해 받아들여진다. 또한 OR-게이트(810)의 출력은 OR-게이트(815)로 가는 입력을 통하여 다른 PPU에 보내질 수 있다. 이 배열에 의해, PPU는 그가 제어하는 저들 가장 가까운 이웃 PPU로부터의 싱크신호를 선택적으로 들을 수 있고, 그가 제어하지 않는 다른 PPU로부터의 무시신호를 들을 수 있다.
베타루터(570)는 '400 특허에서 기술된 바와 근본적으로 같은 타임의 루터이다. 제2도에서 도시한 바와같이, 이는 제7도의 큐브 핀(572)을 통하여 하이퍼큐브상태의 가장 가까운 이웃 PPU의 베타루터와 통신하는 입력과 출력라인(38, 39)의 배열을 가진다. 메시지 패키트는 어드레스 맵퍼(510)와 데이타 캐쉬(540)를 통하여 마이크로 프로세서로부터 베타루터(570)에 공급되고 수신된 메시지 패키트는 이들 동일요소를 통하여 마이크로 프로세서에 공급된다. 입력과 출력라인은 한데 다중화될 수 있고 또한 이들 라인은 알파루터의 라인(802 A-N) 및 (822 A-N)과 다중화될 수 있다.
베타루터는 기본적으로 세가지 기능에 대해 책임이 있다.
베타루터는 한 PPU로부터 다른 한 PPU로 패키트 메시지를 발송하는데 이와 똑같은 기능이 특허 400에서 수행된다.
상기 PPU로부터 기억장치 요구에 상응되는 패키트 메세지를 발생시키며 이같은 PPU와 함께 베타루터가 다른 PPU와 관계한 기억장치에 관련된다. 베타루터는 관련된 PPU로 최종 도착될 다른 PPU로부터 인입되는 패키트 메세지를 수신하며 이들 메시지를 적합하게 전달한다. 지금은 상기의 두가지 기능이 있으며, 각 기능에서 패키트 메시지를 발생시킴은 특허 400에서 공개된 바와 같다.
본 발명의 완전한 구조를 갖는 병렬 컴퓨터는 너무 비싸기 때문에 단일 사용자가 오랜 기간 동안 사용하기가 곤란하다. 컴퓨터 디자인 전체중 한가지는 컴퓨터가 수천의 사용자에 의해 동시에 사용되도록 하는 것이다. 사용자의 피크요구가 매우 높은 때 평균요구는 사용자마다 초당 수억의 정도로 상대적으로 높지 않으리라는 것을 알 수 있다. 더우기 사용자는 예를 들어 공유 데이타 베이스에서의 정보와 같은 단순한 계산 사이클이 아닌 공유자원(shared resonrces)를 사용할 수 있으리라는 것을 알 수 있다. 자원을 공유하기 위해 사용되는 기술은 사용자가 컴퓨터의 공간-시간자원을 시간뿐 아니라 공간에 있어서도 공유하므로써 컴퓨터의 공간-시간 자원을 나누기 때문에 시간공유에서와 유사하게 공간공유로 불리워지기도 한다. 이같은 견지에서 공간공유는 시간의 멀티플렉싱을 포함하기도 하기 때문에 보다 정확히 “공간-시간공유(space-time sharing)”라 불리워질 수 있다.
공간-시간공유는 모든 사용자가 언제든지 전체 시스템에 균일한 적재를 제공하는 때에도 작용될 것이다. 사용자 적재가 대체로 균일하지 않기 때문에 사용자에게 더욱 이익되는 견지에서 보다 양호하게 작용된다.
유효시간 : 많은 사용자는 이들이 기계를 사용하는 때 대부분의 경우 극소수의 주기를 요구한다. 이는 질의를 지원하는 트랜잭션 기초 시스템과 공유 데이타베이스의 경우 더욱 요구된다.
비균일 병렬성(non-uniform)을 병렬 프로그램을 수행하는 때 프로그램에는 수십만의 가상의 프로세서를 동시에 효율적으로 사용함이 가능한 많은 점들이 있다. 한번에 한단어 수행으로 충분한 다른 점들이 있을 수 있다.
비균일 기억장치요구(non-uniform memory requirements) : 많은 사용자는 주어진 시간에 컴퓨터 한 기억장치의 상대적으로 작은 부분으로의 직접 접근을 필요로 할 것이다.
데이타의 공통성(commonality of data) : 많은 사용자는 짧은 기간내에 비교적 낮은 가격으로 주기억장치내에 내장되도록 하여 같은 데이타베이스에 접근할 수가 있다.
이들 비균일성을 이용하기 위해 컴퓨터는 수행시간 요구를 기초하여 가상의 프로세서로 실제 프로세서를 동적으로 할당한다. 따라서 사용자는 얼마나 사용될 수 있는가 하는 비율과는 반대로 실제로 사용되는 것과 비례하여 자원을 소비한다.
베타루터의 특징은 공간공유를 준비하도록 각기 다른 사용자 사이의 PPU의 배열을 세분시킴을 가능하게 한다. 제2도에 도시된 바와 같이 G-in 입력단자는 한 PPU로부터 다른 한 PPU로 패키트 메시지를 운반하는 통신선(39)으로의 접근을 제어한다. 만약 통신선이 중단된다면 저신호를 통신선에 관련된 G-in 입력단자에 가하므로써 회로망으로부터 제거될 수 있다. 본 발명에 따라 하이퍼큐브의 서브큐브(sub-cube)는 서브큐브를 하이퍼큐브의 나머지에 연결시키는 통신선에 관련된 G-in 입력단자로 저신호를 가하므로써 하이퍼큐브의 나머지로부터 분리될 수 있다. 예를 들어 서브큐브 256 PPU는 서브큐브 256 PPU 각각에서 8차에서 18차까지의 통신선에 관련된 G-in 입력단자에 단순히 저신호를 가하므로써 18차의 하이퍼큐브로부터 분리될 수 있다. 동시에 하이퍼큐브의 다른 부분에서 다수의 다른 서브큐브가 사용되지 않는 규모에 대하여 통신선에 관련된 G-in 입력단자로 저신호를 가하므로써 하이퍼큐브로부터 유사하게 분리될 수 있다.
이를 달성시키기 위해 각 PPU의 마이크로 프로세서는 G-in 입력단자로의 접근을 허용받으며 서브큐브의 특정 구조에 응답하여 저신호를 과할 수 있도록 된다. 여기서의 접근은 출력상태가 PPU의 마이크로 프로세서에 의해 조절되는 플립플롭(도시되지 않음)에 의해 공급될 수 있다.
본 발명에 따라, 지시에서의 태그비트는 다른 PPU에 의해 병렬로 수행될 병렬 지시를 판단한다. 인터셉터(580)는 이같은 태그비트를 시험한다. PPU에 의해 기억장치로부터 접근되는 모든 데이타는 인터셉터(580)를 통과한다. 만약 데이타의 태그비트가 병렬 지시인 것을 표시하면 데이타 핀으로 지시가 보내지며 인터셉터가 다른 PPU로의 방송을 위해 알파루터로 병렬 신호를 보낸다. 만약 태그비트 병렬 지시를 표시하지 않으면 지시가 데이타 핀에 의해 PPU로 보내어진다.
명령 캐쉬(590)는 알파루터로부터 명령을 저장하기 위해 사용되는 기억장치이다. 가상의 프로세서 시퀀서(556)는 각 가상의 프로세서에 가해지는 작용을 실시하기 위해 명령 캐쉬로부터 PPU가 지시에 접근하도록 할 것이다.
명령 캐쉬는 기본적으로 각 작업에 의해 병렬로 동작되는 지시를 위한 지시 캐쉬이다. 캐쉬는 예를들어 256개 단어이다.
컴퓨터의 중복된 내부 구성으로 인하여 여유도를 통하여 고장허용한계를 달성하기에 적합하다. 데이타베이스내의 모든 저장은 저장모듈이 고장난 때 예비모듈로부터의 데이타가 사용되고 또다른 예비가 복사되도록 적어도 두개의 실제 분리모듈상에 있게 된다. 프로세서 모듈이 고장난 때에는 프로세서 모듈이 다시 계획되어 기능중의 프로세서의 남아있는 저장소로부터 실제 프로세서가 할당되는 때까지 시스템으로부터 분리되어 있는다.
이같은 종류의 고장허용한계 장치의 가장 어려운 문제는 이들이 발생한 때 고장을 탐지하고 분리시키며 고장이 발생한 때 처리되고 있는 작업을 다루는 것이다. 작업이 완전히 끝마쳐질 것인가의 확실성과 작업을 위해 할당된 하드웨어의 크기 사이에는 상호 교환관계가 있다. 본 발명의 병렬 컴퓨터에서 사용자는 작업의 중요성에 따라 수행시간에 이같은 교환을 만들 수 있다. 작업은 요구되는 이유도(중복)의 크기에 따라 세가지 모드중 하나로 수행될 수 있다. 본 발명의 가장 간단한 동작모드에서 제11도와 오류정정회로(550)과 같은 자체 점검 하드웨어가 사용되어 고장을 탐지하고 분리시키도록 한다. 이같은 하드웨어는 예를들어 정정할 수 없는 기억장치오류, 전력손실, 그리고 통신에서의 정정할 수 없는 오류와 같은 가장 빈번한 오류 및 고장을 탐지할 수 있다. 고장이 동작의 자체 점검모드에서 자체 점검회로에 의해 탐지되는 때마다 전류 트랜잭션이 흡수되며 그 하드웨어가 탐지부분을 분리하도록 재배치된다. 다음에 트랜잭션이 처음부터 다시 시작된다.
자체 점검회로가 발생된 대부분의 오류를 탐지할 동안 모든 오류를 탐지하리라는 것이 보장되지는 않는다. 특히 PPU 자체내의 발생되는 많은 오류는 탐지되지 않을 것이다.
이중의 여유모드에서 동작시스템은 두개의 동일한 복사 프로그램을 프로세서의 두 분리된 동일구조 데이타에 실행시키어 규칙적 간격으로 중간결과를 비교한다(n차 입방체의 형태를 한 통신시스템의 전선은 이같은 종류의 비교에 바른 통신통로를 정확히 제공한다). 그러나 이같은 비교기계는 오류의 탐지를 보증하나 왜 이들이 발생되는가? 일단 이중의 중복모드가 탐지되면 이들은 자체 점검모드에서와 똑같은 방법으로 다루어진다. 두 프로세서 모두는 진단이 어느 프로세서가 고장인가를 결정할 수 있을 때까지 시스템으로부터 분리된다.
자체 점검과 중복의 이중 모드의 단점은 이들이 만약 오류가 발생되었다면 트랜잭션을 다시 동작시킴을 필요로 한다는 것이다. 이는 비교적 작은 트랜잭션으로 편리하게 잘려질 수 없는 작업에 허용가능하다. 또한 어떤 작업에 트랜잭션의 제시도를 허용하지 않는 실시간 처리요구를 갖는다. 이들 두 경우중 어느 것에 대해서도 4배 중복모드는 고장이 나지 않는 동작을 달성시키기 위한 적합한 모드이다.
4중 중복모드에서, 4개의 동일한 복사응용이 동기식으로 수행된다. 각 작업은 순환방식으로 그 동작을 다른 동작과 비교한다. 예를들어 A는 B를 점검하고, B는 C를 점검하며, C는 D를 점검하고 그리고 D는 다시 A를 점검한다. 오류가 발생된 때에는 둘 모두가 탐지되며 잘못 짝짓기 비교방식에 의하여 분리된다. 이때 처리과정의 올바른 상태가 비-오류(non-error) 작업으로부터 또다른 서브큐브내로 복사되며, 동작이 중요한 방해없이 계속된다. 3배가 아닌 4배의 중복이 사용되어 비교를 위한 적절한 전선이 n차 입방체에서 이용가능해지도록 한다.
상기 설명된 방법 및 장치에서는 본 발명의 사상 및 범위를 벗어나지 않는 한도에서 여러 변경이 가능하며, 예를들어 본 발명이 2진의 하이퍼큐브형태로 구성된 병렬 프로세서의 배열에 관련 설명되었으나 특허 400에서 설명된 바와 같은 다른 구성이 또한 사용될 수도 있을 것이다. 그와 같은 경우 프로세서 배열에서 신호를 보내기 위해 상기 설명된 알파와 베타루터와 같은 통신장치를 위한 적절한 변경이 또한 필요하게 될 것이다.

Claims (36)

  1. 각각이 하나의 처리기, 판독/기록 기억장치 및 제어회로로 구성돼 있는 다수의 처리기, 다수의 주컴퓨터, 그리고 주컴퓨터들은 적어도 몇개의 처리기로 연결시키어 다중 처리기를 형성하도록 하기 위한 장치로 되어 있는 병렬 컴퓨터이며, 처리기의 제어회로 각각은, 상기 병렬 컴퓨터내 통신선을 통하여 한 처리기에서 다른 한 처리기로 메세지 패키트를 발송시키므로써 처리기를 상호 연결시키기 위한 수단, 그리고 상기 병렬 컴퓨터를 둘 또는 그 이상의 상호 연결된 처리기 그룹으로 나누도록 하며(서브디바이딩 수단에 의해) 이들 그룹들은 상호 작용을 하지 않도록 하는 수단을 포함하고, 상기 서브디바이딩 수단(subdividing means)은, 메세지 패키트 통신선 각각으로의 접근을 선택적으로 조정하기 위한 장치, 그리고 선택된 메세지 패키트 통신선으로의 접근을 막기 위해 조정장치를 세트시키기 위해 제어회로에 의해 주컴퓨터로부터 수신된 신호에 응답하는 장치를 특징으로 하는 병렬 컴퓨터.
  2. 제1항에 있어서, 처리기가 하이퍼큐브(hypercube) 형태로 상호 연결되며 각 통신선이 하이퍼큐브의 차원을 따라 처리기 사이를 연결시키고, 그리고 조정장치가 하이퍼큐브 각각의 차원으로 접근하도록 선택적으로 조정하므로써 하이퍼큐브 부분들이 동형의 유닛내로 나뉘어지도록 함을 특징으로 하는 병렬 컴퓨터.
  3. 제1항에 있어서, 처리기가 하이퍼큐브의 형태로 상호 연결되며, 각각의 통신선이 하이퍼큐브의 차원에 따라 처리기 사이들을 연결시키며, 이때의 상호 연결수단은 하이퍼큐브의 차원과 동일한 한 입력배열로서 이때의 입력이 상기 통신선을 통하여 하이퍼큐브내 강 인접한 처리기로부터 신호를 수신하는 입력배열, 하이퍼큐브의 차원과 동일한 한 출력배열로서 이때의 출력이 상기 통신선을 통하여 하이퍼큐브내 가장 인접한 처리기로 신호를 보내는 출력배열, 상기 입력에서 수신된 메시지 패키트를 선택된 출력으로 연결시키기 위한 논리수단, 그리고 입력에서 수신된 메시지 패키트 가운데 선택된 출력으로의 다수의 접근을 만들기 위한 수단을 포함하고, 그리고 서브디바이딩 장치가 모든 메시지 패키트에 대해 선택된 한 출력으로의 접근을 부정하므로써 출력으로의 접근을 선택적으로 금지시키도록 하기 위한 수단을 포함함을 특징으로 하는 병렬 컴퓨터.
  4. 제1항에 있어서, 처리기가 n차원의 하이퍼큐브 형태로 상호 연결되며, 각 처리기의 제어회로가 하이퍼큐브의 각 차원내 가장 인접한 처리기로부터 하나의 신호입력을 갖는 제1게이트수단, 게이트수단으로부터의 한 출력으로서 하나 또는 둘 이상의 하이퍼큐브의 가장 인접한 처리기로부터 한 신호입력을 수신할 수 있도록 게이트수단을 제어하는 수단, 하이퍼큐브의 각 차원내 가장 가까이 인접한 처리기로 한 신호출력을 갖는 제2게이트수단, 다수의 입력신호중 하나를 하이퍼큐브의 가장 가까이 인접한 처리기로 한 출력으로서 선택할 수 있도록 하기 위해 제2게이트수단을 제어하기 위한 수단으로서, 그 첫번째 것이 제1게이트수단으로부터의 한 출력이고 두번째 것이 제어회로에서와 같은 처리기로부터의 한 출력이며, 이에 의해서 상기 처리기로부터 또는 선택된 가장 가까이 인접한 처리기로부터의 신호가 상기 제2게이트수단을 통하여 이에 연결된 가장 가까이 인접한 처리기로 전송될 수 있도록 함을 특징으로 하는 병렬 컴퓨터.
  5. 제4항에 있어서, 제1게이트수단이 가장 가까이 인접한 처리기로부터의 하나 또는 둘 이상의 신호입력을 선택하기 위한 그리고 상기 선택된 입력의 논리 OR을 형성시키기 위한 수단을 포함함을 특징으로 하는 병렬 컴퓨터.
  6. 제5항에 있어서, 제2게이트로의 제2입력신호가 처리기로부터의 한 지시신호이며 이 신호는 제2게이트수단을 경유하여 제2게이트로 연결되는 가장 가까이 인접한 처리기로 전송됨을 특징으로 하는 병렬 컴퓨터.
  7. 제6항에 있어서, 지시신호가 제어회로에 의하여 선택된 가장 가까이 인접한 처리기로부터 제1게이트의 출력을 통하여 수신됨을 특징으로 하는 병렬 컴퓨터.
  8. 제5항에 있어서, 하이퍼큐브의 각 차원내 가장 가까이 인접한 처리기로부터 하나의 신호입력을 가지는 제3의 게이트, 제3게이트로부터의 한 출력으로서 하이퍼큐브내 가장 가까이 인접한 처리기중 하나로부터 한 신호입력을 선택할 수 있도록 하기 위해 제3의 게이트를 제어하기 위한 수단, 제2게이트 수단으로의 제2입력으로 제공되는 하나의 신호출력을 가지는 제4게이트, 그리고 다수 입력신호중 하나를 한 출력으로 선택할 수 있기 위해 제4게이트를 제어하기 위한 수단으로서, 입력신호중 첫번째가 제3게이트의 출력이고, 그 두번째가 제어회로에서와 같은 처리기로부터의 출력이므로 상기 처리기로부터의 신호 또는 선택된 가장 가까이 인접한 처리기로부터의 신호가 제2게이트를 통하여 이에 연결된 가장 가까이 인접한 처리기로 전송되도록 하는 제어수단을 더욱더 포함하는 병렬 컴퓨터.
  9. 제8항에 있어서, 제2게이트로의 제2입력신호가 제2게이트를 통하여 하이퍼큐브의 가장 가까이 인접한 처리기로 전송되는 처리기로부터의 동기화 신호이며, 상기의 가장 가까이 인접한 처리기가, 제2게이트로 연결되며 제4게이트로의 제2입력신호가 제2게이트에 연결된 가장 가까이 인접한 처리기로 제2게이트를 경유하여 전송되는 처리기로부터의 한 지시신호임을 특징으로 하는 병렬 컴퓨터.
  10. 제9항에 있어서, 동기화 신호가 제어회로에 의해 제1게이트의 출력을 통하여 가장 가까이 인접한 처리기에 의해 수신되고, 지시신호는 제3게이트의 출력을 통해서 가장 가까이 인접한 처리기로부터 수신됨을 특징으로 하는 병렬 컴퓨터.
  11. 제4항에 있어서, 제2게이트로의 제2입력신호가 제2게이트에 연결된 가장 가까이 인접한 처리기로 제2게이트를 경유하여 전송되는 동기화 신호임을 특징으로 하는 병렬 컴퓨터.
  12. 제11항에 있어서, 동기화 신호가 제어회로에 의하여 제1게이트의 출력을 통해서 가장 가까이 인접한 처리기로부터 수신되며, 이에 의하여 동기화 지시를 제2게이트를 경유하여 상기 처리기로 전송시키고, 처리기로부터의 적절한 응답을 위해 제1게이트의 출력을 모니터하므로써 제2게이트에 연결된 처리기내 동작을 동기화시킬 수 있음을 특징으로 하는 병렬 컴퓨터.
  13. 각각이 하나의 처리기, 판독/기록 기억장치 및 제어회로로 구성돼 있는 다수의 처리기, 처리기들을 상호 연결시키기 위한 연결 네트워크, 다수의 주컴퓨터, 그리고 주컴퓨터들은 적어도 몇개의 처리기로 연결시키기 위한 수단으로 되어 있는 병렬 컴퓨터이며, 처리기의 제어회로 각각은, 상기 처리기로부터 수신된 주소에 응답해서 동처리기의 판독/기록 기억장치를 주소하도록 하고 동 기억장치로부터 정보를 판독하기 위한 수단, 판독/기록 기억장치로부터 판독된 정보를 저장하기 위한 자료캐쉬, 한 처리기로부터 다른 한 처리기로 자료를 보내기 위해 상기 자료캐쉬에 연결된 수단, 한 처리기로부터 다른 한 처리기로 자료를 보내기 위한 수단, 상기 자료캐쉬에 의해 저장된 정보가 병렬 지시인가를 검사하고 만약 그렇다면 지시 발송수단으로 병렬 지시를 제공하고 만약 그렇지 않다면 상기 처리기로 정보를 제공하기 위한 수단, 그리고 상기 병렬 컴퓨터를 둘 또는 그 이상의 상호 연결된 처리기 그룹으로 나누도록 하며(서브디바이딩 수단에 의해) 이들 그룹들은 상호 작용을 하지 않도록 하는 수단을 포함하고, 상기 서브디바이딩 수단(subdividing means)은, 메세지 패키트 통신선 각각으로의 접근을 선택적으로 조정하기 위한 장치, 그리고 선택된 메세지 패키트 통신선으로의 접근을 막기 위해 조정장치를 세트시키기 위해 제어회로에 의해 주컴퓨터로부터 수신된 신호에 응답하는 장치를 포함함을 특징으로 하는 병렬 컴퓨터.
  14. 제13항에 있어서, 처리기가 하이퍼큐브(hypercube) 형태로 상호 연결되며 한 통신선이 하이퍼큐브의 차원을 따라 처리기 사이를 연결시키고, 그리고 각 처리기의 조정장치가 하이퍼큐브 차원을 따라 통신선 각각으로 접근하도록 선택적으로 조정하므로써 하이퍼큐브 부분들이 동형의 유닛내로 나뉘어지도록 함을 특징으로 하는 병렬 컴퓨터.
  15. 제13항에 있어서, 처리기가 하이퍼큐브의 형태로 상호 연결되며, 한 통신선이 하이퍼규브의 한 차원을 따라 처리기 사이들을 연결시키며, 자료경로 수단이 하이퍼큐브의 차원과 동일한 한 입력배열로서 이때의 입력이 상기 통신선을 통하여 하이퍼큐브내 가장 인접한 처리기로부터 신호를 수신하는 입력배열, 하이퍼큐브의 차원과 동일한 한 출력배열로서 이때의 출력이 상기 통신선을 통하여 하이퍼큐브내 가장 인접한 처리기로 신호를 보내는 출력배열, 상기 입력에서 수신된 메세지 패키트를 선택된 출력으로 연결시키기 위한 논리수단, 그리고 입력에서 수신된 메세지 패키지 가운데 선택된 출력으로의 다수의 접근을 만들기 위한 수단을 포함하고, 그리고 서브디바이딩 장치가 모든 메세지 패키트에 대해 선택된 한 출력으로의 접근을 부정하므로써 출력으로의 접근을 선택적으로 금지시키도록 하기 위한 수단을 포함함을 특징으로 하는 병렬 컴퓨터.
  16. 제13항에 있어서, 처리기가 n 차원의 하이퍼큐브 형태로 상호 연결되며, 각 처리기의 지시경로수단이, 하이퍼큐브의 각 차원내 가장 인접한 처리기로부터 하나의 신호입력을 갖는 제1게이트수단, 게이트수단으로부터의 한 출력으로서 하나 또는 둘 이상의 하이퍼큐브의 가장 인접한 처리기로부터 한 신호입력을 수신 할 수 있도록 게이트수단을 제어하는 수단, 하이퍼큐브의 각 차원내 가장 가까이 인접한 처리기로 한 신호 출력을 갖는 제2게이트수단, 다수의 입력신호중 하나를 하이퍼큐브의 가장 가까이 인접한 처리기로 한 출력으로서 선택할 수 있도록 하기 위해 제2시스템수단을 제어하기 위한 수단으로서, 그 첫번째 것이 제1게이트수단으로부터의 한 출력이고 두번째 것이 제어회로에서와 같은 처리기로부터의 한 출력이며, 이에 의해서 상기 처리기로부터 또는 선택된 가장 가까이 인접한 처리기로부터의 신호가 상기 제2게이트수단을 통하여 이에 연결된 가장 가까이 인접한 처리기로 전송될 수 있도록 함을 특징으로 하는 병렬 컴퓨터.
  17. 제16항에 있어서, 제1게이트수단이 가장 가까이 인접한 처리기로부터의 하나 또는 둘 이상의 신호입력을 선택하기 위한 그리고 상기 선택된 입력의 논리 OR을 형성시키기 위한 수단을 포함함을 특징으로 하는 병렬 컴퓨터.
  18. 제17항에 있어서, 동기화 신호가 제1게이트의 출력을 통해서 가장 가까이 인접한 처리기로부터 제어회로에 의해 수신되며, 동기화 신호를 제2게이트를 통해 상기 처리기로 보내고 상기 처리기로부터의 적절한 응답을 위해 제1게이트의 출력을 모니터하므로써 제2게이트에 연결된 처리기에서 동작을 동기화할 수 있음을 특징으로 하는 병렬 컴퓨터.
  19. 제16항에 있어서, 제2게이트로의 제2입력신호가 처리기로부터의 한 동기화 신호이며 이 신호는 제2게이트수단을 경유하여 제2게이트로 연결되는 가장 가까이 인접한 처리기로 전송됨을 특징으로 하는 병렬컴퓨터.
  20. 제16항에 있어서, 제2게이트로의 두번째 입력신호가 검사장치로부터의 한 병렬 지시이며 그것이 제2게이트를 경유하여 제2게이트로 연결된 가장 가까이 인접한 처리기로 전송됨을 특징으로 하는 병렬 컴퓨터.
  21. 제20항에 있어서, 지시신호가 제어회로에 의하여 선택된 가장 가까이 인접한 처리기로부터 제1게이트의 출력을 통해서 수신되며 자료캐쉬로 제공됨을 특징으로 하는 병렬 컴퓨터.
  22. 제16항에 있어서, 하이퍼큐브의 각 차원내 가장 가까이 인접한 처리기로부터 하나의 신호입력을 가지는 제3의 게이트, 제3게이트로부터의 한 출력으로서 하이퍼큐브내 가장 가까이 인접한 처리기중 하나로부터 한 신호입력을 선택할 수 있도록 하기 위해 제3의 게이트를 제어하기 위한 수단, 제2게이트수단으로의 제2입력으로 제공되는 하나의 신호출력을 가지는 제4게이트, 그리고 다수 입력신호중 하나를 한 출력으로 선택할 수 있기 위해 제4게이트를 제어하기 위한 수단으로서, 입력신호중 첫번째가 제3게이트의 출력이고, 그 두번째가 제어회로에서와 같은 처리기로부터의 출력이므로 상기 처리기로부터의 신호 또는 선택된 가장 가까이 인접한 처리기로부터의 신호가 제2게이트를 통하여 이에 연결된 가장 가까이 인접한 처리기로 전송 되도록 하는 제어수단을 더욱더 포함하는 병렬 컴퓨터.
  23. 제22항에 있어서, 제2게이트로의 제2입력신호가 제2게이트를 통하여 하이퍼큐브의 가장 가까이 인접한 처리기로 전송되는 처리기로부터의 동기화 신호이며, 상기의 가장 가까이 인접한 처리기가 제2게이트로 연결되며 제4게이트로의 제2입력신호가 제2게이트에 연결된 가장 가까이 인접한 처리기로 제2게이트를 경유하여 전송되는 검사장치로부터의 한 병렬 지시임을 특징으로 하는 병렬 컴퓨터.
  24. 제23항에 있어서, 동기화 신호가 제어회로에 의해 제1게이트의 출력을 통하여 가장 가까이 인접한 처리기에 의해 수신되고, 지시신호는 제3게이트의 출력을 통해서 가장 가까이 인접한 처리기로부터 수신되며 자료캐쉬로 제공됨을 특징으로 하는 병렬 컴퓨터.
  25. 하나의 분리된 처리그룹을 형성시키기 위해 나뉘어지는 다수의 상호 연결된 처리기의 한 처리그룹내 처리기들 가운데서 신호전송을 제어하기 위한 한 회로로 구성되어 있는 다중 처리기에서, 각 처리기가 게이트가 연결되는 다수의 처리기 각각으로부터 하나의 입력을 가지는 제1게이트, 1게이트를 제어하여 동게이트로부터의 한 출력을 선택할 수 있도록 하기 위한 수단, 게이트가 연결되는 다수 처리기 각각으로 하나의 신호출력을 가지는 제2게이트, 그리고 제2게이트를 제어하여 처리기로의 한 출력으로서 다수의 신호중 하나를 선택할 수 있도록 하기 위한 수단으로 구성됨을 특징으로 하는 병렬 컴퓨터.
  26. 제25항에 있어서, 제1게이트가 입력이 연결되는 처리기로부터 어느 하나 또는 둘 이상의 신호입력을 선택하기 위한 그리고 상기 선택된 입력의 논리 OR를 형성하기 위한 수단을 포함함을 특징으로 하는 병렬 컴퓨터.
  27. 제25항에 있어서, 처리기로부터의 동기화 신호로서 제2게이트로의 제2입력신호가 제2게이트를 경유하여 제2게이트에 연결되는 처리기로 보내짐을 특징으로 하는 병렬 컴퓨터.
  28. 제27항에 있어서, 동기화 신호가 처리기로부터 제1게이트로의 입력에서 수신되고, 제2게이트의 출력이 상기 처리기로 연결되므로써, 제2게이트를 통하여 처리기로의 동기화 지시를 전송시키고 동처리기로부터의 적절한 응답을 위해 제1게이트의 출력을 모니터하여 제2게이트에 연결된 처리기내 동작을 동기화할 수 있음을 특징으로 하는 병렬 컴퓨터.
  29. 제25항에 있어서, 제2게이트로의 제2입력신호가 상기 처리기로부터의 지시신호이며 그 신호가 제2게이트에 연결된 처리기로 제2게이트를 경유하여 전송됨을 특징으로 하는 병렬 컴퓨터.
  30. 제29항에 있어서, 지시신호가 제1게이트의 출력을 통하여 선택된 처리기로부터 제어회로에 의해 수신됨을 특징으로 하는 병렬 컴퓨터.
  31. 제25항에 있어서, 제어회로가 제1게이트가 연결되는 다수처리기 각각으로부터의 한 신호입력을 가지는 제3게이트, 제3게이트를 제어하여 동게이트로부터의 한 출력으로서 상기 처리기중 하나로부터의 한 신호입력 선택할 수 있도록 하기 위한 수단, 두번째 입력으로서 제2게이트로 제공된 한 신호출력을 가지는 제4게이트, 그리고 제4게이트를 제어하기 위해 출력으로서 다수의 입력신호중 제어하기 위한 수단으로서, 다수 입력신호중 첫번째 입력이 제3게이트의 출력이며 두번째 입력이 제어회로에서와 같은 처리기로부터의 출력이고, 이에 의해 동처리기로부터 혹은 제3게이트로의 한 입력으로 연결된 선택된 처리기로부터의 신호가 제2게이트를 경유해서 제2게이트에 연결된 처리기로 전송됨을 특징으로 하는 병렬 컴퓨터.
  32. 제31항에 있어서, 제2게이트로의 두번째 입력신호가 제2게이트를 경유하여 이에 연결된 처리기로 전송되는 동기화 신호이고, 제4게이트로의 두번째 입력신호가 제2게이트를 경유하여 이에 연결된 처리기로 전송되는 지시신호임을 특징으로 하는 병렬 컴퓨터.
  33. 제32항에 있어서, 동기화 신호가 제2게이트의 출력이 연결되는 처리기로부터 제1게이트로의 입력에서 수신되고, 지시신호가 제3게이트의 출력을 통하여 상기 처리기로부터의 제어회로에 의해 수신됨을 특징으로 하는 병렬 컴퓨터.
  34. 제25항에 있어서, 처리기가 n차원의 하이퍼큐브형태로 연결되고, 제1게이트가 하이퍼큐브내 가장 가까이 인접한 처리기 각각으로부터 하나씩인 n개 입력을 가지며 제2게이트가 동하이퍼큐브내 가장 가까이 인접한 처리기 각각으로 하나씩인 n개 출력을 가짐을 특징으로 하는 병렬 컴퓨터.
  35. A. 각각이 적어도 하나의 처리기를 포함하고 각 처리기가 다른 한 처리기로의 전달을 위한 메세지를 발생시키며, 적어도 한 처리기가 한 부분제어신호를 발생시키는 다수의 처리기 그룹, B. 다수의 노드와 이들 노드들을 상호 연결시키기 위한 다수의 통신링크를 포함하며, 각 노드가 i. 관련된 처리기 그룹의 처리기로부터 메세지를 수신하기 위한 한 수신회로, ii. 수신된 메세지가 전송될 것인지에 대해 통신링크를 식별시키기 위한 출력 통신링크 식별자(identifier), iii. 출력 통신링크 식별자에 의해 식별로 통신링크로 각 메세지를 결합시키기 위한 결합기, 그리고 iv. 상기 부분 제어신호에 응답하여 선택된 한 통신링크를 통해서 결합기가 메세지를 전송시킴을 금지하기 위한 금지기(inhibitor)를 포함함을 특징으로 하는 병렬 컴퓨터.
  36. 제35항에 있어서, 처리기가 n 차원의 하이퍼큐브형태로 상호 연결되고, 통신링크가 하이퍼큐브의 차원를 따라서 처리기들 사이를 상호 연결시키며 메세지 전달 네트워크가 하이퍼큐브의 차원을 따라서 통신링크 각각으로의 접근을 제어하도록 하며, 이에 의해서 하이퍼큐브의 부분들이 동등한 유닛들로 나뉘어지게 됨을 특징으로 하는 병렬 컴퓨터.
KR1019870009566A 1986-08-29 1987-08-29 초대형 컴퓨터 KR960012654B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US90229086A 1986-08-29 1986-08-29
US902,290 1986-08-29
US902290 1986-08-29

Publications (2)

Publication Number Publication Date
KR880003237A KR880003237A (ko) 1988-05-14
KR960012654B1 true KR960012654B1 (ko) 1996-09-23

Family

ID=25415622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019870009566A KR960012654B1 (ko) 1986-08-29 1987-08-29 초대형 컴퓨터

Country Status (9)

Country Link
US (3) US5129077A (ko)
EP (1) EP0262750B1 (ko)
JP (1) JP2792649B2 (ko)
KR (1) KR960012654B1 (ko)
CN (1) CN1020972C (ko)
CA (1) CA1293819C (ko)
DE (1) DE3751616T2 (ko)
IN (1) IN170067B (ko)
WO (1) WO1988001772A1 (ko)

Families Citing this family (186)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4985832A (en) * 1986-09-18 1991-01-15 Digital Equipment Corporation SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors
US5175865A (en) * 1986-10-28 1992-12-29 Thinking Machines Corporation Partitioning the processors of a massively parallel single array processor into sub-arrays selectively controlled by host computers
US5418970A (en) * 1986-12-17 1995-05-23 Massachusetts Institute Of Technology Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content
US5761413A (en) * 1987-12-22 1998-06-02 Sun Microsystems, Inc. Fault containment system for multiprocessor with shared memory
US5282201A (en) * 1987-12-22 1994-01-25 Kendall Square Research Corporation Dynamic packet routing network
US5226039A (en) * 1987-12-22 1993-07-06 Kendall Square Research Corporation Packet routing switch
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5822578A (en) * 1987-12-22 1998-10-13 Sun Microsystems, Inc. System for inserting instructions into processor instruction stream in order to perform interrupt processing
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5341483A (en) * 1987-12-22 1994-08-23 Kendall Square Research Corporation Dynamic hierarchial associative memory
EP0605401B1 (en) * 1988-09-19 1998-04-22 Fujitsu Limited Parallel computer system using a SIMD method
US5276893A (en) * 1989-02-08 1994-01-04 Yvon Savaria Parallel microprocessor architecture
DE69132495T2 (de) * 1990-03-16 2001-06-13 Texas Instruments Inc Verteilter Verarbeitungsspeicher
US5168499A (en) * 1990-05-02 1992-12-01 California Institute Of Technology Fault detection and bypass in a sequence information signal processor
DE69130587T2 (de) * 1990-05-10 1999-05-06 Hewlett Packard Co System zum Integrieren von Anwenderprogrammen in eine heterogene Netzwerkumgebung
US5193202A (en) * 1990-05-29 1993-03-09 Wavetracer, Inc. Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor
US5157785A (en) * 1990-05-29 1992-10-20 Wavetracer, Inc. Process cell for an n-dimensional processor array having a single input element with 2n data inputs, memory, and full function arithmetic logic unit
US5367636A (en) * 1990-09-24 1994-11-22 Ncube Corporation Hypercube processor network in which the processor indentification numbers of two processors connected to each other through port number n, vary only in the nth bit
US5777609A (en) * 1990-10-29 1998-07-07 Societe Nationale Elf Aquitaine Method of exploiting colors on screen
US5617577A (en) * 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5825773A (en) * 1991-03-20 1998-10-20 Hitachi, Ltd. Switching system for transferring broadcast packet held in broadcast buffer received from input port to output ports according to the state of each output port
US5426747A (en) * 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US5442772A (en) * 1991-03-29 1995-08-15 International Business Machines Corporation Common breakpoint in virtual time logic simulation for parallel processors
FR2675923A1 (fr) * 1991-04-25 1992-10-30 Yonter Eric Architecture de systeme informatique massivement parallele.
JP3679813B2 (ja) * 1991-07-22 2005-08-03 株式会社日立製作所 並列計算機
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
CA2078312A1 (en) 1991-09-20 1993-03-21 Mark A. Kaufman Digital data processor with improved paging
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
RO105026B1 (en) * 1991-10-10 1993-09-01 Ion Minca Network structure for parallel processing of calcullation programs
US5594915A (en) * 1991-11-13 1997-01-14 Atalla; Martin M. Microcell computer system and method using cell access switch and functionally partitioned moving memory architecture
US5564107A (en) * 1991-11-13 1996-10-08 Atalla; Martin M. Microcell computer system and method using cell access switch and moving memory architecture
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
US5347654A (en) * 1992-02-03 1994-09-13 Thinking Machines Corporation System and method for optimizing and generating computer-based code in a parallel processing environment
JP3375658B2 (ja) * 1992-03-19 2003-02-10 株式会社日立製作所 並列計算機およびそのためのネットワーク
US6047122A (en) * 1992-05-07 2000-04-04 Tm Patents, L.P. System for method for performing a context switch operation in a massively parallel computer system
US5758053A (en) * 1992-07-22 1998-05-26 Hitachi, Ltd. Fault handling and recovery for system having plural processors
US5579527A (en) * 1992-08-05 1996-11-26 David Sarnoff Research Center Apparatus for alternately activating a multiplier and a match unit
US5581778A (en) * 1992-08-05 1996-12-03 David Sarnoff Researach Center Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock
JP2977688B2 (ja) * 1992-12-18 1999-11-15 富士通株式会社 マルチプロセッシング装置、方法、及びこれらに使用するプロセッサ
US5574914A (en) * 1993-01-04 1996-11-12 Unisys Corporation Method and apparatus for performing system resource partitioning
JPH06243113A (ja) * 1993-02-19 1994-09-02 Fujitsu Ltd 並列計算機における計算モデルのマッピング法
JPH06325005A (ja) * 1993-05-14 1994-11-25 Fujitsu Ltd 再構成可能なトーラス・ネットワーク方式
JPH08501403A (ja) * 1993-06-30 1996-02-13 グンツィンガー,アントン インテリジェント通信システム
FR2707778B1 (fr) * 1993-07-15 1995-08-18 Bull Sa NÓoeud de processeurs.
FR2707776B1 (fr) 1993-07-15 1995-08-18 Bull Sa Procédé de gestion de mémoires d'un système informatique, système informatique mémoire et support d'enregistrement mettant en Óoeuvre le procédé.
CA2129882A1 (en) * 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
US5784706A (en) 1993-12-13 1998-07-21 Cray Research, Inc. Virtual to logical to physical address translation for distributed memory massively parallel processing systems
GB2286067A (en) * 1993-12-23 1995-08-02 Motorola Inc A processor system
US5515501A (en) * 1994-01-21 1996-05-07 Unisys Corporation Redundant maintenance architecture
JP3300776B2 (ja) * 1994-03-15 2002-07-08 株式会社日立製作所 並列プロセッサの切替え制御方式
US5611054A (en) * 1994-03-18 1997-03-11 Intel Corporation Method and apparatus for decoding and recoding of addresses
US5600822A (en) * 1994-04-05 1997-02-04 International Business Machines Corporation Resource allocation synchronization in a parallel processing system
WO1995028686A1 (en) * 1994-04-15 1995-10-26 David Sarnoff Research Center, Inc. Parallel processing computer containing a multiple instruction stream processing architecture
US5586289A (en) * 1994-04-15 1996-12-17 David Sarnoff Research Center, Inc. Method and apparatus for accessing local storage within a parallel processing computer
US5463732A (en) * 1994-05-13 1995-10-31 David Sarnoff Research Center, Inc. Method and apparatus for accessing a distributed data buffer
JP2625385B2 (ja) * 1994-06-30 1997-07-02 日本電気株式会社 マルチプロセッサシステム
US5832287A (en) * 1994-07-11 1998-11-03 Atalla; Martin M. Wideband on-demand video distribution system and method
US5671377A (en) * 1994-07-19 1997-09-23 David Sarnoff Research Center, Inc. System for supplying streams of data to multiple users by distributing a data stream to multiple processors and enabling each user to manipulate supplied data stream
JP3560662B2 (ja) * 1994-12-06 2004-09-02 富士通株式会社 並列プロセッサ装置
US5640584A (en) * 1994-12-12 1997-06-17 Ncr Corporation Virtual processor method and apparatus for enhancing parallelism and availability in computer systems
US5603005A (en) * 1994-12-27 1997-02-11 Unisys Corporation Cache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed
US5717942A (en) * 1994-12-27 1998-02-10 Unisys Corporation Reset for independent partitions within a computer system
US5710938A (en) * 1995-07-19 1998-01-20 Unisys Corporation Data processing array in which sub-arrays are established and run independently
KR970043012A (ko) * 1995-12-19 1997-07-26 백운화 효과적인 현탁배양을 위한 식물세포 배양장치
US5913070A (en) * 1996-01-16 1999-06-15 Tm Patents, L.P. Inter-connector for use with a partitionable massively parallel processing system
US5918243A (en) * 1996-01-30 1999-06-29 International Business Machines Corporation Computer mechanism for reducing DASD arm contention during parallel processing
US5675768A (en) * 1996-02-01 1997-10-07 Unisys Corporation Store software instrumentation package instruction
US5761696A (en) * 1996-04-02 1998-06-02 International Business Machines Corporation Parallel database serving mechanism for a single-level-store computer system
US5970510A (en) * 1996-04-10 1999-10-19 Northrop Grumman Corporation Distributed memory addressing system
US5799149A (en) * 1996-06-17 1998-08-25 International Business Machines Corporation System partitioning for massively parallel processors
US5881227A (en) * 1996-06-17 1999-03-09 International Business Machines Corporation Use of daemons in a partitioned massively parallel processing system environment
US5854896A (en) * 1996-06-17 1998-12-29 International Business Machines Corporation System for preserving logical partitions of distributed parallel processing system after re-booting by mapping nodes to their respective sub-environments
US5941943A (en) * 1996-06-17 1999-08-24 International Business Machines Corporation Apparatus and a method for creating isolated sub-environments using host names and aliases
US5799143A (en) * 1996-08-26 1998-08-25 Motorola, Inc. Multiple context software analysis
US6084638A (en) * 1996-10-08 2000-07-04 Hare; Charles S. Computer interface extension system and method
US6279098B1 (en) 1996-12-16 2001-08-21 Unisys Corporation Method of and apparatus for serial dynamic system partitioning
US5970253A (en) * 1997-01-09 1999-10-19 Unisys Corporation Priority logic for selecting and stacking data
US5822766A (en) * 1997-01-09 1998-10-13 Unisys Corporation Main memory interface for high speed data transfer
KR100207598B1 (ko) * 1997-01-27 1999-07-15 윤종용 상호연결망으로서 파이브 채널을 사용한 클러스터시스템
US6567837B1 (en) * 1997-01-29 2003-05-20 Iq Systems Object oriented processor arrays
JP3603524B2 (ja) * 1997-02-05 2004-12-22 株式会社日立製作所 ネットワーキング方法
US5978881A (en) * 1997-02-24 1999-11-02 Sigma Electronics, Inc. Scalable switcher with detachably securable frame adapter cards for routing audio and video signals
US6633916B2 (en) 1998-06-10 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for virtual resource handling in a multi-processor computer system
US6332180B1 (en) 1998-06-10 2001-12-18 Compaq Information Technologies Group, L.P. Method and apparatus for communication in a multi-processor computer system
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6542926B2 (en) 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6199179B1 (en) 1998-06-10 2001-03-06 Compaq Computer Corporation Method and apparatus for failure recovery in a multi-processor computer system
US6260068B1 (en) 1998-06-10 2001-07-10 Compaq Computer Corporation Method and apparatus for migrating resources in a multi-processor computer system
JP4634548B2 (ja) * 1997-11-04 2011-02-16 ヒューレット・パッカード・カンパニー マルチプロセッサコンピュータシステム及びその動作方法
US6226734B1 (en) 1998-06-10 2001-05-01 Compaq Computer Corporation Method and apparatus for processor migration from different processor states in a multi-processor computer system
US6647508B2 (en) 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6047390A (en) * 1997-12-22 2000-04-04 Motorola, Inc. Multiple context software analysis
JP3794151B2 (ja) 1998-02-16 2006-07-05 株式会社日立製作所 クロスバースイッチを有する情報処理装置およびクロスバースイッチ制御方法
US6247109B1 (en) 1998-06-10 2001-06-12 Compaq Computer Corp. Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space
US6836838B1 (en) 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6356548B1 (en) 1998-06-29 2002-03-12 Cisco Technology, Inc. Pooled receive and transmit queues to access a shared bus in a multi-port switch asic
US6119215A (en) 1998-06-29 2000-09-12 Cisco Technology, Inc. Synchronization and control system for an arrayed processing engine
US6101599A (en) * 1998-06-29 2000-08-08 Cisco Technology, Inc. System for context switching between processing elements in a pipeline of processing elements
US6195739B1 (en) 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6513108B1 (en) 1998-06-29 2003-01-28 Cisco Technology, Inc. Programmable processing engine for efficiently processing transient data
SE515461C2 (sv) * 1998-10-05 2001-08-06 Ericsson Telefon Ab L M Metod och arrangemang för minneshantering
US6728839B1 (en) 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
US6173386B1 (en) 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
US6385747B1 (en) 1998-12-14 2002-05-07 Cisco Technology, Inc. Testing of replicated components of electronic device
US6920562B1 (en) 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
DE19910863A1 (de) * 1999-03-11 2000-09-21 Siemens Ag Vorrichtung und Verfahren zum Verarbeiten von Aufträgen
US20080016318A1 (en) * 1999-04-09 2008-01-17 Dave Stuttard Parallel data processing apparatus
US8169440B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Parallel data processing apparatus
US7802079B2 (en) * 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US8174530B2 (en) * 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US8762691B2 (en) * 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US20080007562A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
US7627736B2 (en) * 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
US20070242074A1 (en) * 1999-04-09 2007-10-18 Dave Stuttard Parallel data processing apparatus
US8171263B2 (en) * 1999-04-09 2012-05-01 Rambus Inc. Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions
US20080162874A1 (en) * 1999-04-09 2008-07-03 Dave Stuttard Parallel data processing apparatus
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
AU3829500A (en) * 1999-04-09 2000-11-14 Clearspeed Technology Limited Parallel data processing apparatus
US8019870B1 (en) 1999-08-23 2011-09-13 Oracle America, Inc. Approach for allocating resources to an apparatus based on alternative resource requirements
US7463648B1 (en) 1999-08-23 2008-12-09 Sun Microsystems, Inc. Approach for allocating resources to an apparatus based on optional resource requirements
US8234650B1 (en) 1999-08-23 2012-07-31 Oracle America, Inc. Approach for allocating resources to an apparatus
US7103647B2 (en) 1999-08-23 2006-09-05 Terraspring, Inc. Symbolic definition of a computer system
US7703102B1 (en) 1999-08-23 2010-04-20 Oracle America, Inc. Approach for allocating resources to an apparatus based on preemptable resource requirements
US6597956B1 (en) 1999-08-23 2003-07-22 Terraspring, Inc. Method and apparatus for controlling an extensible computing system
US6779016B1 (en) * 1999-08-23 2004-08-17 Terraspring, Inc. Extensible computing system
US8032634B1 (en) 1999-08-23 2011-10-04 Oracle America, Inc. Approach for allocating resources to an apparatus based on resource requirements
US8179809B1 (en) 1999-08-23 2012-05-15 Oracle America, Inc. Approach for allocating resources to an apparatus based on suspendable resource requirements
US6903756B1 (en) * 1999-10-14 2005-06-07 Jarbridge, Inc. Merged images viewed via a virtual storage closet
US7917397B1 (en) 1999-10-14 2011-03-29 Jarbridge, Inc. Merging private images for gifting
US6529983B1 (en) 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6681341B1 (en) 1999-11-03 2004-01-20 Cisco Technology, Inc. Processor isolation method for integrated multi-processor systems
US7649901B2 (en) 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US7502876B1 (en) 2000-06-23 2009-03-10 Mips Technologies, Inc. Background memory manager that determines if data structures fits in memory with memory state transactions map
US7155516B2 (en) * 2000-02-08 2006-12-26 Mips Technologies, Inc. Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory
US7082552B2 (en) * 2000-02-08 2006-07-25 Mips Tech Inc Functional validation of a packet management unit
US7058065B2 (en) * 2000-02-08 2006-06-06 Mips Tech Inc Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing
US7139901B2 (en) * 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US7065096B2 (en) 2000-06-23 2006-06-20 Mips Technologies, Inc. Method for allocating memory space for limited packet head and/or tail growth
US7042887B2 (en) * 2000-02-08 2006-05-09 Mips Technologies, Inc. Method and apparatus for non-speculative pre-fetch operation in data packet processing
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
US7165257B2 (en) 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7032226B1 (en) 2000-06-30 2006-04-18 Mips Technologies, Inc. Methods and apparatus for managing a buffer of events in the background
US7058064B2 (en) 2000-02-08 2006-06-06 Mips Technologies, Inc. Queueing system for processors in packet routing operations
US7076630B2 (en) * 2000-02-08 2006-07-11 Mips Tech Inc Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memo management
US7093005B2 (en) 2000-02-11 2006-08-15 Terraspring, Inc. Graphical editor for defining and creating a computer system
US6714980B1 (en) 2000-02-11 2004-03-30 Terraspring, Inc. Backup and restore of data associated with a host in a dynamically changing virtual server farm without involvement of a server that uses an associated storage device
US6892237B1 (en) 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6505269B1 (en) 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US6807557B1 (en) 2000-05-31 2004-10-19 International Business Machines Corporation Method, system and program products for providing clusters of a computing environment
US7263476B1 (en) * 2000-06-12 2007-08-28 Quad Research High speed information processing and mass storage system and method, particularly for information and application servers
JP4712279B2 (ja) * 2000-06-20 2011-06-29 テラスプリング・インコーポレーテッド 拡張可能コンピューティングシステムの制御方法および装置
WO2002015018A1 (en) * 2000-08-11 2002-02-21 3Ware, Inc. Architecture for providing block-level storage access over a computer network
US7644120B2 (en) * 2000-09-15 2010-01-05 Invensys Systems, Inc. Industrial process control data access server supporting multiple client data exchange protocols
US6751667B1 (en) * 2000-10-06 2004-06-15 Hewlett-Packard Development Company, L.P. System for generating unique identifiers in a computer network
US7328232B1 (en) * 2000-10-18 2008-02-05 Beptech Inc. Distributed multiprocessing system
US20040158663A1 (en) * 2000-12-21 2004-08-12 Nir Peleg Interconnect topology for a scalable distributed computer system
WO2002052425A1 (en) * 2000-12-21 2002-07-04 Exanet Co. Interconnect topology for a scalable distributed computer system
US6934254B2 (en) * 2001-01-18 2005-08-23 Motorola, Inc. Method and apparatus for dynamically allocating resources in a communication system
US7631064B1 (en) 2001-04-13 2009-12-08 Sun Microsystems, Inc. Method and apparatus for determining interconnections of network devices
JP3921367B2 (ja) * 2001-09-26 2007-05-30 日本電気株式会社 データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム
US20030068038A1 (en) * 2001-09-28 2003-04-10 Bedros Hanounik Method and apparatus for encrypting data
JP4681225B2 (ja) * 2001-10-17 2011-05-11 ベプテック インコーポレイテッド オペレーティングシステムにわたる通信の方法
US7447872B2 (en) * 2002-05-30 2008-11-04 Cisco Technology, Inc. Inter-chip processor control plane communication
EP1378824A1 (en) * 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
US7606995B2 (en) * 2004-07-23 2009-10-20 Hewlett-Packard Development Company, L.P. Allocating resources to partitions in a partitionable computer
GB0425860D0 (en) * 2004-11-25 2004-12-29 Ibm A method for ensuring the quality of a service in a distributed computing environment
CN100595773C (zh) * 2005-01-24 2010-03-24 独立行政法人海洋研究开发机构 模拟器系统
US8559443B2 (en) 2005-07-22 2013-10-15 Marvell International Ltd. Efficient message switching in a switching apparatus
US7543126B2 (en) * 2005-08-31 2009-06-02 International Business Machines Corporation Apparatus, system, and method for implementing protected virtual memory subcontexts
US8212805B1 (en) 2007-01-05 2012-07-03 Kenneth Banschick System and method for parametric display of modular aesthetic designs
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
JP4724730B2 (ja) * 2008-04-09 2011-07-13 株式会社日立製作所 情報処理システムの運用管理方法、運用管理プログラム、および運用管理装置、ならびに情報処理システム
US8887162B2 (en) * 2008-12-17 2014-11-11 Microsoft Corporation Persistent local storage for processor resources
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US8732669B2 (en) * 2011-03-11 2014-05-20 Oracle International Corporation Efficient model checking technique for finding software defects
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
CN108491187B (zh) * 2018-02-11 2021-06-11 许昌学院 一种基于top-k分割超立方体模型的并行处理方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3343135A (en) * 1964-08-13 1967-09-19 Ibm Compiling circuitry for a highly-parallel computing system
US4191996A (en) * 1977-07-22 1980-03-04 Chesley Gilman D Self-configurable computer and memory system
US4293950A (en) * 1978-04-03 1981-10-06 Nippon Telegraph And Telephone Public Corporation Test pattern generating apparatus
US4247892A (en) * 1978-10-12 1981-01-27 Lawrence Patrick N Arrays of machines such as computers
JPS5617401A (en) * 1979-07-23 1981-02-19 Omron Tateisi Electronics Co Sequence controller
JPS5746099A (en) * 1980-09-03 1982-03-16 Shibaura Eng Works Co Ltd Jet pump
US4384273A (en) * 1981-03-20 1983-05-17 Bell Telephone Laboratories, Incorporated Time warp signal recognition processor for matching signal patterns
US4593351A (en) * 1981-06-12 1986-06-03 International Business Machines Corporation High speed machine for the physical design of very large scale integrated circuits
US4533993A (en) * 1981-08-18 1985-08-06 National Research Development Corp. Multiple processing cell digital data processor
US4432057A (en) * 1981-11-27 1984-02-14 International Business Machines Corporation Method for the dynamic replication of data under distributed system control to control utilization of resources in a multiprocessing, distributed data base system
US4622632A (en) * 1982-08-18 1986-11-11 Board Of Regents, University Of Washington Data processing system having a pyramidal array of processors
US4524415A (en) * 1982-12-07 1985-06-18 Motorola, Inc. Virtual machine data processor
US4523273A (en) * 1982-12-23 1985-06-11 Purdue Research Foundation Extra stage cube
US4644496A (en) * 1983-01-11 1987-02-17 Iowa State University Research Foundation, Inc. Apparatus, methods, and systems for computer information transfer
US4598400A (en) * 1983-05-31 1986-07-01 Thinking Machines Corporation Method and apparatus for routing message packets
US4814973A (en) * 1983-05-31 1989-03-21 Hillis W Daniel Parallel processor
EP0164414A4 (en) * 1983-12-12 1986-06-05 Parallel Computers Inc COMPUTER PROCESSOR CONTROLLER.
US4722084A (en) * 1985-10-02 1988-01-26 Itt Corporation Array reconfiguration apparatus and methods particularly adapted for use with very large scale integrated circuits
US4733353A (en) * 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
US4748585A (en) * 1985-12-26 1988-05-31 Chiarulli Donald M Processor utilizing reconfigurable process segments to accomodate data word length

Also Published As

Publication number Publication date
KR880003237A (ko) 1988-05-14
JP2792649B2 (ja) 1998-09-03
WO1988001772A1 (en) 1988-03-10
CA1293819C (en) 1991-12-31
US5129077A (en) 1992-07-07
DE3751616D1 (de) 1996-01-11
EP0262750A2 (en) 1988-04-06
IN170067B (ko) 1992-02-01
CN87106067A (zh) 1988-03-09
CN1020972C (zh) 1993-05-26
DE3751616T2 (de) 1996-05-09
EP0262750B1 (en) 1995-11-29
JPS63145567A (ja) 1988-06-17
US5978570A (en) 1999-11-02
US5390336A (en) 1995-02-14
EP0262750A3 (en) 1988-08-03

Similar Documents

Publication Publication Date Title
KR960012654B1 (ko) 초대형 컴퓨터
US5485627A (en) Partitionable massively parallel processing system
US4972314A (en) Data flow signal processor method and apparatus
EP0357768B1 (en) Record lock processor for multiprocessing data system
US4101960A (en) Scientific processor
JP2576846B2 (ja) クラスタ制御装置及びクラスタ接続多重多重プロセッシング・システム
US5117350A (en) Memory address mechanism in a distributed memory architecture
PT94055A (pt) Memoria principal fisica unica compartilhada por dois ou mais processadores que execytam sistemas operativos respectivos
US20060224685A1 (en) System management architecture for multi-node computer system
JPS5914776B2 (ja) 多重処理モジユラ化デ−タ処理システム
JPH0374760A (ja) データ処理システム
JP2000003341A (ja) マルチプロセッサシステム及びそのアドレス解決方法
Storaasli et al. The finite element machine: An experiment in parallel processing
EP0251686B1 (en) Method and apparatus for sharing information between a plurality of processing units
CA1313276C (en) Very large scale computer
Männer et al. The POLYBUS: a flexible and fault-tolerant multiprocessor interconnection
EP0270198B1 (en) Parallel processor
JP3661531B2 (ja) マルチプロセッサシステム及びそのアドレス解決方法
US5913070A (en) Inter-connector for use with a partitionable massively parallel processing system
Crockett et al. System software for the finite element machine
KR920004409B1 (ko) 가상 컴퓨터를 위한 입.출력 처리 시스템
KR100498909B1 (ko) 교환시스템의 프로세서간 통신 이중화 장치
Hall et al. Hardware for fast global operations on multicomputers
Chaudhry Performance and dependability of gracefully-degradable multiprocessor systems
Theis Distributed network and multiprocessing minicomputer state-of-the-art capabilities

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee