開啟主選單

求真百科

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和NonPosted傳送方式

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 PCIX總線簡介

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設備的DState

8.4.2 D State的狀態遷移

8.5小結

第9章流量控制

9.1流量控制的基本原理

9.1.1 RateBased流量控制

9.1.2 CreditBased流量控制

9.2 CreditBased機制使用的算法

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和MSIX中斷機制

10.1 MSI/MSIX Capability結構

10.1.1 MSI Capability結構

10.1.2 MSIX Capability結構

10.2 PowerPC處理器如何處理MSI中斷請求

10.2.1 MSI中斷機制使用的寄存器

10.2.2系統軟件如何初始化PCIe設備的MSI Capability結構

10.3 x86處理器如何處理MSIX中斷請求

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處理器的VTd

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 SRIOV技術

13.3.2 MRIOV技術

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如何使能MSIX中斷機制

15.3小結

參考文獻

參考文獻