Main Page | Data Structures | File List | Globals

The ARM Vector Floating Point Co-processor Emulator

1.1

Architecture Overview

The Vector Floating Point (VFP) architecture is a co-processor extension to the ARM architecture. It provides single (Version 1, or VFPv1) and double (variant D, VFPv1D) precision floating point arithmentic, as defined by ANSI/IEEE 754-1985 IEEE Standard for Binary Floating Point Arithmetic.

Short vectors of up to 8 single or 4 double precision numbers can be handled by the VFP architecture. Most arithmetic instructions can be used on these vectors, allowing 'single-instruction, multiple-data' (SIMD) parallelism. Furthermore, the floating-point load and store instruction shave 'multiple register' forms, allowing vectors to be transferred to and from memory efficiently.

Registers

The ARM VFP architecture includes:

Instructions

ARM VFP instructions are provided for data processing, load and store, and register transfer. These instructions are based on the generic ARM coprocessor instructions: CDP, LDC, MCR, MRC and STC. They include instructions that:

Exceptions

The VFP architecture supports all five of the floating point exceptions defined in the IEEE 754 standard:

Untrapped exceptions causes appropriate cumulative flag in the FPSCR to be set to 1, and any result registers of the exception-generating instruction are set to the default result values specified by the standard. Execution of the program containing the exception-generating instruction then continues. Trapped exceptions involve an implementation defined trap handler software routine.

Implementation

The VFP architecture can be implemented in software only, or with both software/hardware components. The software support code (ie. the ARM VFP emulator) is installed on the ARM undefined instruction vector. The ARM undefined instruction exception can catch a VFP instruction and convert it into a trap handler call that causes the software support code to execute.

This software implementation of the ARM VFP emulator is based on the specification described in Chapter C of the ARM Architecture Reference Manual.

The function and variable declarations & definitions for this implementation of the ARM Vector Floating Point Co-processor Emulator are distributed across 1 header file, armvfp.h, and 6 source files, including armvfp.c, inout.c, decode.c, execute.c, arithmetic.c, and exceptions.c.

References

References are listed in alphabetical order by author:

  1. ANSI/IEEE Std 754-1985. IEEE standard for binary floating-point arithmetic. Standards Committee of the IEEE Computer Society, USA.

  2. Ercegovac, MD. & Lang, T. (2003) Digital Arithmetic. Morgan Kaufmann, USA.

  3. Furber, S. (2000) ARM System-On-Chip Architecture. 2nd Edition. Addison-Wesley, Great Britain.

  4. Overton, ML. (2001) Numerical Computing with IEEE Floating Point Arithmetic. Society of Industrial and Applied Mathematics, Philadelphia.
  5. Seal, D. (2000) ARM Architecture Reference Manual. 2nd Edition. Pearson Educational, UK.


Generated on Mon Aug 2 20:07:48 2004 for ARM Vector Floating Point Co-processor Emulator by doxygen 1.3.7