I am primarily interested in the development of software for future computing architectures. Whilst Moore’s Law largely still applies to increases in transistor density, single-threaded clock speeds have stopped rising significantly. Therefore, extra performance must be obtained by adopting novel system architectures. Features of these new architectures include:
- Parallelism: Large amounts of hetergeneous processing cores.
- Non-standard memory hierarchies: As parallelism increases memory access times can cause a system bottleneck, forcing designers to move to layered models.
- On-chip communication: Communication media such as on-chip networks become necessary as systems grow.
- Custom hardware: A move to more application-specific designs that make use of function accelerators and non-standard memory technologies and configurable FPGA-based features.
- Real-time constraints: As computing devices become increasingly ubiquitous they become subject to real-time constraints, forcing the designer to consider issues of worse-case execution time and predictability.
All of these features pose interesting problems for the application programmer, who is frequently forced to resort to extra-linguistic techniques and assembly code to effectively target their code at such architectures. As a result my interests cover architecture support in software languages, embedded systems, real-time systems, hardware architectures, virtualisation and abstraction methods, FPGAs and reconfigurable computing, hardware synthesis languages and predictability of systems.
I am currently working on the following EU projects:
- PHANTOM (Cross-layer and Multi-objective Programming Approach for Next Generation Heterogeneous Parallel Computing Systems) will build a hardware-agnostic software platform to hide the complexity of modern heterogeneous, parallel and low-power computing platforms. This platform makes use of a dynamic, on-line, multi-objective scheduler to co-ordinate the hardware and software resources available.
- JUNIPER (Java platform for high-performance and real-time large scale data management) aims to create a Real-Time scalable Java platform and supporting methodology and tool-flow that can be configured to build and support a range of high-performance Big Data application domains, enabling real-time constraints to be met. (FP7 reference number: 318763)
I have also worked on the following projects that are now complete:
- TOUCHMORE (Automatic Customizable Tool-chain for Heterogeneous Multicore Platform Software Development) developed software tools to facilitate energy efficient and robust software for Heterogeneous Multicore Systems, focussed on the reduction of time-to-market and cost of such systems. (FP7 reference number: 288166)
- MADES (Model-driven development of embedded systems) developed the elements of a fully-fledged model-driven approach for the design, validation, simulation, and code generation of complex embedded systems to improve the current practice in the field. (FP7 reference number: 248864)
I have assisted teaching the Embedded Systems course at the University since 2006. Aside from standard demonstration duties of helping students and responding to questions, I have frequently been responsible for the creation of large amounts of software and hardware that form the teaching and assessment materials of the course. Over the years I have developed a number of hardware teaching architectures for the students to work within, complex server programs for the students’ solutions to interact with, networking infrastructure, many example solutions, code libraries, and teaching documents.
Throughout my career I have provided paper reviews for many conferences and journals including:
- The Journal of Systems Architecture
- Real-Time and Embedded Technology and Applications Symposium (RTAS)
- IEEE Transactions on Parallel and Distributed Systems
- IEEE Transactions on Computers
- Design, Automation and Test in Europe (DATE)
- Journal of Big Data
I have also been on the Programme Committee of the Junior Researcher Workshop on Real-Time Computing, Software Engineering and Advanced Applications, and Interoperable Infrastructures for Interdisciplinary Big Data Science.
I have supported a York-based engineering company during their migration of a legacy product to modern hardware and operating systems. This involved extensive Linux kernel development and hardware engineering expertise.