作者privatewind (傷神客)
看板Grad-ProbAsk
標題Re: [理工] [計組]-虛擬記憶體
時間Sat Sep 25 07:32:31 2010
※ 引述《serflygod (serflygod)》之銘言:
: 對於虛擬記憶體的一些題目常不太會寫
: 像這題的第一題
: http://i215.photobucket.com/albums/cc91/serflygod/04069.jpg
: http://i215.photobucket.com/albums/cc91/serflygod/04070.jpg
: 每一個欄位的bit數我大致算出來了(就是不確定對不對而已)
: 但是我搞不太清楚page table在圖上的哪裡Q_Q
這一題其實沒給圖就可以算出來了…page table在左下角
(1)
一個分頁為2^14 KB,所以virtual number有26bit、physical number有
18bits,又分頁表為直接對映,所以有2^26個entries,每一個entry都記載著
physical number,故大小為2^26 * 18 bits
(2)
byte offset為4bit(一個block有2^16個byte)
再來因為一個cache有4K個blocks,且他是用4-way set,
故index為2^12/2^2=2^10(即算set的數量),其餘就都是tag bits
tag= 32 - 4 - 10 = 18 bits
4K*18
: 另一題
: http://i215.photobucket.com/albums/cc91/serflygod/04071.jpg
: 除了8 segment這個值很確定以外
: 其他值都是看解答看很久才看懂
: 但過一陣子看又看不懂了@@
: 想請問的是
: 白算盤有哪裡對這類問題比較詳細的解釋?
白算盤對segmentation沒有太多的著墨,我記得是只放在Elaboration
不過他的練習題是有相關的題目就是了。
這題是先分頁後,再分段,所以最外層是分段,
碰到題目時,也得先解分段的部份才能解分頁。
首先他有一個STBR暫存器作為基底負責指向分段表,
再利用一個d作為分段表的index,再來是分段表可容
納8個分段,所以s為 3 (2^3=8)
取得了分段表的資訊(segment length及page table base)
segment length用來檢查是否有讀取到非法計憶體。
page table base則是拿來指向分頁表的基底。
再來就是處理分頁了:
一個分段最多容納了2^20 byte,又一個分頁大小為2^12byte
所以一個分頁最多有2^8(2^20/2^12)個分頁,故p為8
因為他支援最多2^26byte,所以最多可分為2^14個分頁
f=14 (不必算valid bit)
再來是q 一個分頁有 q=2^12/2^2=2^10
s=3 d=18 p=8 f=14 q=10
: 順便麻煩高手解答一下第一題
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.187.85
→ privatewind:對了也只能分頁再分段XD 09/25 07:33
※ 編輯: privatewind 來自: 59.126.187.85 (09/25 08:15)
推 serflygod:感謝詳細的解釋,我思考一下 09/25 17:09
推 serflygod:有比較理解了,感謝你 09/25 17:23