復(fù)習(xí)參考版計(jì)算機(jī)原理standard第5章4講_第1頁
復(fù)習(xí)參考版計(jì)算機(jī)原理standard第5章4講_第2頁
復(fù)習(xí)參考版計(jì)算機(jī)原理standard第5章4講_第3頁
復(fù)習(xí)參考版計(jì)算機(jī)原理standard第5章4講_第4頁
復(fù)習(xí)參考版計(jì)算機(jī)原理standard第5章4講_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本節(jié)概要重點(diǎn)內(nèi)容5.4

虛擬存儲(chǔ)器基本要求理解虛擬存儲(chǔ)器的基本概念掌握邏輯地址—物理地址的轉(zhuǎn)換、頁表和缺頁處理了解替換策略、快表和存儲(chǔ)保護(hù)回顧內(nèi)容5.3高速緩沖存儲(chǔ)器程序訪問的局部性Cache和主存之間的映射方式直接映射/全相聯(lián)映射/組相聯(lián)映射Cache容量和塊大小的選擇Cache的寫策略Write-Back

和Write-ThroughCache替換算法多級(jí)Cache上節(jié)回顧《Computer

Organization

and

Design》

P557

5.10.1、5.10.3題、

P559

5.11.1、5.11.2題、補(bǔ)充題《Computer

Organization

and

Design》第5章第4節(jié)虛擬存儲(chǔ)器拓展閱讀作業(yè)主要內(nèi)容虛擬存儲(chǔ)器的基本概念按需調(diào)頁虛擬地址空間虛擬存儲(chǔ)器組織方式三種方式:頁式、段式、段頁式邏輯地址—物理地址的轉(zhuǎn)換頁表缺頁處理替換策略快表(TLB)存儲(chǔ)保護(hù)地址越界檢查存取權(quán)限檢查存儲(chǔ)器資源由操作系統(tǒng)管理操作系統(tǒng)(OS)通過合理地管理、調(diào)度計(jì)算機(jī)的硬件資源,使其高效利用存儲(chǔ)器作為一種空間資源也由OS管理CPU執(zhí)行的程序總是在操作系統(tǒng)和用戶程序間切換主存中同時(shí)存儲(chǔ)OS和用戶程序。磁盤中也存儲(chǔ)OS和用戶程序CPU執(zhí)行指令時(shí),涉及到存儲(chǔ)器操作,因此,CPU中專門有一個(gè)存儲(chǔ)器管理部件MMU

(MemoryManagement

Unit)協(xié)助OS完成存儲(chǔ)器的訪問OS為“進(jìn)程”分配存儲(chǔ)器資源,先了解一下進(jìn)程的概念。回顧—一個(gè)典型程序的轉(zhuǎn)換處理過程經(jīng)典“hello.c

”C-源程序#

i

n

c

l

u

d

e <

s

p

>

<

s

t

d

i

o

.35

105

110

99

108

117

100

101

32

60

115

116

100

105

111

46h

> \n \

n

i

n

t <

s

p

>

m

a

i

n

(

) \

n

{104

62

10

10

105

110

116

32

109

97

105

110

40

41

10

123\

n

<sp>

<sp>

<sp>

<sp>

p

r

i

n

t

f

(

"

h

e

l10

32

32

32

32

112

114

105

110

116

102

40

34

104

101

108l

o

, <

s

p

>

w

o

r

l

d

\

n

"

)

; \

n

}108

111

44

32

119

111

114

108

100

92

110

34

41

59

10

125hello.c的ASCII文本表示1

#include

<stdio.h>23

int

main()4

{5

printf("hello,

world\n");6

}程序的功能是:輸出“hello,world”“hello”hello可執(zhí)行文件回顧—hello程序的數(shù)據(jù)流動(dòng)過程Red:shell命令行處理

Blue:可執(zhí)行文件加載

Cyan:hello程序執(zhí)行過程“hello”“hello,world/n”“hello,world/n”問題:hello程序何時(shí)被裝入?誰來裝入?又是被誰啟動(dòng)?每次是否被裝到相同的地方?hello程序是否知道在計(jì)算機(jī)中還有其他程序在同時(shí)運(yùn)行嗎?它是否可以直接訪問硬件資源?操作系統(tǒng)在程序執(zhí)行過程中的作用在程序的執(zhí)行過程中,hello程序沒有直接訪問鍵盤、顯示器、磁盤和主存等硬件資源,而是依靠操作系統(tǒng)提供的服務(wù)間接訪問操作系統(tǒng)是應(yīng)用程序和硬件間插入的一個(gè)中間軟件層操作系統(tǒng)的兩個(gè)主要作用:硬件資源管理,以達(dá)到兩個(gè)目的:統(tǒng)籌安排和調(diào)度硬件資源,防止硬件資源被用戶程序?yàn)E用屏蔽復(fù)雜設(shè)備細(xì)節(jié),為用戶程序提供一個(gè)簡(jiǎn)單一致使用接口為用戶使用計(jì)算機(jī)系統(tǒng)提供一個(gè)操作接口或用戶界面操作系統(tǒng)通過三個(gè)基本的抽象概念(進(jìn)程、虛擬存儲(chǔ)器、文件)實(shí)現(xiàn)硬件資源管理文件(files)是對(duì)I/O設(shè)備的抽象表示虛擬存儲(chǔ)器(Virtual

Memory)是對(duì)主存和磁盤I/O的抽象表示進(jìn)程(processes)是對(duì)處理器、主存和I/O設(shè)備的抽象表示例如,調(diào)用printf函數(shù)訪問硬件進(jìn)程(processes)所有系統(tǒng)資源都被自己獨(dú)占使用處理器始終在執(zhí)行本程序的指令進(jìn)程是OS對(duì)運(yùn)行程序的一種抽象一個(gè)系統(tǒng)可同時(shí)運(yùn)行很多進(jìn)程,但每個(gè)進(jìn)程都好像自己是獨(dú)占使用系統(tǒng)實(shí)際上,OS讓處理器按時(shí)間片輪轉(zhuǎn)方式交替地執(zhí)行多個(gè)進(jìn)程中的指令OS實(shí)現(xiàn)交替指令執(zhí)行的機(jī)制稱為“上下文切換(contextswitching)”進(jìn)程的上下文是指進(jìn)程運(yùn)行所需的所有狀態(tài)信息例如:PC、寄存器堆的當(dāng)前值、主存的內(nèi)容、段/頁表系統(tǒng)中有一套狀態(tài)單元存放當(dāng)前運(yùn)行進(jìn)程的上下文hello程序運(yùn)行時(shí),它會(huì)以為(錯(cuò)覺):unix>

./hellohello,

worldunix>[Enter]進(jìn)程(processes)上下文切換過程(任何時(shí)刻,系統(tǒng)中只有一個(gè)進(jìn)程正在運(yùn)行)把正在運(yùn)行的進(jìn)程換下,換一個(gè)新進(jìn)程到處理器執(zhí)行,上下文切換時(shí),須保存換下進(jìn)程的上下文,恢復(fù)換上進(jìn)程的上下文開始shell進(jìn)程等待命令行輸入;輸入“hello”后shell進(jìn)行系統(tǒng)調(diào)用;OS保存shell上下文,創(chuàng)建并換入hello進(jìn)程;

hello進(jìn)程中止時(shí),進(jìn)行系統(tǒng)調(diào)用;OS恢復(fù)shell進(jìn)程上下文,并換入shell進(jìn)程在一個(gè)進(jìn)程的整個(gè)生命周期中,有不同進(jìn)程在處理器交替運(yùn)行,故運(yùn)行時(shí)間很難準(zhǔn)確測(cè)量存儲(chǔ)器管理(Memory

Management)早期采用單道程序,系統(tǒng)的主存中包含操作系統(tǒng)(常駐監(jiān)控程序)正在執(zhí)行的一個(gè)用戶程序無需進(jìn)行存儲(chǔ)管理,即使有也很簡(jiǎn)單?,F(xiàn)在采用多道程序,系統(tǒng)的存儲(chǔ)器中包含操作系統(tǒng)若干用戶程序如果保存在存儲(chǔ)器的進(jìn)程數(shù)很少,若由于進(jìn)程花費(fèi)大量時(shí)間等待I/O操作完成,常會(huì)使處理機(jī)處于空閑狀態(tài)。因此,存儲(chǔ)器需要進(jìn)行合理分配,盡可能讓更多進(jìn)程進(jìn)入存儲(chǔ)器。在多道程序系統(tǒng)中,存儲(chǔ)器的“用戶程序”區(qū)須進(jìn)一步劃分以適應(yīng)多個(gè)進(jìn)程。劃分任務(wù)由OS動(dòng)態(tài)執(zhí)行,稱為存儲(chǔ)器管理(memory

management)Memory

Management

Schema為了使系統(tǒng)盡量多地存儲(chǔ)用戶程序,解決辦法有:擴(kuò)大主存容量(但程序越來越長(zhǎng)、主存貴,不是根本辦法)采用交換(Exchange)方式和覆蓋(Overlap)技術(shù)當(dāng)存儲(chǔ)器中沒有處于就緒狀態(tài)的進(jìn)程(如某時(shí)刻所有進(jìn)程都在等待I/O)時(shí),處理器將一些進(jìn)程調(diào)出寫回到磁盤,然后

OS再調(diào)入其他進(jìn)程執(zhí)行,或新作業(yè)直接覆蓋老作業(yè)的存儲(chǔ)區(qū)分區(qū)(Partitioning)和分頁(Paging)是交換的兩種實(shí)現(xiàn)方式“交換”和“覆蓋”技術(shù)的缺點(diǎn):對(duì)程序員不透明、空間利用率差虛擬存儲(chǔ)器(Virtual

Memory)類似上述分頁方式,但不是把所有頁面一起調(diào)到主存,而是采用“按需調(diào)頁(Demand

Paging)”

,在外存和主存之間以固定頁面進(jìn)行調(diào)度。虛擬存儲(chǔ)器方式下,引入了虛擬地址空間的概念。其概念由英國曼徹斯特大學(xué)的Kilbrn等人于1961年提出虛擬地址引入歷史虛擬地址的出現(xiàn)可以追朔到上世紀(jì)六十年代的Atlas

計(jì)算機(jī)。當(dāng)時(shí)Atlas計(jì)算機(jī)是一個(gè)龐然大物,只有96KB的內(nèi)部存儲(chǔ)器和576KB的磁鼓作為外部存儲(chǔ)器?,F(xiàn)在,我們很難體會(huì)到計(jì)算機(jī)發(fā)展初期,計(jì)算機(jī)使用者的無奈那時(shí)的程序員被迫顯示地管理物理內(nèi)存與磁鼓之間的數(shù)據(jù)交換,盡可能地利用外部存儲(chǔ)器換入換出一些數(shù)據(jù),以擴(kuò)展物理內(nèi)存地址空間。這些數(shù)據(jù)交換嚴(yán)重挫傷了程序員的編程熱情。在這樣的背景下,Atlas計(jì)算機(jī)引入了Virtual

Memory,同時(shí)引入了分頁機(jī)制。過去的50多年來,虛擬存儲(chǔ)技術(shù)已遍及計(jì)算機(jī)系統(tǒng)的各個(gè)方向。從軟件層面,多進(jìn)程的引入順理成章。與多進(jìn)程相關(guān)的虛擬存儲(chǔ)管理機(jī)制更是層出不窮;從硬件層面,多線程處理器已廣泛應(yīng)用;虛擬化技術(shù)更是軟硬件層面的集大成者。這些技術(shù)的發(fā)展已大大地超出了虛擬地址提出者的想象。簡(jiǎn)單分區(qū)(Partitioning)主存分配:操作系統(tǒng):固定用戶區(qū):分區(qū)簡(jiǎn)單分區(qū)方案:使用長(zhǎng)度不等的固定長(zhǎng)分區(qū)(fixed-size

partition)當(dāng)一個(gè)進(jìn)程調(diào)入主存時(shí),分配給它一個(gè)能容納的最小分區(qū)例:對(duì)于需196K的進(jìn)程可分配256K分區(qū)簡(jiǎn)單分區(qū)方式的缺點(diǎn):因?yàn)槭枪潭ㄩL(zhǎng)度的分區(qū),故可能會(huì)浪費(fèi)主存空間。多數(shù)情況下,進(jìn)程對(duì)分區(qū)大小的需求不可能和提供的分區(qū)大小一樣可以采用有效的可變長(zhǎng)分區(qū)的方式!可變長(zhǎng)分區(qū)(Partitioning)可變長(zhǎng)分區(qū)(variable-length

partition)分配的分區(qū)大小與進(jìn)程所需大小一樣特點(diǎn):開始較好,但到最后存儲(chǔ)器中會(huì)有許多小空塊。時(shí)間越長(zhǎng),存儲(chǔ)器的碎片會(huì)越來越多,存儲(chǔ)器的利用率下降更有效的方式是分頁!分頁(Paging)每用的基本思想內(nèi)存分成固定長(zhǎng)且較小的存儲(chǔ)塊,個(gè)進(jìn)程也劃分成固定長(zhǎng)的程序塊程序塊(頁/page)可裝到存儲(chǔ)器可存儲(chǔ)塊(頁框/pageframe)中無需用連續(xù)頁框來存放一個(gè)進(jìn)程操作系統(tǒng)為每個(gè)進(jìn)程生成一個(gè)頁表通過頁表(pagetable)實(shí)現(xiàn)邏輯地址向物理地址轉(zhuǎn)換(Address

Mapping)邏輯地址(Logical

Address)程序中的指令所用的地址物理地址(physical

Address)存放指令或數(shù)據(jù)的實(shí)際內(nèi)存地址浪費(fèi)的空間最多是最后一頁的一部分!采用“按需調(diào)頁/Demand

Paging”方式對(duì)主存進(jìn)行分配!問題:是否需要將一個(gè)進(jìn)程的全部都裝入到內(nèi)存?根據(jù)程序訪問局部性可知:可以僅把當(dāng)前活躍頁面調(diào)

入主存,其余留在磁盤上!虛擬存儲(chǔ)系統(tǒng)的基本概念虛擬存儲(chǔ)技術(shù)的引入用來解決一對(duì)矛盾一方面,由于技術(shù)和成本等原因,主存容量受到限制另一方面,系統(tǒng)程序和應(yīng)用程序要求主存容量越來越大虛擬存儲(chǔ)技術(shù)的實(shí)質(zhì)程序員在比實(shí)際主存空間大得多的邏輯地址空間編寫程序程序執(zhí)行時(shí),把當(dāng)前需要的程序段和相應(yīng)的數(shù)據(jù)塊調(diào)入主存,其他暫不用的部分存放在磁盤上指令執(zhí)行時(shí),通過硬件將邏輯地址(亦稱虛擬地址或虛地址)轉(zhuǎn)化為物理地址(亦稱主存地址或?qū)嵉刂?在發(fā)生程序或數(shù)據(jù)訪問失效時(shí),由操作系統(tǒng)進(jìn)行主存和磁盤之間的信息交換虛擬存儲(chǔ)器機(jī)制由硬件與操作系統(tǒng)共同協(xié)作實(shí)現(xiàn),涉及到OS的許多概念,如進(jìn)程、進(jìn)程的上下文切換、存儲(chǔ)器分配、虛擬地址空間、缺頁處理等虛擬存儲(chǔ)技術(shù)的實(shí)質(zhì)編程空間編程空間程用戶

序1用戶程序k磁盤物理空間用戶程序1用戶程序k用戶程序2主存物理空間用戶程序k片段用戶程序2片段用戶程序1片段操作系統(tǒng)程序頁表通過頁表建立虛擬空間和物理空間的映射!虛擬(邏輯)空間虛擬(邏輯)空間虛擬地址空間虛存為每個(gè)進(jìn)程提供一個(gè)假象好像每個(gè)進(jìn)程都獨(dú)占使用主存,且主存空間極大虛存是主存和磁盤的抽象OS使每個(gè)進(jìn)程看到的存儲(chǔ)空間都一致,稱為虛擬

(邏輯)地址空間Linux

OS虛擬地址空間(其他Unix系統(tǒng)的設(shè)計(jì)類此)內(nèi)核(Kernel)用戶棧(User

Stack)共享庫(Shared

Libraries)堆(heap)可讀寫數(shù)據(jù)(Read/WriteData)只讀數(shù)據(jù)(Read-onlyData)代碼(Code)例如,hello程序被加載器裝入時(shí),首先創(chuàng)建其虛擬地址空間(亦稱為存儲(chǔ)器映像),再將可執(zhí)行文件從磁盤“復(fù)制”到內(nèi)存的代碼段和數(shù)據(jù)段,然后跳轉(zhuǎn)到該程序入口執(zhí)行。問題:加載時(shí)是否真的從磁盤調(diào)入信息到主存?實(shí)際上不會(huì)全部從磁盤調(diào)入,只是將代碼和數(shù)據(jù)按“組塊”與虛擬空間建立對(duì)應(yīng)關(guān)系,稱為“映射”虛擬存儲(chǔ)器管理實(shí)現(xiàn)虛擬存儲(chǔ)器管理,需考慮:①塊大小(在虛擬存儲(chǔ)器中“塊”被稱為“頁/Page”)應(yīng)多大?②主存與輔存的空間如何分區(qū)管理?③

程序塊/存儲(chǔ)塊之間如何映像?④

邏輯地址和物理地址如何轉(zhuǎn)換,轉(zhuǎn)換速度如何提高?⑤主存與輔存間如何進(jìn)行內(nèi)容切換(與Cache所用策略相似)?⑥

頁表如何實(shí)現(xiàn),頁表項(xiàng)中要記錄哪些信息?⑦

如何加快訪問頁表的速度?⑧

如果要找的內(nèi)容不在主存,怎么辦?⑨

如何保護(hù)進(jìn)程各自的存儲(chǔ)區(qū)不被其他進(jìn)程訪問?三種虛擬存儲(chǔ)器實(shí)現(xiàn)方式: 頁式、段式、段頁式頁式虛擬存儲(chǔ)器虛擬地址空間

分成大小相等頁磁盤和主存之間按頁為單位交換信息指令中給出的虛擬地址由虛頁號(hào)和頁內(nèi)偏移組成每個(gè)頁表項(xiàng)記錄對(duì)應(yīng)的虛頁情況物理存儲(chǔ)器和Virtual

page

No.111101101101PagetablePhysical

page

orDisk

addressValidPhysical

memoryDiskstorage頁大小比Cache中Block大得多!采用全相聯(lián)映射!Why?通過軟件來處理“缺頁”!Why?采用Write

Back寫策略!Why?Valid為0說明“miss”(稱為page

fault/缺頁)CPU執(zhí)行指令時(shí),先將邏輯地址轉(zhuǎn)換為物理地址地址轉(zhuǎn)換由MMU實(shí)現(xiàn)缺頁的代價(jià)是多少?讀磁盤(數(shù)百萬個(gè)時(shí)鐘周期)有些系統(tǒng)采用雙表結(jié)構(gòu):主存頁地址和磁盤頁地址分開員看到的地址和處理器使用的物關(guān)系表來存放虛擬地址與物理地關(guān)系表被稱為頁表(Page

Table),個(gè)映射關(guān)系表,但沒有程序員能段物理空間時(shí),首先需從主存的、頁表結(jié)構(gòu)虛擬地址的引入分離了程序理地址,通過建立一個(gè)映射址之間的映射關(guān)系,該映射最易想到的是用主存存放這忍受在使用虛擬地址訪問一頁表中獲得物理地址。每個(gè)進(jìn)程有一個(gè)頁表頁表有裝入位、修改(Dirty)位、替換控制位、訪問權(quán)限位禁止緩存位、實(shí)頁號(hào)頁表項(xiàng)數(shù)由進(jìn)程大小決定頁表在主存的首地址記錄在頁表基址寄存器中須解決頁表占空間過大問題:頁表可能很大,為讓一個(gè)進(jìn)程具有很大的虛擬編程空間,系統(tǒng)必須允許頁表中的項(xiàng)數(shù)足夠多(2)系統(tǒng)中有許多進(jìn)程,而每個(gè)進(jìn)程擁有一個(gè)頁表解決頁表過大的方法:一級(jí)頁表:動(dòng)態(tài)擴(kuò)充,限制大小二級(jí)或多級(jí)頁表:一級(jí)為段,二級(jí)為頁將頁表分頁,當(dāng)前使用頁的頁表項(xiàng)所在頁表保在內(nèi)存,其他放在外存,這樣頁表也要調(diào)進(jìn)調(diào)出邏輯地址轉(zhuǎn)換為物理地址的過程Frame0177168PA01024Memory1K1K1KPage01311K1K1KAddrTransMAP0102431744unit

ofmappingalso

unitoftransfer

fromvirtual

tophysicalmemory邏輯地址轉(zhuǎn)換為物理地址過程:VAPageNo.Disp10IndexintopagetablePage

TableBase

Reg+PageTableVAccessRightsPF#Table

locatedin

physicalmemoryVA

Virtual

Memory當(dāng)V=0時(shí),發(fā)生缺頁當(dāng)讀寫操作不符合AccessRight時(shí),發(fā)生保護(hù)違例FrameNo.DispPA10虛擬存儲(chǔ)器訪問中可能出現(xiàn)的異常情況(1)缺頁(page

fault)產(chǎn)生條件:當(dāng)Valid(有效位/裝入位)為0

時(shí)相應(yīng)處理:從磁盤中讀信息到內(nèi)存,若內(nèi)存沒有空間,則還要從內(nèi)存選擇一頁替換到磁盤上,替換算法類似于Cache,采用回寫法,頁面淘汰時(shí),根據(jù)“dirty”位確定是否要寫磁盤異常處理結(jié)束后:缺頁發(fā)生時(shí),當(dāng)前指令的執(zhí)行被阻塞,當(dāng)前進(jìn)程被掛起;缺頁處理結(jié)束后,回到原指令繼續(xù)執(zhí)行(2)保護(hù)違例(protection_violation_fault)產(chǎn)生條件:當(dāng)Access

Rights(存取權(quán)限)與所指定的具體操作不相符時(shí)相應(yīng)處理:在屏幕上顯示“內(nèi)存保護(hù)錯(cuò)”信息異常處理結(jié)束后:當(dāng)前指令的執(zhí)行被阻塞,當(dāng)前進(jìn)程被終止Access

Rights(存取權(quán)限)可能的取值有哪些?R=Read-only、R/W=read/write、X=execute

onlyTLBs

Making

AddressTranslation

Fast把經(jīng)常要查的頁表項(xiàng)放到Cache中,這種在Cache中的頁表項(xiàng)組成的頁表稱為DiskStorage問題:一次內(nèi)存引用要訪問幾次內(nèi)存?0/1/2/3次?Virtual

Address(Tag+Index)Physical

AddressDirtyRefValidAccess虛頁號(hào):Tag+Index對(duì)應(yīng)物理頁框號(hào)111101Valid111101101101頁表Virtual

Pa先由虛頁號(hào)到TLB中找若TLB中的

V=0

或Tag≠VA,則頁表中找若頁表中V=0,則缺頁,到磁盤中找頁表中需要Tag嗎?為什么?的是什么?TLBTag Page

Frame#引入TLB的目減少到內(nèi)存查頁表的次數(shù)!Physical

MemoryTLB全相聯(lián)時(shí)沒有Index,只有Tag,虛頁號(hào)需與每個(gè)Tag比ge組相聯(lián)時(shí),虛頁號(hào)高位為

Tag,低位為

Index,作組索引Translation

Lookaside

Buffer

or

TLB(快表)Translation

Look-AsideBuffersTLB的一些典型指標(biāo):TLB大?。?6~512項(xiàng)塊大?。?~2項(xiàng)(每個(gè)表項(xiàng)4-8B)命中時(shí)間:0.5~1個(gè)時(shí)鐘周期CacheMainMemoryVACU

TLBPAmiss3hit3頁表hit1miss120

tt1/2

tmiss2Pagefaulthit2多用全相聯(lián):命中率高,小、成本不高

失靶損失:10~100個(gè)時(shí)鐘周期采用隨機(jī)替換策略:降低替換算法開銷

命中率:90~99%采用回寫策略:減少訪問內(nèi)存的次數(shù)可以用硬件也可以用軟件來處理TLB失靶(miss1)Miss1:Miss2:頁面不在主存Miss3:PA

在主存中,不在Cache中miss1>>miss2,

Why?因?yàn)門LB中的項(xiàng)比主存中的頁數(shù)少得多!Miss1處理:查內(nèi)存頁表,若hit2,則將頁表項(xiàng)裝入TLB中,并進(jìn)行地址轉(zhuǎn)換;否則“缺頁”,引起相應(yīng)的異常處理TLB中沒有VA

CPUE500

TLBEntry

組成結(jié)構(gòu)Freescale的E500內(nèi)核為例介紹TLB

Entry

基本組成結(jié)構(gòu)EPN(Effective

Page

Number),RPN(Real

Page

Number),TSIZE(窗口大小,通常為4KB)。其中EPN與TIS和TS字段聯(lián)合組成VPN(Virtual

Page

Number);RPN是物理地址基地址;TSIZE記錄映射窗口的大小,WIMGE和UWRX

為狀態(tài)信息。E500內(nèi)核使用TLB1支持Superpage,使用TLB0支持常規(guī)頁面。真正帶來挑戰(zhàn)的是1GB之上的Superpage。舉例:三種不同缺失的組合三種不同缺失:TLB缺失、Cache缺失、缺頁三種缺失的組合情況的可能性分析可能,TLB命中則頁表一定命中,但實(shí)際上不會(huì)查頁表可能,TLB缺失但頁表可能命中,信息在主存就可能在Cache可能,TLB缺失但頁表可能命中,信息在主存但可能不在Cache可能,TLB缺失頁表可能缺失,信息不在主存一定也不在Cache不可能,頁表缺失,信息不在主存,TLB中一定無該頁表項(xiàng)同上不可能,頁表缺失,信息不在主存,Cache中一定也無該信息最好的情況應(yīng)是:hit、hit、hit,此時(shí)訪問主存幾次?上表,最好的情況是:

hit、hit、miss和miss、hit、hit不需要訪問主存!只需訪問主存1次最壞的情況是:

miss、miss、miss

需訪問磁盤、并訪存至少2次介于最壞和最好之間的是:

miss、hit、miss不需訪問磁盤、但訪存至少2次舉例:內(nèi)置FastMATH

TLB例:頁大小4KB,虛擬地址為32位,則虛頁號(hào)位數(shù)為多少?

32-12=20位地址轉(zhuǎn)換VA→PA根據(jù)PA訪問cache或主存Putting

VM、TLB、Cache

all

together硬件(MMU)硬件(MMU)或軟件(TLB缺失)軟件(缺頁)硬件(Cache)TLB的設(shè)計(jì)問題多進(jìn)程的頻繁切換為TLB制造了不小的麻煩。在現(xiàn)代處理器系統(tǒng)中,每一個(gè)進(jìn)程都使用各自獨(dú)立的虛擬地址空間,進(jìn)程的切換意味著虛擬地址空間的切換,也意味著TLB

的刷新。進(jìn)程的頻繁切換導(dǎo)致TLB需要頻繁預(yù)熱,這個(gè)開銷是難以接受的。多線程處理器的引入再一次增加了TLB設(shè)計(jì)的負(fù)擔(dān)。在多線程處理器中,存在多個(gè)邏輯CPU。幾個(gè)邏輯CPU共享同一條流水線,卻使用不同的虛擬地址空間,這需要使用TLB進(jìn)行虛實(shí)地址轉(zhuǎn)換,在絕大多數(shù)情況下,這些邏輯CPU共享TLB,對(duì)進(jìn)程切換帶來的TLB刷新操作是Zero-Tolerance。這使得LogicalProcessorID也加入到TLB

Entry之中。TLB

經(jīng)歷若干變化后,其Entry

結(jié)構(gòu)日趨穩(wěn)定,卻迎來了更加嚴(yán)厲的挑戰(zhàn)。因?yàn)橹鞔鎯?chǔ)器的膨脹速度已經(jīng)越發(fā)不可控制,程序?qū)χ鞔鎯?chǔ)器容量提出越來越高的要求。主存儲(chǔ)器容量幾乎以每年

100%的速度膨脹,使得TLB

的Coverage

Rate

(TLB所能管理的存儲(chǔ)器空間與主存儲(chǔ)器容量的比值)在逐年降低,直接導(dǎo)致TLBMiss

Rate

的不斷增大。頁式和段式的比較頁式虛擬存儲(chǔ)器的特點(diǎn)優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,開銷少。因?yàn)橹挥羞M(jìn)程的最后一個(gè)零頭(內(nèi)部碎片)不能利用,故浪費(fèi)很小缺點(diǎn):由于頁不是邏輯上獨(dú)立的實(shí)體,可能會(huì)出現(xiàn)如“一條指令跨頁”等情況,使處理、管理、保護(hù)和共享都不方便段式虛擬存儲(chǔ)器的實(shí)現(xiàn)程序員或OS將程序模塊或數(shù)據(jù)模塊分配給不同主存段,一個(gè)大程序由多個(gè)代碼段和多個(gè)數(shù)據(jù)段構(gòu)成,按照程序的邏輯結(jié)構(gòu)劃分成多個(gè)相對(duì)獨(dú)立的部分。(如過程、子程序、數(shù)據(jù)表、陣列等)段通常帶有段名或基地址,便于編寫程序、編譯器優(yōu)化和操作系統(tǒng)調(diào)度管理段可作為獨(dú)立邏輯單位被其他程序調(diào)用,以形成段間連接,產(chǎn)生規(guī)模更大的程序分段系統(tǒng)將主存空間按實(shí)際程序中的段來劃分,每個(gè)段在主存中的位置記錄在段表中,并附以“段長(zhǎng)”項(xiàng)說明段表本身也是主存中的一個(gè)可再定位段段本身是程序的邏輯結(jié)構(gòu)所決定的一些獨(dú)立部分,所以分段對(duì)程序員是不透明的(而分頁對(duì)程序員卻是透明的)段式虛擬存儲(chǔ)器的地址映像Faults(異常情況):缺段(段不存在):裝入位=0地址出界:偏移量超出最大段長(zhǎng)保護(hù)違例:訪問操作不符合訪問方式指定類型物理地址=段起始地址+段內(nèi)偏移量段式虛擬存儲(chǔ)器的地址變換圖段式和段頁式的比較段式虛擬存儲(chǔ)器的特點(diǎn)優(yōu)點(diǎn):段的分界與程序的自然分界對(duì)應(yīng),故段具有邏輯獨(dú)立性,易于編譯、管理、修改和保護(hù),便于多道程序共享;某些類型的段(堆棧、隊(duì)列)具有動(dòng)態(tài)可變長(zhǎng)度,允許自由調(diào)度以有效利用主存空間缺點(diǎn):段長(zhǎng)各不相同,起、終點(diǎn)不定,變化很大,給主存分配帶來麻煩,且易在段間留下許多空余的零碎空間不好利用,造成浪費(fèi)(如:長(zhǎng)段調(diào)出后,調(diào)進(jìn)的短段會(huì)造成碎片)段頁式虛擬存儲(chǔ)器的基本思想段式和頁式有機(jī)結(jié)合。程序按模塊分段,段內(nèi)再分頁,進(jìn)入主存仍以頁為基本單位邏輯地址由段地址、頁地址和頁內(nèi)偏移量三個(gè)字段構(gòu)成用段表和頁表(每段一個(gè))進(jìn)行兩級(jí)定位管理根據(jù)段地址到段表中查閱與該段相應(yīng)的頁表指針,再轉(zhuǎn)向頁表,然后根據(jù)頁地址從頁表中查到該頁在主存中的頁框地址,由此訪問到頁內(nèi)某數(shù)據(jù)段頁式虛擬存儲(chǔ)器的地址變換虛擬存儲(chǔ)器舉例1.某計(jì)算機(jī)系統(tǒng)有一個(gè)TLB和一個(gè)L1DataCache。該系統(tǒng)按字節(jié)編址,虛擬地址16位,物理地址12位,頁大小為128B,TLB采用四路組相聯(lián)方式,共16個(gè)頁表項(xiàng),L1DataCache采用直接映射方式,塊大小為4B,共16行。系統(tǒng)運(yùn)行到某一時(shí)刻時(shí),

TLB、頁表和L1

Data

Cache中部分內(nèi)容如圖示。請(qǐng)問:虛擬地址中哪幾位表示虛擬頁號(hào)?哪幾位表示頁內(nèi)偏移?虛擬頁號(hào)中哪幾位表示TLB標(biāo)記?哪幾位表示TLB索引?物理地址中哪幾位表示物理頁號(hào)?哪幾位表示頁內(nèi)偏移?主存物理地址如何劃分標(biāo)記字段、行索引字段和塊地址字段?(4)CPU從地址067AH中取出的值是多少?說明CPU讀取地址067AH中內(nèi)容的過程。虛擬存儲(chǔ)器舉例組號(hào)標(biāo)記頁框號(hào)有效位標(biāo)記頁框號(hào)有效位標(biāo)記頁框號(hào)有效位標(biāo)記頁框號(hào)有效位0030090D1000070211032D10200400A020200800600303070630D10A341720虛頁號(hào)頁框號(hào)有效位00081010310214103021040051610600707108131091710A0910B00C1910D00E1110F0D1(b)

部分頁表(開始16項(xiàng))虛擬地址067AH=0000011

00

1111010B(a)TLB:四路組相聯(lián),四組,16個(gè)頁表項(xiàng)物理地址0CFAH=11001

1111010B行索引標(biāo)記有效位字節(jié)3字節(jié)2字節(jié)1字節(jié)0001901256C9AC01151021B0034512CD03360043212334C22A050D14667233D06007161125465DC082412362123A092D00A2D1436223C30B00C121768321350D161A3F423110E3312D4A45550F140(C)L1

DataCache:直接映射方式,塊大小為4B,共16行存儲(chǔ)保護(hù)的基本概念虛擬存儲(chǔ)器最重要的功能之一就是允許多個(gè)進(jìn)程共享同一個(gè)主存,同時(shí)對(duì)這些進(jìn)程和操作系統(tǒng)提供存儲(chǔ)保護(hù)保護(hù)機(jī)制必須保證盡管有多個(gè)進(jìn)程在共享同一個(gè)主存,但不管是有意還是無意,一個(gè)惡意進(jìn)程絕不能寫另一個(gè)用戶進(jìn)程或者操作系統(tǒng)的地址空間。什么是存儲(chǔ)保護(hù)?為避免主存中多道程序相互干擾,防止某程序出錯(cuò)而破壞其他程序的正確性,或某程序不合法地訪問其他程序或數(shù)據(jù)區(qū),應(yīng)對(duì)每個(gè)程序進(jìn)行存儲(chǔ)保護(hù)操作系統(tǒng)程序和用戶程序都需要保護(hù)存儲(chǔ)保護(hù)的基本概念發(fā)生存儲(chǔ)保護(hù)錯(cuò)的情況有地址越界(轉(zhuǎn)換得到的物理地址不屬于可訪問范圍)訪問重定位、鍵保護(hù)、環(huán)保護(hù)訪問越權(quán)(訪問操作與所擁有的訪問權(quán)限不符)頁表中設(shè)定權(quán)限訪問屬性的設(shè)定數(shù)據(jù)段可指定R/W或RO;程序段可指定R/E或RO最基本的保護(hù)措施規(guī)定每道程序只能訪問屬于自己所在的存儲(chǔ)區(qū)和共享區(qū)對(duì)于屬自己存儲(chǔ)區(qū)的信息:可讀可寫對(duì)共享區(qū)或已獲授權(quán)的其他用戶信息:可讀不可寫對(duì)未獲授權(quán)的信息(如OS內(nèi)核、頁表等):不可訪問存儲(chǔ)保護(hù)的硬件支持為支持OS的存儲(chǔ)保護(hù),硬件提供三種基本功能:支持至少兩種運(yùn)行模式:管理模式(Supervisor

Mode)用于完成OS各種功能的進(jìn)程為系統(tǒng)進(jìn)程,又稱內(nèi)核(Kern

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論