關於硬碟測速軟體 4K疑問

qwer447785

進階會員
已加入
7/12/08
訊息
257
互動分數
0
點數
16
年齡
34
網站
blog.xuite.net
大多數軟體跑分 為何會有4K 這個限制?
小弟很好奇 1K 2K 3K 4K 6K 唯獨只選4K 為底線
目的是甚麼 有人可以解答嗎;rr;
 

saab6212

進階會員
已加入
2/4/11
訊息
224
互動分數
5
點數
18
4KB為一個Cluster
在寫入到硬碟或是SSD時,會剛好填滿一個Page也同時符合記憶體最小儲存單位相符
不許耗費多餘的讀寫存取動作來拖到效能

從Windows NT開始導入NTFS格式到XP,硬碟分割預設都是從第63個扇區開始。
也就是保留512Byte*63=31.5KB的空間大小才開始第一個分區

如果剛好跨到兩個Block之間的叢集時,是不是要同時操作兩個page來搬移寫入呢?
所以從Vista開始,預設起始點為4的倍數。這樣一來就不會出現讀取效能下降的問題

而將分割區設定為4可以整除的數字開始,就稱為『對齊』

這就是為何以4K為基準值的由來
 

saab6212

進階會員
已加入
2/4/11
訊息
224
互動分數
5
點數
18
硬碟就算沒4K 影響不大
但SSD就會有差了
加上Windows很吃重4K效能
 

allen528

一般般會員
已加入
6/20/10
訊息
96
互動分數
0
點數
6
T客邦那篇太冗長了,我把重點說明一下。

傳統 512 byte 為一個 sector 的硬碟, sector 排列如下, 每個 O 是一個 sector(512 byte):

O O O O O O O O O O . . .

先進格式則以 4K (8 個 512 byte) 為一個寫入讀出的單位, (下面每個 O 是 512 byte) :

[OOOOOOOO] [OOOOOOOO] ...

但先進格式硬碟定址卻跟傳統硬碟一樣, 把每 512 byte 看做一個 sector.
所以有可能造成沒 4K 對齊的現象.

當我們跟硬碟發出要取出 sector 3..10 共 4K 的資料時, 硬碟要先把第一個 4K 讀出取出後面 sector 3..7 的資料, 再把第二個 4K 取出前面 sector 8..10 併成一個 4K 再傳給我們. Disk read 效率還好, 影響不大, 但寫入時就很慘.

當我們要把 4K 的資料寫入 sector 3..10 時, 本來傳統作法就寫入就好, 但現在硬碟控制器卻要先把第一二個 4K 讀出到 buffer, 把我們要寫入的資料塞入 buffer 裡 sector 3..10 的位置, 然後等碟片轉到磁頭下時再把這兩個 4K 寫入碟片. 非常花時間.

既然現在 OS 都至少以 4K 為一單位 (block) 讀寫, 所以把 block 跟硬碟的 4K 對齊就能直接寫入而不需要 讀出 - 修改 - 寫入 這樣的動作.

至於為什麼測試至少以 4K 為單位,我想是因為現在硬碟都很大,OS 至少以 4K 為讀寫單位。不過如果 partition 太小就不一定了,比如小於 512MB 時,檔案系統就可能以 1K 為單位,除非特別指定。
 
▌延伸閱讀