PCI Express體系結構導讀(2)


第2章 PCI總線的橋和配置

2.1 存儲器域和PCI總線域

 1)每個橋和設備都有配置空間,由HOST主橋管理

 

2)處理器包括多個CPU,外部cache,中斷控制器,DRAM控制器

    x86中,PCI總線統一管理全部外部設備

3)PCI總線地址空間在初始化時映射成為存儲器域的存儲地址

    如32位的PCI總線中,每一個總線域的地址范圍都是0x0000 0000 ~ 0xFFFF FFFF

   

2.2 HOST主橋

1)PowerPC MPC8548處理器

   AMBA: ARM中典型的soc平台總線

   RapidIO總線是用於解決背板互連的外部總線

  

 2) 配置空間的訪問

    用ID號尋址,ID號包括:總線號,設備號,功能號

    總線號由系統軟件決定,與主橋相連的PCI總線編號為0

    設備號由設備的IDSEL信號與總線地址線的連接關系確定;

    功能號與設備的具體設計相關,大多只有一個功能設備

   a. 內部寄存器 存放在BASE_ADDR為起始地址的“1MB的物理地址空間”中,通過BASE_ADDR+ 0x8000即為CFG_ADDR

     CFG_ADDR 保存ID號和寄存器號,要訪問配置空間時,需先設置該寄存器

     CFG_DATA是大端,PCI設備的 配置寄存器 采用小端編址

   b. 存儲器地址轉換為PCI地址 outbound

      ATMU寄存器組包括outbound和inbound寄存器組

3)x86的HOST主橋

   x86有兩個I/O端口寄存器,分別為CONFIG_ADDRSS和CONFIG_DATA,0xCF8和0xCFC

   x86處理器采用小端地址模式,南北橋升級為MCH和ICH,MCH基礎存儲器控制器、顯卡芯片、HOST-to-PCIe主橋

    ICH包括LPC、IDE、USB總線;而最新的nehalem I7中,MCH一分為二,存儲控制器和圖形控制器與CPU內核集成,剩下與ICH合並為PCH

    

2.3 橋和設備的配置空間

1)三種類型的配置空間:PCI agent, PCI橋, cardbus橋片

    PCI橋不需要驅動來設置,被稱為透明橋,還有種非透明的PCI橋

    PCI設備將配置信息存放在E2PROM中,上電初始化時,把E2PROM讀到配置空間中作為初始值,由硬件邏輯完成;然后系統會根據DFS算法初始化配置空間。

2)PCI agent配置

    

    vendor id , 生產廠商, intel是0x8086, 0xffff無效

     device id, 具體設備, 這兩個是由PCISIG 分配的。

     revision id, 版本號

     class code, PCI設備的分類, 包括base class code (顯卡、網卡、PCI橋等), sub class code,  interface

     header type, 區分 PCI Agent、 橋、 cardbus

     Expansion ROM base address , 有些設備需要在操作系統運行前完成初始化,如顯卡,鍵盤,硬盤,這個PCI設備需要運行ROM的地址

     capabilities pointer, capabilities組的基地址,存放擴展配置信息,PCI可選,PCI-X和PCIE設備必須支持

     interrupt line , PCI設備使用的中斷向量號, 驅動得到后,注冊ISR到OS

           只對8259A中斷控制器有效,多數處理器沒有用這個

     interrupt pin, 使用的中斷引腳,1表示INTA#

     base address register 0~5, BAR 保存基地址, linux用pci_resource_start讀,ioremap物理地址轉為邏輯地址,直接讀BAR不對(得到PCI物理地址)

     command, 命令寄存器,設置才能訪問IO和存儲

     status, 得到設備狀態

      letency timer, 控制PCI設備占用總線的時間

3) 橋的配置空間

    

    (待續)

 2.4 PCI總線的配置

 1) 兩種配置請求: type 00, type 01, 穿橋只能01

 2)系統軟件用DFS初始化bus號,device號

2.5 非透明橋

1)可以方便的連接兩個處理器系統(不是cpu),對PCI總線x域和y域進行隔離,但不隔離存儲器域空間

 

 第3章 PCI總線的數據交換

3.1 BAR空間的初始化

1)系統使用DFS遍歷PCI總線時會初始化BAR等寄存器,然后就可以進行數據傳遞

2)powerPC中通過inbound和outbound實現兩域之間的轉換;x86沒有這個機制,而是直接相等,但還是是不同域的地址

3.2 設備的數據傳遞

3.3 與cache相關的事務

1)powerPC 設置inbound來設置是否進行cache一致性操作

     x86使用MTRR寄存器設置

 (cache好復雜,待續)

3.4 預讀機制

1)使用預讀機制降低了cache行失效帶來的影響,有 指令預讀、數據預讀、外部設備的預讀隊列、操作系統的預讀策略

   指令預讀:CPU根據程序的執行情況,提前把指令從主存預讀到指令cache中

   

 

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM