Linuxspalten nr 2 2008
Flest kärnor vinner!
Den som har flest processorkärnor vinner! Eller är det bara overhead med flera kärnor, som att kasta dyra och energislukande CPU-cykler åt kråkorna!
Linuxspalten har varit ute i den riktiga världen och talat både med Linuxaktivister och de som inte får samma lyster i blicken bara man nämner öppen källkod och fri programvara. En allmän uppfattning är att problemen kanske inte ligger i valet av operativsystem utan i hur vi ska göra för att ta tillvara alla de transistorer halvledarindustrin förser oss med. Hårdvarutrenden är klar, det ska vara fler kärnor för att vi ska fortsätta att leva upp till Moores lag. Men var står mjukvaran?
Jakob Engblom på Virtutech, han presenterade på Wind Rivers seminarium i Kista kallat ”Making multicore work”, beskriver svårigheten att skriva programvara för moderna superchip med flera processorkärnor. Han beskriver hur programutvecklingen kan drivas med Virtutechs simulator, där allt simuleras i programvara. Här ska man i alla fall kunna se om koden fungerar och ha en rimlig chans att hitta problem även innan den färdiga hårdvaran finns på plats.
Det Jakob också påpekar är att programutveckling blir inte lättare! Fler kärnor, fler processer, ökad komplexitet och fler programmerare som skriver och utvecklar hård och mjukvara i allt större projektteam.
Ändlig bandbredd för debug-portar, tidskritiska beroenden och ingen determinism. Svårigheten att upprepa felfunktioner, fel som försvinner när vi försöker spåra dem med hård- eller mjukvaru-probar och hur stoppar man ett system med flera CPU-kärnor hårdvarumässigt? Det blir som att bromsa på en hal väg, lite sladd får man räkna med. Det behövs en metodik som håller för framtiden. På Virtutech är det mukvarubaserad simulering som löser det växande nystan av beroenden utvecklarna skapar.
Wind River, som levererar mjukvaruplattformar, beskriver hur man hårdvarumässigt kan sköta avlusningen med en Wind River ICE (In Circuit Emulator). Den är avancerad nog för att hantera upp till åtta separata processorer eller CPU-kärnor i realtid. Det räcker säkert för dagens system men vad händer i framtiden. Att Wind River lyfter fram problematiken att ta fram programvara för SMP- (Symmetric Multiprocessing) och AMP-system (Asymmetric Multiprocessing) är en naturlig utveckling. Att man integrerar ett simuleringsverktyg som Simics från Virtutech i sin Eclipsebaserade Workbench måste vara en bekräftelse på att mjukvarusimulering är kraftfullt komplement för programutveckling.
Freescale talar på samma multicore-seminarium om de trösklar processorkonstruktörerna står inför. Effekt-tröskeln säger man är 30 Watt. Högre effekt och det blir svårt att kyla. Ett allt större gap mellan cykeltiden för processorns instruktioner och minnesprestanda gör att vi idag får komplexa cacheminnen för att i någon mån dölja dåliga svarstider på minnen. Parallellism är det sista stora problemområdet som nämns. Allt fler processorer, kärnor, måste matas med kod som kan exekveras parallellt. Bristen på förståelse för hur vi skapar robust kod för dessa system gör att vi tvingas till nya metoder för systemutveckling.
På många företag är det en strid om fördelningen av kostnader för utveckling av hårdvara och för driften av allt större avdelningar för programutveckling.
På Elektronik/EP träffade jag Berth-Olof Bergman. Han är entreprenören och mannen bakom Zebor Technology AB. Hans vision är att optimerade byggblock och effektiv användning av de resurser, den hårdvara, vi har är den sanna nyckeln till bättre system. Linux eller Microsoft Vista spelar ingen roll. De lider båda av resursslöseri. Att gödsla med CPU-cykler är inte en hållbar framtid.
Men kan vi inte öka kvaliteten på programvaran överlag, så är högre prestanda på hårdvaran kanske enda vägen att gå. För att den koloss på lerfötter, som programvaruindustrin idag representerar, ska lyckas ge oss högre prestanda går det åt CPU-cykler. Många CPU-cykler.
Filed under: Jan Zettergren, Linuxspalten