# 目錄(contents)
### [2.1 16bit intel processor architecture](#2.1)
- 2.1.1  Central Processing Unit
- 2.1.2  Registers
- 2.1.3  Status and Control Unit
### [2.2 32bit intel processor architecture](#2.2)
- 2.2.1  Improved Execution Cycle
- 2.2.2  32bit Register Set
### [2.3 Operating System and Memory](#2.3)
- 2.3.2  Memory Architecture
- 2.3.3  System Startup Procedure
### [2.4](#2.4)
- 2.4.1  Internal Components
- 2.4.3  Bus Architecture
- 2.4.5  Memory (RAM)
- 2.4.6  Video RAM
- 2.4.7  Secondary Storage Devices
# 2.1
- **因為intel處理器系列,包含各式功能差異極大的處理器,2.1我們將針對討論16位元的8086/8088以及80286處理器,2.2我們將會討論32位元的80386以及Intel486和Pentium處理器**
### 2.1.1 Central Processing Unit
- **CPU 可以簡化為三個基本步驟:取得、解碼、執行,當然中間還包含過度的步驟。**
  **取得下一指令:**
    **將其放入佇列區域之中**
    **更新程式計數器**
  **解碼指令:**
    **執行地址轉換**
    **從記憶體中取得操作符**
  **執行指令:**
    **執行所需的計算**
    **將結果儲存在記憶體或是暫存器中**
    **設定附加到 cpu 的狀態標誌**<br>

  **CPU 透過連接到電腦主機板上的 CPU 插槽的引腳,與電腦的其餘部分相連,這些引腳代表外部的資料匯流排、位址匯流排和多樣的電壓和控制引腳,都會去影響CPU運作。**
  **資料匯流排和位址匯流排(address and data bus),內部的資料匯流排是串聯和並聯的導線它們在CPU多個不同的部分中傳遞資料,當資料必須從外部的記憶體中讀取,控制單元將會計算它的位址和所在地透過資料匯流排,記憶單元(在主機板的另一個處理器)會瀏覽資料匯流排並且請求這筆資料,資料到CPU的信號準備好後,CPU會傳輸這筆資料到內部的儲存區域。**
  **暫存器(registers),在CPU的高速儲存區域叫暫存器,它直接與控制單元(CU)和運算邏輯單元(ALU)連接,因為暫存氣存取比記憶體存取更快速,指令只有使用執行暫存器會快於有記憶體操存取。**
  **時脈(clock),涉及CPU和系統匯流排的每個操作都由內部同步以恆定速率發出時脈,大多數的機器指令的基本時間單位叫機器週期(machine cycle),以一秒百萬次循環為單位(MHz),Pentium處理器的執行時脈在200-400MHz。**
### 2.1.2 Register:
- **暫存器是直接位於CPU的8,16,32位元的高速儲存單元,被設計提供比記憶體更方便和快速的存取,CPU內部有資料匯流排通常是外部資料匯流排的兩倍寬,尤其當必須優化處理循環以提高速度時。**

  **暫存器被這個表格分類為,general(Data), index, segment, status and control(Flag),類別名稱可能因來源而異,Flag暫存器由二進位的位元組成控制CPU的操作或反映某些CPU操作的結果,他們被叫做溢位、方向、中斷、陷阱、符號、0、輔助、奇偶、進位。**

  **資料暫存器,被運用在算術和資料移動,AX暫存器是16位元暫存器,較高的8位元暫存器叫做AH,較低的8位元暫存器則叫做AL,並且AH和AL組成一個AX,當然我們也可以藉由操做AL和AH去改變AX。**
  **指令可以被定址於任一個16位元的暫存器,像是AX, BX, CX, DX,當然也能8位元暫存器,AH, AL, BH, BL, CH, CL, DH, DL,當16位元暫存器被修改,與之連動的8位元暫存器也會被影響。**
  **當然每個暫存器也有各自特殊的作用和用途**
- **AX(accumulator)是累加器,因為他特別經常被運用在CPU的算術運算,當其他的運算使用AX時也會更有效率。**
- **BX(base)可以保存過程或變數的位址,SI, DI, BP, BX, SP皆可以做到類似的功能。**
- **CX(counter)它的功能是計數為了重複和迴圈的指令,指令會自動地重複和遞減CX**
- **DX(data)DX 在乘法和除法運算中具有特殊作用,他可以處理高於16位元的計算。**
  **部分暫存器(segment registers),CPU內含有4個被用來程式指令的基底位置。**
- **CS(code segment)CS 用來儲存程式碼段的基址。這意味著它指向當前執行的程式碼所在的記憶體區段。在運行程式時,CPU 會參照 CS 來知道程式指令的起始位置。**
- **DS(data segment)DS 儲存的是資料段的基址,這是程式用來儲存全域變數、靜態變數等資料的記憶體區段。當程式需要存取變數或常數時,CPU 會使用 DS 來定位資料所在的位置。**
- **SS(stack segment)SS 儲存的是堆疊段的基址。堆疊區段是用來處理函數呼叫時的局部變數和返回地址等資料。當執行推入(push)或彈出(pop)操作時,CPU 會使用 SS 來操作堆疊。**
- **ES(extra segment)ES 是額外段的基址,通常用於字串處理等操作。在某些情況下,ES 被用來處理額外的資料段,特別是在處理指向資料或其他緩衝區的指標時,ES 可以用來保存額外的記憶體位址。**
  **索引暫存器(index registers)一組特殊的暫存器,用於記憶體的位址計算,尤其是在陣列操作、字串處理等過程中。這些暫存器能夠支持更靈活的記憶體存取,並協助 CPU 在記憶體中定位和處理資料。以下是每個索引暫存器的介紹:**
- **BP(base pointer)**
- **用途:BP 是基指標暫存器,通常用於堆疊操作,特別是在函數呼叫過程中。當進入一個函數時,BP 會保存當前的堆疊基址,以便於在函數結束時可以方便地返回到先前的堆疊位置。通常,在 x86 架構中,BP 會用來指向函數的參數或局部變數的起始位置。**
- **使用情境:在調用函數時,BP 存儲了堆疊中保存的返回地址或局部變數的基址,使得程式可以更容易地處理這些資料。**
- **SP(stack pointer)**
- **用途:SP 是堆疊指標暫存器,用來指向堆疊的頂端,也就是最新推入堆疊的資料的位置。當進行 push 操作時,SP 會向低位址移動;當進行 pop 操作時,SP 會向高位址移動。它對於堆疊的管理至關重要,幫助 CPU 跟蹤堆疊的變化。**
- **使用情境:SP 主要用來管理函數的返回地址、局部變數及其他由堆疊管理的資料。**
- **SI(source index)**
- **用途:SI 是源索引暫存器,主要用於字串或記憶體區塊的處理。它通常指向源資料的起始位置,在某些指令中,例如字串複製或移動,SI 用來指定來源位址。**
- **在字串處理指令中,SI 用來指向字串的來源位置,幫助執行字串的讀取或處理。例如,在 MOVS 指令中,SI 用來指向資料來源位置。**
- **DI(destination index)**
- **用途:DI 是目標索引暫存器,與 SI 配對使用,指向資料複製或移動的目標位置。當進行字串或記憶體區塊複製時,DI 會指向目的地記憶體位置。**
- **使用情境:在字串處理指令中,DI 用來指向資料的目標位置,幫助執行字串寫入或移動。例如,在 MOVS 指令中,DI 用來指向目的地位置。**
### 2.1.3 Status and Control Registers
**這些寄存器對於 CPU 操作至關重要,因為它們:
指示狀態:通過狀態標誌,處理器可以得知最近運算的結果,並決定接下來的操作(例如條件分支)。
控制操作:控制寄存器可以決定 CPU 運行的模式、是否接受中斷、是否進行頁面交換等。
支援多任務:它們能夠支援多任務處理和處理器模式的切換。**
# 2.2
### 2.2.1 Improved Execution Cycle(與計算機架構相關)
- **80386處理器是Intel第一款包含平行階段的執行週期,以下六個部分即是它的組成和功能:**
- **Bus Interface Unit(BIU,總線介面單元),記憶體存取和提供I/O**
- **Code Prefetch Unit(CPU,預取得程式單元),接收從BIU的機器指令並插入到CP佇列**
- **Instruction Drcode Unit(IDU,指令解碼單元),解碼CP佇列的機器指令並轉譯為微碼**
- **Excution Unit(EU,執行單元),藉由IDU執行微碼指令程序**
- **Segment Unit(SU,段單元),轉換邏輯地址到線性地址並執行保護檢查**
- **Paging Unit(PU,分頁單元),轉換線性地址到實體地址,執行分頁保護檢查,保留最近造訪的頁面列表**
### 2.2.2 32bit Registers Set

- **EAX, EBX, ECX, EDX都只是前面兩個16位元單元組成而已,但是新增了FS和GS,他們可以更好的處理特殊的運作需求。**
### 64bit Registers Set

# 2.3
### 2.3.2 Memory Architecture
- **記憶體的前1024byte 被包含一個32位元的位址表叫做中斷向量表(interrupt vector table),這些向量被叫做中斷向量(interrupt vectors),CPU會依照這些中斷向量去執行中斷任務。**
- **中斷向量表的上面就是軟體BIOS例程,包括鍵盤、系統控制台、印表機,BIOS例程從系統中叫做io.sys.的隱藏檔案被載入的,內核是一個子例程被從msdos.sys.加載。**
- **在 MS-DOS 的架構中,檔案緩衝區和可安裝的裝置驅動程式都是位於核心之上的部分。這表示它們依賴於核心的基本功能,並通過核心來完成操作。核心負責基本的檔案管理和 I/O 功能,而檔案緩衝區用來優化資料存取效率,裝置驅動程式則用來擴充作業系統的硬體支援能力。這樣的設計使得 MS-DOS 雖然簡單,但具有一定的擴充性。**
### 2.3.3 System Starup Procedure
- **CPU會跳到ROM BIOS中初始化,一個進程叫做bootstrap loader(引導程式)會從已經被設計作為開機驅動的裝置讀取啟動紀錄,啟動紀錄包含一個載入後立刻執行的程序,這個程序會依序加載 io.sys. 和 msdos.sys 程序最後會被加載進入記憶體中的命令處理器。**
- **Command.com的常駐部分會一直留在記憶中,它發出錯誤訊息當有要處理Critical errors,初始化進程會讀取 autoexec.bat file ,他僅在載入 MS-DOS 時使用,瞬態部分被載入到高 RAM 中並解釋在鍵盤上鍵入的 DOS 命令,最終,Command 會完全接管系統,並成為命令行界面的核心部分。用戶在 MS-DOS 提示符 下輸入的命令會被 Command解釋並執行。也就是說,它充當整個系統的命令解析器,處理用戶輸入並執行相應的操作。**
**下一步,DOS會尋找一個檔案config.sys載windows載入如下:**
```batch=1
DOS = HIGH
LASTDRIVER = G:
DEVICEHIGH /L:1,14016 = MTMCDAI.SYS /D:MTMTDE01
DEVICEHIGH /L:1,12048 = SETVER.EXE
```
- **設定 DOS=HIGH 可以讓 DOS 運行在 高內存區(HMA,High Memory Area)中,以便節省寶貴的常規內存。**
- **它的主要作用是在加載設備驅動程序時,保證 G: 驅動器 是最後一個被處理的設備。**
- **這一行是將驅動程序 MTMCDAI.SYS 加載到內存中。**
- **這行也是將一個程序(SETVER.EXE)加載到高端內存區。**
**Autoexec.bat File:在執行 config.sys 指令後,作業系統會載入和執行 autoexec.bat 檔案中的每個命令,並被儲存在啟動硬碟的跟目錄中,**
```batch=1
@ECHO OFF
SET PATH=C:\DOS;C:\WINDOWS\COMMAND
C:\DOS\MSCDEX.EXE /D:MSCD001
C:\WINDOWS\SMARTDRV.EXE
```
**以上大多皆是有關環境變數設定的指令。**
# 2.4
- **這章節聚焦於電腦的結構,可以從宏觀的角度看硬體以及周邊設備,然後探討 intel 處理器的內部細節,最後探討軟體的架構,包括記憶體組織,他又如何與硬體互動。**
### 2.4.1 Internal Components
- **主機板:對於任何微電腦他的心臟都是主機板,他的上面會有CPU、支援處理器、主記憶體、I/O連接、電供連接以及擴充槽,不同的元件彼此藉由總線連接,一組直接蝕刻的線在主機板上。**
- **主機板的挑選應該留意:**
- **主CPU的接腳設計**
- **協處理器接腳設計**
- **外部快取記憶體接口,這些高速的記憶體被用來減少CPU去存取低速的傳統記憶體**
- **主記憶體插槽,用以擴展記憶體晶片**
- **ROM BIOS 接腳,使的電腦可以被升級,只要安裝符合腳位的晶片到主機板中**
- **各式I/O設備**
- **網路適配器**
-
### 2.4.3 Bus Architecture
- **PC AT bus它採用了16位元資料傳輸寬度,24位元的尋址,並支援較高的傳輸速率,甚至可以高到8MHz**
- **ISA bus是IBM在1981年為PC所設計的匯流排架構,並成為個人電腦中最廣泛使用的匯流排之一。ISA最初設計為8位資料傳輸寬度,但後來擴展到16位。**
- **EISA bus是對ISA匯流排的一種擴展,由大型伺服器和工作站製造商於1988年共同開發。它是為了改善ISA的限制,並提供更高的帶寬和更大的擴展性,但是比ISA更加昂貴。**
- **MCA bus是由IBM於1987年為其PS/2電腦設計的一種匯流排架構。它旨在提供更高的效能和更多的功能,但由於IBM專有的設計,它未能廣泛普及,並且她沒有EISA的快速與現有 ISA 擴充卡不相容。**
- **VESA bus由視訊電子標準協會(VESA)於1992年提出,主要針對顯示卡等視訊設備的需求。它是一種專用於圖形顯示設備的匯流排,旨在提供高效能的顯示數據傳輸。**
- **PCI bus是一種由Intel於1992年提出的匯流排架構,旨在提供較高速度的資料傳輸與更靈活的擴展性。PCI匯流排被設計為取代早期的ISA匯流排,並在1990年代迅速成為標準的擴展匯流排,尤其是在桌面和伺服器電腦中。**
### 2.4.4 Video Adapter(視訊適配器)
- **是一種硬體裝置,用來將計算機的數位信號轉換為顯示器可以理解的信號,以便在螢幕上顯示圖像或文字,它通常安裝在電腦主機板上的插槽中,並負責處理所有與視覺輸出相關的工作。**
- **圖像處理:視訊適配器負責生成圖像並將它們輸出到顯示器。它處理來自中央處理單元(CPU)或其他來源的數據,並轉換為可顯示的圖形資訊。這包括處理2D圖像、3D圖形、影片播放等。**
- **顯示解析度與刷新率:視訊適配器控制顯示器的解析度(例如1920x1080)和刷新率(例如60Hz)。它負責確保顯示器正確顯示每秒鐘的畫面數量,從而提供平滑的視覺體驗。**
- **影像加速:現代顯示卡通常配備專用的硬體加速單元來加速圖形渲染過程,這能大幅提升圖形處理效能,特別是在遊戲、視頻播放和圖形設計等需要高效處理的應用場景中。**
- **視頻輸出:視訊適配器將圖像信號轉換為顯示器所能理解的格式,這些信號通過如HDMI、DisplayPort、VGA等端口傳送到顯示器。**
- **記憶體管理:顯示卡通常擁有專門的顯示記憶體(VRAM),用來存儲渲染的圖形資料,包括紋理、像素信息以及緩衝區等。這使得顯示卡能夠更快地處理大量圖形資料,而不會對系統記憶體造成過多負擔。**
- **GPU(Graphics Processing Unit):GPU是視訊適配器的核心部分,相當於顯示卡的大腦。它專門負責圖形的計算與處理,並將結果轉換成可視圖像。GPU能進行高效的平行運算,特別適用於圖形渲染及大規模數據處理。顯示記憶體(VRAM):顯示卡擁有專用的顯示記憶體(通常稱為VRAM),它存儲顯示畫面需要的資料,比如圖像、紋理等。VRAM的容量直接影響顯示卡的性能,尤其是在渲染高解析度圖像或3D圖形時。輸出端口:視訊適配器上通常有不同的視頻輸出端口,如VGA、DVI、HDMI、DisplayPort等,用來連接顯示器或其他顯示設備。散熱系統:由於顯示卡在運行過程中會產生大量的熱量,現代顯示卡通常配有散熱風扇或散熱片來幫助降低溫度,防止過熱對硬體造成損害。**
- **集成顯示卡(Integrated Graphics):集成顯示卡通常嵌入在主機板或CPU中,它依賴於系統的主記憶體(RAM)來處理圖形任務。這類顯示卡的性能較為有限,適合日常工作或輕度圖形需求的使用者。**
- **獨立顯示卡(Discrete Graphics):獨立顯示卡是一種單獨的硬體設備,通常擁有自己的專用顯示記憶體(VRAM)和強大的GPU。這類顯示卡提供高效的圖形處理能力,適合遊戲、專業圖形設計、3D渲染等高需求的應用。**
- **接口標準:**
**PCI/PCIe(Peripheral Component Interconnect / PCI Express): 現代顯示卡通常使用PCIe插槽來與主機板連接。PCIe比早期的PCI標準具有更高的帶寬,支持更快的數據傳輸,並成為大多數現代顯示卡的標準接口。**
- **VGA(Video Graphics Array): 這是較舊的顯示接口標準,雖然它的解析度不如現代標準,但仍在一些舊設備中使用。**
- **HDMI(High Definition Multimedia Interface):HDMI是當前常見的數位視訊輸出接口,支援高畫質圖像和音頻傳輸。它通常用於電視、顯示器、投影儀等顯示設備。**
- **DisplayPort:DisplayPort是另一種高效能數位顯示接口,支援更高的解析度和刷新率,並且常用於現代的顯示器和高端顯示卡。**
**總結:
視訊適配器是每台電腦中不可或缺的組件之一,負責處理並輸出顯示信號,將視覺數據轉換到顯示器上,無論是集成顯示卡還是獨立顯示卡,它們都在日常使用中扮演著重要角色,從基本的文字顯示到高效的圖形渲染和遊戲體驗。**
### 2.4.5 Memory(RAM)
- **基本的記憶體在電腦的類型是Dynamic, Static, Video RAM,CMOS RAM會儲存系統建立的資訊。電腦最多的RAM是Dynamoc RAM因為他是最便宜的,一些系統使用ECC(error checking and correcting),能夠偵測多位錯誤並修正單位錯誤的記憶體。**
- **Dynamic RAM:**
- **FPM RAM是一種早期的動態隨機存取記憶體(DRAM)技術,它改善了傳統 DRAM 的性能,主要通過增加頁面模式(Page Mode)的運作方式,讓記憶體存取變得更高效。**
- **EDO RAM 是 FPM RAM 的一個改進版本,它透過延長數據輸出時間來進一步提升記憶體讀取速度。**
- **BEDO RAM 是對 EDO RAM 的進一步升級,它的核心優勢是「burst mode」,這使得它在處理一組連續資料時,比 EDO RAM 擁有更快的資料讀取速度。**
- **SD RAM 是一種同步 DRAM 技術,它使用與系統時鐘同步的信號來操作,因此可以與 CPU 更有效地協同工作,提供更快的記憶體存取速度。**
- **Static RAM(靜態隨機存取記憶體)是一種不需要定期重新刷新的 RAM 類型。與動態隨機存取記憶體(DRAM)不同,SRAM 在資料保持上不需要持續刷新,這使得它的速度比 DRAM 快,但也較為昂貴且能耗較大。**
- **SRAM 是一種記憶體技術,它通過使用六個晶體管來實現每一位元組的資料儲存,因此能夠保持資料直到電源被切斷,無需刷新的機制。**
- **PBSRAM 是一種改進型的 SRAM,具備增強的「流水線突發模式」,它提供更高的記憶體存取速度,特別是在進行大量數據傳輸時。**
- **Video RAM是一種雙端口 RAM,設計用於圖形和視頻應用,允許同時進行讀取和寫入操作,以便在顯示設備上快速顯示圖像。**
- **WRAM 是一種優化的 VRAM 技術,它改善了 VRAM 的資料傳輸速率,並降低了成本。WRAM 主要應用於顯示卡和視頻處理領域。**
- **SGRAM 是一種同步顯示卡專用記憶體,它比 WRAM 和 VRAM 擁有更高的性能,並且使用與系統時鐘同步的信號進行資料傳輸。**
- **COMSRAM 是一種支持資料壓縮的 SRAM 類型,專為存儲和處理大量資料而設計,尤其適用於視頻和圖形應用。**
- **SIMM 是一種早期的記憶體模組,使用單排接腳連接到主板,通常在 1980s 和 1990s 的電腦中使用。**
- **DIMM 是一種較新的記憶體模組,使用雙排接腳連接,能夠提供更高的資料傳輸速度和更大的容量,通常在現代電腦中使用。**