RISC-V SiFiveU64内核——L2 Prefetcher预期器

news2024/11/13 12:44:25

目录

    • L2 Prefetcher简介
    • 操作
    • 流退出
    • 页边界
    • Memory Map
    • 控制寄存器
    • L2 Prefetcher 初始化

L2 prefetcher是U64内核新增的功能,U54内核没有这个功能。打开L2 prefetcher功能后,当访问大片内存,同时dcache中没有缓存时,访问内存的速率可以提高大概一倍。

L2 Prefetcher简介

SiFive L2 预取器是一个 per-hart 设备,它允许 L2 根据内核中的 harts 进行的数据访问模式来执行对内存的访问。

例如,如果一个 hart 正在读取一个大数组的每 100 个字节并且L1-dcache中没有缓存,预取器就会将适当的内存地址分配给 L2 缓存,使得后续对数组的访问产生L2 缓存命中。 这样就减少了整体访问数组的时间并提高应用程序的性能。

U64内核包含四个 L2 预取器实例。 它们的地址如表141所示

img

操作

L2 Prefetcher 可以监控每个 hart 八个不同的数据流,其中一个流由一个基地址和内存地址之间的跨度组成。 在可能的情况下,预取会自动发布到内存系统,并且 10 个条目的预取队列会在访问发布之前保存这些访问。 就缓存行而言,预取(或最大跨步长度)的范围由 additionalCtrl.window 寄存器设置。 例如,如果将其设置为 0x4,则 步长为 256 字节或更大的流将被忽略(假设每个缓存行为 64 字节)

每个流的初始预取数(或预取距离)由 basicCtrl.initialDist 设置。 预取距离将根据预取的成功和预取的整体范围进行调整。 如果 hart 继续进行与流的步幅匹配的直接访问(幅度和符号),则将进行额外的预取,并且预取距离会增加。 有可能 hart 进行的直接访问对于预取器来说太快了,hart 将不得不等待 L2 填充。 发生这种情况时,L2 预取器将增加预取距离(即发出更多预取)以尽量减少发生这种情况的机会。 增加预取距离的阈值由 additionalCtrl.hitMSHRThrd 设置。

为流发出的最大预取次数受 basicCtrl.maxAllowedDist 限制。 预取距离会逐渐增加,但有时可能不够快。 从初始距离加速到最大距离的速度由预取器自动管理。 basicCtrl.linToExpThrd 设置可用于微调此自适应加速。 该字段的值越小,预取器达到最大预取距离的速度就越快。

仅当存在空闲的 L2 未命中状态保持寄存器 (MSHR) 时才会发出预取。 additionalCtrl.qFullnessThrd 值用于控制预取器何时停止向内存系统发出提示。 这个 4 位字段允许 L2 缓存中的 MSHR 总数以 1/16 的分数表示。 例如,阈值 0xC 表示如果 75% 的 MSHR 已分配,预取将停止,直到正在使用的 MSHR 数量降至可用的 75% 以下。 此设置允许调整预取器,以便预取器不会停止由 Core Complex(来自 harts 和 Front Port master)进行的直接访问。

预取器监视对内存的读取和写入,并且步幅可以是递增或递减地址。 复位时禁用预取; 可以使用 basicCtrl.scalarLoadSupportEnadditionalCtrl.scalarStoreSupportEn 位启用标量支持,可以使用 additionalCtrl.vectorLoadSupportEnadditionalCtrl.vectorStoreSupportEn 位启用矢量支持。

流退出

预取流不太可能在应用程序的生命周期内无限期地持续下去,因此 L2 预取器提供了一种方法来淘汰旧流。 这允许跟踪新流。

流可以通过成功命中 L2 缓存而无需预取来退出。如果足够多的连续访问命中 L2 缓存,但没有预取,则预取器无需继续监视流。 additionalCtrl.hitCacheThrd 字段设置了该流退出的阈值。

页边界

L2 预取器可以编程为跨越内存的 4 KB 页边界。 这在没有 OS 页面保护或可以忽略 OS 页面保护的应用程序环境中很有用。

当设置 basicCtrl.crossPageEn 时,预取可以跨越 4 KB 边界

如果 hart 继续进行与新的 4 KB 内存页中的步幅匹配的访问,预取将恢复。

Memory Map

L2 预取器控制寄存器的存储器映射如表 142 所示

img

控制寄存器

L2 预取器控制寄存器 basicCtrladditionalCtrl 如下表所述。

img

img

L2 Prefetcher 初始化

L2 预取器需要在使用前在引导软件中进行初始化。 初始化后,L2 预取器可以根据需要在每个配置的基础上进行调整。 具体需要参考提供的SDK中L2预取器的软件示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用R语言和python进行社交网络中的社区检测

在这篇文章中,我用R语言和python检测社交网络中的社区。最近我们被客户要求撰写关于社区检测的研究报告,包括一些图形和统计输出。 相关视频:复杂网络分析CNA简介与R语言对婚礼数据聚类(社区检测)和可视化|数据分享 复…

(一)LTspice简介

文章目录前言一、举例1.1、RC滤波1.2、仿真结果二、软件安装总结前言 LTspice是一款高性能SPICE仿真器软件,包括原理图捕获图形界面。可探测原理图以产生仿真结果,通过LTspice内置波形查看器轻松探索。与其他SPICE解决方案相比,LTspice的增强…

mysql之SQL练习

常见面试题 学生表:student(学号,学生姓名,出生年月,性别) 成绩表:score(学号,课程号,成绩) 课程表:course(课程号,课程名称,教师号) 教师表:teacher(教师号,教师姓名) 1查询学生总成绩排名 SELECTstu_no,sum(score_prize) AS to…

安装Hadoop下hive的问题

ji问题的主要来源,由于收到安装文档后替换了一下,出现的问题 一,配置完成后,系统变量需要重启虚拟机, bash 变量需要刷新 #系统环境变量需要重启,bash变量只要source或切换就可以 source .bash_profile 我…

VUE+Spring Boot前后端分离开发实战(六):基于RABC权限通用后台管理系统-给角色动态分配权限和用户

文章目录 前言功能设计后端实现前端实现写在后面前言 本文记录了通用后台管理系统中RABC权限中两个功能:给角色分配权限、给角色设置用户。 给角色分配用户:前端使用到了elementUI中的tree,包括加载树以及给已选配权限给默认值等。给角色设置用户:前端用到了elementUI中的…

我们需要工具支持键集分页

我们需要工具支持键集分页 (use-the-index-luke.com) 您是否知道分页非常麻烦但很容易避免?offset offset指示数据库跳过查询的前 N 个结果。但是,数据库仍必须从磁盘获取这些行并按顺序排列它们,然后才能发送以下行。 这不是实现问题&…

超好用的大数据分析平台分享,SuccBI 一站式大数据分析平台

SuccBI 一站式大数据分析平台融合了数据汇集、加工、智能调度、自助分析可视化、中国式报表等功能为企业提供一站式的大数据分析处理能力。 数据汇集、加工 连接各类分散的数据并进行加工、清洗、调度、元数据管理,帮助企业轻松汇集、管理和共享数据资产。 丰富的数…

SAR信号处理基础2——线性调频信号频谱与驻定相位原理

前面已经给出了线性调频信号的时域表达形式,并介绍了信号的实部、虚部、相位、频率等,本文介绍线性调频信号的频谱,以及推导线性调频信号时常用的驻定相位原理。计算信号的频谱,实际上就是对信号做傅里叶变换。即 驻定相位原理认…

Java高校宿舍管理系统寝室管理(含源码+论文+答辩PPT等)

项目功能简介: 本项目含代码详细讲解视频,手把手带同学们敲代码从0到1完成项目 该项目采用技术JSP、Servlet、jdbc、前端框架 bootstrap、jQuery,bootstrap-datetimepicker日期插件、Tomcat服务器、MySQL数据库 项目含有源码、配套开发软件、软件安装教程…

Linux和WIN的优势

1.性价比方面 Linux服务器与Windows服务器就性价比而言,Linux服务器优势是很明显的。Linux作为资源管理和操作系统来说,是开源、免费的,而正版的Windows的操作系统是收费的,因而就性价比来说Linux服务器优于Windows服务器。 2.性…

python的自定义函数的用法和实例

目录 1.自定义函数的语法和用法 (1)引入 (2)语法 (3)用法:用于自定义目标函数语法。 (4)调用函数 ①语法 ②解释 2.实例 (1)简单的用法 …

[附源码]计算机毕业设计小区物业管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Vector - VTESTStudio(软件篇) - CAPL实现MD5算法 - 01

OTA是当前车载行业非常热门的一个话题和研究方向,然而车辆又是跟大家的生命安全息息相关的一个日常工具,因此对于车辆升级的限制条件和安全阈值是我们不可避开的一个话题,今天我们来介绍一下对于文件的校验常用的一个算法MD5。 今天我们先来说下什么是MD5算法,这个…

Java基础:Object类、常用API

第一章 Object类 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。 如果一个类没有特别指定父类, 那么默认则继承自Object类。例如&#…

MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(一)MOSFET技术

MOSFET技术 1.器件类型 2.MOSFET模型 3.MOSFET关键参数 4.开关应用 5.开通过程 6.关断过程 7.功率损耗 8.寄生器件的影响 双极晶体管和 MOSFET 晶体管的工作原理相同。从根本上说,这两种晶体管都是电荷控制器件,这就意味着它们的输出电流与控制电极在半…

4.1 一个简单的Linux Kernel模块

Linux内核包含非常多个组件,但不同的应用场景下需要打包的组件也不尽相同,更何况我们常常因为一些iot设备本身硬件资源有限,为了物尽其用要对内核组件进行裁剪。例如,对于路由器设备来说,我们再在打包Linux 内核时并不需要打包BT等驱动模块。Linux提供了一种称之为模块-Mo…

《MySQL实战45讲》学习笔记

《MySQL实战45讲》学习笔记 [TOC] 《MySQL实战45讲》学习笔记《MySQL实战45讲》学习笔记01.基础架构:一条SQL查询语句是如何执行的02.日志系统:一条SQL更新语句是如何执行的更新语句的执行流程重要的日志模块:redo log重要的日志模块&#x…

Mali GPU“补丁缺口”让 Android 用户容易受到攻击

©网络研究院 Arm 的 Mali GPU 驱动程序中的一组五个可利用漏洞在芯片制造商修补它们几个月后仍未修复,可能使数百万 Android 设备面临攻击。 来自谷歌、三星、小米、Oppo 以及其他手机制造商的设备目前受到影响,正在等待修复程序到达用户手中。 …

HTML爱心照片墙源码

HTML爱心照片墙源码 css charset "utf-8"; * {padding: 0;margin: 0; } div {font-family: "微软雅黑";font-size: 14px;color: #666;padding: 0;margin: 0;; } body,html{background: black;height: 100%; } /*css3实现照片墙的样式*/ .container {widt…

Java毕业设计 基于SSM的网上图书商城系统

对于传统书店来讲,利用计算机软件技术开发一款图书商城也会让书店员工省事不少,这个图书商城能让书籍信息还有注册用户信息,以及书籍订购等内容通过一个网络平台完全展示出来,让网站用户只要登录进去图书商城就可以查看所有的内容,用户可以查看新闻以及书籍产品及时更新的信息,…