Architettura 8086 (Execution Unit)

Qui di seguito vengono mostrati i punti generali dell’architettura dell’8086 e una breve argomentazione dei blocchi nella parte dell’Execution Unit di tale datapath.

Di seguito viene riportata un’immagine rappresentante lo schema a blocchi elementare per l’8086.

Architettura8086
Figura1. Schema a blocchi tratto dalla documentazione ufficiale del manuale utente per l’8086

Come si può notare l’architettura è suddivisa in due grandi sezioni:

  • Execution Unit
    • Si tratta della parte esecutiva dell’architettura. Essa si interfaccia al mondo esterno grazie alla Bus Interface Unit e da quest’ultima riceve le prossime istruzioni da eseguire. Per poter avere accesso alle memorie la EU deve riferirsi alla BIU. Ogni registro all’interno della EU è a 16 bit. La EU ha traccia anche dello stato della CPU, il quale è Status Register.
  • Bus interface unit
    • È la sezione che si occupa dell’interfacciame dell’EU con le memorie esterne e le periferiche I/O esterne. La BIU si occupa anche di garantire un anticipo delle fetch, secondo una logica di pipeline nella quale fetch ed execute non avvengono in modo temporalmente sequenziale ma in modo ottimizzato.

La Execution Unit

Come già anticipato la EU è la parte esecutiva dell’architettura della CPU e  si articola in 5 sottosezioni:

  • I registri generali
  • I registri temporanei
  • La Aritmetic Logic Unit (ALU)
  • Il sistema di controllo della EU

Di seguito viene discussa la funzione dei blocchi in elenco.

I registri generali e temporanei

I registri generali sono 8 e da 16 bit ciascuno. Solo 4 dei registri generali (per esempio AX, BX) possono essere allocati nella loro parte alta (o “High”) (per esempio AH, BH etc.) e/o nella parte bassa (o “Low”) separatamente (AL, BL, etc.).

I registri generali sono:

  • AX (compreso di AH|AL) si chiama registro accumulatore e viene utilizzato per operazioni di moltiplicazione, divisione etc. sulle word mentre la sua parte alta e la sua parte bassa si usano per le operazioni tra byte.
  • BX (compreso di BH|BL) si chiama registro base e viene utilizzato per stabilire l’indirizzo di base (iniziale) di una tabella o di un vettore.
  • CX (compreso di CH|CL) si chiama registro contatore e viene usato per le operazioni sulle stringhe e nei loop
  • DX (compreso di DH|DL) si chiama registro dei dati viene utilizzato per specificare le porte di I/O ma anche per eseguire operazioni di moltiplicazione e di divisione sulle word.
  • SP (stack pointer, è un puntatore che punta alla sommità dello stack) e BP (Base pointer, è un puntatore che punta ad una allocazione interna allo stack) vengono utilizzati per le operazioni con gli stack.
  • SI (Source Index) è un offset che consente di puntare a una locazione specifica nel segmento di memoria destinato ai dati. Tipicamente viene utilizzato per le operazioni tra le stringhe e indirizza l’operando o il dato sorgente
  • DI (Destination Index) è un offset che consente di puntare a una locazione specifica nel segmento di memoria destinato ai dati. Tipicamente viene utilizzato per le operazioni tra le stringhe e indirizza l’operando o il dato di destinazione

I temporary registers invece sono dei registri buffer in cui vengono caricati i valori su cui deve operare la ALU.

La ALU e lo Status Register (SR)

ALU sta per Artimetic Logic Unit ed è un circuito combinatorio adibita all’esecuzione di tutte le operazioni richieste, siano esse somme, sottrazioni, operazioni booleane etc. La ALU è responsabile del settaggio dei bit nello Status Register, in cui viene tenuto conto dello stato della CPU. Per esempio se la ALU durante una somma va in overflow (cioè il risultato risulta non essere più rappresentabile in 16 bit) il bit numero 11 (chiamato anche bit OF, che sta per OverFlow) del registro dell’ SR va a uno, indicando appunto lo stato di overflow.

Control System

Questo blocco controlla il flusso dei dati verso la Execution Unit.

 

Autore: Andrea

PhD student | Biomedical Engineer | Telemedicine | Telerehabilitation | Investor

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...