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

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

▶ 北京市商▲湯▼科技▲開▼▲發▼有限公司の特許一覧

<>
  • 特許-データ記憶 図1
  • 特許-データ記憶 図2
  • 特許-データ記憶 図3
  • 特許-データ記憶 図4
  • 特許-データ記憶 図5
  • 特許-データ記憶 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-24
(45)【発行日】2022-11-01
(54)【発明の名称】データ記憶
(51)【国際特許分類】
   G06F 12/02 20060101AFI20221025BHJP
   G06F 12/084 20160101ALI20221025BHJP
【FI】
G06F12/02 510B
G06F12/084
【請求項の数】 20
(21)【出願番号】P 2021557735
(86)(22)【出願日】2020-12-16
(65)【公表番号】
(43)【公表日】2022-08-23
(86)【国際出願番号】 CN2020136966
(87)【国際公開番号】W WO2021232769
(87)【国際公開日】2021-11-25
【審査請求日】2021-09-28
(31)【優先権主張番号】202010420206.5
(32)【優先日】2020-05-18
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】520291939
【氏名又は名称】北京市商▲湯▼科技▲開▼▲發▼有限公司
【氏名又は名称原語表記】BEIJING SENSETIME TECHNOLOGY DEVELOPMENT CO.,LTD.
【住所又は居所原語表記】Room 1101-1117,11th Floor No.58 Northwest 4th Ring Road, Haidian District Beijing 100080 China
(74)【代理人】
【識別番号】110000729
【氏名又は名称】特許業務法人 ユニアス国際特許事務所
(72)【発明者】
【氏名】▲張▼ 峰
(72)【発明者】
【氏名】周 乃彪
(72)【発明者】
【氏名】胡 英俊
(72)【発明者】
【氏名】王 文▲強▼
(72)【発明者】
【氏名】蒋 科
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2007-310626(JP,A)
【文献】国際公開第2019/038859(WO,A1)
【文献】中国特許出願公開第109117273(CN,A)
【文献】中国特許出願公開第110427394(CN,A)
【文献】中国特許出願公開第110555890(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
G06F 12/084
(57)【特許請求の範囲】
【請求項1】
データを記憶するための方法であって、
記憶待ちデータに必要なストレージスペースの大きさに基づいて目標メモリ中の少なくとも2つの候補ストレージスペースを確定することと、
前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することと、
前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定することと、を含み、
各候補ストレージスペースは、少なくとも1つの候補ストレージソリューションに対応する
ことを特徴とするデータを記憶するための方法。
【請求項2】
前記候補ストレージスペースに対応する候補ストレージソリューションは、第1候補ストレージソリューションおよび第2候補ストレージソリューションの中の少なくとも1つを含み、
前記第1候補ストレージソリューション中の開始記憶アドレスは、前記候補ストレージスペースの開始アドレスであり、前記第2候補ストレージソリューション中の終了記憶アドレスは、前記候補ストレージスペースの終了アドレスである
ことを特徴とする請求項1に記載のデータを記憶するための方法。
【請求項3】
前記記憶待ちデータに対応する第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、
複数の候補ストレージソリューションに対して、前記記憶待ちデータの第1データリリース時間および第2データリリース時間に基づいて、当該候補ストレージソリューションの目標重みを確定することを含み、
前記第2データリリース時間は、前記記憶待ちデータの前記候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間である
ことを特徴とする請求項1または2に記載のデータを記憶するための方法。
【請求項4】
当該候補ストレージソリューションの前記目標重みは、前記第1データリリース時間と前記第2データリリース時間との間の時間間隔と負の相関関係を有する
ことを特徴とする請求項3に記載のデータを記憶するための方法。
【請求項5】
前記記憶待ちデータに対応する第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、
複数の候補ストレージソリューションに対して、前記記憶待ちデータのライフサイクルおよび前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、当該候補ストレージソリューションの目標重みを確定することを含み
ことを特徴とする請求項1または2に記載のデータを記憶するための方法。
【請求項6】
前記複数の候補ストレージソリューションに対して、前記記憶待ちデータのライフサイクルおよび当該候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、当該候補ストレージソリューションの目標重みを確定することは、
前記記憶待ちデータに対応する最大ライフサイクルを確定することと、
前記記憶待ちデータのライフサイクルと前記最大ライフサイクルとの間の第1比率値を確定することと、
当該候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスと前記目標メモリの終了アドレスとの間の第2比率値を確定することと、
前記第1比率値および前記第2比率値に基づいて当該候補ストレージソリューションの前記目標重みを確定することと、を含む
ことを特徴とする請求項5に記載のデータを記憶するための方法。
【請求項7】
前記候補ストレージソリューションの前記目標重みは、前記第1比率値と前記第2比率値との間の差分の絶対値と負の相関関係を有する
ことを特徴とする請求項6に記載のデータを記憶するための方法。
【請求項8】
前記記憶待ちデータに対応する第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、
複数の候補ストレージソリューションに対して、前記記憶待ちデータに対応する第1データリリース時間および第2データリリース時間に基づいて、当該候補ストレージソリューションの第1重みを確定することと、
前記記憶待ちデータのライフサイクルおよび当該候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、当該候補ストレージソリューションの第2重みを確定することと、
前記第1重みと前記第2重みの加重和に基づいて、当該候補ストレージソリューションの目標重みを得ることと、を含み、
前記第2データリリース時間は、前記記憶待ちデータの当該候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間である
ことを特徴とする請求項1または2に記載のデータを記憶するための方法。
【請求項9】
前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、
複数の候補ストレージソリューションに対して、前記記憶待ちデータの第1データリリース時間、ライフサイクル、および、当該候補ストレージソリューションに対応するストレージスペースの大きさに基づいて、当該候補ストレージソリューションの目標重みを確定することを含む
ことを特徴とする請求項1または2に記載のデータを記憶するための方法。
【請求項10】
前記当該候補ストレージソリューションの目標重みを確定することは、
前記記憶待ちデータに対応する第1データリリース時間および第2データリリース時間に基づいて、当該候補ストレージソリューションの第1重みを確定することと、
前記記憶待ちデータのライフサイクルおよび当該候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、当該候補ストレージソリューションの第2重みを確定することと、
前記候補ストレージソリューションに対応する候補ストレージスペースの大きさおよび前記目標メモリの合計ストレージスペースの大きさに基づいて、当該候補ストレージソリューションの第3重みを確定することと、
前記第1重みと前記第2重みと前記第3重みの加重和に基づいて、当該候補ストレージソリューションの前記目標重みを得ることと、を含み、
前記第2データリリース時間は、前記記憶待ちデータの当該候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間である
ことを特徴とする請求項9に記載のデータを記憶するための方法。
【請求項11】
前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、
複数の候補ストレージソリューションに対して、前記記憶待ちデータの第1データリリース時間および当該候補ストレージソリューションに対応するストレージスペースの大きさに基づいて、当該候補ストレージソリューションの目標重みを確定することを含む
ことを特徴とする請求項1または2に記載のデータを記憶するための方法。
【請求項12】
前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、
複数の候補ストレージソリューションに対して、前記記憶待ちデータのライフサイクルおよび当該候補ストレージソリューションに対応するストレージスペースの大きさに基づいて、当該候補ストレージソリューションの目標重みを確定することを含む
ことを特徴とする請求項1または2に記載のデータを記憶するための方法。
【請求項13】
前記記憶待ちデータを前記目標ストレージソリューションに対応する候補ストレージスペースの第1アドレスから第2アドレスに記憶することと、
前記第1アドレスから前記第2アドレスに対応するストレージスペースをすでに割り当てたストレージスペースに設定することと、をさらに含み、
ここで、前記第1アドレスおよび前記第2アドレスの中の1つは、前記目標ストレージソリューションに対応する候補ストレージスペースの開始アドレスであり、または、前記第1アドレスおよび前記第2アドレスの中の1つは、前記目標ストレージソリューションに対応する候補ストレージスペースの終了アドレスである
ことを特徴とする請求項1~12のいずれか1項に記載のデータを記憶するための方法。
【請求項14】
前記記憶待ちデータに対応する第1データリリース時間に達した後に、前記第1アドレスから前記第2アドレスに対応するストレージスペースをリリースすることと、
前記第1アドレスから前記第2アドレスに対応するストレージスペースを割り当てなかったストレージスペースに設定することと、をさらに含む
ことを特徴とする請求項13に記載のデータを記憶するための方法。
【請求項15】
前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定することは、
前記複数の候補ストレージソリューションのそれぞれの目標重みのうちで、一番大きい目標重みに対応する候補ストレージソリューションを前記記憶待ちデータの前記目標ストレージソリューションに確定すること、または
前記複数の候補ストレージソリューションのそれぞれの目標重みのうちで、所定の重み閾値を超える任意の目標重みに対応する候補ストレージソリューションを前記目標ストレージソリューションに確定することを含む
ことを特徴とする請求項1~14のいずれか1項に記載のデータを記憶するための方法。
【請求項16】
前記目標メモリは、人工知能(AI)チップの共有キャッシュである
ことを特徴とする請求項1~15のいずれか1項に記載のデータを記憶するための方法。
【請求項17】
データ処理装置であって、
記憶待ちデータに必要なストレージスペースの大きさに基づいて目標メモリ中の少なくとも2つの候補ストレージスペースを確定するための第1確定ユニットと、
前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定するための第2確定ユニットと、
前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定するための第3確定ユニットと、を備え、
各候補ストレージスペースは、少なくとも1つの候補ストレージソリューションに対応する
ことを特徴とするデータ処理装置。
【請求項18】
コンピュータープログラムが記録されているコンピューター可読記録媒体であって、
前記コンピュータープログラムは、プログラム命令を含み、
前記プログラム命令が電子デバイスのプロセッサによって実行されるときに、前記プロセッサが請求項1~16のいずれか1項に記載の方法に実行するようにする
ことを特徴とするコンピューター可読記録媒体。
【請求項19】
電子デバイスであって、
プロセッサによって実行可能な命令が記憶されているメモリと、目標メモリと、プロセッサと、含み、
前記プロセッサによって前記命令が実行されるときに、請求項1~16のいずれか1項に記載の方法が実装される
ことを特徴とする電子デバイス。
【請求項20】
前記電子デバイスは、AIチップであり、
前記目標メモリは、前記AIチップの共有キャッシュである
ことを特徴とする請求項19に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピューター分野に関し、特に、データを記憶するための方法および関連製品に関する。
【背景技術】
【0002】
人工知能(artificial intelligence、AI)チップは、一般的に、異なる機能を有する複数の計算ユニット、限られたスペースを備えた高速共有キャッシュ、および、ダブルデータレート同期ダイナミックランダムアクセスメモリ(Double Data Rate Synchronous Dynamic Random Access Memory、DDR SDRAM、DDR)から構成される。
【発明の概要】
【0003】
本発明の実施例は、データを記憶するための方法および関連製品を開示する。
【0004】
第1態様によると、本発明の実施例は、データを記憶するための方法を提供し、当該方法は、記憶待ちデータに必要なストレージスペースの大きさに基づいて目標メモリ中の少なくとも2つの候補ストレージスペースを確定することと、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することと、前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定することと、を含み、各候補ストレージスペースは、少なくとも1つの候補ストレージソリューションに対応する。
【0005】
第2の態様によると、本発明の実施例は、データ処理装置を提供し、当該装置は、記憶待ちデータに必要なストレージスペースの大きさに基づいて目標メモリ中の少なくとも2つの候補ストレージスペースを確定するための第1確定ユニットと、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定するための第2確定ユニットと、前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定するための第3確定ユニットと、を備え、各候補ストレージスペースは、少なくとも1つの候補ストレージソリューションに対応する。
【0006】
第3態様によると、本発明の実施例は、電子デバイスを提供し、当該電子デバイスは、プロセッサによって実行可能な命令が記憶されているメモリと、目標メモリと、プロセッサと、を含み、ここで、前記プロセッサによって前記命令が実行されるときに、前記第1態様および任意のオプションの実施形態の方法が実装される。
【0007】
第4態様によると、本発明の実施例は、チップを提供し、当該チップは、プロセッサと、データインターフェースと、前記第1態様に記載の目標メモリと、含み、ここで、プロセッサは、第1態様または第1態様の任意の実装可能な形態の方法を実行する。
【0008】
第5態様によると、本発明の実施例は、コンピューター可読記録媒体を提供し、当該コンピューター記録媒体には、コンピュータープログラムが記憶されており、当該コンピュータープログラムは、プログラム命令を含み、当該プログラム命令が電子デバイスのプロセッサによって実行されるときに、当該プロセッサが前記第1態様および任意のオプションの実施形態の方法を実行するようにする。
【0009】
第6態様によると、本発明の実施例は、コンピュータープログラム製品を提供し、当該コンピュータープログラム製品は、プログラム命令を含み、前記プログラム命令がプロセッサによって実行されるときに、前記プロセッサが前記第1態様および任意のオプションの実施形態の方法を実行するようにする。
【0010】
本発明の実施例において、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することによって、複数の候補ストレージソリューションの中からメモリの断片化を効果的に削減できるストレージソリューションを確定することができる。
【図面の簡単な説明】
【0011】
図1】本発明の実施例によって提供されるデータを記憶するための方法のフローチャートである。
図2】本発明の実施例によって提供される目標重みを計算する過程の模式図である。
図3】本発明の実施例によって提供されるデータを記憶するためのもう1方法のフローチャートである。
図4】本発明の実施例によって提供されるデータ処理装置の構成の模式図である。
図5】本発明の実施例によって提供されるもう1データ処理装置の構成の模式図である。
図6】本発明の実施例によって提供される電子デバイスの構成を示す模式図である。
【発明を実施するための形態】
【0012】
本発明の明細書の実施例および特許請求の範囲および前記図面における「第1」、「第2」、及び「第3」などの用語は、類似の対象を区別するために使用されるが、必ずしも特定の順序または優まず順位を説明するために使用されるとは限らない。なお、「含む」および「備える」という用語およびそれらの任意の変形は、たとえば、一連のステップまたはユニットを含む、非排他的な包含をカバーすることを意図している。方法、システム、製品、またはデバイスは、必ずしもそれらの明確にリストされたステップまたはユニットに限定されないが、明確にリストされていない、またはこれら過程、方法、製品またはデバイスに固有の他のステップまたはユニットを含み得る。
【0013】
AIチップの高速共有キャッシュの大きさは、一般的に数MBであり、現在の一般的なものは8MBまたは12MBである。CPUのレジスタは、AIチップの命令および中央処理装置(Central Processing Unit、CPU)命令とは異なり、CPUのレジスタは、固定の大きさを有し、たとえば32ビットCPUのレジスタは32ビットに固定されている。ただし、AIチップには、レジスタがなく、またニューラルネットワークのテンソル(tensor)の大きさも固定されておらず、固定のストレージスペースをtensorに割り当てることができない。限られた共有キャッシュ空間および割り当て待ちのtensorの固定されない大きさを考慮すると、割り当て戦略が効果的でない場合、メモリの断片化が非常に容易に発生され、これらメモリの断片化は小さな不連続な形で異なる位置に出現され、これら空きメモリが使用できなくなり、速共有キャッシュの役割を十分に果たすことができない。実際には、これら空きメモリの断片化が存在する形は、内部断片化および外部断片化のような2種がある。
【0014】
内部断片化の発生:すべてのメモリ割り当ては、4、8、または16で割り切れる(プロセッサアーキテクチャによって異なる)のアドレスから開始する必要があるため、またはメモリ管理ユニット(memory management unit、MMU)のページングメカニズムに限られるため、メモリ割り当てアルゴリズムは所定の大きさのメモリブロックのみをデータに対して割り当てることができる。特定のデータを記憶するときに43バイトのメモリブロックを占有する必要があると仮定すると、適切な大きさのメモリがないため、44バイト、48バイトなどのわずかに大きいバイトが得られる。したがって、必要なサイズから丸めによって発生される余分な空間を内部断片化と呼ぶ。
【0015】
外部断片化の発生:頻繁な割り当ておよび物理ページの再利用により、大量の連続した小さなページブロックがすでに割り当てたページ中に散在し、外部断片化が発生することになる。1ブロックの合計100個の単位(たとえば1つのアドレス)の連続した空きメモリ空間があり、範囲が0~99であると仮定する。その中から1ブロックのメモリ、たとえば10個の単位を申請する場合、申請されたメモリブロックは0~9の区間を占有することができる。このとき、もし5個の単位などの1ブロックのメモリを引き続き申請すると、申請された2番目のブロックのメモリブロックは10~14の区間を占有することになる。1番目のブロックのメモリブロックをリリースしてから、さらに、20個の単位などの10個の単位より大きい1ブロックのメモリブロックを申請すると、前にリリースしたメモリブロックが新たな要件を満たすことができないため、15から開始して20個の単位のメモリブロックを割り当てることになる。現在のメモリ空間の全体の状態は、0~9が空きであり、10~14が占有され、15~24が占有され、25~99が空きである。ここで、0~9が1つのメモリの断片である。10~14が常に占有され、またその後に申請する空間がいずれも10個の単位より大きいと、0~9の区間を使用することができなく、0~9区間が外部断片化になる。
【0016】
本発明の実施例は、高速共有キャッシュの役割を十分に果たすために、断片化を低減することができるデータを記憶するための方法を提供する。
【0017】
本発明の実施例によって提供されるデータを記憶するための方法は、主にAIチップ中の共有キャッシュを割り当てるシナリオに適用される。AIチップにより、テキスト識別、画像識別、画像超解像処理、音声識別、テキスト翻訳などの、データ処理タスクを実行するためには、いずれも、共有キャッシュを占有する必要があることを理解すべきである。つまり、本発明の実施例によって提供されるデータを記憶するための方法は、主に、AIチップによりデータ処理タスクを実行するシナリオに適用されるが、本発明の実施例によって提供される記憶するための方法は、他のメモリまたはキャッシュを割り当てるシーンにも適用され、本発明の実施例はこれに対して限定しない。
【0018】
本発明の実施例によって提供されるデータを記憶するための方法は、さらに、AIモデルのコンパイルシーンにも適用され得、すなわち、AIモデルを、コンパイルソフトウェアを利用してAIチップによって実行可能な命令シーケンスにコンパイルするシーンにも適用される。AIモデルのコンパイルシーンにおいて、データ処理装置は、本発明の実施例によって提供されるデータを記憶するための方法を実行することによって、AIモデルが処理操作を実行するときの共有キャッシュの割り当てをシミュレートし、さらに、AIモデルをコンパイルして共有キャッシュのメモリ割り当ておよびリリースを指示することができる命令シーケンスを得ることができる。AIチップがAIモデルをコンパイルして命令シーケンスを得るときに、共有キャッシュのメモリ割り当ておよびリリースの流れは本発明の実施例によって提供されるデータを記憶するための方法を実行して得られるメモリ割り当ておよびリリースの流れと同様である。このようなシーンにおいて、AIチップは、データ処理タスクを実行するときに本発明の実施例によって提供されるデータを記憶するための方法をリアルタイムに実行する必要がなく、命令シーケンスを実行するだけでよく、より少ない時間で済む。
【0019】
前記シーンにおいて、データ処理装置中のAIチップは、データ処理タスクを実行するときに、メモリの断片化の発生を減らし、キャッシュ割り当ての成功率を向上させることができる。
【0020】
以下、まず本発明の実施例に現れるいくつかの用語の意味を紹介する。
【0021】
AIチップの共有キャッシュは、データ処理装置のプログラムが運行されるときに動的に割り当てられる。ここで、共有キャッシュは、キャッシュブロックなどの、複数のストレージスペースに分割されることができる。異なるキャッシュブロックの大きさは、同じまたは異なり、キャッシュデータの要件に応じて決定され得る。本発明の実施例において、キャッシュブロックの状態をマークすることができ、たとえば、すでに割り当てたブロックをused_itemにマークし、割り当てなかったブロックをfree_itemにマークすることができる。初期状態は、共有キャッシュ全体が1つのfree_itemであり、一定の回数のメモリ割り当ておよびリリースを通じた後、複数のused_itemがある可能性があり、これらused_item間には1個のまたは0個のfree_itemがある可能性がある。すでに割り当てたブロックとは、占有されたストレージスペースを指し、割り当てなかったブロックとは、占有されなかったストレージスペースを指す。
【0022】
いくつかの実施例において、コンパイラは、AIチップに命令シーケンスを生成し、各命令の命令シーケンスにおけるシリアルナンバーを命令シリアルナンバーと呼ぶ。コンパイラは、データ処理装置によって運行される1つのソフトウェアまたは1セグメントのプログラムコードである。各tensor(データとして理解できる)は、複数の命令によって(命令の出力または命令の入力として)使用されることができ、これら命令中の最小のシリアルナンバーがtensorの開始シリアルナンバー(start program counter、start_pc)と呼ばれ、一番大きいシリアルナンバーがtensorの終了シリアルナンバー(end program counter、end_pc)と呼ばれ、end_pcとstart_pcとの間の差値がtensorのライフサイクルと呼ばれ得る。データのデータリリース時間とは、当該データによって占有されたアドレスがリリースされる時間、すなわちデータがリリースされる時間を指す。
【0023】
図1は、本発明の実施例によって提供されるデータを記憶するための方法を示すフローチャートである。
【0024】
101において、データ処理装置により、記憶待ちデータに必要なストレージスペースの大きさに基づいて目標メモリ中の少なくとも2つの候補ストレージスペースを確定する。
【0025】
オプションとして、記憶待ちデータは、入力画像データ、または、ニューラルネットワークを利用して入力画像に対して処理を実行して発生された中間結果および/または最終結果であり得る。たとえば、記憶待ちデータは、特徴マップの少なくとも一部、または、モデルの重みなどのモデルデータであり得、本発明の実施例はこれに対して限定しない。
【0026】
各候補ストレージスペース(free_itemに対応する)の大きさは、前記記憶待ちデータを記憶するために占有する必要があるストレージスペースの大きさ以上である。データ処理装置は、サーバ、デスクトップコンピューター、ノートブックコンピューター、携帯電話、タブレットコンピューターなどの、データ処理操作を実行できるデバイスであり得る。オプションとして、前記目標メモリは、人工知能(AI)チップの共有キャッシュである。
【0027】
データ処理装置は、前記目標メモリの割り当てなかった複数の個別のストレージスペース(すなわちfree_item)から、前記記憶待ちデータを記憶できる2つまたは2つ以上の候補ストレージスペースを確定することができる。実際の適用において、データ処理装置中のプロセッサは、共有キャッシュのすべてのストレージスペース(すなわちitem)を線形にスキャンして、記憶待ちデータ(たとえばtensor)によって占有する必要があるストレージスペース以上のfree_itemを、候補ストレージスペースとして、前記少なくとも2つの候補ストレージスペースを得る。
【0028】
102において、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定する。
【0029】
ここで、各候補ストレージスペースは、少なくとも1つの候補ストレージソリューションに対応する。前記記憶待ちデータの第1データリリース時間は、前記記憶待ちデータがリリースされる時間であり得、すなわち前記記憶待ちデータが占めるストレージスペースがリリースされる時間であり得る。前記記憶待ちデータのライフサイクルは、前記記憶待ちデータがリリースされる時間と前記記憶待ちデータが記憶される時間との間の間隔であり得る。例示的に、各候補ストレージソリューションの目標重みは、前記記憶待ちデータの第1データリリース時間と第2データリリース時間との間の間隔と、負の相関関係を有する、ここで、前記第2データリリース時間は、前記記憶待ちデータの前記候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間である。後続でステップ102の実施形態をさらに詳細に説明する。
【0030】
103において、前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定する。
【0031】
前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定することは、データ処理装置により、前記複数の候補ストレージソリューションのそれぞれの目標重みのうちで、一番大きい目標重みに対応する候補ストレージソリューションを前記記憶待ちデータの目標ストレージソリューションに確定することであってもよいし、データ処理装置により、前記複数の候補ストレージソリューションのそれぞれの目標重みのうちで、所定の重み閾値を超える任意の目標重みに対応する候補ストレージソリューションを前記記憶待ちデータの目標ストレージソリューションに確定することであってもよく、ここで、前記重み閾値は0.6、0.75、0.8などであり得る。
【0032】
オプションとして、データ処理装置は、ステップ103を実行した後に、前記記憶待ちデータを前記目標ストレージソリューションに対応する候補ストレージスペースの第1アドレスから第2アドレスに記憶することと、前記第1アドレスから前記第2アドレスに対応するストレージスペースをすでに割り当てたストレージスペース(すなわちused_item)に設定することと、をさらに実行することができる。オプションとして、前記第1アドレスおよび前記第2アドレスの中の1つは、前記目標ストレージソリューションに対応する候補ストレージスペースの開始アドレスであり、または、前記第1アドレスおよび前記第2アドレスの中の1つは、前記目標ストレージソリューションに対応する候補ストレージスペースの終了アドレスである。いくつかの実施例において、データ処理装置は、前記記憶待ちデータに対応する第1データリリース時間に達した後に、前記第1アドレスから前記第2アドレスに対応するストレージスペースをリリースすることと、前記第1アドレスから前記第2アドレスに対応するストレージスペースを割り当てなかったストレージスペース(すなわちfree_item)に設定することと、をさらに実行することができる。いくつかの実施例において、データ処理装置は、特定のメモリ管理ソフトウェアを利用して図1の方法の流れを実行する。
【0033】
いくつかの実施例において、目標ストレージソリューションに対応する候補ストレージスペースが記憶待ちデータに必要なストレージスペースよりも大きいと、記憶待ちデータを前記第1アドレスから第2アドレスに記憶した後に、目標ストレージソリューションに対応する候補ストレージスペース中の記憶待ちデータを記憶しなかった空間を依然として割り当てなかったストレージスペース(すなわちfree_item)に設定する。たとえば、第1アドレスが目標ストレージソリューションに対応する候補ストレージスペースの開始アドレスであると仮定すると、第2アドレスの次のアドレスから目標ストレージソリューションに対応する候補ストレージスペースの終了アドレスまでの間のストレージスペースを、割り当てなかったストレージスペースに設定する。また、たとえば、第2アドレスが目標ストレージソリューションに対応する候補ストレージスペースの終了アドレスであると仮定すると、目標ストレージソリューションに対応する候補ストレージスペースの開始アドレスから第1アドレスの前の1つのアドレスまでの間のストレージスペースを、割り当てなかったストレージスペースに設定する。
【0034】
本発明の実施例において、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定し、複数の目標重みに基づいて、複数の候補ストレージソリューションの中からメモリの断片化を効果的に削減できるストレージソリューションを確定することができる。
【0035】
いくつかの実施例において、各候補ストレージスペースに対応する候補ストレージソリューションは、第1候補ストレージソリューションおよび第2候補ストレージソリューションの中の少なくとも1つを含み、ここで、前記第1候補ストレージソリューション中の開始記憶アドレスは、前記候補ストレージスペースの開始アドレスであり、前記第2候補ストレージソリューション中の終了記憶アドレスは、前記候補ストレージスペースの終了アドレスである。つまり、各候補ストレージスペースは、1つまたは2つの割り当て方法に対応し、つまり、左割り当て(第1候補ストレージソリューションに対応する)および右割り当て(第2候補ストレージソリューションに対応する)に対応し、それぞれこの2つの割り当て方法の目標重みを計算することができる。左割り当てとは、記憶待ちデータを特定の候補ストレージスペースの開始アドレスから特定のアドレスまでに記憶することを指し、すなわち、当該記憶待ちデータに対して当該候補ストレージスペースの開始アドレスからその後の連続した複数のアドレスを割り当てることを指す。右割り当てとは、記憶待ちデータを特定の候補ストレージスペースの特定のアドレスから終了アドレスまでに記憶することを指し、すなわち、当該記憶待ちデータに対して当該ストレージスペースの終了アドレスおよび当該終了アドレスの前の連続した複数のアドレスを割り当てることを指す。特定の候補ストレージスペースの大きさが記憶待ちデータを記憶するために必要なストレージスペースの大きさよりも大きいと、当該候補ストレージスペースは2つの割り当て方法(すなわち左割り当ておよび右割り当て)があり、特定の候補ストレージスペースの大きさが記憶待ちデータを記憶するために必要なストレージスペースの大きさと等しいと、当該候補ストレージスペースは1つの割り当て方法(すなわち左割り当てと右割り当てが同じである)のみがある。例を挙げて説明すると、10個の候補ストレージスペースの大きさが記憶待ちデータを記憶するために必要なストレージスペースの大きさよりも大きいと、データ処理装置は20回の目標重み計算を実行し、すなわち、各候補ストレージスペースに対して左割り当て方式に対応する目標重みおよび右割り当て方式に対応する目標重みを計算する。
【0036】
当該実施形態において、第1候補ストレージソリューションまたは第2候補ストレージソリューションを採用して記憶待ちデータを記憶した後に、当該記憶待ちデータが占めるストレージスペースがリリースされた後に、隣接するストレージスペースと1つのより大きいストレージスペースに合併されることができ、メモリの断片化を減らすことができる。
【0037】
図2は、本発明の実施例によって提供される候補ストレージソリューションの目標重みを計算する過程を示す模式図である。図2に示すように、211-216に示す黒の長方形の領域は、目標メモリ中のすでに割り当てたストレージスペース(すなわちused_item)を表し、201-205に示す白の長方形の領域は、当該目標メモリ中の割り当てなかったストレージスペース(すなわちfree_item)を表す。ストレージスペース201、ストレージスペース203、ストレージスペース205がいずれも記憶待ちデータを記憶することができ、ストレージスペース201およびストレージスペース203の大きさが記憶待ちデータを記憶するために必要なストレージスペースの大きさよりも大きいし、ストレージスペース205の大きさが記憶待ちデータを記憶するために必要なストレージスペースの大きさと等しいと仮定する。図2に示すように、重み計算において、図面中の黒の長方形の領域はストレージスペースが占有された部分を表し、白の長方形の領域はストレージスペースが占有されなかった部分を表し、長方形の領域の上端は対応するストレージスペースの開始アドレスを表し、長方形の領域の下端は対応するストレージスペースの終了アドレスを表す。1回目の目標重み計算において、記憶待ちデータをストレージスペース201の開始アドレスから特定のアドレス(左割り当て)に記憶するときの目標重みを計算する。2回目の目標重み計算において、記憶待ちデータをストレージスペース201の特定のアドレスから終了アドレス(すなわち右割り当て)に記憶するときの目標重みを計算する。3回目の目標重み計算において、記憶待ちデータをストレージスペース203の開始アドレスから特定のアドレス(左割り当て)に記憶するときの目標重みを計算する。4回目の目標重み計算において、記憶待ちデータをストレージスペース203の特定のアドレスから終了アドレス(右割り当て)に記憶するときの目標重みを計算する。5回目の目標重み計算において、記憶待ちデータをストレージスペース205の開始アドレスから終了アドレス(すなわち左割り当てと右割り当てが同じである)に記憶するときの目標重みを計算し、以下も同様である。
【0038】
いくつかの実施例において、データ処理装置は、N回目の目標重み計算において、前記記憶待ちデータを特定の候補ストレージスペースに記憶するときの目標重みを計算し、当該目標重みを第1目標重みに設定してから、さらに、現在の最大の目標重みが前記第1目標重み未満である場合、前記現在の最大の目標重みを前記第1目標重みに更新することができる。オプションとして、データ処理装置は、1回目の目標重み計算を実行して1つの目標重みを得た後に、当該目標重みを現在の最大の目標重みとして保存し、i回目の目標重み計算によって得られた目標重みと保存した現在の最大の目標重みとを比較し、新たに計算して得た目標重みが現在の最大の目標重みよりも大きいと、現在の最大の目標重みを新たに計算して得た目標重みに更新し、そうではない場合は、現在の最大の目標重みをそのまま維持し、ここでiは1よりおおきい正の整数である。
【0039】
前述した実施例では、記憶待ちデータを少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定する実施形態を詳細に説明しなかった。以下、参考候補ストレージソリューションの目標重みを計算する例をとって、目標重みオプションを計算するいくつかの実施形態を紹介する。前記参考候補ストレージソリューションは、前記少なくとも2つの候補ストレージスペースの中の任意の候補ストレージソリューションである。
【0040】
オプションの1実施形態において、記憶待ちデータの第1データリリース時間と第2データリリース時間との間の時間間隔に基づいて、候補ストレージソリューションの目標重みを確定することができる。参考候補ストレージソリューションに対応する目標重みは、前記記憶待ちデータの第1データリリース時間と第2データリリース時間との間の時間間隔と、負の相関関係と有する。ここで、前記第2データリリース時間は、前記記憶待ちデータの前記参考候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間である。例示的に、参考候補ストレージソリューションに対応する目標重みは、前記記憶待ちデータの第1データリリース時間と第2データリリース時間との間の間隔の逆数である。例を挙げて説明すると、第1データリリース時間がt1であり、第2データリリース時間がt2であると、参考候補ストレージソリューションに対応する目標重みは、1/|t1-t2|である。
【0041】
図2の例をとると、ストレージスペース201の場合、隣接するストレージスペースは211または212である。1回目の重みを計算するときに、左割り当てであるため、ストレージスペース201の隣接するストレージスペースは211であり、2回目の重みを計算するときに、右割り当てであるため、ストレージスペース201の隣接するストレージスペースは212であり。ストレージスペース205の場合、隣接するストレージスペースは215であってもよいし、216であってもよい。
【0042】
オプションの1実施形態において、前記記憶待ちデータに対応する第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、前記記憶待ちデータのライフサイクルおよび前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、前記候補ストレージソリューションの目標重みを確定することを含む。オプションとして、前記目標ストレージソリューションの確定は、前記目標メモリに記憶されたデータのライフサイクルが記憶アドレスとともに増加または減少するようにする。データ処理装置を利用して本発明の実施例によって提供されるデータを記憶するための方法を実行すると、前記目標メモリに記憶されたデータのライフサイクルが記憶アドレスとともに増加または減少するようにすることができることを理解できる。つまり、ライフサイクルが小さな記憶待ちデータをできるだけストレージスペースの片側(左側記憶など)に記憶し、ライフサイクルが長い記憶待ちデータをできるだけストレージスペースのもう反対側(右側記憶など)に記憶する。いくつかの実施例において、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、前記記憶待ちデータに対応する最大ライフサイクルを確定することと、前記記憶待ちデータのライフサイクルと前記最大ライフサイクルとの間の第1比率値を確定することと、前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスと前記目標メモリの終了アドレスとの間の第2比率値を確定し、第1比率値および第2比率値に基づいて、前記候補ストレージソリューションの目標重みを確定することと、を含む。例示的に、前記候補ストレージソリューションの目標重みは、前記第1比率値と前記第2比率値との間の差分の絶対値と負の相関関係を有する。記憶待ちデータに対応する最大ライフサイクルは、命令シーケンス中の各命令それぞれに対応するデータのライフサイクルの中の一番大きいライフサイクルであり得、すなわち、記憶待ちデータに関連するデータが目標メモリの最大の持続時間を占有する。例示的に、記憶待ちデータに対応する最大ライフサイクルは、今回の画像処理過程で発生されたすべての記憶する必要があるデータのライフサイクルの最大値であり、すでに割り当てたメモリおよび割り当てなかったメモリのすべてのデータのライフサイクルの最大値を含むが、本発明の実施例はこれに対して限定しない。
【0043】
いくつかの実施例において、候補ストレージスペースの開始アドレスは、目標メモリの開始アドレスに対する候補ストレージスペースの開始アドレスのオフセット値として表すことができ、目標メモリの終了アドレスは、目標メモリの開始アドレスに対する目標メモリの終了アドレスのオフセット値として表すことができる。
【0044】
オプションの1実施形態において、候補ストレージスペースの開始アドレスと目標メモリの合計ストレージスペースの大きさとの間の第2比率値を確定し、当該第2比率値を当該候補ストレージスペースに対応する少なくとも1つの候補ストレージソリューションの第2比率値として使用することができるが、本発明の実施例はこれに限定されない。
【0045】
オプションの1実施形態において、前記記憶待ちデータに対応する第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、前記記憶待ちデータに対応する第1データリリース時間、および、前記候補ストレージソリューションに対応する記憶位置に隣接するストレージスペースに記憶されたデータの第2データリリース時間に基づいて、前記候補ストレージソリューションの第1重みを確定することと、前記記憶待ちデータのライフサイクルおよび前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、前記候補ストレージソリューションの第2重みを確定することと、前記第1重みと前記第2重みの加重和に基づいて、前記候補ストレージソリューションの目標重みを得ることと、を含む。
【0046】
当該実施形態において、記憶待ちデータの第1データリリース時間およびライフサイクルを総合的に考慮することで、メモリの断片化を効果的に減らすことができる。
【0047】
オプションの1実施形態において、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することは、前記記憶待ちデータの第1データリリース時間、ライフサイクル、および、複数の候補ストレージソリューションの中の各候補ストレージソリューションに対応するストレージスペースの大きさに基づいて、前記複数の候補ストレージソリューションの目標重みを確定することを含む。ここで、候補ストレージソリューションに対応するストレージスペースの大きさは、当該候補ストレージソリューションに対応する候補ストレージスペースの大きさであり得る。
【0048】
いくつかの実施例において、前記候補ストレージソリューションに対応する目標重みは、第1指標と第2指標と第3指標との加重和を含む。ここで、前記第1指標は、前記記憶待ちデータの第1データリリース時間と第2データリリース時間との間の間隔に基づいて確定され、前記第2データリリース時間は、前記記憶待ちデータの前記候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間であり、前記第2指標は、第1比率値と第2比率値との間の差値に基づいて確定される。前記第1比率値は、前記記憶待ちデータ最大ライフサイクルと前記記憶待ちデータに対応する最大ライフサイクルとの間の比率値であり、前記第2比率値は、前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスと前記目標メモリの終了アドレスとの間の比率値であり、前記第3指標は、前記候補ストレージソリューションに対応するストレージスペースと前記目標メモリの合計ストレージスペースとの間の比率値に基づいて確定される。
【0049】
当該実施形態において、記憶待ちデータの第1データリリース時間、ライフサイクル、および、必要なストレージスペースの大きさを総合的に考慮することで、確定された目標ストレージソリューションがメモリの断片化をより効果的に減らすようにすることができ、占めるストレージスペースを減少することができる。
【0050】
オプションとして、前記候補ストレージソリューションに対応する目標重みは、以下の式(1)を満たす。

weight=α*w1+β*w2+γ*w3 (1)

ここで、α、β、γは、いずれも、0以上の目標重み係数であり、かつ、α+β+γ=1であり、weightは、前記候補ストレージソリューションに対応する目標重みを表し、w1は、第1指標を表し、w2は、第2指標を表し、w3は、第3指標を表す。オプションとして、cost1=abs(e-e1)であり、w1=1/cost1であり、eは、前記第1データリリース時間を表し、e1は、前記第2データリリース時間を表し、abs(e-e1)は、eとe1の差値の絶対値を表す。オプションとして、cost2=abs((c/c_max)-(start/mem_size))であり、w2=1-cost2であり、cは、前記加重和を表し、c_maxは、前記記憶待ちデータに対応する最大ライフサイクルを表し、startは、前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスを表し、mem_sizeは、目標メモリの合計ストレージスペースの大きさを表し、目標メモリの終了アドレスとして表すことができる。オプションとして、w3=1-s_cand/mem_sizeであり、s_candは、候補ストレージソリューションに対応する候補ストレージスペースの大きさを表し、mem_sizeは、前記目標メモリの合計ストレージスペースの大きさを表す。
【0051】
当該実施形態において、目標重み係数α、β、及びγは、テストを通じて得られた結果である。特定のステップでα、β、及びγの値を変更し、α+β+γ=1であることを確保して、複数組の異なるパラメータの組み合わせのセットを取得し、1組のテストセットを運行し、各組パラメータの組み合わせのセットの当該テストセットでの結果に保存する。したがって、最終的に1組の性能の優れたパラメータの組み合わせのセットを選択する。
【0052】
当該実施形態において、候補ストレージソリューションの目標重みを計算する方法は、3つの割り当て原則の総合的な結果である。w1は、第1の割り当て原則に対応し、当該原則は、できるだけend_pcに近い位置を割り当てて、隣接するストレージスペースのリリース時間が近くなるようにして、大きな空きストレージスペースに合併して、メモリの断片化を減らす。各データは、1つのend_pcに対応し、各データに対応するend_pcは、当該データが占めるストレージスペースがリリースされる時点を表す。できるだけend_pcに近い位置を割り当てると、記憶待ちデータを、できるだけ対応するend_pcと当該記憶待ちデータに対応するend_pcにより近いデータに隣接する位置に割り当てることができる。例を挙げて説明すると、目標メモリの特定のストレージスペースに記憶したデータに対応するend_pcが、当該記憶待ちデータに対応するend_pcとより近いと、当該記憶待ちデータを当該ストレージスペースに隣接する空間ストレージスペースに割り当てる。w2は、第2の割り当て原則に対応し、当該原則は、ライフサイクルが短いデータ(割り当てとリリースが頻繁である)とライフサイクルが長いデータとを分けて割り当て、割り当てとリリースが頻繁なデータの位置をできるだけ近くすることによって、メモリの断片化を減らす。w3は、第3の割り当て原則に対応し、当該原則は、要件を満たす最小の空きストレージスペースを記憶待ちデータに割り当てることである。当該実施形態において、様々な割り当て原則を組み合わせて割り当て待ちデータにアドレスを割り当てることによって、メモリの断片化を効果的に減らすことができる。
【0053】
データ処理装置は、この3つの割り当て原則の中の任意の2つを組み合わせて目標重みを計算してもよいし、第1の原則または第2の原則を採用しえ目標重みを計算してもよいことを理解すべきである。例を挙げて説明すると、前記候補ストレージソリューションに対応する目標重みは、以下の式(2)を満たす。

weight=α*w1+β*w2 (2)

ここで、式(2)中のw1、w2は、それぞれ式(1)中のw1、w2と同じであり、α、βは、いずれも、0より大きい重み係数であり、かつ、α+β=1である。
【0054】
さらに、例を挙げて説明すると、前記候補ストレージソリューションに対応する目標重みは、以下の式(3)を満たす。

weight=α*w1+γ*w3 (3)

ここで、式(3)中のw1、w3は、それぞれ式(1)中のw1、w3と同じであり、α、γは、いずれも、0より大きい重み係数であり、かつ、α+γ=1である。
【0055】
さらに、例を挙げて説明すると、前記候補ストレージソリューションに対応する目標重みは、以下の式(4)を満たす。
weight=β*w2+γ*w3 (4)
ここで、式(4)中のw2、w3は、それぞれ式(1)中のw2、w3と同じであり、β、γは、いずれも、0より大きい目標重み係数であり、かつ、β+=1である。
【0056】
さらに、例を挙げて説明すると、前記候補ストレージソリューションに対応する目標重みは、以下の式(5)を満たす。

weight=w2=1-cost2 (5)
【0057】
さらに、例を挙げて説明すると、前記候補ストレージソリューションに対応する目標重みは、以下の式(6)を満たす。

weight=w1=1/cost1 (6)
【0058】
当該実施形態において、様々な割り当て原則を組み合わせて割り当て待ちデータにアドレスを割り当てることで、メモリの断片化を効果的に減らすことができる。
【0059】
図3は、本発明の実施例によって提供されるデータを記憶するためのもう1方法を示すフローチャートである。図3に示すように、当該方法は、以下のステップを含み得る。
【0060】
301において、データ処理装置により、目標メモリの割り当てなかった複数の個別のストレージスペースから、記憶待ちデータを記憶できる2つまたは2つ以上の候補ストレージスペースを確定する。
【0061】
302において、N回目の目標重みを計算するときに、記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、記憶待ちデータを第1候補ストレージスペースに記憶する第1目標重みを計算する。
【0062】
オプションとして、前記第1候補ストレージスペースは、前記2つまたは2つ以上の候補ストレージスペースの中の任意の候補ストレージスペースである。記憶待ちデータを第1候補ストレージスペースに記憶する第1目標重みを計算するときに、式(1)~式(6)の中の任意の1つを採用して目標重みを計算することができる。データ処理装置は、記憶待ちデータを第1候補ストレージスペースに記憶すると仮定するときの目標重みを計算するだけであり、記憶待ちデータを第1候補ストレージスペースに記憶する操作を実行しないことを理解できる。前記Nは、0より大きい整数である。実際の適用において、データ処理装置は、各候補ストレージスペースに記憶待ちデータを記憶するとき対応する1つの目標重みまたは2つの目標重みを計算し、各回の目標重み計算は1つの目標重みを計算することができる。
【0063】
303において、現在の最大の目標重みを更新する。
【0064】
いくつかの実施例において、N=1のときに、現在の最大の目標重みの更新は、1回目に計算して得られた目標重みを現在の最大の目標重みとして格納する。N>1のときに、現在の最大の目標重みの更新は、N回目に計算して得られた目標重みが現在格納している現在の最大の目標重みよりも大きい場合、現在の最大の目標重みをN回目に計算して得られた目標重みに更新する。N回目に計算して得られた目標重みが現在格納している現在の最大の目標重み未満である場合、現在の最大の目標重みをそのまま維持する。
【0065】
304において、次回の目標重みの計算を停止するか否かを判断する。
【0066】
いくつかの実施例において、次回の目標重みの計算を停止するか否かを判断することは、現在複数の候補ストレージソリューションの目標重みを計算して得た場合、次回の目標重みの計算を停止すると判断し、現在複数の候補ストレージソリューションの目標重みを計算して得られなかった場合、次回の目標重みの計算を続くと判断する。次回の目標重み計算を停止しないと、N+1として、ステップ302を実行し、次回の目標重み計算を停止すると、ステップ305を実行する。
【0067】
305において、現在の最大の目標重みに対応する候補ストレージソリューションを目標ストレージソリューションに設定して、記憶待ちデータを目標ストレージソリューションに対応する候補ストレージスペースの第1アドレスから第2アドレスに記憶する。
【0068】
306において、前記第1アドレスから前記第2アドレスに対応するストレージスペースをすでに割り当てたストレージスペースに設定する。
【0069】
307において、第1データリリース時間に達した後、前記第1アドレスから前記第2アドレスをリリースする。
【0070】
いくつかの実施例において、前記第1アドレスから前記第2アドレスに対応するストレージスペースを割り当てなかったストレージスペースに設定することができる。
【0071】
308において、第2アドレスが候補ストレージスペースの終了アドレスであると、前記第2アドレスの次のアドレスから第3アドレス(第3アドレスは第2アドレスの右側に位置する)にいずれもデータを記憶しなかった場合、前記第1アドレスから前記第3アドレスを割り当てなかった個別のストレージスペースに設定する。ここで、第3アドレスの次のアドレスを開始アドレスとするストレージスペースは、すでに割り当てたストレージスペース(used_item)である。
【0072】
ステップ308を以下に切り替えてもよく、すなわち、第1アドレスが候補ストレージスペースの開始アドレスであると、前記目標メモリの第4アドレス(第4アドレスは第1アドレスの左側に位置する)から前記第1アドレスの前のアドレスにいずれもデータを記憶しなかった場合、前記第4アドレスから前記第2アドレスまでを割り当てなかった個別のストレージスペースに設定する。ここで、第4アドレスの前のアドレスを終了アドレスとするストレージスペースは、すでに割り当てたストレージスペース(used_item)である。
【0073】
このようにすると、2つの隣接する割り当てなかったストレージスペースをより大きい1つの割り当てなかったストレージスペースにすばやく設定することができる。
【0074】
本発明の実施例によって提供される方法によると、メモリの断片化を効果的に減らすことができる。
【0075】
前述した実施例に説明したデータを記憶するための方法は、データ処理装置によりAIチップを利用してデータ処理タスクを実行するシーンに適用することができ、すなわち、共有キャッシュのアドレス割り当ておよびリリースのリアルタイムな管理に適用することができ、AIモデルのコンパイルのシナリオに適用することもできる。AIモデルのコンパイルのシナリオでは、データ処理装置は、本発明の実施例によって提供されるデータを記憶するための方法を実行することによって、AIモデルが処理と操作を実行するときの共有キャッシュの割り当てをシミュレートすることができ、さらに、AIモデルをコンパイルして共有キャッシュのメモリ割り当ておよびリリースを指示する命令シーケンスを得ることができる。データ処理装置のAIチップは、命令シーケンスを実行することによってデータ処理タスクを実行することができる。AIチップは、命令シーケンスを実行してデータ処理タスクを実行する過程で、命令シーケンス中の命令に従ってデータを共有キャッシュに記憶し、また共有キャッシュ中のデータをリリースして、共有キャッシュの利用率を向上させることができる。
【0076】
図4は、本発明の実施例によって提供されるデータ処理装置の構成の模式図であり、図4に示すように、当該装置は、第1確定ユニット401と、第2確定ユニット402と、第3確定ユニット403と、備える。
【0077】
第1確定ユニット401は、記憶待ちデータに必要なストレージスペースの大きさに基づいて目標メモリ中の少なくとも2つの候補ストレージスペースを確定する。
【0078】
第2確定ユニット402は、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定し、ここで、各候補ストレージスペースは、少なくとも1つの候補ストレージソリューションに対応する。
【0079】
第3確定ユニット403は、前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定する。
【0080】
オプションの1実施形態において、前記候補ストレージスペースに対応する候補ストレージソリューションは、第1候補ストレージソリューションおよび第2候補ストレージソリューションの中の少なくとも1つを含み、ここで、前記第1候補ストレージソリューション中の開始記憶アドレスは、前記候補ストレージスペースの開始アドレスであり、前記第2候補ストレージソリューション中の終了記憶アドレスは、前記候補ストレージスペースの終了アドレスである。
【0081】
オプションの1実施形態において、第2確定ユニット401は、さらに、複数の候補ストレージソリューションに対して、前記記憶待ちデータの第1データリリース時間および第2データリリース時間に基づいて、当該候補ストレージソリューションの目標重みを確定し、ここで、前記第2データリリース時間は、前記記憶待ちデータの前記候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間である。
【0082】
オプションの1実施形態において、前記候補ストレージソリューションに対応する目標重みは、前記記憶待ちデータの第1データリリース時間と第2データリリース時間との間の間隔と、負の相関関係を有する。
【0083】
オプションの1実施形態において、第2確定ユニット402は、さらに、複数の候補ストレージソリューションに対して、前記記憶待ちデータのライフサイクルおよび前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、前記候補ストレージソリューションの目標重みを確定する。
【0084】
オプションの1実施形態において、第2確定ユニット402は、さらに、前記記憶待ちデータに対応する最大ライフサイクルを確定し、前記記憶待ちデータのライフサイクルと前記最大ライフサイクルとの間の第1比率値を確定し、前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスと前記目標メモリの終了アドレスとの間の第2比率値を確定し、第1比率値および第2比率値に基づいて、前記候補ストレージソリューションの目標重みを確定する。
【0085】
オプションの1実施形態において、前記候補ストレージソリューションの目標重みは、前記第1比率値と前記第2比率値との間の差分の絶対値と負の相関関係を有する。
【0086】
オプションの1実施形態において、第2確定ユニット402は、さらに、複数の候補ストレージソリューションに対して、前記記憶待ちデータに対応する第1データリリース時間および第2データリリース時間に基づいて、前記候補ストレージソリューションの第1重みを確定し、ここで、第2データリリース時間は、記憶待ちデータの当該候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間であり、前記記憶待ちデータのライフサイクルおよび前記候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、前記候補ストレージソリューションの第2重みを確定し、前記第1重みと前記第2重みの加重和に基づいて、前記候補ストレージソリューションの目標重みを得る。
【0087】
オプションの1実施形態において、第2確定ユニット402は、さらに、複数の候補ストレージソリューションに対して、前記記憶待ちデータの第1データリリース時間、ライフサイクル、および、当該候補ストレージソリューションに対応するストレージスペースの大きさに基づいて、当該候補ストレージソリューションの目標重みを確定する。
【0088】
オプションの1実施形態において、第2確定ユニット402は、さらに、前記記憶待ちデータに対応する第1データリリース時間および第2データリリース時間に基づいて、当該候補ストレージソリューションの第1重みを確定し、前記記憶待ちデータのライフサイクルおよび当該候補ストレージソリューションに対応する候補ストレージスペースの開始アドレスに基づいて、当該候補ストレージソリューションの第2重みを確定し、前記候補ストレージソリューションに対応する候補ストレージスペースの大きさおよび前記目標メモリの合計ストレージスペースの大きさに基づいて、当該候補ストレージソリューションの第3重みを確定し、前記第1重みと前記第2重みと前記第3重みの加重和に基づいて、当該候補ストレージソリューションの前記目標重みを得、ここで、前記第2データリリース時間は、前記記憶待ちデータの当該候補ストレージソリューションにおける記憶位置に隣接するストレージスペースに記憶されたデータのデータリリース時間である。
【0089】
オプションの1実施形態において、第2確定ユニット402は、さらに、複数の候補ストレージソリューションに対して、前記記憶待ちデータの第1データリリース時間および当該候補ストレージソリューションに対応するストレージスペースの大きさに基づいて、当該候補ストレージソリューションの目標重みを確定する。
【0090】
オプションの1実施形態において、第2確定ユニット402は、さらに、複数の候補ストレージソリューションに対して、前記記憶待ちデータのライフサイクルおよび当該候補ストレージソリューションに対応するストレージスペースの大きさに基づいて、当該候補ストレージソリューションの目標重みを確定する。
【0091】
オプションの1実施形態において、前記装置は、前記記憶待ちデータを前記目標ストレージソリューションに対応する候補ストレージスペースの第1アドレスから第2アドレスに記憶し、前記第1アドレスから前記第2アドレスに対応するストレージスペースをすでに割り当てたストレージスペースに設定するための設定ユニット404をさらに備え、ここで、前記第1アドレスおよび前記第2アドレスの中の1つは、前記目標ストレージソリューションに対応する候補ストレージスペースの開始アドレスであり、または、前記第1アドレスおよび前記第2アドレスの中の1つは、前記目標ストレージソリューションに対応する候補ストレージスペースの終了アドレスである。
【0092】
オプションの1実施形態において、前記装置は、前記記憶待ちデータに対応する第1データリリース時間に達した後に、前記第1アドレスから前記第2アドレスに対応するストレージスペースをリリースするためのリリースユニット405をさらに備え、設定ユニット404は、さらに、前記第1アドレスから前記第2アドレスに対応するストレージスペースを割り当てなかったストレージスペースに設定する。
【0093】
オプションの1実施形態において、第3確定ユニット403は、さらに、前記複数の候補ストレージソリューションのそれぞれの目標重みのうちで、一番大きい目標重みに対応する候補ストレージソリューションを前記記憶待ちデータの前記目標ストレージソリューションに確定し、または、前記複数の候補ストレージソリューションのそれぞれの目標重みのうちで、所定の重み閾値を超える任意の目標重みに対応する候補ストレージソリューションを前記目標ストレージソリューションに確定することを含む。
【0094】
オプションの1実施形態において、前記目標メモリは、人工知能(AI)チップの共有キャッシュである。
【0095】
オプションの1実施形態において、第1確定ユニット401は、さらに、前記目標メモリの割り当てなかった複数の個別のストレージスペースから、前記記憶待ちデータを記憶できる前記少なくとも2つの候補ストレージスペースを確定し、ここで、前記候補ストレージスペースの大きさは、記憶待ちデータが占めるストレージスペース以上である。
【0096】
オプションの1実施形態において、設定ユニット404は、さらに、第2アドレスが候補ストレージスペースの終了アドレスであり、前記第2アドレスの次のアドレスから第3アドレスにいずれもデータを記憶しなかった場合、前記第1アドレスから前記第3アドレスを割り当てなかった個別のストレージスペースに設定する。ここで、第3アドレスの次のアドレスを開始アドレスとするストレージスペースは、すでに割り当てたストレージスペースである。
【0097】
オプションの1実施形態において、設定ユニット404は、さらに、第1アドレスが候補ストレージスペースの開始アドレスであり、前記目標メモリの第4アドレスから前記第1アドレスの前のアドレスにいずれもデータを記憶しなかった場合、前記第4アドレスから前記第2アドレスを割り当てなかった個別のストレージスペースに設定する。ここで、第4アドレスの前のアドレスを終了アドレスとするストレージスペースは、すでに割り当てたストレージスペースである。
【0098】
図5は、本発明の実施例によって提供されるデータ処理装置の構成を示す模式図である。図5に示すように、データ処理装置は、AIチップ510とメモリ520とを備え、AIチップ510は、メモリ520からデータおよび命令を取得し、最終の処理結果をメモリ520に出力することができる。AIチップ510中の計算ユニット501は、処理タスクを実行し、計算ユニット501は、データを処理する過程でデータを共有キャッシュ502(すなわち目標メモリ)に記憶し、また、当該共有キャッシュ502からデータを取得する。共有キャッシュ502のアドレス割り当ておよびリリースは、前述した実施例のデータを記憶するための方法を採用することができる。いくつかの実施例において、メモリ520は、AIチップ510の内部に位置する可能性がある。いくつかの実施例において、AIチップが特定のデータ処理タスクを実行するときに、データ処理装置で運行される特定のメモリ管理ソフトウェアは、前述した実施例のデータを記憶するための方法を実行することによって、共有キャッシュのアドレス割り当ておよびリリースを管理する。いくつかの実施例において、AIチップが特定のデータ処理タスクを実行するときに、メモリから読み取った命令を実行してデータ処理タスクを実装し、データ処理タスクを実装する過程でメモリから読み取った命令は、共有キャッシュのアドレス割り当ておよびリリースを指示する。つまり、AIチップは、メモリから読み取った命令を実行して、前述した実施例のメモリ割り当ておよびリリースの流れを実装することができる。
【0099】
図6は、本発明の実施例によって提供される電子デバイスの構成の模式図であり、当該電子デバイス600は、異なる構成または性能のために、比較的大きな差異を有し得る。当該電子デバイス600は、1つまたは複数の中央処理装置(central processing units、CPU)622(たとえば、1つまたは複数のプロセッサ)と、メモリ632と、アプリケーションプログラム642またはデータ644を格納するための1つまたは複数の記録媒体630(たとえば1つまたは複数の大容量記憶デバイス)と、1つまたは複数のAIチップ624と、を含み得る。ここで、メモリ632および記録媒体630は、短期記憶または永続記憶であり得る。記録媒体630に格納されたプログラムは、1つまたは複数のモジュール(図面には示されていない)を含み得、各モジュールは、電子デバイスに対する一連の命令操作を含み得る。さらに、中央処理装置622は、記録媒体630と通信して、電子デバイス600上で記録媒体630中の一連の命令操作を実行する。AIチップ624は、CPU622によって割り当てられた様々なデータ処理タスクを実行することができる。電子デバイス600は、本発明によって提供されるデータ処理装置であり得る。
【0100】
電子デバイス600は、1つまたは複数の電源626、1つまたは複数の有線または無線ネットワークインターフェース650、1つまたは複数の入出力インターフェース658、および/または、Windows ServerTM、Mac OS XTM、UnixTM、 LinuxTM、FreeBSDTMなどの1つまたは複数の操作システム641をさらに含み得る。
【0101】
前記実施例中のデータ処理装置によって実行されるステップは、当該図6に示す電子デバイスによって構成され得る。具体的に、中央処理装置622は、図4中の各ユニットの機能を実現することができる。
【0102】
本発明の実施例は、コンピュータープログラムが記憶されているコンピューター可読記録媒体を提供し、前記コンピュータープログラムは、プログラム命令を含み、前記コンピュータープログラムがプロセッサによって実行されるときに、記憶待ちデータに必要なストレージスペースの大きさに基づいて目標メモリ中の少なくとも2つの候補ストレージスペースを確定することと、前記記憶待ちデータの第1データリリース時間およびライフサイクルの中の少なくとも1つに基づいて、前記記憶待ちデータを前記少なくとも2つの候補ストレージスペースに記憶する複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みを確定することと、前記複数の候補ストレージソリューションの中の各候補ストレージソリューションの目標重みに基づいて、前記記憶待ちデータの目標ストレージソリューションを確定することと、が実装され、ここで、各候補ストレージスペースは、少なくとも1つの候補ストレージソリューションに対応する。当該コンピューター可読記録媒体は、不揮発性の記録媒体であり得る。
【0103】
本発明の実施例は、命令を含むコンピュータープログラム製品を提供し、当該製品がコンピューター上で運行されるときに、コンピューターが前記実施例によって提供されるデータを記憶するための方法が実装される。
【0104】
上記は、本発明の具体的な実施形態に過ぎず、本発明の保護範囲はこれに限定されない。当業者は、本発明に開示されている技術範囲内の様々な同等の変更または置換を容易に考えることができる。これら変更または置換は、本発明の保護範囲内にカバーされるものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
図1
図2
図3
図4
図5
図6