自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 硬件统计采样PMU和SPE

触发PMU中断到内核中断处理,调用PMU driver然后将record通过软件写入buffer这些过程是比较耗时耗CPU执行cycle的。为了避免对正常应用/系统的性能影响,这种方式不能将采样频率设置太高。利用perf tool的’perf record‘可以获取这些信息。

2024-03-15 15:04:24 528 1

原创 VCS编译命令

VCS的仿真选项分编译(compile-time)选项和运行(run-time)选项。

2024-01-20 11:12:12 1152 1

原创 c++之深浅拷贝

(String, Number, Boolean, Null, Undefined,Symbol)和。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。在栈中存储了指针,该指针指向堆中该实体的起始地址。

2024-01-15 16:08:47 366 1

原创 UVM框架的理解

uvm_component就是由其搭建成的一种高级生命,而sequence_item则是由其搭建成的血液,它流通在各个高级生命(uvm_component)之间,sequence则是众多sequence_item的组合,config则是由其搭建成的用于规范高级生命(uvm_component)行为方式的准则。从uvm_object派生出了两个分支,所有的UVM树的结点都是由uvm_component组成的,只有基于uvm_component派生的类才可能成为UVM树的结点;

2023-10-20 16:25:47 201 1

原创 一些汇编指令

看redboot的启动代码时,发现了很多地方使用了.MACRO这种宏定义,觉得类似C++里面的内联函数(C语言的宏定义成函数的对于新人来说可能不常用)。PS:形式参数只是一个标识符,他会在宏展开或者宏调用时被逐个展开,形参的定义也必须按照全局变量定义的。用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。2. 体: 这里包含的是当这个宏被调用时所需要执行的指令或者语句。.ascii和.asciz的区别是,.asciz会在字符串后自动添加。规则,形参不能为(%)。

2023-09-21 10:40:49 265

原创 AXI协议

●若hit,则CPU直接从Cache中读取数据即可。●若miss,有两种处理方式:>Read through,即直接从内存中读取数据;>Read allocate,先把数据读取到Cache中,再从Cache中读数据。●若hit,有两种处理方式:>Write through:把数据同时写到Cache和内存中;>Write back:先把数据写到Cache中,再通过flush方式写入到内存中。

2023-08-10 17:04:31 684 1

原创 单核SOC系统设计

首先,cpu把这个字节从适配卡读到内部寄存器,然后再从寄存器传送到内存的适当地址。串行外围接口,主要应用于EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和解码器。SPI接口在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,全双工通信,速度总体比I2C快。通常cpu对其编程,一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU。1.对DMA控制器编程,写入数据要到达的内存地址和要传送的字节数;带bootrom的AHB接口的片上SRAM,可用于存储程序和数据。

2023-07-24 14:39:41 83

转载 UVM之phase

run phase发生在start_of_simulation阶段之后,用于激励的产生和testbench的监测和检查。run phase作为一个task实现,所有uvm_component的run phase都并行执行。测试台组件层次结构。在start_of_simulation phase之后,UVM并行执行run phase和pre_reset phase到post_shutdown phase。调用run_test()会构造UVM testbench根组件,然后启动UVM phase。

2023-06-27 17:23:05 545

转载 CPU组成原理基本概念梳理

1.字节8位二进制代码表示一个字节byte2.字-存储字计算机字长32位,64位,就是4个字节,8个字节3.数据字一个数就是一个存储字指令字一条指令就是一个存储字机器字长计算机一次能直接处理的二进制位数半字长字长等于半个机器字长双字长字长等于两个机器字长4.操作码不同指令操作码不同地址码参与操作的操作数的地址码5.操作码编码固定长度操作码:如果一共64条则需要6位二进制编码表示程序运行状态的一个二进制位序列。

2023-06-12 16:12:13 437 1

原创 ACE总线定义的缓存行状态

Clean, Dirty 干净时,缓存不负责更新主内存。脏的时候,相对于主内存,高速缓存行已被修改,并且此高速缓存必须确保主内存最终被更新。Unique, Shared 当唯一时,缓存行只存在于一个缓存中。共享时,缓存行可能存在多个缓存中,但这不能保证。Valid, Invalid 有效时,缓存行存在于缓存中。无效时,缓存行不存在在缓存中。ACE 协议定义了缓存状态。每个高速缓存状态都基于高速缓存行特性。

2023-04-17 09:59:20 212

转载 【总线】【PCI】【PCIe】【转】配置空间

和PCI并行总线不同,PCIe的总线采用了高速差分总线,并采用端到端的连接方式, 因此在每一条PCIe链路中两端只能各连接一个设备, 如果需要挂载更多的PCIe设备,那就需要用到switch转接器。PCIE设备的访问离不开其Bus,Dev,Fun的编号方式,如下图寄存器所示,Bit[23:16]用来存放Bus号,共8Bit,因此解释了上述表述为何一共有256条Bus,Bit[15:11]存放Dev,共5bit可存32个Dev,Bit[10:8]存放Bus,共3Bit可存8个Fun。

2022-09-02 16:21:51 1158

原创 RISCV中断异常

指令的PC值不对齐,会造成取指令不对齐错误。进入异常后,程序跳入相应中断服务程序中后,软件强行改写mstatus中mie改为1,再次打开。1.软件必须使用mret指令,然后硬件停止当前程序流,调到mepc里定义的pc地址去执行。这几个域的属性为只读,软件无法直接写这些域改变其值,只有中断源头被清除后才会相应归零。riscv架构中定义了csr寄存器机器模式中断使能寄存器mie来控制中断的屏蔽。2.读写数据访问的地址属性错误,如访问了只读的,会被MPU或MMU定位出。去执行mtvec寄存器里定义的PC地址。..

2022-09-01 10:49:09 1777

原创 ROM,RAM缓存内存傻傻分不清

RAM random accsess memory 可读可写,掉电数据就没了,分为sram和dram。ROM read only memory只读存储器,只能读不能写,掉电数据也在。dram需要动态刷新,因为电容放电的原因过一会得刷新一下,用作计算机内存。sram不需要动态刷新用作CPU的一二级缓存。...

2022-08-17 16:59:31 254

转载 Cacheable VS Non-Cacheable

不同的处理器平台对于non-cacheable的处理办法也是不一样的,在高级CPU里,一般在运行中,动态地采用页表的方式来标记某些内存是否是non-cacheable的,例如Linux内核里的有个常用的函数叫ioremap,在访问外设的时候经常会用到,它的作用是映射外设的物理地址到虚拟地址空间给内核驱动程序使用,在映射时,会将寄存器地址页表配置为non-cacheable的,数据直接从外设的地址空间读写,保持了数据的一致性。case4考虑双cpu的运行环境(不是双核)。...

2022-07-28 09:25:10 1203

转载 DMA/TCM/CACHE

这是ARM5TE引入的特性,目的是通过这一快速的存储区,一方面提高某些关键代码(如中断处理函数)的性能,另方面使存储访问延迟保持一致,这是实时性应用所要求的。TCM对于以下几种情况的代码是非常有用、也是需要的可预见的实时处理(中断处理)、时间可预见(加密算法)、避免cache分析(加密算法)、或者只是要求高性能的代码(编解码功能)。TCM是一个固定大小的RAM,紧密地耦合至处理器内核,提供与cache相当的性能,相比于cache的优点是,程序代码可以精确地控制什么函数或代码放在那儿(RAM里)。......

2022-07-27 16:00:03 330

转载 TLB缓存虚拟地址和其映射的物理地址

TLB是translationlookasidebuffer的简称。首先,我们知道MMU的作用是把虚拟地址转换成物理地址。虚拟地址和物理地址的映射关系存储在页表中,而现在页表又是分级的。64位系统一般都是3~5级。常见的配置是4级页表,就以4级页表为例说明。分别是PGD、PUD、PMD、PTE四级页表。在硬件上会有一个叫做页表基地址寄存器,它存储PGD页表的首地址。MMU就是根据页表基地址寄存器从PGD页表一路查到PTE,最终找到物理地址(PTE页表中存储物理地址).TLB其实就是一块高速缓存。......

2022-07-27 15:10:38 758

原创 覆盖率收集

1.收集覆盖率可以使用vcs、ius两种工具,vcs对应的覆盖率分析工具是dve,ius对应的覆盖率分析工具是imc;dve的打开方式是;其中vdb文件是跑出来的覆盖率收集结果文件VCS在仿真过程中,也可以收集CoverageMetric。其中覆盖率类型有包括control_flow和value两部分的coverage,line_coverage,branch_coverage,toggle_coverage,FSM_coverage。CoverageDatabase的产生使用工具。...

2022-07-27 11:48:04 4654

原创 内存一致性

首先说一下TSO模型在CPU与L1Dcache之间引入storebuffer,每个CPU核内专属一个storebuffer,写数的时候,数的更改值先存放在各自的storebuffer中,对方的核读取时读的还是原来未更新的值,但是本核内读取时可以读到更新值。紧接着在TSO基础上衍生出PSO模型在支持store-load就可以被对方核看到可以是load-store这种乱序基础上可以支持store-store这种乱序。risc-v模型典型代表,fence,amo,LR\SC。...

2022-07-26 20:16:54 430

空空如也

空空如也

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

TA关注的人

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