P6 är en superskalär superpipelining-arkitektur utvecklad av Intel och som ligger till grund för mikroprocessorerna Pentium Pro , Pentium II , Pentium III , Celeron och Xeon . Till skillnad från x86 -kompatibla processorer från tidigare generationer med en CISC- kärna, har P6-arkitekturprocessorer en RISC- kärna som exekverar komplexa x86-instruktioner inte direkt, utan först avkodar dem till enkla interna mikrooperationer.
Den första processorn i P6-arkitekturen var Pentium Pro-processorn, tillkännagiven den 1 november 1995 , riktad mot arbetsstations- och servermarknaden . Pentium Pro-processorerna släpptes parallellt med P5- arkitekturprocessorerna ( Pentium och Pentium MMX ) designade för persondatorer . Den 7 maj 1997 tillkännagav Intel Pentium II-processorn, som ersatte P5-arkitekturprocessorerna. [ett]
År 2000 ersattes P6-arkitekturen på marknaden för stationära och serverprocessorer av NetBurst- arkitekturen , men P6-arkitekturen utvecklades i Pentium M- och Core -mobilprocessorerna . 2006 ersattes processorerna i NetBurst-arkitekturen av Core 2 Duo- familjen av processorer , vars arkitektur också är en utveckling av P6-arkitekturen. [2] [3]
P6-arkitekturprocessorer består av fyra huvuddelsystem:
Enheterna i detta delsystem inkluderar:
Processorer baserade på Tualatin-kärnan innehåller dessutom en instruktionsförhämtare ( Prefetcher ), som förhämtar instruktioner baserat på grentabellen.
Utförandekärna med återsekvenseringExekvering utanför sekvensen, som ändrar ordningsföljden i vilka instruktioner exekveras utan att resultatet ändras, påskyndar arbetet genom att bättre distribuera förfrågningar till hjälpblock och minimera deras stilleståndstid. Enheter för att organisera prestanda med en ändring i sekvens inkluderar:
Kärnexekveringsenheter inkluderar:
Volym (KB) | Processorer |
---|---|
0 | Celeron Covington |
128 | Celeron ( Mendocino , Coppermine-128 ), Pentium III ( Coppermine för Xbox [4] ) |
256 | Pentium Pro , Pentium III (Coppermine, Tualatin-256 ), Xeon ( Cascades ) |
512 | Pentium Pro, Pentium II , Pentium III ( Katmai , Tualatin ), Xeon ( Drake , Tanner ) |
1024 | Pentium Pro, Xeon (Drake, Tanner) |
2048 | Xeon (Drake, Tanner, Cascades 2MB) |
Minnesdelsystemet interagerar med huvudminnet. Detta delsystem inkluderar:
Transportören består av 12 steg [5] :
Utförandet av en instruktion börjar med att den hämtas och avkodas. För att göra detta väljs 64 byte (två rader) från instruktionscachen för den första nivån på adressen från förgreningsförutsägelsebufferten. Av dessa är 16 byte, med början på adressen från nästa instruktionsadressberäkningsblock, inriktade och skickas till instruktionsavkodaren, som omvandlar x86-instruktioner till mikrooperationer. Om instruktionen motsvarar en mikrooperation, utförs avkodningen av en av de enkla instruktionernas avkodare. Om instruktionen motsvarar två, tre eller fyra mikrooperationer, utförs avkodningen av den komplexa instruktionsavkodaren. Om instruktionen motsvarar ett större antal mikrooperationer, så bildas de av mikrooperationssekvensschemaläggaren.
Efter att instruktionerna avkodats döps registren om , och mikrooperationer och data placeras i en buffert - en backupstation, varifrån, i enlighet med den optimala exekveringsordningen och med förbehåll för de operander som krävs för deras exekvering, de skickas till exekveringsenheterna (max 5 instruktioner per cykel). Micro-ops exekveringsstatus och dess resultat lagras i mikro-ops omordningsbufferten, och eftersom resultaten av exekveringen av vissa mikroops kan fungera som operander för andra, placeras de också i redundansstationen.
Baserat på resultaten av mikrooperationer bestäms deras beredskap för pensionering . Om de är klara, avvisas de i den ordning som tillhandahålls av programmet, under vilken tillståndet för de logiska registren uppdateras, såväl som den fördröjda lagringen av resultaten i minnet (dataregistreringsordningen styrs av minnesbufferten för omordning) [ 1] .
De första processorerna i P6-arkitekturen vid tidpunkten för utgivningen skilde sig markant från befintliga processorer. Pentium Pro-processorn kännetecknades av användningen av dynamisk exekveringsteknik (ändrar ordningsföljden för exekvering av instruktioner), såväl som Dual Independent Bus-arkitekturen , på grund av vilken många av minnesbandbreddsbegränsningarna som är typiska för föregångare och konkurrenter togs bort. Den första processorn i P6-arkitekturen klockades till 150 MHz , medan de senaste representanterna för denna arkitektur hade en klockhastighet på 1,4 GHz . P6-arkitekturprocessorerna hade en 36-bitars adressbuss, vilket gjorde att de kunde adressera upp till 64 GB minne (med en processs linjära adressutrymme begränsat till 4 GB, se PAE ).
Superskalär mekanism för att utföra instruktioner med att ändra deras sekvens
Den grundläggande skillnaden mellan P6-arkitekturen och dess föregångare är RISC-kärnan, som inte fungerar med x86-instruktioner, utan med enkla interna mikrooperationer. Detta tar bort många begränsningar för x86-instruktionsuppsättningen, såsom oregelbunden instruktionskodning, operander med variabel längd och register-till-minne heltalsöverföringsoperationer [1] . Dessutom exekveras mikrooperationer inte i den sekvens som tillhandahålls av programmet, utan i den optimala när det gäller prestanda, och användningen av tre-pipeline-bearbetning tillåter exekvering av flera instruktioner i en cykel [6] .
Superpiping
P6-arkitekturprocessorerna har en 12-stegs pipeline. Detta gör att högre klockhastigheter kan uppnås jämfört med processorer som har en kortare pipeline med samma tillverkningsteknik. Så till exempel är den maximala klockfrekvensen för AMD K6-processorer på kärnan (pipeline-djup - 6 steg, 180-nm-teknik) 550 MHz, och Pentium III-processorer på Coppermine-kärnan kan arbeta med en frekvens som överstiger 1000 MHz.
För att förhindra situationen att vänta på exekvering av en instruktion (och följaktligen vilotid för pipelinen), på vars resultat exekveringen eller icke-exekveringen av en villkorlig gren beror, använder P6-arkitekturprocessorerna grenprediktion . För att göra detta använder P6-arkitekturprocessorer en kombination av statisk och dynamisk prediktion: en adaptiv historisk algoritm på två nivåer ( Bimodal branch prediction ) används om grenprediktionsbufferten innehåller en grenhistorik, annars används en statisk algoritm [6] [ 7] .
Dubbel oberoende buss
För att öka bandbredden för minnesundersystemet använder P6-arkitekturprocessorerna en dubbel oberoende buss. Till skillnad från tidigare processorer, vars systembuss delades av flera enheter, har P6-arkitekturprocessorerna två separata bussar: Backside-buss som ansluter processorn till andra nivåns cache, och Frontside-buss som ansluter processorn till den norra bryggan av chipset [6 ] .
P6-arkitekturprocessorerna hade en pipelined matematisk coprocessor ( FPU ), som gjorde det möjligt att uppnå överlägsenhet gentemot sina föregångare och konkurrenter när det gäller hastigheten för beräkningar av reala tal [8] . FPU:n för P6-arkitekturprocessorerna förblev den bästa bland konkurrenterna fram till introduktionen av AMD Athlon-processorn 1999 [9] .
Dessutom hade processorerna i P6-arkitekturen överlägsenhet gentemot konkurrenterna i hastigheten att arbeta med den andra nivåns cache. Pentium Pro och Pentium II hade en dubbel oberoende buss, medan konkurrerande processorer ( AMD K5 , K6, Cyrix 6x86 , M-II) hade en traditionell systembuss, till vilken bland annat en andranivåcache var ansluten [10] . Med tillkomsten av Athlon-processorer, som också använder den dubbla oberoende bussarkitekturen, minskade prestandagapet, men 256-bitars BSB hos Pentium III-processorerna (som börjar med Coppermine-kärnan) gjorde det möjligt att behålla L2-cacheprestandafördelen jämfört med K7-arkitekturprocessorer, som hade 64-bitars BSB. Den då föråldrade systembussen för P6-arkitekturprocessorerna, i kombination med den stora mängden L1-cacheminne i K7-arkitekturprocessorerna, tillät dock inte att vinna fördelar i minnesbandbredd [11] .
Den största nackdelen med de första P6-arkitekturprocessorerna ( Pentium Pro ) var låg prestanda när man arbetade med 16-bitars programvara som var utbredd på den tiden. Detta berodde på det faktum att när man arbetade med sådana applikationer var det svårt att utföra instruktioner i oordning (till exempel kunde Pentium Pro-processorn inte läsa från ett 32-bitars register om dess 16-bitars låga del hade varit skrivet tidigare, och kommandot som utförde skrivningen avsattes inte [12] ). I Pentium II-processorn korrigerades denna brist, vilket ledde till en ökning av prestanda vid arbete med 16-bitarsprogram med mer än en tredjedel [13] .
P6-arkitekturprocessorerna stödde drift i multiprocessorsystem, men en delad systembuss användes, vilket gjorde det möjligt att förenkla spårningen av moderkort, men påverkade prestandan för processor-minnesundersystemet negativt och begränsade det maximala antalet processorer i system [9] [14] .
CPU | Kärna | Produktionsteknik | Utgivningsår |
---|---|---|---|
Pentium Pro | P6 | CMOS / BiCMOS , 500-350 nm | 1995 - 1998 |
Pentium II | Klamath, Deschutes | CMOS, 350-250 nm | 1997 - 1999 |
Pentium III | Katmai, Coppermine, Tualatin-256 | CMOS, 250-130 nm | 1999–2002 _ |
Pentium III-S | Tualatin | CMOS, 130 nm | 2001-2002 _ |
Celeron | Covington, Mendocino, Coppermine-128, Tualatin-256 | CMOS, 250-130 nm | 1998-2002 |
Pentium II Xeon | Ankbonde | CMOS, 250 nm | 1998-1999 |
Pentium III Xeon | Tanner, Cascades, Cascades 2MB | CMOS, 250-180 nm | 1999-2001 |
Pentium Pro (P6) | Pentium II (Deschutes) | Pentium III (Coppermine) | Pentium IIIS (Tualatin) |
---|---|---|---|
Pentium III mobil | Celeron (Mendocino) | Celeron (Mendocino) | Celeron (Coppermine-128) |
Officiell information
Egenskaper hos P6-arkitekturprocessorer
Processorrecensioner
Intel-processorer | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||
|