Vyšlo v týdeníku CHIPweek č. 41/96, 8. října 1996
Vytištěno z adresy: http://www.earchiv.cz/a96/a641k150.php3

Přenosový výkon

Přenosová rychlost, kterou jsme se zabývali v předchozích dílech tohoto modulu, je veličinou která říká velmi mnoho o schopnostech konkrétní přenosové cesty přenášet data. V praxi je ovšem nutné mít na paměti, že jde o veličinu nominálního charakteru, která ještě nemusí vypovídat příliš přesně o tom, jaké objemy dokáže příslušná přenosová cesta přenést za delší časové období.

Jeden otřelý počítačový vtip, pocházející ještě z dob sálové prehistorie, říká že není důležité kolik instrukcí vykoná určitý počítač resp. procesor za sekundu, ale že skutečně důležité je to, kolik jich udělá za týden, měsíc či rok. Pointa spočívá v tom, že při provozu počítače může docházet k všelijakým výpadků, odstávkám a dalším vlivům, kvůli kterým procesor buď vůbec nevykonává žádné instrukce (nebo je i vykonává, ale tyto jdou na vrub různým režijním činnostem, jako třeba diagnostice). Celý vtip pak názorně dokumentuje rozdíl mezi veličinou nominálního charakteru, jakou je třeba zmíněný počet instrukcí vykonaných za sekundu, a veličinou „efektivní", která vyjadřuje skutečný (užitečný) efekt, obvykle sledovaný za určité delší období.

Počet instrukcí, vykonaných procesorem za jednu sekundu, je třeba chápat především jako údaj vyjadřující jak dlouho trvá provedení jedné instrukce - v tom smyslu, že když procesor provádí své strojové instrukce rychlostí 1000 instrukcí za sekundu (například), pak provedení jedné strojové instrukce trvá jednu tisícinu sekundy. Ani v námi zvoleném případě procesoru a jeho instrukcí pak není možné použít jednoduchou násobilku a říct, že za sekundu jich provede přesně tisíc. Do hry totiž vstupují různé vlivy, jako například DMA přenosy či výpadky bloků ve vyrovnávacích pamětech, a ty mohou významněji prodlužovat dobu kterou trvá provedení jednotlivých instrukcí. Pokud bychom tedy sledovali počet skutečně provedených instrukcí za delší časové období, posčítali je a pak vztáhli na časovou jednotku (například sekundu), dostali bychom nejspíše poněkud jiné číslo. Hlavně bychom ale dostali veličinu „efektivního" (průměrného, sumárního) typu, která již bere do úvahy i další faktory, než jen nominální rychlost provádění instrukcí.

Srovnáme-li si obě veličiny - nominální rychlost provádění instrukcí a efektivní počet skutečně provedených instrukcí - pak rozměrově budou shodné, neboť obě vyjadřují počet provedených instrukcí za sekundu. Číselně se ale mohou i dosti významně lišit, a tato jejich odlišnost bude odrazem nejrůznějších vlivů, které se v praxi uplatňují. Je velmi důležité si uvědomit, že tyto vlivy mohou působit oběma směry - mohou nejen číselně snižovat „efektivní" rychlost oproti rychlosti nominální, ale mohou ji stejně tak i zvyšovat. Námi zvolený příklad s prováděním strojových instrukcí to umožňuje názorně dokumentovat: dnešní procesory velmi často použivají techniky tzv. prokládání (pipelining), a zpracovávají více instrukcí najednou - například jednu právě začínají, druhou mají rozpracovanou zhruba z poloviny a třetí právě dokončují. Jestliže takto dochází k trojnásobnému prokládání, tj. procesor v každém okamžiku pracuje na třech instrukcích současně a provedení každé instrukce trvá jednu tisícinu sekundy, pak za tuto jednu tisícinu sekundy procesor stihne dokončit hned tři instrukce, a za jednu sekundu tak teoreticky stihne provést tři tisíce instrukcí (odmyslíme-li si na chvíli efekt opačně působících vlivů). Takže „efektivní" rychlost může být dokonce i výrazně vyšší než rychlost nominální.

Přenosová rychlost vs. přenosový výkon

Podobně jako k rychlosti provádění strojových instrukcí musíme při datových přenosech přistupovat i k rychlosti přenosové. Jde opět o veličinu nominálního charakteru, kterou je vhodné chápat jako vyjádření toho, jak dlouho trvá přenos jedné elementární jednotky informace, tedy jednoho bitu. Takže když se například někde něco přenáší rychlostí 10 Mbps (megabitů za sekundu), pak je třeba tomu rozumět tak, že přenos jednoho bitu zabere jednu desetimilióntinu sekundy. Nikoli tak, že za jednu sekundu se přenese 10 „mega" bitů, za deset sekund 100 „mega" atd. Mějme to na paměti, například i v souvislosti s Ethernetem.

„Efektivní" alternativou k nominální přenosové rychlosti je v datových přenosech veličina, označovaná nejčastěji jako „přenosový výkon" (anglicky: throughput, doslova: propustnost), ale někdy také jako „informační rychlost". Tento druhý možný název šikovně vystihuje jednu důležitou specifiku datových přenosů: aby bylo možné přenést určitý počet „užitečných" bitů (resp. bitů vyjadřujících určitou informaci), je nutné ve skutečnosti přenést navíc i určité režijní bity, nutné pro korektní fungování přenosových mechanismů. Jde například o nejrůznější kontrolní součty, sloužící potřebám detekce neporušenosti datového obsahu při spolehlivých přenosech, či o různé adresy příjemců a odesilatelů, identifikátory obsahu, hodnoty čítačů vyjadřujících pořadí atd.

Přenosová rychlost existenci těchto režijních bitů nebere v úvahu, zatímco přenosový výkon ano. Přenosová rychlost říká, jak dlouho trvá přenos jednoho bitu a nezajímá se o to, zda jde o režijní bit či o bit nesoucí „užitečnou" informaci. Naproti tomu přenosový výkon obě situace již rozlišuje, všímá si pouze „užitečných bitů" nesoucích informace, a vyjadřuje tudíž množství „užitečných" dat, které je daná přenosová cesta schopna skutečně přenést. Navíc jde o veličinu „efektivního" charakteru, která bere v úvahu průměrné chování vztažené k delším časovým úsekům.

Problém je ovšem v tom, že není nijak lehké exaktně definovat co jsou „užitečná" data, a co jsou data režijní. Proto je obtížné přesně definovat i samotný přenosový výkon, i když při intuitivním pohledu je to vcelku jednoduché. To je zřejmě také hlavní důvod, proč se v běžné praxi s přenosovým výkonem moc nepracuje, a místo toho se používá především přenosová rychlost. Může to ale mít ostatně i trochu jiné důvody, než jen obtížnost a vágnost definice přenosového výkonu: říci například o Ethernetu, že pracuje s přenosovou rychlostí 10 Mbps, je jistě působivější než prozradit, že jeho přenosový výkon v reálných podmínkách bývá někde mezi 3 až 4 Mbps.

Faktory ovlivňující přenosový výkon

Jak jsme si již naznačili, na přenosový výkon mají vliv různé „režijní" bity, přenášené spolu s bity „užitečnými". Kromě toho je zde ale celá řada dalších vlivů, které působí směrem ke snižování přenosového výkonu vůči nominální přenosové rychlosti. Jde například o asynchronní způsob komunikace, při kterém mohou mezi jednotlivě přenášenými částmi dat (jednotlivými znaky, bloky atd.) existovat libovolně dlouhé prodlevy. Ty nominální přenosová rychlost nebere do úvahy, zatímco přenosový výkon ano.

Přenosový výkon dále bere do úvahy například fungování mechanismů zabezpečujících spolehlivost přenosu - dojde-li například k poškození přenášeného bloku a ten musí být přenesen znovu, na přenosovou rychlost to nemá vliv, ale přenosový výkon to samozřejmě znatelně zmenšuje.

Další zajímavý vliv je možné dokumentovat na již citovaném příkladu Ethernetu. Ten počítá s existencí tzv. sdíleného přenosového média, do kterého může v principu vysílat kdokoli, ale v praxi musí zaúčinkovat vhodný mechanismus, který v případě vícenásobného zájmu rozhodne kdo bude moci vysílat a kdo musí počkat. Ethernet používá pro tyto účely přístupovou metodu CSMA/CD, jejíž samotná podstata také zavádí určitou režii snižující přenosový výkon oproti nominální přenosové rychlosti. Navíc jde o tzv. neřízenou přístupovou metodu, a její režie při zvyšující se zátěži významně vzrůstá.

Možnosti zvyšování přenosového výkonu

Vedle celé řady „režijních" faktorů, která v datových komunikacích působí směrem ke snižování přenosového výkonu oproti přenosové rychlosti, však existují i takové vlivy, které působí opačně. Jde zejména o mechanismy on-line komprese, zabudovávané do dnešních telefonních modemů. Například modemy dle standardu MNP 4 dokáží komprimovat data v poměru 2:1, a modemy využívající standard V.42bis dokonce v poměru 4:1. Jednoduchým výpočtem pak lze zjistit, že například pro modem o přenosové rychlosti 28,8 kbps by při maximální kompresi mohl teoreticky dosahovat efektivního přenosového výkonu 115,2 kbps (ovšem bez uvážení vlivu opačně působících faktorů).

V praxi je ovšem situace poněkud střídmější - komprimační mechanismy, zabudované do modemů, totiž musí fungovat v reálném čase, a nemohou tudíž být příliš efektivní. Také citovaná úroveň komprese (až 4:1) je spíše horním odhadem, zatímco reálně dosahované úrovně komprimace bývají nižší. Záleží přitom i na konkrétní povaze dat, která jsou přenášena - jde-li například o soubor, který byl zkomprimován již před svým přenosem (některým výkonnějším kompresním prostředkem), pak pokus modemu o jeho další kompresi pomoci „hloupějších" kompresních prostředků vede ve skutečnosti na jeho zvětšení, a tudíž na faktické snížení přenosového výkonu.