Wednesday, August 22, 2007

A Multicore CPU Architecture for the 21st Century

Forget threads and algorithms! They are the work of the devil. :-) There is a much better way. There is a way to design a multicore CPU to handle fine-grain parallelism in an MIMD environment without the use of either threads or algorithms. It will be much faster and simpler than current multicore processors and its use of deterministic timing will allow the creation of rock-solid software systems. This is the promise of the COSA CPU architecture, which is based on and optimized for the COSA software model.

The COSA Software Model

A COSA program is built from a relatively small library of elementary, concurrent, synchronous objects or cells that communicate with each other using discrete signals. Below is an example of a simple While loop component that uses a few connected COSA cells.




What makes COSA different from other concurrent models is that a cell is an elementary process (an operation) that waits for a signal, does something and sends an output signal to one or more cells. There are two types of cells, sensors and effectors. Sensors are comparison operators. Unlike state machines, a COSA program operates exclusively on state changes. Each cell data structure contains a list of the cells it sends signals to.

The Cell Processor

The way it works is not rocket science. It uses a technique that is already well known to programmers of cellular automata, neural networks and simulation applications. Essentially, a COSA CPU maintains two update (processing) lists of cells in its on-board cache, one for input and the other for output processing. While one list is being processed, the other is being populated. Then the lists are swapped and the process begins anew. Each pass is considered a single cycle. Two lists are used in order to eliminate racing problems that would otherwise emerge. The CPU can handle load balancing automatically by assigning cells to different cores for processing.

There is no need for threads, context switching, algorithms or any of the old stuff. Traditional optimization techniques can be still be used, though. For example, COSA programs can be compiled into multiple synchronized lists of cells that can be pre-fetched by the CPU while it is processing the other cells in the update lists. The COSA model does not depend on the programmer to implement concurrency in the application. Concurrency in COSA is the norm. There is no getting around it.

See How to Design a Self-Balancing Multicore CPU for Fine-Grain Parallel Applications for more.

The Pot of Gold

AMD and Intel are currently fighting over who will control the multicore CPU market. There is a lot of money at stake. While these two Goliaths are locking horns and focusing their attention on soon-to-be-obsolete technology, a third party is liable to sneak behind them and steal the pot of gold. Let's face it. The CPU architecture is due for a radical change. The computer world is going parallel and the old algorithm/thread paradigm is showing its age. There is a sweet scent of revolution in the air. Who will be the leader of the next computer revolution? Sun? IBM? NVidia? Xilinx? Tilera? Some unknown player? We'll see.

No comments: