- 博客(23)
- 收藏
- 关注
原创 memcpy中使用AVX指令集可以让cpu操作内存的粒度扩大
内存对齐:上述代码使用的是未对齐加载和存储指令(_mm256_loadu_si256 和 _mm256_storeu_si256),即便地址未对齐也能正常工作,但性能可能会受到一定影响。例如,在 64 位系统中,可能会一次复制 8 字节的数据,减少 CPU 访问内存的次数,从而提高复制效率。当一次复制多个字节的数据时,这些数据可能会被一次性加载到缓存中,后续的访问可以直接从缓存中获取,减少了从主存中读取数据的次数,提高了访问速度。例如,在某些架构中,对齐的内存访问比非对齐的内存访问速度更快。
2025-04-10 09:29:59
565
原创 CXL中Dynamic Capacity Device (DCD)简介
主机可以在任何时候,在没有收到 Release Capacity Event Record(释放容量事件记录)的情况下,通过调用 Release Dynamic Capacity 命令(参考章节 8.2.10.9.9.4),并在命令中提供一个包含特定要释放容量的 Extent List(Extent List),将动态容量释放回设备。Extent List基于设备物理地址(DPA),单个列表可描述所有Region的范围,主机获取的Extent List包含设备分配给主机的每个范围的起始 DPA 和长度,
2025-04-09 15:59:59
689
原创 CXL中LD-FAM简介
MLD 的资源划分与设备类型:type3 型多逻辑设备(MLD)可将资源划分为最多 16 个隔离的逻辑设备(LD),每个 LD 通过 LD-ID 在 CXL.io 和 CXL.mem 协议中识别。对虚拟层级(VH)可见的每个 LD 都作为 3 型设备运行,且 LD-ID 对访问 VH 的软件透明。由于 LD-ID 功能仅存在于上述两种协议中,MLD 仅限于 3 型设备。LD 的分配与 FM 的作用:MLD 有一个 LD 预留给管理器(FM),最多 15 个 LD 可供主机绑定。
2025-04-09 15:58:01
894
原创 如何使用devmem及mmap直接访问物理内存
devmem 是一个在 Linux 系统下用于直接访问物理内存的命令行工具,它能让用户在用户空间对指定的物理内存地址进行读写操作。
2025-04-09 15:28:37
239
原创 CXL中的mailbox通信架构实现
本节参考了CXL2.0协议中8.2.8节,mailbox的相关寄存器的描述,及8.2.9中对command接口定义,还有7.6.8中FM模块的命令格式,对通过mailbox对FM模块的配置机制进行了梳理。IPC是一种确定的可以替代的实现方案,基于pcie或cxl.io的特性都可以实现,在支持pcie或cxl的设备环境可以进行一定的demo验证。此命令为每个LD设置内存分配。可以将一个memory地址作为doorbell标志,映射到bar4空间,或者选取bar2中的一个固定地址也可以,根据实际情况而定。
2025-03-14 14:21:29
862
原创 msi中断开发流程
当Mask Bits字段的相应位为1时,如果PCIe设备需要发送对应的中断请求时,Pending Bits字段的对应位将被PCIe设备的内部逻辑置1,此时PCIe设备并不会使用MSI报文向中断控制器提交中断请求;当系统软件将Mask Bits字段的相应位从1改写为0时,PCIe设备将发送MSI报文向处理器提交中断请求,同时将Pending Bit字段的对应位清零。该字段保存的数值与处理器系统相关,在PCIe设备进行初始化时,处理器将初始化该字段,而且不同的处理器填写该字段的规则并不相同。
2025-03-14 14:08:17
516
原创 CXL中Global-Fabric-Attached Memory(G-FAM,全局结构连接内存)简介
MLD 为每个主机 / 对等接口(LD)有单独的设备物理地址(DPA)空间,而 GFD 有一个对所有主机和对等设备通用的 DPA 空间GFD 解码器主机物理地址(HPA)转换为 DPA为创建共享内存,可将两个或更多 HPA 范围(来自不同请求者)映射到相同 DPA 范围。
2025-02-27 10:04:20
537
原创 petalinux设备树修改
petalinux_project\components\plnx_workspace\device-tree\ 目录下的设备树是软件自动生成的,最好不做修改,xilinux提供了一个用户设备树,该设备树为:petalinux_project\project-spec\meta-user\recipes-bsp\device-tree\files\system-user.dtsi。2、执行petalinux-build -c device-tree -x cleansstate清理设备树编译状态。
2023-07-13 16:11:18
1497
1
原创 petalinux产生的镜像文件说明
这个文件是由petalinux-package --image 打包kernel rootfs device-tree这个三个文件合成的image.ub文件,也就是说,当你启动mpsoc的时候,你最终只需要两个文件BOOT.bin image.ub。PMU的配置文件,但这个不是必须的,用户是可选的,MPSOC有LPD.FPD.PL三路电源轨,PMU是为了更好的管理电源和控制功耗,一般情况下,大部分客户不需要修改这个elf文件,这个文件不是制作BOOT.bin必须要的。
2023-07-12 09:43:19
379
1
原创 petalinux jtag启动失败
执行 petalinux-boot --jtag --prebuilt 3报错。概念:ATF(ARM Trusted firmware)修改完成,重新boot即可。
2023-07-04 13:15:46
408
原创 基于petalinux的vitis开发流程
本文主要说明petalinux从工程创建到加载xsa到编译启动的步骤,以及vitis软件开发步骤。环境基于ZYNQ UltraScale+ MPSoc EG系列,默认petalinux及vitis已安装完毕。本文示例版本:vitis名词解释Workspace:当打开Vitis软件平台时,创建workspace,用来存储工程数据。Platform:是硬件部件(XSA)和软件部件(BSP,FSB等)的集合。
2023-07-04 10:18:50
2255
1
原创 vmware中创建qemu的嵌套虚拟化问题
在控制面板---程序---启用或关闭Windows功能,然后将所有关于Hyper-V的功能全部关闭。以下图片的红框部分以及继续下滑的虚拟机平台选项。打开 Windows 安全中心 --- 设备安全性 --- 内核隔离 --- 内核隔离详细信息,然后将内存完整性保持关闭。问题发生场景为在虚拟机中嵌套使用虚拟机,因此不光物理机要支持虚拟化,同时虚拟机也要支持虚拟化,即嵌套虚拟化问题。
2023-06-29 10:28:46
2774
1
原创 petalinux工程创建启动
最新本文主要说明petalinux从工程创建到加载xsa到编译启动的步骤,以及vitis软件开发步骤。环境基于ZYNQ UltraScale+ MPSoc EG系列,默认petalinux及vitis已安装完毕,安装过程后面会单独出一篇教程。另一种方式,从BSP文件创建工程,不在本文说明。
2023-06-15 10:32:35
552
1
转载 实例讲解linux压缩命令
实例讲解linux压缩命令Linux压缩打包命令使用方法 tar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指
2011-09-19 21:52:50
318
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人