天天看點

【Linux 0.11】第二章 微型計算機組成結構

趙炯;《Linux 核心完全注釋 0.11 修正版 V3.0》

微型計算機組成原理

串行通訊點對點技術的高速 PCIE 總線。

為了讓系統的不同部分都能夠達到其最高傳輸速度,總線結構衍生出北橋和南橋兩個晶片組。

  • 北橋晶片(高速總線):與 CPU、記憶體和 AGP 視訊接口。
  • 南橋晶片(低速總線):管理中低速的元件,PCI 總線,IDE 硬碟接口,USB 端口。

I/O 端口尋址和通路控制方式

CPU 為了通路 I/O 接口控制器或控制卡上的資料和狀态資訊,需要知道他們的位址(資料端口、指令端口、狀态端口) —— 端口位址,統一編址(I/O控制器中的端口位址歸入存儲器尋址位址空間,通路端口與通路記憶體的操作一樣)和獨立編址(将端口位址空間獨立,稱為I/O位址空間,使用專門的I/O指令通路端口)。

接口的通路可以采用:程式循環查詢方式、中斷處理方式和 DMA 傳輸方式。

  • 當裝置或控制器能夠立刻傳回資訊時才會在很少的幾個地方采用程式循環查詢方式。
  • 中斷處理方式需要用中斷控制器的支援。
  • 直接存儲器通路DMA:I/O裝置與記憶體之間進行批量資料傳送,需要使用DMA控制器,無需CPU插手。

主存儲器、BIOS 和 CMOS 存儲器

為了與原來的 PC 機相容,系統 1MB 以下實體記憶體使用配置設定上仍然保持與原來的 PC 機一緻,對于 1MB 以上的記憶體,在記憶體的最高端存在 BIOS 段,1MB 處存在 BIOS 的影子區域。

【Linux 0.11】第二章 微型計算機組成結構

BIOS:用于計算機開機執行時系統自檢;建立起作業系統需要的配置表(中斷向量表、硬碟參數表…);把處理器和系統其餘部分初始化;提供硬體裝置接口服務;

從通路效率上考慮,linux 作業系統在運作時并不使用 BIOS 中的功能。

複位按鈕按下:CPU 自動設定 CS:IP=0xF000:0xFFF0(0xFFFFFFF0),段基址0xFFFF0000,段長度64KB,指向最後一個 64K 的最後 16 位元組處。 BIOS 在這裡存放一條能夠跳轉到 64KB 範圍内的跳轉指令。

>>> hex(64*1024-16)
'0xfff0'      

BIOS 程式會使用 32 位大模式,将段長設定為 4G,将 64KB BOIS 代碼和資料複制到記憶體低端 1M 末端的 64KB,然後跳轉到這個地方,讓 CPU 進入實位址模式工作。

【Linux 0.11】第二章 微型計算機組成結構

除了記憶體和 ROM BIOS 以外,還使用隻有很少存儲容量的 CMOS(64/128 B),存儲器來存放計算機的實時時鐘資訊和系統硬體配置資訊。通常和實時時鐘晶片做在一塊內建塊中,CMOS 記憶體的位址空間在基本記憶體空間之外,需要使用 I/O 指令來通路。

控制器和控制卡

80X86 使用兩片級聯的 8259A 可程式設計中斷控制晶片組成一個中斷控制器,用于實作 I/O 裝置的中斷控制資料存取方式。

ROM BIOS 會分别對兩片 8259A 晶片進行初始化,将15級中斷優先級配置設定,記憶體開始處0x000~0xFFF(4KB)建立一個中斷向量表。

【Linux 0.11】第二章 微型計算機組成結構

中斷請求号被 BIOS 設定為相應的中斷向量号,Linux 作業系統會重新設定中斷請求号與中斷向量号的對應關系。

【Linux 0.11】第二章 微型計算機組成結構

8237 晶片主要負責 DMA 功能。

8253/8254 是一個可程式設計定時/計數器晶片。

鍵盤上有一個稱為鍵盤編碼器的處理器(8048)用來收集按鍵按下和松開的狀态資訊,産生接通掃描碼和斷開掃描碼。

【Linux 0.11】第二章 微型計算機組成結構

串行通信是指線上路上以比特位資料流一次一個比特進行傳輸的通信方式。分為異步和同步。異步串行通信以一個字元作為一個通訊機關或一幀進行傳輸,而同步串行通訊則以多個字元或位元組為機關。

【Linux 0.11】第二章 微型計算機組成結構

通用異步接收/發送器控制晶片 UART 組成的串行控制器來處理串行資料的收發工作。

顯示控制

  1. MDA 顯示标準(單色顯示擴充卡)

    螢幕顯示規格:80列x25行,每個字元帶有一個屬性位元組,一個螢幕(一幀)4KB。

    偶位址位元組存放字元代碼,奇位址位元組存放顯示屬性。

    顯存占用 0xb0000~0xb2000(8KB)

字元位元組位置 = 0xb0000+video_num_columns*2*y + x*2;      
【Linux 0.11】第二章 微型計算機組成結構

2. CGA 顯示标準

彩色圖形擴充卡 CGA 支援 7 種彩色和圖形顯示方式。

配有16KB顯存(0xb8000~0xbc000),偶位址位元組存放字元代碼,奇位址位元組存放字元顯示屬性。

【Linux 0.11】第二章 微型計算機組成結構
【Linux 0.11】第二章 微型計算機組成結構

為了能讀寫硬碟上的資料,必須使用磁盤控制器,磁盤控制器介于 CPU 與驅動器之間的邏輯接口電路。接受 CPU 指令,向驅動器發送尋道、讀/寫和控制信号。

繼續閱讀