Materie

Materie

Di più

Macchina Di Von Neumann

21/10/2022

355

17

Condividi

Salva

Scarica


BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti
tra di loro
RAM: Si tratta della memoria centrale
Si ha poi la scheda madre che è la
scheda dove si fanno

Iscriviti

Registrati per avere accesso illimitato a migliaia di appunti. È gratis!

Accesso a tutti i documenti

Unisciti a milioni di studenti

Migliora i tuoi voti

Iscrivendosi si accettano i Termini di servizio e la Informativa sulla privacy.

BUS: Fanno comunicare i componenti tra di loro RAM: Si tratta della memoria centrale Si ha poi la scheda madre che è la scheda dove si fanno risiedere i componenti, ma non è fondamentale. MACCHINA DI VON NEUMANN Processore (CPU) Bus di sistema Memoria centrale Interfaccia delle periferiche Si distinguono due tipo di memorie: Volatili: Quel tipo di memorie che, quando si stacca l'alimentazione, perdono tutti i dati al loro interno (Come ad esempio la RAM) Non volatili (o permanenti): Quelle memorie che, anche dopo avergli staccato l'alimentazione mantengono i dati (Come ad esempio gli HDD). L'argomento delle memorie verrà approfondito in seguito. CPU (Central Processing Unit) Questa è la componente che si occupa dell'elaborazione dei dati. Possiamo suddividerla in quattro sezioni: 1 ● La Cache, una memoria volatile che mantiene i dati più richiesti al suo interno per ottimizzare la velocità di processo di questi ultimi. La gerarchia a cui dobbiamo riferirci è quindi HDD/RAM/Cache poiché più è grande una memoria, più lenta è. La Cache è una memoria molto piccola, ma anche estremamente veloce. I Registri, altre porzioni di memoria piccolissime, in grado di mantenere un solo dato ciascuna, dati che sono semplicemente i termini dell'operazione che deve svolgere la CPU (che prende le istruzioni su che calcoli svolgere da RAM e Cache). ● ALU (L'unità Logica-Aritmetica) che semplicemente si occupa di svolgere i calcoli. L'Unità di controllo che si occupa...

Non c'è niente di adatto? Esplorare altre aree tematiche.

Knowunity è l'app per l'istruzione numero 1 in cinque paesi europei

Knowunity è l'app per l'istruzione numero 1 in cinque paesi europei

Knowunity è stata inserita in un articolo di Apple ed è costantemente in cima alle classifiche degli app store nella categoria istruzione in Germania, Italia, Polonia, Svizzera e Regno Unito. Unisciti a Knowunity oggi stesso e aiuta milioni di studenti in tutto il mondo.

Ranked #1 Education App

Scarica

Google Play

Scarica

App Store

Non siete ancora sicuri? Guarda cosa dicono gli altri studenti...

Utente iOS

Adoro questa applicazione [...] consiglio Knowunity a tutti!!! Sono passato da un 5 a una 8 con questa app

Stefano S, utente iOS

L'applicazione è molto semplice e ben progettata. Finora ho sempre trovato quello che stavo cercando

Susanna, utente iOS

Adoro questa app ❤️, la uso praticamente sempre quando studio.

Didascalia alternativa:

di supervisionare tutti i processi. A definire la potenza di una CPU abbiamo due indicatori: I Core sono più unità di microprocessori che lavorano in parallelo frammentando il carico di lavoro della CPU ● Il Clock è una sorta di "orologio interno" che si occupa di sincronizzare tutti i processi. Si parla quindi di frequenza di Clock riferendosi alla frequenza con cui viene eseguito un processo: maggiore è la frequenza più è veloce la CPU. I BUS Distinguiamo tre tipi di BUS: Bus di indirizzi (Address bus in inglese): Si occupa di trasportare gli indirizzi, ovvero delle coordinate, a cui è possibile trovare uno specifico dato. Questi possono andare solo dalla CPU a una periferica. Bus di dati (Data Bus in inglese): Si occupa di trasportare gli effettivi dati, perciò richiederà una maggiore quantità di bit trasportabili: più bit potrà trasportare più veloce sarà la macchina. Questi vanno sia dalla CPU alle periferiche che dalle periferiche alla CPU. Bus di controllo (Control bus in inglese): Si occupa di trasportare le istruzioni e di constatare le condizioni delle periferiche. Richiede pochi bit e anche questo può andare dalla CPU alle periferiche e viceversa. A differenza degli altri, ogni suo filo ha una funzione indipendente. Può ad esempio dare il segnale di Busy se una periferica che vuole utilizzare la CPU è occupata, oppure un IRQ (Interrupt Request) che chiede alla CPU di fermarsi per informarla di un evento come la pressione di un tasto Bus controllo Interfaccia per l'I/O Periferiche CPU Bus indirizzi Bus dati 2 Un esempio dell'applicazione di questi BUS lo vedremo successivamente nell'introdurre la Cache. CACHE Come abbiamo già detto, la cache è una memoria volatile che salva le informazioni più richieste da parte della CPU. Memoria centrale E' chiaro quindi che, dovendo trasportare più bit alla volta, saranno più di un cavo. Abbiamo quindi diversi tipi di architettura (ormai solo quelle a 32 bit e 64 bit) che ci permettono di portare più bit in parallelo. L'unione di tutti questi BUS è detto System Bus E' chiaro che i dati al suo interno siano copie di quelli che si trovano nelle memorie permanenti, altrimenti allo spegnimento della macchina andrebbero persi. Ma con quale criterio la macchina decide quali dati mantenere all'interno della Cache? Esistono due possibili algoritmi: ● La prima è quella di guardare a tutti gli effetti le istruzioni richieste più frequentemente ● La seconda è quella di mantenere le istruzioni richieste più recentemente Ogni Core ha due livelli dedicati di Cache (L, più piccolo, e L2). Troviamo poi una Cache comune di dimensioni maggiori, ma più lenta (L3). Ogni Cache differisce dalle altre in quanto dimensioni e velocità. CORE L1 L2 CORE L1 L2 CORE CACHE L3 L1 L2 3 Esaminiamo ora un esempio di una lettura di un dato: 1. La CPU affida l'indirizzo della componente (infatti anche le componenti vengono identificati da un indirizzo) all'address bus che va a cercarla. In questo caso immaginiamo sia la Cache. CORE 2. La CPU emette l'istruzione per mezzo del control bus che arriva alla componente. Abbiamo detto che sarà lettura per questo esempio L1 Le memorie sono composte così. Ogni cella corrisponde a un bit. Le informazioni si L2 prendono 8 bit, ovvero un byte, alla volta (di fatto sono 8 colonne). Ora, anche le righe sono 8, ma immaginiamo di prolungarle fino a 16. Questo significa che possiamo rappresentare da 0000000000000000 a 1111111111111111. Sapendo quindi che siamo in base binaria, per calcolare le dimensioni di una memoria ci basta fare in questo caso specifico 216 = 65 536 B (byte) = 65 KB. Chiaramente è una memoria molto esigua, ma per fare capire il principio va più che bene. 3. A questo punto la CPU affida l'indirizzo del dato all'address bus. Sappiamo che i dati vengono letti di byte in byte, perciò non sarà necessario identificare pure la colonna dato che tanto andrà letta tutta la riga. Si identifica perciò solo la riga. 4. La memoria manda sul Data Bus il dato richiesto dalla CPU Una memoria, quindi anche la Cache, viene definita da: ● Capacità Velocità Costo ● Costo Velocità Capacità A sua volta la velocità dipende da: Clock: Non si può andare più veloci, ma si può fare l'overclock. Infatti il costruttore mette dei blocchi di sicurezza con i quali è possibile garantire che le componenti non si brucino, ma volendo questi blocchi sono rimovibili, assumendosene però le responsabilità. Parallelismo dei dati: Quantità di dati trasferiti simultaneamente. Struttura interna: Tutta l'architettura deve essere equilibrata Numero di core integrati: Più microprocessori che lavorano in parallelo 4 Quando la CPU ha bisogno di un dato prima di tutto va a vedere nella Cache se è copiato al suo interno. Se la risposta è no, va a cercarlo all'interno della RAM, lo copia all'interno della Cache e cancella il dato più vecchio memorizzato. Ogni volta che la CPU trova un file dentro la Cache e non deve andare a cercarlo nella RAM, si dice Hit: Da qui definiamo l'Hit Rate che valuta le performance di una Cache ed è definito dal Cache Controller, un chip che si occupa della gestione della Cache. Se viene apportato dalla CPU una modifica a un dato che si trova all'interno della Cache allora, per non rischiare di perdere i dati o di andare a cercare in RAM un dato obsoleto esistono due modi: ● Write-Through: Ogni volta che un dato viene modificato all'interno della Cache, quest'ultimo viene immediatamente copiato nella RAM. Write-Back: Si continua a lavorare senza fare una copia dei dati tutte le volte e, prima che uno di questi venga cancellato per esigenze di spazio, viene copiato. Sulla carta è meglio il Write-Back, ma vorrei riportarvi alla memoria la struttura di una CPU: In ogni Core troviamo due Cache (L1 e L2) e ne troviamo una anche condivisa(L3). E' chiaro che non abbia senso inserire dati di piccole dimensioni su L3 poiché rallenterebbe solo il processo, quindi si salva su L1 o L2. Tuttavia, se una delle Cache è occupata e, casualmente, è quella con il dato aggiornato e, non avendo le altre Cache questo dato aggiornato, la macchina potrebbe riscontrare problemi. Quindi se il dato è molto piccolo si mette in L1 o L2 e si fa il Write-Through. Se invece è più grande il dato viene messo il L3 e si può fare il Write-Back senza incorrere in problemi. Andiamo ora ad esaminare il processo inverso: quello in cui il dato deve essere copiato dalla RAM alla Cache. Anche in questo caso esistono due modi: La gestione vincolata, che consiste nel far corrispondere l'area di dov'è salvato un dato nella RAM a quella di dove andremo a salvare la sua copia. Può tornare utile nella copiatura in RAM, ma potrebbe limitare l'utilizzo della Cache: è infatti possibile che utilizzi solo una parte della memoria della Cache e non tutta quella che si ha a disposizione. La gestione libera, dove i dati vengono posizionati dove si vuole all'interno della Cache, a prescindere dalla loro posizione nella RAM. E' chiaro che si rallenti il processo di copiatura in RAM poiché si necessiterà di cercare pure l'indirizzo di dov'è posizionato il dato nella RAM, ma allo stesso tempo si utilizza tutta la memoria messa a disposizione dalla Cache. ● RAM (Random Access Memory) I dati all'interno della RAM vengono salvati in celle casuali dato che la velocità di lettura/scrittura non cambia: per questo si dice Random. I dati vengono memorizzati sotto forma di segnali elettrici: dovendo memorizzare dei bit, possiamo decidere arbitrariamente che la presenza di tensione corrisponde a 1 e la mancanza a 0. Distinguiamo due tipi di RAM: DRAM (Dynamic RAM). All'interno di ogni cella sono presenti dei condensatori che mantengono la tensione elettrica per un certo periodo di tempo, anche se gli viene staccata l'alimentazione: questo permette a questo tipo di RAM di essere alimentate a fasi alterne sfruttando questi condensatori. La fase di ricarica è detta refresh. E' utile per risparmiare energia, ma limita l'accesso ai dati durante la fase di refresh, rallentando i processi. DRAM 20 15 0.5 5 W Tempo() ● SRAM (Static RAM). Questa invece funziona solo se la corrente entra in modo continuo, perciò dev'essere costantemente alimentata. E' quindi più costosa e voluminosa, ma ci permette di trovare un dato ogni volta che lo cerchiamo. Anche le Cache hanno questa struttura di funzionamento. Quando lavoriamo con dei dati sulla RAM, la CPU effettua dei controlli per controllare che i dati non si corrompano. Il controllo maggiormente utilizzato è quello di parità, che può essere di parità pari o di parità dispari, ma per ora prendiamo in esame solo la parità pari (per quella dispari il principio è il medesimo). Prima di mandare un dato, alla fine di quest'ultimo viene aggiunto un bit detto "bit di parità" e la scelta del bit si basa tutto sul numero di 1 che sono presenti nella sequenza di bit: se ci sono un numero pari di 1 viene aggiunto uno 0, mentre se il numero di 1 è dispari si aggiunge un altro 1. 10111(bit di parità) 1011010(bit di parità) La CPU sa quindi che dovrà aspettarsi un numero pari di 1. Se quando arriva il dato, vede che il numero di 1 è dispari si rende conto che il file si è corrotto. Quando la RAM finisce lo spazio è possibile usare una parte di una memoria secondaria, come ad esempio un Hard Disk, con lo scopo di una RAM: questa porzione di memoria prestata allo scopo di RAM è detta memoria virtuale. ROM (Read Only Memory) La ROM è un'altra memoria che mantiene Firmware, BIOS e BOOT. Il Firmware è un software scritto dal costruttore della macchina che contiene tutte le istruzioni necessarie al funzionamento della macchina stessa (Come ad esempio le istruzioni da eseguire alla pressione del pulsante di accensione). II BIOS è quello che si occupa di fare come interfaccia con l'Hardware della macchina. II BOOT invece è l'insieme di tutti i processi necessari ad avviare il Sistema Operativo Distinguiamo tre tipi di ROM: PROM(Programmable Read Only Memory). E' una ROM che arriva vuota, la si può programmare, ma una volta finito non si può più modificare 6 EPROM (Erasable Programmable Read Only Memory). E' una ROM che può essere programmata, ma, a differenza della PROM, è pure riprogrammabile: si possono cancellare i dati memorizzati sopra, ma sono richiesti degli strumenti piuttosto sofisticati per farlo (Di solito si fa con dei raggi UV) EEPROM (Electrically Erasable Programmable Read Only Memory). Abbiamo infine questa ROM, anche questa programmabile e riprogrammabile, ma è stato reso più semplice il processo di cancellazione dei dati: infatti con questo tipo di ROM si fa semplicemente per mezzo di un segnale elettrico. HDD (Disco rigido) Queste tipo di memorie sfruttano i principi dell'elettromagnetismo. Stilizzandolo al massimo, possiamo immaginare un Hard Disk come un disco ricoperto di un materiale ferromagnetico e due testine ricoperte da un filo arrotolato in rame (bobine). Una delle testine si occupa della scrittura, mentre l'altra della lettura. Per scrivere si fa scorrere della corrente nella bobina della testina di scrittura: si crea così un campo magnetico retto e, a seconda della polarità del campo, viene scritto il bit facendo assumere al materiale ferromagnetico la stessa polarità del campo. Per la lettura, la testina di lettura si posiziona sopra al bit e "legge" la sua polarità: questo fa scorrere corrente all'interno della bobina della testina di lettura che viene definita come 1 0 0 a seconda dell'orientamento. Come ho detto prima, l'immagine che abbiamo descritto prima è una stilizzazione di come funzionano in realtà gli Hard Disk: infatti questi ultimi sono composti da più dischi e due testine a disco. Se ci fosse un solo disco e una sola testina, si potrebbe leggere solo un bit alla volta, mentre così abbiamo più dischi e testine che lavorano in parallelo. Le testine non toccano mai il disco perché lo rovinerebbero, quindi l'Hard Disk è messo sotto vuoto e finché il disco gira la testina è sollevata a brevissima distanza dal disco e, grazie all'effetto eliche prodotto dal disco che gira, la testina viene spinta ancora più in alto. Quando però viene staccata l'alimentazione e il disco smette di girare la testina rischia di toccare il disco, così per prevenire si è preferito fare in modo che, quando la macchina viene spenta, la testina si sposta di lato dove, anche cadendo, non toccherebbe il disco. Il disco lo possiamo dividere in due: Tracce: le circonferenze del disco ● Settore: gli spicchi del disco Avremmo poi anche i Cluster: parti vuote tra le tracce che aiutano la lettura. Immaginiamo ora che un file che chiameremo file.txt sia indicizzato in una tabella: abbiamo quindi una tabella con settore e traccia del file. Quando cancelliamo il file, si cancella solo la riga del file nella tabella, ma tutti i dati esistono ancora fisicamente nel disco, per questo è comunque pericoloso buttare un disco senza distruggerlo e semplicemente avendo la formattazione. 7 Settore 1 traccia 0 Settore 1 Traccie Traccia 0 Alcune nozioni aggiuntive sugli Hard Disk: La testina si sposta da dentro in fuori spostandosi di traccia in traccia e il disco gira spostando i settori (Ricorda un po' il funzionamento dei dischi in vinile). La somma della Rotation Latency (tempo di rotazione del disco) e della Seek Time (Tempo di spostamento della testina) dà il tempo di ricerca di un dato. Abbiamo poi il tempo di lettura. Con la somma di tutti questi tempi si ottiene il tempo di trasmissione di un dato. Nelle memorie permanenti può essere inserita una memoria Cache usata come buffer, quindi fa da memoria d'appoggio, dove si salvano i dati più richiesti. Quando si fa la frammentazione del disco si può fare in modo volontario, mettendo in sicurezza l'Hard Disk, ma lo si può fare anche in modo autonomo per compensare degli spazi lasciati e utilizzare tutto il disco. La formattazione del disco vuol dire predisporre un disco al salvataggio del dato che desidero: definire il file system, ovvero definire le regole usate per indicizzare i file. Si ha poi la partizione del disco, ovvero, pur avendo un solo disco fisico, si può fare una divisione logica. In caso di corruzione di una partizione possiamo salvare comunque parte del disco. Gli antenati degli Hard Disk sono i Floppy Disk: memorie magnetiche di dimensioni molto ridotte. SSD (Memorie a stato solido) Gli SSD sono molto più veloci degli HDD: Questo perché è tutto salvato su componenti elettronici tramite tensione di corrente, in modo simile a come fa la RAM. I dati quindi all'interno viaggiano alla velocità della luce in qualsiasi posizione si trovino. Le informazioni si mantengono anche quando stacco la corrente perché i mosfet, come i condensatori delle DRAM, mantengono la corrente, ma più a lungo. Tuttavia i dati dopo un po' si perdono: ogni tanto quindi è necessario collegarlo alla corrente per fare quello che nella DRAM chiamiamo il refresh. Anche le FLASH funzionano esattamente nello stesso modo, ma gli SSD sono costruiti molto meglio e per questo costano di più RAID (Memorie magnetiche) Il Raid invece consiste nell'avere più dischi fisici uniti in modo che la macchina veda un'unica memoria più grande. Esistono due tipi principali di RAID: ● RAID 0: si fanno due dischi in cui si ● salvano informazioni diverse così si possono cercare file parallelamente e ottimizzare il processo di ricerca del dato RAID 1: Si fanno due dischi in cui si memorizzano gli stessi dati. Quindi quello che si salva su un disco si salva anche nel secondo. Torna utile se non si A1 A3 A5 A7 DISK O RAID 0 A2 A4 A6 A8 DISK 1 8 A2 A3 A4 DISK O RAID 1 A1 A2 A3 A4 DISK 1 vogliono perdere file: si utilizza quindi quando si lavora con dati molto importanti. Posso fare sia RAID fisici che RAID software, i quali sono sicuramente meno costosi, ma allo stesso tempo anche più complessi da realizzare. MEMORIE OTTICHE Un esempio di memoria ottica potrebbe essere un DVD. Queste memorie lavorano con tecnologie ottiche (Laser). Si tratta di un disco composto da una serie di materiali sovrapposti che viene inciso con un laser: quando viene colpito si crea un buco sulla superficie. Il disco gira e si fa il buco in un'altra parte. Questi buchi possono essere tradotti come 0 e 1 (ad esempio se devo scrivere 0 incido, se devo scrivere 1 il laser si spegne e non scrivo niente). Una volta che il disco è fatto, per leggerlo si usa un altro laser meno potente pensato per la lettura: non è abbastanza potente per fare buchi. Quindi quando il raggio colpisce un buco, la luce viene rifratta in modo particolare, quando invece colpisce una parte piatta viene rifratta con un'angolazione che ci aspettiamo e viene recepita da un diodo: capiamo presto quindi che se il raggio di luce viene intercettato dal diodo, allora la superficie è piana e il laser segue la traiettoria aspettata, mentre se vi è un buco sulla superficie il laser non verrà intercettato dal diodo. Il tutto viene quindi tradotto in 0 se il laser non viene intercettato dal diodo, mentre viene tradotto in 1 se il laser viene intercettato. E' chiaro che un disco così non possono più essere modificato. Per risolvere questo problema si è deciso di creare diversi tipi di disco: ● CD ROM(Read Only Memory): Si tratta di un CD di sola ● 9 lettura ed è di fatto quello che abbiamo descritto finora CD WORM (Write Once Read Many): Ovvero un disco vuoto che possiamo scrivere con un masterizzatore, ovvero un dispositivo che ha sia il laser di lettura che di scrittura. Quindi possiamo scriverlo una sola volta e poi leggerlo quante volte vogliamo, ma una volta inciso non si può più modificare ERASABLE: Questa volta si fa l'inverso. Si scalda il disco in una porzione e posto di scavare, facciamo una bolla (scrittura a bolle). Per la lettura vale lo stesso principio di prima. Se lo incido con un altro laser(può essere anche lo stesso laser della scrittura in cui però cambiamo intensità) possiamo fare "sgonfiare" la bolla e cancellare quindi quello che abbiamo scritto. I DVD hanno più strati e possono quindi avere più dati dei CD. Il passo successivo sono i Blue Ray che usano un raggio blu molto più preciso, quindi mettono le informazioni più vicine aumentando lo spazio a disposizione e, perciò, la quantità di dati scrivibili.