當前位置:首頁 » 服務存儲 » cpu存儲器和指令隊列
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

cpu存儲器和指令隊列

發布時間: 2022-12-27 02:38:08

1. 8086/8088系統中,存儲器為什麼要分段,一個段的最大和最小各為多少位元組

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

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

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

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

(1)cpu存儲器和指令隊列擴展閱讀:

8086/8088CPU內部設置了4個16位段寄存器,它們分別是代碼段寄存器CS、數據段寄存器DS、堆棧段寄存器SS、附加段寄存器ES、由它們給出相應邏輯段的首地址,稱為「段基址」。段基址與段內偏移地址組合形成20位物理地址,段內偏移地址可以存放在寄存器中,也可以存放在存儲器中。

程序較小時,代碼段、數據段、堆棧段可放在一個段內,即包含在64KB之內,而當程序或數據量較大時,超過了64KB,那麼可以定義多個代碼段或數據段、堆棧段、附加段。

2. CPU存儲器的指令寄存器

32位CPU把指令指針擴展到32位,並記作EIP,EIP的低16位與先前CPU中的IP作用相同。
指令指針EIP、IP(Instruction Pointer)是存放下次將要執行的指令在代碼段的偏移量。用來提供指令在存儲器中的地址。在具有預取指令功能的系統中,下次要執行的指令通常已被預取到指令隊列中,除非發生轉移情況。所以,在理解它們的功能時,不考慮存在指令隊列的情況。
在實方式下,由於每個段的最大范圍為64K,所以,EIP中的高16位肯定都為0,此時,相當於只用其低16位的IP來反映程序中指令的執行次序。

3. 8086微處理器中的指令隊列起什麼作用其長度是多少位元組

8086微處理器的指令隊列一共有6個位元組, 但是當指令隊列如果出現2個空位元組, BIU就會自動的執行一次取指令的周期,將下一條需要執行的指令從內存的單元中讀入指令隊列。

它們採用的是「先進先出」原則,按照順序存放,並且按順序依次取到EU中然後去執行。

當EU執行一條需要到的存儲器或者是I/O埠讀取的操作數的指令時,BIU將在執行完成現行的取指令的存儲器周期之後的下一個存儲的周期,對指令的所指定的存儲的單元或I/O埠嗯進行訪問,讀取的操作數必須經BIU送EU進行處理才可以。

當EU執行了跳轉、子程序調用或者是返回指令時,BIU就會使指令的隊列復位,並從指令的給出的新地址才會開始取指令,新取的第1條指令就會直接經指令隊列並送EU執行,隨後取來的指令就將會填入指令隊列的緩沖器。

4. 8080cpu指令隊列作用是什麼

你好
8086CPU的預取指令隊列由6個位元組組成,按照8086CPU的設計要求,指令執行部件(EU)在執行指令時,不是直接通過訪問存儲器取指令,而是從指令隊列中取得指令代碼,並分析執行它。從速度上看,該指令隊列是在CPU內部,EU從指令隊列中獲得指令的速度會遠遠超過直接從內存中讀取指令。

5. 8086cpu包含那兩個單元每個單元有哪些主要組成部分

從功能上看,8086
CPU分為執行單元(EU)和匯流排介面單元(BIU)兩部分。
BIU為EU完成全部的匯流排操作,根據EU的命令控制數據在CPU和存儲器或I/O介面之間傳送。BIU由下面的五種功能單元組成:
●段寄存器(均為16位)
CS:代碼段寄存器,存放程序段地址;
DS:數據段寄存器,存放數據段地址;
ES:擴展段寄存器,存放輔助數據段地址;
SS:堆棧段寄存器,存放堆棧段地址。

指令指針寄存器(16位)IP寄存器用於存放程序段的偏移量。
●地址加法器(20位)地址加法器用於根據邏輯地址計算20位物理地址。
●6位元組的指令隊列
指令隊列可存放多條指令,用於指令預取。
●I/O
控制電路
I/O控制電路實現I/O的控制邏輯,產生相應的控制信號。執行單元EU從BIU的指令隊列得到指令以後,完成對指令的解碼、執行並回寫結果。當EU需要操作數時,便申請BIU訪問存儲器並向BIU提供段偏移地址。此外它還具有管理寄存器等功能。EU由以下單元組成:
通用寄存器(16
位)
AX:用作累加器;
BX:一般用作基址寄存器;
CX:常常作為計數器;
DX:多用作輔助累加器
AX、BX、CX和DX都是16位寄存器,可是它們都可以分別作為2個8位寄存器使用。
專用寄存器(16
位)
BP:基數指針寄存器
SP:堆棧指針寄存器
SI:源變址寄存器
DI:目的變址寄存器
標志寄存器Flag(16
位)

6. CPU執行轉移指令時,指令隊列寄存器如何變化

2.1 8086 CPU在內部結構上由哪幾部分組成?其功能是什麼?

8086的內部結構-成兩部分:匯流排介面部件BIU,負責控制存儲器讀寫。執行部件EU,EU從指令隊列中取出指令並執行。8086是16位微處理器,有16根數據線、20根地址線,內部寄存器、運算部件以及內部操作都是按16位設計的。

2.2 8086的匯流排介面部件有那幾部分組成?

8086的匯流排介面部件主要由下面幾部分組成:4個段寄存器CS/DS/ES/SS, 一個16位的指令指針寄存器IP, 一個20位地址加法器, 6位元組的指令隊列,內部暫存器以及輸入輸出電路組成.

2.3 8086的執行部件有什麼功能?由那幾部分組成?

8086的執行部件主要由下面幾部分組成:(1)四個16位通用寄存器AX、BX、CX、DX, 通用四個16位專用寄存器,包括二個指針寄存器SP、BP, 二個變址寄存器SI、DI, 算術邏輯單元ALU,標志寄存器。

2.4 8086CPU狀態標志和控制標志又何不同?程序中是怎樣利用這兩類標志的? 8086的狀態標志和控制標志分別有哪些?

標志分兩類:狀態標志(6位):反映剛剛完成的操作結果情況。控制標志(3位):在某些指令操作中起控製作用。

2.5 8086/8088和傳統的計算機相比在執行指令方面有什麼不同?這樣的設計思想有什麼優點? 8086CPU執行轉移指令時,指令隊列寄存器內容如何變化?

傳統的計算機一般按照取指令、指令解碼/執行指令的步驟工作。在8086/8088中,指令的提取與執行分別由匯流排介面部件BIU與執行部件EU完成,8086/8088可以在取指令同時又可以執行指令,這種並行工作方式有力的提高了CPU的工作效率。

2.6 將兩數相加,即0100 1100加 0110 0101,CF、PF、AF、ZF、SF、OF各為何值?

0100 1100+0110 0101=10110001

CF=0,PF=1,AF=1,ZF=0,SF=1,OF=1

2.7 存儲器的邏輯地址由哪幾部分組成?存儲器的物理地址是怎樣形成的?一個具有20位地址線的CPU,其最大物理地址為多少?

存儲器的邏輯地址由段地址與段內偏移地址組成。存儲器的物理地址:將16位段地址左移4位後加上16位段內偏移地址,形成20位物理地址。一個具有20位地址線的CPU,其最大物理地址為 =1MB。

2.8 現有6個位元組的數據分別為11H,22H,33H,44H,55H,66H,已知它們在存儲器中的物理地址為400A5H~400AAH.若當前(DS)= 4002H,請說明它們的偏移地址值。如果要從存儲器中讀出這些數據,需要訪問幾次存儲器,各讀出哪些數據?

由於:物理地址=400A5H=段地址*16+偏移地址=40020H+偏移地址

偏移地址=400A5+40020=85H

從奇地址400A5H中讀出:11H;從偶地址400A6H讀出一個字:22H,33H;從偶地址400A8H讀出一個字:44H,55H;從偶地址400AAH中讀出:66H。共讀4次。

2.9 已知當前數據段中存有如下圖所示的數據,現要求將最後兩個位元組改成ODH,OAH,請說明需給出的段基值和偏移地址值,並說明其寫入過程。

14800

……

150A1

150A2150A3150A4150A5

數據段首地址

數據段段地址=150AH,偏移地址=0004H。CPU的匯流排介面部件根據數據段寄存器的內容150AH,左移4位,在加上偏移地址0004H,形成20位物理地址150A4H,由匯流排介面送出,選中物理存儲單元150A4H、150A5H,數據0DH通過數據匯流排送入150A4H,數據0AH通過數據匯流排送入150A4H。

2.10 在 8088/8086中,邏輯地址FFFF∶0001, 00A2∶37F和B800∶173F的物理地址分別是多少?

2.11 在 8088/8086中,從物理地址388H開始順序存放下列三個雙位元組的數據,651AH, D761H和007BH,請問物理地址388H, 389H, 38AH, 38BH, 38CH和38DH 6個單元中分別是什麼數據?

2.12 8086/8088內部有哪些通用寄存器?

2.13 8086/8088 內部有幾個段寄存器,闡述各段寄存器的用途?

2.14 8086CPU的形成三大匯流排時,為什麼要對部分地址線進行鎖存?用什麼信號控制鎖存?

為了確保CPU對存儲器和I/O埠的正常讀/寫操作,要求地址和數據同時出現在地址匯流排和數據匯流排上。而在8086CPU中AD0--AD15匯流排是地址/數據復用的,因此需在匯流排周期的前一部分傳送出地址信息,並存於鎖存器中,而用後一部分周期傳送數據。8086CPU中是通過CPU送出的ALE高電平信號來控制鎖存的。

2.15 段寄存器CS=1200H,指令指針寄存器IP=4000H,此時,指令的物理地址為多少?指向這一物理地址的CS值和IP值是唯一的嗎?

此時,指令的物理地址為16000H;這一物理地址的CS值和IP值不是唯一的,例如:CS=1000H,IP=6000H。

可能順序有點亂,自己慢慢看吧