Nella prima parte di questo post in quattro parti, abbiamo descritto un ipotetico robot capace di guardare video a 10 GB/s. Per comprendere appieno il significato di questi 10 GB/s, abbiamo aggiunto altre tre parti al post. La seconda parte ha definito bit e byte, che sono le unità di base dei dati, e alcuni dei multipli di queste unità. La terza parte ha introdotto diverse definizioni di prefissi multipli come mega- e giga-. Questa quarta, e ultima, puntata guarda alle misure usate nelle velocità di trasferimento e come si applicano in modo diverso alle reti e ai supporti di memorizzazione.
Al momento di questo scritto, all’inizio del 2017, Adelaide, in Australia, stava portando avanti i piani per l’installazione di una rete a banda larga da 10 Gb/s. La velocità prevista è impressionante, e anche se sembra simile al tasso di throughput di 10 GB/s dell’SSD Seagate del mondo reale nel nostro ipotetico robot cinefilo, non sono sicuramente la stessa cosa. Entrambi gli esempi parlano di velocità di trasferimento dati, quindi sono simili tra loro, ma sono anche molto diversi. Questa parte finale del blog in quattro parti mostrerà non solo le somiglianze e le differenze tra i due, ma anche perché vengono usate unità diverse per misurarli in primo luogo.
Tutto tranne il lavandino della cucina
Prima di addentrarci nei dadi e nei bulloni del trasferimento dati in relazione all’archiviazione e alle reti, guardiamo a come scorre l’acqua nella vostra cucina. Il vostro rubinetto dell’acqua potrebbe essere valutato, diciamo, a 2 g/m. Questo significa che è stato progettato per avere acqua che passa attraverso il suo ugello ad un tasso massimo teorico di circa 2 galloni per ogni minuto che passa. Potreste non ottenere quel tasso, tuttavia, poiché il flusso d’acqua in qualsiasi momento può essere compromesso da fattori come l’accumulo di minerali nella testa del rubinetto, la bassa pressione dell’acqua complessiva nel vostro condominio o i tubi intasati. Un idraulico che diagnostica il tuo problema potrebbe dire che l’acqua esce dal rubinetto più o meno a 1 g/m.
Quindi come si relaziona questo con i dati?
Le portate sono sempre misurate come quantità in un certo periodo di tempo. Con i dati, queste velocità di flusso sono espresse come larghezza di banda o throughput, entrambi i quali misurano la quantità di informazioni che possono essere spostate in un dato periodo di tempo. Anche se questi due termini sono spesso usati in modo intercambiabile, in realtà sono abbastanza diversi.
La larghezza di banda descrive la velocità massima teorica di trasferimento dei dati che un collegamento è progettato per gestire, come la portata d’acqua del vostro rubinetto. Ma proprio come i fattori esterni come lo scarico del water o le perdite nelle tubature possono impedire al vostro rubinetto di erogare l’acqua alla sua massima velocità, nel mondo delle reti di dati e dei computer, fattori come l’overhead del protocollo, la latenza della rete e l’affidabilità, tra le altre cose, spesso cospirano per impedire che la vostra connessione dati sia mai all’altezza del suo potenziale. Un altro termine, throughput, è usato per descrivere l’effettiva quantità di dati che si muove attraverso il collegamento, come la misura del flusso d’acqua che il tuo idraulico ha ottenuto nel suo test.
Le dimensioni contano
Sia la larghezza di banda che il throughput sono tipicamente misurati come qualche forma di bit al secondo (b/s) o byte al secondo (B/s)-Mb/s, MB/s, Gb/s, GB/s, ecc. Notate la differenza nel caso: la b piccola sta per bit; la B grande sta per byte. Si incontrano spesso velocità di trasferimento dati espresse in entrambe le unità di misura.
Le metriche usate sia nella rete di Adelaide che negli esempi di SSD di Seagate descrivono velocità di trasferimento dati, ma una usa i gigabit come unità di misura e l’altra i gigabyte. Come ricorderete dalla Parte 2, un byte in questi giorni è più comunemente definito come 8 bit. Quindi, di solito, per convertire da bit a byte, si divide il numero di bit per 8; per convertire da byte a bit si moltiplica il numero di byte per 8. Ricordate, questa è una regola molto generale, e più tardi vedremo una notevole eccezione quando si tratta di velocità di trasferimento dati.
Ora che sapete come convertire queste unità di misura, vediamo perché sono misurate in modo diverso in primo luogo.
Una regola generale di base: Con la memoria e lo stoccaggio, la velocità di trasferimento dei dati è tipicamente espressa in byte al secondo; con le reti e le interfacce, la velocità di trasferimento dei dati è tipicamente espressa in bit al secondo.
Un malinteso comune è che le aziende nei campi legati alla rete o a internet usano i bit al secondo per ingannare i clienti a pensare che le velocità della rete siano in realtà molto più veloci di quanto non siano. La logica è che poiché 8 Gb/s suona molto meglio di 1 GB/s, i clienti penseranno che stanno ottenendo una velocità di connessione più veloce di quella che stanno realmente ottenendo. Non è una manovra di marketing, però. Se questo fosse il caso, allora le stesse persone che la pensano così dovrebbero chiedersi perché i gruppi di marketing delle aziende di memoria e stoccaggio non convertono tutto in bit. Le ragioni delle differenze sono elementari, come vedremo di seguito.
Byte per i computer
Quando si parla di trasferimenti di dati tra un computer e la sua memoria o stoccaggio, i trasferimenti sono per lo più espressi in termini di byte al secondo. Abbiamo visto nella Parte 2 che il byte è l’unità di dati indirizzabile più fondamentale per la memoria del computer e i dispositivi di archiviazione, quindi i computer sono interessati principalmente ai byte. E come abbiamo visto nella Parte 3, quando i computer accedono ai dati in memoria, lo fanno a livello di byte. Quindi, se si ordina al computer di identificare o manipolare un singolo bit, esso deve prima accedere al byte a cui appartiene, poi deve eseguire un’ulteriore operazione per isolare quel bit. Inoltre, poiché i file sono anche misurati da quanti byte contengono, esprimere la velocità di trasferimento in byte al secondo è utile per capire quanto tempo ci si può aspettare che ci voglia per copiare un file da una parte all’altra del vostro sistema informatico. Questo è più comunemente espresso come throughput.
Lo standard funziona bene per i trasferimenti di file all’interno di un singolo sistema perché un computer generalmente parla la stessa lingua di tutti i suoi dispositivi periferici. Ma un diverso insieme di preoccupazioni si presenta quando si guarda a come i dati vengono trasferiti tra sistemi di computer completamente diversi o attraverso una rete.
Bit per le reti
Con le connessioni di rete, o qualsiasi situazione in cui due o più computer sono collegati su fili o attraverso l’aria per condividere i dati, le velocità di trasferimento sono tradizionalmente descritte in termini di bit al secondo. Questo perché, a differenza dei sistemi informatici stessi, i dati che si muovono attraverso una rete sono trasferiti in serie, o un bit alla volta, non in pezzi di bit, o uno o più byte alla volta.
Come abbiamo anche visto nella Parte 2, storicamente la dimensione di un byte era dipendente dalla piattaforma hardware. Alcuni computer avevano bisogno di 4 bit per fare il loro byte, altri di 6 bit e altri ancora di 8 bit. Così, quando i dati venivano trasferiti da un computer all’altro, non era pratico misurare i trasferimenti in termini di quanti byte venivano spostati, perché il byte del computer che inviava i dati poteva ragionevolmente avere una dimensione diversa da quella del byte del computer ricevente!
Anche dopo che gli 8 bit divennero la definizione standard de facto del byte, aveva ancora poco senso esprimere i trasferimenti di dati in termini di byte. Gli ingegneri di rete misurano le velocità di trasferimento in bit al secondo perché così facendo riflettono più accuratamente l’effettiva capacità di un collegamento di rete di trasferire tutti i dati necessari, non solo i dati nei file. Nella maggior parte delle comunicazioni di rete, non tutti i bit che vengono inviati sul collegamento sono effettivamente parte dei file che vengono trasferiti. La rete spesso impiega schemi di codifica, aggiungendo bit aggiuntivi per ogni byte inviato. Questi bit extra contengono informazioni di cui la rete ha bisogno per assicurare che i dati siano inviati al destinatario corretto e per confermare che i dati sono stati inviati senza errori e ricevuti senza incidenti, tra le altre cose.
Un comune schema di codifica è chiamato 8b/10b, che prende il nome perché per ogni 8 bit inviati su un link, 2 bit sono aggiunti come metadati – in altre parole, vengono inviati 10 bit di dati per ogni byte da 8 bit. Con questo schema di codifica, il solo trasferimento di dati in modo affidabile su una rete comporta un overhead del 20%. Anche se in teoria le aspirazioni a banda larga di Adelaide di una rete a 10 Gb/s, se misurata in byte, dovrebbe essere circa 1,25 GB/s (10 Gb diviso 8), quando si tiene conto dell’overhead del 20 per cento, sarebbe più strettamente equivalente a 1 GB/s. Altri schemi stanno diventando più importanti, in particolare quello adottato dallo standard PCIe 3.0, che utilizza un 128b/130b. Avete indovinato; questo significa che vengono aggiunti 2 bit di overhead per ogni 128 bit di dati. Il nuovo schema è più efficiente dello standard 8b/10b, dato che l’aggiornamento comporta una penalizzazione dell’overhead di solo circa l’1,5%, rispetto al precedente 20%.
Fine della linea
Comprendere le tecnologie e le terminologie che le descrivono può essere molto confuso se non si presta attenzione. Questo è specialmente il caso quando si tratta di guardare i dati in transito. Sfortunatamente, anche se un gigabyte e un gigabit sono unità molto diverse per misurare cose simili ma diverse, nel mondo reale, la gente spesso abbrevia 10 GB/s e 10 Gb/s allo stesso modo: come “10 giga.”
Speriamo che ora, comunque, tu abbia un’idea molto chiara che il robot che proclama di aver guardato i suoi film di Netflix a 10 giga di throughput sta dicendo qualcosa di completamente diverso dagli australiani che presto si vanteranno di essere su una rete a 10 giga, amico.