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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-06
(54)【発明の名称】データ処理
(51)【国際特許分類】
   G06F 7/24 20060101AFI20220629BHJP
【FI】
G06F7/24 H
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021557465
(86)(22)【出願日】2020-12-16
(85)【翻訳文提出日】2021-09-27
(86)【国際出願番号】 CN2020136960
(87)【国際公開番号】W WO2021196745
(87)【国際公開日】2021-10-07
(31)【優先権主張番号】202010244150.2
(32)【優先日】2020-03-31
(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)【発明者】
【氏名】▲張▼ ▲啓▼▲榮▼
(72)【発明者】
【氏名】王 文▲強▼
(72)【発明者】
【氏名】胡 英俊
(72)【発明者】
【氏名】蒋 科
(57)【要約】
本発明の実施例は、データ処理装置、集積回路、及びAIアクセラレータを提供する。データ処理装置は、それぞれ、ヒープの1組のノードのデータを記憶するための、複数のヒープストレージユニットと、それぞれ、少なくとも2つのヒープストレージユニットをアクセスして、入力された元のデータおよび前記少なくとも2つのヒープストレージユニットに記憶されたデータをソートするための、複数のヒープ調整ユニットと、を備え、前記1組のノードは、前記ヒープの同じ層のノードの中の少なくとも一部のノードを含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
データ処理装置であって、
それぞれ、ヒープの1組のノードのデータを記憶するための、複数のヒープストレージユニットと、
それぞれ、少なくとも2つのヒープストレージユニットをアクセスして、入力された元のデータおよび前記少なくとも2つのヒープストレージユニットに記憶されたデータをソートするための、複数のヒープ調整ユニットと、を備え、
前記1組のノードは、前記ヒープの同じ層のノードの中の少なくとも一部のノードを含む
ことを特徴とするデータ処理装置。
【請求項2】
各ヒープ調整ユニットによってアクセスされた前記少なくとも2つのヒープストレージユニットは、前記ヒープの隣接層のノードのデータを記憶し、および/または、
前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、前記入力された元のデータを取得し、前記取得した元のデータおよびアクセスした前記少なくとも2つのヒープストレージユニットの中の少なくとも1つのヒープストレージユニット内のデータをソートする
ことを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記複数のヒープ調整ユニットの中2つの隣接するヒープ調整ユニットによってそれぞれアクセスされた2つのヒープストレージユニットは、1つの同じヒープストレージユニットを含み、および/または、
前記複数のヒープ調整ユニットの中の少なくとも2つのヒープ調整ユニットは、並行してソートを実行し、前記少なくとも2つのヒープ調整ユニットによってアクセスされたヒープストレージユニットは、互いに異なる
ことを特徴とする請求項1または2に記載のデータ処理装置。
【請求項4】
隣接する2つのデータのヒープ入りタイミングの間には、2つのヒープストレージユニットの処理サイクルがある
ことを特徴とする請求項1~3のいずれか1項に記載のデータ処理装置。
【請求項5】
前記ヒープの同じノードの各々のサブノードのデータは、同じヒープストレージユニットの同じアドレスに記憶されている
ことを特徴とする請求項1~4のいずれか1項に記載のデータ処理装置。
【請求項6】
データ記憶装置から取得した元のデータに対して前スクリーニング処理を実行するための前処理ユニットをさらに備え、
前スクリーニング処理を通じたデータは、前記複数のヒープ調整ユニットに入力される
ことを特徴とする請求項1~5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記前処理ユニットは、前記ヒープストレージユニットに記憶されたデータが所定の数量に達した場合、新たに取得した前記元のデータに対して前記前スクリーニング処理を実行する
ことを特徴とする請求項6に記載のデータ処理装置。
【請求項8】
前記前処理ユニットは、前記元のデータと前記ヒープのルートノードのデータとを比較して、前記元のデータに対して前記前スクリーニング処理を実行することによって、前記元のデータをヒープ入りする必要があるか否かを事前に判定する
ことを特徴とする請求項6または7に記載のデータ処理装置。
【請求項9】
前記前処理ユニットの数は、複数であり、複数の前記前処理ユニットは、並行して取得した前記元のデータに対して前記前スクリーニング処理を実行する
ことを特徴とする請求項6~8のいずれか1項に記載のデータ処理装置。
【請求項10】
前記前処理ユニットは、
前記元のデータをヒープ入りする必要があると判定された場合、前記元のデータをキャッシュユニットまたは前記複数のヒープ調整ユニットに伝送し、また、
前記元のデータをヒープ入りする必要がないと判定された場合、前記元のデータを削除するかまたは前記データ記憶装置に返す
ことを特徴とする請求項6~9のいずれか1項に記載のデータ処理装置。
【請求項11】
前記複数のヒープ調整ユニットは、さらに、
ソート過程で絞り出された元のデータを前記データ記憶装置に返し、
前記複数のヒープストレージユニット内のデータのソートがいずれも完了された場合、前記データ記憶装置に返した元のデータを再ソートする
ことを特徴とする請求項10に記載のデータ処理装置。
【請求項12】
前記前処理ユニットから取得した前記前スクリーニング処理を通じた元のデータをキャッシュするための第1キャッシュユニットをさらに備え、
前記複数のヒープ調整ユニットは、前記第1キャッシュユニットから取得した元のデータおよび前記複数のヒープストレージユニット内のデータをソートする
ことを特徴とする請求項6~11のいずれか1項に記載のデータ処理装置。
【請求項13】
データ記憶装置から取得した元のデータをキャッシュするための第2キャッシュユニットをさらに備え、
前記複数のヒープ調整ユニットは、前記第2キャッシュユニットから取得した元のデータおよび前記複数のヒープストレージユニット内のデータをソートする
ことを特徴とする請求項1~5のいずれか1項に記載のデータ処理装置。
【請求項14】
前記ヒープストレージユニットは、いずれもフラグビットを含み、
前記フラグビットは、前記ヒープストレージユニット内の対応する位置のデータが有効であるか否かを指示する
ことを特徴とする請求項1~13のいずれか1項に記載のデータ処理装置。
【請求項15】
前記ヒープストレージユニットは、さらに、
前記ヒープストレージユニット内の各々のフラグビットに対して初期化処理を実行し、および/または、
1つのフラグビットの対応する位置に有効なにデータを書き込んだことが確定された場合、当該フラグビットを更新する
ことを特徴とする請求項14に記載のデータ処理装置。
【請求項16】
前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、さらに、
当該ヒープ調整ユニットによってアクセスされた第1ヒープストレージユニットのフラグビットが、対応する位置のデータがいずれも有効なにデータであると指示する場合、当該ヒープ調整ユニットに入力した元のデータおよび前記有効なにデータをソートし、
ここで、前記第1ヒープストレージユニットは、当該ヒープ調整ユニットによってアクセスされた前記少なくとも2つのヒープストレージユニット内のルートノードに接近するヒープストレージユニットであり、また、
前記第1ヒープストレージユニットのフラグビットが、対応する位置のデータが任意の無効データを含むと指示する場合、当該ヒープ調整ユニットに入力した前記元のデータを前記無効データに対応する位置に書き込む
ことを特徴とする請求項14または15に記載のデータ処理装置。
【請求項17】
前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、
少なくとも2つのヒープストレージユニットの中の少なくとも1つのヒープストレージユニットに記憶されたデータを読み取り、
当該ヒープ調整ユニットに入力する元のデータと前記読み取ったデータをソートし、また、
ソートの要件に従って、前記ソート結果中のより大きいまたはより小さいデータを前記少なくとも2つのヒープストレージユニットの中のもう1つのヒープストレージユニットに書き込み、
ここで、前記もう1つのヒープストレージユニットと前記少なくとも1つのヒープストレージユニットは、同じヒープストレージユニットではない
ことを特徴とする請求項1~16のいずれか1項に記載のデータ処理装置。
【請求項18】
ヒープ制御ユニットをさらに備え、
前記ヒープ制御ユニットは、
初期化命令を受信した場合、前記複数のヒープストレージユニットが同じクロックサイクル内で初期化を実行するように制御することと、
ヒープ入り命令を受信した場合、データ記憶装置から元のデータを読み取り、読み取った前記元のデータを前記複数のヒープ調整ユニットに伝送することによって、前記複数のヒープ調整ユニッがト前記元のデータおよび複数のヒープストレージユニット内のデータをソートするようにすることと、
ヒープ出し命令を受信した場合、前記複数のヒープ調整ユニットが特定の順序に従って前記複数のヒープストレージユニット内のデータをヒープ頂から出力するように制御することと、の中の少なくとも1つを実行する
ことを特徴とする請求項1~17のいずれか1項に記載のデータ処理装置。
【請求項19】
集積回路であって、
前記集積回路は、請求項1~18のいずれか1項に記載のデータ処理装置を含む
ことを特徴とする集積回路。
【請求項20】
前記集積回路は、コントローラーをさらに備え、
前記コントローラーは、
前記複数のヒープストレージユニットが初期化を実行するように指示するための初期化命令と、
前記複数のヒープ調整ユニットが、元のデータを取得し、前記元のデータおよび前記複数のヒープストレージユニットに記憶されたデータをソートするように指示するためのヒープ入り命令と、
前記複数のヒープ調整ユニットが、特定の順序に従って前記複数のヒープストレージユニットに記憶されたデータを出力するように指示するためのヒープ出し命令と、の中の少なくとも1つの命令を、前記データ処理装置に送信する
ことを特徴とする請求項19に記載の集積回路。
【請求項21】
人工知能(AI)アクセラレータであって、
前記AIアクセラレータは、請求項19または20に記載の集積回路を含む
ことを特徴とするAIアクセラレータ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理技術分野に関し、特に、データ処理装置、集積回路、及び人工知能(Artificial Intelligence、AI)アクセラレータに関する。
【背景技術】
【0002】
多くのアルゴリズムまたはモデルでは、ソートの問題に対処することがしばしば必要である。ヒープソート(Heapsort)は、ソートの問題に対処するために広く使用されている。ヒープソートとは、ヒープのようなデータ構造を利用して設計されたソート方法である。
【発明の概要】
【0003】
本発明は、データ処理装置、集積回路、及びAIアクセラレータを提供する。
【0004】
本発明の実施例の第1の態様によると、データ処理装置を提供し、前記装置は、それぞれ、ヒープの1組のノードのデータを記憶するための、複数のヒープストレージユニットと、それぞれ、少なくとも2つのヒープストレージユニットをアクセスして、入力された元のデータおよび前記少なくとも2つのヒープストレージユニットに記憶されたデータをソートするための、複数のヒープ調整ユニットと、を備え、前記1組のノードは、前記ヒープの同じ層のノードの中の少なくとも一部のノードを含む。
【0005】
本発明の実施例の第2の態様によると、集積回路を提供し、前記集積回路は、第1態様に記載のデータ処理装置を含む。
【0006】
本発明の実施例の第3の態様によると、AIアクセラレータを提供し、前記AIアクセラレータは、第2の態様に記載の集積回路を含む。
【0007】
本発明の実施例によると、ヒープ内の各々のノードのデータを複数のヒープストレージユニットに記憶し、複数のヒープストレージユニット内のデータは独立して読み取られまたは書き込まれることができ、前の1つのデータが前記複数のヒープ調整ユニットによってソートされる同時に、後の1つのデータがヒープ入りされることができることによって、ヒープ構築過程で同時にソートを実行することができ、ソート効率を向上させた。
【0008】
上記の一般的な説明および以下の詳細な説明は、例示的および解釈的なものに過ぎず、本発明を限定するものではないことを理解すべきである。
【図面の簡単な説明】
【0009】
ここでの図面は、明細書に組み込まれて明細書の一部を構成し、これら図面は本発明に一致する実施例を示し、明細書と一緒に本発明の技術的解決策を説明するために使用される。
図1A】いくつかの実施例のヒープを示す模式図である。
図1B】いくつかの実施例のヒープソート過程を示す模式図である。
図2】本発明の実施例のデータ処理装置を示す模式図である。
図3A】本発明の実施例のデータ記憶方法を示す模式図である。
図3B】本発明の実施例のデータ記憶方法を示す模式図である。
図4】本発明のもういくつかの実施例のデータ処理装置を示す模式図である。
図5A-5F】本発明の実施例のヒープソート過程でのデータ変化を示す模式図である。
図6】本発明の実施例のデータフロー過程を示す模式図である。
【発明を実施するための形態】
【0010】
ここで、例示的な実施例を詳細に説明し、その例を図面に示す。以下の説明が図面を言及している場合、特に明記しない限り、異なる図面での同じ符号は同じまたは類似の要素を表す。以下の例示的な実施例で説明する実施形態は、本発明に一致するすべての実施形態を表すわけではない。逆に、それらは、添付の特許請求の範囲に詳述されているように、本発明のいくつかの態様に一致する装置と方法の単なる例である。
【0011】
本発明で使用する用語は、特定の実施例を説明することのみを目的としており、本発明を限定することを意図するものではない。本発明および添付の特許請求の範囲で使用される「1種」、「前記」、および、「当該」の単数形も、文脈が他の意味を明確に示さない限り、複数形を含むことを意図する。本明細書で使用される「および/または」という用語は、1つまたは複数の関連するリストされた項目の任意またはすべての可能な組み合わせを指すことをさらに理解すべきである。また、本明細書中の「少なくとも1つ」という用語は、複数中の任意の1つまたは複数中の少なくとも2つの任意の組み合わせを表す。
【0012】
本発明では、第1、第2、第3などの用語を使用してさまざまな情報を説明することができるが、これら情報はこれら用語に限定されるべきではないことを理解すべきである。これら用語は、同じタイプの情報を互いに区別するためにのみ使用される。たとえば、本発明の範囲から逸脱することなく、第1情報はまた第2情報と呼ばれ得、同様に、第2情報もまた第1情報と呼ばれ得る。文脈に応じて、ここで使用される「もし」という単語は、「……と」または「……場合」または「確定されたことに応答して」と解釈することができる。
【0013】
以下、当業者が本発明の実施例の技術的解決策をより良く理解するようにし、また本発明の実施例の前記目的、特徴、及び利点をより明確で分かりやすくするために、図面を参照して本発明の実施例の技術的解決策をさらに詳細に説明する。
【0014】
多くのアルゴリズムまたはモデル(たとえば、ニューラルネットワークモデル)では、ソートの問題に対処することがしばしば必要であり、特に、top k(kは正の整数である)のソートの問題、すなわち1組のソート待ちデータから数値が最大または最小のk個のデータを選択する問題に対処することがしばしば必要である。ヒープソートは、ソートの問題の対処に広く使用されている。ヒープソートとは、ヒープのようなデータ構造を利用して設計したソート方法を指す。図1Aに示すように、ヒープは、ほぼ完全なバイナリツリー構造であり、ヒープが最小のヒープである場合、ヒープ内の各ノードに対応するデータは常にそのサブノード以下であり、ヒープが最大のヒープである場合、ヒープ内の各ノードに対応するデータは常にそのサブノード以上である。
【0015】
ヒープソートの1方法において、1ブロックの完全な記憶ユニットを利用してヒープ全体を記憶することができ、つまり、ヒープの各々のノードに対応するデータがいずれも同じ記憶ユニットに記憶される。読み取りと書き込みの競合が原因で、一度に1つのノードとそのサブノードのデータのみをソートすることができる。図1Bに示すように、5個のノードを含む模式図であり、ここで、この5個のノードに対応するデータはいずれも同じ記憶ユニットに記憶されており、すなわち図面内のmemに記憶されている。ソートするときに、ヒープ底から比較して、まず記憶ユニット内のノード4のデータとノード1のデータを交換してから、ノード1とノード0のデータを交換し、その後に、ノード4のデータとノード1のデータを交換して、左下隅の模式図に示すように、ソートされた最大ヒープを得る。ヒープ頂(すなわち、ヒープのルートノード)のデータを記憶ユニットから書き出し、残りのデータに対して、ヒープ内の各々のノードに対応するデータがいずれも記憶ユニットから書き出されるまで、前記ソート過程を繰り返す。上記からわかるように、当該ヒープソート方法は、ソート効率が低い。
【0016】
これに鑑みて、本発明の実施例は、データ処理装置を提供し、図2に示すように、前記装置は、複数のヒープストレージユニット201と複数のヒープ調整ユニット202とを、備え得る。
【0017】
複数のヒープストレージユニット201の場合、各ヒープストレージユニットは、ヒープの1組のノードのデータを記憶し、前記1組のノードは、前記ヒープの同じ層のノードの中の少なくとも一部のノードを含む。
【0018】
複数のヒープ調整ユニット202の場合、各ヒープ調整ユニットは、少なくとも2つのヒープストレージユニットをアクセスして、入力された元のデータおよび前記少なくとも2つのヒープストレージユニットに記憶されたデータをソートする。
【0019】
オプションのヒープソート方法において、データをヒープ底からヒープ入りしてから、ヒープ頂からソートし始めるから、ヒープ構築とソートの過程が独立して実行され、ヒープ入り過程で、並行してソートを実行することができない。本発明の実施例において、ヒープ内の各々のノードのデータを複数のヒープストレージユニット201に記憶し、複数のヒープストレージユニット201内のデータは独立して読み取られまたは書き込まれることができ、前の1つのデータが前記複数のヒープ調整ユニット202によってソートされる同時に、後の1つのデータがヒープ入りされることができることによって、ヒープ構築過程で同時にソートを実行することができ、ソート効率を向上させた。
【0020】
図2に示すヒープ調整ユニットnのような、最後の1つのヒープ調整ユニットの場合、ヒープストレージユニットnおよびヒープストレージユニットn+1などの、2つのヒープストレージユニットが接続されているが、ヒープストレージユニットn+1にデータを書き込む調整ユニットがないため、ヒープ調整ユニットnは実際にはヒープストレージユニットn+1からデータを読み取ることができないことを説明する必要がある。具体的な実施において、ヒープストレージユニットn+1は、1つの仮想記憶ユニットであってもよいし、他のヒープストレージユニットと類似な記憶ユニットであってもよい。
【0021】
なお、図2ではソートするときのヒープ調整ユニットがヒープストレージユニットをアクセスするときのデータフロー方向を模式的に示したが、実際の適用において、本発明は、ヒープ調整ユニットiがヒープストレージユニットiにデータを書き込みだけに限定しないし、および/または、ヒープストレージユニットi+1からデータを読み取りだけに限定しない。
【0022】
図3Aは、4層のノードを含むヒープおよび前記ヒープ内の各々のノードのデータの記憶方法を示す模式図である。図3Aに示すように、第iヒープストレージユニットは、ヒープの第i層に位置するすべてのノードのデータを記憶することができ、たとえば、第1ヒープストレージユニットは、ヒープの第1層のノードP11のデータを記憶し、第2ヒープストレージユニットは、ヒープの第2層のノードP21およびP22のデータを記憶し、その以下も同様である。
【0023】
図3Aに示す実施例は、本発明の可能な1実施形態に過ぎず、本発明はこれに限定されないことを説明すべきである。実際の適用において、ヒープの任意の1層のノードの中のすべてのノードのデータは、複数のヒープストレージユニットに記憶されてもよい。たとえば、ノードP31のデータおよびノードP32のデータを記憶するヒープストレージユニットは、ノードP33のデータおよびノードP34のデータを記憶するヒープストレージユニットと異なってもよい。
【0024】
いくつかの実施例において、各ヒープ調整ユニットによってアクセスされた前記少なくとも2つのヒープストレージユニットは、前記ヒープの隣接層のノードのデータを記憶する。オプションとして、各ヒープ調整ユニットは、2つのヒープストレージユニットをアクセスすることができ、ここで、前記2つのヒープストレージユニットは、ヒープ内の隣接する2層のノード内の一部または全部のノードのデータを記憶する。たとえば、図3Aに示す実施例において、ヒープ調整ユニット1は、第1ヒープストレージユニットおよび第2ヒープストレージユニットをアクセスすることができ、ヒープ調整ユニット2は、第2ヒープストレージユニットおよび第3ヒープストレージユニットをアクセスすることができ、ヒープ調整ユニット3は、第3ヒープストレージユニットおよび第4ヒープストレージユニットをアクセスすることができ、以下も同様である。オプションとして、他の実施例において、各ヒープ調整ユニットは、さらに、2つ以上のヒープストレージユニットをアクセスすることによって、前記2つ以上のヒープストレージユニット内のデータをソートすることができ、ここで、前記2つ以上のヒープストレージユニット内のデータは、隣接する2層のノード内の一部または全部のノードのデータであってもよいし、隣接する3層または3層以上のノード内の一部または全部のノードのデータであってもよい。
【0025】
もういくつかの実施例において、各ヒープ調整ユニットは、さらに、ヒープの任意の隣接しない2層以上のノード内の少なくとも一部のデータをソートすることによって、異なる適用シナリオでのソート要件を満たすことができ、ここではこれ以上説明しない。
【0026】
いくつかの実施例において、前記複数のヒープ調整ユニットの中の少なくとも2つのヒープ調整ユニットは、並行してソートすることができるため、データ処理効率を向上させることができる。もういくつかの実施例において、前記複数のヒープ調整ユニットは、さらに、前記複数のヒープストレージユニット内のデータをシリアルにソートすることができる。
【0027】
データの競合を回避するために、並行してソートしている少なくとも2つのヒープ調整ユニットによってアクセスされたヒープストレージユニットは、互いに異なる。たとえば、図3Aに示す実施例において、ヒープ調整ユニット2によってアクセスされたヒープストレージユニットが第2ヒープストレージユニットおよび第3ヒープストレージユニットを含み、ヒープ調整ユニット3によってアクセスされたヒープストレージユニットが第3ヒープストレージユニットおよび第4ヒープストレージユニットを含み、ヒープ調整ユニット2およびヒープ調整ユニット3によってアクセスされたヒープストレージユニットがいずれも第3ヒープストレージユニットを含むため、ヒープ調整ユニット2およびヒープ調整ユニット3は並行してソートしない。これに対し、ヒープ調整ユニット1によってアクセスされたヒープストレージユニットが第1ヒープストレージユニットおよび第2ヒープストレージユニットを含み、ヒープ調整ユニット3によってアクセスされたヒープストレージユニットが第3ヒープストレージユニットおよび第4ヒープストレージユニットを含むと、ヒープ調整ユニット1およびヒープ調整ユニット3によってアクセスされたヒープストレージユニットが互いに異なり、すなわち、この2つのヒープ調整ユニットによってアクセスされたヒープストレージユニットが同じヒープストレージユニットを含まない。したがって、ヒープ調整ユニット1およびヒープ調整ユニット3は、並行してソートすることができる。
【0028】
データ読み取りと書き込みの競合を解決する具体的な1実施形態として、複数のヒープ調整ユニットの中2つの隣接するヒープ調整ユニットによってそれぞれアクセスされた2つのヒープストレージユニットは、1つの同じヒープストレージユニットを含む。たとえば、ヒープ調整ユニット1によってアクセスされたヒープストレージユニットは、第1ヒープストレージユニットおよび第2ヒープストレージユニットを含み、ヒープ調整ユニット2によってアクセスされたヒープストレージユニットは、第2ヒープストレージユニットおよび第3ヒープストレージユニットを含み、以下も同様である。ヒープ調整ユニット1が第2ヒープストレージユニットをアクセスするときに、ヒープ調整ユニット2は第3ヒープストレージユニットをアクセスすることができ、ヒープ調整ユニット2が第2ヒープストレージユニットをアクセスするときに、ヒープ調整ユニット1は第1ヒープストレージユニットをアクセスすることができるため、データ読み取りと書き込みの競合を回避することができる。また、たとえば、ヒープ調整ユニット1によってアクセスされたヒープストレージユニットは、第1ヒープストレージユニットから第3ヒープストレージユニットを含み、ヒープ調整ユニット2によってアクセスされたヒープストレージユニットは、第3ヒープストレージユニットから第5ヒープストレージユニットを含み、以下も同様である。類似的に、ヒープ調整ユニット1が第3ヒープストレージユニットをアクセスするときに、ヒープ調整ユニット2は第4または第5ヒープストレージユニットをアクセスすることができる。
【0029】
データ読み取りと書き込みの競合を解決する具体的なもう1実施形態として、並行してソートしている任意2つのヒープ調整ユニット同士の間に、少なくとも1つのヒープ調整ユニットがある。たとえば、第1ヒープストレージユニットおよび第2ヒープストレージユニットをアクセスするヒープ調整ユニット1と、第3ヒープストレージユニットおよび第4ヒープストレージユニットをアクセスするヒープ調整ユニット3と、の間に、1つの第2ヒープストレージユニットおよび第3ヒープストレージユニットをアクセスするヒープ調整ユニット2があると、ヒープ調整ユニット1とヒープ調整ユニット3は、並行してソートすることができる。
【0030】
ソートする過程で、一度に1つのデータをヒープ入りし、前記複数のヒープ調整ユニットを通じてヒープ入りされたデータおよび前記複数のヒープストレージユニットに記憶されたデータをソートすることができる。データ読み取りと書き込みの競合を解決する具体的な別の1実施形態として、隣接する2つのデータのヒープ入りタイミング同士の間に、少なくとも2つのヒープストレージユニットの処理時間がある。たとえば、図6に示すように、データd1がt1の開始時点でヒープ入りされると、次のデータd2はt3の開始時点でヒープ入りされ、ここで、t1、t2、t3…は、ヒープストレージユニットの処理時間を表す。
【0031】
上記の方法に加えて、さらに、他の方法を採用してデータ読み取りと書き込みの競合の問題を解決することによって、複数のヒープ調整ユニットが並行してソートするようにすることができ、ここではこれ以上説明しない。複数のヒープストレージユニットを採用するため、任意の1つのヒープストレージユニットによる読み取りおよび書き込み過程が他のヒープストレージユニットに影響を及ぼさない。したがって、異なるヒープストレージユニットをアクセスする複数のヒープ調整ユニットが並行してソートすることができ、ソート効率を向上させた。
【0032】
ソートする過程で、前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、データを取得し、取得したデータおよびアクセスした前記少なくとも2つのヒープストレージユニットの中の少なくとも1つのヒープストレージユニット内のデータをソートすることができる。
【0033】
本発明の実施例のヒープストレージユニットの構成によると、ヒープ構築、ヒープ調整、および、ヒープ出しの過程で、入力データを、ヒープ頂からヒープ入りし、また、上から下に調整することができる。以下、理解を容易にするために、各ヒープストレージユニットがヒープの1層のノードの中のすべてのノードのデータを記憶し、各ヒープ調整ユニットによってアクセスされたヒープストレージユニットがヒープの隣接する2層のノードのデータを記憶する例をとって、本発明の実施例の解決策を説明する。ヒープ調整ユニットiが第iヒープストレージユニットおよび第i+1ヒープストレージユニットをアクセスし、iが正の整数であると仮定する。他の状況でのソート方法は、前記の状況と類似であり、ここでは繰り返して説明しない。本実施例において、ヒープ内の隣接する2層のノードのデータの調整操作を1つのヒープ調整ユニットにカプセル化して実行し、ceil(logk)個のヒープ調整ユニットを利用してヒープ調整パイプラインを構成する。ここで、ceilは、切り上げ操作を表し、kは、取得する必要がある順序データの合計であり、つまり、上記top kソートの問題中のkである。
【0034】
ソートするときに、まずヒープ調整ユニット1に元のデータd1を入力し、ヒープ調整ユニット1により、元のデータd1および第1ヒープストレージユニットと第2ヒープストレージユニットの中の少なくとも1つのヒープストレージユニットの前の記憶のデータをソートし、ソート結果に基づいてヒープ調整ユニット2にデータd1’を出力し、ここでd1’は、元のデータd1であってもよいし、第2ヒープストレージユニット内の1つのデータであってもよい。同様に、データd1’を元のデータとしてヒープ調整ユニット2に入力し、ヒープ調整ユニット2により、データd1’および第2ヒープストレージユニットと第3ヒープストレージユニットの中の少なくとも1つのヒープストレージユニットのデータをソートし、ソート結果に基づいてヒープ調整ユニット3にデータd1’’を出力し、以下も同様である。
【0035】
ヒープが最小ヒープであり、かつヒープ内のデータがいっぱいの場合、ヒープ調整ユニット1は、まず元のデータd1とルートノードP11の2つのサブノードのデータとを比較し、ここで最小のデータ(ルートノードの左サブノードP21のデータであると仮定する)をルートノードに対応するヒープストレージユニットに書き込む。次に、ヒープ調整ユニット2は、ヒープ調整ユニット2の元のデータとして元のデータd1と、ノードP21の2つのサブノードのデータと、を比較し、ここで最小のデータ(ノードP21の左サブノードP31のデータであると仮定する)をノードP21に対応するヒープストレージユニットに書き込み、以下も同様である。
【0036】
さらに、ヒープが最小ヒープであり、かつヒープ内のデータがいっぱいの場合、ヒープ調整ユニット1は、まず元のデータd1とルートノードP11の2つのサブノードのデータとを比較し、d1がルートノードP11の2つのサブノードのデータ未満であると、さらに、d1とルートノードP11のデータとを比較する。d1がルートノードP11のデータ以下であると、直接d1を廃棄し、d1がルートノードP11のデータよりも大きいと、d1を第1ヒープストレージユニットに記憶し、後続にヒープ調整ユニットによって起動する必要がない。このような場合には、ヒープ調整ユニット1は、第1ヒープストレージユニットのデータを読み取ることができる。
【0037】
ヒープが最大のヒープであり、かつヒープ内のデータがいっぱいの場合、ヒープ調整ユニット1は、まず元のデータd1とルートノードP11の2つのサブノードのデータとを比較し、ここで一番大きいデータ(ルートノードの左サブノードP21のデータであると仮定する)をルートノードに対応するヒープストレージユニットに書き込む。次に、ヒープ調整ユニット2は、ヒープ調整ユニット2の元のデータとして元のデータd1と、ノードP21の2つのサブノードのデータと、を比較し、ここで一番大きいデータ(ノードP21の左サブノードP31のデータであると仮定する)をノードP21に対応するヒープストレージユニットに書き込み、以下も同様である。
【0038】
いくつかの実施例において、前記ヒープの同じノードの各々のサブノードのデータは、同じヒープストレージユニットの同じアドレスに記憶されている。たとえば、データビット長がnであると、ノードの左サブノードのデータを対応する記憶アドレスの下位nビットに記憶し、同じノードの右サブノードのデータを対応する記憶アドレスの上位nビットに記憶することができる。このような場合には、ヒープストレージユニットのビット幅は、データビット長の2倍である。図3Bに示すように、ノードP11のデータがヒープストレージユニットmem1に記憶され、ノードP11の2つのサブノード(すなわち、P21およびP22)のデータがヒープストレージユニットmem2の同じアドレスに記憶され、ノードP21の2つのサブノード(すなわち、P31およびP32)のデータがヒープストレージユニットmem3の同じアドレス(たとえばmem3の第1行)に記憶され、ノードP22の2つのサブノード(すなわち、P33およびP34)のデータがヒープストレージユニットmem3のもう一アドレス(たとえばmem3の第2行)に記憶される。同じノードの各々のサブノードのデータを同じ記憶アドレスに記憶することによって、1つのクロックサイクル内で同じ記憶ユニットの同じ記憶アドレスから同じノードの各々のサブノードのデータを読み取ることができるため、データ読み取り回数を減らし、データ処理効率を向上させる。
【0039】
いくつかの実施例において、前記装置は、データ記憶装置から取得した元のデータに対して前スクリーニング処理を実行するための前処理ユニットをさらに備え得る。前スクリーニング処理を通じたデータは、後続のヒープ調整ユニットに入力される。前記前スクリーニング処理とは、元のデータからヒープ入りする必要がないデータを除外する処理を指す。前スクリーニング処理を実行することによって、データヒープ入りする回数を減らすことができるため、データ処理効率を向上させる。入力データ量が大きいほど、前スクリーニング処理の利点がより明白になり、特に、上記のtop kデータソートのシナリオで、利点がより大きい。
【0040】
ここで、前記データ記憶装置は、本発明によって提供される装置の外部に位置するメモリであり得、当該外部メモリは本発明のデータ処理装置に接続される。本発明は、外部メモリのタイプを限定しなく、たとえば、RAM(Random Access Memory)、SDRAM(Synchronous Dynamic RAM)、DDR(Double Data Rate)SDRAMなどの揮発性メモリであってもよいし、ハードディスク、モバイルハードディスク、磁気ディスクなどの不揮発性メモリであってもよい。
【0041】
オプションとして、前記前処理ユニットは、前記ヒープストレージユニットに記憶されたデータが所定の数量に達した場合、新たに取得した前記元のデータに対して前スクリーニング処理を実行することができる。オプションとして、前記ヒープストレージユニットに記憶されたデータが所定の数量に達していない場合、前記前処理ユニットは、直接前記元のデータを前記複数のヒープ調整ユニットに出力することができる。前記所定の数量は、ヒープストレージユニットが記憶可能なデータの合計と等しいことができ、つまり、複数のヒープストレージユニットがいっぱいの場合にこそ、新たに取得した元のデータに対して前スクリーニング処理を実行する。いくつかの実施例において、元のデータの数に基づいてアクティブ化するヒープストレージユニットの数を確定し、すでにアクティブ化されたヒープストレージユニットがいっぱいの場合にこそ、新たに取得した元のデータに対して前スクリーニング処理を実行する。たとえば、元のデータの数がすべてのヒープストレージユニットの記憶可能なデータの合計未満である場合、一部のヒープストレージユニットをアクティブ化することによって、アクティブ化されたヒープストレージユニットの記憶可能なデータの合計が元のデータの数と等しくなるようにする。また、たとえば、元のデータの数がすべてのヒープストレージユニットの記憶可能なデータの合計以上である場合、すべてのヒープストレージユニットをアクティブ化することができる。
【0042】
いくつかの実施例において、前記前処理ユニットは、取得した元のデータと前記ヒープのルートノードのデータとを比較して、元のデータに対して前スクリーニング処理を実行することによって、前記元のデータをヒープ入りする必要があるか否かを事前に判定することができる。
【0043】
たとえば、前記ヒープが最小ヒープである場合、ヒープのルートノードのデータが他の任意のノードのデータ以下である。特定の元のデータがヒープのルートノードのデータ未満である場合、当該元のデータも必すヒープの他の任意のノードのデータ未満であるため、ヒープ調整ユニットを通じて当該元のデータをソートする必要がない。特定の元のデータがヒープのルートノードのデータよりも大きい場合にこそ、ヒープ調整ユニットを通じて当該元のデータをソートする必要がある。したがって、取得した元のデータがヒープのルートノードのデータ以下である場合、当該元のデータをヒープ入りする必要がないと判定し、そうではない場合、当該元のデータをヒープ入りする必要があると判定する。同様に、前記ヒープが最大ヒープである場合、取得した元のデータがヒープのルートノードのデータ以上である場合、当該元のデータをヒープ入りする必要がないと判定し、そうではない場合、当該元のデータをヒープ入りする必要があると判定する。
【0044】
適用シナリオが元のデータ中のtop k個の最大データを確定することである場合、最小ヒープを採用してデータ処理効率を効果的に向上させることができる。同様に、適用シナリオが元のデータ中のtop k個の最小データを確定することである場合、最大ヒープを採用してデータ処理効率を効果的に向上させることができる。
【0045】
いくつかの実施例において、前記前処理ユニットの数は、複数であり得、複数の前記前処理ユニットを採用して取得した元のデータに対して前スクリーニング処理を並行して実行することができる。前スクリーニング処理を実行することによって、元のデータの中の一部のデータをヒープ入りする必要がなくなる。top kソートのシナリオで、特に、元のデータの数とk値との差値がより大きい場合、かなりの部分のデータをヒープ入りする必要がない。したがって、複数の前処理ユニットを採用して前スクリーニング処理を並行して実行することによって、前スクリーニング効率を効果的に向上させ、ヒープ調整ユニットが長時間待機状態になるのを回避することができる。
【0046】
オプションとして、元のデータをヒープ入りする必要があると判定された場合、前記前処理ユニットは、前記元のデータを第1キャッシュユニットまたはヒープ調整ユニットに伝送することができる。ヒープ入りする必要がある元のデータに対して、まず前記元のデータを第1キャッシュユニットに伝送してから、第1キャッシュユニット内の元のデータを前記複数のヒープ調整ユニットに順に出力してソートを実行することができる。または、前記前処理ユニットによりヒープ入りする必要がある元のデータを直接前記複数のヒープ調整ユニットに順に出力してソートを実行することができる。
【0047】
オプションとして、前記元のデータをヒープ入りする必要がないと判定された場合、前記前処理ユニットは、前記元のデータを削除することができる。オプションとして、前記前処理ユニットにより、さらに、ヒープ入りする必要がない元のデータを前記データ記憶装置に返し、また、前記ヒープ調整ユニットにより、ソート過程で絞り出された元のデータを前記データ記憶装置に返すことによって、ヒープストレージユニットにより出力する順序データを量に対する制限がなくなり、データ処理装置の汎用性を向上させることができる。ここで、ヒープ入りする必要がないデータを削除することによって、ストレージスペースを節約することができる。今回のソートで選択されなかったデータを前記データ記憶装置に返すことによって、後続の処理過程で、前記データ記憶装置に返した元のデータを再度使用することができる。たとえば、前記複数のヒープ調整ユニットは、前記複数のヒープストレージユニット内のデータのソートがいずれも完了された場合、前記データ記憶装置に返したデータを再ソートすることができる。データ処理装置のハードウェアパラメータが確定された後に、1回にソートして出力する順序データ量がヒープ容量によって制限され、たとえば、ヒープの層数、ヒープ調整ユニットの数、ヒープストレージユニットの大きさなどの影響を受けて、十分の数の順序データを出力することができない可能性がある。本発明の実施例によって提供される装置は、ソート過程で選択されなかった元のデータ(たとえばヒープ入りされなかった元のデータおよびヒープ入りした後で絞り出された元のデータ)をデータ記憶装置に再び書き込むことを支援することによって、複数回のソートを実行して、データ処理装置の汎用性を向上させることができる。
【0048】
いくつかの実施例において、ヒープ入りされたデータに対して1回目のソートを実行し、1回目のソートを実行した後に、1回目のソートで選択されなかったデータに対して次回のソートを実行することができる。さらに、2回目のソートにおいて、1回目のソート方法に従って同様な処理を実行し、前スクリーニング処理も再度実行する。このような方法によって、特定の停止条件を満たすまで、複数回のソートを実行することができる。当該停止条件は、ソート待ちの元のデータに対するすべてのソートが完了されたことを含む。当該停止条件は、すでにソートしたデータの数が要求される数量に達したことも含む。複数回のソートによって、ヒープ容量がより小さなデータ処理装置を利用して数がより多い元のデータをソートすることができ、ヒープ容量が足りないことによるソート失敗を回避し、データ処理装置の適用範囲を改善した。2回目のおよび2回目の以後のソート過程は、1回目のソート過程と同じであり、ここでは繰り返して説明しない。
【0049】
いくつかの実施例において、データ記憶装置の容量が限られる場合、元のデータをバッチでデータ記憶装置に書き込み、各バッチにデータ記憶装置に書き込んだデータに対して、それぞれ、前スクリーニング処理およびソート処理を実行することによって、容量がより小さなデータ記憶装置を利用して数がより多いデータをソートすることができ、データ記憶装置の容量が足りないことによるソート失敗を回避した。
【0050】
いくつかの実施例において、前記データ処理装置は、データ記憶装置から取得した元のデータをキャッシュするための第2キャッシュユニットをさらに備え、前記第2キャッシュユニットは、キャッシュ後の元のデータを前記複数のヒープ調整ユニットに送信し、前記複数のヒープ調整ユニットは、前記第2キャッシュユニットから取得した元のデータおよび前記複数のヒープストレージユニット内のデータをソートする。オプションとして、前記第2キャッシュユニットは、一度にデータ記憶装置から1つまたは複数の元のデータを取得し、取得した元のデータをキャッシュすることができる。オプションとして、前記第1キャッシュユニットは、一度に前処理ユニットから1つまたは複数の元のデータを取得し、取得した元のデータをキャッシュすることができる。前記第1キャッシュユニットおよび前記第2キャッシュユニットは、FIFO(First In First Out、先入れ先出し)キャッシュユニットであり得る。
【0051】
図4は、本発明のもういくつかの実施例のデータ処理装置を示す模式図である。ここで、当該例において、データ処理装置が、n+1個のヒープストレージユニット201、n個のヒープ調整ユニット202、1個の第1キャッシュユニット203、および、4個の前処理ユニット204を含むと仮定する。ここで、各ヒープストレージユニットは、ヒープの1層のノードのデータを記憶し、ヒープ調整ユニットiは、i番目のヒープストレージユニットおよびi+1番目のヒープストレージユニットをアクセスする。top kのデータソートタスクを実行するときに、データ経路が以下であると仮定する。
【0052】
(1)元のデータが並行して(4つを並行すると仮定する)4個の前処理ユニット204を通過し、ヒープ内のデータの数がk個に達さないと、当該元のデータが直接第1キャッシュユニット203に入り、ヒープ内のデータの数がk個に達すると、各前処理ユニットにより入力された各々の元のデータをそれぞれ現在ヒープ頂(すなわち、ヒープのルートノード)に位置するデータと比較し、ヒープが最小ヒープである場合、ヒープ頂より大きい元のデータを第1キャッシュユニット203に出力し、ヒープ頂以下であるデータを、第1出力端を介して外部のデータ記憶装置(図示せず)に再び書き込むことによって、複数回のソートを実行するようにする。
【0053】
(2)ヒープ調整ユニット1により、第1キャッシュユニット203からデータを取得する。複数のヒープ調整ユニットは、並行してヒープ調整を実行し、ヒープ内のデータを最小ヒープに調整し、第2出力端を介してヒープから絞り出されたデータをデータ記憶装置に再び書き込むことによって、複数回のソートを実行するようにし、すべての元のデータのヒープ入りが完了するまでに、前記過程を繰り返す。
【0054】
本例の装置が実行する命令は、以下のとおりである。
【0055】
(1)初期化命令を実行して、n+1個のヒープストレージユニット201内のフラグビットを初期化する。
【0056】
(2)ヒープ入り命令を実行して、並行前スクリーニング過程および並行ヒープ調整過程を通じて、k個の元のデータを選択して最小ヒープを構成し、ここで、複数のヒープ入り命令を採用することができる。
【0057】
(3)ヒープ出し命令を実行して、並行ヒープ調整を通じてヒープに数値が一番大きいデータを入力し、ヒープ内のk個の有効なデータを、第2出力端を介して順に置換し、置換されたk個のデータが必要なtop kデータである。
【0058】
いくつかの実施例において、各ヒープストレージユニットは、フラグビットを含み得、フラグビットは、前記ヒープストレージユニット内の対応する位置のデータが有効であるか否かを指示する。図3Bに示すように、ヒープストレージユニットmem1は、ノードP11のデータのフラグビットを含み、図面におけるflg1の黒の四角に示すように、ヒープストレージユニットmem2は、ノードP21およびノードP22のデータのフラグビットを含み、図面におけるflg2、P21のフラグビットは黒の四角で表し、P22のフラグビットは灰色の四角で表し、以下も同様である。1つの記憶ユニットにN個のデータを記憶できる場合、当該記憶ユニットは、N個のフラグビットを含み得る。ヒープストレージユニット内のデータが有効であることは、前記データがソートする必要があるデータであることを表し、ヒープストレージユニット内のデータが無効であることは、前記データがソートする必要がないデータであることを表す。いくつかの実施例において、前記ヒープストレージユニット内のデータが有効である場合、前記フラグビットは、第1数値である。前記ヒープストレージユニット内のデータが無効である場合、前記フラグビットは、第2数値である。たとえば、前記第1数値は、「1」であり得、前記第2数値は、「0」であり得る。
【0059】
一般的なヒープソート方法は、各々のヒープストレージユニット内のデータを初期化し、また、ヒープの深さが増加につれて、初期化の時間も増加される。本発明の実施例は、フラグビットを採用して、ヒープストレージユニットにデータを書き込む前に、前記ヒープストレージユニット内の各々のフラグビットに対して初期化処理を実行することによって、データに対して初期化処理を実行する必要がなくなる。フラグビットのビット長が元のデータのビット長(たとえば、フラグビットは1bitである)未満であるため、いくつかの例において、1個のクロックサイクルのみを利用してすべてのヒープストレージユニットのフラグビットに対する初期化を実行することができ、フラグビット初期化処理を実行する時間がヒープストレージユニット内のデータに対して初期化する時間未満であるため、データ処理効率を向上させた。前記ヒープストレージユニットに1つの有効なデータを書き込むたびに、書き込んだ有効なデータのフラグビットを更新することができ、つまり、当該フラグビットを無効から有効に設定することができるため、データのフラグビットのみに基づいてヒープストレージユニット内のデータが有効なデータであるか否かを確定することができる。
【0060】
フラグビットを設定する場合、前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、さらに、第1ヒープストレージユニットのフラグビットが、対応する位置のデータがいずれも有効なデータであると指示する場合、当該ヒープ調整ユニットに入力する元のデータおよび前記有効なデータをソートし、前記第1ヒープストレージユニット内のフラグビットが、対応する位置のデータが任意の無効データを含むと指示する場合、当該ヒープ調整ユニットに入力した元のデータを無効データ対応する位置に書き込む。ここで、第1ヒープストレージユニットは、当該ヒープ調整ユニットによってアクセスされた少なくとも2つのヒープストレージユニット内のルートノードに接近するヒープストレージユニットである。
【0061】
いくつかの実施例において、当該ヒープ調整ユニットによってアクセスされたヒープストレージユニット内の複数の無効データである場合、左から右への順序に従って、前記ヒープ調整ユニットに入力されたデータを左側の無効データに対応する位置に書き込む。
【0062】
つまり、有効なデータのみがソートに参加し、無効データは対応するヒープ調整ユニットに入力された元のデータによって直接置換される。このような方法によって、元のデータのヒープ入り過程が実装され、無効データの有効データのソート過程に対する影響を回避することができる。
【0063】
前記複数のヒープストレージユニット内のデータに対するソートが完了された後に、ヒープストレージユニット内のデータをヒープ出しする必要がある。本発明の実施例のデータのヒープ出し過程は、データヒープ入り過程の処理の方法と類似であり、いずれも前記複数のヒープ調整ユニットに1つのデータを入力してから、前記複数のヒープ調整ユニットによって入力されたデータおよびヒープストレージユニット内に記憶されたデータをソートすることができる。
【0064】
具体的に言えば、ヒープ出し過程で、前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、少なくとも2つのヒープストレージユニットをアクセスし、取得した指定されたデータおよび前記少なくとも2つのヒープストレージユニットに記憶されたデータをソートすることによって、前記少なくとも2つのヒープストレージユニットに記憶されたデータをヒープ出しすることができる。ヒープ出し過程は、ソート過程と類似であり、いずれも並行して実行する。ヒープ出し過程において、一度に前記複数のヒープストレージユニットに1つの指定されたデータを入力し、最小ヒープの適用シナリオにおいて、前記指定されたデータの数値は前記複数のヒープストレージユニットに記憶された各々のデータよりも大きいことができる。たとえば、前記指定されたデータは、数値が+∞であるデータであり得る。いわゆる+∞のデータは、元のデータのデータフォーマットの最大値であり得、たとえば、16ビットの浮動小数点数の場合、7c0016は、+∞を表すことができる。最大ヒープの適用シナリオにおいて、前記指定されたデータの数値は、前記複数のヒープストレージユニットに記憶された各々のデータ未満であり得る。たとえば、前記指定されたデータは、数値が-∞であるデータであり得る。いわゆる-∞のデータは、元のデータのデータフォーマットの最小値であり得、たとえば、16ビットの浮動小数点数の場合、fc0016は、-∞を表すことができる。指定されたデータを入力した後に、ヒープのルートノードのデータをヒープ出ししてから、前記複数のヒープ調整ユニットにより前記指定されたデータおよびヒープストレージユニット内の他のデータを並行してソートすることができる。
【0065】
このようにすると、データヒープ入り、データソート、および、データヒープ出しのような3つの過程を、同じ流れで実現することによって、データの並行処理に役立つようにすることができる。
【0066】
前記初期化、ヒープ入り、および、ヒープ出しの過程は、それぞれ異なる命令を利用して制御することができる。従来のヒープソートの解決策において、ソート過程の全体を1つの命令を採用して完了するため、パラメータが固定された後に、データ処理装置の汎用性が低下する。本発明の実施例において、1回のソートが、初期化、ヒープ入り、ヒープ出しのような3つの過程に分割され、それぞれ3つの命令に対応され、1回のソート中に複数のヒープ入り命令(元のデータを複数回に分けて入力することができる)があるため、データ記憶装置による元のデータの数の制限をなくすだけでなく、ヒープ調整ユニットと前処理ユニットとを並行して運行でき、使用が比較的に柔軟になる。前記初期化、ヒープ入り、および、ヒープ出しの過程の命令は、上位コントローラーによって前記データ処理装置のヒープ制御ユニットに送信し、前記ヒープ制御ユニットの制御によって実装されることができる。
【0067】
いくつかの実施例において、前記装置は、初期化命令を受信した場合、前記複数のヒープストレージユニットが同じクロックサイクル内で初期化を実行するように制御することと、ヒープ入り命令を受信した場合、データ記憶装置から元のデータを読み取り、読み取った前記元のデータを前記複数のヒープ調整ユニットに伝送することによって、前記複数のヒープ調整ユニットが前記元のデータおよび複数のヒープストレージユニット内のデータをソートするようにすることと、およびヒープ出し命令を受信した場合、前記複数のヒープ調整ユニットが特定の順序に従って前記複数のヒープストレージユニット内のデータをヒープ頂から出力するように制御することと、の中の少なくとも1つを実行するためのヒープ制御ユニットをさらに備える。
【0068】
具体的に言えば、前記ヒープ制御ユニットは、初期化命令を受信した場合、初期化信号をヒープストレージユニットに送信して、ヒープストレージユニット内の各々のフラグビットを初期化することができる。前記ヒープ制御ユニットは、ヒープ入り命令を受信した場合、データ記憶装置から元のデータを読み取り、前記元のデータを前処理ユニットに出力し、前処理ユニットによって前記元のデータが前スクリーニング処理を必要とするか否かを判断することができる。必要であれば、前記前処理ユニットは、ヒープ入りする必要がない元のデータを直接削除するかまたは前記データ記憶装置に返して、ヒープ入りする必要があるデータを第1キャッシュユニットに出力し、前スクリーニング処理を実行する必要がないと、直接元のデータを第1キャッシュユニットに出力する。ヒープ調整ユニットは、第1キャッシュユニット内の元のデータを受信し、すべてのソートする必要がある元のデータに対する処理が完了されるまでに、元のデータの大きさに基づいてヒープストレージユニット内のデータを段階的に調整する。
【0069】
前記ヒープ制御ユニットは、ヒープ出し命令を受信した場合、指定されたデータをヒープ調整ユニットに出力し、ヒープ調整ユニットは、前記指定されたデータを受信し、ヒープストレージユニット内のデータを段階的に調整し、各指定されたデータがヒープ入りされた後に、ヒープストレージユニットからいずれも1つのデータが(すなわちヒープのルートノードのデータ)ヒープから絞り出され、前記ヒープ制御ユニットは、当該絞り出されたデータをデータ処理装置のデータ出力端に順に出力する。
【0070】
図5Aから5Fは、本発明の実施例のソート過程中のノードデータ変化を示す模式図である。本実施例は、最小ヒープの例をとって説明し、最大ヒープのソート過程は最小ヒープと類似であるため、ここでは繰り返して説明しない。ヒープの深さが6であり、すなわち、ヒープに6層のノードが含まれると仮定すると、各層のノードの中の各々のノードのデータは1つの独立したヒープストレージユニット内に記憶され、同じノードの各々のサブノードのデータは同じヒープストレージユニットの同じアドレス中に記憶され、第i層のノードに対応するヒープストレージユニットはヒープストレージユニットiであり、ヒープストレージユニットiとヒープストレージユニットi+1をアクセスするヒープ調整ユニットはヒープ調整ユニットiであり、第i層の各々のノードをPijとして標記し、1≦j≦2i-1であり、iは正の整数である。
【0071】
初期時点t0のヒープが5Aにしめしたとおりであると仮定する。t1時点で、図5Bに示すように、元のデータ「70」がヒープ入りされ、ノードP11のデータ「8」が前記ヒープストレージユニット1から絞り出され、ヒープ調整ユニット1によってヒープストレージユニット2からノードP21のデータとノードP22のデータを読み取って比較し、ヒープ調整ユニット1によってノードP21のデータをノードP11に対応するヒープストレージユニット1に書き込み、元のデータを「70」をヒープ調整ユニット2に出力する。
【0072】
t2時点で、図5Cに示すように、ヒープ調整ユニット2によってヒープストレージユニット3からノードP31のデータとノードP32のデータを読み取って比較し、ヒープ調整ユニット2によってノードP31のデータをノードP21に対応するヒープストレージユニット2に書き込み、元のデータを「70」をヒープ調整ユニット3に出力する。
【0073】
t3時点で、図5Dに示すように、ヒープ調整ユニット3によってヒープストレージユニット4からノードP41のデータおよびノードP42のデータを読み取る同時に、元のデータ「75」がヒープ入りされ、ノードP11のデータ「12」が前記ヒープストレージユニット1から絞り出され、ヒープ調整ユニット1によってヒープストレージユニット2からノードP21のデータおよびノードP22のデータを読み取る。
【0074】
t4時点で、図5Eに示すように、ヒープ調整ユニット3によってノードP41のデータをノードP31に対応するヒープストレージユニット3に書き込み、元のデータ「70」をヒープ調整ユニット4に出力し、ヒープ調整ユニット4によってヒープストレージユニット5からノードP51のデータおよびノードP52のデータを読み取る同時に、ヒープ調整ユニット1によってノードP22のデータをノードP11に対応するヒープストレージユニット1に書き込み、元のデータ「75」をヒープ調整ユニット2に出力し、ヒープ調整ユニット2によってヒープストレージユニット3からノードP31のデータおよびノードP32のデータを読み取り、ヒープ調整ユニット4によってノードP51のデータをノードP41に対応するヒープストレージユニット3に書き込み、元のデータ「70」をヒープ調整ユニット5に出力する。
【0075】
t5時点で、図5Fに示すように、ヒープ調整ユニット5によってヒープストレージユニット6からノードP61のデータおよびノードP62のデータを読み取る同時に、ヒープ調整ユニット2によってノードP34のデータをノードP22に対応するヒープストレージユニット2に書き込み、元のデータ「75」をヒープ調整ユニット3に出力し、ヒープ調整ユニット3によってヒープストレージユニット4からノードP47のデータおよびノードP48のデータを読み取る同時に、元のデータ「80」をヒープ入りする。
【0076】
ここで、いくつかの例において、ヒープ調整ユニットの調整が2つのサイクルを必要とするため、t1とt2の開始時点の間に少なくとも2つのサイクルがあり、t2とt3の開始時点の間に少なくとも2つのサイクルがある。
【0077】
上記からわかるように、t3時点から始めて、2個のヒープ調整ユニットが同時に作業している。同様に、t5時点から始めて、3個のヒープ調整ユニットが同時に作業しており、t7時点から始めて、3個のヒープ調整ユニットが同時に作業しており、以下も同様である。非並行ソート方法での各時点で1つのヒープ調整ユニットのみが運行されることと比較して、本発明の実施例の並行ヒープソート方法は、ソート時間を原の1/3に短縮することができる。ヒープの深さが深いほど、同時に作業するヒープ調整ユニットの数も多くなり、つまり並行度が高くなり、短縮する時間も多くなる。
【0078】
図6は、ヒープの深さが8であるときのデータフロー過程を示す模式図である。ここで、d1、d2などは、入力された元のデータを表し、t1、t2などは、時間を表し、adj1、adj2などは、ヒープ調整ユニットを表す。ここで分かるように、本発明の実施例は、ヒープソート過程で、ヒープ構築、ヒープ調整のような2つの過程を統一されたヒープ調整過程に合併し、ヒープの隣接する2層のノードのデータは1つのヒープ調整ユニットによって調整され、複数のヒープ調整ユニットは配列を構成し、入力データフローは各々のヒープ調整ユニットを通過し、異なる時点で複数のヒープ調整ユニットは並行して実行することができる。また、t6時点から始めて、最大の並行度に達し、すなわち4に達する。たとえば、t7時点で、ヒープ調整ユニット1、ヒープ調整ユニット3、ヒープ調整ユニット5、および、ヒープ調整ユニット7は、同時に作業する。次のレベルのヒープ調整ユニットによって前のレベルのヒープ調整ユニットに必要なヒープストレージユニットに記憶されたデータを変更する可能性があり、データ読み取りと書き込みの競合を回避するために、隣接する2つの元のデータのヒープ入り時間は1レベルで区切る必要があり、すなわちm番目の元のデータ自身またはm番目の元のデータによってヒープストレージユニットから置換されるデータがadj3によってソートされるときにこそ、m+1番目の元のデータがadj1によってソートされることができることを説明すべきである。
【0079】
本発明の実施例のデータ処理装置の各々のユニットは、FPGA(Field Programmable Gate Array、フィールドプログラマブルゲートアレイ)、PLD(programmable logic device、プログラマブルロジックデバイス)、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)コントローラー、マイクロコントローラー、マイクロプロセッサ、または、他の電子部品によって実装されることができる。
【0080】
本発明によって提供されるデータ処理装置は、並行ヒープソートを実装して、データ処理効率を向上させた。いくつかの実施例において、ヒープストレージユニット内のデータを初期化する必要がなく、フラグビットのみを初期化する必要があるため、初期化効率を向上させた。いくつかの実施例において、前スクリーニング処理を実行して、元のデータをヒープ入りする回数を減らして、データ処理効率をさらに向上させた。いくつかの実施例において、複数回のソートを実行することができ、データ記憶装置中の元のデータに対する複数回のソートを支援し、さらに元のデータをバッチでデータ記憶装置に書き込んだ後にヒープストレージユニット内の同じバッチのデータとソートすることを支援するため、ソート過程がヒープストレージユニットおよびデータ記憶装置の大きさに限られないので、汎用性がより良い。
【0081】
同様に、本発明の実施例は、集積回路をさらに提供し、前記集積回路は、任意の実施例に記載のデータ処理装置を含む。
【0082】
いくつかの実施例において、前記集積回路は、前記複数のヒープストレージユニットが初期化を実行するように指示するための初期化命令と、前記複数のヒープ調整ユニットが、元のデータを取得し、前記元のデータおよび前記複数のヒープストレージユニットに記憶されたデータをソートするように指示するためのヒープ入り命令と、および前記複数のヒープ調整ユニットが、特定の順序に従って前記複数のヒープストレージユニットに記憶されたデータを出力するように指示するためのヒープ出し命令と、の中の少なくとも1つの命令を、前記データ処理装置に送信するためのコントローラーをさらに備える。
【0083】
ここで、前記初期化命令、前記ヒープ入り命令、および、前記ヒープ出し命令は、互いに異なる命令であり得る。本発明の実施例において、1回のソートは、初期化、ヒープ入り、ヒープ出しのような3つの過程に分割され、それぞれ3つの命令に対応され、1回のソート中には複数のヒープ入り命令(元のデータは複数回に分けて入力することができる)があるため、データ記憶装置による元のデータの数の制限をなくすだけでなく、ヒープ調整ユニットと前処理ユニットとを並行して運行でき、使用が比較的に柔軟になる。1つの例において、前記初期化、ヒープ入り、および、ヒープ出しの過程の命令は、集積回路のコントローラーによって前記データ処理装置のヒープ制御ユニットに送信し、前記ヒープ制御ユニットの制御によって実装されることができる。
【0084】
同様に、本発明の実施例は、AI(Artificial Intelligence、人工知能)アクセラレータをさらに提供し、前記AIアクセラレータは、任意の実施例に記載の集積回路を含む。
【0085】
当業者は、具体的な実施形態の前記方法において、各ステップの書き込み順序は、厳密な実行順序を意味するのではなく、実施過程に対する制限を構成しないし、各ステップの具体的な実行順序はその機能および可能の内部ロジックによって決定されることを理解できる。
【0086】
当業者は、明細書を検討し、また、ここに開示した発明を実施した後に、本発明の他の実施形態を容易に考えることができる。本発明は、本発明の任意の変形、用途、または適応的変更をカバーすることを意図しており、これら変形、用途、または適応的変更は、本発明の一般原則に従い、本発明の技術分野における常識または従来の技術的手段を含む。明細書および実施例は、例示的なものとしてのみ見なされるべきであり、本発明の真の範囲および精神は、以下の特許請求の範囲によって指摘される。
【0087】
本発明は、上記に説明され、図面に示された正確な構造に限定されず、その範囲から逸脱することなく、様々な修正および変更を行うことができることを理解されたい。本発明の範囲は、添付の特許請求の範囲によってのみ制限される。
【0088】
上記は、本発明のより好ましい実施例に過ぎず、并不用以限定本発明、本開示の精神および原則の範囲内で行われた修正、同等の置き換え、改善などは、本発明の保護の範囲に含まれるものとする。
【0089】
上記の各々の実施例の説明は、各々の実施例間の相違を強調する傾向があり、同じまたは類似な部分は互いに参照することができ、簡素化のために、本明細書は繰り返して説明しない。
図1A
図1B
図2
図3A
図3B
図4
図5A
図5B
図5C
図5D
図5E
図5F
図6
【手続補正書】
【提出日】2021-09-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
データ処理装置であって、
それぞれ、ヒープの1組のノードのデータを記憶するための、複数のヒープストレージユニットと、
それぞれ、少なくとも2つのヒープストレージユニットをアクセスして、入力された元のデータおよび前記少なくとも2つのヒープストレージユニットに記憶されたデータをソートするための、複数のヒープ調整ユニットと、を備え、
前記1組のノードは、前記ヒープの同じ層のノードの中の少なくとも一部のノードを含む
ことを特徴とするデータ処理装置。
【請求項2】
各ヒープ調整ユニットによってアクセスされた前記少なくとも2つのヒープストレージユニットは、前記ヒープの隣接層のノードのデータを記憶し、および/または、
前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、前記入力された元のデータを取得し、前記取得した元のデータおよびアクセスした前記少なくとも2つのヒープストレージユニットの中の少なくとも1つのヒープストレージユニット内のデータをソートする
ことを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記複数のヒープ調整ユニットの中2つの隣接するヒープ調整ユニットによってそれぞれアクセスされた2つのヒープストレージユニットは、1つの同じヒープストレージユニットを含み、および/または、
前記複数のヒープ調整ユニットの中の少なくとも2つのヒープ調整ユニットは、並行してソートを実行し、前記少なくとも2つのヒープ調整ユニットによってアクセスされたヒープストレージユニットは、互いに異なる
ことを特徴とする請求項1または2に記載のデータ処理装置。
【請求項4】
隣接する2つのデータのヒープ入りタイミングの間には、2つのヒープストレージユニットの処理サイクルがある
ことを特徴とする請求項1~3のいずれか1項に記載のデータ処理装置。
【請求項5】
前記ヒープの同じノードの各々のサブノードのデータは、同じヒープストレージユニットの同じアドレスに記憶されている
ことを特徴とする請求項1~4のいずれか1項に記載のデータ処理装置。
【請求項6】
データ記憶装置から取得した元のデータに対して前スクリーニング処理を実行するための前処理ユニットをさらに備え、
前スクリーニング処理を通じたデータは、前記複数のヒープ調整ユニットに入力される
ことを特徴とする請求項1~5のいずれか1項に記載のデータ処理装置。
【請求項7】
前記前処理ユニットは、前記ヒープストレージユニットに記憶されたデータが所定の数量に達した場合、新たに取得した前記元のデータに対して前記前スクリーニング処理を実行する
ことを特徴とする請求項6に記載のデータ処理装置。
【請求項8】
前記前処理ユニットは、前記元のデータと前記ヒープのルートノードのデータとを比較して、前記元のデータに対して前記前スクリーニング処理を実行することによって、前記元のデータをヒープ入りする必要があるか否かを事前に判定する
ことを特徴とする請求項6または7に記載のデータ処理装置。
【請求項9】
前記前処理ユニットの数は、複数であり、複数の前記前処理ユニットは、並行して取得した前記元のデータに対して前記前スクリーニング処理を実行する
ことを特徴とする請求項6~8のいずれか1項に記載のデータ処理装置。
【請求項10】
前記前処理ユニットは、
前記元のデータをヒープ入りする必要があると判定された場合、前記元のデータをキャッシュユニットまたは前記複数のヒープ調整ユニットに伝送し、また、
前記元のデータをヒープ入りする必要がないと判定された場合、前記元のデータを削除するかまたは前記データ記憶装置に返す
ことを特徴とする請求項6~9のいずれか1項に記載のデータ処理装置。
【請求項11】
前記複数のヒープ調整ユニットは、さらに、
ソート過程で絞り出された元のデータを前記データ記憶装置に返し、
前記複数のヒープストレージユニット内のデータのソートがいずれも完了された場合、前記データ記憶装置に返した元のデータを再ソートする
ことを特徴とする請求項10に記載のデータ処理装置。
【請求項12】
前記前処理ユニットから取得した前記前スクリーニング処理を通じた元のデータをキャッシュするための第1キャッシュユニットをさらに備え、
前記複数のヒープ調整ユニットは、前記第1キャッシュユニットから取得した元のデータおよび前記複数のヒープストレージユニット内のデータをソートする
ことを特徴とする請求項6~11のいずれか1項に記載のデータ処理装置。
【請求項13】
データ記憶装置から取得した元のデータをキャッシュするための第2キャッシュユニットをさらに備え、
前記複数のヒープ調整ユニットは、前記第2キャッシュユニットから取得した元のデータおよび前記複数のヒープストレージユニット内のデータをソートする
ことを特徴とする請求項1~5のいずれか1項に記載のデータ処理装置。
【請求項14】
前記ヒープストレージユニットは、いずれもフラグビットを含み、
前記フラグビットは、前記ヒープストレージユニット内の対応する位置のデータが有効であるか否かを指示する
ことを特徴とする請求項1~13のいずれか1項に記載のデータ処理装置。
【請求項15】
前記ヒープストレージユニットは、さらに、
前記ヒープストレージユニット内の各々のフラグビットに対して初期化処理を実行し、および/または、
1つのフラグビットの対応する位置に有効なにデータを書き込んだことが確定された場合、当該フラグビットを更新する
ことを特徴とする請求項14に記載のデータ処理装置。
【請求項16】
前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、さらに、
当該ヒープ調整ユニットによってアクセスされた第1ヒープストレージユニットのフラグビットが、対応する位置のデータがいずれも有効なにデータであると指示する場合、当該ヒープ調整ユニットに入力した元のデータおよび前記有効なにデータをソートし、
ここで、前記第1ヒープストレージユニットは、当該ヒープ調整ユニットによってアクセスされた前記少なくとも2つのヒープストレージユニット内のルートノードに接近するヒープストレージユニットであり、また、
前記第1ヒープストレージユニットのフラグビットが、対応する位置のデータが任意の無効データを含むと指示する場合、当該ヒープ調整ユニットに入力した前記元のデータを前記無効データに対応する位置に書き込む
ことを特徴とする請求項14または15に記載のデータ処理装置。
【請求項17】
前記複数のヒープ調整ユニットの中の各ヒープ調整ユニットは、
少なくとも2つのヒープストレージユニットの中の少なくとも1つのヒープストレージユニットに記憶されたデータを読み取り、
当該ヒープ調整ユニットに入力する元のデータと前記読み取ったデータをソートし、また、
ソートの要件に従って、前記ソート結果中のより大きいまたはより小さいデータを前記少なくとも2つのヒープストレージユニットの中のもう1つのヒープストレージユニットに書き込み、
ここで、前記もう1つのヒープストレージユニットと前記少なくとも1つのヒープストレージユニットは、同じヒープストレージユニットではない
ことを特徴とする請求項1~16のいずれか1項に記載のデータ処理装置。
【請求項18】
ヒープ制御ユニットをさらに備え、
前記ヒープ制御ユニットは、
初期化命令を受信した場合、前記複数のヒープストレージユニットが同じクロックサイクル内で初期化を実行するように制御することと、
ヒープ入り命令を受信した場合、データ記憶装置から元のデータを読み取り、読み取った前記元のデータを前記複数のヒープ調整ユニットに伝送することによって、前記複数のヒープ調整ユニッがト前記元のデータおよび複数のヒープストレージユニット内のデータをソートするようにすることと、
ヒープ出し命令を受信した場合、前記複数のヒープ調整ユニットが特定の順序に従って前記複数のヒープストレージユニット内のデータをヒープ頂から出力するように制御することと、の中の少なくとも1つを実行する
ことを特徴とする請求項1~17のいずれか1項に記載のデータ処理装置。
【請求項19】
集積回路であって、
前記集積回路は、請求項1~18のいずれか1項に記載のデータ処理装置を含み、
前記集積回路は、コントローラーをさらに備え、
前記コントローラーは、
前記複数のヒープストレージユニットが初期化を実行するように指示するための初期化命令と、
前記複数のヒープ調整ユニットが、元のデータを取得し、前記元のデータおよび前記複数のヒープストレージユニットに記憶されたデータをソートするように指示するためのヒープ入り命令と、
前記複数のヒープ調整ユニットが、特定の順序に従って前記複数のヒープストレージユニットに記憶されたデータを出力するように指示するためのヒープ出し命令と、の中の少なくとも1つの命令を、前記データ処理装置に送信する
ことを特徴とする集積回路。
【請求項20】
人工知能(AI)アクセラレータであって、
前記AIアクセラレータは、請求項19記載の集積回路を含む
ことを特徴とするAIアクセラレータ。
【国際調査報告】