“Software People Don’t Quite Get Hardware”. The Future is Hardware/Software Co-Design. Hennessy and Patterson Turing Talk

Hennessy and Patterson are familiar names to anyone that has studied computer architecture. They are the authors of the widely accepted textbook “Computer Architecture: A Quantitative Approach” that many undergraduate and graduate students revere as the bible for computer architecture. They recently won the 2017 ACM Turing Award and delivered an illuminating lecture on the current state and future directions of the field of computer architecture.

During the Q&A session they joked that “Software People Don’t Quite Get Hardware”, which I think is mostly poking fun at a half truth since we do see major advances in this field.

Shining examples of successful hardware/software co-design are TensorFlow, CUDA and OpenCL as they are domain specific software frameworks or languages that are tightly integrated with domain specific compute architecture. Machine learning applications have benefited from these advances in hardware software co-design and this technology was famously used in the man versus machine Go matches between Google’s Alphago and Lee Sedol.

On the other hand, general purpose computing is an area where there is a large and growing disconnect between hardware and software architecture. Core counts on consumer processors are scaling upward in response to limitations in Dennard scaling and operating systems have yet to catch up with the increased level of hardware parallelism. As single core performance gains continue to flatten out, software designers will need to look to increased thread level parallelism to draw more performance from modern and future general computing hardware platforms.

It’s unclear to me whether enough is being done at the operating system level to be in lock step with advances in hardware technology or if catching up will be a reactionary phenomena when single threaded performance increases eventually dry up. As a hardware architect, the level of opacity is concerning and it makes me wonder if I’m doing enough to stay current and engaged at the forefront of software architecture. In any case, whether you are are a hardware designer or a software designer, this is an area of our field that deserves extra attention and putting thought into this problem now would put us ahead of the curve.