In this blog post, we will examine why optimization at the boundary between hardware and software is important for technological advancement.
The iPhone boom and smartphone boom is a social phenomenon that we have all experienced directly or indirectly, lasting less than a year and perhaps still continuing today. Smartphones have had a wide-ranging impact that goes beyond the development of devices to affect lifestyles and social structures. As a result, smartphones have become more than just communication devices; they are now essential tools for managing personal information and data and performing various tasks. However, it is not widely known that this process has been accompanied by a paradigm shift from hardware to software and firmware. In fact, it is easy to overlook the fact that many of the technologies we use in our daily lives are the result of this paradigm shift. The fields of study introduced in this article are the borderline areas between hardware and software, such as operating systems, compilers, and computer engineering, where this paradigm shift can be deeply felt. The terms “hardware” and “software” are commonly used, so you probably have a general idea of what each refers to.
However, it is often difficult to understand the boundary between the two. Therefore, before discussing the boundary between hardware and software, it is necessary to briefly define hardware, software, and firmware. As the name suggests, hardware refers to hard goods, or goods that have a physical form or are difficult to change. This includes electronic components that we can see and touch, such as semiconductors and hard disks. This hardware is an important factor that determines the basic performance of devices such as computers and smartphones. On the other hand, software, as the name suggests, refers to soft products, or products that do not have a physical form or are easy to change. This includes operating systems such as Windows, all programs that run on computers, and applications used on smartphones, which are commonly referred to as programs. Software enables hardware to be used effectively and can be continuously developed and changed according to user needs. Finally, firmware is a solid product that lies between hard and soft products, and is a program that runs at a deeper level to enable software to run on hardware. The most representative example is the BIOS of a computer.
However, the boundary between hardware and software is not necessarily the field of firmware, which connects the two. Although the final objectives and categories of hardware and software handled by the various fields included in this boundary area differ, they ultimately pursue the harmony of hardware and software, similar to the role of firmware, which is one of the tools for achieving this harmony and actually deals with hardware and software in greater depth. For example, while hardware can provide more powerful performance, software must be continuously optimized and improved to maximize the potential of this hardware. This optimization process is not a simple modification of code, but begins with understanding the close interaction between hardware and software.
Let’s take a quick look at the field of compilers to see how hardware and software are harmonized. Compilers translate the tasks that general programs are supposed to perform into commands that computer machines can understand. To give a very simple example, they convert “c=a+b” into “0001100001010011.” You might think that it would be enough to simply match the binary numbers to the corresponding commands, but it is not that simple because modern programs do not use only simple arithmetic operations, and the set of binary commands that must be used varies depending on the hardware device. For example, small devices such as smartphones require efficient code optimization to minimize power consumption, which means that a deep understanding of the hardware is essential. Therefore, a deep understanding of both hardware and software is necessary. Strictly speaking, compilers themselves are programs and software, but because they connect software and hardware in terms of their functions, and because they require an understanding of hardware unlike general software, they exist in the borderline area between hardware and software. Other fields also encompass both sides, sometimes using hardware, sometimes using software, and sometimes dealing with firmware, each in their own way.
Now that we know where the boundary between hardware and software lies, why is this field an important area of research? Without progress in the boundary area, if the point of contact and rules between hardware and software remain fixed, both sides will be bound by those rules and their progress will be limited. For example, in the past, technological progress was mainly driven by improvements in hardware performance, but today, hardware development without software optimization is likely to reveal its limitations. However, by keeping an eye on the development of hardware and software and making efforts in the boundary area to ensure compatibility between the two, hardware can develop in new directions with new technologies, such as enabling multiple computers to work together, rather than simply increasing the speed of a single computer. On the software side, it will be possible to develop and use more advanced languages. This enables new combinations of hardware and software, which ultimately plays an important role in providing a better experience for users. It may be difficult to say that this is the core area of technological advancement, but it is an area that ensures technological advancement.
Finally, I would like to conclude by briefly discussing the paradigm shift I mentioned at the beginning. Two or three years ago, when I talked to my seniors who were electrical engineers about the boundary between hardware and software, most of them advised me to jump into the hardware field, which is the foundation of such developments. This was probably because of their belief in semiconductors, or hardware, which had been the driving force behind Korea’s economic growth. And since the performance of devices at that time depended on the hardware, their perspective was reasonable. However, amid the iPhone boom and smartphone boom, Korean developers faced a barrier: the need for software to run on the hardware. The greatest advantage of the iPhone was the diversity, usefulness, and fun of the applications that ran on it, so it was necessary to develop the same software and secure content. However, this was difficult for developers who had been focused on hardware, so software developers were recruited. This was clearly a reasonable strategy, but one important point was overlooked, and now a significant number of smartphone users say they will switch to an iPhone when they replace their device. What Korean developers missed was the optimization between hardware and software, or in other words, they failed to gather enough personnel who fully understood the boundary between the two. The constant criticism of Korean devices is that “the hardware is excellent, but the performance is inferior to other products with inferior hardware.”
As such, the boundary between hardware and software is an area that must be continuously researched whenever a new hardware market opens up or a new software platform emerges. Furthermore, this boundary area will play an even greater role with the emergence of new technologies. Although it may not be apparent from the specifications listed on the surface, this is an area where efforts are made to ensure that the specifications advertised are actually what users experience.