Research Projects

Current Projects

  • McDoC – Many-Core In-Memory Database on a Chip
    In this project we explore and quantify architectural design options for domain-specific single-chip many-core architecture, specifically tailored to support In-Memory Databases. We envisage a design, which combines several high-performance ARM 64-bit application cores, e.g. Cortex- A73, with smaller and more power-efficient specialised cores, e.g. Cortex-M4/7, acting as accelerators for tasks like index-traversals and other common low-level operations in in- memory databases. Further accelerators, either programmable or hardwired as IP blocks, could target other performance-critical processing stages such query compilation, data streaming and providing security related functionality.
  • Discovery: Pattern Discovery and Program Shaping for Heterogeneous Manycore Systems
    Computing pervades our lives, impacting our health, work, entertainment and social interaction. Over recent years, the technology inside the devices providing these services has undergone a radical change: where once, processing was undertaken by relatively homogeneous “sequential” devices, in which essentially one thing happened at a time, the new systems compose a range of specialized devices, some targeting specific problem sub domains, and almost all exhibiting considerable “parallelism”, where many things can happen at the same time. This is true on all scales, from the internals of a mobile phone, to the massive data centres which serve web applications such as Google. This poses a substantial challenge for the software industry: writing correct and efficient programs for heterogeneous, highly parallel systems is much harder than for current technologies and most developers lack the skills and training to write safe and efficient code. Faced with this difficulty, software developers will often avoid writing parallel code completely, or else will use inappropriate, non-scalable and error-prone approaches based on explicit threads of program execution. Given the hardware trend towards increasingly complex, increasing parallel (manycore) systems, this is an inherently short-term strategy that is doomed to failure. Our project addresses this issue. Our key insight is that humans in general, are very good at using patterns to understand, predict and act in the real world. This insight translates into the world of software engineering in general, and parallel heterogeneous programming in particular. Our work will help programmers to recognize patterns in pre-existing and new applications, and to transform these pattern occurrences into forms which allow them to be exploited, adapted and run effectively on the new hardware platforms. The systems we develop will work in partnership with software developers, reducing the complexity of the task, automating and semi-automating the development task. The result will help the industry to develop new applications, and to update existing applications, with less effort, fewer errors and better resilience as the underlying technology continues to evolve.
  • Data-Centric Parallelisation
    Automatic parallelisation is loop parallelisation. Traditional parallelising compilers attempt, for each loop individually, to identify a suit- able parallel execution schedule, which honours dependences dictated by the underlying sequential program semantics. In contrast, manual parallelisation is a holistic process. Human programmers consider the entire program and relationships between its individual components. It is standard practice for a human expert to initially rewrite and restructure a program before attempting parallelisation. We propose a fundamental paradigm shift by attempting to mimic what human experts would do: We aim to enable automatic parallelisation to incorporate whole program context and knowledge of the most widely used abstract data types in order to overcome the limitations of todays compilers.
    Our main aim is to develop a novel ”data first” paradigm for automatic parallelisation of sequential legacy code, outperforming every existing parallelising compiler on irregular, pointer-based or control flow dominated applications. We aim to make automatic parallelisation a viable alternative to manual parallelisation, i.e. resulting in competitive parallel performance levels whilst reducing manual human intervention to a minimum.
  • Full-System Simulation of Mobile GPU Graphics
    The project seeks to develop novel simulation technology for mobile GPUs. While previous research has advanced simulation capabilities for the general-purpose compute fabric of mobile GPU systems, there is still a huge capability gap for GPU graphics simulation. Advances in this area could lead to faster product development cycles and the development of novel mobile graphics hardware.

Completed Projects