Power ISA Tervező Bitek száma 32 bites / 64 bites (32 → 64) Bevezetés Verzió 3.1 Kialakítás RISC Típus betöltő-tároló (load/store) Kódolás rögzített / változó Elágazás feltételkód (állapotregiszter) Bájtsorrend big-endian és kettős bájtsorrend Utasításkészlet- kiterjesztések AltiVec, PowerPC AS, APU, DSP, CBEA Nyílt igen, jogdíjmentes Regiszterek

A Power ISA egy csökkentett utasításkészletű (RISC) utasításkészlet-architektúra (ISA), amelyet jelenleg az OpenPOWER Alapítvány fejleszt, az IBM vezetésével. Az architektúrát eredetileg az IBM fejlesztette ki, később a fejlesztést átvette a mára megszűnt Power.org ipari csoport. A Power ISA a PowerPC architektúra továbbfejlesztése, amely a PowerPC ISA alapvető részének és a beágyazott alkalmazásokhoz tervezett opcionális „Book E” kiterjesztés egyesítésével jött létre. A két komponens egyesítése a Power.org alapító tagok, az IBM és a Freescale Semiconductor vezetésével történt 2006-ban.

A 3.0-s verzió előtt az ISA-t több kategóriára volt osztva. A processzorok ezekből a feladatukhoz szükséges kategóriákat valósítják meg. Egyes kategóriák megvalósításához a processzorok különböző osztályait alakították ki, például egy szerverosztályú processzor a következő kategóriákat tartalmazza: Alap, Szerver, Lebegőpontos, 64 bites stb. Minden processzor megvalósítja az Alap (Base) kategóriát.

A Power ISA egy RISC betöltő/tároló (load/store) architektúra. Több regiszterkészlettel rendelkezik: 32 × 32 vagy 64 bites általános célú regiszter (GPR) az egész típusú műveletekhez, 64 × 128 bites „vektor-skalár” regiszter (VSR) vektor- és lebegőpontos műveletekhez, 32 × 64 bites lebegőpontos regiszter (FPR) a VSR-ek részeként a lebegőpontos műveletekhez, 32 × 128 bites vektorregiszter (VR) a VSR-ek részeként vektorműveletekhez, 8 × 4 bites feltételregiszter-mező (CR) az összehasonlítás és folyamatvezérlés céljaira, 11 különböző méretű speciális regiszter: számlálóregiszter (CTR), csatolóregiszter (link register, LR), időbázis (TBU, TBL), alternatív időbázis (ATBU, ATBL), akkumulátor (ACC), állapotregiszterek (XER, FPSCR, VSCR, SPEFSCR).

Az utasítások a 3.0-s verzióig 32 bit hosszúságúak, kivéve a VLE (változó hosszúságú kódolás) részhalmazt, ami nagyobb kódsűrűséget biztosít a kis teljesítményű beágyazott alkalmazások számára, valamint a 3.1-es verziót, amelyben bevezették a prefixálást 64 bites utasítások létrehozásához. A legtöbb utasítás triadikus, azaz két forrásoperandust és egy célt (céloperandust) tartalmaz. Az ISA támogatja az IEEE 754 szabványnak megfelelő egyszeres és kétszeres pontosságú lebegőpontos műveleteket, és tartalmaz összevont szorzás-összeadás (FMA) és decimális lebegőpontos utasításokat is. Van lehetőség fixpontos és lebegőpontos adatokon végzett SIMD műveletekre, egy utasításon belül akár 16 elemmel.

A Power ISA támogatja a Harvard típusú gyorsítótárakat, azaz a külön adat- és utasítás-gyorsítótárakat, valamint az egyesített gyorsítótárakat. A memóriaműveletek kizárólag betöltő és tároló műveletek lehetnek, és lehetővé teszik a sorrenden kívüli végrehajtást. Az architektúra támogatja a big- és little-endian bájtsorrendű címzést, mind 32 bites, mind 64 bites adatok esetén, külön kategóriákkal az üzemmód által meghatározott és laponkénti bájtsorrend-kezeléshez.

A működési módok megkülönböztetnek felhasználói, felügyelői és hipervizori üzemmódot.

Kategóriák Alap (Base) – a Book I és Book II nagy része Szerver – Book III-S Beágyazott (Embedded) – Book III-E Egyéb (Misc) – lebegőpontos, vektor, jelfeldolgozás, gyorsítótár-zárolás, decimális lebegőpontos műveletek, stb.

Könyvek A Power ISA specifikáció öt részre van osztva, ezeket „könyveknek” nevezik és „Book+római számokkal” jelölik. Book I – Felhasználói utasításkészlet-architektúra (User Instruction Set Architecture), az alkalmazásprogramozók számára elérhető alap utasításkészletet fedi le. Memóriareferencia, folyamatvezérlés, fixpontos és lebegőpontos utasítások, numerikus gyorsítás, alkalmazás-szintű programozás. Tartalmaz kiegészítő feldolgozóegységekre vonatkozó fejezeteket is, mint pl. a digitális jelprocesszorok (DSP-k) és az AltiVec kiterjesztés. Book II – Virtuális környezet architektúrája (Virtual Environment Architecture), meghatározza az alkalmazásprogramozó számára elérhető tárolási modellt, beleértve az időzítést, a szinkronizációt, a gyorsítótár-kezelést, a tárolási funkciókat és a bájtsorrend kezelését. Book III – Működtetési környezet architektúrája (Operating Environment Architecture), tartalmazza a kivételkezelést, megszakításkezelést, memóriakezelést, hibakeresési eszközöket és a speciális vezérlési funkciókat. Két részből áll: Book III-S – Meghatározza az általános célú / szerver implementációk felügyelői (szupervizor) üzemmódban használható utasításait. Ez nagyrészt a korábbi PowerPC ISA Book III tartalma. Book III-E – Meghatározza a beágyazott eszközök szupervizor-utasításait. A korábbi PowerPC Book E egy változata. Book VLE – Változó utasításhosszú utasításkészlet (Variable Length Encoded Instruction Architecture) leírja a Book I–III-ban definiált utasítások alternatív változatait, amelyek a nagyobb kódsűrűséget és a nagyon alacsony szintű alkalmazásokban való használatot célozzák. Ezek az utasítások 16 bit hosszúak, bájtsorrendjük big endian.

Megfelelőség Az újdonság a Power ISA 3. verziójában az, hogy a megfelelőséghez / kompatibilitáshoz nem kell a teljes specifikációt megvalósítani. Az utasítások és technológiák sokasága a teljes specifikáció megvalósítását nehézkessé tette, így az OpenPOWER Alapítvány úgy döntött, hogy lehetővé teszi a többszintű megfeleltetést.

Ezek a szintek kötelező és opcionális követelményeket tartalmaznak, azonban gyakori félreértés, hogy az alacsonyabb szintű megfelelés mellett a megvalósítások további kiválasztott funkciókat és egyedi kiterjesztéseket tartalmazhatnak a magasabb szintekről. Ajánlott emiatt egy lehetőséget biztosítani a kialakítás deklarált részhalmazának szintjén túli hozzáadott funkciók letiltására.

Egy kialakításnak meg kell felelnie a deklarált részhalmaz szintjén ahhoz, hogy igénybe vehesse az Alapítvány védelmét a szellemi tulajdon használatára, mind a szabadalmak, mind a védjegyek terén. Ez ki van fejtve az OpenPOWER EULA-ban (felhasználói keretszerződés).

Egy megfelelő, kompatibilis kialakításnak az alábbi feltételeket kell teljesítenie: a „Base” architektúra támogatása, emellett legalább egy részhalmaz támogatása: SFS – skaláris fixpontos részhalmaz; 129 utasítás, alapvető fixpontos és betöltő/tároló utasítások, ami valójában a Base architektúra SFFS – skaláris fixpontos + lebegőpontos részhalmaz; 214 utasítás, lebegőpontos műveleteket ad a Base architektúrához LCS – Linux kompatibilitási részhalmaz; 962 utasítás, szerver szintű Linuxhoz készült, olyan funkciókkal, mint a 64 bites, opcionális SIMD/VSX, Radix MMU, növekvő bájtsorrendű (little-endian) mód és hipervizor támogatás ACS – IBM AIX kompatibilitási részhalmaz; 1099 utasítás, AIX futtatására készült, több kiegészítéssel, mint pl. decimális és négyszeres pontosságú lebegőpontos műveletek, big-endian mód és szimmetrikus multiprocesszálás Tartalmazhatja az LCS és az ACS bármely funkcióját opcionális elemként, vagy választhat a mindig opcionális (Always Optional) funkciók közül, mint például a mátrixmatematika és az energiagazdálkodás. A kiválasztott választható funkciót teljes egészében meg kell valósítani, a választható funkció részleges megvalósítása nem megengedett. Tartalmazhat egyedi, az Architecture Sandboxban megvalósított implementációspecifikus kiterjesztéseket. Ha a kiterjesztés elég általános célú, az OpenPOWER Alapítvány arra kéri a megvalósítókat, hogy nyújtsák be azt RFC-ként (Request for Comment) az OpenPOWER ISA Workgroup-nak.OpenPOWER ISA Workgroup – az OpenPOWER Alapítvány utasításkészlet-architektúra műszaki munkacsoportja, RFC-k Az RFC-k beküldésének nem feltétele az OpenPOWER Alapítványhoz történő csatlakozás. Az ISA elemei közül több funkció megvalósítható akár hardverben, akár firmware-ben.

EABI és Linux kompatibilitási ellentmondás Az EABI specifikációk megelőzték a kompatibilitási részhalmazok bejelentését és létrehozását.

A Linux kompatibilitási részhalmazt tekintve, amelyben a SIMD/VSX opcionális: 2003-tól a 64 bites EABI v1.9-es verzióban opcionálissá tették a SIMD-t, de 2015 júliusában az EABI v2.0-ban a SIMD kötelezővé vált, az IBM POWER9 rendszerek teljesítményének javítása érdekében. Ez az ellentmondás, hogy a SIMD opcionális a Linux kompatibilitás szintjén, de kötelező az EABI v2.0-ban, nem oldható fel jelentős erőfeszítés nélkül: a Linux-disztribúciók visszafelé történő inkompatibilitása nem járható út. Ez az új OpenPOWER implementálók számára azt jelenti, hogy ha standard Linux disztribúciók futtatására alkalmas processzort terveznek, akkor egy hatalmas, 962 utasításból álló készletet is meg kell valósítaniuk. Ehhez szemben például a RISC-V RV64GC, a Linux futtatásához minimálisan szükséges konfiguráció csak 165 utasítást tartalmaz.

Specifikációk

Power ISA v.2.03 A Power ISA v.2.03 specifikáció a korábbi POWER5+ PowerPC ISA v.2.02 specifikációján és a PowerPC specifikáció „Book E” kiterjesztésén alapul. A Book I öt új fejezetet tartalmaz, melyek a kiegészítő feldolgozóegységeket írják le, pl. a DSP és az AltiVec kiterjesztéseket.

Kompatibilis magok Freescale PowerPC e200, e500 IBM PowerPC 405, 440, 460, 970, POWER5 és POWER6

Power ISA v.2.04 A Power ISA v.2.04 specifikáció 2007 júniusában vált véglegessé. Ez a Power ISA v.2.03-n alapul, változások elsősorban a Book III-S részben vannak, a virtualizáció, a hipervizor funkciók, logikai particionálás és virtuális lapkezelés terén.

Kompatibilis magok A Power ISA korábbi verzióinak megfelelő magok P.A. Semi PA6T mag Titan processzor az AMCC-től

Power ISA v.2.05 A Power ISA v.2.05 specifikáció 2007 decemberében volt kibocsátva. Ez a Power ISA v.2.04-n alapul, változások elsősorban a Book I és Book III-S könyvekben vannak, beleértve olyan jelentős fejlesztéseket, mint a decimális aritmetika (kategória: decimális lebegőpontos számítás a Book I-ben) és szerver hipervizor javítások.

Kompatibilis magok Minden mag, amely megfelel a Power ISA korábbi verzióinak. POWER6 PowerPC 476

Power ISA v.2.06 A Power ISA v.2.06 specifikáció 2009 februárjában volt kiadva és 2010 júliusában jelent meg az átdolgozott kiadása. Ez a Power ISA v.2.05-n alapul és tartalmazza a POWER7 processzor és az e500-mc mag kiterjesztéseit. Egy jelentős új jellemzője a vektoros-skalár lebegőpontos utasítások (VSX) megjelenése. A „Book III-E” szintén jelentős fejlesztéseket tartalmaz a beágyazott specifikáció, a hipervizor és a virtualizáció terén, egy- és többmagos megvalósítások számára.

A specifikációt 2010 novemberében átdolgozták a Power ISA v.2.06 B revíziójára, javítva a virtualizációs funkciókat.

Kompatibilis magok A Power ISA korábbi verzióinak megfelelő magok. POWER7 A2I e500-mc e5500 e6500

Power ISA v.2.07 A Power ISA v.2.07 specifikáció 2013 májusában volt kibocsátva. A Power ISA v.2.06-n alapul és jelentős fejlesztéseket tartalmaz a logikai partíciós funkciók, tranzakciós memória, kibővített teljesítményfigyelés, új tárolóvezérlési funkciók, a VMX és VSX vektorfunkciók bővítései (VSX-2) terén, az AES, Galois számláló üzemmód (GCM), SHA-224, SHA-256, SHA-384 és SHA-512 (SHA-2) kriptográfiai kiterjesztések és ciklikus redundancia-ellenőrzés (CRC) algoritmusokkal együtt.

2015 áprilisában átdolgozták és kiadták a Power ISA v.2.07 B specifikációt.

Kompatibilis magok Minden mag, amely megfelel a Power ISA korábbi verzióinak. POWER8 IBM A2O

Power ISA v.3.0