馮諾依曼結構和哈佛結構
哈佛結構是,數據和代碼分開存在。
馮諾依曼結構是在哈佛結構之後提出的,馮諾依曼提出“代碼本身也是一種數據”,解決了哈佛結構的一個問題——總線暫用資源太多。
馮諾依曼結構是,數據和代碼放在一起。
首先,通過BIOS(Uboot)將硬盤(Flash)中的程序(數據和代碼),全部拷貝到RAM。所以此時
RAM內部會分爲多個段——代碼段,date段,bss段等等。這樣相比哈佛結構,就節省了一套外部的數據總線和地址總線。
但是這樣也會帶來的壞處——速度變慢了。本來數據和代碼是分開存儲的,他們分別對應“兩條高速通道”。現在,數據和代碼都放在一起對應“一條高速通道”。
而隨着半導體工業的發展,很多東西可以集成到芯片內部。在芯片內部走線比在PCB外部走線成本要低出很多。
也就是說,哈佛結構很適合被設計到芯片內部。而馮諾依曼結構仍然存在於芯片外部。
於是乎,便出現了現在的馮諾依曼和哈佛結構並存的混合式結構:
這種結構就是目前ARM的結構,將兩種結構揚其長,避其短。其中,芯片內部的cache,表示高速緩存(cache一詞據說來自法語,難道cache是法國人發明的?哈哈。)Dcache用來緩存部分代碼,icache用來緩存部分數據。只有需要改變時,cache纔會到RAM中加載新的數據。所以大部分時間CPU都是通過哈佛結構和cache(高速緩存)通訊,這個速度是非常快的~~
這樣在芯片外部,利用馮諾依曼結構,節省了外部的PCB走線資源。
在芯片內部,利用哈佛結構提高了CPU訪問數據的速度。可謂是兩全其美~~