Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 72 reacties

Barcelona-/Phenom-die fpaDe laatste paar weken is op diverse hardwaresites hevig gediscussieerd over een bug die zich in de nieuwe quadcores van AMD bevindt. Het nieuws werd in eerste instantie gemeld in het geruchtencircuit en genoemd als de reden voor het op het laatste moment uitstellen van de 2,4GHz Phenom. Later werd door woordvoerders van AMD echter toegegeven dat het probleem in alle quadcores aanwezig is, inclusief de veel lager geklokte Barcelona. Het verhaal bereikte zijn voorlopige climax vorige week dinsdag, toen bekend werd dat de levering van quadcore Opterons bijna helemaal stil is gelegd.

Op de mailinglist van x86-64.org heeft AMD een dag later technische uitleg gegeven over de bug die Barcelona en Phenom plaagt. In dit artikel zullen we uitleggen wat er precies aan de hand is, wat de gevolgen zijn en hoe het probleem opgelost kan worden.

* Achtergrond

Om de bug te begrijpen moeten we diep afdalen naar het binnenwerk van de architectuur. Alle besturingssystemen maken tegenwoordig gebruik van virtueel geheugen, wat betekent dat iedere applicatie denkt dat hij het hele geheugen voor zichzelf heeft. Een voordeel hiervan is dat applicaties geen rekening hoeven te houden met elkaar, maar belangrijker is dat ze het niet eens kunnen: dankzij het gebruik van virtueel geheugen is het voor software zonder kernelrechten onmogelijk om bij een ander programma in het geheugen te komen, bijvoorbeeld om het te laten vastlopen (per ongeluk of expres) of beveiligde data uit te lezen.

Omdat er in werkelijkheid natuurlijk maar één echt systeemgeheugen is, moet de processor in samenwerking met het besturingssysteem een vertaalslag uitvoeren tussen virtuele en fysieke adressen. Om dat soepeler te laten verlopen worden die vertaalacties gecachet in de translation lookaside buffer, ofwel TLB. Dit is de veroorzaker van het probleem, maar om er precies achter te komen wat er aan de hand is moeten we nog iets dieper duiken.

Een component die heel veel met de TLB te maken heeft is de page translation table. Deze komt om de hoek kijken op het moment dat een adresvertaling nog niet - of niet meer - bekend is. De page table is een soort inhoudsopgave voor geheugen. Deze doet langer over het zoeken dan de snelle buffer, maar heeft wel een compleet overzicht.

Page table

De PTT heeft echter meer functies dan alleen maar het vertalen van adressen; er wordt ook in bijgehouden wat de status is van hetgeen er op te vinden is. Bevindt het zich op dit moment in het fysieke geheugen? Mag er naar geschreven worden? Gaat het om instructies of data? Is er iets aan gewijzigd sinds het is opgevraagd? Vooral die laatste is belangrijk: als data uit het geheugen wordt gegooid zonder dat de wijzigingen eerst worden opgeslagen, kan dat tot vervelende resultaten leiden. Een crash is daar nog een van de minst erge van: software die zonder dat iemand het merkt de fout in gaat is een veel grotere kopzorg, in ieder geval voor bedrijfskritische systemen.

* De bug

De bug waar AMD mee kampt staat intern bekend als 'erratum 298' en kan precies die nare situatie veroorzaken. Onder bepaalde omstandigheden kan het gebeuren dat de chip tijdens het wijzigen van de status van een brok data ineens gestoord wordt door andere opdrachten die in de wachtrij staan, die ten onrechte een hogere prioriteit krijgen. Hierdoor kan het zo zijn dat het L3-cache al wel op de hoogte is van de verandering, maar het L2-cache nog in het duister tast.

Als binnen die hele korte tijd hetzelfde stuk data weer een keer wordt opgevraagd, dan kan de statusupdate 'vergeten' worden. De onafgemaakte actie gaat echter niet zomaar weg: als hij na de ongelukkige onderbreking terugkeert kan hij als klap op de vuurpijl nog wat data corrupt maken.




Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True