# ReadyBoost

ReadyBoost è una tecnologia di disk caching incorporata per la prima volta con il sistema operativo Microsoft Windows Vista, che permette di rendere più veloci e reattivi i computer che fanno di uso memorie di tipo flash memory su USB 2.0 drive, SD card, CompactFlash, o altre tipologie di memorie Flash, al fine di migliorare le prestazioni del sistema.
ReadyBoost è usato anche per facilitare SuperFetch, una versione aggiornata del prefetcher di Windows XP che esegue un'analisi delle performance e dell'utilizzo dei sottosistemi disco durante la fase di "boot" del sistema. In questo modo possono essere monitorati i file usati più di frequente e creata una cache in grado di velocizzare i successivi avvii del sistema.

## Descrizione Generale

Usare una flash memory compatibile con ReadyBoost (NAND memory devices) come memoria cache permette al sistema operativo di servire le letture casuali da disco con prestazioni tipicamente 80-100 volte più veloci rispetto alla lettura casuale degli stessi dati effettuata da un hard disk tradizionale. Questa tecnica di caching è applicata a tutto il contenuto del disco, non solo al file di "swap" o alle dll di sistema. I dispositivi Flash invece sono tipicamente più lenti rispetto agli hard disk tradizionali nelle letture sequenziali, così per massimizzare le performance, ReadyBoost include una logica per riconoscere le richieste di lettura sequenziale dei blocchi di dati più lunghi, permettendo a queste richieste di essere servite direttamente dall'hard disk tradizionale.
Quando un dispositivo compatibile ReadyBoost viene inserito nel sistema, la finestra di dialogo dell'AutoPlay di Windows offre un'opzione aggiuntiva per poter utilizzare il nuovo flash drive appena inserito per velocizzare le prestazioni del sistema; un'ulteriore scheda "ReadyBoost" viene aggiunta alla finestra di dialogo delle Proprietà del drive, da dove può essere indicata la quantità di spazio del nuovo dispositivo da dedicare alla funzionalità ReadyBoost. Si possono assegnare da 250 MB a 4 GB. ReadyBoost crittografa con AES-128 e comprime tutti i dati inseriti nella memoria flash; Microsoft ha dichiarato che una compressione tipica 2:1 permette di contenere fino a 8 GB.
Secondo Jim Allchin, per le prossime versioni di Windows, ReadyBoost sarà in grado di usare porzioni della RAM su altri pc della stessa rete che hanno installato Windows Vista.

## Compatibilità delle memorie

Un dispositivo flash per essere compatibile alle specifiche ReadyBoost deve rispettare seguenti requisiti:
* la capacità del dispositivo imponibile deve essere almeno di 256 MB (250 dopo la formattazione)
* il dispositivo può dedicare anche più di 4 GB (da Windows 7 in poi)
* il dispositivo deve avere un tempo di accesso di 1 millisecondo o inferiore
* il dispositivo deve essere capace di una velocità di lettura di almeno 2,5 MB/s per letture random di 4Kb distribuite uniformemente in tutta l'area del dispositivo e di una velocità di scrittura di almeno 1,75 MB/s per scritture di 512 kB distribuite uniformemente in tutta l'area di memoria del dispositivo
* il dispositivo deve avere almeno 235 MB di spazio libero
* i File system supportati sono: NTFS, FAT16, FAT32 e exFAT
* il quantitativo di memoria da utilizzare per ottenere risultati ottimali con l'accelerazione Windows ReadyBoost va da una a tre volte la quantità di memoria ad accesso casuale (RAM) installata nel computer.

## Prestazioni

Un sistema con 512 MB di RAM (il minimo per Windows Vista) può ottenere significativi guadagni con ReadyBoost. In uno specifico test il tempo di esecuzione di una particolare operazione è stato ridotto da 11,7 secondi a 2 secondi (aumentando la memoria fisica da 512 MB a 1 GB lo si è ridotto ulteriormente a 0.8 secondi). Sistemi con 1 GB o più di memoria non mostrano invece benefici altrettanto significativi
Se si analizzano le prestazioni di un hard disk tradizionale, ad esempio un disco a 7200 rpm costruito nel 2008 e collegato con tecnologia SATA, non è difficile incontrare esemplari in grado di fornire sustained transfer rate che sfiorano i 60-80 MB/s. Tali prestazioni però sono raggiungibili solo nel caso di letture sequenziali di grossi quantitativi di dati (ad esempio la lettura di qualche centinaio di MB). Nel caso invece si debbano leggere - sempre dallo stesso disco - numerosi file di dimensioni più modeste sparsi sull'intera superficie del disco, le prestazioni verranno sicuramente deteriorate sensibilmente dal tempo che le testine di lettura del disco impiegheranno a riposizionarsi di volta in volta all'inizio del nuovo file da leggere. Tale tempo di ricerca infatti per un disco a 7200 giri si attesta oggigiorno sugli 8 millisecondi circa e pertanto, dovendo leggere sequenze di numerosi file molto piccoli sparsi nel disco, le prestazioni globali potranno decadere tranquillamente dai 60-80 MB/s fino a qualche mega o forse anche solo ad alcune centinaia di kB al secondo.
L'idea alla base della tecnologia ReadyBoost è dunque di sfruttare i ridotti tempi di accesso dei flash drive più moderni (spesso molto inferiori a 1 millisecondo) per velocizzare queste operazioni, molto comuni all'avvio dei programmi, al caricamento di files di uso frequente ed ancora di più all'avvio del sistema (boot). La tecnologia ReadyBoost, per quantitativi di dati non troppo elevati e sparsi sul disco, consente di soddisfare le richieste di lettura non sequenziale in tempi molto più bassi rispetto a quelli ottenibili con un hard disk tradizionale.
La differenza nei tempi di risposta tra un sistema a dischi tradizionali ed uno con tecnologia ReadyBoost è ancora più evidente nel caso di dischi con regimi di rotazione inferiori, tipici dei PC più obsoleti oppure dei computer portatili in cui un basso regime di rotazione del disco consente minori consumi e maggiore autonomia.
Dischi a 5400 rpm o 4200 rpm hanno tempi di accesso che arrivano talvolta a 10-13 millisecondi per ogni posizionamento delle testine. In questo caso, nonostante il transfer rate continuato di una comune chiavetta USB 2.0 certificata per ReadyBoost possa essere anche 6-8 volte inferiore rispetto a quello di un disco tradizionale (10-20 MB/s rispetto a 40-80 MB/s), i tempi di accesso di 10-20 volte inferiori garantiranno nell'utilizzo quotidiano del PC incrementi di prestazioni talvolta molto significativi.
Nei computer portatili inoltre queste tecnologie di caching consentiranno di ridurre il numero di accessi totali al disco permettendo ai dischi di fermarsi più spesso incrementando ulteriormente l'efficienza nell'uso delle batterie.. Vista poi l'assenza di parti meccaniche in movimento all'interno delle memorie Flash, l'utilizzo di queste tecniche consente di ridurre notevolmente anche il rumore totale prodotto tipicamente dalle testine degli hard disk.
Le prestazioni ottenute utilizzando memorie NAND flash per il caching dei dischi (nella forma delle tecnologie Intel's Turbo Memory) sono peraltro già state evidenziate da numerosi altri produttori di computer e dispositivi informatici. Alcune caratteristiche di Windows Vista si affidano a ReadyBoost per funzionare e non riusciranno ad avviarsi se il service ReadyBoost sarà fermato o sospeso.
Una memoria flash ha un numero limitato di scritture che possono essere effettuate su di essa. ReadyBoost potrebbe in effetti usurare più facilmente la memoria flash utilizzata come cache, tuttavia questa eventualità dovrebbe richiedere molto tempo e dipende certamente dalle condizioni di utilizzo.
Per velocizzare ulteriormente le letture casuali dal sottosistema disco esistono in commercio anche altre soluzioni rivolte generalmente ad un'utenza professionale. Un esempio di queste possono essere le memorie a stato solido. Con costi variabili fra i 1000 e i 50.000 dollari, è possibile acquistare modelli con latenze inferiori fino a 0,003 ms (Violin 1010).

## ReadyBoost su Windows XP

Windows XP non supporta nativamente ReadyBoost. Tuttavia, una piccola società russa, la Moscow Development Office (MDO), ha sviluppato eBoostr, un software capace di "emulare" il funzionamento di ReadyBoost anche su Windows XP.
Il programma sfrutta fino a quattro diverse unità di archiviazione esterne. A differenza di ReadyBoost, eBoostr è in grado di utilizzare anche periferiche con interfacce diverse dalla USB, come ad esempio FireWire o eSATA, e hard disk esterni: l'uso di questi ultimi, soprattutto se dotati di porta eSATA, può portare benefici prestazionali soprattutto nei notebook, dove gli hard disk da 2,5 pollici hanno generalmente performance inferiori a quelle di un drive desktop da 3,5 pollici.
Sono state effettuate alcune prove su un sistema AMD Athlon 64 3000+, 2 GB RAM, disco eSATA 200Gb@7200rpm, memoria Flash esterna Sandisk Cruzer 4 Gb, costo indicativo 10 euro (al 25 gennaio 2009), misurando alcuni parametri:
Velocità media di lettura di 3 Gb di file salvati in flash
* lettura diretta da disco: 1,76 Mb/s
* lettura con eBoostr abilitato: 13,6 Mb/s