首页 > 其他分享 >RISCV-MINI cache小记

RISCV-MINI cache小记

时间:2023-08-29 14:24:59浏览次数:72  
标签:MINI RISCV nasti cache dirty refill WriteCache 转移

该cache映射策略为直接映射,采用写回(writeback)方式。

需要注意的细节在于cpu-cache通过mask信号判断访存是读还是写,显然mask全0时为读。下图FSM中省略了dirty会影响状态转移,比如WriteCache到WriteBack,当cache块为dirty时才会触发aw.fire(io.nasti.aw.valid := is_dirty)。

image-20230829140857398

简单解释:

  • Idle

    若收到访存请求,通过判断mask是否全0分别转移到读/写(ReadCache/WriteCache)

  • ReadCache

    若cache命中,检测是否有新的访存请求,如果没有请求则转移到Idle,否则继续ReadCache

    若cache缺失,下一步需要从内存中读取到cache中,这个过程称为refill。refill前检测cache块是否dirty,如果dirty则转移到WriteBack,否则转移到Refill

  • WriteCache

    若cache命中或写分配(等效于命中)或中止写入,则转移到Idle

    否则,检测cache块是否dirty,如果dirty则转移到WriteBack,否则转移到Refill

  • WriteBack

    往nasti master写入脏cache块,转移到WriteAck

  • WriteAck

    等待写响应,然后转移到RefillReady(因为nasti write是refill触发的,因此nasti write的下一步就是refill)

  • RefillReady

    等待读地址有效,然后转移到Refill

  • Refill

    从nasti master往cache加载内存数据,然后判断cpu_mask是否全0分别转移到Idle/WriteCache

当read miss并且refill后,该read的数据是从refill的数据旁路得到的。

标签:MINI,RISCV,nasti,cache,dirty,refill,WriteCache,转移
From: https://www.cnblogs.com/nosae/p/17664608.html

相关文章

  • Linux 中的内存(cache,buffer,)
    在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。内存查看当我们使用free-h命令时,会显示如下的信息t......
  • CVE-2023-28432 MinIO 信息泄露漏洞
    MinIO简介MinIO是美国MinIO公司的一款开源的对象存储服务器,是一款高性能、分布式的对象存储系统.它是一款软件产品,可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。MinIO中存在一处信息泄露漏洞,由于Minio集群进行信息交换的9000端口,在未经配置的情况下通过......
  • Memcached-Java-Client
    官方:http://memcached.org/ Java版:这个分支由SchoonerInformationTechnology贡献,并由Schooner中国团队完成开发,开发者是:王新根李蒙,ITeye博客地址是:http://menglee.iteye.com。 可以从这里下载二进制包:https://github.com/gwhalin/Memcached-Java-Client/downloads源代码在gi......
  • minikube搭建
    https://www.orchome.com/10485 B站:https://www.bilibili.com/video/BV1cq4y1R7h8/?spm_id_from=333.337.search-card.all.click&vd_source=f7b26a8cc6688554375ba600134e6a56......
  • 【Ehcache技术专题】「入门到精通」带你一起从零基础进行分析和开发Ehcache框架的实战
    缓存大小的设置缓存大小的限制可以设置在CacheManager上,也可以设置在单个的Cache上。我们可以设置缓存使用内存的大小,也可以设置缓存使用磁盘的大小,但是使用堆内存的大小是必须设置的,其它可设可不设,默认不设就是无限制。在设置缓存大小的时候,我们可以设置缓存使用某一个存储器的最......
  • Reminisce.ai - 更快理解新技术的人工智能学习应用
    什么是Reminisce.aiReminisce.ai是一个人工智能驱动的学习应用。它旨在帮助用户以最快的速度理解各种新技术的高层架构,比如React、Django、AWS等。Reminisce.ai非常适合需要经常学习使用新技术的人群,比如程序员、IT从业人员、学生等。它可以大大缩减用户理解新技术所需的时间,......
  • 【Ehcache技术专题】「入门到精通」带你一起从零基础进行分析和开发Ehcache框架的实战
    Ehcache的存储方式Ehcache中对于缓存的存储主要有三种方式:分别是堆内存、非堆内存和磁盘。其中非堆内存是针对于企业版Ehcache才有的功能,它可以不受JavaGC的影响,能够创建很大的缓存。堆内存(MemoryStore)我们通常所有的MemoryStore实际上就是堆内存存储。MemoryStore总是可用的,所有......
  • minio 使用(Win)
    下载:https://www.minio.org.cn/download.shtml基本使用设置密码(设置环境变量):setxMINIO_ROOT_USERadminsetxMINIO_ROOT_PASSWORDpassword启动(先切换到minio.exe所在路径):minio.exeserverD:\Data--console-address:9001--address:13328server后的路径为minio......
  • 上市公司绿色创新效率数据计算(text mining方法的使用)
    需求:工作中需要计算上市公司绿色创新效率数据,需要首先利用text_preprocessing对文本提取值进行预处理,然后通过Textmining方法进行转换后计算处理,最后利用效率法来进行综合计算和归类存储,用于后续的深度数据挖掘。解决:importnltkfromnltk.corpusimportstopwordsfromnltk.tok......
  • spring cache 学习——@CachePut 使用详解
    springcache学习——@CachePut使用详解 1.功能说明当需要在不影响方法执行的情况下更新缓存时,可以使用@CachePut,也就是说,被@CachePut注解的缓存方法总是会执行,而且会尝试将结果放入缓存(当然,是否真的会缓存还跟一些注解参数有关,比如:unless参数)。@CachePut跟@Ca......