PL166513B1 - Uklad komputerowy do przetwarzania rozkazów PL - Google Patents

Uklad komputerowy do przetwarzania rozkazów PL

Info

Publication number
PL166513B1
PL166513B1 PL91293182A PL29318291A PL166513B1 PL 166513 B1 PL166513 B1 PL 166513B1 PL 91293182 A PL91293182 A PL 91293182A PL 29318291 A PL29318291 A PL 29318291A PL 166513 B1 PL166513 B1 PL 166513B1
Authority
PL
Poland
Prior art keywords
instruction
instructions
compound
cache
execution
Prior art date
Application number
PL91293182A
Other languages
English (en)
Other versions
PL293182A1 (en
Inventor
Stamatis Vassiliadis
Bartholomew Blaner
Thomas L Jeremiah
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
Priority claimed from US07/543,458 external-priority patent/US5197135A/en
Priority claimed from US07/642,011 external-priority patent/US5295249A/en
Application filed by Ibm filed Critical Ibm
Publication of PL293182A1 publication Critical patent/PL293182A1/xx
Publication of PL166513B1 publication Critical patent/PL166513B1/pl

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

1. Uklad komputerowy do przetwarzania rozkazów zawierajacy pamiec glówna, do któ- rej jest dolaczony adapter wejscia/wyjscia, pamiec podreczna rozkazów dolaczona do pamieci glównej oraz jednostke pobierania i wysylania rozkazów dolaczona do pamieci podrecznej rozkazów, przy czym jednostka pobierania i wysylania rozkazów jest dola- czona poprzez dekoder do jednostek funkcjo- nalnych, znamienny tym, ze zawiera zespól skladania (70) rozkazów, którego wejscie jest dolaczone do wyjscia adaptera wejscia/wyjscia (41) a wyjscie jest dolaczone do wejscia pamieci glównej (46). Fig.3 PL

Description

Przedmiotem wynalazku jest układ komputerowy do przetwarzania rozkazów, przeznaczony zwłaszcza do równoległego wykonywania dwu lub więcej rozkazów oraz do wykonywania skoków wewnątrz rozkazu składanego.
Tradycyjne komputery, pobierające i wykonujące sekwencje kolejnych rozkazów określane są jako komputery „skalarne. Z każdą nową generacją komputerów opracowywany jest nowy
166 513 mechanizm przyspieszający pracę tradycyjnych komputerów skalarnych. Nowy mechanizm zwiększania szybkości obliczeń wykorzystano w architekturze komputerów ze zredukowanym zbiorem rozkazów (RISC), która wykorzystuje ograniczony zbiór bardzo prostych rozkazów wykonujących się z dużą szybkością. Inny mechanizm przyśpieszania operacji może polegać na stosowaniu bardziej złożonych rozkazów w celu realizacji większej liczby funkcji obliczeniowych na jeden rozkaz i tym samym zmniejszeniu liczby rozkazów w programie. Zastosowanie któregoś z powyższych sposobów zwiększania szybkości obliczeń do już istniejących komputerów skalarnych wymagałoby istotnej zmiany ich architektury i zbioru rozkazów. Tak daleko idące zmiany obarczone są kosztami, zwiększonymi przestojami i, w początkowym okresie, zmniejszoną niazawodnością i gotowością komputerów do pracy.
Ostatnio opracowano komputery „superskalarne, w których nastąpiło dalsze zwiększenie szybkości obliczeniowej. Komputery te są zasadniczo komputerami skalarnymi, w których zwiększoną moc obliczeniową uzyskano przez ich adaptację do wykonywania jednocześnie więcej niż jednego rozkazu pobieranego ze strumienia sekwencji kolejnych pojedynczych rozkazów skalarnych. W komputerach tych decyzja, czy dwa lub więcej rozkazy mogą być wykonywane równolegle podejmowana jest w czasie wykonywania rozkazów. Decyzja ta opiera się na kodzie operacji rozkazów (kodach OP) oraz na związkach między danymi, które mogą wiązać rozkazy. Kod OP określa wymagania sprzętowe wymagane do wykonania rozkazu. W ogólności nie jest możliwe równoległe wykonywanie dwu lub więcej rozkazów, wykorzystujących ten sam sprzęt (zależność sprzętowa) lub te same argumenty (zależność przez wspólne dane). Obydwa rodzaje zależności uniemożliwiają równoległe wykonywanie niektórych kombinacji rozkazów. W tych przypadkach pewne rozkazy są wykonywane sekwencyjne. Zmniejsza to oczywiście moc obliczeniową komputerów superskalarnych.
Komputery superskalarne posiadają wady, które usiłuje się zminimalizować. Do rozstrzygnięcia w czasie wykonywania rozkazów, które rozkazy mogą być wykonywane równolegle potrzebny jest określony czas. Czas ten może być zredukowany przez nałożenie go na inne operacje maszynowe. Wada ta ulega nasileniu ze wzrostem złożoności architektury zbioru rozkazów. Decyzje o równoległym wykonywaniu rozkazów muszą być każdorazowo powtarzane przy każdorazowym wykonywaniu tych samych rozkazów.
Przyspieszenie operacji za pomocą architektury ze zredukowanym zbiorem rozkazów (RISC), architektury ze zbiorem rozkazów złożonych lub tradycyjnych technik superskalarnych jest potencjalnie zbyt kosztowne lub obarczone zbyt wieloma wadami, aby je wykorzystać do istniejących komputerów skalarnych. Byłoby więc korzystne zwiększać moc obliczeniową tych komputerów przez równoległe lub współbieżne wykonywanie rozkazów bez zmiany istniejącego zbioru rozkazów, bez zmiany architektury maszyny lub wydłużenia czasu wykonywania rozkazów.
Szereg tych i innych problemów zostało przedstawionych w literaturze patentowej. W opisie patentowym Stanów Zjednoczonych Ameryki nr 5 197 135 zostało przedstawione zarządzanie pamięcią dla procesora ze zbiorem skalowalnych rozkazów składanych z wewnętrzpamięciowym składowaniem rozkazów. Z kolei w innym opisie patentowym Stanów Zjednoczonych Ameryki nr 5 301341 zostało przedstawione wyznaczanie przepełnienia w trójargumentowych jednostkach arytmetyczno-logicznych dla procesora ze zbiorem skalowalnych rozkazów składanych, zaś w opisie patentowym Stanów Zjednoczonych Ameryki nr 5 295 249 został opisany preprocesor do składania rozkazów dla pamięci podręcznej.
Istotą układu komputerowego do przetwarzania rozkazów, według wynalazku, zawierającego pamięć główną, do której jest dołączony adapter wejścia/wyjścia, pamięć podręczną rozkazów dołączoną do pamięci głównej oraz jednostkę pobierania i wysyłania rozkazów dołączoną do pamięci podręcznej rozkazów, przy czym jednostka pobierania i wysyłania rozkazów jest dołączona poprzez dekoder do jednostek funkcjonalnych, jest to, że zawiera zespół składania rozkazów, którego wejście jest dołączone do wyjścia adaptera wejścia/wyjścia, a wyjście jest dołączone do wejścia pamięci głównej. W innym wykonaniu układu komputerowego według wynalazku, układ ten jest ponadto rozbudowany o jednostkę sterującą pamięci podręcznej, której wejście jest dołączone do wyjścia jednostki pobierania i wysyłania rozkazów, a wyjście jest dołączone do wejścia pamięci podręcznej rozkazów, przy czym do wyjścia jednostki sterującej pamięci podręcznej jest dołączony korzystnie zespół zarządzania pamięcią, którego wyjście jest dołączone do wejścia pamięci głównej.
166 513
Z kolei istotą układu komputerowego do przetwarzania rozkazów, według odmiany wynalazku, zawierającego pamięć główną, do której jest dołączony adapter wejścia/wyjścia, pamięć podręczną rozkazów dołączoną do pamięci głównej oraz jednostkę pobierania i wysyłania rozkazów dołączoną do pamięci podręcznej rozkazów, przy czym jednostka pobierania i wysyłania rozkazów jest dołączona poprzez dekoder do jednostek funkcjonalnych, jest to, że zawiera zespół składania rozkazów, którego wejście jest dołączone do wyjścia pamięci głównej, a wyjście jest dołączone do wejścia pamięci podręcznej rozkazów. W innym wykonaniu odmiany układu komputerowego według wynalazku, układ ten jest ponadto rozbudowany o jednostkę sterującą pamięci podręcznej, której wejście jest dołączone do wyjścia jednostki pobierania i wysyłania rozkazów a wyjście jest dołączone do wejścia pamięci podręcznej rozkazów, przy czym do wyjścia jednostki sterującej pamięci podręcznej jest dołączony korzystnie zespół zarządzania pamięcią, którego wyjście jest dołączone do wejścia pamięci głównej.
Układ komputerowy według wynalazku zapewnia dekodowanie możliwości składania rozkazów na podstawie ciągu rozkazów bazowych maszyny skalarnej, generuje ciągi rozkazów składanych, umożliwia pobieranie i dekodowanie rozkazów składanych i pojedynczych, dostarcza programu działającego na rozkazach składanych, zachowującego sekwencyjność wykonywania rozkazów bazowych maszyny skalarnej przy realizacji rozkazów składanych. Układ umożliwia również realizację skoków wewnątrz rozkazów składanych. W celu wykonywania skoków rozkazów składanych dokonuje się zatem sprawdzania, czy zawierają one dołączone bity sterujące. Wprowadza się również mechanizm unieważniania, zależny od bitów sterujących, umożliwiający anulowanie wykonywania rozkazów składowych, występujących w rozkazach, do których wykonuje się skok albo w następnych rozkazach składanych, o ile ich wykonanie spowodowałoby nieprawidłowe zachowanie programu.
Przedmiot wynalazku jest uwidoczniony w przykładzie wykonania na rysunku, na którym fig. 1 przedstawia ogólny schemat blokowy części układu komputerowego zdolnego do składania rozkazów w sekwencje rozkazów skalarnych w celu wykonywania współbieżnego, fig. 2 - wykres czasowy dla realizacji jednoprocesorowej, ukazujący równoległość wykonywania pewnych rozkazów, selektywnie pogrupowanych w ciągi rozkazów składanych, fig. 3 - schemat blokowy układu komputerowego według wynalazku, fig. 4A - ogólny schemat blokowy przedstawiający obrazowo sposób przetwarzania istniejących programów w celu określenia sekwencji rozkazów, które mogą być wykonywane jako pojedyncze rozkazy składane w komputerze do wykonywania rozkazów składanych, fig. 4B - fragment zalecanego wykonania układu komputerowego zgodnie z przedmiotem wynalazku, fig. 5 - drogę programu do przekształcenia kodu oryginalnego do wykonania programu, fig. 6 - schemat blokowy, ukazujący generację programu z rozkazów składanych na podstawie programu, zapisanego w asemblerze, fig. 7 - schemat blokowy układu do wykonywania rozkazów składanych, fig. 8 i fig. 9 przedstawiają odpowiednio schemat układu do wykonywania rozkazów składanych i schemat generacji programu z rozkazów składanych dla przypadku, w którym rozkaz, do którego wykonywany jest skok, znajduje się na początku lub w środku rozkazu składanego, zaś fig. 10 przedstawia notację formatów znaczników.
Na figurze 1 przedstawiono typowy przykład wykonania części układu komputerowego do cyfrowego przetwarzania danych. Układ ten jest zdolny do równoległego wykonywania dwu lub więcej rozkazów. W celu umożliwienia współbieżnego wykonywania grupy dwu lub więcej rozkazów, układ komputerowy zawiera zespół jednostek funkcjonalnych, mogących pracować równolegle w sposób współbieżny, przy czym każda z nich może przetwarzać jeden lub więcej typów rozkazów maszynowych. Układ umożliwia składanie rozkazów w celu ich równoległego lub współbieżnego wykonania. W tym znaczeniu „składanie odnosi się do grupowania rozkazów z sekwencji rozkazów skalarnych, gdzie rozmiar grupy jest skalowalny od 1 do N. Sekwencje rozkazów skalarnych mogą być przykładowo pobierane z istniejącego zbioru rozkazów skalarnych, na przykład takich jak wykorzystywane w systemie IBM System/370. Rozumie się jednak, że składanie ma ułatwiać równoległe pobieranie i wykonywanie rozkazów we wszystkich układach komputerowych o architekturze, umożliwiającej przetwarzanie wielu rozkazów na jeden cykl.
W trakcie składania rozkazów sąsiadujące rozkazy skalarne grupowane są w celu równoległego lub współbieżnego wykonywania. W szczególności zespół składania rozkazów wyszukuje klasy rozkazów, które mogą być wykonywane równolegle. Po znalezieniu odpowiednich sekwencji rozkazów tworzy się rozkaz składany.
166 513
Jak przedstawiono na fig. 1 zespół składania 20 rozkazów pobiera strumień binarnych rozkazów skalarnych 21 i selektywnie grupuje pewne z sąsiadujących rozkazów skalarnych w celu utworzenia zakotłowanego rozkazu składanego. Wynikowy strumień rozkazów składanych 22 zawiera rozkazy skalarne do wykonywania pojedynczo oraz rozkazy składane, utworzone z grup rozkazów skalarnych do wykonywania równoległego. Po podaniu rozkazu skalarnego do zespołu przetwarzania 24 rozkazów jest on skierowany do jednej z wielu odpowiednich jednostek wykonawczych w celu wykonania sekwencyjnego. Po podaniu rozkazu składanego do zespołu przetwarzania 24 rozkazów, jego składowe rozkazy skalarne podawane są do odpowiedniej jednostki wykonawczej w celu wykonania równoległego. Typowe jednostki funkcjonalne to, przykładowo ale nie wyłącznie, jednostki arytmetyczno logiczne (ALU) 26,28, zmiennoprzecinkowe jednostki arytmetyczne (FP) 30 i jednostki generacji adresu (AU) 32.
Jak pokazano na figurze 2 składanie rozkazów może zostać zrealizowane w środowisku jednoprocesorowym, w którym każda jednostka funkcjonalna wykonuje rozkaz skalarny (S) lub, alternatywnie, rozkaz składany (CS). Jak pokazano na rysunku, strumień rozkazów 33 zawierający sekwencje rozkazów skalarnych i składanych rozkazów skalarnych posiada bity sterujące lub znaczniki (T) skojarzone z każdym z rozkazów składanych. Tak więc pierwszy rozkaz skalarny 34 może być wykonywany pojedynczo przez jednostkę funkcjonalną A w cyklu 1; potrójny rozkaz składany 36 identyfikowany znacznikiem T3 może mieć swoje trzy złożone rozkazy skalarne wykonywane równolegle w jednostkach funkcjonalnych A, C i D w cyklu 2; następny rozkaz składany 38 zidentyfikowany znacznikiem T2 może mieć swoje dwa składane rozkazy skalarne wykonywane równolegle w jednostkach funkcjonalnych A i B w cyklu 3; następny rozkaz skalarny 40 może być wykonywany pojedynczo przez jednostkę funkcjonalną C w cyklu 4; duża grupa rozkazów składanych 42 może mieć swoje cztery składane rozkazy skalarne wykonywane równolegle w jednostkach funkcjonalnych A, B, C, D w cyklu 5; i trzeci rozkaz skalarny 44 może być wykonywany pojedynczo przez jednostkę funkcjonalną A w cyklu 6.
Jeden z przykładów architektury układu komputerowego, która może być dostosowana do operacji na rozkazach składanych, stanowi architektura na poziomie rozkazów maszynowych systemu IBM System/370, w której wielokrotne rozkazy skalarne mogą być przesyłane do wykonania w każdym cyklu maszynowym, zgodnie z fig. 2. W tym kontekście cykl maszynowy odnosi się do pojedynczego stopnia przetwarzania potokowego, wymaganego do wykonywania rozkazu skalarnego.
Korzystne jest aby proces składania rozkazów odbywał się przed ich pobraniem tak, aby mógł być wykonywany jednokrotnie dla rozkazu lub rozkazów wykonywanych wielokrotnie. Zaproponowano umieszczenie jednostki składania rozkazów w pamięci rzeczywistej komputera w celu sprzętowej realizacji składania, po kompilacji, ale przed wysłaniem rozkazu do wykonania. Tego rodzaju składanie uważa się z preferowane w stosunku do innych rozwiązań i określanych jako „składanie wewnątrzpamięciowe*.
Składanie wewnątrzpamięciowe przedstawiono na figurze 3 w odniesieniu do układu komputerowego według wynalazku. Hierarchicznie zorganizowana pamięć zawiera adapter wejścia/wyjścia 1, posiadający interfejsy z pamięcią pomocniczą i rzeczywistą pamięcią komputera. Pamięć rzeczywista składa się z pamięci głównej 46 o dużej pojemności i średniej szybkości oraz z pamięci głównej 46 o dużej pojemności i średniej szybkości oraz z pamięci podręcznej 48 rozkazów, szybkiej ale o relatywnie małej pojemności. Pamięć główna 46 i pamięć podręczna 48 określane są w niniejszym opisie jako pamięć rzeczywista lub po prostu pamięć. Strumień rozkazów pobieranych z pamięci podręcznej 48 za pomocą adaptera wejścia/wyjścia 41 przechowywany jest w blokach zwanych „stronami: w pamięci głównej 46. Nieprzerwane ciągi rozkazów, zwane „wierszami**, przesyłane są z pamięci głównej 46 do pamięci podręcznej 48 rozkazów, gdzie są dostępne do szybkiego przesłania do przetwarzania w jednostce pobierania i wysyłania 50 rozkazów. Rozkazy pobrane z pamięci podręcznej 48 podawane są do dekodera 52, gdzie są dekodowane i przekazane do jednostek funkcjonalnych 56, 58,..., 60 do wykonania.
W czasie wykonywania, jeśli występuje odwołanie do rozkazu w programie, adres rozkazu podawany jest do jednostki sterującej 62 pamięci podręcznej, która wykorzystuje go do pobrania jednego lub więcej rozkazów, łącznie z zaadresowanym rozkazem, z pamięci podręcznej 48 do kolejki w jednostce pobierania i wysyłania 50 rozkazów. Jeśli zaadresowany rozkaz znajduje się w
166 513 pamięci podręcznej 48, mówi się o „trafieniu - w przeciwnym razie - o „chybieniu. Chybienie powoduje, że jednostka sterująca 62 pamięcią podręczną wysyła adres wiersza żądanego rozkazu do zespołu zarządzania 64 pamięcią. Zespół ten zawiera funkcje zarządzania, które zawierają, przykładowo, funkcje zarządzania pamięcią realną, wykorzystujące adres wiersza dostarczony przez jednostkę sterującą 62 pamięcią podręczną w celu określenia czy strona zawierająca zaadresowany wiersz znajduje się w pamięci głównej 46. Jeśli strona jest w pamięci głównej 46, to zespół zarządzania 64 pamięcią realną wykorzysta adres wiersza do przesłania wiersza zawierającego brakujący rozkaz z pamięci głównej 46 do pamięci podręcznej 48. Jeśli wiersz zawierający żądany rozkaz nie jest w pamięci głównej 46, system operacyjny aktywuje następną funkcję zarządzania pamięcią, dostarczając jej identyfikatora strony zawierającej potrzebny wiersz. Funkcja ta wyśle do adaptera wejścia/wyjścia 41 adres, określający stronę zawierającą wiersz. Adapter 41 pobiera stronę z pamięci podręcznej 48 i dostarczy ją do pamięci głównej 46. Aby znaleźć miejsce na pobraną stronę zespół zarządzania 64 pamięcią wybiera stronę w pamięci głównej 46 do zastąpienia przez stronę pobraną. W architekturze układu ze zbiorem skalowalnych rozkazów składanych (SCISM) zastępowana strona zwracana jest do pamięci podręcznej 48 przez adapter wejścia/wyjścia 41 bez informacji zawartej w znacznikach rozkazów składanych. W ten sposób, rozkazy które najprawdopodobniej będą wymagane w trakcie wykonywania sekwencji rozkazów, sąsiadują z jednostkami funkcjonalnymi 50, 58, 60 w pamięci podręcznej 48. Hierarchiczna organizacja pamięci umożliwia szybki dostęp do rozkazów, które są wymagane, ale nie znajdują się w pamięci podręcznej 48.
W architekturze SCISM wewnątrzpamięciowe składanie rozkazów może być wykonywane za pomocą zespołu składania 70 rozkazów, umieszczonej funkcjonalnie między adapterem wejścia/-wyjścia 41 i pamięcią główną 46 tak, że składanie strumienia rozkazów skalarnych może się odbywać na wejściu do albo wewnątrz pamięci głównej 46. Przy tej lokalizacji rozkazy mogą być składane w trakcie pobierania stron.
Alternatywnie zespół składania 70 rozkazów może zajmować miejsce oznaczone na rysunku przez 732 między pamięcią główną 46 i pamięcią podręczną 48 rozkazów, zaś rozkazy składane są tworzone wiersz po wierszu w trakcie pobierania do pamięci podręcznej 48, co może stanowić preferowany przykład wykonania.
Konkretna technika składania rozkazów pozostaje do wyboru projektanta. Jednakże, w celach ilustracyjnych, można przedstawić jedną z technik tworzenia rozkazów składanych z sąsiadujących rozkazów skalarnych. Przykładowo rozkaz może zajmować 6 bajtów (3 półsłowa), 4 bajty (2 półsowa) lub 2 bajty (1 półsłowo) tekstu. W niniejszym przykładzie, reguła określająca zasady składania rozkazów o zmiennej długości stwierdza, że wszystkie rozkazy 2 lub 4 bajtowe są składane ze sobą. Tak więc rozkaz 2 bajtowy może się wykonywać równolegle z innym 2 lub 4 bajtowym rozkazem jak też rozkaz 4 bajtowy może się wykonywać równolegle z innym 2 lub 4 bajtowym rozkazem. Reguła stwierdza, że rozkazy 6 bajtowe nie są składane. Tak więc rozkaz 6 bajtowy może się wykonywać wyłącznie pojedynczo. Oczywiście, proces składania nie jest ograniczony tylko do tych przykładowych reguł ale może być regulowany szeregiem reguł, definiujących kryteria co do równoległego wykonywania rozkazów w specyficznej konfiguracji dla danej architektury komputera.
Zbiór rozkazów w niniejszym przykładzie jest zaczerpnięty z architektury Systemu/370. Na podstawie badania kodu operacji każdego rozkazu OP można określić jego długość, wyznaczoną kodem długości rozkazu (ILC) zawartym w kodzie operacji. Inne bity kodu operacji określają typ rozkazu. Po określeniu typu i długości rozkazu generowany jest znacznik składania, w celu określenia czy dany rozkaz ma być składany z następnym lub z kolejnymi rozkazami w celu wykonania równoległego, czy też ma być wykonywany pojedynczo.
W niniejszym przykładzie format znacznika wybrano tak, że w przypadku gdy dwa sąsiednie rozkazy mogą być złożone, bity znacznika dla pierwszego rozkazu są równe „1, zaś „0 dla drugiego. Jednakże jeśli pierwszy i drugi rozkaz nie mogą być złożone to znacznik dla pierwszego rozkazu jest równy „0, zaś rozpatrywane w celu składania są rozkazy drugi i trzeci. Po przetwarzaniu strumienia bajtów rozkazów według wybranych zasad składania i określeniu bitów oznaczających składanie dla różnych rozkazów skalarnych, można uzyskać zwiększenie stopnia równoległości wykonywania rozkazów przez rozpatrywanie większych grup rozkazów a następnie wybranie do składania najlepszej kombinacji N rozkazów.
166 513
Istnieje potrzeba dysponowania układem, który w sposób ogólny został określony na figurze 4-A. Zarówno programy napisane w języku wyższego rzędu (figura 5) jak i programy napisane w asemblerze (figura 6) muszą być przetwarzane w celu określenia sekwencji rozkazów, które mogą być wykonywane jako pojedyncze rozkazy składane w komputerze zdolnym do wykonywania rozkazów składanych.
Na figurze 4-A przedstawiono sekwencję, jakiej jest poddawany program, podawany na wejściu zespołu składającego rozkazy, wytwarzającego program składający się z rozkazów składanych na podstawie reguł, odzwierciedlających achitekturę układu i sprzętu. Reguły te są określane dalej jako reguły składania. Program wytworzony przez zespół składania rozkazów może być następnie bezpośrednio wykonywany w układzie do wykonywania rozkazów składanych, co przedstawiono na figurze 7.
Figura 5 przedstawia typową drogę programu od kodu źródłowego w języku wyższego rzędu do rzeczywistego wykonania, co może być uważane za jedną z możliwych realizacji sugerowanych przez fig. 4-A. Alternatywne rozwiązanie dla programów napisanych w asemblerze przedstawiono na podstawie fig. 6.
Można stwierdzić, posługując się fig. 5, że istnieje wiele miejsc w układzie komputerowym, zarówno w oprogramowaniu jak i w sprzęcie, gdzie można dokonać składania rozkazów. Każde z nich posiada swe wady i zalety. Jak pokazano na fig. 5 program przechodzi kilka etapów w drodze od programu źródłowego do ostatecznego wykonania. W czasie kompilacji program źródłowy jest translowany na kod maszynowy i przechowywany w pamięci dyskowej 45. W czasie fazy wykonywania program jest czytany z pamięci dyskowej 45 i ładowany do pamięci głównej 47, znajdującej się w określonej konfiguracji układu 49, gdzie rozkazy są wykonywane za pomocą jednostek przetwarzania 53, 54, 55 rozkazów. Składanie rozkazów może mieć miejsce wszędzie wzdłuż przedstawionej drogi. Ogólnie, im bliżej jednostek przetwarzania rozkazów (IPU) znajduje się zespół składania rozkazów tym ostrzejsze stają się ograniczenia czasowe. Jeśli zespół składania rozkazów położony jest dalej od jednostek IPU to więcej rozkazów może być branych pod uwagę w celu określenia ich najlepszego pogrupowania w celu złożenia i tym samym zwiększenia szybkości działania.
Na figurze 6 przedstawiono schemat blokowy generacji programu z rozkazami składanymi na podstawie programu zapisanego w asemblerze według określonych reguł składania 57, uwzględniających architekturę układu i sprzętu. Program asemblerowy podawany jest na wejście zespołu składania 59, przeglądającego program asemblerowy blokami, składającymi się z mi-, m2...mnrozkazów i generującego na wyjściu program z rozkazami składanymi. Zespół składania 59 analizuje kolejne bloki rozkazów. Bloki są numerowane od 1 do n. Składowe rozkazy bloku n oznaczone są jako I,m gdzie m zmienia się do 1 do liczby odpowiadającej liczbie rozkazów w bloku. Liczba rozkazów w każdym z bloków 61, 63, 65 w strumieniu rozkazów, zawierającym grupę rozkazów branych pod uwagę przy składaniu rozkazów zależy od realizacji zespołu składania 59 i może być różna w każdym bloku.
Jak pokazano na fig. 6 zespół składania 59 realizuje składanie m rozkazów w blokach parami. W pierwszym kroku bierze się pod uwagę pierwszy i drugi rozkaz, badając czy mogą one być połączone w rozkaz składany. Następnie bada się w analogiczny sposób drugi i trzeci, trzeci i czwarty rozkaz i tak do końca bloku. Po zidentyfikowaniu różnych możliwych par C1-C5 zespół składania 59 wybiera preferowane rozkazy składane i oznacza bitami identyfikacyjnymi lub znacznikami optymalnie pogrupowane rozkazy składane.
Jeśli optymalne pogrupowanie nie jest możliwe, wszystkie składalne, sąsiadujące z sobą rozkazy skalarne mogą zostać zidentyfikowane tak, że skok do któregoś z rozkazu, umieszczonego wewnątrz któregoś z rozkazów złożonych może wykorzystać dowolną z napotkanych par rozkazów składanych. W przypadku gdy występuje wiele zespołów składania 59 jednocześnie można składać wiele kolejnych bloków z strumienia rozkazów.
Na figurze 7 przedstawiono schemat blokowy układu, do wykonywania programu, zawierającego rozkazy składane, wygenerowanego przez sprzętowy zespół 66 składania rozkazów lub programowe środki składania 67. Strumień bajtów zawierający rozkazy składane podawany jest do pamięci podręcznej (CI) 68 rozkazów, która pełni funkcję bufora pamięci zapewniającego szybki
166 513 dostęp do rozkazów składanych. Zespół pobierania i wysyłania 69 rozkazów pobiera rozkazy składane z pamięci podręcznej 68 i przekazuje poszczególne składowe rozkazy składane do odpowiednich jednostek funkcjonalnych w celu wykonania równoległego.
Należy podkreślić, że jednostki funkcjonalne (EU) 71, w rodzaju jednostek arytmetycznologicznych (ALU), w komputerze działającym na rozkazach składanych mogą wykonywać poszczególne rozkłady skalarne albo skalarne rozkazy składane równolegle z innymi skalarnymi rozkazami składanymi. Proces wykonywania równoległego może odbywać się w jednostkach wykonawczych różnego rodzaju, takich jak wspomniane jednostki ALU, jednostki zmiennoprzecinkowe (FP) 73, jednostki generacji adresu pamięci (AU) lub w jednostkach wykonawczych tego samego rodzaju, zależnie od architektury i konkretnej konfiguracji komputera.
Pierwszy format znacznika przedstawiony w powyższym przykładzie, zawiera jeden bit, dodawany do każdych dwóch bajtów tekstu (rozkazów i danych). W ogólności znaczniki z informacją mogą być dodawane do każdego z rozkazów w strumieniu bajtów - to znaczy zarówno każdy z nieskładanych jak i składanych rozkazów skalarnych, występujący w parze, trójce jak i większej grupie może być opatrzony znacznikiem. W dalszym ciągu opisu przez bity identyfikacyjne rozumie się część znacznika, wykorzystywaną specjalnie w celu określenia i odróżnienia tych skalarnych rozkazów składanych które tworzą grupy rozkazów składanych, od pozostałych skalarnych rozkazów nieskładanych, występujących w programie, które są pobierane i wykonywane pojedynczo.
W przypadku, gdy więcej niż dwa rozkazy skalarne mogą być połączone w rozkaz składany, korzystne może być dodanie dodatkowych bitów identyfikacyjnych. Minimalna liczba bitów wymagana do wskazania określonej liczby rozkazów skalarnych które zostały poddane procesowi składania jest określona logarytmem dwójkowym (przy podstawie 2), zaokrąglonym w górę do najbliższej liczby całkowitej, z maksymalnej możliwej do połączenia w grupę liczby rozkazów skalarnych, tworzących jeden rozkaz składany. Przykładowo, jeśli maksimum wynosi 2 wystarcza jeden bit identyfikacyjny na każdy rozkaz składany. Jeśli maksimum wynosi 3 lub 4 wymagane są dwa bity identyfikacyjne. Jeśli maksimum wynosi 5, 6, 7 lub 8 wymagane są trzy bity identyfikacyjne na każdy rozkaz składany.
Drugi format znacznika, wykorzystujący wymieniony schemat kodowania, przedstawiono w tabeli 1.
Tabela 1
bity identyfikacyjne zakodowane znaczenie liczba rozkazów składanych
00 rozkaz ten me jest składany z następnym 0
01 rozkaz ten jest składany z następnym 2
10 rozkaz ten jest składany z 2 następnymi 3
11 rozkaz ten jest składany z 3 następnymi 4
Zakładając, że rozkazy wyrównane są w taki sposób, że każde półsłowo wymaga znacznika, należy zwrócić uwagę, że jednostka przetwarzania rozkazów (IPU) ignoruje w czasie pobierania rozkazów wszystkie z wyjątkiem znacznika dla pierwszego rozkazu. Inaczej, półsłowa są sprawdzane przez badanie bitów informacyjnych w celu określenia, czy rozpoczynają rozkaz składany. Zgodnie z tabelą 1, dla rozkazu składanego, nie będącego pierwszym w kolejności, bity identyfikujące są równe 0. Jeśli półsłowo wyznacza rozkaz składany zawierający dwa rozkazy skalarne, bity identyfikacyjne dla pierwszego rozkazu są p 1“ i „0“ dla drugiego rozkazu. Jeśli półsłowo wyznacza rozkaz składany zawierający trzy rozkazy skalarne, bity identyfikacyjne dla pierwszego rozkazu są „2“, dla drugiego rozkazu „1“ i „0“ dla trzeciego rozkazu. Inaczej mówiąc, bity identyfikacyjne dla każdego półsłowa określają, czy to konkretne półsłowo stanowi początek rozkazu składanego, wskazując jednocześnie liczbę rozkazów tworzących rozkaz składany.
Opisane kodowanie rozkazów składanych zakłada, że jeśli trzy rozkazy są składane w grupę potrójną, również drugi i trzeci rozkaz jest składany w grupę podwójną. Inaczej, jeśli wystąpi skok do drugiego rozkazu w grupie potrójnej, bit identyfikacyjny dla drugiego rozkazu równy „1“ oznacza że drugi i trzeci rozkaz będą wykonywane równolegle jako para składana, chociaż pierwszy rozkaz w grupie potrójnej nie był wykonany.
166 513
W przedstawionym wynalazku strumień rozkazów poddawany jest operacji składania rozkazów tylko raz dla określonej konfiguracji układu komputerowego, a pobranie rozkazu składanego występuje łącznie z pobraniem bitów identyfikacyjnych dla tego rozkazu. Eliminuje to potrzebę nieefektywnego określania i wyboru w ostatniej chwili pewnych rozkazów skalarnych do wykonania równoległego co ma miejsce przy pobieraniu tych samych lub różnych rozkazów do wykonania w maszynie superskalarnej.
Utworzenie rozkazów składanych ze strumienia rozkazów wejściowych przy znanych punktach odniesienia, wskazujących na początek rozkazu, jest operacją prostą. Punktem odniesienia jest informacja, który z bajtów, mogących zawierać rozkaz lub dane, jest pierwszym bajtem rozkazu. Tego rodzaju informację można uzyskać za pomocą pola znacznikowego lub innego wskaźnika, dostarczającego informacji o położeniu granic między rozkazami. W wielu układach komputerowych tego typu punkty odniesienia są znane wyłącznie kompilatorowi w trakcie kompilacji i jednostce centralnej komputera (CPU) w trakcie pobierania rozkazów. Jeśli operacja składania rozkazów wykonywana jest po kompilacji, program kompilujący mógłby wskazać za pomocą wskaźników które bajty zawierają pierwszy bajt rozkazu i które zawierają dane. Ta dodatkowa informacja umożliwa bardziej efektywną realizację zespołu składającego, ponieważ są znane dokładne lokalizacje rozkazów. Kompilator może oczywiście umożliwiać rozróżnienie między rozkazami i danymi w inny sposób, dostarczając do zespołu składającego informacji pozwalających na określenie granic między rozkazami.
W układzie, w którym rozkazy 4-bajtowe wyrównane są z dokładnością do czterech bajtów, każdy znacznik jest stowarzyszony z 4 bajtami tekstu. Jeśli rozkazy mogą być wyrównane dowolnie jeden znacznik jest potrzebny na każdy bajt. Dla pewnego rodzaju architektury komputerów możliwe jest jednak występowanie rozkazów o zmiennej długości, z dodatkowo wymieszanymi rozkazami i danymi, co komplikuje proces składania rozkazów. Oczywiście granice między rozkazami muszą być znane w czasie wykonania programu. Ponieważ jednak proces składania najlepiej gdy się odbywa przed wykonywaniem rozkazów, potrzebna jest metoda na składanie rozkazów bez znajomości miejsca, w którym rozpoczyna się ciąg rozkazów i bez wiedzy, które z bajtów są danymi. Metoda ta powinna dać się zastosować do wszystkich dopuszczalnych rodzajów architektury komputerów, łącznie z architekturą komputerów ze zredukowanym zbiorem rozkazów (RISC), w której rozkazy mają zwykle stałą długość i nie są przemieszane z danymi. Realizacja tego rodzaju funkcji, przedstawionych ogólnie na fig. 4-A, uzyskana jest z pomocą zespołu wykonawczego rozkazów składanych.
Zalecane wykonanie układu komputerowego zgodnie z wynalazkiem przedstawiono na figurze 4-B. Chociaż proces składania może zostać zrealizowany programowo to zalecaną realizacją procesu składania jest wykorzystanie zespołu składania rozkazów. Na fig. 4-B przedstawiono typowy fragment układu komputerowego lub też cyfrowego układu przetwarzania danych zawierający jednostkę zarządzania 144 pamięcią podręczną. Układ może wykonywać dwa lub więcej rozkazów równolegle. Występuje w nim pierwszy mechanizm do pamiętania rozkazów i danych do przetworzenia w formie szeregu rozkazów bazowych dla komputera skalarnego. Mechanizm ten określa się jako pamięć wysokiego poziomu. Jest to pamięć główna 136 o dużej pojemności i małej szybkości. Może on być także jednostką pamięci systemowej o dużej pojemności lub może stanowić dolny poziom systemu pamięci hierarchicznej.
Układ komputerowy z fig. 4-B zawiera również zespół 137 rozkazów lub mechanizm do przyjmowania rozkazów z pamięci głównej 136 i do kojarzenia z nimi znaczników, określających które z tych rozkazów mogą być przetwarzane równolegle z innymi. Zespół składania 137 rozkazów analizuje pobierane rozkazy w celu określenia, które z nich mogą być przetworzone równolegle. Ponadto zespół ten opatruje analizowane rozkazy znacznikami, określającymi które z nich mogą być wykonywane równolegle a które pojedynczo.
Układ komputerowy z fig. 4-B zawiera również drugi mechanizm pamięciowy sprzężony z zespołem składania 137 rozkazów, do pobierania i przechowywania analizowanych rozkazów i związanych z nimi znaczników, tak że te zapamiętane rozkazy składane mogą zostać pobrane do wykonania. Ten drugi lub następny mechanizm pamięciowy jest reprezentowany przez pamięć podręczną 138 rozkazów składanych. Pamięć podręczna 138 jest szybką pamięcią o małej pojemności, stosowaną analogicznie do pamięci podręcznej w układach komputerowych w celu zwiększenia ich mocy przetwarzania przez zmniejszenie częstości odwołań do wolnej pamięci głównej 136.
166 513
Na figurze 4-B przedstawiono również szereg funkcjonalnych jednostek 139, 140,141 przetwarzających. Jednostki funkcjonalne 139, 140, 141 działają równolegle w sposób współbieżny, przy czym każda z nich we własnym zakresie jest zdolna do przetwarzania jednego lub więcej rodzajów rozkazów maszynowych. Przykładami możliwych do zastosowania jednostek funkcjonalnych są: jednostka arytmetyczno-logiczna (ALU) ogólnego zastosowania, jednostka ALU do generacji adresów, jednostka ALU bazująca na zależności danych, jednostka przetwarzania rozkazów skoku, jednostka przesuwania danych, jednostka przetwarzania zmiennoprzecinkowego itp. Dany układ komputerowy może zawierać dwie lub więcej jednostki funkcjonalne. Przykładowo dany system komputerowy może zawierać dwie lub więcej jednostki arytmetyczno-logiczne (ALU) ogólnego przeznaczenia. Podobnie układy komputerowe nie muszą zawierać każdej z wymienionych typów jednostek funkcjonalnych. Ich konfiguracja zależy od wybranej architektury układu komputerowego.
Układ komputerowy z fig. 4-B zawiera również mechanizm do pobierania i przesyłania rozkazów, sprzężony z pamięcią podręczną 138 rozkazów składanych, służących do podawania kolejnych rozkazów z tej pamięci do różnych jednostek funkcjonalnych 139, 140, 141, kiedy znaczniki rozkazów wskazują, że mogą one być wykonywane równolegle. Mechanizm ten również podaje pojedyncze rozkazy do poszczególnych jednostek funkcjonalnych 139, 140, 141, kiedy znaczniki wskazują, że nie mogą one być wykonywane równolegle i muszą być przetworzone pojedynczo. Mechanizm ten jest zrealizowany przez jednostkę pobierania i wysyłania 142 rozkazów. Jednostka ta pobiera rozkazy z pamięci podręcznej 138 i analizuje bity znacznika jak też pola kodów operacyjnych rozkazów, wykonuje funkcje dekodowania i na podstawie tej analizy jak i innych sygnałów sterujących przetwarzaniem potokowym wysyła analizowany rozkaz do jednej z odpowiednich jednostek funkcjonalnych 138, 140, 141. Składanie rozkazów wewnątrz pamięci podręcznej 138 jest realizowane przez zespół składania 137 rozkazów tak, że składanie każdego wiersza pamięci podręcznej 138 ma miejsce na jej wejściu. W trakcie pobierania każdego wiersza z pamięci głównej 136 do pamięci podręcznej 138 jest on analizowany w celu składania w zespole składania 137 rozkazów i przekazywany, razem z bitami informacyjnymi znacznika do zapamiętania w pamięci podręcznej 138 rozkazów składanych.
Przed zapamiętaniem w pamięci podręcznej 138 wiersz podlega składaniu w zespole składania
137 rozkazów, generującej zbiór bitów znaczników. Bity znaczników mogą być przyłączone bezpośrednio do rozkazów których dotyczą. Mogą być też dostarczone równolegle z samymi rozkazami. W każdym przypadku bity te są zapamiętywane z odpowiadającymi im wierszami rozkazów w pamięci podręcznej 138. W przypadku potrzeby rozkaz składany z pamięci podręcznej
138 pobierany jest razem z bitami znaczników przez jednostkę pobierania i wysyłania 142 rozkazów. Jednostka ta oraz pamięć podręczna 138 rozkazów składanych są zaprojektowane w taki sposób, że rozkaz składany o maksymalnej długości może być pobrany z pamięci podręcznej 138 rozkazów składanych i przesyłany do jednostek funkcjonalnych 139, 140, 141 itd. Z chwilą pobrania rozkazów do jednostki pobierania i wysyłania 142 rozkazów ich bity znacznikowe są sprawdzane w celu określenia przez dekodowanie czy mogą być wykonywane równolegle, zaś kody operacyjne są badane w celu stwierdzenia, które z dostępnych jednostek funkcjonalnych 139,140, 141 będą najbardziej właściwe do ich przetworzenia. Jeśli bity znacznika wskazują, że dwa lub więcej rozkazów można przetwarzać równolegle, wówczas są one wysyłane do odpowiednich jednostek funkcjonalnych 139, 140, 141 na podstawie ich kodów operacyjnych. Są one następnie przetwarzane współbieżnie w tych jednostkach funkcjonalnych. Po napotkaniu rozkazu, który nie może być wykonywany równolegle, wysyła się go do odpowiedniej jednostki funkcjonalnej 139, 140, 141 na podstawie jego kodu operacyjnego, gdzie jest następnie pojedynczo przetwarzany.
W przypadku idealnym, jeśli szereg rozkazów jest zawsze przetwarzane równolegle, szybkość wykonywania rozkazów przez układ komputerowy byłaby N razy większa w porównaniu z przypadkiem, gdy rozkazy wykonywane byłyby pojedynczo, gdzie N jest liczbą przetwarzanych równolegle rozkazów w grupie.
Jak przedstawiono poprzednio, pole sterujące lub znacznik zawierają informacje wyznaczające granice rozkazów składanych, ale mogą zawierać również informacje dodatkowe, jeśli wymaga tego określona realizacja. Przykładowo, dla trzeciej postaci formatu znacznika, pole sterujące (znacznik) może być zdefiniowane jako pole 8-bitowe.
t0 t1 t2 t3 t4 te te t7
166 513 w którym kolejne bity zdefiniowano następująco:
Bit Funkcja to jeśii równy 1, rozkaz ten poc^tek składanego t1 eeśii równy 1 , wykona, dwa ^Irł^d^i^e równolegee t2 jeśli równy 1, rozkaz składany posiada w^ię^t^^j niż jeden cykl wykonawczy t3 eeśh równy 1 , zawwś operacie przetwarranaa poookowego t4 jeśli rozkaz jest rozkazem skoku, to jeśli bit ten jest równy 1, przewiduje się że rozkaz ten będzie wykonany ts jeśli równy 1, to rozkaz ten posiada powiązanie poprzez pamięć z poprzednim rozkazem składanym te eeśij równy 1 , zezwój na dynamiczne wysy^^e oozkazu do wykonanża 17 IcśH równy 1 , oo rozkaz e^n wykorzyst^e eednostka ALU
W ogólności zespół składania 137 wychwytuje rozkazy, które mogą być wykonywane równolegle i zapewnia, że między rozkazami składowymi rozkazu składanego nie występują żadne powiązania, które by nie mogły być obsłużone sprzętowo. Po znalezieniu kompatybilnych sekwencji rozkazów tworzy się rozkaz składany. Przykładowo rozkazy dla Systemu/370 mogą być podzielone na następujące klasy:
1. foomat RR - -oozazz ładowania, logiczny a ο^η^γ^η! pooównmia
LOR - ładuj uzupełnienie
LPR - ładuj wartość dodatnią
LNR - ładuj wartość ujemną
LR - ładuj rejestr
LTR - ładuj i testuj
NR - iloczyn logiczny
OR - suma logiczna
XR - suma modulo dwa
AR - dodaj
SR - odejmij
ALR - dodaj logicznie
SLR - gOejmij logicznie
CLR - porównaj logicznie
CR - porównaj
2. format RS - rozkazy przesunięcia (bez dostępu do pamięci)
SRL - przesuń w prawo logicznie
SLL - przesuń w lewo logicznie
SRA - przesuń w prawo arytmetycznie
SLA - przesuń w lewo arytmetycznie
SRDL - przesuń w prawo logicznie
SLDL - przesuń w lewo logicznie
SRDA - przesuń w prawo arytmetycznie
SLDA - przesuń w lewo arytmetycznie
3. Rozkazy skoku warunkowego - zależne od wartości licznika i indeksu
BCT , wykonm, skok w zależności od licznika (format RX)
BCTR , nykonaj skok w zależności od licznika (format RR)
BXH - wykonaj skok jeśli wartość indeksu wysoka (format RS)
BXLE - wykonaj skok jeśli wartość indeksu niska (format RS)
4. Rozkazy skoku warunkowego - zależne od spełnienia warunku
BC , ^ykonaj skok jeśli waninek spełniony (format RX)
BCR , skok jeśli warunek spełniony (format RR)
166 513
5. Rozkazy skoku i łączenia
BAL - wykonaj skok i połącz (format RX)
BALR - wykonaj skok i połącz (format RR)
BAS - wykonaj skok i zapamiętaj (format RX)
BASR - wykonaj skok i zapamiętaj (format RR)
6. Rozkazy zapisywania do pamięci
STCM - zapamiętaj znaki z maską zapamiętanie 0-4 battów, format RS)
MVI - preeśiij bezporrednio ( t bjtt, format SI)
ST - zapami^ta- (4 l^atyy)
STC - zapami^ta- (t l^^t))
STH - zapami^tat półsfowo (2 bjtty)
7. Rozkazy ładowania
LH - aadu- ponowo 0 όϋ^γ)
L - aadj- (- hj^y)
8. La -ładuj adres
A 9. Foęma^fX - rozkazy arytmetyczne, logiczne, wstawiania, porównania
AH - <Jo<d^- J^«Słsf^wo
N - doczyn fogiczny
O - suma fog^na
S - i^<l^jmij
SH - i^<r^rniit pótetowo
SL - od^nu- ^ίεζηίε
X - suma modufo dwa
IC - wstaw ^ni^k
ICM - wstaw znak z maską φοόΐβΓΖ 0-4 ł^ató^w))
C - porównaj
CH - porównaj półsłowo
CL - porównaj fogiczme
CLI - porównaj ^ΐεζηΐε bezpośredmo
CLM - porównaj log^z^e znak z maską
10. TM - testuj z maską
Pozostałe rozkazy Systemu/370 nie są brane pod uwagę przy składaniu rozkazów do wykonania w niniejszym wynalazku. Nie wyklucza to możliwości wykonywania na nich operacji składania w przyszłych rozwiązaniach komputerów z rozkazami składanymi.
Jedna z najbardziej typowych sekwencji programu polega na wykonywaniu rozkazów formatu TM lub RX klasy porównania, którego rezultat steruje wykonaniem rozkazu typu „skocz jeśli warunek spełniony, który występuje bezpośrednio za rozkazem klasy porównania. Szybkość działania można zwiększyć przez równoległe wykonywanie rozkazów „porównaj i „skocz, co jest czasami realizowane dynamicznie w wydajnych procesorach rozkazów. Pewna trudność polega na identyfikacji poszczególnych rozkazów z klasy „porównaj i „skocz, wykonywanej dla typowej architektury w czasie procesu dekodowania rozkazów. Problemu tego uniknięto w niniejszym wynalazku, w którym analiza rozkazów z poszczególnych klas wykonywana jest z wyprzedzeniem. W wyniku tego powstaje rozkaz składany, który może być wykonywany.
W zależności od rozwiązań sprzętowych wiele klas rozkazów może być wykonywanych równolegle. Dodatkowo do już przedstawionych rozkazów składanych klasy „porównaj i „skocz również mogą być analizowane rozkazy składane innych klas, na przykład rozkazy ładowania i formatu RR, rozkazy skoku i ładowania adresu itd. Rozkaz składany może zawierać nawet wiele rozkazów z tej samej klasy, na przykład arytmetycznych formatu RR, o ile procesor ma do dyspozycji niezbędną liczbę jednostek wykonawczych.
166 513
W każdej praktycznej realizacji procesora rozkazów istnieje ograniczenie górne m liczby rozkazów wchodzących w skład rozkazu składanego. Ograniczenie to musi być znane zespołowi wykonującemu operacje składania rozkazów, tak aby powstałe rozkazy składane nie były dłuższe niż powyższe ograniczenie, wywołane zastosowanym rozwiązaniem sprzętowym. Zauważmy, że m jest dokładnie konsekwencją rozwiązań sprzętowych. Nie ogranicza ono zakresu rozkazów, które mogą być analizowane programowo w celu sprawdzenia, czy mogą zostać poddane operacji składania. Ogólnie, im szerszy zakres analizy tym większy możliwy do osiągnięcia stopień zrównoleglenia, jako że zespół składania rozkazów może wykryć wówczas bardziej obiecujące możliwości złożenia rozkazów. W celu ilustracji rozważmy poniższy przykład:
XI
X2
LOAD Rl, (X) ADD R3, R1 SUB Rl, R2 COMP R1, R3 X3 X4 na którym można wykonać operację składania •,κού^ειζ, na którym można wykonać operację składania ;załaduj pamięci X do R1 ;R3 = R + R1 ;R1 = R1-R2 porównaj R1 z R3 na którym można oj^^i^^^j^ składania na którym można wykonać operację slkł^t^^i^^a
Jeśli wywołane rozwiązaniem sprzętowym ograniczenie górne m wynosi 2, wówczas istnieje kilka sposobów wykonywania operacji składania na powyższej sekwencji rozkazów w zależności od zasięgu analizy wykonywanej przez zespół składania rozkazów. Dla zakresu analizy równego 4 zespół składający wygenerowałby następujące pary <X1>, <X2 LOAD> <ADD SUB> <COMPP X3> <X4>, usuwając całkowicie hazard występujący między LOAD, ADD, SUB i COMP. Z drugiej strony maszyna superskalarna z m = 2, składająca rozkazy w pary w zespole wysyłania rozkazów wykorzystując zasadę FIFO (pierwszy na wejściu - pierwszy na wyjściu), wygenerowałby następujące pary <X1 X2> <LOAD ADD> <SUB COMP> <x3 X4>, obciążone kosztem wzajemnego powiązania rozkazów. Rozkazy LOAD i ADD nie mogą być niestety wykonywane równolegle, gdyż ADD wymaga wyniku operacji ładowania. Podobnie SUB i COMP nie mogą być wykonywane równolegle. Nie można więc uzyskać w ten sposób przyspieszenia operacji.
Opisany układ przedstawia sposoby generacji programu składającego się z rozkazów składanych oraz dodatkowo proponuje powiązanie znaczników z rozkazami we względnie stały sposób. Ponieważ nie ma gwarancji, że nie wystąpi skok do środka rozkazu składanego, nie zostało dotychczas wyjaśnione w jaki sposób zapewnić informację o składaniu i, co bardziej istotne, w jaki sposób zapewnić poprawność wykonywania programu w przypadku występowania skoków pod dowolne położenia. Problem ten jest w rzeczywistości rozwiązany przez jednostkę pobierania i wysyłania 142 rozkazów do wykonania z fig. 4-B, co zostanie dalej wyjaśnione. Na początek przyjmijmy czwarty rodzaj definicji znacznika składania T, takiej że T= 1 jeśli związany z nim rozkaz albo rozpoczyna rozkaz składany albo jest rozkazem do wykonywania pojedynczego. Ponadto, T = 0 dla rozkazu składowego (różnego od pierwszego) wchodzącego w skład rozkazu składanego. Zakładając następnie, że jednostka pobierania i wysyłania 142 rozkazów do wykonania może pobrać do wykonania rozkaz składany o maksymalnej długości (jak określono powyżej), w przypadku pobierania rozkazu w odpowiedzi na wykonany skok zawsze pobiera blok tekstu równy maksymalnej długości rozkazu składanego, rozpoczynający się dokładnie pod adresem docelowym rozkazu skoku a następnie wykonuje wszystkie rozkazy pobrane z T = 0 jako rozkazy składane, aż do miejsca w pobranym tekście w którym występuje rozkaz z T= 1, wskazującym następny rozkaz składany. Jeśli bit T pod docelowym adresem rozkazu skoku jest równy 1 to oznacza to początek rozkazu składanego, który może być wykonany bezpośrednio. Sytuację tę przedstawiono na figurze 8 i figurze 9. Na figurze 10 przedstawiono notację następującej postaci: Fm, gdzie n jest numerem rozkazu składanego, zaś m jest numerem rozkazu wewnątrz rozkazu składanego n. Dopuszczalny zakres zmian m wynosi od 1 do maksymalnej długości rozkazu składanego, którego w niniejszym przykładzie wynosi 3. Rozkaz 2 z rozkazu składanego 1 jest rozkazem skoku, mogącym wykonać się wzdłuż dwu ścieżek a i b. S ciężka a prowadzi do środkowego rozkazu (I2) rozkazu składanego j, podczas gdy ścieżka b prowadzi do pierwszego rozkazu składanego j. W przypadku gdy rozkaz skoku wykonuje się wzdłuż ścieżki a, układ sprzętowy
166 513 pobiera rozkaz składany o maksymalnej długości, to znaczy trzech' rozkazów, a następnie wykonuje rozkazy składane I2' i I3. Pozostały z pobranych rozkazów, mianowicie Ik1, rozpoznany jest jako rozkaz początkowy nowego rozkazu składanego albo rozkaz pojedynczy (ponieważ posiada T = 1) i znajduje się w rezerwie, podczas gdy następny blok tekstu pobierany jest do kolejnego wykonania. W przypadku gdy rozkaz skoku wykonuje się wzdłuż ścieżki b do pierwszego rozkazu składanego j, układ sprzętowy pobiera ponownie blok tekstu o długości równej maksymalnej długości rozkazu składanego, dostarczając w ten sposób kompletny rozkaz składany I*2, j Wykonanie tego rozkazu odbywa się bezpośrednio.
Wyżej przedstawiony sposób może być równie dobrze wykorzystany dla innych formatów znaczników, mianowicie dla formatu drugiego, uprzednio przedstawionego.
Zauważmy, że rozkaz skoku B1 na fig. 10 jest złożony z rozkazem po nim następującym, ale ponieważ skok jest wykonywany, pobrany wcześniej tekst występujący za rozkazem, bez względu na to, czy składa się on z rozkazów składowych rozkazu składanego zawierającego skok czy z kolejnych rozkazów pojedynczych lub składanych czy też po prostu danych (w układach umożliwiających przemieszanie danych i rozkazów) nie może powodować aktualizacji stanu maszyny jeśli program ma się zachowywać w sposób prawidłowy. Ponadto pobranie rozkazu spod adresu, do którego wykonywany jest skok, może spowodować pobranie następnego rozkazu składanego, zawierającego następny rozkaz skoku, po którym może również następować tekst, który nie powinien powodować modyfikacji stanu maszyny pod warunkiem wykonania drugiego rozkazu skoku. Sekwencja kolejnych rozkazów skoku może powtarzać się do nieskończoności. W obydwu przypadkach rozwiązaniem pozwalającym na utrzymanie prawidłowego zachowania programu jest zapobieżenie możliwościom aktualizacji stanu maszyny przez rozkazy, które nie powinny być wykonywane. Tak więc wyniki wykonania wstępnie pobranego tekstu, występującego kolejno za wykonanym rozkazem skoku, powinny być anulowane. Można zapisać to w postaci następujących reguł:
1. Rozpocznij wykonywanie rozkazu składanego, zawierającego dowolny rozkaz skoku wewnątrz rozkazu składanego.
2. Jeśli rozkaz składany rzeczywiście zawiera rozkaz skoku, nie zezwól, aby dowolny rozkaz występujący za rozkazem skoku, czy to wewnątrz tego samego rozkazu składanego co rozkaz skoku czy też następnym rozkazie składanym lub rozkazie prostym, zmodyfikował stan maszyny.
3. Jeśli rozkaz skoku zostanie wykonany anuluj wyniki działania każdego rozkazu występującego za wykonanym rozkazem skoku. Nie anuluj jednak wykonania rozkazu, do którego wystąpił skok.
CYKLE ROZKAZU
1 CYKL 2 CYKL 3 CYKL cy4kl 5 CYKL 6 , CYKL 1
JEDNOSTKA FUNKCJONALNA A s 1 1 S CS CS CS i 1 1 s * s !
JEDNOSTKA FUNkcjonalna B | - i _ 1 CS cs 1 1 1
JEDNOSTKA ^Nkcjonalna C 1 ί cs 1 s CS 1 - ! 1
JEDNOSTKA FUNKCJONALNA 0 1 1 ! ί CS 1 1 cs 1 — i 1 J
STRUMIEŃ ROZKAZÓW SKŁADANYCH
C-fOZKAZY SKŁADANE
S-ROZKAZ SKALARNY
Cs=SKŁADANY ROZKAZ SKALARNY
T-ZNACZNIK ROZKAZU SKŁADANEGO f| <S,2 (WYKONANIE XONOPROCESOROWE I
Fig.3
Fig. 4A
Fig.4B
Fig. 5
PROGRAM W «ZYKU ASEMBLEROWYM
PROGRAM Z ROZKAZAMI \
a \
>5 \
MOŻLIWE KOMBINACJE SKŁADANIA
Fig. 7
PAWEC
Fig. 8
PROGRAM W JĘZYKU ASEMBLERA > 1 1 2
PROGRAM
Z ROZKAZAMI SKŁADANYMI mV 'S 1
ZESPÓŁ
SKŁAOANIA
EIG9 m2y
η ', 1 n 2
FIG.1O
B= ROZKAZ SKOKU
Departament Wydawnictw UP RP. Nakład 90 egz. Cena 1,00 zl.

Claims (6)

  1. Zastrzeżenia patentowe
    1. Układ komputerowy do przetwarzania rozkazów zawierający pamięć główną, do której jest dołączony adapter wejścia/wyjścia, pamięć podręczną rozkazów dołączoną do pamięci głównej oraz jednostkę pobierania i wysyłania rozkazów dołączoną do pamięci podręcznej rozkazów, przy czym jednostka pobierania i wysyłania rozkazów jest dołączona poprzez dekoder do jednostek funkcjonalnych, znamienny tym, że zawiera zespół składania (70) rozkazów, którego wejście jest dołączone do wyjścia adaptera wejścia/wyjścia (41) a wyjście jest dołączone do wejścia pamięci głównej (46).
  2. 2. Układ komputerowy do przetwarzania rozkazów zawierający pamięć główną, do której jest dołączony adapter wejścia/wyjścia, pamięć podręczną rozkazów dołączoną do pamięci głównej oraz jednostkę pobierania i wysyłania rozkazów dołączoną do pamięci podręcznej rozkazów, przy czym jednostka pobierania i wysyłania rozkazów jest dołączona poprzez dekoder do jednostek funkcjonalnych, znamienny tym, że zawiera zespół składania (70) rozkazów, którego wejście jest dołączone do wyjścia adaptera wejścia/wyjścia (41) a wyjście jest dołączone do wejścia pamięci głównej (46), oraz jednostkę sterującą (62) pamięci podręcznej, której wejście jest dołączone do wyjścia jednostki pobierania i wysyłania (50) rozkazów a wyjście jest dołączone do wejścia pamięci podręcznej (48) rozkazów.
  3. 3. Układ według zastrz. 2, znamienny tym, że do wyjścia jednostki sterującej (62) pamięci podręcznej jest dołączony także zespół zarządzania (64) pamięcią, którego wyjście jest dołączone do wejścia pamięci głównej (46).
  4. 4. Układ komputerowy do przetwarzania rozkazów zawierający pamięć główną, do której jest dołączony adapter wejścia/wyjścia, pamięć podręczną rozkazów dołączoną do pamięci głównej oraz jednostkę pobierania i wysyłania rozkazów dołączoną do pamięci podręcznej rozkazów, przy czym jednostka pobierania i wysyłania rozkazów jest dołączona poprzez dekoder do jednostek funkcjonalnych, znamienny tym, że zawiera zespół składania (72,137) rozkazów, którego wejście jest dołączone do wyjścia pamięci głównej (46), (136), a wyjście jest dołączone do wejścia pamięci podręcznej (48,138) rozkazów.
  5. 5. Układ komputerowy do przetwarzania rozkazów zawierający pamięć główną, do której jest dołączony adapter wejścia/wyjścia, pamięć podręczną rozkazów dołączoną do pamięci głównej oraz jednostkę pobierania i wysyłania rozkazów dołączoną do pamięci podręcznej rozkazów, przy czym jednostka pobierania i wysyłania rozkazów jest dołączona poprzez dekoder do jednostek funkcjonalnych, znamienny tym, że zawiera zespół składania (72,137) rozkazów, którego wejście jest dołączone do wyjścia pamięci głównej (46,136), a wyjście jest dołączone do wejścia pamięci podręcznej (48, 138) rozkazów, oraz jednostkę sterującą (62, 144) pamięci podręcznej, której wejście jest dołączone do wyjścia jednostki pobierania i wysyłania (5®, 142) rozkazów a wyjście jest dołączone do wejścia pamięci podręcznej (48,138) rozkazów.
  6. 6. Układ według zastrz. 5, znamienny tym, że do wyjścia jednostki sterującej (62,144) pamięci podręcznej jest dołączony także zespół zarządzania (64,145) pamięcią, którego wyjście jest dołączone do wejścia pamięci głównej (46,136).
PL91293182A 1990-05-04 1991-03-29 Uklad komputerowy do przetwarzania rozkazów PL PL166513B1 (pl)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US51938290A 1990-05-04 1990-05-04
US51938490A 1990-05-04 1990-05-04
US07/543,458 US5197135A (en) 1990-06-26 1990-06-26 Memory management for scalable compound instruction set machines with in-memory compounding
US07/642,011 US5295249A (en) 1990-05-04 1991-01-15 Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
PCT/US1991/002037 WO1991017496A1 (en) 1990-05-04 1991-03-29 System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction

Publications (2)

Publication Number Publication Date
PL293182A1 PL293182A1 (en) 1992-10-19
PL166513B1 true PL166513B1 (pl) 1995-05-31

Family

ID=46201961

Family Applications (1)

Application Number Title Priority Date Filing Date
PL91293182A PL166513B1 (pl) 1990-05-04 1991-03-29 Uklad komputerowy do przetwarzania rozkazów PL

Country Status (7)

Country Link
EP (2) EP0545927B1 (pl)
JP (2) JPH0680489B2 (pl)
AT (1) ATE194236T1 (pl)
DE (1) DE69132271T2 (pl)
HU (1) HU216990B (pl)
PL (1) PL166513B1 (pl)
WO (2) WO1991017496A1 (pl)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0728639A (ja) * 1993-07-13 1995-01-31 Nec Corp マイクロプロセッサ
US5619665A (en) * 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US7840717B2 (en) * 2008-02-14 2010-11-23 International Business Machines Corporation Processing a variable length device command word at a control unit in an I/O processing system
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator
US11334491B1 (en) * 2020-11-18 2022-05-17 Centaur Technology, Inc. Side cache array for greater fetch bandwidth

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
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
US4586127A (en) * 1982-11-03 1986-04-29 Burroughs Corp. Multiple control stores for a pipelined microcontroller
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
US4574348A (en) * 1983-06-01 1986-03-04 The Boeing Company High speed digital signal processor architecture
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPS60101644A (ja) * 1983-11-07 1985-06-05 Masahiro Sowa ノイマン型コンピュータプログラムを実行するコントロールフローコンピュータ
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
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
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置

Also Published As

Publication number Publication date
HUT60048A (en) 1992-07-28
EP0481031A4 (en) 1993-01-27
PL293182A1 (en) 1992-10-19
EP0481031A1 (en) 1992-04-22
WO1991017495A1 (en) 1991-11-14
HU9200024D0 (en) 1992-03-30
JPH04506878A (ja) 1992-11-26
WO1991017496A1 (en) 1991-11-14
EP0545927A4 (en) 1993-04-26
EP0545927A1 (en) 1993-06-16
JPH04505823A (ja) 1992-10-08
JPH0680489B2 (ja) 1994-10-12
JPH0679273B2 (ja) 1994-10-05
DE69132271T2 (de) 2000-12-21
HU216990B (hu) 1999-10-28
ATE194236T1 (de) 2000-07-15
EP0545927B1 (en) 2000-06-28
DE69132271D1 (de) 2000-08-03

Similar Documents

Publication Publication Date Title
US5502826A (en) System and method for obtaining parallel existing instructions in a particular data processing configuration by compounding instructions
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
KR100260859B1 (ko) 초장 명령어 워드 프로그램의 오브젝트-코드 호환가능 표현
US5504932A (en) System for executing scalar instructions in parallel based on control bits appended by compounding decoder
US11829320B2 (en) Memory network processor
EP0996057B1 (en) Data processor with an instruction unit having a cache and a ROM
US7383421B2 (en) Cellular engine for a data processing system
JP5145809B2 (ja) 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
CN1158597C (zh) 超标量或超长指令字计算机中选择下一指令的方法与装置
EP0454984A2 (en) General purpose compounding technique for instruction-level processors
PL165585B1 (pl) Uklad do równoleglego przetwarzania instrukcji w komputerze jednoprocesorowym PL
US11226821B2 (en) Computer processor employing operand data with associated meta-data
US6950926B1 (en) Use of a neutral instruction as a dependency indicator for a set of instructions
US20060253654A1 (en) Processor and method for executing data transfer process
JPH05250499A (ja) データフロー計算機
PL166513B1 (pl) Uklad komputerowy do przetwarzania rozkazów PL
JP2828219B2 (ja) オブジェクト・コード互換性を与える方法、オブジェクト・コード互換性並びにスカラ・プロセッサ及びスーパスカラ・プロセッサとの互換性を与える方法、ツリー命令を実行するための方法、データ処理システム
JP2886838B2 (ja) スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
EP0825529A2 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
US20250377889A1 (en) Vector processor and method of executing arithmetic operation in vector processor
CN118475912A (zh) 用于处理未对准数据的处理设备
Dobrovolskyi Microprocessor with tagged registers realizing parallelism
JPH0683623A (ja) キャッシュに対する複合化プリプロセッサ方式

Legal Events

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

Effective date: 20070329