❶ 虛擬存儲器技術主要用於解決什麼問題簡述虛擬存儲器的基本工作原理。
虛擬存儲器技術主要解決電腦內存不夠的問題,電腦中所運行的程序均需經由內存執行,若執行的程序佔用內存很大或很多,則會導致內存消耗殆盡。
為解決該問題,Windows中運用了虛擬內存技術,即勻出一部分硬碟空間來充當內存使用。當內存耗盡時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。若計算機運行程序或操作所需的隨機存儲器(RAM)不足時,則 Windows 會用虛擬存儲器進行補償。
工作原理
1、中央處理器訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即將邏輯組號a作為索引,查地址變換表,以確定該組信息是否存放在主存內。
2、如該組號已在主存內,則轉而執行④;如果該組號不在主存內,則檢查主存中是否有空閑區,如果沒有,便將某個暫時不用的組調出送往輔存,以便將這組信息調入主存。
3、從輔存讀出所要的組,並送到主存空閑區,然後將那個空閑的物理組號a和邏輯組號a登錄在地址變換表中。
4、從地址變換表讀出與邏輯組號a對應的物理組號a。
5、從物理組號a和組內位元組地址b得到物理地址。
6、根據物理地址從主存中存取必要的信息。
(1)實模擬存儲器定址過程擴展閱讀:
相關概念
1、實地址與虛地址
用戶編製程序時使用的地址稱為虛地址或邏輯地址,其對應的存儲空間稱為虛存空間或邏輯地址空間;而計算機物理內存的訪問地址則稱為實地址或物理地址,其對應的存儲空間稱為物理存儲空間或主存空間。程序進行虛地址到實地址轉換的過程稱為程序的再定位。
2、虛擬內存的訪問過程
虛存空間的用戶程序按照虛地址編程並存放在輔存中。程序運行時,由地址變換機構依據當時分配給該程序的實地址空間把程序的一部分調入實存。
每次訪存時,首先判斷該虛地址所對應的部分是否在實存中:如果是,則進行地址轉換並用實地址訪問主存;否則,按照某種演算法將輔存中的部分程序調度進內存,再按同樣的方法訪問主存。
3、異構體系
從虛存的概念可以看出,主存-輔存的訪問機制與cache-主存的訪問機制是類似的。這是由cache存儲器、主存和輔存構成的三級存儲體系中的兩個層次。cache和主存之間以及主存和輔存之間分別有輔助硬體和輔助軟硬體負責地址變換與管理,以便各級存儲器能夠組成有機的三級存儲體系。
❷ 存儲器定址方式
1. MOV AX, ES:[1000H]源操作數的定址方式是? 直接定址
2. MOV AX, BAH[DI]源操作數的定址方式是? 寄存器相對定址
3. MOV AX, COUNT[BX]源操作數的定址方式是? 寄存器相對定址
4. MOV AX, COUNT[AX]源操作數的定址方式是?
MOV AX, COUNT[BX]寄存器相對定址,MOV AX, COUNT[AX]是錯的
5. MOV [AX], COUNT[BX][DI]源操作數的定址方式是? 相對基址變址定址
6. MOV [BX], COUNT[BX][DI]源操作數的定址方式是? 相對基址變址定址
7. MOV AX, COUNT[BX][BP]源操作數的定址方式是? 錯的
8. MOV AX, COUNT[BX][SI]源操作數的定址方式是?相對基址變址定址
❸ 試說明實模式下存儲器如何定址
8086/8088的cpu中ALU的寬度只有16位,也就是說直接加以運算的指針長度為16位,最大定址范圍為2的16次方即64k! 而當時intel在8086/8088中決定採用1M的內存空間,就決定了地址匯流排為20位(2的20次方為1M)
http://topic.csdn.net/t/20030824/14/2182480.html
自己去看吧
❹ cpu是如何在內存中定址的
各種內存概念
這里需要明確的是,我們討論的不同內存的概念是建立在定址空間上的。
IBM推出的第一台PC機採用的CPU是8088晶元,它只有20根地址線,也就是說,它的地址空間是1MB。
PC機的設計師將1MB中的低端640KB用作RAM,供DOS及應用程序使用,高端的384KB則保留給ROM、視頻適配卡等系統使用。從此,這個界限便被確定了下來並且沿用至今。低端的640KB就被稱為常規內存即PC機的基本RAM區。保留內存中的低128KB是顯示緩沖區,高64KB是系統 BIOS(基本輸入/輸出系統)空間,其餘192KB空間留用。從對應的物理存儲器來看,基本內存區只使用了512KB晶元,佔用0000至80000這 512KB地址。顯示內存區雖有128KB空間,但對單色顯示器(MDA卡)只需4KB就足夠了,因此只安裝4KB的物理存儲器晶元,佔用了B0000至 B10000這4KB的空間,如果使用彩色顯示器(CGA卡)需要安裝16KB的物理存儲器,佔用B8000至BC000這16KB的空間,可見實際使用的地址范圍都小於允許使用的地址空間。
在當時(1980年末至1981年初)這么「大」容量的內存對PC機使用者來說似乎已經足夠了,但是隨著程序的不斷增大,圖象和聲音的不斷豐富,以及能訪問更大內存空間的新型CPU相繼出現,最初的PC機和MS-DOS設計的局限性變得越來越明顯。
●1.什麼是擴充內存?
到1984年,即286被普遍接受不久,人們越來越認識到640KB的限制已成為大型程序的障礙,這時,Intel和Lotus,這兩家硬、軟體的傑出代表,聯手制定了一個由硬體和軟體相結合的方案,此方法使所有PC機存取640KB以上RAM成為可能。而Microsoft剛推出Windows不久,對內存空間的要求也很高,因此它也及時加入了該行列。
在1985年初,Lotus、Intel和Microsoft三家共同定義了LIM-EMS,即擴充內存規范,通常稱EMS為擴充內存。當時,EMS需要一個安裝在I/O槽口的內存擴充卡和一個稱為EMS的擴充內存管理程序方可使用。但是I/O插槽的地址線只有24位(ISA匯流排),這對於386以上檔次的32位機是不能適應的。所以,現在已很少使用內存擴充卡。現在微機中的擴充內存通常是用軟體如DOS中的EMM386把擴展內存模擬或擴充內存來使用。所以,擴充內存和擴展內存的區別並不在於其物理存儲器的位置,而在於使用什麼方法來讀寫它。下面將作進一步介紹。
前面已經說過擴充存儲器也可以由擴展存儲器模擬轉換而成。EMS的原理和XMS不同,它採用了頁幀方式。頁幀是在1MB空間中指定一塊64KB空間(通常在保留內存區內,但其物理存儲器來自擴展存儲器),分為4頁,每頁16KB。EMS存儲器也按16KB分頁,每次可交換4頁內容,以此方式可訪問全部 EMS存儲器。符合EMS的驅動程序很多,常用的有EMM386.EXE、QEMM、TurboEMS、386MAX等。DOS和Windows中都提供了EMM386.EXE。
●2.什麼是擴展內存?
我們知道,286有24位地址線,它可定址16MB的地址空間,而386有32位地址線,它可定址高達4GB的地址空間,為了區別起見,我們把1MB以上的地址空間稱為擴展內存XMS(eXtend memory)。
在386以上檔次的微機中,有兩種存儲器工作方式,一種稱為實地址方式或實方式,另一種稱為保護方式。在實方式下,物理地址仍使用20位,所以最大定址空間為1MB,以便與8086兼容。保護方式採用32位物理地址,定址范圍可達4GB。DOS系統在實方式下工作,它管理的內存空間仍為1MB,因此它不能直接使用擴展存儲器。為此,Lotus、Intel、AST及Microsoft公司建立了MS-DOS下擴展內存的使用標准,即擴展內存規范XMS。我們常在Config.sys文件中看到的Himem.sys就是管理擴展內存的驅動程序。
擴展內存管理規范的出現遲於擴充內存管理規范。
●3.什麼是高端內存區?
在實方式下,內存單元的地址可記為:
段地址:段內偏移
通常用十六進制寫為XXXX:XXXX。實際的物理地址由段地址左移4位再和段內偏移相加而成。若地址各位均為1時,即為FFFF:FFFF。其實際物理地址為:FFF0+FFFF=10FFEF,約為1088KB(少16位元組),這已超過1MB范圍進入擴展內存了。這個進入擴展內存的區域約為64KB,是1MB以上空間的第一個64KB。我們把它稱為高端內存區HMA(High Memory Area)。HMA的物理存儲器是由擴展存儲器取得的。因此要使用HMA,必須要有物理的擴展存儲器存在。此外HMA的建立和使用還需要XMS驅動程序 HIMEM.SYS的支持,因此只有裝入了HIMEM.SYS之後才能使用HMA。
●4.什麼是上位內存?
為了解釋上位內存的概念,我們還得回過頭看看保留內存區。保留內存區是指640KB~1024KB(共384KB)區域。這部分區域在PC誕生之初就明確是保留給系統使用的,用戶程序無法插足。但這部分空間並沒有充分使用,因此大家都想對剩餘的部分打主意,分一塊地址空間(注意:是地址空間,而不是物理存儲器)來使用。於是就得到了又一塊內存區域UMB。
UMB(Upper Memory Blocks)稱為上位內存或上位內存塊。它是由擠占保留內存中剩餘未用的空間而產生的,它的物理存儲器仍然取自物理的擴展存儲器,它的管理驅動程序是EMS驅動程序。
●5.什麼是SHADOW(影子)內存?
對於細心的讀者,可能還會發現一個問題:即是對於裝有1MB或1MB以上物理存儲器的機器,其640KB~1024KB這部分物理存儲器如何使用的問題。由於這部分地址空間已分配為系統使用,所以不能再重復使用。為了利用這部分物理存儲器,在某些386系統中,提供了一個重定位功能,即把這部分物理存儲器的地址重定位為1024KB~1408KB。這樣,這部分物理存儲器就變成了擴展存儲器,當然可以使用了。但這種重定位功能在當今高檔機器中不再使用,而把這部分物理存儲器保留作為Shadow存儲器。Shadow存儲器可以占據的地址空間與對應的ROM是相同的。Shadow由RAM組成,其速度大大高於ROM。當把ROM中的內容(各種BIOS程序)裝入相同地址的Shadow RAM中,就可以從RAM中訪問BIOS,而不必再訪問ROM。這樣將大大提高系統性能。因此在設置CMOS參數時,應將相應的Shadow區設為允許使用(Enabled)。
●6、什麼是奇/偶校驗?
奇/偶校驗(ECC)是數據傳送時採用的一種校正數據錯誤的一種方式,分為奇校驗和偶校驗兩種。
如果是採用奇校驗,在傳送每一個位元組的時候另外附加一位作為校驗位,當實際數據中「1」的個數為偶數的時候,這個校驗位就是「1」,否則這個校驗位就是 「0」,這樣就可以保證傳送數據滿足奇校驗的要求。在接收方收到數據時,將按照奇校驗的要求檢測數據中「1」的個數,如果是奇數,表示傳送正確,否則表示傳送錯誤。
同理偶校驗的過程和奇校驗的過程一樣,只是檢測數據中「1」的個數為偶數。
●1.什麼是CL延遲?
CL反應時間是衡定內存的另一個標志。CL是CAS Latency的縮寫,指的是內存存取數據所需的延遲時間,簡單的說,就是內存接到CPU的指令後的反應速度。一般的參數值是2和3兩種。數字越小,代表反應所需的時間越短。在早期的PC133內存標准中,這個數值規定為3,而在Intel重新制訂的新規范中,強制要求CL的反應時間必須為2,這樣在一定程度上,對於內存廠商的晶元及PCB的組裝工藝要求相對較高,同時也保證了更優秀的品質。因此在選購品牌內存時,這是一個不可不察的因素。
還有另的詮釋:內存延遲基本上可以解釋成是系統進入數據進行存取操作就緒狀態前等待內存響應的時間。
打個形象的比喻,就像你在餐館里用餐的過程一樣。你首先要點菜,然後就等待服務員給你上菜。同樣的道理,內存延遲時間設置的越短,電腦從內存中讀取數據的速度也就越快,進而電腦其他的性能也就越高。這條規則雙雙適用於基於英特爾以及AMD處理器的系統中。由於沒有比2-2-2-5更低的延遲,因此國際內存標准組織認為以現在的動態內存技術還無法實現0或者1的延遲。
通常情況下,我們用4個連著的阿拉伯數字來表示一個內存延遲,例如2-2-2-5。其中,第一個數字最為重要,它表示的是CAS Latency,也就是內存存取數據所需的延遲時間。第二個數字表示的是RAS-CAS延遲,接下來的兩個數字分別表示的是RAS預充電時間和Act- to-Precharge延遲。而第四個數字一般而言是它們中間最大的一個。
總結
經過上面分析,內存儲器的劃分可歸納如下:
●基本內存 占據0~640KB地址空間。
●保留內存 占據640KB~1024KB地址空間。分配給顯示緩沖存儲器、各適配卡上的ROM和系統ROM BIOS,剩餘空間可作上位內存UMB。UMB的物理存儲器取自物理擴展存儲器。此范圍的物理RAM可作為Shadow RAM使用。
●上位內存(UMB) 利用保留內存中未分配使用的地址空間建立,其物理存儲器由物理擴展存儲器取得。UMB由EMS管理,其大小可由EMS驅動程序設定。
●高端內存(HMA) 擴展內存中的第一個64KB區域(1024KB~1088KB)。由HIMEM.SYS建立和管理。
●XMS內存 符合XMS規范管理的擴展內存區。其驅動程序為HIMEM.SYS。
●EMS內存 符合EMS規范管理的擴充內存區。其驅動程序為EMM386.EXE等。
內存:隨機存儲器(RAM),主要存儲正在運行的程序和要處理的數據。
補充說一下:
內存的分區就像體育場館的座位,基本內存(64K以下)為比賽場地,必須有的。
保留內存:為運動員和教練員席,也是必需的。
以上兩項加起來,為1024KB,也就是0,1兆。
以後的內存都為體育館的觀眾席。觀眾席越多,體育館賺的錢越多。但體育館的設施和管理能力是有限的,操作系統相當體育館的管理者,只能管理3.5G的內存,1G=1024兆。win7可多管一些,32位的操作系統(xp,win7)都是3.5G。64位的多一些。
所以,內存並不是插得越多越好。而是要匹配,獲得最佳性價比才是最好的。
還有虛擬內存的問題,相當於內存的周轉庫房,一般由系統自動制定,了解即可。如果想學dos的話,可使用EMM386管理,具體的去找DOS教材,不是簡介的那種,是命令詳解的那種。上面都有。
❺ S7-200PLC存儲器定址方式有哪幾種
S7-200PLC根據存儲器的編程元件,把數據存儲在不同的存儲單元,通過每個單元的地址 進行數據訪問,訪問數據的過程稱為「定址」,根據訪問數據存取的方式不同.可劃分為直接定址和間接定址。
1.直接定址
直接定址就是明確存儲器的區域、長度和位置,直接使用存儲器編程元件的名稱和地址進行數據交換,使用戶程序直接存取這些數據。直接定址包括位定址、位元組定址、字定址、雙字定址等方式。
(1)位定址方式
位(bit)定址方式用來表示「開關量或邏輯量」的工作過程。進行位定址時,要指定存儲器 編程元件的名稱、位元組地址和位地址,並把該位看成是一個獨立的元件。
(2)位元組、字、雙字定址方式
除了按位定址方式外,還可按數據存儲區域(I、Q、M、V、L、 S、SM等)的位元組、字和雙字的地址格式存取數據,進行位元組、字、雙字定址方式時,要指定存儲區域標識符、數據長度和起始地址。
2.間接定址
間接定址是使用指針的方式來訪問存儲器中的數據,而不是直接使用編程元件的地址編號 來訪問存儲器中的數據。
❻ 計算機組成原理——虛擬存儲器
(1)程序員在比實際主存大得多的邏輯地址空間中編寫程序
(2)程序執行時,把當前需要的程序段和數據塊掉入主存,其他暫不使用的放在磁碟上
(3)執行指令時,通過硬體將邏輯地址轉化為物理地址。虛擬地址高位為虛頁號,低位為頁內偏移地址
(4)當程序發生數據訪問或程序訪問失效(缺頁時),由操作系統把信息從磁碟調入主存中
(1)基本思想:
內存被分成固定長度且長度較小的存儲塊(頁框,實頁,物理頁)
每個進程也被劃分為固定長度的程序塊(頁,虛頁,邏輯頁)
通過頁表,實現邏輯地址想物理地址的轉化
(2)邏輯地址
程序中指令所使用的地址(進程所在地址空間)
(3)物理地址
存放指令或數據的實際內存地址
(1)與「cache-主存」層次相比,頁大小遠比cache的行大小要大(windows中的頁位4k)
(2)採用全相聯映射方式:磁碟中的任意一個頁能用射到內存中的任意一個頁
因為缺頁導致中斷時,操作系統從磁碟拿數據通常要耗費幾百萬個時鍾周期。增大頁大小,可以減少缺頁中斷
(3)為什麼讓軟體處理「缺頁」
因為訪問磁碟需要好粉幾百萬個時鍾周期,硬體即使能立刻把地址打給磁碟,磁碟也不能立即響應
(4)為什麼地址轉換用硬體實現
硬體實現地址轉換可以加快指令的執行速度
(5)為什麼頁寫會策略採用write back
避免頻繁的慢速磁碟訪問
頁表的首地址放在基址寄存器。採用基址定址方式
每個頁表項前面有一個虛頁號:從0開始遞增的序號。頁表項又分為幾個結構:
(1)裝入位:該頁是否在內存中
(2)修改位:該也在內存中是否被修改
(3)替換控制位:用於clock演算法
(4)其他
(5)實頁號(8進制)
(1)一次磁碟引用需要訪問幾次主存?2次,一次查頁表,一次查物理地址。於是,把經常查的頁表放到cache中。這種在cache頁表項組成的頁表稱為TLB(Translation Lookside Buffer)
(2)TLB的頁表結構:tag + 主存中的頁表項
當採用全相連映射時,tag為頁表項前面的虛頁號。需要把tag和虛頁號一一比較
當採用組相聯映射時,tag被分為tag+index,虛頁號的高位為tag,虛頁號的低位為index,做組內索引(屬於組內第幾行)
1.段式存儲是根據程序邏輯,給程序分段。使得每段大小不同。這種虛擬地址劃分方法適合程序設計
2.段式存儲的虛擬地址由段號和段內偏移地址組成。段式虛擬存儲器到物理地址的映射通過段表實現
3.段式虛擬存儲會造成空頁
1.段頁式虛擬存儲,先把程序按照邏輯分成段,再把每段分成固定大小的頁。
2.程序對主存的調入調出是按照頁面進行的;但他有可以根據段實現共享和保護
3.缺點是段頁式虛擬地址轉換成物理地址需要查詢2個表:段表和頁表。段表找到相應頁表的位置,頁表找到想也頁的位置
4.段頁式細膩地址的結構可以為以下形式:
程序地址: 用戶號(進程pid) | 段號 | 頁號 | 頁內偏移地址
(1)某計算機的cache塊工16塊,採用二路組相聯映射方式,每個主存塊大小為32位元組,按照位元組編制。則主存129號單元的主存塊硬裝如刀cache的組號是:(C)A、0 B、2 C、4 D、6
解:二路組相聯,所以每組2塊,共有16/2=8組,所以組號佔3位。
每塊32位元組,所以塊內地址佔5位。
129轉化為二進制:1000 0001:前3位為組號,100:=4
(2)假設用若干個2K4位的晶元組成一個8K8位的存儲器,則地址0B1FH所在晶元的最小地址為:
解:用2片組成一行,共4行,所以片選地址佔2位。片內地址有2k=211,所以佔11位
0B1FH:000|0 1|011 0001 1111 這三段為前綴,片選地址,片內地址。
該片晶元的最小地址是片內地址全0:000|0 1|000 0000 0000 = 0800H
(3)某計算機的主存地址空間大小為256MB,按位元組編址,指令cache和數據cache分離,均有8個cache行,每行大小為64B,數據cache採用直接映射方式,現有兩個程序A,B對數組int a[256][256]進行遍歷,程序A按行遍歷,程序B按列遍歷。假定int類型數據用32位補碼表示,數組a按行優先方式存儲,其地址為320(十進制)。
問:(1) 若不考慮cache一致性維護和替換演算法所需的控制位,則數據cache的總容量佔多少?
(2) 數組元素a[0][31]和a[1][1]各自所在主存塊對應的cache行號分別為多少(cache從0行開始)?
(3)程序A和B的數據訪問命中率各自為多少?哪個程序的執行時間更短?
解:(1) 因為cache的總容量是cache每行的數據存儲大小+tag位+數據是否有效位+其他一致性控制位。
主存地址空間256MB,佔28位。直接映射方式,8行,行號佔3位。每行64B,所以塊內地址佔6位,因此,tag佔28-3-6=19位
每行有一個數據有效位。因此,cache共(19+1+648)8 = 532位元組
(2) 因為int類型佔32位,所以一個int佔4B。a[0][31] = 320 + 314 = 444 a1 = 320 + 4(256+1) = 1348。
塊內地址佔6位,直接映射下行號佔3位,因此444 = 110 | 111100,所以行號為6
1348 = 10 | 101 | 000100,所以行號為5
(3) 因為1行cache佔64B,每個int數佔4B,所以一行有16個數。第一個數會因cache缺失而不命中,然後調入cache。,使得後面的15個int訪問全部命中。所以命中率為1516 對於程序B,每次調入16個數,小於數組每行的128個元素,因此每次都不會命中,命中率為0
❼ 存儲器定址方式有哪些立即數定址和寄存器定址是嗎
立即定址,寄存器定址,直接定址,寄存器間接定址,位定址,基址加變址寄存器間接定址,相對定址,一共7種
❽ 什麼是存儲器定址
存儲器定址是寄存器與存儲器間的定址方式。使用存儲器定址的指令,其操作數通常存放在代碼段之外的存儲區,如數據段、堆棧段和附加段。指令中,通常給出的是存儲單元地址或產生存儲單元地址的有關信息。執行指令時,需要首先計算出數據存放的有效地址,接著計算出其在存儲器中的物理地址,然後訪問存儲器,讀取數據,再執行指令規定的基本操作。
❾ 存儲器定址方式有哪些
存儲器定址可進一步分為直接定址、寄存器間接定址、寄存器相對定址、基址變址定址、相對基址變址定址