已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三 计算机组织与体系结构 东软人才实训中心 Copyright2008ByNeusoftGroup Allrightsreserved 第三章 计算机组织与体系结构 目标 本章旨在向学员介绍计算机的结构与编程模型 通过本章的学习 学员应该掌握如下知识 计算机的存储组织寄存器组数据通路编程模型 学时 3 0学时教学方法 讲授ppt 练习 案例分析 3 1计算机体系结构 CPU内部功能部件 处理器内部除了基本的计算单元ALU之外 还包含了 指令寄存器IR 用来存储要执行的指令 程序计数器PC 保存下一条执行指令在内存中的地址 通用寄存器组 存储待处理数据 控制单元 控制ALU的执行 3 1计算机体系结构 图冯 诺伊曼体系结构 CPU 主存 冯 诺伊曼体系结构 也称普林斯顿体系结构 在这种架构里 程序指令和数据连续存储 这样程序指令和数据不能同时和处理器通信 处理器以及与存储器之间的关系是定义系统特性的关键因素 图哈佛体系结构 CPU 程序 数据 数据存储器 程序存储器 3 1计算机体系结构 续 哈佛体系结构的主要特点是把指令和数据分开进行存储 也就是说有程序存储器和数据存储器两个主要的存储器 很多嵌入式处理器采用这种体系结构 如DSP和8051单片机 图CPU与主存典型框图 3 2存储组织 存储器和处理器就通过三总线 地址 数据 控制总线 的方式进行通信 那么处理器是如何访问存储器的 需要知道处理器操作数据的特性 图CPU与主存典型框图 0 1 2 3 图内存逻辑模型 3 2存储组织 字长与端序的概念 字长 就是CPU一次能从内存读取的比特数目 从处理器内部角度来看 这与处理器内部数据总线宽度 寄存器位数以及ALU相关 小端序 多字节数据的低位字节放在低地址存储单元中 大端序 高位字节放在低地址存储单元中 问题 1 在keil环境下使用C语言 若有如下定义 structdata1 inti charch doublef b 则结构变量b占用内存的字节数是多少 2 在keil环境下inti 0 x1234如何存放 大端还是小端序 图3 6一个64MbytesSDRAM内存模块 3 2存储组织 续 主存往往是用多个存储模块组合构成的 图3 7存储器组织框图 数据总线 3 2存储组织 续 由地址译码器给出的片选信号 3 3处理器单元 ALU 图ALU模型 16位二进制数 16位二进制数 16位二进制数 被动的执行部件 运算器 处理器的计算核心是算术逻辑单元 ALU ALU能够实现基本的算术运算和逻辑运算 以及存储和控制操作 不同处理器的ALU功能方面有一定的差异 但基本上都是在多位加法器基础上扩充功能 使得ALU能够进行多种基本运算 在这个ALU模型中 除了两个16位二进制数输入和一个16位二进制数输出外 ALU还有其它的输入和输出 其它的输入是控制信号 不同的控制输入确定了ALU当前应该进行的操作 而其它的输出则保存了完成操作的一些状态 控制信号是由处理器内部的控制器部件给出的 也就是说 运算器是在控制器的指挥控制下 来完成指定给它的运算处理功能 运算器只是一个被动的执行部件 3 3 1寄存器组 RegisterFile 寄存器 Register 处理器内部特别快速的存储单元 用来创建和保存ALU操作和其它计算结果 CPU操作读取或改写存储器的数据都是经由寄存器完成不同的处理器具有不同的寄存器组 不同之处在于寄存器的数目 寄存器类型和每个寄存器的容量 不同之处还在于寄存器的用途 通用寄存器可以用于多种目的 可以由程序员分配其功能 而专用寄存器仅限于某些特定的功能 3 3 2机器指令格式与ALU模型 ALU 汇编指令 AddR3 R1 R9 机器指令 1010001100011001 1010 图ALU模型与机器指令 助记符与操作码 操作数 二进制位串形式的机器指令很难理解和记忆 通常会引入助记符 也就是汇编指令 汇编指令与机器指令是一对一的关系 3 3 3指令执行过程 一条指令的执行过程分为取指 译码 执行 读入CPU的机器指令并不是一步执行完的 而是需要分解为更细微的操作 微操作 也就是指令译码 每个微操作按合适的次序驱动电子线路 例如考察指令AddR3 R1 R9的执行过程 至少在ALU在进行加法操作之前 要把寄存器R9和R1中的数据送入ALU 并在ALU计算完后 将结果存到寄存器R3 3 4数据通路 数据通路 包括寄存器和ALU以及数据传送线路 处理器内部的数据通路可以有不同的结构 包括单总线 双总线和三总线 3 4 1单总线的数据通路 图单总线的数据通路 由于一条总线在一个时间周期只能处理一次数据移动 ALU计算所需要的两个操作数就需要两个周期来移动 数据移动方面的限制会降低总体性能 3 4 2双总线的数据通路 图双总线的数据通路 A 存储器总线 总线1 总线2 3 5处理器编程模型 处理器编程模型 名词就是处理器内部对汇编程序员可见的通用寄存器 cpu只能通过这些寄存器获得存储器以及IO中的内容进行各种各样的运算处理 形成各种动作 编程模型主要从编程角度对处理器内部结构进行抽象 也就是主要考虑数据的存储 而忽略了数据的移动 指令集 动词描述处理器基本功能的指令集合 对于汇编程序员 需要掌握编程模型和指令集 嵌入式软件工程师则至少应该理解编程模型 3 5 1微控制器编程模型 图8051基本编程模型 3 5 2ARM编程模型 CPSR 31 0 NZCV 图ARM编程模型 CPSR SPSR bits N negative Z zero C carry V overflow 3 5 3寻址方式 立即数寻址MOVA 20 MOVA 20 20 从代码中获得数据 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身 也就是说 数据就包含在指令当中 取出指令也就取出了可以立即使用的操作数 这样的数称为立即数 由CPU完成的任何操作都涉及到寻址 就是如何获得数据 对操作数寻址的不同方法称为寻址方式 寻址方式的不同在于对操作数地址信息说明的不同 3 5 3寻址方式 续 直接寻址MOVA 20 图直接寻址方式 指令中给出操作数所在的存储单元的地址 0 x99 寄存器直接寻址MOVA R0 图存储器直接寻址 3 5 3寻址方式 续 在寄存器直接寻址中 操作数是存放在寄存器中的 指令中给出寄存器的名称 MOVA R0 0 xAA 4 寄存器间接寻址MOVA R0 3 5 3寻址方式 续 寄存器间接寻址中 操作数的地址存放在寄存器中 指令给出存放操作数地址的寄存器名 间接寻址的优点是使得对数据的存取成为动态的 MOVA R0 0 xAA 5 基变址寻址 MOVCA A DPTR 3 5 3寻址方式 续 这种寻址方式以16位的程序计数器PC或数据指针DPTR作为基址寄存器 以8位的累加器A作为变址寄存器 基址寄存器和变址寄存器的内容相加形成16位的地址 该地址即为操作数的地址 0 xC A DPTR 0 x4000 0 xAA 0 x400C MOVCA A DPTR 0 xAA 将A DPTR作为地址装载数据 3 5 4指令类型 按操作数数目分类 1 三地址指令OperationAddr1 Addr2 Addr3 2 两地址指令OperationAddr1 Addr2 3 单地址指令OperationAddr1 按操作功能划分 1 数据移动指令使用数据移动指令可以将数据在机器的不同部件中进行移动 2 算术和逻辑指令算术和逻辑指令用来对寄存器和存储器内容进行算术和逻辑处理 3 控制指令控制指令用来改变指令的执行次序 4 输入输出指令输入 输出指令 I O指令 用来在计算机和外围部件之间传输数据 3 5 4指令类型 续 3 5 5堆栈操作与函数调用 堆栈 stack 是函数调用机制的基础 对于程序员来说 这是一个比较重要的概念 从数据结构角度来讲 堆栈具有 先进后出 LIFO LastInFirstOut 的特点 从数据存储的角度来讲 堆栈就是内存的一个连续区域 在函数调用时候通常用来保存程序的返回地址 处理器内部有一个专用寄存器保存着栈顶地址 称为堆栈指针 stackpointer 堆栈操作只能从栈顶一侧访问数据 处理器支持两种堆栈操作 入栈和出栈 嵌入式中的堆栈共生长四种情况 在入栈的时候 前递增 又叫满递增 前递减 又叫满递减 后递增 又叫空递增 后递减 又叫空递减 递增 说明堆栈由低地址向高地址生长 所以栈底内存标号低于栈顶内存标号 递减 则相反 前 说明堆栈指针SP先调整后再进行入栈操作 后 则先入栈 SP后调整 3 5 5堆栈操作与函数调用 3 5 5堆栈操作与函数调用 续 堆栈指针SP PUSHRegA 入栈 PUSHRegA 堆栈指针SP 1000 999 998 1002 1001 1000 999 998 1002 1001 图后递增 空递增 增长模式入栈操作 StackRAM 地址 地址 StackRAM RegA 7F RegA 7F 堆栈压入数据操作只能堆栈顶部进行 在图中 堆栈指针SP总是指向栈顶 下一个压入数据存放的内存单元地址 在 压入 数据后 SP再加1 根据压入数据的字节数目 这种模式称为 后递增增长模式 也有另外一种模式 被称为 前递增增长模式 两种模式中 SP的操作有所不同 一个 先压后增 另一个 先增后压 Intelx86处理器是 前递减增长模式 8051微控制器是 前递增增长模式 RegB 23 POPRegB 出栈 RegB 7F POPRegB 图后递增 空递增 增长模式出栈操作 堆栈指针SP 堆栈指针SP 3 5 5堆栈操作与函数调用 续 intfunc1 void return100 voidmain void func1 MOVA 100 RET MOV ACALL3000 3000 5000 4999 5001 3001 3002 func1 main Callfunc1 7000 7002 7000 堆栈指针SP 4999 PC 图堆栈与函数调用 后递增堆栈 3 5 5堆栈操作与函数调用 续 5000 7002 3000 5000 7000 stack 图简化的计算机系统 该计算机系统能执行的指令是 POPRegX 从栈顶 弹出 一个数据 存放到数据寄存器RegX中 其中RegX是RegA RegB和RegC三个数据寄存器中的一个 PUSHRegX 将寄存器RegX中的数据 压入 堆栈中 ADD RegC RegA RegBDEC RegC RegB RegAMULT RegC RegA RegB考虑公式b2 4 a c的计算 1 参数a b c和4按什么次序放堆栈中较好 2 用给出的指令写出公式的计算过程 3 添加一条什么指令 能使计算过程更简单 更有效率 练习题 练习题答案 POPRegA 弹出c RegAPOPRegB 弹出a RegBMULT a c RegCPOPRegA 弹出4 RegAPUSHRegC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 莆田市第一医院南日分院(秀屿区南日镇卫生院)2026年第一轮编外人员招聘备考题库及完整答案详解1套
- 2026年宁波文旅会展集团有限公司招聘备考题库完整答案详解
- 2026年柳钢集团社会招聘备考题库及答案详解(考点梳理)
- 曲靖经开区卓然学校2026年储备教师招聘备考题库及答案详解(夺冠系列)
- 2025年南宁市江南区苏圩中心卫生院公开招聘医学影像专业技术人员备考题库及答案详解一套
- 2026年上海浦江教育出版社医学图书编辑招聘备考题库及答案详解一套
- 2026年勐海县融媒体中心招聘编外人员备考题库及答案详解一套
- 2026年永州陆港枢纽投资发展集团有限公司公开招聘工作人员的备考题库及答案详解(新)
- 中国热带农业科学院海口实验站2026年第一批公开招聘工作人员备考题库及答案详解(夺冠系列)
- 2026年南方科技大学公共卫生及应急管理学院梁凤超课题组诚聘实验技术人员备考题库有完整答案详解
- T-CIESC 77-2024 工业用二氟草酸硼酸锂
- DBJ51 016-2013 四川省农村居住建筑抗震技术规程
- 山东省济南市2024-2025学年高三上学期1月期末考试 化学试题(含答案)
- 2025年超市果蔬年度工作计划
- 监控中心工作总结
- 2021医院感控持续改进手册(护士版)
- 瑜伽馆装修合同模板及明细
- GB/T 9799-2024金属及其他无机覆盖层钢铁上经过处理的锌电镀层
- 工程伦理与管理智慧树知到期末考试答案章节答案2024年山东大学
- 文史哲与艺术中的数学智慧树知到期末考试答案章节答案2024年吉林师范大学
- GB/T 15651.7-2024半导体器件第5-7部分:光电子器件光电二极管和光电晶体管
评论
0/150
提交评论