cache 和 write buffer 和 tlb

概念

哪个先出现,这个问题比较难回答,因为它们的历史可以追溯到计算机的早期。
	早期的计算机并没有像现代计算机那样拥有Cache和Write Buffer,之后随着计算机的发展,这些技术开始逐渐普及和应用。
	可以说,Cache和Write Buffer的发展是同时的,它们是为了解决不同的性能瓶颈而被开发出来的。

Write buffer
	是一种 store 指令 不会被写入主存储器 但被写入到缓存区域 的技术
		缓解了CPU和内存之间的延迟,
		加速了数据写入的速度。
	也称为 store buffer
	是CPU内部的一种结构,通常比L1 Cache更小。 

Cache
	是存储器的一种形式,用于临时存储CPU运行时经常使用的数据和指令。
	Cache分为内部缓存和外部缓存。
	内部缓存包括L1 Cache和L2 Cache,是安装在CPU内部的,用于临时存储CPU运行时需要的指令和数据。
	外部缓存是指安装在CPU芯片之外的存储器,比如L3 Cache和主存储器,用来提高系统整体的读写性能。

比较

cache和write buffer是两种不同的设计。
	cache是用来存储被频繁访问的数据,以提高访存速度
	write buffer则是用来临时存储写操作的数据,避免写操作阻塞CPU。


cache 也可以存储写操作的数据,为什么不能替代 write buffer 呢

	虽然cache也可以存储写操作的数据,
		但是它并不是为了解决写操作的性能瓶颈而设计的,
		所以在处理写操作时并不如write buffer有效。
		write buffer还可以对写操作进行优化,如将多个小的写操作合并成一个大的写操作,从而减少写操作对CPU的影响。
		因此,在需要处理大量写操作的场景下,write buffer依然是必要的。

cachewritebuffertlbARM32-TCM
数目更少
位置内部L1/2 外部L3内部(cache和cpu间)MMUSOC
会不会存储读操作的数据不会不会,只会存储tablewalk过程的页表项X64 CAT
会不会存储写操作的数据不会ARM64 System Cache
存储写操作的数据时的性能RISCV Scratchpad Memory
存储写操作的数据时的优化没有合并写操作
设计目标存储被频繁访问的数据,以提高访存速度解决写操作对于 CPU 的性能瓶颈问题减少table walk中的访存,以提高访存速度存储执行的二进制指令和数据,以提高指令指令时的取指速度
刷的时候,数据会进到哪里内存cache数据被直接清除,不备份不会刷,初始化就固定好了.一般不会动态编程

问题


cache 和 write buffer 都会存储写操作的数据,假设往一个地址A写了值B . 刷cache 的时候会不会造成一次内存写入? 刷 write buffer 的时候会不会造成一次内存写入?

写操作会首先被写入 write buffer,然后被异步地写入 cache。然后该操作就完成了,不会立即写入内存

当 write buffer 被刷写时,其中包含的写操作会被异步地写入 cache,
	这个过程也不会立即导致一次写入,只是会将 write buffer 中的数据刷入 cache,重复的会被删掉
	然后再根据具体的硬件实现,将 cache 中的数据写入主存。
所以,在 cache 和 write buffer 都enable的情况下,  最终会造成一次内存写入

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值