PO=_áíJ^êÅÜáíÉâíìêÉå - weblearn.hs

Werbung
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
Herunterladen