计算机体系结构(6)

	/**
     * 计算机体系结构(6)
     *      虚拟机对虚拟存储器和I/O的影响
     *          每个VM客户操作系统都维护自己的页表集合
     *              VMM区分物理存储器和实际存储器的概念
     *                  虚拟存储器——物理存储器——机器存储器
     *
     *      @交叉问题 存储器层次结构的设计
     *          #保护和指令集体系结构问题
     *              缓存一致性
     *                  数据可以同时出现在存储器和缓存中
     *                  只要处理器是唯一修改或读取数据的组件,并且缓存存在于处理器和存储器之间,那么处理器看到过期数据是比较低的
     *                  但是多核处理器中增加了这个几率
     *
     *      #指令集并行 (ILP)
     *          由于指令可以并行执行,所以指令之间可能实现的这种重叠称为指令集并行
     *          ILP两种不同的开发方式
     *              依靠硬件来帮助动态发现和开发并行
     *              依靠软件技术在编译时静态发现并行
     *
     *           基本块(一段顺序执行的代码,除了入口没有其它转入分支,除了出口没有其它转出分支)
     *              可以利用的并行数非常有限,前后指令的依赖导致开发重叠数量可能少于基本块的平均大小
     *              为了提高性能,必须跨多个基本块开发ILP
     *
     *              循环级别并行
     *                  在迭代中进行并行开发
     *
     *          数据相关和冒险
     *              要确定一个程序中可以存在多少并行以及如何开发并行,判断指令之间的依赖关系是重要的
     *                  我们必须能够判断哪些指令可以并行执行,如果两条指令是并行的,就可以在任意深度的流水线中执行,不会导致任何停顿。
     *                  如果两条指令是相关的,它们就必须顺序执行;
     *
     *              #数据相关
     *                  #真数据相关 [指令j数据相关于指令i]
     *                  #写后写
     *                      j试图在i写一个操作数之前写该操作数
     *                      这些写操作会以错误的顺序执行,最后留在目标位置的值是由i写入的值,而不是j写入的值
     *
     *                  #读后写
     *                      j尝试在i读取一个目标位置之前写入该位置,所以i会读取错误的新值
     *
     *                  #写后读
     *                      j试图在i写入一个源位置之前读取它,所以j会错误的获取旧值,必须保证顺序执行
     *
     *                      指令i 生成的结果可能会被指令j用到
     *                      指令k数据相关于指令j,指令k数据相关于指令i
     *                  --相关是程序的属性 ,某种相关是否会导致冒险,某种冒险是否又会导致实际停顿,这些都是流水线结构的性质
     *                      数据相关的三点信息
     *                          冒险的可能性
     *                          计算结果必须遵循的顺序
     *                          可开发并行度的上限
     *                      克服相关性方法
     *                          保护相关性但避免冒险
     *                          通过转化代码来消除相关性
     *                      对代码进行调度是在不修改相关性的情况下避免冒险的主要方法
     *
     *                  数据既可以通过寄存器也可以通过存储器位置在指令之间传送
     *                       当数据传送在寄存器中发生,由于指令在寄存器名字是固定的,检测相关性简单
     *                       当数据在存储器位置之间流动,由于看起来不同的地址可能引用同一个位置,难以检测
     *
     *                  #名称相关 【可以通过寄存器重命名解】
     *                      当两条指令使用相同的存储器或者寄存器名称,但与该名称相关的指令之间并没有数据流动,发送名称相关
     *                          指令i和j之间存在两种类型的名称相关
     *                              1、当指令j对指令i读取的寄存器或者存储器位置执行写操作时就会在指令i和指令j发送反相关(指令i在指令j前面,指令j的写名称和指令i的读名称相关)
     *                                  为了保证i读取到正确的值,必须保证原来的顺序
     *
     *                              2、当指令i和指令j对同一个寄存器或者存储地址位置执行写操作,发生输出相关(指令i在指令j前面,指令j与指令i写的名称相同)
     *                                   为了确保写入的值与指令j相对应,必须保证指令间的顺序
     *
     *                              对寄存器操作数——寄存器重命名
     *
     *                  数据冒险
     *                      只要指令间存在名称相关或者数据相关,而且他们非常接近;
     *                          足以是执行期间的重叠改变对相关操作数的访问顺序,存在冒险
     *                          由于存在相关,必须保证顺序执行,由源程序的执行顺序执行——重排序
     *                              尽量开发并行,尽在程序顺序会影响输出结果是才保持程序顺序,检测和避免冒险可以确保程序不会打乱顺序
     *
     *
     */
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

P("Struggler") ?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值