MIC-2

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

Il MIC-2 è un'architettura di processore inventata da Andrew S. Tanenbaum da utilizzare come esempio semplice ma completo per il suo libro Architettura dei calcolatori.

Il linguaggio microcodice MAL (Micro-Assembly Language) è realizzato per consentire la scrittura di un interprete IJVM (Integer Java Virtual Machine) con semplicità. Esempi di codice sorgente per questo interprete si trovano nel libro su menzionato.

È presente l'IFU (Instruction Fetch Unit), un'unità che si occupa di richiedere i byte del codice IJVM alla memoria centrale.

L'IFU è un componente hardware che affianca l'ALU nei suoi compiti di calcolo. In particolare ha il compito di:

  1. Eliminare il main loop dalla fine di ogni istruzione IJVM. Al suo posto è inserito un salto alla prossima istruzione da eseguire memorizzata nel registro MBR1 e puntata da PC (Program Counter).
  2. Sollevare l'ALU dal compito di incrementare PC e di eseguire la procedura di fetch.
  3. Assemblare l'opcode in 16 bit. Successivamente lo passa direttamente all'ALU come valore a 32 bit (l'ALU lavora a 32 bit).

A differenza del MIC-1 il registro MBR viene sostituito da due registri MBR1 (di dimensione 8 bit) e MBR2 (di dimensione 16 bit) con rispettiva versione unsigned. Appena viene letto un valore da uno dei due registri si procede a memorizzare al loro interno i byte successivi da leggere prelevati dalla IFU.[1]

La IFU è dotata di un registro IMAR per indirizzare la successiva parola da prelevare, questo registro possiede un proprio incrementatore in modo da alleggerire il carico alla ALU.

Sono presenti tre Bus da 32 linee ciascuno (uno in più rispetto al MIC-1, che non possiede un A bus):

Microistruzioni

[modifica | modifica wikitesto]

La dimensione delle microistruzioni è differente da quella di MIC-1 in quanto viene rimosso il bit di fetch dal campo MEM e vengono aggiunti 4 bit per la codifica del bus A.

Differenze con MIC-1

[modifica | modifica wikitesto]

Nella tabella sottostante è rappresentata la sequenza di microistruzioni che implementano la macroistruzione IJVM istore in MIC-1:

ISTORE in MIC-1
Etichetta Opeazione
istore1 H = LV
istore2 MAR = MBRU + H
istore3 MDR = TOS, wr
istore4 SP = MAR = SP - 1; rd
istore5 PC = PC + 1; fetch
istore6 TOS = MDR; goto Main1

Nella tabella seguente invece è rappresentata la sequenza di microistruzioni per l'implementazione della macroistruzione IJVM istore in MIC-2:

ISTORE in MIC-2
Etichetta Opeazione
istore1 MAR = LV + MBR1U
istore2 MDR = TOS; wr
istore3 MAR = SP = SP - 1; rd
istore4 nop
istore5 TOS = MDR; goto(MBR1)

Si noti che nell'istruzione per MIC-2 è possibile sommare direttamente i due registri LV e MBR1U senza usare il registro H come appoggio, questo grazie al fatto che il bus A è collegato a tutti i registri e non solo ad H come in MIC-1. Inoltre l'istruzione istore5 della codifica MIC-1 viene eliminata in quella per MIC-2 in quanto l'incremento di di PC viene fatto automaticamente dalla IFU risparmiando un ciclo di clock.

Voci correlate

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
  1. ^ Architettura dei calcolatori - Un approccio strutturale.