What is all of this?
If none of the words you have read so far have made any sense to you, or that you have trouble totally understanding what these mean, fear not for I will show you.
Both of the architectures described in this post are the two types of computer architectures used when designing processors and devices, and is useful information to have if you are writing code for specific types of devices.
To start off, computer architecture is relating to how information and data are treated and sent to the control units in the computer.
So now that the very basics are covered, lets get into it!
Harvard Architecture
As I stated earlier, Harvard architecture is a form of computer architecture that determines how the computer will handle data and instructions.
In this architecture, data and instructions are treated as separate entities and types of information by the computer. Each one s given a separate storage and signal pathway.
The separation of data and instructions in this way allows for the computer to be able to retrieve instructions and read them, while also perform data memory access simultaneously.
Harvard architecture is often used in digital signal processors (DSPs), microcontrollers, and certain high-end calculator CPUs.
However, this is not as true in most computers these days, as they tend to use CPUs (central processing units) that utilize both Harvard and von Neumann architectures. This means that there are seperate lanes for certain information and data from different parts of the computer. But the information and data in these lanes are treated as the same type of information.
We will see why this is in the next section.
von Neumann Architecture
Also known as Princeton Architecture, it is based on a description by the mathematician and physicist John von Neumann, and others in the First Draft of a Report on the EDVAC.
This architecture treats instructions as data, therefore all information is seen as the same. And in a way this means that data and instructions could be run simultaneously, however there is no way to tell if this is happening, and there is no boost if it does.
Having instructions interpreted as data is very useful for all tools that essentially do the programming for you, because without von Neumann architecture they would not be possible.
Assemblers, compilers, and other automated programming tools would be impossible without this architecture. The heavy use of some of these tools in certain programming languages is another reason that both von Neumann and Harvard architectures are used in modern CPUs.
A problem that can occur with von Neumann architecure is bottle-necking due to the idea of a shared bus. This is not a problem though, as it can be mitigated through a number of ways, such as adding an additional cache between the CPU and the main memory.
As well, von Neumann allows for the creation and use of self-modifying code, which is capable of causing itself to have problems and bugs. But that is more of a software issue rather than an issue with the architecture.
Final Word
If you are deciding between using a certain architecture, then you should take a good look at what type of product you are building. As computer CPUs utilize both architectures, and some products only use one.
I assume that the majority of people are not reading this in hope of beating out AMD and Intel with a new type of processor. So if you are a programmer or interested in computer science, then the decision between which architecture is better is really dependent on what it is being used for.
Thanks for reading, and have a great day!