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