De laatste problemen rond multi-cpu/multi-core lezend op de Steiny forums (waar inmiddels te zien is dat men met de update na 4.1 - voorlopig als 4.1.1 aangeduid - het X-scale probleem zoals dat officieel heet, ook zal oplossen), wilde ik toch nog even een puur technische overweging toevoegen - voor wie het interesseert technisch:
Fuse stelde namelijk:
Maar goed, multi cpu programmeren is nou ook bepaald makkelijk te noemen.
Hij bedoelt natuurlijk niet makkelijk. En in principe is dat helemaal waar. Behalve... als je het hele probleem vergeet en het als een logische uitdaging ziet.
Hoe gaat het nu/ging het tot aan nu met normale software?
De meeste software is "multi-threaded" tegenwoordig. Dit is op het PC-platform vooral in opkomst gekomen toen Intel de processoren met Hyperthreading ging uitrusten, zoals hier bovenal door een SF-lid gezegd, een sloeber multicore: geen echte extra processor, maar een quick'n dirty methode om de restcapaciteit van de CPU te gebruiken.
Belangrijk daarbij is te weten dat tot aan dat moment een PC helemaal niet in staat was om "realtime" gelijktijdig meerdere processen uit te voeren. Elk proces werd serieel (na elkaar) netjes berekend. Doordat dat steeds sneller kan verlopen, lijkt het dan alsof de PC realtime werkt en meerdere taken tegelijk uitvoert. In werkelijkheid krijgt elk proces een stuke processortijd en wordt alles in delen na elkaar berekent. Door een prioriteit aan een berekening toe te kennen verloopt het ene proces sneller, en minder belangrijke dus trager omdat deze minder rekentijd krijgen.
Dit principe is grofweg nog steeds de methode waarmee vrijwel alle huidige software werkt. Inmiddels hebben we multi-core en multi-cpu beschikbaar voor consumenten (in de prof industrie al decennialang achterhaald nieuws). Ook het besturingssysteem is veel beter geworden in de ondersteuning voor multi-threaded, multi-core besturing. Met name Vista heeft een arsenaal aan "class scheduling" mechanismen waar echte Vista software gebruik van kan maken. Omdat de software daar in de meeste gevallen nog niet voor is geschreven/geoptimaliseerd, zijn er met name met allerlei "realtime" software zoals DAWs nog enorme prestatiewinsten te behalen. De "ik-kan beter een wasmachine-testen"-consumentenbond ten spijt, Vista is wel degelijk een enorme stap voorwaarts MITS softwarefabrikanten de mogelijkheden van Vista ook gaan benutten. Kip-ei verhaal, niets nieuws onder de zon. Was in het begin met XP niet anders. Door je systeem te tweaken, waarbij allerlei voor jouw toepassing min of meer nutteloze services de nek worden omgedraaid, kun je de prestatie van je systeem nog verder opkrikken. Maar het feit blijft: zo lang het huwelijk van software, OS en hardware niet optimaal is, altijd een verspilling van resources, prestatie en problemen.
Van probleem naar toekomstgerichte uitdaging: MPP of SMP of een combinatie
Massive Parallel Processing (MPP) of Symmetrical Parallel Processing (SMP). twee begrippen die pas nu in de consumenten-PC wereld hun intrede doen. Bij MPP laat je veel brute rekenkracht los (lees: multi core + multi-CPU) op één specifieke taak. Bij SMP laat je veel rekenkracht los op een groot aantal taken tegelijk. Het principe van een PC onder XP en zeker Vista en OSX, is dat van SMP. Je hebt een multimedia computer waar je video's op kijkt, spellen mee speelt, mee mailt, chat, foto's bewerkt noem maar op. Veel applicaties staan tegelijkertijd open. De besturingssystemen zijn hier ook helemaal op ingericht.
Ga je een systeem tweaken, dan wil je ultiem je SMP ingericht OS zover optimaliseren dat hij als een MPP systeem gaat werken met maar één doel: de ultieme muziek DAW in onze toepassing.
De waarheid is echter dat complexe software als Cubase, ProTools (etc.) weliswaar één specifieke taak hebben en MPP lijken, maar in essentie SMP zijn én in een SMP omgeving draaien. Immers, voor een DAW moeten talloze berekeningen realtime worden gedaan: mixer, effecten, VSTs, time stretching, etc.
En juist daar zit een uitdaging als een software ontwikkelaar bereid is van de grond af aan zijn software te herzien.
Door namelijk een DAW op te delen naar een aantal specifieke achtergrondprocessen met een eigen prioriteits afhandeling, zou je een perfekt multi-core, multi-cpu programma kunnen ontwikkelen.
Je hebt zo even snel opgesomt en bedacht (en zeker niet compleet) nodig:
- Class scheduler: deze zit al in Windows, maar een, in dit voorbeeld, een eigen speciaal geschreven Steinberg Class Scheduler die de verschillende threads van het programma aan de hand van een classificatie (en dus prioriteit) opvangt, doorgeeft aan een berekenings-service, de resultaten afvangt en het programma informeert dat de berekening klaar is
- Algorithmic Services: diverse specifieke services (achtergrondprocessen), elke met een eigen taak te berekenen, die aan de hand van wat de Class Scheduler hen heeft toebedeeld, aan de slag gaat
- Exception Handler: een service die bekijkt waar de DAW zelf mee bezig is en uitzonderingen (bijv. stoppen/starten/punch-in opname, etc.) afvangt en doorgeeft aan de Class Scheduler (dit kan een integrale functie van de Scheduler zijn, beter is dit ook als aparte service uit te voeren voor multi-core/CPU systemen)
- Memory Buffer Scheduler: ondersteuning voor de Class Scheduler die in staat is nog niet compleet berekende resultaten toch al aan de DAW ter beschikking te stellen (zeker bij disk-streaming en sampling handig)
- User Thread Prediction Engine: een systeem dat "leert" hoe een gebruiker zijn DAW meestal gebruikt én wat de eerstvolgende logische berekening moet worden: dit voorspelt wat volgende taken zullen zijn en daarmee kan de Class Scheduler verder geoptimaliseert worden
- Plugin Monitoring Handler: door dit als achtergrondproces af te handelen crasht de DAW niet meer op een niet (goed) werkende plugin, maar schakelt deze uit en informeert de DAW dat deze onbeschikbaar is om welke reden dan ook
- ASIO/Stream Handler: een extreem low-level (betekent hoogste prioriteit) service die zorgt dat de audio (video) streams goed verlopen
- Stream Routing Service: een achtergrondproces wat zorgt dat alle data van en naar PCI-e/PCI-X/PCI optimaal verlopen en nooit meer voor bandbreedte problemen kunnen zorgen op de chipset: dit principe zou "realtime" audiokaarten mogelijk gaan maken met maar 1 sample buffer en zelfs minder dan één sample bit-buffers volgens DSD (Direct Stream Digital) principe: 1-bit serieel. Bovendien zou dit een enorme vooruitgang in de audiokaarten qua geluidskwaliteit teweeg brengen. De Stream Routing Service zou echter compatibel moeten zijn met alle huidige hardware, maar ook een complete nieuwe generatie kaarten mogelijk maken
- GUI Buffer & Handler: beeldscherm-afhandeling
De DAW applicatie zou vervolgens alleen nog maar een kernprogramma zijn wat de globale werking bestuurt en afhandelt naar wat het "krijgt" van de achtergrondprocessen. Zo'n opzet combineert dan MPP en SMP priincipes, is bij utistek voor moderne multi-core/multi-cpu systemen geschreven en kent in deze opzet geen concurrentie in de markt. Het grote nadeel voor een software fabrikant is dat ongeacht welke software nu op de markt, het moet compleet worden herschreven.
Als laatste optimalisatie voor PC's kun je een HAL (hardware abstraction layer)-enabled installatie uitvoeren (of simpelweg: OEM-installatie) en je zou een extra hardware profiel kunnen kiezen bij het opstarten van je PC waarbij vervolgens je hele machine automatisch optimaal is ingericht voor één toepassing: DAW gebruik. En wil je weer terug naar je normale PC-gebruik, start je de volgende keer op met je standaard hardware profiel waar alle dagelijkse dingen onder draaien.
Hoie kom ik bij deze "wijsheid" (zelfspot modus

): o.a. als adviseur/manager in o.a. de AV industrie die talloze bedrijven helpt bij de ontwikkeling van hardware/software. Hoe groot is de kans dat een dergelijke aanpak wordt toegepast? Niet bijster groot ben ik bang zolang de fabrikanten van dit soort software niet een PC durven te claimen voor één toepassing (wat in principe ook haaks staat op de gedachte van een PC). Maar voor high-end toepassingen, consumenten of niet, is een dergelijke ontwikkeling net zo vooruitstrevend als destijds de introductie van "ASIO" en "VST". Dus het kan wel degelijk. Als vervolgens Steinberg Marketing dan eens wakker wordt en een echt goede vent er neer zet die delen van deze techniek aan anderen als licenties gaat geven, is er veel meer te verdienen dan aan Nuendo, Cubase en wat VST-tjes alleen. Bovendien zet je als bedrijf dan een trend neer die je , mits goed gedaan, in 1-klap weer op het wereldpodium plaatst als trendsetter. En laten we eerlijk zijn: Steinberg mag ogenschijnlijk de laatste jaren voortborduren op eigen oude uitvindingen, het is wel degelijk een trendsetter vanuit het verleden die een revolutie hebben veroorzaakt met DAW toepassingen. Het wordt alleen tijd dat ze dit zelf weer eens in gaan zien en een echt plan trekken naar de toekomst. Want anderen kunnen dit in principe ook. Niet alleen andere DAW-fabrikanten. Maar inmiddels ook VST-fabrikanten. De concurrentie van een geheel nieuwe DAW kan op een zekere dag maar zo uit onverwachte hoek komen van een VST-fabrikant als Native Instruments: die hebben de kracht, het geld en de kennis. Op naar de volgende revolutie, en tot die tijd ploeteren wij als gebruikers voort met (veel) minder dan optimaal presterende systemen...