精华内容
下载资源
问答
  • 高速缓冲存储器

    2020-04-17 19:42:11
    高速缓冲存储器 一、概述 ​ 解决问题:CPU空等现象、CPU和(DRAM)的速度差异 局部性原理:指令和数据在主存内都是连续存放的,并且有些指令和数据往往会被多次调用,即指令和数据在主存的地址分布不是随机的,而是...

    高速缓冲存储器

    一、概述

    解决问题:CPU空等现象、CPU和(DRAM)的速度差异

    局部性原理:指令和数据在主存内都是连续存放的,并且有些指令和数据往往会被多次调用,即指令和数据在主存的地址分布不是随机的,而是相对的簇聚,CPU在执行程序时,访问具有相对的局部性。

    程序访问的局部性原理:一般Cache采用高速的SRAM

    1.Cache工作原理

    主存和缓存的编址

    图一

    在主存和缓存中 的大小相同 B代表块长

    存储块中需要设一个 标记,用来表示缓存中的字块来自于内存哪个位置,该标记的内容相当于主存储器中的编号。在CPU读信息时,要将主存地址的高m位于缓存标记块进行比较。

    命中与未命中

    • 命中:当CPU欲读取主存某字时所需要的字块已在缓存中,可直接访问Cache
    • 未命中:当CPU欲读取主存某字时所需要的字不在缓存中,需要将CPU中字块调入Cache中

    缓存共有C块,主存共有M块 M>>C

    如果需要访问的主存已与缓存建立联系

    Cache命中率:

    • 容量:容量越大,命中率越高

    • 块长:根据局部性原理,在已访问字附近、近期也可能被访问,增大块长可以增加数据的被命中率,但是如果字长过长容易导致

    • 命中率的计算h为命中率,Nc为命中次数,Nm为访问主存的总次数

    h=NcNc+Nm h=\frac{N_c}{N_c+N_m}

    • 平均访问时间:t为访问缓存的访问时间,T为访问主存的访问时间
      ht+(1h)T ht+(1-h)T

    2. Cache的基本结构

    在这里插入图片描述
    主要结构:

    • Cache存储体
    • Cache替换机构:在发现CPU发来的地址未命中时,先将Cache中的部分块字从Cache中剔除,然后将主存中的对应CPU传输地址的数据存入Cache
    • 主存Cache地址变换机构:将CPU传输的主存地址转换为Cache地址(主要是主存的块号与Cache块号的转换)。

    Cache中的读写操作

    • 读:

    在这里插入图片描述

    • :写操作也可以用以上的方法进行,但是为了保持缓存与主存中数据保持一致有以下的方法
      • 写直达法:主存和缓存中的数据同时更改(增加了访问次数,增加了操作时间)
      • 写回法:写操作时只是将Cache中的数据进行更改,只有将Cache中的数据调回主存时才将主存中的数据进行刷新。

    Cache的改进

    (1)单一缓存和两级缓存: 所谓单一缓存就是在CPU和主存之间只设立一个缓存,随着集成电路逻辑密度的提高,直接把缓存放到了CPU内,设置成 片内缓存。片内缓存可以提高外部中线的利用率(CPU与缓存的交流并不需要通过总线),但是片内缓存的 容量往往不大(CPU内部空间限制),从而导致命中率过低,所以可以在片内缓存和主存之间添加一个 片外缓存,使用DRAM进行数据缓存,并且单独设立一条数据路线,这样可以有效保证计算机性能。

    (2)统一缓存和分立缓存:统一缓存是指指令和数据都存放到同一缓存内的Cache,分离缓存则将它们分开缓存

    • 统一缓存和分立缓存影响因素主要有两点
      • 主存如何存储数据
      • 它与机器对指令执行的控制方式有关:
        • 采用超前控制(当前指令尚未执行结束,就将下一条准备执行的指令取出):防止执行指令与读指令相冲突
        • 流水控制(实质是多条指令同时执行,类似于低位交叉编制方式):统一缓存就可

    二、Cache-主存的地址映射

    地址映像是指某一数据在内存中的地址与在缓冲中的地址,两者之间的对应关系

    1.直接映射

    主存的各个块之前都已经都已经对应好相应的缓存块,如果访问时发现模块需要放到缓存中则可直接存到相应的缓存块

    在这里插入图片描述

    • 优点:
      • 实现简单,查找速度快
        • 主存地址的中间c位即为Cache的字块地址;
        • 使用高t位地址(主存标记)进行比较,决定是否命中;
    • 缺点:
      • 灵活性差
        • 主存中的2t个字块只能对应唯一的Cache字块,即使Cache中的背的字块空着也不能占用。

    2.全相联映射

    主存中的任意一块可以映射到缓存中的任一块

    在这里插入图片描述

    • 优点
      • 灵活性好
    • 缺点
      • 成本高
      • 速度慢

    3.组相联映射

    在这里插入图片描述

    具体分组情况

    在这里插入图片描述

    将Cache分成2cr2^{c-r}个组,每一组2m12cr\frac{2^m-1}{2^{c-r}}个字块,主存块放到哪个组是固定的,至于该放组的哪一行位置是灵活的。

    特点

    • 性能和复杂性都介于直接映射和全相联映射之间
    • 当r=0时,相当于直接映射
      Cache分成2cr2^{c-r}个组,每一组2m12cr\frac{2^m-1}{2^{c-r}}个字块,主存块放到哪个组是固定的,至于该放组的哪一行位置是灵活的。

    特点

    • 性能和复杂性都介于直接映射和全相联映射之间
    • 当r=0时,相当于直接映射
    • 当r=c时,相当于全相联映射
    展开全文
  • 高速缓冲存储器状态位.pdf
  • 高速缓冲存储器是现代计算机系统中使用的小型高速缓冲存储器,用于暂时保持当前正在使用的(主要是)主存储器内容的那些部分。 位于高速缓冲存储器中的信息可以在比主存储器中存在的时间少得多的情况下进行(由于...
  • 计算机的存储体系中,“三级存储”指的是:高速缓冲存储器、主存储器、辅助存储器。  三级存储的用途:高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题;辅助存储器用于扩大存储空间。 ...

    计算机的存储体系中,“三级存储”指的是:高速缓冲存储器、主存储器、辅助存储器。
      三级存储的用途:高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题;辅助存储器用于扩大存储空间。

    展开全文
  • 高速缓冲存储器内的控制数据修改.pdf
  • ADI高速缓冲存储器在Blackfin?处理器中的应用pdf,ADI高速缓冲存储器在Blackfin?处理器中的应用
  • VxWorks下的高速缓冲存储器一致性问题解决方案.pdf
  • 多通道成组联合高速缓冲存储器的加锁控制.pdf
  • 美国风河(WindRiver)公司的VxWorks是目前最先进的...该系统下有两个cache区:数据高速缓冲存储器和指令高速缓冲存储器 本文讨论的高速缓冲存储器问题均指数据高速缓冲存储器。 高速缓冲存储器一致性问题是指高速...


       美国风河(WindRiver)公司的VxWorks是目前最先进的实时嵌入式操作系统。Tornade是它的集成一体开发环境。然而,vxWorks下编程硬件驱动程序时却存在着高速缓冲存储器一致性(Cache Coherence)的问题。该系统下有两个cache区:数据高速缓冲存储器和指令高速缓冲存储器  本文讨论的高速缓冲存储器问题均指数据高速缓冲存储器。
        高速缓冲存储器一致性问题是指高速缓冲存储器中的数据必须与内存中的数据保持同步(一致)  这个问题常发生在CPU内核与另一个设备异步访问内存时。
        高速缓冲存储器可以工作在Write-through或copyback模式。在Write-through模式下,数据输出时.系统会把数据同时写入高速缓冲存储器和内存中.这样.就保证了输出时的高速缓冲存储器一致性.但该模式却无法解决输入时的高速缓冲存储器一致性问题.在Copyback模式下。系统只写数据到高速缓冲存储器中.因此对于数据输入和输出都存在高速缓冲存储器一致性问题。
        VxWorks下通常有两种方法解决高速缓冲存储器一致性问题.
        (1)Cache-safe buffer(即non-cacheable  的buffer)。这种情况下,CPU读数据时会从内存中读取.而不是从高速缓冲存储器中读取:而CPU写数据时则同时写入高速缓冲存储器和内存.
    方案可通过以下两种方法实现.

    在内存段属性中定义此段buffer,空间属性为non-cacheable; 在内存管理单元MMU支持下,用cache DmaMalloc()/cache DmaFree()获得此段buffer。则此段buffer是non-cacheable的(注意无MMU时。分配的buffer是cacheable.此法不支持这种情况)。

        (2)对于cacheable的buffer空间,采用flush()/invalidate()函数或宏来配合读/写使用此段buffer空间.flush()将高速缓冲存储器中的数据写入内存。invalidate()则将内存中数据写入高速缓冲存储器。这两个函数都保证了高速缓冲存储器与内存同步。
        实际flush()/invalidate()函数有如下两组,功能相同稍有区别:
        组1:CACHE_DMA_FLUSH()函数和CACHE_DMA_INVALIDATE()函数
        组2:cache Flush()函数和cacheInvalidate()函数
    第一组实际是2个宏,与cache DmaMalloc()函数配合使用。

    2 MPC860上高速缓冲存储器一致性的软件设计方法
      MPC860是摩托罗拉公司的32位多用途集成通信控制器.主要包括一个32位的嵌入式PowerPC core。一个通信处理模块CPM,一个系统
    集成模块SIM60及一个独立的快速以太网FEC模块.在VxWorks下编写MPC860的驱动程序。要保护的是CPM、FEC模块的发送/接收缓冲区描述符TXBD/RXBD及其对应的缓冲区对于MPC860开发中象BD(Buffer DescriptiOn)这样的静态空间适合采用cache-safe boffer方法。即采用第1种方法;
      而对BD域中对应的缓冲区.由于该缓冲区多是动态分配和释放,更适合采用第2种方法,即采用flush()/invalidate()函数或宏来配合读/写使用此段缓冲区空间.这样可以避免将整个的包括还未分配的空间都预先标记为non-cacheable而造成效率低下。具体可以采用下面的方法:
        (1)TXBD/RXBD放在MPC860双口RAM中。并在板级支持包BSP文件Syslib.c中的页描述符数据结构svsPhysMemDesc[]中定义860上所有64K内存空间为non-cachable的缓冲区。从而不必做cache coherence的保护了.
        (2)对应TXBD/RXBD中数据指针域的发/收缓冲区均用cache DmaMalloc()获得(具体是指初始化时给所有接收RXBD挂接的初始缓冲区和接收帧函数中给RXBD挂接的新缓冲区.以及在应用层中使用的发送TXBD对应的缓冲区)。而用cacheDmaFree()释放.同时发送帧函数中用cacheFlush()函数保护待发送TXBD对应的缓冲区:接收帧函数中用cache Invalidate()函数保护已经装载了接收数据的接收缓冲区。以快速以太网FEC的驱动程序为例,保护具体实现如下:

        /* FEC发送帧函数 */
    FEC_SEND_FRAME()
        /* 填写发送buffer内容,实际填写在data cache中 */
        sptr_tx_buffer[i]=data;
     ……
        fec.txBd.dataPointer=(char*)sptr_tx_buffer;
        /*将填写在data cache中的内容写回内存中的实际发送buffer(即以sptr_tx_buffer为地址的内存)中*/
        cache Flush(DATA_CACHE,sptr_tx_buffer,1518);
        /*启动发送命令,FEC控制器发送内存中buffer内容而非data cache中内容*/
        *(UINT32*)VXImmrGet()+MOT_FEC_TX_ACT_OFF))=MOT_FEC_TX_ACT;
    }

    /*FEC接收帧函数*/
    FEC_RECEIVE_FRAME()
    {
        /*取得实际接收buffer的地址*/
    pBuffer=(void*)fec.rxBd.dataPointer;
    /*将RXBD对应得内存中接收buffer中内容写回data cache中*/
    cacheInvalidate(DATA_CACHE,pBuffer,1520);
        *vptr_buffer=pBuffer;
        /*以后CPU可以安全使用接收buffer中的内容**vptr_buffer了*/
    }

    展开全文
  • 高速缓冲存储器cache

    2017-03-30 16:02:28
    一:高速缓冲存储器的诞生:(1)由于主存的访存速度和cpu的运算速度相差较大,所以需要一个介于他们两者之间的东西(高速缓冲存储器cache)去平衡两者的速度。  (2)由于I/O设备向主存请求的级别高于cpu访存,这...

    一:高速缓冲存储器的诞生:(1)由于主存的访存速度和cpu的运算速度相差较大,所以需要一个介于他们两者之间的东西(高速缓冲存储器cache)去平衡两者的速度。

                                            (2)由于I/O设备向主存请求的级别高于cpu访存,这就出现了cpu等待I/O设备访存的现象,致使cpu空等一段时间,甚至可能等待几个主存周期,从而降低了cpu的工作效率(其实还是原因一:因为cpu的运算速度远远大于主存的访存速度)

    二:高速缓冲存储器的工作原理是基于程序访问的局部性(通俗的说就是经常用到的数据放在一个高速的cache里面,方便寄存器调用)

    三:寄存器,高速缓冲存储器(缓存),主存,硬盘的关系:从左到右速度越来越低,容量越来越大;举个生动的例子如下:

    以经典的阅读书籍为例。我正在读的书,捧在手里(寄存器),我最近频繁阅读的书,放在书桌上(缓存),随时取来读。(当然书桌上只能放少量的几本书:这点对应于缓存的容量小)我更多的书在书架上(主存)。如果书架上没有的书,就去图书馆(本地磁盘)。我要读一本书的流程为:先看手里有没有我要进行读写的书,如果没有就去看桌子上有没有我要读的书,如果桌子上也没有就去书架上找有没有,如果书架上也没有就去图书馆找要读的书籍。

    这个例子可以对应为cpu访问主存的流程:cpu给出要访存的地址,先到与他紧接着的寄存器中找,如果寄存器(与cpu封装在一起,存储要进行操作的指令和数据)中没有,则去cache中找。如果缓存中没有,则从内存(主存和缓存)中取,如果主存中也没有,则先从磁盘读入内存,再读入缓存,再读入寄存器,最后交付给cpu进行运算

    四:cache(高速缓冲存储器)的几个重要参数:

    1、cache分级,L1 cache, L2 cache, L3 cache,级别越低,离cpu越近
    2 、cache的容量
    3 、cache的linesize
    4 、cache 每组的行个数.
    下面来解析一下cache的这几个参数以及cache的组成结构:

    cache分成多个组,每个组分成多个行,linesize是cache的基本单位,从主存向cache迁移数据都是按照linesize为单位替换的。 比如linesize为32Byte,那么迁移必须一次迁移32Byte到cache。 这个linesize比较容易理解,想想我们前面书的例子,我们从书架往书桌搬书必须以书为单位,肯定不能把书撕了以页为单位。书就是linesize。 当然了现实生活中每本书页数不同,但是同个cache的linesize总是相同的。

    所谓8路组相连( 8-way set associative)的含义是指,每个组里面有8个行。

    我们知道,cache的容量要远远小于主存,主存和cache肯定不是一一对应的,那么主存中的地址和cache的映射关系是怎样的呢?

    拿到一个地址,首先是映射到一个组里面去。如何映射?取内存地址的中间几位来映射。

    举例来说,data cache: 32-KB, 8-way set associative, 64-byte line size

    Cache总大小为32KB,8路组相连(每组有8个line),每个line的大小linesize为64Byte,OK,我们可以很轻易的算出一共有32K/(8*64)B=64 个组。

    对于32位的内存地址,每个line有2^6 = 64Byte,所以地址的【0,5】区分line中的那个字节。一共有64个组。我们取内存地址中间6为来hash查找地址属于那个组。即内存地址的 【6,11】位来确定属于64组的哪一个组。组确定了之后,【12,31】的内存地址与组中8个line挨个比对,如果【12,31】为与某个line一 致,并且这个line为有效,那么缓存命中。

    
    展开全文
  • 高速缓冲存储器(Cache)

    千次阅读 2018-01-04 11:39:54
    高速缓冲存储器(Cache)
  • 介绍: 高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。很多大、中型计算机以及新近的一些小型机、微型机也都采用高速缓冲存储器。...
  • 一种高速缓冲存储器的可综合伪随机功 能 验 证 方 法
  • Cache 高速缓冲存储器

    2018-04-12 19:49:00
    Cache(即高速缓冲存储器(Cache Memory),是我们最常听到的一个词了。在老鸟们眼中,这个词或许已没有再谈的必要,因为他们对Cache从设计的必要性到工作原理、工作过程等等都已了如指掌了;而对菜鸟朋友们而言,这些...
  • 高速缓冲存储器-cache

    千次阅读 2014-02-15 18:51:41
    高速缓冲存储器 编辑词条 高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取...
  • 高速缓冲存储器 || 什么是 cache ? cache 是一种小容量高速缓冲存储器,由SRAM(static random access of memory)组成。直接制作在CPU芯片内,速度几乎与CPU一样快。程序运行时,CPU使用的一部分数据/指令会预先...
  • 高速缓冲存储器详解,个人感觉写得比较详细,分享一下
  • 高速缓冲存储器的功能  高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据。...
  • cache高速缓冲存储器

    千次阅读 2012-08-08 10:37:30
    高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。 基本概念 在...
  • 为什么要使用高速缓冲存储器? 使用高速缓冲存储器,需要遵循程序访问的局部性原理,即要求CPU使用的指令,大部分都能够在缓存中找到。 三种不同类型的局部性: 时间局部性(Temporal Locality):如果一个...
  • 高速缓冲存储器cache介绍

    千次阅读 2017-10-19 18:38:10
     为了解决存储器系统的容量、存取速度及单位成本之间的矛盾,可以采用 Cache- 主存存储结构,即在主存和 CPU 之间设置高速缓冲存储器 Cache ,把正在执行的指令代码单元附近的一部分指令代码或数据从主存装入 Cache...
  • Cache(高速缓冲存储器)

    2021-03-28 10:11:00
    Cache(高速缓冲存储器) 什么是Cache 在多行并行存储系统中,由于I/0设备像内存请求的级别高于CPU访存,出现CPU等待I/0设备访存的现象,致使CPU空等一段时间,降低了CPU工作效率。为了避免与I/0争抢方寸,在CPU与...
  •   第三章——存储系统   3.1 存储器概述 3.2 存储器的层次化结构 3.3 半导体随机存储器 3.4 主存储器与CPU的连接 ...3.6 高速缓冲存储器 3.7虚拟存储器 123       ...
  • 老样子,在正式开始介绍“高速缓冲存储器”之前,我们先来了解一下其相关的信息。 我相信,上面这张图你一定已经非常熟悉了,没错,这就是在本章绪论说的“存储器的层次结构”。 上一讲我们介绍了存储层次结构中...
  • 高速缓冲存储器 一、概述 1、为什么用Cache 避免CPU“空等”现象 CPU和主存(DRAM)的速度差异 程序访问的局部性原理 2、Cache的工作原理 主存和缓存的编址 主存和缓存按块存储 块的大小相同 命中与未命中 缓存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,631
精华内容 652
关键字:

高速缓冲存储器