Na het eerste succes van zijn fpga/cpu-hybrides voegt Xilinx nu functionaliteit voor realtime controle, grafische mogelijkheden en beveiliging toe aan de mix. En maakt het voor programmeurs makkelijker om ermee te werken.
Xilinx deed in 2010 behoorlijk wat stof opwaaien met de introductie van zijn Zynq-soc: een krachtige Arm-processor en een fpga in een enkele verpakking. Hoewel de industrie fpga’s met geïntegreerde processoren wel eerder her en der voorbij had zien komen, ging deze hybride een stap verder met zijn krachtige dualcore Arm Cortex-A9 die via brede bussen de datastromen in de fpga-logica kon aansturen. Het was daardoor niet langer nodig om die twee componenten apart op een bord te plaatsen en met de nodige elektronica aan elkaar te knopen.
De overstap naar het 16-nanometerknooppunt – in de pr-uitingen de Ultrascale+-generatie – grijpt Xilinx aan om zijn Zynq eens goed onder handen te nemen. De meest in het oog springende wijziging van de nieuwe ‘Mpsoc’ is de upgrade van de cpu: de dualcore 32 bit Cortex-A9 maakt plaats voor een modernere quadcore 64 bit processor van Arm. De keus valt daarbij op de A53 – weliswaar niet de meest krachtige variant die verkrijgbaar is, maar wel de meest energie-efficiënte.
Enigszins verrassend trekt Xilinx ook twee Cortex-R5-cores binnen zijn Mpsoc. De Cortex-R-lijn van Arm is niet bedoeld voor bruut rekenwerk, maar voor het maken van betrouwbare en deterministische realtime systemen. Die toevoeging is een eerste teken dat Xilinx met zijn Zynq nieuwe markten wil aanboren zoals industriële aansturing (en dan met name smart industry) en automotive. De nieuwe Mpsoc komt deze markten ook op andere fronten tegemoet. Zo zijn features ingebakken voor het beheer van cryptografische sleutels en secure boot, en is de soc voorzien van maatregelen om tampering tegen te gaan.
Op grafisch gebied is de soc eveneens uitgebreid. Er is nu een gpu aan de mix toegevoegd, een Mali-exemplaar van Arm. Volgens Xilinx is dat tegenwoordig simpelweg een basisvereiste voor het bouwen van een grafische interface; gebruikers verwachte gelikte bewegingen die alleen met hardwarematige versnelling bereikt kunnen worden. Ook is een videocodec aan boord getrokken en beschikt de soc over de nodige interfaces voor het aansturen van displays.
Een laatste belangrijke uitbreiding zijn de uitgebreide features voor stroombeheer. De nieuwe generatie Zynqs zijn voorzien van een powermanagementunit die, onder invloed van de software, onderdelen van de chip kan terugschroeven of zelfs helemaal kan uitschakelen.

Dappere poging
In de beeldvorming positioneerde Xilinx zijn Zynq vanaf het begin als processor-first product; we moesten hem niet zozeer zien als een processor en fpga in een enkele behuizing, maar als een processor waarvan de software naar believen van de herconfigureerbare fpga-logica kon tappen om specifieke taken te versnellen. Dat betekende ook dat het bedrijf op een heel ander publiek begon te mikken: softwareontwikkelaars in plaats van hardwareontwerpers.
Natuurlijk doken softwareontwikkelaars niet direct op dit nieuwe concept en keek de markt in eerste instantie toch op de meer traditionele manier tegen de Zynq aan. Tooling is hiervoor een belangrijke reden; programmeurs werken nu eenmaal heel anders dan hardwareontwerpers. Xilinx deed een dappere eerste poging via de overname van Autoesl, waarmee het een methode in huis kreeg om C- en C++-code naar rtl te compileren – zolang daar niet al te gekke geheugenfratsen in zitten. Via de grafische Vivado-omgeving zijn deze blokken vervolgens in het systeemontwerp te hangen. Programmeurs konden hun code hier dus ook op de fpga mee gaan draaien, maar het blijft de vraag of deze manier van werken goed aansluit bij hun belevingswereld.
Xilinx vuurt nu twee nieuwe salvo’s af om het de programmeur makkelijk te maken. Het komt met een Eclipse-gebaseerde ontwikkelomgeving, Sdsoc genaamd, waarin aangegeven kan worden welke functies uitgevoerd moeten worden op de fpga. Een profiler en simulator helpen om het inzicht hiervoor te krijgen. Daarnaast zitten er bijvoorbeeld trucs in om automatisch een verkenning uit te voeren van de meest geschikte bussen. Xilinx levert hier fpga-geoptimaliseerde softwarebibliotheken mee zoals Opencv, Blas en videoprocessing.
Maar wellicht dat de eind vorig jaar geïntroduceerde Sdaccel-ontwikkelomgeving relevanter is – voor de programmeur. Hierin kiest Xilinx voor Opencl om de fpga-logica te beteugelen. Programmeurs kennen deze aanpak al om code voor gpu’s te schrijven. In Opencl delegeert de programmeur vanuit zijn hoofdprogramma kleine ‘kernels’ naar de gpu – of fpga – om specifieke taken uit te voeren. Het heeft dus al het voordeel een ‘processor first’-aanpak te zijn.