Pentium Pro

**Pentium Pro** on Inteli kuuenda põlvkonna x86-mikroprotsessor, mida tutvustati avalikkusele 1. novembril 1995.
Protsessor põhines uuel mikroarhitektuuril P6 (tuntud kui i686). Kuigi P6 mikroarhitektuuri järeltulijaks oli 2000. aastal tutvustatud NetBurst, kasutati P6 arhitektuuri muudetud kujul nii Pentium M protsessorites kui ka Core mikroarhitektuuriga protsessorites.

Kui eelkäijad Pentium ja Pentium MMX mahutasid vastavalt 3,1 ja 4,5 miljonit transistorit, siis Pentium Pro mahutas 21 miljonit transistorit, millest 15,5 miljonit kulus L2-vahemälu peale.

Pentium Pro peamised kasutusalad olid serverid ja superarvutid (näiteks ASCI Red).
Pentium Pro kasutab protsessoripesa Socket 8 ning on võimeline töötama kahe- ja neljaprotsessorilistes konfiguratsioonides.
Selle järeltulijaks sai 1998. aastast Pentium II Xeon.

## Mikroarhitektuur
Kui Pentium MMX laiendas P5 mikroarhitektuuri uute käskude ja suuremate vahemäludega, siis P6 oli täiesti uus arhitektuur.

Pentium Pro võimaldas dünaamilist täitmist, mis seob terviklikuks süsteemiks käskude järjekorravälist täitmist, spekulatiivset täitmist, registrite ümbernimetamist ning rangelt kontrollitud mälupöörduste ümberjärjestamist.
IA-32 käsud dekodeeritakse µopideks (mikrooperatsioonideks) ning nende täitmise järjekorda proovitakse ennustada.
Võimalusel nimetatakse µopide kasutatavad registrid ümber, et eemaldada näilised sõltuvused µopide vahel. Pärast ümbernimetamist on võimalik µope täita selles järjekorras, mis järjekorras vajalikud andmed protsessorisse jõuavad (nt saab µopi, mis kasutab kahte mäluaadressi, täita juhul, kui mõlemas mäluaadressis sisalduv info on jõudnud protsessori registritesse). 
Pärast täitmist salvestatakse µopide tulemused vastavalt täidetava programmi lähtekoodi järjekorras.
See on võimalik tänu ühele üldisele mehhanismile, mis tegeleb ootamatute asünkroonsete sündmustega nagu valesti ennustatud harud, käskude täitmisest tekkinud vead ja katkestused ning välised katkestused.
Dünaamiline täitmine on Pentium Pro suure jõudluse peamine põhjus.

Protsessori peamist töökulgu võib kirjeldada järgmiselt.

# BTB (ingl *Branch Target Buffer*) aitab IFU-l (ingl *Instruction Fetch Unit*) valida järgmise käsu käskude vahemälust.
# Igal taktil teisendavad kolm paralleelset käsudekoodrit x86 käske mitmeteks µopideks. Enam kui neljaks µopiks muundatavad käsud saadetakse µopide järjestajasse, mis genereerib vajalikud µopid mitme takti vältel.
# Igal taktil nimetab RAT (ingl *Register Alias Table*) ümber kuni kolme µopi lähte- ja sihtaadressid. See leevendab registrite taaskasutamisest tekkivaid probleeme ning pärast ümbernimetamist saadetakse µopid RS-i (ingl *Reservation Station*) ja ROB-i (ingl *Re-Order Buffer*).
# Ümbernimetatud µopid järjestatakse RS-i, kus käsud jäävad ootama neile vajalike andmete saabumist. Andmeteks võivad olla eelmise µopi täitmise tulemused, konstandid, tulemused ROB-is.  
# Järjestatud µope täidetakse vastavalt nende sõltuvusele sisendandmetest ja täiturüksuste saadavusele. µopide täitmise järjekorral ei ole mingit seost käskude järjekorraga täidetava programmi lähtekoodis.
# Mälµoperatsioonid saadetakse RS-ist AGU-sse (ingl *Address Generation Unit*) ja MOB-i (ingl *Memory Ordering Buffer*). MOB vastutab mälµoperatsioonide korrektses järjekorras täitmise eest.
# Pärast µopi täitmist edastatakse selle µopi tulemus eelnevatele µopidele, mille töö sõltub täidetud operatsiooni tulemusest. Pärast tulemuse edastamist muutub µopi salvestamine võimalikuks.
# µopide salvestamisel taasluuakse käskude esialgne täitmisjärjekord, kasutades µopi ajatempleid. Lisaks täitmisjärjekorra taasloomisele tuleb salvestamise käigus tegeleda kõikide katkestuste ning vigadega. Pärast µopi salvestamist kirjutab ROB tulemuse RRF-i (ingl *Retirement Register File*) ning teavitab RAT-i salvestamisest. Ühe takti jooksul on võimalik salvestada kuni 3 µopi.

Uudsel dünaamilist ning spekulatiivset täitmist võimaldaval arhitektuuril olid omad miinused. x86 käskude muundamine väiksemateks µopideks võtab aega. Lisaks mõjutab käsukonveierile sattunud käskude järjekord µopideks muundamise kiirust. Esimene dekooder dekodeerib ülimalt 4 µopiks, järgnevad kaks dekoodrit ülimalt üheks µopiks dekodeeritavad käsud.

```asm
;1-taktiline seisak käsukonveieril, järjekord 1-2 uopi
add eax, ecx ; 1 uop käsk (dekooder 0)

add edx, [ebx] ; 2 uop käsk (1-taktiline seisak, kuniks dekooder 0 vabaneb)

;1-taktiline seisak käsukonveieril, järjekord 2-2-1 uopi

add eax, [ebx] ; 2 uop käsk (dekooder 0)

mov ecx, [eax] ; 2 uop käsk (1-taktiline seisak, kuniks dekooder 0 vabaneb)

add ebx, 8 ; 1 uop käsk (dekooder 1)

;seisakut pole, järjekord 2-1-1 uopi

add eax, [ebx] ; 2 uop käsk (dekooder 0)

add ecx, eax ; 1 uop käsk (dekooder 1)

add eax, 8; 1 uop käsk (dekooder 2)
```

See tähendab, et parima jõudluse saavutamiseks tuleks võimalusel kasutada lihtsaid, vähesteks µopideks muundatavaid käske keerulisemate käskude asemel, et vältida seisakuid käsukonveieril.

Võrreldes oma eelkäijaga on Pentium Prol:
* pikem käsukonveier (14-etapiline 5-etapilise asemel),
* laiem, 36-bitine aadressisiin, mis võimaldab adresseerida kuni 64 GiB muutmälu,
* ülimalt 4 protsessorit ühel emaplaadil 2 asemel,
* integreeritud L2-vahemälu.
 
Pentium Pro oli esimene Inteli protsessor, mis toetas füüsilise aadressi laiendust (ingl *physical address extension*) ning integreeris L2-vahemälu protsessoriga samasse korpusse.

Pärast mikroprotsessori väljalaset avastati programmiviga ujukomaarvude täiturüksuses,
mida tuntakse üldiselt "Pentium Pro and Pentium II FPU bug" nime all ning millele Intel andis nime *flag erratum*.
Viga tekib teatud tingimustel, kui 80-bitist ujukomaarvu teisendatakse 16-bitisteks või 32-bitisteks täisarvuks.
See programmiviga muudab ujukomaarvude täiturüksuse käitumise ettearvamatuks.
Kuid sellest olenemata on vea esinemise tõenäosus väga väike (üks 8,6 miljardist, kui teisendatakse 16-bitiseks täisarvuks, ning üks 562 950 miljardist, kui teisendatakse 32-bitiseks täisarvuks).
Lisaks kinnitasid tuntud tehnikahiiud (Microsoft, Oracle, IBM, Netscape jne), et nende tarkvara pole veast siiani tõsiselt häiritud olnud.

## Jõudlus

Pentium Pro tootmise algusaastatel olid personaalarvutite kasutajate seas populaarsed operatsioonisüsteemid 16-bitine MS-DOS, 16/32-bitine Windows 3.1x ja 32/16-bitine Windows 95. Kuna Pentium Pro jõudlus 16-bitise koodi käitamisel polnud võrdne vanemate Pentiumitega ja protsessori hind oli kõrge, siis oli Pentium Pro tavakasutajate seas ebapopulaarne. Selleks, et kasutada uue P6 mikroarhitektuuri kõiki eeliseid, oli kasutajal vaja täielikult käitada 32-bitist operatsioonisüsteemi nagu Windows NT 3.51, Linux, Unix või OS/2.

Mitte ükski Pentium Pro mudel ei rakendanud ühe käsuvoo ja mitme andmevooga (ingl *SIMD*) käsukomplekti, mis pani märgatava piiri protsessori jõudlusele multimeediarakenduste käitamisel.

Tolleaegsete kiireimate kärbitud käsustikuga (ingl *RISC*) protsessoritega võrreldes oli Pentium Pro täisarvudega opereerimises natuke kiirem (mõõtmiseks kasutati SPECint95 reeperit).
Ujukomaarvudega opereerimine oli märkimisväärselt aeglasem, osadest *RISC* protsessoritest kaks korda aeglasem.
Pentium Pro oli täisarvudega opereerimises kiireim lühikest aega: esimesena ületas selle kiiruse MIPS Technologies protsessor R10000 1996. aasta jaanuaris ning hiljem Digital Equipment Corporationi Alpha 21164 EV56 variant.

Pentium Prod kasutades leidsid arvustajad, et arhitektuuri üks nõrkusi oli aeglane videomällu kirjutamine. Selle kitsaskoha parendamiseks soovitati VESA joonistamisi teha süsteemimälus (mängus "Quake"); hiljem loodi utiliit *FASTVID*, mis lülitas protsessoris sisse kombineeritud kirjutamise (ingl *combined writing*) kasutamise ning mille tagajärjel paranes jõudlus teatud mängudes märgatavalt.

## Innovatsioon vahemälus
Tõenäoliselt märkimisväärseim lisa Pentium Pro protsessorile oli protsessori korpusesesisene L2-vahemälu, mis protsessori esmaväljalaskel oli 256 KiB suurune (hiljem kuni 1 MiB).
Tollal ei võimaldanud protsessorite tootmistehnoloogia hõlpsalt suurt L2-vahemälu protsessori tuuma sisse integreerida.
Intel paigaldas L2-vahemälu otse protsessori korpusse selle kõrvale, mis võimaldas vahemälul töötada samal taktsagedusel nagu protsessor ise.
Erinevalt laialtlevinud emaplaadil asuvatest vahemäludest, mis jagasid süsteemisiini protsessoriga, oli Pentium Pro vahemälul eraldi tagasiin, mis võimaldas keskprotsessoril lugeda korraga muutmälu ja vahemälu.
Lisaks oli L2-vahemälu "mitte-blokeeriv", mis tähendas, et protsessor võis vahemällu saata korraga kuni 4 päringut.
Nende omaduste tõttu oligi uus L2-mälu ülikiire võrreldes vanemate protsessorite vahemäludega, mis asusid emaplaadil.
Ainuüksi uus ning kiirem vahemälu andis Pentium Prole võrreldes vanemate x86 protsessoritega sisend-väljundoperatsioonide täitmise kiiruses eelise.
Mitme protsessoriga konfiguratsioonides andis Pentium Pro uus korpusesisene vahemälu ületamatu eelise jõudluses võrreldes konfiguratsioonidega, kus kõigil protsessoritel oli jagatud, keskne vahemälu.

Kuid uus L2-vahemälu polnud puudusteta.
Vahemälu eripäraks oli tema ehitus: protsessor ja vahemälu olid küll samas korpuses, kuid nad asusid eraldi kividel.
Protsessor ja vahemälu tuli ühendada tootmisprotsessis enne, kui neid oli võimalik testida.
See tähendas, et väiksemagi vea korral kummaski kivis tuli kogu protsessor maha kanda.
See oli ka üks põhjustest, miks Pentium Pro protsessorid olid madala saagise ning kõrge hinnaga.
Kõik Pentium Pro mudelid olid kallid, eriti 1024 KiB vahemäluga protsessorid, kuna need vajasid kaht 512 KiB vahemälukivi ning lisaks veel protsessorikivi.

## Mudelid
Pentium Pro mudelite taktsagedused olid 150, 166, 180 või 200&nbsp;MHz ning esisiinide taktsagedused olid 60 või 66&nbsp;MHz.
Mõned Pentium Pro kasutajad otsustasid oma protsessorid ülekiirendada, käitades 200&nbsp;MHz protsessorit kiirusel 233&nbsp;MHz, 180&nbsp;MHz protsessorit kiirusel 200&nbsp;MHz ja 150&nbsp;MHz protsessorit kiirusel 166&nbsp;MHz.
Protsessor oli populaarne valik sümmeetrilise multitöötlusega (SMP-töötlusega) konfiguratsioonides.

## Tootmisprotsesside areng
Aja möödudes muutusid Pentium Pro protsessorikivi ja vahemälukivi tootmisprotsessid, mis kulmineerus paljude tootmisprotsesside kasutamisega ühes protsessoris.

*133&nbsp;MHz Pentium Pro prototüübi protsessorikivi valmistati 0,6&nbsp;µm BiCMOS protsessi kasutades.
*150&nbsp;MHz Pentium Pro protsessorikivi valmistati 0,5&nbsp;µm BiCMOS protsessi kasutades.
*166, 180, ja 200&nbsp;MHz Pentium Pro protsessorikivid valmistati 0,35&nbsp;µm BiCMOS protsessi kasutades.
*256&nbsp;KiB L2-vahemälukivi valmistati 0,5&nbsp;µm BiCMOS protsessi kasutades.
*512 ja 1024&nbsp;KiB L2-vahemälukivi valmistati 0,35&nbsp;µm BiCMOS protsessi kasutades.

## Protsessori korpus
Pentium Pro (kuni 512 KiB vahemäluga) asub keraamilises mitmekiibilises moodulis. Mitmekiibilises moodulis on kaks alumist õõnsust, milles asuvad protsessorikivi ja vahemälukivi. Kivid on ühendatud soojusehajutajaga, mille katmata pealispind aitab kivide töötamisel tekkinud kuumust paremini jahutisse juhtida (näiteks radiaatorisse). Kivid on korpusega ühendatud traatidega. Õõnsused on kaetud keraamilise plaadiga.

Pentium Pro, millel on 1 MiB vahemälu, asub plastikust mitmekiibilises moodulis. Kahe õõnsuse asemel on selles ainult üks õõnsus, milles asuvad kõik kolm kivi. Soojusehajutaja asemel on need kivid ühendatud protsessori korpusega.
Õõnsused on täidetud epoksüliimiga.

Mitmekiibilises moodulis on 387 jalga, millest ligikaudu pooled on PGA (ingl *pin grid array*) paigutusega ning ülejäänud IPGA (ingl *interstitial pin grid array*) paigutusega. Protsessori kest kujundati Socket 8 jaoks.

## Uuendamisvõimalused
1998. aastal anti välja 300/333&nbsp;MHz Pentium II Overdrive'i protsessor, mis
kasutas pesa Socket 8. Protsessori, millel oli 512 KiB täiskiirusel töötavat
vahemälu, tegi Intel selle jaoks, et anda Pentium Prod kasutavatele
arvutitele uuendamisvõimalus. Kuna uus protsessor toetas ainult kahesuunalist
vahetut (ingl *glueless*) multitöötlust, mitte nelja- või enamasuunalist, polnud see uuendusena kasutatav
neljaprotsessorilistes süsteemides.

Kui Slot 1 pesaga emaplaadid muutusid populaarsemaks, andsid mitmed
tootjad välja pesaadaptereid (ingl *slocket*), nagu näiteks Tyan M2020, Asus C-P6S1, Tekram
P6SL1 ja Abit KP6. Nende adapterite abiga oli võimalik kasutada Pentium Pro
protsessoreid Slot 1 pesaga emaplaatidel. Intel 440FX kiibistik toetas
täielikult Pentium Pro ja Pentium II protsessoreid, kuid Intel 440BX
kiibistik ja hilisemad Slot 1 kiibistikud neid protsessoreid enam ei
toetanud, mis oluliselt vähendas Socket 8 pesaadapterite kasutust. Hiljem, pärast pesa Socket 370 kasutavate protsessorite Celeron ja Pentium III
väljalaskmist, muutusid pesaadapterid (Socket 370-to-Slot 1) uuesti
populaarseks.

## Pentium Pro / 6. põlvkonna konkurendid
* AMD K5 ja K6
* Cyrix 6x86 ja MII
* IDT WinChip
* Intel P5 Pentium

## Vaata ka
* ASCI Red

## Viited