Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Zábava
Mac a hudba II. - Jak pracuje Mac se zvukem?
6. února 2006, 00.00 | V dnešním článku se vrátíme k procesorům, už ne do historie, ale podíváme se, kam směřuje budoucí vývoj Intelu. Ukážeme si, jakým způsobem pracuje Mac OS X se zvukem, zatím jen velmi teoreticky, ale příště se už na základě této šedé teorie vydáme do zcela konkrétní práce s audio systémem našich Maců.
Intel stejně jako Beatles: "Will you still need me, will you still feed me when I'm sixty-four?"
Nejprve se vrátíme na NAMM Show 2006, ne na výstaviště v Convention Centru, ale do přilehlého hotelu Hilton. Zde jsem jedno ráno posnídal na workshopu u společností Microsoft a Intel, abych zjistil, co je u nich nového, jídlo za to stálo, a informace - no posuďte sami: Intel ukazoval, kolik problémů je s převodem aplikací, aby podporovaly 64bitovou funkčnost Win Vista. Před více než půl rokem jsme museli přepsat i kódy pro Mac OS X pro GNU C++ 4.0, kompilující 64bitový kód, a to byla taky docela hrůza, ale zase je vidět, že Apple byl poněkud napřed. Intel ve svých dokumentech a na prezentacích zmiňuje Windows a UNIXy (Unices, jak říkají, tedy množné číslo), ale žádná zmínka o Apple. Ani v manuálu pro Intel EM64 (Extended Memory 64 Technology) architekturu není zmínka o Mac OS X. Snad jsou tedy specifika OS X zahrnutá do ostatních Unixů, ale explicitně to nikdo neříká. Rozdíl je v tom, že v 64 bitových unixech je používán model ILP 32-64-64, zatímco Windows (64) používají ILP32-32-64. To znamená, že adresy (P znamená pointer, I integer a L long) jsou v obou systémech 64bitové, ale velikost celočíselného formátu je jiná. To by mohlo způsobit nekompatibilitu řady zdrojových kódů, podle mě spíš těch čuňácky napsaných, takže bude potřeba zvláštní opatrnost při jejich sdílení mezi platformami, u 32 bitů tento problém neexistoval. Překvapilo mne, že se potvrzuje, jak Intel lepí technologie jednu na druhou, například systém používající Intel EM64 se nemůže nastartovat v 64bitovém módu, to bych ještě pochopil, ale dokonce se musí nastartovat v 16bitovém, pak se přepne do 32 legacy, tedy pořád jsme asi o 15 let pozadu, pak se teprve přepne do kompatibilního 32bitového nebo 64 bitového modu.
Rychlost a 64 bitů - kapánek složitější, než by se někomu mohlo zdát
Tady musím na základě nových podrobných informací trochu poopravit něco ze svého článku o procesorech. V diskusi se objevilo, že každý průmyslovák ví, že přechod na 64 bitů aplikace neurychlí. Šéf intelovského týmu o tom mluvil asi půl hodiny úplně jinak a řekl bych, že má víc, než průmyslovku.
Závěr je tento: Rozšíření na 64bitové adresování přináší řadu důsledků, které mohou rychlost stejné aplikace, přeložené pro 64 nebo 32 bitové adresování, značně změnit. Zajímavé je, že na obě strany, tedy zrychlit i zpomalit. Důvodů je řada, ten nejjednodušší je přesouvání většího množství dat a tedy zpomalení. Vzhledem k tomu, že přístup k datům je zarovnáván na větší bloky, je především pro aplikaci, která není s ohledem na 64bitů napsaná, nutné přenášet i zbytečná, výplňová data. To vede ke zpomalení.
Se 64bitovými adresami je nutné počítat, stejně jako s běžnými čísly v registrech, například všechna nepřímá adresování to vyžadují. Lze to snadno pochopit - pokud chcete mít přístup k n-tému číslu z řady uložené v paměti, začínající na adrese A, je adresa n-tého čísla A+n*velikost_čísla, tedy k adrese, která je 64bitová, se přičte nějaké vypočtené číslo, nazývané offset. Proto, aby to fungovalo a offset byl kompatibilní s adresovými registry, objevují se u 64 bitových procesorů úplně jiná pravidla především pro převody mezi různými typy čísel, také jiné instrukce nebo způsob provádění stávajících. A to vede většinou ke zrychlení operací. Dalšího zrychlení je u 64bitové architektury dosaženo tím, že EM64 zvětšuje na dvojnásobek počet základních registrů a také registrů vektorové jednotky. Operace v plovoucí čárce jsou u Intelu místo původního procesoru a později jednotky 80x87 počítány ve vektorových registrech SSE, což je u 64bitových procesorů odlišné a rychlejší než u 32bitových, dochází zde také k mírnému zrychlení.
Z grafů je ale vidět, že v celkové bilanci nejde o nějak převratnou změnu výkonu.
Protože pod minulým článkem se objevily rady, abych si nejprve něco přečetl o procesorech, než napíšu, že Intel je CISC a PowerPC RISC, přečetl jsem si specifikaci architektury EM64 vydanou INTEL PRESS a tam se píše, že ani Intel EM64 není RISC architektura narozdíl od architektury POWER, SPARC, PA-RISC a MIPS. Dále Intel přiznává, že narozdíl od standardních RISC architektur nejsou ani v 64bitových procesorech instrukce 64bitové, ale standardně 32bitové (64bitové je jen adresování). Takže má pravdu buď publikace Intelu a já, nebo anonymové v diskusích, vyberte si :-)
Audio podle Microsoftu - pořád kulhá za Apple
Ani Microsoft nezklamal a splnil očekávání, že jeho audio subsystém se posune k Mac OS X, ale ani zdaleka jej nepřekoná. Zatímco Mac OS X má možnost si nastavit priority aplikací celkem libovolným způsobem, kdo si nainstaluje Developer Tools a Core Audio SDK, najde v příkladech aplikací utilitku Million Monkeys, která umí zaměstnat procesor od pár procent až po takovou hodnotu, že už se jen počítá audio a na zbytek obsluhy systému procesoru nezbývá čas, takže aplikace ani nejde vypnout. Windows Vista přinášejí jako novinku Pro Audio mód, který by měl možné využití procesoru pro audio posílit. Všichni, kdo znají Maca a Windows vědí, že přetížení procesoru jednou aplikací může způsobit to, že počítač nereaguje ani na snahu aplikaci "shodit". U Windows trvá odhadem tak 10x delší dobu, než se po zmáčknutí ctrl-alt-del něco začne dít, než po command-option-escape u Maca, ale pokud je systém zatížený naplno, obě platformy se shodnou a prostě se k zobrazení okna s možností vynucení konce nedopracují. U obou systémů tato situace nastane, pokud si nějaká aplikace přivlastní příliš mnoho výkonu, ani preemptivní multitasking tady bohužel nepomůže. Rozdíl je především v tom, že při velmi zatíženém procesoru se Windows audio stává nespolehlivým, zatímco Mac hraje celkem bez problémů. Je to dáno tím, že Mac OS X (a myslím, že i Linux - ALSA) používají zvláštní způsob časování. Protože žádný z těchto desktopových systémů není v pravém slova smyslu real-timový, tedy není možné v něm něco dělat naprosto přesně třeba po setinách sekundy, má Mac OS X zvláštní způsob řízení úloh (threadů), které musí být zavolány v přesných časech. A to je především audio. Pokud je digitální audio provozováno na 44100 Hz, musí aplikace dostat jednou za jednu 44100tinu sekundy vynásobenou počtem vzorků, které naráz zpracovává, nějakou chvilku, aby mohla s daty něco provést. Pokud systém "zaspí" a dá aplikaci čas příliš pozdě, tak se to nestihne a dojde k trhanému přehrávání - drop outům.
Jak funguje audio na Mac OS X
U Mac OS Core Audio systému je na přesné časování použito velmi zajímavé řešení: Aby systém věděl, kdy má audio aplikaci zavolat, je na základě zjištění hodnot vypočítána předvídací hodnota, která říká, kdy teoreticky by audio aplikace měla dostat mezi všemi různě privilegovanými úlohami v systému svůj čas. Tak může předběhnout i tu úlohu, která si pro sebe nastaví v systému velkou prioritu. Asi před dvěma lety mimochodem Microsoft na jednom audio meetingu přiznal, že něco podobného nelze ve Windows se současným jádrem realizovat. Dá se tedy zjednodušeně říct, že u Windows je spolehlivost audia zajištěna tím, že je úloha obsluhována preemptivním multitaskingem má velkou prioritu, zatímco v Mac OS X jsou dvě úrovně - jednak je také možné nastavit prioritu, kromě toho ale nezávisle funguje mechanismus předvídání.
Celé audio řešení má nyní Apple ve svých rukou. Doba, kdy provozování audia na OS 7-9 záviselo na tom, jaký fígl programátoři najdou (a našli jich mnoho), je už pryč. Vzorná dokumentace, desítky příkladů a rozsáhlé knihovny umožňují napsat poměrně snadno třeba MP3 přehrávač, MIDI softwarový syntezátor nebo cokoli jiného. V oblasti audia se podařilo Applu také prosadit vlastní formát modulů pro efekty a virtuální nástroje, nazvaný AudioUnits. Tady se ukázala jedna věc - Apple nechce být závislý na dalších firmách. I když v době začátku existoval vynikající systém VST - Virtual studio technology, vytvořený německou firmou Steinberg, Apple vyvinul vlastní systém, který je celý, stejně jako VST, open source. Rozhodnutí se ukázalo být moudré, Steinberg totiž vzápětí byl koupen Pinnaclem a ten se snažil udělat si ze Steinbergu svého výrobce audio řešení, převážně pro PC. Mohlo se stát, že by firma přestala Mac-VST podporovat a Apple by zůstal bez podpory hudebních efektů. Steinberg sice posléze koupila Yamaha, která je v profesionálních řešeních poměrně pro-applovská, ale ani to Applu stoprocentní stabilitu podpory nezaručuje.
S audiem je spojené i řešení MIDI. Kdyby někdo nevěděl, MIDI znamená 2 různé věci: Jednak typ rozhraní - pětikolíkové zástrčky a seriový drát, a dále protokol, kterým se mezi libovolnými zařízeními přenášejí noty a pomocné informace, například dynamika, ovládací prvky (kontrolery) syntezátorů a klávesnic. Zatímco MIDI jako rozhraní je používáno pouze k přenášení MIDI dat, tato MIDI data jsou běžně přenášena také jinými typy rozhraní, jako USB, FireWire a Ethernet a také mezi aplikacemi na počítači. Tuto technologii Apple v systému OS 9 a starších sám o sobě vůbec nepodporoval, bylo nutné doinstalovat software dalších výrobců - OMS od Opcode Systems nebo FreeMIDI od MOTU. OMS byl v podstatě standard pro připojování MIDI zařízení, existoval i ve verzi pro Windows, kde neporovnatelně překonával windowsovské MIDI, ale jako standard se neujal. Apple to vyřešil geniálně - poté, co Opcode zkrachoval a nový vlastník, výrobce kytar Gibson propustil softwarový tým, Apple zaměstnal hlavního tvůrce a architekta OMS. Ten je v týmu zodpovědný za koncepci Core MIDI, v mnoha vlastnostech navenek podobného devítkovému OMS, ale po programátorské stránce zcela konzistentního s ostatními částmi Core Audia.
Tak to by snad pro dnešek mohlo stačit. Příště si povíme, jaká zvuková rozhraní si můžeme koupit a jak je nastavit, abychom mohli nahrávat a přehrávat třeba v GarageBandu a v dalších aplikacích.
Obsah seriálu (více o seriálu):
- NAMM Show v Los Angeles: Macy a hudba I.
- Mac a hudba II. - Jak pracuje Mac se zvukem?
- Mac a hudba III. - Jak pracuje Mac se zvukem?