10 gigabajtów na sekundę w perspektywie: A Moving Story

W pierwszej części tego czteroczęściowego wpisu na blogu opisaliśmy hipotetycznego robota zdolnego do oglądania filmów z szybkością 10 GB/s. Aby w pełni zrozumieć, co to znaczy 10 GB/s, dodaliśmy kolejne trzy części. Aby w pełni zrozumieć, co te 10 GB/s oznacza, dodaliśmy do tego wpisu kolejne trzy części. W drugiej części zdefiniowaliśmy bity i bajty, które są podstawowymi jednostkami danych, oraz niektóre z wielokrotności tych jednostek. Trzecia część wprowadziła różne definicje przedrostków wielokrotności, takich jak mega- i giga-. W tej czwartej i ostatniej części przyjrzymy się pomiarom stosowanym w szybkości przesyłania danych oraz temu, jak różnie odnoszą się one do sieci i nośników pamięci.

W czasie pisania tego tekstu na początku 2017 roku Adelajda w Australii realizowała plany uruchomienia sieci szerokopasmowej o przepustowości 10 Gb/s. Docelowa prędkość jest imponująca i choć brzmi podobnie do 10 GB/s przepustowości rzeczywistego dysku SSD firmy Seagate w naszym hipotetycznym robocie uzależnionym od filmów, to zdecydowanie nie są one takie same. Oba przykłady mówią o szybkości transferu danych, więc są do siebie podobne – ale są też bardzo różne. Ta ostatnia część czteroczęściowego bloga pokaże nie tylko podobieństwa i różnice między nimi, ale także dlaczego różne jednostki są używane do ich pomiaru w pierwszej kolejności.

Wszystko oprócz zlewu

Zanim zagłębimy się w orzechy i śruby transferu danych, jak to się odnosi do pamięci masowej i sieci, spójrzmy na to, jak woda płynie w kuchni. Twój kran może być oceniany na, powiedzmy, 2 g/m. Oznacza to, że został zaprojektowany, aby woda przechodziła przez jego dyszę w teoretycznym maksymalnym tempie około 2 galonów na każdą minutę, która upływa. Możesz jednak nie dostać tej stawki, ponieważ przepływ wody w danym momencie może zostać zakłócony przez takie czynniki jak osad mineralny w głowicy kranu, niskie ogólne ciśnienie wody w twoim mieszkaniu lub zatkane rury. Hydraulik diagnozujący twój problem może powiedzieć, że woda wypływa z kranu z prędkością bardziej zbliżoną do 1 g/m.

Jak to się ma do danych?

Przepływy są zawsze mierzone jako pewna ilość w pewnym okresie czasu. Z danych, te prędkości przepływu są wyrażone jako albo przepustowość lub przepustowość, z których oba mierzą ilość informacji, które mogą być przenoszone w danym okresie czasu. Chociaż te dwa terminy są często używane zamiennie, są one rzeczywiście dość different.

Bandwidth opisuje teoretyczną maksymalną szybkość transferu danych, że link jest przeznaczony do obsługi, jak woda-przepływu ratingu kranu. Ale tak jak czynniki zewnętrzne, takie jak spłukiwanie toalet lub nieszczelności w rurach może zachować kran z dostarczania wody w swoim maksymalnym tempie, w świecie sieci danych i komputerów, czynniki, takie jak koszty ogólne protokołu, opóźnienia w sieci, i niezawodność wśród innych rzeczy często spiskują, aby utrzymać połączenie danych z kiedykolwiek żyjących do jego potencjału. Inny termin, przepustowość, jest używany do opisania rzeczywistej ilości danych poruszających się przez łącze, jak pomiar przepływu wody, że hydraulik dostał w jego test.

Rozmiar ma znaczenie

Zarówno przepustowość i przepustowość są zwykle mierzone w jakiejś formie albo bity na sekundę (b/s) lub bajtów na sekundę (B/s)-Mb/s, MB/s, Gb/s, GB/s, itp. Zwróć uwagę na różnicę w przypadku: małe b oznacza bity; duże B oznacza bajty. Często spotyka się prędkości transferu danych wyrażone w obu jednostkach miary.

Metryki używane w obu przykładach sieci Adelaide i Seagate SSD opisują prędkości transferu danych, ale jedna używa gigabitów jako jednostki miary, a druga używa gigabajtów. Jak być może pamiętasz z części 2, bajt w dzisiejszych czasach jest najczęściej definiowany jako 8 bitów. Zatem zazwyczaj, aby przekonwertować z bitów na bajty, dzielisz liczbę bitów przez 8; aby przekonwertować z bajtów na bity, mnożysz liczbę bajtów przez 8. Pamiętaj, że jest to bardzo ogólna zasada, a później przyjrzymy się godnym uwagi wyjątkiem, jeśli chodzi o szybkość przesyłania danych.

Teraz, gdy już wiesz, jak konwertować te jednostki miary, przyjrzyjmy się, dlaczego są one mierzone inaczej w pierwszej kolejności.

Ogólna zasada kciuka: W przypadku pamięci i pamięci masowej, szybkości przesyłania danych są zwykle wyrażane w bajtach na sekundę; w przypadku sieci i interfejsów, szybkości przesyłania danych są zwykle wyrażane w bitach na sekundę.

Powszechnym błędnym przekonaniem jest to, że firmy z dziedzin związanych z siecią lub Internetem używają bitów na sekundę, aby oszukać klientów, aby myśleli, że prędkości sieci są w rzeczywistości znacznie szybsze niż są w rzeczywistości. Uzasadnieniem jest to, że ponieważ 8 Gb/s brzmi znacznie lepiej niż 1 GB/s, klienci będą myśleć, że otrzymują prędkość połączenia szybciej niż to, co naprawdę otrzymują. Nie jest to jednak chwyt marketingowy. Gdyby tak było, to ci sami ludzie, którzy tak myślą, musieliby zapytać, dlaczego grupy marketingowe w firmach zajmujących się pamięcią i przechowywaniem danych nie przeliczają wszystkiego na bity. Przyczyny różnic są elementarne, jak zobaczymy poniżej.

Bajty dla komputerów

Gdy mówimy o transferach danych między komputerem a jego pamięcią lub pamięcią masową, transfery są najczęściej wyrażane w bajtach na sekundę. Widzieliśmy w części 2, że bajt jest najbardziej fundamentalną adresowalną jednostką danych dla pamięci komputera i urządzeń pamięci masowej, więc komputery są przede wszystkim zainteresowane bajtami. I jak widzieliśmy w części 3, kiedy komputery uzyskują dostęp do danych w pamięci, robią to na poziomie bajtów. Tak więc, jeśli instruujesz komputer, aby zidentyfikował lub manipulował pojedynczym bitem, musi on najpierw uzyskać dostęp do bajtu, do którego należy, a następnie musi wykonać dodatkową operację, aby wyodrębnić ten bit. Ponadto, ponieważ pliki są również mierzone liczbą bajtów, które zawierają, wyrażanie prędkości transferu w bajtach na sekundę jest przydatne do określenia, jak długo można oczekiwać, że zajmie skopiowanie pliku z jednej części systemu komputerowego do drugiej. Jest to najczęściej wyrażane jako przepustowość.

Standard działa dobrze dla transferu plików w ramach jednego systemu, ponieważ komputer generalnie mówi tym samym językiem co wszystkie jego urządzenia peryferyjne. Ale inny zestaw problemów pojawia się, gdy patrzy się na to, jak dane są przesyłane między zupełnie różnymi systemami komputerowymi lub przez sieć.

Bity dla sieci

W przypadku połączeń sieciowych – lub każdej sytuacji, w której dwa lub więcej komputerów są połączone przewodami lub przez powietrze w celu dzielenia się danymi – szybkość przesyłania danych jest tradycyjnie opisywana w kategoriach bitów na sekundę. Dzieje się tak dlatego, że w przeciwieństwie do systemów komputerowych, dane przechodzące przez sieć są przesyłane szeregowo, czyli po jednym bicie na raz, a nie w kawałkach bitów, czyli po jednym lub więcej bajtów na raz.

Jak widzieliśmy w części 2, historycznie rozmiar bajtu był zależny od platformy sprzętowej. Niektóre komputery potrzebowały 4 bitów do utworzenia bajtu, inne potrzebowały 6 bitów, a jeszcze inne 8 bitów. Więc kiedy dane były przenoszone z jednego komputera na drugi, nie było praktyczne mierzenie transferów w kategoriach ile bajtów było przenoszonych, ponieważ bajt komputera wysyłającego mógł mieć inny rozmiar niż bajt komputera odbierającego!

Nawet po tym, jak 8 bitów stało się de facto standardową definicją bajtu, nadal nie miało sensu wyrażanie transferów danych w kategoriach bajtów. Inżynierowie sieciowi mierzą szybkość transferu w bitach na sekundę, ponieważ robi to najdokładniej odzwierciedla rzeczywistą zdolność łącza sieciowego do przesyłania wszystkich niezbędnych danych, a nie tylko danych w pliku (ach). W większości komunikacji sieciowej nie wszystkie bity, które są przesyłane przez łącze są faktycznie częścią przesyłanych plików. Sieć często stosuje schematy kodowania, dodając dodatkowe bity do każdego przesyłanego bajtu. Te dodatkowe bity zawierają informacje, które sieć potrzebuje, aby zapewnić, że dane są wysyłane do właściwego odbiorcy i potwierdzić, że dane zostały wysłane bez błędów i otrzymane bez incydentów, między innymi.

Powszechny schemat kodowania nazywa się 8b/10b, który dostaje swoją nazwę, ponieważ na każde 8 bitów wysyłanych przez łącze, 2 bity są dołączone jako metadane-innymi słowy, 10 bitów danych są wysyłane na każdy 8-bitowy bajt. Przy takim schemacie kodowania samo niezawodne przesyłanie danych przez sieć wiąże się z narzutem wynoszącym 20 procent. Choć teoretycznie szerokopasmowa sieć o przepustowości 10 Gb/s w Adelajdzie, mierzona w bajtach, powinna mieć przepustowość około 1,25 GB/s (10 Gb podzielone przez 8), to po uwzględnieniu 20-procentowego narzutu na koszty ogólne, będzie to raczej 1 GB/s. Inne schematy stają się coraz bardziej popularne, przede wszystkim jeden przyjęty w standardzie PCIe 3.0, który wykorzystuje 128b/130b. Oznacza to, że na każde 128 bitów danych dodawane są 2 bity narzutu. Nowszy schemat jest bardziej wydajny niż standard 8b/10b, ponieważ uaktualnienie skutkuje karą za obciążenie tylko około 1,5 procent, w porównaniu z poprzednimi 20 procentami.

End of the Line

Zrozumienie technologii i terminologii, które je opisują, może być bardzo mylące, jeśli nie zwracasz uwagi. Dzieje się tak szczególnie w przypadku, gdy chodzi o dane w tranzycie. Niestety, chociaż gigabajt i gigabit to bardzo różne jednostki do pomiaru podobnych, ale różnych rzeczy, w prawdziwym świecie ludzie często skracają 10 GB/s i 10 Gb/s w ten sam sposób: jako „10 gigów.”

Miejmy jednak nadzieję, że teraz będziesz miał bardzo jasne pojęcie, że robot głoszący, że oglądał swoje filmy Netflix przy 10 gigach przepustowości mówi coś zupełnie innego niż Australijczycy, którzy wkrótce będą się chwalić, że mają 10-gigową sieć, kolego.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.