# Power ISA

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.

## Boeken

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

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
* Misc – floating point, vector, signal processing, cache locking, decimal floating point, enz.

## Specificaties
### Power ISA v.2.03

De Power ISA v.2.03-specificatie uit september 2006 is gebaseerd op de voormalige PowerPC ISA v.2.02 van de POWER5+ en de Boek E-uitbreiding 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

De specificatie voor Power ISA v.2.04 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

De Power ISA v.2.05-specificatie 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

De specificatie voor Power ISA v.2.06 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). 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.

#### 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

De Power ISA v.2.07-specificatie 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.
De specificatie is in april 2015 herzien naar de Power ISA v.2.07 B-specificatie.

#### Compatibele kernen

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

### Power ISA v.3.0

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 en in mei 2020 opnieuw herzien naar v3.0C. 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
* Libre-SOC

### Power ISA v.3.1

De Power ISA v.3.1-specificatie 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.

#### Compatibele kernen

* Alle kernen die voldoen aan eerdere versies van de Power ISA
* Power10 (IBM)

## Externe link

* (en) Power ISA specifications. OpenPOWER Foundation.
Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel Power ISA op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.
* ↑ (en) Power ISA v.2.03. Power.org (29 september 2006). Gearchiveerd op 27 juli 2011.
* ↑ (en) PowerPC Architecture Book, Version 2.02. IBM (24 februari 2005). Gearchiveerd op 18 oktober 2007.
* ↑ (en) PowerPC Book E v.1.0. IBM (7 mei 2002). Gearchiveerd op 10 maart 2018.
* ↑ (en) Power ISA Version 2.04. Power.org (12 juni 2007). Gearchiveerd op 27 september 2007.
* ↑ (en) Power ISA Version 2.05. Power.org (23 oktober 2007). Gearchiveerd op 24 november 2012.
* ↑ (en) Grabot, Phyllis, Power.org Debuts Specification Advances and New Services At Power Architecture Developer Conference. Power.org (24 september 2007). Gearchiveerd op 12 oktober 2007.
* ↑ (en) Gschwind, Michael, Workload acceleration with the IBM POWER vector-scalar architecture. IBM (1 maart 2016).
* ↑ (en) Power ISA Version 2.06 Revision B. Power.org (23 juli 2010). Gearchiveerd op 24 november 2012.
* ↑ (en) McConnel, Toni, Power ISA 2.06 Rev. B enables full hardware virtualization for embedded space. EETimes (3 november 2010).
* ↑ (en) Power ISA Version 2.07. Power.org (15 mei 2013).
* ↑ (en) Performance Optimization and Tuning Techniques for IBM Power Systems Processors Including IBM POWER8. IBM (augustus 2015), pp. 48. ISBN 978-07-384-4092-7.
* ↑ (en) Power ISA Version 2.07 B. Power.org (9 april 2015).
* ↑ (en) Power ISA Version 3.0 B. OpenPOWER Foundation (29 maart 2017).
* ↑ (en) Power ISA Version 3.0C. OpenPOWER Foundation (1 mei 2020).
* ↑ (en) OpenPOWER Microwatt To See Chip Fabrication Thanks To Google + Skywater. phoronix.com (22 maart 2021).
* ↑ (en) Libre-SOC 180nm Power ISA ASIC Submitted to Imec for Fabrication. OpenPOWER Foundation (8 juli 2021). Gearchiveerd op 8 juli 2021.
* ↑ (en) Power ISA Version 3.1. OpenPOWER Foundation (1 mei 2020).
* ↑ (en) Power ISA Version 3.1B. OpenPOWER Foundation (14 september 2021).