Microcodi

De la Viquipèdia, l'enciclopèdia lliure

Microcodi o microprograma és el nom d'una sèrie d'instruccions o estructures de dades implicats en la implementació de llenguatge màquina de nivell més alt en molts processadors, especialment els microprogramats. Microcodi està emmagatzemat en una memòria que és d'accés molt ràpid.[1] Quan una instrucció de nivell de màquina ha de ser executada, el microcodi indica al processador quins circuits electrònics han de ser utilitzats. Quan s'ha dissenyat un nou processador, un enginyer també escriu el microcodi per a les instruccions de llenguatge màquina. Això s'anomena microprogramació, i el codi resultant s'anomena un microprograma.

El concepte de microprogramació va ser desenvolupat per Maurice Wilkes el 1951, utilitzant una matriu de díodes com l'element de memòria.[2]

En els primers processadors, cada instrucció era cablejada (hard-wired). Això té diversos inconvenients, el més obvi és que la correcció d'un error en el disseny del processador significa que el processador necessita ser reemplaçat.

Exemple[modifica]

Un processador ha d'afegir dos valors, que són en registres A i B.

  1. Configurar l'ALU per l'addició
  2. Posar el valor del registre A en una entrada de l'ALU
  3. Posar el valor del registre B en una entrada de l'ALU
  4. Després d'esperar un temps curt, per permetre l'addició, el resultat ha de ser copiat en un registre, que no s'ha utilitzat encara
  5. El valor d'aquell registre ha de ser copiat en el registre A
  6. La pròxima instrucció ha de ser llegida des de la memòria

Els elements 1-3, així com 5-6 es poden codificar com una instrucció. També és possible cablar la lògica necessària per a aquesta operació. Això té l'avantatge de ser més ràpid, però el desavantatge que ja no permet canvis que podrien ser necessaris més endavant.

Referències[modifica]

  1. «Microcode» (en anglès). WordNet. [Consulta: 28 maig 2010]. «coded instructions that are stored permanently in read-only memory.»
  2. Nguyen Thi Hoang Lan. «Microprogramming» (en anglès). Connexions, 19-07-2009. [Consulta: 28 maig 2010].

Enllaços externs[modifica]