汇编语言程序设计第二章--IA32
一、组成
处理器的主要组件:
控制单元
执行单元
寄存器
标志
二、控制单元
控制单元的工作是4个基本功能:
1)从内存获取指令
2)从指令进行解码以便处理
3)从内存获取所需的数据
4)如果有必要就存储结果
指令计数器从内存获得下一条指令码并且使之准备好进行处理。指令解码器用于把获取的指令码解码进行微操作。微操作是控制处理器芯片之内的特定信号来执行指令码功能的代码。
微操作准备好之后,控制单元把它传递给处理器,并且获得所有存储在正确位置的结果。
控制单元是被研究得最多的处理器部分。
了解这些技术如何起作用能够有助于优化汇编程序。
指令预取和解码
分支预测
乱序执行
退役
1.指令预取和解码管线
执行单元获取指令的时候需要指令和数据时候,老的IA32系列处理器直接从内存获取他们,获取时间要比处理长很多,会造成积压,所以有了预取得概念
处理器芯片本身需要一个专门的存储区域---处理器可以很容易访问这片区域,比一般访问内存要快,这是用管线操作的。
第一级缓存L1在它认为处理器将需要指令码和数据时候,会试图从内存预取他们。随着指令指针在内存中的移动,预取算法用来确定哪些指令要被放到缓存中。
指令和数据缓存的一个缺陷在于不能保证程序按照连续的顺序执行指令。如果指令采用逻辑分支,将程序指针移动到完全不同的内存位置,缓存会失效,为了缓解这个问题就创建了二级缓存。
二级缓存L2,如果程序跳转到完全不同的区域去执行指令时候,第二个级别的缓存可以保存来自前面指令位置的指令。
2.分支预测单元
虽然实现多级缓存是加速程序逻辑执行速度的一个途径,但是仍然没有解决跳转的程序问题。分支预测使用专门的算法预测接下来使用哪些指令码
1、深度分支预测
2、动态数据流分析
3、推理性执行
3.乱序执行引擎
乱序执行引擎可以找到在程序其他部分需要他们之前可以执行的独立指令。`
乱序执行引擎有三部分:
分配器
寄存器重命名
微操作调度器
分配器是确保缓冲区空间被适当的分配给乱序执行引擎正在处理的每条指令
寄存器重命名部分分配逻辑寄存器去处理需要寄存器访问的指令。寄存器重命名部分不适用IA-32处理器上可用的8个通用寄存器,而是包含128个逻辑寄存器,他把指令提出的寄存器请求映射到某个逻辑寄存器上,以便允许多条指令对相同的寄存器进行访问。寄存器的映射是使用寄存器分配表(RAT)来完成的。这帮助提高访问相同寄存器集合的指令处理速度。
通过检查位操作需要输入的元素,微操作调度器确定何时准备好处理微操作。他的工作是把准备好处理的微操作发送给退役单元,同时仍然维持程序的相关性。微操作调度器使用两个队列,一个队列用于需要内存访问的微操作,一个用于不需要内存访问的微操作,两个队列被捆绑到分派端口。不同类型的奔腾处理器包含不同数量的分派端口。分派端口把微操作发送给退役单元。
4.退役单元
退役单元用来接收解码管线和乱序执行器引擎发送来的所有微操作,并且把微操作调整为能正常执行的顺序。
退役单元按照乱序执行引擎发送微操作的顺序,把他们发送给执行单元进行处理,然后它监视结果,把结果调整为程序能执行的正常顺序。
这些操作要使用一个大型缓冲区来保存微操作结果,并将他们按照正确顺序摆放。
可以看到有两个入口 执行单元和乱序执行引擎
三、执行单元
处理器的主要功能是执行指令。这个功能是在执行单元实现的,单一处理器实际上包含多个执行单元,可以同时处理多个指令码
执行单元由一个或者多个逻辑单元构成(ALU).ALU被设计处理多个不同类型的数学操作。
简单整数操作
复杂整数操作
浮点操作
四、寄存器
寄存器核心组:
通用寄存器:
段寄存器
段寄存器专门用于引用内存位置。IA32 处理器平台运行三种不同的访问内存的方法:
1、平坦内存模式
2、段内存模式
3、实地址模式
指令寄存器
有时候称为程序计数器,它跟踪要执行的下一条指令码。
应用程序不能直接修改指令本身。不能指定内存地址,并且放到EIP中。,相反必须使用一般的程序控制指令来改变读入到预取缓存的吓一跳指令。
控制寄存器
5个控制器用于确定处理器的操作模式,还有当前正在执行的任务特性
五、标志
对于处理器实现的每个操作,都必须有一种标志来确认操作是否成功。
标志对于汇编语言来说是很重要的,因为他们是确定程序是否执行成功的唯一途径
标志被分为三组
状态标志、控制标志、系统标志
控制标志用于控制处理器的特定行为。用于控制处理器处理字符的方式。
DF为1时候,字符串指令自动递减内存以便到达字符串下一个字节
DF为9,自动递增内存到达下一个字节
汇编语言程序设计第二章--IA32相关推荐
- [转载]汇编语言程序设计第二版答案 沈美明
原文地址:汇编语言程序设计第二版答案 沈美明作者:相约爱情海 file:///C|/Users/CaoFan/Desktop/IBM-PC汇编语言程序设计(第二版)答案.txt[2010/4/24 ...
- c语言程序设计第二章的答案,C语言程序设计第二章作业参考答案
C语言程序设计第二章作业参考 <C语言程序设计>第2章作业 布置日期:2017-10-23 截止日期:2017-11-3 一.单选题(每小题4分,共100分) 1.以下说法中正确的是___ ...
- wi ndows ap i,windows程序设计第二章Unicode简介.doc
windows程序设计第二章Unicode简介.doc Unico?de简介 在第一章中,我已经预告?,C语言中在?Micro?soft Windo?ws程序设?计中扮演着?重要角色的?任何部分都?会 ...
- python程序设计第二章序列类型 题库及选解
由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 python程序设计题库完整版 https://blog.csdn.net/lijia11 ...
- c语言编程区分负号与减号,C语言程序设计第二章.ppt
C语言程序设计第二章 C语言编程习惯 (1) 一行只放一条语句. (2) 养成随时给程序加注释的习惯. (3) 程序的书写要有层次感,该缩进的一定要缩进. (4) 编写函数时,变量定义部分和函数的执行 ...
- c语言a123属于常量吗,c语言程序设计第二章数据类型.ppt
c语言程序设计第二章数据类型 * 第 2章 基本数据类型及运算 教学目标:通过介绍C语言的数据类型和存储特点,要求了解C语言数值数据和文字数据的表示方法,掌握C语言基本数据类型的存储格式,掌握变量的定 ...
- c语言程序设计 算法,C语言程序设计第二章算法
<C语言程序设计第二章算法>由会员分享,可在线阅读,更多相关<C语言程序设计第二章算法(38页珍藏版)>请在人人文库网上搜索. 1.C程序设计,主讲人:袁丽,燕大里仁基础教学部 ...
- Intel汇编语言程序设计学习-第二章 IA-32处理器体系结构-上
第2章 IA-32处理器体系结构 2.1 基本概念 本章以程序员的视角描述Intel IA-32处理器家族机器计算机系统,包括所有的Intel兼容处理器,如AMD的速龙(Athlon)和皓龙(Op ...
- 04737 c++程序设计 第二章 课后程序设计题 第一题
/* * 04737 c++ 自学考试2019版 第二章课后练习 * 程序设计题 1 * 需求:设计并实现一个类Course.它代表学校中的一门课程..... *///标准流 #include< ...
最新文章
- java面试题2016_2016最新java面试题 详细版
- 【Visual Studio 扩展工具】使用 ComponentOne迷你图控件,进行可视化数据趋势分析...
- python相同key合并value_Python快速入门最需掌握的4个知识点
- 【ZJOF】用来个栈来实现一个队列
- LMS Virtual Lab 流固模态分析
- QEMU KVM libvirt手册(4) – images
- conda报错Collecting package metadata
- 石河子大学计算机学院宿舍,对于那些想去211石河子大学的同学给你一点建议
- pass 软件_以信息化为支撑,合理用药为保障,我院 PASS合理用药系统正式上线!...
- python类的实例方法必须创建对象后_Python3 类方法,实例方法,静态方法详解...
- Rust 要“进驻” Linux 内核了?Linux 之父:保持观望
- 从获得字符串中获取数字
- DLL调用异常:The value of ESP was not properly
- Oauth2.0如何理解?
- Android搜索关键字高亮显示
- gt1151触摸驱动调试
- 12306全国火车站点所在区划代码经纬度数据,精确到县区级
- 网站SEO优化::降低网站跳出率、提高用户粘度网站用户粘度
- JVM进阶(六):鲜为人知的二次标记
- matlab 画思维图像,「4」图像思维
热门文章
- 以太坊:事件日志 (Event Logs)
- 赋能新零售,Stratifyd亮相Smart Retail智慧零售年度峰会
- 在应用程序中将OJB作为一个存储层使用(六) (转)
- 接口性能优化怎么做?
- EJBCA证书平台-管理员及用户使用指南
- 复选框CheckBox
- 使用 FFmpeg 转换视频/音频格式 | 开源 免费 | 不用套壳软件
- 蘑菇街服务器信息,蘑菇街TeamTalk服务器端MsgServer分析(一)
- SUSCTF 2022圆满落幕,SU战队夺冠
- 管理类联考-英语 : 前导( 四 )