超标量机器原理:缓存与奔腾处理器架构解析
1. 指令缓存
指令缓存对于CPU高效获取指令至关重要。L1指令缓存的访问时间可能为两个时钟周期,缓存行大小为8字节。CPU会从指令缓存中获取指令来填充指令队列。当出现缓存未命中时,指令缓存会提前预取一个16字节的内存块。如果向后循环分支的目标指令位于指令缓存中,那么可以在两个时钟周期内获取该目标指令。
设计指令缓存时,首先要确定缓存中的条目数量,并选择合适的搜索技术。若每个缓存条目包含一个8字节的数据字段,64个条目就能提供一个512字节的指令块,这对于大多数应用来说已经足够。由于指令流是一次从一个段中获取的,直接映射搜索方法更为合适。
1.1 直接映射
当物理块地址为33位时,将其高27位作为键存储,低6位用于直接选择一个缓存条目。这个条目只包含部分地址,因为其低6位用于获取块,这6位构成了指令缓存的索引。由于低6位用于选择条目,所以缓存只需要一个比较器。比较后,如果匹配则为命中,否则为未命中。
直接映射条目的格式包含一个27位的键和一个64位的数据,共91位。缓存有64个条目(E0 - E63),搜索操作分两步进行:
1. 对给定块地址的低6位进行解码,选择条目进入MOR。
2. 将MOR中的高27位与MAR中的键字段进行比较。若命中,64位数据字段作为输出被启用并时钟输入到指令队列;若未命中,缓存从中央内存的给定地址检索两个64位的指令块,并将它们存储到缓存中两个连续的条目中,第一个条目的索引由块地址的低6位确定,加1后得到第二个条目的索引。
虽然指令缓存只支持读操作,但这并不意味着程序中的指令不能被修改。实际上,任何指令只要先加载到数据寄存器中,
超级会员免费看
订阅专栏 解锁全文
1818

被折叠的 条评论
为什么被折叠?



