预取和缓存替换介绍--自用

本文探讨了行为-based和学习-based预取器在IT领域的应用,涉及缓存替换策略、马尔可夫链预测、以及文件系统与存储系统间的语义差距。文章还介绍了SSD模拟器在预取器设计中的作用,并展示了简单的SSD模拟器实现示例。
摘要由CSDN通过智能技术生成

【预取简介】[Prefetching Introduction] - 知乎

在研读预取方向的论文,发现这篇总结不错,记录下来,留用!

经典论文解读——Cache 替换算法 - 知乎

缓存替换的解释,记录下来,自用

这篇文章总结的更好:

鹅厂微创新Golang缓存组件TCache介绍 - Powered by MinDoc

退火算法的理解:模拟退火算法学习笔记 - 知乎

马尔科夫链 | Echo Blog

Cache的基础知识 - 知乎

behavior-based prefetcher 是一种预取器的算法,它并不是单一的预取器,而是一类预取器的代称。在这个类别中,有几种常见的 Behavior-based prefetcher,其中包括:

  1. Stride prefetcher:Stride prefetcher 基于步幅(stride)的概念来预测数据访问模式。它记录程序连续访问内存地址之间的步幅,然后通过预测下一个访问地址的步幅来进行预取。

  2. Markov prefetcher:Markov prefetcher 基于马尔可夫链(Markov chain)模型来预测数据访问模式。它通过分析程序访问历史的状态序列来建模,然后预测下一个访问状态以及对应的数据。

  3. Stream buffer prefetcher:Stream buffer prefetcher 运用了数据流的概念来进行预测。它通过跟踪程序中的数据流,预测下一个可能被访问的数据,并提前加载到缓存中.

behavior-based prefetcher, learn-based prefetcher

learning-based prefetchers 设计的两个主要挑战:
1)上下文语义信息丢了。
First, the semantic gap between the
systems and the storage devices hinders various access behav
iors from being sent inside the devices, and thus the most
commonly used training data are the logical block address
(LBA) sequences.
2)LBA的稀疏矩阵问题。
因此,用于学习存储访问模式的特征提取的复杂性比从主存或CPU缓存中检索到的访问模式的复杂性更具挑战性。
因此,用于学习存储访问模式的特征提取的复杂性比从主存或CPU缓存中检索到的访问模式的复杂性更具挑战性。
为什么文件系统和存储系统存在着语义差距?

文件系统和存储系统之间存在语义差距是因为它们在数据存储和检索的抽象级别上有所不同。

文件系统是操作系统提供的一种抽象层,用于管理计算机上的文件和目录。它提供了文件的创建、删除、重命名等基本操作,并通过文件路径来组织和访问文件。文件系统以文件和目录的层次结构来组织数据,通过文件名来标识和引用数据。

而存储系统是用于存储和访问数据的底层系统,通常由硬盘、固态硬盘(SSD)、云存储等组成。存储系统负责将数据保存在物理存储介质上,并提供读写操作来访问这些数据。存储系统关注的是数据块的存储和读写,不关心数据的语义和结构。

因此,文件系统和存储系统的语义差距体现在以下几个方面:

  1. 数据组织方式:文件系统以文件和目录的层次结构组织数据,而存储系统以块的形式存储数据,没有类似的层次结构。

  2. 访问粒度:文件系统以文件为单位进行访问,而存储系统以数据块为单位进行访问。文件系统可以一次读取或写入整个文件,而存储系统只能以块为单位进行数据读写。

  3. 数据一致性:文件系统通过文件的元数据(如时间戳、权限等)来维护文件的一致性,而存储系统只负责数据的存储和读写,并不负责数据的元数据管理。

由于文件系统和存储系统的这些差异,开发者在设计和实现存储应用程序时需要考虑并适应两者之间的语义差距,确保数据的正确性和一致性。例如,文件系统缓存和存储系统缓存的一致性、文件系统的事务性操作等都需要特别注意。

一些著名的作品被分为两类: 1)基于行为的作品和2)基于学习的预取器。具体来说,基于行为的预取器旨在通过考虑数据访问行为(如LBA上的空间局部性)来决定待预取的数据,而基于学习的预取器采用机器学习算法来预测和预取数据。

ssd模拟器文档:Flash Translation Layer — SimpleSSD 2.0.12 documentation

ssdsim:https://github.com/huaicheng/ssdsim

https://github.com/jiangyu718/ssdsim

这个貌似还多点

GitHub - 1020xyr/ssdsim: 修复一些bug的ssdsim模拟器 这个小哥修改了一些

ssd终于跑起来了,相当于实现了一个ssd版本的helloworld!

```CMakeLists.txt

cmake_minimum_required(VERSION 3.0) project(SSD) set(CMAKE_C_STANDARD 11) set(SOURCE_FILES ssd.c avlTree.c flash.c initialize.c pagemap.c) add_executable(ssd ${SOURCE_FILES})

```

然后可以直接跑了

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值