Cache通常由
相联存储器实现。
相联存储器的每一个存储块都具有额外的存储信息,称为标签(Tag)。当访问
相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。
Cache通常由
相联存储器实现。
相联存储器的每一个存储块都具有额外的存储信息,称为标签(Tag)。当访问
相联存储器时,将地址和每一个标签同时进行比较,从而对标签相同的存储块进行访问。
在全相联Cache中,存储的块与块之间,以及存储顺序或保存的
存储器地址之间没有直接的关系。程序可以访问很多的子程序、堆栈和段,而它们是位于
主存储器的不同部位上。
因此,Cache保存着很多互不相关的
数据块,Cache必须对每个块和块自身的地址加以存储。当请求数据时,Cache控制器要把请求地址同所有地址加以比较,进行确认。 这种Cache结构的主要优点是,它能够在给定的时间内去存储主存器中的不同的块,命中率高;缺点是每一次请求数据同Cache中的地址进行比较需要相当的时间,速度较慢。
直接映像Cache不同于全相联Cache,地址仅需比较一次。
在
直接映像Cache中,由于每个
主存储器的块在Cache中仅存在一个位置,因而把地址的比较次数减少为一次。其做法是,为Cache中的每个块位置分配一个索引字段,用Tag字段区分存放在Cache位置上的不同的块。
单路
直接映像把
主存储器分成若干页,主存储器的每一页与Cache存储器的大小相同,匹配的主存储器的
偏移量可以直接映像为Cache偏移量。Cache的Tag
存储器(偏移量)保存着
主存储器的页地址(页号)。
以上可以看出,
直接映像Cache优于全相联Cache,能进行快速查找,其缺点是当
主存储器的组之间做频繁调用时,Cache控制器必须做多次转换。
组相联Cache是介于全相联Cache和
直接映像Cache之间的一种结构。这种类型的Cache使用了几组
直接映像的块,对于某一个给定的索引号,可以允许有几个块位置,因而可以增加命中率和系统效率。