今天来做个文件的总结吧!
这篇文件 Cache and TLB Flushing Under Linux
描述的是各式的 flushing API、以及各个 API 所使用的时机和情境,并提供各个架构实作这些 API 的语意;举例来说:
flush_tlb_all
: 在 riscv 底下的实作是 sfence.vma
一个由 ISA 定义的 s mode 指令,用来提供类似 memory barrier 的语意,并且在 ISA 规格中也提到 The SFENCE.VMA is used to flush any local hardware caches related to address translation
(privileged spec draft 1.12)。flush_cache_mm
:在 riscv 中,cache 相关的操作是由 platform 自行定义的,所以这部分也会交由 platform 自己订、自己实作,像是 csky
就把它实作为自己平台上的 dcache
相关操作。这篇文件分为 4 个部分,分别描述了 TLB
、cache
、cache aliasing 处理
、IO 处理
相关的 flushing API,藉由这样的分类分项,这几天也重新复习了 TLB、cache 相关的计算机结构基础知识,虽然说还没能将整篇文件的内容理解透彻,但是藉由这样的复习,倒也回答了一些自己的疑惑。(( 还有很多悬而未决的疑问就是了XD
TLB
: MMU(Memory Management Unit) 中的一个硬体元件,用来 cache 分页表中的资讯,以达到快速的 VA->PA 转换。
cache
: 快取是用来 cache 主记忆体上的资料,主要也是用来提升资料存取的效能。
[ tag | index | block or line offset | byte offset ]
以上是目前复习并且有整理到的内容,尚未厘清的部分,主要是文件中描述的情境,以及一些记忆体管理子系统(mm subsystem) 所用到的资料结构和 API,例如:
struct mm_struct
、struct vm_area_struct
vmalloc
、vmap
kernel offset mapping
、COW page
Cache and TLB Flushing Under Linux
文件的阅读,就先到这里告一个段落!
感谢订阅我文章的5位邦友,希望能对你们有一点点小帮助,忏悔一下後来 Vue 先前累积的文章写完之後,...
为什麽想写这个? 一样是在某次开会听到这个名词,脑中开始想说这跟api有什麽不一样,为什麽要特别加...
接下来要讨论的问题是, 什麽时候开始写测试, 很多人会觉得应该在整个软件开发完之後开始写测试, 但是...
前言 今天开始终於要来讲self-attention了,由於我对於self-attention比较不...
使用 Valet 或是其他本机环境软件把 WordPress 安装好之後,切换到网站根目录,可以看到...