IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

2. diel - Prenos bitov aneb od pántov vedú drôty ...

V minulej lekcii, Princípy fungovania počítačov alebo ako to vlastne funguje , sme si vysvetlili, prečo v počítačoch používame 0 a 1 čiže bity. Dnes sa na tento prenos pozrieme trochu hlbšie. Teraz sme totiž v situácii, keď vieme CO posielať, ale ešte nemáme jasno v tom AKO to posielať.

Ako už sme si povedali, dáta sú reprezentovaná napätím. Nestačí nám však mať len jeden dátový kanál (drôt), ktorý by všetko obstaral sám. Nevedeli by sme, ako s napätím pracovať či ako ho správne detekovať. Ak máme všade drôty, nastáva jeden drobný, nepekný, fyzikálny jav. Drôty sami vytvárajú nejaké napätie vďaka okolia, v počítači, kde máme drôt vedľa drôtu, sa tým pádom tvorí hromada šumu, ktorý chceme odstrániť. Šum nám totiž môže spôsobiť, že chceme poslať 0, ale pošle sa 1 či naopak. Ponúka sa nám preto dve možné riešenia:

Riešenie pomocou uzemnenie

Medzi vysielajúcim a príjemcom budú aspoň 3 vodiče. Jeden z nich je zem (GROUND), tzn. dostaneme referenčné napätie voči zemi a ďalšie 2 sú dáta jedným smerom a dáta druhým smerom (TDX a RDX). Tento, tzv. Sériový prenos, sa používal predtým napr. RS-232 linkou. Minule sme si hovorili, že sa niekedy pre rozlíšenie 0 a 1 používa tzv. Floating stav čiže šedá zóna, ktorá neznamená ani 0 ani 1. Uvidíme, že okrem poistky sa našlo aj ďalšie využitie tohto 3. stave.

Sériový prenos RS-232 linkou - Princípy fungovania počítačov

Riešenie pomocou diferenčného prenosu

Diferenčný prenos je to kvôli tomu, že napätie dostávame z diferencie, tj. Rozdielu medzi napätiami vodičov. Náš hlavný prenášač informácie bude vodič p_1. Tým chceme poslať bite, treba 1. Vezmeme si k nemu druhý vodič p_2 a tým pošleme 0. Vieme určite, že nikdy sa p_1 nerovná p_2. Majme teda výslednú hodnotu v takú, že v sa určí ako p_1 – p_2, takže ak bude v kladné, vysielame 1, ak bude záporná, vysielame 0. Vieme, že môžu nastať iba 2 varianty:

p_1 = 1, p_2 = 0 , p_1 - p_2 > 0 ---> chtěli jsme poslat 1.
p_1 = 0, p_2 = 1 , p_1 - p_2 < 0 ---> chtěli jsme poslat 0.

Zmätok začína

Teraz vieme poslať jeden bit, ale v dnešných gigabajtoch je to príliš málo. Posunieme sa teda ďalej. Je potrebné si urobiť drobnú exkurziu do binárnej sústavy. Pre nás bude úplne zásadné si uvedomiť, čo vlastne znamená, že sa prenáša n bitov. Posielame niečo, čo sa dá reprezentovať n číslicami v binárnej sústave. V čom začína zmätok? Skúste si poslať čísla 1, potom 0 a nakoniec 2. V binárnej sústave pošleme teda 1010. Ako to ale druhá strana interpretuje? Znamená to 1 – 0 – 1 – 0, alebo 2 – 2, alebo 5 – 0, alebo 8 ? Ako to má druhá strana spoznať? Preto sa musíme dohodnúť na nejakom formáte, ako posielať jednotlivé bloky. Riešením pre nás bude posielať dáta po bytoch, teda po Osmica.

Vsuvka

1B (byte, česky bajt) je 8b (bites, česky bitov). Sú bohužiaľ aj bajty, ktoré majú 7 bitov, ale tie sa už takmer nepoužívajú. Ak ste niekedy počuli o ASCII tabuľke (neskôr sa k nej dostaneme), tak všetky medzinárodné symboly sú indexované od 0 do 127, pretože skôr boli znaky z ASCII posielané v bitoch po 7 bitoch. O tom ale viac neskôr.

10010010100100000110101101010010 možno teda poslať ako 10010010, 10010000, 01101011, 01010010.

Či už chceme poslať jedno veľké číslo, alebo niečo iné, môžeme preniesť informáciu ako "v ďalších dvoch blokoch pošleme číslo". Výhoda je, že viem presne, kedy prijímame aké bity a vieme, že po ôsmich bitoch končí blok.

Zmätok pokračuje

Teraz, keď vieme, ako chceme vytvárať bloky, príde spoza rohu nečakaný problém - budeme ich čítať od začiatku alebo od konca? Aké bude poradie bitov, tzv. Bite Order? Zapíšeme číslo 4 ako 100 alebo ako 001 ? Budeme zapisovať na začiatku najmenej významný bit (tzv. Least Significant Bit First) či naopak ten najvýznamnejší bit (tzv. Most Significant Bit First). 4 môžeme rozložiť na 1*2^2 + 0*2 + 0 -> 100. V tejto situácii je najdôležitejšie ten bit, ktorý násobíme najvyššiu mocninou dvojky. Hoci sa to zdá ako hlúposť, uvedomme si, že pre veľké čísla nás možno budú zaujímať len napr. Posledné 3 bity, takže je logickejšie posielať počítači čísla v LSB First.

Keď už sme si vyjasnili, či chceme mať bity v MSB či LSB First, a tým pádom ako nám bity chodia, radi by sme vedeli, koľko sme tých bitov vlastne dostali.

Čo to vlastne prišlo?

Predstavte si, že niekto chce posielať samé nuly. To sa celkom zle detekuje. Žiadna zmena signálu, maximálne nejaký divný šum odvedľa ...

Najjednoduchším spôsobom riešenia je mať pevne danú dĺžku bitu čiže v prijímacom aj vysielacom zariadení mať dohodnutú dobu, za ktorú sa prenesie bit. Predstavte si lenivého strážcu parkoviska, ktorý má počítať autá, čo prídu, a väčšinu času si číta noviny. Raz za čas mu zazvoní budík zdvihne hlavu a keď uvidí auto, zapíše si 1. Keď nikoho neuvidí, zapíše si 0. Dajme tomu, že budík zvoní pravidelne aj v počítači. Ešte by sme nakoniec potrebovali, aby si niekto všimol, že sme začali posielať 0, čiže, že sa zmenil stav linky z "nevysielajú" na "vysielam 0 ". To sa urobí tak, že sa pošle akoby 0. bit, ktorý nič nerobí, len hovorí - hele, teraz dávaj pozor. Na konci už nepotrebujeme mať ďalšie bit, ktorý nám povie, že prenos končí, pretože máme pevne danú dĺžku bytu.

Celý floating prenos vyzerá takto:

Prenos u RS-232 - Princípy fungovania počítačov

Tento prenos je však pomerne neefektívny a používal sa pre vyššie zmienenú linku RS-232. V čom je problém? Celú dobu bola vo floating stave, takže je potrebné poslať Start bit, oznámiť v akom poradí posielame bity, dĺžku a nakoniec dávať veľmi dobrý pozor, aby sa hodiny na opačných stranách prenosu nerozoslať. Nakoniec ešte vrátiť linku do floating stavu. Ak túto réžii robíme pri každom bytu, akonáhle si posielame niekam film, to aby sme si urobili kávu a prečítali Babičku ...

Vylepšenia procesu

Ako celý proces zlepšiť? Môžeme si držať informáciu o hodinovom signálu bokom. Budeme mať špeciálny kábel, ktorý bude len vysielať hodinový signál. Odpadne nám starosť so začiatkom a koncom. Akonáhle beží hodinový signál, čítame. Nebeží, nečítame. Túto možnosť používame pri diferenčnom prenose.

prenos signálu - Princípy fungovania počítačov

Na záver zmätok vrcholí

Okrem tzv. Bite Order môžeme chcieť kontrolovať ešte tzv. Byte Order, čiže ktorý byt v sérii sa prenesie prvý. Opäť môžeme deliť na Little endian a Big endian - čiže čo je na konci prenosu. Či je na konci najmenej dôležitý bajt / najviac dôležitý byte. Napríklad, ak ukladáme znak ako 2 bajty (napríklad v UTF-16 znakové sade), kde znak a má v decimálna sústave hodnotu 97, na jeho uloženie potrebujeme 2 bajty. V jednom bajtu bude uložená hodnota a, v druhom bude len 0 pre doplnenie. Prečo, to sa dozvieme v ďalších lekciách. Teraz je pre nás však dôležité, že môžeme a uložiť v Little endian ako 97 00, alebo v Big endian ako 00 97. Je teda opäť potrebné si vopred vyjasniť poradí. Hlavne sa nenechať zmiasť. A môžem Ak navnadiť na nabudúce, lekciu Reprezentácie čísel v počítači , zmätky zďaleka nekončí. Bez nich by to však nebola taká zábava :)

zmätok Vrcholí - Princípy fungovania počítačov

Oddychová časť alebo počítanie mocnín

Teraz sa ešte raz pozrieme na mocniny čísla 2. Poznať mocniny tohto čísla sú veľmi praktické. 8b je 1B. A ako je to ďalej? To záleží. Ak sme medzi "svojimi" - ak nie sme predavači pevných diskov, tak 1kB je 1024B, 1GB je 1024 MB atd ... Samozrejme, ak sme predajcovia diskov, je pre nás 1MB niečo ako 1000kB a pevný disk sa nám zmenšil o očakávaných 24KB. Ako obchodný technika to nie je až tak zlé. Všetky ostatné fyzikálne veličiny ako napr. Kg, km pod. Pracujú v desiatkovej sústave, prečo by chudáci užívatelia mali pracovať v niečom inom ... Nu, taký je svet.


 

Predchádzajúci článok
Princípy fungovania počítačov alebo ako to vlastne funguje
Všetky články v sekcii
Princípy fungovania počítačov
Preskočiť článok
(neodporúčame)
Reprezentácie čísel v počítači
Článok pre vás napísal Ondřej Michálek
Avatar
Užívateľské hodnotenie:
1 hlasov
Autor se věnuje teoretické informatice. Ve svých volných chvílích nepohrdne šálkem dobrého čaje, kaligrafickým brkem a foukací harmonice.
Aktivity