色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PCI Express體系結構導讀筆記之寄存器和配置

jf_78858299 ? 來源:布魯斯的讀書圈 ? 作者: BruceL ? 2023-01-30 15:34 ? 次閱讀

之前調試了幾個PCI網卡驅動,雖然功能沒什么問題,但驅動中調用的某些內核提供的PCI相關的接口一直沒搞太清楚,所以最近準備深入研究一把。

PCI設備的識別及配置方式

PCI總線使用單端并行數據總線,采用地址譯碼方式進行數據傳遞,而采用ID譯碼方式進行配置信息(比如配置某個PCI設備的物理地址)的傳遞。其中地址譯碼方式使用地址信號,而ID譯碼方式使用PCI設備的ID號,包括Bus Number、Device Number、Function Number和Register Number。Linux系統中使用了Bus Number、Device Number和Function Number區分不同的設備;對于有兩個接口的網卡,Linux會按照兩個設備處理,因為這兩個接口會呈現出不同的Function Number。

Posted和Non-Posted傳送方式

PCI總線規定了兩類數據傳送方式,分別是Posted和Non-Posted數據傳送方式。又分別對應了Posted和Non-Posted總線事務。

Posted總線事務指PCI主設備向PCI目標設備進行數據傳遞時,當數據到達PCI橋后,即由PCI橋接管來自上游總線的總線事務,并將其轉發到下游總線。采用這種數據傳遞方式,在數據還沒有到達最終的目的地之前,PCI總線就可以結束當前總線事務,從而在一定程度上解決了PCI總線的擁塞問題,所以這種方式的PCI總線利用率較高。只有存儲器寫請求可以采用Posted總線事務,簡稱為PMW(Posted Memory Write)。

Non-Posted總線事務是指PCI主設備向PCI目標設備進行數據傳遞時,數據必須到達最終目的地之后,才能結束當前總線事務的一種數據傳遞方式。存儲器讀請求、I/O讀寫請求、配置讀寫請求只能采用Non-Posted總線事務。

中斷請求和數據傳送的同步問題(MSI中斷機制不存在這個問題)

在PCI總線中,INTx信號是一個異步信號。所謂異步,是指INTx信號的傳遞并不與PCI總線的數據傳送同步。假設某個PCI設備在使用DMA方式將一組數據寫入存儲器,該設備在最后一個數據離開自己的發送FIFO時,即認為DMA操作已經完成。此時這個設備將通過INTx信號,通知處理器DMA寫操作完成。

但是,當處理器收到INTx信號時,并不意味著PCI設備已經將數據寫入存儲器中,因為PCI設備的數據傳遞需要經過PCI橋/HOST主橋,最終才能到達存儲器。

PCI總線提供了以下兩種方法解決這個同步問題。

(1)PCI設備保證在數據到達目的地之后,再提交中斷請求。具體來說,PCI設備在提交中斷請求之前,向DMA寫的數據區域發出一個讀請求。PCI總線的“序”機制,保證了在這個存儲器讀請求完成前,會將以前發出的DMA數據寫入存儲器。PCI總線規范要求HOST主橋和PCI橋必須保證這種讀操作可以刷新寫操作。但問題是,沒有多少芯片設計者愿意提供這種機制,因為這將極大地增加他們的設計難度。除此之外,使用這種方法也將增加中斷請求的延時。

(2)中斷服務程序在使用“PCI設備寫入存儲器”的這些數據之前,需要對這個PCI設備進行讀操作。這個讀操作也可以強制將數據最終寫入存儲器。這種方法也是利用了PCI總線的傳送序規則,與第1種方法類似。只是這種方法使用軟件方式,而第1種方式使用硬件方式。這是絕大多數處理器系統采用的方法。在中斷服務程序中,往往都是先讀取PCI設備的中斷狀態寄存器,判斷中斷產生原因之后,才對PCI設備寫入的數據進行操作。這個讀取中斷狀態寄存器的過程,一方面可以獲得設備的中斷狀態,另一方面可以保證DMA寫的數據(在被CPU讀取前)已經到達存儲器。

PCI配置空間中的幾個寄存器的作用

(1)Cache Line Size寄存器:記錄HOST處理器使用的Cache Line長度。在PCI總線中和Cache相關的總線事務,如存儲器寫并無效和Cache多行讀等總線事務需要使用這個寄存器。該寄存器由系統軟件設置,但是在PCI設備的運行過程中,只有其硬件邏輯才會使用該寄存器。對于PCIe設備,該寄存器的值無意義,因為PCIe設備在進行數據傳送時,在其報文中含有一次數據傳送的大小,PCIe總線控制器可以使用這個“大小”,判斷數據區域與Cache Line的對應關系。

(2)Interrupt Line寄存器:由系統軟件對PCI設備進行配置時寫入,記錄當前PCI設備使用的中斷向量號。設備驅動程序可以通過這個寄存器,判斷當前PCI設備使用處理器中的哪個中斷向量號,并將驅動程序中的中斷服務例程注冊到操作系統中。但是,目前在絕大多數處理器系統中,并沒有使用該寄存器存放PCI設備使用的中斷向量號。

(3)Base Address Register 0~5 寄存器:簡稱為BAR寄存器。保存的是PCI設備在PCI總線域中的基地址,由操作系統配置。在PCI設備復位之后,該寄存器將存放PCI設備需要使用的基址空間大小、這段空間是I/O空間還是存儲器空間、如果是存儲器空間是否可預取等。

系統軟件對PCI總線進行配置時,先獲取BAR寄存器中的初始化信息,之后根據處理器系統的配置,將合理的基地址寫入相應的BAR寄存器中。系統軟件還可以使用該寄存器獲得PCI設備使用的BAR空間的長度,方法是向BAR寄存器中寫入0xFFFFFFFF,然后再讀取該寄存器。

(4)Command寄存器:在初始化時,其值為0,此時這個PCI設備除了能夠接收配置請求總線事務外,不能接收任何存儲器或者I/O請求。在Linux系統中,設備驅動程序調用pci_enable_device函數(也可以是pci_enable_device_mem-> pci_enable_device_flags-> do_pci_enable_device-> pcibios_enable_device-> pci_enable_resources-> pci_write_config_word),使能該寄存器的I/O和Memory Space位之后,才能訪問該設備的存儲器或者I/O地址空間。

另外,該寄存器中還有Bus Master位表示該設備是否可以作為主設備(Linux驅動程序中調用pci_set_master函數,將此位設置為1,表示設備可作為master)。寄存器中的Interrupt Disable位默認為0,為1時表示不允許該設備使用INTx信號提交中斷請求,當PCI設備使用MSI中斷方式時,該位將被設置為1(Linux驅動程序中調用的函數為pci_alloc_irq_vectors-> pci_alloc_irq_vectors_affinity-> __pci_enable_msi_range-> msi_capability_init-> pci_intx_for_msi-> pci_intx)。

Linux的PCI設備驅動程序中調用的dma_set_mask_and_coherent函數有什么作用

Linux的PCI設備驅動中一般都會調用諸如dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64))之類的接口。這是用來通知內核當前設備支持的DMA訪問的尋址能力,作用是限制內核為當前設備分配的內存地址范圍。比如之前的例子就表示當前設備支持64位尋址,并且在此范圍內支持一致性DMA訪問。

Linux的PCI設備驅動程序中調用的pci_disable_link_state函數有什么作用

有些PCI設備的驅動中會調用諸如pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM)之類的接口。其作用是設置PCIe設備的擴展配置空間中的Link Control寄存器。具體到前例,是把Link Control寄存器中的“ASPM Control”字段和“Enable clkreq”字段設置為0,作用分別是禁止PCI設備進入L0s和L1(低功耗)狀態以及禁止CLKREQ功能(相當于禁止設備的時鐘管理功能,起到性能優先的效果,不考慮省電;具體效果還取決于內核中CONFIG_PCIEASPM_XXXX相關的配置)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 網卡
    +關注

    關注

    4

    文章

    313

    瀏覽量

    27429
  • PCI
    PCI
    +關注

    關注

    4

    文章

    671

    瀏覽量

    130418
  • 總線
    +關注

    關注

    10

    文章

    2900

    瀏覽量

    88294
收藏 人收藏

    評論

    相關推薦

    淺析PCI體系結構

    PCI總線作為處理系統的局部總線,主要目的是為了連接外部設備,而不是作為處理的系統總線連接Cache和主存儲。但是PCI總線、系統總線
    發表于 08-06 06:02

    ARM體系結構寄存器詳解

    ARM寄存器ARM微處理共有37個32位寄存器,其中31個為通用寄存器,6個為狀態寄存器。但是這些寄存
    發表于 08-25 15:23

    Microarchitecture指令集體系結構

    第二章 ARM微處理概述與編程模型ARM體系結構及其發展歷史處理體系結構處理微架構 Microarchitecture指令集
    發表于 12-14 07:13

    ARM體系結構標準配置

    ARM體系結構包含大量功能,這些功能被描述為可選或定義的實施。來自平臺操作系統供應商的反饋表明這種可變性對于系統代碼的開發人員來說是一個實質性的問題,由于操作系統必須滿足各種不同的系統配置,導致開發
    發表于 08-08 07:40

    ARM通用中斷控制體系結構規范GIC體系結構版本3和版本4

    本手冊中的體系結構描述使用了與Armv8體系結構相同的術語。有關該術語的更多信息,請參閱Armv8-A架構配置文件Armv8 Arm?架構參考手冊A部分的介紹。此外,在適當的情況下使用AArch64
    發表于 08-11 07:45

    ARM微處理體系結構

    ARM微處理體系結構: 2.2.1 數據類型 2.2.2 ARM微處理的工作狀態 2.2.3 ARM體系結構的存儲
    發表于 06-17 00:24 ?42次下載

    FPGA在PCI Express總線接口中的應用

    PCIE(PCI express)是用來互聯諸如計算機和通信平臺應用中外圍設備的第三代高性能I/0總線。PCIE體系結構繼承了第二代總線體系結構最有用的特點,采用與
    發表于 10-17 16:14 ?1127次閱讀
    FPGA在<b class='flag-5'>PCI</b> <b class='flag-5'>Express</b>總線接口中的應用

    用于基于超級體系結構設備的PCI Express總線接口資料免費下載

    從簡單的寄存器訪問到移動數百GB的數據,UltraScale?體系結構中最新的PCI Express集成塊為下一代系統提供了多種連接。
    發表于 02-19 11:53 ?7次下載
    用于基于超級<b class='flag-5'>體系結構</b>設備的<b class='flag-5'>PCI</b> <b class='flag-5'>Express</b>總線接口資料免費下載

    采用PCI9052芯片的配置寄存器及加載其驅動程序的開發

    的大小為256字節,分為頭標區和設備有關區。直接影響設備特性的配置寄存器在頭標區,其他部分則因設備而異。PCI總線的配置空間通常與PCI接口
    發表于 04-04 18:14 ?1689次閱讀
    采用<b class='flag-5'>PCI</b>9052芯片的<b class='flag-5'>配置</b><b class='flag-5'>寄存器</b>及加載其驅動程序的開發

    ARM體系結構的基本特性介紹

    01ARM匯編指令 操作系統中硬件相關的部分集中體現在匯編指令和對寄存器的操作中,因此我們對ARM體系結構的介紹也圍繞ARMv8-A的匯編指令和寄存器來展開。 處理架構是處理
    的頭像 發表于 09-26 10:04 ?6616次閱讀
    ARM<b class='flag-5'>體系結構</b>的基本特性介紹

    淺談PCI Express體系結構(四)

    PCI總線的中斷機制PCI總線使用INTA#、INTB#、INTC#和INTD#信號向處理發出中斷請求。這些中斷請求信號為低電平有效,并與處理的中斷控制
    發表于 12-17 18:26 ?10次下載
    淺談<b class='flag-5'>PCI</b> <b class='flag-5'>Express</b><b class='flag-5'>體系結構</b>(四)

    PowerPC的發展與體系結構概述

    第一部分 PowerPC ? 精簡指令集計算機(RISC)簡介 PowerPC 體系結構是一種精減指令集計算機(Reduced Instruction Set Computer,RISC)體系結構
    的頭像 發表于 06-18 20:02 ?4019次閱讀
    PowerPC的發展與<b class='flag-5'>體系結構</b>概述

    PCI Express體系結構導讀筆記橋和中斷的基礎知識

    1. PCI設備能直接使用的地址是PCI總線域的地址,處理能夠直接使用的是存儲域的地址,PCI主橋負責在這兩種地址之間轉換。當然為了方便
    的頭像 發表于 01-30 15:38 ?737次閱讀
    <b class='flag-5'>PCI</b> <b class='flag-5'>Express</b><b class='flag-5'>體系結構</b><b class='flag-5'>導讀</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b>橋和中斷的基礎知識

    PCI Express體系結構導讀筆記基本連接方式

    1. 每一個PCI設備都有獨立的配置空間,在配置空間中含有該設備在PCI總線中使用的基地址。系統軟件可以動態配置這個基地址,保證每一個
    的頭像 發表于 01-30 15:39 ?898次閱讀

    寄存器間接尋址和寄存器尋址的區別

    寄存器間接尋址和寄存器尋址是計算機體系結構中兩種重要的尋址方式,它們在指令執行過程中起著關鍵作用。下面將從定義、原理、特點、應用場景以及區別等方面對這兩種尋址方式進行詳細闡述。
    的頭像 發表于 10-05 17:13 ?2010次閱讀
    主站蜘蛛池模板: 天天啪免费视频在线看 | 精品人妻伦一二三区久久AAA片 | 97人妻丰满熟妇AV无码 | 97在线观看免费视频 | 国产亚洲精品精华液 | 99久在线国内在线播放免费观看 | 91麻精品国产91久久久久 | old胖老太fat bbw青年 | 日本强好片久久久久久AAA | 交换娇妻呻吟声不停中文字幕 | 中文字幕不卡免费高清视频 | 13小箩利洗澡无码视频APP | 国产AV高清怡春院 | ankha成人 | 四虎永久在线精品免费A | 白银谷在线观看 | 男男女女爽爽爽视频免费 | 麻豆国产原创中文AV网站 | 狠狠色狠狠色综合日日91app | 热中文热国产热综合 | 国产在线精彩视频 | 国产精品永久免费视频观看 | 美女靠逼漫画 | 给个男人都懂的网址2019 | 成人无码精品一区二区在线观看 | 亚洲日本欧美产综合在线 | 欧美午夜精品A片一区二区HD | 蜜芽丅v新网站在线观看 | 久久精品人人做人人爽97 | 亚洲这里只有精品 | 国产国语在线播放视频 | 动漫美女被爆挤奶歪歪漫画 | 伊人久久国产 | 精品国产成人AV在线看 | 亚洲精品国偷拍自产在线 | 好男人资源免费观看1 | 萝莉御姐被吸奶 | 色偷偷男人的天堂a v | 暖暖直播免费观看韩国 | 欲香欲色天天影视大全 | 亚洲成人99 |