PO=_áíJ^êÅÜáíÉâíìêÉå 32 Bit MicroController 16 Bit MicroController 8 Bit MicroController Dipl. Ing. Dieter Volland MicroConsult GmbH Rosenheimerstr. 143 b D-81671 München 49-89-45061766 [email protected] www.microconsult.de © 2002 MICROCONSULT Microelectonics Consulting & Training GmbH Page 1 1 PO=_áíJ^êÅÜáíÉâíìêÉå Hitachi SHx Infineon TriCore Motorola PowerPC Intel XScale ARM 7/9/10 Toshiba TX39 Intel StrongARM MIPS RISC Motorola ColdFire © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 2 2 PO=_áíJ^êÅÜáíÉâíìêÉå ê Fast Program Processing DSP Instruction Set Multiply Pipeline, ALU, Barrel Shifter, Multiply, DSP Register Set Instruction & Data Cache, Write Buffer ê Fast Context Switch Barrel Shifter Multiple Register Sets ê Fast Exception Handling Interrupt Control Unit ê Memory Management & Protection Debug Unit MMU& T Protection L B Unit Write Buffer WB M E D F Pipeline JTAG Alu F D E M F D E F D F Exception Handling I&D Cache Virtual Addressing-, Paging-Support ê Debug Unit Integrated Debug Features ê Powerful Instruction Set & Development Tools CPU, Instruction Set and Compiler are one unit © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 3 Fast Program processing: Befehle werden parallel in einer Pipeline ausgeführt. 3, 4, oder 5, je nachdem wieviele Stufen die Pipeline hat. Da wird addiert, subtrahiert, multipliziert, UND, ODER verknüpft, nach links, nach rechts geschoben, DSP Operationen, wie MAC durchgeführt. Damit die Pipeline effektiv arbeitet, muß sie kontinuierlich mit Befehlen versorgt werden. Ist die Taktfrequenz der CPU höher als die des Speichersystems, wird die Pipeline aus einem Cache mit Befehlen gefüttert. Daten werden aus Registern zur Verfügung gestellt. Fast Context Switch: Applikationen bestehen häufig aus mehreren Tasks, die quasi gleichzeitig ausgeführt werden. Jede Task hat ihren virtuellen Prozessor. Real bedeutet das u.a. einen eigenen Registersatz für jede Task. Fast Exception Handling: Die Zeitspanne zwischen Auftreten eines Ereignisses (Interrupts) und der Ausführung der ISR soll kurz sein. Sie hängt von dem Interrupt System (HW) und dem SW Overhead wie Retten von Registern, Verzweigung über Vektortabelle, usw. , ab. Memory Management und Protection: Große Programme auf einen kleinen Speicher abbilden, Schutz des Betriebssystems und der Tasks untereinander werden von der Memory Management Unit geregelt. Debug Unit: Integration von Testhilfen (interne Tests, BIST, Boundary Scan, Breakpoint Units) wird ab einem bestimmten Komlexitätsgrad erforderlich (SoC, applikationsspezifische Designs, hohe Taktfrequenz, Bondout Chip sind zu teuer. Zugriff heute über JTAG Test Access Port, in Zukunft evtl. über ein einheitliches Debug Interface (Arbeitstitel NEXUS). Powerful Instruction Set & Development Tools: Moderne RISC Architekturen haben einen elementaren, schnellen Befehlssatz, aus dem der Compiler ein optimales Programm generiert. Prozessor, Befehlssatz und Compiler bilden eine Einheit 3 PO=_áíJ^êÅÜáíÉâíìêÉå ê Small die size ê Low clock rate ê Simple logic ê Power management © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH DSP Instruction Set Multiply Register Set Barrel Shifter Debug Unit MMU& T Protection L B Unit F D E M F D E F D F WB M E D F Pipeline Alu JTAG ê Instruction Pipeline, Cache, ê Register Sets, Write Buffer ê Powerful Instruction Set ê Exception Handling ê Memory Management & Protection Unit ê Debug Unit, Floating Point Unit Write Buffer Exception Handling I&D Cache ê Standard Product ê ASSP ê ASIC Page 4 High Performance bedeutet viele Features, viele integrierte Gatteräquivalente und dadurch ein hoher Preis und viel Leistungsverbrauch Low Costs die Chipkosten sind direkt proportional zur Chipfläche -> wenig Logik. Das bedeutet aber wenig Performance. Also: Performance hat ihren Preis Low Power Consumption niedrige Taktfrequenz, kleine Chipfläche. Das bedeutet niedrige Performance Time to Market mit einem Standard-Produkt ist man sehr schnell auf dem Markt, ebenfalls mit einem ASSP, wenn‘s ein passendes gibt. Bei größeren Stückzahlen rentiert sich eventuell in der zweiten Version dann ein ASIC. Availability ist wichtig, vergessen Sie nicht zu fragen, ob überhaupt Chips auf dem Markt verfügbar sind. 4 PO=_áíJ^êÅÜáíÉâíìêÉå Parallel Instruction Processing in a 33-StageStage-Pipeline Cycle 1 2 3 4 Memory 5 Operation SUB AND LOAD XOR CMP BEQ Fetch: Fetch: Decode: Decode: Execute: Execute: r3,r4,r5 r6,r7,r3 r2,[r1] r9,r8,r10 r2,r6 equal Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Fetch Decode Execute Fetch Decode Fetch feed pipeline with instruction Pipeline Stall decode instruction, read operand register, check condition update instruction pointer in branch instructions execute instructions, update condition flags, write back result to register, address calculation for memory access for data read/write Pipeline Stall: For optimal pipelining each stage should perform its task in one cycle, otherwise pipeline must have more stages or pipeline must be stalled. stalled © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 5 Die 3-stufige Pipeline besteht aus den (nicht ganz) voneinander unabhängig arbeitenden Stufen fetch, decode, execute. Jede Stufe erledigt ihre Arbeit in einem Takt-Zyklus. Andernfalls müssen Warte-Zyklen (Pipeline Stalls) eingeführt werden. Es befinden sich immer 3 Befehle gleichzeitig in unterschiedlichen Stufen in Arbeit. In Cycle 3 wird die Adresse für den LDR-Befehl (Lade Register vom Speicher) berechnet, der XOR-Befehl dekodiert und der CMP-Befehl vom Speicher geholt. In Cycle 4 wird der Speicherzugriff für den LDR-Befehl durchgeführt, während dem die anderen Stufen einen Warte-Zyklus (Pipeline Stall) durchführen. Bei höheren Frequenzen wird die Bearbeitung eines Befehls auf 4, 5 oder mehr Stufen verteilt. 5 PO=_áíJ^êÅÜáíÉâíìêÉå Parallel Instruction Processing in a 55-StageStage-Pipeline Cycle 1 2 3 4 5 6 7 Operation MOV SUB LOAD AND OR r1,r8 r0,r2,r3 r6,[r9] r8,r1,r9 r4,r1,r6 Fetch Decode Execute Fetch Decode Execute Writeback Fetch Decode Execute Memory Fetch Decode Execute Fetch Decode Writeback 0perand Forwarding of R6 Writeback Writeback Execute Writeback Fetch: Fetch: Decode: Decode: feed pipeline with instruction decode instruction, read operand registers, check conditions update instruction pointer in branch instructions Execute: execute instructions, update condition flags Execute: Memory: memory access for data read/write Memory: Write Back: write back the result to register Operand Forwarding inside the pipeline on data dependency © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 6 Bei „höherstufigen“ Pipelines treten folgende Probleme auf: Mehrere Stufen benötigen gleichzeitig den Bus, z.B. eine Stufe holt einen Befehl, eine andere möchte einen Operanden aus dem Speicher lesen oder schreiben. Abhilfe: Harvard Architektur (separates Instruction und Data Interface). Ein Befehl benötigt Operanden, die grade aus dem Speicher geholt wurden, aber noch nicht in die Registerbank zurückgeschrieben sind. Abhilfe: Datenabhängigkeiten können dadurch gelöst werden, indem die Operanden innerhalb der Pipeline weitergereicht werden (Operand Forwarding), oder wenn möglich, die Reihenfolge der Befehle durch den Compiler geändert wird (Instruction Scheduling). Bei Programmverzweigungen wurde die Pipeline schon mit weiteren Befehlen gefüllt, die verworfen werden müssen. Abhilfe: siehe nächste Folie Bei einer SUPERSCALAR Architecture arbeiten zwei oder mehr Pipelines parallel. Es werden hohe Anforderungen an den Compiler gestellt, die Reihenfolge der Befehle muß passen, 6 PO=_áíJ^êÅÜáíÉâíìêÉå Parallel Instruction Processing in a 55-StageStage-Pipeline Cycle 1 2 3 4 5 6 7 Operation MOV LOAD SUB AND OR r1,r8 r6,[r9] r0,r2,r3 r8,r1,r9 r4,r1,r6 Fetch Decode Execute Fetch Decode Execute Writeback Memory Writeback Fetch Decode Execute Fetch Decode Execute Fetch Decode Writeback Writeback Execute Writeback Fetch: Fetch: Decode: Decode: feed pipeline with instruction decode instruction, read operand registers, check conditions update instruction pointer in branch instructions Execute: execute instructions, update condition flags Execute: Memory: memory access for data read/write Memory: Write Back: write back the result to register Instruction Scheduling (instruction reordering) by the compiler on data dependency © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 7 Istruction Scheduling Die Reihenfolge der Befehle wird unter Berücksichtigung von Datenabhängigkeiten vom Compiler oder Assembler pipelinegerecht geändert. 7 PO=_áíJ^êÅÜáíÉâíìêÉå Branch Instructions in a Pipeline If a branch is taken pipeline must be reloaded with instructions from branch target address. Steps to avoid performance penalty: Hardware: BranchBranch-Prediction Mechanism, Mechanism, BranchBranch-TargetTarget- Buffer, BranchBranch-Delay Compiler: fill in DelayDelay-Slots with instructions, instructions, LoopLoop-Unrolling, Unrolling, IfIf-Conversion Address Operation 0x0FF4 0x0FF8 0x0FFC 0x1000 0x1004 0x1008 0x2000 0x2004 0x2008 AND OR SUB branch x xx AND OR CMP Delay Slots r8,r7,r4 r8,r3,r5 r12,r10,r11 Fetch Decode Execute 0x2000 Fetch Decode Fetch r2,r1,r4 r2,r1,r5 r2,r6 Fetch Decode Execute Fetch Decode Execute Fetch Decode Fetch © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 8 Branch Prediction (Hardware) Jeder Sprungbefehl befindet sich in einem von 4 Zuständen: strongly taken, weakly taken, weakly not taken, strongly not taken Branch Target Buffer (Hardware) Ein oder zwei Befehle von der Zieladresse werden in einem Puffer gespeichert. Wenn der Sprung ausgeführt wird, wird der Befehl vom Puffer direkt in die Decode Unit eingeschleußt Branch Delay (Compiler) Da Befehle nach dem Sprung immer in die Pipeline eingelesen werden, kann man diese Slots mit passenden Befehlen von Positionen vor dem Sprung Befehl auffüllen. Loop Unrolling (Compiler) Die Anzahl der Verzweigungen bei Loops kann durch Zusammenfassen des Loop-Körpers zu größeren Blöcken reduziert werden. If Conversion (Compiler) Bedingte Befehle für if-Statement benutzen und dadurch Sprungbefehle vermeiden 8 PO=_áíJ^êÅÜáíÉâíìêÉå Register Organization Flat Register Set Register Bank supervisor fast interrupt R15 R15 R15 R14 R13 R12 R14 R13 R12 R14 R13 R12 R11 R10 R11 R10 R11 R10 R9 R8 R9 R8 R9 R8 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 pc status pc status saved status R15 R14 R13 R12 R11 R10 R9 R8 R7 © 2002 M user ICROCONSULT Microelectonics Consulting & Training GmbH saved status Page 9 Flat Register Set: 16 oder 32 Register a‘ 32 Bit, je mehr desto besser, weil mehr Operanden im direkten Zugriff sind. Bei Context Switch oder Interrupt müssen Register im Speicher gerettet werden. Register Bank: Verschiedene Betriebsarten (z.B. Application, System, Fast Interrupt) haben einen eigenen Register Set. Dadurch schneller Context Switch (Interrupt) durch Register Bank Umschaltung. 9 PO=_áíJ^êÅÜáíÉâíìêÉå Register Organization Flat Register Set Register Bank user Register Windows supervisor fast interrupt R15 R15 R15 R15 R14 R13 R12 R14 R13 R12 R14 R13 R12 R14 R13 R12 R11 R10 R9 R11 R10 R11 R10 R11 R10 R9 R8 R9 R8 R9 R8 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 R7 R6 R5 R4 R3 R2 R1 R0 pc status pc status saved status R8 R7 © 2002 M Window 7 R255 Window 6 Window 5 Window 1 Window 0 ICROCONSULT Microelectonics Consulting & Training GmbH saved status R0 Page 10 Register Bank: Verschiedene Betriebsarten (z.B. Application, System, Fast Interrupt) haben einen eigenen Register Set. Dadurch schneller Context Switch (Interrupt) durch Register Bank Umschaltung. Eventuell werden nicht alle Register umgeschalten, sondern nur einige neue Register einblenden. Register Windows: Überlappende Register Fenster. Einfache Parameter Übergabe und Rückgabe. Bei einem Context Switch wird der Pointer auf ein neues Register Fenster gestellt. 10 PO=_áíJ^êÅÜáíÉâíìêÉå Powerful Instruction Set (RISC) ê Uniform 32 Bit instruction format for high performance and easy decoding ê All 32 Bit instructions are conditional (Compiler support for if conversion) 31 0 cond Opcode operand1 operand2 operand3 ê Instruction Subset available as 16 Bit format (for best code density) 15 Opcode 0 operand1 operand2 ê Load/Store architecture, no memory operands in data processing instructions ê Multiply and Accumulate (MAC) instructions for DSP operations ê Bit reverse and modulo addressing modes for DSP operations © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 11 Einheitliches Befehlsformat, 32 Bit, ist einfach zu dekodieren, es vereinfacht die Pipeline Logik. Meistgebrauchten Befehle sind als 16 Bit Befehle implementiert (best Code Density) Load/Store Architektur heißt: keine Memory operanden, sondern nur Registeroperanden in den Befehlen. Die Operanden werden mit dem Load Befehl vom Speicher in Register gelesen oder mit dem Store Befehl von Registern zum Speicher geschrieben. Conditional Instructions werden (genau wie bedingte Sprünge) nur ausgeführt, wenn die im Befehl angegebene Bedingung (Carry Flag, Zero Flag, Sign Flag, Overflow Flag) erfüllt ist. Sie werden vom Compiler u.a. für das If Statement benutzt (if Conversion). DSP Operationen erfordern spezielle schnelle Multiplizieroperationen und Adressierungsarten, die die Operanden zur Verfügung stellen. MAC Instructions werden zur Realisierung digitaler Filter (IIR, FIR) und zur FFT, Fast Fourier Transformation, benutzt. Bit Reverse Addressierungsart unterstützt die FFT. Modulo Adressierung zur Realisierung von Ringspeichern. 11 PO=_áíJ^êÅÜáíÉâíìêÉå Cache Organization: Organization: 1st Level, Level, 2nd Level ê If memory system clock speed is slower than CPU Clock, a cache for instructions and data is required. DSP ê 1st level cache on-chip, for more complex Register Set applications additional 2nd level cache off-chip Memory 128MB © 2002 M MMU& T Protection L B Unit ICROCONSULT Microelectonics Consulting & Training GmbH F D E M F D E F D F Write Buffer WB M E D F Pipeline Debug Unit 2nd Level cache, 2nd Level cache is subset of memory 2nd Level Cache 256KB Barrel Shifter Alu JTAG ê 1st Level Cache is subset of Instruction Set Multiply Exception Handling I&D Cache 4/8/16/32K Page 12 Arbeitet die CPU mit einer höheren Taktfrequenz als das Speichersystem, braucht man einen Cache, um die Pipeline ohne Verzögerung mit Befehlen zu „füttern“. In der Regel ist dies ein integrierter Cache von 4K, 8K oder 16K für Befehle und Daten oder getrennt für Befehle und Daten. Wird in komplexeren Applikation ein größerer Cache benötigt, so kann man extern einen sogenannten 2nd Level Cache anschalten. Die CPU stellt ein Interface für einen externen Cache Controller zur Verfügung Der integrierte Cache ist der 1st Level Cache. Bei mehrstufigen Cache Systemen, vor allem wenn mehrere Bus Master im System sind, ist ein aufwendiges Protokoll (HW und SW) erforderlich, um die Cache Kohärenz zu erhalten. D.h. sicherzustellen, daß unter allen Umständen das aktuelle Datum gelesen wird Ein bekanntes Protokoll zur Erhaltung der Cache Kohärenz ist das MESI Cache Kohärenz Protokoll (Modified, Exclusive, Shared, Invalid) 12 PO=_áíJ^êÅÜáíÉâíìêÉå Direct Mapped or Fully Associative Cache ê In a direct mapped cache, memory locations must share cache locations depending on their offset. Memory ê In a fully associative cache, memory locations can be stored everywhere in the cache, independent of offset in memory address 0001 8000 address 0001 8000 Fully associative Cache 64KByte Tag RAM Cache Data RAM 128KByte 0001FFFF 64KByte 0000FFFF Direct mapped Cache 64KByte Tag RAM 00010000 Cache Data RAM 0001 00008000 00010000 00018000 00000000 © 2002 M 00000000 0000 ICROCONSULT Microelectonics Consulting & Training GmbH 4 or 8 Words Page 13 Ein Cache kann „direct mapped“ oder „fully associative“ organisiert sein. Bei direct mapped Caches wird mit dem niederwertigen Teil der Adresse die dem Offset entsprechende Cache Zeile adressiert. Der Tag Wert der Zeilen wird mit dem vorderen Teil der Adresse verglichen. Wenn eine Übereinstimmung besteht wird gelesen oder geschrieben. Direct mapped Caches benötigen wenig Logik, da das Tag RAM (relativ) klein und die Controller Logik einfach ist. Direct Mapped ist dafür aber unflexibel in der Speicherung der Einträge. Bei fully associative Caches kann das Datum überall gespeichert werden, da die Adresse mit gespeichert wird. Fully associative Caches benötigen viel Logik, da das Tag RAM groß und die Controller Logik komplex und umfangreich sind. Es müssen alle Tag RAM Einträge mit dem Tag Teil der Adresse vom Adreßbus verglichen werden. Fully associative ist dafür aber flexibel in der Speicherung der Einträge. 13 PO=_áíJ^êÅÜáíÉâíìêÉå One Way, Two Way, Four Way, ... Direct Mapped Cache Start: Four Way Start: Two Way Program ICROCONSULT Microelectonics Consulting & Training GmbH Program Program © 2002 M Start: One Way Page 14 Mehr-Wege Direct Mapped Cache Programme haben ein Aktivitätszentrum. Wenn dieses Aktivitätszentrum in den Cache paßt, hat man eine Trefferrate (hitrate) von 95%, vorausgesetzt natürlich, das Programm hält sich dort zu 95% auf. Gibt es mehrere Aktivitätszentren, so splittet man den Cache in mehrere Wege. Controller-Applikationen sind meistens ereignisgesteuert, wobei sich hinter jedem Ereignis eine kleine Programm Routine befindet. Da ist es vorteilhaft, mehrere Wege zu haben. Beim Mehr-Wege direct mapped Caches wird mit dem niederwertigen Teil der Adresse die dem Offset entsprechende Cache Zeile in allen (2, 4, 8, ...) Sets (auch Segmente genannt) adressiert. Der Tag Wert dieser Zeilen wird mit dem vorderen Teil der Adresse verglichen. In dem Weg, wo eine Übereinstimmung besteht wird gelesen oder geschrieben. 14 PO=_áíJ^êÅÜáíÉâíìêÉå Set Associative Cache Memory 32 Bit Virtual Address Tag Segment 31 2KByte 2KByte 8 7 2KByte 2KByte 2KByte 2KByte Word Byte 5 4 2KByte 2 1 0 2KByte 63 0 Tag Tag Tag Tag Tag Tag Tag Tag Lines of 8 Words © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 15 Set Associative Cache Beim Mehrwege set associative Caches bestimmt ein Teil der Adresse in welchem Set (Segment) eingetragen oder gelesen wird (innerhalb des Sets kann das Datum überall gespeichert werden, fully associative). Es müssen dann nur alle Tags dieses einen Sets mit dem vorderen Teil der Adresse verglichen werden. Cache Lockdown Zeilen in den Segmenten können verriegelt werden, sie werden dann nicht überschrieben (nehmen nicht am „Replacement“ teil).. Ein Pointer kann für alle Segmente auf einenWert zwischen 0 und 63 eingestellt werden, oder für ein einzelnes Segment. Ab der Zeile werden Cache lines überschrieben (nehmen am „Replacement“ teil). 15 PO=_áíJ^êÅÜáíÉâíìêÉå Write Through, Through, Write Back, Write Buffer Update of cached memory locations on write access can be done by: DSP Write through: through: cache and memory are updated (delay through waitstates). Write buffer stores address and data with CPU speed and updates memory with memory speed. Register Set Barrel Shifter Debug Unit MMU& T Protection L B Unit F D E M F D E F D F Write Buffer WB M E D F Pipeline Alu JTAG Write back: back: only the cache is updated and entry is marked dirty. Update of cached memory location only on cache line refill to dirty line. Instruction Set Multiply Exception Handling I&D Cache 4/8/16/32K Memory 128MB © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 16 Bei Instruction Fetch oder Daten Lesezugriffen wird bei einem Hit aus dem Cache gelesen, bei einem Miss wird von Memory gelesen und auch ein Cache Eintrag vorgenommen. Bei Daten Schreibzugriffen auf ein „gecachtes“ Datum muß dafür gesorgt werden, dass bei einem Cache Line Refill dieses Datum nicht überschrieben wird,. Es muß erst im Speicher „upgedatet“ werden. Bei write through wird bei Schreibzugriffen grundsätzlich auch der Speicher upgedatet. Das verzögert den Programmablauf durch langsame Speicherzyklen. Aber die Cache Controller Logik ist einfach. Bei Write back wird nur der Cache beschrieben und der Eintrag als dirty gekennzeichnet. Soll in diese Zeile ein anderer Eintrag vorgenommen werden, macht die cache Logik zuvor ein update des Speichers. Der Programmablauf wird weniger durch langsame Speicherzyklen verzögert, aber die Cache Controller Logik ist komplex. Damit das Updaten des Speichers den Programmablauf nicht verzögert, geht der Schreibzugriff mit Prozessorgeschwindigkeit in den Write Buffer, der Adresse und Datum speichert und mit Speichergeschwindigkeit den Update durchführt, während die CPU mit ihrer Taktfrequenz weiterarbeitet. 16 PO=_áíJ^êÅÜáíÉâíìêÉå Memory Management & Protection Unit Virtual Address Space Physical Memory 4GB Task C Task C MMU Task B FLASH TLB OS Task B Task A Task A ICROCONSULT Microelectonics Consulting & Training GmbH OS code A code B code C code RAM OS data A data B data OS © 2002 M ROM OS code C code 0 Page 17 Moderne Applikationen bestehen aus mehreren Tasks und werden von einem Betriebsystem verwaltet. Applikationen und Betriebsystem befinden sich Seite an Seite im physikalischen Speicher. Sie müssen gegeneinander geschützt werden. Um dies zu realisieren adressiert die CPU Programme und Daten im virtuellen 4 Gbyte Adreßraum. Die Umsetzung von virtueller nach physikalischer Adresse geschieht mit Hilfe von Paging durch die Memory Management Unit. Durch Paging werden auch die Protection Mechanismen realisiert. 17 PO=_áíJ^êÅÜáíÉâíìêÉå Memory Management, Virtual Addressing, Addressing, Paging Virtual Address Space Physical Memory 4G Mass Storage Process y Virtual Address MMU Physical Address 16MB Program x Program y TLB Process x Page 0 ê Programs (processes) are stored on mass storage ê CPU addresses programs in its 4GB virtual address space ê Each process has it‘s own virtual address space ê MMU loads programs page-wise to physical memory ê MMU maps virtual address to physical address 0 © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 18 Moderne CPUs können große oder viele Programme, bis zu 4 GB, adressieren. Der vorhandene tatsächliche Speicher ist in der Regel wesentlich kleiner. Es gilt nun, die großen oder vielen Programme auf diesen kleinen Arbeitsspeicher abzubilden. Programme (auch Prozesse genannt) befinden sich auf einem Hintergrundspeicher, Hard Disk oder PC Card und werden bei Bedarf zur Ausführung in den Arbeitsspeicher geladen. Sie werden aber nicht komplett, sonder nur teilweise, in sogenannten Pages in den Speicher geladen. Eine Page kann 1K, 4K oder auch 16K groß sein. Jedes Programm (Prozeß) hat seinen eigenen Adreßbereich innerhalb der 4 GB. Kommt ein Programm zur Ausführung, muß die MMU die benötigten Teile (Pages) in den Arbeitsspeicher laden, wobei die physikalische Adresse, wo die Pages hingeladen werden, unabhängig von deren Adresse im virtuellen Adreßraum ist. Die CPU adressiert die Programme im 4 GB großen virtuellen Adreßraum und die MMU hat die Aufgabe, die virtuellen Adressen in die entsprechenden physikalischen Adresse umzuwandeln. 18 PO=_áíJ^êÅÜáíÉâíìêÉå Memory Management Unit, Unit, Paging, Paging, Address Translation The Table Base is stored in a MMU register, Translation Table and Page Tables are stored in memory. Once translated, addresses are stored in TLB. Physical Memory VA Page Table virtual physical Page Base 16k Page Page Base 4k Page Pointer Page Table Base Page Table TLB Translation Table Pointer Pointer Page Table Base MMU Table Base © 2002 M Pointer Pointer ICROCONSULT Microelectonics Consulting & Training GmbH Section Base 1 MB Section Page 19 Die Umwandlung der virtuellen Adresse in die physikalische Adresse geschieht in mehreren Stufen anhand von Tabellen, die ebenfalls im physikalischen Speicher vorhanden sein müssen. Diese mehrstufige und zeitaufwendigeUmwandlung muß nur für den ersten Zugriff auf eine Page gemacht werden, weitere Zugriffe werden ohne Verzögerung über den TLB umgewandelt. In der Translation Table stehen Pointer auf die die Page Tabellen. In den Page Tabellen stehen Pointer auf die Pages. 19 PO=_áíJ^êÅÜáíÉâíìêÉå Memory Protection, Protection, Access Attributes in Page Tables The table entries contain the access attributes: ê base address of page or region ê access rights (fetch, read, write) ê user/supervisor MMU Physical Memory Page Table TLB Page Base 16k Page virtual physical Page Table Base Page Table Table entries of the current application are loaded into the MMU‘s Translation Lookaside Buffer, TLB. Translation Table Page Base 4k Page Page Table Base Table Base © 2002 M Section Base 1 MB Section ICROCONSULT Microelectonics Consulting & Training GmbH Page 20 Die Einträge in den Tables enthalten neben Adreßzeigern auch Zugriffsrechte auf die jeweilige Page, womit die Zugriffsrechte auf die jeweilige Page bestimmt werden. Paging wird auch mit eins zu eins (virtuelle ist gleich physikalische Adresse) mapping angewandt, um die Zugriffsrechte zu realisieren. 20 PO=_áíJ^êÅÜáíÉâíìêÉå Memory Protection, Protection, Access Attributes in Registers MMU Registers contain the access attributes: Memory MMU Registers code Data Sections Instr. Sections 0 ..7 0 ..7 7 7 data stack 0 0 MMU © 2002 M stack stack data code ICROCONSULT Microelectonics Consulting & Training GmbH Sections, Regions, Segments ê base address and length ê access rights (fetch, read, write) ê user/supervisor Page 21 Ein für viele embedded Applikationen ausreichendes Konzept, sind Protection Register in der MMU, die Anfangsadresse, Länge und Zugriffsrechte auf einen Speicherbereich enthalten. 21 PO=_áíJ^êÅÜáíÉâíìêÉå Memory Exception Handling Exceptions sychronous to program flow ê Exception on: ISRn - undefined opcode - divide by zero - memory protection violation - software interrupt ISR1 © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH ISR0 Interrupt Vector Table ê Vector in Interrupt Vector Table assigned to each exception ê On exception CPU fetches corresponding vector ê Vector is branch to interrupt service routine, ISR Vector n Vector 1 Vector 0 Page 22 Exceptions sind Ausnahmesituationen, die synchron zum Programmablauf auftreten können, wie z.B. undefined opcode, divide by zero, software interrupts oder Zugriffsrechteverletzungen bei Speicherzugriffen. Die meisten Architekturen haben eine Interrupt Vektor Tabelle mit bis zu 256 Vektoren, die den Exceptions zugeordnet sind. Die Vektoren sind Zeiger auf die zugehörige Interrupt Service Routinen. Tritt eine Exception auf, holt die CPU automatisch den entsprechenden Vektor aus der Tabelle und verzweigt zu der Service Routine. 22 PO=_áíJ^êÅÜáíÉâíìêÉå Exception Handling Asynchronous Exceptions, Exceptions, external events Memory IRx ê Fast Interrupt Request Pin, FIQ, assigned to fixed FIQ handler address ISRn ê Interrupt Request Pin, IRQ, for external interrupts, assigned to vector IRQ b IRx ISR1 in interrupt vector table ê Interrupt controller conected to IRQ pin ê Prioritization done by interrupt controller IR0 FIQ FIQ Interrupt Controller Vector n IRQ IR7 © 2002 M ISR0 Vector IRQ Vector 1 Vector 0 ICROCONSULT Microelectonics Consulting & Training GmbH Interrupt Vector Table or per software in IRQ handler CPU Page 23 Für externe events stehen Interrupt Anschlüsse zur Verfügung. Meistens einer für schnelle Interruptbehandlung, FIQ, der die höchste Priorität hat, nicht maskierbar ist und einer direkten Einsprungadresse für den Handler zugeordnet hat. Mindestens ein Anschluß, IRQ, ist für weitere Interrupts vorhanden. Dieser Anschluß kann direkt genutzt werden, auch ihm ist ein Vektor zugeteilt. Bei mehr als einer Interruptquelle kann ein Interrupt Controller mit mehreren Anschlüssen am IRQ angeschaltet werden. Der Interrupt Controller kann sehr einfach sein. Er leitet anstehende Interruptanforderungen zur CPU weiter, die über den Vektor, der dem IRQ Anschluß zugeordnet ist, in einen Handler verzweigt. In diesem Handler muß aus dem Interrupt Controller gelesen werden, welcher Anschluß den Interrupt angefordert hat. Bei mehreren gleichzeitg aufgetretenen Anforderung muß eine Priorisierung vorgenommen werden und dann in die entsprechende Service Routine verzweigt werden. Ein komplexerer Interrupt Controller leitet nur die höchstpriore Anforderung zur CPU und stellt in einem Register die Einsprungadresse der zugehörigen Service Routine zur Verfügung. Bei der Initialisierung dieses Interrupt Controllers muß für jeden Anschluß eine Adresse programmiert werden. 23 PO=_áíJ^êÅÜáíÉâíìêÉå Debug Support Debug support is provided by: ê Integrated Macrocells for In-Circuit Emulation and Trace Support ê Interface via Trace Port and JTAG (in the future NEXUS?) • • • • to specify breakpoints to examine registers to examine memory to get trace information Scan Chains CPU Control Register Address F D E F D E Data F D E Host © 2002 M Protocol Converter JTAG ICE&Trace Macrocell NEXUS ICROCONSULT Microelectonics Consulting & Training GmbH Page 24 Die Integration von Testhilfen (interne Tests, BIST, Boundary Scan, Breakpoint Units) wird ab einem bestimmten Komlexitätsgrad erforderlich (SoC, applikationsspezifische Designs, hohe Taktfrequenz, Bondout Chip zu teuer, usw.). Über das JTAG Test Access Port können mehrere Scan Chains angesprochen werden. (JTAG, Joint Test Action Group, IEEE1149.1) Über einen Scan Chain können in der ICE Macrocell Breakpoints programmiert werden. Für die Zukunft soll ein einheitliches Debug Interface (Arbeitstitel NEXUS) geschaffen werden. Um eine Trace Aufzeichnung von einem Programm zu bekommen, wäre eine weitere Macro Cell erforderlich (Trace Macrocell), die intern die Daten aufzeichnet, aufbereitet und komprimiert über ein spezielles Interface nach draußen gibt. 24 PO=_áíJ^êÅÜáíÉâíìêÉå Time to Market: Market: Standard Product, Product, ASSP, ASIC MMU& T Protection L B F D E F D E F D E Write Buffer DSP Exception Handling ROM I&D Cache RAM Peripheral FPU DMA Peripheral rid Bus Interface © 2002 M I/O ge Debug Unit Breakpoint/ Watchpoint Pipeline JTAG Alu System Bus ICROCONSULT Microelectonics Consulting & Training GmbH B Register Peripheral Peripheral Bus DSP Multiply BarrelShifter Page 25 Nachdem die Leistungsmerkmale des Controllers bekannt sind, muß der Umfang des Speicherbedarfs und der Peripherie festgelegt werden. Unter Berücksichtigung von Time to Market Performance Power Consumption Costs muß entschieden werden, ob ein Standard Controller die Anforderungen erfüllt, oder ein ASSP auf dem Markt verfügbar ist, oder ob ein eigenes ASIC Design vorteilhaft ist. Alle Komponenten des Systems (CPU, Peripherals, integriertes Bussystem) werden als IPs (Intelectual Properties) angeboten, aus denen ein SoC, System on a Chip, designed werden kann. 25 PO=_áíJ^êÅÜáíÉâíìêÉå ASIC, Standard Product, Product, ASSP Standard Product Application Specific Integrated Circuit SP ASIC CPU, Memory, Peripherals (FPGA, GateArray, Cellbased IC) $ Application Specific Standard Product standard product / ASSP FPGA gate array standard cell ASSP for Mobile Communications Telecommunications Portable Computing Consumer Multimedia Embedded Control Composed of Intellectual Properties, IPs volume © 2002 M ICROCONSULT Microelectonics Consulting & Training GmbH Page 26 26