PCI Express體系結構導讀(1)

2022-08-19 19:27:11 字數 4728 閱讀 4300

前言1)深入理解處理器體系結構是理解pci匯流排的重要基礎,超越pci自身,去理解系統的區域性匯流排。

2023年開始pcie取代pci和agp,成為區域性匯流排工業標準。

pci 並行共享架構, pcie序列

剛剛接觸pci不要去讀規範文件,規範文件適合查閱,不便於學習。

2)第一篇,pci匯流排基礎知識

第二篇,pcie相關概念

第1章, posted,non-posed, split 資料傳送方式,很重要

第2章,pci橋,pci的精華

第3章,資料傳送方式,與cache相關和預讀機制

第4,5章,pcie通述,x86的rc

第6,7章,pcie的事務層,鏈路層,物理層,物理層是核心,中國工程師最沒機會接觸的內容

第9章,流控的管理和策略

第10章,msi和msi-x中斷機制,x86架構多用msi-x,許多嵌入式處理器仍用msi

第11章,pcie中的序

第12章,linux驅動實現過程, capric和cornus卡

第13章,pci與虛擬化技術

第三篇,linux系統中pci的使用

第1章  pci基本知識

1)pci (peripheral componet interconnect), 屬於區域性匯流排(local bus),主要功能是連線外部裝置。由intel提出。

isa->pci->pcie, pcie繼承pci的設計思路;

pci-to-pci橋 (pci橋)、pcie-to-pci橋(pcie橋)、host-to-pci主橋(host主橋,pci主橋,pci匯流排控制器)

2)pci匯流排空間和處理器空間隔離

通過host主橋隔離,其中有許多緩衝,使得他們工作在各自的時鐘頻率

主橋的作用是將處理器訪問的儲存器位址轉換為pci匯流排位址 (重要)

以freescale的power pc和intel的x86處理器為例說明host主橋的實現方式。

3)可擴充套件

host主橋引出pci匯流排,pci通過pci橋擴充套件,形成pci匯流排樹,1課樹最多256個pci裝置

pci 橋的配置空間有管理其子樹的配置暫存器

4)動態配置

pci裝置的位址可由系統軟體動態分配,解決位址衝突,實現「即插即用」; isa還需要跳線

每個pci裝置都有獨立的配置空間,其中有裝置在匯流排中使用的基位址(實體地址)。

5)匯流排頻寬

pci,32位、33mhz的為132mb/s, eisa為33mb/s

6) 共享匯流排機制

pci裝置通過仲裁後獲得pci匯流排使用,才能傳輸,不需要處理器干預。

7)中斷機制

pci裝置通過四根中斷請求訊號 inta~d#向處理器提交中斷請求。配置空間中有這四根訊號的資訊。還有msi機制

x86,powerpc, mips, arm都把pci作為標準區域性匯流排,pci裝置:網絡卡,音效卡,硬碟控制器等

arm使用soc平台匯流排,即amba匯流排,連線片內裝置,但還是有amba-to-pci橋

1.1 pci匯流排組成結構

1)host主橋

pci裝置通過host主橋訪問主存,即dma操作,cache一致性模組會監聽,然後改變cache狀態。

powerpc處理器和主橋在乙個晶元,x86主橋在北橋中;

2)pci裝置

三類:pci主裝置、從裝置、橋裝置

pci裝置可以是主也可以是從,統稱pci agent, pci網絡卡、顯示卡、音效卡都是。

3)host處理器

host主橋中有許多暫存器,x86中有0xcf8和0xcfc兩個i/o埠 訪問pci裝置的配置空間;

powerpc中則是cfg_addr和cfg_data來訪問;

4)pci匯流排的負載,乙個插槽相當於2個負載,即pci最多10個負載

1.2 pci的訊號定義

每個裝置都有clk訊號,用於同步資料傳遞

2)位址和資料訊號

a. ad[31:0]訊號,復用位址和資料訊號,先傳位址,再傳資料;

突發傳輸,乙個位址週期後,多個資料週期

b. par訊號,為位址資料訊號線提供奇偶校驗位

c. c/be[3:0]#訊號

位址週期,該訊號表pci匯流排的訊號

資料週期,表示位元組選通訊號

目前多數pci裝置不支援i/o位址空間,僅支援儲存器位址空間

3)控制訊號,作用是保證資料的正常傳遞

a. frame#訊號, 指示乙個pci匯流排事務的開始和結束。低有效

b. irdy#訊號, 由主裝置驅動,錶主裝置的資料準備好了

c. trdy#訊號,由目標裝置驅動,表目標裝置資料準備完畢;

d. stop#訊號,目標裝置請求主裝置停止當前事務

e. idsel訊號,配置讀寫匯流排事務時,選擇pci目標裝置   

f. devsel#訊號,目標裝置準備好

g. lock#訊號, 將目標裝置的儲存器和io資源鎖定,禁止其他主裝置訪問。避免使用,因為影響傳送效率

4)仲裁訊號, req#和gnt#

每條pci匯流排都有乙個匯流排仲裁器(pci橋中). 先是主裝置發req#給仲裁,然後gnt#會有效就獲得了使用權

5)中斷請求

inta#, intb#, intc#, intd# , 低有效,pci裝置向處理器提交中斷請求,驅動的isr清除中斷後,pci裝置將訊號置高,結束中斷。

通過乙個規則(中斷路由表)得知來自不同pci裝置的中斷請求

1.3 pci匯流排的儲存器讀寫匯流排事務

1)pci裝置只有在系統軟體初始化配置空間後,才能被訪問

2)配置空間初始化後,該裝置就擁有乙個獨立的pci匯流排位址空間,即bar(base address register) 中描述的空間

3)posted和non-posted資料傳送方式

posted方式:主裝置傳數,到pci橋時,由橋來接管下發。減少阻塞。

non-posted: 資料必須到達目的地才能結束匯流排事務。pci匯流排使用delayed匯流排緩解這種方式的擁塞。

只有儲存器寫(pmw)可以採用posted事務,而儲存器讀,io讀寫,配置讀寫只能non-posted事務

4)host處理器訪問pci裝置

包括兩方面: host處理器向pci裝置發起儲存器和io讀寫請求

host處理器對pci裝置進行配置讀寫

a. pci裝置的配置空間中,共6個bar,可以存放i/o位址空間,儲存器位址空間,等pci匯流排位址空間,是pci匯流排域的實體地址。

b. x86有獨立的io空間,可以把pci的io位址對映到儲存器域的io位址空間,通過in,out對儲存器域io訪問,

host主橋又轉換為pci域的io位址,最後訪問到pci裝置的io. 兩個域的i/o位址相同;

而powerpc則把pci裝置的io對映到儲存器位址

5)pci裝置讀寫主存

pci裝置與主存進行資料交換的過程被稱為dma. 按照我們的9056驅動來看,處理器讀寫pci裝置也可以dma

6)delayed方式

用於緩解non-posted擁塞,分為delay讀寫請求和delay讀寫完成

處理器傳給主橋後,啟用retry週期,就釋放匯流排了。delayed讀請求drr,讀完成drc

雖然有提公升,但重試週期也會消耗pci匯流排,所以pci-x和pcie公升級為split事務,傳送端將non-posted發給接收端

然後接收端主動將資料傳遞給傳送端

1.4 中斷機制

兩種:inta/b/d#訊號和msi

1) x86使用apic中斷控制器,powerpc使用mpic中斷控制器

中斷控制器有外部中斷請求引腳irq_pinx#, bios的中斷路由表記錄intx訊號和中斷控制器的連線關係

多數裝置僅使用inta,pci配置空間interrupt pin暫存器記錄了該裝置究竟用哪個intx訊號。

intx屬於邊帶訊號,即這些訊號在pci匯流排中是可選訊號,只能在處理系統內部使用,pci橋不會處理這些邊帶訊號

中斷路由表:由bios儲存兩者間的對映關係

2)中斷的同步

intx與clk訊號無關,涉及非同步

如當裝置dma寫主存,isr中收到intx時,並不意味著資料已經寫入主存,因為資料傳遞需要通過host主橋和pci橋,才能到主存。

(即兩個路徑,無法確定哪個資訊率先到達)

所以isr中要先讀中斷狀態暫存器,這個讀保證了資料已經到達主存,(利用了pci匯流排的「序」機制)

3) msi中斷機制

實際上是儲存器寫事務,是某段儲存器位址範圍,資料事先安排好的,含有中斷向量號。host主橋會翻譯這個寫事務為中斷請求給處理器

pci-x和pcie必須支援msi,pci不一定

1.5 pci-x匯流排簡介

1) 頻率可達533mhz

2)split事務,requester和completer,和delayed比,資料是由completer主動傳遞的,而不是通過requester通過多次重試得到的。

3)目標裝置可以將主裝置發的命令鎖存,在下乙個時鐘週期進行解碼操作。提高了效率

很少有基於pci-x的裝置

mysql 體系結構 了解MySQL體系結構

mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...

簡述mysql體系結構 MySQL體系結構

一 mysql登入方式 一 tcp ip方式 遠端 本地 mysql uroot poldboy123 h 10.0.0.51 p3306 二 socket方式 mysql uroot poldboy123 s tmp mysql.sock 二 例項介紹 例項 mysqld後台守護程序 主線程 ma...

軟體體系結構 軟體體系結構概論

開學到現在我已經上了三節軟體體系結構的課程,現在我想把自己學到的整理歸納一下。此篇隨筆對應於教材軟體體系結構概論一章。首先談一談我剛接觸這門課程是的感受。那就是 我靠 軟體也會有體系結構?以前只學過資料結構 演算法 基本的程式語言,覺得程式設計無非就是使用者給我需求,我便按照需求來程式設計序就好,從...