第二章 微型計算機組成結構
任何一個系統都是由4個基本部分組成:輸入-處理中心-輸出,整個系統由能源提供。
計算機系統可分爲軟件和硬件部分。
2.2 I/O
端口尋址和訪問控制方式
2.2.1 I/O
端口和尋址
表 2-1 I/O
端口地址分配
端口地址範圍 | 分配說明 | 端口地址範圍 | 分配說明 |
---|---|---|---|
0x000~0x01F |
8237A DMA 控制器1 |
0x1F0~0x1F7 |
IDE 硬盤控制器0 |
0x020~0x03F |
8259A 可編程中斷控制器 1 |
0x278~0x27F |
並行打印端口 2 |
0x040~0x05F |
8253/8254A 定時計數器 |
0x2F8~0x2FF |
串行控制器2 |
0x060~0x06F |
8402 鍵盤控制器 |
0378~037F |
並行打印機端口1 |
0x070~0x07F |
訪問CMOS RAM /實時時鐘RTC(Real Time Clock) 端口 |
0x3B0~0x3BF |
單色MDA 顯示控制器 |
0x080~0x09F |
DMA 頁面寄存器訪問端口 |
0x3C0~0x3CF |
彩色CGA 顯示控制器 |
0x0A0~0x0BF |
8259A 可編程控制器2 |
0x3D0~0x3DF |
彩色EGA/VGA 顯示控制器 |
0x0C0~0x0DF |
8237A DMA 控制器2 |
0x3F0~0x3F7 |
軟盤控制器 |
0x0F0~0x0FF |
協處理器訪問端口 | 0x3F0~0x3F7 |
串行控制器1 |
0x170~0x177 |
IDE 硬盤控制器1 |
[root@my root]# cat /proc/ioports
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0077 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
03c0-03df : vga+
0400-041f : iTCO_wdt
0400-041f : iTCO_wdt
0680-069f : pnp 00:00
0930-0930 : PNP0C09:00
0930-0930 : EC data
0934-0934 : PNP0C09:00
0934-0934 : EC cmd
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
164e-164f : pnp 00:00
1800-18fe : pnp 00:00
1800-1803 : ACPI PM1a_EVT_BLK
1804-1805 : ACPI PM1a_CNT_BLK
1808-180b : ACPI PM_TMR
1830-1833 : iTCO_wdt
1830-1833 : iTCO_wdt
1850-1850 : ACPI PM2_CNT_BLK
1854-1857 : pnp 00:02
1880-189f : ACPI GPE0_BLK
e000-efff : PCI Bus 0000:02
e000-e0ff : 0000:02:00.0
f000-f03f : 0000:00:02.0
f040-f05f : 0000:00:1f.4
f040-f05f : i801_smbus
f060-f07f : 0000:00:17.0
f060-f07f : ahci
f080-f083 : 0000:00:17.0
f080-f083 : ahci
f090-f097 : 0000:00:17.0
f090-f097 : ahci
ff00-fffe : pnp 00:07
ffff-ffff : pnp 00:00
2.2.2 接口訪問控制
PC
D的I/O
接口數據傳輸控制方式一般可以採用程序循環查詢方式、中斷處理方式和DMA
傳輸方式。
程序循環查詢方式指CPU
通過在程序中循環查詢指定設備控制器中的狀態判斷是否可以與設備進行數據交換。
中斷處理方式需要中斷控制器的支持。
**直接存儲器訪問(Direct Memory Access, DMA)
**方式用於I/O
設備與系統內存之間進行批量數據傳送,整個操作過程需要使用專門的DMA
控制器來進行而無需CPU
插手。
2.3 主存儲器、BIOS
和CMOS
存儲器
2.3.1 主存儲器
2.3.2 基本輸入/輸出程序BIOS
存放在ROM
中的系統BIOS
程序主要用於計算機開機時執行系統各部分的 自檢,建立起操作系統需要使用的各種配置表,如中斷向量表、硬盤參數表。Linux
運行時不使用BIOS
中的功能。
當計算機系統上電開機或者按了機箱上的復位按鈕時,CPU
會自動把代碼段寄存器CS
設置爲0xf000
,其短地址則被設置爲0xffff0000
,段長度設置爲64KB
。IP
被設置爲0xfff0
,此時CPU
代碼指針指向0xfffffff0
處,即4GB
空間的最後64KB
的最後16B
處。
2.3.3 CMOS
存儲器
在PC/AT
中,除需要使用內存和ROM BIOS
以外,還使用只有很少存儲容量的(只有64B
或128B
)CMOS
(Complementary Metal Oxide Semiconductor
,互補金屬氧化物半導體)存儲器來存放計算機的實時時鐘信息和系統硬件配置信息。
2.4 控制器和控制卡
中斷控制器
如圖2-6,在計算機開始初始化期間, ROM BIOS
會分別對兩片8259A
芯片進行初始化,並分別吧15
級中斷優先級分配給時鐘定時器、鍵盤、串行口、打印口、軟盤控制、協處理器和硬盤等設備或控制器使用。同時在內存開始出0x000~0xfff
區域捏建立一箇中斷向量表。
表2-2 開機時ROMBIOS
設置的硬件請求處理中斷號
中斷請求號 | BIOS 設置的終端號 |
用途 | 中斷請求號 | BIOS 設置的終端號 |
用途 |
---|---|---|---|---|---|
IRQ0 |
0x08 (8) |
8253 發出的100Hz 時鐘中斷 |
IRQ8 |
0x70 (112) |
實時鐘中斷 |
IRQ1 |
0x09 (9) |
鍵盤中斷 | IRQ9 |
0x71 (113) |
改向至INT 0x0A |
IRQ2 |
0x0A (10) |
接連從芯片 | IRQ10 |
0x72 (114) |
保留 |
IRQ3 |
0x0B (11) |
串行口2 |
IRQ11 |
0x73 (115) |
保留(網絡接口) |
IRQ4 |
0x0C (12) |
串行口1 |
IRQ12 |
0x74 (116) |
PS/2 鼠標口中斷 |
IRQ5 |
0x0D (13) |
並行口2 |
IRQ13 |
0x75 (117) |
數學協處理器中斷 |
IRQ6 |
0x0E (14) |
軟盤驅動器 | IRQ14 |
0x76 (118) |
硬盤中斷 |
IRQ7 |
0x0F (15) |
並行口1 |
IRQ15 |
0x77 (119) |
保留 |
2.4.2 DMA
控制器
DMA
控制器的主要功能是通過外部設備直接與內存傳輸數據來增強系統性能。
2.4.3 定時/計數器
intel 8253/8254
是一個可編程定時/計數器(Programmable Interval Timer, PIT)
芯片,用於處理計算機中的精確時間延遲。該芯片有3
個獨立的16
位計數器通道。
2.4.4 鍵盤控制器
我們使用的鍵盤是IBM
公司與1984
年研製的PC/AT
的兼容鍵盤,通常稱爲AT-PS/2
兼容鍵盤並只有101~104
個按鍵。
目前有3
套掃描碼集(Scan Code Set
):
#1 第一套:原始XT
鍵盤掃描碼集。
#2 第二套:現代鍵盤默認使用的掃描碼集,通常稱爲AT
鍵盤掃描碼集。
#3 第三套:PS/2
鍵盤掃描碼集。
鍵盤控制器通常採用Intel 8042
單片微處理器芯片或其兼容電路。
表2-3 鍵盤控制器變成端口接收到的第一套掃描碼集接通和斷開掃描碼示例
按鍵 | 接通掃描碼 | 斷開掃描碼 | 說明 |
---|---|---|---|
A |
0x1E |
0x9E |
非擴展的普通鍵 |
9 |
0x0A |
0x8A |
非擴展的普通鍵 |
功能鍵F9 |
0x43 |
0xC3 |
非擴展的普通鍵 |
方向鍵向右鍵 | 0xe0 , 0x4D |
0xe0 , 0xCD |
擴展鍵 |
右Ctrl 鍵 |
0xe0 , 0x1D |
0xe0 , 0x9D |
擴展鍵 |
左shift 鍵+``G 鍵 |
0x2A, 0x22 |
0xAA , 0xA2 |
先按並且後釋放shift 鍵 |