一.处理器结构1.冯诺依曼结构2.哈弗结构3.改进型哈弗结构1.冯诺依曼结构•必须有一个存储器;•必须有一个控制器;•必须有一个运算器,用于完成算术运算和逻辑运算;•必须有输入和输出设备,用于进行人机通信。冯诺依曼结构的特点是指令和数据共用一个数据存储空间这样难免会有冲突,影响数据处理速度。Intel的x86处理器都属于冯诺依曼结构2.哈弗结构哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,指令和数据采用两条总线分别访问指令存储器和数据存储器。哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。DSP和ARM多采用哈弗结构3.改进型哈弗结构ControlUnitALUI/OInstMemoryDataMemory哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,但只指令和数据采用一条总线进行分时复用。改进之处在于数据总线和程序总线之间进行局部的交叉连接,这一改进允许数据存放在程序存储器中,并被算术运算指令直接使用,增强了芯片的灵活性。80251mcu支持哈弗结构esi1600mcu支持哈弗结构和改进型哈弗结构总结体系结构与采用的独立与否的总线无关,与指令空间和数据空间的分开独立与否有关。冯诺依曼结构实现简单,总线资源少,但处理速度有瓶颈。哈弗结构处理速度快,但相对实现难度大一点,成本较高。二.指令集简单来说,指令集就是汇编指令,每一款或者某一系列CPU厂家都会有相应的指令集支持。CPU最终能识别到的是0/1这种二进制码,通常编译器会将C语言等高级语言变为二进制文件,同时也会生成汇编语言,汇编语言可直观反应出代码的逻辑关系。操作数与操作码对于一个简单运算C=A+B是怎样让计算机识别到的?A、B、C称为操作数,+称为操作码,CPU里面有运算单元ALU,所以就需要想办法让CPU识别这一逻辑运算,并送到ALU中执行。操作数通常存在Memory中,由于访问memory速度较慢,所以CPU一般会定义一些通用寄存器用于存放中间计算结果。C=A+B运算转换为汇编行为如下(以为只是示例,实际不同CPU可能有所不同)loadR3,#0;//从内存地址0取出A放在R3中loadR2,#1;//从内存地址1取出B放在R2中addR0,R3,R2;//把R3和R2相加,结果存到R0中storeR0,#2;//把R0的值写到内存地址2中以上每条语句就是一条指令,load、add、store为操作码,操作码后跟的是操作数。cpu是不认识这些操作码和操作数,所以需要变成0、1这种二进制码。对于以上几条汇编指令可以进行以下编码汇编操作码对应机器码load00add01store10其它11寄存器对应机器码R000R101R210R311对add指令进行如下定义bit7bit6bit5bit4bit3bit2bit1bit0操作码第1个操作数第2个操作数第3个操作数经过编译器编码以后汇编指令机器码addR0,R3,R2;01001110指令集的分类CISC---复杂指令集(complexinstructionsetcomputer)RISC---精简指令集(reducedinstructionsetcomputer)CISC指令集的代表就是intel的x86指令集,ADM的PC处理器也属于x86指令集(IBM要求有2家以上的供应商,要求intel开放给AMD)RISC指令集的处理器比较多ARM、DSP,目前公司使用的esi系列CPU也属于RISC指令集。CISC和RISC的区别简单点说就是,RISC指令集只集合了程序比较常用的指令,而这些比较常用的指令可能只占整个指令集的20%。所以对于RISC指令集的cpu设计时就不用花费资源去实现那些不经常使用的功能。Intel的x86指令集有1000多页,而普通的RISC指令集一般只有二、三百页。后RISCRISC指令集的处理器在性能上要优于CISC,但由于兼容性问题intel又不能直接做RISC指令集的处理器,所以intel采用了一种新架构,对外仍然使用CISC指令集,而内部实际是RISC的内核,在中间加入了将CISC指令解码RISC指令的模块。Intel比较经典的奔腾处理器就属于这种结构。变长指令集定长指令集一般一条指令的长度为8bit/16bit/32bit等等CISC属于变长指令集传统的RISC指令集为了译码方便都采用定长,但这样会导致程序存储空间变大,进而降低了cache的命中率,影响程序执行效率。所以后期很多处理器都支持简单变长指令集,这样在实现难度没有增加多少的情况下大大提高了程序效率。esi1600支持16位和32位混...