Swallow is a many-core embedded system based
on the XMOS XS1 architecture. It is used to explore how large
numbers of lightweight (500MHz x 8 threads x 64kB/core + a fast
inter-core interconnect) can be effectively used. The platform is designed to
allow energy monitoring of both the cores and the communication, with the aim
of producing a system that can illustrate the energy use of parallel,
communicating algorithms and provide intuitive relationships between software and
energy consumption.
Our research objectives are:
- Investigate programming models for large-scale parallelism.
- Investigate the energy consumption in many-core systems, in particular the balance between computation and communication.
- Provide a platform for understanding the difficulties in composing many cores at the architectural level.
- Answer the question of "How much memory is needed per processing core", for a range of contemporary applications.
- Investigate what happens when a very high ratio of communication ability to storage is provided, and the impact on algorithms.
- Further development of highly parallel algorithms.
So far, three stages of work have been undertaken:
- The creation of a 112 processor system, based on the XMOS L2 dual-core chip.
- Addition of DRAM storage and fast, ethernet-based I/O.
- Expansion to 480 cores.
Hardware & software sources
Each part of Swallow is available online under various open source licenses, selected as appropriate. We are collecting a list of these here for convenience.
OS
Compilation tools
- XN file generator for arbitrary Swallow grid sizes, GitHub, XCore Open Source License.
- Swallow app example for xTIMEcomposer v13+, GitHub, XCore Open Source License.
- Swallow ethernet boot library, GitHub, XCore Open Source License.
- Swallow xlink boot library, GitHub, XCore Open Source License.
- Swallow communication library, GitHub, XCore Open Source License.
- XE Section extractor for original format binary files, GitHub, XCore Open Source License.
- Swallow manycore tools, wrapping up the existing toolchain to provide features like parallel build and TFTP loading. The swallow_v2 branch is the most recent. XCore Open Source License.
Board designs
Some expository remarks will be added in due course. In the mean time, please refer to the source, commits and branches. Hardware designs are released under the CC-BY-4.0 license, requiring attribution to the original author. The designs are collected in the Swallow Project GitHub organisation.
Chip vendor tools
In addition to our own work, the chip-vendor's software development tools — xTIMEcomposer — are available under a proprietary license, and a number of additional libraries are published under open source licenses on GitHub.