




















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Un'introduzione ai concetti fondamentali dell'informatica, esplorando l'algebra booleana, la rappresentazione dei numeri in diverse basi e la struttura di un calcolatore. Esempi pratici e illustra i principi di base dell'informatica, rendendolo un'utile risorsa per studenti che si avvicinano a questa disciplina.
Tipologia: Dispense
1 / 28
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





















L’informazione potrebbe essere definita come un messaggio, qualcosa che può essere comunicato da un ente che trasmette (sender) a un ente che riceve (receiver). In una comunicazione, che avviene attraverso un dato alfabeto di simboli. L’informazione viene associata a ciascun simbolo trasmesso, e viene definita come la riduzione di incertezza che si poteva avere a priori sul simbolo trasmesso. Se l’informazione viene vista semplicemente come un messaggio, allora non risulta necessario avere accuratezza. In realtà, dalla definizione formale di informazione che alla base della teoria dell’informa, si evince che il termine informazione non ha solo un significato tecnico ma essa è fornita anche da una misura.
I dati sono consistono di fatti e di configurazioni. Essi diventano informazione se interpretati in un contesto utilizzando la conoscenza sul contesto stesso. La conoscenza, quindi, è un insieme di modelli costruiti per comprendere il mondo.
Dato un evento con probabilità di occorrenza ᡨ, l’informazione ad esso associata è: ᠵ = − log⡰ ᡨ
La quantità di informazione che permette di distinguere uno di due eventi equiprobabili e mutuamente esclusivi è l’unità di misura dell’informazione, detta bit:
ᠵ = − log⡰
Il bit è l’unità elementare di informazione rappresentabile: valori 0 e 1. Con 1 bit si possono rappresentare due stati (0/1, on/off, ecc…), mentre combinando più bit si può codificare un numero maggiore di stati: con 2 bit si possono rappresentare 2 ⡰^ = 4 stati, con ᠷ bit si possono rappresentare 2 〒^ stati.
Le unità derivate del bit sono le seguenti: Byte = 8 bit KiloByte (KB) = 2 ⡩⡨^ byte ≅ 10 ⡱^ byte MegaByte (MB) = 2 ⡰⡨^ byte ≅ 10 ⡴^ byte GigaByte (GB) = 2 ⡱⡨^ byte ≅ 10 ⡷^ byte TeraByte (TB) = 2 ⡲⡨^ byte ≅ 10 ⡩⡰^ byte
essere costituito da regole non ambigue, cioè interpretabili in modo univoco qualunque sia l’esecutore che le legge.
L’automa è un sistema che imita il comportamento umano ed in grado di riceve informazioni dall’esterno (input), reagire alle stesse elaborandole (processing), e inviare informazioni di nuovo all’esterno (output).
Il calcolatore elettronico è un tipo di automa composto da componenti elettronici.
I sistemi informatici sono degli strumenti programmabili progettati e realizzati per trattare informazione. Programmabile significa essere indipendente dall’ambiente in cui si opera e dagli agenti di calcolo che eseguono le operazioni. I computer non sono altro che particolari macchine in grado di eseguire algoritmi in particolari ambienti, purché gli algoritmi siano descritti in opportuni linguaggi chiamati linguaggi di programmazione. Alla luce di queste considerazione si può dedurre che: ᡂᡰᡧᡙᡰᡓᡥᡥᡓᡸᡡᡧᡦᡗ = ᡂᡰᡧᡖᡳᡸᡡᡧᡦᡗ ᡖᡡ ᠧᡤᡙᡧᡰᡡᡲᡥᡡ Se l’esecutore degli algoritmi è un sistema informatico allora tali algoritmi vengono detti programmi. Il programma risiede in memoria e viene eseguito, istruzione dopo istruzione, automaticamente dall’esecutore (CPU).
Il compito di un programmatore consiste in:
ideare un algoritmo efficace per la risoluzione di un problema dato; tradurre questo algoritmo in istruzioni (operazioni) eseguibili da un computer tramite un linguaggio di programmazione.
L’esigenza di comunicare, memorizzare ed elaborare informazioni ha determinato lo sviluppo di tecniche di rappresentazione dell’informazione sia analogiche che digitali. La rappresentazione analogica di un’informazione si presenta sotto forma di un segnale che varia con continuità all’interno di un prefissato intervallo di valori (segnale analogico). La rappresentazione digitale ha forma di un segnale che assume un numero finito, molto limitato di valori significativi diversi (segnale digitale o discreto).
La conversione analogico/digitale, che trasforma un segnale analogico in una stringa di bit, si ottiene tramite due distinte operazioni: il campionamento del segnale, in cui si preleva una successione di campioni a intervalli costanti di tempo. Se il campionamento avviene con una frequenza sufficientemente alta (almeno il doppio della massima frequenza contenuta nel segnale analogico), è possibile con un procedimento di conversione digitale-analogico, ricostruire la forma d’onda originaria (Teorema di Shannon); la quantizzazione dei campioni, che consiste nel codificare ciascun campione con un numero finito di bit (profondità di bit) La conversione A/D è intrinsecamente affetta dall’errore di quantizzazione che è dovuto alla necessità di rappresentare ciascun numero reale con una stringa di bit di lunghezza finita.
Codificare è il processo che porta ad assegnare una rappresentazione all’informazione. Scegliere una codifica appropriata è fondamentale, in quanto ha influenza sulle comunicazioni in termini di: efficienza (numero di bit usato); costo (complessità dei circuiti); affidabilità; sicurezza (crittografia). Gli schemi di codifica che puntano ad un’elevata efficienza comprimono i dati, eliminando ogni ridondanza. Viceversa, quelli che puntano ad un’elevata affidabilità incrementano la ridondanza, al fine di dotare il codice della capacità d’individuazione e correzione degli errori.
Nel caso di scelte tutte equiprobabili si usa di norma un codice a lunghezza fissa in cui tutte le parole codice hanno lo stesso numero di bit (lunghezza). Per le 10 cifre decimali si halog⡰ 10 = 3.322 < 4, si può quindi usare un codice a lunghezza fissa di 4 bit (in realtà con 4 bit si possono codificare fino a 16 simboli). Per un alfabeto di 84 caratteri (lettere minuscole e maiuscole, le cifre, alcuni segni di punteggiatura, ecc…) si ha log⡰ 84 = 6.392 < 7, si può quindi usare un codice a lunghezza fissa di 7 bit (in realtà con 7 bit si possono codificare fino a 128 simboli).
Il matematico inglese George Boole (1815-64) fondò un campo della matematica e della filosofia chiamato logica simbolica. Il suo nome è rimasto legato ad un insieme di operatori che sono molto utili e molto presenti nel campo dell’informatica (sia hardware che software) e che si chiamano operatori booleani.
Gli operatori booleani di base sono: ᠧᡀᠰ ≡ ∧ ᡁᡄ ≡ ∨ ᡀᡁᡆ ≡ ¬ Essi vengono applicati a uno (nel caso del NOT) o due o più (nel caso di AND e OR) argomenti e ritornano dei valori di verità.
Sia B un insieme formato da almeno 2 elementi, si dice algebra booleana, avente S come supporto, la struttura algebrica costituita da: da S; da due operazioni binarie su B, OR e AND; da un’operazione unaria NOT su B; da un elemento particolare di B che indichiamo con 0. L’algebra booleana gode delle seguenti proprietà, ∀ ᡓ, ᡔ ∈ ᠨ risulta: a OR b = b OR a a AND b = b AND a NOT (NOT (a)) = a NOT (a OR b) = NOT (a) AND NOT (b) a AND 0 = 0 a OR 0 = a Per ogni logica booleana si definisce l’elemento 1 come il complementare dello 0: 1 = NOT (0). Per esso si deducono le proprietà, ∀ ᡓ ∈ ᠨ risulta: a OR 1 = 1 a AND 1 = a 0 AND 1 = 0 0 OR 1 = 1 Proprietà distributiva di uno verso l’altro: a OR (b AND c) = (a OR b) AND (a OR c) a AND (b OR c) = (a AND b) OR (a AND c) Leggi di De Morgan: a AND b = NOT ((NOT a) OR (NOT b)) a OR b = NOT ((NOT a) AND (NOT b))
Nello stilare delle espressioni bisogna rispettare le seguenti regole di precedenza: NOT ha la massima precedenza; poi segue AND; infine OR. Per alterare queste precedenze bisogna usare le parentesi (a volte usate solo per maggiore chiarezza).
Per valutare un espressione booleana si usa la tabella di verità:
In una notazione posizionale le cifre vengono prodotte nell’ordine dalla meno significativa (LSB) alla più significativa (MSB). Il numero ᡴ in una notazione posizionale è una sequenza di cifre che si costruisce con la seguente espressione:
ᡴ = ᡖ⡨ + ᠨ ∗ ᡖ⡩ + ᠨ⡰^ ∗ ᡖ⡰ + ᠨ⡱^ ∗ ᡖ⡱ + ⋯ = ᡖ⡨ + ᠨ ∗ 䙲ᡖ⡩ + ᠨ ∗ 㐵ᡖ⡰ + ᠨ ∗ 䙦ᡖ⡱ + ⋯ )㐹䙳
Conseguentemente la cifra ᡖ⡨ si può ricavare come resto della divisione intera ᡴ 㐕ᠨ. Il quoziente di tale divisione è ᡩ = ᡖ⡩ + ᠨ ∗ 㐵ᡖ⡰ + ᠨ ∗ 䙦ᡖ⡱ + ⋯ )㐹, perciò le altre cifre si possono ottenere iterando il procedimento. Non a caso tale algoritmo di conversione è detto “algoritmo delle divisioni successive”. Algoritmo di conversione: metodo operativo Per convertire il numero ᡴ in una stringa di cifre che ne rappresentino il valore in base ᠨ si procede in questo modo: si divide ᡴ per ᠨ − il resto costituisce la cifra meno significativa (LSB) − il quoziente serve ad iterare il procedimento se tale quoziente è zero, l’algoritmo termina; se non lo è, lo si assume come nuovo valore ᡴ′ si itera il procedimento con il valore ᡴ′ Esempio: Numero Base Calcolo valore Stringa Quindici 4 15 / 4 = 3 con resto 3 3 / 4 = 0 con resto 3 33
Undici 2
11 / 2 = 5 con resto 1 5 / 2 = 2 con resto 1 2 / 2 = 1 con resto 0 1 / 2 = 0 con resto 1
Sessantatre 10 63 / 10 = 6 con resto 3 6 / 10 = 0 con resto 6 63
Sessantatre 16 63 / 16 = 3 con resto 15 3 / 16 = 0 con resto 3 3F
Se una base ᠨ1 = ᠨ ∗ 2ぁ, ogni cifra nella rappresentazione ᡄ1 corrisponde a ᡦ cifre nella rappresentazione ᡄ2. Ne consegue che per passare dalla rappresentazione di un numero in basi ᠨ1 a quella in base ᠨ2 (o viceversa) non è necessario applicare l’algoritmo di conversione, ma si può agire direttamente sostituendo ordinatamente ogni cifra di ᡄ1 con gruppi di ᡦ cifre di ᡄ2.
Tutte le notazioni posizionali utilizzano per le operazioni le stesse regole, indipendentemente dalla base di rappresentazione adottata. Quindi le regole già note per la familiare rappresentazione in base 10 restano valide.
In un elaboratore l’esecuzione di operazioni può generare degli errori, perché è impossibile rappresentare tutti gli infiniti numeri. In particolare, con ᡦ bit, esiste un massimo numero rappresentabile: 2 ぁ^ − 1.
Come si evince dalla tabella, il risultato è completamente errato, perché è andato perso il contributo più significativo. La causa è che i registri dell’elaboratore hanno posto per ᡦ bit, e quindi il bit di riporto che si genera viene perduto, si è verificato l’overflow (straripamento). All’overflow non c’è rimedio, per evitarlo si può solo usare un maggior numero di bit.
I numeri interi sono un’estensione dei numeri naturali (1, 2, 3) che include lo zero e tutti i valori negativi della forma – ᡀ, essendo ᡀ un naturale. La rappresentazione dei numeri interi fa sorgere il problema, in un elaboratore, del come rappresentare il segno meno e del come rendere semplice l’esecuzione delle operazioni. Per risolvere tale problema sono possibili due tipi di rappresentazione: rappresentazione in modulo e segno: semplice ed intuitiva ma inefficiente e complessa nella gestione delle operazioni; rappresentazione in complemento a due: meno intuitiva, costruita ad hoc, però rende semplice la gestione delle operazioni.
Questa rappresentazione usa un bit per rappresentare esplicitamente il segno (es: 0 = +, 1 = -) e usa poi gli altri bit disponibili per rappresentare il valore assoluto come binario puro. Esempio: 8 bit (MSB = segno, bit 6 … bit 0 = valore assoluto) -2 → 1 0000010 +5 → 0 0000101 L’adozione di tale rappresentazione fa sorgere alcuni problemi: segno completamente disgiunto dal valore assoluto; il valore 0 ha due distinte rappresentazioni (1 0000000 = “-0” e 0 0000000 = “+0”); non permette di usare direttamente gli algoritmi già noti per eseguire le operazioni; con le usuali regole di calcolo non è vero che X + (-X) = 0:
I numeri reali sono un sovra insieme dei numeri interi. La loro rappresentazione è detta rappresentazione in mantissa e resto.
Dati un numero reale ᡈ, una base ᠨ e un naturale ᡦ, è sempre possibile rappresentare il valore reale ᡈ come somma di due contributi, di cui il primo costituito da esattamente ᡦ cifre: ᡈ = ᡥ ∗ ᠨ〲うぃ^ + ᡰ ∗ ᠨ〲うぃ⡹ぁ dove ᡥ è la mantissa, ᡰ è il resto e ᡗᡱᡨ è un esponente (intero). Esistono infinite triple (ᡥ, ᡰ, ᡗᡱᡨ) in grado di rappresentare, a parità di ᡦ, lo stesso valore reale ᡈ. Si è scelto, convenzionalmente, di normalizzare la mantissa la quale:
deve appartenere all’intervallo 1 㐕ᠨ ≤ ᡥ < 1; deve avere la prima cifra diversa da zero. Ad esempio, se ᡈ = 31.4357, ᠨ = 10 e ᡦ = 4 si avrà: Scomposizione m r esp , 3143 ∗ 10 ⡰^ + , 57 ∗ 10 ⡰⡹⡲^ m^ =^.^3134 r^ =^.^57 esp^ =^2 La scelta di normalizzare la mantissa è una scelta efficiente perché sfrutta tutte le ᡦ cifre disponibili per la mantissa senza sprecarle per zeri iniziali che non portano vera informazione.
In un elaboratore, la rappresentazione dei numeri reali deve necessariamente essere finita, ma rappresentare esattamente in forma finita una generico valore reale è impossibile: la rappresentazione dei valori reali è generalmente approssimata. La scelta è quella di assumere come rappresentazione di ᡈ il solo contributo ᡥ ∗ ᠨ〲うぃ^ trascurando il secondo contributo ᡰ ∗ ᠨ〲うぃ⡹ぁ^ che rappresenterà la frazione troncata.
Il calcolatore elettronico o “computer” è una strumento per la rappresentazione, l’elaborazione e la memorizzazione delle informazioni. Il computer lavora partendo da informazioni in ingresso (input), la elabora in base ad una serie di regole (un programma), e restituisce informazione in uscita (output). La quasi totalità dei computer oggi utilizzati è digitale, lavora cioè con informazioni rappresentate in forma numerica. La prima decomposizione di un calcolatore intenso nella sua globalità è 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 i vari compiti.
L’hardware è l’unica macchina reale, mentre i vari strati software corrispondono a macchine virtuali. Le operazioni (istruzioni) che l’hardware sa eseguire direttamente costituiscono il linguaggio macchina del calcolatore. Il software ha lo scopo di mostrare ai suoi utenti il calcolatore come una macchina virtuale, più semplice da usare rispetto all’hardware sottostante.
Per eseguire un programma in un calcolatore è necessario rappresentare sia i dati sia le istruzioni in un formato tale che l’esecutore automatico sia in grado di memorizzare e manipolare istruzioni e dati. Le informazioni gestite dai sistemi di elaborazione devono essere quindi codificate in un qualche modo per poter essere memorizzate, elaborate, scambiate, ecc…
L’elaboratore elettronico, inventato in realtà da Atanasoff, è basato sul modello che va sotto il nome di “Macchina di Von Neumann” definito verso la fine degli anni ’40 all’Instituto di studi avanzati di Princeton da John Von Neumann. Le sue caratteristiche sono: elettronica; digitale; a programma memorizzato. L’idea di base è di memorizzare nella macchina non solo i dati, ma anche le istruzioni, e di trattare dati ed istruzioni in forma numeri e di esprimere questi in forma binaria. La macchina ideata da Von Neumann è in sostanza un elaboratore che lavora in maniera sequenziale, interpretando cioè una alla volta le istruzioni contenute in un programma ed applicandole ai dati forniti dall’operatore o che la macchina va prendere nella propria memoria. Questo rende la macchina automatica e soprattutto generale (all-purpose) nel senso che l’elaborazione da eseguire non è predeterminata, ma dipende dalle istruzioni che inseriremo ed utilizzeremo.
il registro dei dati di memoria (Memory Data Register, MDR), che contiene il dato dalla locazione di memoria selezionata o il dato che si vuole memorizzare nella locazione di memoria selezionata; il contatore di programma (Program Counter, PC); il registro della istruzione corrente (Instruction Register, IR), che contiene l’istruzione da decodificare ed eseguire; il registro di stato (Program Status Register, PSR), che contiene informazioni sullo stato di funzionamento della macchina.
Le istruzioni del linguaggio macchina corrispondono ad operazioni elementari di elaborazione. Un calcolatore sa svolgere, in modo molto efficiente, poche tipologie di operazioni elementari, tale elaborazione dei dati viene svolta dall’unità aritmetico-logica (A.L.U.) che è un componente della CPU. Il coordinamento tra le varie parti del calcolatore è svolto dall’unità di controllo (CU). Il controllo consiste nel coordinamento dell’esecuzione temporale delle operazioni sia internamente all’unità di elaborazione sia negli altri elementi funzionali. Esso avviene in modo sincrono rispetto alla scansione temporale imposta dall’orologio del sistema (clock).
L’unità di controllo del microprocessore esegue una istruzione svolgendo le seguenti tre operazioni di base: fetch (lettura); decode (decodifica); execute (esecuzione).
Un programma viene eseguito reiterando il ciclo fetch-decode-execute, detto ciclo macchina, per svolgere ordinatamente le sue istruzioni. Ad ogni impulso di clock si esegue un ciclo macchina, ne consegue che la velocità di un microprocessore dipende dalla frequenza del suo clock, ma non solo poiché l’esecuzione di un’istruzione può richiedere più cicli.
La memoria è quell’insieme di dispositivi aventi la funzione di memorizzare (mantenere nel tempo) programmi e dati. Per eseguire in modo efficiente i programmi, la memoria dovrebbe essere: molto veloce; molto capiente; permanente. In un sistema di elaborazione ci sono sempre due tipi di memoria: la memoria centrale, interna al calcolatore, direttamente accessibile dalla CPU; la memoria secondaria o di massa, esterna al calcolatore.
La memoria centrale è la memoria interna al calcolatore, direttamente accessibile dalla CPU e contiene di dati e i programmi per l’elaborazione dei dati. Essa è un insieme finito di locazioni (celle o registri) di uguali dimensioni, ogni locazione di memoria consta di ᡦ bit ed è caratterizzata da un indirizzo e dal contenuto. L’indirizzo di una locazione è la posizione che questa occupa nella memoria rispetto alla prima locazione che ha indirizzo 0. Il contenuto di una locazione, invece, è l’informazione in essa registrata. La memoria centrale è caratterizzata dalla lunghezza di una parola di memoria e dalla capacità, ovvero dal numero totale di locazioni di memoria. Alla memoria centrale si accede per effettuare operazioni di lettura o scrittura. Ciascuna locazione di memoria può essere selezionata specificando il suo indirizzo nel registro degli indirizzi (MAR, Memory Address Registrer). La memoria centrale a cui ci siamo riferiti fino ad ora viene anche detta RAM (Random Access Memory). La RAM è volatile ovvero in assenza di alimentazione elettrica perde il suo contenuto. Una porzione di memoria centrale, identificata con il termine ROM (Read Only Memory) è riservata solo per operazioni di lettura. La ROM è realizzata con diversa tecnologia e viene usata dai costruttori per memorizzare in modo permanente informazioni necessarie per l’avviamento del sistema (firmware).
Le ROM si distinguono a seconda della tecnologia usata per memorizzare le informazioni iniziali in: EROM (Erasable ROM), che sono ROM cancellabili; PROM (Programmable ROM), che sono ROM programmabili; EPROM (Erasable and Programmable ROM), che sono ROM cancellabili e programmabili. Il software contenuto nelle ROM, per distinguerlo da quello contenuto nella RAM, viene chiamato firmware. Fa parte del firmware, ad esempio, il BIOS, cioè quel gruppo di istruzioni che consente ai diversi processori di attivarsi all’accensione del computer, di effettuare un auto-test di funzionamento e di caricare nella RAM il sistema operativo, presente sul disco rigido, a cui viene ceduto il controllo del sistema.
Non tutti i computer sono uguali, ne esistono di diverse categorie a seconda della loro potenza o del loro utilizzo: i personal computer sono sistemi monoutente, i computer che abbiamo generalmente sulla scrivania e in casa; le workstation possono essere utilizzati contemporaneamente da diversi utenti attraverso i terminali; i server sono computer che servono ovvero che forniscono dei servizi generalmente fruibili attraverso altri computer ad essi collegati.
Come sappiamo, il bus è il canale fisico che mette in comunicazione le varie componenti del calcolatore. Periferiche diverse possono usare tipi di bus diversi, a seconda della velocità di trasmissione di dati richiesta: la memoria centrale ha bisogno di un canale più veloce rispetto alle periferiche; oltre al bus di sistema, i PC di oggi sono forniti anche di un insieme di bus locali che collegano le periferiche alla CPU.
È possibile identificare una gerarchia di bus: bus per la memoria e dispositivi performanti (PCI, AGP); bus con periferiche a basse prestazioni (USB, FireWire, IDE/ATA). I bus sono interconnessi tramite device dedicati detti chipset: SouthBridge collega bus ad alte prestazioni con gli altri BUS; NorthBridge collega CPU e RAM al PCI (controllore del sistema).
Un’interfaccia è quella parte hardware volta a collegare fra loro i componenti di un sistema informatico, mentre la porta di comunicazione è un interfaccia tra il PC e il mondo esterno. Le interfacce sono moltissime, di svariati usi, con prestazioni diverse: ISA (Industry Standard Architecture Bus); PCI (Peripheral Component Interconnect Bus); AGP (Accelerated Graphic Port); PCI-X; PCI Express; IDE (Integrated Drive Electronics); SCSI (Small Computer System Interface); Serial ATA (SATA); USB (Universal Serial Port); FireWire (IEEE 1394).
Ogni periferica è costituita da 3 componenti: device, il dispositivo fisico; controller, la componente elettronica di controllo (chip) che riceve i comandi dal processore e li impartisce al dispositivo fisico; device driver, il componente software in dotazione col dispositivo che deve essere installato in memoria (diventa a tutti gli effetti parte del sistema operativo) al fine di consentire il corretto funzionamento del dispositivo. Le periferiche sono connesse all’elaboratore attraverso le porte di comunicazione.
Come già sappiamo, la memoria è quell’insieme di dispositivi aventi la funzione di memorizzare (mantenere nel tempo) programmi e dati. I tipi di memoria sono due: la memoria RAM (Random Access Memory) e la memoria ROM (Read Only Memory).
La memoria RAM è di varie tipologie: DRAM (Dynamic RAM): è chiamata dinamica in quanto le celle di memoria mantengono i dati solo per brevissimo tempo; SRAM (Static RAM): sono in grado, con una minima tensione elettrica, di far permanere i dati all’interno della loro cella; SDRAM (Syncrhronous DRAM): sono in grado di sincronizzarsi con il clock della CPU risultando molto più veloci delle DRAM; SDRAM DDR (Double Data Rate): si tratta di un tipo particolare di SDRAM, che utilizzano entrambi i fronti di clock, ascendente e discendente.