Companion CD-ROM: /unsw/projects/armvfp directory

The /unsw/projects/armvfp directory contains the full implementation details of the of the ARM Vector Floating Point Co-processor Emulator.

This work was developed by Raviraj Joshi as part of the Accelerated Tutorial Project for COMP1721, Higher Computing 1B, in 2003.

Project Title

ARM Vector Floating Point Co-processor Emulator

Project Abstract

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 pass 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 and 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. and 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.

Directory Contents

[Root] CD-ROM Root Directory
[Dir] unsw: Information specific to the Digital Systems Laboratory
[Dir] project: Information on student projects implemented on DSLMU board
[Dir] armvfp: Full source of the ARM Vector Floating Point Emulator   This is the current directory
[File] README.html: The file you are currently reading
[Dir] documentation: Documentation for the ARM VFP Emulator ([Dir] html, [Dir] pdf and [Dir] latex formats)
[Dir] source: Source for the ARM VFP Emulator