PL177392B1 - Sposób przetwarzania informacji - Google Patents

Sposób przetwarzania informacji

Info

Publication number
PL177392B1
PL177392B1 PL94316566A PL31656694A PL177392B1 PL 177392 B1 PL177392 B1 PL 177392B1 PL 94316566 A PL94316566 A PL 94316566A PL 31656694 A PL31656694 A PL 31656694A PL 177392 B1 PL177392 B1 PL 177392B1
Authority
PL
Poland
Prior art keywords
instruction
execution
processor
instructions
inst
Prior art date
Application number
PL94316566A
Other languages
English (en)
Other versions
PL316566A1 (en
Inventor
Seungyoon P. Song
Original Assignee
Ibm
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ibm filed Critical Ibm
Publication of PL316566A1 publication Critical patent/PL316566A1/xx
Publication of PL177392B1 publication Critical patent/PL177392B1/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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)

Abstract

1. Sposób przetwarzania informacji w systemie przetwarzania informacji z równo- czesnym wykonywaniem instrukcji, w któ- rym wysyla sie konkretna instrukcje do ukladów wykonawczych systemu przetwa- rzania dla jej wykonania oraz, po wyslaniu tej konkretnej instrukcji, wysyla sie do ukladów wykonawczych szeregowy in- strukcje wykonawcza, przy czym szerego- wa instrukcja wykonawcza jest instrukcja wykonywana tylko w sposób uporzadko- wany w jej zaprogramowanej sekwencji, znamienny tym, ze wysyla sie szeregowa instrukcje wykonawcza przed zakoncze- niem wykonania danej konkretnej instrukcji i nastepnie opóznia sie wykonanie wyslanej szeregowej instrukcji wykonawczej przy- najmniej do zakonczenia wykonania danej konkretnej instrukcji. ( 1 2 ) OPIS PATENTOWY (1 9 ) PL FIG 1 PL PL PL

Description

Przedmiotem wynalazku jest sposób przetwarzania informacji.
Znane superskalarne systemy przetwarzania informacji zawierają wielokrotne jednostki wykonawcze do równoczesnego wykonywania wielokrotnych instrukcji, przy czym często instrukcje są wykonywane nie po kolei względem ich zaprogramowanych sekwencji w strumieniu instrukcji. Jednak jedna lub więcej wybranych instrukcji mogłoby być poddanych stawieniu seryjnemu, gdzie wykonywanie szeregowych instrukcji jest dokonywane jedynie w kolejności ich zaprogramowanej sekwencji. Zgodnie ze znana metodą, tego rodzaju szeregowa instrukcja wykonawcza ujemnie oddziałuje na wykonanie później pozostałych instrukcji w sekwencji programowej.
177 392
Istotą sposobu przetwarzania informacji, według wynalazku, w systemie przetwarzania informacji z równoczesnym wykonywaniem instrukcji, w którym wysyła się konkretną instrukcję do układów wykonawczych systemu przetwarzania dla jej wykonania oraz, po wysłaniu tej konkretnej instrukcji, wysyła się do układów wykonawczych szeregową instrukcję wykonawczą, przy czym szeregowa instrukcja wykonawcza jest instrukcją wykonywaną tylko w sposób uporządkowany w jej zaprogramowanej sekwencji, jest to, że wysyła się szeregową instrukcję wykonawczą przed zakończeniem wykonania danej konkretnej instrukcji i następnie opóźnia się wykonanie wysłanej szeregowej instrukcji wykonawczej przynajmniej do zakończenia wykonania danej konkretnej instrukcji.
Korzystnie, wysyła się, przed zakończeniem danej konkretnej instrukcji a po wysłaniu szeregowej instrukcji wykonania, dodatkową instrukcję dla układów wykonawczych.
Korzystnie, inicjuje się wykonanie instrukcji dodatkowej przed zakończeniem wykonania danej konkretnej instrukcji.
Korzystnie, w trakcie wysyłania szeregowej instrukcji wykonawczej wysyła się szeregową instrukcję wykonawczą do stanowiska rezerwacji w układach wykonawczych.
Korzystnie, w trakcie wysyłania szeregowej instrukcji wykonawczej wyprowadza się informację sygnalizacyjną do układów wykonawczych dla eliminacji wykonania wysłanej szeregowej instrukcji wykonawczej przez układy wykonawcze.
Korzystnie, wyprowadza się dodatkową informację sygnalizacyjną do układów wykonawczych dla zainicjowania wykonania wysłanej szeregowej instrukcji wykonawczej przez układy wykonawcze w odpowiedzi na zakończenie wykonania danej konkretnej instrukcji.
Korzystnie, szeregową instrukcję wykonawczą nie wykonuje się spekulatywnie.
Korzystnie, wynik wykonania szeregowej instrukcji wykonawczej wpisuje się bezpośrednio w lokację pamięci bez pośredniego przechowywania w buforze przemianowywania.
Korzystnie, wykonanie szeregowej instrukcji wykonawczej opóźnia się do momentu, gdy cała informacja o jej argumentach operacji źródłowych stanie się dostępna i ważna.
Korzystnie, wykonanie szeregowej instrukcji wykonawczej określa się przez przynajmniej jeden nie zgłaszany z wyprzedzeniem argument operacji źródłowej.
Zaletą rozwiązania według wynalazku jest to, że wykonanie szeregowej instrukcji wykonawczej mniej niekorzystnie oddziałuje później na inne instrukcje w sekwencji programowej.
Sposób według wynalazku objaśniono w oparciu o przykład wykonania przedstawiony na rysunku, na którym fig. 1 przedstawia schemat blokowy procesora do przetwarzania informacji, fig. 2 - schemat blokowy jednostki wykonawczej, ustalonej pozycji procesora z fig. 1, fig. 3 - schemat blokowy jednostki sekwencyjnej procesora z fig. 1, fig. 4 - organizację bufora przyporządkowania jednostki sekwencyjnej z fig. 3, fig. 5a-b przedstawiaaą różne stopnie instrukcji przetwarzanych przez procesor z fig. 1, fig. 6 przedstawia organizację bufora przyporządkowania procesora z fig. 1, fig. 7 - różne stopnie czterech instrukcji z fig. 6, fig. 8a-d przedstawiają organizację buforów zmiany nazwy procesora z fig. 1, fig. 9 przedstawia różne stopnie czterech instrukcji w sytuacji bez znaczącej cechy, fig. 10a-d przedstawiają organizację buforów zmiany nazwy procesora według fig. 9, fig. 11 przedstawia schemat blokowy odmiany buforów zmiany nazwy procesora z fig. 1, fig. 12a-c przedstawiają organizację bufora przyporządkowania procesora z fig. 1, fig. 13 przedstawia różne stopnie pięciu instrukcji z fig. 12a-c, fig. 14a-f przedstawiają organizację buforów zmiany nazwy procesora z fig. 1, fig. 15 przedstawia różne stopnie pięciu instrukcji z fig. 12a-c w sytuacji bez znaczącej cechy zaś fig. 16a-h przedstawiają organizację buforów zmiany nazwy procesora z fig. 1 przy różnych cyklach przetwarzania instrukcji zilustrowanych na fig. 15.
Figura 1 przedstawia schemat blokowy procesora 10 do przetwarzania informacji. Procesor 10 jest pojedynczym, scalonym mikroprocesorem superskalarnym. Zgodnie z tym, jak zostanie to omówione poniżej, procesor 10 zawiera różne jednostki, rejestry, bufory, pamięci i inne sekcje, z których wszystkie są wykonane w układzie scalonym. Również w zalecanym wykonaniu procesor 10 działa zgodnie z technikami komputera o zredukowanej liście rozkazowej („RISC”). Jak pokazano na fig. 1, szyna systemowa 11 jest dołączona do jednostki interfejsu 12 szyny („BIU”) procesora 10. Jednostka 12 steruje przenoszeniem informacji pomiędzy procesorem 10 i szyną systemową 11.
177 392
Jednostka BIU 12 jest dołączona do pamięci podręcznej 14 instrukcji i do pamięci podręcznej 16 danych procesora 10. Pamięć podręczna 14 instrukcji daje na wyjściu instrukcje dla jednostki sekwencyjnej 18. W odpowiedzi na takie instrukcje z pamięci podręcznej 14 instrukcji, jednostka sekwencyjna 18 daje na wyjściu selekcyjnie instrukcję dla innych obwodów wykonawczych procesora 10.
W uzupełnieniu do jednostki sekwencyjnej 18, w zalecanym wykonaniu obwód wykonawczy procesora 10 zawiera wielokrotne jednostki wykonawcze, mianowicie jednostkę rozgałęzienia 20, jednostkę A ustalonej pozycji („FXUA”) 22, jednostkę B ustalonej pozycji („FXUB”) 24, jednostkę złożonej ustalonej pozycji („CEXU”) 26, jednostkę obciążenia/pamiętania („LSU”) 28 i jednostkę pływającej pozycji („FPU”) 30. Jednostka FXUA 22, jednostka FXUB 24, jednostka CFXU 26 i jednostka LSU 28 odbierają na wejściu ich informację źródłową z rejestrów architektonicznych ogólnego zastosowania („GPR”) 32 i buforów zmiany nazwy 34 ustalonej pozycji. Ponadto jednostka FXUA 22 i jednostka FXUB 24 odbierają na wejściu bit przenoszenia z rejestru („CA”) 42 bitu przenoszenia. Jednostka FXUA 22, jednostka FXUB 24, jednostka CFXU 26 i jednostka LSU 28 dają na wyjściu wyniki (informację o argumentach operacji przeznaczenia) w celu pamiętania na wybranych wejściach w buforach zmiany nazwy 34 ustalonej pozycji. Również jednostka CFXU 26 ma na wejściach i wyjściach informację o argumentach, operacji źródłowych i informację o argumentach przeznaczenia, skierowane do i z rejestrów specjalnego przeznaczenia („SPR”) 40.
Jednostka FPU 30 ma na wejściach informację o argumentach operacji źródłowych z rejestrów architektonicznych pozycji pływającej („FPR”) 36 i buforów zmiany nazwy 38 pozycji pływającej. Jednostka FPU 30 daje na wyjściach wyniki (informację o argumentach operacji przeznaczenia) jej operacji dla pamiętania na wybranych wejściach w buforach zmiany nazwy 38 pozycji pływającej.
W odpowiedzi na instrukcję obciążenia jednostka LSU 28 ma na wejściach informację z pamięci podręcznej 16 danych i kopiuje taką informację do wybranych buforów zmiany nazwy 34 i 38. Jeżeli taka informacja nie jest zapamiętana w pamięci podręcznej 16 danych, wówczas pamięć podręczna 16 danych ma na wejściach (poprzez jednostkę BlU 12 i szynę systemową 11) taką informację z pamięci systemowej 39 dołączonej do szyny systemowej 11. Ponadto pamięć 16 danych jest zdolna dawać na wyjściu (poprzez jednostkę BIU 12 i szynę systemową 11) informację z pamięci podręcznej 16 danych dla pamięci systemowej 39 dołączonej do szyny systemowej 11. W odpowiedzi na instrukcję pamiętania, jednostka LSU 28 ma na wejściu informację z wybranej jednostki GPR 32 i FPR 36 i kopiuje taką informację do pamięci podręcznej 16 danych.
Jednostka sekwencyjna 18 ma na wejściach i wyjściach informację do i z jednostek GPR 32 i FPR 36. Z jednostki sekwencyjnej 18 jednostka rozgałęzienia 20 daje instrukcję i sygnały wskazujące obecny stan procesora 10. W odpowiedzi na takie instrukcje i sygnały jednostka rozgałęzienia 20 daje na wyjściu (dla jednostki sekwencyjnej 18) sygnały wskazujące, że właściwa pamięć adresuje pamiętanie sekwencji instrukcji w celu wykonania przez procesor 10. W odpowiedzi na takie sygnały z jednostki rozgałęzienia 20, jednostka sekwencyjna 18 daje wskazaną sekwencję instrukcji z pamięci podręcznej 14 instrukcji. Jeżeli jedna lub więcej sekwencji instrukcji nic jest zapamiętanych w pamięci podręcznej instrukcji 14, wówczas pamięć podręczna 14 instrukcji daje (poprzez jednostkę BlU 12 i szynę systemową 11) takie instrukcje z pamięci systemowej 39 dołączonej do szyny systemowej 11.
W odpowiedzi na wejście instrukcji z pamięci podręcznej 14 instrukcji, jednostka sekwencyjna 18 wysyła selekcyjnie instrukcje do wybranych jednostek wykonawczych 20, 22, 24, 26, 28 i 30. Każda jednostka wykonawcza wykonuje jedną lub więcej instrukcji ze szczególnej klasy instrukcji. Dla przykładu, jednostka FXUA 22 i FXUB 24 wykonuje pierwszą klasę operacji matematycznych ustalonej pozycji na argumentach operacji źródłowych, takich jak dodawanie, odejmowanie, logiczne I, logiczne LUB i logiczne ALBO. Jednostka CFXU 26 wykonuje drugą klasę operacji ustalonej pozycji na argumentach operacji źódłowych, takie jak mnożenie i dzielenie ustalonej pozycji. Jednostka FPU 30 wykonuje operacje pozycji zmiennoprzecinkowej na argumentach operacji źródłowych, takich ja mnożenie i dzielenie zmiennoprzecinkowe.
177 392
Wówczas, gdy informacja jest zapamiętana w wybranym buforze zmiany nazwy 34, taka informacja jest związana z lokacją pamięciową (np. jedną z jednostek GPR 32 lub rejestrem CA 42) jako wyszczególnioną przez instrukcję, której jest przyporządkowany wybrany bufor zmiany nazwy. Informacja zapamiętana w wybranym buforze zmiany nazwy 34 jest kopiowana do odpowiedniej jednostki GPR 32 (lub rejestru CA 42) w odpowiedzi na sygnały z jednostki sekwencyjnej 18. Jak zostanie omówione dalej w połączeniu z fig. 6-10, jednostka sekwencyjna 18 kieruje takie kopiowanie informacji zapamiętanej w wybranych buforach zmiany nazwy 34 w odpowiedzi na zakończenie instrukcji po wytworzeniu informacji. Takie kopiowanie jest nazywane zapisem zwrotnym.
Gdy informacja jest zapamiętana w wybranym buforze zmiany nazwy 38, taka informacja jest związana z jedną jednostką FPR 36. Informacja zapamiętana w wybranym buforze zmiany nazwy 38 jest kopiowana do odpowiedniej jednostki FPR 36 w odpowiedzi na sygnały z jednostki sekwencyjnej 18. Jednostka sekwencyjna 18 kieruje takie kopiowanie informacji zapamiętanej w wybranych buforach zmiany nazwy 38 w odpowiedzi na zakończenie instrukcji po wytwarzaniu informacji.
Procesor 10 osiąga dobre wyniki poprzez przetwarzanie wielokrotnych instrukcji równocześnie w różnych jednostkach wykonawczych 20, 22, 24, 26, 28 i 30. Zgodnie z tym każda instrukcja jest przetwarzana jako sekwencja stopni, każdy wykonywany równolegle w stopniach innych instrukcji. Taka technika jest nazywana trybem potokowym. W zalecanym wykonaniu instrukcja jest zwykle przetwarzana w sześciu stopniach, mianowicie ładowanie, dekodowanie, wysyłanie, wykonywanie, kończenie i zapis zwrotny.
W stopniu ładowania jednostka sekwencyjna 18 daje selektywnie na wejściach (z pamięci podręcznej 14 instrukcji) jedną lub więcej instrukcji z jednego lub więcej adresów pamięci pamiętających sekwencje instrukcji omawianych dalej w połączeniu z jednostką rozgałęzienia 20 i jednostką sekwencyjną 18.
W stopniu dekodowania jednostka sekwencyjna 18 dekoduje do czterech ładowanych instrukcji.
W stopniu wysyłania jednostka sekwencyjna 18 wysyła selekcyjnie do czterech dekodowanych instrukcji do wybranych (w odpowiedzi na dekodowanie w stopniu dekodowania) jednostek wykonawczych 20, 22, 24, 26, 28 i 30 po zachowaniu wejścia bufora zmiany nazwy dla każdego wyniku wysyłanej instrukcji (informacji o argumentach operacji przeznaczenia). W stopniu wysyłania informacja argumentu operacji jest dostarczana do wybranej jednostki wykonawczej dla wysyłania instrukcji. Procesor 10 wysyła instrukcje w kolejności zaprogramowanej sekwencji.
W stopniu wykonywania jednostki wykonawcze wykonują wysłane instrukcje i dają na wyjściu wyniki (informację o argumentach operacji przeznaczenia) ich operacji dla pamiętania wybranych wejść w buforach zmiany nazwy 34 i buforach zmiany nazwy 38, co zostanie omówione dalej. W ten sposób procesor 10 jest zdolny wykonywać instrukcje nie po kolei względem zaprogramowanej sekwencji.
W stopniu kończenia jednostka sekwencyjna 18 wskazuje, że instrukcja jest zakończona, co omówiono dalej w połączeniu z fig. 3-4. Procesor 10 kończy zatem instrukcje w kolejności zaprogramowanej sekwencji.
W stopniu zapisu zwrotnego jednostka sekwencyjna 18 kieruje kopiowanie informacji z buforów zmiany nazwy 34 i 38 do jednostek GPR 32 i FPR 36. Jednostka sekwencyjna 18 kieruje takie kopiowanie informacji zapamiętanej w wybranym buforze zmiany nazwy, jak zostanie omówione dalej w połączeniu z fig. 6 -10. Podobnie w stopniu zapisu zwrotnego poszczególnej instrukcji procesor 10 aktualizuje dane w stanach architektonicznych w odpowiedzi na poszczególną instrukcję. Procesor 10 przetwarza poszczególne stopnie zapisu zwrotnego instrukcji w kolejności zaprogramowanej sekwencji. Jak zostanie to omówione dalej w połączeniu z fig. 6-10, procesor 10 korzystnie dobiera stopień kończenia instrukcji i stopień zapisu zwrotnego w szczególnych sytuacjach.
Każda instrukcja wymaga jednego cyklu urządzenia, aby zakończyć każdy ze stopni przetwarzania instrukcji. Pomimo tego niektóre instrukcje (np. instrukcje złożonej, ustalonej pozycji, wykonywane przez jednostkę CFXU 26) mogą wymagać więcej niż jednego cyklu.
177 392
Zgodnie z tym, może wystąpić zmienne opóźnienie pomiędzy poszczególnym wykonaniem instrukcji i stopniami kończenia w odpowiedzi na zmianę czasu wymaganego do zakończenia poprzednich instrukcji.
Figura 2 przedstawia schemat blokowy jednostki FXUA 22 procesora 10. Jednostka FXUA 22 zawiera stanowiska rezerwacji oznaczone ogólnie przez 50a i 50b. Podobnie każda jednostka rozgałęzienia 20, jednostka FXUB 24, jednostka CFXU 26, jednostka LSU 28 i jednostka FPU 30 ma poszczególne stanowiska rezerwacji. Dla jasności operacja jest omawiana poniżej jedynie dla jednostki FXUA 22 i jej stanowiska rezerwacji, jak tworzenie przykładu operacji innych jednostek wykonawczych i ich poszczególnych stanowisk rezerwacji.
Każde ze stanowisk rezerwacji 50a i 50b jest zdolne do pamiętania informacji dla poszczególnych instrukcji wysyłanych z jednostki sekwencyjnej 18 dla wykonania przez jednostkę FXUA 22. Każde stanowisko rezerwacji zawiera poszczególne pole rejestracji przeznaczenia, pole A argumentu operacji, pole B argumentu operacji i pole kodu operacyjnego. Ponadto każde stanowisko rezerwacji zawiera ponadto poszczególne pole dopuszczenia wykonania („EOK”).
W polu rejestru przeznaczenia stanowisko rezerwacji identyfikuje co najmniej jeden rejestr przeznaczenia (wyszczególniony przez jednostkę sekwencyjną 18) dla rezerwacji poszczególnej instrukcji stanowiska. Podobnie w poszczególnym argumencie A operacji i polach B argumentów operacji, stanowisko rezerwacji pamięta informację o argumentach operacji źródłowej (z jednostki PGR 32 buforów zmiany nazwy 34, jednostki FXUB 24, jednostki CFXU 26 lub jednostki LSU 28) dla rezerwacji poszczególnej instrukcji stanowiska. W polu kodu operacyjnego stanowisko rezerwacji pamięta kod operacyjny (wyszczególniony przez jednostkę sekwencyjną 18) wskazujący operacje wykonywaną przez jednostkę FXUA 22 na informacji o argumentach operacji źródłowej w odpowiedzi na poszczególną instrukcję stanowiska rezerwacji.
W odpowiedzi na sygnały z logicznego układu sterującego 56, logiczny układ wykonawczy 54 daje na wejściach informację o argumentach operacji źródłowej z argumentu A operacji stanowiska rezerwacji i pól B argumentu operacji oraz wykonuje operację (wskazywaną przez kod operacyjny zapamiętany przez stanowisko rezerwacji). Informacja uzyskana z takiej operacji jest podawana na wyjście z logicznego układu wykonawczego 54 do buforów zmiany nazwy 34, jednostki FXUB 24, jednostki CFXU 26 i jednostki LXU 28. Taka informacja jest pamiętana w wybranym z buforów zmiany nazwy 34. W odpowiedzi na rejestr przeznaczenia identyfikowany przez wyjście multipleksera 58, zapamiętana informacja jest związana (w wybranym buforze zmiany nazwy) z jedną jednostką GPR 32.
Stanowisko rezerwacji pamięta następnie informację EOK wyszczególnioną przez jednostkę sekwencyjną 18 w jego polu EOK. Korzystnie taka informacja EOK przystosowuje się do pewnych sytuacji, w których procesor 10 opóźnia wykonanie wykonawczych instrukcji szeregowych. Wykonanie ustawienia w szeregu jest techniką opóźniania wykonania· instrukcji w wielokrotnym trybie potokowym dla procesorów wykonawczych nie po kolei, takich jak procesor 10. W pierwszej sytuacji, w której procesor 10 opóźnia wykonanie wykonawczych instrukcji szeregowych, instrukcja nie ma być wykonywana spekulatywnie. W drugiej sytuacji, w której procesor 10 opóźnia wykonanie wykonawczej instrukcji szeregowej, instrukcja jest opóźniana aż cała informacja o argumentach operacji źródłowej stanie się dostępna i ważna.
Odnośnie pierwszej sytuacji (w której instrukcja nie ma być wykonywana spekulatywnie), procesor 10 zwykle wykonuje instrukcje spekulatywne tak, że instrukcje są wykonywane nie po kolei względem zaprogramowanej sekwencji w strumieniu instrukcji. Zgodnie z tym wyniki instrukcji (informacja o argumentach operacji przeznaczenia) nie muszą, być dostępne w kolejności zaprogramowanej sekwencji. Jednak procesor 10 zapisuje wyniki instrukcji z powrotem do rejestrów architektoniczych (np. jednostki GPR 32 i jednostki FPR 36) w kolejności zaprogramowanej sekwencji instrukcji. Z tego powodu procesor 10 zawiera bufory zmiany nazwy 34 i 38 dla pośredniego pamiętania wyników instrukcji aż do właściwego momentu (tj. zakończenia wykonywania wszystkich poprzednich instrukcji bez warunku wyjątkowych) dla zapisu zapamiętanych pośrednio wyników z powrotem w rejestrach architektonicznych.
177 392
Pomimo tego, pewne instrukcje działają na jednostki SPR 40 (fig. 1), gdzie wyniki instrukcji są wpisywane bezpośrednio do jednostek SPR 40 bez pośredniego pamiętania w buforach zmiany nazwy. Przykładem takiej instrukcji jest instrukcja Move To, w której jednostka CFXU 26 przesuwa informację do jednej z jednostek SPR 40 z jednej z jednostek GPR 32. Jak pokazano na fig. 1, jednostka CFXU 26 jest dołączona do jednostek SPR 40. Instrukcja Move To natychmiast aktualizuje jedną z jednostek SPR 40. W innym przykładzie wynik instrukcji Store jest zapisany bezpośrednio w lokacji pamięci podręcznej 16 danych bez pośredniego pamiętania w buforach zmiany nazwy.
Procesor 10 nie wykonuje spekulatywnie takich instrukcji (gdzie wyniki instrukcji są zapisane bezpośrednio do rejestru architektonicznego lub lokacji pamięci bez pamiętania pośredniego w buforach zmiany nazwy), tak, że procesor 10 jest zdolny do uzyskania dokładnych przerwań i dokładnych wyjątków. Ponadto, jeżeli wyniki instrukcji są wpisane bezpośrednio do rejestru architektonicznego lub lokacji pamięci bez pośredniego pamiętania w buforach zmiany nazwy, takie instrukcje są przetwarzane bez stopnia zapisu zwrotnego. Zgodnie z tym, w celu zapewnienia zakończenia w kolejności i zapisu zwrotnego, procesor 10 opóźnia wykonanie takich instrukcji aż do zakończenia wszystkich poprzednich instrukcji. Odnośnie drugiej sytuacji, gdzie instrukcja jest opóźniana podczas wykonywania, aż cała jej informacja argumentu operacji źródłowej stanie się dostępna i ważna, fig. 3, stanowisko rezerwacji zapamiętuje czasowo informację dla poszczególnej instrukcji, której informacja o argumentach operacji źródłowej nie jest dostępna w czasie wysyłania instrukcji z jednostki sekwencyjnej 18. W odpowiedzi na informację o argumentach operacji źródłowej stającej się dostępną z jednostki wykonawczej, stanowisko rezerwacji daje na wejściu i pamięta taka informację o argumentach operacji źródłowej. We właściwym momencie stanowisko rezerwacji zgłasza z wyprzedzeniem taka informację o argumentach operacji źródłowej dla logicznego układu wykonawczego 54.
Większość instrukcji określa jedną lub więcej jednostek GPR 32 i FPR 36 jako argument operacji źródłowej. Zgodnie z tym stanowiska rezerwacji zawierają układ do zgłaszania z wyprzedzeniem informacji z jednostek wykonawczych.
Pomimo tego stanowiska rezerwacji nie zawierają układu do zgłaszania z wyprzedzeniem informacji z innego rodzaju argumentu operacji źródłowej, takiego jak rejestr Ca 42 lub jednostka SPR 40. Jest tak dlatego, że parametry takiego układu nie są dostosowane do częstotliwości instrukcji, które określają takie zgłaszane z wyprzedzeniem argumenty operacji źródłowej. Zamiast tego, procesor 10 opóźnia wykonanie instrukcji określonych takimi zgłaszanymi z wyprzedzeniem argumentami operacji źródłowej przynajmniej do zakończenia wszystkich poprzednich instrukcji. W odpowiedzi na zakończenie wszystkich poprzednich instrukcji, nie zgłaszane z wyprzedzeniem argumenty operacji źródłowej są odczytywane z określonego rejestru architektonicznego (np. jednostki SPR 40). Przykładami takich instrukcji są: (1) rozszerzona instrukcja arytmetyczna, która odczytuje rejestr CA 42 i (2) instrukcji Move From, która przesuwa informację z jednej jednostki SPR 40 do jednej jednostki GPR 32.
Podsumowując, procesor 10 opóźnia wykonanie wykonawczej instrukcji szeregowej przynajmniej do zakończenia wszystkich poprzednich instrukcji w dwóch sytuacjach. W pierwszej sytuacji instrukcja nie ma być wykonana spekulatywnie. W drugiej sytuacji instrukcja określa co najmniej jeden argument operacji źródłowej dla której procesor 10 nie zawiera układu zgłaszania z wyprzedzeniem. Korzystnie takie sytuacje są przystosowane przez jednostkę sekwencyjną 18, określający, informację EOK pamiętaną w stanowisku rezerwacji.
Jeżeli instrukcja jest poddawana wykonaniu z ustawieniem w szeregu, wówczas jednostka sekwencyjna 18 zeruje bit EOK (w informacji EOK zapamiętanej w polu EOK stanowiska rezerwacji) do logicznego 0, gdy instrukcja jest wysyłana do jednostki FXUA 22. Przez zerowanie bitu EOK do logicznego 0, jednostka sekwencyjna zapobiega wykonaniu przez jednostkę FXUA 22 instrukcji, nawet jeżeli instrukcja jest inaczej gotowa do wykonania. Zgodnie z tym jednostka FXUA 22 wykonuje taką wykonawczą instrukcje szeregową tylko w odpowiedzi na jednostkę sekwencyjną 18 wysyłającą sygnał przez linię 60, co omówiono poniżej.
W wyniku porównania, jeżeli instrukcja nie jest poddawana wykonaniu z ustawieniem w szeregu, wówczas jednostka sekwencyjna 18 ustawia bit EOK na logicznej 1, gdy instruk8
177 392 cja jest wysyłana do jednostki FXUA 22. W wyniku ustawienia bitu EOK na logicznej 1, jednostka sekwencyjna 18 umożliwia jednostce FXUA 22 wykonanie instrukcji, gdy tylko informacja o argumentach operacji źródłowej jest dostępna i ważna.
Figura 3 przedstawia schemat blokowy jednostki sekwencyjnej 18. Jak zostanie omówione poniżej, w stopniu ładowania jednostka sekwencyjna 18 daje na wejściu selektywnie do czterech instrukcji z pamięci podręcznej 14 instrukcji i pamięta takie instrukcje w buforze instrukcji 70. W stopniu dekodowania logiczny układ dekodowania 72 daje na wejściach i dekoduje do czterech ładowanych instrukcji z bufora instrukcji 70. W stopniu wysyłania logiczny układ wysyłania 74 selektywnie wysyła do czterech dekodowanych instrukcji do wybranych (w odpowiedzi na dekodowanie w stopniu dekodowania) spośród jednostek wykonawczych 20, 22, 24, 26, 28 i 30.
Figura 4 przedstawia organizację bufora 76 ponownego uporządkowania dla jednostki sekwencyjnej 18. Jak pokazano na fig. 4, bufor 76 ponownego uporządkowania ma szesnaście wejść oznaczonych jako numery buforowe 0-15. Każde wejście ma pięć pól pierwotnych, mianowicie pole „typu instrukcji”, pole „liczby przeznaczeń GPR”, pole „liczby przeznaczeń FPR”, pole „zakończenia” i pole „warunku wyjątkowego”. Ponadto pole typu instrukcji ma podpole „jednostki wykonawczej” i podpole EOK.
Wracając do fig. 3, gdy logiczny układ wysyłania 74 wysyła instrukcję do jednostki wykonawczej jednostka sekwencyjna 18 przyporządkowuje wysyłaną instrukcję do odpowiedniego wejścia, bufora 76 ponownego uporządkowania. Jednostka sekwencyjna 18 przyporządkowuje wejścia bufora 76 ponownego uporządkowania do wysyłanych instrukcji na podstawie „pierwszy zgłoszony - pierwszy obsłużony” i w sposób rotacyjny, tak że jednostka sekwencyjna 18 przyporządkowuje wejście 0, po którym następują sekwencyjnie wejścia 1-15, a następnie ponownie wejście 0. Wówczas, gdy wysyłana instrukcja jest przyporządkowana odpowiedniemu wejściu bufora 76 ponownego uporządkowania logiczny układ wysyłania 74 daje na wyjściach informację dotyczącą wysyłanej instrukcji w celu pamiętania w różnych polach i podpolach odpowiedniego wejścia w buforze 76 ponownego uporządkowania.
Dla przykładu, na wejściu 0 z fig. 4 bufor 76 ponownego uporządkowania wskazuje, że instrukcja jest wysyłana do jednostki FXUA 22. Ponadto wejście 0 wskazuje, że wysłana instrukcja jest wykonana szeregowo, tak że EOK=0 i procesor 10 ma opóźniać wykonanie wysyłanej instrukcji przynajmniej do czasu zakończenia wszystkich poprzednich instrukcji. Również na wejściu 1 bufor 76 ponownego uporządkowania wskazuje, że kolejna instrukcja jest wykonywana szeregowo, tak że EOK=0.
W innych wykonaniach wejście 0 wskazuje dalej, że wysłana instrukcja ma jeden rejestr przeznaczenia GPR (tak, że „liczba GPR przeznaczeń” = 1), ma zero rejestrów przeznaczenia FPR (tak, że „liczba FPR przeznaczeń” = 0), nie jest jeszcze zakończona (tak, ze „zakończona” = 0) i nie spowodowała jeszcze warunku wyjątkowego (tak, że „warunek wyjątkowy” = 0).
Wówczas, gdy jednostka wykonawcza wykonuje wysyłaną instrukcję, jednostka modyfikuje wejście związane z instrukcją w buforze 76 ponownego uporządkowania. Bardziej szczegółowo, w odpowiedzi na zakończenie wykonania wysyłanej instrukcji, jednostka wykonawcza modyfikuje „zakończone” pole wejścia (tak, że „zakończone” = 1). Jeżeli jednostka wykonawcza napotyka warunek wyjątkowy podczas wykonywania wysyłanej instrukcji, jednostka wykonawcza modyfikuje pole „warunku wyjątkowego” wejścia (tak, że „warunek wyjątkowy” = 1).
Wracając ponownie do fig. 3 wejścia bufora 76 ponownego uporządkowania są odczytywane przez logiczny układ zakończenia 80 i logiczny układ 82 warunku wyjątkowego jednostki sekwencyjnej 18. Ponadto wejścia bufora 76 ponownego uporządkowania są odczytywane przez wykonawczy układ logiczny 84 ustawiania w szeregu dla jednostki sekwencyjnej 18. W odpowiedzi na pola „warunku wyjątkowego” bufora 76 ponownego uporządkowania, logiczny układ 82 warunku wyjątkowego obsługuje warunki wyjątkowe napotykane podczas wykonywania wysyłanych instrukcji.
W odpowiedzi na „zakończone” pola i pola „warunku wyjątkowego” bufora 76 ponownego uporządkowania, logiczny układ zakończenia 80 daje na wyjściach sygnały dla logicznego układu wysyłania 74, dla logicznego układu wykonawczego 84 ustawiania w szeregu
177 392 i dla bufora 76 ponownego uporządkowania. Poprzez te sygnały logiczny układ zakończenia 80 wskazuje „zakończenie” instrukcji w kolejności zaprogramowanej sekwencji. Logiczny układ zakończenia 80 wskazuje „zakończenie” instrukcji, jeżeli spełnia ona następujące warunki:
Warunek 1 - Jednostka wykonawcza (do której jest wysyłana instrukcja) kończy wykonanie instrukcji (tak, że „zakończony” = 1 na odpowiednim wejściu instrukcji w buforze 76 ponownego uporządkowania),
Warunek 2 - Nie zostały napotkane żadne warunki wyjątkowe w związku z żadnym stopniem przetwarzania instrukcji (tak, że „warunek wyjątkowy” = 0 na odpowiednim wejściu instrukcji w buforze 76 ponownego uporządkowania) i
Warunek 3 - Dowolna poprzednio wysłana instrukcja spełnia warunek 1 i warunek 2.
W odpowiedzi na informację w buforze 76 ponownego uporządkowania, logiczny układ wysyłania 74 określa właściwą liczbę dodatkowych instrukcji, które mają być wysłane.
W odpowiedzi na sygnały z logicznego układu zakończenia 80, logiczny układ wykonawczy 84 ustawiania w szeregu daje selektywnie na wyjściach sygnał do jednostki FXUA 22 przez linię 60. Jeżeli wysłana instrukcja dla jednostki FXUA 22 ma odpowiedni bit EOK (w polu „typu instrukcji” odpowiedniego wejścia instrukcji w buforze 76 ponownego uporządkowania), zerowany do logicznego 0, wówczas logiczny układ wykonawczy 84 ustawiania w szeregu daje na wyjściach sygnał poprzez linię 60 w odpowiedzi na „zakończenie” wszystkich instrukcji poprzedzających wysłaną instrukcję. Jednostka FXUA 22 wykonuje taka wysłaną instrukcję tylko w odpowiedzi na logiczny układ wykonawczy 84 ustawiania w szeregu, wysyłający sygnał linią 60; gdy logiczny układ wykonawczy 84 ustawiania w szeregu daje na wyjściu sygnał przez linię 60, tak, że wysyłana instrukcja (mająca odpowiedni bit EOK wyzerowany do logicznego 0) będzie najstarszą instrukcją w stanowiskach rezerwacji 50a i 50b jednostki FXUA 22 ponieważ instrukcje są „kończone” w kolejności zaprogramowanej sekwencji.
Podobnie logiczny układ wykonawczy 84 ustawiania w szeregu selektywnie daje na wyjściu sygnały dla jednostek wykonawczych 20, 24, 26, 28 i 30 poprzez linie 86, 88, 90, 92 i 94, które są do nich odpowiednio dołączone.
Figury 5a-b przedstawiają różne stopnie instrukcji. Omawiając fig. 5a, wykonanie (cykl 6) szeregowej instrukcji wykonawczej INST n+1 (np. instrukcji Move To lub instrukcji Move From) jest opóźnione aż do zakończenia wszystkich poprzednich instrukcji (np. po cyklu 5 poprzedniej instrukcji INST n). Pomimo tego procesor 10 korzystnie nie opóźnia wysyłania (cykl 3) lub wykonywania (cykl 4) instrukcji INST n+2, która jest poprzedzona przez szeregowa instrukcję wykonawczą iNSt n+1. W ten sposób procesor 10 osiąga ciągłe wysyłanie instrukcji (takich, jak INST n+2), które są poprzedzone przez szeregową instrukcję wykonawczą (taką, jak INST n+1). Również jednostka wykonawcza procesora 10 jest zdolna wydawać instrukcje nie po kolei ze stanowisk rezerwacji jednostek wykonawczych do logicznego układu wykonawczego (np. logicznego układu wykonawczego 54 z fig. 2) nawet jeżeli najstarsza bieżąca instrukcja w stanowisku rezerwacji jednostki wykonawczej jest poddawana ustawianiu w szeregu.
Procesor 10 z przedstawionego rozwiązania ma lepsze parametry niż rozwiązania znane. Jak pokazano na fig. 5b zgodnie z jedną taką alternatywną techniką wysyłania (cykl 8) instrukcji INST i+2 jest opóźniony w odpowiedzi na dekodowanie (cykl 2) instrukcja INST i+1 podlega wykonaniu serializacji. W takiej alternatywnej technice instrukcja wysłania (cykl 8) instrukcji INST i+2 jest wykonana tylko po „zakończeniu” wszystkich wcześniej wysłanych instrukcji (np. po cyklu 7 poprzedniego wykonaniu serializowanej instrukcji INST i+1). Wadą takiej alternatywnej techniki jest to, że wykonanie jest opóźnione dla instrukcji (takie jak INST i+2), która jest poprzedzona wykonaniem serializowanej instrukcji (takiej jak INST i+1).
Jak przedstawiono poprzednio procesor 10 zapewnia ciągłe wysyłanie instrukcji, które są poprzedzone wykonaniem instrukcji serializowanych. Instrukcja Idź Z jest wykonaniem instrukcji serializowanej i dlatego korzysta z wykonania techniki serializacji w korzystnym przykładzie wykonania. Procesor 10 zawiera ponadto układy dla wysyłania wyników (informacji o argumentach operacji przeznaczenia) instrukcji Idź Z dla zapamiętania w wybranym buforze przemianowania przed powtórnym zapisem informacji o argumentach operacji przeznaczenia do jednego z GPR 32.
177 392
Procesor 10 zabezpiecza takie przemianowanie niezależnie od tego, czy rejestr przeznaczenia instrukcji Idź Z jest jednym z GPR 32. W ten sposób procesor 10 wykorzystuje swoje istniejące układy przesuwu w przód swoich stacji rezerwowanych łącznie z układami wyszukującymi bufory przemianowania dla dokładnego dopasowania argumentu informacji o punkcie przeznaczenia (instrukcji Idź Z) z rejestrem źródła instrukcji wysłanej po instrukcji Idź Z. Zgodnie z tym inne instrukcje poprzedzone instrukcją Idź Z mogą być wysyłane po pewnym czasie po wysłaniu instrukcji Idź Z. Bez użycia takich układów dla instrukcji Idź Z inne instrukcje poprzedzone przez instrukcję Idź Z nie mogłyby być wysłane aż do „zakończenia” instrukcji Idź Z, ponieważ inne instrukcje mogłyby wymagać (jak ich źrodło informacji o argumentach operacji źródłowych) informacji o argumentach operacji przeznaczenia instrukcji Idź Z.
Korzystnie, procesor 10 umieszcza w potoku instrukcję wysyłania odpowiadając na instrukcję ładowania i dekodowania odnośnych wyjątków („IFDRE”). Procesor 10 wykrywa instrukcję ładowania lub dekoduje odnośne wyjątki na etapie ładowania lub etapie dekodowania jeżeli warunek wyjątkowości jest całkowicie wykrywalny z instrukcji i stanu procesora 10. Przykładami takich instrukcji ładowania lub dekodowania odnośnych wyjątków są instrukcje dostępu błędnego odwołania się do strony instrukcji dostępu, naruszenia ochrony pamięci, uprzywilejowana instrukcja naruszenia i instrukcje nielegalne.
W odpowiedzi na wykrycie takiej instrukcji ładowania lub dekodowania określonego wyjątku, jednostka adresująca sekwencyjnie 18 wysyła instrukcję IFDRE do stacji rezerwacji jednostki wykonawczej, ale z bitem EOK wyzerowanym do logicznego 0, jak omówiono dodatkowo powyżej w powiązaniu z figurami 2-4. Ponadto jednostka adresująca sekwencyjnie 18 zapamiętuje wskazanie warunków IFDRE przez ustalenie „wyjątek” = 1 (jednocześnie utrzymując „skończone” = 0) w instrukcji wywołanej IFDRE związanej z wejściem do bufora zmieniającego uporządkowanie 76. Taka wskazówka identyfikuje instrukcję jako instrukcję wywołaną IFDRE.
Jak omówiono dodatkowo powyżej w powiązaniu z figurami 2-4, zerując bit EOK do logicznego 0 jednostka adresująca sekwencyjnie 18 uniemożliwia jednostce wykonawczej wykonanie instrukcji wysłania nawet jeżeli w innym przypadku instrukcja byłaby gotowa do wysłania. Zgodnie z tym jednostka wykonawcza wykonuje takie instrukcje tylko w odpowiedzi na wyjście sygnału z jednostki adresującej sekwencyjnie 18 przez odpowiednio dołączoną jedną z linii 60, 86, 88, 90, 92, lub 94, jak omówiono dodatkowo powyżej w powiązaniu z figurami 2-4.
W odpowiedzi na zakończenie wszystkich instrukcji poprzedzających instrukcję wywołaną IFDRE jednostka adresująca sekwencyjnie 18 wykonuje raczej ładowanie lub dekodowanie odpowiednich wyjątków niż wysyłanie sygnału do jednostki wykonawczej przez odpowiednio dołączoną jedną z linii 60, 86, 88, 90, 92, lub 94. Więc instrukcja wywołana IFDRE nigdy nie jest wykonywana przez jednostkę wykonawczą. Jednostka adresująca sekwencyjnie 18 rozpoznaje instrukcje jako instrukcję wywołaną IFDRE w odpowiedzi na „wyjątek” = 1 i „skończone” = 0 na związanym instrukccą wejściu bufora zmieniającego uporządkowanie 76.
W ten sposób procesor 10 porządkuje i przyspiesza instrukcje wysyłania przez logikę wysyłającą 74 (fig. 3), która jest prędkością krytyczną obwodów w procesorze superskalarnym. Zgodnie z tym procesor 10 osiąga lepsze parametry niż w rozwiązaniach alternatywnych. Zgodnie z jedną z takich alternatywnych technik procesor nigdy nie wysyła instrukcji wywołanych IFDRE. Taka alternatywna technika powoduje komplikację i spowolnienie wysyłania ponieważ dla każdej instrukcji procesor musi wykryć instrukcję ładowania i dekodowania związaną z warunkiem wyjątku przed określeniem, czy wysłać instrukcję. Na przykład w takim alternatywnym przykładzie procesor określa czy wysłać n-tą instrukcję w odpowiedzi na ustalenie czy n-ta instrukcja lub jedna z wcześniejszych n-1 instrukcji ma warunek ładowania lub dekodowania odpowiedniego wyjątku. ·
Logika wysyłająca 74 (fig. 3) działa niezależnie od warunków ładowania lub dekodowania odpowiedniego wyjątku. Nawet po wyznaczeniu do końcowego wysłania instrukcji do wykonania jednostka adresująca sekwencyjnie 18 określa, czy warunek IFDRE istnieje dla instrukcji. Jeżeli jednostka adresująca sekwencyjnie 18 określa istnienie warunku IFDRE dla
177 392 instrukcji, to jednostka adresująca sekwencyjnie 18 wysyła wskazówkę warunku IFDRE dla zakazu wykonania instrukcji przez jednostkę wykonawczą. Dokładniej, w odpowiedzi na wykrycie przez jednostkę adresującą sekwencyjnie 18 istnienia warunku IFDRE dla instrukcji, jednostka adresująca sekwencyjnie 18 wysyła taką wskazówkę podczas bieżącego wysyłania przez (1) ustawienie „wyjątek” = 1 (jednocześnie utrzymując „skończone” = 0) w instrukcji wywołanej IFDRE związanej z wejściem do zmienionego bufora 76 i (2) zerując bit EOK w instrukcji wywołanej IFDRE stacji rezerwacji do logicznego 0.
Jest to korzystne ponieważ, po zdecydowaniu o wysłaniu instrukcji jest normalnie niepraktyczne odwracać skutek takiej decyzji i w końcu nie wysyłać instrukcji. Ponadto w czasie cyklu wysyłania są wykonywane dodatkowe operacje po decyzji o wysłaniu instrukcji. Zgodnie z tym, procesor 10 nie potrzebuje wykrywać warunku wyjątku przed określeniem, czy wysłać każdą instrukcję. Jest to szczególnie korzystne dla jednostki adresującej sekwencyjnie 18 wysyłającej wiele instrukcji podczas jednego cyklu procesora 10.
Figura 6 przedstawia organizację bufora 76, w którym pokazane są cztery instrukcje jako końcowe wykonanie („skończony” = 1) podczas tego samego cyklu procesora 10. Figura 7 przedstawia różne etapy czterech instrukcji z fig. 6. Figury 8a-d przedstawiają organizację buforów przemianowania 34 procesora 10.
Odnosząc się do figur 6-8, opóźniony zapis jest niezależny od instrukcji zakończenia także etap „opóźniony zapis” instrukcji wykonanej przez procesor 10 jest oddzielony od instrukcji etapu zakończenia. Przez oddzielenie opóźnionego zapisu od zakończenia procesor 10 uzyskuje sprawne działanie wykorzystując mniej portów opóźnionego zapisu pomiędzy buforami przemianowania rejestrami strukturalnymi. Na przykład jak pokazano na fig. 1, procesor 10 zawiera dwa porty opóźnionego zapisu pomiędzy buforami przemianowania 38 i GPR 32, i dwa porty opóźnionego zapisu pomiędzy buforami przemianowania 38 i FPR 36. Przy mniejszej liczbie portów fizyczne wymiary buforów przemianowania 34 i 38 i rejestrów strukturalnych 32 i 36 są zmniejszone. Ponadto logika zakończenia 80 (fig. 3) jest bardziej uporządkowana, tak, że procesor 10 szybciej określa czy określona instrukcja może być zakończona podczas bieżącego cyklu.
W przedstawionym wykonaniu procesor 10 może zakończyć do czterech instrukcji w cyklu. Korzystnie każda instrukcja może mieć do dwóch argumentów punktów przeznaczenia. Zgodnie z tym, jeśli procesor 10 nie zabezpiecza rozdziału opóźnionego zapisu od zakończenia, procesor 10 potrzebowałby osiem portów opóźnionego zapisu (np. pomiędzy buforami przemianowania 34 i GPR 32) dla wykonania czterech instrukcji w określonym cyklu jeśli każda z -czterech instrukcji ma dwa argumenty punktu przeznaczenia. Jest tak ponieważ zakończenie instrukcji wymagałoby aby port opóźnionego zapisu był dostępny dla każdego jej argumentu operacji przeznaczenia dla skopiowania z bufora przemianowania do związanego rejestru strukturalnego.
Przy mniejszej liczbie portów opóźnionego zapisu, weryfikacja dostępności portów opóźnionego zapisu staje się bardziej złożona, gdy więcej instrukcji jest przewidzianych do wpisania podczas tego samego cyklu. Wynika to z tego, że dostępność portów opóźnionego zapisu dla poszczególnych instrukcji w czasie określonych cykli zależy od liczby portów opóźnionego zapisu wykorzystywanych przez poprzednie instrukcje podczas tego samego cyklu lub poprzednich cykli.
Korzystnie, przez oddzielenie opóźnionego zapisu od zakończenia logika zakończenia 80 (fig. 3) procesora 10 jest bardziej uporządkowana. Jest tak ponieważ zakończenie instrukcji zależy od poniższych warunków:
Warunek 1 - Jednostka wykonawcza do której instrukcji jest wysyłana kończy wykonanie instrukcji;
Warunek 2 - Nie było żadnych wyjątków w połączeniu z żadnym etapem przetwarzania instrukcji; i
Warunek 3 - Każda poprzednio wysłana instrukcja spełnia warunek 1 i warunek 2.
Przez rozdzielenie zakończenia od opóźnionego zapisu procesor 10 kopiuje informację o argumentach operacji przeznaczenia zakończonej instrukcji z bufora przemianowania dla zapamiętania w rejestrach strukturalnych podczas określonego cyklu, jeżeli port opóźnionego
177 392 zapisu jest dostępny podczas cyklu. Jeżeli port opóźnionego zapisu jest niedostępny podczas cyklu to procesor 10 kopiuje informację o argumentach operacji przeznaczenia zakończonej instrukcji z bufora przemianowania do rejestru strukturalnego podczas późniejszego cyklu, gdy port opóźnionego zapisu jest dostępny.
Odnosząc się do fig. 6 bufor zmieniający uporządkowanie 76 pamięta informacje dla czterech instrukcji kończących wykonanie podczas tego samego cyklu procesora 10. Fig. 7 pokazuje różne etapy czterech instrukcji INST x, INST x + 1, INST x + 2, INST x+3, które są związane z numerami bufora zmieniającego uporządkowanie 7, 8, 9 i 10 z fig. 6. Zgodnie z tym INST x ma jeden argument operacji przeznaczenia (liczba operacji przeznaczenia GPR = 1) także INST x +1 ma jeden argument punktu przeznaczenia (liczba operacji przeznaczenia GPR = 1). Dla porównania INST x +2 ma dwa argumenty operacji przeznaczenia (liczba operacji przeznaczenia GPR = 2). Podobnie INST x+3 ma dwa argumenty operacji przeznaczenia (liczba operacji przeznaczenia GPR = 2). Jak pokazano na fig. 7 każda z instrukcji INST x, INST x+1, INST x+2, INST x+3, kończy wykonanie na końcu cyklu 4.
Figury 8a-d przedstawiają, jak podano, organizację buforów przemianowania 34 procesora 10. Dla jasności działanie jest poniżej omawiane tylko w ustalonych punktach buforów przemianowania 34, które ilustrują działanie punktów zmiennopozycyjnych buforów przemianowania 38. Jak pokazano na figurach 8a-d bufory przemianowania 34 zawierają odpowiednio dwanaście buforów przemianowania odpowiednio oznaczonych jako bufory 0-11. Jednostka adresująca sekwencyjnie 18 przydziela bufor przemianowania 0 - 11 dla wysyłanych instrukcji na zasadzie pierwsza wchodzi - pierwsza wychodzi i w sposób rotacyjny, tak że jednostka adresująca sekwencyjnie 18 przydziela bufor przemianowania 0, następnie kolejno bufory przemianowania 1 - 11, a następnie znowu bufor przemianowania 0.
Odnosząc się do figur 8a-d bufor przemianowania 2 jest przydzielony do zapamiętania argumentu informacji punktu przeznaczenia dla instrukcji INST x bufor przemianowania 3 jest przydzielony do zapamiętania argumentu informacji punktu przeznaczenia dla instrukcji INST x+1. Ponieważ instrukcja INST x+2 ma dwa argumenty punktu przeznaczenia to dwa bufory przemianowania 4 i 5 są przydzielone do zapamiętania argumentu informacji dla instrukcji INST x+2. Podobnie, obydwa bufory zmiany nazwy 6 i 7 przydzielone są do przechowywania informacji o argumentach operacji przeznaczenia dla instrukcji INST x+3.
Na fig. 8a pokazano status wskaźnika przyporządkowania 80, wskaźnika zapisu wstecznego 82 i wskaźnika kompletacji 84 na początku cykli 4 i 5 z fig. 7.
Procesor 10 zachowuje takie wskaźniki do sterowania odczytem z i zapisem do buforów zmiany nazwy. Procesor 10 zachowuje wskaźnik przyporządkowania 80 w celu wskazania, czy bufor zmiany nazwy jest przyporządkowany do konkretnej instrukcji. Jak widać na fig. 8a, wskaźnik przyporządkowania 80 wskazuje bufor zmiany nazwy 8, wskazując tym samym, że bufor zmiany nazwy 8 jest następnym buforem zmiany nazwy dostępnym do przyporządkowania instrukcji.
Ważne jest to, że procesor 10 nadal zachowuje wskaźnik zapisu wstecznego 82 w celu wskazania czy bufor zmiany nazwy (poprzednio przyporządkowany konkretnej instrukcji) jest dostępny do ponownego przyporządkowania innej instrukcji. Jak widać na fig. 8a, wskaźnik zapisu wstecznego 82 wskazuje bufor zmiany nazwy 2, wskazując tym samym, że bufor zmiany nazwy 2 jest następnym buforem zmiany nazwy, z jakiego procesor 10 skopiuje informacje na temat operanda przeznaczenia (zapamiętane w polu „informacji” bufora zmiany nazwy na fig. 8a) do jednego z GPR 32 (zgodnie z polem „numer rejestru” bufora zmiany nazwy z fig. 8a).
W związku z tym, procesor 10 zmienia wskaźnik zapisu wstecznego 82 (po buforze zmiany nazwy przyporządkowanym do konkretnej instrukcji) w reakcji na kopiowanie przez procesor 10 wyniku (informacja o operandzie przeznaczenia) konkretnej instrukcji z bufora zmiany nazwy do pamięci w rejestrze architektury. W ten sposób procesor 10 rezerwuje przyporządkowany bufor zmiany nazwy dla zapamiętania wyniku (informacji o argumentach operacji prze/nac/enia) konkretnej instrukcji do czasu skopiowania przez procesor 10 wyniku do rejestru architektury.
177 392
Procesor 10 przechowuje również wskaźnik kompletacji 84 w celu wskazania (buforowi zmiany nazwy przydzielonemu poprzednio do konkretnej instrukcji) czy konkretna instrukcja spełnia następujące warunki:
Warunek 1 - jednostka wykonawcza (do której jest wysyłana instrukcja) kończy realizację instrukcji;
Warunek 2 - nie napotkano warunków wyjątkowych związanych z którymś z etapów przetwarzania instrukcji; oraz
Warunek 3 - dowolna wysłana instrukcja spełnia Warunek 1 i Warunek 2.
Jak widać na fig. 8a, wskaźnik kompletacji 84 wskazuje bufor zmiany nazwy 2, wskazując tym samym, że bufor zmiany nazwy 2 jest następnym buforem zdolnym do spełnienia Warunków 1, 2 i 3. Procesor 10 przechowuje wskaźnik kompletacji 84 niezależnie od tego czy wynik instrukcji jest kopiowany z bufora zmiany nazwy do pamięci w rejestrze architektury.
W związku z tym, „pozycje zmiany nazwy” można zdefiniować jako bufor zmiany nazwy wskazany przez wskaźnik kompletacji 84 i jego następne bufory zmiany nazwy, które poprzedzają bufor zmiany nazwy wskazany przez wskaźnik przyporządkowania 80. „Pozycje zapisu wstecznego” można zdefiniować jako bufor zmiany nazwy wskazany przez wskaźnik zapisu wstecznego 82 i jego następne bufory zmiany nazwy poprzedzające bufor zmiany nazwy wskazany przez wskaźnik kompletacji 84. W pozycjach zapisu wstecznego przechowywane są wyniki instrukcji, które są „zakończone”, ale których wyniki nie zostały skopiowane z buforów zmiany nazwy do rejestrów architektury, na przykład, ze względu na niedostępność portów zapisu dla rejestrów architektury.
Koncepcyjnie pozycje zapisu wstecznego znajdują się pomiędzy pozycjami zmiany nazwy a rejestrami architektury. Korzystnie, wynik może ominąć pozycje zapisu wstecznego i zostać zapisany bezpośrednio do rejestrów architektury o ile port zapisu wstecznego jest dostępny na etapie kompletacji. Ponadto, podobnie jak pozycje zmiany nazwy, procesor 10 przetwarza pozycje zapisu wstecznego na informacje wyjściowe do jednostki wykonawczej w tych sytuacjach, w których jednostka wykonawcza realizuje instrukcję określoną w rejestrze architektury związanym z taką informacją. , .
Przykładowo, na fig. 8b pokazano status wskaźnika przyporządkowania 80, wskaźnika zapisu wstecznego 82 i wskaźnika kompletacji 84 na początku cyklu 6 z fig. 7. Jak widać na fig. 8b, wskaźnik przyporządkowania 80 nie uległ zmianie ponieważ mikroprocesor 10 nie wysłał dodatkowych instrukcji. Dla porównania, wskaźnik kompletacji 84 zmienił się z rejestru zmiany nazwy numer 2 na rejestr zmiany nazwy numer 8, wskazując tym samym zakończenie podczas cyklu 5 czterech instrukcji INST x, INST x+1, INST x+2 i INST x+3 mających w sumie sześć operandów przeznaczenia.
Ponadto, na fig. 8b, wskaźnik zapisu wstecznego 82 zmienił się z rejestru zmiany nazwy numer 2 na rejestr zmiany nazwy numer 4, wskazując tym samym zapis wsteczny podczas cyklu 5 informacji o argumentach operacji przeznaczenia dla instrukcji INST x i INST x+1. Na fig. 7 przedstawiono tę sytuację pokazując kompletację i zapis wsteczny („COMP/WBACK”) występujące równocześnie podczas cyklu 5 dla instrukcji INST x i INST x+1. W ten sposób wyniki (w rejestrze zmiany nazwy numer 2 i rejestrze zmiany nazwy numer 3) instrukcji INST x i INST x+l omijają pozycje zapisu wstecznego i są zapisywane bezpośrednio do GPR'ów 32, ponieważ na początku cyklu 5 były dostępne dwa porty zapisu wstecznego. Na fig. 8b wskaźnik zapisu wstecznego 82 nie wykracza poza rejestr zmiany nazwy numer 4, ponieważ oba porty zapisu wstecznego są wykorzystywane podczas cyklu 5 do wstecznego zapisu wyników instrukcji INST x i INST x+1.
Na fig. 8c pokazano status wskaźnika przyporządkowania 80, wskaźnika zapisu wstecznego 82 i wskaźnika kompletacji 84 na początku cyklu 7 z fig. 7. Jak widać na fig. 7 i 8c, oba porty zapisu wstecznego są używane podczas cyklu 6 do wstecznego zapisu obu wyników instrukcji INST x+2. W związku z tym, wskaźnik zapisu wstecznego 82 zmienił się z rejestru zmiany nazwy numer 4 na rejestr zmiany nazwy numer 6. Wskaźnik przyporządkowania 80 nie uległ zmianie, ponieważ procesor 10 nie wysłał dodatkowych instrukcji. Również wskaźnik kompletacji 80 nie zmienił się, ponieważ procesor 10 nie skompletował dodatkowych instrukcji.
177 392
Na fig. 8d pokazano status wskaźnika przyporządkowania 80, wskaźnika zapisu wstecznego 82 i wskaźnika kompletacji 84 na początku cyklu 8 z fig. 7. . .lak widćć na fig. 7 i 8c, oba porty zapisu wstecznego są używane podczas cyklu 7 do wstecznego zapisu dwóch wyników instrukcji INST x+3. W związku z tym, wskaźnik zapisu wstecznego 82 zmienił się z rejestru zmiany nazwy numer 6 do rejestru zmiany nazwy numer 8. Wskaźnik przyporządkowania pozostał bez zmiany, ponieważ procesor 10 nie wysłał dodatkowych instrukcji. Nie zmienił się również wskaźnik kompletacji 84, ponieważ procesor 10 nie skompletował dodatkowych instrukcji.
Na figurze 9 przedstawiono różne etapy realizacji czterech instrukcji w sytuacji bez ważnej cechy, w której procesor 10 oddziela kompletację od zapisu wstecznego. W celu zilustrowania takiej sytuacji, na fig. 9 pokazano różne etapy realizacji czterech instrukcji INST y, INST y+1, INST y+2 i INST y+3, które są odpowiednio związane z buforami zmiany przyporządkowania o numerach 7, 8, 9 i 10 z fig. 6.
Na figurach 10a-d przedstawiono organizację buforów zmiany nazwy procesora według fig. 9. Bardziej szczegółowo, na fig. 10a przedstawiono status wskaźnika przyporządkowania 90 i wskaźnika kompletacji 94 na początku cykli 4 i 5 z fig. 9. Na fig. 1 Ob przedstawiono .status wskaźnika przyporządkowania 90 i wskaźnika kompletacji 94 na początku cyklu 6' z fig. 9. Na fig. 10c przedstawiono status wskaźnika przyporządkowania 90 i wskaźnika kompletacji 94 na początku cyklu 7 z fig. 9. Na fig. 10d przedstawiono status wskaźnika przyporządkowania 90 i wskaźnika kompletacji 94 na początku cyklu 8 z fig. 9.
Jak widać na fig. 10a-d, bez ważnej cechy rozwiązania, według której procesor 10 oddziela kompletację od zapisu wstecznego, konkretna instrukcja (mająca przydzielony bufor zmiany nazwy) zostałaby skompletowana tylko po rzeczywistym skopiowaniu wyniku instrukcji z przydzielonego bufora zmiany nazwy do zapamiętania w rejestrze architektury. Dla porównania, z ważną cecha rozwiązania według której procesor 10 oddziela kompletację od zapisu wstecznego, procesor 10 przechowuje nadal wskaźnik zapisu wstecznego 82 wskazujący, czy można zmienić przyporządkowanie bufora zmiany nazwy (przydzielony poprzednio konkretnej instrukcji).' do innej instrukcji. Ponadto procesor 10 kompletuje konkretna instrukcję bez względu na to czy wynik konkretnej instrukcji jest aktualnie kopiowany z przydzielonego bufora zmiany nazwy do pamięci w rejestrze architektury. W związku z tym, procesor 10 jest w stanie „skompletować” do czterech instrukcji w konkretnym cyklu, nawet jeżeli każda z tych czterech instrukcji ma dwa argumenty operacji przeznaczenia, oraz nawet jeżeli nie wszystkie argumenty operacji przeznaczenia są kopiowane do GRP'ów 32 podczas konkretnego cyklu.
Na figurze 11 przedstawiono schemat blokowy alternatywnego przykładu wykonania buforów zmiany nazwy 34, w którym „pozycje zapisu wstecznego” są przechowywane w buforze 110 oddzielnie od „pozycji zmiany nazwy”. „Pozycje zmiany nazwy” są przechowywane w buforze 112. Informacja z „pozycji zmiany nazwy” w buforze 112 jest sygnałem wyjściowym do zapamiętania w „pozycji zapisu wstecznego” w buforze 110 podczas konkretnego cyklu w reakcji na kompletację podczas konkretnego cyklu realizacji konkretnej instrukcji, do której jest przyporządkowana „pozycja zapisu wstecznego”. Informacja z „pozycji zapisu wstecznego” w buforze 110 jest sygnałem wyjściowym do zapamiętania w jednym z GPR'ów 32 podczas konkretnego cyklu w reakcji na dostępność tych GPR'ów podczas konkretnego cyklu do jednego z dwóch portów zapisu wstecznego.
Bufor 112 wysyła informacje do bufora 110 poprzez jeden z ośmiu portów, jak pokazano na fig. 11, tak, że podczas dowolnego cyklu procesora 11 bufor 112 jest w stanie wysłać informację do bufora 110 z od jednej do ośmiu „pozycji zmiany nazwy”. W związku z tym, procesor 10 jest w stanie „skompletować” do czterech instrukcji w konkretnym cyklu, nawet jeżeli każda z czterech instrukcji ma dwa operandy przeznaczenia, oraz nawet jeżeli nie wszystkie operandy przeznaczenia są kopiowane do GPR'ów 32 podczas konkretnego cyklu. Korzystnie, wynik (informacja o argumentach operacji przeznaczenia) może ominąć „pozycje zapisu wstecznego” w buforze 110 i może być zapisany bezpośrednio do GPR'ów 32 o ile port zapisu wstecznego jest dostępny na etapie kompletacji. Procesor 10 realizuje takie ominięcie za pomocą odpowiedniego operowania multiplekserami 113a i 113b, które są podłączone do buforów 110 i 112 oraz do GPR'ów 32, jak pokazano na fig. 11.
177 392
Bufory zmiany nazwy 34 z fig. 11 mają możliwość zmiany przyporządkowania pozycji zmiany nazwy w buforze 112 do innej instrukcji po skompletowaniu (ale jeszcze przed zapisem wstecznym) instrukcji, która była poprzednio związana z daną pozycją zmiany nazwy (której poprzednio była przyporządkowana pozycja zmiany nazwy) ponieważ informacja zawarta w tej pozycji zmiany nazwy jest odpowiednio wysyłana do zapamiętania w pozycji zapisu wstecznego w buforze 110 w reakcji na skompletowanie poprzednio związanej z tą pozycją instrukcji. Multiplekser 114 wysyła wybrane informacje do jednostek wykonawczych z bufora 110 lub z bufora 112 w sytuacjach, w których jednostka wykonawcza realizuje instrukcje określającą rejestr architektury związany z taką informacją. Procesor 10 ma dwa porty zapisu wstecznego pomiędzy buforami zmiany nazwy a rejestrami architektury, ale odpowiednia liczba portów zapisu wstecznego dla konkretnego przykładu wykonania jest funkcją prawdopodobieństwa, że pozycje zmiany nazwy i pozycje zapisu wstecznego zapełnią się, opóźniając w ten sposób wysłanie instrukcji.
Jak już wspomniano wcześniej w opisie fig. 2-5, procesor 10 opóźnia wykonanie instrukcji realizowanych seryjnie co najmniej do czasu skompletowania wszystkich instrukcji poprzedzających w dwóch sytuacjach. W pierwszej sytuacji, instrukcja ta nie ma być realizowana domyślnie. W drugiej sytuacji, instrukcja określa co najmniej jeden argument operacji źródłowej, dla którego procesor 10 nie zawiera układu nadawczego.
Jeżeli chodzi o sytuację pierwszą, to niektóre instrukcje są realizowane na rejestrach architektury specjalnego przeznaczenia („SPR”) 40 (fig. 1), gdzie wyniki instrukcji są zapisywane bezpośrednio do SPR'ów 40 bez pośredniego przechowywania w buforach zmiany nazwy. Przykładem instrukcji tego typu jest instrukcja Move To (przemieszczenia), która przemieszcza informację z jednego z GPR'ów 32 do jednego z SPR'ów.40. Jak widać na fig. 1, takie instrukcje Move To są realizowane przez CFXU 26. Podczas realizacji instrukcji Move To następuje natychmiastowa aktualizacja jednego z SPR'ów .40. Podobnie, instrukcja Store powoduje podczas realizacji natychmiastową aktualizację pozycji pamięci w podręcznej pamięci danych 16 (fig. 1). Procesor 10 nie realizuje takich, instrukcji w sposób domyślny (co polegałoby na bezpośrednim zapisie wyników instrukcji do rejestru architektury lub pozycji w pamięci bez pośredniego przechowywania w buforach zmiany nazwy), tak, ze procesor 10 jest w stanie obsłużyć precyzyjne przerwania i precyzyjne warunki wyjątkowe. W związku z tym, w celu zapewnienia uporządkowanego kompletowania i zapisu wstecznego, procesor 10 opóźnia realizację instrukcji Move To i instrukcji Store do czasu skompletowania wszystkich instrukcji poprzednich.
Jeżeli instrukcja wysiana do jednostki wykonawczej ma związany z nią bit EOK (w polu „typ instrukcji” związanej z instrukcją pozycji w buforze zmiany porządku 76) skasowany do stanu logicznego 0, to w reakcji na „skompletowanie” wszystkich instrukcji poprzedzających instrukcję wysyłaną układ logiczny realizacji seryjnej 84 wysyła sygnał (poprzez odpowiednią jedną z linii 60, 86, 88, 90, 92 i 94 połączonych z jednostką wykonawczą). Jednostka wykonawcza realizuje taką wysłaną instrukcję tylko w reakcji na sygnał wyjściowy z układu logicznego realizacji seryjnej 84. .
Na figurach 12a-c przedstawiono ideę działania bufora zmiany porządku 76. Na fig. 13 przedstawiono różne etapy realizacji pięciu instrukcji z fig. 12a-c. Na fig. 14a-f przedstawiono ideę działania buforów zmiany nazwy 34 procesora 10.
Na fig. 12a przedstawiono organizację bufora zmiany porządku 76 na początku cyklu 4 z fig. 13. W związku z tym, na fig. 12a widać, że w buforze zmiany porządku 76 znajdują się informacje dla czterech instrukcji wysłanych podczas cyklu 3 z fig. 13. Na fig. 13 przedstawiono różne etapy realizacji czterech instrukcji INST a, INST a+1, INST a+2 i INST a+3, które są odpowiednio związane z buforami zmiany porządku o numerach 3, 4, 5 i 6 z fig. 12a.
Jak widać na fig. 12a, instrukcja INST a jest wysyłana do FXUA 22 i ma dwa argumenty operacji przeznaczenia („liczba przeznaczeń GPR” = 2).. Dla porównania, instrukcja INST a+1 jest wysyłana do FXUB 24, ale ma jeden argument operacji przeznaczenia („liczba przeznaczeń GPR” = 1). Instrukcja INST a+2 jest instrukcją Store (zapamiętaj) wysyłaną do LSU 28 i ma zerową liczbę argumentów operacji przeznaczenia („liczba przeznaczeń , GPR” = 0); ponadto bufor zmiany porządku o numerze 5 (związany z instrukcją INST a+2) ma eOk= 0
177 392 w reakcji na instrukcję INST a+2 realizowaną seryjnie. Instrukcja INST a+3 jest wysyłana do CFXU 26 i ma jeden operand przeznaczenia („liczba przeznaczeń GPR” = 1).
Jednostka sekwencjująca 18 określa, czy wynikiem realizacji instrukcji może być warunek wyjątkowy. Jednostka sekwencyjna 18 określa to jeszcze przed realizacją instrukcji. Jeżeli wynikiem realizacji instrukcji nie może być warunek wyjątkowy, jednostka sekwencyjna 18, korzystnie zadaje (w reakcji na wysłanie instrukcji) w pozycji bufora zmiany porządku związanej z instrukcją „ukończenie” = 1, niezależnie od tego czy procesor 10 rzeczywiście ukończył realizację instrukcji, której wynikiem nie może być warunek wyjątkowy.
Ponadto, w sytuacji tego typu, procesor 10 „kompletuje” instrukcję w reakcji na skompletowanie przez procesor 10 wszystkich instrukcji poprzednich, bez względu na to czy procesor 10 rzeczywiście ukończył realizację instrukcji, której wynikiem nie może być warunek wyjątkowy. W związku z tym procesor 10 „kompletuje” instrukcję w reakcji na określenie, że warunek wyjątkowy nie może być wynikiem reali/acji danej instrukcji arii żadnej instrukcji poprzedzającej daną instrukcję w zaprogramowanej sekwencji, bez względu na to, czy procesor 10 zakończył realizację każdej instrukcji, której wynikiem nie może być warunek wyjątkowy. Zatem, istnieje możliwość, iż etap kompletacji instrukcji poprzedzi etap realizacji instrukcji; w ten sposób procesor 10 jest w stanie zrealizować „wczesnąkompletację” instrukcji.
Korzystnie, poprzez wspomaganie operacji „wczesne zakończenie”, procesor 10 jest w stanie szybciej wykonywać kolejne, szeregowo wykonywane instrukcje (takie jak instrukcja Move To [Przenieś do] lub instrukcja Store [Przechowaj], kiedy to wyniki instrukcji zapisywane są bezpośrednio do rejestru architektury lub umieszczane w pamięci, bez pośredniego składowania w buforach przemianowania). Jest to prawdziwe bez pogarszania możliwości procesora 10 w uzyskiwaniu dokładnych przerwań i dokładnych warunków wyjątkowych. Zachodzi to dlatego, że wszystkie poprzedzające instrukcje (1) zakończyły już swe, wykonywanie bez. warunków wyjątkowych lub (2) zakończą wykonywanie bez warunków wyjątkowych. Za pomocą takiej techniki, procesor 10 w dalszym ciągu zapewnia zakończenie według kolejności i zapis zwrotny według kolejności.
Na przykład na fig. 12a, instrukcje INST a+1 i INST a+3 nie są w stanie spowodować ustawienia warunku wyjątkowego, takiego że „zakończony” = 1 w buforach przywrócenia uporządkowania o numerach 4 i 6.
Figura 14a przedstawia status alokacji wskaźnika („AL”) 80, wskaźnika zapisu zwrotnego („WB”) 82 i wskaźnika zakończenia („CO”) 84 buforów przemianowania 34 na początku cyklu 4 fig. 13.
Stąd fig. 14a odpowiada fig. 12a. Jak przedstawiono na fig. 14a, WB 82 i CO 84 wskazują bufor przemianowania 2, a AL 80 wskazuje bufor przemianowania 6. Bufory przemianowania 2 i 3 są alokowane do instrukcji INST a. Bufor przemianowania 4 jest alokowany do instrukcji INST a+1 i bufor przemianowania 5 jest alokowany do instrukcji INST a+3. Należy zauważyć, że instrukcja INST a+2 nie ma alokowanego bufora przemianowania, ponieważ instrukcja INST a+2 ma zero operandów przeznaczenia. W buforach przemianowania 2-5, „informacja poprawna” = 0, wskazując że pole „informacja” tych buforów przemianowania nie zawiera poprawnych danych. Na początku cyklu 4 (fig. 13), „informacja poprawna” = 0 ponieważ nie zostało jeszcze zakończone wykonywanie instrukcji INST a, INST a+1, INST a+2 i INST a+3. W buforze przemianowania 4, „przeniesienie poprawne” = 1, wskazujące że INST a+1 zmienia rejestr CA 42. Należy zauważyć jak poprzednio stwierdzono, że INST a+1 nie jest w stanie spowodować warunku wyjątkowego takiego, że „zakończony” = 1 w buforze przywrócenia porządku o numerze 4 (fig. 12a). W związku z tym procesor 10 wspomaga operację „wczesne zakończenie” instrukcji, która modyfikuje rejestr CA 42.
Jak przedstawiono na figurach 14a-g, informacja bitowa CA jest składowana pośrednio w buforach przemianowania 34. Niezależnie od tego procesor 10 nie zawiera, obwodów do przekazywania takiej informacji bitowej CA do jednostek wykonawczych z buforów przemianowania 34. Jeśli informacja źródłowa operanda danej instrukcji zawiera rejestr CA 42, wtedy dana instrukcja zawiera informację o argumentach operacji źródłowych w zależności od wyników poprzedniej instrukcji (jeśli występuje), która modyfikuje rejestr CA 42.
177 392
Figura 12b przedstawia status bufora przywrócenia porządku 76 na początku cyklu 5 z fig. 13. W związku z tym, na fig. 12b, bufor przywrócenia porządku 76 przechowuje informację dla instrukcji INST a+4 przesłanej podczas cyklu 4 z fig. 13. Fig. 13 przedstawia różne stany instrukcji INST a+4, która związana jest z buforem przywrócenia porządku nr 7. Jak ukazano na fig. 12b, instrukcja INST a+4 jest przekazywana do FXUA 22 i ma jeden argument operacji przeznaczenia („przeznaczenia nr GPR” = 1); ponadto bufor przywrócenia porządku 7 (związany z instrukcją INST a+4) ma EOK =0 w odpowiedzi na instrukcję INST a+4 wykonywaną szeregowo.
Ponadto, ze względu na to, że instrukcja INST a zakończyła wykonywanie się podczas cyklu 4, w buforze przywrócenia porządku nr 3 na fig. 12b status „zakończony” = 1. W odniesieniu do fig. 13 instrukcja INST a+2 jest instrukcją typu Store [przechowaj]. Podczas cyklu 4 LSU 28 zakończyła pierwsze wykonywanie stanu EXEC A instrukcji INST a+2 związanej z instrukcją Store. Podczas stanu EXEC A, LSU 28 dokonuje translacji instrukcji Store i sprawdza instrukcję Store w celu ochrony składowania. W związku z tym w buforze przywrócenia porządku nr 5 na fig. 12b status „zakończony” = 1.
Figura 14b przedstawia status alokacji wskaźnika („AL”) 80, wskaźnika zapisu zwrotnego („WB”) 82 i wskaźnika zakończenia („CO”) 84 buforów przemianowania 34 na początku cyklu 5 fig. 13. Stąd fig. 14b odpowiada fig. 12b. Jak przedstawiono na fig. 14b WB 82 i CO 84 w dallzym ciitgu wskaaują na bufor przemianowania 2 a AL 80 skorrystaa z biOfori przemianowania 6 i wskazuje na bufor przemianowania 7. W związku z tym bufor przemianowania 6 jest alokowany do instrukcji INST a+4.
W buforze przemianowania 6, „informacja popraewna” = 0, wskazuje że pole „informacja” bufora przemianowania nie przechowuje poprawnych danych. Na początku cyklu 5 (fig. 13), w buforze przemianowania 6 „informacja poprawna” = 0, ponieważ wykonywanie instrukcji INST a+4 nie zostało jeszcze zakończone. Poprzez porównanie - na fig. 14b „informacja poprawna” = 1 w buforach przemianowania 2 i 3 w odpowiedzi na instrukcje INST a i INST a+1, kończące wykonywanie podczas cyklu 4 jak przedstawiono na fig. 13 wskazuje, że pola „informacja” buforów przemianowania 2 i 3 przechowują dane poprawne (reprezentowane na fig. 14b poprzez „DATA” w polach „informacja”).
W buforze przemianowania 6, „poprawne przeniesienie” = 1 wskazuje, że INST a+4 modyfikuje rejestr CA 42. Ponadto informacja o argumentach operacji źródłowych instrukcji INST a+4 zawiera rejestr CA 42, tak że instrukcja a+4 jest instrukcją wykonywaną szeregowo wraz z informacją o argumentach operacji źródłowych w zależności od wyników poprzedniej instrukcji INST a+1, która modyfikuje rejestr CA 42. Chociaż instrukcja INST a+3 nie modyfikuje rejestru CA 42, to INST a+3 ma informację o argumentach operacji źródłowych w zależności od wyników poprzedzającej instrukcji INST a+1, jak wskazano to na fig. 13 strzałka 100.
Figura 12c przedstawia status bufora przywrócenia porządku 76 dla początku cyklu 6 z fig. 13. Fig. 14c przedstawia status alokacji wskaźnika („AL”) 80, wskaźnika zapisu zwrotnego („WB”) 82 i wskaźnika zakończenia („CO”) 84 buforów przemianowania 34 na początku cyklu 6 fig. 13. Stąd fig. 14c odpowiada fig. 12c.
Jak ukazano na fig. 12c, informacja w buforach przywrócenia porządku o numerach 3, 4, 5 i 6 zosaaaa wykasowana w odpowiedzi na instrukcje INST a, INST a+1, INST a+2 i INST a+3 „kończące się” podczas cyklu 5, jak ukazano na fig. 13. Należy zauważyć, że instrukcja INST a+1 „wcześnie zakończona” podczas cyklu 5, poprzedza instrukcję INST a+1, kończącą wykonywanie podczas cyklu 5 jak jest wskazane na fig. 13 poprzez „ECOMP/EXEC”; instrukcja INST a+1 jest członem klasy instrukcji, które wymagają do wykonania więcej niż jeden cykl procesora 10.
W odniesieniu do fig. 14c, procesor 10 wystawia CO 84 za buforem przemianowania (to jest za buforem przemianowania 5 przed początkiem cyklu 6) poprzednio alokowany do danej instrukcji (to jest INST a+3) w odpowiedzi na kończenie przez procesor 10 wszystkich instrukcji (to jest INST a, INST a+1 i INST a+2) niezależnie od tego, czy procesor 10 ostatecznie zakończył wykonywanie danej instrukcji (to jest INST a+3, która w dalszym ciągu wykonuje się podczas cykli 6-8).
177 392
Również, podczas cyklu 5 układy logiczne, wykonywania szeregowego 84 (fig. 3) wyprowadzają sygnał poprzez linię 92 połączoną z LSU 28 w odpowiedzi na zakończenie instrukcji INST a i INST a+1; co wynika z faktu, że instrukcja INST a+2, (która była wysłana do LSU 28 podczas cyklu 3) miała swój bit związany EOK - w buforze przywrócenia porządku nr 5 - wyzerowany do stanu logicznego 0.
Podczas cyklu 5 instrukcja a+2 związana z instrukcją Store „kończy się” w odpowiedzi na zakończenie (cykl 4) wykonywania stanu EXEC A bez warunków wyjątkowych i na zakończenie (cykl 5) poprzednich instrukcji INST a i INST a+1. Podczas drugiego wykonywania stanu EXEC B, LSU 28 ostatecznie zapisuje informacje w podręcznej pamięci danych 16. LSU 28 wykonuje stan EXEC B instrukcji INST a+2 związanej z instrukcją Store tylko w odpowiedzi na sygnał z układów logicznych wykonywania szeregowego 84 wystawiany poprzez linię 92.
Jak przedstawiono na fig. 14c, AL 80 kontynuuje wskazywanie na bufor przemianowania 7, i CO 84 wykorzystując bufor przemianowania 2. wskazuje bufor przemianowania 6 w odpowiedzi na poprzednie instrukcje INST a, INST a+1 i INST a+3 „kończące się” podczas cyklu 5. Ponadto jak przedstawiono na fig. 13, obydwa wyniki instrukcji INST a były skopiowane z buforów przemianowania 2 i 3 do GPR 32 (fig. 1) podczas cyklu 5.
Na fig. 14c, w reakcji na zakończenie instrukcji INST a+1 podczas cyklu 5 pokazanego na fig. 13, bufor zmiany nazwy 4 przybiera wartość „informacja ważna” = 1. Wskazuje to, że w polu „informacja” bufora zmiany nazwy 4 jest przechowywana ważna dana (reprezentowana na fig. 14c nazwą „DATA” w polu „informacji”) oraz że w polu „carry” bufora zmiany nazwy 4 jest przechowywana ważna dana (reprezentowana na fig. 14c nazwą „CA” w polu „carry”). Ponieważ INST a+4 jest instrukcją realizowaną seryjnie z zależnością informacji o argumentach operacji źródłowych od wyników realizacji. W korzystnym przykładzie wykonania, w przypadku instrukcji sekwencyjnego wykonania (np. INST a+4), w. której wartość argumentu źródła zależy od nieprzesłanego argumentu (np. wartości bitu CA, przeznaczonej dla rejestru CA 42), procesor 10 wykonuje instrukcję sekwencyjnego wykonania (np. INST a+4) w odpowiedzi na operację na buforach zmiany nazwy 34, sygnalizując, że:
1) wszystkie poprzedzające instrukcje są „skompletowane” i
2) jeśli etap zapisu wstecznego którejś poprzedzającej, „skompletowanej” instrukcji nie został jeszcze zakończony, każda taka poprzedzająca instrukcja nie modyfikuje nieprzesłanego argumentu.
A zatem, na fig. 14d, CO 84 wskazuje bufor zmiany nazwy 6, sygnalizując w ten sposób dla instrukcji INST a+4, że wszystkie poprzedzające instrukcje są „skompletowane”. Ponadto, na fig. 14d, WB 82 wskazuje na bufor zmiany nazwy 5, sygnalizując w ten sposób, że chociaż etap zapisu wstecznego poprzedzającej, „skompletowanej” instrukcji INST a+3 nie został jeszcze zakończony, instrukcja INST a+3 nie zmienia żadnej nieprzesłanej informacji, przeznaczonej dla rejestru CA 42 (ponieważ „przeniesienie ważne” = 0 w buforze zmiany nazwy 5). Zatem procesor 10 wykonuje instrukcję INST a+4 podczas taktu 7.
W przypadku instrukcji sekwencyjnego wykonania (np. INST a+4), w której wartość argumentu źródła zależy od nieprzesłanego argumentu (np. wartości bitu CA przeznaczonej dla rejestru CA 42), procesor 10 wykonuje instrukcję sekwencyjnego wykonania (np. INST a+4) w odpowiedzi na operację na buforach zmiany nazwy 34, sygnalizując, że:
1) wszystkie poprzedzające instrukcje są „skompletowane” i
2) etapy zapisu wstecznego wszystkich „skompletowanych” instrukcji są zakończone, tak, że WB 82 i CO 84 wskazują na ten sam bufor zmiany nazwy.
Figura 14e przedstawia wartość wskaźnika przyporządkowania („AL”) 80, wskaźnika zapisu wstecznego („WB”) 82 i wskaźnika kompletacji („CO”) 84 buforów zmiany nazwy 34 na początku cyklu 8 z fig. 13. Jak widać na fig. 14e, AL 80 dalej wskazuje na bufor zmiany nazwy 7, zaś WB 2 dalej wskazuje na bufor zmiany nazwy 5.
Zakończenie wykonywania i „kompletacji” instrukcji INST a+4 następuje podczas taktu 7 przed zakończeniem wykonywania instrukcji INST a+4 podczas taktu 7, jak pokazuje „EXEC/COMP” na fig. 13. '
177 392
Zatem, jak widać na fig. 14e, CO 84 został zmieniony i wskazuje nie na bufor zmiany nazwy 6, ale na bufor zmiany nazwy 7.
Korzystnie, procesor 10 zmienia CO 84 po wykonaniu operacji na buforze zmiany nazwy (np. po wykonaniu operacji na buforze zmiany nazwy 6 przed rozpoczęciem taktu 8), poprzednio przyporządkowany do danej instrukcji (np. INST a+4)· w odpowiedzi na skompletowanie przez procesor 10 wszystkich poprzedzających instrukcji (np. INST a, INST a+1, INST a+2 i INST a+3) niezależnie od tego, czy procesor 10 rzeczywiście zakończył wykonywanie wszystkich poprzedzających instrukcji (np. INST a+3, która jest dalej wykonywana podczas taktu 8).
Jak widać na fig. 13, w odpowiedzi na zakończenie wykonywania instrukcji INST a+4 podczas taktu 7 ustawiane jest „Informacja ważna” =-1 (fig. 14e). Sygnalizuje to, że pole „Informacja” bufora zmiany nazwy 6 zawiera ważne dane (reprezentowane na fig. 14e przez „DANE” w polu „Informacja”) i że pole „Przeniesienie” bufora zmiany nazwy 6 zawiera ważne dane (reprezentowane na fig. 14e przez „CA” w polu „Przeniesienie”).
Figura 14f przedstawia wartość wskaźnika przyporządkowania („AL”) 80, wskaźnika zapisu wstecznego („WB”) 82 i wskaźnika kompletacji („CO”) 84 buforów zmiany nazwy 34 na początku taktu 9 na fig. 13. Jak widać na fig. 14f, AL 80 i CO 84 dalej wskazują na bufor zmiany nazwy 7, zaś WB 82 dalej wskazuje na bufor zmiany nazwy 5. „Informacja ważna” = 1 jest ustawiana w buforze zmiany nazwy 5 w odpowiedzi na zakończenie wykonywania instrukcji INST a+3 podczas taktu 8. Sygnalizuje to, że pole „Informacja” bufora zmiany nazwy 5 zawiera ważne dane (reprezentowane na fig. 14e przez „DANE” w polu „Informacja”).
Figura 14g przedstawia wartości wskaźnika przyporządkowania („AL”) 80, wskaźnika zapisu wstecznego („WB”) 82 i wskaźnika kompletacji („CO”) 84 buforów zmiany nazwy 34 na początku taktu 10 z fig. 13. Jak widać na fig. 14g, AL 80 i CO 84 dalej wskazująna bufor zmiany nazwy 7. Jak widać na fig. 13, wyniki wykonania instrukcji INST a+3 i INST a+4 zostały skopiowane z buforów zmiany nazwy 5 i 6 odpowiednio do rejestrów GPR 32 (fig. 1) podczas cyklu 9. Zatem, jak widać na fig. 14g, WB 82 został zmieniony i wskazuje teraz nie bufor zmiany nazwy 5, ale bufor zmiany nazwy 7; ponadto, informacja w buforach zmiany nazwy 5 i 6 została usunięta w odpowiedzi na skopiowanie wyników wykonania instrukcji INST a+3 i INST a+4 z buforów zmiany nazwy 5 i 6 do rejestrów GPR 32 (fig. 1) podczas taktu 9.
Figura 15 przedstawia różne etapy wykonywania pięciu instrukcji z fig. 12a-c bez właściwości „uprzedniego kompletowania”, charakterystycznej dla wcześniej opisanego przykładu wykonania. Figury 16a-h przedstawiają zawartości buforów zmiany nazwy 34 procesora 10 w różnych taktach przetwarzania instrukcji, przedstawionego na fig. 15. Jak widać na fig. 15, bez funkcji „uprzedniego kompletowania” wcześniejszego przykładu wykonania, wykonanie instrukcji INST a+4 jest opóźnione aż do cyklu 10, zaś kompletacja/zapis wsteczny wyników wykonania instrukcji INST a+4 jest opóźnione do cyklu 11. Wynika to stąd, że instrukcja INST a+4 jest instrukcją sekwencyjnego wykonania, której wykonanie jest opóźnione do skompletowania wszystkich poprzedzających instrukcji. Bez funkcji „uprzedniego kompletowania” instrukcja INST a+3 nie jest kompletowana aż do taktu 9, opóźniając w ten sposób wykonanie instrukcji INST a+4 do cyklu 10.
Dla porównania, na fig. 13, instrukcja INST a+3 jest „uprzednio kompletowana” podczas taktu 5, zaś instrukcja INST a+4 jest wykonywana podczas taktu 7. Instrukcja INST a+4 jest instrukcją sekwencyjnego wykonania, w której wartość argumentu źródłowego zależy od wyników wykonania poprzedzającej instrukcji INST a+1, która modyfikuje nieprzesłaną wartość bitu CA, przeznaczoną dla rejestru CA 42. Niemniej, (fig. 13), wykonanie instrukcji INST a+4 następuje podczas taktu 7, a kompletacja/zapis wsteczny wyników instrukcji INST a+4 występuje podczas taktu 9. Odpowiednio, na fig. 13 z cechą „wczesnej kompletacji” w korzystnej postaci, etapy wykonania, kompletacji i zapisu wstecznego instrukcji INST a+4 występują wcześniej niż na fig. 15 bez cechy „wczesnej kompletacji”.
Procesor 10 opóźnia wykonanie instrukcji określającej nienadane argumenty źródłowe (na przykład SPR 40 i rejestr CA 42), przynajmniej do czasu skompletowania wszystkich operacji poprzednich. Wynika to z tego powodu, że kiedy instrukcja określa nienadane argumenty
177 392 źródłowe, wykonanie instrukcji podlega takiej informacji o argumentach operacji źródłowych, która jest dostępna i ważna w rejestrach architektonicznych. Przykładami takich instrukcji są (1) rozszerzona instrukcja arytmetyczna, która odczytuje rejestr CA 42 i (2) instrukcja Przenieś Z, która przenosi informację z jednego z SPR'ów do jednego z GPR'ów 32.
Nawet jeśli wszystkie instrukcje poprzedzające są „skompletowane”, możliwe jest, aby instrukcja poprzedzająca była „wcześnie skompletowana” tak, że jej etap skompletowania poprzedza jej etap wykonania. Jak to omówiono powyżej, w połączeniu z fig. 1-5, procesor 10 zawiera zespół obwodów do wysyłania informacji do jednostek wykonawczych z GPR'ów 32, FPR'ów 36, buforów zmiany nazwy 34 i 38, oraz rejestrów kontrolnych. Jeśli konkretna instrukcja cechuje się zależnością informacji o argumentach operacji źródłowych od wyników poprzedniej „wcześnie skompletowanej” instrukcji, i jeśli informacja argumentu źródłowego jest podtrzymywana przez taki układ nadawczy procesora 10, wtedy procesor 10 opóźnia wykonanie konkretnej instrukcji do czasu, aż procesor 10 zakończy etap wykonywania instrukcji „wcześnie skompletowanej” (w którym to momencie wyniki instrukcji „wcześnie skompletowanej” są dostępne i ważne w buforze zmiany nazwy).
Przez analogię, jeśli informacja o argumentach źródłowych nie jest podtrzymywana takim układem nadawczym procesora 10, wtedy procesor 10 opóźnia wykonanie konkretnej instrukcji do czasu, aż procesor 10 zakończy etap zapisywania instrukcji „wcześnie skompletowanych” (w którym to momencie wyniki instrukcji „wcześnie skompletowanych” są dostępne i ważne w rejestrze architektonicznym). Jeśli instrukcja „wcześnie skompletowana” nie jest wykonana do końca, wtedy wyniki instrukcji (informacja argumentu wynikowego) nie są dostępne. W takiej sytuacji, procesor 10 odpowiednio opóźnia etap zapisywania instrukcji „wcześnie skompletowanej”, do czasu, aż instrukcja zakończy wykonywanie.
Jeśli instrukcja podlega wczesnemu skompletowaniu, wtedy jednostka sekwencyjna 18 wysyła sygnał wskazujący, jednocześnie wysyłając instrukcję do skojarzonej jednostki instrukcji. W odpowiedzi na taki sygnał wskazujący, skojarzona jednostka wykonująca nie próbuje modyfikować wyznaczonej pozycji instrukcji w buforze zmiany przyporządkowania 76. Wynika to z tego, że po skompletowaniu wyznaczonej instrukcji wejściowej buforu zmiany przyporządkowania, pozycja bufora zmiany przyporządkowania jest ponownie przyporządkowywana do innej instrukcji tak, że informacja na pozycji bufora zmiany przyporządkowania nie jest już ważna.
Odpowiednio, jeśli instrukcja jest poddana wczesnemu skompletowaniu, wtedy wyznaczona pozycja bufora zmiany przyporządkowania instrukcji może być nieważna, zanim jednostka wykonująca instrukcję zakończy wykonywanie instrukcji. W korzystnym przykładzie wykonania, podczas pojedynczego cyklu procesora 10, jednostka sekwencyjna 18 kontroluje cztery najstarsze pozycje buforów zmiany przyporządkowania posiadające ważne informacje tak, że cztery instrukcje są przeznaczone do jednoczesnego skompletowania podczas pojedynczego cyklu.
Instrukcja Przenieś Z wprowadza informację z SPR'a, przy czym SPR jest modyfikowany tylko instrukcją Przenieś Do. Korzystnie, procesor 10 wykonuje instrukcję Przenieś Z w odpowiedzi na skompletowanie wszystkich instrukcji poprzednich, nawet jeśli jedna albo więcej z instrukcji poprzednich jest „wcześniej skompletowana”. Jest to możliwe, ponieważ procesor 10 nie „kompletuje wcześniej” instrukcji (na przykład instrukcji Przenieś Do albo instrukcji Zapamiętaj), która teoretycznie nie ma być wykonana. Jeśli wszystkie poprzednie instrukcje są „skompletowane”, wtedy procesor 10 rzeczywiście ukończył wykonywanie wszystkich instrukcji Przenieś Do. Odpowiednio, procesor 10 wykonuje instrukcję Przenieś Z w odpowiedzi na skompletowanie wszystkich instrukcji poprzednich, ponieważ w takiej sytuacji procesor 10 rzeczywiście zakończył wykonywanie wszystkich poprzednich instrukcji Przenieś Do.
Procesor 10 podtrzymuje niedokładny, nieodtwarzalny tryb pracy wyjątkowej zmiennoprzecinkowej. Podczas działania w takim trybie, procesor 10 sygnalizuje warunek wyjątkowy zmiennoprzecinkowy nie będąc dokładnym albo informując, która instrukcja zmiennoprzecinkowa spowodowała warunek wyjątkowy. Kiedy procesor 10 posługuje się wyjątkiem, procesor 10 może być w stanie, w którym skompletował on różną ilość instrukcji poza instrukcją
177 392 zmiennoprzecinkową, która spowodowała wyjątek. Podczas działania w tym trybie, procesor 10 osiąga zwiększoną wydajność dla sekwencji instrukcji, które nie są wrażliwe na zatrzymanie wykonywania programu dokładnie na instrukcji zmiennoprzecinkowej, powodującej warunek wyjątkowy.
Podczas działania w dokładnym trybie pracy wyjątkowej zmiennoprzecinkowej, procesor 10 „wcześnie kompletuje” instrukcję zmiennoprzecinkową przed zakończeniem wykonywania instrukcji zmiennoprzecinkowej, w odpowiedzi na skompletowanie wszystkich instrukcji poprzednich. Przy niedokładnym, nieodtwarzalnym trybie pracy wyjątkowej zmiennoprzecinkowej „wcześnie skompletowane” instrukcje zmiennoprzecinkowe różnią się od innych typów instrukcji „wcześnie skompletowanych”, ponieważ procesor 10 „wcześnie kompletuje” instrukcję zmiennoprzecinkową, nawet jeśli późniejs/e wykonanie instrukcji zmiennoprzecinkowej może spowodować warunki wyjątkowe zmiennoprzecinkowe. Każda pozycja bufora zmiany przyporządkowania sygnalizuje, czy jego skojarzona instrukcja jest instrukcją zmiennoprzecinkową
W odpowiedzi na zakończenie etapów wykonania i kompletowania instrukcji zmiennoprzecinkowej, jej wyniki są pośrednio przechowywane w zmiennoprzecinkowych buforach zmiany nazwy 38. Wyniki są pośrednio przechowywane w buforach zmiany nazwy 38 do czasu, aż wyniki wszystkich wcześniejszych instrukcji zmiennoprzecinkowych są skopiowane do FPR'ów 36. W ten sposób, procesor 10 przechodzi odpowiednio etapy „zapisywania” instrukcji zmiennoprzecinkowych w porządku ich zaprogramowanej sekwencji.
Bufory zmiany nazwy 38 pośrednio przechowują wyniki instrukcji zmiennoprzecinkowych, dla późniejszego skopiowania do FPR'ów 36. Ponadto, bufory zmiany nazwy 38 przechowują dalej informację stanu dla odpowiedniego zmodyfikowania zmiennoprzecinkowego statusu architektonicznego i rejestru kontrolnego („FPSCR”) (nie pokazanego na rysunku). W odpowiedzi na wykrycie warunku wyjątkowego zmiennoprzecinkowego (zasygnalizowanego przez bit FEX ustawionego FPSCR), podczas kopiowania wyników z buforów zmiany nazwy 38 do FPR'ów 36 i do FPSCR, procesor 10 zgłasza warunek wyjątkowy.
Podczas działania w niedokładnym, nieodtwarzalnym trybie pracy wyjątkowej, procesor 10 zgłasza warunek wyjątkowy zmiennoprzecinkowy nie będąc dokładnym albo informując, która instrukcja zmiennoprzecinkowa spowodowała warunek wyjątkowy. Korzystnie, w takiej sytuacji, procesor 10 zgłasza warunek wyjątkowy w następujący sposób.
Po pierwsze, procesor 10 zatrzymuje kompletowanie instrukcji podczas cyklu, w którym procesor 10 wykrywa warunek wyjątkowy zmiennoprzecinkowy. Dokładna instrukcja, podczas której procesor 10 zatrzymuje kompletowanie nie jest istotna tak długo, jak długo stan procesora 10 dokładnie odbija efekty wszystkich skompletowanych instrukcji, poprzedzających konkretną instrukcję, podczas której procesor 10 zatrzymuje kompletowanie.
Po drugie, procesor 10 kończy wykonywanie wszystkich poprzednich „wcześnie skompletowanych” instrukcji. Ponadto, procesor 10 kopiuje wyniki takich instrukcji do rejestrów architektonicznych tak, ze wszystkie pozycje zapisu w buforach zmiany nazwy 34 i 38 zostają puste.
Po trzecie, procesor 10 zgłasza warunek wyjątkowy zmiennoprzecinkowy. Przy niedokładnym, nieodtwarzalnym trybie pracy wyjątkowej, „wcześnie skompletowane” instrukcje zmiennoprzecinkowe różnią się od innych typów instrukcji „wcześnie skompletowanych”, ponieważ procesor 10 „wcześnie kompletuje” instrukcję zmiennoprzecinkową pomimo tego, że następne wykonanie instrukcji zmiennoprzecinkowej może spowodować warunek wyjątkowy zmiennoprzecinkowy. Zgodnie z tym, inne instrukcje, które są „wcześnie skompletowane” albo rzeczywiście skompletowane, nie powodują drugiego warunku wyjątkowego.
W odpowiedzi na wykrycie warunku wyjątkowego, wynikającego z instrukcji zmiennoprzecinkowej, procesor 10 opóźnia zgłoszenie warunku wyjątkowego zmiennoprzecinkowego do czasu, aż procesor 10 zakończy wykonywanie wszystkich poprzednich „wcześnie skompletowanych” instrukcji zmiennoprzecinkowych bez natknięcia się na warunek wyjątkowy zmiennoprzecinkowy. Korzystnie, w takiej sytuacji, procesor 10 zgłasza warunek wyjątkowy w następujący sposób.
177 392
Po pierwsze, procesor 10 zatrzymuje kompletowanie instrukcji podczas cyklu, w którym procesor 10 wykryje warunek wyjątkowy zmiennoprzecinkowy. Procesor 10 zatrzymuje kompletowanie instrukcji podczas instrukcji powodującej warunek wyjątkowy zmiennoprzecinkowy tak, że instrukcja nie jest skompletowana.
Po drugie, procesor 10 kończy wykonywanie wszystkich poprzednich instrukcji „wcześnie skompletowanych”. To decyduje, czy procesor 10 jest zdolny do zakończenia wykonywania wszystkich poprzednich „wcześnie skompletowanych” instrukcji zmiennoprzecinkowych bez napotykania na warunki wyjątkowe zmiennoprzecinkowe. Ponadto, procesor 10 kopiuje wyniki takich instrukcji do rejestrów architektonicznych tak, że wszystkie pozycje zapisu w buforach zmiany nazwy 34 i 38 zostają puste. W ten sposób, kiedy procesor 10 zgłasza warunek wyjątkowy, istnieje stan zgodny procesora 10. Dodatkowo, czeka on do czasu, aż inne bufory zapisu są puste, aby, kiedy rozpoznany jest warunek wyjątkowy, zaprezentować stan zgodny procesora.
Po trzecie, jeśli procesor 10 nie wykrył warunku wyjątkowego zmiennoprzecinkowego, wtedy procesor 10 zgłasza dokładny, niezmiennoprzecinkowy warunek wyjątkowy. Przez analogię, jeśli procesor 10 wykrył warunek wyjątkowy zmiennoprzecinkowy, wtedy procesor 10 zgłasza niedokładny, nieodtwarzalny warunek wyjątkowy zmiennoprzecinkowy.
177 392
W o cu w o
Ci O CU « O
Q <
*3
W
W o w <? 2 Q ¢4 2 O K W w o Eh O en 2
CM
O
H 2
Cd
Eh 2
en 2
O >t
2 U
2 2
Id 2
Fd 2
O 2
2 en
GPRS 3 2 Z REJESTRÓW GPRs 3 2
W 2Eh Cen cio 02 kQ DW 03 Fi •Ό η ω * z Eh Ιό □3 X O O 2 2 2 W ω 2 r> ti
Cd n en
Ωί
Eh en w o r> ω w cd Cd 2
Ci
Eh en ω o >-j u w ci ci 2 £4 tSJ
O
H
O
O iH <
O <
O m
CN
C « ci w O Eh 14 CO 2 O 03 2
O O Cd 2 2
CN
C 2
Cd Cd ^O Eh
Cu en 2 O CQ 2
O Cd 2 2
177 392
Z PAMIĘCI PODRĘCZNEJ 14
86 88 90 92 94
DO JEHO6IKI 22 -1
FIG 3 00 20 _
DO JEDNOSTKI 24 _
DO JEDNOSTKI 26 DO JEDNOSTKI 28 _
DO JEDNOSTKI 30 _
177 392
Numer buforu Typ instrukcji #GPR przezn #FPR .przezn. Zakończę nie -Wyjątek
Jednostka wykonawcza EOK
0 22 0 1 0 0 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 22 0 1 0 0 0
FIG. 4
Numer buforu Typ instrukcji # GPR przezn. #FPR )rzezn. Zakoń- czenie Wyjątek
Jednostka wykonawcza EOK
0 1 2 3 4 5 6
7 24 1 1 0 1 0
8 22 1 1 0 1 0
9 28 1 2 0 1 0
10 11 12 13 14 15 28 1 2 0 1 0
FIG. 6
177 392 rCykl 1 Cykl 2 Cykl 3 Cykl 4 Cykl 5 Cykl 6 Cykl
I O 'C o c 44 α cd
m. d
Id c
o >ν· l
I
O dO) O-H 44 £ OPd Q3
C
Kt cn £
H
o
<—1 1 OJ
£ -H
ί-J O c
44 44 OJ
Cd N
ęp CN o
ΟΊ 1
cd
r--1 c
44 o
14 OJ
O >,·Η
Z-C.
co 1 <d
M
1—1
44 cn oj
>1
O Z c
τ— φ
r- N
I 0 1 (U 0
'c: -r £ -H r—) £
υ c O £ 44 O
44 α 44 OJ >1 4^ α
(0 f (Q N u (ΰ -r“
ki r fj n N C
fd UO id
c C
o r—ł υ
44 <3 44 44 0
>1- >1 >—
2 c U 3 <-
OJ
03 N
m LT)
£
» o
o 44 44 0
>1 «3 -r
UL U CN C
“OJ— •H
1 c
cd CO
c Ή £
o J4 O
44 OJ >t 44
O
> C
Ή
C 1 1 1
(0 cd co <d fd
AJ AJ AJ AJ
i—ł >n >1
cn cn Φ 44 cn c w-.a.
>t 5h-<- >, >1·»
2 3 c. U 3 i S c
1 1 CN 1 1
0 o o 0
d < '0 o. •—1 d < d o
0 *r n 44 O ·' o ·<-
44 t 44 K 44 i Si c
OJ C OJ cc OJ OJ f 0) σ
Q J Q S ci ’ a
OJ OJ α OJ
•H •rł •rj •H
£ c c £
cd td (0 03
s ·? 3
u 0 r—1 o O
d d 44 d d
<d cd >1 cd cd
P O P P
-Q m
O
UL +
c
Ki
W £
M
CN +
£ £
-P w
c c
P
W c
ι-H CN + + c c
Kl +J cn £
Ki
-p cn
C
177 392
CO κΊ
X >»
O
1—
X >1
U
ώ N
in O
2
i-q O
* X ΓτΊ
Sh < s
O N
^r 1 <
2
O
*5 χ ω
> HI
o 2 a
m 1 f<
w
1-4 >4
X ω w
>1 >4 1—I
O 2 2
(M 1
Q w
i-i S w
X 9 z
<
O a s
ω
u
i—i g
5
X 2
>* n
O M
Se < t w
H 'Z pP ω
-2o
Ofc
CH
I fcj <SH 02 <c<
NL <
o
ΧΗ £2
X K W H 1*2
-Ξ-
ω o
G <
jil <
O
2W >4H <
> . cnw >h jsa
I o
GW
OH «2
Cd<
GS
r-ł + X CN + X m + X
X
t X 05 05
&, E-* E-* E*
Eh ω ω σι
ω 2 2 2
H ł—1 w i-l
ro u_
177 392 82 )
WSKAŹNIK ZAPISU WSTĘPNEGO
WSKAŹNIK —
KOMPLETACJI ,
34-7
WSKAŹNIK PRZY-POZĄDKOWANIA, J
START CYKLI 415
Λ
NUMER BUFORA NUMER REJESTRU INFORM.
0
1
2
3
4
5
6
7
8
9
10
11
FIG. 8a 82J
WSKAŹNIK ZAPISU WSTĘPNEGO \ f84\
WSKAŹNIK
KOMPLETACJI
WSKAŹNIK PRZY=. PORZĄDKOWANIA 80^
START CYKLU 7
0
1
2
3
4
5
6
7
8
9
10
11
82)
WSKAŹNIK ZAPISU — WSTĘPN.84
WSKAŹNIK
KOMPLETACJI \
WSKAŹNIK*
PRZYPORZĄDKOWANIA r
W 34 START CYKLU 6 j
0
1
2
3
4
5
6
7
8
9
10
11
FIG. 8b
WSKAŹNIK FIG. 8c ZAPISU
WSTĘPNEGO ^WSKAŹNHW g^KCMPLETy'
WSKAŹNIK
PRZYPORZĄDKOWANIA
7
START CYKLU 8
0
1
2
3
4
5
6
7
8
9
10
11
FIG. 8d
177 392
CO .-4 tt
U
Γ*tt
O kO tt
O o
o
m 1 w J tt
2 H1 2H
tt 02 02
tt ttW tttt
>+ <n <N
U NU NO
^r tt tt 1 rf 2 O tttt 1 rf 2 O tt tt
>· U !hh 2 2
m tt YŁA- 1 rf tt
tt >< O M- 32 UM >H 32
CM 1 o 1 o
OCl QW
tt o OH
tt tt'2 tt2
Wrf Wrf
O Q3 U3
i-i 1 rf 1 rf
,5 13
tt O O
tt UW Q K
<H rf H
O tt2 ftl 2
<
O tt Σ3
W
H •z
I <
cn
X
X <
O tt tx >4 H JS 2 i
<
>H
CO Cl >h H Σ3 2 cn
O
LL
O
Q W O k tt 2 W < Cł s tt
S
O
Q <
Al
I
O
Q
O tt ω
Q tt
H rf
r—i CM ro
+ + +
d tt tt
Eh EH
ω tn CO
2 2 2
H H H
177 392
WSKAŹNIK KOMPLETACJI x 7
WSKAŹNIK
90'
WSKAŹNIK
KOMPLETACJI
WSKAŹNIK
90'
START CYKLI 415
NUMER BUFORA NUMER REJESTRU INFORM.
0
1
2
3
4
5
6
7
8
9
10
11
FIG. 10a . 94
KOMPLE-; TACJI ’
WSKAŹNIK-” PRZYPORZĄDKOWANIA
START CYKLU 6
NUMER I BUFORA1 NUMER REJESTRU INFORM.
0
1
2
3
4
5
6
7
8
9
10
11
START CYKLU 7 '94
NUMER BUFORA NUMER REJESTRU INFORM.
0
1
2
3
4
5
6
7
8
9
10
11
FIG. 10b
FIG. 10c
PRZYPORZĄDKOWANI.
7
START CYKLU 8
WSKAŹNIK
KOMPLETA
WCJI \
NUMER BUFORA NUMER REJESTRU INFORM.
0
1
2
3
4
5
6
7
8
9
10
11
FIG. 10d
177 392
X E
ca U
E-t >4
W ta
O U
2 2
Q <
ca 2
*D O
X
O
Q 3
. <
ε- 5 « 5 ω < Ε-* >5 Η Ο Ε W rj Ο Ε Εη < ω > ο Ε υ
Μ ω 2 ca
ΙΌ Ο ca ο tó ο >-> u ca X 2 Ε-» >Ό ω > ο υ 2 2 ca co rH X 2 ca cn
X Ε ca ο Eh >ι Cfl tSJ O U 2 5 Q < ca 2 r> o x o >i
Q 5
O
LU
X E O
ca
Eh 03
ω CJ
o 2
2 <
Q 2
ca O
*“3 X
03
177 392
NUMER BUFORA TYP INSTRUKCJI #GPR PRZEZN. #FPR PRZEZN. SKOŃ- CZONE WYJĄTEK
JEDNOSTKA WYK. EOK
0
2
3 22 1 2 0 0 0
4 24 1 1 0 1 0
5 28 0 0 0 0 0
6 7 8 9 10 11 12 13 14 15 26 1 1 0 1 0
FIG. 12a r
NUMER BUFORA TYP INSTRUKCJI #GPR PRZEZN. #FPR PRZEZN. SKOŃ- CZONE WYJĄTEK
JEDNOSTKA WYK. EOK
0 1 2
3 22 1 2 0 1 0
4 24 1 1 0 1 0
5 28 0 0 0 1 0
6 26 1 1 0 1 0
7 8 9 10 11 12 13 14 15 22 0 1 0 0 0
FIG. 12b
Numer Typ instrukcj i #GPR Przezn #FPR . Przezn. Skoń- czono Wyjątek
buforu Jednostka wykonawcza EOK
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 22 1 1 0 1 0
FIG. 12c
177 392 (Ν τ—1 >5
Ο >.
Ο <—1 44 >ι U
σ» &
2 2
ι—1 ISJ
44
>1 Λ α
U f0
Ν
00
ι-1
Ν'
>1
Ο
Γ- •V
—1 » ·
β Ν
Φ Ο Ο
α •γΗ 54 -β
β >ι Ο
(ϋ β γρ- SW
<ο Ο
Λ Ο 0
ι-Η ,2 ffl 44
44 £53 >1
) 2
CJ Ch 44 (
<rJ >1 λτ
Ν Ξ, Ά''
ΙΓ) Οί
rd ’ 2 Ν «
44 Ν £53 54 Ο 44
>1 υ ·
Ο β Ui h 44 υ b
ο <ΰ σΐ > ίθ
csa Ν 2 tą.
I πϊ 1 π3 ι (TJ β
γ—I β β β < Μ
44 0 0 ο
>1 54 <υ 54 Φ 24 Φ σι φ
Ο >ι·Η >,·Η >ν-
S C g C 2 c 2 β
Π (0 ι (ΰ ι (C 1 β 1 0
Γ-1 Μ Η «Μ rM tJ φ
44 >1 η ·η
Μ 0) ω ο ω α ω α 44 C
Ο >ν<- Φ Π3
2 β 2 C 2 c 2 C D 5
d I—ι m
+ + + +
ro Π3 φ
μ
+j «
ω Μ Μ μ μ
β +>
Η ω ω σι ω
β β β β
Η Κ w ι—1
CO
Ο
LU
177 392
WSKAŹNIK KOMPLETACJI (
WSKAŹNIK ZAPISU WSTĘPNEGO
82'
WSKAŹNIK g0 J PRZYPORZĄDKOWANIA
POCZĄTEK CYKLU 4
NUMER BUFORA NUMER REJESTO INKR INF. 4AŻNA PRZENIE- SIENIE PRZE-_ >JXESIEŃ, WAŻNE
0
1
2 0 0
3 0 0
4 0 1
5 0 0
6
7
8
9
10
11
FIG. 14a
POCZĄTEK CYKLU 5
FIG. 14b
177 392
WSKAŹNIK ZAPISU
WSTĘPNEGO
WSKAŹNIK 84. KOMPLETACJI
WSKAŹNIK
RZYPORZĄDKOWANIA
WSKAŹNIK ZAPISU g2 WSTĘPNEGO l
WSKAŹNIK KOMPLETACJI
84.
WSKAŹNIK
PRZYPORZĄDKOWANIA
POCZĄTEK CYKLU 6 r
NUMER BUFORA NUMER REJESTRU INFOR- MACJA INFO. WAŻN7 PRZE- NIE- SIENI! PRZĘN- IESIE- nSSżnf
0
1
2
3
4 DANE 1 CA 1
5 0 0
6 0 1
7
8
9
10
11
FIG. 14c
POCZĄTEK CYKLU 7
NUMER BUFORA NUMER REJESTRU INFO- RMA- CJA INFOI MACJ? WAŻN? PRZE- NIE- SIENIE PRZE- NIESI- ENIE WAŻNE
0
1
2
3
4
5 0 0
6 0 1
7
8
9
10
11
FIG. 14d
177 392 r82
WSKAŹNIK ZAPISU _ WSTĘPNEGO
WSKAŹNIK KOMPLETACJI i , 80J
WSKAŹNIK PRZYPORZĄDKOWANIA
WSKAŹNIK ZAPISU WSTĘPNEGO
WSKAŹNIK 80. PRZYPORZĄDKOWANIA
WSKAŹNIK
KOMPLETACJI
84'
START CYKLU 8
NUMER BUFORA NUMER REJESTRU INFO. INFO. WA2NA »· SIENII PRZEN. WA2NE
0
1
2
3
4
5 0 0
6 DANE 1 CA 1
7 Ί
8
9
10
11
FIG. 14e
START CYKLU 9
NUMER BUFORA ' NUMER REJESTRU INFO. INFO. WA2NZ PRZE- NIE- SIENIE PRZEN. WA2NE
0
1
2
3
4
5 DANE 1 0
6 DANE 1 CA 1
7
8
9
10
11
FIG. 14f
ΠΊ 392
Αί >1 α
£ 0) φ £
Ν -Ν Μ 03 CU 5
Αί >1
Ο “φ” •Η Φ ω ν. φ_α Ll Ή ·, ^£ C
ΌΓ
Ο C Μ-1 -ν £ 03 Μ 5
Αί
U
Αί ίμ
U £ -μ μ ω φ φ £ ·ο 3 Φ s μ
Αί >ί
U μ μ Φ ο ε M-t 3 3 z .a cn o
Αί ^cn •H <X?) C 3^ς, 'N W -P i0 -d O Αί α μ w o3 s 5 Ν Ν
I
Ό
03*
Αί Ν Α Μ 03 £ Ο ·Η 'Ν α. £ 03 >ι 03 Αί Ν 5 ω μ ο £ ΛΑί
-Η •η ϋ
Αί 03 -Η +J £ Φ •-Ν (—1 <ΰ ίΧ Αί ε α ο 5 Αί
Αί
U
Αί υ
Αί >ι υ
2* >ι υ
Αί >ι
U
Dekodo- Wysyła- Wykon. Kończ/ wanie_ητ e_ _ Zap. Zwr +
Μ
-μ μ
Ρ μ
μ (Λ £
μ
-μ μ
177 392
POCZĄTEK CYKLU 4
NUMER BUFORA NUMER REJESTRU INF. INF. WAŹEA, ER5ENTESTFNTR ; PFZENTE- 4ihNlK WA7.NE
0
¢84 1
»mCJi - 2 0 0
WSKAŹNIK ZAPIS!) 3 0 0
WSTĘPNEGO 4 0 1
WSKAŹNIK przyporządkowania 5 0 0
6
80 7
8
9
10
11
FIG. 16a
POCZĄTEK CYKLU 5
I<84
WSKAŹNIK ZAPIS.U WSTĘPNEGO 82 7
WSKAŹNIK gpj PRZYPORZĄDKOTMA
NUMER BUFORA NUMER REJESTRU CNF. INF. WAŻNA PRZENIE- SIENIE ERZENIE- SEENIE
0
1
2 DANE 1 0
3 DANE 1 0
4 0 1
.5 0 0
6 0 1
7
8
9
10
11
FIG. 16b
177 392
WSKAŹNIK ZAPISU
WSTĘPNEGO
WSKAZN^'KOMPLETACJI
WSKAŹNIK 80 9
PRZYPORZĄDKOWANIA
WSKAŹNIK 807
PRZYPORZĄDKOWANIA
POCZĄTEK CYKLU 6
NUMER BUFORA NUMER REJESTRU INFO- RMA- CJA INFO- łMA- Stadna PRZE- NIE- ςΤΕΝΤΡ PRZE- NIESI- ENIE
0
1
2
3
4 DANE 1 1
5 0 0
6 0 1
7
8
9
10
11
FIG. 16c
POCZĄTEK CYKLU 7 i
WSKAŹNIK ZAPISU WSTĘPNEGO r82
WSKAŹNIK
KOMPLETACJI
NUMER BUFORA NUMER REJESTRU INFO- RMA- CJA INFOR WIJA WAŻNA PRZE- NIE- SIENIE PRZEN- IESIE- NIE. WAŻNE
0
1
2
3
4
5 0 0
6 0 1
7
8
9
10
11
FIG. 16d
177 392
START CYKLU 9
'riSKAŹNIK ,82 KOMPLETACJA i <^WSKAŹNIIC* ZAPISU WSTĘPNEGO WS.<WŹNIK PRZY- 80 PORZĄDKOWANIA NUMER BUFORA NUMER REJESTRU INFO. INFO. WAZN? PRZE- NIE- SIENIE PRZEN. WAŻNE
0
1
2
3
4
5 DANE 1 0
6 0 1
7
8
9
10
11
FIG. 16e
WSKAŹNIK
KOMPLETACJI 84 f
WSKAŹNIK*
ZAPISU WSTĘPNEGO 80^
WSKAŹNIK PRZY— iP iRZĄDKOWANIA
START CYKLU
NUMER BUFORA NUMER REJESTRU INFO. INFO. WAZN7 PRZE- NIE- SIENIE PRZEN. WAŻNE
0
1
2
3
4
5
6 0 1
7
8
9
10
11
FIG. 16f
177 392
WSKAŹNIK ZAPISU WSTĘPNEGO m (
WSKAŹNIK
KOMPLETACJI
WSKAŹNIK
PRZYPORZĄDKOWANIA
WSKAŹNIK
PRZYPORZĄDKOWANI^80
WSKAŹNIK
ZAPISU
WSTĘPNEGO
WSKAŹNIK
ZAPISU
WSTĘPNEGO
82'
POCZĄTEK CYKLU 11
NUMER BUFORA NUMER REJESTRU INFO- RMA- CJA INFO- WA7NS PRZE- NIE- SIENIE PRZEN- IESIE- NIE. WAŻNE
0
1
2
3
4
5
6 DANE 1 CA 1
7
8
9
10
11
FIG. 16g
POCZĄTEK CYKLU 12
NUMER BUFORA NUMER REJESTRU INFO- RMA- CJA CNFOR 4AGJA 4AZNA PRZE- NIE- SIENIE PRZEN- IESIE1· NIE. WAŻNE
0
1
2
3
4
5
6
7
8
9
10
11
FIG. 16h \ΊΊ 392
Departament Wydawnictw UP RP. Nakład 70 egz.
Cena 6.00 zł.

Claims (10)

  1. Zastrzeżenia patentowe
    1. Sposób przetwarzania informacji w systemie przetwarzania informacji z równoczesnym wykonywaniem instrukcji, w którym wysyła się konkretną instrukcję do układów wykonawczych systemu przetwarzania dla jej wykonania oraz, po wysłaniu tej konkretnej instrukcji, wysyła się do układów wykonawczych szeregowa instrukcję wykonawczą, przy czym szeregowa instrukcja wykonawcza jest instrukcją wykonywaną tylko w sposób uporządkowany w jej zaprogramowanej sekwencji, znamienny tym, że wysyła się szeregową instrukcję wykonawczą przed zakończeniem wykonania danej konkretnej instrukcji i następnie opóźnia się wykonanie wysłanej szeregowej instrukcji wykonawczej przynajmniej do zakończenia wykonania danej konkretnej instrukcji.
  2. 2. Sposób według zastrz. 1, znamienny tym, że wysyła się, przed zakończeniem danej konkretnej instrukcji a po wysłaniu szeregowej instrukcji wykonania, dodatkową instrukcję dla układów wykonawczych.
  3. 3. Sposób według zastrz. 2, znamienny tym, że inicjuje się wykonanie instrukcji dodatkowej przed zakończeniem wykonania danej konkretnej instrukcji.
  4. 4. Sposób według zastrz. 1, znamienny tym, że w trakcie wysyłania szeregowej instrukcji wykonawczej wysyła się szeregową instrukcję wykonawczą do stanowiska rezerwacji w układach wykonawczych.
  5. 5. Sposób według zastrz. 1, znamienny tym, że w trakcie wysyłania szeregowej instrukcji wykonawczej wyprowadza się informację sygnalizacyjną do układów wykonawczych dla eliminacji wykonania wysłanej szeregowej instrukcji wykonawczej przez układy wykonawcze.
  6. 6. Sposób według zastrz. 5, znamienny tym, że wyprowadza się dodatkową informację sygnalizacyjną do układów wykonawczych dla zainicjowania wykonania wysłanej szeregowej instrukcji wykonawczej przez układy wykonawcze w odpowiedzi na zakończenie wykonania danej konkretnej instrukcji.
  7. 7. Sposób według zastrz. 1, znamienny tym, że szeregową instrukcję wykonawczą nie wykonuje się spekulatywnie.
  8. 8. Sposób według zastrz. 7, znamienny tym, że wynik wykonania szeregowej instrukcji wykonawczej wpisuje się bezpośrednio w lokację pamięci bez pośredniego przechowywania w buforze przemianowania.
  9. 9. Sposób według zastrz. 1, znamienny tym, że wykonanie szeregowej instrukcji wykonawczej opóźnia się do momentu, gdy cała informacja o jej argumentach operacji źródłowych stanie się dostępna i ważna.
  10. 10. Sposób według zastrz. 9, znamienny tym, że wykonanie szeregowej instrukcji wykonawczej określa się przez przynajmniej jeden nie zgłaszany z wyprzedzeniem argument operacji źródłowej.
PL94316566A 1994-03-31 1994-12-27 Sposób przetwarzania informacji PL177392B1 (pl)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US22099394A 1994-03-31 1994-03-31
PCT/EP1994/004317 WO1995027246A1 (en) 1994-03-31 1994-12-27 Processing system and method of operation

Publications (2)

Publication Number Publication Date
PL316566A1 PL316566A1 (en) 1997-01-20
PL177392B1 true PL177392B1 (pl) 1999-11-30

Family

ID=22825892

Family Applications (1)

Application Number Title Priority Date Filing Date
PL94316566A PL177392B1 (pl) 1994-03-31 1994-12-27 Sposób przetwarzania informacji

Country Status (13)

Country Link
US (1) US6041167A (pl)
EP (1) EP0753173B1 (pl)
JP (1) JP2742392B2 (pl)
KR (1) KR0145035B1 (pl)
CN (1) CN1099082C (pl)
AT (1) ATE177546T1 (pl)
CA (1) CA2137046C (pl)
DE (1) DE69417071T2 (pl)
HU (1) HUT75816A (pl)
PL (1) PL177392B1 (pl)
RU (1) RU2150738C1 (pl)
TW (1) TW353732B (pl)
WO (1) WO1995027246A1 (pl)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1002269B1 (en) * 1997-08-06 2003-10-15 Advanced Micro Devices, Inc. An apparatus and method for accessing special registers without serialization
EP2169538A4 (en) * 2007-06-20 2010-12-01 Fujitsu Ltd INSTRUCTION PROCESSOR
WO2008155840A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令制御装置及び命令制御方法
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
JP6306729B2 (ja) 2014-03-27 2018-04-04 インテル・コーポレーション ストアをソート及びリタイアする命令及びロジック
CN108255743A (zh) * 2017-12-06 2018-07-06 中国航空工业集团公司西安航空计算技术研究所 一种用于在染色内核中写回仲裁电路
KR20220146835A (ko) * 2021-04-26 2022-11-02 한국전자통신연구원 컴퓨팅 자원 분할 운용 방법 및 장치

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5776634A (en) * 1980-10-31 1982-05-13 Hitachi Ltd Digital signal processor
JPH069028B2 (ja) * 1986-02-18 1994-02-02 日本電気株式会社 演算装置
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JPH06103494B2 (ja) * 1986-11-18 1994-12-14 株式会社日立製作所 ベクトル処理装置の制御方式
JPH02103656A (ja) * 1988-10-12 1990-04-16 Fujitsu Ltd 主記憶参照の遂次化制御方式
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
JPH0630094B2 (ja) * 1989-03-13 1994-04-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセツサ・システム
JP2519798B2 (ja) * 1989-05-30 1996-07-31 富士通株式会社 多重プロセッサシステムにおけるシリアライズ機能の検証方式
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5075846A (en) * 1989-09-29 1991-12-24 Motorola, Inc. Memory access serialization as an MMU page attribute
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
JPH07101410B2 (ja) * 1990-01-17 1995-11-01 インターナショナル、ビジネス、マシーンズ、コーポレーション データ処理ネットワークにおいて逐次化手段の試験のため命令流の実行を同期させる方法
US5077692A (en) * 1990-03-05 1991-12-31 Advanced Micro Devices, Inc. Information storage device with batch select capability
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
IL94115A (en) * 1990-04-18 1996-06-18 Ibm Israel Dynamic process for creating pseudo-random test templates for pompous hardware design violence
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
JP2535252B2 (ja) * 1990-10-17 1996-09-18 三菱電機株式会社 並列処理装置
JPH04172533A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 電子計算機
US5222244A (en) * 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
EP1526446A3 (en) * 1991-07-08 2007-04-04 Seiko Epson Corporation Extensible RISC microprocessor architecture
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
EP0529303A3 (en) * 1991-08-29 1993-09-22 International Business Machines Corporation Checkpoint synchronization with instruction overlap enabled
US5274818A (en) * 1992-02-03 1993-12-28 Thinking Machines Corporation System and method for compiling a fine-grained array based source program onto a course-grained hardware
US5257216A (en) * 1992-06-10 1993-10-26 Intel Corporation Floating point safe instruction recognition apparatus
US5257214A (en) * 1992-06-16 1993-10-26 Hewlett-Packard Company Qualification of register file write enables using self-timed floating point exception flags
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
DE69408769T2 (de) * 1993-10-18 1998-07-09 Cyrix Corp Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
JP3311462B2 (ja) * 1994-02-23 2002-08-05 富士通株式会社 コンパイル処理装置

Also Published As

Publication number Publication date
KR950027573A (ko) 1995-10-18
RU2150738C1 (ru) 2000-06-10
CA2137046A1 (en) 1995-10-01
HU9602595D0 (en) 1996-11-28
JP2742392B2 (ja) 1998-04-22
PL316566A1 (en) 1997-01-20
EP0753173A1 (en) 1997-01-15
TW353732B (en) 1999-03-01
CN1121210A (zh) 1996-04-24
KR0145035B1 (ko) 1998-08-17
US6041167A (en) 2000-03-21
HUT75816A (en) 1997-05-28
EP0753173B1 (en) 1999-03-10
DE69417071T2 (de) 1999-10-14
WO1995027246A1 (en) 1995-10-12
CA2137046C (en) 2000-01-18
ATE177546T1 (de) 1999-03-15
DE69417071D1 (de) 1999-04-15
JPH07271582A (ja) 1995-10-20
CN1099082C (zh) 2003-01-15

Similar Documents

Publication Publication Date Title
KR100323374B1 (ko) 부동소숫점유니트에서의다이나믹레지스터관리장치및그방법
US5557763A (en) System for handling load and/or store operations in a superscalar microprocessor
US6965987B2 (en) System and method for handling load and/or store operations in a superscalar microprocessor
PL177404B1 (pl) Sposób przetwarzania informacji w systemie komputerowym
KR100188502B1 (ko) 처리 시스템 및 그의 동작 방법
US5559976A (en) System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
EP0677807B1 (en) Processing system and method of operation
EP0651331A1 (en) A write buffer for a superpipelined, superscalar microprocessor
US5524224A (en) System for speculatively executing instructions wherein mispredicted instruction is executed prior to completion of branch processing
US6035394A (en) System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
PL177392B1 (pl) Sposób przetwarzania informacji
EP1152328A2 (en) System and method in a pipelined processor for generating a single cycle pipeline stall
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US5805916A (en) Method and apparatus for dynamic allocation of registers for intermediate floating-point results
US5758117A (en) Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
JP3701203B2 (ja) 計算機システム
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
WO1995016955A1 (en) Load latency of zero for floating point load instructions using a load data queue

Legal Events

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

Effective date: 20061227