R10000 (kódové označení "T5") je RISC mikroprocesor , který implementuje instrukční sadu MIPS IV . Vyvinuto společností MIPS Technoligies, Inc. (MTI, která se později stala divizí SGI ). Hlavními vývojáři jsou Chris Rowan a Kenneth S. Yeager. R10000 je založen na mikroarchitektuře ANDES (Architecture with Non-sequential Dynamic Execution Scheduling) . [1] R10000 do značné míry nahradil R8000 ve vysoce výkonném segmentu a R4400 v jiných aplikacích. MTI je společnost bez továren a procesory R10000 byly vyrobeny společnostmi NEC a Toshiba . Předchozí výrobci mikroprocesorů MIPS, IDT a další nevyráběli R10000, protože byl dražší než R4000 a R4400.
R10000 byl představen v lednu 1996 ve verzích 175 MHz a 195 MHz. V roce 1997 byla v produktové řadě O2 uvedena 150 MHz verze, která však byla brzy ukončena pro větší oblibu 175 MHz modelu. R10000 nebyl k dispozici ve velkých objemech až do konce roku kvůli výrobním problémům. 195 MHz verze zůstala nedostatkovým zbožím po celý rok 1996 a prodávala se za 3 000 USD. [2]
25. září 1996 společnost SGI oznámila, že R10000 vyrobené společností NEC v březnu a na konci července byly vadné, odebíraly příliš mnoho proudu a způsobily vypínání systémů během provozu. Společnost SGI stáhla systémy používající přibližně 10 000 procesorů R10000, což ovlivnilo hospodářský výsledek společnosti. [3] [4]
V roce 1997 dosáhla 0,25 µm verze R10000 250 MHz.
R10000 byl použit v několika počítačových systémech:
R10000 má superskalární design se 4 pipelines, implementuje přejmenování registrů a využívá provádění instrukcí mimo pořadí . Konstrukce R10000 se liší od předchozích mikroprocesorů MIPS, jako je R4000, což byl skalární procesor bez provádění mimo pořadí a spoléhal především na vysoké takty pro výkon.
Každý cyklus hodin v R10000 může vyžadovat až čtyři instrukce z instrukční mezipaměti . Tyto instrukce jsou dekódovány a poté, v závislosti na typu, umístěny do jedné z prováděcích front: celočíselné operace, instrukce s pohyblivou řádovou čárkou nebo instrukce načtení/uložení. Blok dekódování používá rady typu instrukce připravené mezipamětí instrukcí: každá instrukce je označena pěti bity, aby se určilo, do kterých prováděcích jednotek se má instrukce poslat, a optimalizuje se proces dekódování.
Každá z instrukčních front může přijímat až čtyři instrukce z dekodéru. Instrukce z front jsou vydávány k provedení do odpovídajícího prováděcího kanálu dynamicky v závislosti na připravenosti jejich operandů a dostupnosti zdrojů. Každá z front, s výjimkou fronty načítání/ukládání, může vydávat až dvě instrukce za hodinu. Ve frontě načtení/uložení může běžet pouze jedna instrukce. R10000 tedy může provádět až pět instrukcí na takt.
Celočíselné zařízení se skládá ze souboru celočíselného registru a tří kanálů : dva pro celočíselné operace a jeden pro paměťové operace. Soubor celočíselného registru je 64 bitů široký a obsahuje 64 registrů, z nichž 32 je architektonických a 32 se používá pro přejmenování registrů. Registrační soubor má sedm portů pro čtení a tři porty pro zápis. Oba celočíselné kanály mají sčítací a booleovské bloky. Pouze první potrubí však poskytuje zařízení pro posouvání sudů a potvrzovací předpovědi větví. Druhé potrubí se používá pro přístup k multiplikátoru a rozdělovači. Multiplikátor je zřetězen, má šesticyklovou latenci pro 32bitová celá čísla a deseticyklovou latenci pro 64bitová celá čísla. Dělicí blok není zřetězen. Dělení se provádí podle neobnovovacího algoritmu , který produkuje jeden bit na takt. Zpoždění dělení pro 32bitová a 64bitová celá čísla je 35 a 67 cyklů.
Jednotka s plovoucí desetinnou čárkou (FPU) se skládá ze čtyř funkčních jednotek: sčítačky, násobiče, jednotky dělení a jednotky druhé odmocniny. Sčítačka a násobič jsou zřetězeny, dělení a blok druhé odmocniny zřetězeny nejsou. Sčítání a násobení mají zpoždění tří cyklů a každý cyklus může přijmout novou instrukci. Dělicí blok má zpoždění 12 nebo 19 cyklů, v závislosti na bitové hloubce dat, pro jednoduchou přesnost a dvojitou přesnost .
Druhá odmocnina Blok provádí operace druhé odmocniny a inverzní odmocniny . Instrukce druhé odmocniny mají latenci 18 a 33 cyklů pro jednoduchou a dvojitou přesnost. Každých 20 nebo 35 cyklů lze zadat novou instrukci druhé odmocniny do bloku pro jednoduchou a dvojitou přesnost. Inverzní odmocniny se počítají ve 30 nebo 52 cyklech pro jednoduchou (32bitovou) a dvojitou přesnost (64bitovou).
Soubor registrů s plovoucí desetinnou čárkou obsahuje šedesát čtyři 64bitových registrů, z nichž 32 je architektonických a 32 je pro přejmenování registrů. Sčítačka má vlastní vyhrazené porty pro čtení a zápis, pro zbývající bloky se používá sdílený port.
Bloky dělení a odmocniny používají algoritmus SRT . MIPS IV má příkaz multiply-add. Tato instrukce je implementována v R10000 pomocí bypassu - výsledek násobení může být doručen obcházením souboru registru přímo do sčítacího potrubí jako operand. Proto tato implementace není kombinovaným násobením a sčítáním a má čtyři cykly zpoždění.
R10000 používá dvě relativně velké mezipaměti implementované na stejném čipu: 32 KB instrukční cache a 32 KB datovou cache. Instrukční mezipaměť je 2-kanálová, multiasociativní , používá řádky 128 bajtů. Instrukce se částečně dekódují přidáním čtyř bitů ke každé instrukci (velikost jedné instrukce je 32 bitů).
Datová mezipaměť 32 KB je dvouportová, dvakrát prokládaná mezipaměť. Skládá se ze dvou 16K bank a každá banka používá dvoukanálovou asociativitu. Mezipaměť používá 64bajtové řetězce, protokol zpětného zápisu , je virtuálně indexována a fyzicky označena . Tento přístup umožňuje indexování ve stejném cyklu a zachování koherence s mezipamětí L2.
Externí mezipaměť L2 je sdílena mezi instrukcemi a daty a může mít velikost od 512 KB do 16 MB. Je implementován na bázi synchronní statické paměti (SSRAM). Ke cache se přistupuje přes 128bitovou sběrnici chráněnou 9bitovým kódem pro opravu chyb (ECC). Cache a sběrnice běží na frekvenci procesoru R10000. Při 200 MHz má sběrnice špičkovou šířku pásma 3,2 GB/s. Mezipaměť používá dvoukanálovou asociativitu, ale pro snížení počtu kontaktů R10000 předpovídá, že kanál zasáhne.
MIPS IV je 64bitová architektura, ale R10000 neimplementuje celý fyzický nebo virtuální adresní prostor , aby se snížily náklady. Procesor nabízí 40bitové fyzické adresování a 44bitové virtuální adresování, což umožňuje adresovat až 1 TB fyzické paměti a až 16 TB virtuální paměti .
Avalance se používá jako systémová sběrnice - 64bitová sběrnice pracující na frekvencích do 100 MHz. Sběrnice Avalance multiplexuje adresy a data, takže z maximální teoretické propustnosti 800 MB/s na 100 MHz je pro přenos dat k dispozici pouze 640 MB/s, protože část taktů je využita pro přenos adres.
Vestavěný řadič systémového rozhraní podporuje implementaci symetrických víceprocesorových systémů ( SMP ) až se čtyřmi mikroprocesory včetně. Použití externích řadičů umožňuje vytvářet systémy ze stovek procesorů R10000. Příkladem takového systému je SGI Origin 2000 .
Procesor R10000 má asi 6,8 milionu tranzistorů, z nichž asi 4,4 milionu tvoří implementace mezipaměti první úrovně. [5] Čip má rozměry 16,64 x 17,934 mm s celkovou plochou 298,42 mm 2 . Byl vyroben podle výrobního procesu 0,35 mikronu a zabalen do keramického pouzdra LGA s 599 kolíky. [6]
R10000 byl rozšířen v několika derivátových projektech. Všechny deriváty po R12000 měly sníženou rychlost hodin, aby se ztrátový výkon udržoval v rozsahu 15 až 20 wattů. To umožnilo, aby byly procesory pevně zabaleny do vysoce výkonných výpočetních systémů SGI .
R12000 je derivátem R10000, který začal u MIPS a byl dokončen u SGI. Byl vyroben společnostmi NEC a Toshiba. Verze od NEC se jmenuje VR12000. Mikroprocesor byl představen v listopadu 1998 a byl dostupný na 270, 300 a 360 MHz. R12000 byl vyvinut jako dočasné řešení po zrušení projektu Beast, který plánoval vytvořit nástupce R10000. Procesor R12000 byl používán společnostmi NEC, Siemens-Nixdorf , SGI a Tandem Computers (pozdější část Compaq).
R12000 vylepšuje mikroarchitekturu R10000 tím, že zahrnuje další fáze potrubí pro zvýšení rychlosti hodin, zvýšení počtu záznamů v tabulkách historie větví, zlepšení predikce větví, změnu front instrukcí tak, aby zohledňovaly stáří instrukce (starší instrukce mají přednost při provádění).
R12000 byl vyroben společnostmi NEC a Toshiba v 0,25 µm CMOS procesu se čtyřmi úrovněmi hliníkové vazby. Použití nové procesní technologie neznamená, že R12000 byl pouze zmenšením předchozího návrhu s optimalizací mikroarchitektury. Topologie R12000 byla optimalizována tak, aby využívala výhody procesní technologie 0,25 µm. [7] [8] Procesory VR12000 společnosti NEC obsahují 7,15 milionu tranzistorů v matrici 15,7 x 14,6 mm (229,22 mm 2 ).
R12000A je derivátem R12000 vyvinutého společností SGI. Uvedený v červenci 2000, pracuje na 400 MHz a vyrábí ho NEC v 0,18 µm procesu se sloučeninami hliníku.
R14000 je dalším vývojem R12000, který byl oznámen v červenci 2001. R14000 pracuje na frekvenci 500 MHz pomocí 0,13µm CMOS procesu s pěti vrstvami měděných propojovacích vodičů . Kromě vylepšení mikroarchitektury R12000 procesor podporuje Double Data Rate (DDR) SSRAM pro sekundární mezipaměť a 200MHz systémovou sběrnici. [9]
R14000A je dalším vývojem R14000, který byl oznámen v únoru 2002. Pracuje na frekvenci 600 MHz, rozptyluje asi 17 W a vyrábí ho NEC v 0,13µm CMOS procesu se sedmi vrstvami měděných spojů.
R16000 (kódové označení "N0") je nejnovější derivát R10000. Procesor byl navržen společností SGI a vyroben společností NEC v procesu 0,11 mikronu s osmi vrstvami měděných propojovacích vodičů. Mikroprocesor byl představen 9. ledna 2003, debutoval na 700 MHz pro počítač SGI Fuel . Používá se také v SGI Onyx4 Ultimate Vision . [10] V dubnu 2003 byla představena 600 MHz verze pro SGI Origin 350 . V R16000 byla velikost mezipaměti instrukcí a dat zvýšena na 64 KB.
Pod R16000A označují varianty procesorů R16000 s taktovací frekvencí nad 700 MHz. První R16000A s 800 MHz byl představen 4. února 2004. Později se objevila verze 900 MHz. Pro některé zákazníky společnost SGI dodala R16000 na 1,0 GHz. Mezi uživatele R16000 patří HP a SGI. SGI použila mikroprocesor ve svých pracovních stanicích Fuel a Tezro a ve svých serverech Origin 3000 . HP používá R16000A v serverech NonStop Himalaya S-Series odolných proti chybám (zděděných od Tandemu přes Compaq).
R18000 - Zrušený vývojový projekt pro R10000. Plánované změny mikroarchitektury představila společnost Silicon Graphics na Hot Chips Symposium v roce 2001. R18000 byl navržen speciálně pro servery a superpočítače SGI ccNUMA. Každý uzel by používal dva R18000 připojené přes multiplexní sběrnici k systémovému řadiči. Propojuje mikroprocesory s místní pamětí a zbytkem systému prostřednictvím topologie sítě hypercube.
R18000 má vylepšené fronty instrukcí s pohyblivou řádovou čárkou a jednotka s pohyblivou řádovou čárkou používá dvě zařízení s vícenásobným sčítáním, což zvyšuje maximální rychlost FLOPS 4krát. Operace dělení a odmocniny lze provádět v samostatných nezřetězených jednotkách současně se sčítáním a násobením. Systémové rozhraní a hierarchie paměti byly výrazně přepracovány. Používají se 52bitové virtuální adresy a 48bitové fyzické adresy. Obousměrná multiplexovaná systémová sběrnice dřívějších modelů je nahrazena dvěma jednosměrnými kanály DDR: 64bitovým multiplexovaným kanálem pro adresy a zápisy dat a 128bitovým kanálem pro čtení. Tyto dva kanály lze sdílet s druhým procesorem R18000 prostřednictvím multiplexování. Sběrnici lze také překonfigurovat na režimy SysAD nebo Avalance pro zpětnou kompatibilitu se systémy R10000.
R18000 používá 1 MB čtyřcestnou L2 multiasociativní mezipaměť implementovanou na stejném čipu. Volitelně lze použít mezipaměť třetí úrovně, sestavenou z paměti SDR nebo DDR SSRAM, případně z DDR SDRAM o kapacitě 2 až 64 MB. Tato mezipaměť L3 je doplněna o 400 KB mezipaměť tagů umístěná na matrici procesoru pro snížení latence. Pro přístup k L3 cache se používá 144bitová široká sběrnice: 128 bitů pro data a 16 bitů pro ECC. Frekvence mezipaměti L3 lze konfigurovat.
R18000 byl plánován pro proces NEC „UX5“ 0,13 µm CMOS s devíti úrovněmi měděných spojů . Tento proces využívá napájení 1,2 V, což by ve velkých systémech snížilo rozptyl tepla a zvýšilo hustotu náplně.