An Altruistic Processor (AAP) was created to advance compiler technology for deeply embedded processors with a restricted register set and complex memory structures. The first version is documented in Embecosm Application Note 13. It is a 16-bit Harvard architecture with multiple 16-bit word addressed code memories, multiple byte addressed data memories and between 4 and 64 16-bit registers.
FPGA implementations for the DE0-Nano and MyStorm boards have been developed and are available on the Embecosm website. The particular goal is to improve LLVM support for non-RISC, non-von Neumann architectures smaller than 32-bits. Currently almost all upstream implementations are for 32/64-bit von Neumann RISC processors. A full LLVM tool chain is available on Embecosm GitHub.
Derivative versions of AAP have been created with 24-bit wide code memories and 16-bit wide data memories. These have been used to demonstrate Embecosm’s modifications to support word-sized characters.