ia-32 系統架構原理基礎的篇

時鐘用於CPU的內部操作和其他系統部件的同步
控制單元 協調執行機器指令時各個步驟的次序
算術邏輯單元執行加法和減法與運算 以及and or not 
等邏輯運算

cpu 通過插入主板插槽的引腳同計算機其餘部分相連接 
大部分引腳與數據總線,控制總線 和地址總線相連接

內存存儲單元 是計算機程序運行時存放指令和數據的地方
內存存儲單元接受CPU的數據請求 從隨機訪問存儲器 RAM中取出
數據送至cpu 或把數據從CPU送會存儲器
總線是用於計算機各部分之間傳送數據的並行線 計算機的系統總線一般由三組總線構成
數據總線  控制總線 和地址總線  數據總線在cpu和內存之間傳送指令和和數據 
控制總線 使用二進制信號同步連接到系統總線上的所有設備的動作
如果當前被執行的指令要在CPU和內存之間傳送數據 那麼地址總線上保持着指令和數據地址
時鐘 涉及CPU和系統總線的每個操作都由一個內部時鐘同步 這個時鐘都是以固定的頻率產
生脈衝 機器指令 使用的最基本的時間單位稱爲機器週期 或者時鐘週期  也就是
一個完整的時鐘脈衝所需要的時間
時鐘的持續時間是時鐘頻率的倒數 時鐘頻率用每秒正當的次數來計量

程序在開始之前必須首先裝入內存 指令指針包含下一條包含要執行的下一條指令的地址
指令隊列存放着若干條要執行的指令   
機器指令的執行需要三個基本步驟 取指令 解碼 和執行 

在指令使用了內存操作數時還需要兩個額外的步驟:
取操作數和存儲輸出操作數
取指令  控制單元從指令隊列中取得指令不併遞增指令 IP 的值 
解碼  控制單元對指令進行解碼以確實該指令要執行什麼操作 控制單元把輸入操
作數傳遞給算術邏輯單元  並向算數邏輯單元發送信號指明要執行的操作
區操作數: 如果指令使用的輸入操作數在內存中 控制單元就通過讀取操作數並
 將其複製到內部寄存器中, 這些內部寄存器對用戶程序是不可見的
執行 算數邏輯單元執行指令 以有名寄存器和內部寄存器作爲操作數,
將運算輸出結果送至有名寄存器和內存 然後更新反應處理器的狀態標誌
儲存輸出操作數 如果輸出操作子在就存儲器中嗎 控制單元通過寫操作把數據存儲到內存中

ia-32  處理器三種基本模式 :保護模式  實地址模式 系統管理模式  另一種模式
虛8086模式  是保護模式的一個特例   

保護模式 是處理器的基本模式 在保護模式下 所有的指令和的特性都是可以用的
程序就被賦予了獨立的內存區域 稱爲段處理器程序訪問以分配之外的其他內存

虛擬8086 在保護模式 處理器可以在安全的多任務環境中執行實地址模式的軟件

實地址模式 實現了intel 8086 處理器的程序以新增的特性 如切換到其他兩種模式的
能力等 windows 支持  有可能導致操作系統掛起

系統管理員 爲操作系統提供了用以實現電源管理和系統安全等功能的機制  這些功能通常
是由那些想自定義特定的系統啓動過程的計算機製造商實現的

地址空間 
    在保護模式下  iA-32 處理可訪問高達4gb的內存  實地址模式只能訪問1mB 的內存
    如果處理器處於保護模型並在虛擬8086模式下運行多個程序 每個程序都都訪問獨立的
    1mb 內存區域

基本存儲器 
     寄存器是cpu 內部的高速存儲單元  訪問速都比內存 當對循環進行速度優化時
     就可以吧循環計數存放在寄存器而不是 內存變量中
32 位通用寄存器
EAX EBX  ECX EDX EBP ESP ESI EDI
16 位段寄存器
EFLAGS EIP  CS SS ES FS GS DS 
通用寄存器:通用寄存器主要用於算術運算和數據的傳送  每個寄存器都可以作爲
一個32位置值 或兩個16 位值來尋址使用
32  EAX EBX ECX D EDX 
16 AX BX CX DX 
高8位  AH BH CH DH 
地8位 AL BL CL DL 
其餘通用寄存器只有16 位有特別的名字 但是不能再進一步細分 
32 ESI  EDI EBP  ESP  
16 SI DI BP ESP

特殊用法 某些通用寄存器有些特殊的用法
EAX  在乘發個和除法指令被自動使用  通常稱爲擴展累加寄存器
在某些指令中 cpu 自動使用ecx作爲循環計數器
ESP 尋址堆棧  一種系統內存結構 上的數據 極少用於普通的算術運算和的數據傳送
通常稱之位擴展堆棧指針寄存器
ESI和EDI 由高速內存數據傳送指令使用  通常稱爲擴展源指針和擴展目的指針寄存器
高級語言是使用EBP 引用堆棧上的函數參數和局部變量 除非用於高級程序設計技巧中
EBP 一般不應該用於普通算術運算和數據傳送 通常稱爲擴展幀指針急寄存器 

段寄存器 實地址模式下 段寄存器用於存放段的基址 段是一塊預分配的內存區域  
保護模式下 段寄存器存放段描述符表的指針 索引  有些段存放程序的指令 代碼
有些則存放變量 數據  另外還有其他的段 名爲堆棧段 存放着函數的局部變量和函數參數

指令指針 EIP 或稱爲指令指針 寄存器存放下一條要執行的指令的地址 有些機器指令
可以修改EIP 使程序分支轉移到的地址執行 。

EFLAGS 寄存器由控制cpu 的操作或反映cpu 某些運算的結果的獨立二進制構成
有些機器指令可以測試和修改單個處理標誌
控制標誌  控制CPU的操作。 列如:某些控制標誌可視CPU在每條指令執行後 檢測到算術
運算符運算溢出後 進入虛擬8086模式或保護模式後中斷

程序可以通設置EFLAGS的單個位來控制CPU的操作  列如 設置方向標誌位和中斷標誌位

狀態標誌:狀態標誌反映了 cpu 執行的算術和邏輯運算的結果 包括溢出標誌 符號標誌
零標誌位 輔助進位標誌 奇偶標誌和進位標誌

進位標誌CF 在無符號算術運算的結果太大而且目的操作數無法容納時置位
溢出標誌 OF 在有符號算術運算的結果太大或太小而且目的操作數無法容納時的置位
符號標誌 SF 在算術或邏輯運算的結果爲負時的置位
零標誌 ZF 在算術或邏輯運算的結果爲零時置位
輔助進位標誌 AC  在算術運算導致 8位操作數位的3到位4產生進位時置位
奇若標誌 PF 結果的最低於有效字節1位的數目爲奧數時置位 否則PF 通常PF
標誌位用於在數據有可能被改變或的士的情況下錯誤檢查

系統寄存器 有若干的重要的系統寄存器
    中段描述符表寄存器 IDTR 保存中斷描述符表的地址 中斷描述表的地址, 
    中斷描述符表提供看一種方式用於處理中斷 用於響應如鍵盤和鼠標等事件的系統過程
    全局描述符表寄存器  GDTR  保存全局描述符表的地址 全局描述符表包含了任務 
    狀態段和局部描述符表的指針 索引
    局部描述符表寄存器 LDTR  保存當前正在運行的程序的代碼段 數據段和堆棧段的指針
    任務寄存器 保存當前執行任務的任務狀態段TSS 的地址
    調式寄存器 用於在調式程序是設置斷點等
    控制寄存器  CR0  CR2 CR3  包含用於控制系統操作 (如任務切換 分頁 允許緩存等)
    的狀態標誌和數據域
    模型專業寄存器 用於性能監控和機器系統結構檢查等系統級操作 對於不同的IA-32
    處理器 可用模型會有所不同  

浮點單元  執行高速浮點段算術運算 過去浮點單元需要一塊獨立的協處理芯片中
    FPU 內有8個浮點數據寄存器 名爲ST (0) ST(1)- ST(6) 和ST(7)
    其餘的控制和指針寄存器

操作碼寄存器          48位指針寄存器  FPU 指令指針  FPU 數據指針
16 位的控制寄存器   標誌寄存器 控制寄存器 狀態寄存器 
其他寄存器  順便在提及  高級多媒體程序設計的寄存器 
mmx 指令集使用的8個64位寄存器
單指令 多數據操作 simd  使用的8個128位xmm 寄存器

cisc  risc 是第一個cisc 複製指令集

ia-32 的內存管理 
    保護模式是最簡單也是最強大的 
    其他模式通常僅在程序需要直接訪問系統硬件時才使用
    在實地址模式下 處理器只能尋址1MB 的內存空間 地址是重16進制0000-FFFFF
    處理器只能把運行一個程序 但可以隨時打斷 稱爲中斷程序的執行 以便於處理
    來自外圍設備的的請求  應用程序能夠讀取和修改RAM 的任何區域 能夠讀取ROM 
    的任何區域但不能修改  

    在保護模式下 處理器可以同時運行多個程序 併爲每個進程(運行的程序)分配
    4GB內存  可以爲每個程序分配屬於自己保留內存區域  一個程序不能偶然訪問
    其他的代碼和數據 ms-window 和linux 都運行於保護模型
     
    在虛擬 8086 模式下 實際上是處理器在保護模式下創建了一個有1mb 地址空間
    的虛擬機 虛擬機對於實地址模式下的8086計算機進行模擬  

實地址模式
    在實地址模式下 ia-32處理器使用20位地址線 可以訪問 1048 576字節的內存(1mb)
    地址範圍是從16進制數的0-FFFFF  Intel 工程師必須解決一個最基本的問題
    8086 處理器的16 位的寄存器不能存放20位地址 提出了一種分段內存的解決方案
    所有的內存被分成多個64kb的區域  這些區域稱爲段
    或者可以用一棟大樓打比方 其中段代表樓層 一個人可以乘電梯到達指定的樓層
    下電梯  然後開始按照房間號來定位查找某個房間  房間的偏移可以想象成電梯到房間
    的距離》 

    20 位線性地址的計算 
    地址用於指代內存中的某個位置 內存中的每個字節都有一個顯示的地址 
    在實地址模式下 線性地址 或稱爲絕對地址是20位的 範圍從16進制數的0-FFFFF
    程序無法直接使用線性地址 因此必須使用兩個16位整數來表示 
    它們一起被稱爲段偏移地址 包含如下兩個部分
    一個存放在段寄存器 cs ds es ss 中的16 位段值
    一個16位的偏移值
    CPU 自動把段一偏移地址轉換成20位的線性地址 假設一個變量的段-偏移地址是
    08F:0100 cpu 將段值乘以16 再把乘積同變量的偏移地址相加:
    08F1h * 10h = 08F10h  
    經過校正的段值
    加上偏移地址
    線性地址
    
    一個典型的程序有三個段 :代碼段 數據段和堆棧段  三個段寄存
    cs ,ds 和ss 包含着程序代碼段 數據段和堆棧段的基地址:
    cs : 包含一個16位的代碼段地址
    Ds  包含一個16位的數據段地址
    ss 包含一個16位的堆棧地址
    es  fs 和 GS 可指向其他數據段
保護模式
    保護模式是一個更加強大的處理器模式 當處理器運行於保護下時,每個程序可以
    尋址4gb的內存 地址範圍是從16 進制數0-ffffffff  彙編器中的平但 內存模式
    適合用於保護模式編程  
    平坦內存模式非常易於使用,因爲只需要使用一個32位整數就可以存放任何指令
    和變量的地址 處理器在後臺進行地址的計算和轉換  所有的這一切對應用程序
    都是透明的 段寄存器 cs ds ss es fs gs 指向段描述表 操作系統使用段描述
    符表定位程序使用的段的位置  一個典型的保護模式程序有三個段 :
    代碼段 數據段 堆棧段  使用cs ds 和ss 三個段寄存器
    cs 包含描述符表中的代碼段描述符
    ds 包含描述符表中的數據描述符
    ss 包含描述符表中的堆棧段描述符
    平坦分段模式
        在平坦分段模式下 所有段都被映射到計算機32位物理地址空間中。一個程序
        至少需要兩個段 代碼段 和數據段  每個段都由一個 段段描述符定義
        段描述符通常是一個存放在全局描述符表 GDT 中的一64位的值   


多段模式 
    在多段模式下  每個任務或程序都有自己的段描述表 稱爲局部描述表LDT D
    每個描述 都可以指向一個與其他所有進程使用的段都不同的段  並且每個段
    都位於獨立的地址空間中    LDT 的每個表項 段描述符 都指向內存中的一個
    不同的段, 每個段描述都指定了段的大小 


分頁 特性 允許一個段分割稱爲頁的 4096字節的內存塊 分頁機制允許同時運行的
程序使用的總內存大於計算機的物理內存  操作系統映射的所有頁的集合稱爲虛擬內存
操作系統通常包含一個名爲虛擬內存管理器的實用程序 

分頁機制解決了一個一直困擾着軟件硬件設計者的難題:程序在運行前必須裝入內存
但內存是非常昂貴的 用戶總是想要的在內存裝入大量程序並隨意進行切換,另一方面
磁盤存儲是廉價而海量的 不過 訪問磁盤要比主存儲器慢的多 , 分頁機制
 通過使用後備磁盤存儲會使人產生內存幾乎是I無限大的錯覺  然而一個程序越依賴於
 分頁機制 起運行也就可能越慢

當任務運行時, 如果程序的一部份當前未被使用,那麼這個部分可以保留在磁盤上

任務的一部分已經被換頁交換到磁盤上了  任務的其它部分 如當前活躍執行代碼用到的頁
可以保留在內存中。當處理器開始執行已經被換頁及交換主存代碼是, 將產生一個頁錯誤
這將導致包含有所需代碼及數據的頁被重新載入內存 想要觀察分頁機制導致的頁交換
可以照一臺內存很少的計算機, 同時運行多大程序 ,讀者應該注意到從一個程序
切換到另一個程序時會有明顯的延遲 因爲操作系統必須將每個程序交換出的部分從磁盤傳輸
到主存,當安裝了更多的內存是 計算機會運行得更快, 因爲大型的應用程序和文件
可以完全存放在內存中,這就減少了換頁的數量

主板
是微型計算機的心臟 主板是一塊應刷電路板 上面安裝計算機的CPU 功能支持芯片組
主存儲器 輸入輸出接口 電源插口以及1擴展槽 這些不同的組件通過總線相互連接
總線是應刷在主板上的一組電線  
CPU 插座 根據主板支持的處理器類型的不同 不同主板的CPU插座大小可能不同
內存插槽 用於安裝可插拔式內存卡
基本輸入輸出系統 biso 芯片 存放着系統軟件
cmos 內存帶一塊可充電電池供電
海量存儲設備 硬盤和cd-rom 的接口
外部設備的USB接口
鍵盤和鼠標接口 
pci 插槽 用於安裝聲卡 圖形卡  數據採集卡和其他輸入輸出設備

可選的
集成的聲卡處理器
並卡和串口
集成的網卡
高速視頻卡使用的AGP總線接口

下面是一個典型的IA-32系統中的一些重要的功能支持處理芯片
浮點單元FPU 處理浮點和擴展整數運算
8284 / 82c284 時鐘發發生器 簡稱爲時鐘 它以固定的頻率產生脈衝 時鐘發生
用於在CPU 和計算機其餘部件之間進行同步
8259A 可編程中斷控制器 PIC 處理器來自外部設備的中斷 如鍵盤 系統時鐘和磁盤
驅動器等 這些設備打斷CPU的執行並使其立即處理它們的請求
88253 可編程時鐘 計數器每秒觸發18.2次系統中斷  用於更新系統日期和
時鐘並控制揚聲器 它還負責不斷刷新內存  RAM芯片記憶的數據只能保持幾毫秒
8225可編程並口 通過它可以使用IEEE並行接口的計算機相互發數據 這種端口通常用於
打印機 但也可以用於其他輸入輸出設備

PCI 總線用於連接CPu和其他系統設備 如硬盤 內存 視頻控制器 聲卡和網絡
控制器 最近的PCIE 總線爲設備 內存和處理器之間提供了雙向串行連接 P


pcie 總線類始於網絡的方式在獨立的通道內通過報文傳輸數據  圖形控制器大都
支持PEIE 總線  可以按大約 4gB/S 速度傳輸數據

主板芯片組  大多數主板都包含一系列稱爲芯片組的集成處理器控制器  
芯片組在很大程度上決定了計算機的性能  

直接訪問內存訪問 dma 控制器 它在外部設備和ram 之間直接傳送數據  而
不需要CPU做任何額外的工作

8259 可編程中斷控制器 處理來自硬件的請求併產生CPU 中斷 
8254 時鐘計數器每秒觸發18.2次滴答 處理系統時鐘日期 並作爲內存刷新新計時器
使用
與PCI 橋連接的微處理器局部總線
系統內存和緩存控制器
PCI 總線與ISA總線連接的總線橋
8042鍵盤和鼠標微控制器

視頻輸出   
    視頻適配器控制IBM 兼容機上文本和圖形的顯示 它由兩部分構成
    視頻控制器和視頻顯示存儲器 顯存  顯示在監視器上的所有文本和圖行
    都要寫入顯存  然後由 然後由視頻控制器送往監視器
    視頻控制器自身也是一個具有特殊用途的微處理器 它減輕了cpu控制器顯示
    硬件的工作量
    陰極射線管 視頻監視器使用一種稱爲光欄掃描技術來顯示工作量 
    電子束照亮屏幕上稱爲像素的瑩光點 電子槍從屏幕的最頂端開始從作往右掃描 讓胡
    關閉  

數字液晶顯示  監視器直接從視頻控制器接收數字位流而不需要光欄掃描 
存儲器
    只讀存儲器 ROM  可編擦鞋可編程只讀存儲器 EPROM  動態隨機訪問存儲DRAM
    靜態隨機訪問存儲器SRAM 視頻隨機訪問存儲VRAM  以及互補金屬氧化物半導體
    隨機訪問程序   
    ROM 只讀存儲器 是內容永久燒錄到芯片中而不能被擦除的存儲器
    EPROM 可擦寫可編程只讀存儲器  
    DRAM  動態隨機訪問存儲器 是在程序運行時存儲代碼和數據的地方
    他必須在1nms 之內重新被刷新  否則其中的內容就會蝶式 價格低廉 因此
    計算機用它作爲主存儲器 一些系統使用 ECC 錯誤檢查更正 內存
    靜態隨機訪問存儲器SRAM 也是一種RAM 芯片 主要用於昂貴的高速緩存
    這種存儲器不需要的重複刷新即可保持其內容 cpu的緩存使用的就是SRAM

輸入輸出接口 USB  支持設備提供了智能設備 連接複合設備  兩種接頭 A 傳回 
B  傳出
當通過USB與計算機相連時 計算機詢問枚舉設備以獲的器設備名 
BIOS 基本輸入輸出系統 是直接同硬件設備交互的子程序的集合
BIOS 是由計算機製造商安裝的 同計算機硬件相匹配  操作系統通常同BIOS 通信 


卷第7章任務管理本章描述了ia-32體系結構的任務管理設施。
這些設備只有在處理器受在保護的模式運行時纔可用。
本章主要討論32位任務和32位TSS結構。
有關16位任務和16位TSS結構的信息,
請參閱第7.6節“16位任務狀態段(TSS)”。
有關64位模式下任務管理的特定信息,
請參閱第7.7節“64位模式下的任務管理”
7.1
任務管理OverviewA任務是處理器可以分派、執行和掛起的工作單元。
它可以用於執行程序、任務或進程、操作系統服務實用程序、中斷或異常處理程序、內核或執行功能。
ia-32體系結構提供了一種機制,用於保存任務的狀態、分配任務以執行任務以及從一項任務切換到另一項任務。
在受保護模式下操作時,所有處理器執行都是在任務內部執行的。
即使是簡單的系統也必須至少定義一個任務。
更復雜的系統可以使用處理器的任務管理設施來支持多任務處理應用程序。
7.1.1任務結構由兩個部分組成:任務執行空間和任務狀態段(TSS)。任務執行空間由代碼段、堆棧段和一個或多個數據段組成(參見圖7-1)。
如果操作系統或執行程序使用處理器的特權級保護機制,則任務執行空間還爲每個特權級別提供一個單獨的堆棧,
tss指定構成任務執行空間的段,併爲任務狀態信息提供存儲位置。
在多任務處理系統中,TSS還提供了連接任務的機制,任務由TSS的段選擇器標識。
當任務加載到處理器執行時,TSS的段選擇器、基地址、限制和段描述符屬性被加載到任務寄存器(參見2.4.4節“任務寄存器(Tr)”)中
。如果爲任務實現分頁,則將任務所使用的頁目錄的基址加載到控制寄存器CR3中。 
  
第7-2卷3 atask Management7.1.2任務狀態定義當前執行任務的狀態:
·任務的當前執行空間,由段寄存器中的段選擇器(cs、ds、ss、es、fs和GS)定義。
·通用寄存器的狀態。·標誌寄存器的狀態。·EIP寄存器的狀態。
·控制寄存器的狀態CR3。·任務寄存器的狀態。·LdtR寄存器的狀態。
·i/o映射基地址和i/o映射(包含在TSS中)。
和兩個堆棧(包含在TSS中).·鏈接到以前執行的任務(包含在TSS中)。
在分派任務之前,除了任務寄存器的狀態之外,所有這些項都包含在任務的TSS中。
另外,ldtR寄存器的完整內容不包含在tss中,只有 LDT


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章