De zaak van beschermde instructiesets voor microprocessoren

Toen IBM in 1981 met de IBM PC op de markt kwam, maakte deze gebruik van de toen 2 jaar oude Intel 8088 microprocessor. Deze processor was in grote getale beschikbaar en had, mede door het volume waarin IBM de processoren afnam, een prima prijs. De processor presteerde niet alleen beter dan de in 1976 geïntroduceerde en op de eerdere Intel 8008 gebaseerde Zilog Z80, maar Intel had ook plannen voor een 16- en zelfs 32-bit groeipad. En hoewel vele van de honderden home computers in die tijd met een Z80 werkten duurde het niet lang voordat de markt overspoeld werd met IBM-compatible PC’s, die allemaal waren uitgerust met een Intel 8088 microprocessor. Het leek niet stuk te kunnen voor Intel: niet alleen bracht de verkoop van de 8088 processor veel geld in het laatje, de markt was ook rijp voor de nieuwe processorlijnen van Intel en nam iedere innovatie op dat gebied gretig af.

Vanuit Japan schoof NEC echter een spaak tussen de wielen. In 1982 bracht het directe kopieën van de Intel 8088 op de markt onder het typenummer NEC uPD 8088. Intel sleepte NEC voor de rechter, maar voor deze uitspraak kon doen besloot NEC bakzijl te halen en Intel voor een licentie op het ontwerp van de microprocessor te gaan betalen. De licentiekosten maakten het voor NEC oninteressant om de uPD 8088 te blijven produceren, maar toch gaf het de pijp niet aan Maarten. In eind 1984 kwam NEC met de V20 op de markt die volledig pin- en softwareware compatible was met de Intel 8088 en in 1985 stonden Intel en NEC tegenover elkaar voor de rechter. Het resultaat van de uitspraak was echter, door Intel’s eigen toedoen, niet in hun voordeel en NEC mocht de V20 blijven verkopen.

Het is belangrijk te weten dat een microprocessor niets anders is dan een grote elektronische schakeling met vele tienduizenden transistoren, weerstanden en condensatoren. Het woord micro komt uit de tijd dat processoren nog werden opgebouwd uit losse onderdelen op grote printplaten. Bij een microprocessor zijn alle onderdelen (voornamelijk transistoren en weerstanden) op een enkele glasplaat gedampt en geëtst. Processoren (en microprocessoren) bestaan voor het grootste deel uit logische poorten, zogenaamde gates. Deze logische poorten vormen de bouwblokken voor geheugenbits en registers, schuifregisters, rekenblokken en tellers. Een enkele poort is opgebouwd uit drie transistoren en voor een geheugenbit zijn vier poorten nodig; 12 transistoren. Voor een 8-bits optel- en aftrek rekenblok zijn ruim 200 poorten nodig; 600 transistoren. De Intel 8088 heeft op deze manier 29.000 transistoren (en bijna 13.000 weerstanden) in gebruik. Het elektronisch schema hiervan hield Intel angstvallig geheim, maar iedereen met voldoende middelen kon een Intel 8088 kopen, de behuizing openen en met een elektronenmicroscoop het chipontwerp bestuderen: de opbouw van de microprocessor was, voldoende ingezoomd, voor iedereen zichtbaar.

Intel 8088 microprocessor zoals gezien onder een microscoop

Het zien van de elektronische schakeling, met hoeveel details dan ook, was één, het doorgronden van de werking was een ander. Gelukkig voor NEC had Intel daar een handboek voor gepubliceerd: de Intel 8088 User Manual. Het handboek beschreef, in veel detail, het precieze gebruik van de microprocessor. Niet alleen werd beschreven, welke elektrische signalen op de processor aangeboden moesten worden, maar ook op welke manier deze signalen elkaar moesten opvolgen en welke resultaten dat opleverde. Het bevatte een detailbeschrijving van het gedrag van de Intel 8088 microprocessor, gegeven bepaalde ingangssignalen.

Het handboek bevatte een opsomming van deze signalen, stroomschema’s voor het gebruik ervan, toepassingvoorbeelden en lange lijsten van mnemonics: afkortingen voor elk van de mogelijke functies van de microprocessor, zoals DEC (verminder een intern gebufferd resultaat met 1) en INC (vermeerder een intern gebufferd resultaat met 1). Deze functielijst wordt de instructieset van de microprocessor genoemd. Iedere microprocessor heeft een eigen instructieset waarmee assembleerprogramma’s kunnen worden samengesteld: programma’s die steeds per 8 bits elektrische signalen aan de processor worden aangeboden, waardoor de transistoren van de microprocessor een bepaalde stand innemen, de logische poorten van waarde veranderen en de microprocessor een instructie ‘uitvoert’.

De ingenieurs van NEC namen kennis van de instructieset zoals Intel die had gepubliceerd, bekeken de schakeling van de Intel 8088 via een microscoop, maakten een eigen schakelschema (want een logische poort kan op verschillende manieren worden ontworpen) en doopten dit nieuwe ontwerp ‘NEC V20’: de tweede versie van NEC. De NEC V20 had een eigen schakelschema, maar had aan de buitenkant dezelfde signaalingangen en verwerkte alle instructies van de Intel 8088 op precies dezelfde manier. Een Intel 8088 kon door een eindgebruiker uit de chipvoet worden gehaald en vervangen worden door een precies eender uitziende NEC V20 en direct genieten van de iets hogere verwerkingssnelheid.

De rechter oordeelde in 198 dat NEC geen inbreuk maakte op het schakelschema van Intel, omdat NEC iedere schakeling op haar eigen manier had opgezet, voldoende afwijkend van de Intel 8088. De rechter oordeelde verder dat het kopiëren van de precieze verwerking van de signalen, de mnemonics en de instructieset, wel inbreuk had kunnen zijn op de intellectueel eigendom van Intel, ware het niet dat Intel was vergeten hierop in voldoende mate ‘Copyright Intel’ te vermelden. Had Intel op deugdelijke wijze ‘Copyright Intel’ bij de instructieset opgenomen dan had de rechter bepaald dat NEC geen gebruik mocht maken van de instructieset. En met deze uitspraak werd het voor NEC mogelijk de V20 zonder verdere licentieovereenkomsten met Intel op de markt te brengen. Een dure vergissing van Intel, een fout die chipbouwers niet weer zouden maken.

De volledige instructieset van de Intel 8088 kwam met deze uitspraak in het publiek domein te liggen. Ook werd er een nieuw woord aan het ‘handboek van de cloner’ toegevoegd, namelijk ‘reverse engineering’: de manier om van een schakeling de werking af te leiden en een eigen implementatie ervan te maken.

De uitspraak van de rechter heeft ervoor gezorgd dat ieder bedrijf dat een microprocessor met een eigen instructieset ontwikkelt deze aan alle kanten patenteert en auteursrechtelijk beschermt. En zo komen we op de ARM processoren van het van oorsprong Engelse bedrijf ARM Holdings Ltd. ARM levert zowel licenties voor gebruik van de instructieset, als voor gebruik van het ontwerp van de processoren.

Apple heeft in de jaren ’90 een licentie genomen op de instructieset en een bepaalde periode gebruik gemaakt van de ARM processorontwerp. Apple maakt nog steeds gebruik van de instructieset, en heeft hiervoor naar verluid een eeuwigdurende licentie, maar heeft ondertussen een eigen onderwerp voor de processoren die buiten de licenties van ARM ligt. Apple heeft daarom de vrijheid om processoren, die Apple de A-reeks noemt, naar hun eigen inzicht te ontwerpen en te gebruiken. Mogelijk heeft Apple ook het recht om de instructieset naar eigen wens aan te passen en uit te breiden. Dat laatste zou betekenen dat de compatibiliteit met de ARM processoren van ARM Holding niet langer is gegarandeerd, maar dat zal Apple niet veel kunnen schelen.

Zelf een IoT toepassing makenKoop nu mijn boek!

Ik heb een heel toegankelijk boek geschreven over het zelf ontwikkelen van internet of things toepassingen. Je kunt dit boek kopen bij Bol.com en bij elektronicawinkel Okaphone. Het boek is voorzien van een website waarop uitbreidingen, wijzigingen en aanpassingen worden gepubliceerd. Ook codevoorbeelden en extra projecten zijn hier beschikbaar.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *