This is the starting place for my articles about computers. It seems fitting to start with the Central Processing Unit (CPU), which is the key component of modern computers. The first part of my article will describe how a CPU works. The second part of the article will be an examination of how the design and usage of a CPU affects computers and how they are used.
The Workings of a CPU
The Central Processing Unit (CPU) is the key component of a computer. There are two functions within a CPU that provide a foundation for building complex software. The two basic functions are reading/writing information from memory and evaluating the information. Picture a set of bricks that are scattered in a pile. One brick by itself will not make a wall. Stacking up the bricks and cementing them together is how a structure is created. The structure can be a house, an office building, a planter or other structures. There are limitations when using bricks. If too many are stacked on top of each other, they can become too heavy and collapse. During an earthquake, they fall apart easier due to a lack of flexibility that materials like wood or steel girders have. There is great potential within the boundaries and the limitations of the brick materials. DNA is another simple building block, two strands that are built with four different units. A very simple set of tools that is used to build all of the variety of life on Earth.
A CPU uses its basic building blocks to process instructions. Only one instruction is not enough for a software application. A combination of instructions, reading/writing memory and evaluating the information, is used to build an application. Software applications are built by combining organized and processing them in a controlled fashion. There is a limit of two kinds of instructions, but with a variety in the order of the instructions, complex structure can be built.
Computers were created to help solve mathematical problems, such as ballistics projections. The architecture of computers fits in well with the use of mathematical symbols and language. This led to the use of mathematical language to describe computer functions and define software languages. Part of this processing is the use of logic to evaluate information. The logic is based on evaluating for one of two results, either true or false. There are logic systems based on multiple values, current computing is based on only two possible results. By using multiple evaluations, chained together, multiple values can be evaluated. The cost is increased complexity in the software.
The CPU requires many other bits of hardware for it to function. It sits on a motherboard which connects it to Random Access Memory (RAM), and Input/Output (I/O) devices such as monitors and keyboards. Due to the limited functions of a CPU, additional hardware is used to communicate with other devices, such as video cards. Fans surround the CPU in order to keep it cool during operation. The Basic Input Output System (BIOS) is used for self tests and to start the CPU running with a set of instructions. Without the BIOS, a user would need to type in startup instructions each time they powered the computer on.
As a result, a CPU is very powerful, so long as it has a support system to test its functions, power it up, and connect to other devices. A CPU is like a brain, which requires a body for nourishment. It is also similar to DNA since its design determines what devices are required and how they connect. We take it for granted that a computer can do almost anything, when there are real limits and boundaries based on the design and the history of hardware and software development.
How a CPU Shapes the Computer Experience
A CPU creates a flexible bridge that allows experimentation in functions. Before CPUs, once an item was created and built, its function was fixed. If you wanted to change a sword to a plowshare, it required destroying the sword by melting it and re-smithing it as a plowshare. With a CPU and the use of software, an electronic sword can be programmed to act as a plowshare, an engine or some other object by changing the instructions.
With an instruction set that is based on the reaction of electric pulses and described through the use of mathematical language, an environment is created that does not depend on human cultures and their assumptions. The use of mathematics transcends the built in history and assumptions of human language and allows many people the opportunity to write software. I saw examples of this on a project that was developing software for another country. When the customer visited to learn how to program the system, they had reference books for the software language. The descriptions were in their native language which I could not read. The examples with the descriptions were written in Pascal and I could read them and understand the example.
The use of a mathematical language also limits the set of people who could create software for computers. Many people are intimidated by mathematics and the symbols that are used to describe series of numbers. There is misunderstanding about logic and how faulty assumptions can invalidate a final conclusion. So while a mathematical language is used that transcends human languages, there is a boundary that keeps everyone from writing software.
With a limited set of people who can develop the mindset for programming, there have been many projects to emulate human language processing. The initial attempt of emulating a human language was the programming language COmmon Business Oriented Language (COBOL). The intent was to develop a language that inexperienced programmers could use. The project was somewhat successful but as programs grew more complex, the verbose structure made things more difficult to maintain. Trying to use human languages to describe simple operations and mathematical functions can lead to uncertainty in the program and uncertain results. There is a difference between the instruction of “Move the desk from the old house to the new house” and “Move the oak desk in the back bedroom of the house that is at 9393 Spruce Way to the garage of the house at 9397 Spruce Way”. The first instruction is vague and could be interpreted differently by different people. The second statement is clearer and closer to the instructions a computer requires. Even the second statement might require more clarification, such as the date and time for the move, directions for finding the houses and if permission is required to move the desk. A human can ask questions to clarify but a computer is limited to the information it has at the time. Human interaction and thought has the potential to be emulated in computers, but some additional work is still needed in this area.
The evaluation of information in a CPU is based on two valued logic. When comparing two pieces of data, a True or a False is returned. For a multi-valued logic, the results of True, False and Uncertain might be possible results. By basing the evaluation of data to two valued logic, that set the stage for the need to create very complex software in order to emulate decision making that allowed more than two outcomes. This increases the level of complexity required in software, which can limit the number of people who can write and debug the software.
With the current foundation of two valued logic and mathematics, it makes it harder to transition to a different framework, like quantum computing. In quantum computer, memory can have more than two states. With the ability to store multiple states in a single bit of memory a qubit, this can reduce processing time and increase the efficiency of the computer.
I looked at one project that has generated a programming environment to emulate quantum computing. With my understanding of microcomputers and my limited understanding of quantum computer, I was interested to see what a quantum computing language might look like. There are simulators available that allow developers to play with the concepts involved in quantum computing. There is the possiblity of multiple possible results instead of just two. This will move a set of boundaries and change how software is written. It also has the possibility of limiting the number of developers who can create software that uses this capability. By extending one boundary, another may be reduced.
I feel it is important to examine these design decisions since they influence our computers of today. By understanding the structure, it can help us to understand why our computers work the way they do.
Pictures by J.T. Harpster
Support our work on our Patreon site.