3-day Training Course on
Performance-Driven Programming on MAP1000

Course Summary

Goal: To provide the course attendees with focused training in effective programming and optimization techniques in order to obtain high performance on mediaprocessors, particularly MAP1000.

Dates: July 12 - 14, 1999

Time: 9 a.m. to 4:30 p.m. on July 12 - 13, 1999
            9 a.m. to 12 noon on July 14, 1999

Place: University of Washington, Seattle, WA, U.S.A.

Prerequisite: Those who possess the basic mediaprocessor understanding and MAP1000 programming experience

Registration: It is due June 28, 1999. Please contact

Course Objectives and Contents

This 3-day training course is specifically designed for the future expert mediaprocessor programmers to meet the increasing need for high-performance mediaprocessor programming based on our 10 years of experience, perspectives and accumulated know-how in programming various mediaprocessors. In particular, understanding the Data Streamer mechanism and its correct use in handling various data flows, innovative algorithm mapping to efficiently utilize the available instructions and hardware resources, and exercising various programming & compiling techniques (e.g., C intrinsics, unions, and software pipelining) to help the compiler to generate efficient code are very critical in developing high-performance code on MAP1000. The 3-day training course is organized to cover these practical and important knowledge and experience in MAP programming. Also, the high-performance programming techniques taught in this class are easily applicable to any other programmable DSPs or mediaprocessors, significantly elevating the attendee's overall skills, understanding, motivation, and insights in high-performance programming.

Specific objectives of this course are:

(1) to teach the key programming and optimization techniques for mediaprocessors, particularly MAP1000, to obtain high performance and

(2) to provide the attendees with hands-on experience and thorough understanding of the MAP1000 architecture, especially the Data Streamer.

The topics covered in the course are listed in Table 1.

Table 1. 3-Day Training Course

Day
Topics
7/12/99 (Mon)

9:00 a.m. - 4:30 p.m.

Introduction
  • UW Image Computing Systems Laboratory (ICSL) and mediaprocessors 
  • Comparison of mediaprocessors (C8x, TM1000, and MAP1000)
    • Architectures
    • Actual performance comparison
    • Strengths and weaknesses of each mediaprocessor
  • Issues in programming mediaprocessors 
  • Embedded vs. exposed system architectures in consumer electronic products
  • Requirements for performance-driven programming
Data Streamer (I)
  • DS architecture 
  • DS APIs 
  • Programming DS 
  • DS setup examples 
  • Ping-ponging (double-buffering) 
  • Profiling with casim
Practice session (Data Streamer)
7/13/99 (Tues)

9:00 a.m. - 4:30 p.m.

Data Streamer (II):
  • Data cache mechanism 
  • Format 1 descriptor and data fetch mode 
  • Improving DS performance
Programming techniques:
  • Memory allocation to avoid cache conflict misses 
  • Estimating performance 
  • Working with compiler 
    • Using pointers and arrays 
    • Pointer disambiguation 
    • Using union to reduce memory access 
    • Dealing with loop
Practice session (code optimization)
7/14/99 (Wed)

9:00 a.m. - 12:00 p.m.

Programming examples
  • How to handle fixed-point arithmetic 
  • Using PLC/PLV C intrinsics 
  • Tight loop coding and C optimization
MAP UWICL (University of Washington Image Computing Library)
  • Introduction to the MAP UWICL 
Summary:
  • Key points for better performance 
  • Lessons learned from past and current mediaprocessors (what to do and what not to do)