JP7100941B2 - アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システム - Google Patents

アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システム Download PDF

Info

Publication number
JP7100941B2
JP7100941B2 JP2020518635A JP2020518635A JP7100941B2 JP 7100941 B2 JP7100941 B2 JP 7100941B2 JP 2020518635 A JP2020518635 A JP 2020518635A JP 2020518635 A JP2020518635 A JP 2020518635A JP 7100941 B2 JP7100941 B2 JP 7100941B2
Authority
JP
Japan
Prior art keywords
ewack
memory
write request
memory access
write
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.)
Active
Application number
JP2020518635A
Other languages
English (en)
Other versions
JP2020537227A5 (ja
JP2020537227A (ja
Inventor
シルベリス、ディミトリオス
レアーレ、アンドレア
カトリニス、コスタス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020537227A publication Critical patent/JP2020537227A/ja
Publication of JP2020537227A5 publication Critical patent/JP2020537227A5/ja
Application granted granted Critical
Publication of JP7100941B2 publication Critical patent/JP7100941B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority 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/4027Coupling between buses using bus bridges
    • G06F13/405Coupling between buses using bus bridges where the bridge performs a synchronising function
    • G06F13/4059Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、一般に、コンピューティング・システムに関し、より詳細には、コンピューティング・プロセッサをメモリ技術にインターフェイスで接続するために、アプリケーションによって制御された早期書込み確認応答をサポートする、メモリ・アクセス・ブローカ・システムを使用するためのさまざまな実施形態に関する。
現在の相互接続された複雑な社会では、コンピュータおよびコンピュータ駆動の機器が、より一般的になっている。集積回路の出現およびさらなる小型化に伴い、処理デバイスは、多種多様なデバイスへの統合を可能にした。多くのコンピューティング・システムは、メモリ・バス・プロトコルを使用してアクセスできるコンピュータ・メモリを含む。異なるプロセッサ・アーキテクチャ(例えば、QuickPath Interconnect(Intel(R))、Advanced Microcontroller Bus Architecture(ARM(R))、Coherent Accelerator Processor Interface(IBM(R))、およびHyperTransport(R)(AMD(R))など)をサポートするための複数のメモリ・バス規格が開発された。
どのメモリ・バス・アーキテクチャの場合でも、困難な要件は、メモリ・アクセス要求の配信を保証することである。これを実現するために、メモリ・バス・アーキテクチャは、正常に完了した要求ごとに確認応答が要求発行元(例えば、プロセッサ・コア)に返送される、明示的な確認応答方式を実装する。読み取りアクセス要求がデータをメモリから取り出すため、この場合、正しいデータ受信が確認応答の役割を果たす。一方、データ書き込み要求は、データをメモリに追加し、データが正常に書き込まれた後に確認応答が戻るのを、明示的に待つ必要がある。いずれかのコンピューティング・システムがプログラム実行の完全性を維持するには、同じ発行元によって発行された要求が、順序通りに提供される必要がある。したがって、多くの連続する書き込み要求を発行するアプリケーションは(例えば、大きいメモリのコピーが実行される場合)、書き込み要求の明示的な確認応答に直接関連する性能への影響を受ける。書込み確認応答がデータの転送を伴っていないため、例えば、集中的な書き込みのメモリ・アクセス・パターンを示すアプリケーションを改善するなど、実行性能を改善する必要がある。
アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システムを実現する。
アプリケーションによって制御された早期書込み確認応答(EWACK:early write acknowledgment)をサポートするメモリ・アクセス・ブローカ・システム(memory access broker system)を使用するためのさまざまな実施形態が提供される。1つの実施形態では、例として、アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システムをプロセッサによって選択的に有効化するための方法が提供される。1つまたは複数の発行元アプリケーションによって検査するために、失敗した早期書込み確認応答(EWACK)書き込み要求がメモリ・アクセス・ブローカによって記録されるように、メモリ・アクセス・ブローカが選択的に有効化され、1つまたは複数の発行元アプリケーションへの(通常の/現在の書込み確認応答(WACK:write acknowledgement)動作とは対照的な)EWACK動作および失敗したEWACK書き込み要求の通知を容易にすることができる。
1つの態様では、メモリ書き込みアクセスに関するアプリケーションの性能を大幅に改善しながら、データの完全性および決定論的プログラム実行を保証するためのさまざまな実施形態が提供される。1つの態様では、書き込みアクセス要求ブローカ・デバイスが、発行元アプリケーションへの高速なEWACKおよび失敗した書き込み要求の通知を容易にする。同時に動作している従来のアプリケーションの実行の完全性に影響を与えずに、メモリ書き込みアクセス要求ブローカ・デバイスを安全に利用するために必要なサポートを有するアプリケーションを提供するために、メモリ書き込みアクセス要求ブローカ・デバイスが、実行時に選択的に有効化され得る。アプリケーション・レベルの制御、書き込みアクセス要求の完全性チェック、サポートのため、および失敗した書き込みのアプリケーション・レベルの処理に関する障害を克服するために、1つまたは複数の解決策が、オペレーティング・システム(OS:operating system)およびアプリケーション・プログラミング・インターフェイス(API:application programming interface)に提供される。
従来技術を上回る別の追加の特徴および利点として、メモリ・アクセス・ブローカが、書き込み要求の実行時に選択的に有効化または無効化されてよく、メモリ・アクセス・ブローカは、メモリ・バス・マスタとメモリ・コントローラ・スレーブの間の中間ブローカとして機能する。失敗した書き込み要求を、メモリ・アクセス・ブローカに関連付けられた1つまたは複数のEWACKレジスタに記録するための1つまたは複数の解決策が提供される。メモリ・アクセス・ブローカによってメモリ・バス・マスタから書き込み要求を受信するため、またはメモリ・アクセス・ブローカによって、メモリ・バス・マスタから受信された書き込み要求をメモリ・コントローラ・スレーブに発行するための、1つまたは複数の解決策が提供される。
追加の態様では、メモリ・アクセス・ブローカによってメモリ・コントローラからWACK応答を受信するため、またはメモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をメモリ・バス・マスタに発行するための、1つまたは複数の解決策が提供される。メモリ・アクセス・ブローカは、EWACK書き込み要求ごとに書き込み要求識別子(ID:identifier)を生成し、生成された書き込み要求IDをキューに配置してもよい。
言い換えると、メモリ・コントローラはWACK(書込み確認応答要求)を発行する。EWACKは、メモリ・アクセス・ブローカのみによってコンピューティング・システム・マスタ(computing system master)に発行されてよい。EWACKモードでは、メモリ・アクセス・ブローカが、メモリ・コントローラが通常のWACKを返送するのを待たないため、「EWACK」が早期と呼ばれてよいということに、注意するべきである。
従来技術を上回る別の追加の特徴および利点として、メモリ・コントローラから受信されたWACK応答が、メモリ・アクセス・ブローカによって、キューから取り出された生成済みの書き込み要求IDと比較される。キューから取り出された生成済みの書き込み要求IDが、メモリ・コントローラから受信されたWACK応答に一致しないということを決定したときに、メモリ・アクセス・ブローカによって、1つまたは複数のEWACKレジスタ内で失敗したEWACK書き込み要求を示し、1つまたは複数の発行元アプリケーションによって、1つまたは複数のEWACKレジスタに記録された失敗したEWACK書き込み要求を識別するための、1つまたは複数の解決策が提供される。1つまたは複数のEWACKレジスタ内で示された失敗したEWACK書き込み要求を識別したときに、1つまたは複数の発行元アプリケーションに対して各書き込み要求を再発行することを要求するための、1つまたは複数の解決策も提供される。
第1の態様から見ると、本発明は、プロセッサによって、早期書込み確認応答のサポートのためにメモリ・アクセス・ブローカを使用するための方法を提供し、この方法は、1つまたは複数の発行元アプリケーションによって検査するために、失敗したEWACK書き込み要求がメモリ・アクセス・ブローカによって記録されるように、メモリ・アクセス・ブローカを選択的に有効化し、1つまたは複数の発行元アプリケーションへの早期書込み確認応答(EWACK)動作および失敗したEWACK書き込み要求の通知を容易にすることを含む。
本発明は、書き込み要求の実行時にメモリ・アクセス・ブローカを選択的に有効化または無効化することをさらに含んでいる方法を提供し、メモリ・アクセス・ブローカが、メモリ・バス・マスタとメモリ・コントローラの間の中間ブローカとして機能するのが好ましい。
本発明は、失敗した書き込み要求を、メモリ・アクセス・ブローカに関連付けられた1つまたは複数のEWACKレジスタに記録することをさらに含んでいる方法を提供するのが好ましい。
本発明は、メモリ・アクセス・ブローカによってメモリ・バス・マスタから書き込み要求を受信することと、メモリ・アクセス・ブローカによって、メモリ・バス・マスタから受信された書き込み要求をメモリ・コントローラに発行することとをさらに含んでいる方法を提供するのが好ましい。
本発明は、メモリ・アクセス・ブローカによってメモリ・コントローラからWACK応答を受信すること、またはメモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をメモリ・バス・マスタに発行することをさらに含んでいる方法を提供するのが好ましい。
本発明は、メモリ・アクセス・ブローカによって、EWACK書き込み要求ごとに書き込み要求識別子(ID)を生成することと、生成された書き込み要求IDをキューに配置することとをさらに含んでいる方法を提供するのが好ましい。
本発明は、メモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をキューから取り出された生成済みの書き込み要求IDと比較することをさらに含んでいる方法を提供するのが好ましい。
本発明は、キューから取り出された生成済みの書き込み要求IDが、メモリ・コントローラから受信されたWACK応答に一致しないということを決定したときに、メモリ・アクセス・ブローカによって、1つまたは複数のEWACKレジスタ内で失敗したEWACK書き込み要求を示すことと、1つまたは複数の発行元アプリケーションによって、1つまたは複数のEWACKレジスタに記録された失敗したEWACK書き込み要求を識別することとをさらに含んでいる方法を提供するのが好ましい。
本発明は、1つまたは複数のEWACKレジスタ内で示された失敗したEWACK書き込み要求を識別したときに、1つまたは複数の発行元アプリケーションに対して各書き込み要求を再発行することを要求することをさらに含んでいる方法を提供するのが好ましい。
第2の視点から見ると、本発明は、早期書込み確認応答のサポートのためにメモリ・アクセス・ブローカを使用するためのシステムを提供し、このシステムは、実行可能な命令を含む1つまたは複数のコンピュータを備えており、これらの命令は、実行された場合に、システムに、1つまたは複数の発行元アプリケーションによって検査するために、失敗したEWACK書き込み要求がメモリ・アクセス・ブローカによって記録されるように、メモリ・アクセス・ブローカを選択的に有効化し、1つまたは複数の発行元アプリケーションへの早期書込み確認応答(EWACK)動作および失敗したEWACK書き込み要求の通知を容易にすることを実行させる。
本発明は、実行可能な命令が書き込み要求の実行時にメモリ・アクセス・ブローカを選択的に有効化または無効化し、メモリ・アクセス・ブローカが、メモリ・バス・マスタとメモリ・コントローラの間の中間ブローカとして機能する、システムを提供するのが好ましい。
本発明は、実行可能な命令が、失敗した書き込み要求を、メモリ・アクセス・ブローカに関連付けられた1つまたは複数のEWACKレジスタに記録する、システムを提供するのが好ましい。
本発明は、実行可能な命令が、メモリ・アクセス・ブローカによってメモリ・バス・マスタから書き込み要求を受信し、メモリ・アクセス・ブローカによって、メモリ・バス・マスタから受信された書き込み要求をメモリ・コントローラに発行する、システムを提供するのが好ましい。
本発明は、実行可能な命令が、メモリ・アクセス・ブローカによってメモリ・コントローラからWACK応答を受信するか、またはメモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をメモリ・バス・マスタに発行する、システムを提供するのが好ましい。
本発明は、実行可能な命令が、メモリ・アクセス・ブローカによって、EWACK書き込み要求ごとに書き込み要求識別子(ID)を生成し、生成された書き込み要求IDをキューに配置する、システムを提供するのが好ましい。
本発明は、実行可能な命令が、メモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をキューから取り出された生成済みの書き込み要求IDと比較する、システムを提供するのが好ましい。
本発明は、実行可能な命令が、キューから取り出された生成済みの書き込み要求IDが、メモリ・コントローラから受信されたEWACK応答に一致しないということを決定したときに、メモリ・アクセス・ブローカによって、1つまたは複数のEWACKレジスタ内で失敗したEWACK書き込み要求を示し、1つまたは複数の発行元アプリケーションによって、1つまたは複数のEWACKレジスタに記録された失敗したEWACK書き込み要求を識別し、1つまたは複数のEWACKレジスタ内で示された失敗したEWACK書き込み要求を識別したときに、1つまたは複数の発行元アプリケーションに対して各書き込み要求を再発行することを要求する、システムを提供するのが好ましい。
本発明は、プロセッサによる、構造化されていないテキスト・データからの対人関係の発見および解析のためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品が、コンピュータ可読プログラム・コード部分が格納されている非一過性コンピュータ可読記憶媒体を備えており、これらのコンピュータ可読プログラム・コード部分が、1つまたは複数の発行元アプリケーションによって検査するために、失敗したEWACK書き込み要求がメモリ・アクセス・ブローカによって記録されるように、メモリ・アクセス・ブローカを選択的に有効化し、1つまたは複数の発行元アプリケーションへの早期書込み確認応答(EWACK)動作および失敗したEWACK書き込み要求の通知を容易にする、実行可能な部分を含んでいるのが好ましい。
本発明は、書き込み要求の実行時にメモリ・アクセス・ブローカを選択的に有効化または無効化する実行可能な部分をさらに含んでいるコンピュータ・プログラム製品を提供し、メモリ・アクセス・ブローカが、メモリ・バス・マスタとメモリ・コントローラの間の中間ブローカとして機能するのが好ましい。
本発明は、失敗した書き込み要求を、メモリ・アクセス・ブローカに関連付けられた1つまたは複数のEWACKレジスタに記録する実行可能な部分をさらに含んでいる、コンピュータ・プログラム製品を提供するのが好ましい。
本発明は、メモリ・アクセス・ブローカによってメモリ・バス・マスタから書き込み要求を受信するか、メモリ・アクセス・ブローカによって、メモリ・バス・マスタから受信された書き込み要求をメモリ・コントローラに発行するか、メモリ・アクセス・ブローカによってメモリ・コントローラからWACK応答を受信するか、またはメモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をメモリ・バス・マスタに発行する実行可能な部分をさらに含んでいる、コンピュータ・プログラム製品を提供するのが好ましい。
本発明は、メモリ・アクセス・ブローカによって、EWACK書き込み要求ごとに書き込み要求識別子(ID)を生成し、生成された書き込み要求IDをキューに配置する実行可能な部分をさらに含んでいる、コンピュータ・プログラム製品を提供するのが好ましい。
本発明は、メモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をキューから取り出された生成済みの書き込み要求IDと比較する実行可能な部分をさらに含んでいる、コンピュータ・プログラム製品を提供するのが好ましい。
本発明は、キューから取り出された生成済みの書き込み要求IDが、メモリ・コントローラから受信されたEWACK応答に一致しないということを決定したときに、メモリ・アクセス・ブローカによって、1つまたは複数のEWACKレジスタ内で失敗したEWACK書き込み要求を示し、1つまたは複数の発行元アプリケーションによって、1つまたは複数のEWACKレジスタに記録された失敗したEWACK書き込み要求を識別する実行可能な部分をさらに含んでいる、コンピュータ・プログラム製品を提供するのが好ましい。
本発明は、1つまたは複数のEWACKレジスタ内で示された失敗したEWACK書き込み要求を識別したときに、1つまたは複数の発行元アプリケーションに対して各書き込み要求を再発行することを要求する実行可能な部分をさらに含んでいる、コンピュータ・プログラム製品を提供するのが好ましい。
本発明の利点を容易に理解するために、上で簡単に説明された本発明のさらに詳細な説明が、添付の図面において示された特定の実施形態を参照することによって提供される。これら図面が本発明の典型的な実施形態のみを表しており、したがって、本発明の範囲の制限と見なされるべきではないということを理解して、添付の図面を使用することによって、追加の特殊性および詳細と共に本発明が表され、説明される。
本発明の実施形態に従って例示的なクラウド・コンピューティング・ノードを示すブロック図である。 本発明の実施形態に従って例示的なクラウド・コンピューティング環境を示す追加のブロック図である。 本発明の実施形態に従って抽象モデル・レイヤを示す追加のブロック図である。 本発明の態様に従って早期書込み確認応答(EWACK)動作および非早期書込み確認応答(WACK)動作の性能の比較を示す図である。 本発明の態様に従って早期書込み確認応答(EWACK)動作および非早期書込み確認応答(WACK)動作の性能の比較を示す図である。 本発明の態様に従ってメモリ・アクセス・ブローカ・システムの使用例を示す図である。 本発明の態様に従ってメモリ・アクセス・ブローカ・システムの使用例を示す図である。 本発明の態様に従ってメモリ・アクセス・ブローカ・システムの使用例を示す図である。 本発明の態様に従ってメモリ・アクセス・ブローカ・システムの使用例を示す図である。 本発明の態様が実現されてよい、アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システムを使用するための追加の例示的な方法を示すフローチャート図である。
メモリ書き込みアクセスは、中央処理装置(CPU:central processor units)またはダイレクト・メモリ・アクセス(DMA:direct memory access)エンジンによって、外部メモリ・デバイス・コントローラ(例えば、ダイナミック・ランダムアクセス・メモリ・コントローラ(「DDR」)、ハイブリッド・メモリ・コントローラ(「HMC」:hybrid memory controllers)、または非集約型メモリ・システムなど)に向けて発行されてよい。メモリへの書き込みアクセスが開始された場合、書き込みアクセス応答の確認応答が受信されるまで、CPUまたはダイレクト・メモリ・アクセスDMAのデータ経路の実行が停止することがある。この確認応答は、プログラム実行の完全性を保証することができる。しかし、アプリケーションの実行性能は、特に書き込み要求に対する確認応答を待っている間、メモリ・アクセス待ち時間に非常に影響を受ける。メモリ・アクセス待ち時間は、高度に結合されたシステム(例えば、ダイナミック・ランダムアクセス・メモリ(「DDR」)は10ナノ秒(「ns」)の応答遅延を実現できる)と、ネットワークを経由して記憶媒体にアクセスする必要のあるコントローラ(例えば、非集約型メモリ・システムは、数百nsを必要とすることがある)の間で、変化することがある。
さらに具体的には、コンピューティング・アプリケーションは、メモリ・アクセスの完全性に関して、コンピューティング・ハードウェアに完全に依存する。メモリ・アクセス要求が失敗した場合、コンピューティング・ハードウェアが、停止またはシステムの再起動のトリガーによって、メモリ・アクセス要求の失敗を直ちに検出する。そのため、プログラム実行の完全性を保証し、メモリ・アクセス待ち時間を減らしながら、書き込みアクセス性能に大きく依存するコンピューティング・アプリケーションの実行性能を向上させる必要がある。したがって、本発明は、メモリ書き込みアクセス性能に大きく依存するコンピューティング・アプリケーションの性能を向上させることを目指す。
1つの態様では、メモリ・コントローラ・サブシステムが、早期書込み確認応答(「EWACK」または「EWACK応答」)を使用して、CPUによるメモリ・アクセス書き込み要求の順序通りの配信を保証してよい。CPUは、メモリ・コントローラから確認応答を受信することを期待せず、書き込み要求データがCPUを離れた後に、直ちに実行を続ける。プログラムによって発行される書き込み要求の数に応じて、EWACKは実行性能を1桁向上させることができる。EWACK動作が使用される場合、書き込み要求が実際に配信されることを保証する責任が、メモリ・コントローラにオフロードされてよい。したがって、コントローラは、例えば、i)要求のバッファリング、ii)フロー制御、iii)確認応答方式の実装、およびiv)データの完全性チェックなどのタスクを実行するべきである。しかし、これらのタスクの各々は、大幅な遅延をクリティカル・パスに導入することがあり、性能向上をゼロに減少させる可能性がある。したがって、本発明は、ハードウェアとコンピューティング・アプリケーションのコンポーネントの間で責任を分担することができる動作の追加モードを提供する。これにより、EWACKに関連する誤りを許容し、そのような誤りから回復して、大幅な性能向上を達成し、メモリ・アクセス待ち時間を大幅に削減できるコンピューティング・アプリケーションを可能にすることによって、従来技術を上回る追加の特徴および利点を実現する。
追加の態様では、示されている実施形態例のメカニズムは、アプリケーションによって制御されたEWACK動作をサポートするメモリ・アクセス・ブローカ・システムを使用することを提供する。メモリ・アクセス・ブローカ・デバイスは、メモリ・バス・マスタとメモリ・コントローラ・スレーブの間でインターリーブされてよい。1つまたは複数の発行元アプリケーションによって検査するために、失敗したEWACK書き込み要求がメモリ・アクセス・ブローカによって記録されるように、メモリ・アクセス・ブローカ・デバイスが選択的に有効化され、1つまたは複数の発行元アプリケーションへの早期書込み確認応答(EWACK)動作および失敗したEWACK書き込み要求の通知を容易にしてよい。
メモリ・バス要求ブローカ・システム(memory bus request broker system)は、コンピューティング・ハードウェアとコンピュータ・アプリケーションの協調設計システムであってよい。システムのコンピューティング・ハードウェア部分は、メモリ・バス要求ブローカであってよく、各メモリ・バス・マスタと1つのメモリ・コントローラ・スレーブの間でインターリーブされてよい。メモリ・バス要求ブローカのEWACK機能は、コンピュータ・アプリケーションによって制御されたハードウェア・スイッチを介して実行時に自動的に有効化または無効化することができ、メモリ・マップド・レジスタを介してオペレーティング・システム・カーネルによって制御される。
1つの態様では、メモリ書き込みアクセスに関するアプリケーションの性能を大幅に改善しながら、データの完全性および決定論的プログラム実行を保証するためのさまざまな実施形態が提供される。1つの態様では、書き込みアクセス要求ブローカ・デバイスが、発行元アプリケーションへの高速なEWACKおよび失敗した書き込み要求の通知を容易にする。同時に動作している従来のアプリケーションの実行の完全性に影響を与えずに、メモリ書き込みアクセス要求ブローカ・デバイスを安全に利用するために必要なサポートを有するアプリケーションを提供するために、メモリ書き込みアクセス要求ブローカ・デバイスが、実行時に選択的に有効化され得る。本発明は、アプリケーション・レベルの制御、書き込みアクセス要求の完全性チェック、および失敗した書き込みのアプリケーション・レベルの処理に関する障害のためのサポートを、オペレーティング・システム(OS)およびアプリケーション・プログラミング・インターフェイス(API)に提供する。
さまざまなコンピューティング・アーキテクチャ(例えば、非集約型メモリ・システム)内でメモリ・アクセス・ブローカ・システムを使用することによって、従来技術を上回る追加の特徴および利点が提供される。例えば、非集約型メモリ・システムでは、記憶媒体は、異なる物理サーバ・トレイ内に存在し、待ち時間の少ない高速な相互接続(例えば、光回路およびスイッチ)を介してCPUおよびDMAに相互接続され、ローカル・メモリより著しく長いアクセス遅延を有する。相互接続は、理論的には無損失通信チャネルを提供するように構成され得るが、メモリ・アクセス経路に沿ったデバイスが、予想外に失敗または停止することがある。したがって、メモリ・アクセス・ブローカ・デバイスは、本明細書において説明されているように、非集約型メモリ・システムが、メモリ・アクセス経路に沿ったデバイスが予想外に失敗または停止するのを防ぐことができるようにする。
本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないということが、あらかじめ理解される。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスされるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらには個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
ここで図1を参照すると、クラウド・コンピューティング・ノードの例の概略図が示されている。クラウド・コンピューティング・ノード10は、適切なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載された本発明の実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、クラウド・コンピューティング・ノード10は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
クラウド・コンピューティング・ノード10内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム/サーバ12が存在する。コンピュータ・システム/サーバ12と共に使用するのに適した周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含んでよい。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
図1に示すように、クラウド・コンピューティング・ノード10内のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ12のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット16、システム・メモリ28、およびシステム・メモリ28を含むさまざまなシステム・コンポーネントをプロセッサ16に結合するバス18を含むことができるが、これらに限定されない。
バス18は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含むが、これらに限定されない。
コンピュータ・システム/サーバ12は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ12によってアクセスできる任意の利用可能な媒体であってよく、揮発性および不揮発性媒体の両方、取り外し可能および取り外し不可の媒体の両方を含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM:random access memory)30またはキャッシュ・メモリ32あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム34を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバス18に接続することができる。下で詳細に示され、説明されているように、システム・メモリ28は、本発明の実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含んでよい。
例えば、一連の(少なくとも1つの)プログラム・モジュール42を備えるプログラム/ユーティリティ40がシステム・メモリ28に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの或る組み合わせは、それぞれネットワーク環境の実装を含んでよい。プログラム・モジュール42は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
また、コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12とやりとりできるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信することもできる。そのような通信は、入出力(I/O:Input/Output)インターフェイス22を介して行うことができる。さらに、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信することができる。図示されているように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ12と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
本発明との関連において、当業者が理解するであろうように、図1に示されたさまざまなコンポーネントが移動車両内に配置されてよい。例えば、実施形態例のメカニズムに関連付けられた処理能力およびデータ格納能力の一部が、ローカル処理コンポーネントを介してローカルに行われてよく、一方、同じコンポーネントが、遠隔地にある分散されたデータ計算処理コンポーネントおよびストレージ・コンポーネントに、ネットワークを介して接続され、本発明のさまざまな目的を実現する。やはり当業者によって理解されるであろうように、本明細書の例は、発明のさまざまな態様を集合的に実現する分散された計算コンポーネントの接続されたネットワーク全体であってよいもののサブセットのみを伝達するよう意図されている。
ここで図2を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、PDA(Personal Digital Assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を備える。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組み合わせを提供できる。図2に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
ここで図3を参照すると、クラウド・コンピューティング環境50(図2)によって提供される機能的抽象レイヤのセットが示されている。図3に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
デバイス・レイヤ55は、クラウド・コンピューティング環境50内のさまざまなタスクを実行するために、電子機器、センサ、アクチュエータ、およびその他の物体に埋め込まれているか、またはスタンドアロンであるか、あるいはその両方である、物理デバイスまたは仮想デバイスあるいはその両方を含む。デバイス・レイヤ55内のデバイスの各々は、デバイスから取得された情報が他の機能的抽象レイヤに提供されてよいように、または他の抽象レイヤからの情報がデバイスに提供されてよいように、あるいはその両方が行われるように、他の機能的抽象レイヤへのネットワーク能力を組み込んでいる。1つの実施形態では、デバイス・レイヤ55を含めて、さまざまなデバイスが、「モノのインターネット」(IoT:internet of things)と総称される実体のネットワークを組み込んでよい。そのような実体のネットワークは、当業者が理解するであろうように、データの相互通信、収集、および配布を可能にし、多種多様な目的を実現する。
図に示されているデバイス・レイヤ55は、図に示されているセンサ52、アクチュエータ53、処理、センサ、およびネットワーク電子機器が内蔵された「学習」サーモスタット56、カメラ57、制御可能な家庭用コンセント58、ならびに制御可能な電気スイッチ59を含んでいる。その他の可能性のあるデバイスとしては、さまざまな追加のセンサ・デバイス、ネットワーク・デバイス、電子デバイス(遠隔制御デバイスなど)、追加のアクチュエータ・デバイス、いわゆる「スマート」電化製品(冷蔵庫または洗濯機/乾燥機など)、および多種多様なその他の可能性のある相互接続された物体が挙げられるが、これらに限定されない。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成または送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り振りと管理を行う。サービス・レベル合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供できるワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ分析処理94、トランザクション処理95、ならびに本発明の実施形態例との関連において、アプリケーションによって制御された早期書込み確認応答のワークロードおよび機能を含むさまざまなメモリ・アクセス・ブローカ・システム96を含む。加えて、アプリケーションによって制御された早期書込み確認応答のワークロードおよび機能を含むメモリ・アクセス・ブローカ・システム96は、データ解析(さまざまな環境センサからのデータの収集および処理を含む)および予測データ分析機能などの動作を含んでよい。当業者は、アプリケーションによって制御された早期書込み確認応答のワークロードおよび機能を含むメモリ・アクセス・ブローカ・システム96が、さまざまな抽象レイヤの他の部分(ハードウェアおよびソフトウェア60、仮想化70、管理80、およびその他のワークロード90(例えば、データ分析処理94など)内の部分など)と連動して動作し、本発明の実施形態例のさまざまな目的を実現してもよいということを理解するであろう。
前述したように、実施形態例のメカニズムは、メモリ書き込みアクセスに関するアプリケーションの性能を大幅に改善しながら、データの完全性および決定論的プログラム実行を保証するための新しい方法を提供する。1つの態様では、書き込みアクセス要求ブローカ・デバイスが、発行元アプリケーションへの高速な早期書込み確認応答および失敗した書き込み要求の通知を容易にする。同時に動作している従来のアプリケーションの実行の完全性に影響を与えずに、メモリ書き込みアクセス要求ブローカ・デバイスを安全に利用するために必要なサポートを有するアプリケーションを提供するために、メモリ書き込みアクセス要求ブローカ・デバイスが、実行時に選択的に有効化され得る。アプリケーション・レベルの制御、書き込みアクセス要求の完全性チェック、および失敗した書き込みのアプリケーション・レベルの処理の障害に関する1つまたは複数の解決策が、オペレーティング・システム(OS)およびアプリケーション・プログラミング・インターフェイス(API)のサポートために提供される。
これらのメカニズムは、やはりプロセッサによって、アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システムを選択的に有効化する機能を含む。1つまたは複数の発行元アプリケーションによって検査するために、失敗した早期書込み確認応答(EWACK)書き込み要求がメモリ・アクセス・ブローカによって記録されるように、メモリ・アクセス・ブローカが選択的に有効化され、1つまたは複数の発行元アプリケーションへのEWACK動作および失敗したEWACK書き込み要求の通知を容易にしてよい。
ここで図4~5を参照すると、図400、425が、早期書込み確認応答(EWACK)および非早期書込み確認応答(WACK)の性能比較を示している。EWACKとWACKの性能を比較するために、以下の2つの例について検討する。
図400、425に対して、CPUとメモリ(「mem」)の間の対称的な20サイクル、64ビットのパイプライン(例えば、10段の要求/10段の応答)を仮定する。言い換えると、10段の書き込み要求が第1の10サイクルであり、10段の書き込み応答が第2の10サイクルであり、合計で20サイクルになる。要求シーケンスのために順次発行される4つの192ビットのデータ書き込み要求(例えば、要求0、1、2、および3)が存在するということも仮定する。WACKは64ビットであってよい。要求パイプラインは、データ書き込みおよび応答パイプラインのWACKを転送してよい。送信中のすべてのデータをパイプラインに入れるために、各書き込み要求(「要求」)が3サイクル(例えば、192ビット/64ビット)を必要とするということも仮定する。
ここで図400を参照すると、メモリへの第1の書き込み要求(例えば、要求0)の第1の64ビットの到着に関して、EWACKとWACKの間の違いが示されている。さらに具体的には、図400は、WACKの場合、メモリへの第1の書き込み要求の到着に関して、要求0(例えば、第1の64ビットの要求)のみが送信中であるということを示している。要求0に対してメモリから書き込み応答が戻ったときにのみ、次の書き込み要求(例えば、要求1など)が、送信中にパイプライン上でメモリに発行され得る。その後の書き込み要求(例えば、要求2および3)ごとに、この同じプロセスが続行する。これに対して、EWACKの動作は、そのようなメモリ・アクセス待ち時間を取り除き、書き込み要求(例えば、要求0~3など)の各々を、送信中にパイプライン内で同時に、順次発行できるようにする。
ここで図5の図425を参照すると、第1の要求(例えば、要求0)の応答がメモリから発行されて、CPUに到着するときの、EWACKとWACKの間の性能差が示されている。EWACKの場合、(要求0~3の)すべての64ビットのEWACKが、応答パイプライン上を送信中である。これに対して、WACKの同じサイクルでは、要求パイプラインと応答パイプラインの両方は、ほぼ完了している(例えば、20サイクル完了している)第1の要求(例えば、要求0)のみを除いて空である。
さらに具体的には、EWACKの合計応答時間を反映している表450は、書き込みアクセス要求0の場合、開始サイクルが0で開始し、終了サイクルが20で完了することを示している。書き込みアクセス要求1の場合、開始サイクルが3で開始し、終了サイクルが23で完了する。書き込みアクセス要求2の場合、開始サイクルが6で開始し、終了サイクルが26で完了する。書き込みアクセス要求3の場合、開始サイクルが9で開始し、終了サイクルが29で完了する。すなわち、書き込みバーストがサイクル29で終了する。
WACKに関する表475は、書き込みアクセス要求0の場合、開始サイクルが0で開始し、終了サイクルが20で完了することを示している。書き込みアクセス要求1の場合、開始サイクルが21で開始し、終了サイクルが41で完了する。書き込みアクセス要求2の場合、開始サイクルが42で開始し、終了サイクルが62で完了する。書き込みアクセス要求3の場合、開始サイクルが63で開始し、終了サイクルが83で完了する。すなわち、書き込みバーストがサイクル83で終了する。示されているように、WACKと比較して、図5のすべての書き込み要求の合計で54サイクル少ないEWACKの動作を実現することができる。
本発明は、性能を最大化するように配信を保証するために、メモリ・コントローラ・サブシステムを必要とせずに、EWACKの動作を使用してEWACKのサポートを可能にする。これをサポートするために、実施形態例のメカニズムは、重要なメモリ・アクセス経路からの書込み確認応答の失敗を監視して記録し、記録された書込み確認応答失敗情報をアプリケーションが利用できるようにする。書き込み要求の誤りを定期的にチェックして訂正動作を実行する責任は、アプリケーション・レベルに転嫁される。さらに、従来技術を上回る別の追加の特徴および利点として、書き込み要求アクセスの障害を処理できるアプリケーションの実行に関連する要求の場合にのみ、EWACK機能を選択的に有効化することができる、それによって、従来のアプリケーションを、変更を必要とせずに同時に、かつ安全に実行できるようにする。
以上を考慮して、ここで、図6~9に示されている以下の例について検討する。図6に(および図7~8にも)示されているように、メモリ・バス要求ブローカ・システム500は、さまざまなコンピューティング・アーキテクチャのフレームワークにおいて使用できるメモリ・バス要求ブローカ510(「要求ブローカ」または「EWACKブローカ」)を含んでよい。メモリ・バス要求ブローカ・システム500は、コンピューティング・ハードウェアとコンピュータ・アプリケーションの協調設計システムであってよい。1つの態様では、コンピューティング・システムは、メモリ・バス要求ブローカ510と、オペレーティング・ソフトウェア(「OS」:operating software)502に関連付けられたプログラム501と、CPU504と、DMA506と、例えばメモリ・バス・マスタ508などのバスと、メモリ・コントローラ514と、メモリ・バス要求ブローカ510に結合されてよい1つまたは複数のEWACKレジスタ512とを含んでよい。
1つの態様では、メモリ・バス要求ブローカ510は、メモリ・バス・マスタ508とメモリ・コントローラ514の間で結合されるか、またはインターリーブされてよく、書き込み要求の失敗をメモリ・マップド・レジスタ(例えば、EWACKレジスタ512など)のセットに記録してよい。EWACKレジスタ512は、OS502によって独立して安全に検査されてよい。
以上を考慮して、メモリ・バス要求ブローカ・システム500の以下の動作例について検討する。前置きとして、さまざまな実施形態例を説明するために、メモリ・バス要求ブローカ510は、書き込み要求をメモリ・バス・マスタ508から受信してよい。メモリ・バス要求ブローカ510は、書き込み要求をメモリ・コントローラ514に発行してよい。メモリ・バス要求ブローカ510はWACK応答をメモリ・コントローラ514から受信してよい。メモリ・バス要求ブローカ510は、メモリ・コントローラ514から受信されたWACK応答をメモリ・バス・マスタ508に発行してよい。しかし、メモリ・バス要求ブローカ510のEWACK機能は、CPU504(例えば、コンピュータ・アプリケーションによって制御されたハードウェア・スイッチ)を介して実行時に自動的に有効化または無効化されてよく、EWACKレジスタ512を介してOS502のカーネルによって制御されてよい。
ここで図7を参照すると、メモリ・バス要求ブローカ510は、書き込み要求をメモリ・バス・マスタ508から受信してよい。書き込み要求の到着時に、メモリ・バス要求ブローカ510は、書き込み要求がEWACK書き込み要求または非EWACK書き込み要求のいずれであるべきかをチェックし、判定してよい。書き込み要求がEWACK要求である場合、メモリ・バス・マスタ508のプロトコルによって提供されるデフォルトの要求識別子(「ID」)が、置き換えられてよい。この置換IDは、1)書き込み要求を発行したCPUまたはDMA ID、2)書き込み要求ID、および3)要求ブローカ510によって内部で管理されているカウンタをエンコードする、複合識別子であってよい。最初の2つのフィールド(すなわち、CPU/DMA IDおよび書き込み要求ID)は、メモリ・バス・マスタ508のプロトコルによって提供される。すなわち、CPU/DMA IDおよび書き込み要求IDは、両方ともメモリ・バスのプロトコルによって(すなわち、メモリ要求のヘッダー内で)提供されてよい。CPU/DMA IDおよび書き込み要求IDは、EWACKブローカ(例えば、メモリ・バス要求ブローカ510)のタスクを実行する目的で、トランザクションを識別する1つのIDに結合されてよい。
複合IDは、応答パイプラインに向けてキュー520(例えば、先入れ先出し(「FIFO」:first-in-first out)キュー520など)に追加されてよく、送信書き込み要求の割り当てられたIDとして使用されてよい。書き込み要求が早期に確認応答されない(例えば、非EWACK書き込み要求である)ということが決定された場合、書き込み要求は変更されずに転送され、メモリ・バス・マスタ508のプロトコルから提供されたデフォルトのIDが使用されてよい。
さらに、書き込み要求発行コンポーネント(例えば、OS502など)に対して、メモリ・バス要求ブローカ510のEWACKモードが有効化されているか、または無効化されているかに応じて、メモリ・バス要求ブローカ510は、1)EWACKを発行元アプリケーション(例えば、CPU504に関連付けられたプログラム501)に直ちに返送するか(EWACKモード)、または2)待機し、実際の書き込みプロセスが完了した後に、メモリ・コントローラ514によって生成されたWACKを中継してよい。すなわち、EWACKモードでは、1)メモリ・バス要求ブローカ510は、コントローラ(例えば、メモリ・コントローラ514)が確認応答するのを待たずに発行元に直ちに応答してよく(EWACK確認応答)、または2)メモリ・バス要求ブローカ510は、EWACKを生成せず、コントローラ(例えば、メモリ・コントローラ514)が通常のWACK(例えば、非EWACK)に応答するのを許可してよく、あるいはその両方が行われてよい。
メモリ・コントローラ514は、特に、メモリ・コントローラ514がメモリ・バス要求ブローカ510によって実行された動作を認識しないか、または気付かないため、メモリ・コントローラ514が受信したすべての書き込み要求に対して書込み確認応答を送信してよい。
図6~7に示された例を引き続き使用し、ここで図8を参照すると、メモリ・バス要求ブローカ510が書込み確認応答(例えば、WACK応答)をメモリ・コントローラ514から受信してよい。メモリ・バス要求ブローカ510が書込み確認応答530をメモリ・コントローラ514から受信した場合、メモリ・バス要求ブローカ510は、次の複合ID(「ID」)(例えば、FIFO動作に従って、次の複合ID)をFIFOキュー520から取り出してよい。メモリ・バス要求ブローカ510は、FIFOキュー520から取り出された複合IDを、メモリ・コントローラ514から受信された書込み確認応答530(例えば、WACK応答)と比較してよい。例えば、メモリ・バス要求ブローカ510が、ID「X」を含む要求をメモリ・コントローラ514に発行した場合、その要求に対するメモリ・コントローラ514の応答は、ID Xを含む。これによって、メモリ・バス要求ブローカ510が、要求IDをメモリ・コントローラの応答IDと照合できるようにする。要求がこのレベルで直列化されるため、応答が戻らない場合、失敗した要求を識別するように、FIFOの動作中に各要求IDが一致しなくなる。
EWACKモードで発行された要求で、FIFOキュー520から取り出された複合IDと、メモリ・コントローラ514から受信された書込み確認応答の応答530の書込み確認応答IDが一致する場合、(EWACKがすでに配信されているため)メモリ・バス要求ブローカ510が応答を破棄する。非EWACKモードでは、書込み確認応答530がメモリ・バス・マスタ508に転送される。
一方、EWACKモードでは、比較動作に従って、複合IDと、メモリ・コントローラ514から受信された書込み確認応答の応答530の書込み確認応答IDが一致しない場合、メモリ・バス要求ブローカ510が、指定されたビットを1つまたは複数の現在アクティブなEWACKレジスタ512に記録または「設定」してよい。単一のメモリ・コントローラ514に起因して、すべての書き込み要求が順序通りに返信されるため、取り出された各複合IDは、前の受信書込み確認応答530が失われていない限り、メモリ・コントローラ514から受信された受信書込み確認応答530に一致するはずである。指定されたビットを1つまたは複数の現在アクティブなEWACKレジスタ512に設定することによって、このビットは、失敗したEWACK書き込み要求の指示として機能する。
ここで図9を参照すると、メモリ・バス要求ブローカ510は、失敗したEWACK書き込み要求が示されている場合、指定されたビットを1つまたは複数の現在アクティブなEWACKレジスタ512に設定していてよい。したがって、図9は、実行フローに対して適切かつ安全である(すなわち、書き込み要求の失敗が検出された場合に安全に繰り返すことができる)場合に、例えばプログラム501などのコンピューティング・アプリケーションおよび関連するOS502が、EWACKモードを有効化/無効化し、EWACKレジスタ512をチェックする必要があるということを示している。これは、失敗した書き込みがメモリ・バス要求ブローカ510によって検出される前に、コンピューティング・アプリケーションが実行を開始するためである。そのため、コンピュータ・アプリケーションは、失敗したEWACK書き込み要求をチェックする必要がある。すなわち、可能性のある書き込み障害を処理し、対処するために、失敗した書き込み要求に関して、アプリケーション・レベルのサポート(例えば、失敗した書き込み要求を検出し、識別し、応答するために、コンピュータ・アプリケーションがメモリ・バス要求ブローカ510を支援する)が、メモリ・マップドEWACKレジスタ512を適切に検査する必要がある。さらに、コンピュータ・アプリケーション(例えば、アプリケーション・レベルのサポート)は、書き込み障害を処理できないコード・ブロックの場合に、メモリ・バス要求ブローカ510でのEWACK動作モードを無効化する必要がある。EWACKレジスタ512(例えば、メモリ・マップド・レジスタ)へのアクセス待ち時間が極めて小さいため、無視できる程度のオーバーヘッドを伴って、コンピューティング・アプリケーションによってEWACKレジスタ512を(頻繁に、または定期的に)検査することができる。オペレーティング・システムのサポートは、アプリケーションがEWACK動作の無効化を要求する場合、およびEWACKのDMA転送を書き込み障害から保護するためにも、メモリ・バス要求ブローカ510でのEWACK動作モードを安全に有効化/無効化することが必要になることもある。したがって、発行元アプリケーションが失敗した書き込み要求をEWACKレジスタ512で検出した場合、発行元アプリケーションは、1つまたは複数のEWACKレジスタ512内で示された失敗したEWACK書き込み要求を識別したときに、各書き込み要求を再発行することが必要になることがある。
1つの態様では、アプリケーション・レベルのサポートは、EWACK OSサービス登録動作、サービス有効化/無効化動作、およびメモリ書き込み完全性障害動作(memory write integrity barrier operation)から成ってよい。コンピューティング・アプリケーションが、書き込みアクセス失敗の場合に繰り返すことができる処理ブロックに入った場合、アプリケーション・レベルのサポートのサービスが有効化されるべきであり、メモリ完全性障害チェック(memory integrity barrier checks)がコード内に配置されてよい。障害チェックが失敗した場合、コンピューティング・アプリケーションが1つまたは複数の動作を実行してよい。
追加の態様では、オペレーティング・システム・レベルのサポートが、OSのプロセスごとにEWACKサービスを利用可能にする。例えば、プロセス・スケジューラが、CPUに対して新しいアプリケーションを許可することを決定するたびに、OSは、実際のコンテキスト切り替えの前に、次のチェックを実行してよい。OSは、不均等メモリ・アクセス(「NUMA」:non-uniform memory access)領域をチェックし、コンピュータ・アプリケーションが、EWACKアクセス対応のメモリを使用しており、アプリケーションが実行されようとしている特定のCPUに対してどのEWACKブローカを有効化または無効化するべきかを決定している(2つ以上のEWACKブローカがコンピュータ・システム内に存在することがあるため)ことを確認してよい。EWACK動作を有効化するための有効化コマンドは、アトミック(現在のCPUのブローカ制御レジスタへの1バイトのメモリマップされた書き込み)であってよい。EWACK動作のための有効化コマンドの受信時に、EWACKブローカは、書き込み要求に応答する前に、すべての要求トラフィックを遮断し、送信中のすべての要求が完了するのを待ってよい。受信された送信中のすべての要求の完了後に、要求トラフィックの遮断が解除されてよい。EWACK動作を無効化するための無効化コマンドは、どの書き込み要求トラフィックも停止せずに、直ちに適用される。
従来技術を上回る別の追加の特徴および利点として、EWACK動作の機能の使用を有効化するために、ユーザ空間ライブラリがアプリケーションに提供されてよい。ユーザ空間ライブラリは、OSレベルのEWACKのサポートによって支援されてよい。下の疑似コード例において示されているように、1つまたは複数の可能性のある「ewackmode_enable」APIおよび「ewackmode_disable」APIはそれぞれ、現在のプロセスに対して、EWACK動作の機能を有効化および無効化する。「ewackmode_enable」動作がユーザ・ライブラリの動作の機能であってよく、前述したハードウェア/ソフトウェアの切り替えの有効化を直接駆動しなくてよいということに、注意するべきである。「ewackmode_check」動作は、書き込み誤りが発生したかどうかをチェックしてよく、プロセスのEWACKレジスタをリセットしてよい。EWACKモードをいつ使用するべきかの決定、およびチェックの粒度の決定は、アプリケーションに任されている。また、アプリケーションは、実行するべき回復動作(この例では、計算の再開)を決定してよい。
1つまたは複数の可能性のある「ewackmode_enable」APIおよび「ewackmode_disable」APIの疑似コードはそれぞれ、EWACK動作の機能を有効化および無効化する。
#include <libewack.h>
void main(void) {
//EWACKはオフである
//入力を準備するか、または何かを実行する。
//CPUは、通常モードの動作である。
//CPUの実行に対してEWACKモードを有効化する
//アプリケーション
ewackmode_enable();
//誤りが発生した場合(まれな条件)、繰り返す
do {
//EWACKモードのおかげで、これが高速になる
some_memory_intensive_computation();
} while (ewackmode_check());
ewackmode_disable();
//場合によっては、さらに何かを実行する
return;
従来技術を上回る別の追加の特徴および利点として、OSのサポートを伴って、EWACKモードで、DMA転送がそれぞれ次のように実行されてよい。オペレーティング・システム・ライブラリを使用して、デバイス・ドライバによって、DMAエンジンがプログラムされてよい。DMA転送を開始する前に、OSが送り先のNUMA領域をチェックし、そのDMA IDに対して、各EWACKブローカでEWACKを有効化することを決定してよい。DMA転送が完了し、完了割り込みが発行された場合、完了割り込みハンドラとの関連において、制御をアプリケーションに返す前に、OSが、このDMA転送に割り当てられた各EWACKブローカのEWACKレジスタをチェックまたは検査してよい。誤り(例えば、書き込み要求の失敗)が報告された場合、DMA転送を発行したアプリケーションに制御を渡す代わりに、プログラムされた転送が繰り返されてよい。誤りが報告されていない場合、コンピューティング・システムにおいて実行が通常通り進んでよい。各OSのプロセスおよび(DMA用の)デバイス・ドライバは、登録時に固有のEWACKレジスタが割り当てられてよく、プロセスが実行されるときに、更新に対してアクティブであってよい。
ここで図10を参照すると、実施形態例のさまざまな態様が実装されてよい、アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システムを使用するための方法600が示されている。すなわち、図10は、本発明の例に従って、コンピューティング環境内でアプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システムを使用するための、追加の例示的な方法600のフローチャートである。機能600は、マシン上で命令として実行される方法として実装されてよく、それらの命令は、少なくとも1つのコンピュータ可読記憶媒体または非一過性機械可読記憶媒体に含まれる。機能600は、ブロック602で開始してよい。ブロック604で、1つまたは複数の発行元アプリケーションによって検査するために、失敗したEWACK書き込み要求がメモリ・アクセス・ブローカによって記録されるように、メモリ・アクセス・ブローカが選択的に有効化され、1つまたは複数の発行元アプリケーションへの早期書込み確認応答(EWACK)動作および失敗したEWACK書き込み要求の通知を容易にしてよい。機能600は、ブロック606で終了してよい。
1つの態様では、図10の少なくとも1つのブロックと連動して、または図10の少なくとも1つのブロックの一部として、あるいはその両方として、600の動作が次の各々のうちの1つまたは複数を含んでよい。600の動作は、書き込み要求の実行時に、メモリ・アクセス・ブローカを選択的に有効化または無効化してよい。メモリ・アクセス・ブローカは、メモリ・バス・マスタとメモリ・コントローラの間の中間ブローカとして機能してよい。600の動作は、失敗した書き込み要求を、メモリ・アクセス・ブローカに関連付けられた1つまたは複数のEWACKレジスタに記録してよい(例えば、失敗した書き込み要求を示すレジスタ内の1ビットを設定する)。600の動作は、メモリ・アクセス・ブローカによってメモリ・バス・マスタから書き込み要求を受信するか、またはメモリ・アクセス・ブローカによって、メモリ・バス・マスタから受信された書き込み要求をメモリ・コントローラに発行してよい。
追加の態様では、600の動作は、メモリ・アクセス・ブローカによってメモリ・コントローラからWACK応答を受信するか、またはメモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をメモリ・バス・マスタに発行してよい。メモリ・アクセス・ブローカは、EWACK書き込み要求ごとに書き込み要求識別子(ID)を生成し、生成された書き込み要求IDをキューに配置してもよい。
600の動作は、メモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答をキューから取り出された生成済みの書き込み要求IDと比較してよい。600の動作は、キューから取り出された生成済みの書き込み要求IDが、メモリ・コントローラから受信されたWACK応答に一致しないということを決定したときに、メモリ・アクセス・ブローカによって、1つまたは複数のEWACKレジスタ内で失敗したEWACK書き込み要求を示し、1つまたは複数の発行元アプリケーションによって、1つまたは複数のEWACKレジスタに記録された失敗したEWACK書き込み要求を識別してよい。さらに、600の動作は、1つまたは複数のEWACKレジスタ内で示された失敗したEWACK書き込み要求を識別したときに、1つまたは複数の発行元アプリケーションに対して各書き込み要求を再発行することを要求してよい。
したがって、本明細書において説明されているように、本発明は、メモリ書き込みアクセスに関するアプリケーションの性能を大幅に改善しながら、データの完全性および決定論的プログラム実行を保証するメモリ・アクセス・ブローカ・システムを提供する。メモリ・アクセス・ブローカ・システムは、発行元アプリケーションへの高速なEWACKおよび失敗した書き込み要求の通知を容易にする、ハードウェアのメモリ書き込みアクセス要求ブローカを含んでよい。同時に動作している従来のアプリケーションの実行の完全性に影響を与えずに、メモリ・アクセス・ブローカ・システムを安全に利用するために必要なサポートを有するアプリケーションを提供するために、メモリ・アクセス・ブローカ・システムが、実行時に選択的に有効化され得る。メモリ・アクセス・ブローカ・システムは、アプリケーション・レベルの制御、書き込みの完全性チェック、および失敗した書き込みのアプリケーション・レベルの処理の障害に関する、オペレーティング・システムおよびアプリケーション・プログラミング・インターフェイスのサポートを含む。
このようにして、例えばクラウドおよびデータ中心のシステムなどの、さまざまなコンピューティング・システムおよびアーキテクチャにおけるリモート・メモリの使用を、性能の視点から効果的に可能にすることによって、本発明は、従来技術を上回る追加の特徴および利点を提供する。さらに具体的には、アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカは、非集約型メモリ(例えば、「拡張メモリ」)において実装され、非集約型メモリと共に使用されてよい。したがって、メモリ・アクセス・ブローカ・システムがなければ、メモリ書き込みの待ち時間が非常に大きいままであり続け、リモート・メモリおよび拡張メモリの利益および価値を損なうであろう。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実装する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実装するように、コンピュータ実装プロセスを生成すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。

Claims (10)

  1. プロセッサによって、早期書込み確認応答をサポートするメモリ・アクセス・ブローカを使用するための方法であって、
    1つまたは複数の発行元アプリケーションによって検査するために、失敗した早期書込み確認応答(EWACK)書き込み要求がメモリ・アクセス・ブローカによって記録されるように、前記メモリ・アクセス・ブローカのEWACK機能を選択的に有効化し、前記メモリ・アクセス・ブローカによって、前記1つまたは複数の発行元アプリケーションへのEWACK動作および前記失敗したEWACK書き込み要求の通知をすることと、
    前記メモリ・アクセス・ブローカによって、EWACK書き込み要求ごとに書き込み要求識別子(ID)を生成することと、
    前記生成された書き込み要求IDをキューに配置することと
    を含んでいる、方法。
  2. 書き込み要求の実行時に前記メモリ・アクセス・ブローカの前記EWACK機能を選択的に有効化または無効化することをさらに含んでおり、前記メモリ・アクセス・ブローカが、メモリ・バス・マスタとメモリ・コントローラの間の中間ブローカとして機能する、請求項1に記載の方法。
  3. 前記失敗した書き込み要求を、前記メモリ・アクセス・ブローカに関連付けられた1つまたは複数のEWACKレジスタに記録することをさらに含んでいる、請求項1に記載の方法。
  4. 前記メモリ・アクセス・ブローカによって、メモリ・バス・マスタから書き込み要求を受信することと、
    前記メモリ・アクセス・ブローカによって、前記メモリ・バス・マスタから受信された前記書き込み要求をメモリ・コントローラに発行することと
    をさらに含んでいる、請求項1に記載の方法。
  5. 前記メモリ・アクセス・ブローカによって、メモリ・コントローラからWACK応答を受信すること、または
    前記メモリ・アクセス・ブローカによって、前記メモリ・コントローラから受信された前記WACK応答をメモリ・バス・マスタに発行すること
    をさらに含んでいる、請求項1に記載の方法。
  6. 前記メモリ・アクセス・ブローカによって、メモリ・コントローラから受信されたWACK応答を前記キューから取り出された生成済みの書き込み要求IDと比較することをさらに含んでいる、請求項に記載の方法。
  7. 前記キューから取り出された前記生成済みの書き込み要求IDが、前記メモリ・コントローラから受信された前記WACK応答に一致しないということを決定したときに、前記メモリ・アクセス・ブローカによって、1つまたは複数のEWACKレジスタ内で失敗したEWACK書き込み要求を示すことと、
    前記1つまたは複数の発行元アプリケーションによって、前記1つまたは複数のEWACKレジスタに記録された前記失敗したEWACK書き込み要求を識別することと
    をさらに含んでいる、請求項に記載の方法。
  8. 前記1つまたは複数のEWACKレジスタ内で示された前記失敗したEWACK書き込み要求を識別したときに、前記1つまたは複数の発行元アプリケーションに対して各書き込み要求を再発行することを要求することをさらに含んでいる、請求項に記載の方法。
  9. 早期書込み確認応答をサポートするメモリ・アクセス・ブローカを使用するためのシステムであって、
    実行可能な命令を含む1つまたは複数のコンピュータを備えており、前記命令が、実行された場合に、前記システムに、
    1つまたは複数の発行元アプリケーションによって検査するために、失敗した早期書込み確認応答(EWACK)書き込み要求がメモリ・アクセス・ブローカによって記録されるように、前記メモリ・アクセス・ブローカのEWACK機能を選択的に有効化し、前記メモリ・アクセス・ブローカによって、前記1つまたは複数の発行元アプリケーションへのEWACK動作および前記失敗したEWACK書き込み要求の通知をすることと、
    前記メモリ・アクセス・ブローカによって、EWACK書き込み要求ごとに書き込み要求識別子(ID)を生成することと、
    前記生成された書き込み要求IDをキューに配置することと
    を実行させる、システム。
  10. 構造化されていないテキスト・データからの対人関係の発見および解析のためのコンピュータ・プログラムであって、プロセッサに、
    1つまたは複数の発行元アプリケーションによって検査させるために、失敗した早期書込み確認応答(EWACK)書き込み要求がメモリ・アクセス・ブローカによって記録されるように、前記メモリ・アクセス・ブローカのEWACK機能を選択的に有効化し、前記メモリ・アクセス・ブローカによって、前記1つまたは複数の発行元アプリケーションへのEWACK動作および前記失敗したEWACK書き込み要求の通知をすることと、
    前記メモリ・アクセス・ブローカによって、EWACK書き込み要求ごとに書き込み要求識別子(ID)を生成することと、
    前記生成された書き込み要求IDをキューに配置することと
    を実行させるためのコンピュータ・プログラム。
JP2020518635A 2017-10-13 2018-10-10 アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システム Active JP7100941B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/783,069 2017-10-13
US15/783,069 US10423563B2 (en) 2017-10-13 2017-10-13 Memory access broker system with application-controlled early write acknowledgment support and identification of failed early write acknowledgment requests to guarantee in-order execution of memory requests of applications
PCT/IB2018/057834 WO2019073394A1 (en) 2017-10-13 2018-10-10 MEMORY ACCESS BROKER SYSTEM WITH APPLICATION-EARLY WRITTEN RECEIVING RECEIPT SUPPORT

Publications (3)

Publication Number Publication Date
JP2020537227A JP2020537227A (ja) 2020-12-17
JP2020537227A5 JP2020537227A5 (ja) 2021-02-12
JP7100941B2 true JP7100941B2 (ja) 2022-07-14

Family

ID=66096466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020518635A Active JP7100941B2 (ja) 2017-10-13 2018-10-10 アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システム

Country Status (6)

Country Link
US (1) US10423563B2 (ja)
JP (1) JP7100941B2 (ja)
CN (1) CN111201521B (ja)
DE (1) DE112018004220T5 (ja)
GB (1) GB2580275B (ja)
WO (1) WO2019073394A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911308B2 (en) * 2017-09-18 2021-02-02 Rapyuta Robotics Co., Ltd. Auto-determining and installing missing components to a to-be-managed device by a single execution of unique device setup command
WO2019237010A1 (en) * 2018-06-08 2019-12-12 Fungible, Inc. Early acknowledgment for write operations
US11341052B2 (en) * 2018-10-15 2022-05-24 Texas Instruments Incorporated Multi-processor, multi-domain, multi-protocol, cache coherent, speculation aware shared memory and interconnect
US11308243B2 (en) * 2019-09-11 2022-04-19 International Business Machines Corporation Maintenance of access for security enablement in a storage device
US11410417B2 (en) * 2020-08-17 2022-08-09 Google Llc Modular system for automatic hard disk processing and verification
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001216259A (ja) 2000-02-04 2001-08-10 Hitachi Ltd マルチプロセッサシステム及びそのトランザックション制御方法
JP2003098947A (ja) 2001-09-26 2003-04-04 Toshiba Corp 学習支援装置および学習支援方法
JP2012529094A (ja) 2009-06-02 2012-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション ペリフェラル・コンポーネント・インターコネクト(pci)エクスプレス・ネットワークにおける損失されたポステッド・ライト・パケットおよび順序の狂ったポステッド・ライト・パケットの検出
WO2016039198A1 (ja) 2014-09-10 2016-03-17 ソニー株式会社 アクセス制御方法、バスシステム、および半導体装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537555A (en) 1993-03-22 1996-07-16 Compaq Computer Corporation Fully pipelined and highly concurrent memory controller
US6279065B1 (en) 1998-06-03 2001-08-21 Compaq Computer Corporation Computer system with improved memory access
US7111153B2 (en) * 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
US9189441B2 (en) * 2012-10-19 2015-11-17 Intel Corporation Dual casting PCIE inbound writes to memory and peer devices
US10073626B2 (en) * 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
US9235521B2 (en) 2013-07-22 2016-01-12 Avago Technologies General Ip (Singapore) Pte Ltd Cache system for managing various cache line conditions
US20150261677A1 (en) 2014-03-12 2015-09-17 Silicon Graphics International Corp. Apparatus and Method of Resolving Protocol Conflicts in an Unordered Network
GB2533808B (en) * 2014-12-31 2021-08-11 Advanced Risc Mach Ltd An apparatus and method for issuing access requests to a memory controller
US10037220B2 (en) 2015-11-20 2018-07-31 International Business Machines Corporation Facilitating software-defined networking communications in a container-based networked computing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001216259A (ja) 2000-02-04 2001-08-10 Hitachi Ltd マルチプロセッサシステム及びそのトランザックション制御方法
JP2003098947A (ja) 2001-09-26 2003-04-04 Toshiba Corp 学習支援装置および学習支援方法
JP2012529094A (ja) 2009-06-02 2012-11-15 インターナショナル・ビジネス・マシーンズ・コーポレーション ペリフェラル・コンポーネント・インターコネクト(pci)エクスプレス・ネットワークにおける損失されたポステッド・ライト・パケットおよび順序の狂ったポステッド・ライト・パケットの検出
WO2016039198A1 (ja) 2014-09-10 2016-03-17 ソニー株式会社 アクセス制御方法、バスシステム、および半導体装置

Also Published As

Publication number Publication date
US20190114284A1 (en) 2019-04-18
GB2580275A (en) 2020-07-15
US10423563B2 (en) 2019-09-24
CN111201521B (zh) 2023-09-15
CN111201521A (zh) 2020-05-26
GB2580275B (en) 2021-03-03
WO2019073394A1 (en) 2019-04-18
DE112018004220T5 (de) 2020-05-07
JP2020537227A (ja) 2020-12-17
GB202006359D0 (en) 2020-06-17

Similar Documents

Publication Publication Date Title
JP7100941B2 (ja) アプリケーションによって制御された早期書込み確認応答をサポートするメモリ・アクセス・ブローカ・システム
US9798663B2 (en) Granting exclusive cache access using locality cache coherency state
US20180239611A1 (en) Running a kernel-dependent application in a container
US8938712B2 (en) Cross-platform virtual machine and method
US20200412788A1 (en) Asynchronous workflow and task api for cloud based processing
US10664386B2 (en) Remotely debugging an operating system via messages including a list back-trace of applications that disable hardware interrupts
US9606827B2 (en) Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
US11347512B1 (en) Substitution through protocol to protocol translation
US10104171B1 (en) Server architecture having dedicated compute resources for processing infrastructure-related workloads
US9354967B1 (en) I/O operation-level error-handling
US10884888B2 (en) Facilitating communication among storage controllers
US9612860B2 (en) Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
US10789008B2 (en) Reducing write collisions in data copy
US11030100B1 (en) Expansion of HBA write cache using NVDIMM
US11314555B2 (en) Synchronous re-execution of a data transformation operation to obtain further details regarding an exception
US11178216B2 (en) Generating client applications from service model descriptions
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
US12008413B2 (en) Vector processing employing buffer summary groups
US11520713B2 (en) Distributed bus arbiter for one-cycle channel selection using inter-channel ordering constraints in a disaggregated memory system
US20230030241A1 (en) Intersystem processing employing buffer summary groups
US20210374049A1 (en) Select decompression headers and symbol start indicators used in writing decompressed data
US10831571B2 (en) Communicating between systems using a coupling facility list structure

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220329

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20220526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220606

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220621

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20220621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220629

R150 Certificate of patent or registration of utility model

Ref document number: 7100941

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150