您的位置  > 互联网

微处理器2021/11/2汇编语言程序设计教程

• BIU 单元用于实施欧盟的所有总线运营。 它由地址加法器、段寄存器CS、DS、SS、ES、指令指针IP、指令队列缓冲区和总线控制逻辑组成。 BIU负责CPU与内存或外部设备之间的信息交换。 • EU 单元负责指令的执行,由算术逻辑单元ALU、标志寄存器FLAG、通用寄存器和EU 控制器组成。 主要进行各种16位运算和有效地址的计算。 2021/11/2 汇编语言编程教程 58位机指令执行流程 2021/11/2 汇编语言编程教程 6 EU和BIU并行工作时的情况 2021/11/2 汇编语言编程教程 78086/8088 寄存器组织 2021 /11/2 汇编语言编程教程 8 个数据寄存器 • 8086/8088 有四个16 位数据寄存器:AX、BX、CX、DX。 它们可以分为两个独立的8位寄存器:AH/AL、BH/BL、CH/CL、DH/DL。 – AX称为累加器,使用频率最高,用于算术、逻辑运算以及与外设传输信息; – BX称为基地址寄存器,常用于存储内存地址; – CX称为计数器,用作循环、字符串运算等指令中的隐式计数器; – DX称为数据寄存器,常用于存储高16位双字数据,或存储外设端口地址。

2021/11/2 汇编语言编程教程 9 索引和指针寄存器 • 索引和指针寄存器包括四个16 位寄存器SI、DI、BP 和SP,通常用于在寻址存储器时提供地址。 – SI 是源变址寄存器,DI 是目标变址寄存器。 它们一般与DS配合使用来确定数据段中某个存储单元的地址。 – SP为栈指针寄存器,表示栈顶的偏移地址; BP是基址指针寄存器,表示堆栈段中的基地址。 2021/11/2 汇编语言编程教程/8088的特殊寄存器 • 8088采用了内存分段的概念,将1MB分成若干个逻辑段,每个逻辑段最大为64KB。 • 段寄存器的值表示当前使用的段的基地址。 当前代码段基地址由代码段寄存器CS 指出,当前数据段基地址由数据段寄存器DS 指出,当前堆栈段基地址由堆栈段寄存器SS 指出, DS 指出当前源字符串所在段的基址。 需要指出的是,当前目标字符串所在段的基地址是由附加段ES指出的。 • 指令指针寄存器:特殊寄存器组中的指令寄存器IP 只能与CS 寄存器组合构成指令的物理地址。 • 标志用于反映指令执行的结果或控制指令的执行形式。 这是汇编语言编程中必须特别注意的一个方面。 许多指令执行后会影响相关标志位,并且某些指令的执行需要使用某些标志位。

2021/11/2 汇编语言编程教程 11 标志寄存器FLAGS的结构 • CF——进位标志(Carry Flag)。 如果CF=1,则表示算术运算时发生进位或借位,否则CF=0。 • PF——奇偶校验标志(Flag)。 如果PF=1,则表示运算结果中“1”的个数为偶数,否则PF=0。 • AF——辅助进位标志(Carry Flag)。 如果AF=1,则表示字节操作从低四位向高四位产生进位或借位,否则AF=0。 • ZF - 零标志。 如果ZF=1,则表示运算结果全为零,否则ZF=0。 • SF——标志标志。 如果SF=1,则表示符号数运算的结果为负数,否则SF=0。 • OF——溢出标志(Flag)。 如果OF=1,则表示进行算术运算时,结果超出了最大范围,否则OF=0。 • IF——中断允许标志(Flag)。 如果IF=1,CPU可以响应外部可屏蔽中断的中断请求; 如果IF=0,则不允许CPU响应中断请求。 • DF——方向标志(Flag)。

如果DF=1,表示字符串操作是从高地址到低地址进行的; 否则DF=0。 • TF——跟踪标志。 也称为跟踪标志。 2021/11/2 汇编语言编程教程 12 状态标志位的符号表示 2021/11/2 汇编语言编程教程/8088的内存组织 • 在微机系统中,一个二进制位用bit来表示,8位二进制数是用Byte(即一个字节)表示。 它们的关系是:1字节=8位。 16 个二进制位或两个字节组成一个字。 • 存储器的每个存储单元都有一个唯一的编号,通常按顺序排列,称为存储单元的地址。 存储器地址的编码范围取决于给定二进制地址代码中的位数。 • 存储单元中存储的信息称为存储单元的内容。 2021/11/2 汇编语言编程教程/8088物理地址形成 2021/11/2 汇编语言编程教程 80x86微处理器的发展 • 1978年,Intel正式推出16位微处理器,这是该公司生产的第一款微处理器。 16 位芯片。 • 1982年Intel推出,时钟频率为6MHz~20MHz,16位内外数据总线,32位地址总线,物理内存容量为16MB。

• 1993年,Intel生产了俗称586的微处理器,并将其命名为()。 仍然是32位结构,地址总线为32位,但外部数据线为64位,内部时钟频率为60MHz~。 • 2006年,英特尔推出英特尔酷睿双核处理器和英特尔酷睿单核处理器。 Core Solo是单核处理器,而Core Duo处理器则采用双核技术,具有低功耗和高性能的特点。 2021/11/2 汇编语言编程教程 162.2 IA-32 CPU 2.2.1 IA-32 CPU 功能结构 2.2.2 IA-32 CPU 寄存器组 2.2.3 IA-32 CPU 内存管理 2021/11/2 汇编语言程序设计教程17IA-32 CPU 功能结构 • 80386 是典型的32 位Intel CPU。 在它之后,32位Intel 80x86微处理器有了新的发展,但所有32位微处理器都向程序员呈现了功能结构。 一切都相似。 • IA-32 CPU 由六个功能部分组成:总线接口单元、指令预取单元、指令译码单元、执行单元、分段单元和分页单元。 2021/11/2 汇编语言编程教程 18IA-32 CPU 功能结构 2021/11/2 汇编语言编程教程 19IA-32 CPU 寄存器组 • IA-32 CPU 寄存器可分为基本架构寄存器和系统级寄存器三类调试和测试寄存器的类别。

• 其中,基本架构寄存器和浮点寄存器可以被应用程序直接访问,一般称为程序可见寄存器。 • 在应用程序设计期间不能直接寻址其他寄存器。 只有权限级别为 0 的程序才能使用它们。 它们通常被称为程序不可见寄存器。 2021/11/2 汇编语言编程教程 20IA-32 CPU 常用寄存器 2021/11/2 汇编语言编程教程 21 标志寄存器 2021/11/2 汇编语言编程教程 22 系统级寄存器 • CPU 系统级中的 IA-32寄存器包括内存管理寄存器和控制寄存器。 • 它们对用户应用程序是透明的,只有运行在优先级0 的程序才能更改这些寄存器。 2021/11/2 汇编语言编程教程 23 系统地址寄存器 2021/11/2 汇编语言编程教程 24 系统地址寄存器中信息位的定义 2021/11/2 汇编语言编程教程 25 控制寄存器 • IA-32 有CPU中有4个32位控制寄存器CR0、CR1、CR2和CR3。 这四个控制寄存器的作用是保存全局机器状态和设置控制位。 • 控制寄存器CR0 的含义如下: 2021/11/2 汇编语言编程教程26 控制寄存器 • CR1 为保留寄存器,不能使用,否则会引起无效指令运算异常。

• CR2 是页错误线性地址寄存器,它保存由最后检测到的页错误生成的32 位线性地址。 • CR3 是页目录基址寄存器,包含页目录表的物理基地址。 由分页硬件使用,其中低12位始终为0。因此,CPU的页目录表始终是页对齐的,即每个页为4KB。 2021/11/2 汇编语言编程教程 27 调试与测试寄存器 • IA-32 CPU 中有 8 个 32 位调试寄存器,分别为 DR0~DR7,为程序调试提供硬件支持。 • IA-32 CPU 中设置了两个32 位测试寄存器,分别命名为TR6 和TR7。 测试寄存器用于控制分页单元中的转换后备缓冲器TLB的测试。 2021/11/2 汇编语言编程教程 28IA-32 CPU内存管理 • IA-32 CPU中有三种内存管理模型:实地址模型、分段管理模型和扁平化模型。 • IA-32 CPU 在不同的处理器操作模式下以不同的方式管理内存。 2021/11/2 汇编语言编程教程 29 实地址模型 • 在实地址模型下,IA-32 CPU 使用 20 位地址线,可以访问 1MB 内存,范围从 ~ ,这是早期的 16 位处理器8086内存型号。

• 实地址模型规定段起始地址低4 位全为0,每个段不能超过64KB。 然而,每个段不需要是64KB,并且段不需要完全分开。 • 两个逻辑段可以部分甚至完全重叠。 当然,各段落的内容是不允许冲突的。 2021/11/2 汇编语言编程教程 30 保护模式下的分段管理模型 • 在保护模式下的分段管理模型下,IA-32 CPU支持32条地址线,因此每个程序可以寻址4GB内存,地址范围~,这个地址空间称为线性内存空间。 • 在保护模式下,段基址和偏移地址均为32 位。 • 在保护模式下,段寄存器中存储的不是段基地址本身,而是一个16 位的段选择器。 段选择器索引描述了段信息的段描述符,段描述符存储了段基地址信息。 2021/11/2 汇编语言编程教程 31 段选择器和描述符 2021/11/2 汇编语言编程教程 32 段寄存器和段描述符缓存寄存器 • 在保护模式分段管理模型下,每个段寄存器都有一个关联的段描述符缓存它对程序员来说是不可见的。 它们用于存储段描述符,描述段的基址、段大小、段属性等。 2021/11/2 汇编语言编程教程 33 扁平化模型 • 扁平化模型本质上是分段存储模型的一个特例。

• 当使用扁平化模型时,整个内存空间对于程序员来说显示为单个连续的线性地址空间。 • 代码、数据和过程堆栈都包含在该地址空间中。 • 该内存模型易于使用,仅需要 32 位地址。 • 在80386 以上的IA-32 CPU 上运行的应用程序广泛使用扁平化模型。 2021/11/2 汇编语言编程教程 34 分页和虚拟内存 • 在分页机制中,一个段可以分为不同的页,所有页的集合称为虚拟内存。 虚拟内存可以转换为实际的物理地址空间。 • IA-32 CPU 的页大小固定为4K 字节,每页的边界地址必须是4K 的倍数。 2021/11/2 汇编语言编程教程 352.3 高级微处理器 2.3.1 高端微处理器 2.3.2 迅驰技术 2.3.3 多核技术 2.3.4 专用微处理器 2.3.5 微处理器领域的架构革命 2021/ 11/2 汇编语言编程教程 36 高端微处理器 • 高端微处理器具有全新的架构设计。 其指令集仍然是IA指令集,并保持与80x86处理器兼容。 • 1994年,为了适应多媒体数据的处理要求,Intel集成了多媒体扩展技术MMX,形成MMX( Power )。

MMX使用饱和操作。 2021/11/2 汇编语言编程教程 37 • Pro 处理器是Intel 首款专为32 位服务器和工作站设计的处理器。 可应用于高速辅助设计、机械发动机、科学计算等领域。 • Pro 的地址总线为36 位,可寻址64GB 主内存。 它由一个具有16KB Cache的CPU和一个具有256/512KB的二级Cache芯片组成。 2021/11/2 汇编语言编程教程 38 与Pro相比,主要增加的功能如下。 (1)微观结构经过重新设计,是首款采用P6结构的处理器。 (2)芯片内封装有两块芯片:CPU核心和256KB或512KB二级高速缓存L2 Cache。 (3)综合使用RISC技术和CISC技术,保证了对80x86的兼容,提高了指令执行速度。 (4)采用3路超标量结构,14级流水线深度。 每个时钟周期可以执行3条指令,可预测执行30条指令,进一步提高了处理器的并行处理能力。 (5)在 的基础上增加了8条指令。 (6)利用乱序执行和推测执行,使CPU更适应分支和循环指令流。

2021/11/2 汇编语言编程教程 39 • 1997年,Intel也在Pro中采用了MMX技术,并推出了II。 • Ⅱ继承了MMX技术和Pro的动态执行技术。 内部一级缓存提升至64KB,二级缓存512KB,时钟频率进一步提升。 • Ⅱ采用动态执行技术,又称随机推测执行技术。 2021/11/2 汇编语言编程教程 40 • III 处理器也完全适合工作站和服务器应用。 • 整个III是一个相当大的系列,涉及多种处理器主频,最低1.33GHz,最高1.33GHz。 还有两种系统总线频率: 和 。 2021/11/2 汇编语言编程教程4 • 2000年底,Intel推出了带有76条新SSE2指令的4处理器。 它引入了微观结构并使处理器速度更快。 • SSE2 可以执行128 位SIMD 整数算术运算和128 位SIMD 双精度浮点运算。 2021/11/2 汇编语言编程教程 微结构优势 • 快速的系统总线 • 先进的传输缓存 • 先进的动态执行 • 超长流水线处理技术 • 先进的浮点和多媒体指令集技术 • 快速的执行引擎,提供执行单元 执行指令以防止执行单元停顿。

2021/11/2 汇编语言编程教程 Xeon处理器 • 在服务器领域,Intel于2001年推出了基于微架构的Xeon处理器。 • Xeon处理器的市场定位是高性能、均衡负载、多通道对称等特点处理,这是台式电脑品牌所不具备的。 • Xeon处理器实际上是基于4核的,具有更先进的网络功能、更复杂和更优越的3D图形性能。 2021/11/2 汇编语言编程教程 44 迅驰科技 • 2003年,Intel推出低功耗、高性能的移动M处理器系列。 迅驰一代 • 2003年3月,英特尔正式发布了迅驰移动计算技术,包括一整套移动计算解决方案,由 M处理器、855/915系列芯片组和无线网卡三部分组成。 • 1MB高速L2缓存,前端总线,支持802.11b无线网卡。 2021/11/2 汇编语言编程教程 45 迅驰二代 • 2005年1月,Intel发布了迅驰二代移动平台,代号为。 • 迅驰II增加了一些新技术:全新Intel Media 900图形核心、节能前端总线、双通道DDR2内存支持等。

• 此外, II 还支持最新的 PCI 图形接口。 2021/11/2 汇编语言编程教程 46 迅驰第三代 • 2006年1月,Intel发布了迅驰第三代移动平台Napa,其核心部件是Intel Core双核处理器。 • 系统总线速率提升,Yonab处理器推出单核、双核技术并采用65nm工艺,无线模块兼容802.11°/b/g三种网络环境。 2021/11/2 汇编语言编程教程 47 迅驰第四代 • 2007年5月,Intel发布第四代迅驰移动平台Snata Rosa。 • 第四代迅驰的最大优势是更好的多任务处理能力、清晰的视频播放能力、更好的可管理性和安全性,这进一步扩大了英特尔移动平台的优势。 2021/11/2 汇编语言编程教程 48 多核技术 • 双核微处理器是指基于半导体的处理器芯片,具有两个功能相同的处理器核心,即在内核中将两个物理处理器核心集成为一个。 • 多核,也称为单芯片多处理器(Chip,CMP)。 • 由于CMP结构分为多个处理器核进行设计,每个核都比较简单,有利于优化设计。

2021/11/2 汇编语言编程教程 49 多核技术的发展 • 2005年5月,Intel发布全球首款桌面双核处理器D,开启双核计算机时代。 2006年5月,Core双核技术应用于迅驰第三代移动平台。 • 2006年11月12日,英特尔推出全新四核处理器——。 • 2007年11月,英特尔发布多款采用45纳米高K金属栅工艺技术的服务器和PC处理器。 • 2008年11月,Intel正式发布该架构的首款产品:Core i7处理器。 基于微架构开发的Core i7拥有多项创新技术,可以智能按需提升性能,最大化数据吞吐量。 2021/11/2 汇编语言编程教程 双核微处理器性能分析 • 目前Intel推出的桌面双核微处理器有三种类型:D、EE(),三者的工作原理有很大不同。 • D 和EE 的每个核心均采用独立的缓存设计。 两个内核在处理器内部相互隔离。 处理器外部的仲裁器(主板北桥芯片)负责两个核心之间的任务分配以及缓存数据同步等协调工作。

两个核心共享前端总线,依靠前端总线在两个核心之间传输缓存同步数据,如图2.17所示。 2021/11/2 汇编语言编程教程 51 2021/11/2 汇编语言编程教程 52 • 自2006年7月Intel发布Core Due以来,D和EE逐渐被基于Core架构代号的双核微处理器所取代。 • Core Due 采用基于共享缓存的紧密双核处理器耦合方案。 其最大特点是放弃了双核独立二级缓存的方案,转而采用IBM的多核处理器。 类似的双核共享二级缓存方案。 2021/11/2 汇编语言编程教程 53 2021/11/2 汇编语言编程教程 54 特殊微处理器 • 除了安装在 PC、笔记本电脑、工作站和服务器上的通用微处理器(通常称为 MPU)之外,还有用于其他应用领域的专用微处理器:微控制器(微控制器)和数字信号处理器。 • 使用微控制器、数字信号处理器或通用微处理器,可结合具体应用组成控制系统。 例如,目前主要的应用形式是嵌入式系统。 2021/11/2 汇编语言编程教程 55 微控制器 • 微控制器(芯片)是指通常用于控制领域的微处理器芯片。 除了CPU之外,它还集成了计算机的其他一些主要部件,例如ROM和RAM。 、定时器、并行接口、串行接口,有的芯片还集成了A/D、D/A转换电路等。

2021/11/2 汇编语言编程教程 56 数字信号处理 • 数字信号处理( ),简称DSP芯片,实际上是一种微控制器,但它更专注于数字信号的高速处理,它集成了高速内部速度倍增。 处理器,能够进行快速乘法和加法运算。 • DSP芯片市场主要分布在通信、消费电子和计算机领域。 TI公司、AD公司和公司的DSP芯片在我国得到广泛推广和应用。 2021/11/2 汇编语言编程教程 57 微处理器领域的架构革命 • 微处理器领域真正的架构革命将在未来几年内诞生,即多核架构将从一般的点对点迁移到微处理器领域。对等设计对“大型机” “核心+协处理器”的非对等设计,意味着处理器中只有一个或几个通用核心负责任务分配功能。 浮点运算、HDTV视频解码、JAVA语言执行等任务都可以由专门的DSP硬件来执行。 核心来完成。 • 这实现了处理器执行效率和最终性能的实质性飞跃——IBM Cell、Intel众核和AMD协处理器平台是这种思维的典型代表。 2021/11/2 汇编语言编程教程 58 IBM Cell:创建新的多核架构 • Cell 的多核结构与之前的多核产品完全不同。

在Cell芯片中,只有一个核心具有完整的功能,称为主处理器。 其余 8 个核心是专用于浮点运算的协处理器。 • 由于Cell 中的协处理器只负责浮点计算任务,因此所需的计算规则非常简单,相应的电路逻辑也非常简单。 只要CPU运行频率足够高,Cell就可以实现惊人的浮点性能。 2021/11/2 汇编语言编程教程:众核 • 第一代众核架构处理器可能采用“3个通用80x86核+16个DSP核”的组合,如图2.19所示。 • 如您所见,其原型是四核处理器,但其中一个核心被16 个DSP 逻辑取代。 2021/11/2 汇编语言编程教程 60 • 第二代众核产品的总体结构如图2.20 所示。 它拥有8个通用80x86核心、64个专用DSP逻辑、片上缓存容量高达1GB、晶体管规模达200亿个。 2021/11/2 汇编语言编程教程 61 AMD:协处理器系统 • AMD 利用现有的连接架构来扩展多通道服务器系统。 • 计划建立以AMD为核心的企业生态系统。 在这个站台上,公交车处于中心​​位置。 除了作为处理器连接总线外,它还可以连接PCI-X控制器、PCI控制器和I/O控制芯片,作为芯片之间的高速连接路径。 • 未来,这种扩展架构还可以扩展到PC领域。 2021/11/2 汇编语言编程教程62