IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 上▲海▼商▲湯▼智能科技有限公司の特許一覧

<>
  • 特表-メモリ管理方法及び関連製品 図1
  • 特表-メモリ管理方法及び関連製品 図2
  • 特表-メモリ管理方法及び関連製品 図3
  • 特表-メモリ管理方法及び関連製品 図4
  • 特表-メモリ管理方法及び関連製品 図5
  • 特表-メモリ管理方法及び関連製品 図6
  • 特表-メモリ管理方法及び関連製品 図7
  • 特表-メモリ管理方法及び関連製品 図8
  • 特表-メモリ管理方法及び関連製品 図9
  • 特表-メモリ管理方法及び関連製品 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-14
(54)【発明の名称】メモリ管理方法及び関連製品
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220907BHJP
【FI】
G06F9/50 120A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021570921
(86)(22)【出願日】2021-03-05
(85)【翻訳文提出日】2022-01-26
(86)【国際出願番号】 CN2021079390
(87)【国際公開番号】W WO2021253875
(87)【国際公開日】2021-12-23
(31)【優先権主張番号】202010561183.X
(32)【優先日】2020-06-18
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】520180323
【氏名又は名称】上▲海▼商▲湯▼智能科技有限公司
【氏名又は名称原語表記】SHANGHAI SENSETIME INTELLIGENT TECHNOLOGY CO., LTD.
【住所又は居所原語表記】Room 1605A, Building 3, 391 Guiping Road, Xuhui District, Shanghai 200233 China
(74)【代理人】
【識別番号】110000729
【氏名又は名称】特許業務法人 ユニアス国際特許事務所
(72)【発明者】
【氏名】李 周洋
(57)【要約】
本願の実施例は、メモリ管理方法及び関連製品を開示する。該方法は、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップと、前記第1処理機器は、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定した場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップであって、前記第2キャッシュブロックの少なくとも一部が前記第1キャッシュブロックに含まれるステップとを含む。本願の実施例では、第1処理機器は、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定した場合、該第1タスクと該第2タスクとは、一部のキャッシュブロックを再利用でき、メモリ利用率を向上できる。
【選択図】図2
【特許請求の範囲】
【請求項1】
メモリ管理方法であって、
第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップと、
前記第1処理機器は、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定した場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップであって、前記第2キャッシュブロックの少なくとも一部が前記第1キャッシュブロックに含まれるステップと、を含む、
ことを特徴とするメモリ管理方法。
【請求項2】
前記第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップの後に、
前記第1処理機器は、前記第1タスクを前記第2処理機器に送信したことに応じて、前記第1キャッシュブロックを前記キャッシュプールに再び入れるステップをさらに含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップの後に、
前記第1処理機器は、前記第1キャッシュブロックに対応する前記第1タスクの位置する第1操作キューを記録するステップをさらに含み、
前記第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定するステップは、
前記第1処理機器は、記録された前記第1タスクの位置する前記第1操作キューに基づいて、前記第1タスクと前記第2タスクとの位置する操作キューが同じであると決定するステップを含む、
ことを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップは、
前記第1処理機器は、前記第2処理機器による前記第1タスクの実行中に、前記キャッシュプールの前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む、
ことを特徴とする請求項1~3のいずれかに記載の方法。
【請求項5】
前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップの前に、
前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するステップをさらに含み、
前記第1処理機器は、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定した場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップは、
前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む、
ことを特徴とする請求項1~4のいずれかに記載の方法。
【請求項6】
前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するステップは、
前記第1処理機器は、前記キャッシュプールから、前記第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索するステップと、
前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記少なくとも1つの候補キャッシュブロックから検索するステップと、を含む、
ことを特徴とする請求項5に記載の方法。
【請求項7】
前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップは、
第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係、及び前記少なくとも1つの候補キャッシュブロックのサイズに基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む、
ことを特徴とする請求項5又は6に記載の方法。
【請求項8】
前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックが前記第2タスクの要求を満たすキャッシュブロックを含まないと決定した場合、前記キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つのキャッシュブロックから、前記第2タスクに割り当てられるターゲットキャッシュブロックを決定するステップをさらに含む、
ことを特徴とする請求項5~7のいずれかに記載の方法。
【請求項9】
前記第1処理機器は、前記キャッシュプールから、前記第2タスクの要求を満たすキャッシュブロックが検索できなかった場合、前記キャッシュプールを拡張するステップと、
前記第1処理機器は、拡張後の前記キャッシュプールから、前記第2タスクに割り当てられるターゲットキャッシュブロックを検索するステップと、をさらに含む、
ことを特徴とする請求項1~8のいずれかに記載の方法。
【請求項10】
データ処理装置であって、
キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるためのメモリ割り当てユニットと、
第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があるか否かを決定するための処理ユニットとを含み、
前記メモリ割り当てユニットは、さらに、前記第2処理機器が前記第2タスクと前記第1タスクとを順に実行する必要があることが前記処理ユニットによって決定された場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるために用いられ、第2キャッシュブロックの少なくとも一部は前記第1キャッシュブロックに含まれる、
ことを特徴とするデータ処理装置。
【請求項11】
前記処理ユニットは、さらに、前記第1タスクを前記第2処理機器に送信するために用いられ、
前記メモリ割り当てユニットは、さらに、前記第1タスクを前記第2処理機器に送信したことに応じて、前記第1キャッシュブロックを前記キャッシュプールに再び入れるために用いられる、
ことを特徴とする請求項10に記載のデータ処理装置。
【請求項12】
前記処理ユニットは、さらに前記第1キャッシュブロックに対応する前記第1タスクの位置する第1操作キューを記録するために用いられ、
前記処理ユニットは、記録された前記第1タスクの位置する前記第1操作キューに基づいて、前記第1タスクと前記第2タスクとの位置する操作キューが同じであると決定するために用いられる、
ことを特徴とする請求項10又は11に記載のデータ処理装置。
【請求項13】
前記メモリ割り当てユニットは、さらに、前記第2処理機器による前記第1タスクの実行中に、前記キャッシュプールの前記第2キャッシュブロックを前記第2タスクに割り当てるために用いられる、
ことを特徴とする請求項10~12のいずれかに記載のデータ処理装置。
【請求項14】
前記メモリ割り当てユニットは、さらに、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するために用いられ、
前記メモリ割り当てユニットは、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記第2処理機器が前記第2タスクと前記第1タスクとを順に実行する必要があると処理ユニットが決定した場合、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるために用いられる、
ことを特徴とする請求項10~13のいずれかに記載のデータ処理装置。
【請求項15】
前記メモリ割り当てユニットは、前記キャッシュプールから、前記第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索し、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記少なくとも1つの候補キャッシュブロックから検索するために用いられる、
ことを特徴とする請求項14に記載のデータ処理装置。
【請求項16】
前記メモリ割り当てユニットは、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記第2処理機器が前記第2タスクと前記第1タスクとを順に実行する必要があると前記処理ユニットが決定した場合、前記少なくとも1つの候補キャッシュブロックのサイズに基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるために用いられる、
ことを特徴とする請求項14又は15に記載のデータ処理装置。
【請求項17】
前記メモリ処理ユニットは、さらに、前記少なくとも1つの候補キャッシュブロックが前記第2タスクの要求を満たすキャッシュブロックを含まないことが処理ユニットによって決定された場合、前記キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つのキャッシュブロックから、前記第2タスクに割り当てられるターゲットキャッシュブロックを決定するために用いられる、
ことを特徴とする請求項14~16のいずれかに記載のデータ処理装置。
【請求項18】
前記メモリ処理ユニットは、さらに、前記キャッシュプールから、前記第2タスクの要求を満たすキャッシュブロックが検索できなかった場合、前記キャッシュプールを拡張し、拡張後の前記キャッシュプールから、前記第2タスクに割り当てられるターゲットキャッシュブロックを検索するために用いられる、
ことを特徴とする請求項10~17のいずれかに記載のデータ処理装置。
【請求項19】
メモリと第1プロセッサとを含む電子機器であって、前記メモリは、命令を記憶するために用いられ、前記第1プロセッサは、前記メモリに記憶された命令を実行し、請求項1~9のいずれかに記載の方法を実行させるために用いられる、
ことを特徴とする電子機器。
【請求項20】
前記電子機器は、第2プロセッサをさらに含み、前記第2プロセッサは、前記第1プロセッサによって割り当てられたキャッシュブロックを用いて、前記第1プロセッサによって送信されたタスクを実行するために用いられる、
ことを特徴とする請求項19に記載の電子機器。
【請求項21】
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
前記コンピュータプログラムは、プログラム命令を含み、前記プログラム命令がプロセッサによって実行されると、前記プロセッサに請求項1~9のいずれかに記載の方法を実行させる、ことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願はコンピュータ分野に関し、特にメモリ管理方法及び関連製品に関する。
【背景技術】
【0002】
中央処理装置(Central Processing Unit、CPU)及び加速機器からなる異種加速システムでは、加速機器におけるメモリ管理戦略がシステム全体の性能と効率に大きく影響する。加速機器とは、CPU以外の、加速計算用の機器、たとえば、グラフィックスプロセッシングユニット(Graphics Processing Unit、GPU)、ニューラルネットワークプロセシングユニット(Neural-network Processing Unit、NPU)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)などである。現在採用されているメモリ管理戦略は、メモリ利用率が低いため、メモリ利用率の高いメモリ管理戦略を研究する必要がある。
【発明の概要】
【0003】
本願の実施例は、メモリ管理方法及び関連製品を開示する。
【0004】
第1態様では、本願の実施例は、メモリ管理方法を提供し、該方法は、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップと、前記第1処理機器は、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定した場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップであって、前記第2キャッシュブロックの少なくとも一部が前記第1キャッシュブロックに含まれるステップと、を含む。
【0005】
第1処理機器は、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定した場合とは、該第1処理機器は、該第2処理機器が該第1タスクと該第2タスクを並列実行しないことである。つまり、第2処理機器は、該第1タスクと該第2タスクを同時に実行しない。第2処理機器は、第2タスクと第1タスクを順に実行する場合、該第1タスクと該第2タスクを実行するに、同一のキャッシュブロックを同時に占めることが不可能である。従って、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当て、第2タスクに第2キャッシュブロックを割り当て、すなわち、該第1タスクと該第2タスクは、一部のキャッシュブロックを再利用することができる。
【0006】
本願の実施例では、第1処理機器は、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定した場合、該第1タスクと該第2タスクが一部のキャッシュブロックを再利用することができ、メモリ利用率を向上させることができる。
【0007】
1つの可能な実施形態では、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップの後に、前記方法は、前記第1処理機器は、前記第1タスクを前記第2処理機器に送信したことに応じて、前記第1キャッシュブロックを前記キャッシュプールに再び入れるステップをさらに含む。
【0008】
前記第1処理機器は、前記第1タスクを前記第2処理機器に送信することは、前記第1処理機器は、第2処理機器を呼び出して前記第1タスクを実行することであってもよいし、前記第1タスクを第2処理機器処理のあるタスクキューに提出することであってもよい。前記第1処理機器は、前記第1タスクを前記第2処理機器に送信した直後、前記第1キャッシュブロックを前記キャッシュプールに再び入れることができる。
【0009】
該実施形態では、第1処理機器は、該第1キャッシュプールを再利用するために、直ちに第1キャッシュブロックをキャッシュプールに再び入れることができる。
【0010】
1つの可能な実施形態では、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップの後に、前記方法は、前記第1処理機器は、前記第1キャッシュブロックに対応する前記第1タスクの位置する第1操作キューを記録するステップを含み、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定するステップは、前記第1処理機器は、記録された前記第1タスクの位置する前記第1操作キューに基づいて、前記第1タスクと前記第2タスクとの位置する操作キューが同じであると決定するステップを含む。
【0011】
任意選択的には、前記第1処理機器は、前記第1タスクを前記第2処理機器に送信したことに応じて、前記第1キャッシュブロックに対応する前記第1タスクの位置する第1操作キューを記録する。任意選択的には、前記第1処理機器が、前記第1キャッシュブロックを前記キャッシュプールに再び入れる操作と、前記第1キャッシュブロックに対応する前記第1タスクの位置する第1操作キューを記録する操作とは、同時に実行されるとしてもよい。つまり、第1処理機器が第1キャッシュブロックをキャッシュプールに再び入れる操作と、該第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録する操作とは、バインディングされてもよい。前記第1処理機器は、前記第2タスクをキャッシュブロックに割り当てる前、前記第2タスクの位置する操作キューを知っている。従って、第1処理機器は、記録された第1タスクの位置する第1操作キューに基づいて、該第1タスクと第2タスクとの位置する操作キューが同じであるか否かを決定することができる。
【0012】
該実施形態では、第1処理機器は、記録した第1タスクの位置する第1操作キューに基づいて、該第1タスクと第2タスクの位置する操作キューが同じであると正確かつ迅速に決定することができる。
【0013】
1つの可能な実施形態では、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップは、前記第1処理機器は、前記第2処理機器による前記第1タスクの実行中に、前記キャッシュプールの前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む。
【0014】
該実施形態では、第1処理機器と第2処理機器とは、並列動作し、作業効率が高い。
【0015】
1つの可能な実施形態では、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップの前に、前記方法は、前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するステップをさらに含み、前記第1処理機器は、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定した場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップは、前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む。
【0016】
該実施形態では、第1処理機器は、少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係に基づいて、該少なくとも1つの候補キャッシュブロックから決定された第2キャッシュブロックを該第2タスクに割り当てることによって、該第2タスクは、割り当てられたキャッシュブロックを再利用し、メモリ利用率を向上できる。
【0017】
1つの可能な実施形態では、前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するステップは、前記第1処理機器は、前記キャッシュプールから、前記第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索するステップと、前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記少なくとも1つの候補キャッシュブロックから検索するステップとを含む。前記少なくとも1つの候補キャッシュブロックは、いずれも現在タスクが割り当てられているキャッシュブロックであってもよいし、タスクが現在割り当てられているキャッシュブロックを含むとともに、タスクが現在割り当てられていないキャッシュブロックをさらに含むものであってもよい。
【0018】
該実施形態では、少なくとも1つの候補キャッシュブロックから、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを優先的に検索することによって、タスクが現在割り当てられておりかつ第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを迅速に検索できる。
【0019】
1つの可能な実施形態では、前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するステップは、前記第1処理機器は、前記キャッシュプールにおける、タスクが現在割り当てられているキャッシュブロックから、前記第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索するステップを含む。
【0020】
該実施形態では、第1処理機器は、キャッシュプールにおける、タスクが現在割り当てられているキャッシュブロックから、第2タスクに必要なキャッシュサイズを満たすキャッシュブロックを直接検索し、さらに現在タスクが割り当てられているキャッシュブロックを該第2タスクに再びに割り当てることによって、メモリ利用率を向上できる。
【0021】
1つの可能な実施形態では、前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップは、第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係、及び前記少なくとも1つの候補キャッシュブロックのサイズに基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む。
【0022】
第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係、及び前記少なくとも1つの候補キャッシュブロックのサイズに基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てることは、前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクを順に実行すると決定した場合、前記少なくとも1つの候補キャッシュブロックのサイズに基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てることであってもよい。
【0023】
該実施形態では、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックから決定された第2キャッシュブロックを第2タスクに割り当てることによって、タスクが現在割り当てられているキャッシュブロックを再利用し、メモリ再利用率を向上させることができる。
【0024】
1つの可能な実施形態では、前記方法は、前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックが前記第2タスクの要求を満たすキャッシュブロックを含まないと決定した場合、前記キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つのキャッシュブロックから、前記第2タスクに割り当てられるターゲットキャッシュブロックを決定するステップをさらに含む。
【0025】
該実施形態では、キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つのキャッシュブロックから、第2タスクに割り当てられるターゲットキャッシュブロックを決定することによって、該第2タスクを成功して実行できる。
【0026】
1つの可能な実施形態では、前記方法は、前記第1処理機器は、前記キャッシュプールから、前記第2タスクの要求を満たすキャッシュブロックが検索できなかった場合、前記キャッシュプールを拡張するステップと、前記第1処理機器は、拡張後の前記キャッシュプールから、前記第2タスクに割り当てられるターゲットキャッシュブロックを検索するステップとをさらに含む。
【0027】
該実施形態では、拡張後のキャッシュプールから、第2タスクの要求を満たすキャッシュブロックを検索することによって、第2タスクにその要求を満たすキャッシュブロックを迅速に割り当てることができる。
【0028】
第2形態では、本願の実施例は、データ処理装置を提供し、該データ処理装置は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるためのメモリ割り当てユニットと、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があるか否かを決定するための処理ユニットとを含み、前記メモリ割り当てユニットは、さらに、前記第2処理機器が前記第2タスクと前記第1タスクとを順に実行する必要があることが前記処理ユニットにより決定された場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるために用いられ、前記第2キャッシュブロックの少なくとも一部は、前記第1キャッシュブロックに含まれる。
【0029】
前記処理ユニットと前記メモリ割り当てユニットとは、同一のユニットであってもよいし、2つの独立したユニットであってもよい。いくつかの可能な実施の形態では、処理ユニットは、CPUなどのプロセッサであり、メモリ割り当てユニットはハードウェアである。いくつかの可能な実施の形態では、処理ユニットは、CPUなどのプロセッサであり、メモリ割り当てユニットの機能は、プロセッサにより実行されるソフトウェア又はプログラムによって実現される。つまり、処理ユニットの機能及びメモリ割り当てユニットの機能は、いずれも、プロセッサによって実現される。
【0030】
1つの可能な実施形態では、前記処理ユニットは、さらに、前記第1タスクを前記第2処理機器に送信するために用いられ、前記メモリ割り当てユニットは、さらに前記第1タスクを前記第2処理機器に送信したことに応じて、前記第1キャッシュブロックを前記キャッシュプールに再び入れるために用いられる。
【0031】
1つの可能な実施形態では、前記処理ユニットは、さらに、前記第1キャッシュブロックに対応する前記第1タスクの位置する第1操作キューを記録するために用いられ、前記処理ユニットは、記録された前記第1タスクの位置する前記第1操作キューに基づいて、前記第1タスクと前記第2タスクとの位置する操作キューが同じであると決定するために用いられる。
【0032】
1つの可能な実施形態では、前記メモリ割り当てユニットは、さらに、前記第2処理機器による前記第1タスクの実行中に、前記キャッシュプールの前記第2キャッシュブロックを前記第2タスクに割り当てる。
【0033】
1つの可能な実施形態では、前記メモリ割り当てユニットは、さらに、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するために用いられ、前記メモリ割り当てユニットは、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記第2処理機器が前記第2タスクと前記第1タスクとを順に実行する必要があると処理ユニットが決定した場合、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるために用いられる。
【0034】
1つの可能な実施形態では、前記メモリ割り当てユニットは、前記キャッシュプールにおける、タスクが現在割り当てられているキャッシュブロックから、前記第2タスクに必要なキャッシュサイズを満たす前記少なくとも1つの候補キャッシュブロックを検索するために用いられる。
【0035】
1つの可能な実施形態では、前記メモリ割り当てユニットは、前記キャッシュプールから、前記第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索し、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記少なくとも1つの候補キャッシュブロックから検索するために用いられる。
【0036】
1つの可能な実施形態では、前記メモリ割り当てユニットは、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記第2処理機器が前記第2タスクと前記第1タスクとを順に実行する必要があると前記処理ユニットが決定した場合、前記少なくとも1つの候補キャッシュブロックのサイズに基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるために用いられる。
【0037】
1つの可能な実施形態では、前記メモリ処理ユニットは、さらに、前記少なくとも1つの候補キャッシュブロックが前記第2タスクの要求を満たすキャッシュブロックを含まないことが処理ユニットにより決定された場合、前記キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つのキャッシュブロックから、前記第2タスクに割り当てられるターゲットキャッシュブロックを決定するために用いられる。
【0038】
1つの可能な実施形態では、前記メモリ処理ユニットは、さらに、前記キャッシュプールから、前記第2タスクの要求を満たすキャッシュブロックが検索できなかった場合、前記キャッシュプールを拡張し、拡張後の前記キャッシュプールから、前記第2タスクに割り当てられるターゲットキャッシュブロックを検索するために用いられる。
【0039】
第2態様または様々な可能な実施形態がもたらす技術的効果については、第1態様または対応する実施形態の技術的効果についての説明を参照することができる。
【0040】
第3態様では、本願の実施例は、メモリと第1プロセッサとを含む電子機器を提供し、前記メモリは、命令を記憶するために用いられ、前記第1プロセッサは、前記メモリに記憶された命令を実行し、第1態様及びいずれかの可能な実施形態の方法を実行させるために用いられる。
【0041】
1つの可能な実施形態では、前記電子機器は、第2プロセッサをさらに含み、前記第2プロセッサは、前記第1プロセッサによって割り当てられたキャッシュブロックを用いて、前記第1プロセッサによって送信されたタスクを実行するために用いられる。例示的には、第1プロセッサはCPUであり、第2プロセッサはGPUである。
【0042】
第4態様では、本願の実施例は、第1処理機器、メモリ及び第2処理機器を含む電子機器を提供し、前記メモリは、命令及びデータを記憶するために用いられ、前記第1プロセッサは、前記メモリに記憶された命令を実行し、前記第1プロセッサに第1態様及びいずれかの可能な実施形態の方法を実行させるために用いられ、前記第2処理機器は、前記第1処理機器よって割り当てられたキャッシュブロックを用いて、前記第1プロセッサよって送信されたタスクを実行するために用いられる。例示的には、第1処理機器は、CPUであり、第2処理機器はGPUである。
【0043】
第5態様では、本願の実施例は、データインタフェース及び第1態様に記載の第1処理機器を含むチップを提供し、前記第1処理機器は、第1態様又は第1態様のいずれかの可能な実施形態における方法を実行するために用いられる。
【0044】
第6態様では、本願の実施例は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体を提供し、該コンピュータプログラムは、プログラム命令を含み、該プログラム命令がプロセッサよって実行されると、該プロセッサに第1態様及びいずれかの任意選択的な実施形態の方法を実行させる。
【0045】
第7態様では、本願の実施例は、プログラム命令を含むコンピュータプログラム製品を提供し、前記プログラム命令がプロセッサによって実行されると、前記プロセッサに第1態様及びいずれかの任意選択的な実施形態の方法を実行させる。
【図面の簡単な説明】
【0046】
本願の実施形態又は背景技術における技術的態様をより明確に説明するために、本願の実施形態又は背景技術において必要とされる図面について説明する。
図1】本願の実施例に係るデータ処理装置の構造模式図である。
図2】本願の実施例に係るメモリ管理方法のフローチャートである。
図3】本願の実施例に係る別のメモリ管理方法のフローチャートである。
図4】本願の実施例に係る別のメモリ管理方法のフローチャートである。
図5】本願の実施例に係る別のメモリ管理方法のフローチャートである。
図6】本願の実施例に係るメモリ管理方法のタイミングチャートである。
図7】本願の実施例に係る別のメモリ管理方法のフローチャートである。
図8】本願の実施例に係る別のメモリ管理方法のタイミングチャートである。
図9】本願の実施例に係るデータ処理装置の構造模式図である。
図10】本願の実施例に係る別のデータ処理装置の構造模式図である。
【発明を実施するための形態】
【0047】
本願の明細書の実施形態及び特許請求の範囲と図面における用語の「第1」、「第2」、及び「第3」などは、特定の順序または前後の順序を記述するのではなく、類似の対象を区別するために使用される。さらに、用語の「含む」、「有する」及びそれらの任意の変形は、非排他的な包含を含むことを意図し、例えば、一連のステップ又はユニットを含む。方法、システム、製品又は機器は、明確に列挙されたそれらのステップ又はユニットに限定されるものではなく、明確に列挙されていない又はこれらのプロセス、方法、製品又は装置に固有の他のステップ又はユニットを含むことができる。
【0048】
背景技術に記載されているように、異種(heterogeneous)加速システムにおいて現在採用されているメモリ管理戦略は、メモリ利用率が通常低いため、メモリ利用率の高いメモリ管理戦略を研究する必要がある。本願の実施例は、第1処理機器(たとえば、CPU)及び第2処理機器(加速機器に対応する)を有するデータ処理装置(異種加速システムに対応する)に適用される、メモリ利用率の高いメモリ管理方法を提供する。以下、本願の実施例に係るメモリ管理方法が適用されるデータ処理装置の構造を説明し、本願の実施例に係るメモリ管理方法をより容易に説明する。
【0049】
図1は、本願の実施例に係るデータ処理装置の構造模式図である。図1に示すように、該データ処理装置は、第1処理機器101、メモリアロケータ102、第2処理機器103及び機器メモリ104を含み、該第1処理機器101とメモリアロケータ102とは、独立して設けられるか、又は、同一の機器に集成され、第2処理機器103と第1処理機器101とは、異なる種類の処理機器であり、機器メモリ104は、第2処理機器103の一部であってもよいし、又は、第2処理機器103とは独立して設けられていてもよいが、本開示の実施形態はこれについて限定しない。いくつかの例では、第1処理機器101は処理ユニットに対応し、メモリアロケータ102はメモリ割り当てユニットに対応する。第1処理機器101は、CPU又は他の種類のプロセッサであってもよい。いくつかの実施例では、第1処理機器101は、CPUなどのメイン処理機器であってもよく、第2処理機器103は、GPUなどの加速機器であってもよい。第2処理機器103は、GPU、NPU、FPGA、デジタル信号プロセッサ(digital signal processor、DSP)、専用集積回路(application specific integrated circuit、ASIC)などの、第1処理機器101と異なるプロセッサ又は処理装置であってもよい。いくつかの可能な実施の形態では、第1処理機器101はCPUであり、メモリ割り当てユニットは、CPUと互いに独立したハードウェアである。いくつかの可能な実施の形態では、第1処理機器101はCPUであり、メモリアロケータ102の機能は、第1処理機器101で実行されるソフトウェア又はプログラムによって実現される。つまり、いくつかの可能な実施の形態では、メモリアロケータ102に対応するエンティティハードウェアは、第1処理機器101である。機器メモリ104は、第2処理機器103が利用可能なメモリであってもよい。例示的には、第2処理機器103はGPUであり、機器メモリ104は第2処理機器103のビデオメモリである。いくつかの実施例では、機器メモリ104は第2処理機器103の一部である。
【0050】
以下、データ処理装置が本願の実施例に係るメモリ管理方法を実施するとき、第1処理機器101、メモリアロケータ102、第2処理機器103及び機器メモリ104の機能についてそれぞれ説明する。
【0051】
第1処理機器(たとえば、CPU)101は、第2処理機器103にタスクを提出し、メモリアロケータ102がキャッシュプールにおけるキャッシュを割り当てる及び/又は解放するように制御し、すなわち、メモリアロケータ102を介して第2処理機器103の機器メモリ104を管理するために用いられる。第1処理機器101が第2処理機器103にタスクを提出することは、第1処理機器101がタスクを、第2処理機器103の処理すべき操作キューに追加することであってもよいし、タスクを第2処理機器103に送信し、たとえば、あるタスクの実行を指示する命令を第2処理機器103に送信することであってもよいし、タスクを、第1処理機器101が第2処理機器103のインターフェースを呼び出して行わせる必要がある操作キューに追加することであってもよいし、他の方式で、第2処理機器103にタスクの実行を通知することであってもよい。第1処理機器101は、さらに、第2処理機器103のインターフェースを呼び出してタスクを実行させるために用いられる。例示的には、操作キューは、並列コンピューティングアーキテクチャ(compute unified device architecture、CUDA)におけるcudaStreamである。同一のcudaStreamにおけるタスクは、提出された順序に従って実行され、異なるcudaStreamにおけるタスクは前後の順序がなく、並列に実行されてもよい。例示的には、操作キューは、オープン計算言語(Open Computing Language、OpenCL)におけるcl_command_queueである。OpenCLは、異種プラットフォームに対してプログラムを作成するフレームワークであり、この異種プラットフォームは、CPU、GPU又は他の種類のプロセッサを含んでもよい。例示的には、操作キューは、C++AMPにおけるaccelerator_viewである。C++AMPは、マイクロソフトVisual Studio及びC++プログラミング言語の新しい拡張であり、開発者が現在と将来の高度並列・異種の計算環境に十分に適することを助けるために使用される。
【0052】
メモリアロケータ102は、機器メモリ104の管理を担当している。メモリアロケータ102は、エンティティハードウェアであってもよい。あるいは、メモリアロケータ102の機能は、第1処理機器101が実行するソフトウェア又はプログラムによって実現されてもよい。
【0053】
第2処理機器103は、機器メモリ104を介してデータを読み書きし、第1処理機器101により提出されたタスクを実行し、又は第1処理機器101によって少なくとも1つのインターフェースが呼び出されることでタスクを完了するように構成される。第2処理機器103は、GPU、NPU、ASIC、FPGAなどのCPU以外の加速機器として理解できる。
【0054】
機器メモリ104とは、第2処理機器103における記憶デバイス(メモリ空間に対応)であり、第2処理機器103によって使用され、たとえば、GPU(第2処理機器103に対応)のビデオメモリである。
【0055】
いくつかの実施例では、メモリアロケータ102には、機器メモリを予め割り当ててキャッシュするためのキャッシュプールが設けられている。このキャッシュプールは、1つの完全な機器メモリであってもよいし、任意のサイズの複数の機器メモリを組み合わせたものであってもよい。第2処理機器103がタスクを実行するために機器メモリを使用する必要があると、メモリアロケータ102は、直接キャッシュプールからキャッシュを第2処理機器103に割り当てることができ、第2処理機器103が割り当てられたキャッシュを使用する必要がなくなると、メモリアロケータ102は、キャッシュをキャッシュプールに再び入れ、すなわち、キャッシュをキャッシュプールに返却する。いくつかの実施例では、第1処理機器101はCPUであり、第2処理機器103はGPUであり、機器メモリ104は第2処理機器103におけるビデオメモリである。CPU及びGPUを含む異種計算システムでは、CPUは、タスク(たとえば、計算タスク又は画像処理タスクなど)の準備と開始を担当し、GPUは、タスクの実際の実行を担当している。CPUは、タスクを開始する前に、GPUがタスクを実行するために使用するビデオメモリを指定する必要がある。CPUによるビデオメモリに対する割り当て及び解放は、メモリアロケータ102によって実際に行われる。メモリアロケータ102は、GPUにおけるビデオメモリの管理を実際に担当している。GPUは、タスクを実行するとき、CPUがメモリアロケータ102を介して割り当てられた一部のビデオメモリを直接使用する。
【0056】
以下、図2を併せて、データ処理装置が本願の実施例に係るメモリ管理方法を実行するとき、各部材が実行する操作について説明する。図2は、本願の実施例に係るメモリ管理方法のフローチャートである。図2に示すように、該メモリ管理方法は、ステップ201と202を含む。
【0057】
ステップ201において、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てる。
【0058】
第1処理機器は、CPU又は他の種類のプロセッサであってもよい。いくつかの実施例では、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てることは、第1処理機器は、メモリアロケータを介してキャッシュプールの第1キャッシュブロックを第1タスクに割り当てることであってもよい。メモリアロケータの機能は、第1処理機器により実行されるソフトウェア又はプログラムによって実現される。第1タスクは、画像処理タスク、計算タスクなどの、第2処理機器(たとえば、GPU)が実行すべきタスク、又は、第2処理機器を呼び出して実行させるべきタスクであってもよい。第1キャッシュブロックは、キャッシュプールにおけるいずれかのキャッシュブロックであってもよい。キャッシュプールは、メモリアロケータの内部に設けられるキャッシュ機器メモリ(たとえば、ビデオメモリ)のプールとして理解され得る。例を挙げると、メモリアロケータにより管理されるビデオメモリは、プール(すなわち、キャッシュプール)にキャッシュされる。メモリアロケータは、第2処理機器がビデオメモリを必要とすると、プールから割り当て、該第2処理機器に割り当てされたビデオメモリが使い果たされた後、該第2処理機器がタスクを完了するのを待たず、該ビデオメモリを解放する。このように、キャッシュプールを利用することによって、機器メモリの割り当てと解放中の機器同期を解消できる。機器同期は、第1処理機器(たとえば、CPU)がプログラムの実行を停止し、第2処理機器(加速機器に対応)がタスクを完了するのを待つこととして理解され得る。いくつかの実施例では、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てることは、第1タスクの要求を満たすキャッシュブロックをキャッシュプールから優先的に割り当てるが、該キャッシュプールには、該第1タスクの要求を満たすキャッシュブロックがないと、cudaMallocを呼び出して機器メモリからより多くのメモリを割り当て、キャッシュプールを拡張することであってもよい。cudaMallocは、CUDAにおける、ビデオメモリを割り当てるインターフェースである。
【0059】
いくつかの実施例では、第1タスクは、ある計算タスク又は画像処理タスク又は他の種類の深層学習タスクであってもよい。いくつかの実施例では、第1処理機器は、ステップ201を実行する前、次のような操作を実行することができる。第1処理機器は、大きなタスクを分割して、第1タスクを取得することができる。本願の実施例におけるデータ処理装置は、異種計算システムであってもよい。異種計算システムは、計算タスクの並列性種類(concurrency type)を解析した上で、同じ種類のコードセグメントを同一のサブタスクに分割し、そして、異なる並列性種類に応じて、各サブタスクをその実行に最適な計算リソース(たとえば、第2処理機器)に割り当てて実行させ、計算タスクの総実行時間を最小にすることを実現する。このように、第1タスクは、第1処理機器が大きなタスクを分割ことによって得られた、第2処理機器が実行すべきサブタスク又は第2処理機器を呼び出して実行させるサブタスクとして理解され得る。あるいは、第1タスクは、第1処理機器により決定される実行すべきタスク自体であるが、本開示の実施例はこれについて限定しない。
【0060】
いくつかの実施例では、第1処理機器は、ステップ201を実行した後、次のような操作を実行することができる。第1処理機器は、第1タスクを第2処理機器に送信したことに応じて、第1キャッシュブロックをキャッシュプールに再び入れる(返却とも呼ばれる)。第1処理機器は、第1タスクを第2処理機器に送信することは、第1処理機器は、タスクを、第2処理機器の処理すべき操作キューに追加することであってもよいし、あるタスクの実行を指示する命令を、第2処理機器に送信することであってもよいし、タスクを、第2処理機器のインターフェースを呼び出して行わせる必要がある操作キューに追加することであってもよいし、他の方式で、第2処理機器にタスクの実行を通知することであってもよいが、本開示の実施例は、これについて限定しない。
【0061】
いくつかの実施例では、第1処理機器は、第1タスクを第2処理機器に送信した後、第2処理機器が第1キャッシュブロックを使用して第1タスクを実行完了するのを待つことなく、直ちに第1キャッシュブロックをキャッシュプールに再び入れることができる。本開示の実施例では、該第1キャッシュブロックの再利用(reuse)を容易にするために、第1処理機器は、第1キャッシュブロックをキャッシュプールに直ちに再び入れることができる。
【0062】
いくつかの実施例では、第1処理機器又はメモリアロケータは、キャッシュプールにおける各キャッシュブロックに対して識別子を設定して、キャッシュブロックの現在状態を表すことができる。一例として、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てることは、該第1処理機器は、該キャッシュプールの該第1キャッシュブロックを第1タスクに割り当て、該第1キャッシュブロックの状態を使用不可に設定し、該第1キャッシュブロックが他のタスクを割り当てることができないことを表すことであってもよい。第1キャッシュブロックをキャッシュプールに再び入れる(返却とも呼ばれる)ことは、該第1キャッシュブロックの状態を使用可能に設定し、該第1キャッシュブロックが他のタスクに割り当てることを表すことであってもよい。本開示の実施例は、さらに、各キャッシュブロックが現在使用可能であるか否かを他の方式で表してもよい。たとえば、第1処理機器は、第1キャッシュブロックを第1タスクに割り当てることは、該第1キャッシュブロックをキャッシュプールに含まれるキャッシュリソースから除去することであってもよい。第1キャッシュブロックをキャッシュプールに再び入れることは、第1キャッシュブロックをキャッシュプールに含まれるキャッシュリソースに再追加することであってもよい。
【0063】
ステップ202において、第1処理機器は、第2処理機器が第2タスクと第1タスクとを順に実行する必要があると決定した場合、キャッシュプールの第2キャッシュブロックを第2タスクに割り当てる。
【0064】
第2キャッシュブロックの少なくとも一部は、第1キャッシュブロックに含まれる。第2タスクは、画像処理タスク、計算タスクなどの、第2処理機器(たとえば、GPU)が実行すべきタスク又は第2処理機器を呼び出して実行させるべきタスクであってもよい。
【0065】
第1処理機器は、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定することは、該第1処理機器は、該第2処理機器が該第1タスクと該第2タスクを並列実行しないと決定することである。つまり、第2処理機器は、該第1タスクと該第2タスクを同時に実行しない。該第1タスクと第2タスクとは、同一または異なる種類のタスクであってもよく、たとえば、同一のタスクの異なるサブタスクであってもよいし、異なるタスクのサブタスクであってもよい。本開示の実施例は、これについて限定しない。第2処理機器は、第2タスクと第1タスクを順に実行する場合、該第1タスクと該第2タスクを実行するとき、キャッシュブロックを同時に使用することは不可能であることを理解されたい。従って、第1処理機器は、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定した場合、第2タスクに第2キャッシュブロックを割り当ててもよく、つまり、該第1タスクと該第2タスクとは、一部のキャッシュブロックを再利用してもよい。以下、第1処理機器は、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定する実施形態についてさらに詳細に説明する。
【0066】
いくつかの実施例では、第1処理機器のメモリ割り当てと、第2処理機器のタスク処理とを並列に実行でき、それにより、処理効率を向上させる。例を挙げると、第1処理機器は、第2処理機器による第1タスクの実行中に、キャッシュプールの第2キャッシュブロックを第2タスクに割り当てる。
【0067】
本願の実施例では、第1処理機器は、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定した場合、該第1タスクと該第2タスクとは、一部のキャッシュブロックを再利用でき、メモリ利用率を向上させることができる。
【0068】
以下、第2処理機器が第2タスクと第1タスクを順に実行する必要がある任意選択的な例を説明する。
【0069】
第1処理機器は、第1キャッシュブロックをキャッシュプールに再び入れた後、又は、第1キャッシュブロックをキャッシュプールに再び入れる過程において、第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録する。第2タスクにキャッシュブロックを割り当てる過程において、記録された第1タスクの位置する第1操作キューに基づいて、第1タスクと第2タスクとの位置する操作キューが同じであると決定する。第1操作キューは、第2処理機器が実行すべき操作キュー又は第2タスクの位置する操作キューであってもよい。例を挙げると、第1処理機器は、タスクを第2処理機器の第1操作キューに提出し、該第2処理機器は、各タスクが該第1操作キューに提出された順に、該第1操作キューにおけるタスクを実行する。第1操作キューは、第1処理機器が第2処理機器のインターフェースを呼び出して行わせる必要がある操作キューであってもよい。例を挙げると、第1処理機器は、第2処理機器のインターフェースを呼び出して行わせる必要がある操作キューにタスクを追加し、各タスクが該操作キューに追加された順に、第2処理機器のインターフェースを呼び出して各タスクを実行させる。
【0070】
いくつかの実施例では、第1処理機器が第1キャッシュブロックをキャッシュプールに再び入れる操作と、第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録する操作とは、同時にまたは任意の順序で実行することができ、たとえば、第1キャッシュブロックをキャッシュプールに再び入れた後、第1キャッシュブロックの今回のタスク割り当て情報を記録し、該タスク割り当て情報は、第1タスクの位置する操作キューの情報を含む。またたとえば、第1処理機器は、第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録した直後、第1キャッシュブロックをキャッシュプールに再び入れる。
【0071】
そして、第2タスクにキャッシュブロックを割り当てる過程において、第1処理機器は、記録された第1タスクの位置する第1操作キューに基づいて、たとえば、第1キャッシュブロックのタスク割り当て情報を照会することによって、該第1タスクと第2タスクの位置する操作キューが同じであるか否か、すなわち、割り当てすべき第2タスクと第1キャッシュブロックに割り当てられた第1タスクとが同一の操作キューに属するか否かを決定できる。このように、同一の操作キューにおける異なるタスクは、特定の順序に従って実行され、第1タスクと第2タスクとが同一の操作キューに位置することは、第1タスクと第2タスクとを同時に実行しないことを示す。
【0072】
図3は、本願の実施例に係る別のメモリ管理方法のフローチャートである。図2に示す実施例と同様の点についての説明は簡略化される。
【0073】
ステップ301において、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てる。
【0074】
ステップ302において、第1処理機器は、第1キャッシュブロックをキャッシュプールに再び入れ、第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録する。
【0075】
いくつかの実施例では、第1処理機器は、キャッシュプールに再び入れる各々のキャッシュブロックに対応するタスクの位置する操作キューを記録することができる。つまり、第1処理機器は、キャッシュプールにおける、タスクが現在割り当てられている各キャッシュブロックに対応する操作キューを記録することができる。1つのキャッシュブロックに対応する操作キューは、該キャッシュブロックに割り当てられたタスクが位置する操作キューである。
【0076】
いくつかの実施例では、第1処理機器は、第1キャッシュブロックをキャッシュプールに再び入れる前、該第1キャッシュブロックを解放することができる。例を挙げると、キャッシュプールにおけるキャッシュブロックは、第2処理機器のビデオメモリであり、第1処理機器は、第1キャッシュブロックをキャッシュプールに再び入れる前、メモリアロケータのインターフェースを呼び出すことによって該第1キャッシュブロックを解放する。cudaFreeインターフェースはCUDAにおける、ビデオメモリを解放するインターフェースである。いくつかの実施例では、第1キャッシュブロックを解放するということは、該第1キャッシュブロックをキャッシュプールに入れることであり、しかし、該第1キャッシュブロックの割り当てができないことであり、たとえば、該第1キャッシュブロックの状態を使用不可に設定する。第1キャッシュブロックをキャッシュプールに再び入れるということは、該第1キャッシュブロックの割り当てができることであり、たとえば、該第1キャッシュブロックの状態を使用可能に設定することであってもよい。
【0077】
ステップ303において、第1処理機器は、記録された第1タスクの位置する第1操作キューに基づいて、第1タスクと第2タスクとの位置する操作キューが同じであると決定した場合、キャッシュプールの第2キャッシュブロックを第2タスクに割り当てる。
【0078】
ステップ303は、ステップ202の1つの可能な実施形態である。第2キャッシュブロックの少なくとも一部は第1キャッシュブロックに含まれる。
【0079】
いくつかの実施例では、第1処理機器は、キャッシュプールの第2キャッシュブロックを第2タスクに割り当てる前、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックをキャッシュプールから検索することができる。ステップ303の一実施形態は、以下のとおりである。少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係に基づいて、少なくとも1つの候補キャッシュブロックから決定された第2キャッシュブロックを第2タスクに割り当てる。
【0080】
第1処理機器は、キャッシュプールから、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを検索することは、第1処理機器は、キャッシュプールから、第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索し、第1処理機器は、少なくとも1つの候補キャッシュブロックから、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを検索することであってもよい。例示的には、第1処理機器は、少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係に基づいて、少なくとも1つの候補キャッシュブロックから決定された第2キャッシュブロックを第2タスクに割り当てることは、少なくとも1つの候補キャッシュブロックから、現在割り当てられているタスクと第2タスクとを順に実行する1つ又は複数のターゲットキャッシュブロックを選択し、1つ又は複数のターゲットキャッシュブロックから決定された第2キャッシュブロックを第2タスクに割り当てることであってもよい。例を挙げると、第1処理機器は、キャッシュプールから、第2タスクに必要なキャッシュサイズを満たす10個の候補キャッシュブロックが検索され、該10個の候補キャッシュブロックから、現在割り当てられているタスクと第2タスクを順に実行する候補キャッシュブロックを選択し、ターゲットキャッシュブロックを得、該ターゲットキャッシュブロックから決定された第2キャッシュブロックを該第2タスクに割り当てる。本願の実施例では、候補キャッシュブロックは、第2タスクに必要なキャッシュサイズを満たすキャッシュブロックであり、候補キャッシュブロックには、第2タスクに必要なキャッシュサイズを満たすだけではなく、タスクが現在割り当てられている。
【0081】
本願の実施例では、記録された第1タスクの位置する第1操作キューに基づいて、該第1タスクと第2タスクとの位置する操作キューが同じであることを正確かつ迅速に決定し、さらに該第2タスクに第2キャッシュブロックを割り当てることができ、メモリ利用率を向上させることができる。
【0082】
図4は、本願の実施例に係る別のメモリ管理方法のフローチャートである。図2に示す実施例と同様の点についての説明は簡略化される。
【0083】
ステップ401において、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てる。
【0084】
ステップ402において、第1処理機器は、第1キャッシュブロックをキャッシュプールに再び入れ、第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録する。
【0085】
ステップ403において、第1処理機器は、キャッシュプールから、第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索する。
【0086】
第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックが検索できた場合、ステップ404を実行し、第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックが検索できなかった場合、ステップ408を実行する。
【0087】
ステップ404において、第1処理機器は、少なくとも1つの候補キャッシュブロックから、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを検索する。
【0088】
タスクが割り当てられている少なくとも1つの候補キャッシュブロックが検索できた場合、ステップ405を実行し、タスクが割り当てられている候補キャッシュブロックが検索できなかった場合、ステップ406を実行する。
【0089】
ステップ405において、第1処理機器は、少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係に基づいて、少なくとも1つの候補キャッシュブロックから、第2タスクに割り当てられる第2キャッシュブロックを決定する。
【0090】
例示的には、ステップ405の1つの可能な実施形態は、以下のとおりである。少なくとも1つの候補キャッシュブロックから、現在割り当てられているタスクと第2タスクを順に実行する候補キャッシュブロックを選択し、1つ又は複数のターゲットキャッシュブロック(例えば、上記第1キャッシュブロック)を取得し、1つ又は複数のターゲットキャッシュブロックから、第2タスクに割り当てられる第2キャッシュブロックを決定する。ステップ405は、図2におけるステップ202に対応する。
【0091】
例示的には、ステップ405の1つの可能な実施形態は、以下のとおりである。第1処理機器は、少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係、及び少なくとも1つの候補キャッシュブロックのサイズに基づいて、少なくとも1つの候補キャッシュブロックから、第2タスクに割り当てられる第2キャッシュブロックを決定する。例を挙げると、少なくとも1つの候補キャッシュブロックから、現在割り当てられているタスクと第2タスクを順に実行する候補キャッシュブロックを選択し、1つ又は複数のターゲットキャッシュブロック(例えば、上記第1キャッシュブロック)を取得し、1つ又は複数のターゲットキャッシュブロックから、第2タスクに必要なキャッシュサイズを満たす第2キャッシュブロックを選択し、第2タスクに第2キャッシュブロックを割り当てる。一例として、第2タスクに必要なキャッシュサイズを満たすターゲットキャッシュブロックが複数ある場合、第2タスクの要求を満たすターゲットキャッシュブロックから、最小のターゲットキャッシュブロックを第2キャッシュブロックとして選択するが、本開示の実施例は、これについて限定しない。
【0092】
ステップ406において、第1処理機器は、キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つの候補キャッシュブロックから、第2タスクに割り当てられる第3キャッシュブロックを決定する。
【0093】
ステップ407において、第1処理機器は、第2タスクに第3キャッシュブロックを割り当てる。
【0094】
ステップ408において、第1処理機器は、キャッシュプールを拡張し、拡張後のキャッシュプールから、第2タスクに割り当てられる第4キャッシュブロックを検索する。
【0095】
第4キャッシュブロックは、第2タスクに必要なキャッシュサイズを満たすキャッシュブロックであってもよい。例を挙げると、キャッシュプールには、第2タスクの要求を満たすキャッシュブロックがない場合、cudaMallocインターフェースを呼び出して、機器メモリからより多くのビデオメモリを割り当て、キャッシュプールを拡張する。cudaMallocインターフェースは、CUDAにおける、ビデオメモリを割り当てるインターフェースである。第2タスクの要求を満たすとは、第2タスクに必要なキャッシュサイズを満たすことである。
【0096】
ステップ409において、第1処理機器は、第2タスクに第4キャッシュブロックを割り当てる。
【0097】
このように、第2タスクに対するキャッシュの割り当てが完了する。いくつかの実施例では、該方法は、さらに、ステップ410を含んでもよい。
【0098】
ステップ410において、第1処理機器は、キャッシュプールを空にする。
【0099】
いくつかの実施例では、第1処理機器は、第2処理機器を呼び出してタスクを実行させる必要がない場合、キャッシュプールにおけるキャッシュを第2処理機器の機器メモリに返却することができる。例を挙げると、第1処理機器は、cudaFreeインターフェースを呼び出してキャッシュプールにおけるビデオメモリをGPU(すなわち、第2処理機器)に返却し、すなわち、キャッシュプールを空にする。
【0100】
本願の実施例では、第1処理機器は、まず、第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを決定し、そして、該少なくとも1つの候補キャッシュブロックから、タスクが現在割り当てられており、かつ割り当てられているタスクと第2タスクとを順に実行する少なくとも1つの候補キャッシュブロックを優先的に選択することによって、第2タスクにその要求を満たすキャッシュブロックを迅速に割り当てることができ、メモリ利用率を向上させることができる。
【0101】
図5は、本願の実施例に係る別のメモリ管理方法のフローチャートである。
【0102】
ステップ501において、第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てる。
【0103】
ステップ502において、第1処理機器は、第1キャッシュブロックをキャッシュプールに再び入れ、第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録する。
【0104】
ステップ503において、第1処理機器は、キャッシュプールから、タスクが現在割り当てられておりかつ第2タスクの要求を満たす候補キャッシュブロックが検索できたか否かを決定する。
【0105】
タスクが現在割り当てられておりかつ第2タスクの要求を満たす少なくとも1つの候補キャッシュブロックが検索できた場合、ステップ504を実行し、タスクが現在割り当てられておりかつ第2タスクの要求を満たす候補キャッシュブロックが検索できなかった場合、ステップ505を実行する。
【0106】
ステップ504において、第1処理機器は、少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係に基づいて、少なくとも1つの候補キャッシュブロックから決定された第2キャッシュブロックを第2タスクに割り当てる。
【0107】
ステップ504の実施形態は、ステップ405の実施形態と同じであってもよい。
【0108】
ステップ505において、第1処理機器は、キャッシュプールから、タスクが現在割り当てられておらずかつ第2タスクの要求を満たすキャッシュブロックが検索できたか否かを決定する。
【0109】
第1処理機器は、キャッシュプールから、タスクが現在割り当てられておらずかつ第2タスクの要求を満たすキャッシュブロックが検索できた場合、ステップ506を実行し、第1処理機器は、キャッシュプールから、タスクが現在割り当てられておらずかつ第2タスクの要求を満たすキャッシュブロックが検索できなかった場合、ステップ507を実行する。
【0110】
ステップ506において、第1処理機器は、検索できた、タスクが現在割り当てられておらずかつ第2タスクの要求を満たすキャッシュブロックから、第2タスクに割り当てられる第3キャッシュブロックを決定する。
【0111】
ステップ507において、第1処理機器は、キャッシュプールを拡張し、拡張後のキャッシュプールから、第2タスクに割り当てられる第4キャッシュブロックを検索する。
【0112】
本願の実施例では、タスクが現在割り当てられておりかつ第2タスクの要求を満たすキャッシュブロックから優先的に検索し、第2タスクにキャッシュブロックを割り当てることによって、検索速度を向上させることができるとともに、メモリ再利用率を向上させることができる。
【0113】
以下、図6におけるメモリ管理方法のタイミングチャートを併せて、図2図5におけるメモリ管理方法についてさらに説明する。図6は、図2図5におけるメモリ管理方法に対応する、本願の実施例に係るメモリ管理方法のタイミングチャートである。図6に示すように、第1処理機器は、割り当て1、タスク提出1(第1タスクに対応)、解放1、割り当て2、タスク提出2(第2タスクに対応)及び解放2を順に実行する。第2処理機器は、タスク実行1及びタスク実行2を順に実行する。割り当て1は、第1処理機器がタスク1に第1キャッシュブロックを割り当てることを表し、割り当て2は、第1処理機器がタスク2に第2キャッシュブロックを割り当てることを表し、タスク提出1は、第1処理機器が該タスク1を第2処理機器の操作キューに提出することを表し、タスク提出2は、第1処理機器がタスク2を第2処理機器の操作キューに提出することを表し、解放1は、第1処理機器が、メモリアロケータが第1キャッシュブロックを解放して、該第1キャッシュブロックをキャッシュプールに再び入れるように制御することを表し、解放2は、第1処理機器が、メモリアロケータが第2キャッシュブロックを解放して、該第2キャッシュブロックをキャッシュプールに再び入れるように制御することを表し、タスク実行1は、第2処理機器が該タスク1を実行することを表し、タスク実行2は、第2処理機器がタスク2を実行することを表す。図6では、第1処理機器が割り当て1を実行して割り当てられる第1キャッシュブロックと、第1処理機器が割り当て2を実行して割り当てられる第2キャッシュブロックとは、同一であるかまたは重複している。つまり、第2処理機器によって実行される同一操作キューのタスクについて、キャッシュブロックを再利用してもよい。いくつかの実施例では、第2処理機器が第1タスクを実行して使用される第1キャッシュブロックと、第2タスクを実行して使用される第2キャッシュブロックとは、同一であることが理解されたい。例を挙げると、第2処理機器はGPUであり、GPUは、同一の操作キューの計算タスクを実行するときに、同一のブロックのビデオメモリを再利用してもよい。図6に示すように、第1処理機器は、タスク提出1、解放1、割り当て2及びタスク提出2の操作を実行すると同時に、第2処理機器は、タスク1を実行する。第2処理機器は、タスク2を実行するとき、第1処理機器は、解放2の操作を実行する。これから分かるように、第1処理機器は、第2処理機器がタスク1を完了するのを待つことなく、解放1、割り当て2及びタスク提出2の操作を実行する。つまり、第1処理機器と第2処理機器とを同期させる必要がなく、非同期計算モードを実現し、計算性能を向上させることができる。
【0114】
本願の実施例では、第2処理機器は、タスクが実行される順にキャッシュを再利用でき、第1処理機器と第2処理機器とは、非同期計算モードを実現することができ、メモリ利用率を向上させるとともに、計算効率を向上させることができる。
【0115】
図7は、本願の実施例に係る別のメモリ管理方法のフローチャートである。図7に示すように、該方法は、ステップ701~ステップ706を含む。
【0116】
ステップ701において、第1処理機器は、第3タスクにキャッシュプールにおける第5キャッシュブロックを割り当てる。
【0117】
ステップ701の実施形態は、ステップ301の実施形態と同様であってもよい。
【0118】
ステップ702において、第1処理機器は、第3タスクを第2処理機器の操作キューに提出する。
【0119】
いくつかの実施例では、第1処理機器は、第3タスクを第2処理機器の操作キューに提出した直後、第5キャッシュブロックを解放する。
【0120】
ステップ703において、第1処理機器は、第3タスクが完了したかどうかを検査する。
【0121】
そうである場合、ステップ704を実行し、そうではない場合、ステップ703を再実行する。いくつかの実施例では、第1処理機器は、第3タスクが完了したかどうかを定期的に(たとえば、5ms、10msなどおきに)検査することができる。第3タスクが完了したことを検査した場合、メモリアロケータを呼び出して第5キャッシュブロックをキャッシュプールに再び入れ、そうではない場合、定期検査を続行する。いくつかの実施例では、ステップ703は、毎回キャッシュブロック(たとえば、第5キャッシュブロック)を解放する前に、第3タスクが完了したかどうかを検査することに置き換えられる。いくつかの実施例では、ステップ703は、毎回キャッシュブロック(たとえば、第5キャッシュブロック)を申し込む前、第3タスクが完了したかどうかを検査することに置き換えられる。第1処理機器は、第3タスクが完了したかどうかを他の方式で検査してもよいが、本願の実施例は限定しない。
【0122】
ステップ704において、第1処理機器は、第5キャッシュブロックをキャッシュプールに再び入れる。
【0123】
ステップ705において、第1処理機器は、第4タスクにキャッシュプールにおける第6キャッシュブロックを割り当てする。
【0124】
第5キャッシュブロックと、第6キャッシュブロックとは、重複していない。
【0125】
ステップ706において、第1処理機器は、第4タスクを第2処理機器の操作キューに提出する。
【0126】
第2処理機器は、第5キャッシュブロックを占有して第3タスクを実行し、第6キャッシュブロックを占有して第4タスクを実行することを理解されたい。
【0127】
本願の実施例では、第1処理機器は、第2処理機器におけるタスクが完了したか否かを定期的に検査し、いずれかの計算タスクが完了すると、第2処理機器におけるすべての計算タスクが完了するのを待つことなく、該いずれかの計算タスクに対応するキャッシュを解放することによって、処理効率を向上させることができる。
【0128】
以下、図8におけるメモリ管理方法のタイミングチャートを併せて、図7のメモリ管理方法についてさらに説明する。図8は、図7におけるメモリ管理方法に対応する、本願の実施例に係るメモリ管理方法のタイミングチャートである。図8に示すように、第1処理機器は、割り当て1、タスク提出1(第3タスクに対応)、解放1、割り当て2、タスク提出2(第4タスクに対応)及び解放2を順に実行し、第2処理機器は、タスク実行1及びタスク実行2を順に実行する。図8では、割り当て1は、第1処理機器がタスク1にキャッシュプールにおける第5キャッシュブロックを割り当てることを表し、割り当て2は、第1処理機器がタスク2にキャッシュプールにおける第6キャッシュブロックを割り当てることを表し、タスク提出1は、第1処理機器が該タスク1を第2処理機器の操作キューに提出することを表し、タスク提出2は、第1処理機器が該タスク2を第2処理機器の操作キューに提出することを表し、解放1は、第1処理機器が第5キャッシュブロックを解放することを表し、解放2は、第1処理機器が第6キャッシュブロックを解放することを表し、タスク実行1は、第2処理機器が該タスク1を実行することを表し、タスク実行2は、第2処理機器がタスク2を実行することを表す。図8では、第1処理機器が割り当て1を実行して割り当てられる第5キャッシュブロックと、割り当て2を実行して割り当てられる第6キャッシュブロックとは、いかなる同一のキャッシュもない。つまり、第2処理機器によって実行される同一操作キューの計算タスクについて、キャッシュブロックを再利用することはでない。図6のタイミングチャートについての説明と比較すると、図8のタイミングチャートにおける解放1の操作は、第1処理機器が第5キャッシュブロックを解放することである一方、図6のタイミングチャートにおける解放1の操作は、第1処理機器が第1キャッシュブロックを解放し、該第1キャッシュブロックをキャッシュプールに再び入れることである。図8のタイミングチャートにおける解放2の操作は、第1処理機器が第6キャッシュブロックを解放することである一方、図6のタイミングチャートにおける解放2の操作は、第1処理機器が第2キャッシュブロックを解放し、該第2キャッシュブロックをキャッシュプールに再び入れることである。図7のメモリ管理方法では、第1処理機器が、いずれかの計算タスクを第2処理機器の操作キューに提出した後、該いずれかの計算タスクが第2処理機器によって完了されたかどうかを定期的に検査し、該いずれかの計算タスクが完了されると、該いずれかの計算タスクが占有するメモリ空間をキャッシュプールに再び入れる。つまり、第1処理機器は、ある計算タスクを実行するキャッシュブロックを第2処理機器に割り当て、該計算タスクが完了されるまで、該キャッシュブロックをキャッシュプールに再び入れる。図8に示すように、第1処理機器は、タスク提出1、解放1、割り当て2及びタスク2の操作を実行すると同時に、第2処理機器は、タスク1を実行する。第2処理機器は、タスク2を実行するとき、第1処理機器は、解放2の操作を実行する。これから分かるように、第1処理機器は、第2処理機器がタスク1を完了するのを待つことなく、解放1、割り当て2及びタスク提出2の操作を実行する。つまり、第1処理機器と第2処理機器とを同期させる必要がなく、非同期計算モードを実現し、計算性能を向上させることができる。
【0129】
本願の実施例では、第1処理機器と第2処理機器は、非同期計算モードを実現することができ、メモリ利用率を向上させることができる。
【0130】
以下、上述した実施例に係るメモリ管理方法を実現できるデータ処理装置の構造について説明する。
【0131】
図9は、本願の実施例に係るデータ処理装置の構造模式図であり、図9に示すように、該データ処理装置は、
キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるためのメモリ割り当てユニット901と、
第2処理機器が第2タスクと第1タスクを順に実行する必要があるか否かを決定するための処理ユニット902とを含み、
メモリ割り当てユニット901は、さらに、第2処理機器が第2タスクと第1タスクを順に実行する必要があると処理ユニットが決定した場合、キャッシュプールの第2キャッシュブロックを第2タスクに割り当てるために用いられ、前記第2キャッシュブロックの少なくとも一部は第1キャッシュブロックに含まれる。
【0132】
処理ユニットとメモリ割り当てユニットとは、同一のユニットであってもよいし、2つの独立したユニットであってもよい。いくつかの可能な実施の形態では、処理ユニットは、CPUなどのプロセッサであり、メモリ割り当てユニットはハードウェアである。いくつかの可能な実施の形態では、処理ユニットは、CPUなどのプロセッサであり、メモリ割り当てユニットの機能は、プロセッサにより実行されるソフトウェア又はプログラムによって実現される。つまり、処理ユニットの機能及びメモリ割り当てユニットの機能は、いずれも、プロセッサによって実現される。
【0133】
1つの可能な実施形態では、処理ユニット902は、さらに、第1タスクを第2処理機器に送信するために用いられる、メモリ割り当てユニット901は、さらに、第1タスクを第2処理機器に送信したことに応じて、第1キャッシュブロックをキャッシュプールに再び入れるために用いられる。
【0134】
1つの可能な実施形態では、処理ユニット902は、さらに、第1キャッシュブロックに対応する第1タスクの位置する第1操作キューを記録するために用いられ、処理ユニット902は、記録された第1タスクの位置する第1操作キューに基づいて、第1タスクと第2タスクとの位置する操作キューが同じであると決定するために用いられる。
【0135】
1つの可能な実施形態では、メモリ割り当てユニット901は、さらに、第2処理機器による第1タスクの実行中に、キャッシュプールの第2キャッシュブロックを第2タスクに割り当てるために用いられる。
【0136】
1つの可能な実施形態では、メモリ割り当てユニット901は、さらに、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックをキャッシュプールから検索するために用いられ、メモリ割り当てユニット901は、処理ユニットが少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係に基づいて、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定した場合、少なくとも1つの候補キャッシュブロックから決定された第2キャッシュブロックを第2タスクに割り当てるために用いられる。
【0137】
1つの可能な実施形態では、メモリ割り当てユニット901は、キャッシュプールから、第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索し、少なくとも1つの候補キャッシュブロックから、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを検索するために用いられる。
【0138】
1つの可能な実施形態では、メモリ割り当てユニット901は、処理ユニットが少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと第2タスクとの実行順序関係に基づいて、第2処理機器が第2タスクと第1タスクを順に実行する必要があると決定した場合、少なくとも1つの候補キャッシュブロックのサイズに基づいて、少なくとも1つの候補キャッシュブロックから決定された第2キャッシュブロックを第2タスクに割り当てるために用いられる。
【0139】
1つの可能な実施形態では、メモリ処理ユニット901は、さらに、処理ユニットが少なくとも1つの候補キャッシュブロックが第2タスクの要求を満たすキャッシュブロックを含まないと決定した場合、キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つのキャッシュブロックから、第2タスクに割り当てられるターゲットキャッシュブロックを決定するために用いられる。
【0140】
1つの可能な実施形態では、メモリ処理ユニット901は、さらに、キャッシュプールから、第2タスクの要求を満たすキャッシュブロックが検索できなかった場合、キャッシュプールを拡張し、拡張後のキャッシュプールから、第2タスクに割り当てられるターゲットキャッシュブロックを検索するために用いられる。
【0141】
図10は、本願の実施例に係る別のデータ処理装置の構造模式図であり、図10に示すように、該データ処理装置は、第1プロセッサ1001、第2プロセッサ1002、及びメモリ1003を含み、メモリは、命令及びデータを記憶するために用いられ、第1プロセッサは、メモリに記憶された命令を実行し、第1プロセッサに上記いずれかの実施例に記載のメモリ管理方法を実行させるために用いられ、第2処理機器は、第1処理機器により割り当てられたキャッシュブロックを用いて、第1プロセッサにより送信されたタスクを実行するために用いられる。メモリ1003は、第2プロセッサ1002により使用される機器メモリ、及び第1プロセッサ1001のメモリを含むことができる。例示的には、第1処理機器は、CPUであり、第2処理機器はGPUであり、メモリ1003は、GPUのビデオメモリを含む。
【0142】
本願の実施例は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体をさらに提供し、コンピュータプログラムがプロセッサにより実行されると、上記いずれかの実施例に記載のメモリ管理方法を実現する。該コンピュータ読み取り可能な記憶媒体は、非一時的なコンピュータ読み取り可能な記憶媒体を含む。
【0143】
本願の実施例は、命令を含むコンピュータプログラム製品をさらに提供し、コンピュータ上で実行されると、コンピュータに上記実施例に係るメモリ管理方法を実行させる。
【0144】
本願の実施例は、メモリ及び第1プロセッサを含む電子機器をさらに提供し、前記メモリは、命令を記憶するために用いられ、前記第1プロセッサは、前記メモリに記憶された命令を実行し、前記第1プロセッサに上記いずれかの実施例に記載のメモリ管理方法を実行させるために用いられる。前記電子機器は、第2プロセッサをさらに含むことができ、前記第2プロセッサは、前記第1プロセッサにより割り当てられたキャッシュブロックを用いて、前記第1プロセッサにより送信されたタスクを実行するために用いられる。
【0145】
本願の実施例は、データインタフェース及び第1態様に記載の第1処理機器を含むチップを提供し、前記第1処理機器は、上記いずれかの実施例に記載のメモリ管理方法を実行するために用いられる。
【0146】
上記したものは、本出願の具体的な実施形態に過ぎず、本出願の保護範囲はこれに限定されず、当業者は本出願に開示された技術的範囲内で、様々な等価の修正や置換を容易に想到することができ、これらの修正や置換はいずれも本出願の保護範囲内に含まれるべきである。したがって、本願の保護範囲は特許請求の範囲を基準とすべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【手続補正書】
【提出日】2022-01-26
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
メモリ管理方法であって、
第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップと、
前記第1処理機器は、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定した場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップであって、前記第2キャッシュブロックの少なくとも一部が前記第1キャッシュブロックに含まれるステップと、を含む、
ことを特徴とするメモリ管理方法。
【請求項2】
前記第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップの後に、
前記第1処理機器は、前記第1タスクを前記第2処理機器に送信したことに応じて、前記第1キャッシュブロックを前記キャッシュプールに再び入れるステップをさらに含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記第1処理機器は、キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるステップの後に、
前記第1処理機器は、前記第1キャッシュブロックに対応する前記第1タスクの位置する第1操作キューを記録するステップをさらに含み、
前記第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定するステップは、
前記第1処理機器は、記録された前記第1タスクの位置する前記第1操作キューに基づいて、前記第1タスクと前記第2タスクとの位置する操作キューが同じであると決定するステップを含む、
ことを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップは、
前記第1処理機器は、前記第2処理機器による前記第1タスクの実行中に、前記キャッシュプールの前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む、
ことを特徴とする請求項1~3のいずれかに記載の方法。
【請求項5】
前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップの前に、
前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するステップをさらに含み、
前記第1処理機器は、第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があると決定した場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるステップは、
前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む、
ことを特徴とする請求項1~4のいずれかに記載の方法。
【請求項6】
前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記キャッシュプールから検索するステップは、
前記第1処理機器は、前記キャッシュプールから、前記第2タスクに必要なキャッシュサイズを満たす少なくとも1つの候補キャッシュブロックを検索するステップと、
前記第1処理機器は、タスクが現在割り当てられている少なくとも1つの候補キャッシュブロックを前記少なくとも1つの候補キャッシュブロックから検索するステップと、を含む、
ことを特徴とする請求項5に記載の方法。
【請求項7】
前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係に基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップは、
第1処理機器は、前記少なくとも1つの候補キャッシュブロックに現在割り当てられているタスクと前記第2タスクとの実行順序関係、及び前記少なくとも1つの候補キャッシュブロックのサイズに基づいて、前記少なくとも1つの候補キャッシュブロックから決定された前記第2キャッシュブロックを前記第2タスクに割り当てるステップを含む、
ことを特徴とする請求項5又は6に記載の方法。
【請求項8】
前記第1処理機器は、前記少なくとも1つの候補キャッシュブロックが前記第2タスクの要求を満たすキャッシュブロックを含まないと決定した場合、前記キャッシュプールに含まれる、タスクが現在割り当てられていない少なくとも1つのキャッシュブロックから、前記第2タスクに割り当てられるターゲットキャッシュブロックを決定するステップをさらに含む、
ことを特徴とする請求項5~7のいずれかに記載の方法。
【請求項9】
前記第1処理機器は、前記キャッシュプールから、前記第2タスクの要求を満たすキャッシュブロックが検索できなかった場合、前記キャッシュプールを拡張するステップと、
前記第1処理機器は、拡張後の前記キャッシュプールから、前記第2タスクに割り当てられるターゲットキャッシュブロックを検索するステップと、をさらに含む、
ことを特徴とする請求項1~8のいずれかに記載の方法。
【請求項10】
データ処理装置であって、
キャッシュプールの第1キャッシュブロックを第1タスクに割り当てるためのメモリ割り当てユニットと、
第2処理機器が第2タスクと前記第1タスクとを順に実行する必要があるか否かを決定するための処理ユニットとを含み、
前記メモリ割り当てユニットは、さらに、前記第2処理機器が前記第2タスクと前記第1タスクとを順に実行する必要があることが前記処理ユニットによって決定された場合、前記キャッシュプールの第2キャッシュブロックを前記第2タスクに割り当てるために用いられ、第2キャッシュブロックの少なくとも一部は前記第1キャッシュブロックに含まれる、
ことを特徴とするデータ処理装置。
【請求項11】
メモリと第1プロセッサとを含む電子機器であって、前記メモリは、命令を記憶するために用いられ、前記第1プロセッサは、前記メモリに記憶された命令を実行し、請求項1~9のいずれかに記載の方法を実行させるために用いられる、
ことを特徴とする電子機器。
【請求項12】
前記電子機器は、第2プロセッサをさらに含み、前記第2プロセッサは、前記第1プロセッサによって割り当てられたキャッシュブロックを用いて、前記第1プロセッサによって送信されたタスクを実行するために用いられる、
ことを特徴とする請求項11に記載の電子機器。
【請求項13】
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
前記コンピュータプログラムは、プログラム命令を含み、前記プログラム命令がプロセッサによって実行されると、前記プロセッサに請求項1~9のいずれかに記載の方法を実行させる、ことを特徴とする記憶媒体。
【国際調査報告】