PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

浴大求解脱,突然心血来潮开始纠结起TRIM的事情来了

[复制链接]
跳转到指定楼层
1#
jokerwh 发表于 2010-11-8 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:5303|回复数:9
本帖最后由 jokerwh 于 2010-11-8 21:24 编辑

就是有几个概念想搞搞明白:
1.win7+MSAHCI+sandforce下一次性可以TRIM多少数据呢,我在您的帖子里好像看到2G和4G都有,应该是哪个呢
2.如果现在有个sandforce的SSD由于某些原因存在许许多多已经删除却未被TRIM的数据(比如在win7+MSAHCI的平台下我把WINDOWS文件夹一次性删了,而这个文件夹大小远大于4G),然后我把这个SSD转移到win7+Intel AHCI的平台上进行快速格式化(或者用WIN7安装光盘下格式化),那么这些先前没有被TRIM的数据是否也被TRIM了呢
3.ubuntu(或ubuntu live CD)+sandforce支持TRIM吗

如果2的结论成立+3的答案是“是的”的话,那么似乎win7+MSAHCI+sandforce平台下又多了一种全盘TRIM的方法了,我是指在ubuntu live CD下全盘格式化(如果可行的话)

虽然这个方法有点繁琐而且之前又有FORCE TRIM的软件摆在那里,但是多一条路总比少一条路要来的好,还请浴室大大不吝赐教
2#
okko 发表于 2010-11-9 00:54 | 只看该作者
单条trim命令有数据量大小的限制,但是没人限制win7 只能发1条trim命令
所以你在2里面的前提条件就是不成立的,即使文件夹大于4G,win7还是会在删除时发若干条trim命令把他们都trim掉。同理,只要OS,驱动都支持trim,做格式化的时候也是会发多条trim命令的,之前没trim的数据会被trim掉。
3#
neeyuese 发表于 2010-11-9 03:57 | 只看该作者
本帖最后由 neeyuese 于 2010-11-9 06:44 编辑
单条trim命令有数据量大小的限制,但是没人限制win7 只能发1条trim命令
所以你在2里面的前提条件就是不成立 ...
okko 发表于 9/11/2010 02:54



详情请看这里。

当发送Trim指令的时候,OS会向SSD发送一组“无效”数据地址,每组地址包含最大64个条目,每个条目定义了LBA起始地址和一个数字(数字定义了跟着起始地址后有多少地址是一起的,最大65536.) 如果数据地址多,可以分多次发送。 (1个LBA地址为512B,65536就是32MB,如果是64个条目,就是2GB。)   所以说1个Trim指令一次可以Trim 2GB数据。

Identify Device data word 105,

If trim is set to one and:



a) the device detects an invalid LBA Rangeentry; or

b) Count is greater than IDENTIFYDEVICE data word 105


then the device shall return command aborted.


A device may Trim one or more LBA Range Entriesbefore it returns command aborted.

微软的MSAHCI由于不完全符合最新的ATA定义,它发送的“无效"数据地址一组”无效“数据地址可能包含大于64个条目,造成sandforce主控过载,直接忽略Trim指令。要解决这个问题就要等微软最新的MSAHCI驱动了。(符合ATA最新标准)  Intel的RST驱动无此问题,完全符合最新ATA标准。

sandforce主控更新1.10固件之后,会把这些不标准的Trim指令中“无效"数据地址中的前4GB范围cache到主控里先,但是超出4G的部分还是会被忽略。(估计主控cache吃不消,之后的过载保护,忽略)


这就是Trim "2G"和 SandForce Trim "4G"的由来。{:3_52:}


附带张Intel 120G 测试图。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
okko 发表于 2010-11-9 13:34 | 只看该作者
受教了,头次听说MSAHCI和sandforce还有这么一则故事,谢谢
5#
okko 发表于 2010-11-9 14:07 | 只看该作者
查了下,原来win7做格式化的时候用msahci最大会发16G的单条trim命令
6#
jokerwh  楼主| 发表于 2010-11-9 14:56 | 只看该作者
谢谢二位了看样子问题一是彻底解决了,问题2和问题3可以麻烦再帮我解决下吗谢啦
7#
neeyuese 发表于 2010-11-9 16:17 | 只看该作者
2.是的,在Intel的南桥驱动下再次格式化,等于全盘trim。
3.Linux新核心支持。
8#
jokerwh  楼主| 发表于 2010-11-9 20:41 | 只看该作者
2.是的,在Intel的南桥驱动下再次格式化,等于全盘trim。
3.Linux新核心支持。 ...
neeyuese 发表于 2010-11-9 16:17



    谢谢浴大了,这下不纠结了:lol
9#
liwenchao 发表于 2010-11-16 14:11 | 只看该作者
再机械硬盘里面装个win7,专门用来格式化ssd这样应该行的通吧?
10#
icz88 发表于 2010-11-16 14:32 | 只看该作者
Sandforce的Trim和GC都受到DuraClass 的节制, 并非格式化后就马上全盘Trim的,更多时侯控制器只是接收了要删除的堆栈信息,但实际上并不工作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部