Board logo

標題: [其他] 對一般用家黎講, HDD 裡面架cache , 64m 或128m其實差幾遠? [打印本頁]

作者: Ronarch    時間: 2015-1-31 15:38     標題: 對一般用家黎講, HDD 裡面架cache , 64m 或128m其實差幾遠?

分別有幾大?
或者係咩情況下(run 咩野software) 先會比較見到個分別?
有無高人指教下?
作者: freebird    時間: 2015-1-31 15:52

提示: 作者被禁止或刪除 內容自動屏蔽
作者: PMIII    時間: 2015-1-31 16:17

無大分別的原因是比例
比如你1T Harddisk, 有128m cache
128m/(1024*1024)m * 100% = 0.012%

而cache的作用是在於減小io waiting,所以如果你有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那就會有一些比較大的分別
作者: q_p    時間: 2015-1-31 17:36

回覆 3# PMIII
harddisk cache 唔係咁用架...
The disk buffer is physically distinct from and is used differently from the page cache typically kept by the operating system in the computer's main memory.
While data in the page cache is reused multiple times, the data in the disk buffer is rarely reused

source
作者: PMIII    時間: 2015-1-31 22:08

回覆 4# q_p


你混淆了disk buffer和cache buffer,page cache等........
http://en.wikipedia.org/wiki/Disk_cache
作者: q_p    時間: 2015-1-31 23:04

本帖最後由 q_p 於 2015-1-31 23:10 編輯

回覆 5# PMIII
HDD 裡面架cache , 64m 或128m

windows預設唔止64MB/128MB咁少嘅pagefiles.sys harddisk cache, 通常係同ram大細對等 (而家d ram 幾GB計), 所以樓主應該講緊Disk buffer.
如果你有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那就會有一些比較大的分別
PMIII 發表於 31/1/2015 04:17 PM

而你講嘅Page cache 是儲存在CPU cache, DRamharddisk platter的.
作者: t773777    時間: 2015-1-31 23:25

硬碟 cache 容量夠用就好, 演算法的設計,影響遠大於緩衝 cache 記憶體容量,並非大就是好。廠商規劃當硬碟容量提升一倍,緩衝 cache 記憶體容量也會跟著倍數增加,像500GB/16MB、1TB/32MB、2TB/64MB等。依比例原則來看,雖然2TB機種有64MB容量,但硬碟容量與緩衝 cache 記憶體容量的對比值,其實是相同的。如果一昧將容量拉高,雖然能暫存更多資料,檢索資料時卻像是在大海撈針,反而會降低 cache 命中率。
作者: PMIII    時間: 2015-1-31 23:48

本帖最後由 PMIII 於 2015-2-1 00:06 編輯

回覆 6# q_p


我講的那個不是page cache .... harddisk 內 的 disk cache(寫disk buffer會好一點) 有分 write 和 read (理論上)......

還有’而你講嘅Page cache 是儲存在CPU cache, DRam及harddisk platter的.’
這個concept完全錯誤......
作者: PMIII    時間: 2015-2-1 00:10

回覆 4# q_p


其實應該這樣講
the data in the disk buffer is rarely reused的原因就是因為電腦不是只讀取同一段data block
而大部份的cache/buffer的演算法都會有cache/buffer hit的處理,當你一直讀取同一段data block,理論上cache/buffer會一直hit,從而減少IO的操作.
作者: q_p    時間: 2015-2-1 01:55

回覆  q_p
這個concept完全錯誤
PMIII 發表於 31/1/2015 11:48 PM

點錯法? 就我所講嘅Page cache有錯? 定係就你對Page cache嘅理解嚟講錯?


有意思, 你即係話harddisk firmware會cache 某一個我重複讀取嘅細過disk buffer嘅file, 而係Ram度始終無呢舊file嘅蹤影.
而當我重複讀取該file時, harddisk不會從platter重新讀取而係從cache return data.
作者: 凌天羽v    時間: 2015-2-1 02:16

本帖最後由 凌天羽v 於 2015-2-1 02:26 編輯

首先HDD 係有PROCESSOR,有FIRMWARE,可以當成一部"微電腦" 咁看待,需要處理 HDD 的 ADDRESSING 等事項,所以HDD 本身就會用左一定數量既RAM 去行(好耐之前舊 HDD 仲會分兩套RAM,但而家 HDD 都只得一粒RAM)

係當寫入果時,HDD 為左防止大量FRAGMENT,所以好多時係會寫入RAM 然後至寫入HDD 度,因為寫入RAM 速度好快,我地唔會太見到個感覺啫,但HDD 好多時係咁樣做左野的。類似一台BT 電腦,如果唔SET CACHE 好易抄花PARTITION,而SET 大大個 CACHE 就可以頂好耐,原因都係一樣。

特別係當HDD 同個HOST 係有用上 QUERY TAG (SCSI),或者NCQ (SATA) 時,RAM 的大小會限制左QUEUE 既長度,好似下面張圖,若果無NCQ 1->2->3->4 當然唔駛好多RAM,但若果係1->3->2->4 咁既話寫3 果時己經貯左2 既資料,就唔到唔用大RAM



越多RAM,可以將更多資料快速STORE 響RAM 而唔需清RAM而強制要立即寫DATA 落HDD 度,效率越高。
作者: q_p    時間: 2015-2-1 02:35

回覆 11# 凌天羽v
thx

回覆 8# PMIII
Windows File Caching
唔到你唔服
作者: PMIII    時間: 2015-2-1 14:14

回覆 12# q_p


都話os的caching和harddisk內的buffer/caching是兩樣野....
而凌天羽講果d o米即刻我講果d羅.....

而harddisk內的buffer/cache都只是減小io waiting的一種方法.

OK?
作者: PMIII    時間: 2015-2-1 14:16

回覆 10# q_p


os做caching是os的事,本身電腦的ram(即你買4g 8g果d)是不會自動幫你個hardddisk做caching

所以harddisk才有'自己'的harddisk buffer/cache

OK?

所以page cache是os的事
cpu內的L1 L2 L3是cpu內裡自己的事
而harddisk的cache buffer亦是harddisk自己的事

而你就將三樣野混埋來講, 這樣不太正確.

OK?

OS即是windows, mac os X, Linux果d
作者: PMIII    時間: 2015-2-1 14:19

回覆 12# q_p


你這個url o米只是講緊windows對harddisk data的caching方法
和本身harddisk內的buffer/cache無關......
作者: haha.wawa    時間: 2015-2-1 14:19

回覆 14# PMIII


    thank you for info
作者: 凌天羽v    時間: 2015-2-1 14:24

回覆  q_p


都話os的caching和harddisk內的buffer/caching是兩樣野....
而凌天羽講果d o米即刻我講果d羅. ...
PMIII 發表於 2015-2-1 14:14


其實仲有一樣野的,就係而家pc 係用LBA 定址,但LBA 只係方便左對外溝通用
HDD 本身結構依然係C H S,即第幾個頭,第幾個軸,第幾個SECTOR 咁定址,因為內部係CHS,才可以斬頭REMARK HDD,若果LBA 的話這樣是不可以成立的

而RAM 係要用來貯存己處理的定址信息交給控制去寫入讀出
作者: PMIII    時間: 2015-2-1 14:31

回覆 17# 凌天羽v


對, 不過現在的Harddisk firmware都可以斬LBA
以前還有lba28和lba48的問題等等, 總之真的感謝你對這問題的答覆 :)
作者: 凌天羽v    時間: 2015-2-1 14:38

回覆  凌天羽v


對, 不過現在的Harddisk firmware都可以斬LBA
以前還有lba28和lba48的問題等等, 總之真的 ...
PMIII 發表於 2015-2-1 14:31


題外話,而家HDD 無以前可玩性咁高了

以前486 年代行REAL MODE,可以直接將TAG 寫入HARDWARE然後叫HDD 做特定動作,當時好似QUANTUM 既TAPE DRIVE 會送一本成吋厚 SCSI COMMAND REFERENCE 比PROGRAMMER 自己寫SCSI INSTRUCTION。

程式寫得好甚至可以將HDD 用來做音樂盒出聲

以前電腦比較LOW LEVEL,好似INTEL 都會提供X86 的INSTRUCTION SET 資料,網上亦會找到IDE 的INSTRUCTION ,果時寫病毒係靠呢堆資料的XP,

但家陣呢類野己經越來越少提供了。
作者: PMIII    時間: 2015-2-1 14:48

回覆 19# 凌天羽v


286, 386, 486年代好多古老野玩, 但行real mode就只有1m(其實只有640k)定址

又要靠d emm386等(有其他lib)interrupt call才能使用更多的ram, 哈哈

當然啦, 現在harddisk那麼平, 還印一本書給我們嗎? 以前的harddisk可以以k港元計m.....

不過, real mode直接行in out等指令都有d危險, 以前細過咩都不怕, 現在就寧願開個vm來試了.
作者: q_p    時間: 2015-2-1 16:34

本帖最後由 q_p 於 2015-2-1 16:38 編輯

回覆 15# PMIII
而凌天羽講果d o米即刻我講果d羅

你記唔記得自己講過d乜?
所以如果你有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那就會有一些比較大的分別
PMIII 發表於 31/1/2015 04:17 PM



你這個url o米只是講緊windows對harddisk data的caching方法
和本身harddisk內的buffer/cache無關
PMIII 發表於 1/2/2015 02:19 PM

絕對有關, 因爲你講嘅已經由OS cache左係Ram度.
亦係"data in the disk buffer is rarely reused"嘅原因.


所以page cache是os的事
cpu內的L1 L2 L3是cpu內裡自己的事
而harddisk的cache buffer亦是harddisk自己的事

而你就將三樣野混埋來講, 這樣不太正確.
PMIII 發表於 1/2/2015 02:16 PM

對於"Page cache 是儲存在CPU cache, DRamharddisk platter的", 你我之間有點誤會.
windows有個pagefile.sys檔案嚟暫存Ram嘅data(尤其當Ram唔夠位時), 所以我講嘅"harddisk platter"係指%SystemDrive%\pagefile.sys 呢個file儲係harddisk platter.
呢舊file成GB計, 仲要同Ram交換資料而更改, 頂多部分暫存於Disk Buffer嚟縮短I/O waiting,
所以我唔講佢儲係Disk Buffer度, 但不代表我否認 Disk Buffer嘅存在.
而對Page cache儲存在Ram一定無異議吧? 但一個運行中嘅程式嘅改動可能仲喺CPU cache度未寫出到Ram度.
作者: PMIII    時間: 2015-2-1 16:49

本帖最後由 PMIII 於 2015-2-1 16:52 編輯

回覆 21# q_p

'所以如果你有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那就會有一些比較大的分別'

我那段是講緊d data是cache了在harddisk的buffer / cache中, 而不是由os去cache d data在系統記憶體內.
本來個topic一直是講緊harddisk的buffer / cache, 又點會無啦啦講緊系統記憶體?

我那句的意思是: 因為harddisk一直cache hit(而未expire), 而harddisk就會從harddisk內的buffer / cache中read data給cpu/ram(dma)
所以若果有一些程式是不停讀某一個小過cache size內的file(還要那個file不變),那速度就會有提升,因為是read緊harddisk內的buffer / cache
作者: q_p    時間: 2015-2-1 16:56

回覆 22# PMIII
因爲我有個概念由harddisk return嘅資料會cache左喺ram度,
係咪用左Direct memory access就唔經ram?
作者: PMIII    時間: 2015-2-1 16:56

回覆 21# q_p

Page cache 那裡你仍然有混淆
pagefile.sys怎樣來的?是從windows OS自己產生出來的(當然你可以disable)
所以這個pagefile.sys本身就同harddisk中的buffer / cache無關,即是

cpu有register還有自己的L1/2/3 CACHE
harddisk有自己的buffer / cache

而CPU和Harddisk的CACHE都和系統記憶體無關,它們有它們自己的記憶體來處理工作或提升效能.

而pagefile.sys給windows的memory management用的

我說就說到這,信不信由你
作者: PMIII    時間: 2015-2-1 17:01

回覆 23# q_p


DMA只是令讀取資料(IO)的時間不經cpu(嚴格上其實都經)
http://en.wikipedia.org/wiki/Direct_memory_access

DMA和什麼CACHING是無關的

而系統記憶體的CACHING從來都是OS處理的.
作者: q_p    時間: 2015-2-1 17:17

本帖最後由 q_p 於 2015-2-1 17:33 編輯
而CPU和Harddisk的CACHE都和系統記憶體無關,它們有它們自己的記憶體來處理工作或提升效能.
PMIII 發表於 1/2/2015 04:56 PM

大家嘅着眼點不同...
我明白兼同意你呢句, 但電腦運作上cpu cache同OS main memory(ram)關係密切..
我係指cpu cache入面嘅instruction同data都係由ram度嘅data copy過嚟, 所以我先包埋嚟講.
我知cpu register嘅野始終留在CPU度 唔關ram, harddisk buffer事, 等等...
作者: q_p    時間: 2015-2-1 17:40

DMA只是令讀取資料(IO)的時間不經cpu(嚴格上其實都經)
DMA和什麼CACHING是無關的
而系統記憶體的CACHING從來都是OS處理的
PMIII 發表於 1/2/2015 05:01 PM

... 咁harddisk經DMA controller return data俾cpu/ram之後, 由於windows有file caching, 咁嗰個程式重覆讀取時唔係用番windows 係ram留底嘅copy咩? 點會用到harddisk buffer架?!
作者: PMIII    時間: 2015-2-1 18:02

回覆 27# q_p


如果能保證windows系統執行的那個程式在讀取完那個file之後,該file的資料長期存在ram(cache)中
那windows就不會再讀harddisk的data.

但實際上,因為os對harddisk/storage的處理複雜和multi task的問題,windows的file cache常常會flush或expire.

另一個問題就是,windows/OS本身不能保證某一個file有沒有更改掉,即使有caching,都會在某一段時間內就expire.

所以harddisk內的buffer / cache仍然存在......如果os能100%解決這問題,harddisk就不會有buffer / cache了
作者: yjfoeg    時間: 2015-2-1 18:13

另一個問題就是,windows/OS本身不能保證某一個file有沒有更改掉,即使有caching,都會在某一段時間內就expire.

所以harddisk內的buffer / cache仍然存在......如果os能100%解決這問題,harddisk就不會有buffer / cache了

其實HDD緩衝係讀寫乃至queuing方面都有提升整體效率既效用...
詳細係點就自己GOOGLE啦
不過絕對唔係咩「OS解決左cache flush/expire -> HDD唔洗有緩衝」囉...
作者: PMIII    時間: 2015-2-1 18:20

回覆 29# yjfoeg


我的意思就是這樣,本來os cache和harddisk buffer/cache就是兩樣野

不過,以我所知,有一些ssd是無buffer/cache的
作者: lyh1993    時間: 2015-2-1 19:41

咁其實8mb 緩存ge hdd係咪開始會唔夠用呢?
作者: freebird    時間: 2015-2-1 22:08

提示: 作者被禁止或刪除 內容自動屏蔽
作者: lyh1993    時間: 2015-2-1 22:15

夠既. 首先你個harddisk 係得80G盲 好夠啦
freebird 發表於 2015-2-1 10:08 PM

我隻係160gb黎
作者: q_p    時間: 2015-2-1 22:24

回覆 33# lyh1993
夠架啦, 我隻sata1 400GB 都係得8MB buffer咋
作者: lyh1993    時間: 2015-2-1 22:45

回覆  lyh1993
夠架啦, 我隻sata1 400GB 都係得8MB buffer咋
q_p 發表於 2015-2-1 10:24 PM

咁又係 我另一部機舊緊隻hitachi 160gb都係行sata1 都係得8Mb
而加呢隻WD 係sata2 160gb都係得8Mb
作者: 凌天羽v    時間: 2015-2-4 22:58

回覆  yjfoeg


我的意思就是這樣,本來os cache和harddisk buffer/cache就是兩樣野

不過,以我所知,有 ...
PMIII 發表於 2015-2-1 18:20


一樣有ram 的,只不過embedded 響controller 度

粒controller 都有佢既code 要行
作者: q_p    時間: 2015-2-4 23:27

回覆 36# 凌天羽v
You might find this Anandtech article interesting as it discusses how traditional SSD architecture, with SDRAM or SRAM cache compares with the latest SanDisk architecture, which use a mixture of MLC and SLC NAND flash to remove the need for volatile memory completely.
source





歡迎光臨 電腦領域 HKEPC Hardware (https://h0.hkepc.com/forum/) Powered by Discuz! 7.2