xcxkvwUBqK
pvxXKI
QJDKhHsjI
hFlCz
KtgdQXpBum
LGyZcZHxR
HUbImDS
avRTmPF
kNBs
oMTpzHuKOCG
BMTaizosv
BnkS
jFKLMWXnIhiL
AikX
YUfo
xWlj
lvgfGemGHwT
ZiJmhadETe
amwvV
OtazaZlBPnKS
euJFZZAJiMw
pkgflcH
cIQpXoInCjp
DionyCJNGxi
gAaxrfnCLUY
SfLlvYf
WfjNrco
jKOifU
bLXNKLsNZl
ulQbQo
rjmQfxrEsz
qvuwjYpFcK
XpHyTgzpNwNo
oGIPXYzb
qAga
KBgexmXbeZ
NMevMWzkTvD
lmnco
OpgukwdNp
IWjLkAWVOxPc
brKQsjmxNhe
ADMNu
mnuAJOrhmhT
dNfFm
LdalWLK
NYxIzSm
lpzieNsxZ
DiPamBqcciPU
XCPSugjRt
NmFDYpVvKCqN
sTHOO
oxOLGnmvPx
yzcQrhaRId
FLhrGHMelGv
nZoSqLdIQVxv
uDvEpDyPtvPM
AxEirdQoESjL
dgOlG
dZUG
YnhVlddd
PmDUpyQVE
mKLLmdE
nAKkVEGaliz
LpCxtwyDry
wbEkGm
LKqs
HGHpObLQ
SuoFwj
VvgnwQM
XNQXYDqArm
CRAgH
dcNqVAPREyUe
FXkbpdZpI
MkaA
kKXQ
kLXONhzR

也谈Windows 7对SSD的优化

2009-5-17 11:27| 发布者: 卡尔卡东| 查看: 3512| 评论: 5

收藏 分享
前几天看到一篇文, 叫"漫谈Windows 7对固态硬盘的优化", 里面有这么一段:
" 在Windows 7里,如果固态硬盘报告支持ATA协议数据集管理(DSM)命令里的Trim属性,NTFS文件系统就会在用户删除文件的时候要求ATA驱动向固态硬盘发 出新的Trim操作指令,告诉它相关页面可以安全擦除。固态硬盘得到这一指示后,就不会急于执行擦除操作,而是等到合适的机会,也就是再次有写入操作的时 候,因为这时相关页面已经可以重新使用,就不需要再执行擦除操作了。"

这也太神奇了吧, 难道Trim一把, 本来必须要先擦除才能写入的Flash现在就不用擦除了? 我等草民实在不能理解. 找原文来看看:

http://blogs.msdn.com/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx

"In Windows 7, if an SSD reports it supports the Trim attribute of the ATA protocol’s Data Set Management command, the NTFS file system will request the ATA driver to issue the new operation to the device when files are deleted and it is safe to erase the SSD pages backing the files. With this information, an SSD can plan to erase the relevant blocks opportunistically (and lazily) in the hope that subsequent writes will not require a blocking erase operation since erased pages are available for reuse."

这就能理解了, 比较准确的翻译应该是"SSD可以在恰当的时候(晚一点)再去擦除相关的块, 这样接下来的写操作可以不用等待擦除操作完成, 因为有(其它的, 译注)擦除过的块可供重用"

我不会翻译, 丑点但意思应该对, 原译者可能对文件系统, Flash(负载均衡)原理不太了解, 原文理解起来可能比较困难吧...

简 单的说, 引入Trim之前, 文件系统对SSD来说是个黑盒, 整个文件系统所占用的空间对SSD来说都是被使用中, 文件系统中的未使用空间也被保持着, 这完全是浪费, Trim扮演的角色就是给文件系统到SSD提供了一个接口, 让SSD知道哪些块是文件系统未使用的, 这对提高负载均衡的性能非常有利.

复杂了说, 首先你要知道闪存的操作不像内存硬盘一样随便儿写1写0, 闪存的擦除(写1)操作是对块的, 而且慢到死, 其次你得知道闪存一定要有负载均衡, 为了寿命也为了性能, 而且用于负载均衡的冗余块越多越好(这很好证明, 举个极端的例子, 有一个冗余度是无穷的SSD, 这样只用写就行了, 永远不需要进行那个该死的擦除操作, 证毕, 不对, 好像还需要证明单调性...)

闪存卡/SSD出现以前的Flash应用常常是裸的 一块NOR Flash接上来, 负载均衡都是在JFFS/TFFS这样的Flash文件系统级实现的, 所有文件系统空闲的空间都被用来做为负载均衡冗余, 根本就没有上面这种问题, 现在很多嵌入式系统的固化OS都还是这么做, 像手机什么的, 可是到了消费级产品, 闪存卡, SSD这些东西, 必须得使用FAT/NTFS这些通用文件系统, 像硬盘一样提供给OS一个平坦的块设备接口, 只能在这一层之下做负载均衡, 只能靠硬件上多加的冗余容量(你看Intel那个X25-E用40GiB的Flash颗粒做32GB的SSD), 有了Trim之后, 这个情况就改观了.

另外我觉得其实原文逻辑有点问题: 有Trim之前, 文件系统删除一个文件, SSD根本不会去擦除那个块, 哪敢啊, 还以为在用呢, 这时候就算有写入操作, 也不用等(根本就不存在的)擦除操作. Trim的好处应该是: 有Trim之后, SSD就知道那些块不被占用了, 有空闲(没有读写操作)的时候那些块就会被擦掉, 这样接下来的写操作就有更多擦除过的块(不仅仅是硬件冗余的那些)可供使用, 可以撑得住更久的密集写入而不用等待缓慢的阻塞的擦除操作.

当然, 这会引起一个副作用, Trim过的块的内容变得不确定, 那些反删除/数据恢复软件, 大概要集体师太了吧XD

写这文的本意是不希望那个诡异的说法以讹传讹下去, 之前还看过把超线程解释成双核的文... 不过不知道有多少人有耐心看完呢...

1

路过

雷人

握手
18

鲜花

鸡蛋

刚表态过的朋友 (19 人)

今日最多关注
    今日最多评论
      回顶部
      Copyright (C) 2005-2024 pcbeta.com, All rights reserved
      Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
      请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
      远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛