双语网站后台怎么做,百度微信网站,住房和城乡建设岗位证书,做一个官方网站需要多少钱cpu的实模式
由于mbr在实模式下工作……什么#xff1f;什么是实模式#xff1f;这时候有同学打断了我。我心想#xff0c;这下好办了……哈哈#xff0c;没有啦#xff0c;开个玩笑而已。我们这里所说的实模式其实就是8086 cpu的工作环境、工作方式、工作状态#xff0…cpu的实模式
由于mbr在实模式下工作……什么什么是实模式这时候有同学打断了我。我心想这下好办了……哈哈没有啦开个玩笑而已。我们这里所说的实模式其实就是8086 cpu的工作环境、工作方式、工作状态这是一整套的内容并不是单指某一方面的设置。
实模式是指8086 cpu的寻址方式寄存器大小指令用法等是用来反应cpu在该环境下如何工作的概念。所以想了解实模式这种抽象的概念主要就是了解在实模式下cpu能做什么。
大家都学过汇编语言吧里面有讲实模式、保护模式之类的但鉴于太过久远为了让后面的工作顺利进行我觉得还是有必要给大家介绍下cpu的工作模式。
cpu的工作原理
在介绍cpu的各种模式之前 先占用大家几分钟的时间 说点在两种模式下公共的内容和大家聊聊cpu的工作原理。当然这里所说工作原理可不像微机接口技术里那么细致精确到逻辑门等电子电路。第一我也不会想讲也讲不出来吼吼^0^。第二我觉得没必要懂到那么细致如果懂的太细了会为之所累您想每次执行一条指令时您的大脑总是联想到各种元件的工作流程本来一瞬间完成的工作您可能要给放大一千倍非得强迫症似的要求掌握每个步骤的细节万一在哪个点上想不通了这就会让人感到很沮丧影响心情甚至质疑上层的编译器哈哈我知道说的有点严重了不夸张一点的话不容易表述问题好了下面在宏观上介绍下cpu工作原理。
大家都知道cpu的唯一的任务就是执行指令在它眼里指令就是一串010101…那它执行每条指令的流程是怎样的呢。cpu大体上可以划分为3个部分它们是控制单元、运算单元、存储单元。控制单元是cpu的控制中心cpu需要经过它的帮忙才知道自己下一步要做什么。而控制单元大致是由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)、操作控制器OC(Operation Controller)组成。程序被加载到内存后也就是指令这时都在内存中了指令指针寄存器IP指向内存中下一条待执行指令的地址控制单元根据IP寄存器的指向将位于内存中的指令逐个装载到指令寄存器中但它还是不知道这些指令是什么在它眼里的0101串此时还没有实际意义。然后指令译码器将位于指令寄存器中的指令按照指令格式来解码分析出操作码是什么操作数在哪里之类的。下面给出了一般的指令格式 前缀 操作码 寻址方式、操作数类型 立即数 偏移量看上去还是蛮复杂的复杂的原因是必须用一种统一的格式去归纳所有形式的指令因为cpu只能识别一种格式万物的源头必须是最简单的cpu也一样。这就好比要求用一句话表达出宇宙苍生似乎看上去不可能能一定能只要这句话足够长就行^_^。就像等待女朋友化妆一样她怕你等烦了于是就安慰你一句“还有一首歌的时间就好了”其实你明白这首歌是《黄河大合唱》一共8个乐章且唱呢……^5^。
由于cpu支持的指令数量较多一些指令还可以搭配一些辅助的东东所以就需要在前缀部分记录这些如rep用于重复执行汇编中经常用、段超越前缀。操作码就是大家平时用的mov、jmp等等。寻址方式又有好多如基址寻址、变址寻址等等操作数类型中记录的是用哪些寄存器之类的。如果在指令中用到了立即数就要将其记录到指令格式中立即数部分如果寻址方式中有到了偏移量就要将此偏移量记录到指令格式中的偏移量部分。
既然指令是存放在指令寄存器中那指令中用到的数据存放到哪里呢下面介绍存储单元。
存储单元是指cpu内部的L1、L2缓存及寄存器待处理的数据就存放在这些存储单元中这里的数据是说指令中的操作数。为什么数据已经在内存中了还非得在cpu内部再整这么个存储单元干吗原因是缓存基本上都是采用SRAM Static RAM存储器从名字上看就知道它是一种具有静态存取功能的存储器。这么一说似乎还有动态存储功能的存储器是啊其实我们插在主板上的物理内存就是DRAMDynamic Random Access Memory, DRAM内存需要每隔一段时间就去刷新电路刷新就是指给DRAM充电否则存储的数据就会丢失。而SRAM不需要刷新电路即能保存它内部存储的数据,这就是静态的含义因此SRAM性能较强劲。但SRAM也不是完美无缺的它的集成度较低相同容量之下SRAM的体积比DRAM要大很多。所以二级缓存都不大目前来说顶多4兆左右所以现代cpu用二级缓存的数量取胜如L1、L2、L3共三级。寄存器可分为两大类程序员可以使用的寄存器称为程序可见寄存器如通用寄存器段寄存器。程序不可见寄存器是指程序员不可使用也无法访问到它们系统运行期间可能要用到的寄存器如ALU算术逻辑单元在求和时会将结果先送到数据暂存寄存器。操作码有了操作数有了就差执行指令了随后“操作控制器”给相关部件发信号会给哪些部件发信号呢如下面要介绍的运算单元。
运算单元是负责算术运算加减乘除和逻辑运算比较、移位它从控制单元那里接收命令信号并执行它没有自主意识只是个执行部件。它们之间的关系如图 好啦文字描述过了图也看过了总结下cpu的工作原理控制单元要取下一条待运行的指令该指令的地址是在程序计数器PC中在x86cpu上程序计数器就是cs:ip。于是读取ip寄存器后将此地址送上地址总线cpu根据此地址便得到了指令并将其存入到指令寄存器IR中。这时候轮到指令译码器上场了它根据指令格式检查指令寄存器中的指令,先确定操作码是什么再检查操作数类型若是在内存中就将相应操作数从内存中取回放入自己的存储单元若操作数是在寄存器中就直接用了免了取操作数这一过程。操作码有了操作数也齐了操作控制器给运算单元下令开工于是运算单元便真正开始执行指令了。ip寄存器的值被加上当前指令的大小于是ip又指向了下一条指令的地址。接着控制单元又要取下一条指令了流程回到了本段开头cpu便开始了日复一日的循环由于cpu特别不容易坏所以唯一它停下来的条件就是停电。
以上是cpu的工作原理无论cpu在哪种模式下工作这一核心原理是不变的。有了这一思想武装起来后再讲模式就简单多了兄弟们加油下一节不见不散。