專利名稱:資源粒度大于信用粒度時的信用管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字系統(tǒng),更特別地涉及用于數(shù)字系統(tǒng)中接口的基于信用的流控制機制的信用管理。
背景技術(shù):
數(shù)字系統(tǒng)常常包括系統(tǒng)中集成電路(IC)之間、系統(tǒng)之間及有時候甚至是IC內(nèi)的 流控制的接口。一般而言,流控制機制的存在防止在接收器中出現(xiàn)緩沖超出限度或者其它 數(shù)據(jù)損失情況。例如,一種普通的流控制機制是基于信用的。接口上的接收器可以廣播其 可用于各種類型發(fā)送的信用個數(shù),而發(fā)送器可以記錄這些信用。然后,發(fā)送器可以在接口上 發(fā)送并為每次發(fā)送扣減信用。一旦信用用完,發(fā)送器就必須停止發(fā)送。當(dāng)接收器完成所接 收發(fā)送的處理后,就釋放每次發(fā)送所消耗的信用,并將釋放的信用發(fā)送回發(fā)送器。
接收器所廣告的信用通常受處理該發(fā)送的接收器上可用資源約束。例如,通常提 供緩沖來存儲所接收的發(fā)送??捎玫木彌_指示針對每種發(fā)送類型可以廣告多少信用。在有 些情況下,緩沖實現(xiàn)為存儲器。如果存儲器不能以與信用相同的粒度(granularity)(或者 以更精細的粒度)分配,則導(dǎo)致存儲器使用的低效。一般而言,完全存儲器區(qū)組(granule) 必須分配成存儲任意數(shù)量的數(shù)據(jù)直到完全存儲器區(qū)組。因為數(shù)據(jù)可以以小于存儲器區(qū)組 (或者以存儲器區(qū)組的某個非整數(shù)倍)發(fā)送,所以可以廣告的信用個數(shù)少于人們基于對存 儲器大小的了解可能猜到的。因此,接口上可以實現(xiàn)的帶寬小于當(dāng)存儲器可以以更大粒度 分配時有可能實現(xiàn)的帶寬。發(fā)明內(nèi)容
在一種實施方式中,一種裝置包括耦合到緩沖存儲器的接收器。該接收器包括配 置成管理用于接口的流控制信用的信用管理單元,其中接收器在使用過程中耦合到所述接 口。接口上所接收的每個分組都包括分組頭部并可選地包括分組數(shù)據(jù)。分組數(shù)據(jù)是關(guān)于流 控制信用中的依賴于分組數(shù)據(jù)大小的數(shù)據(jù)信用而測量的,其中每個數(shù)據(jù)信用代表固定數(shù)量 的數(shù)據(jù)字節(jié)。緩沖存儲器配置成存儲與由接收器在接口上所接收到的分組相對應(yīng)的分組頭 部和分組數(shù)據(jù),其中緩沖存儲器可以由接收器按緩沖單元分配,其中緩沖單元是數(shù)據(jù)信用 大小的N倍,其中N是大于1的整數(shù)。數(shù)據(jù)信用的總數(shù)等于緩沖存儲器中可用于存儲分組數(shù) 據(jù)的緩沖單元的個數(shù)的N倍,而且,信用管理單元配置成,基于當(dāng)分組數(shù)據(jù)未填滿緩沖單元 時不可用的數(shù)據(jù)信用的最大個數(shù)并且進一步基于允許同時傳送(in flight)的分組個數(shù), 來保留總數(shù)據(jù)信用中的多個。信用管理單元配置成響應(yīng)于接收導(dǎo)致少于不可用數(shù)據(jù)信用的 最大個數(shù)的給定分組的分組數(shù)據(jù)而釋放一個或多個數(shù)據(jù)信用。信用管理單元配置成在給定 分組被消費之前釋放一個或多個數(shù)據(jù)信用。還可構(gòu)想對應(yīng)的方法。
在一種實施方式中,一種裝置包括耦合到緩沖存儲器的接收器。該接收器包括配 置成管理用于接口的流控制信用的信用管理單元,其中接收器在使用過程中耦合到該接 口。接口上所接收的每個分組都包括頭部并可選地包括數(shù)據(jù)。頭部是關(guān)于用于接口上流控制的一個或多個頭部信用而測量的,而數(shù)據(jù)是關(guān)于用于接口上流控制的一個或多個數(shù)據(jù)信 用而測量的。每個數(shù)據(jù)信用代表固定數(shù)量的數(shù)據(jù)字節(jié)。緩沖存儲器配置成存儲與由接收器 在接口上所接收到的分組相對應(yīng)的分組頭部和分組數(shù)據(jù)。信用管理單元配置成響應(yīng)于一個 或多個所接收到的分組中分組數(shù)據(jù)的大小而動態(tài)地調(diào)整用于存儲分組頭部的第一緩沖存 儲器數(shù)量和用于存儲分組數(shù)據(jù)的第二緩沖存儲器數(shù)量,而且其中,信用管理單元配置成響 應(yīng)于該動態(tài)調(diào)整而在接口上將數(shù)據(jù)信用和頭部信用釋放到發(fā)送器。
以下具體描述參考附圖,現(xiàn)在簡要地描述附圖。
圖1是數(shù)字系統(tǒng)的一個實施例的框圖。
圖2是存儲器緩沖分配的一個實施例的框圖。
圖3是圖1所示接收器的一個實施例的框圖。
圖4是例示了在圖1所示的系統(tǒng)的初始化過程中,圖3所示的接收器的一個實施 例的操作的流程圖。
圖5是例示了響應(yīng)于在圖1所示的系統(tǒng)中接收到分組,圖3所示的接收器的一個 實施例的操作的流程圖。
圖6是例示了響應(yīng)于分組被圖1所示系統(tǒng)中的目標(biāo)消費,圖3所示的接收器的一 個實施例的操作的流程圖。
圖7是圖1所示的接收器的另一實施例的框圖。
圖8是例示了在圖1所示的系統(tǒng)的初始化過程中,圖7所示的接收器的一個實施 例的附加操作的流程圖。
圖9是例示了響應(yīng)于在圖1所示的系統(tǒng)中接收到分組,圖7所示的接收器的一個 實施例的附加操作的流程圖。
圖10和11是例示了圖7所示的接收器的一個實施例的附加細節(jié)的偽碼。
盡管本發(fā)明容易進行各種修改及可選形式,但其特定實施例作為例子在附圖中示 出并將在此具體描述。但是,應(yīng)當(dāng)指出,附圖和對其的具體描述不是要將本發(fā)明限制到所公 開的特定形式,相反,本發(fā)明是要覆蓋屬于如由所附權(quán)利要求定義的本發(fā)明的主旨與范圍 的所有修改、等價物與可選方式。在此所使用的標(biāo)題僅僅是為了組織的目的,而不是意味著 要用于限制描述的范圍。如貫穿本申請所使用的,“可以”一詞是以允許的含義(即,意味著 有潛力)而不是以強制的含義(即,意味著必須)使用的。類似地,“包括”一詞意味著包括 但不限于。
具體實施方式
現(xiàn)在轉(zhuǎn)向圖1,示出了系統(tǒng)10的一個實施例的框圖。在所例示的實施例中,系統(tǒng) 10包括發(fā)送器12、接收器14、緩沖存儲器16及可選地還有分組目標(biāo)18。發(fā)送器耦合到接 口 20,接收器14也耦合到該接口。緩沖存儲器16耦合到接收器14和目標(biāo)18。
發(fā)送器12配置成維護頭部信用和數(shù)據(jù)信用,其中頭部信用和數(shù)據(jù)信用指示接收 器14當(dāng)前能夠接受多少分組頭部和分組數(shù)據(jù)流量。例如,在圖1中,發(fā)送器12可以包括頭 部信用寄存器22和數(shù)據(jù)信用寄存器24。在系統(tǒng)10的初始化過程中,而且有可能在操作過程中接口 20被復(fù)位的其它點處,接收器14可以確定廣告給發(fā)送器12的頭部信用和數(shù)據(jù)信 用的個數(shù)。發(fā)送器12可以利用所廣告的信用來初始化寄存器22和M。當(dāng)發(fā)送器12發(fā)送 分組頭部和分組數(shù)據(jù)時,發(fā)送器12可以扣減被所發(fā)送的頭部和數(shù)據(jù)消費的信用。接收器14 可以將釋放后的信用發(fā)送回發(fā)送器12,然后發(fā)送器12可以將釋放的信用添加到寄存器22 和24。因此,在任何給定的時間點,響應(yīng)于寄存器22和M中的信用,發(fā)送器12可以控制通 過接口 20發(fā)送多少信息。例如,如果沒有足夠的信用可用于給定的發(fā)送,則發(fā)送器12可以 延遲發(fā)送,直到可以獲得所需數(shù)量的信用。
一般而言,廣告信用是指接收器14通知發(fā)送器12可用的信用個數(shù)的任何機制。類 似地,釋放信用可以指用于確定經(jīng)互連20上的發(fā)送所消費的信用可以返回到發(fā)送器12的 任何機制及用于返回它們的機制?;诮涌?20的定義,用于執(zhí)行廣告和釋放的機制是特定 于實現(xiàn)的,但通??梢园ㄔ诮涌?20上從接收器14到發(fā)送器12的發(fā)送。例如,分組可以 定義成發(fā)送釋放的信用,或者在用于所有分組的頭部中的字段可以包括釋放的信用。發(fā)送 釋放的信用的分組可以在初始化過程中發(fā)送,以便廣告期望數(shù)量的信用。如果廣告了比可 以在分組字段中發(fā)送的信用多的信用,則可以發(fā)送多個分組。
一般來說,在接口 20上發(fā)送的分組可以包括頭部(其定義分組的類型并且可以提 供其它控制信息),而且可以可選地包括數(shù)據(jù)(或者“有效載荷”)。頭部的大小可以是固定 的,因此,每個頭部在其被發(fā)送器12發(fā)送時可以消費一個頭部信用。其它實施例可以實現(xiàn) 可變大小的頭部,而且,給定分組所需的頭部信用的個數(shù)可以依賴其頭部的大小。數(shù)據(jù)有效 載荷的大小可以是可變的。因此,數(shù)據(jù)信用可以定義成表示固定數(shù)量的數(shù)據(jù)字節(jié)(稱為“數(shù) 據(jù)單元”),而且給定分組所需的數(shù)據(jù)信用的個數(shù)可以是有效載荷的大小除以數(shù)據(jù)信用的大 小。數(shù)據(jù)信用的大小可以是接口 20定義的一部分。例如,在一個實施例中,接口 20可以是 快速外圍部件互連(PCIe)接口,而數(shù)據(jù)信用可以代表16個字節(jié)。
接收器14包括信用管理單元沈,而且可以包括一個或多個信用寄存器觀,用來存 儲由信用管理單元26管理用于發(fā)送器12的信用所使用的值。以下提供各種實施例的附加 細節(jié)。接收器14還可以包括在接口 20上通信、與緩沖存儲器16通信等的各種其它電路。 此外,盡管圖1例示了發(fā)送器12發(fā)送到接收器14,但在接口 20上通信可以是雙向的。艮口, 發(fā)送器功能可以存在于接口 20的兩側(cè),而且接收器功能也可以存在于兩側(cè)。在討論中為了 簡化,本說明書將指示發(fā)送器12發(fā)送到接收器14的情況,但是應(yīng)當(dāng)理解,分組可以從圖1 的接收器14 一側(cè)發(fā)送到發(fā)送器12 —側(cè)。
在所例示的實施例中,接口 20可以包括一對單向、點對點的鏈接。分組可以在該 鏈接上發(fā)送。在其它實施例中,接口 20可以具有其它定義。例如,接口 20可以是總線,具 有地址和數(shù)據(jù)發(fā)送。地址發(fā)送可以是通過地址信用(類似于頭部信用)來流控制的,而數(shù) 據(jù)發(fā)送可以是通過數(shù)據(jù)信用來流控制的?;诮涌?20的定義,任何信用集合都可以使用。 一般來說,信用集合可以稱為流控制信用。
一般來說,目標(biāo)18可以指消費來自緩沖存儲器16的分組的任何電路。目標(biāo)18可 以是包括接收器14的設(shè)備的一部分(例如,IC)或者可以是獨立的。例如,接收器14可以 是接收分組并在另一個接口上轉(zhuǎn)發(fā)它們的開關(guān),在這種情況下,對來自緩沖存儲器16的分 組的消費可以是在該另一接口上對分組的轉(zhuǎn)發(fā)。
緩沖存儲器16可以包括接收器14可以訪問的任何類型的存儲器。例如,緩沖存儲器16可以包括耦合到存儲器控制器的系統(tǒng)存儲器,例如動態(tài)隨機存取存儲器(DRAM),其 中存儲器控制器配置成與DRAM連接。例如,可以支持各種DRAM存儲器模塊,例如單個內(nèi)嵌 存儲器模塊(SIMM)、雙內(nèi)嵌存儲器模塊(DIMM)等。任何DRAM技術(shù)都可以使用(例如,同 步 DRAM (SDRAM)、雙數(shù)據(jù)率(DDR) SDRAM、DDR2SDRAM、DDR3SDRAM、Rambus DRAM (RDRAM)等)。 在此類實施例中,接收器14可以對存儲器控制器產(chǎn)生將分組頭部和分組數(shù)據(jù)寫到存儲器 16的寫命令。目標(biāo)18可以對存儲器控制器產(chǎn)生讀取分組頭部和分組數(shù)據(jù)的讀命令。在其 它實施例中,緩沖存儲器16可以包括接收器14私有的存儲器,或者被接收器14和系統(tǒng)10 中一個或多個其它接收器和/或發(fā)送器共用的存儲器。緩沖存儲器16可以包括例如高速 緩沖存儲器或者其它專用的緩沖存儲器。在有些實施例中,緩沖存儲器16可以包括靜態(tài) RAM(SRAM)。
緩沖存儲器16可以分配成存儲分組頭部和分組數(shù)據(jù)。具體而言,緩沖存儲器16可 以以比數(shù)據(jù)信用(和/或頭部信用,在有些實施例中)粗的粒度分配。緩沖存儲器16可以 以在此稱為緩沖單元(BU)的區(qū)組分配。因此,在圖1中,示出了頭部BU 30和數(shù)據(jù)BU 32。 本說明書的其余部分可以使用其中頭部信用具有與BU相同的粒度而數(shù)據(jù)信用的粒度更細 的實施例。但是,還構(gòu)想其中頭部信用粒度也比BU更細且類似于數(shù)據(jù)信用機制的機制可以 用于頭部信用的實施例。
因為BU粒度比DU粒度粗,所以緩沖存儲器16可能沒有完全用于存儲數(shù)據(jù)。圖2 是針對其中BU是DU大小的4倍的情況例示了少于完全使用的例子的框圖。一般來說,其 它實施例可以包括大小為DU大小的N倍的BU,其中N是大于1的整數(shù)。在有些實施例中, N可以是2的冪。
總的來說,各種分組的數(shù)據(jù)有效載荷可以在0到M個DU之間,其中M是大于0的 整數(shù)。M的大小可以是依賴實現(xiàn)的,而且可以依賴于接口 20的定義(例如,接口 20可以定 義每分組的最大數(shù)據(jù)有效載荷大小)。但是,M和N不必然有任何特定的關(guān)系。S卩,對于給 定的分組,M/N不必是整數(shù)。
圖2在右側(cè)例示了 BU,虛線向內(nèi)延伸到本例中所存儲的數(shù)據(jù)有效載荷。在左側(cè),實 線例示了 DU。如以上所提到的,在這個例子中,每個BU有4個DU。圖2中示出了 5DU有效 載荷40。前4個DU存儲在BUO中并且占用了整個BU。第5個DU存儲在BUl中。由于緩 沖存儲器16分配成以BU粒度存儲有效載荷數(shù)據(jù),因此整個BUl都分配給有效載荷40,使 得在BUl中有3個DU未用。以另一種方式看,在對應(yīng)于有效載荷40的分組被消費之前,緩 沖存儲器的這3個DU都是不可用的,而且從根本上可能關(guān)于被發(fā)送器12用于發(fā)送有效載 荷40所消費的DU(及由此數(shù)據(jù)信用)的個數(shù)構(gòu)成計數(shù)誤差。即,發(fā)送器12消費了 5個信 用來發(fā)送有效載荷40,但有效載荷40實際上占用了緩沖存儲器16的8個信用。
圖2中例示了另一個有效載荷42,在這個例子中它是4個DU。因此,有效載荷42 存儲在BU2中,而且沒有未使用的DU。還示出了第三個有效載荷44,它是6個DU,因此在圖 2中占用了 BU3和BU4的2個DU。因此,緩沖存儲器16中又有2個DU是沒有使用的。通 常,一個分組可以占用多達P個BU,其中,如果有效載荷不恰好是N個DU的整數(shù)倍,則最后 一個被占用的BU中的一個或多個DU可能是沒有使用的。在其它情況下,未使用的DU可能 存在于被有效載荷占用的BU的開始(例如,如果有效載荷不需要與BU的開始對準(zhǔn)),或者 在開始和末尾都存在。在任何一種情況下,基于對應(yīng)于BU(N)的DU個數(shù),都可以定義用于數(shù)據(jù)有效載荷的最大可能誤差。如果一個DU占用了一個BU,則發(fā)生最大誤差,因此,對于給 定的有效載荷,最大誤差是N-I個DU (或者N-I個數(shù)據(jù)信用)。
因此,對于可分配用于存儲分組數(shù)據(jù)的給定的Y個BU,少于Y * N個數(shù)據(jù)信用廣告 給發(fā)送器12。信用管理單元沈可以保留可以別的方式廣告的數(shù)據(jù)信用,以確保在緩沖存儲 器16中不會發(fā)生溢出。具體而言,最壞情況的總誤差會在每個數(shù)據(jù)有效載荷都引起最大誤 差(N-I)的時候出現(xiàn)。如果可以發(fā)送至多C個分組(例如,頭部信用的個數(shù)是C),則最壞情 況的總誤差可以是C-I乘以N-1。使用C-I是因為最后的數(shù)據(jù)有效載荷的誤差是不可檢測 的,因為發(fā)送器12在頭部信用用完之后不能再發(fā)送另一個分組。
當(dāng)接收到具有數(shù)據(jù)有效載荷的給定分組時,如果有效載荷引起少于最大誤差的誤 差,則有些數(shù)據(jù)信用可以立即被釋放(在分組被消費之前)。即,緩沖存儲器16中用于數(shù) 據(jù)有效載荷的未使用DU少于信用管理單元沈沒有廣播到發(fā)送器12的保留信用的數(shù)量。 例如,在圖2中,有效載荷42實現(xiàn)了零誤差,因此響應(yīng)于接收到有效載荷42,三(N-1-0)個 數(shù)據(jù)信用可以被釋放。有效載荷44實現(xiàn)了 2個誤差,因此響應(yīng)于接收到有效載荷44,一 (N-1-2)個數(shù)據(jù)信用可以被釋放。
一旦分組被消費,就有可能再次需要保留的信用(因為接收到的下一個分組可能 有實現(xiàn)最大個數(shù)的未使用DU的有效載荷)。因此,真正被發(fā)送器消費的剩余信用可以在分 組被消費的時候釋放。即,在分組被消費時所釋放的信用個數(shù)等于對應(yīng)于有效載荷的實際 信用個數(shù)減去當(dāng)分組被接收時所釋放的信用個數(shù)。
通過釋放對應(yīng)于未實現(xiàn)的誤差的信用,有可能發(fā)送由于缺少可用數(shù)據(jù)信用而延遲 的附加分組。即,接口 20上的帶寬可以被更有效地利用。
圖3是接收器14的一個實施例更具體的框圖,對于引起少于未使用DU的最大個 數(shù)的未使用DU的數(shù)據(jù)有效載荷實現(xiàn)數(shù)據(jù)信用的早期釋放。在所例示的實施例中,示出了信 用管理單元沈,它耦合到最大DU誤差寄存器28A和釋放的數(shù)據(jù)信用(DCrs)寄存器^B。寄 存器^A-28B可以是圖1所示的Cr寄存器觀的一部分。在圖3中示出的還有DCr FIFO 28C,它可以實現(xiàn)為一個或多個Cr寄存器觀或者實現(xiàn)為FIFO存儲器或者其它存儲器。可 選地,DCr FIFO 28C可以不實現(xiàn),而且作為代替,存儲在其中的數(shù)據(jù)可以利于所接收到的分 組列隊(例如,在緩沖存儲器16中)。
信用管理單元沈可以參考未使用DU的最大個數(shù)來計算在各個點要釋放的信用。 最大DU誤差寄存器28A可以存儲這個值。或者信用管理單元沈可以產(chǎn)生該值,或者該值 可以通過軟件編程到寄存器^A中。在有些實施例中,DU和BU都可以是固定的,并且可以 硬編碼到信用管理單元26中,從而可以去掉寄存器28L·
在一個實施例中,信用管理單元沈可以在釋放的數(shù)據(jù)信用寄存器28B中累積要發(fā) 送到發(fā)送器12的釋放信用。信用管理單元沈可以使用任何機制來確定何時發(fā)送所釋放的 信用。例如,釋放的信用可以在一累積夠某個數(shù)量的信用(例如,超過可編程的閾值)時、 在自上次發(fā)送釋放信用起經(jīng)過某個時間段之后就發(fā)送、或者利用所經(jīng)過時間和釋放信用的 個數(shù)的組合,等等。類似的寄存器可以用于累積釋放的頭部信用,或者可以使用同一個寄存 器中的字段。
DCr FIFO 28C可以為存儲在緩沖存儲器16中的每個分組存儲多個數(shù)據(jù)信用 (#DCrs)。當(dāng)分組從緩沖存儲器中被消費時,對應(yīng)數(shù)量的數(shù)據(jù)信用可以從DCr FIFO 28C讀取并釋放。信用管理單元26可以根據(jù)發(fā)送分組所消費的數(shù)據(jù)信用的總數(shù)和響應(yīng)于接收到 分組而釋放的數(shù)據(jù)信用的個數(shù)來為每個接收到的分組計算數(shù)據(jù)信用的個數(shù)。
圖4是例示了在系統(tǒng)10的初始化過程中接收器14的一個實施例的操作的流程 圖。盡管為了方便理解而以特定次序示出了各個塊,但也可以采用其它次序。塊可以在接 收器14內(nèi)按組合邏輯并行執(zhí)行。整體來看,塊、塊的組合和/或流程圖可以在多個時鐘周 其月上傳送(pipeline) ο
基于要廣告到發(fā)送器12的頭部信用個數(shù)(header_CreditS)和每BU的DU個數(shù) (N),信用管理單元沈可以確定總的潛在的DU誤差(DU_Err)。具體而言,DU_Err是由(N-I) * (header_credits-l)給出的(塊50)。信用管理單元沈可以確定要廣告到發(fā)送器12的 DU(數(shù)據(jù)信用)個數(shù)(DU_Adv)。具體而言,DU_Adv可以計算為緩沖存儲器16中DU的總數(shù) (N *分配來存儲分組數(shù)據(jù)的BU個數(shù))減去在塊50所確定的DU_Err (塊52)。有效地,DU_ Err可以是保留用來處理可能在緩沖存儲器16的BU中引起的未使用DU的數(shù)據(jù)信用個數(shù)。 信用管理單元26可以廣告頭部信用和用于數(shù)據(jù)信用的DU_Adv(塊54)。此外,信用管理單 元沈還可以在寄存器28A中將MaX_DU_Err設(shè)置為N-I,并且還在寄存器28B指將釋放的數(shù) 據(jù)信用初始化為零(塊56)。
圖5是例示了響應(yīng)于在接口 20上接收到分組,接收器14的一個實施例的操作的 流程圖。盡管為了方便理解而以特定次序示出了各個塊,但也可以采用其它次序。塊可以 在接收器14內(nèi)按組合邏輯并行執(zhí)行。整體來看,塊、塊的組合和/或流程圖可以在多個時 鐘周期上傳送。
信用管理單元沈可以確定有效載荷中所實現(xiàn)的數(shù)據(jù)誤差(即,存儲有效載荷數(shù) 據(jù)的BU中未使用的DU個數(shù))(塊60)。信用管理單元沈可以確定未實現(xiàn)的數(shù)據(jù)誤差等于 Max_DU_Err減去實現(xiàn)的數(shù)據(jù)誤差(塊62)。未實現(xiàn)的數(shù)據(jù)誤差是當(dāng)接收到分組時可以被釋 放的數(shù)據(jù)信用的個數(shù)。信用管理單元沈可以將未實現(xiàn)的數(shù)據(jù)誤差加到釋放的DCr寄存器 ^B中釋放的數(shù)據(jù)信用(塊64)。此外,信用管理單元沈還可以在DCr FIFO 28C中存儲當(dāng) 分組從緩沖存儲器16消費時要釋放的數(shù)據(jù)信用的個數(shù)(塊66)。具體而言,寫到FIFO的個 數(shù)是與有效載荷相對應(yīng)的數(shù)據(jù)信用的實際個數(shù)減去未實現(xiàn)的數(shù)據(jù)誤差。
圖6是例示了響應(yīng)于分組從緩沖存儲器16被消費,接收器14的一個實施例的操 作的流程圖。一般來說,當(dāng)分組被目標(biāo)18從緩沖存儲器16讀取或者分組不再需要存儲在緩 沖存儲器16中(例如,分組已經(jīng)被丟掉)時,該分組被消費。盡管為了方便理解而以特定 次序示出了各個塊,但也可以采用其它次序。塊可以在接收器14內(nèi)按組合邏輯并行執(zhí)行。 整體來看,塊、塊的組合和/或流程圖可以在多個時鐘周期上傳送。
信用管理單元沈可以從DCr FIFO 28C的條目讀取數(shù)據(jù)信用的個數(shù),而且可以將 數(shù)據(jù)信用的個數(shù)添加到寄存器^B中釋放的數(shù)據(jù)信用,從而釋放數(shù)據(jù)信用(塊70和72)。 在一個實施例中,分組可以按照接收次序被消費,而且數(shù)據(jù)信用的個數(shù)可以從FIFO的頭讀 取。如果分組以不同的次序被消費,則可以提供FIFO中到期望條目的偏移量。
應(yīng)當(dāng)指出,與為每個有效載荷保留的最大個數(shù)相比,圖4至6例示了基于BU中未 使用DU的實際個數(shù)與數(shù)據(jù)信用早期釋放相關(guān)的操作。接收器14和/或信用管理單元沈 也可以包括以上所述在每個點處的附加操作。
除了或者代替以上所討論的數(shù)據(jù)信用的早期釋放,接收器14的另一實施例可以實現(xiàn)適應(yīng)性的信用管理。利用適應(yīng)性的信用管理,接收器14試圖將分配給頭部的緩沖存儲 器16和分配給數(shù)據(jù)的緩沖存儲器16與實際在接口 20上接收的流量匹配。即,當(dāng)數(shù)據(jù)有效 載荷的大小增加時,有更多的數(shù)據(jù)信用和更少的頭部信用可以允許更有效地使用接口帶寬 (因為每個分組仍然只需要一個頭部信用,但有效載荷需要多個數(shù)據(jù)信用)。當(dāng)數(shù)據(jù)有效 載荷的大小減小時,有更少的數(shù)據(jù)信用和更多的頭部信用可以允許更有效地使用接口帶寬 (因為對于每個分組所需頭部信用與所需數(shù)據(jù)信用之比增加了)。
因此,信用管理單元沈可以監(jiān)視由接收器14所接收的數(shù)據(jù)有效載荷的大小,并且 可以動態(tài)修改分配給頭部的緩沖存儲器的量(例如,頭部BU 30的大小)和分配給數(shù)據(jù)有 效載荷的緩沖存儲器的量(例如,數(shù)據(jù)BU 32的大小)??蛇x地,分配給頭部的存儲器的量 可以大到足以容納期望的最大數(shù)量的頭部,但信用可以管理成增加或減少發(fā)送器可使用的 頭部信用的個數(shù)和數(shù)據(jù)信用的個數(shù)。這種動態(tài)信用管理仍然可以允許對緩沖存儲器16更 有效的利用,因為頭部信用的個數(shù)影響基于BU中未使用的DU要保留的數(shù)據(jù)信用的個數(shù),如 前面所討論的。
在一個實施例中,可以針對數(shù)據(jù)有效載荷大致在期望的有效載荷大小中間的分組 初始化頭部和數(shù)據(jù)信用(及對應(yīng)的緩沖存儲器分配)。例如,在一個實施例中,接口 20可以 是PCIe接口,而數(shù)據(jù)有效載荷的大小可以在0到256字節(jié)之間,且信用可以針對1 字節(jié) 的有效載荷初始化。然后,可以響應(yīng)于在操作過程中所經(jīng)歷的有效載荷的實際大小而執(zhí)行 動態(tài)調(diào)整。
圖7是接收器14的一個實施例更具體的框圖,用于實現(xiàn)動態(tài)信用管理的一個實施 例及前面討論過的數(shù)據(jù)信用的早期釋放。如前面所討論的,圖7的實施例可以包括寄存器 28A和28B及FIFO 28C.此外,還包括釋放的頭部信用(HCrs)寄存器^D、最大額外頭部 信用(MaxExHead)寄存器^E、最大召回(recall)頭部信用(MaxRecHead)寄存器^F、掛 起的(pending)頭部信用(PendHeadCr)寄存器^G、掛起的數(shù)據(jù)信用(PendDataCr)寄存 器觀!1、實現(xiàn)的數(shù)據(jù)信用(RlzdDataCr)寄存器和實現(xiàn)的頭部信用(RlzdHeadCr)寄存器 ^J,這些寄存器全部都耦合到信用管理單元沈,如圖7所示。
釋放的頭部信用寄存器28D可以類似于寄存器^B,但還可以累積已經(jīng)釋放的頭 部信用??蛇x地,如前面所提到的,如果期望的話,釋放的頭部信用和釋放的數(shù)據(jù)信用可以 累積在同一寄存器的兩個字段中。MaxExHead和MaxRecHead寄存器28E-28F可以設(shè)置關(guān)于 動態(tài)信用管理的界限。這些寄存器可以如下面所討論的那樣由信用管理單元26自動設(shè)置, 或者如果期望的話可以由軟件編程。具體而言,可以通過扣留(withhold)數(shù)據(jù)信用來分配 的附加頭部信用的最大個數(shù)是由MaxExHead寄存器^E指示的??梢员豢哿粢员汜尫鸥郊?數(shù)據(jù)信用的頭部信用的最大個數(shù)是由MaxRecHead寄存器28F指示的。
掛起的頭部信用和掛起的數(shù)據(jù)信用寄存器^G_28H可以累積計劃的頭部和數(shù)據(jù) 信用調(diào)整以及為滿足計劃調(diào)整而請求的釋放的頭部或數(shù)據(jù)信用。這些累積可以在當(dāng)動態(tài) 調(diào)整發(fā)生的時候執(zhí)行,以便捕捉?jīng)]有在動態(tài)調(diào)整中處理的信用。例如,在一個實施例中,一 個頭部信用的增加需要3個數(shù)據(jù)信用的減少。如果還沒有三個數(shù)據(jù)信用可用,則可用的數(shù) 據(jù)信用可以累積到寄存器^H中。掛起的頭部和數(shù)據(jù)信用可以是帶符號的值,以允許捕捉 所需信用,該所需信用可以通過隨后釋放的信用獲得。實現(xiàn)的數(shù)據(jù)信用和頭部信用寄存器 28I-28J存儲帶符號的實現(xiàn)的頭部信用調(diào)整和數(shù)據(jù)信用調(diào)整。
現(xiàn)在轉(zhuǎn)向圖8,示出了例示在系統(tǒng)10初始化過程中接收器14的一個實施例執(zhí)行適 應(yīng)性信用管理的操作的高級流程圖。對于也實現(xiàn)數(shù)據(jù)信用的早期釋放的實施例,圖8的操 作可以是圖4的操作的附加。盡管為了方便理解而以特定次序示出了各個塊,但也可以采 用其它次序。塊可以在接收器14內(nèi)按組合邏輯并行執(zhí)行。整體來看,塊、塊的組合和/或 流程圖可以在多個時鐘周期上傳送。
信用管理單元沈可以將MaxExHead寄存器28A初始化為所允許的最大頭部個數(shù) (#CMD)減去為中等大小的分組所分配的頭部信用個數(shù)(header_CreditS)。#CMD可以是硬 件最大值,或者可以由軟件根據(jù)頭部BU 30的分配來編程。例如對于中等大小的分組,頭部 信用的個數(shù)可以等于數(shù)據(jù)BU的個數(shù)除以二。因此,附加頭部信用的最大個數(shù)可以是頭部BU 30中剩余的、還未分配的空間(塊80)。召回的頭部信用的最大個數(shù)(被動態(tài)移除以便允 許附加數(shù)據(jù)信用的頭部信用-MaxRecHead)可以初始化為目前頭部信用的一半或者頭部信 用減去緩沖存儲器16中數(shù)據(jù)BU總數(shù)除以4的整數(shù)部分中的最小值(塊82)。頭部信用個 數(shù)的一半可以被選擇作為用于最大分組的合理個數(shù)。對于這種實施例,數(shù)據(jù)BU個數(shù)除以4 可以是最小值,因為最大數(shù)據(jù)有效載荷是4個BU。應(yīng)當(dāng)指出,在一個實施例中,如果頭部信 用的初始個數(shù)小于或者等于2,則最大召回頭部信用可以設(shè)置成零。當(dāng)有兩個或者一個頭部 信用時,不能通過減少頭部信用來實現(xiàn)任何好處,因為頭部信用的缺乏可能阻止附加數(shù)據(jù) 信用的使用。信用管理單元26可以廣告頭部信用的個數(shù)和DU_Adv數(shù)據(jù)信用(塊84)。
現(xiàn)在轉(zhuǎn)向圖9,示出了接收器14的一個實施例響應(yīng)于接收到分組的操作的高級流 程圖。對于也實現(xiàn)數(shù)據(jù)信用的早期釋放的實施例,圖9的操作可以是圖5操作的附加。盡管 為了方便理解而以特定次序示出了各個塊,但也可以采用其它次序。塊可以在接收器14內(nèi) 按組合邏輯并行執(zhí)行。整體來看,塊、塊的組合和/或流程圖可以在多個時鐘周期內(nèi)傳送。
一般來說,信用管理單元沈可以根據(jù)其數(shù)據(jù)有效載荷的大小而將分組歸到4類中 的一類,而且可以根據(jù)類別來調(diào)整信用。因此,本實施例可以基于每個接收到的分組進行調(diào) 整。根據(jù)期望,其它實施例可以對兩個或更多個分組監(jiān)視分組的大小,以便進行調(diào)整。
如果分組不包括數(shù)據(jù)有效載荷(判決塊90,“是”分支),則分組是CatO分組,而 且不做調(diào)整。如果分組包括的數(shù)據(jù)有效載荷小于或者等于中等大小分組數(shù)據(jù)有效載荷的 1/2 (例如,以上提到的PCIe實施例中的64個字節(jié))(判決塊92,“是”分支),則分組是Catl 分組。針對Catl分組的數(shù)據(jù)有效載荷相對小,因此減少數(shù)據(jù)信用并增加頭部信用可以導(dǎo) 致更好的接口帶寬利用(塊94)。如果分組包括在中等大小分組的1/2和中等大小分組的 11/2之間的數(shù)據(jù)有效載荷(判決塊96,“是”分支),則分組是Cat2分組。在Cat2中,分組 數(shù)據(jù)有效載荷大致是中等大小。在Cat2大小范圍之內(nèi),初始的頭部和數(shù)據(jù)信用大致是正確 的。如果掛起的和實現(xiàn)的信用非零,則信用管理單元可以沿最近調(diào)整的相反方向調(diào)整信用 (塊98)。即,如果最近的調(diào)整是增加頭部信用并減少數(shù)據(jù)信用,則信用管理單元可以增加 數(shù)據(jù)信用并減少頭部信用。如果最近的調(diào)整是減少頭部信用并增加數(shù)據(jù)信用,則信用管理 單元可以減少數(shù)據(jù)信用并增加頭部信用。最后,如果數(shù)據(jù)有效載荷大(大于中等大小分組 的1.5倍,判決塊96,“否”分支),則分組是Cat3分組。大的有效載荷(Cat3)分組可以受 益于更多的數(shù)據(jù)信用和更少的頭部信用,因此信用管理單元26可以減少頭部信用并增加 數(shù)據(jù)信用(塊100)。
應(yīng)當(dāng)指出,如果MaxHeadCr和MaxRecHead寄存器^F_28G用于對動態(tài)信用調(diào)整設(shè)置界限,則圖9的操作可能受到限制(即,如果調(diào)整會破壞MaxHeadCr和MaxRecHead寄存 器^F-28G設(shè)置的界限,則信用不能象所示出的那樣進行調(diào)整)。
圖10和11示出了針對一個實施例更具體地例示圖9的操作的偽碼。圖7所示 的寄存器名稱在偽碼中例示。此外,為了偽碼中的方便,對頭部和數(shù)據(jù)信用使用向量化的 標(biāo)記。具體而 H,adaptive_credits 定義為{adaptive_header_credits, adaptive_data_ credits}且 pending—credits 定義為{PendHeadCr, PendDataCr}。 adaptive—credits 是 (Bjftijf ^) 禾口^fiSi言用 O releasing—header—credits 禾口 releasing—data—credits 是目前被釋放的信用。如前面所描述的,對于給定的分組,當(dāng)實現(xiàn)的數(shù)據(jù)誤差小于最大誤差 時,releasing_data_credits可以包括早先釋放的數(shù)據(jù)信用。這兩個釋放信用變量還包括 由于從緩沖存儲器16的分組消費而釋放的信用。
圖10例示了 adaptive_credits的生成。總的來說,如果還沒有到達界限,則 adaptive_credits等于pending_credits。否則,依賴于所接收到的分組的類別(并且,在 Cat2分組的情況下,還依賴于最近的調(diào)整),adaptive_credits可以包括pending_credits 加上或者減去信用。在本實施例中,最近的調(diào)整是通過將掛起的頭部信用和實現(xiàn)的頭部信 用求和并將它們與零做比較來檢測的。
如可以從圖10看到的,在本實施例中,1個頭部信用等于3個數(shù)據(jù)信用。因此,增 加1個頭部信用就減去了 3個數(shù)據(jù)信用,反之亦然?;贜-I,其它實施例可以有頭部信用 對數(shù)據(jù)信用的不同比率。
最后,在圖 10 中,計算中間值 remaining_pending_d。remaining_pending_d 應(yīng) 當(dāng)小于或者等于0并且小于3。在一個實施例中,如果PendHeadCr是負(fù)的,則remaining, pending_d 是 0。
圖11例示了基于圖10中確定的適應(yīng)性信用和釋放信用對可實現(xiàn)信用的計算。同 樣,圖11的例子是基于3個數(shù)據(jù)信用等于1個頭部信用,這允許在任何給定的時間點有1 或2個數(shù)據(jù)信用掛起。最后,在圖11中示出了對寄存器^B、28D* ^GISJ的更新,其中 “+=”代表將寄存器的當(dāng)前值遞增等號右側(cè)的值,而“_ =”代表將寄存器的當(dāng)前值遞減等 號右側(cè)的值。
一旦完全理解了以上的公開內(nèi)容,各種變化與修改就將對本領(lǐng)域技術(shù)人員變得顯 而易見。以下權(quán)利要求是要解釋為包含所有這種變化和修改。1權(quán)利要求
1.一種裝置,包括接收器,包括配置成管理用于接口的流控制信用的信用管理單元,在使用過程中該接 收器耦合到所述接口,其中在所述接口上接收到的每個分組都包括分組頭部并可選地包括 分組數(shù)據(jù),而且其中分組數(shù)據(jù)是關(guān)于流控制信用中依賴于分組數(shù)據(jù)大小的數(shù)據(jù)信用而測量 的,其中每個數(shù)據(jù)信用代表固定個數(shù)的數(shù)據(jù)字節(jié);及緩沖存儲器,耦合到所述接收器并且配置成存儲與由所述接收器在所述接口上接收到 的分組相對應(yīng)的分組頭部和分組數(shù)據(jù),其中所述緩沖存儲器能由所述接收器按緩沖單元進 行分配,所述緩沖單元是數(shù)據(jù)信用大小的N倍,其中N是大于1的整數(shù);及其中,數(shù)據(jù)信用的總數(shù)等于所述緩沖存儲器中能用于存儲分組數(shù)據(jù)的緩沖單元個數(shù)的 N倍,而且其中,所述信用管理單元配置成,基于當(dāng)分組數(shù)據(jù)沒有填滿緩沖單元時不可用的 數(shù)據(jù)信用的最大個數(shù)而且進一步基于允許同時傳送的分組個數(shù),來保留總數(shù)據(jù)信用中的多 個,而且其中,所述信用管理單元配置成,響應(yīng)于接收到導(dǎo)致少于不可用數(shù)據(jù)信用的最大個 數(shù)的給定分組的分組數(shù)據(jù),而釋放一個或多個數(shù)據(jù)信用,其中所述信用管理單元配置成在 所述給定分組被消費之前釋放一個或多個數(shù)據(jù)信用。
2.如權(quán)利要求1所述的裝置,其中所述信用管理單元配置成響應(yīng)于對給定分組的消費 而釋放附加的數(shù)據(jù)信用,其中附加的數(shù)據(jù)信用的個數(shù)等于與所述給定分組的分組數(shù)據(jù)相對 應(yīng)的數(shù)據(jù)信用的個數(shù)減去響應(yīng)于接收到所述給定分組而釋放的一個或多個數(shù)據(jù)信用。
3.如權(quán)利要求1所述的裝置,其中所述接收器配置成在對所述裝置的初始化過程中在 所述接口上向發(fā)送器廣告數(shù)據(jù)信用的個數(shù),其中所廣告的數(shù)據(jù)信用的個數(shù)不大于數(shù)據(jù)信用 的總數(shù)減去保留的數(shù)據(jù)信用。
4.如權(quán)利要求1所述的裝置,其中,對于給定分組不可用的數(shù)據(jù)信用的最大個數(shù)等于N-I。
5.如權(quán)利要求1所述的裝置,其中,所述信用管理單元配置成響應(yīng)于監(jiān)視所接收到的 分組中包括的分組數(shù)據(jù)的大小,來動態(tài)地調(diào)整用于存儲分組頭部的第一緩沖存儲器數(shù)量和 用于存儲分組數(shù)據(jù)的第二緩沖存儲器數(shù)量。
6.一種方法,包括從接口接收分組,其中所述分組包括分組數(shù)據(jù),該分組數(shù)據(jù)基于其大小而在所述接口 上消費發(fā)送器處的一個或多個數(shù)據(jù)信用,其中每個數(shù)據(jù)信用都代表固定個數(shù)的數(shù)據(jù)字節(jié);將所述分組數(shù)據(jù)存儲在緩沖存儲器中,其中所述緩沖存儲器能分配成按緩沖單元存儲 分組數(shù)據(jù),所述緩沖單元是數(shù)據(jù)信用大小的N倍,其中N是大于1的整數(shù),而且其中,響應(yīng) 于所述分組數(shù)據(jù)沒有填滿分配成存儲該分組數(shù)據(jù)的緩沖單元,至多有N-I個數(shù)據(jù)信用不可 用;及響應(yīng)于接收到所述分組并且在該分組被消費之前,確定所述分組數(shù)據(jù)導(dǎo)致少于N-I個 不可用的數(shù)據(jù)信用,并且響應(yīng)于該確定而釋放不可用的一個或多個數(shù)據(jù)信用。
7.如權(quán)利要求6所述的方法,還包括從數(shù)據(jù)信用的總數(shù)中保留多個數(shù)據(jù)信用,其中所 述數(shù)據(jù)信用的總數(shù)等于所述緩沖存儲器中能用于存儲分組數(shù)據(jù)的緩沖單元的個數(shù)的N倍, 其中所述多個數(shù)據(jù)信用的個數(shù)是基于當(dāng)分組數(shù)據(jù)沒有填滿緩沖單元時不可用的N-I個數(shù) 據(jù)信用并且還進一步基于允許同時傳送的分組個數(shù)。
8.如權(quán)利要求7所述的方法,還包括在初始化過程中在所述接口上向發(fā)送器廣告數(shù)據(jù)信用的個數(shù),其中所廣告的數(shù)據(jù)信用的個數(shù)不大于所述數(shù)據(jù)信用的總數(shù)減去所保留的數(shù)據(jù)信用。
9.如權(quán)利要求6所述的方法,還包括響應(yīng)于對分組的消費而釋放附加的數(shù)據(jù)信用,其 中所述附加的數(shù)據(jù)信用的個數(shù)等于與給定分組的分組數(shù)據(jù)相對應(yīng)的數(shù)據(jù)信用的個數(shù)減去 響應(yīng)于接收到所述給定分組而釋放的一個或多個數(shù)據(jù)信用。
10.如權(quán)利要求6所述的方法,還包括向發(fā)送器發(fā)送對釋放的數(shù)據(jù)信用的指示。
11.一種裝置,包括接收器,包括配置成管理用于接口的流控制信用的信用管理單元,在使用過程中該接 收器耦合到所述接口,其中在所述接口上接收到的每個分組都包括頭部并可選地包括數(shù) 據(jù),而且其中頭部是關(guān)于用于所述接口上的流控制的一個或多個頭部信用而測量的,而數(shù) 據(jù)是關(guān)于用于所述接口上的流控制的一個或多個數(shù)據(jù)信用而測量的,每個數(shù)據(jù)信用代表固 定個數(shù)的數(shù)據(jù)字節(jié);及緩沖存儲器,耦合到所述接收器并且配置成存儲與由所述接收器在所述接口上接收到 的分組相對應(yīng)的分組頭部和分組數(shù)據(jù);及其中所述信用管理單元配置成,響應(yīng)于一個或多個所接收到的分組中分組數(shù)據(jù)的大 小,來動態(tài)調(diào)整用于存儲分組頭部的第一緩沖存儲器數(shù)量和用于存儲分組數(shù)據(jù)的第二緩沖 存儲器數(shù)量,而且其中,所述信用管理單元配置成響應(yīng)于該動態(tài)調(diào)整而在所述接口上向發(fā) 送器釋放數(shù)據(jù)信用和頭部信用。
12.如權(quán)利要求11所述的裝置,其中,所述信用管理單元增加第一數(shù)量并減少第二數(shù) 量,而且其中,所述信用管理單元配置成扣留與被消費的分組相對應(yīng)的一個或多個數(shù)據(jù)信 用,并且配置成釋放一個或多個頭部信用以實現(xiàn)修改。
13.如權(quán)利要求12所述的裝置,其中,頭部信用代表N-I乘以由數(shù)據(jù)信用代表的固定個 數(shù)的數(shù)據(jù)字節(jié),而且其中,所述信用管理單元配置成扣留N-I個數(shù)據(jù)信用以釋放一個頭部 fe用。
14.如權(quán)利要求12所述的裝置,其中,所述信用管理單元配置成,響應(yīng)于接收到分組數(shù) 據(jù)大小小于第一閾值的一個或多個分組,而增加第一數(shù)量并減少第二數(shù)量。
15.如權(quán)利要求11所述的裝置,其中,所述信用管理單元減少第一數(shù)量并增加第二數(shù) 量,而且其中,所述信用管理單元配置成扣留與被消費的分組相對應(yīng)的一個或多個頭部信 用,并且配置成釋放一個或多個數(shù)據(jù)信用,以便在發(fā)送器處實現(xiàn)調(diào)整。
16.如權(quán)利要求15所述的裝置,其中,所述信用管理單元配置成,響應(yīng)于接收到分組數(shù) 據(jù)大小大于第二閾值的一個或多個分組,而減少第一數(shù)量并增加第二數(shù)量。
17.如權(quán)利要求11所述的裝置,其中,所述信用管理單元配置成,響應(yīng)于接收到分組數(shù) 據(jù)大小大于第一閾值并且小于第二閾值的一個或多個分組,來執(zhí)行與最近所執(zhí)行的調(diào)整相 反的調(diào)整。
18.如權(quán)利要求11所述的裝置,其中,所述信用管理單元配置成確定第一數(shù)量的最小 值和第一數(shù)量的最大值,而且其中,所述信用管理單元配置成根據(jù)該最小值和最大值限制 第一數(shù)量和第二數(shù)量的動態(tài)修改。
19.一種在配置成管理用于接口的流控制信用的接收器中的方法,其中在使用過程中 該接收器耦合到所述接口,其中在所述接口上接收到的每個分組都包括頭部并可選地包括數(shù)據(jù),而且其中所述頭部是關(guān)于用于所述接口上的流控制的頭部信用而測量的,而且其中 數(shù)據(jù)是關(guān)于用于所述接口上的流控制的一個或多個數(shù)據(jù)信用而測量的,每個數(shù)據(jù)信用代表 固定個數(shù)的數(shù)據(jù)字節(jié),該方法包括動態(tài)調(diào)整頭部信用的第一數(shù)量和數(shù)據(jù)信用的第二數(shù)量,該動態(tài)調(diào)整是響應(yīng)于一個或多 個所接收到的分組中的分組數(shù)據(jù)的大小的;及響應(yīng)于該動態(tài)調(diào)整,在所述接口上向發(fā)送器釋放數(shù)據(jù)信用和頭部信用。
20.如權(quán)利要求19所述的方法,其中,所述動態(tài)調(diào)整包括增加第一數(shù)量并減少第二數(shù) 量,而且其中,釋放包括扣留與被消費的分組相對應(yīng)的一個或多個數(shù)據(jù)信用而釋放一個或 多個頭部信用,以便在所述發(fā)送器處實現(xiàn)調(diào)整。
21.如權(quán)利要求19所述的方法,其中,所述動態(tài)調(diào)整包括減少第一數(shù)量并增加第二數(shù) 量,而且其中,釋放包括扣留與被消費的分組相對應(yīng)的一個或多個頭部信用而釋放一個或 多個數(shù)據(jù)信用,以便在所述發(fā)送器處實現(xiàn)調(diào)整。
全文摘要
在一個實施例中,基于信用的流控制接口上的接收器配置成,當(dāng)接收到導(dǎo)致緩沖存儲器中較少未使用數(shù)據(jù)信用的數(shù)據(jù)有效載荷時,早期釋放一個或多個數(shù)據(jù)信用,其中緩沖存儲器以比數(shù)據(jù)信用粗的粒度分配。在另一個實施例中,頭部信用和數(shù)據(jù)信用是基于實際的分組數(shù)據(jù)有效載荷大小而動態(tài)調(diào)整的。
文檔編號G06F13/38GK102037455SQ200980117882
公開日2011年4月27日 申請日期2009年12月9日 優(yōu)先權(quán)日2008年12月29日
發(fā)明者J·王, 陳宗建 申請人:蘋果公司