Technieuws

Poortwachter waarschuwt chip voor vreemdelingen

Pieter Edelman
Reading time: 3 minutes

De University of Michigan claimt een manier gevonden te hebben om de meeste bugs in processoren te elimineren met een minimale overhead. De methode gebruikt een extra processorcomponent die de interne toestand van de chip in de gaten houdt. Komt deze een niet van te voren goedgekeurde staat tegen, dan schakelt de semantic guardian de processor tijdelijk in een simpelere, geverifieerde manier van werken. ’Vergelijk het met het eventjes veranderen van een motor in een fiets als de bestuurder een ruw stuk weg tegenkomt. De bestuurder kan dan rustig over de hobbels rijden zonder te vallen‘, zegt Michigan-researcher Valeria Bertacco, die het onderzoek samen met haar promovendus Ilya Wagner uitvoerde.

Processoren worden steeds complexer en bogen op verschillende technieken om sneller resultaten te produceren. Door pipelining bijvoorbeeld voert de processor meerdere stadia van een bewerking gelijktijdig uit op verschillende opdrachten. Out-of-order-executie verandert de volgorde van de opdrachten zodat er zo min mogelijk gewacht moet worden op uitkomsten. Daarnaast zijn er nog technieken als branch prediction, waardoor de processor gokt welke richting een codestroom op zal gaan en alvast begint te rekenen, en prefetching, dat speculeert welke data er uit het geheugen nodig zijn en ze alvast ophaalt. Door deze complexe codestromen wordt het lastig om alle mogelijke scenario‘s te testen. Processorfabrikanten beperken zich daarom tot het verifiëren van de meest voorkomen situaties. Het is niet ongebruikelijk dat ze met de chip een lijst meeleveren met bugs die pas na de productie zijn ontdekt. Maar deze lijst is verre van compleet. Bovendien kunnen goedwillenden de lijsten gebruiken om problemen te voorkomen, maar kwaadwillenden kunnen ze juist aanwenden om systemen onderuit te halen.

Een van de meest befaamde problemen is de f00f-bug in Intels processoren. De naam van de bug slaat op de eerste twee getallen in die een commandoreeks coderen waarmee de processor vastliep. Een van de commando‘s moest een foutmelding genereren als die een onjuist geheugenadres gevoerd krijgt. Door het toevoegen van het tweede commando wist de processor echter niet meer waar de foutmelding naar toe moest en liep de hele zaak vast. De bug kon in het ontwerp glippen omdat deze combinatie van commando‘s zeer ongebruikelijk is. Sterker nog, ze is eigenlijk niet toegestaan en de f00f-code kon alleen handmatig worden geschreven.

This article is exclusively available to premium members of Bits&Chips. Already a premium member? Please log in. Not yet a premium member? Become one for just €20 for the first year and enjoy all the benefits.

Login

Related content