PL178832B1 - Sposób utrzymywania spójności pamięci w systemie komputerowym - Google Patents

Sposób utrzymywania spójności pamięci w systemie komputerowym

Info

Publication number
PL178832B1
PL178832B1 PL95307473A PL30747395A PL178832B1 PL 178832 B1 PL178832 B1 PL 178832B1 PL 95307473 A PL95307473 A PL 95307473A PL 30747395 A PL30747395 A PL 30747395A PL 178832 B1 PL178832 B1 PL 178832B1
Authority
PL
Poland
Prior art keywords
bus
data
memory
cache
processor
Prior art date
Application number
PL95307473A
Other languages
English (en)
Other versions
PL307473A1 (en
Inventor
James M. Brayton
Michael W. Rhodehamel
Nitin V. Sarangdhar
Glenn J. Hinton
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 PL307473A1 publication Critical patent/PL307473A1/xx
Publication of PL178832B1 publication Critical patent/PL178832B1/pl

Links

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/3017Runtime instruction translation, e.g. macros
    • 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
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

1. Sposób utrzymywania spójnosci pamieci w systemie komputerowym, zawierajacym potokowa szyne zewnetrzna, przynajmniej jeden glówny procesor CPU dolaczony do szyny zewnetrznej, kolejke zadan do szyny zewnetrznej oraz dolaczony do szyny zewnetrznej sy- stem pamieci zawierajacy pamiec glówna i przynajmniej jeden poziom pamieci podrecznych, gdzie program wykonywany w glównym procesorze CPU zawiera zbiór zadan do danych z pamieci i oczekuje, ze beda one obslugiwane w zalozonym porzadku, znamienny tym, ze w kolejnych etapach wysyla sie zbiór zadan danych na szyne zewnetrzna w porzadku potoko- wym, wstawia sie wysylane zadania danych do kolejki zadan do szyny zewnetrznej, monito- rujac informacje o statusie dotyczacej kazdego wyslanego zadania danych, utrzymuje sie spójnosc pamieci uaktualniajac wpisy, zapewnia, ze kazde zadanie otrzyma biezace dane oraz obsluguje sie zadania zgodnie z zalozonym porzadkiem. P L 178832 B 1 PL PL

Description

Przedmiotem wynalazku jest sposób utrzymywania spójności pamięci w systemie komputerowym, zawierającym potokową szynę zewnętrzną, przynajmniej jeden główny procesor CPU dołączony do szyny zewnętrznej, kolejkę żądań do szyny zewnętrznej oraz dołączony do szyny zewnętrznej system pamięci zawierający pamięć główną i przynajmniej jeden poziom pamięci podręcznych.
System komputerowy może zawierać różne poziomy pamięci skonfigurowanej w sposób hierarchiczny. Na przykład, komputer może zawierać główną pamięć o dostępie swobodnym (RAM), oraz jednostkę centralną (CPU), która zawiera jeden lub więcej poziomów pamięci podręcznej. Każdy poziom pamięci podręcznej jest szybszy i mniejszy niż poprzedni poziom, lecz jest również droższy i zajmuje więcej krzemu. Pamięci podręczne mają za zadanie zwiększenie szybkości wykonania programu w sposób dla niego niezauważalny. Każda pamięć podręczna jest używana do przechowywania danych, które dla programu logicznie znajdują się w RAM, dzięki czemu zwiększa się szybkość dostępu do CPU. Taki system może zawierać pamięć podręczną (L1) pierwszego poziomu, która z korzyścią może być umieszczona w CPU, oraz może zawierać ponadto pamięć podręczną (L2) drugiego poziomu, która może być umieszczona w
178 832
CPU jako część integralna albo osobny układ, oraz może zawierać ponadto pamięć podręczną trzeciego poziomu (L3), która standardowo może być umieszczona na płycie głównej. Oczywiście, możliwe są inne konfiguracje.
Ponieważ logicznie te same dane są przechowywane w fizycznie odrębnych miejscach w jednym lub więcej poziomach pamięci podręcznej, oraz ponieważ zadana logiczna dana może być zapisywana do tych różnych poziomów w różnych odrębnych chwilach, istnieje potrzeba utrzymywania spójności i zawartości pomiędzy tymi poziomami pamięci.
Zaawansowane systemy komputerowe mogą zawierać wiele układów zdolnych do pisania/czytania z pamięci. Komplikuje to wymagania związane ze spójnością pamięci podręcznych. Takie układy mogą występować w różnych postaciach jako część CPU. Możliwe jest również istnienie większej ilości CPU w jednym systemie. Poza tym, możliwe są inne typy takich układów, jak sterowniki bezpośredniego dostępu do pamięci (DMA) lub tym podobne.
W takim systemie, różne pamięci podręczne mogą być dołączone do różnych kombinacji szyn. Pożądane jest, by różne składniki systemu miały dostęp do pamięci podręcznych poprzez te szyny (szynę) w sposób nie blokujący, dla ulepszenia działania systemu.
Pożądany jest taki ulepszony system i sposób do utrzymywania spójności pamięci dla nie blokującego, wielopoziomowego wykorzystania pamięci podręcznej. Jest to szczególnie pożądane w systemach, które posiadają którąkolwiek lub wszystkie z następujących własności: nieuporządkowane („out-of-order”) przetwarzanie instrukcji, spekulatywne wykonywanie instrukcji, w szczególności, tych związanych z dostępem do szyny, głębokie potokowe wykorzystanie szyny, wspomaganie samomodyfikacji kodu, niezależność pobierania kodu i danych, posiadanie pamięci podręcznej L2, oraz wykorzystanie wielopoziomowej pamięci podręcznej.
Sposób utrzymywania spójności pamięci w systemie komputerowym, zawierającym potokową szynę zewnętrzną, przynajmniej jeden główny procesor CPU dołączony do szyny zewnętrznej, kolejkę żądań do szyny zewnętrznej oraz dołączony do szyny zewnętrznej system pamięci zawierający pamięć główną i przynajmniej jeden poziom pamięci podręcznych, gdzie program wykonywany w głównym procesorze CPU zawiera zbiór żądań do danych z pamięci i oczekuje, że będą one obsługiwane w założonym porządku, według wynalazku wyróżnia się tym, że w kolejnych etapach wysyła się zbiór żądań danych na szynę zewnętrzną w porządku potokowym, wstawia się wysyłane żądania danych do kolejki żądań do szyny zewnętrznej, monitorując informacje o statusie dotyczącej każdego wysłanego żądania danych, utrzymuje się spójność pamięci uaktualniając wpisy, zapewnia, że każde żądanie otrzyma bieżące dane oraz obsługuje się żądania zgodnie z założonym porządkiem.
Dla głównego procesora CPU zawierającego zespół dołączony do szyny typu pamięci podręcznej danych DCU i pamięci podręcznej instrukcji IFU posiadający pierwszy poziom L1 pamięci podręcznej, w etapie wysyłania korzystnie wysyła się, przez zespół dołączony do szyny, żadanie specyfikujące żądane dane i wskazujące, że w pierwszym poziomie L1 pamięci podręcznej nie było sprawdzane istnienie żądanych danych, a ponadto, w odpowiedzi na wskazanie przez zespół dołączony do szyny, że pierwszy poziom L1 pamięci podręcznej nie był przeszukiwany, korzystnie dokonuje się samopodglądania pierwszego poziomu L1 w późniejszym czasie.
Dla kolejki żądań do szyny zewnętrznej typu FIFO, posiadającej początek i koniec, w etapie umieszczania w kolejce korzystnie umieszcza się żądania na początku kolejki FIFO i przesuwa się żądania w stronę końca kolejki FIFO w etapie uaktualniania, a ponadto poszukuje się konfliktów dotyczących tych samych adresów pomiędzy obecnym i poprzednio wysłanym żądaniem, które zostało wprowadzone do kolejki żądań do szyny zewnętrznej i przeszło drugi poziom L2 pamięci podręcznej i w przypadku stwierdzenia konfliktu odwołania do tych samych adresów blokuje się bieżące żądanie poprzez wysłanie go z powrotem na początek kolejki FIFO.
Mechanizm utrzymywania spójności pamięci podręcznej według wynalazku obejmuje wykorzystanie kolejki zewnętrznych żądań dostępów do szyny oraz odpowiadający jej mechanizm, który monitoruje i kontroluje przychodzenie żądań do danych, takich jak wspomniane żądania zapisu i żądania odczytu, na zewnętrznej szynie danych. System komputerowy zawiera jeden lub więcej CPU, z których każdy posiada mechanizm zachowywania spójności.
178 832
Przedmiot wynalazku zostanie bliżej objaśniony w przykładach wykonania na rysunku, na którym fig. 1 przedstawia wieloprocesorowy system komputerowy zawierający zestaw procesorów i podsystem pamięci, fig. 2 - schemat wieloprocesorowego systemu komputerowego, w którym może być zastosowane rozwiązanie według wynalazku, fig. 3 - schemat blokowy systemu szyny, w którym może być zastosowane rozwiązanie według wynalazku; fig. 4 - schemat wieloprocesorowego systemu komputerowego według wynalazku; fig. 5 - wykres czasowy dwóch operacji na szynie w jednym przykładzie niniejszego wynalazku; fig. 6 - schemat blokowy podsystemu pamięci procesora będącego częściąprzykładu systemu komputerowego według wynalazku; fig; 7 - schemat blokowy przedstawiający przykładowy procesor zawierający elementy według niniejszego wynalazku; fig. 8 - schemat blokowy procesora w wieloprocesorowym systemie komputerowym; fig. 9 - schemat blokowy przedstawiający system według niniejszego wynalazku; fig. 10 - schemat blokowy pokazujący dalsze szczegóły kolejki zewnętrznych żądań do szyny; fig. 11 - układ reorganizujący, który zawiera bufor reorganizujący zawierający zestaw wejść ROB (od REO do REn), który buforuje wejściowe dane z nieuporządkowanego spekulatywnego wykonywania fizycznych mikrooperacji; fig. 12 - układ pobierania z pamięci, zawierający układ generacji adresu, układ porządkujący pamięć, układ bufora translacji adresu (DTLB), oraz układ pamięci podręcznej dla danych; fig. 13 - procesor według jednego z przykładów wykonania, zawierający wewnętrzną pamięć podręczną danych, układ dostępu do pamięci, kolejkę przechowującą ślady do niezrealizowanych transakcji; fig. 14 - węzeł układu interfejsu, który zawiera kolejki transakcji przechowujące ślady niezrealizowanych transakcji oraz przesyłające niezrealizowane transakcje pomiędzy grupami szyn; fig. 15 - przykład procesu porzucenia i nowego przesłania; fig. 16 - sieć działań opisującą kroki dla zapewnienia spójności pamięci (tzn. porządkowanie procesów) w systemie wieloprocesorowym; fig. 17,18- sieć działań, która ilustruje przechowywanie transakcji komunikacji przez układ węzła interfejsu; fig. 19 - sieć działań ilustrującą transakcję odczytu przez element żądający dostępu do szyny; fig. 20 - sieć działań ilustrującą transakcję zapisu lub transakcję unieważnienia wykonywaną przez element żądający dostępu do szyny; fig. 21 - uproszczoną sieć działań jednego z przykładów wykonania systemu według niniejszego wynalazku; fig. 22 - sieć działań opisującą operacje na pamięci w szynie potokowej w przykładzie według niniejszego wynalazku; fig. 23 - sieć działań opisującą kroki wykonywania operacji odczytu w szynie potokowej w przykładzie według wynalazku; fig. 24 - sieć działań opisującą kroki zmiany stanu pamięci podręcznej w operacji odczytu w innym przykładzie według niniejszego wynalazku; fig. 25 - sieć działań opisującą kroki zmiany stanu pamięci w operacji odczytu w jeszcze innym przykładzie według niniejszego wynalazku; fig. 26 - sieć działań opisującą kroki wykonywane w czasie operacji zapisu na potokowej szynie w jednym przykładzie według wynalazku; fig. 27 - sieć działań opisującą kroki zmiany stanu pamięci podręcznej w operacji zapisu w innym przykładzie według niniejszego wynalazku; fig. 28 sieć działań opisującą kroki zmiany stanu pamięci podręcznej w operacji zapisu w jeszcze jednym przykładzie wykonania według niniejszego wynalazku; fig. 29 - sieć działań opisującąkroki operacji unieważniania linii pamięci podręcznej wykonywane na potokowej szynie w przykładzie według niniejszego wynalazku.
Jak przedstawiono na fig. 1, wieloprocesorowy system komputerowy 120 zawiera zestaw procesorów 122-124, oraz podsystem pamięci 126. Procesory 122-124 i podsystem pamięci 126 komunikują się przez szynę 128.
Każdy procesor 122-124 pobiera strumień makroinstrukcji z podsystemu pamięci 126 przez wieloprocesorową szynę 128. Każdy procesor 122-124 wykonuje odpowiedni strumień makroinstrukcji i steruje przechowywaniem danych w podsystemie pamięci 126.
Na fig. 2 przedstawiono schemat wieloprocesorowego systemu komputerowego, w którym może być zastosowany niniejszy wynalazek. Generalnie, system komputerowy zawiera procesorowąszynę systemową oraz inne zespoły komunikacyjne 201 do kumunikacji pomiędzy jednym lub większą ilością procesorów 202 i 203. Procesorowa szyna systemowa 201 obejmuje szyny adresowe, szyny danych i szyny sterujące. Jak wspomniano powyżej, procesory 202 i 203 mogą zawierać małą, bardzo szybkązewnętrznąpamięć podręczną, zazwyczaj oznaczanąjak pierwszy
178 832 poziom L1 pamięci podręcznej przeznaczonej do tymczasowego przechowywania danych i pojedynczych instrukcji. Ponadto, większy i wolniejszy poziom L2 pamięci podręcznej 204 może być związany z procesorem 202 dla tymczasowego przechowywania danych i instrukcji używanych przez procesor 202. W obecnym korzystnym przykładzie wykonania wynalazku, pamięci podręczne L1 i L2 są umieszczone w tym samym układzie scalonym co procesor 202.
Również procesor 203 jest dołączony do procesorowej szyny systemowej 201 dla współpracowania z procesorem 202. Procesor203 może być procesorem równoległym, takim jak procesor jednakowy lub podobny do procesora 202. Alternatywnie, procesor 203 może być koprocesorem, takim jak cyfrowy procesor sygnałowy. Ponadto, trzeci poziom L3 pamięci podręcznej 211 do tymczasowego przechowywania danych i instrukcji używanych przez elementy systemu komputerowego (np. procesor 202, procesor 203, etc.), oraz sterownik 210 dostępu do pamięci podręcznej L3, mogą być również dołączone do szyny systemowej pamięci 215.
Szyna systemowa pamięci lub inny układ służący do komunikacji 215 jest połączona z procesorem 202, dla zapewnienia procesorowi 202 i innym układom systemu komputerowego dostępu do podsystemów pamięci i wejścia/wyjścia I/O. Sterownik pamięci 222 jest połączony z szyną systemową pamięci 215 dla kontrolowania dostępu do pamięci o dostępie swobodnym RAM lub innego układu dynamicznego przechowywania informacji 221 (zazwyczaj określanego jako pamięć główna), przechowujących dane i instrukcje dla procesora 202 i procesora 203. Sterownik pamięci 212 utrzymuje porządek operacji odczytu i zapisu w oparciu o szczegółowe, opisane poniżej zasady. Pamięć masowa 225, takajak dysk magnetyczy i stacja dysków, dla przechowywania danych i informacji, oraz urządzenie wyświetlające 223, takie jak lampa obrazowa CRT, wyświetlacz ciekłokrystaliczny LCD, etc., do wyświetlania informacji dla użytkownika komputera, są dołączone do szyny systemowej pamięci 215.
Mostek wejścia/wyj ścia I/O 224jest połączony z szyną systemową pamięci 215 i szyną I/O 231 dla zapewnienia różnym urządzeniom ścieżki lub furtki komunikacyjnej przez albo szynę systemową pamięci 215, albo szynę I/O 231, dla dostępu lub przesyłania danych pomiędzy urządzeniami dołączonymi do innej szyny. W skrócie, mostek 224 stanowi połączenie pomiędzy szyną systemową I/O 231 i szyną systemową pamięci 215. W szczególności, mostek 224 przełącza przepływ danych w postaci bajtów/słów/podwójnych słów z szyny I/O 231 na liniowy przepływ w szynie systemowej pamięci 215.
Szyna I/O 231 zapewnia komunikację pomiędzy urządzeniami systemu komputerowego. Urządzenia, które mogą być dołączone do szyny systemowej 231, to urządzenie wyświetlające 232, takie jak lampa obrazowa, wyświetlacz ciekłokrystaliczny, etc., alfanumeryczne urządzenie wejściowe 233 takie jak klawiatura alfanumeryczna, klawiatura rozszerzona, etc., dla dostarczania informacji i wyboru komend dla innych urządzeń systemu komputerowego (np. procesora 202), oraz urządzenie sterujące kursorem 234 dla kontroli ruchu kursora. Ponadto, urządzenie kopiujące 235, takie jak ploter lub drukarka, dla realizowania wizualnej reprezentacji obrazów z komputera, oraz pamięć masowa 236, taka jak dysk magnetyczny i stacja dysków, do przechowywania informacji i instrukcji, mogą być również dołączone do szyny systemowej 231.
Oczywiście, niektóre implementacje i wykorzystania niniejszego wynalazku nie wymagają zastosowania wszystkich ze wspomnianych składników. Na przykład, w niektórych implementacjach, sterownik pamięci podręcznej L3 i pamięć podręczna L3 mogą nie być wymagane. W takich implementacjach procesory 202 i 203 będą podłączone bezpośrednio do szyny systemowej pamięci 215. W innych implementacjach, może nie być konieczne wykorzystanie urządzenia wyświetlającego do wyświetlania informacji. Niektóre implementacje niniejszego wynalazku mogą zawierać dodatkowe procesory i inne składniki.
Na fig. 3 przedstawiony jest schemat blokowy węzła szyny systemowej, w którym może być wykonany niniejszy wynalazek. Niniejszy wynalazek może być stosowany do wieloprocesorowych systemów komputerowych, posiadających jeden lub więcej węzłów zespołów. Fig. 3 pokazuje dwa takie węzły 301 i 302. Każdy z tych węzłów składa się z dowolnej liczby zespołów. Na przykład, węzeł 301 składa się z czterech zespołów 303-306 i pamięci podręcznej 307. Zespoły 303-306 mogą zawierać dodatkowe mikroprocesory, koprocesory, cyfrowe procesory syg6
178 832 nałowe, sterowniki bezpośredniego dostępu do pamięci DMA, urządzenia wejścia/wyjścia I/O, mostki I/O, urządzenia/sterowniki sieci, oddzielne pamięci podręczne z lub bez odpowiadających im procesorów, etc. W skrócie, zespół może być dowolnym urządzeniem, które może wykonywać instrukcje zapisu i odczytu do/z pamięci. Pamięć podręczna 307 jest dzielona pomiędzy tymi czterema składnikami 303-306. Każdy węzeł jest połączony z różnymi innymi składnikami systemu komputerowego przez interfejs systemowy 309. Interfejs systemowy 309 zawiera szybki interfejs I/O 310, do łączenia systemu komputerowego ze światem zewnętrznym, oraz interfejs pamięci 311 zapewniający dostęp do pamięci głównej, takiej jak pamięć matrycowa DRAM.
W niniejszym wynalazku, sterowanie procesorem jest wykonane przez istniejące oprogramowanie napisane dla większości architektur procesorów. Sterowanie pracą procesora wymaga, by wszystkie instrukcje ładowania do pamięci generowane przez dowolny procesor były rozważane w tej samej kolejności przez wszystkie procesory systemu. Innymi słowy, musi być zachowana kolejność operacji ładowania do pamięci. Kody źródłowe wymagające współpracy typu producent - konsument zależąod tego sterowania dla zapewnienia odpowiedniego funkcjonowania systemu.
Na przykład, załóżmy że procesor 303 jest producentem informacji, a procesor 304 jest konsumentem informacji generowanej przez procesor 303. Sekwencje kodu producenta i konsumenta będą następujące:
Producent Konsument
W1: załaduj daną pod adres X Rl: dopóki flan = 0 wykonuj Rl
W2: załaduj 1 do flag R2: pobierz daną z adresu X
Procesor producenta 303 wykonuje kolejno operację zapisu W1 danej pod adres X, a następnie drugą operację zapisu W2 ustawiającą znacznik flag na „1 ”, wskazując przez to, że dana pod adresem X jest ważna. W międzyczasie, procesor konsumenta 304 w sposób ciągły wykonuje operację odczytu R2 dla stwierdzenia czy znacznik flag został ustawiony na „1”. Operacj a R 1j est powtarzana tak długo, dopóki znacznik flag nie zostanie ustawiony na „1 ” (przez procesor producenta 303). Po stwierdzeniu, że znacznik flag został ustawiony (np. na „1”). procesor konsumenta 304 wykonuje operację odczytu R2 w celu pobrania danej spod adresu X. Po to, by ten fragment kodu był prawidłowo wykonywany w systemie wieloprocesorowym, kolejność w której procesor 303 wykonuje operacja zapisu W1 i W2 powinna być taka sama, co kolejność operacji R1 i R2 wykonywanych przez procesor konsumenta 304.
W niniejszym wynalazku, działanie systemu jest optymalizowane przez implementację spekulatywnego wykonywania rozkazów procesora przy zabezpieczeniu przed pogwałceniem cyklu rozkazowego procesora. W obecnie rozważanym korzystnym przykładzie wynalazku, zapisy odbywają się w kolejności i pozostają spójne. Jednakże, dopuszczalne jest przeplatanie się pobrań. Instrukcje ładowania są natychmiast wycofywane i pozostają w buforze pamiętającym, jeśli wycofanie nie wymaga dostępu do pamięci lub pamięci podręcznej. Te operacje ładowania do pamięci,, znane jako operacje „seniorowe” są wykonywane w tle. Zawartość systemu pamięć kieszeniowa/pamięć pozostaje nie zmieniona.
Gdy dwie kolejne operacje ładowania (tzn. W1 i W2) zostały umieszczone w buforze pamiętającym, istnienie tych ładowań jest widoczne jedynie dla procesora producenta, lecz nie dla żadnego procesora konsumenta. Jeśli procesor producenta czyta spod tych samych adresów, zapamiętane dane sąprzesyłane do pamięci operacyjnej bezpośrednio z bufora pamiętającego. Mechanizm ten znany jest jako „poprzedzanie jadowanja” . Naley zauważyć . że ten mechanizm zatrzymuj e rozkazy procesora względemjego własnych zapisów. Jednocześnie, j eśli jakikolwiek procesor konsumenta w systemie czyta z dwóch miejsc, żadna z tych operacji nie będzie widzieć zmian dokonanych przez te dwa załadowania. Zapewnia to, że rozkazy procesora są zatrzymywane dla dwóch zapisów względem wszystkich innych procesorów Wycofane operacje seniorowe opuszczają bufor pamiętający w dowolnym momencie. Powoduje to modyfikację systemu pamięci. Zapewnione jest, by operacja zapisu W1 jako pierwsza opuszczała seniorowy bufor pa178 832 miętający. Żadna kolejna operacja ładowania nie może wyjść z seniorowej jednostki bufora pamiętającego, dopóki system pamięci nie zostanie zmodyfikowany.
Podczas, gdy odczyty przeplatają się między sobą (np. operacje spekulatywnego pobrania), bufor odczytu podgląda operacje ładowania w innych procesorach. Jeśli zewnętrzna operacja załadowania wchodzi w konflikt z operacjąpobrania następującej po wciąż niezrealizowanej operacji pobrania, oznacza to wykrycie zakłócenia. W jednym przykładzie, pobranie jest uważane za zaległe jeśli nie zostało wykonane jeszcze pobranie z pamięci. W alternatywnym przykładzie wykonania, termin „niezrealizowane” oznacza, że został zrealizowany dostęp do pamięci, lecz pobranie nie zostało jeszcze wycofane. W tym alternatywnym przykładzie wykonania może wystąpić fałszywe zakłócenie, nie mając wpływu na poprawność wykonywanych operacji, lecz wpływające na szybkość działania systemu. Wówczas sekwencja jest rozpoczynana od nowa od pobrania, które spowodowało zaistnienie warunku przerwania. Poprzez przeniesienie operacji pobrania na późniejszą chwilę zostanie odczytana prawidłowo dana.
Przedstawiony zostanie przykład demonstrujący przebieg strumienia rozkazów procesora z uwzględnieniem sekwencji zapisu/odczytu (R1, R2, W1 i W2) dla wspomnianych powyżej procesora producenta 303 i procesora konsumenta 304. Załóżmy, że pobranie R2 zostało spekulatywnie wykonane przed wcześniejszym pobraniem R1, wynikiem czego jest zakłócenie kolejności rozkazów procesora. To zakłócenie jest wykrywane podczas zapisu W2 gdzie zostaje stwierdzone już zakończone pobranie R2, podczas gdy pobranie R1 jest wciąż niezrealizowane. Po wykryciu zakłócenia jest ono naprawiane poprzez porzucenie operacji pobrania R2. Ponadto, anulowane są wszystkie następne spekulatywne stany. Następnie, operacja R2 jest przekładana na później. Pobiera ona ważną daną w odpowiednim czasie.
Figura 4 pokazuje schemat przykładowego wieloprocesorowego systemu komputerowego według niniejszego wynalazku. System komputerowy zasadniczo zawiera szynę procesor - pamięć lub inne układy komunikacyjne 401 do komunikacji pomiędzy jednym lub wieloma procesorami 402 i 403. Procesorowa szyna systemowa 401 zawiera szynę adresową, szynę danych i szynę sterującą. Procesory 402 i 403 mogą zawierać małą bardzo szybką wewnętrzną pamięć podręczną, określanązazwyczaj jako poziom pierwszy (L1) pamięci podręcznej do tymczasowego przechowywania danych i instrukcji w układzie. Ponadto, większy wolniejszy drugi poziom (L2) pamięci kieszeniowej 404 może być dołączony do procesora 402 do tymczasowego przechowywania danych i instrukcji używanych przez procesor 402. Wjednym przykładzie wynalazku, procesory 402 i 403 są mikroprocesorami kompatybilnymi z architekturą firmy Intel; jednakże niniejszy wynalazek może wykorzystywać dowolne typy mikroprocesorów, włączając w to zróżnicowanie typów procesorów w obrębie systemu.
Do szyny procesor - pamięć 401 dołączony jest również procesor 403, przetwarzający informacje we współpracy z procesorem 402. Procesor 403 może być procesorem równoległym, takim jak procesor podobny lub identyczny do procesora 402. Alternatywnie, procesor 403 może być koprocesorem, takim jak cyfrowy procesor sygnałowy. Szyna procesor - pamięć 401 umożliwia systemowi dostęp do pamięci i podsystemów wejścia/wyjącia I/O. Sterownik pamięci 422 jest dołączony do szyny procesor - pamięć 401 do sterowania dostępu do pamięci o dostępie swobodnym (RAM) lub do innego układu dynamicznie pamiętającego 421 (zazwyczaj określanego jako pamięć główna) do przechowywania informacji i instrukcji dla procesora 402 i 403. Sterownik pamięci 422 utrzymuje ścisły porządek wykonywania operacji odczytu i zapisu. Pamięć masowa 425, taka jak dysk magnetyczny lub stacja dysków, do przechowywania informacji i instrukcji, oraz urządzenie wyświetlające 423, takie jak lampa obrazowa CRT, wyświetlacz ciekłokrystaliczny LCD, etc., do wyświetlania informacji dla użytkownika komputera, wszystkie te urządzenia są dołączone do szyny procesor - pamięć 401.
W jednym przykładzie wynalazku, sterownik pamięci 422 zawiera bufor przechwytujący 470, bufor linii pamięci podręcznej 471, układ logiczny zapisu buforowanego IW 472, oraz układ logiczny łączenia 473. Bufor przechwytujący 470 jest buforem danej tymczasowej do przechowywania danej „przechwyconej” z szyny. Bufor linii pamięci podręcznej 471 jest buforem danej tymczasowej stosowanym do przechowywania bezwarunkowego buforowania przepływu da8
178 832 nych pobieranych z szyny. W jednym przykładzie wykonania, układ logiczny IW 472 przechowuje dane pobrane z szyny bądź w buforze przechwytującym 470, bądź w buforze linii pamięci podręcznej 471, w zależności od źródła danej. W innym przykładzie wykonania, układ logiczny IW 472 przesyła dane bezpośrednio do pamięci bez przechowywania ich w tymczasowym buforze. Układ logiczny IW 472 może również wysyłać na szynę odpowiedź niejawnego zapisu buforowanego, w zależności od żądania, oraz od tego, czy sterownik 422 będzie przesyłał dane dla zrealizowania żądania. W jednym wariancie, układ logiki IW 472 jest dołączony do szyny przez interfejs szyny 475, który pobiera dane z szyny i umieszcza dane w szynie.
Układ logiczny łączenia 473 łączy razem dane z bufora przechwytującego 470 i bufora linii pamięci podręcznej 471, a następnie przesyła linię pamięci kieszeniowej do głównej pamięci 421. W jednym wariancie, układ logiczny łączenia 473 przesyła linię pamięci podręcznej do pamięci przez interfejs pamięci 476. W jednym przykładzie wykonania, bufor przechwytujący 470 i bufor linii pamięci podręcznej 471 reprezentują liczne bufory. Tzn., sterownik pamięci 422 zawiera liczne bufory przechwytujące i liczne bufory linii pamięci podręcznej. Dodatkowe bufory nie zostały pokazane po to, by nie zaciemniać rysunku.
Sposób wykorzystania przez sterownik pamięci 422 bufora przechwytującego 470, bufora linii pamięci podręcznej 471, układu logicznego 472 i układu logiki scalającej 473 w niniejszym wynalazku zostanie poniżej szczegółowo opisany. Przesyłanie danych pomiędzy sterownikiem pamięci 422 i szyną, oraz pomiędzy sterownikiem pamięci 422 i pamięcią główną 421 jest oczywiste dla specjalisty i nie zostanie dalej opisane.
W innym przykładzie wykonania, bufor przechwytujący 470, bufor linii pamięci podręcznej 471, układu logiczny IW 472, oraz układ logiczny łączenia 473, są zawarte w innych zespołach (zespole) dołączonych do szyny. Na przykład, procesory 402 i 403 na fig. 4 mogą zawierać te dodatkowe układy logiczne, przechwytywać dane z szyny i łączyć je w pamięci wewnętrznej zespołu. W jednym trybie, procesory 402 i 403 zawierają bufor tymczasowego przechowywania do przechowywania linii scalonych danych; stąd kolejne żądanie do tej samej linii danych może być zrealizowane bezpośrednio z bufora przechowywania tymczasowego zamiast z pamięci. W innym wariancie, zespół przechowuje skompletowaną linię pamięci podręcznej w pamięci podręcznej L2, takiej jak pamięć L2 404 z fig. 4.
W jednym przykładzie wykonania, procesor 402 zawiera również pamięć podręczną L1 438 połączoną ze sterownikiem pamięci podręcznej 439. W jednym trybie, sterownik pamięci podręcznej 439 wysyła sygnały na szynę procesor - pamięć 401 i odbiera sygnały z szyny 401 przez interfejs szyny 441. Sterownik pamięci podręcznej 43 9 sprawdza żądania na szynie dla wyznaczenia, czy pamięć podręcznej 438 zawiera kopię żądanej linii poprzez sprawdzenie stanu linii, jak to opisano poniżej. Sterownik 439 może wysłać sygnał HIT# lub HITM#, w zależności od stanu linii pamięci podręcznej j ak opisano poniżej. W j ednym wariancie, sterownik pamięci podręcznej 439 przesyła linię z pamięci podręcznej 438 na szynę 401, jeśli wyśle sygnał HITM# w odpowiedzi na żądanie. W jednym przykładzie, sterownik pamięci podręcznej 439 umieszcza linię pamięci podręcznej na szynie procesor - pamięć 401 przez interfejs szyny 441. Sposób generowania sygnałów i przesyłania danych do i z szyny 401 przez sterownik pamięci podręcznej 439 jest oczywisty dla specjalisty i nie zostanie dalej opisany.
W innym przykładzie wykonania, sterownik pamięci podręcznej 439 steruje również pamięcią podręczną L2 404 dołączoną do procesora 404. Współpraca pomiędzy sterownikiem pamięci podręcznej 439 i pamięcią podręczną 404 jest taka sama, jak dla opisanego przypadku pamięci podręcznej 438 i sterownika pamięci podręcznej 439.
Procesor 402, jak pokazano, zawiera dodatkowe elementy. Pozostałe zespoły dołączone do szyny procesor - pamięć 401 mogą również zawierać dodatkowe układy logiczne takie jak procesor 402. W jednym przykładzie wykonania, wszystkie zespoły, które wysyłają żądania zawierają pamięć podręczną 438 i sterownik pamięci podręcznej 439. Te dodatkowe układy logiczne nie zostały pokazane we wszystkich zespołach, by nie zmniejszać przejrzystości rysunku.
Mostek wejścia/wyjścial/O 424 jest dołączony do szyny procesor - pamięć 401 i szyny systemowej I/O 431 dla zapewnienia ścieżki lub furtki komunikacyjnej dla urządzeń dołączonych
178 832 albo do szyny procesor - pamięć 401, albo do szyny I/O 431 dla dostępu lub przesyłania danych na inną szynę. W skrócie, mostek 424 jest interfejsem pomiędzy szyną systemową I/O 431 i szyną procesor = pamięć 401.
Szyna I/O 431 zapewnia komunikację pomiędzy urządzeniami peryferyjnymi w systemie komputerowym. Urządzenia, które mogąbyć dołączone do szyny systemowej 431 to urządzenie wyświetlające 432, takie jak lampa obrazowa, wyświetlacz ciekłokrystaliczny, itp., ponadto alfanumeryczne urządzenie wejściowe 433 zawierające klawisze alfanumeryczne i inne, itp., dla dostarczania informacji i wyboru komend dla innych urządzeń w systemie komputerowym (np. procesora 402), oraz urządzenia sterujące ruchem kursora 434. Ponadto, urządzenie kopiujące 435, takie jak ploter lub drukarka, dla dostarczania wizualnej prezentacji obrazów komputerowych, oraz pamięć masowa 436, taka jak dysk magnetyczny lub stacja dysków do przechowywania inforamcji i instrukcji, mogąbyć również dołączone do szyny systemowej 431.
W niektórych implementacjach nie musi być konieczne stosowanie urządzenia wyświetlającego do wyświetlania informacji. Niektóre zastosowania niniejszego wynalazku mogą zawierać dodatkowe procesory lub inne składniki. Dodatkowo, niektóre zastosowania niniejszego wynalazku mogą nie wymagać ani nie zawierać wszystkich ze wspomnianych składników. Na przykład, procesor 403, urządzenie wyświetlające 423, lub pamięć masowa 425 mogą nie być dołączone do szyny pamięć - procesor 401. Ponadto, urządzenia peryferyjne pokazane jako dołączone do szyny I/0 431, mogą być dołączone do szyny procesor - pamięć 401; poza tym, w niektórych implementacjach może istnieć tylko jedna szyna, z dołączonymi do niej procesorami 402 i 403, sterownikiem pamięci 422, oraz urządzeniami peryferyjnymi 432 - 436.
Różne fazy różnych transakcji mogą się przeplatać, dzięki czemu uzyskuje się potokową pracę szyny i przyspiesza pracę systemu. Fig. 5 pokazuje przykładowe przeplatanie się faz żądania/odpowiedzi dla dwóch transakcji. Nawiązując do fig. 5, każda transakcja rozpoczyna się Fazą Arbitrażu, w której żądający zespół przejmuje szynę. Drugą fazą jest Faza Żądania, w której zarządzający szyną wysyła żądanie i adres informacji na szynę. Trzecią fazą transakcji, trzy takty zegara po Fazie Żądania, jest Faza Błędu. Faza Błędu wskazuje wszystkie natychmiastowe błędy wywołane przez żądanie. Czwartą fazą transakcji jest Faza Podglądania, cztery lub więcej taktów zegarowych po Fazie Żądania. Faza Podglądania wskazuje, czy linia pamięci podręcznej pobierana w transakcji jest ważna lub zmodyfikowana (zabrudzona) w dowolnej pamięci podręcznej podzespołu.
Faza Odpowiedzi wskazuje, czy transakcja się powiodła czy nie, czy odpowiedź jest natychmiastowa lub opóźniona, oraz czy transakcja zawiera fazy danych. Jeśli transakcja zawiera inicjowaną odpowiedzią fazę danych, wówczas transmisja danych odbywa się jednocześnie z fazą odpowiedzi.
Wykorzystanie systemu potokowego może powodować różne problemy. Na przykład, na fig. 5, żądanie 1jest generowane w takcie Tl, a żądanie 2 jest generowane w takcie T4. Jeśli żądania 1i 2 dotyczą tego samego adresu, system musi zapewnić spójność pamięci podręcznej w celu prawidłowego wykonania zarówno żądania 1 i żądania 2.
Wyznaczenie globalnego cyklu nadzorującego rozwiązuje ten problem. Tzn., wyznaczany jest cykl zegara, w którym uznaje się, że cały system rozpoczyna obsługę transakcji. W jednym przykładzie wykonania, globalny cykl nadzorowania jest rozpoczynany w Fazie Podglądania. Stąd, przed fazą podglądania wybranej transakcji, każdy zespół systemu traktuje transakcję jako nieistniejącą. Dzieje się tak również wtedy, gdy zespół żądający skierował żądanie na szynę. Jednakże, po Fazie Podglądania każdy zespół traktuje transakcję jako mającą miejsce.
Globalny cykl nadzorowania odbywa się w fazie podglądania, ponieważ każdy zespół zna przeznaczenie transakcji w Fazie Podglądania. Tzn., czy zespół modyfikował odpowiednią linię pamięci podręcznej do której znane jest żądanie, oraz czy zespół, który musi zmieniać stan linii swej pamięci podręcznej, wie że ma to zrobić. Stąd znany jest zespół (zespoły), któryjest zaangażowany w odpowiedź na żądanie.
Należy zauważyć, że w niektórych okolicznościach, poszczególne transakcje mogąnie być globalnie nadzorowane w Fazie Podglądania tych transakcji. Na przykład, w systemie wykorzy10
178 832 stującym hierarchię wieloszynową aktualna transakcja jest globalnie nadzorowana, jeśli żądana linia pamięci podręcznej znajduje się w węźle szyny procesora wysyłającego żądanie (bez względu na to, czy liniajest w stanie zmodyfikowanym lub dzielonym). Jednakże, może powstać sytuacja, w której linia pamięci podręcznej nie znajduje się w węźle szyny, oraz nie znajduje się w żadnym innym węźle lub systemie pamięci, który jest osiągalny przez układ zarządzający aktualnego węzła. W takim przypadku, układ zarządzający węzła jest odpowiedzialny za uzyskanie linii pamięci podręcznej. W takim przypadku istnieją trzy różne scenariusze.
W pierwszym scenariuszu, przydzielenie następnego poziomu szyny jest natychmiast możliwe. W konsekwencji, przydzielenie linii pamięci podręcznej może być gwarantowane przez Fazę Podglądania aktualnej transakcji. Stąd, transakcja jest globalnie nadzorowana w Fazie Podglądania obecnej transakcji w sposób opisany powyżej. W drugim scenariuszu, przydzielenie następnego poziomu szyny systemowej nie jest możliwe natychmiast, lecz może zostać wykonane później. Ponadto, linia pamięci podręcznej może zostać cofnięta do żądającego procesora. W tym przypadku, zarządca węzła odkłada globalne nadzorowanie transakcji. Gdy następny poziom szyny systemowej zostanie w końcu przydzielony, zarządca węzła zwraca przydział linii pamięci podręcznej z odłożoną odpowiedzią. W czasie Fazy Podglądania odłożonej odpowiedzi transakcja jest globalnie nadzorowana. W końcu, przydział następnego poziomu szyny systemowej może nie być możliwy w celu uniknięcia zakleszczenia. Stąd, transakcja jest porzucana lub wycofywana jeden lub więcej razy. Transakcja nie jest globalnie nadzorowana aż wycofana transakcja nie zostanie poprawnie zrealizowana. Wycofana transakcja jest globalnie nadzorowana _ na wypadek nie wykonania się w czasie ponownej próby.
Stany odpowiednich linii pamięci sązmieniane w czasie Fazy Podglądania w celu wspierania globalnego nadzorowania. Oznacza to, że dla zapewnienia prawidłowego zachowania systemu stany linii pamięci podręcznych sązmieniane przy globalnym nadzorowaniu. Na przykład, na fig. 5, jeśli żądanie 1 i żądanie 2 są żądaniami odczytu tej samej linii pamięci podręcznych, linia pamięci która musi być zmodyfikowana w wyniku realizacji żądania 1 jest zmieniana przed Fazą Podglądania żądania 2. W przeciwnym przypadku, właściwy zespół (zespoły) może nie wysłać koniecznych sygnałów HIT# lub HITM# niezbędnych dla żądania 2.
Na przykład, Faza Podglądania dla żądania 1 z fig. 5 rozpoczyna się w 7. takcie zegara. W 7. takcie, wszystkie zespoły dołączone do szyny wystawiają lub nie wystawiają sygnały HIT# i HITM#, w zależności od stanu żądanej linii pamięci podręcznej w ich pamięciach podręcznych. Te sygnały są obserwowane przez wszystkie zespoły dołączone do szyny w następnym 8. takcie zegara. W jednym przykładzie wykonania, każdy zespół dołączony do szyny zmienia stan pamięci podręcznej w takcie 7., wraz z wystawieniem lub niewystawieniem sygnałów HIT# i HITM#/. Stąd, w takcie 8. każdy zespół ma zmieniony swój podglądany stan. W przykładzie pokazanym na fig. 2, Faza Podglądania żądania 2 wykonuje się w takcie 10. Stąd, dopóki stan pamięci podręcznej każdego zespołu nie zostanie zmodyfikowany w takcie 8., każdy zespół wystawia lub nie wystawia odpowiedni sygnał HIT# i HITM# w Fazie Podglądania żądania 2, nawet jeśli żądanie 2 jest żądaniem do tej samej linii pamięci podręcznej, co żądanie 1.
W innym przykładzie realizacji, każdy zespół zmienia stan swej pamięci podręcznej w takcie 8. i 9., pod nadzorem sygnałów podglądania HIT# i/lub HITM# w takcie 8. W przykładzie z fig. 5, spójność pamięci podręcznych jest utrzymywana, gdyż stany pamięci podręcznych są zmieniane przed Fazą Podglądania żądania 2. Stąd, zmiana stanów pamięci podręcznych w takcie 8. i 9. zachowuje spójność pamięci podręcznych.
Figura 6 przedstawia schemat blokowy podsystemu pamięci procesora Po w jednym przykładzie wykonania systemu komputerowego według wynalazku. Oczywiste jest, że inne architektury podsystemu mogąbyć zastosowane w celu realizacji niniejszego wynalazku. W czasie wykonywania programu w procesorze Po instrukcjajest najpierw pobierana, a następnie dekodowana na jedną lub więcej operacje podstawowe. Te operacje podstawowe (zwane „mikrooperacjami”) przepływają przez system - potencjalnie są wykonywane w sposób względem siebie nieuporządkowany („out-of-order”)- aż nie zostarnąw końcu wycofane. Stąd, działanie procesora
178 832
U
Pq jest rozumiane jako wykonywanie szeregu procesorów złożonych z mikrooperacji, które są zlecane przez zestawy różnych makroinstrukcji i które komunikują się przez zbiór buforów'.
Wykonywanie programu przez procesor Po rozpoczyna się od pobrania instrukcji z pamięci, oraz umieszczenia pobranych instrukcji w buforze lub kolejce. Następnie, instrukcje sąprzekształcane na zestaw podstawowych mikrooperacji. Odrębny proces przydziału wyznacza, do których z wielu fizycznych rejestrów będą kierowane wyniki mikrooperacji. Gdy zasoby zostaną przydzielone, odpowiednie operandy są pobierane i przygotowywane do umieszczenia ich w sekcji rezerwacji RS. Sekcja rezerwacji jest buforem, który przechowuje mikrooperacje, które nie zostały jeszcze wykonane. Gdy gotowajest dana dla danej instrukcji, RS wysyła je do jednej lub wielu jednostek wykonawczych zgodnie z własnościami danej i możliwościami wykonawczymi jednostki. Gdy jednostka wykonawcza wykonana żądaną operację, wykonywany jest zapis powrotny do sekcji rezerwacji.
Układ sterujący nieuporządkowanym wykonaniem instrukcji procesora Po zawiera również bufor reorganizujący ROB, który jest jednostką funkcjonalną, w której spekulatywne wyniki są gromadzone, odpowiednio kierowane i wycofywane. Wycofanie jest aktywnym procesem usuwania zakończonej mikroinstrukcji z bufora reorganizującego i sprowadzenia jego stanu do dowolnego stałego związanego z architekturą stanu, wynikającego z programu źródłowego.
Podsystem pamięci otrzymuje zlecenie (w większości, operacji odczytu READ i zapisu WRITE) zjądra dysponującego typu „out-of-order” 0-0-0 621. Jądro dysponujące 621 zawiera sekcję rezerwacji procesora i bufor reorganizujący. Podsystem pamięci otrzymuje zlecenie z sekcji rezerwacji i zwraca informację dotyczącą danej i błędów do RS i ROB. Gdy podsystem pamięci otrzymuje mikrooperację READ (tzn. LOAD - pobierz z pamięci), może zgłosić żądanie do szyny 611 dla odczytania danych z pamięci zewnętrznej 612. Gdy podsystem pamięci otrzymuje mikrooperację WRITE (tzn. STORĘ - załaduj do pamięci), może wówczas zapisać daną z powrotem do pamięci zewnętrznej 612, peryferyjnego urządzenia I/0, lub innego zespołu dołączonego do szyny systemowej 611. Ponieważ operacje sekcji rezerwacji jądra 621 opierają się na zależnościach przepływu danych, podsystem pamięci procesora Po wymaga wykrywania zakłóceń w strumieniu rozkazów procesora.
Podsystem pamięci z fig. 6 w niniejszym przykładzie wykonania zawiera jednostkę pamięci podręcznej danych DCU 637 o pojemności 8K, zawierającą dwublokową zbiorowo asocjacyjną matrycę, z 32 bajtowym rozmiarem linii. DCU 637 jest podzielona na cztery banki danych. Umożliwia to dwa dostępy (jeden LOAD, drugi STORĘ) w tym samym czasie tak długo, jak dotyczą one oddzielnego banku. DCU 637 zapewnia również dwa cykle czasu dostępu dla LOAD i STORĘ, w pamięci podręcznej. Ponadto, DCU 637 jest nie blokującąpamięciąpodręcznąco oznacza, że może ona przyjmować przychodzące zlecenia dostępu przy kontynuacji stwierdzania „chybień” przy wykorzystaniu szyny zewnętrznej 611 (patrz zewnętrzny interfejs szyny 640). Jednostka pamięci kieszeniowej danych 637 zawiera cztery bufory wypełnienia, każdy 256. bitowy, które są wykorzystywane do przechowywania niezrealizowanych dostępów do pamięci podręcznej DCU 637 odznacza chybienia jedynie jeśli bufory wypełniania są zajęte. DCU 637 pracuje zgodnie z protokołem MESI (Modified/Exclusive/Shared/Invalid) wspierania spójności pamięci kieszeniowej w komputerowych systemach wieloprocesorowych.
Podsystem pamięci procesora Po zawiera ponadto bufor translacji adresu danej DTLB 628, który przekształca liniowe adresy na fizyczne adresy dla dostępu do pamięci. DTLB 628 przegląda tablicę pamięci podręcznej zawierającą mapę przejść przestrzeni z adresu liniowego na fizyczny. DTLB 628 kieruje do pamięci podręcznej informacje o obszarze pamięci związanąz każdym fizycznym adresem, oraz może wykonywać dwie translacj e adresu w każdym cyklu zegara.
W niniejszym przykładzie wykonania, DTLB 628 zawiera tablicę małych stron i tablicę dużych stron. Tablica małych stron zawiera adresy stron o wielkości 4K i posiada 64 wejścia. Tablica dużych stron zawiera adresy dla stron o rozmiarze 2M i 4M i posiada 8 wejść. Obie tablice są czteroblokowymi zbiorowo - asocjacyjnymi pamięciami podręcznymi. DTLB 628 również sprawdza dostępy do pamięci dla sprawdzenia przywilejów, wyjątków, pułapek, pułapek danych, itp. Jeśli
178 832 bufor translacji wykryje wyjątek dowolnego rodzaju, zwraca informację o błędzie do bufora reorganizującego jądra dysponującego 621, oraz informuje resztę podsystemu o porzuceniu dostępu.
Podsystem pamięci z fig. 6 zawiera również bufor organizujący pamięci MOB, który kontroluje rozprowadzanie informacji w podsystemie pamięci. W fig. 6, bufor organizujący pamięci jest przedstawiony jako zestaw bufora pobierającego 630 i bufora ładującego 631. Te bufory przejmują wszystkie operacje LOAD i STORĘ, i śledzą postęp wykonywania tych operacji w czasie, gdy przechodzą one przez procesor. Gdy operacja została wysłana i nie może być dokończona z powodu konfliktu adresu lub zasobu, MOB blokuje operacje i przechowuje informację o warunkach. W niniejszym przykładzie realizacji wykonania, bufor pobierający 630 zawiera 16 wejść, podczas gdy bufor 631 zawiera 12 wejść. Wejścia bufora pobierającego 630 i bufora ładującego 631 są przydzielane w postaci mikrooperacji i są wysyłane do ROB w jądrze dysponującym typu 0-0-0 621.
Bufor organizujący pamięci pracuje jako pewien rodzaj sekcji rezerwacji drugiego stopnia. MOB ponownie wysyła zablokowane operacje, gdy źródło blokady zostanie usunięte. Niektóre operacje nie mogą wykonywać się spekulatywnie, stąd monitoruje on proces wycofywania i rozdzielania spekulatywnych operacji w odpowiednim czasie. Bufor organizujący pamięci dysponuje również zapisami (tzn. operacjami STORĘ) do jednostki pamięci podręcznej danych 637.
Tytułem przykładu, fig. 6 przedstawia jak jądro 621 wysyła operacją ładowania, która została zdekodowana w dwóch mikrooperacjach: ładowania adresu mikrooperacji STA, oraz operacji załadowania danych STD, zilustrowanych odpowiednio przez blok 624 i 625. Mikrooperacje pobrania wysyłane przez jądro 621 są zilustrowane przez blok 623 na fig. 6.
Wszystkie mikrooperacje wysłane przez sekcję rezerwacji są śledzone przez bufor pobierania i bufor ładowania. Na przykład, dane mikrooperacji ładowania do pamięci są bezpośrednio wprowadzane do bufora ładowania 631, podczas gdy adres pod który nastąpi ładowanie, oraz mikrooperacje pobierania danych z pamięci są przekształcane w DTLB 628 na adresy fizyczne. Fizyczne adresy mikrooperacji dla pobieranych danych i adresy ładowania są oznaczone na fig. 6 przez, odpowiednio, blok 634 i 635. Adresy mikrooperacji ładowania są wprowadzane do bufora ładowania 631, podczas gdy dane mikrooperacji pobierania są wysyłane do bufora pobierania i do jednostki pamięci podręcznej danych 631.
Jak to opisano wcześniej, jednostka pamięci podręcznej danych 637 albo zwraca odpowiednią fizyczną daną z powrotem do jądra dysponującego 621, albo wymusza dostęp do pamięci głównej przez interfejs zewnętrznej szyny 640 i szynę systemową 611. Należy podkreślić, że po wysłaniu obu mikrooperacji załadowania adresu i załadowania danej, gdy nie mają już one charakteru spekulatywnego, bufor organizujący podsystemu pamięci łączy je i wysyła jako makrooperację STORĘ, co oznaczono przez bloki 641, do DCU 637. W wielu przypadkach, operacje STORĘ są buforowane długo po tym, jak zostały wycofane, do czasu gdy nie będą wpływać na wykonanie innych operacji.
Powinno być oczywiste, że operacje STORĘ nie mogą wykonywać się spekulatywnie lub w sposób nieuporządkowany „out-of-order”, ponieważ nie ma możliwości odzyskania zawartości komórki pamięci, która została niepotrzebnie zapisana. Jednakże, adresowanie załadowania i obliczenie danej do załadowania może wykonywać się spekulatywnie lub w sposób nieuporządkowany, dla przyspieszenia pracy procesora.
Jak wyjaśniono powyżej, operacje STORĘ są rozdzielane na dwie mikrooperacje: adresu ładowania STA i ładowanej danej STD. Mikrooperacja STA przedstawiona jako blok 624 wykonuje obliczenie i translację adresu. Mikrooperacja STD przedstawiona jako blok 625 obejmuje operację konwersji danej. Obie te operacje zapisują swe dane do bufora ładowania 631, który jest fizycznie podzielony na trzy jednostki. Bufor organizujący pamięci zawiera liniowy adres, status i informacje o mikrooperacji. DCU 637 zawiera aktualne fizyczne adresy.
W jednym przykładzie wykonania, bufor ładowania 631 posiada 12 wejść, buforując do 12 operacji STORĘ. Bufor ładowania 631 jest używany do realizacji kolejki operacji STORĘ, zanim zostaną wysłane do realizacji. Bufor 631 sprawdza również wszystkie adresy operacji LOAD dla sprawdzenia konfliktów zapis - odczyt. To sprawdzenie utrzymuje spójność pomię178 832 dzy operacjami LOAD i wcześniej wykonanymi operacjami STORE wciąż pozostającymi w buforze ładowania.
Bufor pobierania 630 zawiera 16 wejść, buforując do 16 pobrań. Bufor pobierania jest używany do realizacji kolejki operacji LOAD. Wszystkie operacje LOAD przechodzą przez bufor pobierania, przez co mogą być podglądane; z tego bufora operacje te są ponownie wysyłane. Operacje z kolejki sąponownie wysyłane przez bufor pobierania 630, gdy konflikt zostanie usunięty. Spójność rozkazowa procesorajest utrzymywana dla operacji LOAD poprzez podglądanie zewnętrznych operacji WRITE względem wykonanych operacji LOAD. Aspekt ten zostanie w skrócie szczegółowo opisany.
W podsystemie pamięci, zasoby sąprzydzielane, gdy operacja STORĘ lub LOAD zostanie wprowadzona do sekcji rezerwacji. Bufory 630 i 631 otrzymują spekulatywne adresy operacji pobrania i załadowania z sekcji rezerwacji wjądrze dysponującym 621. Operacja LOAD jest dekodowana na mikrooperacje, podczas gdy operacja STORE jest dekodowana na daną do załadowania i mikrooperacje adresu załadowania. W czasie przydzielania operacja jest wprowadzana bądź do bufora 630, bądź do bufora 631. Sekcja rezerwacji dostarcza kod operacyjny, przy pomocy którego jednostka procesora generująca adres wylicza i dostarcza liniowy adres dla dostępu. Te operacje są albo wykonywane natychmiast, albo zapisywane do bufora organizującego pamięci dla wysłania ich do wykonania w późniejszym czasie. W przypadku operacji LOAD, spodziewane jest, że jednostka pamięci podręcznej danych 637 zwróci daną do jądra 621. Jednocześnie, adres i bity statusu są zapisywane do bufora pobierania dla zasygnalizowania zakończenia operacji.
W systemie komputerowym według niniejszego wynalazku, procesor Po emuluje ścisłe przestrzeganie kolejności wykonania rozkazów, nawet jeśli jest układem z natury nie przestrzegającym tej kolejności. Oznacza to, że procesor P0 jest w stanie wykonywać instrukcje w sposób nieuporządkowany; chociaż P0 umożliwia wykonywanie operacji LOAD w różnej kolejności, to jednak, posiada on architekturę, która wymaga przestrzegania ścisłej kolejności wykonania rozkazów (tzn. bez przemieszania) w pracy spekulatywnej. Wszystkie zakończone i niewycofane operacje LOAD podglądajązewnętrznąszynę 11 w celu odkrycia zewnętrznych operacji STORĘ (tzn. WRITE). Jeśli adres zewnętrznej operacji WRITE odpowiada adresowi niewycofanej operacji LOAD, zgłaszane i zaznaczane jest zakłócenie kolejności rozkazów. Zamiast wycofywania zaznaczonych operacji LOAD, jakby się to normalnie wykonało, operacja LOAD jest porzucana wraz ze wszystkimi kolejnymi mikrooperacjami. Procesor rozpoczyna następnie ponowne wykonywanie mikrooperacji od porzuconej operacji LOAD.
W niniejszym przykładzie wykonania ta sekwencja kroków jest znana jako operacja RON. W operacji RON anulowana jest operacja LOAD, porzucany jest spekulatywny dalszy przebieg pracy systemu, a procesor rozpoczyna pracę od anulowanej operacji LOAD.
Innym sposobem spojrzenia na ten problem, który może wystąpić między procesorami w systemie wieloprocesorowym jest, przy wykonywaniu operacji LOAD w sposób nieuporządkowany, efektywne sprawienie, że operacje STORE innego procesora też będą wyglądać jako wykonywane w sposób nieuporządkowany. Wynika to z późniejszej operacji LOAD, która wyprzedza wcześniejszą operację LOAD, która nie została jeszcze wykonana. Późniejsza operacja LOAD odczytuje starą daną, podczas gdy wcześniejsza operacja LOAD, już wykonana, ma szansę odczytania nowej danej zapisanej przez inny procesor. Jeśli dopuszczałoby się do występowania takich stanów, te operacje LOAD spowodowałyby zakłócenie porządku wykonywania rozkazów procesora. Dla zabezpieczenia się przed występowaniem tych stanów, bufor pobierania 630 obserwuje (tzn. podgląda) wszystkie dane operacji WRITE pojawiających się na zewnętrznej szynie 611. Zostało to przedstawione na fig. 6, jak połączenie bufora pobierania 630 z zewnętrzną szyną 611 za pośrednictwem jednostki interfejsu 640. Jeśli inny procesor pisze pod adres, który został spekulatywnie odczytany, operacja LOAD i kolejne operacje sąusuwane, i ponownie wykonywane dla pobrania prawidłowej danej.
Załóżmy, że procesor #1 ściśle przestrzega kolejności instrukcji, tzn., że rozkazy wykonują się w kolejności zgodnej z oryginalnym porządkiem programu. Ponadto, załóżmy, że procesor #2
178 832 wykonuje instrukcje w sposób nieuporządkowany („out-of-order”), np. tak jak procesor Po. Gdy procesor #2 jest gotowy do wykonania pierwszej operacji LOAD pobrania z pamięci spod adresu 5, zewnętrzna szyna 611 jest przeglądana przez bufor pobierania 630 dla wyznaczenia, czy istnieje ryzyko zakłócenia ścisłej kolejności rozkazów. Na przykład, jeśli operacja pobrania LOAD spod adresu 5 zawiesza wykonanie i na zewnętrznej szynie 611 znajduje się instrukcja STORĘ załadowania pod adres 5, procesor #2 ryzykuje wystąpieniem zakłócenia ścisłej kolejności rozkazów. Zgodnie z niniejszym wynalazkiem, procesor #2 podejmuje akcję naprawczą dla uniknięcia zadziałania naturalnego modelu swobodnej kolejności rozkazów, który mógłby tu wystąpić. Akcja ta polega, po pierwsze, na anulowaniu spekulatywnych stanów urządzenia, a następnie ponownym wykonaniu programu począwszy od porzuconej operacji LOAD.
Bufor pobrania 630 w podsystemie pamięci trzyma ślady do wszystkich odłożonych operacji LOAD dla procesora. Jeśli zdarzyła się operacja LOAD - lub jeśli ma się wydarzyć w przyszłości - w buforze pobierania 630 obecny jest adres. Procesor Ρθ przegląda szynę 11 poszukując operacji STORĘ z innych zespołów, podglądając adresy tych operacji. Jeśli adres jest ten sam co dowolny z adresów obecnych w buforze pobierania 630 przechowującym zawieszone operacje, wówczas istnieje potencjalne ryzyko zakłócenia rozkazów. Bufor pobierania 630 przegląda zewnętrzną szynę 611 i szuka na niej rozkazów STORE, które odpowiadają adresom obecnym w buforze 630. Gdy podglądanie przez bufor 630 wskaże trafienie, następuj e próba wycofania operacji LOAD dla której ono nastąpiło i niszczony jest bieżący kontekst urządzenia. Procesor ponownie rozpoczyna wysyłanie rozkazów począwszy od instrukcji rozpoczynających się. od porzuconej operacji LOAD.
Na fig. 7 przedstawiono schemat przedstawiający przykładowy procesor 700 zawierający element według wynalazku. Przykładowy procesor 700 zawierajednostkę wykonawczą701, sterownik szyny 702, sterownik pamięci podręcznej danych 703, pamięć podręczną danych 704, oraz jednostkę pobierania i wydawania instrukcji 705 z wbudowaną pamięcią podręczną instrukcji 706. Elementy 701 - 706 są połączone ze sobą w przedstawiony sposób. Elementy te współpracują dla pobierania, wydawania, wykonywania i zachowywania wyników wykonania w sposób potokowy.
Jednostka pobierająca i wydająca instrukcje 706 pobiera instrukcje z zewnętrznej pamięci przez sterownik szyny 702 z zewnętrznej szyny systemowej. Sterownik szyny 702 zarządza przekazywaniem danych pomiędzy elementami zewnętrznymi i procesorem 700. Jednostka pobierająca i wydająca rozkazy 705 wysyła te instrukcje do jednostki wykonawczej 701 w uporządkowanej kolejności. Jednostka wykonawcza 701 wykonujetakie funkcje jak dodawanie, odejmowanie, logiczny AND, oraz mnożenie stałoprzecinkowe. Niektóre z tych instrukcji sąpobierane i wysyłane w sposób spekulatywny. Jednostka wykonawcza 701 zatrzymuje i wykonuje operacje stało i zmiennoprzecinkowe, jeśli argumenty tych operacji zależą od wykonania poprzednich instrukcji. W podobny sposób, jednostka wykonawcza 701 zatrzymuje i przesyła instrukcje pobrania i załadowania, do bufora sterującego pamięcią 708.
Układ logiczny 707 zajmujący się wycofywaniem ustawia określony stan urządzenia w zależności od kodu źródłowego. W buforze sterującym pamięcią708 sprawdza się, jaki wpływ na sterowanie pamięciąbędzie miało wykonanie operacji pobrania i ładowania. Ładowania i/lub pobrania są potencjalnie odkładane aż do rozwiązania niespójności rozkazowej.
Bufor sterujący pamięcią708 znajduje się pomiędzy buforem ładowania 709 i buforem pobierania 710. Bufor ładowania 709 ma strukturę typu FIFO i przechowuje adres ładowania, rozmiar, dane i inne kluczowe atrybuty. Wskaźnik wierzchołka struktury wskazuje na ostatnio wycofaną operację ładowania. Jedynie zawartość końca bufora ładowania 709 (tzn. zawierającego najdawniej wycofaną operację pobierania) może być zapisywana do podsystemu pamięci, takiego jak pamięć podręczna danych 704. Bufor ładowania 708 jest widoczny jedynie przezjądro procesora (np. jednostkę wykonawczą701 i jednostkę pobierania i wydawania instrukcji 705). Podglądanie z zewnątrz nie spowoduje rozpoznania istnienia ładowania.
Bufor pobierania 710 jest buforem podręcznym używanym przez podsystem pamięci do narzucania uporządkowania pobrań z pamięci. Każda operacja pobrania jest oznaczana przez
178 832 identyfikator ładowania SBID dotyczący ładowania poprzedzającego to pobranie. SBID reprezentuje położenie operacji pobrania względem wszystkich operacji ładowania w sekwencji wykonania. Gdy operacja pobrania wykonuje się w pamięci, jej SBID jest używany jako początkowy punkt do analizy pobrania względem wszystkich poprzednich operacji ładowania w buforze.
Jeśli operacje pobrania są wykonywane w sposób nieuporządkowany („out-of-order”), mogą one powodować, że wykonywane przez inne procesory operacje ładowania wydają się być wykonywane w sposób uporządkowany. Taka sytuacja może wystąpić, gdy późniejsze pobranie wyprzedza wcześniejsze, które nie zostało wykonane (np. operacja odczyt R2 wykona się przed wcześniejszą operacją odczytu R1). Ten późniejszy zgodnie z porządkiem odczyt spowoduje odczytanie starej danej, podczas gdy wcześniejszy odczyt będzie mógł odczytać nową daną zapisaną inny procesor. Jeśli taka sytuacja jest dopuszczalna, takie pobrania zakłócą uporządkowanie rozkazów procesora. Niniejszy wynalazek zabezpiecza przed tym zakłóceniem poprzez zastosowanie bufora pobierania 709 do podglądania wszystkich zapisów danych wykonywanych przez inne podzespoły na szynie 710. Podglądanie oznacza monitorowanie ruchu danych i adresów dla poszczególnych wartości. Jeśli inny procesor zapisuje pod adres w pamięci, który został spekulatywnie odczytany, pobranie i kolejne operacje są anulowane i ponownie wykonywane dla uzyskania odpowiedniej danej (tzn. ponownego narzucenia uporządkowania rozkazów procesora).
Sterownik 703 kontroluje dostępem do danych do/z pamięci podręcznej 704. Pamięć podręczna 704jest szybką, małą, realizowaną sprzętowo pamięciąnotatnikową, do dostępu do której w czasie ładowania i pobierania wystarczy mniej cykli zegara niż do pamięci głównej. Sterownik pamięci podręcznej danych 703 i pamięć podręczna danych 704 natychmiast odpowiadają na instrukcje pobrania, wysyłając dane, jeśli jest to konieczne. W przeciwieństwie do tego, operacje ładowania są buforowane. Innymi słowy, instrukcje nie sąkoniecznie wykonywane/wysyłane w porządku, w jakim zostały zgłoszone. W każdym razie, wyniki wykonania instrukcji stało i zmiennoprzecinkowych, oraz instrukcji pobrania, są wycofywane w kolejności. Z drugiej strony, buforowane instrukcje ładowania są wycofywane w kolejności, a następnie wysyłane do wykonania w „tle” w sposób odpowiedni dla systemu pamięci. Spekulatywne wyniki wykonania operacji stało, zmiennoprzecinkowych i operacji pobrania, oraz buforowane operacje ładowania dla źle przewidzianych skoków, są usuwane.
Jednostka pobierająca w wydającą instrukcje 705 jest reprezentantem szerokiej kategorii układów tego typu stosowanych w wielu systemach komputerowych. Ich skład i działanie są dobrze znane. W aktualnym korzystnym przykładzie wykonania, jednostka 705 zawiera pamięć podręczną instrukcji 706. Pamięć podręczna 706 jest szybką lokalną pamięcią, która przechowuje instrukcje do wykonania. Gdy program usiłuje pobrać instrukcję, która nie jest, już lub jeszcze, w pamięci podręcznej, procesor czeka, aż spłynie strumień sprzętowych pobrań żądanych instrukcji z innej pamięci lub pamięci podręcznej. Jednostka 705 decyduje, do którego wejścia pamięci podręcznej instrukcji powinien być wykonany następny zapis dla jak najlepszej pracy programu. W aktualnym korzystnym przykładzie wykonania, pamięć podręczna instrukcji 706 i pamięć podręczna danych 704 są elementami hierarchii pamięci.
Figura 8 przedstawia procesor 822. Procesor 822 zawiera obszar wejściowy, zawierający układ interfejsu szyny 830 i układ pobierania instrukcji i wysyłania mikroinstrukcji 832. Procesor 822 zawiera ponadto układ przemianowywania rejestrów 834 i układ przydzielający 836. Procesor 822 zawiera ponadto jednostkę wykonawczą pracującą w sposób nieuporządkowany („out-of-order”), składającą się z układu rezerwacji i wysyłania 838, układ wykonawczy 840, układ reorganizujący 842, oraz układ rzeczywistych rejestrów 844.
Układ interfejsu szyny 830 umożliwia przesyłanie adresu, danych i informacji sterujących, przez szynę wieloprocesorową 828. Układ pobierający instrukcje i wysyłający mikroinstrukcje 832 pobiera strumień makroinstrukcji z podsystemu pamięci 826 przez szynę wieloprocesorową 828 poprzez układ interfejsu szyny 830. Układ 832 implementuje spekulatywne przewidywanie skoków dla maksymalizacji przepustowości makroinstrukcji.
178 832
W jednym przykładzie realizacji, strumień makroinstrukcji pobieranych z szyny wieloprocesorowej 828 jest strumieniem zgodnym z architekturą mikroprocesora Intel. Instrukcje te operująna zbiorze sprzętowych rejestrów, w których skład wchodzą rejestry EAX, EBX, ECX i EDX, etc.
Układ pobierający instrukcje i wysyłający mikroinstrukcje 832 przekształca makroinstrukcje na uporządkowany strumień logicznych mikrooperacji. Układ pobierający instrukcje i wysyłający mikrooperacje 832 generuje jedną lub więcej mikrooperacje dla każdej przychodzącej makroinstrukcji. Logiczne mikrooperacje odpowiadające każdej makroinstrukcji są zredukowanym zbiorem mikrooperacji, które wykonują funkcję odpowiadającą makroinstrukcji. Logiczne mikrooperacje składają się na operacje arytmetyczne i logiczne, jak również na operacje przesłań do i z podsystemu pamięci 826.
Układ pobierający instrukcje i wysyłający mikrooperacje 832 przesyła uporządkowany strumień logicznych mikrooperacji do układu przemianowywania rejestrów i układu przydzielającego 836 przez logiczną szynę mikrooperacji 850. W jednym przykładzie wykonania, układ pobierający instrukcje i wysyłający mikroinstrukcje 832 wysyła do czterech uporządkowanych logicznych mikrooperacji w trakcie każdego cyklu zegarowego procesora 822. Ilość uporządkowanych logicznych mikrooperacji może być ograniczona do czterech w czasie każdego cyklu procesora dla minimalizacji czasu martwego procesora 822.
Układ 832 zawiera adresujący układ sekwencyjny mikroinstrukcji i współpracującą z nim pamięć sterującą. Układ sekwencyjny mikroinstrukcji implementuje mikroprogramy do wykonywania różnorodnych funkcji procesora 882, włączając w to funkcje obsługi błędów i funkcje sterowania procesorem.
Każda logiczna mikrooperacja generowana przez układ 832 składa się z kodu operacyjnego („op-code”), pary logicznych źródeł i logicznego przeznaczenia. Każde logiczne źródło może określać rejestr lub dostarczać daną natychmiastową. Logiczne rejestry źródła i logiczne rejestry przeznaczenia dla logicznych mikrooperacji wyznaczają rej estry sprzętowe pierwotnych makroinstrukcji. W dodatku, logiczne rejestry źródłowe i logiczne rejestry przeznaczenia dla mikrooperacji wyznaczają tymczasowe rejestry dla mikrokodu zaimplementowanego w adresującym układzie sekwencyjnym jednostki pobierającej instrukcje i wysyłającej mikrooperacje 832.
Układ przemianowywania rejestrów 834 odbiera uporządkowane logiczne mikrooperacje z szyny logicznych mikrooperacji 850 i generuje zestaw odpowiednich fizycznych mikrooperacji poprzez przemianowanie logicznych źródeł i logicznych przeznaczeń dla logicznych mikrooperacji. Układ przemianowywania rejestrów 834 odbiera uporządkowane logiczne mikrooperacje z szyny logicznych mikrooperacji 850, przemianowywuje logiczne źródła i logiczne przeznaczenie każdej z mikrooperacji na fizyczne źródła i fizyczne przeznaczenie, oraz przesyła uporządkowane mikrooperacje przez szynę fizycznych mikrooperacji 852.
Każda fizyczna mikrooperacja składa się z kodu operacyjnego odpowiadającego kodowi operacyjnemu logicznej mikrooperacji, pary fizycznych źródeł i fizycznego przeznaczenia. Każde fizyczne źródło może określać fizyczny rej estr lub zapewniać wartość danej natychmiastowej. Fizyczne rejestry źródłowe dla mikrooperacji określająfizyczne rejestry zawarte w układzie reorganizującym 842 i rejestry sprzętowe zawarte w układzie rzeczywistych rejestrów 844. Fizyczne przeznaczenia dla fizycznych mikrooperacji określają rejestry zawarte w układzie reorganizującym 842.
Układ przemianowywania rejestrów 834 przesyła logiczne przeznaczenia dla logicznych mikrooperacji przez szynę logicznych przeznaczeń 854. Logiczne przeznaczenia przesyłane przez szynę 854 identyfikują sprzętowe rejestry odpowiadające fizycznym przeznaczeniom na szynie fizycznych mikrooperacji 852.
Jednostka przydzielająca 836 śledzi dostępne źródła w układzie reorganizaującym 842, układzie rezerwującym i wysyłającym 838, oraz w układzie wykonawczym 840. Jednostka przydzielająca 836 przypisuje fizyczne przeznaczenia w układzie reorganizującym 842 i wejścia w układzie rezerwacji i wysyłania 838 fizycznym mikrooperacjom na szynie fizycznych mikrooperacji 852. Jednostka przydzielająca 836 przypisuje również wejścia bufora pobierania w buforze
178 832 reorganizującym pamięci w układzie wykonawczym 840 fizycznym mikrooperacjom na szynie fizycznych mikrooperacji 852, które mająkod operacyjny oznaczający operację pobrania z pamięci.
Jednostka przydzielająca 836 przesyła przydzielone fizyczne przeznaczenia do układu przemianowywania rejestrów 834 przez szynę fizycznych przeznaczeń 856. Przydzielone fizyczne przeznaczenia określają fizyczne rejestry w układzie reorganizującym 842 dla buforowania spekulatywnych wyników fizycznych mikrooperacji. Przydzielone fizyczne przeznaczenia są używane przez układ przemianowywania rejestrów 834 do przemianowania logicznych przeznaczeń dla logicznych mikrooperacji na fizyczne przeznaczenia.
Jednostka przydzielająca 836 przydziela fizyczne rejestry układu reorganizującego 842 fizycznym mikrooperacjom w takiej samej kolejności, w jakiej logiczne mikrooperacje sąodbierane z szyny logicznych mikrooperacji 850. Układ przydzielający 836 przechowuje wskaźnik przydziału, który wskazuje na następny zbiór kolejnych fizycznych rejestrów w układzie reorganizującym 842 dla każdego zestawu logicznych mikrooperacji 850 odbieranych z szyny. Uporządkowanie fizycznych rejestrów przypisanych do fizycznych operacji w układzie reorganizującym 842 odpowiada uporządkowaniu pierwotnych logicznych mikrooperacji.
Jednostka przydzielająca 836 wyznacza wejścia sekcji rezerwacji dla fizycznych mikrooperacji na szynie fizycznych mikrooperacji 852, poprzez przesyłanie sygnałów wyboru wejścia układu rezerwacji i wysyłania 836 na szynę wyboru sekcji rezerwacji 866.
Jednostka przydzielająca 836 przypisuje wejścia bufora pobierania każdej fizycznej mikrooperacji na szynie fizycznych mikrooperacji 852, która posiada kod operacyjny określający instrukcję pobrania z pamięci. Jednostka przydzielająca 836 przypisuje wejścia bufora pobierania poprzez przesłanie identyfikatorów bufora pobierania do układu rezerwacji i wysyłanie 838 przez szynę identyfikatorów buforów pobierania 872.
Układ rezerwacji i wysyłania 838 zatrzymuje fizyczne mikrooperacje czekające na wykonanie przez układ wykonawczy 840. Układ 838 otrzymuje uporządkowane fizyczne operacje z szyny fizycznych mikrooperacji 852, kompletuje dane źródłowe dla fizycznych mikrooperacji i wysyła fizyczne mikrooperacje do układu wykonawczego 840.
Układ rezerwacji i wysyłania 838 otrzymuje fizyczne mikrooperacje z szyny fizycznych mikrooperacji 850 i przechowuje fizyczne mikrooperacje w dostępnych wejściach układu rezerwacji. Układ rezerwacji i wysyłania 838 kompletuje dane fizycznych mikrooperacji i wysyła fizyczne mikrooperacje do odpowiedniej jednostki wykonawczej w odpowiednim układzie wykonawczym 840, gdzie dane źródłowe są kompletowane.
Układ rezerwacji i wysyłania 838 otrzymuje dane źródłowe dla zawieszonych mikrooperacji z układu reorganizującego 842 i układu rzeczywistych rejestrów 844 przez szynę danych źródłowych 858. Układ 838 otrzymuje również dane źródłowe dla zawieszonych mikrooperacji z jednostki wykonawczej 840 przez szynę wynikową 840 w czasie zapisu powrotnego spekulatywnych wyników z układu wykonawczego 840 do układu reorganizującego 842.
Układ rezerwacji i wysyłania 838 wysyła fizyczne mikrooperacje, posiadające dołączone skompletowane dane źródłowe, do wykonania. Układ 838 wysyła gotowe fizyczne mikrooperacje do układu wykonawczego 840 przez szynę wysyłania mikrooperacji 860. Układ 838 przesyła mikrooperacje do wysyłania w sposób nieuporządkowany, zgodnie z dostępnością danych źródłowych dla fizycznych mikrooperacji, oraz zgodnie z zasobami jednostki wykonawczej w układzie wykonawczym 840.
Układ wykonawczy 840 wysyła z powrotem spekulatywne wyniki z nieuporządkowanego wykonania fizycznych mikrooperacji do układu reorganizującego 842 przez szynę wyników 862. Zapis powrotny spekulatywnych wyników jest wykonywany w sposób nieuporządkowany („out of order”) z powodu nieuporządkowanego wysyłania fizycznych mikrooperacji przez układ rezerwacji i wysyłania 838, i zróżnicowanie liczby cykli procesora 822 niezbędnych do wykonania różnych typów mikroinstrukcji.
W jednym przykładzie wykonania, układ wykonawczy 840 zawiera zestaw pięciu jednostek wykonawczych Eu0-EU4. Układ rezerwacji i wykonania 838 wysyła współbieżnie do pięciu mikrooperacji do jednostek wykonawczych EU0-EU4 przez szynę wysyłania mikrooperacji 860.
178 832
Jednostka wykonawcza EUO wykonuje funkcje jednostki arytmetyczno logicznej (ALU), takie jak mnożenie i dzielenie stałoprzecinkowe, jak również dodawanie, odejmowanie, mnożenie i dzielenie zmiennoprzecinkowe. Jednostka wykonawcza EU 1 spełnia stałoprzecinkowe funkcje ALU oraz wykonuje operacje skoku. Jednostka wykonawcza EU2 wykonuje operacje pobrania stało i zmiennoprzecinkowego z pamięci, jak również pobieranie liniowych adresów i rejestrowe operacje na segmentach. Jednostka wykonawcza EU3 wykonuje operacje stało i zmiennoprzecinkowego ładowania, oraz rejestrowe operacje na segmentach. Jednostka wykonawcza EU4 wykonuje operacje stało i zmiennoprzecinkowego ładowania danych.
Układ reorganizujący 842 zawiera fizyczne rejestry, które buforują spekulatywne wyniki fizycznych mikrooperacji. Każdy fizyczny rejestr w układzie reorganizującym 842 może przyjmować wartości stało i zmiennoprzecinkowe.
Układ rzeczywistych rejestrów 844 zawiera rejestry, które odpowiadają rej estrom sprzętowym pierwotnego strumienia makroinstrukcji. Każdy rejestr w układzie rejestrów rzeczywistych może przyjmować dane stało i zmiennoprzecinkowe.
W jednym przykładzie wykonania, rejestry układu rejestrów rzeczywistych 844 zawierają rejestry EAX, EBX, ECX i EDX, zgodnie z architekturą mikroprocesora Intel, jak również znaczniki zgodne z architekturą mikroprocesora Intel. Układ rzeczywistych rejestrów 844 zawiera również rejestry używane przez mikrokod wykonujący instrukcje w układzie pobierania instrukcji i wysyłania mikroinstrukcji 832.
Układ reorganizujący 842 i układ rzeczywistych rejestrów 844 otrzymują fizyczne mikroopęracje z szyny fizycznych mikrooperacji 852. Fizyczne źródła dla fizycznych mikrooperacji określają fizyczne rejestry w układzie reorganizującym i rejestry w układzie rejestrów rzeczywistych 844, które przechowują dane źródłowe dla fizycznych mikrooperacji.
Układ reorganizujący 842 i układ rejestrów rzeczywistych 844 odczytują dane określone przez fizyczne źródła i przekazująte dane źródłowe do układu rezerwacji i wysyłania 838 przez szynę danych 858. Każde fizyczne źródło dla fizycznej mikrooperacji zawiera znacznik ważności rejestru rzeczywistego (RRFV), który oznacza, czy dana znajduje się w fizycznym rejestrze w układzie reorganizującym 842, czy w rejestrze w układzie rejestrów rzeczywistych 844.
Fizyczne przeznaczenia dla fizycznych mikrooperacji na szynie fizycznych przeznaczeń 852 określają fizyczne rejestry w układzie reorganizującym 842 do buforowania spekulatywnych wyników przy nieuporządkowanym wykonywaniu fizycznych mikrooperacji. Układ reorganizujący 842 otrzymuje fizyczne przeznaczenia dla fizycznych mikrooperacji z szyny fizycznych mikrooperacji 852 i oczyszcza fizyczne rejestry określone przez fizyczne przeznaczenia.
Układ reorganizujący 842 otrzymuje logiczne przeznaczenia odpowiadające fizycznym mikrooperacjom z szyny logicznych przeznaczeń 854, oraz przechowuje logiczne przeznaczenia w fizycznych rejestrach określonych przez fizyczne przeznaczenia fizycznych mikrooperacji. Logiczne przeznaczenia w fizycznych rejestrach układu reorganizującego określają rejestry w układzie rejestrów rzeczywistych 844 dla wycofania fizycznych mikrooperacji.
Układ logiczny wycofywania narzuca porządek fizycznych mikrooperacj i poprzez spowodowanie wpływu spekulatywnych rezultatów trzymanych w fizycznych rejestrach układu reorganizującego na stany urządzenia, w takiej samej kolejności, wjakiej zostały odebrane pierwotne mikrooperacje. Układ wycofywania 846 powoduje przesyłanie spekulatywnych danych wynikowych w układzie reorganizującym 842 do odpowiednich rejestrów w układzie rejestrów rzeczywistych 844 przez szynę wycofywania 864. W jednym przykładzie realizacji, układ logiczny wycofywania 846 wycofuje do czterech fizycznych rejestrów w czasie każdego cyklu procesora 822. W innym przykładzie wykonania, układ wycofywania 846 wycofuje do trzech fizycznych rejestrów w czasie każdego cyklu procesora 822 dla zminimalizowania martwego obszaru w układzie.
Układ wycofywania 846 powoduje również, że układ reorganizujący 842 przesyła wartości zmiany wskaźnika makroinstrukcji dla wycofywanych fizycznych mikrooperacji przez szynę przesunięcia wskaźnika makroinstrukcji 820 w czasie wycofywania.
178 832
Układ restartujący 848 otrzymuje wartość zmiany wskaźnika makroinstrukcji z szyny przesunięcia wskaźnika makroinstrukcji 820. Układ restartujący 848 wylicza nową wartość wskaźnika instrukcji na podstawie zmiany wskaźnika makroinstrukcji dla wejść wycofywania ROB.
Układ logiczny wycofywania 848 utrzymuje wskaźnik wycofywania wskazujący na fizyczne rejestry w układzie reorganizującym 842. Wskaźnik wycofania wskazuje na zbiór kolejnych fizycznych rejestrów do wycofania. Wskaźnik wycofania podąża za wskaźnikiem przydziału fizycznych rejestrów w układzie reorganizującym 842 podczas, gdy w tym samym czasie układ wycofywania wycofuje spekulatywne wyniki fizycznych rejestrów do realizacji. Układ wycofywania 846 wycofuje fizyczne rejestry po kolei, ponieważ fizyczne rejestry były przydzielane mikrooperacjom również po kolei. Układ wycofywania 846 wysyła fizyczne przeznaczenia do wycofywania, określone przez wskaźnik wycofywania, przez szynę wycofywania 870. Bufor sterujący pamięcią w układzie wykonawczym 840 otrzymuje fizyczne przeznaczenia do wycofania i wysyła zestaw restartujących sygnałów sterujących pamięci 876. Restartujące sygnały sterujące pamięci 876 wskazują, czy operacja pobrania z pamięci odpowiadająca jednemu z wycofywanych przeznaczeń spowodowała możliwe zakłócenie spójności rozkazowej procesora. Restartujące sygnały sterujące pamięci 876 wskazują, które z wycofywanych fizycznych przeznaczeń spowodowało możliwe zakłócenie spójności rozkazowej procesora.
Restartujące sygnały sterujące pamięci 876 są odbierane przez układ restartujący 848. Jeżeli restartujące sygnały sterujące pamięci 876 wskazują możliwe zakłócenie spójności rozkazowej procesora, układ restartujący 848 generuje reorganizujący sygnał anulowania 878. Reorganizujący sygnał anulowania 878 powoduje, że układ reorganizujący 842 anuluje spekulatywne wyniki dla niewycofanych fizycznych mikrooperacji. Reorganizujący sygnał anulowania 878 powoduje, że układ rezerwacji i wysyłania 838 anuluje zawieszone mikrooperacje, które czekały do wysłania do układu wykonawczego 840. Reorganizujący układ wykonywania 878 powoduje również, że układ przydzielający 836 resetuje wskaźnik przydziału na alokowane fizyczne rejestry w układzie reorganizującym 842, oraz powoduje, że układ wycofywania 846 resetuje wskaźnik wycofywania na wycofywane fizyczny rejestry.
Jeśli restartujące sygnały sterujące pamięci 876 wskazują możliwe zakłócenie spójności rozkazowej procesora, układ restartujący 848 wykorzystuje wartość zmiany wskaźnika makroinstrukcji odebraną z szyny przesunięcia wskaźnika makroinstrukcji 820 do wyliczenia wartości wskaźnika na instrukcję restartu. Wartość wskaźnika instrukcji restartu określa makroinstrukcję odpowiadającą fizycznej mikrooperacji, która spowodowała możliwe zakłócenie spójności rozkazów. Układ restartujący 848 przesyła wartość wskaźnika na restartowaną instrukcję do układu pobierającego instrukcje i wysyłającego mikroinstrukcje 832 przez szynę wektora restartu 822.
Układ pobierający instrukcje i wysyłający mikroinstrukcje 832 odbiera wartość wskaźnika na restartowaną instrukcję z szyny wektora restartu 822. Reorganizujący sygnał anulowania 878, powoduje że adresujący układ sekwencyjny mikroinstrukcji układu pobierającego i wysyłającego mikroinstrukcje 832 wysyła uporządkowany strumień logicznych mikrooperacji, które zostały anulowane w układzie reorganizującym 842 przed wycofaniem. Układ pobierający instrukcje i wysyłający mikroinstrukcje 832 ponownie wysyła logiczne mikroinstrucje poprzez pobieranie strumienia makroinstrukcji rozpoczynającego się od nowej wartości wskaźnika instrukcji, oraz przekształcenie strumienia makroinstrukcji na logiczne mikrooperacje, oraz przesłanie logicznych mikrooperacji przez szynę logicznych mikrooperacji 850.
Jeśli restartujące sygnały sterujące pamięci 876 nie wskazują możliwego zakłócenia spójności rozkazowej procesora, wówczas wykonuje się wycofywanie fizycznych rejestrów określonych przez wycofywane fizyczne przeznaczenia. Układ reorganizujący 842 resetuje znaczniki ważności dla wycofywanych fizycznych przeznaczeń. Układ reorganizujący 842 wycofuje spekulatywne wyniki każdego z wycofywanych fizycznych rejestrów, jeśli ten znacznik ważności określa ważną daną. Układ reorganizujący 842 wycofuje fizyczne rejestry przez spowodowanie przesłania spekulatywnych danych do rejestrów w układzie rejestrów rzeczywistych 844, określonych przez logiczne przeznaczenia w fizycznym rejestrze.
178 832
Układ przemianowywania rejestrów 834 i układ przydzielający 836 odbierają wycofywane fizyczne przeznaczenia z szyny wycofywania 870. Układ przemianowywania rejestrów 834 odpowiednio zmienia tablicę przemianowań w celu zaznaczenia wycofania. Układ przydzielający 836 oznacza wycofane fizyczne rejestry w układzie reorganizującym 842 jako dostępne do ponownego przydzielenia.
Figura 9 przedstawia system komputerowy 910 zgodny z niniejszym wynalazkiem. Ten system komputerowy zawiera szynę systemową 912, która może oznaczać liczne odrębne szyny, takie jak główna szyna systemowa, szyna komunikacji międzyprocesorowej, szyna sieci lokalnej, oraz inne szyny, z których każda zawiera grupy linii spełniających jedną lub większą ilość funkcji, takich jak transmisja danych, adresów i informacji sterujących.
Dla jasności opisu, na fig. 9 wszystkie szyny zostały zaprezentowane jako jedna szyna 912, która będzie odtąd nazywana szyną zewnętrzną 912. Inne podobne uproszczenia zostały tutaj wykonane dla większej przejrzystości dla czytelnika. Prawdziwy zakres wynalazku nie powinień być rozumiany w sposób ograniczony przez te uproszczenia.
Do zewnętrznej szyny dołączeni sąróżni reprezentanci elementów systemu komputerowego, wliczając w to podsystem RAM, oraz napęd dysku twardego (HD). Inne podobne elementy mogą być również dołączone do zewnętrznej szyny.
Do zewnętrznej szyny dołączone sąjeden lub więcej CPU. Mogą również być dołączone jeden lub więcej wtyków do przyjmowania dodatkowych CPU. Takie dodatkowe CPU mogą być dodawane do systemu dla poprąwyjego działania; mogąstanowić nadbudowę unowocześniającą istniejące już CPU, lub mogą być dodatkowymi układami wieloprocesorowymi CPU, które współpracująz istniejącymi CPU, lub mogą być rozszerzeniami takimi jak koprocesory matematyczne lub akceleratory graficzne, pracujące jako uzupełnienia dla pozostałych CPU. Taki wieloprocesorowy system MP może mięć strukturę homogeniczną, zawierającą CPU o tylko jednym typie architektury, lub mieć strukturę heterogeniczną, zawierającą procesory o różnych architekturach. W jednym przykładzie wykonania, układy CPU mogą być mikroprocesorami o architekturze Intela. W każdym przypadku, wtyk (wtyki) mogą akceptować dodatkowe CPU z przynależącymi do nich pamięciami (pamięcią) podręcznymi L1 i opcjonalnie pamięciami (pamięcią) podręcznymi L2.
Jeden lub więcej CPU może posiadać elementy opisane poniżej w odniesieniu do przykładowego CPU 914, oraz dowolny wtyk (wtyki) może dostarczać połączenie dla tych elementów w dodatkowych (dodatkowym) CPU.
CPU może oczywiście zawierać dodatkowe elementy poza tymi pokazanymi na fig. 9. Inne elementy pominięto na fig. 9 również w celu uproszczenia. Na przykład, typowe elementy, takie jak jednostki wykonawcze stało i zmiennoprzecinkowe, nie zostały pokazane, jak również mniej dobrze znane elementy takie jak mechanizm generacji instrukcji w sposób nieuporządkowany („out-of-order”) lub spekulatywnego wykonywania instrukcji. Nie oznacza to, że wynalazek nie może wykorzystywać tych elementów, lub nawet wszystkich pokazanych szczegółów.
Jedynie dla celów przejrzystości, można stwierdzić, że CPU 914 jest odpowiednio obudowany i zawiera jednostkę kolejki żądań do szyny zewnętrznej EBRQ. CPU 914 zawiera również jednostkę logiczną EBRL kolejki żądań do szyny zewnętrznej, dołączoną do szyny zewnętrznej i do EBRQ.
CPU 914 zawiera jednostkę ustalania priorytetów i potwierdzania RPA dołączoną do EBRQ. Jednostka pobierania instrukcji IFU jest dołączona do RPA. Jednostka pamięci podręcznej danych DCU jest również dołączona do RPA. CPU może zawierać jeden poziom pamięci podręcznej L1, albo w postaci jednolitej pamięci podręcznej albo, jak pokazano na fig. 9, w postaci pamięci podręcznej danych Ll DCU i pamięci podręcznej instrukcji L1 IFU.
CPU 914 zawiera również jednostkę logiczną śledzenia statusu STL połączonąz EBRQ. STL jest dołączona do szyny zewnętrznej i szyny bocznej, albo bezpośrednio, jak pokazano, albo pośrednio, i dostarcza informację wskazującą statusy odpowiednich szyn. Taka informacja o statusie może określić, na przykład, czy szyna jest zajęta, czy wykonuje podglądanie, czy obsługuje błędy parzystości, oraz nieść wszystkie inne tego typu informacje, które mogą być przydatne w
178 832 realizacji sposobu według wynalazku. STL może ponadto przechowywać informacje o: statusie danej wycofanej z zewnętrznej szyny, statusie danej wysłanej do pamięci podręcznej L1 (danych i/lub instrukcji), statusie danej wysłanej do pamięci podręcznej L2, stanie pamięci podręcznej danych, np. zgodnym z MESI, statusie podglądania żądań, informacji stosowanej dla zwrócenia danej z pamięci podręcznej L2, oraz o statusie błędu, takim jak status błędu adresu, błędu danych i/lub błędu odpowiedzi szyny. STL może również przechowywać informacje o statusie każdego żądania, takie informacje o statusie obejmują: informacje, czy żądanie jest zawieszone i obsługiwane przez BBL/L2, czy żądanie jest obecnie obsługiwane przez BBL/L2, czy żądanie jest zawieszone na szynie zewnętrznej, czy żądanie jest zawieszane do obsługi powrotu do BBL/L2, czy dana jest zwracana do BBL/L2, oraz czy żądanie jest wykonane/skompletowane.
Jednostka logiczna kolejki żądań do szyny bocznej BSBRL jest połączona z EBRQ i jednostką logiczną szyny bocznej BBL.
BBL łączy CPU 914 z pamięcią podręczną, na przykład jednostkę drugiego poziomu (L2) pamięci podręcznej. Pamięć podręczna L2 może być umieszczona w CPU jako jednolity lub wieloczęściowy moduł, lub może być skonstruowana jako fizycznie oddzielny pakiet. W jednym przykładzie wykonania którejkolwiek z tych konfiguracji, pamięć podręczna L2 może z korzyścią być połączona z CPU 914 przez bocznąszynę 916. Zmniejszy to ruch na szynie zewnętrznej 912.
Należy podkreślić, że wielopoziomowy hierarchiczny system pamięci może posiadać różne rodzaje konfiguracji. W niektórych konfiguracjach, może zawierać pamięć wirtualną, w której część twardego dysku jest traktowana jako jeszcze jeden poziom pamięci podręcznej.
W systemie z fig. 9, różne składniki takie jak DCU, iFu, BBL/L2, liczne CPU, DMA mogą pracowaćjako zespoły wysyłające i przyjmujące żądania z/do szyny zewnętrznej. EBRQ akceptuje żądania szyny od dowolnego zespołu w CPU/L2 i kolej no wysyłaje na i z zewnętrznej szyny. W pokazanym przykładzie, EBRQ przechwytuje żądania szyny zewnętrznej do i z DCU, IFU i BBL/L2.
Różne zespoły szyny mogą wykonywać różne żądania szyny, zgodnie z różnymi przykładami wykonania wynalazku. W jednym przykładzie wykonania, takie żądania zawierają żądania odczytu i zapisu, i mogą być wysyłane przez DCU, IFU i BBL/L2, tak jak to pokazano w tabeli 1:
Tabela 1
Odczyt Zapis
DCU X X
IFU X
BBL/L2 X
Żądania odczytu i zapisu wysyłane przez DCU dotyczą oczywiście danych. Żądanie odczytu z IFU jest oczywiście pobraniem instrukcji. Żądania szyny zewnętrznej wykonywane przez DCU i IFU sązasadniczo skierowane do L2 pamięci kieszeniowej; operacje DCU i IFU na szynie zewnętrznej zostają wykonane po wcześniejszym przejrzeniu pamięci podręcznej L1 i związanym z tym chybieniu.
Żądanie BBL/L2 może być żądaniem „zapisu powrotnego zabrudzonej ofiary”. Gdy L2 pamięci podręcznej staje się zapełniona, nowy przydział linii wymaga, by któraś już zajęta linia została wypisana do pamięci. Ta wypisana linia pamięci podręcznej jest nazywana „ofiarą” wymiany linii pamięci podręcznej. Linia ta wymaga wypisania, jedynie jeśli zawiera dane, które zostały zmienione względem nie przechowywanej w pamięci podręcznej (lub przechowywanej na wyższym poziomie pamięci podręcznej) danej, którą ta linia reprezentuje. Tak zmieniona linia jest nazywana „zabrudzoną”. Jeśli niezabrudzona linia jest wskazana do usunięcia, nowa zawartość może być po prostu napisana na starej, ponieważ gdzieś istniejąca ta dana jest ciągle ważna pod tym adresem.
178 832
Konflikty szyny mogą wystąpić, gdy jeden żądający zespół nakazuje zapis pod dany adres, a inny zespół nakazuje odczyt lub zapis do tego samego adresu. Różne jednostki mogą działać zupełnie niezależnie od siebie, lecz mogą czasami żądać dostępu do tego samego adresu. Porządek, w jakim żądania do tego samego adresu są wypuszczane na zewnętrzną szynę, oraz sposób wjaki są obsługiwane, sąkrytyczne dla utrzymywania spójności pamięci. Różne schematy porządkowania rozkazów mogą być zastosowane, takie jak ścisłe lub słabe utrzymywanie kolejności rozkazów; Jednakże, jakikolwiek sposób zostałby użyty, musi on zapewniać spójność.
Gdy jedna jednostka żądająca wysyła zlecenie odczytu, a inna jednostka żądająca wysyła zlecenie zapisu, pierwsza z nich musi otrzymać daną, którą wysyła druga jednostka. Może to zostać osiągnięte przez zapewnienie zapisu na szynę zewnętrzną przed odczytem, oraz zapewnienia, że zapis zostanie zakończony. Albo, może to zostać osiągnięte przez zapewnienie alternatywnego mechanizmu dla jednostki żądającej odczytu dla otrzymywania danych z jednostki żądającej zapisu.
W przykładzie wykonania pokazanym na fig. 9, EBRQ akceptuje nowe żądania z IFU i DCU przez RPA, oraz wystawia te żądania do BBL przez BSBRL, tak by BBL mógł wyznaczyć, czym pamięć podręczna L2 zawiera żądany adres, lub innymi słowy, czy pamięć podręczna L2 zawiera linię przechowuj ącą daną spod danego adresu pamięci. Jeśli pamięć podręczna L2 wskaże chybienie, BBL sygnalizuje to i prosi o obsługę żądania przez zewnętrzną szynę. Może to oznaczać, że zostanie ono obsłużone przez pamięć podręczną L3 (nie pokazaną), na przykład, lub przez pamięć RAM. Jeśli żądanie jest żądaniem odczytu, oraz dana nie znajduje się w pamięci podręcznej L2, BBL może zrobić miejsce w pamięci podręcznej L2 dla danej, która zostanie zwrócona przez żądanie, poprzez usunięcie linii z pamięci podręcznej L2 w sposób opisany powyżej.
Figura 10 pokazuje dodatkowe szczegóły dotyczące EBRQ. EBRQ zawiera kolejkę 1020. W celu osiągnięcia wysokiej wydajności w szerokim zakresie zastosowań, kolejka 1020 może z korzyściąbyć kolejką typu FIFO do wybierania żądań do wysłania do BBL/L2 w celu obsłużenia. Inne schematy mogą być zastosowane w innych przykładach realizacji.
Kolejka 1020 zawiera jedno lub więcej wejścia. W przedstawionym przykładzie wykonania, zawiera ona cztery wej ścia ponumerowane od 0 do 3. Każde wej ście może zawierać różne informacje o odpowiednim żądaniu. Na przykład, wejście może zawierać identyfikator ID żądania, typ TYPE żądania taki jak odczyt czy zapis, adres ADDR do którego skierowane jest żądanie, oraz obecny STATUS żądania. Inne informacje, jeśli jest to pożądane, mogąbyć również tam zawarte.
Zarządca kolejki 1022 kontroluje przydział i zwolnienie wejść kolejki 1020. Nowe wejścia w kolejce są przydzielane, gdy żądanie z IFU lub DCU jest akceptowane przez RPA. Wejścia są zwalniane z kolejki, gdy zostały właściwie obsłużone przez BBL/L2, lub gdy zostały wysłane i właściwie obsłużone na szynie zewnętrznej i (opcjonalnie) zwrócone ich dane do BBL/L2, lub gdy wystąpi poważny błąd, który wymaga przedwczesnego zwolnienia, błąd taki jak niektóre błędy parzystości adresu lub błędy krytyczne odpowiedzi zwracane do zewnętrznej szyny. Stąd, zarządca pamięci 1022 pracuje we współpracy z RPA.
EBRQ może również zawierać listę 1024 zabrudzonych ofiar żądań do linii pamięci podręcznej L2. Może ona zawierać jedno lub więcej wejść. W przykładzie realizacji, zawiera ona dwa wejścia w adresach listy 0 i 1. Każde wejście może zawierać liczne informacje o usuwanych liniach, takie jak adres ADDR danych w linii, oraz STATUS żądania zapisu powrotnego.
Zarządca listy 1026 kontroluje przydzielanie i zwalnianie wejść w liście 1024.
Gdy nowe żądanie przychodzi z DCU lub IFU, zarządca 1022 przydziela następne dostępne wejście na końcu kolejki 1020, zgodnie z założonym algorytmem. Szczegóły algorytmu nie są krytyczne dla zrozumienia wynalazku. Należy jednak zaznaczyć, że nowe żądanie jest wstawiane na koniec kolejki FIFO.
Gdy żądanie w końcu osiąga wierzchołek FIFO, zarządca 1022 usuwa je i EBRQ wystawia je do BBL. Jeśli BBL nie jest w stanie obsłużyć żądania w danym momencie, z jakiegokol178 832 wiek powodu, odrzuca żądanie, a zarządca 1022 ponownie wstawia żądanie do kolejki. W jednym przykładzie wykonania, odrzucone żądanie jest zwracane na koniec FIFO.
Żądania, które są wystawiane mają zewnętrzną szynę mogą polegać takiemu samemu schematowi odrzucenia i ponownego wstawienia. Na przykład, błąd parzystości szyny zewnętrznej może zmusić do odrzucenia żądania i ponowienia go w późniejszym czasie.
W jednym przykładzie wykonania, żądania nie muszą być poddawane takim samym wymaganiom porządkowym, jak przedstawiono powyżej, względem innych żądań, lecz w takim przykładzie wykonania, musząbyć podjęte odpowiednie kroki dla zapewnienia spójności pamięci.
Powyżej przedstawiony schemat zapewnia, że żadne żądanie nie jest traktowane w sposób „niesprawiedliwy”, przy zapewnieniu dużej efektywności systemu. Jednakże, istnieją inne uwarunkowania, jakich dotyczy niniejszy wynalazek.
W przykładzie wykonania pokazanym na fig. 9, gdzie DCU, IFU i BBL/L2 mogą wysyłać żądania odczytu i zapisu, istnieją cztery typy problemów porządkowania pamięci, która musi być adresowana. Zostały one pokazane w tabeli 2:
Tabela 2
DCU odczytuje IFU odczytuje
DCU odczytuje BBL/L2 zapisuje
DCU lub IFU odczytuje BBL/L2 zapisuje
odczyt zewnętrzny wewnętrzny zapis
Przypadek konfliktu odczyt DCU - odczyt DCU jest ignorowany w przedstawionym przykładzie realizacji, ponieważ DCU nie wyśle dwóch żądań do tego samego adresu w sposób, który mógłby spowodować konflikt.
Czwarty przypadekjest obecny w systemie wieloprocesorowym. W tym przykładzie realizacji, żądanie odczytu spod zadanego adresu wysłane na zewnętrzną szynę przez jeden procesor nie może bezpośrednio poprzedzać żądania zapisu pod ten sam adres wysłanego na zewnętrzną szynę przez inny procesor do momentu, gdy nie zagwarantuje się, że żądanie odczytu podejrzało pamięć (pamięci) podręczną drugiego procesora i otrzymało zmodyfikowaną daną tam przechowywaną.
Pierwszy, drugi i trzeci przypadek są wewnętrzną domeną jednego CPU.
Przedstawione składniki systemu według niniejszego wynalazku współpracują dla realizacji różnych mechanizmów i sposobów zabezpieczania przed wystąpieniami problemów spójności pamięci w EBRQ. Mogą one obejmować w różnych przykładach wykonania: mechanizm blokowania tych samych adresów, mechanizm obsługi samomodyfikującego się kodu i mechanizm podglądania szyny, mechanizm żądania informacji potwierdzenia, bufor konfliktów adresów, oraz inne, ogólniejsze mechanizmy.
W jednym przykładzie wykonania, jak pokazano na fig. 9, CPU 914 zawiera ponadto mechanizm blokowania tych samych adresów 930, mechanizm samomodyfikacji kodu i podglądania 932, mechanizm żądania informacji powrotnej 934, oraz mechanizm buforowania konfliktów adresów 936.
Mechanizm blokowania tych samych adresów zapewnia, że nowe żądanie jest wystawiane do BBL w celu przejrzenia pamięci podręcznej L2, jego adres jest porównywany z każdym adresem w EBRQ odpowiadającym żądaniu, które właśnie przeszło przez pamięć podręcznąL2. Jeśli stwierdzono trafienie, nowe żądanie jest odrzucane przez BBL i wkładane na koniec FIFO, tak jak opisano powyżej.
Mechanizm samomodyfikacji kodu i samopodglądania zapewnia, że gdy żądanie IFU jest wystawiane do BBL w celu obsłużenia, podglądanie samomodyfikacji kodu jest wykonywane w DCU i EBRQ w celu wykrycia obecności zmodyfikowanej danej bądź istniejącej w DCU, bądź w procesie właśnie zapisywanym jako żądanie w EBRQ. Jeśli zmodyfikowana dana została zna24
178 832 leziona, żądanie jest wysyłane na zewnętrzną szynę z nakierunkokaniem samopodglądania lub spojrzenia powrotnego na zmodyfikowaną daną, do CPU.
Mechanizm żądania informacj i powrotnej zapewnia, że gdy BBL/L2 usunie zabrudzoną linię, adres jest poszukiwany w DCU i EBRQ, dla stwierdzenia, czy istnieje nowsza zmodyfikowana wersja tej samej danej. Jeśli stwierdzono, że istnieje, ofiara żądania szyny z pamięci podręcznej L2 jest po prostu usuwana z listy i nie jest nigdy wysyłana na zewnętrzną szynę.
Mechanizm buforowania konfliktowych adresów zapewnia, że gdy żądanie z dowolnego zespołu jest wysyłane na szynę zewnętrzną, jego adres jest przechowywany w buforze konfliktów adresu (nie pokazanym). Porównywania z tym buforem zabezpieczają CPU przed wysłaniem żądania pod ten sam adres, dopóki poprzednio wysłane żądanie nie zostanie zagwarantowane jako „bezpieczne”. Żądanie jest bezpieczne gdy przejdzie przez tzw. okno błędu i okno globalnej obserwacji, i wówczas istnieje gwarancja że zostało ono kompletnie zakończone.
Te mechanizmy wspólnie zabezpieczająpamięć przed wystąpieniem niespójności rozkazowej.
W przypadku, gdy DCU zapisuje i IFU odczytuje, jeśli odczyt IFU jest najpierw obsługiwany przez BBL, mechanizm podglądania samomodyfikacji kodu wykryje obecność wychodzącej zmodyfikowanej danej w EBRQ, oraz zmusi EBRQ do nakierowania szyny zewnętrznej na samopodglądanie CPU. Samopodglądanie spowoduje, że zmodyfikowana dana z zapisu przez DCU zostanie wypisana przez mechanizm niejawnego zapisu powrotnego z CPU, a zapis DCU zostanie odwołany.
W przypadku zapisu DCU i zapisu BBL/L2, gdy obecna jest zabrudzona linia ofiary w L2 pamięci podręcznej mechanizm żądania informacji powrotnej stwierdzi, że zapis DCU jest już w planach i odwoła żądanie zapisu BBL/L2.
W przypadku, gdy DCU czyta lub IFU czyta, a BBL/L2 zapisuje, jeśli odczyt DCU lub IFU wchodzi do FIFO w czasie, gdy BBL/L2 pisze pod ten sam adres, odczyt zostanie zablokowany by nie wyprzedzić zapisu BBL/L2, dzięki mechanizmowi blokowania tych samych adresów
W przypadku zewnętrzny odczyt - wewnętrzny zapis, mechanizm buforowania konfliktów adresów zapewni, by wewnętrzny zapis był wysłany na zewnętrzną szynę dopiero w momencie, gdy będzie zagwarantowane, że zewnętrzny odczyt został zakończony. Jeśli podglądanie natrafi na wychodzącą zmodyfikowaną daną, żądanie zapisu zostanie odwołane.
Figura 11 przedstawia układ reorganizujący 1142. Układ reorganizujący 1142 implementuje bufor reorganizujący 1182 zawierający zestaw wejść ROB od REO do REn. Te wejścia sąfizycznymi rejestrami, które buforują spekulatywne dane wynikowe z nieuporządkowanego wykonania fizycznych mikraaperαcji. W jednym przykładzie wykonania, wejścia ROB od REO do REn zawierają zestaw 1164 fizycznych rejestrów. W innym przykładzie wykonania, wejścia ROB od RE0 do REn zawierają zestaw 1140 fizycznych rejestrów.
Każde wejście ROB zawiera znacznik ważności V, daną wynikową, zestaw znaczników, maskę znacznika, logiczne przeznaczenie LDST, dane błędu, oraz zmianę wskaźnika instrukcji IPDELTA.
Wskaźnik ważności wskazuje, czy dana wynikowa odpowiedniego wejścia ROB jest ważna. Układ reorganizujący 1142 zeruje znaczniki ważności dla każdego nowo przydzielonego wejścia ROB dla wskazania nieważności danej wynikowej. Układ reorganizujący 1142 ustawia znacznik ważności, gdy spekulatywna dana wynikowa jest zapisywana z powrotem do wejścia ROB z układu wykonawczego 1140.
Dana wynikowa jest spekulatywnym rezultatem nieuporządkowanego wykonania odpowiednich fizycznych mikrainstrukcji. Dana wynikowa może być albo stało, albo zmiennoprzecinkowa. W jednym przykładzie wykonania, pole danej wynikowej każdego z wejść ROB od REO do REn zawiera 1186 bitów do przyjęcia zarówno wartości danej całkowitej, jak i zmiennoprzecinkowej.
Znaczniki i maska znaczników sąspekulatywnymi znacznikami sprzętowymi. Informacja przez nie niesiona jest przesyłana do wskaźników sprzętowych układu rejestrów rzeczywistych 1144 pod wpływem wycofania odpowiedniego wejścia ROB.
178 832
Logiczne przeznaczenie LDST określa rejestr w układzie rejestrów rzeczywistych 1144. Dana wynikowa z odpowiedniego wejścia ROB jest przesyłana do takiego rejestru określonego przez LDST w czasie wycofywania wejścia ROB.
Błąd danej niesie ze sobą informację dla mikrokodu obsługującego błędy, wykonywanego w układzie pobierania instrukcji i wysyłania mikrooperacji 1132. Gdy występuje błąd, mikrokod obsługujący ten błąd odczytuje dane błędu dla wyznaczenia przyczyny jego wystąpienia.
IPDELTA jest wartością zmiany wskaźnika instrukcji, która identyfikuje makroinstrukcję odpowiadającą fizycznym rejestrom.
Układ reorganizujący 1142 odbiera fizyczne mikrooperacje od pmop_0 do pmop_3 z szyny fizycznych mikrooperacji 1152. Układ reorganizujący 1142 odczytuje dane źródłowe określone przez fizyczne mikrooperacje od pmop_0 do pmop_3 z bufora reorganizującego 1182. Układ reorganizujący 1142 przesyła dane wynikowe i znaczniki ważności z wejść ROB określonych przez fizyczne źródła psrcl i psrc2 fizycznych mikrooperacji do układu rezerwacji i wysyłania 1138 przez szynę danych źródłowych 1158.
Na przykład, dane wynikowe i znaczniki ważności z wejść ROB określonych przez fizyczne źródła psrcl i psrc2 mikrooperacji pmop_O są przesyłane jak dane srcl/src2 data_0 przez szynę danych źródłowych 1158. Dane źródłowe srcl/src2 data_0 dostarczają dane źródłowe określone przez fizyczne źródła psrcl i psrc2 mikrooperacji pmop_0, jeśli odpowiednie wskaźniki ważności wskazują ważność danych źródłowych.
Podobnie, układ reorganizujący 1142 przesyła dane wynikowe i znaczniki ważności z odpowiednich wejść ROB jako dane źródłowe od srcl/src2 data_l do srcl/src2 data_3, przez szynę danych źródłowych 1158 dla fizycznych mikrooperacji od pmop_l do pmop_3.
Układ reorganizujący 1142 zeruje bity ważności wejść ROB określonych przez fizyczne przeznaczenia pdst fizycznych mikrooperacji odpmop_0 do pmop_3, odebrane z szyny fizycznych mikrooperacji 1152. Układ reorganizujący 1142 zeruje bity ważności dla wskazania, że odpowiednia dana wynikowa nie jest ważna, ponieważ fizyczne mikrooperacje od pmop_0 do pmop_3, które generują dane wynikowe, są właśnie zestawiane w układzie rezerwacji i wysyłania 1138.
Układ reorganizujący 1142 odbiera logiczne przeznaczenia od ldst_0 do ldst_3 i zmiany wskaźnika makroinstrukcji od mpid_0 do mpid_3, z szyny logicznych przeznaczeń 1154. Układ reorganizujący 1142 przechowuje logiczne przeznaczenia od ldst_0 do ldst_3 w polach LDST wejść ROB określonych przez fizyczne przeznaczenia pdst fizycznych mikrooperacji od pmop_0 do pmop_3. Układ reorganizujący 1142 przechowuje zmiany wskaźnika makroinstrukcji od mpid_0 do mpid_3 w polach IPDELTA wejść ROB określonych przez fizyczne przeznaczenia pdst fizycznych mikrooperacji od pmop_0 do pmop_3.
Na przykład, układ reorganizujący 1142 przechowuje ldst_0 i mpid_0 w LDST i IPDELTA wejść ROB określonych przez fizyczne przeznaczenia pdst_0 mikrooperacji pmop_0. Logiczne przeznaczenie w polu LDST wejścia ROB określa rejestr w układzie rejestrów rzeczywistych 1144 do wycofywania odpowiadającego mu wejścia ROB. Zmiana wskaźnika makroinstrukcji w polu IPDELTA wejścia ROB określa pierwotną makroinstrukcję z odpowiedniego wejścia ROB.
Układ reorganizujący 1142 odbiera zapis powrotny spekulatywnego wyniku z układu wykonawczego 1140 przez szynę wynikową 1162. Zapis powrotny spekulatywnego wyniku z jednostek wykonawczych od EU0 do EU4 obejmuje dane wynikowe, fizyczne przeznaczenia pdst i dane błędu.
Układ reorganizujący 1142 przechowuje zapis powrotny spekulatywnego wyniku z jednostek wykonawczych EU0 do EU4 w wejściach ROB określonych przez fizyczne przeznaczenia pdst na szynie wynikowej 1162. Dla każdej jednostki wykonawczej od EU0 do EU4, układ reorganizujący 1142 przechowuje dane wynikowe w obszarze danych wynikowych, oraz przechowuje dane błędu w polu danych błędu wejścia ROB określonego przez fizyczne przeznaczenie pdst.
Każda z danych wynikowych z układu wykonawczego 1140 zawiera znacznik ważności. Każdy znacznik ważności jest przechowywany w polu znacznika ważności wejścia ROB okre26
178 832 ślonego przez fizyczne przeznaczenie pdst. Jednostki wykonawcze od EU0 do EU4 ustawiają znaczniki ważności, gdy odpowiadające im dane są ważne.
Układ reorganizujący 1142 odbiera wycofane fizyczne przeznaczenia z szyny wycofywania 170. Wycofanie fizycznych przeznaczeń powoduje, że układ reorganizujący przekształca spekulatywne dane wynikowe w wejściach ROB od RE0 do REn na nowy stan urządzenia, poprzez przesłanie spekulatywnych danych wynikowych do układu rejestrów rzeczywistych 1144 przez szynę wycofywania 1164.
Szyna wycofywania 1164 przenosi spekulatywne wyniki dla zestawu wycofywanych mikrooperacji od rm_0 do rm_4. Każda wycofywana mikrooperacja od rm_0 do rm_4 zawiera daną wynikową i logiczne przeznaczenie ldst z jednego z wejść ROB od REO do Ren.
Wycofywanie fizycznych przeznaczeń z układu wycofywania 1146 również powoduje, że układ reorganizujący 1142 przesyła zmianę wskaźnika makroinstrukcji dla wycofywanych wejść ROB do układu restartującego 1148 przez szynę przesunięcia wskaźnika makroinstrukcji 1120.
Układ reorganizujący 1142 odbiera reorganizujący sygnał zerowania 1178 z układu restartującego 1148. Reorganizujący sygnał zerowania 1178 powoduje, że układ reorganizujący 1142 wyzeruje wszystkie wejścia ROB.
Figura 12 przedstawia układ pobierania z pamięci w układzie wykonawczym 1240. Układ pobierania z pamięci zawiera układ generacji adresu 1200, układ reorganizujący pamięci 1202, układ bufora translacji adresów DTLB 1204, oraz układ pamięci podręcznej danych 1206.
Układ generacji adresu 1200 otrzymuje wysłane fizyczne mikrooperacje pobrania z pamięci z układu rezerwacji i wysyłania 1238 przez szynę wysyłania mikrooperacji 1260. Każda wysłana dotycząca pobrania z pamięci fizyczna mikrooperacja na szynie wysłanych mikrooperacji 1260 zawiera kod operacyjny, parę danych źródłowych src_l i src_2, fizyczne przeznaczenie pdst, oraz identyfikatora bufora pobrania Ibid.
Układ generacji adresu 1200 wyznacza liniowy adres dla każdej wysłanej mikrooperacji dotyczącej pobrania z pamięci zgodnie z wartościami danych źródłowych src_l_data i src_2_data. Liniowy adres może być również rozumiany jako adres wirtualny. W jednym przykładzie wykonania, układ generacji adresu 1200 implementuje rejestry segmentowe pamięci i generuje liniowy adres zgodnie z segmentacjjąpamięci zgodnąz architekturąmikroprocesora Intel.
Układ generacji adresu 1200 przesyła liniowe mikrooperacje pobrania z pamięci do układu reorganizującego pamięci 1202 przez szynę liniowych operacji 1290. Każda liniowa operacja pobrania z pamięci z szyny liniowych operacji 1290 odpowiada wysłanej fizycznej mikrooperacji pobrania z pamięci odebranej z szyny wysyłanych mikrooperacji 1260. Każda liniowa mikrooperacja pobrania z pamięci zawiera kod operacyjny odpowiadającej pobraniu z pamięci fizycznej mikrooperacji, liniowy adres l_addr wyznaczony z odpowiadających wartości danych źródłowych src_l_data i src_2_data, odpowiadającego fizycznego przeznaczenia pdst, oraz odpowiadającego identyfikatora bufora pobrania Ibid.
Układ reorganizujący pamięci 1202 zawiera bufor pobrania. Układ reorganizujący pamięci 1202 odbiera liniowe mikrooperacje pobrania z pamięci z szyny liniowych mikrooperacji 1290. Układ reorganizujący pamięci 1202 przechowuje liniowe mikrooperacje pobrania z pamięci w buforze pobrania, zgodnie z odpowiadającym identyfikatorem bufora pobrania Ibid. Układ reorganizujący pamięci 1202 wysyła liniowe operacje pobrania z pamięci do układu DTLB 1204 przez szynę liniowych operacji 1290.
Układ DTLB 1204 otrzymuje wysłane liniowe mikrooperacje pobrania z pamięci, z układu reorganizującego pamięci 1202 przez szynę liniowych mikrooperacji 1290. Układ DTLB 1204 dostarcza fizyczny adres dla układu pamięci kieszeniowej danych 1206 przez szynę odczytów 1294 dla każdej liniowej mikrooperacji pobrania z pamięci odebranej z układu reorganizującego pamięci 1202.
Układ DTLB 1204 przekształca odpowiedni liniowy adres na fizyczny adres w podsystemie pamięci 1226. Układ DTLB 1204 sprowadza liniowy adres każdej z liniowych mikrooperacji pobrania na fizyczny adres zgodnie z założonym mechanizmem stronicowania.
178 832
Układ DTLB 1204 przesyła przekształcony fizyczny adres odpowiadający liniowemu adresowi l_addr każdej z mikrooperacji pobrania z pamięci do układu reorganizującego pamięci 1202 przez szynę fizycznych adresów 1296. Układ reorganizujący pamięci 1202 przechowuje fizyczne adresy dla każdej liniowej mikrooperacji pobrania z pamięci w odpowiednich wejściach bufora. W jednym przykładzie wykonania, układ reorganizujący pamięci 1202 przechowuje część fizycznych adresów dla każdej liniowej mikrooperacji pobrania z pamięci w odpowiednim wejściu bufora pobrania.
Układ pamięci podręcznej danych 1206 odczytuje dane określone przez fizyczny adres na szynie odczytów 1294. Jeśli fizyczny adres powoduje chybienie w pamięci podręcznej, układ pamięci podręcznej danych 1206 pobiera żądaną linię z podsystemu pamięci 1226. Układ pamięci podręcznej danych 1206 pobiera żądaną linię z podsystemu pamięci 1226 z interfejsu szyny 1274 przez układ interfejsu szyny 1230, który jest dołączony do szyny wieloprocesorowej 1228.
Układ pamięci podręcznej danych 1206 przesyła odczytane dane wynikowe, odpowiadający im bit ważności, oraz dane błędu dla dostępu odczytu do układu reorganizującego 1242 i układu rezerwacji i wysyłania 1238 przez szynę wyników 1262. Szyna wyników 1262 przenosi również fizyczne przeznaczenie z odpowiedniego bufora pobierania w układzie reorganizującym pamięci 1202.
Układ reorganizacji pamięci śledzi i „podgląda” cykle szyny na szynie wieloprocesorowej 1228 przez układ interfejsu szyny 1230 na szynie interfejsu 1274. Układ reorganizujący pamięci 1202 „podgląda” szynę wieloprocesorową 1228 ze względu na zewnętrzne operacje ładowania lub odczyuwcelu stwierdzenia przywłaszczenia operacji przezjeden procesor 1223 - 1224,które może spowodować zakłócenie spójności rozkazowej procesora dla jednej z wysłanych liniowych mikrooperacji pobrania. Układ reorganizujący pamięci 1202 podgląda” szynę wieloprocesorową 1228 ze względu na zewnętrzną operację ładowania skierowaną pod fizyczny adres ten sam co adres właśnie wysłanej liniowej mikrooperacji pobrania z pamięci, przechowywanej w buforze pobierania.
W czasie wycofywania każdej z fizycznych mikrooperacji pobierania z pamięci, układ reorganizujący pamięci 1202 generuje reorganizujące sygnały restartujące 1276 wskazujące możliwość zakłócenia spójności rozkazowej procesora zgodnie z detekcją wykonywaną poprzez podglądanie.
Figura 13 przedstawia procesor 1320 z jednego przykładu wykonania. Procesor 1320 zawiera wewnętrznąpamięć podręczną danych 1302, układ dostępu do pamięci 1304, potok pobierania instrukcji 1306, układ wysyłający w sposób nieuporządkowany („out-of-order”) 1308, oraz układ wykonawczy 1310. Procesor 1320 zawiera ponadto układ kolejki porządkującej 1300, układ kolejki podglądania 1312, oraz układ kolejki odłożonych transakcji 1314.
Potok pobierania instrukcji 1306 pobiera strumień instrukcji z podsystemu pamięci 1326 zgodnie z sekwencyjnym porządkiem programu. Potok pobierania instrukcji 1306 przesyła strumień instrukcji do układu wysyłającego w sposób nieuporządkowany 1308. Układ wysyłający w sposób nieuporządkowany 1308 wysyła instrukcje ze strumienia instrukcji do układu wykonawczego 1310 zgodnie z dostępnościądanych źródłowych dla instrukcji i zasobami układu wykonawczego 1310, a nie z sekwencyjnym porządkiem programu.
Układ wysyłający w sposób nieuporządkowany 1308 wysyła instrukcje dostępu do pamięci, obejmujące instrukcje pobrania i załadowania z/do układu dostępu do pamięci 1304. Układ dostępu do pamięci 1304 wykonuje dostęp do pamięci poprzez wykonanie dostępu do wewnętrznej pamięci podręcznej 1302. Układ dostępu do pamięci 1304 wprowadza transakcję komunikacji do układu kolejki transakcji odłożonych 1314. Każde wejście w tym układzie 1314 odpowiada transakcji komunikacji wysłanej przez procesor 1320 przez szynę 1330. Każde wejście w układzie kolejki transakcji odłożonych 1314 wskazuje, że odpowiednia transakcja komunikacji jest odłożona, oraz wskazuje końcowy stan linii pamięci podręcznej zgodnie z wypełnieniem transakcji komunikacji.
Układ uporządkowanej kolejki 1300 rejestruje informacje o transakcjach na szynie 1330. Każde wejście układu uporządkowanej kolejki 1300 odpowiada transakcjom na szynie 1330. Ka28
178 832 żde wejście układu uporządkowanej kolejki 1300 zawiera status sygnałów DEFER i HITM dla odpowiednich transakcji. Układ kolejki zawieszonych transakcji 1314 otrzymuje informacje, na podstawie której wyznacza końcowy stan pamięci podręcznej dla transakcji komunikacji z układu uporządkowanej kolejki 1300.
Układ kolejki podglądania 1312 odczytuje status sygnałów DEFER i HITM z układu uporządkowanej kolejki 1300. Układ kolejki podglądania 1312 wyznacza podglądane przypisania przesłań dla każdego wejścia układu uporządkowanej kolejki 1300. Układ podglądania kolejki 1312 wyznacza, czy transakcja wymaga, by procesor 1320 przejął na własność podglądanie dla linii kieszeniowej, czy przełożył podglądane przejęcia dla linii pamięci kieszeniowej, lub odzyskał podglądany przydział w czasie opóźnionej transakcji.
Układ dostępu do pamięci 1304, oraz układ kolejki odłożonych transakcji 1314 utrzymują stan linii pamięci podręcznej 1302. Stany pamięci podręcznej dla wewnętrznych danych 1302 obejmują: stan zmodyfikowany, wyłączny, dzielony, oraz nieważny. Linia pamięci podręcznej w stanie nieważnym nie jest zmienną w wewnętrznej pamięci podręcznej danych 1302.
Linia pamięci podręcznej w stanie zmodyfikowanym jest przechowywana w postaci zmodyfikowanej w wewnętrznej pamięci podręcznej danych 1302. Zmodyfikowana linia pamięci podręcznej nie jest obecna w podsystemie pamięci 1326, lub w ważnym stanie w jakiejkolwiek innej wewnętrznej pamięci podręcznej procesorów 1321 - 1323 lub w podsystemie wejścia/wyjścia 1325. Podobnie, zmodyfikowana linia pamięci podręcznej 1302 nie jest przechowywana w podsystemie pamięci 1355 lub w jakiejkolwiek innej pamięci podręcznej danych procesorów 1350 - 1352 lub w podsystemie wejścia-wyjścia 1354.
Linia pamięci podręcznej w stanie wyłącznym jest przechowywana w wewnętrznej pamięci podręcznej danych 1302. Linia ta jest również obecna albo w podsystemie pamięci 1326, albo w podsystemie pamięci 1355.
Linia pamięci w stanie dzielonymjest przechowywana w wewnętrznej pamięci podręcznej danych 1302. Dzielona linia pamięci podręcznej może być również przechowywana w wewnętrznej pamięci danych dowolnego z procesorów 1321 -1323 lub 1350 - 1352 ijest obecna bądź w podsystemie pamięci 1326 bądź w podsystemie pamięci 1355.
Figura 14 przedstawia układ węzła interfejsu 1424 dla jednego przykładu wykonania. Układ węzła interfejsu 1424 zawiera układ uporządkowanej kolejki 1470, układ kolejki wejściowej 1474, oraz układ kolejki wyjściowej 1476. Układ węzła interfejsu 1424 zawiera ponadto układ detektora konfliktów 1472, zarządcę spójności pamięci podręcznej 1478, oraz układ zdalnego interfejsu 1480.
Układ uporządkowanej kolejki 1470 rejestruje informacje o transakcjach komunikacji na szynie 1430. Każde wejście do układu uporządkowanej kolejki 1470 odpowiada transakcji na szynie 1430. Układ uporządkowanej kolejki 1470 przesyła transakcje komunikacji, które wymagajądostępu do węzła szyny 1412 w układzie kolejki wejściowej 1474. Układ uporządkowanej kolejki 1470 tworzy opóźnione transakcje odpowiedzi wprowadzane do układu kolejki wyjściowej 1476 dla transakcji komunikacji, które wymagają dostępu do węzła szyny 1412 i w konsekwencji później opóźnionych transakcji odpowiedzi.
Układ zdalnego interfejsu 1480 ma dostęp do transakcji komunikacji w układzie kolejki wejściowej 1474 i wykonuje żądany dostęp do węzła szyny 1412 przez szynę systemową 1440. Układ zdalnego interfejsu 1480 gromadzi zwracane dane z linii pamięci podręcznej i podgląda status z węzła szyny 1412, oraz zapisuje danąz linii pamięci podręcznej i status podglądania do odpowiedniego wejścia opóźnionej transakcji odpowiedzi w układzie kolejki wyjściowej 1430. Układ zdalnego interfejsu 1476 wysyła zestawione opóźnione transakcje odpowiedzi na szynę 1430. Układ zdalnego sterowania 1474 usuwa zakończone zdalne transakcje z układu wejściowej kolejki 1474.
Układ detektora konfiktu 1472 ma dostęp do układu wejściowej kolejki 1474 i układu uporządkowanej kolejki 1470. Układ detektora konfliktów 1472 wyznacza, czy transakcja zarejestrowana w układzie uporządkowanej kolejki 1470 ma za cel tę samą linię pamięci podręcznej, co zdalna transakcja zarejestrowana w układzie wejściowej kolejki 1474. Układ detektora konfli178 832 któw 1472 wprowadza unieważnioną linię dla powrotnej transakcji unieważniającej w układzie kolejki wyjściowej 1476, jeśli wykryty jest konflikt zdalnego dostępu do linii pamięci podręcznej. Powrotna transakcja unieważniającajest następnie wysyłana na szynę 1430 dla spowodowania ponowienia wykonania konfliktowego dostępu.
Figura 15 pokazuje przykład porzucenia i ponownego wysłania procesu. Sekwencja rozkazówprogramu 1501 posiada pokazane liczne stany 1502- 1512. Spekulatywne wykonywanie instrukcji prowadzi do zakończenia spekulatywnego pobrania R2 przed zakończeniem wcześniej szego pobrania R1. To zakłócenie j est wykryte poprzez podglądanie bufora ładowania w czasie wykonywania zewnętrznego ładowania W2. Wykryte wyniki zakłócenia powstałego w pobraniu R2 1508 wraz z kolejnymi stanami 1509 - 1512 są anulowane. Później, pobranie R2 jest ponownie wysyłane. Ponadto, wszystkie spekulatywne stany 1514-1516 są ponownie obliczane.
W aktualnym korzystnym przykładzie wykonania, podglądany jestjedynie podzbiór bitów adresu. Ten przykład wykonania może powodować wystąpienie fałszywego trafienia w podglądaniu, jeśli część adresu odpowiada części innego adresu. Fałszywe trafienie w podglądaniu nie powoduje problemów związanych z poprawnością kolejności rozkazów procesora. Jednakże, fałszywe trafienie w podglądaniu powoduje generację błędu zakłócenia i obsługę tego błędu. Nadmierne występowanie fałszywych trafień w podglądaniu mogłoby pogorszyć wydajność systemu. Stąd, stosowanie podzbiorów bitów adresu jest kompromisem pomiędzy przechowywaniem sprzętowym i wpływem adresu na wydajność. Ponadto, system pamięci zarządza ładowania w kawałkach linii pamięci podręcznej (np. 32 bity), tak że ładowaniejest widoczne jedynie w tym zakresie (np. 32 bity).
Figura 16 jest schematem opisującym etapy zapewniania spójności pamięci w systemie wieloprocesorowym. W etapie 1601, narzucona jest ścisła kolejność wykonywania rozkazów procesora. Innymi słowy, ładowania nie mogą wyprzedzać jedno drugie. Z kolei pobrania mogą wyprzedzać inne pobrania. Gdy inny procesor wykonuje operacje ładowania, pierwotny bufor obierania procesora jest podglądany (kroki 1603 i 1604). W kroku 1605 wyznacza się, czy rezultatem podglądaniajest trafienie. Trafienie występuje jeśli pobranie ma ten sam adres co pobranie obecnie przebywające w buforze pobrania. Jeśli podglądanie nie wskaże trafienia (tzn. chybienie), nastąpi powtórzenie kroku 1601. Należy zauważyć, że nie podglądane i podglądane ale nie trafione pobrania, mogą zostać wycofane w normalny sposób w kroku 1606.
Jeśli podglądanie wskaże trafienie, wyznacza się w kroku 1607, czy bufor pobierania zawiera wcześniejsze pobranie, które wciąż jest niezrealizowane. Jeśli brak takich odłożonych pobrań, w kroku 1606 umożliwia się wycofanie zakończonych operacji ładowania i spekulatywnych pobrań. Wycofanie dotyczy aktu usunięcia zakończonej mikrooperacji z bufora reorganizującego i zmieniany jest stan urządzenia w zależności od oryginalnej instrukcji. Krok 1601 jest powtarzany w następstwie kroku 1606. W przeciwnym przypadku, wystąpiło zakłócenie i zostało ono wykryte. Zakłócenie powoduje generację sygnału błędu. Sygnał błędu z podsystemu pamięci jest używany do porzucenia nielegalnego pobrania (tzn. pobrania, które spowodowało zakłócenie) w kroku 1608. Następnie, w kroku 1609, porzucana jest sekwencja instrukcji programu wykonana po nielegalnym pobraniu i restartowana w czasie późniejszym. Proces rozpoczyna się począwszy od etapu 1601.
Figura 17-18 jest schematem przedstawiającym obsługę transakcji komunikacji przez węzeł układu interfejsu. W bloku 1700 zespół żądający szyny inicjuje transakcję komunikacji na szynie.
W bloku decyzyjnym 1702 układ węzła interfejsu wyznacza, czy żądanie określone przez transakcję komunikacji może być zaspokojone w węźle szyny. Jeśli żądanie może zostać zaspokojone, sterowanie przechodzi do bloku 1704. W bloku 1704, układ węzła interfejsu uzupełnia żądaną operację w sposób uporządkowany, tzn. nie opóźniając transakcji komunikacji.
Jeśli układ węzła interfejsu w bloku decyzyjnym 1702 wyznaczy, że żądanie nie może być zaspokojone przez węzeł szyny, sterowanie przechodzi do bloku decyzyjnego 1706. Wbloku decyzyjnym 1706 układ detektora konfliktów wyznacza, czy opóźniona transakcjajest zawieszona, co powoduje konflikt z transakcją komunikacji. Zawieszona odłożona transakcja jest w konflikcie z transakcją komunikacji zawieszonej opóźnionej transakcji wskazującej na tę samą linię w
178 832 pamięci podręcznej. Jeśli zawieszona opóźniona transakcja nie wchodzi w konflikt z komunikacją transakcji, sterowanie przechodzi do bloku 1708.
W bloku 1708, układ węzła interfejsu opóźnia transakcję komunikacji poprzez wystawienie sygnału DEFER w czasie fazy podglądania transakcji komunikacji i następnie wystawienie opóźnionej odpowiedzi w czasie fazy odpowiedzi transakcji komunikacji. Interfejs również generuje opóźnioną transakcję odpowiedzi do kolejki wyjściowej. Następnie, w bloku 1710, układ zdalnego interfejsu uzupełnia transakcję komunikacji poprzez wykonania dostępu do węzła szyny. W bloku 1710 układ zdalnego interfejsu otrzymuje nowy stan pamięci kieszeniowej dotyczący linii określonej przez transakcję komunikacji z węzła szyny i umieszcza nowy stan pamięci podręcznej i nową daną w linii pamięci podręcznej, jeśli jest to konieczne, w wejściu opóźnionej transakcji odpowiedzi wyjściowej kolejki.
Następnie, w bloku 1712 układ interfejsu szyny inicjuje odpowiednią opóźnionątransakcję odpowiedzi z kolejki wyjściowej na szynę. W bloku decyzyjnym 1814, węzeł układu interfejsu wyznacza, czy transakcja komunikacji wymaga ponowienia. Transakcja wymaga ponowienia, jeśli nie została z sukcesem zakończona w węźle szyny 1712. Jeśli komunikacja transakcji wymaga ponowienia w bloku decyzyjnym 1814, sterowanie przechodzi do bloku 1816.
W bloku 1816, układ węzła interfejsu wystawia sygnał DEFER w czasie fazy podglądania opóźnionej transakcji odpowiedzi. Następnie w bloku 1818, układ węzła interfejsu odcina podglądane przypisanie dla linii pamięci podręcznej określone przez transakcję komunikacji, a w bloku 1819 układ węzła interfejsu wskazuje ponowienie transakcji komunikacji. Podglądanie przydziałujest zakładane przez pierwotny zespół zgłaszający żądanie dla komunikacji transakcji.
Jeśli transakcja nie wymaga ponowienia w bloku decyzyjnym 1814, wówczas sterowanie przechodzi do bloku decyzyjnego 1820. W bloku decyzyjnym 1820, układ węzeł interfejsu wyznacza, czy linia pamięci podręcznej jest dzielona z innym zespołem dołączonym do węzła szyny. Jeśli linia pamięci podręcznej jest dzielona, wówczas sterowanie przechodzi do bloku 1822.
W bloku 1822, układ interfejsu szyny wystawia sygnał HIT lub HITM w czasie fazy podglądania opóźnionej transakcji odpowiedzi zgodnie z wynikami podglądania dla transakcji komunikacji z węzła szyny. Jeśli linia pamięci podręcznej nie jest dzielona, w bloku decyzyjnym 1820, wówczas sterowanie przechodzi do bloku 1824. W bloku 1824 układ węzła interfejsu nie wystawia sygnału HIT ani HITM w czasie fazy podglądania opóźnionej transakcji odpowiedzi. W każdym przypadku, w bloku 1826 układ węzła interfejsu oddaje podglądanie przydziału do linii pamięci podręcznej transakcji komunikacji do zespołu żądającego szyny.
Jeśli zawieszona opóźniona transakcja nie wchodzi w konflikt z transakcją komunikacji w bloku decyzyjnym 1706, wówczas sterowanie przechodzi do bloku 1728. W bloku decyzyjnym 1728, układ węzeł interfejsu wyznacza, czy dopuszczalne są liczne opóźnione transakcje. Jeśli nie sąone możliwe, wówczas sterowanie przechodzi do bloku 1730. W bloku 1730, układ węzła interfejsu wskazuje potrzebę ponowienia transakcji komunikacji. Zespół żądający szyny ponawia później transakcję komunikacji, przez co pozostawia czas na zakończenie odłożonych opóźnionych transakcji.
Jeśli dopuszczalne są liczne opóźnione transakcje w bloku decyzyjnym 1728, sterowanie przechodzi do bloku 1732. W bloku 1732 układ węzła interfejsu opóźnia transakcję komunikacji wystawiając sygnał DEFER w czasie fazy podglądania i wskazują opóźnioną odpowiedź w czasie fazy odpowiedzi transakcji komunikacji.
Następnie, w bloku 1734 pierwsza odłożona opóźniona transakcja jest kończona zgodnie z sekwencją bloków 1710 - 1712 i 1814 - 1826.
Następnie, w bloku decyzyjnym 1736 zarządca spójności pamięci podręcznej wyznacza, czy istnieje konflikt podglądanego przydziału pomiędzy pierwszą opóźnioną transakcją zakończonąw bloku 1734 itransakcjąkomunikacji opóźnionąw bloku 1732 (druga opóźniona transakcja). Konflikt podglądanego przydziału występuje, jeśli celem pierwszej i drugiej opóźnionej transakcji jest ta sama linia pamięci podręcznej. Jeśli ten konflikt nie ma miejsca w bloku decyzyjnym 1736, sterowanie przechodzi do bloku 1738. Wbloku 1738, układwęzła interfejsu kompletuje transakcję komunikacji opóźnionąw bloku 1732 zgodnie z blokami 1710 -1712 i 1814-1826.
178 832
Jeśli występuje konflikt własności przy podglądaniu w bloku decyzyjnym 1736, wówczas sterowanie przechodzi do bloku 1740. W bloku 1740, układ węzła interfejsu inicjuje unieważnienie linii transakcji komunikacji na szynie dla żądającego szyny zespołu dla konfliktowej opóźnionej transakcji skompletowanej w bloku 1734. Żądanie unieważnienia jest powrotnym unieważnieniem dla pierwszej transakcji, która unieważnia linię pamięci podręcznej mającej konflikt własności przy podglądaniu. Następnie, w bloku 1742 układ węzła interfejsu kompletuj e transakcję komunikacji opóźnioną w bloku 1732 zgodnie z blokami 1710-1712 i 1814 i 1826.
Figura 19 jest schematem ilustrującym żądanie odczytu wysyłane przez żądający szyny zespół. W bloku 1900 żądający zespół inicjuje transakcję odczytu na szynie.
W czasie fazy podglądania transakcji odczytu w bloku decyzyjnym 1902, żądający szyny zespół wykrywa stan sygnałów DEFER i HITM na szynie. Jeśli wystawiony jest sygnał DEFER, a sygnał HITM nie jest wystawiony w bloku decyzyjnym 1902, sterowanie przechodzi do bloku 1906. W przeciwnym przypadku sterowanie przechodzi do bloku 1904. W bloku 1904 żądający szyny zespół wykonuje normalne operacje na pamięci podręcznej, ponieważ transakcja odczytu jest wówczas kończona w sposób zgodny z porządkiem.
W bloku 1906, zespół żądający szyny nie stwierdza przy podglądaniu własności linii pamięci podręcznej określonej przez transakcję odczytu. W bloku decyzyjnym 1908, żądający szyny zespół sprawdza wystąpienie opóźnionej odpowiedzi w czasie fazy odpowiedzi transakcji odczytu. Jeśli opóźniona odpowiedź jest sygnalizowana w bloku decyzyjnym 1908, sterowanie przechodzi do bloku 1912. W bloku 1912, żądający szyny zespół oczekuje na opóźnioną transakcję odpowiedzi na szynie. Następnie, w bloku decyzyjnym 1914 żądający szyny zespół wykrywa sygnał DEFER w czasie fazy podglądania opóźnionej transakcji odpowiedzi. Jeśli sygnał DEFERjest wystawiony w czasie fazy podglądania opóźnionej transakcji odpowiedzi, wówczas sterowanie przechodzi do bloku 1916. W bloku 1916 żądający szyny utrzymuje linię pamięci podręcznej transakcj i odczytu w stanie nieważnym. Następnie, w bloku 1918, żądaj ący szyny zespół ponawia transakcję odczytu poprzez ponowne zainicjowanie transakcji odczytu na szynie.
Jeśli sygnał DEFER nie jest wystawiony w czasie fazy podglądania opóźnionej transakcji odpowiedzi w bloku decyzyjnym 1914, wówczas sterowanie przechodzi do bloku 1920. W bloku decyzyjnym 1920, jeśli sygnał HIT lub HITM jest wystawiony w czasie fazy podglądania opóźnionej transakcji odpowiedzi, wówczas sterowanie przechodzi do bloku sterującego 1924. W bloku 1924, żądający szyny zespół przyjmuje przydział linii pamięci podręcznej, określonej przez transakcję odczytu, w stanie dzielonym.
Jeśli sygnał HIT lub HITM nie jest wystawiony w czasie fazy podglądania opóźnionej transakcji odpowiedzi w bloku decyzyjnym 1920, wówczas sterowanie przechodzi do bloku 1922. W bloku 1922 żądający szyny zespół przyjmuje przydział linii pamięci podręcznej, określonej przez transakcję odczytu, w stanie wyłącznym.
Figura 20 jest schematem ilustrującym transakcję zapisu lub transakcję unieważnienia, wykonywaną przez żądający szyny zespół. W bloku decyzyjnym 2000, żądający szyny zespół inicjuje transakcję zapisu lub unieważnienia na szynie.
W czasie fazy podglądania transakcji zapisu lub unieważnienia w bloku 2002, żądający szyny zespół bada na szynie stan sygnałów DEFER i HITM. Jeśli wystawiony jest sygnał DEfEr i nie wystawiony jest sygnał HITM w bloku decyzyjnym 2002, wówczas sterowanie przechodzi do bloku 2006. W przeciwnym przypadku sterowanie przechodzi do bloku 2004. W bloku 2004, żądający szyny zespół wykonuje operacje w pamięci podręcznej przy jej normalnym stanie, ponieważ transakcja zapisu lub unieważnienia jest kompletowana w sposób zgodny z porządkiem.
W bloku 2006, żądający szyny zespół nie przyznaje przydziału przy podglądaniu linii pamięci podręcznej dla transakcji zapisu lub unieważnienia. W bloku decyzyjnym 2008, żądający szyny zespół sprawdza istnienie opóźnionej transakcji odpowiedzi w czasie fazy odpowiedzi transakcji zapisu lub unieważnienia. Jeśli opóźniona odpowiedź nie jest wskazywana w bloku decyzyjnym 2008, sterowanie przechodzi do bloku 2010. W bloku 2010 zespół żądający szyny
178 832 ponawia transakcję zapisu lub unieważnienia, jeśli żądający szyny zespół wskazał konieczność ponowienia próby w czasie fazy odpowiedzi transakcji zapisu lub unieważnienia.
Jeśli opóźniona odpowiedź została wykryta w bloku decyzyjnym 2008, wówczas sterowanie przechodzi do bloku 2012. W bloku 2012, żądający szyny zespół czeka na opóźnioną transakcję odpowiedzi na szynie.
W bloku decyzyjnym 2014, jeśli sygnał DEFER jest wystawiony w czasie fazy podglądania opóźnionej transakcji odpowiedzi, wówczas sterowanie przechodzi do bloku 2016. W bloku 2016, żądający szyny zespół nie wykonuje żadnych zmian w stanie pamięci podręcznej dla linii pamięci podręcznej określonej przez transakcję zapisu lub unieważnienia. Następnie, w bloku 2018 żądający szyny zespół ponawia na szynie transakcję zapisu lub unieważnienia.
Jeśli sygnał DEFER nie jest wystawiony w czasie fazy podglądania opóźnionej transakcji odpowiedzi w bloku decyzyjnym 2014, sterowanie przechodzi do bloku decyzyjnego 2020. W bloku decyzyjnym 2020, żądający szyny zespół wyznacza, czy sygnał HITM jest wystawiony w czasie fazy podglądania opóźnionej transakcji odpowiedzi. Jeśli sygnał HITM nie jest wystawiony w bloku decyzyjnym 2020, sterowanie przechodzi do bloku decyzyjnego 2022. W bloku decyzyjnym 2022 żądający szyny zespół zmienia stan pamięci podręcznej dla linii określonej przez transakcję zapisu lub unieważnienia na stan wyłączny lub zmodyfikowany, w zależności od rezultatów podglądania.
Jeśli sygnał HITM jest wystawiony w czasie fazy podglądania w bloku 2020, wówczas sterowanie przechodzi do bloku 2024. W bloku 2024, żądający szyny zespół odczytuje zwróconą linię pamięci podręcznej w czasie fazy danych opóźnionej transakcji. Następnie, w bloku 2026 żądający szyny zespół łączy zwróconą linię pamięci podręcznej z wewnętrzną daną oraz zapisuje z powrotem tę linię pamięci podręcznej do wewnętrznej pamięci podręcznej żądającego szyny zespołu.
Figura 21 przedstawia schemat pokazujący kroki wykonywania transakcji w jednym przykładzie wykonania. Początkowo, zewnętrzna szyna w kroku 2101 wykonuje podglądanie. Następnie, w kroku 2102 wyznacza się, czy występuje na zewnętrznej szynie transakcja ładowania. Jeśli tak, krok 2101 jest powtarzany. W przeciwnym przypadku, w kroku 2103 wyznacza się, czy istnieje pobranie spod tego samego adresu. Jeśli nie ma żadnego pobrania spod tego samego adresu, krok 2101 jest powtarzany. W przeciwnym przypadku, w kroku 2104 pobranie i spekulatywne kolejne wyniki są anulowane. W kroku 2105, wykonaniejest restartowane od operacj i pobrania.
Figura 22 przedstawia schemat opisujący kroki w jednym z przykładów wykonania wynalazku. Początkowo, w kroku 2205 zespół dołączony do szyny procesor - pamięć wysyła żądanie na szynę, trafiając inny zespół dołączony do szyny, lub być może urządzenie dołączone do szyny systemowej I/O. Żądanie jest wysyłane w Fazie Żądania, po przydzieleniu szyny procesorowi w czasie Fazy Arbitrażu. Jeśli nie wystąpią żadne błędy wymagające porzucenia żądania w Fazie Błędu, w kroku 2210 wszystkie zespoły dołączone do szyny wykonują podglądanie w Fazie Podglądania.
W czasie Fazy Podglądania, w kroku 2215 każdy zespół wykonujący przeglądanie wyznacza, czy posiada linię pamięci podręcznej w stanie zmodyfikowanym, odpowiadającą żądaniu. Jeśli żaden z zespołów dołączonych do szyny nie posiada zmodyfikowanej kopii linii pamięci podręcznej, wówczas w kroku 2216 każdy zespół zdejmuje sygnał HITM# lub zdejmuje sygnał HIT#. W niektórych sytuacjach, zespoły mogąutrzymywać linie swych pamięci podręcznych w stanie dzielonym, w zależności od typu żądania; te zespoły wystawiają sygnał HIT#. Wszystkie inne zespoły zdejmują sygnał HIT#. W kroku 2220 każdy zespół dołączony do szyny zmienia następnie stan linii swych pamięci podręcznych na jej docelowy stan. Ten docelowy stan zależy od typu żądania wysłanego w kroku 2205 i zostanie poniżej dokładniej omówiony. Następnie, procesor odbiera w kroku 2225 odpowiedź z docelowego zespołu, pamięci lub sterownika w czasie Fazy Odpowiedzi. Jeśli jest to konieczne (np. przy żądaniu odczytu), procesor odbiera również dane z docelowego zespołu w Fazie Przesyłania Danych.
Jednakże, jeśli zespół wykonujący podglądanie posiada zmodyfikowaną kopię odpowiedniej linii pamięci podręcznej wówczas w kroku 2230 procesor wystawia sygnał HITM# w czasie
178 832
Fazy Podglądania. W dodatku, wszystkie inne zespoły dołączone do szyny zdejmują sygnał HIT#. Procesor zdejmuje sygnał HIT# ponieważ w normalnej pracy w tym przykładzie wykonania procesor zdejmuje HIT# wtedy, gdy wystawia HITM#. Wszystkie inne zespoły zdejmują HIT#, ponieważ żaden inny zespół nie może posiadać ważnej kopii linii pamięci podręcznej, jeśli procesor posiada zmodyfikowaną kopię. Wszystkie zespoły obserwują na szynie sygnały HIT# i HITM#. Sygnał HITM# z procesora informuje zarówno procesor, jak i sterownik pamięci, że procesor posiada najnowszą wersję żądanej linii pamięci podręcznej, oraz że to każdy dostęp do tej linii pamięci podręcznej powinien wykorzystywać kopię linii zawartą w procesorze. Odpowiedź procesora i sterownika pamięci na sygnał HITM# zależy od typu żądania, co bardziej szczegółowo opisano poniżej.
Następnie, w kroku 2235 każdy zespół dołączony do szyny musi zmienić stan linii swej pamięci podręcznej na stan docelowy. Stan docelowy pamięci podręcznej zależy od typu żądania wysłanego w kroku 2205 i zostanie poniżej szczegółowo opisany.
Zespół żądający w kroku 2240 otrzymuje odpowiedź w czasie Fazy Odpowiedzi. Zawartość tej odpowiedzi zależy od początkowego żądania, od tego czy docelowy zespół może odpowiedzieć, oraz czy HITM# sygnał został wystawiony przez zespół dołączony do szyny. Jeśli sygnał HITM# został wystawiony przez procesor, wówczas dane z procesora sąumieszczane na szynie w czasie Fazy Przesyłania Danych. Sterownik pamięci i/lub procesor mogą zatrzasnąć lub pobrać dane z szyny. Sposób, w jaki sterownik pamięci i/lub procesor wykorzystuje danąjest zależny od oryginalnego żądania, jak to poniżej szczegółowo opisano.
- Procesor, po wystawieniu sygnału HITM#, w kroku 2245 umieszcza całą linię pamięci podręcznej na szynie w Fazie Przesyłania Danych. To działanie procesora jest określane jako „niejawny zapis powrotny”. Niejawny zapis powrotny jest wykonywany przez procesor w Fazie Przesyłania Danych transakcji, gdy proces wystawia sygnał HITM# w czasie Fazy Podglądania dla tej transakcji.
Figura 23 przedstawia schemat opisujący kroki wykonywane przez jeden wariant wykonania według niniejszego wynalazku w czasie żądania odczytu w systemie. Żądający procesor wysyła w kroku 2305 żądanie na szynę w czasie Fazy Żądania. Żądanie pokazane na fig. 23 jest żądaniem odczytu skierowanym do pamięci głównej. Jak powyżej, wszystkie zespoły dołączone do szyny wykonuj ą w kroku 2310 podglądanie w celu wyznaczenia w kroku 2315, czy dany zespół posiada kopię żądanej linii pamięci podręcznej w stanie zmodyfikowanym.
W przypadku, gdy żaden zespół dołączony do szyny nie posiada zmodyfikowanej kopii linii pamięci podręcznej, kolejne kroki są wykonywane w zależności od tego, czy w kroku 2320 którykolwiek z zespołów posiada linię pamięci podręcznej w stanie ważnym. Jeśli którykolwiek z zespołów posiada kopię w stanie ważnym, wówczas w kroku 2325 wystawia on sygnał HIT# i zdejmuje sygnał HITM#. Wszystkie zespoły bez ważnej kopii zdejmują zarówno sygnał HIT# jak i HITM#. Stąd, zespoły dołączone do szyny wiedzą, że jeden lub więcej zespołów posiada ważną kopię linii pamięci podręcznej, lecz żaden zespół nie modyfikował swej kopii linii pamięci podręcznej. Przez to, w kroku 2330 każdy zespół dołączony do szyny z ważną kopią linii pamięci podręcznej również zmienia stan linii pamięci podręcznej na dzielony, ponieważ procesor będzie otrzymywał ważnąkopię linii pamięci podręcznej w Fazie Przesyłania Danych, jak opisano poniżej.
W innym przykładzie wykonania pokazanym na fig. 24, każdy zespół zmienia stan na stan docelowy w zależności od oryginalnego żądania odczytu. Jak pokazano na fig. 24, docelowy stan zależy od tego, czy oryginalne żądanie było żądaniem odczytu z alokacją, krok 2428. Procesor może żądać odczytu bez alokacji, na przykład, dla wskazania, że nie utrzymuje linii pamięci podręcznej w swej pamięci podręcznej. Jeśli procesor żąda odczytu z alokacją, w kroku 2431 każdy zespół dołączony do szyny z ważną linią pamięci podręcznej, wliczając w to procesor, zmienia stan tej linii pamięci podręcznej na dzielony. Jednakże, jeśli procesor nie żąda odczytu z alokacją, wówczas zespół dołączony do szyny będący w stanie wyłącznym i wszystkie zespoły pozostające w stanie dzielonym pozostają w stanie dzielonym.
178 832
Powracając do przykładu wykonania z fig. 2320, w przypadku, gdy żaden z zespołów na szynie nie posiada ważnej kopii linii pamięci podręcznej, wszystkie zespoły w kroku 2335 zdejmują sygnał HIT# i HITM#. Przez to, w kroku 2340 procesor zmienia stan swej kopii linii pamięci podręcznej na stan wyłączny, ponieważ będzie on otrzymywał linię pamięci podręcznej ze sterownika pamięci w czasie Fazy Przesyłania Danych; wszystkie pozostałe składniki utrzymują linię pamięci podręcznej w stanie nieważnym.
Sterownik pamięci zaspokaja żądanie odczytu, niezależnie od tego, czy zespół posiada ważną kopię linii pamięci podręcznej, ponieważ żaden zespół nie posiada zmodyfikowanej żądanej linii pamięci podręcznej. W kroku 2350 sterownik pamięci wysyła zwykłą odpowiedź w Fazie Odpowiedzi do procesora i umieszcza odpowiednią daną na szynie w czasie Fazy Przesyłania Danych. W kroku 2375 procesor pobiera następnie daną z szyny i rozpoczyna wykorzystywanie jej w odpowiedni sposób.
Powracając do etapu 2315, jeśli którykolwiek zespół dołączony do szyny, taki jak procesor, posiada żądaną linię pamięci podręcznej, wówczas w kroku 2355 procesor wystawia sygnał HITM# i zdejmuje sygnał HIT# w czasie Fazy Podglądania. Wszystkie pozostałe zespoły zdejmują zarówno sygnał HIT# jak i HITM#. Wystawienie sygnału HITM# informuje sterownik pamięci, że inny zespół na szynie posiada najnowszą wersję żądanej danej. Stąd, sterownik pamięci wie, że nie powinien przesyłać swej wersji żądanej linii do procesora.
Stany pamięci podręcznej dla tej linii są również zmieniane w procesorze w kroku 2360 w czasie Fazy Podglądania. Jeden procesor przesyła swą wersję linii pamięci podręcznej do procesora żądającego. W jednym trybie, oba procesory zmieniają stany swych linii pamięci podręcznej na dzielony dla zapewnienia, że główna pamięć zmieni swą wersję linii. W jednym przykładzie wykonaniajest to realizowane w kroku 2360 dzięki obsłudze przesyłania częściowych danych do zapisu, co zostanie później szczegółowo opisane. W innym wariancie, procesor mógłby przesyłać linię pamięci podręcznej do innego procesora i zmieniać stan jego linii na nieważny, podczas gdy stan swej linii zmieniłby na zmodyfikowany lub wyłączny.
Stąd, jeśli oba procesory zmieniają stany swych linii na dzielony, w Fazie Podglądania dla kolejnych transakcji na szynie żaden z procesorów nie wystawia HITM# dla tej linii pamięci podręcznej. Sterownik pamięci jest odpowiedzialny za odpowiedź dla któregokolwiek z kolejnych żądań do tej linii pamięci podręcznej (dopóki jakiś inny zespół pamięci podręcznej nie odzyska własności linii pamięci podręcznej i zmieni stan swej linii na zmodyfikowany).
W innym pokazanym na fig. 25 przykładzie wykonania, każdy zespół zmienia stan swej pamięci podręcznej w zależności od oryginalnego żądania odczytu. Jak pokazano na fig. 25, docelowy stan zależy od tego czy oryginalne żądanie było odczytem z alokacją; krok 2557. Jeśli procesor żąda odczytu z alokacją, wówczas w kroku 2561 zespół ze zmodyfikowaną kopią linii pamięci podręcznej zmieni stan tej linii na dzielony, a procesor zmieni stan swej linii pamięci podręcznej również na dzielony. Jednakże, jeśli procesor nie żąda odczytu z alokacją, wówczas w kroku 2562 zespół ze zmodyfikowanąkopiąlinii pamięci podręcznej nie pozostanie w stanie nieważnym, ponieważ pamięć główna otrzyma kopię linii, tak jak opisano poniżej.
Powracając do przykładu wykonania z fig. 23, specjaliści powinni zauważyć, że chociaż przydział linii pamięci kieszeniowej jest przesyłany przed bieżącym przesłaniem danej z linii pamięci kieszeniowej, spójność pamięci kieszeniowej jest utrzymywana dzięki potokowej naturze szyny. To znaczy, kolejne żądanie może być informowane, że dana nadejdzie z pamięci głównej, naweDeśli zmodyfikowana wersja jest wciąż obecna w pamięci podręcznej procesora. Jednakże, w czasie gdy nadchodzi Faza Przesyłania Danych dla kolejnego żądania, będzie już ona wysłana do pamięci głównej w Fazie Przesyłania Danych przed transakcją.
Po zmianie stanów pamięci kieszeniowych, sterownik pamięci wysyła w kroku 2365 odpowiedź niejawnego zapisu powrotnego do procesora w Fazie Odpowiedzi. Wystawienie sygnału HITM# przez procesor poinformowało sterownik pamięci, że nie powinien on przesyłać swej wersji linii do procesora; stąd, sterownik pamięci wysyła odpowiedź niejawnego zapisu powrotnego zamiast normalnej odpowiedzi. Odpowiedź niejawnego zapisu powrotnego informuje pro178 832 cesor, że żądanie nie zostało jeszcze wycofane, lecz inny zespół dołączony do szyny posiada zmodyfikowaną kopię żądanej linii i to on prześle w odpowiedzi żądaną daną.
Procesor umieszcza całą zmodyfikowaną linię pamięci podręcznej na szynie w kroku 2370 w Fazie Przesyłania Danych. W jednym przykładzie wykonania, procesor umieszcza linię pamięci podręcznej na szynie w odpowiedzi na sygnał ze sterownika pamięci wskazujący, że jest on gotowy do przesyłania. Sterownik pamięci wysyła ten sygnał w czasie fazy odpowiedzi, gdy posiada dostępny bufor linii, w którym może umieści linię pamięci kieszeniowej. Jak pokazano na fig. 23, zarówno sterownik pamięci jak i żądający zespół pobierają dane z szyny w krokach, odpowiednio, 2380 i 2375. Żądający procesor zabiera dane z szyny w kroku 2375 i przetwarza je w odpowiedni dla siebie sposób.
Sterownik pamięci również w kroku 2380 zabiera dane z szyny. To działanie sterownika pamięci jest określane jako „przechwytywanie” danej, ponieważ sterownik pamięci zabiera z szyny daną, która była żądana przez inny zespół. Sterownik pamięci zapisuje następnie w kroku 2385 daną do głównej pamięci, zapewniając przez to spójność pamięci podręcznych. Tzn., jak opisano powyżej, gdy procesor żąda danej, która jest w zmodyfikowanym stanie w innym procesorze, procesor przesyła daną do innego procesora i oba procesory zmieniają stan linii w swych pamięciach podręcznych na dzielony. Stan dzielony, jednakże, wymaga, by pamięć główna również posiadała najnowszą wersję pamięci podręcznej. Sta, poprzez przechwytywanie linii i zapisywanie jej do pamięci głównej, zarówno procesory, jak i pamięć główna będą mieć najnowszą wersję pamięci podręcznej.
W wieloszynowej strukturze hierarchicznej węzeł szyny odgrywa rolę sterownika pamięci na szynie dla celów omówionych w odniesieniu do fig. 23. Na przykład, zarządca węzła przechwytuje dane z szyny i zmienia swąpamięć podręczną, a nie sterownik pamięci przechwytujący dane. W takiej sytuacji, zarządca węzła opóźnia albo powoduje ponowienie żądania, w zależności od dostępności otrzymania na własność szyny wyższego poziomu. W tej sytuacji, globalne nadzorowanie transakcji, które mogło wystąpić w kroku 2340, jak również umieszczenie danych na szynie w kroku 2350, jest opóźnione w sposób powyżej opisany.
Figura 26 pokazuje kroki wykonywane przez jeden przykład wykonania w czasie operacji zapisu. Żądający procesor wysyła żądanie na szynę w czasie Fazy Żądania w kroku 2605. Żądanie pokazane na fig. 26 jest żądaniem zapisu skierowanym do pamięci głównej. Wszystkie inne zespoły na szynie wykonują w kroku 2610 podglądanie, dla wyznaczenia, czy zespół posiada kopię linii pamięci kieszeniowej, którajest w kroku 2615 zapisywana w stanie zmodyfikowanym.
Ponadto, poza zespołami wykonującymi podglądanie, procesor umieszcza swe zapisywane dane na szynie w kroku 2620; zapisywane dane sąodbierane przez sterownik pamięci w kroku 2625. Jak pokazano na fig. 26, to przesłanie zapisywanych danych przez żądający procesor występuje nie zależnie od tego, czy zespół dołączony do szyny posiada zmodyfikowaną lub ważną kopię linii pamięci podręcznej. W jednym przykładzie wykonania wynalazku, procesor umieszcza zapisywane dane na szynie zgodnie z sygnałami ze sterownika pamięci w Fazie Podglądania wskazującymi, że sterownik pamięci jest gotów do przesyłania danych.
W przypadku, gdy żaden zespół dołączony do szyny nie posiada zmodyfikowanej kopii linii pamięci podręcznej, wszystkie zespoły w kroku 2630 zdejjmLgjąz szyny zarówno HIT# jak i HITM#. Istnienie operacji zapisu oznacza dla wszystkich podglądających zespołów, że ich kopia linii musi być unieważniona; stąd, wszystkie podglądające zespoły zmieniająw kroku 2635 stan linii swych pamięci podręcznych na nieważny. Zdjęcie sygnałów HIT# i HITM wskazuje sterownikowi pamięci, że musi on zaspokoić żądanie zapisu, jeśli w żadnej z pamięci podręcznych żądana linia nie jest ważna lub zmodyfikowana. Wówczas sterownik pamięci wysyła w kroku 2640 normalną odpowiedź do procesora w Fazie Odpowiedzi. Sterownik pamięci, który otrzymał dane do zapisu w kroku 2625, zapisuje następnie daną do pamięci głównej w kroku 2645, kończąc przez to operację zapisu.
W innym przykładzie wykonania pokazanym na fig. 27, każdy zespół wystawia lub zdejmuje sygnał HIT# i w kroku 2728 zmienia stan linii swej pamięci podręcznej w zależności od oryginalnego żądania zapisu. Jeśli procesor żąda zapisu z alokacją, wówczas wszystkie zespoły
178 832 w kroku 2731 zdejmują sygnały HIT# i HITM#. Wszystkie podglądające zespoły zmieniają również w kroku 2732 stan swej linii w pamięciach podręcznych na nieważny. Jednakże, jeśli procesor nie żąda zapisu z alokacją, wówczas pewien w kroku 2737 zespół (zespoły) z dzieloną lub wyłączną kopią przechwytuje dane, wystawia sygnał HIT# i zdejmuje sygnał HITM#. Zespół (zespoły), który wystawił sygnał HIT# nie zmienia stanu linii swej pamięci podręcznej, wszystkie pozostałe zespoły dołączone do szyny unieważniają w kroku 2739 swą linię. W jednym wariancie, zespół (zespoły) nie przechwytuje danych i wystawia sygnał HIT#, jeśli nie chce ważnej kopii linii pamięci podręcznej.
Wracając do przykładu wykonania z fig. 26, w kroku 2615, jeśli jakiś zespół dołączony do szyny, taki jak procesor, posiada zmodyfikowaną kopię żądanej linii pamięci podręcznej, wówczas procesor wystawia sygnał HITM# i zdejmuje sygnały HIT# w czasie Fazy Podglądania w kroku 2650. Jeśli procesor miał zmodyfikowaną kopię linii pamięci podręcznej, wszystkie pozostałe zespoły dołączone do szyny również zdejmują sygnał HlT#. Wystawienie sygnału HITM# informuje sterownik pamięci, że inny zespół dołączony do szyny ma najnowszą wersję żądanej danej. Wówczas, sterownik pamięci wie, wykonanie jedynie operacji zapisu przez procesor może nie utrzymać spójności pamięci podręcznej.
Na przykład, jeśli operacja zapisu jest przesłaniem częściowej danej do zapisu, wówczas cała linia pamięci podręcznej nie jest modyfikowana przez tę operację zapisu. Jeśli najnowsza wersja linii istnieje w pamięci podręcznej procesora, części tej linii nie są zapisywane do tego procesora przez inny procesor, który ma zmodyfikowaną wersję danej przez wcześniejsze operacje zapisu. Stąd, jeśli linia pamięci podręcznej procesora nie została wzięta pod uwagę, pamięć głównabędzie miała nieprawidlowąkopię danych, nawetjeśli uważa ona, że ma najnowsząwersję.
Jak omówiono powyżej, stany tych linii podręcznych są zmieniane w Fazie Podglądania. Wszystkie podglądające zespoły dołączone do szyny zmieniają swe linie na nieważne w kroku 2655.
Sterownik pamięci obserwował sygnał HITM# wysyłany przez procesor w kroku 2650; stąd sterownik pamięci wie, że zmodyfikowana wersja linii pamięci podręcznej istnieje w pamięci podręcznej jakiegoś zespołu. W odpowiedzi, procesor tymczasowo przechowuje zapisywane dane pobrane w kroku 2625 w buforze przechwytywania i zatrzymuje je tam, aż cała linia nie zostanie przesłana, w sposób opisany poniżej. W dodatku, sterownik pamięci wysyła odpowiedź niejawnego zapisu powrotnego do procesora w kroku 2660. Niejawny zapis powrotny informuje procesor, że inny zespół dołączony do szyny posiada zmodyfikowaną wersję linii pamięci podręcznej, oraz że ta zmodyfikowana wersja pamięci podręcznej zostanie umieszczona na szynie w czasie Fazy Przesyłania Danych.
W innym przykładzie wykonania, pokazanym na fig. 28, zespół który wystawił sygnał HITM# może również zabrać zapisywane dane z szyny. To czy procesor zabiera w kroku 2852 dane z szyny zależy od zastosowania zapisu z alokacją. Oznacza to, że jeśli procesor żąda zapisu bez alokacji, wówczas inny procesor zabiera dane z szyny i zapisuje w kroku 2856 dane do swej pamięci podręcznej. Procesor również zmienia stan swej linii pamięci podręcznej na wyłączny. Jednakże, jeśli procesor żąda zapisu z alokacją, wówczas w kroku 2855 inny procesor nie zabiera danych z szyny i zmienia stan linii swej pamięci podręcznej na nieważny.
Wracając do przykładu wykonania z fig. 26, pamięć główna przechowuje najnowsząwersję linii. Jest to wykonywane w taki sposób, że jest on zmieniana zamiast ciągłego zmieniania pamięci podręcznych zespołów.
Stąd, w Fazie Przesyłania Danych, procesor umieszcza w kroku 2665 całą zmodyfikowaną linię pamięci podręcznej na szynie. To przesłanie jest niejawnym zapisem powrotnym. Niejawny zapis powrotny musi być wykonywany w celu zaopatrzenia sterownika pamięci w dodatkową część linii, która nie musi być zapisywana przez procesor. W jednym przykładzie wykonania niniejszego wynalazku, procesor umieszcza linię pamięci podręcznej na szynie w odpowiedzi na drugi sygnał ze sterownika pamięci wskazujący, że jest on gotowy do przesyłania danych. Sterownik pamięci wysyła ten sygnał w Fazie Odpowiedzi, gdy posiada dostępny bufor linii, w którym umieszcza się linię pamięci podręcznej.
178 832
Sterownik pamięci pobiera zmodyfikowaną linię z niejawnego przesłania powrotnego danych w kroku 2670. Wjednym wariancie, dane te są tymczasowo przechowywane w buforze linii pamięci podręcznej w sterowniku pamięci. Dane są tam łączone z danymi przechowywanymi w buforze przechwytującym, opisanym powyżej, a w kroku 2675 połączona skompletowana linia pamięci podręcznej jest zapisywana w pamięci głównej. Dla wykonania połączenia, sterownik pamięci łączy część linii podręcznej w buforze przechwytującym z danymi otrzymanymi z niejawnego przesłania powrotnego, które nie pokryły zmienionej części bufora przechwytującego.
Należy zaznaczyć, że chociaż powyższe rozważania odnoszą się do przesłań zapisu częściowych danych, wykorzystane kroki stosują się również do przesyłania zapisywania nieczęściowych danych. Tzn., jeśli cała linia pamięci podręcznej została zmieniona przez operację zapisu z procesora, wówczas cała linia pamięci podręcznej powinna być przechowywana w buforze przechwytującym w sterowniku pamięci. Następnie, gdy sterownik pamięci wykonuje krok łączenia 2665, wynik łączenia byłby po prostu danymi przechowywanymi w buforze przechwytującym; żadne dane z niejawnego przesłania zapisu powrotnego nie byłyby użyte do łączenia.
W jednym przykładzie wykonania, żądający procesor zmienia stan swej linii pamięci podręcznej na dzielony lub wyłączny, w zależności od tego, czy inny zespół również posiada kopię tej linii. W jednym wariancie, jeśli sygnał HITM# został wystawiony w czasie fazy podglądania, wówczas procesor przechwytuje danąz niejawnego zapisu powrotnego z szyny. Procesor następnie łączy tę danąz oryginalną daną do zapisu i modyfikuje swąpamięć podręczną tą skompletowaną linią. Stąd, procesor zmieniłby stan tej linii w pamięci podręcznej na wyłączny. W innym wariancie, jeśli nie został wystawiony żaden sygnał HITM#, wówczas procesor zmienia stan swej linii w pamięci podręcznej na wyłączny, lub dzielony jeśli inne zespoły dołączone do szyny trzymają ważną kopię linii.
Zarządca węzła odgrywa rolę sterownika pamięci na szynie dla celów opisanych w odniesieniu do fig. 26. Na przykład, zarządca węzła otrzymuje daną do zapisu z procesora, łączy ją z daną przesłaną przy niejawnym zapisie powrotnym z innego procesora, oraz przechowuje tak skompletowaną linię w swej własnej pamięci podręcznej. Przez to, zarządca węzła miałby zmodyfikowaną kopię linii pamięci podręcznej dla wszystkich późniejszych żądań do tej linii. Może powstać sytuacja, że linia pamięci podręcznej do której zapisuje procesorjest nieważna w węźle i musi zostać wykonany dostęp do szyny wyższego poziomu. W takiej sytuacji, zarządca węzła opóźnia albo ponawia żądanie, w zależności od tego czy zostanie mu przydzielony wyższy poziom szyny. W takiej sytuacji, globalne nadzorowanie transakcji, które mogło wystąpić w kroku 2635, jak również krok zapisu 2645, są opóźniane, jak opisano powyżej.
Jak pokazano na fig. 22 - 26, zespół podglądający, który ma zmodyfikowaną kopię żądanej linii zachowuje się podobnie dla żądania zapisu i dla żądania odczytu. Tzn., żądający zespół wystawia sygnał HITM#, zdejmuje sygnał HIT#, oraz umieszcza odnośnąlinię pamięci podręcznej na szynie w odpowiednim czasie. Stąd, dzięki temu podobieństwu, jeden przykład wykonania zarządza przesyłaniem danych do zapisu, do częściowego zapisu i żądaniami odczytu, przy minimalnej komplikacji struktury logicznego każdego zespołu.
Figura 29 pokazuje schemat ilustrujący kroki wykonywane przez jeden przykład wykonania wynalazku w czasie żądania unieważnienia linii pamięci podręcznej. Jak opisano powyżej w odniesieniu do fig. 22, żądający zespół wysyła w kroku 2905 żądanie na szynę w czasie Fazy Żądania. Żądanie pokazane na fig. 29 jest żądaniem unieważnienia linii pamięci podręcznej. Tzn., procesor wysyła żądania unieważnienia konkretnej linii w każdej innej pamięci podręcznej. Może być to wykonane, na przykład, jeśli procesor posiada kopię linii pamięci podręcznej w stanie dzielonym i pragnie pisać do niej; procesor może unieważnić wszystkie te linie w innych pamięciach podręcznych i następnie zmienić stan swej linii pamięci podręcznej na zmodyfikowany, i pisać do linii w swej własnej pamięci podręcznej.
Jak powyżej, wszystkie zespoły dołączone do szyny w kroku 2910 wykonują podglądanie, dla wyznaczenia w kroku 2915, czy któryś z nich nie posiada tej linii w stanie zmodyfikowanym. W przypadku, gdy żaden zespół dołączony do szyny nie posiada zmodyfikowanej kopii linii, każdy z zespołów zdejmuje w kroku 2920 sygnały HIT# i HITM#. Żądanie unieważnienia przecho38
178 832 dzi wówczas w kroku 2930 przez każdy zespół dołączony do szyny, z wyjątkiem procesora, unieważniając jego kopię linii pamięci podręcznej i przypisując własność linii procesorowi (tzn., linia pamięci kieszeniowej jest zmieniana w stan zmodyfikowany). Sterownik pamięci wysyła w kroku 2930 potwierdzenie normalnego zakończenia do procesora, i przetwarzanie wykonuje się dalej.
Jednakże, jeśli którykolwiek zespół dołączony do szyny, taki jak inny procesor, posiada zmodyfikowaną kopię żądanej linii pamięci podręcznej, wówczas ten inny procesor wystawia sygnał HITM# i zdejmuje sygnał HIT# w czasie Fazy Podglądania w kroku 2935. Wszystkie inne zespoły dołączone do szyny również zdejmują sygnał HIT# w czasie Fazy Podglądania. Wystawienie sygnału HITM# informuje procesor, że inny zespół dołączony do szyny ma obecnie przydzieloną linię. Ten przydział linii musi być przesłany.
Jak powyżej, wewnętrzne stany pamięci podręcznej procesorów sąmodyfikowane w Fazie Podglądania. Przez to linia pamięci podręcznej jest zmieniana w stan zmodyfikowany, a linia pamięci podręcznych jest zmieniana w stan nieważny, w kroku 2940. Przez to, w kroku 2940 procesor uzyskuje przydział linii pamięci podręcznej nawet, jeśli aktualne dane nie zostały jeszcze przesłane.
Zmiana stanów pamięci podręcznych w czasie Fazy Podglądania zapewnia, że modyfikowane dane nie sągubione. Przez to, jeśli następne żądanie na szynie jest żądaniem dostępu do tej samej linii, procesor wystawia sygnał HITM#, ponieważ procesor posiada przydzieloną linię pamięci kieszeniowej. W czasie, gdy musi wystąpić przesłanie dla następnego żądania, procesor będzie miał najnowszą wersję linii w swej pamięci podręcznej, jak opisano powyżej.
W Fazie Przesyłania Danych, inny procesor wysyła w kroku 2945 przesłanie niejawnego zapisu powrotnego linii pamięci podręcznej. To przesłanie jest całą linią pamięci podręcznej przesyłanej do procesora. W jednym przykładzie wykonania niniej szego wynalazku, inny procesor umieszcza linię pamięci podręcznej na szynie w odpowiedzi na sygnał ze sterownika pamięci wskazujący jego gotowość do przesyłania danych. Sterownik pamięci wysyła sygnał w czasie fazy odpowiedzi wtedy, gdy posiada dostępny bufor linii, w którym umieszcza się linię pamięci podręcznej. Procesor zabiera dane z szyny, a sterownik pamięci przechwytuje dane z szyny w kroku 2950. Przez to, linia pamięci podręcznej w procesorze jest teraz w stanie zmodyfikowanym, a główna pamięć również posiada najnowszą wersję zmodyfikowanej linii pamięci podręcznej. Alternatywnie, procesor może zmienić stan linii swej pamięci podręcznej na wyłączny, jeśli pamięć główna również posiada ważną kopię linii.
Jak opisano powyżej w odniesieniu do fig. 23 - 28, w hierarchii wieloszynowej zarządca węzła odgrywa rolę sterownika pamięci na szynie dla celów opisanych w nawiązaniu do fig. 29. Na przykład, zarządca węzła zabiera dane z szyny w kroku 2950. W celu unieważnienia linii pamięci podręcznej, unieważniana jest linia we wszystkich pamięciach podręcznych we wszystkich węzłach. Przez to, może powstać sytuacja, że unieważniana linia pamięci podręcznej jest również zawarta w węźle i w związku z tym musi być wykonany dostęp do następnego poziomu szyny w celu unieważnienia tej linii. W takiej sytuacji, zarządca węzła albo opóźnia albo ponawia żądanie, w zależności od tego, czy przydział następnego poziomu szyny jest możliwy. W tej sytuacji, globalne nadzorowanie transakcji, które miało wystąpić w kroku 2925, zostaje opóźnione w sposób opisany powyżej.
W innym przykładzie wykonania wynalazku, to nie kontroler pamięci, lecz zespół podglądający (tzn. zespół, który posiada zmodyfikowaną kopię żądanej linii) łączy dane. W przypadku przesyłania do zapisu częściowych danych, procesor zabiera częściowe dane z szyny. Procesor następnie przesyła linię ze swej własnej pamięci podręcznej do bufora tymczasowego przechowywania i dołącza do linii częściowo zapisywaną daną. Przez to, procesor utrzymuje zmodyfikowaną kopię linii i zwalnia sterownik pamięci z odpowiedzialności załączenie danych.
Po skończeniu dołączania, procesor posiada dwie możliwości: pamięć podręczna procesora może zostać zmodyfikowana, lub linia może zostać zapisana do pamięci głównej. Jeśli procesor zmienia zawartość pamięci podręcznej przewiduje ciągłe modyfikowanie bufora tymczasowego i zapisywanie zawartości bufora do pamięci podręcznej jedynie w przypadku
178 832 chybienia do bufora. Przez to, procesor w sposób wydajny odpowiada na liczne żądania do tej samej linii pamięci podręcznej.
Zgodnie z drugą możliwością, procesor zmiania pamięć główną. Przez to, po zakończeniu operacji dołączania, procesor przesyła linię przez szynę do pamięci głównej. To przesłanie jest oddzielną transakcją i jest wykonane przez przejęcie szyny i wysłanie żądania zapisu do pamięci w czasie Fazy Żądania, jeśli szyna została przydzielona.
Przez to, jak widać w rozwiązaniu według wynalazku, spójność pamięci podręcznej jest utrzymywana w systemie z szyną potokową. W jednym przykładzie wykonania, dostępy do pamięci są zaspokajane jako pojedyncza transakcja, bez względu na to, czy dana jest zawarta w jednostce pamięci głównej dołączonej do szyny, czy w pamięci podręcznej w którymś z zespołów dołączonych do szyny.
Będzie to oczywiste dla znawców tej dziedziny techniki, że chociaż omówiono powyżej poszczególne przykłady operacji odczytu, zapisu i unieważnienia, niniejszy wynalazek nie ogranicza się do tych operacji. Inne operacje, które mogąbyć wysyłane na szynę pozostają również w zakresie niniejszego wynalazku.
178 832
178 832
178 832
178 832
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
FIG. 5
• · ·
178 832
FIG. 8
178 832
FIG. 13
178 832
j ί
FIG. 14 —Ί400
178 832
178 832
1601
FIG. 16 CZZD ·<-
1608
1609
178 832
C-----—1700
178 832
178 832
_»1922
178 832
cE>
178 832
FIG. 21
178 832
178 832
178 832
FIG. 24
FIG. 25
2565
178 832
178 832
2740
2860
178 832
178 832
120
FIG.
Departament Wydawnictw UP RP. Nakład 70 egz
Cena 6,00 zł.

Claims (3)

  1. Zastrzeżenia patentowe
    1. Sposób utrzymywania spójności pamięci w systemie komputerowym, zawierającym potokową szynę zewnętrzną, przynajmniej jeden główny procesor CPU dołączony do szyny zewnętrznej, kolejkę żądań do szyny zewnętrznej oraz dołączony do szyny zewnętrznej system pamięci zawierający pamięć główną i przynajmniej jeden poziom pamięci podręcznych, gdzie program wykonywany w głównym procesorze CPU zawiera zbiór żądań do danych z pamięci i oczekuje, że będą one obsługiwane w założonym porządku, znamienny tym, że w kolejnych etapach wysyła się zbiór żądań danych na szynę zewnętrzną w porządku potokowym, wstawia się wysyłane żądania danych do kolejki żądań do szyny zewnętrznej, monitorując informacje o statusie dotyczącej każdego wysłanego żądania danych, utrzymuje się spójność pamięci uaktualniając wpisy, zapewnia, że każde żądanie otrzyma bieżące dane oraz obsługuje się żądania zgodnie z założonym porządkiem.
  2. 2. Sposób według zastrz. 1, znamienny tym, że dla głównego procesora CPU zawierającego zespół dołączony do szyny typu pamięci podręcznej danych DCU i pamięci podręcznej instrukcji IFU posiadający pierwszy poziom L1 pamięci podręcznej, w etapie wysyłania wysyła się, przez zespół dołączony do szyny, żądanie specyfikujące żądane dane i wskazujące, że w pierwszym poziomie L1 pamięci podręcznej nie było sprawdzane istnienie żądanych danych, a ponadto, w odpowiedzi na wskazanie przez zespół dołączony do szyny, że pierwszy poziom L1 pamięci podręcznej nie był przeszukiwany, dokonuje się samopodglądania pierwszego poziomu Lhv późniejszym czasie.
  3. 3. Sposób według zastrz. 2, znamienny tym, że dla kolejki żądań do szyny zewnętrznej typu FIFO, posiadający początek i koniec, w etapie umieszczania w kolejce umieszcza się żądania na początku kolejki FIFO i przesuwa się żądania w stronę końca kolejki FIFO w etapie uaktualniania, a ponadto poszukuje się konfliktów dotyczących tych samych adresów pomiędzy obecnym i poprzednio wysłanym żądaniem, które zostało wprowadzone na kolejki żądań do szyny zewnętrznej i przeszło drugi poziom L2 pamięci podręcznej i w przypadku stwierdzenia konfliktu odwołania do tych samych adresów blokuje się bieżące żądanie poprzez wysłanie go z powrotem na początek kolejki FIFO.
PL95307473A 1994-03-02 1995-02-28 Sposób utrzymywania spójności pamięci w systemie komputerowym PL178832B1 (pl)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/205,040 US5623628A (en) 1994-03-02 1994-03-02 Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue

Publications (2)

Publication Number Publication Date
PL307473A1 PL307473A1 (en) 1995-09-04
PL178832B1 true PL178832B1 (pl) 2000-06-30

Family

ID=22760538

Family Applications (1)

Application Number Title Priority Date Filing Date
PL95307473A PL178832B1 (pl) 1994-03-02 1995-02-28 Sposób utrzymywania spójności pamięci w systemie komputerowym

Country Status (7)

Country Link
US (1) US5623628A (pl)
DE (1) DE19506734A1 (pl)
GB (1) GB2287334B (pl)
HK (1) HK1010067A1 (pl)
PL (1) PL178832B1 (pl)
SG (1) SG50458A1 (pl)
TW (1) TW311192B (pl)

Families Citing this family (177)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
EP0636256B1 (en) * 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69330889T2 (de) * 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
US5884091A (en) * 1993-12-08 1999-03-16 Intel Corporation Computer system having a central processing unit responsive to the identity of an upgrade processor
US6029217A (en) * 1994-10-03 2000-02-22 International Business Machines Corporation Queued arbitration mechanism for data processing system
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
US5903741A (en) * 1995-01-25 1999-05-11 Advanced Micro Devices, Inc. Method of allocating a fixed reorder buffer storage line for execution results regardless of a number of concurrently dispatched instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5812799A (en) * 1995-06-07 1998-09-22 Microunity Systems Engineering, Inc. Non-blocking load buffer and a multiple-priority memory system for real-time multiprocessing
US5933618A (en) * 1995-10-30 1999-08-03 Advanced Micro Devices, Inc. Speculative register storage for storing speculative results corresponding to register updated by a plurality of concurrently recorded instruction
US5778438A (en) * 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5745781A (en) * 1995-12-26 1998-04-28 International Business Machines Corporation Memoryless communications adapter including queueing and matching primitives for scalable distributed parallel computer systems
US5813034A (en) * 1996-01-25 1998-09-22 Unisys Corporation Method and circuitry for modifying data words in a multi-level distributed data processing system
WO1997030399A1 (en) 1996-02-20 1997-08-21 Intergraph Corporation High-availability super server
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
US5920891A (en) * 1996-05-20 1999-07-06 Advanced Micro Devices, Inc. Architecture and method for controlling a cache memory
US5829010A (en) * 1996-05-31 1998-10-27 Sun Microsystems, Inc. Apparatus and method to efficiently abort and restart a primary memory access
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
US5845107A (en) * 1996-07-03 1998-12-01 Intel Corporation Signaling protocol conversion between a processor and a high-performance system bus
US5835950A (en) * 1996-07-12 1998-11-10 Samsung Electronics Co., Ltd. Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus
US5915110A (en) * 1996-07-26 1999-06-22 Advanced Micro Devices, Inc. Branch misprediction recovery in a reorder buffer having a future file
US5872951A (en) * 1996-07-26 1999-02-16 Advanced Micro Design, Inc. Reorder buffer having a future file for storing speculative instruction execution results
US5946468A (en) * 1996-07-26 1999-08-31 Advanced Micro Devices, Inc. Reorder buffer having an improved future file for storing speculative instruction execution results
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5787469A (en) * 1996-09-06 1998-07-28 Intel Corporation System and method for exclusively writing tag during write allocate requests
US5923857A (en) * 1996-09-06 1999-07-13 Intel Corporation Method and apparatus for ordering writeback data transfers on a bus
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
US5897656A (en) * 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6088769A (en) * 1996-10-01 2000-07-11 International Business Machines Corporation Multiprocessor cache coherence directed by combined local and global tables
JPH10154100A (ja) * 1996-11-25 1998-06-09 Canon Inc 情報処理システム及び装置及びその制御方法
US5864692A (en) * 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction 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
US6173371B1 (en) * 1997-04-14 2001-01-09 International Business Machines Corporation Demand-based issuance of cache operations to a processor bus
US6055608A (en) * 1997-04-14 2000-04-25 International Business Machines Corporation Method and system for speculatively sourcing cache memory data within a multiprocessor data-processing system
US6061766A (en) * 1997-06-24 2000-05-09 Sun Microsystems, Inc. Non-inclusive cache method using pipelined snoop bus
US6076147A (en) * 1997-06-24 2000-06-13 Sun Microsystems, Inc. Non-inclusive cache system using pipelined snoop bus
US6269426B1 (en) * 1997-06-24 2001-07-31 Sun Microsystems, Inc. Method for operating a non-blocking hierarchical cache throttle
US6148371A (en) * 1997-06-25 2000-11-14 Sun Microsystems, Inc. Multi-level non-blocking cache system with inhibiting thrashing
US5930819A (en) * 1997-06-25 1999-07-27 Sun Microsystems, Inc. Method for performing in-line bank conflict detection and resolution in a multi-ported non-blocking cache
US6154812A (en) * 1997-06-25 2000-11-28 Sun Microsystems, Inc. Method for inhibiting thrashing in a multi-level non-blocking cache system
US6154815A (en) * 1997-06-25 2000-11-28 Sun Microsystems, Inc. Non-blocking hierarchical cache throttle
US5991855A (en) * 1997-07-02 1999-11-23 Micron Electronics, Inc. Low latency memory read with concurrent pipe lined snoops
US6138209A (en) * 1997-09-05 2000-10-24 International Business Machines Corporation Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof
US6260117B1 (en) 1997-09-18 2001-07-10 International Business Machines Corporation Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US6141021A (en) * 1997-12-12 2000-10-31 Intel Corporation Method and apparatus for eliminating contention on an accelerated graphics port
US6460119B1 (en) * 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6430654B1 (en) * 1998-01-21 2002-08-06 Sun Microsystems, Inc. Apparatus and method for distributed non-blocking multi-level cache
US6061764A (en) * 1998-01-26 2000-05-09 Intel Corporation Coherent variable length reads which implicates multiple cache lines by a memory controller connected to a serial and a pipelined bus utilizing a plurality of atomic transactions
US6253291B1 (en) * 1998-02-13 2001-06-26 Sun Microsystems, Inc. Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system
US6567426B1 (en) * 1998-03-05 2003-05-20 Silicon Graphics, Inc. Preemptive timer multiplexed shared memory access
FR2777370B1 (fr) * 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
US6269360B1 (en) 1998-04-24 2001-07-31 International Business Machines Corporation Optimization of ordered stores on a pipelined bus via self-initiated retry
US6553403B1 (en) * 1998-06-03 2003-04-22 International Business Machines Corporation System, method and computer program product for monitoring in a distributed computing environment
US6460070B1 (en) 1998-06-03 2002-10-01 International Business Machines Corporation Mobile agents for fault diagnosis and correction in a distributed computer environment
US6549932B1 (en) * 1998-06-03 2003-04-15 International Business Machines Corporation System, method and computer program product for discovery in a distributed computing environment
US6493802B1 (en) * 1998-06-18 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus for performing speculative memory fills into a microprocessor
US6094716A (en) 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6112283A (en) * 1998-08-06 2000-08-29 Intel Corporation Out-of-order snooping for multiprocessor computer systems
US6377582B1 (en) 1998-08-06 2002-04-23 Intel Corporation Decentralized ring arbitration for multiprocessor computer systems
US6574219B1 (en) 1998-08-06 2003-06-03 Intel Corp Passive message ordering on a decentralized ring
WO2000011603A2 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6249851B1 (en) * 1998-08-25 2001-06-19 Stmicroelectronics, Inc. Computer system having non-blocking cache and pipelined bus interface unit
US6081874A (en) * 1998-09-29 2000-06-27 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6067603A (en) * 1998-10-01 2000-05-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6483516B1 (en) 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6801207B1 (en) * 1998-10-09 2004-10-05 Advanced Micro Devices, Inc. Multimedia processor employing a shared CPU-graphics cache
US6240503B1 (en) 1998-11-12 2001-05-29 Advanced Micro Devices, Inc. Cumulative lookahead to eliminate chained dependencies
US6338125B1 (en) 1998-12-23 2002-01-08 Cray Inc. Dynamic slot allocation and tracking of multiple memory requests
US6314500B1 (en) * 1999-01-11 2001-11-06 International Business Machines Corporation Selective routing of data in a multi-level memory architecture based on source identification information
US6356485B1 (en) 1999-02-13 2002-03-12 Integrated Device Technology, Inc. Merging write cycles by comparing at least a portion of the respective write cycle addresses
US6321328B1 (en) * 1999-03-22 2001-11-20 Hewlett-Packard Company Processor having data buffer for speculative loads
EP1050812A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Storage of data in a computer memory
US6460133B1 (en) * 1999-05-20 2002-10-01 International Business Machines Corporation Queue resource tracking in a multiprocessor system
US6434677B1 (en) 1999-06-01 2002-08-13 Intel Corporation Method and apparatus for altering data length to zero to maintain cache coherency
US6532523B1 (en) * 1999-10-13 2003-03-11 Oak Technology, Inc. Apparatus for processing memory access requests
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6557048B1 (en) * 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
US6671712B1 (en) 1999-11-09 2003-12-30 International Business Machines Corporation Multi-node data processing system having a non-hierarchical interconnect architecture
US6519649B1 (en) 1999-11-09 2003-02-11 International Business Machines Corporation Multi-node data processing system and communication protocol having a partial combined response
US6519665B1 (en) 1999-11-09 2003-02-11 International Business Machines Corporation Multi-node data processing system and communication protocol in which a stomp signal is propagated to cancel a prior request
US6848003B1 (en) * 1999-11-09 2005-01-25 International Business Machines Corporation Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
US6591307B1 (en) 1999-11-09 2003-07-08 International Business Machines Corporation Multi-node data processing system and method of queue management in which a queued operation is speculatively cancelled in response to a partial combined response
US6539457B1 (en) 2000-02-21 2003-03-25 Hewlett-Packard Company Cache address conflict mechanism without store buffers
US6557078B1 (en) * 2000-02-21 2003-04-29 Hewlett Packard Development Company, L.P. Cache chain structure to implement high bandwidth low latency cache memory subsystem
US6507892B1 (en) 2000-02-21 2003-01-14 Hewlett-Packard Company L1 cache memory
US6434672B1 (en) * 2000-02-29 2002-08-13 Hewlett-Packard Company Methods and apparatus for improving system performance with a shared cache memory
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6877029B1 (en) * 2000-07-20 2005-04-05 Silicon Graphics, Inc. Method and apparatus for managing node controllers using partitions in a computer system
US6981101B1 (en) 2000-07-20 2005-12-27 Silicon Graphics, Inc. Method and system for maintaining data at input/output (I/O) interfaces for a multiprocessor system
US7069306B1 (en) 2000-07-20 2006-06-27 Silicon Graphics, Inc. Providing shared and non-shared access to memory in a system with plural processor coherence domains
US6738869B1 (en) * 2000-08-29 2004-05-18 Intel Corporation Arrangements for out-of-order queue cache coherency and memory write starvation prevention
US6462423B1 (en) 2000-08-31 2002-10-08 Micron Technology, Inc. Flip-chip with matched lines and ground plane
US6627999B2 (en) 2000-08-31 2003-09-30 Micron Technology, Inc. Flip-chip with matched signal lines, ground plane and ground bumps adjacent signal bumps
JP2002082832A (ja) * 2000-09-08 2002-03-22 Nec Corp キャッシュ更新方法及びキャッシュ更新制御システム並びに記録媒体
US6477622B1 (en) * 2000-09-26 2002-11-05 Sun Microsystems, Inc. Simplified writeback handling
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
US6622203B2 (en) * 2001-05-29 2003-09-16 Agilent Technologies, Inc. Embedded memory access method and system for application specific integrated circuits
US6813623B2 (en) * 2001-06-15 2004-11-02 International Business Machines Corporation Method and apparatus for chunk based transaction logging with asynchronous input/output for a database management system
US6704841B2 (en) * 2001-06-26 2004-03-09 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
US6865695B2 (en) * 2001-07-26 2005-03-08 International Business Machines Corpoation Robust system bus recovery
US6782456B2 (en) * 2001-07-26 2004-08-24 International Business Machines Corporation Microprocessor system bus protocol providing a fully pipelined input/output DMA write mechanism
US6785776B2 (en) * 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7394823B2 (en) * 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US6842822B2 (en) * 2002-04-05 2005-01-11 Freescale Semiconductor, Inc. System and method for cache external writing
US20030195939A1 (en) * 2002-04-16 2003-10-16 Edirisooriya Samatha J. Conditional read and invalidate for use in coherent multiprocessor systems
US7017025B1 (en) * 2002-06-27 2006-03-21 Mips Technologies, Inc. Mechanism for proxy management of multiprocessor virtual memory
US7003630B1 (en) * 2002-06-27 2006-02-21 Mips Technologies, Inc. Mechanism for proxy management of multiprocessor storage hierarchies
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
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6996645B1 (en) * 2002-12-27 2006-02-07 Unisys Corporation Method and apparatus for spawning multiple requests from a single entry of a queue
US7096289B2 (en) * 2003-01-16 2006-08-22 International Business Machines Corporation Sender to receiver request retry method and apparatus
US7216202B1 (en) * 2003-02-25 2007-05-08 Sun Microsystems, Inc. Method and apparatus for supporting one or more servers on a single semiconductor chip
US7043626B1 (en) 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US7502892B2 (en) * 2003-12-30 2009-03-10 Intel Corporation Decoupling request for ownership tag reads from data read operations
TWI242134B (en) * 2004-02-12 2005-10-21 Via Tech Inc Data extraction method and system
US7599044B2 (en) 2005-06-23 2009-10-06 Apple Inc. Method and apparatus for remotely detecting presence
US20060080511A1 (en) * 2004-10-08 2006-04-13 International Business Machines Corporation Enhanced bus transactions for efficient support of a remote cache directory copy
US20060100997A1 (en) * 2004-10-27 2006-05-11 Wall Gary C Data caching
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
US7577930B2 (en) 2005-06-23 2009-08-18 Apple Inc. Method and apparatus for analyzing integrated circuit operations
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7433191B2 (en) * 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
JP4820654B2 (ja) * 2006-02-06 2011-11-24 富士通セミコンダクター株式会社 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
US7366847B2 (en) * 2006-02-06 2008-04-29 Azul Systems, Inc. Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag
US20090006712A1 (en) * 2007-06-29 2009-01-01 Fatma Ehsan Data ordering in a multi-node system
US9081901B2 (en) * 2007-10-31 2015-07-14 Raytheon Company Means of control for reconfigurable computers
US8006039B2 (en) 2008-02-25 2011-08-23 International Business Machines Corporation Method, system, and computer program product for merging data
CN101676887B (zh) * 2008-08-15 2012-07-25 北京北大众志微系统科技有限责任公司 一种基于ahb总线结构的总线监听方法及装置
US8447932B2 (en) * 2010-06-22 2013-05-21 International Business Machines Corporation Recover store data merging
US8850129B2 (en) * 2010-06-24 2014-09-30 International Business Machines Corporation Memory ordered store system in a multiprocessor computer system
US8688962B2 (en) * 2011-04-01 2014-04-01 Intel Corporation Gather cache architecture
WO2013095387A1 (en) 2011-12-20 2013-06-27 Intel Corporation Secure replay protected storage
US9411748B2 (en) 2011-12-20 2016-08-09 Intel Corporation Secure replay protected storage
WO2013095475A1 (en) 2011-12-21 2013-06-27 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction
CN104011694A (zh) * 2011-12-21 2014-08-27 英特尔公司 用于存储器层次知晓的生产者-消费者指令的装置和方法
US20130212210A1 (en) * 2012-02-10 2013-08-15 General Electric Company Rule engine manager in memory data transfers
US9015423B2 (en) * 2012-06-14 2015-04-21 International Business Machines Corporation Reducing store operation busy times
US9304925B2 (en) * 2012-10-24 2016-04-05 Texas Instruments Incorporated Distributed data return buffer for coherence system with speculative address support
US9785556B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Cross-die interface snoop or global observation message ordering
US9858190B2 (en) * 2015-01-27 2018-01-02 International Business Machines Corporation Maintaining order with parallel access data streams
US10204047B2 (en) * 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
US10228911B2 (en) 2015-10-08 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus employing user-specified binary point fixed point arithmetic
US10664751B2 (en) 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
US10776690B2 (en) 2015-10-08 2020-09-15 Via Alliance Semiconductor Co., Ltd. Neural network unit with plurality of selectable output functions
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
US11226840B2 (en) 2015-10-08 2022-01-18 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US11221872B2 (en) 2015-10-08 2022-01-11 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US11216720B2 (en) 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
US10725934B2 (en) 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
US11029949B2 (en) 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US10380481B2 (en) 2015-10-08 2019-08-13 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs concurrent LSTM cell calculations
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
US20170293646A1 (en) * 2016-04-07 2017-10-12 Imagination Technologies Limited Apparatus and methods for out of order item selection and status updating
US10303605B2 (en) * 2016-07-20 2019-05-28 Intel Corporation Increasing invalid to modified protocol occurrences in a computing system
US10423876B2 (en) 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
US10430706B2 (en) 2016-12-01 2019-10-01 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either last level cache slice or neural network unit memory
US10417560B2 (en) 2016-12-01 2019-09-17 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs efficient 3-dimensional convolutions
US10438115B2 (en) 2016-12-01 2019-10-08 Via Alliance Semiconductor Co., Ltd. Neural network unit with memory layout to perform efficient 3-dimensional convolutions
US10395165B2 (en) 2016-12-01 2019-08-27 Via Alliance Semiconductor Co., Ltd Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory
US10515302B2 (en) 2016-12-08 2019-12-24 Via Alliance Semiconductor Co., Ltd. Neural network unit with mixed data and weight size computation capability
US10394678B2 (en) 2016-12-29 2019-08-27 Intel Corporation Wait and poll instructions for monitoring a plurality of addresses
US10586148B2 (en) 2016-12-31 2020-03-10 Via Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
US10565492B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US10140574B2 (en) 2016-12-31 2018-11-27 Via Alliance Semiconductor Co., Ltd Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments
US10565494B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US9912957B1 (en) 2017-04-01 2018-03-06 Intel Corporation Lossless compression for multisample render targets alongside fragment compression
US10613979B2 (en) 2017-11-30 2020-04-07 International Business Machines Corporation Accelerator memory coherency with single state machine
US20230315643A1 (en) * 2022-03-29 2023-10-05 Microsoft Technology Licensing, Llc Cache Data Provided Based on Data Availability

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3675217A (en) * 1969-12-23 1972-07-04 Ibm Sequence interlocking and priority apparatus
US4136386A (en) * 1977-10-06 1979-01-23 International Business Machines Corporation Backing store access coordination in a multi-processor system
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
GB2244158B (en) * 1990-04-30 1994-09-07 Sun Microsystems Inc Cache memory arrangement with write buffer pipeline providing for concurrent cache determinations
EP0468831B1 (en) * 1990-06-29 1997-10-15 Digital Equipment Corporation Bus protocol for write-back cache processor
IE860318L (en) * 1990-10-01 1986-08-05 Digital Equipment Corp System bus for a multi-cache data processing system
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability

Also Published As

Publication number Publication date
DE19506734A1 (de) 1995-09-07
SG50458A1 (en) 1998-07-20
GB2287334A (en) 1995-09-13
HK1010067A1 (en) 1999-06-11
US5623628A (en) 1997-04-22
PL307473A1 (en) 1995-09-04
TW311192B (pl) 1997-07-21
GB9416273D0 (en) 1994-10-05
GB2287334B (en) 1998-03-25

Similar Documents

Publication Publication Date Title
PL178832B1 (pl) Sposób utrzymywania spójności pamięci w systemie komputerowym
US6141734A (en) Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
JP5404574B2 (ja) マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション
US8364851B2 (en) Scalable efficient I/O port protocol
US5420991A (en) Apparatus and method for maintaining processing consistency in a computer system having multiple processors
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
JP5118652B2 (ja) アウトオブオーダープロセッサにおけるトランザクショナルメモリ
US5511175A (en) Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US20060026371A1 (en) Method and apparatus for implementing memory order models with order vectors
KR100243853B1 (ko) 개량된메모리아키텍쳐를위한방법및장치
CN109196485B (zh) 用于维持非均匀计算装置中的数据一致性的方法和设备
US5751995A (en) Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively
US9383995B2 (en) Load ordering in a weakly-ordered processor
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
US20120179877A1 (en) Mechanism to support flexible decoupled transactional memory
US10824567B2 (en) Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead
US5751986A (en) Computer system with self-consistent ordering mechanism
US20230244492A1 (en) Preserving memory ordering between offloaded instructions and non-offloaded instructions
CN102713838B (zh) 无停顿键设置工具
CN109313554B (zh) 用于在非均匀计算装置中进行调度的方法和设备
US20040123078A1 (en) Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US11119925B2 (en) Apparatus and method for managing capability metadata
US8806145B2 (en) Methods and apparatuses for improving speculation success in processors
US6154812A (en) Method for inhibiting thrashing in a multi-level non-blocking cache system

Legal Events

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

Effective date: 20100228