När algoritmen möter hårdvaran

Man säger ofta att mjukvara är böjlig och lätt att modifiera medan hårdvara ses som huggen i sten och oföränderlig. Men paradoxalt nog så är livslängden för mjukvara ofta mycket längre än för hårdvara – det är inte ovanligt att man använder samma program i tiotals år medan datorn sällan överlever mer än ett par år. Trollerikonsten utförs med hjälp av ett isolerande lager bestående av en kompilator och ett runtimesystem som gör att programmeraren oftast inte behöver ta hänsyn till hårdvaruspecifika detaljer. Den här uppdelning är nästan bara av godo. Men man betalar ändock ett pris: det kan vara svårt eller omöjligt att fullt ut tillvarata hårdvarans möjligheter.

Hur utnyttjar man bäst en modern processor som är superskalär, djupt pipelinad och har flera nivåer av cacheminne? Vilka optimeringar kan kompilatorn göra? Måste högnivåprogrammeraren kunna datorarkitektur för att skriva effektiva program? Hur skriver man program som är effektiva och samtidigt flexibla och portabla? Det här är några av frågorna som jag vill diskutera på min docentföreläsning. Föredraget kommer att innehålla fler frågor än svar.

Bilder: ps

Stefan Nilsson