SE461813B - Multiprocessorarkitektur innefattande processor/minnespar sammankopplade med en eller flera bussar i ett hierarkiskt system - Google Patents

Multiprocessorarkitektur innefattande processor/minnespar sammankopplade med en eller flera bussar i ett hierarkiskt system

Info

Publication number
SE461813B
SE461813B SE8804700A SE8804700A SE461813B SE 461813 B SE461813 B SE 461813B SE 8804700 A SE8804700 A SE 8804700A SE 8804700 A SE8804700 A SE 8804700A SE 461813 B SE461813 B SE 461813B
Authority
SE
Sweden
Prior art keywords
data
memory
bus
subsystem
data element
Prior art date
Application number
SE8804700A
Other languages
English (en)
Other versions
SE8804700D0 (sv
Inventor
E Hagersten
Original Assignee
David H D Warren
Swedish Inst Of Computer Scien
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 David H D Warren, Swedish Inst Of Computer Scien filed Critical David H D Warren
Publication of SE8804700D0 publication Critical patent/SE8804700D0/sv
Priority to DE68928454T priority Critical patent/DE68928454T2/de
Priority to EP89907854A priority patent/EP0424432B1/en
Priority to PCT/SE1989/000369 priority patent/WO1990000283A1/en
Priority to JP1507284A priority patent/JPH03505793A/ja
Priority to AT89907854T priority patent/ATE160454T1/de
Publication of SE461813B publication Critical patent/SE461813B/sv

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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

Landscapes

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

Description

15 20 25 30 35 40 461 8135 2 medan däremot den delade bussen och minnet, vid maskiner med delat fysiskt minne, är en flaskhals som sätter en gräns på antalet processorer som kan inkopplas. Meddelandeförmedlingsmaskiner belastar emellertid mjukvaran mycket hårdare för att fördela beräkningen effektivt och därför är hårdvarans skalbarhet endas användbar så till vida att mjukvaran kan hålla kommunika- tionen till ett minimum.
Datorsystemet enligt föreliggande uppfinning påminner om en meddelande- förmedlingsmaskin så till vida att minnet är distríbuerat och maskinen är skalbar till ett godtyckligt antal processorer. Datorsystemet enligt upp- finningen påminner också om en maskin med delat fysiskt minne så till vida att den stöder ett delat adressutrymme genom att sammankoppla processorer via delade bussar med användning av ett datakoherensprotokoll. Idén bakom före- liggande uppfinning, som därmed särskiljer sig både från meddelandeförmed- lingsmaskiner och maskiner med delat fysiskt minne, är att lokaliseringen av ett dataelement i maskinen är helt frånkopplad från dess virtuella adress.
SAMMANFATTNING AV UPPFINNINGEN För att uppfylla nämnda ändamål och krav avser således uppfinningen ett datorsystem med skalbar multiprocessorarkítektur, som har ett distribuerat Fysiskt minne och ett delat virtuellt minne, innefattande processor/minnespar sammankopplade med en eller flera bussar i ett hierarkiskt system. Uppfin- ningens särdrag är att i en datakontrollenhct är förbunden med varje processor/minnespar, vilken enhet innefattar ett statusminne (index), som lagrar statusinformation om varje dataelement hos respektive processor/minnespar, och vilken styr transaktioner för läsning och skrivning etc. av dataelementen i beroende av ett protokoll, som är en funktion av dataelementens status, varvid dataelementets lokalisering är oberoende av dess virtuella adress. Övriga särdrag och utvecklingar av uppfinningen anges i de åtföljande underkraven.
KORTFATTAD BESKRIVNING AV RITNINGARNA Uppfinningen kommer nu att beskrivas med hänvisning till åtföljande ritningar, varav k fig. 1 är en schematisk illustration av maskinens organisation; fíg. Z visar ett arrangemang för att utöka bussarnas kapacitet; fíg. 3 schematiskt visar olika buffertars anslutning till en index- kontrollenhet; och fig. 4 illustrerar olika tillstånd vid en läsning av ett dataelement. , 10 15 20 25 30 40 3 461 ölš DETALJERAD BESKRIVNING AV FÜREDRAGNA UTFÜRINGSFORMER AV UPPFINNINGEN Enligt uppfinningen är datorsystemets konstruktion baserat på följande överväganden. Var ett dataelement befinner sig är inte egentligen relevant för mjukvaran. Idealt sett bör datats fysiska pladering vara helt transparent för mjukvaran och lokaliseringen bör kontrolleras automatiskt av hårdvaran.
Från mjukvarans ståndpunkt sett, är allt data uniformt tillgängligt via ett globalt virtuellt adressutrymme, oberoende av den fysiska lokaliseringen.
Maskinen enligt uppfinningen uppvisar därför en likartad organisation av mjukvaran som konventionella multiprocessorer med gemensamt minne (t.ex.
Sequent och Encore). Den är därför en maskin för fullständigt allmänna ändamål och klarar ett brett urval av olika språk och tillämpningar.
Emellertid anses den vara särskilt lämpligt för bearbetning av deklarativa språk, där data typiskt är "write once" och därför "read only". Maskinen stöder glesa matriser genom att inte bestämma hur data skall allokeras inom det virtuella adressutrymme. från hårdvarans ståndpunkt sett, består maskinen utav ett godtyckligt antal processor/minnespar som är förbundna med varandra genom en hierarki av bussar och datakontrollenheter. Två till fyra nivåer i hierarkin räcker för att betjäna hundra- till många tusentals processorer. Det virtuella minnet är översatt till det fysikaliska minnet på ett helt flexibelt sätt. Översätt- ningen är dynamisk, och tillåter att data flyttas ditt det behövs mest.
Det kan finnas flera kopior av ett särskilt dataelement, men de skall alla dela på samma virtuella adress. Det finns inget särskilt hemmaläge som motsvarar en virtuell adress. Istället distrubuerar data sig själv automa- tiskt över maskinen på ett sådant sätt att dataåtkomsttider minskas och datatrafiken minimeras. Resultatet är att det mesta av minnesbehnvet till- godoses av en processors eget minne. Behov som kräver fjärråtknmst, kommer att tillgodoses med maximalt (2*N-1) busstransaktioner, där N är antalet nivåer i hierarkin, och kommer normalt endast att ge upphov till en begränsad mängd trafik över en begränsad dcl av maskinen.
MASKINENS ORGANISATION I fig. 1 visas maskinens organisation.
Maskinen är hierarkisk. Vid hierarkins bas finns processorer, var och en med ett stort, lokalt minne, eventuellt tillgängligt via ett konventionellt fickminne. Minnet innehåller en bild av någon del av det globala virtuella adressutrymmet. Minnet är set-associatívt och är organiserat såsom ett (mycket stort) fickminne, men det skall betonas att detta är den enda formen av huvudminne i maskinen. Minnet är via en minneskontrollenhet förbunden med en lokal buss. Den lokala bussen förbinder ett kluster av likadana 10 15 ZÜ 25 30 35 40 461 8i3 a konfigurationer, bestående av processor, fickminne, minne och kontrollenhet.
Den lokala bussen kan själv vara förbunden med en högre buss via en kontrollenhet osv., uppåt i hierarkin. Kontrollenheterna på högre nivå har var och en tillgång till ett index med statusinformation och betecknas indexkontrollenheter. Indexet är set-associativt och har plats för statusbitar till alla dataelementen i de underliggande minnena.
Funktionen av en kontrollenhet är att medla mellan dennas överliggande buss och underliggande subsystem. Dess funktion är en generalisering av tjuvkikande (snooping) fickminnen i minnesprocessorer som delar en enda buss.
Den möjliggör att minneshantering kan göras så lokalt som möjligt, men i de fall behovet inte kan tas om hand lokalt, svarar den för att vidarebefordra behovet uppåt eller neråt för att det skall kunna tillgodoses. Kontroll- enheten har tillgång till ett statusmínne som talar om vilken del av det virtuella adressutrymme som finns in i det underliggande subsystemets minne och om någon av dessa virtuella adresser även finns i minnesenheter utanför subsystemet. Således kan kontrollenheten, för varje virtuell adress svara på frågorna "finns denna uppgift i mitt subsystem?" och "förekommer denna uppgift någon annanstans i något annat subsystem?".
Kontrollenheterna uppför sig på sådant sätt att ett minnesbehov inte kommer att tillgodoses utanför ett subsystem om (1) det avser en läsopera- tion till en lokal uppgift, eller (2) det avser en skrivoperation till en icke delad uppgift. I synnerhet innebär detta att ingen främmande kommu- nikation krävs ifall en processor försöker att läsa en uppgift i sitt lokala minne eller skriva en icke delad uppgift sitt lokala minne. Normalt kommer detta att täcka det överväldigande flertalet av minnesreferenser.
Om ett subsystem försöker läsa en icke lokal uppgift, kommer läsbegäran att föras vidare i den mån som behövs för att få en kopia av uppgiften och vid behov kommer uppgiften att markeras som delad. Om ett subsystem försöker skriva en delad uppgift, kommer en begäran om att radera alla andra kopior av uppgiften att föras fram, och uppgiften markeras då som exklusiv.
Efterföljande punkter bör observeras. Data, som en processor själv genererar, kommer automatiskt att lagras i dess egna minne och kommer inte att kopieras någon annanstans, såvida icke en annan processor begär detta. En processor använder sannolikt det mesta av sin tid till att få ti1lgång'till sådana data. En processor behöver inte upprepade gånger få tillgång till en uppgift från ett fjärrminne, om datat är avlägset från början. Istället tenderar avlägset data att förflytta sig ditt det används aktivt och är inte bundet till något fixerat hemmaläge. I detta avseende skiljer sig före- liggande uppfinning från konventionella maskiner med gemensamma (fysiska) minnen, t.ex. Sequent, Encore, BBN Butterfly. Dessa nya egenskaper reducerar 10 12 20 25 30 35 40 5 461 813 avsevärt båda tävlan om gemensamma resurser och genomsnittliga dataåtkomst- tider.
Fast de flesta minnesåtkomster kommer att tendera att vara lokala i maskinen, kan bussarna på högre nivåer icke desto mindre utgöra flaskhalsar.
Den omedelbara lösningen är emellertid att utföra de högre nivåernas bussar effektivt så breda som behövs, genom att duplicera bussarna och kontroll- enheterna på högre nivåer, för att klara olika delar av adressutrymmet, med uppdelning först på udda och jämna adresser, och sedan på adressernas successivt högre bitar, såsom illustreras i fig. 2.
DAlAÅTKOMSlPRÜlÛKOtt Följande är en mera detaljerad beskrivning av dataåtkomstprotokollen, varvid följande förutsättningar gäller.
På lägsta nivån (nivå 1) består systemet av ett antal processorer. Varje processor är via en kontrollenhet förbunden med ett minne och en buss. Vid högre nivåer (i > 1) finns en kontrollenhet för varje subsystem. Det finns en arbitrerare på varje buss som selekterar en begäran. Varje dataelement i ett minne på nivå 1 befinner sig i ett av de följande tillstånd: Exklusivt (E) -- Gemensamt (S) -- detta är den enda kopian av elementet. det kan finnas andra kopior av elementet. Ûgiltigt (I) -- elementet är ogiltigt (existerar inte egentligen).
Rbegärt (R) -- elementet är begärt för läsning.
Wbegärt (W) -- väntar på fjärrupphävning. íillstånden R och W är i någon mening transienta och de förekommer inte i en multiprocessor med en enda buss.
Varje minne är N-vägs set-associatívt och lagrar dataelement plus deras tillhörande tillståndsbitar. Ett index är N-vägs set-associativt med en storlek som är lika med det totala antalet uppgifter i de underliggande minnena. Index har plats för att endast lagra tillståndsbitar.
Varje uppgift i ett index befinner sig i ett av de följande tillstånd: Exklusivt (E) -- inga kopior existerar utanför subsystemet.
Gemensamt (S) -- kopior kan existera utanför subsystemet.
Dgiltigt (l) -- elementet är ogiltigt (existerar inte egentligen innanför subsystemet). J f Rbegärande (R) -- elementet är begärt för läsning.
Wbegärande (W) -- väntar på fjärrupphävning.
Svarar (A) -- kommer (slutligen) att svara på en läsbegäran. tämnande (L) -- element existerar i subsystemet, men är på väg att lämna det. 10 15 20 25 30 35 40 461 813 6 Vi antar följande omplaceringsstrategi för data, vilken diskuteras mera i detalj senare. Ett ogiltigt läge väljs först om det finns ett sådant. I annat fall uttages en uppgift som är gemensam och som användes minst nyligen för omplacering. Om det inte finns en sådan uppgift, väläs ett exklusivt element som användes minst nyligen. I vardera av sistnämnda fallen utlöses en omplaceringsalgoritm.
Som det brukar vara när en läs-träff inträffar, plockas datats värde fram och ingen specifik åtgärd utlöses. Inte heller leder en skriv-träff för en exklusiv uppgift till vidare åtgärder.
BUSSARNAS ORGANISATION En buss är nedåt ansluten till klienter, som antingen är minneskontroll- enheter (processor) eller indexkontrollenheter (subsystem).
Det finns en arbitreringsfunktion mellan alla klienter och indexet på en buss för att välja nästa sändare. Sändaren initierar nästa transaktion som består av en eller flera av följande bussfaser: Init: initialisering av transaktionen, överför transaktionskoden och dataelementets adress.
Data: överför dataelementets datadel.
Räknare: överför transaktionens räknarvärde.
Svar: alla lyssnande klienter kan svara "ja". Under denna fas kan man få reda på om ingen eller om åtminstone en klient svarade ja.
Val: ur klienterna som svarade ja, väljs en ut.
BUSSTRANSAKTIONER Följande transaktioner kan enligt uppfinningen överföras av bussen.
Sekvensen av väntade bussfaser räknas upp. En klient som kan slutföra en tillståndsövergång i ett mindre antal faser kommer emellertid att avbryta transaktionen tidigare. Typiskt är att svar- och valfasen kan strykas. r, read: (init, svar, val). Någon i systemet vill läsa dataelementet. e, erase: (init). Släng bort alla kopior av detta dataelement. d, data: (init, data). Ett (möjligen) delat dataelement. i, inject: (init, data, räknare, svar, val). Den enda och sista kopian av ett dataelement försöker hitta en ny plats i ett subsystem. ' o, out:'(init, data, svar). Ett dataelement på väg att lämna subsystemet. Den kommer att sluta när den träffar på en annan kopia av samma dataelement (eller spår av en annan kopia). x, exclusive: (init). Nu finns det bara en kopia av detta dataelement i systemet. l, leave: (init, svar, val). Detta element skall lämna subsystemet. 10 15 20 25 30 35 40 1 461 815 u, up: (init, data). Ett dataelement på väg uppåt tills det träffar på ett index som inte är i tillståndet L.
BUFFERTARNA OCH DERAS FUNKTION I fig. 3 visas organisationen av två bussar och tillhörande buffertar.
Eftersom ett minne måste tilldelas bussen innan den kan starta en transaktion, måste minnen ha en utbuffert mot bussen ovanför. Ett index måste prioritera en av bussarna anslutna till sig. Insignaler från bussen ovanför har den högsta prioriteten. Index har en utbuffert mot bussen ovanför, och en ut- och en inbuffert mot bussen nedanför.
Utbuffertarna lagrar transaktioner som skall sändas på bussen och inbuffertar lagrar transaktioner som har sänts på bussen jämte eventuellt värde på svarfasen.
Vissa transaktioner kan radera andra transaktioner från buffertarna.
Fallen nämns i prioriterad ordning: 1. Transaktioner på en buss raderar i utbuffertarna anslutna under den. 2. Utbuffertar mot bussen nedan raderar i inbufferten i samma punkt. 3. lnbuffertar från bussen nedan raderar i utbufferten i samma punkt mot bussen nedan.
Följande transaktioner har en raderande egenskap beskriven ovan: - Erase raderar alla andra transaktioner mot samma dataelement.
~ Out raderar andra out-transaktioner mot samma dataelement.
PRÛTOKÛLLTABELLERNA Tabellerna nedan summerar protokollen för minnena och indexens kontroll- enheter. Tabellerna beskriver hur en kontrollenhet reagerar på de olika signalerna beroende på i vilket tillstånd dataelementet är när signalen mottages. Varje tillstånd har sin egen kolumn, och varje signal har sin egen rad. Agerandet har formatet: vakt-+ NYTT TILLSTÅND:transaktion att sändaslndex, bussen ovan och index B betyder på bussen nedan. En tom ruta betyder inget där index A betyder på agerande, resterande symboler förklaras i anslutning till tabellerna. 461 815 a SYMBÛLER OCH FÜRKLARINGAR ß Denna situation är omöjlig. _L_Processorn kan fortsätta med sin process. a := yes. Klienten svarar ja. a = U-;Ingen klient svarar ja. a 2_1 -à Åtminstone en klient svarar ja. selected-9 Klienten svarar ja. Ingen annan klient avslutar transaktionen.
Klienten utväljes i valfasen.
Räknaren stegas upp innan transaktionen y sänds.
X:y+1 ctr > limit-9 Räknaren har passerat gränsen.
MINNESPRÛTÛKÛLL FÜR TRANSAKTIÛNER NEDAN Tillstånd Transaktion I E S R W read R:rA1 _l_ _l_ ß B write read; write _l_ Wze E B replacez ß 1:1 Föregången av en "replace" om det inte finns någon tom plats i motsvarande set 2 "Replace" väljer först ett element som skall omplaceras 9 461 815 MINNESPROTOKÛLL FÜR TRANSAKTIÛNER ÜVAN Tillstånd Trans- aktion I E S R W r âzdA selected-aâzdA e B 1:- R:rA Izwríte d ø s=_L x ß Q R:rA E:_l_ 0 Ü az: yes az: yes a:= yes S1: i selecteå-jbz-Ez- ß ß a :yes ß S1:_L_ 1 I:uA selected-9I:uA u R:rA I:wríte 1 Kan egentligen vara exklusiv 2 Vid tom plats i motsVarande set 10 461 813 u>fifiïfiw MGXwU-...w >m. UCWw OHN> CNX CUCOflJJGMCWHH s .mw Mmfixvfl usmcoflpxmmcmus wucmnfims mvcmw pouumumv .wwswumfinso Hflmxm som X »cmemfim »um wwHm> .sflflss um »mm mucwsm>m»oE eo f <:"H süil M m. shïnw M m sšsTsuw <9HTs u m. s s s <ïsusfsuw ss šär; M m (ma: G S (Unz æXnw U h s < s s m s 53% nmcmsfi scsswsssh z Ale .HO 11 s mmflfi <~"m s S : mm"H «.4 m . m . m . . «.¿^|uw»um~mw H.44|nm~uwHmm ~.4 H muflm mfl"w^|n@»@@Hwm Q S S w@> "um S S |"H@|»HefiH A Qflu M -nm mfluw mm> “um wm> una mw> “um wm> "um wm> "um s o Q § mxuw -um mnnw Q v mw"H mmnfi mmufi <~"m mmufi s m mm» nnm |"< m~“<4|Uw»umHmw æ~"< Q 4 < 3 m m w H cofiøxm nmcmub ucwumfififlh 2<>O mmzOH»x 10 15 20 30 '35 40 461 813 12 NÅGRA AV ÛVANSTÅENDE TEKNIKS EGENSKAPER 1. För att en uppgift skall bli exklusiv (för att utföra en skrivopera- tion), går ett erase-meddelande till den nod där elementet är exklusivt, vilket fungerar som ett lås som skickar en bekräftelse på erase-meddelandet, ett exclusive-meddelande, neråt. I värsta fallet blir således, i en fyra-nivå-maskin, en uppgift exklusiv efter åtta busstransaktioner, fyra erase-meddelanden uppåt och fyra exclusive-meddelanden neråt. 2. Det kan visas att ingen läsbegäran kopplas bort för alltid, utan det beskrivna systemet har en utspridande läseffekt när elementmeddelanden är på väg ner och en kombinerande läseffekt när läsbegäran är på väg upp. Den kombinerande effekten liknar således den som finns hos multiprocessorn IBM rp3. Dm t.ex. en processor har en uppgift och de övriga (64K-1) processorer begär samma uppgift mer eller mindre samtidigt, får alla processorer denna uppgift i inte mer än 16 busstransaktioner. 5. "Hot-spot"-fenomenet, som förekommer hos många storskaliga multi- processorer (såsom rp5) uppstår inte i systemet enligt föreliggande - uppfinning. 4. Det kan visas att ovanstående protokoll garanterar att all före- kommande trafik är lokal i det subsystem som har hand om transaktionen, utan att andra subsystem störs.
EXEMPEL PÅ EN KÛMPLICERAD SITUAIIÜN Fig. 4 illustrerar en typisk, komplicerad situation som kan uppstå.
Två processorer P1, P2 begär en läsning (Rx) och tvâ subsystem har uppgiften x, varvid en av dem -- processor P1 -- begär en exklusiv tillgång för att tillåta en skrivoperation (Wx). Kontrollenheten mellan A och B (AB), har beslutat att betjäna en läsbegäran som är utsänd av kontrollenhct AC, och kontrollenhet BE sände ut en läsbegäran på buss B. Två möjligheter kan uppstå: (1) P1 får sin begäran om erase-meddelande bekräftad, eller (2) P1 blir upphävd eftersom det andra subsystemet som innehåller x beslutat att få en exklusiv åtkomst. l första fallet inträffar följande händelser: kontrollenhet AB ändrar till tillstånd W; erase-meddelande (ex) uppträder på buss A, som startar raderoperationer för x i subsystemet längs upp till vänster; exclusive (xx) uppträder på buss A och kommer att utbreda sig neråt och ändra kontrollenheter i W-tillstånd tilljE-tillstånd; kontrollenhet AC sänder återigen en läsbegäran (rx), som förföljer ex-signalen och ändrar kontrollenheterna AB,BD till A-tillstånd. Kontrollenhet BD sänder på nytt (rx); enbart en (rx) kommer att uppträda på buss D (den kombinerande effektenl; processor P1 utför sin skrivoperation och läsbegäran kommer då att betjänas på ett spridande sätt. Det andra fallet är okomplicerat, såsom kan k] 10 15 20 25 30 55 40 1: 461 813 läsas ur protokollet. Nettoeffekten kommer att bli att subsystemet längs upp till vänster utför sin skrivoperation; uppgiften kommer att spridas till P1 och de övriga processorerna som begär en läsoperation; slutligen kommer P1 att få en exklusiv åtkomst. \ OMPLACERINGSSTRATEGIN När en skriv-miss eller en läs-miss inträffar, kommer ett nytt data- element så småningom att läsas till minnet. 0m setet där det nya data- elementet skall lagras är fullt, väljs ett gammalt dataelement ut för att lämna minnet och dess plats blir ledigt för det nya elementet. Förfarandet kallas omplacering. Det finns två typer av omplaceringstransaktioner beroende på i vilket tillstånd det gamla elementet befann sig: out och inject.
Om det utvalda gamla elementet är i tillstånd S, görs omplaceringen med en out-transaktion. Att göra en out-transaktion är mer komplicerat än att bara kasta bort det gamla dataelementet som ju ändå troligen var delat. Man måste först förvissa sig om att de andra kopiorna av elementet inte kastas ut samtidigt. Minnet i fråga initierar omplaceringen genom att skicka en out-transaktion på bussen. Andra minnen på bussen som har aktuellt element i något av tillstånden S, R, W, L eller A svarar ja, eftersom deras subsystem antingen har en kopia av elementet, eller har blivit lovade en kopia. Om minst ett minne svarar ja, har vi hittat en annan kopia av elementet och transaktionen avslutas. 0m ingen svarar ja, kommer indexet att skicka en out-transaktion på närmast högre buss, samt ändra elementets tillstånd till l, eftersom ingen i delsystemet verkar ha någon kopia av elementet.
Ett element i tillståndet S kan faktiskt antingen vara delat eller exklusivt. Anledningen är helt enkelt att det har funnits två kopior i systemet, men att den andra har omplacerats enligt ovan. Situationen är fullständigt ofarlig, även om en del onödigt arbete kan komma att göras vid nästa skrivoperation. Ett index kan emellertid detektera när den näst sista kopian kastades bort. Detta händer när en out-transaktion på bussen nedan bara får ett ja-svar, och indexet har elementet i tillståndet E. indexet kan då skicka en transaktion (exclusive) på bussen för att ändra kvarvarande elementets tillstånd till E. Huruvida detta kommer att spara arbete eller inte år oklart, och mekanismen har inte beskrivits i tabellerna. , Om de två sista kopiorna av ett element blir omplacerade samtidigt, och ligger i form av out-transaktioner i varsin buffert för att sända på samma buss händer följande. Den första out-transaktionen på bussen kommer att radera den out-transaktion som fortfarande ligger i utbufferten. Den är nu den sista kopian av elementet. Ett index som tar emot en out-transaktion underifrån som inte fick några ja-svar, förstår vad som har hänt, och 10 15 20 25 30 35 40 461 813 14 konverterar out-transaktionen till en injekt-transaktion (se nedan).
Om elementet som skall omplaceras befinner sig i tillståndet E, resulterar detta i en injekt-transaktion, en flykting som letar efter ett nytt hem. Om något minne har plats för flyktingen, svarar det ja och, om det blir valt, ger det ett nytt hem med tillståndet E. Dm inget minne har ledig plats för flyktingen repeteras injekt-transaktionen på närmast högre buss, där ett index kan vara villigt att ge det en chans. Ett index kan dock inte lova någonting, eftersom en injekt-transaktion kan nekas längre ner och tvingas vända om. Om räknare som följer med injekt-transaktionen håller räkningen på hur många chanser som injekt-transaktionen har fått. När räknaren har passerat ett tröskelvärde, ges inte injekt-Lransaktionen några flera försök, och skickas till ett sekundärminne. Ett minne som önskar skicka ett element direkt till sekundärminnet kan göra så med en injekt-transaktion, vars räknare initierats till tröskelvärdet.
Ett subsystem i tillståndet A har lovat att svara på en läsförfrågan.
Innan förfrågan har nått enda ner till minnet där elementet finns, kan detta ha blivit omplacerat, och en injekt- eller out-transaktion är nu på väg _ uppåt. Detta kommer att fungera fint eftersom dessa transaktioner bär med sig elementets datavärde, så indexet som lovat svara kan uppfylla sitt åtagande genom att skapa en datatransaktion som skickas på bussen ovan. Dm transak- tionen på väg uppåt var av typen injekt, måste man dock se upp. Om en klient på bussen nedan lovat ge injekt-transaktionen en chans, (minst en svarar ja), tror klienten att den har den enda kopian av elementet. Då måste indexet i stället skicka en ny read-transaktion nedåt.
UMPLACERING INITIERAD AV INDEXET Det är inte säkert att ett element får plats i ett index bara för att det får plats i ett minne under det. Ett index med ett element med status l som får en read-transaktion nerifrån, skall ändra elementets status till R och repetera read på bussen ovan. Om setet där elementets nya status skall lagras är fullt, måste ett gammalt element väljas ut och förpassas ur subsystemet för att ge plats till det nya. Detta sker genom att transak- tionen leave skickas nedåt i systemet. På varje buss väljs en klient ut att fortsätta leave-transaktionen nedåt och att ändra sitt tillstånd till L, medan övriga klienter som innehåller elementet kommer att skicka erase nedåt och ändra sitt tillstånd till 1. På lägsta nivån kommer ett utvalt minne att svara med en up-transaktion, som fortplantas uppåt genom alla index i till- ståndet L. När up slutligen når indexet som initierade omplaceringen, kommer den antingen att resultera i en injekt- eller en out-transaktion.
Det element som gav upphov till omplaceringen kommer att behöva upprepa Vi 10 15 ZU 30 40 15 - 461 315 sin read-transaktion när omplaceringen är slutförd. Detta uppnås genom att en erase-transaktion för detta element skickas nedåt direkt efter att omplaceringen har initierats av den första leave-transaktionen. När denna transaktion slutligen når minnet som ville läsa elementet, kommer minnet att upprepa read-transaktionen uppåt igen. Förhoppningsvis finns det plats i indexet denna gång.
En maskinvaruoptimering av ovanstående är ett litet minne i indexet som kan lagra den read-transaktion som var upphovet till omplaceringen. Bara om detta minne är fullt, behöver erase för read-transaktionen skickas nedåt. Om det finns plats i minnet lagras read-transaktionen där, för att väckas upp då omplaceringen är slutförd. Ett sådant minne kan göras väldigt litet, men ändå påverka prestanda.
LÄSNING Några operationer, beroende på processorns natur, behöver utföras automatiskt. Um t.ex. processorn tillhandahåller en "Test&5et"-instruktion, kommer detta att leda till en läs-modifieringstransaktion som minneskontroll- enheten utför. En läs-modifieringsoperation uppför sig som en skrivoperation med undantag för att innan dataelementet skrivs över, matas elementets ursprungliga värde tillbaka till processorn. Tillsammans med maskinens generella uppförande, är det med en sådan implementering av läs-mudifieringen möjligt att utföra repetitionslåsning (spin-locking) lokalt, utan att alstra någon trafik, såsom visas nedan: Lock(X): Start: Flag::Test&Set X; % där Flag är ett maskinregister if Flag=0 then Exit; Loop: if X=1 then goto Loop else goto Start; % lokal repetition av slingan tills X är modifierad Exit: Unlock(X): X:=0; Med hjälp av föreliggande uppfinning åstadkommas således automatisk förflyttning, duplicering och omplacering av dataelement med bibehållande av datakoherensen och utan förlust av data ur systemet. Uppfinningen är natur- ligtvis inte begränsad till den speciella terminologi som har använts i beskrivningen som endast skall betraktas som ett exempel för förståelse av uppfiningen. Uppfinningen är endast begränsad av nedanstående patentkrav.

Claims (7)

10 15 20 25 30 55 40 461 813 16 PATENTKRAV
1. Datorsystem med skalbar multiprocessorarkitektur, som har ett distri- buerat fysiskt minne och ett delat virtuellt minne, innefattande processor/- minnespar sammankopplade med en eller flera bussar i ett hierarkiskt system, k ä n n e t e c k n a t av att systemets grundenhet innefattar: ett processor/minnespar, som utgör systemets enda dataminne, och en datakontrollenhet förbunden med varje processor/minnespar, vilken datakontrollenhet förbinder varje processor/minnespar med en överliggande buss och innefattar ett statusminne (index), som lagrar statusinformation om varje dataelement hos respektive processor/minnespar, och vilken data- kontrollenhet styr transaktioner för läsning och skrivning etc. av data- elementen i beroende av ett protokoll som är en funktion av dataelementens status, varvid varje dataelements fysiska lokalisering är oberoende av dess virtuella adress.
2. Datorsystem enligt krav 1, k ä n n e t e c k n.a t av att förbin- delsen mellan en buss på lägre nivå och en buss på högre nivå tillhandahållas av en indexkontrollenhet med tillhörande index som innehåller statusinforma- tion om underliggande subsystem.
3. Datorsystem enligt krav 1 eller 2, k ä n n e t e c k n a t av att minnena, såväl elementminnena som statusminnena, är set-associativa.
4. Datorsystem enligt krav 1, 2 eller 3, k ä n n e t e c k n a t av att varje dataelement kan befinna sig i ett av följande tillstånd med givna ínnebörder: Exklusivt (E) -- detta är den enda kopian av elementet. Gemensamt (S) -- det kan finnas andra kopior av elementet. Ügiltigt (I) -- elementet är ogiltigt (existerar inte egentligen). Rbegärt (R) -- elementet är begärt för läsning. Wbegärt (W) -~ väntar på fjärrupphävning.
5. Datorsystem enligt krav 4, k ä n n e t e c k n a t av att varje uppgift i ett statusminne (index) kan befinna sig i ett av följande tillstånd med givna innebörder: Exklusivt (E) -- inga kopior existerar utanför subsystemet. Gemensamt (S) -- kopior kan existera utanför subsystemet. Ûgiltigt (I) -- elementet är ogiltigt (existerar inte egentligen innanför subsystemet). Rbegärande (R) -- elementet är begärt för läsning. Wbegärande (W) -- väntar på fjärrupphävning. Svarar (A) -- kommer (slutligen) att svara på en läsbegäran. Lämnande (L) -- element existerar i subsystemet, men är på väg att lämna det. H *l 10 15 ZU 25 30 35 40 17 461 813
6. Datorsystem enligt krav 5, k ä n n e t e c k n a t av att följande transaktioner kan överföras på bussarna för att åstadkomma olika tillstånds- övergångar för dataelementen, vilka transaktioner har de angivna innebörderna r, rad: någon i systemet vill läsa dataelementet; e, erase: radera alla kopior av dataelementet ifråga; d, data: sändning av ett (möjligen) delat dataelement; i, inject: omplacering av den sista kopian av ett dataelement; o, out: ett dataelement är på väg att lämna subsystemet; x, exclusive: dataelementet är den sista kopian i systemet; 1, leave: dataelementet skall lämna subsystemet; u, up: dataelementet är på väg uppåt tills det träffar på ett index som inte är i tillståndet L.
7. Datorsystem enligt något av föregående krav, k ä n n e t e c k n a t av att varje dataelementminne har en utbuffert mot bussen ovanför, och att varje statusmínne (index) har en utbuffert mot bussen ovanför samt en ut- och en inbuffert mot bussen nedanför, varvid statusminnet prioriterar insignaler från bussen ovanför.
SE8804700A 1988-07-04 1988-12-30 Multiprocessorarkitektur innefattande processor/minnespar sammankopplade med en eller flera bussar i ett hierarkiskt system SE461813B (sv)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE68928454T DE68928454T2 (de) 1988-07-04 1989-06-29 Multiprozessorsystem mit hierarchischer cachespeicheranordnung
EP89907854A EP0424432B1 (en) 1988-07-04 1989-06-29 Multiprocessor system including a hierarchical cache memory system
PCT/SE1989/000369 WO1990000283A1 (en) 1988-07-04 1989-06-29 Multiprocessor system including a hierarchical cache memory system
JP1507284A JPH03505793A (ja) 1988-07-04 1989-06-29 階層構造を有するキャッシュメモリシステムを含むマルチプロセッサシステム
AT89907854T ATE160454T1 (de) 1988-07-04 1989-06-29 Multiprozessorsystem mit hierarchischer cachespeicheranordnung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE8802495A SE8802495D0 (sv) 1988-07-04 1988-07-04 Computer system

Publications (2)

Publication Number Publication Date
SE8804700D0 SE8804700D0 (sv) 1988-12-30
SE461813B true SE461813B (sv) 1990-03-26

Family

ID=20372807

Family Applications (2)

Application Number Title Priority Date Filing Date
SE8802495A SE8802495D0 (sv) 1988-07-04 1988-07-04 Computer system
SE8804700A SE461813B (sv) 1988-07-04 1988-12-30 Multiprocessorarkitektur innefattande processor/minnespar sammankopplade med en eller flera bussar i ett hierarkiskt system

Family Applications Before (1)

Application Number Title Priority Date Filing Date
SE8802495A SE8802495D0 (sv) 1988-07-04 1988-07-04 Computer system

Country Status (1)

Country Link
SE (2) SE8802495D0 (sv)

Also Published As

Publication number Publication date
SE8804700D0 (sv) 1988-12-30
SE8802495D0 (sv) 1988-07-04

Similar Documents

Publication Publication Date Title
US5604882A (en) System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system
US6816947B1 (en) System and method for memory arbitration
US5434993A (en) Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
James et al. Distributed-directory scheme: Scalable coherent interface
JP2780032B2 (ja) マルチプロセッサディジタルデータ処理システム
JP3871305B2 (ja) マルチプロセッサ・システムにおけるメモリ・アクセスの動的直列化
US6189078B1 (en) System and method for increasing data transfer throughput for cache purge transactions using multiple data response indicators to maintain processor consistency
US6138218A (en) Forward progress on retried snoop hits by altering the coherency state of a local cache
US6651143B2 (en) Cache management using a buffer for invalidation requests
US6317811B1 (en) Method and system for reissuing load requests in a multi-stream prefetch design
US7177987B2 (en) System and method for responses between different cache coherency protocols
US6484220B1 (en) Transfer of data between processors in a multi-processor system
US7308539B2 (en) Concurrent read access and exclusive write access to data in shared memory architecture
EP0443755A2 (en) Cache control system
US6112281A (en) I/O forwarding in a cache coherent shared disk computer system
EP0424432B1 (en) Multiprocessor system including a hierarchical cache memory system
US6877030B2 (en) Method and system for cache coherence in DSM multiprocessor system without growth of the sharing vector
JP4667092B2 (ja) 情報処理装置、情報処理装置におけるデータ制御方法
US20050091239A1 (en) Queue bank repository and method for sharing limited queue banks in memory
US6363458B1 (en) Adaptive granularity method for integration of fine and coarse communication in the distributed shared memory system
US20040117558A1 (en) System for and method of operating a cache
US20010049742A1 (en) Low order channel flow control for an interleaved multiblock resource
US6240491B1 (en) Process and system for switching between an update and invalidate mode for each cache block
SE461813B (sv) Multiprocessorarkitektur innefattande processor/minnespar sammankopplade med en eller flera bussar i ett hierarkiskt system

Legal Events

Date Code Title Description
NAL Patent in force

Ref document number: 8804700-6

Format of ref document f/p: F

NUG Patent has lapsed

Ref document number: 8804700-6

Format of ref document f/p: F