Power-architectuur

instructieset

IBM POWER is een RISC instructiesetarchitectuur (ISA) die ontwikkeld werd door IBM. De naam is een acroniem voor Performance Optimization With Enhanced RISC.[1]

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

De instructieset diende in de jaren negentig als basis voor hoogwaardige microprocessors van IBM en werd gebruikt in veel van IBM's servers, minicomputers, werkstations en supercomputers. Deze processors heten POWER1 (RIOS-1, RIOS.9, RSC, RAD6000) en POWER2 (POWER2, POWER2+ en P2SC).

De instructieset evolueerde naar de PowerPC-instructiesetarchitectuur en werd in 1998 geklasseerd als verouderd toen IBM de POWER3-processor introduceerde die voornamelijk een 32/64-bit PowerPC-processor was, maar ook de IBM POWER-architectuur bevatte voor achterwaartse compatibiliteit. De oorspronkelijke IBM POWER-architectuur werd daarna niet meer gebruikt. PowerPC evolueerde in 2006 naar Power ISA, de derde instructiesetarchitectuur.

IBM ontwikkelt nog steeds PowerPC-microprocessorkernen voor gebruik in zijn ASIC's.

Geschiedenis bewerken

Het 801-onderzoeksproject bewerken

In 1974 startte IBM een project dat als doel had om een grote telefooncentrale te creëren met een potentiële capaciteit om minstens 300 oproepen per seconde af te handelen. Er werd voorspeld dat er 20.000 machine-instructies nodig zouden zijn om elke oproep af te handelen met behoud van een realtime respons. Daarvoor was een processor met een prestatie van 12 MIPS nodig, een eis die voor die tijd extreem ambitieus was.[2] Men realiseerde zich echter dat veel van de complexiteit van de toenmalige CPU's achterwege gelaten kon worden, aangezien deze machine geen speciale instructies nodig had om zwaar rekenwerk uit te voeren.

Deze eenvoudige ontwerpfilosofie, waarbij complexe operaties opgesplitst worden in een serie eenvoudige instructies die in dezelfde constante tijd moeten voltooid worden, zou later bekend worden als RISC.

In 1975 werd het telefooncentraleproject geannuleerd zonder prototype. Uit de schattingen van simulaties die in het eerste jaar van het project werden geproduceerd, leek het er echter op dat de processor die voor dit project werd ontworpen een veelbelovende processor voor algemene gebruik zou kunnen zijn, dus werd er verder gewerkt op het 801-project in gebouw 801 van het Thomas J. Watson Research Center.[2]

Het Cheetah-project uit 1982 bewerken

Twee jaar lang werden in het Watson Research Center de superscalaire grenzen van het 801-ontwerp onderzocht. Zo bekeek men of het haalbaar was om de prestaties van het ontwerp te verbeteren door meerdere functionele eenheden te gebruiken, vergelijkbaar met wat er gedaan was in het ontwerp van de CDC 6600 en van het IBM Systeem/360 Model 91 (hoewel Model 91 gebaseerd was op een CISC-ontwerp). Ook werd onderzocht of een RISC-machine meerdere instructies per cyclus zou kunnen uitvoeren en welke ontwerpwijzigingen er in het 801-ontwerp moesten aangebracht worden om meerdere uitvoeringseenheden mogelijk te maken.

Om de prestaties te verbeteren beschikte Cheetah over een afzonderlijke branch unit, floating-point unit en fixed-point unit.[3][4] Er werden veel wijzigingen aangebracht in het 801-ontwerp om meerdere uitvoeringseenheden mogelijk te maken. Het was oorspronkelijk de bedoeling dat Cheetah zou worden vervaardigd met behulp van bipolaire ECL-technologie, maar in 1984 zorgde CMOS-technologie voor een toename van de circuitintegratie terwijl ook de prestaties verbeterden.

Het Amerika-project bewerken

In 1985 startte het onderzoek naar een RISC-architectuur van de tweede generatie bij het Watson Research Center, wat in 1986 resulteerde in de "AMERICA-architectuur".[2] In 1986 begon IBM Austin met de ontwikkeling van de RS/6000-serie die op deze architectuur gebaseerd is.[3][4]

POWER bewerken

 
IBM POWER-processor voor een RS/6000-computer

In februari 1990 introduceerde IBM de "RISC System/6000"-serie (kortweg RS/6000), de eerste computers die de POWER-instructieset gebruiken. Deze RS/6000-computers werden onderverdeeld in werkstations en servers en werden daarom verkocht als POWERstation en POWERserver. De RS/6000-processor had 2 configuraties: "RIOS-1" en "RIOS.9" (beter gekend als de "POWER1" CPU). Een RIOS-1-configuratie had in totaal 10 afzonderlijke chips: een instructiecache-chip, een fixed-point-chip, een floating-point-chip, 4 datacache-chips, een opslagcontrole-chip, input/output-chips en een klokchip.[5] De goedkopere RIOS.9-configuratie bestond uit 8 chips: een instructiecache-chip, een fixed-point-chip, een floating-point-chip, 2 data-cache-chips, een opslagcontrole-chip, een input/output-chip en een klokchip.

Voor de instapmodellen van de RS/6000-serie werd RSC ("RISC Single Chip") ontwikkeld, een implementatie van RIOS met één chip. De eerste machines die RSC gebruikten kwamen in 1992 op de markt.

POWER2 bewerken

Twee jaar voor de oprichting van de Apple-IBM-Motorola-alliantie in 1991 startte IBM met de ontwikkeling van de POWER2-processor als opvolger van de POWER1. Door een tweede fixed-point-eenheid, een tweede floating-point-eenheid en andere prestatieverbeteringen aan het ontwerp toe te voegen, zette de POWER2 bij zijn introductie in november 1993 toonaangevende prestaties neer.

De instructieset werd uitgebreid met nieuwe instructies:

  • Quad-word storage instructies. Deze instructies verplaatsen twee aangrenzende waarden met dubbele precisie naar twee aangrenzende drijvende-kommaregisters.
  • Een instructie die een vierkantswortel in hardware berekent.
  • Instructies die zwevendekommagetallen converteren naar gehele getallen.

Om de RS/6000- en RS/6000 SP2-productlijnen in 1996 te ondersteunen liet IBM zijn eigen ontwerpteam onafhankelijk van de AIM-alliantie een versie met één chip van POWER2 implementeren: de P2SC ("POWER2 Super Chip"). Ten tijde van zijn introductie was de P2SC de grootste processor met het hoogste aantal transistors op de markt. De P2SC was de processor die gebruikt werd in de IBM Deep Blue-schaakcomputer uit 1997, die schaakgrootmeester Garri Kasparov versloeg. Met zijn twee geavanceerde MAF floating-point units en enorme brede geheugeninterfaces met lage latency was de P2SC vooral gericht op technische en wetenschappelijke toepassingen. P2SC werd opgevolgd door de POWER3, die naast de geavanceerde dubbele MAF floating-point units van de P2SC ook 64-bit SMP-mogelijkheden bevatte en een volledige overgang maakte naar de PowerPC-architectuur.

Architectuur bewerken

 
Geschiedenis van de POWER-architectuur

De POWER-architectuur is een rechtstreekse afstammeling van de 801-CPU, die algemeen wordt beschouwd als het eerste echte RISC-processorontwerp.[5] De 801 werd gebruikt in een aantal toepassingen binnen IBM-hardware.[2]

Ongeveer op hetzelfde moment dat de IBM RT werd uitgebracht startte IBM het Amerika-project om de krachtigste CPU op de markt te ontwerpen. IBM was vooral geïnteresseerd in het oplossen van twee problemen in het 801-ontwerp:

  • De 801 vereiste dat alle instructies in één klokcyclus moesten voltooid worden, wat drijvende-komma-instructies uitsloot.
  • Hoewel de instructiedecoder pipelining gebruikte als neveneffect van deze eenklokcyclusoperaties, werd er geen gebruik gemaakt van superscalaire effecten.

Drijvendekommainstructies werden een focus voor het Amerika-project, waarbij IBM gebruik maakte van nieuwe algoritmen die begin jaren tachtig ontwikkeld waren en die vermenigvuldigingen en delingen met 64 bits dubbele precisie in één cyclus konden ondersteunen. Het FPU-gedeelte van het ontwerp was gescheiden van de instructiedecoder, waardoor de decoder tegelijkertijd instructies naar zowel de FPU- als de ALU-uitvoeringseenheden kon sturen. IBM vulde dit aan met een complexe instructiedecoder die de ene instructie kon ophalen, een andere kon decoderen en er tegelijkertijd een naar de ALU en de FPU kon sturen, wat resulteerde in een van de eerste superscalaire CPU-ontwerpen die in gebruik waren.

Het systeem gebruikte 32 32-bits integer-registers en nog eens 32 64-bits drijvende-kommaregisters, elk in hun eigen verwerkingseenheid. De branch unit bevatte ook een aantal "privé"-registers voor eigen gebruik, waaronder de programmateller.