Re: [問卦] 為什麼記憶體不能用硬碟替代==?消失
※ 引述《Muscovy (三分熟的鬧鐘)》之銘言:
: ※ 引述《kioh (NG中~)》之銘言:
: : 為什麼不能用硬碟代替記憶體==?
: : 有卦嗎?
:
: CPU 設計就很像開工廠佈產線.
: 產線上的女工就是一個一個運算單元.
:
: 推 ian41360: 改14休4女工可以連續上班12天,速度會加快嗎?
基於聊開了就要繼續聊的概念下...
我們來討論一下 CPU 加班的問題.
偉大的奴隸主説: 「加班是本來就要的, 不能算績效. 」
要怎麼讓女工提高生產力, 可以這麼做.
分解單個女工的動作, 會發現一件事...
女工做事情是有步驟的, 而且用到的身體部位不一樣.
她會先用眼睛讀條碼, 接著用左腳踏板準備她要用的工具.
然後是雙手把箱子裡面的材料拿出來處理.
之後用嘴巴呼叫快遞, 然後靠右腳把箱子打包.
偉大的奴隸主 Intel 説: 「一次把所有的器官都給我用上! 」
固定順序的眼腳手嘴腳用在不同的箱子上, 這叫做 pipeline.
不過從奴隸主的角度來說, 這邊有個程式員的角色在礙事...
一批箱子送進去跟取出來的順序是由程式員決定的.
而且還會因為箱子的內容臨時決定要找快遞去哪邊叫料送件.
這些工序是不能變的...
所以奴隸主的願望也不是時時刻刻可以達成.
但也不是沒招, 奴隸主觀察到有些器官就是作業瓶頸...
所以乾脆把女工基因改造, 變成四手四腳的 superscalar.
有了四手四腳的女工, 還可以對外宣稱這是兩個女工.
這叫做 hyper-threading.
總之, 發生在女工身上的慘事就交給奴隸主去煩惱.
但是加班不算錢倒是普世價值.
: 推 bbb007: 可是照你的說法,不就只要讓CPU看得到硬碟就行了?
: → Darkautism: 你說的沒錯,但那是BIOS的工作,BIOS很難辦到
關於鄉民 bbb007 的問題, Darkautism 鄉民都答完了.
不過 bbb007 鄉民的問題其實有另一個意義.
「味噌湯不放味噌與豆腐, 改放菜頭排骨酥用肉燥提味.
又清又香, 但就略油, 壽司改成糯米加香菇肉絲去蒸. 」
這個... 專業鄉民都知道是排骨酥湯.
所以 CPU 看得到的硬碟, 就是 primary storage.
譬如 eprom, eeprom, flash memory 等等...
但這時候不能説它是味噌湯或是硬碟.
然而有些明明是 secondary storage...
看起來卻有 primary storage 的性質又是怎麼回事?
譬如用外接硬碟當成 swapfile.
賣電腦的業務都說這個會擴大整個記憶體, 超厲害的!!
我們從前一篇文章斷掉的 virtual memory 往下講.
中間先插個硬碟存取的簡單類比.
女工知道廠房裡頭的每一處地址, 然而硬碟不在地址裡面.
那她怎麼取硬碟上的資料呢?這個就是通力合作的結果了.
女工對於硬碟上有什麼是完全沒概念的.
程式員才是大王, 他決定了硬碟九成九以上的咚咚.
作業系統決定了剩下的千分之幾, 譬如硬碟分割表跟目錄結構.
至於處理硬碟的過程, 對女工來說叫做「瞎子摸象」.
程式員必須根據作業系統的規定, 在作業系統的協助下...
把硬碟上的東西按照程式員的想法搬到記憶體裡面.
很久以前連這種雜事都要全程由女工執行...
奴隸主訓練出來的女工手很巧, 但是有 90% 的時間都在搬磚塊.
現在好多了, 有專門的捆工幫忙搬, 他叫 DMA.
變成「程式員依據作業系統的規則叫女工出一張嘴給 DMA 搬. 」
總之我們說, 硬碟上的東西就像遠在海關外還沒報關的貨櫃.
要讓女工處理, 就要通關卸貨運到廠區裡頭, 每一步都不能少.
這也是記憶體只有 100kb 的年代, 為什麼能使用 10GB 的磁帶機.
硬碟的工作模式同樣長這樣子, 拿來當 swapfile 的也不例外.
那麼 virtual memory 怎麼跟硬碟扯上關係的?
因為這兩個東西對程式員實在太關鍵了, 不八卦一下不行.
很久以前, 程式員寫程式是整個廠區要自己分隔區域安排功能.
這個實在辛苦, 明明我要登陸月球, 卻連馬桶的牌子都要管.
所以廠區的佈置後來統一發包給作業系統處理.
作業系統說, 反正廠區就分割出這種那種的作業區, 你記名字就好.
它先假設一個廠房的佈置方式, 反正我這牌子就是這樣佈置.
虛擬廠區叫做 memory layout, 每個牌子佈置不一樣.
然後把真的廠區切割成很多固定大小的房間, 這叫 paging.
開工的時候會把真實的廠房跟虛擬的廠房套在一起, 這叫 mapping.
做久了發現這有好處, 不過有些東西最好女工可以處理掉.
這個就是 virtual memory management 硬體化.
整個呢, 反正就籠統地叫做 virtual memory.
這個東西會認牌子, 所以不同的作業系統適用在不同的......
不同的什麼我也不會講, 反正它挑機器也挑工作內容就對了.
整個 virtual memory 的機制就用在管理廠區.
所以某個房間可能是甲產品的工具間, 或是乙產品的倉庫.
以前也就這樣而已, 生產甲乙丙丁的時候把整個廠都佔滿了...
產品戊要進來就得先等別人結束.
但是, 厲害的就來了...
反正女工從頭到尾都在瞎子摸象, 所以這隻大象是可以換的.
有些房間太久沒用, 作業系統就會把裡面的東西裝成貨櫃送出去.
然後自己挑另一個貨櫃送進來, 打開之後根據裡面的東西佈置房間.
整齣由作業系統偷天換日的戲碼叫做 swapping, 女工只是從犯.
而這些貨櫃一般都是出到最快的 secondary storage 上.
就這樣, 一個廠區的大小可以塞好幾倍的作業量.
這不代表女工在直接處理硬碟哦, 她仍然講不出東西要放在哪裡.
不過! 這些都是老派.
現在的機器越來越厲害, 以上的場景套到 GPU 上就不成立了.
後面還有 APU, VPU, NPU 什麼鬼的一大堆...
所以女工跟奴隸主也不是很好混.
大概是這樣.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.125.89
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1511235878.A.B76.html
推
11/21 11:48, , 1F
11/21 11:48, 1F
推
11/21 11:51, , 2F
11/21 11:51, 2F
推
11/21 12:00, , 3F
11/21 12:00, 3F
推
11/21 12:02, , 4F
11/21 12:02, 4F
推
11/21 12:06, , 5F
11/21 12:06, 5F
推
11/21 12:13, , 6F
11/21 12:13, 6F
推
11/21 12:23, , 7F
11/21 12:23, 7F
噓
11/21 12:48, , 8F
11/21 12:48, 8F
推
11/21 13:18, , 9F
11/21 13:18, 9F
推
11/30 16:29, , 10F
11/30 16:29, 10F
推
11/30 20:21, , 11F
11/30 20:21, 11F
推
12/05 16:55, , 12F
12/05 16:55, 12F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 19 之 21 篇):