PL178770B1 - Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym - Google Patents

Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym

Info

Publication number
PL178770B1
PL178770B1 PL95307460A PL30746095A PL178770B1 PL 178770 B1 PL178770 B1 PL 178770B1 PL 95307460 A PL95307460 A PL 95307460A PL 30746095 A PL30746095 A PL 30746095A PL 178770 B1 PL178770 B1 PL 178770B1
Authority
PL
Poland
Prior art keywords
instruction
data
operations
branch
buffer
Prior art date
Application number
PL95307460A
Other languages
English (en)
Other versions
PL307460A1 (en
Inventor
Glenn J. Hinton
David B. Papworth
Andrew F. Glew
Michael A. Fetterman
Robert P. Colwell
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of PL307460A1 publication Critical patent/PL307460A1/xx
Publication of PL178770B1 publication Critical patent/PL178770B1/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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
    • 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/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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09FDISPLAYING; ADVERTISING; SIGNS; LABELS OR NAME-PLATES; SEALS
    • G09F13/00Illuminated signs; Luminous advertising
    • G09F13/04Signs, boards or panels, illuminated from behind the insignia
    • G09F13/0418Constructional details
    • G09F13/0472Traffic signs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Advance Control (AREA)

Abstract

1. Sposób potokowego wykonywania zbioru rozkazów w sy- stemie komputerowym, znamienny tym, ze w kolejnych etapach dekoduje sie zbiór rozkazów w czesci sekwencyjnej procesora i tworzy zbiór operacji, w tym samym czasie generuje sie zbiór opera cji dla osrodka niesekwencyjnego w procesorze, przy czym w etapie generowania zapisuje sie zbiór operacji do stanowiska rezerwowa- nia i jednoczesnie odczytuje sie dane zródlowe z bufora porzadko- wania wtórnego, niezaleznego od stanowiska rezerwowania, wykorzystywane przy wykonywaniu zbioru operacji tylko gdy zo stana okreslone jako gotowe w tablicy rejestrów umieszczonej poza buforem porzadkowania wtórnego w pierwszej, sekwencyjnej cze- sci procesora, wykonuje sie zbiór operacji, a przynajmniej jedna operacje ze zbioru wykonuje sie niesekwencyjnie, przy czym w eta- pie wykonania w kolejnych krokach szereguje sie i wysyla indywi- dualna operacje gdy dane potrzebne do wykonania sa gotowe, wykonuje sie kazda z indywidualnych operacji oraz dokonuje sie zapisu zwrotnego wyników wykonania, przy czym podczas zapisu zwrotnego w kolejnych krokach kojarzy sie i zapisuje dane wyniko- we bezposrednio do stanowiska rezerwowania do wykorzystania przez przynajmniej jedna indywidualna operacje w stanowisku rezerwowania podczas wykonywania, i zapisuje sie wyniki danych do bufora porzadkowania wtórnego, przy czym dodatkowo kroki szeregowania, wysylania, wykonania i zapisu zwrotnego wykonuje sie w kolejnych fazach potokowych, oraz przyporzadkowuje sie wy- niki wykonania zbioru operacji stanowi strukturalnemu, w porzadku generowania operacji dla osrodka niesekwencyjnego w procesorze. Fig. 1 PL PL PL PL PL PL PL

Description

Przedmiotem wynalazku jest sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym zawierającym mikroprocesor, zwłaszcza mikroprocesor superskalamy realizujący potokowe wykonywanie rozkazów.
Zadaniem mikroprocesora jest wykonywanie programu. Program stanowi pewną grupę rozkazów. Procesor pobiera rozkazy do wykonania z pamięci lub z innego znanego miejsca ich przechowywania. Przetwarzanie pojedynczego rozkazu można podzielić na kilka wyraźnych etapów, czyli faz: rozkazy muszą być pobierane, muszą być poddawane dekodowaniu, musi następować zestawianie argumentów operacji i musi odbywać się zapisywanie wyników w miejscu przeznaczenia. Przetwarzanie rozkazów odbywa się pod kontrolą periodycznego sygnału zegarowego, którego okres stanowi cykl procesora.
178 770
Wydajność procesora można poprawić przez zmniejszenie czasu potrzebnego na wykonanie programu. Jedną z metod zwiększania wydajności jest częściowe nakładanie na siebie kolejnych kroków wykonywania kilku różnych rozkazów. Metoda ta zwana jest potokowaniem. Każdy krok potoku realizuj e wykonanie części rozkazu. Każdy z kroków potoku nazywa się fazą potoku. Każda faza potoku wyznaczana jest przez działające synchronicznie rejestry lub zatrzaski. Kroki potrzebne do wykonania pewnego rozkazu są realizowane niezależnie w różnych fazach potoku, tak zestawionych, że każdej z faz przypisana jest pewna część procesora. Wynik operacji w każdej z faz potoku jest przekazywany do następnej fazy za pośrednictwem rejestru pośredniczącego między fazami. Jakkolwiek potokowanie nie zmniejsza łącznej ilości czasu potrzebnego do wykonania rozkazu, to zmniejsza średnią liczbę taktów niezbędnych do wykonania programu, umożliwiając równoczesne przetwarzanie przez procesor więcej niżjednej instrukcji.
Procesory superskalame realizują wiele rozkazów równocześnie. Dzięki temu procesor, zaopatrzony w bloki równoczesnego wykonywania rozkazów, może wykonywać wiele rozkazów w tym samym czasie. Ten typ procesora superskalamego pozwala na równoczesne wykonywanie rozkazów w tej samej fazie potoku, jak również równoczesne wykonywanie rozkazów różnych faz. Jednym z podstawowych możliwych podejść projektowych jest stosowanie oddzielnych bloków wykonawczych całkowitoliczbowych i zmiennoprzecinkowych, z utworzeniem oddzielnych potoków całkowitoliczbowych i zmiennoprzecinkowych.
W konwencjonalnej strukturze mikroprocesora, rozkazy napisane przez programistę w pewnym ustawieniu sekwencyjnym muszą być wykonywane dokładnie w tym porządku. Jakkolwiek zastosowanie superskalamego bloku wykonawczego potencjalnie daje możliwość wykonywania więcej niż jednego rozkazu równolegle, to dana sekwencja rozkazów może nie nadawać się do wykorzystania tej możliwości. Pewne rozkazy w sekwencji do wykonania przez mikroprocesor nie są od siebie niezależne. W wyniku tego, nawet jeśli mikroprocesor może zapewniać wykonywanie więcej niż jednego rozkazu równocześnie, to zależności wewnątrz sekwencji rozkazów uniemożliwiaj ąniezależne wykonywanie niektórych z rozkazów. Poza tym, zdolności procesorów do wykrywania rozkazów nadających się do równoczesnego wykonania mogą być również ograniczone przez metody dekodowania i wykonywania rozkazów.
Współbieżność rozkazów w programie komputerowym jest określana jako przeciętna liczba rozkazów, które mikroprocesor superskalamy wykonuje równocześnie. W danej sekwencji rozkazów, współbieżność rozkazów jest ograniczona liczbą rzeczywistych zależności występujących w sekwencji rozkazowej. Poza tym współbieżność ograniczana jest przez mikroprocesor w wyniku opóźnień operacji procesora. Współbieżność maszynowa charakteryzująca procesor jest miarą jego zdolności do wykorzystania współbieżności rozkazów. W konsekwencji, współbieżność maszynowa jest ograniczona przez zdolność procesora do pobierania, wykonywania rozkazów i do wykrywania współbieżności rozkazów. Stopień współbieżności rozkazów i potencjalnej współbieżności maszynowej zależy od konkretnego programu komputerowego, w związku z czym niektóre programy mają wysoki stopień współbieżności rozkazów, podczas gdy inne wykazująjej niewielki stopień.
Zatem dla zwiększenia wydajności wykonywania rozkazów pożądane jest zapewnienie detekcji i wykorzystania współbieżności rozkazów.
Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym, według wynalazku wyróżnia się tym, że w kolejnych etapach dekoduje się zbiór rozkazów w części sekwencyjnej procesora i tworzy zbiór operacji i w tym samym czasie generuje się zbiór operacji dla ośrodka niesekwencyjnego w procesorze. W etapie generowania zapisuje się zbiór operacji do stanowiska rezerwowania i jednocześnie odczytuje się dane źródłowe z bufora porządkowania wtórnego, niezależnego od stanowiska rezerwowania, wykorzystywane przy wykonywaniu zbioru operacji tylko gdy zostaną określone jako gotowe w tablicy rejestrów umieszczonej poza buforem porządkowania wtórnego w pierwszej, sekwencyjnej części procesora. Zbiór operacji wykonuje się, a przynajmniej jednąoperację ze zbioru wykonuje się niesekwencyjnie, przy czym w etapie wykonania w kolejnych krokach szereguje się i wysyła indywidualną operację gdy dane potrzebne do wykonania sągotowe, wykonuje się każdąz indywidualnych operacji oraz dokonu
178 770 je się zapisu zwrotnego wyników wykonania. Podczas zapisu zwrotnego w kolejnych krokach koj arzy się i zapisuje dane wynikowe bezpośrednio do stanowiska rezerwowania do wykorzystania przez przynajmniej jednąindywidualnąoperację w stanowisku rezerwowania podczas wykonywania, i zapisuje się wyniki danych do bufora porządkowania wtórnego. Dodatkowo kroki szeregowania, wysyłania, wykonania i zapisu zwrotnego wykonuje się w kolejnych fazach potokowych oraz przyporządkowuje się wyniki wykonania zbioru operacji stanowi strukturalnemu, w porządku generowania operacji dla ośrodka niesekwencyjnego w procesorze.
W etapie dekodowania, w dalszych kolejnych etapach korzystnie przegląda się pamięć podręczną rozkazów i pobiera zbiór rozkazów, dekoduje się długość rozkazu, rotuje się zbiór rozkazów oraz dekoduje się instrukcje zbioru w dekoderze rozkazowym i tworzy zbiór operacji, przemianowuje się rejestry, alokuje zasoby i przesyła części każdego zbioru operacji do stanowiska rezerwowania. Etapy przeglądu pamięci podręcznej rozkazów, dekodowania długości rozkazów, rotowania zbioru instrukcji, dekodowania zbioru instrukcji i przemianowywania rejestrów korzystnie wykonuj e się w kolejnych fazach potokowych dla wygenerowania zbioru rozkazów.
W etapie dekodowania długości rozkazów korzystnie znakuje się zbiór rozkazów dla zidentyfikowania każdego z tych rozkazów. Zbiór rozkazów korzystnie rotuje się na podstawie wskaźnika pobrania rozkazu i liczby instrukcji przetworzonych przez dekoder rozkazowy. Zbiór rozkazów korzystnie dekoduje się w dwóch fazach potokowych.
Przemianowanie rejestrów, alokację zasobów i przesyłanie każdego z rozkazów zbioru rozkazów do stanowiska rezerwowania korzystnie wykonuje się w jednej fazie potoku. Wycofywanie korzystnie wykonuje się w dwóch fazach potokowych.
Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym według wynalazku wyróżnia się tym, że w kolejnych etapach sekwencyjnie dekoduje się zbiór rozkazów i tworzy zbiór operacji, a podczas dekodowania w kolejnych krokach utrzymuje się wskazanie gotowości danych źródłowych dla zbioru operacji w obszarze pamięci poza buforem porządkowania wtórnego w sekwencyjnej części procesora. W tym samym czasie zapisuje się zbiór operacji do stanowiska rezerwowania w ośrodku niesekwencyjnym w procesorze oraz odczytuje się dane wykorzystywane przy wykonywaniu zbioru operacji z bufora porządkowania wtórnego, jednocześnie z zapisem zbioru operacji do stanowiska rezerwowania, tylko gdy dane zostaną określone jako gotowe w obszarze pamięci. Zbiór operacji wykonuje się, a przynajmniej jedną operację ze zbioru wykonuje się niesekwencyjnie, przy czym podczas wykonania w kolejnych krokach szereguje się i wysyła indywidualnąoperację gdy dane potrzebne do wykonania każdej z indywidualnych operacji są gotowe, wykonuje się każdą indywidualnąoperację oraz dokonuje zapisu zwrotnego wyników wykonania z uwzględnieniem skojarzonego zapisu przynajmniej jednego wyniku do stanowiska rezerwowania. Kroki szeregowania, wysyłania, wykonania i zapisu zwrotnego wykonuje się w kolejnych fazach potokowych. Wyniki wykonania zbioru operacji przyporządkowuje się stanowi strukturalnemu w porządku generowania zbioru operacji.
Podczas dekodowania, w dalszych etapach korzystnie przegląda się pamięć podręczną rozkazów i pobiera zbiór rozkazów, dekoduje się długość rozkazu, rotuje się zbiór rozkazów oraz dekoduje się instrukcje zbioru w dekoderze rozkazowym i tworzy zbiór operacji, przemianowuje się rejestry, alokuje zasoby i przesyła część każdego zbioru operacji do stanowiska rezerwowania. Etapy przeglądu pamięci podręcznej rozkazów, dekodowania długości rozkazów, rotowania zbioru instrukcji, dekodowania zbioru instrukcji i przemianowywania rejestrów korzystnie wykonuje się w kolejnych fazach potokowych dla wygenerowania zbioru rozkazów.
W etapie dekodowania długości rozkazów korzystnie znakuje się zbiór rozkazów dla zidentyfikowania każdego z tych rozkazów. Etap rotowania korzystnie wykonuje się na podstawie wskaźnika pobrania rozkazu i liczby instrukcji obrobionych przez dekoder rozkazowy.
Etap dekodowania zbioru rozkazów korzystnie wykonuje się w dwóch fazach potokowych.
Etap przemianowywania rejestrów, alokacji zasobów i przesyłania każdego z rozkazów zbioru rozkazów do stanowiska rezerwowania korzystnie wykonuje się w jednej fazie potoku.
Etap wycofywania korzystnie wykonuje się w dwóch fazach potokowych.
178 770
Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym według wynalazku wyróżnia się tym, że w kolejnych etapach sekwencyjnie dekoduje się zbiór rozkazów i tworzy zbiór mikrooperacji, a w tym samym czasie zapisuje się zbiór operacji do stanowiska rezerwowania. Jednocześnie z zapisem zbioru mikrooperacji do stanowiska rezerwowania odczytuje się dane źródłowe z bufora porządkowania wtórnego, tylko gdy zostaną określone jako gotowe w tablicy rejestrów umieszczonej poza buforem porządkowania wtórnego, wykonuje się zbiór mikrooperacji, przy czym przynajmniej jedną ze zbioru mikrooperacji wykonuje się niesekwencyjnie, dokonuje się zapisu zwrotnego wyników wykonania zbioru operacji, przy czym kojarzy się i zapisuje przynajmniej jeden wynik do stanowiska rezerwowania, a wyniki wykonania zbioru operacji przyporządkowuje się ośrodkowi wykonania niesekwencyjnego.
Przedmiot wynalazku, w przykładzie wykonania, został bliżej objaśniony na załączonym na rysunkp, na którym fig. 1 przedstawia schemat blokowy mikroprocesora superskalamego i superpotokowego, dokonującego spekulatywnego i niesekwencyjnego wysyłania i wykonywania, według jednego z przykładów wykonania według wynalazku, fig. 2 - sieć działań ilustrującą sposób działania procesora według jednego z przykładów wykonania wynalazku, fig. 3 - zestaw faz potoku procesora silnie skonfigurowanego potokowo według jednego z przykładów wykonania wynalazku, fig. 4 - schemat blokowy bloku pobierania rozkazów, skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 5 - działanie bloku pobierania rozkazów w procesorze potokowym według jednego z przykładów wykonania wynalazku, fig. 6 - schemat blokowy pamięci podręcznej bufora końcowego rozgałęzienia, skonfigurowanej według jednego z przykładów wykonania wynalazku, fig. 7a - potok predykcyjny w buforze końcowym rozgałęzienia według jednego z przykładów wykonania wynalazku, fig. 7b - potok alokacji końcowego bufora rozgałęzienia skonfigurowany według jednego z przykładów wykonania wynalazku, fig. 7c - potok zapisu tablicy wskaźników rozkazowych rozgałęzienia według jednego z przykładów wykonania wynalazku, fig. 7d - potok zapisu pamięci podręcznej bufora końcowego rozgałęzienia, skonfigurowany według jednego z przykładów wykonania wynalazku, -fig. 8 schemat blokowy dekodera rozkazowego skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 9 - fazy potokowania dla funkcji dekodera rozkazowego, skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 10 - działanie sekwensera mikroinstrukcji w potoku procesora według jednego z przykładów wykonania wynalazku, fig. 11 a-b - działanie kalkulatora adresu rozgałęzienia dla procesora potokowego według jednego z przykładów wykonania wynalazku, fig. 12 - schemat bloku wysokiego poziomu tablicy pseudorejestrów i bloków funkcjonalnych sprzężonych z tablicą pseudorejestrów, skonfigurowane według jednego z przykładów wykonania wynalazku, fig. 13 - działanie tablicy pseudorejestrów w procesorze potokowym według jednego z przykładów wykonania wynalazku, fig. 14 - schemat blokowy stanowiska rezerwacji skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 15 fazy potokowania, z uwzględnieniem.stanowiska rezerwowania skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 16 - schemat blokowy bufora porządkowania wtórnego według jednego z przykładów wykonania wynalazku, fig. 17a - fazy potokowania procesora, z podkreśleniem wykorzystania bufora porządkowania wtórnego, fig. 17b - wykorzystanie bufora porządkowania wtórnego podczas realizacji faz potokowania, fig. 17c - wykorzystanie bufora porządkowania wtórnego w fazie wycofywania, fig. 18 - przepływ danych przy realizacji mikroinstrukcji logicznej według jednego z przykładów wykonania wynalazku, fig. 19 - przykład przepływu danych przy wysyłaniu fizycznej mikroinstrukcji ze stanowiska rezerwowania według jednego z przykładów wykonania wynalaźku, fig. 20 - drugi przykład przepływu danych przy przetwarzaniu mikroinstrukcji logicznej według jednego z przykładów wykonania wynalazku, fig. 21 - przykład przepływu danych przy zapisie zwrotnym danych wynikowych z klastera wykonania, skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 22 przepływ danych podczas realizacji funkcji wycofywania skonfigurowany według jednego z przykładów wykonania wynalazku, fig. 23 - działanie bloku przetwarzania całkowitoliczbowego według jednego z przykładów wykonania wynalazku, fig. 24a - przykłady obliczania adresu w bloku generacji adresów, skonfigurowanego według jednego z przykładów wykonania wynalaz
178 770 ku, fig. 24b - jedno z wykonań faz potokowania dla operacji ładowania segmentu, występującej w bloku generacji adresów, fig. 24c - fazy potokowania przy działaniu rej estru sterującego bloku generacji adresów, fig. 25 - schemat blokowy bloku interfejsu pamięciowego, skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 26a - fazy potokowania dla operacji konwersji ładowania, dokonywanej w bloku interfejsu pamięciowego, fig. 26b - operacje konwersji przy zapisie w potoku procesora, fig. 26c - operację zapisu do pamięci w potoku procesora według jednego z przykładów wykonania wynalazku, fig. 26d - operację zmiennoprzecinkowego odczytu z pamięci ROM w potoku procesora według jednego z przykładów wykonania wynalazku, fig. 27 - działanie zmiennoprzecinkowego bloku wykonawczego w potoku procesora, włącznie ze współdziałaniem przy wysyłaniu mikroinstrukcji i zapisie zwrotnym, fig. 28 - schemat blokowy bloku pamięci podręcznej skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 29 - działanie bloku pamięci podręcznej danych w potoku procesora według jednego z przykładów wykonania wynalazku, fig. 30 - działanie bufora porządkowego pamięci podczas fazy wykonania, w potoku skonfigurowanym według jednego z przykładów wykonania wynalazku, fig. 31 - układy magistrali zewnętrznej, skonfigurowane według jednego z przykładów wykonania wynalazku, fig. 32a schemat potoku do współdziałania z logicznymi układami odczytu z magistrali zewnętrznej, fig. 32b częściowy schemat potoku dla operacji zapisu logicznego na magistralę zewnętrzną fig. 33 działanie układów logicznych magistrali pomocniczej w potoku procesora, fig. 34 - schemat blokowy systemu komputerowego wysokiego poziomu skonfigurowanego według jednego z przykładów wykonania wynalazku, fig. 35a - strukturę hierarchiczną systemu operacyjnego UNIX(R) pracującego wspólnie z rozwiązaniem według jednego z przykładów wykonania wynalazku, a fig. 35b - strukturę hierarchiczną systemu operacyjnego Windows™ pracującego z rozwiązaniem według jednego z przykładów wykonania wynalazku.
Ujawniono sposoby i urządzenia dla superskalamego i superpotokowego procesora dokonującego zarówno spekulatywnego, jak i niesekwencyjnego wysyłania i wykonania. W poniższym opisie, dla objaśnienia, stosuje się specyficzne nazewnictwo, co ma na celu zapewnienie pełnego zrozumienia niniejszego wynalazku. Jednak dla specjalisty jest oczywiste, że te konkretne szczegóły nie są niezbędne do zastosowania niniejszego wynalazku. W innych przypadkach znane układy i urządzenia są przedstawione w postaci schematów blokowych, w celu uniknięcia niepotrzebnego zaciemniania opisu niniejszego wynalazku.
Procesor według niniejszego wynalazku jest procesorem superskalamym i superpotokowym zapewniającym zarówno spekulatywne wykonywanie, jak i niesekwencyjne wysyłanie i realizację rozkazów. Dla celów objaśnienia, procesor według niniejszego wynalazku podzielony został na część sekwencyjną i część niesekwencyjną. Część niesekwencyjna procesora według niniejszego wynalazku dokonuje niesekwencyjnego wysyłania rozkazów do wykonania w odpowiednim bloku wykonawczym. W związku z faktem, że rozkazy są wysyłane w sposób niesekwencyjny, wykonanie instrukcji również odbywa się w sposób niesekwencyjny. Niesekwencyjne wysyłanie i wykonanie zapewniająwspółbieżność przy wykonaniu rozkazów, zwiększając tym samym wydajność.
W celu osiągnięcia zwiększonej wydajności, dzięki niesekwencyjnemu wysyłaniu i wykonywaniu operacji w procesorze według niniejszego wynalazku, pożądane jest stosowanie bloku wykonawczego umożliwiającego równoległe przetwarzanie rozkazów. W jednym z przykładów wykonania niniejszego wynalazku, blok wykonawczy jest superskalamy. Superskalamy blok wykonawczy zawiera wiele bloków arytmetyczno - logicznych (ALU). Superskalamy blok wykonawczy realizuje operację niesekwencyjnego wysyłania i wykonania w procesorze, przy zapewnieniu współbieżności dzięki temu, że równocześnie odbywa się więcej niż jedno obliczenie.
Zapewniając implementację niesekwencyjnej części procesora, według niniejszego wynalazku zapewnia się również spekulatywne wykonywanie zadań w części sekwencyjnej procesora. Implementacja wykonywania spekulatywnego umożliwia zapewnienie przez część sekwencyjną procesora ciągłego strumienia rozkazów dla części niesekwencyjnej. Zastosowanie zasady wykonywania spekulatywnego zwiększa możliwą współbieżność bloku wykonaw
178 770 czego. W celu zaimplementowania wykonywania spekulatywnego, procesor zaopatrzony jest w mechanizm predykcji rozgałęzień dla rozkazów rozgałęziających.
W jednym z przykładów wykonania, procesor według niniejszego wynalazku jest implementowany jako procesor superpotokowy. W procesorze superpotokowym, fazy przetwarzania procesora potokowego są dzielone na kilka różnych faz podrzędnych. Procesor superpotokowy według niniejszego wynalazku realizuje więcej faz potokowania, niż konwencjonalny procesor potokowy. Jednakowoż procesor zastosowany w procesorze superpotokowym według niniejszego wynalazku jest tak skonstruowany, aby wykonywał mniej pracy dla pojedynczej fazy zegara, niż konwencjonalny procesor potokowy. Dla lepszego wykorzystania implementacji superpotokowej, procesor według niniejszego wynalazku pracuje z dużymi częstotliwościami zegara. Poza tym procesor superpotokowy zapewnia dobrą predykcję rozgałęzień, niezbędną w procesorze, implementowaną z dużym stopniem potokowości, dla zmniejszenia niekorzystnych następstw niepoprawności predykcji rozgałęzień.
Część sekwencyjna procesora skonstruowana jest tak, że generuje stały strumień rozkazów, zasilających część niesekwencyjnąprocesora. W celu zrealizowania tego zadania, część sekwencyjna procesora realizuje spekulatywne wykonywanie rozkazów przez predykcję odgałęzień dla rozkazów rozgałęziających. Część sekwencyjna procesora według niniejszego wynalazku zapewnia przemianowywanie zasobów, znane jako przemianowywanie rejestrów. Jak to objaśniono bardziej szczegółowo poniżej, zastosowanie przemianowywania rejestrów umożliwia większy stopień równoległości wykonania rozkazów, niż za pomocą procesora bez przemianowywania rejestrów. Poza tym część sekwencyjna procesora oddziałuje zwrotnie na porządek rozkazów programu pierwotnego po wykonaniu rozkazów potencjalnie niezgodnie z pierwotnym porządkiem programu. Poza tym, dla implementacji zgodnej z architekturą mikroprocesorów INTEL(R), część sekwencyjna procesora realizuje precyzyjny model błędów.
Podsystem pamięciowy według niniejszego wynalazku zapewnia odpowiednią szerokopasmowość, umożliwiającą pracę sekwencyjnej części procesora. Ponieważ procesor według niniejszego wynalazku dokonuje niesekwencyjnego wysyłania i realizacji, to podsystem pamięciowy wymusza uporządkowanie sekwencyjne, w celu zachowania integralności danych w układzie pamięciowym. Na przykład pierwsza operacja zapisu nie może się znaleźć za drugą operacją zapisu, jeżeli w pierwotnym porządku programowym pierwsza operacja zapisu występowała przed drugą. Poza tym, podsystem pamięciowy według niniejszego wynalazku zapewnia spekulatywnąrealizację wykonania rozkazów, tak że nie są wykonywane spekulatywne operacje zapisu.
Na figurze 1 przedstawiono schemat blokowy mikroprocesora superskalamego i superpotokowego umożliwiającego spekulatywne i niesekwencyjne rozsyłanie i wykonywanie, skonfigurowane według jednego z przykładów wykonania wynalazku. Procesor 100 możr być kompatybilny, choć niekoniecznie, z mikroprocesorami odpowiadającymi architekturze INTEL(R), produkowanymi przez INTEL Corporation z Santa Clara, w stanie Kalifornia, prawnego właściciela niniejszego wynalazku, takimi, jak PowerPC™, Alpha™ itp. W przykładzie wykonania przedstawionym na fig. 1, część sekwencyjna procesora zaimplementowana jest z klasterem 112 pobierania rozkazów i klasterem 114 wydawania. Część niesekwencyjną procesora 100 zawiera klaster 116 niesekwencyjny, klaster wykonawczy 118 oraz bufor 150 uporządkowania sekwencyjnego pamięci zlokalizowany w klasterze 120 pamięci. Poza tym sprzężenie z operacjami zewnętrznymi zapewnia klaster 110 magistrali, a klaster 120 pamięci realizuje podsystem pamięciowy procesora 100.
Funkcja pobierania rozkazów według niniejszego wynalazku powoduje pobieranie ciągłego strumienia rozkazów zapewniając predykcję rozgałęzień, w celu umożliwienia spekulatywnego wykonania w procesorze. Wjednym z wykonań według niniejszego wynalazku funkcja pobierania rozkazów zaimplementowana jest z klasterem 122 pobierania rozkazów, zawierającym blok 122 pobierania rozkazów (Instruction Fetch Unit - IFU). Poza tym zaimplementowana jest predykcja rozgałęzień, w części wykorzystującej końcowy bufor rozgałęzień (Branch Target Buffer - BTB) 124, jak to pokazano na fig. 1.
178 770
Procesor 100 zawiera klaster 114 wydawania, przedstawiony na fig. 1. Ogólnie biorąc, klaster 114 wydawania odbiera rozkazy z klastera 112 pobierania rozkazów i przygotowuje rozkazy dla klastera niesekwencyjnego 116, klastera wykonawczego 118 i klastera 120 pamięci. Klaster 114 wydawania jest ostatnim klasterem funkcjonalnym w sekwencyjnej części procesora 100. Klaster 114 wydawania zaopatrzony jest w dekoder rozkazów (Instruction Decoder - ID) 126, sekwenser 130 mikroinstrukcji (Microinstruction Seqencer - MS), kalkulator 128 adresu rozgałęzienia (Branch Address Calculator - B AC), tablicę 132 pseudorejestrów (Register Alias Table - RAT) oraz alokator (ALLOC) 134. Klaster 114 wydawania przetwarza strumień makroinstrukcji na mikroinstrukcje lub mikrooperacje (Microops) w dekoderze ID 126. W jednym z wykonań, dekoder ID 126 dekoduje makroinstrukcje kompatybilne z mikroprocesorami o architekturze INTEL^5. Jednakowoż dekoder ID 126 może być zbudowany tak, aby dekodował rozkazy dla dowolnego zestawu rozkazów CISC lub RISC, włącznie, choć nie jedynie, z PowerPC™, Alpha™ itp, bez wychodzenia poza ideę wynalazku.
Dla makroinstrukcji wymagających dekodowania długich strumieni mikrokodów, w celu ustawienia kolejnej makroinstrukcji wykorzystuje się sekwenser MS 130. Ogólnie biorąc, kalkulator BAC 128 oblicza adresy końcowe rozgałęzień, na podstawie predykcji BTB 124, a tablica RAT 132 dokonuje przemianowania rejestru przez przemapowanie z rejestrów logicznych na fizyczne w buforze ROB 136. Alokator ALLOC 134 przydziela i śledzi zasoby przeznaczone do operacji klasterowi niesekwencyjnemu 116 oraz klasterowi 120 pamięci.
Klaster niesekwencyjny 116 zawiera stanowisko rezerwowania (RS) 13 8 i bufor porządkowania wtórnego (Reorder Buffer - ROB) przedstawiony na fig. 1. Bufor ROB 136 zawiera rzeczywisty zespół rejestrów, który stanowi zestaw rejestrów strukturalnych mikroprocesora. W jednym z przykładów wykonania, zespół rejestrów strukturalnych jest kompatybilny ze strukturą mikroprocesorów INTEL(R\ Jednakowoż zespół rejestrów strukturalnych może być kompatybilny z dowolnym innym mikroprocesorem, włącznie, choć nie jedynie, z PowerPC™, Alpha™ itp, bez wychodzenia poza ideę i zakres niniejszego wynalazku.
Ogólnie biorąc, klaster 116 niesekwencyjny otrzymuje mikrooperacje z klastera 114 wydawania. Klaster niesekwencyjny 116 łączy sekwencyjny strumień mikrooperacji z odpowiednim źródłem danych wyznaczonym przez bufor ROB 136 i uchwyconym w stanowisku RS 138. Procesor według niniejszego wynalazku wykorzystuje pewną strukturę strumienia danych. W celu zaimplementowania tej struktury strumienia danych, klaster 116 porządkowania wtórnego dokonuje operacji GOTOWOŚC/SZEREGO WANIĘ, wysyłania oraz wycofywania. W celu wykonania funkcji GOTOWOŚĆ/SZEREGOWANIĘ, stanowisko RS 138 identyfikuje wszystkie gotowe do wykonania mikroopercje, i wybiera niektóre mikrooperacje do wysyłania do klastera wykonawczego 118. Mikrooperacje wykonywane są w bloku wykonawczym w klasterze wykonawczym 118, a dane wynikowe wpisywane sązwrotnie do klastera niesekwencyjnego 116. Bufor ROB 136 wycofuje mikrooperacje, przez przekazywanie danych wynikowych do rzeczywistego zestawu rejestrów, w porządku zgodnym z programem pierwotnym.
W celu wykonania funkcji wydawania, implementowanej w klasterze 114 wydawania, informacja sterująca wpisywana jest pod przydzielone adresy bufora ROB 136, i następuje skasowanie odpowiedniego bitu gotowości. Dla każdej mikrooperacji, pod przydzielony adres RS 138 wpisywane są: kod operacji, dane źródłowe, adresy źródła/przeznaczenia, oraz pozostałe informacje sterujące. Dane źródłowe z bloków wykonawczych pochodzą albo z bufora ROB 136, albo z rejestru rzeczywistego zawartego wewnątrz bloku ROB 136. Odpowiednio do tego, adresy źródłowe danych wejściowych w RS 138 zawierają pewien bit służący do identyfikacji, czy dana źródłowa przechowywana jest w buforze ROB 136, czy w rzeczywistym zestawie rejestrów. Bit ważności w buforze ROB 136 wskazuje, czy odpowiedni adres wejściowy źródła danych jest ważny.
W szczególności, w celu szeregowania mikrooperacji dla bloków wykonawczych w klasterze wykonawczym 118, RS 138 sprawdza, które z mikrooperacji są zaopatrzone w gotowe dane, przez analizę odpowiedniego bitu ważności danych dla każdego ze źródeł danych. Stanowisko RS 138 następnie określa dostępność bloków wykonawczych dla mikrooperacji z gotowymi danymi, oraz szereguje mikrooperacje na podstawie wskaźnika priorytetu. W przypadku
178 770 uszeregowanych mikrooperacji, RS 138 dokonuje wysyłania tych mikrooperacji i przyporządkowanych im danych do odpowiedniego bloku wykonawczego.
Po zakończeniu wykonania mikrooperacji w klasterze wykonawczym 118, bloki wykonawcze przekazują adresy wskaźnikowe do bufora ROB 136, przed wpisaniem rzeczywistych danych wynikowych. Adresy wskaźnikowe identyfikują adresy wyjściowe bufora ROB 136 jako miejsce przeznaczenia dla zwrotnego zapisu danych wynikowych. Następnie blok wykonawczy wpisuje dane wynikowe pod wyspecyfikowany adres bufora ROB 136. Stanowisko RS 138 podgląda magistralę 139 zapisu zwrotnego, w celu wychwytywania danych niezbędnych do innych mikrooperacji.
W celu wykonania funkcji wycofania, następuje odczytanie pewnej liczby kolejnych adresów wejściowych z bufora ROB 136, na podstawie fizycznych identyfikatorów przeznaczenia. Adresy wejściowe odczytane z ROB 136 odpowiadają kandydatom do wycofania. Mikrooperacja jest kandydatem do wycofania, jeżeli odpowiedni bit gotowości jest ustawiony, mikrooperacja nie stanowi wyjątku, i wszystkie poprzednie kandydaci-mikrooperacje w pierwotnym porządku programowym są dostępne do wycofania. Jeżeli mikrooperacja jest dostępna do wycofania, to następuj e powiadomienie tablicy RAT 132, w celu uaktualnienia tablicy przeglądowej, i dane przenoszone sąz bufora ROB 136 do rzeczywistego zespołu rejestrów (RRF). Poza tym następuje inkrementacja wskaźnika wycofania w buforze ROB 136, w celu zasygnalizowania, że ten adres wejściowy ROB został wycofany.
W jednym z wykonań, klaster wykonawczy 118 zawiera cztery bloki semiautonomiczne: blok generacji adresów (Address Generation Unit - AGU) 146, całko wito liczbowy blok wykonawczy (Integer Execution Unit - IEU) 144, zmiennoprzecinkowy blok wykonawczy (Floating Point Execution Unit - FEU) 142, oraz blok sprzężenia z pamięcią (Memory Interface Unit - MIU) 140. Jakkolwiek opisano klaster wykonawczy 118 z czterema blokami wykonawczymi, to ten klaster wykonawczy 118 może zawierać dowolną liczbę i typ bloków wykonawczych, bez wychodzenia poza ideę i zakres wynalazku.
Blok AGU 146 umożliwia segmentację adresowania dla architektury mikroprocesorów INTEL(R\ przez obliczanie adresów efektywnych. W celu umożliwienia segmentacji dla procesora o strukturze INTEL(R), blok AGU 146 zaopatrzony jest w zespół rejestrów segmentowych. Procesor według wynalazku jest procesorem superskalamym, co polega na tym, że blok IEU 144 zawiera dwa bloki arytmetyczno-logiczne (ALU) służące do sumowania, odejmowania, przesyłania i wykonywania operacji logicznych na argumentach źródłowych. Poza tym, blok IEU 144 zawiera blok realizacji skoku, służący do obliczeń predykcyjnych przy rozgałęzianiu. Blok FEU 142 stanowi bazę zmiennoprzecinkową dla procesora. Blok MIU 140 zapewnia sprzężenie wszystkich czynności związanych z pamięcią, łącznie z konwersją z postaci zmiennoprzecinkowej na całkowitoliczbową, całkowitoliczbowej na zmiennoprzecinkową, oraz konwersję z jednego typu danych zmiennoprzecinkowych na inny.
Klaster 120 pamięci zapewnia niesekwencyjne wysyłanie operacji według niniejszego wynalazku. W jednym z wykonań według wynalazku, klaster 120 pamięci zawiera operator niezgodności stron (Page Miss Handler - PMH) 152, bufor porządkowania pamięci (Memory Order Buffer - MOB) 150, bufor pomocniczy translacji danych (Data Translation Look-aside Buffer - DTLB) 154 oraz blok pamięci podręcznej danych (Data Cache Unit-DCU) 148,jak to pokazano na fig. 1. Poza tym klaster 120 pamięci działa w połączeniu z blokami AGU 146iMIU 140.Klaster 120pamięci zawiera magistralę ekspedycyjną pamięci 151 i magistralę zapisu zwrotnego 139.
Jak wspomniano powyżej, w związku z klasterem wykonawczym 118 blok AGU 146 generuje odpowiedni liniowy adres dla operacji pamięciowych. Bufor DTLB 154 tłumaczy adres liniowy na adres fizyczny. Przy niezgodności stron, bufor DTLB 154 przekazuje informację o niezgodności stron do operatora PMH 152. W odpowiedzi na to operator PMH 152 odbywa „spacer po stronach” i wykonuje inne znane funkcje stosowane przy niezgodności stron. Ogólnie biorąc, bufor MOB 150 buforuje wszystkie operacje zapisu i odczytu, oraz kontroluje wysyłanie operacji odczytu i zapisu. Poza tym bufor MOB 150 śledzi postęp operacji pamięciowych podczas wykonania, oraz wycofuje operacje pamięciowe w razie potrzeby, przez przyporządkowy
178 770 wanie wyników stanowi pamięci. Po wycofaniu operacji zapisu, bufor MOB 150 wysyła tę operację zapisu do trybu „tłowego” pracy, dogodnego dla systemu pamięciowego.
Klaster pamięciowy 120 umożliwia wykonanie spekulatywne. Ze względu na to, że niektóre operacje pamięciowe nie mogą być wykonywane w sposób spekułatywny, bufor MOB 150 monitoruje i kolejno wysyła operacje niespekulatywne w odpowiednim czasie. Na przykład bufor MOB 150 podgląda adresy źródłowe pobieranych rozkazów i sygnalizuje do klastera 110 magistrali w celu uchylenia pobrania rozkazu, kiedy pobierany rozkaz dotyczy adresu źródłowego zgodnego z jednym z adresów przeznaczenia buforowanych zapamiętywanych rozkazów.
Jak wspomniano powyżej, procesor według niniejszego wynalazku wykorzystuje strukturę przepływu danych, tak że operacje sąpomijane aż do momentu, kiedy staną się osiągalne odpowiednie argumenty z danymi. W' wyniku tego, kiedy argumenty z danymi są osiągalne, operacje są wykonywane, potencjalnie w sposób niesekwencyjny. Zależność argumentów śledzona jest na bazie rejestrowej, tak że jeżeli zostaną wyliczone poprzednie wartości rejestrów, to osiąga się zadowalające uzależnienie argumentów. Jednakowoż operacje pamięciowe wykazują zależności naturalne. Na przykład operacje odczytywania z pamięci wykazują zależność od uprzednich operacji zapisu o adresach wspólnych z operacjami odczytu. Bufor MOB 150 zapamiętuje spekulatywne operacje pamięciowe, zarówno operacje odczytu, jak i zapisu, w celu uniknięcia kierowania danych pomijanych do pamięci systemowej, i otrzymywania w związku z tym niepoprawnych rezultatów.
W celu utrzymania wewnętrznej zgodności między operacjami odczytu i zapisu, procesor według niniejszego wynalazku wykorzystuje ideę znanąjako kolorowanie pamięci. Procedura kolorowania pamięci wykorzystywana jest w celu zachowania zgodności porządkowej między zapisami i odczytami tego samego procesora. Każda operacja odczytu zaopatrywana jest w etykietę z identyfikatorem bufora pamięciowego (IDE) odpowiadającego zapisowi poprzedniemu. Bufor zapisu IDE reprezentuje lokalizację względną odczytu w odniesieniu do wszystkich zapisów w sekwencji wykonawczej. Kiedy odbywa się wykonanie odczytu w klasterze pamięciowym 120, bufor ΜΟΒ 150 wykorzystuje bufor zapisowy ID w charakterze punktu początkowego do analizy odczytu względem starszych zapisów do bufora. Kiedy następuje wysyłanie operacji pamięciowej, lecz nie może ona być wykonana w wyniku konfliktu adresowego lub konfliktu zasobów, to bufor ΜΟΒ 150 blokuje operacje i zapisuje informacje o zależności. Po usunięciu przyczyny zablokowania, bufor MOB 150 wysyła ponownie operacje pamięciowe.
W systemach komputerowych wykorzystujących multiprocesory, również może wystąpić problem zgodności porządku. Jeżeli odbywa się wykonanie operacji odczytu w sposób niesekwencyjny, to operacja odczytu może łatwo spowodować, że operacja zapisu mikroprocesora staje się niesekwencyjną. Na przykład, jeżeli druga operacja odczytu odbywa się przed pierwszą operacją odczytu, a pierwsza operacja odczytu występuje przed drugą operacją odczytu w pierwotnym porządku programowym, to wtedy operacje odczytu stają się niesekwencyjne w stosunku do pierwotnego porządku programowego. W tym przypadku druga operacja odczytu spowoduje pobranie starych danych, natomiast pierwsza operacja odczytu po wykonaniu może spowodować odczytanie nowych danych wpisanych przez inny procesor. Jeżeli umożliwić jej przypisanie do stanu pamięci, to operacje odczytu mogą zaburzać uporządkowanie sekwencyjne procesora. W celu zapobieżenia tym zaburzeniom, bufor MOB 150 podgląda wszystkie zapisy danych na magistrali. W wyniku tego, jeżeli inny procesor dokonuje zapisu w miejscu, które było spekulatywnie odczytywane, to odczyt i operacje następne są kasowane i wykonywane ponownie w celu dołączenia poprawnych danych.
Klaster 110 magistrali realizuje funkcje sprzężenia z magistralą procesora 100. Jednakowoż funkcja sprzężenia z magistralą może być realizowana za pomocą dowolnego sprzęgu magistralowego, bez wychodzenia poza ideę i zakres niniejszego wynalazku. W j ednym z przykładów wykonania, funkcje sprzężenia z magistralą realizuje się za pomocąmagistrali zorientowanej zadaniowo. Jak to pokazano na fig. 1, procesor 100 sprzęga się z poziomem drugim (L2) pamięci podręcznej 156 za pośrednictwem magistrali pamięci podręcznej, czyli magistrali pomocniczej 160, a z innymi urządzeniami zewnętrznymi, na przykład pamięcią główną procesor 100 sprzęga
178 770 się za pośrednictwem magistrali zewnętrznej 158. W jednym z przykładów wykonania, klaster 110 magistrali zawiera układy logiczne zewnętrznej magistrali (Extemal Bus Logic - EBL) 106 służące do sprzężenia rdzenia procesora z magistralą zewnętrzną 158, oraz układy logiczne magistrali pomocniczej (Backside Bus Logic - BBL) 108 do sprzężenia rdzenia procesora z magistralą pomocniczą 160 oraz pamięcią podręczną 156 poziomu L2. Poza tym klaster 110 magistrali zawiera programowalny kontroler przerwań (Programmable Interrupt Controller PIC) do przerwań funkcjonalnych.
Figura 2 stanowi sieć działań ilustrującą sposób działania procesora według niniejszego wynalazku. W bloku 210 procesor pobiera rozkazy na ścieżce wykonawczej programu. Rozkazy są dekodowane w sposób przedstawiony w bloku 215. W bloku 220, operacje równoważne dekodowanemu rozkazowi dekodowane są w pierwotnym porządku programowym. Sposób według wynalazku realizuje samoszeregowanie, tak że kiedy wydawane operacje mają dane gotowe, i dostępny jest odpowiedni blok wykonawczy, to sąone wysyłane do bloku wykonawczego, jak to pokazano w postaci bloków 225 i 230. W bloku wykonawczym 235 generowane są dane wynikowe, a w bloku 240 dane wynikowe przypisywane są stanowi procesora, jeżeli te dane wynikowe są ważne.
Jak to omówiono powyżej, w jednym z przykładów wykonania wynalazku, procesor według niniejszego wynalazku jest zestawiony jako procesor superpotokowy. W „silnie” potokowym procesorze, główne fazy procesora potokowego, na przykład pobranie rozkazu, dekodowanie rozkazu i wykonanie rozkazu, są podzielone na kilka różnych podfaz, tak że każda z faz przetwarzania jest potokowana, co w wyniku daje długie potoki rozkazów.
Figura 3 przedstawia zestaw faz potokowania, określony dla procesora potokowego skonfigurowanego według jednego z przykładów wykonania wynalazku. W potoku rozkazów z fig. 3, przetwarzanie rozkazu podzielono na 11 faz potokowania. Poniżej przedstawiono krótki opis każdej z faz potokowania. Jednak pełny opis podfaz potokowania oraz skojarzone z nimi bloki funkcjonalne opisano nieco dalej.
Ogólnie biorąc, trzy pierwsze fazy potokowania przeznaczone są dla operacji pobierania rozkazu przez procesor. Podczas trwania fazy 1, blok IFU 122 dokonuje przeglądu pamięci podręcznej rozkazów w celu pobrania makroinstrukcji do przetwarzania. W fazie 2 potokowania, blok IFU 122 dokonuje zdekodowania długości rozkazu przy równoczesnym odpowiednim oznaczeniu makroinstrukcji. W fazie 3 potokowania, blok IFU 122 dokonuje rotowania makroinstrukcj i na podstawie wskaźnika pobraniowego rozkazów oraz liczby rozkazów pobranych przez IDE 126. Zdekodowane funkcje otrzymane w IDE 126 wykonywane sąpodczas trwania faz 4 i 5.
Podczas trwania fazy 6 potokowania, w tablicy RAT 132 wykonywana jest funkcja przemianowania rejestrów. Poza tym alokator ALLOC 134 przydziela zasoby, a stanowisko RS 138 odbiera pierwszą połówkę mikrorozkazu. W fazie 7 z bufora ROB 136 odczytywane są dane źródłowe i przez RS 138 obierana jest druga połowa mikrorozkazu. Również podczas trwania fazy 7, stanowisko RS 138 szereguje mikrorozkazy z gotowymi danymi do wysłania do dostępnych bloków wykonawczych. W fazie 8 potokowania, stanowisko RS 138 kieruje mikrorozkazy do odpowiednich bloków wykonawczych w klasterze wykonawczym 118. W czasie trwania fazy 9, bloki wykonawcze realizująwykonanie przekazanych mikrorozkazów, i następuje zapis wyników zwrotnych do bufora ROB 13 6. W fazach 10 i 11, bufor ROB 136 realizuj e dwufazową funkcję wycofania, kończąc tym samym fazy potokowania wysokiego poziomu.
B lok pobierania rozkazów (Instruction F etch Unit - IFU: Na figurze 4 przedstawiono schemat blokowy bloku 122 pobierania rozkazów, skofigurowanego zgodnie z jednym z przykładów wykonania według niniejszego wynalazku. Jak to pokazano na fig. 4, blok IFU 122 współdziała z układami EBL 106, BBL 108, dekoderem ID 126, blokami BAC 128, BTB 124 oraz ITU 144. Blok 122 wysyła zewnętrzne zgłoszenie pobrania rozkazu do układu EBL 106, i przy powrocie otrzymuje z układów BBL 108 makroinstrukcję. Bloki BFL 122 przekazują makroinstrukcję do dekodera ID 126. W jednym z wykonań, blok IFU 122 podaje makroinstrukcje kompatybilne z mikroprocesorem architektury INTEL(R\ Blok IFU 122 otrzymuje predykcje rozgałęzień z bufora BTB 124 i z kalkulatora BAC 128, i odbiera mylne predykcje rozgałęzień z bloku IEU 144 i
178 770
BAC 128. Informacja predykcyjna i niepoprawna informacja predykcyjna wykorzystywane są przez blok IFU 122 w celu wyznaczenia adresu następnego rozkazu.
W celu efektywnego zasilania klastera 114 wydawania ciągłym strumieniem rozkazów, blok IFU 122 wymaga skomplikowanego sprzętu układowego. W jednym z wykonań, blok IFU 122 zawiera pamięć o hierarchii trójpoziomowej obejmującą bufor formowania strumienia instrukcji (Instruction Streaming Buffer - ISB) 410, pamięć podręczną rozkazów (I-Cache) 420 oraz bufor rozkazów 470 minimalizujący opóźnienia w podawaniu rozkazów do dekodera ID 126. Poza tym blok IFU 122 zawiera pamięć podręczną rozkazów pominiętych (Instruction Victim Cache - IVC) 430, dla dalszego zmniejszenia skutków konfliktów spowodowanych niezgodnościami, oraz do przechowywania kopii wszystkich rozkazów w bloku IFU 122, przed ich wykonaniem w procesorze. Blok IFU 122 zawiera również dekoder 465 długości rozkazu, w celu umożliwienia makroinstrukcji o zmiennej długości do konkretnych obszarów dekodera ID 126. Na koniec blok IFU 122 zawiera bufor pomocniczy translacji rozkazów (Instruction Translation Look-aside Buffer - ITB) dla ułatwienia translacji adresów przy uaktywnieniu stronicowania.
Pamięć podręczna rozkazów (I-Cache) 420, bufor strumieniowego przekazywania rozkazów (ISB) 410, oraz pamięć podręczna rozkazów pominiętych (TVC) 430 dostępne są równolegle. Przez logikę 450 następnego wskaźnika rozkazowego (IP) generowany jest liniowy adres pobrania na wejściach prowadzących od bloków BTB 124, BAC 128 i IEU 144. Liniowy adres pobrania wykorzystywany jest do dostępu do ISB 410, I-Cache 420 oraz IVC 430. Bloki ISB 410, I-Cache 420 i IVC 430 zaopatrzone sąw fizyczne etykiety służące do zgłaszania translacji adresu z liniowego na fizyczny. Bufor pomocniczy translacji rozkazów (ITRB) 445 otrzymuje adresy początkowe tablicy stron z operatora nieprawidłowości przy wyborze strony (Page Miss Handler - PMH) 152 w celu przetłumaczenia adresu liniowego na adres fizyczny. Jeśli wystąpi niewłaściwe wyznaczenie strony, to wtedy bufor ITRB 445 przekazuje informacje o niezgodności strony do PMH 152. W odpowiedzi na to, operator PMH „odbywa spacer po stronach” i ewentualnie wykonuje inne znane funkcje związane z niezgodnością stron.
Adres pobrany podczas fazy potokowania 13 bloku IFU 122 jest adresem liniowym, a nie wirtualnym czy fizycznym. W wyniku tego blok IFU 122 wstępnie pobiera rozkaz opóźniając zaburzenia granicy segmentu. Sprawdzenie granicy segmentu dokonuje się następnie w procesorze (na przykład AGU 146). Jednakowoż blok IFU 122 realizuje funkcję stronicowania. Jeżeli stronicowanie j est wyłączone, to liniowy adres pobrania, wybrany w fazie 13 potokowania j est identyczny z adresem fizycznym, i dzięki temu może być wykorzystany bezpośrednio do wykorzystania wszystkich pamięci podręcznych/buforów w następnej fazie potokowania. Natomiast kiedy stronicowanie jest włączone, to adres liniowy jest tłumaczony przez bufor ITLB 445 na adres fizyczny. Poza zapewnieniem translacji adresów, bufor ITLB 445 klasyfikuje każdy adres jako nadający się do przechowywania w pamięci podręcznej bądź nie. Jeżeli wystąpi niezgodność w ITLB 445, to ITLB 445 otrzymuje informacje z operatora PMH 152. Przy wyłączonym stronicowaniu, operator PMH 152 zwraca do ITLB 445 liniowy adres strony jako jej adres fizyczny.
Liniowy adres pobrania wykorzystywany do dostępu do ISB 410, I-Cache 420 oraz IVC 430, wybierany jest przez układ logiczny 450 następnego wskaźnika IP. Przy wystąpieniu zgodności w jednej z trzech pamięci podręcznych/buforów bajty rozkazu odczytywane są z odpowiedniej pamięci/bufora, i transmitowane do dekodera 465 długości rozkazu, w celu oznakowania. Układy logiczne 460, bitów ważności oznaczająrozkaz jako ważny lub nieważny. Rejestr IFBL 470 generuje wskaźniki rozkazowe, które z kolei generują dwa wskaźniki adresowe wykorzystywane do obliczenia nieważności końcowych miejsc rozgałęzień. Wskaźniki rozkazowe zapisywane są w rejestrze IFBL 470. Przy wystąpieniu niezgodności każdej z trzech pamięci podręcznych/buforów, bufor ISB 410 inicjuj e obsługę niezgodności, przez przekazanie zgłoszenia pobrania zewnętrznego do układu EBL106. W odpowiedzi na to układ BBL 108 przekazuje pominięte dane do ISB 410.
Wiersze pamięci podręcznej przepisywane są z bufora ISB 410 do pamięci I-Cache 420. Kiedy wystąpi niezgodność pamięci podręcznej z I-Cache 420, to następuje identyfikacja pominiętej linii, w celu jej wymiany i zapamiętania w IVC 430. Jeśli wystąpi zgodność pamięci podręcznej z IVC 430, to pominięta linia przekazywana jest na powrót do I-Cache 420. Kiedy wystąpi
178 770 niezgodność w ITLB 445, tak że ITLB 445 nie jest w stanie wygenerować adresu fizycznego; to w ITLB 445 zostaje zainicjowana obsługa niezgodności przez wysyłanie do operatora PMH 152 zgłoszenia zapełnienia ITLB. Poza tym ITLB 445 zgłasza do dekodera ID 126 żądanie wstawienia specjalnego mikrorozkazu niezgodności ITLB do strumienia rozkazów. W wyniku tego operator PMH 152 przekazuje do ITLB 445 pominięty adres wejścia do tablicy stron. Specjalna mikroinstrukcja niezgodności ITLB pozwala na sygnalizację nieprawidłowości. Podglądające układy logiczne 455 odbierają zgłoszenia podglądu i odpowiednie adresy z bufora pomocniczego translacji danych (DTLB) 154 oraz układów EBL 106 i, w odpowiedzi na to, wysyłają zgłoszenia do bloków ICache 420, IVC 430 i ISB 410.
Na figurze 5 przedstawiono działanie bloku IFU122 w jednej z odmian wykonania procesora potokowego według niniejszego wynalazku. W fazie 11 potoku, blokIFU 122 wybiera adres następnego dostępu do pamięci podręcznej ICache 420. Adres wybierany jest na podstawie pobranych zgłoszeń nadchodzących do bloku IFU 122 z bloków BTB 124, BAC 128 oraz IEU 144. Blok IFU 122 -wybiera zgłoszenie pobrania o najwyższym priorytecie, oraz zaszeregowuje zgłoszenie do obsługi w następnej fazie potoku. W fazie 12 potoku, blok IFU 122 osiąga dostęp do ISB 410,1-Cache 420, IVC 430 (pamięci podręcznych/buforów), z wykorzystaniem adresów pobrania, wybranych podczas poprzedniej fazy potoku. Przy wystąpieniu zgodności w którejkolwiek z pamięci podręcznych/buforów, następuje odczytanie rozkazów i przekazanie ich do następnej fazy potoku. Natomiast, jeżeli wystąpi niezgodność we wszystkich z pamięci podręcznych/buforów, to inicjowane jest pobranie zewnętrzne, przez wysłanie zgłoszenia do układów EBL 106. Również staje się dostępny bufor ITLB 445, do otrzymania adresu fizycznego oraz typu pamięci pobrania.
Również podczas trwania fazy 12 potoku adres pobrania wykorzystywany jest do dostępu do buforów BTB 124 i ITLB 445. W fazie 13 potoku, blok IFU 122 oznacza instrukcj e otrzymane z poprzedniej fazy w dekoderze 465 długości instrukcji (ILD). Oznaczanie rozkazów obejmuje wyznaczenie granicy rozkazów w bajtach rozkazów zidentyfikowanych jako nieważne. Dodatkowe znaczniki wskazujące przewidywane rozgałęzienia, wprowadzane sądo bufora rozkazów i rotatora (IFBR) 470 z bufora BTB 124. W fazie 14 potoku, rozkazy i odpowiadające im znaczniki wpisywane są do IFBR 470 i dostarczane do dekodera ID 126. Dostarczanie rozkazów do dekodera ID 126 bazuje na przestrzennej dostępności bufora wejściowego 810 dekodera ID (fig. 8).
Bufor końcowy rozgałęzienia (Branch Target Buffer - BTB): Bufor końcowy rozgałęzienia (BTB) 124 należy do klastera 112 pobierania rozkazów, jak to pokazano na fig. 1. Ogólnie biorąc, zadaniem bufora BTB 124 jest predykcja makroinstrukcji rozgałęziających, wcześnie w potoku rozkazów procesora, tak aby zapobiec wykonywaniu przez procesor rozkazów z niewłaściwej ścieżki. W jednym z przykładów wykonania, bufor BTB 124 przewiduje rozgałęzienia w rozkazach rozgałęziających, kompatybilnych z architekturą mikroprocesorów INTEL(R). Jednakowoż bufor BTB 124 może być dostosowany do predykcji rozkazów rozgałęziających dla dowolnego zestawu rozkazowego CISC lub RISC, włącznie, choć nie jedynie, z PowerPC™, Alpha™ itp, bez wychodzenia poza ideę i zakres wynalazku.
W celu efektywnego pobierania stałego strumienia rozkazów w bloku IFU 122, bufor BTB 124 przewiduje predykcyjnie decyzje rozkazu rozgałęziającego. Jednak, predykcja może być niewłaściwa, i w wyniku tego procesor wykryje tę niewłaściwość i skoryguje ją przez pobranie rozkazów na ścieżce poprawnej. W szczególności wszystkie predykcje rozgałęzień wykonywane przez bufor BTB 124 są sprawdzane za nim, albo przez kalkulator 128 adresów rozgałęzień, albo blok realizacji skoków, znajdujących się w bloku 144 przetwarzania całkowitoliczbowego.
Bufor BTB 124 otrzymuje w charakterze informacji wejściowej początkowy adres liniowy bieżącego pobieranego rozkazu. Na bazie początkowego adresu liniowego, bufor BTB 124 wytwarza adres predykcyjny i końcowy pobieranego rozkazu rozgałęziającego. Informacja o adresie predykcyjnym i końcowym przekazywana jest do bloku IFU 122, i następuje zmiana ścieżki pobierania rozkazów, jeżeli bufor BTB 124 przewiduje, że odgałęzienie zostanie wybrane. Rozgałęzienia sąrównież uaktualniane spekulatywnie, w tym samym takcie, w którym dokonuje się predykcji BTB.
178 770
Figura 6 przedstawia schemat blokowy bufora BTB 124 skonfigurowanego według jednego z wykonań niniejszego wynalazku. Bufor BTB 124 zawiera pamięć podręczną 610 bufora końcowego rozgałęzień (BTB), oraz tablicę 630 wskaźników rozkazów rozgałęziających (BIT). Pamięć podręczna 610 BTB wykorzystywana jest do alokacji lub aktualizacji informacji o rozkazach rozgałęziających, po analizie rezultatów rozkazu rozgałęzienia. Pamięć podręczna 610 bufora BTB zawiera informację dotyczącą rozgałęziania w rozkazach uprzednio wykonywanych przez procesor. W jednym z przykładów wykonania, każdy zestaw informacji o rozgałęzieniach, w pamięci podręcznej 610 bufora BTB zawiera cztery wejściowe adresy rozgałęzień, przy czym każdy adres wejściowy rozgałęzienia zawiera informację o pojedynczym rozkazie rozgałęziającym wykonanym uprzednio przez procesor. Każdy zestaw adresów wejściowych rozgałęzień w pamięci podręcznej 610 bufora BTB zawiera również tablicę 612 struktury rozgałęzień oraz parę pseudonajmłodszych ostatnio wymienianych bitów (Pseudo-least Recently Replaced - PLRR). Bufor BTB 124 wykorzystuje tablicę 612 struktury rozgałęzień do predykcji rezultatu warunkowych rozkazów rozgałęziających w zestawie wejściowych adresów odgałęzień. Bufor BTB 124 wykorzystuje pseudonajmłodsze ostatnio wymieniane bity (PLRR) do wyboru adresu początkowego odgałęzienia w zestawie, po wpisaniu informacji o nowym odgałęzieniu do zestawu adresów wejściowych rozgałęzień.
Poza tym każdy adres wejściowy rozgałęzienia zawiera obcięty adres etykiety, wyrównanie (offset) bloku, typ rozgałęzienia, rzeczywistą przeszłość rozgałęzienia, spekulatywną przeszłość rozgałęzienia, bit spekulatywności, bit ważności oraz końcowy adres odgałęzienia. Obcięty adres etykiety i wyrównanie bloku wykorzystywane sądo identyfikacji adresu pamięci rozkazu rozgałęzienia skojarzonego z tym adresem wejściowym odgałęzienia. Pole typu odgałęzienia specyfikuje rodzaj rozkazu odgałęziającego wskazywanego przez adres wejściowy rozgałęzienia. Bufor BTB 124 wykorzystuje pole typu rozgałęzienia przy predykcji rozgałęzienia. Pole rzeczywistej przeszłości rozgałęzienia przechowuje historię typu „wybrany” lub „nie wybrany” rozkazu odgałęzienia wyznaczoną przez blok realizacji skoków. Bit spekulatywności i pole przeszłości spekulatywnej rozgałęzienia wykorzystywane sądo predykcji rozkazów rozgałęziających bez oczekiwania na rozkazy do wykonywania, przez przechowywanie informacji „spekulatywnej” o wybieraniu lub niewybieraniu odgałęzienia w przeszłości w tym rozkazie. Bit ważności wskazuje, czy adres wejściowy rozgałęzienia zawiera ważną informację o rozgałęzieniu.
W jednym z wykonań według wynalazku, predykcja rozgałęzienia zaimplementowana jest w czterofazowym mechanizmie analizy rozgałęzień. Pierwsza faza czterofazowego mechanizmu analizy rozgałęzień stanowi fazę predykcji rozgałęzienia. Faza predykcji rozgałęzienia przewiduje rozkazy rozgałęziające w strumieniu rozkazowym. Faza predykcji rozgałęzień przewiduje również rezultat wyznaczanych predykcyjnie rozkazów rozgałęziających, z wykorzystaniem tylko bieżącego wskaźnika rozkazowego. Przy predykcji występowania rozkazów rozgałęziających w strumieniu rozkazowym, procesor wstępnie pobiera strumień rozkazowy, bez oczekiwania na przekazanie każdego z rozkazów do wykonania.
Drugą fazę mechanizmu rozgałęzień stanowi faza dekodowania rozkazu rozgałęziającego. W fazie dekodowania rozkazu rozgałęziającego następuje zdekodowanie każdego z rozkazów rozgałęziających w celu weryfikacji predykcji rozgałęzień, dokonanej w fazie predykcyjnej. Faza dekodowania rozkazów rozgałęziających daje w efekcie informację o wynikach rozgałęzienia dla rozkazów rozgałęziających, które nie zostały wyznaczone predykcyjnie podczas fazy predykcyjnej. W fazie dekodowania rozkazów rozgałęziających następuje zapisanie informacji o każdym z rozkazów rozgałęziaj ących w pamięci podręcznej 610 bufora BTB. Pamięć podręczna 610 bufora BTB jest dostępna po wykonaniu rozkazu rozgałęziającego.
Trzecią fazę mechanizmu analizy rozgałęzień stanowi faza realizacji rozgałęzienia. Faza realizacji rozgałęzienia obejmuje wykonanie każdego z rozkazów rozgałęziających z generacją końcowego rezultatu rozgałęzienia oraz końcowego adresu docelowego rozgałęzienia. Jeżeli w obu poprzednich fazach wyznaczenia rozgałęzień pewne z rozgałęzień nie zostało przewidziane,
178 770 to w etapie realizacji rozgałęzienia następuje wyrównanie do początku działania procesora, co powoduje, że blok IFU 122 rozpoczyna pobieranie rozkazów spod skorygowanych adresów.
Czwartą i ostatnią fazę czterofazowego mechanizmu analizującego rozgałęzienia stanowi faza wycofywania rozgałęzienia. Faza wycofywania rozgałęzienia odpowiada za wycofanie każdego rozkazu rozgałęzienia i zapewnienia, że żaden z pobranych rozkazów po nieprawidłowej predykcji rozgałęzienia nie zostanie wykonany i przypisany stanowi trwałemu.
Pamięć podręczna 610 bufora BTB zawiera informacje o rozkazach rozgałęzień uprzednio wykonywanych przez procesor. Bufor BTB 124 wykorzystuje informacje w pamięci podręcznej 610 bufora BTB do rozpoznania rozkazów rozgałęziających i do predykcji wyników rozkazów rozgałęziających. Bufor BTB 124 realizuje również tablicę BIT 630. Tablica BIT 630 zawiera informacje o rozkazach rozgałęziających znajdujących się aktualnie w procesorze. Informacja w tablicy BIT 630 wykorzystywana jest do korekcji niewłaściwie przewidzianych rozkazów rozgałęziających i podtrzymania pamięci podręcznej 610 bufora BTB po wykonaniu rozkazów rozgałęziających.
Przy pracy IFU 122 zamawia informacje o rozkazach rozgałęziających nadchodzących z bufora BTB 124, przez podanie wskaźnika rozkazowego do bufora BTB 124. Wskaźnik rozkazowy przekazywany do bufora BTB 124 wyznacza blok pamięci aktualnie pobierany przez blok IFU 122. Bufor BTB 124 wyszukuj e w pamięci podręcznej 610 bufora BTB informacje o rozkazach rozgałęziaj ących w bloku pamięciowym bezpośrednio pobieranym przez blok IFU 122. Bufor BTB 124 dokonuje predykcji rozgałęzień dla wszelkich rozkazów rozgałęziających znajdujących się w bloku pamięci aktualnie pobieranym przez blok IFU 122 i lokowanych w pamięci podręcznej 610 bufora BTB. Bufor BTB 124 przepuszcza informację predykcyjnąo rozkazach rozgałęziających do bloku IFU 122, tym samym informując blok IFU 122 o wszelkich rozkazach rozgałęziających w bloku pamięciowym aktualnie pobieranym.
W celu podtrzymywania pamięci podręcznej 610 bufora BTB i tablicy BIT 630, bufor BTB 124 odbiera informacje z kilku innych bloków funkcjonalnych procesora. Dekoder rozkazowy 126 do bufora BTB 124 przekazuje informacje o rozkazach rozgałęziających. Informacja o rozkazach rozgałęziających przesyłana przez dekoder rozkazowy 126 zawiera adres rozkazu bezpośrednio następującego za rozkazem rozgałęzienia. Bufor BTB 124 zapisuje adres rozkazu bezpośrednio następującego za rozkazem rozgałęzienia w tablicy BIT 630, dla późniejszego wykorzystania.
Kalkulator 128 adresu rozgałęzienia nadaje ważność predykcjom rozgałęzień dokonywanym w buforze BTB 124. Jeżeli kalkulator 128 adresów rozgałęzień stwierdzi, że bufor BTB 124 dokonał predykcji rozgałęzienia dla rozgałęzienia nieistniejącego, to kalkulator 128 adresu rozgałęzienia nakazuje buforowi BTB 124 dokonanie dealokacji wejścia do pamięci podręcznej 610 bufora BTB zawierającego nieistniejący rozkaz rozgałęziający.
Alokator 134 dokonuje alokacji jednego z wejść bufora 136 porządkowania wtórnego dla każdej z wydawanych mikroinstrukcji. Przy dokonywaniu przez alokator 134 alokacji docelowego wejścia fizycznego (Pdst) w buforze 136 porządkowania wtórnego do mikroinstrukcji rozgałęziającej, alokator 134 podaje numer wejścia Pdst do bufora BTB 124. Bufor BTB 124 wykorzystuje numer wejścia Pdst do alokacji odpowiedniego wejścia w tablicy BIT 630. Odpowiednie wejście w tablicy BIT 630 przechowuje informacje o mikro operacji rozgałęziającej, kiedy ta mikrooperacja rozgałęziająca znajduje się w procesorze.
Stanowisko 138 rezerwowania przechowuje mikrooperacje oczekujące na wykonanie oraz wysyła gotowe mikrooperacje do bloków wykonawczych w klasterze wykonawczym 118. Kiedy stanowisko 138 rezerwowania wysyła mikrooperację rozgałęziającą do bloku realizacji skoków, znajdującego się w bloku 144 operacji całkowitoliczbowych, to stanowisko rezerwowania informuje bufor BTB 124 o adresie wejściowym Pdst dla odpowiedniej mikrooperacji rozgałęziającej. W odpowiedzi na to bufor BTB 124 osiąga dostęp do odpowiedniego wejścia, dla instrukcji rozgałęziającej w tablicy BIT 630. Informacja wprowadzana z tablicy BIT 630 wykorzystywana jest po wykonaniu mikrooperacji rozgałęziającej.
178 770
Blok realizacji skoków, znajdujący się wewnątrz bloku IEU 144, wykonuje mikromstrukcje rozgałęziające kierowane do procesora. Kiedy blok realizacji skoków wykonuje mikrooperacje rozgałęziającą to ten blok realizacji skoków przekazuje informacje z analizy rozgałęzienia do bufora BTB 124. Bufor BTB 124 wykorzystuje informacje z analizy rozgałęzienia do aktualizacji istniejącego adresu wejściowego w pamięci podręcznej 610 bufora BTB czyli alokacji nowego adresu wejściowego w pamięci podręcznej 610 bufora BTB.
W celu wyznaczenia predykcyjnego rezultatu rozgałęzienia dla każdego z adresów wejściowych, bufor BTB 124 dokonuje odczytu pola typu rozgałęzienia, przechowywanego w pamięci podręcznej 610 bufora BTB. Bufor BTB 124 traktuje predykcję rozgałęzień różnie, zależnie od konkretnego typu rozkazu rozgałęziającego będącego przedmiotem predykcji. Pole typu rozgałęzienia oznacza, czy określany predykcyjnie rozkaz rozgałęziający jest warunkowy, czy bezwarunkowy, czy stanowi wywołanie podprogramu, bądź rozkaz rozgałęziający powrotu z podprogramu. Chociaż rozkazy wywołania podprogramu i powrotu z podprogramu stanowią specyficzny rodzaj bezwarunkowych rozkazów rozgałęziających, to te dwa rozkazy zostają oznaczone jako typy różne. Bufor BTB 124 dokonuje oznaczenia rozkazów „wywołanie podprogramu” i „powrót z podprogramu” jako typów różnych, ponieważ kiedy wyznaczane predykcyjnie są te dwa typy rozkazów rozgałęziających, bufor BTB 124 realizuje specjalne operacje.
W tablicy 1 zebrano rezultaty predykcji rozgałęzień i adresy docelowe w buforze BTB 124 dla czterech typów rozkazów rozgałęziających przechowywanych w pamięci podręcznej 610 bufora BTB.
Tablica 1
Typ rozgałęzienia Działanie układu bufora końcowego rozgałęzienia
Predykcja wyniku rozgałęzienia Predykcja adresu końcowego rozgałęzienia
Rozkaz rozgałęzienia bezwarun kowego (Poza wywołaniem podprogramu i powrotem z podprogramu Predykcja „wybrany” Predykcja adresu końcowego rozgałęzienia z pola adresów końcowych w pamięci podręcznej bufora końcowego rozgałęzień
Rozkaz rozgałęzienia warunkowego Predykcja wyniku rozgałęzienia z wykorzystaniem przeszłości rozgałęzienia i tablicy struktury rozgałęzienień Predykcja adresu końcowego rozgałęzienia z pola adresów końcowych w pamięci podręcznej bufora końcowego rozgałęzień
Rozkaz wywołania podprogramu Predykcja „wybrany” Predykcja adresu końcowego rozgałęzienia z pola adresów końcowych w pamięci podręcznej bufora końcowego rozgałęzień
Rozkaz powrotu z podprogramu Predykcja „wybrany” Predykcja na podstawie rejestru powrotu jeżeli jest ustawiony bit ważności rejestru powrotu, w przeciwnym przypadku predykcja na podstawie RSB z wykorzystaniem wskaźnika BTB TOS
W tablicy 1 wszystkie rozkazy rozgałęziające poza rozkazami rozgałęzienia warunkowego wyznaczone są predykcyjnie jako wybrane. W jednym z przykładów wykonania do predykcji wyniku rozkazu rozgałęzienia warunkowego, bufor BTB 124 wykorzystuje dwupoziomowy adaptacyjny mechanizm predykcyjny rozgałęzienia Yeh i Patta (patrz Tse Yu Yeh i Yale N. Patt, TwoLevel Adaptive Branch Prediction, 24-te Międzynarodowe Sympozjum i Warsztaty ACM/IEEE na temat Mikroarchitektury, listopad 1991, str. 51 - 61). Dwupoziomowy mechanizm predykcyjny rozgałęzień Yeh i Patta utrzymuje dynamiczne dwa poziomy rozgałęzień z przeszłości.
Pierwszy poziom przeszłości (historii) rozgałęzień utrzymywany zgodnie z dwupoziomowym adaptacyjnym mechanizmem predykcji rozgałęzień, jest zapisem historii rozgałęzień wy
178 770 branych lub niewybranych, dla każdego adresu wejściowego rozgałęzienia. Na przykład przeszłe rozgałęzienia „nie wybrane, wybrane, wybrane, nie wybrane” są reprezentowane przez „0110”. W jednym z przykładów wykonania w pamięci podręcznej 610 bufora BTB przechowywane są dwie wersje historii rozgałęzień: histora rozgałęzień rzeczywistych i historia rozgałęzień spekulatywnych. Histora rozgałęzień rzeczywistych obejmuje cztery ostatnie wyniki rozkazu rozgałęzienia, określone blok realizacji skoków. Spekulatywna historia rozgałęzień obejmuje ostatnie cztery wyniki rozkazów rozgałęzień wyznaczane predykcyjnie przez bufor BTB 124. Historia spekulatywna wykorzystywana jest do wykonywania, wewnątrz zagadnienia predykcji rozkazów rozgałęzień, niewielkich (czyli „ciasnych”) pętli ponieważ historia rzeczywista może się okazać niedostatecznie szybko aktualizowana.
Drugi poziom historii rozgałęzień utrzymywany w dwupoziomowym adaptacyjnym mechanizmie predykcyjnym rozgałęzień stanowi historia schematu struktury rozgałęzień, przechowywana w tablicy 612 struktur. Historia struktury rozgałęzień wskazuje prawdopodobne rezultaty rozkazu rozgałęzienia na podstawie poprzednich rezultatów rozgałęzień rozkazów rozgałęziających o identycznej historii. W jednym z przykładów wykonania historia struktury rozgałęzień przechowywana jest w postaci dwubitowej wartości stanu dla każdej możliwej struktury historii rozgałęzienia. Ta dwubitowa wartość stanu klasyfikuje struktury jako silnie wybierane, słabo wybierane, słabo niewybierane i silnie niewybierane. Historia struktur rozgałęzień powstaj e z uprzednich wystąpień tych samych struktur rozgałęzień. Za każdym razem przy analizie rozkazu rozgałęzienia, zostaj e zaktualizowana tablica struktur rozgałęzień.
Po wyznaczeniu przez bufor BTB 124 wyniku rozgałęzienia dla wszystkich rozkazów rozgałęzień warunkowych w zestawie sekwencyjnym, bufor BTB 124 poszukuje pierwszego wybranego rozkazu rozgałęzienia. Jeżeli żaden z rozkazów nie został określony predykcyjnie jako pobrany, to IFU 122 pobiera następny kolejny blok pamięciowy. Natomiast, j eżeli w danym zestawie znajduje się wybrany rozkaz rozgałęzienia, to bufor BTB 124 wyznacza predykcyjnie końcowy adres rozgałęzienia dla pierwszego wybranego rozkazu rozgałęziającego.
W tablicy 1 opisano predykcję końcowego adresu rozgałęzienia w buforze BTB 124 dla każdego z typów rozkazów rozgałęziających, wskazanych w polu typu rozgałęzienia, kiedy rozkaz wyznaczany jest predykcyjnie jako wybrany. Jak zaznaczono w tabeli 1, bufor BTB 124 działa na rozkazach rozgałęziających bezwarunkowych, warunkowych i typu skoku do podprogramu, przez wyznaczanie predykcyjne odgałęzienia do adresu znajdującego się w polu adresu końcowego rozgałęzienia wejścia w pamięci podręcznej 610 bufora BTB. Natomiast sposób postępowania z rozkazami typu powrotu z podprogramu jest inny. Kiedy bufor BTB 124 wyznacza predykcyjnie wybrany rozkaz powrotu z podprogramu, bufor BTB 124 wyznacza predykcyjnie adres powrotu z rej estru 642 powrotów lub z bufora powrotnego 100 w kalkulatorze 128 adresów rozgałęzień.
Bufor BTB 124 pracuje podczas trwania czterech różnych faz potoku: fazy predykcji, fazy alokacji, fazy zapisu tablicy BIT 30 oraz fazy zapisu pamięci podręcznej 610 bufora BTB. Bufor BTB 124 zajmuje dwa takty na predykcję rozgałęzienia. Figura 7a przedstawia potok predykcyjny w buforze BTB 124 dla jednego z wykonań według wynalazku. Potok predykcji rozgałęzienia występuje w fazach 12 i 13. W fazie 11 potoku bufor BTB 124 otrzymuje wskaźnik rozkazowy pobrania. Podzestaw wskaźnika rozkazowego pobrania jest dekodowany w celu umożliwienia dostępu do pamięci podręcznej 610 bufora BTB. Adresy wejściowe rozgałęzień odczytywane z pamięci podręcznej 610 bufora BTB i porównywane z etykietąi wyrównaniem wskaźnika pobrania IP w komparatorach 616,6141618. Bazując na tych porównaniach bufor BTB 124 wyznacza predykcyjnie wszystkie pobrane rozgałęzienia, dla których bufor BTB 124 ma informacje aż do pierwszego przewidywanego rozgałęzienia wybranego. Bufor BTB 124 nie dokonuje predykcji poza pierwszym wyznaczonym predykcyjnie rozgałęzieniem wybranym, ponieważ strumień rozkazowy jest następnie przełączany na adres końcowy wyznaczanego predykcyjnie odgałęzienia obranego.
Bufor BTB 124 na predykcję rozgałęzienia zajmuje dwa takty. Kiedy bufor BTB 124 wyznacza predykcyjnie odgałęzienia wybrane w fazie 13, to obliczenia w fazie 12 sąkasowane po
178 770 nieważ strumień programowy przestawiany jest na adres docelowy. W wyniku tego odgałęzienia wyznaczane predykcyjnie jako wybrane przez bufor BTB 124, traci jeden takt. Żadnej straty nie ma, jeżeli BTB 124 wyznacza predykcyjnie odgałęzienie jako niewybrane. W czasie trwania fazy 13, bufor BTB 124 przekazuje informacje o predykcji rozgałęzień do bloku IFU 122. Informacja przekazywana jest do kalkulatora BAC 128, i wykorzystywana do weryfikowania predykcji bufora BTB 124.
W fazie 14, bufor BTB 124 spekulatywnie uaktualnia wyznaczane predykcyjnie rozgałęzienia w pamięci podręcznej 610 bufora BTB. Wszystkie wyznaczane predykcyjnie rozgałęzienia, zarówno wybrane, jak i niewybrane przez BTB 1124 sąspekulatywnie uaktualniane przez ustawienie bitu. Ta historia spekulatywna zostaje zapisana w polu przeszłości spekulatywnej pamięci podręcznej 610 bufora BTB i nie zamazuje informacji o rzeczywistej przeszłości rozgałęzienia.
Figura 7b przedstawia fazę alokacji BTB skonfigurowaną zgodnie z jednym z wykonań według wynalazku. Adresy wejściowe w pamięci podręcznej 610 bufora BTB sądealokowane w czasie jednego taktu po wykryciu przez kalkulator BAC 128 niepoprawnej predykcji, jak to przedstawiono na fig. 7b. W odpowiedzi na niepoprawne predykcje, kalkulator BAC 128 wysyła sygnał do bufora BTB 124 w celu wyeliminowania tego adresu wejściowego.
Figura 7c przedstawia fazy zapisu tablicy BIT 30 skonfigurowane zgodnie z jednym przykładem wykonania wynalazku. W fazie 21 potoku, alokator (ALLOC) 134 przypisuje fizyczny adres przeznaczenia (Pdst) do rozkazu rozgałęziającego wydanego z dekodera ID 126. Rozgałęzienie Pdst wykorzystywane jest do dostępu do adresu wejściowego tablicy BIT 630. Wejście tablicy BIT 630 jest następnie wpisywane do pamięci podręcznej 610 bufora BTB za pośrednictwem układów 620 sterowania wpisem. Informacja rozgałęziająca wpisana do tablicy BIT 630 zawiera wartość RSPTOS i niepoprawny wskaźnik rozkazowy jest dekrementowany.
Figura 7d przedstawia fazę zapisu pamięci 610 bufora BTB 124, skonfigurowaną według jednego z wykonań wynalazku. Jak to przedstawiono na fig. 7d, faza zapisu BTB rozciąga się od fazy 83H do fazy 86H. W fazie 83H następuje dostęp do tablicy 630 wskaźników IP rozgałęzień. Następuje odczyt niepoprawnego wskaźnika IP, jego dekrementacja i dekodowanie, w celu wskazania zespołowi, że adres wejściowy rozgałęzienia będzie aktualizowany/alokowany. W fazie 84H, następuje odczyt adresu wejściowego bufora BTB. Adresy wejściowe rozgałęzień porównywane są z analizowanym rozgałęzieniem w celu określenia, czy wystąpiła zgodność rozgałęzień, a zatem czy potrzebna jest aktualizacja, czy alokacja. W fazie 85L wyznaczana jest nowa historia rozgałęzienia, i jeżeli jest potrzebna aktualizacja, to wykorzystuje się algorytm predykcji rozgałęzienia w celu zaktualizowania tablicy 612 struktur. Jeżeli rozgałęzienie wymaga alokacji, to do wybrania środków alokacji rozgałęzienia stosuje się metodą wymiany. Na koniec, w fazie 86, rozgałęzienie zostaje zapisane w pamięci podręcznej 610 bufora BTB przez układy 622 sterujące zapisem w buforze BTB. Tablica 612 struktur jest w razie konieczności również aktualizowana.
Dekoder rozkazów (Instruction Decoder - ID) Jak to przedstawiono na fig. 1, blok IFU 122 dołączony jest do dekodera ID 126. W jednym z wykonań, dekoder ID 126 zawiera wiele dekoderów służących do równoczesnego dekodowania wielu makroinstrukcji. W każdym takcie zegara, dekoder 126 otrzymuje makroinstrukcje z bloku IFU 122. Z kolei dekoder ID 126 w każdym takcie zegara tłumaczy makroinstrukcję na mikrooperacje. Dekoder ID 126 sprzężony jest również z kalkulatorem BAC 128. Dekoder ID 126 przesyła zdekodowaną informację o rozgałęzieniu do kalkulatoraBAC 128. Poza tym dekoder ID 126 dołączony jest do sekwensera MS 130. Dekoder ID 126 żąda od sekwensera MS 130 operacji mikrokodowej dla makroinstrukcji wymagających dekodowania długich sekwencji mikrokodów.
Figura 8 przedstawia schemat blokowy dekodera ID 126, skonfigurowanego według jednego z przykładów wykonania wynalazku. Dekoder ID 126 zawiera bufor wejściowy 810 ID. Dekoder wejściowy 810 ID umożliwia odłączenie struktury potokowej według wynalazku od funkcji pobierania rozkazów dla funkcji dekodowania. Jak to opisano powyżej w odniesieniu do bloku IFU 122, w buforze wej ściowym 810 ID przechowywana jest pewna liczba oznakowanych
178 770 makroinstrukcji w celu generacji kolejki makroinstrukcji do dekodowania. Dekoder ID 126 zawiera również kierujące układy logiczne 820. Układy logiczne 820 kierują każdą oznakowaną makroinstrukcję do dekodera znajdującego się w schemacie 830 wydawania. W wykonaniu przedstawionym na fig. 8, dekoder ID 126 zawiera cztery bloki dekoderów: 840, 845, 850 i 855. Konfiguracja struktury 830 wydawana umożliwia dekodowanie makroinstrukcji. Dekodery 840, 845, 850 i 855 dołączone są do kolejki wyjściowej 860 ID.
Jak to opisano powyżej, dekoder 465 długości rozkazu znajdujący się w bloku TFU 122 identyfikuje ostatni bajt rozkazu, i jego pierwszy bajt kodu operacyjnego. Dekoder 465 długości rozkazu generuje bity znakujące dla każdego baj tu rozkazu, co umożliwia traktowanie rozkazów zmiennodługościowych, jak rozkazów o stałej długości. Bufor wejściowy 810 ID przechowuje oznakowane makroinstrukcje przeznaczone do dekodowania. Układy logiczne 820 kierowania rozkazów wykorzystują bity znakujące makroinstrukcji do przekazywania makroinstrukcji do dekoderów 840, 845, 850 i 855 w strukturze 830 wydawania.
Struktura 830 wydawania specyfikuje liczbę dekoderów i ich możliwości. W jednym z przykładów wykonania, niektóre z dekoderów dekodują wszystkie typy rozkazów, podczas kiedy inne dekodujątylko konkretne rozkazy. Struktura 830 wydawania skonfigurowana jest tak, że dekoder 840 wydaje do czterech mikrooperacji, a dekodery 845,850 i 855 wydają do dwóch mikrooperacji na fazę potoku. W wyniku tego w strukturze 830 wydawania może być generowanych do dziesięciu mikrooperacji na takt zegara. Jakkolwiek dekoder ID 126 opisano z czterema blokami dekodującymi, to w sposób optymalny do konkretnego zestawu rozkazowego można dobrać dowolną liczbę bloków dekodujących, bez wychodzenia poza ideę i zakres wynalazku.
Działanie każdego z dekoderów 840, 845,850 i 855 zależy od konkretnego zestawu makroinstrukcji, wykorzystywanego przez procesor. Jakkolwiek niniejszy wynalazek opisano w odniesieniu do struktury 830 wydawania dekodowanych makroinstrukcji, kompatybilnych z architekturą INTEL(R), włącznie z dekodowaniem rozkazów CISC, to struktura 830 wydawana może być skonfigurowana również w celu dekodowania dowolnego zestawu makroinstrukcji, włącznie z zestawem rozkazów RISC. Ogólnie biorąc, każdy blok dekodera z makroinstrukcji w lokalizatorze 865 pola wydziela pole argumentu i pole kodu operacyjnego, i zapisuje dane w pseudorejestrach. Każdy dekoder zawiera przynajmniej jeden układ XLAT PLA 870; po jednym PLA na każdą mikrooperację, którą dekoder jest w stanie wygenerować. Układy XLAT PLA 870 pracują równolegle z lokalizatorem 865 pola i zawierają mikrokody do generacji mikrooperacji sterujących. Pseudomultiplekser MUX 875 łączy mikrooperacje sterujące z danymi wydzielanymi przez lokalizator 865 pola, w celu generowania mikrooperacji.
W jednym z przykładów według wynalazku, dekodowania rozkazów wymagających dłuższych sekwencji mikrokodów dokonuje dekoder 830. Poza tym, makroinstrukcje zawierające powyżej czterech operacji powodują wezwanie sekwensera MS 130 do sekwencyjnego sterowania dekoderem ID 126 podczas procedur o długich mikrokodach. Po skompletowaniu przez sekwenser MS 130 ciągu długich procedur mikrokodowych, sterowanie zostaje zwrócone do dekodera ID 126. Mikrooperacje są wydawane w pierwotnym porządku programowy.
Kolejka wyjściowa 860 powoduje odłączenie fazy dekodowania od fazy niesekwencyjnego potoku klastera wykonawczego przez zbuforowanie zdekodowanych mikrooperacji. Kolejka wyjściowa 860 ma za zadanie zapewnienie ciągłego przepływu mikrooperacji w każdym takcie zegara. Kolejka wyjściowa 860 umożliwia dekodowanie rozkazów nawet, kiedy pominięty zostaje klaster niesekwencyjny 116. Kolejka wyjściowa 860 kompensuje zmienność liczby makroinstrukcji odbieranych w takcie zegara, zmienność liczby mikrooperacji wytwarzanych w każdej makroinstrukcji, jak również efekty rozgałęzień i pominięć.
Na figurze 9 przedstawiono fazy potokowania dla ftmkcji dekodera rozkazowego, skonfigurowane zgodnie z jednym z przykładów wykonania według wynalazku. Dekodowanie makroinstrukcji odbywa się w ciągu trwania dwóch faz potokowania, 15 i 16. Bajty makroinstrukcji z bloku IFU 122 zatrzaskiwane są w dekoderze ID 126 na początku fazy 15 potokowania. W czasie trwania pierwszej połowy taktu zegarowego w fazie 15 potoku, bajty makroinstrukcji kierowane są do translacji w XLAT PLA 870 i lokalizatorów 865 pól. W drugiej połowie taktu
178 770 zegarowego, w fazie 15, układy XLAT PLA 870 tłumaczą te rozkazy na mikrooperacje sterujące, a lokalizatory pól pracując równolegle wydzielają z makroinstrukcji różne informacje. Dane te przechowywane są w pseudorejestrach. Podczas trwania fazy 16, bity sterujące w sterującej makroinstrukcji specyfikujądane potrzebne z pseudorejestrów, i te potrzebne dane dołączane są do mikrooperacji sterujących przez pseudomultiplekserMUX 875. Nowoutworzone mikrooperacje są wprowadzane do kolejki wyjściowej 860 dekodera ID. Między wyjściem kolejki 860 i następną częściąprocesora 100 występuje naturalna przerwa potoku. Mikrooperacje odczytywane są z kolejki wyjściowej 860, i wydawane z dekodera rozkazowego 126, kiedy nie występują za nimi pominięcia.
Sekwenser mikroinstrukcji (Micro-instruction Seąuencer - MS) Jak to opisano powyżej, sekwenser MS 130 przejmuje sterowanie dekodowaniem rozkazów wymagających długiego strumienia wykonawczego mikrokodów. W jednej z odmian wykonania, sekwenser MS 130 zaopatrzony jest w pamięć ROM do przechowywania mikrooperacji. Sekwenser MS 130 umożliwia również prostą statyczną predykcję mikrorozgałęzień. W każdym takcie zegara, sekwenser MS 130 wytwarza wskaźnik mikroinstrukcji (IP) na podstawie zgłoszenia z ID 126. Nowy wskaźnik mikroinstrukcji umożliwia, dekodowanie makroinstrukcji. Kiedy dekoder rozkazowy 126 zdekoduje makroinstrukcję, na magistrali, dostęp do której dzielony jest między sekwenser MS 130 i dekoder 860 w dekoderze ID 126, umieszczane jest zero dla czterech mikrooperacji sterujących. Podczas trwania taktu, w którym uruchamiane sąmikrooperacje sterujące, dekoder ID 126 ma dostęp do punktu wejściowego do układów XLAT PLA 870, w celu określenia, czy sygnalizować do sekwensera MS 130, czy nie sygnalizować, wykonanie makroinstrukcji w MS 130. Jeżeli takie wykonanie jest potrzebne, to kontrolę nad magistralą przejmuje MS 130, i przetrzymuje ją aż do wysłania wszystkich mikrooperacji sterujących do ID 126.
W jednym z przykładów wykonania, pamięć ROM mikrokodów w sekwenserze MS 130 wykorzystywana jest do sterowania przepływem mikrooperacji, które mają długość przewyższającą cztery mikrooperacje sterujące. Poza tym, strumień mikrokodów dla operatorów zdarzeń i operatorów przerwań zapisywane są w pamięci ROM mikrokodów. Jednak pewne strumienie mikrokodów, liczące mniej, niż cztery operacje sterujące, zapisywane są w pamięci ROM mikrokodów. Kiedy do sekwensera MS 130 ma dostęp dekoder, to następuje odczyt z pamięci ROM mikrosterowanie mikrooperacji sterujących adresowanych wskaźnikiem mikroinstrukcji. Sekwenser MS 130 odpowiada za generację wskaźnika makroinstrukcji, i na tej szczególnej sytuacji bazuje rzeczywista generacja wskaźnika mikroinstrukcji. Po dokonaniu odczytu mikrooperacji sterujących z pamięci ROM mikrokodów, sekwenser MS 130 dekoduje mikrooperacje sterujące i wykorzystuje je do generacji sygnałów sterujących dla następnego taktu. Sekwenser MS 130 dostępny jest również dla przerwań lub zdarzeń ROB, jak również dla błędnych predykcji rozgałęzień.
Na figurze 10 przedstawiono działanie sekwensera MS 130 w jednym z przykładów wykonania potoku procesora według wynalazku. Jak to przedstawiono na fig. 10, sekwenser MS 130 działa podczas pierwszej fazy dekodowania. Podczas trwania każdego taktu, w którym sekwenser MS 130 jest uaktywniany, ten sekwenser MS 130 generuje wskaźnik mikroinstrukcji i wykorzystuje ten wskaźnik mikroinstrukcji do dostępu do pamięci mikro-ROM, i odczytuje mikrooperacje. Poza tym, sekwenser MS 130 dekoduje mikrooperacje i kształtuje sygnały kontrolne dla następnego taktu.
Kalkulator adresów rozgałęzień (Branch Address Calculator - BAC): Podstawową funkcją kalkulatora adresów rozgałęzień (BAC) 128 jest obliczanie adresów dla niektórych typów rozkazów rozgałęzienia i sprawdzanie predykcji rozgałęzień, dokonywanych przez bufor BTB 124. W szczególności BAC 128 dokonuje obliczenia docelowego i rozgałęzienia, i następnego sekwencyjnego adresu liniowego. Poza tym, kalkulator BAC 128 dokonuje statycznej predykcji rozgałęzień bazując na obliczeniach adresów. Poza tym, kalkulator BAĆ 128 zawiera bufor stosowy powrotów służący do śledzenia adresów powrotów rozkazów CALL. Ogólnie biorąc, kalkulator BAC 128 służy jako drugi predyktor rozgałęzień, wolniejszy od bufora BTB 124. Kalkulator BAC 128 próbuje korygować wszelkie niepoprawne predykcje dokonywane przez bufor BTB 124, tak aby zmniejszyć straty spowodowane błędną predykcją. Jak to pokazano na fig. 1, kalku
178 770 lator BAC 128 komunikuje się z blokiem pobierania rozkazów IFU 122, buforem BTB 124, dekoderem rozkazów 128 oraz sekwenserem mikroinstrukcji MS 130.
Kalkulator BAC 128 zaopatrzony jest w mechanizm sprawdzania predykcji rozgałęzień dla tych rozgałęzień, których adres docelowy może być określony z rozkazów rozgałęzień i wskaźnika rozkazowego. Gdy jedno z tych rozgałęzień nie trafi do bufora BTB pamięci podręcznej 610, to kalkulator BAC 128 przewiduje statystycznie decyzję oraz adres docelowy tego rozgałęzienia. Natomiast jeżeli jedno z tych rozgałęzień zostało wyznaczone predykcyjnie przez bufor BTB 124, to kalkulator BAC 128 sprawdza pewne aspekty tej predykcji. Jeżeli albo statyczna predykcja kalkulatora BAC 128 albo sprawdzenie ważności rozgałęzienia jest poprawna, to strata związana z pominięciem rozgałęzienia przy predykcji zostaje zredukowana do pięciu taktów zegara. Kalkulator BAC 128 otrzymuje w charakterze danych wejściowych przesunięcie rozgałęzienia, zawarte w rozkazie rozgałęziającym z buforem BTB 124, oraz informację o kodzie operacyjnym z ID 126. Na tej podstawie kalkulator BAC 128 oblicza adres docelowy oraz „niewykorzystany” adres liniowy. Po zakończeniu operacji, kalkulator BAC 128 zwraca utworzony rozkaz rozgałęziający do dekodera ID 126. W szczególności, kalkulator BAC 128 dostarcza do dekodera ID 126 adresu NLIP oraz aktualny wskaźnik stosu (Top Of Stack Pointer - TOS) dla każdej instrukcji rozgałęziającej.
W jednym z wykonań, kalkulator BAC 128 oblicza zarówno adres docelowy rozgałęzienia, jak i następny sekwencyjny adres wirtualny według następujących równań:
Adres Docelowy = IFCLIP + BrOffsetEncode'
Następny Sekwencyjny Adres Liniowy - IFCLIP + BrOffsetEncode +
BriDispExt, gdzie
IFCLIP jest to pełny adres liniowy pierwszego bajtu 16 bajtów rozkazowych przekazanych do kalkulatora BAC 128 przez blok IFU 122;
BrOffsetEncode jest wyrównaniem pierwszej pozycji rozgałęzienia wśród bajtów rozkazowych przekodowanych z 16 na 15 bitów (dla zakresu od 1 do 16), oraz przedłużonych zerami na górnych 27 bitach;
BriDispExt jest znakiem rozszerzonego przesunięcia rozgałęzienia.
Ogólnie biorąc, obliczenie adresu końcowego rozgałęzienia obejmuje dodanie przesunięcia rozgałęzienia, zawartego w rozkazie rozgałęziającym do adresu liniowego rozkazu występującego za rozkazem rozgałęzienia. Adres wirtualny rozgałęzienia otrzymuje się przez odjęcie adresu bazowego segmentu programowego od liniowego adresu rozgałęzienia. Dla każdego z rozkazów rozgałęziających, kalkulator 128 oblicza równie „błędny” czyli następny sekwencyjny wskaźnik rozkazowy (NLIP). NLIP stanowi adres wirtualny występujący za rozgałęzieniem. Zapisanie „błędnego” wskaźnika IP w przestrzeni adresów wirtualnych zamiast w przestrzeni adresów liniowych eliminuje dodatkową mikrooperację w strumieniu mikrooperacji CALL. W jednym z przykładów wykonania, wartość IFCLIP jest obliczana; w każdym takcie przez blok IFU 122 jako część układów logicznych ratujących rozkazy w IFBR 470, i następnie przekazywana do dekodera ID 126 wraz z nowymi bajtami rozkazowymi.
Kalkulator BAC 128 utrzymuje powrotny bufor stosowy wykorzystywany w charakterze mechanizmu predykcji rozgałęzień do wyznaczania adresu końcowego rozkazów powrotu. Powrotny bufor stosowy działa przy monitorowaniu wszystkich rozkazów rozgałęziających „wywołaj podprogram” oraz „powróć z podprogramu”. Kiedy kalkulator 128 wykryje rozkaz rozgałęziający „wywołaj podprogram” to ten kalkulator 128 odkłada adres następnego rozkazu w powrotnym buforze stosowym. Wskaźnik stosu oznakowuje szczyt powrotnego bufora stosowego przez odesłanie adresu bezpośrednio następującego za każdym z rozkazów „wywołaj podprogram” do powrotnego bufora stosowego, przy czym ten bufor powrotny zawiera stos adresów powrotnych. Kiedy później kalkulator BAC 128 wykryje rozkaz rozgałęziający „powróć z podprogramu”, to ten kalkulator
178 770
128 zdejmuje wierzchni adres powrotu z powrotnego bufora stosowego w celu sprawdzenia adresu powrotnego wyznaczonego predykcyjnie przez bufor BTB 124.
Bufor BTB 124 dokonuje predykcji statycznej. Predykcja statyczna w procesorze według wynalazku określona jest jako bazująca na kodach operacyjnych predykcja rozgałęzień nie umieszczonych w pamięci podręcznej 610 adresów końcowych rozgałęzień. Dla zestawu instrukcji mikroprocesora o architekturze INTEL^ kalkulator 128 potencjalnie decyduje o „wybraniu” czterech typów rozkazów rozgałęziających nie zidentyfikowanych przez bufor BTB 124. W przypadku wskaźnika rozkazowego (IP) w odniesieniu do rozgałęzienia bezwarunkowego, kalkulator 128 zawsze predykcyjnie wyznacza „wybranie”. Jeżeli bufor BTB 124 nie przewiduje wybrania dla pośredniego rozgałęzienia rejestrowego, to kalkulator 128 zapisuje swoje dane na danych dotyczących decyzji predykcyjnej bufora BTB 124 dla tego typu rozgałęzienia.
W przypadku rozkazu rozgałęziającego typu powróć (RETURN), kalkulator B AC 128 odbiera wszystkie rozkazy wywołań i zapisuje ich adresy powrotne w buforze stosowym powrotów. W związku z tym, w celu wyznaczenia predykcyjnego rozgałęzienia typu RETURN, kalkulator BAC 128 zdejmuje adresy powrotów ze stosu w buforze. W przypadku warunkowego względnego rozkazu rozgałęziającego, kalkulator BAC 128'przy predykcji decyzji rozgałęzienia wykorzystuje bit znaku przemieszczenia. W przypadku wskaźnika rozkazowego (IP) w odniesieniu do rozgałęzienia warunkowego, kalkulator 128 zawsze predykcyjnie wyznacza „wybranie”. Jeżeli bufor BTB 124 nie przewiduje wybrania dla pośredniego rozgałęzienia rejestrowego, to kalkulator 128 zapisuje swoje dane na danych dotyczących nieprawidłowej lub pominiętej predykcji bufora BTB 124.
Po zdekodowaniu rozkazu rozgałęzienia w dekoderze 126, jeżeli dekoder 126 określi, że wyznaczony predykcyjnie rozkaz rozgałęzienia rozkazem rozgałęzienia nie jest, to kalkulator 128 dokonuje wyrównania fazy procesora. Jeżeli dekoder ID 126 określi, że odebrany rozkaz jest rozkazem rozgałęzienia, to ID 126 przekazuje typ otrzymanego rozgałęzienia, oraz predykcyjny adres wyjściowy z bufora BTB 124. W jednym z wykonań według wynalazku, zestaw makroinstrukcji zawiera cztery typy rozkazów rozgałęziających: bezwarunkowy względny skok/wywołanie, bezwarunkowy pośredni rejestrowy skok/wywołanie, skok warunkowy oraz powrót z podprogramu. Każdy typ rozkazu rozgałęziającego przetwarzany jest inaczej przez kalkulator 128.
W tablicy 2 zestawiono działanie kalkulatora 128 dla każdego typu rozkazu rozgałęziającego, kiedy bufor BTB 124 wyznaczył predykcyjnie rozkaz rzogałęziający, a dekoer ID 126 sprawdził, że wyznaczony predykcyjnie rozkaz rozgałęziający jest rzeczywiście rozkazem rozgałęziającym.
Tablica 2
Typ rozgałęzienia Działanie kalkulatora adresów rozgałęzień
(zdekodowany przez ID) Ważność rozgałęzieniowej informacji wyjściowej BTB Stwierdzenie ważności adresu końcowego rozgałęzienia
Bezwarunkowy względny skok lub wywołanie Tak, wybrany Tak, adres końcowy wyliczony z IP i przesunięcia rozgałęzienia
Skok lub wywołanie Tak, wybrany Nie, należy wykorzystać
Pośrednie rejestrowe Predykcję adresu BTB
Skok warunkowy Nie, warunek nie znany Tak, adres końcowy wyliczony z IP i przesunięcia rozgałęzienia
Powrót z podprogramu Tak, wybrany Tak, z bufora stosowego BAC
Kiedy kalkulator 128 otrzyma rozkaz skoku lub wywołania bezwarunkowego względnego, który został wyznaczony predykcyjnie przez bufor BTB 124, to kalkulator 128 wyrównuje potok i ponownie rozpoczyna pobieranie rozkazów pod poprawnym adresem. Ponieważ kalkulator 128 w pełni sprawdza ważność zarówno predykcyjnego wyjścia rozgałęzienia, jak i predy
178 770 kcyjnego adresu końcowego rozgałęzienia dla bezwarunkowych rozkazów względnych skoków lub wywołań, to rozkazy rozgałęziające są wykonywane w pełni.
Kiedy kalkulator 128 otrzymuje rozkaz bezwarunkowego pośredniego rejestrowego skoku lub wywołania, który został wyznaczony predykcyjnie przez bufor BTB 124, to kalkulator 128 nadaje ważność predykcyjnej informacji wynikowej rozgałęzienia. Ponieważ rozgałęzienie jest bezwarunkowe, to kalkulator 128 nadaje ważność wynikowi rozgałęzienia przez sprawdzenie, że rozkaz rozgałęzienia był przewidywany predykcyjnie jako „wybrany”. Natomiast kalkulator 128 nie jest w stanie nadać ważności adresowi końcowemu rozgałęzienia, ponieważ wartość w rejestrze w tej fazie potoku procesora nie jest znana. Zatem kalkulator 128 nie dokonuje korekty adresu docelowego rozgałęzienia, wyznaczonego predykcyjnie przez bufor BTB 124.
Kiedy kalkulator 128 odbierze rozkaz skoku warunkowego, który został wyznaczony predykcyjnie przez bufor BTB 124, to BAC 128 sprawdza ważność tylko adresu końcowego rozgałęzienia, przez obliczenie tego adresu końcowego i porównanie adresu obliczonego z wyznaczonym predykcyjnie adresem końcowym rozgałęzienia. Kalkulator 128 nie sprawdza ważności wyniku rozgałęzienia, ponieważ wynik warunku rozgałęzienia nie jest znany w tej fazie w procesorze.
Kiedy kalkulator 128 odbierze rozkaz powrotu z podprogramu, przewidywany predykcyjnie przez bufor BTB 124, to nadaje ważność zarówno predykcyjnemu rezultatowi rozgałęzienia, jak i predykcyjnemu adresowi końcowemu rozgałęzienia. Ponieważ powrót z podprogramu jest rozkazem bezwarunkowym, to bufor BTB 124 nadaje ważność wynikowi rozgałęzienia przez potwierdzenie, że rozkaz rozgałęzienia był określony predykcyjnie jako wybrany. Kalkulator 128 nadaje ważność adresowi końcowemu rozgałęzienia przez dostęp do stosowego bufora powrotnego.
Na figurach 1 la-b przedstawiono działanie kalkulatora 128 w jednym z przykładów wykonania procesora potokowego według wynalazku. Kalkulator 128 działa w zasadzie w czterech taktach zegarowych. W fazie 14 potoku, kalkulator 128 podtrzymuje mechanizm predykcji BTB dla końcowego adresu powrotu przez przesłanie liniowego adresu powrotu przechowywanego w powrotnym buforze stosowym do bufora BTB 124 za pośrednictwem bloku IFU 122. Również podczas trwania fazy 14, BAC aktualizuje jeden ze wskaźników stosu, w przypadku wykrycia w buforze BTB 124 rozkazu wywołania lub powrotu. W fazie 15, kalkulator 128 dokonuje zatrzaśnięcia adresu aktualnego bufora rozkazowego i wyznaczonego predykcyjnie liniowego adresu końcowego z bufora BTB 124.
Obliczanie adresu końcowego rozgałęzienia i następnych sekwencyjnych adresów wirtualnych odbywają się podczas fazy 16 potoku. Podczas trwania fazy 16 następuje również odczyt stosowego bufora powrotu i po wykryciu przez kalkulator 128 wywołania lub powrotu, następuj e aktualizacja wskaźników stosu. Podczas trwania fazy 17, kalkulator 128 dokonuje nadania ważności rozgałęzienia, predykcji statycznej oraz zapisu do bufora stosowego powrotu. Kalkulator 128 jest uruchamiany również podczas trwania faz potoku przedstawionych na fig. 1 Ib. Po analizie rozgałęzienia w fazie 83 realizacja skoku wykazuje niezgodność predykcji makrorozgałęzienia. W fazie 84, odbywa się odtworzenie wskaźnika stosu.
Tablica pseudorejestrów (Register Alias Table - RAT): Procesor według wynalazku wykorzystuje przemianowywanie rejestrów. W jednym z przykładów wykonania, przemianowywanie rejestrów odbywa się w tablicy pseudorejestrów (RAT) 132. Ogólnie biorąc, tablica RAT 132 dokonuje ciągłego przemapowywania nazw rejestrów logicznych na nazwy rejestrów fizycznych. W przypadku architektury mikroprocesorowej INTEL(R), rejestry logiczne obejmują rejestry całkowitoliczbowe, zmiennoprzecinkowe, rejestry flag i rejestry tymczasowe mikrokodów, zgodne z architekturą INTEL(R). Nazwy rejestrów fizycznych odpowiadają adresom wejściowym bufora porządkowania wtórnego (ROB) 136. Bufor ROB 136 opisano bardziej szczegółowo poniżej. Dzięki wykorzystaniu przemianowywania rejestrów, na które pozwala tablica RAT 132, możliwy jest dostęp struktury procesora do większego zestawu rejestrów. Wykorzystanie większego zestawu rejestrów umożliwia wysyłanie niesekwencyjne i niesekwencyjne wykonywanie rozkazów procesora.
W jednym z wykonań, tablica RAT 132 zaimplementowana jest jako tablica przeglądowa. Tablica przeglądowa wytwarza w buforze ROB 136 numer rejestru fizycznego, w celu przemianowania
178 770 rejestru logicznego. W konsekwencji, dla każdej przemianowywanej mikrooperacji, tablica RAT 132 jest aktualizowana. Tak więc, każda mikrooperacja trafiająca do rejestru strukturalnego zostaje alokowana do nowego rejestru fizycznego, a adres tego nowego rejestru fizycznego pojawia się w tablicy RAT 132 dla wszystkich przyszłych mikrooperacji. W jednym z przykładów wykonania tablica RAT 132 dokonuje przemianowywania do czterech mikrooperacji na takt zegara.
Dla umożliwienia pracy równocześnie z wieloma mikrooperacjami, tablica RAT 132 wykorzystuje z natury sekwencyjną zależność między czterema mikrooperacjami emitowanymi równocześnie przez dekoder ID 126. Ta sekwencyjna zależność wykorzystywana jest do określenia, która z mikrooperacji zastępuje dany adres wejściowy tablicy RAT 132. Zwykle ostatnia mikrooperacja w grupie trafiającej do rejestru strukturalnego powoduje zamazanie odpowiedniego adresu wejściowego tablicy RAT 132. Tablica przeglądowa nie jest aktualizowana dopóki nie zostaną przemianowane wszystkie cztery mikrooperacje, lecz pierwsza mikrooperacja mogłaby trafiać do rejestru generującego drugąmikrooperację. W celu rozwiązania tego problemu, tablica RAT 132 zaopatrzona jest w ścieżki bajtowe i komparacyjne układy logiczne, które wykrywają taką sytuację, i wpisująnormalne dane wejściowe tablicy RAT 132. Jak to przedstawiono na fig. 1, tablica RAT 132 sprzężona jest z dekoderem rozkazowym (ID) 126, alokatorem (ALLOC) 134, buforem porządkowania wtórnego (ROB) 136 oraz stanowiskiem rezerwowania (RS) 138.
W jednym z przykładów wykonania, tablica RAT 132 dokonuje zarówno przemianowywania rejestru całkowitoliczbowego, jak i rejestru zmiennoprzecinkowego. Ogólnie biorąc, tablica RAT 132 zawiera logikę do śledzenia wycofywania mikrooperacji, włącznie z zamazywaniem wycofań i odczytów. Wycofywanie powoduje zamazywanie danych tablicy obejść dla nowych adresów, które stanowią adresy rzeczywistego zestawu rejestrów (RRF) 137. Odczyt powoduje zamazanie poprzednich fizycznych danych źródłowych informacji obejściowej dlaprzemianowywanych fizycznych źródeł informacji. Tablica RAT 132 obejmuje również logikę priorytetu zapisu do aktualizacji tablicy przeglądowej nowymi fizycznymi adresami przeznaczenia przydzielanymi przez alokator 134. Tablica RAT 132 zawiera logikę następnego wskaźnika, służącego do zapisywania zależności między danymi, i te zależności między danymi sąwykorzystywane przy szeregowaniu, odbywającym się w stanowisku RS 138.
Figura 12 przedstawia schemat blokowy wysokiego poziomu tablicy RAT 132 i funkcjonalnych bloków, sprzężonych z tablicą RAT 132 i skonfigurowanych zgodnie z jednym z przykładów wykonania według wynalazku. Tablica przeglądowa implementowana jest za pomocą macierzy RAT 1220. Dla każdego adresu wejściowego, macierz RAT 1220 przechowuje wskaźnik ROB, identyfikujący odpowiedni rejestr fizyczny, bit ważności rzeczywistego zestawu rejestrów (RRFV), oraz informację stemjącą. Jak to przedstawiono na fig. 12, macierz RAT 1220 otrzymuje logiczne dane źródłowe (LSrcs) z detektora ID 126. LSrcs wskazuje logiczny rejestr strukturalny dla argumentów źródłowych w odpowiednich mikrooperacjach. W odpowiedzi na to macierz RAT 1220 wyprowadza odpowiednie fizyczne dane źródłowe (PSrcs). Dane PSrcs macierzy stanowią dane wejściowe logiki zapisującej wycofywania. Logika zapisująca 1230 wycofywania otrzymuje listę wycofywanych fizycznych adresów przeznaczenia z bufora ROB 136. Logika przepisująca 1230 wycofywania bocznikuje dane PSrcs macierzy dla wycofywanych fizycznych adresów przeznaczenia, w celu generacji chwilowych fizycznych danych źródłowych (PSrcs).
Tymczasowe fizyczne dane źródłowe stanowią informację wejściową dla przepisującej logiki odczytowej 1250. Danymi wejściowymi do odczytowej logiki przepisującej 1250 są również fizyczne dane przeznaczenia z alokatora ALLOC 134 oraz logiczne dane źródłowe (LSrcs) i logiczne dane przeznaczenia (LDsts) z dekodera ID 126. Odczytowa logika przepisująca 1250, w celu przemianowania źródłowych danych fizycznych dokonuje zbocznikowania poprzednich tymczasowych źródłowych danych fizycznych. Priorytetowa logika zapisowa 1210 odbiera fizyczne dane przeznaczenia z alokatora ALLOC 134 jako dane wejściowe, i aktualizuje macierz RAT 1220 nowymi fizycznymi adresami przeznaczenia. Logika 1240 następnego wskaźnika otrzymuje fizyczne adresy przeznaczenia i przemianowane fizyczne adresy źródłowe, i z kolei zapisuje zależności między danymi, tak aby umożliwić ich szeregowanie w stanowisku rezerwowania. Dane wyjściowe odczytowej logiki przepisującej 1250 stanowią przemianowane fizycz
178 770 ne dane źródłowe, które przekazywane są do bufora ROB 136. W wyniku tego, tablica RAT 132 przetwarza logiczne mikrooperacje wydawane z dekodera ID 126 na mikrooperacje fizyczne, w celu ich wykonania w części niesekwencyjnej procesora.
W jednym z wykonań, dla każdego adresu wejściowego, macierz RAT 1220 zawiera również bitowy wskaźnik stanu, określający, czy dane przechowywane pod określonym adresem wejściowym ROB są danymi ważnymi. Innymi słowy, każdy adres wejściowy bufora ROB 136 reprezentujący przypisanie pewnego rejestru lokalnego w procesorze, zostaje przypisany bitowi gotowości (READY) w macierzy RAT 1220, który sygnalizuje sytuacje, w których rejestr lokalny w buforze ROB 136 zawiera daną ważną. Zbiór bitów READY nazywany jest w niniejszym dokumencie aktywnym zbiorem rejestrowym. Bit READY może być ustawiany albo bezpośrednio (na przykład sygnałami przesyłanymi w ramach zapisu zwrotnego) lub pośrednio (na przykład przez inny blok funkcjonalny monitorujący aktywność magistrali zapisu zwrotnego) w odpowiedzi na dane z wyników przekazywanych przez magistralę zapisu zwrotnego. Należy zwrócić uwagę, że adresy PDsts mogąbyć wykorzystywane do korelacji wyników z lokalną alokacją rejestrów.
Figura 13 przedstawia działanie tablicy RAT 132 w jednym z przykładów wykonania procesora potokowego według wynalazku. Tablica RAT 132 działa w fazie 6, przedstawionej na fig. 13. Mówiąc dokładnie w odniesieniu do fazy 6, dolna część fig. 13 przedstawia fazę wewnętrzną podczas wykonywania podstawowych funkcji tablicy RAT 132. W tej pierwszej połowie wewnętrznej fazy potokowej 21, dokonuje się odczytów z macierzy RAT 1220. Podczas trwania pierwszej połowy wewnętrznej fazy 21 potoku, wykonywana jest również funkcja przepisująca wycofywania. W drugiej połowie wewnętrznej fazy potokowej 21, kolejno dokonuje się przepisania Pdst i w razie potrzeby generacji pominięć. Również podczas trwania ostatniej połówki fazy 21, następuje zapisanie Pdst do macierzy RAT 1220.
Alokator (ALLOC): Spekulatywne przeprowadzenie niesekwencyjnego wysyłania i wykonywanie operacji procesora według wynalazku wymaga dodatkowych zasobów, poza rejestrami określonymi strukturalnie. Alokator (ALLOC) 134 dokonuje alokacji, czyli przydziału, dodatkowych zasobów do mikrooperacji nadchodzących z dekodera ID 126. Ogólnie biorąc, alokator ALLOC 134 przypisuje zasoby do bufora ROB 136, stanowiska RS 138 oraz bufora porządkowania pamięci (MOB) 150. Każda mikrooperacja wymaga adresu wejściowego w RS 138 i ROB 136. Poza tym pamięciowe mikrooperacje wymagają przestrzeni w buforze MOB 150, operacje zapisu wymagają przestrzeni w buforze zapisowym, a załadowanie rejestrów segmentowych wymaga fizycznych rejestrów segmentowych. Alokator ALLOC 134 dokonuje alokacji zasobów do bufora ROB 136 oraz MOB 150 sekwencyjnie (to znaczy w pierwotnym porządku programowym). ALLOC 134 alokuje zasoby do stanowiska RS 138 z wykorzystaniem niesekwencyjnej metody alokacji. Alokator ALLOC 134 ma również możliwość pomijania, kiedy dla nadchodzących mikrooperacj i nie odbywa się przydzielanie żadnych dodatkowych zasobów. Pominięcia alokatora generowane są na podstawie ustalenia, że istniejące zasoby są nieodpowiednie do celów stosowanej strategii alokacji zasobów lub na podstawie decyzji o wyrównaniu potoku. Jak to przedstawiono na fig. 3, alokator ALLOC 134 operuje w fazie 6 potoku procesora.
Bufor ROB 136 skonfigurowany jest jako bufor pierścieniowy, tak, że alokator ALLOC 134 przydziela adresy wejściowe od zera do adresu najwyższego, następnie zamyka się w pierścień przechodząc przez zero. Alokator ALLOC 134 odbiera mikrooperacje z dekodera ID 126, i przydziela fizyczne adresy przeznaczenia (Pdsts) dla wejściowych adresów ROB 136. W jednym z przykładów wykonania według wynalazku alokator ALLOC 134 wykorzystuje zasadę alokacji „wszystko albo nic”, w odniesieniu do zasobów alokowanych do bufora ROB 136.
W przypadku zasady „wszystko albo nic” alokator ALLOC 134 dokonuje alokacji zasobów dla wszystkich mikrooperacji w tej fazie alokowania, jeżeli dostępna jest dostateczna ilość zasobów. Natomiast, jeżeli ilość zasobów jest niewystarczająca, to alokator ALLOC 134 w fazie alokacji nie dokonuje alokowania mikrooperacji. Przy niedostatecznej dostępności zasobów, alokator ALLOC 134 pomija operacje aż do momentu, w którym zasoby staną się dostępne. Sekwencyjne
178 770 zarządzanie buforem ROB 136 jest realizowane w połączeniu z 'wycofywaniem, czyli kolejnądealokacją, przy wykorzystaniu wskaźnika wycofywania. Adresy przeznaczenia Pdst bufora ROB 136 służą również w charakterze dekodera ID dla konkretnej mikrooperacji. Adresy przeznaczenia Pdsts przechowywane są w macierzy RAT 1220 i są kolejno wykorzystywane w charakterze etykiet dla dopasowania w stanowisku RS 13 8. Poza tym, wartość Pdst służy w charakterze indeksu liniowego dla adresu wejściowego ROB przy wykonywaniu zapisu zwrotnego.
Alokator ALLOC 134 wykorzystuje niesekwencyjny tryb alokacji zasobów w stanowisku RS 138. Czas życia adresu wejściowego w stanowisku RS 138 rozpoczyna się, kiedy mikrooperacja zostaje zdekodowana, a kończy się po jej wykonaniu. Tryb zarządzania niesekwencyjnego zmniejsza liczbę niezbędnych adresów wejściowych. Jak to opisano poniżej, stanowisko RS 138 jest w stanie wysyłać w sposób niesekwencyjny mikrooperacje jako dane źródłowe dla odpowiednich mikrooperacji, które mają gotowe dane. W konsekwencji, swobodne adresy wejściowe w stanowisku RS 138 są zwykle przedzielone adresami wejściowymi wykorzystywanymi, czyli alokowanymi.
W celu alokacji komórek w stanowisku RS 13 8, alokator 134 wykorzystuje tryb mapy bitowej. W trybie mapy bitowej każda komórka stanowiska RS 138 wskazuje na bit zawarty w puli alokacyjnej stanowiska RS 138 znajdującej się w alokatorze 134. Przy wykorzystaniu trybu mapy bitowej, komórki przy alokacji mogąbyć usuwane i na powrót umieszczane w puli aplikacyjnej stanowiska RS 138 w dowolnym porządku. Jednakowoż tego rodzaju tryb mapy bitowej wymaga generacji wolnej listy, w celu wyspecyfikowania niealokowanych komórek w stanowisku RS 138. W celu generacji wolnej listy, alokator 134 rozpoczyna przeglądanie od lokacji zero, aż do znalezienia pierwszych trzech wolnych komórek. Jeżeli stanowisko RS 138 jest zapełnione, to alokator 134 blokuje alokację nowych komórek.
Poza alokacj ązasobów do stanowiska rezerwacji (RS) 13 8 i bufora porządkowania wtórnego (ROB) 136 alokator 134 dekoduje mikrooperacje w celu określenia, czy potrzebne są komórki bufora zapamiętującego MOB, fizyczne rejestry segmentowe. Bufor MOB 150 traktowany jest jak bufor pierścieniowy. Jednakowoż nie każda mikrooperacja wymaga komórki bufora odczytowego czy zapisowego. Alokator 134 wykorzystuje strategię „wszystko albo nic”, stosowaną w MOB 150. W wyniku tego zaprzestanie wykonywania mikrooperacji następuje tylko wtedy, kiedy nie ma możliwości alokacji ważnych mikrooperacji MOB do bufora odczytowego lub bufora zapisowego. Strategia alokacji MOB wymaga większej liczby układów logicznych niż strategia ROB. Alokację komórek MOB 150 opisano poniżej w związku z opisem klastera 120 pamięci.
Stanowisko rezerwowania RS: Ogólnie biorąc, stanowisko rezerwowania (RS) 138 jest buforem znajdującym się przed blokami wykonawczymi, który przetrzymuje zarówno całkowitoliczbowe, jak i zmiennoprzecinkowe mikrooperacje oczekujące na zasoby niezbędne do ich wykonania. Niezbędne zasoby obejmują źródłowe argumenty danych, oraz blok wykonawczy, odpowiedni do wykonania mikrooperacji. Na przykład ważność argumentów z danymi źródłowymi może zależeć od uprzednich mikrooperacji, które nie zostały jeszcze wykonane. Stanowisko RS 138 uruchamia niesekwencyjny przepływ danych w procesorze, tak, że wszystkie poprzednie fazy potokowania podlegają zasadzie Von Neumanna. Wszystkie fazy potokowe za buforem ROB 136 i stanowiskiem RS 138 odłączone są od poprzednich faz potokowych.
Czas życia mikrooperacji zapamiętanej w stanowisku RS 138 rozpoczyna się alokacją, a kończy wysyłaniem. Jeżeli pewna komórka stanowiska RS 138 po alokacji jest bezpośrednio zaszeregowana, to fazy 22i31 zachodzą na siebie, jak to widać na fig. 15. Jeżeli dana pewnej komórki oczekuje na niezbędne zasoby, to pewna liczba taktów może zostać przepuszczona, zanim dana zostanie określona jako gotowa, i następnie zaszeregowana. W tym przypadku faza 22 nie zachodzi na fazę 31 i obserwuje niesprzężone działania stanowiska RS 138.
Na figurze 14 przedstawiono schemat blokowy stanowiska rezerwowania (RS) 138, skonfigurowanego zgodnie z jednym z przykładów według niniejszego wynalazku. Stanowisko RS 138 zawiera bufor 1410 stanowiska RS, który przechowuje bit ważności danych, mikrooperację, informację sterującą, dane źródłowe łącznie z bitem ważności danych, odpowiednie fizyczne dane o źródle oraz fizyczne dane o miejscu przeznaczenia. Stanowisko RS 138 również zawiera
178 770 układy pamięci adresowanej zawartością (content addressable memory - CAM) 1420, środki generacji bitu gotowości, blok szeregujący 1440. W jednym z przykładów wykonania niniejszego wynalazku bufor 1410 stanowiska RS zapamiętuje 10 pozycji. Część sterująca danych wejściowych, mikrooperacja, ważność danych itp. są wprowadzane z alokatora ALLOC 134 i tablicy RAT 132. Część z danymi bufora BTB 124 bloku 1410 jest wprowadzana z bufora ROB 136 i bloków wykonawczych w klasterze wykonawczym 118.
Logika CAM 1420 i logika obejściowa 1450 sterująprzesyłaniem obejściowym danych zapisu zwrotnego z bloków wykonawczych do stanowiska RS 138. Logika pamięci CAM 1420 wykorzystywana jest do komparacji fizycznych danych przeznaczenia zapisu zwrotnego (Pdsts) w zapamiętanych fizycznych danych źródłowych (PSrcs). Kiedy wystąpi zgodność, pojawiają się sygnały zezwalające na zapis, służące do odgałęzienia niezbędnych danych zapisu zwrotnego do odpowiedniej komórki bufora BTB 124 bloku 1410. W ten sposób dane na magistrali zapisu powrotnego mogą być podawane do wielu komórek danych źródłowych w stanowisku RS 138 równocześnie, bez konieczności wpisywania bufora ROB 136.
W sprawie dalszych informacji patrz zgłoszenie patentowe USAnr 08/174 837 złożone 29 grudnia 1993 pod tytułem „Sposób i urządzenie do rozsyłowego asocjacyjnego zapisu danych”, należące do właściciela niniejszego wynalazku, i włączone do jego opisu przez przywołanie. Stanowisko RS 138 odpowiada za zatrzaskiwanie i nadawanie danych przeznaczenia Pdst zapisu zwrotnego do bufora ROB 136. Generator 1430 bitu gotowości odbiera informacje dopasowania CAM, generowanąw układach logicznych 1420 CAM. Poza tym generator 1430 bitu gotowości odbiera informację arbitrażową bloku wykonawczego identyfikującą dostępność bloków wykonawczych w klasterze wykonawczym 118. W odpowiedzi na to blok 1430 generacji bitu gotowości wykorzystując informację dopasowującą pamięci CAM i informację arbitrażową generuje informację o gotowości komórki określającągotowość danych i dostępność bloku wykonawczego dla każdej komórki bufora BTB 124 bloku 1410.
Informacja o gotowości komórki wraz ze wskaźnikiem priorytetu, jest wprowadzana do bloku 1440 szeregowania mikrooperacji. W jednym z przykładów wykonania blok 40 szeregowania mikrooperacji zawiera po jednym bloku szeregującym dla każdego bloku wykonawczego w klasterze wykonawczym 118. Blok 1440 szeregowania mikrooperacji wykorzystuje informacje o gotowości danych wejściowych i wskaźnik priorytetu do uszeregowania informacji przy wysyłaniu do klastera wykonawczego 118. Wskaźnik priorytetu wykorzystywany jest do określenia, który z bloków 1440 szeregowania mikrooperacji powinien rozpocząć przeglądanie bufora BTB 1 24 bloku 1410 w poszukiwaniu wybranych komórek. Wskaźnik priorytetu generowany jest algorytmem pseudo-FIFO (first-in-first-out). Wykorzystanie priorytetu zmniejsza efekty blokowania danych wejściowych, zwiększając tym samym wydajność stanowiska RS 138.
Alokator ALLOC 134 realizuje algorytm zrównoważonego obciążenia, w którym znana jest liczba mikrooperacji oczekujących w buforze 1410 stanowiska RS na wykonanie, przy danym interfejsie bloku wykonawczego. Algorytm, znany jako statyczne wiązanie zrównoważone pod względem obciążenia, wiąże mikrooperacje z pewnym interfejsem bloku wykonawczego. W celu wysyłania poszczególne komórki bufora BTB 124 bloku 1410 są odczytywane i przekazywane do odpowiedniego bloku wykonawczego. Stanowisko RS 130 wysyła całą niezbędną informację mikrooperacyjną do zaszeregowanego bloku wykonawczego. Niekiedy dane zapisu zwrotnego są nieważne. Dla przykładu, kiedy klaster 120 pamięci wykryje błąd wybrania pamięci podręcznej, to następuje unieważnienie wysyłania mikrooperacji uzależnionych od danych zwrotnych i nieco później następuje uszeregowanie ponowne. W wyniku tego skasowanie polega na usunięciu mikrooperacji, które zostały uszeregowane, wysłane lub wykonane, ze względu na niepoprawność odczytu pamięci podręcznej lub możliwy przyszły konflikt zasobów. Wszystkie skasowane mikrooperacje są w późniejszym czasie szeregowane ponownie, o ile nie zostanie skasowana część niesekwencyjna procesora. Po wysłaniu mikrooperacji do któregoś z bloków wykonawczych i nie wystąpieniu kasowania, komórka bufora BTB 124 bloku 1440 może być delokowana, do wykorzystania w nowej mikrooperacji.
178 770
Figura 15 przedstawia fazy potoku dotyczące stanowiska 138 rezerwowania, skonfigurowane zgodnie z jednym z przykładów wykonania według niniejszego wynalazku. Jak to pokazano na fig. 15 alokacja RS następuje podczas faz 21L i 22L. Konkretnie, w fazie 21L odbywa się zapis informacji sterującej RS do bufora BTB 124 bloku 1410, a w fazie 22L wstępny zapis danych. Dane dochodzą do bufora BTB 124 bloku 1410 jako zapisy zwrotne z bloku wykonawczego, w czasie trwania fazy 83L. W fazie 31H, stanowisko RS 138 określa, które z danych wejściowych są gotowe do wysyłania w fazie 32H. Po określeniu, które z danych bufora BTB 124 bloku 1410 są goto we, stanowisko RS 138 szereguje dane RS do wysyłania w fazie 31L. Podczas fazy 21 odbywa się przywiązanie mikrooperacji do interfejsu bloku wykonawczego. Wysyłanie mikrooperacji z bufora BTB 124 bloku 1410 do bloku wykonawczego odbywa się w fazie 22L, kiedy dane źródłowe wpisywane sądo bufora BTB 124 bloku 1410, i te dane źródłowe dla odpowiedniej mikrooperacji mogą w tym momencie nie być ważne. Odpowiednia mikrooperacja musi pozostać w buforze 1410 stanowiska RS, aż do osiągnięcia ważności odpowiednich danych źródłowych. Zapis zwrotny danych odbywa się w fazie 83L.
Bufor porządkowania wtórnego (ROB): Bufor porządkowania wtórnego (ROB) 136 jest podstawową częścią składową dla trzech przejawów działalności procesora według niniejszego wynalazku: wykonania spekulatywnego, przemianowywania rejestrów oraz niesekwencyjnego wysyłania i wykonania. Bufor ROB 136 zapewnia dodatkowe środki pamięciowe dla rejestrów fizycznych, umożliwiające przemianowywanie rejestrów. Dodatkowe rejestry fizyczne zapewniają większy stopień współbieżności przy wykonywaniu rozkazów. Poza tym bufor ROB 136 zapewnia zapamiętywanie mikrooperacji wykonywanych spekulatywnie w celu zapełnienia bufora przed dotarciem wyniku do strukturalnego poziomu stanu procesora. Poza tym bufor ROB 136 zapewnia możliwość przeszeregowania, od operacji niesekwencyjnych do stanu maszyny w pierwotnym porządku programowym. Bufor ROB 136 zapewnia również dostateczną pojemność rejestrów fizycznych potrzebną do przemianowania rejestrów. Bufor ROB 136 wykrywa również wyjątki i błędne predykcje, inicjalizując następnie w tych sytuacjach odpowiednią rekonstrukcję, w celu zachowania właściwego stanu maszynowego.
Bufor ROB 136 realizuje spekulatywne wykonanie przez buforowanie wyników z bloków wykonawczych przed pojawieniem się widzialnego strukturalnie stanu danych zapisu zwrotnego w RRF 137. W wyniku tego rozkazy sąpobierane i wykonywane z maksymalną szybkością przy założeniu, że rozgałęzienia zostały wyznaczone predykcyjnie prawidłowo i nie pojawiły się żadne wyjątki. Jeżeli rozgałęzienie jest wyznaczone nieprawidłowo lub przy wykonaniu mikrooperacji pojawiają się wyjątki, to procesor może dokonać rekonstrukcji po prostu przez odrzucenie wyniku spekulatywnego przechowywanego w buforze ROB 136. W tym przypadku procesor rozpoczyna ponowne przetwarzanie od rozkazu poprawnego, przez sprawdzenie odpowiedniego stanu strukturalnego w RRF 1137. Proces przyporządkowywania stanu spekulatywnego stanowi strukturalnemu zwany jest wycofywaniem. Podstawową funkcją bufora ROB 136 jest wycofywanie, czyli kończenie mikrooperacji.
Pamięć buforowa dla zapisywanych zwrotnie wyników z bloku wykonawczego wykorzystywana jest do przemianowywania rejestrów. Jak to omówiono powyżej, przy przemianowywaniu rejestrów następuje alokacja nowego rejestru fizycznego do rejestru przeznaczenia każdej z mikrooperacji, która dokonuje wpisu do rejestru strukturalnego. Dane wynikowe bloku wykonawczego są kolejno wpisywane do przemianowanego rejestru fizycznego w buforze ROB 136. Logika wycofująca, mieszcząca się wewnątrz bufora ROB, aktualizuje rejestry strukturalne w RRF 137 na podstawie zawartości rejestrów strukturalnych, w każdym przypadku przemianowania. Mikrooperacje, które żądają danych źródłowych z rejestru strukturalnego, otrzymują albo zawartość rzeczywistego rejestru strukturalnego, albo zawartość przemianowanego rejestru fizycznego. Ponieważ procesor według niniejszego wynalazku jest procesorem superskalamym, to pewne mikrooperacje w konkretnym takcie wykonawczym zegara mogą wykorzystywać ten sam rejestr strukturalny, lecz w rzeczywistości mieć dostęp do różnych rejestrów fizycznych.
Bufor ROB 136 podtrzymuje niesekwencyjne wykonanie przez zapewnienie przez bloki wykonawcze wykonania mikrooperacji i zwrotnego zapisu danych wynikowych, niezależnie od rów
178 770 nocześnie wykonywanych pozostałych mikrooperacji. Zatem, w miarę uruchamiania różnych bloków wykonawczych, mikrooperacje mogą kończyć się w sposób niesekwencyjny. Logika sterująca wycofywania w buforze ROB 136 kolejno przeszeregowuje zakończone mikrooperacje ustawiając je w porządku pierwotnym, podanym przez dekoder ID 126 przy aktualizacji stanu strukturalnego w RRF 137.
Jak to pokazano na fig. 1, bufor ROB 136 jest ściśle powiązany z RRF 137, alokatorem ALLOC 134, stanowiskiem RS 138 oraz tablicą RAT 132. Jak wspomniano powyżej, alokator ALLOC 134 zarządza przydziałem fizycznych rejestrów bufora ROB dla umożliwienia realizacji operacji spekulatywnych i przemianowywania rejestrów. Przemianowywanie rejestrów strukturalnych, w buforze ROB 136jest zarządzane przez tablicę RAT 132. Interfejs bufora ROB 136 wraz ze stanowiskiem RS 138 i klasterem wykonawczym 118 są w rzeczywistości sprzężone luźno.
Na figurze 16 przedstawiono schemat blokowy bufora ROB 136 skonfigurowanego zgodnie z jednym z przykładów wykonania według niniejszego wynalazku. Jak to pokazano na fig. 16, poza RRF 137 bufor ROB 136 zawiera cztery wewnętrzne bloki funkcjonalne: bufor 1610 wyników, logikę sterującą 1620 wycofywania, kalkulator wskaźnika rozkazowego IP, detektor 1640 zdarzeń. RRF 137 zawiera rejestry logiczne poziomu stanu strukturalnego procesora. W przypadku mikroprocesora o strukturze INTEL(R), RRF zawiera 8 rejestrów.
W jednym z wykonań, bufor 1610 wyników zawiera 40 fizycznych komórek rej estru. Każda komórka rejestru fizycznego zawiera pole danych wynikowych oraz pola informacji sterującej, włącznie z polem bitu ważności rejestru fizycznego oraz polem logicznym przeznaczenia LDst. Pole bitu ważności rejestru fizycznego wskazuje, czy dane wynikowe odpowiedniego rejestru fizycznego są ważne, a pole LDst specyfikuje odpowiedni rejestr logiczny.
Blok 1630 obliczania wskaźnika IP generuje strukturalny wskaźnik rozkazowy, jak również kilka innych wskaźników makro- i mikroinstrukcji. Wskaźnik makroinstrukcji generowany jest ńa podstawie długości wszystkich wycofywanych makroinstrukcji, jak również adresów docelowych rozgałęzienia.
Ogólnie biorąc, logika sterująca 1620 wycofywania wyznacza sygnały ważności wycofywania, wskazujące, która pozycja rejestru fizycznego z ważnymi danymi zwrotnymi jest gotowa do wycofania. Logika sterująca 1620 wycofywania oddziałuje zwrotnie na pierwotny porządek programowy mikrooperacji fizycznych przez skoj arzenie wyników spekulatywnych przechowywanych w buforze 1610 wyników ze stanem strukturalnym procesora, w tym samym porządku, w którym zostały odebrane pierwotne mikrooperacje logiczne. Logika sterująca 1620 wycofywania generuje adresy dla odczytów wycofywania, dokonywanych w każdym takcie zegara, przez odczyt spekulatywnych danych wynikowych z rejestrów fizycznych wycofywania bufora 1610 wyników, i przekazywanie spekulatywnych danych wynikowych do odpowiednich skojarzonych rejestrów stanu w RRF 137. W przypadku jednego z przykładów wykonania, logika sterująca 1620 wycofywania dokonuje wycofywania równocześnie do czterech rejestrów fizycznych.
Logika sterująca 1620 wycofywania utrzymuje wskaźnik wycofywania rejestrów fizycznych w buforze 1610 wyników. Wskaźnik wycofywania wskazuj e następne cztery kolej ne rej estry fizyczne do wycofania. Wskaźnik wycofywania podąża za wskaźnikiem alokacji za pośrednictwem rejestrów fizycznych w buforze 1610 wyników w miarę, jak logika sterująca 1620 wycofywania dokonuje wycofywania wyników spekulatywnych z rejestrów fizycznych do poziomu stanu strukturalnego. Logika sterująca 1620 wycofywania dokonuje wycofywania rejestrów fizycznych z zachowaniem porządku, ponieważ alokator ALLOC 134 przydzielił rejestry fizyczne w pierwotnym porządku mikrooperacji logicznych.
W celu wycofania rej estru fizycznego, logika sterująca 1620 wycofywania najpierw testuje odpowiedni bit ważności rejestru fizycznego. Jeżeli bit ważności wskazuje, że zapis jest ważny, tak że spekulatywne dane wynikowe z fizycznej mikrooperacji znajdują się w rejestrze fizycznym, to logika sterująca 1620 wycofywania przekazuje odpowiednie spekulatywne dane do skojarzonego rejestru stanu w RRF wyspecyfikowanego w logicznym polu przeznaczenia (LDst) zawartego w zapisie (komórce) rejestru fizycznego.
178 770
Detektor 1640 zdarzeń stwierdza, czy blok wykonawczy przetwarzający odpowiednią mikrooperację melduje jakieś zdarzenia. Jeżeli tak, to dane komórki ROB 136, następnej, za komórką meldującą te zdarzenia są odrzucane. Poza tym sekwenser MS 130 zostaje powiadomiony o skoku do odpowiedniego operatora mikrokodu i większość zawartości komórki wykazującej zdarzenia zostaje zachowana do wykorzystania przy obróbce mikrokodu. Sygnalizacja zdarzenia bazuje na zdarzeniach meldowanych do bufora ROB 136 przez bloki wykonawcze klastera wykonawczego 118. Blok 1640 detekcji zdarzeń zachowuje wszelkie stany z odpowiedniej komórki bufora ROB, niezbędne dla mikrokodowego operatora zdarzeń.
Detektor 1640 zdarzeń generuje również kilka sygnałów zdarzeń, innych niż zdarzenia meldowane z klastera wykonawczego 118. Po wykonaniu rozkazu rozgałęzienia, blok wykonywania skoków, znajdujący się w bloku IEU 124, podczas zapisu zwrotnego zwraca do rejestrów fizycznych adres wirtualny przeznaczenia. Jeżeli rozgałęzienie zostało wyznaczone predykcyjnie nietrafnie, to blok wykonywania skoków, poza zapewnieniem sygnałów kasowania (JE Clear) ustawia jeden z bitów informacji sterującej. Sygnał JE Clear rozpoczyna część sekwencyjną działania procesora przy pobieraniu i dekodowaniu z przemieszczaniem się wzdłuż poprawnej ścieżki, blokuje wydawanie rozkazów do niesekwencyjnej części procesora. Jednakowoż poprawna ścieżka, określona przez blok wykonywania skoków może nie być w rzeczywistości ścieżką poprawną jeżeli poprzednia mikrooperacja, która nie została wykonana, mogłaby spowodować wystąpienie wyjątków. Kiedy następuje wycofanie niepoprawnie wyznaczonego rozgałęzienia, bufor ROB 136 podaje sygnał RO Clear. Ten sygnał RO Clear powoduje reset stanu części niesekwencyjnej procesora. Poza tym sygnał RO Clear odblokowuje część sekwencyjnąprocesora, i stanowisko RS 138 otrzymuje z klastera 114 wydawania mikrooperację poprawną. Również, kiedy bufor ROB 136 dokonuje wycofywania niepoprawnej mikrooperacji, detektor 1640 zdarzeń zapewnia sygnał RP Nuke, tak że następuje kasowanie klasterów, sekwencyjnego 114 i niesekwencyjnego 116.
Bufor ROB 136 jest aktywny zarówno w części sekwencyjnej, jak i niesekwencyjnej procesora. Na fig. 17a przedstawiono fazy potokowe procesora, z podkreśleniem zaangażowani a bufora ROB 136. W fazie 21 następuje alokacja komórek bufora ROB 136, które przechowują wynik mikrooperacji spekulatywnych. Poza tym, do stanowiska RS 138 zostająrównież wpisane adresy komórek ROB (Pdsts) dla mikrooperacji. W fazie 22, bezpośrednio następującej po alokacj i komórki w buforze ROB 136, następuje odczytanie z bufora ROB 136 źródłowych danych odpowiadających mikrooperacjom. Adresy źródłowe zapewnia tablica RAT 132 na podstawie aktualizacji tablicy pseudorejestrów, odbywającej się w fazie 21. Tablica RAT 132 wpisuje adresy komórek bufora ROB 136, zapisywane przezkażdąz mikrooperacji, do stanowiska RS 138.
Na figurze 17b przedstawiono działanie bufora ROB 136 w fazach wykonawczych potoku. W fazie 83H, blok wykonawczy realizuje odpowiednią funkcję, a w fazie 83L odpowiedni blok wykonawczy dokonuje zwrotnego zapisu danych do bufora ROB 136. Faza zapisu zwrotnego oddzielona jest od faz przemianowywania i odczytu rejestrów, ponieważ mikrooperacje wydawane sąze stanowiska RS 138 w sposób niesekwencyjny. Klaster wykonawczy 118 i stanowisko RS 138 wyznaczają pierwszeństwo w wykorzystaniu magistral zapisu zwrotnego.
Na figurze 17c przedstawiono działanie bufora ROB 136 w fazach wycofywania. W fazie wycofywania 92H logika sterująca 1620 wycofywania odczytuje kandydatów do wycofania. W fazie 92L następuje wyznaczenie operacji gotowych do wycofania. W fazie 93H detektor 1640 zdarzeń dokonuje detekcji wszelkich zdarzeń, a blok 1630 kalkulacji wskaźnika IP oblicza bieżący wskaźnik rozkazowy. Fazy wycofania są oddzielone od faz zapisu zwrotnego, niesekwencyjnych względem programu pierwotnego. W fazie 93L następuje aktualizacja stanu przez przekazanie wycofanych komórek ROB do RRF 137.
Figura 18 przedstawia przykład struktury przepływu danych przy przetwarzaniu mikrooperacji logicznej zgodnie z jednym z przykładów wykonania według niniejszego wynalazku. Jakkolwiek w poniższym przykładzie wykorzystano konkretną mikrooperację fizyczną i logiczną to można wykorzystać mikrooperację dowolnego formatu, bez wychodzenia poza ideę i zakres niniejszego wynalazku. Mikrooperacja logiczna (add ΕΑΧ, ΕΒΧ, ΕΑΧ) oznacza sumo
178 770 wanie zawartości rejestrów logicznych ΕΑΧ i ΕΒΧ oraz zapisanie wyniku w rejestrze logicznym ΕΑΧ. W celu przetworzenia przykładowej mikrooperacji, alokator ALLOC 134 odbiera tę mikrooperację logiczną(add ΕΑΧ, ΕΒΧ, ΕΑΧ) i generuje fizyczny adres przeznaczenia (Pdst) równy 36. W odpowiedzi na to alokator ALLOC 134 przekazuje Pdst 36 do tablicy RAT 132. Tablica RAT 132 odbiera Pdst 36 i tłumaczy mikrooperację logiczną(add ΕΑΧ, ΕΒΧ, ΕΑΧ) na operację fizycznąadd eax/rrfv, 35,36. Ponieważ flagaRRFV dla komórki ΕΑΧ w macierzy RAT 1220jest ustawiona, to argument eax/rrfv informuje, że dana wejściowa nr jeden (PSrcl) znajduje się w komórce ΕΑΧ zespołu rejestrów rzeczywistych RRF 137. Argument 35 w macierzy RAT 1220 oznacza, że dana fizyczna dwa (Src2) znajduje się w komórce RE35 bufora ROB 136, co wskazuje flaga RRFV dla komórki ΕΒΧ w macierzy RAT 1220.
Tablica RAT 132 przekazuje fizycznąmikrooperację add eax/rrfv, 35,36 do stanowiska RS 138 ibuforaROB 136. Tablica RAT 132 przechowuje alokowaną danąPdst 36 dla mikrooperacji fizycznej add eax/rrfv, 35,36 w polu wskaźnika ROB komórki ΕΑΧ w macierzy RAT 1220. Tablica RAT 132 również powoduje skasowanie bitu RRFV dla komórki ΕΑΧ w macierzy RAT 1220, w celu wskazania, że rejestr logicznych ΕΑΧ w trybie spekulatywnym jest przemapowany do bufora ROB 136. Bufor ROB 136 odbiera mikrooperację fizycznąadd eax/rrfv, 35,36 i odczytuje dane źródłowe z fizycznego źródła danych PSrcl eax/rrfv przez dołączenie komórki ΕΑΧ w RRF 137. Bufor ROB 136 odczytuje dane źródła fizycznego PSrc2 przez dołączenie zapisu RE35 z ROB do bufora 1610 wyników. Komórka ΕΑΧ w RRF 137 dla stanu skojarzonego rejestru strukturalnego ΕΑΧ zawiera daną o wartości wynoszącej 229. Komórka RE35 bufora ROB w buforze wyników 1610 zawiera daną wynikową o wartości wynoszącej 522 oraz ustawiony bit ważności, wskazujący aktualny stan spekulatywny rejestru strukturalnego ΕΒΧ.
Bufor ROB 136 przekazuje dane źródłowe (srcl), 229, i dane źródłowe (src2), 522 oraz odpowiednie bity ważności do stanowiska RS 138. Bufor ROB 136 otrzymuje logiczne miejsce przeznaczenia (LDST) ΕΑΧ dla add eax/rrfv, 35,36, mikrooperacji fizycznej, i przechowuje logiczny adres przeznaczenia () ΕΑΧ w polu LDST komórki RE36 bufora 1610 wyników. Bufor ROB 136 kasuje flagę ważności w komórce RE 36 w celu wskazania, że odpowiednia dana wynikowa nie jest ważna.
Stanowisko RS 138 przyjmuje mikrooperację fizycznąadd eax/rrfv, 35, 36 i zapisuje kod operacyjny add w polu kodów operacyjnych komórki RS0 w buforze 1410 stanowiska RS wyznaczonym przez alokator ALLOC 134. Stanowisko RS 138 zapisuje również fizyczny adres przeznaczenia (Pdst) 36 w polu PDST komórki RE36. Stanowisko RS38 zapisuje fizyczne lokacje źródłowe, „xxx” dla psrc 1, i „35” dla psrc2, w polach PSRC1/PSRC2 komórki RS0. Stanowisko RS 138 ustawia również flagę ważności komórki RS0. Poza tym stanowisko RS 138 odbiera wartości danych źródłowych, 229 dla srcl oraz 522 dla src2, jak również odpowiednie flagi ważności. Stanowisko RS 138 również zapisuje wartości danych źródłowych i odpowiednie flagi ważności w polach, odpowiednio, SRC1/SRC2 i V, komórki RS0 bufora BTB 124 bloku 1410.
Należy zauważyć, że tablica RAT zawiera bit identyfikacji READY dla miejsca rejestru oznaczonego jako zawierające dane źródłowe (na przykład srcl, src2) a bit READY dla źródła danych do mikrooperacji wskazuje, że dana w tej lokacji ROB 136 nie jest ważna (na przykład nie jest gotowa), i wtedy odczyt z bufora ROB 136 nie zostanie wykonany, ponieważ operacja odczytu bufora ROB 136 nie da w wyniku danych przekazywanych z bufora ROB 136 do stanowiska RS 138. Jeżeli z tablicy RAT do stanowiska RS 138 w każdym takcie przekazywanych jest kilka mikrooperacji, na przykład cztery, i każda ma dwie wartości danych źródłowych, to wtedy będzie konieczne wykonywanie ośmiu operacji odczytu bufora ROB 136, osiem razy w każdym takcie. Zatem bufor ROB 136 mógłby wymagać zaopatrzenia go w osiem portów. Ponieważ statystycznie jest bardzo mało prawdopodobne, że dostępne są wszystkie osiem źródeł danych, przy występowaniu rejestrów aktywnych wskazujących READY w tablicy RAT, to bufor ROB 136 nie musi mieć ośmiu portów odczytowych. Zatem zastosowanie zespołu rejestrów aktywnych umożliwia kierowanie do źródeł danych w rejestrach tylko gotowych argumentów. Również liczba portów potrzebnych w buforze ROB 136 jest mniejsza, co daje wzrost prędkości i zmniejszenie niezbędnej powierzchni struktury obwodu scalonego.
178 770
Figury 19a-c ilustrują przykład wysyłania fizycznej mikrooperacji ze stanowiska RS 138 zgodnie z przykładem wykonania według niniejszego wynalazku. Znajdująca się w komórce RSO bufora 1410 stanowiska RS mikrooperacja fizyczna add eax/rrfv, 35, 36 jest gotowa do wysyłania do klastera wykonawczego 118, ponieważ dane źródłowe są całkowicie zestawione, co wskazuje bit ważności danych źródłowych (V) dla każdej z danych źródłowych. W celu wysłania mikrooperacji, stanowisko RS 138 przekazuje mikrooperację fizyczną add 229, 522, podst=36 do odpowiedniego bloku wykonawczego w klasterze wykonawczym 118. W szczególności, stanowisko RS 138 generuje wysyłanąmikrooperację fizycznąadd 29,522, pdst=36 przez odczyt pól OPCODE, SRC1/SRC2 oraz PDST komórki R0 w buforze 1410 stanowiska RS. Stanowisko RS 138 kasuje flagę ważności komórki RSO, w celu umożliwienia alokacji komórki RSO przy następnej mikrooperacji fizycznej. Stanowisko RS 13 8 powiadamia alokator ALLOC 134 o wysłaniu mikrooperacji fizycznej i następnie alokator ALLOC 134 dokonuje alokacji komórki RSO do następnej mikrooperacji fizycznej.
Figura 20 przedstawia drugi przykład struktury przepływu danych przy przetwarzaniu mikrooperacji logicznych zgodnie z jednym z przykładów wykonania według niniejszego wynalazku. W przykładzie przedstawionym na fig. 20, klaster 114 wydawania wydaje mikrooperację logiczną(sub ΕΑΧ, ΕΒΧ, ECX), natomiast klaster wykonawczy 118 realizuje wykonanie wysłanej do niego mikrooperacji fizycznej add 229,522, psdt=36. Alokator ALLOC 134 przyjmuje mikrooperację logiczną sub ΕΑΧ, ΕΒΧ, ECX i generuje fizyczny adres przeznaczenia (Pdst) równy 57. Alokator ALLOC 134 przekazuje Pdst, 57, do tablicy RAT 132, a t ablica RAT 132 tłumaczy mikrooperację logiczną na mikrooperację fizyczną, sub 36,35,57. Wskaźnik bufora ROB 136 i flaga RRFV dla komórki ΕΑΧ w macierzy RAT 1220 wskazuje, że argument fizyczny mikrooperacji, 3 6, znaj duj e się w komórce RE3 6 bufora 1610 wyniku. Podobnie, fizyczny argument mikrooperacji, 35, informuje o tym, że psrc2 znajduje się w komórce RE35 bufora wyników.
Tablica RAT 132 wpisuje w pole wskaźnika ROB komórki ECX alokowane pdst 57 dla fizycznej mikrooperacji sub 36, 35, 57 i kasuje bit rrfv dla komórki ECX w celu wskazania, że rejestr logiczny ECX przemapowany jest na bufor 1610 wyników w stanie spekulatywnym. Tablica RAT 132 przekazuje mikrooperację fizycznąsub 36,35, 57 do stanowiska RS 138 bufora ROB 136.
Bufor ROB 136 odczytuje dane źródłowe dla srcl przez odczyt komórki bufora ROB 136 RE36 w buforze 1610 wyników, następnie bufor ROB 136 odczytuje dane dla źródła fizycznego psrc2 35 przez odczytanie komórki RE35 bufora 1610 wyników. Komórka RE36 bufora ROB 136 zawiera dane wynikowe, o wartości „xxx”, i skasowany bit ważności, wskazujący nieważność danych wynikowych dla bieżącego trybu spekulatywnego rejestru ΕΒΧ. Przed zapisem zwrotnym wyniku dla wysłanej mikrooperacji fizycznej add 229, 522, pdst=36 z klastera wykonawczego 118, dana wynikowa dla RE36 jest nieważna. Komórka RE35 bufora ROB 136 zawiera wynikową wartość danej równą 522 i ustawiony bit ważności dla bieżącego spekulatywnego trybu rejestru strukturalnego ΕΒΧ.
Bufor ROB 136 przekazuje wynikowe wartości danych, „xxx” i „522”, oraz odpowiednie bity ważności dla danych srcl, src2, do stanowiska RS 138. Bufor ROB 136 odbiera logiczny adres przeznaczenia 0 ECX dla mikrooperacji fizycznej sub 36,35,57, i zapisuje logiczny adres przeznaczenia, ECX w polu LDST komórki RE57 w buforze 1610 wyników. Bufor ROB 136 kasuje flagę ważności w komórce RE57 w celu wskazania, że odpowiednie dane wynikowe nie są ważne.
Stanowisko RS 138 odbieramikrooperację fizycznąsub 36,35,57, i zapisuje odpowiednią informację w buforze 1410 stanowiska RS. W szczególności kod operacyjny „sub” przechowywany jest w polu kodów operacyjnych komórki RSx, fizyczny adres przeznaczenia pdst 57 zapisywany jest w polu PDST, a fizyczne adresy źródłowe, psrcl 36 i psrc2 35 zapisywane są w polu PSRC1/PSRC2. Poza tym, stanowisko RS 138 ustawia flagę ważności dla komórki RSx. Mikrooperacja fizyczna sub 36, 35, 57 jest niegotowa do wysłania do klastera wykonawczego, ponieważ dane źródłowe nie są całkowicie zestawione. Po zapisie zwrotnym z wysłanej mikrooperacji fizycznej add 229, 522, pdst=36, mikrooperacja fizyczna sub 36,35,57 staje się mikrooperacjąz danymi gotowymi.
178 770
Figury 21a-b przedstawiają przykład zapisu zwrotnego danych wynikowych z klastera wykonawczego 118, skonfigurowany zgodnie z jednym z przykładów według niniejszego wynalazku. W przykładzie przedstawionym na fig. 21a-b, klaster wykonawczy 118 dokonuje zapisu zwrotnego w stanowisku RS 138 danej wynikowej „751”, odpowiadającej fizycznemu miejscu przeznaczenia Pdst „36”, oraz odpowiedniej flagi ważności dla wysłanej mikrooperacji fizycznej add 229,522, pdst=36 na magistrali 139 zapisu zwrotnego. Stanowisko RS 138 odbiera dane wynikowe „751” i odpowiednią flagę ważności, i zapisuje dane wynikowe „751” w polu SRC1, abit ważności w polu V komórki RSx. Mikrooperacja fizyczna sub 36, 35, 57 zapisana w komórce RSx jest już gotowa do wysłania do klastera wykonawczego 118 ze względu na to, że jej dane źródłowe są zestawione całkowicie.
Bufor ROB 136 odbiera wynik „751” i odpowiedni adres przeznaczenia Pdst „36”, i wpisuj e daną wynikową „751 ” w pole danych wynikowych komórki RE3 6 wyznaczonej przez fizyczny adres przeznaczenia Pdst „36”. Bufor ROB 136 ustawia również odpowiednią flagę ważności w celu wskazania, że komórka RE36 bufora ROB zawiera ważne spekulatywne dane dla rejestru strukturalnego ΕΑΧ.
Figury 22a-c przedstawiają przykład wycofywania informacji spekulatywnej z rejestrów fizycznych w buforze ROB 136, w celu skojarzenia rejestrów stanu w RRF 137, zgodnie z jednym z wykonań według niniejszego wynalazku. Logika sterująca 1620 wycofywania powoduje wycofanie rejestrów fizycznych w buforze 1610 wyników, w pierwotnym porządku programowym, w miarę, jak wskaźnik wycofywania podąża za wskaźnikiem nagłówkowym, czyli alokacyjnym, przez sekwencyjne rejestry fizyczne. W przykładzie przedstawionym na fig. 22a-c, logika sterująca wycofywania dokonuje wycofania rejestru fizycznego RE35 przez wstępne sprawdzenia odpowiedniego bitu ważności. Bit ważności wskazuje, że odpowiednia dana spekulatywna jest ważna. W wyniku tego, logika sterująca 1620 wycofywania przekazuje spekułatywną daną wynikową z rejestru fizycznego RE35 do skojarzonego z nim rejestru stanu ΕΒΧ w RRF, wskazanego przez pole rejestru fizycznego RE35.
Podobnie, logika sterująca 1620 wycofywania dokonuje wycofania rejestru fizycznego RE36 przez wstępne sprawdzenie odpowiedniego bitu ważności. Ponieważ odpowiedni bit ważności wskazuje, że odpowiadająca mu spekulatywna dana wynikowa jest ważna, to logika sterująca 1620 'wycofywania przekazuje spekulatywną daną wynikową z rej estru fizycznego RE36 do skojarzonego z nim rejestru stanu ΕΑΧ w RRF 137 wskazanego przez pole rejestru fizycznego RE36. Poza tym, logika sterująca 1620 wycofywania powiadamia tablicę RAT 132 i alokator ALLOC 134 o wycofaniu rejestrów fizycznych RE35 i RE36. W odpowiedzi na to, tablica RAT 132 odzwierciedlając to wycofanie aktualizuje flagi RRFV w macierzy RAT 1220. Powiadomienie o wycofaniu wskazuje alokatorowi ALLOC 134, że wycofane rejestry fizyczne RE35 i RE36 są dostępne dla alokacji.
Całkowitoliczbowy blok wykonawczy (Integer Execution Unit - IEU): Blok IEU144 wykonuje obliczenia we wszystkich pojedynczych taktach mikrooperacji ALU. Poza tym blok IEU 144 dokonuje sprawdzenia ważności i korekcji całego strumienia sterującego mikrooperacji i przekazuje meldunki o wynikach do odpowiednich bloków. Blok IEU 144 zawiera dwa podobne klastery ALU, co umożliwia procesorowi wykonywanie dwóch mikrooperacji całkowitoliczbowych ALU równolegle . Klastery ALU, pierwszy i drugi, w bloku IEU 144 dołączone są do stanowiska RS 13 8. Pierwszy klaster ALU wykonuje większość jednotaktowych operacji całkowitoliczbowych, bez mikrooperacji skoków. Drugi klaster ALU zawiera blok wykonywania skoków. Ten drugi klaster ALU pełni cztery podstawowe funkcje: wykonuje wszystkie mikrooperacje ALU, wykonuje sześć dodatkowych rozkazów ALU, nie wykonywanych przez pierwszy klaster ALU, określa czy rozgałęzienie zostało wyznaczone predykcyjnie poprawnie, i realizuje żądania zapisu/odczytu rejestru sterującego. Przy określaniu, czy rozgałęzienie było wyznaczone prawidłowo, blok wykonywania skoków w bloku IEU 144 przekazuje informacje o rozgałęzieniu, i oblicza adresy, liniowy i wirtualny rozgałęzienia dla danego miejsca przeznaczenia. Stanowisko RS 138 wysyła mikrooperacje do odpowiedniego klastera w bloku IEU 144. Jeżeli mikrooperacja jest rozkazem rozgałęziającym, to blok IEU 144 przekazuje adres docelowy i informację o rozgałęzieniu do bufora BTB 124, sekwenseraMS 130, bloku IFU122
178 770 oraz kalkulatora 128. Porty zapisu zwrotnego, łączące blok IEU 144 z magistralą 139 zapisu zwrotnego przydzielane są przez blok FEU 142.
Blok wykonywania skoków wewnątrz bloku IEU 144 detekuje ważne mikrooperacje skoków wysłane przez stanowisko RS 138. W odpowiedzi na to, blok wykonywania skoków wykonuje mikro- albo makroinstrukcję skoku, w celu upewnienia się o rzeczywistym warunku rozgałęzienia. Blok wykonywania skoków komparuje warunki rozgałęziające, rzeczywisty i pochodzący z predykcji w celu powiadomienia, że rozgałęzienie zostało wyznaczone predykcyjnie poprawnie lub predykcyjnie niepoprawnie (to znaczy, czy rozgałęzienie zostało wybrane, czy nie wybrane). Blok wykonywania skoków wpisuje zwrotnie adresy rozgałęzienia, liniowy i wirtualny, do mikroinstrukcji rozgałęziającej. Jeżeli rozgałęzienie zostało wyznaczone niepoprawnie, i następnie wybrane, to blok wykonywania skoków podaje sygnał stemjący, JE Clear, w celu wyrównania potoku rozkazów po wykryciu najstarszego niepoprawnie wyznaczonego rozgałęzienia. Sygnał JE Clear uruchamia sekwencyjną część procesora do pobierania i dekodowania rozkazów na poprawnej ścieżce, i blokuje wydawanie rozkazów do niesekwencyjnej części procesora.
Na figurze 23 przedstawiono działanie bloku IEU zgodnie zjednym z przykładów wykonania potoku procesora według niniejszego wynalazku. W fazach 31 i 81 pojawiająsię: odczyt z bufora ROB 136, gotowość stanowiska RS 138, i odbywa się uszeregowanie. W fazach 32 i 82 blok IEU 144 otrzymuje ważnąmikrooperację, do dwóch argumentów źródłowych, flagi oraz miejsca przeznaczenia ze stanowiska RS 138.BlokIEU 144 w fazach 33 i 83 dokonuje zwrotnego zapisu wyniku, informacji o błędzie, flag, w stanowisku RS 138 oraz buforze ROB 136. Jak to pokazano na fig. 23, blok IEU jest blokiem wykonawczym jednotaktowym.
Blok generacji adresów (Address GenerationUnit - AGU): Blok AGU146 oblicza adres liniowy z wykorzystaniem adresu bazowego, wartości przesunięcia, współczynnika skalującego, wartości wskaźnika, oraz wartości segmentu. W jednym z wykonań, adres liniowy zawiera 32 bity, z których 22 starszych bitów identyfikuje stronę pamięci, a 12 młodszych bitów identyfikuje offset na stronie pamięci. Blok generacji adresu (AGU) 146 dokonuje obliczeń adresowych, zarządza wszystkimi operacjami segmentowymi, oraz steruje dostępem do wszystkich rejestrów testowych. Blok AGU 146 zawiera dwa niezależne bloki obliczeniowe adresów, z których każdy jest w stanie wytworzyć adres liniowy i adres efektywny w każdym z taktów zegara. Poza tym bloki obliczeniowe sprawdzają przekroczenia granic segmentów, korygują błędy i dokonują sprawdzenia zabezpieczeń czasu dostępu.
Blok AGU 146 dołączony jest do stanowiska RS 138 w celu odbierania mikrooperacji. Blok AGU 146 dołączony jest również do klastera 120 pamięci, umożliwiając w ten sposób transmisję adresu liniowego do klastera 120 pamięci w każdym takcie zegara. Przy generacji adresu blok AGU odbiera dane albo ze stanowiska RS 138 bloku IEU 144, albo bloku MIU 140. Dane zostają wykorzystane wraz z bazą segmentu do wytworzenia adresu liniowego. Przy dostępie do rejestru sterującego, blok AGU 146 odbiera dane wejściowe ze stanowiska RS 138 w postaci mikrooperacji i argumentów z danymi źródłowymi. Przy poprawnym obliczeniu adresu pamięci blok AGU 146 przekazuje adres do klastera 120 pamięci, w celu zakończenia operacji pamięciowej. Natomiast, jeżeli w obliczeniu adresu pamięci pojawi się błąd, to blok AGU 146 przekazuje status błędu do bufora ROB 136 i kasuje operacje w klasterze 120 pamięci.
Blok AGU 146 dokonuje segmentacji i implementuje zabezpieczenie, w celu zapewnienia kompatybilności z mikroprocesorami o strukturze INTEL(R\ Blok AGU 146 zawiera blok segmentowy obejmujący zespół rejestrów segmentowych. Blok segmentowy nadaje się do zarządzania wszystkimi operacjami odczytu z rejestru segmentowego. Poza tym blok segmentowy zawiera układy dokonujące kontroli zabezpieczającej przy wprowadzaniu danych rejestru segmentowego. Ogólnie biorąc, operacja segmentowa ładuje dane rejestru segmentowego do zespołu rejestrów segmentowych. Przy poprawnym wykonaniu operacji, blok AGU 146 wpisuje stan na powrót do bufora ROB 136. Jeżeli operacja segmentowa była niepoprawna, to blok AGU 146 generuje wektor zawierający status błędu dla operacji, w której błąd wystąpił. Blok AGU 146 zawiera również bezpośredni blok łącznikowy zaopatrzony w widoczne strukturalnie rejestry sterujące wykorzystywane przez mikrokody. Przy operacjach rejestrów sterujących, blok AGU 146 wpi
178 770 suje dane do bufora ROB 136. Przy odczycie rejestru sterującego, następuje wpisanie danych do rejestru, a przy zapisach do rejestru następuje wpisanie mikroadresów rejestru sterującego.
Na figurze 24a-c przedstawiono fazy potoku procesora dotyczące bloku AGU146, skonfigurowane zgodnie z jednym z przykładów wykonania według niniejszego wynalazku. Na fig. 24a przedstawiono fazy obliczania adresu AGU 146. W fazie 3 2, blok AGU 146 odbiera dane wej ściowe ze stanowiska RS 13 8 i w fazie 33 zatrzaskuje te dane. Adres liniowy i informacja o rozdzieleniu bufora MOB przekazywana jest w fazie 33 do bloku MIU 140, a w fazie 34 do MIU 140 przekazywany jest specjalny sygnał kasujący AGU. W fazach 35 i 83 zapisu zwrotnego przekazywane są wszystkie dane zwrotne. Fazy 33, 34 i 36 są wyrównane z fazami pamięciowymi 41,42 i 43.
Na figurze 24b przedstawiono jeden z przykładów wykonania faz potoku dla operacji wprowadzania danych segmentowych, występującej w bloku AGU 146. Przy operacjach na zespole rejestrów segmentowych, blok AGU 146 w fazie 32 dekoduje kod operacyjny. W fazie 33 następuje odczyt zespołu rejestrów segmentowych, zakończenie obliczenia adresu do ładowania segmentu, i wykonywany jest test selektora zerowego na danym segmencie. W fazie 34 'wykonywane są testy na danych segmentowych, łącznie ze sprawdzaniem granicy segmentu i sprawdzeniem błędów. W fazach 34 i 35 odbywa się zapis zwrotny, włącznie z informacją o błędach.
Figura 24c przedstawia fazy działania rejestru sterującego bloku AGU 146. Przy operacjach rejestru sterującego następuje dekodowanie kodu operacyjnego, w fazie 32. W fazie 33 adres otrzymany ze stanowiska RS 138 jest zatrzaskiwany i rozprowadzany do wszystkich bloków z sygnałami zapisowo-odczytowymi bazującymi na tym kodzie operacyjnym. W fazie 34 odpowiedni blok dokonuje odczytu rejestru sterującego. W fazie 35 następuje zapis rejestrów sterujących, a w fazie 83 następuje zapis zwrotny.
Blok interfejsu pamięciowego (MIU): Blok interfejsu pamięciowego (Memory Interface Unit -MIU) 140 dokonuje konwersji formatów, całkowitoliczbowego i zmiennoprzecinkowego. Fig. 25 przedstawia częściowy schemat blokowy bloku MIU 1140, skonfigurowanego zgodnie z j ednym z przykładów wykonania według niniej szego wynalazku. B lok MIU 140 zawiera cztery różne podbloki: konwerter ładowania (wprowadzania) 2525, konwerter zapamiętywania 2515, bufor danych zapamiętanych 2535 oraz stałą zmiennoprzecinkową pamięć ROM (nie pokazana). Konwerter ładowania 2525 odpowiada za konwersję danych zarówno całkowitoliczbowych, jak i zmiennoprzecinkowych, ze specjalnego formatu pamięci na wewnętrzny format procesora. Blok pamięci podręcznej danych (Data Cache Unit - DCU) 148 dostarcza danych do konwersji i podaje typ konwersji.
Konwerter zapamiętywania 2515 dołączony jest do bufora zapamiętanych 2535 danych, tak że konwerter 2515 zapamiętywania otrzymuje dane ze stanowiska RS 138 i przekazuje je do pamięciowego bufora 2535 danych. W odpowiedzi na to, bufor pamięciowy 2535 danych przekazuje dane do pamięci podręcznej 2830 (fig. 28). Ogólnie biorąc, konwerter zapamiętujący 2515 przetwarza dane zmiennoprzecinkowe dla operacji zapamiętywania. Bufor 2535 danych zapamiętywanych odbiera i przechowuje operacje zapamiętywania i we współpracy z buforem adresowym 2520 zapamiętywania i buforem 2810 adresu fizycznego (fig. 28) bloku DCU 148 wycofuje/przyporządkowuje operacje zapamiętywania, zależnie od potrzeby, i powoduje wykonanie ich w systemie pamięciowym.
Bufor porządkowy pamięci (MOB) 150 nadzoruje każdą operację odczytu i steruje obejściem w specjalnych sytuacjach w buforze 2535 danych zapamiętywanych. Konwerter 2515 zapamiętywania odpowiada za przetwarzanie zarówno całkowitoliczbowe, jak i zmiennoprzecinkowe danych z wewnętrznego formatu procesora na specyficzny format pamięci. Stanowisko RS 138 podaje do wykonania typ konwersji danych. Bufor 2535 zapamiętywania danych przechowuje zapamiętywane dane w formacie pamięciowym. Bufor MOB 150 zapisuje dane w pamięci przez przekazanie wyznaczonej komórki bufora danych zapamiętywanych do bloku DCU 148. Dane, zarówno całkowitoliczbowe, jak i zmiennoprzecinkowe, rezydująw buforze danych zapamiętywanych. Poza tym dane przekazywane sąz bufora 2535 danych zapamiętywanych do konwertera 2525 ładowania pod kontrolą MOB 150. Stała pamięć zmiennoprzecinkowa (FP) ROM zawiera stałe zmiennoprzecinkowe w formacie o wewnętrznej precyzji. Stałe wykorzysty
178 770 wane są przez rozkazy mikroprocesora o strukturze INTEUr\ Blok MIU 140 opisano bardziej szczegółowo poniżej, w połączeniu z opisem bufora MOB 150.
Na figurze 26a przedstawiono fazy potoku operacji konwersji ładowania, dokonywanej przez blok MIU 140. Jak to widać na fig. 26a, blok DCU 148 dokonuje rotacji danych, w fazie 43, a w fazie 83 blok MIU 140 przetwarza dane dla operacji ładowania.
Na figurze 26b przedstawiono operacje konwersji pamięci w potoku procesora. Blok MIU 140 przetwarza dane i w fazie 33 zapisuje w zapamiętującym buforze danych. W fazie 83 blok MIU 140 ustawia flagi zapisu powrotnego, informacje o błędach i ważności danych.
Na figurze 26c przedstawiono operacje zapisu w pamięci, potoku procesora według wynalazku. Bufor ΜΟΒ 150 przekazuje do bloku MIU 140, w fazie 41, pewien wskaźnik. W fazie 42 blok MIU 140 wpisuje dane zapamiętywane do bloku DCU 148. W fazie 43 DCU 148 wpisuje dane do pamięci podręcznej poziomu jeden (LI), znajdującej się wewnątrz DCU 148.
Na figurze 26d przedstawiono operację odczytu ze zmiennoprzecinkowej pamięci ROM, w potoku procesora według wynalazku. W fazie 32, stanowisko RS 138 wysyła mikrooperacje, dane źródłowe 1 i dane źródłowe 2. W fazie 33, MIU zatrzaskuje dane i generuje adres pamięci ROM. Adres pamięci ROM wykorzystywany jest w fazie 35 do dostępu do macierzy. W fazie 83 stała zmiennoprzecinkowa, otrzymana podczas dostępu do pamięci ROM, zostaje zapisana zwrotnie.
Zmiennoprzecinkowy blok wykonawczy (FEU): Procesor według niniejszego wynalazku wykonuje operacje zmiennoprzecinkowe z pośrednictwem zmiennoprzecinkowego bloku wykonawczego (FEU) 142. Blok FEU 142 może zawierać dowolny zmiennoprzecinkowy blok funkcjonalny, bez wyjścia poza ideę i zakres wynalazku. W jednym z wykonań, blok FEU 142 zawiera sumacyjny blok zmiennoprzecinkowy (FAU), zmiennoprzecinkowy blok zaokrąglający (FRND), zmiennoprzecinkowy blok mnożący (FMU) oraz zmiennoprzecinkowy blok przewodowy (FWU), jak również multipleksery danych źródłowych i obejściowe. Blok FAU dokonuje zmiennoprzecinkowego sumowania, odejmowania i komparacji, jak również innych operacji zmiennoprzecinkowych potrzebnych do wsparcia operacji zmiennoprzecinkowych, zarządzania obróbką zmiennoprzecinkowych działań wyjątkowych i obróbki zmiennoprzecinkowych liczb przestępnych. Blok FMU wykonuje zarówno zmiennoprzecinkowe, jak i całkowitoliczbowe mnożenia i dzielenia oraz operacje z resztami różnicowymi i pierwiastkowaniem. FRND dokonuje zaokrąglenia i zapisu zwrotnego danych dla wszystkich operacji zmiennoprzecinkowych wykonywanych w blokach FAU i FMU. Zapisywana zwrotnie liczba całkowita z FMU wychodzi z tego FMU bez zaokrąglenia. FWU dokonuje podstawowych operacji zmiennoprzecinkowych i całkowitoliczbowych, które wymagają dużej liczby operacji szeregowania i multipleksowania danych. Blok FEU 142 połączony jest ze stanowiskiem RS 138 i buforem ROB 136, umożliwiając zapis zwrotny wyników działań do stanowiska RS 138 i bufora ROB 136.
Na figurze 27 przedstawiono działanie bloku FEU 142 w potoku procesora, włącznie ze współdziałaniem przy wysyłaniu i zapisie zwrotnym. Ten dwutaktowy potok szeregujący stanowiska RS 138 złożony z operacji gotowych/uszeregowanych i operacji wysyłania, wymaga uprzedniego powiadomienia o nadejściu danych źródłowych, przynajmniej na dwa takty przed wysyłaniem mikrooperacji wykorzystujących te dane. W konsekwencji w fazie 30 stanowisko RS 138 identyfikuje operacje nadające się do wysyłania i w fazie 32 wysyłaje. BokFEU 142 dokonuje odgałęziania danych i dekodowania kodów operacyjnych w fazie 32. W przypadku mikrooperacji wymagających trzech lub czterech taktów opóźnienia, blok FEU 142 realizuje wykonanie mikrooperacji w fazach 33 i 34. W przypadku wykonania trójtaktowego, FRND w fazie 35 dokonuje zaokrągleń i zapisu zwrotnego w fazie 83. W przypadku wykonania z opóźnieniem czterech taktów, w fazie 35 występuje blokada, FRND dokonuje w fazie 35 zaokrąglenia i wpisu zwrotnego w fazie 83. W przypadku wykonania z jednym taktem opóźnienia w bloku FWU, wykonanie odbywa się w czasie trwania fazy 33, a zapis zwrotny następuje w czasie trwania fazy 83.
Pamięć podręczna danych (Data Cache Unit - DCU): Na fig. 28 przedstawiono schemat blokowy pamięci podręcznej danych (DCU) 148, skonfigurowanej zgodnie z przykładem wyko
178 770 nania według niniejszego wynalazku. Blok DCU 148 zawiera bufor 2810 adresów fizycznych, matrycę 2820 etykiet danych, pamięć podręczną2830 poziomu pierwszego (LI) oraz bufor DCU 2840. Bufor 2810 adresu fizycznego połączony jest tak, że nadaje się do odbierania informacji wejściowej (na przykład adresu fizycznego) z bufora DTLB 154, i do wytwarzania adresu fizycznego dla macierzy 2820 etykiet danych. Macierz 2820 etykiet danych zestawiona jest tak, że umożliwia odbiór danych wejściowych (na przykład adresu zapisu albo adresu odczytu) z bufora ΜΟΒ 150. Pamięć podręczna 2830 danych zestawiona jest tak, że nadaje się do odbioru danych z macierzy 2820 etykiet danych, oraz bufora 2535 zapisowego danych, jak również dołączonąjest do klastera 110 magistrali. W odpowiedzi na dostęp do pamięci podręcznej, ta pamięć 2830 wytwarza informację wejściową dla klastera wykonawczego 118 i bufora MOB 150. Bufor 2840 bloku DCU dołączony jest również do macierzy 420 i pamięci podręcznej 2830. Bufor 2840 DCU dołączony jest również tak, że odbiera sygnały wejściowe z bloku ΜΟΒ 150 i klastera 110 magistrali.
Bufor 2810 adresu fizycznego odbiera i zapamiętuje 24 najstarsze bity przekazywanych adresów fizycznych z DTLB w celu dla operacji zapisu i odczytu. We współpracy z buforem ΜΟΒ 150 i blokiem MIU 140, bufor 2810 adresów fizycznych przyporządkowuj e adres fizyczny do stanu procesora, i w razie potrzeby realizuje te adresy. Macierz 2820 etykiet danych przechowuje fizyczne etykiety adresowe danych aktualnie przechowywanych w pamięci podręcznej 2830 danych, oraz etykietę zgodną z fizycznym adresem dostępu do zapamiętanych fizycznych etykiet adresowych. Pamięć podręczna 2830 danych odbiera i zapamiętuje dane do szybkiego wydawania i odpowiada za odczyt danych. W jednym z wykonań, macierz 2820 etykiet danych i pamięć podręczna 2830 danych mająpojemność, wystarczającą do zapamiętania 128 zestawów dwukierunkowych asocjacyjnych 22-bajtowych wierszy pamięci podręcznej danych i odpowiednich etykiet adresowych. Bufor 2810 adresów fizycznych bardziej szczegółowo omówiono poniżej. Macierz 2820 etykiet danych i pamięć podręczna 2830 danych reprezentują szeroką kategorię tych elementów występujących w większości systemów komputerowych, których funkcje i budowa są znane i nie będą poniżej opisywane.
Bufor 2840 bloku DCU zawiera odwołania do pamięci podręcznej 2830 danych, które nie trafiają w pamięć podręczną i aktualnie zawieszone są na magistrali. Komórki w buforze 2840 DCU są również sprawdzane przy dostępie do pamięci podręcznej 2830 danych, w celu określenia, czy pożądane dane zapamiętane są komórce bufora 2840 DCU, czy pożądane dane znajdują się w wierszu pamięci podręcznej aktualnie dołączonym do magistrali. Bufor 2840 bloku DCU obejmuje lokacje pamięci do tymczasowego przechowywania zwróconych przy operacjach na wierszu pamięci podręcznej. Bufor 2840 bloku DCU podaje dane i odpowiednią informację etykietową, odpowiednio, do pamięci podręcznej 2830 danych i macierzy 2820 etykiet danych. W jednym z wykonań, bufor 2840 DCU zawiera cztery komórki o szerokości 256 bitów (1 wiersza pamięci podręcznej).
Na figurze 29 przedstawiono działanie bloku DCU 148 w jednym z przykładów wykonania potoku procesora według niniejszego wynalazku. Zwykle operacje pamięciowe zajmują trzy fazy potoku (41, 42 i 43). W fazie 41, mikrooperacja jest wysyłana do bloku DCU 148. W pierwszej połówce fazy 42, DTLB 154 dokonuje translacji adresu, a DCU 148 wykorzystuje nie przetłumaczone bity adresowe (młodszych 12 bitów) do odczytu etykiet z macierzy 2820 etykiet danych. W drugiej połówce fazy 42, blok DCU 148 dokonuje porównania etykiet z wykorzystaniem przetłumaczonego adresu z DTLB 154 w celu upewnienia się, że osiągnięto trafne wybranie pamięci podręcznej.
W przypadku operacji odczytu, dane są odczytywane z pamięci podręcznej 2830 danych w drugiej połowie fazy 42. W fazie 43 blok DCU 148 dokonuje zapisu zwrotnego dolnej części danych, w przypadku, jeśli wystąpi trafienie w pamięci podręcznej. Jeżeli danej tej nie ma w pamięci podręcznej 2830 danych, to w fazie 42 generowany jest sygnał żądania dostępu do magistrali. Odpowiedź magistrali zewnętrznej 158 w przypadku danych dolnych trwa przynajmniej cztery cykle po wysłaniu żądania w fazie 42. Zapamiętywanie danych wyprowadzanych przez MOB 150 odbywa się w ten sam sposób, jak ładowanie. Blok DCU 148 może również wykorzystywać
178 770 przetłumaczony adres fizyczny, zapamiętany w buforze 2810 adresów fizycznych lub adresy przetłumaczone w fazie 42 z DTLB 154. Sprawdzenie poprawności wybrania pamięci podręcznej odbywa się w fazie 42, a rzeczywista zawartość pamięci podręcznej danych zostaje zapisana w fazie 43. Nieprawidłowe zapisy zwykle wykorzystują te same fazy, co niepoprawne załadowania, lecz przy wysłaniu na magistralę innego rodzaju żądania.
Bufor porządkowania pamięci (MOB): Bufor porządkowania pamięci (Memory Order Buffer - MOB) 150 sprzęga część niesekwencyjnąprocesora z systemem pamięci. Bufor MOB 150 zawiera dwa główne bufory, j ak to pokazano na fig. 25: bufor 2510 ładowania i bufor adresowy 2520 zapisu. Bufor 2510 ładowania i bufor adresowy 2520 zapisu stanowiąpierścieniowe kolejki, tak, że każda komórka wewnątrz bufora reprezentuje ładowanie albo zapis mikrooperacji. Bufor MOB 150 otrzymuje rozkazy ładowania i zapisu ze stanowiska RS 138. Stanowisko RS 138 zapewnia odpowiedni kod operacji, a blok AGU 146 oblicza i przekazuje adres liniowy dostępu. Operacje ładowania i zapisu wykonywane są albo natychmiast, albo po zapisaniu w buforze MOB 150 i wysłaniu w późniejszym czasie. Podczas działania klastera pamięci, DTLB 154 przetwarza adres liniowy na adres fizyczny albo sygnalizuje nieprawidłowe wybranie strony do operatora PMH 152. Bufor MOB 150 dokonuje licznych sprawdzeń adresu liniowego i rozmiaru danych, w celu określenia, czy operacja może być wykonywana, czy musi nastąpić blokada.
Bufor 2520 adresów zapisu pracuje w połączeniu z buforem 2535 danych zapamiętanych i buforem 2810- adresów fizycznych, w celu efektywnego zarządzania operacją zapamiętywania. W jednym z wykonań bufor 2520 adresów zapisu zawiera 12 komórek umożliwiających przechowywanie do 12 operacji zapisowych. Bufor adresowy 2520 zapisu wykorzystywany jest do ustawiania w kolejce wszystkich operacji zapisowych, przed wysłaniem do systemu pamięci. Operacje zapamiętywania są kolejno wysyłane w pierwotnym porządku programowym, jeżeli klaster niesekwencyjny sygnalizuje, że tryb przestał być spekulaty wny. Bufor adresowy 2520 zapisu sprawdza wszystkie ładowania na konflikty adresów zapisu, tak aby utrzymać ciągłość ładowania z poprzednio dokonanymi wpisami, i z jeszcze znajdującymi się w buforze 2535 danych zapamiętywanych. W jednym z wykonań, bufor 2510 ładowania zawiera 16 komórek buforowych, przechowujących do 16 operacji ładowania. Bufor ładowania 2510 wykorzystywany jest do kolejkowych operacji ładowania, niemożliwych do zakończenia przy normalnym wysyłaniu przez stanowisko RS 138. Operacje z kolejki są następnie ponownie wysyłane przez bufor ładowania 2510, kiedy nastąpi usunięcie konfliktu.
W jednym z wykonań, zależności adresowe określane są przez zastosowanie kolorowania pamięci. Ogólnie mówiąc, kolorowanie pamięci wykorzystuje się do śledzenia zależności między operacjami ładowania i zapisu. W celu zaimplementowania kolorowania pamięci, stosuje się identyfikator (ID) bufora zapisowego, czyli etykietę, dla każdej operacji ładowania podczas dekodowania. W jednym z wykonań, bufor zapisowy ID zawiera pięć bitów, łącznie z bitem zapętlającym. Bufor zapisowy ID identyfikuje komórkę w buforze zapisowym przechowującym najświeższą operację zapisu. Alokator ALLOC 134 dokonuje alokacji komórek bufora zapisowego kolejno do wydawanych operacji zapamiętywania. Każda z pamięciowych operacji ładowania zaopatrzona zostaje w etykietę w buforze zapisowym ID najnowszej operacji zapisu. W konsekwencji, bufor zapisowy ID przypisany do operacji ładowania, wyznacza najmłodszą operację zapisu, starszą od odpowiadającej jej operacji ładowania. Zatem, informacja o wieku operacji zapisu w stosunku do operacji ładowania umożliwia identyfikację zależności. Przy stwierdzeniu zależności lub przy jej braku, klaster 120 pamięci według wynalazku określa, czy każda z operacji ładowania może być wykonana.
Mówiąc dokładnie, według niniejszego wynalazku wykorzystuje się względne czasowe rozmieszczenie operacji ładowania, w stosunku do operacji zapisu, w celu określenia, czy kolejno wydawane operacje ładowania mogąbyć wykonane przed wcześniej wydanymi operacjami zapisu.
Operacja ładowania: Przy pracy, operacje ładowania wydawane sądo stanowiska RS 138 z alokatora ALLOC 134 i tablicy RAT 132. W odpowiedzi na to, alokator ALLOC 134 przypisuje nowy bufor ID zapisu do każdego ładowania wydanego do stanowiska RS 138. Operacja ładowania oczekuj e w stanowisku RS 13 8 do momentu, kiedy odpowiednie argumenty danych do opera
178 770 cji ładowania staną się dostępne. Kiedy to nastąpi, stanowisko RS 138 wysyła operację ładowania do bloku AGU 146 i bufora 2510 ładowania. Blok AGU 146 generuje adres liniowy, wykorzystywany przez DTLB 154, MOB 150 oraz DCU 148.
Bufor DTLB 154 tłumaczy adres liniowy na adres fizyczny, a blok DCU 148 dokonuje przeglądu danych wstępnych, z wykorzystaniem młodszych 12 bitów. Poza tym bufor adresowy 2520 zapisu wykorzystuje młodszych 12 bitów razem z buforem zapisowym, do sprawdzania adresów kolizyjnych. Górnych 20 bitów adresu liniowych zostaje przetłumaczonych przez DTLB 154 na adres fizyczny. Jeżeli DTLB 154 nie jest w stanie przetłumaczyć adresu, wtedy ten DTLB generuje stan zablokowania. Na przykład niewłaściwe wybranie strony może wystąpić, kiedy operator obsługi 152 błędnego wyboru strony jest zajęty. W tym przypadku operacja ładowania zostaje zablokowana.
Zakładając poprawne trafienie DTLB 154 w stronę, i niewystępowanie konfliktów adresowych bufora 2520, blok DCU 148 wykorzystuje fizyczne bity adresowe wraz z młodszymi 12 bitami adresu nie przetłumaczonego, w celu dokonania przeglądu macierzy etykiet, i następnego odczytu matrycy danych w razie potrzeby, do pamięci podręcznej 2830 danych. Jeżeli operacja ładowania daje w wyniku trafienie w dane pamięci podręcznej 2830, to następuje odczyt danych z pamięci podręcznej 2830, ustawienie w szeregu i przekazanie do konwertera 2525 ładowania. W odpowiedzi na to, konwerter 2525 ładowania dokonuje konwersji danych na właściwy format wewnętrzny, rozpoznawany przez procesor, i dokonuje zapisu zwrotnego danych wynikowych na magistrali 139 zapisu zwrotnego. Jeżeli operacja ładowania daje w wyniku nietrafienie w pamięć podręczną2830, to do klastera 110 magistrali przekazywany jest sygnał żądania danych. Po wprowadzeniu danych poprzez klaster 110 magistrali, albo z pamięci podręcznej poziomu drugiego (L2) -156, albo z pamięci zewnętrznej, blok DCU 148 wysyła żądanie taktu na magistrali 139 zapisu zwrotnego, w celu zwrócenia żądanych danych. Kiedy DCU 148 odbierze zezwolenie na takt, lub dostęp do magistrali 139 zapisu zwrotnego, blok DCU 148 transmituje tę danądo konwertera 2525 ładowania. Konwerter 2525 ładowania dokonuje niezbędnej konwersji formatowej, i następnie kieruje skonwertowane dane na magistralę 139 zapisu powrotnego.
Po wysłaniu operacji ładowania wykorzystuje się kolor operacji ładowania w pamięci, w celu określenia, czy bufor pamięci zawiera jakieś nieważne adresy zapisowe, starsze od operacji ładowania. W jednym z wykonań sprawdzane są komórki bufora adresowego 2520 zapisu. Ponieważ operacje ładowania nie mogą występować za operacjami zapamiętywania o nieznanych adresach, to dokonuje się sprawdzenia, w celu zablokowania operacji ładowania do momentu wysłania ze stanowiska RS 13 8 mikrooperacji adresu zapamiętania (na przykład do momentu zakończenia operacji obliczenia adresu). W celu określenia, czy operacja zapamiętywania jest starsza, według niniejszego wynalazku wykorzystuje się detektor adresu, w celu poszukiwania bufora pamięciowego do przeszukiwania bufora zapisowego w poszukiwaniu najstarszej operacji zapamiętywania, zawartej w buforze zapisowym, w celu zapisania operacji zidentyfikowanej przez bufor ID jako przyporządkowanej danej operacji ładowania.
Jeżeli pewna komórka bufora pamięciowego zawiera adres nieważny, to do odpowiedniego dekodera ID bufora pamięciowego przekazywany jest pewien sygnał (na przykład bit). Jeżeli adres j est ważny, to operacj a ładowania zaopatrzona zostaj e przez dekoder ID bufora zapisowego w etykietę operacji zapisu sygnalizującą nieważność adresu, w celu zapobieżenia wysyłaniu adresu, aż do momentu, kiedy zostaną wysłane ze stanowiska RS 138 pod tym adresem mikrooperacje zapisu.
Równolegle do działania DCU 148, bufor ΜΟΒ 150 sygnalizuje do bufora 2510 zakończenie operacji. Jeżeli nie występują konflikty adresowe, a adres identyfikowany w operacji ładowania nie został zapisany w bloku DCU 148, to bufor 2510 ładowania odsuwa operację ładowania od bezpośredniego wykonania w klasterze 110 magistrali, przy założeniu, że żadne operacje nie oczekująna rozesłanie. Jednak, jeżeli bufor adresowy 2520 zapisu sygnalizuje zgodność adresu, to bufor adresowy 2520 sygnalizuje do bufora 2535 danych zapisowych możliwość podawania danych przy zignorowaniu danych DCU 148. Jeżeli występuje jakiś konflikt w buforze adresowym zapisu, lecz adresy nie zgadzają się ze sobą, to operacja ładowania zostaje zablokowana i
178 770 wpisana do bufora ładowania 2510. Operacja ładowania oczekuje, aż do zniknięcia warunku blokującego. Po zakończeniu operacji ładowania, stanowisko RS 138, bufor ROB 136 i MOB 120 odzwierciedlają stan pełnego zakończenia.
Ogólnie biorąc, klaster 120 pamięci odbiera wysłane operacje ładowania, po jednej w takcie. Ponieważ stanowisko RS 138 wysyła mikrooperacje do podsystemu 120 pamięci bazując wyłącznie na zależności danych, to bufor MOB 150 dokonuje wielokrotnych testów blokowania ładowania, w celu określenia, czy operacja ładowania może się odbyć bez konfliktów. W celu sprawdzenia zależności adresowych i zasobowych, bufor MOB 150 zbiera wszystkie warunki blokowania i priorytyzuje te warunki, w celu znalezienia priorytetu najwyższego. Jeżeli występuje konflikt, to operacja ładowania zostaje zablokowana, zapamiętana i zaopatrzona w etykietę z kodem bloku i uniemożliwione zostaje jej zakończenie. Konflikt w systemie pamięci jest monitorowany, w celu sprawdzenia, kiedy warunki, które spowodowały zablokowanie operacji ładowania, przestały występować. W tym momencie pojawia się możliwość ponownego rozesłania rozkazu ładowania.
Po wysłaniu operacji ładowania ze stanowiska RS 138, bloki DCU 148 i DTLB generują stan zablokowania. Równolegle, bufor MOB 150 wykrywa jeden lub więcej konfliktów adresowych. Bufor ΜΟΒ 150 wykorzystuje warunki stanu blokowania, i informacje o konflikcie adresowym, i priorytyzuje warunki i konflikty, w celu określenia, czy należy kończyć wykonywanie operacji ładowania. Jeżeli operacja ładowania nie może być zakończona w wyniku występowania konfliktu, to ładowanie zostaje zatrzymane czyli zablokowane. W celu zablokowania operacji ładowania, blok DCU 148 usuwa żądanie ładowania, a bufor MOB 150 generuje kod bloku, identyfikujący ewentualne zdarzenie, konieczne do zakończenia przed dopuszczeniem do wykonania operacji ładowania. Po wystąpieniu odpowiedniego zdarzenia, operacja ładowania zostaje „obudzona” i ponownie wysłana do wykonania.
Mimo obudzenia operacji ładowania, nie musi ona być koniecznie wykonana w okresie trwania następnego taktu wykonawczego, ponieważ może być zablokowana ponownie, z tego samego powodu, lub innego. Na przykład operacja ładowania może być blokowana przez MOB 150, po wstępnym rozesłaniu, ponieważ z powodu konfliktu adresowego z operacjązapisu aktualnie rezydującą w buforze adresowym 2520 zapisu. Kiedy operacja zapisu, generująca ten adres zostaje wysłana, to operacja ładowania zostaje obudzona i wysłana ponownie. Ponownie wysłana operacja może być zablokowana przez blok DCU 148 w wyniku przywiązania operacji ładowania do tego samego wiersza pamięci podręcznej, co inne ładowanie, aktualnie wykonywane w systemie. Po zwróceniu odpowiednich danych, operacja ładowania zostaje przebudzona i ponownie wysłana. Po wysłaniu ładowanie może ulec ponownemu zablokowaniu lub może dojść do końca wykonania.
Przy blokowaniu operacji ładowania, są one zapamiętywane w buforze 2510 ładowania. W jednym z wykonań, bufor ładowania zawiera 16 komórek. Zatem każdorazowo w procesorze może być wykonywanych do 16 operacji ładowania. Poza tym w danym cyklu może być budzonych aż 16 operacji ładowania. Ponieważ w jednym takcie wysyłane jest jedno ładowanie (w korzystnym wykonaniu), to bufor ΜΟΒ 150 ustawia przebudzone operacje ładowania w kolejkę do wysłania. W jednym z wykonań, zestawianie kolejki odbywa się w buforze 2510 ładowania, przez etykietowanie ładowań po przebudzeniu jako „gotowych”. Bufor 2510 ładowania w każdym z taktów szereguje jedno z „gotowych” ładowań do wysłania. Mechanizm gotowości/szeregowania umożliwia wykonanie jednego ładowania w takcie.
Operacja zapamiętywania: W jednym z wykonań operacja zapamiętywania rozbita jest na dwie mikrooperacje: mikrooperację zapamiętywania danych, za którą występuje mikrooperacja adresowa zapisu. Ponieważ operacja zapisu reprezentowana jest przez kombinację danych zapamiętywanych i mikrooperacji adresowych zapamiętywania, to alokator ALLOC 134 dokonuje alokacji komórki bufora zapamiętującego tylko, kiedy operacja zapamiętania danych została wydana do stanowiska RS 138. Alokacja komórki bufora pamięciowego powoduje zarezerwowanie tej samej lokacji w buforze adresowym 2520 zapamiętywania, buforze 2535 danych zapisywanych w fizycznym buforze adresowym 2810. W celu zachowania korelacji między konkretnymi
178 770 adresowymi mikrooperacjami zapisu i odpowiednimi mikrooperacjami zapisu danych, każdy zestaw adresu zapamiętania i mikrooperacji zapisu danych przyporządkowany jest do dekodera ID bufora zapisowego. Kiedy dostępne stają się dane rejestru zapamiętywania danych, stanowisko RS 138 wysyła operacje zapisu danych do konwertera zapisowego 2515, w celu zapisu do bufora 2535 danych zapisywanych. Konwerter 2515 zapisu sygnalizuje do bufora 2520 adresów zapisowych ważność danych dla tej komórki.
Kiedy dostępne staj ą się dane rejestru adresowego zapisu, stanowisko RS 13 8 wysyła adres zapamiętania do bloku AGU 146 i bufora adresowego 2520 zapisu. Bufor adresowy 2520 zapisu zawsze przyspiesza operację przez przekazanie jej do bezpośredniego wykonania. Blok AGU 1146 generuje adres liniowy dla transformacji przez blok DTLB 154, następnie wpisuje do bufora adresowego zapisu. Jeżeli wystąpi prawidłowe trafienie w stronę DTLB, to adres fizyczny zostaje wpisany w bufor 2810 adresów fizycznych, kończąc tym samym operację adresową zapisu. W odpowiedzi na to, aktualizowany jest odpowiednio Stan bloków MOB 150, RS 1138 oraz ROB 136.
Jeżeli nie wystąpią błędy lub niepoprawne rozgałęzienia, to bufor ROB 136 wycofuje operacje zapisu zarówno danych, jak i zapisu adresów. Bufor adresowy 2520 zapisu monitoruje wycofywanie, w celu oznakowywania par dane zapamiętywane/adres zapamiętania, j ako przyporządkowane do stanu (seniora) procesora. W tym przypadku blok MOB 150 wysyła operację zapamiętywania przez przekazanie kodu operacyjnego, wskaźnika bufora zapisu oraz młodszych 12 bitów adresowych do bloku DCU 148 oraz przez przekazanie wskaźnika bufora zapisowego do konwertera zapisowego 2515. Blok DCU 148 oraz konwerter zapisowy 2515 wykorzystują wskaźnik ID bufora pamięciowego, odpowiednio, do przeglądania adresów w buforze 2810 adresów fizycznych, i do zapamiętywania danych w buforze 2535 danych zapamiętywanych.
Bufor ΜΟΒ 150 kończy operację zapisu przez wpisanie bitu ważności do bufora adresowego 2520 zapisu i do stanowiska RS 138 i bufora ROB 136. Część danych przy operacji zapisu wydawana jest przez bufor R35 zapisu. Blok MIU 140 sygnalizuje do stanowiska RS 138, bufora ROB 136 i bufora adresowego 2520 zapisu odebranie danych i wpisanie ich do bufora R35 danych zapisowych. Bufor MOB 150 zatrzymuje informację zapisową dopóki·bufor ROB 136 nie wskaże, że operacja została wycofana i przyporządkowana operacji pamięci'. Równocześnie MOB 150 wysyła daną do bloku DCU 148, w celu przypisania danej zapisowej stanowi pamięci. Po zakończeniu operacji zapisu, bufor MOB 150 sygnalizuje do alokatora ALLOC 134 żądanie dealokacji odpowiedniej komórki MOB.
W potoku pamięci, operacje pamięciowe nie sązwykle przewidywalne, a zatem wymagają w niektórych przypadkach możliwości ich odłożenia. W celu zrealizowania odłożenia operacji pamięciowych, bufor adresowy 2520 zapisu wykorzystuje uproszczony mechanizm blokowania operacji pamięciowych adresu zapisu. Wszystkie operacje blokowania złożone sąrazem w pojedynczy blok. Operacje pozostają zblokowane, dopóki bufor ROB 136 nie wskaże, że mikrooperacja adresu zapamiętania jest najstarszą nie wycofaną operacją w procesorze. Po nadejściu tej wskazówki mikrooperacja adresowa zapisu jest wysyłana wraz z równoczesnym zapisem do bloku DCU 148.
W jednym z wykonań, blok ΜΟΒ 150 działa w fazie wykonania potoku w sposób przedstawiony na fig. 30. Wysyłanie ze stanowiska RS 138 odbywa się w fazach 33, 34 i 35. Wykonanie potoku pamięciowego odbywa się w czasie faz 41,42 i 43. Kiedy operacja wysyłana ze stanowiska RS 138 jest przekazywana bezpośrednio z MOB 150, to zajmuje równocześnie obydwie fazy. Bufor ładowania 2510 wymaga dodatkowego taktu (faza 40) do oceny gotowości komórek i uszeregowania wysyłanych załadowań.
Logika magistrali zewnętrznej (EBL): Podstawową funkcją logiki magistrali zewnętrznej (EBL) 106 jest zapewnienie sprzężenia między pamięciami podręcznymi pierwszego i drugiego poziomu, oraz zewnętrznym systemem komputerowym. Jak to pokazano na fig. 1, logika EBL 106 zapewnia sprzężenie z logiką 108, blokami DCU 148iIFU 122. Wjednym z wykonań wykorzystuje się pełny protokół żądania/potwierdzenia/zakończenia cyklu magistrali bazujący na kodach-żetonach, w celu sprzężenia logiki EBL z blokami wysyłającymi żądania. Cykl magistrali wewnętrznej zapewnia wykonanie tej funkcji w sposób efektywny. Przy użyciu tego protokołu
178 770 wewnętrznego, logika EBL 106 odbiera, priorytyzuje i akceptuje żądania kontaktu magistralowego z innych bloków funkcj onalnych. W odpowiedzi na to logika EBL 106 przetwarza żądania, zgodne z protokołem wewnętrznym, w żądania odpowiadające wymaganiom cykli magistrali zewnętrznej 158.
W jednym z wykonań, magistrala zewnętrzna 158 jest magistralą transakcyjną. Ogólnie biorąc, logika EBL 106 przetwarza żądania, odpowiedzi i transakcje. Żądania dotyczą potrzebnego określonego działania. Zwykle żądanie dotyczy działania, które wymaga adresu, typu żądania i etykiety identyfikacyjnej do późniejszego powołania się na to żądanie. Odpowiedź jest to działanie zaspokajające żądanie. Transakcja to wymiana informacji potrzebna do zakończenia zadania wyspecyfikowanego przez stronę żądającą. Transakcja w zasadzie odnosi się do całego procesu, od żądania do zakończenia odpowiedzi.
W j ednym z wykonań, logika EBL 106 zapewnia sprzężenie z procesorem 100 i magistralą zewnętrzną 158. Przy stosowaniu interfejsu, logika EBL kojarzy dwie różne szybkości zegara: szybkość zegara rdzenia dla procesora 100, i szybkość zegara magistralowego dla magistrali zewnętrznej 158. Zegar magistrali jest synchronizowany z szybkością z którąpojawiająsię zdarzenia zewnętrzne (na przykład szybkością z którą działa protokół magistrali zewnętrznej). Szybkość zegara rdzeniowego odnosi się do szybkości zegara, z którą pracuje procesor 100. Fig. 31 przedstawia logikę EBL 106, skonfigurowaną zgodnie z jednym z przykładów wykonania według niniejszego wynalazku. Ogólnie biorąc, logika EBL 106 obejmuje siedem głównych przedziałów funkcjonalnych: kolejkę 3160 magistrali zewnętrznej, logikę podglądającą 3120, logikę 3131 błędów, logikę 3140 sterowania protokołem, mikrosekwenser 3150 żądań oraz logikę łączącą 3110.
Kolejka 3160 żądań magistrali zewnętrznej przetwarza żądania transakcji z bloku DCU 1148 i IFU 122. Ta kolejka 3160 magistrali zewnętrznej przekazuje żądania do logiki BBL 108 wymagające obsługi L2 pamięci podręcznej 156 i przesyła dalej żądania na magistralę zewnętrzną 158, których pamięć podręczna 156 L2 nie może zadowalająco wykonać (na przykład przy nie trafieniu w poziom L2 pamięci podręcznej 156). Zatem kolejka 3160 żądań magistrali zewnętrznej działa w charakterze bloku porządkującego transakcję dla BBL 106 i BBL 108. Zewnętrzna logika podglądająca 3120 przetwarza zewnętrzne, własne i wewnętrzne żądania podglądu. Zewnętrzna logika podglądająca 3120 wydaje zgłoszenia podglądu do bloku DCU 148 logiki BBL 108 i do kolejki 3160 żądań magistralowych, na podstawie żądań podglądu z BBL 108 i z magistrali zewnętrznej 158. Zewnętrzna logika podglądowa 3120 dokonuje również podglądu własnych żądań na magistrali zewnętrznej, generowanych przez blok DCU 148 lub przy wykryciu kodu automodyfikacji. Zewnętrzna logika podglądowa 3120 wydaje rozkazy zmiany stanu pamięci do bloków IFU 122, DCU 148, BBL 108 i kolejki 3160 żądań magistrali zewnętrznej, na podstawie typu żądania zewnętrznego i wyników podglądu wewnętrznego.
Logika 3130 obsługi błędu generuje kod korekcyjny błędu dla danych wychodzących i parzystość dla wychodzących adresów i sygnałów na zaciskach żądań. Poza tym, logika 3130 sprawdza parzystość adresów wchodzących sygnałów z zacisków żądań i odpowiedzi, oraz wykonuje testy kodowania korekcyjnego błędu na końcówkach wejściowych danych. Logika 3130 obsługi błędu koryguje pojedyncze błędy bitowe na magistrali danych, i wykrywa błędy podwójne i błędy obcięcia. Po wykryciu błędu jest on zgłaszany na magistralę zewnętrzną 158. Mikrosekwenser 3150 żądań obsługuje niewyrównane dane, w celu zachowania kompatybilności wstecznej z istniejącymi interfejsami mikroprocesorowymi struktury INTEL^. Mikrosekwenser 3150 żądań sprawdza żądania z kolejki, w celu upewnienia się, że nie występująpołączenia w poprzek magistrali. Jeżeli zostanie wykryte przenikanie granic na szerokości magistrali, to mikrosekwenser zgłasza potrzebę wydzielenia tego pojedynczego żądania z kolejki żądań magistralowych, i podziału na dwa oddzielne żądania, i te dwa oddzielne żądania zgłasza kolejno w protokole logiki sterującej 3140. Jeżeli żądanie nie wykazuje zakłócenia wyrównania, to do logiki sterującej protokołu zgłaszane jest pojedyncze żądanie. Mikrosekwenser 3150 żądań generuje również sygnały uaktywnienia poprawnych bajtów, atrybutów nadających się do przechowywania w pamięci podręcznej oraz odraczania dekodowania rozkazów dla żądań magistrali zewnętrznie sekwencyjnej.
178 770
Logika sterująca 3140 protokołu sprzęga procesor z systemem zewnętrznym przez zaimplementowanie protokołu magistrali zewnętrznej. Ogólnie biorąc, logika sterująca protokołu przekazuje żądania dalej do magistrali zewnętrznej 158, informuje pozostałe bloki funkcjonalne o zewnętrznej aktywności żądaniowej, przekazuje żądane dane między BBL 108, DCU 148, pamięcią podręczną L2 156, i śledzi stan wszystkich występujących żądań. Logika łącznikowa 3110 zawiera zatrzaski zewnętrznej szyny I/O, komórki przeglądania granic według IEEE 1149.1 oraz logikę funkcjonalnej kontroli redundancyjnej.
Logika EBL 106 działa podczas trwania 11 faz. Dwie z tych faz odnoszą się do BBL 108 i pamięci podręcznej 156 poziomu L2, a dziewięć faz dotyczy operacji zewnętrznej. Fazy w logice EBL 106 nie odpowiadają charakterystycznym, czyli sekwencyjnym okresom zegara. Przeciwnie, fazy EBL odnoszą się do różnych etapów zakończeniowych, przez które może przechodzić transakcja. Konkretna transakcja może w ogóle nie być uruchamiana w danej fazie, lub może być usuwana ze środka potoku, lub nawet pozostawać w danym stanie przez wiele taktów, w których występują inne transakcje.
Figura 32a przedstawia schemat faz potoku dla transakcji odczytu EBL. W fazie 51 logika EBL 106 wysyła żądanie do bloku BBL 108, przetwarzania w pamięci podręcznej L2. W fazie 55, BBL 108 informuje EBL 106 czy żądanie to dało w efekcie trafienie lub nietrafienie w pamięci. Jeżeli żądanie dało w pamięci podręcznej L2 trafienie, to do DCU 148 i IFU 122 zwracane sądane. Jeżeli wystąpił przypadek nietrafienia w pamięci podręcznej L2, to wtedy w fazie 61 logika EBL 106 przekazuje żądanie wewnętrzne transakcji. Jeżeli procesor nie wysterował magistrali żądaniowej adresów, to logika EBL 108 w fazie 62 wykorzystuje dostęp nadrzędny do magistrali. Jeżeli procesor już zrealizował sterowanie magistrali, to wtedy logika EBL 106 przekazuje żądanie na magistralę zewnętrzną 158, bez przechodzenia przez fazę 62. Logika EBL może mieć za zadanie zapewnienie przekazywania żądań wewnętrznych w czasie j ednego lub kilku taktów zegara, aż do momentu, kiedy procesor rzeczywiście zadecyduje, gdzie, i czy, przekaże żądanie magistralowe.
Żądanie transmitowane jest do magistrali zewnętrznej 158 w fazie 63. Jeżeli w fazie 64 sygnalizowany jest błąd żądania magistralowego, to wtedy żądanie jest kasowane i wycofywane z fazy 61. W przeciwnym przypadku transakcj a trwa do fazy 65. W fazie 65, wyniki przenoszone są na magistralę zewnętrzną 158. Określa się właściciela przekazu danych. Protokół magistrali zewnętrznej umożliwia w razie potrzeby, zablokowanie etapu podglądu przez dowolnego użytkownika magistrali procesora. Po ustaleniu właściciela przekazu danych, odpowiadający użytkownik przekazuje odpowiedź w fazie 66, kiedy transmisja danych jest gotowa do rozpoczęcia.
Przy odbiorze normalnej odpowiedzi, dane zwracane są na magistralę w fazie 67, i przekazywane sądalej do logiki BBL 108/DVCU 148/IFU 122 w fazie 55. Jeżeli nadchodzi odpowiedź z żądaniem powtórzenia, to transakcja wraca do fazy 61 i jest powtarzana na magistrali 158. Jeżeli w fazie 66 odebrano błędną odpowiedź, to transakcja nie wychodzi poza fazę 66. Po odebraniu każdy blok sprawdzany jest na błędy ECC i w razie potrzeby korygowany w fazie 68. Po odebraniu wszystkich danych, do logiki BBL 108 przekazywany jest sygnał zakończenia transakcji, w celu oznaczenia końca tej transakcji w fazie 68.
Figura 32b przedstawia częściowy schemat faz dla operacji zapisu. Schemat faz zapisu jest podobny do schematu faz odczytu, z tym wyjątkiem, że w tym przypadku dane sąodbierane z logiki BBL 108, a nie przekazywane do niej. Również transakcji zapisu dotyczy odpowiedź z żądaniem rozdzielenia w fazie 66 odpowiedzi, której pierwsza część inicjalizuje transfer danych, a druga część kończy transakcję. Pierwsza część odpowiedzi może występować równocześnie z fazą 64 etapu błędu żądania. Sygnał zakończenia odpowiedzi nie może być przesłany do BBL 108, dopóki procesor nie przekaże wszystkich danych zapisowych do magistrali zewnętrznej 158, i nie otrzyma ostatecznej odpowiedzi od odpowiedniego użytkownika.
Logika magistrali pomocniczej (Backside Bus Logic - BBL): Logika magistrali pomocniczej (Backside Bus Logic - BBL) 108 zawarta jest w klasterze 110 magistrali, co pokazano na fig. 1. Podstawową funkcją BBL 108 jest zarządzanie wszystkimi żądaniami poziomu L2 pamięci podręcznej 156. Magistrala pomocnicza 160 sprzęga logikę BBL 108 z poziomem L2 pamięci
178 770 podręcznej 156. Żądania dotyczące pamięci podręcznej 156 L2 wychodzą od innych użytkowników zewnętrznej magistrali 158,zIFU 122,DCU 148 lub za pośrednictwem bezpośredniego dostępu, z klastera 120 pamięci. Ogólnie biorąc, BBL108 powoduje zrównoważenie różnych żądań obsługi w aspekcie ograniczonej szerokości pasma magistrali pomocniczej 160. Logika BBL 108, wraz z pamięcią podręczną 156 L2, zapewnia integralność dostępu i zapamiętywania pamięci podręcznej.
Logika BBL 108 działa w charakterze buforującego dane i trasującego bloku - użytkownika klastera 110 magistrali, kierującego i w miarę potrzeby buforującego napływające i wypływające pakiety danych zarówno z magistrali zewnętrznej 158, pamięci podręcznej 2830, jak i pamięci podręcznej 156 L2. W celu zachowania spójności pamięci podręcznej, BBL 108 współdziała z EBL 106, IFU 122, DCU 148 oraz pamięcią podręczną 156 L2. Logika BBL 108 utrzymuje hierarchię pamięci podręcznej 156 L2, tak, że BBL 108 steruje wszystkimi zmianami stanu w pamięci podręcznej 156 L2 i usuwa nieważne wiersze z pamięci podręcznej L2.
Ogólnie biorąc, logika BBL 108 działa, jak wydzielony podsystem pamięci podręcznej L2. Logika BBL 108 ma dostęp do pamięci podręcznej 156 L2 przez magistralę pomocniczą 160. W jednym z wykonań, magistrala pomocnicza 160 stanowi zbiór linii danych, adresowych i sterujących, pracujących synchronicznie z zegarem procesora 100. Żądania dostępu do pamięci podręcznej 156 L2 przetwarzane sąprzez sekwensery BBL Q i sekwenser podglądający BBL, w celu określenia, która z mikrooperacji L2 jest potrzebna do wykonania pożądanego działania. Niektóre żądania kończą się pojedynczym dostępem do pamięci podręcznej 156 L2 (na przykład żądanie IFU 122, trafne wybranie pamięci podręcznej L2). Jednak, inne żądania mogą być wykonywane w czasie trwania dwóch lub więcej dostępów do pamięci podręcznej 156 L2.
Inne żądania są wykonywane częściowo, i następnie przekazywane do innego bloku dla dalszego przetwarzania. Żądania dostępu do pamięci podręcznej L2 bloku IFU 122 lub klastera 120 pamięci, są zapisywane jako pierwsze w kolejce 3160 żądań dostępu do magistrali zewnętrznej, jeżeli żądanie wymaga przetwarzania BBL 108. Kolejka V żądań dostępu do magistrali zewnętrznej przekazuje bądź tłumaczy żądania dla BBL 108. Niezależnie od pamięci podręcznej 2830 danych L2, procesor przez dostęp, za pośrednictwem rejestru sterującego, wysyła żądania dostępu do pamięci podręcznej 156 L2. Bufory wewnętrzne BBL, po zapełnieniu wysyłają do sekwenserów BBL żądania przetwarzania danych. Zewnętrzna logika podglądająca 3130, znajdująca się wewnątrz EBL 106, przekazuje na magistralę zewnętrzną żądania podglądu dla pamięci podręcznej 156 L2 za pośrednictwem sekwensera BBL. Poza operatorem obróbki żądań do pamięci 156 L2, BBL 108 zawiera bufory i multipleksery do trasowania danych między pamięciąpodręcznąl56L2, EBL 106, IFU 122 iDCU 148. LogikaBBL 108 trasuje również przekazy danych między PIC 109 i DCU 148.
Figura 33 przedstawia działanie procesora BBL 108 w potoku procesora. Bloki DCU 148 lub IFU 122 w fazach 12 lub 42 generują żądanie do kolejki żądań magistrali zewnętrznej. Kolejka 3160 żądań magistrali zewnętrznej w fazie 51 przetwarza te żądania i przekazuj e do BBL 108. Przejścia BBL 108 do fazy 52 mogą się odbywać na jeden łub więcej sposobów i mogą trwać w ciągu kilku taktów zegara. W fazie 52, BBL 108 przekazuje żądanie do pamięci podręcznej 156 L2. Faza 52 ma czas trwania zawsze równy jednemu taktowi. W fazie 53, następuje dostęp do IFU 122, zajmując jeden lub dwa takty zegara, zależnie od konfiguracji podsystemu pamięci podręcznej.
W fazie 54 pamięć podręczna 156 L2 zwraca dane. Również w fazie 54 logika BBL 108 może przyporządkować inny dostęp do pamięci podręcznej 156 L2, umożliwiając zachodzenie na siebie faz 52 i 54. Jeżeli odczyt trafi w pamięć podręczną, to dane zostanązwrócone w czterech kolejnych taktach zegara. Natomiast, jeżeli odczyt w pamięci był nietrafny, to BBL 108 wydaje żądanie do EBL 106 pobrania danych za pośrednictwem magistrali zewnętrznej 158. Logika BBL 108 zwraca dane do bloku IFU 122 lub DCU 148 w fazie 55. W fazie 56, BBL 108 informuje IFU 122, DCU 148 oraz EBL 106, że ta konkretna transakcja została zakończona. Przy trafieniach pamięci podręcznej 156 L2, faza 56 wykonywana jest równocześnie ze zwracaniem ostatniej części
178 770 danych w fazie 55. W przypadku nie trafienia w IFU 122 transakcja nie jest zakończona, dopóki pobrane z zewnątrz dane nie zostaną wpisane do pamięci podręcznej 1156 L2.
Programowany kontroler przerwań (Programmable Interrupt Controller - PIC): W jednym z wykonań systemu komputerowego implementującym procesor według niniejszego wynalazku, można stosować wieloprocesorowy tryb zarządzania przerwaniami. Multiprocesorowy tryb zarządzania przerwaniami zapewnia rozprowadzanie do wszystkich procesorów, przerwań, zarówno statycznych, jak i dynamicznych. Ogólnie biorąc, multiprocesorowa implementacja zarządzania przerwaniami składa się z dwóch części: bloku lokalnego, który rezyduje wewnątrz procesora, oraz bloku I/O na zewnątrz procesora. Bloki I/O zbieraj ąprzerwania z różnych źródeł i przekazują te przerwania do bloków lokalnych procesorów za pośrednictwem specjalnej magistrali. W jednym z wykonań, blok lokalny jest programowanym kontrolerem przerwań (PIC) 109. Jak to pokazano na fig. 1, kontroler PIC 109 mieści się w klasterze 118 magistrali.
Przestrzeń rejestrowa kontrolera PIC taktowana jest jak mapowane pamięciowo urządzenia wejścia/wyjścia. Rdzeń PIC 109 jest analogowy dla implementacji bazującej na procesorze INTEL(R) 80486P54C™. Kontroler PIC 109 może bazować na przerwaniach zaimplementowanych w dowolnym systemie komputerowym. Kontroler PIC 109 odbiera przerwania z różnych źródeł i wysyła te przerwania do rdzenia procesora. W jednym z wykonań przerwania generowane są na podstawie przerwań lokalnych, przerwań szeregowych, przerwań interprocesorowych i samoczynnych przerwań czasowych. Kontroler PIC 109 akceptuje każdy rodzaj przerwania i następnie priorytyzuje te przerwania na podstawie konkretnej wartości wektora przerwań. Przerwania o najwyższym priorytecie są wysyłane do rdzenia procesora. Ogólnie biorąc, wysyłanie przerwań do procesora wymaga, aby kontroler PIC 109 poinformował bufor ROB 136 o nadejściu przerwania. Po odebraniu cyklu potwierdzenia przerwania, kontroler PIC 109 generuje wektor przerwania.
W jednym z wykonań, cykl potwierdzenia przerwania zaimplementowany jest w postaci mikrokodu. Kiedy przerwanie zostanie przetworzone za pomocą mikrokodu, pojawia się sygnał dla kontrolera PIC 109. Kontroler PIC 109 respektuje specjalne przerwania, na przykład przerwania bazujące na 8259™, znane jako przerwania zewnętrzne, przerwania niemaskowalne, inicjalizacja procesora, i przerwania trybu zarządzania systemem (System Management Modę - SMM).
System komputerowy: Na fig. 34 przedstawiono schemat wysokiego poziomu systemu komputerowego, skonfigurowanego zgodnie z jednym z wykonań według niniejszego wynalazku. System komputerowy 3400 zawiera przynajmniej jeden procesor, na przykład procesor 3410, do przetwarzania informacji. W korzystnym wykonaniu według niniejszego wynalazku procesor 3410 zawiera procesor 100 opisany powyżej. Procesor 3410 może zawierać, choć nie wyłącznie, mikroprocesory struktury INTEL(R), wytwarzane przez INTEL*R) Corporation, Santa Clara w stanie Kalifornia, w Stanach Zjednoczonych, wspólnego właściciela niniejszego wynalazku, PowerPC™, Alpha™ itp. Jak to opisano powyżej, procesor 3410 zawiera wewnętrzną pamięć podręczną pamięć podręczną 2830 danych, która zwykle nazywana jest pamięcią podręczną poziomu pierwszego (LI), do czasowego przechowywania danych i rozkazów na wspólnej strukturze układu scalonego.
Jak to przedstawiono na fig. 34, system komputerowy 3400, zbudowany na bazie procesora według niniejszego wynalazku zwykle zaopatrzony jest w magistralę 34 procesor - system lub w inne środki komunikacyjne do przekazywania informacji. W jednym z wykonań niniejszego wynalazku,1 magistrala 3405 procesor - system zawiera szyny adresowe, danych i sterujące. Pamięć podręczna 3412 poziomu drugiego (L2) dołączona jest do procesora 3410, w celu czasowego zapamiętywania danych i rozkazów do wykorzystania przez procesor 3410. W j ednym z wykonań, pamięć podręczna 3412 mieści się w tej samej obudowie układu scalonego, co procesor 3410.
W celu zapewnienia większej wydajności, system komputerowy 3400 może być zaopatrzony w procesor 3415, dołączony do magistrali 3405 procesor - system, służący przetwarzaniu informacji, wspólnie z procesorem 3410. Ten procesor 3415 może być procesorem równoległym, na przykład podobnym lub identycznym jak procesor 3410, lub może stanowić koprocesor matematyczny lub dowolny inny procesor sygnałów cyfrowych. Poza tym, system komputerowy
178 770
3400 może zawierać dodatkowe procesory dołączone do magistrali 3405 procesor - system, służące do zapewnienia zwiększenia wydajności, w niektórych zastosowaniach niezbędnego. System komputerowy 3400 zawiera również pamięć podręczną 3425 poziomu trzeciego (L3), służącą do tymczasowego przechowywania danych i rozkazów, do wykorzystania przez inne urządzenia w w systemie komputerowym (na przykład procesor 3410, procesor 3415 itp.) oraz kontroler 3420 pamięci podręcznej L3 do sterowania dostępem do tej pamięci podręcznej 3425 L3. Pamięć podręczna 3425 L3 i kontroler 3420 pamięci podręcznej L3 sąrównież dołączone do magistrali 3405 procesor - system. Poza tym, kontroler 3420 pamięci podręcznej L3 dołączony jest do magistrali 3417 pamięć - system.
Magistrala 3417 pamięć - system, lub inne środki komunikacji dołączone sądo procesora 3410, w celu zapewnienia procesorowi 3405 i innym urządzeniom systemu komputerowego 3400 dostępu do pamięci oraz podsystemów wejścia/wyjścia (I/O). W szczególności do magistrali 3417 pamięć system dołączony jest kontroler 3440 pamięci, służący do sterowania dostępem do pamięci o dostępie swobodnym (RAM) lub innych dynamicznych urządzeń zapamiętujących 3435 (zwykle zwanych pamięcią główną), do przechowywania informacji i rozkazów dla procesorów 3410 i 3415. Do magistrali 3417 pamięć - system dołączane jest również urządzenie 3450 pamięci masowej danych, na przykład dysk magnetyczny z napędem, służący do zapisywania informacji i rozkazów, oraz urządzenie wyświetlające 3410, na przykład monitor kineskopowy (CRT), ciekłokrystaliczny (LCD) itp., do wyświetlania informacji dla użytkownika komputera.
Do magistrali 3417 pamięć - system dołączony jest mostek 3435 wejścia/wyjścia (I/O) oraz magistrala I/O 3442, w celu zapewnienia drogi komunikacyjnej, czyli ścieżki dla urządzeń albo magistrali 3417 pamięć - system, albo magistrali I/O 3442, umożliwiającej dostęp czyli przekazywanie danych między urządzeniami na innej magistrali. W jednym z wykonań, mostek 3445 I/O kieruje strumień przekazywanych bajtów/słów/podwójnych słów danych z magistrali I/O 3442 do strumienia wierszowego w magistrali 3417 pamięć - system. Ogólnie biorąc, magistrala 3442 I/O przekazuje informacje między urządzeniami w systemie komputerowym 3400. Na przykład magistrala 3442 I/O może sprzęgać urządzenie wyświetlające 3455, na przykład monitor kineskopowy, wyświetlacz ciekłokrystaliczny i temu podobne, klawiaturę 3460 z klawiszami alfanumerycznymi i innymi, i temu podobne, celem przekazywania informacji i wyboru rozkazów dla innych urządzeń w systemie komputerowym (na przykład procesora 3410), i urządzenie 3465 sterowania procesorem. Ponadto do magistrali 3442 I/O może być również przyłączone urządzenie 3470 do sporządzania trwałych kopii, na przykład ploter lub drukarka, zapewniające wizualną prezentację obrazów komputerowych oraz urządzenie 3480 pamięci masowej, na przykład dysk magnetyczny z napędem, do magazynowania informacji i rozkazów.
Dla specjalistów jest oczywiste, że niektóre implementacje i wykorzystanie niniejszego wynalazku mogą nie wymagać, ani nie zawierać, wszystkich powyższych składników. Na przykład, w niektórych implementacjach, może być niekonieczny kontroler pamięci podręcznej L3 i pamięć podręczna L3. W takich implementacjach, procesory 3410, 3415 mogą rezydować bezpośrednio na magistrali 3417 pamięć - system. W innych implementacjach może nie być potrzebne urządzenie wyświetlające do obrazowania informacji. Poza tym, niektóre implementacje według niniejszego wynalazku mogą zawierać inne składniki. Na przykład system komputerowy 3400 może zawierać system rozpoznawczy pisma ręcznego, wykorzystywany jako urządzenie wejściowe powszechnego użytku.
W powyższym opisie, opisano wynalazek w odniesieniu do konkretnych jego przykładów wykonania. Jednakowoż jest oczywiste, że możliwe są jego różne modyfikacje i odmiany, bez wychodzenia poza najszerzej rozumianą ideę i zakres wynalazku, przedstawionych w załączonych zastrzeżeniach. Odpowiednio do tego, opis i rysunki uważa się za raczej ilustracyjne, a nie ograniczające.
Na figurze 35a przedstawiono strukturę hierarchiczną systemu operacyjnego UNIX(R), w systemie komputerowym 3400. Jak to pokazano na fig. 34, system komputerowy 3400 zawiera przynajmniej jeden procesor skonfigurowany zgodnie z niniejszym wynalazkiem, pamięć
178 770 główną oraz szereg urządzeń I/O. W jednym z wykonań, system komputerowy 3400 pracuje za pośrednictwem systemu operacyjnego UNIX™.
W celu sterowania urządzeń I/O zainstalowanych w systemie komputerowym 3400, w warstwie 3522 sterowników urządzeń zlokalizowany jest zespół sterowników urządzeniowych (3505, 3510 oraz 3520). Zwykle warstwa 3522 sterowników urządzeń odpowiada za bezpośrednie współdziałanie z systemem komputerowym 3400. Różne sterowniki urządzeń, na przykład w zestawie sterowników (3050, 3510 i 3520), sterują różnymi urządzeniami hardware'owymi. System operacyjny UNIX™, zaimplementowany w systemie komputerowym według mniejszego wynalazku może być zaopatrzony w pewną liczbę sterowników urządzeń, do sterowania pewną liczbą urządzeń hardware'owych.
Powyżej warstwy 3522 sterowników urządzeń, w strukturze hierarchicznej znajduje się warstwa 3525 interfejsu sterowników urządzeń i interfejsu rdzeniowego jądra systemu sterowników (DDI/DKI). Warstwa 3525 DDI/DKI zapewnia sprzężenie między warstwą rdzeniową 3535 i poszczególnymi sterownikami urządzeń w warstwie 3522 sterowników. Warstwa 3525 DDI/DKI wykazuje pewien zestaw cech charakterystycznych dla sterowników urządzeń w warstwie 3522 sterowników. Warstwa 3525 DDI/DKI mieści elementy szczególne dotyczące sterowników urządzeń z rdzenia UNIX™.
Warstwa rdzeniowa 3535 znajduje się w strukturze hierarchicznej powyżej warstwy 3525 DDI/DKI. Warstwa rdzeniowa 3525 zawiera rdzeń (jądro) UNIX™, który implementuje większość możliwości funkcjonalnych systemu operacyjnego. W warstwie rdzeniowej 3535 występuje kilka podsystemów systemu operacyjnego. W obecnych implementacjach UNIX™, w charakterze podsystemu operacyjnego zaimplementowane są: system zbiorów sieciowych (NetWork File System - NFS) 3540, system zarządzania pamięcią wirtualną (Virtual Memory Manager - VM) 3545 oraz mechanizm czasowy 3650. Warstwa rdzeniowa 3535 współdziała z systemem komputerowym 3400 przez generację wywołań do sterowników urządzeniowych (3505, 3510 i 3520) za pośrednictwem warstwy 3525 DDI/DKI.
Warstwa 3555 aplikacji użytkownika znajduje się powyżej warstwy rdzeniowej 3535, jak to pokazano na fig. 35a. Warstwa 3555 aplikacji użytkownika zawiera przynajmniej jeden program aplikacji użytkownika, na przykład programy aplikacyjne (3557,355913561). W warstwie aplikacyjnej 3555 użytkownika może rezydować dowolna liczba i typ programów aplikacyjnych. Programy aplikacyjne użytkownika (3557,3559 i 3561) współdziałają z systemem operacyjnym UNIX™ przez generację wywołań kierowanych do rdzenia UNIX™. Rdzeń UNIX™ przetwarza wywołania systemowe i zwraca wynik do aplikacyjnego programu użytkownika, który wysłał wywołanie systemowe. Działanie systemu operacyjnego, takiego jak UNIX™, jest znane.
Na figurze 35b przedstawiono hierarchiczną strukturę systemu operacyjnego Windows™ pracującego z systemem komputerowym 3400. Środowisko systemu operacyjnego Windows™ umożliwia realizację aplikacyjnych programów wielozadaniowych przy pracy w trybie rozszerzonym. Rozszerzony tryb Windows, poza cechami zawierającymi się w standardowym trybie Windows, pozwala na tworzenie maszyn wirtualnych (VM) wykorzystujące dyskowy system operacyjny (DOS). Tryb rozszerzony Windows wykorzystuje tryb wirtualny 8086 procesora według niniejszego wynalazku, w celu emulacji środowiska DOS dla operacji każdej z DOS VM. Pierwsza maszyna wirtualna zapewnia sam tryb Windows, wszystkie aplikacje Windows, TSR dla DOS (terminate stay resident) oraz sterowniki urządzeń ładowane przez Windows. Ta pierwsza maszyna wirtualna znana jest jako wirtualna maszyna systemowa (system VM).
W trybie rozszerzonym Windows podtrzymywany jest system stronicowania pamięci, który umożliwia dostęp do pamięci systemowej, w celu przechowywania pewnej liczby maszyn DOS VM i system VM. Przy zastosowaniu dodatkowej pamięci systemowej, tryb rozszerzony Windows utrzymuje równocześnie maszyny DOS VM. Maszyna VM kształtowana jest w trybie zabezpieczonym; jednakowoż maszyna VM składa się zarówno z kodów trybu rzeczywistego, jak i kodów trybu protekcyjnego. Windows wytwarza wirtualne maszyny DOS z użyciem kombinacji środków sprzętowych, procesora i środków programowych systemu operacyjnego.
178 770
Jak to przedstawiono na fig. 35b, oprogramowanie systemu Windows utrzymuje maszynę systemową VM 3562 oraz pewną liczbę maszyn DOS VM, 1-n. Maszyna systemowa VM i maszyny DOS VM dołączone sądo operatora 3568 maszyn wirtualnych Windows. Maszyny, systemowa VM i DOS VM, są również dołączone do pewnej liczby wirtualnych sterowników urządzeń (VxDs) 3570, 3575, 3580. Oprogramowanie systemowe Windows może zawierać pewną liczbę i pewne typy sterowników VxD wspierających system komputerowy 3400. Zwykle sterownik VsD daje możliwość serializacji dostępu do części układowej, przez zastosowanie bufora między sterownikami systemowymi i urządzeniami hardware'owymi, znajdującymi się w systemie komputerowym 3400. Operator 3568 maszyny wirtualnej Windows stanowi warstwę oprogramowania systemowego Windows do koordynacji działania każdej z maszyn VM, i urządzeń VxDs, aktywnych w systemie komputerowym 3400. Operator 3568 maszyny wirtualnej Windows składa się z kilku części. Ogólnie mówiąc, operator 3568 maszyny wirtualnej Windows szereguje zadania między wszystkimi maszynami DOS VM i systemową maszyną VM, za pośrednictwem programu Windows Process Scheduler. Operator 3568 maszyny wirtualnej Windows może sprzęgać się z dowolnym zainstalowanym urządzeniem VxD. Poza tym, operator 3568 maszyny wirtualnej Windows zapewnia emulację I/O, zarządzanie pamięcią wirtualną, ogólne zarządzania przerwaniami i obsługę zdarzeń. Działanie takiego systemu operacyjnego jak system operacyjny Windows™ jest znane.
178 770
Fig. 2
178 770
&
Λ .ί £
178 770
Zewnętrzny inter- _ .
fejs pobraniowy Znaczniki prez EBL 106/BBL 108 dykcyjne z BTB 124
Fig. 4
178 770
«η ώ S
178 770
BTBLIP
Fig. 6
178 770
Fig. 7a
178 770
Fig. 7b
178 770
Fig. 7c
178 770
178 770
126
mikrooperage
Fig. 8
178 770
os _ώ E
178 770
178 770
Fig. lla
178 770
.2?
S
178 770
Fig. 12
178 770
Fig. 13
178 770
Fig. 14
178 770
178 770
Fig. 16
178 770
<5
Μ) £
178 770
178 770
178 770
178 770
sum. 229, 522, pdst - 36 t_______ RS 138 POPRAW- NOŚĆ SRC1/SRC2 PSRC1/ WEJŚCIA Kod oper. DANE V PSRC2 PDST
RSO RSX (ł±o) 229 1 XXX 36 Bufor RS i 1410
522 1 35
Fig. 19a
RAT 132
WSKAŹNIK ROB RRFV
ΕΑΧ 36 0 Tablica
ΕΒΧ 35 0 RAT
ECX 1220
Fig. 19b
Bufor wyników 1610
DANE WYNIKOWE
ΕΑΧ 229 Zespół rejestrów
ΕΒΧ 312 rzeczywistych
———--—-- 137
ECX
Fig. 19c
178 770
iO to (£>
CO ‘θ’
Έ ο
178 770 wynik « 751, pdst- 36
Fig. 21b sub ΕΑΧ, ΕΒΧ, ECX ___L_
RAT 132
Wskaźnik ROB RRFV
ΕΛΧ 36 0
ΕΒΧ 35 0 1220
ECX 57 0
Fig. 21a
RS 138 POPRAWNOŚĆ PSRC1/ WEJŚCIA KOD OPER. SRC1/SRC2 V PSRC2 PDST
RSO RSX 1410
1 (xxx_»,751) ^1) 36 57
522 1 35
1610
178 770
RS 138 WEIŚCIE PSRC1/ WAŻNE KOD OPER SRC1/SRC2 V PSRC2 PDST
RSO RSX 1410
1 odejm 751 1 36 57
522 1 35
Fig. 22a
RAT 132
Wskaźnik ROB rrev
ΕΑΧ 36 0-ol
ΕΒΧ 35 O-ol
ECX 57 0 1220
Fig. 22b
ROB 136
DANE WYNIKOWE v LDST
RE 19
RE35
RE36
RE57
DANE
1610
WYNIKOWE
ΕΑΧ (229-»-751)
ΕΒΧ ( 312-0-522)
ECK
137
Fig. 22c
178 770
Fig. 23
178 770
178 770
178 770
178 770
178 770
Fig.26a
Fig. 26b 32 33
83
Fig.26c 41 42 43
Fig. 26d 32 33 34 35
83
178 770
178 770
czego 118
178 770
178 770
178 770
158
Fig. 31
178 770
178 770
•3 łs
Λ
178 770
178 770
178 770
3555 3557
3559
3561
3552 --------------------------------------------------—
3535
Rdzeń UNIX
NFS 3540 VM 3545 Gen. przerw. 3550
3525
DDI/DKI
3522 3505 3510
3520
3400
Fig. 35a
178 770
178 770
100
Fig. 1
Departament Wydawnictw UP RP. Nakład 70 egz. Cena 6,00 zł.

Claims (15)

  1. Zastrzeżenia patentowe
    1. Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym, znamienny tym, że w kolejnych etapach dekoduje się zbiór rozkazów w części sekwencyjnej procesora i tworzy zbiór operacji, w tym samym czasie generuje się zbiór operacji dla ośrodka niesekwencyjnego w procesorze, przy czym w etapie generowania zapisuje się zbiór operacji do stanowiska rezerwowania i jednocześnie odczytuje się dane źródłowe z bufora porządkowania wtórnego, niezależnego od stanowiska rezerwowania, wykorzystywane przy wykonywaniu zbioru operacji tylko gdy zostaną określone jako gotowe w tablicy rejestrów umieszczonej poza buforem porządkowania wtórnego w pierwszej, sekwencyjnej części procesora, wykonuje się zbiór operacji, a przynajmniej jedną operację ze zbioru wykonuje się niesekwencyjnie, przy czym w etapie wykonania w kolejnych krokach szereguje się i wysyła indywidualną operację gdy dane potrzebne do wykonania sągotowe, wykonuje się każdąz indywidualnych operacji oraz dokonuje się zapisu zwrotnego wyników wykonania, przy czym podczas zapisu zwrotnego w kolejnych krokach kojarzy się i zapisuje dane wynikowe bezpośrednio do stanowiska rezerwowania do wykorzystania przez przynajmniej jedną indywidualną operację w stanowisku rezerwowania podczas wykonywania, i zapisuje się wyniki danych do bufora porządkowania wtórnego, przy czym dodatkowo kroki szeregowania, wysyłania, wykonania i zapisu zwrotnego wykonuje się w kolejnych fazach potokowych, oraz przyporządkowuje się wyniki wykonania zbioru operacji stanowi strukturalnemu, w porządku generowania operacji dla ośrodka niesekwencyjnego w procesorze.
  2. 2. Sposób według zastrz. 1, znamienny tym, że w etapie dekodowania, w dalszych kolejnych etapach przegląda się pamięć podręczną rozkazów i pobiera zbiór rozkazów, dekoduje się długość rozkazu, rotuje się zbiór rozkazów oraz dekoduje się instrukcje zbioru w dekoderze rozkazowym i tworzy zbiór operacji, przemianowuje się rejestry, alokuje zasoby i przesyła części każdego zbioru operacji do stanowiska rezerwowania, przy czym etapy przeglądu pamięci podręcznej rozkazów, dekodowania długości rozkazów, ratowania zbioru instrukcji, dekodowania zbioru instrukcji i przemiano wy wania rejestrów wykonuje się w kolejnych fazach potokowych dla wygenerowania zbioru rozkazów.
  3. 3. Sposób według zastrz. 2, znamienny tym, że w etapie dekodowania długości rozkazów znakuje się zbiór rozkazów dla zidentyfikowania każdego z tych rozkazów.
  4. 4. Sposób według zastrz. 2, znamienny tym, że zbiór rozkazów rotuje się na podstawie wskaźnika pobrania rozkazu i liczby instrukcji przetworzonych przez dekoder rozkazowy.
  5. 5. Sposób według zastrz. 2, znamienny tym, że dekoduje się zbiór rozkazów w dwóch fazach potokowych.
  6. 6. Sposób według zastrz. 2, znamienny tym, że przemianowanie rejestrów, alokację zasobów i przesyłanie każdego z rozkazów zbioru rozkazów do stanowiska rezerwowania wykonuje się w jednej fazie potoku.
  7. 7. Sposób według zastrz. 1, znamienny tym, że wycofywanie wykonuje się w dwóch fazach potokowych.
  8. 8. Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym, znamienny tym, że w kolejnych etapach sekwencyjnie dekoduje się zbiór rozkazów i tworzy zbiór operacji, a podczas dekodowania w kolejnych krokach utrzymuje się wskazanie gotowości danych źródłowych dla zbioru operacji w obszarze pamięci poza buforem porządkowania wtórnego w sekwencyjnej części procesora i w tym samym czasie zapisuje się zbiór operacji do stanowiska rezerowania w ośrodku niesekwencyjnym w procesorze oraz odczytuje się dane wykorzystywane przy wykonywaniu zbioru operacji z bufora porządkowania wtórnego, jednocześnie z zapisem zbioru
    178 770 operacji do stanowiska rezerwowania, tylko gdy dane zostaną określone jako gotowe w obszarze pamięci, wykonuje się zbiór operacji, a przynajmniej jedną operację ze zbioru wykonuje się niesekwencyjnie, przy czym podczas wykonania w kolejnych krokach szereguje się i wysyła indywidualną operację gdy dane potrzebne do wykonania każdej z indywidualnych operacji są gotowe, wykonuje się każdą indywidualną operację oraz dokonuje zapisu zwrotnego wyników wykonania z uwzględnieniem skojarzonego zapisu przynajmniej jednego wyniku do stanowiska rezerwowania, przy czym kroki szeregowania, wysyłania, wykonania i zapisu zwrotnego wykonuje się w kolejnych fazach potokowych, oraz przyporządkowuje się wyniki wykonania zbioru operacji stanowi strukturalnemu, w porządku generowania zbioru operacji.
  9. 9. Sposób według zastrz. 8, znamienny tym, że podczas dekodowania, w dalszych etapach przegląda się pamięć podręczną rozkazów i pobiera zbiór rozkazów, dekoduje się długość rozkazu, rotuje się zbiór rozkazów oraz dekoduje się instrukcje zbioru w dekoderze rozkazowym i tworzy zbiór operacji, przemianowuje się rejestry, alokuje zasoby i przesyła część każdego zbioru operacji do stanowiska rezerwowania, przy czym etapy przeglądu pamięci podręcznej rozkazów, dekodowania długości rozkazów, ratowania zbioru instrukcji, dekodowania zbioru instrukcji i przemianowywania rejestrów wykonuje się w kolejnych fazach potokowych dla wygenerowania zbioru rozkazów.
  10. 10. Sposób według zastrz. 9, znamienny tym, że w etapie dekodowania długości rozkazów znakuje się zbiór rozkazów dla zidentyfikowania każdego z tych rozkazów.
  11. 11. Sposób według zastrz. 9, znamienny tym, że etap rotowania wykonuje się ria podstawie wskaźnika pobrania rozkazu i liczby instrukcji obrobionych przez dekoder rozkazowy.
  12. 12. Sposób według zastrz. 9, znamienny tym, że etap dekodowania zbioru rozkazów wykonuje się w dwóch fazach potokowych.
  13. 13. Sposób według zastrz. 9, znamienny tym, że etap przemianowywania rejestrów, alokacji zasobów i przesyłania każdego z rozkazów zbioru rozkazów do stanowiska rezerwowania wykonuje się w jednej fazie potoku.
  14. 14. Sposób według zastrz. 8, znamienny tym, że etap wycofywania wykonuje się w dwóch fazach potokowych.
  15. 15. Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym, znamienny tym, że w kolejnych etapach sekwencyjnie dekoduje się zbiór rozkazów i tworzy zbiór mikrooperacji, w tym samym czasie zapisuje się zbiór operacji do stanowiska rezerwowania, jednocześnie z zapisem zbioru mikrooperacji do stanowiska rezerwowania odczytuje się dane źródłowe z bufora porządkowania wtórnego, tylko gdy zostaną określone jako gotowe w tablicy rejestrów umieszczonej poza buforem porządkowania wtórnego, wykonuje się zbiór mikrooperacji, przy czym przynajmniej jedną ze zbioru mikrooperacji wykonuje się niesekwencyjnie, dokonuje się zapisu zwrotnego wyników wykonania zbioru operacji, przy czym kojarzy się i zapisuje przynajmniej jeden wynik do stanowiska rezerwowania, a wyniki wykonania zbioru operacji przyporządkowuje się ośrodkowi wykonania niesekwencyjnego.
    * * *
PL95307460A 1994-03-01 1995-02-27 Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym PL178770B1 (pl)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US20502194A 1994-03-01 1994-03-01

Publications (2)

Publication Number Publication Date
PL307460A1 PL307460A1 (en) 1995-09-04
PL178770B1 true PL178770B1 (pl) 2000-06-30

Family

ID=22760461

Family Applications (2)

Application Number Title Priority Date Filing Date
PL95307460A PL178770B1 (pl) 1994-03-01 1995-02-27 Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym
PL95336707A PL179684B1 (pl) 1994-03-01 1995-02-27 Sposób wykonywania zbioru rozkazów w systemie komputerowym PL PL

Family Applications After (1)

Application Number Title Priority Date Filing Date
PL95336707A PL179684B1 (pl) 1994-03-01 1995-02-27 Sposób wykonywania zbioru rozkazów w systemie komputerowym PL PL

Country Status (4)

Country Link
US (1) US5721855A (pl)
GB (1) GB2287111B (pl)
PL (2) PL178770B1 (pl)
SG (1) SG47981A1 (pl)

Families Citing this family (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835949A (en) * 1994-12-27 1998-11-10 National Semiconductor Corporation Method of identifying and self-modifying code
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5864707A (en) 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
DE69607492T2 (de) * 1996-07-16 2001-01-18 Advanced Micro Devices, Inc. Rücksprungstapelspeicherstruktur und superskalenmikroprozessor mit derselben
US6212601B1 (en) * 1996-08-30 2001-04-03 Texas Instruments Incorporated Microprocessor system with block move circuit disposed between cache circuits
US5854928A (en) * 1996-10-10 1998-12-29 Hewlett-Packard Company Use of run-time code generation to create speculation recovery code in a computer system
US5875472A (en) * 1997-01-29 1999-02-23 Unisys Corporation Address conflict detection system employing address indirection for use in a high-speed multi-processor system
US5996063A (en) * 1997-03-03 1999-11-30 International Business Machines Corporation Management of both renamed and architected registers in a superscalar computer system
US5887185A (en) * 1997-03-19 1999-03-23 Advanced Micro Devices, Inc. Interface for coupling a floating point unit to a reorder buffer
US6173371B1 (en) * 1997-04-14 2001-01-09 International Business Machines Corporation Demand-based issuance of cache operations to a processor bus
US5974535A (en) * 1997-05-09 1999-10-26 International Business Machines Corporation Method and system in data processing system of permitting concurrent processing of instructions of a particular type
US6269426B1 (en) * 1997-06-24 2001-07-31 Sun Microsystems, Inc. Method for operating a non-blocking hierarchical cache throttle
US6289437B1 (en) * 1997-08-27 2001-09-11 International Business Machines Corporation Data processing system and method for implementing an efficient out-of-order issue mechanism
US6073228A (en) * 1997-09-18 2000-06-06 Lucent Technologies Inc. Modulo address generator for generating an updated address
US6185676B1 (en) * 1997-09-30 2001-02-06 Intel Corporation Method and apparatus for performing early branch prediction in a microprocessor
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
US6279102B1 (en) * 1997-12-31 2001-08-21 Intel Corporation Method and apparatus employing a single table for renaming more than one class of register
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
US6192464B1 (en) * 1997-12-31 2001-02-20 Intel Corporation Method and apparatus for decoding one or more instructions after renaming destination registers
US6085312A (en) * 1998-03-31 2000-07-04 Intel Corporation Method and apparatus for handling imprecise exceptions
US6163829A (en) * 1998-04-17 2000-12-19 Intelect Systems Corporation DSP interrupt control for handling multiple interrupts
US6678801B1 (en) 1998-04-17 2004-01-13 Terraforce Technologies Corp. DSP with distributed RAM structure
US6393530B1 (en) 1998-04-17 2002-05-21 Intelect Communications, Inc. Paging method for DSP
US6456628B1 (en) 1998-04-17 2002-09-24 Intelect Communications, Inc. DSP intercommunication network
US6292815B1 (en) 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6266769B1 (en) 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
US6263426B1 (en) 1998-04-30 2001-07-17 Intel Corporation Conversion from packed floating point data to packed 8-bit integer data in different architectural registers
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6247116B1 (en) 1998-04-30 2001-06-12 Intel Corporation Conversion from packed floating point data to packed 16-bit integer data in different architectural registers
US5995122A (en) * 1998-04-30 1999-11-30 Intel Corporation Method and apparatus for parallel conversion of color values from a single precision floating point format to an integer format
US6519682B2 (en) * 1998-12-04 2003-02-11 Stmicroelectronics, Inc. Pipelined non-blocking level two cache system with inherent transaction collision-avoidance
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6266767B1 (en) * 1999-04-22 2001-07-24 International Business Machines Corporation Apparatus and method for facilitating out-of-order execution of load instructions
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6970996B1 (en) * 2000-01-04 2005-11-29 National Semiconductor Corporation Operand queue for use in a floating point unit to reduce read-after-write latency and method of operation
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6622241B1 (en) * 2000-02-18 2003-09-16 Hewlett-Packard Development Company, L.P. Method and apparatus for reducing branch prediction table pollution
US7100028B2 (en) * 2000-08-09 2006-08-29 Advanced Micro Devices, Inc. Multiple entry points for system call instructions
US6804815B1 (en) * 2000-09-18 2004-10-12 Cisco Technology, Inc. Sequence control mechanism for enabling out of order context processing
WO2002027482A2 (en) * 2000-09-28 2002-04-04 Intel Corporation Multiple sources for instruction decode
US6823447B2 (en) * 2001-03-01 2004-11-23 International Business Machines Corporation Software hint to improve the branch target prediction accuracy
US6725364B1 (en) 2001-03-08 2004-04-20 Xilinx, Inc. Configurable processor system
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US6772317B2 (en) * 2001-05-17 2004-08-03 Intel Corporation Method and apparatus for optimizing load memory accesses
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7082464B2 (en) 2001-07-06 2006-07-25 Juniper Networks, Inc. Network management system
US7068603B2 (en) * 2001-07-06 2006-06-27 Juniper Networks, Inc. Cross-bar switch
US7149892B2 (en) * 2001-07-06 2006-12-12 Juniper Networks, Inc. Secure sockets layer proxy architecture
US7363353B2 (en) * 2001-07-06 2008-04-22 Juniper Networks, Inc. Content service aggregation device for a data center
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US7228412B2 (en) * 2001-07-06 2007-06-05 Juniper Networks, Inc. Bufferless secure sockets layer architecture
US7908472B2 (en) * 2001-07-06 2011-03-15 Juniper Networks, Inc. Secure sockets layer cut through architecture
US7305492B2 (en) * 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7853781B2 (en) * 2001-07-06 2010-12-14 Juniper Networks, Inc. Load balancing secure sockets layer accelerator
US7200662B2 (en) * 2001-07-06 2007-04-03 Juniper Networks, Inc. Integrated rule network management system
US6968446B1 (en) * 2001-08-09 2005-11-22 Advanced Micro Devices, Inc. Flags handling for system call instructions
US7024542B2 (en) * 2002-01-02 2006-04-04 Intel Corporation System and method of reducing the number of copies from alias registers to real registers in the commitment of instructions
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7062636B2 (en) * 2002-09-19 2006-06-13 Intel Corporation Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7185186B2 (en) * 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US7433953B1 (en) 2003-04-24 2008-10-07 Cisco Technology, Inc. Methods and apparatus for reducing arbitration delay in channelized systems by use of additional scheduling hierarchy
US7134000B2 (en) * 2003-05-21 2006-11-07 Analog Devices, Inc. Methods and apparatus for instruction alignment including current instruction pointer logic responsive to instruction length information
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7574341B1 (en) * 2003-11-12 2009-08-11 Hewlett-Packard Development Company, L.P. Speculative expectation based event verification
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US8281079B2 (en) * 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
US7409503B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Register file systems and methods for employing speculative fills
US7409500B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for employing speculative fills
US7376794B2 (en) * 2004-01-13 2008-05-20 Hewlett-Packard Development Company, L.P. Coherent signal in a multi-processor system
US7406565B2 (en) * 2004-01-13 2008-07-29 Hewlett-Packard Development Company, L.P. Multi-processor systems and methods for backup for non-coherent speculative fills
US7383409B2 (en) * 2004-01-13 2008-06-03 Hewlett-Packard Development Company, L.P. Cache systems and methods for employing speculative fills
US7360069B2 (en) * 2004-01-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for executing across at least one memory barrier employing speculative fills
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
US7340565B2 (en) * 2004-01-13 2008-03-04 Hewlett-Packard Development Company, L.P. Source request arbitration
US7380107B2 (en) * 2004-01-13 2008-05-27 Hewlett-Packard Development Company, L.P. Multi-processor system utilizing concurrent speculative source request and system source request in response to cache miss
US7856534B2 (en) 2004-01-15 2010-12-21 Hewlett-Packard Development Company, L.P. Transaction references for requests in a multi-processor network
JP4701611B2 (ja) * 2004-01-15 2011-06-15 株式会社日立製作所 動的変換方式のエミュレータ向けメモリ管理方法
US20060149931A1 (en) * 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US7721054B2 (en) * 2005-01-18 2010-05-18 Texas Instruments Incorporated Speculative data loading using circular addressing or simulated circular addressing
US7409535B2 (en) * 2005-04-20 2008-08-05 International Business Machines Corporation Branch target prediction for multi-target branches by identifying a repeated pattern
US7797564B2 (en) * 2005-05-24 2010-09-14 International Business Machines Corporation Method, apparatus, and computer program product for dynamically modifying operating parameters of the system based on the current usage of a processor core's specialized processing units
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US7613908B2 (en) * 2007-02-23 2009-11-03 Intel Corporation Selective hardware lock disabling
US8468310B2 (en) * 2007-07-31 2013-06-18 Vmware, Inc. Method and system for tracking data correspondences
US8284664B1 (en) 2007-09-28 2012-10-09 Juniper Networks, Inc. Redirecting data units to service modules based on service tags and a redirection table
US7707398B2 (en) * 2007-11-13 2010-04-27 Applied Micro Circuits Corporation System and method for speculative global history prediction updating
US8423968B2 (en) * 2008-02-11 2013-04-16 International Business Machines Corporation Template-based vertical microcode instruction trace generation
US8726248B2 (en) * 2008-06-12 2014-05-13 Oracle America, Inc. Method and apparatus for enregistering memory locations
US8782374B2 (en) * 2008-12-02 2014-07-15 Intel Corporation Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor
US9122487B2 (en) * 2009-06-23 2015-09-01 Oracle America, Inc. System and method for balancing instruction loads between multiple execution units using assignment history
US8669991B2 (en) * 2009-10-16 2014-03-11 Nvidia Corporation Method macro expander
US9135005B2 (en) * 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8645669B2 (en) * 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9015423B2 (en) 2012-06-14 2015-04-21 International Business Machines Corporation Reducing store operation busy times
US9075727B2 (en) 2012-06-14 2015-07-07 International Business Machines Corporation Reducing penalties for cache accessing operations
US9229791B1 (en) * 2012-08-24 2016-01-05 Qlogic, Corporation System and method for high speed multiple buffer allocation
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US9652011B2 (en) 2012-10-15 2017-05-16 Infineon Technologies Ag Systems and methods for storing information
US8862949B2 (en) * 2012-10-15 2014-10-14 Infineon Technologies Ag Systems and methods for storing information
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9632976B2 (en) 2012-12-07 2017-04-25 Nvidia Corporation Lazy runahead operation for a microprocessor
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US9258234B1 (en) 2012-12-28 2016-02-09 Juniper Networks, Inc. Dynamically adjusting liveliness detection intervals for periodic network communications
US9823931B2 (en) 2012-12-28 2017-11-21 Nvidia Corporation Queued instruction re-dispatch after runahead
US8953460B1 (en) 2012-12-31 2015-02-10 Juniper Networks, Inc. Network liveliness detection using session-external communications
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9323536B2 (en) * 2013-05-02 2016-04-26 Arm Limited Identification of missing call and return instructions for management of a return address stack
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9513924B2 (en) * 2013-06-28 2016-12-06 Globalfoundries Inc. Predictor data structure for use in pipelined processing
US9535744B2 (en) * 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
US9769017B1 (en) 2014-09-26 2017-09-19 Juniper Networks, Inc. Impending control plane disruption indication using forwarding plane liveliness detection protocols
US10372458B2 (en) * 2015-04-01 2019-08-06 Huawei Technologies Co., Ltd Method and apparatus for a self-clocked, event triggered superscalar processor
US9942272B2 (en) 2015-06-05 2018-04-10 Microsoft Technology Licensing, Llc. Handling out of order events
US9880769B2 (en) 2015-06-05 2018-01-30 Microsoft Technology Licensing, Llc. Streaming joins in constrained memory environments
US10148719B2 (en) 2015-06-05 2018-12-04 Microsoft Technology Licensing, Llc. Using anchors for reliable stream processing
US10868741B2 (en) 2015-06-05 2020-12-15 Microsoft Technology Licensing, Llc Anchor shortening across streaming nodes
US10374936B2 (en) 2015-12-30 2019-08-06 Juniper Networks, Inc. Reducing false alarms when using network keep-alive messages
US10397085B1 (en) 2016-06-30 2019-08-27 Juniper Networks, Inc. Offloading heartbeat responses message processing to a kernel of a network device
US10216516B2 (en) * 2016-09-30 2019-02-26 Intel Corporation Fused adjacent memory stores
US11106466B2 (en) 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
US11750441B1 (en) 2018-09-07 2023-09-05 Juniper Networks, Inc. Propagating node failure errors to TCP sockets
US11635965B2 (en) 2018-10-31 2023-04-25 Intel Corporation Apparatuses and methods for speculative execution side channel mitigation
US11029957B1 (en) 2020-03-27 2021-06-08 Intel Corporation Apparatuses, methods, and systems for instructions to compartmentalize code
US20210389979A1 (en) * 2020-06-15 2021-12-16 Andes Technology Corporation Microprocessor with functional unit having an execution queue with priority scheduling
US20220206793A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor
US11977890B2 (en) * 2021-12-30 2024-05-07 Advanced Micro Devices, Inc. Stateful microcode branching
CN114675890B (zh) * 2022-05-26 2022-09-23 飞腾信息技术有限公司 一种指令执行方法、装置、设备及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
US4773041A (en) * 1986-06-02 1988-09-20 Unisys Corporation System for executing a sequence of operation codes with some codes being executed out of order in a pipeline parallel processor
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
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
US5280615A (en) * 1990-03-23 1994-01-18 Unisys Corporation Out of order job processing method and apparatus
JP2779044B2 (ja) * 1990-06-05 1998-07-23 株式会社日立製作所 バッファ記憶制御方法
GB2251320A (en) * 1990-12-20 1992-07-01 Motorola Ltd Parallel processor
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
JPH06110688A (ja) * 1991-06-13 1994-04-22 Internatl Business Mach Corp <Ibm> 複数の順序外れ命令を並行処理するためのコンピュータ・システム
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5323489A (en) * 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table
US5471633A (en) * 1993-09-30 1995-11-28 Intel Corporation Idiom recognizer within a register alias table
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5463745A (en) * 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5553256A (en) * 1994-02-28 1996-09-03 Intel Corporation Apparatus for pipeline streamlining where resources are immediate or certainly retired

Also Published As

Publication number Publication date
GB2287111B (en) 1998-08-05
US5721855A (en) 1998-02-24
SG47981A1 (en) 1998-04-17
GB2287111A (en) 1995-09-06
PL179684B1 (pl) 2000-10-31
GB9500762D0 (en) 1995-03-08
PL307460A1 (en) 1995-09-04

Similar Documents

Publication Publication Date Title
PL178770B1 (pl) Sposób potokowego wykonywania zbioru rozkazów w systemie komputerowym
JP7046098B2 (ja) リネーム・レジスタ復旧に基づくレジスタ・コンテキスト復元
CN107851020B (zh) 用于指令存储器效率的设备和处理架构
US5890008A (en) Method for dynamically reconfiguring a processor
US10592251B2 (en) Register restoration using transactional memory register snapshots
US5463745A (en) Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
KR100425805B1 (ko) 고성능투기적실행프로세서를위한구조및방법
US10740108B2 (en) Management of store queue based on restoration operation
EP0649085B1 (en) Microprocessor pipe control and register translation
US5889982A (en) Method and apparatus for generating event handler vectors based on both operating mode and event type
US7047394B1 (en) Computer for execution of RISC and CISC instruction sets
US7600221B1 (en) Methods and apparatus of an architecture supporting execution of instructions in parallel
US7055021B2 (en) Out-of-order processor that reduces mis-speculation using a replay scoreboard
US6240502B1 (en) Apparatus for dynamically reconfiguring a processor
US10564977B2 (en) Selective register allocation
EP1145110B1 (en) Circuit and method for tagging and invalidating speculatively executed instructions
US11010192B2 (en) Register restoration using recovery buffers
US5951670A (en) Segment register renaming in an out of order processor
US10572265B2 (en) Selecting register restoration or register reloading
US10489382B2 (en) Register restoration invalidation based on a context switch
US10540184B2 (en) Coalescing store instructions for restoration
US10649785B2 (en) Tracking changes to memory via check and recovery
US20060248319A1 (en) Validating branch resolution to avoid mis-steering instruction fetch
US20180300149A1 (en) Spill/reload multiple instructions
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution

Legal Events

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

Effective date: 20110227