久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 存儲器域與PCI總線域

存儲器域與PCI總線域

作者: 時間:2016-12-15 來源:網絡 收藏

2.1.2PCI總線域

在x86處理器系統中,PCI總線域是外部設備域的重要組成部分。實際上在Intel的x86處理器系統中,所有的外部設備都使用PCI總線管理。而AMD的x86處理器系統中還存在一條HT(HyperTransport)總線,在AMD的x86處理器系統中還存在HT總線域。本書對HT總線不做進一步介紹。

PCI總線域(PCI Segment)由PCI設備所能直接訪問的地址空間組成。在一個處理器系統中,可能存在多個HOST主橋,因此也存在多個PCI總線域。如在圖2?1所示的處理器系統中,具有兩個HOST主橋,因而在這個處理器系統中存在PCI總線x和y域。

在多數處理器系統中,分屬于兩個PCI總線域的PCI設備并不能直接進行數據交換,而需要通過FSB進行數據交換。值得注意的是,如果某些處理器的HOST主橋支持Peer-to-Peer數據傳送,那么這個HOST主橋可以支持不同PCI總線域間的數據傳送。

PowerPC處理器使用了OCeaN技術連接兩個HOST主橋,OCeaN可以將屬于x域的PCI數據請求轉發到y域,OCeaN支持PCI總線的Peer-to-Peer數據傳送。有關OCeaN技術的詳細說明見第2.2節。

2.1.3處理器域

處理器域是指一個處理器系統能夠訪問的地址空間集合。處理器系統能夠訪問的地址空間由存儲器域和外部設備域組成。其中存儲器域地址空間較為簡單,而在不同的處理器系統中,外部設備域的組成結構并不相同。如在x86處理器系統中,外部設備域主要由PCI總線域組成,因為大多數外部設備都是掛接在PCI總線[4]上的,而在PowerPC處理器和其他處理器系統中,有相當多的設備與FSB直接相連,而不與PCI總線相連。

本書僅介紹PCI總線域而不對其他外部設備域進行說明。其中存儲器域與PCI總線域之間由HOST主橋聯系在一起。深入理解這些域的關系是深入理解PCI體系結構的關鍵所在,實際上這也是理解處理器體系結構的基礎。

通過HOST主橋,處理器系統可以將處理器域劃分為存儲器域與PCI總線域。其中存儲器域與PCI總線域,彼此獨立,并通過HOST主橋進行數據交換。HOST主橋是聯系存儲器域與PCI總線域的橋梁,是PCI總線域實際的管理者。

有些書籍認為HOST處理器是PCI總線域的管理者,這種說法并不精確。假設在一個SMP(symmetric multiprocessing)處理器系統中,存在4個CPU而只有一個HOST主橋,這4個CPU將無法判斷究竟誰是HOST處理器。不過究竟是哪個處理器作為HOST處理器并不重要,因為在一個處理器系統中,是HOST主橋管理PCI總線域,而不是HOST處理器。當一個處理器系統中含有多個CPU時,如果這些CPU都可以訪問HOST主橋,那么這些CPU都可以作為這個HOST主橋所管理PCI總線樹的HOST處理器。

在一個處理器系統中,CPU所能訪問的PCI總線地址一定在存儲器域中具有地址映射;而PCI設備能訪問的存儲器域的地址也一定在PCI總線域中具有地址映射。當CPU訪問PCI域地址空間時,首先訪問存儲器域的地址空間,然后經過HOST主橋轉換為PCI總線域的地址,再通過PCI總線事務進行數據訪問。而當PCI設備訪問主存儲器時,首先通過PCI總線事務訪問PCI總線域的地址空間,然后經過HOST主橋轉換為存儲器域的地址后,再對這些空間進行數據訪問。

由此可見,存儲器域與PCI總線域的轉換關系由HOST主橋統一進行管理。有些處理器提供了一些寄存器進行這種地址映射,如PowerPC處理器使用Inbound和Outbound寄存器組保存存儲器域與PCI總線域的地址映射關系;而有些處理器并沒有提供這些寄存器,但是存儲器域到PCI總線域的轉換關系依然存在。

HOST主橋進行不同地址域間的數據交換時,需要遵循以下規則。為區別存儲器域到PCI總線域的地址映射,下文將PCI總線域到存儲器域的地址映射稱為反向映射。

(1)處理器訪問PCI總線域地址空間時,首先需要訪問存儲器域的地址空間,之后通過HOST主橋將存儲器地址轉換為PCI總線地址,之后才能進入PCI總線域進行數據交換。PCI設備使用的地址空間保存在各自的PCI配置寄存器中,即BAR寄存器中。這些PCI總線地址空間需要在初始化時映射成為存儲器域的存儲器地址空間,之后處理器才能訪問這些地址空間。在有些處理器的HOST主橋中,具有獨立的寄存器保存這個地址映射規則,如PowerPC處理器的Outbound寄存器組;而有些處理器,如在x86處理器中,雖然沒有這樣的寄存器組,但是在HOST主橋的硬件邏輯中仍然存在這個地址轉換的概念。

(2)PCI設備訪問存儲器域時,首先需要訪問PCI總線域的地址空間,之后通過HOST主橋將PCI總線地址轉換為存儲器地址,之后才能穿越HOST主橋進行數據交換。為此處理器需要通過HOST主橋將這個PCI總線地址反向映射為存儲器地址。PCI設備不能訪問在PCI總線域中沒有進行這種反向映射的存儲器域地址空間。PowerPC處理器使用Inbound寄存器組存放PCI設備所能訪問的存儲器空間,而在x86處理器中并沒有這樣的寄存器組,但是依然存在這個地址轉換的概念。

(3)如果HOST主橋不支持Peer-to-Peer傳送方式,那么分屬不同PCI總線域的PCI設備間不能直接進行數據交換。在32位的PCI總線中,每一個PCI總線域的地址范圍都是0x0000-0000~0xFFFF-FFFF,但是這些地址沒有直接聯系。PCI總線x域上的PCI總線地址0x0000-0000與PCI總線y域上的PCI總線地址0x0000-0000并不相同,而且這兩個PCI總線地址經過HOST主橋反向映射后,得到的存儲器地址也不相同。

本篇在第2.2節中,主要以PowerPC處理器為例說明HOST主橋的實現機制,并在第2.2.4節簡要說明了x86處理器中的南北橋構架。盡管部分讀者對PowerPC處理器并不感興趣,筆者仍然強烈建議讀者仔細閱讀第2.2節的全部內容。

在PowerPC處理器中,HOST主橋的實現比較完整,尤其是PCI總線域與存儲器域的映射關系比較明晰,便于讀者準確掌握這個重要的概念。而x86處理器由于考慮向前兼容,設計中包含了太多的不得已,x86處理器有時不得不保留原設計中的不完美,向前兼容是Intel的重要成就,也是一個沉重的十字架。



[1]MPC8548處理器基于E500 V2內核。目前E500內核包括V1,V2和mc(MultiCore)三個版本。

[2]x86處理器的Memory Fence指令為MFENCE,LFENCE和SFENCE,而PowerPC處理器的Memory Fence指令為msync和mbar。

[3]PCI總線域只含有物理地址,因此下文將直接使用PCI總線地址,而不使用PCI總線物理地址。

[4]AMD的x86處理器中的某些外部設備,可能是基于HT總線,而不使用PCI總線。



上一頁 1 2 下一頁

關鍵詞: 存儲器域PCI總線

評論


技術專區

關閉