Beschreibung
A number of widely used contemporary processors have instruction-set extensions for improved performance in multi-media applications. The aim is to allow operations to proceed on multiple pixels each clock cycle. Such instruction-sets have been incorporated both in specialist DSPchips such as the Texas C62xx (Texas Instruments, 1998) and in general purpose CPU chips like the Intel IA32 (Intel, 2000) or the AMD K6 (Advanced Micro Devices, 1999). These instruction-set extensions are typically based on the Single Instruc tion-stream Multiple Data-stream (SIMD) model in which a single instruction causes the same mathematical operation to be carried out on several operands, or pairs of operands, at the same time. The level or parallelism supported ranges from two floating point operations, at a time on the AMD K6 architecture to 16 byte operations at a time on the Intel P4 architecture. Whereas processor architectures are moving towards greater levels of parallelism, the most widely used programming languages such as C, Java and Delphi are structured around a model of computation in which operations takeplace on a single value at a time. This was appropriate when processors worked this way, but has become an impediment to programmers seeking to make use of the performance offered by multi-media instruction -sets. The introduction of SIMD instruction sets (Peleg et al.
Inhalt
The book is intended as a programmer¿s introduction to the use of SIMD on PCs. It presents the underlying technology of SIMD processing on current PCs and looks at tools to exploit this including the Intel SIMD library and the Parallel Processing Language Vector Pascal. It explains how to cast algorithms in parallel to exploit the parallel processing capability of standard PCs obtaining large performance gains relative to conventional sequential compilers. It assumes a familiarity with imperative programming but not specifically with Pascal. It does not assume any prior familiarity with the SIMD programming model. The language translation system will be available either as a downloadable for Linux or Windows in association with the book. This book is aimed at practitioners with prior experience of imperative languages but not necessarily any familiarity with parallel programming techniques. It will be particularly useful for programmers in the rapidly growing area of games and multi-media entertainment, and it would also be useful to academics interested in parallel programming techniques or array programming languages. Table of Contents Part 1 1. Computer speed, program speed 2. SIMD Instruction Sets 3. SIMD programming in assembler and C 4. Intel SIMD Instructions 5. 3DNow Instructions Part II 6. Another Approach: Data Parallel Languages 7. Basics of vector Pascal 8. Algorithmic features of Vector Pascal 9. User Defined Types 10. Input and Output 11. Permutations and Polymorphism Part III Programming Examples 12. Advanced Set Programming 13. Parallel Image Processing 14. Pattern Recognition and Image Compression 15. 3D Graphics Part IV 16. Introduction to VIPER Appendix A: Compiler Porting Tools Appendix B: Software Download Appendix C: Using the Command Line Compiler