right|thumb|HP PA-8000 A PA-8000 – a HP jelölésében PCX-U, kódnevén Onyx –, egy PA-RISC 2.0 utasításkészlet-architektúrát (ISA) implementáló mikroprocesszor, amelyet a Hewlett-Packard (HP) fejlesztett ki és gyártott az 1990-es években.Hunt 1995 A processzor egy új fejlesztés volt, azaz egyetlen áramkört sem származtattak vagy vettek át az előző PA-RISC mikroprocesszorokból. A PA-8000 1995. november 2-án volt bemutatva, a Precision RISC Organization (PRO) szervezet tagjainak számára történő szállítások megkezdésével."HP Announces Release of PA-8000 to PRO Partners". Ezt a processzort kizárólag a PRO tagjai használták és nem került kereskedelmi forgalomba. Minden ezt követő PA-8x00 processzor (a PA-8200-tól a PA-8900-ig, ezek részletesebb leírását ld. alább) az alapvető PA-8000 processzormagon alapulnak.
A PA-8000-est a következő termékekben alkalmazták: a HP HP 9000 munkaállomásai és szerverei NEC TX7/P590 szerver Stratus Computer Continuum hibatűrő szerverek
Leírás A PA-8000 egy négyutas szuperskalár mikroprocesszor, amely az utasítássorozatot sorrendtől eltérő (out-of-order) és spekulatív módon hajtja végre. Ezek a jellemzők újdonságok az architektúra fejlődésének történetében, az előző PA-RISC megvalósításokban még nem szerepeltek; ezáltal a PA-8000 az első olyan PA-RISC CPU, ami megtörte a tradíciót, amelyben a nagy teljesítményt egyszerű felépítésű és magas órajelfrekvenciájú mikroarchitektúrával igyekeztek elérni.
Utasításlehívó egység A PA-8000-nek négy fokozatú előfeldolgozó rendszere van (front-end). Az első két fokozatban négy utasítás lehívását végzi el az utasításlehívó egység (instruction fetch unit, IFU). Az IFU tartalmazza a programszámlálót, az elágazástörténet-táblát (BHT), az elágazási célcím-gyorsítótárat (BTAC) és egy négy bejegyzéses translation lookaside buffer-t, azaz címfordító gyorsítótárat. A TLB a virtuális címek az utasítás-gyorsítótár elérésére szolgáló fizikai címekké való konvertálásában (címfordítás) játszik szerepet. TLB tévesztés esetén a fordítási kérelem a fő TLB-hez kerül.
Elágazás-előrejelzés A PA-8000 az elágazások kezelésében elágazás-előrejelzést alkalmaz, statikus vagy dinamikus módszereket használva. Hogy melyik módszert használja a PA-8000, azt egy bit választja a ki minden egyes TLB bejegyzésben. A statikus előrejelzés azt feltételezi, hogy a visszafelé való ugrások többsége bekövetkezik és az előre-ugrások nem következnek be. A statikus előrejelzés az elágazások kimenetelére vonatkozó jóslatok javítására még a fordítóprogram által az utasításokba elhelyezett tippeket is vizsgálja.
A dinamikus előrejelzés az elágazás feljegyzett történetét használja annak eldöntésére, hogy az bekövetkezik-e vagy sem. Az elágazások történetét leíró információt egy táblázatban tárolja a processzor, ez az elágazástörténeti tábla (branch history table, BHT). A BHT 256 bejegyzést tartalmaz, és minden bejegyzése egy 3 bites léptetőregiszter. A PA-8000 az elágazások eredményének jóslásához egy egyszerű többségi szavazási algoritmust használ: egy elágazás bekövetkezik, ha a három bit többsége be van állítva, és nem következik be, ha azok üresek. Egy rosszul előrejelzett elágazás öt ciklusos késleltetést okoz (büntetés). A BHT bejegyzést akkor frissíti a processzor, mikor az adott elágazás kimenetele ismertté válik. A PA-8000 utasításciklusonként két elágazást képes végrehajtani, azonban csak az egyik kimenetel-eseményt jegyzi fel, mivel a konstrukció egyszerűsítése miatt csak egy egyportos BHT-t valósítottak meg.
A PA-8000-ben a pontosan előrejelzett elágazások egy kétciklusos „buborékot” képeznek az utasítássorban, mert az elágazás célcímét ki kell számítani, mielőtt az el lesz küldve az utasítás-gyorsítótárnak. Az ilyen buborékok előfordulásának csökkentése érdekében a PA-8000 egy 32 bejegyzéses teljesen asszociatív BTAC (branch target address cache) tárat használ. A BTAC az elágazás célcímeit gyorsítótárazza. Mikor ugyanazzal az elágazással találkozik, és az bekövetkezőnek van jósolva, a címet azonnal elküldi az utasítás-gyorsítótárnak, lehetővé téve a lehívás késedelem nélküli elkezdését.
A BTAC hatékonyságának maximalizálása érdekében, csak a jósolt és bekövetkezett elágazások célcímei vannak gyorsítótárazva. Ha egy elágazás a jóslat szerint nem következik be, de a célcíme benne van a BTAC gyorsítótárban, akkor a bejegyzése törlődik. Abban az esetben, ha a BTAC betelik és egy új bejegyzést kell beírni, a kicserélendő bejegyzés kiválasztása egy ciklikus cserestratégia alkalmazásával történik.
Utasítás-gyorsítótár Az utasítás-gyorsítótár külső elhelyezésű, és 256 KiB-tól 4 MiB-ig terjedő méretű tárakat támogat. Az utasítások elődekódolása még a gyorsítótárba kerülésük előtt megtörténik, minden utasításhoz öt kiegészítő bit hozzáadásával. Ezek a bitek csökkentik az időt, amely az utasítás dekódolásához szükséges később a futószalagon. Az utasítás-gyorsítótár közvetlen leképzésű, ezzel a csoport-asszociatív gyorsítótárak bonyolultságát kerülték el a tervezők, és hozzáférése egy 148 bites sínen keresztül történik. A gyorsítótár címkéi szintén külső elhelyezkedésűek. Szinkron SRAM-okkal (SSRAM) épül fel.
A dekódolás és az utasítás-átrendező puffer A harmadik fokozatban történik az utasítások dekódolása. A negyedik fokozatban, az utasítás-átrendező pufferbe kerülnek (IRB). Az IRB célja a regiszterátnevezés megvalósítása, a sorrenden kívüli végrehajtás, a spekulatív végrehajtás vezérlése, és ez az egység biztosít átmeneti tárolóhelyet az utasítások számára, míg azok végrehajtása befejeződik. Az IRB dönti el, mely utasítások lesznek kibocsátva az ötödik fokozatban.
Az IRB két pufferből áll, egy az egész típusú és lebegőpontos utasítások, a másik a betöltő és tároló utasítások számára. Egyes utasítások mindkét pufferbe bekerülnek. Ilyen utasítások például az elágazások és bizonyos rendszerutasítások. A pufferek 28 bejegyzést tartalmaznak. Minden puffer ciklusonként legfeljebb négy utasítást fogadhat be és ciklusonként legfeljebb két utasítást bocsáthat ki a funkcionális egységekhez.
Végrehajtás A hatodik fokozatban kezdődik az utasítások végrehajtása, amire tíz funkcionális egység szolgál. A szorzást kivéve az egész utasítások végrehajtását két aritmetikai-logikai egység (ALU) és két léptető-összefésülő egység végzi. Minden, ezekben az egységekben végrehajtott utasításnak egyciklusos késleltetése van és ezek eredménye a hetedik fokozatban íródik vissza a kijelölt célregiszterbe.
A lebegőpontos utasítások és az egész/fixpontos szorzás utasítások végrehajtása két összevont szorzás-összeadás (FMAC) egység és két osztó-négyzetgyökvonó egység használatával történik. Az FMAC egységek futószalagosak és három ciklusos késleltetéssel rendelkeznek. A szorzás a hatodik fokozatban, az összeadás a hetedik fokozatban, a kerekítés a nyolcadik fokozatban, a visszaírás pedig a kilencedik fokozatban hajtódik végre. Nincs kerekítés a szorzás és összeadási fázisok között. Az FMAC egységek különálló szorzó és összeadó utasításokat is végrehajtanak, melyeknek szintén három ciklusos késleltetésük van, mind az egyszeres pontosságú, mind a duplapontosságú változatoknál. Az osztó-négyzetgyökvonó egységek nem futószalagosak és 17 ciklusos késleltetése van. Ezek felé órajelciklusonként egy utasítás bocsátható ki, a regiszterport-korlátozások miatt, de képesek egymással és az FMAC egységekkel párhuzamosan működni.
Az egész típusú és a lebegőpontos betöltő és tároló utasításokat két dedikált címösszeadó hajtja végre.
Translation lookaside buffer A translation lookaside buffer egy címfordító gyorsítótár: 96 bejegyzést tartalmaz, két porttal van ellátva és teljesen asszociatív. Ciklusonként két virtuális cím fordítására képes. Ez a TLB fordítja a címeket mind az utasítások, mind az adatok számára. Mikor az IFUinstruction fetch unit, utasításlehívó egység TLB-je téveszt, ez a TLB biztosítja számára a fordítást. A betöltés és tárolás céljaira szolgáló fordítás nagyobb prioritással bír, mint az egyéb utasításoké. A TLB bejegyzései memórialapokra képezhetők le, amelyek mérete 4 KiB és 16 MiB között változhat, a négy hatványainak megfelelő lépésekben.
Adat-gyorsítótár A PA-8000 egy maximálisan 4 MiB kapacitású adat-gyorsítótárral rendelkezik. Az adat-gyorsítótár két porttal van ellátva, így két írás vagy olvasás hajtható végre minden ciklus alatt. A gyorsítótár két portja valójában két gyorsítótár-bankkal van megvalósítva, ami így nem „valódi” kétportos megoldás, mert ha két olvasás vagy írás egyszerre ugyanarra a bankra hivatkozik, akkor konfliktus lép fel és csak egy művelet hajtható végre. A hozzáférés két 64 bites sínen keresztül történik, minden bankhoz egy sín van rendelve. A gyorsítótár címkéi külső elhelyezkedésűek, azaz egy külső memóriában tárolódnak. A gyorsítótár címkéinek két másolata van, ami lehetővé teszi a bankok független elérését. Az adat-gyorsítótár közvetlen leképzésű, ugyanúgy, mint az utasítás-gyorsítótár. SRAM-okkal épül fel.
A Runway sín A külső interfész a Runway sín, egy 64 bites multiplexelt üzemmódú cím- és adatsín. A PA-8000 40 bites fizikai címet használ, ami 1 TiB fizikai memória címzésére elegendő.
Fizikai jellemzők A PA-8000 3,8 millió tranzisztorból áll, lapkájának mérete ,Gaddis 1996, p. 1697 lapkafelülete . A HP saját CMOS-14C folyamatával gyártotta, ami a CMOS-14 folyamat kapuméretének 10%-os zsugorításával állt elő.Gwennap 1994 A CMOS-14C folyamat egy -es, ötrétegű alumínium fémezést alkalmazó CMOS folyamat. A lapkán 704 forrasztási csatlakozó van a jelek számára és 1200 a tápfeszültség és a föld számára. Tokozása 1085 érintkezős flip chip alumínium-oxid kerámia land grid array (LGA).Kumar, "The HP PA-8000 RISC CPU" A PA-8000 3,3 V-os tápellátást használ.
PA-8200 A PA-8200 (PCX-U+), kódnevén Vulcan, a PA-8000 továbbfejlesztett változata volt. Az első PA-8200 csipet használó rendszerek 1997 júniusában kezdtek megjelenni. A PA-8200 200-tól 240 MHz-ig terjedő órajelen működött és elsősorban az Alpha 21164-es processzorral versengett. A processzorban végrehajtott fejlesztések az elágazásbecslést és a TLB-t érintették.Scott 1997Gwennap 1996 Az elágazás-előrejelzést azzal javították, hogy a BHT bejegyzések számát 1024-re (négyszeresére) növelték, de ez egy kétbites algoritmus használatát tette szükségessé, hogy a megnövelt BHT elférjen a lapkán a környező áramkörök áttervezése nélkül; valamint egy olyan írási sort alkalmaztak, ami lehetővé tette egy helyett két elágazási kimenetel tárolását a BHT-ban.BHT: branch history table, elágazástörténet-tábla A TLB bejegyzések számát 96 bejegyzésről 120-ra növelték, ami csökkentette a TLB tévesztéseket (találati hibákat). Az órajelfrekvencián szintén javítottak, egy kisebb áramköri áttervezéssel. A PA-8200-as lapka méretében megegyezett a PA-8000-essel, mivel a javítások felhasználták a lapka üres területeit. Ezt a processzort is CMOS-14C folyamattal gyártották.
PA-8500 thumb|HP PA-8500 A PA-8500 (PCX-W), kódnevén Barracuda, a PA-8200 egy továbbfejlesztése. 1998 elején került gyártásba és 1998 végén volt bevezetve/bemutatva a rendszerekben. A sorozatgyártású verziók 300-tól 440 MHz-ig terjedő órajelen működtek, de a processzort 500 MHz-es legmagasabb órajelre tervezték, és valóban voltak is ilyen órajelen működő modellek.Barnes 1999 A legfigyelemreméltóbb javítások a magasabb működési frekvenciák és az első szintű gyorsítótárak lapkára integrálása voltak.Gwennap 1997 A magasabb működési frekvenciák elérését és az elsődleges gyorsítótáraknak a magot tartalmazó lapkára való integrálását egy 0,25 µm-es folyamatra való áttérés tette lehetővé. A PA-8200-as magA PA-8500-as processzor továbbra is PA-8200-as magot tartalmaz mérete a processzorban () az új folyamatban, felülete kevesebb mint fele a -es PA-8200-asnak. Ez területet szabadított fel, ami felhasználható volt a gyorsítótárak integrálásához.