4. EXPERIMENTAL RESULTS
4.3 Read Cache/Write Buffer Size
4.3.1 Read Cache/Write Buffer Size Detector
在 read cache size 與 write buffer size 的測試中,我們利用當要存取的資料 量大於 cache buffer size 時,勢必需要等待 SSD 直接對於底層 NAND flash memory 直接進行存取資料的時間,因此 response time 較長,來測試出 cache buffer 所能暫存的資料量。而由於 read cache 與 write buffer 的測試 原理相同,因此我們僅呈現出較有難度的 write buffer 測試方法。下表呈 現 Write Buffer Size Detector 的測試程序:
Step Action Description
0 Variables x = 1 (KB) ;
1 Initialize Perform random 4 KB write to consume the log blocks
2 Exercise Flush write-buffer and wait 5 sec,then write the x KB data
3 Calculate
If the response time of write request is increase obviously then return x, else jump to step 1 and (x+
+)
表格 5 : Procedure of Write Buffer Size Detector
在 write buffer size 的測試方法中,所採用的主要概念為當寫入資料量大 於 write buffer size 時,host 端必須等 write request 的部分資料先從 write buffer 中被寫回 NAND flash memory,才能將全部的 write request 寫進 write buffer 內;由於 NAND flash memory 的寫入速度與 RAM 相比是非 常慢的,因此等待資料被寫回 NAND flash memory 的時間會明顯的反應 在 response time 上。為了確保準確的測試出 write buffer size,我們在每 次寫入資料前,都會利用 ATA command 下達一次 FLUSH BUFFER 指 令,讓 write buffer 內部沒有任何的資料。但是在實際測試中卻發現,許 多 SSD 產品在接收 FLUSH BUFFER 指令後,並不會一次就將所有內部 資料進行寫回,因此我們必須額外等待一小段時間,以確保 write buffer 內完全沒有任何資料。
而在實際產品的測試中,我們發現對於許多尺寸較大且寫回速度較快的 write buffer,非常難將 write buffer 立即的填滿;write buffer 的空間被寫 滿之前已有部分資料被寫回 NAND flash memory 中,因此很難準確的測
試出 write buffer size。所以我們採用了 random write 進行初始化,甚至直 接利用 effective block size 的測試結果直接進行 worst case 的寫入,讓 SSD 內部的資料分佈成為容易發生 garbage collection 且 merge operation 複雜 度較高的情況,盡量減緩 write buffer 內部資料寫回的速度,達到更精確 的測量。
4.3.2 Result of Read Cache/Write Buffer Size
如下圖所示,對於 SAMSUNG 與 INTEL 的測試中當寫入資料量分別大於 128 KB 與 112 KB 時 response time 就會有明顯的增加,因此可以明顯的 穿查出他們的 write buffer size 分別為 128 KB 與 112 KB。但在下圖(C)中 可以發現,在沒有以 random write 對 MTRON SSD 進行初始化時,寫入 資料量不會對 response time 造成任何影響,但是在進行 random write 的 初始化之後,下圖(D)中可以看出在 20 MB 之後 response time 會有明顯的 Request Size (KB)
Response Time (m
0 1 2 3
16 32 48 64 80 96 112 128 144 160 176
Write Request Size (MB)
Response Time (m
Samsung, write buffer = 128 KB INTEL, write buffer = 112KB
0
Request Size (MB)
Response Time (ms)
0
Request Size (MB)
Response Time (ms)
MTRON, no random write MTRON, write buffer = 20MB
圖表 37 : Result of Write Buffer Size Detector
而對於 read cache size 的測試中,由於並沒有資料寫回的問題,因此只需 要簡單的以類似 write buffer size 的測試方式,慢慢的增加要讀取資料量 的大小,並藉由反覆的讀取來測試是否所有的 read request 資料都可直接 從 read cache 中取得。如下圖所示當要讀取的資料量小於 256 KB 時,read cache 能暫存所有要被讀取的資料,因此當資料再次被讀取時就可以直接 由 read cache 中取得,達到較快的 response time。但在 read request size 大於 256 KB 時,由於 read cache 無法暫存所有要讀取的資料量,因此必 須承受 SSD 直接從 NAND flash memory 中讀取資料的成本,造成 response time 有明顯增加。因此可觀察出 read cache size 為 256 KB。
0 1 2 3 4 5
Response Time (ms)
Request Size (KB)
SAMSUNG, read cache = 256KB 圖表 38 : Result of Read Cache Size Detector