TSX: Nu écht beschikbaar
Juni 2013, ten tijde van de introductie van de eerste Haswell processors voor desktop processors, besteedden we voor het eerst aandacht aan Intel TSX, nieuwe instructies voor het slimmer omgaan met geheugen dat wordt gedeeld door meerdere programma-threads. De belofte dat TSX snel een opmars zou gaan maken kon Intel niet waarmaken; in de implementatie bij Haswell bleek nog een bug te zitten, waardoor TSX in de desktopwereld na introductie verder werd doodgezwegen en in latere micro-code updates werd uitgeschakeld. In de server wereld werd TSX bij de Haswell server-processors helemaal overgeslagen.
Nu, bij de Broadwell generatie, komt TSX eindelijk wél echt op de markt. Juist voor servers is de technologie in theorie veelbelovend.
TSX staat voluit voor Transactional Synchronization Extensions (TSX) en deze nieuwe technologie verbetert de manier waarop meerdere threads van hetzelfde programma omgaan met data in het geheugen. Het kan ervoor zorgen dat multithreaded software beter kan schalen naar meerdere cores.
Wat is het geval? Wanneer een thread van een programma op dit moment aanpassingen aan de data van het programma in het geheugen wil doen, wordt in de regel het gehele geheugensegment op slot gezet. Andere threads kunnen de data dan enkel nog read-only of soms zelfs helemaal niet meer benaderen. Vergelijk het met wanneer twee mensen in hetzelfde bedrijf aan dezelfde Excel-spreadsheet willen werken. Zodra één iemand de sheet geopend heeft, krijgt de ander bij openen een melding van Excel dat de sheet alleen in een alleen-lezen modus geopend kan worden. Net zoals de twee werknemers op elkaar moeten wachten om data in de sheet aan te passen, moeten de verschillende threads binnen de CPU dat ook. Wachten is in beide gevallen zonde van de tijd. Zo’n complete lock is vaak niet nodig: net zoals het bij Excel-sheet best mogelijk is dat de twee medewerkers in een compleet ander gedeelte van de sheet werken, kan het bij meerdere threads ook zo zijn dat ze aanpassingen doen in gedeeltes van het geheugen waar de ander niet afhankelijk van is.
Een oplossing is om bij aanpassingen van het geheugen met zogenaamde transacties te gaan werken, een concept dat voor database-techneuten gesneden koek zal zijn. Bij een transactie worden alle aanpassingen van een bepaalde lijst opdrachten opgespaard en uiteindelijk in één keer verwerkt. Mocht er tijdens het verwerken van de transactie iets veranderen waardoor deze niet meer kan worden uitgevoerd, dan wordt alles teruggedraaid en krijgt de software de mogelijkheid om het opnieuw te proberen of om de opdracht te laten zitten. Dat werkt uitstekend voor databases en kan net zo goed werken voor geheugen.
De Transactional Synchronization Extensions bestaan uit twee implementaties. Hardware Lock Elision (HLE) is de simpelste en is backwards compatible met bestaande processors. Wat hier gebeurt is dat de instructies die een stuk van het geheugen ‘locken’, vooraf worden gegaan door twee instructies die alleen TSX-processors snappen. Oudere processors slaan die instructies over en geven ouderwets de volledige lock, net als vroeger. Bij de Broadwell processors zorgen de prefix-instructies ervoor dat de lock niet echt wordt gezet, maar dat de aanpassingen aan het geheugen van de betreffende thread in een transactie worden gedaan. Zolang de fictieve lock aanwezig is, houdt de processor exact bij wat de thread en de andere threads in het betreffende gedeelte van het geheugen uitvoeren. Zodra er een conflict is (twee threads willen dezelfde data overschrijven of de ene thread leest een stuk data dat de ander net wil gaan overschrijven), dan draait de processor de transactie terug vóór de blokkering wordt opgeheven en wordt de operatie opnieuw uitgevoerd met een echte blokkade.
De tweede variant is Restricted Transactional Memory. Wanneer de software op deze wijze wordt gecompileerd, is deze niet compatibel met oudere processors, maar hebben ontwikkelaars zélf invloed op de transacties. Ze kunnen deze zelf starten, stoppen en ook opgeven wat er moet gebeuren wanneer een transactie wordt teruggedraaid.
Hoewel TSX al sinds 2012 is gestandaardiseerd en gedocumenteerd, is ons nog geen veel gebruikte software bekend die er daadwerkelijk gebruik van maakt. Aangezien Intels meest gebruikte server platform tot nu toe ook nog geen ondersteuning bood, is dat ook niet zo gek. Het komende jaar zal moeten blijken of en hoe TSX wordt opgepakt door software vendors. Het feit dat Intel de laatste tijd flink investeert in open-source database software, zet op z'n minst te denken dat de fabrikant het gebruik van speciale optimalisaties door dergelijke software wil versnellen.
1 besproken product
Vergelijk | Product | Prijs | |
---|---|---|---|
![]() |
Intel Xeon E5-2699 v4 Tray
|
Niet verkrijgbaar |