解读一个四路组相联cache代码

这篇具有很好参考价值的文章主要介绍了解读一个四路组相联cache代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解读一个四路组相联cache代码

在《计算机组成原理,软硬件接口》中,第五章便是cache的学习。本人初学cache,难免有疏漏之处,源代码github地址:https://github.com/airin711/Verilog-caches

1、四路组相联cache主要特征如下:
  • 使用写分配写回;
  • 块大小为十六字(64字节或1024位);
  • 缓冲内包含2^14个块;
  • 25位地址;
  • cache每个块包含有效位和脏位。
  • Cache块索引为14位;
  • 块内偏移为4位;
  • 标签大小为25-14-2=9位;

其原理图如下,包含命中、修改和失效的判断方法;脏位、有效位和标签的更新方法;字节、比特的选择方法(数据流仅画了一组):

解读一个四路组相联cache代码

2、控制信号

处理器与cache之间的控制信号:

信号 位数 作用
i_p_addr 25 地址输入
i_p_byte_en 4 比特选择
i_p_writedata 32 写数据
i_p_read 1 读信号
i_p_write 1 写信号
o_p_readdata 32 读数据
o_p_readdata_valid 1 读数据有效位
o_p_waitrequest 1 等待信号

存储器与cache之间的控制信号:

信号 位数 作用
o_m_addr 26 地址输出
o_m_byte_en 4 比特选择
o_m_writedata 128 写数据
o_m_read 1 读信号
o_m_write 1 写信号
i_m_readdata 128 读数据
i_m_readdata_valid 1 读数据有效位
i_m_waitrequest 1 等待信号
3、在组相联cache中查找所需数据块:

在同一组内的每个cache块的标签都需要比较,判断是否与处理器访问的数据块地址匹配。索引位用来选择访问数据所在的组,该组内所有数据块的标签都需要比较。组相联cache相对于直接映射而已,在于需要更多的比较器,以及由于比较器和选择带来的延迟。

4、失效时的替换方法:

该组相联cache采用最近最少使用(RLU)方法替换数据块。

最近最少使用替换规则:对四路组相联来说,采用额外的存储单元ram_hot,每组有2bit的独热码。若第i组被访问过,则将表示第i组的独热码放在最前面。独热码的初始值及更新规则如下:

解读一个四路组相联cache代码

5、状态机简介

解读一个四路组相联cache代码

该有效状态机大体可分成三部分:

①、标签比较COMP:该状态检测读或写是命中还是失效。若命中,如果是加载指令就从选择的字中读取数据,如果是存储指令就将数据写入选择的字中,并设置脏位为1;若失效,先更新cache标签,之后如果当前脏位为1,则转跳到写回状态,如果为0,则转跳到分配状态。

②、写返回(WB1、WB2):该状态使用有标签和cache索引组成的地址将128位的块写回存储器。等待存储器写操作完成后,有限状态机跳转到分配状态。

当发生写回时,判断最近最少使用的哪一项对应哪个数据块,将其写回。

if(r_cm_data[1:0] == 2'b00) fetch_write <= 4'b0001;
else if(r_cm_data[1:0] == 2'b01) fetch_write <= 4'b0010;
else if(r_cm_data[1:0] == 2'b10) fetch_write <= 4'b0100;
else if(r_cm_data[1:0] == 2'b11) fetch_write <= 4'b1000;

o_m_addr <= (fetch_write[0]) ? {wb_addr0, 3'b000} :
(fetch_write[1]) ? {wb_addr1, 3'b000} :
(fetch_write[2]) ? {wb_addr2, 3'b000} : {wb_addr3, 3'b000};

o_m_writedata <= (fetch_write[0]) ? readdata0 : 
(fetch_write[1]) ? readdata1 : 
(fetch_write[2]) ? readdata2 : readdata3;

③、分配(FETCH1、FETCH2、FETCH3):从存储器中取出一个新块直接返回给处理器;文章来源地址https://www.toymoban.com/news/detail-490875.html

到了这里,关于解读一个四路组相联cache代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【人工智能】结合代码通俗讲解 Transformer 推理性能优化技术:KV Cache

    目录 0. 引言 1. KV Cache是啥? 2. 背景 3. 原理 4. 实现细节 5. 总结 在解码器推理加速的时候,由于解码过程是一个token一个token的生成,如果每一次解码都从输入开始拼接好解码的token࿰

    2024年02月16日
    浏览(58)
  • 四路病房呼叫系统

    1、掌握病房呼叫系统电路的设计、组装与调试方法。 2、熟悉数字集成电路的设计和使用方法。 1、某医院有1,2,3,4号病室,每个房间装有呼叫按钮,病人通过按动自己的床位按钮开关向护士值班室发出呼叫信号。 2、护士值班室有相应的显示电路:每个病房对应有一个指

    2024年02月06日
    浏览(57)
  • 基于Multisim14的四路计分抢答器

    1、设计要求: ①、抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 ~ S3表示。 ②、设置一个系统清除和抢答控制开关S,该开关由主持人控制。 ③、抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示

    2024年02月11日
    浏览(35)
  • 基于51单片机的四路抢答器设计

    使用51单片机设计一个思路抢答器 正常抢答:主持人按下开始按钮后数码显示管显示最先按下按钮台号,蜂鸣器发出音响,其它抢答按钮无效;主持人按下开始按钮之前,若选手按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,蜂鸣器发出音响,其他按钮不起作

    2024年02月08日
    浏览(41)
  • 基于STM32的两路/四路红路灯控制系统

    1、设计要求: 东西、南北两干道交于十字路口,各干道有一组红、绿、黄三个指示灯,指挥车辆和行人安全通行。南北方向为主干道,通行时间为9秒;东西方向为支干道,通行时间为15秒。通行时间最后2秒,绿灯灭,黄灯常亮,黄灯亮完变更通行车道。通行时间由数字显示

    2024年02月11日
    浏览(42)
  • 【代码笔记】Transformer代码详细解读

    Transformer是当前自然语言处理乃至整个深度学习领域极其重要的经典模型,是当前大规模预训练语言模型如BERT、GPT、BART等的基本架构,读懂该模型的源码,对于深入了解其原理、后续微调、改进以该模型为基本架构的模型很有帮助,解读该代码重点在于: 搞清楚Transformer的模

    2023年04月16日
    浏览(43)
  • 海康威视监控视频,萤石云免费版四路并发访问限制绕过

    公司新装了不少海康威视摄像头,通过NVR连接到了萤石云,由于萤石云免费版限制了单个摄像头的并发访问数(每个摄像头同时只允许4个用户进行查看实时视频),但是又不想付费购买企业版,于是着手思考如何解决这个问题。 需求 需求很明确,每个摄像头需要支持多用户

    2023年04月08日
    浏览(104)
  • 全景环视拼接,四路鱼眼摄像头,有个大概样子了

           用四路鱼眼摄像头去拼接全景环视图像,首先要用对相机进行标定,因为是鱼眼相机,用的函数应该是cv2.fisheye.initUndistortRectifyMap,再remap,不能用一般相机的标定函数,接着用cv2.getPerspectiveTransform,cv2.warpPerspective进行透视变换,进行拼接,现在是有点样子了,但代码

    2024年02月11日
    浏览(39)
  • 【花雕动手做】ASRPRO语音识别(50)---四路外控智能管家盒子

    本例实验采用红外对管 该传感器模块对环境光线适应能力强,其有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信

    2024年02月22日
    浏览(48)
  • stm32f407单一定时器输出四路PWM波

    最近在玩遥控器多路pwm捕获,顺带着写了一下pwm波输出的代码,下面我来说一下407板子输出pwm波的具体配置及函数说明。 输出效果如下。PS:因为我的分析仪只能接一个,就只看一路的输出 1、开启时钟及定时器引脚复用 在输出PWM波时要开启定时器时钟及GPIO时钟,本例以TI

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包