Microcode

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

Microcode is programmacode die door een CPU wordt uitgevoerd en die machinetaal interpreteert.

Een CPU die microcode gebruikt (zoals bijvoorbeeld Intels x86 serie) voert machinetaal niet direct in de hardware uit. In plaats daarvan wordt de machinetaal geïnterpreteerd door een microcodeprogramma, dat op zijn beurt wel direct door de hardware uitgevoerd wordt.

Microcode wordt vooral gebruikt in processors die veel en complexe instructies hebben (CISC-processors). Het decoderen en uitvoeren van instructies is bij deze processors te complex om in de hardware te implementeren.

Microcode bevindt zich, in tegenstelling tot alle andere soorten programmacode (inclusief machinetaal), niet in het hoofdgeheugen, maar in een speciaal geheugen op de processor zelf. Dit geheugen, de control store, is bij een microprocessor meestal read-only, maar dat is niet noodzakelijk zo: soms wordt microcode tijdens het opstarten van de computer vanuit een andere locatie in de control-store geladen. Dit maakt het mogelijk om bugs te repareren of om nieuwe instructies aan de instructieset van de CPU toe te voegen. Ook is het mogelijk met het vervangen van de microcode een andere computer te emuleren. Zo kan een Univac-computer een Philips-computer emuleren en dus programma's draaien die voor de Philips geschreven zijn.

Andere betekenis[bewerken]

Een andere betekenis van microcode wordt gehanteerd bij sommige instructiesets, zoals de PDP-8. In een instructie zorgen diverse bits ervoor dat bewerkingen worden uitgevoerd, en desnoods kunnen meerdere bits in dezelfde instructie gezet zijn. Bijvoorbeeld:

binair mnemonisch betekenis resultaat in accumulator
111 000 000 000 NOP er gebeurt niets
111 010 000 000 CLA maak de accumulator nul 000 000 000 000
111 000 100 000 CMA inverteer alle bits in de accumulator ~AC
111 000 000 001 IAC verhoog accumulator met 1 AC+1
111 000 000 010 RAL schuif AC naar links AC+AC
111 010 100 000 CLA CMA maak accumulator nul en inverteer alle bits 111 111 111 111
111 010 000 001 CLA IAC maak accumulator nul en verhoog met 1 000 000 000 001
111 010 000 011 CLA IAC RAL maak accumulator nul, verhoog met 1, schuif naar links 000 000 000 010