容量为64块的Cache采用组相联方式映像,每块大小为128个字,每4块为一组。若主存容量为4096块,且以字编址,那么主存地址应该为(4)位,主存区号为(5)位。

admin2019-03-04  32

问题 容量为64块的Cache采用组相联方式映像,每块大小为128个字,每4块为一组。若主存容量为4096块,且以字编址,那么主存地址应该为(4)位,主存区号为(5)位。

选项 A、5
B、6
C、7
D、8

答案B

解析 Cache(高速缓冲存储器)的功能是提高CPU数据输入/输出的速率,突破所谓的“冯.诺依曼瓶颈”,即CPU与存储系统间数据传送带宽限制。高速存储器能以极高的速率进行数据的访问,但由于其价格高昂,如果计算机的主存储器完全由这种高速存储器组成则会大大增加计算机的成本。通常在CPU和主存储器之间设置小容量的高速存储器Cache。Cache容量小但速度快,主存储器速度较低但容量大,通过优化调度算法,系统的性能会大大改善,仿佛其存储系统容量与主存相当而访问速度近似于Cache。在计算机的存储系统体系中,Cache是访问速度最快的层次。使用Cache改善系统性能的依据是程序的局部性原理。依据局部性原理,把主存储器中访问概率高的内容存放在Cache中,当CPU需要读取数据时就首先在Cache中查找是否有所需内容,如果有则直接从Cache中读取;若没有再从主存中读取该数据,然后同时送往CPU和Cache。如果CPU需要访问的内容大多都能在Cache中找到(称为访问命中,hit),则可以大大提高系统性能。当CPU发出访存请求后,存储器地址先被送到Cache控制器以确定所需数据是否已在Cache中,若命中则直接对Cache进行访问。这个过程称为Cache的地址映射。常见的映射方法有直接映射、相联映射和组相联映射。(1)直接映射:以随机存取存储器作为Cache存储器,硬件电路较简单。在进行映射时,存储器的地址被分成三部分,从高到低依次为:高位地址标识符、块号,以及块内地址。首先按照块号访问Cache,把该块的tag值与存储器地址中的tag域进行比较,若相同则根据地址中的word域对该项数据进行读写,若tag不相符则说明访问未命中。直接映射方式也是一种多对一的映射关系。(2)相联映射:使用相联存储器作为Cache,其速度快于直接映射,但是硬件电路较复杂,而且价格也较昂贵。使用相联存储器组成的Cache存储器,其基本单元分成两部分:地址部分和数据部分。数据部分用于存放数据,而地址部分则存放该数据的存储器地址。当进行映射时,相联存储器把CPU发出的存储器地址与Cache内所有的地址信息同时进行比较,以确定是否命中。全相联映射方式因其比较器电路难于设计和实现,而只适用于小容量Cache。(3)组相联映射:组相联映射的每一个块中有两个或两个以上不同的tag域,每一个tag域则对应着一个数据域。这样。Cache中同一项的两个(或多个)数据有相同的 block值和word值,但是可以有不同的tag值,从而弥补了直接映射机制的缺陷。当 CPU发出读写请求后,地址信息中的block域用来访问Cache存储器。存储器地址所含的tag域则同时和该块中所有的tag(图中为两个)进行比较以确定是否命中。为了加快tag的比较过程,可以采用相联存储器的方式并行地进行比较。这就是组相联名称的由来。组相联映射方式适度地兼顾了相联和直接映射两种方式的优点。在Cache容量相等的条件下,组相联映射比直接映射方式有更高的命中率。若计算机的Cache容量大,速度快,而且运行的程序又能使CPU读写的数据经常在Cache中获得,则该程序执行的速度就快,也就是说如果程序短,访问存储器的局部性比较大,Cache的命中率就会比一般程序高。采用这种程序来评价计算机性能往往性能偏好。本题为组相联的Cache存储器的主存地址和Cache地址格式为:

区号的长度由主存分区的区数确定,组号的长度由一个区的分组的组数确定,块号的长度由一个组的分块的块数确定,块内地址由块的大小确定。所以依据题意得:Cache分4块为一组,所以块长度=log24=2;64块的Cache可以分为16组,所以组号长度=log216=4:字块大小为128,所以块内地址长度=log2128=7。由于Cache分为64块,所以主存分为4096/64=64个区,区号长度=log264=6。主存块长度=log24=2;主存组号长度=log216=4:主存块内地址长度=log2128=7。总长度二区号长度+组号长度+块长度+块内地址长度=19。
转载请注明原文地址:https://jikaoti.com/ti/Anx7FFFM
0

最新回复(0)