[BIOS] PC Architecture

A.學習目標 (PC Architecture)
a.瞭解PC的基本架構與歷史。

B.大綱
1. CPU 中央處理器(Central Processing Unit)
2. Chipset 晶片組
3. Flash ROM
4. Super I/O (SIO)
5. PCI (Peripheral Component Interconnect) bus
6. Peripheral Component Interconnect Express (PCI-E) bus
7. System Resources 系統資源

C.PC Architecture Introduction
PC是以晶片組為中心,向外連接CPUDRAMUSBSIO等等,學習PC Architecture這部份就是盡量去瞭解基本的架構,因為架構一直在更新。
觀念在這個科技業,永遠是放在第一。
今日最新的架構是INTEL-64,是由IA-32架構延伸而來的,IA-32架構是指系統為32位元的系統定址最高可支援4GB,同理INTEL-64架構是指系統為64位元系統。
還有一種架構IA-64是另一款完全以64位元架構,要經過轉換才下相容IA32,與INTEL-64不同。
這邊介紹以都是與IA-32為基礎向上相容INTEL-64,建議參考SPEC會對整個架構了解。
Intel® 64 and IA-32 Architectures Software Developers Manual Volume 1, 2, 3

C.1. CPU 中央處理器(Central Processing Unit)
    Components
    ALUControl UnitRegister
    Input UnitOutput Unit
    Bus
    Address bus (就是所謂的Address Space)
    Data bus(所謂的32位元64位元的CPU)
    Control bus
    Manufacturer
    Intel, AMD, and VIA
Note:
HT(HyperThreading)  超執行續
讓單顆處理器模擬成多顆處理器的環境,使得具有能同時執行多個線程的能力。
當程式運行時,程式會被分解為多個執行緒,傳統CPU在同一時間內只可運行一個執行緒,才可處理下一個執行緒,而每個執行緒不可用到所有的CPU資源,因此 CPU  會有很多資源閒置。而使用 HT  技術時,作業系統會把工作線程分派給這"兩顆"CPU去執行,讓多種應用程式或單一應用程式的多個執行緒,可將一個CPU同時處理的執行緒增多,提高 CPU的使用率,減少 CPU閒置時間,從而提高系統性能。不過兩個邏輯CPU是共享程式區與資料區,但擁有自己堆疊區的程式。

優點CPU或多 CPU的電腦上執行時,效能更為增加;執行續可以讓圖形介面回應更快。
缺點有可能發生互搶資源及資源衝突等情況,這時 HT 反而會降低性能。

Data bus, address bus, control bus
There are normally three types of bus in any processor system

Data Bus (資料匯流排)
Address Bus (位址匯流排)
Control Bus (控制匯流排)
用途
This contains the contents that have been read from the memory location or are to be written into the memory location.
CPURAM間傳送資料
This determines the location in memory that the processor will read data from or write data to.
傳送記憶體位址,指明欲存取之資料在記憶體中的位置
This manages the information flow between components indicating whether the operation is a read or a write and ensuring that the operation happens at the right time.
傳送CPU發出對其他部門的控制訊號
方向
雙向
單向
單向
應用
每條匯流排每次僅傳送1Bit
排線數代表每次資料傳輸的位元數,CPU的位元數
由排線數可以推算有效的定址空間數(記憶體容量)
32條排線的電腦定址空間為2^32=2^2 * 2^30=4G (Bytes)


 
EX. 80286 CPU有資料匯流排16條排線,位址匯流排24條排線,則
(1) 此為16位元CPU
(2) 每次資料傳輸為16位元
(3) 有效的定址空間數(記憶體容量)16M(Bytes)

底下是簡單的 address bus size  address bus memory capacity 換算列
CPU, Address Bus Sizes, Address Bus Memory Capacity Chart
CPU
Address Bus Size
Maximum RAM
8086/8088
20 bit
1MB
80286
24 bit
16MB
80386SX
24 bit
16MB
80386DX/80486SX/80486DX/ Pentium I/ K6/ Duron/ Athlon/ Athlon XP
32 bit
4GB
Celeron/ Pentium Pro/ Pentium II/ Pentium III/ Pentium 4
36 bit
64GB
Athlon/ Athlon-64/ Athlon-64 FX/ Opteron
40 bit
1TB
Itanium/ Itanium 2
44 bit
16TB

C.2 Chipset 晶片組
    分成NBSB近年Nvidia有把南北橋整合在一起,Intel 下一代平台會把北橋整合到CPU裡面。
    Two main motherboard chips
    Northbridge
    Southbridge
    Manufacturer
    IntelATInVidiaSISVIA
    Northbridge
    Memory Controller Hub (MCH)
    主要是對Dram Controller記憶體控制與graphic card chip繪圖晶片控制Graphics and Memory Controller Hub  (GMCH)
    連接處理這些元件CPURAMPCI Express x16Southbridge.
    Southbridge
    I/O Controller Hub (ICH)
    處理 “較慢的” 周邊元件溝通
    PCI bus, LPC bus, SMBus
    DMA controller
    IDE (SATA or PATA) controller
    LPC Bridge
    Real Time Clock
    Nonvolatile BIOS memory

1.1是最新的架構圖,這是一張X58 and ICH10的視意圖[1],注意的是 記憶體控制器被並入CPU裡面。
北橋連接=> PCI-E 2.0 的外插顯示卡,CPU
而舊式的北橋(右圖)是連接,外插顯示卡,CPU,記憶體控制器。
南橋連接=> PCI-E slot,網路卡,USBSATAHD AudioMatrix Storage適用於陣列磁碟。
 
1.1 晶片組連接視意圖

C.3. Flash ROM
    Floating gate transistors (Cells)
    Stores data
    Advantage
    Non-volatile
    既然Non-volatile 就是當電源關掉後,資料還是存在。
    FlashROM大小以bit為單位
    Ex: 8Mbit=1MByte; 4Mbit=512Kbyte
    在寫入(write)或是抹除(erase),參考SPEC看這顆ROM支援byte write 或是 block write,抹除也是byte erase 或是 block erase
     Manufacturer
    旺宏,華邦
    現今的傳輸介面
    SPI (Serial Peripheral Interface) FlashROM

C.4. Super I/O (SIO)
    Purpose
    結合很多裝置的控制器變成一顆IC(標準的SOC)
         用在串列、並列阜,P/S2 interface
    Hardware Monitoring(Power Control)
         AC Recovery CircuitSIO有一暫存器可以紀錄電腦用電狀態,若是有不正常失去電源的話,在電源回復後會發信號要求開啟啟動程序。
         Keyboard Wake on Mouse
         S5 PME wakeup
         AC Recovery Circuit
         Keyboard Wake on Mouse
         S5 PME wakeup
         Fan Control
    主要2條介面(每一種SIO的控制介面或許會有所不同,有些是用8051代替SMBus Interface控制Fan)
    LPC Interface
         Logical devices
         Southbridge chip
    SMBus Interface
         Hardware monitoring registers

C.5. PCI (Peripheral Component Interconnect) bus
    Purpose
    連接晶片,外插卡或是子系統
    但是現在已經快消失了(被PCI-E所取代)
    Protocol
    33.33 MHz or 66.66 MHz clock with 同步傳送
    32-bit or 64-bit data bus width
    最高傳輸率133 MB 每秒 for 32-bit bus width
                       (33.33 MHz × 32 bits × (1 byte ÷ 8 bits) = 133 MB/s)
    32-bit address space (4 gigabytes)
    256-byte configuration space(PCI header)
    3.3 or 5-volt signaling
    PCI-to-PCI Bridge mechanism
    就是PCI Bridge 的上一層稱做primary下一層稱做secondary,最後的BUS稱做 Subordinate
    Bus Number 8個共有2pow(8)=256種組合,
    Device number5個共有2pow(5)=32種組合
    Function Number3個共有2pow(3)=8種組合

C.6. Peripheral Component Interconnect Express (PCI-E) bus
    Protocol
    單向頻率2.5 Gb/s,雙向頻率5 Gb/s
    PCI-E transfers data at 250 MB/s per lane(頻寬)
    2.5 Gb/s/direction × 8b/10b encoding × (1 byte ÷ 8 bits) = 250 MB/s per lane
    資料採串列傳輸且遵循IEEE 802.3z8b/10b的規範,所以8bits的資料會映射成10bits的長度頻率,為了克服信號轉換時造成的信號錯誤
    最高 32 lanes, 32 lanes頻寬可達8 GB/s
    250 MB/s ×32 lanes=8 GB/s
    相容於 PCI 定址模式
Note :
PCIe傳輸速度的算法如下:PCI Express中,每條Lane傳輸的數據為2.5Gbps,在經過8b/10b編碼轉換後,其實際的傳輸速度就是(2.5G * 8/10 (編碼率)* 1/8(位元組))2.5Gbps/10=250MB/s
原因:在傳輸的過程中,被傳輸的數據首先會被Byte Stripping(位元組分解),然後採用了可以避免電路之間的EMI以及Lane之間信號串擾問題的LFSRLinear Freeback Shift Register)算法對位元組數據進行加密,位元組被分解之後,會經過8b/10b8/10位)編碼轉換成10位的數據,並將時鐘頻率直接巢狀到傳輸的數據當中,避免了傳統PCI總線因為要進行獨立時鐘頻率和數據信號的同步調節而引起的效率下降問題。接下來,10位的數據會經過並行-串行的轉換,最後在驅動電路中經過為傳輸高帶寬數據而設計Deemphasis(去加重頻應覆原)之後送往各條Lane輸出。

C.7. System Resources系統資源[2]
提一下所謂的系統資源(system resources). 在電腦的世界裡,所謂的系統資源約可分為四大類,亦即:
1. DMA 2. Memory 3. IO 4. Interrupts. (大家若是仔細檢視一下 [我的電腦]->[內容]->[硬體]->[裝置管理員]->[檢視]->[資源(依類型)]

l      DMA:
  CPU
可以說是系統的大腦;在沒有DMA,CPU幾乎得參與所有的事情;但是有了DMA,可以讓 DMA controller或是bus-mastering devices自己來執行data transfer from and to memory,CPU只在開始及結束時參與;如此CPU可以做其他事情典型的電腦系統有八個 DMA channels. 檢視 "資源(依類型)"DMA的部分可以知道哪一個 channel被哪一個 device使用.
l      * Interrupt:
  
周邊devices請求 cpu 服務的方式一般的電腦系統中有 16IRQs(IRQ0~15). 由兩個 cascade8259所提供當有device透過 IRQx interrupt, CPU會被告知;然後,CPU最後會得到對應於該IRQxservice routine entry point,之後便跳到該處去執行ISR(interrupt service routine). 現在的電腦系統有發展出APIC mode(有別於原有的8259 mode),其目的在於提供更多的 interrupt inputs以及專有的interrupt機制.在檢視 "資源(依類型)"中的interrupt可發現: IRQ 0/1/4/6/8/12/13/14/15其實是dedicated to specific devices使用的;而剩下的IRQs則是分給PCI devices共同/單獨使用若是APIC mode,則可以看到超過15IRQ !
l      Memory:
  
在此所謂的memory,並非指記憶體模組那種memory,而是: CPU memory addressing space ! 亦即,32-bit CPU而言,可以定址到的 memory space is 2^32 = 4GB. 這麼大的空間就是一種資源 !因為,在此範圍內,CPU可以完全存取。或是這樣說PC上每個device, function那怕是ACPI table都有會被存取到,而PC會賦予他們位址,4GB是系統最多可以給的位址。若是64位元架構的PC則可以支援2^64這麼多位址給予。在高位址記憶體會"Mapping(映射)"到內部裝置,就要參考MMIO的觀念.
l      I/O
=> 
同理, IO 指的也是 CPU I/O addressing space. 也是一種資源現在 I/O addressing space  0000h~FFFFh,64KB的範圍.

D. Reference Web Side
[1] http://www.reghardware.co.uk/2008/11/03/intel_prices_up_first_core_i7_cpus/
[2] http://biosengineer.blogspot.com/

留言