主存和cache之间的映像方式有哪几种?
有3种,直接映像,全相联映像,细相联影响。
1直接映像(Direct Mapping)
采用直接映像时,Cache的某一块只能和固定的一些主存块建立映像关系,主存的某一块只能对应一个Cache块。直接映像的优点是硬件简单、成本低;缺点是不够灵活,主存的若干块只能对应惟一的Cache块,即使Cache中还有空位,也不能利用。
2全相联映像(Associative Mapping)
采用全相联映像时,Cache的某一块可以和任一主存块建立映像关系,而主存中某一块也可以映像到(2ache中任一块位置上。由于Cache的某一块可 以和任一主存块建立映像关系,所以Cache的标记部分必须记录主存块块地址的全部信息。
例如,主存分为2n块,块的地址为n位,标记也应为n位。 采用全相联映像方式时,主存地址被理解为由两部分组成:标记(主存块号)和块内地址。CPU 在访问存储器时,为了判断是否命中,主存地址的标记部分需要和Cache的所有块的标记进行比较。
为了缩短比较的时间,将主存地址的标记部分和Cache 的所有块的标记同时进行比较。如果命中,则按块内地址访问Cache中的命中块(其标记与主存地址给出的标记相同);如果未命中,则访问主存。
全相联映像的优点是灵活,Cache利用率高。缺点有两个:一是标记位数增加了(需要记录主存块块地址的全部信息),使得Cache的电路规模变 大,成本变高;二是比较器难于设计和实现(通常采用“按内容寻址的”相联存储器)。因此,只有小容量Cache才采用这种映像方式。
3组相联映像(Set Associative Mapping)
组相联映像方式是介于直接映像和全相联映像之间的一种折中方案。设Cache中共有m个块,在采用组相联映像方式时,将m个Cache块分成u组(set),每组k个块(即m=u×k),组间直接映像,而组内全相联映像。所谓组间直接映像,是指某组中的Cache块只能与固定的一些主存块建立映像关系。
采用直接映像时,Cache的某一块只能和固定的一些主存块建立映像关系,主存的某一块只能对应一个Cache块。直接映像的优点是硬件简单、成本低;缺点是不够灵活,主存的若干块只能对应惟一的Cache块,即使Cache中还有空位,也不能利用。
2.全相联映像(Associative Mapping)
采用全相联映像时,Cache的某一块可以和任一主存块建立映像关系,而主存中某一块也可以映像到(2ache中任一块位置上。由于Cache的某一块可 以和任一主存块建立映像关系,所以Cache的标记部分必须记录主存块块地址的全部信息。例如,主存分为2n块,块的地址为n位,标记也应为n位。 采用全相联映像方式时,主存地址被理解为由两部分组成:标记(主存块号)和块内地址。CPU 在访问存储器时,为了判断是否命中,主存地址的标记部分需要和Cache的所有块的标记进行比较。为了缩短比较的时间,将主存地址的标记部分和Cache 的所有块的标记同时进行比较。如果命中,则按块内地址访问Cache中的命中块(其标记与主存地址给出的标记相同);如果未命中,则访问主存。
全相联映像的优点是灵活,Cache利用率高。缺点有两个:一是标记位数增加了(需要记录主存块块地址的全部信息),使得Cache的电路规模变 大,成本变高;二是比较器难于设计和实现(通常采用“按内容寻址的”相联存储器)。因此,只有小容量Cache才采用这种映像方式。
3.组相联映像(Set Associative Mapping)
组相联映像方式是介于直接映像和全相联映像之间的一种折中方案。设Cache中共有m个块,在采用组相联映像方式时,将m个Cache块分成u组(set),每组k个块(即m=u
×k),组间直接映像,而组内全相联映像。所谓组间直接映像,是指某组中的Cache块只能与固定的一些主存块建立映像关系。