缓冲存储器
1.什么是缓冲存储器[1]
缓冲存储器是指通过临时存储,能使数据在具有不同传递特性的两个功能单元之间传递的专用存储器或存储区。
2.缓冲存储器的结构[2]
缓存读双字指令的速度为120ns,内存的速度为1100ns,处理机的速度为150~300ns。缓存的速度比内存高一个数量级,同处理机的速度相匹配。这样,缓存在处理机和内存之间起到了缓冲的目的。
处理机、缓存和内存形成了三级存储结构,其关系如图1所示。4KB缓存的缓存目录有32个表目,对应缓存的0~31的列号,缓存目录的表目分为两个区,对应于缓存的两个区0~1。这样缓存中的每一块都对应一个固定的表目。每个表目包括内存地址行号和状态位,另外,两区的每个表目对应一个标志位。表目的内存地址行号表示缓存块的内容所对应的内存地址所在的行。状态位有三种:有效位、修改位、故障位。当有效位为1时,表示该表目对应的缓存块中的数据已经是无效的:为0时,则对应是有效的。
当修改位为1时,表示该表目对应的缓存块中的数据已经被修改过;为0时,则没有修改过。
当故障位为1时,表示该表目对应的缓存块有故障,否则无故障。标志位表示最近访问了两区中的哪一区,以作为选择淘汰块使用。缓存目录的结构形式如图3所示。这样,在编写内存地址的时候,就可以用行号、列号、每块的字节数的格式来表示。例如,80386的编址形式为行号(17位),列号(10位),字节数(5位)。
3.缓冲存储器的工作原理[2]
由于处理机在进行读取和写入时,缓冲存储器的工作过程不同,分别描述如下。
(1)读取指令或数据。当处理机要读取指令或数据时,缓存控制器就自动查找缓存目录,以确定包含指令或数据的内存块是否在缓存中。它是根据指令或数据地址的列号部分查找缓冲目录表目的列号,然后把对应列号表目中分属区0和区1的内存地址行号与指令或数据地址的行号部分进行比较。如果匹配,并且状态位中的有效位为“0”,则把匹配表目所对应的缓存块中的内容直接送给处理机,且把标志位表示成对应块最近已被访问过。若两个区的对应表目中的内存地址行号都不与之匹配,则说明该块不在缓存。需要从内存中把该块内容送给处理机,同时该块内容也被送到缓存中的相应列的某块内。
(2)写入数据。当处理机要求写入数据到某内存单元时,也是首先由缓存控制器查找缓存目录,如包含此单元地址的内存块已经在缓存中,则处理机把在缓存中的该块内容加以写入,并把缓存目录中相应表目中的修改位置为“1”。这里是不是直接写入内存,有两种方法:惰性方法和立即存方法。惰性方法是指数据写入缓存时,不立即修改相应内存块中的内容,而是直到该缓存块中的内容被淘汰出缓存时,才把该缓存块写入内存相应块中。立即存方法是指对缓存和内存的相应块同时写入。若该块不在缓存中,则先把该块从内存读入缓存,然后再写入缓存中。
(3)通道读取指令或数据。当通道(I/0处理机)从内存读取指令或数据时,则查找缓存目录,假若包含该指令或数据地址的块在缓存中,则从缓存中把该块送往通道。若不在缓存中,则从内存读出,但不把该块放入缓存中。
(4)通道写入数据。当通道向内存某单元写入数据时,该数据只写入内存中。但缓存控制部件同时查找缓存目录。如果不在缓存中,则不进行任何操作。若该内存单元所在的块在缓存中,则相应表目的状态位中的有效位被置成“1”,使该数据块无效。
缓冲存储器的设置,使CPU所需的指令与数据绝大多数来自缓存,而不通过总线去访问内存,避免了处理机的等待,大大提高了系统的吞吐率,是发挥处理机能力的有效方法。