DAMSON is a multi-threaded event driven language for parallel multi-core architectures. The event driven syntax is derived to suit the interrupt driven architecture of highly interconnected multi core systems. Events in the form of clock ticks or the arrival of multicast messages packets are easily mapped to procedures using a simple syntax.The DAMSON tool-chain provides emulation and hardware execution support for the SpiNNaker hardware architecture. A SpiNNaker network consists of a a number of independently functional and identical Chip-Multiprocessors each consisting of 18 ARM 968 cores running at 200MHz. Each core is a System on Chip (SoC) with its own dedicated tightly coupled memory, a share of the Chip-Multprocessors SDRAM and a network on chip for routing small packets between cores and out to 6 other chips on the SpiNNaker network. DMA events and packet inputs from the NoC interfaces are supported via interrupts within the overall event driven model of the architecture.
DAMSON provides a 'functional' emulation of SpiNNaker through interpretation of an intermediate pseudo-instruction format with an accurate ARM timing model. An intermediate instruction format ensures that DAMSON emulation is fast (much faster than emulating ARM instructions) but still provides insight into the multi threaded runtime environment. The accuracy of emulation is ensured by replicating the underlying fixed point arithmetic performed by SpiNNaker. Overall, this method of emulation is highly scalable, has a low memory footprint and provides a tool for profiling and debugging (via and Eclipse plug-in) complex multi-threaded multi core applications.
DAMSONs intermediate instruction format also provides the basis for code generation for the ARM processors which can executed on the SpiNNaker hardware. As part of the DAMSON tool-chain, a mapper and loader are provided which allows for simple execution using SpiNNakers native communication protocols. Results obtained from the hardware are equivalent to those from emulation so the DAMSON toolchain provides an ideal environment for evaluating SpiNNaker without access to the hardware.