harvard-architecture

Does the Harvard architecture have the von Neumann bottleneck?

生来就可爱ヽ(ⅴ<●) 提交于 2021-01-28 08:41:45
问题 From the naming and this article I feel the answer is no, but I don't understand why. The bottleneck is how fast you can fetch data from memory. Whether you can fetch instruction at the same time doesn't seem to matter. Don't you still have to wait until the data arrive? Suppose fetching data takes 100 cpu cycles and executing instruction takes 1, the ability of doing that 1 cycle in advance doesn't seem to be a huge improvement. What am I missing here? Context: I came across this article

von neumann vs harvard architecture

99封情书 提交于 2019-12-09 05:37:21
问题 Why computer architecture based on von Neumann architecture is preferred over Harvard architecture, when designing personal computers; while Harvard architecture is used for designing microcomputer based computer systems and DSP based computer systems? 回答1: Well current CPU designs for PC's have both Harvard and Von Neumann elements ( more Von Neumann though ). If you look at the L1 caches you would see that in AMD, ARM and Intel systems you have Instruction L1 Cache and Data L1 Cache, that

How to make two otherwise identical pointer types incompatible

一曲冷凌霜 提交于 2019-12-05 20:33:00
问题 On certain architectures it may be necessary to have different pointer types for otherwise identical objects. Particularly for a Harvard architecture CPU, you may need something like: uint8_t const ram* data1; uint8_t const rom* data2; Particularly this is how the definition of pointers to ROM / RAM looked like in MPLAB C18 (now discontinued) for PICs. It could define even things like: char const rom* ram* ram strdptr; Which means a pointer in RAM to pointers in RAM pointing to strings in ROM

How to make two otherwise identical pointer types incompatible

余生颓废 提交于 2019-12-04 03:31:42
On certain architectures it may be necessary to have different pointer types for otherwise identical objects. Particularly for a Harvard architecture CPU, you may need something like: uint8_t const ram* data1; uint8_t const rom* data2; Particularly this is how the definition of pointers to ROM / RAM looked like in MPLAB C18 (now discontinued) for PICs. It could define even things like: char const rom* ram* ram strdptr; Which means a pointer in RAM to pointers in RAM pointing to strings in ROM (using ram is not necessary as by default things are in RAM by this compiler, just added all for

Issue with NULL pointers on Harvard Architecture platform

我怕爱的太早我们不能终老 提交于 2019-12-04 02:47:02
问题 Interesting issue we came across here this week. We are working in C on a Harvard Architecture embedded platform, which has 16-bit data addresses and 32-bit code addresses. The issue occurs when you are working with function pointers. If you have code like if (fp) fp(); or if (fp != 0) fp(); everything is fine. However if you have code like if (fp != NULL) fp(); then, because NULL is defined as (void *) 0 , the compiler (gcc in this case) a) does not warn and b) does a 16-bit comparison