Pubblicato il

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.