JP2016503933A - スケジューリングシステム、パケット処理をスケジューリングする方法及びモジュール - Google Patents

スケジューリングシステム、パケット処理をスケジューリングする方法及びモジュール Download PDF

Info

Publication number
JP2016503933A
JP2016503933A JP2015553711A JP2015553711A JP2016503933A JP 2016503933 A JP2016503933 A JP 2016503933A JP 2015553711 A JP2015553711 A JP 2015553711A JP 2015553711 A JP2015553711 A JP 2015553711A JP 2016503933 A JP2016503933 A JP 2016503933A
Authority
JP
Japan
Prior art keywords
scheduling
memory
packet
circuit
network
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2015553711A
Other languages
English (en)
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 JP2016503933A publication Critical patent/JP2016503933A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/285Halt processor DMA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/193Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • 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/624Altering the ordering of packets in an individual queue
    • 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/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • 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
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2592Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/686Types of network addresses using dual-stack hosts, e.g. in Internet protocol version 4 [IPv4]/Internet protocol version 6 [IPv6] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/40Constructional details, e.g. power supply, mechanical construction or backplane
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

パケット処理システムのためのスケジューリングシステムは、メモリバスに接続され、ネットワークパケットを分類し、分類したネットワークパケットを第1の複数の入出力キューに入れる分類回路と、分類回路から第1の複数の入出力キューを介して受信したネットワークパケットを並べ替え、並べ替えたネットワークパケットを第2の複数の入出力キューに入れるスケジューリング回路と、スケジューリング回路から第2の複数の入出力キューを介して受信したネットワークパケットを複数の出力ポートに方向付ける調停回路と、複数の出力ポートの少なくとも1つに接続され、それぞれネットワークパケットを変更するように構成された複数のオフロードプロセッサとを備える。【選択図】 図1

Description

本発明は、メモリバス接続モジュールによってオフロードプロセッサに提供できるコンピュータシステムのためのスケジューリング及びトラフィック管理サービスに関する。
ネットワークパケットフロー及びパケット処理の効率的な管理は、ネットワーク接続された演算システムの性能を高めるために重要である。ネットワークパケットフローは、ハードウェア構成、処理フロー及びデータフローに応じて大きく変化することがあり、データ処理の必要性は、時間のスケールで、数秒から数時間の範囲に亘って数桁も変化することがある。データフローを柔軟に処理でき、データフローのパターンを認識又は特徴付けでき、データフローのためのルーティング及び処理判定を改善できるシステムによって、ネットワークサービスを実質的に向上させることができる。これは、パケット交換通信を用いるネットワークコンピュータ環境にとって、特に重要である。例えば、ネットワークセキュリティが要求するパケット検査(packet inspection)のために、データフローの遅延が生じることが多い。このようなパケット検査は、パケットのヘッダ又はパケットのペイロードの何れにおいて指示してもよく、プロセッサコンテンツ照合(processor content matching)、挙動異常検出、「ブラックリスト」又は「ホワイトリスト」比較等を含む。他の高度なパケット処理アプリケーションとしては、暗号化/平文化、サービス品質によって制御されるパケット再構築、センサデータのストリーミング又はビデオ/オーディオ信号処理等が含まれる。複雑なデータフローシステムの一部として到着するパケットの処理をスケジューリングする効率的なメカニズムがなければ、ネットワークシステム応答にユーザが容認できない程の遅延が生じることがある。
複雑なデータフローストリームを処理できるパケット切換構造をサポートする一般的に使用されているトラフィック管理回路は、多くの場合、深さ限定出力キュー(depth-limited output queues)を含み、この深さ限定出力キューへのアクセスは、スケジューリング回路によって調停(arbitrate)される。入力キューは、受信データフローのトラフィック管理を提供するスケジューリング規則を用いて管理される。スケジューラは、データフローの優先順位を割り当て又は特定し、これらのデータフローのそれぞれに、出力ポートを提供することができる。複数のデータフローが同じ出力ポートで競合する場合、各出力ポートへの時分割アクセスを提供してもよく、或いは、出力ポートで競合する複数のデータフローは、出力ポートに供給する前に、調停回路によって調停してもよい。しかしながら、トラフィック管理回路は、通常、ダウンストリームのメモリ又は処理要素によるデータの処理又は管理に関連する情報へのアクセスが制限されており、又はこのようなアクセスを有していない。例えば、受信パケットがバッファ内で動的に再割当され、これらのキュー内でセッションフローの持続性が維持されることを補助できれば、優先順位の割当に基づいて、データフロー性能を向上させることができる。このようなパケット処理優先順位付け又はトラフィック管理(traffic management:TM)のために選択されるスケジューリング規則は、遅延(バッファリング)、トラフィックのバースト(バッファリング及びバースティング)、トラフィックの円滑化(バッファリング及びレート制限フロー)、トラフィックの間引き、(バッファの消費を回避するために削除するデータの選択)、又は遅延ジッタ(異なる量だけ時間的にフローのセルをシフト)によってフロー及びマイクロフローのトラフィックシェイプ(traffic shape)に影響を与える。
パケット処理システムのためのスケジューリングシステムとして適切に機能するシステム、ハードウェア及び方法の実施形態を開示する。システムは、メモリバスに接続され、ネットワークパケットを分類する分類回路を備える。分類回路は、分類したネットワークパケットを第1の複数の入出力キューに入れる。スケジューリング回路は、分類回路から第1の複数の入出力キューを介して受信したネットワークパケットを並べ替え、並べ替えたネットワークパケットを第2の複数の入出力キューに入れることができる。調停回路は、スケジューリング回路から第2の複数の入出力キューを介して受信したネットワークパケットを複数の出力ポートに方向付ける。複数のオフロードプロセッサは、複数の出力ポートの少なくとも1つに接続され、それぞれネットワークパケットを変更するように構成されている。
ある実施形態では、メモリバスは、ダイレクトメモリアクセスをサポートし、複数のオフロードプロセッサは、変更されたパケットをメモリバスに戻すことができる。更に、分類回路は、セッションメタデータに基づいてネットワークパケットを分類するように構成できる。更に他の実施形態では、スケジューリング回路は、複数のオフロードプロセッサのそれぞれの使用可能性に基づいて、ネットワークパケットを方向付け、セッション優先順位に従ってネットワークパケットを並べ替え、複数のオフロードプロセッサの少なくとも1つのためにコンテキスト切換を開始し、定義されたトラフィック管理キューにネットワークパケットを転送し、複数のオフロードプロセッサのそれぞれためのネットワークパケット処理がいつ完了したかを判定し、又は先取りモードで動作してセッション実行を制御するように構成される。
他の実施形態であるパケット処理をスケジューリングする方法は、セッションメタデータに基づいてネットワークパケットを分類し、分類されたネットワークパケットを第1の複数の入出力キューに入れ、定義されたメモリトランスポートプロトコルを有するメモリバスを用いて、ネットワークパケットを分類回路に転送するステップを有する。スケジューリング回路は、第1の複数の入出力キューから受信し、並べ替えられたネットワークパケットを第2の複数の入出力キューに入れることができ、調停回路は、スケジューリング回路から第2の複数の入出力キューを介して受信したネットワークパケットを複数の出力ポートに方向付ける。複数のオフロードプロセッサは、ネットワークパケットを変更し、複数のオフロードプロセッサのそれぞれは、複数の出力ポートの少なくとも1つに接続され、変更されたネットワークパケットをメモリバスに方向付けることができる。
他の実施形態は、ネットワークパケット処理のためのサービスをスケジューリングする、メモリバスに接続されたモジュールを含む。このモジュールは、メモリバス接続と、メモリバス接続から受信したネットワークパケットを並べ替え、並べ替えたネットワークパケットを複数の入出力キューに入れるように構成されたスケジューリング回路とを備える。複数のオフロードプロセッサは、メモリバス接続に接続され、それぞれが、複数の入出力キュー内のネットワークパケットを変更できる。メモリバス接続は、メモリバスソケットと互換性を有していてもよく、ある実施形態では、デュアルインラインメモリモジュール(dual in-line memory module:DIMM)ソケットと互換性を有する。
実施形態に基づくトラフィック管理及びスケジューラシステムを示す図である。 実施形態に基づくスケジューリングプロセスを示す図である。 実施形態に基づく複数のスケジューリング回路及び調停サーキットをサポートするモジュールを示す図である。 様々な実施形態に基づくプロセッサモジュールを示す図である。 様々な実施形態に基づくプロセッサモジュールを示す図である。 様々な実施形態に基づくプロセッサモジュールを示す図である。 様々な実施形態に基づくプロセッサモジュールを示す図である。 従来のデュアルインラインメモリモジュールを示す図である。 他の実施形態に基づくシステムを示す図である。 本発明の実施形態に含むことができるメモリバスに接続されるオフロードプロセッサの特定の一具体例を示す図である。 本発明の実施形態に基づくスケジューリングプロセスの例示的なフローチャートである。
以下、複数の図面を参照して本発明の様々な実施形態について説明する。これらの実施形態は、パケット処理システムにおけるパケットフローのスケジューリングのための処理システム及び方法を示す。このようなスケジューリングは、システムのメモリバスに接続されるオフロードモジュールによって、又はこれを用いて実行することができる。このようなオフロードプロセッサは、システムメモリバスに接続される如何なるホストプロセッサに追加することもでき、幾つかの実施形態では、プロセスパケットは、ホストプロセッサから独立して、システムメモリバスを介して転送される。特定の実施形態では、処理モジュールは、インラインメモリモジュール(例えば、DIMM)をシステムメモリバスに接続するための物理スロットに挿入することができる。
図1は、スケジューリング及びトラフィック管理サービスを提供するシステム100を示している。システム100は、スイッチ106と、ホストプロセッサセクション108/110と、メモリコントローラ112とオフロード処理セクション114/116/118とを備えることができる。ここに示す特定の実施形態では、ホストプロセッサセクションは、スイッチ106と、スイッチング機構108と、ホストプロセッサ110と、メモリコントローラ112に接続されたバス相互接続109とを含むことができる。更に、オフロード処理セクションは、メモリコントローラ112と通信でき、スイッチ114と、スケジューラ116と、オフロードプロセッサ118とを含むことができる。
実際の動作では、スイッチ106は、データソース102からデータパケット104を受信し及び/又は送信することができる。データソース102は、適切な如何なるパケットデータのソースであってもよく、インターネット、ネットワーククラウド、データセンタ間又はデータセンタ内ネットワーク、クラスタコンピュータ、ラックシステム、複数又は個別のサーバ又はパーソナルコンピュータ等であってもよい。データは、パケット形式であっても、スイッチベースであってもよいが、特定の実施形態では、処理を容易にするため、非パケットデータをパケットに変換又はカプセル化する。データパケットは、通常、ある特性を有し、トランスポートプロトコル番号、ソース及び宛先ポート番号、又はソース及び宛先インターネットプロトコル(Internet Protocol:IP)アドレスを含む。データパケットは、更に、パケット分類及び管理の補助となる関連するメタデータを有することができる。
スイッチ106は、仮想スイッチ(入出力デバイス)であってもよい。スイッチ106は、以下に限定されるわけではないが、周辺機器コンポーネント相互接続(peripheral component interconnect:PCI)規格と互換性を有するデバイス及び/又はPCI又はPCIeバス107を介してホストマザーボードに接続するPCIエキスプレス(PCI express:PCIe)デバイスであってもよい。更に、スイッチ106は、ネットワークインタフェースコントローラ(network interface controller:NIC)、ホストバスアダプタ、集中型ネットワークアダプタ、切換型又は非同期伝送モード(asynchronous transfer mode:ATM)ネットワークインタフェース等を含むことができる。幾つかの実施形態では、スイッチ106は、シングルルート入出力仮想化(single root I/O virtualization:SR−IOV)インタフェース等の入出力仮想化スキームを採用して、単一のネットワーク入出力デバイスを複数のデバイスと同様に扱うことができる。SR−IOVは、物理的制御及び仮想機能の両方を提供することによって、様々なPCIeハードウェア機能間のリソースへの個別のアクセスを実現する。一実施形態では、スイッチ106は、OpenFlowあるいは同等のソフトウェアによって定義されたネットワーキングをサポートし、コントロールプレーンを抽象化することができる。第1の仮想スイッチのコントロールプレーンは、ルート判定、ターゲットノード識別等の機能を実行する。
スイッチ106は、ネットワークパケットを検査し、コントロールプレーンを用いて、ネットワークパケットのために適切な出力ポートを作成する能力を有することができる。スイッチ106のフォワーディングプレーンは、ネットワークパケットに関連するネットワークパケット又はデータフローのためのルート計算に基づいて、パケットを出力インタフェースに転送することができる。スイッチのアウトプットインタフェースを入出力バスに接続してもよく、一実施形態では、スイッチ106は、メモリ読出又は書込動作(ダイレクトメモリアクセス動作)のために、ネットワークパケットを直接的に(又は入出力機構108を介して間接的に)メモリバス相互接続109に転送する能力を有することができる。あるアプリケーションでは、機能上、コントロールプレーン機能に基づいて、ネットワークパケットを特定のメモリ位置へのトランスポートに割り当てることができる。
入出力機構108及びメモリバス相互接続109に接続されたスイッチ106は、更に、ホストプロセッサ110にも接続できる。ホストプロセッサ110は、演算サービスを提供することができるプロビジョニングエージェント(provisioning agent)111を含む1つ以上のホストプロセッサを含むことができる。プロビジョニングエージェント111は、オペレーティングシステム又はホストプロセッサ110上で実行されるユーザコードの一部であってもよい。プロビジョニングエージェント111は、通常、システム100によって提供される仮想機能ドライバを初期化し、これとインタラクトする。仮想機能ドライバは、ダイレクトメモリアドレッシング(direct memory addressing:DMA)が必要である場合にメモリスペースの仮想アドレスを提供する役割を有する。各デバイスドライバは、物理アドレスにマッピングされる仮想アドレスに割り当てることができる。デバイスモデルを用いて、物理デバイスのエミュレーションを行い、作成することができる複数の仮想機能(virtual function:VF)のそれぞれをホストプロセッサ110が認識できるようにすることができる。デバイスモデルを複数回複製して、VFドライバ(仮想入出力デバイスとインタラクトするドライバ)が物理デバイスとインタラクトしているように錯覚させることもできる。例えば、任意のデバイスモデルを用いてVFドライバが接続できるネットワークアダプタをエミュレートしてもよい。デバイスモデル及びVFドライバは、特権モード(privileged mode)又は非特権モード(non-privileged mode)の何れで動作してもよい。どのデバイスがデバイスモデル及びVFドライバに対応するコードをホストし/実行するかについては、制約はない。但し、コードは、入出力インタフェースの複数のコピーを作成するために、デバイスモデル及びVFドライバの複数のコピーを作成する能力を有することができる。また、幾つかの実施形態では、オペレーティングシステムは、VFドライバによってサポートされるアプリケーションのために、定義された物理アドレス領域を作成することができる。更に、ホストオペレーティングシステムは、アプリケーション又はプロビジョニングエージェントに仮想メモリアドレス領域を割り当てることができる。プロビジョニングエージェント111は、ホストオペレーティングシステムを仲介して、仮想アドレスと使用可能な物理アドレス領域のサブセットとの間のマッピングを作成する。プロビジョニングエージェント111は、各VFドライバを作成して、これらを定義された仮想アドレス領域に割り当てる役割を有することができる。
このようなメモリマッピングの動作によって、スイッチ106からオフロードプロセッサセクション114/116/118にデータ(例えば、パケットデータ)を送ることができる。また、第2のスイッチ114は、メモリバス109によってメモリコントローラ112に接続できる。第2のスイッチ114は、仮想スイッチであってもよく、メモリバス109からのトラフィックを受信し、オフロードプロセッサ118への、及びオフロードプロセッサ118からのトラフィックに切換えることができる。ここで、トラフィックとは、以下に限定されるわけではないが、プロビジョニングエージェント111によって作成され及び割り当てられた仮想デバイスへのデータフローを含んでいてもよく、このデータフローの処理は、オフロードプロセッサ118によってサポートされる。第2のスイッチ114のフォワーディングプレーンは、メモリバス109からオフロードプロセッサ118への又はオフロードプロセッサ118からメモリバス109に戻るパケットを伝送することができる。あるアプリケーションでは、ここに開示するシステムアーキテクチャは、ホストプロセッサ110への割込をゼロ又は最小限にして、オフロードプロセッサ118にネットワークパケットを直接的に通信することができる。第2のスイッチ114は、パケットを受信し、定義された調停及びスケジューリングスキームに基づいて、これらを分類した後に、異なるハードウェアスケジューラに配信する能力を有していてもよい。ハードウェアスケジューラ116は、パケットを受信し、オフロードプロセッサ118によって実行される1つ以上の個別のセッションで処理されるようにスケジューリングされたフローセッションに割り当てることができる。
特定の実施形態では、スケジューラ116を用いて、受信パケットのトラフィック管理を実現することができる。あるソースからのパケット、あるトラフィッククラスに関連するパケット、特定のアプリケーションに関するパケット又はあるソケットに送られるパケットは、セッションフローの一部と呼ばれ、セッションメタデータを用いて分類される。セッションメタデータは、多くの場合、パケットの優先順位を判定する基準としても機能し、したがって、受信パケットは、それらのセッションメタデータに基づいて並べ替えられる。このパケットの並べ替えは、1つ以上のバッファ内で行うことができ、これらのフローのトラフィックシェイプを変更できる。セッションメタデータに基づいて並べ替えられたセッションのパケットは、調停回路(図示せず)を用いて調停された特定のトラフィック管理キューを介して出力ポートに送ることができる。調停回路は、これらのパケットフローをダウンストリームのパケット処理/終端リソースに直接的に供給することができる。ある実施形態では、スレッド及びキュー管理を統合し、このスレッドによって、ネットワークデータのダウンストリームのリソース処理終端のスループットを向上させる。
ここに説明したシステム実施形態では、従来の複数のタイプの入出力バス、例えば、PCI、ファイバチャネルを用いることができる。また、バスアーキテクチャは、関連するJEDECスタンダード、DIMMデータ転送プロトコル、ハイパートランスポート(Hypertransport)又は他の適切なあらゆる高速、低遅延相互接続システムに基づいて構成することができる。オフロードプロセッサ118は、ダブルデータレート(double data rate:DDR)ダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)、遅延減少DRAM(reduced latency DRAM:RLDRAM(登録商標))、埋込型DRAM、次世代スタックドメモリ、例えば、ハイブリッドメモリキューブ(Hybrid Memory Cube:HMC(登録商標))、フラッシュ又は他の適切なメモリ、個別のロジック又はバス管理チップ、プログラマブルユニット、例えば、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)、カスタム設計された特定用途向け集積回路(application specific integrated circuit:ASIC)、及び省エネルギ汎用プロセッサ、例えば、ARM(登録商標)、ARC(登録商標)、Tensilica(登録商標)、MIPS(登録商標)、Strong/ARM(登録商標)又はRISCアーキテクチャに基づくプロセッサを含んでいてもよい。ホストプロセッサ110は、インテル(登録商標)又はAMDx86アーキテクチャ(登録商標)、インテルItaniumアーキテクチャ(登録商標)、MIPSアーキテクチャ、SPARC(登録商標)アーキテクチャ等に基づくプロセッサを含む汎用プロセッサを含むことができる。
図2は、図1に示す実施形態に関連する動作に適切な、ハードウェアによってスケジューリングされるデータフロー方法140の一実施形態を示している。フローチャート140に示すように、ハードウェアスケジューラは、セッションに基づいてパケットを区分することによって、トラフィックを管理できる(ステップ141)。幾つかの実施形態では、セッションは、パケットのメタデータによって特定される。セッションは、優先順位付けし、キューに入れることができ(ステップ142)、1つ以上のオフロードプロセッサで動作する汎用オペレーティングシステム(OS)を用いて、現在のセッションの実行を制御することができる(ステップ143)。ハードウェアスケジューラは、セッションの数、セッションの状態、処理リソース又は将来のスケジューリング要求に関連するOSからのフィードバック等のOSの現在の状態を用いて、メモリリソースについて競合するプロセス間でスケジューリングの判定又は調停を行うことができる(ステップ144)。ある条件が満たされると、ハードウェアスケジューラは、コンテキスト切換を開始でき、ここで、現在のセッションの状態がメモリに保存され、新たなセッションが開始され、又は元のセッションに戻る(ステップ145)。
図3は、ハードウェアスケジューラ150(すなわち、スケジューリング回路)の一実施形態を示している。ハードウェアスケジューラ150は、入力ポート152/152’と、分類回路154と、(156として示す)入力キューと、スケジューリング回路158/158’と、(160として示す)出力キューと、調停回路162と、出力ポート164/164’とを備えることができる。ハードウェアスケジューラには、共通のパケット状態レジスタ166/166’と、パケットバッファ168/168’と、1つ以上のキャッシュメモリポート170(特定の実施形態では、アクセラレータコヒーレントポート(accelerator coherency port:ACP)であってもよい。)と、低遅延メモリ172とを接続してもよい。なお、図3は、2つの入力ポート152/152’及び2つの出力ポート164/164’を有するアーキテクチャを示しているが、他の実施形態では、入力ポート及び出力ポートの数は、1つでもよく、3つ以上でもよい。
ハードウェアスケジューラ150は、このようなハードウェアスケジューラの幾つかに接続された調停回路(図示せず)からパケットを受信することができる。ハードウェアスケジューラ150は、1つ以上の入力ポート152/152’において、このようなデータを受信できる。ハードウェアスケジューラ150は、分類回路154を使用でき、分類回路154は、受信パケットを検査し、パケット内のメタデータに基づいてパケットを異なる受信キューに分類する。分類回路154は、異なるパケットヘッダを検査し、インターバル整合回路を用いて、受信パケットを区分することができる。適切なインターバル整合回路の具体例は、2007年8月4日に発行されたDalalによる米国特許7,760,715号(以下に、715特許と呼ぶ。)に開示されている。なお、他の適切な如何なる分類スキームを用いて分類回路を実現してもよい。
ハードウェアスケジューラ150は、オフロードプロセッサ(図示せず)と通信するために、パケット状態レジスタ166/166’に接続できる。パケット状態レジスタ166/166’は、ハードウェアスケジューラ150及びオフロードプロセッサで実行されるOSの両方によって操作することができる。また、ハードウェアスケジューラ150は、パケットバッファ168/168’に接続して、セッションの送信パケットを保存してもよく、これをオフロードプロセッサOSに供給しまたは、オフロードプロセッサOSで処理してもよい。パケット状態レジスタ及びパケットバッファの詳細な説明は、後述する実施形態の説明に含まれている。
ハードウェアスケジューラ150は、キャッシュメモリポート170を用いて、オフロードプロセッサのキャッシュにおいて、現在、オフロードプロセッサOS上で実行されているセッションに関連するデータにアクセスし、コンテキスト切換の間にバルク転送を用いてそのデータを異なるセッションに転送することができる。ハードウェアスケジューラ150は、キャッシュ転送を用いて、セッションに関連するオーバーヘッドを減少させることができる。また、ハードウェアスケジューラ150は、キャッシュからのセッション関連情報を低遅延メモリ172に保存し、後にアクセスすることができる。
上述のように、ハードウェアスケジューラ150は、1つ以上の入力ポート152/152’を有することができる。ハードウェアスケジューラに供給されるデータは、オフロードプロセッサにおいて終端(terminated)されるパケットデータであってもよく、又は処理、変更又は切換えられるパケットデータであってもよい。ハードウェアスケジューラ150は、パケットデータの検査に基づいて、受信パケットを対応するアプリケーションセッションに区分する役割を有していてもよい。ハードウェアスケジューラ150は、パケットを検査し、関連するパケットの特徴を特定する能力を有することができる。
ハードウェアスケジューラ150は、ネットワークスタックの一部をオフロードし、このようなネットワークスタック処理によって生じるオーバーヘッドからオフロードプロセッサを解放してもよい。ハードウェアスケジューラ150は、TCP/トランスポートオフロード、暗号化/平文化オフロード、セグメント化及び再構築等の何れかを実行してもよく、これにより、オフロードプロセッサは、ネットワークパケットのペイロードを直接的に使用することができる。
幾つかの実施形態では、ハードウェアスケジューラ150は、更に、セッションに属するパケットを特定のトラフィック管理キュー(例えば、156)に転送し、スケジューリングし、出力キュー(例えば、160)に転送する能力を有することができる。ハードウェアスケジューラ150を用いて、これらの持続的なセッションの汎用OSへのスケジューリングを制御することができる。パイプライン内の各ステージにおいて最適化を行うハードウェアスケジューラ150によって、汎用OSを含むステージのパイプラインに亘るセッションの持続性を向上させることができる(更に詳細に以下で、説明する)。例えば、ハードウェアスケジューラ150は、ダウンストリーム実行リソースのアカウントを考慮に入れる。これらのキューのそれぞれに入れられたセッションフローは、出力ポートを介して、ダウンストリームのネットワーク要素に送信される。このようなスケジューリングの1つの特定の具体例は、715特許に開示されており、この文献の全体は、引用によって本願に援用される。
また、図3に示すように、ハードウェアスケジューラ150は、調停回路162を使用して、有効な出力ポートへの複数の管理出力キューのアクセスを調停又は制御する。各出力ポートは、パケットバッファ168/168’を介して、オフロードプロセッサコアの1つに接続してもよい。パケットバッファ168/168’は、更に、ヘッダプール(header pool)及びパケットボディプール(packet body pool)を含んでいてもよい。ヘッダプールには、オフロードプロセッサによって処理されるパケットのヘッダのみを格納することができる。また、処理すべきパケットのサイズが十分小さい場合、ヘッダプールには、パケットの全体を格納してもよい。パケットは、オフロードプロセッサで実行される処理の性質に応じて、ヘッダプールまたはパケットボディプールに転送することができる。パケットの処理、オーバレイ、解析、フィルタリング、及び同様な他のアプリケーションでは、パケットヘッダのみをオフロードプロセッサに転送することが適切な場合がある。これらの場合、パケットヘッダの処理によって、パケットボディをパケットヘッダに結合して、出力インタフェースから転送してもよく、パケットボディを削除してもよい。パケットの終端を必要とするアプリケーションでは、パケットボディ全体を転送してもよい。オフロードプロセッサコアは、パケットを受信し、これらに対して適切なアプリケーションセッションを実行して、パケットコンテンツを実行してもよい。
ハードウェアスケジューラ150は、ダウンストリームプロセッサ上の異なるセッションをスケジューリングすることができ、ハードウェアスケジューラ150及びダウンストリームプロセッサは、協働して、コンテキスト切換の間のオーバーヘッドを減少させる。ハードウェアスケジューラ150は、ラインレート速度で送信キュー間又はセッションフロー間の調停を行うだけではなく、終端されたセッション間の調停を非常に高速で行う。ハードウェアスケジューラ150は、オフロードプロセッサ上のセッションのキューを管理できる。スケジューリング回路158/158’は、OSへの各セッションフローを、異なるOS処理エンティティとして、キューに入れる役割を有することができる。スケジューリング回路158/158’は、OSにおいて新しいアプリケーションセッションを実行ささせる役割を有することができる。スケジューリング回路158/158’は、OSに対し、スケジューリング回路158/158’が行うトラフィック管理に基づいて、新たなセッションのためのパケットが使用可能であることを通知することができる。
ハードウェアスケジューラ150には、オフロードプロセッサ上のリソースの実行状態、実行リソース上で動作している現在のセッション、割り当てられたメモリスペース、及びプロセッサキャッシュ内のセッションコンテキストの位置を知らせることができる。ハードウェアスケジューラ150は、実行リソースの状態に基づいて、トラフィック管理及び調停判定を行うことができる。ハードウェアスケジューラ150は、オペレーティングシステム上のスレッド管理を受信パケットのトラフィック管理に統合することができる。ハードウェアスケジューラ150は、トラフィック管理キュー及びオフロードプロセッサ上の処理エンティティを含むコンポーネントの範囲に亘ってセッションフローの持続性を維持することができる。ダウンストリーム(例えば、オフロード)プロセッサ上で動作するOSは、プロセッササイクル及びメモリ等の実行リソースを現在処理中の特定のキューに割り当てることができる。OSは、更に、特定のキューにスレッド又はスレッドのグループを割り当てることができ、これにより、汎用の処理要素によってこれらを独立したエンティティとして取り扱うことができる。汎用(general purpose:GP)処理リソース上で複数のセッションを動作させ、それぞれがハードウェアスケジューラ上のキュー内にある特定のセッションフローからのデータを処理することによって、スケジューラ116及びGP処理リソースを緊密に統合できる。これによって、トラフィック管理、スケジューリング回路及び汎用処理リソースに亘って、セッション情報内に持続的な要素を導入できる。更に、オフロードOSは、リソース間のコンテキスト切換に関連するペナルティ及びオーバーヘッドを低減するように変更できる。ハードウェアスケジューラは、これを利用して、キュー間のシームレスな切換を行い、この結果、実行リソースがこれらを異なるセッションとして実行する。
実際に、幾つかの実施形態では、ハードウェアスケジューラを用いて、受信パケットのトラフィック管理を行うことができる。あるソースからのパケット、あるトラフィッククラスに関連するパケット、特定のアプリケーションに関するパケット又はあるソケットに供給されるパケットは、セッションフローの一部と呼ばれ、セッションメタデータを用いて分類できる。セッションメタデータは、多くの場合、パケットの優先順位を定める基準として機能し、受信パケットは、セッションメタデータに基づいて並べ替えられる。このパケットの並べ替えは、1つ以上のバッファで行うことができ、これらのフローのトラフィックシェイプを変更できる。セッションメタデータに基づいて並べ替えられるセッションのパケットは、特定のトラフィック管理キューに送られ、トラフィック管理キューは、調停回路を用いて調停されて、出力ポートに供給される。調停回路(例えば、162)は、これらのパケットフローをダウンストリームのパケット処理/終端リソースに直接的に供給してもよい。一実施形態では、スレッド及びキュー管理を統合し、このスレッドによって、ネットワークデータのダウンストリームリソース処理終端のスループットを向上させる。
したがって、ハードウェアスケジューラは、以下の機能の何れかを実行できる。(a)ハードウェアスケジューラは、受信ネットワークパケット(及びフロー)のトラフィック管理、調停及びスケジューリングを行う役割を有する。(b)ハードウェアスケジューラは、オフロードOSのネットワークスタックの一部をオフロードし、オフロードOSをスタックレベル処理から解放し、リソースがアプリケーションセッションを自由に実行できるようにする役割を有する。(c)ハードウェアスケジューラは、パケットメタデータに基づいてパケットを分類する役割を有し、異なるセッションに分類されたパケットは、アウトプットトラフィックキューに入れられ、オフロードOSに送られる。(d)ハードウェアスケジューラは、オフロードOS上の終端されたセッション間で、オーバーヘッドが最小のコンテキスト切換に協力する役割を有し、ハードウェアスケジューラは、可能な限り最小限のオーバーヘッドでオフロードOS上の複数のセッションが切換えられることを確実にする(オフロードセッション上の複数のセッション間を切換える能力によって、複数のセッションを非常に速い速度で終端し、終端されたセッションのためのパケット処理スピードが提供される)。(e)ハードウェアスケジューラは、OSへの各セッションフローを、異なるOS処理エンティティとして、キューに入れる役割を有する。(f)ハードウェアスケジューラは、OS上の新しいアプリケーションセッションを実行する役割を有し、自らが実行するトラフィック管理に基づいて、新たなセッションのためのパケットが入手可能であることをOSに対して示すことができる。(g)ハードウェアスケジューラには、オフロードプロセッサ上の実行リソースの状態、実行リソース上で行われている現在のセッション及びそのセッションに割り当てられたメモリ領域、プロセッサキャッシュ内のセッションコンテキストの位置が通知される。ハードウェアスケジューラは、実行リソースの状態を用いて、トラフィック管理及び調停判定を行うことができる。ハードウェアスケジューラは、オペレーティングシステム上のスレッド管理を受信パケットのトラフィック管理に統合することができる。ハードウェアスケジューラは、トラフィック管理キュー及びオフロードプロセッサ上の処理エンティティを含むコンポーネントの範囲に亘ってセッションフローの持続性を維持することができる。
後述するように、以上の処理タスクの多くは、複数の処理コア上で動作する複数のスレッド上で実行される。このようにタスクを複数のスレッドコンテキストに並列化することによって、スループットを高めることができる。MIPS等のプロセッサアーキテクチャは、1サイクルあたりのインストラクションの数を多くするために、深いインストラクションパイプラインを含んでいてもよい。更に、マルチスレッドプログラミング環境を実現する能力によって、既存のプロセッサリソースをより効率的に利用することができる。ハードウェア上の並列実行を更に向上させるために、プロセッサアーキテクチャは、複数のプロセッサコアを含んでいてもよい。同じタイプのコアを含むマルチコアアーキテクチャは、均質コア(homogeneous core)アーキテクチャと呼ばれ、スレッド又はプロセスを複数のコアに亘って並列化することによって、より高いインストラクションスループットを提供する。しかしながら、このような均質コアアーキテクチャでは、メモリ等の共用リソースは、少数のプロセッサで消費される。更に他の実施形態では、ラック又は個々のサーバ上に設けられた個々のラックユニット又はブレードに接続された複数のモジュール上に複数のオフロードプロセッサ又はホストプロセッサを設けてもよい。これらは、更にクラスタ及びデータセンタにグループ化でき、これらは、空間的に、同じ建物又は同じ都市内に位置していてもよく、それぞれ異なる国にあってもよい。如何なるグループ化レベルを相互に接続してもよく、及び/又は公共又は個人用のクラウドインターネットに接続してもよい。
メモリ及び入出力アクセスは、大量のプロセッサオーバヘッドを引き起こすことがある。更に、従来の汎用処理ユニットのコンテキスト切換は、演算の負荷が大きい。したがって、プロセッサスループットを向上させるために、ネットワーク接続された複数のアプリケーションを扱うネットワーク接続された演算リソースにおいて、コンテキスト切換オーバーヘッドを低減することが望ましい。従来のサーバ負荷は、多くの場合、例えば、HTML、ビデオ、パケットレベルサービス、セキュリティ及び分析等のライトタッチ処理であっても、複雑なトランスポート、広いメモリ帯域幅、(ランダムにアクセスされ、並列化され、高度に使用可能な)過剰な量のデータ帯域幅を必要とすることがある。更に、アイドルプロセッサが、そのピーク電力消費の50%以上を消費している。
これに対し、本実施形態では、「ライト」タッチ処理負荷に関連する複雑なトランスポート、広いデータ帯域幅、頻繁なランダムアクセスは、複数のオフロードプロセッサコア上で作成されるソケットアブストラクションの背後で取り扱うことができる。同時に、「ヘビー」タッチ高負荷演算は、ホストプロセッサコア(例えば、x86プロセッサコア)上のソケットアブストラクションによって取り扱うことができる。このようなソフトウェアソケットによって、ARMプロセッサコアとx86プロセッサコアとの間でこれらの負荷を自然に区分けすることができる。実施形態に基づく新しいアプリケーションレベルソケットの使用によって、オフロード処理コア及びホスト処理コアに亘ってサーバ負荷を分散させることができる。
図4〜図8は、処理モジュールを用いてスケジューリング及びトラフィック管理サービスを提供するハードウェア実施形態及び方法の側面を示している。特定の実施形態では、このような処理モジュールは、オフロード処理をサポートするためにDIMM搭載可能モジュールを含むことができる。
図4は、一実施形態に基づく処理モジュール200のブロック図である。処理モジュール200は、物理コネクタ202、メモリインタフェース204、調停ロジック206、オフロードプロセッサ208、ローカルメモリ210及び制御ロジック212を含むことができる。コネクタ202は、システムメモリバスへの物理接続を提供できる。これに対し、ホストプロセッサは、メモリコントローラ等を介してシステムメモリバスにアクセスできる。特定の実施形態では、コネクタ202は、コンピュータシステムのデュアルインラインメモリモジュール(dual in-line memory module:DIMM)スロットに互換性を有することができる。したがって、複数のDIMMスロットを含むシステムは、1つ以上の処理モジュール200を備えていてもよく、又は処理モジュール及びDIMMモジュールの組み合わせを備えていてもよい。
メモリインタフェース204は、システムメモリバス上のデータ転送を検出でき、適切な場合、処理モジュール200に書込データを保存し及び/又は処理モジュール200から読出データを読み出すことができる。このようなデータ転送は、特定のネットワーク識別子を有するパケットデータの受信を含むことができる。幾つかの実施形態では、メモリインタフェース204は、スレーブインタフェースであってもよく、この場合、データ転送は、処理モジュール200とは別に設けられているマスタデバイスによって制御される。特定の実施形態では、メモリインタフェース204は、ダイレクトメモリアクセス(direct memory access:DMA)スレーブであってもよく、DMAマスタによって開始されたシステムメモリバスを介するDMA転送を担ってもよい。幾つかの実施形態では、DMAマスタは、ホストプロセッサとは異なるデバイスであってもよい。このような構成では、処理モジュール200は、ホストプロセッサリソースを消費することなく、処理すべきデータを受け取り(例えば、DMA書込)、及び処理されたデータを送り出す(例えば、DMA読出)ことができる。
メモリインタフェース204は、システムメモリバス上のデータ転送を検出でき、適切な場合、処理モジュール200に書込データを保存し及び/又は処理モジュール200から読出データを読み出すことができる。幾つかの実施形態では、メモリインタフェース204は、スレーブインタフェースであってもよく、この場合、データ転送は、処理モジュールとは別に設けられているマスタデバイスによって制御される。
特定の実施形態では、メモリインタフェース204は、ダイレクトメモリアクセス(direct memory access:DMA)スレーブであってもよく、DMAマスタによって開始されたシステムメモリバスを介するDMA転送を担ってもよい。幾つかの実施形態では、DMAマスタは、ホストプロセッサとは異なるデバイスであってもよい。このような構成では、処理モジュール200は、ホストプロセッサリソースを消費することなく、処理すべきデータを受け取り(例えば、DMA書込)、及び処理されたデータを送り出す(例えば、DMA読出)ことができる。
調停ロジック206は、処理モジュール200内でのデータアクセスの競合を調停することができる。幾つかの実施形態では、調停ロジック206は、オフロードプロセッサ208によるアクセスと、処理モジュール200の外部のアクセスとの間で調停を行うことができる。なお、処理モジュール200は、同時に動作する複数の箇所を含むことができる。なお、調停ロジック206によって調停されるアクセスは、処理モジュール200によって占有される物理システムメモリ領域へのアクセス及び他のリソース(例えば、オフロードプロセッサ又はホストプロセッサのキャッシュメモリ)へのアクセスを含むことができる。したがって、調停ロジック206のための調停規則は、アプリケーションに応じて異ならせることができる。幾つかの実施形態では、このような調停規則は、所与の処理モジュール200のために固定されている。このような場合、異なる処理モジュールを切り替えることによって、異なるアプリケーションに対応することができる。また、他の実施形態として、このような調停規則を変更可能にしてもよい。
オフロードプロセッサ208は、システムメモリバスを介して転送されるデータを処理できる1つ以上のプロセッサを含むことができる。幾つかの実施形態では、オフロードプロセッサは、汎用オペレーティングシステム又はサーバアプリケーション、例えば、Apache(特定の一具体例に過ぎない)(登録商標)等を実行し、プロセッサコンテキストを保存し及び読み出すことができる。オフロードプロセッサ208によって実行される演算タスクは、ハードウェアスケジューラによって管理することができる。オフロードプロセッサ208は、処理モジュール200にバッファリングされたデータを処理することができる。これに加えて又はこれに代えて、オフロードプロセッサ208は、システムメモリ領域の他の場所に保存されたデータにアクセスできる。幾つかの実施形態では、オフロードプロセッサ208は、コンテキスト情報を保存するように構成されたキャッシュメモリを含むことができる。オフロードプロセッサ208は、複数のコア又は1つのコアを含むことができる。
処理モジュール200は、ホストプロセッサを有するシステム(図示せず)に含ませてもよい。幾つかの実施形態では、オフロードプロセッサ208は、ホストプロセッサとは異なるタイプのプロセッサであってもよい。特定の実施形態では、オフロードプロセッサ208は、ホストプロセッサに比べて、消費電力が小さく及び/又は演算パワーが低くてもよい。特定の実施形態では、オフロードプロセッサ208は、「非力な(wimpy)」コアプロセッサであってもよく、ホストプロセッサは、「強力な(brawny)」コアプロセッサであってもよい。また、他の実施形態では、オフロードプロセッサ208は、あらゆるホストプロセッサと同等な演算能力を有していてもよい。特定の実施形態では、ホストプロセッサは、x86タイプのプロセッサであってもよく、オフロードプロセッサ208は、ARM(登録商標)、ARC(登録商標)、Tensilica(登録商標)、MIPS(登録商標)、Strong/ARM(登録商標)又はRISCタイププロセッサであってもよく、これらは僅かな具体例に過ぎない。
ローカルメモリ210をオフロードプロセッサ208に接続して、コンテキスト情報を保存できるようにしてもよい。これによって、オフロードプロセッサ208は、現在のコンテキスト情報を保存し、新しい演算タスクへの切換を行った後、コンテキスト情報を読み出して、前のタスクを再開することができる。特定の実施形態では、ローカルメモリ210は、システム内の他のメモリに比べて遅延が小さいメモリであってもよい。幾つかの実施形態では、コンテキスト情報の保存は、オフロードプロセッサ208のキャッシュをコピーすることを含む。
幾つかの実施形態では、同じタイプの複数のオフロードプロセッサ208がローカルメモリ210内の同じ領域にアクセスできる。これによって、1つのオフロードプロセッサによって保存されたコンテキストを、異なるオフロードプロセッサが再開することもできる。
制御ロジック212は、オフロードプロセッサが実行する処理タスクを制御できる。幾つかの実施形態では、制御ロジック212は、データ評価器214、スケジューラ216及び切換コントローラ218を含むものと概念化できるハードウェアスケジューラとみなすことができる。データ評価器214は、システムメモリバスを介して転送される書込データから「メタデータ」を抽出することができる。ここで用いる「メタデータ」という用語は、書込データのブロックの1つ以上の所定の位置に埋込まれ、書込データのブロックの全て又は一部について実行すべき処理を示し、及び/又はデータが属する特定のタスク/プロセス(例えば、分類データ)を示すあらゆる情報を含む。幾つかの実施形態では、メタデータは、書込データのブロックのためのより高レベルの組織化を示すデータであってもよい。特定の実施形態では、メタデータは、1つ以上のネットワークパケットのヘッダ情報であってもよい(ヘッダ情報は、より上位のレイヤのパケット構造内にカプセル化してもよい)。
スケジューラ216(例えば、ハードウェアスケジューラ)は、オフロードプロセッサ208のための演算タスクを順序付けることができる。幾つかの実施形態では、スケジューラ216は、スケジュールを生成でき、スケジュールは、処理すべき書込データが受信される都度、継続的に更新される。特定の実施形態では、スケジューラ216は、オフロードプロセッサ208のコンテキスト切換の能力に基づいて、このようなスケジュールを生成することができる。これによって、モジュール上の演算の優先順位をオンザフライ(on the fly)方式で調整できる。特定の実施形態では、スケジューラ216は、演算タスクに応じて、物理アドレス領域(例えば、ローカルメモリ210内のメモリ位置)の一部をオフロードプロセッサ208に割り当てることができる。そして、オフロードプロセッサ208は、このような異なる領域間の切換を行い、各切換の前にコンテキスト情報を保存し、後に、メモリ領域に戻る際に、コンテキスト情報を復元することができる。
切換コントローラ218は、オフロードプロセッサ208の演算処理を制御できる。特定の実施形態では、切換コントローラ218は、スケジューラ216に基づき、オフロードプロセッサ208にコンテキストを切換えさせることができる。なお、コンテキスト切換動作は、切換コントローラ218からの単一のコマンドに応じて実行される「アトミック(atomic)」な動作であってもよい。これに加えて又はこれに代えて、切換コントローラ218は、現在のコンテキスト情報を保存する、コンテキスト情報を復元する等の命令セットを発行できる。
幾つかの実施形態では、処理モジュール200は、バッファメモリ(図示せず)を含むことができる。バッファメモリは、受信した書込データを処理モジュール上に保存できる。バッファメモリは、完全に異なるメモリデバイスのセット上で実現してもよく、ロジック及び/又はオフロードプロセッサに埋込まれたメモリであってもよい。埋込型のメモリの場合、調停ロジック206は、バッファメモリへのアクセスを調停できる。幾つかの実施形態では、バッファメモリは、システムの物理メモリ領域の一部に対応できる。システムメモリ領域の残りの部分は、同様の他のプロセッサモジュールに対応していてもよく、及び/又は同じシステムメモリバスに接続されたメモリモジュールに対応していてもよい。幾つかの実施形態では、バッファメモリは、ローカルメモリ210とは異なっていてもよい。例えば、バッファメモリのアクセス時間は、ローカルメモリ210より長くてもよい。また、他の実施形態として、バッファメモリ及びローカルメモリを同様のメモリデバイスで実現してもよい。
特定の実施形態では、処理のための書込データは、予想された最大フローレートを有することができる。処理モジュール200は、このようなフローレートで、又はこのようなフローレートより速く、このようなデータを処理するように構成できる。これによって、マスタデバイス(図示せず)は、「プロセス内で」データを上書きしてしまう危険なしで、処理モジュールにデータを書き込むことができる。
処理モジュール200の様々な演算要素は、1つ以上の集積回路デバイス(IC)として実現することができる。なお、図4に示す様々なコンポーネントは、同じ又は異なるICで構成してもよい。例えば、制御ロジック212、メモリインタフェース204及び/又は調停ロジック206を1つ以上のロジックIC上で実現してもよく、オフロードプロセッサ208及びローカルメモリ210は、独立したICであってもよい。ロジックICは、固定ロジック(例えば、特定用途向けIC)であってもよく、プログラマブルロジック(例えば、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA))であってもよく、これらの組合せであってもよい。
以上のハードウェア及びシステムは、従来のコンピュータシステムに比べて、演算性能が向上するという利点を有する。x86プロセッサに基づくシステムを含む従来のシステムは、このような高ボリュームアプリケーションに対応する性能が不十分であることも多い。x86プロセッサは、アイドリング状態であってもかなりの量の電力を消費し、広帯域パケット解析又は他の高ボリューム処理タスクのための略々連続的な動作によって、プロセッサエネルギコストが主要なプライス要素となる。
更に、従来のシステムは、コンテキスト切換のコストが高いという問題を有し、ホストプロセッサが実行する必要がある命令は、1つのスレッドから他のスレッドへの切換えを含み得る。このような切換は、スレッドのためにコンテキストを保存し及び復元する必要が生じる。このようなコンテキストデータがホストキャッシュメモリにある場合、このようなコンテキスト切換は、比較的高速に行うことができる。一方、このようなコンテキストデータがキャッシュメモリにない場合(すなわち、キャッシュミス)、システムメモリからデータを読み込む必要があり、これによって、数サイクル分の遅延が生じることがある。コンテキスト切換の間にキャッシュミスが連続すると、システム性能が低下する場合がある。
図5は、従来の多くのサーバシステムで生じる高ボリューム処理又はコンテキスト切換に関連する問題を低減できる1つの特定の実施形態に基づくプロセッサモジュール200−1を示している。処理モジュール200−1は、プリント回路板(PCB)タイプ基板222に搭載されるIC220−0/1を含むことができる。PCBタイプ基板222は、インラインモジュールコネクタ(in-line module connector)202を含むことができ、インラインモジュールコネクタ202は、特定の実施形態では、DIMM互換コネクタであってもよい。IC220−0は、複数の機能が統合されたシステムオンチップ(system-on-chip:SoC)タイプのデバイスであってもよい。ここに示す特定の実施形態では、IC220−0は、埋込プロセッサ、ロジック及びメモリを含むことができる。このような埋込プロセッサは、上述したオフロードプロセッサ208又はその均等物であってもよい。このようなロジックは、上述した制御ロジック212、メモリインタフェース204及び/又は調停ロジック206又はこれらの均等物であってもよい。このようなメモリは、上述したローカルメモリ210、オフロードプロセッサ208のためのキャッシュメモリ、バッファメモリ又はこれらの均等物であってもよい。ロジックIC220−1は、ロジックIC220−0に含まれていないロジック機能を提供できる。
図6は、他の特定の実施形態に基づく処理モジュール200−2を示している。処理モジュール200−2は、図5と同様のPCBタイプ基板222に搭載されるIC220−2、−3、−4、−5を含むことができる。但し、図5とは異なり、処理モジュール機能は、複数の単目的タイプのICに亘って分散されている。IC220−2は、プロセッサICであってもよく、オフロードプロセッサ208であってもよい。IC220−3は、メモリICであってもよく、ローカルメモリ210、バッファメモリ又はこれらの組合せを含んでいてもよい。IC220−4は、ロジックICであってもよく、制御ロジック212を含んでいてもよく、特定の実施形態では、FPGAであってもよい。IC220−5は、他のロジックICであってもよく、メモリインタフェース204及び調停ロジック206を含んでいてもよく、特定の実施形態では、これも、FPGAであってもよい。
なお、図5、6は、様々な具体例のうちの2つを例示しているに過ぎない。単一SoCタイプICを含む適切な如何なる数のICに亘って、処理モジュールの様々な機能を分散させてもよい。
図7は、特定の実施形態に基づく処理モジュール200−1又は処理モジュール200−2の反対面を示している。処理モジュール200−3は、図5と同様に、PCBタイプ基板222に搭載された、1つを220−6として示す複数のメモリICを含むことができる。なお、ここに示す反対面には、様々な処理及びロジックコンポーネントを搭載できる。メモリIC220−6は、システムの物理メモリ領域の一部を表すように構成してもよい。メモリIC220−6は、他の処理モジュールコンポーネントから独立して、従来の手法でアクセスされるシステムメモリを提供し、他の処理モジュールコンポーネントが処理できる書込データを保存するバッファメモリとして機能し、又はプロセッサコンテキスト情報を保存するローカルメモリとして機能する等の機能の何れか又は全てを実行できる。
図8は、上述した処理モジュール又はその均等物と共にメモリバスに接続される(メモリ機能のみを提供する)従来のDIMMモジュールを示している。
図9は、一実施形態に基づくシステム230を示している。システム230は、(1つを226として示す)複数のインラインモジュールスロットを介してアクセス可能なシステムメモリバス228を含むことができる。実施形態においては、スロット226の一部又は全部には、上述した処理モジュール200又はその均等物を挿入してもよい。一部のスロット226に処理モジュール200を挿入する場合、使用可能なスロットには、従来のインラインメモリモジュール224を挿入してもよい。特定の実施形態では、スロット226は、DIMMスロットであってもよい。
幾つかの実施形態では、処理モジュール200は、1つのスロットに挿入してもよい。また、他の実施形態では、処理モジュールは、複数のスロットを占有してもよい。
更に、幾つかの実施形態では、システムメモリバス228に1つ以上のホストプロセッサ及び/又は入出力デバイス(図示せず)を接続してもよい。
以上、様々な実施形態に基づく処理モジュールについて説明したが、以下では、特定の実施形態に基づく、メモリバスを介してサーバ又は同様のシステムに接続することができるオフロード処理モジュールの動作について説明する。
図10は、他の実施形態に基づくシステム301を示している。システム301は、モジュール上に配置されている(1つを300として示す)1つ以上の演算ユニットに、ネットワークオーバレイサービスを必要とするパケットデータを転送でき、このモジュールは、特定の実施形態では、既存のメモリモジュールと互換性があるコネクタを含むことができる。幾つかの実施形態では、演算ユニット300は、この実施形態に説明する処理モジュール又はその均等物を含むことができる。演算ユニット300は、システムメモリバス316を介して伝送されるパケットを捕捉し又はアクセスすることができ、このようなパケットに対し、以下に限定されるものではないが、終端又はメタデータ処理を含む処理を施すことができる。システムメモリバス316は、上述したシステムメモリバス(例えば、228)又はその均等物であってもよい。
図10に示すように、システム301は、外部ソースからパケット又は他の入出力データを受け取ることができる入出力デバイス302を含むことができる。幾つかの実施形態では、入出力デバイス302は、物理デバイスが生成する物理機能又は仮想機能を含み、ネットワーク、他のコンピュータ又は仮想マシンからパケット又は他の入出力データを受信することができる。ここに示す特定の実施形態では、入出力デバイス302は、入力バッファ302a(例えば、DMAリングバッファ)及び入出力仮想化機能302bを有するネットワークインタフェースカード(network interface card:NIC)を含むことできる。
ある実施形態では、入出力デバイス302は、パケットのために必要なメモリ動作の詳細(すなわち、読出/書込、ソース/宛先)を含むデスクリプタを書くことができる。このようなデスクリプタには、(例えば、システム301のオペレーティングシステムによって)仮想メモリ位置を割り当てることができる。そして、入出力デバイス302は、入出力メモリ管理ユニット(input output memory management unit:IOMMU)304と通信し、IOMMU304は、IOMMU機能304bによって仮想アドレスを対応する物理アドレスに変換することができる。ここに示す特定の実施形態では、このような変換のための変換ルックアサイドバッファ(translation look-aside buffer:TLB)304aを用いることができる。そして、入出力デバイスとシステムメモリ位置との間のデータの読出又は書込の仮想機能は、システム301のメモリコントローラ306bを介して、ダイレクトメモリ転送(例えば、DMA)によって実行できる。入出力デバイス302は、ホストバス312によって、IOMMU304に接続できる。1つの特定の実施形態では、ホストバス312は、周辺機器コンポーネント相互接続(peripheral component interconnect:PCI)タイプのバスであってもよい。IOMMU304は、中央演算処理装置入出力(central processing unit I/O :CPUIO)306aにおいて、ホスト処理セクション306に接続できる。ここに示す実施形態では、このような接続314は、ハイパートランスポート(HyperTransport:HT)プロトコルをサポートできる。
ここに示す実施形態では、ホスト処理セクション306は、CPUIO306a、メモリコントローラ306b、処理コア306c及び対応するプロビジョニングエージェント306dを含むことができる。
特定の実施形態では、演算ユニット300は、標準のインラインモジュール接続を介してシステムバス316に接続でき、このモジュール接続は、特定の実施形態では、DIMMタイプスロットを含むことができる。ここに示す実施形態では、システムメモリバス316は、DDR3タイプメモリバスであってもよい。他の実施形態は、適切な如何なるシステムメモリバスも含んでいてもよい。パケットデータは、メモリコントローラ306bによって、システムメモリバス316を介して、DMAスレーブインタフェース310aに送ることができる。DMAスレーブインタフェース310aは、DMA書込から、システムメモリバス316を介して、カプセル化された読出/書込命令を受信するように構成できる。
ハードウェアスケジューラ(308b/c/d/e/h)は、セッションメタデータを用いてフローに応じて受信パケットを分類することによって受信パケットに対するトラフィック管理を実行できる。パケットは、セッション優先順位に基づいて、オンボードメモリ(310b/308a/308m)の出力のためのキューに入れることができる。オフロードプロセッサ308iが特定のセッションのためのパケットを処理する準備が整ったとハードウェアスケジューラが判断した場合、ハードウェアスケジューラは、そのセッションへのコンテキスト切換をオンボードメモリにシグナリングする。この優先順位付けの手法を用いることによって、従来の手法に比較して、コンテキスト切換オーバーヘッドを低減できる。すなわち、ハードウェアスケジューラは、コンテキスト切換を決定でき、この結果、ダウンストリームリソース(例えば、オフロードプロセッサ308i)の性能を最適化することができる。
上述のように、特定の実施形態では、オフロードプロセッサ308iは、「非力な(wimpy)」コアプロセッサであってもよい。幾つかの実施形態では、ホストプロセッサ306cは、「強力な(brawny)」コアプロセッサ(例えば、x86又「ヘビータッチ(heavy touch)」演算動作を行う能力を有する他のプロセッサ)であってもよい。入出力デバイス302は、受信パケットに応じて、ホストプロセッサ割込をトリガできるように構成できるが、幾つかの実施形態では、このような割込を無効にして、ホストプロセッサ306cの処理のオーバーヘッドを低減することができる。幾つかの特定の実施形態では、オフロードプロセッサ308iは、ARM(登録商標)、ARC(登録商標)、Tensilica(登録商標)、MIPS(登録商標)、Strong/ARM(登録商標)又は「ライトタッチ(light touch)」動作を扱う能力がある他の如何なるプロセッサであってもよく、好ましくは、オフロードプロセッサは、汎用オペレーティングシステムを動作させ、複数のセッションを実行することができ、これらのセッションは、ハードウェアスケジューラによって、コンテキスト切換オーバーヘッドを低減するように最適化されて動作する。
図10に示すように、実際の動作では、システム301は、ネットワークインタフェースを介して外部ネットワークからパケットを受信することができる。パケットは、分類ロジック及び入出力デバイス302が採用するスキームに基づいて、ホストプロセッサ306c又はオフロードプロセッサ308iの何れかに宛てられる。特定の実施形態では、入出力デバイス302は、仮想化されたNICとして動作することができ、特定の論理ネットワークのためのパケット又はある仮想MAC(virtual MAC:VMAC)アドレスへのパケットは、個別のキューに入れられ、宛先論理エンティティに送ることができる。このような構成では、パケットを異なるエンティティに転送することができる。幾つかの実施形態では、このようなエンティティのそれぞれは、仮想ドライバを有することができ、仮想デバイスモデルを用いて、接続された仮想ネットワークと通信することができる。
幾つかの実施形態では、複数のデバイスを用いて、トラフィックを特定のメモリアドレスに向け直す(redirect)ことができる。したがって、ネットワークデバイスのそれぞれは、論理エンティティのメモリ位置にパケットを転送しているかのように動作する。しかしながら、実際には、このようなパケットは、1つ以上のオフロードプロセッサ(例えば、308i)が処理できるメモリアドレスに転送されている。特定の実施形態では、このような転送は、物理メモリアドレスに宛てられ、したがって、処理から論理エンティティを取り除くことができ、ホストプロセッサは、このようなパケット処理から解放される。
したがって、実施形態は、特定のネットワークデータを供給できるメモリ「ブラックボックス(black box)」を提供するものと概念化できる。このようなメモリブラックボックスは、データを取り扱い(例えば、データを処理し)、要求に応じて、このようなデータを返す。
図10に示すように、幾つかの実施形態では、入出力デバイス302は、ネットワーク又は演算デバイスからデータパケットを受け取ることができる。データパケットは、例えば、トランスポートプロトコル番号、ソース及び宛先ポート番号、ソース及び宛先IPアドレス等を含むある特徴を有することができる。データパケットは、更に、メタデータを有することができ、メタデータの処理308dは、パケットの分類及び管理に役立つ。
入出力デバイス302は、以下に限定されるわけではないが、周辺機器コンポーネント相互接続(peripheral component interconnect:PCI)規格と互換性を有するデバイス及び/又はPCI又はPCIeバス(例えば、ホストバス312)を介してホストマザーボードに接続するPCIエキスプレス(PCI express:PCIe)デバイスであってもよい。入出力デバイスの具体例としては、ネットワークインタフェースコントローラ(network interface controller:NIC)、ホストバスアダプタ、集中型ネットワークアダプタ、切換型又は非同期伝送モード(asynchronous transfer mode:ATM)ネットワークインタフェース等を含むことができる。
複数の論理エンティティが同じ入出力デバイス302にアクセスできるアブストラクションスキームを提供するために、入出力デバイスを仮想化して、複数の仮想デバイスを提供し、それぞれの仮想デバイスが物理入出力デバイスの幾つかの機能を実行できるようにしてもよい。実施形態に基づく入出力仮想化プログラム(例えば、302b)は、異なるメモリ位置(したがって、メモリバス上のモジュールに取り付けられた異なるオフロードプロセッサ)にトラフィックを向け直すことができる。これを達成するために、入出力デバイス302(例えば、ネットワークカード)は、入出力仮想化(input/output virtualization:IOV)アーキテクチャ(例えば、シングルルートIOV)をサポートする制御機能(controlling function:CF)及び複数の仮想機能(virtual function:VF)インタフェースを含む幾つかの機能的部分に区切ってもよい。専用使用のためのランタイムの間に各仮想機能インタフェースにリソースを提供できる。CF及びVFの具体例は、シングルルート入出力仮想化又はマルチルート入出力仮想化アーキテクチャ等のスキームに基づく物理機能及び仮想機能を含むことができる。CFは、仮想リソースをセットアップ及び管理する物理リソースとして機能する。また、CFは、完全な入出力デバイスとしても機能できる。VFは、複数の論理エンティティ/複数のメモリ領域と通信するために仮想デバイスのアブストラクションを提供する役割を有している。
ホストプロセッサ306c上で動作しているオペレーティングシステム/ハイパーバイザ/何れかの仮想マシン/ユーザコードをデバイスモデル、VFドライバ及びCFのためのドライバにロードしてもよい。デバイスモデルを用いて、物理デバイスのエミュレーションを作成し、作成された複数のVFのそれぞれをホストプロセッサ306cが認識できるようにしてもよい。デバイスモデルを複数回複製し、VFドライバ(仮想入出力デバイスとインタラクトするドライバ)が特定のタイプの物理デバイスとインタラクトしているように錯覚させてもよい。
例えば、任意のデバイスモジュールを用いてインテル(登録商標)イーサネット(登録商標)集中型ネットワークアダプタ(Converged Network Adapter:CNA)X540−T2等のネットワークアダプタをエミュレートすることによって、入出力デバイス302は、このようなアダプタとインタラクトしていると錯覚する。このような場合、各仮想機能は、上述したCNAの機能をサポートする能力を有していてもよく、すなわち、各物理機能(Physical Function)は、このような機能をサポートできる。デバイスモデル及びVFドライバは、特権モード(privileged mode)又は非特権モード(non-privileged mode)の何れで実行してもよい。幾つかの実施形態では、デバイスモデル及びVFドライバに対応するコードを何がホストし/実行するかに関する制約はない。但し、コードは、入出力インタフェースの複数のコピーを作成できるようにするために、デバイスモデル及びVFドライバの複数のコピーを作成する能力を有する。
アプリケーション/ユーザレベルコードの一部としてカーネル内で動作するアプリケーション又はプロビジョニングエージェント306dは、ランタイムの間に各VFのための仮想入出力アドレス領域を作成し、これに物理アドレス領域の一部を割り当てることができる。例えば、VFドライバを扱うアプリケーションがメモリアドレス0xaaaaからメモリアドレス0xffffにパケットを読み出し又は書き込むことを命令した場合、デバイスドライバは、ヘッド/テールポインタ(head and tail pointer)によってデスクリプタキューに入出力デスクリプタを書き込み、入出力デスクリプタは、キューエントリが追加される都度、動的に変更される。また、データ構造は、他のタイプのものであってもよく、以下に限定されるものではないが、リング構造302a又はハッシュテーブルであってもよい。
VFは、ドライバによって指示されるアドレス位置からデータを読み出し、又はこのアドレス位置にデータを書き込むことができる。更に、ドライバに割り当てられたアドレス領域へのデータ転送が完了すると、通常、ネットワークパケットを扱うホストプロセッサにトリガされる割込を無効化できる。デバイスに特定の入出力空間を割り当てることは、占有される特定の物理メモリ領域を入出力空間に割り当てることを含むことができる。
他の実施例においては、デスクリプタが受信パケットを処理するための特定のデータ構造に関連している場合、デスクリプタは、書込動作のみを含んでいてもよい。更に、受信データ構造内の各エントリのためのデスクリプタを一定にし、全てのデータ書込を特定のメモリ位置に向け直してもよい。他の実施形態では、連続するエントリのためのデスクリプタがメモリ内の連続するエントリを指示するようにし、受信パケットを連続するメモリ位置に方向付けるようにしてもよい。
これに代えて、オペレーティングシステムは、VFドライバをサポートするアプリケーションのための定義された物理アドレス領域を作成し、仮想メモリアドレス領域をアプリケーション又はプロビジョニングエージェント306dに割り当てることによって、各仮想機能のための仮想アドレスと物理アドレス領域との間のマッピングを作成してもよい。この仮想メモリアドレス領域と物理メモリ領域との間のマッピングは、IOMMUテーブル(例えば、TLB304a)内に保存できる。メモリ読出又はメモリ書込を実行するアプリケーションは、仮想機能に仮想アドレスを供給でき、ホストプロセッサOSは、物理メモリ位置の特定の部分をこのようなアプリケーションに割り当てることができる。
これに代えて、VFは、読出又は書込、例えば、ダイレクトメモリアクセス(direct memory access:DMA)読出又は書込動作の一部に関する要求を生成するように構成してもよい。仮想アドレスは、IOMMU304によって対応する物理アドレスに変換され、アクセスのために物理アドレスをメモリコントローラに提供してもよい。すなわち、IOMMU304は、入出力デバイスによって発せられたメモリ要求を修正して、要求内の仮想アドレスを物理アドレスに変更し、メモリアクセスのためのメモリ要求をメモリコントローラに送信してもよい。メモリ要求は、ハイパートランスポート(HyperTransport:HT)314等のプロトコルをサポートするバス314を介して送信してもよい。このような場合、VFは、IOMMU304に仮想メモリアドレスを供給することによってダイレクトメモリアクセスを実行する。
これに代えて、VFが許可する場合、アプリケーションは、物理アドレスをVFデスクリプタに直接的に符号化してもよい。ホストプロセッサ306cが使用する形式の物理アドレスをVFがサポートできない場合、VFデバイスがサポートするハードウェアサイズを有するアパーチャをデスクリプタに符号化して、デバイスのターゲットハードウェアアドレスをVFに通知するようにしてもよい。アパーチャに変換されるデータは、変換テーブルによって、システムメモリ内の定義された物理アドレス領域にマッピングできる。DMA動作は、プロセッサが実行するソフトウェアによって開始してもよく、直接的又は間接的に入出力デバイスをプログラミングして、DMA動作を実行するようにしてもよい。
図10に示すように、特定の実施形態では、演算ユニット300の一部は、1つ以上のFPGAによって実現することができる。図10のシステムにおいては、演算ユニット300は、DMAスレーブデバイスモジュール310a及び調停器(arbiter)310fを構成するFPGA310を含むことができる。DMAスレーブモジュール310aは、DMA読出/書込要求に応答できるメモリバス316への取付に適する如何なるデバイスであってもよい。他の実施形態では、DMAスレーブモジュール310aは、メモリバス316を介するブロックデータ転送を行う能力を有する他のインタフェースであってもよい。DMAスレーブモジュール310aは、(「メモリ」又は周辺機器から読出を実行する際に)DMAコントローラからデータを受信でき、(DMAスレーブモジュール310aの書込命令を実行する際に)DMAコントローラにデータを転送できる。DMAスレーブモジュール310aは、メモリバスを介して、(例えば、パケット又はデータバースト等のDDRデータ送信の形式で)カプセル化された、又は対応するメモリバスを介して送信できる他の何らかのフォーマットのDMA読出及び書込命令を受信するように適応化してもよい。
DMAスレーブモジュール310aは、メモリR/WパケットからDMA読出/書込命令を再構築することができる。DMAスレーブモジュール310aは、DMAマスタに対するデータ読出/データ書込の形式でこれらの命令に応答するように適応化してもよく、DMAマスタは、PCIeバスの場合、周辺デバイス内にあってもよく、ISAバスの場合、システムDMAコントローラ内にあってもよい。
DMAデバイス310aが受信した入出力データは、調停のためにキューに入れることができる。調停は、異なるフローのパケットをスケジューリングし、複数のパラメータに基づいて、使用可能な帯域幅へのアクセスを提供するプロセスを含むことができる。調停器310fは、通常、1つ以上のリクエスタ(requestors)にリソースアクセスを提供する。複数のリクエスタがアクセスを要求する場合、調停器310fは、どのリクエスタがアクセサ(accessor)になるかを判定し、次に、アクセサからリソースインタフェースにデータを渡し、ダウンストリームリソースは、データに対する処理の実行を開始することができる。データをリソースに完全に転送し、リソースが実行を完了した後、調停器310fは、異なるリクエスタに制御を移すことができ、このサイクルは、適用可能な全てのリクエスタについて繰り返される。図10の実施形態では、調停器310fは、演算ユニット300(例えば、308)の他の部分に受信データを通知できる。
これに代えて、演算ユニット300は、2010年10月12日に発行された米国特許7,813,283号に開示されている調停スキーム(arbitration scheme)を使用してもよく、この文献の全体は、引用によって本願に援用される。幾つかの実施形態では、当分野で周知の他の適切な調停スキームを適用してもよい。これに代えて、本発明の調停スキームは、OpenFlowスイッチ及びOpenFlowコントローラを用いて実現してもよい。
図10に示す特定の実施形態では、演算ユニット300は、更に、通知/プリフェッチ回路310cを備えていてもよく、通知/プリフェッチ回路310cは、DMAスレーブモジュール310aに応答して、及び調停器310fの調停に基づき、バッファメモリ310bに保存されているデータをプリフェッチすることができる。更に、調停器310fは、メモリマッピングされた入出力受入経路310e及び送出経路310gを介して、演算ユニット300の他の部分にアクセスできる。
図10に示すように、ハードウェアスケジューラは、受信パケットのトラフィック管理を実現するスケジューリング回路308b/nを含むことできる。あるソースからのパケット、あるトラフィッククラスに関連するパケット、特定のアプリケーションに関するパケット又はあるソケットに供給されるパケットは、セッションフローの一部と呼ばれ、セッションメタデータを用いて分類できる。このような分類は、分類器308eによって行うことができる。
幾つかの実施形態では、セッションメタデータ308dは、パケットの優先順位及びスケジューリングを定める基準として機能し、受信パケットは、それらのセッションメタデータに基づいて並べ替えることができる。このパケットの並べ替えは、1つ以上のバッファで行うことができ、これらのフローのトラフィックシェイプを変更できる。このような優先順位付け又はトラフィック管理(traffic management:TM)のために選択されるスケジューリング規則は、遅延(バッファリング)、トラフィックのバースト(バッファリング及びバースティング)、トラフィックの円滑化(バッファリング及びレート制限フロー)、トラフィックの間引き、(バッファの消費を回避するために削除するデータの選択)、又は遅延ジッタ(異なる量によるフローのセルの時間的シフト)によって、及び接続を認めない(例えば、既存のサービスレベル合意(service level agreement:SLA)と追加的なフローのSLAとを同時に保証しない)ことによってフロー及びマイクロフローのトラフィックシェイプ(traffic shape)に影響を与える。
幾つかの実施形態では、演算ユニット300は、切換構造の一部として機能でき、深さ限定出力キュー(depth-limited output queues)をトラフィック管理に提供し、ここへのアクセスは、スケジューリング回路308b/nによって調停される。このような出力キューは、トラフィック管理を受信フローに提供するスケジューリング規則を用いて管理される。これらのキューのそれぞれに入れられたセッションフローは、ダウンストリームネットワーク要素への出力ポートを介して送り出すことができる。
なお、従来のトラフィック管理は、ダウンストリーム要素と既に合意されているSLAを除いて、ダウンストリーム要素によるデータの取り扱い及び管理を考慮に入れない。
一方、本発明の実施形態では、スケジューラ回路308b/nは、各出力キューに優先順位を割り当て、受信パケットの並べ替えを行い、これらのキュー内のセッションフローの持続性を維持することができる。スケジューラ回路308b/nを用いて、オフロードプロセッサ308i上で実行される汎用オペレーティングシステム(OS)308jへのこれらの持続的なセッションのそれぞれのスケジューリングを制御することができる。上述したように、特定のセッションフローのパケットは、特定のキューに属することができる。スケジューラ回路308b/nは、これらのキューの優先順位を制御でき、これによって、これらのキューは、ダウンストリームに位置する汎用(general purpose:GP)処理リソース(例えば、オフロードプロセッサ308i)によって処理されるように調停される。オフロードプロセッサ308i上で動作するOS308jは、処理中の特定のキューに、実行リソース、例えば、プロセッササイクル及びメモリを割り当てることができる。更に、OS308jは、この特定のキューのためにスレッド又はスレッドのグループを割り当てることができ、これによって、オフロードプロセッサ308iは、これらを独立したエンティティとして取り扱うことができる。GP処理リソース上で複数のセッションが動作でき、スケジューラ回路が設定したキュー内にある特定のセッションフローからのデータをそれぞれが処理することによって、スケジューラ及びダウンストリームリソース(例えば、308i)を緊密に統合することができる。これによって、トラフィック管理/スケジューリング回路及びオフロードプロセッサ308iに亘って、セッション情報が持続的なものとなる。
各セッションのための専用の演算リソース(例えば、308i)、メモリ領域及びセッションコンテキスト情報は、汎用プロセッサ308iにおいて、各セッションフローを取り扱い、処理し及び/又は終端することによって提供することができる。スケジューラ回路308b/nは、この実行リソースの機能を用いて、ダウンストリームのスケジューリングのためにセッションフローをキューに入れることができる。スケジューラ回路308b/nには、実行リソース(例えば、308i)の状態、実行リソース上で行われている現在のセッション、そのセッションに割り当てられたメモリ領域、及びプロセッサキャッシュ内のセッションコンテキストの位置が通知される。
幾つかの実施形態では、スケジューラ回路308b/nは、更に、実行リソースを1つの状態から他の状態に切り換える切換回路を含んでいてもよい。スケジューラ回路308b/nは、このような能力を用いて、ダウンストリーム実行リソースに切換える準備が整ったキューの間を調停する。更に、ダウンストリーム実行リソースは、リソース間のコンテキスト切換に関連するペナルティ及びオーバーヘッドを減少させるように最適化できる。これによって、スケジューラ回路308b/nは、更に、キュー間のシームレスな切換を行い、この結果、実行リソースがこれらを異なるセッションとして実行する。
幾つかの実施形態では、スケジューラ回路308b/nは、ダウンストリームの処理リソース上の異なるセッションをスケジューリングすることができ、これらのセッションは、コンテキスト切換の間のオーバーヘッドを減少させるように調整されて動作する。サービスの遅延を低減し、演算の使用可能性を設計する際には、ハードウェアコンテキスト切換をネットワークのキューに同期させることが重要である。ある実施形態では、トラフィックマネージャがキューを選択する際、パイプラインが対応するリソース(例えば、308i)のキャッシュ(例えば、L2キャッシュ)のスワップインを調整し、及び再構築された入出力データを実行プロセスのメモリ領域に転送する。幾つかの場合、キュー内に係留するパケットがなくても、演算は、前のパケットへのサービスに係留されていることがある。一旦、このプロセスがスワッピングされたデータの外側のメモリ参照を行うと、スケジューラ回路308b/nは、入出力デバイス302からのデータをキューに入れてスレッドのスケジューリングを続けることができる。
幾つかの実施形態では、データを有さないプロセスに公平なキューを提供するため、最大のコンテキストサイズを処理されるデータとして仮定できる。これによって、キューに十分な演算リソース及びネットワーク帯域幅リソースを提供できる。特定の具体例として、演算リソースは、800MHzで動作するARM(登録商標)A9プロセッサであってもよく、ネットワーク帯域幅は、3Gbpsであってもよい。このような非対称な比率のため、幾つかの実施形態が用いる演算では、(ハードウェアによるセッション固有データのプリフェッチングによってホストプロセッサ負荷の大部分がオフロードされるように)多くの並列セッションを行い、及び汎用のデータ処理を最小量にしてもよい。
したがって、幾つかの実施形態では、スケジューラ回路308b/nは、送り出しキューの間をラインレート速度で調停するのではなく、終端されたセッション間を非常に高い速度で調停するものと概念化できる。汎用OSを含む複数のステージのパイプラインに亘るセッションの持続性は、スケジューラ回路がこのようなパイプラインのステージの何れか又は全てを最適化することによって実現できる。
これに代えて、引用によって本願に援用される、2010年7月20日にDalalに発行された米国特許7,760,715号に示すスケジューリングスキームを用いてもよい。このスキームは、フローを多く選択しすぎた場合に生じる他のリソースのダウンストリーム輻輳を防止するため、又は特定のフローのためのサービス契約を強制的に実施するためにフローの速度を制限することが望ましい場合に有用である。幾つかの実施形態は、汎用OS等のダウンストリームのリソースのサービス契約を実現する調停スキームを含むことができ、これは、シームレスに強制することができる。
図10に示すように、この実施形態に基づくハードウェアスケジューラ又はその均等物は、セッションメタデータに基づいて、受信パケットデータをセッションフローに分類することができる。また、ハードウェアスケジューラ又はその均等物は、調停の前に、これらのフローのトラフィック管理を行い、オフロードプロセッサにおける別個の処理エンティティとしてキューに入れることができる。
幾つかの実施形態では、オフロードプロセッサ(例えば、308i)は、異なるアプリケーション又はトランスポートセッションのパケットを処理できる汎用の処理ユニットであってもよい。このようなオフロードプロセッサは、汎用の命令を実行できる低パワープロセッサであってもよい。オフロードプロセッサは、以下に限定されるものではないが、ARM(登録商標)、ARC(登録商標)、Tensilica(登録商標)、MIPS(登録商標)、Strong/ARM(登録商標)、又はここに説明した機能を実現する他の適切な如何なるプロセッサであってもよい。このようなオフロードプロセッサは、オフロードプロセッサ上で動作する汎用OSを有し、汎用OSは、異なるスレッド又はスレッドグループ間のコンテキスト切換に関連するペナルティを減少させるように最適化されている。
一方、ホストプロセッサ上のコンテキスト切換は、レジスタ退避領域を必要とし、キャッシュ内のコンテキストを処理し、及びTLBエントリが無効に又は上書きされた場合、これを復元する必要がある演算負荷が大きいプロセスである場合がある。ホスト処理システム内の命令キャッシュ(Instruction Cache)ミスは、パイプラインストール(pipeline stall)を引き起こすことがあり、データキャッシュミスは、動作の停止を引き起こすことがあり、このようなキャッシュミスは、プロセッサ効率を低下させ、プロセッサオーバヘッドを増加させる。
一方、スケジューラ回路308b/n及びこれに関連してオフロードプロセッサ308i上で動作するOS308jは、協働して、OS308j上で動作する異なる処理エンティティ間のコンテキスト切換オーバーヘッドを減少させる。実施形態は、スケジューラ回路とオフロードプロセッサ308i上のOSとを協働させるメカニズムを含むことができ、ここで、OSは、キャッシュ内に物理的に連続するセッションコンテキストをセットアップし(セッションヒープ(heap)及びスタックのための物理的にカラーリングされたアロケータ(physically colored allocator))、そして、セッション初期化の際に、セッションのカラー、サイズ及び開始物理アドレスをスケジューラ回路に通信する。実際のコンテキスト切換の間、スケジューラ回路は、これらのパラメータを用いてキャッシュ内でセッションコンテキストを特定でき、外部の低遅延メモリ(例えば、308g)へのこれらのコンテンツのバルク転送を開始する。更に、スケジューラ回路は、コンテキストがローカルメモリ308gに保存されると、以前のセッションのプリフェッチを管理できる。特定の実施形態では、ローカルメモリ308gは、低遅延動的ランダムアクセスメモリ(reduced latency dynamic random access memory:RLDRAM(登録商標))等の低遅延メモリであってもよい。したがって、幾つかの実施形態では、キャッシュ内でセッションコンテキストを一意的に特定できる。
幾つかの実施形態では、高速切換速度を確実にするためにコンテキストサイズを制限してもよい。これに加えて又はこれに代えて、実施形態は、セッションコンテキストをローカルメモリ308gに転送するバルク転送メカニズムを含んでいてもよい。そして、前のセッションに戻るコンテキスト切換の間、ここに保存されているキャッシュコンテンツを読み出し及びプリフェッチすることができる。高速検索のために、ローカルメモリ308g内で異なるコンテキストセッションデータにタグ及び/又は識別情報を付与してもよい。上述のように、1つのオフロードプロセッサによって保存されたコンテキストを、異なるオフロードプロセッサが呼び出すこともできる。
図10の特定の実施形態では、複数のオフロード処理コアを演算FPGA308に統合できる。他のFPGA310内の調停装置回路によって複数の演算FPGAを調停してもよい。演算FPGA(例えば、308)及び調停器FPGA(例えば、310)の組合せは、「XIMM」モジュール又は「Xockets DIMMモジュール」(例えば、演算ユニット300)と呼ばれる。特定のアプリケーションでは、これらのXIMMモジュールは、オフロードプロセッサ上の複数のセッションの実行を仲介する統合トラフィック及びスレッド管理回路を提供できる。
また、図10は、オフロードプロセッサトンネル接続308k、メモリインタフェース308m及びポート308l(アクセラレータコヒーレントポート(accelerator coherency port:ACP)であってもよい。)を示している。メモリインタフェース308mは、バッファメモリ308aにアクセスできる。
ハードウェアスケジューリング及びトラフィック管理動作に適切な様々な実施形態について説明したが、以下では、特定の側面を示す具体例について説明する。
図11は、特定の実施形態に基づき、処理リソースをオフロードするためのアクセスのためのスケジューリングプロセス400の例示的な実施形態を示している。幾つかの実施形態では、スケジューラ(例えば、ハードウェアスケジューラ)がトラフィック管理スキームとしてスケジューリングプロセスを実現し、オフロードプロセッサに関する要求を満たし、先取りモード(preemption mode)で動作することができる。先取りモードでは、スケジューラは、OS上でのセッションの実行を制御する役割を担うことができる。スケジューラは、実行から現在のセッションを取り除き、他のセッションを実行するタイミングを決定することができる。セッションは、オフロードプロセッサ上でスレッド又はスレッドのグループを含むことができる。現在のセッションの特性、例えば、停止しているか、動作しているか、パケットを待機しているか、セッションに割り当てられている実行リソースの量等の因子、及び現在のセッションに割り当てられている時間等の因子を含む多くのパラメータに応じて、ハードウェアスケジューラは、コンテキスト切換を決定することができる。パケットがハードウェアスケジューラに到着し、上述した基準の何れかが満たされると、スケジューラは、パケットが異なるセッションのためのものである場合、コンテキスト切換を決定する。
図11に示すように、方法400は、パケット又は他のデータを待機できる(ステップ402)。受信パケットは、モニタバッファ、キュー又はファイルによって受け取ることができる。一旦、パケット又はサービスレベル仕様(service level specification:SLS)が受信されると、他の条件が満たされているかのチェックを行う(ステップ406)。パケット/データが到着すると(オプションとして、上述したような他の条件が満たされると)(ステップ406におけるYes)、パケットセッション状態を判定する(ステップ408)。パケットが現在のセッションの一部である場合(ステップ408におけるYes)、パケットを現在のセッションのためのキューに入れ(ステップ412)現在のセッションの一部として処理する(ステップ410)。幾つかの実施形態では、これは、ハードウェアスケジューラがパケットをキューに入れて処理のためにオフロードプロセッサに送信することを含む。
パケットが現在のセッションの一部でない場合(ステップ408におけるNo)、パケットが前のセッションのためのものであるかを判定する(ステップ414)。パケットが前のセッションからのものでない場合(ステップ414におけるNo)、新たなセッションのための十分なメモリがあるかを判定する(ステップ416)。十分なメモリある場合(ステップ416におけるYes)、オフロードプロセッサが準備できていれば(ステップ428)、プロセッサのキャッシュメモリにコンテキストデータを転送することができる(ステップ430)。このような転送が完了すると、セッションを実行することができる(ステップ410)。
パケットが前のセッションからのものである場合(ステップ414におけるYes)又は新たなセッションのための十分なメモリがない場合(ステップ416におけるNo)、前のセッション又は新たなセッションが同じカラーのものであるかを判定する(ステップ418)。これに該当しない場合、前のセッション又は新たなセッションへの切換を行うことができる(ステップ420)。最後に使われてからの経過時間が最も長い(least recently uses:LRU)キャッシュエンティティをフラッシュし、前のセッションコンテキスト又は作成された新たなセッションコンテキストを読み込むことができる。この検索された/新たなセッションのパケットには、保持できる新しいカラーを割り当てることができる。幾つかの実施形態では、これは、低遅延メモリに保存されているコンテキストデータをオフロードプロセッサのキャッシュに読み込むことを含んでいてもよい。前の/新たなセッションが同じカラーのものである場合(ステップ418におけるYes)、カラープレッシャ(color pressure)を超えることができるかをチェックする(ステップ422)。これが可能でない場合、又は他のカラーが使用可能である場合(ステップ422における「No、他のカラーが使用可能」)、前のセッション又は新たなセッションへの切換を行うことができる(すなわち、ステップ420)。カラープレッシャを除外できる場合、又は除外できないが他のカラーが使用可能でない場合、(ステップ422における「Yes」/「No、他のカラーが利用不能」)同じカラーのLRUキャッシュエンティティをフラッシュし、前のセッションコンテキスト又は作成された新たなセッションコンテキストを読み込むことができる(ステップ424)。これらのパケットは、割り当てられたカラーを保持する。ここでも、幾つかの実施形態では、これは、低遅延メモリに保存されているコンテキストデータを、オフロードプロセッサのキャッシュに読み込むことを含むことができる。
コンテキスト切換の場合(ステップ420/424)、新たなセッションを初期化できる(ステップ426)。オフロードプロセッサの準備が完了している場合(ステップ428)、プロセッサのキャッシュメモリにコンテキストデータを転送することができる(ステップ430)。このような転送が完了すると、セッションを実行できる(ステップ410)。
図11に示すように、オフロードプロセッサがパケットを処理している間(ステップ410)、パケットが処理を完了しているかを定期的にチェックし(ステップ432)、処理が完了していない場合、戻る(ステップ432におけるNo、パケットをキューから外す)。パケットの処理が完了した場合(ステップ432におけるYes)、ハードウェアスケジューラは、出力キュー内の更なるパケットを参照する(ステップ434)。更なるパケットがある場合(ステップ434におけるYes)、及びオフロードプロセッサがパケットを受信する準備が整っている場合(ステップ436におけるYes)、パケットをオフロードプロセッサに転送することができる。幾つかの実施形態では、オフロードプロセッサによって「処理準備完了」メッセージがトリガされると、直ちに、オフロードプロセッサへのキューにパケットを入れる。オフロードプロセッサがパケットの処理を完了した後、パケットがどのセッションに属するかをハードウェアスケジューラがチェックすることから開始されるサイクルの全体を繰り返す。
パケット処理についてのオフロードプロセッサの準備が整っていない場合(ステップ436におけるNo)、及びレートリミットまで待機している場合(ステップ438)、ハードウェアスケジューラは、使用可能な他のパケットがあるかをチェックできる。更なるパケットがキューに入っていない場合、ハードウェアスケジューラは、待機モードに入り、更なるパケットが到着するまで、レートリミットの間待機する。このように、ハードウェアスケジューラは、高速且つ効率的に動作して、ダウンストリームリソースに宛てられたパケットを管理及び供給する。
このように、異なるセッションからのパケットの到着によってセッションを先取り(preempted)でき、上述したように、新たなパケットが処理される(ステップ406)。
なお、上述した本発明の例示的な実施形態の説明では、説明を明瞭にするため及び本発明の様々な側面の1つ以上の理解を補助するために、本発明の様々な特徴は、単一の実施形態、図又はその説明において共にグループ化されている。但し、このような開示の手法は、請求の範囲に記載されている発明が各請求項で明示している特徴以外の特徴を要求するという意図を反映しているとは解釈されない。すなわち、特許請求の範囲は、本発明の側面が上述した実施形態の全ての特徴より少ない特徴で成立することを表している。したがって、詳細な説明に続く特許請求の範囲は、この詳細な説明にも組み込まれ、各請求項は、それ自体が本発明の個別の実施形態を表していると解釈される。
また、本発明の実施形態は、特に開示していない要素及び/又はステップを欠いた状態で実施してもよい。すなわち、要素の省略も本発明の特徴に含まれる。
したがって、ここでは、特定の実施形態の様々な側面を詳細に説明したが、本発明の精神及び範囲から逸脱することなく、実施形態の様々な変更、置換及び変形が可能である。
220−0〜5 IC、220−6 メモリIC、230 システム、226 インラインモジュールスロット、228 システムメモリバス、301 システム、300 演算ユニット、302 入出力デバイス、302a 入力バッファ、302b 入出力仮想化機構、304a 変換ルックアサイドバッファ(TLB)、304b IOMMU機能、306a CPUIO、306b メモリコントローラ、306c コア、306d プロビジョニングエージェント、308,310 演算FPGA、308b、c、d、e、hハードウェアスケジューラ、310a DMAスレーブインタフェース、308a、308m、310b オンボードメモリ、308i オフロードプロセッサ、312 ホストバス、314 接続、316 システムメモリバス

Claims (25)

  1. パケット処理システムのためのスケジューリングシステムにおいて、
    メモリバスに接続され、ネットワークパケットを分類し、前記分類したネットワークパケットを第1の複数の入出力キューに入れる分類回路と、
    前記分類回路から前記第1の複数の入出力キューを介して受信した前記ネットワークパケットを並べ替え、前記並べ替えたネットワークパケットを第2の複数の入出力キューに入れるスケジューリング回路と、
    前記スケジューリング回路から前記第2の複数の入出力キューを介して受信した前記ネットワークパケットを複数の出力ポートに方向付ける調停回路と、
    前記複数の出力ポートの少なくとも1つに接続され、それぞれ前記ネットワークパケットを変更するように構成された複数のオフロードプロセッサとを備えるスケジューリングシステム。
  2. 前記メモリバスは、ダイレクトメモリアクセスをサポートし、前記複数のオフロードプロセッサは、前記変更されたパケットをメモリバスに戻すことができる請求項1記載のスケジューリングシステム。
  3. 前記分類回路は、セッションメタデータに基づいてネットワークパケットを分類するように構成されている請求項1記載のスケジューリングシステム。
  4. 前記スケジューリング回路は、前記複数のオフロードプロセッサのそれぞれの使用可能性に基づいて、ネットワークパケットを方向付けるように構成されている請求項1記載のスケジューリングシステム。
  5. 前記スケジューリング回路は、セッション優先順位に従ってネットワークパケットを並べ替えるように構成されている請求項1記載のスケジューリングシステム。
  6. 前記スケジューリング回路は、前記複数のオフロードプロセッサの少なくとも1つのためにコンテキスト切換を開始するように構成されている請求項1記載のスケジューリングシステム。
  7. 前記スケジューリング回路は、定義されたトラフィック管理キューにネットワークパケットを転送するように構成されている請求項1記載のスケジューリングシステム。
  8. 前記スケジューリング回路は、前記複数のオフロードプロセッサのそれぞれのためのネットワークパケット処理がいつ完了したかを判定するように構成されている請求項1記載のスケジューリングシステム。
  9. 前記スケジューリング回路は、先取りモードで動作してセッション実行を制御するように構成されている請求項1記載のスケジューリングシステム。
  10. パケット処理をスケジューリングする方法において、
    セッションメタデータに基づいてネットワークパケットを分類し、前記分類されたネットワークパケットを第1の複数の入出力キューに入れ、定義されたメモリトランスポートプロトコルを有するメモリバスを用いて、ネットワークパケットを分類回路に転送するステップと、
    スケジューリング回路を用いて、前記第1の複数の入出力キューから受信したネットワークパケットを並べ替え、前記並べ替えたネットワークパケットを第2の複数の入出力キューに入れるステップと、
    調停回路を用いて、前記スケジューリング回路から前記第2の複数の入出力キューを介して受信した前記ネットワークパケットを複数の出力ポートに方向付けるステップと、
    複数のオフロードプロセッサを用いてネットワークパケットを変更するステップとを有し、前記複数のオフロードプロセッサのそれぞれは、複数の出力ポートの少なくとも1つに接続され、前記変更されたネットワークパケットを前記メモリバスに方向付けるように構成されている、パケット処理をスケジューリングする方法。
  11. 前記ネットワークパケットを方向付けるステップは、前記複数のオフロードプロセッサの使用可能性に基づいて行われる請求項10記載のパケット処理をスケジューリングする方法。
  12. 前記ネットワークパケットの並べ替えは、前記ネットワークパケットのセッション優先順位に従って行われる請求項10記載のパケット処理をスケジューリングする方法。
  13. 前記スケジューリング回路の動作によって、前記複数のオフロードプロセッサの少なくとも1つのためのコンテキスト切換を開始するステップを更に有する請求項10記載のパケット処理をスケジューリングする方法。
  14. 前記スケジューリング回路の動作によって、前記ネットワークパケットを定義されたトラフィック管理キューに転送するステップを更に有する請求項10記載のパケット処理をスケジューリングする方法。
  15. 前記スケジューリング回路の動作によって、前記複数のオフロードプロセッサのそれぞれのためのパケット処理がいつ完了したかを判定するステップを更に有する請求項10記載のパケット処理をスケジューリングする方法。
  16. 前記スケジューリング回路の動作によって、現在のネットワークパケット処理セッションを先取りするステップを更に有する請求項10記載のパケット処理をスケジューリングする方法。
  17. ネットワークパケット処理のためのサービスをスケジューリングする、メモリバスに接続されたモジュールにおいて、
    メモリバス接続と、
    前記メモリバス接続から受信したネットワークパケットを並べ替え、前記並べ替えたネットワークパケットを複数の入出力キューに入れるように構成されたスケジューリング回路と、
    前記メモリバス接続に接続され、それぞれが、前記複数の入出力キュー内のネットワークパケットを変更するように構成された複数のオフロードプロセッサとを備えるモジュール。
  18. 前記スケジューリング回路は、前記複数のオフロードプロセッサのそれぞれの使用可能性に基づいて、ネットワークパケットを方向付けるように構成されている請求項17記載のモジュール。
  19. 前記スケジューリング回路は、前記ネットワークパケットのセッション優先順位に従ってネットワークパケットを並べ替えるように構成されている請求項17記載のモジュール。
  20. 前記スケジューリング回路は、前記複数のオフロードプロセッサの少なくとも1つのためにコンテキスト切換を開始するように構成されている請求項17記載のモジュール。
  21. 前記スケジューリング回路は、定義されたトラフィック管理キューにネットワークパケットを転送するように構成されている請求項17記載のモジュール。
  22. 前記スケジューリング回路は、前記複数のオフロードプロセッサのそれぞれためのネットワークパケット処理がいつ完了したかを判定するように構成されている請求項17記載のモジュール。
  23. 前記スケジューリング回路は、先取りモードで動作してセッション実行を制御するように構成されている請求項17記載のモジュール。
  24. 前記メモリバス接続は、メモリバスソケットと互換性を有する請求項17記載のモジュール。
  25. 前記メモリバス接続は、デュアルインラインメモリモジュール(DIMM)ソケットと互換性を有する請求項17記載のモジュール。
JP2015553711A 2013-01-17 2013-06-22 スケジューリングシステム、パケット処理をスケジューリングする方法及びモジュール Pending JP2016503933A (ja)

Applications Claiming Priority (19)

Application Number Priority Date Filing Date Title
US201361753892P 2013-01-17 2013-01-17
US201361753904P 2013-01-17 2013-01-17
US201361753903P 2013-01-17 2013-01-17
US201361753901P 2013-01-17 2013-01-17
US201361753907P 2013-01-17 2013-01-17
US201361753910P 2013-01-17 2013-01-17
US201361753895P 2013-01-17 2013-01-17
US201361753906P 2013-01-17 2013-01-17
US201361753899P 2013-01-17 2013-01-17
US61/753,892 2013-01-17
US61/753,906 2013-01-17
US61/753,899 2013-01-17
US61/753,907 2013-01-17
US61/753,910 2013-01-17
US61/753,903 2013-01-17
US61/753,904 2013-01-17
US61/753,895 2013-01-17
US61/753,901 2013-01-17
PCT/US2013/047205 WO2014113061A2 (en) 2013-01-17 2013-06-22 Scheduling and traffic management with offload processors

Publications (1)

Publication Number Publication Date
JP2016503933A true JP2016503933A (ja) 2016-02-08

Family

ID=51165034

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015553711A Pending JP2016503933A (ja) 2013-01-17 2013-06-22 スケジューリングシステム、パケット処理をスケジューリングする方法及びモジュール
JP2015553712A Pending JP2016503934A (ja) 2013-01-17 2013-06-26 コンテキスト切換キャッシュシステム及びコンテキスト切換方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015553712A Pending JP2016503934A (ja) 2013-01-17 2013-06-26 コンテキスト切換キャッシュシステム及びコンテキスト切換方法

Country Status (6)

Country Link
US (25) US9250954B2 (ja)
EP (3) EP2946296A4 (ja)
JP (2) JP2016503933A (ja)
KR (3) KR20160037827A (ja)
CN (2) CN105765910A (ja)
WO (6) WO2014113055A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022078349A (ja) * 2016-03-31 2022-05-24 日本電気株式会社 ネットワークシステムの制御方法および制御装置

Families Citing this family (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9176785B2 (en) 2004-03-13 2015-11-03 Adaptive Computing Enterprises, Inc. System and method for providing multi-resource management support in a compute environment
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US9075657B2 (en) 2005-04-07 2015-07-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
CN103377161A (zh) * 2012-04-24 2013-10-30 鸿富锦精密工业(深圳)有限公司 主板及应用于该主板的数据处理方法
US20130318276A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US20130318280A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US10311014B2 (en) * 2012-12-28 2019-06-04 Iii Holdings 2, Llc System, method and computer readable medium for offloaded computation of distributed application protocols within a cluster of data processing nodes
US9250954B2 (en) 2013-01-17 2016-02-02 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US9569223B2 (en) * 2013-02-13 2017-02-14 Red Hat Israel, Ltd. Mixed shared/non-shared memory transport for virtual machines
US9460024B2 (en) * 2013-03-15 2016-10-04 Vmware, Inc. Latency reduction for direct memory access operations involving address translation
US10084718B1 (en) * 2013-03-15 2018-09-25 Google Llc Bi-Connected hierarchical data center network based on multi-ported network interface controllers (NICs)
US9288163B2 (en) * 2013-03-15 2016-03-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Low-latency packet receive method for networking devices
US9462088B2 (en) 2013-04-02 2016-10-04 Cisco Technology, Inc. Offload operations for overlay networks
US9606842B2 (en) * 2013-05-08 2017-03-28 National Science Foundation Resource and core scaling for improving performance of power-constrained multi-core processors
US9143403B2 (en) * 2013-06-19 2015-09-22 Hewlett-Packard Development Company, L.P. Autonomous metric tracking and adjustment
US9331868B2 (en) * 2013-10-15 2016-05-03 At&T Intellectual Property I, L.P. Method of bus virtualization in computing machine intercommunications
CN105612499B (zh) * 2013-10-29 2018-11-13 华中科技大学 混合高速缓存管理
US9454394B2 (en) * 2013-11-22 2016-09-27 Red Hat Israel, Ltd. Hypervisor dynamically assigned input/output resources for virtual devices
US10254987B2 (en) * 2013-12-12 2019-04-09 Samsung Electronics Co., Ltd. Disaggregated memory appliance having a management processor that accepts request from a plurality of hosts for management, configuration and provisioning of memory
KR101572689B1 (ko) * 2014-01-06 2015-11-27 (주)구름네트웍스 네트워크 인터페이스 가상화 장치 및 방법
US9705798B1 (en) 2014-01-07 2017-07-11 Google Inc. Systems and methods for routing data through data centers using an indirect generalized hypercube network
JP2015143945A (ja) * 2014-01-31 2015-08-06 富士通株式会社 ストレージ制御装置、ストレージ装置および制御プログラム
CN103905337B (zh) * 2014-03-31 2018-01-23 华为技术有限公司 一种网络资源的处理装置、方法和系统
US9467389B2 (en) * 2014-04-28 2016-10-11 International Business Machines Corporation Handling large frames in a virtualized fibre channel over ethernet (FCoE) data forwarder
US9491031B2 (en) * 2014-05-06 2016-11-08 At&T Intellectual Property I, L.P. Devices, methods, and computer readable storage devices for collecting information and sharing information associated with session flows between communication devices and servers
US9742881B2 (en) * 2014-06-30 2017-08-22 Nicira, Inc. Network virtualization using just-in-time distributed capability for classification encoding
US9449229B1 (en) 2014-07-07 2016-09-20 Google Inc. Systems and methods for categorizing motion event candidates
US9501915B1 (en) 2014-07-07 2016-11-22 Google Inc. Systems and methods for analyzing a video stream
US10127783B2 (en) 2014-07-07 2018-11-13 Google Llc Method and device for processing motion events
US10140827B2 (en) 2014-07-07 2018-11-27 Google Llc Method and system for processing motion event notifications
US9224044B1 (en) 2014-07-07 2015-12-29 Google Inc. Method and system for video zone monitoring
WO2016013024A1 (en) * 2014-07-25 2016-01-28 StorNetware Systems Pvt. Ltd. Unified converged network, storage and computer system
US9892079B2 (en) * 2014-07-25 2018-02-13 Rajiv Ganth Unified converged network, storage and compute system
US10261817B2 (en) * 2014-07-29 2019-04-16 Nxp Usa, Inc. System on a chip and method for a controller supported virtual machine monitor
WO2016030757A1 (en) * 2014-08-25 2016-03-03 Marvell World Trade Ltd. Packet buffer with dynamic bypass
US10313683B2 (en) 2014-08-30 2019-06-04 Apple Inc. Video encoder with context switching
US9009805B1 (en) 2014-09-30 2015-04-14 Google Inc. Method and system for provisioning an electronic device
US9703951B2 (en) 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources
USD782495S1 (en) 2014-10-07 2017-03-28 Google Inc. Display screen or portion thereof with graphical user interface
US9378363B1 (en) 2014-10-08 2016-06-28 Amazon Technologies, Inc. Noise injected virtual timer
US9754103B1 (en) 2014-10-08 2017-09-05 Amazon Technologies, Inc. Micro-architecturally delayed timer
US9491112B1 (en) 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
US9864636B1 (en) * 2014-12-10 2018-01-09 Amazon Technologies, Inc. Allocating processor resources based on a service-level agreement
US20160188529A1 (en) * 2014-12-25 2016-06-30 Intel Corporation Guaranteed quality of service in system-on-a-chip uncore fabric
US20160197834A1 (en) * 2015-01-02 2016-07-07 Siegfried Luft Architecture and method for traffic engineering between diverse cloud providers
US9952979B1 (en) * 2015-01-14 2018-04-24 Cavium, Inc. Methods and systems for direct memory access operations
CN111708717A (zh) * 2015-06-30 2020-09-25 华为技术有限公司 数据拷贝方法、直接内存访问控制器及计算机系统
US10310998B2 (en) 2015-06-30 2019-06-04 Microsoft Technology Licensing, Llc Direct memory access with filtering
KR102402672B1 (ko) * 2015-09-01 2022-05-26 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
US9491765B1 (en) * 2015-09-21 2016-11-08 Dell Products L.P. Beam forming communication system
US20170142234A1 (en) * 2015-11-13 2017-05-18 Microsoft Technology Licensing, Llc Scalable addressing mechanism for virtual machines
US10817456B2 (en) 2015-11-18 2020-10-27 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
US10853303B2 (en) 2015-11-18 2020-12-01 Oracle International Corporation Separation of control and data plane functions in SoC virtualized I/O device
US10031801B2 (en) 2015-12-01 2018-07-24 Microsoft Technology Licensing, Llc Configurable reliability for memory devices
US10048977B2 (en) 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
US10445271B2 (en) * 2016-01-04 2019-10-15 Intel Corporation Multi-core communication acceleration using hardware queue device
US9985890B2 (en) 2016-03-14 2018-05-29 International Business Machines Corporation Identifying a local congestion control algorithm of a virtual machine
US10802998B2 (en) * 2016-03-29 2020-10-13 Intel Corporation Technologies for processor core soft-offlining
US10045252B2 (en) * 2016-06-02 2018-08-07 International Business Machines Corporation Virtual switch-based congestion control for multiple TCP flows
KR102548599B1 (ko) 2016-06-17 2023-06-29 삼성전자주식회사 버퍼메모리를 포함하는 메모리 장치 및 이를 포함하는 메모리 모듈
US11671382B2 (en) 2016-06-17 2023-06-06 Intel Corporation Technologies for coordinating access to data packets in a memory
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US10148576B2 (en) * 2016-07-28 2018-12-04 Fortinet, Inc. Network processing unit (NPU) integrated layer 2 network device for layer 3 offloading
WO2018049235A1 (en) * 2016-09-08 2018-03-15 Macnica Americas, Inc. Fpga offload module and processes for seamless frame-level switching of media streams in real-time
US10552212B2 (en) * 2016-11-28 2020-02-04 Arm Limited Data processing
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10715424B2 (en) 2016-12-06 2020-07-14 Microsoft Technology Licensing, Llc Network traffic management with queues affinitized to one or more cores
US10826841B2 (en) * 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
US10554554B2 (en) * 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
CN106656711B (zh) * 2016-12-26 2019-06-18 中核控制系统工程有限公司 一种令牌总线时隙预定义方法
US11853244B2 (en) * 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
US10949427B2 (en) 2017-01-31 2021-03-16 Microsoft Technology Licensing, Llc Stream data processing on multiple application timelines
JP6859755B2 (ja) 2017-03-02 2021-04-14 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
WO2018183542A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
US10257033B2 (en) * 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
US20180330288A1 (en) * 2017-05-15 2018-11-15 Alteryx, Inc. Method of data aggregation for cache optimization and efficient processing
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
US20180341494A1 (en) * 2017-05-26 2018-11-29 Intel Corporation Accelerating network security monitoring
US10990291B2 (en) * 2017-06-12 2021-04-27 Dell Products, L.P. Software assist memory module hardware architecture
US10838902B2 (en) * 2017-06-23 2020-11-17 Facebook, Inc. Apparatus, system, and method for performing hardware acceleration via expansion cards
CN109213268A (zh) * 2017-07-04 2019-01-15 佛山市顺德区顺达电脑厂有限公司 服务器机柜系统及其讯号传输频率调整方法
CN110915172A (zh) * 2017-07-10 2020-03-24 芬基波尔有限责任公司 针对数据中心的接入节点
EP3625679A1 (en) 2017-07-10 2020-03-25 Fungible, Inc. Data processing unit for stream processing
CN109426556B (zh) * 2017-08-31 2021-06-04 大唐移动通信设备有限公司 一种进程调度方法和装置
CN107741867B (zh) * 2017-09-30 2020-03-10 Oppo广东移动通信有限公司 应用程序管理方法、装置、存储介质及电子设备
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10496437B2 (en) * 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US20190171601A1 (en) 2017-12-03 2019-06-06 Intel Corporation Mechanisms for fpga chaining and unified fpga views to composed system hosts
US10812315B2 (en) 2018-06-07 2020-10-20 Cisco Technology, Inc. Cross-domain network assurance
US11074961B2 (en) 2018-07-30 2021-07-27 Samsung Electronics Co., Ltd. Method of performing internal processing operation of memory device
US10862805B1 (en) 2018-07-31 2020-12-08 Juniper Networks, Inc. Intelligent offloading of services for a network device
US10795612B2 (en) * 2018-07-31 2020-10-06 EMC IP Holding Company LLC Offload processing using storage device slots
US10649927B2 (en) * 2018-08-20 2020-05-12 Intel Corporation Dual in-line memory module (DIMM) programmable accelerator card
TWI813743B (zh) 2018-08-23 2023-09-01 美商阿爾克斯股份有限公司 在網路路由環境中的獨立資料儲存空間
US10979542B2 (en) * 2018-08-28 2021-04-13 Vmware, Inc. Flow cache support for crypto operations and offload
US10705762B2 (en) * 2018-08-30 2020-07-07 Micron Technology, Inc. Forward caching application programming interface systems and methods
CN109358953B (zh) * 2018-09-20 2020-09-08 中南大学 一种微云中的多任务应用卸载方法
US10942824B2 (en) 2018-10-08 2021-03-09 Hewlett Packard Enterprise Development Lp Programming model and framework for providing resilient parallel tasks
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US10606775B1 (en) 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
US11003539B2 (en) * 2019-01-15 2021-05-11 EMC IP Holding Company LLC Offload processing using a storage slot
CN109714217A (zh) * 2019-02-28 2019-05-03 苏州浪潮智能科技有限公司 一种机柜以及机柜间通信方法
US10929310B2 (en) 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
JP2020184690A (ja) * 2019-05-08 2020-11-12 富士通株式会社 パケット分類プログラム、パケット分類方法、および、情報処理装置
US11374880B2 (en) * 2019-06-17 2022-06-28 Cyxtera Data Centers, Inc. Automated deployment of internet connectivity to rack switches in a data center
US11374879B2 (en) * 2019-06-17 2022-06-28 Cyxtera Data Centers, Inc. Network configuration of top-of-rack switches across multiple racks in a data center
CN110181928B (zh) * 2019-07-09 2021-09-21 苏州微影激光技术有限公司 一种丝网印刷版的制版装置及制版方法
US11275111B2 (en) 2019-09-20 2022-03-15 Micron Technology, Inc. Plurality of edge through-silicon vias and related systems, methods, and devices
EP4052442A1 (en) * 2019-10-30 2022-09-07 Telefonaktiebolaget LM Ericsson (publ) In-band protocol-based in-network computation offload framework
US11232049B2 (en) * 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability
US11934330B2 (en) 2020-05-08 2024-03-19 Intel Corporation Memory allocation for distributed processing devices
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
JP2022048644A (ja) * 2020-09-15 2022-03-28 富士通株式会社 半導体装置及び転送方法
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US20220103488A1 (en) * 2020-09-28 2022-03-31 Vmware, Inc. Packet processing with hardware offload units
US11418597B2 (en) * 2020-10-08 2022-08-16 Toyota Motor Engineering & Manufacturing North America, Inc. System and method for value-anticipating task offloading
US11301410B1 (en) * 2020-12-13 2022-04-12 Advanced Mciro Devices, Inc. Tags for request packets on a network communication link
US11451493B2 (en) * 2021-01-06 2022-09-20 Mellanox Technologies, Ltd. Connection management in a network adapter
US11822675B2 (en) * 2021-06-24 2023-11-21 International Business Machines Corporation Securing customer data and internal register data during hardware checkstops in a multi-tenant environment
US20230066513A1 (en) * 2021-08-30 2023-03-02 EMC IP Holding Company LLC Asynchronous Reservation of Storage Volumes with Persistent Storage of Reservation Data
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US20230221874A1 (en) * 2022-01-12 2023-07-13 Vmware, Inc. Method of efficiently receiving files over a network with a receive file command
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US20220327061A1 (en) * 2022-06-23 2022-10-13 Daniel Christian Biederman Packet processing device to determine memory to store data in a server architecture and computing system including same

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529917A (ja) * 2004-02-20 2007-10-25 アシシュ エイ パンドヤ 分散型ネットワークセキュリティシステム及びそのためのハードウエアプロセッサ

Family Cites Families (245)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62214464A (ja) * 1986-03-17 1987-09-21 Hitachi Ltd データ処理システム
JP2514954B2 (ja) * 1987-03-13 1996-07-10 三菱電機株式会社 Icカ−ド
EP0422310A1 (en) * 1989-10-10 1991-04-17 International Business Machines Corporation Distributed mechanism for the fast scheduling of shared objects
US5237662A (en) 1991-06-27 1993-08-17 Digital Equipment Corporation System and method with a procedure oriented input/output mechanism
US5247675A (en) 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5577213A (en) 1994-06-03 1996-11-19 At&T Global Information Solutions Company Multi-device adapter card for computer
US5913028A (en) * 1995-10-06 1999-06-15 Xpoint Technologies, Inc. Client/server data traffic delivery system and method
US6179489B1 (en) * 1997-04-04 2001-01-30 Texas Instruments Incorporated Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto
US5923887A (en) * 1996-05-20 1999-07-13 Advanced Micro Devices, Inc. Interrupt request that defines resource usage
US6085307A (en) 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US5930256A (en) * 1997-03-28 1999-07-27 Xerox Corporation Self-arbitrating crossbar switch
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
US5870350A (en) 1997-05-21 1999-02-09 International Business Machines Corporation High performance, high bandwidth memory bus architecture utilizing SDRAMs
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations
US6092146A (en) 1997-07-31 2000-07-18 Ibm Dynamically configurable memory adapter using electronic presence detects
US7565461B2 (en) * 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US20060117274A1 (en) 1998-08-31 2006-06-01 Tseng Ping-Sheng Behavior processor system and method
US6370622B1 (en) * 1998-11-20 2002-04-09 Massachusetts Institute Of Technology Method and apparatus for curious and column caching
US6446163B1 (en) * 1999-01-04 2002-09-03 International Business Machines Corporation Memory card with signal processing element
US20020107990A1 (en) * 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7120155B2 (en) 2000-10-03 2006-10-10 Broadcom Corporation Switch having virtual shared memory
US6665495B1 (en) * 2000-10-27 2003-12-16 Yotta Networks, Inc. Non-blocking, scalable optical router architecture and method for routing optical traffic
US20020107971A1 (en) * 2000-11-07 2002-08-08 Bailey Brian W. Network transport accelerator
US7274706B1 (en) * 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
JP2002324363A (ja) * 2001-04-25 2002-11-08 Ricoh Co Ltd 情報記録再生装置
TWI240864B (en) 2001-06-13 2005-10-01 Hitachi Ltd Memory device
JP2005505853A (ja) * 2001-10-12 2005-02-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ユーザデータを読出し又は書込みするための装置及び方法
US20030078749A1 (en) * 2001-10-18 2003-04-24 Hans Eberle Memory module with integrated radio transmitter
US6889294B1 (en) * 2001-10-29 2005-05-03 Lsi Logic Corporation Virtual shared volume via proxy data transfer
WO2003067453A1 (en) * 2002-02-08 2003-08-14 Bermai, Inc. Medium access control in a wireless network
US6751113B2 (en) 2002-03-07 2004-06-15 Netlist, Inc. Arrangement of integrated circuits in a memory module
US7472205B2 (en) 2002-04-24 2008-12-30 Nec Corporation Communication control apparatus which has descriptor cache controller that builds list of descriptors
WO2004027652A1 (en) 2002-09-18 2004-04-01 Netezza Corporation Programmable streaming data processor for database appliance having multiple processing unit groups
US7454749B2 (en) 2002-11-12 2008-11-18 Engineered Intelligence Corporation Scalable parallel processing on shared memory computers
US20040133720A1 (en) * 2002-12-31 2004-07-08 Steven Slupsky Embeddable single board computer
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7089412B2 (en) 2003-01-17 2006-08-08 Wintec Industries, Inc. Adaptive memory module
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7155379B2 (en) 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
US7337314B2 (en) 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US7657933B2 (en) * 2003-04-12 2010-02-02 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple groups
US6794896B1 (en) * 2003-04-21 2004-09-21 Xilinx, Inc. Method and apparatus for multithreading
US7334064B2 (en) * 2003-04-23 2008-02-19 Dot Hill Systems Corporation Application server blade for embedded storage appliance
US6982892B2 (en) 2003-05-08 2006-01-03 Micron Technology, Inc. Apparatus and methods for a physical layout of simultaneously sub-accessible memory modules
US8560627B2 (en) * 2003-05-23 2013-10-15 Alcatel Lucent Virtual switch for use in fibre channel applications
US20050038946A1 (en) 2003-08-12 2005-02-17 Tadpole Computer, Inc. System and method using a high speed interface in a system having co-processors
US20050114700A1 (en) * 2003-08-13 2005-05-26 Sensory Networks, Inc. Integrated circuit apparatus and method for high throughput signature based network applications
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20050078708A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Formatting packet headers in a communications adapter
US7787471B2 (en) * 2003-11-10 2010-08-31 Broadcom Corporation Field processor for a network device
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7657706B2 (en) 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
US7558890B1 (en) * 2003-12-19 2009-07-07 Applied Micro Circuits Corporation Instruction set for programmable queuing
US7213126B1 (en) * 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US20050018495A1 (en) 2004-01-29 2005-01-27 Netlist, Inc. Arrangement of integrated circuits in a memory module
US7532537B2 (en) 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7286436B2 (en) 2004-03-05 2007-10-23 Netlist, Inc. High-density memory module utilizing low-density memory components
US7668165B2 (en) 2004-03-31 2010-02-23 Intel Corporation Hardware-based multi-threading for packet processing
US7254036B2 (en) 2004-04-09 2007-08-07 Netlist, Inc. High density memory module using stacked printed circuit boards
US7502474B2 (en) * 2004-05-06 2009-03-10 Advanced Micro Devices, Inc. Network interface with security association data prefetch for high speed offloaded security processing
US7480611B2 (en) 2004-05-13 2009-01-20 International Business Machines Corporation Method and apparatus to increase the usable memory capacity of a logic simulation hardware emulator/accelerator
US7945705B1 (en) * 2004-05-25 2011-05-17 Chelsio Communications, Inc. Method for using a protocol language to avoid separate channels for control messages involving encapsulated payload data messages
US7436845B1 (en) * 2004-06-08 2008-10-14 Sun Microsystems, Inc. Input and output buffering
US20060004965A1 (en) 2004-06-30 2006-01-05 Tu Steven J Direct processor cache access within a system having a coherent multi-processor protocol
US7930422B2 (en) * 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7305574B2 (en) 2004-10-29 2007-12-04 International Business Machines Corporation System, method and storage medium for bus calibration in a memory subsystem
KR100666169B1 (ko) 2004-12-17 2007-01-09 삼성전자주식회사 플래쉬 메모리 데이터 저장장치
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US8281031B2 (en) * 2005-01-28 2012-10-02 Standard Microsystems Corporation High speed ethernet MAC and PHY apparatus with a filter based ethernet packet router with priority queuing and single or multiple transport stream interfaces
US8072887B1 (en) * 2005-02-07 2011-12-06 Extreme Networks, Inc. Methods, systems, and computer program products for controlling enqueuing of packets in an aggregated queue including a plurality of virtual queues using backpressure messages from downstream queues
US20060215649A1 (en) * 2005-03-08 2006-09-28 Chris Morrall Network address converting apparatus using SSW tree
KR101427867B1 (ko) 2005-04-21 2014-08-11 바이올린 메모리 인코포레이티드 상호접속 시스템
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US20080304481A1 (en) 2005-07-12 2008-12-11 Paul Thomas Gurney System and Method of Offloading Protocol Functions
US20070016906A1 (en) * 2005-07-18 2007-01-18 Mistletoe Technologies, Inc. Efficient hardware allocation of processes to processors
US7543131B2 (en) * 2005-08-12 2009-06-02 Advanced Micro Devices, Inc. Controlling an I/O MMU
US7500083B2 (en) * 2005-08-15 2009-03-03 Silicon Informatics Accelerated processing with scheduling to configured coprocessor for molecular data type by service and control coprocessor upon analysis of software code
US7442050B1 (en) 2005-08-29 2008-10-28 Netlist, Inc. Circuit card with flexible connection for memory module with heat spreader
US7650557B2 (en) 2005-09-19 2010-01-19 Network Appliance, Inc. Memory scrubbing of expanded memory
US7620746B2 (en) * 2005-09-29 2009-11-17 Apple Inc. Functional DMA performing operation on DMA data and writing result of operation
US8862783B2 (en) * 2005-10-25 2014-10-14 Broadbus Technologies, Inc. Methods and system to offload data processing tasks
US7899864B2 (en) 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US7773630B2 (en) * 2005-11-12 2010-08-10 Liquid Computing Corportation High performance memory based communications interface
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US7904688B1 (en) 2005-12-21 2011-03-08 Trend Micro Inc Memory management unit for field programmable gate array boards
US20070150671A1 (en) * 2005-12-23 2007-06-28 Boston Circuits, Inc. Supporting macro memory instructions
EP1977635A2 (en) 2006-01-13 2008-10-08 Sun Microsystems, Inc. Modular blade server
US7619893B1 (en) 2006-02-17 2009-11-17 Netlist, Inc. Heat spreader for electronic modules
US20070226745A1 (en) 2006-02-28 2007-09-27 International Business Machines Corporation Method and system for processing a service request
JP2007233903A (ja) * 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US7421552B2 (en) 2006-03-17 2008-09-02 Emc Corporation Techniques for managing data within a data storage system utilizing a flash-based memory vault
US7434002B1 (en) 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP2007299279A (ja) * 2006-05-01 2007-11-15 Toshiba Corp 演算装置、プロセッサシステム、及び映像処理装置
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US8948166B2 (en) 2006-06-14 2015-02-03 Hewlett-Packard Development Company, Lp. System of implementing switch devices in a server system
WO2007147170A2 (en) 2006-06-16 2007-12-21 Bittorrent, Inc. Classification and verification of static file transfer protocols
US7636800B2 (en) 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8599716B2 (en) * 2006-06-30 2013-12-03 Cisco Technolgy, Inc. Method and system to configure quality of service in a network
US7291032B1 (en) * 2006-07-05 2007-11-06 International Business Machines Corporation Connector for adjacent devices
KR100823734B1 (ko) * 2006-07-07 2008-04-21 한국전자통신연구원 iSCSI를 위한 데이터 가속 장치 및 이를 이용한iSCSI 저장 시스템
US7624118B2 (en) 2006-07-26 2009-11-24 Microsoft Corporation Data processing over very large databases
US7760715B1 (en) 2006-08-04 2010-07-20 Parin B. Dalal Circuit and method for rate-limiting a scheduler
US8116320B2 (en) * 2006-08-07 2012-02-14 Adc Telecommunications, Inc. Mapping external port using virtual local area network
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
US8943245B2 (en) 2006-09-28 2015-01-27 Virident Systems, Inc. Non-volatile type memory modules for main memory
US20080082750A1 (en) 2006-09-28 2008-04-03 Okin Kenneth A Methods of communicating to, memory modules in a memory channel
US8189328B2 (en) 2006-10-23 2012-05-29 Virident Systems, Inc. Methods and apparatus of dual inline memory modules for flash memory
WO2008055272A2 (en) 2006-11-04 2008-05-08 Virident Systems, Inc. Integrating data from symmetric and asymmetric memory
US8447957B1 (en) * 2006-11-14 2013-05-21 Xilinx, Inc. Coprocessor interface architecture and methods of operating the same
US8149834B1 (en) * 2007-01-25 2012-04-03 World Wide Packets, Inc. Forwarding a packet to a port from which the packet is received and transmitting modified, duplicated packets on a single port
US20080222351A1 (en) * 2007-03-07 2008-09-11 Aprius Inc. High-speed optical connection between central processing unit and remotely located random access memory
US20080229049A1 (en) 2007-03-16 2008-09-18 Ashwini Kumar Nanda Processor card for blade server and process.
EP3200189B1 (en) 2007-04-12 2021-06-02 Rambus Inc. Memory system with point-to-point request interconnect
US8935406B1 (en) * 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US20080271030A1 (en) * 2007-04-30 2008-10-30 Dan Herington Kernel-Based Workload Management
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8347005B2 (en) 2007-07-31 2013-01-01 Hewlett-Packard Development Company, L.P. Memory controller with multi-protocol interface
US7743196B2 (en) * 2007-08-15 2010-06-22 Agere Systems Inc. Interface with multiple packet preemption based on start indicators of different types
US7840748B2 (en) 2007-08-31 2010-11-23 International Business Machines Corporation Buffered memory module with multiple memory device data interface ports supporting double the memory capacity
JP5059524B2 (ja) * 2007-09-05 2012-10-24 ルネサスエレクトロニクス株式会社 メモリ制御回路、半導体集積回路、不揮発性メモリのベリファイ方法
US8503465B2 (en) * 2007-09-17 2013-08-06 Qualcomm Incorporated Priority scheduling and admission control in a communication network
US7949683B2 (en) 2007-11-27 2011-05-24 Cavium Networks, Inc. Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US20090158276A1 (en) * 2007-12-12 2009-06-18 Eric Lawrence Barsness Dynamic distribution of nodes on a multi-node computer system
US8862706B2 (en) * 2007-12-14 2014-10-14 Nant Holdings Ip, Llc Hybrid transport—application network fabric apparatus
US8990799B1 (en) * 2008-01-30 2015-03-24 Emc Corporation Direct memory access through virtual switch in device driver
US8856464B2 (en) * 2008-02-12 2014-10-07 Virident Systems, Inc. Systems for two-dimensional main memory including memory modules with read-writeable non-volatile memory devices
US20090249330A1 (en) * 2008-03-31 2009-10-01 Abercrombie David K Method and apparatus for hypervisor security code
JP5186982B2 (ja) 2008-04-02 2013-04-24 富士通株式会社 データ管理方法及びスイッチ装置
US20110235260A1 (en) 2008-04-09 2011-09-29 Apacer Technology Inc. Dram module with solid state disk
US8787060B2 (en) 2010-11-03 2014-07-22 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8001434B1 (en) 2008-04-14 2011-08-16 Netlist, Inc. Memory board with self-testing capability
US8154901B1 (en) 2008-04-14 2012-04-10 Netlist, Inc. Circuit providing load isolation and noise reduction
US8417870B2 (en) 2009-07-16 2013-04-09 Netlist, Inc. System and method of increasing addressable memory space on a memory board
WO2009141008A1 (en) 2008-05-22 2009-11-26 Nokia Siemens Networks Oy Adaptive scheduler for communication systems apparatus, system and method
TWI469055B (zh) * 2008-06-27 2015-01-11 Realtek Semiconductor Corp 網路工作卸載裝置與方法
US8190699B2 (en) 2008-07-28 2012-05-29 Crossfield Technology LLC System and method of multi-path data communications
US20100031235A1 (en) 2008-08-01 2010-02-04 Modular Mining Systems, Inc. Resource Double Lookup Framework
US20100032820A1 (en) * 2008-08-06 2010-02-11 Michael Bruennert Stacked Memory Module
US7886103B2 (en) 2008-09-08 2011-02-08 Cisco Technology, Inc. Input-output module, processing platform and method for extending a memory interface for input-output operations
US8452934B2 (en) * 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US7930519B2 (en) * 2008-12-17 2011-04-19 Advanced Micro Devices, Inc. Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit
GB2466289A (en) * 2008-12-18 2010-06-23 Veda Technology Ltd Executing a service application on a cluster by registering a class and storing subscription information of generated objects at an interconnect
US7870309B2 (en) * 2008-12-23 2011-01-11 International Business Machines Corporation Multithreaded programmable direct memory access engine
US8054832B1 (en) 2008-12-30 2011-11-08 Juniper Networks, Inc. Methods and apparatus for routing between virtual resources based on a routing location policy
GB2466984B (en) * 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
US8352710B2 (en) * 2009-01-19 2013-01-08 International Business Machines Corporation Off-loading of processing from a processor blade to storage blades
US20100183033A1 (en) 2009-01-20 2010-07-22 Nokia Corporation Method and apparatus for encapsulation of scalable media
US8498349B2 (en) 2009-03-11 2013-07-30 Texas Instruments Incorporated Demodulation and decoding for frequency modulation (FM) receivers with radio data system (RDS) or radio broadcast data system (RBDS)
US8869150B2 (en) * 2010-05-18 2014-10-21 Lsi Corporation Local messaging in a scheduling hierarchy in a traffic manager of a network processor
US8949838B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
US8009682B2 (en) * 2009-05-05 2011-08-30 Citrix Systems, Inc. Systems and methods for packet steering in a multi-core architecture
US8264903B1 (en) 2009-05-05 2012-09-11 Netlist, Inc. Systems and methods for refreshing a memory module
US8489837B1 (en) 2009-06-12 2013-07-16 Netlist, Inc. Systems and methods for handshaking with a memory module
US8892783B2 (en) * 2009-06-22 2014-11-18 Citrix Systems, Inc. Systems and methods for initialization and link management of NICS in a multi-core environment
US8205057B2 (en) * 2009-06-30 2012-06-19 Texas Instruments Incorporated Method and system for integrated pipeline write hazard handling using memory attributes
US9128632B2 (en) 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
US9535849B2 (en) 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8085801B2 (en) * 2009-08-08 2011-12-27 Hewlett-Packard Development Company, L.P. Resource arbitration
US20110035540A1 (en) 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8479216B2 (en) * 2009-08-18 2013-07-02 International Business Machines Corporation Method for decentralized load distribution in an event-driven system using localized migration between physically connected nodes and load exchange protocol preventing simultaneous migration of plurality of tasks to or from a same node
US8848513B2 (en) 2009-09-02 2014-09-30 Qualcomm Incorporated Seamless overlay connectivity using multi-homed overlay neighborhoods
US8972627B2 (en) * 2009-09-09 2015-03-03 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
US9876735B2 (en) * 2009-10-30 2018-01-23 Iii Holdings 2, Llc Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect
US20110083175A1 (en) * 2009-10-06 2011-04-07 Sonus Networks, Inc. Methods and Apparatuses for Policing and Prioritizing of Data Services
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
EP2512168B1 (en) * 2009-12-08 2019-12-25 Nec Corporation Bandwidth control device, bandwidth control method, and wireless network system
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US9390035B2 (en) 2009-12-21 2016-07-12 Sanmina-Sci Corporation Method and apparatus for supporting storage modules in standard memory and/or hybrid memory bus architectures
US8743877B2 (en) * 2009-12-21 2014-06-03 Steven L. Pope Header processing engine
US8473695B2 (en) * 2011-03-31 2013-06-25 Mosys, Inc. Memory system including variable write command scheduling
US20110197004A1 (en) * 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US20110208900A1 (en) * 2010-02-23 2011-08-25 Ocz Technology Group, Inc. Methods and systems utilizing nonvolatile memory in a computer system main memory
EP2363812B1 (en) 2010-03-04 2018-02-28 Karlsruher Institut für Technologie Reconfigurable processor architecture
WO2011120019A2 (en) 2010-03-26 2011-09-29 Virtualmetrix, Inc. Fine grain performance resource management of computer systems
CN101794271B (zh) 2010-03-31 2012-05-23 华为技术有限公司 多核内存一致性的实现方法和装置
JP5336423B2 (ja) * 2010-05-14 2013-11-06 パナソニック株式会社 計算機システム
US8824492B2 (en) 2010-05-28 2014-09-02 Drc Computer Corporation Accelerator system for remote data storage
US8631271B2 (en) 2010-06-24 2014-01-14 International Business Machines Corporation Heterogeneous recovery in a redundant memory system
US8468151B2 (en) 2010-06-29 2013-06-18 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries based on multiple hardware accelerators
US9118591B2 (en) 2010-07-30 2015-08-25 Broadcom Corporation Distributed switch domain of heterogeneous components
DE112010005821T5 (de) * 2010-08-23 2013-06-06 Empire Technology Development Llc Kontextwechsel
TW201214082A (en) * 2010-09-17 2012-04-01 Hon Hai Prec Ind Co Ltd Mother board
US8386887B2 (en) 2010-09-24 2013-02-26 Texas Memory Systems, Inc. High-speed memory system
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8483046B2 (en) 2010-09-29 2013-07-09 International Business Machines Corporation Virtual switch interconnect for hybrid enterprise servers
US8405668B2 (en) * 2010-11-19 2013-03-26 Apple Inc. Streaming translation in display pipe
US8996644B2 (en) * 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US8566831B2 (en) * 2011-01-26 2013-10-22 International Business Machines Corporation Execution of work units in a heterogeneous computing environment
US20120239874A1 (en) 2011-03-02 2012-09-20 Netlist, Inc. Method and system for resolving interoperability of multiple types of dual in-line memory modules
US8885334B1 (en) * 2011-03-10 2014-11-11 Xilinx, Inc. Computing system with network attached processors
US8774213B2 (en) 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US8825900B1 (en) * 2011-04-05 2014-09-02 Nicira, Inc. Method and apparatus for stateless transport layer tunneling
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
US20140032795A1 (en) 2011-04-13 2014-01-30 Hewlett-Packard Development Company, L.P. Input/output processing
US8442056B2 (en) 2011-06-28 2013-05-14 Marvell International Ltd. Scheduling packets in a packet-processing pipeline
US8547825B2 (en) * 2011-07-07 2013-10-01 International Business Machines Corporation Switch fabric management
US20130019057A1 (en) 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
JP2014527227A (ja) 2011-07-25 2014-10-09 サーバジー・インコーポレイテツド 低電力コンピューターシステムを構築するための方法およびシステム
EP2742649B1 (en) * 2011-08-10 2015-06-03 Marvell World Trade Ltd. Intelligent phy with security detection for ethernet networks
US8767463B2 (en) 2011-08-11 2014-07-01 Smart Modular Technologies, Inc. Non-volatile dynamic random access memory system with non-delay-lock-loop mechanism and method of operation thereof
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US9223618B2 (en) * 2011-09-20 2015-12-29 Intel Corporation Multi-threaded queuing system for pattern matching
US9094333B1 (en) * 2011-10-26 2015-07-28 Qlogic, Corporation Systems and methods for sending and receiving information via a network device
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US9424188B2 (en) 2011-11-23 2016-08-23 Smart Modular Technologies, Inc. Non-volatile memory packaging system with caching and method of operation thereof
US20140325183A1 (en) * 2011-11-28 2014-10-30 Freescale Semiconductor, Inc. Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor
US10203881B2 (en) * 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
US9443279B2 (en) * 2011-12-26 2016-09-13 Intel Corporation Direct link synchronization communication between co-processors
WO2013101123A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Recovering from errors using implicit redundancy
US9542437B2 (en) 2012-01-06 2017-01-10 Sap Se Layout-driven data selection and reporting
US8918634B2 (en) 2012-02-21 2014-12-23 International Business Machines Corporation Network node with network-attached stateless security offload device employing out-of-band processing
JP5565425B2 (ja) * 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
WO2013128494A1 (en) 2012-03-02 2013-09-06 Hitachi, Ltd. Storage system and data transfer control method
US20130254457A1 (en) * 2012-03-21 2013-09-26 Lsi Corporation Methods and structure for rapid offloading of cached data in a volatile cache memory of a storage controller to a nonvolatile memory
US9513845B2 (en) 2012-03-30 2016-12-06 Violin Memory Inc. Memory module virtualization
US10019371B2 (en) 2012-04-27 2018-07-10 Hewlett Packard Enterprise Development Lp Data caching using local and remote memory
US20130318276A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US20130318280A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US9749413B2 (en) * 2012-05-29 2017-08-29 Intel Corporation Peer-to-peer interrupt signaling between devices coupled via interconnects
US20130347103A1 (en) * 2012-06-21 2013-12-26 Mark Veteikis Packet capture for error tracking
US20140089609A1 (en) * 2012-09-26 2014-03-27 Advanced Micro Devices, Inc. Interposer having embedded memory controller circuitry
US9170968B2 (en) * 2012-09-27 2015-10-27 Intel Corporation Device, system and method of multi-channel processing
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US9268716B2 (en) * 2012-10-19 2016-02-23 Yahoo! Inc. Writing data from hadoop to off grid storage
US20140157287A1 (en) * 2012-11-30 2014-06-05 Advanced Micro Devices, Inc Optimized Context Switching for Long-Running Processes
US9654406B2 (en) * 2012-12-26 2017-05-16 Realtek Singapore Pte Ltd Communication traffic processing architectures and methods
US9250954B2 (en) 2013-01-17 2016-02-02 Xockets, Inc. Offload processor modules for connection to system memory, and corresponding methods and systems
US10031820B2 (en) 2013-01-17 2018-07-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Mirroring high performance and high availablity applications across server computers
US9378161B1 (en) 2013-01-17 2016-06-28 Xockets, Inc. Full bandwidth packet handling with server systems including offload processors
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007529917A (ja) * 2004-02-20 2007-10-25 アシシュ エイ パンドヤ 分散型ネットワークセキュリティシステム及びそのためのハードウエアプロセッサ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
田邊昇ほか: "メッセージ頭部の格納場所切替によるメッセージバッファ検索の高速化", コンピュータシステム・シンポジウム論文集, vol. Vol.2007 No.14, JPN6017017095, 27 November 2007 (2007-11-27), JP, pages 125−132ページ *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022078349A (ja) * 2016-03-31 2022-05-24 日本電気株式会社 ネットワークシステムの制御方法および制御装置
JP7251671B2 (ja) 2016-03-31 2023-04-04 日本電気株式会社 ネットワークシステムの制御方法および制御装置

Also Published As

Publication number Publication date
US20140198803A1 (en) 2014-07-17
US20140201305A1 (en) 2014-07-17
US20140201408A1 (en) 2014-07-17
KR20160037828A (ko) 2016-04-06
KR20160040439A (ko) 2016-04-14
CN105765910A (zh) 2016-07-13
EP2946298A4 (en) 2016-11-16
US20140198799A1 (en) 2014-07-17
US9348638B2 (en) 2016-05-24
US20170237703A1 (en) 2017-08-17
WO2014113061A2 (en) 2014-07-24
US9436638B1 (en) 2016-09-06
EP2946298A1 (en) 2015-11-25
US9436639B1 (en) 2016-09-06
US20140201404A1 (en) 2014-07-17
WO2014113055A1 (en) 2014-07-24
EP2946528A4 (en) 2016-08-24
US20140201461A1 (en) 2014-07-17
US9250954B2 (en) 2016-02-02
EP2946296A1 (en) 2015-11-25
EP2946528A2 (en) 2015-11-25
WO2014113062A3 (en) 2015-06-25
US20140198653A1 (en) 2014-07-17
WO2014113059A1 (en) 2014-07-24
JP2016503934A (ja) 2016-02-08
US20140201409A1 (en) 2014-07-17
US20140201416A1 (en) 2014-07-17
US20140201303A1 (en) 2014-07-17
US9288101B1 (en) 2016-03-15
US9436640B1 (en) 2016-09-06
US20140201761A1 (en) 2014-07-17
US20140201309A1 (en) 2014-07-17
US20140201402A1 (en) 2014-07-17
US20140201417A1 (en) 2014-07-17
US20140201304A1 (en) 2014-07-17
US20140198652A1 (en) 2014-07-17
US20140201390A1 (en) 2014-07-17
WO2014113063A1 (en) 2014-07-24
WO2014113062A2 (en) 2014-07-24
EP2946296A4 (en) 2016-11-16
US9460031B1 (en) 2016-10-04
CN105874441A (zh) 2016-08-17
WO2014113056A1 (en) 2014-07-24
WO2014113061A3 (en) 2015-06-18
US20140201453A1 (en) 2014-07-17
US20140201310A1 (en) 2014-07-17
KR20160037827A (ko) 2016-04-06
US10649924B2 (en) 2020-05-12

Similar Documents

Publication Publication Date Title
JP2016503933A (ja) スケジューリングシステム、パケット処理をスケジューリングする方法及びモジュール
US10212092B2 (en) Architectures and methods for processing data in parallel using offload processing modules insertable into servers
US9378161B1 (en) Full bandwidth packet handling with server systems including offload processors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170420

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170516

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171206