專利名稱:面向集中地址譯碼的非pci片上總線的pci虛擬化裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及系統(tǒng)對(duì)集中地址譯碼的非PCI (Peripheral Component Interconnect,周邊元件擴(kuò)展接口)設(shè)備的自動(dòng)識(shí)別和初始化,使得基于非PCI總 線架構(gòu)的系統(tǒng)芯片(System-on-Chip,以下簡(jiǎn)稱為SoC)支持工業(yè)標(biāo)準(zhǔn)的PCI 設(shè)備枚舉。
背景技術(shù):
PCI總線是一種不依賴于某個(gè)具體處理器的局部總線,它提供了將系統(tǒng)中 的外圍設(shè)備連接起來(lái)的總線協(xié)議,已經(jīng)成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。PCI Special Interest Group于1998年發(fā)布了基于共享總線架構(gòu)的PCI V2.2總線規(guī)范,描述 PCI設(shè)備的電氣特性、連接方法以及和軟件之間的交互。PCI-X總線在PCI V2.2 版本的基礎(chǔ)上,支持更高的總線頻率,采用多任務(wù)流水線機(jī)制,從而提高總線 利用率,增大總線帶寬。PCI Express總線是一種點(diǎn)對(duì)點(diǎn)串行連接的設(shè)備連接 方法,每個(gè)設(shè)備具有各自獨(dú)立的數(shù)據(jù)連接,可以并發(fā)傳輸數(shù)據(jù),這是一種不同 于以往PCI總線的全新總線規(guī)范。PCI V2.2、 PCI-X禾口PCI Express總線具有 與PCI兼容的配置機(jī)制及配置寄存器,支持設(shè)備的識(shí)別和初始化,本發(fā)明適用 于以上任何一種PCI總線,以下統(tǒng)稱為PCI總線,即物理PCI總線。
每個(gè)PCI設(shè)備內(nèi)部都實(shí)現(xiàn)一組配置寄存器,構(gòu)成PCI配置空間。標(biāo)準(zhǔn)的 PCI配置空間包括256個(gè)8位配置寄存器,它是獨(dú)立于存儲(chǔ)空間和I/O空間的 物理空間,是PCI總線所特有的一個(gè)空間。配置空間包括預(yù)定義頭部區(qū)域以及 與設(shè)備相關(guān)區(qū)域。直接影響設(shè)備特性的配置寄存器在預(yù)定義頭部區(qū)域,其他部 分則因設(shè)備而異。在PCI配置寄存器中的設(shè)備ID、制造商ID、版本號(hào)、頭部 類型、類別代碼、命令寄存器和狀態(tài)寄存器在所有的PCI設(shè)備中都必須實(shí)現(xiàn); 基地址寄存器和中斷相關(guān)寄存器指明了 PCI設(shè)備所需的存儲(chǔ)空間大小、I/O 空間大小、中斷等資源需求情況。每個(gè)PCI設(shè)備只需實(shí)現(xiàn)該設(shè)備所必需的配置 寄存器。系統(tǒng)上電時(shí),與設(shè)備無(wú)關(guān)PCI設(shè)備枚舉程序通過(guò)訪問(wèn)配置空間,實(shí)現(xiàn)對(duì)系 統(tǒng)中PCI設(shè)備的檢測(cè)、識(shí)別、配置和初始化工作。程序以輪詢的方式訪問(wèn)PCI 總線0上每個(gè)插槽的配置空間,檢測(cè)位于PCI總線0上的PCI設(shè)備和PCI/PCI 橋,為檢測(cè)到的PCI/PCI橋分配一個(gè)總線號(hào)1,然后在PCI總線1上繼續(xù)輪詢, 檢測(cè)PCI設(shè)備和PCI/PCI橋,直到在每條檢測(cè)到的PCI總線上每個(gè)插槽都被輪 詢到并且所有PCI設(shè)備被檢測(cè)到為止。對(duì)所發(fā)現(xiàn)的安裝在系統(tǒng)中的每個(gè)PCI
設(shè)備,了解其資源需求情況,配置該設(shè)備配置空間中適當(dāng)?shù)幕刂芳拇嫫?,?而完成系統(tǒng)資源的無(wú)沖突分配,建立地址映射,并加載相應(yīng)的設(shè)備驅(qū)動(dòng)程序。
近年來(lái),處理器和存儲(chǔ)器的性能不斷提高,而PCI總線協(xié)議對(duì)總線時(shí)鐘頻
率、數(shù)據(jù)傳輸延遲和帶寬以及數(shù)據(jù)通路寬度都有嚴(yán)格要求,限制了系統(tǒng)的整體 性能。半導(dǎo)體工藝的進(jìn)步和集成電路設(shè)計(jì)技術(shù)的發(fā)展,使得在單一芯片上集成 整個(gè)系統(tǒng)的功能部件成為可能,越來(lái)越多的外圍設(shè)備將位于片上高速總線上。
為提高設(shè)計(jì)效率,基于IP復(fù)用的設(shè)計(jì)方法已經(jīng)在SoC設(shè)計(jì)中得到了廣泛應(yīng)用, 如何盡可能少地對(duì)IP進(jìn)行改動(dòng)也成為SoC設(shè)計(jì)的一個(gè)重要目標(biāo)。
影響較大的嵌入式SoC總線包括ARM公司的AMBA (Advanced Microcontroller Bus Architecture)總線、IBM公司的CoreConnect總線、AMD 公司的GeodeLink總線和Silicore公司的Wishbone總線等,在本發(fā)明中我們 統(tǒng)稱為非PCI總線。它們具有各自不同的特性和協(xié)議規(guī)范,但共同之處在于采 用集中的地址譯碼機(jī)制。較高性能和較高時(shí)鐘頻率的設(shè)備位于高速系統(tǒng)總線 上,如網(wǎng)絡(luò)控制器、硬盤控制器和DMA控制器等。較低性能和較低時(shí)鐘頻率 的設(shè)備位于低速外圍總線上,如串行接口、并行接口和音頻控制器等。高速系 統(tǒng)總線和低速外圍總線通過(guò)高速/低速總線橋接器進(jìn)行連接和通訊,高速系統(tǒng) 總線和PCI總線通過(guò)Host/PCI橋接器進(jìn)行連接和通訊。但是,位于這些非PCI 總線上的設(shè)備沒(méi)有實(shí)現(xiàn)PCI配置空間,所以基于非PCI總線的SoC不支持工 業(yè)標(biāo)準(zhǔn)的PCI設(shè)備枚舉,從而非PCI設(shè)備不能被上層應(yīng)用軟件識(shí)別和初始化, 參與系統(tǒng)資源的分配。
中國(guó)專利公開號(hào)CN1522415的對(duì)比文件,提供了一種虛擬PCI設(shè)備裝置 和方法將非PCI設(shè)備識(shí)別和初始化配置為PCI設(shè)備,提供了一種非PCI設(shè)備 參與系統(tǒng)資源分配,并為上層軟件所訪問(wèn)的方法。對(duì)于配置交易訪問(wèn)(用于分 配存儲(chǔ)空間、1/0空間、ROM空間和中斷等系統(tǒng)資源),被虛擬的設(shè)備在其內(nèi)部實(shí)現(xiàn)主機(jī)總線接口、必要的PCI配置空間寄存器、PCI配置地址鏡像和監(jiān)控模塊。當(dāng)計(jì)算機(jī)程序通過(guò)PCI配置交易為被虛擬的設(shè)備分配系統(tǒng)資源時(shí),被虛擬的設(shè)備根據(jù)分配的設(shè)備號(hào),采用總線監(jiān)聽(snooping)機(jī)制將接收并處理酉己
置交易。在配置完成后,當(dāng)計(jì)算機(jī)程序訪問(wèn)被虛擬的設(shè)備的i/o空間或存儲(chǔ)空
間時(shí),每個(gè)被虛擬設(shè)備的監(jiān)控模塊都監(jiān)聽總線上的交易,根據(jù)內(nèi)部的資源分配信息,判斷是否接收并處理該總線交易。Host/PCI橋接器保存了分配給PCI總線的資源信息,也通過(guò)監(jiān)聽機(jī)制來(lái)接收并處理配置交易、以及i/o交易和存儲(chǔ)交易。該專利文件所提供的虛擬PCI設(shè)備裝置和方法中,每個(gè)被虛擬化的設(shè)備以及Host/PCI橋接器都必須實(shí)現(xiàn)PCI配置交易的監(jiān)控處理邏輯,并保存系統(tǒng)資源分配信息,這就要求對(duì)每個(gè)被虛擬化的設(shè)備進(jìn)行修改,而且還存在信息冗余,可能造成不一致。專利號(hào)為5832246的美國(guó)專利《Virtualization of the ISAbus on PCI with the existence of a PCI to ISA bridge》提出了一種將ISA設(shè)備虛擬化為PCI設(shè)備的方法和系統(tǒng),特別針對(duì)需要使用DMA操作的ISA設(shè)備,通過(guò)一個(gè)位于PCI總線上的"virtualizing hardware"的模塊來(lái)實(shí)現(xiàn)。該模塊實(shí)現(xiàn)了PCI接口,監(jiān)測(cè)PCI總線并聲明交易,模擬了DMA通道并實(shí)現(xiàn)DMA的功能,幫助ISA設(shè)備與內(nèi)存之間讀寫數(shù)據(jù)。該專利的工作方式如下假如位于PCI總線上的"virtualizing hardware"模塊,對(duì)應(yīng)于一個(gè)ISA設(shè)備,模擬了 DMA通道1 。當(dāng)處理器通過(guò)legacy I/O端口進(jìn)行DMA操作時(shí),虛擬的PCI設(shè)備接收并分析這個(gè)交易是否是自己所需的,如果是,那么它就進(jìn)行虛擬的DMA工作,在ISA設(shè)備和內(nèi)存之間移動(dòng)數(shù)據(jù);否則虛擬的PCI設(shè)備忽略這個(gè)交易,并且發(fā)送PCI retry請(qǐng)求,并且下次不再聲明這個(gè)交易。這樣,處理器發(fā)出的這個(gè)交易便被發(fā)送到了PCWSA橋上,由真實(shí)的DMA進(jìn)行處理。該專利文件提供的將ISA設(shè)備虛擬化為PCI設(shè)備的方法和系統(tǒng)中尚有以下問(wèn)題需要解決首先,其實(shí)現(xiàn)ISA設(shè)備PCI虛擬化的方法是為每個(gè)設(shè)備上都實(shí)現(xiàn)一個(gè)"virtualizinghardware"模塊,屬于分布式,其設(shè)計(jì)比較復(fù)雜性,效率也比較低,可擴(kuò)展性也較差;其次,該專利文件針對(duì)ISA設(shè)備,并不實(shí)現(xiàn)PCI配置空間寄存器,因此若要實(shí)現(xiàn)即插即用(Plug and Play,以下簡(jiǎn)稱PnP),需要與PnPBIOS—起工作;第三,該主機(jī)通過(guò)位于PCI總線的PCI/ISA橋接器訪問(wèn)ISA總線上的設(shè)備,虛擬化模塊位于PCI總線上,并不適用于將片上總線的設(shè)備虛擬化為PCI設(shè)備的領(lǐng)域。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題在于,提供一種面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置及方法,利用非PCI總線的集中地址譯碼特性,通過(guò)集中式的PCI虛擬化機(jī)制解決了現(xiàn)有技術(shù)存在的問(wèn)題,使得不必對(duì)非PCI設(shè)備IP和Host/PCI橋接器作任何改動(dòng),計(jì)算機(jī)程序就可以無(wú)差別地識(shí)別、配置和訪問(wèn)PCI設(shè)備和非PCI設(shè)備。
為達(dá)到上述目的,本發(fā)明提供的面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置包括至少一個(gè)處理器及非PCI總線,其特征在于,還包括-
一虛擬PCI部件(Virtual PCI component,以下簡(jiǎn)稱VPCI部件),位于所述處理器和所述非PCI總線之間,用于接收、處理和轉(zhuǎn)發(fā)所述處理器發(fā)出的所有訪問(wèn)設(shè)備配置空間、存儲(chǔ)空間和I/0空間的交易,進(jìn)而實(shí)現(xiàn)將所述非PCI設(shè)備虛擬化為PCI設(shè)備。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,
所述虛擬PCI部件進(jìn)一步包括
虛擬PCI配置空間,用于分別為每個(gè)非PCI設(shè)備實(shí)現(xiàn)一個(gè)虛擬PCI配置空間;
虛擬配置端口寄存器,用于負(fù)責(zé)所述虛擬PCI配置空間的訪問(wèn);監(jiān)測(cè)邏輯模塊,用于監(jiān)測(cè)所述處理器發(fā)出的配置交易,根據(jù)配置交易的地
址階段的總線號(hào)和設(shè)備號(hào),控制所述虛擬PCI配置空間和物理PCI配置空間的訪問(wèn);
轉(zhuǎn)發(fā)邏輯模塊,用于轉(zhuǎn)發(fā)所述處理器對(duì)非PCI設(shè)備和物理PCI設(shè)備的存儲(chǔ)空間和I/O空間的訪問(wèn)交易。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述虛擬PCI配置空間和物理PCI配置空間相同,所述虛擬PCI配置空間的配置寄存器記錄了設(shè)備的基本信息及資源需求信息,以實(shí)現(xiàn)上層應(yīng)用軟件識(shí)別和初始化所述非PCI設(shè)備。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述虛擬配置端口寄存器包括虛擬配置地址寄存器VIR—CONFIG一ADDR和虛擬配置數(shù)據(jù)寄存器VIR一CONFIG一DATA,所述虛擬配置地址寄存器VIR—CONFIG—ADDR和虛擬配置數(shù)據(jù)寄存器VIR—CONFIG_DATA在功能上和Host/PCI橋接器中的物理配置地址寄存器CONFIG—ADDR和物理配置數(shù)據(jù)寄存器CONFIG—DATA相同。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述每個(gè)非PCI設(shè)備都由系統(tǒng)預(yù)設(shè)一段固定的存儲(chǔ)空間,用于I/O交易轉(zhuǎn)換。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述基本信息包括設(shè)備ID、制造商ID、版本號(hào)、頭部類型、類別代碼、命令寄存器及狀態(tài)寄存器;所述資源需求信息包括存儲(chǔ)空間、1/0空間及中斷等。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述虛擬配置端口寄存器還包括一標(biāo)志寄存器,當(dāng)所述標(biāo)志寄存器設(shè)置為有效時(shí),表示當(dāng)前的配置交易是訪問(wèn)所述虛擬PCI配置空間,由所述虛擬PCI部件負(fù)責(zé)處理該配置交易;當(dāng)所述標(biāo)志寄存器設(shè)置為無(wú)效時(shí),表示當(dāng)前的配置交易是訪問(wèn)所述物理PCI配置空間,由Host/PCI橋接器負(fù)責(zé)處理該配置交易。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述配置交易包括地址階段和數(shù)據(jù)階段,其中,地址階段交易通過(guò)寫配置地址寄存器,指明要訪問(wèn)設(shè)備的配置空間中配置寄存器的地址;數(shù)據(jù)階段交易通過(guò)讀/寫配置數(shù)據(jù)寄存器,由相關(guān)控制邏輯讀/寫地址階段所指明的配置寄存器,對(duì)物理PCI配置空間訪問(wèn)的控制邏輯由Host/PCI橋接器提供,讀取數(shù)據(jù)被鎖存入配置數(shù)據(jù)寄存器并返回給處理器,寫數(shù)據(jù)被鎖存入配置地址寄存器并寫入相應(yīng)配置空間的相應(yīng)配置寄存器中。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述非PCI片上總線是指任何采用集中式的地址譯碼機(jī)制的總線,可以是ARM公司的AMBA( Advanced Microcontroller Bus Architecture)總線或者IBM公司的CoreConnect總線,也可以是AMD公司的GeodeLink總線或者Silicore公司的Wishbone總線。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述PCI設(shè)備是兼容PCI的一類設(shè)備的統(tǒng)稱,是位于PCI V2.2總線上的PCI設(shè)備、或者是位于PCI-X總線上的PCI-X設(shè)備、或者是位于PCI Express總線上的PCI Express設(shè)備。進(jìn)一步的,本發(fā)明還提供了一種面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,用于包括至少一個(gè)處理器及非PCI總線的面向集中地址譯碼
的非PCI片上總線的PCI虛擬化裝置,其特征在于,包括
一 PCI虛擬步驟,通過(guò)位于所述處理器和所述非PCI總線之間的虛擬PCI
部件,接收、處理和轉(zhuǎn)發(fā)所述處理器發(fā)出的所有訪問(wèn)設(shè)備配置空間、存儲(chǔ)空間
和I/O空間的交易,進(jìn)而實(shí)現(xiàn)將所述非PCI設(shè)備虛擬化為PCI設(shè)備。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,其特征在于,
所述PCI虛擬步驟進(jìn)一步包括 虛擬PCI配置空間分配步驟,用于分別為每個(gè)非PCI設(shè)備實(shí)現(xiàn)一個(gè)和物理
PCI配置空間功能相同的虛擬PCI配置空間;
虛擬配置端口寄存器配置步驟,用于配置虛擬配置地址寄存器和虛擬配置
數(shù)據(jù)寄存器,實(shí)現(xiàn)對(duì)所述虛擬PCI配置空間的訪問(wèn);
監(jiān)測(cè)邏輯步驟,用于監(jiān)測(cè)所述處理器發(fā)出的配置交易,根據(jù)配置交易的地
址階段的總線號(hào)和設(shè)備號(hào),控制所述虛擬PCI配置空間和物理PCI配置空間的訪問(wèn);
轉(zhuǎn)發(fā)邏輯步驟,用于轉(zhuǎn)發(fā)所述處理器對(duì)非PCI設(shè)備和物理PCI設(shè)備的存儲(chǔ)空間和I/O空間的訪問(wèn)交易。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,其特征在于,
所述監(jiān)測(cè)邏輯步驟進(jìn)一步包括步驟31,系統(tǒng)復(fù)位;
步驟32,等待并接收所述處理器發(fā)出的交易;
步驟33,判斷是否為配置交易,若是,開始配置交易處理,否則執(zhí)行轉(zhuǎn)發(fā)邏輯步驟;
步驟34,判斷配置交易為地址階段交易還是數(shù)據(jù)階段交易,若是地址階段交易,則根據(jù)地址階段的總線號(hào)和設(shè)備號(hào)判斷是否訪問(wèn)虛擬 設(shè)備執(zhí)行步驟35;若是數(shù)據(jù)階段交易,則進(jìn)一步判斷標(biāo)志寄存器是否為有效執(zhí)行步驟36;
步驟35,若是訪問(wèn)虛擬PCI設(shè)備,將地址階段的寫數(shù)據(jù)鎖存到虛擬配置地址寄存器中,并將所述標(biāo)志寄存器置為有效;否則,將該地址階段交易發(fā)給H0St/PCI橋接器,并將所述標(biāo)志寄存器置為無(wú)效;
步驟36,若標(biāo)志寄存器為有效,則訪問(wèn)相應(yīng)設(shè)備的虛擬PCI配置空間的相應(yīng)寄存器,將讀取的數(shù)據(jù)鎖存到所述虛擬配置數(shù)據(jù)寄存器中,并返回給所述
處理器;否則,將該數(shù)據(jù)階段交易發(fā)給Host/PCI橋接器。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,其特征在于, 所述轉(zhuǎn)發(fā)邏輯步驟進(jìn)一步包括.-
步驟141,判斷交易類型為I/0交易還是存儲(chǔ)交易;
步驟142,若為I/0交易,査找所述虛擬PCI配置空間的I/0基地址寄存 器;若為存儲(chǔ)交易,則發(fā)給高速系統(tǒng)總線;
步驟143,查找所述虛擬PCI配置空間的I/0基地址寄存器,如果不命中 任何一個(gè)系統(tǒng)分配的I/O空間,則將該I/O交易轉(zhuǎn)換成一種特殊的存儲(chǔ)交易發(fā) 給Host/PCI橋接器,如果命中系統(tǒng)為某個(gè)非PCI設(shè)備分配的I/0空間,則將該 I/O交易轉(zhuǎn)換成對(duì)命中設(shè)備的固定存儲(chǔ)空間訪問(wèn)的存儲(chǔ)交易發(fā)給高速系統(tǒng)總 線;
步驟144,判斷高速系統(tǒng)總線譯碼器能否對(duì)所述存儲(chǔ)交易進(jìn)行正常譯碼, 若能,則選擇相應(yīng)的非PCI設(shè)備接收并響應(yīng)該存儲(chǔ)交易;否則,將該存儲(chǔ)交易 發(fā)給Host/PCI橋接器,由物理PCI設(shè)備接收并響應(yīng)該存儲(chǔ)交易。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,其特征在于, 所述非PCI片上總線是指任何采用集中式的地址譯碼機(jī)制的總線,可以是 ARM公司的AMBA( Advanced Microcontroller Bus Architecture)總線或者IBM 公司的CoreConnect總線,也可以是AMD公司的GeodeLink總線或者Silicore 公司的Wishbone總線。
上述面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,其特征在于, 所述PCI設(shè)備是兼容PCI的一類設(shè)備的統(tǒng)稱,是位于PCI V2.2總線上的PCI 設(shè)備、或者是位于PCI-X總線上的PCI-X設(shè)備、或者是位于PCI Express總線 上的PCI Express設(shè)備。
與現(xiàn)有技術(shù)相比,本發(fā)明提供的面向集中地址譯碼的非PCI片上總線的 PCI虛擬化裝置及方法,通過(guò)一個(gè)單獨(dú)的硬件部件,提供了集中的PCI虛擬化 方法,不必修改被虛擬化的設(shè)備,這對(duì)基于IP復(fù)用的SoC設(shè)計(jì)是至關(guān)重要的, 而且還消除了信息冗余的問(wèn)題;因?yàn)榧械膶?shí)現(xiàn)方式,不需要為每個(gè)被虛擬化 的設(shè)備都實(shí)現(xiàn)一個(gè)單獨(dú)的PCI硬件模塊,降低了設(shè)計(jì)復(fù)雜性,效率更高,可擴(kuò) 展性更好;同時(shí)實(shí)現(xiàn)了PCI配置空間寄存器,提供完全的PnP功能。
li
圖1為本發(fā)明面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置的基 本結(jié)構(gòu)以及在系統(tǒng)中的位置示意圖2為該P(yáng)CI虛擬化裝置的內(nèi)部結(jié)構(gòu)示意圖3為處理器訪問(wèn)設(shè)備配置空間時(shí)的基本工作流程;
圖4為處理器訪問(wèn)設(shè)備存儲(chǔ)空間和I/O空間時(shí)的基本工作流程。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方法對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,以進(jìn)一步了 解本發(fā)明之目的、方案及功效,但并非作為對(duì)本發(fā)明保護(hù)范圍的限制。
圖1是該裝置的基本結(jié)構(gòu)以及在系統(tǒng)中的位置。VPCI部件IO位于處理器 11和高速系統(tǒng)總線12之間,負(fù)責(zé)監(jiān)測(cè)和轉(zhuǎn)發(fā)處理器11發(fā)出的所有訪問(wèn)設(shè)備 的配置交易、存儲(chǔ)交易和I/O交易,VPCI部件10與高速系統(tǒng)總線12的譯碼 器121和低速外圍總線13的譯碼器131協(xié)同工作,對(duì)非PCI總線上的交易進(jìn) 行譯碼。系統(tǒng)中的處理器11可以是x86兼容處理器,也可以是任何其他嵌入 式處理器;可以是一個(gè)處理器,也可以是兩個(gè)或者多個(gè)處理器。位于高速系統(tǒng) 總線12上的設(shè)備具有較高性能和較高時(shí)鐘頻率,可以是網(wǎng)絡(luò)控制器、硬盤控 制器和DMA控制器等,CPU、片上存儲(chǔ)器和協(xié)處理器也位于高速系統(tǒng)總線12 上;位于低速外圍總線13上具有較低性能和較低時(shí)鐘頻率,可以是串行接口、 并行接口和音頻控制器等。高速系統(tǒng)總線12和低速外圍總線13之間通過(guò)高速 /低速總線橋接器123進(jìn)行連接和通信。Host/PCI橋接器124位于高速系統(tǒng)總 線和物理PCI總線之間,橋接高速系統(tǒng)總線和物理PCI總線O。 Host/PCI橋接 器124本身也是一個(gè)PCI設(shè)備,具有PCI配置空間,內(nèi)部實(shí)現(xiàn)了配置地址寄存 器CONFIG_ADDR和配置數(shù)據(jù)寄存器CONFIG—DATA,支持計(jì)算機(jī)程序?qū)ξ?于物理PCI總線上設(shè)備的配置空間訪問(wèn),負(fù)責(zé)處理器對(duì)物理PCI總線0上設(shè)備 的識(shí)別、初始化和訪問(wèn)。如果處理器ll發(fā)出的配置交易訪問(wèn)虛擬PCI配置空 間101,則由VPCI部件10內(nèi)部的虛擬PCI配置空間101進(jìn)行響應(yīng),否則發(fā)給 Host/PCI橋接器124,由物理PCI設(shè)備的配置空間進(jìn)行響應(yīng)。VPCI部件10將 處理器11發(fā)出的訪問(wèn)設(shè)備存儲(chǔ)空間的交易直接發(fā)向高速系統(tǒng)總線12,或者選擇相應(yīng)的高速非PCI設(shè)備,或者通過(guò)高速/低速總線橋接器123發(fā)向低速^^卜圍 總線13,由低速外圍總線譯碼器131選擇相應(yīng)的低速非PCI設(shè)備,或者通過(guò) Host/PCI橋接器124發(fā)向物理PCI總線,由PCI設(shè)備接收并響應(yīng)。
圖2詳細(xì)描述了 VPCI部件10的內(nèi)部結(jié)構(gòu)和功能。VPCI部件10由四部 分組成虛擬PCI配置空間101、虛擬配置端口相關(guān)寄存器102、監(jiān)測(cè)邏輯模 塊103和轉(zhuǎn)發(fā)邏輯模塊104。在VPCI部件10內(nèi)部,虛擬PCI配置空間101 劃分為1、 2……n各獨(dú)立的虛擬PCI配置空間,為每個(gè)非PCI設(shè)備都實(shí)5見(jiàn)了一 個(gè)虛擬的PCI配置空間,并為它們各自分配一個(gè)虛擬PCI總線號(hào)和虛擬PCI 設(shè)備號(hào),它們和物理PCI設(shè)備是統(tǒng)一編號(hào)且不沖突的,在計(jì)算機(jī)程序看來(lái),系 統(tǒng)中的設(shè)備所對(duì)應(yīng)的總線號(hào)和設(shè)備號(hào)都是獨(dú)一無(wú)二的。非PCI設(shè)備或者是位于 物理PCI總線上的虛擬PCI設(shè)備,或者是位于虛擬PCI總線上的虛擬PCI設(shè) 備,其中該虛擬PCI總線通過(guò)虛擬的PCI/PCI橋與物理PCI總線0違接,在本 發(fā)明的實(shí)例中,為描述簡(jiǎn)便起見(jiàn),非PCI設(shè)備在計(jì)算機(jī)程序看來(lái)是位于物理 PCI總線0上的虛擬PCI設(shè)備,沒(méi)有虛擬PCI總線。虛擬編號(hào)信息只存在于 VPCI部件中,或者通過(guò)硬連線實(shí)現(xiàn),或者在系統(tǒng)復(fù)位后由BIOS初始化代碼 寫入,這些信息對(duì)Host/PCI橋接器來(lái)說(shuō)是不可見(jiàn)的。虛擬PCI配置空間和物 理PCI配置空間相同,配置寄存器記錄了設(shè)備ID、制造商ID、版本號(hào)、頭部 類型、類別代碼、命令寄存器和狀態(tài)寄存器等設(shè)備基本信息,以及存儲(chǔ)空間、 1/0空間、中斷等資源需求情況,為上層應(yīng)用軟件識(shí)別和初始化非PCI設(shè)備提 供了可能。
配置端口是上層應(yīng)用軟件訪問(wèn)配置空間的唯一途徑,虛擬配置端口由虛擬 配置地址寄存器VIR_CONFIG_ADDR和虛擬配置數(shù)據(jù)寄存器 VIR一CONFIG一DATA實(shí)現(xiàn),在功能上,它們分別和Host/PCI橋接器124中的 物理配置地址寄存器CONFIG_ADDR和物理配置數(shù)據(jù)寄存器CONFIG—DATA
完全相同,但VPCI部件實(shí)現(xiàn)了相關(guān)的控制邏輯,負(fù)責(zé)虛擬PCI配置空間101 的訪問(wèn)。為正確地路由和轉(zhuǎn)發(fā)處理器ll發(fā)出的配置交易,VPCI部件10還實(shí) 現(xiàn)標(biāo)志寄存器CFG—INT—PCI,當(dāng)標(biāo)志寄存器有效時(shí)表明當(dāng)前的配置交易是訪問(wèn) 虛擬PCI配置空間101,由VPCI部件10處理該配置交易,當(dāng)標(biāo)志寄存器無(wú)效 時(shí)表明當(dāng)前的配置交易是訪問(wèn)物理PCI配置空間,由Host/PCI橋接器124處 理該配置交易。監(jiān)測(cè)邏輯模塊103負(fù)責(zé)監(jiān)測(cè)處理器11發(fā)出的對(duì)配置空間訪問(wèn)的配置交易。 配置交易通過(guò)對(duì)配置端口的訪問(wèn)來(lái)完成,包括地址階段交易和數(shù)據(jù)階段交易。 地址階段交易通過(guò)寫配置地址寄存器,指明要訪問(wèn)設(shè)備配置空間的總線號(hào)、設(shè) 備號(hào)和配置寄存器偏移等地址信息,數(shù)據(jù)階段交易通過(guò)讀或者寫配置數(shù)據(jù)寄存 器,由相關(guān)控制邏輯讀或者寫地址階段所指明的配置寄存器,對(duì)物理PCI配置 空間訪問(wèn)的控制邏輯由Host/PCI橋接器124提供,讀取數(shù)據(jù)被鎖存入配置數(shù) 據(jù)寄存器并返回給處理器11,寫數(shù)據(jù)被鎖存入配置地址寄存器并寫入相應(yīng)設(shè) 備的配置空間的相應(yīng)配置寄存器中。
如果地址階段交易的總線號(hào)和設(shè)備號(hào)是分配給非PCI設(shè)備,則VPCI部件 10捕獲該配置交易的地址階段交易以及后續(xù)的數(shù)據(jù)階段交易,VPCI部件10 將地址階段的寫數(shù)據(jù)寫入內(nèi)部的VIR—CONFIG—ADDR寄存器中,并將標(biāo)志寄 存器CFG—INT_PCI設(shè)置為有效,用于指明后續(xù)的數(shù)據(jù)階段均為訪問(wèn)虛擬PCI 配置空間,數(shù)據(jù)階段的讀交易被VPCI部件截獲并響應(yīng),通過(guò)訪問(wèn)內(nèi)部的相應(yīng) 設(shè)備的虛擬PCI配置空間101完成,讀取的數(shù)據(jù)被放入VIR_CONFIG_DATA 寄存器,并返回給處理器ll;數(shù)據(jù)階段交易的寫交易被VPCI部件截獲并響應(yīng), 寫數(shù)據(jù)被放入VIR_CONFIG_DATA寄存器,并寫入內(nèi)部的相應(yīng)設(shè)備的虛擬 PCI配置空間,在這一過(guò)程中,配置交易直接由VPCI部件11處理,不會(huì)發(fā)到 高速系統(tǒng)總線12上,Host/PCI橋接器124也不會(huì)接收到配置交易的任何請(qǐng)求。 如果地址階段交易的總線號(hào)和設(shè)備號(hào)是分配給物理PCI設(shè)備,則VPCI部件將 該配置交易的地址階段交易發(fā)給Host/PCI橋接器124,并將標(biāo)志寄存器 CFG—INT—PCI設(shè)置為無(wú)效,以便將后續(xù)的數(shù)據(jù)階段交易也發(fā)給Host/PCI橋接 器124。 Host/PCI橋接器124在接收到配置交易后,更新CONFIG_ADDR和 CONFIG—DATA寄存器,并在PCI總線上產(chǎn)生相應(yīng)的配置交易,由相應(yīng)的物 理PCI設(shè)備的配置空間接收并響應(yīng)該配置交易。
轉(zhuǎn)發(fā)邏輯模塊104負(fù)責(zé)轉(zhuǎn)發(fā)處理器11發(fā)出的對(duì)設(shè)備存儲(chǔ)空間和I/O空間 的訪問(wèn)交易。對(duì)于存儲(chǔ)交易,VPCI部件11直接發(fā)向高速系統(tǒng)總線12,高速 系統(tǒng)總線的譯碼器121根據(jù)VPCI部件的虛擬PCI配置空間的基地址寄存器信 息,了解系統(tǒng)為各非PCI設(shè)備分配的存儲(chǔ)空間的起始地址和空間大小,判斷存 儲(chǔ)交易是訪問(wèn)哪個(gè)非PCI設(shè)備的,如果訪問(wèn)位于高速系統(tǒng)總線12上的設(shè)備, 則選擇相應(yīng)的設(shè)備接收并響應(yīng)該存儲(chǔ)交易;如果訪問(wèn)位于低速外圍總線13上
14的設(shè)備,則通過(guò)高速/低速總線橋接器發(fā)給低速外圍總線13,低速外圍總線的 譯碼器131根據(jù)VPCI部件10的虛擬PCI配置空間的基地址寄存器信息,選 擇相應(yīng)的設(shè)備接收并響應(yīng)該存儲(chǔ)交易;如果高速系統(tǒng)總線的譯碼器121不能對(duì) 存儲(chǔ)交易進(jìn)行正常譯碼,則將該存儲(chǔ)交易通過(guò)Host/PCI橋接器124發(fā)給PCI 總線,物理PCI總線上的相應(yīng)設(shè)備接收并響應(yīng)該存儲(chǔ)交易。
對(duì)于I/O交易,系統(tǒng)為所有非PCI設(shè)備都各自預(yù)留了一段固定的存儲(chǔ)空間 用于I/O交易轉(zhuǎn)換,這段存儲(chǔ)空間是不能作為系統(tǒng)資源,被計(jì)算機(jī)程序分配的, 高速系統(tǒng)總線的譯碼器121和低速外圍總線的譯碼器131除了根據(jù)VPCI部件 10中的虛擬PCI配置空間的基地址寄存器進(jìn)行譯碼外,還使用這些固定的信 息進(jìn)行譯碼。VPCI部件10通過(guò)査找內(nèi)部的各個(gè)虛擬PCI配置空間的基地址寄 存器,判斷是訪問(wèn)哪個(gè)非PCI設(shè)備的I/0空間,如果命中,則將i/o交易轉(zhuǎn)換 成對(duì)該設(shè)備對(duì)應(yīng)的固定存儲(chǔ)空間的存儲(chǔ)交易,發(fā)向高速系統(tǒng)總線12,高速系 統(tǒng)總線的譯碼器121根據(jù)轉(zhuǎn)換后的存儲(chǔ)交易的地址和譯碼器內(nèi)部的設(shè)備特定 存儲(chǔ)空間信息,選擇相應(yīng)的設(shè)備接收并響應(yīng)該交易;如果沒(méi)有命中,該I/0交 易訪問(wèn)的I/O空間沒(méi)有被分配給非PCI設(shè)備,而是被分配給物理PCI設(shè)備,I/O 交易被轉(zhuǎn)換成一種特殊的存儲(chǔ)交易,通過(guò)高速系統(tǒng)總線12發(fā)給Host/PCI橋124 接器,Host/PCI橋接器124負(fù)責(zé)將該特殊的存儲(chǔ)交易重新轉(zhuǎn)換為I/0交易,發(fā) 向PCI總線,實(shí)現(xiàn)相應(yīng)I/0空間的物理PCI設(shè)備將接收并響應(yīng)該I/0交易。非 PCI設(shè)備的存儲(chǔ)空間和I/O空間分配信息被保存在VPCI部件10內(nèi)部的虛擬 PCI配置空間的基地址寄存器中,物理PCI設(shè)備的存儲(chǔ)空間和I/O空間分配信 息被保存在各物理PCI設(shè)備內(nèi)部的物理PCI配置空間的基地址寄存器中,它們 共同構(gòu)成系統(tǒng)的地址空間分配和映射。VPCI部件實(shí)現(xiàn)的虛擬配置端口寄存器 VIR_CONFIG_ADDR和VIR_CONFIG_DATA只負(fù)責(zé)虛擬PCI配置空間的訪 問(wèn),Host/PCI橋接器124實(shí)現(xiàn)的物理配置端口寄存器CONFIG_ADDR和 CONFIG_DATA只負(fù)責(zé)物理PCI配置空間的訪問(wèn)。不管是配置空間中的配置 寄存器,還是控制配置寄存器訪問(wèn)的配置端口寄存器等信息,均不存在信息的 冗余, 一方面減少了信息不一致的危險(xiǎn),另一方面不需對(duì)原有設(shè)備IP做任何 修改,只需在處理器和高速系統(tǒng)總線之間添加一個(gè)集中控制部件,就可支持非 PCI設(shè)備的識(shí)別和初始化。高速系統(tǒng)總線譯碼器在路由和轉(zhuǎn)發(fā)處理器交易的過(guò) 程中扮演重要角色,Host/PCI橋接器124是高速系統(tǒng)總線譯碼的默認(rèn)路徑,不能被正常譯碼的處理器交易均發(fā)向Host/PCI橋接器。
本發(fā)明還提供了一種應(yīng)用上述實(shí)現(xiàn)的面向集中地址譯碼的非PCI片上總
線的PCI虛擬化方法,包括一PCI虛擬步驟,通過(guò)配置位于處理器和非PCI
總線之間的VPCI部件,接收、處理和轉(zhuǎn)發(fā)處理器發(fā)出的所有訪問(wèn)設(shè)備配置空 間、存儲(chǔ)空間和I/0空間的交易,進(jìn)而實(shí)現(xiàn)將非PCI設(shè)備虛擬化為PCI設(shè)備。
該P(yáng)CI虛擬步驟進(jìn)一步包括虛擬PCI配置空間分配步驟,用于分別為每 個(gè)非PCI設(shè)備實(shí)現(xiàn)一個(gè)和物理PCI配置空間功能相同虛擬PCI配置空間;虛
擬配置端口寄存器配置步驟,用于配置虛擬配置地址寄存器和虛擬配置數(shù)據(jù)寄
存器實(shí)現(xiàn)對(duì)所述虛擬PCI配置空間的訪問(wèn);監(jiān)測(cè)邏輯步驟,用于監(jiān)測(cè)所述處理 器發(fā)出的配置交易,根據(jù)配置交易的地址階段的總線號(hào)和設(shè)備號(hào),控制所述虛 擬PCI配置空間和物理PCI配置空間的訪問(wèn);轉(zhuǎn)發(fā)邏輯步驟,用于轉(zhuǎn)發(fā)所述處
理器對(duì)非PCI設(shè)備和物理PCI設(shè)備的存儲(chǔ)空間和I/O空間的訪問(wèn)交易。
圖3是處理器訪問(wèn)設(shè)備的配置空間時(shí)的基本工作流程。該流程被VPCI部 件10的監(jiān)測(cè)邏輯模塊103執(zhí)行。包括以下步驟
步驟S301,開始,系統(tǒng)復(fù)位,其將導(dǎo)致處理器、系統(tǒng)中的所有設(shè)備和VPCI 部件內(nèi)部的寄存器被設(shè)置為缺省值,VPCI部件的各虛擬PCI配置空間寄存器 的缺省值由相應(yīng)設(shè)備來(lái)決定,虛擬配置地址寄存器VIR—CONFIG_ADDR和虛 擬配置數(shù)據(jù)寄存器VIR—CONFIG—DATA的缺省值為全零,標(biāo)志寄存器 CFGJNT—PCI的缺省值為無(wú)效,表明默認(rèn)的配置交易均訪問(wèn)物理PCI總線上 設(shè)備的配置空間;
步驟S302,獲取處理器交易,即等待并接收處理器發(fā)出的交易;
步驟S303,判斷是否為配置交易,若結(jié)果是肯定的,則進(jìn)入步驟S304, 開始配置交易的處理,否則進(jìn)行存儲(chǔ)交易或I/0交易的處理(圖4);
步驟S304,判斷配置交易,若配置交易是地址階段交易,則執(zhí)行步驟S305, 若是數(shù)據(jù)階段交易,則執(zhí)行步驟S307;
步驟S305,根據(jù)地址階段的總線號(hào)和設(shè)備號(hào)判斷是否訪問(wèn)虛擬PCI設(shè)備, 若結(jié)果是肯定的,執(zhí)行步驟S306,否則執(zhí)行步驟S308;
步驟S306,將地址階段的寫數(shù)據(jù)鎖存到VPCI內(nèi)部的虛擬配置地址寄存器 VIR—CONFIG_ADDR寄存器中,并將標(biāo)志寄存器CFGJNT—PCI置為有效;
步驟S307,進(jìn)一步判斷標(biāo)志寄存器CFG一INT一PCI是否有效,若有效執(zhí)行步驟S309,否則,執(zhí)行步驟S308;
步驟S308,將該地址階段交易發(fā)給Host/PCI橋接器,并將標(biāo)志寄存器 CFGJNT—PCI置為無(wú)效;
步驟S309,訪問(wèn)VPCI內(nèi)部的相應(yīng)設(shè)備的虛擬PCI配置空間的相應(yīng)寄存 器,將讀取的數(shù)據(jù)鎖存到虛擬配置數(shù)據(jù)寄存器VIR—CONFIG—DATA中,并返 回給處理器。
圖4是處理器訪問(wèn)設(shè)備的存儲(chǔ)空間和I/O空間的基本工作流程。該方、法被 VPCI部件ll的轉(zhuǎn)發(fā)邏輯模塊104執(zhí)行。圖4由圖3的步驟S303轉(zhuǎn)入。系統(tǒng) 為非PCI設(shè)備分配的存儲(chǔ)空間和I/O空間的起始地址被寫入VPCI部件中該設(shè) 備所對(duì)應(yīng)的虛擬PCI配置空間的基地址寄存器中,除此之外,每個(gè)非PCI設(shè)備 都有一段固定的存儲(chǔ)空間,用于i/o交易的轉(zhuǎn)換。處理器對(duì)設(shè)備存儲(chǔ)空間i^問(wèn) 的交易,VPCI部件直接發(fā)給高速系統(tǒng)總線,高速系統(tǒng)總線的譯碼器采用集中 式的地址譯碼機(jī)制,根據(jù)存儲(chǔ)交易的地址和VPCI部件中基地址存儲(chǔ)器等信息, 產(chǎn)生片選信號(hào),選擇相應(yīng)設(shè)備接收并響應(yīng)該交易。處理器對(duì)設(shè)備i/o空間訪問(wèn) 的交易被VPCI部件先轉(zhuǎn)換成訪問(wèn)該設(shè)備的特定存儲(chǔ)空間的存儲(chǔ)交易,然后再 發(fā)給高速系統(tǒng)總線,高速系統(tǒng)總線的譯碼器根據(jù)轉(zhuǎn)換后的存儲(chǔ)交易的地址和譯 碼器內(nèi)部的設(shè)備特定存儲(chǔ)空間信息,產(chǎn)生片選信號(hào),選擇相應(yīng)的設(shè)備接收并響 應(yīng)該交易。經(jīng)過(guò)高速系統(tǒng)總線譯碼后,如果存儲(chǔ)交易是訪問(wèn)低速外圍設(shè)備的, 則通過(guò)高速/低速總線橋接器發(fā)給低速外圍總線,其低速外圍總線的譯碼過(guò)程 類ti。具體包括如下步驟-
步驟S401,判斷該交易的類型,若為I/O交易則進(jìn)入步驟S402;如果步 判斷為存儲(chǔ)交易,則直接進(jìn)入步驟S405。
步驟S402,査找VPCI部件內(nèi)部的虛擬PCI配置空間的I/O基地址寄存器; 如果不命中任何一個(gè)系統(tǒng)分配的I/0空間,則執(zhí)行步驟S403;如果命中系統(tǒng)為 某個(gè)非PCI設(shè)備分配的I/0空間,則進(jìn)入步驟S404;
步驟S403,將該I/O交易轉(zhuǎn)換成一種特殊的存儲(chǔ)交易發(fā)向Host/PCI橋接
器;
步驟S404,將該I/O交易轉(zhuǎn)換成對(duì)命中設(shè)備的固定存儲(chǔ)空間訪問(wèn)的存儲(chǔ) 交易,并進(jìn)入步驟S405。
步驟S405,發(fā)給高速系統(tǒng)總線;步驟S406,判斷高速系統(tǒng)總線譯碼器能否對(duì)存儲(chǔ)交易進(jìn)行正常譯碼,若 是,進(jìn)入步驟S407;否則進(jìn)入步驟S408;
步驟S407:選擇相應(yīng)的非PCI設(shè)備接收并響應(yīng)該存儲(chǔ)交易;
步驟S408:將該存儲(chǔ)交易發(fā)給Host/PCI橋接器,對(duì)于存儲(chǔ)交易,物理PCI 總線上的設(shè)備接收并響應(yīng),對(duì)于特殊存儲(chǔ)交易,Host/PCI橋接器將之重新轉(zhuǎn)換
成I/0交易,和處理器發(fā)出的i/o交易完全相同,由實(shí)現(xiàn)相應(yīng)i/o空間的物理
PCI總線上的設(shè)備接收并響應(yīng)。
本發(fā)明適用于所有集中式地址譯碼的非PCI總線的嵌入式SoC,盡管本發(fā) 明描述的系統(tǒng)只是將非PCI設(shè)備虛擬化為物理PCI總線0上的虛擬PCI設(shè)備, 但是本領(lǐng)域技術(shù)人員可以理解,在此所描述的方法可以被應(yīng)用于具有更多設(shè)備 的復(fù)雜系統(tǒng)中,例如將非PCI設(shè)備虛擬化位于虛擬PCI總線1上的虛擬PCI 設(shè)備,而虛擬PCI/PCI橋作為物理PCI總線0上的一個(gè)虛擬PCI設(shè)各,負(fù)責(zé)虛 擬PCI總線1和物理PCI總線0的連接和通訊。
雖然本發(fā)明已以一較佳實(shí)施例揭露如上,然其并非用以限定本發(fā)明,在 不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明 作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明^f附的 權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,包括至少一個(gè)處理器及非PCI總線,其特征在于,還包括一虛擬PCI部件,位于所述處理器和所述非PCI總線之間,用于接收、處理和轉(zhuǎn)發(fā)所述處理器發(fā)出的所有訪問(wèn)設(shè)備配置空間、存儲(chǔ)空間和I/O空間的交易,進(jìn)而實(shí)現(xiàn)將所述非PCI設(shè)備虛擬化為PCI設(shè)備。
2、 根據(jù)權(quán)利要求1所述的面向集中地址譯碼的非PCI片上總線的PCI虛擬化裝置,其特征在于,所述虛擬PCI部件進(jìn)一步包括虛擬PCI配置空間,用于分別為每個(gè)非PCI設(shè)備實(shí)現(xiàn)一個(gè)虛擬PCI配置 空間;虛擬配置端口寄存器,用于負(fù)責(zé)所述虛擬PCI配置空間的訪問(wèn); 監(jiān)測(cè)邏輯模塊,用于監(jiān)測(cè)所述處理器發(fā)出的配置交易,根據(jù)配置交易的地址階段的總線號(hào)和設(shè)備號(hào),控制所述虛擬PCI配置空間和物理PCI配置空間的訪問(wèn);轉(zhuǎn)發(fā)邏輯模塊,用于轉(zhuǎn)發(fā)所述處理器對(duì)非PCI設(shè)備和物理PCI設(shè)備的存儲(chǔ) 空間和I/O空間的訪問(wèn)交易。
3、 根據(jù)權(quán)利要求2所述的面向集中地址譯碼的非PCI片上總線的PCI虛 擬化裝置,其特征在于,所述虛擬PCI配置空間和物理PCI配置空間相同,所 述虛擬PCI配置空間的配置寄存器記錄了設(shè)備的基本信息及資源需求信息,以 實(shí)現(xiàn)上層應(yīng)用軟件識(shí)別和初始化所述非PCI設(shè)備。
4、 根據(jù)權(quán)利要求2所述的面向集中地址譯碼的非PCI片上總線的PCI虛 擬化裝置,其特征在于,所述虛擬配置端口寄存器包括虛擬配置地址寄存器 VIR—CONFIG一ADDR和虛擬配置數(shù)據(jù)寄存器VIR一CONFIG—DATA,所述虛擬 配置地址寄存器VIR_CONFIG—ADDR和虛擬配置數(shù)據(jù)寄存器 VIR—CONFIG—DATA在功能上和Host/PCI橋接器中的物理配置地址寄存器 CONFIG—ADDR和物理配置數(shù)據(jù)寄存器CONFIG_DATA相同。
5、 根據(jù)權(quán)利要求4所述的面向集中地址譯碼的非PCI片上總線的PCI虛 擬化裝置,其特征在于,所述虛擬配置端口寄存器還包括一標(biāo)志寄存器,當(dāng)所 述標(biāo)志寄存器設(shè)置為有效時(shí),表示當(dāng)前的配置交易是訪問(wèn)所述虛擬PCI配置空間,由所述虛擬PCI部件處理該配置交易;當(dāng)所述標(biāo)志寄存器設(shè)置為無(wú)效時(shí),表示當(dāng)前的配置交易是訪問(wèn)所述物理PCI配置空間,由Host/PCI橋接器處理該配置交易。
6、 根據(jù)權(quán)利要求5所述的面向集中地址譯碼的非PCI片上總線的PCI虛 擬化裝置,其特征在于,所述配置交易包括地址階段和數(shù)據(jù)階段,其中,地址 階段交易通過(guò)寫配置地址寄存器,指明要訪問(wèn)的設(shè)備配置空間的地址信息;數(shù) 據(jù)階段交易通過(guò)讀/寫配置數(shù)據(jù)寄存器,由相關(guān)控制邏輯讀/寫地址階段所指明 的配置寄存器,對(duì)物理PCI配置空間訪問(wèn)的控制邏輯由Host/PCI橋接器提供,讀取數(shù)據(jù)被鎖存入配置數(shù)據(jù)寄存器并返回給處理器,寫數(shù)據(jù)被鎖存入配置地址 寄存器并寫入相應(yīng)配置空間的相應(yīng)配置寄存器中。
7、 一種面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,用于包 括至少一個(gè)處理器及非PCI總線的面向集中地址譯碼的非PCI片上總線的PCI 虛擬化裝置,其特征在于,包括一 PCI虛擬步驟,通過(guò)位于所述處理器和所述非PCI總線之間的虛擬PCI 部件,接收、處理和轉(zhuǎn)發(fā)所述處理器發(fā)出的所有訪問(wèn)設(shè)備配置空間、存儲(chǔ)空間 和I/O空間的交易,進(jìn)而實(shí)現(xiàn)將所述非PCI設(shè)備虛擬化為PCI設(shè)備。
8、 根據(jù)權(quán)利要求7所述的面向集中地址譯碼的非PCI片上總線的PCI虛 擬化方法,其特征在于,所述PCI虛擬步驟進(jìn)一步包括虛擬PCI配置空間分配步驟,用于分別為每個(gè)非PCI設(shè)備實(shí)現(xiàn)一個(gè)和物理 PCI配置空間功能相同的虛擬PCI配置空間;虛擬配置端口寄存器配置步驟,用于配置虛擬配置地址寄存器和虛擬配置 數(shù)據(jù)寄存器,實(shí)現(xiàn)對(duì)所述虛擬PCI配置空間的訪問(wèn);監(jiān)測(cè)邏輯步驟,用于監(jiān)測(cè)所述處理器發(fā)出的配置交易,根據(jù)配置交易的地址階段的總線號(hào)和設(shè)備號(hào),控制所述虛擬PCI配置空間和物理PCI配置空間的 訪問(wèn);轉(zhuǎn)發(fā)邏輯步驟,用于轉(zhuǎn)發(fā)所述處理器對(duì)非PCI設(shè)備和物理PCI設(shè)備的存儲(chǔ) 空間和I/O空間的訪問(wèn)交易。
9、 根據(jù)權(quán)利要求8所述的面向集中地址譯碼的非PCI片上總線的PCI虛 擬化方法,其特征在于,所述監(jiān)測(cè)邏輯步驟進(jìn)一步包括步驟31,系統(tǒng)復(fù)位;步驟32,等待并接收所述處理器發(fā)出的交易;步驟33,判斷是否為配置交易,若是,開始配置交易的處理,否則執(zhí)行 轉(zhuǎn)發(fā)邏輯步驟;步驟34,判斷配置交易為地址階段交易還是數(shù)據(jù)階段交易,若是地址階 段交易,則根據(jù)地址階段的總線號(hào)和設(shè)備號(hào)判斷是否訪問(wèn)虛擬PCI設(shè)備執(zhí)行步驟35;若是數(shù)據(jù)階段交易,則進(jìn)一步判斷標(biāo)志寄存器是否為有效執(zhí)行步驟36;步驟35,若是訪問(wèn)虛擬PCI設(shè)備,將地址階段的寫數(shù)據(jù)鎖存到虛擬配置 地址寄存器中,并將所述標(biāo)志寄存器置為有效;否則,將該地址階段交易發(fā)給 Host/PCI橋接器,并將所述標(biāo)志寄存器置為無(wú)效;步驟36,若標(biāo)志寄存器為有效,則訪問(wèn)相應(yīng)設(shè)備的虛擬PCI配置空間的相應(yīng)寄存器,將讀取的數(shù)據(jù)鎖存到所述虛擬配置數(shù)據(jù)寄存器中,并返回給所述處理器;否則,將該數(shù)據(jù)階段交易發(fā)給Host/PCI橋接器。
10、根據(jù)權(quán)利要求8所述的面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法,其特征在于,所述轉(zhuǎn)發(fā)邏輯步驟進(jìn)一步包括 步驟141,判斷交易類型為I/0交易還是存儲(chǔ)交易;步驟142,若為I/0交易,査找所述虛擬PCI配置空間的I/0基地址寄存 器;若為存儲(chǔ)交易,則發(fā)給高速系統(tǒng)總線;步驟143,査找所述虛擬PCI配置空間的I/0基地址寄存器,如果不命中 任何一個(gè)系統(tǒng)分配的I/O空間,則將該I/O交易轉(zhuǎn)換成一種特殊的存儲(chǔ)交易發(fā) 給Host/PCI橋接器,如果命中系統(tǒng)為某個(gè)非PCI設(shè)備分配的I/O空間,則將該 I/O交易轉(zhuǎn)換成對(duì)命中設(shè)備的固定存儲(chǔ)空間訪問(wèn)的存儲(chǔ)交易發(fā)給高速系統(tǒng)總 線;步驟144,判斷高速系統(tǒng)總線譯碼器能否對(duì)所述存儲(chǔ)交易進(jìn)行正常譯碼, 若能,則選擇相應(yīng)的非PCI設(shè)備接收并響應(yīng)該存儲(chǔ)交易;否則,將該存儲(chǔ)交易 發(fā)給Host/PCI橋接器,由物理PCI設(shè)備接收并響應(yīng)該存儲(chǔ)交易。
全文摘要
本發(fā)明公開了一種面向集中地址譯碼的非PCI片上總線的PCI虛擬化方法及裝置,該裝置包括至少一個(gè)處理器及非PCI總線,還包括一虛擬PCI部件,配置于所述處理器和所述非PCI總線之間,用于接收、處理和轉(zhuǎn)發(fā)所述處理器發(fā)出的所有訪問(wèn)設(shè)備配置空間、存儲(chǔ)空間和I/O空間的交易,進(jìn)而實(shí)現(xiàn)將所述非PCI設(shè)備虛擬化為PCI設(shè)備。通過(guò)本裝置,物理上位于非PCI總線上的設(shè)備可以被計(jì)算機(jī)程序識(shí)別為邏輯上位于PCI總線上的設(shè)備,和物理上位于PCI總線的設(shè)備一起,參與系統(tǒng)資源的分配,從而將非PCI設(shè)備虛擬化為PCI設(shè)備。
文檔編號(hào)G06F13/42GK101676894SQ200910163709
公開日2010年3月24日 申請(qǐng)日期2009年8月14日 優(yōu)先權(quán)日2008年8月15日
發(fā)明者冬 佟, 龐九鳳, 皓 李, 旭 程, 濤 羅, 鄭衍松, 龔子明 申請(qǐng)人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司