Informatica generale
Università Milano-Bicocca
Slides, libro e appunti presi a lezione
Lezione 1 (5 ottobre), introduzione
Software principale il sistema operativo. Software applicativo è il software che installi sul SO, esempio Word.
L'informatica tratta i dati, che possiamo suddividere in:
- Dati semplici: numeri, caratteri, date
- Dati complessi: immagini, grafici, filmati, suoni, animazioni
Ciclo di elaborazione dell'informazione
- Input: Inserisco qualcosa all'interno del ciclo dell'informazione, esempio passo un audio, un testo, dispositivi input: scanner, tastiera.
- Elaborazione: Una volta raccolti i dati li possiamo elaborare, modificare un’immagine o un testo, possiamo sommare, unire più file.
- Output: Per vedere, ascoltare, ..., i dati elaborati. I dispositivi sono stampanti, altoparlanti.
- Memorizzazione: I dati utilizzati vengono memorizzati per essere sempre disponibili, la memorizzazione avviene sull’hard disk.
- Distribuzione: I dati possono essere stampati, distribuiti o trasmessi da un computer a un altro, tramite e-mail documenti cartacei, internet.
Aspetti applicativi più rilevanti della IT (Information Technology)
- Gestione aziendale: Sistema informativo aziendale = insieme di tutti i dati e tutti i processi che riguardano la raccolta, l’archiviazione, l’elaborazione, la distribuzione dei dati nelle attività operative e di controllo. Sistema informatico = insieme delle risorse tecnologiche facenti parte il sistema informativo.
- Office automation, Database, Educazione, Commercio, Giochi ed intrattenimento.
1945: Proposta dell’architettura general purpose (macchina di Von Neumann).
1969: Nasce ARPANET, net = network, arpa = associazione militare americana.
Lezione 2 (11 ottobre)
Lingua del computer: linguaggio binario
- Segnali analogici: Sono segnali molto sensibili alle interferenze (rumore).
- Segnali digitali: Possono assumere solo 2 stati, per un dispositivo è semplice distinguere i due stati, per cui sono meno soggetti alle interferenze.
Le informazioni del mondo esterno vengono memorizzati/elaborate in un computer tramite una codifica “rappresentazione binaria”, quando le informazioni devono passare dal pc al mondo esterno avviene una fase chiamata decodifica, trasformare le informazioni da linguaggio binario a un linguaggio comprensibile per il mondo.
Informazioni tradizionali
- Numeri (interi positivi, positivi e negativi, reali)
- Testi
Informazioni multimediali
- Immagini fisse (vettoriali, bitmap)
- Audio
- Video
Codifica binaria
Byte = 8 bit, 28 = 256 informazioni.
Sistemi numerici
- Sistemi numerici non posizionali: Il valore delle cifre è indipendente dalla posizione (esempio numeri romani).
- Sistemi numerici posizionali: Il valore delle cifre dipende dalla posizione all’interno del numero.
Sistemi numerici posizionali a base fissa
Il sistema decimale è un sistema posizionale a base fissa, che utilizza:
- r = 10
- d = 0,1,2,3,4,5,6,7,8,9
Esempio = 8427 (8 cifra più significativa, 7 meno significativa).
Anche il sistema binario è un sistema numerico posizionale a base fissa:
- r = 2
- d = 0,1
- ogni cifra è detta bit (binary digit)
Il 2 come apice indica la base di scrittura ovvero base 2. Quando usiamo base 10 non la scriviamo.
Abbiamo trasformato un numero da numero in base 2 a un numero in base 10, ottenendo 11 in base 10.
Da decimale a binario
Sistema ottale
- r = 8
- d = 0,1,2,3,4,5,6,7
Sistema esadecimale
- r = 16
- d = 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Bit necessari
Le macchine hanno vincoli spaziali, è necessario conoscere il valore massimo rappresentabile.
Con n bit si può rappresentare al massimo.
Per poter rappresentare fino a X numeri, sono necessari un numero di n bit pari a.
Overflow: quando si supera il limite di bit consentiti, andiamo in overflow ovvero un errore di superamento del limite di scrittura.
L’unità atomica è il bit.
L’insieme di 8 bit è detto byte.
Word: tipicamente 16, 32 o 64 bit. L’insieme di bit è una caratteristica del calcolatore, essa influisce: sulla larghezza degli indirizzi, la dimensione dei registri del processore, la larghezza dei bus (word o multipli di essa).
Intervalli di variabilità
- Bit: Numero di configurazioni 2
- Intervallo di variabilità: 0,1
- Byte: Numero di configurazioni 256
- Intervallo di variabilità: dipende dal tipo di codifica
Codifica dei testi
Si utilizza una tabella arbitraria, con uno standard riconosciuto quasi universalmente. Che può essere:
- Codice ASCII: (American Standard Code for Informatic Interchange), dove ogni carattere (simbolo) è codificato con 7 bit (128 simboli diversi).
- Extended ASCII: 8 bit per carattere
- UNICODE: 16 bit per carattere
Lezione 3 (12 ottobre)
Software
È il software che implementa la funzionalità di un sistema di elaborazione, possiamo distinguere i software in due categorie:
- Software di sistema: sistema operativo e linguaggi di programmazione. Il sistema operativo permette di avviare programmi applicativi.
- Programmi applicativi: come ad esempio, Google, Word, ecc.
Applicazioni: compiti eseguiti con l’ausilio del computer.
Programmi Applicativi: programmi utilizzati per svolgere le applicazioni.
Il processo dell’informatica
Le interfacce utente: rappresentano il mezzo di interazione tra l’utente e la macchina.
GUI: interfacce grafiche utente.
Caratteristiche comuni delle GUI
- Interfaccia a finestre
- Funzioni attivabili tramite click del mouse
- Impiego della tecnologia WYSIWYG
- Standardizzazione dei comandi tra le diverse applicazioni, es: copia incolla cerca taglia
Principali funzioni del SO
- Gestire le risorse dell’elaboratore
- Controllare che le operazioni vengano eseguite in modo regolare
- Determinare dove memorizzare dati e programmi
- Coordinare la comunicazione tra i vari componenti del computer
- Gestire l’interazione tra l’utente e i programmi applicativi
Ruolo del BIOS
BIOS: basic input output system. Ciò che è memorizzato all’interno del BIOS non andrà perso ad ogni riavvio del pc o con un’interruzione brusca del pc (esempio interruzione di corrente).
- È un programma memorizzato su un chip di memoria (ROM) con le seguenti funzioni:
- Interpreta i dati trasmessi tramite tastiera
- Visualizza i caratteri sullo schermo
- Gestisce le comunicazioni attraverso le porte del computer
- Fornisce un collegamento fra il SW e i componenti HW dell’elaboratore
L’interprete dei comandi: è la porzione di SO che si occupa di acquisire l’input dell’utente e di interpretarlo (esempio digitazione da tastiera, click con il mouse).
I nuovi SO sono multitasking (permettono l’esecuzione di più programmi contemporaneamente), i programmi per essere eseguiti hanno bisogno dell’accesso alla CPU, ma essendoci soltanto una CPU per computer, sarà il SO a regolare il processo di entrata nella CPU dai vari programmi.
In un SO multithreading i programmi applicativi possono svolgere più operazioni parallelamente.
Lezione 4 (18 ottobre)
Architettura dei calcolatori
Che cos'è un calcolatore? Come funziona un calcolatore?
- Un calcolatore è un sistema.
- Un sistema è un oggetto costituito da molte parti (componenti) che interagiscono, cooperando, al fine di ottenere un certo comportamento.
Studiare l'architettura di un sistema vuol dire:
- Individuare ciascun componente del sistema
- Comprendere i principi generali di funzionamento di ciascun componente
- Comprendere come i vari componenti interagiscono tra di loro
Hardware e software
La prima decomposizione di un calcolatore è relativa alle seguenti macro-componenti:
- Hardware: la struttura fisica del calcolatore, costituita da componenti elettronici ed elettromeccanici.
- Software: l'insieme dei programmi che consentono all'hardware di svolgere dei compiti utili. Il software comprende il software di base (tra cui il sistema operativo) e il software applicativo.
Sommario hardware
La CPU comunica con la memoria attraverso i BUS.
- L'unità centrale di elaborazione (CPU)
- Componenti fondamentali
- Data path
- Ciclo macchina
Caratteristiche fondamentali del calcolatore
Capacità di eseguire sequenze di istruzioni memorizzate.
- Calcolatore = Unità di Elaborazione + Unità di Controllo
- Preleva le istruzioni dalla memoria
- Interpreta i codici di istruzione
- Effettua le azioni che questi prevedono
Organizzazione a livelli (calcolatore)
Hardware e software sono organizzati a livelli (o strati).
- Ciascun livello corrisponde a una macchina (reale o virtuale) in grado di eseguire un proprio insieme di operazioni.
- Ciascun livello fornisce un insieme di operazioni più semplici da utilizzare rispetto a quelle del livello sottostante.
Componenti di un calcolatore
Bus e soluzione master-slave
Il Bus è una linea a cui sono contemporaneamente connesse le unità del calcolatore e che consente trasferimento di dati tra tali unità.
Problema: contesa su un mezzo condiviso!
Soluzione: CPU = master, periferiche = slave.
Pregi bus e master-slave
- Semplicità: 1 sola linea di connessione # di dispositivi
- Estendibilità: nuovi dispositivi possono essere aggiunti tramite un'interfaccia al bus senza influenzare l'HW preesistente
- Standardizzabilità: definizione di normative che consentono a periferiche di costruttori diversi di interagire correttamente
Difetti bus e master-slave
- Lentezza: l'uso in mutua esclusione del bus inibisce almeno parzialmente la parallelizzazione delle operazioni di trasferimento di dati tra dispositivi
- Limitata capacità: al crescere del numero di dispositivi la presenza di una sola linea comporta un limite alla capacità di trasferire dati
- Sovraccarico della CPU: l'unità centrale viene coinvolta in tutte le operazioni di trasferimento di dati
Schema di riferimento dei bus
- Bus dati: utilizzato per trasferire dati (es. fra memoria e CPU, fra CPU e interfacce di I/O)
- Bus indirizzi: che identifica la posizione delle celle di memoria un cui la CPU va a scrivere o leggere
- Bus di controllo: in cui transitano i segnali di controllo che consentono di selezionare le unità coinvolte in un trasferimento dati (sorgente e destinazione), di definire la direzione dello scambio (scrittura o lettura)
Lezione 5 (19 ottobre)
Architettura di Von Neumann
Burks, Goldstein e Von Neumann sono stati i primi a proporre che il codice del programma potesse essere memorizzato nella stessa memoria dei dati. Quando apro Word (installato sull’hard disk), un frammento di Word si va a memorizzare nella CPU per permettere al programma di funzionare.
- Memoria indifferenziata per dati o istruzioni
- Solo l’interpretazione da parte di CPU stabilisce se una data configurazione di bit è da considerare come un dato o come un’istruzione
CPU: Unità centrale di elaborazione
Elementi di una CPU
- Unità di controllo: Legge le istruzioni dalla memoria e ne determina il tipo
- Unità aritmetico-logica: Esegue le operazioni necessarie per eseguire le istruzioni, esegue operazioni di tipo matematico e di tipo logico
- Registri: Supporti di memorizzazione all’interno della CPU, pro: accesso immediato contro: quantità di dati salvabili molto ridotta
Memoria ad alta velocità usata per risultati temporanei, servono per avere accesso a informazioni in maniera veloce.
- Determina il parallelismo della CPU
- Esistono registri generici e registri specifici: Program Counter (PC), Instruction Register (IR)
Tre tipologie di istruzioni
- Istruzioni aritmetico logiche (Elaborazione dati): Somma, sottrazione, divisione, And, Or, Xor, ..., Maggiore, minore, uguale, maggiore uguale, ...
- Controllo del flusso delle istruzioni: Sequenza, Selezione, Ciclo a condizione iniziale, a condizione finale, ...
- Trasferimento di informazioni: Trasferimento dati e istruzioni tra CPU e memoria, Trasferimento dati e istruzioni tra CPU e dispositivi di I/O
Data path: percorso dati.
Esecuzione delle Istruzioni all’interno della CPU Ciclo Fetch-Decode-Execute: Prendi l'istruzione corrente dalla memoria e mettila nel registro istruzioni (IR) [Fetch]. Incrementa il program counter (PC) in modo che esegui l'istruzione contenga l'indirizzo dell'istruzione successiva. Carica la parola, se necessario, in un registro della CPU [Decodifica]. Se l'istruzione usa una parola in memoria determina dove si trova.
Struttura semplificata di una CPU
Registri di CPU
- Registro Istruzione (IR): Usato per contenere l'istruzione in corso di esecuzione. Caricato in fase di fetch determina le azioni svolte durante la fase di esecuzione. I bit del registro I indicano l'istruzione appena letta dalla RAM e da decodificare.
- Program Counter (PC): Tiene traccia dell'esecuzione del programma. Contiene l'indirizzo di memoria in cui è memorizzata la prossima istruzione da eseguire.
- Registro Indirizzi Memoria (MAR): Contiene l'indirizzo della locazione di memoria da leggere o scrivere. La dimensione di MAR determina l'ampiezza dello spazio di memoria fisica. I bus hanno indirizzi di 32 bit. I bit del registro MAR indicano l'indirizzo di una parola in RAM cui contenuto deve essere letto o scritto dal processore.
- Registro Dati Memoria (MDR): Registro attraverso il quale viene scambiata l'informazione tra la memoria e la CPU. Tradizionalmente la dimensione di MDR dà la misura del grado di parallelismo della macchina (8, 16, 32, 64 bit). I bit del registro MDR indicano una copia del contenuto di una parola in RAM letto dal processore o il valore di bit che devono essere scritti in RAM dal processore.
PSW: (Program Status Word) contiene info riguardo lo stato del programma.
RO, R1,...Rn: Registri di uso generale, sono supporti per l’esecuzione di istruzioni memorizzando ad esempio: il contenuto di una parola di memoria letta dal processare,..
Registro di Stato (SR): bit del registro SR indicano che una particolare condizione si è verificata a seguito dell'esecuzione di un'istruzione, ad esempio, se un'istruzione di somma genera un overflow allora la ALU scrive un certo valore nel registro SR.
CISC e RISC
sono due modi di esecuzione delle istruzioni nella CPU:
CISC: Complex Instruction Set Computing. Complex: esegue istruzioni complesse.
- Un repertorio di istruzioni esteso è preferibile perché:
- Istruzioni potenti semplificano la programmazione
- Riduce il gap tra linguaggio di macchina e linguaggio di alto livello, perché può sfruttare istruzioni complesse
- L'uso efficiente della memoria (all'epoca era costosa) era la preoccupazione principale: Meglio avere codici compatti
RISC: Reduced Instruction Set Computing. L’approccio RISK si basa su un numero limitato di istruzioni, non come il CISC.
- Memorie più veloci ed economiche:
- Posso anche mettere un numero maggiore di istruzioni, però più semplici.
- Comportamento dei programmi:
- L'80% delle istruzioni eseguite corrispondeva al solo 20% del repertorio
- Conviene investire nella riduzione dei tempi di esecuzione di quel 20%, anziché aggiungere raffinate istruzioni, quasi mai usate, ma responsabili dell'allungamento del tempo di ciclo di macchina
- Conviene costruire processori molto veloci, necessariamente con repertori
RISC - Criteri di progettazione
- Frequenza di clock (velocità della CPU): Velocità con cui gli istanti di tempo si succedono all'interno della CPU. Si misura in HZ, che significa "volte al secondo". 2Hz = 2 volte al secondo.
- Periodo di Clock: intervallo di tempo tra un istante ed il successivo. È l'inverso della frequenza di clock. Il periodo di clock deve essere sufficientemente "lungo" da consentire a tutti i segnali elettrici di arrivare.
- Le istruzioni devono essere semplici, Tutte le istruzioni occupano lo stesso spazio di memoria (una parola).
- Ristretto numero di formati. La codifica "ordinata" consente accorgimenti per velocizzare l'esecuzione (pipeline), difficilmente applicabili a repertori di istruzioni complesse.
- La semplificazione del repertorio tende a far aumentare la dimensione del codice. Non è un problema, vista la tendenza alla riduzione dei costi e all'aumento della densità delle memorie.
- Dal punto di vista della velocità i guadagni che si ottengono nel semplificare le istruzioni sono superiori all'effetto negativo del maggior numero di istruzioni per programma.
L'Unità Aritmetico-Logica (ALU) è costituita da un insieme di circuiti in grado di svolgere le operazioni di tipo aritmetico e logico. La ALU legge i dati contenuti all'interno dei registri generali, esegue le operazioni e memorizza il risultato in uno dei registri generali.
Come sono fatte le istruzioni
Che tipo di istruzioni può eseguire un processore, esempi:
- Leggi la parola in RAM all'indirizzo 5 e mettila nel registro R0.
- Scrivi il contenuto del registro R1 nella parola di memoria all'indirizzo y.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.