SA-1100. Ett kapitel för kursen Wearable Computers D 10 p. Namn: Sonja Carlsson. Datum: 021105. Björne Lindberg Ulf Brydsten



Relevanta dokument
Grundläggande datavetenskap, 4p

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Läsminne Read Only Memory ROM

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Föreläsningsanteckningar till Konstruktionsmetoder

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

DEC Alpha instruktions Arkitektur

Arm Cortex-A8 Pipeline

Datorarkitekturer med operativsystem ERIK LARSSON

IBM POWER4, den första flerkärniga processorn och dess pipelines.

MESI i Intel Core 2 Duo

Parallellism i CDC 7600, pipelinens ursprung

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Pipelining i Intel Pentium II

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Projektlaboration 4, synkronisering av klockan

F8: Undantagshantering

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Tentamen PC-teknik 5 p

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Processor pipelining genom historien (Intel i9-intel i7)

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Utvecklingen från en 8 bitars till en 16 bitars mikroprocessor

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Tentamen PC-teknik 5 p Lösningar och kommentarer

Digitala projekt rapport

Datorarkitekturer med Operativsystem

Introduktion till ARM Cortex-M4

Tentamen PC-teknik 5 p Lösningar och kommentarer

Datorsystemteknik DAV A14 Föreläsning 1

Närliggande allokering Datorteknik

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Datorarkitekturer med operativsystem ERIK LARSSON

Modbus över Ethernet. WAGO Contact SA TSS STR

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Tentamen. Datorteknik Y, TSEA28

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

3. Mikroprogrammering II

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Formula Blue. Digitala Projekt 8p. Jesper Ferm E02 Carl Hakenäs E04

32 Bitar Blir 64 Sammanfattning

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

HF0010. Introduktionskurs i datateknik 1,5 hp

GPIO - General Purpose Input Output

Modbus. WAGO Contact SA TSS STR

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Lösningsförslag till Tenta i Mikrodator

Digitala System: Datorteknik ERIK LARSSON

Hantering av hazards i pipelines

Tentamen PC-teknik 5 p

Maskinorienterad programmering

Övning2 Datorteknik, HH vt12 - Programmering

Digital- och datorteknik

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Cacheminne i en Intel Core 2 Duo-processor

Laboration 2 i Datorteknik- Assemblerprogrammering II

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Maskinorienterad Programmering LP3-2017/2018

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Cacheminne i en AMD Opteron Processor

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Datorsystemteknik DVGA03 Föreläsning 8

Maskinorienterad programmering

Datorteknik ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Datorsystem Laboration 2: Minnesmappade bussar

Användarmanual För skatteverket

F6: I/O hantering. Typer av I/O i ett datorsystem. Protokoll för synkronisering. Drivrutiner. Memory mapped Port mapped. Polling Timed Interrupt DMA

Datorarkitekturer med operativsystem ERIK LARSSON

LABORATION. Datorteknik Y

Maskinorienterad Programmering IT2, LP2-2016/2017

F7: I/O hantering. Asynkron och synkron busscykel Bussfördelning. Periferikretsar

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Tentamen den 18 mars svar Datorteknik, EIT070

DIG IN TO Dator och nätverksteknik

Adressavkodning - busskommunikation

Digital IC konstruktion

Styrteknik 7.5 hp distans: E-1000 och E-Designer

Digital- och datorteknik

TSEA28 Datorteknik Y (och U)

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Dataöverföring på Parallell- och serieform MOP 11/12 1

Transkript:

SA-1100 Ett kapitel för kursen Wearable Computers D 10 p Namn: Datum: 021105 Handledare: Lars Karlsson Björne Lindberg Ulf Brydsten 1

Innehållsförteckning INLEDNING...4 INTEL 4004...4 SA-110...4 SA-1100...5 ANVÄNDNINGSOMRÅDEN...5 BLOCKDIAGRAM...6 Block 1 - Processor...6 Block 2 - MPCM (Memory and PCMCIA Controller Module)...6 Block 3 - PCM (Peripheral Control Module)...6 Block 4 - SCM (System Control Module)...6 PROCESSORN...7 ARM V4...7 StrongARM-registren...8 Instruktionsuppsättningen...9 Skrivbufferten...11 Läsbuffert...11 Datacach...11 Instruktionscach...11 MMU...12 MEMORY AND PCMCIA CONTROLLER MODULE...12 Minneskarta...12 PERIPHERAL CONTROL MODULE (PCM)...13 Serieportar...14 Peripherial Pin Controller (PPC)...14 SYSTEM CONTROL MODULE (SCM)...15 General-Purpose I/O...15 Avbrottshanteraren...15 Realtidsklockan (RTC)...16 OS-klockan (OST)...16 Spänningshanteraren...16 Resethanteraren...16 EXEMPEL INITIERA DISPLAY...17 FRAMTIDEN...18 SA-1110...18 APPENDIX A KÄLLFÖRTECKNING...19 APPENDIX B ORDLISTA...20 APPENDIX C SA-1100.H...23 2

Tabellförteckning TABELL 1 PRODUKTINFORMATION SA-1100...5 TABELL 2 PPC-REGISTER...14 TABELL 3 GPIO-REGISTER...15 TABELL 4 JÄMFÖRELSE MELLAN SA1100 OCH SA1110...18 Figurförteckning FIGUR 1 INTEL 4004, 12 MM 2...4 FIGUR 2 BLOCKDIAGRAM ÖVER SA-1100...6 FIGUR 3 REGISTERUPPSÄTTNINGEN FÖR ARM-ARKITEKTUREN...8 FIGUR 4 MINNESKARTAN ÖVER SA-1100...12 FIGUR 5 PCM-HANTERAREN...13 3

Inledning Det här kapitlet ägnas åt en överskikt över SA-1100 som är en mikroprocessor från Intel. Vissa områden kommer att behandlas mer ingående än andra och kapitlet ska ses som en introduktion över de största delarna. Den som önskar veta mer om SA-1100 rekommenderas läsa Intel StrongARM SA-1100 Microprocessor Developers s Manual, på 388 sidor. För över 30 år sedan utvecklades världens första mikroprocessorn, Intel 4004, och sedan dess har nya och ständigt förbättrade processorer utvecklats av Intel. Intel 4004 1971 kom Intel 4004, den bestod av en 4-bitarsprocessor, 2300 transistorer, en 4-bitarsbuss och en svindlade arbetsrymd på hela 640 bytes. Den drevs med 15 V och hade en klockfrekvens på imponerande 0,108 MHz vilket resulterar i 0,006 MIPS. Intels 4004:a kunde utföra ungefär 100 000 instruktioner per sekund och genom de 46 instruktionerna kunde bland annat addition och subtraktion beräknas. FIGUR 1 INTEL 4004, 12 MM 2 SA-110 Ungefär 25 år senare, 1996, kom den första medlemmen i Intel StrongARM-familjen, SA-110. StrongARM står för den arkitekturlicens som upprättades mellan Digital Equipment Corporation (DEC) och ARM i februari 1995. SA-110 kombinerar ARM:s låga strömförbrukningsarkitektur, vilket resulterar i att processorn kan drivas med vanliga AA batterier, med DEC:s kraftfulla processordesign tillsammans med CMOS processexpertis. SA-110 riktar sig mot marknaden för bärbara inbyggda elektronikprodukter och finns i tre olika klockfrekvenser, 100 MHz, 160 MHz, och 200 MHz. Mikroprocessorn drivs med 1,65V upp till 2,0V beroende på klockfrekvens. Genom att använda små och billiga plastkapslar kunde priset på SA-110 hållas nere och produkten göras mer lättåtkomlig för den stora massan. SA-110 finns fortfarande i produktion, SA-1100 är en vidareutvecklig på SA-110. 4

SA-1100 1998 kom den andra mikroprocessen från StrongARM-familjen, SA-1100. Precis som sin föregångare är den strömsnål, billig och har hög prestanda. SA-1100 är en 32-bitars RISC mikroprocessor med 16 Kbyte instruktionscache och 8 Kbyte datacache, den har även skrivbuffert, läsbuffert och MMU. Processorn är helt statisk och prestandan uppgår till ungefär 230 MIPS, SA-1100 ses som en av världens mest kraftfulla processorer med hänsyn på prestanda och effektförbrukning. SA-1100 finns i fyra utföranden: Namn DE S1100 CA (LQFP) DE S1100 CB (mbga) DE S1100 DA (LQFP) DE S1100 DB (mbga) Processorhastighet 160 MHz 220 MHz Kärnans spänningsförsörjning Vss = 0.0 V dc Vdd = 2.0 V dc ± 5% Vss = 0.0 V dc Vdd = 2.0 V dc ± 5% I/O spänningsförsörjning Vss = 0.0 V dc Vdd = 2.0 V dc ± 5% Vss = 0.0 V dc Vdd = 3.3 V dc ± 10% Typisk energiförlust < 430 mw < 550 mw (systemberoende) Temperatur Min : 0 C Max: 70 C. Min : 0 C Max: 70 C Förvaringstemperatur -20 C till +125 C -20 C till +125 C Kapsel 208-pin LQFP 256 mbga 208-pin LQFP 256 mbga Processteknologi 0,35 µm, 3-lagers metall 0,35 µm, 3-lagers metall Antal transistorer 2,5 miljoner 2,5 miljoner TABELL 1 PRODUKTINFORMATION SA-1100 Användningsområden Precis som SA-110 är SA-1100 en mikroprocessor speciellt framtagen för att undvika externa hjälpkretsar. Istället har dessa kretsar byggts in i processorn för att på så vis minska antalet chip och därmed spara både plats och kraft, följden av detta blir att systemet drar väldigt lite ström, men är föga uppgraderbart. SA-1100 kombinerar strömsnålheten med att även vara prestandastark och ha ett rimligt pris. Detta har lett till att mikroprocessorn har en bred marknad och finns i allt från enkla inbyggda system till avancerade datorer i satelliter. Det nederländska universitetet TUDelft (Delft University of Technology) har utvecklat en liten inbyggd dator, kallat LART (Linux Advanced Radio Terminal) vilken använder SA-1100. Att använda sig av LART:en i utvecklingssyfte ger en god inblick i SA-1100:s kapacitet. SA-1100 kan portas mot en mängd operativsystem, exempelvis Linux, NetBSD, psos och Windows CE. 5

Blockdiagram SA-1100 består av fyra huvudsakliga block: processor, MPCM, PCM samt SCM. FIGUR 2 BLOCKDIAGRAM ÖVER SA-1100 Block 1 - Processor Processorn som används i SA-1100, har en 16 Kbyte instruktionscache och en 8 Kbyte datacache. Dataoch instruktionsströmmarna översätts via oberoende IMMU:s respektive DMMU:s. Lagringen och laddningen av data sker via en skriv- respektive läsbuffert. Block 2 - MPCM (Memory and PCMCIA Controller Module) MPCM stödjer 32-bitars EDO DRAM, Flash och ROM-minne med 16- eller 32-bitars bredd samt 32-bitars SDRAM. Block 3 - PCM (Peripheral Control Module) Enheterna som kontrollerar kringutrustning är en LCD-hanterare med support för både passiva och aktiva displayer och en DMA-hanterare med sex kanaler, de tillhandahåller hjälp till följande enheter: USB-hanterare SDLC kommunikationshanterare Serieportshanterare som stödjer 115 Kbps och 4 Mbps IrDA protokoll UART som stödjer 230 Kbps CODEC-gränssnitt som stöder SPI, µwire, TI, UCB1100 och UCB1200 Block 4 - SCM (System Control Module) SCM är ansluten till kringutrustningsbussen och innehåller ett antal block som är avsedda för generella systemfunktioner: 28 st GPIO-pinnar Realtidsklocka samt OS-klocka Avbrottshanterare Spänningshanterare Resethanterare 6

Processorn Processorn i SA-1100 är en ARM SA-1 kärna som är uppbyggd med ARM V4-arkitekturen. ARM V4 ARM är en mikroprocessor med RISC-arkitektur, vilket innebär att processorn har en reducerad instruktionsuppsättning till skillnad mot CISC-processorerna. Fördelen med reducerad instruktionsuppsättning blir att hastigheten ökar då man exempelvis använder pipor (pipelining). Dessutom kan instruktions- och adresseringstillstånden (modes) göras liknande för de flesta instruktioner. ARM är en arkitektur som bygger på att ladda och spara data utan att direkt komma åt minnesinnehållet, istället används datahanteringsoperationer vilka enbart kan verka på registerinnehållet. ARM Ltd är det företag som ligger bakom ARM-processorarkitekturen och har sedan mitten av 80-talet (då gick företaget under namnet Acorn Computer Group) utvecklat RISC-processorer. Vid ett samarbete med Apple Computer, 1990, genereras företaget Advanced RISC Machines (ARM). Genom åren har sex olika versioner av instruktionsuppsättningar producerats av företaget. Version 1 ARMv1 kom våren 1985 och hade en 26-bitars instruktionsuppsättning. ARM1 var den enda implementation som gjordes och den innehöll bland annat enkla datahanteringsinstruktioner som kunde ladda och spara data. ARM1 var den första RISC-processorn som nådde den kommersiella marknaden men den kom enbart att finnas i ett fåtal utvärderingssystem. Version 2 Även den andra versionen av ARM:s arkitekturer hade en 26-bitars instruktionsuppsättning. Skillnaden från den tidigare versionen var exempelvis stödet för coprocessor samt stöd för multipla instruktioner. Version 2 implementerades i ARM2 samt ARM3. Version 3 Med den tredje versionen utökades instruktionsuppsättningen till 32-bitar samt ytterligare implementeringar av förändringar för att förnya arkitekturen, bland annat lades två nya processortillstånd till. ARMv3 var bakåtkompatibel med 26-bitars arkitekturerna. Huvudimplementationerna för denna version döptes till ARM6 (-91) och ARM7 (-93). Thumb (T- varianten) Från och med version 3 finns en omarbetad delmängd i ARM, kallat Thumb, denna delmängd görs gällande genom att ett T läggs till, exempelvis ARMv4T. Thumb används för att öka prestandan för ARM-implementationer som använder en 16-bitars databuss, detta verkställs genom att sätta en specifik flagga som genererar en 16-bitars instruktionsuppsättning istället för en 32-bitars sätts. StrongARM-arkitekturen använder inte Thumb. Long multiply support (M- varianten) Den tredje versionen förde även med sig ett stöd för extra instruktioner som hanterar 32 x 32 -> 64 multiplikationer samt 32 x 32 + 64 -> 64 multiackumulationer. Från och med version 4 är long multiply support standard i ARM-arkitekturer, StrongARM-arkitekturen har därför M-variation implementerad. Version 4 1995 släppte ARM ytterligare en version med implementationerna ARM8 och ARM9, samt StrongARM. Det nya med version 4 var bland annat att arkitekturen även kunde ladda och spara halva word (16 bitar). Även den här versionen är till största delen bakåtkompatibel med 26-bitars versionerna. 1998 kom ARM910 samt ARM920 för Windows CE-lösningar. 7

Version 5 ARM10 släpptes 1998 och dess arkitektur utgjordes av den femte versionen av ARM:s arkitekturer. Version 5 är en utveckling av den fjärde versionen och innehåller bland annat fler instruktioner för coprocessorhanteringen samt utvecklig av Thumb-funktionen. Enhanced DSP (E-varianten) Från och med version 5 finns ytterligare en delmängd i ARM-arkitekturen som görs gällande med ett E i namnet. Denna delmängd anger att det finns ett antal extra instruktioner som ökar prestandan vid DSPapplikationer (Digital Signal Processing). E-varianten kräver att Thumb finns implementerat, därför finns inget stöd för Enhanced DSP i StrongARM-arkitekturen. Jazelle (J-varianten) År 2000 introducerades Jazelle-teknologin i ARM:s arkitektur för att ge stöd åt Java Virtual Machine (JVM). StrongARM stödjer inte J-varianten. Version 6 2001 lanserades den senaste versionen av ARM:s arkitekturer, ARMv6. Denna version stödjer bland annat Thumb, Enhanced DSP samt Jazelle. StrongARM-registren Den här rapporten behandlar StrongARM-arkitekturens uppbyggnad. Arkitekturen har 37 register, 31 stycken 32-bitars general-purpose register samt 6 stycken statusregister. Av dessa general-purpose register är bara 16 synliga, R0 till R15, de övriga registren används för att öka hastigheten vid undantagshantering. StrongARM-arkitekturens register är ordnade i olika banker, med en bank för varje processortillstånd. Det finns sju stycken processortillstånd: usr (user), svc (supervisor), abt (abort), irq (interrupt), fiq (fast interrupt) samt ett odefinierat tillstånd, se figur 3. Processortillstånd med särskilda privilegium 5 st undantagstillstånd User System Supervisor Abort Undefined Interrupt FIQ (Fast Interrupt) R0 R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R7 R8 R8 R8 R8 R8 R8 R8_fiq R9 R9 R9 R9 R9 R9 R9_fiq R10 R10 R10 R10 R10 R10 R10_fiq R11 R11 R11 R11 R11 R11 R11_fiq R12 R12 R12 R12 R12 R12 R12_fiq R13 (sp) R13 (sp) R13_svc R13_abt R13_und R13_irq R13_fiq R14 (lr) R14 (lr) R14_svc R14_abt R13_und R14_irq R14_fiq R12 (pc) R12 (pc) R12 (pc) R12 (pc) R12 (pc) R12 (pc) R12 (pc) CPSR CPSR CPSR CPSR CPSR CPSR CPSR SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq FIGUR 3 REGISTERUPPSÄTTNINGEN FÖR ARM-ARKITEKTUREN 8

General-purpose register Register R0 till R7 är obankade register vilket innebär att de refererar till samma fysiska register i processorns alla tillstånd (mode). De har inget speciellt användningsområde och kan användas fritt så länge en instruktion har behov av ett general-purpose register. Register R8 till R14 är bankade register vilket innebär att de refererar till olika fysiska register beroende på vilket tillstånd processorn befinner sig i. I alla fall utom fast interrupt-tillståndet kan register R8 till R12 (se figur 3) användas på samma vis som R0 till R7. Register R13 till R14 är normalt reserverade för speciella syften men kan även användas som vanliga general-purpose register: R13 stackpekare (sp) R14 länkregister (lr) R15 programräknare (pc) Register R13 används som stackpekare, StrongARM-arkitekturens stack kommer att växa mot de lägre minnesadresserna, således kommer sp peka på den sista posten som skrevs till, detta kallas full descending stack (ungefär rakt nedstigande stack ). Länkregistret, R14 även kallat lr används för att lagra subrutiners returadress. Då en subrutins returadress returneras görs detta genom att kopiera värdet i lr till programräknarregistret (R15, pc). Program statusregister Det finns två 32-bitars programstatusregister, CPSR (Current Program Status Register) samt SPSR (Saved Program Status Register). CPSR kan nås från processorns alla tillstånd, SPSR kan dock ej nås från user mode samt system mode eftersom dessa tillstånd inte är undantagstillstånd (se figur 3). CPSR innehåller data om det tillstånd processorn befinner sig i för tillfället (4 bitar) samt 8 bitar information angående systemstatusen. Då ett avbrott inträffar kommer dessa värden att sparas i SPSR. Instruktionsuppsättningen StrongARM har precis som andra RISC-processorer en fast längd på instruktionerna, i det här fallet 32- bitar. Det finns sex olika typer av instruktioner: hoppinstruktioner (branch) ladda och spara instruktioner (load and store) överföringsinstruktioner för statusregistret (status register transfer) databehandlingsinstruktioner (data-processing) undantagsgenererade instruktioner (exception-generating) coproccessor instruktioner De instruktioner som presenterats i detta avsnitt är ett urval från den kompletta listan som finns representerade i ARM Architecture Reference Manual - Issue D, 2000 Advanced RISC Machines LTD. 9

Det finns 6 olika typer av hoppinstruktioner: B<cond> <mål_adress> tillåter ett ovillkorligt hopp bakåt eller framåt, upp till 2KB stora hopp B <mål_aderss> tillåter ett villkorligt hopp bakåt eller framåt, upp till 256 Byte stora hopp BL <mål_aderss> tillåter subrutins hopp bakåt eller framåt, upp till 4MB stora hopp BLX <mål_aderss> tillåter hopp till en adress i ett register och möjliggör byte till ARM code execution BX <register> tillåter subrutins hopp och möjliggör byte till ARM code execution BLX <register> tillåter hopp till en adress i ett register och möjliggör byte till ARM code execution Överföringsinstruktioner för statusregistret De instruktioner som hanterar överföringar i statusregistren transporterar innehållet i CPSR eller SPSR till eller från GPIO-registren. Databehandlingsinstruktioner Databehandlingsinstruktioner använder följande format: <mnemonic> <destination> <operator 1> (<operator 2>) destination är alltid ett register, och operator 1 och operator 2 kan vara ett register, ett skiftregister eller ett värde. Ett par exempel: Addition (add) : add R1, #65 ;R1 = R1 + 65 Subtraktion (sub) : sub R1, R2, R3 ;R1 = R2 R3 Logisk AND (and) : and R0, R1, R2 ;R0 = R1 AND R2 Logisk OR (orr) : orr R1, R2 ;R1 = R1 OR R2 Förflyttning (mov) : mov R0, R1 ;R0 = R1 Ladda och spara instruktioner Det finns flera olika instruktioner som kan ladda och spara, de kan alla hantera 32-bitars word, 16-bitars word eller 8 bitar. Genom att följa nedanstående syntax kan ett register laddas från minnet: ladda 32 bitar: ldr RX, <adress> ladda 8 bitar: ldrb RX, <adress> Det finns givetvis även instruktioner som sparar registren i minnet: spara 32 bitar: str RX, <adress> spara 8 bitar: strb RX, <adress> ARM-arkitekturen tillåter även sparande och laddande av multipla register. 10

Undantagsgenererade instruktioner Det finns två typer av instruktioner för att generera specifika avbrott: Mjukvaruavbrottsinstruktioner (swi) genererar undantag för mjukvaruavbrott Mjukvarubrytpunktsinstruktioner (bkpt) genererar undantag vid abort Coproccessor instruktioner För att förhöja och förstärka ARM-arkitekturen finns coprocessor 15 implementerad. Coprocessor 15 Det är inte möjligt att lägga till externa coprocessorer till SA-1100 vilket beror på att mikroprocessorn saknar bussar för coprocessorer. Istället finns en intern coprocessor som betecknas coprocessor 15. Coprocessor 15 används för att kontrollera MMU:n, cacher, klockor och brytpunkter. Den ansvarar även för att läs- och skrivbuffertarna fylls och töms via kontrollregistret för buffertarna. Det finns tre typer av instruktioner som hanterar coprocessorn: Databehandlande instruktioner vilka startar en intern coprocessor-operation Dataöverföringsinstruktioner vilka överför data mellan coprocessor och minne Registeröverföringsinstruktioner vilka tillåter att värden från coprocessorn överförs till och från StrongARM-arkitekturens register. Skrivbufferten SA-1100 har en åtta raders skrivbuffert där varje rad innehåller upp till 16 byte. Då data skrivs till externa minnesenheter av CPU:n kommer skrivbufferten att buffra mellan CPU-frekvensen och den aktuella busshastigheten, allt för att öka effektiviteten. Läsbuffert Läsbufferten består av fyra rader som kan ladda 1, 4 eller 8 word av data per rad. Genom mjukarukontroll av bufferten går det att tillåta att data laddas in i bufferten i förväg för att på så vis undvika att piporna (pipeline) blockeras under tiden de externa minnena avläses. Mjukvaran tillåts även tömma en eller alla rader på en gång. Datacach SA-1100 har en datacache på 8 Kbytes, mikroprocessorn tillhandahåller även en minicache på 512 byte för att förhindra att stora periodiska dataöverföringar förstör datacachen. Instruktionscach 16 Kbyte instruktionscache finns tillgänglig på mikroprocessorn och precis som datacachen är den implementerad som ett 32-byte block. 11

MMU Intel SA-1100 använder sig av ARM :s standard MMU-funktioner som använder två stycken 32-raders översättningsbuffertar (translations buffers, TB). Den ena används för dataåtkomst medan den andra nyttjas för instruktionsåtkomst. MMU, instruktionscache, datacache och skrivbuffert kan tas ur drift, respektive sättas i drift, i stort sett helt oberoende av varandra. Memory and PCMCIA Controller Module SA-1100 innehåller en flexibel minneshanterare som kan nå olika typer av EDO RAM, DRAM, Flash, ROM och SROM. Minneskarta Minneskartan för SA-1100 är uppdelad i fyra huvudsektioner om 1,024 Gbyte, se figur 4. FIGUR 4 MINNESKARTAN ÖVER SA-1100 Adress 0h0000 0000 till 0h3FFF FFFF Sektionen D är tillskriven statiska minnesenheter såsom Flash, RAM och ROM samt PCMCIA. Sektionen är uppdelad i fyra stycken 128 Mbyte-block för de statiska enheterna och två stycken 256 Mbyte-block som är tillägnade PCMCIA. Adress 0h4000 0000 till 0h7FFF FFFF C-sektionen är reserverad plats, alla försök att nå sektionen kommer att resultera i undantaget data abort. 12

Adress 0h8000 0000 till 0hBFFF FFFF Sektionen B är i sin tur uppdelad i fyra delar om 256 Mbyte. De tre nedersta delarna är tillskrivna kontrollregistren för MPCM, SCM, PCM (de största blocken i processorn). Den översta delen ockuperas enbart av PCM:ens LCD- och DMA-hanterare. Adress 0hC000 0000 till 0hFFFF FFFF I den översta sektionen, A, finns DRAM-minnet placerat i fyra block. Varje block tillhandahåller 128 Mbyte av adresserbar yta och ska stödja både nutida och framtida minnesenheter. DRAM-hanteraren stödjer även CBR och self-refresh DRAM. Här finns ytterligare en sektion om 128 Mbyte som används för att förenkla snabba cacheflushar genom att inte kräva att en extern minnesåtkomst laddar in data i cachen. Att skriva till detta block ger ingen verkan. De resterande, och översta 384 Mbyte, är reserverade och alla försök att nå blocket kommer att resultera i undantaget data abort. Peripheral Control Module (PCM) För att kommunicera med och styra periferienheter har SA-1100 en periferienhetsbuss som styrs av en DMA med sex kanaler vilken fungerar som en inkörsport till mikroprocessorn. DMA:ns sex självständiga kanalerna kan alla hantera fyra asynkrona serieportar, vilka stöder olika serieportsprotokoll, samt en synkron serieport. Det finns även en LCD-hanterare som har en egen DMA-hanterare för att ta hand om displayer med storlekar upp till 1024x1024 pixlar. LCD-hanteraren har tre olika typer av displayer: Passive Color Mode som stödjer totalt 3375 möjliga färger Active Color Mode som stödjer upp till 65536 färger Passive Monochrome Mode vilken har 15 gråskalor LCD-hanteraren stöder STN samt TFT-skärmar. FIGUR 5 PCM-HANTERAREN 13

Serieportar SA-1100 tillhandahåller sex serieportar, fem av dessa använder sig av genuina serieportsgränssnitt medan den sjätte kan, via GPIO-pinnarna, representera en serieport. Via serieportarna kan mikroprocessorn kommunicera med externa gränssnitt. Serieport 0 På serieport 0 finns USB-bussens slavprotokoll implementerat, UDC, vilken stödjer 12 Mbps halv duplex. Serieport 0 kan ej tas över av PPC. Serieport 1 På SA-1100 serieport 1 kan antingen SDLC eller UART implementeras. Hastigheter upp till 230 Kbps stöds. Serieport 2 Via serieport 2 erhålls stöd för IrDA på antingen 115 Kbps eller 4 Mbps. Serieport 3 Den tredje serieporten på mikroprocessorn har stöd för UART med hastigheter från 56,24 bps till 230 Kbps. Serieport 4 På den sista serieporten finns stöd för både multimediakommunikation eller synkron serieportsöverföring via MCP/SSP. Via serieport 4 erhåller man gränssnitt mot bland annat tangentbord, pekskärmar och CODEC:s. Peripherial Pin Controller (PPC) SA-1100 erbjuder en PPC som kan ta kontroll över LCD-hanterarens pinnar (ben) samt serieport 1 till 4, detta leder till att användaren själv kan bestämma över och kontrollera önskade periferienheter. Då dessa ben hanteras av PPC:n fungerar de i stort som ett GPIO-ben, skillnaden blir dock att periferipinnarna inte kan utföra någon form av detektion av flanker eller generera avbrott. PPC-register Till sin hjälp har PPC fem register som når varje ben var för sig, se tabell 2 nedan. Adress(0h) Namn Registernamn Läs/skriv Beskrivning 9006 0000 PPDR PPC Pin Direction Write only Sätter ett periferiben som ingång eller utgång 9006 0004 PPSR PPC Pin State Read/Write Kontrollerar/sätter tillståndet för ett periferiben 9006 0008 PPAR PPC Pin Assignment Write only För kontroll av UART på serieport 0 och SSP på serieport 4 9006 000C PSDR PPC Sleep Mode Pin Direction Write only Hanterar PPC-benen vid sleeptillståndet för att spara ström 9006 0010 PPFR PPC Pin Flag Write only Bestämmer vilka ben som ska lyda under PPC TABELL 2 PPC-REGISTER 14

System Control Module (SCM) SCM kontrollerar ett antal generella systemfunktioner: GPIO, avbrottshanteraren, de två kristalloscillatorerna, resethanteraren samt spänningshanteringen. General-Purpose I/O SA-1100 erbjuder 28 GPIO-pinnar där användaren kan välja alla eller enbart vissa av GPIO-pinnarna för att nå den funktionalitet som krävs. Det är möjligt att generera avbrott på uppåt- och/eller nedåtgående flank för att ytterligare öka funktionaliteten. Alla pinnar kan agera in- eller utgångar, men efter en reset av processorn sätts pinnarna automatiskt till ingångar och kommer så att förbli till dess de uttryckligen sätts som utgångar. GPIO-register Det finns totalt åtta register för GPIO som alla når varje ben var för sig, se tabell 3. Adress(0h) Namn Registernamn Läs/skriv Beskrivning 9004 0000 GPLR Pin-Level Read only Kontrollerar ett bens tillstånd 9004 0000 GPDR Pin Direction Write only Sätter ett ben till in- resp. utgång 9004 0000 GPSR Pin Output Set Write only Sätter ett ben som är satt till utgång 9004 0000 GPCR Pin Output Clear Write only Rensar ett ben som är satt till utgång 9004 0000 GRER Rising-Edge Detect Write only Sätter ett ben att detektera nedåtgående flank 9004 0000 GFER Falling-Edge Detect Write only Sätter ett ben att detektera en uppåtgående flank 9004 0000 GEDR Edge Detect Status Read only Kontrollerar ett ben satt att detektera flankförändringar 9004 0000 GAFR Alternative Write only Sätter ett ben i ett alternativt tillstånd Funktion TABELL 3 GPIO-REGISTER Alla GPIO-pinnarna, förutom ben 1 och 2, har en alternativ funktion, dessa funktioner nås genom att sätta det motsvarande benet i GAFR-registret. Exempelvis fungerar ben 2 till 9 som LCD-hanterare då GAFR sätts, andra exempel på alternativa funktioner är mottagning respektive sändning via UART och sampling av externa klockpulser. Då ett ben försätts i det alternativa tillståndet kan benet ej användas som GPIO. Avbrottshanteraren Det finns två typer av avbrott som kan inträffa på en SA-1100, det ena är vanliga IRQ och den andra typen, kallat FIQ, är unik för ARM-arkitekturen. FIQ har högre prioritet än IRQ och kommer att tas om hand betydligt snabbare än vanliga IRQ:s och kan även avbryta ett pågående IRQ. Det finns två olika nivåer för att ta hand om ett avbrott, den första nivån talar om för användaren eller OS:et vilken modul som gett upphov till avbrottet medan den andra nivån berättar vilken händelse i den specifika modulen som flaggat avbrottet. Det finns 110 olika avbrott av den senare nivån. Det finns sex olika register ämnade åt avbrottshanteraren, två av registren hanterar IRQ-avbrott respektive FIQ-avbrott. 15

Realtidsklockan (RTC) Det finns en kristalloscillator på SA-1100 som genererar en frekvens på 32,768 KHz och det är genom den som RTC:n klockas. Efter ett hårdvarureset kommer RTC:n att nollställas och användaren måste själv ange det önskade värde på realtidsklockan. Realtidsklockan ger en noggrannhet på +/- 5 sekunder per månad och tillhandahåller fyra register som bland annat kan trimma RTC:n eller sätta olika alarm. OS-klockan (OST) Via kristalloscillatorn på 3,686 MHz erhålls OS-klockan, den är liksom RTC:n en 32-bitars timer, men till skillnad från realtidsklockan nollställs den inte vid reset. OS-klockan har fyra register varav det ena används specifikt som en watchdogtimer för att generera avbrott då mjuk- eller hårdvara hamnat i en okontrollerad loop. De resterande registren står disponibla som intervalltimrar eller som andra användardefinierade klocktimrar. Spänningshanteraren En viktig del i SCM är spänningshanteraren, den här delen kontrollerar övergången mellan tre olika inställningar; run-, idle- och sleepmode. Genom att använda idle och sleep reduceras SA-1100:as strömförbrukning då vissa funktioner inte behövs för tillfället. Det finns åtta olika register som kontrollerar och ser över de olika tillstånden. Run mode Det normala tillståndet för SA-1100 är run mode, det innebär att alla spänningskällor och klockor är igång samt att alla enheter fungerar tillfredställande. I de allra flesta, normala, fall kommer processorn att hamna i run mode vid start. Idle mode Det här tillståndet nås genom implementation i mjukvaran och tack vara ett SA-1100 är statisk kommer all CPU-information att sparas då processorn befinner sig i idle mode. Då processorn väcks upp med hjälp av ett avbrott kommer SA-1100 att fortsätta exakt på den plats där idle-tillståndet ingicks. Alla enheter kommer, tillsammans med externa minnen, att vakna upp som om ingenting har hänt och fortsätta med vad de höll på med. Sleep mode Sleep-tillståndet nås genom att två ben, som är satta till ingångar, indikerar att något fel uppstått på spänningstillförelsen, det går även att generera tillståndet via mjukvara. Genom att använda sig av kristalloscillatorn på 32,768 KHz kan sleep-tillståndet hålla koll på en eventuell wake-up händelse som gör att processorn vaknar till liv igen. Resethanteraren Systemkontrollmodulen har ytterligare en hanterare som bevakar olika former av reset på processorn. Resethanteraren tar reda på var de senast kända resetet inträffade oavsett om det var mjukvaran, hårdvaran, watchdogen eller sleep-tillståndet som genererade resetet. Det finns två register som hanterar de olika reseten. 16

Hårdvarureset Genom att använda nreset-pinnen går det att starta om alla enheter i SA-1100. Enheterna kommer då att försättas i ett definierat tillstånd. Mjukvarureset Ett mjukvarureset erhålls genom att en flagga i ett av resethanterarens register sätts. Vid en mjukvarureset kommer DRAM-minnet att bestå. Watchdog-reset Genom att sätta en flagga i ett av OS-klockans register kan SA-1100 försättas i detta reset. Ett reset av den här typen är likställd med ett mjukvarureset, men uppväckandet av processorn sker istället genom att en specifik flagga i OS-klockans register matchar OS-klockans timer. Sleep-reset Då mikroprocessorn försätts i sleep-tillstånd kommer ett sleep-reset att genereras. Ett sleep-reset kommer aldrig åt att nollställa realtidsklockan eller GPIO-wake-up-registret. Exempel initiera display Det exempel som följer visar hur de åtta första GPIO-pinnarna används för att användaren själv ska kunna kontrollera en display utan LCD-hanteraren. I exemplet nedan används ett antal definitioner hämtade ur SA1100.h (se Appendix C), //GPIO #define GPDR 0x90040004 //PPC #define PPDR 0x90060000 #define PPSR 0x90060006 #define PPFR 0x90060010 void enablelcd(void) { //sätter alla 28 GPIO-pinnar till utgångar GPDR = 0xfffffff; //tar kontroll över GPIO-pinnarna via PPFR PPFR = 0x01 (&PPFR && 0xfffffffE); //sätter de 8 första pinnarna som utgångar i PPDR (för LCD:n) PPDR = 0xFF (PPDR & 0xffffff00); }//enablelcd ----------------------------------------------------------------- TODO: Gör de inställningar som displayen kräver ------------------------------------------------------------------ Genom att sätta PPFR:s första bit till 1 kommer mikroprocessorns egen LCD-hanterare tas ur funktion och användaren kan själv styra displayen efter sina egna önskningar. 17

Framtiden Sommaren 2001 togs SA-1100 ur produktion och kom att ersättas av nästa medlem i Intel StrongARMfamiljen, SA-1110. SA-1110 Precis som SA-1100 är SA-1110 en 32-bitars RISC mikroprocessor med en 16 Kbyte instruktionscache och 8 Kbyte datacache. Instruktionsuppsättningarna för det två processorerna är identiska och även periferiuppsättningen är den samma. För jämförelse se tabell 4. SA-1100 SA-1110 Prestanda 150 Dhrystone 2,1 MIPS vid 133MHz 220 Dhrystone 2,1 MIPS vid 190MHZ 150 Dhrystone 2,1 MIPS vid 133MHz 235 Dhrystone 2,1 MIPS vid 206MHZ Kärnans spänningsförsörjning 133 MHz Vss = 0.0 V dc Vdd = 1,5 V dc ± 5% 190 MHz Vss = 0.0 V dc Vdd = 1,5 V dc ± 5% 133 MHz Vss = 0.0 V dc Vdd = 1,55 V dc ± 5% 206 MHz Vss = 0.0 V dc Vdd = 1,75 V dc ± 5% I/O spänningsförsörjning 133 MHz Vssx = 0.0 V dc Vddx = 3.3 V dc ± 10% 190 MHz Vssx = 0.0 V dc Vddx = 3.3 V dc ± 10% 133 MHz Vssx = 0.0 V dc Vddx = 3.3 V dc ± 10% 206 MHz Vssx = 0.0 V dc Vddx = 3.3 V dc ± 10% Typisk energiförlust (dock systemberoende) 133 MHz Normalt tillstånd = <240 mw Idle-tillstånd = <75mW Sleep-tillstånd = <50µA 190 MHz Normalt tillstånd = <400 mw Idle-tillstånd = <100W Sleep-tillstånd = <50µA 133 MHz Normalt tillstånd = <240 mw Idle-tillstånd = <75mW Sleep-tillstånd = <50µA 190 MHz Normalt tillstånd = <400 mw Idle-tillstånd = <100mW Sleep-tillstånd = <50µA Temperatur Min: 0 C Max: 70 C. Min: 0 C Max: 70 C Förvaringstemperatur -20 C till +125 C -20 C till +125 C Kapsel 208-pin LQFP 256 PBGA TABELL 4 JÄMFÖRELSE MELLAN SA1100 OCH SA1110 Det som skiljer mikroprocessorerna åt är framförallt MPCM. SA-1110 har dessutom möjlighet att utnyttja ett extrakort, Intel SA-1111 Companion Chip, som kompletterar SA-1110. SA-1111 tillhandahåller viktiga I/O gränssnitt som bärbara applikationer ofta kräver. Dessutom finns även en USB host-hanterare och direktanslutning till en AC-link. 18

Appendix A Källförteckning Intel 4004 SA-110 SA-1100 SA-1110 ARM Övrigt http://irobot.org/4004/hist.htm http://irobot.org/4004/i4004-77.pdf http://www.mitronet.com/chipdir/oth/strongarm.txt Intel StrongARM SA-1100 Microprocessor Developer s manual, augusti 1999 http://www.intel.com/design/pca/applicationsprocessors/1110_brf.htm http://www.hotchips.org/pubs/hc97/pdf_images/hc97_7c_slaton_2up.pdf http://www.bluewaternz.com/products/sa1110.htm http://www.intel.com/design/strong/applnots/27834101.pdf http://www.intel.com/design/pca/applicationsprocessors/1110_brf.htm http://www.altera.com/literature/third-party/ddi0100e_arm_arm.pdf www.arm.com http://www.arm.com/support/56vf7h/$file/armv6_architecture.pdf http://www.arm.com/aboutarm/587fb5/$file/arm+product+backgrounder.pdf http://www.arm.com/aboutarm/587fcb/$file/arm+corp+backgrounder.pdf http://wheelie.tees.ac.uk/users/a.clements/arminfo/armnote.htm http://www.lart.tudelft.nl/ http://www.pagina.se 19

Appendix B Ordlista 32-bitars arkitektur De versioner av ARM:s arkitektur som implementerar ett 32-bitars adressutrymme. Detta gäller för ARM-arkitekturer över version 3. AA batterier Arkitektur Amerikanskt förkortning för R6 batterier. Benämning på den organisatoriska uppbyggnaden i ett system vilken redogör för hur olika delar i systemet inbördes är kopplade till varandra samt hur delarna samverkar. ARM Ltd (Advanced RISC Machines Ltd.) Företag som utvecklar 32-bitars RISC arkitektur. Startades 1990 som Advanced RISC Machines Limited, 1998 byttes namnet till ARM Ltd. Bank Branch En logisk del av internminnet, är ett sätt att vid stora internminnen (RAM) dela upp minnet i mindre enheter. En instruktion i assembler som resulterar i ett hopp. CBR (Constant BitRate) Betyder konstant bithastighet. CISC (Complex Instruction Set Computing) Den traditionella benämningen på en processor som är betydligt kodsnålare än en RISCprocessor men upptar en större kiselyta. CISC-instruktionerna kan variera i längd och det finns ett stort antal instruktioner. CMOS (Complementary Metal Oxide Semiconductor) En familj av integrerade kretsar med har låg spänningsförlust. CODEC (COmpressor/DECompressor) En teknik för att komprimera och dekomprimera data. Kan finnas i hårdvara och/eller mjukvara. Vid telekommunikation betyder förkortningen coder/decoder och är den enhet som kodar eller avkodar en signal. Dhrystone En måttenhet för att mäta prestationsförmågan hos en processor. Visar inte alltid realtidsprestanda men är användbar för att jämföra hastigheter mellan olika processorer. Testet innehåller ett representativt antal typer av operationer, som används i vardagliga program, exempelvis stränghantering, dock inte flyttalsoperationer. Det slutgiltiga resultatet beräknas på hur lång tid testet tog att genomföra. Dhrystone är baserat på ursprungliga C Dhrystone 2.1 av Reinhold P. Weicker, Siemens AG. Digital Equipment Corporation Ett amerikanskt företag som tillverkar större (mini-)datorer. 20