Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

INTRODUZIONE ALL'ARCHITETTURA DEGLI ELABORATORI

informatica








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.

Informazioni


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

  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.).


Tipi di sistema operativo

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

CRAY T3E; IBM SP-2 . distributed 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.



  Contenuto di un byte (informazione);


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

Terabyte:    240 byte: 1012 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, .


QUANDO SI ACQUISTA UN CALCOLATORE, VALUTARE LE SUE PRESTAZIONI ATTRAVERSO BENCHMARK (insieme di programmi tipici di applicazioni che l'utente vuole elaborare)

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)


0000 LOADA

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.


LOADA o LOADB

OP(IR)->MAR

Memoria (MAR)->MDR

MDR->A o B


STOREA o STOREB

A o B-> MDR

OP(IR)->MAR

MDR->memoria(MAR)


READ

RDP->MDR

OP(IR)->MAR

MDR ->memoria(MAR)


WRITE

OP(IR)->MAR

Memoria(MAR)->MDR

MDR->RDP


ADD, DIF, MUL, DIV

A+B->A

A-B->A

A*B->A

A/B->A    resto ->B


JUMP

OP(IR)->PC

JUMPZ

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

Ingresso di I e F 0-0000 READ I 0100 000000001000

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

I: int 1

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


Hits: 2706
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024