计算机硬件系统设计 学习笔记 - 2. 4ways Cache Logisim Design

目录

 

课程来源

总结

学习路径

设计路径

背景知识

难点及解决方法+发现

Debug

 


课程来源

mooc 华中科大团队 计算机硬件系统设计 基于logisim

https://www.icourse163.org/course/HUST-1205809816?tid=1206906216

 

总结

学习路径

定义(映射是地址的映射)->基于camera建立对三种mapping的感性认识->基于读写策略图片(后附地址)学习valid, dirty段意义->基于计算题学习memory address中的index和set的对应关系以及各段的位数->明白写入cache的clk里,上升沿写入,下降沿读出,而单纯读出是上升沿读出,下降沿无动作->明白LRU采用淘汰标志而不是访问标志的原因

设计路径

address divide->load flag computation(Miss generate)->store flag computation->clear flag computation->connecting->DataOut generate->Debug: 如果校验和不等于32640,就放慢频率,观察哪个地址/寄存器出错

 

背景知识

  1. Cache主要知识
    1. Cache Address的组成及意义:valid(重新启动后为0) dirty(服务于读写策略) tag(在valid正常的情况用于验证是否hit) Blk(includes Byte0 ... Byte3) 以及各段需要多少位
    2. Cache Address与Memory Address的映射
      1. 映射方式:使用Camera(课件附带软件)观察直接相联,全相联和多路组相联(重点); 观察多路组中Address index和Cache Set的对应关系,并观察Memory Blk(4B,32bit) store into Cache Set Blk(4B,32bit)的随机性
      2. 是否命中:valid=1,两个address的tag对上,才是命中
      3. 运算函数1:Memory Address‘s index Binary   -(Decode)>   Cache Address's Set number
      4. 运算函数2:Blk includes 4 Bytes, so offset has 2 bits. 8 cache lines and 4 ways mapping means there is  2 set, so index has 1 bit.
    3. Cache读写策略和dirty位:参考读写流程图 https://img-blog.csdn.net/20161227152811109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFyazU2Njk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast 理解策略和dirty位
      1. 如果从cache读数据而cache没有,则把Blk数据写入寄存器后还要再读出
  2. Cache其他知识
    1. ICache 和 DCache
    2. CAM and SRAM
    3. 因Cache thrashing而引入的多路组相联

难点及解决方法+发现

  1. 学习困难---对全过程的动态没有感性认识
    1. 对Cache的介绍没围绕设计顺序展开: 观察mapping全过程,参考github上其他相同的电路图和官方参考书
    2. 输入变量(尤其是BlkReady),输出变量,测试机的原理都难以理解: 参考官方参考书和5.6的视频文档
  2. 设计困难: 模块化设计---后期证明坑不在这里,在时序那一块
    1. 输出什么数据:SlotData_OffsetPart, Miss_Flag
    2. 输入什么数据:Address BlkData BlkReady (Clk)
    3. 输入和输出之间需要什么中间变量:
      1. SlotData_OffsetPart <(Multiplex)-   SlotData & Offset <(Equal)-   SlotData & Address_0~1
      2. Miss_Flag <(Compare)- valid & Address_Tag & Caches_Tag  <(Equal)- valid & Address_3~15 & Caches_Tag
  3. 设计困难: x态的运用
  4. 设计困难: cache line读写
    1. 依照LRU需要写入: 空行(valid)->命中次数最少的行
    2. 写入那一clk的上升沿和下降沿期间: 上升沿写入,下降沿由于tag还未变所以对应load置1,cache line数据读出
    3. 所以写入flag还应该用于访问次数的counter,首次访问就应该计1(如果是淘汰标志计数就应该取反),计数器在往后到再次被写入之前都应该计数,因为经过首次写入就不是空行,不应该重复写入一个非空行而放着空行不写
  5. 设计困难:是访问标志还是淘汰标志
    1. 核心: 计数标志是为了让对应行和不对应的行形成差异delta而不是单纯做数据备份,而淘汰标志一个动作能覆盖更多的delta情况,包括非空白和空白行,再次写入,清零时的delta情况
  6. 发现:
    1. Controlled Buffer feature: generate X when buffer is closed
    2. Tunnel的x特性: 可以多个Tunnel输入对应一个Tunnel输出,其中有且仅有一个x态Tunnel输入
    3. Compare feature: generate X when one comparement is X
    4. 1+x=1 0*x=0:

Debug

首先是校验和不匹配,然后放慢频率,观察Trace变化时的全过程

当Address=0x04时,DataOut为红色,进入电路排查,发现连线连错

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(操作系统,计算机组成)