TW583544B - Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries - Google Patents
Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries Download PDFInfo
- Publication number
- TW583544B TW583544B TW091121512A TW91121512A TW583544B TW 583544 B TW583544 B TW 583544B TW 091121512 A TW091121512 A TW 091121512A TW 91121512 A TW91121512 A TW 91121512A TW 583544 B TW583544 B TW 583544B
- Authority
- TW
- Taiwan
- Prior art keywords
- entry point
- queue
- queue entry
- completion
- work
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Description
583544 ⑴ 玖、發明說明 (發明說明應敘明:發明所屬之技術領域、先前技術、内容、實施方式及圖式簡單說明) 相關的應用 本申請案係有關於一般性讓渡和申請中的美國專利申 請序號_(委託待審案號AUS920010479US1),命名為 π使用頭部及尾部指標器以管理工作及完成佇列之裝置及 方法”,歸檔於_,以及美國專利申請序號_ (委託待審案AUS920010477US1),命名為’’藉由僅含頭部圓 形的緩衝器之無限頻帶工作及完成佇列管理”,歸檔於相 同曰期,以及在此被合併參考。 發明背景 1 .技術背景: 本發明指的是一改良的資料處理系統。更明確地,本發 明指的是一種裝置和方法,有效的實現仵列對和完成仔列 ,其包含分別對工作佇列進入點和完成佇列進入點的參考 點。 2 .相關技藝的描述: 無限頻帶(ΙΒ)提供一硬體訊息傳遞機制能給I/O (I/O)裝 置,以及在内部流程通訊(IPC)和一般計算節點之間使用 。用戶藉由宣告發送/接收訊息至在通道配接器(CA)上的 發送/接收工作佇列(WQ),以存取ΙΒ訊息傳遞硬體。該發 送/接收工作佇列(WQ)被指派至一用戶當做一佇列對(QP) 。用戶經由ΙΒ發送和接收工作完成(WC),從一完成佇列(CQ) 取回這些訊息的結果。該源頭的CA負貴分段外送的訊息 ,以及傳遞它們至該終點。該終點的CA負貴重組回來的 (2) 發明說明續頁 訊息’以及將它們放置於由該終點用戶指定的元憶 内。 這裡有兩種CA型別:主CA和目標CA。該主CA被 的計算節點使用,以存取IB光纖。用戶使用IB軟體 取主CA的功能。直譯軟體動詞並直接存取該CA的 疋眾所皆知的通道介面(CI)。 需要一有效率的機制從該用戶傳遞工作請求至 硬體。除此之外,需要一相似的機制給該CA的硬 工作完成至該用戶。因此,這將會是有益的去擁有 方法,裝置和程式與一些最佳技術,傳遞工作請求 道配接器硬體,以及從該通道配接器硬體傳遞工作 該用戶。 發明概述 本發明提供一種具有(主機和I/O)末端節點,交換 由器和連接器互相連接這些元件的分散式計算系系 端節點使用發出和接收佇列對,以傳送和接收訊息 訊息已經元全地被送出或接收,以及是否有一錯誤 該訊息傳送或接收處理期間,該末端節點會使用完 ,以通知的該使用者。本發明描述_機制可以將這 對和完成仔列實現於硬體中^提供一方法使用參考 衝區的頭部和尾部指標器,控制從該用戶的工作請
至該CA硬體中,從該CA硬體億銘T从A 心得移工作完成至該用> QPs和CQs分別不包含工作佇列進 4延入點和芫成佇列j ,但是包含這些進入點的參考%。、丄&、 ^〒點。這使它們變得有3 體空間 一般目 動詞存 軟體就 該CA的 體傳遞 如此的 至該通 完成至 器,路 b。該末 0當一 發生於 成佇列 些佇列 圓形緩 求傳移 。該 入點 率的 583544 (3) 發明說明續頁 和在大小方面變成固定,而工作佇列進入點和完成佇列進 入點它們在大小方面自己能改變,例如包括一數目可變的 資料分段。另外,提供幾個機制可以用來改善這些程序在 不同的記憶體組態下的整個效率。 圖示簡單說明
被認為是本發明特點之新穎特徵被敘述於附件的申請 專利範圍内。然而,本發明本身和一較佳的使用模式,進 一步的目的和優點將會以參照下列說明具體實施例的詳 細描述,伴隨著圖表而得到瞭解,其中: 圖1是依照本發明較佳的具體實施例,描述一分散式計 算系統的圖解; 圖2是依照本發明較佳的具體實施例,一主處理器節點 的功能方塊圖; 圖3A是依照本發明較佳的具體實施例,一主通道配接器 的圖解, 圖3B是依照本發明較佳的具體實施例,是一交換器的圖 解; Φ 圖3C是依照本發明較佳的具體實施例,是路由器的圖解; 圖4是依照本發明較佳的具體實施例,說明工作請求處 理的圖表; 圖5是依照本發明較佳的具體實施例,其使用一可靠的 · 連接服務,說明一分散式計算系統之一部分的圖解; _ 圖6是依照本發明較佳的具體實施例,其使用一可靠的資 料元連接服務,說明一分散式計算系統之一邵分的圖解; (4)583544 發明說明續頁 圖 圖 算系 圖 式網 圖 子網 圖 構圖 圖 接工 圖 接完 圖 告一 圖 運作 圖 經請 本 該硬 部指 和軟 7疋依照本發明較佳的具體實施例,說明一資料封包; 8疋依照本發明較佳的具體實施例,#明一分散式計· 統之一部分的圖解; ' *i 9是依照本發明較佳的具體實施例,說明用於一分散— 路系統的一網路定址圖解; 1〇是依…、本發明較佳的具體實施例,其描述SAN光纖 路架構,以說明一分散式計算系統之一部分的圖解; 11疋於較佳的具體實施例内所使用的分層式通信架 解; · 12是依照本發明較佳的具體實施例,表示一使用非直 作佇列進入點之工作佇列的實例圖解; 13疋依照本發明較佳的具體實施例,表示一使用非直 成仵列進入點之完成彳宁列的實例圖解; 14是依照本發明較佳的具體實施例,說明當一用戶宣 工作請求至一工作佇列,通道介面運作的流程圖; 15是依照本發明較佳的具體實施例,說明主通配接器 的流程圖;以及 _ 16是依照本發明較佳的具體實施例,說明當一用戶已 求工作完成訊息,通道介面運作的流程圖; 較佳具體實施例的詳細說明 發明提供一管理工作及完成佇列的裝置和方法,其在 , 體裡對工作佇列使用頭部指標器,對完成佇列使用尾 _ 標器。本發明可能被實現於硬體中,軟體中或一硬體 體的組合。本發明最妤是實現於一分散式計算系統, -10 - 583544 (5) 發明說明續頁 例如一系統區域網路(SAN),具有末端節點,交換器,路 由#和連接&互相連接這些元件。每個末端節點使用發送 , 和接收作列對’以傳送和接收訊息。該末端節點分割訊息 ' 成封包’並傳运該封包於該連接器上。該交換器和路由器‘ 互相連接末端郎點,並遞送該封包至適合的末端節點。該 末端節點在孩終點,重新組合該封包成一訊息。 圖1是依照本發明較佳具體實施例的一分散式計算系統 圖解。圖1所代表的分散式計算系統是一系統區域網路 (SAN) 100的形式,而且只提供來說明的目的,而以下描 籲 述的本發明具體實施例可以被實現於其他多種類型和組 態的電腦系統上。舉例來說,實現本發明的電腦系統可從 只有一處理器的小型伺服器加上幾個1/〇 (1/〇)轉接器至大 型平行處理的超級電腦系統加上幾百個和幾千個處理器 和幾千個I/O轉接器。此外,本發明能被實現於由一網際 網路或企業内網路所連接的遠端電腦系統的設備中。 SAN 100是一高頻寬,低延遲時間的網路互相連接節點 於分散式計算系統内。一節點是附著於一網路的一個或多 _ 個連接器的任何元件,以及於網路内形成訊息的起始點及 [或]終點。在所描述的例子中,SAN 100包括主處理機節點 102,主處理機節點104,冗餘行列獨立的磁碟(RAID)次系 統節點106,和I/O底板節點108 ^於圖1中描述的節點只是 γ 為了說明的目的而已,為SAN 100能連接任何的數目和類 型的獨立處理器節點,I/O配接器節點和I/O裝置節點。該 任何的節點都能當做末端節點的功能,在此處可定義成一 -11 - 583544 ⑹ 發明說明續頁 裝置於SAN 100上開始或最後消耗訊息或框架。 在本發明的一個具體實^列中,分散式計#系統裡存在 -錯誤處理機制’其中錯誤處理機制在末端節點之間,允, 許可靠的連接或可靠資料元通信於分散式計算系統内,例, 如 SAN 100。 一訊息,如在此處所使用的,是一資料交換的定義應用 單元,其是在合作程序之間的一通信原始單元。一封包是 由網路協定的檔頭及[或]檔尾將資料的一個單元裝入。檔 頭通常是提供控制和通道遞送訊息以導引該框架通過 SAN 100。檔尾通常包含控制和循環冗餘檢查(CRC)資料, 確認傳送的封包沒有内容被破壞。 SAN 100包含通信和管理設施,於分散式計算系統裡支 援I/O和内部程序通信(IPC)。在圖1中所示的SAN 100包括一 切換的通信光纖116,其允許許多裝置同時地使用高頻寬 傳遞資料及低延遲時間於一保密,遠端的管理環境。末端 節點能在多個埠上通信’並且利用多種通道通過該SAN光 纖。圖1所示的通過該SAN之多個埠和通道用來當作故障 容許度,以及增加頻寬資料的轉移。 圖1的SAN 100包括交換器112 ’交換器114 ’交換器146和 路由器117。一交換器是一裝置可以連接多個連接器’並 τ 且允許在一子網路内使用一小構頭終點區域識別碼(DLID), 襴區,路線遞送封包從一交換器至另一交換器。一路由器 是一裝置可以連接多個子網路一起,並且能夠使用一大擋 -12 - ⑺ 發明說明續頁 頭終點全域識別碼(DGUID)欄區,從第一個子網路的一連 接器遞送框架至第二個子網路的另一連接器。 在一個具體實施例中,一連接器是一全對工通道於任何 的二個網路光纖元件之間,例如:末端節點,交換器或路 由器。適當的連接器包括,但是沒被限制在於例子,銅線 ,光纖纟覽線和印刷電路版銅線和印刷電路板。 對於可靠的服務形式,末端節點,例'如主機處理器末端 節點,以及I/O配接器末端節點,產生請求封包和回送回 應封包。交換器和路由器向前遞送封包,從該源頭至該 終點。除了對不同的CRC檔尾欄區以外,其於該網路内的 每個級更新,交換器遞送該封包而不修改。路由器更新不 同的CRC檔尾欄區並且於該表頭裡修改其他的攔區當封 包被遞送時。 如圖1說明的SAN 100中,主機處理器節點102,主處理器 節點104和I/O機箱108包括至少一個通道配接器(CA)至介 面至SAN 100。在一具體實施例中,每個通道配接器是一 末端點,其非常詳細地實現該通道配接器介面至源頭,或 破壞在SAN架耩116上傳輸的封包。主處理機節點102包含 以主通道配接器118和主通道配接器120形式的通道配接 器。主處理器節點104包含主通道配接器122和主通道配接 器124。主處理器節點102也包括中央處理單位126- 130和一 記憶體132以匯流排系統134互相連接。主處理機節點104 同樣地包括中央處理單位136· 140和一記憶體142由一匯流 排系統144互相連接。 ^83544 ⑻ 發明說明續頁 主通道配接器118和120提供一連接至交換器112當主通 道配接器122和124提供一連接至交換器112和114。
在一個具體實施例中,一主通道配接器是於硬體中實現 。在這個實現中,該主通道配接器硬體卸載許多中央處理 單元和I/O輸出配接器通信的開銷。該主通道配接器的硬 體實現也允許多種協同通信於一開關式網路而不需要與 傳統通信協定有關的開銷。在一具體實施例中,圖1的主 通遒配接器和SAN 100提供分散式計算系統的I/O和内部程 序通信(IPC)用戶零處理器-複製資料轉移,不需要作業系 統核心來處理,而且運用硬體提供可靠的,故障容許的通 信。 如圖1所示,路由器117被耦合至廣域網路(WAN)及[或] 區域網路(LAN)連接至其他的主機或其他的路由器。圖1 的I/O機箱108包括一 I/O開關146和多種I/O模組148- 156。在 這些例子中,該I/O模組是一配接器卡的形式。圖1描述的 實例轉接器卡包括一 SCSI轉接器作為I/O模組卡148 ; —配 接器卡至光纖通道集線器,以及光纖通道仲裁迴路(FC-AL) 鲁 裝置給I/O模組152 ; —乙太網路配接器卡給I/O模組150 ; 一圖形配接器卡給I/O模組154,以及一影像配接器卡給I/O 模組156。任何的已知類型配接器卡接能被實現^ I/O配接 器也包括一交換器於該I/O配接器背面板,以耦合配接器 , 卡至該SAN架構《這些模組包含目標通道配接器158- 166。 * 在這個例子中,圖1的RAID次系統節點1〇6包括一處理器 168,一記憶體170,一目標通道配接器(TCA) 172和多種冗 -14 - ⑼ 發明說明續頁 餘及[或]條 是一全功能 SAN 100 處 援I/O需求的 需求的極低 作業系統核 通道配接器 合於目前的 和電腦群通 點在它們之 處理器節點 工/0配接器節 何主處理機 在一個具彳 料定義和記| 收或推送通/ 傳統的I/O, 定一資料的: 輸一封包敘: 序記憶體中 中,終點處, 在記憶體, 遠端節點終, 只需要通知 蚊狀儲存碟單位174。目標通道配接器172可以 的主通遒配接器。 理資料通信給1/0和内部程序通信。SAN 100支 而頻寬和可提升性,且也支援内部程序通信 延遲時間和低中央處理器開銷。用戶可以省略 u處理’而直接存取網路通信硬體,例如:主 ’其致能有效率的訊息遞送協定。SAN 100適 計算模型,而且是一建構方塊給新形式的1/〇 # °進一步地,圖i的San 1〇〇允許I/O配接器節 中通信或與任何或全部的分散式計算系統的 通#。以一 I/O配接器附上該SAN 100,產生的 點大體上有相同的通信能力給SAN ι〇〇裡的任 節點。 豊實施例中,在圖1所示的SAN 100支援通道資 意體資料定義。通遒資料定義有時指的是送/ 言運算。通道資料定義是通信的類型運用於一 其中一來源裝置推送資料,和一終點裝置決 艮後終點。在通道資料定義,從一來源程序傳 —終點處理通信痒,但沒有敘述在該終勢^ ,該封包將會被寫入。因此,於通道資料定= 里前部署放置該傳輸資料。 序直接地讀出或寫入— 點程序的虛擬地址空間。 冏。孩遠端即點終點 位置緩衝器要求資料,迷 1不力要參與任何資料
資料定義中,一來源程 -15 - ¢83544 (10) 發明說明續頁 的轉移。因此,在記憶體資料定義中,一來源程序傳送一 資料封包包含該終點糕序的終點緩衝器記憶體位址。在記 憶體資料定義中,終點程序先前地允許來源程序存取它的 記憶體。 通道資料定義和記憶體資料定義典型地都是I/O和内部 程序通信兩者所必需的。一典型的運算運用一通道和 記憶體資料定義的組合。在圖1分散式計算系統之1/〇運算
說明實例中,一主處理機節點,例如主處理機節點1〇2, 藉由使用通道資料定義啟動一 j/Ο運算,以送出一磁碟寫 入指令至一磁碟1/〇配接器,例如·· RAID次系統目標通道 配接器(TCA) 172。該磁碟I/O配接器檢查該命令和使用記 憶體貝料疋義直接地從該主處理機節點的記憶體空間讀 取資料緩衝器。在資料缓衝器被讀取之後,該磁碟ι/〇配 接器運用通道資料定義以推送一 1/〇完成訊息背板至該主 處理機節點。
行一運算,ϋ用虛㈣址和虚*記憶體保護機制,以 正確和適當的存取至所有的記憶體。在如此的一分散 算系統執行應用程式不需使用實際定址給任何的^】 轉到圖2,一主處理機的功能方 匕万塊圖依照本發明的 具體實施例被描述。主處理機節 • 即.,.,占200疋—主處理機 的實例,例如·圖1中的主處j里器# 即·,,占102。在這個例 ,在圖2所示的主處理機節點2〇〇包 ^ 、,且用戶 202-2Γ)ί 是在主處理機郎點200上的程序勃γ 執仃。王處埋機節點: ** 16 . 583544 ⑼ 發明說明續頁 包括通道配接器210和通道配接器212。通遒配接器210包含 埠214和216而通道配接器212包含埠218和220。每個埠連接 到一連接器。該埠能連接至一 SAN子網路或多個SAN子網 路,例如:圖1裡的SAN 100。在這些例子中,通道配接器 是主通道配接器的形式。
用戶202-208經由該軟體動詞介面222和訊息和資料服務 224傳遞訊息至SAN。一軟體動詞介面本質上是一主通道配 接器功能性的抽象描述。一作業系統可以經由它的程式介 面暴露一些或所有的軟體動詞功能性。基本上,這個介面 定義該主機的行為。另外地,主處理機節點200包括一訊 息和資料服務224,其是一較高層的介面而非軟體動詞層 ,且被用來處理經由通道配接器210和通道配接器212收到 的訊息和資料。訊息和資料服務224提供一介面至用戶 202-208處理訊息和其他的資料。
現在參考至圖3A,一主機通道配接器的圖解依照本發明 的較佳具體實施例被描述。在圖3 A中所示的主機通道配 接器300A包括一組佇列對(Qps) 302A-310A,用來傳遞訊息 至該主通道配接器埠312A-316A。對主通道配接器埠的資 料緩衝312A-316A經由虛擬通道(VL) 318A-334A引導,其中 每個VL具有它自己的流量控制。子網路管理器以本地位 址組態通道配接器給每個實體埠,也就是埠的LID。子網 路管理器代理(SMA) 336A是一實體,為了與該子網路管理 器通信,以組態化通道配接器。記憶體移轉和保護(MTp) 338A是一轉換虛擬位址至實體位址的機制,且允許存取權 -17 - 583544 (12) 發明說明續頁 限。直接記憶體存取(DMA) 340A使用記憶體340A對應佇列 對302A-310A提供給直接記憶體存取運算。
一單通道配接器,例如在圖3 A中所示的該主機通道配接 器300A,可以支援數千個佇列對。相反的,一 I/O配接器 中的目標通道配接器通常只支援少數的佇列對。每個佇列 對由一發送工作佇列對和一接收工作佇列對所組成的。該 發送工作佇列對用來發送通道和記憶體資料定義訊息。該 接收工作佇列對收到通道資料定義的訊息。一用戶呼叫一 作業系統特定的程式介面,在此處指的是軟體動詞,以置 放工作請求(WRs)在一工作佇列上。 圖3B依照本發明的較佳具體實施例描述一交換器300B 。交換器300B包括一分封遞送302B經由虛擬通道,例如: 虛擬通道306B,與許多埠304B通信。通常,一交換器,例 如:交換器300B,能遞送封包從一埠至相同交換器上的任 何其他埠。
同樣地,圖3C依照本發明的較佳具體實施例描述一路由 器300C。路由器300C包括一分封遞送302C經由虛擬通道, 例如:虛擬通道306C,與許多埠304C通信。如交換器300B ,路由器300C通常將可以遞送封包從一埠至相同交換器上 的任何其他埠。 通道配接器,交換器和路由器運用多種虛擬通道於單一 < 實體連接器裡内。如圖3A,3B和3C所說明的,實體埠連接 _ 末端節點,交換器和路由器至一子網路。封包從封包的來 源隨著一個或多個虛擬通道之内注入該S AN架構網路至 -18 - (13) (13)583544 發明說明續頁 該封包的終點。虛擬通道的選擇從與該封包有關的服務層 次被映射。在任何一個時間,只有一條虛擬通道在給定的 . 實體連接器上前進。虛擬通道提供一技術用以運用連接層 ' 次流量控制至一虛擬通道,而不影響另一個虛擬通道。當 / 一封包由於碰撞,服務品質(Q〇s)或其他考量,在一虚擬 通道阻塞,於一不同的虛擬通道上的封包被允許前進。 運用虛擬通道有很多的理由,下列列出某些理由: 虛擬通道提供QoS。在一個具體實施例的實例中,某虛 擬通道保留為高優先權或等通量以提供Q〇s。 % 虛擬通道避免造成死結。虛擬通道允許網路拓撲包含迴 路以傳送封包通過所有的實體連接器,且仍然可保證該迴 路不會引起背壓式依存關係而造成死結。 虛擬通道減輕首頭阻隔。當一交換器沒有可用的積分給 封包使用於給定的虛擬通道,使用不同虛擬通道的封包具 有充足的積分而被允許向前進。 現在參考圖4,依照本發明的較佳具體實施例,說明工 作明求處理的圖解被描述。在圖4中,提出一接收工作佇 _ 歹J 400 ’發送工作佇列4〇2和完成佇列々料處理從或至用戶 406的請求。從用戶4〇2的這些請求最後被送到硬體4〇卜在 這個例子中’用戶406產生工作請求410和412而且接收工作 完成414。如圖4所示,工作請求被置於工作佇列上被稱為’ 工作佇列元件(WQEs)。 發送工作佇列402包含工作佇列元件(wQEs) 422-428,描 ϋ傳輸^料於之SAN架構上。接收工作仵列4〇〇包含工作仵 -19 - 583544 (14) 發明說明續頁 列7C件(WQEs) 416-420,描述從該SAN架構置放進 作佇列元件於主通道配接器被硬體 工 資料定義的地方。 408處理 該軟體動詞也提供一機制用以從完成佇列4〇4取回完成 的工作。如圖4所示,完成佇列404包含完成佇列元件 (CQEs) 43〇_436。完成佇列元件包含關於先前完成的工作佇 列元件之資訊。完成作列4〇4被用來產生單_完成通知的 點給多種佇列對。一完成佇列元件是在一完成佇列上的資 料結構。這個元件描述一完成的工作佇列元件。該完成佇 列元件包含足夠的訊息,以決定該佇列對以及特定完成的 :作仵列元件。一完成作列組態内容是一訊息方塊:含指 標器,長度和其他的訊息需要被管理個別的完成佇列。 在圖4所示支援傳送工作佇列4〇2的實 。一、, 貝1 J工作請求如下 。一傳送工作請求是一通道資料定義運算 < A推送一組本 也為料分段至由遠端節點接收工作佇列元件的資料分段 。舉例來說,工作佇列元件428包含參考至备M 刀 ,咨』丨 #料分割4 438
貧料分割5 440和資料分割6 442。每個億從 、欠、墁工作請求的 為料分段包含一實際相鄰的記憶體空間。被 V 资姐v 谈用來參考本地 只竹分段的虛擬位址是在該程序的位址組能 ^ , L &内容中,其創 k本地佇列對。 —遠端直接記憶體存取(RDMA)讀取工作味 %求提供一記 憶體資料定義運算以讀取在遠端節點上之 ’、 ^ ^ 〜實際相鄰的 Ζ憶體。一記憶體空間不是一記憶體區域 、 部分,就是一 死憶體視窗的部分◊一記憶體區域參考一相▲ ‘ 、、先前註冊實際 -20 - 583544 (15) I發明說明續ϊ 相鄰的記憶體位址,其被虛擬位址和長度定義。一記憶體 視窗參考一組實際相鄰的記憶體位址,其被限制至先前註 冊的區域。 RDMA渭取工作請求在一遠端末端節點,讀出實際相鄰 的记憶體’以及寫入資料至一實際相鄰的記憶體。類似於 發送工作請求’ RDMA讀取工作仔列元件使用的虛擬位址 以參考本地資料分段是在創造本地仵列之程序組態内容 中。舉例來說,工作佇列元件416於接收工作佇列400參考 資料分段1 444,資料分段2 446和資料分段3 448。該遠端 虛擬位址是在該程序位址組態内容,其擁有遠端仔列對, 被該RDMA項取工作作列元件鎖定。 一 RDMA寫入工作佇列元件提供一記憶體資料定義運算 ,以在一遠端末端節點上,寫入一實際相鄰的記憶體。 RDMA寫入工作佇列元件包含一本地實際相鄰的記憶體的 散佈表,以及該遠端記憶體的虛擬位址寫入至本地記憶體。 一 RDMA提取運算子工作佇列元件提供一記憶體資料定 義運算,以在一遠端字元組執行一原子運算。RDMA提取 運算子工作佇列元件是結合了 RDMA讀取,修改和RDMA 寫入運算。該RDMA提取運算子工作仵列元件支援一些讀 取修改寫入運算,例如:比較和互換如果相等時。一限制 (非限制)遠端存取鍵(R-鍵)工作佇列元件提供一指令給 該主機通道配接器硬體結合(分離)記憶體視窗至一記憶 體區域,以修改(破壞)一記憶體視窗。該R鍵是每個RDMA 存取的部份,以及用來使遠端程序允許對該緩衝器的存取 -21 . (16)583544 發明說明續頁 有效。 在-個具體實施例中,圖4所示的接收工作仔列權只支 援工作件列元件的-個類型,其被稱為一接收工作仵列元 件。該接收工作仵列元件提供一通道資料定義運算描述一 本地記憶體空間至被寫入的送進來發送訊息。該接收工作 佇列元件包括-散佈表,描述—些實際相鄰的記憶體空間 。一送進來發送訊息是寫入這些記憶體空間的。該虛擬位 址是在該程序的位址組態内容中,其創造本地佇列對。 對内部程序通信而言,一使用者模式軟體程序直接從記 憶體中的緩衝器’經由佇列對轉移資料。在一個具體實施 例中’經由作列對的轉移略過作業系統,以及需要很少3 主指令週期。佇列對允許零處理器-拷貝資料轉移,而、 需要作業系統核心參與。零處理器·拷貝資料轉移提供= 效率的支援鬲頻寬和低延遲時間的通信。 ....."〜队心Μ π贤一 c選身 傳送服務類型。在一個具體實施例中,實現本發明的3 式計算系統支援四類型的傳送服務:可靠的連接,不一 連接,可靠的資料元和不可靠的資料元連接服務。 合
可靠和不可靠連接服務以一個且只有一個遠端件歹 一本地佇列對。連接服務需要一程序,以產生一佇歹 給每個程序在SAN架構上通信。因此,如果每一個 理機節點包含p程序,且在每個節點上的所有p處埋令 望與所有其他節點上的處理通信,每個主處理機節點亦 p2 X (N - 1)佇列對。而且一程序能在相同主通道配接器 -22 - (17) (17)583544 發明說明續頁 連接一佇列對至另一個佇列對。 圖5概略說明一分散式計算萃 '、勺部分運用可靠_ Jig 務分散式處理之間通信。圖5中j 了靠連接服 _ 的分散式計算 —主處理機節點1,一主處理機# 一’ 匕括 。該主處理機節點1包括一處理 王處理機即點3 _ # conio ^ 。主處理機節點3包括 一處理C 520和一處理D 530。±老
54〇〇 王處理機節點2包括一處理E 主處理機節點1包括佇列對4,&二 . r ,, 6和7,每個具有一發送工 作佇列和接收工作佇列。主處现祕Μ ^ 屣里機郎點2具有一佇列對9 且王處理器卽點3具有佇列對2釦$。 ^ ^ y 。为散式計算系統500的 可非連接服務以一個且只有一個遠 、 1U逆鵠佇列結合一本地佇 列對。因此,佇列對4被用來與佇列私 /、1丁列對2通信,佇列對7被用 來與佇列對5通信,以及佇列對6祜 T 6破用來與佇列對9通信。 置於一佇列上的WQE於可靠遠拉胆a丄 罪連接服務造成資料被寫入 至接收記憶體内,其被連接佇列^ A ^ 1丁 N對的—接收WQE所參考。 RDMA運算在連接佇列對的位址空間上操作。 在本發明的一個具體實施例中,該可靠連接服務是可靠 的,因為硬體維持順序號碼,且回應所有封包傳遞。一硬 體和SAN驅動軟體的組合重試任何已失敗的通信。該佇列 對的處理客戶獲得可靠的通信,即使出現位元誤差,收到 錯誤和網路擁塞。如果其它可能的通道存在於該SAN架構 中’可靠的通信便可被維持甚至失敗出現在光纖交換器, 連接器或通遒配接器埠。 除此之外,回應可能被運用到通過該SAN架構時,遞 -23 - (18) (18)583544 發明說明績頁 送資料的可靠性。該回鹿可以,_ 應了以,或不可以是一程序層次的 回應’也就是一回應使一桩跄去口 文接收私序4耗資料有效。二者擇 一地,該回應可以是口鈔抖;次Μ 疋/、月匕L不具料已到達它的終點。 可靠資料元服務以一個釦口古 加土 ^ 個和,、有一個遠端端至端組態内 谷結合一本地端至端*能向 、、且4内备。可靠資料元服務允許一佇 "客戶程序在任何其他遠端節點上,與任何其他佇列 、子通L。纟#收X作作列,可靠資料元服務允許在任何 其他的遠端節點上,從任何發送工作佇列的送進來訊息。 可靠資料元服務大大地改良擴充性,因為可靠資料元服 務疋採連接的。因&,具有一固定數目的佇列對的末端節 點把用可靠資料7C服務,而非可靠連接傳送服務與更多程 序和末端節點通信。舉例來說,如果每一個N主處理機節 點包含P程序,且在每個節點的所有p處理希望在所有其他 即點上與所有處理通信,在每個節點上,該可靠連接服務 需要P X (N - 1)個佇列對。相反地,該無連接可靠資料元 服務在每個節點上只需要p個佇列對+ (N ·丨)個ee組態内 容做完全相同的通信。 圖6概略說明一分散式計算系統的部分運用可靠連接服 務分散式處理之間通信。圖6中的分散式計算系統6〇〇包括 主處理機節點丨,一主處理機節點2和一主處理機節點3。 主處理機節點1包括一處理A 610具有一佇列對4。主處理機 節點2有一程序c 62〇 ,其具有一佇列對24和一處理d 63〇 , 其具有一佇列對25。主處理機節點3有一程序Ε “ο,其具 有一佇列對14。 -24 - 583544 (19) 發明說明績頁 在由分散式計算系統600實現的可靠資料元服務中,佇 列對是耦合於一無連接的傳送服務。舉例來說,一可靠資 料疋服務耦合佇列對4至佇列對24,25和14。特別的是, 一可靠資料元服務允許佇列對4的發送工作仔列可靠地傳 遞訊息至佇列對24,25和14中的接收工作件列。同樣地, 孩仵列對24,25和14的發送佇列可以可靠地傳遞訊息至佇 列對4中的接收工作佇列。
在本發明的一個具體實施例中,該可靠資料元服務運用 與每個訊息框架有關的順序號碼和回應,以確定相同程度 的可靠度為可靠的連接服務。端至端(EE)的組態内容維持 端至端特定的狀態,以追蹤順序數字,回應和逾時值。別組 J内谷的端至端狀態在一對末端節點之間,被所有無連接 的仔列對通信所分享。每個末端節點需要至少一個EE組 怨内谷給每一個末端節點於可靠資料元服務它想通信(舉 例來說:一給定的末端節點至少需要则固EE組態内容可以 有可靠資料元服務和N個其他的末端節點的)。
不可靠資料元服務是無連接的,不可靠資料元服務被管 =應用程式運用以發現及整合新的交換器,路由器和末端 即點整合至一給定的分散式計算系統。不可靠資料元服務 並不提供該可靠連接服務和該可靠資料元服務的可靠度 保證。該不可靠資料元服務因此操作以少量狀態的訊息在 每個末端節點維護。 換到圖7 ’ 一資料封包的說明依照—本發明的較佳具體 實施例被描述。一資料封包是一單位的資訊遞送通過該 -25 - (20) _ 發明說明續頁 SAN架構。資料封包是〜 此被末端節點創造且=末端節點至末端節點的構造,而因 是主機就是目標),兮ί。因為封包到一通道配接器(不 SAN架構裡的交換器和^資料封包既非被產生也不是被該 通道配接器,交換器和二由器消耗。不是讓資料封包至一 包靠近至最後終點二由器只是移動請求封包或回應封 ,„ , ^ ^ ^ ^ ^不同連接標頭欄區於該處理。路 由為也修改封包的網 ^ ^ %頭當該封包越過一子網路邊界 。在穿過一子網路方 _ 早一個封包停留在一單一服務層 次上。 訊息資料700包含資祖八饥 貝抖分段1 702,資料分段2 7〇4和資料 分段3 706,其相似於在圖4中說明的資料分段。在這個例 子中’這些資料分段形成一封包7〇8,其被置入資料封包 712内的封包負載量另外士备 丄u另外地,貝枓封包712包含Crc 714 ’用來當决差檢查。另外祕 致雄麻 _ 力外地,路線遞迗標頭716和傳輸標 頭718出現於資料封包712内。路緩Μ访押-si 硌、、果遴运標頭716被用來為資 料封包712辨認來源和終點琿。傳輸標頭718在這個例子中 是敘述資料封包712的終點仔列對。另外地,傳輸標頭川 也提供訊息,例如:操作碼,封包順序號 7现螞和分割給資料 封包712。 該操作碼辨明封包是否是該第一,最後, s τ同或只是一 封包訊息。該操作碼也定義出運算是否县
疋一發送,RDMA 窝入,RDMA讀取/或原子的。該封包順序 、·, 斤唬碼被起始化當 通信被建立時,而且每·一次增量一件列對4 * ^ ^ T 0產生—新的封 包。一末端節點埠可能被組態化成一個哎 4 Γ此疋多個重疊 -26 - (21) (21)583544 發明說明續頁 集的成員,稱為分割。 在圖8中 刀散式電腦系統部分的描述說明一實例的 請求和回應處理。圖8的分散式電腦系統包括一主處理機 節點802和-主處理機節點鮮主處理機節點包括一主 通道配接器806。主處理機節點8〇4包括一主通道配接器綱 。圖8的分散式電腦系統包括一 SAN架構81〇,其包括一交 換器812和一交換器814。肖SAN架構包括—連結耦合主通 C配接器806至又換器812; —連結耦合交換器812至交換器 814 ;而且一連結耦合主通道配接器8〇8至交換器814。 在該實例處理中,主處理機節點8〇2包括一客戶程序A 。主處理機節點804包括一客戶程序B。客戶程序A由佇列 對23 (824和826)與主通道配接器硬體806互動。客戶程序b 由佇列對24 (828和830)與主通道配接器硬體808互動。仵列 對23和24是資料結構,包括一發送工作仵列和一接收工作 佇列。 程序A藉由宣告工作佇列元件,發動訊息請求至仵列對 23的發送彳宁列824。這樣的一個工作仵列元件在圖4中被說 明。客戶程序的訊息請求被包含在發送工作佇列元件中的 集合列表所參考。該集合列表的每個資料分段指到一實際 相鄰的本地記憶體,其包含該訊息的一部份,例如資料分 段1,2和3所指示的,其分別地擁有在圖4中的訊息部份i ,2和3。主通道配接器806裡的硬體讀取儲存於實際相鄰 緩衝器中的工作仵列元件和分段訊息至資料封包内,例如 在圖7中所說明的資料封包。資料封包被遞送通過S AN架 構,以及當作可靠的傳遞服務,被最後終點的末端節點 -27 - 583544 (22) 發明說明續頁 所回應。如果不連續地回應,該資料封包被來源末端節點 再傳送。資料封包被來源末端節點產生和被終點末端節點 消耗。 參考圖9,依照本發明的較佳具體實施例,說明用於分 散式網路系統之網路定址的圖解被描述。一主機名字提供 一邏輯識別碼給一主機節點,例如··一主處理機節點或1/〇 配接器節點。該主機名字辨認末端節點給訊息,因此訊息 被送往程序,其常駐在主機名字定義的末端節點上。因此 ,每個節點都有一個主機名字,但是一個節點可以有多個 CAs。被指派64-位元識別碼(EUI-64) 902的單一 IEEE可被 指定至每個元件。一元件可以是一交換器,路由器或CA。
每個CA埠906分配一個或多個全域獨一 ID (GUID)識別符 號904。使用多個GUIDs (a.k.a.IP位址)是有一些理由,有某 些是在下列例子中說明。在一個具體實施例中,不同的IP
位址辨認在末端節點上不同的分割或服務。在一不同的具 體實施例中,不同的IP位址用來定義不同的服務品質(QoS) 屬性。然而在另一個具體實施例,不同的IP位址辨認通過 外部子網路路線的不同路徑。 一 GUID 908被指定至一交換器910。 一本地ID (LID)指的是一短位址ID,用來於單一子網路 内識別一 CA埠。在一個具體實施例中,一子網路最多有 216個末端節點,交換器和路由器,而且因此該LID是16位 元。一 LID (SLID)和一終點LID (DLID)是該來源和終點LIDs 被用於本地網路標頭。一單一 CA埠906最多有2£Μ〇: LIDs 912 -28 - 583544 (23) 發明說明續頁 被指定到它。LMC代表該CA的LID遮蔽控制欄位。一遮蔽 是一位元的樣本用來接受或拒絕位元樣本於另外的資料 組0 多種LIDs的使用是有一些理由,某些可由接下來的例子 提供。在一個具體實施例中,不同的LIDs於一末端節點辨 識不同的分割或服務。在另外的一個具體實施例中,不同 的LIDs用來定義不同的Q〇s屬性。在再進一步的具體實施 例中,不同的LID定義通過該子網路的不同路徑。一單一 交換器埠914具有一 LID 916與它有關。 一對一的對應並不需要存在於LIDs和GUIDs之間,因為 對每個埠,一個CA比GUIDs可以有更多或較少的LIDs。對 有多個冗餘埠和冗餘傳導性的CAs至SAN架構,該CAs,但 是不一定要,在它每一個埠上使用相同的LID和GUID。 一分散式電腦系統的部分依照本發明的較佳具體實施 例於圖10中被說明。分散式電腦系統1〇〇〇包括一子網路 1002和一子網路1〇〇4。子網路1002包括主處理機節點1〇〇6 ,1008和1010。子網路1004包括主處理機節點1012和1014。 子網路1002包括交換器1016和1018。子網路1004包括交換器 1020和 1022 〇 路由器連接子網路。舉例來說,子網路1002被連接到1004 與路由器1024和1026。在一具體實施例中,一子網路最多 有216個末端節點,交換器和路由器。 一子網路被定義成一群末端節點和_接交換器,其被處 理成一單元。典型地,一子網路佔據單一地理的或功能的 -29 - 583544 (24) 發明說明續頁 區域。舉例來說,〜單一電腦系統在一個房間中便能夠被 定義為一子網路。在一個具體實施例中,一子網路裡的交 換器能執行非常快迷的蟲孔或切過路線給訊息。 一交換器於一子網路内檢查DLID於該子網路内的獨特 性’以允許該交換器很快地而且有效率地遞送送進來的訊 息封包。在一個具體實施例中,交換器是一相對地簡單的 電路,而且典型地被實現成一單一的積體電路。—子網路 可以有由串接交換器形成的幾百或幾千個末端節點。 如圖10所說的’對延伸至較大的系統,子網路與路由器 一起被連接,例如:路由器1024和1026。該路由器直譯Ip 終點ID (舉例來說:Ipv6終點id)和遞送像Ip一樣的封包。 一 X換器的實例具體實施例被說明於圖3B中。每個I〆。 路徑在一交換器或路由器上有一埠。通常,一交換器能遞 送封包在相同的交換器上從一埠至任何其他的埠。 於一子網路内,例如:子網路1〇〇2或予網路10〇4,從來 源埠至一終點埠的路徑是由該終點主通遒配接器淳的lid 決定。在子網路之間,一路徑的決定是由該終點主通道配 接器埠的IP位址(舉例來說:IPv6位址)和該路由器痒的[ID 位址,其將被用來到達終點的子網路。 在一個具體實施例中,該請求封包使用的路徑和對麻正 回應(ACK)或負回應(NAK)框架的請求封包不需要是對稱 的。在運用某一路線遞送的具體實施例中,交換器根據 DLID選擇一輸出埠。在一個具體實施例中,在一個具體實 施例中,路線遞送的決定標準包含於一個路線遞适表。在 -30 - 583544 (25) 發明說明續買 一其它可能的具體實施例中,一交換器運用一分開的標準 組給每個輸入埠。 一資料處理於本發明的分散式電腦系統典型地疋由一 些硬體和軟體步驟所組成。一客戶禚序資料傳送服務可以 是一使用者模式或一核心模式程序。客戶程序存取王通遒 配接器硬體經由一個或多個佇列對’例如·在圖中3A ’ ' 和6說明的彳宁列對。該客戶程序呼叫一作業系統特足的程 式規劃介面,在此處被稱為”軟體動詞"。實現軟體動詞的 該軟體碼宣告一工作件列元件至該給定仔列對工作仵列。 有許多可能宣告一工作侍列元件的方法’以及终多可能 的工作佇列元件格式,其允許各種不同的成本/效能的設 計點,但不影響相容性。然而一用戶程序必須在定義明確 的方法裡,通信至軟體動詞,以及傳輸至S AN架構的資料 格式和協定必須被定義詳細,以允許裝置相容於一相異的 環境内。 在一個具體實施例中,通道配接器硬體偵測出工作件列 元件旦告以及存取該工作仵列元件。在這個具體實施例中 ’通道配接器硬體轉譯並且使該工作佇列元件的虛擬位址 有效和存取資料。 一送出的訊息被分成一個或多個資料封包。在一個具體 實施例中’通遒配接器硬體加入一傳送標頭和一網路標頭 至每個封包。該傳送標頭包括順序號碼和其他的傳送訊 心網路標頭包括路線遞送訊息,例如終點ip位址和其他 的網路路線遞送訊息。該連接標頭包含終點本地的識別碼 -31- 583544 (26) 發明說明續頁 (DLID)或其他的本地路線遞送訊息。該通合的連接標頭總 是被加至該封包。該適合的全域網路標碩被加至一給定的 封包如果終點末端節點是在一遠端子網路上。 如果運用一可靠的傳送服務,當一請求資料封包到達它 的終點末端節點,回應資料封包被該終點末端節點使用, 以讓請求資料封包發送者知道該請求資料封包是有效的 ,並在該終點接收。回應資料封包回應〜或多個有效和已 接受的請求資料封包。該請求者可以有多個未解決的請求 ’貝料封包在它收到任何的回應之前。在〜個具體實施例中 ’多個未解決訊息的數目,也就是請求資料封包,被決定 當一佇列對被創造時。 一分層式架構11〇〇的具體實施例用以實現本發明在圖 11中以圖解形式說明。圖η的分層式架構表示各種不同層 的資料通訊路徑,和資料和控制訊息的組織在層之間傳遞。 主通道配接器末端節點協定層(由末端節點丨丨丨丨所運用 ,舉例來說)包括一較上層級協定1102被用戶1103,一傳輸 層1104 ; —網路層1106 ; —鏈結層1108和一實體層1110所定 義。交換器層(由交換器所運用丨丨13,舉例來說)包括鏈結 層1108和實體層1110。路由器層(由路由器nl5所運用,舉 例來說)包括網路層1106,鏈結層1108和實體層1110。 通常分層式架構1100跟隨一典型通信堆疊大綱。對於末 端節點1 Π 1的協定,舉例來說,較上層協定丨1〇2運用軟體 動詞,以在傳輸層1104產生訊息。網路層11〇6在網路子網 路(1116)之間遞送封包。鏈結層1108在一網路子網路(mg) -32 - 583544 (27) 發明說明績頁 遞送封包。實體層1110發送位元或位元組至其他裝置的實 體層。每一個層不知道較上或較低層如何執行它們的功能。 用戶1103和1105代表應用程式或程序,運用於其他的層 用以在末端節點之間通信。傳輸層1104提供端至端訊息移 動。在一個具體實施例中,傳輸層提供四種類型的傳送服 務如上所述是一可靠的連接服務;可靠的資料元服務;不 可靠的資料元服務;和原始資料元服務。網路層1 1〇6執行 封包遞送通過一子網路或多個子網路至終點末端節點。鏈 結層1108執行流量控制,誤差檢查和通過連接器的優先封 包遞送。 貫體層1110執行相依技術的位元傳輸。位元或位元組經 由連接器1122,1124和1126在實體層之間通過。連接能由 印刷電路銅線銅纜線’光纖或與其他的適當的連接器一起 實現。 本發明針對圖1-11在上描述的SAN環境内操作。本發明 提供一機制用於管理工作和完成佇列於該SAN架構内,其 使用頭和尾部指標器^本發明的插述將會被提供給該工作 和完成佇列兩者,為的是要瞭解頭部和尾部指標器是如何 的相互使用。將會被激賞的是下列本發明操作的描述有關 工作和完成佇列是典範的,且修改是可以做到而不離開本 發明的精神和範圍。 χ作佇列結構 圖12表示一實例工作佇列,其可以不是一發送佇列就是 —接收佇列。工作佇列1200是由一個或多個頁所組成的, -33 - 583544 (28) 發明說明續頁
雖然其它的容量可以使用,但其典型的容量是4K位元。 在圖12裡的例子中,佇列使用四個頁,第〇頁1201,第1頁 1202,第2頁1203,和第3頁1204,其位在系統記憶體1205 。該工作仔列上的每個進入點是^一指標咨至該W Q E ’其包 含該資訊需要由該HCA傳送/接收該訊息至/從該終點。舉 例來說,WQE指標器1指到WQE 1 1262,WQE指標器2指到 WQE 2 1264,而WQE指標器η指到WQE η 1266。一些訊息包 含於該WQE包括,但是不限制在,一連串的資料分段,每 個都由一虛擬位址,一 L_Key和該分段的長度所組成。注 意該WQE的大小不被這結構所限制,所以在相同工作佇列 上的WQEs可以是大小不同,因此可容納不同數目的資料 分段。 指到該WQE的指標器,被放置在該工作佇列上,典型地
是一 32或64位元的位址,其端賴該作業系統,其可由該CI 和該HCA硬體兩者去存取WQE。它可以是一實際位址,或 者是一虛擬位址如果該HCA硬體和記憶體控制器能夠轉 譯對該實際位址至虛擬位址。選擇指標器的大小使得指標 器的數目容納於一頁内是二的次方。舉例來說,以一 64 位元的指標器’ 512個指標器可容納於一 4K的頁内。在圖 12裡的例子中’這將提供一 2048個指樣器的彳宁列深度其提 供給2048個WQEs參考。不同的佇列深度可由改變頁的數目 提供,其組成工作佇列。該硬體的簡化可利用將頁數變為 二的次方,而仍然維持相當大的彈性於工作佇列大小的選 擇〇 -34 - 583544 (29) 發明說明績頁
一工作佇列分頁表(WQPT) 1210被維護,其包含一頁的列 表1215以組成該工作佇列。這可以位於系統記憶體或HCA 記憶體,但是在任一情況下,它的位置被儲存於HCA 1220 。對每個工作佇列,HCA維持二個索引給該工作佇列指標 器1230。該第一個,WQPT索引1232,被用來將上述的WQPT 列入索引。在圖12裡的例子中,具有一工作佇列包含四個 頁,WQPT的索引是二位元。該第二個索引是WQ頁索引1234 ,其被用來將該工作佇列的每個頁編入索引中。舉例來說 ,以一 64位元組WQ和一 4K大小的頁,WQ頁的索引會是 9 位元。 工作佇列1200已進一步與WQ頭部索引1240和在該通道 介面(CI)的一 WQ尾部索引有關。該WQ頭部索引1240被該 CI使用去決定如果WQ 1200是滿的,以及該WQ尾部索引 1250被本發明用來於該WQ 1200内,管理該WQE指標器的寫 入〇
該HCA維持它自己的WQ頭部索引1236和WQ尾部索引 1238版本。這些WQ索引是由該WQP丁索引1232和WQ頁索引 1234給該WQ頭部索引1236和該WQ尾部索引1238。該HCA 1220使用該WQ尾部索引1238去辨別WQ是否是空的,以及 使用WQ頭部索引1236去決定下一個將被該HCA處理的 WQE指標器。 該WQ 1200的起始狀態是空的,在此WQ頭部索引1240和 WQ尾部索引1250是相等的,以及提供給該佇列的頂端參 考。該WQ頭部索引1236在該HCA中指到下一個將被處理的 -35 - 583544 發明說明續頁 (30) WQE指標器的 引1250指到該 以被寫入。當 WQ〖200内之位置。由該CI維護的WQ尾部索 WQ 1200内的位置,在此下一個標器可 WQE指標器被寫入至該WQ 1200 ’該WQ尾部
索引⑽的位置移動通過該WQ讓。同樣地,當輝8被 虛理時,該WQ頭部索引丨236於該HCA中移動通過該WQ 1200。 完成仔列結構
圖13表示一完成佇列的例子。完成佇列1300由一個或多 個頁所組成,典型的容量是4 K位元組,然而其它的容量 大小能夠被使用。在圖13裡的例子中’該仵列使用位於系 統記憶體1305的四個頁,第〇頁1301 ’第1頁1302 ’第2頁1303 和第3頁1304。該CQ上的每個進入點是一指標器至該CQE ,其包含該由該HCA提供的資訊去定義該工作仵列。舉例 來說,CQE指標器1指到CQE 1 1362,CQE指標器2指到CQE 2 1364,而CQE指標器η指到CQE η 1366。包含於該CQE之訊息 數量的變化端賴該QP的服務類型,其與該工作完成相關 。舉例來說,對一不可靠的資料元QP,該CQE包含定址訊 息給該通信末端節點,然而這訊息對已連接的QP是不需 要的。注意該CQE的大小不被這結構所限制,所以在相同 CQ上的CQEs可以是大小不同,因此在相同CQ上可容納不 同數目的服務類型。 指到該CQE的指標器,被放置在該CQ上,典型地是一 32 或64位元的位址,其端賴該作業系統,其可由該CI和該HCA 硬體兩者去存取CQE。它可以是一實際位址,或者是一虛 -36 - 583544 (31) 發明說明績頁 擬位址如果該HCA硬體和記憶體控制器能夠轉譯對該實 際位址至虛擬位址。選擇指標器的大小使得指標器的數目 容納於一頁内是二的次方。舉例來說,以一 64位元的指標 器,512個指標器可容納於一 4K的頁内。在圖13裡的例子 中,這將提供一 2048個指標器的佇列深度其提供給2048個 CQEs參考。不同的仔歹J深度可由改變頁的數目提供,其組 成工作佇列。該硬體的簡化可利用將頁數變為二的次方, 而仍然維持相當大的彈性於CQ大小的選擇。 一完成佇列分頁表(CQPT) 13 10被維護,其包含一頁的列 表以組成該CQ。這可以位於系統記憶體或HCA記憶體,但 是在任一情況下,它的位置被儲存於HCA 1320。對每個工 作佇列,HCA維持二個索引給該完成佇列指標器1330。該 第一個,CQPT索引1332,被用來將上述的CQPT列入索引。 在圖13裡的例子中,具有一 CQ包含四個頁,CQPT的索引 是二位元。該第二個索引是CQ頁索引1334,其被用來將該 CQ的每個頁編入索引中。舉例來說,以一 64位元組CQE和 一 4K大小的頁,CQ頁的索引會是9位元。 該CQ 1300已進一步與CQ頭部索引1340和一 CQ尾部索引 1350有關。該CQ頭部索引1340被該CI使用去管理CQE指標 器於該CQ 1300的處理,以及該CQ尾部索引1350被該CI使用 去做決定如果CQ是空的。 該HCA維持它自己的CQ頭部索引1336和CQ尾部索引1338 版本。這些CQ索引是由該CQPT索引1332和CQ頁索引1334 給該CQ頭部索引1336和該CQ尾部索引1338。該HCA使用該 -37 - 583544 (32) 發明說明績頁 CQ尾部索引1336去辨別CQ是否是空的,以及使用CQ尾部 索引1338去決定下一個將被該HCA宣告的一 CQE指標器。 該CQ 1300的起始狀態是空的,在此cq頭部索引1340和 CQ尾部索引丨350是相等的,以及提供給該佇列的頂端參考 。該CQ頭部索引1340指到下一個將被CI處理的CQE指標器 的CQ 13〇〇内之位置。該CQ尾部索引1338於該HCA内指到該 CQ 1300内的位置,在此下一個CQE指標器可以被寫入。 當CQE指標器被寫入至該CQ 1300時,該CQ尾部索引1338 的位置移動通過該CQ 1300。同樣地,當CQE指標器被處理 時,由該CI維持的該CQ頭部索引1340移動通過該CQ 1300。 詳細的工作請求運算 參照圖14,一流程表依照本發明的較佳具體實施例,說 明一通道介面的運算當用戶宣告一工作請求至一工作佇 列。當一用戶宣告一工作請求至一工作佇列時,程序便開 始,CI建立一 WQE,定義該請求(步驟1402),並且寫入此 WQE至記憶體内,其可對該HCA作存取動作(步驟14〇4)。 在宣告WQE之前,做出一決定有關於工作佇列是否是滿的 (步驟1406)。比較增加一的頭部和的尾部索引決定工作佇 列是否是滿的。如果它們是相等的,該仵列便是滿的,因 此這個工作請求便不被接受直到HCA指出一個或多個 WQEs已經由宣告一個或多個cQEs至該完成佇列而被處理 (步驟 1408)。 對此WQE的指標器然後在該尾部工作佇列被寫入(步驟 1410)。該尾部的位置是由該尾部索引所決定的,其是該 • 38 - 583544 (33) 發明說明續頁 WQPT索引和WQ頁索引的組合。進入點該頁内之頁位址和 偏移的組合提供該WQE置放的位址。二者擇一地,如果該 工作佇列頁對應至一鄰近的虛擬位址空間,該CI可以維持 一 WQ尾部指標器,也就是一虚擬位址,和使用硬體位址 傳輸在該佇列上,儲存WQE於該適當的位置。如果該尾部 索引不是滿的,則該WQE指標器被寫入至由該尾部索引所 提供參考的位置(步驟1410)。該尾部索引然後在本地記憶 體中被增加,使得它會參考下一個Wqe指標器將會被置放 的位置(步驟1412)。該已更新的尾部索引被寫入至HCA (WQPT索引加上WQ頁索引),以告知HCA有一個或多個 WQEs需要處理(步驟1414),而該程序便結束。 當尾部索引被增加時,如果該頁索引包住,WqPT索引 被增加一。如果WQPT索引包住,工作佇列已經被包至該 佇列的頂端。雖然CI是在檢查和更新該尾部索引和寫入 WQE至該佇列的尾部的程序中,它需要完全鎖住這些資源 ,以防止它們被其他的程序使用。 現在回到圖15’ 一流程表依照本發明的較佳具體實施例 ,說明一主通道配接器的運算。該程序開始和hca以週期 性比較頭部和尾部索引,監視該工作佇列(步驟ΐ5〇ι),以 及決定該工作仵列是否是空的(步驟15〇2)。如果該頭部和 尾部指標器是相等的’則該佇列是空的,且程序回到步驟 1501去比較頭部和尾部指標器。如果指標器不相等,則有 -39 - 583544 (34) 發明說明續頁 一個WQE會被處理。二者擇一地,當CI更新儲存於該HCA 中的尾部索引時,HCA可以使用這個更新當成一指示,有 一需要處理的WQE。HCA決定該WQE指標器(步驟15〇4)的位 置是用第一個放置包含指標器的頁。這可以使用該頭部 WQPT索引,將WQPT編入索引。該頁内的位置然後根據該 WQ頁索引以及該WQE的大小來決定。該HCA然後使用這個 指標器去讀取該WQE (步驟1506)。如果該指標器是一實際 位址,則該HCA直接地讀取該WQE。如果指標器是一虛擬 位址,則該HCA使用它的位址轉譯表格,以決定對應該虛 擬位址的實際位址,然後使用這個實際位址讀取該WQE。 該HCA然後傳送請求的訊息(步驟1508)。在訊息成功地 被傳送之後,以及任何可能需要的回應已被收到,該WQE 的處理便被完成。該HCA增加它自己的頭部索引版本(步 驟1510),且由寫入一 CQE於可存取至CI的記憶體内,以通 知該CI (步騾1511)。當頭部索引被增加時,如果該頁索引 包裹,則該WQPT索引被增加一。如果WQPT索引包裹,則 該工作佇列已經包裝至該佇列的頂端。 該HCA然後將增加一的頭部索引與尾部索引做比較,檢 查該CQ不是滿的(步驟1512)。如果頭部索引等於增加的尾 部索引,則該CQ是滿的,以及運算是以錯誤的方式結束(步 驟1514)。如果CQ不是滿的,則HCA決定儲存CQE指標的 位置是用第一個放置使用CQPT索引的頁(在增加之前)(步 驟1516)。該頁内的位置然後根據該CQ頁索引以及該指標 器的大小來決定。該HCA然後在該CQ的尾部,寫入指標至 -40 - 583544 (35) 發明說明續頁 此CQE (步驟1518),增加该<^尾部索引(步驟ι52〇),並且 結束。如果該頁索引包裹’則CQPT索引被增加一。如果 CQPT索引包裹,則CQ尾部已經包裹至該佇列的頂端。 現在回到圖16 ’ 一流程表依照本發明的較佳具體實施例 ,說明一通道介面的運算當用戶已經請求工作完成訊自、時 。在儲存CQE指標器後,該CI被告知hCA於系統記憶體裡 儲存增加的CQ尾部索引,一新的CQE在該CQ上已被放置。 程序便開始而且檢查完成佇列是否是空的(步騾16〇4)。如 果CQ是空的,則該處理便結束。如果CI決定出該Cq不是 空的(該頭部和尾部索引不相等)於步驟1604中,該ci在該 CQ的頭部讀取CQE指標器(步驟1606)。這個CQE指標器是被 該CQ頭部索引結合該CQ頁表格所參考。ci然後使用實際 位址或結合硬體位址轉譯的虚擬位址,從CQE參考的位置 讀取該CQE (步驟1608)。該CQE的内容然後被用來將該工 作完成訊息送回請求它的用戶(步驟1610)。 在CQE被該CI處理之後,該CQ頭部索引的增加方式與CI 增加WQ尾部索引的方式相似(步驟1612)。該更新的頭部索 引被儲存於該HCA中,讓該HCA未來檢查Cq是否是滿的(步 驟1614)。除此之外,CI現在可將用來檢查該工作佇列是否 是滿的之WQ頭部索引的CI拷貝加一,以再利用對應這個 CQE的WQE (步驟1616),因此該程序便結束。在該CQE被消 耗之後,該CI需要執行WQ頭部索引的更新,以保證在該 工作件列上釋放2間之前,有一對應的空間於該CQ上。 雖然該CI是在檢查和更新該cq頭部索引,從佇列的頭部 -41 -
發明說明績頁 讀取該CQE,該CI需要完全鎖住這些資源,以防止它們被 其他的程序使用。 最佳化 下列各項是於此發明中,對較早描述的基本方法之最佳 化列表·· 1) 該CI可以在幾個WQEs已經於該工作佇列上被置放後,只 更新該工作佇列尾部索引一次,減少對HCA的寫入數目。 2) 該CI可以在幾個CQE指標器已經從該CQ取回之後,只更 新HCA的可用CQ頭部索引一次,來減少對HCA的寫入數目。 3) 該HCA可以在該CQ上置放幾個CQEs和它們相關的CQE 指標器後,只更新該CQ尾部索引一次,減少對系統記憶 體的寫入數目。 4) 如果該工作佇列或CQ是相鄰於一虛擬位址空間中,CI 可以參考使用虛擬位址和使用硬體位址轉譯機制的佇列 ,以執行儲存或取回。在這情況下,在針對該佇列末端的 虛擬位址所做的存取和檢查以偵測何時一包裹已經發生 之後’用來參考該佇列的虛擬位址會以該WQE或CQE指標 器的長度增加。 5) 對於工作佇列其容納單頁内的,當佇列很小或該頁容 量太大時便可能發生,該WQPT和WQPT的索引可能被消除 。該單頁的實際位址會一直需要被儲存。 6) 對於CQ其容納單頁内的,當佇列很小或該頁容量太大 時便可能發生,該CQPT和CQPT的索引可能被消除。該單 頁的實際位址會一直需要被儲存。 583544 (37) 發明說明續頁 7) 如果該X作佇列位於鄰近的實際記憶體,其可以被CI 和HCA存取的,該WQPT和WQPT的索引可能被消除。 8) 如果該CQ位於鄰近的實際記憶體’其可以被CI和HCA 存取的,該〔卩打和CQPT的索引可能被消除。 這是重要的去注意當本發明已在整個功能性資料處理 系統的上下文中被描述,那些原來熟悉於該技藝的人士將 會激賞本發明的程序能分配於電腦可讀取的指令形式和 多種不同的形式和本發明的使用都是相等地,不管是該特 定類型的信號媒體實際上用來實行該分配。該電腦可讀取 媒體的實例包括可記錄型媒體,例如:一軟式磁碟,一硬 式磁碟驅動’ 一隨機存取記憶體,CD-ROM,DVD-ROM, 和傳輸型媒體,例如:數位及類比通訊連接器,有線或無 線通訊連接器’使用傳輸形式,例如··射頻和光傳輸。該 電細可靖取媒體可能是用編碼的格式,其被解碼以實際用 於特定的資料處理系統。 本發月的描述是當作證明和描述的目的,而不是想要限 制本發明於已揭露的形式。許多修改和變更對於熟悉於該 技#々^ 士會疋易於明白的。所選擇和描述的具體實施例 疋為了詳加解釋本發明的原哥卜實際的應用#使其他熟悉 於該技藝的人士能夠了妞 约Τ解本發明有各種不同修改的具體 實施例,如同適合於該特殊用途。 -43 .
Claims (1)
- 583544 拾、申請專利範圍 1. 一種管理一工作請求的方法,包含: 建立一工作佇列進入點給一工作佇列; 將該工作佇列進入點寫入記憶體内;以及 將指至該工作佇列進入點之一工作佇列進入點指標 器,寫入該工作佇列内。 2. 如申請專利範圍第1項之方法,進一步包含:將佇列頭部索引和增加一的佇列尾部索引執行比較 ,以決定工作佇列是否是滿的;以及 將該工作佇列進入點寫入,如果工作佇列不是滿的。 3. 如申請專利範圍第1項之方法,其中該工作佇列進入點 指標器包含一實際位址。 4. 如申請專利範圍第1項之方法,其中該工作佇列進入點 指標器包含一虛擬位址。5. 如申請專利範圍第1項之方法,其中將該工作佇列進入 點指標器寫入的步驟包含在被一佇列尾部索引所參考 之位置寫入工作佇列進入點指標器。 6. —種管理一工作請求的方法,包含: 決定一工作佇列進入點指標器的位置; 讀取一工作佇列進入點,其被該工作佇列進入點指標 器所參考;以及 傳送一訊息,對應至該工作佇列進入點。 7. 如申請專利範圍第6項之方法,其中該工作佇列進入點 指標器包含一實際位址。 -44 - 583544 申請專利範圍續頁 8. 如申請專利範圍第6項之方法,其中該工作佇列進入點 指標器包含一虛擬位址。 9. 如申請專利範圍第6項之方法,進一步包含: 將一完成佇列進入點寫入,其對應至該記憶體裡的工 作佇列進入點。 10. 如申請專利範圍第9項之方法,進一步包含將一完成佇 列進入點指標器寫入,其於一完成佇列内,指至該完 成佇列進入點。 11. 如申請專利範圍第10項之方法,其中將該完成佇列進 入點指標器寫入的步驟包含在被一佇列尾部索引所參 考之位置寫入完成佇列進入點指標器。 12. —種管理一請求給工作完成訊息的方法,包含: 讀取一完成佇列進入點指標器; 讀取一完成佇列進入點,其被該完成佇列進入點指標 器所參考;以及 使用完成佇列進入點,將工作完成訊息送回。 13. 如申請專利範圍第12項之方法,其中該完成佇列進入 點指標器包含一實際位址。 14. 如申請專利範圍第12項之方法,其中該完成佇列進入 點指標器包含一虛擬位址。 15. —種於一電腦可讀取的媒介中管理一工作請求的電腦 程式產品’包含· 指令以建立一工作佇列進入點給一工作佇列; 指令將該工作佇列進入點寫入記憶體内;以及 -45 - 583544 申請專利範圍續頁 指令將指至該工作佇列進入點之一工作佇列進入點 指標器,寫入該工作佇列内。 16. 如申請專利範圍第15項之電腦程式產品,進一步包含: 指令將佇列頭部索引和增加一的佇列尾部索引執行 比較,以決定工作佇列是否是滿的;以及 指令將該工作佇列進入點寫入如果工作佇列不是滿 的。 17. 如申請專利範圍第15項之電腦程式產品,其中該工作 佇列進入點指標器包含一實際位址。 18. 如申請專利範圍第15項之電腦程式產品,其中該工作 佇列進入點指標器包含一虛擬位址。 19. 如申請專利範圍第15項之電腦程式產品,其中該指令 用以將該工作佇列進入點指標器寫入,包含指令在被 一佇列尾部索引所參考之位置寫入工作佇列進入點指 標器。 20. —種於一電腦可讀取的媒介中管理一工作請求的電腦 程式產品,包含: 指令決定一工作佇列進入點指標器的位置; 指令讀取一工作佇列進入點,其被該工作佇列進入點 指標器所參考;以及 複數指令傳送一訊息,對應至該工作佇列進入點。 21. 如申請專利範圍第20項之電腦程式產品,其中該工作 佇列進入點指標器包含一實際位址。 22. 如申請專利範圍第20項之電腦程式產品,其中該工作 583544 申請專利範圍續頁 佇列進入點指標器包含一虛擬位址。 23. 如申請專利範圍第20項之電腦程式產品,進一步包含: 指令將一完成佇列進入點寫入,其對應至該記憶體裡 的工作仔列進入點。 24. 如申請專利範圍第23項之電腦程式產品,進一步包含 指令用以將一完成佇列進入點指標器寫入,其於一完 成佇列内,指至該完成佇列進入點。25. 如申請專利範圍第24項之電腦程式產品,其中該指令 用以將該完成佇列進入點指標器寫入,包含指令在被 一佇列尾部索引所參考之位置寫入完成佇列進入點指 標器。 26. —種於一電腦可讀取的媒介中管理工作完成訊息之請 求的電腦程式產品,包含: 指令以讀取一完成佇列進入點指標器;指令以讀取一完成佇列進入點,其被該完成佇列進入 點指標器所參考;以及 指令使用完成佇列進入點,將工作完成訊息送回。 27. 如申請專利範圍第26項之電腦程式產品,其中該完成 佇列進入點指標器包含一實際位址。 28. 如申請專利範圍第26項之電腦程式產品,其中該完成 佇列進入點指標器包含一虛擬位址。 29. —種管理一工作請求的裝置,包含: 一通道介面,其中該通道介面建立.一工作彳宁列進入點 給一工作佇列,將該工作佇列進入點寫入記憶體内,以 -47 - 583544 申請專初範圍續:頁 及將指至該工作佇列進入點之一工作佇列進入點指標 器,寫入該工作佇列内;以及 一主通道配接器耦合至該通道介面,其中該主通道配 接器處理該工作佇列進入點。 30. —種管理一工作請求的裝置,包含:一通道介面,其中該通道介面包括一工作彳宁列;以及 一主通道配接器耦合至該通道介面,其中該主通道配 接器決定一工作佇列進入點指標器的位置,讀取一工作 佇列進入點,其被該工作佇列進入點指標器所參考,以 及傳送一訊息,對應至該工作佇列進入點。 31. 如專利申請範圍第30項之裝置,其中該主通道配接器 將一完成佇列進入點寫入,其對應至該記憶體裡的工 作佇列進入點。32. 如專利申請範圍第3 1項之裝置,其中該通道介面包括 一完成佇列,以及其中該主通道配接器將一完成佇列 進入點指標器寫入,其於一完成佇列内指至該完成佇 列進入點。 33. —種管理工作完成訊息的請求的裝置,包含: 一通道介面,其中該通道介面包括一完成仔列;以及 一主通道配接器耦合到該頻道介面,其中該主通道配 接器讀取一完成佇列進入點指標器,讀取一完成佇列進 入點,其被該完成佇列進入點指標器所參考,以及使用 完成佇列進入點,將工作完成訊息送回。 -48 -
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/961,922 US6789143B2 (en) | 2001-09-24 | 2001-09-24 | Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries |
Publications (1)
Publication Number | Publication Date |
---|---|
TW583544B true TW583544B (en) | 2004-04-11 |
Family
ID=25505186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW091121512A TW583544B (en) | 2001-09-24 | 2002-09-19 | Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries |
Country Status (2)
Country | Link |
---|---|
US (1) | US6789143B2 (zh) |
TW (1) | TW583544B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI743736B (zh) * | 2020-04-08 | 2021-10-21 | 瑞昱半導體股份有限公司 | 資料傳輸系統、電路與方法 |
Families Citing this family (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7783695B1 (en) * | 2000-04-19 | 2010-08-24 | Graphics Properties Holdings, Inc. | Method and system for distributed rendering |
US7543290B2 (en) * | 2001-04-11 | 2009-06-02 | Mellanox Technologies Ltd. | Multiple queue pair access with single doorbell |
US7190667B2 (en) * | 2001-04-26 | 2007-03-13 | Intel Corporation | Link level packet flow control mechanism |
US20030101158A1 (en) * | 2001-11-28 | 2003-05-29 | Pinto Oscar P. | Mechanism for managing incoming data messages in a cluster |
US7346707B1 (en) * | 2002-01-16 | 2008-03-18 | Advanced Micro Devices, Inc. | Arrangement in an infiniband channel adapter for sharing memory space for work queue entries using multiply-linked lists |
US7290277B1 (en) * | 2002-01-24 | 2007-10-30 | Avago Technologies General Ip Pte Ltd | Control of authentication data residing in a network device |
US7266614B1 (en) * | 2002-09-30 | 2007-09-04 | Advanced Micro Devices, Inc. | Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission |
US6973550B2 (en) * | 2002-10-02 | 2005-12-06 | Intel Corporation | Memory access control |
US6961837B2 (en) * | 2003-03-25 | 2005-11-01 | Intel Corporation | Method and apparatus for address translation pre-fetch |
US7603491B2 (en) * | 2003-06-19 | 2009-10-13 | Intel Corporation | Bandwidth conserving protocol for command-response bus system |
US20050018669A1 (en) * | 2003-07-25 | 2005-01-27 | International Business Machines Corporation | Infiniband subnet management queue pair emulation for multiple logical ports on a single physical port |
US7512143B2 (en) * | 2003-10-16 | 2009-03-31 | International Business Machines Corporation | Buffer management for a target channel adapter |
US7813369B2 (en) | 2004-08-30 | 2010-10-12 | International Business Machines Corporation | Half RDMA and half FIFO operations |
US20060075057A1 (en) * | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access system and method |
US7522597B2 (en) | 2004-08-30 | 2009-04-21 | International Business Machines Corporation | Interface internet protocol fragmentation of large broadcast packets in an environment with an unaccommodating maximum transfer unit |
US8055818B2 (en) * | 2004-08-30 | 2011-11-08 | International Business Machines Corporation | Low latency queue pairs for I/O adapters |
US7430615B2 (en) | 2004-08-30 | 2008-09-30 | International Business Machines Corporation | RDMA server (OSI) global TCE tables |
US7478138B2 (en) * | 2004-08-30 | 2009-01-13 | International Business Machines Corporation | Method for third party, broadcast, multicast and conditional RDMA operations |
US7480298B2 (en) | 2004-08-30 | 2009-01-20 | International Business Machines Corporation | Lazy deregistration of user virtual machine to adapter protocol virtual offsets |
US8023417B2 (en) | 2004-08-30 | 2011-09-20 | International Business Machines Corporation | Failover mechanisms in RDMA operations |
US8364849B2 (en) | 2004-08-30 | 2013-01-29 | International Business Machines Corporation | Snapshot interface operations |
CN100442256C (zh) * | 2004-11-10 | 2008-12-10 | 国际商业机器公司 | 提供用于i/o适配器的队列对的方法、系统和存储介质 |
US20060236011A1 (en) * | 2005-04-15 | 2006-10-19 | Charles Narad | Ring management |
US7502872B2 (en) * | 2005-05-23 | 2009-03-10 | International Bsuiness Machines Corporation | Method for out of user space block mode I/O directly between an application instance and an I/O adapter |
US7552240B2 (en) | 2005-05-23 | 2009-06-23 | International Business Machines Corporation | Method for user space operations for direct I/O between an application instance and an I/O adapter |
US20060265525A1 (en) * | 2005-05-23 | 2006-11-23 | Boyd William T | System and method for processor queue to linear block address translation using protection table control based on a protection domain |
US7464189B2 (en) * | 2005-05-23 | 2008-12-09 | International Business Machines Corporation | System and method for creation/deletion of linear block address table entries for direct I/O |
US7502871B2 (en) * | 2005-05-23 | 2009-03-10 | International Business Machines Corporation | Method for query/modification of linear block address table entries for direct I/O |
US20070005815A1 (en) * | 2005-05-23 | 2007-01-04 | Boyd William T | System and method for processing block mode I/O operations using a linear block address translation protection table |
US20060277126A1 (en) * | 2005-06-06 | 2006-12-07 | Intel Corporation | Ring credit management |
US20070168567A1 (en) * | 2005-08-31 | 2007-07-19 | Boyd William T | System and method for file based I/O directly between an application instance and an I/O adapter |
US7657662B2 (en) * | 2005-08-31 | 2010-02-02 | International Business Machines Corporation | Processing user space operations directly between an application instance and an I/O adapter |
US7577761B2 (en) * | 2005-08-31 | 2009-08-18 | International Business Machines Corporation | Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation |
US7500071B2 (en) * | 2005-08-31 | 2009-03-03 | International Business Machines Corporation | Method for out of user space I/O with server authentication |
US7685330B2 (en) * | 2006-03-09 | 2010-03-23 | International Business Machines Corporation | Method for efficient determination of memory copy versus registration in direct access environments |
TWI320887B (en) * | 2006-12-15 | 2010-02-21 | Via Tech Inc | Methods for processing multi-source data, and machine readable medium thereof |
US20080192654A1 (en) * | 2007-02-09 | 2008-08-14 | Timothy Roy Block | Method, Apparatus, and Computer Program Product for Implementing Infiniband Network Topology Simplification |
US7926013B2 (en) * | 2007-12-31 | 2011-04-12 | Intel Corporation | Validating continuous signal phase matching in high-speed nets routed as differential pairs |
US7979497B2 (en) * | 2008-01-25 | 2011-07-12 | International Business Machines Corporation | Message delivery using a plurality of queue managers |
US8595301B2 (en) | 2008-01-25 | 2013-11-26 | International Business Machines Corporation | Message delivery in messaging networks |
US8145786B2 (en) * | 2008-10-06 | 2012-03-27 | International Business Machines Corporation | Efficient buffer utilization in a computer network-based messaging system |
US8587597B2 (en) * | 2009-10-06 | 2013-11-19 | Ricoh Co., Ltd. | Page transitions on electronic paper displays |
US10158702B2 (en) * | 2009-11-15 | 2018-12-18 | Mellanox Technologies, Ltd. | Network operation offloading for collective operations |
US8811417B2 (en) * | 2009-11-15 | 2014-08-19 | Mellanox Technologies Ltd. | Cross-channel network operation offloading for collective operations |
US8484392B2 (en) | 2011-05-31 | 2013-07-09 | Oracle International Corporation | Method and system for infiniband host channel adaptor quality of service |
US8804752B2 (en) | 2011-05-31 | 2014-08-12 | Oracle International Corporation | Method and system for temporary data unit storage on infiniband host channel adaptor |
US8589610B2 (en) * | 2011-05-31 | 2013-11-19 | Oracle International Corporation | Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor |
US9021123B2 (en) | 2011-08-23 | 2015-04-28 | Oracle International Corporation | Method and system for responder side cut through of received data |
US8879579B2 (en) | 2011-08-23 | 2014-11-04 | Oracle International Corporation | Method and system for requester virtual cut through |
US8832216B2 (en) | 2011-08-31 | 2014-09-09 | Oracle International Corporation | Method and system for conditional remote direct memory access write |
US8645663B2 (en) | 2011-09-12 | 2014-02-04 | Mellanox Technologies Ltd. | Network interface controller with flexible memory handling |
US9473596B2 (en) | 2011-09-27 | 2016-10-18 | International Business Machines Corporation | Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections |
US9690638B2 (en) | 2011-09-29 | 2017-06-27 | Oracle International Corporation | System and method for supporting a complex message header in a transactional middleware machine environment |
US9116761B2 (en) | 2011-09-29 | 2015-08-25 | Oracle International Corporation | System and method for preventing single-point bottleneck in a transactional middleware machine environment |
US8832217B2 (en) * | 2011-09-29 | 2014-09-09 | Oracle International Corporation | System and method for supporting different message queues in a transactional middleware machine environment |
US9143467B2 (en) | 2011-10-25 | 2015-09-22 | Mellanox Technologies Ltd. | Network interface controller with circular receive buffer |
US9059945B2 (en) * | 2011-10-31 | 2015-06-16 | Cavium, Inc. | Work request processor |
US8751701B2 (en) | 2011-12-26 | 2014-06-10 | Mellanox Technologies Ltd. | Host channel adapter with pattern-type DMA |
US9256545B2 (en) | 2012-05-15 | 2016-02-09 | Mellanox Technologies Ltd. | Shared memory access using independent memory maps |
US9396101B2 (en) * | 2012-06-12 | 2016-07-19 | International Business Machines Corporation | Shared physical memory protocol |
US8761189B2 (en) | 2012-06-28 | 2014-06-24 | Mellanox Technologies Ltd. | Responding to dynamically-connected transport requests |
US8745276B2 (en) | 2012-09-27 | 2014-06-03 | Mellanox Technologies Ltd. | Use of free pages in handling of page faults |
US9639464B2 (en) | 2012-09-27 | 2017-05-02 | Mellanox Technologies, Ltd. | Application-assisted handling of page faults in I/O operations |
US8914458B2 (en) | 2012-09-27 | 2014-12-16 | Mellanox Technologies Ltd. | Look-ahead handling of page faults in I/O operations |
US9292569B2 (en) | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US9298642B2 (en) | 2012-11-01 | 2016-03-29 | Mellanox Technologies Ltd. | Sharing address translation between CPU and peripheral devices |
US20140160954A1 (en) * | 2012-12-12 | 2014-06-12 | International Business Machines Corporation | Host ethernet adapter frame forwarding |
US8937949B2 (en) | 2012-12-20 | 2015-01-20 | Oracle International Corporation | Method and system for Infiniband host channel adapter multicast packet replication mechanism |
US9191452B2 (en) | 2012-12-20 | 2015-11-17 | Oracle International Corporation | Method and system for an on-chip completion cache for optimized completion building |
US9069485B2 (en) | 2012-12-20 | 2015-06-30 | Oracle International Corporation | Doorbell backpressure avoidance mechanism on a host channel adapter |
US9148352B2 (en) | 2012-12-20 | 2015-09-29 | Oracle International Corporation | Method and system for dynamic repurposing of payload storage as a trace buffer |
US9069633B2 (en) | 2012-12-20 | 2015-06-30 | Oracle America, Inc. | Proxy queue pair for offloading |
US9384072B2 (en) | 2012-12-20 | 2016-07-05 | Oracle International Corporation | Distributed queue pair state on a host channel adapter |
US9256555B2 (en) | 2012-12-20 | 2016-02-09 | Oracle International Corporation | Method and system for queue descriptor cache management for a host channel adapter |
US9069705B2 (en) | 2013-02-26 | 2015-06-30 | Oracle International Corporation | CAM bit error recovery |
US9336158B2 (en) | 2013-02-26 | 2016-05-10 | Oracle International Corporation | Method and system for simplified address translation support for static infiniband host channel adaptor structures |
US8850085B2 (en) | 2013-02-26 | 2014-09-30 | Oracle International Corporation | Bandwidth aware request throttling |
US9383939B2 (en) * | 2013-03-15 | 2016-07-05 | International Business Machines Corporation | Migrating and retrieving queued data in byte-addressable storage |
US9792162B2 (en) | 2013-11-13 | 2017-10-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Network system, network node and communication method |
US20150143384A1 (en) * | 2013-11-15 | 2015-05-21 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Network system, network node and communication method |
US9696942B2 (en) | 2014-03-17 | 2017-07-04 | Mellanox Technologies, Ltd. | Accessing remote storage devices using a local bus protocol |
US9727503B2 (en) | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
US9898414B2 (en) | 2014-03-28 | 2018-02-20 | Oracle International Corporation | Memory corruption detection support for distributed shared memory applications |
US10031857B2 (en) | 2014-05-27 | 2018-07-24 | Mellanox Technologies, Ltd. | Address translation services for direct accessing of local memory over a network fabric |
US10120832B2 (en) | 2014-05-27 | 2018-11-06 | Mellanox Technologies, Ltd. | Direct access to local memory in a PCI-E device |
JP6464739B2 (ja) * | 2014-12-26 | 2019-02-06 | 富士通株式会社 | 情報処理システムの制御プログラム,情報処理装置,及び情報処理システム |
US10284383B2 (en) | 2015-08-31 | 2019-05-07 | Mellanox Technologies, Ltd. | Aggregation protocol |
WO2017151138A1 (en) * | 2016-03-03 | 2017-09-08 | Hewlett Packard Enterprise Development Lp | Atomic memory operation |
US10410311B2 (en) * | 2016-03-07 | 2019-09-10 | Intel Corporation | Method and apparatus for efficient submission of workload to a high performance graphics sub-system |
US10521283B2 (en) | 2016-03-07 | 2019-12-31 | Mellanox Technologies, Ltd. | In-node aggregation and disaggregation of MPI alltoall and alltoallv collectives |
US10148581B2 (en) | 2016-05-30 | 2018-12-04 | Mellanox Technologies, Ltd. | End-to-end enhanced reliable datagram transport |
US10198397B2 (en) | 2016-11-18 | 2019-02-05 | Microsoft Technology Licensing, Llc | Flow control in remote direct memory access data communications with mirroring of ring buffers |
US10516710B2 (en) * | 2017-02-12 | 2019-12-24 | Mellanox Technologies, Ltd. | Direct packet placement |
US10210125B2 (en) | 2017-03-16 | 2019-02-19 | Mellanox Technologies, Ltd. | Receive queue with stride-based data scattering |
US10367750B2 (en) | 2017-06-15 | 2019-07-30 | Mellanox Technologies, Ltd. | Transmission and reception of raw video using scalable frame rate |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US11055130B2 (en) | 2019-09-15 | 2021-07-06 | Mellanox Technologies, Ltd. | Task completion system |
US11822973B2 (en) | 2019-09-16 | 2023-11-21 | Mellanox Technologies, Ltd. | Operation fencing system |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
US11940933B2 (en) | 2021-03-02 | 2024-03-26 | Mellanox Technologies, Ltd. | Cross address-space bridging |
US11934658B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Enhanced storage protocol emulation in a peripheral device |
US11726666B2 (en) | 2021-07-11 | 2023-08-15 | Mellanox Technologies, Ltd. | Network adapter with efficient storage-protocol emulation |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
US12117948B2 (en) | 2022-10-31 | 2024-10-15 | Mellanox Technologies, Ltd. | Data processing unit with transparent root complex |
US12007921B2 (en) | 2022-11-02 | 2024-06-11 | Mellanox Technologies, Ltd. | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) |
CN118427151B (zh) * | 2024-07-05 | 2024-09-20 | 浪潮(北京)电子信息产业有限公司 | 一种数据传输方法、装置、设备、介质和产品 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2736092B2 (ja) * | 1989-01-10 | 1998-04-02 | 株式会社東芝 | バッファ装置 |
EP0403229A1 (en) * | 1989-06-13 | 1990-12-19 | Digital Equipment Corporation | Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors |
US6128303A (en) * | 1996-05-09 | 2000-10-03 | Maker Communications, Inc. | Asynchronous transfer mode cell processing system with scoreboard scheduling |
US6094712A (en) * | 1996-12-04 | 2000-07-25 | Giganet, Inc. | Computer network interface for direct mapping of data transferred between applications on different host computers from virtual addresses to physical memory addresses application data |
US5920703A (en) * | 1997-02-19 | 1999-07-06 | International Business Machines Corp. | Systems and methods for managing the processing of relatively large data objects in a communications stack |
US6339427B1 (en) * | 1998-12-15 | 2002-01-15 | Ati International Srl | Graphics display list handler and method |
US6526422B1 (en) * | 2000-05-15 | 2003-02-25 | Sun Microsystems, Inc. | Striding-type generation scanning for parallel garbage collection |
US6694361B1 (en) * | 2000-06-30 | 2004-02-17 | Intel Corporation | Assigning multiple LIDs to ports in a cluster |
US6594712B1 (en) * | 2000-10-20 | 2003-07-15 | Banderacom, Inc. | Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link |
US6704831B1 (en) * | 2000-11-16 | 2004-03-09 | Sun Microsystems, Inc. | Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol |
-
2001
- 2001-09-24 US US09/961,922 patent/US6789143B2/en not_active Expired - Fee Related
-
2002
- 2002-09-19 TW TW091121512A patent/TW583544B/zh not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI743736B (zh) * | 2020-04-08 | 2021-10-21 | 瑞昱半導體股份有限公司 | 資料傳輸系統、電路與方法 |
Also Published As
Publication number | Publication date |
---|---|
US20030061417A1 (en) | 2003-03-27 |
US6789143B2 (en) | 2004-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW583544B (en) | Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries | |
US6725296B2 (en) | Apparatus and method for managing work and completion queues using head and tail pointers | |
US7283473B2 (en) | Apparatus, system and method for providing multiple logical channel adapters within a single physical channel adapter in a system area network | |
US6748559B1 (en) | Method and system for reliably defining and determining timeout values in unreliable datagrams | |
US7095750B2 (en) | Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts | |
US6978300B1 (en) | Method and apparatus to perform fabric management | |
US6829685B2 (en) | Open format storage subsystem apparatus and method | |
US7555002B2 (en) | Infiniband general services queue pair virtualization for multiple logical ports on a single physical port | |
US7165110B2 (en) | System and method for simultaneously establishing multiple connections | |
US6718392B1 (en) | Queue pair partitioning in distributed computer system | |
US20030061296A1 (en) | Memory semantic storage I/O | |
US6834332B2 (en) | Apparatus and method for swapping-out real memory by inhibiting i/o operations to a memory region and setting a quiescent indicator, responsive to determining the current number of outstanding operations | |
US6578122B2 (en) | Using an access key to protect and point to regions in windows for infiniband | |
JP4457185B2 (ja) | シリコンベースのストレージ仮想化サーバ | |
US7493409B2 (en) | Apparatus, system and method for implementing a generalized queue pair in a system area network | |
US6938138B2 (en) | Method and apparatus for managing access to memory | |
US7103626B1 (en) | Partitioning in distributed computer system | |
US7092401B2 (en) | Apparatus and method for managing work and completion queues using head and tail pointers with end-to-end context error cache for reliable datagram | |
TW583543B (en) | Infiniband work and completion queue management via head only circular buffers | |
US20050018669A1 (en) | Infiniband subnet management queue pair emulation for multiple logical ports on a single physical port | |
US20050071472A1 (en) | Method and system for hardware enforcement of logical partitioning of a channel adapter's resources in a system area network | |
US20080168471A1 (en) | System and Method for Collective Send Operations on a System Area Network | |
US20120265840A1 (en) | Providing a Memory Region or Memory Window Access Notification on a System Area Network | |
US20030050990A1 (en) | PCI migration semantic storage I/O | |
US20130191547A1 (en) | Processing STREAMS Messages Over a System Area Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |