專利名稱:多端口裝置配置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實施例涉及計算機系統(tǒng),更具體地說,涉及計算機系統(tǒng)中多端口裝置的配置。
背景技術(shù):
計算機系統(tǒng)通常包括處理器和芯片組。芯片組可包括一個或多個開關(guān),它們通過若干總線將外圍部件鏈接到處理器。外圍部件互連(PCI)是為系統(tǒng)中的外圍部件之間提供數(shù)據(jù)通路而開發(fā)的標準。隨著處理器的速度加快,開發(fā)了提供計算機系統(tǒng)中高速數(shù)據(jù)通路的標準,例如PCI-X和PCI ExpressTM。
具有多端口的PCI ExpressTM兼容開關(guān)對于PCI兼容枚舉和配置軟件來說是一個兩級分級結(jié)構(gòu)的PCI-to-PCI橋。每個開關(guān)端口對于配置軟件是一個獨特的PCI-to-PCI橋。每個端口可以支持多達8個子功能,每個子功能可能引入所支持能力的鏈接列表。在這些端口中有一個上行端口。上行端口對軟件來說是一個PCI-to-PCI橋,它是PCI兼容開關(guān)能讀和/或?qū)戦_關(guān)的內(nèi)部配置寄存器的唯一端口。開關(guān)的所有其它端口稱為下行端口,對配置軟件來說是獨特的PCI-to-PCI橋。結(jié)果,就形成了兩級分級結(jié)構(gòu)的PCI-to-PCI橋。
為了配置開關(guān),配置軟件讀取存儲在一組配置寄存器中的配置記錄,并寫到一些配置寄存器中。在一組配置寄存器中存儲的配置記錄實例示于圖1。配置寄存器的大小受配置寄存器的地址限制,即8位寬。所以,該組配置寄存器限于存儲28字節(jié)即256字節(jié)的信息,例如供應(yīng)商ID、PCI狀態(tài)、類別代碼等。
由于開關(guān)的每個端口(包括上行端口)都是一個獨特的PCI-to-PCI橋,因此每個端口都用其自己單獨且獨特的配置寄存器空間來表示。為了支持開關(guān)中的附加端口,就必須創(chuàng)建具有其相關(guān)配置寄存器空間的附加的PCI-to-PCI橋。對開關(guān)部件而言,為每個端口創(chuàng)建配置寄存器空間增加了額外的硅成本和復(fù)雜性。
從以下的詳細說明以及從附圖中就可對本發(fā)明的實施例有更充分的理解,但不應(yīng)認為是將所附權(quán)利要求限制在所示的具體實施例上,它們僅用于說明和理解。
圖1示出一組配置寄存器實例(PCI實例)。
圖2A示出多端口裝置的一個實施例。
圖2B示出多端口裝置的配置結(jié)構(gòu)的一個實施例。
圖2C示出多端口裝置的配置結(jié)構(gòu)的另一實施例。
圖3示出能力結(jié)構(gòu)列表的示范實施例。
圖4示出用于配置多端口裝置的過程的實施例流程圖。
圖5示出計算機系統(tǒng)的一個示范實施例。
具體實施例方式
描述了配置多端口裝置的方法和設(shè)備。為了提供對本說明書的徹底理解,在以下說明中闡述了許多細節(jié),例如具體配置、數(shù)據(jù)大小、緩沖能力等。但對業(yè)界技術(shù)人員來說,顯然可能并不需要這些具體細節(jié)來實踐本發(fā)明的每個實施例。
以下詳細說明的一些部分是以符號表示和對計算機存儲器中數(shù)據(jù)位的操作說明來介紹的。這些算法說明和表示都是數(shù)據(jù)處理專業(yè)技術(shù)人員向本專業(yè)其它人員最有效地傳達他們工作本質(zhì)所用的工具。在本文中,一般來說,算法是想出的導致所需結(jié)果的自相一致的操作序列。操作是需要實際操控物理量的那些操作。通常,雖然不是必須,這些量采取電或磁信號的形式,它們能夠被存儲、轉(zhuǎn)移、組合、比較以及作其它操控。有時,主要是為了通用的原因,稱這些信號為位、值、單元、符號、字符、術(shù)語、數(shù)字等更為方便。
但應(yīng)記住,所有這些和類似的術(shù)語都應(yīng)與適當?shù)奈锢砹肯嚓P(guān)聯(lián),而且僅僅是這些量的方便標記而已。除非在以下討論中另有具體聲明,否則應(yīng)理解,在整個說明中,利用術(shù)語諸如“處理“或“計算”或“確定”或“顯示”等的討論是指計算機系統(tǒng)或類似的電子計算裝置將計算機系統(tǒng)的寄存器和存儲器中以物理(電子)量表示的數(shù)據(jù)操控和轉(zhuǎn)換成計算機系統(tǒng)存儲器或寄存器或其它此類信息存儲、傳輸和顯示裝置中類似以物理量表示的其它數(shù)據(jù)的動作和過程。
本發(fā)明的實施例還涉及用于執(zhí)行本文所述操作的設(shè)備。該設(shè)備可以為所需目的而專門構(gòu)建,或者它可包括通用計算機,用計算機中存儲的計算機程序選擇性地激活或重新配置。這種計算機程序可存儲在計算機可讀存儲介質(zhì)中,例如但不限于包括軟盤、光盤、CD-ROM以及磁光盤等任何類型的盤、只讀存儲器(ROM)、隨機存取存儲器(RAM)、EPROM、EEPROM、磁或光卡、或適合于存儲電子指令的任何類型介質(zhì),并且它們每個都連接到計算機系統(tǒng)總線。
本文提出的操作和顯示并不固有地與任何特定的計算機或其它設(shè)備相關(guān)。各種通用系統(tǒng)可以和按照本發(fā)明內(nèi)容的程序一起使用,或構(gòu)建更專用的設(shè)備來實現(xiàn)所需方法步驟也許更方便。以下說明中會有用于各種這些系統(tǒng)的所需結(jié)構(gòu)。此外,也不是就任何特定的編程語言對本發(fā)明的實施例進行說明。應(yīng)理解,可以使用各種編程語言來實現(xiàn)本公開的內(nèi)容。
機器可讀介質(zhì)包括以機器(例如計算機)可讀形式存儲或傳輸信息的任何機構(gòu)。例如,ROM、RAM、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存裝置、電、光、聲或其它形式的傳播信號(例如載波、紅外信號、數(shù)字信號等)等。
圖2A示出了多端口裝置201的實施例。在一個實施例中,多端口裝置是先進轉(zhuǎn)換部件,本文中稱為AS開關(guān)。AS是一種轉(zhuǎn)換構(gòu)造結(jié)構(gòu),支持包括熱添加/去除、冗余路徑以及構(gòu)造管理故障恢復(fù)等能力。而且,AS支持任何數(shù)量的端點裝置或節(jié)點之間的直接通信、計算機系統(tǒng)中任兩個節(jié)點之間的直接單播通信以及源節(jié)點和多個指定的目標節(jié)點之間的多播通信。多端口裝置201包括多個端口204和配置空間存儲器件203。配置空間存儲器件203存儲端口204的配置結(jié)構(gòu)。在一個實施例中,配置空間存儲器件203包括含有觸發(fā)器的寄存器。在AS開關(guān)的另一實施例中,配置空間存儲器件是動態(tài)RAM器件(DRAM)?;蛘?,可以使用軟件實現(xiàn)。例如,在一個實施例中,將配置空間存儲在由軟件定義的數(shù)據(jù)結(jié)構(gòu)中。
圖2B示出AS開關(guān)的配置能力結(jié)構(gòu)實施例。配置能力結(jié)構(gòu)200包括能力結(jié)構(gòu)210。在一個實施例中,能力結(jié)構(gòu)210存儲關(guān)于所有開關(guān)端口對于給定能力所描述的功能都共用的屬性的信息。存儲在能力結(jié)構(gòu)210中的信息的地址用相對于能力結(jié)構(gòu)210開始的偏移240來表示。在一個實施例中,能力結(jié)構(gòu)210在偏移00h存儲AS能力ID標題,在偏移04h存儲裝置能力寄存器,在偏移08h存儲裝置控制和狀態(tài),在偏移0Ch存儲路由標題修訂和端口計數(shù),在偏移10h存儲裝置序號,并在偏移18h存儲流控制不足超時。在一個實施例中,預(yù)留一部分配置空間供將來使用。例如,在圖2B中,偏移04h的裝置能力寄存器部分含有預(yù)留的位字段。
此外,能力結(jié)構(gòu)210存儲一組指針220。每個指針220指定到所支持的一個獨特AS開關(guān)端口。在一個實施例中,定義了8個指針,用于有8個端口的開關(guān)。在另一實施例中,定義了32個指針,用于有32個端口的開關(guān)。
在一個實施例中,提供了許多每端口能力結(jié)構(gòu)230。在一個實施例中,每端口能力結(jié)構(gòu)是一個數(shù)據(jù)結(jié)構(gòu),用于存儲表示端口所支持能力的可編程單元。存儲在每端口能力結(jié)構(gòu)230中的可編程單元按照能力來組織。例如,端口0支持鏈路能力,這是多端口裝置的數(shù)據(jù)鏈路所特有的能力,并且端口0的指針222指向?qū)?yīng)于端口0的每端口能力結(jié)構(gòu)232。每端口能力結(jié)構(gòu)232存儲鏈路能力的可編程單元,鏈路能力即鏈路狀態(tài)和鏈路控制。在其它實施例中,能力結(jié)構(gòu)230存儲其它所支持能力例如錯誤報告和虛擬多路傳輸?shù)目删幊虇卧?br>
而且,可以不必為支持同一能力的開關(guān)的每個端口定義單獨的能力結(jié)構(gòu)。在一個實施例中,開關(guān)的兩個端口基本上支持同一能力,所以這些端口的指針指向同一能力結(jié)構(gòu)。不需要為每個端口定義單獨的能力結(jié)構(gòu)節(jié)省了配置數(shù)據(jù)的存儲器。而且,指針簡化了裝置的配置,因為不需要為每個端口定義和維護一個單獨的能力結(jié)構(gòu)。
圖2C示出具有n個端口的AS開關(guān)的配置能力結(jié)構(gòu)202的另一實施例。配置能力結(jié)構(gòu)202存儲類似于圖2B中配置能力結(jié)構(gòu)200的AS開關(guān)屬性的信息。存儲在能力結(jié)構(gòu)210中的信息的地址用相對于能力結(jié)構(gòu)210開始的偏移240來表示。除了屬性信息外,能力結(jié)構(gòu)210存儲n個指針,為開關(guān)的每個端口存儲一個指針。指針221指定給端口0。端口0支持直接單播通信。所以,指針221指向存儲直接單播通信的可編程單元的能力結(jié)構(gòu)231。
在一個實施例中,在部件配置空間中有多個能力結(jié)構(gòu),例如2、5、8個等。圖3示出具有4個能力結(jié)構(gòu)310-313的開關(guān)的配置空間的實施例。能力結(jié)構(gòu)310-313排列在能力結(jié)構(gòu)列表300中。能力結(jié)構(gòu)存儲開關(guān)的屬性305和許多指針,為開關(guān)的每個端口存儲一個指針。例如,指針320用于端口0。
為建造圖3所示的能力結(jié)構(gòu)列表300,在一個實施例中,相對指針存儲在一個能力結(jié)構(gòu)中來指向第二個能力結(jié)構(gòu)。例如,相對指針320存儲在能力結(jié)構(gòu)310中來指向能力結(jié)構(gòu)311的先進轉(zhuǎn)換能力ID331。相對指針320存儲能力結(jié)構(gòu)310的地址與能力結(jié)構(gòu)311的地址之間的偏移。在一個實施例中,相對偏移存儲為8位值。在另一實施例中,使用絕對偏移代替相對偏移。絕對偏移表示配置空間開始地址和能力結(jié)構(gòu)311開始地址之間的差。所以,如果絕對偏移是8位,則能力結(jié)構(gòu)的最高地址限于配置空間的開始地址加上28,即加上256。換句話說,在使用8位的絕對偏移時,配置存儲空間限于256字節(jié)。該限制不適用于使用相對偏移的實施例,相對偏移表示兩個連續(xù)能力結(jié)構(gòu)之間的地址偏移。
如上所述,每個能力結(jié)構(gòu)具有一組指針,指定到開關(guān)的許多端口。每個指針指向存儲該端口所支持能力的可編程單元的每端口能力結(jié)構(gòu)。為了避免模糊圖3的實施例,僅示出一個指針322和一個能力結(jié)構(gòu)332來說明此概念。應(yīng)理解,每個能力結(jié)構(gòu)存儲一個或多個指針,并且每個指針指向一個相關(guān)的每端口能力結(jié)構(gòu)。而且,配置空間具有一個或多個能力結(jié)構(gòu)。例如,在圖3中,存儲在能力結(jié)構(gòu)312中的指針322指定給開關(guān)的端口i。指針322指向每端口能力結(jié)構(gòu)332,它存儲端口i的能力信息。
將附加能力結(jié)構(gòu)與指針相鏈接還提供了一種方便的途徑來支持開關(guān)的附加端口。代替為每個所支持的附加端口創(chuàng)建配置空間,只要將指定給附加端口的指針添加到能力結(jié)構(gòu)列表的能力結(jié)構(gòu)中的指針列表即可。當部件所支持的端口數(shù)超過當前能力結(jié)構(gòu)實現(xiàn)時,定義新版本的給定能力結(jié)構(gòu)來容納更高的端口計數(shù)是不值得的。
圖4示出用于配置多端口裝置的過程實施例的流程圖。該過程是通過處理邏輯進行的,處理邏輯可包括硬件(例如電路、專用邏輯等)、軟件(例如在通用計算機系統(tǒng)或?qū)S脵C器上運行的)或二者的組合。
在一個實施例中,多端口裝置具有n個端口。處理邏輯為多端口裝置創(chuàng)建配置空間(處理塊410)。處理邏輯還在配置空間中定義能力結(jié)構(gòu)。處理邏輯將多端口裝置的屬性存儲在能力結(jié)構(gòu)中(處理塊420)。處理邏輯在能力結(jié)構(gòu)中為多端口裝置的每個端口定義一個指針(處理塊430)。然后處理邏輯檢查存儲端口所支持能力的可編程單元的每端口能力結(jié)構(gòu)的配置空間(處理塊440)。如果這種能力結(jié)構(gòu)已存在于配置空間中,則處理邏輯設(shè)置指針指向這個每端口能力結(jié)構(gòu)(處理塊450)。否則,處理邏輯創(chuàng)建新的能力結(jié)構(gòu)來存儲該端口所支持能力的可編程單元(處理塊445),然后設(shè)置指針指向新的每端口能力結(jié)構(gòu)(處理塊450)。處理邏輯為另一端口重復(fù)指針的定義,必要時為該端口定義每端口能力結(jié)構(gòu),直到每個所支持的端口都定義有指針和每端口能力結(jié)構(gòu)。
在一個實施例中,處理邏輯在配置空間中創(chuàng)建附加的能力結(jié)構(gòu),以存儲多端口裝置所支持的附加特征或功能。處理邏輯通過存儲在前面能力結(jié)構(gòu)上的相對指針將附加的能力結(jié)構(gòu)鏈接到前面的能力結(jié)構(gòu)。所鏈接的能力結(jié)構(gòu)形成如圖3所示的能力結(jié)構(gòu)列表。能力結(jié)構(gòu)數(shù)在不同的實施例中各不相同,視多端口裝置和在給定多端口裝置上實現(xiàn)的端口數(shù)所支持的特征或功能數(shù)而定。
圖5示出計算機系統(tǒng)500的示范實施例。在一個實施例中,系統(tǒng)500采用先進轉(zhuǎn)換結(jié)構(gòu)。圖5中的系統(tǒng)500包括處理器510、存儲控制器集線器520、主存儲器530、先進轉(zhuǎn)換部件540(以下稱為“AS開關(guān)”)以及多個外圍部件550-553。處理器510、主存儲器530和AS開關(guān)540都連接到存儲控制器集線器520。外圍部件550-553連接到AS開關(guān)540。通過AS開關(guān)540,外圍部件550-553互相通信,以及與處理器510和主存儲器53通信。
圖5中的主存儲器530是機器可讀介質(zhì)的一個實例。業(yè)界一般技術(shù)人員應(yīng)該知道,存在機器可讀介質(zhì)的其它實施例。機器可讀介質(zhì)包括提供(即存儲和/傳輸)以機器(例如計算機、網(wǎng)絡(luò)裝置、個人數(shù)字助理、制造工具、具有一個或多個處理器的任何裝置等)可存取形式的信息的任何機構(gòu)。例如,機器可讀介質(zhì)包括可記錄/不可記錄介質(zhì)(例如只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存裝置等)以及電、光、聲或其它形式的傳播信號(例如載波、紅外信號、數(shù)字信號等)等。
在一個實施例中,主存儲器530存儲配置AS開關(guān)540的指令。AS開關(guān)540包括多個端口541-544。端口數(shù)在不同的實施例中各不相同。在一個實施例中,AS開關(guān)540有3個端口。在另一實施例中,AS開關(guān)540有8個端口。外圍部件連接到AS開關(guān)上的端口。例如,外圍部件0550連接到端口P0541。為了配置AS開關(guān)540,定義一個配置空間。在配置空間中創(chuàng)建能力結(jié)構(gòu)。將一組指針存儲在能力結(jié)構(gòu)中。每個指針指定到AS開關(guān)的一個端口。配置空間還包括許多能力結(jié)構(gòu),以存儲表示各種所支持能力的許多可編程單元。能力結(jié)構(gòu)中的可編程單元按照能力進行組織。能力結(jié)構(gòu)中用于AS開關(guān)端口的指針指向存儲表示該端口所支持能力的可編程單元的每端口能力結(jié)構(gòu)。
為了支持AS開關(guān)中的附加端口,只需要在能力結(jié)構(gòu)中定義附加指針即可。如果附加端口所支持能力的可編程單元已存儲在任一現(xiàn)有能力結(jié)構(gòu)中,則將附加指針設(shè)為指向現(xiàn)有能力結(jié)構(gòu)。否則,將附加能力結(jié)構(gòu)定義為存儲附加端口所支持能力的可編程單元,并將附加指針設(shè)為指向這些附加能力結(jié)構(gòu)。利用指針和能力結(jié)構(gòu)來配置開關(guān)的端口使配置具有靈活性,因為能很容易將指針添加到能力結(jié)構(gòu)中來支持附加端口,并且當一些端口基本上支持相同的能力時,能力結(jié)構(gòu)可以在指針之間共享。
上述討論僅說明了本發(fā)明的一些示范實施例。業(yè)界技術(shù)人員從上述討論、附圖和權(quán)利要求書中很容易認識到,在不背離權(quán)利要求書的精神和范圍的前提下可進行各種更改。所以本說明書應(yīng)認為是說明性的,而不是限制性的。
權(quán)利要求
1.一種配置多端口裝置的方法,包括定義第一多個指針,為所述多端口裝置的多個端口中的每個端口定義一個指針;以及將第一多個指針存儲在所述多端口裝置的一個或多個能力結(jié)構(gòu)中。
2.如權(quán)利要求1所述的方法,還包括將所述一個或多個能力結(jié)構(gòu)與第二多個指針耦合。
3.如權(quán)利要求2所述的方法,其中第二多個指針包括相對指針。
4.如權(quán)利要求1所述的方法,還包括將表示多個能力的多個可編程單元存儲在多個能力結(jié)構(gòu)中,其中所述可編程單元是按照能力來組織的;以及將第一多個指針中的每個指針指向所述多個能力結(jié)構(gòu)之一。
5.如權(quán)利要求4所述的方法,還包括如果所述多個端口中的兩個端口支持相同的能力,則將對應(yīng)于所述兩個端口的第一多個指針中的兩個指針指向所述多個能力結(jié)構(gòu)之一。
6.如權(quán)利要求1所述的方法,其中所述多端口裝置是先進轉(zhuǎn)換部件。
7.一種提供指令的機器可讀介質(zhì),如果所述指令由處理器執(zhí)行,則將使所述處理器執(zhí)行配置多端口裝置的操作,所述操作包括定義第一多個指針,為所述多端口裝置的多個端口中的每個端口定義一個指針;以及將第一多個指針存儲在所述多端口裝置的一個或多個能力結(jié)構(gòu)中。
8.如權(quán)利要求7所述的機器可讀介質(zhì),其中所述方法還包括將所述一個或多個能力結(jié)構(gòu)與第二多個指針耦合。
9.如權(quán)利要求8所述的機器可讀介質(zhì),其中第二多個指針包括相對指針。
10.如權(quán)利要求7所述的機器可讀介質(zhì),其中所述方法還包括將表示多個能力的多個可編程單元存儲在多個能力結(jié)構(gòu)中,其中所述可編程單元是按照能力來組織的;以及將第一多個指針中的每個指針指向所述多個能力結(jié)構(gòu)之一。
11.如權(quán)利要求7所述的機器可讀介質(zhì),其中所述多端口裝置是先進轉(zhuǎn)換部件。
12.一種設(shè)備,包括多個端口;以及存儲器件,存儲一個或多個能力結(jié)構(gòu),其中所述一個或多個能力結(jié)構(gòu)存儲第一多個指針,為所述多個端口中的每一個存儲一個指針。
13.如權(quán)利要求12所述的設(shè)備,其中所述一個或多個能力結(jié)構(gòu)通過第二多個指針彼此耦合。
14.如權(quán)利要求13所述的設(shè)備,其中第二多個指針包括相對指針。
15.如權(quán)利要求12所述的設(shè)備,其中所述存儲器件還存儲第二多個能力結(jié)構(gòu),以存儲表示多個能力的多個可編程單元,所述多個可編程單元是按照能力來組織的,并且第一多個指針中的每個指針指向第二多個能力結(jié)構(gòu)之一。
16.如權(quán)利要求15所述的設(shè)備,其中如果所述多個端口中的兩個端口支持相同的能力,則將對應(yīng)于所述兩個端口的第一多個指針中的兩個指針指向第二多個能力結(jié)構(gòu)之一。
17.如權(quán)利要求12所述的設(shè)備,其中所述多個端口包括一個或多個先進轉(zhuǎn)換端口。
18.一種計算機系統(tǒng),包括圖形芯片;以及多端口裝置,連接到所述圖形芯片,所述多端口裝置包括多個端口;以及存儲器件,存儲一個或多個能力結(jié)構(gòu),其中所述多個能力結(jié)構(gòu)存儲第一多個指針,為所述多個端口中的每一個存儲一個指針。
19.如權(quán)利要求18所述的計算機系統(tǒng),其中所述一個或多個能力結(jié)構(gòu)通過第二多個指針彼此耦合。
20.如權(quán)利要求19所述的計算機系統(tǒng),其中第二多個指針包括相對指針。
21.如權(quán)利要求18所述的計算機系統(tǒng),其中所述存儲器件還存儲第二多個能力結(jié)構(gòu),以存儲表示多個能力的多個可編程單元,所述多個可編程單元是按照能力來組織的,并且第一多個指針中的每個指針指向第二多個能力結(jié)構(gòu)之一。
22.如權(quán)利要求21所述的計算機系統(tǒng),其中如果所述多個端口中的兩個端口支持相同的能力,則將對應(yīng)于所述兩個端口的第一多個指針中的兩個指針指向第二多個能力結(jié)構(gòu)之一。
23.如權(quán)利要求18所述的計算機系統(tǒng),其中所述多個端口包括一個或多個先進轉(zhuǎn)換端口。
24.如權(quán)利要求18所述的計算機系統(tǒng),還包括處理器。
全文摘要
公開了配置多端口裝置的方法和設(shè)備。該方法包括定義第一組指針,為多端口裝置的每個端口定義一個指針,并將第一組指針存儲在多端口裝置的一個或多個能力結(jié)構(gòu)中。
文檔編號G06F9/445GK1860438SQ200480025748
公開日2006年11月8日 申請日期2004年9月3日 優(yōu)先權(quán)日2003年9月10日
發(fā)明者P·伊斯基延, J·謝菲爾, G·索洛蒙 申請人:英特爾公司