存储系统(2)-------cache

1.目的

  解决CPU与主存速度不匹配 的问题。

2.工作原理

  CPU发出访存地址。地址格式为 主存地址格式。

  访存地址被cache与主存同时接受。cache接受前经过地址映射与转换机构,用于判断是否命中。

    若命中,直接从cache取出数据;

    若未命中,从主存提取数据,并将数据装入cache。(若cache空间不足,设计替换策略)

  CPU与cache和主存间交换数据以 字/字节 为单位

  cache与主存之间交换数据以 块为单位

3.地址映射:

  全相联映射, 直接映射, 组相联映射

  1).全相联映射

    ? 主存与cache 块间随机映射

    ? 最灵活,cache利用率最高,成本最高

    ? 主存地址 = 块地址(高m位) + 块内地址(低n位)

     cache地址 = 块地址(高c位) + 块内地址(低n位)

    ?目录表 记录映射关系:

        主存块号  -  cache 块号  - 有效位

  2).直接映射

    ? 主存块映射到cache固定块,主存按照cache大小分区,区内块数相同。映射关系: j = i % 2^c

    ? 简单,快。不灵活

    ? 主存地址 = 区号(高t位) + 区内块号(中c位) + 块内地址(低n位)

     cache地址 = 块地址(高c位) + 块内地址(低n位)

    ?区表 记录映射关系:

        区号  - 有效位

    ?备注

      ?主存第 i 块 调入cache 第 i 块

      ?主存与cache块号相同,使得在登记区表时,只需记录块所在区号

      ?访存地址 块号 字段存储块号 i ,在区表的第 i 个存储字(表示cache第 i 块)中取出区号,与访存地址区号字段比较。

      ?cache 共 2^c 块,区表共 2^c 个存储字

  3).组相联映射

    ? 主存按cache大小分区,与cache按相同大小区内分组,组内块数相同。组间直接映射,组内全相联映射。

    ? 主存地址 = 区号(s位) + 组号(U位) + 组内块号(v‘位) + 块内地址(低n位)

     cache地址 = 组号(U位) + 组内块号(v位) + 块内地址(低n位)

    ?块表 记录映射关系:

        区号  - 组号  -  组内块号  -  有效位

    ?备注

      ?区号组号共同作为判断命中标志

4.替换算法

  1).cache无空间时,替换出旧块,装入新块。

  2).

    ?随机算法(RAND法):

      不考虑块使用情况,随机替换

      易实现,速度快。降低命中率和cache工作效率。

    ?先进先出法(FIFO):

      不考虑块使用情况,先进者先被替换。

      装入块计数为0,其他块计数加一,替换计数最大者

    ?最近最少未使用(LRU):

    ?最不经常使用(LFU):

      替换后,所有计数器清零

      替换计数最小者

5.写回策略

  1).保证一致性:

    CPU写cache,未及时写主存;

    I/O写主存,为及时写cache。

  2).写策略:

    ?写直达(Write through)

      写cache同时写主存;

      频繁访存,降低平均访存时间

      使用  不按写分配法(cache不命中,只写主存)

    ?写回法(Write Back)

      简单写回(不管是否更新,一律写回) 、 标志位写回(只写回更新过的块)

      使用  按写分配法(cache不命中,写主存后,装入cache)

时间: 2024-10-08 20:19:43

存储系统(2)-------cache的相关文章

redis小记

Redis是一个key-value存储系统.和 Memcached类似,但是解决了断电后数据完全丢失的情况(因为它还可以支持持久化),Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store).它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(hashes), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型.这些数据类型都支持push/pop.add/remove及取交集并

初试redis

redis简介: Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store).它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(hashes), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型. 刚刚学习... 缓存类型: 数据缓存.页面缓存(smarty) 为什么使用缓存:减轻数据库负载 频繁访问的短期不变的数据缓存起来,减提高访问速度,提高访问速度 安装... 折腾了一

分布式系统

Distributed systems: for fun and profit (http://book.mixu.net/distsys/index.html) 链接:https://www.zhihu.com/question/23645117/answer/124708083 这篇文章主要试图回答以下两个个问题:1. 近些年分布式系统领域都在做些什么.2. 为什么现在投入分布式系统的学习和研究是值得的.我会尽可能多的去介绍更 "实用" 的分布式系统知识. 什么是实用?例如:Pax

Redis安装及主从复制实战

Redis 是一款开源的,使用C语言编写的.支持网络交互的.可基于内存也可持久化的高性能Key-Value存储系统(cache and store).它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(hashes), 列表(list), 集合(sets) 和 有序集合(sorted        sets)等类型. Redis作者谈Redis应用场景:http://blog.nosqlfan.com/html/2235.html 1.redis安装部署:wg

中国计算机软件设计师考试大纲 2008-10-12 21:51 鹤影314 | 五级

中国计算机软件设计师考试大纲 一.考试说明 1.考试要求: (1) 掌握数据表示.算术和逻辑运算: (2) 掌握相关的应用数学.离散数学的基础知识: (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理: (4) 掌握操作系统.程序设计语言的基础知识,了解编译程序的基本知识: (5) 熟练掌握常用数据结构和常用算法: (6) 熟悉数据库.网络和多媒体的基础知识: (7) 掌握C程序设计语言,以及C++.Java.Visual.Basic.Visual C++中的一种程序设计语言: (8)

redis 学习记录

http://www.yiibai.com/redis/redis_quick_guide.html Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store).它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(hashes), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型. Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完

初识Redis(1)

Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store). 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list),集合(sets) 和 有序集合(sorted sets)等类型. 官网:http://redis.io/ 中文网:http://www.redis.cn/ 学习是一个由浅入深的过程,我打算先对Redis的基本使用有个交代. 一.Redis服务端安装 Redis是一个不错

Windows下使用Redis(一)安装使用

一.Redis 是什么 Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store).它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) , 有序集合(sorted sets)和位图(bitmaps)等类型.官方网站是 http://redis.io/ Redis 和其它 NO SQL 的比较本文不做过多阐述.我觉得 Redis 最好的地方就是提供数据持久化功能(

go中redis使用小结

最近做了个关于redis的项目,那么就整理下遇到和未遇到的问题 1.redis的简介安装 2.redis的数据结构 3.Redis基本使用 4.Redis的并发 5.Redis的落地 一.redis的简介安装 一.Redis 是什么 Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store).它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) , 有序集合(so