指令中的地址碼,是參加運算的運算元的記憶體單元地址時稱為直接地址。擴充直接地址有兩種解釋,對應用程式來說,擴充直接地址是指擴充直接地址項個數,加快索引速度;對計算機系統來說,擴充直接地址是指擴充計算機記憶體空間。在計算機中,尋找有效直接地址的方法稱做直接定址。
基本介紹
- 中文名:擴充直接地址
- 外文名:Extend Direct Address
- 學科:計算機
- 定義:擴充直接地址項個數
- 目的:加快系統運行速度
- 領域:計算機系統
簡介,直接定址,有關術語,地址空間,物理地址,物理地址擴展,間接地址,
簡介
在計算機中,直接地址是地址空間中的物理地址。擴充直接地址是指擴充程式中直接地址項的個數或擴充物理地址空間(即物理地址擴展),因為現在作業要求的地址空間大小,很多都超過記憶體空間的大小,從物理上增加記憶體容量,往往受到機器自身的限制,同時也增加系統成本,有很多限制。而增加一個程式直接地址項的個數能從一定程度能提高程式運行速度,從而提高系統系統效率。例如,作業系統檔案目錄是多級目錄,增加第一級索引表中索引點的直接地址項個數,會在一定程度上加快檔案檢索速度。
直接定址
直接定址是一種基本的定址方法,其特點是:在指令格式地址欄位中直接指出運算元在記憶體的地址。由於運算元的地址直接給出而不需要經過某種變換,所以稱這種定址方式為直接定址方式。在指令中直接給出參與運算的運算元及運算結果所存放的主存地址,即在指令中直接給出有效地址。直接定址對象為:1.內部數據存儲器,在指令中以直接地址表示; 2.特殊功能暫存器SFR,在指令中用暫存器名稱表示。
以暫存器中的內容為地址,該地址的內容為運算元的定址方式稱為暫存器間接定址。能夠進行暫存器間接定址的暫存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。暫存器間接定址的存儲空間包括內部數據存儲器和外部數據存儲器。由於內部數據存儲器共有128位元組,因此用一位元組的R0和R1可間接定址整個空間。而外部數據存儲器最大可達64K,僅R0或R1無法定址整個空間,為此需要由P2連線埠提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同定址64K位元組範圍。也可用16位的DPTR暫存器間接定址64K位元組存儲空間。
有關術語
地址空間
我們把程式中有符號名組成的空間稱為地址空間。源程式經過彙編或編譯後再經過連結編輯程式加工形成的程式的裝配模組,及轉換為相對地址編址的模組,它是以0為基址順序進行編址的。相對地址也稱為邏輯地址或虛擬地址,把程式中由相對地址組成的空間叫做邏輯地址空間。相對地址空間通過地址再定位機構轉換到絕對地址空間,絕對地址空間也叫物理地址空間。
物理地址
存儲器存儲單元的真實地址叫物理地址,又叫絕對地址。物理地址是可識別的,實際存在的。記憶體儲器的存儲單元按它的排列順序規定一個編號,這個編號就是該存儲單元的物理地址。中央處理機按這個地址號即可訪問該存儲單元。
物理地址的編號一般都是按二進制數字從小到大編排的。例如,一個4K位元組的記憶體儲器,各個位元組單元的地址編號是:000000000000~111111111111 (212=4 096)當記憶體儲器容量很大時,地址編號就很大。在計算機指令中一般給出相對地址 (又叫邏輯地址),經定址變換後,得到物理地址。參見“邏輯地址”及“定址方式”。
物理地址通常是指記憶體儲器中的地址編號。計算機的外存儲器物理地址如磁碟機的地址是以圓柱號、磁軌號、扇區號來劃分的。
物理地址擴展
PAE為IntelPentium Pro及以上級別的CPU(包括除了匯流排頻率為400MHz的這個版本的奔騰M之外的所有新型號奔騰系列處理器)所支持,其他兼容的處理器,如速龍(Athlon)和AMD的較新型號的CPU也支持PAE。
x86的處理器增加了額外的地址線以選擇那些增加了的記憶體,所以實體記憶體的大小從32位增加到了36位。最大的實體記憶體由4GB增加到了64GB。
32位的虛擬地址(線性地址)則沒有變,所以一般的套用軟體可以繼續使用地址為32位的指令;如果用平面記憶體模式的話,這些軟體的地址空間也被限制為4GB。作業系統用頁表將這4GB的地址空間映射到大小為64GB的實體記憶體,而這個映射對各個進程一般是不一樣的。這樣一來,即使不能為單單一個程式所用,那些增加了的物理記憶體仍然可以發揮作用。
對於需要超過4GB記憶體的套用軟體來說,除了一般的PAE支持,還需要作業系統提供另外的特殊的技術。在Windows上,這種技術叫做Address Windowing Extensions(AWE)。而在類Unix的系統上則有多種技術在使用,例如使用mmap()按需要把一部分檔案映射到地址空間;但是,這還沒有成為一個標準。
間接地址
一個簡單的計算機指令包括有一個操作碼和指 向存儲器中某一地點的地址。該地點所存的內容可 以是操作所需要的數據,也可以仍是一個指向存儲 器另一地點的地址。在後一情況,指令中的地址就叫做間接地址,因為它指出的不是數據的所在位置,而是間接地指出數據的地址。
在某些計算機中,指令本身就有一個控制段(每 個地址1位就足夠了),用它來規定相應的地址是否 間接地址。在另一些計算機中,則在數據字中設一標 記位,用它來判斷該字是數據還是指向數據的地址。
有些系統允許多級間址。從存儲字中找 到的地址仍可能是指向另一個存儲地點的間接地址,等等。允許多級間址的計算機通常都具有逾時中 斷設施,當間址循環無休止地進行時能引起中斷。
間接地址有多種用途。當某些系統要求較長的 地址而在指令中不能方便或合理地提供時,用間接 地址是十分有效的。很多小計算機採用這種方法,但 一些較大的計算機也採用這種方法。大型寶來系統 中的描述字就是間接地址,其中地址字包含了數組 的起始地址和尺寸,以便能自動檢驗是否超過了地 址邊界。Multics系統(多路信息計算系統,一種作業系統)用了兩個字的間接地址為它的巨大的虛 擬存儲器編址。