关于单片机的程序运行问题,不解!
时间:10-02
整理:3721RD
点击:
我最近看了看,单片机的结构,发现现在的单片机包括8051(或者更早的8031),都是所谓的哈佛结构,RAM和flash的地址总线是不一样的,并不像现在的冯诺依曼的结构分时复用上图
这也就是说,单片机工作时,flash的程序并不是导入到ram中去,而是和ram分别工作,看了看STM32的单片机有的书上说,M3也是哈佛结构,(cortex-M3权威指南),取指令和数据也是分别操作的,从这可以看出单片机的工作方式并不是和PC的工作方式一样,因为单片机的RAM并不是太大,提供不了那么大的内存,上图
我想问一下,STM32这种类型的单片机,可以完成哈佛的同时取指令和数据,但是8051这种结构哈佛结构好像并不能完成同时取指令和数据,因为他内部好像,说不太清楚,求解释?
另外这种程序运行时,分别取指令和数据的方法,相比于冯诺依曼的方式,是否显的有点慢啊,不是很清楚,哈佛结构比冯诺依曼结构到底快在哪里?
没有书上说,只是自己分析的,呵呵!再说了,有的教科书也不对啊!
多级流水线,估计得用多总线啊,要不然的话,一个数据还没发送完,是不可能第二条指令的,会有干扰!
冯诺依曼的结构只是说,数据线和程序线分时复用,单片机虽然是哈佛结构,数据线和程序线分来,但是它并不能同时去数据和地址,所以也可以叫冯诺依曼结构,但是数据线和程序线确实分开了。
现在的M3啥的,确实已经是哈佛结构!《Cortex-M3权威指南.pdf》这本书明确写的清楚!