Cray MTA
Cray MTA , tidigare känd som Tera MTA , är en superdatorarkitektur baserad på tusentals oberoende trådar, finkornig kommunikation och synkronisering mellan trådar och latenstolerans för oregelbundna beräkningar.
Varje MTA-processor ( CPU ) har en högpresterande ALU med många oberoende registeruppsättningar, som var och en kör en oberoende tråd. Till exempel Cray MTA-2 128 registeruppsättningar och därmed 128 trådar per CPU/ALU. Alla MTAs hittills använder ett fatprocessorarrangemang , med en gängomkopplare på varje cykel, med blockerade (stoppade) gängor som hoppats över för att undvika slöseri med ALU-cykler. När en tråd utför en minnesläsning blockeras exekveringen tills data returneras; under tiden fortsätter andra trådar att köras. Med tillräckligt många trådar (samtidigt) finns det nästan alltid körbara trådar att "täcka" för blockerade trådar, och ALU:erna förblir upptagna. Minnessystemet använder fulla/tomma bitar för att säkerställa korrekt ordning. skrivs en array A initialt med "tomma" bitar, och varje tråd som läser ett värde från A blockerar tills en annan tråd skriver ett värde. Detta säkerställer korrekt ordning, men tillåter finkornig interfoliering och ger en enkel programmeringsmodell. Minnessystemet är också "randomiserat", med intilliggande fysiska adresser som går till olika minnesbanker. Sålunda, när två trådar får åtkomst till minnet samtidigt, kommer de sällan i konflikt om de inte har åtkomst till samma plats.
Ett mål med MTA är att portering av koder från andra maskiner är okomplicerat, men ger bra prestanda. En parallelliserande FORTRAN- kompilator kan producera hög prestanda för vissa koder med lite manuellt ingrepp. Där manuell portering krävs tillåter den enkla och finkorniga synkroniseringsmodellen ofta programmerare att skriva kod på det "uppenbara" sättet men ändå uppnå bra prestanda. Ytterligare ett mål är att program för MTA:n ska vara skalbara – det vill säga när de körs på en MTA med dubbelt så många processorer kommer samma program att ha nästan dubbelt så hög prestanda. Båda dessa är utmaningar för många andra högpresterande datorsystem.
En ovanlig egenskap hos MTA är att flera arbetsbelastningar kan interfolieras med bra prestanda. Vanligtvis är superdatorer dedikerade till en uppgift åt gången. MTA tillåter att lediga trådar allokeras till andra uppgifter med mycket liten effekt på huvudberäkningarna.
Genomföranden
Det har skett tre MTA-implementeringar och från och med 2009 är en fjärde planerad. Implementeringarna är:
- MTA-1 MTA-1 använder en GaAs- processor och installerades på San Diego Supercomputer Center . Den använde fyra processorer (512 trådar)
- MTA-2 MTA-2 använder en CMOS- processor och installerades vid Naval Research Laboratory . Den var enligt uppgift instabil, men att vara inne i en säker anläggning var inte tillgänglig för felsökning eller reparation.
- MTA-3 MTA-3 använder samma CPU som MTA-2 men ett dramatiskt billigare och långsammare nätverksgränssnitt. Ungefär sex Cray XMT- system har sålts (2009) med MTA-3.
- MTA-4 MTA-4 är ett planerat system (2009) som är arkitektoniskt likt men kommer att använda begränsad datacachning och ett snabbare nätverksgränssnitt än MTA-3.
Prestanda
Endast ett fåtal system har implementerats, och endast MTA-2-riktmärken har rapporterats allmänt, vilket gör prestandajämförelser svåra.
Över flera riktmärken visar en 2-CPU MTA-2 prestanda som liknar en 2-processor Cray T90. För den specifika tillämpningen av strålspårning var en 4-CPU MTA-2 ungefär 5 gånger snabbare än en 4-CPU Cray T3E, och vid skalning från 1 CPU till 4 CPU:er förbättrades Tera-prestandan med 3,8x, medan T3E gick från 1 till 4 processorer förbättrade med endast 3,0x.
Arkitektoniska överväganden
Ett annat sätt att jämföra system är genom inneboende omkostnader och flaskhalsar i designen.
MTA använder många registeruppsättningar, så varje registeråtkomst är långsam. Även om samtidighet (körning av andra trådar) vanligtvis döljer latens, begränsar långsam registerfilåtkomst prestanda när det finns få körbara trådar. I befintliga MTA-implementeringar är entrådsprestanda 21 cykler per instruktion, så prestandan blir lidande när det finns färre än 21 trådar per CPU.
MTA-1, -2 och -3 använder inga datacchar. Detta minskar CPU-komplexiteten och undviker problem med cachekoherens. Ingen datacachning introducerar dock två prestandaproblem. För det första måste minnessystemet stödja hela dataåtkomstbandbredden för alla trådar, även för odelade och därmed cachebara data. Därför kräver bra systemprestanda mycket hög minnesbandbredd. För det andra tar minnesreferenser 150-170 cykler, en mycket högre latens än till och med en långsam cache, vilket ökar antalet körbara trådar som krävs för att hålla ALU upptagen. MTA-4 kommer att ha en icke-koherent cache, som kan användas för skrivskyddad och odelad data (såsom icke-delade stackramar), men som kräver mjukvarukoherens, t.ex. om en tråd migreras mellan CPU:er. Datacachekonkurrens är ofta en flaskhals för prestanda för processorer som är mycket samtidiga, och ibland även för 2-kärniga system; genom att använda cachen för data som antingen är mycket delad eller har mycket hög lokalitet (stackramar), kan konkurrensen mellan trådar hållas låg.
Full/tom statusändringar använder polling, med en timeout för trådar som pollar för länge. En tråd med tidsgräns kan avschemaläggas och hårdvarukontexten användas för att köra en annan tråd; OS-schemaläggaren ställer in en "trap on write"-bit så att den väntade skrivningen fäller och sätter tillbaka den avschemalagda tråden i körkön. Där den schemalagda tråden är på den kritiska vägen, kan prestandan lida avsevärt.
MTA är latens-tolerant, inklusive oregelbunden latens, vilket ger bra prestanda på oregelbundna beräkningar om det finns tillräckligt med samtidighet för att "täcka" förseningar. Hårdvaran för latencytolerans kan slösas bort på vanliga beräkningar, inklusive de med hög latens men som enkelt kan schemaläggas.