PL165491B1 - Uklad do równoleglego przetwarzania rozkazów w komputerze cyfrowym PL - Google Patents

Uklad do równoleglego przetwarzania rozkazów w komputerze cyfrowym PL

Info

Publication number
PL165491B1
PL165491B1 PL91289720A PL28972091A PL165491B1 PL 165491 B1 PL165491 B1 PL 165491B1 PL 91289720 A PL91289720 A PL 91289720A PL 28972091 A PL28972091 A PL 28972091A PL 165491 B1 PL165491 B1 PL 165491B1
Authority
PL
Poland
Prior art keywords
output
input
instruction
circuit
register
Prior art date
Application number
PL91289720A
Other languages
English (en)
Inventor
Bartholomew Blaner
Stamatis Vassiliadis
Original Assignee
Ibm
International Business Machines Corp
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, International Business Machines Corp filed Critical Ibm
Publication of PL165491B1 publication Critical patent/PL165491B1/pl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

1 . Uklad do równoleglego przetwarzania rozkazów w komputerze cyfrowym zawieraja­ cy obwody pamieciowe, znamienny tym, ze zawiera obwód laczenia (11), którego wejscie (11a) jest dolaczone do wyjscia (10a) pierwsze­ go obwodu pamieciowego (10), korzystnie o duzej pojemnosci i malej szybkosci, a wyjscie (11b) jest dolaczone do wejscia (12a) drugiego obwodu pamieciowego (12), korzystnie stano­ wiacego pamiec podreczna o malej pojemnosci i duzej szybkosci, obwód pobierania i wydawa­ nia (16) rozkazów, którego wejscie (16a) jest dolaczone do wyjscia (12b) drugiego obwodu pamieciowego (12), oraz co najmniej dwie funkcjonalne jednostki przetwarzania (13, 14, 15) rozkazów, których wejscia (13a, 14a, 15a) sa dolaczone do wyjscia (16b) obwodu pobie­ rania i wydawania (16) rozkazów. FIG .1 PL

Description

Przedmiotem wynalazku jest układ do równoległego przetwarzania rozkazów w komputerze cyfrowym.
Praca znanych komputerów cyfrowych, które wykonują rozkazy jeden po drugim w porządku sekwencyjnym, poprawiła się znacznie w związku z poprawą technologii układowej. Takie komputery wykonujące rozkazy jeden po drugim są czasami nazywane komputerami skalarnymi. Możliwości technologiczne sąjednak ograniczone, więc projektanci komputerów musieli zastosować inne środki do uzyskania znacznej poprawy ich pracy.
Znane są także komputery super-skalarne, które poprawiają pracę przez wykonywanie więcej niż jednego rozkazu w danym czasie, pochodzącego z pojedynczego strumienia rozkazów. Takie znane komputery super-skalarne decydują zwykle w czasie wykonywanie rozkazów, czy dana liczba rozkazów może być wykonywana równolegle. Taka decyzja jest oparta na kodach operacyjnych rozkazów i zależności danych, które mogą występować pomiędzy sąsiednimi rozkazami. Kody operacyjne określają poszczególne elementy sprzętowe, które będzie wykorzystywał każdy z rozkazów i zwykle nie jest możliwe, żeby dwa lub więcej rozkazów wykorzystywało ten sam element sprzętowy w tym samym czasie ani żeby wykonywać rozkaz, który zależy od wyników poprzedniego rozkazu (zależność danych). Te zależności sprzętowe i danych zapobiegają wykonywaniu pewnych kombinacji rozkazów równolegle.
W tym przypadku działające rozkazy są zamiast tego wykonywane same w sposób nierównoległy. To oczywiście pogarsza pracę komputera super-skalarnego.
Znane komputery super-skalarne zapewniają pewną poprawę pracy, lecz mają także wady, które byłoby pożądane zmniejszyć do minimum. Z jednej strony decydowanie w czasie wykonywania rozkazów, które mogą być wykonywane równolegle, zajmują małą, lecz zauważalną ilość czasu, który nie może być bardzo łatwo maskowany przez nałożenie go na inne, normalne operacje urządzenia. Ta wada staje się wyraźniejsza, gdy złożoność budowy zespołu rozkazów wzrasta. Inną wadą jest to, ze wykonywanie decyzji musi być powtarzane ciągle, za każdym razem, gdy te same rozkazy mają być wykonywane drugi lub następny raz.
Znane urządzenie tego typu jest przedstawione w zgłoszeniu patentowym nr P-289 722 ujawniającym architekturę komputera o zestawie rozkazów składanych sekwencyjnie. W zgło4
165 491 szeniu patentowym nr P-289 723 jest przedstawiony układ komputerowy ogólnego zastosowania dla procesorów równoległych na poziomie rozkazów. Natomiast zgłoszenie patentowe nr P-289 721 ujawnia układ komputerowy zmniejszający zależność danych.
W zgłoszeniu patentowym nr P-289 722 jest przedstawiona jedna z cech komputera o zestawie rozkazów składanych sekwencyjnie, polegająca na tym, żeby nie podejmować decyzji związanych z wykonywaniem równoległym w czasie jego trwania, natomiast dokonać go we wcześniejszym momencie całego procesu obróbki rozkazów. Dla przy kładu można dokonać tego przed pamięcią buforową rozkazów w tych komputerach, które mają pamięci buforowe rozkazów lub pamięci kolumnowe rozkazów. W innym przykładzie można dokonać tego przed pamięcią podręczną rozkazów w tych komputerach, które przeprowadzają rozkazy przez pamięć podręczną. Inną cechą tego komputera jest rejestracja wyników podejmowania decyzji dotyczących przetwarzania równoległego w ten sposób, ze takie wyniki są osiągane w przypadku, gdy te same rozkazy są stosowane drugi lub następny raz.
Istotą układu do równoległego przetwarzania rozkazów w komputerze cyfrowym, według wynalazku, zawierającego obwody pamięciowe, jest to, ze zawiera obwód łączenia, którego wejście jest dołączone do wyjścia pierwszego obwodu pamięciowego, korzystnie o dużej pojemności i małej szybkości, a wyjście jest dołączone do wejścia drugiego obwodu pamięciowego, korzystnie stanowiącego pamięć podręczną o małej pojemności i dużej szybkości, obwód pobierania i wydawania rozkazów, którego wejście jest dołączone do wyjścia drugiego obwodu pamięciowego, oraz co najmniej dwie funkcjonalne jednostki przetwarzania rozkazów, których wejścia są dołączone do wyjścia obwodu pobierania i wydawania rozkazów.
Korzystne jest, gdy zgodnie z wynalazkiem obwód łączenia zawiera rejestr wejściowy rozkazów z co najmniej trzema tablicami pamięci, którego wejście jest dołączone do wyjścia pierwszego obwodu pamięciowego, co najmniej jeden analizator sygnałów złożoności, którego wejście jest dołączone do wyjścia rejestru wejściowego rozkazów, obwód generacji znaczników, którego co najmniej dwa wejścia są dołączone do dwóch wyjść analizatora sygnałów złożoności, rejestr wyjściowy rozkazów z co najmniej trzema tablicami pamięci , którego co najmniej trzy wejścia są dołączone do trzech wyjść obwodu generacji znaczników, przy czym wyjście rejestru wyjściowego rozkazów jest dołączone do wejścia drugiego obwodu pamięciowego.
Dalsze korzyści uzyskuje się, gdy zgodnie z wynalazkiem analizator sygnałów złożoności zawiera pierwszy obwód detekcji zgodności rozkazów, którego dwa wejścia kodu operacyjnego rozkazu 0 i kodu operacyjnego rozkazu 1 są dołączone do wyjścia rejestru wejściowego rozkazów, drugi obwód detekcji zgodności rozkazów, którego dwa wejścia kodu operacyjnego rozkazu 1 i kodu operacyjnego rozkazu 2 są dołączone do wyjścia rejestru wejściowego rozkazów, pierwszy i drugi obwód detekcji zależności rejestrów, których wejścia są dołączone do wyjścia rejestru wejściowego rozkazów, pierwszy element I, którego pierwsze wejście jest dołączone do wyjścia pierwszego obwodu detekcji zgodności rozkazów, drugi wejście jest dołączone do wyjścia pierwszego obwodu detekcji zależności reiestrów, a wyjście jest dołączone do pierwszego wejścia obwodu generacji znaczników, oraz drugi element I, którego pierwsze wejście jest dołączone do wyjścia drugiego obwodu detekcji zgodności rozkazów, drugie wejście jest dołączone do wyjścia drugiego obwodu detekcji zależności rejestrów, a wyjście jest dołączone do drugiego wejścia obwodu generacji znaczników.
Kolejne korzyści z wynalazku uzyskuje się, gdy pierwszy i drugi obwód detekcji zgodności rozkazów zawierają trzy dekodery, każdy odpowiednio z wejściem kodu operacyjnego rozkazu 0, z wejściem kodu operacyjnego rozkazu 1 i z wejściem kodu operacyjnego rozkazu 2 dołączonym do wyjścia rejestru wejściowego rozkazów, trzeci element I, którego pierwsze wejście jest dołączone do pierwszego wyjścia pierwszego dekodera, a drugie wejście jest dołączone do pierwszego wyjścia drugiego dekodera, czwarty element I, którego pierwsze wejście jest dołączone do drugiego wyjścia pierwszego dekodera a drugie wejście jest dołączone do pierwszego wyjścia drugiego dekodera, piąty element I, którego pierwsze wejście jest dołączone do pierwszego wyjścia drugiego dekodera, a drugie wejście jest dołączone do pierwszego wyjścia trzeciego dekodera, szósty element I, którego pierwsze wejście jest dołączone do drugiego wyjścia drugiego dekodera, a drugie wejście jest dołączone do pierwszego wyjścia trzeciego dekodera, pierwszy element LUB, którego pierwsze wejście jest dołączone do
165 491 wyjścia trzeciego elementu I, drugie wejście jest dołączone do wyjścia czwartego elementu, I a wyjście jest dołączone do pierwszego wejścia obwodu generacji znaczników, oraz drugi element LUB, którego pierwsze wejście jest dołączone do wyjścia piątego elementu I, drugie wejście jest dołączone do wyjścia szóstego elementu I, a wyjście jest dołączone do drugiego wejścia obwodu generacji znaczników.
Korzystnie jest ponadto, gdy według wynalazku obwód generacji znaczników zawiera pierwszy element NIE, którego wejście jest dołączone do pierwszego wyjścia analizatora sygnałów złożoności, a wyjście jest dołączone do wejścia rejestru wyjściowego rozkazów, drugi element NIE, którego wejściejest dołączone do drugiego wyjścia analizatora sygnałów złożoności, trzeci element LUB, którego pierwsze wejście jest dołączone do pierwszego wyjścia analizatora sygnałów złożoności, drugie wejście jest dołączone do wyjścia drugiego elementu NIE, a wyjście jest dołączone do wejścia rejestru wyjściowego rozkazów.
Ponadto w układzie według wynalazku funkcjonalne jednostki przetwarzania rozkazów stanowią jednostkę przetwarzania rozkazów rozgałęzienia, jednostkę arytmetyczno-logiczną wytwarzania adresów, uniwersalną jednostkę arytmetyczno-logiczną oraz jednostkę arytmetyczno--ogiczną eliminacji zależności danych.
Zaletą rozwiązania według wynalazku jest to, że poprzez zapamiętanie znaczników łączenia w pamięci podręcznej jest możliwe stosowanie znaczników ponownie przez cały czas tak długo, jak badane rozkazy pozostają w pamięci podręcznej. Rozkazy pozostają często w pamięci podręcznej dostatecznie długo do zastosowania więcej niż jeden raz.
Przedmiot wynalazku jest uwidoczniony w przykładzie wykonania na rysunku, na którym fig. 1 przedstawia schemat blokowy układu do równoległego przetwarzania rozkazów w komputerze cyfrowym, fig. 2 - część strumienia rozkazów posiadających znaczniki i pola znaczników, fig. 3 - schemat blokowy obwodu łączenia dla układu z fig. 1, fig. 4 - schemat blokowy analizatora sygnałów złożoności dla obwodu z fig. 3, fig. 5 - schemat obwodów detekcji, dla analizatora z fig. 4, fig. 6 - tablicę wyjaśniającą działanie obwodu detekcji z fig. 5, fig. 7 - schemat blokowy innego układu do równoległego przetwarzania rozkazów wyjaśniający, jak złożone rozkazy mogą być przetwarzane równolegle przez jednostki przetwarzania wielokrotnych rozkazów funkcjonalnych, fig. 8 - sekwencję rozkazów, która może być przetwarzana przez układ z fig 7 i fig. 9 - tablicę wyjaśniającą przetwarzania sekwencji rozkazów z fig. 9 przez układ z fig. 7.
Na figurze 1 jest przedstawiony schemat blokowy układu do równoległego przetwarzania rozkazów w komputerze cyfrowym. Ten układ jest zdolny do przetwarzania dwóch lub więcej rozkazów równolegle. Posiada on pierwszy obwód pamięciowy 10 do pamiętania rozkazów i danych, które mają być przetworzone. Ten obwód pamięciowy 10 stanowi pamięć o dużej pojemności i małej szybkości, którą może być na przykład jednostka pamięciowa układu o dużej pojemności dolnej części układu hierarchii pamięci lub podobnego rozwiązania. Układ zawiera następnie obwód łączenia 11, którego wejście 11a jest dołączone do wyjścia Da pierwszego obwodu pamięciowego 10, do odbioru rozkazów pierwszego obwodu pamięciowego 10 i związanych z tymi rozkazami pół znaczników, które wskazują, które z tych rozkazów mogą być przetworzone równolegle jeden z drugim. Obwód łączenia 11 analizuje rozkazy wejściowe dla określenia, które z nich mogą być przetwarzane równolegle. Ponadto wytwarza on dla tych analizowanych rozkazów informację znaczników lub pół znaczników, które wskazują, które rozkazy mogą być przetwarzane równolegle jeden z drugim i które nie mogą być przetwarzane równolegle jeden z drugim.
Układ z fig. 1 zawiera ponadto drugi obwód pamięciowy 12, dołączony swym wejściem 12a do wyjścia 11 b obwodu łączenia 11, przeznac zon y dl a odbiom i pamiętania analizowanych rozkazów i związanych z nimi pół znaczników. Ten drugi obwód pamięciowy 12 stanowi pamięć podręczną złożonych rozkazów. Pamięć podręczna jest układem pamięciowym o małej pojemności i dużej szybkości, powszechnie stosowanym do poprawy szybkości pracy komputera przez zmniejszenie częstotliwości dostępu do pierwszego obwodu pamięciowego 10 o małej szybkości.
Układ z fig. 1 zawiera również obwód pobierania i wydawania 16 rozkazów dołączony swym wejściem 16a do wyjścia 12b drugiego obwodu pamięciowego 12 dla dostarczania
165 491 zapamiętanych w nich, sąsiednich rozkazów do różnych funkcjonalnych jednostek przetwarzania 13, 14, 15 rozkazów, gdy pola znaczników rozkazów wskazują, ze mogą być one przetwarzane równolegle. Wyjście 16b obwodu pobierania i wydawania 16 rozkazów jest dołączone do wejść 13a, 14a, 15a tych funkcjonalnych jednostek przetwarzania. Obwód pobierania i wydawania 16 rozkazów dostarcza rozkazy z drugiego obwodu pamięciowego 12, bada ich pola znaczników i pola kodu operacyjnego oraz w oparciu o te badania przesyła rozkazy do właściwych spośród jednostek funkcjonalnych 13, 14, 15.
Jednostki 13, 14, 15 rozkazów pracują równolegle względem siebie w sposób jednoczesny i każda z osobna jest zdolna do przetwarzania jednego lub więcej typów rozkazów komputera. Przykładami funkcjonalnych jednostek przetwarzania 13, 14, 15, które można zastosować są: jednostka arytmetyczno-logiczna ogólnego zastosowania, jednostka arytmetyczno-logiczna wytwarzania adresów, jednostka arytmetyczno-logiczna eliminacji zależności danych, jednostka przetwarzania rozkazów rozgałęzień, jednostka przesuwania danych, jednostka przetwarzania zmiennoprzecinkowego i tak dalej. Dany układ może zawierać dwie lub więcej typów tych jednostek funkcjonalnych. Dla przykładu, układ może zawierać dwie lub więcej jednostek arytmetyczno-logicznych ogólnego zastosowania. Szczególna konfiguracja funkcjonalnych jednostek przetwarzania będzie zależała od rodzaju rozważanego układu.
W przypadku, gdy żądany rozkaz występuje w drugim obwodzie pamięciowym 12, to jest w pamięci podręcznej złożonych rozkazów, właściwy adres jest przesyłany do pamięci podręcznej dla dostarczania z mej żądanego rozkazu. Jeżeli żądany rozkaz nie występuje w pamięci podręcznej, musi być dostarczony z pierwszego obwodu pamięciowego 10 i wprowadzany do pamięci podręcznej. Określa się to czasami jako zgubienie pamięci podręcznej. Przy wystąpieniu zgubienia, adres żądanego rozkazu jest przesyłany do pierwszego obwodu pamięciowego 10. W odpowiedzi na to obwód ten rozpoczyna przenoszenie lub odczyt linii rozkazów, która zawiera żądany rozkaz. Te rozkazy są przenoszone do wejścia obwodu łączenia 11 rozkazów, który zaczyna analizować te wejściowe rozkazy i wytwarzać właściwe pole znaczników dla każdego rozkazu. Rozkazy ze znacznikami są następnie dostarczane do drugiego obwodu pamięciowego 12 złożonych rozkazów i pamiętane w nim dla następnego użycia, gdy jest to potrzebne, przez funkcjonalne jednostki przetwarzania 13, 14 i 15 rozkazów.
Analiza rozkazów przeprowadzana w obwodzie łączenia 11 rozkazów wymaga pewnego, stosunkowo krótkiego czasu. Jednak analiza łączenia rozkazów jest przeprowadzana jedynie wówczas, gdy występuje zgubienie pamięci podręcznej rozkazów i jest zatem stosunkowo rzadka.Figura 2 pokazuje część strumienia rozkazów złożonych lub ze znacznikami, jakie mogłyby pojawić się na wyjściu obwodu łączenia 11 rozkazów z fig. 1. Każdy rozkaz Instr. posiada dodane do niego przez obwód łączenia 11 rozkazów pole znaczników. Rozkazy ze znaczmkami, takie jak pokazane na fig. 2, są pamiętane w drugim obwodzie pamięciowym 12 złożonych rozkaztów. W razie potrzeby rozkazy ze znacznikami w tym obwodzie pamięciowym są dostarczane przez obwód pobierania i wydawania 16 rozkazów. Wówczas gdy rozkazy ze znacznikami są odbierane przez obwód pobierania i wydawania 16 rozkazów, ich pola znaczników są badane dla określenia, czy mogą być one przetwarzane równolegle i ich pola kodu operacyjnego są badane dla określenia, która z dostępnych jednostek funkcjonalnych jest najbardziej właściwa dla ich przetwarzania Jeżeli pola znaczników wskazują, że dwa lub więcej rozkazów jest właściwych do przetwarzania równoległego, wówczas są one przesyłane do właściwych spośród jednostek funkcjonalnych zgodnie z kodowaniami ich pól kodu operacyjnego. Takie rozkazy są następnie przetwarzane równocześnie ze sobą przez odpowiednie funkcjonalne jednostki przetwarzania 13, 14, 15.
W przypadku napotykania na rozkaz, który nie jest właściwy do przetwarzania równoległego. jest on przesyłany do właściwej jednostki przetwarzania. jak to określa jego kod operacyjny, i jest następnie przetwarzany sam i samodzielnie przez wybraną jednostkę przetwarzania. W najlepszym przypadku, gdy wiele rozkazów jest zawsze przetwarzanych równolegle, szybkość wykonywania rozkazów przez układ byłaby N razy większa niż w przypadku, gdy rozkazy są wykonywane jeden za drugim, przy czym N jest liczbą rozkazów w grupie, które są przetwarzane równolegle.
165 491
Figura 3 pokazuje bardziej szczegółowo wewnętrzną budowę obwodu łączenia 11 rozkazów według wynalazku dla układu z fig. 1. Obwód łączenia 11 rozkazów jest przeznaczony dla przypadku, w którym maksymalnie dwa rozkazy mogą być przetwarzane w danym czasie równolegle.
W tym przypadku jest stosowane jednobitowe pole znaczników. Wartość logiczna znacznika 1 oznacza, że rozkaz jest pierwszym rozkazem. Wartość logiczna znacznika 0 oznacza, ze rozkaz jest drugim rozkazem i może być wykonywany równolegle z przebiegiem pierwszego rozkazu. Rozkaz mający wartość logiczną znacznika 1 może być wykonywany albo sam albo równocześnie i równolegle z następnym rozkazem w zależności od wartości logicznej znacznika dla takiego następnego rozkazu. Każde łączenie w pary rozkazów mających wartość logiczną znacznika 1 z następnym rozkazem mającym wartość logiczną znacznika 0 tworzy rozkaz złożony dla celów wykonywania równoległego, to znaczy, że rozkazy w takiej parze mogą być przetwarzane równolegle jeden z drugim. Wówczas gdy bity znaczników dla dwóch kolejnych rozkazów mają każdy wartość równą 1, pierwszy z tych rozkazów jest wykonywany sam w porządku nierównoległym. W najgorszym możliwym przypadku wszystkie rozkazy w sekwencji miałyby wartość logiczną znacznika równą 1. W tym najgorszym przypadku wszystkie rozkazy byłyby wykonywane jeden za drugim w porządku nierównoległym.
Obwód łączenia 11 rozkazów z fig. 3 zawiera rejestr wejściowy 21 rozkazów do odbioru wielu kolejnych rozkazów z pierwszego obwodu pamięciowego 10. Obwód łączenia 11 rozkazów zawiera również wiele analizatorów rozkazów działających w oparciu o reguły. Każdy taki analizator rozkazów analizuje inną parę sąsiednich rozkazów w rejestrze wyjściowym 21 rozkazów i wytwarza sygnał złożoności, który wskazuje, czy dwa rozkazy w parze mogą lub nie mogą być przetwarzane równolegle. Wyjście 21b rejestru wejściowego 21 rozkazów jest dołączone do wejścia 22a pierwszego analizatora 22 sygnałów złożoności.
Na fig. 3 jest pokazanych wiele analizatorów 22, 23, 24, 25 sygnałów złożoności. Każdy z tych analizatorów 22, 23, 24, 25 posiada dwa układy analizy rozkazów. Zatem każdy z tych analizatorów 22, 23, 24, 25 wytwarza dwa sygnały złożoności. Na przykład pierwszy analizator 22 sygnałów złożoności wytwarza pierwszy sygnał M01 złożoności, który wskazuje, czy Instr. 0 i Instr. 1 mogą lub nie mogą być przetworzone równolegle. Analizator 22 sygnałów złożoności wytwarza również drugi sygnał M12 złożoności, który wskazuje, czy Instr. 1 i Instr. 2 mogą lub nie mogą być przetwarzane równolegle.
W podobny sposób drugi analizator 23 sygnałów złożoności wytwarza pierwszy możliwy sygnał M23 złożoności, który wskazuje, czy Instr. 2 i Instr. 3 mogą lub nie mogą być przetwarzane równolegle, oraz drugi sygnał M34 złożoności, który wskazuje, czy Instr. 3 i Instr. 4 mogą lub nie mogą być przetwarzane równolegle. Trzeci analizator 24 sygnałów złożoności wytwarza pierwszy sygnał M45 złożoności, który wskazuje, czy Instr. 4 i Instr. 5 mogą lub nie mogą być przetwarzane równolegle, oraz drugi sygnał M56 złożoności, który wskazuje czy Instr. 5 i Instr. 6 mogą lub nie mogą być przetwarzane równolegle. Czwarty analizator 25 złożoności wytwarza pierwszy sygnałów M67 złożoności, który wskazuje, czy Instr. 6 i Instr. 7 mogą lub nie mogą być przetwarzane równolegle, oraz drugi sygnał M78 złożoności, który wskazuje, czy Instr. 7 i Instr. 8 mogą lub nie mogą być przetwarzane równolegle.
Obwód łączenia 11 rozkazów zawiera ponadto obwód generacji 26 znaczników. Dla pierwszego analizatora 22 sygnałów złożoności, jego wyjścia 22b i 22c są dołączone do dwóch wejść M01a i M12a obwodu generacji 26 znaczników. Obwód ten jest czuły na sygnały złożoności występujące na wyjściach analizatorów 22, 23, 24, 25 dla wytwarzania poszczególnych pól znaczników dla różnych rozkazów w rejestrze wejściowym 21 rozkazów. Te pola T0, T1, T2,... znaczników są dostarczane do wejść 27a, 27b, 27c rejestru wyjściowego 27 rozkazów ze znacznikami jako same rozkazy, uzyskiwane z wyjściowych linii TAG0, TAG1, TAG2 rejestru wejściowego 21 rozkazów. W ten sposób jest zapewnione w rejestrze wyjściowym 27 rozkazów tego obwodu łączenia pole T0 znacznika dla Instr.0, pole T1 znacznika dla Instr. 1 itd.
W tym przykładzie wykonania każde pole T0, T1, T2...znaczników jest zawarte w pojedynczym bicie dwójkowym. Wartość logiczna znacznika równa 1 wskazuje, że następujący natychmiast rozkaz, jest pierwszym rozkazem. Wartość logiczna znacznika równa 0 wskazuje, że następujący natychmiast rozkaz jest drugim rozkazem. Rozkaz mający wartość
165 491 logiczną znacznika równą 1, po którym następuje rozkaz mający wartość logiczną znacznika równą 0, wskazuje, że te dwa rozkazy mogą być wykonane równolegle ze sobą. Rozkazy ze znacznikami w rejestrze wyjściowym 27 rozkazów tego obwodu łączenia są dostarczane z wyjścia 27d do drugiego obwodu pamięciowego 12 złożonych rozkazów z fig. 1 i są w nim pamiętane. Wielkość sprzętowa rejestru, pokazanego na fig. 3, można zmniejszyć przez pamiętanie złożonych rozkazów bezpośrednio w drugim obwodzie pamięciowym 12 złożonych rozkazów.
Na figurze 4 jest pokazana bardziej szczegółowo wewnętrzna budowa pierwszego analizatora 22 sygnałów złożoności z fig. 3. Pozostałe analizatory 23, 24, 25 sygnałów złożoności mają podobną budowę. Pokazany na fig. 4 analizator 22 sygnałów złożoności zawiera pierwszy obwód detekcji 30 zgodności rozkazów do badania na wejściu 30a kodu operacyjnego rozkazu 0 OP0 i na wejściu 30b kodu operacyjnego rozkazu 1 OP1 oraz określania, czy te dwa kody operacyjne są zgodne dla wykonania równoległego. Pierwszy obwód detekcji 30 jest skonstruowany zgodnie z uprzednio określonymi regułami dla selekcji, które pary kodów operacyjnych są zgodne dla wykonania równoległego. Bardziej szczegółowo, ten obwód detekcji zawiera obwody logiczne do realizacji reguł, które określają, które typy rozkazów są zgodne dla wykonania równoległego w szczególnym układzie komputerowym, zawierającym układ według wynalazku. Jeżeli kody operacyjne dla rozkazów 0 i 1są zgodne, wówczas pierwszy obwód detekcji 30 wytwarza na jego wyjściu 30c sygnał logiczny o wartości 1. Jeżeli nie są one zgodne, obwód ten wytwarza wartość logiczną 0 na jego wyjściu 30c.
Analizator 22 sygnałów złożoności zawiera ponadto drugi obwód detekcji 31 zgodności rozkazów do badania na wejściach 31a, 31b kodów operacyjnych rozkazów 1 i 2 OP1, OP2 oraz określania, czy są one zgodne dla wykonania równoległego. Drugi obwód detekcji 31 jest zbudowany w taki sam sposób jak pierwszy obwód detekcji 30, zgodnie z takimi samymi, uprzednio określonymi regułami stosowanymi dla pierwszego obwodu detekcji 30 dla selekcji, które pary kodów operacyjnych są zgodne dla wykonania równoległego w przypadku rozkazów 1 i 2. Zatem ten obwód detekcji zawiera obwody logiczne do realizacji reguł, które określają, które typy rozkazów są zgodne dla wykonywania równoległego, przy czym te reguły są takie same jak stosowane w pierwszym obwodzie detekcji 30. Jeżeli kody operacyjne dla rozkazów 1i 2 są zgodne, wówczas drugi obwód detekcji 31 wytwarza binarny sygnał wyjściowy o wartości logicznej 1. W innym przypadku wytwarza on binarny sygnał wyjściowy o wartości logicznej 0.
Analizator 22 sygnałów złożoności zawiera ponadto pierwszy obwód detekcji 32 zależności pierwszego rejestru do detekcji sprzeczności przy użyciu rejestrów ogólnego zastosowania, oznaczonych przez pola R1 i R2 rozkazów 0 i 1. Te rejestry ogólnego zastosowania zostaną omówione dalej bardziej szczegółowo. Między innymi pierwszy obwód detekcji 32 zależności rejestrów może być zbudowany właściwie dla detekcji wystąpienia stanu zależności danych, w których drugi rozkaz (rozkaz 1) potrzebuje użycia wyników uzyskanych przez działanie poprzedniego rozkazu (rozkazu 0). W tym przypadku albo drugi rozkaz może zostać wykonany przez układ zmniejszający zależność, przez wykonanie równolegle z pierwszym rozkazem, albo wykonanie drugiego rozkazu musi czekać na zakończenie wykonania poprzedniego rozkazu i dlatego nie może być przeprowadzone równolegle z poprzednim rozkazem. Technika obejścia pewnych zależności danych tego typu zostanie omówiona dalej. Jeżeli nie występują na wejściach 32a żadne zależności rejestru, które zapobiegają wykonaniu rozkazów 0 i 1 równolegle, wówczas na wyjściu 32b tego obwodu detekcji zależności rejestrów jest podana wartość logiczna równa 1 Jeżeli występuje zależność, wówczas jest podana wartość logiczna równa 0.
Analizator 22 sygnałów złożoności zawiera ponadto drugi obwód detekcji 33 zależności rejestru do detekcji sprzeczności przy użyciu rejestrów ogólnego zastosowania, oznaczonych przez pola 31 i 32 rozkazów 1 i 2. Drugi obwód detekcji 33 zależności rejestru ma taką samą budowę, jak omówiony poprzednio pierwszy obwód detekcji i wytwarza na wyjściu 33b binarny sygnał wyjściowy o wartości równej 1, jeżeli nie ma na wyjściach 33a żadnych zależności rejestru lub zależności mogą być zrealizowane przez układy zmniejszające zależność danych, a w przeciwnych przypadku binarny sygnał wyjściowy o wartości równej 0.
165 491
Wyjścia 30a i 32b odpowiednio pierwszego obwodu detekcji 30 zgodności rozkazów i pierwszego obwodu detekcji 32 zależności rejestru są dołączone do dwóch wejść 34a, 34b pierwszego elementu I 34. Wyjście 34c pierwszego elementu I 34 ma wartość logiczną 1, jeżeli dwa rozważane kody operacyjne są zgodne i jeżeli nie występują żadne zależności rejestru. Ta wartość logiczna 1 na wyjściu 34c tego elementu wskazuje, że dwa rozważane rozkazy są możliwe do złożenia, to znaczy, są wykonywalne równolegle. Jeżeli z drugiej strony pierwszy element I 34 ma na wyjściu wartość logiczną 0, wówczas dwa rozkazy nie są możliwe do złozenia. Zatem na wyjściu pierwszego elementu I 34 jest wytwarzany pierwszy sygnał M01 złożoności, który wskazuje, czy rozkazy 0 i 1 mogą lub nie mogą być przetwarzane równolegle. Ten sygnał M01 jest dostarczany do wejścia M01a obwodu generacji 26 znaczników.
Wyjścia 31c i 33b odpowiednio drugiego obwodu detekcji 31 zgodności rozkazów i drugiego obwodu detekcji 33 zależności rejestru są dołączone do dwóch wejść 35a, 35b drugiego elementu I 35. Drugi element I 35 wytwarza na wyjściu 35c drugi sygnał M12 złożoności, który ma wartość logiczną 1, jezeiidwa rozwa/.ane kody operacyjne (kody operacyjne dla rozkazów 1 i 2) są zgodne i jeżeli me występują żadne zależności rejestru dla rozkazów 1i 2 lub zależności rejestru, które można zrealizować przez układy zmniejszające zależność danych. W innym przypadku drugi element I 35 ma na wyjściu wartość logiczną 0. Wyjście 35c drugiego elementu I 35 jest dołączone do drugiego wejścia M12a obwodu generacji 26 znaczników.
Inne analizatory 23, 24, 25 sygnałów złożoności pokazane na fig. 3 mają taką samą wewnętrzną budowę, jak pokazana na fig 4 dla pierwszego analizatora 22 sygnału złożoności.
Na figurze 5 jest pokazany przykład wykonania obwodów detekcji, które można zastosować do realizacji analizatora 22 sygnału złożoności i części generatora 26 znaczników, który jest stosowany do wytwarzania trzech pierwszych znaczników, TAG 0, TAG 1 i TAG 2. W przykładzie z fig. 5 zakłada się, że są dwie kategorie rozkazów, które są oznaczone jako kategoria A i kategoria B. Zakłada się, ze reguły łączenia tych kategorii rozkazów są następujące:
(1) A może zawsze łączyć się z A (2) A nie może nigdy łączyć się z B (3) B nie może nigdy łączyć się z B (4) B może zawsze łączyć się z A (5) Reguła (4) ma przewagę nad regułą (1).
Te reguły reagują na żądanie wystąpienia rozkazów.
Następnie zakłada się, ze te reguły są takie, ze gdy występują nie będzie problemów z zależnościami rejestrów, ponieważ przebieg reguł wskazuje, że w przypadku, gdy występuje jakieś uzależnienie, takie uzależnienie jest zawsze możliwe do realizacji przez układy zmniejszające zależność danych. Innymi słowy, zakłada się w przykładzie z fig. 5, że obwody detekcji 32 i 33 zależności rejestrów z fig 4 nie są potrzebne. W takim przypadku elementy I 34 i 35 nie są również potrzebne i na wyjściu 30c pierwszego obwodu detekcji 30 zgodności rozkazów pojawia się sygnał M01, a na wyjściu 31c drugiego obwodu detekcji 31 pojawia się sygnał Ml2.
Przy tych założeniach fig. 5 pokazuje wewnętrzne obwody logiczne, które mogą być zastosowane dla obwodów detekcji 30 i 31 zgodności rozkazów z fig. 4. Przedstawiony na fig. 5 pierwszy obwód detekcji 30 zgodności rozkazów zawiera dekodery 40 i 41, kolejne elementy I 42 i 43 oraz element LUB 44. Drugi obwód detekcji 31 zgodności rozkazów zawiera z kolei dekodery 41 i 45, następne elementy 46 i 47 oraz następny element LUB 48. Środkowy dekoder 41 jest podzielony przez oba obwody detekcji 30 i 31.
Pierwszy obwód detekcji 30 bada kody operacyjne OP0 i OP1 rozkazów 0 i 1 dla określenia ich zgodności dla celów wykonywania równoległego. Jest to realizowane zgodnie z regułami (1)-(4) przedstawionymi powyżej. Pierwszy dekoder 40 sprawdza kod operacyjny pierwszego rozkazu podany na wyjściu 40a i jeżeli jest on kodem operacyjnym kategorii A, na linii wyjściowej A dołączonej do wyjścia 40b pierwszego dekodera 40 występuje wartość logiczna 1. Jeżeli OP0 jest kodem operacyjnym kategorii B, wówczas na linii wyjściowej B dołączonej do wyjścia 40c występuje wartość logiczna 1. Jeżeli OP0 nie należy ani do kategorii A, ani do kategorii B, wówczas oba wyjścia pierwszego dekodera 40 mają wartość logiczną 0. Drugi dekoder 41 dokonuje podobnego rodzaju dekodowania dla drugiego kodu operacyjnego OP 1.
165 491
Trzeci element 142 zastosowany w układzie według wynalazku, realizuje powyższą regułę (1). Jeżeli podawane na wejścia 42a, 42b tego elementu I, OP0 jest kodem operacyjnym kategorii A i OP1 jest również kodem kategorii A, wówczas trzeci element I 42 wytwarza na wyjściu 42c sygnał wyjściowy o wartości logicznej 1. W innym przypadku sygnał wyjściowy trzeciego elementu I 42 ma wartość logiczną 0. Trzeci element I 43 realizuje powyższą regułę (4). Jeżeli pierwszy kod operacyjny jest kodem operacyjnym kategorii B, a drugi kod operacyjny jest kodem operacyjnym kategorii A , wówczas trzeci element I 43 wytwarza sygnał wyjściowy o wartości logicznej 1. W innym przypadku wytwarza on sygnał wyjściowy o wartości logicznej 0. Jeżeli trzeci element I 42 albo kolejny czwarty element I 43 wytwarza sygnał wyjściowy o wartości 1, wprowadza on sygnał wyjściowy na wyjściu 44c pierwszego elementu LUB 44 na wartość logiczną 1, w tym przypadku sygnał M01 złożoności ma wartość logiczną 1. Ta wartość logiczna 1 wskazuje, że pierwszy i drugi rozkaz (rozkaz 0 i 1) są zgodne w celach wykonania równoległego.
Jeżeli jest wykrywana przez dekodery 40 i 41 jakaś inna kombinacja kategorii kodów operacyjnych, wówczas sygnały wyjściowe trzeciego elementu I 42 i czwartego elementu I 43 pozostawiają wartość logiczną 0 i sygnał M01 złożoności ma wartość logiczną 0 wskazującą niemożliwość złożenia. Zatem wystąpienie kombinacji wskazanych przez powyższe reguły (2) i (3) nie powoduje, ze elementy I 42 i 43 pozostawiają sygnału M01 o wartości logicznej 0. Jeżeli występują następne kategorie kodów operacyjnych w uzupełnieniu do kategorii A i B ich pojawienie się w strumieniu rozkazów nie pobudza wyjść dekoderów 40 i 41. Zatem one podobnie dają sygnał M01 złożoności o wartości logicznej 0. Drugi obwód detekcji 31 zgodności rozkazów przeprowadza podobnego rodzaju analizę kodów operacyjnych dla drugiego i trzeciego rozkazu (rozkazów 1 i 2 ) i jest zbudowany tak jak pierwszy obwód detekcji 30. Jeżeli drugi kod operacyjny OP1 jest kodem operacyjnym kategorii A i trzeci kod operacyjny OP2 jest kodem operacyjnym kategorii A, wówczas, zgodnie z regułą (1), piąty element I 46 wytwarza sygnał wyjściowy o wartości logicznej 1 i drugi sygnał M12 złożoności uzyskuje wartość logiczną 1 wskazującą możliwość złożenia. Jeżeli, z drugiej strony, OP1 jest kodem operacyjnym kategorii B i OP2 jest kodem operacyjnym kategorii A, wówczas, zgodnie z regułą (4), szósty element I 47 jest pobudzany do wytwarzania wartości logicznej 1 dla drugiego sygnału M12 złożoności. Dla dowolnych kombinacji kodów operacyjnych, innych niż przedstawione w regułach (1) i (4), sygnał M12 ma wartość logiczna 0.
Sygnały M01 i M12 złożoności są dostarczane do wejść M01a, M12a obwodu generacji 26 znaczników. Fig. 5 pokazuje układ logiczny, który może być stosowany w obwodzie generacji 26 znaczników dla odpowiedzi na sygnały M01 i M12 złożoności dla wytwarzania wymaganych wartości logicznych znaczników dla znaczników 0, 1 i 2.
Tablica z fig. 6 pokazuje wartości logiczne, które są realizowane przez obwód generacji 26 znaczników dla znaczników 0, 1i 2. Wartość logiczna 1 znacznika wskazuje, że odpowiedni rozkaz jest pierwszym rozkazem dla celów wykonania równoległego. Wartość logiczna 0 znacznika wskazuje, ze odpowiedni rozkaz jest drugim rozkazem dla celów wykonania równoległego. Jedynymi parami rozkazów, które są łączone i wykonywane równolegle, są te, dla których pierwszy rozkaz w parze ma wartość logiczną 1 znacznika a drugi rozkaz w parze ma wartość logiczną 0 znacznika. Każdy rozkaz mający wartość logiczną 1 znacznika, po którym następuje inny rozkaz mający wartość logiczną 1 znacznika, jest wykonywany pojedynczo, a nie w porządku równoległym z następnym rozkazem.
Dla przypadku z pierwszego rzędu na fig. 6 wszystkie trzy bity znaczników mają wartość 1. Oznacza to, że każdy z rozkazów 0 i 1 będzie wykonywany pojedynczo, nierównolegle. Dla drugiego rzędu z fig. 6 rozkazy 0 i 1 będą wykonywane równolegle, jeżeli znacznik 0 ma wymaganą wartość logiczną 1 i znacznik 1 ma wymaganą wartość logiczną 0. Dla trzeciego rzędu na fig. 6 rozkaz 0 będzie wykonywany pojedynczo, podczas gdy rozkazy 1 i 2 będą wykonywane równolegle jeden z drugim. Dla czwartego rzędu rozkazy 0 i 1 będą wykonywane równolegle jeden za drugim.
Dla tych przypadków, gdy znacznik 2 ma wartość logiczną 1, stan odpowiedniego rozkazu zależy od wartości logicznej znacznika 3. Jeżeli znacznik 3 ma wartość logiczną 0, wówczas rozkazy 2 i 3 mogą być wykonywane równolegle. Jeżeli z drugiej strony, znacznik 3
165 491 ma wartość logiczną 1, wówczas rozkaz 2 będzie wykonywany pojedynczo, nierównolegle. Należy zaznaczyć, ze logika realizowana dla obwodu generacji 26 znaczników nie pozwala na wystąpienie dwóch kolejnych bitów znaczników o wartościach 0.
Figura 6 przedstawia logikę potrzebną do wykonania przez część obwodu generacji 26 znaczników, pokazanego na fig. 5. Jak pokazano na fig. 6, znacznik 0 będzie zawsze miał wartość logiczną 1. Uzyskuje się to przez dostarczenie stałej wartości logicznej 1 na pierwszą linię wyjściową 50 obwodu generacji 26 znaczników, który tworzy limę wyjściową znacznika 0 Figura 6 pokazuje następnie, że wartość logiczna znacznika 1 jest zawsze przeciwna względem wartości logicznej sygnału M01 złożoności. Ten wynik jest uzyskiwany przez dołączenie drugiej linii wyjściowej 51 znacznika 1 do wyjścia pierwszego elementu NIE 52, którego wejście 52a jest dołączone do linii sygnału M01.
Wartość logiczna znacznika 2 na trzeciej linii wyjściowej 53 jest określona przez trzeci element LUB 54 i drugi element NIE 55. Jedno wejście 54a trzeciego elementu LUB 54 jest dołączone do linii sygnału M01. Jeżeli wartość logiczna sygnału M01 jest równa 1 wówczas znacznik 2 ma wartość 1. To dotyczy wartości znacznika 2 w drugim i czwartym rzędzie z fig. 6. Drugie wejście 54b trzeciego elementu LUB 54 jest dołączone do wyjścia 55b drugiego elementu NIE 55, którego wyjście 55ajest dołączone do linii sygnału M12. Jeżeli sygnał M12 ma wartość logiczną 0, ta wartość jest odwracana przez drugi element NIE 55 dla dostarczenia wartości logicznej 1 do drugiego wejścia 54b trzeciego elementu LUB 54. Powoduje to, ze znacznik 2 na trzeciej linii wyjściowej 53 ma wartość logiczną 1. To dotyczy wartości znacznika 2 w pierwszym rzędzie z fig 6. Zauważmy, ze w rzędzie trzecim znacznik 2 musi mieć wartość logiczną 0. Nastąpi to, ponieważ w tym przypadku sygnał M01 będzie miał wartość 0 i sygnał M12 będzie miał wartość 1, która jest odwracana przez drugi element NIE 55 w celu wytwarzania wartości 0 na drugim wejściu 54b trzeciego elementu LUB 54.
W tablicy z fig. 6 jest zawarta reguła pierwszeństwa dla rzędu czwartego w przypadku, gdy każdy z sygnałów M01 i M12 ma wartość logiczną 1. Ten przypadek z rzędu czwartego może zostać wytworzony przez sekwencję kategorii rozkazów BAA. Mogłoby to być zrealizowane przez sekwencję znaczników 101, jak pokazano na fig. 6 lub, w innym przypadku, przez sekwencję znaczników 110. W niniejszym przykładzie wykonania realizowana jest reguła (5) i jest wybrana sekwencja 101 pokazana na fig. 6. Innymi słowy, łączenie w pary BA jest uważane za korzystniejsze od łączenia w pary AA.
Wzór 1, 1 dla sygnałów M01i Μ12 może być również wytwarzany przez sekwencję kodów operacyjnych AAA. W tym przypadku zostaje wybrana ponownie sekwencja znaczników 101 z fig. 6. Jest to lepsze, ponieważ zapewnia wartość 1 dla znacznika 2, a zatem umożliwia potencjalnie łączenie rozkazu 2 z rozkazem 3, jeżeli rozkaz 2 jest zgodny z rozkazem 3.
Na figurze 7 jest pokazany schemat blokowy innego układu do równoległego przetwarzania rozkazów według wynalazku, stosującego znaczniki łączące dla zapewniania równoległego przetwarzania rozkazów komputera. Jednostka łączenia 20 rozkazów, zastosowana w rozwiązaniu z fig.7, może być obwodem łączenia 11 z fig. 3 i wówczas dodaje do każdego rozkazu jednobitowe pole znacznika. Te pola znaczników są stosowane do indentyfikacji, które pary rozkazów mogą być przetwarzane równolegle. Te rozkazy ze znacznikami są dostarczane i pamiętane w drugim obwodzie pamięciowym 12, typu pamięci podręcznej, złożonych rozkazów. Jednostka sterująca 60 wyjściowa/dostarczająca dostarcza w razie potrzeby rozkazy ze znacznikami z drugiego obwodu pamięciowego 12 i przygotowuje do ich przetwarzania przez właściwy lub właściwe z wielu funkcjonalnych jednostek przetwarzania 61, 62, 63 i 64 rozkazów. Jednostka sterująca 60 wyjściowa/dostarczająca bada pola znaczników i pola kodów operacyjnych odbieranych rozkazów. Jeżeli pola znaczników wskazują, ze dwa kolejne rozkazy mogą być przetwarzane równolegle, wówczas jednostka st^i^ująca 60 wyjściowa/dostarczająca przekazuje je do właściwych spośród funkcjonalnych jednostek przetwarzania 61, 62, 63, 64, jak określają to ich kody operacyjne, oraz są one przetwarzane równolegle przez wybrane jednostki przetwarzania. Jeżeli pola znaczników wskazują, że określony rozkaz ma być przetwarzany pojedynczo, nierównolegle, wówczas jednostka sterująca 60 wyjściowa/dostarczająca przekazuje go do określonej jednostki przetwarzania, jak określono to przez jego kod operacyjny, oraz jest on sam przetwarzany lub wykonywany.
165 491
Pierwsza funkcjonalna jednostka przetwarzania 61 stanowi jednostkę przetwarzania rozkazu rozgałęzienia do przetwarzania rozkazów typu rozgałęzienia. Druga funkcjonalnajednostka przetwarzania 62 jest trójwejściową jednostką arytmetyczno-logiczną wytwarzania adresów, którajest stosowana do obliczania adresu pamięci rozkazów i która przesyła argumenty operacji do pamięci i z niej. Trzecia funkcjonalnajednostka przetwarzania 63 jest uniwersalną jednostką arytmetyczno-logiczną, która jest stosowana do realizacji operacji typu matematycznego i logicznego. Czwarta funkcjonalnajednostka przetwarzania 64 w tym przykładzie jest jednostką arytmetyczno-logiczną eliminacji zależności danych. Ta jednostka 64 zmniejszająca zależność danych jest ^wejściową jednostką arytmetyczno-logiczną, zdolną do realizacji dwóch operacji arytmetycznych/logicznych w pojedynczym cyklu komputera.
Układ przedstawiony na fig 7 zawiera również zespół rejestrów 65 ogólnego zastosowania, używany przy wykonywaniu pewnych rozkazów komputera. Zwykle te rejestry 65 ogólnego zastosowania są używane do przejściowego pamiętania argumentów operacji danych i argumentów operacji adresów, jako liczniki lub dla innych celów przetwarzania danych. W typowym komputerze jest zastosowanych szesnaście takich rejestrów ogólnego zastosowania. W niniejszym przykładzie wykonania zakłada się, ze rejestry 65 ogólnego zastosowania są typu wielokrotnego, w którym równocześnie można mieć dostęp do dwóch lub więcej rejestrów.
Układ z fig. 7 posiada ponadto szybką pamięć podręczną 66 danych do pamiętania argumentów operacji danych, uzyskiwanych z pierwszego obwodu pamięciowego 10. Dane z pamięci podręcznej 66 mogą być również przekazywane z powrotem do pierwszego obwodu pamięciowego 10. Pamięć podręczna 66 danych może być znanego typu i jej działanie względem pierwszego obwodu pamięciowego 10 może zachodzić w znany sposób.
Figura 8 pokazuje przykład sekwencji rozkazów złożonych lub ze znacznikami, które mogą być przetwarzane przez układ z fig. 7. W przykładzie tym występuje złożenie następujących rozkazów w następującej sekwencji: ładowanie 11, dodawanie 12, porównywanie 13, warunkowe rozgałęzienie 14 i pamiętanie 15. Bilety znaczników dla tych rozkazów są odpowiednio 1, 1,0, 1 i 0 W wyniku organizacji układu przetwarzania z fig. 7 rozkaz ładowania jest przetwarzany pojedynczo. Rozkazy dodawania i porównywania są obrabiane jako złożony rozkaz i są przetwarzane równolegle jeden z drugim. Rozkazy rozgałęzienia i pamiętania są również obrabiane jako złożony rozkaz i są również przetwarzane równolegle jeden z drugim.
Tablica z fig. 9 podaje dalsze informacje dotyczące każdego z rozkazów z fig. 8. Kolumna R/M na fig. 9 wskazuje zawartość pierwszego pola w każdym rozkazie, które jest zwykle stosowane do indentyfikacji określonego spośród m^strów 65 ogólnego zastosowania, który zawiera pierwszy argument operacji. Wyjątkiem jest przypadek rozkazu rozgałęzienia, w którym pole R/M zawiera maskę kodu warunkowego. Kolumna R/X na fig. 9 wskazuje zawartość drugiego pola w każdym rozkazie, które to polejest zwykle stosowane do indentyfikacji drugiego z rejestrów 65 ogólnego zastosowania . Tak i rejes! moee zawierać drng i argument operacji lub może zawierać wartość (K) indeksu adresowanego. Kolumna B na fig. 9 wskazuje zawartość trzeciego możliwego pola w każdym rozkazie, które to pole może lndentyflkodaC określony spośród rejestrów 65 ogólnego zastosowania, który zawiera wartość adresu podstawowego. Zero w kolumnie B oznacza brak B lub pola brak odpowiedniej składowej adresu w polu B. Pole D na fig. 9 oznacza zawartość następnego pola w każdym rozkazie, które przy zastosowaniu dla celów wytwarzania adresu zawiera wartość przemieszczenia adresu. Zero w kolumnie D może również oznaczać brak odpowiedniego pola w określonym, rozważnym rozkazie lub, w innym przypadku, wartość przemieszczenia adresu równą zero.
Rozważmy teraz przetwarzanie rozkazu ładowania z fig. 8, w którym jednostka sterująca 60 wyjściowa/dostarczająca określa na podstawie bitów znaczników dla tego rozkazu ładowania i następnego rozkazu dodawania, ze rozkaz ładowania ma być przetwarzany pojedynczo. Działaniem reallzowanym przez ten rozkaz ładowania jest odebranie argumentu operacji z pamięci, w tym przypadku pamięci podręcznej 66 danych, i umieszczenie takiego argumentu operacji w rejestrze R2 ogólnego zastosowania. Adres pamięci, z którego ten argument operacji ma być dostarczany, jest określany przez dodanie do wartości indeksu w rejestrze X wartości podstawowej w rejestrze B i wartości przemieszczenia D. Jednostka sterująca 60 wyjściowa/ dostarczająca przekazuje tę operację wytwarzania adresów do jednostki arytmetyczno-logicznej
165 491 wytwarzania adresów W tym przypadku ta jednostka 62 dodaje do wartości indeksu adresu w rejestrze X (wartość zero w mniejszym przykładzie), wartość adresu podstawowego zawarta w rejestrze R7 ogólnego zastosowania i wartość adresu przemieszczenia (wartość zero w niniejszym przykładzie), zawartą w samym rozkazie. Wynikowy, obliczony adres pamięci, pojawiający się na wyjściu jednostki arytmetyczno-logicznej 62 wytwarzania adresów dostarczany na wejście adresowe pamięci podręcznej 66 danych dla dostępu do wymaganego argumentu operacji Ten dostępny argument operacji jest ładowany do rejestru R2 ogólnego zastosowania w zespole rejestrów 65.
Rozważmy teraz przetwarzanie rozkazów dodawania i porównywania, w którym te rozkazy są odbierane przez jednostkę sterującą 60 wyjściową/dostarczającą. Ta jednostka sterująca 60 bada znaczniki łączenia tych dwóch rozkazów i określa, że mogą one być wykonywane równolegle. Jak widać z fig. 9, rozkaz porównywania ma widoczną zależność danych od rozkazu dodawania, ponieważ dodawanie musi być zakończone przed porównaniem R3. Jednak ta zależność może być sterowana przez jednostkę arytmetyczno-logiczną 64 eliminacji zależności danych. W wyniku tego te dwa rozkazy mogą zostać przetworzone równolegle w układzie z fig. 7.
W szczególności jednostka sterująca 60 przekazuje przetwarzanie rozkazu dodawania do uniwersalnej jednostki arytmetyczno-ogicznej 63 i przekazuje przetwarzanie rozkazu porównywania do jednostki arytmetyczno-logicznej 64 eliminacji zależności danych. Uniwersalna jednostka arytmetyczno-logiczna 63 dodaje zawartość rejestru R2 ogólnego zastosowania do zawartości rejestru R3 ogólnego zastosowania i umieszcza wynik dodawania z powrotem z rejestrze R3 ogólnego zastosowania. Równocześnie jednostka arytmetyczno-logiczna 64 eliminacji zależności danych przeprowadza następującą operację matematyczną: R3 + R2 - R4. Kod warunkowy dla wyniku tej operacji jest przesyłany do rejestru kodu warunkowego, umieszczonego w jednostce przetwarzania 61 rozkazów rozgałęzienia. Zależność danych zostaje zmniejszona, ponieważ jednostka arytmetyczno-logiczna 64 eliminacji zależności danych w wyniku oblicza sumę R3 + R2 i następnie porównuje tę sumę z R4 dla określenia kodu warunkowego. W ten sposób ta jednostka 64 nie musi czekać na wyniki uniwersalnej jednostki arytmetycznologicznej 63, która wykonuje rozkaz dodawania. W tym szczególnym przypadku wyniki liczbowe obliczone przez jednostkę arytmetyczno-logiczną 64 eliminacji zależności i występujące na jej wyjściu nie są dostarczane z powrotem do rejestrów 65 ogólnego zastosowania. W tym przypadku ta jednostka 64 jedynie ustawia kod warunkowy.
Rozważmy teraz przetwarzanie rozkazu rozgałęzienia i rozkazu pamiętania, pokazane na fig. 8, w którym te rozkazy są odbierane z pamięci podręcznej 12 złożonych rozkazów przez jednostkę sienuącą 60 wyjściową/dostarczającą. Jednostka sterująca 60 określa na podstawie bitów znaczników tych rozkazów, ze mogą być one przetwarzane równolegle ze sobą. Określa ona następnie na podstawie kodów operacyjnych dwóch rozkazów, ze rozkaz rozgałęzienia powinien być przetwarzany przez jednostkę przetwarzania 61 rozkazów rozgałęzienia i rozkaz pamiętania powinien być przetwarzany przez jednostkę arytmetyczno-logiczną 62 wytwarzania adresów Zgodnie z tym określeniem pole M maskowania i pole D przemieszczania rozkazu rozgałęzienia są dostarczane do jednostki przetwarzania 61 rozkazów rozgałęzienia. Podobnie wartość adresu w rejestrze X i wartość adresu podstawowego w rejestrze B dla tego rozkazu rozgałęzienia są uzyskiwane z rejestrów 65 ogólnego zastosowania i dostarczane do jednostki przetwarzania 61 rozkazów rozgałęzienia. W tym przykładzie wartość X jest zero i wartość podstawowa jest uzyskiwana z rejestru R7 ogólnego zastosowania. Wartość D przemieszczania ma wartość w systemie szesnastkowym równą dwadzieścia, podczas gdy pole M maskowania ma wartość położenia maski równą osiem.
Jednostka przetwarzania 61 rozkazów rozgałęzienia zaczyna obliczać potencjalny adres rozgałęzienia (0 + R7 + 20) i równocześnie porównuje kod warunkowy, uzyskiwany z poprzedniego rozkazu porównywania, z polem M maskowania kodu porównywania. Jeżeli wartość kodu warunkowego jest taka sama jak wartość kodu maskowania, spełniony jest potrzebny warunek rozgałęzienia i adres rozgałęzienia obliczony przez jednostkę przetwarzania 61 rozkazów rozgałęzienia jest następnie ładowany do licznika rozkazów w jednostce sterującej 60. Ten licznik rozkazów steruje odbieraniem rozkazów z pamięci podręcznej 12 złożonych rozkazów.
165 491
Jeżeli, z drugiej strony, warunek nie jest spełniony (to znany warunkowy ustalony przez poprzednie rozkazy nie ma wartości osiem), wówczas żadne rozgałęzienie nie jest przeprowadzane i żaden adres rozgałęzienia nie jest dostarczany do licznika rozkazów w jednostce sterującej 60.
W tym samym czasie, w którym jednostka przetwarzania 61 rozkazów rozgałęzienia jest zajęta przeprowadzaniem przetwarzania rozkazów rozgałęzienia, jednostka arytmetyczno-logiczna 62 wytwarzania adresów jest zajęta wykonywaniem obliczania adresów (0 + R7 + 0) dla rozkazów pamiętania. Adres obliczony przez tę jednostkę 62 jest dostarczany do pamięci podręcznej 66 danych. Jeżeli nie jest przeprowadzane żadne rozgałęzienie przez jednostkę przetwarzania 61 rozkazów rozgałęzienia, wówczas rozkaz pamiętania działa w kierunku pamiętania argumentu operacji w rejestrze R3 ogólnego zastosowania wewnątrz pamięci podręcznej 66 danych przy adresie obliczonym przez jednostkę arytmetyczno-logiczną 62 adresów. Jeżeli, z drugiej strony, warunek rozgałęzienia jest spełniony i rozgałęzienie jest przeprowadzane, wówczas zawartość rejestru R3 ogólnego przeznaczenia nie jest zapamiętana w pamięci podręcznej 66 danych.
Powyższa sekwencja rozkazów z fig. 8 jest podana jedynie jako przykład. Przykładowy układ przetwarzania z fig. 7 jest również zdolny do przetwarzania różnych innych sekwencji rozkazów. Przykład z fig. 8 pokazuje jednakjasno użyteczność znaczników złożonych rozkazów przy określaniu, które pary rozkazów mogą być przetwarzane równolegle ze sobą.
TAG 0 INSTR. 0 TAG 1 INSTR. 1 TAG 2 INSTR.2 TAG 3 INSTR.3
FIG. 2
MOI M12 0 t 2
0 0 1 1 1
1 0 1 0 1
0 1 1 1 0
1 1 1 0 1
FIG. 6
165 491
Obwód Toczenia rozkazów
Γ' z bloku 10
- 21a
Jnstr.1 Jnstr 2 Jnstr 3 Jnstr 4 Jnstr 5 Jnstr 6 Jnstr7 Jnstr 8
21b22a22
Lć24
--M34 M45---! k-M56 | M67---1
-M78
-TAG 0 Jnstr. 0 A7O1 ( -TAG 1 Jnstr 1 27bX , -TAG 2 Jnstr. 2 27CI -TAG 3 Jnstr 3 ł -TAG 4 Jnstr 4 ł ' -TAG 5 Jnstr 5 ł ' -TAG 6 Jnstr 6 ł -TAG 7 Jnstr. 7 , ł -TAG 8 Jnstr 8 ł
TO |JnstrO|T1|Jnstr 1|T2 |Jnstr.2|T3| Jnstr.3|T4 |Jnstr4|T5| Jnstr.5 ‘6 Jnstr.6 ’7| Jnstr. 7 B Jnstr. 8
2727ddo bloku 12
FIG. 3
165 491
TAG O TAG1 TAG 2
165 491
INSTRUKCJE —-1 FIG.7 ~^20
-,- DANE
KOD WARUNKOWY
ŁADUJ | 1 | DODAJ O |POROWNAJ| 1 |fiD35AŁĘZ O [PAMIĘTAJ
INSTRUKCJA INSTRUKCJA
ZŁOŻONA ZŁOŻONA
FIG.8
NR KOD OP R/W R/X 8 D DZIAŁANIE
11 ŁADUJ R2 0 R7 0 PAMIĘTAJ —— R2 (AORES PAMIĘCI® 0 + R7«·0)
I2 DODAJ R3 R2 0 0 R3 + R2—— R3
I3 PORÓWNAJ R3 R4 0 0 R3 (c) R4—-KOD WARUNKOWY
I4 ROZGAŁĘŹ WARUNKOWO 8 0 R7 20 ADRES (OR7+20) DLA LICZNIKA INSTR .JEŻELI SPEŁNIONY WAR (CC-8)
I5 PAMIĘTAJ R3 0 R7 0 R3 ——PAMIĘTAJ (ADR.=0+R7*0, (JEŻELI WARUNEK NIE SPEŁNIONY)
FIG.9
165 491
FIG .1
Departament Wydawnictw UP RP Nakład 90 egz Cena 1,(00 zł

Claims (6)

  1. Zastrzeżenia patentowe
    1. Układ do równoległego przetwarzania rozkazów w komputerze cyfrowym zawierający obwody pamięciowe, znamienny tym, że zawiera obwód łączenia (11), którego wejście (11a) jest dołączone do wyjścia (10a) pierwszego obwodu pamięciowego (10), korzystnie o dużej pojemności i małej szybkości, a wyjście (11b) jest dołączone do wejścia (12a) drugiego obwodu pamięciowego (12), korzystnie stanowiącego pamięć podręczną o małej pojemności i dużej szybkości, obwód pobierania i wydawania (16) rozkazów, którego wejście (16a) jest dołączone do wyjścia (12b) drugiego obwodu pamięciowego (12), oraz co najmniej dwie funkcjonalne jednostki przetwarzania (13, 14, 15) rozkazów, których wejścia (13a, 14a, 15a) są dołączone do wyjścia (16b) obwodu pobierania i wydawania (16) rozkazów.
  2. 2. Układ według zastrz. 1, znamienny tym, ze obwód łączenia (11) zawiera rejestr wejściowy (21) rozkazów z co najmniej trzema tablicami pamięci ( Instr. 0, Instr. 1, Instr. 2,...),którego wejście (21a) jest dołączone do wyjścia (10a) pierwszego obwodu pamięciowego (10), co najmniej jeden analizator (22) sygnałów złożoności, którego wejście (22a) jest dołączone do wyjścia (21b) rejestru wejściowego (21) rozkazów, obwód generacji (26) znaczników, którego co najmniej dwa wejścia (M01a, M12a) są dołączone do dwóch wyjść (22b, 22c) analizatora (22) sygnałów złożoności, rejestr wyjściowy (27) rozkazów z co najmniej trzema tablicami pamięci (T0, Instr. 0, T1, Instr. 1, T2, Instr.2), którego co najmniej trzy wejścia (27a, 27b, 27c) są dołączone do trzech wyjść obwodu generacji (26) znaczników, przy czym wyjście (27d) rejestru wyjściowego (27) rozkazów jest dołączone do wejścia (12a) drugiego obwodu pamięciowego (12).
  3. 3. Układ według zastrz. 2, znamienny tym, że analizator (22) sygnałów złożoności zawiera pierwszy obwód detekcji (30) zgodności rozkazów, którego dwa wejścia (30a, 30b) kodu operacyjnego rozkazu 0 (OP0) i kodu operacyjnego rozkazu 1 (OP1) są dołączone do wyjścia (21b) rejestru wejściowego (21) rozkazów, drugi obwód detekcji (31) zgodności rozkazów, którego dwa wejścia (31a, 31b) kodu operacyjnego rozkazu 1 (OP1) i kodu operacyjnego rozkazu 2 (OP2) są dołączone do wyjścia (21b) rejestru wejściowego (21) rozkazów, pierwszy i drugi obwód detekcji (32, 33) zależności rejestrów, których wejścia (32a, 33a) są dołączone do wyjścia (21b) rejestru wejściowego (21) rozkazów, pierwszy element I (34), którego pierwsze wejście (34a) jest dołączone do wyjścia (30c) pierwszego obwodu detekcji (30) zgodności rozkazów, drugie wejście (34b) jest dołączone do wyjścia (32b) pierwszego obwodu detekcji (32) zależności rejestrów a wyjście (34c) jest dołączone do pierwszego wejścia (M01a) obwodu generacji (26) znaczników, oraz drugi element I (35), którego pierwsze wejście (35a) jest dołączone do wyjścia (31c) drugiego obwodu detekcji (31) zgodności rozkazów, drugie wejście (35b) jest dołączone do wyjścia (33b) drugiego obwodu detekcji (33) zależności rejestrów a wyjście (35c) jest dołączone do drugiego wejścia (M12a) obwodu generacji (26) znaczników.
  4. 4. Układ według zastrz. 3, znamienny tym, ze pierwszy i drugi obwód detekcji (30, 31) zgodności rozkazów zawierają trzy dekodery (40,41,45), kody odpowiednio z wejściem (40a) kodu operacyjnego rozkazu 0 (OP0), z wejściem (41a) kodu operacyjnego rozkazu 1 (OP1) i z wejściem (45a) kodu operacyjnego rozkazu 2 (OP2) dołączonym do wyjścia (21b) rejestru wejściowego (21) rozkazów, trzeci element I (42), którego pierwsze wejście (42a) jest dołączone do pierwszego wyjścia (40b) pierwszego dekodera (40), a drugie wejście (42b) jest dołączone do pierwszego wyjścia (41b) drugiego dekodera (41), czwarty element I (43), którego pierwsze wejście (43a) jest dołączone do drugiego wyjścia (40c) pierwszego dekodera (40), a drugie wejście (43b) jest dołączone do pierwszego wyjścia (41b) drugiego dekodera (41), piąty element I (46), którego pierwsze wejście (46a) jest dołączone do pierwszego wyjścia (41b) drugiego
    165 491 dekodera (41), a drugie wejście (46b) jest dołączone do pierwszego wyjścia (45b) trzeciego dekodera (45), szósty element I (47), którego pierwsze wejście (47a) jest dołączone do drugiego wyjścia (41c) drugiego dekodera (41), a drugie wejście (47b) jest dołączone do pierwszego wyjścia (45b) trzeciego dekodera (45), pierwszy element LUB (44), którego pierwsze wejście (44a) jest dołączone do wyjścia (42c) trzeciego elementu I (42), drugie wejście (44b) jest dołączone do wyjścia (43c) czwartego elementu I (43), a wyjście (44c) jest dołączone do pierwszego wejścia (M01a) obwodu generacji (26) znaczników, oraz drugi element LUB (48), którego pierwsze wejście (48a) jest dołączone do wyjścia (46c) piątego elementu I (46), drugie wejście (48b) jest dołączone do wyjścia (47c) szóstego elementu I (47), a wyjście (48c) jest dołączone do drugiego wejścia (M12a) obwodu generacji (26) znaczników
  5. 5. Układ według zastrz. 2, znamienny tym, ze obwód generacji (26) znaczników zawiera pierwszy element NIE (52), którego wejście (52a) jest dołączone do pierwszego wyjścia (22b) analizatora (22) sygnałów złożoności, a wyjście jest dołączone do wejścia (27b) rejestru wyjściowego (27) rozkazów, drugi element NIE (55), którego wejście (55a) jest dołączone do drugiego wyjścia (22c) analizatora (22) sygnałów złożoności, trzeci element LUB (54), którego pierwsze wejście (54a) jest dołączone do pierwszego wyjścia (22b) analizatora (22) sygnałów złożoności, drugie wejście (54b) jest dołączone do wyjścia (55b) drugiego elementu NIE (55), a wyjście jest dołączone do wejścia (27c) rejestru wyjściowego (27) rozkazów.
  6. 6. Układ według zastrz. 1, znamienny tym, że funkcjonalne jednostki przetwarzania (13, 14, 15) rozkazów stanowią jednostkę przetwarzania (61) rozkazów rozgałęzienia, jednostkę arytmetyczno-logiczną(62) wytwarzania adresów, uniwersalną jednostkę arytmetyczno-logiczną (63) oraz jednostkę arytmetyczno-logiczną (64) eliminacji zależności danych.
PL91289720A 1990-05-10 1991-04-03 Uklad do równoleglego przetwarzania rozkazów w komputerze cyfrowym PL PL165491B1 (pl)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/522,291 US5214763A (en) 1990-05-10 1990-05-10 Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism

Publications (1)

Publication Number Publication Date
PL165491B1 true PL165491B1 (pl) 1994-12-30

Family

ID=24080285

Family Applications (1)

Application Number Title Priority Date Filing Date
PL91289720A PL165491B1 (pl) 1990-05-10 1991-04-03 Uklad do równoleglego przetwarzania rozkazów w komputerze cyfrowym PL

Country Status (11)

Country Link
US (2) US5214763A (pl)
EP (1) EP0455966B1 (pl)
JP (1) JPH0776924B2 (pl)
AT (1) ATE131637T1 (pl)
BR (1) BR9101913A (pl)
CA (1) CA2040304C (pl)
CZ (1) CZ279899B6 (pl)
DE (1) DE69115344T2 (pl)
HU (1) HU214423B (pl)
PL (1) PL165491B1 (pl)
RU (1) RU2111531C1 (pl)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
JP2535252B2 (ja) * 1990-10-17 1996-09-18 三菱電機株式会社 並列処理装置
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
EP0488819B1 (en) * 1990-11-30 1999-01-13 Kabushiki Kaisha Toshiba Conditional branch instructions execution apparatus
GB9027853D0 (en) * 1990-12-21 1991-02-13 Inmos Ltd Multiple instruction issue
US5446850A (en) * 1991-01-15 1995-08-29 International Business Machines Corporation Cross-cache-line compounding algorithm for scism processors
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JPH04367936A (ja) * 1991-06-17 1992-12-21 Mitsubishi Electric Corp スーパースカラープロセッサ
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5787303A (en) * 1991-10-31 1998-07-28 Kabushiki Kaisha Toshiba Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US5590348A (en) * 1992-07-28 1996-12-31 International Business Machines Corporation Status predictor for combined shifter-rotate/merge unit
US5337415A (en) * 1992-12-04 1994-08-09 Hewlett-Packard Company Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5651121A (en) * 1992-12-18 1997-07-22 Xerox Corporation Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
DE69320991T2 (de) 1992-12-31 1999-01-28 Seiko Epson Corp System und verfahren zur änderung der namen von registern
US5673409A (en) * 1993-03-31 1997-09-30 Vlsi Technology, Inc. Self-defining instruction size
US5752013A (en) * 1993-06-30 1998-05-12 Intel Corporation Method and apparatus for providing precise fault tracing in a superscalar microprocessor
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
EP1338957A3 (en) * 1993-11-05 2003-10-29 Intergraph Corporation Software scheduled superscalar computer architecture
EP1186995B1 (en) * 1993-11-05 2003-09-03 Intergraph Corporation Instruction memory with associative cross-bar switch
US5974534A (en) * 1994-02-14 1999-10-26 Hewlett-Packard Company Predecoding and steering mechanism for instructions in a superscalar processor
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
TW260765B (pl) * 1994-03-31 1995-10-21 Ibm
US5546599A (en) * 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5748950A (en) * 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5742784A (en) * 1995-01-25 1998-04-21 International Business Machines Corporation System for reordering of instructions before placement into cache to reduce dispatch latency
US5991869A (en) * 1995-04-12 1999-11-23 Advanced Micro Devices, Inc. Superscalar microprocessor including a high speed instruction alignment unit
US5758114A (en) * 1995-04-12 1998-05-26 Advanced Micro Devices, Inc. High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor
US5828895A (en) * 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US5812812A (en) * 1996-11-04 1998-09-22 International Business Machines Corporation Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue
JPH10232779A (ja) * 1997-01-24 1998-09-02 Texas Instr Inc <Ti> 命令並列処理方法及び装置
EP0924603A3 (en) * 1997-12-16 2001-02-07 Lucent Technologies Inc. Compiler controlled dynamic scheduling of program instructions
US6014513A (en) * 1997-12-23 2000-01-11 University Of Washington Discovering code and data in a binary executable program
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6237086B1 (en) * 1998-04-22 2001-05-22 Sun Microsystems, Inc. 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US6345355B1 (en) 1998-05-29 2002-02-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing commands to a plurality of circuit blocks
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6314471B1 (en) 1998-11-13 2001-11-06 Cray Inc. Techniques for an interrupt free operating system
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6321379B1 (en) 1998-12-23 2001-11-20 Cray Inc. Method and system for target register allocation
US6353829B1 (en) 1998-12-23 2002-03-05 Cray Inc. Method and system for memory allocation in a multiprocessing environment
US6430676B1 (en) * 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6415433B1 (en) 1998-12-23 2002-07-02 Cray Inc. Method and system for identifying locations to move portions of the computer program
JP2001034474A (ja) * 1999-07-16 2001-02-09 Nec Corp データ処理装置及びデータ処理方法
JP3730455B2 (ja) * 1999-10-01 2006-01-05 富士通株式会社 情報処理装置及び情報処理方法
US6697939B1 (en) * 2000-01-06 2004-02-24 International Business Machines Corporation Basic block cache microprocessor with instruction history information
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6738794B2 (en) 2001-04-10 2004-05-18 Analog Devices, Inc. Parallel bit correlator
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6766345B2 (en) 2001-11-30 2004-07-20 Analog Devices, Inc. Galois field multiplier system
US7177891B2 (en) * 2002-10-09 2007-02-13 Analog Devices, Inc. Compact Galois field multiplier engine
US7283628B2 (en) 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
US7082452B2 (en) * 2001-11-30 2006-07-25 Analog Devices, Inc. Galois field multiply/multiply-add/multiply accumulate
WO2003048947A1 (en) * 2001-11-30 2003-06-12 Analog Devices, Inc. Reconfigurable input galois field linear transformer system
US7895253B2 (en) 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
US7269615B2 (en) * 2001-12-18 2007-09-11 Analog Devices, Inc. Reconfigurable input Galois field linear transformer system
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
US20030126414A1 (en) * 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US7000090B2 (en) * 2002-01-21 2006-02-14 Analog Devices, Inc. Center focused single instruction multiple data (SIMD) array system
US6941446B2 (en) * 2002-01-21 2005-09-06 Analog Devices, Inc. Single instruction multiple data array cell
US6865661B2 (en) * 2002-01-21 2005-03-08 Analog Devices, Inc. Reconfigurable single instruction multiple data array
US20040128483A1 (en) * 2002-12-31 2004-07-01 Intel Corporation Fuser renamer apparatus, systems, and methods
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7512647B2 (en) * 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US9436468B2 (en) * 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
TW200910195A (en) * 2007-08-20 2009-03-01 Sunplus Technology Co Ltd A device of using serial bits to determine instruction length at a multi-mode processor and the method thereof
US8898433B2 (en) * 2012-04-26 2014-11-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Efficient extraction of execution sets from fetch sets

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3293616A (en) * 1963-07-03 1966-12-20 Ibm Computer instruction sequencing and control system
US3470540A (en) * 1967-04-24 1969-09-30 Rca Corp Multiprocessing computer system with special instruction sequencing
US3611306A (en) * 1969-02-05 1971-10-05 Burroughs Corp Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system
US3781814A (en) * 1971-10-07 1973-12-25 Raytheon Co Method and apparatus for applying source language statements to a digital computer
US4197589A (en) * 1977-12-05 1980-04-08 Texas Instruments Incorporated Operation sequencing mechanism
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4437149A (en) * 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4873629A (en) * 1984-06-20 1989-10-10 Convex Computer Corporation Instruction processing unit for computer
JPS61245239A (ja) * 1985-04-23 1986-10-31 Toshiba Corp 論理回路方式
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
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
JPH0769824B2 (ja) * 1988-11-11 1995-07-31 株式会社日立製作所 複数命令同時処理方式
JPH02253356A (ja) * 1989-03-28 1990-10-12 Toshiba Corp 階層キャッシュメモリ装置とその制御方式
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors

Also Published As

Publication number Publication date
US5475853A (en) 1995-12-12
BR9101913A (pt) 1991-12-17
DE69115344T2 (de) 1996-06-20
ATE131637T1 (de) 1995-12-15
JPH04230528A (ja) 1992-08-19
US5214763A (en) 1993-05-25
CA2040304C (en) 1995-04-11
CS93391A3 (en) 1992-05-13
CZ279899B6 (cs) 1995-08-16
DE69115344D1 (de) 1996-01-25
RU2111531C1 (ru) 1998-05-20
EP0455966A3 (en) 1993-11-10
EP0455966A2 (en) 1991-11-13
HU911099D0 (en) 1991-10-28
HUT57454A (en) 1991-11-28
JPH0776924B2 (ja) 1995-08-16
HU214423B (hu) 1998-03-30
EP0455966B1 (en) 1995-12-13

Similar Documents

Publication Publication Date Title
PL165491B1 (pl) Uklad do równoleglego przetwarzania rozkazów w komputerze cyfrowym PL
RU2109333C1 (ru) Цифровой компьютер с возможностью параллельного выполнения двух и более команд
US7725687B2 (en) Register file bypass with optional results storage and separate predication register file in a VLIW processor
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
US5659722A (en) Multiple condition code branching system in a multi-processor environment
EP1296227B1 (en) Valid instruction dispatching and execution
US5710902A (en) Instruction dependency chain indentifier
US5561775A (en) Parallel processing apparatus and method capable of processing plural instructions in parallel or successively
KR0149658B1 (ko) 데이터 처리장치 및 데이터 처리방법
JP3547482B2 (ja) 情報処理装置
JP3442225B2 (ja) 演算処理装置
US6516409B1 (en) Processor provided with a data value prediction circuit and a branch prediction circuit
EP0479390B1 (en) Processing device including a memory circuit and a group of functional units
US6449710B1 (en) Stitching parcels
EP0427245A2 (en) Data processor capable of simultaneously executing two instructions
US7015718B2 (en) Register file apparatus and method for computing flush masks in a multi-threaded processing system
US6035122A (en) Compiler for converting source program into object program having instruction with commit condition
JPH06342371A (ja) 複数の命令を発行する装置および方法
US6871343B1 (en) Central processing apparatus and a compile method
US5940625A (en) Density dependent vector mask operation control apparatus and method
US7681016B2 (en) Microprocessor instruction execution method for exploiting parallelism by time ordering operations in a single thread at compile time
US5729729A (en) System for fast trap generation by creation of possible trap masks from early trap indicators and selecting one mask using late trap indicators
EP1069499A2 (en) Data processing apparatus and method for simultaneously executing plural instructions
JP2000293394A (ja) Bist機能付きプロセッサ
Richardson The Fred VHDL Model

Legal Events

Date Code Title Description
LAPS Decisions on the lapse of the protection rights

Effective date: 20060403