breviar istoric arm

duminică, 8 iul. 2012, 16:26

În cadrul unui articol trecut spre sfârșit povesteam despre cum ARM pot fi deja considerați un adversar serios al Intel și un candidat pe piața calculatoarelor de performanță medie [i]. Din acest motiv și în virtutea faptului că tot m-am apucat să întorc pe toate părțile diverse microarhitecturi, n-ar fi o idee rea să pun pe foaie un scurt istoric ARM. Problema stă în faptul că nu sunt foarte familiar cu istoria companiei – deși de vreo douăsprezece luni încoace programez mai des pe ARM decât pe x86 -, motiv pentru care vă invit să ne documentăm împreună.

În primul rând trebuie menționat că ARM și Intel vând două lucruri fundamental diferite. În timp ce Intel este o companie producătoare de hardware, la fel ca IBM, AMD, Texas Instruments sau Samsung Semiconductor, ARM produc doar proprietate intelectuală, cu toate implicațiile acestui fapt. Asta înseamnă de exemplu că în timp ce Intel fac și cercetări legate de micșorarea tranzistoarelor (încă de la începuturi), ARM se axează pe eficiența design-ului, lăsând aspectele pur tehnologice la latitudinea producătorilor.

Istoria ARM își are rădăcinile în cadrul unei companii pe nume Acorn Computers, al cărei procesor Acorn RISC Machine (ARM1) a fost lansat cândva în prima jumătate a anilor 1980. Procesoarele ARM au fost gândite astfel încât să aibă un design „hardwired”, adică fără microinstrucțiuni, și în plus cei care au conceput arhitectura au mers din start pe ideea că o să aibă lungimea cuvântului de 32 de biți. Cu toate astea primul procesor care a ieșit efectiv pe piață a fost ARM2, care era format din doar în jur de treizeci de mii de tranzistoare. Și se pare că zisul procesor avea performanțe comparabile cu ale unui 80286 la un consum mai mic de putere.

Făcând un fast-forward la ARM6, numărul de tranzistoare crește de la 30,000 la 35,000, iar echipa de design hardware din Acorn RISC Machines devine Advanced RISC Machines (și mai târziu ARM Holdings). Cel mai important produs bazat pe ARM6 a fost Apple Newton, a cărui producție a început devreme și s-a terminat târziu, având în vedere că a picat fix în perioada când Apple o duceau prost. La fel ca ARM1 până la 3, ARM6 are un spațiu de adresare pe 26 de biți.

Făcând încă un fast-forward la ARM9, deja s-a trecut de la o arhitectură Von Neumann la una Harvard, iar design-ul a fost mult îmbunătățit pentru a scădea disiparea de căldură. Deja ARM9 a ajuns să fie adoptat pe o gamă largă de dispozitive digitale, de la camere foto la PDA-uri la console – sunt mult prea multe pentru a le enumera aici -, și mai important a marcat trecerea la setul de instrucțiuni ARMv5 [ii]. În plus procesoarele purtând codul „TDMI” (începând cu ARM7) includ un set de instrucțiuni separat pe 16 biți, Thumb, care folosește mult mai puțin hardware și implicit consumă putere mai puțină.

De remarcat este faptul că diferențele între ARMv4 și ARMv5 sunt minore, iar ARMv6 a fost lansat pentru a introduce suport pentru instrucțiuni atomice, utile la implementarea sistemelor cu mai multe core-uri. ARM11 implementează astfel ARMv6, folosit (încă) cel mai probabil de majoritatea smartphone-urilor care există pe piață, inclusiv unele iPhone-uri și alte dispozitive precum unele versiuni de Kindle. De altfel diferențele între seturile de instrucțiuni nu-s așa de mari, o mare parte din funcționalitate fiind mutată în instrucțiuni așa-zise „de tip coprocesor”, care sunt folosite pentru controlul unităților din jurul procesorului unitatea în virgulă mobilă, cache-ul și așa mai departe -, care diferă în funcție de seria de procesoare.

Mai departe ARMv7 este implementat de seria Cortex Ax (unde x e un număr), Cortex A9 fiind cel mai nou membru al familiei și prezent pe device-urile de ultimă generație [iii]. Deja aici contribuția ARM trece în plan secundar, în prim plan venind producția de System-On-a-Chip. Un SoC e practic un ansamblu de unități logice sau dispozitive – procesor, cache-uri, memorie, unele controllere – integrate pe o singură pastilă de siliciu, care alcătuiesc o așa-zisă „platformă”, analog cu IBM PC.

Diferența între PC și platformele bazate pe ARM e aceea că nu există – și mă îndoiesc că va exista prea curând – un standard în privința „așezării” dispozitivelor I/O, existența lor, maparea accesului la memorie și așa mai departe. Fiecare producător a pus pe placă ce a considerat de cuviință – unele sunt axate pe procesare de semnal, altele sunt foarte configurabile deci au FPGA-uri etc. – și a scos un SoC pentru aplicații de rețelistică, telefonie mobilă sau mai știu eu ce. Dezavantajul acestei abordări este evident munca în plus depusă de programatorii de drivere, care trebuie să adauge suport pentru fiecare SoC în parte. Aspectul ăsta bineînțeles că nu e o problemă foarte mare pentru modelele scalabile de inginerie software, așa cum este nucleul Linux.

Prezentarea SoC-urilor existente ar presupune reluarea istoriei luând în calcul și fiecare companie care a produs așa ceva, motiv pentru care voi enumera doar cele mai importante platforme. Acestea sunt seria Apple Ax – unde x e un număr momentan limitat superior de 5 -, seria Snapdragon de la Qualcomm – folosită de producători ca HTC -, seria OMAP de la Texas Instruments – din care OMAP4 e implementat de exemplu pe Galaxy Nexus și pe Pandaboard-urile de la aceiași TI – și în fine nVidia Tegra. Toate acestea au prins avânt pe piața hardware și fiecare stă în spatele unuia sau al mai multor producători hardware.

Închei articolul spunând că breviarul ăsta e abia la început, însă eu unul îi voi pune capăt aici. Am omis foarte multe detalii pentru că nu am loc să tratez toate aspectele într-un articol citibil de către persoana medie, cu toate că sper că introducerea asta poate servi drept motivație pentru continuarea documentării. Multe detalii sunt probabil neclare – de exemplu eu n-aș înțelege de ce procesoarele ARM sunt din anumite puncte de vedere mai eficiente decât un procesor Intel doar din ce scrie aici -, caz în care vă invit să dezbatem problema împreună.

  1. Apple au anunțat deja că vor vinde Macbook-uri bazate pe ARM. []
  2. A se remarca distincția între seturile de instrucțiuni, ARMv1, ARMv2 etc. și versiunile arhitecturilor propriu-zise, ARM1, ARM2 etc. []
  3. De fapt cel mai nou membru al familiei e Cortex A15, acesta aflându-se însă încă în producție la data scrierii articolului. []

Comments

  • spyked bricks in the wall — breviar istoric arm…

    In care cetateanul explica….

  • […] articol poate fi considerat o prelungire a breviarului istoric ARM, în mare pentru că ilustrează cu mai multe amănunte implicațiile pe care le aduce varietatea […]

  • Comentariile sunt dezactivate.