專利名稱:枚舉輸入輸出設(shè)備的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及硬件系統(tǒng)架構(gòu),更具體地說,涉及硬件系統(tǒng)中枚舉輸入輸出設(shè)備的方法和設(shè)備。
背景技術(shù):
一般在硬件系統(tǒng)架構(gòu),例如x86、Itanium系統(tǒng)硬件架構(gòu)中,處理器例如中央處理單兀(Central Processing Unit,簡稱CPU)和輸入輸出集中控制器(Input/Output Hub或Input/Output Controller Hub,簡稱IOH或ICH)通過總線相互連接,用于數(shù)據(jù)傳輸。硬件系統(tǒng)架構(gòu)中可以同時(shí)存在多個(gè)處理器和多個(gè)Ι0Η,每個(gè)IOH可以連接多個(gè)輸入輸出(Input/Output,簡稱10)設(shè)備。IOH內(nèi)部可以集成多個(gè)橋設(shè)備,從橋設(shè)備引出的總線通過系統(tǒng)中的第一條總線(BusO)與處理器相連。以x86、Itanium系統(tǒng)硬件架構(gòu)為例,一般運(yùn)行在硬件系統(tǒng)架構(gòu)上的系統(tǒng)開機(jī)后的流程是,首先運(yùn)行固化在閃存只讀存儲器(Flash ROM)里的系統(tǒng)固件(System Firmware)程序,System Firmware負(fù)責(zé)配置、檢測服務(wù)器的所有硬件設(shè)備如處理器、內(nèi)存、10總線等,保證硬件系統(tǒng)可以正常工作后,由System Firmware負(fù)責(zé)在系統(tǒng)里的存儲設(shè)備里查找操作系統(tǒng)加載器(Operating System Loader,簡稱OS Loader)、調(diào)用OS Loader加載操作系統(tǒng)內(nèi)核程序。雖然可能硬件系統(tǒng)中可能有多個(gè)處理器(大型服務(wù)器可能有數(shù)百個(gè)),但是目前的System Firmware初始化系統(tǒng)10總線,例如枚舉系統(tǒng)中的10設(shè)備時(shí)還是只由其中的一個(gè)處理器來完成這項(xiàng)工作,這個(gè)處理器在系統(tǒng)里有特殊的地位一它是Firmware階段的系統(tǒng)主處理器。這樣做的主要原因是為了使系統(tǒng)資源的分配保持一致性。但是這一過程會花去很多時(shí)間,延長了系統(tǒng)啟動的時(shí)間,在系統(tǒng)開始啟動很長時(shí)間后用戶才能正常使用系統(tǒng),這會降低用戶對系統(tǒng)的滿意度和產(chǎn)品認(rèn)同感。另外,在產(chǎn)品設(shè)計(jì)開發(fā)階段,也會對系統(tǒng)進(jìn)行反復(fù)重啟以驗(yàn)證某種修改是否生效、檢驗(yàn)系統(tǒng)功能和性能,如果系統(tǒng)啟動一次的時(shí)間很長,會降低產(chǎn)品設(shè)計(jì)開發(fā)的效率,從而增加產(chǎn)品成本,降低產(chǎn)品競爭力。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例所要解決的一個(gè)技術(shù)問題是提高系統(tǒng)初始化系統(tǒng)10總線的效率,加快枚舉系統(tǒng)中的10設(shè)備的過程。本發(fā)明實(shí)施例提出了一種枚舉輸入輸出設(shè)備的方法,所述方法包括獲取系統(tǒng)中的各處理器的標(biāo)識和各輸入輸出10集中控制器的標(biāo)識;根據(jù)所述各處理器的標(biāo)識以及所述各10集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的10集中控制器及與之相連的輸入輸出10設(shè)備;獲取被指令的處理器枚舉的10設(shè)備的相關(guān)信息。本發(fā)明實(shí)施例提出了一種枚舉輸入輸出設(shè)備的設(shè)備,所述設(shè)備包括信息收集模塊,用于獲取系統(tǒng)中的各處理器的標(biāo)識和各輸入輸出10集中控制器 的標(biāo)識;
調(diào)度模塊,用于根據(jù)所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的IO集中控制器及與之相連的輸入輸出IO設(shè)備;結(jié)果收集模塊,用于獲取被指令的處理器枚舉的IO設(shè)備的相關(guān)信息。根據(jù)本發(fā)明實(shí)施例,可以將枚舉系統(tǒng)IO設(shè)備的工作分配給多個(gè)處理器同時(shí)進(jìn)行,由此大大減少了枚舉過程所消耗的時(shí)間,加快了系統(tǒng)初始化的過程。
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明實(shí)施例的方法的流程圖;圖2是本發(fā)明實(shí)施例一的流程圖;圖3是本發(fā)明實(shí)施例一中枚舉各節(jié)點(diǎn)內(nèi)的IO設(shè)備的流程圖;圖4是本發(fā)明實(shí)施例二的流程圖;圖5是本發(fā)明實(shí)施例的設(shè)備的示意結(jié)構(gòu)圖;圖6是本發(fā)明實(shí)施例的設(shè)備的進(jìn)一步細(xì)化的示意結(jié)構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。術(shù)語“硬件系統(tǒng)架構(gòu)”指的是包括處理器、輸入輸出集中控制器等硬件組成部分的系統(tǒng)架構(gòu),例如常見的x86、Itanium系統(tǒng)硬件架構(gòu),這些硬件系統(tǒng)架構(gòu)主要指普通個(gè)人計(jì)算機(jī)和服務(wù)器等。硬件系統(tǒng)架構(gòu)可以包含節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)分別具有處理器封裝(Socket),輸入輸出集中控制器。硬件系統(tǒng)架構(gòu)也可以是只含一個(gè)節(jié)點(diǎn)的個(gè)人計(jì)算機(jī)或服務(wù)器,也可以是含有更多節(jié)點(diǎn)的大型服務(wù)器。一個(gè)節(jié)點(diǎn)也可以只有一個(gè)處理器Socket、或者多于2個(gè)處理器Socket,只要符合X86、Itanium架構(gòu)規(guī)范即可。還有另外可能的變形是處理器與輸入輸出集中控制器集成到一個(gè)封裝里,或者多個(gè)輸入輸出集中控制器集成到一個(gè)芯片封裝里。為了便于管理,硬件系統(tǒng)架構(gòu)里的每個(gè)處理器、每個(gè)輸入輸出集中控制器都會有一個(gè)相互不同的編號,這個(gè)編號可以由硬件設(shè)計(jì)時(shí)確定,也可以由軟件編程指定,不同的平臺可能采用不同的方法,運(yùn)行在系統(tǒng)里的軟件可以通過系統(tǒng)內(nèi)部總線讀出上述編號,或者通過系統(tǒng)管理總線(System Management Bus,簡稱SMBus)讀出上述編號,不同的系統(tǒng)可能采用不同的設(shè)計(jì),本發(fā)明并不限定上述編號的設(shè)定和讀取的方法。本文雖然以x86、Itanium平臺為例進(jìn)行描述,但是本發(fā)明實(shí)施例并不僅僅適用于x86、Itanium平臺,而是適用于具有類似邏輯機(jī)構(gòu)的任意硬件系統(tǒng)架構(gòu)。所述含有更多節(jié)點(diǎn)的大型服務(wù)器中,各個(gè)節(jié)點(diǎn)之間的連接方式在不同的系統(tǒng)里可能是不同的,例如可以用處理器直接擁有的專有高速互連接口(例如QuickPathInterconnect接口,簡稱QPI)直接相連。本發(fā)明不限定節(jié)點(diǎn)間互聯(lián)的方式和所使用的協(xié)議類型。所述系統(tǒng)管理總線屬于一種帶外總線。帶外總線指的是系統(tǒng)內(nèi)部總線以外的總線。系統(tǒng)內(nèi)部總線就是帶內(nèi)總線,指的是把處理器、內(nèi)存、IO設(shè)備的各功能塊連成一個(gè)系統(tǒng)的高速率、高帶寬的總線,用于完成系統(tǒng)主要功能。帶外總線一般速率低、帶寬低,一般用于系統(tǒng)管理。術(shù)語“系統(tǒng)固件”指的是固化在一個(gè)Flash ROM里,并在系統(tǒng)加電后用來配置系統(tǒng)硬件設(shè)備,包括配置他們的寄存器、為它們分配資源的軟件。在所有系統(tǒng)里,存在多種系統(tǒng)固件。在x86、Itanium系統(tǒng)里,系統(tǒng)固件更常用的名字是基本輸入輸出系統(tǒng)(Basic Input/Output System,簡稱BIOS),這里的BIOS既指目前正在廣泛使用的傳統(tǒng)(Legacy)BIOS,
也指目前在逐漸流行的新一代BIOS--統(tǒng)一可擴(kuò)展固件接口 BIOS (Unified Extensible
Firmware Interface BIOS,簡稱UEFI BIOS)。為了更加通用化,本文一律使用系統(tǒng)固件這一名稱。術(shù)語“10集中控制器”指的是集成了一個(gè)或多個(gè)10橋、或者集成了一個(gè)或多個(gè)10端點(diǎn)設(shè)備、或者同時(shí)集成了一個(gè)或多個(gè)10橋設(shè)備和端點(diǎn)設(shè)備的10芯片、10集線器、10設(shè)備集中掛載點(diǎn)、10 交換器、10 Bridge Chip、10 Switch、10 Hub、1/0 Controller Hub、10Router、或其它具備類似功能的模塊/芯片。圖I是根據(jù)本發(fā)明實(shí)施例的枚舉系統(tǒng)10總線的方法的流程圖。如圖I所示,方法100包括110 :獲取系統(tǒng)中的各處理器的標(biāo)識和各10集中控制器的標(biāo)識;120 :根據(jù)所述各處理器的標(biāo)識以及所述各10集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的10集中控制器及與之相連的10設(shè)備;130 :獲取被指令的處理器枚舉的10設(shè)備的相關(guān)信息。下面結(jié)合具體實(shí)施例的方案詳細(xì)說明本發(fā)明實(shí)施例的方法。實(shí)施例一圖2是本發(fā)明實(shí)施例一的枚舉系統(tǒng)中的10設(shè)備的方法200的流程圖。實(shí)施例一的方法200適合用于存在多個(gè)節(jié)點(diǎn)的硬件系統(tǒng)架構(gòu)中。如上所述,每個(gè)節(jié)點(diǎn)均存在節(jié)點(diǎn)主處理器來處理該節(jié)點(diǎn)內(nèi)的節(jié)點(diǎn)級事務(wù)。另外,系統(tǒng)中也存在被稱為系統(tǒng)主處理器的處理器,作為該系統(tǒng)內(nèi)級別最高的處理器,負(fù)責(zé)系統(tǒng)級的事務(wù),同時(shí)系統(tǒng)主處理器也是它所在節(jié)點(diǎn)的節(jié)點(diǎn)主處理器。需要注意,系統(tǒng)主處理器和節(jié)點(diǎn)主處理器是通過一定機(jī)制由系統(tǒng)自行選擇出來的,例如,可以規(guī)定某些編號的處理器自動成為系統(tǒng)主處理器或節(jié)點(diǎn)主處理器,或者由獨(dú)立于主機(jī)系統(tǒng)的其它軟件(比如系統(tǒng)管理軟件)指定哪個(gè)處理器成為系統(tǒng)主處理器、哪些處理器分別成為節(jié)點(diǎn)主處理器。這個(gè)機(jī)制在不同的平臺上可能不同,本發(fā)明實(shí)施例并不限定這個(gè)機(jī)制。系統(tǒng)主處理器和節(jié)點(diǎn)主處理器只是一個(gè)邏輯上的概念,它們并非物理上 特殊的處理器。如圖2所示,方法200包括210 :系統(tǒng)主處理器獲取系統(tǒng)中的各節(jié)點(diǎn)的節(jié)點(diǎn)主處理器的標(biāo)識和每個(gè)節(jié)點(diǎn)內(nèi)的10集中控制器的標(biāo)識。應(yīng)該理解,系統(tǒng)主處理器同時(shí)也可以獲取自身的標(biāo)識。根據(jù)本發(fā)明實(shí)施例,系統(tǒng)主處理器還可以同時(shí)獲取10集中控制器的其它他相關(guān)信息,例如10集中控制器的數(shù)量。這里獲取處理器和IO集中控制器的標(biāo)識,包括但不限于獲取處理器和IO集中控制器的編號。這里獲取IO集中控制器的其它相關(guān)信息標(biāo)識,針對不同的系統(tǒng)可以采用不同的方法,例如通過硬件信號收集每個(gè)節(jié)點(diǎn)有多少個(gè)IO集中控制器,因?yàn)镮O集中控制器個(gè)數(shù)愈多則IO總線和IO設(shè)備就越多、需要的資源也越多;如果硬件系統(tǒng)架構(gòu)支持,另外一種可以收集更細(xì)致信息的方法是在系統(tǒng)里運(yùn)行獨(dú)立于主機(jī)系統(tǒng)的管理軟件,該管理軟件可以通過某種物理通道如系統(tǒng)管理總線去訪問每個(gè)芯片的內(nèi)部寄存器,不但可以發(fā)現(xiàn)每個(gè)IO設(shè)備,而且可能發(fā)現(xiàn)每個(gè)IO設(shè)備內(nèi)部集成的IO子設(shè)備(包括橋設(shè)備),從而收集到非常細(xì)致的信息。本發(fā)明實(shí)施例并不限制收集處理器的標(biāo)識和IO集中控制器的標(biāo)識和相關(guān)信息的方法。系統(tǒng)主處理器獲取的各節(jié)點(diǎn)主處理器的標(biāo)識以及每個(gè)節(jié)點(diǎn)內(nèi)的IO集中控制器的標(biāo)識可以存儲在系統(tǒng)內(nèi)存中,其中所述的系統(tǒng)內(nèi)存可以由所述各處理器訪問。220 :系統(tǒng)主處理器根據(jù)每個(gè)節(jié)點(diǎn)內(nèi)的IO集中控制器的個(gè)數(shù)或IO設(shè)備的個(gè)數(shù),為每個(gè)節(jié)點(diǎn)預(yù)分配資源,在內(nèi)存中建立資源預(yù)分配表。根據(jù)本發(fā)明實(shí)施例的構(gòu)思,通過多個(gè)處理器同時(shí)枚舉系統(tǒng)中的IO設(shè)備來加快枚舉進(jìn)程。為了保證整個(gè)系統(tǒng)資源分配的一致性,需要提前為每個(gè)節(jié)點(diǎn)預(yù)分配資源,防止發(fā)生 資源沖突。這里預(yù)分配資源的方法例如根據(jù)每個(gè)節(jié)點(diǎn)IO集中控制器的多少進(jìn)行排序,IO集中控制器越多,則認(rèn)為IO設(shè)備規(guī)模越大,資源需求則越多。本發(fā)明不限制這個(gè)預(yù)分配資源的方法。本領(lǐng)域技術(shù)人員可以根據(jù)需要,相應(yīng)地選擇適當(dāng)?shù)姆椒槊總€(gè)節(jié)點(diǎn)預(yù)分配資源,目的是保證各節(jié)點(diǎn)間資源分配均衡且各節(jié)點(diǎn)的IO設(shè)備不會發(fā)生資源沖突。在內(nèi)存中建立的資源預(yù)分配表例如表I所示。表I :資源預(yù)分配表
節(jié)點(diǎn)O節(jié)點(diǎn)I節(jié)點(diǎn)2節(jié)點(diǎn)3
資源項(xiàng)I起始值-數(shù)量起始值-數(shù)量起始值-數(shù)量起始值-數(shù)量
資源項(xiàng)2起始值-數(shù)量起始值-數(shù)量起始值-數(shù)量起始值-數(shù)量這里的資源項(xiàng)例如包括內(nèi)存空間地址,IO空間地址,總線號等。需要明確的是,資源項(xiàng)可以是不同于上述列出的其它類型,本發(fā)明不限制資源項(xiàng)的類型和數(shù)量。230 :系統(tǒng)主處理器通過特定的機(jī)制驅(qū)動每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)主處理器開始枚舉本節(jié)點(diǎn)內(nèi)的IO設(shè)備,同時(shí)系統(tǒng)主處理器枚舉其所處節(jié)點(diǎn)內(nèi)的IO設(shè)備。這個(gè)機(jī)制在不同的硬件平臺下可能是不同的,例如在X86平臺下,系統(tǒng)主處理器可以通過編程中斷控制器發(fā)出“處理器間中斷信號”的方法來驅(qū)動其它處理器(例如,節(jié)點(diǎn)主處理器)完成指定的任務(wù);或者系統(tǒng)主處理器與各節(jié)點(diǎn)主處理器通過系統(tǒng)約定的內(nèi)存共享的方法來傳遞任務(wù)和數(shù)據(jù)。例如,一種內(nèi)存共享的方法是在系統(tǒng)內(nèi)存中設(shè)置指令區(qū)域,用于存放指令信息,所述指令用于驅(qū)動被指令的處理器,例如每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)主處理器,同時(shí)枚舉各節(jié)點(diǎn)內(nèi)的IO集中控制器及與之相連的IO設(shè)備。本發(fā)明實(shí)施例不限定系統(tǒng)主處理器驅(qū)動節(jié)點(diǎn)主處理器的具體機(jī)制。因?yàn)橘Y源預(yù)分配表是建立在系統(tǒng)內(nèi)存里的,而系統(tǒng)里的每個(gè)處理器,包括系統(tǒng)主處理器和節(jié)點(diǎn)主處理器都可以訪問系統(tǒng)內(nèi)存,所以,每個(gè)節(jié)點(diǎn)主處理器都可以獲得資源預(yù)分配表。240 :系統(tǒng)主處理器和各節(jié)點(diǎn)主處理器枚舉各自節(jié)點(diǎn)內(nèi)的IO總線設(shè)備。枚舉各自節(jié)點(diǎn)內(nèi)的IO設(shè)備的過程例如如圖3所示。枚舉各節(jié)點(diǎn)內(nèi)的IO設(shè)備的步驟240包括241 :按照一定的順序掃描本節(jié)點(diǎn)的IO總線,找到一個(gè)橋設(shè)備;242 :為該橋設(shè)備分配總線號; 243 :判斷是否掃描完本節(jié)點(diǎn)內(nèi)的橋設(shè)備;244 :按照一定的順序掃描本節(jié)點(diǎn)的IO總線,找到一個(gè)IO設(shè)備,詢問該IO設(shè)備的資源需求;245 :根據(jù)資源預(yù)分配表中為本節(jié)點(diǎn)預(yù)分配的資源,為該IO設(shè)備分配資源;246 :將資源分配情況記錄在系統(tǒng)內(nèi)存中,例如記錄在系統(tǒng)內(nèi)存的枚舉結(jié)果區(qū)域中;247 :將資源分配記錄寫入該IO設(shè)備的寄存器中;248 :可選地,設(shè)置該IO設(shè)備的非資源分配配置項(xiàng);249 :判斷是否掃描完本節(jié)點(diǎn)內(nèi)的IO設(shè)備。在所有節(jié)點(diǎn)主處理器掃描完各自節(jié)點(diǎn)內(nèi)的IO設(shè)備之后,方法200包括250 :系統(tǒng)主處理器接收通過特定的機(jī)制從各節(jié)點(diǎn)主處理器反饋的枚舉出的IO設(shè)備的相關(guān)信息,例如將各節(jié)點(diǎn)內(nèi)的IO設(shè)備的標(biāo)識反饋回系統(tǒng)主處理器。這里所述的相關(guān)信息包括枚舉出的IO設(shè)備的類型、標(biāo)識、資源分配(例如內(nèi)存起始地址和內(nèi)存區(qū)域大小等)、總線號、設(shè)備編號等等。這里所述的反饋機(jī)制在不同的硬件系統(tǒng)架構(gòu)下可能是不同的,例如可以通過系統(tǒng)主處理器與各節(jié)點(diǎn)主處理器內(nèi)存共享的方法在各個(gè)處理器之間傳遞結(jié)果。例如一種內(nèi)存共享的方法是在系統(tǒng)內(nèi)存中設(shè)置枚舉結(jié)果區(qū)域,用于存放枚舉出的IO設(shè)備的相關(guān)信息,以使系統(tǒng)主處理器獲取所述被指定的處理器,例如每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)主處理器枚舉出的IO設(shè)備的相關(guān)信息。本發(fā)明不限定這個(gè)反饋機(jī)制。本發(fā)明實(shí)施例一特別適用于大型系統(tǒng),分組方法簡單有效,因?yàn)橐话愕拇笮拖到y(tǒng)都由多個(gè)節(jié)點(diǎn)組成。實(shí)施例一優(yōu)勢在于把枚舉IO設(shè)備的任務(wù)分配到各個(gè)節(jié)點(diǎn)同時(shí)并行進(jìn)行,時(shí)間減少到目前技術(shù)的1/N,N為系統(tǒng)中的節(jié)點(diǎn)數(shù)。實(shí)施例二本發(fā)明實(shí)施例二與實(shí)施例一不同之處在于,實(shí)施例二中硬件系統(tǒng)架構(gòu)沒有明確的節(jié)點(diǎn)概念,例如該硬件系統(tǒng)架構(gòu)中僅有一個(gè)節(jié)點(diǎn)。在這種硬件系統(tǒng)架構(gòu)中,對IO集中控制器的分組以及對用來枚舉各組IO集中控制器及與之相連的IO設(shè)備的處理器的選取都具有更大的靈活性。圖4是本發(fā)明實(shí)施例二的枚舉IO設(shè)備的方法400的流程圖。具體說明如下,方法400包括410 :系統(tǒng)主處理器獲取系統(tǒng)中的IO集中控制器的標(biāo)識以及其他處理器的標(biāo)識。當(dāng)然系統(tǒng)主處理器也可以獲取其自身的標(biāo)識。與實(shí)施例一類似,系統(tǒng)主處理器還可以獲取IO集中控制器的數(shù)量信息。420 :根據(jù)具體情況,系統(tǒng)主處理器將IO集中控制器分組,每組包括至少一個(gè)IO集中控制器。例如,可以根據(jù)IO集中控制器的標(biāo)識對IO集中控制器分組?;蛘撸梢韵冗x定參加IO設(shè)備枚舉的特定的處理器,然后把與所述特定的處理器相連的IO集中控制器分成一組。
430 :系統(tǒng)主處理器根據(jù)每個(gè)組內(nèi)的IO集中控制器的個(gè)數(shù),為每個(gè)組預(yù)分配資源,在內(nèi)存中建立資源預(yù)分配表。為每組IO集中控制器預(yù)分配資源的方法以及在內(nèi)存中建立的資源預(yù)分配表類似實(shí)施例一。所不同的是這里以分組代替節(jié)點(diǎn)。440 :針對每組IO集中控制器,系統(tǒng)主處理器根據(jù)各其他處理器的標(biāo)識,有選擇地指令所述其他處理器枚舉各組IO集中控制器中每個(gè)IO集中控制器及與之相連的IO設(shè)備。在本實(shí)施例中,為每組IO集中控制器指定一個(gè)處理器來枚舉IO設(shè)備。根據(jù)本發(fā)明實(shí)施例,系統(tǒng)主處理器也用來枚舉一組IO集中控制器,例如與其相連的一組IO集中控制器。450 :系統(tǒng)主處理器和被指令的其他處理器枚舉對應(yīng)的各組IO集中控制器及與之相連的IO設(shè)備。枚舉的具體步驟類似于實(shí)施例一中的步驟241至249,不再贅述。460:系統(tǒng)主處理器接收通過特定的機(jī)制從各被指令的其他處理器反饋的相關(guān)信息,例如將各組IO集中控制器的IO設(shè)備的標(biāo)識及資源分配情況反饋回系統(tǒng)主處理器。這個(gè)反饋機(jī)制在不同的硬件系統(tǒng)架構(gòu)下可能是不同的,例如實(shí)施例一中所述,可以通過系統(tǒng) 主處理器與各被指令的處理器內(nèi)存共享的方法在處理器之間傳遞相關(guān)信息。本發(fā)明不限定這個(gè)反饋機(jī)制。根據(jù)本發(fā)明實(shí)施例,可以將枚舉系統(tǒng)IO設(shè)備的工作分配給多個(gè)處理器同時(shí)進(jìn)行,由此大大減少了枚舉過程所消耗的時(shí)間,加快了系統(tǒng)初始化的過程。圖5是實(shí)現(xiàn)本發(fā)明實(shí)施例的枚舉系統(tǒng)中的IO設(shè)備的方法的設(shè)備500的示意結(jié)構(gòu)圖。如圖5所示,設(shè)備500包括信息收集模塊510,用于獲取系統(tǒng)中的各處理器的標(biāo)識和各IO集中控制器的標(biāo)識;調(diào)度模塊520,用于根據(jù)所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的IO集中控制器及與之相連的IO設(shè)備;結(jié)果收集模塊530,用于獲取被指令的處理器枚舉的IO設(shè)備的相關(guān)信息。如圖6所示,根據(jù)本發(fā)明實(shí)施例,調(diào)度模塊520進(jìn)一步包括分組子模塊522,用于根據(jù)所述IO集中控制器的標(biāo)識將所述IO集中控制器分成多個(gè)組,每個(gè)組包括至少一個(gè)IO集中控制器;資源預(yù)分配子模塊524,用于根據(jù)每組IO集中控制器的數(shù)量,為每組IO集中控制器預(yù)分配資源,在系統(tǒng)內(nèi)存中建立資源預(yù)分配表;枚舉子模塊526,用于針對每組IO集中控制器,根據(jù)所述各處理器的標(biāo)識,分別指令處理器枚舉各組IO集中控制器中每個(gè)IO集中控制器及與之相連的IO設(shè)備。根據(jù)本發(fā)明實(shí)施例,所述分組子模塊522用于將系統(tǒng)中每個(gè)節(jié)點(diǎn)所屬的IO集中控制器分為一組,并且所述枚舉子模塊526用于指令系統(tǒng)主處理器枚舉其所處節(jié)點(diǎn)內(nèi)的IO集中控制器及與之相連的IO設(shè)備,并指令每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)主處理器來枚舉該節(jié)點(diǎn)所屬的IO集中控制器及與之相連的IO設(shè)備。根據(jù)本發(fā)明實(shí)施例,所述枚舉子模塊526用于分別指令處理器按一定的順序掃描各組IO集中控制器及與之相連的IO設(shè)備,在找到IO設(shè)備時(shí),根據(jù)為各組IO集中控制器預(yù)分配的資源,為所述IO設(shè)備分配資源,把資源分配信息記錄在系統(tǒng)內(nèi)存中,把資源分配記錄寫入所述IO設(shè)備的寄存器中,設(shè)置該IO設(shè)備的非資源分配配置項(xiàng)。根據(jù)本發(fā)明實(shí)施例,所述信息收集模塊510通過系統(tǒng)中的硬件信號獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識,或者通過訪問系統(tǒng)管理總線來獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識,或者與系統(tǒng)管理軟件配合獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識。根據(jù)本發(fā)明實(shí)施例,所述信息收集模塊510還用于將所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識存儲在系統(tǒng)內(nèi)存中,其中所述的系統(tǒng)內(nèi)存可以由所述各處理器訪問。根據(jù)本發(fā)明實(shí)施例,所述調(diào)度模塊520用于在系統(tǒng)內(nèi)存中設(shè)置指令區(qū)域,用于存放指令信息,所述指令用于驅(qū)動被指令的處理器同時(shí)枚舉各組IO集中控制器及與之相連的IO設(shè)備。根據(jù)本發(fā)明實(shí)施例,所述結(jié)果收集模塊530用于在系統(tǒng)內(nèi)存中設(shè)置枚舉結(jié)果區(qū)域,用于存放枚舉出的IO設(shè)備的相關(guān)信息,以使系統(tǒng)主處理器獲取所述被指令的處理器枚舉出的IO設(shè)備的相關(guān)信息。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或計(jì)算機(jī)軟件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種枚舉輸入輸出設(shè)備的方法,其特征在于,所述方法包括 獲取系統(tǒng)中的各處理器的標(biāo)識和各輸入輸出IO集中控制器的標(biāo)識; 根據(jù)所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的IO集中控制器及與之相連的輸入輸出IO設(shè)備; 獲取被指令的處理器枚舉的IO設(shè)備的相關(guān)信息。
2.如權(quán)利要求I所述的方法,其特征在于, 所述根據(jù)所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的IO集中控制器及與之相連的IO設(shè)備,包括 根據(jù)所述各IO集中控制器的標(biāo)識將所述IO集中控制器分成多個(gè)組,每個(gè)組包括至少一個(gè)IO集中控制器; 根據(jù)每組IO集中控制器的數(shù)量,為每組IO集中控制器預(yù)分配資源,在系統(tǒng)內(nèi)存中建立資源預(yù)分配表; 針對每組IO集中控制器,根據(jù)所述各處理器的標(biāo)識,分別指令處理器同時(shí)枚舉各組IO集中控制器中每個(gè)IO集中控制器及與之相連的IO設(shè)備,并根據(jù)為各組IO集中控制器預(yù)分配的資源為枚舉得到的IO設(shè)備分配資源。
3.如權(quán)利要求2所述的方法,其特征在于, 所述根據(jù)所述各IO集中控制器的標(biāo)識將所述IO集中控制器分成多個(gè)組,包括 將系統(tǒng)中每個(gè)節(jié)點(diǎn)所屬的IO集中控制器分為一組, 所述針對每組IO集中控制器,根據(jù)所述各處理器的標(biāo)識,分別指令處理器同時(shí)枚舉各組IO集中控制器中每個(gè)IO集中控制器及與之相連的IO設(shè)備,并根據(jù)為各組IO集中控制器預(yù)分配的資源為枚舉得到的IO設(shè)備分配資源,包括 指令系統(tǒng)主處理器枚舉其所處節(jié)點(diǎn)內(nèi)的IO集中控制器及與之相連的IO設(shè)備,并指令每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)主處理器來枚舉該節(jié)點(diǎn)內(nèi)的IO集中控制器及與之相連的IO設(shè)備,并根據(jù)為各組IO集中控制器預(yù)分配的資源為枚舉得到的IO設(shè)備分配資源。
4.如權(quán)利要求2或3所述的方法,其特征在于, 所述針對每組IO集中控制器,根據(jù)所述各處理器的標(biāo)識,分別指令處理器同時(shí)枚舉各組IO集中控制器中每個(gè)IO集中控制器及與之相連的IO設(shè)備,并根據(jù)為各組IO集中控制器預(yù)分配的資源為枚舉得到的IO設(shè)備分配資源,包括 分別指令處理器按特定的順序掃描各組IO集中控制器及與之相連的IO設(shè)備,在找到IO設(shè)備時(shí),根據(jù)為各組IO集中控制器預(yù)分配的資源,為所述IO設(shè)備分配資源,把資源分配信息記錄在系統(tǒng)內(nèi)存中,把資源分配記錄寫入所述IO設(shè)備的寄存器中,設(shè)置該IO設(shè)備的非資源分配配置項(xiàng)。
5.如權(quán)利要求I至4任一項(xiàng)所述的方法,其特征在于, 所述獲取系統(tǒng)中的各處理器的標(biāo)識和各輸入輸出IO集中控制器的標(biāo)識,包括 通過系統(tǒng)中的硬件信號獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識,或者通過訪問系統(tǒng)帶外總線來獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識,或者通過獨(dú)立于系統(tǒng)的管理軟件來獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識。
6.如權(quán)利要求I至5任一項(xiàng)所述的方法,其特征在于, 所述獲取系統(tǒng)中的各處理器的標(biāo)識和各IO集中控制器的標(biāo)識,還包括將所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識存儲在系統(tǒng)內(nèi)存中,其中所述系統(tǒng)內(nèi)存可以由所述各處理器訪問。
7.如權(quán)利要求2至6任一項(xiàng)所述的方法,其特征在于, 所述針對每組IO集中控制器,根據(jù)所述各處理器的標(biāo)識,分別指令處理器同時(shí)枚舉各組IO集中控制器中每個(gè)IO集中控制器及與之相連的IO設(shè)備,包括 在系統(tǒng)內(nèi)存中設(shè)置指令區(qū)域,用于存放指令信息,所述指令信息用于驅(qū)動被指令的處理器同時(shí)枚舉各組IO集中控制器及與之相連的IO設(shè)備。
8.如權(quán)利要求I至7任一項(xiàng)所述的方法,其特征在于, 所述獲取被指令的處理器枚舉的IO設(shè)備的相關(guān)信息,包括 在系統(tǒng)內(nèi)存中設(shè)置枚舉結(jié)果區(qū)域,用于存放枚舉出的IO設(shè)備的相關(guān)信息,以使系統(tǒng)主處理器獲取所述被指令的處理器枚舉出的IO設(shè)備的相關(guān)信息。
9.如權(quán)利要求8所述的方法,其特征在于, 所述IO設(shè)備的相關(guān)信息包括下列信息至少一項(xiàng)所述IO設(shè)備的制造商標(biāo)識、IO設(shè)備標(biāo)識、IO設(shè)備類型、IO設(shè)備資源分配、IO設(shè)備總線號信息。
10.一種枚舉輸入輸出設(shè)備的設(shè)備,其特征在于,所述設(shè)備包括 信息收集模塊,用于獲取系統(tǒng)中的各處理器的標(biāo)識和各IO集中控制器的標(biāo)識; 調(diào)度模塊,用于根據(jù)所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的IO集中控制器及與之相連的IO設(shè)備; 結(jié)果收集模塊,用于獲取被指令的處理器枚舉的IO設(shè)備的相關(guān)信息。
11.如權(quán)利要求10所述的設(shè)備,其特征在于,所述調(diào)度模塊具體包括 分組子模塊,用于根據(jù)所述各IO集中控制器的標(biāo)識將所述各IO集中控制器分成多個(gè)組,每個(gè)組包括至少一個(gè)IO集中控制器; 資源預(yù)分配子模塊,用于根據(jù)每組IO集中控制器的數(shù)量,為每組IO集中控制器預(yù)分配資源,在系統(tǒng)內(nèi)存中建立資源預(yù)分配表; 枚舉子模塊,用于針對每組IO集中控制器,根據(jù)所述各處理器的標(biāo)識,分別指令處理器同時(shí)枚舉各組IO集中控制器中每個(gè)IO集中控制器及與之相連的IO設(shè)備。
12.如權(quán)利要求11所述的設(shè)備,其特征在于,所述分組子模塊用于將系統(tǒng)中每個(gè)節(jié)點(diǎn)所屬的IO集中控制器分為一組,并且所述枚舉子模塊用于指令系統(tǒng)主處理器枚舉其所處節(jié)點(diǎn)內(nèi)的IO集中控制器及與之相連的IO設(shè)備,并且所述枚舉子模塊指令每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)主處理器來枚舉該節(jié)點(diǎn)所屬的IO集中控制器及與之相連的IO設(shè)備。
13.如權(quán)利要求11或12所述的設(shè)備,其特征在于,所述枚舉子模塊用于分別指令所述處理器按特定的順序掃描各組IO集中控制器及與之相連的IO設(shè)備,在找到IO設(shè)備時(shí),根據(jù)為各組IO集中控制器預(yù)分配的資源,為所述IO設(shè)備分配資源,把資源分配信息記錄在系統(tǒng)內(nèi)存中,把資源分配記錄寫入所述IO設(shè)備的寄存器中,設(shè)置該IO設(shè)備的非資源分配配置項(xiàng)。
14.如權(quán)利要求10至13任一項(xiàng)所述的設(shè)備,其特征在于,所述信息收集模塊通過系統(tǒng)中的硬件信號獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識,或者通過訪問系統(tǒng)帶外總線來獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識,或者通過獨(dú)立于系統(tǒng)的管理軟件來獲取所述各處理器的標(biāo)識和各IO集中控制器的標(biāo)識。
15.如權(quán)利要求10至14任一項(xiàng)所述的設(shè)備,其特征在于,所述信息收集模塊還用于將所述各處理器的標(biāo)識以及所述IO集中控制器的標(biāo)識存儲在系統(tǒng)內(nèi)存中,其中所述的系統(tǒng)內(nèi)存可以由所述各處理器訪問。
16.如權(quán)利要求10至15任一項(xiàng)所述的設(shè)備,其特征在于,所述調(diào)度模塊用于在系統(tǒng)內(nèi)存中設(shè)置指令區(qū)域,用于存放指令信息,所述指令信息用于驅(qū)動被指令的處理器同時(shí)枚舉各組IO集中控制器及與之相連的IO設(shè)備。
17.如權(quán)利要求10至16任一項(xiàng)所述的設(shè)備,其特征在于,所述結(jié)果收集模塊用于在系統(tǒng)內(nèi)存中設(shè)置枚舉結(jié)果區(qū)域,用于存放枚舉出的IO設(shè)備的相關(guān)信息,以使系統(tǒng)主處理器獲取所述被指令的處理器枚舉出的IO設(shè)備的相關(guān)信息。
18.如權(quán)利要求17所述的設(shè)備,其特征在于,所述IO設(shè)備的相關(guān)信息包括下列信息至少一項(xiàng)所述IO設(shè)備的制造商標(biāo)識、IO設(shè)備標(biāo)識、IO設(shè)備類型、IO設(shè)備資源分配、IO設(shè)備總線號信息。
全文摘要
本發(fā)明實(shí)施例涉及枚舉輸入輸出設(shè)備(IO設(shè)備)的方法和設(shè)備。枚舉輸入輸出設(shè)備的方法包括獲取系統(tǒng)中的各處理器的標(biāo)識和各輸入輸出(IO)集中控制器的標(biāo)識;根據(jù)所述各處理器的標(biāo)識以及所述各IO集中控制器的標(biāo)識,分別指令處理器同時(shí)枚舉特定的IO集中控制器及與之相連的輸入輸出IO設(shè)備;獲取被指令的處理器枚舉的IO設(shè)備的相關(guān)信息。根據(jù)本發(fā)明實(shí)施例,可以將枚舉系統(tǒng)IO設(shè)備的工作分配給多個(gè)處理器同時(shí)進(jìn)行,由此大大減少了枚舉過程所消耗的時(shí)間,加快了系統(tǒng)初始化的過程。
文檔編號G06F9/50GK102725749SQ201180001440
公開日2012年10月10日 申請日期2011年8月22日 優(yōu)先權(quán)日2011年8月22日
發(fā)明者劉云海, 朱冠宇 申請人:華為技術(shù)有限公司