le macchine - prima tesina informatica

Page 1

LE MACCHINE

Imputato Brunella Comunicazione pubblica e d’impresa

A.A. 20132014

Università di Roma La Sapienza


INDICE

 Macchina di Von Neumann  Schema macchina di Von Neumann  Algebra booleana con tutti gli operatori booleani  Unità di misura della velocità della CPU  Macchine di Turing. Problemi. Esecutori. Linguaggi di programmazione. Grammatiche formali.


Macchina di Von Neumann L’architettura di un computer della maggior parte dei calcolatori è organizzata secondo il modello della cosiddetta Macchina di Von Neumann. I Componenti fondamentali sono: - La Memoria Centrale; - L’Unità centrale di Elaborazione (CPU, Central Processing Unit); - Memorie di massa; - Bus di sistema; - Dispositivi di Input/Output o Periferiche. Affinché un programma possa essere eseguito deve necessariamente risiedere in Memoria centrale. Essa è composta da un certo numero di celle, ciascuna delle quali può memorizzare un’informazione in forma binaria. Le celle hanno generalmente dimensione di un byte e sono numerate con numeri interi da 0 a N numeri. La capacità della Memoria si misura in byte: – Kilobyte(Kb) – Megabyte (Mb) – Gigabyte (Gb) Oltre all’insieme delle celle, la Memoria centrale è costituita da: –Registro Indirizzi: contiene l’indirizzo della cella di memoria che vogliamo leggere o scrivere. –Decodificatore di indirizzi: è il dispositivo che individua la cella rappresentata nel Registro indirizzi. –Registro Dati: contiene l’informazione che deve essere scritta nella cella o che è stata letta dalla cella individuata dal Decodificatore di indirizzi.[1] Il secondo componente ovvero l’Unità centrale di elaborazione ha il compito di eseguire tutte le istruzioni di un programma. Per svolgere questo compito, la CPU si avvale di alcuni componenti come: l’unita logicoaritmetica, l’unità di controllo, i registri. Tra i più importanti registri troviamo il contatore di programma, il registro istruzioni, l’accumulatore, il registro di stato e altri registri generici (ad esempio REG. 1 REG.N). La CPU è costituita da due parti: la parte operatore e la parte operando. La prima, descrive il tipo di operazione da eseguire; la seconda invece rappresenta il dato su cui eseguire l’operazione. L’iter dell’esecuzione di un programma è questo : l’indirizzo della prima istruzione viene memorizzato nel Registro Contatore di Programma; si preleva poi dalla memoria l’istruzione il cui indirizzo è memorizzato nel Contatore di Programma e la si memorizza nel Registro Istruzioni, nel Contatore di Programma viene memorizzato l’indirizzo dell’istruzione successiva e infine si esegue l’istruzione contenuta nel Registro Istruzioni, se il programma non è terminato allora si torna al punto due. Una tecnologia sofisticata come può essere la memoria centrale ha costi molto superiori rispetto alle tecnologie meno fini, ad esempio quelle che consentono di immagazzinare grosse quantità di dati senza però fornire l’accesso al singolo byte. Stiamo parlando delle memorie di massa. Se ci si riferisce ai sistemi di personal computer, le memorie di massa più comuni sono i floppy i CD-ROM e i DVD. I parametri sulla base dei quali è possibile valutare la bontà di una memoria di massa, sono: il tempo di accesso e la capacità di memoria centrale.


L’interconnessione tra i vari componenti del computer è realizzata attraverso la tecnologia dei Bus. Si tratta di dispositivi che consentono l’interconnessione di numerosi elementi attraverso un minimo numero di collegamenti. I BUS trasportano: indirizzi, dati, istruzioni, e segnali di controllo tra i vari dispositivi interconnessi. Un BUS riesce a trasportare numerose informazioni ad alta velocità. Ciò è dovuto dal fatto che esiste un grado di parallelismo che consente di trasferire contemporaneamente un certo numero di bit. I dispositivi di input/output sono quelli che consentono la comunicazione tra computer e mondo esterno. Essi sono interconnessi al computer attraverso dispositivi detti “porte”. Esistono vari dispositivi di porte di input/output. Le principali sono: porta seriale, porta parallela, USB, SCSI. I principali dispositivi di input sono: tastiera, mouse, scanner, digitizer, fotocamera digitale. I principali dispositivi di output sono: il video, la stampante, il plotter e la cassa acustica.[2]

Schema di Von Neumann

[3]

Algebra booleana e operatori booleani Nata a metà del secolo scorso ad opera di Boole, l’algebra booleana ha costituito uno strumento molto potente per lo sviluppo del pensiero matematico e per la progettazione dei circuiti dei calcolatori elettronici. Nell’algebra booleana sono ammessi solo due valori : VERO e FALSO; di conseguenza esistono solo due costanti: 0 e 1. Le variabili vero e falso sono chiamate variabili booleane o entità binarie. Su di esse possono essere compiute operazioni particolari i cui risultati sono ricavabili dalle cosiddette tabelle di verità; i fondamentali sono AND (operatore di congiunzione, equivalente alle “e” del linguaggio naturale); OR (operatore di disgiunzione, equivalente alla “o” del linguaggio naturale); e NOT (operatore di negazione). L’operazione AND ,chiamata anche prodotto logico, corrisponde all’intersezione insiemistica. Il risultato è vero solo se sono vere entrambe le variabili. L’operazione OR, chiamata anche somma logica, corrisponde all’unione insiemistica. Il risultato è vero solo se è vera almeno una delle variabili. L’operazione NOT, chiamata anche negazione logica, corrisponde alla complementazione insiemistica. Il risultato è il complemento dell’unica variabile.


AND V F V V F F F F

OR V F

V F V F V F

NOT V F

F V

TEORIA DEGLI INSIEMI AND intersezione ∩ anche prodotto logico OR unione U anche somma logica NOT negazione — anche negazione logica[4]

Unità di misura della velocità della CPU La frequenza, indicata comunemente come velocità di clock della CPU, si misura in HZ (hertz) ed indica il numero di oscillazioni al secondo. Tanto maggiore è la frequenza a cui lavora il microprocessore, tanto maggiore è il numero di istruzioni che è in grado di eseguire in un secondo e, quindi, tanto migliori sono le sue prestazioni Le unità di misura per gli Hz sono: Hz (hertz), KHz (chilohertz = 1000 Hz), MHz (Megahertz = 1.000.000 Hz), GHz (Gigahertz = 1.000.000.000 di Hertz). Gli attuali microprocessori hanno raggiunto la velocità di 3,6 GHz, mentre circa 16 anni fa la velocità era appena di 25 MHz. Quando si legge che un microprocessore ha una velocità ad esempio di 100 MHz, vuol dire che compie 100 milioni di cicli al secondo. Altra caratteristica principale che caratterizza un microprocessore è la quantità di bit che ad ogni singolo step può prendere in considerazione. Più è elevato il numero di bit che un microprocessore può trattare in ogni singola operazione maggiore è la velocità di elaborazione di un computer. Soprattutto in questo campo sono stati compiuti enormi progressi. Basti pensare che soltanto qualche anno fa i personal computer erano dotati di microprocessore a 8 bit. Oggi, i più potenti processori per personal computer, hanno una capacità di ben 64 bit anche se esistono chip a 4, 8, 16 e 32 bit. Abbiamo parlato della ‘frequenza di clock’ come di uno degli indici della velocità di un processore. Ma ricordiamo che la potenza effettiva di un processore non dipende solo dalla sua frequenza di clock ma anche dal numero e dal tipo di istruzioni che il processore è in grado di eseguire. Questa misura viene espressa in MIPS (milioni di istruzioni per secondo) ed indica la potenza di un processore.[5]


Macchine di Turing. Problemi. Esecutori. Linguaggi di programmazione. Grammatiche formali. Per Macchina di Turing (MdT), si intende un tipo di esecutore automatico equipaggiato con memoria. La memoria di una MdT è un nastro di lunghezza illimitata sul quale possono essere collocati dei simboli. I simboli sul nastro sono posti in sequenza. Anche se la lunghezza del nastro è illimitata, il numero di simboli importanti in ogni istante della computazione risulta essere finito. Questo deriva dal fatto che i dati in ingresso devono essere in quantità finita, in quanto un algoritmo non ha la possibilità di effettuare delle elaborazioni su una quantità infinita in ingresso.[6]

PROBLEMI E’ bene introdurre una classificazione tra i problemi, anche al fine di chiarire che non tutti i problemi ammettono soluzioni o le ammettono in modo univoco. Una classificazione semplificata di problemi relativamente alle soluzioni che possono ammettere è la seguente:  Problemi che ammettono sempre una sola soluzione: ad esempio dati due numeri interi dire se sono uguali e, in caso contrario, dire quale è il maggiore.  Problemi che ammettono in generale più soluzioni: ad esempio cercare il numero telefonico di Mario Rossi, naturalmente in un elenco telefonico saranno molteplici perciò ci troviamo di fronte a un problema che presenta, nella generalità dei casi, molte soluzioni.  Problemi di cui non si sa se esistono soluzioni come le congetture matematiche cioè affermazioni di evidente realtà ma senza alcuna dimostrazione formale. Perciò, dato un problema, l’obiettivo consiste nel determinare tutte le possibili soluzioni ad esso.[7] ESECUTORI La MdT può leggere e scrivere simboli sul nastro usando un dispositivo di lettura/scrittura (comunemente detto testina) che si può muovere sul nastro seguendo la sequenza oppure tornando indietro: nel primo caso si parla di movimento della testina verso destra, nel caso opposto si parla di movimento verso sinistra. Una MdT ha associati un numero finito di stati: in base allo stato e al simbolo che si trova sotto la testina in un certo istante del calcolo, la MdT decide se e con quale simbolo sostituire il simbolo letto, in quale direzione muovere la testina (a destra oppure a sinistra) e in quale nuovo stato passare. Esistono particolari stati finali: quando viene raggiunto uno di questi stati il calcolo termina. Si osservi che a ogni passo del calcolo la MdT può modificare lo stato del nastro sostituendo il simbolo appena letto.[8] LINGUAGGI DI PROGRAMMAZIONE I linguaggi di programmazione, sono tutti uguali poiché devono essere in grado di risolvere tutti i problemi che è possibile risolvere. Si possono citare esempi di linguaggi di programmazione estremamente semplici, rifacendosi ai più noti modelli di calcolo: la Macchina di Turing, oltre a costituire un modello di calcolatore, è essenzialmente un linguaggio di programmazione, costituito da pochissime istruzioni. Se è vero che il modello della Macchina di Turing consente di risolvere tutti i possibili problemi, è altrettanto vero che non consente di farlo nel modo più comodo e sicuro. Per questo sono stati definiti linguaggi di programmazione estremamente diversi tra loro, in quanto ciascuno dotato di propri livelli di qualità. Così come esistono


diversi modelli di calcolo, esistono linguaggi di programmazione che si ispirano ad un modello piuttosto che all’altro, ovviamente impattando sull’approccio alla soluzione dei problemi. La tradizionale classificazione di linguaggi di programmazione è la seguente:  Linguaggi imperativi  Linguaggi funzionali  Linguaggi dichiarativi I linguaggi imperativi si ispirano al modello della Macchina di Turing, i linguaggi funzionali a quello delle funzioni ricorsive primitive, i linguaggi dichiarativi a quello dei linguaggi logici.[9] GRAMMATICHE FORMALI In teoria dei linguaggi formali, una grammatica formale è una struttura astratta che descrive il linguaggio formale in modo preciso, è cioè un sistema di regole che delineano matematicamente un insieme (di solito infinito) di sequenze finite di simboli (stringhe) appartenenti ad un alfabeto anch’esso finito. Le grammatiche formali si suddividono in due categorie principali: generativa e analitica.  Una grammatica generativa, il genere più conosciuto, è un sistema di regole grazie alle quali tutte le possibili stringhe nella lingua da descrivere sono generate tramite la riscrittura successiva di stringhe che cominciano con un simbolo iniziale predefinito.  Una grammatica analitica invece, è un sistema di regole che presuppone una stringa arbitraria come input e che successivamente riduce o analizza quella stringa di input finali concedendo ad un connettore booleano un risultato del tipo “si/no” indicando se la stringa di input è o non è parte della lingua descritta dalla grammatica. In breve, una grammatica analitica descrive come leggere una lingua, mentre una grammatica generativa descrive come scriverla.[10]


Bibliografia Capelli M., Enciclopedia della scienza e della tecnica, Treccani., 2006 [6]. Google., Grammatiche informali, wikipedia [10] Google., immagini, schema di Von Neumann [3]. Informaquiz., GingerLab,2010-2012 [5]. Ing., Cosentino M., Sistemi informativi aziendali, corso di laurea in ingegneria gestionale, 2008-2009 [1]. Sapienza universitĂ di Roma., dipartimento di comunicazione e ricerca sociale, web cattedra, Professoressa Scaringella A. [8]. Scaringella A., Elementi di informatica per le scienze sociali, Roma, edizioni Kappa,2003 [2];[4];[7];[9].


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.