Modern processors and computer systems are designed to be efficient and achieve high performance with applications that have regular memory access patterns. For example, dense linear algebra routines can be implemented to achieve near peak performance. While such routines have traditionally formed the core of many scientific and engineering applications, commercial workloads like database and web servers, or decision support systems (data warehouses and data mining) are one of the fastest growing segments in the high-performance computing market. Many of these commercial applications are characterised by complex codes and irregular memory access patterns, which often result in a decreased performance. Due to their complexity and the lack of...