一 冯诺依曼和哈佛结构和改进型哈佛结构分别是什么
冯诺依曼结构
数据和程序在同一块内存(按照代码的执行顺序依次存储),只有一根总线(数据总线?控制总线?),取数据和取指令分时。
优点:充分利用有限的空间,cpu对程序执行十分方便,不用来回跑;
附图 :略
缺点:当程序出现bug时,没有对逻辑代码段读写限定,他和普通变量一样拥有读写操作权限,很容易死机,一旦逻辑执行出现一点改变就会出现非常严重的错误。
使用在:英特尔8086,arm的arm7,mips
哈佛结构
数据和程序分开存储,这里注意实际在内存里,指令和数据是放一起的,而在CPU内的缓存中,还是会区分指令缓存和数据缓存,最终执行的时候,指令和数据是从两个不同的地方出来的。可以理解为在CPU外部,采用是冯诺依曼模型,而在cpu内部用的是哈佛结构。
(对于存储位置没有规定,比如51程序放在ROM,变量ram。ARM程序和变量都放在RAM。但是要求空间上互不干扰),相比于冯诺依曼结构,当呈现出现bug时候,最多只会修改变量的值,而不会修改程序的执行顺序。这种结构大量用于嵌入式编程中。
使用在:英特尔8086,arm的arm7,mips
Cpu:
中央处理器,代码(程序代码-机器代码-二进制代码)一句一句放入其中执行
Register:
cpu直接从寄存器中拿代码和数据(cpu是皇上,数据和代码是文武百官,那么寄存器就是皇上身边的太监),特点:速度快,寄存器个数少
数据区,代码区:
这两个是区分开的,即使地址相同,但是空间也是不同的,比如数据不能当作代码来运行。
处理过程:
中央处理器首先从程序指令存储器中读取程序内容,解码后得到数据地址,再相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。
哈佛特点:
使用两个独立的存储器模块分别存指令和数据,每个模块不允许指令和数据并存,使用独立的两条总线,分别作为cpu和每个模块的专用通信路径,而这两条总线之间毫无关联。
改进型哈佛结构:
使用两个独立的存储器模块分别存指令和数据,每个模块不允许指令和数据并存。
使用于arm的arm9,10,11 及51单片机,alter的avr等,多应用在嵌入式领域
两个架构区别及适用
最大区别在于冯诺依曼结构的计算机采用代码和数据统一编址,而哈佛结构是独立编址,代码空间和数据空间是完全分开。
哈佛结构设计复杂,但是效率高。
二 CISC和RISC的区别
CISC:即复杂指令集,一个汇编指令完成复杂的工作。处理一个运算,它可以在一个机器周期就可以完成了,其内部硬件设计相对复杂,功耗高,例如 51单片机
RISC:即精简指令集,比如(1+1)*(1+2),第一次先算1+1,第二次计算1+2,最后再计算相乘,要经历好几个机器周期才能完成一次运算。如果用负责指令集可能一个机器周期就就可以算出了。所以精简指令集在单核效率上不如复杂指令集,为了达到与复杂指令集同样的运算效率,常常会增加核数来提升处理效率。
三 地址总线、数据总线、控制总线的区别
地址总线:cpu要处理的数据首先地址总线会根据数据所在的内存的地址找到要处理的数据,然后对其进行相应的处理。(地址总线的宽度决定了cpu能够处理的数据地址的总量的大小)
数据总线:cpu需要读取或者写入数据的时候由地址总线先去寻址,然后再由数据总线对所读到地址进行读或者写操作(cpu一次读写的数据总量由数据总线的宽度决定)
控制总线:cpu对外部的外设进行操作的时候,控制总线会对相应的外设发出相应的控制指令,然后再由数据总线对其进行操作,控制总线是双向的且十分灵活。
四 统一编址和独立编址
Cpu在处理数据的时,先需要控制下哦那根线发出控制指令,然后对外设(这里的外设包括IO设备和内存)进行寻址操作,只有找到了要操作的硬件或者内存的地址之后才能对其进相应的操作。而这个寻址方式是由cpu对地址的编制方式决定的。编制方式分为独立编址和统一编址。
统一编址:cpu要对IO设备进行寻址时,直接只用地址总线进行寻址,因为地址总线宽度确定寻址范围则一定,而如果使用地址总线直接对IO设备进行寻址,那势必会占用有限的地址,进而会导致对操作内存的大小有所限制,比如32位地址总线可以寻址4G的内存地址,但是由于一般外设占用了他的地址,所以所能使用的内存就会小于4GB.
独立编址:
CPU在对IO设备进行操作的时候会有专门的操作指令,而不会用内存操作指令。这样子地址总线仅仅服务于内存,而不会被其他外设IO所真用,内存大小等于地址总线的宽度。