56

If I understand correctly modern computers are modeled after the Von Neumann architecture. I have sometimes seen reference to alternatives, but haven't really seen any very good descriptions of how non-Von Neumann architectures would be organised and function.

Does anyone have any examples? What are the advantages/disadvantages of alternative computer organization?

Erik Kaplun
  • 37,128
  • 15
  • 99
  • 111
Steve
  • 1,849
  • 2
  • 19
  • 19

9 Answers9

28

Examples of non von Neumann machines are the dataflow machines and the reduction machines. In both of these cases there is a high degree of parallelism, and instead of variables there are immutable bindings between names and constant values. non von Neumann is usually reserved for machines that represent a radical departure from the von Neumann model, and is therefore not normally applied to multiprocessor or multicomputer architectures, which effectively offer a set of cooperating von Neumann machines.

meena
  • 281
  • 2
  • 2
  • 1
    This is the answer I was looking for. The accepted answer about the Harvard architecture offers simple variations of von Neumann, while this answer offers alternatives that are indeed, a "radical departure" from von Neumann – ianstarz Jun 01 '16 at 02:40
  • 4
    Source: https://www.encyclopedia.com/computing/dictionaries-thesauruses-pictures-and-press-releases/non-von-neumann-architecture – tom May 01 '18 at 03:18
20

I believe the most common one would be the Harvard architecture or the Modified Harvard architecture which is used in a lot of ARM based chips. I am sure there are many differences, but here is one that stands out

In a computer using the Harvard architecture, the CPU can both read an instruction and perform a data memory access at the same time, even without a cache.

Bob
  • 97,670
  • 29
  • 122
  • 130
  • 16
    Another advantage is that that means that you cannot treat instructions as data, and THAT means that with the right computer design you literally cannot hack the machine through software. I heard about a voting machine that used this architecture and the only reason it was hacked was because of a faulty cartridge design allowing them to slip a jump instruction into a buffer overrun, which then they pieced together a turing-complete language from bits of functions (which took man months to do) . For more, see http://www.grc.com/sn/sn-211.txt and search for: "That's shocking. You know," – RCIX Nov 27 '09 at 03:00
  • 4
    Although, to be fair, with OS support some Von Neumann archs such as x86 has support for W^X. That means that if you write to a page of memory you can not execute it and if you execute it you can not write to it.. The x86 supports this in hardware with the NX bit. – Earlz Jan 05 '10 at 15:41
  • 1
    @RCIX: No, they didn't slip a jump *instruction* into the buffer overrun; the whole point is they couldn't. What they did was use the buffer overrun to slip a few jump *addresses* onto the stack, and then managed to leverage that to misuse other code to keep putting more bogus jump addresses onto the stack. – Brooks Moses Dec 24 '12 at 02:41
  • 3
    @RCIX: Hacking systems is definitely not limited to just arbitrary code execution. Systems can often also be tricked into displaying information that they shouldn't, or into writing bad configurations back to a file or database that allow you to exploit the system later. It's unlikely that hardware will ever be able to make up for all of the bugs we write. – Dan Albert Sep 20 '13 at 15:30
  • 1
    @Earlz, W^X can be defeated by using "return-oriented programming." http://cseweb.ucsd.edu/~hovav/dist/sparc.pdf Also google "The geometry of innocent flesh on the bone" which gives a very detailed analysis of the attack technique. – avgvstvs Nov 28 '13 at 16:06
  • 1
    @avgvstvs: So can a Harvard machine, so yeah, W^X gives you essentially the same purported advantage as a pure Harvard. These days it's a pretty basic precaution, 9 years on from your comment. Machine-code injection attacks are AFAIK pretty much non-existent, and recent hardening of compilers / linkers has been around making ROP gadgets harder to find by keeping things out of executable pages if they don't strictly need to be there (e.g. the `.rodata` section, and giving `.text` page alignment so it doesn't have some other stuff sticking into it.) – Peter Cordes Mar 26 '22 at 08:04
  • @PeterCordes A genuine thanks for this bit of information! At the time I made that comment I had pretentions of being an exploit engineer down that path and you've helped "close a loop" lol. Turns out that even back then, web technologies were a better focus as far as impact regarding the world of exploitation. Why bother with ROP when you have an SQL injection? That said, I get excited when I see things like the ANC bug a few years back. (Javascript to defeat ASLR) – avgvstvs Mar 27 '22 at 15:10
12

Cellular automata - this predated neural network, but the ideas are very similar.

http://en.wikipedia.org/wiki/Cellular_automaton

Neural networks can be viewed as a form of cellular automata, or a distinct non-von Neuman architecture of their own.

http://en.wikipedia.org/wiki/Neural_network

Larry Watanabe
  • 10,126
  • 9
  • 43
  • 46
3

Quantum computers are also another example. They differ from other computers, mainly because of the order of time needed for a problem to be solved on them. Classical computers can be modeled using a Turing machine whether von Neuman or Harvard. They have their own model called a Quantum Turing Machine.

Erik Kaplun
  • 37,128
  • 15
  • 99
  • 111
Mohsen
  • 31
  • 1
1

Another example: The machines that are not problem independent (the case of most of the machines today).

An obviously Example is the Enigma-Machine. Used by German Army in the Second World War: It can solve just one problem: The encription of Communications!

In v. Neumann Architectures the Machines should be capable to solve any possible problem. The only limitation that time was actually the technologies used to build computers :P

AsamRegnat
  • 91
  • 8
1

data flow computers and reduction computers are the example of non von neumann arhchitecture.

sona
  • 11
  • 1
0

What about Analog Computers? I guess they use different architecture.

ArturoTena
  • 713
  • 5
  • 15
0

The Brain could be considered a non-von neumann architecture computer. IBM is currently working on a non-von neumann solution. HP labs "The Machine" may also be non von-neumann.

user1457165
  • 15
  • 1
  • 4
-1

PIC microcontrollers use the Harvard architecture. See www.microchip.com or https://en.wikipedia.org/wiki/PIC_microcontroller. These are very cheap controllers that can be programmed to control different devices, like turning on lights or starting a motor. The fun part from programming point of view is that the program code is in memory and all variables are kept in registers.

TapioT
  • 11
  • 1