wordpress网站速度,电商网站设计系统,网站建设平台源码提供,龙岩天宫山海拔Cache
cache的一般设计
超标量处理器每周期需要从Cache中同时读取多条指令#xff0c;同时每周期也可能有多条load/store指令会访问Cache#xff0c;因此需要多端口的Cache
L1 Cache#xff1a;最靠近处理器#xff0c;是流水线的一部分#xff0c;包含两个物理存在 指…Cache
cache的一般设计
超标量处理器每周期需要从Cache中同时读取多条指令同时每周期也可能有多条load/store指令会访问Cache因此需要多端口的Cache
L1 Cache最靠近处理器是流水线的一部分包含两个物理存在 指令cacheI-Cache和数据cacheD-CacheI-Cache只读D-Cache可读可写。追求 快 I-Cache需要能够每周期读取多条指令D-Cache需要指出每周期有多条load/store指令的访问多端口设计 L2 Cache 指令和数据共享主要功能尽可能保存更多内容 追求 全 访问频率不是很高L1 Cache命中率比较高不需要多端口设计延迟也不是特别重要需要有较高的命中率
Cache主要由 Tag部分 和 Data部分 组成如下图所示
3C定理影响Cache缺失的因素
Compulsory 第一次被访问的指令或数据一定会导致 Cache Miss缓解方法预取 prefetching Capacity 容量Conflict 组相连CacheCache set大小 小于 频繁使用的数据的数量缓解victim cache
Cache的三种实现方式组织方式直接映射、组相连映射、全相连映射
TLB 和 victim Cache全相连I-Cache 和 D-Cache组相连
直接映射 组相连
定义每个数据块有 n 个位置可放的组相联 cache 称为 n 路组相连 cache主存中的每个数据块通过索引位映射到 cache 中对应的组数据块可以存放在该组中的 任意位置
索引位用来选择访问数据所在的组该组内所有数据块的标签都需要比较并行比较
如果cache容量保持相同增加相联度可以增加每组内数据块的数量相联度以 2 的幂递增索引的位长将减少 1标签的位长将增加 1
基本实现方式
并行访问 Tag SRAM 和 Data SRAM 及 访问流水线 同时访问 将整个cache访问放到几个周期完成降低处理器的周期时间较低的时钟频率和较大的功耗 串行访问 Tag SRAM 和 Data SRAM 及 访问流水线 依次访问不再需要多路选择器只需访问指定的SRAM节省功耗 load指令延迟更大访问增加了一个周期
全相连 用CAM存tag用SRAM存数据缺失率最低延迟最大不会有很大容量TLB
Cache的写入
写命中 写通Write Through 数据写到D-Cache的同时也写到下级存储器中如L2 Cache中 写回Write Back 执行store指令时数据写到D-Cache后只是将被写入的cache line做一个标记dirty 脏状态当被标记的cache line要被替换时才将其写入下级存储器中 写缺失 non write allocate 将数据直接写入下级存储器不写入D-cache中 write allocate 首先从下级存储器中取出发生缺失的地址对应的整个数据块将要写入到D-Cache中的数据合并到这个数据块中然后将这个数据块写入到D-cache中为了保持存储器的一致性要将这个数据块写入下级存储器有两种方式 写通写回 一般 write through 配合 Non-Write Allocate 使用 Write Back 配合 Write Allocate 使用
Cache的替换策略
LRU 近期最少使用法 伪LRU将所有way进行分组每一组使用一个1位的年龄部分 随机替换 时钟算法硬件复杂度较低不会损失过多性能
提高cache的性能 写缓存 victim cache filter cache 预取 硬件预取 当I-Cache发生缺失时除了将需要的数据块从下级存储器中取出放在I-Cache中还会将下一个数据块也读取出来放到stream buffer中 软件预取 编译阶段编译器对程序进行分析进而知道哪些数据需要进行预取。比较有针对性需要注意 预取的时机使用软件预取时执行预取指令时处理器需要能继续执行能继续从D-Cache中读取数据要求D-Cache是非阻塞non-blocking结构
多端口Cache True Multi-port cache的控制通路和数据通路需要进行复制两套地址解码器多路选择器比较器对齐器SRAM中每个cell都需要同时支持两个并行的读取操作增大了面积多端口的SRAM cell需要驱动多个读端口因此需要更长的访问时间功耗也会随之增大 Multiple Cache Copies 将cache进行复制 Multi-banking 将cache分成很多小的bank每个bank都只有一个端口bank冲突 实例AMD Opteron的多端口cache 64位处理器但处理器地址进行了简化虚拟地址Virtual Address VA 48位物理地址Physical Address PA 40位
超标量处理器的取指令
使数据块的大小为n个字每周期将其全部进行输出使处理器每周期取出的指令个数多于它能够解码的指令个数通过指令缓存Instruction Buffer将多余的指令缓存起来改进使数据块变大 如变为8个字 实际实现用四个SRAM实现一个八个字的数据块 一个cache line包含的8个字占据了SRAM的两行一个cache line只包含一个Tag值 增加两个控制电路 产生每个SRAM的读地址将四个SRAM输出的内容进行重排序使其按照程序中规定的原始顺序进行排列