當前位置:首頁 » 服務存儲 » 為什麼要對存儲器分段
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

為什麼要對存儲器分段

發布時間: 2022-09-05 04:58:36

『壹』 80486系統中,存儲器為什麼要分段分段的原則是什麼

80386和80486cpu的地址線和數據線各為32,也就是說在實模式下該cpu訪問的最大存儲地址空間為2^32=4GB。那麼如果我要訪問的地址的空間起始地址超過了4GB呢?那怎麼辦,是不是就沒辦法了呢?
為解決這一問題,在這里提到的就是保護模式,保護模式下程序員可以獲得更大的存儲地址空間(即虛擬地址)。這樣,對於80286來說,偏移量為16位,每個段最大為64KB,可提供的虛擬存儲空間為1GB(2^30個位元組)。對於386和486CPU來說,偏移量為32位,每個段最大為4GB,可提供的虛擬存儲空間為2^46=64TB。保護模式下對存儲器分段也就是這個原理,這也是為了方便管理存儲器而採用的更有效的方法。後面也有比分段管理更高級的分頁管理機制。當然,這是後話了。(這個和寄存器間接定址類似卻略有不同)。
沒看懂的話建議您去看一些比較基礎的書籍,原理性的東西。這本《微機原理》貌似就不錯,呵呵。希望對你有所幫助。

『貳』 8086cpu儲存器為什麼採用分段

8086/8088系統中,存儲器分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。一個段最大為64KB,最小為16B。

存儲器一般用來保存程序的中間結果,為隨後的指令快速提供操作數,從而避免把中間結果存入內存,再讀取內存的操作。

由於存儲器的個數和容量都有限,不可能把所有中間結果都存儲在存儲器中,所以,要對存儲器進行適當的調度。根據指令的要求,管理安排適當的寄存器,避免操作數過多的傳送操作。

8086/8088CPU可直接定址1MB的存儲器空間,直接定址需要20位地址碼,而所有內部寄存器都是16位的,只能直接定址6KB,因此採用分段技術來解決。將1MB的存儲空間分成若干邏輯段,每段最長64KB,最短16B。這些邏輯段在整個存儲空間中可浮動。

『叄』 為什麼8086對存儲器要採用分段管理

8086是一個16位的結構,採用分段管理辦法可形成超過16位的存儲器物理地址,擴大對存儲器的定址范圍(1MB,20位地址)。

這兩個地址都是16位的,將這兩個地址採用相加的方式組成20位地址去訪問存儲器。在8086系統的地址形成中,當段地址確定後,該段的定址范圍就已經確定,其容量不大於64KB。同時,通過修改段寄存器內容,可達到邏輯段在整個1MB存儲空間中浮動。

(3)為什麼要對存儲器分段擴展閱讀:

8086處理器的時鍾頻率介於4.77MHz(在原先的IBM PC頻率)和10 MHz之間。8086 沒有包含浮點指令部分(FPU),但是可以通過外接數學輔助處理器來增強浮點計算能力。Intel 8087 是標准版本。

分段管理是管理若干分段組成的作業,且按分段來進行存儲分配。實現分段管理的關鍵在於,如何保證分段(二維)地址空間中的一個作業在線性(一維)的存儲空間中正確運行。也就是說,如何把分段地址結構變換成線性的地址結構。

『肆』 8086系統中的存儲器為什麼要採用分段結構有什麼好處

8086CPU中的寄存器都是16位的,16位的地址只能訪問64KB的內存。086系統中的物理地址是由20根地址匯流排形成的,要做到對20位地址空間進行訪問,就需要兩部分地址,在8086系統中,就是由段基址和偏移地址兩部分構成。

這兩個地址都是16位的,將這兩個地址採用相加的方式組成20位地址去訪問存儲器。在8086系統的地址形成中,當段地址確定後,該段的定址范圍就已經確定,其容量不大於64KB。同時,通過修改段寄存器內容,可達到邏輯段在整個1MB存儲空間中浮動。

各個邏輯段之間可以緊密相連,可以中間有間隔,也可以相互重疊(部分重疊,甚至完全重疊)。採用段基址和偏移地址方式組成物理地址的優點是:滿足對8086系統的1MB存儲空間的訪問,同時在大部分指令中只要提供16位的偏移地址即可。

(4)為什麼要對存儲器分段擴展閱讀

把段的起始單元的物理地址除以16的結果稱為段地址,它為16位,寫成十六進制是4位:XXXXH。顯然,段地址決定了段在lMB空間中的位置。段內各存儲單元相對段的起始單元都有一個距離,稱為段內偏移量。

在對內存進行操作時,段地址先確定下來,然後給出不同的段內偏移量,就可以實現段內的定址。段地址也是可以改變的,即段在1MB空間中的位置是可變的,因而可實現1MB的全范圍定址。

由於採用了分段結構,因此可以把每一個存儲單元看成是具有兩種類型的地址:物理地址和邏輯地址。物理地址就是實際地址,它具有20位的地址值,它惟一地標識1MB存儲空間的某一存儲單元。CPU與存儲器之間的信息交換都是使用這個物理地址。

邏輯地址是編程時所使用的地址,它由段地址和段內偏移量組成。邏輯地址和物理地址的關系為:物理地址=段地址16+段內偏移量。由邏輯地址形成物理地址是由匯流排介面部件中的電路實現的。

『伍』 為什麼要對寄存器進行分段管理,分段管理的原則是什麼

應該是對存儲器分段管理吧。
因為在8086系統中,寄存器是16位的,而8086卻有20根地址線,8086的定址是通過段地址與偏移地址合成的,這樣的話,如果用cs來指明段地址,用IP指出偏移地址,由於IP是16位的,它能表示的偏移地址只有0000H--FFFFH,也就是共64K,而8086地址線有20根,也就是可以定址空間為1M,這樣就需要通過分段管理,每段最多為64K,最小為16個位元組,並且每段必須以16的倍數開始,也就是說每段的最後一位必須為0,如00000H,10000H,00010H,等。
並且段與段之間可以重疊。

『陸』 8086/8088CPU使用的存儲器為什麼要分段

8086/8088系統中,存儲器為什麼要分段?一個段最大為多少位元組?最小為多少位元組? 解:分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。一個段最大為64KB,最小為16B。

『柒』 怎樣理解存儲器地址的分段,老是不理解為啥要分段啊

8086CPU的數據線是16位的(16位機),所以,CPU內部的寄存器包括地址寄存器都是16位的,因而對地址的操作也只能是16位,也就是說,對於8086,操作數的尋找限制在64 K范圍內。但8086有20條地址線,它的直接定址能力為1M位元組。這樣就產生了一個矛盾,即16位地址寄存器如何去定址20位的存儲器的物理地址。解決這個問題的辦法就是8086對存儲器進行分段管理,將1 M位元組的內存儲器,分為若干個存儲區域,每個區域稱為一個段,每一段都在一個連續的區域內,容量最大為64 K位元組。
合成物理地址時,將段地址左移4位(擴展成20位),再加上16位偏移量。段地址是由8086中的段寄存器提供的。物理地址形成公式為:物理地址=(段寄存器)×16+16位偏移量。

『捌』 8086cpu為什麼要對存儲器採用分段管理一個邏輯段最多包含多少個存儲單元

只要學過匯編的人都知道8086處理器對存儲器採用分段管理機制,為什麼要這么設計呢?採用線性地址直接訪問存儲器該多好,直接明了。

其實Intel的工程師絕對不會那麼傻,當然是有他的道理:

首先,地址匯流排有20根,可定址1M的地址空間,而寄存器是16位,僅能定址64K,總不能白白浪費多出來的空間。要知道在8086的那個年代,內存是非常昂貴的。

所以Intel的工程師想出了分段管理的方法:段地址x4+偏移地址。

另外,分段管理還有利於代碼的組織,對內存實現有效的管理。例如,將代碼段、數據段隔離等。

學習過程中,如果按照書中所描述,照搬的學習,既不方便記憶,也不能將知識融會貫通。

『玖』 內存為什麼要分段 分成多少種段 段與段寄存器的區別

8086CPU有20根地址線,最大可定址內存空間為1MB。而8086的寄存器只有16位,指令指針(IP)和變址寄存器(SI、DI)也是16位的。用16位的地址定址1MB空間是不可能的。所以就要把內存分段,也就是把1MB空間分為若干個段,每段不超過64KB,在8086中設置4個16位的段寄存器,用於管理4種段:CS是代碼段,DS是數據段,SS是堆棧段,ES是附加段。
把內存分段後,每一個段就有一個段基址,段寄存器保存的就是這個段基址的高16位,這個16位的地址左移四位(後面加上4個0)就可構成20位的段基址。

『拾』 8086/8088CPU使用的存儲器為什麼要分段怎麼分段

8086/8088系統中,存儲器為什麼要分段。

一個段最大為多少位元組。

最小為多少位元組。

解:分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。

一個段最大為64KB,最小為16B。

(10)為什麼要對存儲器分段擴展閱讀:

段的開始地址總是是16的倍數。即:若一個段的起始地址為0000h,那麼另一個段(重疊第一個段)的起始地址將為:0010h(即16),下一個段的起始地址將為0020h(32)。

一個段的段號由其物理地址的前4個16進制數組成。(如:FFFF)

通常,程序只寫出偏移量(從段的第一個位元組到要定位地址的距離),段號可以通過上下文判斷。偏移量大小從0000到FFFF。