Instructieset

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een instructieset is de verzameling van alle mogelijke machinecodes die een processor kan verwerken. De instructies worden als binaire codes in het geheugen gezet, het programmeren zelf gebeurt in Assembleertalen of (meestal) hogere programmeertalen.

De meeste processors hebben instructies voor de volgende functies:

  • ophalen van een waarde uit een geheugenplaats
  • terugschrijven van een waarde naar een geheugenplaats
  • diverse rekenkundige en logische functies
  • testfuncties
  • sprongfuncties, al dan niet voorwaardelijk
  • afhandelen van interrupts

De meeste moderne processors hebben een zeer uitgebreide instructieset, waarbij een enkele instructie meerdere functies kan uitvoeren. Bijvoorbeeld: "haal de waarde op die op de geheugenplaats staat die door register X wordt aangewezen, tel deze op bij de waarde in het werkregister en laat register X naar de volgende geheugenplaats wijzen".

Iedere processorfamilie heeft over het algemeen een eigen instructieset die niet uitwisselbaar is met die van andere. Dit betekent dat programma's die voor een bepaald processortype gemaakt zijn niet zonder meer op een ander type kunnen werken. Met hercompileren, emulators of crosscompilers kan dit probleem ondervangen worden.

De wellicht bekendste instructieset is de x86-instructieset die gebruikt wordt voor de Intel 8086/8088-processor en (met uitbreidingen) in latere versies daarvan. Minder bekend, maar waarschijnlijk het meest gebruikt, is de ARM-instructieset. Men vindt ARM processors in zeer uiteenlopende soorten apparatuur, van mobiele telefoons en PDA's tot printers of harde schijven.

RISC en CISC[bewerken]

Bij het ontwerpen van een processor en bijbehorende instructieset worden in het algemeen twee verschillende strategieën gevolgd:

  • Ofwel beperkt men het aantal verschillende typen instructies en bouwt een processor die deze eenvoudige instructies zo efficiënt en snel mogelijk uit kan voeren. Door het combineren van meerdere van deze simpele instructies kunnen meer complexe taken worden uitgevoerd. Deze strategie noemt men Reduced instruction set computer (RISC).
  • Ofwel ontwerpt men afzonderlijke instructies voor zo veel mogelijk denkbare taken en bouwt een processor die met een enkele instructie al een behoorlijk complexe taak kan uitvoeren. Deze strategie noemt men Complex instruction set computer (CISC).

Orthogonaliteit[bewerken]

Hoofdartikel: orthogonale instructieset.

Een orthogonale instructieset biedt onafhankelijkheid tussen enerzijds instructies en anderzijds gegevenstypen en adresseermodi. Hoe orthogonaler de instructieset, hoe eenvoudiger en "zuiverder" deze is, met een aantal voordelen naar flexibiliteit en programmeerbaarheid. Echter, te ver doorgedreven orthogonaliteit kan ook leiden tot veel niet of weinig gebruikte combinaties en daarmee lage bitdichtheden en inefficiëntie op verschillende gebieden. Modernere ontwerpen trachten daarom de voordelen van orthogonaliteit te combineren met de voordelen van compactie voortvloeiend uit niet-orthogonaliteit, door het maken van welbepaalde keuzes. Zo maakt men bijvoorbeeld bij RISC-instructiesets onderscheid tussen instructies die primair gegevens van en naar het hoofdgeheugen verplaatsen, gegevensbewerkingsinstructies en besturingsinstructies, versus de adresseringsmodi welke elke categorie ter beschikking heeft.

Zie ook[bewerken]