專利名稱:包括在向請求設備發(fā)送數據前預取所有數據的智能pci橋接的制作方法
背景技術:
許多計算機系統(tǒng)依賴于擴展總線來向整個系統(tǒng)添加功能。一般來說,附加的功能采取小型印刷電路板或其他類型的“卡”的形式,在這些印刷電路板或“卡”上有必要的組件,以允許主處理器與其他設備通信。例如,視頻卡、音頻卡和網絡接口卡都向系統(tǒng)提供附加的功能。卡可以經由擴展總線通信,而不是被包括在主系統(tǒng)總線上。
擴展總線一般是兩種類型之一,ISA(工業(yè)標準體系結構)總線或PCI(外圍組件互連)總線。ISA標準最初被使用,但隨著處理器速度增大變成了瓶頸。通常,大多數計算機系統(tǒng)現有都采用PCI總線,或者與PCI-X(擴展PCI)類似的總線。將PCI總線連接到主系統(tǒng)總線的設備通常被稱為PCI橋接器(PCI bridge)。
擴展卡通過擴展總線與CPU通信。當CPU需要擴展設備(例如網絡接口卡)發(fā)送數據時,它在存儲器中建立發(fā)送環(huán),以通過將數據描述符寫到發(fā)送環(huán)來將設備引導到要發(fā)送的數據。CPU隨后向系統(tǒng)存儲器中為將要發(fā)送數據的擴展設備建立的設備控制寄存器進行寫入。當CPU希望通知設備它的待處理任務時,它將通過PCI橋接器來完成這一操作。設備隨后在單次PCI事務(PCI突發(fā))中取得一個或多個描述符,然后一般一次一個分組,直到要發(fā)送的所有數據都被取得。設備隨后按照CPU的請求發(fā)送數據。
PCI橋接器可以在事務之前“提前讀”,或者從系統(tǒng)存儲器“預取(prefetch)”數據,其想法是使數據對于PCI橋接器處的設備可用而不是使其處于系統(tǒng)存儲器中,這將會使過程加速。不幸的是,橋接器對于要預取多少數據并沒有良好的估計。橋接器最后可能預取了太多數據,從而不得不丟棄數據。數據的預取占用了總線和橋接器,浪費任何預取的數據都會降低整體系統(tǒng)效率。
這可能導致PCI總線和設備上的負載較高,并且使通過接口傳輸的速度減慢。它還可能對系統(tǒng)存儲器施加高負載,這進而又會減慢CPU的有效速度。當其他擴展總線被添加到系統(tǒng)中時,該問題更為復雜。當系統(tǒng)中存在多個總線時,可能有在總線之間進行橋接的PCI橋接器。這類橋接器常被稱為PCI到PCI橋接器,或P2P橋接器。為了論述方便,術語PCI橋接器將既指PCI橋接器又指P2P橋接器。
通過參考附圖閱讀公開,將最好地理解本發(fā)明的實施例,附圖中圖1示出采用橋接器的系統(tǒng)體系結構的示例。
圖2示出在擴展總線事務周期期間采用橋接器的系統(tǒng)的簡化框圖。
圖3示出用于處理擴展總線事務的方法的實施例的流程圖。
圖4示出用于預取數據的方法的實施例的更詳細流程圖。
具體實施例方式
圖1示出使用擴展總線的系統(tǒng)的實施例。設備,例如18,駐留在擴展總線上,以向系統(tǒng)添加更多功能和特征。橋接設備14提供系統(tǒng)中央處理單元10與擴展總線17上的設備之間的通信。橋接器可以駐留在擴展總線和本地系統(tǒng)總線15兩者之上,或者它可駐留在兩個擴展總線之間。橋接器例如可以是數字信號處理器、通用處理器或專用集成電路(ASIC)。所有這些以及其他示例在這里將被稱為“處理元件”。
在任何一種情況下,橋接器將會具有端口144,以允許它在擴展總線17上通信,并且具有另一個端口142,以允許它在系統(tǒng)總線15上或另一個擴展總線(未示出)上通信。在一個實施例中,系統(tǒng)是用擴展設備18作為網絡接口卡的網絡設備。中央處理單元可能具有它希望在網絡上發(fā)送的數據。該發(fā)送操作可能是CPU10和設備18之間的事務的主題。
一般來說,為了輔助該事務,橋接器可以設立一個預取過程,以使得數據更為迅速地接近擴展設備。但是,目前預取過程依賴于對需要多少數據的預測,這是因為目前沒有用于將事務需要多少數據告知橋接設備的裝置。這引起了對預取過程進行適應性修改以克服這種知識缺乏。美國專利申請No.10/742,185(代理案卷號2705-306)中闡述的一種這樣的過程使用了智能丟棄方法。
智能丟棄方法是必要的,因為橋接器可能將數據預取到橋接器中,然后使之變得陳舊。陳舊數據是未反映系統(tǒng)存儲器中對數據進行的改變的數據。陳舊數據的出現部分是因為橋接器不知道要預取多少數據。預取一般是從擴展設備進行讀事務的結果。
事務的一個示例在圖2中示出。必須注意,為了論述方便,該圖已被簡化,并且任何排序都只是出于相同的原因。本發(fā)明的實施例也適用于其他順序。CPU10是將會包括系統(tǒng)存儲器12的系統(tǒng)塊的一部分。CPU10將一系列描述符塊寫入存儲器的預定區(qū)域中,例如圖1的區(qū)域120。這些描述符塊描述了要發(fā)送的數據,例如要發(fā)送的數據的每個部分的地址和大小。CPU隨后對擴展設備進行寫入,以請求擴展設備在網絡上發(fā)送數據。
橋接器14隨后將寫傳遞到擴展設備18,在本實施例中,該設備18是網絡接口卡,例如以太網或其他協(xié)議接口卡。擴展設備隨后發(fā)出讀請求以取得描述符塊。橋接器將該請求傳遞到系統(tǒng),但也要注意橋接器應當分析來自存儲器的該部分的響應。橋接器擁有關于存儲器的哪些部分被用于描述符塊的知識,因此當針對存儲器的該部分內的地址的讀請求經過橋接器時,橋接器將該請求識別為可能需要預取過程的請求。
關于特定擴展設備使用的描述符塊的知識通常將會在設備初始化時被配置到橋接器中。允許設備與外部設備通信的軟件(即設備驅動器)將會利用允許橋接器識別針對描述符塊的讀請求的信息對橋接器進行配置。該信息可以是描述符地址空間、描述符大小、緩沖器地址和分組長度的偏移,以及結束地址。本質上,必要信息是描述符所駐留的位置,以及橋接器在描述符塊中的什么位置能夠找到要發(fā)送的數據的長度、描述符的長度以及要發(fā)送的特定分組的地址。
當描述符塊被從系統(tǒng)存儲器讀取并經過橋接器時,橋接器將會把它們發(fā)送到擴展設備。此外,橋接器解析描述符以定位要發(fā)送的分組的大小,其在這里被稱為分組長度或發(fā)送大小,并且定位分組數據的位置,或者要發(fā)送的數據的地址。通知橋接器要被設備操作的數據的位置和大小的這種數據在這里將被稱為描述符數據。橋接器隨后將描述符數據存儲在橋接器上的表或其他本地存儲器中。
存儲在表中可能會包括存儲在散列表中。散列表使用較短的地址,通常是完整地址的最后一個或兩個字節(jié)。這允許了橋接器對數據進行更快速的索引,以定位所需的數據。如果多個描述符被取得,則所有的描述符地址都被優(yōu)化和存儲,以便更快地訪問。接收到其描述符塊的擴展設備隨后發(fā)送針對該數據的讀請求。
現在,橋接器通過用讀請求中的數據地址作為關鍵字搜索散列表以找出相應的描述符數據并確定發(fā)送大小,然后取得所請求的數據以及預取擴展設備的所有必要數據,來對該請求作出響應。橋接器可以基于讀請求或者甚至在讀請求之前預取數據。
例如,假定分組長度是128字節(jié),并假定設備一次只能讀32字節(jié),這對應于PCI規(guī)范中的“突發(fā)長度”。當設備作出讀前32字節(jié)的請求時,橋接器可以預取全部128字節(jié)。橋接器從散列表獲知分組的完整大小。來自設備的對于分組的剩余3組32字節(jié)的請求可以在不去往系統(tǒng)存儲器的情況下由橋接器遞送,這是因為它已經預取了128字節(jié)的完整分組。
橋接器可以在第一請求之前開始預取,但是這個方案管理起來可能稍微困難一點,并且橋接器必須更為智能。兩種方案都是可能的,并且都包括在本發(fā)明的范圍內。
允許橋接器擁有預取所需數據(而不是導致數據丟棄的較多數據,或者要求更多次數據來取回所需數據的較少數據)所需要的知識,提高了系統(tǒng)的效率。橋接器處的過程的實施例在圖3中以流程圖形式示出。
在20處,橋接器接收來自擴展設備的讀請求。這是由到擴展設備的CPU寫入觸發(fā)的讀請求。在22處,讀請求被發(fā)往系統(tǒng)存儲器中預定具有描述符地址的部分。在24處,包括描述符數據的描述符塊在橋接器處被接收。在26處,橋接器解析描述符數據以識別數據傳輸的大小。
在28處,描述符數據隨后被存儲在散列表存儲器中。如果在36處存儲器已滿(這種情況不太可能發(fā)生,但在高容量、多信道設備中也是可能發(fā)生的),那么在38處,最舊的描述符被丟棄,并且空間被重新用于新的描述符。該過程的另一個優(yōu)點是存儲有描述符數據的表只需要被訪問一次。然后它就可以被釋放以便其他設備或過程訪問它。
在丟棄最舊條目的替換方案中,橋接器可以跟蹤數據的狀態(tài)。橋接器可能能夠確定設備是否已經消耗了與特定描述符相關聯(lián)的所有數據。如果數據已經被消耗,則它可以被標記為“已用”數據,或者被沖掉。
在取得描述符之后,在30處,擴展設備嘗試通過橋接器從系統(tǒng)存儲器讀取分組,以便將其發(fā)送出去。在31處,橋接器掃描地址以查明它是否落在描述符地址空間中。如果是的話,則過程返回22。否則,橋接器掃描散列表以查找該地址。
如果在散列表中未找到匹配,橋接器就表現得像標準橋接器那樣,基于緩存行(cacheline)大小和PCI命令來預取數據。如果找到匹配,橋接器就知道設備正在嘗試訪問分組以便發(fā)送。橋接器從散列表中得知分組大小并預取整個分組。在32處,橋接器開始從系統(tǒng)存儲器預取數據。橋接器知道發(fā)送大小具有若干個益處。一旦橋接器擁有了其對于特定預取過程所需的所有數據,在34處,橋接器就可以與系統(tǒng)總線斷開連接或者與橋接器的系統(tǒng)總線一側的擴展總線斷開連接,并且保持連接到其上駐留著擴展設備的擴展總線。這減小了系統(tǒng)或系統(tǒng)側總線的負載。
目前,如果接近CPU的橋接器在傳送完整分組之前中斷事務,則設備必須重新發(fā)起對剩余數據的請求。在本發(fā)明的實施例中,橋接器確切知道設備對多少數據感興趣,并且能夠在沒有來自設備的請求的情況下預取剩余數據,如39處所示。當設備重新連接并重新發(fā)起請求時,橋接器可以在本地處理該請求,從而避免返回CPU所涉及的開銷和延遲。
如上所述,數據預取可能具有過程的幾個部分。當讀請求進入橋接器時,在圖4的40處,橋接器訪問來自表的描述符數據,并確定發(fā)送數據大小。同樣如上所述,該信息可能采取描述符數據中分組長度所在的偏移長度的形式。
在42處,針對特定大小的讀請求被發(fā)往系統(tǒng)存儲器。在PCI系統(tǒng)中,讀請求可以是存儲器讀(MR)、存儲器讀行(MRL)或者存儲器讀多行(MRM)。MR通常是4字節(jié)數據,這也是描述符塊的典型長度,MRL是針對緩存行大小的,其中緩存行大小是在橋接器被初始化時配置的。MRM是針對緩存行大小的某個倍數的。當不論哪種大小的數據返回到橋接器時,在44處,數據隨后被發(fā)送到擴展設備。
這樣,在系統(tǒng)總線上的開銷最小的情況下,擴展設備接收它請求的數據,例如要在網絡上發(fā)送的數據。此外,數據是在預取過程中浪費很少的情況下被獲取的。預取過程減小了系統(tǒng)總線的負載。這里所闡述的預取過程的實施例避免了可能伴隨上述某些預取過程發(fā)生的浪費和效率低下。
從而,雖然到此為止已經描述了用于利用擴展總線和橋接器提高系統(tǒng)效率的方法和裝置的特定實施例,但是并不希望這種具體提及被視為對本發(fā)明的范圍的限制,本發(fā)明的范圍僅由所附權利要求書所限。
權利要求
1.一種設備,包括第一端口,用于允許所述設備與擴展總線上的其他設備通信;第二端口,用于允許所述設備與第二總線上的設備通信;存儲器,用于存儲數據;以及處理元件,用于接收來自擴展設備的對系統(tǒng)存儲器的預定區(qū)域的讀請求;將所述讀請求發(fā)送到所述系統(tǒng)存儲器;接收來自所述系統(tǒng)存儲器的描述符數據;解析來自所述系統(tǒng)存儲器的所述描述符數據以確定數據大??;從所述系統(tǒng)存儲器預取具有所述數據大小的數據。
2.如權利要求1所述的設備,所述存儲器還包括散列表,其中存儲了從所述描述符數據解析出的分組地址和長度。
3.如權利要求1所述的設備,所述第二總線還包括系統(tǒng)總線。
4.如權利要求1所述的設備,所述第二總線還包括擴展總線。
5.如權利要求1所述的設備,所述設備還包括網絡設備。
6.如權利要求1所述的設備,所述設備還包括專用集成電路。
7.如權利要求1所述的設備,所述擴展設備還包括網絡接口卡。
8.一種處理總線事務的方法,包括接收來自擴展設備的對系統(tǒng)存儲器的預定區(qū)域的讀請求;將所述讀請求發(fā)送到所述系統(tǒng)存儲器;接收來自所述系統(tǒng)存儲器的描述符數據;解析所述描述符數據以識別數據大小;從所述系統(tǒng)存儲器預取具有所述數據大小的數據。
9.如權利要求8所述的方法,所述方法還包括將從所述描述符數據得出的數據大小和數據地址存儲在散列表中。
10.如權利要求8所述的方法,預取數據還包括接收來自所述擴展設備的讀請求;識別讀地址不屬于系統(tǒng)存儲器的預配置區(qū)域;訪問來自在散列表中找到的描述符數據的發(fā)送大??;向所述系統(tǒng)存儲器發(fā)出讀請求,其中所述讀請求具有基于所述發(fā)送大小的請求大??;以及將響應于對所述系統(tǒng)存儲器的讀請求而接收到的數據發(fā)送到所述擴展設備。
11.如權利要求8所述的方法,所述方法還包括一旦從所述系統(tǒng)存儲器接收到數據就與所述系統(tǒng)存儲器斷開連接。
12.如權利要求8所述的方法,所述方法還包括如果所述擴展設備斷開連接則存儲對于讀請求剩余的任何預取的數據。
13.如權利要求10所述的方法,訪問所述發(fā)送大小還包括訪問其內存儲有所述描述符數據的散列表,所述描述符數據包括分組地址和長度。
14.如權利要求8所述的方法,所述方法還包括在可編程量的時間之后丟棄未發(fā)送到擴展設備的任何預取的數據。
15.如權利要求9所述的方法,所述方法還包括確定存儲描述符的存儲器已滿;以及丟棄最舊的描述符條目。
16.一種設備,包括用于允許所述設備與擴展總線上的其他設備通信的裝置;用于允許所述設備與第二總線上的設備通信的裝置;用于存儲數據的裝置;以及用于執(zhí)行以下操作的裝置接收來自擴展設備的對系統(tǒng)存儲器的預定區(qū)域的讀請求;將所述讀請求發(fā)送到所述系統(tǒng)存儲器;接收來自所述系統(tǒng)存儲器的描述符數據;解析來自所述系統(tǒng)存儲器的所述描述符數據以確定數據大??;從所述系統(tǒng)存儲器預取具有所述數據大小的數據。
17.如權利要求16所述的設備,所述用于存儲的裝置還包括散列表,其中存儲了從所述描述符數據解析出的分組地址和長度。
18.如權利要求16所述的設備,所述設備還包括網絡設備。
19.如權利要求16所述的設備,所述設備還包括專用集成電路。
20.如權利要求16所述的設備,所述擴展設備還包括網絡接口卡。
21.一種包含指令的機器可讀代碼的物品,所述指令在被執(zhí)行時使得所述機器執(zhí)行以下操作接收來自擴展設備的對系統(tǒng)存儲器的預定區(qū)域的讀請求;將所述讀請求發(fā)送到所述系統(tǒng)存儲器;接收來自所述系統(tǒng)存儲器的描述符數據;解析所述描述符數據以識別數據大??;從所述系統(tǒng)存儲器預取具有所述數據大小的數據。
22.如權利要求21所述的物品,所述指令還使得所述機器將所述描述符數據存儲在本地存儲器中。
23.如權利要求21所述的方法,所述使得所述機器預取數據的指令還使得所述機器執(zhí)行以下操作接收來自所述擴展設備的讀請求;訪問來自描述符數據的發(fā)送大小;向所述系統(tǒng)存儲器發(fā)出讀請求,其中所述讀請求具有基于所述發(fā)送大小的請求大??;以及將響應于對所述系統(tǒng)存儲器的讀請求而接收到的數據發(fā)送到所述擴展設備。
24.如權利要求21所述的物品,所述指令還使得所述機器一旦從所述系統(tǒng)存儲器接收到數據就與所述系統(tǒng)存儲器斷開連接。
25.如權利要求21所述的物品,所述指令還使得所述機器在所述擴展設備斷開連接的情況下存儲對于讀請求剩余的任何預取的數據。
26.如權利要求23所述的物品,所述使得所述機器訪問所述發(fā)送大小的指令還使得所述機器訪問其內存儲有每組數據的描述符數據的散列表,所述描述符數據包括描述符、分組長度和地址。
27.如權利要求21所述的物品,所述指令還使得所述機器在可編程量的時間之后丟棄未發(fā)送到擴展設備的任何預取的數據。
28.如權利要求21所述的物品,所述指令還使得所述機器執(zhí)行以下操作確定存儲描述符的存儲器已滿;以及丟棄最舊的描述符條目。
全文摘要
一種橋接設備具有至少兩個端口。第一端口允許設備與擴展總線上的設備通信,至少一個其他端口允許橋接器與系統(tǒng)總線上的系統(tǒng)存儲器或另一擴展總線上的其他設備通信。設備能夠識別存儲器中的至少兩個區(qū)域描述符區(qū)域和數據區(qū)域。描述符提供關于數據區(qū)域中的數據片段的信息。橋接器可以檢測從存儲器讀取的描述符,提取關于與這些描述符相關聯(lián)的數據的信息,并利用該信息來執(zhí)行從系統(tǒng)存儲器預取數據。
文檔編號G06F13/40GK1922591SQ200580005669
公開日2007年2月28日 申請日期2005年1月24日 優(yōu)先權日2004年3月1日
發(fā)明者烏達亞庫馬·西尼瓦薩恩, 薩姆佩斯·霍薩哈里·庫瑪, 達塔提·N·瑪塔爾, 瑪杜胡卡·勞, 阿沛·烏吉瓦·博霍卡 申請人:思科技術公司