• Non ci sono risultati.

LOGICA BOOLEANA l'OR logico

N/A
N/A
Protected

Academic year: 2021

Condividi "LOGICA BOOLEANA l'OR logico"

Copied!
49
0
0

Testo completo

(1)

LOGICA BOOLEANA

l'OR logico ⇒ unione  tra due insiemi A e B

componente elettronico::::: famiglia delle  porte logiche più generale:  una porta logica OR formata da un 

numero arbitrario n di ingressi e da una sola uscita

l'AND ⇒  intersezione  tra due insiemi A e B

più generale: una porta logica AND formata da un  numero arbitrario n di ingressi e da una sola uscita.

NOT logico ⇒

complemento di A rispetto  all'insieme universale U (in  questo caso U = {0, 1}); 

(2)

Un insieme di porte logiche collegate tra loro, formano  una cosiddetta rete combinatoria o R.C

I teoremi dell'algebra di Boole hanno proprio lo scopo  di studiare, risolvere e semplificare le R.C

(3)

ALTRE PORTE IMPORTANTI

­ Insiemi/Sistemi funzionalmente completi

(4)

COME SI SELEZIONA L'INDIRIZZO?

IL DECODER

(5)

Multiplexer e Demultiplexer

Il Multiplexer o MUX rappresenta un  commutatore  elettronico: riceve in ingresso n segnali logici ed è in  grado di selezionare in uscita uno solo di essi. 

 

per selezionare una tra n possibili linee in ingresso,  abbiamo bisogno di m linee di selezione con: 

 2= n     ⇒  m = log2

esempio:  MUX a n=4 ingressi  ⇒ m=2 linee di  selezione; 

con 2 bit possiamo gestire 22=4 configurazioni diverse  (4 numeri binari differenti). 

colleghiamo i 4 ingressi del MUX a 4 porte AND

grazie alle 2 linee di selezione possiamo abilitare solo  una delle porte AND che trasferisce in uscita l'ingresso  ad essa collegato. 

 (MUX da 4 a 1)

(6)

L'ingresso E (Enable) permette di attivare o disattivare  l'intero MUX

 Le 2 linee S0 e S1 rappresentano gli ingressi di  selezione 

ponendo ora E=0 (MUX attivo)

 * Se S0 = 0 e S1 = 0 si ottiene Y = a0.

 * Se S0 = 1 e S1 = 0 si ottiene Y = a1.

 * Se S0 = 0 e S1 = 1 si ottiene Y = a2.

 * Se S0 = 1 e S1 = 1 si ottiene Y = a3. 

(7)

 Demultiplexer o DMUX  

il DMUX riceve in ingresso un unico segnale logico, ed  è in grado di trasferirlo su una sola tra le n linee di 

uscita:  m = log2n linee di selezione. 

struttura della R.C. che implementa un DMUX a 1  ingresso e 4 uscite ( DMUX da 1 a 4)

 

S0 e S1 sono gli ingressi di selezione, D è l'unico  ingresso per i dati, E l'ingresso di abilitazione;

 le 4 uscite del DMUX sono Y0, Y1, Y2 e Y3. 

(8)

  

 * Se S0 = 0 e S1 = 0 si ottiene Y0 = 0, Y1 = 1, Y2 = 1,  Y3 = 1.

 * Se S0 = 1 e S1 = 0 si ottiene Y0 = 1, Y1 = 0, Y2 = 1,  Y3 = 1.

 * Se S0 = 0 e S1 = 1 si ottiene Y0 = 1, Y1 = 1, Y2 = 0,  Y3 = 1.

 * Se S0 = 1 e S1 = 1 si ottiene Y0 = 1, Y1 = 1, Y2 = 1,  Y3 = 0. 

Comparazione tra numeri binari

istruzioni per il controllo del flusso: permettono ad un  programma   di   prendere   delle   decisioni   in   base   al  risultato di una operazione appena eseguita;

IF, THEN, ELSE, DO WHILE, REPEAT UNTIL, etc. 

Dal punto di vista della CPU tutte queste istruzioni si  traducono in una serie di confronti tra numeri binari; 

tutte   le   CPU   sono   dotate   di   apposite   R.C.   che  permettono   di   effettuare   comparazioni   tra   numeri  binari. 

 

(9)

Il confronto ha senso solo se i due numeri binari hanno lo stesso numero di bit. 

Due numeri binari sono uguali quando

hanno i bit corrispondenti (di pari posizione)  uguali tra loro; 

(10)

esempio: confronto tra nibble (1 nibble == 4 bit;1 byte 

== 8 bit)

la prima uscita (quella più in alto) presenta un livello  logico alto solo se Ai è maggiore di Bi (cioè Ai=1 e  Bi=0); la seconda uscita presenta un livello logico alto  solo se Ai è uguale a Bi (cioè Ai=0 e Bi=0, oppure Ai=1  e Bi=1). La terza uscita infine presenta un livello logico  alto solo se Ai è minore di Bi (cioè Ai=0 e Bi=1). 

(11)

­ presenza di tre connessioni I1, I2 e I3;  servono per il  collegamento   in   parallelo   di   due   o   più   comparatori  quando si ha la necessità di confrontare tra loro numeri  con più di 4 bit. 

(12)

Addizione tra numeri binari: Half Adder

Full Adder

(13)

Una volta realizzati l'H.A. e il F.A., possiamo realizzare  circuiti   per   sommare   numeri   binari   di   qualsiasi  dimensione (si deve tener conto del riporto...)

l riporto finale C3 contiene il valore (0 o 1) che verrà  assegnato al Carry Flag (nel registro dei flags) 

Anche   nel   caso   dell'addizione   (e   di   tutte   le   altre  operazioni),  un computer con architettura, ad esempio,  a 16 bit, sarà dotato di circuiti in grado di sommare via  hardware numeri a 16 bit; 

se   vogliamo   sommare   tra   loro   numeri   a   32   bit,  dobbiamo   procedere   via   software   suddividendo   i   bit  degli addendi in gruppi da 16. 

(14)

Circuiti complementatori Principio:    1 ­ n2 = n1 + (­n2) 

l'opposto di un numero binario si ottiene effettuando il  complemento a 2 del numero stesso.

 

 uso una R.C. in grado di eseguire anche altre operazioni

(15)

  *   Per   S0   =   0   e   S1   =   0   si   ottiene   in   uscita   il  complemento a 1 del nibble in ingresso. 

 * Per S0 = 0 e S1 = 1 si ottiene in uscita lo stesso nibble  in ingresso. 

 * Per S0 = 1 e S1 = 0 si ottiene in uscita il nibble 1111b. 

  * Per S0 = 1 e S1 = 1 si ottiene in uscita il nibble  0000b. 

Il programma

Macchina di Von Neumann:   la memoria è destinata a  contenere   non   solo   i   dati   da   elaborare,   ma   anche   le  relative istruzioni di elaborazione; nel loro insieme i dati  da elaborare e le istruzioni di elaborazione formano un  cosiddetto programma:

area memoria dati in ingresso e in uscita ⇒ il blocco  dati del programma.

altra area della memoria alle istruzioni  ⇒   il blocco  codice del programma

Inizializziamo un apposito contatore caricando in esso  l'indirizzo   di   memoria   dove   si   trova   la   prima  istruzione   da   eseguire;   a   questo   punto   il   controllo  passa   alla   CPU   che   può   iniziare   la   fase   di  elaborazione del programma. 

(16)

  esempio: il contatore inizialmente contiene l'indirizzo  0000: 

Indirizzo     Contenuto 

  0000   Leggi il dato contenuto in 0005    0001   Leggi il dato contenuto in 0006    0002   Somma i due dati 

  0003      Scrivi il risultato in 0007    0004      Fine programma 

  0005      3500    0006      2300    0007    ­­­­ 

La   CPU   va   all'indirizzo   0000   dove   trova   una  istruzione che consiste nella lettura del dato (3500)  che si trova in memoria all'indirizzo 0005; mentre la  CPU   esegue   questa   istruzione,   il   contatore   viene  incrementato di 1 e il suo contenuto diventa quindi  0001.

La   CPU   va   all'indirizzo   0001   dove   trova   una  istruzione che consiste nella lettura del dato (2300)  che si trova in memoria all'indirizzo 0006; mentre la  CPU   esegue   questa   istruzione,   il   contatore   viene 

(17)

incrementato di 1 e il suo contenuto diventa quindi  0002. 

La   CPU   va   all'indirizzo   0002   dove   trova   una  istruzione che consiste nel calcolo della somma dei  due dati appena letti dalla memoria; mentre la CPU  esegue   questa   istruzione,   il   contatore   viene  incrementato di 1 e il suo contenuto diventa quindi  0003. 

La   CPU   va   all'indirizzo   0003   dove   trova   una  istruzione   che   consiste   nel   salvare   il   risultato   della  somma (5800) nella cella di memoria 0007;  la cella  0007 è inizialmente vuota ed è destinata a contenere il  risultato   delle   elaborazioni   effettuate   dalla   CPU. 

Mentre la CPU esegue questa istruzione, il contatore  viene  incrementato  di  1  e il  suo  contenuto  diventa  quindi 0004. 

La   CPU   va   all'indirizzo   0004   dove   trova   una  istruzione   che   segnala   la   fine   delle   elaborazioni;   a  questo   punto   la   CPU   entra   in   pausa   in   attesa   di  ulteriori richieste di elaborazione. 

    elevatissima   flessibilità!   le   varie   istruzioni   devono  appartenere   ad   un   insieme   riconosciuto   dalla   CPU; 

questo   insieme   viene   definito  set   di   istruzioni  della  CPU. 

(18)

! logica programmabile ⇒ poter svolgere praticamente  un numero illimitato di compiti differenti; 

ingrandimento   della   struttura   interna   della   CPU   Intel  Pentium   I:   integra   al   suo   interno   circa   3100000  transistor! 

(19)

principio di funzionamento di una CPU: 

ciascuna   istruzione   appartenente   al   programma   da  eseguire, viene codificata attraverso il relativo codice  macchina.

L'esecuzione   di   una   determinata   istruzione   consiste  nell'invio alla CPU della sequenza di segnali logici  che   codificano   l'istruzione   stessa;   questi   segnali  selezionano all'interno della CPU l'apposita R.C. che  esegue l'istruzione desiderata. 

l'unico   linguaggio   capito   dalla   CPU   è   il   codice  macchina

la CPU ha la necessità di comunicare con tutti gli altri  dispositivi   del   computer,   che   vengono   chiamati  periferiche: la più importante di tutte è la memoria 

Tutte   le   altre   periferiche   vengono   trattate   come  secondarie e vengono anche chiamate dispositivi di I/O  (input/output);   tra   i   vari   dispositivi   di   I/O   che  usualmente risultano collegati al computer si possono  citare:   tastiere,   mouse,   monitor,   stampanti,   plotter,  scanner, schede audio, schede video, joystick, hard disk,  lettori di floppy disk, lettori CD, etc. 

(20)

Esistono   dispositivi   accessibili,   sia   in   lettura   che   in  scrittura (memoria centrale, hard disk, floppy disk), altri  accessibili solo in lettura (mouse, joystick) e altri ancora  accessibili solo in scrittura (stampanti, plotter). 

­ Affinché sia possibile l'interscambio di dati, la CPU  viene connessa a tutte le periferiche attraverso una serie  di   linee   elettriche   che   nel   loro   insieme   formano   il  cosiddetto Data Bus (bus dei dati); su ciascuna linea  elettrica del Data Bus transita uno dei bit del dato da  trasferire. 

la CPU per poter dialogare con una periferica deve  conoscerne l'indirizzo!

nel   caso   della   memoria   le   varie   celle   vengono  identificate attraverso un indirizzo rappresentato da un  numero intero. 

per   tutte   le   altre   periferiche   si   utilizza   lo   stesso  procedimento;   ad   ogni   periferica   viene   associato  quindi un determinato numero intero che rappresenta  l'indirizzo che identifica in modo univoco la periferica  stessa. 

questo indirizzo deve essere rappresentato sotto forma  di segnali logici e cioè, sotto forma di codice binario. 

(21)

la CPU viene connessa a tutte le periferiche attraverso  una   serie   di   linee   elettriche   che   nel   loro   insieme  formano   il   cosiddetto   Address   Bus   (bus   degli  indirizzi); 

su ciascuna linea elettrica dell'Address Bus transita  uno   dei   bit   del   numero   binario   che   rappresenta  l'indirizzo a cui la CPU vuole accedere. 

Tutto il sistema viene coordinato da un apposito circuito  di controllo

la CPU viene connessa a tutte le periferiche attraverso  una   serie   di   linee   elettriche   che   nel   loro   insieme  formano il cosiddetto Control Bus (bus di controllo); sul  Control Bus transitano dei valori binari che codificano i  vari segnali di controllo necessari per il coordinamento  di tutto il sistema. 

(22)

l'ampiezza dell'Address Bus, il numero di linee da cui è  composto, determina la quantità massima di memoria  fisicamente indirizzabile dalla CPU. 

Complessivamente   quindi   possiamo   specificare   gli  indirizzi relativi a 2n celle di memoria distinte

 

(23)

CPU  Address Bus (bit)  Memoria fisica (byte)  8080   16   65536 

8086   20   1048576  80286  24   16777216  80386  32   4294967296  80486  32   4294967296  80586  32   4294967296 

anche i vari dispositivi di I/O vengono indirizzati con  la stessa tecnica utilizzata per la memoria centrale;

ad ogni dispositivo di I/O viene assegnato un numero  intero che ne rappresenta in modo univoco l'indirizzo. 

la CU fare in modo che l'indirizzo di una periferica  secondaria non venga confuso con l'indirizzo di una  cella della memoria centrale. 

Ciascuna   periferica   secondaria   è   dotata   di   una  memoria   propria   che   nella   gran   parte   dei   casi  ammonta a pochi byte; questa piccola area di memoria  viene chiamata porta hardware

Per   indirizzare   questa   categoria   di   periferiche  secondarie   la   CPU   utilizza   una   parte   delle   linee  dell'Address Bus;  

(24)

nell vecchie CPU come l'8086 venivano utilizzate solo  le prime 8 linee dell'Address Bus (da A0 a A7) con la  possibilità quindi di gestire sino a 28=256 periferiche  differenti.   A   partire   dalle   CPU   80386   vengono,  invece, utilizzate le prime 16 linee dell'Address Bus  (da A0 a A15); in questo caso è possibile gestire sino  a 216=65536 periferiche differenti

L'ampiezza del Data Bus e cioè, il numero di linee da  cui è composto, determina l'ampiezza massima in bit  che   possono   avere   i   dati   gestiti   via   hardware   dalla  CPU; osserviamo, infatti, che su un Data Bus formato,  ad   esempio,   da   16   linee   possono   transitare   numeri  binari formati al massimo da 16 bit.

l'ampiezza   del   Data   Bus   definisce   la   cosiddetta  architettura della CPU; una CPU con architettura a n  bit (cioè con Data Bus a n linee) è dotata di R.C. in  grado   di   eseguire   via   hardware   operazioni   logico  aritmetiche su numeri binari a n bit. 

influisce sulle caratteristiche dei vari tipi di dati che  possiamo simulare via hardware con la CPU;

con n bit possiamo rappresentare,  tutti i numeri interi  senza segno compresi tra: 0 e 2n­1     e tutti i numeri  interi con segno compresi tra:     ­(2n­1) e +(2n­1­1) 

(25)

CPU    Data Bus(bit)   Numeri Senza Segno   Numeri Con Segno  min.  max. 

8080      8    0   255         ­128   +127 

8086     16    0   65535         ­32768   +32767 

80286   16    0   65535          ­32768   +32767 

80386   32    0   4294967295         ­2147483648   +2147483647  80486   32    0   4294967295          ­2147483648   +2147483647 

80586   64    0 18446744073709551615    ­9223372036854775808 +9223372036854775807 

  

notevole   aumento   della   complessità   circuitale:   una  CPU con Data Bus a n linee deve essere in grado di  manipolare numeri binari a n bit, eseguire operazioni  logico aritmetiche su numeri binari a n bit;

aumentano   in   modo   considerevole   le   porte   logiche  delle R.C. che eseguono queste operazioni.

la   CPU   AMD   Athlon,   ad   esempio,   integra   al   suo  interno circa 22000000 di transistor! 

(26)

la CPU Intel 8080

(27)

esempio: l'8080 è una CPU con architettura a 8 bit e  dispone di un Address Bus a 16 linee con la possibilità  quindi di indirizzare fino a 216=65536 byte di RAM  fisica;  Data Bus (da D0 a D7) ­ Address Bus (da A0 a  A15). 

chip 8228 (System Control)  ⇒ presenza del Control  Bus a 5 linee: su queste 5 linee transitano i segnali di  controllo   chiamati   INTA,   MEMR,   MEMW,   I/OR   e  I/OW. 

CLK1  e  CLK2  vengono  generati  dal   chip  8224  ed  hanno la funzione di segnali di riferimento

CLKe   rappresenta il cosiddetto intervallo di tempo  elementare della CPU; si tratta cioè dell'intervallo di  tempo minimo, necessario alla CPU per eseguire le  operazioni hardware di base come l'abilitazione della  memoria, l'abilitazione di un bus etc

l'8086 ha una frequenza di clock di circa 5 MHz ed  esegue una moltiplicazione tra numeri interi in oltre  100 cicli di clock pari a: 

 100 / 5000000 = 0.00002 secondi = 20000 nanosecondi   L'80486 ha una frequenza di clock di 33 MHz e per la  stessa operazione richiede poco più di 10 cicli di clock: 

10 / 33000000 = 0.0000003 secondi = 300 nanosecondi 

(28)

MEMORIA

La CPU vede la memoria di lavoro come un vettore di  celle, cioè come una sequenza di celle consecutive e  contigue; ciascuna cella ha una ampiezza pari a 8 bit

ogni cella viene individuata univocamente dal relativo  indice che coincide esattamente con l'indirizzo fisico  della cella stessa; 

se la CPU vuole accedere ad una di queste celle, deve  specificare il relativo indirizzo che viene poi caricato  sull'Address Bus

le memorie di lavoro vengono organizzate sotto forma  di matrice di celle

l'organizzazione   a   matrice   permette   alla   CPU   di  accedere a qualsiasi cella di memoria in un intervallo  di tempo costante; 

la CPU non deve fare altro che specificare l'indice di  riga e di colonna della cella 

(29)

es:   suddividiamo   le   5   linee   dell'Address   Bus   in   due  gruppi;   log28=3 linee (A2, A3 e A4), e log24=2 linee  (A0 e A1). 

La parte di indirizzo contenuta nelle linee A2, A3 e A4,  raggiunge il circuito chiamato Decodifica Riga; questo  circuito provvede a ricavare l'indice di riga della cella da  abilitare. La parte di indirizzo contenuta nelle linee A0 e  A1, raggiunge il circuito chiamato Decodifica Colonna;

il Data Bus viene connesso alla cella abilitata rendendo  così possibile il trasferimento dati tra la cella stessa e la  CPU

(30)

Reti sequenziali

­ circuito logico capace di ricordare gli stati assunti in  precedenza ⇒ retroazione

la porta NAND produce in uscita un livello logico 0  solo quando tutti gli ingressi sono a livello logico 1; in  tutti gli altri casi, si otterrà in uscita un livello logico 1. 

ingresso   S=1,   R=1,     Q   e   Q'   assumono   una  configurazione   del   tutto   casuale:   le   due   uniche  possibilità (stabili) sono Q=0, Q'=1, oppure Q=1, Q'=0.

 

Partiamo   da   R=1,   S=1   e   tenendo   R=1   portiamo  l'ingresso S a 0;   la porta A, avendo un ingresso a 0,  produrrà in uscita un 1. La porta B  produrrà in uscita 0; 

a questo punto, qualsiasi modifica apportata a S (purché  R resti a 1) non modificherà l'uscita Q che resterà1. 

(31)

il FF­SR memorizza un bit che vale 1 ed è disponibile  sull'uscita   Q;   questa   situazione   permane   inalterata  finché R continua a valere 1. 

R = 0, S=1:  la porta B produrrà in uscita 1, la porta A  produrrà in uscita 0; 

finché   S   rimane   a   1   qualsiasi   modifica   apportata  all'ingresso   R   non   altera   l'uscita   Q   che   continuerà   a  valere 0. 

il FF­SR memorizza un bit che vale 0 ed è disponibile  sull'uscita Q. 

il FF­SR rappresenta una unità elementare di memoria  capace di memorizzare un solo bit; infatti: 

 * Attraverso l'ingresso S è possibile scrivere un 1 (set)  nel FF­SR

Attraverso   l'ingresso   R   è   possibile   scrivere   uno   0  (reset) nel FF­SR

Attraverso   l'uscita   Q   è   possibile   leggere   il   bit  memorizzato nel FF­SR.

(32)

Il flip­flop data ( FF­D)

finché l'ingresso CKI è a 0, la porta AND a sinistra  produrrà   in   uscita   un   livello   logico   0   che   andrà   a  raggiungere entrambe le porte NAND  A e B, che a loro  volta produrranno in uscita un livello logico 1; le due  porte   NAND   A'   e   B'   costituiscono   un   FF­SR   che   si  troverà   di   conseguenza   nella   configurazione   iniziale  S=1, R=1. Partendo da questa configurazione iniziale e  abilitando   l'ingresso   CKI,   il   segnale   di   clock   può  giungere alle due porte A e B e in un ciclo completo il  bit che arriva dall'ingresso D verrà copiato sull'uscita Q; 

riportando ora a livello logico 0 l'ingresso CKI, il bit  appena   copiato   sull'uscita   Q   resterà   "imprigionato" 

indipendentemente   dal   valore   dell'ingresso   D   (per  questo motivo il FF­D viene anche chiamato latch, che  in inglese significa lucchetto). 

(33)

Registri paralleli 

in fase di scrittura, i bit arrivano in parallelo (e tutti  nello stesso istante) sugli ingressi D, mentre in fase di  lettura, i bit vengono letti sempre in parallelo (e tutti  nello stesso istante) dalle uscite Q. 

basta inviare un solo ciclo di clock per copiare in un  colpo solo i 4 bit sulle rispettive uscite. 

Per leggere il dato appena memorizzato, basta leggere  direttamente le 4 uscite Q3, Q2, Q1, Q0; 

la lettura avviene senza distruggere il dato stesso. 

si hanno n linee di ingresso e n linee di uscita

(34)

Memorie RAM statiche (SRAM) 

se le varie celle vengono realizzate con i FF, otteniamo  una   memoria   di   lavoro   organizzata   sotto   forma   di  matrice di registri

(35)

le   informazioni   memorizzate   in   una   RAM   di   questo  tipo,   si   conservano   inalterate   senza   la   necessità   di  ulteriori   interventi   esterni   (Power   On!!)  ⇒  conserva  staticamente le informazioni ­ SRAM. 

tempi   di   accesso   estremamente   ridotti,   mediamente  dell'ordine   di   una   decina   di   nanosecondi   (1  nanosecondo   =   un   miliardesimo   di   secondo   =   10­9  secondi)

questo aspetto è fondamentale per le prestazioni del  computer in quanto buona parte del lavoro svolto dalla  CPU consiste proprio nell'accedere alla memoria.

necessità di  realizzare memorie di  lavoro di grosse  dimensioni! (centinaia di Mb): circuiti eccessivamente  complessi, con centinaia di milioni di porte logiche,  centinaia di milioni di linee di collegamento, elevato  ingombro, costo eccessivo, etc. 

tutti i moderni PC sono dotati di memoria centrale di  tipo dinamico

(36)

Memorie RAM dinamiche (DRAM)   

condensatore: possiamo associare il livello logico 0 al  condensatore   scarico   (0V)   e   il   livello   logico   1   al  condensatore carico

memorie di lavoro di notevoli dimensioni

elevatissima densità di integrazione 

costo di produzione estremamente ridotto 

organizzazione interna: le DRAM vengono strutturate  sotto   forma   di   matrice   rettangolare   di   celle  esattamente come avviene per le SRAM.

 

a   causa   degli   inevitabili   fenomeni   di   dispersione  elettrica, un condensatore si scarica nel giro di poche  decine di millisecondi.

tutte le memorie DRAM necessitano di un apposito  dispositivo   esterno   che   provvede   ad   effettuare  periodicamente una operazione refreshing delle celle 

le   operazioni   di   carica   e   scarica   dei   condensatori  richiedono   tempi   relativamente   elevati:   le   DRAM  presentano mediamente tempi di accesso pari a 60, 70  nanosecondi (da confrontare con CPU)

(37)

Memorie ROM

Read Only Memory (memoria a sola lettura): memorie  accessibili solo in lettura per conservare dati e istruzioni  la   cui   modifica   potrebbe   compromettere   il  funzionamento del computer.

 In   realtà   la   memoria   ROM   non   contiene   nessuna  informazione   al   suo   interno:   queste   informazioni   si  vengono a creare automaticamente nel momento in cui  la ROM viene alimentata e indirizzata. 

PROM o Programmable ROM (ROM programmabili): 

sono molto simili alle ROM ma si differenziano per il  fatto di contenere al loro interno dei microfusibili (uno  per   ogni   transistor):   attraverso   una   apposita  apparecchiatura è possibile far bruciare alcuni di questi  microfusibili in modo da impostare la struttura interna  della PROM a seconda delle proprie esigenze. 

le PROM possono essere programmate una sola volta

EPROM   o   Erasable   Programmable   ROM   (ROM  programmabili e cancellabili). 

(38)

NOVRAM o Non Volatile RAM (RAM non volatili): 

vengono   ottenute   associando   una   RAM   con   una  EPROM aventi la stessa capacità di memorizzazione in  byte.   In   fase   operativa,   tutte   le   operazioni   di   I/O  vengono   effettuate   ad   alta   velocità   sulla   RAM;   nel  momento in cui si vuole spegnere l'apparecchiatura su  cui è installata la NOVRAM, tutto il contenuto della  RAM viene copiato in modo permanente nella EPROM. 

(39)

Architettura generale della CPU

La struttura interna di una CPU varia enormemente da  modello a modello; in generale però alcune parti sono  sempre presenti secondo lo schema a blocchi:

(40)

lo scambio di dati tra i vari blocchi della CPU avviene  attraverso un apposito bus chiamato Internal Bus (bus  interno),   dotato   di   un   numero   di   linee   che   nel   caso  generale rispecchia l'architettura della stessa CPU 

La ALU mette a disposizione una serie di operazioni  basilari:   addizione,   sottrazione,   moltiplicazione,  divisione, shift a destra e a sinistra, complementazione  dei bit, operatori logici AND, OR, EX­OR ...

La ALU deve essere in grado di operare su dati la cui  dimensione in bit rispecchia l'architettura della CPU; 

La ALU non è dotata di memoria propria per cui deve  servirsi   di   apposite   memorie   esterne:   Registri  temporanei, Registri generali e Flags (registro dei flags). 

I registri temporanei  hanno il compito di memorizzare  temporaneamente   i   dati   (operandi)   sui   quali   la   ALU  deve   eseguire   una   determinata   operazione   logico  aritmetica;   ogni   volta   che   arrivano   nuovi   dati   da  elaborare, il vecchio contenuto dei registri temporanei  viene sovrascritto. 

(41)

I  registri   generali  rappresentano   una   vera   e   propria  memoria RAM interna velocissima, che viene utilizzata  per svolgere svariate funzioni: contengono dati in arrivo  dalle periferiche (cioè dalla RAM o dai dispositivi di  I/O), dati destinati alle periferiche, risultati di operazioni  appena eseguite dalla ALU...

la ALU è collegata direttamente ai registri generali della  CPU che hanno tempi di accesso nettamente inferiori  rispetto alle locazioni della RAM

tutte   le   operazioni   che   coinvolgono   dati   presenti   nei  registri,   vengono   svolte   dalla   ALU   molto   più  velocemente   rispetto   al   caso   in   cui   i   dati   si   trovino,  invece, in RAM. 

alcuni   linguaggi   di   programmazione   di   alto   livello  danno   la   possibilità   al   programmatore   di   richiedere  l'inserimento   di   determinati   dati   del   programma,  direttamente nei registri della CPU; il linguaggio C, ad  esempio, mette a disposizione la parola chiave register  che applicata ad un dato (intero), indica al compilatore  C di inserire, se è possibile, quel dato in un registro  libero della CPU

(42)

la Control Logic o CL (logica di controllo) ha il compito  di gestire tutto il funzionamento della CPU:

stabilisce   quale   dei   dispositivi     deve   ricevere   il  controllo, che compito deve eseguire questo dispositivo,  quali dispositivi devono essere, invece, inibiti

l'8086: registri interni (tutti a 16 bit) 

(43)

CS è destinato a contenere la componente Seg del Code  Segment;

DS è destinato a contenere la componente Seg del Data  Segment;

SS   è   destinato   a   contenere   la   componente   Seg   dello  Stack Segment. 

ES permette di gestire la componente Seg di un secondo  Data   Segment   (possibilità   di   gestire  contemporaneamente due Data Segment distinti):  

I   registri   speciali   sono   tutti   registri   puntatori;   il   loro  scopo   quindi   è   quello   di   gestire   componenti   Offset  relative ai vari segmenti di programma. 

IP   fa   coppia   con   CS:   è   destinato   a   contenere   la  componente   Offset   dell'indirizzo   della   prossima  istruzione da eseguire

Il   compito   di   inizializzare   la   coppia   CS:IP   spetta   al  linker

In fase di esecuzione di un programma, la gestione di  CS:IP   passa   alla   CPU   che   provvede   ad   aggiornare  istante per istante IP (e se necessario anche CS) 

(44)

SP   e   BP   fanno   coppia   normalmente   con   SS   e   sono  quindi destinati a contenere componenti Offset relative  allo Stack Segment del programma. SP rappresenta il  TOS dello stack. 

Il   registro   BP   può   essere   utilizzato   per   muoversi  all'interno dello stack: nei linguaggi di alto livello ha il  compito di indirizzare le variabili locali e la lista dei  parametri dei sottoprogrammi

Registri generali: AX, BX, CX e DX

contengono   dati   che   devono   essere   velocemente  elaborati dalla ALU

 AX : accumulatore, viene utilizzato dalla CPU come  registro predefinito per numerose operazioni:

moltiplicazioni, divisioni, comparazioni, etc. 

Un altro impiego predefinito di AX è quello di registro  destinazione o sorgente per lo scambio di dati con le  periferiche di I/O;

BX  può   essere   usato,   sia  come  registro  generale,  sia  come registro puntatore

(45)

CX   viene   chiamato   contatore   in   quanto   la   CPU   lo  utilizza in diverse istruzioni come registro predefinito  per effettuare dei conteggi

DX, viene chiamato registro dati in quanto il suo ruolo  predefinito è quello di contenere dati da impiegare come  operandi in varie operazioni logico aritmetiche; questo  registro viene anche impiegato per contenere l'indirizzo  di una porta hardware che deve comunicare con la CPU. 

(46)

RAM         ROM

la ram contiene anche il MAR e il MDR:

Memory   Address   Register:  contiene   l'indirizzo   della  cella   da   cui   leggere   o   su   cui   scrivere   e   lo   passa   al  decoder

Memory   Data   Register:  contiene   temporaneamente   i  dati – stessa dimensione delle celle di memoria

FASE DI SCRITTURA

si trasferisce il dato in MDR e l'indirizzo in MAR

si attiva la scrittura 

si scrive al segnale di CLOCK

FASE DI LETTURA

si trasferisce in MAR l'indirizzo della cella

si attiva la lettura

si trasferisce il dato in MDR al CLOCK 

(47)

L' unita' di controllo gestisce l'hardware:

trasmette   i   segnali   di   controllo   a   tutte   le   altre  componenti   permettendo   lo   scambio   di   dati   e   di  istruzioni. 

Essa contiene:

Il   Program   Counter:   tiene   il   segno   della   posizione  dell'istruzione da prelvare

Il Registro di Istruzione (IR): prende il dato da MDR e  separa il Codice Operativo (in linguaggio macchina)  dall' indirizzo dell'operando. 

Il Decodificatore delle istruzioni: controlla il codice  operativo   e   determina   le   istruzioni   da   eseguire.   Ha  tante uscite quanti sono i tipi di istruzione. Invia il  segnale al generatore dei segnali di controllo 

Il   Generatore   dei   segnali   di   controllo:   in   base  all'istruzione ricevuta emette i corrispondenti segnali

(48)

SCHEMA DI HARD DISK

(49)

Tracce :: Settori :: Cilindri

settore: 512 byte + preambolo + ECC tracce: 800­2000/cm larghe 5­10 micron

Prestazioni: seek time (radiale) 5­15 ms, di rotazione 3600­5400­7200­10800 RPM :: 4­8ms

Trasferimento: 5­20 MB/s << del seek time 

Riferimenti

Documenti correlati

o istruzioni da memoria a registro, che permettono il passaggio delle parole dalla memoria ai registri della CPU, dove possono essere usate come input dell’ALU, quali operandi

• Essendo (allora) la memoria di controllo molto più veloce della memoria centrale, portare funzionalità nella prima avrebbe migliorato le prestazioni della.. Calcolatori

Forma Canonica SP - Ad un primo livello le variabili sono poste all’ingresso di porte AND, realizzando il prodotto, e le uscite delle porte AND sono poste all’ingresso di un porta

Collega la stazione Metro C Lodi a piazza Risorgimento, ed è attiva tutti i giorni, festivi compresi, dalle 5.30 alle 24.00..

ORGANIZZAZIONE (CENTRALE E PERIFE- RICA) E FUNZIONAMENTO DEL MINISTERO DELLA SALUTE, NONCHÉ DEGLI ENTI, ISTITUTI ED AGENZIE FACENTI PARTE DEL SERVIZIO SANITARIO NAZIONALE..

I collegamenti e l’installazione vanno effettuati da personale qualificato ed eseguiti a norma EN (o equivalente di Stato membro) per le installazioni in Unione Europea, o in base

Monitoraggio costante del funzionamento dei sistemi e degli strumenti di TIC per ridurre al minimo l'impatto dei rischi tramite l’adozione di politiche, procedure, protocolli e

3.  Non deve possedere una tessera socio, deve essere una cliente da almeno 5 anni 4.  Deve essere un cliente da almeno 5 anni e non deve aver compiuto ancora 30 anni 5.  Deve