(57)【要約】      （修正有）【課題】コマンド実行方法及び装置を提供する。【解決手段】方法は、コマンドキューを取得することと、所定順でコマンドキューから送信待ちコマンドを取得し、送信を実行することであって、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信するステップと、特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、送信ステップを継続して実行するステップとを含む。【選択図】図２
2020027616.tif 000002
【特許請求の範囲】
【請求項１】
コマンドキューを取得することと、
所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行することであり、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信することと、
特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行することと
を含むコマンド実行方法。
【請求項２】
前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を判定することを更に含む請求項１に記載のコマンド実行方法。
【請求項３】
前記送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、
送信待ちコマンドに関連付けられたコマンド実行済みを示す信号を受信した後に、次の送信待ちコマンドを取得することは、
前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新することと、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定することと、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得することと
を含む請求項２に記載のコマンド実行方法。
【請求項４】
前記コマンドキューは、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
データ依存があると判定されたことに応答して、依存する演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築される、請求項１に記載のコマンド実行方法。
【請求項５】
前記コマンドキューは、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築される、請求項１に記載のコマンド実行方法。
【請求項６】
コマンドキューを取得するように構成されるコマンドキュー取得モジュールと、
所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行するように配置されるコマンド送信モジュールであって、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する、コマンド送信モジュールと、
特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行するように構成される送信待ちコマンド取得モジュールと
を備えるコマンド実行装置。
【請求項７】
前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を判定するように構成される判定モジュールを更に備える、請求項６に記載のコマンド実行装置。
【請求項８】
前記送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、
前記送信待ちコマンド取得モジュールは、更に、
前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新し、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定し、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得するように構成される、請求項７に記載のコマンド実行装置。
【請求項９】
前記コマンドキューを、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと
を実行することにより構築する、請求項６に記載のコマンド実行装置。
【請求項１０】
前記コマンドキューを、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築する、請求項６に記載のコマンド実行装置。
【請求項１１】
コンピュータプログラムが記憶されているコンピュータが読取可能な媒体であって、
前記コンピュータプログラムが実行コンポーネントにより実行されると、請求項１ないし５のいずれか１項に記載のコマンド実行方法を実行させるコンピュータが読取可能な媒体。
【請求項１２】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置と、
を備える電子デバイスであって、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサにより実行されると、前記一つ又は複数のプロセッサに請求項１ないし５のいずれか１項に記載のコマンド実行方法を実現させる電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の実施形態は、コンピュータ技術分野に関し、具体的にはコマンド実行方法及び装置に関する。
【背景技術】
【０００２】
近年、人工知能技術の出現及び発展に伴い、ディープラーニングに代表されるモデルアルゴリズム、及びビッグデータに代表されるデータ処理アルゴリズムは、例えば、音声認識、画像認識、自然言語処理などの各分野に広く応用されている。
【０００３】
一般的に、ディープラーニングモデルには、例えば、行列演算、コンボリューション、プーリング、アクティベーション、標準化のような大量の演算集中型の演算子が存在している。データプロセッサにも、例えば、データ検索、データフィルタリング、データ接続、データソートのような大量の演算集中型の演算子が同様に存在している。これらの演算は非常に時間がかかり、従来のＣＰＵ（Central Processing Unit、中央処理ユニット）の演算能力は要求を満たすことが困難であるため、ヘテロジニアスコンピューティングが主流になっている。更に、このために、ＧＰＵ（Graphics Processing Unit、グラフィックスプロセッサ）、ＡＳＩＣ（Application Specific Integrated Circuits、専用集積回路）のような各種のディープラーニング専用プロセッサ、ビッグデータ専用プロセッサが開発されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術において、一般的に専用プロセッサに複数の単一の実行コンポーネントが設置される。例えば、ディープラーニング専用プロセッサにおいて、行列演算を行う実行コンポーネント、画像コンボリューション演算を行う実行コンポーネントを設置し、ビッグデータ専用プロセッサにおいて、データフィルタリングを行う実行コンポーネント、データソートを行う実行コンポーネントを設置する。各々の単一の実行コンポーネントは、コマンドキューから実行する必要があるコマンドを取得する必要がある。
【０００５】
本願の実施形態は、コマンド実行方法及び装置を提供する。
【課題を解決するための手段】
【０００６】
第一の局面として、本願の実施形態はコマンド実行方法を提供する。当該方法は、コマンドキューを取得することと、所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行することであって、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信することと、特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行することと、を含む。
【０００７】
幾つかの実施形態において、当該方法は、前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を判定するステップを更に含む。
【０００８】
幾つかの実施形態において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号を受信した後に、次の送信待ちコマンドを取得することは、前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新することと、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定することと、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得することとを含む。
【０００９】
幾つかの実施形態において、コマンドキューは、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築される。
【００１０】
幾つかの実施形態において、コマンドキューは、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築される。
【００１１】
第二の局面として、本願の実施形態はコマンド実行装置を提供する。当該装置は、コマンドキューを取得するように構成されるコマンドキュー取得モジュールと、所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行するように配置されるコマンド送信モジュールであって、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する、コマンド送信モジュールと、特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行するように構成される送信待ちコマンド取得モジュールと、を備える。
【００１２】
幾つかの実施形態において、コマンド実行装置は、前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を判定するように構成される判定モジュールを更に備える。
【００１３】
幾つかの実施形態において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、前記送信待ちコマンド取得モジュールは、更に、前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新し、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定し、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得するように構成される。
【００１４】
幾つかの実施形態において、コマンドキューを、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築する。
【００１５】
幾つかの実施形態において、コマンドキューを、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築する。
【００１６】
第三の局面として、本願の実施形態は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置と、を備える電子デバイスであって、一つ又は複数のプログラムが一つ又は複数のプロセッサにより実行されると、一つ又は複数のプロセッサに第一の局面における任意の実施形態に記載の方法を実現させる電子デバイスを提供する。
【００１７】
第四の局面として、本願の実施形態は、コンピュータプログラムが記憶されているコンピュータが読取可能な媒体であって、当該プログラムがプロセッサにより実行されると、第一の局面における任意の実施形態に記載の方法を実現するコンピュータが読取可能な媒体を提供する。
【発明の効果】
【００１８】
本願の実施形態により提供されたコマンド実行方法及び装置は、コマンドキューを受信した後に、所定順でコマンドキューから送信待ちコマンドを取得し、送信待ちコマンドのタイプを判定し、送信待ちコマンドが演算系コマンドであると判定された場合に、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを判定することにより、判定された実行コンポーネントに送信待ちコマンドを送信することができる。そして、送信待ちコマンドがブロッキング系コマンドであると判定された場合に、次の送信待ちコマンドの取得を中止し、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得することができる。これにより、コマンドキューにおけるコマンドにデータ依存がある場合に、現在コマンドが依存しているコマンド実行が終了した後に現在コマンドを実行し、コマンド実行の信頼性を向上することができる。更に、データ依存があるコマンドを同じコマンドキューに設置することにより、コマンドキューの数を低減し、コマンドキューに占用されるメモリの容量を低減することができる。また、送信待ちコマンドがブロッキング系コマンドではないと判定された場合に、コマンドを当該コマンドに対応する実行コンポーネントに送信して実行可能であるため、実行コンポーネントセットにおける実行コンポーネントの利用率を向上し、更にコマンドの実行効率を向上することができる。
【図面の簡単な説明】
【００１９】
以下の図面を参照してなされた制限的でない実施形態に対する詳細的な説明により、本出願の他の特徴、目的及び利点はより明らかになる。
【図１】本願の一実施例による適用可能な例示的なアーキテクチャである。
【図２】本願のコマンド実行方法による一実施例のフローチャートである。
【図３】本願のコマンド実行方法による一適用場面の模式図である。
【図４】本願のコマンド実行方法による他の実施例のフローチャートである。
【図５】本願のコマンド実行装置による一実施例の構成の模式図である。
【図６】本願の電子デバイスの一実施例によるコンピュータシステムの構成の模式図である。
【発明を実施するための形態】
【００２０】
以下、図面及び実施例を参照しながら本出願をより詳細に説明する。ここで説明する具体的な実施例は、関連の発明を説明するものに過ぎず、当該発明を限定するものではないことを理解すべきである。更に、説明の便宜上、図面には発明に関連する部分のみが示されている。
【００２１】
なお、矛盾のない場合、本願の実施例及び実施例における特徴を相互に組み合せてもよい。以下、図面及び実施例を参照しながら本出願を詳細に説明する。
【００２２】
図１は、本願のコマンド実行方法又はコマンド実行装置を適用可能な実施例の例示的なシステムアーキテクチャ１００を示す。
【００２３】
図１に示すように、システムアーキテクチャ１００は、コマンドスケジューリングユニット１１と、実行コンポーネント１２と、バス１３とを備えることができる。バス１３は、コマンドスケジューリングユニット１１と実行コンポーネント１２との間に通信リンクの媒体を提供するためのものであり、例えば、ＰＣＩＥ（peripheral component interconnect express、ペリフェラル・コンポーネント・インターコネクト・イクスプレス）バスなどである。ここで、システムアーキテクチャ１００は、人工知能チップに適用されても良く、コンピュータに適用されても良い。
【００２４】
人工知能チップは、ＡＩアクセラレータ又は計算カードとも呼ばれ、人工知能アプリケーションにおける大量の演算集中型の演算タスクを専門的に処理するためのものである。システムアーキテクチャ１００が人工知能チップに適用される場合には、コマンドスケジューリングユニット１１は、コマンドを記憶するためのコマンドメモリ、データを記憶するためのデータメモリ及び他のプログラマブルデバイスなどを含むことができる。実行コンポーネント１２は、汎用実行コンポーネントと、専用実行コンポーネントなどとを含んでよい。汎用実行コンポーネントは、プログラマブル汎用コンピューティンググラフィックプロセッサなどを含み、専用実行コンポーネントは、シングルデータプロセッサ、平面データプロセッサ、チャンネルデータプロセッサ、専用メモリ、データ再構成エンジンなどの少なくとも一つを含む。例えば、上記人工知能チップがディープラーニング専用プロセッサである場合に、上記各実行コンポーネントに、行列演算を行うデータ処理装置、画像コンボリューション演算を行うデータ処理装置などを含むことができる。
【００２５】
システムアーキテクチャ１００がコンピュータに適用される場合には、コマンドスケジューリングユニット１１にメモリ、中央プロセッサなどを含んでもよく、実行コンポーネント１２にプログラマブル汎用コンピューティンググラフィックプロセッサのようなプログラマブルデバイスを含んでもよい。
【００２６】
コマンドスケジューリングユニット１１は、バス１３を介して実行コンポーネント１２とやりとりを行ってメッセージを送受信することができる。コマンドスケジューリングユニット１１は、コマンドキュー内のコマンドを実行コンポーネント１２に送信し、実行コンポーネント１２から返信されるコマンド実行済みの信号を受信する。
【００２７】
なお、本願の実施例により提供されるコマンド実行方法は、一般的にコマンドスケジューリングユニット１１により実行される。それに応じて、コマンド実行装置は一般的にスケジューリングユニット１１に設けられる。
【００２８】
図１におけるコマンド実行ユニット、バス及び実行コンポーネントの数は単なる例示に過ぎないことが理解されるべきである。必要に応じて、任意の好適な数のコマンド実行ユニット、バス及び実行コンポーネントを有することができる。
【００２９】
続いて図２を参照する。図２は、本願のコマンド実行方法による一実施例のフロー２００を示す。当該コマンド実行方法は、以下のステップを含むことができる。
【００３０】
ステップ２０１において、コマンドキューを取得する。
【００３１】
本実施例において、コマンド実行方法の実行主体（例えば、図１に示されるコマンドスケジューリングユニット１１）は、コマンドキューを取得することができる。ここでは、当該コマンドキューには、各種のコマンドが格納されている。具体的に、当該コマンドキューにおけるコマンドに操作コマンドを含むことができる。ここで、操作コマンドは、例えば、行列演算コマンド、ベクトル演算コマンドなどの、人工知能チップの専用実行コンポーネントが実行可能なコマンドとすることもできる。上記コマンドキューは、中央プロセッサが受信した外部からのタスク取得要求中のタスクに基づいて生成されても良く、予め人工知能チップに記憶されていてもよい。したがって、上記実行主体は、中央プロセッサと通信接続して中央プロセッサからコマンドキューを取得してもよく、人工知能チップから直接にコマンドキューを取得してもよい。上記コマンドキューは、一般的にはコマンドの実行順番でソートされる。例えば、上記実行主体にコマンドキューキャッシュを設け、上記コマンドキューをコマンドキューキャッシュに記憶してよい。当該コマンドキューキャッシュは、一般的に「先入れ先出し」という原則を実行する。すなわち、先にコマンドキューキャッシュに格納されるコマンドは優先して実行される。
【００３２】
ステップ２０２において、所定順でコマンドキューから送信待ちコマンドを取得し、以下の送信ステップを実行する。
【００３３】
ステップ２０１１において、送信待ちコマンドのタイプを特定する。
【００３４】
本実施例において、上記実行主体は、取得したコマンドキューに基づいて、所定順（例えば先入れ先出し順）で上記コマンドキューから送信待ちコマンドを取得する。ここで、上記実行主体は、コマンドキューから逐一で送信待ちコマンドを取得することができる。一つのコマンドが取得された後に、まず送信待ちコマンドのタイプを特定することができる。ここで、送信待ちコマンドのタイプは、演算系コマンドとブロッキング系コマンドを含むことができる。具体的には、演算系コマンドは操作を指示するためのものである。例えば、データフィルタリングの操作、データ集約の操作、画像コンボリューションの演算操作、全接続演算操作などを指示するものである。一般的に、演算系コマンドは、演算タイプによって、複数種の異なる演算系コマンド（例えばコンボリューション演算系コマンド、全接続演算系コマンドなど）に分類されてもよい。同一の演算系コマンドは同一の実行コンポーネントにより実行可能である。一般的に、同一のコマンドキューに格納されるコマンド同士が連携して同一のタスクを完成することができる。このように、同一の実行コンポーネントにより同一タイプの演算系コマンドを実行することにより、コマンドの実行速度を向上し、更にタスクの処理効率を向上することができる。
【００３５】
ステップ２０１２において、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する。
【００３６】
本実施例において、上記実行主体は、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定することができる。具体的には、上記コマンドキューにおけるコマンド毎にコマンド標識を有しても良い。当該コマンド標識は、コマンドの演算タイプを標識するために用いることができる。例えば、コマンドにより生成されたデータメッセージのヘッダーをコマンド標識とすることができる。コマンド標識と、コマンド標識に該当するコマンドを実行する実行コンポーネントとの対応関係テーブルを上記実行主体に記憶しておいてもよい。従って、上記実行主体は、送信待ちコマンドを取得した後に、上記対応関係テーブルから、実行コンポーネントセットにおける送信待ちコマンドを実行する実行コンポーネントを検索し、その後、特定された実行コンポーネントに送信待ちコマンドを送信して、特定された実行コンポーネントに送信待ちコマンドを実行させることができる。
【００３７】
ステップ２０３において、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号を受信した後に、次の送信待ちコマンドを取得し、送信ステップを継続して実行する。
【００３８】
本実施例において、上記実行主体は、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答する際に、具体的にどのコマンドの実行終了を待ってからコマンドキューから次のコマンドを継続して取得する必要があるかを判定することができる。ここで、送信待ちコマンドに関連付けられたコマンドは、実行終了を待つ必要があるコマンドである。ここで、実行終了を待つ必要があるコマンドのコマンド標識とブロッキング系コマンドを関連付けてもよい。上記実行主体は、受信されたコマンド実行済みのコマンド標識と送信待ちコマンドに関連付けられたコマンド標識とをマッチングすることができる。マッチングに成功した場合に、送信待ちコマンドに関連付けられたコマンドが実行済みであると判定することができる。これにより、上記実行主体は、次の送信待ちコマンドを取得してから、送信ステップを継続して実行することができる。
【００３９】
選択可能な実現方式として、コマンドキューは以下のステップにより構築可能である。
【００４０】
まず、上記実行主体は、タスク情報を受信することができる。ここで、タスク情報は、人工知能チップ又はコンピュータが受信した外部からのタスクであってもよい。具体的には、人工知能チップがコンボリューションニューラルネットワークモデルである場合に、当該タスクは、画像を入力することにより画像分類結果を取得するタスクであってもよく、文字を入力することにより語義結果を取得するタスクなどであってもよい。当該タスク情報は、タスクを記述する情報、例えばテキスト情報、画像情報、プロセス情報などであってもよい。当該タスクを記述する情報は、例えばコンボリューション演算、全接続演算、プーリング演算などを含んでもよい。
【００４１】
一般的に、上記実行主体には、タスク情報を機械語に転換するプロトコル又は標準（例えばＣ言語、ＪＡＶＡ（登録商標）言語など）が予め設定されても良い。これにより、上記実行主体は、タスク情報を受信した後に、タスク情報から少なくとも二つの演算系コマンドを抽出可能である。
【００４２】
そして、上記実行主体は、コマンドの実行順で、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、その後に、追加ステップを実行することができる。当該追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否か、即ち追加待ちコマンドのオペランドに既にコマンドキューに追加された一つ又は複数の演算系コマンドの演算結果が必要であるか否かを判定する。追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存がないと判定されたことに応答する場合に、追加待ちコマンドをコマンドキューに追加することができる。
【００４３】
追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があると判定されたことに応答する場合に、依存する少なくとも一つの演算系コマンドに関連付けられたブロッキング系コマンドを生成することができる。つまり、依存する少なくとも一つの演算系コマンドのコマンド標識とブロッキング系コマンドとを関連付けることにより、当該ブロッキング系コマンドによりブロッキングされるいずれか一つ又は複数のコマンドを具体的に指摘することができる。そして、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、継続して少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、継続して追加ステップを実行する。
【００４４】
他の実現方式として、コマンドキューは更に以下のステップにより構築可能である。
【００４５】
まず、前記実行主体はタスク情報を受信することができる。
【００４６】
次に、タスク情報から少なくとも二つの演算系コマンドを抽出する。
【００４７】
そして、コマンドの実行順で、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定する追加ステップを実行する。具体的に、実行コンポーネントセットにおいて、同一の実行コンポーネントは同一の演算タイプのコマンドを実行可能である。一つのタスクを完成することは、演算タイプが同じ複数のコマンドが一般的に含まれるため、上記コマンドキューには、演算タイプが同じ複数のコマンドが一般的に含まれる。実行コンポーネントの実行効率を向上するために、一般的に実行コンポーネントにキャッシュを設けることができる。これにより、実行コンポーネントは、前のコマンドを実行する際に、実行待ちコマンドを実行コンポーネントにキャッシュすることができ、更に、コマンドキューにおけるコマンドの送信效率を向上し、更に異なる演算タイプを実行する実行コンポーネントの使用率を向上することができる。ところが、実行コンポーネントにキャッシュ可能なコマンドの数は一般的に制限がある。コマンドの紛失を回避するために、上記実行主体は、まず追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定するのがよい。次に、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定する。そして、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定する。ここで、１を減算する目的は、実行コンポーネントが実行しているコマンドを除去することである。最後に、上記実行主体は、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することができる。
【００４８】
最後に、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを継続して実行する。
【００４９】
続いて図３を参照する。図３は、本願のコマンド実行方法の一適用場面を示している。
【００５０】
図３に示される適用場面において、コマンドキュー３０１は「先入れ先出し」を原則とする。つまり、先にコマンドキュー３０１に追加されたコマンドは先に実行される。図３は、演算子コマンドとブロッキングコマンドのような二つのコマンドを示す。なお、演算子コマンドは演算系コマンド、ブロッキングコマンドはブロッキング系コマンドである。演算子コマンドは更に演算子１、演算子２、演算子３のような三つの演算タイプの演算系コマンドを含む。コマンドキュー３０１には、コマンド番号(通し番号)が（１）の一つの演算子１と、コマンド番号がそれぞれ（１）、（２）の二つの演算子２と、コマンド番号が（１）の一つの演算子３が含まれる。コマンド番号は、タイプ毎の演算系コマンドがコマンドキュー３０１に追加される順番を示す。コマンド番号が（１）の演算子２は先にコマンドキュー３０１に追加され、つまり先に実行される。コマンド番号が（２）の演算子２は次にコマンドキュー３０１に追加される。図３において、ブロッキングコマンドは、通し番号が（１）の演算子２をブロッキングするためのものである。つまり、コマンド番号が（１）の演算子３のオペランドには、コマンド番号が（１）の演算子２の実行結果が必要である。したがって、上記ブロッキングコマンドは、コマンド番号が（１）の演算子２のコマンドの実行が終了した後に演算子３を実行することを指示する。コマンド番号が（１）の演算子２のコマンドの実行が終了するまで、コマンドが解放されない。図３に示される実行コンポーネント３０２は、コマンドキュー内の各コマンドを実行するためのものである。なお、同一の演算タイプの演算系コマンドは、同一の実行コンポーネントにより実行可能である。なお、実行コンポーネント１は演算子１を実行し、実行コンポーネント２は演算子２を実行し、実行コンポーネント３は演算子３を実行する。
【００５１】
具体的に、Ｔ１において、演算子１が実行コンポーネント１に送信され、そしてコマンド番号が（１）の演算子２がブロッキングされることなく、直ちに実行コンポーネント２に送信される。これにより、演算子１と演算子２は同時に実行することになる。各実行コンポーネントの内部にコマンドキャッシュが存在している場合に、コマンドキューからコマンド番号が（２）の演算子２を実行コンポーネント２に継続して送信しても良い。これにより、後続のコマンドの送信がブロッキングされることが回避され、更にスケジューリングの効率を向上することができる。コマンド番号が（２）の演算子２が送信された後に、コマンドキューにより一つのブロッキングコマンドが解析されることになる。当該ブロッキングコマンドがコマンド番号が（１）の演算子２をブロッキングするコマンドであるため、コマンドキューはコマンド番号が（１）の演算子２の実行が本当に終了するのを待つ。Ｔ２において、コマンド番号が（１）の演算子２の実行が終了し、実行コンポーネント２により直ちにキャッシュにおけるコマンド番号が（２）の演算子２の実行が開始される。同時に、コマンドキューはコマンド番号が（１）の演算子２の実行済みを検知した後に、継続して演算子３を実行ユニット３に送信する。三つの実行コンポーネントがＴ２から同時に動作し、演算子１がＴ３まで実行されて終了し、その後に実行コンポーネント２と実行コンポーネント３が同時に継続して一定の時間動作し、演算子３がＴ４まで実行して終了する。
【００５２】
本願の実施例により提供されたコマンド実行方法は、コマンドキューを受信してから、所定順でコマンドキューから送信待ちコマンドを取得し、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定された場合に、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定することにより、特定された実行コンポーネントに送信待ちコマンドを送信することができ、送信待ちコマンドがブロッキング系コマンドであると特定された場合に、次の送信待ちコマンドの取得を中止し、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得することができる。これにより、コマンドキューにおけるコマンドにデータ依存がある場合に、現在のコマンドが依存したコマンドが実行された後に現在のコマンドを実行することにより、コマンド実行の信頼性を向上し、更に、データ依存があるコマンドを同一のコマンドキューに設定することにより、コマンドキューの数を低減し、コマンドキューに占用されるメモリの容量を低減することができ、更に、送信待ちコマンドがブロッキング系コマンドではないと特定された場合に、コマンドを当該コマンドに対応する実行コンポーネントに送信して実行させることにより、実行コンポーネントセットにおける実行コンポーネントの使用率を向上し、更にコマンドの実行効率を向上することができる。
【００５３】
続いて図４を参照する。図４は、本願のコマンド実行方法による他の実施例のフロー４００を示している。当該コマンド実行方法は、以下のステップを含んでもよい。
【００５４】
ステップ４０１において、コマンドキューを取得する。
【００５５】
本実施例において、コマンド実行方法の実行主体（例えば図１に示されるコマンドスケジューリングユニット１１）はコマンドキューを取得することができる。ここで、当該コマンドキューに各種のコマンドが記憶されている。具体的に、当該コマンドキューにおけるコマンドは、操作コマンドを含んでもよい。ここで、操作コマンドは、人工知能チップの専用実行コンポーネントで実行可能なコマンド、例えば、行列演算コマンド、ベクトル演算コマンドなどであってもよい。上記コマンドキューは、中央プロセッサが受信した外部からのタスク取得要求中のタスクに基づいて生成されても良く、予め人工知能チップに記憶されていても良い。したがって、上記実行主体は、中央プロセッサと通信接続して中央プロセッサからコマンドキューを取得しても良く、人工知能チップから直接にコマンドキューを取得しても良い。上記コマンドキューは、一般的にコマンド実行の順番に並んでいる。
【００５６】
ステップ４０２において、所定順でコマンドキューから送信待ちコマンドを取得して、以下の送信ステップを実行する。
【００５７】
ステップ４０２１において、送信待ちコマンドのタイプを特定する。
【００５８】
本実施例において、上記実行主体は、取得されたコマンドキューに基づいて、所定順（例えば先入れ先出し順）で上記コマンドキューから送信待ちコマンドを取得する。ここでは、上記実行主体はコマンドキューから逐一で送信待ちコマンドを取得しても良い。一つのコマンドが取得された後に、更に送信待ちコマンドのタイプを特定することができる。ここで、送信待ちコマンドのタイプは、演算系コマンドとブロッキング系コマンドとを含むことができる。
【００５９】
ステップ４０２２において、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する。
【００６０】
本実施例において、上記実行主体は、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットから送信待ちコマンドを実行する実行コンポーネントを特定することができる。具体的には、上記コマンドキューにおけるコマンド毎にコマンド標識を有してもよい。当該コマンド標識は、コマンドの演算タイプを標識するために用いることができる。コマンド標識と、コマンド標識に該当するコマンドを実行する実行コンポーネントとの対応関係テーブルを上記実行主体に記憶しておいてもよい。従って、上記実行主体は、送信待ちコマンドを取得した後に、上記対応関係テーブルから実行コンポーネントセットにおける送信待ちコマンドを実行する実行コンポーネントを検索し、その後に送信待ちコマンドを特定された実行コンポーネントに送信して、特定された実行コンポーネントに送信待ちコマンドを実行させることができる。
【００６１】
ステップ４０３において、実行コンポーネントセットにおける実行コンポーネントにより実行されたコマンドの数を判定する。
【００６２】
本実施例において、上記実行主体には、実行コンポーネントセットにおける実行コンポーネントにより実行されたコマンドの数を集計するためのカウンターを設けてもよい。ここで、実行コンポーネントによるコマンドの実行が終了するたびに、上記実行主体へコマンド実行済みの信号を送信することができる。これにより、上記実行主体は、所定の時間帯に受信された各実行主体からのコマンド実行済みの信号の数に基づいて、各実行コンポーネントに対応する実行済みのコマンドの数を判定することができる。これにより、より良好にコマンド実行状況を判定することができる。
【００６３】
ステップ４０４において、送信待ちコマンドがブロッキング系コマンドであると判定されたことに応答して、演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、目標実行コンポーネントにより実行されたコマンドの数を更新する。
【００６４】
本実施例において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれてもよい。これにより、上記実行主体は、送信待ちコマンドがブロッキングコマンドであると特定すると、送信待ちコマンドに関連付けられたコマンドが属する演算タイプを実行する実行コンポーネントを目標実行コンポーネントとすることができ、目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、目標実行コンポーネントにより実行されたコマンドの数を更新することができる。ここで、当該コマンド番号は、上記コマンドキューにおける、送信待ちコマンドに関連付けられたコマンドの属する演算タイプの通し番号であっても良い。つまり、同一のタイプの演算系コマンドにおいて、当該関連付けられたコマンドがコマンドキューにおいて何番目になるかを意味する。
【００６５】
ステップ４０５において、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であるかを判定する。
【００６６】
本実施例において、上記実行主体は更に、更新された目標実行コンポーネントにより実行されたコマンドの数が送信待ちコマンドに関連付けられたコマンドのコマンド番号以上であるかを判定してもよい。
【００６７】
ステップ４０６において、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得する。
【００６８】
本実施例において、上記実行主体は、更新された目標実行コンポーネントにより実行されたコマンドの数が送信待ちコマンドに関連付けられたコマンドのコマンド番号以上であると判定されたことに応答して、送信待ちコマンドに関連付けられたコマンドが実行済みであると判定することができる。従って、上記実行主体は、次の送信待ちコマンドを取得し、ステップ４０２〜ステップ４０６のステップを継続して実行することができる。
【００６９】
図４からわかるように、図２に対応する実施例と比べて、本実施例におけるコマンド実行方法のフロー４００は、実行主体にカウンターが設けられ、各実行コンポーネントにより実行されたコマンドの数を集計して送信待ちコマンドに関連付けられたコマンドの終了状況を判定することを特徴とし、コマンド送信の正確性をより一層向上させることができる。
【００７０】
続いて図５を参照する。図２と図４に示された方法の実現として、本願はコマンド実行装置の一実施例を提供する。当該装置実施例は、図２に示される方法の実施例に対応する。当該装置は、具体的に人工知能チップ又はコンピュータのコマンドスケジューリングユニットに適用可能である。
【００７１】
図５に示すように、本実施例のコマンド実行装置５００は、コマンドキュー取得モジュール５０１と、コマンド送信モジュール５０２と、送信待ちコマンド取得モジュール５０３とを含むことができる。なお、コマンドキュー取得モジュール５０１は、コマンドキューを取得するように構成される。コマンド送信モジュール５０２は、所定順でコマンドキューから送信待ちコマンドを取得し、送信ステップを実行するように構成され、当該送信ステップにおいて、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する。送信待ちコマンド取得モジュール５０３は、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、送信ステップを継続して実行するように構成される。
【００７２】
本実施例において、コマンド実行装置５００におけるコマンドキュー取得モジュール５０１、コマンド送信モジュール５０２、送信待ちコマンド取得モジュール５０３の具体的な処理及び有益な効果は、図２における対応実施例のステップ２０１、ステップ２０２、ステップ２０３の実現方式に関する説明を参照することができ、ここでは詳しく説明しない。
【００７３】
本実施例の幾つかの選択可能な実現方式において、コマンド実行装置５００は更に、実行コンポーネントセットにおける実行コンポーネントにより実行されたコマンドの数を集計するように構成される集計モジュール（未図示）を備える。
【００７４】
本実施例の幾つかの選択可能な実現方式において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号とが含まれる。送信待ちコマンド取得モジュール５０３は更に、演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、目標実行コンポーネントにより実行されたコマンドの数を更新し、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であるかを判定し、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得するように構成される。
【００７５】
幾つかの実施例において、コマンドキューは、タスク情報を受信するステップと、タスク情報から少なくとも二つの演算系コマンドを抽出するステップと、コマンドの実行順に従って、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行するステップであって、当該追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加する、ステップと、データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順にコマンドキューに追加し、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを継続して実行するステップと、を実行することにより構築される。
【００７６】
幾つかの実施例において、コマンドキューは、タスク情報を受信するステップと、タスク情報から少なくとも二つの演算系コマンドを抽出するステップと、コマンドの実行順に従って、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行するステップであって、当該追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加する、ステップと、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順にコマンドキューに追加し、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを継続して実行するステップと、を実行することにより構築される。
【００７７】
本願の実施例により提供されるコマンド実行装置は、まずコマンドキューを受信し、その後に所定順でコマンドキューから送信待ちコマンドを取得し、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定された場合に、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定することにより、特定された実行コンポーネントに送信待ちコマンドを送信することができ、送信待ちコマンドがブロッキング系コマンドであると特定された場合に、次の送信待ちコマンドの取得を中止し、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得することができる。これにより、コマンドキューにおけるコマンドにデータ依存がある場合に、現在コマンドの依存したコマンドが実行された後に現在コマンドを実行することにより、コマンド実行の信頼性を向上し、更に、データ依存があるコマンドを同一のコマンドキューに設定することにより、コマンドキューの数を低減し、コマンドキューに占用されるメモリの容量を低減することができる。更に、送信待ちコマンドがブロッキング系コマンドではないと特定された場合に、コマンドを当該コマンドに対応する実行コンポーネントに送信して実行させることにより、実行コンポーネントセットにおける実行コンポーネントの使用率を向上し、更にコマンドの実行効率を向上することができる。
【００７８】
本願の実施例は更に電子デバイスを提供する。当該電子デバイスの構成は、図６を参照することができる。図６は、本願の電子デバイスの一実施例のコンピュータシステム６００の概略構造を示す。図６に示される電子デバイスは、一例に過ぎず、本願の実施例の機能及び使用範囲を制限するものではない。
【００７９】
図６に示すように、コンピュータシステム６００には、一つ又は複数の中央処理ユニット（ＣＰＵ）６０１、及び一つ又は複数の人工知能チップ６１２が備えられる。ＣＰＵ６０１は、読取専用メモリ（ＲＯＭ）６０２に記憶されているプログラム、或いは記憶部６０８からランダムアクセスメモリ（ＲＡＭ）６０３にロードされたプログラムに基づいて各種の適切な動作及び処理を実行することができる。人工知能チップ６１２には、一つ又は複数のコマンドスケジューリングユニットと、一つ又は複数の実行ユニットとを備える。人工知能チップ６１２は、ＣＰＵ６０１から受信するプログラムに基づいて各種の適切な動作及び処理を実行することができる。ＲＡＭ６０３には、更にシステム６００の操作に必要な各種のプログラム及びデータが記憶される。ＣＰＵ６０１、ＲＯＭ６０２、ＲＡＭ６０３及び人工知能チップ６１２は、バス６０４を介して互いに接続される。入力／出力（Ｉ／Ｏ）インターフェース６０５もバス６０４に接続される。
【００８０】
タッチパネル、キー、マウス、マイク、カメラなどを含む入力部６０６、例えば有機発光ダイオード（ＯＬＥＤ）ディスプレー、液晶ディスプレー（ＬＣＤ）など、及びスピーカなどを含む出力部６０７、ハードディスクなどを含む記憶部６０８、及びＬＡＮカード、モデムのようなネットワークインターフェースカードを含む通信部６０９は、Ｉ／Ｏインターフェース６０５に接続される。通信部６０９は、インターネットのようなネットワークを介して通信処理を実行する。ドライバ６１０は、必要に応じてＩ／Ｏインターフェース６０５に接続される。リムーバブルメディア６１１は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ６１０に取り付けられ、したがって、ドライバ６１０から読み出されたコンピュータプログラムが必要に応じて記憶部６０８にインストールされる。
【００８１】
特に、本開示の実施例によれば、上記のフローチャートに参照して説明された過程はコンピュータソフトウェアプログラムを用いて実現されても良い。例えば、本開示の実施例はコンピュータ読取可能な媒体にロードされるコンピュータプログラムを含むコンピュータプログラム製品を備える。当該コンピュータプログラムは、フローチャートに示される方法を実行するためのプログラムコードを含む。このような実施例において、当該コンピュータプログラムは、通信部６０９を介してネットワークからダウンロードしてインストールされ、及び／又はリムーバブルメディア６１１からインストールされてもよい。当該コンピュータプログラムが人工知能チップ６１２の汎用実行コンポーネントにより実行されるときに、本願の方法で定義される上記機能が実行される。
【００８２】
なお、本願のコンピュータが読取可能な媒体は、コンピュータ読取可能な信号媒体、コンピュータ読取可能な記憶媒体、或いは上記両者の任意の組み合わせであっても良い。コンピュータ読取可能な記憶媒体は、例えば電気、磁気、光、電磁気、赤外線、半導体のシステム、装置又は部品、或いはこれらの任意の組み合わせであっても良いが、それらに限定されない。コンピュータ読取可能な記憶媒体についてのより具体的な例は、一つ又は複数の導線を含む電気的な接続、携帯可能なコンピュータ磁気ディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能なプログラミング読取専用メモリ（ＥＰＲＯＭ又はフラッシュ）、光ファイバ、携帯可能なコンパクト磁気ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、光学記憶素子、磁気記憶素子、或いは前記の任意の適当の組み合わせを含むが、それらに限定されない。本願において、コンピュータ読取可能な記憶媒体は、プログラムを含むか記憶する任意の有形の媒体であっても良い。当該プログラムは、コマンド実行システム、装置又は部品に使用され、或いはそれらに組み合わせて使用されても良い。本願において、コンピュータ読取可能な信号媒体は、ベースバンドに伝送され或いはキャリアの一部として伝送され、コンピュータ読取可能なプログラムコードがロードされるデータ信号を含んでも良い。このような伝送されるデータ信号は、各種の形式を採用しても良く、電磁気信号、光信号又は前記の任意の適当の組み合わせを含むが、それらに限定されない。コンピュータ読取可能な信号媒体は、コンピュータ読取可能な記憶媒体以外の任意のコンピュータ読取可能な媒体であっても良い。当該コンピュータ読取可能な媒体は、コマンド実行システム、装置又は部品に使用され又はそれらと組み合わせて使用されるプログラムを送信し、伝播し又は伝送することができる。コンピュータ読取可能な媒体に含まれるプログラムコードは、任意の適当の媒体で伝送されても良く、無線、電線、光ケーブル、ＲＦなど、或いは前記の任意の適当の組み合わせを含むが、それらに限定されない。
【００８３】
一つ又は複数種のプログラミング言語又はそれらの組み合わせで本出願の操作を実行するためのコンピュータプログラムコードをプログラミングすることができる。上記プログラミング言語には、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋のようなオブジェクト指向プログラミング言語が含まれ、更にＣ言語又は類似のプログラミング言語のような通常の手続き型プログラミング言語が含まれる。プログラムコードは、全体がユーザコンピュータに実行されても良く、一部がユーザコンピュータに実行されても良く、一つの独立なパッケージとして実行されても良く、一部がユーザコンピュータに実行され且つ一部がリモートコンピュータに実行されても良く、或いは全体がリモートコンピュータ又はサーバに実行されても良い。リモートコンピュータに関する場合に、リモートコンピュータはローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）を含む任意の種類のネットワークによりユーザコンピュータに接続されても良く、或いは外部のコンピュータ（例えばインターネットサービスプロバイダを利用してインターネットにより接続する）に接続されても良い。
【００８４】
図面におけるフローチャート及びブロック図は、本願の各実施例によるシステム、方法及びコンピュータプログラム製品により実現可能なシステム構造、機能及び操作を示す。この点において、フローチャート又はブロック図における各ブロックは、一つのモジュール、プログラムセグメント、又はコードの一部を表すことができる。当該モジュール、プログラムセグメント、コードの一部には、一つ又は複数の所定のロジック機能を実現するための実行可能なコマンドが含まれる。注意すべきなのは、幾つかの置換としての実現において、ブロックに示される機能は図面に示される順序と異なって発生されても良い。例えば、二つの接続的に表示されるブロックは実際に基本的に併行に実行されても良く、場合によっては逆な順序で実行されても良く、関連の機能に従って決定される。注意すべきなのは、ブロック図及び／又はフローチャートにおける各ブロック、及びブロック図及び／又はフローチャートにおけるブロックの組み合わせは、所定の機能又は操作を実行する専用のハードウェアによるシステムで実現されても良く、或いは専用のハードウェアとコンピュータコードの組み合わせで実現されても良い。
【００８５】
本願に説明された実施例に係わるモジュールは、ソフトウェアで実現されても良く、ハードウェアで実現されても良い。説明されたモジュールは、プロセッサに設置されても良く、例えば、コマンドキュー取得モジュールと、コマンド送信モジュールと、送信待ちコマンド取得モジュールとを備える汎用実行コンポーネントとして説明されても良い。なお、これらのモジュールの名称は場合によって当該モジュールの自身に対する限定とされない。例えば、コマンドキュー取得モジュールは、「コマンドキューを取得するモジュール」として説明されても良い。
【００８６】
他の局面として、本出願は更にコンピュータが読取可能な媒体を提供する。当該コンピュータ読取可能な媒体は、前記実施例に説明された電子デバイスに含まれたものであっても良く、当該電子デバイスに実装されずに別途に存在するものであっても良い。前記コンピュータ読取可能な媒体に一つ又は複数のプログラムが担持され、前記一つ又は複数のプログラムが当該電子デバイスにより実行されると、当該電子デバイスに、コマンドキューを取得し、所定順でコマンドキューから送信待ちコマンドを取得し、且つ、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する送信ステップを実行し、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、送信ステップを継続して実行する、ことを実行させる。
【００８７】
以上の記載は、本発明の好適な実施例及び運用される技術原理に対する説明に過ぎない。当業者であればわかるように、本発明にかかる発明範囲は、上記技術特徴の特定の組み合わせからなる技術案に限定されず、上記の発明構想から逸脱されない場合に上記技術特徴又は均等の特徴による任意の組み合わせで形成される他の技術案も同時に含まれるべきである。例えば上記特徴と本出願に開示された（それらに限定されない）類似の機能を具備する技術特徴が互いに置換されて得られる技術案は該当する。
【図１】
2020027616.tif 000003
【図２】
2020027616.tif 000004
【図３】
2020027616.tif 000005
【図４】
2020027616.tif 000006
【図５】
2020027616.tif 000007
【図６】
2020027616.tif 000008
【手続補正書】
【提出日】令和1年7月11日(2019.7.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コマンドキューを取得することと、
所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行することであり、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信することと、
特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行することと
を含むコマンド実行方法。
【請求項２】
前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を集計することを更に含む請求項１に記載のコマンド実行方法。
【請求項３】
前記送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、
送信待ちコマンドに関連付けられたコマンド実行済みを示す信号を受信した後に、次の送信待ちコマンドを取得することは、
前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新することと、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定することと、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得することと
を含む請求項２に記載のコマンド実行方法。
【請求項４】
前記コマンドキューは、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
データ依存があると判定されたことに応答して、依存する演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築される、請求項１に記載のコマンド実行方法。
【請求項５】
前記コマンドキューは、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築される、請求項１に記載のコマンド実行方法。
【請求項６】
コマンドキューを取得するように構成されるコマンドキュー取得モジュールと、
所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行するように配置されるコマンド送信モジュールであって、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する、コマンド送信モジュールと、
特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行するように構成される送信待ちコマンド取得モジュールと
を備えるコマンド実行装置。
【請求項７】
前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を集計するように構成される集計モジュールを更に備える、請求項６に記載のコマンド実行装置。
【請求項８】
前記送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、
前記送信待ちコマンド取得モジュールは、更に、
前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新し、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定し、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得するように構成される、請求項７に記載のコマンド実行装置。
【請求項９】
前記コマンドキューを、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと
を実行することにより構築する、請求項６に記載のコマンド実行装置。
【請求項１０】
前記コマンドキューを、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から１を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
コマンド番号から１を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築する、請求項６に記載のコマンド実行装置。
【請求項１１】
実行コンポーネントにより実行されたときに請求項１ないし５のいずれか１項に記載のコマンド実行方法を実行させるコンピュータプログラムが記憶されているコンピュータが読取可能な媒体。
【請求項１２】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置と、
を備える電子デバイスであって、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサにより実行されたときに、前記一つ又は複数のプロセッサによって請求項１ないし５のいずれか１項に記載のコマンド実行方法を実行する電子デバイス。
【請求項１３】
請求項１ないし５のいずれか１項に記載のコマンド実行方法をコンピュータに実行させるコンピュータプログラム。
【外国語明細書】
2020027616000001.pdf