8.- Portability

Portability refers to the usability of the same software in different computing environments. In this context, a computer environment is defined by its hardware architecture, operating system and runtime libraries.

Software is portable when the cost of porting it to a new platform is significantly less than the cost of writing it from scratch. The lower the cost of porting software, relative to its implementation cost, the more portable it is said to be.

A prerequirement for portability is the generalized abstraction between the application logic and system interfaces.

Processor architectures

The instructions supported by a particular processor and their byte-level encodings are known as its instruction-set architecture (ISA). A program compiled for one type of machine will not run on another. On the other hand, there are many different models of processors within a single family. Each manufacturer produces processors of ever-growing performance and complexity, but the different models remain compatible at the ISA level. Popular families, such as x86-64 or ARM, have processors supplied by multiple manufacturers.

Examples of notable CPU architectures:

  • x86 instruction sets (32 and 64 bits).
    • Intel’s IA-32 architecture, also called x86-32.
    • x86-64 with AMD’s AMD64 and Intel’s Intel 64 versions.
      • Single Instruction Multiple Data (SIMD) instruction set extensions: SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, FMA, AVX-512, and others (see the Intel Intrinsics Guide for a full list of technologies).
  • ARM’s
    • ARM architecture (32-bit).
      • SIMD instruction set extension: NEON.
    • AArch64 (64/32-bit).
      • SIMD instruction set extension: AArch64 NEON instruction set.
  • Power Architecture (formely known as PowerPC): big-endian and little-endian, 32 and 64 bits.

  • DEC’s Alpha architecture for workstations and servers (64-bit).

  • Intel’s Itanium architecture (formely called IA-64) for enterprise servers and high-performance computing systems (64-bit).

  • MIPS Computer Systems Inc.’s MIPS architecture: big-endian and little-endian, 32 and 64 bits.

  • Oracle’s SPARC architecture for high-end servers (64-bit).

  • IBM System z: IBM’s architecture for mainframe computers (64-bit).

  • MIL-STD-1750A: the U.S.’s military standard computer (16-bit).

  • IBM’s AP-101: the Space Shuttle’s computer (32-bit).

In addition, a software-defined GNSS receiver can perform computation offloading, which consists in the transfer of certain computing tasks from the Central Processing Unit (CPU) to an external platform, such as a Graphics Processing Unit (GPU), a Field Programmable Gate Array (FPGA) device or a cloud-based service.

Operating systems

An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs.

Software-defined GNSS receivers are applications, that is, computer programs designed to perform a group of coordinated functions, tasks, or activities for the benefit of the user.

Applications that do not need an operating system are called bare metal applications.

Indicators of Portability

It follows a list of possible portability indicators for a software-defined GNSS receiver:

  • Number of supported processor architectures (specify distribution and release).

  • Supported SIMD technologies.

  • Support of GPU offloading (define GPU’s vendor/model).

  • Support of FPGA offloading (define FPGA’s vendor/model).

  • Number of supported operating systems:
    • GNU/Linux: specify distributions and versions.
    • OS X: specify versions.
    • Microsoft Windows: specify versions.
    • Real Time Operating System (specify).
    • Others (define) / None (bare metal program).
  • Other software dependencies (define).

  • Minimal memory and storage requirements.


Leave a Comment