标签:lan src evel only 利用 bool google 缓存 row
这次就边学边总结吧,不等到最后啦
Textbook:
《计算机组成与设计——硬件/软件接口》 HI
《计算机体系结构——量化研究方法》 QR
Ch3. Memory Hierarchy
SRAM:CPU缓存(比如PentiumII的外置二级缓存芯片)
DRAM:内存芯片,需要Dynamic刷新。
以淘宝某廉价内存条南亚易胜 Elixir DDR3 1600 4G 2R*8 PC3-12800S 1.5V 笔记本内存 双面16颗粒为例:
这个内存一共双面16芯片,芯片型号为N2CB2G80BN,查datasheet可知每个芯片有8 Internal memory banks,位宽也是8bit。这样每一面的8个芯片就构成一个Rank,整个内存条一共两个Rank。
那么CPU是如何读取内存的呢?• CPU一次需要访问64bit的数据。那么对于上面这根内存,一个Rank可以提供8bit per chip * 8 chips per Rank = 64bit的带宽,就正好对接上啦。每个chip的同一bank(bank=k )的同一地点(row=i, col=j)都会被读出8bit,那么8个chip就会同时读出64bit,然后由memory controllers传送给cpu。如图:
为了保证和CPU的沟通(要满64bit),一个内存至少要有一个RANK。但是为了保证大容量,DDR3内存经常是采用一个内存两个RANK的架构,一般也就是双面16颗粒。(过去也有用几个模组组成一个RANK的情况。比如EDO内存的带宽只有32bit,但586及以上cpu的数据总线都是64bit,所以就需要成对使用)
Ref:
https://zhuanlan.zhihu.com/p/33479194
https://blog.51cto.com/10914132/1733629
https://zhuanlan.zhihu.com/p/25863918
http://lzz5235.github.io/2015/04/21/memory.html
Programs tend to reuse data and instructions near those they have used recently, or that were recently referenced themselves.
利用局部性原理,可以将存储器组织成存储器层次结构。相邻两层之间数据交换的单位叫做块(block)
以块为单位从level k+1 cache到 level k
1,2: Where can a block be placed in the upper level? • How is a block found if it is in the upper level?
地址映像方式:内存中block地址与cache中block地址的对应方式(内存和cache中一个块的大小都相等)。缓存中这个block又叫做cacheline。
cache分成多个组,每个组分成多个行,linesize是cache的基本单位,从主存向cache迁移数据按照linesize为单位替换。
Ref:
https://blog.csdn.net/onlyoncelove/article/details/80426874
https://zhuanlan.zhihu.com/p/60843893
https://zhuanlan.zhihu.com/p/37749443
3: Which block should be replaced on a miss?
3种cache miss:
Least recently used — LRU
Not most recently used — NMRU
4: What happens on a write
计算
Virtual Memory P41
标签:lan src evel only 利用 bool google 缓存 row
原文地址:https://www.cnblogs.com/pdev/p/11617051.html