SIMD correlator library for GNSS software receivers -- by Gregory W. Heckler, and
James L. Garrison
The technical paper which describes this code is published in
GPS Solutions, Volume 10, Number 4, November 2006, pages 269-276,
" SIMD correlator library for GNSS software receivers"
by Gregory W. Heckler, and James L. Garrison
School of Aeronautics and Astronautics, Purdue University, West Lafayette, Indiana, USA.
Software receivers have had a discernable impact on the GNSS research community. Often such receivers
are implemented in a compiled programming language, such as C or C++. A software receiver must
emulate the digital signal processing (DSP) algorithms executed on dedicated hardware in a
traditional receiver. The DSP algorithms, most notably correlation, have a high computational
cost; this burden precludes many software receivers from running in real time. However the
computational cost can be lessened by utilizing single instruction multiple data (SIMD)
operations found on modern x86 processors.
The following demonstrates how C/C++ compatible code can be written to directly
utilize the SIMD instructions. First, an analysis is carried out to demonstrate why real
time operation is not possible when using traditional C/C++ code. Second, a tutorial outlines
how to write and insert x86 assembly, with SIMD operations, into C/C++ code.
Performance gains achieved via SIMD operations are then demonstrated, and pseudo code
outlines how SIMD operations can be employed to perform correlation. Finally, a C/C++
compatible SIMD enabled arithmetic library is added to the GPS Toolbox
for use in software receivers.
Note: There are several *.h and *.cpp files included in this software package. Thus, the
the authors have bundled all of the files in a *.zip file (SIMD.zip).
The Readme.txt file describes the functions included
in the single instruction multiple data (SIMD) library.
General information about the C++ functions in the SIMD.zip file (Readme.txt)
*.zip file containing all C++ functions for SIMD library (SIMD.zip)
Return to the GPS-TOOLBOX home page