zoukankan      html  css  js  c++  java
  • 计算机组成原理之高速缓存(重要点)

    这一篇也是计算机组成中比较重要的概念,高速缓存。

    上一篇已经讲了存储层次结构,接下来看看高速缓存的原理。

    Cache取回数据时并不只是取回CPU要求的单个数据,而是取回一个数据块Block,其实这是一个预期的行为,比如一般我们

    访问数组下标为1的数据时,接下来大可能继续访问下标2,3……的数据

    另外频繁被访问的数据也会在Cache中被缓存下来 

     这是Cache的访问过程,看起来非常像我们写的程序逻辑判断。。。

      上图中衡量高速缓存的是平均访问时间=命中时间+失效代价X失效率

      降低平均访问时间也是从这三个参数入手设计,然而实现目标总没有那么十全十美,比如想让命中时间降低,需要让缓存容量减小,

    这样能存下的缓存数据就减少了,失效率也会上去。

      需要知道的是指令和数据以前都是在内存中,但是指令和数据的访存时间差距却很大,一般指令访存的平均时间比数据小很多,比如

    厨师现在知道了下一个菜是炒番茄鸡蛋,但是收到指令很久才有切好的番茄送过来,因此现代CPU大多数将指令和数据分放在两个独立的

    Cache中,避免空间上相互影响。

      下图是Corei7的缓存设计。其中路组相联指的是高速缓存中的相同地址头的存放策略。比如编号为1的房间现在放着数据A,现在需要

    数据B,取回来后编号也是1,那么是增加一个房间呢还是替换编号1房间的数据A呢,很显然,这又是个相互制约的设计

     关于Cache的写策略,只能从字面意思上去理解,具体的怎么设置尚不清楚

  • 相关阅读:
    Roman to Integer
    Remove Element
    Maximum Subarray
    Climbing Stairs
    Binary Tree Preorder Traversal
    C++引用和指针
    adb
    Traceview
    解析xml
    SDK manager 下载不同版本sdk
  • 原文地址:https://www.cnblogs.com/yb38156/p/9636148.html
Copyright © 2011-2022 走看看