55
Design af et ISA Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Design af et ISANiels Olof Bouvin

Institut for Datalogi Aarhus Universitet

Page 2: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Level 2: Maskinniveau (ISA)Problem-oriented language levelLevel 5

Assembly language levelLevel 4

Level 3 Operating system machine level

Level 2 Instruction set architecture level

Level 1 Micro-architecture level

Level 0 Digital logic level

Translation (compiler)

Translation (assembler)

Partial interpretation (operating system)

Interpretation (microprogram) or direct execution

Hardware

Page 3: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Hvad karakteriserer en processor?

ISA niveauet og von Neumann-maskiner maskininstruktioner og instruktionsformater symbolsk og absolut maskinkode registre og hukommelse

IJVM PC, SP, LV, CPP method area, constant pool, stakken metodekald, stakafsnit, parametre og lokale variabler

Central Processing Unit (CPU)

Control Unit

Arithmetic Logic Unit (ALU)

Registers

MainMemory Disk Printer

Bus

Input/Output devices

Method Area

8 bit

Local Variable Frame 1

32 bit

Local Variable Frame 2

Local Variable Frame 3

Current Operand Stack 3

ConstantPool

32 bit

CPP

LV

SP

PC

Page 4: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Design af et ISA

Generelle overvejelser Introduktion til Intel Core i7, OMAP4430 og AVR ATMega Datatyper ISA design og eksempler Adressering

Page 5: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Kunsten at designe et instruktionssæt

Hvad er formålet med maskinen?

Hvilke operationer og hvilken slags data skal understøttes?

Hvordan skal hukommelsen adresseres?

Effektivitet! tid plads

pris

Bagudkompabilitet

Page 6: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

CISC vs. RISCFør blev CPUer programmeret meget mere i symbolske maskinsprog

der var naturligvis compilere, men den bedste kode blev skrevet i hånden

For at gøre programmørerne mere effektive, tilføjede man med tiden flere og flere kommandoer til instruktionssættene

disse kommandoer kunne typisk udføre flere handlinger i en omgang, f.eks. et procedurekald eller beregning med efterfølgende hukommelsesaccess dette betød, at man kún behøvede én instruktion for en række skridt fremfor adskillige instruktioner ⇒ bedre performance, da man slap for adskillige cykler af fetch-decode-execute men med tiden kom der mange komplekse instruktioner til og nogen af instruktionerne blev nødvendigvis lange i udførsel alt dette gjorde mikrokoden på CPUerne mere og mere kompleks

Disse CPUer blev under ét kaldt “Complex Instruction Set Computers” af folkene bag…

Page 7: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Reduced Instruction Set Computers

Filosofi: Fjern alt unødigt—der behøver kun være én måde at gøre tingene på Hellere tre simple instruktioner end én kompleks—skjul ikke kompleksitet på CPUen

Al hukommelsetilgang ordnes eksplicit via load og store—alle beregninger foregår i registre (som der til gengæld kan være masser af)

Simple, men besværlige at programmere typisk via compilere (der var blevet bedre i mellemtiden) snarere end i symbolsk maskinkode

Uniforme instruktioner (ofte af ens længde) simple nok til at kunne udføres af digitale kredsløb fremfor mikrokode ⇒ høj performance og klokhastighed

Vandt frem til (Unix) workstations og servere i senfirserne og halvfemserne

Page 8: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

CISC vs. RISC i dag

Mest af historisk interesse

Moderne ‘CISC’ CPUer (som Intels Core processorer) er internt højeffektive RISC processorer, gemt under det gamle IA-32 ISA lag, hvor de gamle CISC instruktioner bliver brudt om til korte RISC instruktioner og udført

Moderne ‘RISC’ CPUer (som ARM, SPARC eller POWER) har masser af instruktioner og har en sofistikeret intern arkitektur

Performancemæssigt ligger de nogenlunde på niveau—i dag er de vigtigste benchmarks snarere performance/watt

Page 9: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Registre og hukommelse

Moderne processorer er typisk mellem 8- og 64-bit

Dette har betydning for registre hukommelse

En given registerbredde er typisk begrænsende for, hvor meget hukommelse man kan adressere, og hvor store tal, man kan regne på af gangen

Page 10: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Adressering af hukommelse

Mængden af hukommelse, der kan adresseres, afhænger umiddelbart af registerbitbredden og ordlængden i hukommelsen

!

!

!

Hvis man vælger at adressere i større ord, kan man altså håndtere mere hukommelse

på bekostning af granularitet

Bitbredde 8-bit ord 16-bit ord 32-bit ord 64-bit ord8 256 bytes 512 bytes 1 KiB 2 KiB

16 64 KiB 128 KiB 256 KiB 512 KiB32 4 GiB 8 GiB 16 GiB 32 GiB64 17.179.869.184 GiB 34.359.738.368 GiB 68.719.476.736 GiB 137.438.953.472 GiB

Page 11: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Hukommelsesalignment

Skønt man (nutildags) tæller sin hukommelse i bytes, varierer det fra arkitektur til arkitektur, hvilke adresser der kan tilgås direkte

Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man kan tilgå adresse 0, 4, 16, 40 i en 4-byte aligned hukommelse eller adresse 0, 8, 16, 64, 512 i en 8-byte aligned hukommelse men ikke adresse 5, 13, 129, 222

Grundet bagudkompabilitet, er man som regel tvunget til at kunne tilgå i byteopløsning, men i virkeligheden hentes data ind efter alignment

Hvis man kún skal bruge én byte, virker det som spild at hente 8 bytes sådan som hukommelseadgang fungerer, er det faktisk ikke noget stort problem, men man skal naturligvis bruge cache på unødig data og tid på at fiske den relevante byte ud

Page 12: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Statusregister (Program Status Word)

Vi kender N og Z fra Mic-1

“Rigtige” CPUer har et større sortiment

Typisk i ét register PSW med bits efter behov

Der vil være ISA understøttelse for at checkke de enkelte bits

Der vil typisk også være bits, der relaterer sig til processorens tilstand

N Negativt resultat

Z Nul resultat

V oVerløb

C Mente på venstre bit

A Mente på bit 3

P Lige paritet

Page 13: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Design af et ISA

Generelle overvejelser Introduktion til Intel Core i7, OMAP4430 og AVR ATMega Datatyper ISA design og eksempler Adressering

Page 14: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Typer af CPUer

Mikrokontrollere billige, kontrol af ydre enheder

Mobile CPUer lavt strømforbrug

Desktop CPUer høj performance

Med forskellige brugsmønstre og markedsforhold kommer forskellige krav til CPUernes arkitekturer

Page 15: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Intel Core i7Har sin egen forelæsning, så her kigger vi kún på de overordnede aspekter

Intel (verdens største CPU-fabrikant) 8086 (1978), 8088 (1978) 80286 (1982) 80386 (1985), 80486 (1989) Pentium (1993), Pentium Pro (1995), Pentium II-III (1997), Pentium 4 (2000) Pentium M (2003) Core 2 (2006), Core i3/i5/i7 (2008), Atom (2008) Sandy Bridge/Ivy Bridge (2011) Haswell (2013)

Herudover diverse varianter rettet mod servere og bærbare, og mange ‘x86’ kompatible CPUer fra (især) AMD, samt Cyrix, VIA, Transmeta og NEC

Page 16: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

x86’s udvikling

8086 var til dels baseret på Intel 8080, der igen var baseret på 4004, den første CPU

8086 (8088) blev en massiv succes (IBM PC og MS-DOS), hvilket medførte, at bagudkompabilitet blev en afgørende parameter for alle fremtidige designvalg for Intel CPUer

firmaet har flere gange prøvet, uden held, at introducere nye designs, der brød med fortidens synder seneste forsøg er “Itanium” (omtalt i SCO 5.8), der er endt som en nicheprocessor med meget uvis fremtid (“Itanic”)

Apple er stort set det eneste eksempel på et firma, der TO gange har skiftet processorarkitektur med medfølgende tab af bagudkompabilitet

Motorola 68XXX → IBM PowerPC → Intel IA-32

Page 17: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Pentium 4

Egenskaber mål: højtydende processor til personlige computere dyb pipeline (>20 trin) og høj klokfrekvens (introduceret med 1.3 Ghz; sluttede ved 3.8 Ghz) højt strømforbrug—stort behov for køling relativ dyr

Pentium 4 var ved lanceringen langsommere end Pentium III—først da klokfrekvensen kom op i senere modeller, kunne ambitionerne opfyldes

Arkitekturen kunne i længden ikke opfylde forventningerne (herunder forventede max klokfrekvens på 10 Ghz), og blev erstattet af Pentium M (og senere Core)

Page 18: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Intel Core i7

Intel opdeler deres Core linje i i3, i5, i7 og Xeon

i7 er en processor rettet mod høj performance den i bogen omtalte processor er af “Sandy Bridge E” generationen

6 cores, 3,3 GHz, 15 MB cache, 64-bit

16 trins pipeline (tror man)

Max. 130 watt (men kan skrue ned)

2,3 milliarder transistorer

Extreme (angiveligt)

Page 19: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Dyb pipelining

Fordele ved dybe pipelines Jo dybere pipeline, des flere instruktioner kan være i pipelinen, des højere antallet af udførte instruktioner per tid Da en dyb pipeline består af små (hurtigt udførte) skridt, kan klokfrekvensen skrues op

Ulemper Ovenstående antager, at vi hele tiden kan holde pipelinen fyldt med instruktioner under udførsel Dette er langt fra tilfældet, f.eks. tager hukommelsesadgang kolossal lang tid i forhold til CPUen, og så løber pipelinen tør Hvis pipelinen ikke kan holdes fyldt, forsvinder hastighedsfordelene Klokfrekvensen skal typisk tilsvarende højere op for at matche andre CPUer med kortere pipelines i hastighed

Blandt p.gr.a. pipelining er det meningsløst at sammenligne klokfrekvens på tværs af CPU-arkitekturer, for udført arbejde per taktslag er helt forskelligt

Page 20: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Core registreSkønt Core tilsyneladende har en del registre, er det kun de fire øverste (E(A-D)X), der kan bruges generelt, og selv de har specielle egenskaber (herunder indeholdte 8- og 16-bit registre (A-D og (A-D)X)

ESI-ESP bruges til pointere

CS-GS er fortidslevn til segmenteret hukommelse

EIP er Program Counter (PC fra IJVM)

EFLAGS indeholder CPUens status (herunder bits til brug for conditional branches)

Page 21: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ARMs historie

Den oprindelige ARM1 processor blev designet i 1985 af fire ingeniører en til instruktionssættet, en til mikroarkitekturen, to til udvikling af understøttende chipsæt. Det tog 14 måneder

Oprindeligt en del af det britiske Acorn, men blev et selvstændig firma i 1990 med Acorn, Apple og VLSI som investorer

Apple anvendte en ARM CPU i deres Apple Newton Messagepad

Har siden udviklet på ARM designet med stor succes 2300 ansatte, hovedkvarter i Cambridge, U.K. næsten total dominans på mobil og tabletmarkedet. Også meget udbredt på mindre enheder

Designer chips, men overlader fabrikationen til deres licenstagere

ARMs kunder har solgt mere end 34,8 milliarder ARM processorer (!!!)

Page 22: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ARM processorens udviklingArkitektur Bitbredde Cores designet af ARM Holdings Cores designet af tredjepart

ARMv1 32/26 ARM1ARMv2 32/26 ARM2, ARM3 AmberARMv3 32 ARM6, ARM7ARMv4 32 ARM8 StrongARM, FA526

ARMv4T 32 ARM7TDMI, ARM9TDMIARMv5 32 ARM7EJ, ARM9E, ARM10E XScale, FA626TE, Feroceon, PJ1/MohawkARMv6 32 ARM11

ARMv6-M 32 ARM Cortex-M0, ARM Cortex-M0+, ARM Cortex-M1ARMv7-M 32 ARM Cortex-M3

ARMv7E-M 32 ARM Cortex-M4ARMv7-R 32 ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7

ARMv7-A 32 ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15 Krait, Scorpion, PJ4/Sheeva, Apple A6/A6X (Swift)

ARMv8-A 64/32 ARM Cortex-A53, ARM Cortex-A57[22] X-Gene, Denver, Apple A7 (Cyclone)ARMv8-R 32 Endnu ikke annonceret

Page 23: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ARM specialitet: big.LITTLEDe fleste processorer er i dag multi-core

Hvis man har arbejde til dem alle, kan det gå stærkt

Hvis ikke, spilder man strøm ⇒ sluk for ikke anvendte cores

Hvis man har en lille og svag, men strømbesparende, core, og en stor og stærk, men strømslugende, core i stedet for to ens cores, kan man spare mere strøm, når der ikke er meget at lave

Page 24: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ARM registre

Mere ensartet og flad registerstruktur end hos Intel

Tilsyneladende helt homogent, men konventioner dikterer anvendelsen af en række registre

Bemærk: R12-R15 reserverede

Page 25: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Programmering på en ARM processor

Hukommelsen tilgås gennem eksplicitte load og store instruktioner, der henter og bringer mellem hukommelsen og registrene

Når der skal regnes på noget, foregår det altid i registrene

Når man er færdig, gemmer man eksplicit i hukommelsen med store (i modsætning til sædvanlige (CISC) processorer, hvor hukommelsesoperationer ofte kan være implicitte, og bliver håndteret af processoren) et eksempel på, hvordan simple instruktioner kan medføre (lidt) mere arbejde for programmøren

De enkelte instruktioner på ARM kan typisk udføres meget hurtigt ofte direkte af logiske kredsløb end igennem afvikling af et mikroprogram

Page 26: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

OMAP4430

Produceret på licens af Texas Instruments

Dual-core ARM Cortex-A9, ARM v7 ISA

1,2 GHz

Indbygget GPU, accellereret video dekodning, SIMD

32-bit

0,6 watt

Findes bl.a. i Kindle Fire og Google Glass

Page 27: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ATMEL ATmega168 AVR

En microcontroller—en CPU beregnet til indlejrede systemer

styring af clockradioer, komfurer, USB-sticks, Arduino…

De to vigtigste designparametre for indlejrede CPUer:

BILLIG, helst MEGET billig kraftfuld nok til at udføre den nødvendige opgave, men heller ikke mere (for ellers har den været for dyr)

En 8-bit RISC processor

Udviklet af Alf-Egil Bogen og Vegard Wollan, studerende på NTH i 1996

Page 28: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ATMEL ATmega168 AVR

ATmega168 er et eksempel på SoC (System on a Chip) CPU, RAM, ROM, I/O, timere på den samme chip—simpelt at integrere for designerne

ATmega168 karakteristika 8-bit processor, op til 20 Mhz 16 kiB flash RAM til program og 1 kiB RAM til data

Programhukommelsen opdelt i to bootloader: kan skrives én gang programhukommelse: kan skrives til af bootloaderen mulighed for signeret programkode sikrer, at softwaren ikke kan overskrives af tredjepart

Page 29: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ATmega168 AVR: Registre og hukommelse

De nederste 32 bytes i hukommelsen er registre R0-31

De næste 64 bytes bruges til I/O

De øvrige 928 bytes kan man bare bruge løs af

SREG bruges til statusflag

SP er delt over to bytes for at kunne adressere 1024 bytes

Page 30: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Design af et ISA

Generelle overvejelser Introduktion til Intel Core i7, OMAP4430 og AVR ATMega Datatyper ISA design og eksempler Adressering

Page 31: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Datatyper

Valget af datatyper, som en CPU understøtter fra designerens hånd, varierer helt efter

hvad skal den bruges til? er der noget, som vi kan understøtte bedre ved direkte hardwareunderstøttelse, og er dét tilstrækkeligt vigtigt? hvad hænger vi på fra fortiden?

Det typiske primitiv er heltal, med og uden fortegn, i forskellig længder

Samt floating point tal (som vi ikke kommer ind på hér)

Det er i høj grad et spørgsmål om, hvad vi ønsker at understøtte i hardware, og hvad vi overlader til programmøren/operativsystemet

hvis vi bare har 8-bits heltal (bytes), kan vi klare resten i software

Page 32: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Numeriske datatyper på en Core i7

Typiske integer typer for en 64-bits maskine

BCD bruges hovedsageligt i financielle systemer (4 bits (en nibble) bruges til at repræsentere ét decimaltal)

ikke så pladseffektivt som binære tal, men matcher præcist på decimaltal, hvor binære repræsentation af floating point tal kan være problematiske med hensyn til afrundingsfejl o.lign.

Type 8 bits 16 bits 32 bits 64 bits

Signed Integer ✔ ✔ ✔ ✔

Unsigned integer ✔ ✔ ✔ ✔

Binary coded decimal integer ✔

Floating point ✔ ✔

Page 33: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Numeriske datatyper på en OMAP4430

Skønt ARMv7 er en 32-bit ISA, er den veludstyret med load og store instruktioner til at kunne hente 8- og 16-bitsværdier til og fra registre

Type 8 bits 16 bits 32 bits 64 bits

Signed Integer ✔ ✔ ✔

Unsigned integer ✔ ✔ ✔

Binary coded decimal integer

Floating point ✔ ✔

Page 34: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Numeriske datatyper på en ATmega168

Hér har vi skåret ind til benet. Det absolut nødvendige og intet mere 16 bit er hovedsageligt til hukommelsesadresser

Type 8 bits 16 bits 32 bits 64 bits

Signed Integer ✔

Unsigned integer ✔ ✔

Binary coded decimal integer

Floating point

Page 35: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Design af et ISA

Generelle overvejelser Introduktion til Intel Core i7, OMAP4430 og AVR ATMega Datatyper ISA design og eksempler Adressering

Page 36: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Valget af en ISA enkodning

Når man har valgt sin arbejdsområde for sin CPU, de grundlæggende karakteristika (f.eks. registerbredde og hukommelsens organisering) og de nødvendige instruktioner til understøttelse heraf, melder spørgsmålet sig

hvordan repræsenteres de nødvendige instruktioner mest effektivt i bitmønstre?

Dette er på ingen måde simpelt

Page 37: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Ønsker til et ISAJo kortere instruktioner, des bedre

mere pladseffektivt, flere instruktioner kan hentes over tid, bedre udnyttelse af kodecache, bedre performance

Jo mere ensartede instruktioner, des bedre det gør det enkelt og dermed hurtigt at afkode dem, altså bedre performance

Der skal være plads til udvidelser til senere generationer af CPUen vi kan på ingen måde forudsige nu, hvad behovet måske er om 10 år

Man skal kunne adressere tilstrækkelig hukommelse med passende opløsning

hvad er den mindst adressérbare enhed i hukommelsen? En byte, et 4 bytes word, 8 bytes, 16?

Hvilke forfærdelige valg gjorde vores forgængere? disse fortidsvalg er uomgængelige, hvis man vil være bagudkompatibel

Page 38: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Typiske instruktionsformater

Fire typiske instruktionsformater: jo længere adresse, des højere opløsning

(a) Ingen adresse angivet

(b) En adresse angivet

!

(c) To adresser angivet

(d) Tre adresser angivet

Page 39: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Længden af instruktioner

Man kan vælge instruktioner af forskellig, men ensartet længde eller tillade blandede længder

Ensartede længde er hurtige at afkode, men kan spilde plads

ARM er speciel ved at have 32-bits instruktioner OG et 16-bits “Thumb” instruktionsæt, der ganske vist er reduceret, men fylder det halve

Page 40: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Udvidbare opcodes (16-bit eksempel)

En instruktion med 4-bit opcode og tre 4-bit adressefelter velegnet f.eks. til at angive tre registre ud af maksimalt 16

Hvor mange typer instruktioner kan der maksimalt være af denne type? absolut ikke flere end 16, for vi har 4 bits til angive opcode med men hvis vi bruger 16 opcodes, har vi afskåret os fra andre muligheder

Page 41: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Udvidbare opcodes (16-bit eksempel)

Hvis man pakker det effektivt, kan man have 15 tre-adresser, 14 to-adresser, 31 en-adresse og 16 adresseløse instruktioner i 16-bit

Page 42: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Core i7’s instruktionsformat

!

Historisk betinget instruktionssæt har betydet, at afkodning af x86 instruktioner er kompliceret med masser af special tilfælder

Instruktioner varierer i længde fra 1 op til 17 bytes

Page 43: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

OMAP4430’s instruktionsformat

32 bit ISA vist her

Meget tæt pakket—kompleks decode

Page 44: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Brug af conditionals i ARM ISA32 bits instruktionerne bruger 4 bits til cond—hvorfor dét?

Conditionals afhænger af statusbits, og den tilhørende instruktion udføres kún, hvis conditions er opfyldte

Kan skabe super kompakt og hurtig kode:

// { while: // while iload x iload y if_icmpeq end_while // (x!=y) { iload x // if iload y isub // stack=x-y, x-y<0⇒(x<y) iflt then goto else then: // then iload y iload x isub istore y // y=y-x; goto end_if else: // else iload x iload y isub istore x // x=x-y; end_if: goto while end_while: // }

loop: CMP Rx, Ry ; set condition "NE" if (x != y), ; "GT" if (x > y), ; or "LT" if (x < y) SUBLT Ry, Ry, Rx ; if "LT" (Less Than), y = y-x; SUBGT Rx, Rx, Ry ; if "GT" (Greater Than), x = x-y; BNE loop ; if "NE" (Not Equal), then loop

ARM

IJVM

Page 45: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

ATmega168’s instruktionsformat

Simpelt og kompakt: 2 til 4 bytes lange instruktioner

Page 46: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Design af et ISA

Generelle overvejelser Introduktion til Intel Core i7, OMAP4430 og AVR ATMega Datatyper ISA design og eksempler Adressering

Page 47: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Adressering

CPUens instruktioner har behov for at kunne referere/adressere data og lokationer i hukommelsen og i registrene (også kendt som operander)

Hvordan gør man dét? fleksibelt? kompakt? effektivt?

Følgende er eksempler på adresseringsformer—det er langtfra afgjort, at en processor understøtter dem alle

Page 48: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Immediate addressing

Operanden er en del af instruktionen bipush 42

Det sætter selvfølgeligt sine begrænsninger på operandens størrelse—i IJVMs tilfælde med bipush er vi begrænset til en byte

Effektivt—vi har vores operand med det samme (immediately!)

Begrænset—det skal være hardcodet fra begyndelsen

OPCODE OPERAND

Page 49: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Register addressing

Operanderne ligger i registre add R1, R2 // R1 = R1 + R2 add R1, R2, R3 // R1 = R2 + R3

Kræver, at vi har vores data liggende i registre

Effektivt—registre er den hurtigste form for hukommelse

Kompakt—vil ofte kunne enkodes i en (relativ) kort instruktion

OPCODE REGISTER REGISTER

OPCODE REGISTER REGISTER REGISTER

Page 50: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Direct addressing

Operand ligger på en absolut adresse i hukommelsen add R1, 1069 // R1 = R1 + m[1069]

Meget ufleksibelt—kræver, at vi ved præcist hvor i hukommelsen vores data ligger, når vi skriver programmet

Dvs. måske velegnet til konstanter og globale variable, men ikke til adressering relativt til f.eks. stakken

Fint nok til processorer som ATmega168, men uholdbart til multitasking

OPCODE REGISTER ADDRESS

Page 51: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Register indirect addressing

Operand ligger på en absolut adresse i hukommelsen udpeget af et register add R1, (R2) // R1 = R1 + m[R2]

Mere fleksibelt, nu kan vi beregne adressen på operanden

OPCODE REGISTER REGISTER

Page 52: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Operand udpeges af et register og et offset add R1, 4(R2) // R1 = R1 + m[R2 + 4]

Fleksibelt og effektivt

Bruges f.eks. implicit i IJVM, når vi bruger iload og istore (indekseret relativt til LV)

goto og branching i IJVM foregår også indekseret relativt til PC

OPCODE REGISTER REGISTER OFFSET

Register indexed addressing

OPCODE OFFSET

Page 53: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Operand udpeges af summen af to registre (og måske et offset) add R1, (R2+R3) // R1 = R1 + m[R2 + R3]

Effektivt og særdeles fleksibelt

OPCODE REGISTER REGISTER OFFSET

Based-indexed addressing

OPCODE REGISTER REGISTER

Page 54: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Core i7, OMAP4430 ARMv7 og ATmega168 AVR

Adresseringsform Core i7 OMAP4430 ATmega168

Immediate ✔ ✔ ✔

Direct ✔ ✔

Register ✔ ✔ ✔

Register indirect ✔ ✔ ✔

Indexed ✔ ✔

Based-indexed ✔

Page 55: Design af et ISA - users-cs.au.dk af et ISA.pdfarkitektur til arkitektur, hvilke adresser der kan tilgås direkte Typisk tilgås hukommelsen i 4- eller 8-bytes intervaller dvs. man

Opsummering

ISA design er et spørgsmål om kompromiser og historie

Hvad skal maskinen kunne?

Hvor meget må den koste?

Er hastighed den vigtigste parameter, eller hvad med kompakthed?

Hvilke valg er der truffet i fortiden?

Hvordan undgår vi at vanskeliggøre fremtidige valg?