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是以晶片組為中心,向外連接CPU、DRAM、USB、SIO等等,學習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 Developer’s Manual Volume 1, 2, 3。
C.1. CPU 中央處理器(Central Processing Unit)
• Components
– ALU、Control Unit、Register
– Input Unit、Output 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.
CPU與RAM間傳送資料
|
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 晶片組
• 分成NB、SB近年Nvidia有把南北橋整合在一起,Intel 下一代平台會把北橋整合到CPU裡面。
• Two main motherboard chips
– Northbridge
– Southbridge
• Manufacturer
– Intel,ATI,nVidia,SIS,VIA
• Northbridge
– Memory Controller Hub (MCH)
– 主要是對Dram Controller記憶體控制與graphic card chip繪圖晶片控制Graphics and Memory Controller Hub (GMCH)
– 連接處理這些元件CPU、RAM、PCI Express x16、Southbridge.
• 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,網路卡,USB,SATA,HD Audio,Matrix 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 Circuit在SIO有一暫存器可以紀錄電腦用電狀態,若是有不正常失去電源的話,在電源回復後會發信號要求開啟啟動程序。
• 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 number有5個共有2pow(5)=32種組合
• Function Number有3個共有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.3z中8b/10b的規範,所以8個bits的資料會映射成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之間信號串擾問題的LFSR(Linear Freeback Shift Register)算法對位元組數據進行加密,位元組被分解之後,會經過8b/10b(8位/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使用.
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). 由兩個 cascade的8259所提供. 當有device透過 IRQx發 interrupt時, CPU會被告知;然後,CPU最後會得到對應於該IRQx的service 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,則可以看到超過15的IRQ !
周邊devices請求 cpu 服務的方式. 一般的電腦系統中有 16IRQs(IRQ0~15). 由兩個 cascade的8259所提供. 當有device透過 IRQx發 interrupt時, CPU會被告知;然後,CPU最後會得到對應於該IRQx的service 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,則可以看到超過15的IRQ !
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的觀念.
在此所謂的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的範圍.
=> 同理, 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/
留言
張貼留言