TW201703475A - 用於使用多個連結的記憶體清單的方法及裝置 - Google Patents

用於使用多個連結的記憶體清單的方法及裝置 Download PDF

Info

Publication number
TW201703475A
TW201703475A TW104124865A TW104124865A TW201703475A TW 201703475 A TW201703475 A TW 201703475A TW 104124865 A TW104124865 A TW 104124865A TW 104124865 A TW104124865 A TW 104124865A TW 201703475 A TW201703475 A TW 201703475A
Authority
TW
Taiwan
Prior art keywords
memory
address
linked
indicator
list
Prior art date
Application number
TW104124865A
Other languages
English (en)
Other versions
TWI684344B (zh
Inventor
凡西 潘查努拉
索林 佩托
克勤 韓
札希 丹尼爾
Original Assignee
凱為公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 凱為公司 filed Critical 凱為公司
Publication of TW201703475A publication Critical patent/TW201703475A/zh
Application granted granted Critical
Publication of TWI684344B publication Critical patent/TWI684344B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9015Buffering arrangements for supporting a linked list

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Abstract

一種用於將去往記憶體緩衝器的資料排隊的裝置和方法,所述方法包括從多個佇列中選擇佇列;從所選擇的佇列接收資料權杖,並且通過佇列模組從緩衝器管理器請求位址和指針以用於由所述緩衝器管理器分配的用於存儲所述資料權杖的位址。隨後,通過所述緩衝器管理器訪問記憶體列表,並且在所述記憶體列表中生成位址和指向分配的位址的指標,其中包括用於附加位址分配的多個連結的記憶體清單。所述方法還包括,向所訪問的記憶體列表中寫入用於所分配的位址的指針,其中所述指針將所分配的位址連結在一起,並且在從所述佇列接收到隨後的資料權杖時向其他記憶體列表移植附加位址分配,並且生成將所述其他記憶體列表中的所分配的位址連結在一起的附加指標。

Description

用於使用多個連結的記憶體清單的方法及裝置
本公開內容總體上涉及網路資料傳輸領域,並且更具體地涉及一種用於在將資料權杖從所選擇的佇列出隊和入隊期間連結多個記憶體清單以便增加切換式網路在傳輸資料封包時的輸送量的系統和方法。
在資料交換網路中,資料業務被分類為在緩衝器中的大量佇列中存儲的各種流。在路由器或者其他網路元件中,所存儲的佇列通常競爭公共的外向通信鏈路或者出站埠(例如物理通信鏈路或者偽線)。因此,所緩衝的佇列需要在出站側被調度。因此,需要由路由器中輸出側的權杖調度設備在傳輸之前執行處理以選擇所排隊的封包中的哪個封包將為佇列中的為了外向傳輸的下一個封包。
通常,在路由過程中,來自不同源埠的資料權杖基於其源埠和目的埠以及業務類型而被分類。它們隨後被分類成緩衝器中的不同佇列。通過路由器網路和/或由路由器網路處理的資料權杖至少暫時被維持在緩衝器記憶體中。通常,被稱為鏈表佇列的記憶體資料結構被維持與該緩衝器記憶體相關聯。該鏈表佇列包含分別指向該緩衝器記憶體中存儲有與每個資料權杖關聯的資料的每個存儲位置的指標的清單。常規的佇列結構通常在一個連續的順序清單中存儲與在該緩衝器記憶體中當前存儲的每個資料權杖關聯的每個指標。當資料權杖進入佇列中時,每個佇列的狀態被更新並 且相關鏈表(linklist)指針被更新。基於輸出埠的可用性,調度器選擇正確的調度演算法以將資料權杖從佇列中出隊。當資料權杖移出佇列時,每個佇列的狀態和鏈表指標將然後再次被更新。
由於需要基於源埠和目的埠以及業務類型來對權杖分類的步驟,所以在多播業務資料封包的處理中產生了附加延遲時間。首先,與資料封包關聯的資料權杖隨後被分類到不同的佇列中,並且然後在進入佇列中時,該佇列的狀態被更新。然後,基於埠可用性,調度器選擇調度演算法來將權杖從緩衝器記憶體中的對應佇列中出隊。這一步驟等待埠可用性必須重複用於待發送的資料權杖中的每個資料權杖。另外,如果需要資料權杖的副本被重複並且發送至額外的埠,則需要進行服務品質(QoS)演算法檢查。此外,當為了例如高優先順序業務(諸如控制業務或者語音/視頻延遲敏感業務、傳輸)需要保證優先服務時,必須在傳輸該資料權杖時進行一些額外的檢查。
緩衝器管理器的性能受到入隊和出隊處理操作中的資料權杖的流水線流量的限制。當緩衝器充滿時,該緩衝器管理器必須等待直到資料權杖被出隊才能將附加資料權杖入隊。為了降低這裡的延遲時間,引入並聯緩衝器以使得附加資料權杖能夠入隊。然而,這樣的附加並聯緩衝器使用附加資源和處理功率。此外,每當緩衝器記憶體要在由路由器執行的某種操作中處理時,必須訪問或者定址該佇列以便獲得與該權杖關聯的指針。
隨著與路由器或者其他封包交換機關聯的處理速度增加(例如每秒10吉位元組或者更高),與用來維持佇列的記憶體關聯的輸入和輸出頻寬和訪問延遲變得至關重要。也就是說,鑒於每次需要權杖指標時都必須訪問常規的佇列的事實,佇列記憶體可能變為顯著瓶頸。
因此,有利的是,提供一種使用位址鏈表的緩衝器記憶體管理,其通過使用虛擬佇列技術、基於提供多個入隊和出隊權杖緩衝器操作的鏈表能夠增加在當前設備中可以執行的入隊和出隊操作的當前限制數目。
本公開內容的實施例提供了一種用於使用多個清單類型子佇列形成虛擬佇列的鏈表的技術,該子佇列清單的實現使得能夠並聯調度多個資料權杖傳輸,從而顯著增加路由器中的交換機制的輸送量。
因此,本公開內容的實施例採用將去往記憶體緩衝器的資料排隊的方法,所述方法包括從多個佇列中選擇佇列並且從所選擇的佇列接收資料權杖。佇列模組從緩衝器管理器請求用於由緩衝器管理器分配的用於存儲資料權杖的位址的指標和位址。然後,通過緩衝器管理器訪問記憶體列表,並且在記憶體列表中生成指向所分配的位址的指標和地址。所訪問的記憶體列表包括用於附加位址分配的多個連結的記憶體清單。此外,向所訪問的記憶體列表中寫入用於所分配的位址的指針。該指標將所分配的位址連結在一起。該方法還包括:在從所述佇列接收到隨後的資料權杖時向其他記憶體列表移植附加位址分配,並且生成將所述其他記憶體列表中所分配的位址連結在一起的附加指標。
根據本公開內容的另一實施例採用將去往記憶體緩衝器的資料排隊的裝置,所述裝置包括:用於從多個佇列中選擇佇列以及從所選擇的佇列接收資料權杖的選擇器模組;回應於所述模組以用於請求由所述管理器分配的用於存儲所述資料權杖的位址的指標和位址的的管理器;回應於所述管理器以訪問記憶體列表並且在所述記憶體列表中生成指向所分配的位址的指標和位址的分配模組。所訪問的記憶體列表包括用於附加位址分配的多個連結的記憶體清單。所述分配模組向所訪問的記憶體列表中寫入用於所分配的位址的指針,其中所述指針將所分配的位址連結在一起,並且 所述分配模組在從所述佇列接收到隨後的資料權杖時向其他記憶體列表移植附加位址分配,並且生成將所述其他記憶體列表中的所分配的位址連結在一起的附加指標。
根據本公開內容的又一實施例,所述佇列模組包括所述佇列模組包括用於將資料權杖向所連結的記憶體清單的所分配的位址中入隊的入隊模組以及用於將資料權杖從所連結的記憶體清單的所分配的位址出隊的出隊模組。所述入隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一次性入隊,其中所述多個資料權杖具有通過指標跨所述多個記憶體清單連結的位址。所述出隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一次性出隊,其中所述多個資料權杖具有通過指標跨所述多個記憶體清單連結的位址。
本發明內容必然包含對細節的簡化、概括和省略。因此,本領域技術人員應當理解,本發明內容僅是說明性的,而非意在以任何方式限制。僅由申請專利範圍來限定的本公開內容的其他方面、發明特徵和優點將在以下給出的非限制性詳細描述中變得清楚。
100‧‧‧資料權杖處理系統
105‧‧‧輸入封包
110‧‧‧處理器
120‧‧‧QoS及入隊處理器
130‧‧‧緩衝器管理器
140‧‧‧調度出隊
150‧‧‧緩衝器記憶體
160‧‧‧輸出封包
200‧‧‧緩衝記憶體管理器
210‧‧‧緩衝器管理器
220‧‧‧佇列尾指標請求
230‧‧‧當前指針、下一指針
240‧‧‧佇列尾指標
250‧‧‧佇列頭指標
260‧‧‧空指針
270‧‧‧佇列頭指標請求
275‧‧‧頭指針
280‧‧‧更新的頭指針
290‧‧‧空指針更新
300‧‧‧虛擬佇列鏈表配置
400‧‧‧佇列鏈表配置
500‧‧‧頭指標和尾指標配置
505‧‧‧資料權杖
510‧‧‧初始頭指標
515‧‧‧尾指標
520‧‧‧頭指針
525‧‧‧資料權杖
530‧‧‧組1
535‧‧‧尾指標
540‧‧‧Q021
545‧‧‧Q01N
550‧‧‧尾指標
555‧‧‧組2
560‧‧‧Q032
565‧‧‧指標
570‧‧‧資料權杖
585‧‧‧佇列尾指標
586‧‧‧佇列頭指標
595‧‧‧佇列頭指標
600‧‧‧框圖
601‧‧‧框圖
605‧‧‧第一並聯鏈表
610‧‧‧第二並聯鏈表
615‧‧‧第三並聯鏈表
620‧‧‧第四並聯鏈表
625‧‧‧外部虛擬耦合
630‧‧‧外部虛擬耦合
635‧‧‧並聯記憶體子列表
640‧‧‧並聯記憶體子列表
645‧‧‧並聯記憶體子列表
650‧‧‧並聯記憶體子列表
655‧‧‧空指標返回
660‧‧‧空指標返回
705‧‧‧佇列選擇
710‧‧‧入隊模組請求
715‧‧‧緩衝器管理器檢查
720‧‧‧入隊模組寫入
725‧‧‧出隊請求
730‧‧‧緩衝器管理器分配
735‧‧‧出隊模組請求
800‧‧‧緩衝器管理器
810‧‧‧輸入
820‧‧‧入隊模組
830‧‧‧緩衝器記憶體
840‧‧‧調度器
850‧‧‧緩衝器記憶體
910‧‧‧緩衝器管理器模組配置框圖
920‧‧‧佇列尾指標模
930‧‧‧佇列頭指標模組
950‧‧‧空指針
通過閱讀以下詳細描述並且結合附圖,將能更好地理解本公開內容的實施例,在附圖中相似的附圖標記代表相似的元件,並且其中:第一圖是描繪根據本公開內容的實施例的示例性路由器中的緩衝器管理器的配置的框圖;第二圖是根據本公開內容的實施例的緩衝器管理器的框圖,該緩衝器管理器描繪示例性路由器中的佇列尾指標和佇列頭指標的配置;第三圖圖示根據本公開內容的實施例的示例性虛擬 佇列鏈表配置;第四圖圖示根據本公開內容的實施例的示例性佇列鏈表配置;第五A圖、第五B圖圖示根據本公開內容的實施例的具有鏈表結構的示例性頭指標和尾指標配置的框圖;第六A圖、第六B圖圖示根據本公開內容的實施例的將資料權杖在多個記憶體清單結構中連結在一起的框圖;第七圖是示出根據本公開內容的實施例的具有鏈表結構的緩衝器管理器操作的流程圖;第八圖是根據本公開內容的實施例的緩衝器管理器的框圖,該緩衝器管理器描繪示例性路由器中的佇列尾指標和佇列頭指標的配置;以及第九圖是描繪根據本公開內容的示例性路由器中的緩衝器管理器模組的配置的框圖。
現在將詳細參考本發明的優選實施例,其示例在附圖中圖示。雖然本發明結合優選實施例來描述,然而應當理解,其並非意在將本發明限於這些實施例。相反,本發明意在涵蓋備選、修改和等同方案,這些備選、修改和等同方案可以被包括在如所附申請專利範圍所限定的本發明的精神和範圍內。此外,在對本發明的實施例的以下詳細描述中,提出了大量具體細節以便提供對本發明的透徹理解。然而,本領域普通技術人員應當認識到,可以在沒有這些具體細節的情況下來實踐本發明。在其他情況下,沒有詳細描述公知的方法、過程、部件和電路,以避免不必要地混淆本發明的實施例的各個方面。示出本發明的實施例的附圖是半圖解性的並且並未按比例繪製,特別地,其中一些尺度是為了清楚地呈現並且在附圖中被放大示出。類似地,雖然附圖中的視圖出於便於理解的目 的而通常示出了相似的方位,然而附圖中的這一描繪在極大程度上是任意的。通常,本發明可能在任何方位中操作。
然而應當銘記,所有這些術語和相似的術語要與適當的物理量關聯並且僅是適用於這些物理量的方便的標記。除非清楚地指出或者根據以下討論能夠清楚地看出,否則應當理解,遍及本發明,使用諸如“處理”或“訪問”或“執行”或“存儲”或“渲染”等術語的討論是指將被表示為電腦系統的寄存器和記憶體以及其他電腦可讀介質內的物理(電子)量的資料操縱和變換成被表示為電腦系統記憶體或寄存器或者其他這樣的資訊存儲、傳輸或用戶端設備內的物理量的資料的電腦系統或類似的電子計算設備的動作和處理。當若干實施例中出現某個部件時,相同附圖標記的使用表示該部件與原始實施例中圖示的部件相同。
入隊和出隊緩衝器記憶體管理
第一圖示出在其中可以實現本公開內容的資料權杖處理系統100。該系統100包括處理器110,該處理器110具有複製、QoS及入隊處理器120、緩衝器管理器130、調度出隊140和緩衝器記憶體150。該處理器110被配置成在從其接收資料權杖和其他資料權杖的網路與去往由調度出隊140控制的輸出埠160的網路之間提供介面。具有複製、QoS及入隊處理器120、緩衝器管理器130、調度出隊140和緩衝器記憶體150的處理器110可以被實現為例如安裝在路由器或交換機的線路或埠上的一個或多個積體電路。該資料權杖可以被認為但是不限於待傳輸的資料封包的代表部分。例如,資料封包可以具有頭部和淨荷部二者。該資料權杖將通常包含資料封包的頭部或者中繼資料的收集或者與頭部關聯的各方面或者與整個資料封包關聯的各方面。另外,如果該頭部在64位至128位之間,則所需的資料權杖取決於網路需要可以是45-50位。該資料權杖可以與指標所指的資料封包關聯,並且該資料封包可以被存儲在由耦合至該資料封包的關聯的指標所指的外 部記憶體塊中。
應當理解,第一圖所示的系統元件的特定佈置僅是說明性示例。更特別地,如先前所指出的,本公開內容可以根據任何類型的封包或權杖處理器來實現並且不限於任何特定封包處理應用。
第二圖示出根據本公開內容的實施例的緩衝記憶體管理器200以及緩衝管理操作210中的佇列記憶體中的佇列尾指標240、佇列頭指標250和空指針260。應當理解,鏈表指標240至260可以在處理器120和140(第一圖)的控制下駐留並且被維持在緩衝器管理器130(第一圖)中。每個佇列具有佇列頭指標250和佇列尾指標240二者。該佇列尾指標240規定寫入操作的位置並且該佇列頭指標250規定讀取操作的位置。在執行讀取操作時,該佇列頭指標250將沿著每個新的讀取操作的佇列移位元。同樣地,該佇列尾指標240將沿著每個新的寫入操作的佇列移位元。因此,上一佇列尾指標240標識週期中的上一寫入操作,上一佇列頭指標250標識週期中的上一讀取操作。
如第二圖所示,在根據佇列尾指標請求220訪問特定佇列時,讀取新的佇列頭指標250和新的佇列尾指標240。接收佇列的權杖。在接收該權杖之後,可以訪問以讀取和處理關於下一頭指標的資訊。
第三圖示出根據權杖被接收的順序被填入的所選擇的Q0的並聯鏈表配置。初始請求的指標可以是佇列頭指標或者佇列尾指標。每個Q0將被分成4個連結的鏈表Q00至Q03。因此,Q00可以被分成4個記憶體位置Q00至Q03,其是第三圖中示出的列表Q’000至Q’002。Q00至Q03中的單個鏈表被進一步再分成4個子鏈表Q00至Q03。這使得例如在從Q0到現在的一個讀取週期中包括4個存儲位置讀數Q00至Q03或者每個Q00讀數N/4個讀取週期。換言之,將每個Q0的附加的Q00至Q03連結在一起實現了在單個鐘控週 期Q0內接收附加資料權杖集合的能力,這些附加資料權杖集合初始在最高達4個週期的時間內在沒有對附加鏈表的連結的情況下已經被讀入。
第四圖圖示對於Q00而言為N/4的每個Q0的讀取週期。第一鐘控週期可以包括Q00、Q01、Q12和Q00。下一鐘控週期移位N/4在Q01、Q12、Q00和Q01處開始。隨後的週期以Q12開始每個移位N/4。因此,每個隨後的讀取和寫入週期被執行N/4次移位。因此,在特定的Q0鐘控時間內,存在大約最多達N/4的4個鐘控寄存器移位以縮短每個寄存器移位的週期距離。
在第五A圖中,在選擇佇列之後,執行讀取請求並且需要將資料權杖505出隊。調度器回應于該讀取請求彈出所選擇的佇列中的資料權杖。所請求的資料權杖由緩衝器管理器放置在記憶體組的集合的第一可用記憶體位置中,在這一實例中,記憶體組0是被表示為所請求的資料權杖的所分配的位址。頭指標520由該緩衝器記憶體的鏈表類型管理器應用選擇以指向所請求的權杖505.該記憶體位置由該緩衝器管理器標記為Q000。該緩衝器管理器的內部時鐘應用針對正被請求的資料權杖分配4元組的記憶體位置。在接收到資料505的第一權杖之後,可以查明第一鐘控週期Q0的開始點。這一開始點是初始頭指標510被指向的地方並且在初始權杖請求505被讀取和處理之後被再次識別。
每個記憶體位置的集合Q00N被分配上至4個記憶體位置以用於從所選擇的佇列接收的資料權杖。下一記憶體位置經由尾指標515被連結至Q000。緩衝器管理器發送下一讀取請求並且從佇列接收第二資料權杖。該第二資料權杖被動態分配至被表示為Q001的組1中的可用記憶體位置。從該緩衝器管理器接收的下一指針515變成記憶體位置Q001的隨後的頭指針。這一將頭指針和尾指針耦合的菊輪鍊實現了資料權杖從跨記憶體組的離隊操作的兩步過程。例如在開始515和550處的兩個資料權杖是從佇列請求的初 始請求資料權杖Q000 515和Q001 550。權杖Q000 515和Q001 550二者在涉及Q0頭指針510的初始讀取的兩步過程中出隊並且處理來自Q000位置的資料權杖。在處理Q000之後,接著可以讀取下一尾指標515並且由緩衝器管理器標識該下一尾指標515。即,在請求Q0時,讀取Q000,並且接收Q000以及然後接收與Q000關聯的資料,並且標識到下一Q001的路徑。還標識從Q001下一尾指標550至Q002和隨後的下一指標565的路徑。另外,在請求Q0被公開(transpire)時,用於發送與Q0關聯的物件集合的位置已知。另外,圖5示出了用於資料權杖525和570的附加集合的鏈路的其他路徑菊輪鍊。記憶體分配Q030被連結至Q031和隨後的指向組2的地址Q032的尾指標535。位址Q020的記憶體列表分配經由其尾指針被連接至Q021 540。附加分配Q01N 545在隨後週期中的記憶體列表中呈現附加分配。
隨著緩衝器管理器繼續發送讀取請求,創建4個連結的記憶體位置的元組或者集合。在完成4個連結的位置的第一集合時,緩衝器管理器開始下一個4個連結的位置的集合並且繼續創建4個記憶體位置的元組或者集合的這一過程直至所有資料權杖從所選擇的佇列中被彈出。如果有奇數個資料權杖或者資料權杖不足以填充在上一集合中可能發生的待填充的4個連結的位置的集合,則在清單中將有空位置。
接著,第三記憶體位置通過尾指針550類似地耦合至第二記憶體位置Q001。該尾指標550現在是第三記憶體位置Q002的頭指標。第三記憶體位置在組2中通過Q002來表示,並且記憶體位置中的每個記憶體位置被動態地表示並且在跨多個記憶體組遷移的迴圈方式中分配。這一迴圈規定可以將資料在給定時間中轉發到所標識的佇列外部的頻寬輸出或者按照網路交換演算法可以從給定佇列出隊的資料的頻率。例如,在第五A圖中,從Q000 515到Q001 550到Q002 565的迴圈配置被示出為連結記憶體組清單1和 2的集合。每個記憶體組列表510、530和555包括在路徑中被連結在一起的權杖清單Q000至Q03N,使得每個權杖能夠與Q0的集合相關聯。
第五B圖用框圖圖示佇列尾指標585以及佇列尾指標590的相關子塊Q00至Q03。還示出佇列頭指標586以及佇列頭指標595的相關子塊Q00至Q03。佇列尾指標590的堆疊的子塊和佇列頭指標595的堆疊的子塊中的每個子塊在第五圖的組1和2所示的並聯鏈表中被連結在一起。
第六A圖和第六B圖圖示針對由4個並聯鏈表組成的單獨佇列的佇列100並聯鏈表的示例的框圖。應該注意,如果從第六A圖的動態鏈表的示例性實施例添加或者去除一個或多個並聯鏈表,則本公開內容的示例性實施例的可能的概念將不改變。
第六A圖在框圖600中圖示針對由4個並聯鏈表組成的單獨佇列的佇列100並聯鏈表的示例:Q100-0,第一並聯鏈表605;Q100-1,第二並聯鏈表610;Q100-2,第三並聯鏈表615;和Q100-3,第四並聯鏈表620。塊的子列表之間的外部虛擬耦合625、630圖示了鏈表Q100-01到Q100-11到Q100-21到Q100-31並且回到Q100-01,以及Q100-02到Q100-12到Q100-22到Q100-32並且回到Q100-02的迴圈配置中的第一和第二耦合集合。該耦合包括一起連結至4個資料權杖的集合的尾指標和頭指針,其中上一耦合625、630共同用作集合中的上一資料權杖的尾指標和下一數據權杖的頭指標。內部耦合Q100-01到Q100-02到Q100-03表示按照連續順序的各個資料權杖集合的各個並聯清單。因此,資料權杖集合1的上一尾指針被連接至下一資料權杖集合2,並且集合1的上一尾指標用作資料權杖集合2的第一頭指標。在第六A圖的示例中,因為有鏈表Q100-01到Q100-11到Q100-21到Q100-31並且回到Q100-01,以及Q100-02到Q100-12到Q100-22到Q100-32並且回到Q100-02的資料權杖的兩個完整集合,所以有由尾指標525和630生成的、 指向資料權杖集合2和3的兩個頭指標。
另外,在第六A圖中示出將記憶體列表分配入隊和彈出並且將4個資料權杖集合的記憶體分配的多個集合入隊的整個鏈表迴圈類型週期或者迴圈過程。子列表605、610、615和620之間的資料權杖的第一集合的耦合在第六A圖中被表示為“1-1-1-1”。緩衝器管理器依賴于外部計數器應用來跟蹤4個集合中的每個資料權杖集合,並且在緩衝器記憶體中創建虛擬表以存儲具有關聯的頭指標和尾指標的所有計數值。另外,資料權杖可以具有與用於子清單中的4個集合中的每個資料權杖集合的附加資料集合關聯的附加指標,從而允許在外部位置處的資料存儲。在完成初始的4個集合時,緩衝器管理器增加其內部計數並且表示為下一集合“2-2-2-2”。重複這一過程直至所有資料權杖從所選擇的隊列入隊或者出隊。緩衝器管理器使用內部計數器應用跟隨4個集合的塊的FIFO類型排序,並且每個集合還按照如第六A圖的示例中示出的1-2-3集合的數位順序耦合。
第六B圖在框圖中圖示針對佇列100的業務類別4和埠4中的特定目的(未示出)生成的佇列清單的示例。示出並聯記憶體子列表635、640、645和650。例如,用於Q100的佇列尾指標記憶體是Q100-0,其在被給予當前指針1000的記憶體子列表635中。另外,從記憶體讀取的空指針是1000並且被寫入至用於佇列100-0的佇列尾記憶體。因此,用於Q100-0的佇列尾存儲器具有當前指標1000和下一指針1100。下表1.2中還示出具有當前指標和下一指標的“尾請求”的每個的列表。這些佇列尾請求、當前指標和下一指標中的每個構成內部並聯鏈表。記憶體分配在Q100-0中是隨機的並且是按照可用性動態選擇的。因此,記憶體清單中的排序根據記憶體位置的可用性而改變。下表1,2中示出生成的動態清單,其中在入隊過程期間,緩衝器管理器向4個資料權杖的第一集合分配當前指標1000和然後的下一指標1100用於4個資料權杖 的下一集合。第六B圖中示出尾指針1000的內部計數器和計數器0。由從1000-0至2000-1的尾指針的耦合示出第一集合的資料權杖的下一指標。計數器被更新到1並且子列表Q100-1中的當前指標是2000。在子列表Q100-2中,當前指針是3000伴隨著計數器2,並且在子列表Q100-3中,當前指針是4000伴隨著計數器3。子列表635-650中的每個子列表被分配有當前指標,因為緩衝器管理器遷移至每個列表並且更新其內部計數器,從而創建用於4個資料權杖的每個集合的頭指標和尾指標的集合。在通過子列表中的每個子列表遷移之後,緩衝器管理器將空指標返回655、660作為資料權杖的下一集合的下一當前指標。使用這一迴圈方式,所有子清單被用於將資料權杖存儲在4個集合中,並且每個集合的上一尾指標邊長下一集合的隨後的頭指標。因此,初始Q100-0鏈表635的計數器值被表示在0、4、8等的4個集合中,其對應于向資料權杖的每個集合分配的指標的集合。
第七圖是圖示由第二圖的緩衝器管理器操作執行的示例性步驟的流程圖。另外,示出根據第七圖的流程圖的步驟的用於佇列100的連續的封包業務的表示。在步驟705,基於目的埠和 與資料關聯的業務的類別來選擇佇列。在步驟710中,(第一圖的)入隊模組120向(第一圖的)緩衝器管理器130請求指針以在(第一圖的)緩衝器記憶體150中存儲資料。例如,關於第六A圖和第六B圖中的所標識的佇列100,入隊模組可以請求用於佇列100的指標位置。在步驟715,緩衝器管理器檢查佇列尾指標記憶體以找到所識別的佇列並且將當前指標設置為其位置。另外,緩衝器管理器從空指標記憶體彈出附加的一個空指標並且將其寫入佇列尾指標記憶體並且還將這一空指標標識為到入隊模組的下一指標。
在步驟720中,入隊模組使用當前指標來將權杖和下一位置寫入緩衝器記憶體中。該入隊模組使用位置1000來寫入權杖和1100作為如表1.1所示的下一存儲位置。此外,對於下一佇列尾請求100-1,入隊模組使用在存儲位置3000處的當前指標和在存儲位置3100處的下一指針。表1.1圖示隨後的佇列尾請求以及當前指標和下一指標位置。
在步驟725,在將佇列調度為要出隊之後,出隊模組向緩衝器管理器請求佇列的佇列頭指標。作為示例,當佇列100被調度為要出隊時,該出隊模組請求待發送至緩衝器管理器的佇列100的頭指標1000。如圖表1.2所示,在步驟730中,緩衝器管理器向所請求的佇列分配頭指標值1000。
步驟735,圖示在出隊模組從緩衝器記憶體讀取封包和下一指針並且然後向緩衝器管理器轉發下一指標作為頭指標更新時的出隊模組操作。該出隊模組從緩衝器中的其接收權杖和下一指標1100的位置1000讀取。該出隊模組發送1100作為佇列100的頭指標更新請求。指標1000現在為空指標,並且該出隊模組向緩衝器管理器轉發空指針。(出隊操作參考下面的圖表1.2)
出隊與緩衝器管理器交互
當出隊模組開始佇列100的調度的佇列操作時,這一操作由調度器在跨多個佇列同樣地分離的每個Q0在4個鐘控週期內執行。該調度器依次請求佇列100、101、102和103的頭指標資訊,使得按照調度器請求的優先順序而執行出隊操作。當由調度器每4個時鐘在調度的佇列100中執行將佇列出隊時,整個Q0可以被視為訪問通過4個不同的並聯鏈表被連結在一起的資料的Q0。因此,對於每個單個並聯鏈表,該出隊操作可以在週期內出現直至16個時鐘的最大速度。對於輸送量和延遲限制的請求,並聯鏈表出隊可以從4增加至8和以上。
第八圖為類似於第二圖的框圖,但是圖示入隊和出隊操作的步驟。在第八圖中,接收輸入權杖(1)以通過入隊模組820 進行分類。接著,輸出(3)向緩衝器記憶體830請求新的佇列尾指標。用於並聯鏈表(2)的佇列尾記憶體被發送至記憶體(4)用於向緩衝器記憶體850中的寫入操作。該資料權杖被寫入緩衝器記憶體850。該調度器840挑選Q(Q0)(5)並且請求並聯鏈表的佇列頭指標(6)。該緩衝器管理器讀取佇列頭指標並且使用這一頭指標作為經更新的頭指標並且然後向並聯鏈表寫入該經更新的頭指針。
在第九圖中,圖示根據本公開內容的實施例的當輸入的權杖被接收和分類為Q0時由緩衝器管理器執行的示例性過程。對新的佇列的尾指標(3)的請求被發送至佇列尾指標模組920。伴隨著每個請求生成並聯鏈表的佇列尾指標,並且當接收到權杖時,對於該權杖執行向緩衝器記憶體中的寫入操作。對於調度器操作,在Q0被選中時,請求要向佇列頭指標模組930發送的佇列頭指標(6)。對於並聯鏈表的佇列頭指標被發送自並聯鏈表中的每個並聯鏈表。所請求的佇列頭指標被讀取並且與佇列已更新的頭指標和現在的空舊指標一起轉發(8)與頭指針關聯的權杖。
因此,如本公開內容的示例性實施例所示,通過將4個並聯的子鏈錶鏈接在一起,使得所選擇的Q0的給定N週期內的入隊和出隊操作、讀取寫入操作最小化。此外,根據本公開內容的路由過程有利地提供了入隊和出隊操作的有限的緩衝器空間分配的增加的輸送量,從而降低了緩衝器管理器在這一瓶頸操作所浪費的延遲時間。通過將佇列分配劃分為多個虛擬子佇列以用於入隊和出隊,在降低這樣的入隊和出隊操作中產生的總體延遲時間時,可以更快地獲取並且傳輸資料權杖而不對物理暫存器配置作出顯著改變。
應當理解,路由器中的電路可以被實現為專用積體電路(ASIC)、專用標準零件(ASSP)、晶片上系統(SoC)、現場可程式設計閘陣列(FPGA)等。另外,應當理解,路由器可以 包括本領域公知的各種其他功能和部件。
雖然本文中已經公開了某些優選實施例和方法,然而本領域技術人員根據以上公開內容應當理解,可以在不偏離本公開內容的精神和範圍的情況下做出對這樣的實施例和方法的變化和修改。意圖在於,本公開內容應當僅限於所附申請專利範圍以及適用法律細則和原理所要求的範圍。
100‧‧‧資料權杖處理系統
105‧‧‧輸入封包
110‧‧‧處理器
120‧‧‧QoS及入隊處理器
130‧‧‧緩衝器管理器
140‧‧‧調度出隊
150‧‧‧緩衝器記憶體
160‧‧‧輸出封包

Claims (25)

  1. 一種將去往記憶體緩衝器的資料排隊的方法,所述方法包括:從多個佇列中選擇佇列;從所選擇的佇列接收資料權杖;通過佇列模組從緩衝器管理器請求用於由所述緩衝器管理器分配的用於存儲所述資料權杖的位址的指標和位址;通過所述緩衝器管理器訪問記憶體列表,並且在所述記憶體列表中生成指向所分配的位址的指標和位址,其中所訪問的記憶體列表包括用於附加位址分配的多個連結的記憶體清單;向所訪問的記憶體列表中寫入用於所分配的位址的指針,其中所述指針將所分配的位址連結在一起;以及在從所述佇列接收到隨後的資料權杖時向其他記憶體列表移植附加位址分配,並且生成將所述其他記憶體列表中的所分配的位址連結在一起的附加指標。
  2. 根據申請專利範圍第1項所述的方法,其中所述多個連結的記憶體清單包括並聯連結的第一記憶體清單、第二記憶體列表、第三記憶體列表和第四記憶體列表。
  3. 根據申請專利範圍第2項所述的方法,其中所述資料權杖的多個所分配的位址通過指針跨所並聯的記憶體清單連結。
  4. 根據申請專利範圍第3項所述的方法,其中所述多個所分配的位址通過由所述緩衝器管理器生成的尾指標和頭指標連結。
  5. 根據申請專利範圍第1項所述的方法,其中所述佇列模組包括用於將資料權杖向所連結的記憶體清單的所分配的位址中入隊的入隊模組以及用於將資料權杖從所連結的記憶體清單的所分配的位址出隊的出隊模組。
  6. 根據申請專利範圍第5項所述的方法,其中所述入隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一 次性入隊,其中所述多個資料權杖具有通過指標跨所述多個記憶體清單連結的位址。
  7. 根據申請專利範圍第5項所述的方法,其中所述出隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一次性出隊,其中所述多個資料權杖具有通過指標跨所述多個記憶體清單連結的位址。
  8. 根據申請專利範圍第1項所述的方法,其中所述用於附加位址分配的多個連結的記憶體清單根據地址可用性動態地填入。
  9. 根據申請專利範圍第1項所述的方法,其中按照連續跨越每個清單的迴圈方式執行所述連結的記憶體清單的填入直至所有請求的位址被分配。
  10. 一種用於將去往記憶體緩衝器的資料排隊的裝置,所述裝置包括:選擇器模組,用於從多個佇列中選擇佇列以及從所選擇的佇列接收資料權杖;管理器,回應於所述模組以用於請求用於由所述管理器分配的用於存儲所述資料權杖的位址的指標和位址;分配模組,回應於所述管理器以訪問記憶體列表並且在所述記憶體列表中生成指向所分配的位址的指標和位址,其中所訪問的記憶體列表包括用於附加位址分配的多個連結的記憶體清單,所述分配模組向所訪問的記憶體列表中寫入用於所分配的位址的指針,其中所述指標將所分配的位址連結在一起,以及所述分配模組在從所述佇列接收到隨後的資料權杖時向其他記憶體列表移植附加位址分配,並且生成將所述其他記憶體列表中的所分配的位址連結在一起的附加指標。
  11. 根據申請專利範圍第10項所述的裝置,其中所述多個連結的記憶體清單包括並聯連結的第一記憶體清單、第二記憶體列表、第三記憶體列表和第四記憶體列表。
  12. 根據申請專利範圍第11項所述的裝置,其中所述資料權杖的多個所分配的位址通過指針跨所並聯的記憶體清單連結。
  13. 根據申請專利範圍第12項所述的裝置,其中所述多個所分配的位址通過由所述緩衝器管理器生成的尾指標和頭指標連結。
  14. 根據申請專利範圍第10項所述的裝置,其中所述佇列模組包括用於將資料權杖向所連結的記憶體清單的所分配的位址中入隊的入隊模組以及用於將資料權杖從所連結的記憶體清單的所分配的位址出隊的出隊模組。
  15. 根據申請專利範圍第14項所述的裝置,其中所述入隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一次性入隊,其中所述多個資料權杖具有通過指標跨所述多個記憶體清單連結的位址。
  16. 根據申請專利範圍第15項所述的裝置,其中所述出隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一次性出隊,其中所述多個資料權杖具有通過指標跨所述多個記憶體清單連結的位址。
  17. 根據申請專利範圍第10項所述的裝置,其中所述用於附加位址分配的多個連結的記憶體清單根據地址可用性動態地填入。
  18. 根據申請專利範圍第10項所述的裝置,其中按照連續跨越每個清單的迴圈方式執行所述連結的記憶體清單的填入直至所有請求的位址被分配。
  19. 一種系統,包括:至少一個處理器;以及至少一個電腦可讀存放裝置,包括在被執行時使得執行用於將資料分組排隊的方法的指令,所述方法包括:從多個佇列中選擇佇列;從所選擇的佇列接收資料權杖;通過佇列模組從緩衝器管理器請求用於由所述緩衝器管 理器分配的用於存儲所述資料權杖的位址的指標和位址;通過所述緩衝器管理器訪問記憶體列表,並且在所述記憶體列表中生成指向所分配的位址的指標和位址,其中所訪問的記憶體列表包括用於附加位址分配的多個連結的記憶體清單;向所訪問的記憶體列表中寫入用於所分配的位址的指針,其中所述指針將所分配的位址連結在一起;以及在從所述佇列接收到隨後的資料權杖時向其他記憶體列表移植附加位址分配,並且生成將所述其他記憶體列表中的所分配的位址連結在一起的附加指標。
  20. 根據申請專利範圍第19項所述的系統,其中所述多個連結的記憶體清單包括並聯連結的第一記憶體清單、第二記憶體列表、第三記憶體列表和第四記憶體列表。
  21. 根據申請專利範圍第19項所述的系統,其中所述資料權杖的多個所分配的位址通過指針跨所並聯的記憶體清單連結。
  22. 根據申請專利範圍第20項所述的系統,其中所述多個所分配的位址通過由所述緩衝器管理器生成的尾指標和頭指標連結。
  23. 根據申請專利範圍第19項所述的系統,還包括:入隊模組,用於將資料權杖向所連結的記憶體清單的所分配的位址中入隊;以及出隊模組,用於將資料權杖從所連結的記憶體清單的所分配的位址出隊。
  24. 根據申請專利範圍第23項所述的系統,其中所述入隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一次性入隊,其中所述多個資料權杖具有通過指標跨所述多個記憶體清單連結的位址。
  25. 根據申請專利範圍第23項所述的系統,其中所述出隊模組被配置成向所述緩衝器管理器生成請求以用於將多個資料權杖一次性出隊,其中所述多個資料權杖具有通過指標跨所述多個記憶 體清單連結的位址。
TW104124865A 2015-03-31 2015-07-31 用於使用多個連結的記憶體清單的方法及裝置 TWI684344B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/675,450 2015-03-31
US14/675,450 US10484311B2 (en) 2015-03-31 2015-03-31 Method and apparatus for using multiple linked memory lists

Publications (2)

Publication Number Publication Date
TW201703475A true TW201703475A (zh) 2017-01-16
TWI684344B TWI684344B (zh) 2020-02-01

Family

ID=53496442

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104124865A TWI684344B (zh) 2015-03-31 2015-07-31 用於使用多個連結的記憶體清單的方法及裝置

Country Status (6)

Country Link
US (2) US10484311B2 (zh)
EP (1) EP3076621A1 (zh)
JP (1) JP6535253B2 (zh)
KR (1) KR102082020B1 (zh)
CN (2) CN113242186A (zh)
TW (1) TWI684344B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102984083B (zh) * 2012-11-19 2018-07-24 南京中兴新软件有限责任公司 队列管理方法及装置
US10484311B2 (en) * 2015-03-31 2019-11-19 Cavium, Llc Method and apparatus for using multiple linked memory lists
CN105162724B (zh) * 2015-07-30 2018-06-26 华为技术有限公司 一种数据入队与出队方法及队列管理单元
US10833843B1 (en) * 2015-12-03 2020-11-10 United Services Automobile Association (USAA0 Managing blockchain access
KR101948988B1 (ko) * 2016-12-12 2019-02-15 주식회사 엘지유플러스 캐시를 이용한 파일 실행 방법 및 그 장치
CN108462646B (zh) * 2017-02-17 2020-08-25 华为技术有限公司 一种报文处理方法及装置
US10402320B1 (en) * 2018-02-27 2019-09-03 Oracle International Corporation Verifying the validity of a transition from a current tail template to a new tail template for a fused object
US10901887B2 (en) 2018-05-17 2021-01-26 International Business Machines Corporation Buffered freepointer management memory system
CN112311696B (zh) * 2019-07-26 2022-06-10 瑞昱半导体股份有限公司 网络封包接收装置及方法
US11240151B2 (en) * 2019-12-10 2022-02-01 Juniper Networks, Inc. Combined input and output queue for packet forwarding in network devices
CN113132449A (zh) * 2020-01-16 2021-07-16 京东方科技集团股份有限公司 一种调度方法、装置及设备
US11043250B1 (en) * 2020-08-12 2021-06-22 Taiwan Semiconductor Manufacturing Company Limited Buffer control of multiple memory banks
US11437081B2 (en) 2020-08-12 2022-09-06 Taiwan Semiconductor Manufacturing Company Limited Buffer control of multiple memory banks
WO2022139808A1 (en) * 2020-12-22 2022-06-30 Futurewei Technologies, Inc. Low-latency software defined wide area network architecture
KR20220109213A (ko) 2021-01-28 2022-08-04 하준우 발코니 문

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3117133B2 (ja) 1999-02-16 2000-12-11 日本電気株式会社 フレーム組み立て回路及びフレーム組み立て方法
US7627870B1 (en) * 2001-04-28 2009-12-01 Cisco Technology, Inc. Method and apparatus for a data structure comprising a hierarchy of queues or linked list data structures
US7003597B2 (en) * 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
US7290110B2 (en) * 2003-09-11 2007-10-30 International Business Machines Corporation System and method of squeezing memory slabs empty
US7796627B2 (en) 2004-08-12 2010-09-14 Broadcom Corporation Apparatus and system for coupling and decoupling initiator devices to a network using an arbitrated loop without disrupting the network
JP4952642B2 (ja) 2008-04-15 2012-06-13 富士通株式会社 パケット転送装置およびパケット破棄方法
US8650364B2 (en) * 2008-05-28 2014-02-11 Vixs Systems, Inc. Processing system with linked-list based prefetch buffer and methods for use therewith
CN101605100B (zh) * 2009-07-15 2012-04-25 华为技术有限公司 队列存储空间的管理方法和设备
US8312243B2 (en) 2009-07-16 2012-11-13 Lantiq Deutschland Gmbh Memory management in network processors
JP2011254149A (ja) 2010-05-31 2011-12-15 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置、情報処理方法およびプログラム
US8565092B2 (en) 2010-11-18 2013-10-22 Cisco Technology, Inc. Dynamic flow redistribution for head of line blocking avoidance
CN102437929B (zh) * 2011-12-16 2014-05-07 华为技术有限公司 队列管理中的数据出队方法及装置
US9438527B2 (en) * 2012-05-24 2016-09-06 Marvell World Trade Ltd. Flexible queues in a network switch
US9674086B2 (en) * 2013-11-05 2017-06-06 Cisco Technology, Inc. Work conserving schedular based on ranking
US10484311B2 (en) * 2015-03-31 2019-11-19 Cavium, Llc Method and apparatus for using multiple linked memory lists

Also Published As

Publication number Publication date
EP3076621A1 (en) 2016-10-05
CN113242186A (zh) 2021-08-10
US10484311B2 (en) 2019-11-19
US20160294735A1 (en) 2016-10-06
US11082366B2 (en) 2021-08-03
CN106209679B (zh) 2021-05-11
JP6535253B2 (ja) 2019-06-26
KR102082020B1 (ko) 2020-02-26
CN106209679A (zh) 2016-12-07
KR20160117108A (ko) 2016-10-10
TWI684344B (zh) 2020-02-01
JP2016195375A (ja) 2016-11-17
US20200044989A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
TWI684344B (zh) 用於使用多個連結的記憶體清單的方法及裝置
US8656071B1 (en) System and method for routing a data message through a message network
US7555579B2 (en) Implementing FIFOs in shared memory using linked lists and interleaved linked lists
JP5863076B2 (ja) パケットを再構築し再順序付けするための方法、装置、およびシステム
US8155134B2 (en) System-on-chip communication manager
US8514874B2 (en) Thread synchronization in a multi-thread network communications processor architecture
CN112084136B (zh) 队列缓存管理方法、系统、存储介质、计算机设备及应用
US8910171B2 (en) Thread synchronization in a multi-thread network communications processor architecture
US10146468B2 (en) Addressless merge command with data item identifier
US8223788B1 (en) Method and system for queuing descriptors
US20160006579A1 (en) Merging pcp flows as they are assigned to a single virtual channel
US7822051B1 (en) Method and system for transmitting packets
US11310164B1 (en) Method and apparatus for resource allocation
US8156265B2 (en) Data processor coupled to a sequencer circuit that provides efficient scalable queuing and method
US9804959B2 (en) In-flight packet processing
US9703739B2 (en) Return available PPI credits command
US9996468B1 (en) Scalable dynamic memory management in a network device
US9990307B1 (en) Split packet transmission DMA engine
US9548947B2 (en) PPI de-allocate CPP bus command
JP2006253790A (ja) パケット伝送装置及びパケット伝送方法
US9699107B2 (en) Packet engine that uses PPI addressing
US9413665B2 (en) CPP bus transaction value having a PAM/LAM selection code field
US9559988B2 (en) PPI allocation request and response for accessing a memory system