TI BIOS Introduction to xDAIS 17 September 2018 Dr. Veton Këpuska.

Slides:



Advertisements
Similar presentations
Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Advertisements

Part IV: Memory Management
Computer System Organization Computer-system operation – One or more CPUs, device controllers connect through common bus providing access to shared memory.
Chapter 8 Runtime Support. How program structures are implemented in a computer memory? The evolution of programming language design has led to the creation.
1: Operating Systems Overview
Computer Organization and Architecture
C++ fundamentals.
System Calls 1.
LOGO OPERATING SYSTEM Dalia AL-Dabbagh
Operating System Review September 10, 2012Introduction to Computer Security ©2004 Matt Bishop Slide #1-1.
Memory Management Chapter 7.
ELG6163 Presentation Geoff Green March 20, 2006 TI Standard for Writing Algorithms.
Copyright © 2004 Texas Instruments. All rights reserved. 1.Introduction 2.Real-Time System Design Considerations 3.Hardware Interrupts (HWI) 4.Software.
Chapter 3.5 Memory and I/O Systems. 2 Memory Management Memory problems are one of the leading causes of bugs in programs (60-80%) MUCH worse in languages.
‘C6000 Integration Workshop Chapter 11 XDAIS Algorithms Copyright © 2005 Texas Instruments. All rights reserved. Technical Training Organization T TO (pronounced.
TMS320 DSP Algorithm Standard: Overview & Rationalization.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
Operating Systems Lecture 14 Segments Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard. Zhiqing Liu School of Software Engineering.
Chapter 4: Multithreaded Programming. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts What is Thread “Thread is a part of a program.
Processes and Virtual Memory
1 Process Description and Control Chapter 3. 2 Process A program in execution An instance of a program running on a computer The entity that can be assigned.
CSE 351 Caches. Before we start… A lot of people confused lea and mov on the midterm Totally understandable, but it’s important to make the distinction.
1 Team Skill 3 Defining the System Part 1: Use Case Modeling Noureddine Abbadeni Al-Ain University of Science and Technology College of Engineering and.
INTRO. To I.T Razan N. AlShihabi
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
Chapter 7 Memory Management
Modularity Most useful abstractions an OS wants to offer can’t be directly realized by hardware Modularity is one technique the OS uses to provide better.
OPERATING SYSTEM CONCEPT AND PRACTISE
Architectures of Digital Information Systems Part 1: Interrupts and DMA dr.ir. A.C. Verschueren Eindhoven University of Technology Section of Digital.
Visit for more Learning Resources
Processes and threads.
Process concept.
Chapter 2 Memory and process management
Segmentation COMP 755.
Chapter 14: System Protection
Chapter 3: Process Concept
Chapter 9: Virtual Memory – Part I
Operating Systems (CS 340 D)
William Stallings Computer Organization and Architecture
Swapping Segmented paging allows us to have non-contiguous allocations
Operating Systems (CS 340 D)
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
Chapter 11: File System Implementation
Chapter 9: Virtual-Memory Management
The Object-Oriented Thought Process Chapter 05
Lecture 22 Inheritance Richard Gesick.
Objective of This Course
Chapter 21b Reference Frameworks
Chapter 8: Memory management
Outline Module 1 and 2 dealt with processes, scheduling and synchronization Next two modules will deal with memory and storage Processes require data to.
The performance requirements for DSP applications continue to grow and the traditional solutions do not adequately address this new challenge Paradigm.
Process Description and Control
Moving Arrays -- 1 Completion of ideas needed for a general and complete program Final concepts needed for Final Review for Final – Loop efficiency.
Lecture Topics: 11/1 General Operating System Concepts Processes
CSCE 313 – Introduction to UNIx process
Multithreaded Programming
Chapter 2: Operating-System Structures
Explaining issues with DCremoval( )
ECE 352 Digital System Fundamentals
ECE 352 Digital System Fundamentals
Data Structures & Algorithms
Where is all the knowledge we lost with information? T. S. Eliot
CSE 153 Design of Operating Systems Winter 2019
Lecture 4: Instruction Set Design/Pipelining
Chapter 2: Operating-System Structures
CS703 – Advanced Operating Systems
COMP755 Advanced Operating Systems
Chapter 13: I/O Systems “The two main jobs of a computer are I/O and [CPU] processing. In many cases, the main job is I/O, and the [CPU] processing is.
Presentation transcript:

TI BIOS Introduction to xDAIS 17 September 2018 Dr. Veton Këpuska

Introduction In this chapter the DSP Algorithm Standard will be investigated. The value of using XDAIS algorithms in a complex system will be considered, and the method to adapt a given algorithm to the XDAIS standard will be explored. 17 September 2018 Dr. Veton Këpuska

Objectives Describe the benefits of using XDIAS compliant algorithms Describe how users control algorithm behavior Describe how users control algorithm’s RAM & ROM usage Describe how XDIAS algorithms support multiple instances List the interface methods required in XDAIS algorithm List the sequences of actions in using a XDAIS algorithm Use Component Wizard to develop XDAIS interface 17 September 2018 Dr. Veton Këpuska 2

1 2 3 4 5 6 7 Outline XDIAS Concepts XDIAS Benefits XDIAS Details Coding XDAIS Interfaces 4 DMA and XDAIS 5 List the sequences of actions in using a XDAIS algorithm 6 Use Component Wizard to develop XDAIS interface 7 17 September 2018 Dr. Veton Këpuska 2

1 2 3 4 5 6 7 Outline XDIAS Concepts XDIAS Benefits XDIAS Details Coding XDAIS Interfaces 4 DMA and XDAIS 5 List the sequences of actions in using a XDAIS algorithm 6 Use Component Wizard to develop XDAIS interface 7 17 September 2018 Dr. Veton Këpuska 2

XDAIS Concepts 17 September 2018 Dr. Veton Këpuska

Software Development Challanges Problem Ever increasing code size in DSP systems Pressure to reduce time to market Pressure to reduce cost of development Too much for any one person – or team Solution Distributed development Parallel authoring speeds time to market Work can be divided by expertise Third party ‘off the shelf’ components 17 September 2018 Dr. Veton Këpuska

Software Development Challanges Applications: Consumer Commercial Portable etc Methodology Divide software into “system integration” and “component authoring” levels Allows for maximum reuse of components Allows for system specific usage by integrators Application software Comp 1 Comp 2 Comp n . . . Components… Drivers Algorithms 17 September 2018 Dr. Veton Këpuska

Distributed Development Concerns Problem : Getting all the disparately written pieces to ‘fit together’ Solution : Develop to a universal standard Everyone knows what to expect Learn once, use repeatedly Reuse: author to standard and pieces will ‘fit’ Makes use of 3P SW a practical reality Application software Comp 1 Comp 2 Comp n . . . 17 September 2018 Dr. Veton Këpuska

Software Standard Concerns Problem : How to author such a standard? How to get others to apply it? How to make the standard maximally usable? How to minimize overhead when authoring to the standard? How to assure a component complies with the standard? Solution Already written – by TI 100’s of 3P’s already using it 1000’s of algos today, designed to be generic and non-limiting to algo Overhead can be as small as a few words and cycles TI provides testing software and offers compliancy validation svcs 17 September 2018 Dr. Veton Këpuska

Available eXpressDSP Compliant Algorithms Audio Speech Motor Ctl Encryption VB Modem Video / Imaging Protocol stacks 3D Stereo AAC Decoder/ Encoder Acoustic Echo Canceller Adaptive Noise Canceller Chorus Effect MP3 Decoder/ Encoder MPEG2 MPEG4 Noise Reduction Reverb more . . . Adaptive Speech Filter ASR Densifier Broadband Noise Canceller Caller ID Text to Speech Clear Voice Capture Full Duplex/Noise Suppression MPEG4 Speech Decoder Voice Recognition more . . . Position Control RMS Signal Measurement Speed Control Torque Control Vector PWN more . . . 3-DES AES Assembly DES Diffie-Hellman ELGAMAL HMAC MD5 RSA more . . . ACG BELL 103, 202 V.21, V.22, V.23 V.32, V.34, V.42, V.90 more . . . HDLX Gen Lev 2 HDLC Receiver HDLC Transmitter TC/IP more . . . BioKey Blip Stream Fingerprint Biometrics H.261, H.263 JPEG HAAR MJPEG MPEG1, 2, 2 RMS Compression VP4 Decoder more . . . Telephony 2100Hz Tone Dec Call Progress Analysis Caller ID DTMF Echo Canceller Line Echo Canceller Tone Detector more . . . Vocoder Wireless G.165, G.168, G.711 G.722, G.723, G.726 G.728, G.729, G.729A G.7.29AB, G.723.1 Voice Activity more ... 2.28 bps/Hz PTCM Cyclic Redundancy Check Deinterleaver Multiplexer Viterbi Decoder more . . . 17 September 2018 Dr. Veton Këpuska

Available eXpressDSP Compliant Algorithms More than 1000 TMS320 algorithms provided by TI Third Parties eXpressDSP Compliance Program Available for greater confidence Ensures: Interoperability Portability Maintainability Measurability TMS320 DSP Algorithm Standard Developer’s Kit Available to help develop your own compliant IP 17 September 2018 Dr. Veton Këpuska

Application / Component Advantages Dividing software between components and system integration provides optimal reuse partitioning, allowing: System Integrator: full control of system resources Algorithm Author: to write components that can be used in any kind of system 17 September 2018 Dr. Veton Këpuska

Application / Component Advantages What are “system resources”? CPU Cycles RAM (internal, external) : Data Space ROM : Code Space DMA hardware Physical channels PaRAMs TCCs How does the system integrator manage the usage of these resources? RAM ROM DMA Application software Comp 1 Comp 2 Comp n . . . 17 September 2018 Dr. Veton Këpuska

Resource Management : CPU Loading All xDAIS algorithms run only when called, so no cycles are taken by algos without being first called by SI (application) code Algos do not define their own priority, thus SI’s can give each algo any priority desired – usually by calling it from a BIOS task (TSK) xDAIS algos are required to publish their cycle loading in their documentation, so SI’s know the load to expect from them Algo documentation also must define the worst case latency the algo might impose on the system 17 September 2018 Dr. Veton Këpuska

Resource Management : RAM Allocation Algos never ‘take’ memory directly Algos tell system its needs ( algNumAlloc(), algAlloc() ) SI determines what memory to give/lend to algo (MEM_alloc() ) SI tells algo what memories it may use ( algInit() ) SI can give algo memory permanently (static systems) via declaration or just during life of algo (a “dynamic system”) via malloc-like action Algos may request internal or external RAM, but must function with either Allows SI more control of system resources SI should note algo cycle performance can/will be affected 17 September 2018 Dr. Veton Këpuska

Resource Management : RAM Allocation Algo authors can request memory as ‘scratch’ or ‘persistent’ Persistent: ownership of resource must persist during life of algo Scratch: ownership or resource required only when algo is running 17 September 2018 Dr. Veton Këpuska

Scratch vs Persistent Memory Digital Systems: Hardware Organization and Design 9/17/2018 Scratch vs Persistent Memory Scratch : used by algorithm during execution only Persistent : used to store state information during instance lifespan Okay for speed-optimized systems, but not where minimum memory usage is desired ... Algorithm A Scratch A Per.A Algorithm B Scratch B Per.B Total RAM Scratch Per.A Scratch B Per.B Algorithm A Scratch A Per.A Optional Slide… Another way to ‘stretch’ memory is to allow a distinction between “scratch” and “persistent” memory. Persistent memory belongs to an algorithm as long as it exists, which is the ‘normal’ way we imagine memory being managed. “Scratch” memory is one which the algorithm needs when actually running, but not between calls. As such, it can be shared amongst active programs, used in common by each in turn. The ability to share scratch memory can hugely reduce memory requirements in a multi-media system! This could also be implemented in non Dais code, but would present additional effort to author, manage, and maintain. With XDAIS compliant algorithms, this process is made absolutely procedural for authors and consumers, and therefore becomes easy to take advantage of to whatever degree is desired. Algorithm B Scratch B Per.B Algorithm C Scratch C Per.C Total RAM Scratch Per.A Per.B Per.C Usually a Limited Resource e.g.: Internal RAM Often an: Extensive Resource e.g.: External RAM 17 September 2018 Dr. Veton Këpuska Architecture of a Respresentative 32 Bit Processor

Resource Management : Scratch Memory SI can assign a permanent resource to a Scratch request Easy - requires no management of sharing of temporary/scratch resources Requires more memory in total to satisfy numerous concurrent algos SI must assure that each scratch is only lent to one algo at a time ( algActivate(), algDeactivate() ) No preemption amongst algos sharing a common scratch is permitted Best: share scratch only between equal priority threads – preemption is implicitly impossible Tip: limit number of thread priorities used to save on number of scratch pools required Other scratch sharing methods possible, but this is method used by C/E Scratch management can yield great benefits More usage of highly prized internal RAM Smaller total RAM budget Reduced cost, size, and power when less RAM is specified So, the real benefit of scratch is… Alg 1 Alg 2 Alg 3 Scratch id 2 Alg 4 Alg 5 Scratch id 3 17 September 2018 Dr. Veton Këpuska

Example of Benefit of Scratch Memory # Chans Std w.Scratch 1 1032 1064 2 2064 1096 10 10,320 1352 1K Block FIR size = 32 Workspace = blocksize + firsize History = firsize 17 September 2018 Dr. Veton Këpuska

Resource Management : ROM / Code System Integrator controls: Which algos reside in which ROM Which functions reside in which ROM Which functions are linked in or discarded Normally, with a single ROM resource, everything goes into the same place – nothing fancy When multiple ROM resources are present, SI enjoys the ability to decide which algos/fxns go to a given ROM – better resource control In simple systems (eg: static systems), dynamic create/delete fxns may be of no interest to the SI, and may be discarded so as to not waste space with unused fxns Tactical constructs involved : vTab, code space pragmas, linker directives 17 September 2018 Dr. Veton Këpuska

2 vs 3 Layer Topology Application Algo can be directly managed by Application, ie: a ‘2 layer’ topology Allows most direct interface between system and component Requires more coding effort since algo I/F is at a low level All management and details must be managed by SI/App author But, if all algos work identically, couldn’t this management be proceduralized to an intermediary level/layer? Alg.1 Alg.2 Alg.n . . . 17 September 2018 Dr. Veton Këpuska

Framework, ie: Codec Engine 2 vs 3 Layer Topology SI can employ a ‘framework’ to reduce app code’s algo management to higher level constructs, eg: Create, Execute, Delete Frameworks can be independently written to manage algos in whatever manner the SI desires (static vs. dynamic, scratch mgmt policies, etc) TI has written several frameworks already, provided free to TI DSP users Source code is provided: allowing code to be observed, tweaked, reused Already written, tested, documented: save time, high reliability, easy to use DaVinci Codec Engine includes two such frameworks: SKT2 to manage memory DMAN3 to manage DMA resources (channels, PaRAMs, TCCs) Application Framework, ie: Codec Engine Alg.1 Alg.2 . . . Alg.n 17 September 2018 Dr. Veton Këpuska

DSKT2 Module Acts as a warehouse for Memory resources Initialization Phase (config-time) Usage Phase (run-time) SRAM: 0x8000_0000-0x8010_0000 IRAM: 0x0000_0000-0x0004_0000 DSKT2 DSKT2 Alg1: 20K SRAM, 5K IRAM SRAM SRAM Alg2: 10K SRAM, 10K IRAM IRAM IRAM Acts as a warehouse for Memory resources System integrator initializes the DSKT2 module with available memory resources Algorithms “check-out” memory from the DSKT2 module at runtime when they are instantiated. 17 September 2018 Dr. Veton Këpuska

DSKT2 Framework Designed to manage all memory needs of all xDAIS algos in system Presents a simple “Create, Execute, Delete” interface to application level Dynamic framework – persistent memories are only allocated when an algorithm is created, and are returned to heap when algo is deleted Scratch memory requests cause allocation of memory ‘pool’ that can be shared by other algos with the same “Scratch Pool ID” Allows reuse/sharing of scratch pool RAM resource Scratch pools only created when a user in that group has been created 17 September 2018 Dr. Veton Këpuska

DSKT2 Framework These API are are managed by the Codec Engine in DaVinci systems They are presented here “FYI” for Codec Engine users Non Codec Engine systems can use these API directly to manage xDAIS algos Tip : assign same SGID to algos of matching priority Tip : balance number of priorities vs number of scratch pools Tip : Predefine default size of SG pools or create largest users first DSKT2 method Sub operations performed… DSKT2_createAlg algNumAlloc algAlloc MEM_alloc algInit DSKT2_activateAlg algActivate DSKT2_controlAlg algControl DSKT2_deactivateAlg algDeactivate DSKT2_freeAlg algNumAlloc algFree MEM_free C X D 17 September 2018 Dr. Veton Këpuska

VISA – CODEC Engine – DSKT2 - xDM VISA API Layer: User Interface VIDDEC_create() VIDDEC_control() VIDDEC_process() VIDDEC_delete() CODEC engine / framework Layer: TI Infrastructure algNumAlloc algAlloc MEM_alloc algInit control process algNumAlloc algFree MEM_free xDM Algo Code Layer: DSP Algo Author Focus algNumAlloc -------------- --- ------- algAlloc -------------- --- ------- algInit -------------- --- ------- algFree -------------- --- ------- algActivate -------------- --- ------- algDeactivate -------------- --- ------- process -------------- --- ------- control -------------- --- ------- 17 September 2018 Dr. Veton Këpuska

1 2 3 4 5 6 7 Outline XDIAS Concepts XDIAS Benefits XDIAS Details Coding XDAIS Interfaces 4 DMA and XDAIS 5 List the sequences of actions in using a XDAIS algorithm 6 Use Component Wizard to develop XDAIS interface 7 17 September 2018 Dr. Veton Këpuska 2

XDAIS Strategic Question: Make vs. Buy ? Tactical Requirements : Static vs. Dynamic Algorithms Memory Reuse Amongst Algorithms Uniform Algorithm Interface Improved Software Modularity Multiple Instances of Algorithms Improved Re-usability of Algorithms Strategic Benefits : Faster Time to Market Reduced Software Development Costs Improved Software Reliability Ability to Leverage Special Expertise “Off the Shelf” Convenience 17 September 2018 Dr. Veton Këpuska

Faster to Market ? Won’t I spend just as much – or more – time integrating a purchased algorithm into my system than just writing it myself? Prior to the standard, integration effort could be quite substantial, as it often happened that new software would conflict with existing components. However, the XDAIS rules were developed to assure problem-free component integration, eliminating this concern. 17 September 2018 Dr. Veton Këpuska

Reducing Software Development Costs… Isn’t purchasing algorithms adding expense ? What are the present costs for: Authoring (engineering time + overhead) Debug, Verification Lost time to market (profit, reputation) If analysing all the above indicates it’s better to make a given algorithm than buy it, then write your own – with XDAIS. If other algorithms are better bought than made, then XDAIS allows their integration into your system with no complications stemming from their ‘foreign’ authorship… 17 September 2018 Dr. Veton Këpuska

Improved Software Reliability How do I know purchased software will be reliable ? How do you know ‘home grown’ code is reliable? Apply the same testing to the purchased algo that you would your own. Given their standard interface, it’s easy to integrate a new XDAIS algo into your system, and you can quickly determine if the algo is worth having. In fact, XDAIS algos add reliability in two ways. 17 September 2018 Dr. Veton Këpuska

Improved Software Reliability First, since they’re so easy to integrate, several options can be tested and the best selected. Without XDAIS this is much harder to do, and there is usually no ‘apples to apples’ comparison between algos due to their differing interfaces and other design choices made. Even more compelling is the fact that many algos will have already been in use in other systems, proving their reliability in practice more than any amount of lab testing might have shown on one’s own code. 17 September 2018 Dr. Veton Këpuska

Ability to Leverage Special Expertise Are all the aspects of every system you will build completely covered by in-house expertise? Is that expertise available when you need it? Outside expertise can be ‘rented’ instead of ‘bought’ when needed for solving problems outside the expertise or interests of your company. Why spend the time becoming an expert in a splinter topic if it slows your time to market? Instead, spend that time becoming better yet at what you do best. Trade the time being broad for the ability to achieve greater depth in the areas that differentiate your company. 17 September 2018 Dr. Veton Këpuska

Ability to Select “Best in Class” per Alglogrithm Performance Interfacing Power Size Ease-of Use Programming Interfacing Debugging Integration Memory Peripherals Cost Device cost System cost Development cost Time to market 17 September 2018 Dr. Veton Këpuska

1 2 3 4 5 6 7 Outline XDIAS Concepts XDIAS Benefits XDIAS Details Coding XDAIS Interfaces 4 DMA and XDAIS 5 List the sequences of actions in using a XDAIS algorithm 6 Use Component Wizard to develop XDAIS interface 7 17 September 2018 Dr. Veton Këpuska 2

Learning Objectives Describe how users specify algorithm behavior Describe how users control RAM and ROM usage Show how XDAIS algorithms support multiple instances List the interface methods employed by xDAIS algorithms List the API chronology in using xDAIS algorithms Describe how xDM extends the xDAIS standard Use Component Wizard to develop an XDAIS interface 17 September 2018 Dr. Veton Këpuska

1 2 3 4 5 6 7 Outline Instance Creation Parameters Data Memory Management 2 Program Memory Management 3 Multi-Instance Ability 4 xDAIS = Static or Dynamic 5 xDAIS Chronological Flow 6 XDM – xDAIS for Digital Media 7 17 September 2018 Dr. Veton Këpuska

1 2 3 4 5 6 7 Outline Instance Creation Parameters Data Memory Management 2 Program Memory Management 3 Multi-Instance Ability 4 xDAIS = Static or Dynamic 5 xDAIS Chronological Flow 6 XDM – xDAIS for Digital Media 7 17 September 2018 Dr. Veton Këpuska

Algorithm (in header file) The Param Structure Purpose : To allow the application to specify to the algorithm the desired modes for any options the algorithm allows, eg: size of arrays, length of buffers, Q of filter, etc… sizeof() filterType filterOrder bufferSize ... Defined by : Allocated by : Written to by : Read from by : Algorithm (in header file) Application Algorithm 17 September 2018 Dr. Veton Këpuska

Param Structures Defined in IMOD.H // IFIR_Params - structure defines instance creation parameters typedef struct IFIR_Params { Int size; /* 1st field of all params structures */ XDAS_Int16 firLen; XDAS_Int16 blockSize; XDAS_Int16 * coeffPtr; } IFIR_Params; // IFIR_Status - structure defines R/W params on instance typedef struct IFIR_Status { Int size; /* 1st field of all status structures */ } IFIR_Status; 17 September 2018 Dr. Veton Këpuska

IFIR_Params : IFIR.C #include <std.h> #include "ifir.h" IFIR_Params IFIR_PARAMS = { Defines Parameter Defaults sizeof(IFIR_Params), Length of Structure 32, Filter Length 1024, Block Size 0 Coefficient Pointer }; User may replace provided IFIR.C defaults with their preferred defaults After defaults are set, Params can be modified for instance specific behavior #include "ifir.h" IFIR_Params IFIR_params ; Create a Param structure IFIR_params = IFIR_PARAMS; Put defaults in Param structure IFIR_params.firLen = 64; Override length parameter IFIR_params.blockSize = 1000; Override block size parameter 17 September 2018 Dr. Veton Këpuska

1 2 3 4 5 6 7 Outline Instance Creation Parameters Data Memory Management 2 Program Memory Management 3 Multi-Instance Ability 4 xDAIS = Static or Dynamic 5 xDAIS Chronological Flow 6 XDM – xDAIS for Digital Media 7 17 September 2018 Dr. Veton Këpuska

The MemTab Transaction Params memTab sizeOf *coeffPtr filterLen frameLen 3 size alignment space attrs ... Algorithm Knows memory requirements Requests appropriate resources from Application 2 8 Application (Framework) Manages memory requests Determines what memories are available to which algorithms - and when address0 address1 4 1 7 5 6 Physical Memory “space”: External (slow, plentiful, less cost) Internal (fast, limited, higher cost) SARAM, DARAM 17 September 2018 Dr. Veton Këpuska 8

The MemTab Structure Purpose : Interface where the algorithm can define its memory needs and the application can specify the base addresses of each block of memory granted to the algorithm size alignment space attrs *base ... Defined by : Allocated by : Written to by : Read from by : IALG Spec & Algorithm (rtn value of algNumAlloc) Application 5*algNumAlloc() Algorithm (4/5) & Application (base addrs) Application (4/5) & Algorithm (base addrs) 17 September 2018 Dr. Veton Këpuska

Key Framework (eg DSKT2) Code Determine number of buffers required n = fxns->ialg.algNumAlloc(); Build the memTab memTab = (IALG_MemRec *) MEM_alloc(0, n*sizeof(IALG_MemRec), 0); Inquire buffer needs from algo n = fxns->ialg.algAlloc((IALG_Params *)params,&fxnsPtr,memTab); Allocate memory for algo for (i = 0; i < n; i++) { memTab[i].base = (Void *)MEM_alloc(memTab[i].space, memTab[i].size, memTab[i].alignment); } Set up handle, *fxns pointer, initialize instance object alg = (IALG_Handle)memTab[0].base; alg->fxns = &fxns->ialg; fxns->ialg.algInit(alg, memTab, NULL, (IALG_Params *)params) Free the memTab & return the handle to the newly created instance object MEM_free(0, memTab, n*sizeof(IALG_MemRec)); return ((IFIR_Handle)alg); D SP TEXAS INSTRUMENTS TECHNOLOGY 10

xDAIS and xDM Authoring Instance Creation Parameters Data Memory Management Program Memory Management Multi-Instance Ability xDAIS = Static or Dynamic xDAIS Chronological Flow XDM – xDAIS for Digital Media D SP TEXAS INSTRUMENTS TECHNOLOGY 11

The vTab Concept and Usage #include <ialg.h> typedef struct IFIR_Fxns { IALG_Fxns ialg; /* IFIR extends IALG */ Void (*filter)(IFIR_Handle handle, XDAS_Int8 in[],XDAS_Int8 out[]); } IFIR_Fxns; Program Memory instance fxns IFIR_Fxns alg ... algInit alg … filter … ... … FIR_TTO_initObj FIR_TTO_filter handle Key: User Vendor Module XDAIS This section will be skipped over in this class, since the most Codec Engine users will employ the simple default case. This information was preserved in the student guides for completeness, and may be a more important detail when using xDAIS algos outside of the Codec Engine environment hFir->fxns=&FIR_TTO_IFIR; hFir->fxns->ialg.algInit((IALG_Handle)hFir, memTab,NULL,(IALG_Params *)&firParams); hFir->fxns->filter(hFir,processSrc,processDst); D SP TEXAS INSTRUMENTS TECHNOLOGY 12

vTab Structure D SP typedef struct IALG_Fxns { Void *implementationId; Void (*algActivate) (...); Int (*algAlloc) (...); Int (*algControl) (...); Void (*algDeactivate) (...); Int (*algFree) (...); Int (*algInit) (...); Void (*algMoved) (...); Int (*algNumAlloc) (...); } IALG_Fxns; D SP TEXAS INSTRUMENTS TECHNOLOGY 13

Pragmas - For Linker Control of Code Sections #pragma CODE_SECTION(FIR_TTO_activate, ".text:algActivate") #pragma CODE_SECTION(FIR_TTO_alloc, ".text:algAlloc") #pragma CODE_SECTION(FIR_TTO_control, ".text:algControl") #pragma CODE_SECTION(FIR_TTO_deactivate, ".text:algDeactivate") #pragma CODE_SECTION(FIR_TTO_free, ".text:algFree") #pragma CODE_SECTION(FIR_TTO_initObj, ".text:algInit") #pragma CODE_SECTION(FIR_TTO_moved, ".text:algMoved") #pragma CODE_SECTION(FIR_TTO_numAlloc, ".text:algNumAlloc") #pragma CODE_SECTION(FIR_TTO_filter, ".text:filter") D SP TEXAS INSTRUMENTS TECHNOLOGY 14

Linker Control of Code Sections Users can define, with any degree of specificity, where particular algo components will be placed in memory .text:algActivate > IRAM .text:algDeactivate > IRAM .text:filter > IRAM .text > SDRAM Components not used may be discarded via the “NOLOAD” option .text:algActivate > IRAM .text:algDeactivate > IRAM .text:filter > IRAM .text:algAlloc > SDRAM, type = NOLOAD .text:algControl > SDRAM, type = NOLOAD .text:algFree > SDRAM, type = NOLOAD .text:algMoved > SDRAM, type = NOLOAD .text:algNumAlloc > SDRAM, type = NOLOAD .text > SDRAM D SP TEXAS INSTRUMENTS TECHNOLOGY 15

xDAIS and xDM Authoring Instance Creation Parameters Data Memory Management Program Memory Management Multi-Instance Ability xDAIS = Static or Dynamic xDAIS Chronological Flow XDM – xDAIS for Digital Media D SP TEXAS INSTRUMENTS TECHNOLOGY 16

The Instance Object Structure Purpose : To allow the application to specify to the algorithm the desired modes for any options the algorithm allows, eg: size of arrays, length of buffers, Q of filter, etc… *fxns filterLen blockSize *coeffs *workBuf ... Defined by : Allocated by : Written to by : Read from by : Algorithm Application via memRec(0) description (private structure!) D SP TEXAS INSTRUMENTS TECHNOLOGY 17

TEXAS INSTRUMENTS TECHNOLOGY XDAIS Instance EX_TI_Obj *a *x vTab handle *EX_TI_Fxns algo code . . . coeff[32] x[1031] x + ... ... memTab params (Make sure to go through each step slowly and that every step is understood by the group – if the group can’t understand this, then there’s not much point in proceeding – so make sure there are no confused looks before moving on! It’s imperative the entire group understand what’s going on, how it’s happening, and why it’s happening!) D SP TEXAS INSTRUMENTS TECHNOLOGY 18

Multiple Instances of an Algorithm instObj1 *fxns *a *tmp *hist vTab handle1 algo code . . . Coeffs handle2 Scratch1 Allocate, Activate as many instances as desired instObj2 *fxns *a *tmp *hist history1 All instance objects point to the same vtab Scratch2 Uniquely named handles allow control of individual instances of the same algorithm An instance object tells the instance how it is to perform each time it is called. Additional instances can be launched, each with their own particular properties, maintained in their own individual instance objects. Each instance can be run concurrently without interference between them, due to their reliance upon instance objects to specify their particular performance criteria. Coefficient array can be shared history2 Scratch can be separate or common as desired D SP TEXAS INSTRUMENTS TECHNOLOGY 19

xDAIS and xDM Authoring Instance Creation Parameters Data Memory Management Program Memory Management Multi-Instance Ability xDAIS = Static or Dynamic xDAIS Chronological Flow XDM – xDAIS for Digital Media D SP TEXAS INSTRUMENTS TECHNOLOGY 20

Static vs. Dynamic Algorithms “Normal” (static) C Coding #define SIZE 32 int x[SIZE]; /*allocate*/ int a[SIZE]; x={…}; /*initialize*/ a={…}; filter(…); /*execute*/ “Dynamic” C Coding #define SIZE 32 x=malloc(SIZE); a=malloc(SIZE); x={…}; a={…}; filter(…); free(x); free(a); Create Execute Delete This is a supporting (opotinal) slide you may want to skip over. The code example on the left is how most embedded DSP code is written today – following the “Initialize and Run” model. This works well in systems that always perform the same functions all the time. But what about systems that have to perform different things at different times? Can I get the memory back from the ‘filter’ function, and use it later for something else? Not if it’s written this way – the static declaration of x and a make them permanent allocations that cannot be properly reassigned. How does a C programmer assign memory ‘dynamically’? Usually via the ‘malloc’ instruction, which allows memory to be returned to the ‘heap’ via the ‘free’ instruction, as seen in the code at right. Now we have an algorithm that can not only be created (initialized) and run (executed), but can also be deleted when no longer needed in the system, allowing memory resources to be reused later by other algorithms. This can be a huge advantage on multimedia systems – rather than each algorithm having it’s own permanent memory resources, each can share from a common system pool! Which model should the algo author write to? With XDAIS, the author writes a single code solution, which can be invoked in either manner. In fact, a large number of options are available to the user of the code, while the author need only implement a single code solution that can be used in a variety of ways. While DaVinci is a fully dynamic system, xDAIS was designed to support either static or dynamic systems D SP TEXAS INSTRUMENTS TECHNOLOGY 21

Support for Static & Dynamic Instances Algorithm algInit Filter Framework Create Execute Delete Algorithm algNumAlloc algAlloc algInit algActivate Filter algDeactivate algFree Optional Slide… So – how does XDAIS code allow us to implement our choice of static or dynamic implementation with a single code source? As we can see on the left we have our simple static model: we initialize and then run our algorithm – just as we’d do with any C routine. The XDAIS solution is no different, and just as efficient, since we only included those components we wanted in our invocation. Now, in the dynamic system, we’re using many more components. In the create phase, we’re adding an interrogation process via “NumAlloc” and “Alloc”, which inquire of the algorithm what it’s memory requirements are for us – the application framework – to select resources for. During “algInit” we tell the algorithm where it’s memory resources will be found, and the algorithm is ready to run, or “Created”. In the next phase, we are ready to “execute” the Filter (or whatever DSP algorithm we like). We could simply have called the filter as on the left if our system had been all ‘persistent’ memory based. However, if we chose to implement any of our memory as ‘scratch’, we’ll use the ‘activate’ and ‘deactivate’ to set up and release the shared block of memory prior and subsequent to our DSP process. We can run the DSP algorithm again as long as we like at this point. When we no longer want an algorithm to be present, we can progress to the delete phase, where we can interrogate the algorithm for the resources it was assigned (via algFree) and then return them to the heap via the C ‘free’ function. At this point, the instance of the algorithm would be gone, and all resources would be restored to the system for reuse elsewhere. It’s also VERY important to note that this procedure fully supports multiple instance invocation – we can make as many instances (copies, channels, sets) of a XDAIS algorithm as we wish in our system, and are assured that they will always run without intereference with each other, or any other algorithm in the system, with optimal memory sharing/usage. You may note that XDAIS says little about how to do DSP, and is only focused on how to manage system issues on a DSP ! *Note: Static case would also invoke “algActivate” if algo uses “scratch” memory D SP TEXAS INSTRUMENTS TECHNOLOGY 22

xDAIS and xDM Authoring Instance Creation Parameters Data Memory Management Program Memory Management Multi-Instance Ability xDAIS = Static or Dynamic xDAIS Chronological Flow XDM – xDAIS for Digital Media D SP TEXAS INSTRUMENTS TECHNOLOGY 23

Instance Creation - start Application Framework Algorithm Here’s the way I want you to perform… *params = malloc(x); params=PARAMS; Params algNumAlloc() 2. How many blocks of memory will you need to do this for me? 3. I’ll need “N” blocks of memory to do what you’ve specified… N 4. I’ll make a place where you can tell me about your memory needs… *memTab = malloc(5*N) MemTab D SP TEXAS INSTRUMENTS TECHNOLOGY 24

Instance Creation - finish Application Framework Algorithm algAlloc() 5. Tell me about your memory requirements… 6. My needs, given these parameters, are this, for each of the N blocks of memory Params MemTab size alignment space attrs *base InstObj Param1 Param2 … Base1 Base2 7.I’ll go get the memory you need… for(i=0;i<=N;i++) base=malloc(size); N 9. Copy Params and memory bases into my instance object… 8. Prepare an instance to run! algInit() D SP TEXAS INSTRUMENTS TECHNOLOGY 25

Instance Execution Application Framework Algorithm algActivate() 1. Get ready to run. Scratch memory is yours now. 2. Prepare scratch memory, as required, from persistent memory 3. Run the algorithm … runDSP() 4. Perform algorithm - freely using all memory resources assigned to algo Memory is assigned/allocated during ALG creation. "Permission" is granted to setup this memory during algActivate. algDeactivate() 5. I need the scratch block back from you now… 6. Save scratch elements to persistent memory as desired D SP TEXAS INSTRUMENTS TECHNOLOGY 26

Instance Deletion Application Framework Algorithm If I no longer need the algorithm: size alignment space attrs *base MemTab InstObj Param1 Param2 … Base1 Base2 I’ll make a memTab again, or reuse the prior one *memTab = malloc(5*N) algFree() 2. What memory resources were you assigned? 3. Re-fill memTab using algAlloc and base addresses stored in the instance object 4. free all persistent memories recovered from algorithm D SP TEXAS INSTRUMENTS TECHNOLOGY 27

xDAIS and xDM Authoring Instance Creation Parameters Data Memory Management Program Memory Management Multi-Instance Ability xDAIS = Static or Dynamic xDAIS Chronological Flow XDM – xDAIS for Digital Media D SP TEXAS INSTRUMENTS TECHNOLOGY 29

xDAIS Limitations xDAIS defines methods for managing algo heap memory : algCreate, algDelete, algMoved xDAIS also defines methods for preparation/preservation of scratch memory : algActivate, algDeactivate Does not define the API, args, return type of the processing method Does not define the commands or structures of the control method Does not define creation or control structures Reason: xDAIS did not want to stifle options of algo author and  Yields unlimited number of potential algo interfaces For DaVinci technology, defining the API for key media types would greatly improve Usability Modifiability System design As such, the digital media extensions for xDAIS “xDAIS-DM” or “xDM” has been created to address the above concerns in DaVinci technology Reduces unlimited possibilities to 4 encoder/decoder sets ! 30

xDAIS .PDF Need to Know “Packaged” Algo Filter Example Algorithm If given a packaged algo (only object code), what would you need to know to use it? Need to Know “Packaged” Algo Tap Size Block Size Coeff’s Filter Example Params = Algorithm Parameters What config options do I have? “xDAIS” functions my DSP functions create/delete (aka iAlg) func’s doFilter() (aka iMod) Functions to call Memory Description Table Inst Obj block history Memory Usage .PDF Performance D SP TEXAS INSTRUMENTS TECHNOLOGY 31

xDAIS-DM (xDM) xDM-defined xDM-defined .PDF Need to Know If given a packaged algo (only object code), what would you need to know to use it? Need to Know “Packaged” Algo Video Decoder Example Algorithm Parameters Height Width FrameRate BitRate, … xDM-defined What config options do I have? “xDAIS” functions my DSP functions create/delete (aka iAlg) func’s xDM-defined Functions to call process(), control() Memory Description Table Inst Obj block history Memory Usage .PDF Performance D SP TEXAS INSTRUMENTS TECHNOLOGY What do you mean, "fixed" params? 32

xDM Interfaces xDM IIMG_ENC IIMG_DEC IVID_ENC IVID_DEC IAUD_ENC IAUD_DEC ISPH_ENC ISPH_DEC xDM 8 classes: 4 algo domains V I S A 2 functionalities Enc, Dec Enable plug + play ability for multimedia codecs across implementations / vendors / systems Uniform across domains…video, imaging, audio, speech Flexibility of extension of custom / vendor-specific functionality Low overhead Insulate application from component-level changes Hardware changes should not impact software (EDMA2.0 to 3.0,….) PnP …enable ease of replacement for versions, vendors Framework Agnostic Integrate component into any framework Enable early and parallel development by publishing the API: create code faster System level development in parallel to component level development Reduce integration time for system developers Published and Stable API TI, 3Ps, and Customers Support Backward Compatibility 33

BIOS xDIAS END 17 September 2018 Dr. Veton Këpuska