`
CreazyApple
  • 浏览: 64852 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

SSD EFTL 改进日志

 
阅读更多

发现如果使用块数太少,根本不会调用GC ,也就是没有erease操作,10000不行

从parv文件里可以看出一共有1G = 512k * 2097152 扇。

而flash.h中定义一块64页,一页4扇

故 = 524288 页 = 8192块(实际上还有extra block ,nand_blk_nom = 8448

因此考虑1:修改parv文件,将块号改少2:用更长的trace,3:初始化flash时,将其中部分置为invalid

后来在flash.c->nand_page_read()里发现它使用了固定的8448,可以得知,不能随便改动parv文件,

出现读越界,且物理扇号是-4,估计是opagemap映射出错

更新的过程似乎米有对

28号找了一天,晚上7点在椅子上睡了一觉,醒过来冷静观察,终于找到错误了,原来是不命中的括号位置方戳了,造成如果命中,不进行读写操作!!当然就有可能使本来已经写过的页却无效

同时也暴露出源程序的一个漏洞:如果读无效页,应该给一个提示而不是因为越界而终止。

因此我做了改进,在flash.c ->nand_page_write()/read中加了如果越界就赶紧return。

为了观察命中率,我在flash.h中定义了hit和not_hit,在flash.c->nand_flash_reset()中初始化,在ssd_interface.c中取得cache命中率,在flash.c ->nand_stat_print()里打印出来

可以知道flash.*中记录的是总信息,在ssd_interface.c中记录的是一次任务的信息

Extending SSD Lifetimes with Disk-Based Write Caches

为了改变patch_num ,把它定义位变量放在ssd_interface.h中去了,这样外界可以随便定义它的值

关于disksim不能通过部分trace 照此说明,把trace中的reqtime*100,解决

瞎折腾不如睡一觉!!!

发现还与请求时间间隔有关系,间隔越短我们的算法越有优势,甚至可达8倍以上!!!io响应时间与队列长度的关系

我发现那个io响应时间变数非常大,上层io请求越快,dftl的io响应时间越糟糕,而我们的eftl越有优势,我用一个finacial trace测试,eftl的io响应时间甚至可以只有dftl的1/8!!

我不清楚io响应时间与请求频率的关系似乎是请求越快,队列越长?

现在存留的一个不得不面对的问题:我们的eftl模拟比别人更耗时,因为要更多的对cache进行遍历。现在是否可以忽略那些时间呢??

单独测试多表调入,发现finacial trace下命中率大大提高,但是读写次数反而增加!!。

后来认思考,虽然命中率提高,但是不命中开销增大,因为一旦不命中,就需要更新(读+写)0-64次!!而原来的不命中开销是0-1次!!!

看来有一个命中率*不命中开销的折衷点。

我的办法是:为了减少不命中开销,可以只挤出去一页中的n个age最小的表,而不是死板的挤出64个。这样不命中开销就不会增加!!

为了不至于找一页中age最小的表算法复杂度太高,我认为既然有连续性,如果某个页不用,它周围的页多半也没用,因此只需要把age最小的页的周围(映射在同一页中)的页的映射调出。这正好可以利用附带更新的那个遍历!

其实真实操作的时候,没有必要想这么多,就是判断vic_page_num不能为2,为2的时候便不再调出(当然还有一个调出最大上限)

然后顺便再对调入优化,不一定死板地调入8个,而是从一页中调入,尽可能把cache填满

但是这样命中率确实低了。我又想到,其实很大一部分请求的扇数介于1-8之间,即请求连续的两页,因此对连续的两页调入对命中率的提高必然会有很大贡献。

看来连续性有:1,请求内的绝对连续性 2.请求间的跳跃连续性

考虑到有时候会调出多个表也满足同一页,为了既要满足绝对连续性又绝不能调出2页,要同时满足:1,如果blk_cout > 1那么就满足他调入连续的页;2.绝不能调出2页。

方法有二:1.如果没有绝对连续性即blk_num = 1,则预留2个空间,有绝对连续性的时候使用。2.如果有绝对连续性,就强制要求挤出足够的空间,如果老实的调出不够,遍历一遍cache,总能找到在一页中的。也不能放弃绝对连续性

给出的提示是,即使考虑跳跃连续性,

关于I/O流。调度太多代价高。调度太少命中率不高,为什么不高?因为它IO流的连续性其实也有跳跃性!!

需要分析IO流长度和,跳跃长度。

发现我的算法模拟时间太长了。想法设法改进。求是不是在同一页/512可以用>>9来表示

In the case of random streams, all requests must be tracked since
it is difficult to determine whether these requests are from a sequential stream with a low arrival rate or
from a random stream. Hence, requests from random streams can fill up the sequential stream tracking
cache quickly. The size of the tracking cache must be large so that requests from sequential streams
reside in the cache until there is a hit. Setting aside limited disk array cache space for a large tracking
cache would reduce the size of the prefetch cache, thus lowering the prefetch hit rate. However, a key
observation regarding the tracking mechanism is that current request addresses have to be compared to
past request addresses. Thus, the tracking cache stores only request addresses and not request data, so

我可以track 映射所在页(数量极少)来判断是否是sequencial

分享到:
评论

相关推荐

    基于pytorch版ssd进行改进注入CBAM空间通道注意力机制,加入FPN,类别损失函数改为focalloss

    基于pytorch版ssd进行改进注入CBAM空间通道注意力机制,加入FPN,类别损失函数改为focalloss,该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。...

    SSD算法改进前与改进后python源码(替换backbone、注意力机制、损失函数、高效的特征融合).zip

    SSD算法改进前与改进后python源码(替换backbone、注意力机制、损失函数、高效的特征融合).zipSSD算法改进前与改进后python源码(替换backbone、注意力机制、损失函数、高效的特征融合).zipSSD算法改进前与改进后...

    ssd算法及相关算法改进

    本合集主要关注SSD算法及其相关的改进策略,旨在深入理解和优化目标检测的性能。 首先,SSD算法的核心思想是基于卷积神经网络(CNN)的特征金字塔网络。在不同层次的特征图上预测不同尺度和比例的目标框,这样既能...

    通过SSD训练出来的的log日志,利用python绘制loss曲线脚本文件

    在本案例中,我们关注的是如何利用Python从SSD(Single Shot MultiBox Detector,一种目标检测模型)训练的日志文件中提取loss数据,并绘制出loss曲线。这有助于我们理解和分析模型的训练过程,识别过拟合或欠拟合...

    基于改进SSD算法的工件检测

    基于 SSD 改进的工件目标检测算法。在 SSD 算法的基础上,将 SSD 的骨干网络 VGG16 替换为ResNet50,并增加输出特征层的预选框数量,其次加入特征金字塔( FPN) 的算法思想,将网络中的底层特征与高层特征融合,解决...

    基于SSD目标检测结构的改进论文的英文论文原文

    这些论文代表了研究者们对SSD的持续改进,他们通过调整网络结构、优化特征提取、增强数据处理以及引入上下文信息等方式,不断提升SSD在小目标检测方面的性能,对于理解SSD的工作机制和进一步的改进具有很高的参考...

    ssd1305.rar_ssd1305_ssd1305 程序_ssd1305驱动

    在开发过程中,可能需要通过示波器检查通信信号的正确性,或者利用串口通信查看错误日志,以便调试和优化驱动程序。此外,考虑功耗优化,例如在无显示需求时关闭显示屏或降低刷新率。 9. **实例应用** SSD1305...

    基于Pytorch实现SSD算法并进行改进python源码(本科毕业设计).zip

    基于Pytorch实现SSD算法并进行改进python源码(本科毕业设计).zip基于Pytorch实现SSD算法并进行改进python源码(本科毕业设计).zip基于Pytorch实现SSD算法并进行改进python源码(本科毕业设计).zip基于Pytorch...

    SSD1322驱动.rar_OLED SSD1322_SSD1322 STM32_ssD1322程序_ssd1322_ssd13

    SSD1322是一款广泛应用于 OLED(有机发光二极管)显示屏的控制器,它能够高效地驱动像素显示。在嵌入式系统中,尤其是在基于STM32微控制器的平台上,SSD1322是实现图形化界面的理想选择。这个压缩包文件“SSD1322...

    图像匹配中SSD和NCC算法的改进

    ### 图像匹配中SSD和NCC算法的改进解析 #### 概述 在图像处理领域,特别是立体视觉中,图像匹配技术是获取场景深度信息的关键步骤。通过识别和匹配不同视角下的相同特征,可以重建三维环境。SSD(Sum of Squared ...

    SSD1322驱动.rar_SSD1322 spi_dirt1dk_ssd1322_ssd1322spi_stm32 ssd1

    SSD1322是一款广泛应用于 OLED 显示屏的控制器,尤其在微型和小型设备中。这个压缩包文件“SSD1322驱动.rar”包含了一组针对SSD1322驱动的资源,主要关注如何通过SPI(串行外设接口)与STM32微控制器进行通信。描述...

    SSD1963.zip_SSD1963 FSMC_SSD1963驱动7寸TFT屏源码_ssd1963_ssd1963 51_ss

    SSD1963是一款广泛应用于液晶显示屏(LCD)控制器的芯片,主要负责处理图形和文本数据,并将其显示在TFT(Thin Film Transistor)屏幕上。在这个项目中,我们关注的是如何使用STM32F103CET6微控制器通过FSMC...

    SSD2828-Application-Notes.rar_READ-ID_SSD2828-Application_SSD282

    SSD2828是一款高性能的液晶显示控制器,主要用于驱动TFT-LCD面板。这款控制器在各种嵌入式系统和工业应用中广泛使用,因为它的灵活性和强大的功能。本应用笔记详细介绍了如何有效地使用SSD2828,并提供了一个初始化...

    Pytorch-SSD-And-Extension:复现SSD并改进,应用

    PyTorch-SSD-And-Extension项目可能包含以下改进和扩展: - **数据增强**:通过随机翻转、缩放、裁剪等方法增强训练数据,以提高模型的泛化能力。 - **多尺度训练**:在训练过程中,改变输入图像的大小,使模型能够...

    OLED屏,SSD1322驱动,STM32程序_stm32驱动SSD1322U_ssd1322_SSD1322U驱动OLED_S

    在本文中,我们将深入探讨如何使用STM32微控制器驱动OLED显示屏,特别是采用SSD1322作为显示控制器的型号。STM32是一款基于ARM Cortex-M内核的高性能微控制器,广泛应用于嵌入式系统设计。SSD1322是一款用于驱动有机...

    ssd2828_ssd2828_mipi_ssd28288bit4lane_

    在本例中,"ssd2828_ssd2828_mipi_ssd28288bit4lane_" 的标题暗示了我们正在讨论的是一个与SSD2828相关的项目,该项目特别关注其通过8位4 Lane MIPI接口进行数据传输的能力。 RGB(Red, Green, Blue)是颜色模型的...

    SSD1306.rar_SSD1306

    SSD1306是一款广泛使用的 OLED (Organic Light-Emitting Diode) 显示屏控制器,常用于小型电子设备的显示屏,如智能手表、微型计算机、传感器读数显示等。这种控制器以其高效的能效、高对比度和深黑色背景而受到青睐...

Global site tag (gtag.js) - Google Analytics