Investigating micro-core architectures with an EPCC PhD
17 March 2023
Maurice Jamieson's interest in Green Computing led him to join EPCC first as a PhD student and now as a member of staff.
My curiosity in programming language design and implementation was sparked by learning FORTH whilst at school. As its designer stated, FORTH programs evolve “into a meta-language, which describes a language we apply to the application” . This interest was fostered during my undergraduate final year project to design and implement a new persistent Object-Oriented programming language.
After graduating, a colleague from university and I developed a visual programming language for school students to enable them to write and test their programs before downloading them to a simple floor robot. Throughout my career designing and developing enterprise applications in C++ and Java, I kept tinkering with the programming language developed as part of my final year undergraduate project.
Over the years, working in large organisations, I began to develop an interest in Green Computing due to the ever-increasing energy demands of middleware software and associated hardware.
This interest grew until I decided that I wanted to combine my experience of implementing programming languages with research into novel computing architectures designed to address the increasing power consumption of existing machines. However, I wanted this research to be grounded in practical applications. Luckily, whilst searching for relevant PhD projects, I came across an advert for an EPCC PhD project, supervised by Dr Nick Brown, that was concerned with the design and implementation of dynamic programming languages (eg Python) on novel, energy-efficient micro-core architectures.
After an initial, informal chat with Nick and Dr Mark Bull, I decided that this was the ideal opportunity for me to combine my interests and successfully applied for the PhD.
The main challenge with micro-cores is their extremely limited on-chip memory (around 32KB) and idiosyncratic architectures. Nick’s parallel version of Python for the Adapteva Epiphany, known as ePython , was used as the research vehicle to explore the key questions regarding the implementation of dynamic programming languages on micro-core architectures, namely:
1. How to manage the limited on-chip memory for data?
2. How to manage the limited on-chip memory for code?
3. How to address the low runtime performance of virtual machines?
4. How to manage the idiosyncratic architectures of micro-core architectures?
Figure 1: ePython architecture showing updated and new Olympus components.
These research questions (or challenges) were addressed through updates to the existing virtual machine-based ePython language and the design and implementation of Olympus, a new portable native code abstract machine and compiler. The resultant architecture is shown in Figure 1.
The portability of the approach was tested by deploying Olympus to the Adapteva Epiphany-III, RISC-V, and Xilinx MicroBlaze-based micro-core architectures, as well as a number of traditional CPUs. The key driver was to reduce the memory footprint of ePython codes, whilst closing the performance gap with native C and enabling the same source code to run on a number of markedly different architectures, without modification .
Whilst the original scope of my PhD research was to provide development technologies for architectures designed to help mitigate the increasing energy requirements of high-performance computing (HPC) architectures, these technologies are also applicable to embedded and Edge/Internet of Things (IoT) devices.
EPCC is world-renowned for HPC and data science but the extensive experience within the organisation supports a wide range of research areas, from embedded devices, through Field-Programmable Gate Array (FPGA) accelerators  to Graphics Processing Unit (GPU) enabled HPC architectures, such as Cirrus .
Although my PhD research was concerned with micro-core architectures, I have been able to expand my knowledge of HPC and data science through both attending EPCC MSc courses and being involved in work-related projects.
As EPCC also works closely with our colleagues in Informatics, it is able to support a very wide range of research projects, including those that combine both Computational Science and Computer Science. Furthermore, the support I received from EPCC during the pandemic, specifically my supervision team (Nick, Adrian Jackson, and Mark), allowed me to complete my studies during an extremely difficult time for my family.
Being from a commercial background, I was initially drawn to EPCC due to the organisation’s strong links with industry. Since joining as a member of staff, I have worked with commercial clients to provide development expertise and Enterprise Architecture consultancy, whilst also undertaking research and providing supervision to EPCC MSc and PhD students.
I am extremely proud to be part of a unique organisation that is not only friendly, welcoming and supportive but also provides the ability for you to balance commercial work, research and teaching. EPCC offers a wealth of opportunities for both students and staff.
 J. Pintaske and C. H. Moore, Programming a Problem Oriented Language: Forth - How the Internals Work. Independently Published, 2018. [Online]. Available: https://books.google.co.uk/books?id=wiW7zQEACAAJ
 N. Brown, ‘ePython: An Implementation of Python for the Many-Core Epiphany Co-processor’, in 2016 6th Workshop on Python for High-Performance and Scientific Computing (PyHPC), Nov. 2016, pp. 59–66. doi: 10.1109/PyHPC.2016.012.
 M. Jamieson, ‘Enabling high performance dynamic language programming for micro-core architectures’, Nov. 2022, doi: 10.7488/era/2772.
 ‘FPGAs for HPC and data science’, ExCALIBUR H&ES FPGA testbed. https://fpga.epcc.ed.ac.uk/ (accessed Mar. 06, 2023).
 ‘Cirrus Hardware’. https://www.cirrus.ac.uk/about/hardware.html (accessed Mar. 06, 2023).