《计算机组织与体系结构概述》由会员分享,可在线阅读,更多相关《计算机组织与体系结构概述(36页珍藏版)》请在金锄头文库上搜索。
1、3 Sept. 2008Confidential三、三、 计算机组织与体系结构计算机组织与体系结构东软人才实训中心Copyright 2008 By Neusoft Group. All rights reserved3 Sept. 2008Confidential第三章:计算机组织与体系结构第三章:计算机组织与体系结构 目标目标: :本章旨在向学员介绍计算机的结构与编本章旨在向学员介绍计算机的结构与编程模型,通过本章的学习,学员应该掌程模型,通过本章的学习,学员应该掌握如下知识:握如下知识: 计算机的存储组织计算机的存储组织 寄存器组寄存器组 数据通路数据通路 编程模型编程模型学时:学时:3
2、.03.0学时学时教学方法:讲授教学方法:讲授ppt+ppt+练习案例分析练习案例分析3 Sept. 2008Confidential3.1 3.1 计算机体系结构计算机体系结构CPUCPU内部功能部件内部功能部件ALUALURegister Register FilesFilesPCPCIRIRControl Control UnitUnit处理器内部除了基本的计算单元ALU之外,还包含了:指令寄存器IR - 用来存储要执行的指令;程序计数器PC - 保存下一条执行指令在内存中的地址; 通用寄存器组 - 存储待处理数据;控制单元 - 控制ALU的执行。3 Sept. 2008Confiden
3、tial3.1 3.1 计算机体系结构计算机体系结构图 冯诺伊曼体系结构CPUCPUALUALURegister Register FilesFilesPCPCIRIRControl Control UnitUnit程 序数据主存主存冯诺伊曼体系结构,也称普林斯顿体系结构。在这种架构里,程序指令和数据连续存储,这样程序指令和数据不能同时和处理器通信。处理器以及与存储器之间的关系是定义系统特性的关键因素。3 Sept. 2008Confidential图 哈佛体系结构CPUCPUALUALURegister Register FilesFilesPCPCIRIRControl Control U
4、nitUnit程序数据数据存储器数据存储器程序存储器程序存储器3.1 3.1 计算机体系结构计算机体系结构 ( (续续) )哈佛体系结构的主要特点是把指令和数据分开进行存储,也就是说有程序存储器和数据存储器两个主要的存储器。很多嵌入式处理器采用这种体系结构,如DSP和8051单片机。3 Sept. 2008Confidential处理器内存地址数据读写控制图 CPU与主存典型框图3.2 3.2 存储组织存储组织存储器和处理器就通过三总线(地址、数据、控制总线)的方式进行通信那么处理器是如何访问存储器的?需要知道处理器操作数据的特性3 Sept. 2008Confidential处理器内存地址数
5、据读写控制图 CPU与主存典型框图0xDD0xCC0xBB0xAA0 01 12 23 3图 内存逻辑模型3.2 3.2 存储组织存储组织p 字长与端序的概念字长字长:就是CPU一次能从内存读取的比特数目。从处理器内部角度来看,这与处理器内部数据总线宽度、寄存器位数以及ALU相关。小端序:多字节数据的低位字节放在低地址存储单元中;大端序:高位字节放在低地址存储单元中3 Sept. 2008Confidentialv 问题:问题: 1、在keil环境下使用C语言,若有如下定义:struct data1 int i;char ch; double f; b;则结构变量b占用内存的字节数是多少?2、
6、在keil环境下 int i = 0x1234如何存放?大端还是小端序?3 Sept. 2008Confidential图3-6 一个64 Mbytes SDRAM 内存模块3.2 3.2 存储组织存储组织 ( (续续) )p 主存往往是用多个存储模块组合构成的3 Sept. 2008Confidential地址译码器M1M2M16图3-7 存储器组织框图数据总线3.2 3.2 存储组织存储组织 ( (续续) )p 由地址译码器给出的片选信号3 Sept. 2008Confidential3.3 3.3 处理器单元处理器单元ALUALU图 ALU模型16位二进制数16位二进制数16位二进制数p
7、 被动的执行部件-运算器处理器的计算核心是算术逻辑单元(ALU),ALU能够实现基本的算术运算和逻辑运算,以及存储和控制操作。不同处理器的ALU功能方面有一定的差异,但基本上都是在多位加法器基础上扩充功能,使得ALU能够进行多种基本运算。在这个ALU模型中,除了两个16位二进制数输入和一个16位二进制数输出外,ALU还有其它的输入和输出。其它的输入是控制信号,不同的控制输入确定了ALU当前应该进行的操作,而其它的输出则保存了完成操作的一些状态。控制信号是由处理器内部的控制器部件给出的,也就是说,运算器是在控制器的指挥控制下,来完成指定给它的运算处理功能,运算器只是一个被动的执行部件。3 Sep
8、t. 2008Confidential3.3.1 寄存器组 (Register File)q寄存器 (Register) 处理器内部特别快速的存储单元,用来创建和保存ALU操作和其它计算结果。CPU操作读取或改写存储器的数据都是经由寄存器完成q不同的处理器具有不同的寄存器组 - 不同之处在于寄存器的数目、寄存器类型和每个寄存器的容量。 - 不同之处还在于寄存器的用途。通用寄存器可以用于多种目的, 可以由程序员分配其功能,而专用寄存器仅限于某些特定的功能。3 Sept. 2008Confidential3.3.2 机器指令格式与ALU模型ALU汇编指令:Add R3, R1, R9机器指令:10
9、10 0011 0001 10011 0 1 0图 ALU模型与机器指令p 助记符与操作码、操作数二进制位串形式的机器指令很难理解和记忆,通常会引入助记符,也就是汇编指令。汇编指令与机器指令是一对一的关系。3 Sept. 2008Confidential3.3.3 指令执行过程 一条一条指令的执行过程分为取指、译码、执行 读入CPU的机器指令并不是一步执行完的,而是需要分解为更细微的操作(微操作),也就是指令译码。每个微操作按合适的次序驱动电子线路。例如考察指令 Add R3, R1, R9的执行过程,至少在ALU在进行加法操作之前,要把寄存器R9和R1中的数据送入ALU,并在ALU计算完后,
10、将结果存到寄存器R3。3 Sept. 2008Confidential3.4 3.4 数据通路数据通路q数据通路,包括寄存器和ALU以及数据传送线路。q处理器内部的数据通路可以有不同的结构,包括单总线、双总线和三总线。3 Sept. 2008Confidential3.4.1 单总线的数据通路图 单总线的数据通路通用寄存器组PCPCIRIRMARMARMDRMDRA AB B存储器总线ALUALU由于一条总线在一个时间周期只能处理一次数据移动,ALU计算所需要的两个操作数就需要两个周期来移动,数据移动方面的限制会降低总体性能。3 Sept. 2008Confidential3.4.2 双总线的
11、数据通路图 双总线的数据通路通用寄存器组PCPCIRIRMARMARMDRMDRA A存储器总线ALUALU总线1总线23 Sept. 2008Confidential3.5 3.5 处理器编程模型处理器编程模型q处理器编程模型-名词 就是处理器内部对汇编程序员可见的通用寄存器,cpu只能通过这些寄存器获得存储器以及IO中的内容进行各种各样的运算处理,形成各种动作。编程模型主要从编程角度对处理器内部结构进行抽象,也就是主要考虑数据的存储,而忽略了数据的移动。q指令集-动词 描述处理器基本功能的指令集合。对于汇编程序员,需要掌握编程模型和指令集。嵌入式软件工程师则至少应该理解编程模型。3 Sep
12、t. 2008Confidential3.5.1 微控制器编程模型A (Acc)A (Acc)B BR0R0R1R1R2R2R3R3R4R4R5R5R6R6R7R7DPLDPLDPHDPHDPTRDPTR图 8051基本编程模型3 Sept. 2008Confidential3.5.2 ARM 编程模型r0r0r1r1r2r2r3r3r4r4r5r5r6r6r7r7r8r8r9r9r10r10r11r11r12r12r13r13r14r14r15 r15 (PC)(PC)CPSRCPSR310N Z C V图 ARM编程模型CPSR (SPSR) bits: N (negative), Z (
13、zero), C (carry), V (overflow).3 Sept. 2008Confidential3.5.3 寻址方式1.立即数寻址 MOV A, #20;0x55AMOV A,#20程序存储MOV A, #2020从代码中获得数据 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。由CPU完成的任何操作都涉及到寻址,就是如何获得数据。对操作数寻址的不同方法称为寻址方式。寻址方式的不同在于对操作数地址信息说明的不同。3 Sept. 2008Confidential3.5.3 寻址方
14、式 (续)2.直接寻址 MOV A, 20;图 直接寻址方式指令中给出操作数所在的存储单元的地址。0x55AMOV A,20程序存储0x9920 0x993 Sept. 2008Confidential3.寄存器直接寻址 MOV A, R0; 图 存储器直接寻址3.5.3 寻址方式 (续)在寄存器直接寻址中,操作数是存放在寄存器中的,指令中给出寄存器的名称。0xAA0x55R0AMOV A,R00xAA3 Sept. 2008Confidential4、寄存器间接寻址 MOV A, R03.5.3 寻址方式 (续)寄存器间接寻址中,操作数的地址存放在寄存器中,指令给出存放操作数地址的寄存器名。
15、间接寻址的优点是使得对数据的存取成为动态的。0x55AR00x400xAA0x40MOVMOVA,R0A,R00xAA3 Sept. 2008Confidential5. 基变址寻址 MOVC A,A+DPTR 3.5.3 寻址方式 (续)这种寻址方式以16位的程序计数器PC或数据指针DPTR作为基址寄存器,以8位的累加器A作为变址寄存器。基址寄存器和变址寄存器的内容相加形成16位的地址,该地址即为操作数的地址。0xCADPTR0x40000xAA0x400CMOVC A,A+DPTR0xAA将A+DPTR作为地址装载数据3 Sept. 2008Confidential3.5.4 指令类型按操
16、作数数目分类 (1) 三地址指令Operation Addr1, Addr2, Addr3; (2) 两地址指令Operation Addr1, Addr2; (3) 单地址指令Operation Addr1; 3 Sept. 2008Confidential按操作功能划分 (1)数据移动指令 使用数据移动指令可以将数据在机器的不同部件中进行移动。 (2)算术和逻辑指令 算术和逻辑指令用来对寄存器和存储器内容进行算术和逻辑处理。 (3)控制指令 控制指令用来改变指令的执行次序。 (4)输入输出指令 输入/输出指令(I/O指令)用来在计算机和外围部件之间传输数据。3.5.4 指令类型 (续)3
17、Sept. 2008Confidential3.5.5 堆栈操作与函数调用 堆栈(stack)是函数调用机制的基础,对于程序员来说,这是一个比较重要的概念。从数据结构角度来讲,堆栈具有“先进后出”(LIFO,Last In First Out)的特点。从数据存储的角度来讲,堆栈就是内存的一个连续区域,在函数调用时候通常用来保存程序的返回地址。 处理器内部有一个专用寄存器保存着栈顶地址,称为堆栈指针(stack pointer)。堆栈操作只能从栈顶一侧访问数据。处理器支持两种堆栈操作,入栈和出栈。3 Sept. 2008Confidential嵌入式中的堆栈共生长四种情况(在入栈的时候):前递增
18、(又叫满递增)前递减(又叫满递减)后递增(又叫空递增)后递减(又叫空递减)“递增”说明堆栈由低地址向高地址生长,所以栈底内存标号低于栈顶内存标号。“递减”则相反。“前”说明堆栈指针SP先调整后再进行入栈操作。“后”则先入栈,SP后调整。3.5.5 堆栈操作与函数调用3 Sept. 2008Confidential3.5.5 堆栈操作与函数调用(续)3EDD堆栈指针SPPUSH RegA;/入栈7F3EDDPUSH RegA堆栈指针SP100099999810021001100099999810021001图 后递增(空递增)增长模式入栈操作Stack RAM地址地址Stack RAM(RegA
19、 = 7F)(RegA = 7F) 堆栈压入数据操作只能堆栈顶部进行。在图中,堆栈指针SP总是指向栈顶。下一个压入数据存放的内存单元地址,在“压入”数据后,SP再加1(根据压入数据的字节数目)。这种模式称为“后递增增长模式”。也有另外一种模式,被称为“前递增增长模式”.两种模式中,SP的操作有所不同,一个“先压后增”,另一个“先增后压”。Intel x86处理器是“前递减增长模式”,8051微控制器是“前递增增长模式”3 Sept. 2008ConfidentialRegB = 23POP RegB;/出栈RegB = 7FPOP RegB图 后递增(空递增)增长模式出栈操作堆栈指针SP7F3
20、EDD10009999981003100210017F3EDD 1000999998100310021001堆栈指针SP3.5.5 堆栈操作与函数调用 (续)3 Sept. 2008Confidentialint func1 (void)return 100;void main (void)func1();MOV A, #100RETMOV ACALL 3000300050004999500130013002func1()main()Call func1()700070027000堆栈指针SP4999PC图 堆栈与函数调用-后递增堆栈3.5.5 堆栈操作与函数调用 (续)50007002300
21、0500070003 Sept. 2008ConfidentialRegAALURegBRegCSPstack图 简化的计算机系统该计算机系统能执行的指令是:POP RegX - 从栈顶“弹出”一个数据,存放到数据寄存 器RegX中。( 其中RegX是RegA、RegB和RegC三个数据寄存器中的一个 )PUSH RegX - 将寄存器RegX中的数据“压入”堆栈中;ADD - RegC = RegA + RegB DEC - RegC = RegB - RegA MULT - RegC = RegA * RegB考虑公式b b2-2-4ac4ac的计算:1. 参数 a、b、c和4按什么次序放
22、堆栈中较好?2. 用给出的指令写出公式的计算过程。3. 添加一条什么指令,能使计算过程 更简单,更有效率?v 练习题:练习题: 3 Sept. 2008Confidentialv 练习题答案:练习题答案: POP RegA;弹出c- RegA POP RegB;弹出a- RegB MULT ;a*c- RegC POP RegA;弹出4- RegA PUSH RegC ;a*c入栈 POP RegB ;弹出a*c- RegB MULT ;4ac RegC POP RegA;弹出b- RegA PUSH RegC ;4ac入栈 PUSH RegA ;b入栈 POP RegB ;弹出b- RegB
23、 MULT ;b*b- RegC POP RegA;弹出4ac- RegA PUSH RegC ;b*b入栈 POP RegB;弹出b*b- RegB DEC ;b*b-4ac 按照b-4-a-c顺序放入堆栈。(计算过程与参数在堆栈中的存放次序是相关的) 增加MOV指令。3 Sept. 2008Confidential术语缩语、术语英文全称 解 释 ALUArithmetic Logic Unite 算术逻辑单元IRInstruction register指令寄存器ARMAdvanced RISC Microprocessor 高级精简指令集处理器Copyright 2008 版权所有版权所有 东软集团东软集团