【OS学习笔记】十二 现代处理器的结构和特点

本文是一个衔接点,上一篇文章以前都是学习8086实模式的知识。本文开始学习80386这种现代处理器的编程架构。由此进入保护模式的学习。点击链接查看上一篇文章:上一篇文章

1、现代处理器的结构和特点

1 流水线技术

处理器可以做很多事情,能够执行各种不同的指令,完成不同的功能,但这些事情大多不会再一个时钟周期内完成。执行一条指令,需要从内存中取指令,译码,访问操作数和结果,并进行移位、加法、减法、乘法以及其他任何操作。

为了提高处理器的执行效率和速度,可以把一条指令的执行过程分解成若干个细小的步骤,并分配给相应的单元来完成。各个单元的执行都是独立的、并行的。如此一来,各个步骤在时间上就会重叠起来,这种执行指令的方法,就是流水线(Pipe-Line)技术。

比如,一条指令的执行过程分为取指令、译码和执行三个步骤的话。假设每个步骤都要花一个时钟周期,那么如下图所示,如果采用顺序执行,则执行三条指令就要花9个时钟周期,没3个时钟周期才能得到一条指令的执行结果;如果采用3级流水线技术的话,则执行这三条指令只需要5个时钟周期,每隔一个时钟周期就能够得到一条指令的执行结果。

在这里插入图片描述

2、高速缓存技术

高速缓存,在以前的文章中有讲的很详细,这里不再赘述,直接查看以前的文章即可。

点解下面链接查看:

高速缓存

其实简单来说高速缓存就是为了弥补外存(内存条)的读写速度过于缓慢的缺陷。将内存中的一些指令和数据,缓存到高速缓存中,那么CPU可以不用访问内存而直接访问高速缓存,这样会快的多!!!

3、乱序执行技术

为了实现流水线技术,需要将指令拆分成更小的可独立执行部分,即拆分成微操作。

一旦将指令拆分成微操作,处理器就可以在必要的时候乱序执行。考虑以下程序:

mov   eax , [mem1]
shl   eax , 5
add   eax , [mem2]
mov   [mem3] , eax

这里add eax , [mem2]可以拆分成两个微操作。先从mem2对应的地址取数据,然后将数据与eax寄存器中存的数据相加,得到的结果存入eax寄存器。如此一来,在执行逻辑左移指令的同时,处理器可以提前从内存中读取mem2的内容。典型的,如果数据不在高速缓存中,那么处理器在获取mem1的内容后,会立即开始获取mem2的内容,与次同时,shl指令的执行早就开始了。

类似的这种乱序执行很多很多,总给不在赘述。

4、寄存器重命名技术

考虑以例子:

mov   eax , [mem1]
shl   eax , 3
mov   [mem2] , eax
mov   eax , [mem3]
add   eax , 2
mov   [mem4] , eax

以上代码做了两件事情,但是互不相干。

  • 将mem1的内容左移3次后,传给mem2
  • 将mem3的内容加2后,传给mem4

如果我们为最后三条指令使用不同的寄存器,就更能清楚的看明白,这两件事的互不相干性。事实上,处理器也是这么做的。处理器为最后三条指令使用了另一个不用的临时寄存器,因此,左移和加法指令可以并行的处理。

IA-32架构的处理器只有8个32位的通用寄存器,但通常都会被我们全部派上用场(甚至还觉得不够)。因此我们不能奢望在每个计算机中都使用新的寄存器。不过在处理器内部,却有大量的临时寄存器可用,处理器可以重命名这些寄存器,但是以代表一个逻辑寄存器,比如上述的EAX寄存器。

寄存器重命名以一种完全自动和非常简单的方式工作。每当指令写一个逻辑寄存器时,处理器就为那个逻辑寄存器分配一个新的临时寄存器。

在所有操作都完成之后,那个代表EAX的临时寄存器里面存的内容就会被写入真实的EAX寄存器,该处理过程称为引退。

所有通用寄存器,栈指针寄存器,标志寄存器,浮点寄存器,甚至段寄存器都有可能被重命名。

5、 分支目标预测技术

流水线并不是百分之百完美的解决方案。实际上,有很多潜在的因素会使得流水线不能达到最佳的效率。一个典型的情况是,如果遇到一条转移指令,则后面那些已经进入流水线的指令就都无效了。换句话说,我们必须清空流水线,从要转移到的目标位置处重新取指令放入到流水线。

随着复杂架构下的流水线变得越来越长,程序分支带来的问题变得很大。为了解决这个问题,引入了分支预测技术。

从统计学的角度来看,有些事情一旦发生,下一次发生的概率很大。比如下面的程序片段:

		xor  si , silops:......cmp  si , 20jnz  lops

当jnz指令第一次执行时,转移一定会发生。那么处理器就可以预测,下一次它还会转移到标号lops处,而不是顺序往下执行。事实上,这个预测通常是很准的。

在处理器内部,有一个小容量的高速缓存器,叫做 分支目标缓存器(BTB)。当处理器执行了一条分支语句后,它会在BTB中记录当前指令的地址、分支目标的地址。以及本次分支预测的结果。下一次,在那条转移指令实际执行之前,处理器会查找BTB中,看有没有最近的转移记录。如果能找到最近的条目,则推测执行和上次相同的分支,把该分支的指令送入流水线。

当该指令执行时,如果预测是失败的,那么清空流水线,同时刷新BTB中的记录。这个代价很大。

细心的人早已发现,这其实就是一个缓存的思想!!!这个思想很牛逼!!!

2、总结

理解现代处理器的结构特点:

  • 流水线技术
  • 高速缓存思想
  • 乱序执行思想
  • 寄存器重命名
  • 分支目标预测技术

其实这些思想,在以后的上层软件开发中,也是经常遇到。

笔记记得不是很全,如果有不懂的可以加我联系方式一起交流。

学习探讨加个人:
qq:1126137994
微信:liu1126137994

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(172):格式化文本

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>格式化</…

输出星号平行四边形

输出星号平行四边形 代码 #include <stdio.h>intmain(){inti, j, k, max; printf("Input max:"); scanf("%d", &max);for(i 1; i <max /21; i) /*1~max / 2 1 行 */{for(j max /2-i; j >0; j--) /*第i行的空白字符 */{ putchar(); }for(j…

投资理财分享

投资理财分享理财是作为工作之外的另一个技能&#xff0c;一直想去学习&#xff0c;但是由于种种原因&#xff0c;推迟&#xff0c;最近开始了自己理财课程&#xff0c;适合小白入手&#xff0c;持续更新中&#xff1b;

【OS学习笔记】十三 保护模式一:全局描述符表(GDT)

上一篇文章&#xff0c;我们大致领略了现代处理器的结构和特点。点解链接查看上一篇文章&#xff1a;现代处理器的结构和特点 本篇文章开始&#xff0c;学习保护模式下的的各种机制。什么是保护模式呢&#xff1f; 一般来说&#xff0c;操作系统负责整个计算机软硬件的的管理…

众多SEO专家集体盛赞

《SEO实战密码》将给你思路、眼界和方法的拓展之道。选一个适宜阅读的角落&#xff0c;一杯咖啡&#xff0c;一支笔&#xff0c;听Zac系统地讲SEO知识、见解和经验分享吧。我们都知道&#xff0c;你的竞争对手也会是Zac的粉丝。 葛小飞&#xff08;天真&#xff09;&#xff0c…

前端学习(173):格式化文本二

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>格式化</…

【OS学习笔记】十四 保护模式二:段描述符

上一篇文章初步进入保护模式的学习。首先学习了全局描述符表GDT。点击链接查看上一篇文章&#xff1a;全局描述符表 本篇文章继续学习&#xff0c;GDT中存放的条目&#xff1a;描述符&#xff0c;确切的说是段描述符。学习段描述符的作用以及段描述符的格式。 1、段描述符的格…

前端学习(174):图片热区链接

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>超链接——图…

软件基础思维导图

软件基础1.进程和线程的多种状态2.软件基础1.进程和线程的多种状态 2.软件基础

【OS学习笔记】十五 保护模式三:保护模式下的内存访问机制

上一篇文章学习了段描述符与段描述符各个标志位的含义&#xff1a;段描述符 本篇文章学习如何进入保护模式&#xff0c;并学习如何在保护模式下进行内存访问。 1、如何进入保护模式 假设我们已经用汇编语言将段描述符安装到GDT中&#xff08;具体的汇编代码在后面的文章中会…

前端学习(175):弹窗

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>超链接——J…

前端学习(176):列表元素

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>有序列表<…

设计模式-装饰者模式

1. 场景 很经典的一个场景 咖啡类型 espresso&#xff08;意大利咖啡&#xff09;&#xff0c;shortblack,LongBlack(美食咖啡)&#xff0c;Decaf(无因咖啡)调料 Milk ,Soy(豆浆)&#xff0c;Chocolate费用 不同的咖啡价格是不同的&#xff0c;而且有 咖啡调料的类型组合 每个咖…

【OS学习笔记】十七 保护模式五:保护模式下如何进行内存保护 与 别名段的意义与作用

上一篇文章学习了如何进入保护模式&#xff0c;以及如何在保护模式下进行内存访问。点击链接查看上一篇文章&#xff1a;进入保护模式与在保护模式下访问内存 首先说明本片文章有对应的汇编代码&#xff0c;点击链接查看&#xff1a;点击查看 本篇文章接着学习。我们已经知道…

前端学习(177):定义列表

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>定义列表<…

oracle 数据库工作总结思维导图

oracle 数据库工作中使用总1. oracle 数据库 工作中使用总结思维导图2 解析oracle执行计划1. oracle 数据库 工作中使用总结思维导图 2 解析oracle执行计划 执行计划树的基本规则如下&#xff1a; 执行计划将包含一个根&#xff0c;没有父&#xff08;操作&#xff09; 父&…

【软件开发底层知识修炼】十一 链接器-链接脚本

上一篇文章学习了链接器之-main函数不是第一个执行的函数:main函数不是第一个执行的函数 今天继续学习链接器&#xff0c;学习链接是如何动作的&#xff0c;从而引入链接脚本的概念。本文就学习链接脚本的概念。 1、链接脚本的作用 我们都知道可重定位文件经过链接器链接后最…

前端学习(178):表格元素

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>表格</ti…

java后端分享整理

java规范总结1. Java 常见的代码规范1.1. Java 自带的工具方法1.1.1 比较两个对象是否相等1.1.2 apache commons工具类库1.1.2.1 字符串判空1.1.2.3 重复拼接字符串1.1.2.4 格式化日期1.1.2.4 包装临时对象 &#xff08;不是特别常用&#xff09;1.1.3 common-beanutils 操作对…

SharePoint要在master page中动态显示List数据的几种方式

我们都知道&#xff0c;在SharePoint中&#xff0c;Content page继承自Page layout&#xff0c;而Page layout又继承自Master page。Master page的作用大家都知道&#xff0c;它定义了站点的的整体外观和公共元素&#xff0c;因此有了很强的页面重用性和很好的页面编辑体验&…