11.07.2015 Aufrufe

c't magazin für computer technik 24/2013 - since

c't magazin für computer technik 24/2013 - since

c't magazin für computer technik 24/2013 - since

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • Keine Tags gefunden...

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Know-how I ARMv8ELOEL 1EL2I__ _Guest Operati ng System1 IVirtual Machine Monitor (VMM) orHypervisorGuest Operating SystemIIure World OSAArch64:separate privilege IeveisAArch32:same privilege Ievei• • • •• • • •• •• • •• • • •• • • • • • • • • •• • • •• • • • •• • • • • • • • • • • • • • • •• •• • • • • • • • • -. • • • • • • •• • • ea • • • •• ••• •• • •• • • • • • • • • •EL3 I (Trustzone) MonitorARMv8 führt ein Exception-Modell mit vier Privileg-Stufen ein.minent auf ihren Roadmapshaben? Dazu kann man sich maldie ARM-Architektur im Allgemeinenund die 64-bittige imBesonderen anschauen, und hierund da Vergleiche zu x86/AMD64 ziehen.Vier wesentliche Dinge sindes, die die damalige Acorn-EntwicklerinSophie Wilson demARM-Befehlssatz mit auf denWeg gegeben hat, seit dieser1986 mit ARMv2 für 32-Bit(AArch32) spezifiziert wurde:Zunächst das wohl wichtigsteRISC-Grundprinzip, wonach jedesBefehlswort eine feste Länge(hier 32 Bit) und jedes Bit einefestgelegte Bedeutung hat. Dasvereinfacht die Dekodierungganz erheblich und spart somitEnergie, hat aber den Nachteil,dass anders als bei x86 die häufigbenötigten Befehle genauso vielPlatz benötigen wie seltene. Dasbläht den Code unnötig auf undbeansprucht mehr Platz in denInstruktions-Caches, ROMs undFlashes. Daher erfand ARMspäter mit Thumb (T32) eine Artvorgeschaltete Code-Komprimierung.Dem Grundprinzip ist auchARMv8 im 64-Bit-Modus (AArch-64) treu geblieben. Weiterhin istein Befehl immer 32 Bit lang;Thumb für 64 Bit ist noch nichtspezifiziert.Das "Reduced" in RISC weistweiterhin darauf hin, dass die Befehleeinfach strukturiert sind. Sohat der ARM-Befehlssatz andersals x86 die Load/Store-Befehlestrikt von den Rechenbefehlengetrennt, letztere arbeiten alsoausschließlich mit Registern oderexpliziten Werten (Immediates).Für solche Immediates hat man inden Load/Store-Befehlen nur einbisschen Platz von bis zu 12 Bit.Größere muss man häppchenweisezu 16 Bit mit Move (wideimmediate) laden. Das erscheintim Vergleich zu x86, wo manauch 64-bittige Immediateskennt, ein bisschen mühselig,aber mit so großen Werten hatman eher selten zu tun, üblicherweiseholt man sich die Daten ausdem Speicher. Hierfür bietet ARMeine sehr leistungsfähige indirekteAdressierungsmöglichkeit mitPre- und Postinkrementierungsowie mit Adressierung relativzum Program Counter (PC).Es gibt in AArch32 auchdurchaus mächtigere Befehlewie Load/Store Multiple-Structure,mit denen man in einemRutsch mehrere aufeinanderfolgendeRegister für Integer, FPUoder SIMD-Einheit laden kann -bei x86 findet man solchezweckmäßigen Befehle nicht,weder bei MMX, SSE oder AVX.AArch64 bleibt in dieserBeziehung strenger beim RISC­Prinzip, hat aber Load/Store-Mul-I...n':1'..".,v...n':1'a>..,.::Ill>l>...n':1'a>..,.3: v0 ::Il>10':1'..".,......QJ::Iö'...tiple-Befehle noch für bis zu vieraufeinanderfolgende Register fürdie SIMD-Einheit Neon im Programm.Diese Einheit wurdezudem auf 32 nunmehr 128-bittigeRegister aufgebohrt und kannzwei Berechnungen in doppelterGenauigkeit parallel ausführen.Damit verfügt AArch64 für SIMDüber doppelt so viele Register wieAVX, die aber nur halb so breitwie jene sind. Da dürfte mal daseine, mal das andere von Vorteilsein. Weiterhin gibt es in ARMv8als Erbstück die normale GleitkommarecheneinheitVFPv4, wiesie bereits in ARMv7 beschriebenund im Cortex A 15-Design eingesetztist.Neue KonditionenDie nächste Besonderheit ist dieKonditionierung. Nahezu jederBefehl kann in AArch32 mit einerRegister State relationships below EL3User32 Supervis32 Abort32 Undef32 lrq32 FIQ32 HyperVis32so I C:äc:::J [:BQ':::::J[ac ::J[a[::::::cac :::Kac::Js 1 ICXr:::::J r:&r::::Jcär::::::cär :::::Jc&c:::JC:si::::::s2 ICßi:::::J Cßi::::J [Ri::::JCiü::::::iC:BZ:::::iCRi::::JB3 IC:::::.i [:B:::::.im:::::Ka:::::iCB::::::iCa::::JB4 I C4::::J [:4::::JCI{C :::J[B:4 ::=Ka4:::::KaC::Jss IC&s::::J ms:::::mr::::J[&:::::ic&:::::Jc:s:::::Js6 I CXC:::.i r:iiC::JC&C :::K&C:::iC&::::K&C::Js1 IC:BC:::J [:BC::J[RC::J[Rf:::::Kaf:::::Kaf::::JRB t:Bc:::.i [:BC:::Kac:::Kac::::l RB fi a ICa!l::::::B9 1 Cß2:::::J m2:::::K&C :::K&:::::il B9 tia IC&C::Js1o !Ciiiii::::mm:::J C&Id::::K&IC:: JI s1o tia IC:B:iii::::JB11 l (ifii::::.i [iiii:::J[RU::::K&Ii ::::i l B11 ng I[:B:Ii::::Js1 2 I CB:1E:::.i [:ßii:::::i Cäi.i ::::J[B:ii::::il s 12 ti a IC:Rii::::J813 ISPjl SP svc II SP abt II SP und II SP irq II SP fiq II SP hyp I814 ILBUI LB syc II LR abt II LB und II LB jra II LR fjg II eLR hypl AArch321I SPSR svl! SPSR ablt SPSR uiil SPSR ir41 SPSR ti4 I SPSR hyP · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - · - ·'Bedingung (zusammengesetztaus Zero, Carry, Sign, Overflow)versehen werden. Das vermeidetviele bedingte Sprünge undsomit je nach Qualität derSprungvorhersage lange Wartezeiten.Insbesondere bei den langenPipelines moderner Prozessorenkönnen solche Sprüngesehr negativ zu Buche schlagen.Sehr nützlich ist hierbei auch,dass man wählen kann, ob einRechenbefehl überhaupt dieFlags setzen soll. Das ermöglichtzum einen längere konditioniertePassagen und spart zum anderenauch Strom, denn das häufig garnicht benötigte Setzen von Flagskostet durchaus Energie.lntels x86 hat die Idee der konditioniertenBefehle mit demPentium Pro zumindest ein Stückweit aufgegriffen und konditionierteLadeoperationen (cmovcc)eingeführt. AArch64 musste allerdingsaus Bitknappheit dasalte Konditionierungskonzeptopfern, schließlich wollte ARM jaunbedingt bei 32 Bit Befehlslängebleiben und das Konditionsfeldverschlingt vier wertvolleBits, die man zur Adressierungder größeren Registerzahl dringendbenötigt. Außerdem erschwerenkonditionierte Befehleden Out-Of-Order-Betrieb modernerArchitekturen deutlich.So ersonn ARM für 64 Bitetwas anderes, nämlich nebenden nötigen bedingten Sprüngeneinen kleinen Satz konditionierterSelect- und Compare­Befehle. Die sind immer nochXO * ROX1 R1X2 R2X3 R3X4 R4xs R5X6 RSX7 R7X8

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!