3计算机组织与体系结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3Sept.2008Confidential三、计算机组织与体系结构东软人才实训中心Copyright2008ByNeusoftGroup.Allrightsreserved3Sept.2008Confidential第三章:计算机组织与体系结构目标:本章旨在向学员介绍计算机的结构与编程模型,通过本章的学习,学员应该掌握如下知识:计算机的存储组织寄存器组数据通路编程模型学时:3.0学时教学方法:讲授ppt+练习+案例分析3Sept.2008Confidential3.1计算机体系结构CPU内部功能部件ALURegisterFilesPCIRControlUnit处理器内部除了基本的计算单元ALU之外,还包含了:指令寄存器IR----用来存储要执行的指令;程序计数器PC----保存下一条执行指令在内存中的地址;通用寄存器组----存储待处理数据;控制单元--------控制ALU的执行。3Sept.2008Confidential3.1计算机体系结构图冯·诺伊曼体系结构CPUALURegisterFilesPCIRControlUnit程序数据主存冯·诺伊曼体系结构,也称普林斯顿体系结构。在这种架构里,程序指令和数据连续存储,这样程序指令和数据不能同时和处理器通信。处理器以及与存储器之间的关系是定义系统特性的关键因素。3Sept.2008Confidential图哈佛体系结构CPUALURegisterFilesPCIRControlUnit程序数据数据存储器程序存储器3.1计算机体系结构(续)哈佛体系结构的主要特点是把指令和数据分开进行存储,也就是说有程序存储器和数据存储器两个主要的存储器。很多嵌入式处理器采用这种体系结构,如DSP和8051单片机。。3Sept.2008Confidential处理器内存地址数据读写控制图CPU与主存典型框图3.2存储组织存储器和处理器就通过三总线(地址、数据、控制总线)的方式进行通信那么处理器是如何访问存储器的?需要知道处理器操作数据的特性3Sept.2008Confidential处理器内存地址数据读写控制图CPU与主存典型框图0xDD0xCC0xBB0xAA…0123图内存逻辑模型3.2存储组织字长与端序的概念字长:就是CPU一次能从内存读取的比特数目。从处理器内部角度来看,这与处理器内部数据总线宽度、寄存器位数以及ALU相关。小端序:多字节数据的低位字节放在低地址存储单元中;大端序:高位字节放在低地址存储单元中3Sept.2008Confidential问题:1、在keil环境下使用C语言,若有如下定义:structdata1{inti;charch;doublef;}b;则结构变量b占用内存的字节数是多少?2、在keil环境下inti=0x1234如何存放?大端还是小端序?3Sept.2008Confidential图3-6一个64MbytesSDRAM内存模块3.2存储组织(续)主存往往是用多个存储模块组合构成的3Sept.2008Confidential地址译码器M1M2M16…图3-7存储器组织框图数据总线3.2存储组织(续)由地址译码器给出的片选信号3Sept.2008Confidential3.3处理器单元ALU图ALU模型16位二进制数16位二进制数16位二进制数被动的执行部件-运算器处理器的计算核心是算术逻辑单元(ALU),ALU能够实现基本的算术运算和逻辑运算,以及存储和控制操作。不同处理器的ALU功能方面有一定的差异,但基本上都是在多位加法器基础上扩充功能,使得ALU能够进行多种基本运算。在这个ALU模型中,除了两个16位二进制数输入和一个16位二进制数输出外,ALU还有其它的输入和输出。其它的输入是控制信号,不同的控制输入确定了ALU当前应该进行的操作,而其它的输出则保存了完成操作的一些状态。控制信号是由处理器内部的控制器部件给出的,也就是说,运算器是在控制器的指挥控制下,来完成指定给它的运算处理功能,运算器只是一个被动的执行部件。3Sept.2008Confidential3.3.1寄存器组(RegisterFile)寄存器(Register)处理器内部特别快速的存储单元,用来创建和保存ALU操作和其它计算结果。CPU操作读取或改写存储器的数据都是经由寄存器完成不同的处理器具有不同的寄存器组-不同之处在于寄存器的数目、寄存器类型和每个寄存器的容量。-不同之处还在于寄存器的用途。通用寄存器可以用于多种目的,可以由程序员分配其功能,而专用寄存器仅限于某些特定的功能。3Sept.2008Confidential3.3.2机器指令格式与ALU模型ALU汇编指令:AddR3,R1,R9机器指令:10100011000110011010图ALU模型与机器指令助记符与操作码、操作数二进制位串形式的机器指令很难理解和记忆,通常会引入助记符,也就是汇编指令。汇编指令与机器指令是一对一的关系。3Sept.2008Confidential3.3.3指令执行过程•一条指令的执行过程分为取指、译码、执行读入CPU的机器指令并不是一步执行完的,而是需要分解为更细微的操作(微操作),也就是指令译码。每个微操作按合适的次序驱动电子线路。例如考察指令AddR3,R1,R9的执行过程,至少在ALU在进行加法操作之前,要把寄存器R9和R1中的数据送入ALU,并在ALU计算完后,将结果存到寄存器R3。3Sept.2008Confidential3.4数据通路数据通路,包括寄存器和ALU以及数据传送线路。处理器内部的数据通路可以有不同的结构,包括单总线、双总线和三总线。3Sept.2008Confidential3.4.1单总线的数据通路图单总线的数据通路通用寄存器组PCIRMARMDRAB存储器总线ALU由于一条总线在一个时间周期只能处理一次数据移动,ALU计算所需要的两个操作数就需要两个周期来移动,数据移动方面的限制会降低总体性能。3Sept.2008Confidential3.4.2双总线的数据通路图双总线的数据通路通用寄存器组PCIRMARMDRA存储器总线ALU总线1总线23Sept.2008Confidential3.5处理器编程模型处理器编程模型---名词就是处理器内部对汇编程序员可见的通用寄存器,cpu只能通过这些寄存器获得存储器以及IO中的内容进行各种各样的运算处理,形成各种动作。编程模型主要从编程角度对处理器内部结构进行抽象,也就是主要考虑数据的存储,而忽略了数据的移动。指令集---动词描述处理器基本功能的指令集合。对于汇编程序员,需要掌握编程模型和指令集。嵌入式软件工程师则至少应该理解编程模型。3Sept.2008Confidential3.5.1微控制器编程模型A(Acc)BR0R1R2R3R4R5R6R7DPLDPHDPTR图8051基本编程模型3Sept.2008Confidential3.5.2ARM编程模型r0r1r2r3r4r5r6r7r8r9r10r11r12r13r14r15(PC)CPSR310NZCV图ARM编程模型CPSR(SPSR)bits:N(negative),Z(zero),C(carry),V(overflow).3Sept.2008Confidential3.5.3寻址方式1.立即数寻址MOVA,#20;0x55AMOVA,#20程序存储MOVA,#2020从代码中获得数据立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。由CPU完成的任何操作都涉及到寻址,就是如何获得数据。对操作数寻址的不同方法称为寻址方式。寻址方式的不同在于对操作数地址信息说明的不同。3Sept.2008Confidential3.5.3寻址方式(续)2.直接寻址MOVA,20;图直接寻址方式指令中给出操作数所在的存储单元的地址。0x55AMOVA,20程序存储0x99200x993Sept.2008Confidential3.寄存器直接寻址MOVA,R0;图存储器直接寻址3.5.3寻址方式(续)在寄存器直接寻址中,操作数是存放在寄存器中的,指令中给出寄存器的名称。0xAA0x55R0AMOVA,R00xAA3Sept.2008Confidential4、寄存器间接寻址MOVA,@R03.5.3寻址方式(续)寄存器间接寻址中,操作数的地址存放在寄存器中,指令给出存放操作数地址的寄存器名。间接寻址的优点是使得对数据的存取成为动态的。0x55AR00x400xAA0x40MOVA,@R00xAA3Sept.2008Confidential5.基变址寻址MOVCA,@A+DPTR3.5.3寻址方式(续)这种寻址方式以16位的程序计数器PC或数据指针DPTR作为基址寄存器,以8位的累加器A作为变址寄存器。基址寄存器和变址寄存器的内容相加形成16位的地址,该地址即为操作数的地址。0xCADPTR0x40000xAA0x400CMOVCA,@A+DPTR0xAA将A+DPTR作为地址装载数据3Sept.2008Confidential3.5.4指令类型•按操作数数目分类(1)三地址指令OperationAddr1,Addr2,Addr3;(2)两地址指令OperationAddr1,Addr2;(3)单地址指令OperationAddr1;3Sept.2008Confidential•按操作功能划分(1)数据移动指令使用数据移动指令可以将数据在机器的不同部件中进行移动。(2)算术和逻辑指令算术和逻辑指令用来对寄存器和存储器内容进行算术和逻辑处理。(3)控制指令控制指令用来改变指令的执行次序。(4)输入输出指令输入/输出指令(I/O指令)用来在计算机和外围部件之间传输数据。3.5.4指令类型(续)3Sept.2008Confidential3.5.5堆栈操作与函数调用堆栈(stack)是函数调用机制的基础,对于程序员来说,这是一个比较重要的概念。从数据结构角度来讲,堆栈具有“先进后出”(LIFO,LastInFirstOut)的特点。从数据存储的角度来讲,堆栈就是内存的一个连续区域,在函数调用时候通常用来保存程序的返回地址。处理器内部有一个专用寄存器保存着栈顶地址,称为堆栈指针(stackpointer)。堆栈操作只能从栈顶一侧访问数据。处理器支持两种堆栈操作,入栈和出栈。3Sept.2008Confidential•嵌入式中的堆栈共生长四种情况(在入栈的时候):•前递增(又叫满递增)•前递减(又叫满递减)•后递增(又叫空递增)•后递减(又叫空递减)•“递增”说明堆栈由低地址向高地址生长,所以栈底内存标号低于栈顶内存标号。“递减”则相反。•“前”说明堆栈指针SP先调整后再进行入栈操作。“后”则先入栈,SP后调整。3.5.5堆栈操作与函数调用3Sept.2008Confidential3.5.5堆栈操作与函数调用(续)3EDD堆栈指针SPPUSHRegA;//入栈7F3EDDPUSHRegA堆栈指针SP100099999810021001100099999810021001图后递增(空递增)增长模式入栈操作StackRAM地址地址StackRAM(RegA=7F)(RegA=7F)堆栈压入数据操作只能堆栈顶部进行。在图中,堆栈指针SP总是指向栈顶。下一个压入数据存放的内存单元地址,在“压入”数据后,SP再加1(根据压入数据的字节数目)。这种模式称为“后递增增长模式”。也有另外一种模式,被称为“前递增增长模式”.两种模式中,SP的操作有所不同,一个“先压后增”,另一个“先增后压”。Intelx86处理器是“前递减增长模式”,8051微控制器是“前递增增长模式”3Sept.2008ConfidentialRegB=23POPRegB;//出栈RegB=7FPOPRegB图后递增(空递增)增长模式出栈操作堆栈指针SP7F3EDD10009999981

1 / 36
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功