本帖最后由 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 测试图。
|