囹狐冲吧 关注:4贴子:546

‖浅谈 Cache Memory‖

只看楼主收藏回复

除了才华,只有梦想。才华与梦想恰能改变整个世界。
_sailing_博客


来自手机贴吧1楼2016-05-21 03:52回复
    很多事情可以很多人去做,有些事情必须是有些人做。
    GPU或DSP,都是术业有专攻的东西,前者擅长矢量计算,后者擅长整数计算。也因为它们是术业有专攻,其精度自然也是特定的。如果某应用需要大量的矢量计算或整数计算,且精度需求又一致,那么,借用闲置的GPU或DSP,是一个不错的想法。


    来自手机贴吧2楼2016-05-21 03:55
    回复
      从广义的角度上 看, Cache 是缓解访问 延时的 Buffer ,这些 Buffer 无处不在,只要 存在着访问延时的系 统,这些广义 Cache 就 可以在掩盖访问延时的 同时,尽可能地提高数 据带宽。
      自然语言结构的研究
      语言文法
      连接器和加载器
      程序员的自我修养-链接、加载和库
      A Quantitative Approach


      来自手机贴吧3楼2016-05-21 03:58
      回复
        在现代处理器中,一个 任务的执行时间通常由 两部分组成, CPU 运行时间和存储器访问延 时。
        虚拟地址的 引入分离了程序员看到 的地址和处理器使用的 物理地址,设立了一个 映射关系表存放虚拟地 址与物理地址的映射关 系,这个映射关系表也 被称之为页表 (Page Table) 。


        来自手机贴吧4楼2016-05-21 03:59
        回复
          在多数微架构中,一条存储器读指令,首先需要经过虚实地址转换,得到物理地址之后,才能通过若干级 Cache ,最终与主存储器系统进行数据交换。如果存储器访问可以部分忽略 TLB转换而直接访问 Cache ,无疑可以缩短存储器访问在关键路径上的步骤,从而减少访问延时。
          以上这几种策略的相同点是利用读写指令间存在的依赖关系,提高 Load Prediction 的预测成功率。使用这类方法时,存储器读写指令都需要获得EA后,才能进行进行相应的预测。


          来自手机贴吧5楼2016-05-21 04:00
          回复
            当 Store 和 Load 指 令建立了确定的关系之 后, Load 指令不必每一 次都从存储器子系统中 获得数据,因为 Store 指令可以将数据直接送至建立映射关系的 Load 指令。这一方法相当于指令流水将已经与 Store 指令确立关系的 Load 指令的存储器器访问,转化为对 LSQ 进行访问,这也是 Renaming 的由来。
            一 个 Cache Block 由预先存 放的地址信息,状态位和数据单元组成。一个 Cache 由多个这样的 Cache Block 组成,在不同的微架构中,可以使用不同的 Cache Block 组成结构。


            来自手机贴吧6楼2016-05-21 04:02
            回复
              不同的处理器采用了不同的 Cache 映射方式,如 Fully-Associative, N-Ways Set-Associative 或者是 Direct Mapped 。 如果使用 NS 参数进行描述,这三类方式本质上都是 N-Ways Set-Associative 方式, 只是选用了不同的 NS 参数而已。


              来自手机贴吧7楼2016-05-21 04:03
              回复
                在现代微架构中, TLB 的设计需要对 Hit Time 和 Miss Rate 的设 计进行折中, TLB 因此 分为两级, L1 和 L2 。 L1-TLB 的实现侧重于 Hit Time 参数,较小一些, 多使用 Fully Associative 方式,对其的要求是 Extremely Fast ; L2 TLB 的实现需要进一步考虑 Miss Rate ,通常较大一 些,多使用 N-Way Associative 方式。


                来自手机贴吧9楼2016-05-21 04:04
                回复
                  一个最近访问的 Block ,其生命周期至少为 4 ,即一个刚刚 Hit ,或者因为 Miss 而 Refill 的 Cache Block ,至少需要 4 次 Cache Block 替换操作后才能被 Evict 。与其他微架构,如Power 和 MIPS 相比,不论是 Nehalem 还是 Sandy Bridge ,在 Front-End 的设计中依然投入了大量的资源。对于 x86 体系结构,也许在放弃了 Backword- compatibility 之后,才能真正地改变 Front-End 的 设计。


                  来自手机贴吧10楼2016-05-21 04:05
                  回复
                    当微架构进行存储器访问时,将首先访问 L1 Cache ,此时有Hit 与 Miss 两种情况。如果为 Hit , L1 Cache 将直接提供数据;如果为 Miss , L1 Cache 将产生一个 Miss 请求,并通过 L1-L2 Bus 从 L2 Cache 中获得数据。
                    通常情况下 Cache Miss 会引发 Cache Block 的 Replacement ,如果 被替换的 Cache Block 为 Dirty 时,还需要向 L1-L2 Bus 提交 Writeback 请求,此时 L1 Cache Controller 将向 L2 Cache 发送两类数据 请求,一个是 Cache Miss Request ,一个是 Write Back Request 。为了提高 Miss Request 的处理效率,在绝大多数 微架构中首先向 L2 Cache 发送 Cache Miss Request ,之后再发送 Write Back Request 。


                    来自手机贴吧11楼2016-05-21 22:00
                    回复
                      在这种模型下,一个 Superscalar 处理器不管 内部具有多少可以并行 执行的模块,但是一次 发射的指令都不能超过 两条,否则存储器读写 必将成为瓶颈,最终阻 塞整个流水线。这一发 现使 Superscalar 处理器 因为 Cache Blocking 的原 因几乎无法继续发展。


                      来自手机贴吧12楼2016-05-21 22:00
                      回复
                        伏久者,飞必高;开先者,谢独早。
                        1、《七大家族》
                        2、《魔鬼数学:数学思维的力量》
                        3、《至关重要的问题:能源、进化和复杂生命的起源》
                        5、《智人:人类简史》


                        来自手机贴吧13楼2016-05-21 22:01
                        回复
                          Memory Consistency 关注对多个地址进行的存储器访问 序列; Cache Coherency 单纯一些,关注同一个地址多个数据备份的一 致性。
                          不难发现 Cache Coherency 是 Memory Coherency 的基础。
                          处理 器访问 Cache 时,可能 会出现 Read Miss , Read Hit , Write Miss 和 Write Hit 这四种情况。


                          来自手机贴吧14楼2016-05-21 22:02
                          回复
                            如果发生 Read Hit ,命中的 Cache Block 一 定处于 Valid , Reserved 或者 Dirty 状 态。 Read Hit 不会改变 该 Cache Block 的状态。 如果发生 Read Miss , 则该 Cache Block 的当前 状态或者是 Invalid 或者 不在本地 Cache 中。此 时 Cache Controller 会产 生一个总线读 BR ,从其 他处理器的 Cache 获得 所需的数据,该数据会 同时存在于主存储器 中。此时将 Cache Block 状态将迁移为 Valid ,表 示此时 Cache Block 中的 数据和主存储器一致, 并且其他处理器的 Cache 可能拥有该数据 的副本。
                            如果发生 Write Hit ,则根据该写操作是第 一次还是后续写,将状 态分别迁移到 Reserved 或者 Dirty 状态。如果是 第一次写操作,进行 Write-Through 操作的同 时也会产生总线写 BW ,以保证本地 Cache 中 的数据是除主存储器之 外唯一的副本。如果发 生 Write Miss ,则该 Cache Block 的当前状态 或者是 Invalid 或者不在 本地 Cache 中,这次写 操作一定是第一次写, 因此将迁移为 Reserved 。
                            TOMASULO 算法
                            LIRS 算法


                            来自手机贴吧15楼2016-05-21 22:03
                            回复
                              Write-Once 协议的 实现要点在于第一次写 操作采用 Write-Through ,并通过 Write-Through 产生的总线写 BW , Invalidate 其他处理器 Cache 中的相应数据副 本,使本地 Cache 中的 数据成为除了主存储器 以外的唯一副本,从而 维护 Cache Coherency 。
                              Intel 可以集成更多那样 的处理器内核,集成 256 , 512 或者更多的 处理器内核对 Intel 都不 是太大的难题。只是不 知这样做的目的何在, 很多应用甚至无法发挥 4 个或者 8 个内核的性 能。


                              来自手机贴吧16楼2016-05-21 22:04
                              回复