110 likes | 124 Views
Explore techniques for compiling software on multimedia processors, from classic vectorization to loop unrolling, addressing challenges and maximizing processing power for multimedia applications. Learn about special instruction sets like VIS, Altivec, MMX, and MAX-2. Discover solutions such as high-level language coding, system libraries, and macro calls. Dive into loop analysis, scalar expansion, dependence analysis, and alignment management. Enhance your understanding of instruction selection, register allocation, and more.
E N D
Compilation Techniques for Multimedia Processors Andreas Krall and Sylvain Lelait Technische Universitat Wien
Motivation • High processing power needed by multimedia applications • Special instruction sets for multimedia data • Implemented by special processors • Multimedia instruction set extensions • Visual instruction set(VIS) of UltraSPARC • Altivec extension of PowerPC • MMX extension of Pentium • MAX-2 instruction set of HP PA-RISC
Problems and Solutions • New functionality has not been exploited properly • Have to code in assembly language • Use provided system libraries • Call macros in high-level language • Compile a program coded in high-level language into multimedia instructions • Classic vectorization • Vectorization by loop unrolling
Classic Vectorization • Loop analysis • Loop normalization • Scalar expansion • Dependence analysis • Vectorization • Alignment management • Strip mining • Constant expansion • Lower iteration space • Lower alignment • Instruction selection and register allocation
Classic Vectorization • Loop analysis • Loop normalization • Scalar expansion • Dependence analysis • Vectorization • Alignment management • Strip mining • Constant expansion • Lower iteration space • Lower alignment • Instruction selection and register allocation
Classic Vectorization • Loop analysis • Loop normalization • Scalar expansion • Dependence analysis • Vectorization • Alignment management • Strip mining • Constant expansion • Lower iteration space • Lower alignment • Instruction selection and register allocation
Classic Vectorization • Loop analysis • Loop normalization • Scalar expansion • Dependence analysis • Vectorization • Alignment management • Strip mining • Constant expansion • Lower iteration space • Lower alignment • Instruction selection and register allocation
Vectorization by Loop Unrolling • Loop analysis • Compute unrolling degree • Loop unrolling • Dependence analysis • Dependence verification • Generation of vector instructions • Alignment management • Lower iteration space • Lower alignment • Instruction selection and register allocation
Vectorization by Loop Unrolling • Loop analysis • Compute unrolling degree • Loop unrolling • Dependence analysis • Dependence verification • Generation of vector instructions • Alignment management • Lower iteration space • Lower alignment • Instruction selection and register allocation
Vectorization by Loop Unrolling • Loop analysis • Compute unrolling degree • Loop unrolling • Dependence analysis • Dependence verification • Generation of vector instructions • Alignment management • Lower iteration space • Lower alignment • Instruction selection and register allocation