哈佛结构需要满足两点,第一点是程序和数据存储要分离,第二点是程序和数据要有独立的读取路径,显然51单片机不满足第二点,因为51单片机虽然指令是分开的,但是数据线和地址线是共用的。
真正的哈佛结构可以在cortex-M3的内部框图中看到,手册上对哈佛结构有明确的说明。
从上面的架构图可以看出,cortex-M3有两条独立的数据路径,一条用于指令,一条用于数据。
我们再稍微延伸一下,看看cortex-A9的内部架构和官方的描述。
其实这是现在比较普遍使用的一个架构,我们可以把它看成是一个混合架构,就是在芯片外部,程序存储和数据存储是在一起的,而在片内的cache层面,程序存储和数据存储是分开的。
最后回到最初的问题,51是哈佛还是冯?我觉得冯可能更合适。另外,讨论这些东西本身没什么意义,理解内涵才有意思。