Being friendly to your hardware

Ignas Bagdonas

60
advanced
17:00-18:00, Wednesday, 3rd July 2024

Practical software does not run in abstract vacuum, it runs on underlying hardware platforms. Practical software engineering does not exist in abstract vacuum either. The software layer sits in between the domain specific requirements on top and the underlying runtime platforms below. Many interesting developments have happened on all three of those layers over the years, and while contemporary hardware has gone a long way forward, it often suffers from the attention deficit caused by an overshadowing flood of advancements and “advancements” in the software part of the universe. This new shiny programming language is safe, performant, and solves a backlog of problems that have been dragging for long. While that new shiny programming paradigm automagically relieves from dealing with low level details and the toolchain is plain amazing. The hardware side brings into this fistfight a set of new architectures, ISAs, and hardware abstractions – just to stay on par with the software side. Looks perfect? What else would an engineer dream about, no?

Not really. Let’s take a look at the contemporary commodity hardware platforms of today, and also at the trendy software engineering waves of today, and try to sense how and why it could (and frequently does) cross out the potential benefits of hardware advancements – and what could be done to actually be friendly to your underlying hardware, and at what cost.

Performance engineering
vectorization
hardware and software interworking

Ignas Bagdonas

A network plumber with substantial clue in software and hardware engineering. Dealing with low latency and high throughput network systems. Able to maintain discussion on topics of BGP, Verilog, and C, had seen X.25, Cisco CGS, and X.25 on Cisco CGS in real life.