JP2016503934A - コンテキスト切換キャッシュシステム及びコンテキスト切換方法 - Google Patents

コンテキスト切換キャッシュシステム及びコンテキスト切換方法 Download PDF

Info

Publication number
JP2016503934A
JP2016503934A JP2015553712A JP2015553712A JP2016503934A JP 2016503934 A JP2016503934 A JP 2016503934A JP 2015553712 A JP2015553712 A JP 2015553712A JP 2015553712 A JP2015553712 A JP 2015553712A JP 2016503934 A JP2016503934 A JP 2016503934A
Authority
JP
Japan
Prior art keywords
cache
memory
context
offload
session
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
JP2015553712A
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 JP2016503934A publication Critical patent/JP2016503934A/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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)

Abstract

【課題】全体的なシステム性能を著しく向上させ、サーバ又は他のデータのためのハードウェア及びパワー要求を低減するように改良されたコンテキスト切換キャッシュシステム及びコンテキスト切換方法を提供する。【解決手段】コンテキスト切換キャッシュシステムは、メモリバスに接続され、それぞれが関連するキャッシュ状態のキャッシュを有する複数のオフロードプロセッサと、オフロードプロセッサに接続されたコンテキストメモリと、オフロードプロセッサの少なくとも1つとコンテキストメモリとの間でキャッシュ状態の転送を指示するように構成されたスケジューリング回路とを備える。【選択図】図1

Description

本発明は、メモリバスに接続されたモジュールを含むコンピュータシステムのための、オフロードプロセッサによる確定的(deterministic)なコンテキスト切換キャッシュシステム及びコンテキスト切換方法に関する。
コンテキスト切換(プロセス切換又はタスク切換とも呼ばれる。)は、1つのプロセス又はスレッドの実行から他のプロセス又はスレッドの実行にプロセッサを切り換えることを意味する。コンテキスト切換の間、プロセスの状態(コンテキスト)は、メモリに保存され、これにより、後に同じポイントから実行を再開できる。これによって、複数のプロセスが単一のプロセッサを共有し、マルチタスキングオペレーティングシステムをサポートすることができる。
一般的に、プロセスは、実行中又は動作中のプログラムのインスタンスであり、プロセスは並列的に動作でき、その親プロセスと共にアドレス領域(すなわち、様々なメモリ位置)及び他のリソースを共有することができる。コンテキストは、通常、特定の時刻におけるプロセッサのレジスタ及びプログラムカウンタのコンテンツを含む。オペレーティングシステムは、第1のプロセスの実行を中断させ、そのプロセスのコンテキストをメモリに保存し、次に第2のプロセスのコンテキストをメモリから読み出し、プロセッサのレジスタにおいてこのコンテキストを復元することができる。第2のプロセスを終了又は中断した後、第1のプロセスのコンテキストを再ロードして、第1のプロセスの実行を再開することができる。
しかしながら、コンテキスト切換は、演算負荷が大きい。コンテキスト切換は、かなりの処理時間を必要とすることがあり、この時間は、1秒あたり数十回から数百回行われるコンテキスト切換毎に数ナノ秒の桁の時間を要することがある。現代のプロセッサは、数百又は数千の個別のプロセスを扱うことがあるため、コンテキスト切換に費やされる時間は、プロセッサ時間に関してシステムの大きなコストとなるという問題がある。
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、全体的なシステム性能を著しく向上させ、サーバ又は他のデータのためのハードウェア及びパワー要求を低減するように改良されたコンテキスト切換キャッシュシステム及びコンテキスト切換方法を提供することにある。
システムにおけるプロセッサのコンテキスト切換のためのシステム、ハードウェア及び方法の実施形態を開示する。実施形態は、それぞれがメモリバスに接続された複数のオフロードプロセッサを含むことができ、各オフロードプロセッサは、関連するキャッシュ状態のキャッシュを有する。複数のオフロードプロセッサには、メモリバスを介して低遅延メモリを接続でき、スケジューリング回路を用いて、オフロードプロセッサの少なくとも1つから低遅延メモリにキャッシュ状態を保存させ、後にメモリバスを介してオフロードプロセッサの少なくとも1つにキャッシュ状態を転送する。
ARM(登録商標)アーキテクチャプロセッサの使用に関連する実施形態では、複数のオフロードプロセッサは、改善された速度でキャッシュ状態にアクセスするためにアクセラレータコヒーレントポート(accelerator coherency port)を有していてもよい。他の実施形態では、以下に限定されるものではないが、共通モジュールは、オフロードプロセッサ、低遅延メモリ及びスケジューリング回路をサポートし、デュアルインラインメモリモジュール(dual in line memory module:DIMM)ソケットを含むメモリソケット仲介接続を介して、外部ネットワークパケットへのアクセスを提供する。
幾つかの実施形態では、関連するキャッシュ状態は、レジスタ保存領域に保存されるプロセッサレジスタの状態、実行されるパイプライン内の命令、スタックポインタ及びプログラムカウンタ、セッションによる実行を待機するプリフェッチされた命令及びデータ、並びに直近にキャッシュに書き込まれたデータの1つを含む。システムは、更に、複数のオフロードプロセッサの少なくとも1つで動作するオペレーティングシステム(operating system:OS)を含むことができる。
OS及びスケジューリング回路は、協働して、セッションコンテキストをキャッシュ内で物理的に連続させる。セッション初期化に応じて、セッションカラー、サイズ及び開始物理アドレスをスケジューラ回路に通信でき、及びメモリアロケータを用いて、各セッションの開始アドレス、キャッシュ内で許容されるセッションの数、所与のカラーについてセッションを検索できる位置の数を決定できる。
幾つかの実施形態では、複数のオフロードプロセッサの1つによって保存されたキャッシュ状態を他のオフロードプロセッサに転送することができる。特定のアプリケーションでは、スケジューリング回路は、オフロードプロセッサの1つに関連する第1のセッションを停止し、オフロードプロセッサのキャッシュ状態を保存し、第2のキューに入れられているネットワークパケットの処理を開始することによってメモリバスを介して受け取った第1のキュー内のネットワークパケットの処理を優先させることができる。
また、実施形態は、メモリバスを介して複数のオフロードプロセッサに接続された低遅延メモリを使用する、それぞれがメモリバスに接続された複数のオフロードプロセッサのコンテキスト切換方法を含むことができる。コンテキスト切換方法は、スケジューリング回路の動作によって、複数のオフロードプロセッサの少なくとも1つのキャッシュから低遅延メモリへのバルク読出によって、キャッシュ状態の仮想メモリ位置及び物理メモリ位置を揃えて、キャッシュ状態を保存することを指示するステップを含む。
次に、スケジューリング回路の動作によって、オフロードプロセッサの少なくとも1つに、処理のためにキャッシュ状態を転送することを指示する。上述した構造的な実施形態と同様に、共通モジュールは、オフロードプロセッサ、低遅延メモリ及びスケジューリング回路をサポートし、DIMMソケット又は他のメモリソケット接続を介して、外部ネットワークパケットへのアクセスを提供する。
本発明によれば、全体的なシステム性能を著しく向上させ、サーバ又は他のデータのためのハードウェア及びパワー要求を低減するように改良されたコンテキスト切換キャッシュシステム及びコンテキスト切換方法を提供することができる。
実施形態に基づくコンテキスト切換を有するシステムを示す図である。 カラーリングなしで物理インデクスキャッシュ内のページ競合を示す図である。 仮想インデクスキャッシュを示す図である。 実施形態に基づき仮想的/物理的に整列されたキャッシュを示す図である。 様々な実施形態に基づく処理モジュールを示す図である。 様々な実施形態に基づく処理モジュールを示す図である。 様々な実施形態に基づく処理モジュールを示す図である。 様々な実施形態に基づく処理モジュールを示す図である。 従来のデュアルインラインメモリモジュールを示す図である。 他の実施形態に基づくシステムを示す図である。 一実施形態に基づく、コンテキスト切換能力を有する、メモリバスに接続されたオフロード処理モジュールを備えるシステムを示す図である。 特定の実施形態に基づくコンテキスト切換動作を示すフローチャートである。
以下、複数の図面を参照して様々な実施形態について説明する。これらの実施形態は、システムメモリバスに接続されたオフロードプロセッサによってコンテキストを切換えるモジュール、システム及び方法を示す。このようなオフロードプロセッサは、ホストプロセッサに加えて、システムメモリバスに接続してもよく、ホストプロセッサから独立して、システムメモリバスを介して転送されるデータに対して動作することができる。
特定の実施形態では、オフロードプロセッサは、低遅延メモリにアクセスでき、これによって、高速コンテキスト切換のためのコンテキストデータの高速書込及び高速読出が実現する。
特定の実施形態では、処理モジュールは、インラインメモリモジュール(例えば、デュアルインラインモリモジュール(dual in line memory module:DIMM))をシステムメモリバスに接続するための物理スロットに挿入することができる。
図1は、一実施形態に基づくシステム100を示している。システム100は、1つ以上のオフロードプロセッサ118、スケジューラ116及びコンテキストメモリ120を含むことができる。オフロードプロセッサ118は、キャッシュメモリに関連して動作する1つ以上のプロセッサコアを含むことができる。コンテキスト切換動作では、オフロードプロセッサ118の第1の処理タスクのコンテキストは、コンテキストメモリ120に保存でき、オフロードプロセッサ118は、新しい処理タスクを引き受けることができる。
後に、保存されたコンテキストをコンテキストメモリ120からオフロードプロセッサ118に復元し、オフロードプロセッサ118は、第1の処理タスクを再開できる。特定の実施形態では、コンテキストデータの保存及び復元は、オフロードプロセッサ118のキャッシュと、コンテキストメモリ120との間のデータ転送を含むことができる。
スケジューラ116は、受信した処理要求に基づいて、オフロードプロセッサ118のコンテキスト切換を調整できる。したがって、スケジューラ116は、オフロードプロセッサ118のためのコンテキストデータの位置と同様に、オフロードプロセッサ118の状態を知ることができ、又はここにアクセスすることができる。コンテキストデータ位置は、コンテキストメモリ120内の位置と共にプロセッサキャッシュ内の位置を含むことができる。また、スケジューラ116は、オフロードプロセッサ118の状態を追跡し又はこの状態によって更新できる。
以上のように、コンテキストメモリ120は、オフロードプロセッサ118のコンテキストデータを後に読み出せるように保存できる。コンテキストメモリ120は、オフロードプロセッサのキャッシュメモリから分離されていてもよい。幾つかの実施形態では、コンテキストメモリ120は、システム内の他のメモリと比べて低遅延のメモリであってもよく、これによって、速やかなコンテキスト保存及び読出が可能になる。幾つかの実施形態では、コンテキストメモリ120は、コンテキストデータ以外のデータを保存できる。
ここに示す特定の実施形態では、オフロードプロセッサ118、スケジューラ116及びコンテキストメモリ120は、メモリバス124に接続されたモジュール122の一部であってもよい。オフロードプロセッサ118による実行のためのデータ及び処理タスクは、メモリバス124を介して受信できる。幾つかの実施形態では、オフロードプロセッサ118とコンテキストメモリ120との間のコンテキストデータの転送は、メモリバス124を介して行われる。但し、他の実施形態では、モジュール122上の異なるデータ経路を介してこのような転送を行ってもよい。
図1に示す特定の実施形態、すなわち、システム100は、更に、第2の仮想スイッチ(以下、「第2のスイッチ」、ともいう)114、メモリコントローラ112、ホストプロセッサ110、入出力(I/O)機構108及び第1のスイッチ106を含むことができる。モジュール122上に第2のスイッチ114を設けてもよい。図1の特定のシステム100は、ネットワークパケット処理スケジューリング及びトラフィック管理を提供するが、他の実施形態では、他のタイプの処理タスクのためのコンテキスト切換動作又はこれと同様の動作を行ってもよい。
図1の特定の実施形態では、第1のスイッチ(以下、「第1の仮想スイッチ」、又は単に「スイッチ」ともいう)106は、データソース102からデータパケット104を受信し、及び/又はデータソース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のフォワーディングプレーンは、ネットワークパケットに関連するネットワークパケット又はデータフローのためのルート計算に基づいて、パケットを出力インタフェースに転送することができる。
スイッチ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ドライバを作成して、これらを定義された仮想アドレス領域に割り当てる役割を有することができる。
また、第2の仮想スイッチ114は、メモリバス109を用いて、メモリコントローラ112に接続できる。第2の仮想スイッチ114は、メモリバス109からのトラフィックを受信し、オフロードプロセッサ118への、及びオフロードプロセッサ118からのトラフィックに切換えることができる。
ここで、トラフィックとは、以下に限定されるわけではないが、プロビジョニングエージェント111によって作成され及び割り当てられた仮想デバイスへのデータフローを含んでいてもよく、このデータフローの処理は、オフロードプロセッサ118によってサポートされる。
第2の仮想スイッチ114のフォワーディングプレーンは、メモリバス109からオフロードプロセッサ118への又はオフロードプロセッサ118からメモリバス109に戻るパケットを伝送することができる。あるアプリケーションでは、ここに開示するシステムアーキテクチャは、ホストプロセッサ110への割込をゼロ又は最小限にして、オフロードプロセッサ118にネットワークパケットを直接的に通信する。
第2の仮想スイッチ114は、パケットを受信し、定義された調停及びスケジューリングスキームに基づいて、これらを分類した後に、異なるハードウェアスケジューラに配信する能力を有していてもよい。ハードウェアスケジューラ116は、パケットを受信し、1つ以上の個別のセッションで処理されるようにスケジューリングされたフローセッションに割り当てることができる。
スケジューラ116は、コンテキストの切換を含むオフロードプロセッサ118よって実行される処理タスクを制御できる。幾つかの実施形態では、スケジューラ116は、メモリバス124を介して受信されたデータに含まれるメタデータ(又はこのようなデータから導出されるメタデータ)を用いて、オフロードプロセッサ118のタスクのスケジューリング/切換を行う。また、メモリバスを介して受信されるコマンド又はフラグによるコマンドベースのスケジューラの制御を行ってもよい。
図1の特定の実施形態では、スケジューラ116を用いて、受信パケットのトラフィック管理を実現することができる。あるソースからのパケット、あるトラフィッククラスに関連するパケット、特定のアプリケーションに関するパケット又はあるソケットに供給されるパケットは、セッションフローの一部と呼ばれ、セッションメタデータを用いて分類できる。
セッションメタデータは、多くの場合、パケットの優先順位を定める基準として機能し、受信パケットは、セッションメタデータに基づいて並べ替えることができる。このパケットの並べ替えは、1つ以上のバッファで行うことができ、これらのフローのトラフィックシェイプを変更できる。
セッションメタデータに基づいて並べ替えられるセッションのパケットは、特定のトラフィック管理キューに送られ、トラフィック管理キューは、調停回路(図示せず)を用いて調停されて、出力ポートに供給される。調停回路は、これらのパケットフローをダウンストリームのパケット処理/終端リソースに直接的に供給してもよい。一実施形態では、スレッド及びキュー管理を統合し、このスレッドによって、ネットワークデータのダウンストリームリソース処理終端のスループットを向上させる。
図1に示すように、スケジューラ116に到着するデータは、オフロードプロセッサ118において終端(terminated)されるパケットデータであってもよく、又は処理、変更又は切換えられるパケットデータであってもよい。スケジューラ116は、パケットデータの検査に基づいて、受信パケットを対応するアプリケーションセッションに区分する役割を有していてもよい。スケジューラ116は、パケットを検査し、関連するパケットの特徴を特定する回路を有することができる。
幾つかの実施形態では、スケジューラ116は、ネットワークスタックの一部をオフロードし、このようなネットワークスタック処理によって生じるオーバーヘッドからオフロードプロセッサ118を解放することができる。特定の実施形態では、スケジューラ116は、TCP/トランスポートオフロード、暗号化/平文化オフロード、セグメント化及び再構築等の何れかを実行してもよく、これにより、オフロードプロセッサは、ネットワークパケットのペイロードを直接的に使用することができる。
スケジューラ116は、更に、セッションに属するパケットを特定のトラフィック管理キューに転送する能力を有することができる。スケジューラ116は、このような複数のセッションのそれぞれの汎用OSへのスケジューリングを制御することができる。各ステージにおいて実行される動作を最適化するスケジューラ116によって、汎用OSを含むステージのパイプラインに亘るセッションの持続性をサポートできる。このような動作の特定の実施形態については、後に更に詳細に説明する。
スケジューラ116は、適切な如何なる形式を有していてもよく、例えば、引用によって本願に組み込まれる、2007年8月4日に発行されたDalalによる米国特許7,760,715号(以下に、715特許と呼ぶ。)に開示されている。スケジューリング回路の全部又は一部をスケジューラとして用いてもよい。715特許は、ダウンストリーム実行リソースを考慮に入れるスケジューリング回路を開示している。これらのキュー内の各セッションフローは、出力ポートを介してダウンストリームネットワーク要素に送り出される。
スケジューラは、調停回路を用いて、複数のトラフィック管理出力キューのアクセスを調停して、有効な出力ポートに割り当てる。それぞれの出力ポートは、パケットバッファを介して、オフロードプロセッサコアの1つに接続できる。パケットバッファは、更に、ヘッダプール(header pool)及びパケットボディプール(packet body pool)を含んでいてもよい。ヘッダプールには、オフロードプロセッサ118によって処理されるパケットのヘッダのみを格納することができる。
また、処理すべきパケットのサイズが十分小さい場合、ヘッダプールは、パケットの全体を格納してもよい。パケットは、オフロードプロセッサで実行される処理の性質に応じて、ヘッダプール又はパケットボディプールに転送することができる。パケットの処理、オーバレイ、解析、フィルタリング、及び同様な他のアプリケーションでは、パケットヘッダのみをオフロードプロセッサ118に転送することが適切な場合がある。
これらの場合、パケットヘッダの処理によって、パケットボディをパケットヘッダに結合して、出力インタフェースから転送してもよく、パケットボディを削除してもよい。パケットの終端を必要とするアプリケーションでは、パケットボディ全体を転送してもよい。そして、オフロードプロセッサは、パケットを受信し、これらに対して適切なアプリケーションセッションを実行することができる。
スケジューラ116は、オフロードプロセッサ118上の異なるセッションをスケジューリングすることができ、このようなセッションを調整して、コンテキスト切換の間のオーバーヘッドを減少させる。スケジューラ116は、ラインレート速度で送信キュー間又はセッションフロー間の調停を行うだけではなく、終端されたセッション間の調停を非常に高速で行う。スケジューラ116は、オフロードプロセッサ118上のセッションのキューを管理でき、及びOS上の新しいアプリケーションセッションを呼び出す役割を有している。スケジューラ116は、OSに対し、トラフィックに基づいて、新たなセッションのためのパケットが使用可能であることを通知することができる。
また、スケジューラ116には、オフロードプロセッサ118の実行リソースの状態、実行リソース上で動作中の現在のセッション及びこのセッションに割り当てられたメモリ領域、並びにオフロードプロセッサキャッシュ内のセッションコンテキストの位置を通知できる。これにより、スケジューラ116は、実行リソースの状態を用いて、トラフィック管理及び調停判定を行うことができる。
ここに示す実施形態では、スケジューラ116は、オペレーティングシステム上のスレッド管理を受信パケットのトラフィック管理に統合することができる。ハードウェアスケジューラは、トラフィック管理キュー及びオフロードプロセッサ118上の処理エンティティを含むコンポーネントの範囲に亘ってセッションフローの持続性を維持することができる。オフロードプロセッサ118上で動作するOSは、処理中の特定のキューに、実行リソース、例えば、プロセッササイクル及びメモリを割り当てることができる。
更に、OSは、特定のキューのためにスレッド又はスレッドのグループを割り当てることができ、これによって、汎用処理要素は、キューを独立したエンティティとして取り扱うことができる。汎用(general purpose:GP)処理リソース(例えば、オフロードプロセッサリソース)上で複数のセッションを動作させ、それぞれがスケジューラ116上のキュー内の特定のセッションフローからのデータを処理することによって、スケジューラ116及びGP処理リソースを緊密に統合できる。これによって、トラフィック管理及びスケジューラ116、並びにGP処理リソースに亘って、セッション情報内に持続的な要素を導入できる。
幾つかの実施形態では、オフロードプロセッサ118のOSは、リソース間のコンテキスト切換に関連するペナルティ及びオーバーヘッドを低減するように前のOSから変更できる。これによって、ハードウェアスケジューラは、更に、キュー間のシームレスな切換を行うことができ、この結果、実行リソースがこれらを異なるセッションとして実行する。
特定の実施形態では、スケジューラ116は、トラフィック受信パケットの管理を実現することができる。あるソースからのパケット、あるトラフィッククラスに関連するパケット、特定のアプリケーションに関するパケット又はあるソケットに供給されるパケットは、セッションフローの一部と呼ばれ、セッションメタデータを用いて分類できる。
セッションメタデータは、多くの場合、パケットの優先順位を定める基準として機能でき、受信パケットは、セッションメタデータに基づいて並べ替えられる。このパケットの並べ替えは、1つ以上のバッファで行うことができ、これらのフローのトラフィックシェイプを変更できる。セッションメタデータに基づいて並べ替えられるセッションのパケットは、特定のトラフィック管理キューに送られ、トラフィック管理キューは、調停回路を用いて調停されて、出力ポートに供給される。
調停回路は、これらのパケットフローをダウンストリームのパケット処理/終端リソース(例えば、オフロードプロセッサ)に直接的に供給してもよい。一実施形態では、スレッド及びキュー管理を統合し、このスレッドによって、ネットワークデータのダウンストリームリソース処理終端のスループットを向上させる。
受信ネットワークパケット(及びフロー)のトラフィック管理、調停及びスケジューリングを行うことに加えて、スケジューラ116は、オフロードプロセッサ118のOS上の終端されたセッション間でオーバーヘッドが最小のコンテキスト切換を可能にする。
オフロードプロセッサ118上の複数のセッションの切換によって、複数のセッションを非常に高速に終端させることができる。ここに示す実施形態では、コンテキストモジュール120の動作によって速やかなコンテキスト切換を行うことができる。特定の実施形態では、効率的な低遅延コンテキストサービスのために、システム100内にコンテキストメモリ120を設けてもよい。
ここに示す特定の実施形態では、第2のスイッチ114の動作によってスケジューラ116にパケットを転送することができる。スケジューラ116は、オフロードプロセッサ118上のセッション及び新たなセッションを切り換える役割及びコンテキストメモリ120内のコンテキストの保存を開始する役割の両方を有することができる。
セッションのコンテキストは、以下に限定されるものではないが、レジスタ保存領域に保存されるプロセッサレジスタの状態、実行されるパイプライン内の命令、スタックポインタ及びプログラムカウンタ、セッションによる実行を待機するプリフェッチされた命令及びデータ、並びに直近にキャッシュに書き込まれたデータ及びオフロードプロセッサ118上で実行されるセッションを特定できる他の関連情報を含むことができる。
特定の実施形態では、セッションID、キャッシュ内のセッションインデクス及び開始物理アドレスの組合せを用いてセッションコンテキストを特定できる。
図4を用いて更に詳細に説明するように、変換スキームを用いて、仮想メモリ内のセッションの連続するページがオフロードプロセッサ118のキャッシュ内でも物理的に連続するようにできる。キャッシュ内のセッションのこの連続性によって、セッションコンテキストをバルク読出して、「コンテキストスナップショット」として、コンテキストメモリ120に保存でき、これは、オペレーティングシステム(OS)がプロセッサリソースをセッションに戻すように切換えたとき、このコンテキストメモリ120から読み込むことができる。
セッションコンテキストをコンテキストメモリ120(低遅延メモリが好ましく、したがって、システムのメインメモリより数桁速い動作能力を有するものがよい。)からシームレスにフェッチする能力によって、オフロードプロセッサ118のL2キャッシュのサイズを実質的に拡張することができる。
幾つかの実施形態では、システム100のOSは、入出力メモリ管理ユニット(input output memory management unit:IOMMU)(図示せず)において、最適化を実現し、変換ルックアサイドバッファ(translation lookaside buffer:TLB)(又は同等のルックアップ構造)によって、各セッションのコンテンツを一意的に特定することができる。このような構成によって、セッション切換の間にアドレス変換を一意的に特定し、TLBの外部にあるページテーブルキャッシュ(page table cache)に転送することができる。
ページテーブルキャッシュを使用することによって、TLBのサイズを拡張することができる。また、仮想メモリにおいて連続する位置が、物理メモリ及び物理インデクスキャッシュ(physically indexed cache)においても連続する位置にあるため、セッションを特定するために必要なアドレス変換の回数が大幅に減少する。
図1に示す特定の実施形態では、システム100は、出力セッション及びパケット終端サービスに適合させることができる。幾つかの実施形態では、ネットワークスタック処理の制御は、スケジューラ116によって実行できる。すなわち、スケジューラ116は、トラフィック管理キュー、調停回路及びネットワークスタックオフロードデバイスとして機能できる。スケジューラ116は、オフロードプロセッサ118に代わって、セッションの全体及びフロー管理を扱う役割を有することができる。
このような構成では、オフロードプロセッサ118は、セッションに関係するパケットをバッファに直接的に供給でき、このバッファからパケットデータを取り出して使用することができる。ネットワークスタックの処理は、ネットワークによって生じる割込を処理する(割込サービスルーチンを実行する)カーネルモードへの切換を回避するように最適化してもよい。これによって、可能な限り小さいオーバーヘッドでセッションのコンテキストをシームレスに切り換えるようにシステム100を最適化できる。
図1に示すように、ここに開示するシステム100では、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(登録商標)アーキテクチャ等に基づくプロセッサを含む汎用プロセッサを含むことができる。
後述するように、図1のシステムによって実行されるような処理を実行する従来のシステムは、複数の処理コア上で動作する複数のスレッド上で実行することができる。このようにタスクを複数のスレッドコンテキストに並列化することによって、スループットを高めることができる。MIPS(登録商標)等のプロセッサアーキテクチャは、1サイクルあたりのインストラクションの数を多くするために、深いインストラクションパイプラインを含んでいてもよい。
更に、マルチスレッドプログラミング環境を実現する能力によって、既存のプロセッサリソースをより効率的に利用することができる。ハードウェア上の並列実行を更に向上させるために、プロセッサアーキテクチャは、複数のプロセッサコアを含んでいてもよい。
同じタイプのコアを含むマルチコアアーキテクチャは、均質コア(homogeneous core)アーキテクチャと呼ばれ、スレッド又はプロセスを複数のコアに亘って並列化することによって、より高いインストラクションスループットを提供する。しかしながら、このような均質コアアーキテクチャでは、メモリ等の共用リソースは、少数のプロセッサで消費される。
更に他の実施形態では、ラック又は個々のサーバ上に設けられた個々のラックユニット又はブレードに接続された複数のモジュール上に複数のオフロードプロセッサ又はホストプロセッサを設けてもよい。これらは、更にクラスタ及びデータセンタにグループ化することができる。なお、これらは、空間的に、同じ建物又は同じ都市内に位置していてもよく、それぞれ異なる国にあってもよい。また、これらは、如何なるグループ化レベルを相互に接続してもよく、及び/又は公共又は個人用のクラウドインターネットに接続してもよい。
このような従来の手法では、メモリ及び入出力アクセスが大量のプロセッサオーバヘッドを引き起こすことがある。更に、上述したように、従来の汎用処理ユニットのコンテキスト切換は、演算の負荷が大きい。
したがって、プロセッサスループットを向上させるために、ネットワーク接続された複数のアプリケーションを扱うネットワーク接続された演算リソースにおいて、コンテキスト切換オーバーヘッドを低減することが望ましい。
従来のサーバ負荷は、多くの場合、例えば、HTML、ビデオ、パケットレベルサービス、セキュリティ及び分析等のライトタッチ処理であっても、複雑なトランスポート、広いメモリ帯域幅、(ランダムにアクセスされ、並列化され、高度に使用可能な)過剰な量のデータ帯域幅を必要とすることがある。更に、アイドルプロセッサが、そのピーク電力消費の50%以上を消費している。
これに対し、図1に示す実施形態又はその均等物では、「ライトタッチ」処理負荷に関連する複雑なトランスポート、広いデータ帯域幅、頻繁なランダムアクセスは、複数のオフロードプロセッサ118のプロセッサコア上で作成されるソケットアブストラクションの背後で取り扱うことができる。同時に、「ヘビータッチ」高負荷演算は、ホストプロセッサ110のプロセッサコア(例えば、x86プロセッサコア)上のソケットアブストラクションによって取り扱うことができる。
このようなソフトウェアソケットによって、ライトタッチ(例えば、ARM(登録商標))プロセッサコアと、ヘビータッチ(例えば、x86プロセッサコア)との間でこれらの負荷を自然に区分けすることができる。実施形態に基づく新しいアプリケーションレベルソケットの使用によって、オフロードプロセッサ118及びホストプロセッサ110に亘ってサーバ負荷を分散させることができる。
ここに開示する実施形態の動作を明瞭にするため、図2及び図3を参照して、従来のキャッシュスキームを説明する。仮想メモリを実装する現代のオペレーティングシステムは、プロセスのために仮想メモリ及び物理メモリの両方の割当を行い、この結果、プロセス実行の際に仮想メモリから物理メモリへの変換及び仮想的にアドレス指定されたメモリへのアクセスが行われる。
プロセスのためのメモリの管理では、仮想アドレス範囲の割当と、仮想アドレスによってマッピングされる対応する物理アドレスとの間での調整は、通常、行われない。このような調整の欠如は、プロセスが実行される際に、プロセッサキャッシュオーバヘッド及び有効性の両方に影響する。
従来のシステムでは、プロセッサは、実行中の各プロセスのために仮想メモリ内で連続するメモリページを割り当てる。また、プロセッサは、物理メモリ内のページも割り当てるが、これらは、必ずしも連続しない。2つのアドレッシングスキーム間で変換トランスレーションスキームを確立し、仮想メモリのアブストラクションが物理メモリページによって正しくサポートされることを確実にする。
プロセッサは、プロセッサの近くに設けられたキャッシュブロックを用いて、データを速やかに処理する要求を満たす。従来のキャッシュは、階層的に構成することができる。例えば、レベル1(L1)キャッシュがプロセッサに最も近く、これにL2、L3等が続く。L2は、L1のバックアップとして機能する。プロセスの物理アドレスの一部によってインデクスキャッシュについては、メモリ管理ユニット(MMU)ページのサイズを超えるアドレス範囲に亘って仮想メモリと物理メモリの割当の間に相関性が欠如していると、プロセッサキャッシュが無計画で非効率なものとなる。これによってキャッシュオーバヘッドが増大し、コンテキスト切換動作の間に遅延が生じる。
物理的にアドレス指定されるキャッシュでは、仮想メモリ内の次のページのためのキャッシュエントリが、キャッシュ内の次の連続するページに対応していないことがあり、したがって、達成される総合性能が低下することがある。例えば、図2では、仮想メモリ130の連続するページ(プロセス1のページ1,2)は、物理メモリ132内の物理アドレスが(プロセッサの)物理インデクスキャッシュ134の同じ位置を指しているため、キャッシュ内で競合している。すなわち、プロセッサキャッシュ(134)には、物理インデクスが付されており、物理メモリ132内の複数のページの複数のアドレスがプロセッサキャッシュの同じページへのインデクスを有している。
更に、複数のプロセスが共有されているキャッシュにアクセスする場合、OSがプロセスに物理メモリを割り当てる際の総合的なキャッシュ性能が考慮されていないことが多い。このような考慮がなされていないために、コンテキスト切換の間に異なるプロセス(例えば、図2におけるプロセス1及びプロセス2)がキャッシュ内でスラッシングを生じ、これによって、お互いのラインが不必要に移動し、この結果、プロセスを再開する際に不定数のキャッシュミス/フィルが生じ、又はコンテキスト切換の際のラインライトバックの数が増加する。
図3に示す他の従来の構成では、プロセスの仮想アドレスの一部によって、別の手法でプロセッサキャッシュにインデクスを付すことができる。仮想インデクスキャッシュ(virtually indexed cache)は、プロセッサの仮想アドレスのビットのセクションを用いてアクセスされる。
図3に示すように、仮想メモリ130内で連続するページは、仮想インデクス付けされたキャッシュ136内でも連続する。プロセッサキャッシュに仮想インデクスを付す際には、物理メモリ132の割当と仮想アドレスの割当との調整に注意を払う必要はない。プログラムは、仮想アドレス範囲をスイープしながら、プロセッサキャッシュ内の空間的位置の利益を享受する。このようなセットアソシアティブキャッシュ(set-associative cache)は、インデクスに対応する複数のエントリを有することができる。所与のキャッシュインデクスにマッピングされる所与のページは、特定のセット内のどこにあってもよい。
キャッシュエントリが使用できる位置が複数ある場合、セットアソシアティブキャッシュによって、プロセッサがキャッシュ内でエントリを可能な限り長く使用するように努めるため、(図2に示すように)コンテキスト切換の際にキャッシュ内にスラッシングを生じさせる問題は、ある程度軽減される。このために、キャッシュは、最低使用頻度(least recently used)アルゴリズムを採用する。
この結果、オペレーティングシステムが従う仮想アドレス指定スキームに関連する幾つかの問題が緩和されるが、キャッシュのサイズに制約が生じる。したがって、最近使用したエントリが無効にされ/フラッシュされないことを確実にするため、より大きい、マルチウェイセットアソシアティブキャッシュが必要とされる場合がある。マルチウェイセットアソシアティブキャッシュの比較回路は、並列比較に対応するために複雑になる場合があり、これによって、キャッシュに関連する回路レベルの複雑性が高まる。
従来のオペレーティングシステムの幾つかでは、仮想アドレス指定スキームに起因するキャッシュミスの問題に対処するために「ページカラーリング(page coloring)」と呼ばれるキャッシュ制御方式を採用している。プロセッサキャッシュに物理インデクスが付された場合、オペレーティングシステムは、同じカラーのキャッシュ内の位置にインデクスが付されていない物理メモリ位置を検索するように制約される。
このようなキャッシュ制御スキームの下では、オペレーティングシステムは、物理インデクスキャッシュ(physically indexed cache)内のハッシュしたインデクスに基づいて、全ての仮想アドレスについて、使用可能な物理メモリ内のページを評価する必要がある。幾つかの物理アドレスは、導出されたインデクスが同じカラーのものであるために許可されない。
したがって、物理インデクスキャッシュについて、仮想メモリ内の全てのページがカラーリングされ、対応するキャッシュ位置を特定し、次のページを物理メモリに、したがって、同じカラーのキャッシュ位置に割り当てるかを判定する。
このプロセスは、ページ毎に繰り返され、煩雑な作業となることがある。ページカラーリングによって、キャッシュ効率が向上するが、最近使用したページが上書きされないように各ページのカラーを識別する必要があるため、メモリ管理及び変換ユニット上のオーバーヘッドが増大する。これに応じて、キャッシュ内の前の仮想メモリページのカラーのインジケータを維持する必要であるので、オペレーティングシステムの複雑性のレベルが高くなる。
仮想インデクスキャッシュでは、キャッシュアクセス遅延が大きいにもかかわらず、エイリアシングが広がる問題がある。エイリアシングの場合、物理メモリの同じページにマッピングされる(異なるインデクスを有する)複数の仮想アドレスが(インデクスが異なるために)キャッシュ内の別の場所にある。ページカラーリングによって、仮想ページ及び物理ページが同じカラーを有することができ、したがって、キャッシュ内で同じセットを占める。
ページカラーリングによって、エイリアスは、キャッシュ内の同じラインと同じ上位ビット及びインデクスを共有する。これによって、エイリアシングの問題が解消される。また、ページカラーリングは、メモリ割当に制約を生じさせる。新しい物理ページをページフォールト(page fault)に割り当てる場合、メモリ管理アルゴリズムは、仮想カラーとして同じカラーのページを空きリストから選択しなければならない。システムは、仮想領域を系統的に割り当てるので、異なるプログラムのページが同じカラーを有しやすく、したがって、ある物理的カラーが他のカラーより頻度が高くなることもある。
したがって、ページカラーリングは、ページフォールトレートに影響を与えることがある。更に、幾つかの物理的カラーが優勢になると、物理アドレスによってアクセスされる2次キャッシュにおいてプログラム間でマッピング競合が生じやすくなる。このように、ここに説明した従来のページカラーリングの手法では、プロセッサが非常に大きな問題に直面する。仮想ページのそれぞれは、物理メモリ内の異なるページを占有することができ、したがって、これらは、異なるキャッシュカラーを占有するが、プロセッサは、全てのページのそれぞれのアドレス変換を保存する必要がある。
プロセスが十分大きく、各プロセスが複数の仮想ページを含む場合、ページカラーリングアルゴリズムは、非常に複雑になる。また、これによって、プロセッサの仮想メモリのページ毎に同等な物理アドレスを特定する必要があるため、TLB側でも処理が複雑になる。コンテキスト切換は、TLBエントリを無効にする傾向があるので、プロセッサは、ページウォークを行い、TLBエントリを満たす必要があり、これによって、通常のコンテキスト切換に不確定性及び遅延が追加される。
このようにして、一般的に入手可能な従来のオペレーティングシステムでは、コンテキスト切換の結果、キャッシュ内で競合が生じ、及びプロセス/スレッドが再開されたときにTLBミスが生じる。プロセス/スレッドが再開すると、スレッドのワーキングセットがキャッシュにリロードされるので、不確定の数の命令及びデータキャッシュミスが生じる(すなわち、スレッドがユーザ領域内で再開され、命令を実行すると、命令は、通常、アプリケーションデータと共に、キャッシュにロードする必要がある)。
スイッチイン(すなわち、プロセス/スレッドの再開)において、TLBマッピングは、その目的で予約されたレジスタに書き込まれている新しいスレッドのページテーブルに基づいて、完全又は部分的に無効にすることができる。スレッドが実行されると、TLBミスの結果(ハードウェア又はソフトウェアによる)ページテーブルウォークが行われ、この結果、TLBフィルの状態となる。
これらのTLBミスのそれぞれは、例外(例えば、ページテーブルウォークを実行する際にメモリアクセスによって生成されるオーバーヘッド並びにページテーブルがキャッシュにない場合、関連するキャッシュミス/メモリ負荷)に起因するパイプラインストール(pipeline stall)を含むハードウェアコストを有する。
これらのコストは、プロセッサ内で、プロセスの連続するラン間で行われている処理に依存し、したがって、固定されたコストではない。更に、これらの追加的な遅延がコンテキスト切換のコストに加えられ、プロセスの実行の効率が低下する。このように、以上で説明したキャッシュ制御方式は、処理時間、メモリ要求又は他のオペレーティングシステムが制御するリソースに関して不確定(non-deterministic)であり、システム動作の全体的な効率を低下させている。
図4は、実施形態に基づくキャッシュ制御システムを示している。キャッシュ制御システムでは、セッションコンテンツは、物理インデクスキャッシュ134’内で連続することができる。この実施形態は、変換スキームを用いて、仮想メモリ130内のセッションの連続するページが物理インデクスキャッシュ134内でも物理的に連続するようにできる。
上述した不確定的なキャッシュ制御方式に比べて、少なくともコンテキスト切換動作の継続時間を確定的にすることができる。この実施形態では、前のプロセスのコンテキストを新しいプロセスのコンテキストに置き換えることは、図1のコンテキストメモリ120等の外部の低遅延メモリから新しいプロセスのコンテキストを転送することを含む。
コンテキスト切換のプロセスにおいて、(アクセスによって大きな遅延が生じる可能性がある場合)システムのメインメモリへのアクセスを回避できる。プロセスコンテキストは、コンテキストメモリ120(これは、低遅延メモリであってもよい。)からプリフェッチされる。
他のコンテキスト切換に必要である場合、プロセスコンテキストは、再びコンテキストメモリ120に保存してもよい。このようにして、サイクル数及び実行する必要がある動作の数によってコンテキスト切換動作を定義できるので、確定的なコンテキスト切換を達成することができる。更に低遅延メモリを用いて、コンテキストデータを保存することによって、速やかなコンテキスト切換を行うことができる。
図5〜図10は、上述したコンテキスト切換を含むことができるモジュールのハードウェアによる実施形態の側面を示している。特定の実施形態では、このような処理モジュールは、DIMM搭載可能モジュールを含むことができる。
図5は、一実施形態に基づく処理モジュール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読出)ことができる。
調停ロジック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は、オフロードプロセッサ208が実行する処理タスクを制御できる。
幾つかの実施形態では、制御ロジック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)として実現することができる。なお、図5に示す様々なコンポーネントは、同じ又は異なるICで構成してもよい。例えば、制御ロジック212、メモリインタフェース204及び/又は調停ロジック206を1つ以上のロジックIC上で実現してもよく、オフロードプロセッサ208及びローカルメモリ210は、独立したICであってもよい。ロジックICは、固定ロジック(例えば、特定用途向けIC)であってもよく、プログラマブルロジック(例えば、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA))であってもよく、これらの組合せであってもよい。
以上のハードウェア及びシステムは、従来のコンピュータシステムに比べて、演算性能が向上するという利点を有する。x86プロセッサに基づくシステムを含む従来のシステムは、このような高ボリュームアプリケーションに対応する性能が不十分であることも多い。x86プロセッサは、アイドリング状態であってもかなりの量の電力を消費し、広帯域パケット解析又は他の高ボリューム処理タスクのための略々連続的な動作によって、プロセッサエネルギコストが主要なプライス要素となる。
更に、従来のシステムは、コンテキスト切換のコストが高いという問題を有し、ホストプロセッサが実行する必要がある命令は、1つのスレッドから他のスレッドへの切換えを含み得る。このような切換は、スレッドのためにコンテキストを保存し及び復元する必要が生じる。このようなコンテキストデータがホストキャッシュメモリにある場合、このようなコンテキスト切換は、比較的高速に行うことができる。一方、このようなコンテキストデータがキャッシュメモリにない場合(すなわち、キャッシュミス)、システムメモリからデータを読み込む必要があり、これによって、数サイクル分の遅延が生じることがある。コンテキスト切換の間にキャッシュミスが連続すると、システム性能が低下する場合がある。
図6は、従来の多くのサーバシステムで生じる高ボリューム処理又はコンテキスト切換に関連する問題を低減できる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に含まれていないロジック機能を提供できる。
図7は、他の特定の実施形態に基づく処理モジュール200−2を示している。処理モジュール200−2は、図6と同様のPCBタイプ基板222に搭載されるIC220−2,−3,−4,−5を含むことができる。但し、図6とは異なり、処理モジュール機能は、複数の単目的タイプのICに亘って分散されている。IC220−2は、プロセッサICであってもよく、オフロードプロセッサ208であってもよい。
IC220−3は、メモリICであってもよく、ローカルメモリ210、バッファメモリ又はこれらの組合せを含んでいてもよい。IC220−4は、ロジックICであってもよく、制御ロジック212を含んでいてもよく、特定の実施形態では、FPGAであってもよい。IC220−5は、他のロジックICであってもよく、メモリインタフェース204及び調停ロジック206を含んでいてもよく、特定の実施形態では、これも、FPGAであってもよい。
なお、図6及び図7は、様々な具体例のうちの2つを例示しているに過ぎない。単一SoCタイプICを含む適切な如何なる数のICに亘って、処理モジュールの様々な機能を分散させてもよい。
図8は、特定の実施形態に基づく処理モジュール200−1又は処理モジュール200−2の反対面を示している。処理モジュール200−3は、図6と同様に、PCBタイプ基板222に搭載された、1つを220−6として示す複数のメモリICを含むことができる。なお、ここに示す反対面には、様々な処理及びロジックコンポーネントを搭載できる。メモリIC220−6は、システムの物理メモリ領域の一部を表すように構成してもよい。
メモリIC220−6は、他の処理モジュールコンポーネントから独立して、従来の手法でアクセスされるシステムメモリを提供し、他の処理モジュールコンポーネントが処理できる書込データを保存するバッファメモリとして機能し、又はプロセッサコンテキスト情報を保存するローカルメモリとして機能する等の機能の何れか又は全てを実行できる。
図9は、上述した処理モジュール又はその均等物と共にメモリバスに接続される(メモリ機能のみを提供する)従来のDIMMモジュールを示している。
図10は、一実施形態に基づくシステム230を示している。システム230は、(1つを226として示す)複数のインラインモジュールスロットを介してアクセス可能なシステムメモリバス228を含むことができる。実施形態においては、スロット226の何れか又は全てには、上述した処理モジュール200又はその均等物を挿入してもよい。全てのスロット226に処理モジュール200を挿入しない場合、使用可能なスロットには、従来のインラインメモリモジュール224を挿入してもよい。特定の実施形態では、スロット226は、DIMMスロットであってもよい。
幾つかの実施形態では、処理モジュール200は、1つのスロットに挿入してもよい。また、他の実施形態では、処理モジュールは、複数のスロットを占有してもよい。
更に、幾つかの実施形態では、システムメモリバス228に1つ以上のホストプロセッサ及び/又は入出力デバイス(図示せず)を接続してもよい。
以上、様々な実施形態に基づく処理モジュールについて説明したが、以下では、特定の実施形態に基づく、メモリバスを介してサーバ又は同様のシステムに接続することができるオフロード処理モジュールの動作について説明する。
図11は、実施形態に基づき、オフロードプロセッサにおいてコンテキスト切換を実行できるシステム301を示している。この具体例では、システム301は、モジュール上に配置されている(1つを300として示す)1つ以上の演算ユニットにパケットデータを転送でき、このモジュールは、特定の実施形態では、既存のメモリモジュールと互換性があるコネクタを含むことができる。
幾つかの実施形態では、演算ユニット300は、この実施形態に説明する処理モジュール又はその均等物を含むことができる。演算ユニット300は、メモリバス(「システムバス」又は「システムメモリバス」ともいう)316を介して伝送されるパケットを捕捉し又はアクセスすることができ、このようなパケットに対し、以下に限定されるものではないが、終端又はメタデータ処理を含む処理を施すことができる。システムメモリバス316は、上述したシステムメモリバス(例えば、228)又はその均等物であってもよい。
図11に示すように、システム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は、ホストバス(例えば、PCIeバス)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スレーブインタフェース(以下、「DMAスレーブデバイスモジュール」、「DMAスレーブモジュール」又は「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)」動作を扱う能力がある他の如何なるプロセッサであってもよく、好ましくは、オフロードプロセッサは、汎用オペレーティングシステムを動作させ、複数のセッションを実行することができ、これらのセッションは、ハードウェアスケジューラによって、コンテキスト切換オーバーヘッドを低減するように最適化されて動作する。
図11に示すように、実際の動作では、システム301は、ネットワークインタフェースを介して外部ネットワークからパケットを受信することができる。パケットは、分類ロジック及び入出力デバイス302が採用するスキームに基づいて、ホストプロセッサ306c又はオフロードプロセッサ308iの何れかに宛てられる。
特定の実施形態では、入出力デバイス302は、仮想化されたNICとして動作することができ、特定の論理ネットワークのためのパケット又はある仮想MAC(virtual MAC:VMAC)アドレスへのパケットは、個別のキューに入れられ、宛先論理エンティティに送ることができる。このような構成では、パケットを異なるエンティティに転送することができる。幾つかの実施形態では、このようなエンティティのそれぞれは、仮想ドライバを有することができ、仮想デバイスモデルを用いて、接続された仮想ネットワークと通信することができる。
幾つかの実施形態では、複数のデバイスを用いて、トラフィックを特定のメモリアドレスに向け直す(redirect)ことができる。したがって、ネットワークデバイスのそれぞれは、論理エンティティのメモリ位置にパケットを転送しているかのように動作する。しかしながら、実際には、このようなパケットは、1つ以上のオフロードプロセッサ(例えば、308i)が処理できるメモリアドレスに転送されている。特定の実施形態では、このような転送は、物理メモリアドレスに宛てられ、したがって、処理から論理エンティティを取り除くことができ、ホストプロセッサは、このようなパケット処理から解放される。
したがって、実施形態は、特定のネットワークデータを供給できるメモリ「ブラックボックス(black box)」を提供するものと概念化できる。このようなメモリブラックボックスは、データを取り扱い(例えば、データを処理し)、要求に応じて、このようなデータを返す。
図11に示すように、幾つかの実施形態では、入出力デバイス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ドライバ(仮想入出力デバイスとインタラクトするドライバ)が特定のタイプの物理デバイスとインタラクトしているように錯覚させてもよい。
例えば、任意のデバイスモジュールを用いてインテル(Intel:登録商標)イーサネット(登録商標)集中型ネットワークアダプタ(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)によってデスクリプタキューに入出力デスクリプタを書き込み、入出力デスクリプタは、キューエントリが追加される都度、動的に変更される。また、データ構造は、他のタイプのものであってもよく、以下に限定されるものではないが、リング構造(DMAリングバッファ)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動作を実行するようにしてもよい。
図11に示すように、特定の実施形態では、演算ユニット300の一部は、1つ以上のFPGAによって実現することができる。図11のシステムにおいては、演算ユニット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は、異なるリクエスタに制御を移すことができ、このサイクルは、適用可能な全てのリクエスタについて繰り返される。図11の実施形態では、調停器310fは、演算ユニット300(例えば、308)の他の部分に受信データを通知できる。
これに代えて、演算ユニット300は、2010年10月12日に発行された米国特許7,813,283号に開示されている調停スキーム(arbitration scheme)を使用してもよく、この文献の全体は、引用によって本願に援用される。幾つかの実施形態では、当分野で周知の他の適切な調停スキームを適用してもよい。これに代えて、本発明の調停スキームは、OpenFlowスイッチ及びOpenFlowコントローラを用いて実現してもよい。
図11に示す特定の実施形態では、演算ユニット300は、更に、通知/プリフェッチ回路310cを備えていてもよく、通知/プリフェッチ回路310cは、DMAスレーブモジュール310aに応答して、及び調停器310fの調停に基づき、バッファメモリ310bに保存されているデータをプリフェッチすることができる。更に、調停器310fは、メモリマッピングされた入出力受入経路310e及び送出経路310gを介して、演算ユニット300の他の部分にアクセスできる。
図11に示すように、ハードウェアスケジューラは、受信パケットのトラフィック管理を実現するスケジューリング回路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等のダウンストリームのリソースのサービス契約を実現する調停スキームを含むことができ、これは、シームレスに強制することができる。
図11に示すように、この実施形態に基づくハードウェアスケジューラ又はその均等物は、セッションメタデータに基づいて、受信パケットデータをセッションフローに分類することができる。また、ハードウェアスケジューラ又はその均等物は、調停の前に、これらのフローのトラフィック管理を行い、オフロードプロセッサにおける別個の処理エンティティとしてキューに入れることができる。
幾つかの実施形態では、オフロードプロセッサ(例えば、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))。
そして、OSは、セッション初期化の際に、セッションのカラー、サイズ及び開始物理アドレスをスケジューラ回路に通信する。実際のコンテキスト切換の間、スケジューラ回路は、これらのパラメータを用いてキャッシュ内でセッションコンテキストを特定でき、外部の低遅延メモリ(例えば、308g)へのこれらのコンテンツのバルク転送を開始する。
更に、スケジューラ回路は、コンテキストがローカルメモリ308gに保存されると、以前のセッションのプリフェッチを管理できる。特定の実施形態では、ローカルメモリ308gは、低遅延動的ランダムアクセスメモリ(reduced latency dynamic random access memory:RLDRAM(登録商標))等の低遅延メモリであってもよい。したがって、幾つかの実施形態では、キャッシュ内でセッションコンテキストを一意的に特定できる。
幾つかの実施形態では、高速切換速度を確実にするためにコンテキストサイズを制限してもよい。これに加えて又はこれに代えて、実施形態は、セッションコンテキストをローカルメモリ308gに転送するバルク転送メカニズムを含んでいてもよい。
そして、前のセッションに戻るコンテキスト切換の間、ここに保存されているキャッシュコンテンツを読み出し及びプリフェッチすることができる。高速検索のために、ローカルメモリ308g内で異なるコンテキストセッションデータにタグ及び/又は識別情報を付与してもよい。上述のように、1つのオフロードプロセッサによって保存されたコンテキストを、異なるオフロードプロセッサが呼び出すこともできる。
図11の特定の実施形態では、複数のオフロード処理コアを演算FPGA308に統合できる。他のFPGA310内の調停装置回路によって複数の演算FPGAを調停してもよい。演算FPGA(例えば、308)及び調停器FPGA(例えば、310)の組合せは、「XIMM」モジュール又は「Xockets DIMMモジュール」(例えば、演算ユニット300)と呼ばれる。特定のアプリケーションでは、これらのXIMMモジュールは、オフロードプロセッサ上の複数のセッションの実行を仲介する統合トラフィック及びスレッド管理回路を提供できる。
また、図11は、オフロードプロセッサトンネル接続308k、メモリインタフェース308m及びポート308l(アクセラレータコヒーレントポート(accelerator coherency port:ACP)であってもよい。)を示している。メモリインタフェース308mは、バッファメモリ308aにアクセスできる。
幾つかの実施形態では、システム301は、オフロードプロセッサ308iのキャッシュコンテンツにアクセスするためのアクセスユニット(又は「スヌーピング(snooping)」ユニット)308lを有していてもよい。
特定の実施形態では、アクセスされるキャッシュは、L2キャッシュであってもよい。アクセスユニット308lは、外部の非キャッシュメモリ308gからオフロードプロセッサキャッシュにデータをロードし、オフロードプロセッサ308iのキャッシュコンテンツを非キャッシュメモリ308gに転送するポート又は他のアクセス能力を提供できる。演算要素300の一部として、複数のメモリデバイス(例えば、RAM)によってメモリ308gを構成してもよい。したがって、メモリ308gを用いて、セッションのキャッシュコンテンツを保存することができる。
メモリ308gは、1つ以上の低遅延メモリを含むことができ、使用可能なL2キャッシュの補足及び/又は拡張として概念化でき、セッションのコヒーレント領域を拡張する。追加的メモリ308g及びアクセスユニット308lは、セッションのコンテキストをオフロードプロセッサキャッシュにフェッチ及びプリフェッチし、スレッドが再開したとき、以前のワーキングセットの大部分が既にキャッシュ内に存在するようにすることによって、セッション切換におけるキャッシュミスの悪影響を減少させることができる。
1つの特定の実施形態では、セッションのスイッチアウト時に、トンネル308kを介して、オフロードプロセッサ308iのキャッシュコンテンツをメモリ308gに転送することができる。
但し、幾つかの実施形態では、スイッチアウトの一部としてスレッドのレジスタセットをメモリに保存し、これらのレジスタコンテンツをキャッシュ内に残すことができる。したがって、スイッチインの一部としてセッションのコンテンツがプリフェッチされ、オフロードプロセッサ308iのキャッシュに転送されるので、スレッドの再開時にカーネルによってレジスタコンテンツをロードでき、これらのロードは、メモリ308gからではなく、キャッシュから行うことができる。
このように、セッションのキャッシュコンテンツを慎重に管理することによって、レジスタセットの保存及び復元に起因するコンテキスト切換のコスト並びにスイッチインの際のキャッシュミスを大幅に低減でき、最適な場合、これらをゼロにすることができ、この結果、コンテキスト切換オーバーヘッドの2つのソースを排除し、スイッチインセッションにおける有効な処理を再開するための遅延を短縮することができる。
幾つかの実施形態では、アクセス(又はスヌーピング)ユニット(例えば、308l)は、関連するセッションコンテキストが存在するキャッシュ内の全てのラインのインデクスを有することができる。セッションが物理インデクスキャッシュ内の複数の位置に亘って分散されている場合、同じセッションの複数のページにアクセスするために複数のアドレス変換が必要となるため、セッションコンテンツの全てにアクセスすることが煩雑になることがある。
したがって、幾つかの実施形態は、セッションコンテンツが物理インデクスキャッシュ内で連続するページカラーリング方式を含む。セッションデータのためのメモリアロケータは、物理的に連続するページから割当を行い、これにより、セッションのための物理アドレス範囲が制御される。
幾つかの実施形態では、これは、仮想メモリページと、物理メモリページとを揃え、キャッシュ内の同じ位置を指すことによって行われる(例えば、図4)。他の実施形態では、仮想メモリページ及び物理メモリページは、物理インデクスキャッシュ内で同じ位置を指している必要はなく、開始インデクス及びキャッシュ内のエントリのサイズに関する知識が全てのセッションデータにアクセスするために十分であれば、セッションの異なるページが物理メモリ内で連続していてもよい。
更に、セットサイズは、セッションのサイズに等しく、これにより、キャッシュ内のセッションエントリのインデクスが既知になると、インデクス、サイズ及びセットカラーを用いて、セッションコンテンツをキャッシュから外部メモリ(例えば、308g)に完全に転送することができる。
幾つかの実施形態では、オフロードプロセッサのキャッシュ内でセッションの全てのページに同じカラーを割り当てることができる。特定の実施形態では、セッションの全てのページが定義されたカラーのページ境界で開始するようにしてもよい。カラーに割り当てられるページ数は、キャッシュ内のセッションのサイズに基づいて固定できる。
オフロードプロセッサ(例えば、308i)を用いて、特定のタイプのセッションを実行することができ、各セッションのサイズをオフロードプロセッサに事前に通知してもよい。これに基づいて、オフロードプロセッサは、セッション境界において新たなエントリを開始できる。
オフロードプロセッサは、同様に、キャッシュ内のセッション境界にインデクスが付された物理メモリにページを割り当てることができる。キャッシュコンテキストの全体は、セッション境界から開始して保存することができる。この実施形態では、物理インデクスキャッシュにおいて、セッション内の複数のページが連続することができる。
セッションの複数のページは、同じカラーを有することができ(すなわち、これらのページは、同じセットの一部である)、連続的に位置することができる。セッションのページは、セッションのベースインデクスからのオフセットを用いてアクセス可能である。
キャッシュは、ページではなく、セッションとして個別のセットに分割してもよい。1つのセッションから他のセッションに移動する際、メモリ割当スキームは、これらのセッションにアクセスするために用いられるインデクスの最小ビットへのオフセットを用いる。例えば、物理インデクスキャッシュは、512kbのサイズのL2キャッシュであってもよい。
キャッシュは、L2キャッシュ内でセット毎に8つのタグが可能な8ウェイアソシアティブ(8-way associative)であってもよい。したがって、L2内の全てのカラー毎に8つのラインがあり、又はL2内の各カラーが8つの個別のインスタンスを有する。8Kbのセッションコンテキストサイズでは、512KbのL2キャッシュ内に8つの異なるセッション領域があり、又はこれらの選択されたサイズを有する8つのセッションカラーがある。
幾つかの実施形態では、物理メモリアロケータは、時間的に前のセッションのキャッシュエントリ/メインメモリエントリに基づいて、セッションに対応するカラーを特定できる。特定の実施形態では、物理メモリアロケータは、キャッシュエントリを前のセッションに割り当てるために用いられるアドレスの3ビットに基づいて、前のセッションを特定できる。
物理メモリアロケータは、メインメモリ位置に新たなセッションを割り当てることができ(そのカラーは、最近使用したエントリとの幾つかの比較によって決定できる。)、及び最低使用頻度(least recently used)ポリシに基づいて、異なるカラーのセッションに対応するキャッシュエントリを消去する。
他の実施例においては、オフロードプロセッサは、複数のコアを含むことができる。このような実施形態では、各プロセッサコアによる使用のためにキャッシュエントリをロックアウトできる。例えば、オフロードプロセッサが2つのコアを有する場合、カラーの数を半分にして、キャッシュ(すなわち、L2キャッシュ)内のキャッシュラインの所定のセットをプロセッサ間で分割できる。新たなセッションが生成されたとき、セッションのカラー、セッションのインデクス及びセッションサイズを外部のスケジューラに通信できる。この情報は、受信セッションフローのキュー管理のために用いることができる。
また、幾つかの実施形態では、セッションデータとは別にラインをキャッシュにロックすることによって共有テキスト及び何らかの共有データを分離できる。この場合も、物理メモリアロケータ及び物理カラーリング技術を用いることができる。個別の共有データがキャッシュ内にある場合、これをキャッシュにロックし、アクセスユニット(例えば、ACP)による転送がこのようなラインをコピーしないようにできる。セッションデータのためにメモリを割り当てる際、メモリアロケータは、キャッシュ内にあるセッションデータがマッピングされるので、物理カラーを知ることができる。
キャッシュ及びコンテキスト切換管理動作に適切な様々な実施形態について説明したが、以下では、特定の側面を示す具体例について説明する。
図12は、実施形態に基づくシステムのためのオーバーヘッドを低減するコンテキスト切換方法400を示している。最初に、セッションカラーリングが必要かを判定できる(ステップ402)。このような判定は、OSが行ってもよい。セッションカラーリングが不要である場合(ステップ402におけるNo)、OSの初期選択に応じて、ページカラーリングは、存在してもよく、しなくてもよい(ステップ424)。
セッションカラーリングが必要な場合(ステップ402におけるYes)、OSは、メモリアロケータを初期化することができる(ステップ404)。メモリアロケータは、キャッシュ最適化技術を用いて、「セッション」境界に各セッションエントリを割り当てることができる。メモリアロケータは、各セッションの開始アドレス、キャッシュ内で許容されるセッションの数、所与のカラーについてセッションを検索できる位置の数を決定できる。このような動作は、キャッシュサイズ、カラーの数及びセッションのサイズに基づいて有効なセット数を判定することを含んでもよい(ステップ406)。
セッションのためのパケットが到着すると、パケットが現在のセッションのためのものか、異なるセッションのためのものかを判定する(ステップ408)。このような動作は、OSが行うことができる。パケットが異なるセッションからのものであるである場合(ステップ408におけるYes)、パケットが以前のセッションからのものであるかを判定する(ステップ410)。パケットが以前のセッションからのものでない場合(すなわち、新たなセッションのものである場合)、新たなセッションのための十分なメモリがあるかを判定する(ステップ418)。十分な領域がある場合(ステップ418におけるYes)、新たなセッションへの切換を行うことができる(ステップ422)。
このような動作は、セッション境界において新たなセッションを割り当て、現在実行中のプロセスのコンテキストをコンテキストメモリ(外部の低遅延メモリであってもよい。)に保存することを含むことができる。
新たなセッションに使用できるキャッシュメモリがない場合(ステップ418におけるNo)、及び/又はパケットが以前のセッションのためのものである場合(ステップ410におけるYes)、古い/新しいセッションのパケットが同じカラーのものであるかを検査し、判定する(ステップ412)。これらが異なるカラーのものである場合(ステップ412におけるNo)、そのセッションへの切換を行うことができる(ステップ414)。
このような動作は、タスクのためのキャッシュエントリを(以前のセッションのために)読み出すこと又は(新たなセッションのために)作成することを含むことができる。更にこのような動作は、必要であれば、LRUスキームによるキャッシュエントリのフラッシングを含むことができる。
古い/新しいセッションのパケットが同じカラーのものである場合(ステップ412におけるYes)、カラープレッシャを超えることができるかを判定することができる(ステップ416)。カラープレッシャを超えることができる場合、又は他のカラーのセッションが使用できない場合(ステップ416のYes、又は…)、新たなセッションへの切換を行うことができる(ステップ420)。このようなアクションは、キャッシュエントリを作成し、新たなセッションカラーを記憶することを含むことができる。カラープレッシャを超えることができないが他のカラーのセッションが使用可能である場合(ステップ416におけるNo、但し…)、方法は、414に進むことができる。
なお、上述した本発明の例示的な実施形態の説明では、説明を明瞭にするため及び本発明の様々な側面の1つ以上の理解を補助するために、本発明の様々な特徴は、単一の実施形態、図又はその説明において共にグループ化されている。但し、このような開示の手法は、請求の範囲に記載されている発明が各請求項で明示している特徴以外の特徴を要求するという意図を反映しているとは解釈されない。
すなわち、特許請求の範囲は、本発明の側面が上述した実施形態の全ての特徴より少ない特徴で成立することを表している。したがって、詳細な説明に続く特許請求の範囲は、この詳細な説明にも組み込まれ、各請求項は、それ自体が本発明の個別の実施形態を表していると解釈される。
また、本発明の実施形態は、特に開示していない要素及び/又はステップを欠いた状態で実施してもよい。すなわち、要素の省略も本発明の特徴に含まれる。
したがって、ここでは、特定の実施形態の様々な側面を詳細に説明したが、本発明の精神及び範囲から逸脱することなく、実施形態の様々な変更、置換及び変形が可能である。
100,230,301 システム、102 データソース、104 データパケット、106 第1の(仮想)スイッチ、107 PCIeバス、108 入出力(I/O)機構、109 メモリバス、110 ホストプロセッサ、111 プロビジョニングエージェント(provisioning agent)、112 メモリコントローラ、114 第2の(仮想)スイッチ、116 スケジューラ、118 オフロードプロセッサ、120 コンテキストメモリ、122 モジュール、124 メモリバス、130 仮想メモリ、132 物理メモリ、134,134’ 物理インデクスキャッシュ(プロセッサキャッシュ)、136 キャッシュ、200−1/−2/−3 処理モジュール、202 (物理)コネクタ(インラインモジュールコネクタ:in-line module connector)、204 メモリインタフェース、206 調停ロジック、208 オフロードプロセッサ、210 ローカルメモリ、212 制御ロジック、214 データ評価器、216 スケジューラ、218 切換コントローラ、222 プリント回路板(PCB)タイプ基板、220−0/−1/−2/−4/−5/−6 ロジックIC、220−3 メモリIC、224 インラインメモリモジュール、226 スロット、228 システムメモリバス、300 演算ユニット、302 入出力デバイス、302a 入力バッファ(リング構造;DMAリングバッファ)、302b 入出力仮想化機能(プログラム)、304 入出力メモリ管理ユニット(input output memory management unit:IOMMU)、304a 変換ルックアサイドバッファ(translation look-aside buffer:TLB)、304b IOMMU機能、306 ホスト処理セクション、306a 中央演算処理装置入出力(central processing unit I/O :CPUIO)、306b メモリコントローラ、306c 処理コア(ホストプロセッサ)、306d プロビジョニングエージェント、308a バッファメモリ、308d セッションメタデータ、308b/c/d/e/h ハードウェアスケジューラ、308b/n スケジューラ(スケジューリング)回路、308e 分類器、308i オフロードプロセッサ/汎用プロセッサ/汎用処理要素、308j 汎用オペレーティングシステム(OS)、308g ローカルメモリ(低遅延メモリ)、308,308k オフロードプロセッサトンネル接続、308m メモリインタフェース、308g (非キャッシュ)メモリ、308l アクセラレータコヒーレントポート(accelerator coherency port:ACP)/アクセス(又はスヌーピング:snoopingユニット、310b/308a/308m オンボードメモリ、310 FPGA、310a DMAスレーブインタフェース(DMAスレーブデバイスモジュール/スレーブモジュール/デバイス)、312 ホストバス(例えば、PCIeバス)、310b バッファメモリ、310c 通知/プリフェッチ回路、310e 入出力受入経路、310g 送出経路、310f 調停器(arbiter)、314 接続(バス)、316 メモリバス(システムメモリバス/システムバス)

Claims (31)

  1. コンテキスト切換キャッシュシステムにおいて、
    メモリバスに接続され、それぞれが関連するキャッシュ状態のキャッシュを有する複数のオフロードプロセッサと、
    前記オフロードプロセッサに接続されたコンテキストメモリと、
    前記オフロードプロセッサの少なくとも1つと前記コンテキストメモリとの間でキャッシュ状態の転送を指示するように構成されたスケジューリング回路とを備えるコンテキスト切換キャッシュシステム。
  2. 前記複数のオフロードプロセッサは、キャッシュ状態にアクセスするためのアクセラレータコヒーレントポートを有する請求項1記載のコンテキスト切換キャッシュシステム。
  3. 前記関連するキャッシュ状態は、オフロードプロセッサレジスタの状態、オフロードプロセッサによる実行のための命令、スタックポインタ、プログラムカウンタ、オフロードプロセッサによる実行のためにプリフェッチされた命令、オフロードプロセッサによる使用のためのプリフェッチされたデータ及びオフロードプロセッサのキャッシュに書き込まれたデータからなるグループから選択される少なくとも1つを含む請求項1記載のコンテキスト切換キャッシュシステム。
  4. 前記オフロードプロセッサの少なくとも1つは、オペレーティングシステム(OS)を動作させるように構成され、前記スケジューリング回路は、前記OSと協働して、処理セッションのためのコンテキストが前記オフロードプロセッサの前記キャッシュ内で物理的に連続するように設定する請求項1記載のコンテキスト切換キャッシュシステム。
  5. 前記オフロードプロセッサの少なくとも1つは、オペレーティングシステム(OS)を動作させるように構成され、前記スケジューリング回路は、前記OSと協力して、処理セッションのためのコンテキストを、前記オフロードプロセッサのキャッシュ内で物理的に連続するように設定し、及び前記オフロードプロセッサのキャッシュ内で処理セッションのカラー、サイズ及び開始物理アドレスを設定する請求項1記載のコンテキスト切換キャッシュシステム。
  6. 前記オフロードプロセッサの少なくとも1つは、オペレーティングシステム(OS)を動作させるように構成され、前記スケジューリング回路は、前記OSと協力して、処理セッションのためのコンテキストを、前記オフロードプロセッサのキャッシュ内で物理的に連続するように設定し、及び前記オフロードプロセッサのキャッシュ内で処理セッションのカラー、サイズ及び開始物理アドレス、並びにキャッシュ内で許容できるセッションの数、キャッシュ内の所与のカラーについてセッションを検索できる位置の数を設定する請求項1記載のコンテキスト切換キャッシュシステム。
  7. 前記スケジューリング回路は、1つのオフロードプロセッサのキャッシュ状態を他のオフロードプロセッサのキャッシュに転送することを指示するように構成される請求項1記載のコンテキスト切換キャッシュシステム。
  8. 前記スケジューリング回路は、前記オフロードプロセッサの1つに関連する第1のセッションを停止し、前記オフロードプロセッサのキャッシュ状態を保存し、第2のキューに入れられているネットワークパケットの処理を開始することによって第1のキュー内のネットワークパケットの処理の優先順位付けを行うように構成される請求項1記載のコンテキスト切換キャッシュシステム。
  9. 前記関連するキャッシュ状態は、オフロードプロセッサレジスタの状態、オフロードプロセッサによる実行のための命令、スタックポインタ、プログラムカウンタ、オフロードプロセッサによる実行のためにプリフェッチされた命令、オフロードプロセッサによる使用のためのプリフェッチされたデータ及びオフロードプロセッサのキャッシュに書き込まれたデータからなるグループから選択される少なくとも1つを含み、
    前記オフロードプロセッサの少なくとも1つは、オペレーティングシステム(OS)を動作させるように構成され、前記スケジューリング回路は、前記OSと協力して、セッションコンテキストを、前記オフロードプロセッサのキャッシュ内で物理的に連続するように設定する請求項1記載のコンテキスト切換キャッシュシステム。
  10. 前記スケジューリング回路は、前記メモリバスを介する前記オフロードプロセッサの少なくとも1つと前記コンテキストメモリとの間のキャッシュ状態の転送を指示するように構成される請求項1記載のコンテキスト切換キャッシュシステム。
  11. 前記コンテキストメモリは、少なくとも1つの低遅延メモリデバイスを含む請求項1記載のコンテキスト切換キャッシュシステム。
  12. メモリバスを介する処理のためにデータを受信し、それぞれが関連するキャッシュ状態のキャッシュを有する複数のオフロードプロセッサのコンテキスト切換方法において、
    スケジューリング回路の動作によって、複数のオフロードプロセッサの少なくとも1つのキャッシュからコンテキストメモリへのバルク読出によって、キャッシュ状態の仮想メモリ位置及び物理メモリ位置を揃えて、キャッシュ状態を保存することを指示するステップと、
    前記スケジューリング回路の動作によって、前記オフロードプロセッサの少なくとも1つに、処理のために前記キャッシュ状態を転送することを指示するステップと、を有するコンテキスト切換方法。
  13. 前記バルク読出は、アクセラレータコヒーレントポートを介して行われる請求項12記載のコンテキスト切換方法。
  14. 前記関連するキャッシュ状態は、オフロードプロセッサレジスタの状態、オフロードプロセッサによる実行のための命令、スタックポインタ、プログラムカウンタ、オフロードプロセッサによる実行のためにプリフェッチされた命令、オフロードプロセッサによる使用のためのプリフェッチされたデータ及びオフロードプロセッサのキャッシュに書き込まれたデータからなるグループから選択される少なくとも1つを含む請求項12記載のコンテキスト切換方法。
  15. 前記キャッシュ状態は、セッションコンテキストを含み、前記オフロードプロセッサ上で動作するオペレーティングシステム(OS)と、前記スケジューリング回路とが協働して、前記オフロードプロセッサのキャッシュ内で前記セッションコンテキストが物理的に連続するようにするステップを更に有する請求項12記載のコンテキスト切換方法。
  16. 処理セッションの初期化において、処理セッションのセッションカラー、セッションサイズ及び開始物理キャッシュアドレスをスケジューリング回路に通信するステップを更に有する請求項12記載のコンテキスト切換方法。
  17. 複数の処理セッションのそれぞれの開始アドレス、オフロードプロセッサのキャッシュにおいて許容できるセッションの数、所与のカラーについてセッションを検索できる位置の数を決定するステップを更に有する請求項12記載のコンテキスト切換方法。
  18. 1つのオフロードプロセッサの1つのキャッシュ状態を他のオフロードプロセッサのキャッシュに転送するステップを更に有する請求項12記載のコンテキスト切換方法。
  19. オフロードプロセッサの1つに関連する第1のセッションを停止し、前記オフロードプロセッサのキャッシュ状態を保存し、第2のキューに入れられているネットワークパケットの処理を開始することによって、前記メモリバスを介して受信した第1のキュー内のネットワークパケットの処理の優先順位付けを行うステップを更に有する請求項12記載のコンテキスト切換方法。
  20. オフロードプロセッサによって実行される処理のセッションコンテキストが前記オフロードプロセッサのキャッシュ内で物理的に連続するように設定するステップを更に有する請求項12記載のコンテキスト切換方法。
  21. 前記キャッシュから前記コンテキストメモリへのバルク読出は、前記メモリバスを介する低遅延メモリデバイスへのバルク読出を含む請求項12記載のコンテキスト切換方法。
  22. それぞれが関連するキャッシュ状態のキャッシュを有する複数のオフロードプロセッサのコンテキスト切換方法において、
    メモリバスに接続されたソケットを介して、処理のためのネットワークパケットを受信するステップと、
    前記ネットワークパケットを処理のために複数のセッションに組織化するステップと、
    スケジューリング回路の動作によって、前記オフロードプロセッサの少なくとも1つのキャッシュ状態をコンテキストメモリに読み出すバルク読出によって、キャッシュ状態の仮想メモリ位置及び物理メモリ位置を揃えて、少なくとも1つのセッションの処理を中断させるステップと、
    前記スケジューリング回路の動作によって、前記オフロードプロセッサの少なくとも1つに、処理のために前記キャッシュ状態を転送することを指示するステップとを有するコンテキスト切換方法。
  23. 前記バルク読出は、アクセラレータコヒーレントポートを介して行われる請求項22記載のコンテキスト切換方法。
  24. 前記関連するキャッシュ状態は、オフロードプロセッサレジスタの状態、オフロードプロセッサによる実行のための命令、スタックポインタ、プログラムカウンタ、オフロードプロセッサによる実行のためにプリフェッチされた命令、オフロードプロセッサによる使用のためのプリフェッチされたデータ及びオフロードプロセッサのキャッシュに書き込まれたデータからなるグループから選択される少なくとも1つを含む請求項22記載のコンテキスト切換方法。
  25. 前記キャッシュ状態は、セッションコンテキストを含み、前記オフロードプロセッサ上で動作するオペレーティングシステム(OS)と、前記スケジューリング回路とが協働して、前記オフロードプロセッサのキャッシュ内で前記セッションコンテキストが物理的に連続するようにするステップを更に有する請求項22記載のコンテキスト切換方法。
  26. 処理セッションの初期化において、処理セッションのセッションカラー、セッションサイズ及び開始物理キャッシュアドレスをスケジューリング回路に通信するステップを更に有する請求項22記載のコンテキスト切換方法。
  27. 複数の処理セッションのそれぞれの開始アドレス、オフロードプロセッサのキャッシュにおいて許容できるセッションの数、所与のカラーについてセッションを検索できる位置の数を決定するステップを更に有する請求項22記載のコンテキスト切換方法。
  28. 1つのオフロードプロセッサの1つのキャッシュ状態を他のオフロードプロセッサのキャッシュに転送するステップを更に有する請求項22記載のコンテキスト切換方法。
  29. オフロードプロセッサの1つに関連する第1のセッションを停止し、前記オフロードプロセッサのキャッシュ状態を保存し、第2のキューに入れられているネットワークパケットの処理を開始することによって、前記メモリバスを介して受信した第1のキュー内のネットワークパケットの処理の優先順位付けを行うステップを更に有する請求項22記載のコンテキスト切換方法。
  30. 前記少なくとも1つのセッションの処理を中断させるステップは、先取りモードで動作して、セッション実行を制御するステップを含む請求項22記載のコンテキスト切換方法。
  31. 前記ネットワークパケットを受信するステップは、前記メモリバスを介して、デュアルインラインメモリモジュール(DIMM)互換ソケットを経由してネットワークパケットを受信するステップを含む請求項22記載のコンテキスト切換方法。
JP2015553712A 2013-01-17 2013-06-26 コンテキスト切換キャッシュシステム及びコンテキスト切換方法 Pending JP2016503934A (ja)

Applications Claiming Priority (19)

Application Number Priority Date Filing Date Title
US201361753903P 2013-01-17 2013-01-17
US201361753906P 2013-01-17 2013-01-17
US201361753901P 2013-01-17 2013-01-17
US201361753899P 2013-01-17 2013-01-17
US201361753892P 2013-01-17 2013-01-17
US201361753895P 2013-01-17 2013-01-17
US201361753904P 2013-01-17 2013-01-17
US201361753910P 2013-01-17 2013-01-17
US201361753907P 2013-01-17 2013-01-17
US61/753,904 2013-01-17
US61/753,895 2013-01-17
US61/753,899 2013-01-17
US61/753,903 2013-01-17
US61/753,907 2013-01-17
US61/753,892 2013-01-17
US61/753,906 2013-01-17
US61/753,910 2013-01-17
US61/753,901 2013-01-17
PCT/US2013/048013 WO2014113063A1 (en) 2013-01-17 2013-06-26 Context switching with offload processors

Publications (1)

Publication Number Publication Date
JP2016503934A true JP2016503934A (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 Before (1)

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

Country Status (6)

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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018159365A1 (ja) * 2017-03-02 2018-09-07 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
WO2020046527A1 (en) * 2018-08-30 2020-03-05 Micron Technology, Inc Forward caching application programming interface systems and methods
JP2021503126A (ja) * 2017-11-14 2021-02-04 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリ・ポインタを変更することによるコンテキスト切り替えを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法
US11579806B2 (en) 2017-11-14 2023-02-14 International Business Machines Corporation Portions of configuration state registers in-memory

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2341431A1 (en) 2004-03-13 2011-07-06 Adaptive Computing Enterprises, Inc. System and method of providing a self-optimizing reservation in space of compute resources
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP1872249B1 (en) 2005-04-07 2016-12-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
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 鸿富锦精密工业(深圳)有限公司 主板及应用于该主板的数据处理方法
WO2013177313A2 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Processing structured and unstructured data using offload processors
US9558351B2 (en) 2012-05-22 2017-01-31 Xockets, Inc. Processing structured and unstructured data using offload processors
US11132277B2 (en) * 2012-12-28 2021-09-28 Iii Holdings 2, Llc System and method for continuous low-overhead monitoring of distributed applications running on a cluster of data processing nodes
WO2014113055A1 (en) 2013-01-17 2014-07-24 Xockets IP, LLC Offload processor modules for connection to system memory
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
US9785558B2 (en) * 2013-10-29 2017-10-10 Hua Zhong University Of Science Technology Mixed cache management
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
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
US9354794B2 (en) 2014-07-07 2016-05-31 Google Inc. Method and system for performing client-side zooming of a remote video feed
US9501915B1 (en) 2014-07-07 2016-11-22 Google Inc. Systems and methods for analyzing a video stream
US9449229B1 (en) 2014-07-07 2016-09-20 Google Inc. Systems and methods for categorizing motion event candidates
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
US9864636B1 (en) * 2014-12-10 2018-01-09 Amazon Technologies, Inc. Allocating processor resources based on a service-level agreement
US9491112B1 (en) 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
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
CN106326140B (zh) * 2015-06-30 2020-06-02 华为技术有限公司 数据拷贝方法、直接内存访问控制器及计算机系统
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
CN108885566B (zh) * 2016-03-31 2022-10-28 日本电气株式会社 网络系统中的控制方法、控制设备以及服务器
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
US10334334B2 (en) 2016-07-22 2019-06-25 Intel Corporation Storage sled and techniques for 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
US10277636B2 (en) 2016-09-08 2019-04-30 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
US10554554B2 (en) * 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
US10826841B2 (en) * 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
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
US10686729B2 (en) 2017-03-29 2020-06-16 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 佛山市顺德区顺达电脑厂有限公司 服务器机柜系统及其讯号传输频率调整方法
WO2019014265A1 (en) * 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR CALCULATION NODES AND STORAGE NODES
WO2019014268A1 (en) 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR FLOW PROCESSING
CN109426556B (zh) * 2017-08-31 2021-06-04 大唐移动通信设备有限公司 一种进程调度方法和装置
CN107741867B (zh) * 2017-09-30 2020-03-10 Oppo广东移动通信有限公司 应用程序管理方法、装置、存储介质及电子设备
US20190171601A1 (en) 2017-12-03 2019-06-06 Intel Corporation Mechanisms for fpga chaining and unified fpga views to composed system hosts
US10810064B2 (en) * 2018-04-27 2020-10-20 Nasdaq Technology Ab Publish-subscribe framework for application execution
US10812315B2 (en) * 2018-06-07 2020-10-20 Cisco Technology, Inc. Cross-domain network assurance
KR102665410B1 (ko) 2018-07-30 2024-05-13 삼성전자주식회사 메모리 장치의 내부 프로세싱 동작 방법
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
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 苏州微影激光技术有限公司 一种丝网印刷版的制版装置及制版方法
EP4028883A4 (en) * 2019-09-11 2023-03-08 Intel Corporation PLANNING HARDWARE QUEUES FOR MULTI-CORE COMPUTING ENVIRONMENTS
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
US11914538B2 (en) * 2020-09-15 2024-02-27 Fujitsu Limited Semiconductor apparatus and transfer method
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
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
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
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
US12021759B2 (en) * 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11736565B2 (en) 2020-09-28 2023-08-22 Vmware, Inc. Accessing an external storage through a NIC
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
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
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
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
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
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446163B1 (en) * 1999-01-04 2002-09-03 International Business Machines Corporation Memory card with signal processing element
US20050226238A1 (en) * 2004-03-31 2005-10-13 Yatin Hoskote Hardware-based multi-threading for packet processing
US20090210616A1 (en) * 2008-02-12 2009-08-20 Vijay Karamcheti Memory modules for two-dimensional main memory
JP2011242896A (ja) * 2010-05-14 2011-12-01 Panasonic Corp 計算機システム
WO2012026877A1 (en) * 2010-08-23 2012-03-01 Empire Technology Development Llc Context switching

Family Cites Families (241)

* 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
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
KR20040048952A (ko) * 2001-10-12 2004-06-10 코닌클리케 필립스 일렉트로닉스 엔.브이. 사용자 데이터를 판독 또는 기록하는 장치 및 방법
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
US7461164B2 (en) * 2002-02-08 2008-12-02 Dsp Group Inc. Medium access control with software -and hardware- based components 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
US7415723B2 (en) * 2002-06-11 2008-08-19 Pandya Ashish A Distributed network security system and a hardware processor therefor
US7577667B2 (en) 2002-09-18 2009-08-18 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
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
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
US7380163B2 (en) * 2003-04-23 2008-05-27 Dot Hill Systems Corporation Apparatus and method for deterministically performing active-active failover of redundant servers in response to a heartbeat link failure
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
US7286436B2 (en) 2004-03-05 2007-10-23 Netlist, Inc. High-density memory module utilizing low-density memory components
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7532537B2 (en) 2004-03-05 2009-05-12 Netlist, Inc. Memory module with a circuit providing load isolation and memory domain translation
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
US7831745B1 (en) * 2004-05-25 2010-11-09 Chelsio Communications, Inc. Scalable direct memory access using validation of host and scatter gather engine (SGE) generation indications
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
CN103116565A (zh) 2005-04-21 2013-05-22 提琴存储器公司 可配置的开关原件、互连网络及布局网络间相互连接方法
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
WO2007006146A1 (en) 2005-07-12 2007-01-18 Advancedio Systems Inc. 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
US7957280B2 (en) 2006-06-16 2011-06-07 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
US8943245B2 (en) 2006-09-28 2015-01-27 Virident Systems, Inc. Non-volatile type memory modules for main memory
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
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.
CN106407136B (zh) 2007-04-12 2019-05-28 拉姆伯斯公司 具有点对点请求互连的存储器系统
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
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
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
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
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
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8787060B2 (en) 2010-11-03 2014-07-22 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US8001434B1 (en) 2008-04-14 2011-08-16 Netlist, Inc. Memory board with self-testing capability
CA2719841C (en) 2008-05-22 2016-03-22 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)
US8949838B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
US8869150B2 (en) * 2010-05-18 2014-10-21 Lsi Corporation Local messaging in a scheduling hierarchy in a traffic manager of a network processor
US8264903B1 (en) 2009-05-05 2012-09-11 Netlist, Inc. Systems and methods for refreshing a memory module
US8009682B2 (en) * 2009-05-05 2011-08-30 Citrix Systems, Inc. Systems and methods for packet steering in a multi-core architecture
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
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
US9445309B2 (en) * 2009-12-08 2016-09-13 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
WO2011087820A2 (en) 2009-12-21 2011-07-21 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
EP2553573A4 (en) 2010-03-26 2014-02-19 Virtualmetrix Inc FINANCIAL PERFORMANCE RESOURCE MANAGEMENT OF COMPUTER SYSTEMS
CN101794271B (zh) * 2010-03-31 2012-05-23 华为技术有限公司 多核内存一致性的实现方法和装置
EP2577936A2 (en) 2010-05-28 2013-04-10 Lawrence A. Laurich Accelerator system for use with secure 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
TW201214082A (en) * 2010-09-17 2012-04-01 Hon Hai Prec Ind Co Ltd Mother board
CN103229155B (zh) 2010-09-24 2016-11-09 德克萨斯存储系统股份有限公司 高速内存系统
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
WO2012109677A2 (en) * 2011-02-11 2012-08-16 Fusion-Io, Inc. Apparatus, system, and method for managing operations for data storage media
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
US8489905B2 (en) 2011-07-25 2013-07-16 Servergy, Inc. Method and system for building a low power computer system
CN103875214B (zh) * 2011-08-10 2017-05-03 马维尔国际贸易有限公司 用于以太网网络的具有安全检测的智能phy
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
WO2013079988A1 (en) * 2011-11-28 2013-06-06 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
EP2798804A4 (en) * 2011-12-26 2015-09-23 Intel Corp COMMUNICATION BETWEEN COPROCESSORS WITH DIRECT CONNECTION SYNCHRONIZATION
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
WO2013177313A2 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Processing structured and unstructured data using offload processors
US9558351B2 (en) 2012-05-22 2017-01-31 Xockets, Inc. Processing structured and unstructured data using offload processors
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
CN105052081B (zh) * 2012-12-26 2018-11-13 瑞昱新加坡有限公司 通信流量处理架构和方法
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
WO2014113055A1 (en) 2013-01-17 2014-07-24 Xockets IP, LLC Offload processor modules for connection to system memory
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446163B1 (en) * 1999-01-04 2002-09-03 International Business Machines Corporation Memory card with signal processing element
US20050226238A1 (en) * 2004-03-31 2005-10-13 Yatin Hoskote Hardware-based multi-threading for packet processing
US20090210616A1 (en) * 2008-02-12 2009-08-20 Vijay Karamcheti Memory modules for two-dimensional main memory
JP2011242896A (ja) * 2010-05-14 2011-12-01 Panasonic Corp 計算機システム
WO2012026877A1 (en) * 2010-08-23 2012-03-01 Empire Technology Development Llc Context switching

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018159365A1 (ja) * 2017-03-02 2018-09-07 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
JP2018147068A (ja) * 2017-03-02 2018-09-20 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US11150968B2 (en) 2017-03-02 2021-10-19 Fujitsu Limited Information processing apparatus, control method of information processing, and non-transitory computer-readable storage medium for storing program
JP2021503126A (ja) * 2017-11-14 2021-02-04 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリ・ポインタを変更することによるコンテキスト切り替えを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法
US11579806B2 (en) 2017-11-14 2023-02-14 International Business Machines Corporation Portions of configuration state registers in-memory
JP7249717B2 (ja) 2017-11-14 2023-03-31 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・ポインタを変更することによるコンテキスト切り替えを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法
WO2020046527A1 (en) * 2018-08-30 2020-03-05 Micron Technology, Inc Forward caching application programming interface systems and methods
US10705762B2 (en) 2018-08-30 2020-07-07 Micron Technology, Inc. Forward caching application programming interface systems and methods
CN112602071A (zh) * 2018-08-30 2021-04-02 美光科技公司 正向高速缓存应用程序编程接口系统和方法

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2016503934A (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
US20200192715A1 (en) Workload scheduler for memory allocation

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: 20170215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170515

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170707

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171107