自学内容网 自学内容网

cache写策略 操作系统

cache写策略 操作系统

在计算机系统中,为了提高数据的响应速度在CPU内置了cache,用来提高CPU和主存的交互。以下主要是对cache的理解。

1、cache写策略

cache是主存里数据的副本。cache的写策略,又分为两种:

  • 写直达
  • 写回

1.写直达

在这里插入图片描述

  • 如果数据已经在Cache里,就更新到Cache Block,再写到内存里;
  • 否则的话就把直接更新到内存中,读的时候直接读取内存;

写直达简单、直观,但是性能不高。

2.写回

在这里插入图片描述

  • 写命中:CPU直接将数据写入到Cache Block中,将该Cache Block的脏位设置为1,表示该数据已经被修改,但主存中的对应数据尚未更新,可以减少不必要的写操作。
  • 写未命中
    • Cache Block为脏:在新数据写入缓存前,先将脏的Cache Block中的旧数据写回主存,以确保主存中保存最新的数据。然后将要写入的数据从主存中读取到Cache Block,并将新数据写入该块,将脏位设置为1,标记数据已被修改。
    • Cache Block不为脏:直接将需要的数据从主存载入到Cache Block,并写入新的数据。同样,将脏位设置为1,表示数据已修改,但主存中尚未更新。

在写回机制中,新的数据仅仅被写入到Cache Block里,只有当修改过的Cache Block被替换时才需要写到内存中。

Cache机制就是为了让CPU在处理数据时不总是访问主存,尽可能从更靠近CPU的存储位置获取数据。

2、缓存一致性

问题:在一个多核的CPU中,比如四核的CPU,我在1号核心执行i++,但是2号核心使用i的时候是0,这表示了在一号核心计算后的结果并未同步到其他核心,那么就会导致执行结果错误。

  • CPU核心的Cache数据同步问题
  • CPU核心的数据操作顺序问题

对于第一个问题,解决方法就是写传播的方式,当某个CPU核心更新了Cache里的数据,就把该事件广播到其他核心。

那么这个方法就是总线嗅探。

1.总线嗅探

每个CPU都会监听总线上的广播事件,及时更新自己Cache的数据,但是不能保证操作数据的顺序。所以又有基于总线嗅探的协议MESI协议。

2.MESI协议

  • Modified:已修改
    • 该缓存行中的数据已被修改,与主存中的数据不一致,且该数据只存在于当前缓存中。如果其他核心需要该数据,需要先将其写回主存。
  • Exclusive:独占
    • 该缓存行中的数据与主存一致,且只存在于当前缓存中。如果当前核心修改了该数据,则状态将转变为Modified。
  • Shared:共享
    • 该缓存行中的数据与主存一致,且该数据可能存在于多个缓存中。可以被读取,但如果要修改,需要先通知其他核心,使其无效。
  • Invalidated:已失效
    • 该缓存行中的数据无效,不可使用。如果当前核心需要访问此数据,则需要从其他缓存或主存中重新加载。

MESI协议状态转换行为表

当前状态事件行为转换后状态
无效 (I)Local Read如果其他核心没有该数据,则从主存中加载数据,状态变为Exclusive;如果其他核心有该数据,则状态变为Shared。E 或 S
Local Write从主存加载数据到Cache并修改,将状态设置为ModifiedM
Remote Read保持无效,其他核心读取无影响I
Remote Write保持无效,其他核心写入无影响I
独占 (E)Local Read从Cache中读取数据,状态保持不变E
Local Write修改数据,将状态设置为ModifiedM
Remote Read将数据共享给请求的核心,状态变为SharedS
Remote Write使当前Cache行无效,状态变为InvalidI
共享 (S)Local Read从Cache中读取数据,状态保持不变S
Local Write修改数据,将状态设置为ModifiedM
Remote Read共享数据给请求的核心,状态保持不变S
Remote Write其他核心写入数据,当前Cache行失效,状态变为InvalidI
修改 (M)Local Read从Cache中读取数据,状态保持不变M
Local Write修改数据,状态保持不变M
Remote Read将数据写回主存以更新,再共享给请求的核心,状态变为SharedS
Remote Write将数据写回主存以更新,然后将当前Cache行失效,状态变为InvalidI

原文地址:https://blog.csdn.net/m0_73337964/article/details/143708467

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!