專利名稱:用于分組信息的多種壓縮技術(shù)的制作方法
用于分組信息的多種壓縮技術(shù)
背景技術(shù):
在目前的計算機架構(gòu)中,應用帶寬的需求成指數(shù)地增長。對于存儲器和輸入/輸 出(IO)子系統(tǒng)來說都是如此。此外,近期發(fā)現(xiàn),因為工程以及產(chǎn)業(yè)帶來的挑戰(zhàn),在現(xiàn)有互連 上支持這種帶寬的指數(shù)增長變得日益困難。在即將出現(xiàn)的幾代已知的快速外圍部件互連(PCIe )互連技術(shù)的可用速度中可 以看到該趨勢的例子。具體地說,對于將要出現(xiàn)的PCIe 3. 0代的發(fā)信號速度,期望帶寬從 目前的PCIe 2. 0代的級別(每秒5. 0千兆傳輸(GT/s))翻倍,所述PCIe 2. 0代的級別是 跟據(jù)PCI Express 規(guī)范基礎(chǔ)規(guī)范版本2. 0 (2007年1月17日公布)(下文稱為PCIe 規(guī) 范)的。但是,由于工程上的挑戰(zhàn),產(chǎn)業(yè)上通過采用較慢(S.OGT/s vs. 10. OGT/s)的速度并 且不執(zhí)行8b/10b編碼來進行折衷,從而達到接近10. OGT/s的帶寬。為了使得技術(shù)能夠跟 上行業(yè)帶寬需求的步伐,需要各種技術(shù)。一種技術(shù)是壓縮。這些年來,壓縮已經(jīng)被成功地用于各種互連系統(tǒng)。但是,這些已 知的壓縮技術(shù)可能遇到復雜性和開銷成本的問題,這減小了它們的效用。
圖1是根據(jù)本發(fā)明的一個實施例的分組的框圖。圖2提供了根據(jù)本發(fā)明的實施例的、在壓縮之前和之后的示例性分組頭部。圖3是根據(jù)本發(fā)明的實施例的半導體設(shè)備的一部分的框圖。圖4是根據(jù)本發(fā)明的一個實施例的頭部壓縮引擎的框圖。圖5是根據(jù)本發(fā)明的實施例的用于執(zhí)行頭部壓縮的流程圖。圖6是根據(jù)本發(fā)明的實施例的用于數(shù)據(jù)分組的壓縮方法的流程圖。圖7是根據(jù)本發(fā)明的實施例的系統(tǒng)的框圖。
具體實施例方式在各種實施例中,可以通過提供壓縮技術(shù)來改進穿過互連(例如,根據(jù)第二代或 第三代PCIe 或其它這種協(xié)議的PCIe 互連)的數(shù)據(jù)傳輸。在許多實現(xiàn)中,不同的技術(shù)可 以用于壓縮分組的頭部和數(shù)據(jù)部分。具體地說,可以利用頭部和數(shù)據(jù)的不同特性以應用適 當?shù)膲嚎s技術(shù)。對于典型的點對點(PtP)互連,分組的頭部部分的各個組成部分保持不變。 例如在PCIe 頭部中,時間代碼(TC)、事務層分組(TLP)摘要(TD)、屬性(Attr)、AT、長度、 請求者ID、標簽、BE和地址部分的高位比特對于來自PCIe 終端上的代理的一系列請求保 持不變。實施例可以利用比特的該共性。應當理解,雖然本文關(guān)于PCIe 實現(xiàn)進行了描述, 但是實施例可以應用到其它互連技術(shù)中??梢栽谑聞諏?在接收端和發(fā)送端)提供存儲裝置以存儲分組頭部。在一個實施 例中,對于可以接收的最常見的請求類型,事務層的每個發(fā)送機和接收機端可以維護一存 儲裝置(例如,4個雙字(DW),其中DW是4個字節(jié)或32比特)。經(jīng)驗數(shù)據(jù)表明,大多數(shù)(例 如,> 90% )的請求類型可以來自于少數(shù)的幾種類型(例如,非郵遞(non-posted,NP)讀取請求、存儲器讀取(MRd)、郵遞(posted)存儲器寫入(MWr)或數(shù)據(jù)結(jié)束(CPLD))。每個這 種存儲裝置可以包括多個條目(例如,每個條目4個DW),以保持一請求類型的最近接收的 分組的所有頭部比特的副本。此外,可以提供分組匹配邏輯。對于發(fā)送端事務層,該邏輯可以對將被發(fā)送的分組 頭部的每一個字節(jié)執(zhí)行比較(可以將存儲裝置中所存儲的字節(jié)初始化為全0),并且準備一 比特矢量,其包括關(guān)于與(該類型的)先前分組的字節(jié)相匹配的字節(jié)的信息。因此,基于該 比較,可以準備一比特矢量。該矢量(例如,16比特)跟蹤哪些字節(jié)與先前發(fā)送的同一類型 的分組上的相同位置處的字節(jié)成功地匹配。注意,比較可以在不同的粒度上執(zhí)行,例如,在 多于一個字節(jié)的級別上執(zhí)行。例如,可以比較8對兩個字節(jié)(2B)的頭部部分,并且替代地 發(fā)送8比特的矢量,從而提供更好的比較,其代價是找到匹配的概率更低。在分組傳輸期間,該比特矢量隨后被附加到分組上(例如,作為前綴)。在另一個 變形中,在分組的物理層字段中的比特可以指示頭部是否攜帶了該比較矢量。對于實現(xiàn)了 少量壓縮的情況,這有助于最小化比較矢量的開銷,下文將進一步描述。作為一個示例,后 面的變形有助于在同一類型的兩個后續(xù)請求之間發(fā)現(xiàn)很少共性的情況下,最小化開銷?,F(xiàn)在參照圖1,示出了根據(jù)本發(fā)明的一個實施例的分組的框圖。雖然本文結(jié)合第三 代PCIe 分組進行描述,但是應當理解,實施例可以應用于任何基于分組的通信方案。如圖 1所示,分組10包括多個部分,包括頭部和數(shù)據(jù)部分。部分20和70可以對應于鏈路和物 理層頭部,并且可以包括各種信息,例如預定的編碼、長度值、校驗和值和序列值,所有這些 都可以被并入到第一部分20中。此外,循環(huán)冗余校驗和(CRC)部分可以出現(xiàn)在最末端部分 70中。在這兩個頭部部分之間,如本文所描述的比較矢量30 (并且在各個實施例中,所述矢 量可以是2字節(jié)部分)可以為頭部的壓縮提供根據(jù)。類型部分40可以指示分組的類型,并 且其可以由接收機用于確定從中可以獲得所存儲的分組頭部的適當?shù)拇鎯彌_器。在此之 后,可以提供壓縮的頭部部分50。取決于到達的分組頭部和對應的所存儲的分組頭部之間 的共性的數(shù)量,在PCIe 實現(xiàn)中,該頭部可以在0到16字節(jié)之間。在該頭部部分之后,可以 提供數(shù)據(jù)有效負載部分60。如本文所討論的,可以根據(jù)不同的壓縮技術(shù)來壓縮該有效負載 部分。雖然在圖1的實施例中顯示了該特定實現(xiàn),但是本發(fā)明的范圍并不限于此。不從發(fā)射機向接收機發(fā)送與比較矢量中的顯示邏輯值“ 1,,的位置相對應的頭部字 節(jié),因此減少了要發(fā)送的頭部的數(shù)量。取而代之的是,接收機端邏輯保持同一類型的先前請 求的副本,并且使用比較矢量根據(jù)所存儲的副本來恢復缺少的字節(jié)。因此對于分組重建,接 收機端事務層接收壓縮的頭部,并且通過檢查比較矢量以及根據(jù)其存儲裝置中所存儲的最 近發(fā)送的分組頭部的副本來獲取“缺少的/未發(fā)送的”字節(jié),從而重建分組頭部。使用本發(fā)明的實施例,可以實現(xiàn)對分組的頭部部分的可變數(shù)量的壓縮?,F(xiàn)在參照 圖2,示出了根據(jù)本發(fā)明的實施例的,在壓縮前和壓縮后的示例性的TLP頭部。如圖2所示, 頭部100 (其可以是存儲器讀取(MemRd)分組類型)可以具有TLP頭部部分104,它是三個 雙字(S卩,12字節(jié))。此外,存在鏈路和物理層頭部102,以及結(jié)尾的鏈路和物理層頭部部分 106。如圖所示,壓縮后頭部分組10(Τ包括比特矢量103,其識別所述分組的頭部部分與所 存儲的同一類型的最近發(fā)送的分組(即,最近的MemRd分組)的頭部之間的共性。之后是 頭部部分104,其包括這兩個頭部的非匹配部分。如圖所示,實現(xiàn)了 4個字節(jié)的縮減。類似地,可以針對其它分組類型實現(xiàn)壓縮節(jié)省。如圖2所示,存儲器寫入頭部(Memffr)包括TLP頭部部分124,它是4個雙字(S卩,16字節(jié))寬。此外還包括鏈路和物理層 頭部122和126以及數(shù)據(jù)部分128。如在壓縮的頭部部分12(Τ中所示,存在比特矢量123, 其使得能夠發(fā)送縮減的頭部部分124。在所示的示例中,發(fā)送5個字節(jié)的頭部部分,而不是 分組120的16個字節(jié)的頭部部分,從而節(jié)省了帶寬。在分組的末端還顯示了填充字節(jié)127。 雖然示出了這些特定的例子,但是本發(fā)明的范圍并不限于此。實施例可以被結(jié)合到許多不同的互連類型中。現(xiàn)在參照圖3,示出了根據(jù)本發(fā)明的 實施例的半導體設(shè)備的一部分的框圖,例如處理器、芯片組、外圍設(shè)備等,其經(jīng)由鏈路(例 如,PCIe 鏈路)進行通信。如圖3所示,可以從設(shè)備的邏輯接收分組緩沖器205中的用于 穿過鏈路275(例如,PtP鏈路)來傳輸?shù)氖聞眨谝恍崿F(xiàn)中,其可以是先入先出(FIFO) 緩沖器。雖然為了便于說明顯示為單個緩沖器,但是應當理解,在不同的實施例中,針對不 同的頭部類型以及不同的數(shù)據(jù)類型,可以提供多個這種緩沖器。到來的事務可以被提供到 事務層210,并且更具體地說是提供給輸入邏輯212,其可以執(zhí)行各種功能,例如在多個這 種事務之間進行仲裁以及在傳輸之前準備分組。輸入邏輯212可以向一個或多個壓縮引擎 (例如,頭部壓縮邏輯214和數(shù)據(jù)壓縮邏輯216)提供各種信息。這是由于在分組的頭部和 數(shù)據(jù)部分中存在不同類型的信息,所以可以使用不同的壓縮技術(shù)。當已經(jīng)執(zhí)行了適當?shù)膲?縮方法時(當允許時),壓縮的信息可以被提供到分組生成邏輯218,其可以根據(jù)壓縮的信 息產(chǎn)生分組。然后,分組可以被輸出到鏈路和物理層250,其可以包括輸入邏輯252、壓縮邏 輯254,在各個實施例中,其可以是可選的、用于對分組的鏈路和物理層頭部部分執(zhí)行壓縮 的引擎。最后,在模擬前端(AFE) 256 (在一個實施例中,其可以連接到物理層)中調(diào)節(jié)之后, 分組可以被沿著鏈路275發(fā)送。雖然為了便于說明示出了這些高級的視圖,但是應當理解, 在特定的實現(xiàn)中可以存在另外的邏輯和結(jié)構(gòu)。類似的電路存在于從鏈路275起的接收方向 中,以使得到來的分組在鏈路和物理層250中被處理并且被提供到事務層210以便進一步 處理,其中包括解包邏輯224,以及使用解壓縮邏輯226和228對頭部和數(shù)據(jù)部分進行解壓 縮,所述解壓縮邏輯226和228用于如上所述對頭部和數(shù)據(jù)部分進行解壓縮?,F(xiàn)在參照圖4,示出了根據(jù)本發(fā)明的一個實施例的頭部壓縮引擎的更多細節(jié)。如 圖4所示,事務層300可以包括各種部件,其中包括壓縮引擎340。到來的頭部可以被存儲 在各個FIFO中,每一個FIFO與最常見類型的要發(fā)送的分組相關(guān)聯(lián)。即,非郵遞頭部緩沖器 305、郵遞頭部緩沖器310和結(jié)束(CPL)頭部緩沖器315可以輸出要被提供到仲裁器320的 頭部,所述仲裁器在這些不同的分組類型之間進行仲裁,并且向頭部壓縮邏輯350提供獲 勝的分組,在頭部壓縮邏輯350中,頭部被提供到比較和壓縮邏輯355,其可以是字節(jié)比較 器以將到來的頭部與對應的同一類型的所存儲的頭部進行比較。更具體地說,頭部緩沖器 360可以包括多個條目,每一個條目存儲了給定分組類型的最近的頭部。如圖4所示,這種 條目可以包括最近的存儲器讀取和寫入頭部、最近的結(jié)束頭部、最近的配置讀取和寫入頭 部以及最近的IO讀取和寫入頭部。注意,頭部緩沖器360被不斷地用剛剛接收到的分組頭 部來更新(即,所存儲的分組頭部被替換)。雖然在圖4的實施例中示出了這些特定的示 例,但是在其它實施例中,可以存儲另外的或不同的頭部。比較和壓縮邏輯355可以生成比較矢量,其可以是兩個字節(jié),以覆蓋多達16字節(jié) 的頭部信息,其中每個比特對應于一個字節(jié)的比較,其中,邏輯1電平指示匹配并且邏輯0 電平指示不匹配?;谠摫容^矢量和頭部信息,分組形成邏輯350可以根據(jù)該信息和數(shù)據(jù)(如果有的話)來形成分組。因此,僅發(fā)送頭部的那些不同的部分(即,對應于邏輯0的部 分)。此外,壓縮引擎邏輯340還可以輸出類型指示符以指示與頭部相對應的分組的類型。此外,在一些情況下,控制器(例如,控制邏輯370)可以限制壓縮的量以符合分組 對齊要求,例如,對于PCIe 來說,所有分組是4字節(jié)的倍數(shù)。在要求頭部分組是4DW的實 施例中,可以選擇某些字節(jié)不被壓縮。假設(shè)13個字節(jié)顯示了匹配(字節(jié)0從不被壓縮),那 么得到的頭部分組將具有1字節(jié)的分組類型加上2字節(jié)的頭部,再加上2個字節(jié),該2個字 節(jié)沒有發(fā)現(xiàn)匹配,從而總共是5個字節(jié)。作為替代,另外三個字節(jié)可以被未壓縮地發(fā)送(任 意三個),以使得得到的分組是8個字節(jié)(或2個雙字)。注意,在各種實施例中,或者經(jīng)由 控制邏輯370作為壓縮引擎340的一部分,或者與其相分離,一控制器可以確定是否應允許 或禁止壓縮。也就是說,如果基于多個比較,確定壓縮沒有提高性能(即,由于在分組之間 相對較少的共性),那么可以禁止由壓縮引擎340執(zhí)行壓縮。這可以基于根據(jù)現(xiàn)行狀況的對 正傳輸?shù)臄?shù)據(jù)的使用和壓縮比監(jiān)視。注意,獨立的數(shù)據(jù)路徑可以從數(shù)據(jù)緩沖器320和325向數(shù)據(jù)壓縮邏輯335提供數(shù) 據(jù),其中,如果允許的話可以對數(shù)據(jù)應用不同的壓縮技術(shù)。然后,(可能的)壓縮數(shù)據(jù)被發(fā) 送到分組形成邏輯350,在該處,形成完整的分組并且輸出到例如鏈路層。雖然在圖4的實 施例中示出了該特定的實現(xiàn),但是在其它實施例中,其它電路和邏輯可以被用于執(zhí)行壓縮?,F(xiàn)在參照圖5,示出了用于執(zhí)行根據(jù)本發(fā)明的實施例的頭部壓縮的流程圖。如圖5 所示,可以在發(fā)射機的事務層中執(zhí)行方法400。方法400可以以接收第一分組類型作為開始 (框410)。然后,確定是否允許分組壓縮。如果不允許,那么分組頭部可以被發(fā)送(框415) 并且方法結(jié)束。否則,控制轉(zhuǎn)到框430,其中,將分組頭部與同一分組類型的所存儲的分組頭部進 行比較。如上所述,該存儲的分組頭部可以存在于事務層的頭部緩沖器中。然后,可以基于 比較來生成比較矢量。如上所述,在一個實現(xiàn)中,可以生成一比特矢量,其中,每個比特具有 用于指示兩個頭部的對應字節(jié)之間的匹配的第一值,以及用于指示不匹配的第二值。接下 來,可以確定所述比較矢量是否指示完全匹配(框450)。如果指示完全匹配,那么可以只發(fā) 送比較矢量,而不發(fā)送任何分組頭部(框460)。否則,控制轉(zhuǎn)到菱形框470,其中,確定是否 存在至少部分的匹配。如果存在部分的匹配,那么可以發(fā)送所述比較矢量和分組頭部的不 匹配部分(框480)。相反,如果頭部的各個部分都不匹配,那么控制轉(zhuǎn)到框490,其中,比較 矢量和完整的分組頭部都被發(fā)送。雖然在圖5的實施例中示出了該特定實現(xiàn),但是本發(fā)明 的范圍并不限于此。應當理解,解壓縮可以以大致相反的方式發(fā)生,以使得比較矢量被用于 獲得給定類型的所存儲的分組頭部,并且對于頭部的沒有被發(fā)送的任何匹配的部分,所存 儲的頭部緩沖器可以用于重建期望的頭部部分。注意,在發(fā)射和接收的情況下,到來的分組 都被存儲在頭部緩沖器中以便將來進行比較。數(shù)據(jù)中的可變性遠大于在頭部分組中的可變性。對于這種表面上看來隨機的數(shù) 據(jù),可以使用更高級的壓縮技術(shù)。基于字典的壓縮方法使用符號(通常為字節(jié))的頻率來 產(chǎn)生信息的更有效的編碼(在該情況下是數(shù)據(jù)比特)。一種壓縮技術(shù)是霍夫曼(Huffman) 算法,其用于無損的數(shù)據(jù)通信。Huffman算法假定數(shù)據(jù)集中的符號的頻率已經(jīng)被預先計算。 該算法的一種變形(稱為自適應Huffman算法)在發(fā)射機和接收機兩端都連續(xù)地建立所傳 送和所發(fā)送的符號的頻率表。
用已經(jīng)被發(fā)送的每一個符號(例如,符號可以是字節(jié))的頻率來更新已經(jīng)被發(fā)送 的分組的頻率表??梢源鎯σ魂嚵校浠陬l率為每一個符號定義了可變長度代碼(對于 更頻繁使用的符號定義更短的代碼),在每個分組傳輸之后進行重建??梢杂糜布韺崿F(xiàn)基 于Huffman算法的壓縮邏輯。這種實現(xiàn)可以包括基于在頻率表中所反映的符號的頻率來建 立編碼陣列。在各個實施例中,可以采用自適應Huffman算法的變形來壓縮分組的數(shù)據(jù)部分。 也就是說,可以較不頻繁地建立Huffman樹(每“N”個分組一次,其中N是通過軟件設(shè)置的 可編程的值)。在一些實施例中,N可以在100到1000之間,雖然本發(fā)明的范圍并不限于 此。通過這樣做,能夠建立高延時的流水線以計算Huffman樹。也可以使用替代的壓縮技術(shù)。在一個實施例中,可以僅將16個最常用的符號編 碼。例如,僅用5個比特來編碼00、01、03、04"*(^,8卩,0之后跟隨實際的二進制表示。剩余 的240個符號可以被編碼在9個比特中,“1”之后跟隨8個比特的表示。還可能有其它實 現(xiàn)。如上所述,對于數(shù)據(jù)部分,可以使用與上述用于頭部的基于比特矢量的壓縮技術(shù) 不同的壓縮技術(shù)。現(xiàn)在參照圖6,示出了根據(jù)本發(fā)明的實施例的、用于分組的數(shù)據(jù)部分的壓 縮方法的流程圖。如圖6所示,方法500可以在接收到分組的數(shù)據(jù)部分時開始(框510)。 基于分組中的符號(例如,字節(jié)),可以更新壓縮引擎(例如,圖3的數(shù)據(jù)壓縮邏輯)的頻率 表(框520)。在一些實施例中,頭部壓縮、數(shù)據(jù)壓縮和鏈路層分組壓縮(例如,PCIe 中的 信用(credit)和確認分組)可以使用類似的基于字典的壓縮技術(shù)。在這種實施例中,每個 分組類型的頻率表是獨立的。然后,可以確定從壓縮引擎的結(jié)構(gòu)的最近更新起,所接收到的數(shù)據(jù)部分的數(shù)量是 否已經(jīng)達到閾值(菱形框530)。如果沒有達到閾值,那么可以使用基于邏輯壓縮的符號編 碼來對數(shù)據(jù)部分進行編碼,并且發(fā)送所述數(shù)據(jù)部分(框540)。相反,如果在菱形框530處確定數(shù)據(jù)部分的數(shù)量達到閾值,那么控制轉(zhuǎn)移到框 550,其中,可以基于頻率表中的符號的頻率來更新壓縮引擎的編碼。然后控制轉(zhuǎn)移到框 540,如上所述,在框540可以使用更新后的編碼來壓縮數(shù)據(jù)部分并且相應地發(fā)送。因此,實施例提供了頻率表的“緩慢更新”,其對壓縮的效率只有很少影響。在使用 PCIe 數(shù)據(jù)通信的示例性實施例中,使用如本文所描述的緩慢更新技術(shù),基本上不會導致壓 縮效率的任何損失。在一個實施例中,如果大約每100個分組建立一次陣列,那么可以實現(xiàn) 良好的帶寬減少。雖然上述實施例是關(guān)于Huffman和修改的自適應Huffman算法的,但是其它實現(xiàn) 可以使用另外的基于字典和頻率的算法。因此,在各個實施例中,對結(jié)構(gòu)和相對可重復的分 組頭部的先驗知識使得能夠經(jīng)由頭部的比特矢量來使用高度壓縮,并且替代地可以對分組 的數(shù)據(jù)部分使用基于字典加頻率的算法。對數(shù)據(jù)壓縮的選擇算法可以基于實現(xiàn)的方便性。關(guān)于分組的校驗和部分,因為CRC比特的幾乎隨機的特性,所以對這種部分進行 壓縮可能會沒有太多益處。事實上,自適應Huffman算法的性能會受到影響,因為它扭曲了 數(shù)據(jù)有效負載的符號的分布,并且不能在易發(fā)生錯誤的互連上發(fā)送壓縮的CRC。因此,在各 個實施例中,校驗和中的比特的頻率分布不應當與數(shù)據(jù)有效負載的頻率分布合并。由于校 驗和信息的開銷小,一些實現(xiàn)可以選擇不壓縮校驗和信息,或者可以為該信息提供單獨的
8壓縮引擎。類似地,信用分組可以具有獨立的壓縮引擎和頻率表。在一些實施例中,可以基 于針對頭部壓縮所描述的比特矢量技術(shù)來壓縮信用分組。通過將用于分組的頭部和數(shù)據(jù)部分的單獨的方案進行組合,可以實現(xiàn)高度的壓 縮。該方案減少了帶寬,并且因此使得有機會在給定的頻率獲得帶寬或者減少從一代互連 到下一代互連在頻率上的遞增的改變。在一些實現(xiàn)中,在TLP帶寬中的減少可以大約是 50-60%。當對于客戶端應用頭部通信量占主導時,單個應用可以達到多達2倍的帶寬減 少。但是,數(shù)據(jù)部分的可變編碼也提供了顯著的優(yōu)點,這在服務器應用中可能更為顯著。由 于通過互連通道來發(fā)送更少的數(shù)據(jù),所以實施例還可以減少動態(tài)功率。因此,當產(chǎn)業(yè)標準保 持在第二代或第三代速度(5. OGT/s或者8. OGT/s)時,使用本發(fā)明的實施例的平臺能夠以 少量的額外邏輯提供更高的帶寬。實施例可以實現(xiàn)為許多不同的系統(tǒng)類型?,F(xiàn)在參照圖7,示出了根據(jù)本發(fā)明的實施 例的系統(tǒng)的框圖。如圖7所示,多處理器系統(tǒng)600是點對點互連系統(tǒng),并且包括經(jīng)由點對點 互連650耦合的第一處理器670和第二處理器680。如圖7所示,處理器670和680中的每 一個可以是多核處理器,它們包括第一和第二處理器核心(即,處理器核心674a和674b,以 及處理器核心684a和684b)。仍然參照圖7,第一處理器670還包括存儲器控制器中心(MCH) 672和點對點 (P-P)接口 676和678。類似地,第二處理器680包括MCH 682和P-P接口 686和688。如 圖7所示,MCH 672和682將處理器耦合到各自的存儲器,即,存儲器632和存儲器634,它 們可以是本地地連接到相應的處理器的主存儲器(例如,動態(tài)隨機存取存儲器(DRAM))的 多個部分。第一處理器670和第二處理器680可以分別經(jīng)由P-P互連652和654耦合到芯 片組690。如圖7所示,芯片組690包括P-P接口 694和698。注意,一個或多個部件可以 包括根據(jù)本發(fā)明的一個實施例的壓縮電路,從而執(zhí)行如本文所描述的分組頭部和有效負載 壓縮。此外,芯片組690包括接口 692,以將芯片組690與高性能圖形引擎638耦合。繼 而,芯片組690可以經(jīng)由接口 696耦合到第一總線616。如圖7所示,各種I/O設(shè)備614連 同總線橋618可以耦合到第一總線616,所述總線橋618將第一總線616耦合到第二總線 620。各種設(shè)備可以耦合到第二總線620,它們包括例如鍵盤/鼠標622、通信設(shè)備626和數(shù) 據(jù)存儲單元628,例如磁盤驅(qū)動器或其它大容量存儲設(shè)備,其在一個實施例中可以包括代碼 630。此外,音頻I/O 624可以耦合到第二總線620。實施例可以實現(xiàn)為代碼,并且可以存儲在其上存儲有指令的存儲介質(zhì)中,所述指 令可以用于對系統(tǒng)進行編程以執(zhí)行所述指令。存儲介質(zhì)可以包括但并不限于任何類型的 盤片,包括軟盤、光盤、固態(tài)驅(qū)動器(SSD)、光盤只讀存儲器(CD-ROM)、可重寫光盤(CD-RW) 和磁光盤、半導體設(shè)備,例如只讀存儲器(ROM)、隨機存取存儲器(RAM),例如動態(tài)隨機存取 存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、可擦除可編程只讀存儲器(EPROM)、閃存存儲 器、電可擦除可編程只讀存儲器(EEPROM)、磁卡或光卡,或者適合于存儲電子指令的任何其 它類型的介質(zhì)。雖然參照有限數(shù)量的實施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將會想到它們 的多種變型和改變。應由所附權(quán)利要求覆蓋落入本發(fā)明的真實精神和范圍內(nèi)的所有這種變 型和改變。
權(quán)利要求
一種方法,包括將輸入到發(fā)射機的分組的分組頭部與存儲的分組頭部進行比較,所述存儲的分組頭部對應于與從所述發(fā)射機發(fā)送的所述分組類型相同的在先分組;基于所述比較生成比較矢量;以及如果所述分組頭部與所述存儲的分組頭部相匹配,那么從所述發(fā)射機發(fā)送不帶有所述分組頭部的所述分組。
2.根據(jù)權(quán)利要求1所述的方法,還包括與所述分組一起發(fā)送所述比較矢量。
3.根據(jù)權(quán)利要求2所述的方法,還包括與所述分組一起發(fā)送所述分組頭部的一部分, 其中,所述部分不同于所述存儲的分組頭部的對應的部分。
4.根據(jù)權(quán)利要求2所述的方法,還包括基于與多個比較相關(guān)聯(lián)的閾值,禁止所述比較 和生成,并且發(fā)送具有所述分組頭部并且沒有所述比較矢量的所述分組,其中,所述多個比 較中的每一個對應于不同的分組頭部。
5.根據(jù)權(quán)利要求1所述的方法,還包括將所述分組的所述分組頭部存儲在事務層的 頭部緩沖器的第一部分中,以代替所述存儲的分組頭部。
6.根據(jù)權(quán)利要求1所述的方法,還包括在耦合到所述發(fā)射機的接收機中接收所述分 組和所述比較矢量,并且從所述接收機的頭部緩沖器中獲得與所述分組的所述分組頭部相 對應的頭部。
7.根據(jù)權(quán)利要求6所述的方法,還包括基于所述分組的類型和所述比較矢量的值來 訪問所述頭部緩沖器。
8.根據(jù)權(quán)利要求1所述的方法,還包括用不同的壓縮技術(shù)來壓縮所述分組的數(shù)據(jù)部分。
9.根據(jù)權(quán)利要求8所述的方法,還包括用關(guān)于所發(fā)送的每一個分組的信息來更新所 述不同的壓縮技術(shù)的頻率表,并且每發(fā)送預定數(shù)量的分組僅更新一次所述不同的壓縮技術(shù) 的樹。
10.根據(jù)權(quán)利要求9所述的方法,還包括用與用于數(shù)據(jù)和頭部分組的第一壓縮技術(shù)不 同的第三壓縮技術(shù)來壓縮鏈路層分組,其中,如果所述第一壓縮技術(shù)使用頻率表,那么維護 用于所述鏈路層分組的獨立的頻率表。
11.一種裝置,包括頭部緩沖器,用于存儲從發(fā)射機發(fā)送的在先分組的在先分組頭部,所述頭部緩沖器包 括多個條目,每一個條目用于存儲一分組類型的在先分組頭部;比較器,用于將待發(fā)送的分組的分組頭部與所述頭部緩沖器的、對應于所述待發(fā)送的 分組的分組類型的條目中存儲的在先分組頭部進行比較;以及生成器,用于基于所述比較生成比特矢量,并且基于所述比較發(fā)送不帶有所述分組頭 部的至少一部分的所述分組。
12.根據(jù)權(quán)利要求11所述的裝置,還包括事務層,所述事務層包括所述頭部緩沖器、所 述比較器和所述生成器。
13.根據(jù)權(quán)利要求12所述的裝置,其中,所述事務層包括獨立的頭部壓縮邏輯和數(shù)據(jù) 壓縮邏輯;所述頭部壓縮邏輯包括所述頭部緩沖器、所述比較器和所述生成器,并且所述數(shù) 據(jù)壓縮邏輯用于使用不同的壓縮技術(shù)來壓縮所述分組的數(shù)據(jù)部分。
14.根據(jù)權(quán)利要求13所述的裝置,其中,所述數(shù)據(jù)壓縮邏輯基于在頻率表中所維護的 符號的頻率,并且用于利用關(guān)于所發(fā)送的每一個分組的信息來更新所述頻率表,并且更新 壓縮技術(shù),所述壓縮技術(shù)每發(fā)送預定數(shù)量的分組僅生成一次符號的壓縮編碼。
15.根據(jù)權(quán)利要求12所述的裝置,還包括耦合到所述比較器的控制邏輯,用于禁止所 述比較和生成,其中,所述事務層用于基于與多個比較相關(guān)聯(lián)的閾值來發(fā)送具有所述分組 頭部并且沒有所述比特矢量的所述分組,所述多個比較中的每一個對應于不同的分組頭 部。
16.根據(jù)權(quán)利要求15所述的裝置,其中,如果允許所述分組頭部壓縮,那么所述控制邏 輯使得所述分組頭部的壓縮指示器處于第一狀態(tài),并且如果禁止所述分組頭部壓縮,那么 使得所述分組頭部的壓縮指示器處于第二狀態(tài)。
17.根據(jù)權(quán)利要求11所述的裝置,還包括分組形成邏輯,用于生成所述分組頭部并且 將所述分組的所述分組頭部存儲在所述頭部緩沖器的第一部分中,所述第一部分對應于所 述分組的類型。
18.一種系統(tǒng),包括耦合到互連的發(fā)射機,所述發(fā)射機包括第一壓縮邏輯,所述第一壓縮邏輯用于將分組 的分組頭部與存儲的分組頭部進行比較,所述存儲的分組頭部對應于與從所述發(fā)射機發(fā)送 的所述分組類型相同的上一個分組,所述第一壓縮邏輯還用于基于所述比較生成比較矢 量,并且如果所述分組頭部和所述存儲的分組頭部相匹配,那么從所述發(fā)射機發(fā)送不帶有 所述分組頭部的所述分組;耦合到所述互連的接收機,所述接收機包括第二壓縮邏輯,所述第二壓縮邏輯用于接 收所述分組和所述比較矢量,并且從所述接收機的頭部緩沖器中獲得與所述分組的所述分 組頭部相對應的頭部;以及耦合到所述接收機和所述發(fā)射機的動態(tài)隨機存取存儲器(DRAM)。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述第一壓縮邏輯包括頭部緩沖器和比較器, 所述頭部緩沖器用于存儲所述存儲的分組頭部,所述頭部緩沖器包括多個條目,每一個條 目用于存儲一分組類型的分組頭部,所述比較器用于生成所述比較矢量。
20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述第二壓縮邏輯基于所述分組的類型和所 述比較矢量的值來訪問所述接收機的所述頭部緩沖器。
全文摘要
在一個實施例中,本發(fā)明包括一種方法,用于將分組頭部與存儲的分組頭部進行比較,基于所述比較生成比較矢量,并且如果所述分組頭部和存儲的分組頭部相匹配,那么從發(fā)射機發(fā)送沒有所述分組頭部的分組。可以使用不同的壓縮技術(shù)來壓縮和發(fā)送分組的數(shù)據(jù)部分。描述并且聲明了其它實施例。
文檔編號H04L29/06GK101930418SQ201010171259
公開日2010年12月29日 申請日期2010年4月28日 優(yōu)先權(quán)日2009年6月26日
發(fā)明者A·辛哈爾, D·達斯夏爾馬, J·帕洛米諾, M·A·魯比奧 申請人:英特爾公司