Site affiché en Français Voir le site en English (USA) Voir le site en English (GB)
Vous êtes ici: ac6 > ac6-formation > Processors (generic) > PowerPC System Design

PG2 PowerPC System Design

This course has been designed for developers involved in a PowerPC development who want to understand generic mechanisms

Objectives
bullet_jaune_1 This course explains the objectives of mechanisms used to boost the performance and the way they are implemented in various PowerPCs : cache / cache coherency, pipeline, MMU, exceptions.
bullet_jaune_1 This gives to the attendees a wider overview of the state of the art in these domains.
bullet_jaune_1 The course details the instructions required to write program in supervisor mode to adapt the behaviour of the core to specific needs.
bullet_jaune_1 A tutorial designed by Mr Guillaume PERON, PowerPC expert since 1995, is used to quickly understand PowerPC low level programming.
bullet_jaune_1 It clarifies the use of sections required for good management of caches and memory.
bullet_jaune_1 Task switch requirements are highlighted.
bullet_jaune_1 Debug facilities implemented in PowerPCs (hardware breakpoints, real-time trace, watchpoints) are studied through the use of Lauterbach TRACE32 debugger.
A lot of programming examples have been developed by ACSYS to explain the PowerPC assembly language.

  •They have been developed with GNU compiler and are executed under Lauterbach debugger.
A more detailed course description is available on request at info@ac6-formation.com
Prerequisites
bullet_jaune_2 Basic knowledge of processor or DSP.

Plan
PowerPC PROGRAMMING
bullet_jaune_2 PowerPC programming environment : 32-bit PowerPC architecture, Book E, 64-bit architecture
bullet_jaune_2 Register set, GPR vs SPR, HID registers
bullet_jaune_2 Data type instantiation for PowerPC
bullet_jaune_2 Pointers management (Addressing modes)
bullet_jaune_2 User and supervisor functions call and return (EABI, C-to-assembly interface)
bullet_jaune_2 Sections, benefits of small data sections
bullet_jaune_2 Locating code and data in memory , linker command file
bullet_jaune_2 Reset, what is to be done before calling the main() : Cstart program
PIPELINE
bullet_jaune_2 Superscalar operation
bullet_jaune_2 Mechanisms used to boost performance : branch prediction, branch target address cache, link stack
bullet_jaune_2 Guidelines to optimize execution time
bullet_jaune_2 Serializations, isync instruction, determining when this instruction is really required
DATA PATH AND DECOUPLING
bullet_jaune_2 Highlighting the frequency domains present in PowerPC : core and bus interface
bullet_jaune_2 Decoupling the core from cache and bus through load and store buffers
bullet_jaune_2 Default ordering of load and store transactions
bullet_jaune_2 Enforcing the ordering through eieio (called mbar in Book E) and sync (called msync in Book E) instructions
bullet_jaune_2 Purpose of the Guarded attribute
bullet_jaune_2 Consequence for high level development of IO drivers
MEMORY MANAGEMENT UNIT
bullet_jaune_2 Requirements for kernels enabling dynamic memory mapping
bullet_jaune_2 Single process multi-thread versus multiprocess multi-thread kernels
bullet_jaune_2 Objectives of the MMU : page protection, definition of page attribute, address translation
bullet_jaune_2 Segment and page translation
bullet_jaune_2 Table search mechanisms : benefits of a software table search
bullet_jaune_2 Operation of TLB caches
bullet_jaune_2 TLB programming, static initialization
CACHE AND DATA COHERENCY
bullet_jaune_2 Introduction to cache memory
bullet_jaune_2 Cache organization
bullet_jaune_2 Write policies
bullet_jaune_2 Replacement algorithms
bullet_jaune_2 Data flow between external main memory
bullet_jaune_2 Distinguishing private memory that is accessed only by the core and shared memory that can be accessed by the core and other masters (DMA or CPU)
bullet_jaune_2 Software enforced coherency
bullet_jaune_2 Hardware enforced coherency
EXCEPTION MECHANISM
bullet_jaune_2 Software exceptions vs interrupts
bullet_jaune_2 Save / restore registers
bullet_jaune_2 Organization of an exception handler : prolog, body and epilog
bullet_jaune_2 How to find the cause of the exception, syndrome registers
bullet_jaune_2 Design of a generic exception handler based on a vector table
bullet_jaune_2 Interrupt management, addition of a critical interrupt in Book E
bullet_jaune_2 Integrated interrupt controller
bullet_jaune_2 Requirements for interrupt nesting
MULTITASK
bullet_jaune_2 Management of boolean semaphores, lwarx / stwcx. instruction pair
bullet_jaune_2 Stack switch, use of SPRG registers
bullet_jaune_2 Definition of the set of registers that determine the stack state
bullet_jaune_2 Management of task lists in single and multi processor systems
PowerPC DEBUG SOLUTIONS
bullet_jaune_2 On-chip debug logic
bullet_jaune_2 Restrictions of JTAG debug
bullet_jaune_2 Hardware breakpoints
bullet_jaune_2 Real-time trace
bullet_jaune_2 Debugging software when caches are active
bullet_jaune_2 The performance monitor