自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Verdi波形中添加结构体类信号

Verdi波形中添加结构体类信号。

2024-05-31 10:41:08 117

原创 RISC-V:Svpbmt扩展,基于页的存储类型

其次,如果 vsatp 的模式不为 0(即在 Sv39/48/57/64模式下),非0级的 VS-satge (第一级)PTE 的PBMT将覆盖中间级属性,从而生成最终访问该页的属性;首先,如果 hagtp 的模式不为 0(即在 Sv39/48/57/64模式下),非0级的 G-stage(第二级)PTE 的 PBMT会覆盖 PMA 中的属性成为中间级属性;否则 PMA 的属性为中间级属性。当 PBMT 设置将 memory page 覆盖为 I/O 属性时(或反之),对该页的内存访问将遵循最后有效属性。

2023-10-27 11:27:24 742

原创 RISC-V 虚拟存储系统(文档阅读学习)

RISC-V 虚拟存储系统相关内容,主要来自RISC-V特权手册第五章和第九章。

2023-09-28 15:13:53 2210 3

原创 Verilog 仿真调度机制

Verilog 在仿真时,所有的进程并行同时执行,其顺序是是随机的,仿真器可以根据自己的原则安排它们的执行顺序。这并不违背 Verilog 语言的并发性,因为在当前所有进程执行完毕之前,仿真时间是不会向前推进的。执行一个进程时,遇到一个事件语句(“@”)、延时语句(“#”)或其他等待语句时,该进程将被挂起。直到“事件发生”、“已经过延时的仿真时间”或“等待语句的表达式为真”,进程被重新激活。在一个仿真时刻,只有当前仿真时刻的所有事件全部执行完,仿真时间才会向前推进。

2023-09-01 17:13:31 250

原创 UVM :sequence使用config_db与组件传递参数

由于sequence set 的时间不固定,因此可能出现其他组件 get 时还没执行 sequence 中的 set 语句,因此需采用 wait_modified。它会检测本次 get 的参数是否被 set 过,如果没有就一直等待,直到检测到参数被 set。

2023-09-01 17:07:40 612

原创 RISC-V vector扩展

RISC-V 向量扩展

2023-07-07 17:33:59 1757 1

原创 【计算机体系结构量化与研究方法笔记】

计算机体系结构量化阅读笔记

2022-09-12 17:09:20 608 1

原创 Interleaving

利用单端口存储模拟多端口的结构

2022-08-15 19:57:59 354

原创 浮点数的无损定点化

浮点数的无损定点化

2022-07-20 10:49:01 932

原创 RAS:返回地址堆栈

参考:大金哥的超标量处理器学习笔记之4——分支预测 - 知乎 (zhihu.com)每条Call指令每次调用子程序(如某个函数)是固定的,因此对应目标pc固定可用BTB进行预测。但对于子程序可能很多地方都需要调用它,故返回的地方会发生变化,但是return指令的目标地址总是最近一次执行call指令的下一条指令,如下图所示情况。因此可设计一个后进先出存储器(LIFO)保存最近执行call指令的下一条指令地址,该存储器和堆栈的工作原理一样,称为返回地址堆栈(RAS)。...

2022-03-02 14:57:21 1031 1

原创 The Agree Predictor(1997)

旨在减少分支干扰/别名/混叠。以前减少干扰的三种方法:(1)增大预测器大小;(2)选取一种更有效利用PHT项的索引方法(如gshare);(3)分离不同类别的分支,对其使用不同的预测方案,从而避免发生干扰。上述三种方法都侧重于减少整体干扰以减少负面干扰,agree预测器不同于上述方法,而是试图将负面干扰转换为其他干扰。在agree预测器(如图8所示)中,我们向每个分支(例如,在指令缓存或BTB中)附加一个偏置位,以预测分支最可能的结果。2位计数器不是预测给定分支的方向,而是预测分支是否会朝偏置位

2022-01-25 10:31:53 2887

原创 Piecewise Linear Branch Prediction(2005)

一种理想化的分支预测器,它开发一组线性函数,每一条程序路径都对应一个被预测的分支,将“taken”的分支与“not taken”的分支分开。所有这些线性函数合在一起构成了一个分段线性决策曲面。...

2022-01-24 21:29:37 2177

原创 2bc-gskew:De-aliased hybrid branch predictors(1999)

混合预测器:包括 X 个预测器和一个元预测器,每个预测器组件提供一个预测,元预测器选择一个作为最终预测。理想情况下,一个混合预测器应由于其所有组件。2bc-gskew branch predictor:将e-gskew和一个双模态分支预测器相结合,包括四个同样的 bank,即e-gskew中的3个bank加上一个元预测器。1 分支别名/混叠(aliasing)1.1 什么是分支别名/混叠(aliasing)多组分支信息向量共享预测表中的同一项,导致这些分支预测相互干扰。1...

2022-01-23 17:25:23 548

原创 The YAGS Branch Prediction Scheme(1998)

YAGS:Yet Another Global Scheme在PHT中引入了 tags ,在不牺牲关键分支结果信息的前提下减少混叠。两级自适应的全局预测策略对整数程序效果最好,因为整数程序中由大量的 if-else 指令,而这些if-else指令通常高度相关。限制上述策略预测率的主要问题是通过历史和地址位映射到PHT中同一项,即混叠。本文中将混叠分为如下两种:中性混叠:具有相同信息但结果不同的分支发生混叠。 破坏性混叠:具有不同信息且结果不同的分支发生混叠。1 之前的工作中降低混叠的方.

2022-01-22 12:15:04 3327

原创 关于定位一个“Segmentation fault”问题位置的...

对CBP的代码进行了简单的修改,修改后先是跑了单独的TAGE版本,非常顺利,没有任何问题,顺利到那天一整天我都开开心心精精神神。事情是从去掉SC注释的那一刻开始发生变化,去注释——Ctr+s——make——run xx.sh——如果程序崩掉有声音的话,大概和一整天的开心戛然而止刚打好气的气球猝不及防从手里飞出去时“噗piu~~~”的声音一样吧。=_=恭喜您,喜提“Segmentation fault”一只。Fine!甜皮鸭偷偷看四下无人对着不会说话的屏幕啐了一口。屏幕里的BUG笑嘻嘻。嘻嘻。

2021-11-11 20:47:13 584 1

原创 CBP2016 Simulation Infrastructure(含代码和trace链接)

原链接:https://jilp.org/cbp2016/framework.html下载的文件中包括:sim, scripts, traces, bin, and results1、sim路径下:make clean;make2、scripts路径下:./doit.sh原始文件中好像是选择的“random”两句,跑所有的trace时需要改一下,把run all的两句取消注释。可以选择是否执行这句,和gshare的结果进行对比。...

2021-10-30 21:38:26 487 5

原创 预测饱和计数器中的迟滞位(hysteresis bit)

迟滞位的提出则是基于以下思考:一直以来在大多数分支预测器的设计中默认使用 2-bit 饱和计数器进行预测。之所以选取2-bit,是因为使用2-bit预测效果比一位更好,而使用超过2-bit也并不能获得可观的改进效果。是否存在一个k-bit 的计数器,其中1<k<2,其预测效果不逊于2-bit计数器,例如,一个1.4-bit的计数器。当然,不可能实现一个1.4位的计数器,但如果几个计数器共享某些位,从开销上来讲二者是一致的。 2-bit 计...

2021-10-15 21:19:35 949

原创 Store-Load-Branch (SLB) Predictor:A Compiler Assisted Branch Prediction for Data Dependent Branches

本文(2013 HPCA)的工作基于如下观察:H2P分支通常与一些程序数据结构如数组、链表、树有关,且遵循类似于清单1中所示的 store-load-branch 执行顺序,即当新建或更新数据结构时,一系列存储空间被些(store),遍历数据结构时,这些位置被访问(load),然后被用于判断条件分支(branch)。Critical Tips1.不依赖于分支历史信息预测,而是直接根据数据计算一个分支跳转方向标志。2. load指令的数据在分支指令取指前不可获取,因此直接用store指令的数..

2021-09-08 17:02:59 316

原创 Fast Path-Based Neural Branch Prediction(2003 MICRO)

提出该预测器的原因:以往的神经分支预测器由于复杂计算导致访问延迟过高。该预测器的优势:延迟远低于以前的神经预测器;预测准确率高于以前的预测器。该预测器的特点:由于分支结果与路径历史和模式历史都具有强相关性,因此该预测器使用沿到该分支的路径动态选择的神经元(权重)来预测分支。A Path-Based Neuran PredictorA. 基于感知器的预测器变量符说明::所用历史长度;:权重表项数;:权重表;:历史移位寄存器,其中每一项为taken或not_taken;

2021-09-06 20:37:22 247

原创 Bias-Free Branch Predictor(2014 MICRO)

文章主要工作从分支历史中剔除有偏向支 从分支历史中剔除同一分支的大量实例 Bias-Free Neural Predictor(BF-Neural) Bias-Free TAGE Predictor(BF-TAGE)剔除有偏分支的原因一个分支若要与另一个分支建立有效关联,则该分支方向的变化一定对另一个分支的方向有所影响。对于有偏分支,这类分支总是朝着一个方向预测(taken或not-taken),因此不存在由于其方向变化而对某个分支方向产生影响,也就不能与某个无偏分支建立相关性。限制预.

2021-09-01 21:29:34 333

原创 A Survey of Techniques for Dynamic Branch Prediction(2018)

1 分支预测的基础知识分支预测的tradeoff:准确率、延迟、存储开销、功耗(power)分支的分类:条件分支和非条件分支、直接或非直接(直接指目标地址在指令中指出,非直接指目标地址在内存或寄存器中)Aliasing(混叠):当大量不相关分支使用预测器表中的同一表项时,就会造成干扰,称为aliasing(有的地方翻译成分支别名,如下图所示例。有正混叠(positive aliasing)和负混叠(negative aliasing),负混叠会造成错误预测,通常负混叠的频率和幅度都高于正混叠,尤

2021-08-31 10:06:25 575

原创 Wormhole: Wisely Predicting Multidimensional Branches(2014 MICRO)

wormhole side-predictor 针对的是嵌套循环中难以预测的分支。这类循环分支的特点是其方向和外层循环先前迭代中的分支结果有关,而不是内部循环中最近的分支结果。因此这样一个分支的方向流看起来是不规则的,把模式看作连续的时难以预测。这种交叉迭代行为激发了对分支预测器如何管理局部历史的重新思考:作者建议将历史表示为多维矩阵而不是线性向量。WH所针对的分支特点图1是对这类分支的举例:B1每次执行的方向与上次外循环迭代中该次内循环的分支方向相同(因为外循环没有影响内循环的判断条..

2021-08-25 22:12:08 179

原创 The Inner Most Loop Iteration counter: a new dimension inbranch history(2015 MICRO)

global branch historyglobal path history文献 [1] 中描述了这两种历史与分支结果的相关性。IMLI-based 预测器组件(The Inner Most Loop Iteration):利用多维循环中分支结果的相关性。可以使用最内层循环迭代 (IMLI) 计数器在取指令时有效地监视应用程序中最内层循环的迭代索引。而一些分支的结果与IMLI计数器的数值强相关。The Wormhole Predictor(WH)循环预测器[4]:对于由确定迭代次.

2021-08-25 11:14:48 213

原创 “Branch prediction using both global and local branch history information”(2002)

分支预测策略分为静态分支预测和动态分支预测,静态分支预测通过检查程序行为和利用程序早期执行收集到的信息预测分支;动态分支预测使用程序执行时的执行历史进行预测。饱和计数器预测器两级自适应预测器PAg(基于local history),GAg(基于global history),gshare [1](基于global history)第一级历史存储在branch history register(BHR),记录最近执行分支的结果;第二层存储在pattern history table(PHT.

2021-08-23 21:34:06 90

原创 Branch Prediction Is Not A Solved Problem:Measurements, Opportunities, and Future Directions(IISWC)

虽然亩日安最先进的预测器在大多数静态分支上几乎达到了完美的预测精度,但生于错误预测的修正仍能带来极大的性能提高。目前,错误预测主要来自于:(1)一部分系统上难以预测的分支(H2P);(2)动态执行次数很少的罕见分支。使用来自SPECint 2017的数据和额外的大代码占用空间应用,文章中量化了这两种分支的出现和对IPC的影响,证明了增加资源提供给现有的分支预测器并不能单独解决大多数错误预测的根本原因。此外,文中提出新的研究方向,例如,部署机器学习以改进 H2P 的模式匹配,并使用片上相位学习(ph.

2021-08-17 18:04:18 369

原创 ITTAGE分支预测器 “A 64-Kbytes ITTAGE indirect branch predictor”

ITTAGE:Indirect Target TAgged GEnometric legnth predictor。provider component:最终提供预测。ulternate prediction(altpred):provider component发生miss时提供预测。原文:“We define the provider component as the predictor component that ultimately provides the predi...

2021-08-15 21:21:12 825

原创 针对间接分支的比特级感知预测器BLBP “Bit-level Perceptron Prediction for Indirect Branches”(2019 ISCA)

间接分支预测器:ITTAGE[3]、基于VPC的分支预测器、call/return 堆栈预测过程返回目标地址[2]。背景:面向对象编程中存在许多间接分支指令。多态性(polymorphism)使用通过间接分支实现的动态分派函数调用来支持动态子类型,间接分支在虚函数调用中是必要的。大约28%的分支误预测是来自间接分支[1]。除了虚函数调用, 间接分支在switch-case语句、跳转表、函数指针调用、过程返回和接口调用中也广泛使用。其本质上比条件分支(conditional branch)更难预.

2021-08-12 18:01:16 1190

原创 TAGE-SC-L预测器 “TAGE-SC-L Branch Predictors”(2016)

TAGE-SC-L是将TAGE和简单的辅助预测器统计校正器(statistical corrector简称SC)和循环预测器(loop predictor简称L)相关联,比单个的TAGE更为有效。存储预算在32Kbits存储预算下,TAGE预测器使用大部分存储预算,只有非常有限的存储预算可以给辅助预测器。在CBP-4 trace下性能达到3.315MPKI。 在256Kbits存储预算下,可以实现具有TAGE预测器循环预测其LP和相当复杂的统计校正器SC。在CBP-4 trace下性能达到2.36

2021-08-11 19:54:53 3837

原创 基于CNN的预测器 “BranchNet: A Convolutional Neural Network to Predict Hard-To-Predict Branches”(2020)

基于CNN的预测器

2021-08-11 19:53:03 394

原创 基于感知器的预测器 “Dynamic Branch Prediction with Perceptrons”(2000)

Aliasing:发生在两个不相关的分支通过使用相同的预测资源破坏性地干扰时。为什么采用感知器:基于感知器的预测器适用于线性可分分支类别,程序往往有许多线性可分的分支,这种预测器适合作为混合预测方案的一个组成部分,与传统预测器一起工作。 相比传统预测器:两级方案,使用快速感知器代替两位计数器。理想情况下,每个静态分支都分配有自己的感知器来预测其结果。传统的两级自适应方案使用两位饱和计数器的模式历史表(PHT),由存储先前分支结果的全局历史移位寄存器索引。该结构将历史寄存器的长度限制为计数器数量的对数。

2021-08-11 19:50:56 757

原创 L-TAGE预测器 “A 256 Kbits L-TAGE branch predictor”

在实际中,预测器使用的历史长度集首先通过几何级数来获得,然后再通过细化确定,不过这些改进能获得的精度方面的益处有限。结构特点由一个13-component TAGE预测器和一个256-entry 循环预测器(loop predictor)组成。 预测器组件由以下信息索引:PC,全局分支历史ghist(包括无条件分支),16-bit路径历史phist(包括每个分支1地址位)。 对于256Kbits的预测器,13-component达到了最大精度。 循环预测器用于识别具有恒定次数迭代的规则循环。当

2021-08-11 19:47:02 620

原创 TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”

结构特点使用几何级数的历史长度和部分标记。 T0是基础预测器,Ti由3-bit计数器(pred)、2-bit u、tag-bit组成。 USE_ALT_ON_NA:在部分程序中,对新分配的项使用altpred预测更有效,使用该4-bit计数器在全局上动态监测这一特性。 若一项的预测计数器是弱的则认为它是新分配的。预测如果预测计数器不是弱的或者USE_ALT_ON_NA是无效的,则采用正常最长匹配的组件进行预测,否则使用altpred。预测器更新Provider compone...

2021-08-11 19:46:35 1180

原创 O-GEHL预测器 “Analysis of the O-GEometric History Length branch predictor”

结构特点由多个预测表组成,每个表由PC和不同长度的历史和指令地址共同索引。其中历史长度呈几何级数,即。 最终的预测通过加法树得出。 在GEHL的基础上增加动态历史长度自适应和阈值调整预测预测器表将预测结果存储为符号饱和计数器 。 预测跳转取决于计数器之和S的符号,若S≥0则跳转,否则不跳转。 预测器更新在预测错误或|S|小于阈值时更新 。 预测正确时 递增,否则递减。...

2021-08-11 19:44:11 569

原创 PPM-like 预测器 “A PPM-like, tag-based branch predictor”

结构由多个banks组成。 第一个bank是一个基础预测器(一个双模态预测器),单由PC索引,包括3位的饱和计数器和1位的m bit,m表示meta-predictor即元预测器。 其余banks由PC和不同长度的全局历史位共同索引,每一项包括3位饱和计数器、8位tag和1位的u bit。u bit表示useful entry, 其余banks中PC和全局历史一方面hash确定索引哪个bank(图中的10bit),另一方面hash确定索引bank中的哪一项(图中的8bit)。 当全局历史位...

2021-08-11 19:35:11 649

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除