4. cache存储器的基本结构 ■设主存有2n个单元,地址码为n位,将主 存分块( block),每块有2b个字节; Cache 也由同样大小的块组成,由于其容量小, 所以块的数目小得多,主存中只有一小 部分块的内容可存放在 Cache中 ■设n=m+b,则可得出:主存的块数M= 2m,块内字节数=2b。 Cache地址码为(c +b)位, Cache的块数为2°,块内字节数 与主存相同,如图429所示
4.cache 存储器的基本结构 设主存有2n个单元,地址码为n位,将主 存分块(block),每块有2b 个字节;Cache 也由同样大小的块组成,由于其容量小, 所以块的数目小得多,主存中只有一小 部分块的内容可存放在Cache中。 设n=m+b,则可得出:主存的块数M= 2m,块内字节数=2b。Cache地址码为(c +b)位,Cache的块数为2c,块内字节数 与主存相同,如图4.29所示
主存的地址 主存块号 块标记 Cache块号块内地址 b位 c位1b位 Cache的地址格式 图4.29 Cache和主存的地址的地址格式
主存的地址 主存块号 块标记 Cache 块号 块内地址 m 位 b 位 c 位 b 位 Cache 的地址格式 图4. 29 Cache和主存的地址的地址格式
当CPU发出读请求时,将主存地址的m-c位与 Cache某块的标记相比较,根据其比较结果是 否相等而区分出两种情况:当比较结果相等时, 说明需要的数已在 Cache中,那么直接访问 Cache就行了,在CPU与 Cache之间,通常一次 传送一个字块;当比较结果不相等时,说明需 要的数据尚未调入 Cache,那么就要把该数据 所在的整个字块从主存一次调进来。前一种情 况称为访问 Cache命中,后一种情况称为访问 Cache不命中 ■5.块长 ■块的大小称为“块长”。块长一般取一个主存周 期所能调出的信息长度
当CPU发出读请求时,将主存地址的 m - c位与 Cache某块的标记相比较,根据其比较结果是 否相等而区分出两种情况:当比较结果相等时, 说明需要的数已在Cache中,那么直接访问 Cache就行了,在CPU 与Cache之间,通常一次 传送一个字块;当比较结果不相等时,说明需 要的数据尚未调入Cache,那么就要把该数据 所在的整个字块从主存一次调进来。前一种情 况称为访问Cache命中,后一种情况称为访问 Cache不命中。 5.块长 块的大小称为 “块长 ”。块长一般取一个主存周 期所能调出的信息长度
6.如何保持 Cache与主存的一致性 ■ Cache存储器中保存的字块是主存中相应字块 的一个副本。如果程序执行过程中要对该字 块的某个单元进行写操作,就会遇到如何保持 Cache与主存的一致性问题。通常有两种写入 方式: ■(1)标志交换(ag-swap)方式或“写回法”。 ■这种方式是暂时只向 Cache存储器写入,并用 标志加以注明,直到经过修改的字块被从 Cache中替换出来时才一次写入主存。这种方 式写操作速度快,但因在此以前,主存中的字 块未经随时修改而可能失效
6.如何保持Cache与主存的一致性 Cache存储器中保存的字块是主存中相应字块 的一个副本。如果程序执行过程中要对 该字 块的某个单元进行写操作,就会遇到如何保持 Cache与主存的一致性问题。通常有两种写入 方式: (1)标志交换(flag-swap)方式或“写回法”。 这种方式是暂时只向Cache存储器写入,并用 标志加以注明,直到经过修改的字块被从 Cache中替换出来时才一次写入主存。这种方 式写操作速度快,但因在此以前,主存中的字 块未经随时修改而可能失效
(2)写直达法 ■这种方式是每次写入 Cache存储器时也同 时写入主存,使 Cache和主存保持一致 这种方式实现简单,且能随时保持主存 数据的正确性。但是,有可能要增加多 次不必要的向主存的写入。假如向 Cache 存储器某一单元写入多少次,也要向主 存相应单元写入多少次。 ■当被修改的单元根本就不在 Cache存储 器时,写操作直接对主存进行,而不写 入 Cache存储器
(2)写直达法 这种方式是每次写入Cache存储器时也同 时写入主存,使Cache和主存保持一致。 这种方式实现简单,且能随时保持主存 数据的正确性。但是,有可能要增加多 次不必要的向主存的写入。假如向Cache 存储器某一单元写入多少次,也要向主 存相应单元写入多少次。 当被修改的单元根本就不在Cache存储 器时,写操作直接对主存进行,而不写 入Cache存储器