Power ISA

instructieset

Power ISA is een RISC instructiesetarchitectuur (ISA) die ontwikkeld wordt door de OpenPOWER Foundation onder leiding van IBM. Het werd oorspronkelijk ontwikkeld door IBM en de inmiddels opgedoekte Power.org-industriegroep. Power ISA is een evolutie van de PowerPC ISA, ontstaan door het samenvoegen van de PowerPC-specificatie en het optionele Boek E voor embedded systems. De fusie van deze twee componenten in 2006 werd geleid door Power.org-oprichters IBM en Freescale Semiconductor.

POWER-, PowerPC- en Power ISA-architectuur

Processorarchitectuur

Historisch

POWER · POWER2 · POWER3 · POWER4 · POWER5 · PPC6xx · PPC7xx · PPC74xx · PPC970 · PowerPC-AS · Broadway

Huidig

e200 · e300 · e500 · e600 · e5500 · e6500 · PA6T · POWER6 · POWER7 · POWER8 · POWER9 · Power10 · PPC4xx · Cell PPE · Xenon

Geannuleerd

e700 · Titan

Gerelateerde links

OpenPOWER Foundation · RISC · AIM-alliantie · System p · Power.org · PAPR · PReP · CHRP · AltiVec

Schematisch overzicht van een generieke Power ISA-processor

De Power ISA-specificatie bestaat uit vijf delen, de zogenaamde "boeken":

  • Boek I – User Instruction Set Architecture omvat de basisinstructieset die beschikbaar is voor programmeurs. Naast standaard onderdelen voor flow control en integer- en floating-pointberekeningen bevat het ook hoofdstukken over digitale signaalprocessors (DSP's) en de AltiVec-extensie.
  • Boek II – Virtual Environment Architecture definieert het opslagmodel dat beschikbaar is voor programmeurs, inclusief timing, synchronisatie, cachebeheer en opslagfuncties.
  • Boek III – Operating Environment Architecture omvat exceptions, interrupts, geheugenbeheer, debug-faciliteiten en speciale besturingsfuncties. Het is verdeeld in twee delen:
    • Boek III-S – Definieert de supervisor-instructies die worden gebruikt voor algemene doeleinden en serverimplementaties. Dit komt hoofdzakelijk overeen met de inhoud van Boek III van de voormalige PowerPC ISA.
    • Boek III-E – Definieert de supervisor-instructies die worden gebruikt voor embedded systems. Het is afgeleid van het voormalige PowerPC Boek E.
  • Boek VLE - Variable Length Encoded Instruction Architecture definieert alternatieve instructies en definities uit boeken I–III, bedoeld voor hogere instructiedichtheid en zeer low-end toepassingen.

Nieuw in versie 3.0 van de Power ISA is dat men niet de gehele specificatie hoeft te implementeren om compliant te zijn. De wildgroei aan instructies en technologieën heeft de volledige specificatie onpraktisch gemaakt, dus heeft de OpenPOWER Foundation besloten om gelaagde compliancy mogelijk te maken.

Categorieën

bewerken

Tot versie 3.0 was de Power ISA onderverdeeld in verschillende categorieën. Microprocessors implementeren de categorieën die vereist zijn voor hun taak. Een processor voor gebruik in servers omvat bijvoorbeeld de categorieën Base, Server, Floating-Point, 64-Bit, enz. Alle processors implementeren de categorie Base.

  • Base – Het grootste deel van Boek I and Boek II
  • Server – Boek III-S
  • Embedded – Boek III-E
  • Miscfloating point, vector, signal processing, cache locking, decimal floating point, enz.

Specificaties

bewerken
 
Overzicht van de verschillende POWER-, PowerPC- en Power ISA-instructiesets

Power ISA v.2.03

bewerken

De Power ISA v.2.03-specificatie[1] uit september 2006 is gebaseerd op de voormalige PowerPC ISA v.2.02[2] van de POWER5+ en de Boek E-uitbreiding[3] van de PowerPC-specificatie. Boek I bevatte vijf nieuwe hoofdstukken over hulpsystemen zoals DSP's en de AltiVec-extensie.

Compatibele kernen
  • POWER5 en POWER6 (IBM)
  • PowerPC 405, 440, 460, 970 (IBM)
  • PowerPC e200, e500 (Freescale)

Power ISA v.2.04

bewerken

De specificatie voor Power ISA v.2.04[4] werd in juni 2007 afgerond. Deze is gebaseerd op Power ISA v.2.03 en omvat voornamelijk wijzigingen in Boek III-S met betrekking tot virtualisatie, hypervisorfuncties, logische partities en verwerking van virtuele pagina's.

Compatibele kernen
  • Alle kernen die voldoen aan eerdere versies van de Power ISA
  • PA6T (P.A. Semi)
  • Titan (AMCC)

Power ISA v.2.05

bewerken

De Power ISA v.2.05-specificatie[5] werd uitgebracht in december 2007. Deze is gebaseerd op Power ISA v.2.04 en omvat voornamelijk wijzigingen in Boek I en Boek III-S, inclusief aanzienlijke verbeteringen in decimale floating-pointbewerkingen en verbeteringen aan de serverhypervisor.

Compatibele kernen
  • Alle kernen die voldoen aan eerdere versies van de Power ISA
  • POWER6 (IBM)
  • PowerPC 476 (IBM en LSI)

Power ISA v.2.06

bewerken

De specificatie voor Power ISA v.2.06[6] werd uitgebracht in februari 2009 en herzien in juli 2010. Het is gebaseerd op Power ISA v.2.05 en bevat uitbreidingen voor de POWER7-processor en de e500-mc-kern. Een belangrijke nieuwe functie zijn vector-scalaire drijvende-komma-instructies (VSX).[7] Boek III-E bevat ook aanzienlijke verbeteringen voor de embedded specificaties met betrekking tot hypervisor en virtualisatie op single- en multi-core implementaties.

De specificatie werd in november 2010 herzien naar de Power ISA v.2.06 revisie B-specificatie, waarin de virtualisatiefuncties werden verbeterd.[8][9]

Compatibele kernen
  • Alle kernen die voldoen aan eerdere versies van de Power ISA
  • POWER7, A2I (IBM)
  • PowerPC e500-mc, e5500 (Freescale)

Power ISA v.2.07

bewerken

De Power ISA v.2.07-specificatie[10] werd uitgebracht in mei 2013. Deze is gebaseerd op Power ISA v.2.06 en omvat belangrijke verbeteringen aan logische partitiefuncties, transactioneel geheugen, uitgebreide prestatiemonitoring, nieuwe opslagcontrolefuncties, toevoegingen aan de VMX- en VSX-vectorfaciliteiten (VSX-2), alsook cryptografische extensies en cyclic redundancy check (CRC)-algoritmen.[11]

De specificatie is in april 2015 herzien naar de Power ISA v.2.07 B-specificatie.[12]

Compatibele kernen
  • Alle kernen die voldoen aan eerdere versies van de Power ISA
  • POWER8, A2O (IBM)
  • PowerPC e6500 (Freescale)

Power ISA v.3.0

bewerken

De Power ISA v.3.0-specificatie werd uitgebracht in november 2015. Het is de eerste die uitkomt na de oprichting van de OpenPOWER Foundation. Deze specificatie bevat verbeteringen voor een breed spectrum aan workloads en voegt ondersteuning toe voor VSX-3-instructies. Nieuwe functies zijn onder meer 128-bits drijvende-kommabewerkingen met quad-precisie, een generator voor willekeurige getallen, door hardware ondersteunde garbagecollection en door hardware afgedwongen vertrouwd computergebruik. De "server" en "embedded" categorieën werden verwijderd, met behoud van achterwaartse compatibiliteit.

De specificatie is in maart 2017 herzien naar de Power ISA v.3.0 B-specificatie[13] en in mei 2020 opnieuw herzien naar v3.0C.[14] Een belangrijke verandering van v3.0 naar v3.0B is het verwijderen van hardware-ondersteuning voor garbagecollection. Het belangrijkste verschil tussen v3.0B en v3.0C is dat de compatibiliteitsniveaus die in v3.1 worden vermeld, ook zijn toegevoegd aan v3.0C.

Compatibele kernen
  • Alle kernen die voldoen aan eerdere versies van de Power ISA
  • POWER9 (IBM)
  • OpenPOWER Microwatt[15]
  • Libre-SOC[16]

Power ISA v.3.1

bewerken

De Power ISA v.3.1-specificatie[17] werd uitgebracht in mei 2020. Deze specificatie biedt voornamelijk ondersteuning voor nieuwe functies die in Power10 zijn geïntroduceerd. Naast de gebruikelijke "word instructions" van vier bytes zijn er nu ook "prefixed instructions" die acht bytes lang kunnen zijn. Er zijn ook veel nieuwe functies aan SIMD- en VSX-instructies toegevoegd. VSX en de SVP64-extensie bieden hardwareondersteuning voor 16-bits floats met halve precisie.

De specificatie is in september 2021 herzien naar de Power ISA v.3.1B-specificatie.[18]

Compatibele kernen
  • Alle kernen die voldoen aan eerdere versies van de Power ISA
  • Power10 (IBM)
bewerken
  • (en) Power ISA specifications. OpenPOWER Foundation.