專利名稱:丟失分組的檢測方法
技術領域:
本發明的領域涉及分組傳輸。更具體而言,本發明涉及用于檢測丟失分組的差錯校驗方法和鏈路級重試的組合。
背景技術:
一種常用的需要校驗符號(signature)的差錯校驗方法是循環冗余校驗(CRC)。CRC判斷在發送器和接收器之間進行傳輸時分組是否出錯。CRC不判斷分組是否已丟失。圖1示出了將N位(bit)的除數(D)與消息(M)一起使用,來產生CRC余數(R)(處理框100)。將消息左移N位產生移位后的消息(SM)(處理框110)。例如,如果除數等于1011而消息等于101100101,則移位后的消息等于1011001010000。移位后的消息除以除數來產生余數(處理框120)。用前面的例子,通過將移位后的消息1011001010000除以1011,產生了余數0011。將消息和余數合并到數據分組中(處理框130)。然后發送器將該數據分組發送給接收器(處理框140)。然后接收器用移位后的消息與余數的和除以除數(處理框150)。如果移位后的消息與余數的和除以除數所產生的余數等于零(處理框160),則數據分組未出錯(處理框170)。如果不等于零,則數據分組出錯(處理框180)。
循環冗余校驗可以與鏈路級重試(link level retry)協同使用。鏈路級重試在發送分組時將每個分組的一份拷貝存儲在先進先出(FIFO)緩沖器中。然后,一旦已將CRC解碼,接收器就將一個消息發回給發送器。如果解碼成功,則刪除該分組。如果解碼不成功,則重新發送分組。這僅對出錯的分組而非丟失的分組起作用。所需要的是一種不僅在數據分組出錯時,而且在數據分組丟失時也能使用的判斷方法。此外,這需要在不消耗太多帶寬的情況下完成。
在附圖中,示例性而非限制性地圖示了本發明,在附圖中,相似的標號指示相似的元件,其中圖1是對循環冗余校驗的編碼和解碼進行處理的一個實施例的流程圖。
圖2是執行循環冗余校驗的系統的一個實施例的簡化框圖。
圖3是執行基于序號的循環冗余校驗的系統的一個實施例的框圖。
圖4是編碼和發送數據分組的處理的一個實施例的流程圖。
圖5是解碼和接收數據分組的處理的一個實施例的流程圖。
圖6是重發丟失的數據分組的處理的一個實施例的流程圖。
圖7是用于將芯片組內兩個單獨的元件進行互連的中心接口(hub-interface)的一個實施例的框圖。
具體實施例方式
以下描述了當在發送器和接收器之間傳輸分組時,使用差錯校驗符號來檢測分組丟失的系統和方法,所述差錯校驗符號例如是循環冗余校驗(CRC)。發送器和接收器有計數器。兩個計數器起初彼此同步。使用發送器的計數器所提供的序號(sequence number)來生成CRC碼。當發送分組時,發送器的計數器增加。接收器使用來自接收計數器的序號來對CRC碼解碼。如果所有分組都被接收到,則用于解碼的序號應該與用于編碼的序號相匹配。因此,如果CRC碼未正確解碼,則分組已丟失或出錯。如果分組已丟失或出錯,則將重發分組的消息發送給發送器。接收計數器不會增加,直到正確的分組被接收到并解碼。
圖2中示出了系統的簡化形式。參照圖2,發送器200將信息分組發送給接收器210。第一分組220包括產生第一CRC碼的第一發送序號,該第一CRC碼將被附接于所述分組的一個或多個數據段。例如,CRC0是從序號5產生的。在一個實施例中,只要發送序號等于接收序號,發送序號不一定要從零開始。在另一個實施例中,數據分組不包括序號。然后,第二分組230被發送,隨后丟失。當解碼第三分組240的CRC時,用于解碼第三分組240的CRC的序號7將會與接收序號6不匹配。因此,CRC不會正確解碼,并將第三數據分組視為出錯。向發送器發送一個指示分組解碼不正確的消息。還解碼了第四分組250,但將會因為與第三分組240相同的原因而失敗。一旦正確發送了第二分組230,那么接收序號就會增加。
圖3示出了發送器200和接收器210的支持系統。復位信號300使得發送計數器(計數器1)310和接收計數器(計數器2)320可以被同步。或者,將兩個計數器預先編程為當最后一幀被發送或接收時復位到零。CRC處理器330被耦合到發送器200,并使用來自發送計數器310的發送序號來生成每個數據分組的CRC碼。然后將分組的拷貝放入緩沖器340中。如果分組丟失或出錯,則將該數據分組的拷貝發送給接收器210。接收器210將丟失或出錯的數據分組的序號發送給發送器200。在一個實施例中,緩沖器340是FIFO緩沖器。對于FIFO緩沖器,不需要發送序號,因為數據分組是按其被發送的順序從緩沖器中讀取的。一旦接收器210接收到數據分組,CRC解碼器350(例如處理器)就將解碼數據分組的CRC碼。
圖4示出了編碼和發送數據分組的處理的一個實施例。發送計數器和接收計數器是以本領域內公知的方式同步的(處理框400)。將要傳輸的數據分段用于傳輸(處理框410)。發送計數器提供發送序號(SSN)(處理框420)。用發送序號和數據段來生成CRC碼(處理框430)。將CRC碼和數據段添加到報頭和其它形成數據分組的信息中(處理框440)。在一個實施例中,還將發送序號添加到數據分組中。將該數據分組的拷貝存儲在FIFO緩沖器中(處理框450)。將所述數據分組發送給發送器(處理框460)。計數器增加發送序號(處理框470)。計數器提供新的發送序號,來生成用于新數據分組的新CRC碼(處理框420)。
圖5示出了解碼和接收數據分組的處理的一個實施例。發送計數器和接收計數器被同步(處理框400)。接收器接收到數據分組(處理框500)。接收器計數器提供接收序號(RSN)(處理框510)。使用接收序號來將數據分組的CRC碼解碼(處理框520)。在另一實施例中,將接收序號與分組中所包含的發送序號相比較。如果CRC碼正確解碼(處理框530),則處理所述分組(處理框540)。接收器發信號通知發送器,分組已被成功接收(處理框550)。計數器增加接收序號(處理框560),然后接收下一數據分組(處理框500)。如果CRC碼未正確解碼(處理框530),則忽略當前分組(處理框570),并且接收器發信號通知發送器重發所述分組(處理框580)。在一個實施例中,重發指示包括丟失分組的序號。接收下一數據分組(處理框500)。
圖6示出了重發數據分組的處理的一個實施例。發送器從接收器接收消息(處理框600)。如果來自接收器的消息指示CRC被正確解碼(處理框610),則刪除FIFO緩沖器中相應的數據分組拷貝(處理框620)。發送繼續(處理框630),發送器從接收器接收下一消息(處理框600)。如果來自接收器的消息指示CRC未被正確解碼(處理框610),則發送器暫停其它數據分組的發送(處理框640)。發送FIFO緩沖器中下一可用的分組(處理框650)。發送器從接收器接收指示所重發的數據分組是否被正確解碼的消息(處理框660)。如果所重發的分組未正確解碼(處理框670),則再次發送該分組(處理框650)。如果所重發的分組被正確解碼(處理框670),則刪除FIFO緩沖器中所重發的分組(處理框680)。如果在FIFO緩沖器中還有分組(處理框690),則將FIFO緩沖器中下一可用的數據分組發送給接收器(處理框650)。如果FIFO緩沖器中不再有分組(處理框690),則發送繼續(處理框630),并且發送器從接收器接收下一消息(處理框600)。
圖7示出了使用CRC丟失分組檢測的系統的一個實施例。更具體而言,圖7示出了用于將芯片組內兩個單獨的元件進行互連的中心接口704(即中心代理)的一個實施例。中心代理在兩個或更多單獨的總線和/或其它類型的通信線路之間提供集中連接。
例如,如圖7另外所示,芯片組包括存儲器控制中心704(MCH)和輸入/輸出(ICH)中心706。如圖7所示,存儲器控制中心704在一個或多個中央處理單元708(CPU)和系統存儲器710之間提供互連/中心。
ICH 706在系統內的各種外圍器件(例如鍵盤718、磁盤驅動器724、掃描儀722和/或鼠標720)之間提供互連。此外,外部總線及其代理(例如外圍器件互連(PCI)總線712和PCI代理714),通過與ICH 706互連經中心接口702而與存儲器710和CPU 708間接互連,而不是與存儲器控制中心704直接互連。
通過用中心接口來將存儲器控制中心704與ICH 706直接互連,提供了對I/O器件和CPU/存儲器子系統之間訪問的改進(例如更大的帶寬、協議獨立,以及更少的等待時間)。此外,中心接口還可以通過為I/O構建塊提供主干而增加計算機系統的可擴展性(例如,從基礎桌面平臺升級到高端桌面平臺或工作站平臺)。
在另一實施例中,CPU和MCH集成在一個半導體單元730上,其中該半導體單元730通過中心接口而耦合到ICH。在另一個實施例中,MCH和圖形單元732(例如控制/加速器)集成在一個半導體單元730上,其中該半導體單元730通過中心接口而耦合到ICH。在另一個實施例中,MCH、圖形單元732和CPU集成在一個半導體單元730上,其中該半導體單元730通過中心接口而耦合到ICH。
一個這種系統的事務、協議和物理層在1999年10月26日提交的美國專利申請No.09/428,134“Method and Apparatus for an Improved InterfaceBetween Computer Components”(計算機器件間改進接口的方法和裝置)中進行了描述,該專利申請已被轉讓給本申請的受讓人。
上述技術可被實現為在計算機系統(例如機頂盒、錄像機等)的存儲器中存儲并執行的一組指令。或者,用于執行上述方法的指令可以被存儲在包括磁盤和光盤在內的其它機器可讀介質上。例如,本發明的方法可以被存儲在機器可讀介質上,所述機器可讀介質例如是磁盤和光盤,可通過磁盤驅動器(或機器可讀介質驅動器)來訪問。此外,可以通過數據網絡,將所述指令以編譯和鏈接后版本的形式下載到計算設備中。
或者,用于執行上述方法的邏輯可以通過另外的計算機和/或機器可讀介質來實現,所述介質例如是諸如大規模集成電路(LSI)、專用集成電路(ASIC)之類的分立硬件器件,諸如電可擦除可編程只讀存儲器(EEPROM)之類的固件;以及電、光、聲和其它形式的傳播信號(例如載波、紅外信號、數字信號等);等等。
雖然已參照具體示例性實施例對本發明進行了描述,但是顯然,可以對這些實施例進行各種修改和變化,而不脫離本發明更廣的精神和范圍。因此,應將本說明書和附圖看作是說明性而非限制性的。
權利要求
1.一種系統,包括發送器,用于發送包括差錯校驗符號在內的數據分組;第一計數器,其耦合到所述發送器,并包括一個計數值,該計數值隨每個所發送的數據分組而增加以產生第一序號,該第一序號用于生成所述差錯校驗符號。
2.如權利要求1所述的系統,還包括接收器,用于接收所述數據分組;和第二計數器,其耦合到所述接收器,所述第二計數器隨每個所接收的數據分組而增加以產生第二序號,該第二序號用于解碼所述循環冗余校驗。
3.如權利要求2所述的系統,其中如果所述接收器使用所述第二序號解碼所述差錯校驗符號失敗,則所述接收器向所述發送器發送指示數據分組失敗的第一消息。
4.如權利要求3所述的系統,其中所述第一消息包括所述第二序號。
5.如權利要求4所述的系統,其中所述發送器重發與所述第二序號相對應的數據分組。
6.如權利要求3所述的系統,還包括用于存儲所發送的每個數據分組的拷貝的緩沖器。
7.如權利要求6所述的系統,其中,如果成功將所述循環冗余校驗解碼,則所述接收器向所述發送器發送第二消息。
8.如權利要求7所述的系統,其中所述緩沖器是先進先出緩沖器。
9.如權利要求8所述的系統,其中一旦接收到所述相應的第二消息,就刪除所述數據分組的拷貝。
10.如權利要求9所述的系統,其中當接收到所述第一消息時,就重發所述先進先出緩沖器中的下一數據分組。
11.如權利要求2所述的系統,其中可以同時將所述第一計數器和所述第二計數器復位到同一數字。
12.如權利要求2所述的系統,其中所述第一序號包括在所發送的數據分組中。
13.一種方法,包括將耦合到接收器的接收分組計數器與耦合到發送器的發送分組計數器同步;從所述發送器接收數據分組,該分組包含差錯校驗符號;從所述接收分組計數器讀取接收序號;并且使用所述接收序號,將所述差錯校驗符號解碼。
14.如權利要求13所述的方法,還包括將確認信號發送回所述發送器。
15.如權利要求14所述的方法,其中如果所述差錯校驗符號正確,則所述確認信號確認對所述數據分組的接收。
16.如權利要求14所述的方法,其中如果所述差錯校驗符號不正確,則所述確認信號指示接收所述數據分組失敗。
17.如權利要求13所述的方法,還包括在已記錄了每個差錯校驗符號之后,增加所述接收分組計數器。
18.如權利要求13所述的方法,還包括從所述發送分組計數器讀取發送序號;使用所述發送序號,將所述差錯校驗符號編碼;并且將所述數據分組發送給所述接收器,所述分組包含所述差錯校驗符號。
19.如權利要求13所述的方法,其中所述數據分組包括所述發送序號。
20.如權利要求13所述的方法,還包括將所述數據分組存儲在耦合到所述發送器的緩沖器中。
21.如權利要求20所述的方法,還包括在來自所述接收器的確認信號確認了所述分組的差錯校驗符號已被解碼之后,從所述緩沖器中刪除所述數據分組。
22.如權利要求13所述的方法,還包括在已發送了每個差錯校驗符號之后,增加所述發送分組計數器。
23.一種機器可讀存儲介質,其確實地包含指令序列,該指令序列可由機器執行以執行包括如下步驟的方法將耦合到接收器的接收分組計數器與耦合到發送器的發送分組計數器同步;從所述發送器接收數據分組,該分組包含差錯校驗符號;從所述接收分組計數器讀取接收序號;并且使用所述序號,將所述差錯校驗符號解碼。
24.如權利要求23所述的機器可讀存儲介質,還包括將確認信號發送回所述發送器。
25.如權利要求23所述的機器可讀存儲介質,還包括在已記錄了每個差錯校驗符號之后,增加所述接收分組計數器。
26.如權利要求23所述的機器可讀存儲介質,還包括從所述發送分組計數器讀取發送序號;使用所述序號,將所述差錯校驗符號編碼;并且將所述數據分組發送給所述接收器,所述分組包含所述差錯校驗符號。
27.如權利要求23所述的機器可讀存儲介質,還包括將所述數據分組存儲在耦合到所述發送器的緩沖器中。
28.如權利要求27所述的機器可讀存儲介質,還包括在來自所述接收器的確認信號確認了所述分組的差錯校驗符號已被解碼之后,從所述緩沖器中刪除所述數據分組。
29.如權利要求27所述的機器可讀存儲介質,還包括在已發送了每個差錯校驗符號之后,增加所述發送分組計數器。
全文摘要
本發明描述了一種當在發送器和接收器之間傳輸分組時,使用諸如循環冗余校驗(CRC)之類的差錯校驗符號來檢測分組丟失的系統和方法。在發送器和接收器上有計數器,兩個計數器起初彼此同步。使用發送器的計數器所提供的序號來生成CRC。當發送分組時,發送器的計數器增加。接收器使用來自接收計數器的序號來將所述CRC解碼。如果所有分組都被接收到,則用于解碼的序號應該與用于編碼的序號相匹配。因此,如果CRC未正確解碼,則分組已丟失或出錯。將消息發送到發送器。接收計數器不會增加,直到正確的分組被接收到并解碼。
文檔編號H04L1/16GK1561602SQ02819071
公開日2005年1月5日 申請日期2002年9月26日 優先權日2001年9月28日
發明者埃里克·韋黑格 申請人:英特爾公司