PCIExpress體系結構導讀檢視原始碼討論檢視歷史
《PCIExpress體系結構導讀》,王齊 著,出版社: 機械工業出版社。
機械工業出版社成立於1950年,是建國後國家設立的第一家科技出版社,前身為科學技術出版社,1952年更名為機械工業出版社[1]。機械工業出版社(以下簡稱機工社)由機械工業信息研究院作為主辦單位,目前隸屬於國務院國資委[2]。
內容簡介
本書講述了與PCI及PCI Express總線相關的最基礎的內容,並介紹了一些必要的、與PCI總線相關的處理器體系結構知識,這也是本書的重點所在。深入理解處理器體系結構是理解PCI與PCI Express總線的重要基礎。
讀者通過對本書的學習,可超越PCI與PCI Express總線自身的內容,理解在一個通用處理器系統中局部總線的設計思路與實現方法,從而理解其他處理器系統使用的局部總線。本書適用於希望多了解一些硬件的軟件工程師,以及希望多了解一些軟件的硬件工程師,也可供電子工程和計算機類的研究生自學參考。
目錄
前言
第Ⅰ篇PCI體系結構概述
第1章PCI總線的基本知識
1.1 PCI總線的組成結構
1.1.1 HOST主橋
1.1.2 PCI總線
1.1.3 PCI設備
1.1.4 HOST處理器
1.1.5 PCI總線的負載
1.2 PCI總線的信號定義
1.2.1地址和數據信號
1.2.2接口控制信號
1.2.3仲裁信號
1.2.4中斷請求等其他信號
1.3 PCI總線的存儲器讀寫總線事務
1.3.1 PCI總線事務的時序
1.3.2 Posted和NonPosted傳送方式
1.3.3 HOST處理器訪問PCI設備
1.3.4 PCI設備讀寫主存儲器
1.3.5 Delayed傳送方式
1.4 PCI總線的中斷機制
1.4.1中斷信號與中斷控制器的連接關係
1.4.2中斷信號與PCI總線的連接關係
1.4.3中斷請求的同步
1.5 PCIX總線簡介
1.5.1 Split總線事務
1.5.2總線傳送協議
1.5.3基於數據塊的突發傳送
1.6小結
第2章PCI總線的橋與配置
2.1存儲器域與PCI總線域
2.1.1 CPU域、DRAM域與存儲器域
2.1.2 PCI總線域
2.1.3處理器域
2.2 HOST主橋
2.2.1 PCI設備配置空間的訪問機制
2.2.2存儲器域地址空間到PCI總線域地址空間的轉換
2.2.3 PCI總線域地址空間到存儲器域地址空間的轉換
2.2.4 x86處理器的HOST主橋
2.3 PCI橋與PCI設備的配置空間
2.3.1 PCI橋
2.3.2 PCI Agent設備的配置空間
2.3.3 PCI橋的配置空間
2.4 PCI總線的配置
2.4.1 Type 01h和Type 00h配置請求
2.4.2 PCI總線配置請求的轉換原則
2.4.3 PCI總線樹Bus號的初始化
2.4.4 PCI總線Device號的分配
2.5非透明PCI橋
2.5.1 Intel 21555中的配置寄存器
2.5.2通過非透明橋片進行數據傳遞
2.6小結
第3章PCI總線的數據交換
3.1 PCI設備BAR空間的初始化
3.1.1存儲器地址與PCI總線地址的轉換
3.1.2 PCI設備BAR寄存器和PCI橋Base、Limit寄存器的初始化
3.2 PCI設備的數據傳遞
3.2.1 PCI設備的正向譯碼與負向譯碼
3.2.2處理器到PCI設備的數據傳送
3.2.3 PCI設備的DMA操作
3.2.4 PCI橋的Combining、Merging和Collapsing
3.3與Cache相關的PCI總線事務
3.3.1 Cache一致性的基本概念
3.3.2 PCI設備對不可Cache的存儲器空間進行DMA讀寫
3.3.3 PCI設備對可Cache的存儲器空間進行DMA讀寫
3.3.4 PCI設備進行DMA寫時發生Cache命中
3.3.3 DMA寫時發生Cache命中的優化
3.4預讀機制
3.4.1指令Fetch
3.4.2數據預讀
3.4.3軟件預讀
3.4.4硬件預讀
3.4.5 PCI總線的預讀機制
3.5小結
第Ⅱ篇PCI Express體系結構概述
第4章PCIe總線概述
4.1PCIe總線的基礎知識
4.1.1端到端的數據傳遞
4.1.2 PCIe總線使用的信號
4.1.3 PCIe總線的層次結構
4.1.4 PCIe鏈路的擴展
4.1.5 PCIe設備的初始化
4.2 PCIe體系結構的組成部件
4.2.1基於PCIe架構的處理器系統
4.2.2 RC的組成結構
4.2.3 Switch
4.2.4 VC和端口仲裁
4.2.5 PCIe to PCI/PCI X橋片
4.3 PCIe設備的擴展配置空間
4.3.1 Power Management Capability結構
4.3.2 PCI Express Capability結構
4.3.3 PCI Express Extended Capabilities結構
4.4小結
第5章Montevina的MCH和ICH
5.1 PCI總線0的Device 0設備
5.1.1 EPBAR寄存器
5.1.2 MCHBAR寄存器
5.1.3其他寄存器
5.2 Montevina平台的存儲器空間的組成結構
5.2.1 Legacy地址空間
5.2.2 DRAM域
5.2.3存儲器域
5.3存儲器域的PCI總線地址空間
5.3.1 PCI設備使用的地址空間
5.3.2 PCIe總線的配置空間
5.4小結
第6章PCIe總線的事務層
6.1TLP的格式
6.1.1通用TLP頭的Fmt字段和Type字段
6.1.2 TC字段
6.1.3 Attr字段
6.1.4通用TLP頭中的其他字段
6.2 TLP的路由
6.2.1基於地址的路由
6.2.2基於ID的路由
6.2.3隱式路由
6.3存儲器、I/O和配置讀寫請求TLP
6.3.1存儲器讀寫請求TLP
6.3.2完成報文
6.3.3配置讀寫請求TLP
6.3.4消息請求報文
6.3.5 PCIe總線的原子操作
6.3.6 TLP Processing Hint
6.4 TLP中與數據負載相關的參數
6.4.1 Max_Payload_Size參數
6.4.2 Max_Read_Request_Size參數
6.4.3 RCB參數
6.5小結
第7章PCIe總線的數據鏈路層與物理層
7.1數據鏈路層的組成結構
7.1.1數據鏈路層的狀態
7.1.2事務層如何處理DL_Down和DL_Up狀態
7.1.3 DLLP的格式
7.2 ACK/NAK協議
7.2.1發送端如何使用ACK/NAK協議
7.2.2接收端如何使用ACK/NAK協議
7.2.3數據鏈路層發送報文的順序
7.3物理層簡介
7.3.1PCIe鏈路的差分信號
7.3.2物理層的組成結構
7.3.3 8/10b編碼與解碼
7.4小結
第8章PCIe總線的鏈路訓練與電源管理
8.1 PCIe鏈路訓練簡介
8.1.1鏈路訓練使用的字符序列
8.1.2 Electrical Idle狀態
8.1.3 Receiver Detect識別邏輯
8.2 LTSSM狀態機
8.2.1 Detect狀態
8.2.2 Polling狀態
8.2.3 Configuration狀態
8.2.4 Recovery狀態
8.2.5 LTSSM的其他狀態
8.3 PCIe總線的ASPM
8.3.1與電源管理相關的鏈路狀態
8.3.2 L0狀態
8.3.3 L0s狀態
8.3.4 L1狀態
8.3.5 L2狀態
8.4 PCI PM機制
8.4.1 PCIe設備的DState
8.4.2 D State的狀態遷移
8.5小結
第9章流量控制
9.1流量控制的基本原理
9.1.1 RateBased流量控制
9.1.2 CreditBased流量控制
9.2 CreditBased機制使用的算法
9.2.1 N123算法和N123+算法
9.2.2 N23算法
9.2.3流量控制機制的緩衝管理
9.3 PCIe總線的流量控制
9.3.1 PCIe總線流量控制的緩存管理
9.3.2 Current節點的Credit
9.3.3 VC的初始化
9.3.4 PCIe設備如何使用FCP
9.4小結
第10章MSI和MSIX中斷機制
10.1 MSI/MSIX Capability結構
10.1.1 MSI Capability結構
10.1.2 MSIX Capability結構
10.2 PowerPC處理器如何處理MSI中斷請求
10.2.1 MSI中斷機制使用的寄存器
10.2.2系統軟件如何初始化PCIe設備的MSI Capability結構
10.3 x86處理器如何處理MSIX中斷請求
10.3.1 Message Address字段和Message Data字段的格式
10.3.2 FSB Interrupt Message總線事務
10.4小結
第11章PCI/PCIe總線的序
11.1生產/消費者模型
11.1.1生產/消費者的工作原理
11.1.2生產/消費者模型在PCI/PCIe總線中的實現
11.2 PCI總線的死鎖
11.2.1緩衝管理引發的死鎖
11.2.2數據傳送序引發的死鎖
11.3 PCI總線的序
11.3.1 PCI總線序的通用規則
11.3.2 Delayed總線事務的傳送規則
11.3.3 PCI總線事務通過PCI橋的順序
11.3.4 LOCK,Delayed和Posted總線事務間的關係
11.4 PCIe總線的序
11.4.1 TLP傳送的序
11.4.2 ID Base Ordering
11.4.3 MSI報文的序
11.5小結
第12章PCIe總線的應用
12.1 Capric卡的工作原理
12.1.1 BAR空間
12.1.2 Capric卡的初始化
12.1.3 DMA寫
12.1.4 DMA讀
12.1.5中斷請求
12.2 Capric卡的數據傳遞
12.2.1 DMA寫使用的TLP
12.2.2 DMA讀使用的TLP
12.2.3Capric卡的中斷請求
12.3基於PCIe總線的設備驅動
12.3.1 Capric卡驅動程序的加載與卸載
12.3.2 Capric卡的初始化與關閉
12.3.3 Capric卡的DMA讀寫操作
12.3.4Capric卡的中斷處理
12.3.5存儲器地址到PCI總線地址的轉換
12.3.6存儲器與Cache的同步
12.4 Capric卡的延時與帶寬
12.4.1TLP的傳送開銷
12.4.2PCIe設備的DMA讀寫延時
12.4.3 Capric卡的優化
12.5小結
第13章PCIe總線與虛擬化技術
13.1 IOMMU
13.1.1 IOMMU的工作原理
13.1.2 IA處理器的VTd
13.1.3 AMD處理器的IOMMU
13.2 ATS(Address Translation Services)
13.2.1TLP的AT字段
13.2.2地址轉換請求
13.2.3Invalidate ATC
13.3 SR IOV與MR IOV
13.3.1 SRIOV技術
13.3.2 MRIOV技術
13.4小結
第Ⅲ篇Linux與PCI總線
第14章Linux PCI的初始化過程
14.1 Linux x86對PCI總線的初始化
14.1.1 pcibus_class_init與pci_driver_init函數
14.1.2 pci_arch_init函數
14.1.3 pci_slot_init和pci_subsys_init函數
14.1.4與PCI總線初始化相關的其他函數
14.2 x86處理器的ACPI
14.2.1 ACPI驅動程序與AML解釋器
14.2.2 ACPI表
14.2.3 ACPI表的使用實例
14.3基於ACPI機制的Linux PCI的初始化
14.3.1基本的準備工作
14.3.2 Linux PCI初始化PCI總線號
14.3.3 Linux PCI檢查PCI設備使用的BAR空間
14.3.4 Linux PCI分配PCI設備使用的BAR寄存器
14.4 Linux PowerPC如何初始化PCI總線樹
14.5小結
第15章Linux PCI的中斷處理
15.1 PCI總線的中斷路由
15.1.1 PCI設備如何獲取irq號
15.1.2 PCI中斷路由表
15.1.3 PCI插槽使用的irq號
15.2使用MSI/MSIX中斷機制申請中斷向量
15.2 .1 Linux如何使能MSI中斷機制
15.2.2 Linux如何使能MSIX中斷機制
15.3小結
參考文獻
參考文獻
- ↑ 中國十大出版社-出版社品牌排行榜,買購網
- ↑ 企業簡介,機械工業出版社