In 2000 werden er 400 miljoen van geproduceerd en in 2001 kwam het wereldwijde marktaandeel boven de 75 procent. Toch heeft ARM geen enkele van zijn ingebedde 32-bit risc-processoren zelf geleverd. Advanced Risc Machines verkoopt slechts het intellectuele eigendom van en software-ondersteuning voor zijn kernontwerpen. De chips zelf worden gemaakt door bedrijven als Intel, Philips en HP. Als meer dan vijftig halfgeleiderfabrikanten een ARM-licentie bezitten en er elke seconde tien ARM-chips verkocht worden, dan kan men wel spreken van een succes voor het in 1990 opgerichte bedrijf. En het gebeurde allemaal nu eens niet in Silicon Valley, maar in Cambridge (GB). Hans van Thiel over de kracht van een processorontwerp.
Er is wel een logo ‘ARM powered’, maar op mobiele telefoons, digitale camera’s en modems zitten meestal geen stickers met de naam van de ingebouwde processor erop. ARM (Advanced RISC Machines) is in elk geval minder bekend dan de meeste van zijn klanten.
Toch zijn er meer dan een miljard risc-processoren (‘reduced instruction set computers’) van ARM in omloop en alleen al in 2000 zijn er 400 miljoen van verkocht. Dat betekent dat er dat jaar elke seconde tien van geleverd zijn, en het zijn er sindsdien niet minder geworden.
ARM is een van de weinige bedrijven in de ic-industrie die 2001 ‘een buitengewoon positief jaar’ noemen. Ter vergelijking: Intel-ceo Craig Barrett sprak in februari 2002 onomwonden van ‘de ergste recessie die de sector ooit heeft meegemaakt’. Maar ARM is in veel opzichten een bijzonder bedrijf.
Het maakt zelf geen chips, maar levert alleen het intellectueel eigendom (ip, intellectual property) voor microprocessorkernen, cache en soc-ontwerpen (system on chip), applicatiesoftware en ontwikkel-tools. De markt hiervoor ligt bij de ontwikkelaars van ingebedde elektronica en de toepassingen van ARM zijn dus min of meer onzichtbaar voor de eindgebruiker.
ARM is ook geen groot bedrijf . Bij Intel telt een ontwerpteam voor een nieuwe chip ongeveer 750 mensen en dat is meer dan alle 650 werknemers van ARM bij elkaar. Toen de onderneming in 1990 werd opgericht, als een spin-off van Acorn Computers en Apple, waren dat er 12.
Acorn, de Engelse fabriek van microcomputers die in 1985 met de eerste commerciële risc-processor kwam, is al lang verdwenen. De IBM-pc en vooral de klonen daarvan spoelden alle concurrentie weg en in bureaucomputers en hun mobiele afgeleiden domineren Intel en Microsoft.
Voor microprocessoren die in auto’s worden toegepast, consumentenelektronica, beeldbewerking, industriële toepassingen, communicatienetwerken, veiligheid, opslag en draadloze apparatuur ligt dat anders. Dat zijn de sectoren waar ARM zich met zijn intellectuele eigendom van hardware en zijn ondersteunende software vooral op richt. De kracht ligt daarbij in de diversiteit en de mogelijkheid tot integratie van zijn ontwerpen met de technologie van zijn klanten. Het ARM-aandeel in de markt voor 32-bit ingebedde risc-processoren is in 2001 zelfs boven de 75 procent uitgekomen.
Inmiddels heeft het bedrijf vestigingen over de hele wereld, natuurlijk ook in Silicon Valley, maar het hoofdkantoor staat nog steeds in het Engelse Cambridge waar het, bij Acorn Computers, allemaal begon.
Bedrijfsmodel
Ook Intel is een van de ic-ontwikkelaars die ontwerpen van Advanced RISC Machines gebruikt, en zoals de meeste grotere afnemers doet Intel dat in combinatie met eigen technologie. De Strong ARM-processor is een voorbeeld, de recente XScale architectuur is er nog een.
Philips Semiconductors is ook al jarenlang afnemer van ARM-architecturen, bijvoorbeeld in zijn Bluetooth baseband controllers maar ook in extensies op het Nexperia Platform.
Het zou saai worden de lijst van ARM-licentienemers allemaal op te noemen – het leest als een ‘who’s who’ in semiconductors. Motorola, HP, Lucent, Mitsubishi, IBM, de al genoemden Intel en Philips, Alcatel, Agilent, Samsung, Texas Instruments, Fujitsu …
De basis van het ARM-ip bestaat uit een aantal families van 32-bit microprocessoren die eenvoudigweg heel goed ontworpen zijn. Zij presteren meer op een kleiner oppervlak en met minder stroomverbruik en/of geheugengebruik dan vergelijkbare processoren. ARM streeft altijd naar een zo laag mogelijk aantal milliwatts per miljoen instructies per seconde (mW/mips ).
Volgens de overlevering was de eerste ARM2 overigens haast bij toeval een ‘laag stroomverbruik’ processor. Hij bestond gewoon uit weinig transistoren en had een heel eenvoudige interne logica. Die ontwerpfilosofie is ook in de huidige 7-, 9- en 10-families terug te vinden.
Nog belangrijker is misschien dat de ARM-kernarchitecturen aangepast en uitgebreid kunnen worden naar behoefte van de afnemer. Het bedrijf levert immers geen processoren maar processorontwerpen en ondersteunt ook de koppeling daarvan met andere deelsystemen door de open amba-standaard (advanced micro-controller bus architecture). Die is door ARM ontworpen en wordt door het bedrijf onderhouden, maar de onderneming is zo verstandig geweest om die ‘elektronische lijm’ openbaar te maken en vrij te geven. Klanten kunnen dus hun eigen ‘system-on-chips’ opbouwen met bedrijfseigen en ARM-componenten en die systemen vervolgens in silicium implementeren of zelf weer door derden laten maken.
Het bedrijfsmodel van ARM is er helemaal op gericht om het ontwikkelen op basis van zijn IP te ondersteunen. Allereerst zijn alle processorfamilies verenigbaar (compatible) in hun instructiesets. Ontwikkelen van software op een ARM-ontwerp kan dus dikwijls met beschikbare tools die alleen voor specifieke uitbreidingen hoeven te worden aangepast. Zo zijn bijvoorbeeld als besturingssysteem voor ARM-processoren zowel Windows CE, Palm OS, Symbian OS als Linux beschikbaar.
ARM levert ook zelf een algemene ontwikkel-suite met onder meer een C- en ingebedde C++-compiler.
Voor ondersteuning van hardware-ontwerpers zijn talloze tools beschikbaar. De ARM Developer Kit for Intel XScale platforms, bijvoorbeeld, ondersteunt de ontwikkelaar van asic (application specific integrated circuit) ontwerp tot het schrijven van software.
Samenwerking heeft ook een institutionele basis in het ARM Technology Access Program (atap). Om hieraan mee te mogen doen moet een bedrijf eerst een ARM-kwalificatie proces met goed gevolg hebben doorlopen. Atap bereikt inmiddels meer dan 2400 engineers in 25 bedrijven in 15 landen.
Processoren
Op dit moment zijn er drie hoofdfamilies van ARM-processoren in gebruik, de 7, de 9 en de 10 series.
De ARM7-processoren hebben slechts 70 K-transistoren; dit zijn de werkpaarden die momenteel het meest worden ingezet. Zij hebben een drie-fasen-pijplijn.
ARM Securcore bouwt hierop voort met een ‘memory protection unit’ (mpu) en de ‘montgomery multiplier engine’ als cryptographische versneller van RSA-algoritmen. Securcore is bedoeld voor smart cards en heeft onder meer ook voorzieningen tegen fraude.
De ARM9 bestaat uit 120 K-transistoren en verdubbelt hiermee, volgens het bedrijf, de prestaties van de ARM7. De ARM9 heeft een aparte instructie- en databus (Harvard architectuur) en gebruikt een pijplijn met twee extra fasen voor geheugentoegang. Er zijn hardware-faciliteiten beschikbaar, zoals een mmu (memory management unit) voor het draaien van meerdere processen tegelijkertijd (multi-tasking).
De ARM10 tenslotte is het nieuwste van het nieuwste met een zes-fasen-Harvard pijplijn, voorspelling van programmavertakkingen, een 64 -bit databus en allerlei extra’s zoals aparte ondersteuning van drijvende komma (floating point) berekeningen.
Behalve door cijfers worden ARM-processoren getypeerd door enkele speciale letters.
‘M’ staat voor ondersteuning van 64 bit-vermenigvuldiging en ‘D’ en ‘I’ voor ‘debug’ en ‘ice’ (in circuit emulation) faciliteiten. Test- en debug-logica is dikwijls geïntegreerd in de chip en werkt dan conform de IEEE 1149.1 ‘boundary-scan’-standaard met toegevoegde functionaliteit.
‘S’ staat voor ‘synthesizable’, wat wil zeggen dat de uiteindelijke fabricage op flexibele wijze is te implementeren. De letter ‘E’ betekent dat de architectuur met dsp-functionaliteit (digital signal processor) is uitgebreid. Dit is onder meerdere van belang voor codecs (codering en decodering) zoals bijvoorbeeld in een jpeg-digitale camera. Alle ARM10-processoren hebben een ‘E’-aanduiding.
Thumb en Jazelle
‘T’ staat voor de typische ‘Thumb’ extensie van ARM, een vereenvoudigde 16-bit compressie van de normale 32-bit instructies. De achtergrond hiervan is dat 32-bit instructies te veel plaats kunnen nemen in het geheugen, of dat de processor alleen kan communiceren door een 16-bit datapad.
Daarom hebben Thumb-‘enabled’ processoren een alternatieve, beperkte set gecomprimeerde 16-bit instructies die intern door de processor worden gedecomprimeerd.
Deze instructies worden ook geïmplementeerd door een alternatief gebruik van de registers, die voor Thumb effectief verdeeld worden in een hoge en een lage helft.
Codedichtheid is belangrijk voor veel ingebedde toepassingen en die is voor de 16-bit instructies bijna de helft van die voor 32-bit instructies. Bijna, want ze zijn minder effectief. Zo zijn Thumb-instructies, op één na, niet voorwaardelijk.
Het bijzondere is nu dat de processor kan overschakelen van 16-bit Thumb naar normale 32- bit toestand met een enkele Branch and Exchange (BX) instructie. Beide soorten code kunnen dus heel goed samen worden gebruikt.
‘J’ processoren hebben ook een eigen toestand. ‘J’ staat voor Jazelle, wat weer staat voor Java ondersteuning. Op dit moment zijn er maar twee Jazelle-‘enabled’ kernen, de ARM7 EJ-S en de ARM926EJ-S, maar het is de bedoeling dat alle ARM-families ermee worden uitgerust.
.Java is inmiddels doorgedrongen tot vrijwel elk gebied van de it, maar het is ooit opgezet voor het dunne-client-model. De code wordt niet zoals bij bijvoorbeeld C/C++ direct gecompileerd naar machinecode maar in plaats daarvan naar bytecode voor een jvm (java virtual machine). Daarom is de taal ook platformonafhankelijk – elk platform heeft zijn eigen jvm die de bytecode omzet naar machinecode.
Het ligt dan voor de hand om die tussenlaag eruit te halen en de jvm te compileren. Men zou zelfs een processor kunnen ontwerpen die rechtstreeks op Java-bytecode kan draaien. Beide oplossingen bestaan ook, maar bij compilatie is het optimaliseren van code toch moeilijk en een toegewijde Java-processor kan geen andere toepassingen aan.
ARM heeft nu met Jazelle hetzelfde principe gevolgd als bij Thumb, een extra processortoestand om Java bytecode te verwerken naast de normale toestand. Omdat het overschakelen tussen de toestanden met slechts één of een paar machine-instructies kan plaatsvinden, kunnen ook andere dan Java-processen, zoals van een besturingssysteem, op de processor blijven draaien.
Onlangs heeft Sun in samenwerking met ARM (en ook Symbian) twee nieuwe jvm’s uitgebracht die een factor tien sneller zouden zijn dan eerdere virtuele machines.
ARM werkt al enige jaren samen met Sun aan de integratie van Java en het gebruik van die taal zal ongetwijfeld een stimulans krijgen, als Jazelle eenmaal in honderden miljoenen processoren is geïmplementeerd. Zo kan de onzichtbare hand van ARM zelfs reiken tot een hogere, objectgeoriënteerde programmeertaal.
Hans Van Thiel Freelance Medewerker
Waar zijn zij?
Bij meer dan een miljard ARM-microprocessoren kun je wel spreken van alomtegenwoordigheid ofwel ‘ubiquitous computing’. De vraag rijst waar al die processoren dan wel niet te vinden zijn.
In auto’s, bijvoorbeeld. Bosch ontwerpt elektronische systemen voor brandstofinjectie, motorafregeling en abs, en gebruikt daarvoor een processor met een ARM7-kern. De eindleverancier is Texas Instruments.
Digitale tv’s, set-top boxes, dvd-spelers, mp3-spelers, apparatuur voor spelletjes en (mobiele) audio-apparatuur bevatten microprocessoren. ARM werkt op dit gebied samen met Panasonic, Sharp, Sony, Yamaha, Philips en Samsung. De markt is enorm, ook voor relatief nieuwe toepassingen zoals spelcomputers – van de originele Nintendo Game Boy uit 1989 zijn er 100 miljoen verkocht.
In de nieuwe 32-bit Nintendo Game Boy Advance wordt een ARM-kern gebruikt. Sharp levert uiteindelijk de chips voor Nintendo, maar ook spelletjesontwikkelaar Rare is erbij betrokken.
Beeldbewerking en printertechnologie sluiten naadloos op het vorige aan. In de Polaroid Photomax MP3 zijn digitale muziek en foto’s geïntegreerd met internettoegang. Sound Vision maakt daarvoor een asic (application specific integrated circuit) op basis van een ARM-kern.
De processoren zijn te vinden in industriële toepassingen. In deze sector speelt Intel een bijzondere rol met de Strong ARM-familie. Die is oorspronkelijk door ARM en Digital Semiconductor samen ontworpen en, met de overname van dat laatste bedrijf in 1995, mede in handen gekomen van Intel. Het Canadese EXFO maakt testapparatuur voor optische glasvezels, met een Strong ARM-processor en Windows CE als besturingssysteem.
Het Franse Alcatel is ook een ARM-gebruiker. De Speed Touch usb-adsl-modem van dat bedrijf is zeer populair voor adsl-toepassingen, en – het wordt eentonig – Alcatel heeft de chips weliswaar zelf ontwikkeld, maar op basis van een ARM-ontwerp.
Opslag van gegevens is weer zo’n onzichtbaar gebied waar microprocessoren en dus ARM een rol in spelen. Harde schijven, cd-rom- en dvd-drives maar ook Compact Flash-kaarten voor digitale camera’s moeten allemaal aangestuurd worden.
De Fujitsu MPF-3102 AT harddisk-drive is bedoeld voor 10 tot 50 gigabytes opslag.
De kleine afmetingen en het lage stroomgebruik van ARM7 en ARM9, de beschikbaarheid van ontwikkel- en ‘debug’-tools en de mogelijkheid meerdere chipleveranciers te gebruiken gaven voor Fujitsu de doorslag.
Mobiele telefoons hebben ook zuinige processoren nodig, en ook hier is ARM in miljoenen aanwezig. De Ericsson R380 die mobiele telefonie combineert met pda heeft een ARM-kern en Symbian als besturingssysteem.
Smartcards worden thans op grote schaal gebruikt in sim (subscriber identification modules) voor gsm-telefoons, maar naar verwachting zal die markt sterk uitgroeien naar andere sectoren. ARM heeft hiervoor een aparte lijn opgezet, de Securcore-familie.
In deze acht deelmarkten zit het merendeel van die miljard ARM 16/32-bit microprocessoren.
Ook de markt voor applicatiesoftware is bij dergelijke aantallen natuurlijk buitengewoon groot. ARM is dan ook niet vergeten ontwikkel-tools te produceren…
Risc-filosofie
‘Complex instruction set computers’-processoren (cisc) bevatten zoveel mogelijk instructies om allerlei programmatuur optimaal te kunnen afhandelen. Statistisch onderzoek van computerprogramma’s wijst echter uit dat gegevensverplaatsingen en programmastroombeheersing (vertakkingen en subroutines) samen bijna 75 procent van alle processorgebruik voor hun rekening nemen. Is het dan niet beter dat gebruik te optimaliseren dan zich te richten op de overige 25 procent?
Zo ontstond de risc-ontwerpfilosofie (reduced instruction set computers).
Alle bewerkingen van een ARM-processor gebruiken 32-bit registers en het geheugen is alleen aanspreekbaar met lees- en schrijfoperaties. Er zijn 37 van die registers maar slechts 17 ervan zijn zichtbaar in de normale gebruikersmodus. Nummers 0 tot 15 zijn algemeen beschikbaar, met de programmateller in r15.
Alle andere registers worden gebruikt voor speciale processormodi die gereserveerd zijn voor onder andere ‘interrupts’ en het draaien van een besturingssysteem.
ARM-instructies zijn allemaal 32-bit lang en bestaan uit een opcode en drie operanden.
Een optelling x = y + z; (in de programmeertaal C) met x in r1, y in r2 en z in r3, kan dus worden uitgevoerd met slechts één assembler-instructie: ADD r1, r2, r3.
Het bijzondere van de 32-bit ARM-operaties is dat ze allemaal voorwaardelijk zijn, wat programmavertakkingen heel efficiënt maakt.
Zo kost de C -statement if x == y then p = q + r; (met de variabelen in r0 tot r4) slechts twee machine instructies: CMP r0 , r1 en ADDEQ r2, r3, r4.
Als de registers r0 en r1 gelijk zijn, wordt de optelling uitgevoerd, anders niet (ADDNE had op ongelijkheid getest).
Het onderscheid tussen risc en cisc is in de loop der tijd wel vervaagd. Zo is een risc-concept als de pijplijn (pipeline) tegenwoordig in alle moderne processoren te vinden. In pijplijnen gebeuren fasen parallel, zoals ophalen uit het geheugen, decoderen en uitvoeren van instructies.
Tijdens de klokcyclus waarop instructie n wordt gedecodeerd, wordt instructie n + 1 al opgehaald.
Uiteraard geeft dit problemen in het geval van programmavertakkingen en indien nummer n + 1 een resultaat nodig heeft van een instructie die nog in de pijplijn zit. Maar hiervoor zijn optimaliserende oplossingen bedacht.