Scarica Caratteristiche e tipi di processori: CISC, RISC, bus e rappresentazione di dati e più Appunti in PDF di Elementi di Informatica solo su Docsity!
ARCHITETTURA DI UN COMPUTER ➞ architettura di Von Neumann CPU : la componente di un calcolatore (detta anche processore) che carica le istruzioni dei programmi in memoria, le interpreta e manipola i dati di conseguenza. I componenti minimali di una CPU sono l’unità di controllo, l’unità aritmetico-logica (ALU) e i registri. L’unità di controllo legge ciclicamente l’istruzione successiva da eseguire (come indicato dall’apposito registro), la interpreta e la esegue, eventualmente leggendo i dati interessati e scrivendo il risultato utilizzando gli appositi registri e cambiando i flag (indicatori) di stato del processore (anch’essi memorizzati in un registro). L’ALU è l’unità preposta ai calcoli logici e aritmetici. I registri sono di due tipi: nei primi vengono memorizzate informazioni indispensabili per il corretto funzionamento del processore, quali l’indirizzo della prossima istruzione da eseguire, flag di stato del processore stesso e flag di controllo dell’esecuzione; nei secondi vengono memorizzati gli eventuali dati di ingresso per l’operazione da eseguire e i risultati della stessa. I processori sono in grado di eseguire un insieme di operazioni base (propriamente detto set di istruzioni) da combinare opportunamente; in base alle caratteristiche di detto set, vengono divisi in due famiglie, CISC (complex instruction set computer) e RISC (reduced instruction set computer); i primi sono caratterizzati da un numero limitato (tipicamente una decina) di registri e da un vasto insieme (alcune centinaia) di istruzioni complesse: tali istruzioni hanno lunghezza variabile e richiedono diversi cicli di clock per la loro esecuzione; i secondi sono caratterizzati da un cospicuo numero (dell’ordine del migliaio) di registri e da un relativamente piccolo insieme di istruzioni (meno di cento) relativamente semplici, di lunghezza costante e tali da permettere l’esecuzione parallela delle stesse. RAM : contiene dati e programmi da eseguire, detta anche memoria centrale ( main memory). E’ un componente fisicamente esterno al processore. In assenza di energia elettrica perde il suo contenuto. La capacità della RAM si misura in Byte (8 bit) o in multipli di Byte. La RAM è organizzata come un array o sequenza di Byte. I Byte sono organizzati in word e vengono riconosciuti da un indirizzo di memoria: con un indirizzo di N bit posso indirizzare 2^N -1 Byte diversi. L’unità minima di lettura o scrittura della memoria è la word. Organizzazione della memoria RAM:
- dal bus indirizzi arriva l’indirizzo della cella da leggere/scrivere;
- dal bus di controllo arriva il comando di lettura o scrittura;
- dal bus dati arriva il dato da leggere o scrivere.
Questi tre tipi di bus fanno parte del bus di sistema. Tipologia di memoria RAM:
- single data rate (SDR) ➝ trasferiscono i dati solo su un fronte di salita del clock;
- double data rate (DDR) ➝ trasferiscono dati su entrambi fronti di salita e discesa del clock. Principali parametri: - latenza = tempo che intercorre tra l'istante in cui viene chiesto il dato e l’istante in cui la memoria lo fornisce in uscita; - bandwidth = velocità di trasferimento dei dati dalla memoria alla CPU o viceversa. (si misura in GB/s). Bus di sistema : linea alla quale sono contemporaneamente connesse le singole unità del calcolatore e che consente il trasferimento dei dati tra le unità stesse. Ogni trasferimento di dati attraverso il bus avviene sotto la supervisione della CPU ( ruolo master), che identifica sorgente e destinazione del dato. Alle unità periferiche viene impedito l’accesso ripetuto al bus, assumendo un ruolo di slave. Di solito integrato nella scheda madre (motherboard) del calcolatore, insieme a CPU, memoria centrale e alcune interfacce I/O. Pregi e difetti di un collegamento a bus
- semplicità: singola linea di connessione che può essere usata da diversi dispositivi per il collegamento alla CPU o tra di loro;
- estendibilità: nuovi dispositivi possono essere aggiunti semplicemente e con modifiche marginali del sistema complessivo, connettendoli tramite un’interefaccia al bus, senza influenzare l’hardware preesistente;
- standardizzabilità : diventa possibile adottare specifiche tecniche condivise che consentano a periferiche di costruttori diversi di interagire correttamente;
- limitata capacità: al crescere del numero dei dispositivi la presenza di una sola linea comporta un limite alla capacità di trasferire dati. Clock : elemento fondamentale per il funzionamento della CPU e del computer, è un segnale periodico generato all’interno della CPU da un generatore di impulsi. Il periodo di clock è il tempo che intercorre tra due fronti di salita del segnale. Unità di misura: secondo e sottomultipli. Il periodo di clock è il tempo necessario per trasferire un’informazione (bit) tra due registri p per eseguire un’istruzione elementare. L’inverso del colck è la frequenza, corrispondente al numero di cicli al secondo. Unità di misura: Hz e multipli. La frequenza è correlata alla velocità di elaborazione del sistema.
Organizzazione dei dischi:
- un piatto è composto da una serie di anelli concentrici dette tracce separati da uno spazio detto gap tra tracce. Le tracce sono suddivise in archi di circonferenza detti settori e separati da uno spazio detto gap tra settori (che contengono i dati).
- l’insieme delle tracce corrispondente di tutti i piatti si chiama“cilindro”. Formattazione del disco: il disco è visto come una sequenza lineare di blocchi, e ogni blocco è memorizzato in un settore. Per essere utilizzato deve essere preparato per memorizzare le informazioni. La preparazione consiste in tre fasi:
- Low-level formatting o formattazione di basso livello ➜ definisce il formato dei settori:
- preambolo: bit-pattern che permette alla testina di riconoscere l’inizio di un settore;
- dati: area in cui sono memorizzati i dati;
- ECC: error-correction code sono informazioni ridondanti che permettono di rilevare e correggere errori; (es. bit di parità: se il numero di 1 è pari il bit di parità è 0, altrimenti 1) I dischi più recenti sono pre-formattati dal costruttore con uno spazio dati di 512 - 4096 Bytes e non possono essere ri-formattati via software.
- partitioning o partizionamento ➜ ci permette di installare diversi sistemi operativi sullo stesso disco fisico e di utilizzare alcune parti del disco come l’area di swap. Funzioni:
- definisce le partizioni del disco, ovvero il disco viene diviso in due o più dischi detti anche volumi indipendenti;
- definisce la tabella delle partizioni contenente l’indirizzo di inizio e la dimensione di ciascuna partizione;
- definisce il Master-boot record: sul settore 0 del disco su viene installato il codice del boot-loader, ovvero il codice che permette di caricare e far partire (bootstrap) il sistema operativo installato in una partizione. L’area di swap viene utilizzata quando la memoria fisica è piena, il sistema continua a funzionare anche se le operazioni possono risultare più lente a causa dell’accesso dei dati al disco.
- high-level formatting o formattazione di alto livello ➜ definisce:
- il file-system: un insieme di tabelle in cui per ogni file sono scritti gli indirizzi dei settori su cui è memorizzato;
- il boot-sector: il settore del disco contenente il codice di avvio specifico del sistema operativo installato nella partizione;
- tutte le strutture dati (tabelle) necessarie per la gestione dei settori della partizione. (es. la lista dei blocchi liberi che contiene l’informazione su quali sono i blocchi liberi). SISTEMA OPERATIVO Il sistema operativo si interpone logicamente tra il livello hardware e il livello delle applicazioni, per mascherare i meccanismi di funzionamento fisico della macchina e fornire all’utente una macchina virtuale o astratta. Il sistema operativo è la componente software di un sistema, nonché l’intermediario tra la macchina fisica (hardware) e programmi applicativi. La funzione principale è quella di fornire dei servizi ai programmi applicativi e agli utenti rendendo utilizzabili le risorse fisiche del sistema informatico e deve, tra l’altro:
- garantire correttezza e precisione nell’elaborazione e nella trasmissione dell’informazione;
- garantire affidabilità, disponibilità e sicurezza dei sistemi;
- assicurare la privatezza dei dati;
- consentire la realizzazione di soluzioni aperte, che permettano cioè il funzionamento di hardware e software forniti da diversi produttori. Le diverse funzioni del sistema operativo sono definite system call o chiamate di sistema, attraverso le quali le applicazioni accedono alle risorse fisiche, garantendo un uso guidato delle risorse e prevenendo la possibilità di azioni che possono danneggiare il sistema. Il sistema operativo è organizzato per livelli e ogni livello fornisce un’astrazione del livello sottostante. Il kernel e l’insieme delle system call. Il sistema operativo:
- permette di eseguire le applicazioni carica in RAM il programma binario residente su disco, manda in esecuzione il programma caricando nel registro PC l’indirizzo della prima istruzione
MSB= most significant bit BYTE = sequenza di 8 bit WORD o PAROLA= sequenza di 2,4 o 8 byte, unità minima letta o scritta in memoria. Rappresentazione dei numeri Notazione posizionale in base 10 In base 10 un numero è rappresentato come una sequenza di simboli o cifre (0 1 2 3 4 5 6 7 8 9) Il valore o significato associato ad una sequenza di n simboli: c(n−1) c(n−2)... c(2) c(1) c(0) è dato da: c(n−1) · 10^(n−1) + c(n−2) · 10^(n−2)... c(2) · 10^(2) + c(1) · 10^(1) + c(0) · 10^(0) Notazione posizionale: un simbolo ha un peso diverso a seconda della posizione che esso occupa in sequenza. I pesi sono potenze della base, in cui l’indice è uguale alla posizione occupata dal simbolo contando da destra verso sinistra e cominciando da zero. Proprietà della notazione in base 10:
- massimo numero rappresentabile con n cifre è
- con n=1 cifre si possono rappresentare i numeri in [0,..,9], con n=2 cifre si possono rappresentare i numeri in [0,..,99], con n=3 cifre si possono rappresentare i numeri in [0,..,999]...
- in generale, per rappresentare i K numeri nell’intervallo [0….k-1] servono almeno n cifre tale che n è il più piccolo esponente per cui 10^n ≥ k.. Notazione posizionale in base 2
associato ad una sequenza di n simboli cn−1 cn−2... c2 c1 c0 è dato da c(n−1) · 2^(n−1) + c(n−2) · 2^(n−2)... c(2) · 2^(2) + c(1) · 2^(1) + c(0) · 2^(0) Notazione posizionale: un simbolo ha un peso diverso a seconda della posizione che esso occupa in sequenza. I pesi sono potenze della base, in cui l’indice è uguale alla posizione occupata dal simbolo contando da destra verso sinistra e cominciando da zero. c(n−1) è il MSB, mentre c(0) è LSB Il massimo numero rappresentabile con N cifre è. con N=1 posso rappresentare i numeri in [0,...1], con N=2 posso rappresentare i numeri in [0,...3], con N=3 posso rappresentare in [0…,7]. Quindi, in generale, per rappresentare i K numeri mi servono almeno N cifre tale che N è i più piccolo valore per cui 2^n ≥ k. Rappresentazione dei numeri naturali Vengono utilizzate sequenze a quantità standardizzata di bit per cui N corrisponde tipicamente a 32 bit, ma può indicare anche 16 e 64 bit. Con N bit posso rappresentare 2^N numeri interi nell'intervallo [0… 2^N-1]. Moltiplicando o sommando due numeri ad N bit posso ottenere un risultato non rappresentabile su N bit. In questo caso si verifica una condizione detta di overflow.
La codifica binaria della parte funzionaria di un numero è una sequenza di bit che rappresentano i coefficienti della somma di potenze negative decrescenti di 2 a partire da 2^-1. Per scrivere la rappresentazione binaria di un numero razionale z.d, di cui z è la parte intera e d è la parte frazionaria , si convertono separatamente z e d. Per convertire la parte frazionaria d<1 si deve trovare una sequenza di cifre binarie tale che d si possa scrivere come somma di potenze negative di 2: Questo tipo di rappresentazione in virgola fissa non viene utilizzata sui calcolatori di uso generale in quanto non permette di utilizzare in modo efficiente i bit quando si lavora con numeri molto grandi o molto piccoli. Nella tipologia appena descritta di rappresentazione il numero di bit dedicati alla parte frazionaria e a quella intera sono fissi e non possono variare. Rappresentazione in virgola mobile Vengono utilizzati N bit della parola per rappresentare più accuratamente la parte frazionaria, nel caso in cui si lavori con numeri piccoli, oppure le cifre in posizioni alte, nel caso in cui si lavori con numeri grandi. L’aumento della precisione di rappresentazione è dovuta ad una minore distanza (gap) tra i numeri stessi. Viene utilizzata, inoltre, la notazione scientifica normalizzata, per cui ogni numero reale può essere scritto nella forma .m è detta mantissa, b è la base ed è l’esponente. Analogamente, in base b=2, ogni numero binario può essere scritto come di cui m è la mantissa, b è la base ed e è l’esponente. In base 2 ogni numero è rappresentato in notazione scientifica normalizzata ha a=1 che, conseguenzialmente, può essere omesso dalla rappresentazione.
Per la rappresentazione dei numeri in floating point, si usa lo standard IEEE 754 che definisce il formato della parola per la rappresentazione in virgola mobile. In una rappresentazione in singola precisione si usa una parola di N=32 bit, suddivisa come segue: 1 bit di segno s, 8 bit di esponente e (e= 127+E - E= esponente della notazione scientifica normalizzata), 23 bit di mantissa m. Non è necessario rappresentare a poiché sempre 1. Questo è definito il bit nascosto. RAPPRESENTAZIONE INSIEMI, CARATTERI E STRINGHE Considerando un insieme, ad esempio rappresentando i giorni della settimana, utilizzando sequenze di 0 e 1:
- possiamo associare ad ogni elemento dell’insieme un codice binario e costruire una tabella di corrispondenza che ad ogni giorno associa un codice binario (solitamente un codice di uguale lunghezza). Si utilizza il numero minimo di bit (ad es. se devo codificare 7 elementi mi servono log(2) 7 = 3 bit. Codifica di caratteri e stringhe (parole) : per la rappresentazione di questi, si segue la stessa strategia dei giorni della settimana, quindi ogni carattere è codificato con una sequenza binaria. Per far sì che due sistemi di calcolo si possano scambiare informazioni è necessario utilizzare lo stesso codice, cioè uno standard di rappresentazione. Le codifiche più comuni sono:
- la codifica ASCII (american standard code for information interchange) e ASCII-estesa, che utilizzano rispettivamente 7 e 8 bit e permettono di rappresentare 128 e 256 caratteri.
- il codice UNICODE (UTF), più recente, che utilizza 16 bit (UTF-16) e permette di rappresentare molti più simboli (216 = 65536) permettendo di includere i simboli delle lingue arabe e orientali. Le stringhe sono sequenze di caratteri terminate da un carattere speciale (\0) che permette di identificarli all’interno di una sequenza. RAPPRESENTAZIONE DI IMMAGINI, VIDEO E SUONI Codifica delle immagini: Le immagini non sono formate da sequenze di oggetti discreti, ma sono un continuo. Per poterle rappresentare bisogna eseguire un passo di discretizzazione o di campionamento, cioè bisogna trasformare le immagini in un insieme di parti discrete che possono essere poi codificate con opportune sequenze di bit. Infine si quantizza l’immagine, cioè si associa un numero ad ogni elemento discreto.
- l’immagine è rappresentata come una matrice pixel;
- la definizione dell’immagine dipende dalla risoluzione, ovvero dal numero di pixel che compongono l’immagine; una risoluzione alta corrisponde ad un numero elevato di pixel e quindi ad un’immagine più definita;
Si utilizzano anche tecniche di compressione che non codificano ogni pixel in modo distinto dall’altro, ma cercano di raggruppare aree di pixel con caratteristiche comuni, così facendo pixel uguali vicini sono memorizzati una volta sola. I formati più utilizzati sono TIFF (tagged image file format), GIF (graphics interchange format), JPEG (Joint photographers expert group), PNG (Portable Network Graphics). Algoritmi di compressione: ● lossless, ovvero senza perdita di informazione
- codificano i dati in modo opportuno, cercando di diminuire il numero di bit necessari per la rappresentazione;
- consentono di ricostruire esattamente la sequenza di dati originali a partire da dati compressi. Esempio: supponiamo di voler memorizzare una sequenza di un milione di caratteri scelti nell’insieme {A, B, C, D}.
- se uso la codifica ASCII servono 8 bit per carattere, in totale 8 milioni di bit
- se uso una codifica ad hoc a lunghezza fissa, esempio A=00, B=01, C=10, D=11, utilizzo 2 bit per carattere, e quindi in totale 2 milioni di bit
- se A compare il 90% delle volte posso comprimere la codifica nel seguente modo: A=0, B=100, C=110, D= per cui la quantità di bit richiesti diventa 900000 · 1 bit + 100000 · 3 bit = 1 200 000 bit ● lossy, ovvero con perdita di informazione
- sfruttano le caratteristiche degli oggetti da rappresentare per scartare informazione poco importanti;
- possono ottenere livelli di compressione elevati, ma non consentono di ricostruire esattamente i dati originali a partire da quelli compressi poiché alcune informazioni sono eliminate dal processo di compressione. Algoritmi di un video: I video sono una sequenza di immagini, detti fotogrammi, in movimento, ovvero riprodotte ad intervalli regolari.
- il movimento delle immagini è ottenuto mostrando una sequenza di immagini alla frequenza di 24-30 al secondo, così facendo l’occhio umano percepisce il movimento come un continuo;
- nella pratica si utilizzano delle tecniche di codifica che permettono di memorizzare solo le differenze tra un fotogrammo e l’altro. (ad esempio, questa tecnica è utilizzata dalla codifica MPEG). Rappresentazione dei suoni: ● Un suono è rappresentato da un’onda continua che evolve nel tempo.
- per rappresentare il segnale viene prima campionato ad intervalli regolari (esempio campionamento a 1 KHz = 1000 campioni/sec = 1 campione/msec);
- successivamente, per ogni campione, il valore assunto dal segnale viene espresso con un numero finito di bit (quantizzazione). L’accuratezza della ricostruzione dipende: ❖ dalla granularità degli intervalli di campionamento: più piccola è la distanza tra un campionamento e il successivo più fedele è la ricostruzione del suono, maggiore è l’occupazione di memoria; ❖ da quanti bit vengono utilizzati per descrivere il suono in ogni campione, più sono i bit migliore è la qualità, maggiore è l’occupazione di memoria. Anche per i suoni si possono usare le tecniche di compressione per minimizzare l’occupazione di spazio della sequenza dei campioni in memoria, qui gli algoritmi di compressione lossy sfruttano il fatto che l’orecchio umano non è in grado di percepire suoni a basso volume sovrapposti ad altri di volume maggiore, per cui possono essere eliminati. (ad esempio l’MP3 utilizza questa tecnica) Lo standard MIME : ● MIME (Multipurpose Internet Mail Extension) è uno standard che permette di riconoscere correttamente la codifica di dati di natura diversa (testo, immagini, suoni etc.). Una codifica MIME comprende:
- un preambolo, in cui viene specificato in modo standard il tipo del dato che stiamo codificando (text/plain,image/jpeg,image/gif);
- un corpo (body), che contiene la codifica vera e propria; E’ utilizzato per codificare i messaggi di posta elettronica o decodificare correttamente il contenuto delle pagine web, infatti l’applicazione che legge la posta elettronica (thunderbird, outlook, etc ) o l’applicazione per navigare su Web ( firefox, chrome, edge, etc ) utilizzano il preambolo per decodificare e presentare i dati in modo corretto. Internet Dispositivo connesso ad una rete= online. Dispositivo non connesso ad una rete= offline. Rete=Internet. La connessione ad internet, generalmente, si realizza tramite un’azienda specializzata nella fornitura di connettività, detta INTERNET SERVICE PROVIDER- ISP. Un modem è un qualunque dispositivo con due funzioni principali: 1) modulazione, riceve un flusso di bit e la codifica sotto forma di segnali elettrici che trasmette lungo la linea telefonica; 2) demodulazione, decodifica i segnali elettrici che gli
La Internet Assigned Number Authority (IANA) è stata preposta all’assegnazione degli indirizzi IP, in modo da controllare che essi siano univoci. Protocolli di trasporto Hanno l’obiettivo di permettere un trasferimento i dati tra due host in maniera trasparente e affidabile, si occupano di stabilire, mantenere e terminare una connessione tra due dispositivi. Il messaggio viene spezzettato in segmenti. Viene introdotto il concetto di porta: ogni dispositivo ha un solo indirizzo Ip ma 2^16 porte, è codificata da 2 byte e permettono di stabilire connessioni multiple. Protocolli di applicazione
- Obiettivi: interfaccia con l’utente.
- Protocolli principali: a. FTP (File Transfer Protocol): protocollo utilizzato per trasferire file tra due macchine. b. HTTP (HyperText Transfer Protocol): protocollo utilizzato dal Web per ottenere file HTML, CSS,... c. SMTP (Simple Mail Transfer Protocol): protocollo utilizzato per l’invio di posta elettronica. d. IMAP (Internet Message Access Protocol): protocollo per la ricezione di posta elettronica. e. DNS (Domain Name System): utilizzato per la risoluzione dei nomi di dominio. Domain Name System - DNS Il nome di un dominio è costituito da una serie di stringhe separate da punti - www.unife.it. I nomi di dominio non sono sensibili alla differenza tra maiuscole e minuscole (sono case insensitive). Le parti di un nome di dominio vanno in ordine di importanza da destra verso sinistra, secondo un ordine gerarchico.La prima parte partendo da destra, la più importante, è detta dominio di primo livello. Un dominio di secondo livello consiste in due parti - unife.it - e così via … Esempio: www.unife.it è un nome di dominio di terzo livello. È un protocollo e sistema utilizzato per la risoluzione di un nome (conversione tra nome di dominio e indirizzo IP). Il sistema è composto da più nameserver organizzati in maniera gerarchica, considerando un nameserver per ogni dominio.
Un name server può essere visto come un elenco telefonico: dato un nome (di dominio) ottieni l’indirizzo (IP). Perché si usa il DNS?
- I Ricordare i nomi è più semplice!
- Agevolare la manutenzione. a. Se metto il mio sito web su un altro server, non devo comunicare a tutti i miei utenti il nuovo indirizzo IP, ma mi basta dire al DNS di aggiornare le mie informazioni. Risolutore DNS I client effettuano richieste a un componente chiamato Risolutore DNS, installato nella propria rete locale o fornito dal proprio ISP, il quale, a sua volta, effettua richieste di risoluzione ai nameserver.Nella realtà vengono applicate tecniche dette di caching per velocizzare le richieste.
Posta elettronica: servizio che permette lo scambio di messaggi tra gli utenti collegati alla rete.
E’ necessario:
➔ disporre di un indirizzo di posta elettronica;
➔ l’indirizzo di posta elettronica del destinatario;
➔ fornire l’oggetto del messaggio (opzionale);
➔ il corpo del messaggio (opzionale).
Gli indirizzi non sono sensibili alla differenza tra maiuscole e minuscole (sono case
insensitive).
Per utilizzare il servizio di posta elettronica esistono due metodi:
1. tramite il client di posta elettronica installato nel computer locale:
➢ La posta ricevuta attende sul server, da dove viene scaricata (per essere letta)
tramite il protocollo IMAP ed inviata tramite il protocollo SMTP;