Research Projects

Current Projects

  • PAMELA – A Panoramic View of the Many-core Landscape
    Designing computer systems for the next generation many-core applications is an extremely challenging problem. The overall objective of this Programme is to bring together application developers, system software researchers and computer architects to develop novel approaches that can adapt with and drive heterogeneous, many-core architectural evolution. A unique feature of our Programme is having a potentially critical class of applications, 3D scene understanding, as a driver to integrate all parts of the Programme. 3D scene understanding is likely to be a driving application in next generation smart-phones and forms a critical component in realising intelligent devices.
  • 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.

Completed Projects