当前位置:首页 » 硬盘大全 » 高速缓存一致性问题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

高速缓存一致性问题

发布时间: 2022-04-16 21:35:41

❶ 单片机裸机编程怎么解决cache一致性问题

Cache原理
CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存 读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的 一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。
只要Cache的空间与主存空间在一定范围内保持适当比例的映射关系,Cache的命中率还是相当高的。一般规定Cache与内存的空间比为4:1000,即128kB Cache可映射32MB内存;256kB Cache可映射64MB内存。在这种情况下。命中率都在90%以上。至于没有命中的数据,CPU只好直接从内存获取。获取的同时,也把它拷进Cache。
cache一致性问题
由于缓存存在于cpu与内存中间,所以任何外设对内存的修改并不能保证cache中也得到同样的更新,同样处理器对缓存中内容的修改也不能保证内存中的数据 得到更新。这种缓存中数据与内存中数据的不同步和不一致现象将可能导致使用DMA 传输数据时 或 处理器运行自修改代码时产生错误。
Cache的一致性就是直Cache中的数据,与对应的内存中的数据是一致的。

Cache的基本结构
Cache通常由相联存储器实现。相联存储器的每一个存储块都具有额外的存储信息,称为标签(Tag)。当访问相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。Cache的3种基本结构如下:
全相联Cache
在全相联Cache中,存储的块与块之间。以及存储顺序或保存的存储器地址之间没有直接的关系。程序可以访问很多的子程序、堆栈和段,而它们是位于主存储器的不同部位上。 因此。Cache保存着很多互不相关的数据块。
Cache必须对每个块和块自身的地址加以存储。当请求数据时,Cache控制器要把请求地址同所有地址加以比较进行确认。
这种Cache结构的主要优点是。
它能够在给定的时间内去存储主存器中的不同的块,命中率高;缺点是每一次请求数据同Cache中的地址进行比较需要相当的时间,速度较慢。
直接映像Cache
直接映像Cache不同于全相联Cache。地址仅需比较一次。
在直接映像Cache中。由于每个主存储器的块在Cache中仅存在一个位置,因而把地址的比较次数减少为一次。其做法是,为Cache中的每个块位置分配一个索引字段,用Tag字段区分存放在Cache位置上的不同的块。单路直接映像把主存储器分成若干页。主存储器的每一页与Cache存储器的大小相同。匹配的主存储器的偏移量可以直接映像为Cache偏移量。Cache的Tag存储器(偏移量)保存着主存储器的页地址(页号)。
以上可以看出。直接映像Cache优于全相联Cache,能进行快速查找,其缺点是当主存储器的组之间做频繁调用时,Cache控制器必须做多次转换。
组相联Cache
组相联Cache是介于全相联Cache和直接映像Cache之间的一种结构。这种类型的Cache使用了几组直接映像的块。对于某一个给定的索引号,可以允许有几个块位置。因而可以增加命中率和系统效率。

Cache与DRAM存取的一致性
在CPU与主存之间增加了Cache之后,便存在数据在CPU和Cache及主存之间如何存取的问题。读写各有2种方式。
贯穿读出式(Look Through)
该方式将Cache隔在CPU与主存之间,CPU对主存的所有数据请求都首先送到Cache,由Cache自行在自身查找。如果命中。 则切断CPU对主存的请求,并将数据送出;不命中。则将数据请求传给主存。
该方法的优点是降低了CPU对主存的请求次数,缺点是延迟了CPU对主存的访问时间。
旁路读出式(Look Aside)
在这种方式中,CPU发出数据请求时,并不是单通道地穿过Cache。而是向Cache和主存同时发出请求。由于Cache速度更快,如果命中,则Cache在将数据回送给CPU的同时,还来得及中断CPU对主存的请求;不命中。则Cache不做任何动作。由CPU直接访问主存。它的优点是没有时间延迟,缺点是每次CPU对主存的访问都存在,这样。就占用了一部分总线时间。
写穿式(Write Through)
任一从CPU发出的写信号送到Cache的同时,也写入主存,以保证主存的数据能同步地更新。它的优点是操作简单,但由于主存的慢速,降低了系统的写速度并占用了总线的时间。
回写式(Copy Back)
为了克服贯穿式中每次数据写入时都要访问主存。从而导致系统写速度降低并占用总线时间的弊病,尽量减少对主存的访问次数,又有了回写式。
它是这样工作的:数据一般只写到Cache,这样有可能出现Cache中的数据得到更新而主存中的数据不变(数据陈旧)的情况。但此时可在Cache 中设一标志地址及数据陈旧的信息。只有当Cache中的数据被再次更改时。才将原更新的数据写入主存相应的单元中,然后再接受再次更新的数据。这样保证了Cache和主存中的数据不致产生冲突。

Cache与DMA的一致性问题
在进行DMA 操作时,如果没有对Cache 进行适当的操作,将可能产生以下两种错误:
1.DMA 从外设读取数据到供处理器使用。DMA 将外部数据直接传到内存中,但cache 中仍然保留的是旧数据,这样处理器在访问数据时直接访问缓存将得到错误的数据。
2.DMA 向外设写入由处理器提供的数据。处理器在处理数据时数据会先存放到cache 中,此时cache 中的数据有可能还没来得及写回到内存中的数据。如果这时DMA 直接从内存中取出数据传送到外设,外设将可能得到错误的数据。
为了正确进行DMA 传输,必须进行必要的cache 操作。 cache 操作主要分为 invalidate (作废) 和writeback (写回) ,有时也将两着放在一起使用。

DMA如果使用cache,那么一定要考虑cache的一致性。解决DMA导致的一致性的方法最简单的就是禁止DMA目标地址范围内的cache功能。但是这样就会牺牲性能。
因此在DMA是否使用cache的问题上,可以根据DMA缓冲区期望保留的的时间长短来决策。DAM的映射就分为:一致性DMA映射和流式DMA映射。
一致性DMA映射申请的缓存区能够使用cache,并且保持cache一致性。一致性映射具有很长的生命周期,在这段时间内占用的映射寄存器,即使不使用也不会释放。生命周期为该驱动的生命周期。
流式DMA映射实现比较复杂。只知道种方式的生命周期比较短,而且禁用cache。一些硬件对流式映射有优化。建立流式DMA映射,需要告诉内核数据的流动方向。
1. DMA 从外设读取数据到供处理器使用时,可先进性invalidate 操作。这样将迫使处理器在读取cache中的数据时,先从内存中读取数据到缓存,保证缓存和内存中数据的一致性。
2.DMA 向外设写入由处理器提供的数据时,可先进性writeback 操作。这样可以DMA传输数据之前先将缓存中的数据写回到内存中。
如果不清楚DMA 操作的方向,也可先同时进行invalidate 和writeback 操作。操作的结果等同于invalidate 和 writeback 操作效果的和。

wince 操作系统也有一套cache 操作接口:
void OEMCacheRangeFlush( LPVOIDpAddr, DWORD dwLength, DWORD dwFlags );

❷ 计算机内,配置高速缓冲存储器(CACHE)是为了解决什么

B,CPU与内存储器之间速度不匹配问题。

高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。

高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。在计算机存储系统的层次结构中,是介于中央处理器和主存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。

(2)高速缓存一致性问题扩展阅读:

高速缓冲存储器组成结构

高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。

主要由三大部分组成:

1、Cache存储体:存放由主存调入的指令与数据块。

2、地址转换部件:建立目录表以实现主存地址到缓存地址的转换。

3、替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。

❸ 计算机中为什么要采用高速缓存器(CACHE)

是为了解决低速的外设和高速的CPU之间速度不匹配的问题。

主要由三大部分组成:

1、Cache存储体:存放由主存调入的指令与数据块。

2、地址转换部件:建立目录表以实现主存地址到缓存地址的转换。

3、替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。

在有高速缓冲存储器的计算机系统中,中央处理器存取主存储器的地址划分为行号、列号和组内地址三个字段。

于是,主存储器就在逻辑上划分为若干行;每行划分为若干的存储单元组;每组包含几个或几十个字。高速存储器也相应地划分为行和列的存储单元组。二者的列数相同,组的大小也相同,但高速存储器的行数却比主存储器的行数少得多。

(3)高速缓存一致性问题扩展阅读

当中央处理器存取主存储器时,高速缓存器首先自动对存取地址的列号字段进行译码,以便将联想存储器该列的全部行号与存取主存储器地址的行号字段进行比较:若有相同的,表明要存取的主存储器单元已在高速存储器中,称为命中,硬件就将存取主存储器的地址映射为高速存储器的地址并执行存取操作。

若都不相同,表明该单元不在高速存储器中,称为脱靶,硬件将执行存取主存储器操作并自动将该单元所在的那一主存储器单元组调入高速存储器相同列中空着的存储单元组中,同时将该组在主存储器中的行号存入联想存储器对应位置的单元内。

当出现脱靶而高速存储器对应列中没有空的位置时,便淘汰该列中的某一组以腾出位置存放新调入的组,这称为替换。确定替换的规则叫替换算法,常用的替换算法有:最近最少使用算法(LRU)、先进先出法(FIFO)和随机法(RAND)等。

替换逻辑电路就是执行这个功能的。另外,当执行写主存储器操作时,为保持主存储器和高速存储器内容的一致性,对命中和脱靶须分别处理。

❹ 如何保证缓存与数据库双写时的数据一致性

一般来说,就是如果系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案,读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况
串行化之后,就会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求。

❺ 常见的缓存策略有哪些,如何做到缓存与 db 里的数据一致性

您: 种writer-reader架构般思路缓存更新阶段由writer解决致性问题数据库数据变化同步更新redis并确保缓存更新功 作完整性判断检查全部属性数据使用自增版本号(或间戳)判断否新 作置检测优化降低扫描代价针近间周期内(依0min)数据库更新数据集合应该比较redis进行检查代价比较

❻ 客户端告诉缓存使用主存储器或磁盘各有什么 优缺点

问题太简略了,首先我不明白你所说的这个客户端是指什么~?
但是大概来说,
作为程序来看,
客户端的高速缓存,用主存储器的速度高于使用任何介质的磁盘存储,原因后面我会复制一个主存的定义^_^
缺点则是,主存在断电后,内容会消失,而介质磁盘则不会消失。(- -或许目前大部分介质磁盘都不会消失,谁知道将来会不会有传说中的生物磁盘- -)
简单来说,论速度,主存快于磁盘,
论存放时间长短,磁盘长于主存。
- -
后面是主存定义。。。。

主存储器Mainmemory简称主存。是计算机硬件的一个重要部件,其作用是存放指令和数据,并能由中央处理器(CPU)直接随机存取。

❼ CPU何时可以忽略LOCK前缀并使用高速缓存一致性

寄存器严格属于CPU的一部分 缓存只是集成到cpu封装
寄存器最快 其次缓存 最后内存

❽ 高速缓存Cache问题

本题高速缓冲存储器地址映像与变换的内容

高速缓冲存储器(Cache)简称高速缓存,它的功能是提高CPU数据输入输出的速率,突破所谓的“冯·诺依曼瓶颈”。使用高速缓存改善系统性能的依据是程序的局部性原理。如果CPU需要访问的内容大多能在高速缓存中找到(称为访问命中,hit)则可大大提高系统的性能

1、高速缓存Cache的存储系统的平均存储时间可以表示为:t3=h*t1+(1-h)*t2.其中,Cachce的存取时间t1、主存的存取时间t2及平均存取时间为t3已知后,可以求出Cache的命中率h为99%

2、高速缓存与主存之间有多种地址映射方式。常见的有直接映射方式、全相联映射方式和组相联映射方式。

全相联映射方式的基本单元分为两部分:地址部分和数据部分、数据部分用于存放数据,而地址部分用于存放该数据的存储器地址。

当进行映射时,相联存储器把CPU发出的存储器地址与高速缓存内所有的地址信息同时进行比较,已确定是否命中。

全相联映射方式的主存地址构成为:块内地址+区号+块号。高速缓存Cache的地址构成为:块号+块内地址。

将主存地址8888888H从十六进制转换为二进制为:1000100010001000100010001000B

即块内地址为10001000100010001000B,相联存储器中区号为100010B,区块号为00B,所以相联存储器中存储的是10001000B=88H。由相联存储器的地址变换表查出88H块号为01B。最后根据Cache的地址构成,把Cache块号与块内地址连接起来后得到高速缓存Cache的地址为0110001000100010001000B,转换为十六进制后即188888H