專利名稱:數(shù)據(jù)讀取方法以及相關的計算機系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及一種數(shù)據(jù)讀取方法,特別涉及一種可避免過多的數(shù)據(jù)包標頭以提高傳輸效率的數(shù)據(jù)讀取方法。
背景技術:
一般來說,在一計算機系統(tǒng)中或計算機系統(tǒng)之間,可以藉由不同方式來傳送數(shù)據(jù),在某些系統(tǒng)中,將數(shù)據(jù)集合起來當作數(shù)據(jù)包來傳送。例如,周邊組件互連(Peripheral Component Interconnect Express,PCI Express)就是一種可將數(shù)據(jù)數(shù)據(jù)包化再加以傳送的協(xié)議,但無論使用何種協(xié)議,數(shù)據(jù)包的傳送都需要某種程度的額外負擔(overhead)。
舉例來說,某些種類的數(shù)據(jù)包需要標頭(header),來記載與內容及/或數(shù)據(jù)包的要求者相關的信息。就PCI Express來說,來自PCI Express端點裝置的一個讀取要求數(shù)據(jù)包被分成多筆處理要求(8QW or 4QW alignmenttransactions),來檢測(shoop)CPU及/或由系統(tǒng)存儲器(DRAM)中讀取數(shù)據(jù)。由CPU或系統(tǒng)存儲器所回傳的每一個數(shù)據(jù)區(qū)段D1~DN,都會被封裝成一回傳的傳輸層數(shù)據(jù)包PKT1~PKTN,再經(jīng)由鏈接層(data link layer)與實體層(physical layer),傳送到PCI Expres s端點裝置,如圖1中所示。然而,此種方法將會產(chǎn)生過多的數(shù)據(jù)包標頭H1~HN,使得數(shù)據(jù)傳送的效能減少,且數(shù)據(jù)包返回的延遲(Non-Posted round-trip Latency)增加。
發(fā)明內容
有鑒于此,本發(fā)明的首要目的,在于避免過多的數(shù)據(jù)包標頭,以提高傳輸效率。
為實現(xiàn)上述目的,本發(fā)明提供一種數(shù)據(jù)讀取方法,應用于符合PCI-Express協(xié)議的一計算機系統(tǒng),計算機系統(tǒng)具有一總線耦接至一端點裝置(endpoint),本方法包括根據(jù)來自端點裝置的一讀取要求,取得一第一數(shù)據(jù)。然后,于一傳送等待周期時,由第一數(shù)據(jù)中,取出符合一第一數(shù)據(jù)長度的數(shù)據(jù),再包裝符合第一數(shù)據(jù)長度的數(shù)據(jù)至一傳輸層數(shù)據(jù)包中,且將傳輸層數(shù)據(jù)包的長度由一預設長度修改為第一數(shù)據(jù)長度,其中第一數(shù)據(jù)長度大于預設長度,且傳送等待周期系發(fā)生于總線被占用時、回傳的數(shù)據(jù)順序產(chǎn)生錯亂時或目前總線上正傳輸屬于其它虛擬通道的數(shù)據(jù)包時。
根據(jù)上述目的,本發(fā)明還提供一種機器可讀取儲存介質,用以儲存一計算機程序,該計算機程序用以執(zhí)行一數(shù)據(jù)讀取方法,應用于符合PCI-Express協(xié)議的一計算機系統(tǒng),計算機系統(tǒng)具有一總線耦接至一端點裝置,其數(shù)據(jù)讀取方法包括下列步驟,包括根據(jù)來自上述端點裝置的一讀取要求,取得一第一數(shù)據(jù)。然后,于一傳送等待周期時,由第一數(shù)據(jù)中,取出符合一第一數(shù)據(jù)長度的數(shù)據(jù),再包裝符合第一數(shù)據(jù)長度的數(shù)據(jù)至一傳輸層數(shù)據(jù)包中,且將傳輸層數(shù)據(jù)包的長度由一預設長度改為第一數(shù)據(jù)長度,其中第一數(shù)據(jù)長度大于預設長度,且傳送等待周期發(fā)生于總線被占用時、回傳的數(shù)據(jù)順序產(chǎn)生錯亂時或目前總線上正傳輸屬于其它虛擬通道的數(shù)據(jù)包時。
根據(jù)上述目的,本發(fā)明還提供一種計算機系統(tǒng),符合PCI-Express協(xié)議,該計算機系統(tǒng)包括一PCI-Express總線;一端點裝置,耦接PCI-Express總線;一橋接單元,藉由PCI-Express總線耦接至端點裝置,用以根據(jù)來自端點裝置的一讀取要求,取得一第一數(shù)據(jù),并且于一傳送等待周期時,由第一數(shù)據(jù)中,取得符合一第一數(shù)據(jù)長度的一數(shù)據(jù),再包裝符合第一數(shù)據(jù)長度的數(shù)據(jù)至一傳輸層數(shù)據(jù)包中,且將傳輸層數(shù)據(jù)包的長度由一預設長度改為第一數(shù)據(jù)長度,再將傳輸層數(shù)據(jù)包傳送至端點裝置,其中第一數(shù)據(jù)長度大于預設長度,且傳送等待周期系發(fā)生于PCI-Express總線被占用時、回傳的數(shù)據(jù)順序產(chǎn)生錯亂(out of order)時或目前總線上正傳輸屬于其它虛擬通道的數(shù)據(jù)包時。
為了使本發(fā)明的上述和其它目的、特征、和優(yōu)點能更明顯易懂,下文特舉一較佳實施例,并結合附圖詳細說明如下。
圖1一已知傳輸層數(shù)據(jù)包。
圖2A為本發(fā)明的計算機系統(tǒng)的一實施例。
圖2B為本發(fā)明的計算機系統(tǒng)的又一實施例。
圖2C為本發(fā)明的計算機系統(tǒng)的再一實施例。
圖3為本發(fā)明的數(shù)據(jù)讀取方法的一流程圖。
圖4為本發(fā)明的傳輸層數(shù)據(jù)包。
圖5表示依據(jù)本發(fā)明實施例的數(shù)據(jù)讀取方法的計算機可讀取儲存介質示意圖。
附圖符號說明PKT0~PKTN、PKT1a、PKT1b傳輸層數(shù)據(jù)包;H1~HN、HD1、HD1a、HD1b標頭;D1~DN、D10~D1n、D20~D2n數(shù)據(jù)區(qū)段;200A~200C計算機系統(tǒng);210中央處理單元;220橋接單元;230系統(tǒng)存儲器;241、243端點裝置;250PCI Express總線;261~263總線;270芯片組;Q1、Q2隊列;500儲存介質;520計算機程序。
具體實施例方式
圖2A為本發(fā)明的計算機系統(tǒng)的一實施例。如圖所示,計算機系統(tǒng)200A包括一中央處理單元(CPU)210、一橋接單元220、一系統(tǒng)存儲器230、二端點裝置(endpoint)241與243以及一PCI Express總線250。中央處理單元210藉由一總線261耦接至橋接單元220,而系統(tǒng)存儲器230藉由一總線263耦接至橋接單元220。
舉例來說,橋接單元220可為一PCI Express的根裝置(root device),而端點裝置241與243可為PCI Express外圍裝置,例如含有以太網(wǎng)絡(Gigabit Ethernet)或圖形加速卡(Accelerated Graphics Port)的I/O裝置。于本實施例中,橋接單元220為一北橋芯片組,而系統(tǒng)存儲器230可為一動態(tài)隨機存取存儲器(DRAM),但非用以限定本發(fā)明。
圖3所示為本發(fā)明的數(shù)據(jù)讀取方法的步驟流程圖。首先,當橋接單元220收到來自端點裝置241或243的傳輸層數(shù)據(jù)包(transaction layer packet;TLP)時,則將接收到的傳輸層數(shù)據(jù)包放入一要求隊列(TLP request queue)Q1中,如步驟S300。舉例來說,橋接單元220將端點裝置241或243所發(fā)出的傳輸層數(shù)據(jù)包依序放入隊列Q1;于本實施例中,數(shù)據(jù)包TLP1由端點裝置241所發(fā)出,且數(shù)據(jù)包TLP1含有一讀取要求。
接著,于步驟S302中,橋接單元220由要求隊列Q1中,提出(pop)一傳輸層數(shù)據(jù)包,例如數(shù)據(jù)包TLP1。于是橋接單元220會根據(jù)數(shù)據(jù)包TLP1中的讀取要求,產(chǎn)生多筆處理要求(8QW or 4QW alignment transactions)來檢測(snoop)一中央處理器210及/或讀取一系統(tǒng)存儲器230以取得一TLP1所要求的數(shù)據(jù),并將取得的數(shù)據(jù)放入一隊列(TLP tracking queue)Q2中。舉例來說,若數(shù)據(jù)包TLP1要求讀取一段16QW數(shù)據(jù)長度的數(shù)據(jù),橋接單元220則產(chǎn)生一第一處理要求用以取得8QW數(shù)據(jù)長度的數(shù)據(jù),以及一第二處理要求去取得其余8QW數(shù)據(jù)長度的數(shù)據(jù)?;蛘呤钦f,橋接單元220可產(chǎn)生四個處理要求,分別用以取得4QW數(shù)據(jù)長度的數(shù)據(jù)。
一般來說,每一筆處理要求都會去檢測(snoop)中央處理單元210,若中央處理單元210儲存有所需的數(shù)據(jù)區(qū)段,則直接取得所需的數(shù)據(jù)區(qū)段,不再去讀取系統(tǒng)存儲器230;若中央處理單元210沒有所需的數(shù)據(jù)區(qū)段,則再由系統(tǒng)存儲器230中取得所需的數(shù)據(jù)區(qū)段。
例如,橋接單元220系根據(jù)數(shù)據(jù)包TLP1中的讀取要求,產(chǎn)生多筆處理要求,由中央處理器210或系統(tǒng)存儲器230取得對應的數(shù)據(jù)區(qū)段D10~D1n并放入隊列(TLP tracking queue)Q2,而TLP1所要求的數(shù)據(jù)系由數(shù)據(jù)區(qū)段D10~D1n所組成。其中每一數(shù)據(jù)區(qū)段D10~D1n具有一預設長度,例如8QW(quad word)的數(shù)據(jù)長度。此外,橋接單元220可再根據(jù)數(shù)據(jù)包TLP2中的讀取要求,由中央處理器210或系統(tǒng)存儲器230取得由數(shù)據(jù)區(qū)段(D20~D2n)所組成的數(shù)據(jù),并放入隊列Q2。同樣地,橋接單元220可再根據(jù)其它數(shù)據(jù)包TLP3~TLPn,由中央處理器210或系統(tǒng)存儲器230取得由多數(shù)據(jù)區(qū)段所組成的所需的數(shù)據(jù),并放入隊列Q2。
再者,于步驟S304中,若橋接單元210根據(jù)數(shù)據(jù)區(qū)段D10欲產(chǎn)生回傳數(shù)據(jù)包至端點裝置241,而PCI Express總線被閑置時,橋接單元210則直接將數(shù)據(jù)片段D10,包裝成符合PCI Express協(xié)議的一傳輸層數(shù)據(jù)包PKT0(如圖4中所示),并傳送至端點裝置241。一般來說,傳輸層數(shù)據(jù)包PKT0除了真實的數(shù)據(jù)D10之外,還包含有一標頭HD1用以記載數(shù)據(jù)包中的數(shù)據(jù)長度(length)、訊息型式(message type)、數(shù)據(jù)要求者編號(requestor ID)…等信息。由于傳輸層數(shù)據(jù)包PKT0僅包括數(shù)據(jù)段D10,所以標頭HD1中所記載的數(shù)據(jù)長度就是數(shù)據(jù)區(qū)段D10的數(shù)據(jù)長度,即預設長度。
再者,步驟S306中,若橋接單元210根據(jù)數(shù)據(jù)區(qū)段D10,欲于一傳送等待周期,產(chǎn)生回傳數(shù)據(jù)包至端點裝置241時,橋接單元210由第一數(shù)據(jù)D10~D1n中,取出符合一第一數(shù)據(jù)長度的數(shù)據(jù),再包裝符合第一數(shù)據(jù)長度的數(shù)據(jù)至一傳輸層數(shù)據(jù)包中,且將數(shù)據(jù)包的長度由一預設長度修改為第一數(shù)據(jù)長度,并將此傳輸層數(shù)據(jù)包傳送至端點裝置241。一般來說,傳送等待周期發(fā)生于總線250被下行數(shù)據(jù)包(downstream TLP)或鏈接層數(shù)據(jù)包(data linklayer package;DLLP)占用時、由中央處理單元210回傳的數(shù)據(jù)順序產(chǎn)生錯亂時或目前位于總線250的數(shù)據(jù)包屬于其它虛擬信道(與第一數(shù)據(jù)所屬信道不同)時,例如第一數(shù)據(jù)屬于一第一虛擬信道,而目前總線250正在傳送的數(shù)據(jù)包并不屬于第一虛擬通道。
舉例來說,橋接單元210將數(shù)據(jù)區(qū)段D10~D12包裝至一傳輸層數(shù)據(jù)包PKT1a(如圖4中所示)中,并將傳輸層數(shù)據(jù)包PKT1a的標頭HDa所記載的數(shù)據(jù)長度修改成數(shù)據(jù)區(qū)段D10~D12的總長度,然后將數(shù)據(jù)包傳PKT1a傳送至端點裝置241。或者是說,橋接單元210將數(shù)據(jù)區(qū)段D10~D14包裝至一傳輸層數(shù)據(jù)包PKT1b中并將傳輸層數(shù)據(jù)包PKT1b的標頭HDb所記載的數(shù)據(jù)長度改為數(shù)據(jù)區(qū)段D10~D14的總長度。
也就是說,于本發(fā)明中橋接單元210根據(jù)是否發(fā)生傳送等待周期,重復步驟S304與S306,將根據(jù)同一讀取要求所取得的數(shù)據(jù)區(qū)段D10~D1n,包裝成多傳輸層數(shù)據(jù)包PKT0、PKT1a或PKT1b,并將這些數(shù)據(jù)包傳送至端點裝置241。
要注意的是,傳輸層數(shù)據(jù)包PKT1a或傳輸層數(shù)據(jù)包PKT1b中的數(shù)據(jù)長度系大于預設長度(即傳輸層數(shù)據(jù)包PKT0的數(shù)據(jù)長度),但傳輸層數(shù)據(jù)包PKT1a或傳輸層數(shù)據(jù)包PKT1b中的數(shù)據(jù)量不能大于PCI-Express協(xié)議的最大負載容量(Maximum Payload Size)。
于本實施例中,橋接單元210將3個數(shù)據(jù)區(qū)段或5個數(shù)據(jù)區(qū)段,包裝至傳輸層數(shù)據(jù)包PKT1a或傳輸層數(shù)據(jù)包PKT1b中,但并非用以限定本發(fā)明,在不超過PCI Express協(xié)議的最大負載容量的情況下,傳輸層數(shù)據(jù)包PKT1a或傳輸層數(shù)據(jù)包PKT1b可包含更多的數(shù)據(jù)區(qū)段。
已知技術中,由CPU或系統(tǒng)存儲器(DRAM)所回傳的每一個數(shù)據(jù)區(qū)段,都會被封裝成一具有標頭的傳輸層數(shù)據(jù)包。而在本發(fā)明的數(shù)據(jù)讀取方法中,數(shù)個數(shù)據(jù)區(qū)段可包裝一個數(shù)據(jù)包中,且使用同一個標頭(header),因此可避免過多的數(shù)據(jù)包標頭,以提高總線的傳輸效率。
圖2B為根據(jù)本發(fā)明的計算機系統(tǒng)的另一實施例。圖2B所示的計算機系統(tǒng)200B與圖2A所示的計算機系統(tǒng)200A相似,除了系統(tǒng)存儲器230藉由總線263耦接至中央處理單元210并非橋接單元220。
圖2B所示的計算機系統(tǒng)200B亦可實行前述的數(shù)據(jù)讀取方法,即橋接單元210于總線250被下行數(shù)據(jù)包(downstream TLP)或鏈接層數(shù)據(jù)包(DLLP)占用時、由中央處理單元210回傳的數(shù)據(jù)順序產(chǎn)生錯誤時或目前位于其它虛擬通道時(與第一數(shù)據(jù)所屬信道不同),將根據(jù)同一讀取要求所取得的數(shù)據(jù)區(qū)段,包裝成多不同大小的傳輸層數(shù)據(jù)包,并將這些數(shù)據(jù)包傳送至同一個端點裝置,于此不再累述。
圖2C為本發(fā)明的計算機系統(tǒng)的又一實施例。圖2C所示的計算機系統(tǒng)200C與圖2A所示的計算機系統(tǒng)200A相似。其中中央處理單元210藉由總線261耦接至芯片組270,例如北橋芯片組,系統(tǒng)存儲器230藉由總線262耦接至芯片組270,橋接單元220藉由總線263耦接至芯片組270。
于此實施例中,橋接單元220為一PCI Express橋接器(PCI Expressswitch)。同樣地,圖2C所示的計算機系統(tǒng)200C亦可實行前述的數(shù)據(jù)讀取方法,即橋接單元220于總線250被下行數(shù)據(jù)包(downstream TLP)或鏈接層數(shù)據(jù)包(DLLP)占用時、由中央處理單元210回傳的數(shù)據(jù)順序產(chǎn)生錯誤時或目前位于其它虛擬通道時(與第一數(shù)據(jù)所屬信道不同),將根據(jù)同一讀取要求所取得的數(shù)據(jù)區(qū)段,包裝成多不同大小的傳輸層數(shù)據(jù)包,并將這些數(shù)據(jù)包傳送至同一個端點裝置,于此不再累述。
圖5表示依據(jù)本發(fā)明實施例的數(shù)據(jù)讀取方法的計算機可讀取儲存介質示意圖。此儲存介質500,用以儲存一計算機程序520,用以實現(xiàn)前述數(shù)據(jù)讀取方法。
因此,藉由本發(fā)明所提供的數(shù)據(jù)讀取方法,可解決數(shù)據(jù)包傳送的缺點,用以減少數(shù)據(jù)包的標頭數(shù)目,更有效地提升數(shù)據(jù)傳輸效率以及總線的使用率。
雖然本發(fā)明已以較佳實施例披露如上,然其并非用以限定本發(fā)明,本領域的技術人員在不脫離本發(fā)明的精神和范圍的前提下可作若干的更動與潤飾,因此本發(fā)明的保護范圍以本發(fā)明的權利要求為準。
權利要求
1.一種數(shù)據(jù)讀取方法,應用于符合PCI-Express協(xié)議的一計算機系統(tǒng),上述計算機系統(tǒng)具有一總線耦接至一端點裝置,其數(shù)據(jù)讀取方法包括下列步驟,包括根據(jù)來自上述端點裝置的一讀取要求,取得一第一數(shù)據(jù);于一傳送等待周期時,由上述第一數(shù)據(jù)中,取出符合一第一數(shù)據(jù)長度的數(shù)據(jù),再包裝符合上述第一數(shù)據(jù)長度的上述數(shù)據(jù)至一傳輸層數(shù)據(jù)包中,且將上述傳輸層數(shù)據(jù)包的長度由一預設長度改為上述第一數(shù)據(jù)長度,其中上述第一數(shù)據(jù)長度系大于上述預設長度。
2.如權利要求1所述的數(shù)據(jù)讀取方法,其中上述數(shù)據(jù)讀取方法中,含有上述第一數(shù)據(jù)的上述傳輸層數(shù)據(jù)包藉由上述總線的一第一虛擬通道來傳送,且上述傳送等待周期是發(fā)生于上述總線被占用時、回傳的數(shù)據(jù)順序產(chǎn)生錯亂時或目前位于上述總線的數(shù)據(jù)包不屬于上述第一虛擬通道時。
3.如權利要求1所述的數(shù)據(jù)讀取方法,其中上述數(shù)據(jù)讀取方法還包括根據(jù)來自上述端點裝置的一讀取要求,產(chǎn)生多筆處理要求來檢測一中央處理器及/或讀取一系統(tǒng)存儲器,以取得上述第一數(shù)據(jù);以及將上述第一數(shù)據(jù)放入一隊列中。
4.如權利要求1所述的數(shù)據(jù)讀取方法,其中上述符合第一數(shù)據(jù)長度的數(shù)據(jù)不大于PCI-Express協(xié)議的最大負載容量。
5.如權利要求1所述的數(shù)據(jù)讀取方法,其中上述數(shù)據(jù)讀取方法還包括將上述傳輸層數(shù)據(jù)包傳送至上述端點裝置。
6.如權利要求1所述的數(shù)據(jù)讀取方法,其中上述數(shù)據(jù)讀取方法還包括于上述總線未被占用時,由上述第一數(shù)據(jù)中,取得符合上述預設長度的一數(shù)據(jù)片段,包裝成一傳輸層數(shù)據(jù)包并傳送至上述端點裝置。
7.如權利要求6所述的數(shù)據(jù)讀取方法,其中符合上述第一數(shù)據(jù)長度的上述數(shù)據(jù)是由符合上述預設長度的多數(shù)據(jù)片段所組成。
8.一種計算機系統(tǒng),符合PCI-Express協(xié)議,包括一PCI-Express總線;一端點裝置,耦接上述PCI-Express總線;一橋接單元,藉由上述PCI-Express總線耦接至上述端點裝置,且根據(jù)來自上述端點裝置的一讀取要求,取得一第一數(shù)據(jù),并且于一傳送等待周期時,由上述第一數(shù)據(jù)中,取得符合一第一數(shù)據(jù)長度的一數(shù)據(jù),再包裝上述符合第一數(shù)據(jù)長度的數(shù)據(jù)至一傳輸層數(shù)據(jù)包中,且將上述傳輸層數(shù)據(jù)包的長度由一預設長度改為上述第一數(shù)據(jù)長度,再將上述傳輸層數(shù)據(jù)包傳送至上述端點裝置,其中上述第一數(shù)據(jù)長度大于預設長度。
9.如權利要求8所述的計算機系統(tǒng),其中含有上述第一數(shù)據(jù)的上述傳輸層數(shù)據(jù)包藉由上述總線的一第一虛擬通道來傳送,且上述傳送等待周期發(fā)生于上述PCI-Express總線被占用時、所回傳的數(shù)據(jù)順序產(chǎn)生錯亂時或目前位于上述總線的數(shù)據(jù)包不屬于上述第一虛擬通道時。
10.如權利要求9所述的計算機系統(tǒng),其中上述橋接單元根據(jù)來自上述端點裝置的一讀取要求,產(chǎn)生多筆處理要求來檢測一中央處理器及/或讀取一系統(tǒng)存儲器以取得上述第一數(shù)據(jù),并且將上述第一數(shù)據(jù)放入一隊列中。
11.如權利要求9所述的計算機系統(tǒng),其中上述符合第一數(shù)據(jù)長度的數(shù)據(jù)不大于PCI-Express協(xié)議的最大負載容量。
12.如權利要求9所述的計算機系統(tǒng),其中上述橋接單元還于上述總線未被占用時,由上述第一數(shù)據(jù)中,取得符合上述預設長度的一數(shù)據(jù)片段,包裝成一傳輸層數(shù)據(jù)包并傳送至上述端點裝置。
13.如權利要求9所述的計算機系統(tǒng),其中上述符合上述數(shù)據(jù)長度的數(shù)據(jù)由符合上述預設長度的多數(shù)據(jù)片段所組成。
14.一種機器可讀取儲存介質,用以儲存一計算機程序,該計算機程序用以執(zhí)行如權利要求1-7所述的數(shù)據(jù)讀取方法。
全文摘要
一數(shù)據(jù)讀取方法,應用于符合PCI-Express協(xié)議的一計算機系統(tǒng),計算機系統(tǒng)具有一總線耦接至一端點裝置,其數(shù)據(jù)讀取方法包括下列步驟,包括根據(jù)來自上述端點裝置的一讀取要求,取得一第一數(shù)據(jù)。然后,于一傳送等待周期時,由第一數(shù)據(jù)中,取出符合一第一數(shù)據(jù)長度的數(shù)據(jù),再包裝符合第一數(shù)據(jù)長度的數(shù)據(jù)至一傳輸層數(shù)據(jù)包中,且將傳輸層數(shù)據(jù)包的長度由一預設長度改為第一數(shù)據(jù)長度,其中第一數(shù)據(jù)長度大于預設長度,且傳送等待周期是發(fā)生于總線被占用時、回傳的數(shù)據(jù)順序產(chǎn)生錯亂時或目前總線上正傳輸屬于其它虛擬通道的數(shù)據(jù)包時。
文檔編號H04L12/56GK1697425SQ20051007793
公開日2005年11月16日 申請日期2005年6月15日 優(yōu)先權日2005年6月15日
發(fā)明者王惟林, 李瑞釗, 蘇耀群 申請人:威盛電子股份有限公司