Caricare documenti e articoli online  
INFtube.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.
Meneame
 
Non ricordi la password?  ››  Iscriviti gratis
 

INTRODUZIONE ALL'ARCHITETTURA DEGLI ELABORATORI

informatica


Inviare l'articolo a Facebook Inviala documento ad un amico Appunto e analisi gratis - tweeter Scheda libro l'a yahoo - corso di



ALTRI DOCUMENTI

ANALISI DEL PROGRAMMA SULLE LISTE
SCHEMA DI ACQUISIZIONE DATI
PASSAGGIO DI PARAMETRI X INDIRIZZO CON PARAMETRI (scambio)
Guida Rapida all' HTML
Il Software Applicativo
LE INTERFACCE STANDARD - INTERFACCIA
I SISTEMI ESPERTI - GENERALITA'
IL DHTML
SISTEMI DI PRODUZIONI
Tipi di computer

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:

01010101.

 

Comando

 

01010101.

 

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.

0|0|1|1|0|1|0|1

 
                      Contenuto di un byte (informazione);

0F0A(16): indirizzo del byte (posizione fisica in memoria).

35(16): 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).

 


                               1

                               2

                               3

                               4

                               5

                               6

                               7

                               8

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

1)   Registri acc.: vengono caricati con operandi.

2)   UC invia codice che mette in funzione il circuito associato all'operazione richiesta;

3)   Risultato viene scaricato su un registro acc. (A);

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

1-0001                   READ F        0100 000000001001

K<-I+F                          2-0010                  LOADA I      0000 000000001000

3-0011                  LOADB F     0001 000000001001

4-0100                   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:

00        indirizzamento diretto

01        indirizzamento indiretto

10        indirizzamento tramite registro indice

11        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: 1384
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI

E 'stato utile?



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2019