Site Tools


harvard-architecture

**This is an old revision of the document!**

Table of Contents

Harvard architecture

Harvard archictecture is a type of computer archictecture. It's a type of architecture where code and data are kept separate.

The Harvard architecture can be contrasted against von-Neumann archictecture. In the latter, code and data are both stored in the same working memory (RAM). The CPU has to fetch instructions and data by accessing the same bus, leading to what is known as von-Neumann bottleneck. This doesn't really matter, of course – virtually all modern architectures (x86-64, RiscV, ARM, Apple M1, etc.) are von-Neumann architectures, because the von-Neumann architecture allows the computer to modify its own behavior on the fly.

For comparison, Harvard architecture splits data and code into two different memories. For example, data is stored on RAM or EEPROM, while code is stored on flash memory. This makes it popular in microcontrollers (MCUs) like PIC. You flash an MCU once, and it always behaves the same way. The MCU usually has no way to modify its own code.

harvard-architecture.1778953843.txt.gz · Last modified: by Ivan Janevski