@adlrocha - The role of Hardware in Emerging Technologies

We all wish HW prototyping was as cheap as SW prototyping

Originally published in https://lastbasic.com/blog

macro photography of black circuit board

Software prototyping is cheap. This is why every day we see a new service powered by AI, blockchain or IoT. You just need your personal computer or laptop, an internet connection, maybe access to some of the resources offered by a public cloud provider to speed your development and you are ready to go. But what about hardware prototyping? When we talk about hardware, things aren’t that easy, right? You don’t have a pay-as-you go public offer of hardware pieces to test your ideas and iterate over your designs. If every time you want to try a new implementation you need to buy a new piece of hardware or request the manufacture of an ad-hoc ASIC, by the time you are done with your product you may be broke. Especially if you are approaching a product in an innovative way, without funding and a history of past successes.

There is no SW without HW

All software is consumed through hardware, this is something that we must never forget when we are building our product. It may appear that when we talk about innovation in technology like blockchain, AI or IoT, we are exclusively talking about software, but we are disregarding the role of hardware in these advancements. Blockchain is cryptography and distributed systems, but also the hardware miners need to run the consensus, the network infrastructure required to deploy a global network, and what about the implementation of new advancements such as HW VDFs? (something briefly introduced in this newletter); AI is fancy training algorithms (see, for instance, OpenAI’s recent GPT-3, which I am really looking forward to playing with and share with you here) as well as all the hardware for parallel computation and data management that made this field —and the problems it tackles— accessible to anyone. And what about IoT? IoT is essentially the co-design of hardware and software.

brown circuit board on laptop

Owning the hardware allows for delivery of the best possible experience. One of the reasons Apple products are so popular is because they deliver a great experience. They do so in large part due to Apple’s strategy of vertical integration: a strategy where Apple makes both its software and hardware in-house. Apple designs and develops iOS as well as the A11 processor running in iPads and iPhones.

But the importance of Hardware is not only what separates us from stability and a good user experience, in many cases it is directly the reason why a new technology isn’t a reality yet. Take quantum computing as the perfect example. We have been hearing the goodness and potential impact of quantum computing for ages, why don’t we have a brand new quantum computing in our living room yet? Let me give you a hint, hardware.

Since the 80s we have been theoretically discovering and improving powerful quantum algorithms that would be able to break the encryption of the internet or find new molecules, but we don’t have the hardware to run them. Engineers all over the world are working hard to provide us with more qubits, lower error rates, greater connectivity of qubits, and the possibility of running quantum hardware in friendlier environments — did you know that the coldest places in the universe are the cryogenic chambers where we run quantum circuits? You are welcome, now you have something to brag about in your next dinner party.

UNIVAC I control station, in Museum of Science, Boston, Massachusetts, USA, by Daderot.

Fortunately, if you went back to the 40s or 50s in a time machine and asked experts about the future of their computers, few would practically project the degree of advances that have been made in processor speed, memory size, data storage size, physical size and ease of use. If you had suggested trying to fit a room-size mainframe in a shoebox, let alone a machine a hundred times more capable, they would have laughed at you, but that’s the scope of the challenge ahead of us for quantum computers. You see? It all comes to better hardware.

The return of HW-SW co-design?

And what can we, as ordinary mortals without a PhD and big pockets, do to build innovative products considering the important role of hardware in technology? Fortunately, there are two things that are going to help us in our endeavor to cheaper prototyping and better designs: hardware-software co-design and FPGAs.

The core concepts in hardware-software co-design are getting another look, nearly two decades after this approach was first introduced and failed to catch on. What’s different this time around is the growing complexity and an emphasis on architectural improvements, as well as device scaling, particularly for artificial intelligence and machine learning applications. Software is a critical component, and the more tightly integrated the software, the better, the power and performance. Software also adds an element of flexibility, which is essential in many of these designs because algorithms are in a state of almost constant flux.

The initial idea behind co-design was that a single language could be used to describe hardware and software. With a single description, it would be possible to optimize the implementation, partitioning off pieces of functionality that would go into accelerators, pieces that would be implemented in custom hardware and pieces that would run as software on the processor — all at the touch of a button (well, or a compiler).

And the only piece of hardware that you need for this apart from your laptop, a Field-Programmable Gate Array, or FPGA. FPGAs are a semiconductor IC where a large majority of the electrical functionality inside the device can be changed; changed by the design engineer, changed during the PCB assembly process, or even changed after the equipment has been shipped to customers out in the “field”. So combine an FPGA and the field of software-hardware co-design and not only do you have a way of approaching the design of your full product down-top, but you also have the platform you need for cheap hardware prototyping. Forget about buying and assembling brand new pieces for every iteration of your product and adapting your software to it, with this set-up the only thing you would need to test a new version of your implementation is re-programming the FPGA — just like with software.

Make HW great again!

I know hardware is not as sexy as software, but I feel it is key for the future of technology. If you’ll allow me to make a confession, I am an electrical engineer by training that felt in love with software along the way, so the idea of making hardware as “accessible” as software, and give everyone the capability of building a hardware system as easily as we now build software systems excites me greatly, and is a field I am really looking to explore. Let me know if you want to join me in this quest!