PL167329B1 - Uklad przetwarzania równoleglego PL PL - Google Patents

Uklad przetwarzania równoleglego PL PL

Info

Publication number
PL167329B1
PL167329B1 PL91292368A PL29236891A PL167329B1 PL 167329 B1 PL167329 B1 PL 167329B1 PL 91292368 A PL91292368 A PL 91292368A PL 29236891 A PL29236891 A PL 29236891A PL 167329 B1 PL167329 B1 PL 167329B1
Authority
PL
Poland
Prior art keywords
picket
processing
memory
parallel
processor
Prior art date
Application number
PL91292368A
Other languages
English (en)
Other versions
PL292368A1 (en
Inventor
James W Dieffenderfer
Peter M Kogge
Paul A Wilkinson
Nicholas J Schoonover
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of PL292368A1 publication Critical patent/PL292368A1/xx
Publication of PL167329B1 publication Critical patent/PL167329B1/pl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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
    • 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
    • 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
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02BINTERNAL-COMBUSTION PISTON ENGINES; COMBUSTION ENGINES IN GENERAL
    • F02B75/00Other engines
    • F02B75/02Engines characterised by their cycles, e.g. six-stroke
    • F02B2075/022Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle
    • F02B2075/027Engines characterised by their cycles, e.g. six-stroke having less than six strokes per cycle four

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Multi Processors (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Processing (AREA)
  • Hardware Redundancy (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

1. Uklad przetwarzania równoleglego zawierajacy wiele bloków przetwarzania, znamienny tym, ze kazdy blok przetwarza- nia (100) zawiera pamiec lokalna (102), któ- rej wyjscie jest dolaczone do wejscia rejestru przesuwajacego (104), zespól przetwarzania bitowo-równoleglego (101), do którego jed- nego wejscia (B) jest dolaczone wyjscie reje- stru przesuwajacego (104), oraz polaczone szeregowo rejestry maskujace (105, 106), przy czym do wejscia pierwszego rejestru maskujacego (105) jest dolaczone wyjscie zespolu przetwarzania bitowo-równoleglego (101) zas wyjscie drugiego rejestru maskuja- cego (106) jest dolaczone do drugiego wej- scia (A) zespolu przetwarzania bitowo-równoleglego (101), wejscia rejestru przesuwajacego (104) i wejscia pamieci lo- kalnej (102). Fig. 2 PL PL

Description

Przedmiotem wynalazku jest układ przetwarzania równoległego, przeznaczony zwłaszcza do zastosowania w wieloprocesowych systemach obliczeniowych.
W opisie patentowym Stanów Zjednoczonych Ameryki nr 3 537 074 jest przedstawione rozwiązanie komputera tablicowego z procesorami równoległymi i jednym programowanym blokiem sterującym, wieloma rejestrami do zapamiętywania wektorów dopełniających, rejestrami masek i elementami, reagującymi na ciąg rozkazów pochodzących z jednego lub z wielu bloków sterujących, przeznaczonymi do równoczesnego działania na danych w rejestrach wektorowych. W latach siedemdziesiątych procesory równoległe opisane przez ich twórcę R.A. Stokesa w tym patencie stały się znane jako maszyny SIMD (Single Instructions - Multiple Data = Pojedyncze Rozkazy - Wiele Danych). Takie maszyny mogą być również opisane jako zawierające programowany blok sterujący uruchamiający tablicę w n równoległych procesorach, z których każdy ma część pamięciową, blok arytmetyczny, część dekodowania programu oraz część wejście/wyjście. Te systemy były zazwyczaj systemami o dużych wymiarach sprzężonymi z głównym komputerem macierzystym. Ważną różnicą między procesorami SIMD a prostszymi procesorami było to, że wewnątrz takich systemów wszystkie procesory SIMD mogą mieć różny zbiór danych w procesorze skojarzonym, lecz wszystkie procesory są sterowane przez wspólny blok sterujący. Komputery SIMD różnią się również od znanych prostszych procesorów Von Neumanna tym, że każdy rozkaz operuje raczej wektorami danych niż pojedynczymi argumentami operacji.
167 329
Najprostszymi typami systemów wieloprocesorowych są systemy w rodzaju Wiele Rozkazów - Wiele Danych (Multiple Instruction - Multiple Data, w skrócie angielskim: MIMD), w których każdy procesor może wykonać osobny program działając na osobnym zbiorze danych. Procesory w systemie MIMD mogą wykonywać osobne zadania lub każdy z nich może wykonywać odmienne podzadanie wspólnego głównego zadania.
Gdy myślano o dokonanym postępie w dziedzinie równoległych procesorów SIMD, sądzono, jak to przedstawiono w opisie patentowym Stanów Zjednoczonych Ameryki nr4 435 758 pt. Sposób wykonywania skoku warunkowego w procesorach wektorowych SIMD, że mogą one być stosowane wówczas, jeśli zadania, jakie mają być zrealizowane, są wysoce niezależne i niekonkurencyjne, lecz jeśli zadania mają konkurencję z punktu widzenia dostępu do zasobów, wówczas może być ustalone, że sieć procesorów synchronicznych pracuje w trybie SIMD. W rzeczywistości patent Stanów Zjednoczonych Ameryki nr 4 435 758 omawia problem i opisuje udoskonalenia, jakie mogą być zastosowane w odniesieniu do rozwiązania, ujawnionego w opisie patentowym Stanów Zjednoczonych Ameryki nr 4 101 960, aby można było wykonać skok warunkowy.
Stało się normą opisywanie najbardziej udoskonalonych maszyn SIMD jako synchronicznych procesorów przedstawiających bit-po-bicie, włączonych w układzie macierzowym N x N. Sposoby mnożenia wektorów macierzy dla takich masowych architektur równoległych, procesorów załączonych w układzie macierzowym N x N, fizycznie połączonych poprzez siatkowy układ topologiczny i z siecią siatkową, na którą nałożona jest inna sieć przełączająca, przeznaczoną dla celów przeorganizowywania, były opisane szczegółowo w Biuletynie Odkryć Technicznych IBM Vol. 32 Nr 3A, sierpień 1989 r., i stosowane do zwiększenia szybkości operacji mnożenia macierzy rozrzedzonej do wektora.
Istnieje wiele publikacji, które pokazują, że chociaż było postawione zadanie zaprojektowania maszyn SIMD i SIMD/MIMD, które by pracowały w wieloszeregowym układzie procesorów, w których wszystkie procesory w danym szeregu wykonują dokładnie te same rozkazy, to jednak szereg każdy jest programowany odmiennie. Przedstawiono to na przykład w Biuletynie Odkryć Technicznych IBM, Vol. 32, 8B, styczeń 1990, w którym opisano architekturę o takiej konfiguracji, która została określona jako Parallel Local Operator Engine, w skrócie PLOE (Równoległa Technika Operatora Lokalnego), dla przetwarzania specyficznych funkcji powtarzalnej kontroli pamięci.
Po dokonaniu przeglądu retrospektywnego publikacji stanowiących stan techniki dla niniejszego wynalazku stwierdzono, że niektóre z nich opisują zastosowanie procesora z pamięcią stałą dla rozkazów statycznych i rejestrami do zapamiętywania i pobierania danych zrealizowanego w postaci pojedynczego modułu na jednej płytce półprzewodnikowej. Przykładem jest opis patentowy Stanów Zjednoczonych Ameryki nr 4 942 516 dotyczący architektury komputera zrealizowanego najednej płytce układu scalonego. Przedstawiony w nim rodzaj pracy nie dotyczy kompleksowego zastosowania w rodzaju SIMD.
Inne publikacje opisują różne środki przeznaczone do różnych zadań. Jest na przykład, opisany system znany z tego, że może wykonywać równoległe mnożenie macierzy. Są to publikacje, które dotyczą dziedziny określanej jako SZTUCZNA INTELIGENCJA. Treść adresowalna lub zawartość pamięci skojarzeniowych (asocjacyjnych) powinna być adresowana przy wykorzystywaniu różnych modułów przetwarzających. Dla zastosowań w rodzaju sztuczna inteligencja w niektórych przypadkach może okazać się korzystne, przy omawianiu ich zastosowań, bazowanie na selekcji wierszowej wyników uprzednich operacji poszukiwania, to znaczy na logice wierszowej. Jest to opisane w publikacjach: VLSI for Artificial Intelligence (Układy scalone o bardzo dużej skali integracji dla zastosowań w rodzaju sztuczna inteligencja), Jose Delgado-Frias i Will R. Moore, wydawnictwo Kluwer Academic Publishers, 1989, strony 85-108, VLSI and Rule-Based Systems (Systemy na układach scalonych o bardzo dużej skali integracji oraz systemy deklaratywne), Peter Kogge, Mark Brule i Charles Stormon. Jednakże inni autorzy podają z kolei inne rozwiązania. Inna postać rozwiązania,jaką reprezentują moduły pamięci inteligentnej dla masowego przetwarzania równoległego, była opisana w publikacji VLSI Systems Design, grudzień 1988, strony 18-28 artykułu opublikowanego przez Boba Cushmana pod tytułem Matrix Crunching with Masive Parallelism (Obliczenia macierzowe z masowym przetwarzaniem równoległym). Inni próbowali realizować równoległe
167 329 przetwarzanie z wykorzystaniem pamięci skojarzeniowej na układach scalonych o bardzo dużej skali integracji, aby opisać moduły pamięci skojarzeniowej zrealizowanej w technologii układów scalonych o bardzo dużej skali integracji, nadającej się do zastosowania przekształcalnego całkowicie równoległego, skojarzeniowego, układu przetwarzania. Takie podejście zakładało, że zastosowanie klasycznej architektury pamięci asocjacyjnej będzie wymagać zbyt dużej liczby wyprowadzeń wtykowych dla przesyłania danych. Patrz, na przykład, Parallel Processing on VLSI Associative Memory (Równoległe przetwarzanie z wykorzystaniem pamięci skojarzeniowej o bardzo dużej skali integracji), S.Hengen i I.Scherson, sprawozdanie wyróżnione nagrodą NSF ECS-h404627 i wygłoszone przez autorów w Departamencie Elektrotechniki i Techniki Komputerowej Uniwersytetu Kalifornijskiego w Santa Barbara, CA 93106.
Problem, na jaki została zwrócona uwaga, polega na tym, że zachodzi konieczność opracowania zwartych procesorów do zastosowań kompleksowych (złożonych). Stwierdzono, że znane opracowania, które były ograniczone do zastosowań bitowo-szeregowych z pamięciami o pojemności do kilku tysięcy bitów na elementarny procesor i z kilkoma procesorami elementarnymi na jeden mikroukład nie były właściwe, gdyż odznaczały się wyjątkowo dużą, wręcz dramatyczną, gęstością upakowania, ale jeszcze nadającą się do umieszczenia w otoczeniu chłodzonym powietrzem i wykonaną w postaci lekkich jednostek o małych wymiarach.
W wyniku przeglądu publikacji, dotyczących znanych rozwiązań, związanych z przedmiotem zgłoszenia stwierdzono, że najbliższe rozwiązanie, stanowiące znany stan techniki dla przedmiotu wynalazku, zostało opisane w Europejskim zgłoszeniu patentowym o numerze EP-A-208 457, dotyczącym macierzy procesorów, w której każdy procesor elementarny w macierzy ma zapewnioną możliwość wyboru elementu, z którego odbiera swój sygnał wejściowy. W zgłoszeniu tym opisano wielowymiarową macierz procesorów elementarnych, która ma zwiększony stopień elastyczności, aby zapewniona była potencjalna możliwość równoległego przetwarzania i która mogłaby być lepiej wykorzystana bez konieczności zwiększenia kosztów wytwarzania i stopnia złożoności procesora MIMD. Ogólny rozkaz dla lokalnego wykonania bitowo-szeregowego przesyła się łączem, łączącym logiczny blok sterujący z różnymi równoległymi procesorami elementarnymi, przy czym w sposób zaprogramowany modyfikuje wybrane bity rozkazu ogólnego dla wykorzystania w lokalnych liniach bitowych, gdzie modyfikowane bity są poddawane dekodowaniu.
Przegląd publikacji na ten temat dostarczył również informacji na temat procesorów elementarnych SIMD, zawartych, naprzykład, w pracy Design ofSIMDMicroprocessor Array (Projektowanie macierzy procesorów SIMD), C.R. Josshope, R.OOorman i inni, opublikowanej w IEEE Proceedings Vol. 136, maj 1989. W artykule podane są rozważania naukowe na temat architektury SIMD. Przedstawiono także opis procesora, który ma architekturę bajtowoszeregową SIMD. Artykuł przedstawia rozwiązania dotyczące procesorów elementarnych o ośmiobitowej architekturze akumulatorów procesorów elementarnych, ograniczonej do płytki drukowanej pamięci, o dostępie swobodnym o pojemności 1 kbajtów, i z kilkoma procesorami elementarnymi na płytkę (n), oraz rozwiązania dotyczące lokalnej autonomii. Jednakże, niezależnie od zastosowania takiej proponowanej architektury, przetwarzanie skojarzeniowe (asocjacyjne) nie jest możliwe. Można stwierdzić, że zaproponowana struktura nie zapewnia bajtowo-szeregowej komunikacji z otoczeniem.
Dla ułatwienia korzystania z dalszej części opisu zastosowano następującą ogólną nową terminologię.
PIKIETA (termin angielski PICKET) - element macierzysty procesorów korzystnie składający się z kombinacji procesorów elementarnych z pamięcią lokalną do przetwarzania bitowo-równoległego bajtów informacji w cyklu zegarowym.
MODUŁ PIKIET - zawiera kilka Pikiet na jednej płytce krzemowej.
PIKIETOWY SYSTEM PROCESOROWY (lub podsystem) - system ogólny, składający się z macierzy pikiet, sieci komunikacyjnej, systemu wejścia/wyjścia oraz układu sterującego SIMD, składającego się z mikroprocesora, procesora oprogramowanego standardowo oraz układu mikrosterującego, który uruchamia macierz.
ARCHITEKTURA PIKIETOWA - korzystne wykonanie architektury SIMD o cechach, które łączą w sobie różne sprzeczne zagadnienia, a mianowicie:
167 329
- ustalone przetwarzanie asocjacyjne (skojarzeniowe),
- równoległe cyfrowe intensywne przetwarzanie,
- fizyczne przetwarzanie macierzowe podobne do przetwarzania obrazów.
MACIERZ PIKIETOWA - zbiór pikiet uporządkowanych geometrycznie.
Istotą układu przetwarzania równoległego, według wynalazku, o architekturze pikietowej zawierającej wiele bloków przetwarzania, jest to, że każdy blok przetwarzania zawiera pamięć lokalną, której wyjście jest dołączone do wejścia rejestru przesuwającego, zespół przetwarzania bitowo-równoległego, do którego jednego wejścia jest dołączone wyjście rejestru przesuwającego, oraz połączone szeregowo rejestry maskujące, przy czym do wejścia pierwszego rejestru maskującego jest dołączone wyjście zespołu przetwarzania bitowo-równoległego zaś wyjście drugiego rejestru maskującego jest dołączone do drugiego wejścia zespołu przetwarzania bitowo-równoległego, wejścia rejestru przesuwającego i wejścia pamięci lokalnej.
Korzystne jest, gdy zgodnie z wynalazkiem każdy blok przetwarzania zawiera następnie magistralę radiofonicznej transmisji danych - adresów, którajest dołączona do wejścia pierwszego rejestru maskującego i do wejścia pamięci lokalnej, magistralę przenoszenia lewy-prawy, którajest dołączona do wejścia rejestru przesuwającego, oraz rejestr sterowania - stanu, który jest dołączony do zespołu przetwarzania bitowo-równoległego.
Dalsze korzyści z wynalazku uzyskuje się, gdy zespół przetwarzania bitowo-równoległego jest zespołem o co najmniej 8-bitowej długości słowa, pamięć lokalna jest pamięcią o pojemności co najmniej 32 x 8 kilobitów, oraz zawiera co najmniej 16 bloków przetwarzania.
Zaletą rozwiązania według wynalazku jest jego zdolność do wykonywania obliczeń podobna do szybko działających maszyn przetwarzających dane w trybie jeden rozkaz-wiele danych (SIMD), lecz jego działanie zostało ponadto udoskonalone przez zastosowanie większej liczby równoległych procesorów elementarnych. Wyeliminowane zostały problemy związane z zależnością danych. W przypadku działania maszyny jeden rozkaz-wiele danych żaden procesor lub funkcja nie może mieć żadnej zależności danych wśród tych danych, które mogłyby powodować, że jeden procesor elementarny wymaga różnych liczb cykli.
Udoskonalenie architektury, jakie zostało wprowadzone do systemu o dużej liczbie jednostek pikietowych ogólnie nazywanych pikietami, zawierających bitowo-równoległy zespół przetwarzający, z pamięcią lokalną połączoną z tym zespołem w celu równoległego przetwarzania informacji w sposób skojarzeniowy (asocjacyjny), gdzie każda pikieta jest przystosowana do przekształcania jednego elementu w procesie skojarzeniowym. Pamięć jednostki pikietowej jest uporządkowana macierzowo. Macierz tak uporządkowanych pikiet zawiera zbiór pamięci skojarzeniowych (asocjacyjnych).
Rozwiązanie według wynalazku zrealizowane najednej płytce półprzewodnikowej zapewnia możliwość, że mniejszy zbiór danych z większego zestawu ma być przeniesiony z pamięci, gdzie mogą być wykonywane działania skojarzeniowe na tych danych. Te działania skojarzeniowe, które zwykle są zwykłym porównywaniem, są wykonywane na całym zbiorze danych równolegle, przy wykorzystaniu pamięci pikietowej i jednostki wykonującej.
W macierzy pikietowej każda pikieta ma część danych pochodzących z większego zbioru. Poza tym, każda pikieta wybiera jedną część danych z tej części. W ten sposób, jedna część danych w każdym zbiorze pikiet zawiera zbiór danych, na których jest wykonywane działanie skojarzeniowe przez wszystkie pikiety równolegle.
Technologia pikietowa jest rozszerzalna, a w przypadku 126-kilobajtowej dynamicznej pamięci o dostępie swobodnym w każdej pojedynczej pikiecie (moduł pamięci dynamicznej o dostępie swobodnym o pojemności 16 magabajtów) architektura pikietowa będzie wykonywała całą 24-bitową grafikę kolorową w taki sam sposób, jak tekst oraz 8-bitowe grafiki kolorowe lub grafiki czarne, które są wykonywane przy zastosowaniu rozwiązania według naszego aktualnego, korzystnego przykładu. Eksperymentalna technologia wytwarzania pokazuje, że taka gęstość upakowania jest możliwa do przewidzenia i że może być zrealizowana w najbliższej przyszłości, jako kolejna generacja wytwarzanych urządzeń, zdolnych pracować w otoczeniu chłodzonym powietrzem. Dla grafiki kolorowej nasza korzystna architektura pikietowa oznaczałaby zwiększenie pojemności dynamicznej pamięci o dostępnie swobodnym na płytce półprzewodnikowej do 128 kilobajtów na jedną pikietę przy 16 pikietach na płytce, lub też 24
167 329 jednostek pikietowych na płytkę pikietową z 96 kilobajtową pamięcią dla każdej pikiety mogłyby być wykorzystanych dla pełnokolorowych procesorów graficznych.
Przedmiot wynalazku jest uwidoczniony i bliżej objaśniony w przykładzie wykonania w oparciu o załączony rysunek, na którym fig. 1 przedstawia schemat procesora reprezentującego znany stan techniki, fig. 2 - parę podstawowych jednostek pikietowych, które są wykonane na płytce krzemowej, według wynalazku, fig. 3 ilustruje pracę pamięci skojarzeniowej (asocjacyjnej), fig. 4 przedstawia podstawowy układ o 16 (N) pikietach dla podsystemu rodzaju jeden rozkaz-wiele danych (SIMD), fig. 5 - budowę wielopikietowego układu przetwarzania, który składa się z wielu procesorów pikietowych z fig. 4, fig. 6 - funkcjonalny schemat blokowy podsystemu, a fig. 7 - układ połączeń układów sterujących podsystemu z płytkami drukowanymi z fig. 5.
Figura 1 przedstawia typowy układ SIMD znany ze stanu techniki. W takich znanych układach komputer SIMD jest komputerem w rodzaju jeden rozkaz-wiele danych z macierzą równoległych procesorów zawierających wiele równolegle połączonych bitowo-szeregowych procesorów, z których każdemu procesorowi jest przyporządkowana jedna z wielu pamięci SIMD. System wejście/wyjście (I/O) oddziaływuje na jednostkę SIMD jako układ przemieszczający dane na szybkie poziomy i zawiera pamięć pośrednią przeznaczoną do dwukierunkowego przesyłania dwuwymiarowych danych między komputerem głównym, który może być procesorem centralnym lub mikroprocesorem, a komputerem SIMD. System wejście/wyjście (I/O) składa się z elementów przetwarzających wprowadzających i wyprowadzających dane, przeznaczonych do sterowania przepływem danych między komputerem macierzystym a pamięcią pośrednią oraz do sterowania przepływem danych między pamięcią pośrednią, a wieloma pamięciami SIMD, które są zwykle zorganizowanymi sekcjami buforowymi lub obszarami większej pamięci. W ten sposób operacje wprowadzania danych realizowane przez system wejście/wyjście (I/O) obejmują transmisję danych z pamięci komputera macierzystego do pamięci pośrednich, roboczych, i z pamięci pośrednich do pamięci SIMD w drugim kroku, przy czym wprowadzenie danych również jest realizowane w dwóch krokach i polega na transmisji danych przez dwuwymiarowe łącze między głównym (macierzystym) komputerem a komputerem SIMD. Układ wejście/wyjście (I/O) może stanowić osobną jednostkę, podjednostkę w komputerze centralnym lub, często, jednostkę usytuowaną wewnątrz komputera SIMD, gdzie układ sterujący SIMD działajako układ sterujący dla pośredniej pamięci buforowej wejście/wyjście.
Komputer SIMD stanowi macierz procesorową z wieloma procesorami elementarnymi i siecią, która łączy poszczególne procesory elementarne ze sobą i z wieloma konwencjonalnymi poszczególnymi pamięciami SIMD. Komputer SIMD jest równoległym procesorem macierzowym składającym się z dużej liczby poszczególnych procesorów elementarnych połączonych i pracujących równolegle. Komputer SIMD zawiera blok sterujący, który generuje ciąg rozkazów dla procesorów elementarnych oraz dostarcza sygnały taktujące do komputera. Sieć, która łączy ze sobą różne procesory elementarne, tworzy pewną postać połączeń wzajemnych poszczególnych procesorów elementarnych, przy czym te wzajemne połączenia mogą być nałożone na możliwe topologie takie, jak siatkowa, toroidalnopolimorficzna i inne. Zbiór pamięci jest przeznaczony do natychmiastowego zapamiętywania bitów danych przeznaczonych dla poszczególnych procesorów elementarnych i tutaj zachowana jest odpowiedzialność w rodzaju jeden na jeden między liczbą elementarnych procesorów a liczbą pamięci, które mogą stanowić wyżej wymienione buforowe obszary większej pamięci.
Na przykład, jak pokazano na fig. 1, układ zawiera procesor macierzysty 28. Ten procesor jest wykorzystywany do ładowania mikrokodowanych programów do macierzowego bloku sterującego 14, który zawiera pośrednią pamięć buforową, i do wymieniania z nią danych, wykorzystywanych do kontrolowania jego stanu poprzez łącze danych 30, procesor centralny, blok sterujący oraz łącze adresowe i sterujące 31. Procesor macierzysty 28 w tym przykładzie może być dowolnym odpowiednim komputerem ogólnego przeznaczenia takim, jak komputer osobisty lub duży komputer. W tym znanym ze stanu techniki przykładzie, macierz procesorów jest przedstawiona jako dwuwymiarowa, jednakże macierz może być zorganizowana inaczej, na przykład, jako trójwymiarowy lub czterowymiarowy klaster. Procesor macierzowy SIMD składa
167 329 się z macierzy 12 procesorów elementarnych P(i,j) oraz macierzowego bloku sterującego 14, przeznaczonego do generowania ciągu ogólnych rozkazów, kierowanych ku procesorom elementarnym P(i,j). Chociaż nie jest to pokazane na fig. 1, w przykładach znanych ze stanu techniki są wykorzystywane procesory elementarne, które działają w trybie: jeden bit w jednym czasie, oraz obszary pamięci przyporządkowane procesorom elementarnym. Procesory elementarne są połączone poprzez tak zwaną sieć NEWS (skrót angielski od słów: North-East-West-South = północ - wschód - zachód - południe) z ich odpowiednimi siadami za pomocą dwukierunkowych hiccz bitowych. Procesor elementarny P(i,j) jest połączony z procesorami elementarnymi P(i-l, j), P(i, j+l), P(i, j-l), P(i+l,j) usytuowanymi odpowiednio w kierunku północnym, wschodnim, zachodnim i południowym względem rozpatrywanego procesora elementarnego P(i,j). W tym typowym przykładzie sieć NEWS jest połączona na obwodzie tak, że krawędzie północna i południowa są połączone wzajemnie dwukierunkowo, a krawędzie wschodnia i zachodnia są połączone wzajemnie w sposób podobny. Aby dane mogły być wprowadzone do i wyprowadzone z macierzy procesorów, łącze 26 danych łączące blok sterujący z macierząjest dołączone do sieci NEWS. Jak pokazano, jest to łącze dołączone do krawędzi Wschód-Zachód macierzy. Zamiast lub dodatkowo do krawędzi Północ-Południe łącza mogą być dołączone za pomocą dwukierunkowych trójstanowych modułów sterujących, które są dołączone do toroidalnego (obwiedniowego) połączenia Wschód - Zachód. Tak samo, jak w korzystnym przykładzie realizacji wynalazku, który zostanie omówiony później, można w ten sposób łączyć 1024 procesorów elementarnych, jeśli zastosować macierz 32x32 zamiast 16x 16.Narysunku pojedyncze linie oznaczają łącza jednobitowe, natomiast linie podwójne łączące elementy funkcjonalne są zbiorem łączących, to znaczy liniami magistralnymi.
W tym znanym rozwiązaniu macierzowy blok sterujący generuje rozkazy równolegle przesyłane do procesorów elementarnych łączem rozkazów 18 oraz generuje sygnały selekcji wiersza i kolumny przesyłane odpowiednio łączami selekcji wiersza 20 i łączem selekcji kolumny 22. Te rozkazy zmuszają procesory elementarne do pobierania danych z pamięci, przetwarzania tych danych a następnie do zapamiętywania danych jeszcze raz w pamięci. Z tych przyczyn każdy procesor elementarny ma dostęp do segmentu bitowego (sekcji lub buforu) głównej pamięci. Nasuwa się stąd logiczny wniosek, że głównapamięć procesora macierzowego jest podzielona na 1024 osobnych segmentów, z których każdy jest przydzielony jednemu z 1024 procesorów elementarnych w macierzy. To oznacza, że w jednym kroku transmisji danych do pamięci lub z pamięci można przesyłać trzydzieści dwa słowa każde o długości 32 bity. Aby wykonać operacje odczytu lub zapisu, pamięć jest adresowana za pomocą członów adresowych, które są doprowadzane do linii adresowych pamięci poprzez łącze adresowe 24, a rozkazy odczytu lub zapisu są dostarczane równolegle do każdego procesora elementarnego. W czasie operacji odczytywania sygnały selekcji wiersza i kolumny na liniach selekcji wiersza i kolumny identyfikują, który z procesorów elementarnych ma wykonać operację. Jak z tego wynika, w opisywanym przykładzie można odczytywać 32-bitowe słowo z pamięci do 32 elementarnych procesorów elementarnych w wybranym wierszu, jeśli macierz jest macierzą 32 x 32. Procesor elementarny jest połączony z segmentem lub blokiem pamięci o indeksie (i,j), który ma szerokość jednego bitu. Ponieważ segment lub blok pamięci jest logicznie połączony, zgodnie z zasadą jeden z jednym, z odpowiednim jednym procesorem elementarnym, może on być, i zwykle jest, fizycznie odseparowany na drugiej płytce.
Procesory elementarne P(i,j), ze znanego rozwiązania, same są jednostkami arytmetyczno-logicznymi, które zawierają elementy do przesuwu danych i z których każda jednostka jest zdolna zapamiętać jeden bit informacji. Przewidziany jest multiplekser, załączony na wejściu i wyjściu jednostki arytmetyczno-logicznej i połączony z dwukierunkowym pośrednim rejestrem danych segmentu pamięci (i,j) przyporządkowanego i połączonego z określonym procesorem elementarnym P(i,j).
Są tutaj osobne łącza dla przesyłania rozkazów i danych, a blok sterujący macierzą ma pamięć mikrorozkazów, w której mikrorozkaz, określający operację przetwarzania, jaka ma być wykonywana przez macierz, jest ładowany przez główny komputer 28 przy wykorzystaniu łącza danych 30 oraz łącza adresowego i sterującego 31. Gdy działanie bloku sterującego macierzą zostaje zapoczątkowane przez główny komputer 28, ciąg mikrorozkazów, ciąg generowany przez blok sterujący mikrorozkazami, który jest dołączony do pamięci mikrorozkazów wewnątrz
167 329 bloku sterującego macierzą 14. Jednostka arytmetyczno-logiczna oraz blok rejestrów bloku sterującego macierzą są wykorzystywane do generowania adresów pamięci macierzy, do zliczania pędowego, obliczania adresów skoku i do wykonywania operacji, jakie wykonują rejestry ogólnego przeznaczenia, które przekazują swoje sygnały wyjściowe na łącza adresowe bloku sterującego macierzą. Blok sterujący macierzą ma również rejestry maski przeznaczone do dekodowania rozkazów wierszowych i kolumnowych maski, a specyficzne rozkazy operacji są przesyłane do procesorów elementarnych łączem rozkazów. W tym przykładzie blok sterujący macierzą ma bufor danych wewnątrz bloku sterującego, włączony funkcjonalnie między łączem danych bloku sterującego komputera główpego, a łączem danych bloku sterującego macierzą. Z tego bufora dane są ładowane pod nadzorem mikrorozkazu do pamięci sterującej w macierzy procesorów i odwrotnie. W tym celu bufor jest zrealizowany jako dwukierunkowy bufor FIFO (skrót terminu angielskiego: First-In First-Qut = pierwszy na wejściu pierwszy na wyjściu) pod nadzorem bloku sterującego macierzą.
Rozwiązanie, znane ze stanu techniki i omówione powyżej, można porównać z korzystnym rozwiązaniem według wynalazku. Figura 2 przedstawia pikietowy blok przetwarzania 100, będący połączeniem procesora elementarnego w postaci zespołu przetwarzania bitowo-równoległego 101 z pamięcią lokalną 102 dołączoną do tego zespołu w celu zapewnienia możliwości przetwarzania jednego bitu informacji w jednym cyklu zegarowym.
W każdym bloku przetwarzania 100 układu przetwarzania równoległego według wynalazku, wyjście pamięci lokalnej 102 jest dołączone do wejścia rejestru przesuwającego 104. Wyjście rejestru przesuwającego 104 jest dołączone następnie do jednego wejścia B zespołu przetwarzania bitowo-równoległego 101, którego wyjście jest dołączone do wejścia pierwszego 105 z dwóch połączonych szeregowo rejestrów maskujących 105,106. Wyjście drugiego rejestru maskującego 106 jest dołączone do drugiego wejścia A zespołu przetwarzania bitowo-równoległego 101, wejścia rejestru przesuwającego 104 i wejścia pamięci lokalnej 102. Blok przetwarzania 100 zawiera także magistralę radiofonicznej transmisji danych - adresów 103, którajest dołączona do wejścia pierwszego rejestru maskującego 105 i do wejścia pamięci lokalnej 102, magistralę przenoszenia lewy-prawy 108, którajest dołączona do wejścia rejestru przesuwającego 104, oraz rejestr sterowania-stanu 107, który jest dołączony do zespołu przetwarzania bitowo-równoległego 101.
Pikietowy blok przetwarzania 100 jest ukształtowany na płytce krzemowej, zwanej dalej płytką pikietową, z macierzą linearną pikiet w taki sposób, że każda pikieta ma sąsiednią pikietę z boku (z lewej strony lub z prawej strony, jak pokazano na rysunku). W ten sposób na płytce krzemowej zostaje utworzona macierz pikietowa z wieloma lokalnymi pamięciami, po jednej dla każdego strumienia danych o szerokości jednego bajta, uporządkowana w wierszach logicznych lub mająca postać macierzy linearnej z łączami, zapewniającymi komunikację między sąsiednimi, przeznaczonymi do przesyłania danych w lewo i w prawo. Zbiór pikiet na płytce pikietowej jest uporządkowany geometrycznie, korzystnie poziomo, na płytce. Figura 2 przedstawia typowe połączenie dwóch pikiet z macierzy pikietowej zrealizowanej na płytce pikietowej z pamięcią wielokrotną i przepływem danych zajmującym tory komunikacyjne między każdym zespołem przetwarzania pikiety, to jest elementarnym procesorem a pamięcią. Ścieżki komunikacyjne, którymi są przesyłane dane między pamięcią a procesorami elementarnymi macierzy i między sąsiadami z prawej lub lewej są ścieżkami bajtowymi, a informacja między sąsiadami jest przesyłana w sposób ślizgowy. Ślizgacz może być zdefiniowany jako element do przesyłania informacji w jednym cyklu do miejsca, nie znajdującego się w sąsiedztwie przez adresowaną komórkę pikietową, która normalnie byłaby zdolna odebrać informację, gdyby była nieprzezroczysta dla komunikatu przesyłanego aż do momentu dotarcia i odebrania przez najbliższego aktywnego sąsiada, który go odbiera. W ten sposób ślizgacz funkcjonuje poprzez przesyłanie informacji do oddalonych komórek przez wyłączone pikiety. Przypuśćmy, że pikieta A chce przesłać komunikat do oddalonej pikiety G. Przed tym cyklem pośredniczące pikiety są ustawione jako przezroczyste poprzez wyłączenie pikiet od B do F. Następnie, w kolejnym jednym cyklu pikieta A przesyła w prawo swój komunikat, który przechodzi przez pikiety od B do F, które są przezroczyste, gdyż są wyłączone, a pikieta G odbiera komunikat, gdyż jestjeszcze włączona. W normalnym zastosowaniu ślizgacza informacjajest przesyłana linearnie η 329 przez sieć, lecz sposób ślizgowy może również pracować w sieci dwuwymiarowej lub nawet wielowymiarowej.
Współpraca procesorów elementarnych w korzystnym przykładzie nie jest działaniem bitowo-szeregowym lecz raczej bajtowo-szeregowym. Każdy procesor ma dostęp raczej do swojej własnej dołączonej do niego pamięci, niż do bloku pamięci lokalnej i do współpracującego segmentu lub strony tej pamięci. Zamiast łącza jednobitowego przewidziane jest łącze o szerokości znaku lub o szerokości odpowiadającej wielokrotności znaków. Zamiast informacji bitowej w jednym cyklu zegarowym przetwarzana jest informacja bajtowa (lub w systemach przyszłościowych informacja wielobajtowa). W ten sposób między każdym pikietowym procesorem elementarnym a przyporządkowaną pamięcią może przepływać 8, 16 lub 32 bitów odpowiednio do szerokości tej pamięci. W korzystnym przykładzie wykonania wynalazku każda płytka pikietowa ma pamięć o pojemności 32 kB o szerokości 8 (9) bitów i korzystnie 16 pikiet każda z taką 32-kilobajtową pamięcią na każdy węzeł pikietowy macierzy linearnej. W korzystnym przykładzie wykonania każda pamięć skojarzeniowa jest pamięcią dynamiczną o dostępie swobodnym zrealizowaną w technologii układów scalonych CMOS, a bajt znakowy odpowiada 9 bitom (funkcjonujący jako znak 8-bitowy z samokontrolą).
Przepływ danych równoległymi ścieżkami w łączu o szerokości bajtowej między pikietami i między procesorami elementarnymi a ich pamięciami stanowi udoskonalenie w porównaniu z bitowo-szeregową strukturą systemów znanych ze stanu techniki. Jednakże, jak zostanie zaznaczone dalej, zwiększenie stopnia zrównoleglenia powoduje powstanie nowych problemów, które wymagają rozwiązania. Niektóre z tych rozwiązań są przytoczone poniżej.
Cecha, która będzie wysoko oceniona, polega na tym, że dodatkowo do przesyłania komunikatu do lewego i prawego sąsiada i do mechanizmu ślizgacza, który został opisany wcześniej, wprowadzono również łącze sieciowe, które jest łączem o podwójnej szerokości bajtowej tak, iż wszystkie pikiety mogą otrzymywać te same dane w tym samym czasie. Sygnał sterujący pikietami i propagacją adresową również jest przesyłany tym łączem sieciowym. Jest to łącze, które dostarcza dane porównawcze, jeśli wykonuje się zbiór operacji skojarzeniowych oraz inne operacje porównywania lub synchronizacji.
Zadania, które mają wysoki stopień równoległości struktury danych, które same angażują dla przetwarzania wewnątrz pikiet procesory elementarne do przetwarzania danych pod kontrolą strumienia pojedynczych rozkazów, stanowią zastosowanie w rodzaju sztucznej inteligencji, wyszukiwania kontekstu i przetwarzania obrazu. Jednakże wiele z tych zastosowań, możliwych obecnie, nie mogły być stosowane w procesorach SIMD ze względu na bitowo-szeregowe przetwarzanie w pojedynczym czasie zegarowym. Na przykład, tradycyjny szeregowy procesor elementarny maszyny SIMD wykonuje jeden bit operacji dodawania w każdym cyklu procesorowym, gdy tymczasem 32-bitowa równoległa maszyna może wykonać 32 bity dodawania w jednym cyklu. Organizacja architektury, w której 32 kB przypada na procesor elementarny, wykorzystuje daleko większe pamięci logiczne, osiągalne dla każdego procesora elementarnego, niż to zapewnia tradycyjna maszyna SIMD.
Liczba wyprowadzeń na płytce scalonej powinnabyć możliwiejak najmniejsza, gdyż dane, które przychodzą do i wychodzą z płytki powinny być minimalizowane. Dynamiczna pamięć o dostępie swobodnym jest zwykłą pamięcią zrealizowaną w technologii układów scalonych CMOS. Jest to pamięć, która zapewnia dostęp wiersz-kolumna poprzez wymazywania demultipleksowanych kolumn wewnątrz macierzy pamięci, i dostarczenie adresu wierszowego, który odczytuje wiersz pamięci macierzowej, w celu zapewnienia równoległego przepływu danych.
Pamięć, poza danymi, zawiera bity trójkowe, co umożliwia rozpoznawanie trzech stanów logicznych, w odróżnieniu od tradycyjnej logiki dwójkowej (binarnej), mianowicie: stanu logicznej jedynki, stanu logicznego zera i stanu obojętnego. Stan obojętny jest takim stanem, który jest przeciwstawny jedynce logicznej lub zeru logicznemu. Liczba trójkowa jest umieszczona kolejno w kolejnych komórkach pamięci w macierzy pamięci. Maski są inną formą danych zapamiętywanych w pamięci, które są kierowane do rejestru maskowego pikietowego procesora elementarnego.
167 329
Gdy macierz pamięci zawiera rozkazy, pozwala to jednej pikiecie wykonywać operację inną, niż druga pikieta. Obwody sterujące poszczególnymi pikietami przy wykonywaniu operacji, angażujących większość pikiet, lecz których wykonanie nie wymaga angażowania wszystkich pikiet, umożliwiają zastosowanie rozwiązania według wynalazku w takich dziedzinach, w których nie mogły być zastosowane rozwiązania oparte na wykonywaniu operacji SIMD. Jedna prosta funkcja sterowania zapewnia, że operacje zawiesza się w dowolnej takiej pikiecie, której status wyjściowy odpowiada warunkowi szczególnemu. Taki warunek niezerowy może oznaczać stan spoczynkowy. Stan spoczynkowy jest warunkiem, który zawiesza operację i przełącza pikietę nie w stan aktywny lecz w stan gotowości. Drugi doprowadzany rozkaz wstrzymuje lub umożliwia zapis w pamięci - w zależności od warunków, w jakich znajduje się pikieta, lub od warunków rozkazu doprowadzanego do łącza uprzednio.
Przy zastosowaniu na płytce pikietowej 16 pikiet, z których każda pikieta jest skojarzona z 32-kilobajtową pamięcią zastosowanie tylko 64 płytek daje 1024 procesorów i pamięć o pojemności 32768 kilobajtów. Macierz pikiet stanowi pamięć skojarzeniową (asocjacyjną). Rozwiązanie według wynalazku jest również użyteczne przy numerycznej analizie obrazu realizowanej na zasadzie intensywnego przetwarzania danych tak samo, jak w rachunku wektorowym. Ten sprawnie działający macierzowy procesor pikietowy może być już obecnie upakowany tylko na dwóch płytkach drukowanych o małych wymiarach. Tysiące takich pikiet można więc umieścić w obudowie o małych wymiarach, nadając im postać zespołu zasilanego ze źródła małej mocy, co daje możliwość zastosowania rozwiązania według wynalazku do przetwarzania obrazu z minimalnym wprowadzanymi opóźnieniami lub w przedziale czasowym odpowiadającym ramce sygnału wizyjnego, na przykład, podczas lotu samolotu. Cechy właściwe pikietom zapewniają możliwość realizacji dużych systemów pamięci skojarzeniowej upakowanych w zamkniętych obudowach.
Figura 3 przedstawia, jak można zdefiniować pamięć skojarzeniową w pełni, gdy wartość porównywana jest prezentowana w odniesieniu do wszystkich komórek pamięci, a wszystkie komórki jednocześnie reagują na warunki w linii. Pamięci skojarzeniowe są ogólnie znane ze stanu techniki. W opisywanym rozwiązaniu przy zastosowaniu równoległych pikiet pamięci procesorów elementarnych, które mają bajtowe przysyłanie danych, aby realizować przeszukiwania, przewidziane są wejścia danych i maski dla przeszukiwania, aby ulokować słowo K wśród N słów w pamięci. Wszystkie odpowiadające sobie pikiety podwyższają status linii, a następnie osobna operacja odczytuje lub wybiera pierwsze dopasowanie K. Ta operacja, zwana ogólnie zestawem asocjacyjnym (skojarzeniowym), może być powtarzana dla kolejnych słów przez pamięć pikietową. Podobnie, zapisywanie jest realizowane poprzez działanie sieciowe, w którym zgłoszona linia wyboru określa segment, a dane sieciowe są przenoszone do wszystkich wybranych pikiet.
W innym wykonaniu wynalazku, chociaż nienajkorzystniejszym, zmniejsza się pojemność pamięci o dostępie swobodnym dostępnej dla każdej pikiety, co pozwala włączyć sekcję całej pamięci asocjacyjnej takiego rodzaju, jaki został przedstawiony na fig. 3. Jeśli się mówi, że pamięć skojarzeniowa zawiera 512 bajtów, oznacza to, że każda pikieta może zawierać zbiór indeksów przeszukiwania i dla pojedynczej operacji wynosi to 512 razy 1024 pikiet, co znaczy prawie 512 x 103 porównań na jedną operację lub 512 x 109 porównań na jedną sekundę, jeśli jedna operacja wymaga jednej mikrosekundy. Idąc dalej, można wkroczyć w zakres kilku tera-porównań na sekundę. Ten przykład wykonania daje miarodajne postawy dla osiągnięcia możliwości wykonywania zasad, obejmujących rozszerzenie zakresu przeszukiwań informacji z szybkością znacznie przewyższającej szybkości obliczania osiągane obecnie.
Jeśli takie działanie wykorzystuje pamięć i przyporządkowane jej procesory elementarne o szerokości bajtowej, jak pokazano na fig. 2, wówczas staje się możliwe, poza zastosowaniami wyraźnie określonych algorytmów lub zastosowaniami operacyjnymi, zastosowaniem w rodzaju sztucznej inteligencji oraz programowaniem równoległym, osiągalnym w sytuacjach SIMD, wiele innych dodatkowych zastosowań dla maszyny zrealizowanej w układzie płytek scalonych, do których to zastosowań można zaliczyć:
- równolegle wykonywanie żaden arytmetycznych, obejmujece mnożenie macierza i innych zadań, które mogą być wykonane w specjalnych maszynach pamięciowych;
167 329
- wykonywanie zadań polegających na porównywaniu i przetwarzaniu obrazów, które to zadania mogą być wykonywane w maszynach Von Neumanna, lecz których wykonanie może być znacznie przyspieszone, łącznie z zastosowaniami nadającymi się do ekstremalnej równoległości, na przykład, porównywanie z szablonem obrazu trójwymiarowego;
- przetwarzanie danych opartych na zakwestionowanych funkcjach;
- porównywanie ze wzorcami w zastosowaniach sztucznej inteligencji;
- kontrola sieciowa w środkach zapewniających komunikację między odległymi sieciami lokalnymi (w śluzach) do szybkiego identyfikowania komunikatów, które idą do użytkownika na drugą stronę śluzy sieci;
- modelowanie poziomów bramek;
- oraz w blokach kontrolnych dla wytwarzania w układach scalonych o bardzo dużym stopniu integracji do określania podstawowych warunków naruszania.
Zadania przetwarzania, które wykorzystują zalety banku pamięci i skojarzeniowych procesorów elementarnych będą stosowane przez programistów, gdy wykorzystają zalety i wydajności nowej architektury systemowej.
Opisując rozwiązanie według wynalazku można uwydatnić zalety zastosowania macierzy z jedną bramką lub jednym elementem logicznym a jeden blok przetwarzania 100, czyli na jedną pikietę. W takim rozwiązaniu systemowym, proces zapoczątkowywanyjest poprzez przyporządkowanie każdej bramce opisu jako listwy sygnałów, które uzyskują dostęp do bramki, gdy system generuje sygnały wejściowe i sygnał identyfikacji. Wymaga się, aby za każdym razem, gdy zmienia się sygnał jego nazwa była przesyłana magistralą radiofonicznej transmisji danych-adresów 103 do wszystkich pikiet i porównywana równolegle z nazwami oczekiwanych sygnałów wejściowych. Jeśli stwierdzi się zgodność, w pikietach zapisuje się nową wartość bitową sygnału w rejestrze przepływu danych. Gdy wszystkie zmiany sygnału zostaną zapisane, ustawia się wszystkie pikiety w stan równoległego odczytywania ich zawartości słowem sterującym, które wskazuje, jak wykorzystać bieżący zbiór sygnałów wejściowych do obliczania wyniku wyjściowego. Następnie te obliczenia są wykonywane równolegle, a ich wynik jest porównywany ze stałą wartością, i zapisuje się w pozycji bitowej przepływu danych stan wszystkich tych bramek pikiet, których sygnały wyjściowe uległy zmianie. Dalej zewnętrzny blok sterujący przepytuje wszystkie pikiety i zapytuje o następną bramkę, której stan się zmienia. Następnie magistralą radiofoniczną odpowiednia nazwa i wartość sygnału są odprowadzane z pikiety do wszystkich innych pikiet, jakie pozostały w stanie pierwotnym, i cykl się powtarza do momentu ustalenia, że nie ma więcej zmian sygnałów, po czym proces przetwarzania zostaje wstrzymany.
Innym rodzajem działania systemu jest przeszukiwanie haseł słownika. Hasła są zapamiętywane w pikietowej pamięci lokalnej 102 tak, że pierwsza litera wszystkich haseł może być porównywana z tą literą tego hasła, którym jest wymagane hasło na magistrali radiofonicznej transmisji danych/adresów 103. Wszystkie pikiety, z których informacja nie pokrywa się z wybranym hasłem są wyłączane hasłem są wyłączane przewidzianym słowem (znakiem) sterującym. Następnie porównywana jest druga litera, przy czym procedura porównywania i wyłączania powtarzana jest dla kolejnych liter (znaków), aż do wyczerpania aktywnych bloków pikietowych lub do osiągnięcia końca słowa. W tym momencie pozostające bloki pikiety są przepytywane, a indeks wymaganej danej jest wyczytywany przez sekwenser.
Na figurze 4 przedstawiony jest układ połączeń kilku równoległych procesorów i pamięci, bloków pikietowych uporządkowanych w układzie wierszowym na jednej płytce krzemowej, jako część macierzy równoległej, która może być uporządkowana jako podsystem SIMD, przedstawiający strukturę sterowania takim systemem. Przedstawiony jest tutaj również procesor sterujący i mikroprocesor nadzorujący (nadrzędny). Na figurze przedstawiono pamięć i logikę równoległą procesora elementarnego znajdującego się na tej samej płytce, która na fig. 4 jest pokazana jako część o nazwie macierz pikiet. Każda pamięć ma szerokość odpowiadającą n bitom, korzystnie odpowiadającą szerokości znaku wynoszącej 8 (9) bitów, lecz nic nie stoi na przeszkodzie, aby zastosowana była pamięć o szerokości słowa kilkubajtowego. Wynika z tego, że część pamięci równoległego procesora elementarnego pikiety będzie miała korzystnie szerokość 8 (9) bitów, lub, alternatywnie, 16 lub 32 bitów. Przy zastosowaniu współczesnej technologii CMOS preferowane jest wykorzystanie pamięci skojarzeniowej o szerokości znaku (bajt o
167 329 szerokości 9-bitowej z samokontrolą) dla każdego procesora elementarnego pikiety. Pamięć jest bezpośrednio skojarzona z połączonym z nią procesorem elementarnym według zasady jeden na jeden. Każdy procesor elementarny zawiera jednostkę arytmetyczno-logiczną, rejestry maskujące, zatrzask SR rejestru przesuwającego 104, rejestry stanów i rejestry przepływu danych DF 105 i 106, które są pokazane bardziej szczegółowo na schemacie na fig. 2. Dynamiczna pamięć o dostępie swobodnym i układ logiczny każdego procesora pikiety nie zawierają żadnych elementów sieci wzajemnych połączeń, gdyż istnieją bezpośrednie skojarzenia w układzie jeden na jeden między dynamiczną pamięcią o dostępie swobodnym o szerokości kilku bitów, a jej procesorem elementarnym na tej samej płytce.
Można zauważyć, że na fig. 4 zatrzask SR rejestru przesuwającego 104 jest logicznie włączony między pamięcią a logiką skojarzoną jednostki arytmetyczno-logicznej procesora elementarnego i stanowi w istocie port łączący dla każdego procesora elementarnego wzdłuż macierzy pikietowej. Każda płytka pikietowa zawiera wiele równoległych procesorów elementarnych pikiet uporządkowanych linearnie (co jest przedstawione jako łącze odwzorcowane linią prostą) dla zapewnienia komunikacji z obwodami strującymi pikietami. Łącze adresowe wektorów jest łączem wspólnym dla pamięci, a rejestr adresów wektorów danych steruje przejściem danych do każdej pamięci.
Figura 4 również przedstawia wzajemne połączenia między główną lub mikroprocesorową kartą, która w korzystnym przykładzie rozwiązania według wynalazku jest mikroprocesorem 386 zrealizowanym jako system PS/2 za sterowaniem podsystemowym, przez który rozkazy ogólne przechodzą do standardowo oprogramowanego procesora, który dostarcza rozkazy dla układu sekwencyjnego 402 rozkazów i do bloku sterującego 403 wykonaniem rozkazów, który wykonuje specyficzne mikrorozkazy, wywoływane przez układ sekwencyjny 402 rozkazów. Ten układ może być taki sam, jak blok sterujący 403, z punktu widzenia wykonywanych funkcji. Jednakże, również wewnątrz standardowo oprogramowanego procesora, zastosowano lokalne rejestry 405, które razem z logicznymi rejestrami jednostki arytmetyczno-logicznej (nie pokazanymi na rysunku) stanowią podstawę dla wszystkich adresowań, jakie są rozprowadzane magistralą radiofoniczną dla wszystkich pikiet wewnątrz macierzy pikietowej 406. W ten sposób obliczenie adresów jest wykonywane dla wszystkich pikiet w jednej jednostce arytmetycznologicznej bez zastosowania zasobów pikiet lub bez zastosowania pikietowych cykli wykonywania. To ważne uzupełnienie zapewnia elastyczność sterowania macierzami pikiet, umożliwiając zezwolenie, wstrzymanie i wykonywanie innych funkcji sterujących przy realizacji specjalnych zadań i pozwalając pikietom wybierać rozkazy lub funkcje.
Układ sekwencyjny 402 rozkazów sterowany z bloku mikrorozkazów 407 doprowadza rozkazy do macierzy pikiet w celu wykonania zgodnie z zasadą SIMD i w kolejności, wyznaczonej przez główny mikroprocesor programowany, oraz standardowe programy ze standardowo programowanego procesora będącego biblioteką programów roboczych 408, aby umożliwić przetwarzanie w trybie SIMD danych, zawartych w macierzy pikiet.
Rozkazy, doprowadzane do mikroprocesora poprzez interfejs podsystemowy, są wprowadzane na wysoki poziom przetwarzania, który może obejmować takie procesy, jaik URUCHOMIENIE, OBSERWACJA ZAPISU, WYNIK ODCZYTU, przy czym są one doprowadzane do mikroprocesora przez BLOK STERUJĄCY PODSYSTEMU mikroprocesora. Mikroprocesor może być rozpatrywany jako system główny lub procesor sterujący w układzie podsystemu przedstawionym na figurach 4,5,6 i 7. Jest zrozumiałe, że tajednostka może stanowić urządzenie niezależne dodane do urządzenia peryferyjnego (nie pokazanego na rysunku), takiego jak klawiatura i monitor ekranowy. W przypadku takiego układu z jednostką niezależną system mikroprocesora może być rozpatrywany jako system PS/2, w którym kartoteki, które zawierają kartotekę układu sekwencyjnego, który jest zrealizowany w układzie standardowo programowanego procesora, i kartoteki macierzy procesorów są wprowadzane w kolejności przedstawionej na figurze 7. Biblioteka programów 411 może zawierać kolejność programów dla ogólnego sterowania procesorem programów, takich jak program WYWOŁANIE i programy o nazwach własnych: KALMAN, CONVOLVE i NAV.UPDATE. Wybór tych programów odbywa się poprzez program użytkownika i w ten sposób ogólne przetwarzanie może być realizowane w warunkach, gdy funkcje sterujące realizuje główny komputer zewnętrzny lub w warunkach
167 329 sterowania, realizowanego przez blok programu użytkownika 412 ulokowany w mikroprocesorze MP. Bufor danych 413 jest wprowadzony do pamięci mikroprocesorem w celu przenoszenia danych do i z równoległego systemu procesorów pikiet. Układ sekwencyjny 402 rozkazów jest zrealizowany tak, aby mógł operować strumieniem sterującym z mikroprocesorem i programami standardowymi, które są wprowadzane do pamięci biblioteki programów roboczych 408. Niektóre z tych programów, takie jak WYWOŁANIE, ŁADOWANIE, BLOKADA, SIN, COS, ZNALEZIENIE, MIN, ZAKRES PORÓW N. i MNOŻENIE MATRYCOWE są wprowadzane z zespołu programów standardowych przez standardowo programowaną bibliotekę programów roboczych 408.
Wewnątrz standardowo programowanego procesora znajduje się również blok mikrorozkazów 407, za którego pomocą realizuje się funkcje sterowania wykonywaniem funkcji na niższym poziomie podobne do takich, jak ŁADOWANIE, ODCZYT, DODAWANIE, MNOŻENIE I DOPASOWANIE.
Preferuje się i wprowadza zewnętrzne sterowanie w rodzaju POPRZEDZAJĄCY/NASTĘPNY dla każdej jednostki przetwarzającej. Wprowadzamy również deterministyczną implementację normalizującego bajtu zmiennoprzecinkowego.
Zastosowanie podejścia deterministycznego umożliwia grupowanie pikiet i sterowanie grupowe. Funkcja lokalnajest wprowadzana w celu przystosowania systemu do indywidualnych zmian procesorów pikietowych.
Jeśli program użytkownika wymaga, aby był wykonywany przez macierz procesorów, wówczas rozkazy pierwotne, adresy i dane rozprowadzane w sieci są doprowadzane do macierzy procesorów pikiet.
Funkcja szczególna, którą wykorzystuje każda część systemu, jest określana zadaniem, jakie powinno być wykonane w czasie kompilacji programu użytkownika.
Elastyczność podsystemu może być zilustrowana przykładem rozwiązania problemu ogólnego. Na przykład, zadanie mnożenia macierzy:
[x] x [y] = [z] może być rozpisane w następujący sposób:
M xl xR+l
R . .
xR x2R yl yM+1 ...
X M . .
xR xM . .
yM y2M ... yMxC
C zl zR+1 ...
R . .
zR z2R ... zR+C
Problem ten może być rozwiązany na drodze wykonania podanych poniżej kroków, rozpisanych na operacje cykle zegarowe dla każdej operacji, a mianowicie:
01 Wywołanie mnożenia matrycowego Fx (R, M, C, Xaddr, Yadrr, Zadrr) 1 C
02 xSUB = ySUB = zSUB = 1 1 3
03 DO I=1 to C 1 3
04 DO J= 1 to R C 3
05 z=0 CxR 5/6*
167 329
06 DO K = 1 to M C x R 3
07 * * * Przyporządkowanie do skojarzeniowego procesora równoległego
08 Zz = Xx x Yy + Zz CxRxM 204/345*
09 * * * Wynik powrotu * * *
10 xSUB = xSUB + R CxRxM 2
11 ySUB = ySUB + 1 CxRxM 2
12 NASTĘPNY K CxRxM 3
13 xSUB = xSUB - MxR + 1 CxR 2
14 ySUB = ySUB - M CxR 2
15 zSUB = zSUB + 1 CxR 2
16 NASTĘPNY J CxR 3
17 xSUB = 1 C 2
18 NASTĘPNY z C 3
19 KONIEC CALL 1 1
Przejścia Cykli/na
przejście
UWAGA. * oznacza STAŁY PRZECINEK (4 bajty) ZMIENNY PRZECINEK (1+4 bajty).
Bliższe przyjrzenie się temu przykładowi nasuwa wniosek, że zadanie określone instrukcją 08 wymaga prawie 98% czasu cyklu. Wynika to z przystosowania organizacji działania w trybie SIMD do równoległego procesora pikietowego. Inne procesy (instrukcje) zabierają tylko 2% czasu cyklu i są przypisane do mikroprocesora.
Zgodnie z powyższym, przegląd tego przykładu mnożenia macierzy można skojarzyć z mikroprocesorem, programowanym standardowo procesorem, rejestrem lokalnym lub macierzą pikietową.
W powyższym przykładzie mnożenia macierzy działanie według instrukcji 01 byłoby przypisane do głównego procesora, natomiast wykonanie instrukcji 02, 05, 10, 11, 13, 14, 15 i 17 byłoby przypisane do rejestru lokalnego, a działanie według instrukcji 02, 04, 06, 12, 16, 18 i 19 byłoby przypisane do standardowo programowanego procesora, przy czym pozostały czas potrzebny do wykonania operacji mnożenia byłby wykorzystywany przez macierz pikiet w odpowiedzi na jeden rozkaz i w jednym działaniu 08.
Na figurze 5 przedstawiono budowę równoległego procesorowego systemu wielopikietowego 510, który składa się z dużej liczby równoległych procesorów pikietowych. Dla takich zastosowań, jak wielokrotne trafianie do celu, kontrolowana reakcja termojądrowa, przetwarzanie sygnałów, sztuczna inteligencja, przetwarzanie obrazów uzyskiwanych ze zdjęć satelitarnych, rozpoznawanie obrazów-celu, jak również do innych zastosowań, opracowany został system, który może być w korzystnym wykonaniu, zrealizowany jako system SIMD, składający się z 1024 równoległych procesorów na dwóch do czterech płytkach drukowanych 511 (tutaj przedstawiony jako składający się z czterech płytek drukowanych na system) dla każdego procesora z liczby 1024 procesorów. Poszczególne płytki drukowane są wstawiane do stojakowego zespołu montażowego 513, zaopatrzonego w klinowe zatrzaski 514. Płytki drukowane są wstawiane za pomocą dźwigien 516, które przeznaczone są do wstawiania i wyciągania płytek drukowanych tak, że gdy pokrywa 517 jest zamknięta, system montażowy skutecznie zamyka i blokuje płytki w przedziale, w którym umieszczona jest pamięć o pojemności od 32 do 62 megabajtów o wydajności prawie 2 miliardy operacji na sekundę. System jest zwarty, poręczny, zajmuje mało miejsca, przy czym macierz składająca się z dużej liczby pikiet jest umieszczona w tylnej części 518 obudowy, w której to części mieści się również część logiczna umożliwiająca wzajemne połączenie obwodów na płytkach drukowanych. Procesor z 32-megabajtową pamięcią jest wykonany na 4 płytkach drukowanych, a ogólna masa tego urządzenia wynosi niecałe 14 kg. Dla zasilania chłodzonego powietrzem systemu procesorowego potrzebna moc zasilania wynosi tylko 280 W. Każdy system SIMD ma dwa porty wejście/wyjście 520, które zapewniają możliwość połączenia z głównym komputerem lub z innymi urządzeniami zewnętrznymi. Z przedstawionych wielu równoległych procesorów pikietowych każdy składa się z 4 stron
167 329 logicznych i wykorzystuje standardowe modułowe opakowanie stosowane dla układów elektronicznych w lotnictwie oraz łącze,którego struktura umożliwia połączenie pamięci zewnętrznej, to znaczy połączenie z łączami w rodzaju PI, TM, IEEE 488, przy czym procesor może być za pomocą portu wejście/wyjście połączony z łączem pamięci procesora, co może być uważane za przedłużenie obszaru pamięci procesora.
Z przedstawionych wielu równoległych procesorów pikietowych składających się każdy z 1024 równoległych procesorów elementarnych, każdy ma 32-kilobajtową pamięć lokalną, a ścieżka przyporządkowana równoległemu procesorowi pikietowemu ma szerokość 8-bitową lub szerokość odpowiadającą jednemu znakowi (9 bitów).
Procesory wewnątrz każdej pikiety wymieniają dane z innymi sąsiednimi procesorami i ze stroną przez nałożoną na tylnej ściance sieć połączeń, korzystnie krzyżową lub inną.
Poszczególne procesory pikietowe systemu są umieszczone w obudowie, zawierającej 2 płytki drukowane z czterech płytek drukowanych składających się na system, mikroprocesor PS/2 na jednej płytce oraz programowany standardowo sekwencyjny układ procesorowy, który jest umieszczony na czwartej płytce. System ten jest przedstawiony na figurach 6 i 7. Poszczególne pikiety stanowią bloki przetwarzania 100, lub płytki drukowane 512 z pikietami mogą być wykonane od standardowo programowanego procesora tak, że procesory mogą niezależnie wykonywać związane z działaniami zmiennoprzecinkowymi operacje wyrównywania i normalizacji.
Procesory są sterowane równolegle ze wspólnego układu sekwencyjnego, jak to omówiono w niniejszym opisie. Płyta układu sekwencyjnego 703 zawiera kontroler procesora pikietowego i może uirichamiać w przetwarzaniu pikietowym wykonywanie pojedynczego łańcucha instrukcji zestawionego do wykonywania na macierzy procesorów SIMD, w jednobajtowym modzie sekwencyjnym podobnym do klasycznego szeregowego przetwarzania bitowego. Kontroler ma trzy warstwy. Mikrosterowanie pikiet odbywa się zwykle z wykorzystaniem mikrokodów, podobnie jak w nowoczesnych procesorach, i jest przekazywane równolegle do wszystkich pikiet. Mikrosterowanie i pikiety są synchronizowane tym samym zegarem systemowym, tak że funkcje sterowane przez układ sekwencyjny mogą być wykonywane w tym samym czasie systemowym. Instrukcje wprowadzania do układu sekwencyjnego mikrosterowania stanowią funkcje procesora procedur standardowych. Ta płyta układu sekwencyjnego 703 stanowi sterownik układowy, który podczas wykonywania większości funkcji realizuje w pętli instrukcje sterujące i rekursywnie uruchamia nowe sekwencje mikrosterowania. Prawidłowe podawanie kodów do pikiet sterowane jest nie przez granice instrukcji, a bezpośrednio przez kontroler z biblioteką procedur standardowych 408 i funkcjami cyklu. Sterownik procesora procedur standardowych zawiera duży zbiór makroinstrukcji, które są wywoływane przez system główny w podsystemie pełniącym funkcję głównego sterownika nadzorującego pikiety. Jest to główny system sterowania macierzy pikiet. Działanie macierzy pikiet sprawdzane jest za pomocą mikroprocesorów typu 386. W dany momencie czasu wszystkie pikiety macierzy mogą wykonywać tę samą instrukcję, możliwe jest jednak również, aby podgrupy procesorów reagowały indywidualnie na strumień sterujący. Istnieje kilka wariantów reakcji indywidualnych, tak że możliwe jest osiągnięcie lokalnej autonomii na bazie bajtowych funkcji sterowania dla każdej pikiety (wydzielanie, zakaz itp), której zalety można wykorzystać przy programowaniu i która może być pod kontrolą systemu podczas kompilacji programu.
Poza tym, jak opisano, istnieje lokalna autonomia adresowania pamięci. Układ sekwencyjny kontrolera SIMD przy pracy podaje wspólny adres na wszystkie pikiety. Każda pikieta może rozszerzyć ten adres lokalnie w celu powiększenia możliwości sterowanego danymi dostępu do pamięci. Poza tym, pikieta może uczestniczyć lub nie uczestniczyć w działaniu macierzy, zależnie od warunków lokalnych.
Charakterystycznym jest, że jest teraz możliwe wprowadzanie do przetwarzania SIMD koncepcji grup, przez udostępnienie każdej pikiecie środków przyporządkowania się do jednej lub więcej z kilku grup, przy czym przetwarzanie może bazować na tym podziale na grupy, mimo iż zmiany konfiguracji odbywać się będą w biegu. W jednym z wykonań wynalazku może być aktywna równocześnie tylko jedna grupa lub kombinacja grup i wtedy każda z nich wykonuje ten sam strumień instrukcji przetwarzania SIMD. Niektóre operacje wymagają pracy tylko
167 329 podzestawu lub grupy pikiet. Możliwe jest wykorzystanie tej cechy w programie. Jest to sposób na wykorzystanie przy pracy tej lokalnej autonomii uczestniczenia w zadaniu. Oczywiście, im więcej pikiet uczestniczy w przetwarzaniu, tym lepiej.
Jednym ze sposobów zwiększenia liczby uczestniczących w zadaniu pikiet jest umożliwienie każdej z nich wykonywanie jej własnego strumienia instrukcji. Jest to w zasadzie praca typu MIMD (Multiple Instructions - Multiple Data: wiele rozkazów - wiele danych) wewnątrz SIMD. W proponowanym rozwiązaniu możliwiajest w zasadzie konfiguracja tej samej maszyny SIMD jako systemu MIMD lub maszyny o jeszcze innej konfiguracji. Jest to realne dzięki możliwości zaprogramowania pikiet do pracy z ich własnymi sekwencjami instrukcji.
Ponieważ każda pikieta może być dostosowana do pracy we własnej sekwencji, to możliwe jest bardzo proste dekodowanie zestawu instrukcji poziomu pikietowego, co umożliwia zastosowanie bardziej ekstensywnego przetwarzania lokalnego. Obszarem najbardziej prawdopodobnego zastosowania tej funkcji jest dziedzina podejmowania złożonych decyzji, chociaż innym obszarem zastosowań interesującym programistów może być proste przetwarzanie stałoprzecinkowe.
Prosty program tego rodzaju będzie powodował ładowanie bloków programu pikietowego, nie przekraczającym na przykład objętości 2 kB, do lokalnej pamięci pikietowej 102, i ten program będzie mógł być wykorzystywany po zainicjowaniu przez płytę układu sekwencyjnego 703 kontrolera SIMD przetwarzania lokalnego pod nadzorem sterowania wykonawczego rozpoczynającego się pod wymienionym wyspecyfikowanym adresem xyz. Przetwarzanie może trwać aż do odliczenia przez kontroler odpowiedniej liczby impulsów zegarowych, albo stwierdzenia wystąpienia sygnału zakończenia zadania podczas monitorowania rejestrów zbiorczego stosu stanu SF przedstawionego na fig. 4.
W zbiorczym stosie stanu (SF - fig. 4) -stosuje się po jednym zatrzasku SR dla każdej pikiety, który może być uaktywniany w celu zasygnalizowania stanu pikiety. Kontroler SIMD może sprawdzać zbiorczą wartość tych zatrzasków (po jednym na pikietę) przez monitorowanie linii stanu macierzy. Ta linia stanu macierzy jest logiczną kombinacją wartości każdego z zatrzasków stanu pikiet.
W następującym przykładzie zakładamy, że chcemy sprowadzić wartość większą od 250 do zakresu 500 > x > 250. Poniższa procedura do stwierdzenia wykonania zadania wykorzystuje zbiorczy stos stanu.
Jeśli wartość < 500 wtedy wyłącz pikietę
Stat. < warunek wyłączenia pikiety
Jeśli kanał stat. = włączony, wtedy zakończony
Wartość < wartość - 250
Powtórz
Tak więc zwilokrotniona równoległa konfiguracja procesorów pikietowych może być zestawiana na różne sposoby, również jako procesor SIMD. Taka maszyna SIMD w korzystnym wykonaniu jest programowana na wykonywanie pojedynczego łańcucha instrukcji w sposób klasyczny, i kodowana do pracy na macierzy procesorów SIMD w modzie sekwencyjnym, podobnym jak w procesorach klasycznych przy ogólnym sterowaniu kontrolera SIMD lub układu sekwencyjnego. Na poziomie aplikacyjnym jest to realizowane za pomocą instrukcji wektorowych i podobnych do wektorowych, przy czym wektory mogą być przetwarzane wewnątrz procesorów i wspólnie pomiędzy nimi. Instrukcje wektorowe mogą być dodawane do makroinstrukcji, typowo 6-10 takich instrukcji.
W takim korzystnym wykonaniu system przedstawia się schematycznie tak, jak to przedstawiono na funkcjonalnym schemacie blokowym równoległego podsystemu procesora przedstawionego na fig. 6. Za pośrednictwem portów I/O systemjest sterowany z głównego sterownika interfejsu realizując funkcje sekwensera podsystemu, podobnie do programu SIMD z makrofunkcjami wysokiego poziomu sterującymi funkcjami poziomów przetwarzających. Adresowanie pamięci umożliwia przepływ danych jednobajtowych, 8 - bitowych, a przy realizacji funkcji (logicznych, dodawania, mnożenia, dzielenia) wykorzystywana jest logika i arytmetyka modulo 8. Stosuje się blokadę danych formatu zmiennoprzecinkowego, realizacji autonomicz167 329 nych operacji pikietowych oraz pracy w modzie nieaktywnym, w modzie częściowo nieaktywnym i z indywidualnym adresowaniem.
Na figurze 7 przedstawiono strukturę kontrolera podsystemu. Każda z płyt macierzy procesorowej 512 (na rysunku ilustrującym budowę podsystemu przedstawionych w ilości 4 szt., lecz mogących występować również w ilości 2 płyt SEM E) jest połączona z układem sekwencyjnym 703, połączonym z kontrolerem podsystemowym 702, który z kolei jest otwierany albo w stronę głównej pamięci systemowej, albo w stronę innego podsystemu w zestawie za pośrednictwem układu scalonego 705 dołączonego do przyporządkowanej mu szyny mikrokanału 706. W korzystnym wykonaniu podsystemu kontroler jest uniwersalnym blokiem mikroprocesorowym PS/2 i pracuje na scalonym mikroprocesorze Intel 386 oraz pamięci 4 MB. Kontroler 702 komputera osobistego połączony jest z płytą układu sekwencyjnego za pośrednictwem szyny mikrokanału 706 wewnątrz podsystemu.
Oczywiście, możliwe są różne modyfikacje i odmiany wynalazku, bez odchodzenia od jego idei, a zatem jest zrozumiałe, że załączone zastrzeżenia umożliwiają realizację wynalazku inną, niż w konkretnym opisanym przykładzie.
W szczególności, wraz z cechami znamiennymi załączonych zastrzeżeń mogą występować alternatywnie lub łącznie następujące cechy wynalazku:
1) Elementy przesuwania informacji umożliwiają jej przenoszenie w pojedynczym cyklu do nie-sąsiedniego bloku pikiety poprzez lokację adresową pikiety, która normalnie nadaje się do odebrania tej informacji i nie jest przezroczysta dla komunikatu wysyłanego przed nadaniem informacji i jej odebraniem przez najbliższego aktywnego sąsiada;
2) Elementy przesuwania informacji umożliwiają jej przesuw przez wysłanie informacji do nie-sąsiedniej pozycji poprzez wyłączoną pikietę umożliwiającą pierwszemu blokowi pakietowemu przekazywanie informacji do oddalonej pikiety, jeżeli przed cyklem transferu biorące udział w operacji pikiety staną się przezroczyste przez wyłączenie pośredniczących bloków pikietowych i następnie w cyklu transferu elementy sterujące spowodująuruchomieniepierwszego bloku pikietowego do nadawania jego informacji do odległego bloku pikietowego jako miejsca przeznaczenia;
3) Stosowane są elementy przekazywania komunikatów liniowo w poprzek kraty, w dwóch kierunkach sieci, lub w trzech wymiarach macierzy;
4) Zbiór bloków pikietowych ma lokalną autonomię, jak również nadaje się do konfigurowania w charakterze macierzy sprzężonych bloków pikietowych;
5) Omawiany system być konfigurowany zarówno jako system SIMD, jak i MIMD, a grupy tego zestawu bloków przetwarzających przyporządkowane są zgodnie z programowaną konfiguracją, w której poszczególne bloki systemu mają pewien stopień lokalnej autonomii;
6) System zawiera główny system procesorowy, przy czym ten główny system procesorowy połączony jest z zewnętrznym układem sekwencyjnym sterującym za pośrednictwem magistrali i zaopatrzony jest w elementy do wymuszania wykonywania instrukcji globalnych w równoległym systemie przetwarzania danych;
7) Zewnętrzny sterujący układ sekwencyjny jest połączony z pamięcią mikrokodów, przy czym pamięć mikrokodów jest programowana do wykonywania funkcji za pomocą procedur standardowych;
8) Układ sekwencyjny zawiera makroinstrukcje funkcji wysokiego poziomu do sterowania funkcjami bloków przetwarzających, które są przyłączone do tego układu sekwencyjnego za pośrednictwem magistrali, adresowanie pamięci lokalnych systemu umożliwia przepływ danych jednobajtowych i realizację logiki oraz arytmetyki modulo 8 wykorzystywanej przy funkcjach logicznych, sumowania, mnożenia, dzielenia, przy czym stosuje się blokadę wykonywania operacji zmiennoprzecinkowych w tych blokach równoległych oraz pracy w stanie nieaktywnym lub częściowo nieaktywnym z bezpośrednim adresowaniem oddzielnych pikietowych bloków przetwarzających;
9) Możliwa jest programowa zmiana miejsca realizacji funkcji wewnątrz głównego systemu procesorowego, zewnętrznego układu sekwencyjnego zarządzającego zaopatrzonego w procedury standardowe, rejestrów lokalnych lub w zbiorze pikietowych bloków przetwarzających, przy czym pojedyncze instrukcje wymagają rozbudowanego przetwarzania licznych
167 329 danych przyporządkowane są do tego zbioru bloków przetwarzających skonfigurowanych na przetwarzanie SIMD;
10) Bloki przetwarzające systemu połączone są w macierz bloków przetwarzających o programowanej autonomii lokalnej, przy czym pikietowe bloki przetwarzające mogą pracować ze swoimi własnymi zestawami instrukcji i mogą, na podstawie uwarunkowania danymi, wprowadzać lub pomijać operacje związane z innymi blokami przetwarzającymi, a bloki przetwarzające systemu mogą niezależnie dokonywać operacji wyrównywania i normalizacji, które są związane z działaniami zmiennoprzecinkowymi;
11) Konfiguracja zewnętrznego układu sekwencyjnego sterującego umożliwia wykonywanie operacji takich, jak WYWOŁANIE, ŁADOWANIE, BLOKADA, SIN, COS, ZNALEZIENIE, MIN, ZAKRES oraz MNOŻENIE MATRYCOWE za pomocą procedur standardowych znajdujących się w roboczej bibliotece procedur standardowych;
12) Stosowane są procedury do wykonywania funkcji sterujących oraz ŁADOWANIE, ODCZYT, DODANIE, MNOŻENIE i DOPASOWANIE;
13) Element przetwarzający wymienia dane wewnątrz macierzy sąsiadujących ze sobą bloków przetwarzających i pomiędzy stronicami wewnątrz systemu, za pośrednictwem sieci połączeń wewnętrznych;
14) Stosowany jest zewnętrzny procesor sterujący dla macierzy pikiet, w której mikrokod sterowania przekazywany jest równolegle do wszystkich pikiet w grupie procesorów pikietowych w macierzy, przy czym procesor sterujący i pikietowe bloki przetwarzające są synchronizowane tym samym zegarem, tak że funkcje sterowane za pośrednictwem zewnętrznego procesora sterującego mogą być wykonywane w tym samym czasie systemowym;
15) W strukturze, nad zewnętrznym procesorem sterującym macierzy pikiet, stosowany jest mikroprocesor głównego systemu sterującego przyłączony do zewnętrznego procesora sterującego za pośrednictwem magistrali mikrokanału, przy czym główny mikroprocesor zarządza aktywnością macierzy pikiet, a system jest sprzężony w ten sposób, że w danym momencie wszystkie pikietowe bloki przetwarzające macierzy mogą wykonywać tę samą instrukcję, chociaż pewne podzestawy procesorów mogą reagować indywidualnie na strumień informacji sterujących;
16) Zestaw pikietowych równoległych bloków przetwarzających rozmieszczony jest wzdłuż magistrali adresowej do komunikacji z zewnętrznym sterownikiem pikiet, przy czym występuje adres wektorowy wspólny dla pamięci lokalnych systemu pikietowego i stosowany jest rejestr wektorów adresowych danych, służący do kierowania odpowiednich danych do każdej pamięci lokalnej systemu pikietowego. Sterowanie pikiet odbywa się w ten sposób, że magistrala adresów wektorowych jest wspólna dla całej pamięci, a rejestr danych adresów wektorowych steruje przesyłem danych do poszczególnych pamięci, odpowiednio przyporządkowanych pikietom;
17) Stosowany jest zbiór bloków pikietowych zestawionych w macierz oraz kanałów do transferu danych pomiędzy blokami pikietowymi, przy czym kanały komunikacyjne zaopatrzone są w sposoby i elementy do bitowej komunikacji równoległej ze wszystkimi innymi blokami macierzy, przy czym występują kanały sprzęgające do przekazywania komunikatów z jednej pikiety do każdej innej;
18) Komunikaty mogą być przekazywane z jednej na drugą N-wymiarową macierz wykorzystującą pikiety z sumą galwaniczną;
19) Pewna niewielka część pamięci lokalnej jest zrealizowana w ten sposób, że każda jej lokacja jednocześnie służy do porównania z zadanym wzorcem.
167 329
167 329
100 100
- A_. - -----X-
Fig.2
N
SŁÓW
Fig.3
167 329
167 329
517
516
167 329
Zewnętrzny interfejs
FIG.6 i
1 1 703 1 1
702 1 1 1 1 « 512
1 ^-705 1
705z _1_ 1 -706 _L_ 1 | |
Łącze między- Łącze mikrokanaTowe systemowe (wewnątrz pod systemem) fTGjZ
167 329
FIG.1
Departament Wydawnictw UP RP. Nakład 90 egz.
Cena 1,50 zł

Claims (7)

  1. Zastrzeżenia patentowe
    1. Układ przetwarzania równoległego zawierający wiele bloków przetwarzania, znamienny tym, że każdy blok przetwarzania (100) zawiera pamięć lokalną (102), której wyjście jest dołączone do wejścia rejestru przesuwającego (104), zespół przetwarzania bitowo-równoległego (101), do którego jednego wejścia (B) jest dołączone wyjście rejestru przesuwającego (104), oraz połączone szeregowo rejestry maskujące (105, 106), przy czym do wejścia pierwszego rejestru maskującego (105) jest dołączone wyjście zespołu przetwarzania bitowo-równoległego (101) zaś wyjście drugiego rejestru maskującego (106) jest dołączone do drugiego wejścia (A) zespołu przetwarzania bitowo-równoległego (101), wejścia rejestru przesuwającego (104) i wejścia pamięci lokalnej (102).
  2. 2. Układ według zastrz. 1, znamienny tym, że każdy blok przetwarzania (100) zawiera następnie magistralę radiofonicznej transmisji danych - adresów (103), która jest dołączona do wejścia pierwszego rejestru maskującego (105) i do wejścia pamięci lokalnej (102).
  3. 3. Układ według zastrz. 1 albo 2, znamienny tym, że każdy blok przetwarzania (100) zawiera następnie magistralę przenoszenia lewy-prawy (108), która jest dołączona do wejścia rejestru przesuwającego (104).
  4. 4. Układ według zastrz. 1, znamienny tym, że każdy blok przetwarzania (100) zawiera następnie rejestr sterowania - stanu (107), który jest dołączony do zespołu przetwarzania bitowo-równoległego (101).
  5. 5. Układ według zastrz. 1, znamienny tym, że zespół przetwarzania bitowo-równoległego (101) jest zespołem o co najmniej 8-bitowej długości słowa.
  6. 6. Układ według zastrz. 1, znamienny tym, że pamięć lokalna (102) jest pamięcią o pojemności co najmniej 32 x 8 kilobitów.
  7. 7. Układ według zastrz. 1, znamienny tym, że zawiera co najmniej 16 bloków przetwarzania (100).
PL91292368A 1990-11-13 1991-11-13 Uklad przetwarzania równoleglego PL PL PL167329B1 (pl)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US61159490A 1990-11-13 1990-11-13

Publications (2)

Publication Number Publication Date
PL292368A1 PL292368A1 (en) 1992-09-07
PL167329B1 true PL167329B1 (pl) 1995-08-31

Family

ID=24449647

Family Applications (1)

Application Number Title Priority Date Filing Date
PL91292368A PL167329B1 (pl) 1990-11-13 1991-11-13 Uklad przetwarzania równoleglego PL PL

Country Status (15)

Country Link
US (1) US5822608A (pl)
EP (1) EP0485690B1 (pl)
JP (1) JPH04267466A (pl)
KR (1) KR960016880B1 (pl)
CN (1) CN1050919C (pl)
AT (1) ATE180586T1 (pl)
BR (1) BR9104603A (pl)
CA (1) CA2050166A1 (pl)
CZ (1) CZ280210B6 (pl)
DE (1) DE69131272T2 (pl)
HU (1) HU215139B (pl)
PL (1) PL167329B1 (pl)
RU (1) RU2084953C1 (pl)
SK (1) SK344091A3 (pl)
TW (1) TW229289B (pl)

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5765015A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Slide network for an array processor
JP2525117B2 (ja) * 1992-05-22 1996-08-14 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
WO1996035997A1 (fr) * 1996-05-22 1996-11-14 Yalestown Corporation N.V. Processeur parallele
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
JP3961028B2 (ja) 1996-12-27 2007-08-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等)
DE19704044A1 (de) * 1997-02-04 1998-08-13 Pact Inf Tech Gmbh Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6786420B1 (en) 1997-07-15 2004-09-07 Silverbrook Research Pty. Ltd. Data distribution mechanism in the form of ink dots on cards
US6789212B1 (en) 1997-04-24 2004-09-07 Edwin E. Klingman Basic cell for N-dimensional self-healing arrays
US6021453A (en) * 1997-04-24 2000-02-01 Klingman; Edwin E. Microprocessor unit for use in an indefinitely extensible chain of processors with self-propagation of code and data from the host end, self-determination of chain length and ID, (and with multiple orthogonal channels and coordination ports)
US6803989B2 (en) 1997-07-15 2004-10-12 Silverbrook Research Pty Ltd Image printing apparatus including a microcontroller
US6618117B2 (en) 1997-07-12 2003-09-09 Silverbrook Research Pty Ltd Image sensing apparatus including a microcontroller
US7110024B1 (en) 1997-07-15 2006-09-19 Silverbrook Research Pty Ltd Digital camera system having motion deblurring means
AUPO850597A0 (en) 1997-08-11 1997-09-04 Silverbrook Research Pty Ltd Image processing method and apparatus (art01a)
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
US6624848B1 (en) 1997-07-15 2003-09-23 Silverbrook Research Pty Ltd Cascading image modification using multiple digital cameras incorporating image processing
US7705891B2 (en) 1997-07-15 2010-04-27 Silverbrook Research Pty Ltd Correction of distortions in digital images
AUPO802797A0 (en) 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART54)
US20040119829A1 (en) 1997-07-15 2004-06-24 Silverbrook Research Pty Ltd Printhead assembly for a print on demand digital camera system
US6985207B2 (en) 1997-07-15 2006-01-10 Silverbrook Research Pty Ltd Photographic prints having magnetically recordable media
US6690419B1 (en) 1997-07-15 2004-02-10 Silverbrook Research Pty Ltd Utilising eye detection methods for image processing in a digital image camera
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6484065B1 (en) * 1997-12-29 2002-11-19 Kawasaki Microelectronics, Inc. DRAM enhanced processor
EP3073388A1 (en) 1998-03-18 2016-09-28 Koninklijke Philips N.V. Data processing device and method of computing the cosine transform of a matrix
US6079008A (en) * 1998-04-03 2000-06-20 Patton Electronics Co. Multiple thread multiple data predictive coded parallel processing system and method
US6185667B1 (en) * 1998-04-09 2001-02-06 Teranex, Inc. Input/output support for processing in a mesh connected computer
US6067609A (en) * 1998-04-09 2000-05-23 Teranex, Inc. Pattern generation and shift plane operations for a mesh connected computer
US6836838B1 (en) 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
DE19840210A1 (de) * 1998-09-03 2000-03-09 Fraunhofer Ges Forschung Verfahren zur Handhabung einer Mehrzahl von Schaltungschips
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
JP3439350B2 (ja) 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6658575B1 (en) * 1999-03-17 2003-12-02 Olympus Optical Co., Ltd. Voice recording/reproducing apparatus which enters a standby mode while in a communication mode with an external device
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
WO2000077652A2 (de) 1999-06-10 2000-12-21 Pact Informationstechnologie Gmbh Sequenz-partitionierung auf zellstrukturen
US6728863B1 (en) 1999-10-26 2004-04-27 Assabet Ventures Wide connections for transferring data between PE's of an N-dimensional mesh-connected SIMD array while transferring operands from memory
US6487651B1 (en) * 1999-10-26 2002-11-26 Assabet Ventures MIMD arrangement of SIMD machines
US6425026B1 (en) * 2000-02-23 2002-07-23 Teranex, Inc. Distribution, processing, and reconstruction of variable-sized images using multiple processor arrays
US6317695B1 (en) 2000-03-30 2001-11-13 Nutec Sciences, Inc. Seismic data processing method
US6452789B1 (en) * 2000-04-29 2002-09-17 Hewlett-Packard Company Packaging architecture for 32 processor server
EP2226732A3 (de) 2000-06-13 2016-04-06 PACT XPP Technologies AG Cachehierarchie für einen Multicore-Prozessor
US6745268B1 (en) * 2000-08-11 2004-06-01 Micron Technology, Lnc. Capacitive multidrop bus compensation
WO2002029601A2 (en) * 2000-10-04 2002-04-11 Pyxsys Corporation Simd system and method
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
JP3871327B2 (ja) * 2001-02-24 2007-01-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化されたスケーラブル・ネットワーク・スイッチ
CN1322452C (zh) * 2001-02-24 2007-06-20 国际商业机器公司 环形和树形网络中的算术函数
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
RU2202123C2 (ru) * 2001-06-06 2003-04-10 Бачериков Геннадий Иванович Параллельная вычислительная система с программируемой архитектурой
EP1402382B1 (de) 2001-06-20 2010-08-18 Richter, Thomas Verfahren zur bearbeitung von daten
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7069386B2 (en) * 2001-08-10 2006-06-27 Connex Technology, Inc. Associative memory device
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
DE10392560D2 (de) 2002-01-19 2005-05-12 Pact Xpp Technologies Ag Reconfigurierbarer Prozessor
DE10390689D2 (de) 2002-02-18 2005-02-10 Pact Xpp Technologies Ag Bussysteme und Rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9170812B2 (en) * 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7451143B2 (en) * 2002-08-28 2008-11-11 Cisco Technology, Inc. Programmable rule processing apparatus for conducting high speed contextual searches and characterizations of patterns in data
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7075784B2 (en) 2002-10-22 2006-07-11 Sullivan Jason A Systems and methods for providing a dynamically modular processing unit
AU2003284329A1 (en) 2002-10-22 2004-05-13 Isys Technologies Robust customizable computer processing system
AU2003285949A1 (en) 2002-10-22 2004-05-13 Isys Technologies Non-peripherals processing control module having improved heat dissipating properties
GB0226249D0 (en) * 2002-11-11 2002-12-18 Clearspeed Technology Ltd Traffic handling system
US20040107197A1 (en) * 2002-11-29 2004-06-03 Shen Yu Yong System, method and user interface allowing customized portfolio management
US20040117374A1 (en) * 2002-12-16 2004-06-17 Hung Lup Cheong Patrick Customized design portfolio integrating IP libraries and technology documents
US20040107214A1 (en) * 2002-11-29 2004-06-03 Hung Lup Cheong Patrick Customized document portfolio system integrating IP libraries and technology documents
US7386539B2 (en) * 2002-11-29 2008-06-10 Taiwan Semiconductor Manufacturing Company, Ltd. System, method, and user interface providing customized document portfolio management
US7464254B2 (en) * 2003-01-09 2008-12-09 Cisco Technology, Inc. Programmable processor apparatus integrating dedicated search registers and dedicated state machine registers with associated execution hardware to support rapid application of rulesets to data
JP3987805B2 (ja) * 2003-01-27 2007-10-10 Necエレクトロニクス株式会社 アレイ型プロセッサ
EP1676208A2 (en) 2003-08-28 2006-07-05 PACT XPP Technologies AG Data processing device and method
JP2007534066A (ja) * 2004-04-22 2007-11-22 ワラテック プロプライエタリー リミテッド 複製メモリフィールドを備えたマルチコンピュータアーキテクチャ
JP2006243839A (ja) * 2005-02-28 2006-09-14 Toshiba Corp 命令生成装置及び命令生成方法
WO2007030742A2 (en) * 2005-09-08 2007-03-15 Matsushita Electric Industrial Co., Ltd. Parallelizing peer-to-peer overlays using multi-destination routing
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
JP2009523292A (ja) * 2006-01-10 2009-06-18 ブライトスケール インコーポレイテッド 並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置
US8250503B2 (en) 2006-01-18 2012-08-21 Martin Vorbach Hardware definition method including determining whether to implement a function as hardware or software
US20070226455A1 (en) * 2006-03-13 2007-09-27 Cooke Laurence H Variable clocked heterogeneous serial array processor
US8656143B2 (en) 2006-03-13 2014-02-18 Laurence H. Cooke Variable clocked heterogeneous serial array processor
US7657496B2 (en) * 2006-06-26 2010-02-02 Saffron Technology, Inc. Nonlinear associative memories using linear arrays of associative memory cells, and methods of operating same
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
US20080059764A1 (en) * 2006-09-01 2008-03-06 Gheorghe Stefan Integral parallel machine
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
US7990724B2 (en) 2006-12-19 2011-08-02 Juhasz Paul R Mobile motherboard
US8954484B2 (en) * 2009-06-12 2015-02-10 Cray Inc. Inclusive or bit matrix to compare multiple corresponding subfields
US9251207B2 (en) * 2007-11-29 2016-02-02 Microsoft Technology Licensing, Llc Partitioning and repartitioning for data parallel operations
WO2010035173A1 (en) * 2008-09-29 2010-04-01 Nxp B.V. Visual prosthesis implant
DE102009025572A1 (de) * 2009-06-19 2010-12-23 Wolfgang Pree Gmbh Eine Methode zur Entwicklung von garantiert korrekten Echtzeitsystemen
US8930896B1 (en) 2010-07-23 2015-01-06 Amazon Technologies, Inc. Data anonymity and separation for user computation
RU2436151C1 (ru) * 2010-11-01 2011-12-10 Федеральное государственное унитарное предприятие "Российский Федеральный ядерный центр - Всероссийский научно-исследовательский институт экспериментальной физики" (ФГУП "РФЯЦ-ВНИИЭФ") Способ определения структуры гибридной вычислительной системы
US20140281369A1 (en) * 2011-12-23 2014-09-18 Ashish Jha Apparatus and method for sliding window data gather
RU2513759C1 (ru) * 2012-11-01 2014-04-20 Федеральное государственное бюджетное учреждение науки Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) Гетерогенный процессор
EP2929434B1 (en) * 2012-12-06 2019-01-16 Coherent Logix Incorporated Processing system with synchronization instruction
CN105046162B (zh) * 2014-03-12 2018-07-27 西部数据技术公司 在内容可寻址存储系统中维护并使用子对父映射的缓存
RU2614926C2 (ru) * 2015-07-06 2017-03-30 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" Мультипроцессорная система
US9875045B2 (en) * 2015-07-27 2018-01-23 International Business Machines Corporation Regular expression matching with back-references using backtracking
BR112019016795A2 (pt) * 2017-04-14 2020-04-07 Hewlett Packard Development Co elementos de atraso para sinais de ativação
EP4187539B1 (en) 2017-07-30 2024-06-05 NeuroBlade Ltd. A memory-based distributed processor architecture
US11514996B2 (en) 2017-07-30 2022-11-29 Neuroblade Ltd. Memory-based processors
US10402165B2 (en) * 2017-08-30 2019-09-03 Gsi Technology Inc. Concurrent multi-bit adder
US20220171829A1 (en) 2019-03-11 2022-06-02 Untether Ai Corporation Computational memory
WO2020183396A1 (en) 2019-03-11 2020-09-17 Untether Ai Corporation Computational memory
CN111290787B (zh) * 2019-06-19 2022-11-08 锐迪科(重庆)微电子科技有限公司 运算装置及运算方法
WO2021033125A1 (en) * 2019-08-16 2021-02-25 Untether Ai Corporation Computational memory with processing element row and bank communications
US11342944B2 (en) 2019-09-23 2022-05-24 Untether Ai Corporation Computational memory with zero disable and error detection
US11468002B2 (en) 2020-02-28 2022-10-11 Untether Ai Corporation Computational memory with cooperation among rows of processing elements and memory thereof
US11500811B2 (en) * 2020-06-12 2022-11-15 Alibaba Group Holding Limited Apparatuses and methods for map reduce
CN112540793A (zh) * 2020-12-18 2021-03-23 清华大学 支持多访存模式的可重构处理单元阵列及控制方法、装置

Family Cites Families (122)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3537074A (en) * 1967-12-20 1970-10-27 Burroughs Corp Parallel operating array computer
US3544973A (en) * 1968-03-13 1970-12-01 Westinghouse Electric Corp Variable structure computer
US4942516A (en) * 1970-12-28 1990-07-17 Hyatt Gilbert P Single chip integrated circuit computer architecture
US3970993A (en) * 1974-01-02 1976-07-20 Hughes Aircraft Company Cooperative-word linear array parallel processor
US4107773A (en) * 1974-05-13 1978-08-15 Texas Instruments Incorporated Advanced array transform processor with fixed/floating point formats
US4101960A (en) * 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4270170A (en) * 1978-05-03 1981-05-26 International Computers Limited Array processor
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
US4314349A (en) * 1979-12-31 1982-02-02 Goodyear Aerospace Corporation Processing element for parallel array processors
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
ZA811458B (en) * 1980-03-28 1982-03-31 Int Computers Ltd Data processing system
US4814979A (en) * 1981-04-01 1989-03-21 Teradata Corporation Network to transmit prioritized subtask pockets to dedicated processors
US4394726A (en) * 1981-04-29 1983-07-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Distributed multiport memory architecture
US4468727A (en) * 1981-05-14 1984-08-28 Honeywell Inc. Integrated cellular array parallel processor
DE3144015A1 (de) * 1981-11-05 1983-05-26 Ulrich Prof. Dr. 7500 Karlsruhe Kulisch "schaltungsanordnung und verfahren zur bildung von skalarprodukten und summen von gleitkommazahlen mit maximaler genauigkeit"
US4498133A (en) * 1981-12-10 1985-02-05 Burroughs Corp. Selector switch for a concurrent network of processors
BG35575A1 (en) * 1982-04-26 1984-05-15 Kasabov Multimicroprocessor system
US4523273A (en) * 1982-12-23 1985-06-11 Purdue Research Foundation Extra stage cube
JPS59132070A (ja) * 1983-01-18 1984-07-30 Mitsubishi Electric Corp アレイ演算用デ−タ処理装置
JPS59146345A (ja) * 1983-02-10 1984-08-22 Masahiro Sowa コントロ−ルフロ−並列計算機方式
US4739474A (en) * 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US5146608A (en) * 1983-05-31 1992-09-08 Hillis W Daniel Parallel processor array system controlled in response to composition status signal
US5212773A (en) 1983-05-31 1993-05-18 Thinking Machines Corporation Wormhole communications arrangement for massively parallel processor
US4598400A (en) * 1983-05-31 1986-07-01 Thinking Machines Corporation Method and apparatus for routing message packets
US5008815A (en) * 1983-05-31 1991-04-16 Thinking Machines Corporation Parallel processor
US4814973A (en) 1983-05-31 1989-03-21 Hillis W Daniel Parallel processor
US4621339A (en) * 1983-06-13 1986-11-04 Duke University SIMD machine using cube connected cycles network architecture for vector processing
US4604695A (en) * 1983-09-30 1986-08-05 Honeywell Information Systems Inc. Nibble and word addressable memory arrangement
DE3506749A1 (de) * 1984-02-27 1985-09-26 Nippon Telegraph & Telephone Public Corp., Tokio/Tokyo Matrixprozessor und steuerverfahren hierfuer
US4855903A (en) * 1984-12-20 1989-08-08 State University Of New York Topologically-distributed-memory multiprocessor computer
US4901224A (en) * 1985-02-25 1990-02-13 Ewert Alfred P Parallel digital processor
US5113523A (en) * 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
US4805091A (en) * 1985-06-04 1989-02-14 Thinking Machines Corporation Method and apparatus for interconnecting processors in a hyper-dimensional array
US4967340A (en) * 1985-06-12 1990-10-30 E-Systems, Inc. Adaptive processing system having an array of individually configurable processing components
US5045995A (en) * 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
HU195972B (en) 1985-07-01 1988-08-29 Richter Gedeon Vegyeszet Process for producing new diamino-androstane derivatives and pharmaceutical compositions containing them
US5047917A (en) * 1985-07-12 1991-09-10 The California Institute Of Technology Apparatus for intrasystem communications within a binary n-cube including buffer lock bit
JPS6219960A (ja) * 1985-07-17 1987-01-28 Nec Corp 多段構成プロセツサシステム
US4706191A (en) * 1985-07-31 1987-11-10 Sperry Corporation Local store for scientific vector processor
US4739476A (en) * 1985-08-01 1988-04-19 General Electric Company Local interconnection scheme for parallel processing architectures
EP0212031B1 (en) * 1985-08-13 1990-11-07 International Business Machines Corporation Dynamic bandwidth allocation mechanism between circuit slots and packet bit stream in a communication network
GB8521672D0 (en) * 1985-08-30 1985-10-02 Univ Southampton Data processing device
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4922408A (en) * 1985-09-27 1990-05-01 Schlumberger Technology Corporation Apparatus for multi-processor communications
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US4907148A (en) * 1985-11-13 1990-03-06 Alcatel U.S.A. Corp. Cellular array processor with individual cell-level data-dependent cell control and multiport input memory
US4736291A (en) * 1985-11-22 1988-04-05 Texas Instruments Incorporated General-purpose array processor
US4852048A (en) * 1985-12-12 1989-07-25 Itt Corporation Single instruction multiple data (SIMD) cellular array processing apparatus employing a common bus where a first number of bits manifest a first bus portion and a second number of bits manifest a second bus portion
US4916657A (en) * 1985-12-12 1990-04-10 Alcatel Usa, Corp. Single instruction multiple data (SIMD) cellular array processing apparatus employing multiple state logic for coupling to data buses
US4831519A (en) * 1985-12-12 1989-05-16 Itt Corporation Cellular array processor with variable nesting depth vector control by selective enabling of left and right neighboring processor cells
US4783782A (en) * 1985-12-12 1988-11-08 Alcatel U.S.A. Corporation Manufacturing test data storage apparatus for dynamically reconfigurable cellular array processor chip
US4835729A (en) * 1985-12-12 1989-05-30 Alcatel Usa, Corp. Single instruction multiple data (SIMD) cellular array processing apparatus with on-board RAM and address generator apparatus
US4748585A (en) * 1985-12-26 1988-05-31 Chiarulli Donald M Processor utilizing reconfigurable process segments to accomodate data word length
US4925311A (en) * 1986-02-10 1990-05-15 Teradata Corporation Dynamically partitionable parallel processors
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4783738A (en) * 1986-03-13 1988-11-08 International Business Machines Corporation Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element
US4814980A (en) * 1986-04-01 1989-03-21 California Institute Of Technology Concurrent hypercube system with improved message passing
US4809169A (en) * 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
US4780873A (en) * 1986-05-19 1988-10-25 General Electric Company Circuit switching network with routing nodes
US4809347A (en) * 1986-07-18 1989-02-28 Hughes Aircraft Company Computer vision architecture
JPS6353678A (ja) * 1986-08-22 1988-03-07 Hitachi Ltd ベクトル処理装置
US5038386A (en) * 1986-08-29 1991-08-06 International Business Machines Corporation Polymorphic mesh network image processing system
US4910665A (en) * 1986-09-02 1990-03-20 General Electric Company Distributed processing system including reconfigurable elements
US4860201A (en) * 1986-09-02 1989-08-22 The Trustees Of Columbia University In The City Of New York Binary tree parallel processor
US5230079A (en) 1986-09-18 1993-07-20 Digital Equipment Corporation Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register
US5170484A (en) * 1986-09-18 1992-12-08 Digital Equipment Corporation Massively parallel array processing system
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
CN1008018B (zh) * 1986-09-27 1990-05-16 徐肇昌 一种具有合作能力的同构型多计算机系统及其合作方法
US4841476A (en) * 1986-10-06 1989-06-20 International Business Machines Corporation Extended floating point operations supporting emulation of source instruction execution
US5010477A (en) * 1986-10-17 1991-04-23 Hitachi, Ltd. Method and apparatus for transferring vector data between parallel processing system with registers & logic for inter-processor data communication independents of processing operations
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
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
US4891787A (en) * 1986-12-17 1990-01-02 Massachusetts Institute Of Technology Parallel processing system with processor array having SIMD/MIMD instruction processing
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US5165023A (en) * 1986-12-17 1992-11-17 Massachusetts Institute Of Technology Parallel processing system with processor array and network communications system for transmitting messages of variable length
DE3702614A1 (de) * 1987-01-29 1988-08-11 Standard Elektrik Lorenz Ag Digitales koppelnetz fuer leitungs- und paketvermittlung und koppeleinrichtung hierzu
JPS63192153A (ja) * 1987-02-05 1988-08-09 Agency Of Ind Science & Technol 並列デ−タ処理装置
US4964032A (en) * 1987-03-27 1990-10-16 Smith Harry F Minimal connectivity parallel data processing system
US4933846A (en) * 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors
US4933895A (en) * 1987-07-10 1990-06-12 Hughes Aircraft Company Cellular array having data dependent processing capabilities
US5170482A (en) * 1987-08-14 1992-12-08 Regents Of The University Of Minnesota Improved hypercube topology for multiprocessor computer systems
US5008882A (en) * 1987-08-17 1991-04-16 California Institute Of Technology Method and apparatus for eliminating unsuccessful tries in a search tree
US4958273A (en) * 1987-08-26 1990-09-18 International Business Machines Corporation Multiprocessor system architecture with high availability
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US4942517A (en) * 1987-10-08 1990-07-17 Eastman Kodak Company Enhanced input/output architecture for toroidally-connected distributed-memory parallel computers
US4943912A (en) * 1987-10-13 1990-07-24 Hitachi, Ltd. Parallel processor system having control processor and array control apparatus for selectively activating different processors
US4872133A (en) * 1988-02-18 1989-10-03 Motorola, Inc. Floating-point systolic array including serial processors
US4896265A (en) * 1988-03-28 1990-01-23 General Electric Company Parallel broadcasting method and apparatus
US4992926A (en) * 1988-04-11 1991-02-12 Square D Company Peer-to-peer register exchange controller for industrial programmable controllers
US5121498A (en) * 1988-05-11 1992-06-09 Massachusetts Institute Of Technology Translator for translating source code for selective unrolling of loops in the source code
US5038282A (en) * 1988-05-11 1991-08-06 Massachusetts Institute Of Technology Synchronous processor with simultaneous instruction processing and data transfer
US5056000A (en) * 1988-06-21 1991-10-08 International Parallel Machines, Inc. Synchronized parallel processing with shared memory
US5005120A (en) * 1988-07-29 1991-04-02 Lsi Logic Corporation Compensating time delay in filtering signals of multi-dimensional reconvigurable array processors
GB2223867A (en) * 1988-09-09 1990-04-18 Univ City Multiprocessor data processing system
US4920484A (en) * 1988-10-05 1990-04-24 Yale University Multiprocessor/memory interconnection network wherein messages sent through the network to the same memory are combined
US5041971A (en) * 1988-11-30 1991-08-20 Bolt Beranek And Newman Inc. Memory accessing switch network
US5189665A (en) 1989-03-30 1993-02-23 Texas Instruments Incorporated Programmable configurable digital crossbar switch
US5020059A (en) * 1989-03-31 1991-05-28 At&T Bell Laboratories Reconfigurable signal processor
US5181017A (en) 1989-07-27 1993-01-19 Ibm Corporation Adaptive routing in a parallel computing system
US5049982A (en) * 1989-07-28 1991-09-17 At&T Bell Laboratories Article comprising a stacked array of electronic subassemblies
US5173947A (en) * 1989-08-01 1992-12-22 Martin Marietta Corporation Conformal image processing apparatus and method
JPH0731780B2 (ja) * 1989-09-08 1995-04-10 日本碍子株式会社 磁気ヘッド用コアの製造方法
US5072217A (en) * 1989-10-31 1991-12-10 International Business Machines Corporation One-sided crosspoint switch with distributed control
US5212777A (en) 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5239654A (en) 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5218709A (en) 1989-12-28 1993-06-08 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Special purpose parallel computer architecture for real-time control and simulation in robotic applications
US5175862A (en) * 1989-12-29 1992-12-29 Supercomputer Systems Limited Partnership Method and apparatus for a special purpose arithmetic boolean unit
US5239629A (en) 1989-12-29 1993-08-24 Supercomputer Systems Limited Partnership Dedicated centralized signaling mechanism for selectively signaling devices in a multiprocessor system
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5280474A (en) 1990-01-05 1994-01-18 Maspar Computer Corporation Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays
US5218676A (en) 1990-01-08 1993-06-08 The University Of Rochester Dynamic routing system for a multinode communications network
US5265124A (en) 1990-02-15 1993-11-23 Advanced Micro Devices, Inc. Integrated multi-port repeater having shared resources
US5142540A (en) * 1990-03-13 1992-08-25 Glasser Lance A Multipart memory apparatus with error detection
US5187801A (en) 1990-04-11 1993-02-16 Thinking Machines Corporation Massively-parallel computer system for generating paths in a binomial lattice
WO1991017507A1 (en) 1990-05-07 1991-11-14 Mitsubishi Denki Kabushiki Kaisha Parallel data processing system
US5136582A (en) * 1990-05-29 1992-08-04 Advanced Micro Devices, Inc. Memory management system and method for network controller
US5251097A (en) 1990-06-11 1993-10-05 Supercomputer Systems Limited Partnership Packaging architecture for a highly parallel multiprocessor system
US5253359A (en) 1990-06-11 1993-10-12 Supercomputer Systems Limited Partnership Control and maintenance subsystem network for use with a multiprocessor computer system
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

Also Published As

Publication number Publication date
EP0485690A3 (en) 1994-09-21
CZ280210B6 (cs) 1995-12-13
RU2084953C1 (ru) 1997-07-20
CN1061482A (zh) 1992-05-27
EP0485690A2 (en) 1992-05-20
CZ344091A3 (en) 1995-05-17
PL292368A1 (en) 1992-09-07
CA2050166A1 (en) 1992-05-14
JPH04267466A (ja) 1992-09-24
US5822608A (en) 1998-10-13
HU215139B (hu) 1998-09-28
DE69131272T2 (de) 1999-12-09
ATE180586T1 (de) 1999-06-15
EP0485690B1 (en) 1999-05-26
KR960016880B1 (ko) 1996-12-26
CN1050919C (zh) 2000-03-29
SK344091A3 (en) 1995-01-05
KR920010473A (ko) 1992-06-26
BR9104603A (pt) 1992-06-23
TW229289B (pl) 1994-09-01
HUT59496A (en) 1992-05-28
HU913542D0 (en) 1992-02-28
DE69131272D1 (de) 1999-07-01

Similar Documents

Publication Publication Date Title
PL167329B1 (pl) Uklad przetwarzania równoleglego PL PL
US5805915A (en) SIMIMD array processing system
US5809292A (en) Floating point for simid array machine
US5815723A (en) Picket autonomy on a SIMD machine
US5754871A (en) Parallel processing system having asynchronous SIMD processing
Lea ASP: A cost-effective parallel microcomputer
US5966528A (en) SIMD/MIMD array processor with vector processing
US5713037A (en) Slide bus communication functions for SIMD/MIMD array processor
US5682544A (en) Massively parallel diagonal-fold tree array processor
US5710935A (en) Advanced parallel array processor (APAP)
US5680597A (en) System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US5794059A (en) N-dimensional modified hypercube
Bartoloni et al. A hardware implementation of the APE100 architecture
JPH0922404A (ja) 同報通信プロセッサ命令を備えたアレイ・プロセッサ通信アーキテクチャ
US5765012A (en) Controller for a SIMD/MIMD array having an instruction sequencer utilizing a canned routine library
EP0570952A2 (en) Slide network for an array processor
JP2521401B2 (ja) 単一命令複数デ―タ/複数命令複数デ―タ・プロセッサ・アレイ用コントロ―ラ
Giloi The SUPRENUM supercomputer: Goals, achievements, and lessons learned
JP2625628B2 (ja) 浮動小数点コンピュータ・システム
WO1988004077A1 (en) Pipelining technique and pipelined processes
JPH07287700A (ja) コンピュータ・システム
DUNCAN Parallel Computer Construction
Lopresti An Architecture for Programmable Systolic Arrays
Lopresti Programmable Systolic Arrays
Aburdene et al. Design of a massively parallel computer using bit serial processing elements