HW and SW: the uneasy couple

Yesterday I had a presentation at the 2009 New Directions in Computer Architecture (NDCA 2009) workshop, co-located with the MICRO conference. I’ll come back on the subjects of the workshop in a separate post, as here I would like to focus on an issue that was bugging me for a while and became all too apparent in the discussion around my talk.

So what was the talk about? I was advocating the need for more stronger coupling between HW and SW in terms of detailed semantic information passed on to the HW by the SW so that the HW can decide on how to best execute the SW. As one conrete way of doing this, we proposed the use of contracts (constraints describing relationships between data, control flow probabilities, side effects etc) as instruments to communicate semantic information and help the accuracy of speculative execution. The benefit of this is that sequential software can actually gain from multi-core hardware without the need of rewriting it. The paper was co-authored with professor Per Stenström from Chalmers.

Some of the reactions were, unfortunately, the ones I expected. ‘We did lots of HW-driven analysis of software, it doesn’t work’; ‘you are waisting transistors’ and my favorite one: ‘do you really believe programmers can tell the hardware more than the HW can detect?’. Make no mistakes – these comments were not coming from some rookies, but from seasoned HW architecture researchers.

To me, this underlines the problem I have been seeing over and over: computer (HW) architects seem to believe that they can solve all the computing problems on their own and provide tools and chips to SW guys that will just work brilliantly. In case it doesn’t, it’s likely the fault of the later ones, as they can’t really appreciate the beauty and power of the solution (multi-core, anyone?)

To be fair, we, the software community, have our own share of the fault. We took HW speedup for granted, without us having to do anything – after all, this is what the computer architects promised us and delivered on for decades. The name of the game has changed however – with real parallelism in HW, the partners in this marriage have to start talking to each other and the software side seems to be the first to wake up to this new reality. HW architects, unfortunately, still seem to believe that they can solve all the issues on their own – but if the past three-four years teach us anything, then it’s this one: the only way to continue the march of ever better performance is to strengthen the semantic coupling between SW and HW. There’s no way around it.

In this context, contracts driven speculative execution is just one (promising) idea. Or gesture, if you wish 😉 .

One Response to “HW and SW: the uneasy couple”

  1. […] I argued in a previous post, the fundamental underlying reason for this failure is the yawning gap between the wealth of […]