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

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

▶ ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッドの特許一覧 ▶ クンルンシン テクノロジー (ベイジン) カンパニー リミテッドの特許一覧

特許7142665ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム
<>
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図1
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図2
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図3
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図4
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図5
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図6
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図7
  • 特許-ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-15
(45)【発行日】2022-09-27
(54)【発明の名称】ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラム
(51)【国際特許分類】
   G06F 12/06 20060101AFI20220916BHJP
   G06F 13/16 20060101ALI20220916BHJP
【FI】
G06F12/06 525A
G06F13/16 520B
G06F13/16 510D
【請求項の数】 11
(21)【出願番号】P 2020117658
(22)【出願日】2020-07-08
(65)【公開番号】P2021026769
(43)【公開日】2021-02-22
【審査請求日】2020-07-08
(31)【優先権主張番号】201910702452.7
(32)【優先日】2019-07-31
(33)【優先権主張国・地域又は機関】CN
【前置審査】
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】100118913
【弁理士】
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【弁理士】
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100201466
【弁理士】
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】レン, シャンラン
(72)【発明者】
【氏名】ワン, ヨン
(72)【発明者】
【氏名】キ, ウェイ
(72)【発明者】
【氏名】キウ, チェンゼ
(72)【発明者】
【氏名】ヤン, ヤン
【審査官】北村 学
(56)【参考文献】
【文献】特開平06-161884(JP,A)
【文献】特表2016-532926(JP,A)
【文献】国際公開第2018/188618(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/06
G06F 13/16 - 13/18
(57)【特許請求の範囲】
【請求項1】
利用可能なチャネルモード決定モジュールと、チャネルデータ粒度決定モジュールと、ターゲットアドレス取得モジュールと、決定モジュールと、を有する装置によって実行される、ストレージ管理のための方法であって、
前記ストレージ管理のための方法は、
前記利用可能なチャネルモード決定モジュールが、データ処理システムのメモリの複数のチャネルについての利用可能なチャネルモードを決定するステップであって、前記利用可能なチャネルモードは、前記複数のチャネルの利用可能性を示し、前記複数のチャネル内の各チャネルは、前記メモリ内の1グループのアドレスに関連付けられるステップと、
前記チャネルデータ粒度決定モジュールが、各チャネルの伝送可能なデータブロックのサイズを示すチャネルデータ粒度を決定するステップと、
前記ターゲットアドレス取得モジュールが、伝送対象データの前記メモリにおけるターゲットアドレスを取得するステップと、
前記決定モジュールが、前記利用可能なチャネルモードと前記チャネルデータ粒度に基づいて、前記ターゲットアドレスに対応する変換アドレスを決定するステップと、を含み、
前記利用可能なチャネルモード決定モジュールが、利用可能なチャネルモードを決定するステップは、
利用不可能なチャネル情報取得モジュールが、前記複数のチャネル内の利用不可能なチャネルに関する情報を取得するステップと、
利用可能なチャネルモード決定モジュールが、前記利用不可能なチャネルに関する情報に基づいて、前記利用可能なチャネルモードを決定するステップと、
を含むことを特徴とする、ストレージ管理のための方法。
【請求項2】
前記決定モジュールが、変換アドレスを決定するステップは、
アドレス分割モジュールが、前記チャネルデータ粒度に基づいて、前記ターゲットアドレスを、前記伝送対象データに関連付けられたデータブロック集合内の一つのデータブロックに対応する上位部分と、前記一つのデータブロックの一部に対応する下位部分に分割するステップと、
利用可能なチャネル数決定モジュールが、前記利用可能なチャネルモードに基づいて、利用可能なチャネル数を決定するステップと、
利用可能なチャネル決定モジュールが、前記上位部分と前記利用可能なチャネル数に基づいて、前記複数のチャネルから伝送対象データブロックを伝送するための利用可能なチャネルを決定するステップと、
チャネル内アドレス決定モジュールが、前記上位部分と前記利用可能なチャネル数に基づいて、前記伝送対象データブロックの前記利用可能なチャネルにおけるチャネル内アドレスを決定するステップと、
生成モジュールが、前記利用可能なチャネルと、前記チャネル内アドレスと、前記下位部分に基づいて、前記変換アドレスを生成するステップと、を含むことを特徴とする、請求項1に記載の方法。
【請求項3】
前記利用可能なチャネル決定モジュールが、利用可能なチャネルを決定するステップは、
モジュロ演算モジュールが、前記上位部分と前記利用可能なチャネル数に対してモジュロ演算を行って、前記利用可能なチャネルを決定するステップを含むことを特徴とする、請求項に記載の方法。
【請求項4】
前記チャネル内アドレス決定モジュールが、チャネル内アドレスを決定するステップは、
商演算モジュールが、前記上位部分と前記利用可能なチャネル数に対して商演算を行って、前記チャネル内アドレスを決定するステップを含むことを特徴とする、請求項に記載の方法。
【請求項5】
データ処理システムのメモリの複数のチャネルについての利用可能なチャネルモードを決定するように構成される利用可能なチャネルモード決定モジュールであって、前記利用可能なチャネルモードは、前記複数のチャネルの利用可能性を示し、前記複数のチャネル内の各チャネルは、前記メモリ内の1グループのアドレスに関連付けられる利用可能なチャネルモード決定モジュールと、
各チャネルの伝送可能なデータブロックのサイズを示すチャネルデータ粒度を決定するように構成されるチャネルデータ粒度決定モジュールと、
伝送対象データの前記メモリにおけるターゲットアドレスを取得するように構成されるターゲットアドレス取得モジュールと、
前記利用可能なチャネルモードに基づいて、前記ターゲットアドレスに対応する変換アドレスを決定するように構成される決定モジュールと、を含み、
前記利用可能なチャネルモード決定モジュールが、
前記複数のチャネル内の利用不可能なチャネルに関する情報を取得するように構成される利用不可能なチャネル情報取得モジュールと、
前記利用不可能なチャネルに関する情報に基づいて、前記利用可能なチャネルモードを決定するように構成される利用可能なチャネルモード決定モジュールと、
を含むことを特徴とする、ストレージ管理のための装置。
【請求項6】
前記決定モジュールは、
前記チャネルデータ粒度に基づいて、前記ターゲットアドレスを、前記伝送対象データに関連付けられたデータブロック集合内の一つのデータブロックに対応する上位部分と、前記一つのデータブロックの一部に対応する下位部分に分割するように構成されるアドレス分割モジュールと、
前記利用可能なチャネルモードに基づいて、利用可能なチャネル数を決定するように構成される利用可能なチャネル数決定モジュールと、
前記上位部分と前記利用可能なチャネル数に基づいて、前記複数のチャネルから伝送対象データブロックを伝送するための利用可能なチャネルを決定するように構成される利用可能なチャネル決定モジュールと、
前記上位部分と前記利用可能なチャネル数に基づいて、前記伝送対象データブロックの前記利用可能なチャネルにおけるチャネル内アドレスを決定するように構成されるチャネル内アドレス決定モジュールと、
前記利用可能なチャネルと、前記チャネル内アドレスと、前記下位部分に基づいて、前記変換アドレスを生成するように構成される生成モジュールと、を含むことを特徴とする、請求項に記載の装置。
【請求項7】
前記利用可能なチャネル決定モジュールは、
前記上位部分と前記利用可能なチャネル数に対してモジュロ演算を行って、前記利用可能なチャネルを決定するように構成されるモジュロ演算モジュールを含むことを特徴とする、請求項に記載の装置。
【請求項8】
前記チャネル内アドレス決定モジュールは、
前記上位部分と前記利用可能なチャネル数に対して商演算を行って、前記チャネル内アドレスを決定するように構成される商演算モジュールを含むことを特徴とする、請求項に記載の装置。
【請求項9】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置と、を含む電子機器であって、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサによって実行される場合、前記一つ又は複数のプロセッサが、請求項1からのいずれかに記載の方法を実現することを特徴とする、電子機器。
【請求項10】
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
前記プログラムがプロセッサによって実行される場合、請求項1からのいずれかに記載の方法が実現されることを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項11】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサによって実行される場合、請求項1からのいずれかに記載の方法が実現されることを特徴とする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施例は、主にストレージの分野に関し、より詳細には、ストレージ管理のための方法、装置、機器、コンピュータ読み取り可能な記憶媒体及びコンピュータプログラムに関する。
【背景技術】
【0002】
現在、データ処理システム(例えば、チップ)の使用が日増しに普及されてきている。しかしながら、データ処理システムの製造プロセスのサイズがますます小さくなるにつれ、データ処理システムの歩留まりが急速に低下する。例えば、7nm製造プロセスのデータ処理システムの歩留まりは、通常60~70%である。また、人工知能(AI)技術の発達に伴い、データ処理システム(例えば、グラフィックス処理ユニット(GPU)又はAIチップ)の処理能力が絶えず向上している。これにより、データ処理システムの規模が大きくなるだけでなく、データ処理システムに関連付けられたメモリへのアクセスの帯域幅の要件もますます高くなっている。例えば、現在のAIチップの面積は、通常500mmであり、さらに800mmに達することもある。しかしながら、データ処理システムの面積が大きいほど、歩留まりが低い。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示の例示的な実施例によれば、ストレージ管理のための技術案が提供される。
【課題を解決するための手段】
【0004】
本開示の第1の態様は、データ処理システムのメモリの複数のチャネルについての利用可能なチャネルモードを決定するステップであって、利用可能なチャネルモードは、複数のチャネルの利用可能性を示し、複数のチャネル内の各チャネルは、メモリ内の1グループのアドレスに関連付けられるステップと、各チャネルの伝送可能なデータブロックのサイズを示すチャネルデータ粒度を決定するステップと、伝送対象データのメモリにおけるターゲットアドレスを取得するステップと、利用可能なチャネルモードに基づいて、ターゲットアドレスに対応する変換アドレスを決定するステップと、を含むストレージ管理のための方法が提供される。
【0005】
本開示の第2の態様では、データ処理システムのメモリの複数のチャネルについての利用可能なチャネルモードを決定するように構成される利用可能なチャネルモード決定モジュールであって、利用可能なチャネルモードは、複数のチャネルの利用可能性を示し、複数のチャネル内の各チャネルは、メモリ内の1グループのアドレスに関連付けられる利用可能なチャネルモード決定モジュールと、各チャネルの伝送可能なデータブロックのサイズを示すチャネルデータ粒度を決定するように構成されるチャネルデータ粒度決定モジュールと、伝送対象データのメモリにおけるターゲットアドレスを取得するように構成されるターゲットアドレス取得モジュールと、利用可能なチャネルモードに基づいて、ターゲットアドレスに対応する変換アドレスを決定するように構成される決定モジュールと、を含むストレージ管理のための装置が提供される。
【0006】
本開示の第3の態様では、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置とを含む電子機器であって、一つ又は複数のプログラムが一つ又は複数のプロセッサによって実行される場合、一つ又は複数のプロセッサが本開示の第1の態様に係る方法を実現する電子機器が提供される。
【0007】
本開示の第4の態様では、コンピュータプログラムが記憶されているコンピュータ読み取り可能な媒体であって、当該プログラムがプロセッサによって実行される場合、本開示の第1の態様に係る方法が実現されるコンピュータ読み取り可能な媒体が提供される。
【0008】
本開示の第5の態様では、コンピュータプログラムであって、当該コンピュータプログラムがプロセッサによって実行される場合、本開示の第1の態様に係る方法が実現されるコンピュータプログラムが提供される。
【0009】
なお、発明の概要に説明された内容は、本開示の実施例の肝心で重要な特徴を限定することを意図しておらず、本開示の範囲を限定することも意図していない。本開示の他の特徴は、以下の説明により理解されやすくなる。
【図面の簡単な説明】
【0010】
本開示の各実施例の上記及び他の特徴、利点及び態様は、図面を参照した以下の詳細な説明により、より明らかになる。図面では、同一又は類似の符号は、同一又は類似の要素を表す。
図1】従来のメモリの概略図を示す。
図2】本開示の実施例に係るメモリの概略図を示す。
図3】本開示のいくつかの実施例に係るストレージ管理のための方法のフローチャートを示す。
図4】本開示のいくつかの実施例に係るストレージ管理のための別の方法のフローチャートを示す。
図5】本開示のいくつかの実施例に係る動的アドレスマッピングの概略図を示す。
図6】本開示のいくつかの実施例に係るチャネル内アドレスの概略図を示す。
図7】本開示のいくつかの実施例に係るストレージ管理のための装置の概略ブロック図を示す。
図8】本開示のいくつかの実施例を実施できるコンピューティングデバイスのブロック図を示す。
【発明を実施するための形態】
【0011】
本開示の実施例を、図面を参照して以下により詳細に説明する。図面には本開示のいくつかの実施例が示されているが、本発明は様々な形態で実現することができ、本明細書に記載の実施例に限定されると解釈されるべきではないことを理解されたい。逆に、これらの実施例を提供する目的は、本開示がより明確かつ完全に理解されることである。なお、本開示の図面及び実施例は例示に過ぎず、本開示の保護範囲を限定するものではないことを理解されたい。
【0012】
本開示の実施例の説明において、「含む」という用語及びその類似の用語は、開放的に含む、すなわち「含むがこれに限定されない」と理解される。「に基づく」という用語は、「少なくとも部分的に基づく」ことを意味すると理解される。「一実施例」または「当該実施例」という用語は、「少なくとも一実施例」を意味すると理解される。「第1」、「第2」などの用語は、異なる対象または同一対象を指すことができる。他の明示的及び暗黙的な定義も以下に含まれ得る。
【0013】
「データ処理システム」という用語は、中央処理装置(CPU)、GPU、又はAIチップなどのチップを指すことができる。しかしながら、データ処理システムは、これに限定されず、チャネルでデータを伝送する任意の機器であってもよい。
【0014】
上記のように、データ処理システムの処理能力は、絶えず向上しており、データ処理システムに関連するメモリへのアクセスのための帯域幅の要件も、ますます高くなっている。シングルチャネルのメモリは、いくつかのアプリケーション(AIアプリケーションなど)に必要な帯域幅を提供することができないため、データ処理システムは、マルチチャネルインタリーブ技術を採用してメモリの帯域幅を高くする。インタリーブされたチャネルの数が多いほど、帯域幅が高くなる。これは、メモリコントローラ(物理層を含む)の面積が大きくなることを意味する。約384GB/sの帯域幅を提供する8チャネルのグラフィックス用ダブルデータレート第6バージョンメモリ(GDDR6メモリ)を例とする。約300mmのAIチップについて、このようなGDDR6メモリは、AIチップの面積の約20%を占用する。
【0015】
従来、伝送対象データは、データを伝送するためのチャネルに静的にマッピングされる。このような静的マッピング方式を採用する場合に、製造プロセスに起因して一つ又は複数のチャネルが自動試験装置(ATE)のテストに合格できない場合(一つのチャネルのスキャンが失敗するなど)には、データ処理システムは、故障したと見なされて利用不可能になる。また、ATEテストに合格したデータ処理システムでも、使用中のいくつかのアプリケーション(AIアプリケーションなど)の高消費電力及び高温によるデータ処理システムの劣化の加速によって、一つ又は複数のチャネルが不安定になり、破損が生じる恐れがある。例えば、ビットコインを取得するためのコンピューティングデバイス上のGPUは、通常1年程で不安定になるので交換する必要があり、これは、データセンターサーバの平均使用寿命よりもはるかに短い。
【0016】
このような従来のメモリ100の構成について、図1を参照して説明する。上記のように、データ処理システムは、マルチチャネルインタリーブ技術を採用してメモリの帯域幅を高くすることができる。Nチャネルのメモリインタリーブの場合、メモリのネットワークオンチップ(NoC_Mem)は、入力インターフェースとメモリコントローラとを接続するために、例えば、M*Nのクロスバー(crossbar)を採用することができる。ここで、M及びNは正の整数である。
【0017】
図1に示すように、メモリ100は、M個の入力インターフェース110~110M-1(以下、「入力インターフェース110」と総称する)、メモリのネットワークオンチップ120、N個のメモリコントローラ130~130N-1(以下、「メモリコントローラ130」と総称する)、及びN個のメモリコントローラ130~130N-1にそれぞれ対応するN個のチャネル(チャネル0~チャネルN-1)を含む。通常、メモリのネットワークオンチップ120の総入力帯域幅を総出力帯域幅以上とするために、入力インターフェース110の数Mをチャネルの数Nよりも大きくする。また、サービスの品質(QoS)を容易に制御するために、入力インターフェース110の数Mを大きく設定する。
【0018】
入力インターフェース110は、伝送対象データを受信し、伝送対象データをメモリのネットワークオンチップ120に提供するために用いられる。伝送対象データは、メモリのネットワークオンチップ120を介してN個のチャネルのうちの一つ又は複数のチャネルに割り当てられ、割り当てられた一つ又は複数のチャネルを経由して対応するメモリコントローラ130に伝送される。
【0019】
具体的には、マルチチャネルインタリーブ技術では、インタリーブ粒度(チャネルデータ粒度と交換可能に呼ばれる)を用いて各チャネルの伝送可能なデータブロックのサイズを制御する。例えば、チャネルデータ粒度は、バイトを単位とすることができ、例えば、64B、128B、256Bなどであってもよい。チャネルの数が8であり、チャネルデータ粒度が128Bであり、入力インターフェース110が1KBの伝送対象データを受信すると仮定する。静的マッピング方式を採用する場合、伝送対象データは、伝送のために8個のチャネル内の各チャネルに割り当てられる。言い換えれば、1KBの伝送対象データは、8個の128Bのデータブロックに分割され、伝送のために8個のチャネルに割り当てられる。これから、各チャネルのそれぞれがデータを伝送する必要があるため、いずれかのチャネルが破損すると、データを伝送することができなくなり、データ処理システムが故障してしまう。このため、本明細書では、動的マッピングの解決案を提供する。
【0020】
全体的には、本開示の実例によれば、データ処理システムのメモリの複数のチャネルについての利用可能なチャネルモード及びチャネルデータ粒度を決定する。利用可能なチャネルモードは、複数のチャネルの利用可能性を示す。例えば、利用可能なチャネルモードは、2進数、10進数、16進数などの形式で表すことができる。利用可能なチャネルモードを2進数の形式で表す場合、値が1のビットは、対応するチャネルが利用可能であることを表し、値が0のビットは、対応するチャネルが利用不可能であることを表す。チャネルの数が8であり、且つ利用可能なチャネルモードが「10110111」であると、チャネル0、1、2、4、5、及び7が利用可能であり、チャネル3及び6が利用不可能であることを表す。
【0021】
上記のように、チャネルデータ粒度は、各チャネルの伝送可能なデータブロックのサイズを制御することができる。例えば、チャネルデータ粒度は、バイトを単位とすることができ、例えば、64B、128B、256Bなどであってもよい。
複数のチャネル内の各チャネルは、メモリ内の1グループのアドレスに関連付けられている。具体的には、伝送対象データのメモリにおけるターゲットアドレスに基づいて、複数のチャネル内のどのチャネルを使用して伝送するかを決定する。したがって、動的マッピングの原理は、利用可能なチャネルモードとチャネルデータ粒度に基づいて、ターゲットアドレスに対応する変換アドレスを決定し、変換アドレスに基づいて、伝送対象データを利用不可能なチャネルで伝送せず、利用可能なチャネルで伝送することである。
【0022】
8チャネルを例とし、一つのチャネルが利用不可能であると検出された場合、7チャネルでインタリーブし、データを7つの利用可能なチャネルに分配して伝送する。二つのチャネルが破損していると検出された場合、6チャネルでインタリーブし、データを6つの利用可能なチャネルに分配して伝送する。本明細書では、「インタリーブ」という用語は、データをチャネルに分配して伝送する方式を指す。逆に、静的マッピング方式を採用する場合には、利用不可能なチャネルがある限り、データ処理システム全体が利用不可能になる。
【0023】
動的マッピング方式を採用する場合、データ処理システムの歩留まりが60%であり、メモリがデータ処理システムを占用する面積が20%であると、8%(=(1-60%)*20%)の歩留まりを向上させることができる。メモリがデータ処理システムを占用する面積がより大きい場合(高帯域幅メモリ(HBM)など)、データ処理システムの歩留まり及び使用寿命をさらに向上させることができる。
【0024】
また、動的マッピングは、データ処理システムの柔軟性を向上させることもできる。例えば、モノのインターネット(IoT)アプリケーションでは、帯域幅の要件が低いため、複数のチャネルの一部を用いてインタリーブして、コストを削減する。
【0025】
さらに、異なる応用シーンでは、チャネルデータ粒度は異なる性能をもたらすことができる。異なる応用シーンに適用するために、動的マッピングは、チャネルデータ粒度を動的に変更することをサポートすることができる。
【0026】
以下、図2図8を参照して本技術案の具体的な例をより詳細に説明する。マルチチャネルインタリーブ技術を例として本技術案を説明したが、本技術案は、チャネル、パイプなどの伝送方式に関する任意のメモリを管理するために使用されてもよいことに留意されたい。
【0027】
図2は、本開示の実施例に係るメモリ200の概略図を示す。図1に示すメモリ100と類似しており、メモリ200は、M個の入力インターフェース110~110M-1(以下、「入力インターフェース110」と総称する)、メモリネットワークオンチップ120、N個のメモリコントローラ130~130N-1(以下、「メモリコントローラ130」と総称する)、及びN個のメモリコントローラ130~130N-1にそれぞれ対応するN個のチャネル(チャネル0~チャネルN-1)を含む。
【0028】
メモリ200とメモリ100との違いは、メモリ200が、アドレスマッパ230~230M-1(以下、「アドレスマッパ230」と総称する)をさらに含むことである。アドレスマッパ230は、N個のチャネルの利用可能なチャネルモードとチャネルデータ粒度に基づいて、伝送対象データのメモリにおけるターゲットアドレスを変換アドレスにマッピングする。変換アドレスに基づいて、データは、利用不可能なチャネルで伝送されず、利用可能なチャネルで伝送される。例えば、チャネル0、1、2、4、5、及び7が利用可能であり、チャネル3及び6が利用不可能である場合、データは、利用可能なチャネル0、1、2、4、5、及び7のみで伝送され、利用不可能なチャネル3及び6で伝送されない。
【0029】
図2では、アドレスマッパ230が入力インターフェース110とメモリのネットワークオンチップ120との間に設置されていることが示されているが、アドレスマッパ230は、任意の位置に設置されてもよいことに留意されたい。例えば、アドレスマッパ230は、メモリ内部に設置されてもよいし、メモリ外部に設置されてもよいし、データ処理システム外部に設置されてもよい。
【0030】
アドレスマッパ230を使用する場合、入力インターフェース110は、伝送対象データを受信し、伝送対象データをアドレスマッパ230に提供する。アドレスマッパ230は、伝送対象データのメモリにおけるターゲットアドレスを変換アドレスにマッピングする。メモリのネットワークオンチップ120は、変換アドレスに基づいて、データをN個のチャネルのうちの一つ又は複数の利用可能なチャネルに割り当てる。次に、伝送対象データは、割り当てられた利用可能なチャネルを介してメモリコントローラ130に伝送される。
【0031】
例えば、チャネルの数が8であり、チャネルデータ粒度が128Bであり、利用可能なチャネルモードが「10110111」であり、入力インターフェース110が1KBの伝送対象データを受信したと仮定する。動的マッピング方式を採用する場合、伝送対象データは、伝送のために6個の利用可能なチャネルの各利用可能なチャネルに割り当てられる。具体的には、1KBの伝送対象データは、8個の128Bのデータブロックに分割されて、伝送のために6個の利用可能なチャネルに割り当てられる。
【0032】
このようにすることで、データ処理システムに利用不可能なチャネルが存在しても、利用可能なチャネルを介してデータ伝送を実現することができるため、データ処理システムの歩留まり及び使用寿命を向上させることができる。また、本技術案では、チャネルデータ粒度及び利用可能なチャネルモードを設定して異なる応用又はシーンに動的に適応することをサポートすることもでき、データ処理システムの柔軟性及び適応性を向上させることができる。
【0033】
図3は、本開示のいくつかの実施例に係るストレージ管理のための方法300のフローチャートを示す。例えば、方法300は、図2に示すアドレスマッパ230又は他の適切な機器で実行することができる。また、方法300は、示されていない追加のステップを含むこともでき、及び/又は示されるステップを省略することもでき、本開示の範囲は、この点で限定されたい。
【0034】
ステップ310において、アドレスマッパ230は、データ処理システムのメモリの複数のチャネルについての利用可能なチャネルモードを決定する。上記のように、複数のチャネル内の各チャネルは、メモリ内の1グループのアドレスに関連付けられている。また、利用可能なチャネルモードは、複数のチャネルの利用可能性を示し、2進数、10進数、16進数、又は任意の他の適切な形式で表すことができる。いくつかの実施例では、アドレスマッパ230は、複数のチャネル内の利用不可能なチャネルに関する情報を取得し、利用不可能なチャネルに関する情報を分析することによって、利用可能なチャネルモードを決定することができる。例えば、当該情報は、チャネル3及び6が破損して利用不可能であることを示すことによって、利用可能なチャネルモードを「10110111」と決定することができる。
【0035】
ステップ320において、アドレスマッパ230は、チャネルデータ粒度を決定する。チャネルデータ粒度は、各チャネルの伝送可能なデータブロックのサイズを示す。例えば、チャネルデータ粒度は、バイトを単位とすることができ、例えば、64B、128B、256Bなどであってもよい。さらに、ステップ330において、アドレスマッパ230は、さらに、伝送対象データのメモリにおけるターゲットアドレスを取得する。例えば、ターゲットアドレスは、伝送対象データをメモリに書き込むアドレスである。
【0036】
したがって、ステップ340において、アドレスマッパ230は、利用可能なチャネルモードとチャネルデータ粒度に基づいて、ターゲットアドレスに対応する変換アドレスを決定する。これにより、変換アドレスに基づいて、データは、利用不可能なチャネルで伝送されず、利用可能なチャネルで伝送される。このようにすることで、データ処理システムの歩留まり、使用寿命、柔軟性、及び適応性を向上させることができる。
【0037】
以下、図4を参照して本開示のいくつかの実施例に係るストレージ管理のためのより詳細な例示的な方法400のフローチャートを説明する。例えば、方法400は、図2に示すアドレスマッパ230又は他の適切な機器で実行することができる。また、方法400は、示されていない追加のステップを含むこともでき、及び/又は示されるステップを省略することもでき、本開示の範囲は、この点で限定されたい。
【0038】
ステップ410において、アドレスマッパ230は、チャネルデータ粒度に基づいて、ターゲットアドレスを上位部分及び下位部分に分割する。ターゲットアドレスの上位部分は、伝送対象データに関連付けられたデータブロック集合内の一つのデータブロックに対応し、下位部分は、一つのデータブロックの一部に対応する。
【0039】
例えば、ターゲットアドレスはaddr[AW-1:0]であり、AWはアドレスのビット幅を表し、例えば、アドレスのビット幅は32ビット(AW=32)であると仮定する。また、チャネルデータ粒度Kが256Bであると仮定するため、8ビットで表すことができ、すなわち、チャネルデータ粒度のビット幅KWは8である。したがって、ターゲットアドレスaddr[AW-1:0]とチャネルデータ粒度に基づいて、上位部分addr[AW-1:KW]及び下位部分addr[KW-1:0]を生成することができる。上位部分addr[AW-1:KW]は、一つのチャネルの伝送可能なデータブロックを示し、下位部分addr[KW-1:0]は、データブロック内の具体的なアドレスを示すと理解される。
【0040】
ステップ420において、アドレスマッパ230は、利用可能なチャネルモードに基づいて、利用可能なチャネル数を決定する。例えば、利用可能なチャネルモードが「10110111」である場合、アドレスマッパ230は、6個のチャネルが利用可能であり、すなわち、利用可能なチャネル数が6であると決定することができる。代わりに、アドレスマッパ230は、複数のチャネル内の利用不可能なチャネルに関する情報を取得し、利用不可能なチャネルに関する情報を分析することによって、利用可能なチャネル数を決定することができる。例えば、当該情報は、チャネル3及び6が破損して利用不可能であることを示すことができ、これにより、利用可能なチャネル数を6と決定することができる。
【0041】
ステップ430において、アドレスマッパ230は、上位部分と利用可能なチャネル数に基づいて、複数のチャネルから伝送対象データブロックを伝送するための利用可能なチャネルを決定する。いくつかの実施例では、上位部分及び利用可能なチャネル数に対してモジュロ演算を行って、利用可能なチャネルを決定することができる。例えば、上位部分addr[AW-1:KW]モジュラスを利用可能なチャネル数Nで除算して取得されたモジュラスは、利用可能なチャネルの選択に用いられる。理解を容易にするために、図5を参照して説明する。図5は、本開示のいくつかの実施例に係る動的アドレスマッピングの概略図500を示す。
【0042】
図5では、チャネルの数は8であり、利用可能なチャネルモードは「10110111」であり、利用可能なチャネル数は6であり、チャネルデータ粒度は256Bである。ターゲットアドレス「0X05_XX」を例とすると、「0X」は16進数でアドレスを表し、「05」は上位アドレスを表し、 「XX」は下位アドレスを表す。下位アドレスは、利用可能なチャネル及びチャネル内アドレスの決定には関与しないため、「XX」で総称する。
【0043】
この場合、上位部分「05」モジュラスを利用可能なチャネル数6で除算した結果はモジュラス5になる。次に、モジュラスに基づいて利用可能なチャネルを選択する。例えば、利用可能なチャネルモードで下位から上位への(モジュラス+1)番目の、値が1であるビットで示されるチャネルを、上位部分「05」に関連付けられたデータブロックの利用可能なチャネルと決定することができる。モジュラスが5の場合、利用可能なチャネルモードで下位から上位への6番目の値が1であるビットで示されるチャネル(すなわち、チャネル7)は、利用可能なチャネルと決定される。対照として、当該データブロックの元のチャネルはチャネル5である。
【0044】
図4を再び参照すると、ステップ440において、アドレスマッパ230は、上位部分と利用可能なチャネル数に基づいて、伝送対象データブロックの当該利用可能なチャネルにおけるチャネル内アドレスを決定する。チャネル内アドレスは、データブロックの各チャネルにおけるアドレスを表す。いくつかの実施例では、データブロックがチャネルを介して伝送される順序を示すことができる。
【0045】
以下、図6を参照してチャネル内アドレスを説明する。図6は、本開示のいくつかの実施例に係るチャネル内アドレスの概略図600を示す。図6に示すように、一番左の列は、0-Nなどのチャネル内アドレスを表し、残りの各列は、チャネル0-7などの一つのチャネルを表す。各ブロック内の数字は、データブロックの番号を表す。いくつかの実施例では、当該番号は、上位アドレスにより示されてもよい。チャネル内アドレスは、データブロックが当該チャネルを介して伝送される順序を示すため、チャネル内アドレスが0であるデータブロック0は、チャネル内アドレスが1であるデータブロック8の前にチャネルを介して伝送され、チャネル内アドレスが1であるデータブロック8は、チャネル内アドレスが2であるデータブロック16の前にチャネルを介して伝送され、このように繰り返していく。
【0046】
いくつかの実施例では、チャネル内アドレスは、上位部分と利用可能なチャネル数に対して商演算を行うことによって決定することができる。例えば、図6に示すように、利用可能なチャネルモードは「10110111」であり、利用可能なチャネル数が6の場合、上位アドレス「00」及び「06」を利用可能なチャネル数6でそれぞれ除算した商は、それぞれ「0」及び「1」であり、すなわち、チャネル内アドレスは、それぞれ「0」及び「1」である。さらに、上位アドレス「00」及び「06」に関連付けられたデータブロックは、すべてチャネル0を使用して伝送すると決定され、この二つのデータブロックのチャネル0におけるチャネル内アドレスは、それぞれ「0」及び「1」であるため、上位アドレス「00」に関連付けられたデータブロックは、上位アドレス「06」に関連付けられたデータブロックの前にチャネル0を介して伝送される。
【0047】
図4を再び参照すると、ステップ450において、アドレスマッパ230は、利用可能なチャネルと、チャネル内アドレスと、下位部分に基づいて、変換アドレスを生成する。いくつかの実施例では、利用可能なチャネルとチャネル内アドレスに基づいて、変換アドレスの上位部分を決定し、下位部分に基づいて変換アドレスの下位部分を決定することができる。例えば、チャネル内アドレスを2進数で1ビットとして表し、利用可能なチャネルを2進数で3ビットとして表すと仮定する。この場合、図6に示すように、ターゲットアドレス「0X05_XX」のチャネル内アドレスは「0」であり、利用可能なチャネルは「7」(すなわち「111」)であるため、変換アドレスの上位部分は、「07」(すなわち「0111」)と決定することができる。また、ターゲットアドレス「0X05_XX」の下位部分は「XX」であるため、変換アドレスの下位部分は、「XX」と決定することができる。
【0048】
したがって、利用可能なチャネルの情報を組み合わせてターゲットアドレスを動的にマッピングすることにより、変換アドレスに基づいて、データを利用不可能なチャネルで伝送せず、利用可能なチャネルで伝送することができ、データ処理システムの歩留まり及び使用寿命を向上させることができる。
【0049】
また、動的マッピングは、データ処理システムの柔軟性を向上させることもできる。低帯域幅の応用シーンでは、所定の帯域幅の一部のみを必要とする場合がある。例えば、8チャネル内の4つのチャネルのみを必要とする場合がある。この場合、利用可能なチャネルモードを「11110000」及び「00001111」に交互に設定することで、異なる4つのチャネルを交互に使用することができる。これにより、チャネルの使用を均等化することができ、チャネル0~3を使用し続ける場合に比べて、使用寿命を向上させることができる。
【0050】
さらに、異なる応用シーンでは、チャネルデータ粒度は、異なる性能をもたらすことができる。異なる応用シーンに適用するために、動的マッピングは、チャネルデータ粒度を動的に変更することをサポートすることができる。
【0051】
図7は、本開示のいくつかの実施例に係るストレージ管理のための装置700の概略ブロック図を示す。図7に示すように、装置700は、データ処理システムのメモリの複数のチャネルについての利用可能なチャネルモードを決定するように構成される利用可能なチャネルモード決定モジュール710であって、利用可能なチャネルモードは、複数のチャネルの利用可能性を示し、複数のチャネル内の各チャネルは、メモリ内の1グループのアドレスに関連付けられる利用可能なチャネルモード決定モジュール710と、各チャネルの伝送可能なデータブロックのサイズを示すチャネルデータ粒度を決定するように構成されるチャネルデータ粒度決定モジュール720と、伝送対象データのメモリにおけるターゲットアドレスを取得するように構成されるターゲットアドレス取得モジュール730と、利用可能なチャネルモードに基づいて、ターゲットアドレスに対応する変換アドレスを決定するように構成される決定モジュール740と、を含む。
【0052】
いくつかの実施例では、利用可能なチャネルモード決定モジュール710は、複数のチャネル内の利用不可能なチャネルに関する情報を取得するように構成される利用不可能なチャネル情報取得モジュールと、利用不可能なチャネルに関する情報に基づいて、利用可能なチャネルモードを決定するように構成される利用可能なチャネルモード決定モジュールと、を含む。
【0053】
いくつかの実施例では、決定モジュール740は、チャネルデータ粒度に基づいて、ターゲットアドレスを、伝送対象データに関連付けられたデータブロック集合内の一つのデータブロックに対応する上位部分と、一つのデータブロックの一部に対応する下位部分に分割するように構成されるアドレス分割モジュールと、利用可能なチャネルモードに基づいて、利用可能なチャネル数を決定するように構成される利用可能なチャネル数決定モジュールと、上位部分と利用可能なチャネル数に基づいて、複数のチャネルから伝送対象データブロックを伝送するための利用可能なチャネルを決定するように構成される利用可能なチャネル決定モジュールと、伝送対象データブロックの利用可能なチャネルにおけるチャネル内アドレスを決定するように構成されるチャネル内アドレス決定モジュールと、利用可能なチャネルと、チャネル内アドレスと、下位部分に基づいて、変換アドレスを生成するように構成される生成モジュールと、を含む。
【0054】
いくつかの実施例では、利用可能なチャネル決定モジュールは、上位部分と利用可能なチャネル数に対してモジュロ演算を行って、利用可能なチャネルを決定するように構成されるモジュロ演算モジュールを含む。
【0055】
いくつかの実施例では、チャネル内アドレス決定モジュールは、上位部分と利用可能なチャネル数に対して商演算を行って、チャネル内アドレスを決定するように構成される商演算モジュールを含む。
【0056】
図8は、本開示の実施例を実施できる例示的な機器800の概略ブロック図を示す。機器800は、図2のアドレスマッパ230を実現することができる。図に示すように、機器800は、リードオンリーメモリ(ROM)802に記憶されたコンピュータプログラム命令、又は記憶ユニット808からランダムアクセスメモリ(RAM)803にローディングされたコンピュータプログラム命令に基づいて、各種の適切な動作及び処理を実行できる中央処理装置(CPU)801を含む。RAM803には、機器800の動作に必要な各種のプログラム及びデータをさらに記憶することができる。CPU801と、ROM802と、RAM803とは、バス804を介して互いに接続されている。入力/出力(I/O)インタ-フェース805もバス804に接続されている。
【0057】
機器800における複数の構成要素は、I/Oインタ-フェース805に接続されており、キーボードやマウスなどの入力ユニット806と、種々なディスプレイやスピーカなどの出力ユニット807と、磁気ディスクや光学ディスクなどの記憶ユニット808と、ネットワークカード、モデム、無線通信トランシーバーなどの通信ユニット809と、を含む。通信ユニット809は、機器800がインターネットのようなコンピュータネット及び/又は種々なキャリアネットワークを介してその他の機器と情報/データを交換することを許可する。
【0058】
処理ユニット801は、前述の各方法及び処理、例えば、方法300及び400を実行する。例えば、いくつかの実施例では、方法300及び400は、記憶ユニット808のような機械読み取り可能な媒体に有形的に含まれるコンピュータソフトウエアプログラムとして実現することができる。一部の実施例では、コンピュータプログラムの一部又は全ては、ROM802及び/又は通信ユニット809を介して機器800にロード及び/又はインストールすることができる。コンピュータプログラムがRAM803にロードされてCPU801によって実行される場合、前述した方法300及び400の一つ又は複数のステップを実行することができる。選択可能に、他の実施例では、CPU801は、他の任意の適切な方式(例えば、ファームウェアによって)で方法300及び400を実行するように構成される。
【0059】
本明細書の説明された機能は、一つ又は複数のハードウェアロジックコンポーネントによって実現することができる。限定ではなく、例として、使用可能なハードウェアロジックコンポーネントとしては、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準品(ASSP)、システムオンチップ(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)などが挙げられる。
【0060】
本開示の方法を実施するためのプログラムコードは、一つ又は複数のプログラミング言語の任意の組み合わせにより作成することができる。これらのプログラムコードは、汎用コンピュータ、専門コンピュータ又はその他のプログラミングデータ処理装置のプロセッサ又はコントローラに提供される。これにより、プログラムコードがプロセッサ又はコントローラによって実行されると、フローチャート及び/又はブロック図に規定された機能/動作を実行することができる。プログラムコードは、完全にマシンで実行されてもよく、部分的にマシンで実行されてもよく、独立したソフトパッケージとして部分的にマシンで実行されるとともに、部分的にリモートマシンで実行されてもよく、又は完全にリモートマシン又はサーバで実行されてもよい。
【0061】
本開示の説明において、機械読み取り可能な媒体は、有形な媒体であってもよく、命令実行システム、装置又は機器によって、又は命令実行システム、装置又は機器と合わせて使用されるプログラムを含み、又は記憶する。機械読み取り可能な媒体は、機械読み取り可能な信号媒体又は機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子、磁気、光学、電磁、赤外線、又は半導体システム、装置、又はデバイス、又は前述した内容の任意の適切な組み合わせを含むことができるがこれらに限定されない。機械読み取り可能な記憶媒体のさらなる具体例として、1つ又は複数の配線による電気的接続、ポータブルコンピュータディスクカートリッジ、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能なプログラマブルリードオンリーメモリ(EPROM又はフラッシュメモリ)、光ファイバー、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、光学記憶装置、磁気記憶装置、又は前述した内容の任意の組み合わせを含む。
【0062】
また、特定の順番で各動作を説明したが、このような動作を、示される特定の順番又は順次実行することが求められ、又は図示した動作の全てを実行して所望の結果を取得することが求められることを理解されたい。一定の環境では、複数のタスク及び並列処理が有利である可能性がある。同様に、以上の説明には、若干の具体的な実現の詳細が含まれたが、それが本開示の範囲を限定するものと理解してはならない。個別の実施例に説明された一部の特徴は、一つの実施形態で組み合わせて実現することができる。逆に、一つの実施形態に説明された種々な特徴は、個別又は任意の適切なサブ組み合わせの方式で複数の実施形態で実現することができる。
【0063】
構成の特徴及び/又は方法の論理動作に特有の言語で本テーマを説明したが、特許請求の範囲で限定される本題は、上記の特定の特徴又は動作に限定されない。逆に、上記の特定の特徴と動作は、特許請求の範囲を実現する例に過ぎない。
図1
図2
図3
図4
図5
図6
図7
図8