(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-25
(54)【発明の名称】NVMベース高容量ニューラル・ネットワーク推論エンジン
(51)【国際特許分類】
G06F 9/38 20180101AFI20240315BHJP
G06F 12/0862 20160101ALI20240315BHJP
G06F 11/00 20060101ALI20240315BHJP
【FI】
G06F9/38 310A
G06F12/0862 100
G06F11/00 606F
G06F11/00 606A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023560055
(86)(22)【出願日】2022-03-30
(85)【翻訳文提出日】2023-09-28
(86)【国際出願番号】 CN2022084030
(87)【国際公開番号】W WO2022206828
(87)【国際公開日】2022-10-06
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】クマール、アーヴィンド
(72)【発明者】
【氏名】キム、キュ-ヒョン
(72)【発明者】
【氏名】ディヴァカルニ、ラマチャンドラ
(72)【発明者】
【氏名】バーンズ、ジェフリー リン
【テーマコード(参考)】
5B013
5B205
【Fターム(参考)】
5B013AA02
5B205NN92
(57)【要約】
ニューラル・ネットワーク推論エンジンのためのシステム、方法、およびコンピュータ・プログラム製品が開示される。推論エンジン・システムは、第1のメモリと、第1のメモリと通信状態にあるプロセッサとを含むことができる。プロセッサは、動作を実施するように構成され得る。プロセッサが実施するように構成される動作は、第1のタスクを、上記第1のメモリを用いてフェッチすること、および、第1のタスクを処理するために、第1のタスクをプロセッサに送出することを含むことができる。動作は、プロセッサが第1のタスクを処理している間に、第2のタスクを、第1のメモリを用いてプリフェッチすることをさらに含むことができる。動作は、第2のタスクをプロセッサに、第1のタスクを処理することが終了すると、第1のメモリが送出することをさらに含むことができる。動作は、第2のタスクを、プロセッサが処理することをさらに含むことができる。
【特許請求の範囲】
【請求項1】
推論エンジン・システムであって、
第1のメモリと、
前記第1のメモリと通信状態にあるプロセッサとを備え、前記プロセッサは、
第1のタスクを、前記第1のメモリを用いてフェッチすること、
前記第1のタスクを処理するために、前記第1のタスクを前記プロセッサに前記第1のメモリによって送出すること、
前記プロセッサが前記第1のタスクを処理している間に、第2のタスクを、前記第1のメモリを用いてプリフェッチすること、
前記第2のタスクを前記プロセッサに、前記第1のメモリによってかつ前記第1のタスクを処理することが終了すると、送出すること、および、
前記第2のタスクを、前記プロセッサによって処理すること
を含む動作を実施するように構成される、推論エンジン・システム。
【請求項2】
前記動作は、
前記プロセッサが前記第1のタスクを処理することに応答して、第1のタスク計算結果を生成すること、
前記第1のタスク計算結果を前記第1のメモリに、前記プロセッサによって送信すること、
前記第1のタスク計算結果を、前記第1のメモリによって受容すること、および、
前記第1のタスク計算結果を第2のメモリに送出することをさらに含み、
前記第1のメモリは低密度メモリであり、前記第2のメモリは高密度メモリである、請求項1に記載のシステム。
【請求項3】
前記第2のメモリは、メモリの3次元スタックに集積化され、前記メモリの3次元スタックは複数のメモリ層を備える、請求項2に記載のシステム。
【請求項4】
前記第1のメモリは、第1のバッファ・セグメントおよび第2のバッファ・セグメントを有し、
前記第1のバッファ・セグメントは前記第1のタスクをフェッチし、
前記第2のバッファ・セグメントは前記第2のタスクをプリフェッチする、請求項1に記載のシステム。
【請求項5】
電力ゲートと通信状態にある、第1の温度を検知するための第1の温度センサをさらに備え、前記電力ゲートは、第1の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項1に記載のシステム。
【請求項6】
前記電力ゲートと通信状態にある、第2の温度を検知するための第2の温度センサをさらに備え、前記電力ゲートは、第2の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項5に記載のシステム。
【請求項7】
前記第1のメモリおよび前記プロセッサと通信する誤り訂正エンジンをさらに備え、前記誤り訂正エンジンのためのデータ・ビットおよびチェック・ビットは同じ場所に配置される、請求項1に記載のシステム。
【請求項8】
前記第1のメモリはバッファであり、
前記バッファはバッファ・ダイ内にあり、
前記バッファ・ダイは人工知能コアを有する、請求項1に記載のシステム。
【請求項9】
メモリ記憶および取り出しのための方法であって、
第1のタスクを、第1のメモリを用いてフェッチすること、
前記第1のタスクを処理するために、前記第1のタスクをプロセッサに前記第1のメモリによって送出すること、
前記プロセッサが前記第1のタスクを処理している間に、第2のタスクを、前記第1のメモリを用いてプリフェッチすること、
前記第2のタスクを前記プロセッサに、前記第1のメモリによってかつ前記第1のタスクを処理することが終了すると、送出すること、および、
前記第2のタスクを、前記プロセッサによって処理すること
を含む、方法。
【請求項10】
前記第1のタスクを処理する前記プロセッサに応答して、第1のタスク計算結果を生成すること、
前記第1のタスク計算結果を前記第1のメモリに、前記プロセッサによって送信すること、
前記第1のタスク計算結果を、前記第1のメモリによって受容すること、および、
前記第1のタスク計算結果を第2のメモリに送出することをさらに含み、
前記第1のメモリは低密度メモリであり、前記第2のメモリは高密度メモリである、請求項9に記載の方法。
【請求項11】
前記第2のメモリは、メモリの3次元スタックに集積化され、前記メモリの3次元スタックは複数のメモリ層を備える、請求項10に記載の方法。
【請求項12】
前記第1のメモリは、第1のバッファ・セグメントおよび第2のバッファ・セグメントを有し、
前記第1のバッファ・セグメントは前記第1のタスクをフェッチし、
前記第2のバッファ・セグメントは前記第2のタスクをプリフェッチする、請求項9に記載の方法。
【請求項13】
第1の温度を、第1の温度センサを用いて検知することをさらに含み、前記第1の温度センサは電力ゲートと通信状態にあり、前記電力ゲートは、第1の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項9に記載の方法。
【請求項14】
第2の温度を、第2の温度センサを用いて検知することをさらに含み、前記第2の温度センサは前記電力ゲートと通信状態にあり、前記電力ゲートは、第2の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項13に記載の方法。
【請求項15】
誤り訂正エンジンと、前記第1のメモリと、前記プロセッサとの間で通信することをさらに含み、
前記誤り訂正エンジンのためのデータ・ビットおよびチェック・ビットは同じ場所に配置される、請求項9に記載の方法。
【請求項16】
前記第1のメモリはバッファであり、
前記バッファはバッファ・ダイ内にあり、
前記バッファ・ダイは人工知能コアを有する、請求項9に記載の方法。
【請求項17】
メモリ記憶および取り出しのためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品はプログラム命令を実装したコンピュータ可読記憶媒体を備え、前記プログラム命令は、プロセッサに機能を実施させるために前記プロセッサによって実行可能であり、前記機能は、
第1のタスクを、第1のメモリを用いてフェッチすること、
前記第1のタスクを処理するために、前記第1のタスクを前記プロセッサに前記第1のメモリによって送出すること、
前記プロセッサが前記第1のタスクを処理している間に、第2のタスクを、前記第1のメモリを用いてプリフェッチすること、
前記第2のタスクを前記プロセッサに、前記第1のメモリによってかつ前記第1のタスクを処理することが終了すると、送出すること、および、
前記第2のタスクを、前記プロセッサによって処理すること
を含む、コンピュータ・プログラム製品。
【請求項18】
前記機能は、
前記第1のタスクを処理する前記プロセッサに応答して、第1のタスク計算結果を生成すること、
前記第1のタスク計算結果を前記第1のメモリに、前記プロセッサによって送信すること、
前記第1のタスク計算結果を、前記第1のメモリによって受容すること、および、
前記第1のタスク計算結果を第2のメモリに送出することをさらに含み、
前記第1のメモリは低密度メモリであり、前記第2のメモリは高密度メモリである、請求項17に記載のコンピュータ・プログラム製品。
【請求項19】
前記第1のメモリは、第1のバッファ・セグメントおよび第2のバッファ・セグメントを有し、
前記第1のバッファ・セグメントは前記第1のタスクをフェッチし、
前記第2のバッファ・セグメントは前記第2のタスクをプリフェッチする、請求項17に記載のコンピュータ・プログラム製品。
【請求項20】
前記機能は、
第1の温度を、第1の温度センサを用いて検知することをさらに含み、前記第1の温度センサは電力ゲートと通信状態にあり、前記電力ゲートは、第1の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項17に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、メモリの分野に関し、より詳細には、メモリからのデータ取り出しに関する。
【背景技術】
【0002】
ニューラル・ネットワークは、メモリ・サブシステムに益々大きな要求を出す。これは、成長するモデル・サイズおよびデータセットを考慮すると、ディープ・ニューラル・ネットワーク(DNN :deep neural network)について特に当てはまる。オフ・チップ・メモリ・アクセスは、頻繁にエネルギーを消費し、時間がかかり、大きいパケージング・フォーム・ファクタを必要とする。熱課題は、メモリ・システムおよびシステム内で使用されるメモリ技術に制約を課す場合もある。
【発明の概要】
【0003】
本開示の実施形態は、ニューラル・ネットワーク推論エンジンのためのシステム、方法、およびコンピュータ・プログラム製品を含む。本開示の幾つかの実施形態において、推論エンジン・システムは、第1のメモリと、第1のメモリと通信状態にあるプロセッサとを含むことができる。プロセッサは、動作を実施するように構成され得る。プロセッサが実施するように構成される動作は、第1のタスクを、上記第1のメモリを用いてフェッチすること、および、第1のタスクを処理するために、第1のタスクをプロセッサに送出することを含むことができる。動作は、プロセッサが第1のタスクを処理している間に、第2のタスクを、第1のメモリを用いてプリフェッチすることをさらに含むことができる。動作は、第1のタスクを処理することが終了すると、第2のタスクをプロセッサに、第1のメモリが送出することをさらに含むことができる。動作は、第2のタスクを、プロセッサが処理することをさらに含むことができる。
【0004】
上記概要は、本開示のそれぞれの例証される実施形態または全ての実装態様を説明することを意図されない。
【0005】
本開示に含まれる図面は、本明細書に組み込まれ、その一部を形成する。図面は、本開示の実施形態を示し、説明と共に、本開示の原理を説明するのに役立つ。図面は、特定の実施形態を単に例証し、本開示を限定しない。
【図面の簡単な説明】
【0006】
【
図1】本開示によるメモリ・スタックを示す図である。
【
図2】本開示の実施形態による、集積化された人工知能を有するメモリ・スタックを示す図である。
【
図3a】本開示の実施形態による、メモリ・システムを示す図である。
【
図3b】本開示の実施形態による、メモリ・システムによって完了されるタスクのタイムラインを示す図である。
【
図4a】本開示の実施形態による、メモリ・システムを示す図である。
【
図4b】本開示の実施形態による、メモリ・システムによって完了されるタスクのタイムラインを示す図である。
【
図5a】本開示の実施形態による、メモリ・システムを示す図である。
【
図5b】本開示の実施形態による、メモリ・システムによって完了されるタスクのタイムラインを示す図である。
【
図6】本開示の実施形態による、メモリ・システムを示す図である。
【
図7】本開示の実施形態による、メモリ・システムを示す図である。
【
図8】本開示の実施形態による、クラウド・コンピューティング環境を示す図である。
【
図9】本開示の実施形態による、抽象化モデル・レイヤを示す図である。
【
図10】本開示の実施形態による、本明細書で説明する方法、ツール、およびモジュール、ならびに任意の関連する機能の1つまたは複数を実装するときに使用され得る例のコンピュータ・システムの高レベル・ブロック図である。
【発明を実施するための形態】
【0007】
本明細書で説明する実施形態は、種々の修正形態および代替形態を受け入れる余地があるが、それらの詳細は、図面において例として示されており、詳細に説明されるであろう。しかしながら、説明される特定の実施形態が制限的な意味で考えられないことが理解されるべきである。逆に、意図は、本開示の範囲内に入る全ての修正物、等価物、および代替物をカバーすることである。
【0008】
本開示は、一般に、デジタル・メモリの分野に関し、より詳細には、メモリからのデータ取り出しに関する。本開示のさらなる態様は、当業者に明らかになるであろう。これらの態様の幾つかは、以下でさらに説明される。
【0009】
本開示の実施形態は、不揮発性メモリ・ベース高容量ニューラル・ネットワーク推論エンジン用のシステム、方法、およびコンピュータ・プログラム製品を含む。幾つかの実施形態は、ディープ・ニューラル・ネットワーク・アプリケーションにおいて特に有用である可能性がある。本開示の幾つかの実施形態において、推論エンジン・システムは、第1のメモリと、第1のメモリと通信状態にあるプロセッサとを含むことができる。プロセッサは、動作を実施するように構成され得る。プロセッサが実施するように構成される動作は、第1のタスクを、上記第1のメモリを用いてフェッチすること、および、第1のタスクを処理するために、第1のタスクをプロセッサに送出することを含むことができる。動作は、プロセッサが第1のタスクを処理している間に、第2のタスクを、第1のメモリを用いてプリフェッチすることをさらに含むことができる。動作は、第2のタスクをプロセッサに、第1のタスクを処理することが終了すると、第1のメモリが送出することをさらに含むことができる。動作は、第2のタスクを、プロセッサが処理することをさらに含むことができる。
【0010】
本開示を理解するのを助けるために、
図1は、本開示の実施形態によるメモリ・スタック100を示す。メモリ・スタック100は、メモリ層110内に積み重ねられたメモリ・ダイ110a、110b、110c、110d、110e、110f、および110gを含む。垂直インターコネクト112は、メモリ・ダイ110a、110b、110c、110d、110e、110f、および110gをバッファ・ダイ120に接続する。垂直インターコネクト112は、例えば、マイクロバンプ、ピラー、または直接パッド・ツー・パッド・ボンドであってよい。バッファ・ダイ120は、1つまたは複数のバッファ・セグメント120a、120b、および120cを有することができる。メモリ・スタック100は、C4(controlled collapse chip connection)130によって別のシステム(例えば、メモリ・チップ)に接続することができる。
【0011】
幾つかの実施形態において、メモリ・ダイ110a、110b、110c、110d、110e、110f、および110gは、1つまたは複数のタイプの不揮発性メモリを含むことができる。メモリ・ダイ110a、110b、110c、110d、110e、110f、および110gは、例えば、高密度メモリを含むことができる。メモリ・ダイ110a、110b、110c、110d、110e、110f、および110gは、例えば、相変化メモリまたは磁気抵抗ランダム・アクセス・メモリ(MRAM: magnetoresistive random-access memory)あるいはその両方を含むことができる。
【0012】
幾つかの実施形態において、メモリ・ダイ110a、110b、110c、110d、110e、110f、および110gが、高耐久性を有し、データを高温で維持することが可能で、低レイテンシを有するメモリ・タイプを使用することが好ましい場合がある。幾つかの実施形態において、メモリ層110は、読み取り専用データを含むことができる、または、メモリ層110は、まれに書き込まれるかまたは変更されるデータを含むことができる。例えば、幾つかの実施形態において、完全に開発された人工知能(AI: artificial intelligence)モデルはメモリ層110上に記憶され得る;AIモデルは、プロセッサによって使用されるために、1つまたは複数のバッファ・セグメント120a、120b、および120cによってメモリ層110から、全部または一部(複数可)をフェッチされ得る。こうして、大きいAIモデルは、低速高密度メモリで構成されるメモリ・スタック100内に記憶され得、AIモデルを使用する場合のレイテンシは、高速低密度メモリをバッファ・セグメント120a、120b、および120cとして使用することによって低減され得る。
【0013】
バッファ・ダイ120は、1つまたは複数のバッファを含むことができる。幾つかの実施形態において、1つのバッファは、複数のバッファ・セグメント120a、120b、および120cに区分化され得る。幾つかの実施形態において、複数のバッファが使用され得、各バッファは、区分化されなくてもよく、または複数のバッファ・セグメント120a、120b、および120cに区分化されてもよい。複数のバッファ・セグメント120a、120b、および120cは、複数のフェッチを、同時に、直列に、またはその何らかの組合せで実施することができる。
【0014】
バッファ・セグメント120a、120b、および120cはメモリであってよい。幾つかの実施形態において、バッファ・セグメント120a、120b、および120cは、例えば、スタティック・ランダムアクセス・メモリ(SRAM: static random-access memory)またはダイナミック・ランダムアクセス・メモリ(DRAM: dynamic random-access memory)等の高速低密度メモリであってよい。幾つかの実施形態において、バッファ・セグメント120a、120b、および120cは、プロセッサが他のデータを処理している間、データを保持することができる、プロセッサが処理しているデータを保持することができる、および/または、プロセッサがデータを処理し、データを再書き込みする(例えば、引き出されたデータを計算によって上書きする)間、データを保持することができる。幾つかの実施形態において、バッファ・セグメント120a、120b、および120cは、処理されたデータ(例えば、タスク計算結果)を記憶するためにメモリ層110に送出することができる;幾つかの実施形態において、バッファ・セグメント120a、120b、および120cは、処理されたデータを記憶するためにメモリ層110に送出し、その後、他のデータをフェッチして、処理または計算あるいはその両方のためにプロセッサに送出することができる。
【0015】
本開示の幾つかの実施形態において、メモリ・スタック100システムは、プロセッサが第1のタスクを処理することに応答して第1のタスク計算結果を生成することができる。プロセッサは、第1のタスク計算結果を第1のメモリ(例えば、バッファまたはバッファ・セグメント120a、120b、および120c)に送信することができる;第1のメモリは第1のタスク計算結果を受容することができる。第1のメモリは、第1のタスク計算結果を第2のメモリ(例えば、メモリ・スタック100あるいはバッファまたはメモリ・ダイ110a、110b、110c、110d、110e、110f、または110g)に送出することができる。幾つかの実施形態において、第1のメモリは低密度メモリであってよく、第2のメモリは高密度メモリであってもよい。幾つかの実施形態において、第2のメモリは、メモリの3次元スタック(例えば、メモリ・スタック)に集積化され得、メモリの3次元スタックは、複数のメモリ層(例えば、メモリ・ダイ110a、110b、110c、110d、110e、110f、および110g)を備える。
【0016】
本開示の幾つかの実施形態において、第1のメモリはバッファであり、バッファはバッファ・ダイ内にあり、バッファ・ダイは人工知能コアを有する。
図2は、本開示の実施形態による、AI集積化メモリ・スタック204およびそのコンポーネントを示す。
【0017】
メモリ・スタック200は、1つまたは複数のメモリ・ダイ210a、210b、および210cを含むメモリ・ダイ層210を有することができる。メモリ・スタック200は、1つまたは複数のバッファ・セグメント220a、220b、および220cを有するバッファ・ダイ220を有することもできる。メモリ・スタック200は、AIユニット202と組み合わされ得る。AIユニット202は、AIコア・セット234を有するAIアクセラレータ232を含むことができる。AIコア・セットは、複数のAIコア234a、234b、234c、および234dを有することができる。AIコアの1つまたは複数は、例えば、スクラッチパッド(例えば、デジタル・スクラッチパッドまたはスクラッチパッド・メモリあるいはその両方)を含むことができる;幾つかの実施形態において、スクラッチパッドは、レイテンシを低減または隠蔽するために複数のバッファリング(例えば、ダブル・バッファリング)を含むことができる。AIアクセラレータ232は、AI対応バッファ・ダイ250を形成するためにバッファ・ダイ220内に集積化され得る。幾つかの実施形態において、AI対応バッファ・ダイ250は、AIアクセラレーションならびにコンピュート能力を含むことができる(例えば、それは、プロセッサを含むことができる)。
【0018】
幾つかの実施形態において、バッファ・ダイおよびコンピュート・ダイは、組み合わされ得る。
図3aは、本開示のそのような実施形態による、メモリ・システム300を示す。メモリ310は、コンピュート・ダイ320と通信状態で示される。コンピュート・ダイ320内のバッファ326は、フェッチされたタスクA 324aを有して、それをコンピュート・コア328に送出する。その間、プリフェッチ・コントローラ322は、メモリ310からのタスクB 324bのプリフェッチングを指示する。
【0019】
図3bは、本開示の実施形態による、メモリ・システム300によって完了されるタスクのグラフィカル・タイムライン340を示す。グラフィカル・タイムライン340は、時間342(x軸)にわたって完了されるタスクを示す。メモリ・システム300の各コンポーネントの作業は、コンポーネントの名前(y軸上に挙げられる)によって識別され、コンポーネントが実施するタスクは、グラフ上に示される。
【0020】
バッファ326は、バッファによって完了される作業とも呼ばれ得るバッファ作業352を実施する。バッファ作業352は、タスクAのためのデータ352aをフェッチすること(またはプリフェッチすること)およびそれを包含することを含むことができる。バッファ作業352は、タスクBのためのデータ352bをプリフェッチすること(またはフェッチすること)およびそれを包含することを含むこともできる。コンピュート・コア328は、コンピュート・コアによって完了される作業とも呼ばれ得るコア作業356を実施する。コア作業356は、タスクA 356aを実施することおよびタスクB 356bを実施することを含む。プリフェッチ・コントローラ322は、プリフェッチ・コントローラによって実施される作業とも呼ばれ得るプリフェッチ・コントローラ作業358を実施する。プリフェッチ・コントローラ作業358は、タスクBのためのデータのプリフェッチ358aをトリガーすることおよびタスクCのためのデータのプリフェッチ358bをトリガーすることを含むことができる。
【0021】
タスクAのためのデータ352aは、コンピュート・コア328がタスクA 356aを実施する前に、実施する間に、または実施した後に、あるいはその組合せにおいてバッファ326内に保持され得る。幾つかの実施形態において、コンピュート・コア328は、計算のために、タスクAのためのデータ356aをバッファ326から受信し、それにより、バッファ326を、他のタスクを実施するために利用可能にすることができる。そのような実施形態において、コンピュート・コア328は、完了したタスクA 356aの結果(例えば、処理されたデータ)を、記憶メモリ(例えば、メモリ310、または、処理されたデータを別のタスクのために使用することができる異なるメモリ)に転送するために、同じバッファ326(またはバッファ・セグメント)、または、異なるバッファ(またはバッファ・セグメント)に送出することができる。
【0022】
幾つかの実施形態において、バッファ326およびAIアクセラレータは共に、コンピュート・ダイ320内に集積化され得る。AIアクセラレータは、コンピュート・ダイ320内にそれ自身のサブユニットを有することができる、または、別のコンポーネント内に集積化され得る(例えば、AIアクセラレータはバッファ326内に集積化され得る)。
【0023】
幾つかの実施形態において、第1のバッファ(またはセグメント)と第2のバッファ(またはセグメント)との間の交互の作業(例えば、データをフェッチすること)が使用され得る。バッファ(またはバッファ・セグメント)間のバッファ・ユニット交互作業は、ピンポン・バッファと呼ばれ得る。
図4aは、本開示のそのような実施形態による、メモリ・システム400を示す。
【0024】
メモリ410は、コンピュート・ダイ420と通信状態で示される。コンピュート・ダイ420内の第1のバッファ426a(またはバッファ・セグメント)は、フェッチされたタスクA 424aを有して、それをコンピュート・コア428に送出し、コンピュート・ダイ420内の第2のバッファ426bは、プリフェッチされたタスクB 424bを有して、それをコンピュート・コア428に送出する。マルチプレクサ(MUX: multiplexer)430は、データ・トラフィックを方向付ける(direct)ことができ、プリフェッチ・コントローラ422は、メモリ410からのタスクC 424cのプリフェッチングを指示することができる。
【0025】
MUX430は、第1のバッファ426aおよび第2のバッファ426bからのデータを順序付けし(order)方向付けする(direct)ことができる。MUX430は、例えば、まずタスクA 424aを第1のバッファ426aからコンピュート・コア428に送信し、そしてタスクB 424bを第2のバッファ426bからコンピュート・コア428に送信することができる。MUX430は、別のタスクを送信する前に、1つのタスクが完了するまで待つことができる。MUX430は、タスクがもたらしたデータ(例えば、タスクがもたらした計算結果等の処理されたデータ)をバッファ(例えば、第1のバッファ426aまたは第2のバッファ426bあるいはその両方)に方向付けることもでき、バッファは、次に、そのデータを、記憶メモリ(例えば、メモリ410または外部メモリ)に送出することができる。MUX430は、代替的にまたは付加的に、完了したタスクがもたらしたデータを異なるプロセッサ(例えば、接続されたまたは別個のシステム内のコンピュート・コア)に送出するようにバッファに指示することができる。異なるプロセッサは、タスクがもたらしたデータを使用して、他のデータを計算することができる;例えば、処理されたデータは、別のシステムに別の計算用の入力データとして転送され得る。
【0026】
ピンポン・バッファは、プロセッサは、別のタスクに対して作業しており、したがって、新しいタスクを受容する準備がまだできていない間、タスクをフェッチする1つのバッファ(またはバッファ・セグメント)を含むことができる。プロセッサがタスクを計算する準備ができる前にタスクをフェッチすることは、プリフェッチと呼ばれ得る。
【0027】
図4bは、本開示の実施形態による、メモリ・システム400によって完了されるタスクのグラフィカル・タイムライン440を示す。グラフィカル・タイムライン440は、時間442(x軸)にわたって完了されるタスクを示す。メモリ・システム400の各コンポーネントの作業は、コンポーネントの名前(y軸上に挙げられる)によって識別され、コンポーネントが実施するタスクは、グラフ上に示される。
【0028】
第1のバッファ426aは、第1のバッファによって完了される作業とも呼ばれ得る第1のバッファ作業452を実施する。第1のバッファ作業452は、タスクAのためのデータ452aをフェッチすること(またはプリフェッチすること)およびそれを包含することを含むことができる。第1のバッファ作業452は、タスクCのためのデータ452cをプリフェッチすること(またはフェッチすること)およびそれを包含することを含むこともできる。第2のバッファ426bは、第2のバッファによって完了される作業とも呼ばれ得る第2のバッファ作業454を実施する。第2のバッファ作業454は、タスクBのためのデータ454aをフェッチすること(またはプリフェッチすること)およびそれを包含することを含むことができる。
【0029】
コンピュート・コア428は、コンピュート・コアによって完了される作業とも呼ばれ得るコア作業456を実施する。コア作業456は、タスクA 456aを実施すること、タスクB 456bを実施すること、およびタスクC 456cを実施することを含む。プリフェッチ・コントローラ422は、プリフェッチ・コントローラによって実施される作業とも呼ばれ得るプリフェッチ・コントローラ作業458を実施する。プリフェッチ・コントローラ作業458は、タスクBのためのデータのプリフェッチ458aをトリガーすることおよびタスクCのためのデータのプリフェッチ458bをトリガーすることを含むことができる。
【0030】
タスクAのためのデータ452aは、コンピュート・コア428がタスクA 456aを実施する前に、実施する間に、または実施した後に、あるいはその組合せにおいて第1のバッファ426a内に保持され得る。幾つかの実施形態において、コンピュート・コア428は、計算のために、タスクAのためのデータ456aを第1のバッファ426から受信し、それにより、バッファ426を、他のタスクを実施するために利用可能にすることができる。そのような実施形態において、コンピュート・コア428は、完了したタスクA 456aの結果(例えば、処理されたデータ)を、記憶メモリ(例えば、メモリ410、または、処理されたデータを別のタスクのために使用することができる異なるメモリ)に転送するために、同じ第1のバッファ426a(またはバッファ・セグメント)または異なるバッファ(またはバッファ・セグメント)に送出することができる。
【0031】
幾つかの実施形態において、ピンポン・バッファは、エンド・ユーザによって実現される、より低レイテンシにとって好ましい可能性がある。例えば、メモリ410は、データの取り出しに数秒を要求する場合がある低速高密度メモリであってよい;交互の作業は、タスクB 452bがコンピュート・コア428のために取り出され準備されて、タスクA 452aを完了した直後にタスクB 452bに対して作業するように、タスクB 452bを第2のバッファ426bがプリフェッチする間に、コンピュート・コア428が第1のバッファ426a内でタスクA 452aに対する作業を実施することを可能にする。そのような実施形態において、第1のバッファ426aは、その宛先に計算結果を送出し、タスクC 424cをプリフェッチすることができる。
【0032】
本開示の幾つかの実施形態において、バッファは、第1のバッファ・セグメントおよび第2のバッファ・セグメントを有する第1のメモリであってよい。第1のバッファ・セグメントは第1のタスクをフェッチすることができ、第2のバッファ・セグメントは第2のタスクをプリフェッチすることができる。第2のバッファ・セグメントは、プロセッサが第1のタスクを処理している間に第2のタスクをフェッチすることができる。
【0033】
幾つかの実施形態において、バッファおよびコンピュート・コアは、別個のダイ上にあってもよい。
図5aは、本開示のそのような実施形態によるメモリ・システム500を示す。メモリ510は、バッファ・ダイ526およびコンピュート・ダイ520と通信状態で示される。バッファ・ダイ526はコンピュート・ダイ520と通信状態にある。
【0034】
バッファ・ダイ526は、第1のバッファ・セグメント526aおよび第2のバッファ・セグメント526bを有する。各バッファ・セグメントは、フェッチされたタスクを有し、フェッチされたタスクは、処理または計算あるいはその両方のためにプロセッサまたはコンピュート・コア528に送出され得る。第1のバッファ・セグメント526aは、タスクA 524aをフェッチして、それをコンピュート・コア528に送出し、第2のバッファ・セグメント526bは、タスクB 524bをフェッチして、それをコンピュート・コア528に送出する。その間、プリフェッチ・コントローラ522は、メモリ510からのタスクC 524cのプリフェッチングを指示する。
【0035】
MUX(示さず)は、データ・トラフィックを順序付け、バッファ・セグメントにまたはバッファ・セグメントからコンピュート・コア528にあるいはその両方にデータ・トラフィックを方向付けるために使用され得る。幾つかの実施形態において、MUXは、処理されたデータ(例えば、計算結果)を同じメモリ510に戻すようにバッファに指示することができる;幾つかの実施形態において、MUXは、処理されたデータを、記憶または使用あるいはその両方のために、異なるメモリ、別のコンピュート・コア、別のプロセッサ、または他の場所あるいはその組合せに方向付けることができる。
【0036】
図5bは、本開示のそのような実施形態によるメモリ・システムによって完成されるタスクのタイムラインを示す。グラフィカル・タイムライン540は、時間542(x軸)にわたって完成されるタスクを示す。メモリ・システム500の各コンポーネントの作業は、コンポーネントの名前(y軸上に挙げられる)によって識別され、コンポーネントが実施するタスクは、グラフ上に示される。
【0037】
バッファ526は、バッファによって完了される作業とも呼ばれ得るバッファ作業552を実施する。バッファ作業552は、タスクAのためのデータ552aをフェッチすること(またはプリフェッチすること)およびそれを包含することを含むことができる。バッファ作業552は、タスクBのためのデータ552bをプリフェッチすること(またはフェッチすること)およびそれを包含することを含むこともできる。コンピュート・コア528は、コンピュート・コアによって完了される作業とも呼ばれ得るコア作業556を実施する。コア作業556は、タスクA 556aを実施することおよびタスクB 556bを実施することを含む。プリフェッチ・コントローラ522は、プリフェッチ・コントローラによって実施される作業とも呼ばれ得るプリフェッチ・コントローラ作業558を実施する。プリフェッチ・コントローラ作業558は、タスクBのためのデータのプリフェッチ558aをトリガーすることおよびタスクCのためのデータのプリフェッチ558bをトリガーすることを含むことができる。
【0038】
タスクAのためのデータ552aは、コンピュート・コア528がタスクA 556aを実施する前に、実施する間に、または実施した後に、あるいはその組合せにおいてバッファ526内に保持され得る。幾つかの実施形態において、コンピュート・コア528は、計算のために、タスクAのためのデータ556aをバッファ526から受信し、それにより、バッファ526を、他のタスクを実施するために利用可能にすることができる。そのような実施形態において、コンピュート・コア528は、完了したタスクA 556aの結果(例えば、処理されたデータ)を、記憶メモリ(例えば、メモリ510、または、処理されたデータを別のタスクのために使用することができる異なるメモリ)に転送するために、同じバッファ526(またはバッファ・セグメント)、または、異なるバッファ(またはバッファ・セグメント)に送出することができる。
【0039】
幾つかの実施形態において、バッファ526およびAIアクセラレータは共に、コンピュート・ダイ520内に集積化され得る。AIアクセラレータは、コンピュート・ダイ520内にそれ自身のサブユニットを有することができる、または、別のコンポーネント内に集積化され得る(例えば、AIアクセラレータはバッファ526内に集積化され得る)。
【0040】
本開示の幾つかの実施形態において、システムは、メモリおよびプロセッサと通信する誤り訂正エンジンをさらに含むことができる。
図6は、本開示のそのような実施形態によるメモリ・システム600を示す。
【0041】
メモリ610は、バッファ626およびコンピュート・ダイ620と通信状態で示される。バッファ626はコンピュート・ダイ620と通信状態にある。メモリ610は、データ・ビット622aをコンピュート・ダイ620に通信することができる。この通信は、直接(図示)またはバッファ(図示せず)を通して行われ得る。メモリ610は、チェック・ビット622bをコンピュート・ダイ620に通信することもできる。この通信は、直接(図示せず)またはバッファ(図示)を通して行われ得る。
図6は、バッファ626経由でコンピュート・ダイ620まで伝わるチェック・ビット622bおよびメモリ610からコンピュート・ダイ620まで直接送出されるデータ・ビット622aを示す。
【0042】
データ・ビット622aおよびチェック・ビット622bは、誤り訂正エンジン624に給送される。データは、コンピュート・コア628に送信される前に、検証され、所望される場合、訂正され得る。誤り訂正エンジン624は、メモリ・ダイ、バッファ・ダイ、コンピュート・ダイ620、または異なるダイ(例えば、異なるメモリのダイまたは専用誤り訂正ダイ)に位置することができる。幾つかの実施形態において、データ・ビット622a、チェック・ビット622b、および誤り訂正エンジン624は、同じ場所に(例えば、同じメモリ・ダイ、同じバッファ・ダイ、同じコンピュート・ダイ、または別個の誤り訂正ダイ上に)配置(co-locate)され得る。
【0043】
本開示の幾つかの実施形態において、センサは、システム、システムが含むデータ、または1つまたは複数の提携システム(例えばデータ収集システム)、あるいはその組合せを保護するために実装され得る。例えば、幾つかの実施形態において、システムは、第1の温度を検知するための第1の温度センサを含むことができる;第1の温度センサは、電力ゲートと通信状態にあってよく、電力ゲートは、第1の温度閾値に達する場合、電力をスロットルで調整(throttles power)する。幾つかの実施形態において、システムは、電力ゲートと通信状態にある、第2の温度を検知するための第2の温度センサをさらに含むことができる。電力ゲートは、第2の温度閾値に達する場合、電力をスロットルで調整することができる。電力ゲートは、任意の数のコンポーネントに関連することができ、温度閾値に基づいて、コンポーネントの1つまたは複数(例えば、バッファだけまたはシステム全体)に対する電力をスロットルで調整することができる。
図7は、本開示のそのような実施形態によるメモリ・システム700を示す。
【0044】
メモリ710は、バッファ・ダイ720上でプリフェッチ・コントローラ722、バッファ726、および電力ゲート730と通信状態で示される。バッファ726は、コンピュート・コア728と通信状態にある。メモリ710は、プログラムをバッファ726経由でコンピュート・コア728に送信することができる。
図7は、プログラムA 724aに対して作業するコンピュート・コア728およびプログラムB 724bを含むバッファ726を示す。プリフェッチ・コントローラ722は、プログラムC 724cのためのプリフェッチ要求をメモリに送信している。
【0045】
メモリ710は、電力ゲート730と通信状態にある温度センサ732a、732b、732c、732d、および732eが内蔵される。同様に、バッファ・ダイ720は、電力ゲート730と通信状態にある温度センサ734aおよび734bが内蔵される。メモリ710内の温度センサ732a、732b、732c、732d、および732eは、メモリ710全体を通して均等に分散され得る、あるいは、1つまたは複数の先導(bellwether)領域(例えば、特定の温度または閾値に最も迅速に達すると予想される領域)に集中され得る。同様に、バッファ・ダイ720内の温度センサ734aおよび734bは、バッファ・ダイ720全体を通して均等に分散され得る、あるいは、1つまたは複数の先導領域(例えば、特定の温度または閾値に最も迅速に達すると予想される領域)に集中され得る。システム700内の温度センサ732a、732b、732c、732d、732e、734a、および734bの数およびその配置は、システム、そのコンポーネント、リスク許容度、およびユーザ選好に応じて変動する場合がある。
【0046】
電力ゲート730は、システム700内のコンポーネントの任意の、幾つかの、または全てのコンポーネントに対する電力供給をスロットルで調整する(例えば、制限する、増加させる、またはなくす)ことができる。電力スロットリングは、手動コマンド(例えば、ユーザ・コマンド)または自動化コマンド(例えば、閾値に達すること)の結果であってよい。手動コマンドの例は、ユーザが、システム700をオフする理由を特定し、システム700に対する電力を中断するように電力ゲート730に手動で指示することができることである。自動化コマンドの例は、バッファ726に隣接する温度が安全温度閾値を超えることを、温度センサ734bが電力ゲート730に示すことができることであり、電力ゲート730は、バッファ726に供給される電力を低減することができる。
【0047】
幾つかの実施形態において、閾値温度は、システム全体を通して一貫性がある可能性がある。例えば、電力ゲート730は、温度センサ732a、732b、732c、732d、732e、734a、および734bの任意の温度センサが摂氏90°を超える場合に、システムまたはその任意のコンポーネントに対する電力を低減することができる。幾つかの実施形態において、閾値温度は、関連するコンポーネントに特有に設定され得る。例えば、メモリ710は、バッファ726より高い温度を許容する(例えば、その温度で動作する)ことができるとすることができる;そのような場合、メモリ710内の温度センサ732a、732b、732c、732d、および732eは摂氏120°の閾値温度を有することができ、一方、バッファ・ダイ720内の温度センサ734aおよび734bは摂氏80°の閾値温度を有することができる。異なるコンポーネントが、バッファ・ダイ720の異なるエリア内で保持され、各コンポーネントが異なる温度許容度を有する場合、温度センサ734aおよび734bの温度閾値は、互いに異なっていてもよい。同様に、異なるコンポーネントが、メモリ・ダイ710の異なるエリア内で保持され、各コンポーネントが異なる温度許容度を有する場合、温度センサ732a、732b、732c、732d、732e、734a、および734bの温度閾値は、センサごとに異なってもよい。
【0048】
閾値は、システム700が含む材料およびシステム700がどのように構築されるかに基づいて設定され得る。例えば、メモリ710内で使用されるメモリ・セルが摂氏5°から摂氏75°まで安全に動作する場合、電力ゲート730は、メモリ710内の温度センサ732a、732b、732c、732d、および732eの1つまたは複数が摂氏76°に達するかまたは摂氏5°未満に下がる場合、電力スロットリングをトリガーすることができる。幾つかの実施形態において、メモリ710内で使用されるメモリ・セルは、それらの強化された熱耐性(例えば、増加した温度で安全に動作する能力)のために選択され得る;メモリ710内で使用されるメモリ・セルが、摂氏5°から摂氏125°まで安全に動作する場合、電力ゲート730は、メモリ710内の温度センサ732a、732b、732c、732d、および732eの1つまたは複数が摂氏126°に達するかまたは摂氏5°未満に下がる場合、電力スロットリングをトリガーすることができる。
【0049】
同様に、バッファ・ダイ720および他のコンポーネントについての温度閾値は、同様に設定され得る。例えば、摂氏0°から摂氏50°まで安全に動作するバッファ726は、温度センサ734aまたは734bのいずれかが、摂氏50°を超えるまたは摂氏0°未満に下がる温度の読みを受信する場合に電力の供給を停止するために設定されたスロットリング閾値を有することができる。同様に、温度は、コンピュート・コア728、プリフェッチ・コントローラ722、電力ゲート730、およびシステム700の他のコンポーネント上でまたはその近くでも検知され得、スロットリング用の閾値は、種々のコンポーネントの特定の動作許容度を反映することができる。
【0050】
本開示の幾つかの実施形態において、温度は、システム700の種々のコンポーネント内でまたはその近くで検知および/または追跡され得、スロットリング閾値温度は、コンポーネントの全てについて同じとすることができる。例えば、ユーザは、システム内の任意のセンサについて摂氏45°の一様のスロットリング閾値温度を設定することができる。温度閾値は、自動的に設定され得る(例えば、いずれのシステムについても、閾値を同じにプリセットする)、半自動的に設定され得る(例えば、システム仕様が使用されて、特定のシステムまたはそのコンポーネントあるいはその両方について温度閾値を自動的にロードする)、手動で設定され得る(例えば、ユーザは、1つまたは複数の温度閾値を入力することができる)、またはその何らかの組合せで設定され得る。
【0051】
幾つかの実施形態において、閾値は、システム700が含む材料、システム700がどのように構築されるか、およびシステムの幾何形状に基づいて設定され得る。例えば、特定のメモリ・セルは、3秒以内に標準的な温度内に温度が入る場合にメモリ・セルの完全性が維持されるように、最大3秒の間、標準的な温度より高い温度で動作することができるようにされてもよい。そのような事例において、換気のよい平坦メモリ幾何形状内に位置するメモリ・セルは、メモリ・スタック(
図1参照)内のメモリ・セルより迅速に冷却することができる;そのため、平坦メモリ幾何形状内の温度センサ732a、732b、732c、732d、および732eに関連する温度閾値は、3秒を超えて過剰な温度に達した後にだけトリガーすることができ、一方、メモリ・スタック内の温度センサ732a、732b、732c、732d、および732eは即時にトリガーすることができる。
【0052】
本開示は、種々のシステムで実装され得、種々のシステムは、オンサイト・ハード配線式メモリ・ストレージ、クラウド経由でアクセスされるメモリ・ストレージ、アナログ・ストレージ、およびデジタル・ストレージを含むが、それに限定されない。本開示は、メモリおよびコンピュートを使用することができるいずれのシステムについてもより高速なメモリ・アクセスを可能にすることができる;メモリおよびコンピュートは、一体的かつ直接的に(例えば、1つの物理的コンピュータ・システムの一部)、ローカル接続(例えば、ローカル・エリア・ネットワーク)経由で、プライベート接続(例えば、バーチャル・プライベート・ネットワーク)経由で、または何らかの他の接続(例えば、ワイド・エリア・ネットワークまたはインターネット)経由で通信することができる。
【0053】
本開示が、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書で列挙される教示の実装態様が、クラウド・コンピューティング環境に限定されないことが理解される。むしろ、本開示の実施形態は、現在知られているかまたは後で開発される任意の他のタイプのコンピューティング環境と共に実装されることが可能である。
【0054】
クラウド・コンピューティングは、最小の管理努力またはサービスのプロバイダとのやりとりによって迅速に供給され解放され得る構成可能コンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールに対する簡便でオンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリのモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
【0055】
特徴は次の通りである:
【0056】
オンデマンド・セルフサービス:クラウド・コンシューマは、サービスのプロバイダとの人間とのやりとりを必要とすることなく、必要に応じて自動的に、サーバ稼働時間およびネットワーク・ストレージ等のコンピューティング能力を一方的に供給することができる。
【0057】
ブロード・ネットワーク・アクセス:能力は、ネットワークを通じて利用可能であり、異種のシンまたはシック・クライアント・プラットフォーム(例えば、モバイル電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通してアクセスされる。
【0058】
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用して複数のコンシューマに供するためにプールされ、その際、異なる物理的および仮想的リソースは、需要に応じて動的に割り当てられ、再割り当てされる。コンシューマは、一般に、提供されるリソースの正確な所在地(exact portion)に対する制御または知識を全く持たないが、より高い抽象化のレベルで所在地(例えば、国、州、またはデータセンタ)を指定することができ得る点で、所在地に制約されないという感覚(a sense of portion independence)が存在する。
【0059】
迅速な弾力性:能力は、迅速かつ伸縮自在に、場合によっては自動的に供給されて、即座にスケール・アウトし、また、迅速に解放されて即座にスケール・インすることができる。コンシューマにとって、プロビジョニングのために利用可能な能力は、しばしば無制限であるように見え、いつでもどんな量でも購入され得る。
【0060】
サービスが測定可能であること:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、有効なユーザ・アカウント)に適切な或る抽象化のレベルで計測能力を利用することによって、リソース使用を自動的に制御し最適化する。リソース使用は、モニタされ、制御され、報告され得、利用されるサービスのプロバイダおよびコンシューマの両方について透明性を提供する。
【0061】
サービス・モデルは次の通りである:
【0062】
サービスとしてのソフトウェア(SaaS :Software as a Service):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インタフェース(例えばウェブ・ベース電子メール)を通して種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考えられる例外を除いて、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらに個々のアプリケーション能力を含む基礎のクラウド・インフラストラクチャを管理または制御しない。
【0063】
サービスとしてのプラットフォーム(PaaS :Platform as a
Service):コンシューマに提供される能力は、クラウド・インフラストラクチャ上に、コンシューマが作成したまたは取得したアプリケーションを展開することであり、そのアプリケーションは、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成される。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎のクラウド・インフラストラクチャを管理または制御しないが、コンシューマは、展開されたアプリケーション、そしておそらくは、アプリケーション・ホスティング環境構成に対する制御を有する。
【0064】
サービスとしてのインフラストラクチャ(IaaS :Infrastructure as a Service):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および他の基本的コンピューティング・リソースを供給することであり、そこで、コンシューマは、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを展開し実行することができる。コンシューマは、基礎のクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、および展開されたアプリケーションに対する制御を有し、コンシューマは、おそらくは、特定のネットワーキング・コンポーネント(例えば、ホスト・ファイアウォール)の制限された制御を有する。
【0065】
展開モデルは次の通りである:
【0066】
プライベート・クラウド:クラウド・インフラストラクチャは、組織のためにのみ動作する。クラウド・インフラストラクチャは、組織または第三者によって管理され得、オンプレミスまたはオフプレミスで存在することができる。
【0067】
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシ、または法令順守考慮事項あるいはその組合せ)を共有した特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織または第三者によって管理され得、オンプレミスまたはオフプレミスで存在することができる。
【0068】
パブリック・クラウド:クラウド・インフラストラクチャは、一般人または大きい業界団体にとって利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0069】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の構成体であり、各クラウドは、ユニークなエンティティのままであるが、データおよびアプリケーション移植性を可能にする、標準化されたまたは固有の技術(例えば、クラウド間の負荷平衡化のためのクラウド・バースティング)によって共に結合される。
【0070】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重きを置くサービス指向型である。クラウド・コンピューティングの核心には、相互接続されたノードのネットワークを含むインフラストラクチャが存在する。
【0071】
図8は、本開示の実施形態によるクラウド・コンピューティング環境810を示す。示すように、クラウド・コンピューティング環境810は、例えば、携帯情報端末(PDA: personal digital assistant)またはセルラ電話800A、デスクトップ・コンピュータ800B、ラップトップ・コンピュータ800C、または自動車コンピュータ・システム800Nあるいはその組合せのようなクラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信することができる1つまたは複数のクラウド・コンピューティング・ノード800を含む。ノード800は互いに通信することができる。ノード800は、上記で説明した、プライベート、コミュニティ、パブリック、またはハイブリッド・クラウド、またはその組合せ等の1つまたは複数のネットワークにおいて、物理的にまたは仮想的にグループ化され得る(示さず)。
【0072】
これは、クラウド・コンピューティング環境810が、クラウド・コンシューマがローカル・コンピューティング・デバイス上のリソースを維持する必要がない、サービスとしてのインフラストラクチャ、サービスとしてのプラットフォーム、またはサービスとしてのソフトウェアあるいはその組合せを提供することを可能にする。
図8に示すコンピューティング・デバイス800A~Nのタイプが単に例証であることを意図されること、および、コンピューティング・ノード800およびクラウド・コンピューティング環境810が、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続あるいはその両方を通じて(例えば、ウェブ・ブラウザを使用して)任意のタイプのコンピュータ化デバイスと通信することができることが理解される。
【0073】
図9は、本開示の実施形態による、(
図8の)クラウド・コンピューティング環境810によって提供される抽象化モデル・レイヤ900を示す。
図9に示すコンポーネント、レイヤ、および機能が単に例証であることを意図され、開示の実施形態がそれに限定されないことが前もって理解されるべきである。以下で示すように、以下のレイヤおよび対応する機能が提供される。
【0074】
ハードウェアおよびソフトウェア・レイヤ915は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム902;RISC(: Reduced Instruction Set Computer、縮小命令セット・コンピュータ)アーキテクチャ・ベース・サーバ904;サーバ906;ブレード・サーバ908;記憶デバイス911;ならびにネットワークおよびネットワーキング・コンポーネント912を含む。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア914およびデータベース・ソフトウェア916を含む。
【0075】
仮想化レイヤ920は、抽象化レイヤを提供し、抽象化レイヤから、仮想エンティティの以下の例:仮想サーバ922;仮想ストレージ924;仮想プライベート・ネットワークを含む仮想ネットワーク926;仮想アプリケーションおよびオペレーティング・システム928;ならびに仮想クライアント930が提供され得る。
【0076】
一例において、管理レイヤ940は、以下で説明する関数を提供することができる。リソース・プロビジョニング942は、クラウド・コンピューティング環境内でタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的調達を可能にする。計測および価格設定944は、リソースとしての価格追跡を提供し、クラウド・コンピューティング環境内で利用されると共に、請求書または送り状がこれらのリソースの消費について利用される。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマおよびタスクならびにデータおよび他のリソース用の保護についてアイデンティティ検証を提供する。ユーザ・ポータル946は、コンシューマおよびシステム管理者についてクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理948は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り振りおよび管理を提供する。サービス・レベル合意書(SLA: service level agreement)立案および履行950は、将来の要件が、SLAに従ってそれについて予測されるクラウド・コンピューティング・リソースのための事前配置およびその調達を可能にする。
【0077】
ワークロード・レイヤ960は、クラウド・コンピューティング環境がそれについて利用され得る機能の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション962;ソフトウェア開発およびライフサイクル管理974;仮想クラスルーム教育デリバリ966;データ分析処理968;トランザクション処理970;および1つまたは複数のNVMベース高容量ニューラル・ネットワーク推論エンジン972を含む。
【0078】
本開示が、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書で列挙する教示の実装態様が、クラウド・コンピューティング環境に限定されないことが理解される。むしろ、本開示の実施形態は、現在知られているかまたは後で開発され得る任意の他のタイプのコンピューティング環境と共に実装されることは可能である。
【0079】
図10は、本開示の実施形態による、本明細書で説明した、方法、ツール、およびモジュール、ならびに任意の関連する機能の1つまたは複数を(例えば、1つまたは複数のプロセッサ回路あるいはコンピュータのコンピュータ・プロセッサを使用して)実装するときに使用され得る例のコンピュータ・システム1001の高レベル・ブロック図を示す。幾つかの実施形態において、コンピュータ・システム1001の主要なコンポーネントは、1つまたは複数の中央処理ユニット(CPU: central processing unit)1002A、1002B、1002C、および1002Dを有するプロセッサ1002、メモリ・サブシステム1004、端末インタフェース1012、ストレージ・インタフェース1017、I/O(: Input/Output、入力/出力)デバイス・インタフェース1014、およびネットワーク・インタフェース1018を備えることができ、それらの全ては、メモリ・バス1003、I/Oバス1008、およびI/Oバス・インタフェース・ユニット1010経由でのコンポーネント間通信のために、直接的にまたは間接的に通信可能に結合され得る。
【0080】
コンピュータ・システム1001は、本明細書で総称的にCPU1002と呼ばれる、1つまたは複数の汎用プログラマブルCPU1002A、1002B、1002C、および1002Dを含むことができる。幾つかの実施形態において、コンピュータ・システム1001は、比較的大きいシステムに特有である複数のプロセッサを含むことができる;しかしながら、他の実施形態において、コンピュータ・システム1001は、代替的に、単一CPUシステムであってよい。各CPU1002は、メモリ・サブシステム1004に記憶された命令を実行することができ、また、1つまたは複数のレベルのオンボード・キャッシュを含むことができる。
【0081】
システム・メモリ1004は、ランダム・アクセス・メモリ(RAM: random access memory)1022またはキャッシュ・メモリ1024等の、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム1001は、他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含むことができる。単に例として、記憶システム1027は、「ハード・ドライブ」等の取り外し不能で不揮発性の磁気媒体から読み出し、それに書き込むために設けられ得る。示さないが、取り外し可能で不揮発性の磁気ディスク(例えば、「フロッピー(登録商標)・ディスク」)から読み出し、それに書き込むための磁気ディスク・ドライブ、あるいは、CD-ROM、DVD-ROM、または他の光媒体等の取り外し可能で不揮発性の光ディスクから読み出すまたはそれに書き込むための光ディスク・ドライブが設けられ得る。さらに、メモリ1004は、フラッシュ・メモリ、例えば、フラッシュ・メモリ・スティック・ドライブまたはフラッシュ・ドライブを含むことができる。メモリ・デバイスは、1つまたは複数のデータ・メディア・インタフェースによってメモリ・バス1003に接続され得る。メモリ1004は、種々の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つのプログラム・モジュール)を有する少なくとも1つのプログラム製品を含むことができる。
【0082】
それぞれがプログラム・モジュール830の少なくとも1つのセットを有する、1つまたは複数のプログラム/ユーティリティ1028は、メモリ1004に記憶され得る。プログラム/ユーティリティ1028は、ハイパーバイザ(仮想マシン・モニタとも呼ばれる)、1つまたは複数のオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データを含むことができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはその何らかの組合せのそれぞれは、ネットワーキング環境の実装態様を含むことができる。プログラム1028またはプログラム・モジュール1030あるいはその両方は、一般に、種々の実施形態の機能または方法を実施する。
【0083】
メモリ・バス1003は、
図10において、CPU1002、メモリ・サブシステム1004、およびI/Oバス・インタフェース1010の間で直接通信経路を提供する単一バス構造として示されるが、メモリ・バス1003は、幾つかの実施形態において、複数の異なるバスまたは通信経路を含むことができ、それらは、階層型、スター型、またはウェブ型構成のポイント・ツー・ポイント・リンク、複数の階層型バス、並行および冗長経路、または任意の他の適切なタイプの構成等の、種々の形態のうちの任意の形態で配置され得る。さらに、I/Oバス・インタフェース1010およびI/Oバス1008は、単一のそれぞれのユニットとして示され、コンピュータ・システム1001は、幾つかの実施形態において、複数のI/Oバス・インタフェース1010、複数のI/Oバス1008、または両方を含むことができる。さらに、種々のI/Oデバイスまで延びる種々の通信経路からI/Oバス1008を分離する複数のI/Oバス・インタフェース1010が示されるが、他の実施形態において、I/Oデバイスの一部または全ては、1つまたは複数のシステムI/Oバス1008に直接接続され得る。
【0084】
幾つかの実施形態において、コンピュータ・システム1001は、マルチユーザ・メインフレーム・コンピュータ・システム、シングルユーザ・システム、サーバ・コンピュータ、あるいは、ほとんどまたは全く直接ユーザ・インタフェースを持たないが、他のコンピュータ・システム(クライアント)から要求を受信する同様のデバイスであってよい。さらに、幾つかの実施形態において、コンピュータ・システム1001は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップまたはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマートフォン、ネットワーク・スイッチまたはルータ、あるいは任意の他の適切なタイプの電子デバイスとして実装され得る。
【0085】
図10が、例のコンピュータ・システム1001の代表的な主要なコンポーネントを示すことを意図されることが留意される。幾つかの実施形態において、しかしながら、個々のコンポーネントは、
図10に示すより大きいまたは小さい複雑さを有することができ、
図10に示すコンポーネント以外のまたはそれに加えたコンポーネントが提示され得、そのようなコンポーネントの数、タイプ、および構成が変動する場合がある。
【0086】
本開示は、考えられる任意の技術的詳細の集積レベルでのシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せであってよい。コンピュータ・プログラム製品は、本開示の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有する1つの(または複数の)コンピュータ可読記憶媒体を含むことができる。
【0087】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持し記憶することができる有形デバイスであってよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せであってよいが、それに限定されない。コンピュータ可読記憶媒体のより特定の例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM: read only memory)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM(erasable programmable read-only memory)またはフラッシュ・メモリ)、SRAM、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM: portable compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD: digital versatile disk)、メモリ・スティック、フロッピー(登録商標)・ディスク、命令が記録されたパンチカードまたは溝の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せを含む。本明細書で使用されるコンピュータ可読記憶媒体は、無線波または他の自由に伝搬する電磁波、導波路を通って伝搬する電磁波、あるいは、他の伝送媒体(例えば、光ファイバ・ケーブルを通過する光パルス)またはワイヤを通して伝送される電気信号等の、一過性の信号自体であると解釈されるべきではない。
【0088】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはその組合せ経由で外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを備えることができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0089】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA: instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、あるいは、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードであってよく、1つまたは複数のプログラミング言語は、Smalltalk(登録商標)、C++、または同様なもの等のオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語等の手続き型プログラミング言語を含む。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアローン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、あるいはリモート・コンピュータまたはサーバ上で完全に実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN: local area network)またはワイド・エリア・ネットワーク(WAN: wide area network)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続され得る、または、接続は、(例えば、インターネット・サービス・プロバイダを使用するインターネットを通して)外部コンピュータに対して行われ得る。幾つかの実施形態において、例えば、プログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA: field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA: programmable logic array)を含む電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【0090】
本開示の態様は、本開示の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方内のブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【0091】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を作成するような、マシンを生成するために、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供され得る。これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体内にも記憶され得、コンピュータ可読プログラム命令は、内部に命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実装する命令を含む製造品を構成するような特定の方法で、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せが、機能するように指示することができる。
【0092】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実装するような、コンピュータ実装式プロセスを、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上で実施される一連の動作ステップが、生成するようにさせるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にもロードされ得る。
【0093】
図のフローチャートおよびブロック図は、本開示の種々の実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実装態様のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能(複数可)を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部分を表すことができる。幾つかの代替の実装態様において、ブロックに記述された機能は、図に記述された順序から外れて発生し得る。例えば、連続して示される2つのブロックは、実際には、1ステップとして実施され得る、同時に、実質的に同時に、部分的にまたは全体として時間的にオーバーラップした方法で実行され得る、または、ブロックは時として、関係する機能に応じて逆順で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、および、ブロック図またはフローチャート図あるいはその両方内のブロックの組合せが、指定された機能または動作を実施するかまたは専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェア・ベース・システムによって実装され得ることも留意されるであろう。
【0094】
本開示は、特定の実施形態に関して説明されたが、その代替および修正が当業者に明らかになることが予想される。本開示の種々の実施形態の説明は、例証のために提示されたが、網羅的であることまたは開示された実施形態に限定されることを意図されない。多くの修正および変形は、説明される実施形態の範囲から逸脱することなく当業者に明らかになるであろう。本明細書で使用される用語は、本発明の原理、実際的な適用、または市場で見出される技術に勝る技術的改善を最もよく説明するために、または、当業者が本明細書で開示される実施形態を理解することを可能にするために選択された。したがって、添付の特許請求の範囲が、本開示の範囲内に入る全てのそのような変更および修正をカバーするものと解釈されることが意図される。
【手続補正書】
【提出日】2023-10-04
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
推論エンジン・システムであって、
第1のメモリと、
前記第1のメモリと通信状態にあるプロセッサとを備え、前記プロセッサは、
第1のタスクを、前記第1のメモリを用いてフェッチすること、
前記第1のタスクを処理するために、前記第1のタスクを前記プロセッサに前記第1のメモリによって送出すること、
前記プロセッサが前記第1のタスクを処理している間に、第2のタスクを、前記第1のメモリを用いてプリフェッチすること、
前記第2のタスクを前記プロセッサに、前記第1のメモリによってかつ前記第1のタスクを処理することが終了すると、送出すること、および、
前記第2のタスクを、前記プロセッサによって処理すること
を含む動作を実施するように構成される、推論エンジン・システム。
【請求項2】
前記動作は、
前記プロセッサが前記第1のタスクを処理することに応答して、第1のタスク計算結果を生成すること、
前記第1のタスク計算結果を前記第1のメモリに、前記プロセッサによって送信すること、
前記第1のタスク計算結果を、前記第1のメモリによって受容すること、および、
前記第1のタスク計算結果を第2のメモリに送出することをさらに含み、
前記第1のメモリは低密度メモリであり、前記第2のメモリは高密度メモリである、請求項1に記載のシステム。
【請求項3】
前記第2のメモリは、メモリの3次元スタックに集積化され、前記メモリの3次元スタックは複数のメモリ層を備える、請求項2に記載のシステム。
【請求項4】
前記第1のメモリは、第1のバッファ・セグメントおよび第2のバッファ・セグメントを有し、
前記第1のバッファ・セグメントは前記第1のタスクをフェッチし、
前記第2のバッファ・セグメントは前記第2のタスクをプリフェッチする、請求項1
~3のいずれか1項に記載のシステム。
【請求項5】
電力ゲートと通信状態にある、第1の温度を検知するための第1の温度センサをさらに備え、前記電力ゲートは、第1の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項1
~4のいずれか1項に記載のシステム。
【請求項6】
前記電力ゲートと通信状態にある、第2の温度を検知するための第2の温度センサをさらに備え、前記電力ゲートは、第2の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項5に記載のシステム。
【請求項7】
前記第1のメモリおよび前記プロセッサと通信する誤り訂正エンジンをさらに備え、前記誤り訂正エンジンのためのデータ・ビットおよびチェック・ビットは同じ場所に配置される、請求項1
~6のいずれか1項に記載のシステム。
【請求項8】
前記第1のメモリはバッファであり、
前記バッファはバッファ・ダイ内にあり、
前記バッファ・ダイは人工知能コアを有する、請求項1
~7のいずれか1項に記載のシステム。
【請求項9】
メモリ記憶および取り出しのための方法であって、
第1のタスクを、第1のメモリを用いてフェッチすること、
前記第1のタスクを処理するために、前記第1のタスクをプロセッサに前記第1のメモリによって送出すること、
前記プロセッサが前記第1のタスクを処理している間に、第2のタスクを、前記第1のメモリを用いてプリフェッチすること、
前記第2のタスクを前記プロセッサに、前記第1のメモリによってかつ前記第1のタスクを処理することが終了すると、送出すること、および、
前記第2のタスクを、前記プロセッサによって処理すること
を含む、方法。
【請求項10】
前記第1のタスクを処理する前記プロセッサに応答して、第1のタスク計算結果を生成すること、
前記第1のタスク計算結果を前記第1のメモリに、前記プロセッサによって送信すること、
前記第1のタスク計算結果を、前記第1のメモリによって受容すること、および、
前記第1のタスク計算結果を第2のメモリに送出することをさらに含み、
前記第1のメモリは低密度メモリであり、前記第2のメモリは高密度メモリである、請求項9に記載の方法
。
【請求項11】
第1の温度を、第1の温度センサを用いて検知することをさらに含み、前記第1の温度センサは電力ゲートと通信状態にあり、前記電力ゲートは、第1の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項9
または10に記載の方法。
【請求項12】
第2の温度を、第2の温度センサを用いて検知することをさらに含み、前記第2の温度センサは前記電力ゲートと通信状態にあり、前記電力ゲートは、第2の温度閾値に達する場合、前記第1のメモリに対する電力をスロットルで調整する、請求項
11に記載の方法。
【請求項13】
誤り訂正エンジンと、前記第1のメモリと、前記プロセッサとの間で通信することをさらに含み、
前記誤り訂正エンジンのためのデータ・ビットおよびチェック・ビットは同じ場所に配置される、請求項9
~12のいずれか1項に記載の方法
。
【請求項14】
メモリ記憶および取り出しのためのコンピュータ・
プログラムであって、前記コンピュータ・
プログラムは、
コンピュータに、
第1のタスクを、第1のメモリを用いてフェッチすること、
前記第1のタスクを処理するために、前記第1のタスクを前記プロセッサに前記第1のメモリによって送出すること、
前記プロセッサが前記第1のタスクを処理している間に、第2のタスクを、前記第1のメモリを用いてプリフェッチすること、
前記第2のタスクを前記プロセッサに、前記第1のメモリによってかつ前記第1のタスクを処理することが終了すると、送出すること、および、
前記第2のタスクを、前記プロセッサによって処理すること
を
実行させるためのコンピュータ・
プログラム。
【請求項15】
前記コンピュータ・プログラムは、前記コンピュータに、
前記第1のタスクを処理する前記プロセッサに応答して、第1のタスク計算結果を生成すること、
前記第1のタスク計算結果を前記第1のメモリに、前記プロセッサによって送信すること、
前記第1のタスク計算結果を、前記第1のメモリによって受容すること、および、
前記第1のタスク計算結果を第2のメモリに送出することをさらに
実行させ、
前記第1のメモリは低密度メモリであり、前記第2のメモリは高密度メモリである、請求項
14に記載のコンピュータ・
プログラム。
【請求項16】
請求項14または15に記載のコンピュータ・プログラムをコンピュータ可読に記録する記録媒体。
【国際調査報告】