- 博客(53)
- 资源 (2)
- 收藏
- 关注
原创 论文解读--NeoMem: Hardware/Software Co-Design forCXL-Native Memory Tiering
为了充分发挥基于CXL的异构内存系统的潜力,需要高效的内存分层技术。然而,现有的内存访问分析技术分辨率低且开销高。本文提出了一个新颖的内存分层解决方案NeoMem,它通过硬件/软件协同设计,将内存分析功能加载到CXL设备端控制器中,集成了一个专门的硬件单元NeoProf。NeoProf: 一个集成在CXL内存设备控制器中的硬件单元,用于实时监控内存访问并提供关键的页面热度统计信息。内存分层: 根据访问频率将“热”页面放置在快速内存层,将“冷”页面放置在慢速内存层以最大化系统性能。
2025-02-04 10:30:00
171
原创 论文解读--eZNS: An Elastic Zoned Namespace for Commodity ZNS SSDs
业界一直都在这方面进行努力探索:在块接口扩展方面,NVMe 正在标准化 FDP 接口,它是多流接口基础上的进一步精细化演进;另外,键值存储接口、CXL 内存语义接口等给出了全新定义的 SSD。在闪存 SSD 得到越来越广泛应用的当下,面向过去,兼容传统的块接口和存储系统固然重要,但更应面向未来,针对闪存特征思考新型的接口设计与软硬件边界,构建极致高效的存储系统。它包含两个主要组件:管理控制平面上的区域分配和活动资源的区域仲裁器、具有读取拥塞控制的分层 I/O 调度程序以及数据平面上的写入准入控制。
2025-01-12 08:30:00
156
原创 论文解读--Integrated Host-SSD Mapping Table Management for Improving User Experience of Smartphones
论文概述:本文来自由Yoona Kim、Inhyuk Choi、Juhyung Park、Jaeheon Lee、Sungjin Lee和Jihong Kim共同撰写,发表在第21届USENIX会议上,主题是文件和存储技术。论文提出了一种名为Host Performance Booster (HPB)的技术,旨在通过利用未使用的主机DRAM内存来提高高容量移动闪存存储系统的性能,从而改善智能手机的用户体验。
2025-01-06 08:30:00
28
原创 通过增加带宽|提供多种路径|设计新架构来提高SSD内部的并行性
接着探测包沿着路径回溯到先前遍历的路由器(即上游路由器),根据路由算法的适应性,探测包既可以尝试上游路由中的不同空闲输出链路,也可以进一步回溯(即上游路由的上游路由器)。如果探测包在回溯过程中无法找到空闲的链路,则探测包可以在不保留路径的情况下返回源闪存控制器。现代SSD采用多通道共享总线架构,在处理多个I/O请求期间经常发生路径冲突,而且I/O requests过程与GC过程由于系统资源的争用会相互干扰,极大限制了SSD的并行性、降低了SSD的性能。
2024-12-16 10:00:00
265
原创 论文解读--LLM in a flash: Efficient Large Language Model Inference with Limited Memory
大语言模型(LLM)的推理阶段,都是直接加载到DRAM中。这篇论文主要解决的问题是如何在有限的内存容量下高效地运行超出DRAM容量的大语言模型。该论文在两个关键领域进行优化:窗口化策略降低数据传输量,行-列捆绑存储增加从flash读取的数据块大小。这些方法使得模型可以在可用DRAM容量的两倍大小下运行,并且与CPU和GPU中的简单加载方法相比,推理速度分别增加了4-5倍和20-25倍。解决如何在有限的内存容量下高效地运行超出DRAM容量的大语言模型策略。解决LLM推理阶段直接加载到DRAM中面临的挑战。
2024-11-27 13:00:00
323
原创 嵌入式C/C++编译常见问题与分析
C语言显示“warning: no newline at end of file ”具体原因,是因为在文件尾必须的新增一行空行,以避免include文件时,展开后与后面的文件连为一行,造成错误。include 指示符告诉make暂停读取当前的makefile,而转去读取include指定的一个或多个文件,完成以后在继续当前makefile的读取。可能的原因: “Makefile可能是以命令行开始:以[Tab]字符开始,但不是一个合法的命令行(例如,一个变量的赋值)。或者,找到该符号,然后删除。
2024-11-22 11:00:00
1565
1
原创 Android系统器件级性能问题分析之二
ufs:ufshcd_clk_gating //gated clk的当前状态,状态包括(CLKS_OFF, CLKS_ON, REQ_CLK_OFF, REQ_CLK_ON) ufs:ufshcd_hibern8_on_idle //hibern8的当前状态,状态包括(HIBERN8_ENTER, HIBERN8_EXIT, REQ_HIBERN8_ENTER, REQ_HIBENR8_EIT)ufs:ufshcd_clk_scaling //ufshcd的clk的变化,从多少hz修改为多少hz。
2024-11-19 14:00:00
1508
原创 论文解读:Reinforcement Learning-Based SLC Cache Technique for Enhancing SSD WritePerformance
通过观察混合SSD的工作负载模式和内部状态,确定最佳 SLC 高速缓存参数,旨在改善使用QLC NAND的SSD的写入性能。热/冷分离阈值:考虑到SLC-to-QLC迁移成本,应尽量只在SLC区域写入频繁更新的“热”数据,其他“冷”数据直接写入QLC区域。热/冷分离阈值:应尽量只在SLC区域写入频繁更新的“热”数据,其他“冷”数据直接写入QLC区域。文章提出一种SLC缓存优化方案。详细介绍了基于强化学习(RL)的SLC缓存管理技术,旨在改善使用QLC NAND闪存的固态硬盘(SSD)的写入性能。
2024-11-18 10:00:00
432
原创 论文解读:A User-space I/O Frameworkfor Application-specific Optimization on NVMe SSDs
内核复杂的IO stack阻碍了NVMe/SSD的性能发挥,文章提出了一种用户空间的I/O框架NVMeDirect。本文将解读来自Proceedings of the 8th USENIX Workshop on Hot Topics in Storage and File Systems的论文,文章提供了代码实现: https://github.com/nvmedirect/nvmedirect/tree/master。IO completion作为一个独立的线程,使用轮询检查IO的完成情况。
2024-11-14 10:00:00
589
原创 基于性能跑分工具的ftrae测试分析系统
无论是进行性能优化,还是分析用户卡顿原因,IO latency分析都是定位原因的重要手段。传统的性能分析中,IO部分更多是针对耗时进行分析,只能解决常规问题。在日益细化的存储领域, 需要更加强大的IO性能分析系统。为此,设计针对各层的IO latnecy进行分析,也对“LBA pte” “IO s/l分析” “R/W/D分析” 等功能。搭配可视化图形工具,可以快速探查特定应用场景下device端的实际情况, 查看IO需求数量与IO Latency的分布,实现卡顿的原因分析与相关拆解。
2024-11-07 10:00:00
463
原创 Linux kernel之DDR注册加载与pattern测试
随着人工智能技术的不断发展,我们已经看到了它在各行业带来的巨大变革。DDR作为重要的存储器件,在AI场景中扮演重要角色。
2024-11-02 16:04:30
869
1
原创 内存管理技术系列之---页面替换算法
在内存管理中,常见的页面替换策略主要包括FIFO,LRU,Clock等。为保证系统一致性,它们又是如何实现的呢,一起来康康~
2024-11-02 08:00:00
1014
原创 块设备驱动实现--模拟一个块设备
其中,my_disk_queue = blk_mq_init_sq_queue(&tag_set, &my_blk_mq_ops, 16, BLK_MQ_F_SHOULD_MERGE);在5.4中块设备全面改成了blk_mq(多任务队列),所以相关的API都是和blk_mq有关系的,这个地方卡了好久好久,最终还是从z2ram.c中了解到的,后边io处理的队列也是参考z2ram.c来写的。但是,这里有个问题,将ko整机刷入后,会面临io调度导致的挂载失败问题, 需要进行修改。
2024-07-13 17:21:58
406
1
原创 Linux内核间通信共享变量使用
编译之后生成a.ko、b.ko,先加载b.ko,在加载a.ko,可以打印t=10。若先加载a.ko,,则会报错。在kernel 开发过程中,经常会用到两个ko间变量交互,本文罗列两模块间内存变量的共享使用。
2024-07-13 16:02:24
313
转载 提升文件IO性能的技巧
Linux的异步I/O操作提供了一种高效的I/O处理机制,允许应用程序在不阻塞的情况下发起和处理I/O操作,使用异步 I/O 可以帮助我们构建 I/O 速度更快、效率更高的应用程序。
2024-07-07 19:32:35
108
原创 嵌入式应用之FIFO模块原理与实现
FIFO在嵌入式应用的非常广泛,可以说有数据收发的地方,基本就有FIFO的存在。或者为了降低CPU负担,提高数据处理效率,可以在积累到一定的数据量之后,再一次性处理。在嵌入式系统中,FIFO是基于一维数组和结构体实现的循环队列(Queue),或者叫环形队列。可以分为同步FIFO或异步FIO,一般用于数据缓冲,或者不同时钟域之间的数据传递。使用一维数组来构造一个环形缓冲区,读写地址循环递增,分别实现FIFO初始化、读写操作、判断空满、获取元素个数等函数,并封装成模块。●FIFO为空时,不能执行读操作。
2024-06-10 16:29:23
687
原创 DDR内存测试程序--简单方案
当然了,肯定不止有2根数据线了,延伸到你有16位数据线,你写0xaaaa(1010 1010 1010 1010),如何能读到0xaaaa,说明你的硬件连线奇偶顺序是对的,因为奇数位都是0,偶数位都是1,错误也只能是第一位和第三位,或者第五位顺序跌倒。如果上一步过了,就写数据0b 1100 1100 1100 1100,即0xcccc,把相邻2根线合并为一组,来缩小奇偶范围,接着4根线合并为一组,8根线一组,测完就可以知道你的硬件布线是否出错了。memory测试流程框架。DDR内存读写测试程序。
2024-06-09 19:43:06
676
原创 论文解读-Victima: Drastically Increasing Address Translation Reachby Leveraging Underutilized Cache Reso
CVSS 包含三个关键组件:(1) CV-SSD,一种可以最大限度地减少写入放大并随着时间的推移优雅地减少其输出容量的 SSD;(2)CV-FS,用于弹性逻辑分区的日志结构文件系统;(3)CV-manager,一个用户级程序,根据存储系统的状态编排系统组件。本文设计了可变存储系统 (CVSS) 的设计和实现。通过允许存储容量随着时间的推移适度减少,从而在 SSD 的整个生命周期内保持高性能,从而防止故障缓慢症状。提出可变容量的存储系统,即改变可用的逻辑地址空间的大小,将不可用的块剔除出映射表。
2024-06-01 19:40:51
82
原创 论文解读-OPTR: Order-Preserving Translation and Recovery Designfor SSDs with a Standard Block Device Int
OPTR实现强崩溃一致性。OPTR设计了一种在兼容块接口的前提下,实现存储内部强请求一致性的控制器算法。
2024-06-01 19:37:58
119
原创 论文解读-Contiguitas: The Pursuit of Physical Memory Contiguity in Datacenters
Contiguitas-HW将正在被迁移的页分为源页和目标页,并将对页的访问正确重定向到对应的页中。如果页的属性从可移动变化为不可移动,则Contiguitas将其迁移到不可移动区,避免对可移动区的污染。采用算法动态调整不可移动区和可移动区的边界,确定不可移动区的大小。为了解决不可移动页带来的内存碎片问题,Contiguitas进行了三个方面的设计,如图6所示:① 让不可移动页只在不可移动区域被分配;其中③也可以用于可移动页的迁移,不需要执行费时的TLB shootdown,提高页迁移操作的可扩展性。
2024-04-20 18:54:52
391
原创 论文解读-ASAP: Fast Mobile Application Switch via Adaptive Prepaging
本文针对Android 系统的不友好机制,设计了新的swap策略。
2024-04-20 18:51:33
620
原创 .ini配置文件介绍与解析库使用
ini 文件是英文"Initialization"的缩写,即初始化文件。它用来配置特定应用软件以实现对程序初始化或进行参数设置。.ini文件由节(section)、键(key)、值(value)三种模块构成。在windows系统/嵌入式软件中有很多XXX.ini文件,例如System32.ini和Config.ini。
2023-06-04 18:52:39
3662
转载 VS code修改编码格式
在使用vs code(版本1.35.0)打开文件时,出现乱码问题,可通过如下方式设置:1、针对单个文件点击右下角的编码按钮(图中为UTF-8),然后选择操作,通过编码重新打开(Reopen with Encoding)
2021-06-07 09:45:36
3552
原创 初级程序员如何写项目周报和月报
初级程序员如何写项目周报和月报在刚入职的新人程序员生涯中,每月或者每周给项目经理写项目周报,或者项目进度汇报是必不可少的内容之一。作为一名职场老人(职场老油条),熟练运用专业术语把自己混乱的思想,进行质的飞升。下面,就开始我们的项目进度之旅。项目周报模板在这一周,我从刚入职对公司开发环境进行熟悉,和指导同志进行深度讨论后,本周的具体工作可简单描述为下面几个方面:本周熟悉开发流程后,并结合具体项目建立抓手意识。完成了初步的认知迭代梳理公司内部长期沉淀下的方法论在理解公司业务模型基础上熟悉团队
2021-04-21 19:20:28
5049
1
原创 算法设计与数据结构---课程设计
题目二【问题描述】这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑 15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。【要求】(代码需加注释)【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1 <..
2021-03-16 14:58:56
2739
原创 Gem5-NVmain混合存储系统仿真输出信息追踪
LRU(最近最少使用算法) and MRU(最近最常使用算法)Gem5-NVMain-OK 中的源代码,ma_lru.** 为修改后的混合内存缓存替换算法。【】 混合存储替换方案实验记录方法执行程序后,输出m5out内容,在此内容下m5out文件夹中需要关心的内容:I change the below command-line to change cache block size in“cacheline_size=...”.缓存命...
2021-03-14 23:37:13
706
1
原创 Cmder--windows下命令行终结者
作为CMD命令行的替代品,cmder是一款优秀的终端命令行工具。官网介绍如下:https://cmder.net/官方对该工具的解释:克除cmd复制粘贴的弊端,低效的用户UI,不能对历史记录保存,不支持命令扩展等功能。Cmder可以分屏多开窗口,可以设置窗口颜色,字体大小,并且很多快捷键和谷歌浏览器操作类似。安装 | 使用进入官网以后,有mini版和完整版,下载好解压文件包以后就可以使用。mini版: 功能简单,很小巧,只有4M多,主要是cmd和powershell ful
2021-01-31 13:24:20
344
原创 pow()函数调用报错解决
在编写程序时,使用<math.h>中的 pow( )参数使用不明确,显示如下:1>miulate.cpp(106): error C2668: “pow”: 对重载函数的调用不明确原因:因为pw() 函数有三种使用重载方法,VS工具,对语法检查更为严格,double pow(double _X, int _Y)float pow(float _X, float _Y)float pow(float _X, int _Y)long double pow(long do.
2021-01-25 21:29:50
6219
1
原创 实用Python语法实战编程练习
前言:本文主要罗列了Python常见语法,并对其实现方法进行说明,加以代码辅助,可以快速理解相关语法的学习。# -*- coding: utf-8 -*-"""Created on Sat Nov 21 15:35:56 2020@author: Administrator"""# 数据类型与运算符import mathprint(math.factorial(32)) #计算32的阶乘print(0.4-0.3==0.1) #实数一般不进行比大小print(math.
2020-12-13 09:44:42
956
3
原创 基于RDMA和NVM的大数据系统一致性协议研究
本文来源于《大数据》,作者吴昊,陈康等。摘要:分布式存储系统以及计算系统是构造大数据处理系统的基础。系统的高可用性是任何一个分布式系统的基石,高可用技术一般依赖于一致性协议。本文讨论了经典的非拜占庭的分布式一致性协议以及新技术发展下的RDMA通信协议与NVM存储介质,通过RDMA和NVM的结合获得了更高性能的高可用系统。改进了一致性协议,使其能够更好地利用RDMA与NVM的特性。实现的系统在保证系统数据一致和可用的同时,有效地提高了协议实现的性能。通过实验表明,相比于现有的系统,实现的系统.
2020-11-17 09:40:30
342
原创 今日校园--自动化打卡签到实现
近来学校快开学了,又一次需要“今日校园”健康打卡。连续打卡十四天。每天我都心惊胆战!!最近有个思索,能够做个自动化脚本,实现表单自动填写,自动获取地址,实现无人值守轮询检测是否有打卡需要填写。具体实现过程可参考下面的引用,主要有正常一键式部署和程序员秃头版本。参考引用:https://blog.youkuaiyun.com/u014141055/article/details/106900805https://gitee.com/Finch1/FuckDailyCPhttp://www.pipi
2020-08-27 14:06:56
9954
1
原创 安装VC++6.0的时候提示acmboot.exe错误执行问题
最近因为需要使用到VC++6.0软件,在安装该软件时出现问题,报错说“ACMBOOT.EXE无法执行”,导致无法加载安装引导程序。问题分析: 因为VC版本较老,我们使用的电脑大都在64bit/Win7以上了,所有该软件对此支持并不友好。解决方法:1.在 安装目录\SETUP 下,复制一份VS98ENT.STF并命名为ACMSETUP.STF2.把 安装目录\SETUP 下的所有文件复制到安装目录下。3.运行ACMSETUP.EXE,开始安装。之后会进入这个页面。进行兼容配...
2020-08-10 13:13:38
1136
转载 在测试集PARSEC测试集简介与使用
随着大数据中海量数据的处理,传统的DRAM作为主存不在适用。市场上衍生出许多主存替代版本,其中对于自己设计的存储方案进行测试时,有部分研究者使用PARSEC作为测试集。PARSEC测试集:共享存储计算机应用程序存储库。一套多线程基准测试集,是英特尔与普林斯顿大学合作开发。可以在模拟器中使用它进行并行模拟工作负载。使用标准的统计方法和机器学习来分析套件的冗余性和芯片多处理器(CMP)上的重叠。parsec测试集中应用程序的使用领域:使用模拟器,运行PARSEC测试集,本文找到一...
2020-05-20 13:11:53
2420
LinuxC编程实战-2008
2019-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人