Programmers should have a basic understanding of the different computer components. The motherboard is an important component as its name implies. In this article we explain what a motherboard is, its basic uses and how it can relate to programming.
Backbone of a Computer
A motherboard is often described as the backbone of a computer. This description is on the spot in my opinion, because it holds and connects all the basic components of a computer together, just like a backbone. Motherboards have different sockets to plug in the different components of a computer. Some of the important components are:
- A CPU (Central Processing Unit)
- A graphics card
There are many other components which I left out in order to focus on the most important ones to develop a basic understanding of the functioning of a computer.
While the main purpose of a motherboard is to connect components of a computer together, the main purpose of the Central Processing Unit (CPU) is to constantly process data. A motherboard doesn’t have processing power of its own. The CPU processes the data resulting from commands that are constantly given by the user and running programs. As a result it produces a lot of heat, that’s why a fan is often close to it. The CPU is located in a protective socket on the motherboard that works like a lock.
A graphics card processes the data necessary to produce a visible image on the screen. The graphics card contains a Graphics Processing Unit (GPU), which is its most important component. The GPU does graphical computation and without it you can’t see anything on the screen. Sometimes the GPU is integrated with the CPU without the computer having a formal graphics card. The graphics card often has a slot close to the CPU.
Memory (in different kinds) is necessary to store data and access data. Two types of memory are pointed out here (there are many more). The first one is Random Access Memory (RAM). This is a kind of temporary memory. It is very fast and works very closely with the CPU. RAM is attached to different slots on the motherboard. A motherboard often has some unused empty slots intended for expanding the RAM.
A second kind of memory I wanted to mention, is the hard drive memory. It is a more permanent type of memory. If you save something, most of the time it goes in here. It is readily available, because it’s cheap but on the other hand much slower than RAM. The hard disk drive takes a significant amount of space and is not directly attached to the motherboard, instead they are connected through cables.
A motherboard often has a small memory chip containing what is called the BIOS (Basic Input Output System). This is special software to control the booting process and basic hardware configurations. It also has other functions like testing the condition of the hardware. The BIOS is the very first software executed when the computer is powered on.
The BIOS is a type of firmware, software specifically designed and connected to specific hardware. Firmware is known to be not very secure against hacking, because it’s updated rarely. Threats are hard to detect, because firmware operates kind of independently.
To address many of the issues in a BIOS type of firmware, UEFI (Unified Extensible Firmware Interface) is developed as a replacement. UEFI has some advantages and extra functionalities. Advantages are that it’s generally speaking more secure and the booting process is faster. Unlike BIOS, UEFI has network capabilities as an additional feature.
UEFI has actually become more of a standard than BIOS. It is still often referred to as BIOS while it is in fact UEFI. An indication to recognize you’re actually dealing with UEFI is a graphical user interface (GUI) and a mouse cursor. However, this doesn’t necessarily have to be the case, because manufacturers often choose a design like a traditional BIOS.
Despite UEFI being a clear improvement compared to BIOS, different vulnerabilities and problems have been pointed out over the past years by critics.
BIOS or UEFI Programming
The BIOS or UEFI is particularly interesting for programmers, as it is software that can be adjusted and programmed. BIOS or UEFI programming can be a useful skill for programmers, because it can be used to repair computers. However, messing with firmware can lead to serious problems. You have to know what you’re doing before actually applying it to a computer of real value.
What languages are used to program BIOS and UEFI? As firmware is very close to hardware it is typically done in assembly language (BIOS) or a very low level programming language like C (UEFI). Read this article for more in depth explanation about the different types of programming languages.