JACK WHITHAM PhD MEng
Professional Activities - Publications - Software - Articles
   
       
    Home -> Professional Activities    

 
Photograph of Jack Whitham
Professional Activities
An overview and a detailed list of my recent activities at work.
Publications
A list of my peer-reviewed academic publications; most are available for download.
Software
Software written by myself, not necessarily work-related.
Articles
Written works that are not formal publications.
 

On this page, I have attempted to list all of the work I have been involved with at the University of York in the last year or two. My curriculum vitae gives a concise summary that omits most of the details, but covers a longer period of time. This page is organised by category as follows:

 
   
Research work. Writing papers and research reports.
 
Membership of professional societies. Learning to use tools and languages.
 
Software implementation skills. Hardware implementation skills.
 
Reviewing papers by other people. Teaching undergraduates.
 
Designing systems to support experiments. Presenting work.
   
 

Research work

My research topic is computer architectures for
embedded and real-time systems. My PhD thesis looked at the problem of making a predictable CPU architecture for such systems: I have subsequently extended that work to examine ways to modify existing CPUs for the purpose. However, I am now considering expanding this focus to cover other aspects of embedded systems design. In general, the paradigm of building more powerful CPUs in order to build better computers is limited by energy concerns, memory bandwidth and the physical speed limits of transistors. In order to build better computers in the future, we will need to move towards more CPUs, a fact which is now acknowledged by major CPU manufacturers including ARM and Intel. However, it won't be enough to move to symmetric multiprocessing (SMP, the simplest strategy for multicore computing) because memory bandwidth problems prevent that approach scaling to more than about eight CPU cores. A "many core" architecture, with hundreds or even thousands of cores, simply cannot be an SMP system. In fact, the memory space will be non-uniform, which breaks the implicit assumptions of most conventional programming languages. It is widely thought that we will need new ways to write programs to make efficient use of "many core" hardware, but also accommodate the "legacy" programs that everyone is already using. This is a major challenge that is related to some of the problems faced by my own research:

How to manage data accesses predictably

Usually, a CPU accesses data via a cache, which stores copies of recently accessed data elements. The access time is dependent on the cache contents, which are in turn dependent on execution history. This is a source of unpredictability, because it's hard to know exactly what is in the cache. Under some circumstances, it is possible to be sure that a particular data element is in cache, but it's not possible to be sure that an element isn't in cache, which can be just as problematic for some architectures (e.g. the trace scratchpad architecture explored in my thesis).

In my work, this has forced the adoption of data scratchpads which have known contents at all times. These can replace caches, but they make a programmer's job much more difficult. Programmers have to decide what will be in scratchpad explicitly, and although this could be assisted by a tool and justified as a part of designing a system for predictability, it is a tough requirement that does not accommodate legacy code.

Because a move to "many core" architectures forces an overhaul of the way that memory is accessed by programs, the current research climate is an ideal opportunity to find ways to access memory predictability. The old paradigms for memory access (such as a single uniform memory space for every program) are not going to be applicable in a "many core" system, which is exactly the problem facing a predictable system with a data scratchpad.

The bottlenecks that limit CPU performance

The practical limits of instruction level parallelism and memory access speculation have now been reached in current CPU cores. As my publications describe, stricter forms of the same limits apply to predictable CPUs. A way to write programs for "many core" architectures would allow performance improvements beyond the limits of instruction level parallelism, but if it also allowed predictable programs to be written, it would also benefit real-time systems.
Adoption of "many core" programming paradigms will be a revolutionary step in computing history, but predictability will continue to be important for real-time applications. There are opportunities to use apply predictability requirements to "many core" research; indeed, because bandwidth and throughput guarantees are key requirements for all systems, there is an opportunity to base "many core" research on real-time principles. However, the challenges are significant, because computing will need to be partially reinvented at almost every level of abstraction.

Writing papers and research reports

Technical writing is a required skill for researchers, and I get a great deal of practice in my work. My
publications page has examples of my peer-reviewed papers. The following list gives all of the substantial documents I have written recently, whether published, unpublished or incomplete. Earlier work is listed on my publications page.

Membership of professional societies

I am an associate member of the
IET and a student member of the IEEE. Following my graduation, I have applied for full membership of the IEEE.

Learning to use tools and languages

One of my strengths is an ability to learn to use new software tools and programming languages rapidly. I am already familiar with a wide variety of languages and tools, including: However, I am always keen to learn new things. Recently, I have also been learning about:

Software implementation skills

I often need to write programs for my work; I write so many short programs that it would be impossible to list them all here (although I can make some of them
available online). Here is a list of software engineering projects that I have led or contributed to.

Hardware implementation skills

During the course of my work, I have designed both "soft" hardware (which exists in an FPGA in the form of an
IP core) and physical hardware on prototyping boards. I have also modified free IP cores from Opencores, and built Linux and uClinux systems using Xilinx IP cores. Here is a list of some of the work I've done.

Reviewing papers by other people

I have reviewed papers for various leading real-time systems conferences, including:
I have also reviewed papers for the Elsevier journal Microprocessors and Microsystems.

Teaching undergraduates

I have worked as a teaching assistant at the University, helping undergraduate students with exercises and laboratory work. The courses I have assisted with include:

Designing systems to support experiments

Aside from
my PhD thesis, the largest system designed by myself is the new generation of "virtual lab" project, which will support teaching and research. During the design process, I considered: I decided to implement the simplest valid solutions for all of these problems. Most are solved by avoiding assumptions about the usage of the system; the idea is that application-specific adaptations must be applied by the user (e.g. using reference designs) rather than being enforced by the virtual lab design itself. To provide multiple sessions at low resource cost, I wrote a single-threaded server application with a "select" system call as a dispatcher. For security, the unmodified SSH protocol is used. The simple design also helps to assure reliability, and support for automated experiments and tests provides a way to test reliability over a long period of time.

Presenting work

I have presented most of my
publications to audiences at conferences and workshops. I have also given several presentations for the Real-time Systems Group at York, including thesis seminars. My presentation tool of choice is Beamer, but I have also used Powerpoint. Most of my presentation slides are available for download.


       
  Copyright (C) Jack Whitham 1997-2008