Site affiché en Français Voir le site en English (USA) Voir le site en English (GB)
Vous êtes ici: ac6 > ac6-training > ARM cores > Cortex-A15 implementation
Télécharger le catalogue
Télécharger le catalogue
Télécharger la page
Télécharger la page
Ecrivez nous
Ecrivez nous
Version imprimable
Version imprimable
 

RA3 Cortex-A15 implementation

This course covers Cortex-A15 high-end ARM CPU


formateur
OBJECTIVES
bullet_jaune_1 his course is split into 3 important parts:
bullet_jaune_2 Cortex-A15 architecture
bullet_jaune_2 Cortex-A15 software implementation and debug
bullet_jaune_2 Cortex-A15 hardware implementation.
bullet_jaune_1 Introduction to Hypervisor new privilege mode is done at the beginning of this course.
bullet_jaune_1 The consequences on address translation is then explained, introducing the 2-stage translation.
bullet_jaune_1 Decoupling guest OS from hardware using traps to Hypervisor is studied.
bullet_jaune_1 The course also details the new features of the Generic Interrupt Controller v2, explaining how physical interrupt requests can be virtualized.
bullet_jaune_1 The course details the new approach regarding integrated timers / counters.
bullet_jaune_1 AXI v4 new capabilities are highlighted with regard to AXI v3.
bullet_jaune_1 Through sequences involving a Cortex-A15 and a Cortex-A7, the hardware coherency is studied, explaining how snoop requests can be forwarded by CCI-400 interconnect.
bullet_jaune_1 Implementation of I/O MMU-400 is also covered.
Labs are run under RVDS.

A more detailed course description is available on request at info@ac6-training.com
PREREQUISITES AND RELATED COURSES
bullet_jaune_2 Knowledge of Cortex-A9.
bullet_jaune_2 More than 12 correct answers to Cortex-A prerequisites questionnaire.

bullet_jaune_2 Related courses:
bullet_jaune_3 Programming with RVDS IDE,reference RV0
bullet_jaune_3 VFP programming, reference RC0
bullet_jaune_3 NEON programming, reference RC1
.

Plan
First day
OVERVIEW OF CORTEX-A15MP
bullet_jaune_2 Cortex-A15 architecture
bullet_jaune_2 Organization of a SoC based on Cortex-A15MP
bullet_jaune_2 AMBA4 coherent interconnect capabilities
bullet_jaune_2 Inner Shareable vs Outer Shareable attribute
bullet_jaune_2 I/O MMU
bullet_jaune_2 64-Byte cacheline size, integrated L2 cache
bullet_jaune_2 VFPv4 and SIMDv2
bullet_jaune_2 Highlighting differences between Cortex-A9 and Cortex-A15
INSTRUCTION PIPELINE
bullet_jaune_2 Global organization, triple issue capability
bullet_jaune_2 Fetch / decode / rename / dispatch stages
bullet_jaune_2 Loop mode
bullet_jaune_2 Execution clusters
bullet_jaune_2 Out-of-order execution, 40-entry dispatch queue
bullet_jaune_2 Branch accelerators
INTRODUCTION TO HYPERVISOR STATE
bullet_jaune_2 Processor privilege levels state machine, user, guest OS, hypervisor
bullet_jaune_2 Detailing the various operation modes (Bare-Metal, Hypervisor kernel and user task, Hypervisor with Guest partition)
bullet_jaune_2 Asymmetric approach, no support for Virtualization of Secure state functionality
bullet_jaune_2 SVC, HVC and SMC instructions
bullet_jaune_2 Objective of the Hypervisor
bullet_jaune_2 Hypervisor related instructions and registers
bullet_jaune_2 List of registers that have to be saved / restored to be able to suspend / resume a guest partition
bullet_jaune_2 Accessing banked registers or any Non-Secure mode while running in Hypervisor mode
EXCEPTION MECHANISM
bullet_jaune_2 Hypervisor vector table
bullet_jaune_2 Utilization of Vector #5 to trap Guest partition events
bullet_jaune_2 System Call into Hypervisor mode
bullet_jaune_2 Asynchronous exceptions
bullet_jaune_2 Virtual Interrupt and Abort bits control, IRQ, FIQ, external abort routing control
bullet_jaune_2 Hypervisor exception return
bullet_jaune_2 Taking exceptions into Hypervisor mode
GENERIC INTERRUPT CONTROLLER (GICv2)
bullet_jaune_2 Integration in a SoC based on Cortex-A15MP and Cortex-A7MP
bullet_jaune_2 Highlighting the new features with regard to Cortex-A9MP
bullet_jaune_2 Steering interrupts to guest OS or Hypervisor
bullet_jaune_2 Virtual CPU interface
bullet_jaune_2 Split EOI functionality
bullet_jaune_2 Deactivating an interrupt source from the Virtual CPU interface
bullet_jaune_2 Front-end interface accessed by the Guest Kernel
bullet_jaune_2 Back-end interface accessed by the Hypervisor
Second day
VIRTUALIZATION EXTENSIONS
bullet_jaune_2 New Intermediate Physical Address, 2-stage address translation
bullet_jaune_2 Memory translation system
bullet_jaune_2 Memory management when running in hypervisor mode
bullet_jaune_2 Virtual Machine Identification
bullet_jaune_2 Exposing the MMU to Other Masters, IO MMU
bullet_jaune_2 Emulation support, trapping load and store and executing them in Hypervisor state
bullet_jaune_2 Second-stage access permissions and attributes
LARGE PHYSICAL ADDRESS EXTENSIONS SPECIFICATION (LPAE)
bullet_jaune_2 Need to introduce support for a second stage of translation as part of the Virtualization Extensions
bullet_jaune_2 New 3-level translation
bullet_jaune_2 Level-1 table descriptor format
bullet_jaune_2 Level-2 table descriptor format
bullet_jaune_2 Attribute and Permission fields in the translation tables
bullet_jaune_2 Improving the caching of translation entries by providing contiguous hints
bullet_jaune_2 complete set of cache allocation hints
bullet_jaune_2 Handling of the ASID in the LPAE
bullet_jaune_2 New cache and TLB maintenance operations
MMU IMPLEMENTATION
bullet_jaune_2 TLB organization, L1-TLB, L2-TLB
bullet_jaune_2 TLB match process
bullet_jaune_2 Coherent table walk
bullet_jaune_2 Determining the exact cause of aborts through status registers
bullet_jaune_2 Behavior when MMU is disabled
OS SUPPORT – SYNCHRONIZATION OVERVIEW
bullet_jaune_2 Inter-Processor Interrupts
bullet_jaune_2 Barriers
bullet_jaune_2 Cluster ID
bullet_jaune_2 Exclusive access monitor, implementing Boolean semaphores
bullet_jaune_2 Global monitor
bullet_jaune_2 Spin-lock implementation
bullet_jaune_2 Using events
bullet_jaune_2 Indicating the effect of Multi Core on debug interfaces
Third day
LEVEL ONE SUBSYSTEM
bullet_jaune_2 Physically Indexed Physically Tagged caches
bullet_jaune_2 LRU replacement algorithm, implementation with a 2-way cache
bullet_jaune_2 Speculative accesses
bullet_jaune_2 Hit Under Miss, Miss under Miss
bullet_jaune_2 Write streaming threshold definition
bullet_jaune_2 Uploading the contents of L1 caches through dedicated CP15 registers
bullet_jaune_2 MESI data cacheline states
LEVEL TWO SUBSYSTEM
bullet_jaune_2 Cache organization
bullet_jaune_2 Strictly enforced inclusion property with L1 data caches, simplification of snooping
bullet_jaune_2 Optional ECC / parity protection
bullet_jaune_2 Impact of registers slices on performance
bullet_jaune_2 L2 prefetch engine
bullet_jaune_2 Table walk access prefetch
bullet_jaune_2 ACE master interface
bullet_jaune_2 ACP slave interface
bullet_jaune_2 By means of sequences involving a multi-core Cortex-A15 and external masters, understanding how snoop requests can be used to maintain coherency of data between caches and memory
GENERIC TIMER
bullet_jaune_2 ARM generic 64-bit timers for each processor
bullet_jaune_2 Virtual time vs Physical time
bullet_jaune_2 Effect of virtualization on these timers
bullet_jaune_2 Event stream purpose
bullet_jaune_2 Kernel event stream generation
bullet_jaune_2 Hypervisor event stream generation
bullet_jaune_2 Gray count timer distribution scheme
PERFORMANCE MONITORING VIRTUALIZATION EXTENSIONS
bullet_jaune_2 Hypervisor performance monitoring
bullet_jaune_2 Guest OS performance monitoring
bullet_jaune_2 Lazy switching of PMU state by a hypervisor
bullet_jaune_2 Reducing the number of counters available to a Guest OS
bullet_jaune_2 Fully virtualizing the PMU identity registers
Fourth day
AMBA4
bullet_jaune_2 AXI-4
bullet_jaune_3 Quality of Service signaling
bullet_jaune_3 Updated meaning of Read Allocate and Write Allocate
bullet_jaune_3 Transaction buffering
bullet_jaune_2 AXI-4 stream protocol
bullet_jaune_3 Byte types, data, position, null
bullet_jaune_3 Byte stream
bullet_jaune_3 Sparse stream
bullet_jaune_3 Data merging, packing, and width conversion
bullet_jaune_2 AXI-4 lite
bullet_jaune_3 Burst length of 1
bullet_jaune_3 No exclusive access support
bullet_jaune_2 AXI Coherency Extension (ACE)
bullet_jaune_3 Shareability domains
bullet_jaune_3 Coherency model, cache states
bullet_jaune_3 Additional channel signals
bullet_jaune_3 New channels, snoop address, snoop response, snoop data
bullet_jaune_3 Studying through sequences how a load request and a store request will be handled whenever they are marked as outer shareable requests
bullet_jaune_3 Using ReadUnique, CleanUnique and MakeUnique requests
bullet_jaune_3 Distributed Virtual Memory (DVM)
bullet_jaune_3 DVM synchronization message
bullet_jaune_3 Selecting the coherency state machine: MESI or MOESI according to the capabilities of the interconnect
bullet_jaune_3 Snoop filtering
bullet_jaune_2 Exported barriers
bullet_jaune_3 DMB / DSB inner shareable, outer shareable or system
HARDWARE IMPLEMENTATION
bullet_jaune_2 Clock domains
bullet_jaune_2 Resets, power-on reset timing diagram
bullet_jaune_2 Valid reset combinations
bullet_jaune_2 Power domains
bullet_jaune_2 Power-on reset sequence, soft reset sequence
bullet_jaune_2 Power management
bullet_jaune_2 Maintaining coherency while CPUs are in standby state
bullet_jaune_2 Interface to the Power Management Unit
bullet_jaune_2 Powering down a CPU
bullet_jaune_2 External debug over power down
CCI-400 CACHE COHERENT INTERCONNECT
bullet_jaune_2 AMBA 4 snoop request transport
bullet_jaune_2 Snoop connectivity and control
bullet_jaune_2 By means of sequences involving a multi-core Cortex-A15 and external masters, understanding how snoop requests can be used to maintain coherency of data between caches and memory
bullet_jaune_2 Connecting 2 CPUs through CCI, managing coherency domains
bullet_jaune_2 Example of Cortex-A7 dual core and Cortex-A15 dual core
CORESIGHT DEBUG
bullet_jaune_2 Program Trace Macrocell
bullet_jaune_2 Cross Trigger Interface and Criss Trigger Matrix for multi-processor debugging
bullet_jaune_2 Adding Virtual Machine ID in the criterion used to set a breakpoint / watchpoint
bullet_jaune_2 Tracking VMID change in trace output