Als embedded-software-/systeemarchitect word ik vaak geconfronteerd met performance: de mate waarin het systeem in staat is om aan de (hard) realtime requirements te voldoen – althans, dat is voor ons de definitie. De architect heeft een groot aantal hulpmiddelen tot zijn beschikking voor performanceoptimalisatie, zoals geavanceerde interruptstructuren, DMA om hardware te benaderen zonder software-interventie en realtime OS’en, maar ook methodieken als rate monotonic analyses voor het bewijzen van de performanceaspecten. Met deze hulpmiddelen is het mogelijk systemen te creëren waarbij performance-requirements tot op microsecondeniveau haalbaar zijn. Waarom is het dan in de praktijk toch zo moeilijk?
Het begint vaak bij de architect. Performance hoort geadresseerd te worden in de architectuur en is de verantwoordelijkheid van de architect. Die moet zorgen voor een overzichtelijke structuur met een op het probleem toegespitste verdeling over de hardware en de software, en regels die de softwareontwikkelaars moeten opvolgen.
Performance heeft echter te maken met dynamisch gedrag, en het aantal mogelijke toestanden waarin een systeem op een gegeven moment kan verkeren, is vrijwel oneindig. Zie dan maar eens te voorspellen hoe het systeem zich zal gedragen. Daarnaast dient de architect zeer diepgaande kennis te hebben van het toegepaste microcontrollerplatform, waarbij datasheets van meer dan duizend pagina’s eerder regel zijn dan uitzondering.
