![]() | ![]() |
|
|
INTRODUZIONE ALL'ARCHITETTURA DEGLI ELABORATORI
Appunti di lezioni
Che cos'è
l'informatica?
In inglese: "Computer Science"
-È la scienza e tecnica dei calcolatori?
In realtà il calcolatore è solo uno strumento per operare concretamente e realizzare applicazioni.
-È una delle applicazioni dei calcolatori?
Non è solo la scienza per la risoluzione dei problemi di calcolo scientifico o la scienza per i sistemi informatici aziendali.
-È la scienza dell'informazione?
Definizione troppo generale o generica.
Anche l'attività giornalistica è scienza dell'informazione.
I° definizione: è la scienza della rappresentazione e dell'elaborazione delle informazioni.
Soddisfa i costruttori di calcolatori
Soddisfa i costruttori di applicazioni
II° definizione: Association for Computing Machinery (ACM).
È lo studio sistematico degli algoritmi che descrivono e trasformano le informazioni: la loro teoria, analisi, sviluppo, efficienza, realizzazione ed applicazione.
Algoritmo: precisa sequenza di istruzioni od operazioni, comprensibili ed eseguibili da uno strumento automatico.
La definizione mette in evidenza l'attività di progettazione e di sviluppo indipendente dallo strumento calcolatore; esso interviene in quanto consente di gestire velocemente una grande quantità di informazioni.
DIVENTA CENTRALE NELL'INFORMATICA IL CONCETTO DI ALGORITMO.
Intuitivamente un algoritmo è una ricetta (successione di passi o istruzioni) per risolvere un problema o realizzare un compito.
ESEMPI: Istruzioni per il montaggio di un elettrodomestico, somma di due numeri in colonna, prelievo di denaro con il Bancomat, determinazione del massimo comune divisore tra due interi positivi..
Questi passi (o istruzioni) devono essere elementari (comprensibili) per un esecutore.
Se le istruzioni per il montaggio di un elettrodomestico sono in inglese e l'acquirente non sa l'inglese, l'algoritmo non è utilizzabile.
Il calcolatore come esecutore di algoritmi: vogliamo costruire algoritmi eseguibili da un calcolatore e quindi i passi o istruzioni devono essere elementari per un calcolatore.
Per sapere quali sono le istruzioni che un calcolatore è in grado di eseguire, occorre conoscere gli elementi principali d 121b17b ella struttura di un elaboratore.
Elaboratore digitale: è una macchina usata per
Collezionare
Analizzare
Elaborare
precisamente e velocemente una vasta quantità di informazioni.
È in grado di eseguire ad altissima velocità sequenze di operazioni lunghe, complesse e ripetitive.
La sua attività è una attività di esecutore preciso e veloce di una serie di ordini.
Principalmente ha due funzioni:
Trasmissione, trasformazione e conservazione di informazioni codificate in modo comprensibile alla macchina.
Risoluzione di problemi di tipo deterministico.
Dati: figure, impulsi, numeri, caratteri. che sintetizzano una situazione reale;
Istruzioni: comandi che suggeriscono al calcolatore l'azione immediata da eseguire.
Tutte le informazioni sono codificate in forma ultima sempre come sequenze di numeri binari.
Il calcolatore realizza ogni elaborazione richiesta sui dati per reazione a una precisa successione di istruzioni detta PROGRAMMA.
Ogni calcolatore comprende uno specifico e limitato insieme di istruzioni.
Ogni problema deve essere riformulato in modo da essere comprensibile alla macchina come successione di operazioni o passi che il calcolatore è in grado di eseguire (Algoritmo ).
Ogni algoritmo deve essere codificato mediante un linguaggio di programmazione in programma.
Programma: successione di istruzioni necessarie a produrre le informazioni desiderate dall'utente (Risultati) a partire da una serie di informazioni fornite inizialmente (Dati).
programma
Linguaggio di programmazione
risultati
dati
Tecniche di programmazione
insieme dei criteri da seguire per progettare e costruire un programma sfruttando al meglio le risorse di un elaboratore.
Pertanto un calcolatore è una macchina in grado di
ricevere dall'esterno i DATI di un problema e il programma, ossia le ISTRUZIONI per risolverlo;
memorizzare le informazioni (dati ed istruzioni);
eseguire le istruzioni, elaborando operazioni aritmetiche e logiche sui dati;
fornire in uscita i RISULTATI dell'elaborazione
Queste funzioni sono in corrispondenza biunivoca con le parti che costituiscono un sistema informatico.
Un sistema informatico è un oggetto complesso costituito da molte parti che interagiscono tra di loro.
ARCHITETTURA DI UN SISTEMA INFORMATICO:
individuazione delle varie parti
principi generali di funzionamento
interazioni tra le varie parti
Un sistema di elaborazione dati è costituito da:
( I° livello di decomposizione di un sistema informatico )
Hardware: ("ferraglia") struttura fisica di un calcolatore (dispositivi meccanici, componenti elettroniche.)
Software: totalità di programmi atti alla gestione del calcolatore, allo svolgimento delle sue funzioni e alla risoluzione di tutti i problemi non affrontati direttamente dall'hardware.
Software di base: sistemi operativi, compilatori, editori.
Software applicativo: programmi scritti dall'utente, librerie, pacchetti applicativi.
Classificazione utile ma non sempre molto evidente
Firmware: è al confine tra hardware e software; sono MICROPROGRAMMI scritti su memorie permanenti direttamente dai costruttori che agiscono direttamente sullo strato hardware (autotest della macchina, gestione delle periferiche, nucleo di caricamento del sistema operativo - bootstrap-.).
I° livello di decomposizione di un sistema Informativo:
Firmware
HW
Hardware
Costituito da una serie di elementi funzionali presenti in ogni elaboratore anche se con caratteristiche diverse ed in numero diverso.
Unità di elaborazione o processore (CPU: Central Processing Unit ): svolge le elaborazioni e coordina il trasferimento dei dati all'interno del sistema: ESEGUE I PROGRAMMI, ossia interpreta ed esegue le varie istruzioni di cui è costituito il programma.
Memoria principale o centrale (RAM: random access memory): memorizza i dati ed i programmi; ha capacità limitata ed è volatile (perde il suo contenuto in assenza di alimentazione) ma l'accesso all'informazione è rapido.
Memoria secondaria (o memoria di massa): utilizzata per memorizzare grandi quantità di dati e programmi. L'informazione è persistente ma l'accesso è meno rapido.
Unità di ingresso/uscita ( periferiche): utilizzate per far comunicare il calcolatore con l'esterno (tastiere, video, stampanti.).
Bus di sistema: collega tutti gli elementi funzionali e consente lo scambio dei dati.
CPU, memoria e dispositivi sono realizzati mediante TECNOLOGIA DIGITALE
Dati ed istruzioni sono codificati mediante sequenze di impulsi elettrici (bit: binary digit)
00010010001111.
Le operazioni che la CPU esegue sono in aritmetica binaria.
Le operazioni elementari sono semplici:
Somma
Differenza
Scorrimento
L'utilizzo della sola struttura fisica imporrebbe all'utente di tradurre i propri comandi in sequenze di bit ( linguaggio macchina ).
SOFTWARE
È un insieme complesso di programmi.
Si può pensare ad una organizzazione a strati, ciascuno con funzionalità di livello più alto rispetto a quelli sottostanti (macchina virtuale).
Software di comunicazione
SISTEMA OPERATIVO
Insieme di programmi che operano direttamente al di sopra di Hardware e Firmware e consentono all'utente l'utilizzo di tutte le funzionalità dell'elaboratore ( generalmente venduto dal costruttore dell'elaboratore ).
Permette un utilizzo ottimizzato ed amichevole della macchina, controllando tutte le risorse HW e SW.
Gestisce le risorse disponibili
Interpreta ed esegue comandi elementari
Manda in esecuzione i programmi, stampa e legge i dati e visualizza le informazioni su video.
Organizza e gestisce la memoria di massa e gestisce la memoria centrale.
Gestisce la multiutenza, distribuendo le risorse disponibili ai vari utenti.. (sistema multiutente)
In pratica un utente "vede" la macchina solo tramite il sistema operativo.
Attraverso il sistema operativo il livello di interazione utente - elaboratore viene elevato:
Senza S.O. : sequenze di bit.
Con S.O. : parole chiave ( comandi), programmi, dati.
Sono evoluti nel corso degli anni (interfacce grafiche Windows, .).
Il S.O traduce le richieste dell'utente in opportune sequenze di impulsi da trasmettere all'HW e viceversa:
Comando |
Risultato |
Ogni operazione di accesso a risorse della macchina, richiesta implicitamente dal comando di un utente, viene esplicitata dal S.O. (accesso a memoria centrale, secondaria, I/O verso video, tastiera.).
Classificazione in base al massimo numero di utenti collegati al sistema
Monoutente
Multiutente
Classificazione in base al massimo numero di programmi eseguibili contemporaneamente dalla macchina astratta
Monoprogrammato
Multiprogrammato
Es.
DOS monoutente, monoprogrammato
WINDOWS 95 monoutente, multiprogrammato
UNIX, WINDOWS NT multiutente, multiprogrammato
Ambiente di programmazione: insieme di programmi che facilitano la scrittura di programmi applicativi e la verifica di correttezza.
Editor: serve per la costruzione di file di testo; in particolare servono per costruire i programmi sorgente scritti in un linguaggio di programmazione ad alto livello.
Compilatore traduttore di un programma sorgente ad alto livello in un programma oggetto scritto in linguaggio macchina direttamente eseguibile dal calcolatore.
Linker: (collegatore o correlatore): moduli compilati separatamente collegati per formare un unico programma eseguibile.
Debugger (scopritore di bachi, o errori): serve per scoprire ed eliminare gli errori presenti durante l'esecuzione di un programma.
Interprete: traduce ed esegue direttamente ciascuna istruzione del programma sorgente istruzione per istruzione.
PROGRAMMI APPLICATIVI
Scritti per risolvere problemi specifici usando linguaggi di programmazione ad alto livello.
Risentono in misura ridotta o nulla della architettura dell'ambiente sottostante ( PORTABILITA').
Sono TRASPORTABILI da un sistema informatico all'altro senza difficoltà.
PACCHETTI SW (Software personale e di produttività)
Word processing (WP): trattamento di testi, dalla battitura alla correzione, all'impaginazione e alla stampa (MICROSOFT WORD)
Foglio elettronico: elaborazione di dati, soprattutto di tipo numerico e loro organizzazione in tabelle e grafici (MICROSOFT EXCEL)
Gestore di dati e archivi (database): archiviare e gestire informazioni in modo efficiente e razionale (MICROSOFT ACCESS)
Pacchetti grafici ( Computer Aided Design CAD)
Pacchetti applicativi aziendali: elaborazione fatture, gestione magazzino.
Librerie scientifiche matematiche e statistiche.
SISTEMI INFORMATICI O DI CALCOLO
Calcolatori piccoli
Calcolatori medi
Calcolatori grandi
Calcolatori piccoli
(monoutenza, potenza di elaborazione medio bassa).
PC (personal computer): calcolatore a basso costo prodotto per la prima volta dall'IBM nel 1981. È in grado di funzionare autonomamente e di eseguire sequenzialmente le attività.
Modello Desktop ha dimensioni tali da stare in una scrivania; costituito da un BOX con CPU, memoria centrale e di massa, collegato a tastiera e video.
Memorie di massa: disco fisso inamovibile e molto capace (hard-disk: HD) e dischetti rimovibili con capacità ridotta (floppy-disk: FD) o lettori di CD. Informazioni organizzate in ARCHIVI o file con un nome.
Modello NOTEBOOK dimensioni di un libro o quaderno, con le stesse caratteristiche di un desktop ma non espandibile; alimentato con corrente e batterie
Home Computer: privi di HD, memoria limitata, adatti per videogiochi.
Microcalcolatore: calcolatore completo costruito attorno a un microprocessore cablato su un solo chip; montati su automobili, elettrodomestici, sistemi di controllo di impianti e di dispositivi (sistemi embedded: interagiscono con una macchina e non un utente).
Calcolatori medi: buona potenza di elaborazione, memorie RAM e cache di medio alte dimensioni predisposti per la multiutenza.
WORKSTATION ( stazione di lavoro): usata per applicazioni professionali con processore di elevate prestazioni.
Calcolo scientifico con grande velocità di elaborazione.
Applicazioni grafiche (CAD: Computer Aided Design: necessita di software adatto per la progettazione grafica) richiede buona risoluzione grafica e molta memoria.
MINICALCOLATORI: multiutenza, memorie di massa capaci, buona potenza di elaborazione, con sistemi operativi sofisticati.
Calcolatori Grandi: possono avere uno o più processori, molta potenza di calcolo e grande capacità di memoria (RAM e di massa ); gestiscono centinaia di utenti.
MAINFRAME: gestisce grandi archivi di dati e reti.
CALCOLATORI MULTIPROCESSORI: con una memoria comune (shared) o con memoria distribuita tra i vari processori. Adatti per l'elaborazione scientifica di grandi dimensioni. Necessita di SW specifico. Consentono l'elaborazione di più programmi o all'interno di un programma di più istruzioni simultaneamente.
CRAY Y-MP; CRAY C90; . shared memory
La capacità di elaborazione di un sistema informatico può crescere aumentando la potenza di un singolo elaboratore , ma la crescita della potenza di elaborazione si può ottenere anche connettendo insieme vari calcolatori in una rete.
Reti di calcolatori: si connettono insieme più calcolatori per aumentare la capacità di elaborazione.
Reti locali (LAN): connettono elaboratori fisicamente vicini (nello stesso ufficio o stabilimento). Si condividono alcuni servizi (stampanti, dischi.).
Trasmissione veloce
Reti geografiche (WAN): Collegano elaboratori medio grandi che sono a grande distanza tra loro. Servono per attivare e controllare l'esecuzione di programmi remoti (applicazioni distribuite).
Trasmissione più lenta
Calcolatori di grandi dimensioni (host-computer) connessi in rete geografica. Alcuni sono connessi in rete locale.
ARCHITETTURA DI UN CALCOLATORE
Organizzata secondo il modello della macchina di Von Neumann (1945-Institute for Advanced Study di Princeton).
È costituita da 4 elementi funzionali fondamentali:
Unità di elaborazione o unità centrale (CPU)
Memoria centrale o primaria
Periferiche di ingresso / uscita (input/output)
Bus di sistema
BUS DI SISTEMA
CPU: contiene i dispositivi elettronici in grado di acquisire, interpretare ed eseguire le istruzioni del programma ("cervello" che controlla l'elaboratore). Si distingue UC (unità di controllo) e ALU (unità logico aritmetica).
Memoria: contiene le informazioni necessarie ad eseguire un programma (dati ed istruzioni) .
Unità di I/O ( input/output): consentono lo scambio delle informazioni tra l'elaboratore ed il mondo esterno, in ingresso (dall'esterno al calcolatore), in uscita (dal calcolatore all'esterno); fanno parte del calcolatore solo le interfacce di collegamento, mentre i dispositivi sono esterni. MEMORIE DI MASSA.
Bus di sistema: collega gli elementi funzionali; fornisce il supporto fisico per la trasmissione dei dati tra i vari elementi.
I componenti logici di un elaboratore sono in corrispondenza biunivoca con le fasi di risoluzione di un problema.
Dispositivi di ingresso (input): permettono l'ingresso delle informazioni dall'esterno all'interno di un calcolatore (dati e istruzioni).
I dati vengono immagazzinati in memoria, che è un dispositivo dove stanno anche eventuali dati generati durante l'elaborazione.
L'Unità Centrale o Processore esegue l'elaborazione vera e propria.
I risultati devono essere manifestati scorrendoli all'esterno mediante l'unità di uscita o di Output.
FUNZIONAMENTO DELLA MACCHINA DI VON NEUMANN
L'unità di elaborazione coordina le varie attività. Estrae dalla memoria, decodifica ed esegue le istruzioni.
Le istruzioni comportano manipolazioni di dati (operazioni aritmetiche e logiche) oppure trasferimento di informazioni tra una unità e l'altra.
I trasferimenti avvengono sul bus di sistema che in funzione dell'operazione da fare, abilita il collegamento logico tra due unità. Il collegamento fisico è sempre presente.
Le fasi di elaborazione si succedono in modo sincrono rispetto alla scansione temporale impostata dall'orologio di sistema (CLOCK) che sta nell'unità di elaborazione e stabilisce le funzioni da fare da parte sua o di altre unità nell'intervallo di tempo.
Il modello di Von Neumann è strettamente SEQUENZIALE. Ad esso si ispira la maggior parte dei calcolatori esistenti. Ogni evoluzione prevede di introdurre una qualche forma di parallelismo, cioè di esecuzione contemporanea delle attività elaborative.
Unità di ingresso/uscita: Preposte alla comunicazione con il mondo esterno (mezzi periferici).
Mediante i mezzi periferici di ingresso, l'utente trasmette al calcolatore i dati da elaborare e le istruzioni che determinano come operare su di essi, che a questo livello vengono recepite come dati.
Tastiera (Keyboard): più semplice dispositivo di input.
Altre unità contraddistinte da funzioni distinte oltre che da velocità distinte: mouse, lettori di dischi, nastri, convertitori analogici digitali, tavolette digitalizzatrici, scanner.
I mezzi periferici di uscita servono a visualizzare i dati elaborati (risultati) in forma in forma permanente (hard copy) o volatile (soft copy).
Hard copy: stampante, dischi, nastri , plotter,.
Softcopy: monitor (scrolling, cursore)
Molti mezzi periferici di ingresso (dischi, nastri) possono servire per la registrazione hard copy di risultati, che possono essere riutilizzati come dati di successive elaborazioni.
Tastiera serie di tasti disposti in righe e colonne. Alla chiusura del contatto elettrico del tasto (pressione del tasto) si ottengono direttamente i codici binari che rappresentano:
Lettere
Cifre
Caratteri speciali (barra spaziatrice, segni di punteggiatura...)
Sono presenti:
Tasti funzione
Tasti di direzione
ALT + CTRL + CANC, INVIO
Tastierino numerico
Tastiere diverse da paese a paese.
TERMINALE:
modo teletype: ciascun carattere immesso mediante la tastiera viene immediatamente trasmesso al calcolatore;-
modo a blocchi: una intera linea di testo (terminata con il carattere INVIO) viene immessa in una memoria locale (buffer) e poi inviata in blocco al calcolatore; pertanto è possibile correggere la linea e poi inviarla in blocco.
MOUSE, TRACKBALL
Dispositivi di puntamento.
Mouse: muovendolo si sposta una pallina interna spostando il cursore sul video; tasto sinistro e destro attivano un comando.
Trackball: si muove una sfera con la mano e il contenitore rimane fermo (si trova nei portatili).
MONITOR: suddiviso in zone (finestre) ciascuna associata ad una specifica elaborazione. Si può allargarle, restringerle, spostarle. Una di esse è la "finestra corrente" (quella su cui compaiono i caratteri digitati da tastiera).
Legato al monitor c'è una scheda grafica che traduce le informazioni da visualizzare in informazioni grafiche.
Dimensione: lunghezza della diagonale in pollici (inches); va da 14" a 21" ed oltre.
Risoluzione grafica: numero di pixel che è possibile visualizzare (pixel: picture element);
VGA: 640 X 480
SVGA: 800X 600, 1024 X 768, 1280 X1024
Colori: la visualizzazione dei colori avviene mandando sullo schermo fasci di tre colori di base (rosso, verde, blu) attraverso una griglia di piccoli fori; la distanza tra i fori è il DOT PITCH; più piccolo è migliore è la nitidezza dell'immagine;
DOT PITCH: 0.28 - 0.26 mm;
per 17 " e 21 " 0.21 mm;
Le immagini vengono generate dall'alto verso il basso molte volte al secondo per evitare lo sfarfallio (flickering): la frequenza di scansione è misurata in Hz.
Modalità di scansione verticale.
Modalità interlacciata ( prima le righe dispari poi le pari).
FLAT SCREEN: riducono i riflessi.
Adattatore (scheda grafica : caratterizzata dalla massima risoluzione che può supportare.
Memoria VRAM (RAM video): deve essere sufficiente a contenere per ogni pixel uno dei possibili colori:
1 byte serve per 256 colori;
2 byte per 65535 colore;
Se si ha la risoluzione di 1024 X 768, occorrono 1024 X 768 X 2 bytes per avere 65535 colori per ogni pixel (=1573000 byte - 1.5 M bytes)
La risoluzione del video deve essere maggiore o uguale di quello della scheda.
STAMPANTI: ad aghi, a getto d'inchiostro, laser.
Risoluzione grafica: dpi (dots per inches) dove un pollice è 2.54cm.
Velocità di stampa: caratteri al secondo, pagine al minuto.
Modem (Modulatore/Demodulatore) trasforma segnali digitali in segnali analogici per il trasferimento attraverso via telefonica ad altri elaboratori.
Velocità di trasmissione: misurata in baud (bit per secondo)
Da 2700 baud a 19200 baud e oltre.
MEMORIA (Primaria o Centrale è un deposito in cui sono contenute in forma indistinta tutte le informazioni per l'unità logico aritmetica (dati) e l'unità di controllo (istruzioni).
Conserva le informazioni fornendone una copia se richiesta.
È una successione di elementi bistabili (indipendentemente dalla natura fisica dei singoli componenti, ciascuno di essi può assumere solo due stati), detti bit (binary digit).
Il bit è la più piccola unità di informazione: consente di memorizzare una sola tra due informazioni, denotate per la convenzione come 1 e 0 ( i due simboli dell'alfabeto binario).
Memoria centrale: contiene tutta l'informazione che deve essere elaborata a breve termine.
Ogni elemento di informazione, per poter essere elaborato, deve prima essere acquisito dalla memoria centrale.
Ha dimensioni ridotte, costo elevato, tempo di accesso basso.
Ciclo di memoria: tempo necessario a trasferire informazioni tra memoria e CPU; si misura in millisecondi, microsecondi, nanosecondi.
Memorie non volatili: conservano le informazioni anche in assenza di alimentazione.
Memorie volatili: perdono tutti i dati in assenza di alimentazione.
ROM (Read only Memory)
MEMORIA PRINCIPALE
RAM (Random Access Memory)
ROM: memoria in cui non è possibile alterare lo stato delle cifre binarie, ossia delle informazioni memorizzate; è memoria non volatile in cui sono registrate (dalle case costruttrici) programmi di gestione della macchina (procedure di avviamento della macchina, di caricamento in memoria del Basic I/O System (BIOS) , diagnostica per errori hardware).
RAM: lo stato delle cifre può venire alterato oppure anche venire letto (memoria a lettura / scrittura). È una memoria volatile, usata come area di memoria principale per conservare i dati e programmi in cui il processore opera al momento. È una quantità limitata di memoria, molto veloce. Random Memory significa che la memoria è ad accesso diretto, ossia per accedere ad una informazione non è necessario scandire tutte le precedenti: il tempo per accedere ad una informazione non dipende dalla sua posizione ed è uguale ( ciclo di memoria). Anche le memorie ROM sono ad accesso diretto.
Accanto all'unità di memoria primaria, contenente le informazioni strettamente necessarie per l'elaborazione corrente, molto veloce ma limitata e costosa ci sono MEZZI DI MEMORIZZAZIONE SECONDARIA.
MEMORIE
ORGANIZZAZIONE DELLA MEMORIA PRIMARIA
È costituita da una successione di elementi, che indipendentemente da come sono costituiti fisicamente, possono assumere solo due stati, denotati , per convenzione, con i simboli 1 e 0 dell'alfabeto binario e perciò detti bit.
Il bit è l'unità elementare di informazione.
Ogni informazione è codificata mediante una successione di bit.
LA TOTALITA' DEI BIT È SUDDIVISA IN BYTE O CARATTERI. OGNI BYTE È COSTITUITO DA UN NUMERO PREFISSATO (DALLA CASA COSTRUTTRICE) DI BIT.
TIPICAMENTE 1 BYTE = 8 BIT
Pertanto in un byte è possibile rappresentare 256 informazioni diverse.
IL BYTE È L'UNITA' INDIRIZZABILE DELLA MEMORIA.
Ad ogni byte è associato in modo univoco un indirizzo che rappresenta la posizione che occupa il byte in memoria.
LA MEMORIA PUO' ESSERE VISTA COME UNA SUCCESSIONE DI LOCAZIONI INDIRIZZABILI, OSSIA DI BYTE CONSECUTIVI, CON INDIRIZZI SEQUENZIALI DA 0 ALL'ULTIMO BYTE DI MEMORIA; OGNI ELEMENTO DI MEMORIA È UNIVOCAMENTE REPERIBILE DALL'UNITA' DI CONTROLLO.
0000 0001 0002 .. FFFF
INIZIO FINE
PER CONVENZIONE SI USA RAPPRESENTARE IL CONTENUTO DI UN BYTE E IL SUO INDIRIZZO IN ESADECIMALE.
0F0A : indirizzo del byte (posizione fisica in memoria).
: contenuto ( i bit sono esaminati da sinistra a destra).
Parola (WORD): è un byte od un multiplo pari di byte, il cui valore è prefissato dalla casa costruttrice.
Una Word è il numero di bit che l'unità centrale può elaborare nell'unità di tempo (Clock period: CP).
Per rappresentare un indirizzo si usano una o più parole.
(Intel 286 a 16 bit, 386 e 486 a 32 bit, Pentium a 32 bit, Alpha a 64 bit)
Esempio
Calcolatore a 8 bit: word di 8 bit, dunque si possono indirizzare 256 byte, con indirizzi da 0 a 255.
Calcolatore a 8 bit con due word per gli indirizzi: si possono indirizzare 216 byte.
Calcolatore a 16 bit ( 1 Word = 16 bit) con una word per gli indirizzi: si può avere una memoria di al più 64Kbyte; con 2 word per gli indirizzi si può avere una memoria di 4 Gbyte.
UNITA' DI MISURA PER LA CAPACITA' DI MEMORIA
Kilobyte: 210 byte: 1024 byte
Megabyte: 220 byte: 1048576 byte
Gigabyte: 230 byte: 109 byte
MEMORIA CENTRALE (INDIRIZZAMENTO)
L'UNITA' CENTRALE ACCEDE A UNA LOCAZIONE DI MEMORIA MEDIANTE 2 REGISTRI (MDR e MAR).
La CPU seleziona una delle celle di memoria mettendo l'indirizzo nel registro indirizzi (MAR).
Operazione di lettura (Fetch-load): carica il registro dati (MDR) con il contenuto della cella di memoria indirizzata da MAR; il contenuto della cella di memoria è lasciato inalterato.
Operazione di scrittura (Store): deposita il contenuto del registro dati (MDR) nella cella di memoria indirizzata nella MAR. Il precedente contenuto della cella di memoria è perso.
Se non ci sono operazioni la memoria è rilasciata.
In pratica: i circuiti elettronici della memoria vengono opportunamente collegati in modo che i valori di tensione vengano trasmessi ordinatamente.
MAR STORE LOAD
MDR
k bit h bit
Tutto avviene sotto il controllo dell'unità di elaborazione che carica il registro MAR e ordina il trasferimento di MDR in memoria e viceversa attraverso il BUS.
IL TEMPO DI ACCESSO AD UNA LOCAZIONE DI MEMORIA È INDIPENDENTE DALL'INDIRIZZO ED È UN MULTIPLO DELL'UNITA' DI TEMPO; È DETTA CICLO DI MEMORIA.
MEMORIA SECONDARIA (di massa )
Dispositivi per la memorizzazione permanente di informazioni: più lenti (costituiti da dispositivi meccanici oltre che elettronici) ma anche più capaci, con un costo decisamente inferiore rispetto alla memoria centrale.
Usata anche come mezzo di I/O.
Le informazioni giacciono in forma strutturata detta file. Ogni unità mantiene un indice dei file residenti detto "directory" ( o direttorio) che ne permette un rapido reperimento.
Ogni direttorio ha un numero limitato di posizioni; in ogni posizione è registrato il nome di un file ed una serie di informazioni (lunghezza del file, posizione di inizio, tipo di file.). Per cancellare un file di cancellano le sue informazioni dal direttorio senza cancellarlo fisicamente.
Le unità di memorizzazione secondaria si distinguono in
Unità ad accesso sequenziale (per reperire una informazione occorre scandire tutte le precedenti - nastro)
Unità ad accesso diretto (il tempo per reperire una informazione è quasi identico indipendentemente dalla posizione - disco)
Ci sono interfacce HW e SW tra memoria secondaria e centrale. L'informazione è registrata come dato di magnetizzazione positivo o negativo (cifra binaria).
NASTRI MAGNETICI
ARROTOLATI SU SUPPORTI CIRCOLARI.
CAPACITA' FINO AL GBYTE.
Sulla fettuccia sono inserite delle piste orizzontali parallele; per esempio 9 piste parallele di cui 8 corrispondono a 1 byte e la nona è il bit di parità (per controllo di errori di trasmissione).
2
3
4
5
6
7
8
bit di parità
I dati su nastro sono organizzati in zone contigue detti RECORD (registrazioni) separate da zone prive di informazioni (inter record gap).
Tutte le elaborazioni sono sequenziali (con conseguente lentezza di lettura / scrittura). Si misura la densità di memorizzazione in bit per inch (bpi).
SVOLGONO SOLO UNA FUNIONE DI COPIA DI RISERVA (BACKUP).
DISCHI MAGNETICI
UN DISCO CONSTA DI UN CERTO NUMERO DI PIATTI, CIASCUNO CON DUE SUPERFICI CHE RUOTANO INTORNO AD UN PERNO CENTRALE.
Per ogni superficie (eccetto le due esterne) c'è una testina di lettura/scrittura.
Ogni superficie è suddivisa in una serie di cerchi concentrici o TRACCE ed in spicchi di eguale grandezza detti SETTORI.
La testina si sposta longitudinalmente lungo le tracce. Tutte le tracce equidistanti dal centro formano un CILINDRO.
Traccia
0
Traccia
100
Traccia
200
Settore
I DATI SONO SCRITTI OCCUPANDO POSIZIONI SUCCESSIVE LUNGO LE TRACCE.
BLOCCO: selezionabile mediante una terna di valori (superficie, traccia, settore); le informazioni vengono lette e scritte su un blocco mediante una sola operazione.
CONTROLLER del disco: è un dispositivo hardware che dirige, controlla e sincronizza le operazioni di I/O e trasferisce le informazioni da e verso il calcolatore; il controller influenza le prestazioni di accesso al disco (IDE, EIDE, SCSI).
In memoria principale, ci sono BUFFER per il trasferimento delle informazioni.
DISCHI
Operazioni di I/O: comportano uno spostamento della testina (seek) sulla traccia richiesta, una rotazione fino a che il settore arriva sotto la testina e un tempo di trasferimento dati (solitamente eseguito dal controller, che è un processore dedicato, senza interferire con la CPU attraverso DMA, direct memory access).
TI/O = Tseek + Trotazione/2 + Ttrasferimento
Tseek è il tempo più lungo.
Per dischi a teste rigide (una testina per ogni traccia) il tempo Tseek non c'è.
DISCHETTI (FLOPPY DISK)
Hanno due superfici e 2 testine di lettura/scrittura. Tipica dimensione è 3.5 pollici. Devono essere formattati (ossia divisi in settori) dal sistema operativo prima di essere usati; ciò specifica la densità dei bit e la capacità (720 Kbytes o 1.44 Mbytes)
DISCHI OTTICI
Dischi simili ai Compact Disk (CD) con lo stesso funzionamento; possono essere di tre tipi:
eraseable (scrivibili dall'utente)
Read-Only (a sola lettura o normali CD-ROM)
WORM (Write Once Read Many) (possono essere scritti una sola volta)
Hanno grande capienza (fino al Gigabyte), piccole dimensioni, possibilità di memorizzare immagini e/o suoni e sono rimovibili. Sono più lenti di un HD.
Tipo di memoria Capacità(Mbyte) Tempo di accesso
Memoria centr. 1-256 O(nanosecondi)
Floppy disk 3.5" 360 K, 720 K 100 millisecondi
1440 K
Hard disk O(Gigabyte) 10-20 millisecondi
CD ROM O(Gigabyte)
Nastro magnetico 20-400
Bobina/cassetta 200-4000
BUS DI SISTEMA
Interconnette CPU, memoria centrale ed interfacce di I/O.
COLLEGAMENTO APERTO, non limitato agli estremi.
AD OGNI ISTANTE, connette due unità funzionali logicamente: una trasmette le informazioni, l'altra riceve.
SEMPRE sotto il controllo della CPU: connette CPU e memoria, oppure CPU ed una periferica.
CPU: è MASTER; altre unità funzionali connesse sono SLAVE.
Fisicamente è una serie di linee attraverso cui fluisce l'informazione:
Bus dati: bidirezionale; trasmette dati da memoria a MDR o viceversa;
Bus indirizzi: unidirezionale; trasmette un indirizzo da MAR alla memoria.
Bus comandi: bidirezionale; MASTER comunica a slave l'istruzione da eseguire; SLAVE avverte MASTER del completamento dell'elaborazione.
Trasmissione di dati in PARALLELO: un bit su ciascuna linea. Se ci sono sufficienti linee, si possono trasmettere in parallelo parole, altrimenti sono necessari più trasferimenti per ogni parola. Ciò influisce notevolmente sulla velocità di elaborazione.
Esempio.
Operazione di LOAD di un dato dalla memoria.
La CPU deve:
inserire l'indirizzo della cella di memoria desiderata in MAR; esso viene comunicato alla memoria tramite il bus indirizzi;
comunicare il codice di una operazione di LOAD alla memoria attraverso il bus comandi.
La memoria può:
leggere il contenuto della cella selezionata e inviarlo attraverso il bus dati a MDR;
inviare sul bus comandi alla CPU l'informazione che l'operazione è completata.
Operazione di STORE di un dato in memoria.
La CPU deve:
caricare in MAR l'indirizzo della cella di memoria interessata e inviarlo attraverso il bus indirizzi alla memoria;
caricare il dato in MDR, avviandolo verso la memoria attraverso il bus dati;
inviare il codice dell'operazione di STORE alla memoria mediante il bus comandi.
La memoria può:
scrivere il dato all'indirizzo specificato;
inviare un segnale alla CPU sul bus comandi di completamento dell'operazione.
Esistono vari tipi di Bus dati che differiscono oltre che per la lunghezza della parola trattata anche per la PORTATA (numero di bit trasferiti nell'unità di tempo):
Bus ISA (Industry Standard Architecture) 16 bit, bassa portata
Bus EISA (Extended ISA), MCA (Micro Channel Architecture), bus VESA
Bus PCI (Peripherical Central Interface) 64 bit
Un bus può funzionare in vari modi:
Multiplexer mode: trasmissione delle informazioni con più unità periferiche per volta (con opportuna ripartizione del tempo tra le varie unità)
Selector mode: trasmissione delle informazioni con una periferica per volta (fino a che la trasmissione non è completata)
INTERFACCE DI INGRESSO / USCITA
Consentono il collegamento dell'elaboratore con le varie periferiche.
SONO MOLTO DIVERSE TRA LORO, A SECONDA DEL TIPO DI PERIFERICA (POSSONO ESSERE INTELLIGENTI).
INTERFACCIA STANDARD ELEMENTARE:
Registro dati della periferica (RDP) per scambiare dati con al periferica; lo scambio può avvenire verso la periferica (stampante) o verso l'elaboratore (lettore ottico). Un terminale ha un registro verso l'elaboratore ed uno verso il video.
Registro comando (RCP): contiene il comando che la periferica deve eseguire.
Informazione sullo stato della periferica (rivelazione di errori).
RDP è collegato al bus dati.
RCP è collegato al bus comandi.
L'informazione sullo stato va su un registro speciale (RS) di stato, letto a comando dalla CPU oppure nel registro interruzione della CPU (RINT).
UNITA' DI ELABORAZIONE (CPU)
UNITA' DI CONTROLLO (UC)
UNITA' LOGICO ARITMETICA (ALU)
Registri e clock di sistema.
ALU
MDR
ALU: preposta al calcolo in senso stretto; costituita da costosi e veloci circuiti integrati; esegue
operazioni aritmetiche (+, -, * , /),
operazioni logiche (or, not, and, confronto, scorrimento).
Sono presenti registri accumulatori per operandi e/o risultati intermedi di operazioni.
Registri acc.: vengono caricati con operandi.
UC invia codice che mette in funzione il circuito associato all'operazione richiesta;
Risultato viene scaricato su un registro acc. (A);
RS riporta nei suoi bit indicazioni sull'operazione.
Tutto avviene in un Clock Period.
RS (registro di stato):
Bit carry: indica la presenza di un riporto (serve per confronti)
Bit zero: indica la presenza di un valore nullo in un particolare Registro acc. (A)
Bit segno: riporta il segno del risultato di una operazione
Bit overflow: consente di rilevare l'overflow quando due operandi dello stesso segno sommati danno luogo a un risultato di segno contrario.
UC: funzioni decisionali e di coordinamento; sezione amministrativa del calcolatore.
Realizza ogni funzione per reazione a un preciso comando (istruzione).
Esegue in continuazione il cosiddetto ciclo dell'istruzione:
Prelevamento dalla memoria dell'istruzione che viene posta in IR (registro dell'istruzione corrente)
Decodifica dell'istruzione e individuazione di:
Codice operativo
Operandi
Caricamento operandi
Esecuzione
Riconosciuto il completamento dell'elaborazione carica la successiva istruzione.
La direzione dei compiti è formulata dall'utente mediante un programma, memorizzato in memoria in forma indistinta rispetto ai dati (concetto di programma memorizzato di Von Neumann).
Le istruzioni vengono introdotte come i dati mediante una unità di ingresso in memoria, ove giacciono in forma indistinta rispetto ai dati
Ogni istruzione contiene in campi di lunghezza prefissata le seguenti informazioni:
codice operativo: codice corrispondente all'insieme di impulsi che attivano il circuito associato a una specifica funzione
indirizzo degli operandi e del risultato
indirizzo della prossima istruzione da eseguire
Poiché le istruzioni sono in genere caricate in locazioni consecutive nello stesso ordine in cui sono eseguite, si può omettere l'ultimo campo.
Nell'UC esiste un registro, detto "Contatore di programma" o PC, inizialmente caricato con l'indirizzo della prima istruzione da eseguire e che, per ogni istruzione caricata, viene incrementato in modo da puntare in ogni momento alla prossima istruzione da eseguire.
Esistono istruzioni che alternano il contenuto del PC in modo da provocare trasferimenti di controllo da istruzioni non consecutive (salti condizionati ed incondizionati, cicli).
Per quanto riguarda i campi degli indirizzi degli operandi e del risultato esistono istruzioni a tre indirizzi, due indirizzi, un indirizzo.
La lunghezza s in bit di una istruzione dipende dal numero di bit h della parola (s=h, una istruzione in una parola, oppure s=2h, una istruzione in due parole.). In generale s=m+r*n, ove m è il numero di bit per il codice operativo, r è il numero di operandi e n il numero di bit per la rappresentazione dell'informazione relativa a dove reperire un operando.
SET DELLE ISTRUZIONI: è l'insieme delle diverse istruzioni eseguibili;
il loro numero è non superiore a 2m.
MACCHINE A TRE INDIRIZZI
MACCHINE A DUE INDIRIZZI
Il risultato viene memorizzato all'indirizzo del II operando, perdendo quest'ultima informazione. Pertanto se si vuole salvare occorre prima eseguire una istruzione di trasferimento in un'altra cella di memoria.
MACCHINE AD UN INDIRIZZO
Si servono di un accumulatore per memorizzare il secondo operando ed il risultato. Servono due istruzioni in più per ogni accumulatore presente nella macchina, per caricare il contenuto di una locazione di memoria nell'accumulatore e viceversa per scaricare il risultato a una certa locazione di memoria.
Dal momento dell'avviamento della macchina fino allo spegnimento , l'UC esegue in continuazione il ciclo di esecuzione dell'istruzione:
UC carica nel registro istruzione IR il contenuto della locazione indicata da PC.
PC viene incrementato per puntare alla nuova istruzione
Decodifica (separazione codice operativo da informazioni su operandi)
Reperimento operandi che vengono portati dalla memoria all'ingresso del circuito dell'ULA associato al codice operativo.
Attivazione del circuito
Memorizzazione del risultato
Ogni funzione è sincronizzata dall'orologio del sistema che misura il tempo in unità di tempo (CP).
UC
ESECUZIONE DELLE ISTRUZIONI
Comporta 3 fasi:
ACQUISIZIONE della memoria dell'istruzione (FETCH)
DECODIFICA
ESECUZIONE
Acquisizione della memoria (FETCH)
Richiede l'esecuzione di 4 microistruzioni:
PC->MAR
Memoria (MAR)->MDR
MDR->IR
PC+1->PC
Decodifica
Si individua il codice operativo.
Esecuzione
Si recuperano dalla memoria gli eventuali operandi. Si attiva il circuito preposto alla funzione associata al codice operativo. Si memorizza l'eventuale risultato.
CLOCK (orologio di sistema)
Affinché il trasferimento dei dati ed istruzioni tra le varie componenti possa avvenire correttamente, occorre che queste siano sincronizzate.
È stato introdotto un segnale di sincronizzazione generato da un dispositivo HW detto clock: è un oscillatore che lancia un segnale ad intervalli di tempo regolari; la sua frequenza è misurata in MHz (milioni di hertz), dove 1 Hz è una oscillazione al secondo.
Tipici valori: Pentium a 160 MHz, a 200 MHz, Alfa a 500 MHz.
Ciclo di clock: T=1/f, ove f è la frequenza dell'oscillatore; dall'ordine del milionesimo di secondo o del miliardesimo di secondo (nanosecondi)
ISTRUZIONE ELEMENTARE: eseguita in un ciclo di Clock.
Altre unità di misura per il confronto tra calcolatori:
1 MHz: un milione di oscillazioni al secondo
1 mips: un milione di istruzioni elementari al secondo
1 Mflop: un milione di operazioni floating point al secondo
1 Gflop: un miliardo di operazioni al secondo di tipo floating point
Pur variando da elaboratore ad elaboratore, l'insieme delle istruzioni attorno a cui si sviluppa un sistema di calcolo permette sempre di effettuare le seguenti funzioni fondamentali:
Operazioni aritmetico logiche;
Controllo di condizioni logiche
Trasferimento da una locazione all'altra e scorrimento delle cifre
Istruzioni di ingresso ed uscita
Arresto
ARCHITETTURE DEI MICROPROCESSORI
CISC (Complete Instruction Set Computing): ha molte istruzioni realizzate ad HW, sia elementari che complesse. I processori per PC (Intel e Motorola ) sono di tipo CISC.
Processori Intel: 80386, 80486, Pentium (PC IBM e compatibili).
Processori Motorola: adottati da Apple per Macintosh.
RISC (Reduced Instruction Set Computing): poche istruzioni elementari realizzate ad HW in modo efficiente (le istruzioni complesse sono realizzate via SW come combinazioni di quelle elementari); tra i più efficienti l'Alpha (Digital). L'architettura RISC consente un notevole aumento di velocità di elaborazione, anche se le istruzioni complesse richiedono un maggior tempo di quello necessario per fare la stessa funzione via HW su CISC; Infatti mediamente il numero di istruzioni complesse in un programma è basso.
(Power PC Motorola, Sun Sparc, Digital Alpha)
INTEL continua a progettare CISC; il SW di base che gestisce CISC deve essere riscritto per RISC.
Estensione della macchina di Von Neumann
La macchina di Von Neumann ha come problema la stretta sequenzialità imposta dalle operazioni; modifiche nell'architettura di Von Neumann consistono nell'introdurre del parallelismo:
Processori dedicati (coprocessori)
Calcolo
Gestione della grafica
I/O
Esecuzione in parallelo delle varie fasi di una istruzione (parallelismo)
Architetture multiprocessore, dataflow, sistoliche
Gerarchie di memorie
Registri, cache, memoria locale, memoria centrale, memoria di massa (dalla più veloce alla meno veloce, dalla meno capace alla più capace)
COPROCESSORE: processore diverso dal processore principale che esegue funzioni sussidiarie; per esempio coprocessore matematico esegue più rapidamente i calcoli matematici con numeri a virgola mobile (numeri finiti).
Molti microprocessori sono in grado di effettuare solo operazioni di interi. Operazioni tra numeri finiti sono effettuate scomponendole in sequenze di operazioni tra interi, con conseguente aumento del tempo di calcolo.
Per evitare tale inconveniente, per applicazioni di calcolo scientifico e di grafica, alla CPU si affianca un coprocessore matematico che esegue mediante circuiti HW e dunque in modo notevolmente più veloce le operazioni tra numeri finiti.
MEMORIA CACHE: Memoria di capacità limitata formata da SRAM molto veloce posta tra il microprocessore e la memoria centrale.
La prima volta che il microprocessore carica dai dati dalla memoria centrale tali dati sono caricati nella cache. Successivamente i dati sono prelevati dalla cache anziché dalla memoria centrale più lenta.
Sfrutta le caratteristiche di LOCALITA' spaziale e temporale tipica dei programmi.
Problemi di COERENZA tra dati contenuti in cache e memoria.
CONFRONTO TRA CALCOLATORI
Ciclo di CLOCK : più è basso più è veloce l'elaborazione;
TEMPO DI ACCESSO IN MEMORIA (presenza di una cache e sue dimensioni);
Caratteristiche del bus;
Presenza di un coprocessore matematico (valutare mips o Mflop) ha importanza per chi fa calcolo scientifico;
VELOCITA' DI ACCESSO AL DISCO E VELOCITA' DEL CONTROLLER (è importante per chi fa molta gestione di dati, come le aziende)
ESPANDIBILITA' DEL SISTEMA (numero di slot - prese di espansione); espansibilità della memoria RAM, della memoria Video, .
LA DIREZIONE DEI COMPITI DEVE ESSERE FORMULATA DALL'UTENTE MEDIANTE LA COSTRUZIONE DI UNA LISTA DI ISTRUZIONI O "PROGRAMMA", INTRODOTTO INSIEME AI DATI MEDIANTE UN DISPOSITIVO DI INGRESSO IN MEMORIA ED IVI RESIDENTE (PROGRAMMA MEMORIZZATO DI VON NEUMANN).
Ogni programma per essere eseguito direttamente dalla macchina deve essere scritto direttamente in linguaggio macchina. Ogni elaboratore ha il suo linguaggio macchina strettamente legato alle caratteristiche dell'hardware.
LINGUAGGIO MACCHINA: insieme di istruzioni scritte secondo regole sintattiche fissate immediatamente interpretabili ed eseguibili dall'unità di controllo.
È necessario:
ricordarsi tutti i codici (che cambiano da macchina a macchina)
gestire gli indirizzi completamente, indirizzando alcune locazioni alle costanti
conoscere l'architettura
Il programma è:
non "portabile" su altre macchine
poco leggibile (comprensibile)
difficilmente modificabile
alta probabilità di commettere errori e difficoltà nel rintracciarli
LINGUAGGIO ORIENTATO ALLA MACCHINA E NON AL PROBLEMA: se si conosce alla perfezione l'architettura si ottengono programmi altamente efficienti!!!
ESEMPIO:
Supponiamo di avere una macchina in cui ogni istruzione è codificata in una LOCAZIONE DI MEMORIA costituita da 16 bit, di cui 4 servono per il campo del codice operativo e 12 per il campo dell'indirizzo di un solo operando, se è necessario specificarlo.
Codici operativi (al più 16)
caricamento nel registro accumulatore A :(w) ->(A)
0001 LOADB
caricamento nel registro accumulatore B: (w)->(B)
0010 STOREA
memorizzazione del contenuto dell'accumulatore A all'indirizzo specificato (A)->(w)
0011 STOREB
memorizzazione del contenuto dell'accumulatore A all'indirizzo specificato (B)->(w)
0100 READ
lettura di un dato e memorizzazione nella locazione di indirizzo w ; input ->(w)
0101 WRITE
stampa del contenuto della locazione di indirizzo w; (w)->output
0110 ADD:somma (A)+(B) ->(A)
0111 DIF: differenza (A)-(B) -> (A)
1000 MUL:prodotto (A)*(B)->(A)
1001 DIV: quoziente (A):(B)->(A); resto in (B)
1010 JUMP: salto incondizionato all'indirizzo w: (w)->(PC)
1011 JUMPZ: salto all'indirizzo w se (A) =0
1101 HALT:fine elaborazione
Ogni istruzione è eseguita mediante una serie di microistruzioni.
OP(IR)->MAR
Memoria (MAR)->MDR
MDR->A o B
OP(IR)->MAR
MDR->memoria(MAR)
RDP->MDR
OP(IR)->MAR
MDR ->memoria(MAR)
Memoria(MAR)->MDR
MDR->RDP
A+B->A
A-B->A
A*B->A
A/B->A resto ->B
Se il bit zero di RS contiene 1, OP(IR)->PC
Il seguente programma legge i due dati I e F, ne esegue la somma e visualizza il risultato.
Indirizzo di memoria Contenuto
CO |Operando
READ F 0100 000000001001
K<-I+F 2-0010 LOADA I 0000 000000001000
3-0011 LOADB F 0001 000000001001
ADD 0110 000000000000
5-0101 STOREA K 0010 000000001010
Stampa K 6-0110 WRITE K 0101 000000001010
Stop 7-0111 HALT 1101 000000000000
Spazio memoria 8-1000 spazio riservato
Spazio memoria 9-1001 spazio riservato
10-1010 spazio riservato
Per mandare in esecuzione il programma in PC (program counter) viene caricato l'indirizzo 0.
MODALITA' DI INDIRIZZAMENTO
diretto: il campo operando dell'istruzione contiene l'indirizzo assoluto della locazione di memoria in cui sta l'operando (un accesso in memoria);
indiretto: il campo operando contiene l'indirizzo della locazione di memoria ove sta l'indirizzo dell'operando (due accessi in memoria);
tramite registro indice: l'indirizzo dell'operando si ottiene sommando il contenuto del campo operando con il contenuto di un registro speciale, detto registro indice (I); si usa per accedere a una serie di parole consecutive che seguono una data locazione, il cui indirizzo viene messo nel registro indice;
immediato: l'operando è contenuto nel campo operando.
Per codificare i 4 diversi modi di indirizzamento, possono essere usati i primi due bit del campo operando:
indirizzamento diretto
indirizzamento indiretto
indirizzamento tramite registro indice
indirizzamento immediato
LINGUAGGIO SIMBOLICO (Assembler)
Codici operativi delle istruzioni sono sostituiti con nomi mnemonici (corrispondenti al codice numerico)
Rappresentazione degli indirizzi di memoria con nomi di fantasia (modo simbolico) detti etichette
Esistono direttive per la gestione della memoria
UN PROGRAMMA ASSEMBLER DEVE ESSERE TRADOTTO IN LINGUAGGIO MACCHINA
La conversione è eseguita da un:
ASSEMBLATORE: programma fornito in linguaggio macchina fornito dalla casa costruttrice che esegue il procedimento meccanico di tradurre, detto PROCESSO DI ASSEMBLAGGIO:
L'assemblatore viene eseguito, caricandolo in memoria, usa come dato il programma sorgente, scritto in Assembler e produce come risultato un programma oggetto, scritto in linguaggio macchina che può essere eseguito. Eventualmente l'assemblatore può effettuare una rilocazione.
VANTAGGI
L'utente può conoscere i codici e programma in modo da non conoscere gli indirizzi
facile modifica del programma e facile localizzazione degli errori
SVANTAGGI:
programma non portabile
corrispondenza 1-1 tra istruzioni macchina e Assembler
linguaggio orientato alla macchina
ESEMPIO:
READ I
READ F
LOADA I
LOADB F
ADD
STOREA K
WRITE K
HALT
F: int 1
K: int 1
Etichette:
I, F, K sono nomi di fantasia associati a locazioni di memoria che contengono i dati su cui lavora il programma.
Dichiarative
int: istruzione dichiarativa che avvisa l'assemblatore di lasciare una locazione vuota.
Modi di indirizzamento:
LOADA F diretto: l'operando è contenuto all'indirizzo F
LOADA @F indiretto: l'operando è contenuto all'indirizzo contenuto in F
LOADA F(I) tramite registro indice: l'operando è contenuto all'indirizzo dato dal contenuto di F sommato al contenuto del registro indice
LOADA #F immediato: l'operando è il valore di F
ESEMPIO: SOMMA DI N NUMERI
READ N ; input N
LOADA #0 ; S<-0
STOREA S
LOADB #0 ; I<-0
STOREB I
CICLO: LOADA N
DIF ; N<- N-I
JUMPZ STAMPA
READ X
LOADA S
LOADB X
ADD ; S<-S+X
STOREA S
LOADA I
LOADB #1
ADD
STOREA I ;I<-I+1
LOADB I
JUMP CICLO
STAMPA: WRITE S
HALT
N: int 1
S: int 1
I: int 1
X: int 1
CICLO, STAMPA, N, S, I, X sono ETICHETTE di indirizzi di memoria. Ogni volta che si fa riferimento ad un indirizzo di memoria, si usa il nome simbolico ad esso associato. Le costanti sono introdotte direttamente (#0, #1,...)
DIFFERENZA TRA VARIABILI E COSTANTI
LINGUAGGI EVOLUTI
Si sviluppano a partire dagli anni '60 e non sono più orientati alla macchina, ma alla mentalità dell'utente ed al problema da risolvere (FORTRAN, C, PASCAL,..). Sono linguaggi SIMBOLICI (indirizzi di memoria rappresentati con simboli)
Si possono usare su una qualunque macchina dotata di programma traduttore
PORTABILITA' DEI PROGRAMMI
Non è più richiesta la conoscenza dell'HW e dei codici operativi delle istruzioni.
IL PROGRAMMATORE DEVE CONOSCERE
alfabeto
sintassi del linguaggio evoluto
semantica
La macchina diventa una scatola nera.
La corrispondenza tra una istruzione di linguaggio evoluto ed una di linguaggio macchina diventa 1 a più .
LINGUAGGI DI PROGRAMMAZIONE
FORTRAN (FORmula TRANslator) per elaborazione scientifica
COBOL (COmmon Businness Oriented Language) per applicazioni gestionali
Linguaggi basati nello STUDIO dei PRINCIPI DI PROGRAMMAZIONE:
ALGOL 60 (non utilizzato molto nella pratica)
Pascal (diffusi per la didattica dell'informatica)
C (costruzione di sistemi informatici)
ADA (prescelto dal Ministero della Difesa degli USA)
Sono tutti linguaggi imperativi.
PROGRAMMAZIONE AD OGGETTI: si mantiene una corrispondenza tra gli oggetti che caratterizzano una applicazione e la loro codifica.
LINGUAGGI AD OGGETTI (C++, VISUAL BASIC...): le istruzioni sono associate agli oggetti.
Linguaggi orientati alla logica matematica:
LISP basato sul concetto di funzione (linguaggio funzionale)
PROLOG basato sul formalismo della logica matematica (linguaggio dichiarativo)
LINGUAGGI EVOLUTI
LINGUAGGI INTERPRETATIVI
si dividono in:
LINGUAGGI COMPILATIVI
.. a seconda della modalità di traduzione del programma sorgente in oggetto.
LINGUAGGIO INTERPRETATIVO (BASIC...)
Necessita di un INTERPRETE come traduttore:
INTERPRETE: risiede in memoria insieme al programma sorgente; considera una istruzione alla volta del programma sorgente, lo analizza sintatticamente. Se non è corretta si arresta visualizzando un messaggio di errore e si pone in attesa di una nuova istruzione. Se è corretta esegue immediatamente la procedura in linguaggio macchina corrispondente all'istruzione;
la traduzione del programma avviene durante l'esecuzione; tale esecuzione avviene sotto la supervisione dell'interprete.
facile localizzazione degli errori (utile per la "messa a punto" de i programmi)
non è possibile un'ottimizzazione del programma (programma visto istruzione per istruzione e non nella sua interezza)
esecuzione lenta
LINGUAGGI COMPILATIVI (FORTRAN, COBOL,...)
Necessitano di un COMPILATORE come traduttore.
COMPILATORE: risiede in memoria principale, vede il programma sorgente come un dato di input, ne esegue una analisi sintattica (fornisce lista di errori e messaggi sulla loro posizione) e, nel caso di un programma sintatticamente corretto, esegue la traduzione in linguaggio macchina. Crea una tavola dei simboli (symbol table). Il programma oggetto è il risultato della compilazione (file.OBJ, file.O).
La traduzione del programma avviene prima della sua esecuzione.
Programma LINKER/LOADER: aggiunge procedure contenute nella libreria del linguaggio o in altre librerie, creando un programma eseguibile (file.EXE, file.X).
Esegue eventualmente una rilocazione del codice (assegnazione indirizzi alla Symbol table)
È possibile un'ottimizzazione del programma (poiché viene visto dal compilatore nella sua interezza)
esecuzione veloce
difficile localizzazione degli errori di tipo logico
L'IDEALE SAREBBE DI AVERE UN LINGUAGGIO CON INTERPRETE (per la messa a punto) E COMPILATORE (ottimizzazione).
PROCEDIMENTO DI INTERPRETAZIONE
RISULTATI ESECUZIONE DATI PROGRAMMA ESEGUIBILE COLLEGAMENTI LINKER LOADER PROGRAMMA OGGETTO TRADUZIONE COMPILATORE PROGRAMMA SORGENTE EDITING
PROCEDIMENTO DI COMPILAZIONE
SISTEMA OPERATIVO
programma scritto in linguaggio macchina permanentemente in esecuzione che funge da interfaccia tra: utente <-----S.O.-----> HW
permette all'utente di sfruttare al meglio le risorse dell'HW senza consentire dettagli
Il nucleo (KERNEL) giace permanentemente in memoria dal momento dell'avvio del sistema.
È un interprete di comandi che il S. O. fornisce per:
gestione dei files su nastri dischi ecc.
stampanti
creazione ed esecuzione programmi
dotato di vari programmi di utilità per lo svolgimento di varie attività (editor, compilatori, interpreti, linker, loader...)
RIFERIMENTI BIBLIOGRAFICI
Ceri, Mandrioli, Sbatella: Istituzioni di Informatica, Mc Graw Hill.
Privacy |
Articolo informazione
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2025