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

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

▶ 北京百度网▲訊▼科技有限公司の特許一覧 ▶ クンルンシン テクノロジー (ベイジン) カンパニー リミテッドの特許一覧

<>
  • 特許-コマンド実行方法及び装置 図1
  • 特許-コマンド実行方法及び装置 図2
  • 特許-コマンド実行方法及び装置 図3
  • 特許-コマンド実行方法及び装置 図4
  • 特許-コマンド実行方法及び装置 図5
  • 特許-コマンド実行方法及び装置 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-20
(45)【発行日】2022-01-28
(54)【発明の名称】コマンド実行方法及び装置
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220121BHJP
   G06F 9/48 20060101ALI20220121BHJP
【FI】
G06F9/50 150C
G06F9/48 300C
【請求項の数】 13
【外国語出願】
(21)【出願番号】P 2019128635
(22)【出願日】2019-07-10
(65)【公開番号】P2020027616
(43)【公開日】2020-02-20
【審査請求日】2019-07-11
(31)【優先権主張番号】201810911185.X
(32)【優先日】2018-08-10
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】515002757
【氏名又は名称】北京百度网▲訊▼科技有限公司
【氏名又は名称原語表記】BEIJING BAIDU NETCOM SCIENCE AND TECHNOLOGY CO.,LTD.
【住所又は居所原語表記】2/F BAIDU CAMPUS NO.10,SHANGDI 10TH STREET,HAIDIAN DISTRICT BEIJING 100085
(74)【代理人】
【識別番号】110002675
【氏名又は名称】特許業務法人ドライト国際特許事務所
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
(72)【発明者】
【氏名】王京
(72)【発明者】
【氏名】漆▲維▼
(72)【発明者】
【氏名】李宇▲鵬▼
(72)【発明者】
【氏名】▲供▼小章
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2012-174114(JP,A)
【文献】特開平10-149285(JP,A)
【文献】特表2011-527788(JP,A)
【文献】国際公開第2008/155839(WO,A1)
【文献】特開2007-200295(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
コマンドキューを取得することと、
所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行することであり、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信することと、
特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行することと
を含み、
前記ブロッキング系コマンドは、前記コマンドキューの構築の過程中に前記コマンドキューにコマンドが追加される時、前記次の送信待ちコマンドと現在の送信待ちコマンドとの間にデータ依存があることに応答して生成されたコマンドである、コマンド実行方法。
【請求項2】
前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を集計することを更に含む請求項1に記載のコマンド実行方法。
【請求項3】
前記送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、
送信待ちコマンドに関連付けられたコマンド実行済みを示す信号を受信した後に、次の送信待ちコマンドを取得することは、
前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新することと、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定することと、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得することと
を含む請求項2に記載のコマンド実行方法。
【請求項4】
前記コマンドキューは、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
データ依存があると判定されたことに応答して、依存する演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築される、請求項1に記載のコマンド実行方法。
【請求項5】
前記コマンドキューは、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
コマンド番号から1を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築される、請求項1に記載のコマンド実行方法。
【請求項6】
コマンドキューを取得するように構成されるコマンドキュー取得モジュールと、
所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行するように配置されるコマンド送信モジュールであって、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する、コマンド送信モジュールと、
特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行するように構成される送信待ちコマンド取得モジュールと、
を備え、
前記ブロッキング系コマンドは、前記コマンドキューの構築の過程中に前記コマンドキューにコマンドが追加される時、前記次の送信待ちコマンドと現在の送信待ちコマンドとの間にデータ依存があることに応答して生成されたコマンドである、コマンド実行装置。
【請求項7】
前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を集計するように構成される集計モジュールを更に備える、請求項6に記載のコマンド実行装置。
【請求項8】
前記送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、
前記送信待ちコマンド取得モジュールは、更に、
前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新し、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定し、
更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得するように構成される、請求項7に記載のコマンド実行装置。
【請求項9】
前記コマンドキューを、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと
を実行することにより構築する、請求項6に記載のコマンド実行装置。
【請求項10】
前記コマンドキューを、
タスク情報を受信することと、
前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、
コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、
コマンド番号から1を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、
を実行することにより構築する、請求項6に記載のコマンド実行装置。
【請求項11】
実行コンポーネントにより実行されたときに請求項1ないし5のいずれか1項に記載のコマンド実行方法を実行させるコンピュータプログラムが記憶されているコンピュータが読取可能な媒体。
【請求項12】
一つ又は複数のプロセッサと、
一つ又は複数のプログラムを記憶するための記憶装置と、
を備える電子デバイスであって、
前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサにより実行されたときに、前記一つ又は複数のプロセッサによって請求項1ないし5のいずれか1項に記載のコマンド実行方法を実行する電子デバイス。
【請求項13】
請求項1ないし5のいずれか1項に記載のコマンド実行方法をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願の実施形態は、コンピュータ技術分野に関し、具体的にはコマンド実行方法及び装置に関する。
【背景技術】
【0002】
近年、人工知能技術の出現及び発展に伴い、ディープラーニングに代表されるモデルアルゴリズム、及びビッグデータに代表されるデータ処理アルゴリズムは、例えば、音声認識、画像認識、自然言語処理などの各分野に広く応用されている。
【0003】
一般的に、ディープラーニングモデルには、例えば、行列演算、コンボリューション、プーリング、アクティベーション、標準化のような大量の演算集中型の演算子が存在している。データプロセッサにも、例えば、データ検索、データフィルタリング、データ接続、データソートのような大量の演算集中型の演算子が同様に存在している。これらの演算は非常に時間がかかり、従来のCPU(Central Processing Unit、中央処理ユニット)の演算能力は要求を満たすことが困難であるため、ヘテロジニアスコンピューティングが主流になっている。更に、このために、GPU(Graphics Processing Unit、グラフィックスプロセッサ)、ASIC(Application Specific Integrated Circuits、専用集積回路)のような各種のディープラーニング専用プロセッサ、ビッグデータ専用プロセッサが開発されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来技術において、一般的に専用プロセッサに複数の単一の実行コンポーネントが設置される。例えば、ディープラーニング専用プロセッサにおいて、行列演算を行う実行コンポーネント、画像コンボリューション演算を行う実行コンポーネントを設置し、ビッグデータ専用プロセッサにおいて、データフィルタリングを行う実行コンポーネント、データソートを行う実行コンポーネントを設置する。各々の単一の実行コンポーネントは、コマンドキューから実行する必要があるコマンドを取得する必要がある。
【0005】
本願の実施形態は、コマンド実行方法及び装置を提供する。
【課題を解決するための手段】
【0006】
第一の局面として、本願の実施形態はコマンド実行方法を提供する。当該方法は、コマンドキューを取得することと、所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行することであって、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信することと、特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行することと、を含む。
【0007】
幾つかの実施形態において、当該方法は、前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を判定するステップを更に含む。
【0008】
幾つかの実施形態において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号を受信した後に、次の送信待ちコマンドを取得することは、前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新することと、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定することと、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得することとを含む。
【0009】
幾つかの実施形態において、コマンドキューは、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築される。
【0010】
幾つかの実施形態において、コマンドキューは、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築される。
【0011】
第二の局面として、本願の実施形態はコマンド実行装置を提供する。当該装置は、コマンドキューを取得するように構成されるコマンドキュー取得モジュールと、所定順で前記コマンドキューから送信待ちコマンドを取得し、送信ステップを実行するように配置されるコマンド送信モジュールであって、前記送信ステップにおいて、送信待ちコマンドのタイプを特定し、特定された送信待ちコマンドが演算系コマンドであることに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する、コマンド送信モジュールと、特定された送信待ちコマンドがブロッキング系コマンドであることに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、前記送信ステップを継続して実行するように構成される送信待ちコマンド取得モジュールと、を備える。
【0012】
幾つかの実施形態において、コマンド実行装置は、前記実行コンポーネントセットにおける実行コンポーネントによる実行済みのコマンドの数を判定するように構成される判定モジュールを更に備える。
【0013】
幾つかの実施形態において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれ、前記送信待ちコマンド取得モジュールは、更に、前記演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、前記目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、前記目標実行コンポーネントによる実行済みのコマンドの数を更新し、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であるか否かを判定し、更新された前記目標実行コンポーネントによる実行済みのコマンドの数が前記コマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得するように構成される。
【0014】
幾つかの実施形態において、コマンドキューを、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築する。
【0015】
幾つかの実施形態において、コマンドキューを、タスク情報を受信することと、前記タスク情報から少なくとも二つの演算系コマンドを抽出することと、コマンドの実行順に従って、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行することであって、前記追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することと、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、前記少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、前記追加ステップを継続して実行することと、を実行することにより構築する。
【0016】
第三の局面として、本願の実施形態は、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置と、を備える電子デバイスであって、一つ又は複数のプログラムが一つ又は複数のプロセッサにより実行されると、一つ又は複数のプロセッサに第一の局面における任意の実施形態に記載の方法を実現させる電子デバイスを提供する。
【0017】
第四の局面として、本願の実施形態は、コンピュータプログラムが記憶されているコンピュータが読取可能な媒体であって、当該プログラムがプロセッサにより実行されると、第一の局面における任意の実施形態に記載の方法を実現するコンピュータが読取可能な媒体を提供する。
【発明の効果】
【0018】
本願の実施形態により提供されたコマンド実行方法及び装置は、コマンドキューを受信した後に、所定順でコマンドキューから送信待ちコマンドを取得し、送信待ちコマンドのタイプを判定し、送信待ちコマンドが演算系コマンドであると判定された場合に、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを判定することにより、判定された実行コンポーネントに送信待ちコマンドを送信することができる。そして、送信待ちコマンドがブロッキング系コマンドであると判定された場合に、次の送信待ちコマンドの取得を中止し、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得することができる。これにより、コマンドキューにおけるコマンドにデータ依存がある場合に、現在コマンドが依存しているコマンド実行が終了した後に現在コマンドを実行し、コマンド実行の信頼性を向上することができる。更に、データ依存があるコマンドを同じコマンドキューに設置することにより、コマンドキューの数を低減し、コマンドキューに占用されるメモリの容量を低減することができる。また、送信待ちコマンドがブロッキング系コマンドではないと判定された場合に、コマンドを当該コマンドに対応する実行コンポーネントに送信して実行可能であるため、実行コンポーネントセットにおける実行コンポーネントの利用率を向上し、更にコマンドの実行効率を向上することができる。
【図面の簡単な説明】
【0019】
以下の図面を参照してなされた制限的でない実施形態に対する詳細的な説明により、本出願の他の特徴、目的及び利点はより明らかになる。
図1】本願の一実施例による適用可能な例示的なアーキテクチャである。
図2】本願のコマンド実行方法による一実施例のフローチャートである。
図3】本願のコマンド実行方法による一適用場面の模式図である。
図4】本願のコマンド実行方法による他の実施例のフローチャートである。
図5】本願のコマンド実行装置による一実施例の構成の模式図である。
図6】本願の電子デバイスの一実施例によるコンピュータシステムの構成の模式図である。
【発明を実施するための形態】
【0020】
以下、図面及び実施例を参照しながら本出願をより詳細に説明する。ここで説明する具体的な実施例は、関連の発明を説明するものに過ぎず、当該発明を限定するものではないことを理解すべきである。更に、説明の便宜上、図面には発明に関連する部分のみが示されている。
【0021】
なお、矛盾のない場合、本願の実施例及び実施例における特徴を相互に組み合せてもよい。以下、図面及び実施例を参照しながら本出願を詳細に説明する。
【0022】
図1は、本願のコマンド実行方法又はコマンド実行装置を適用可能な実施例の例示的なシステムアーキテクチャ100を示す。
【0023】
図1に示すように、システムアーキテクチャ100は、コマンドスケジューリングユニット11と、実行コンポーネント12と、バス13とを備えることができる。バス13は、コマンドスケジューリングユニット11と実行コンポーネント12との間に通信リンクの媒体を提供するためのものであり、例えば、PCIE(peripheral component interconnect express、ペリフェラル・コンポーネント・インターコネクト・イクスプレス)バスなどである。ここで、システムアーキテクチャ100は、人工知能チップに適用されても良く、コンピュータに適用されても良い。
【0024】
人工知能チップは、AIアクセラレータ又は計算カードとも呼ばれ、人工知能アプリケーションにおける大量の演算集中型の演算タスクを専門的に処理するためのものである。システムアーキテクチャ100が人工知能チップに適用される場合には、コマンドスケジューリングユニット11は、コマンドを記憶するためのコマンドメモリ、データを記憶するためのデータメモリ及び他のプログラマブルデバイスなどを含むことができる。実行コンポーネント12は、汎用実行コンポーネントと、専用実行コンポーネントなどとを含んでよい。汎用実行コンポーネントは、プログラマブル汎用コンピューティンググラフィックプロセッサなどを含み、専用実行コンポーネントは、シングルデータプロセッサ、平面データプロセッサ、チャンネルデータプロセッサ、専用メモリ、データ再構成エンジンなどの少なくとも一つを含む。例えば、上記人工知能チップがディープラーニング専用プロセッサである場合に、上記各実行コンポーネントに、行列演算を行うデータ処理装置、画像コンボリューション演算を行うデータ処理装置などを含むことができる。
【0025】
システムアーキテクチャ100がコンピュータに適用される場合には、コマンドスケジューリングユニット11にメモリ、中央プロセッサなどを含んでもよく、実行コンポーネント12にプログラマブル汎用コンピューティンググラフィックプロセッサのようなプログラマブルデバイスを含んでもよい。
【0026】
コマンドスケジューリングユニット11は、バス13を介して実行コンポーネント12とやりとりを行ってメッセージを送受信することができる。コマンドスケジューリングユニット11は、コマンドキュー内のコマンドを実行コンポーネント12に送信し、実行コンポーネント12から返信されるコマンド実行済みの信号を受信する。
【0027】
なお、本願の実施例により提供されるコマンド実行方法は、一般的にコマンドスケジューリングユニット11により実行される。それに応じて、コマンド実行装置は一般的にスケジューリングユニット11に設けられる。
【0028】
図1におけるコマンド実行ユニット、バス及び実行コンポーネントの数は単なる例示に過ぎないことが理解されるべきである。必要に応じて、任意の好適な数のコマンド実行ユニット、バス及び実行コンポーネントを有することができる。
【0029】
続いて図2を参照する。図2は、本願のコマンド実行方法による一実施例のフロー200を示す。当該コマンド実行方法は、以下のステップを含むことができる。
【0030】
ステップ201において、コマンドキューを取得する。
【0031】
本実施例において、コマンド実行方法の実行主体(例えば、図1に示されるコマンドスケジューリングユニット11)は、コマンドキューを取得することができる。ここでは、当該コマンドキューには、各種のコマンドが格納されている。具体的に、当該コマンドキューにおけるコマンドに操作コマンドを含むことができる。ここで、操作コマンドは、例えば、行列演算コマンド、ベクトル演算コマンドなどの、人工知能チップの専用実行コンポーネントが実行可能なコマンドとすることもできる。上記コマンドキューは、中央プロセッサが受信した外部からのタスク取得要求中のタスクに基づいて生成されても良く、予め人工知能チップに記憶されていてもよい。したがって、上記実行主体は、中央プロセッサと通信接続して中央プロセッサからコマンドキューを取得してもよく、人工知能チップから直接にコマンドキューを取得してもよい。上記コマンドキューは、一般的にはコマンドの実行順番でソートされる。例えば、上記実行主体にコマンドキューキャッシュを設け、上記コマンドキューをコマンドキューキャッシュに記憶してよい。当該コマンドキューキャッシュは、一般的に「先入れ先出し」という原則を実行する。すなわち、先にコマンドキューキャッシュに格納されるコマンドは優先して実行される。
【0032】
ステップ202において、所定順でコマンドキューから送信待ちコマンドを取得し、以下の送信ステップを実行する。
【0033】
ステップ2011において、送信待ちコマンドのタイプを特定する。
【0034】
本実施例において、上記実行主体は、取得したコマンドキューに基づいて、所定順(例えば先入れ先出し順)で上記コマンドキューから送信待ちコマンドを取得する。ここで、上記実行主体は、コマンドキューから逐一で送信待ちコマンドを取得することができる。一つのコマンドが取得された後に、まず送信待ちコマンドのタイプを特定することができる。ここで、送信待ちコマンドのタイプは、演算系コマンドとブロッキング系コマンドを含むことができる。具体的には、演算系コマンドは操作を指示するためのものである。例えば、データフィルタリングの操作、データ集約の操作、画像コンボリューションの演算操作、全接続演算操作などを指示するものである。一般的に、演算系コマンドは、演算タイプによって、複数種の異なる演算系コマンド(例えばコンボリューション演算系コマンド、全接続演算系コマンドなど)に分類されてもよい。同一の演算系コマンドは同一の実行コンポーネントにより実行可能である。一般的に、同一のコマンドキューに格納されるコマンド同士が連携して同一のタスクを完成することができる。このように、同一の実行コンポーネントにより同一タイプの演算系コマンドを実行することにより、コマンドの実行速度を向上し、更にタスクの処理効率を向上することができる。
【0035】
ステップ2012において、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する。
【0036】
本実施例において、上記実行主体は、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定することができる。具体的には、上記コマンドキューにおけるコマンド毎にコマンド標識を有しても良い。当該コマンド標識は、コマンドの演算タイプを標識するために用いることができる。例えば、コマンドにより生成されたデータメッセージのヘッダーをコマンド標識とすることができる。コマンド標識と、コマンド標識に該当するコマンドを実行する実行コンポーネントとの対応関係テーブルを上記実行主体に記憶しておいてもよい。従って、上記実行主体は、送信待ちコマンドを取得した後に、上記対応関係テーブルから、実行コンポーネントセットにおける送信待ちコマンドを実行する実行コンポーネントを検索し、その後、特定された実行コンポーネントに送信待ちコマンドを送信して、特定された実行コンポーネントに送信待ちコマンドを実行させることができる。
【0037】
ステップ203において、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号を受信した後に、次の送信待ちコマンドを取得し、送信ステップを継続して実行する。
【0038】
本実施例において、上記実行主体は、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答する際に、具体的にどのコマンドの実行終了を待ってからコマンドキューから次のコマンドを継続して取得する必要があるかを判定することができる。ここで、送信待ちコマンドに関連付けられたコマンドは、実行終了を待つ必要があるコマンドである。ここで、実行終了を待つ必要があるコマンドのコマンド標識とブロッキング系コマンドを関連付けてもよい。上記実行主体は、受信されたコマンド実行済みのコマンド標識と送信待ちコマンドに関連付けられたコマンド標識とをマッチングすることができる。マッチングに成功した場合に、送信待ちコマンドに関連付けられたコマンドが実行済みであると判定することができる。これにより、上記実行主体は、次の送信待ちコマンドを取得してから、送信ステップを継続して実行することができる。
【0039】
選択可能な実現方式として、コマンドキューは以下のステップにより構築可能である。
【0040】
まず、上記実行主体は、タスク情報を受信することができる。ここで、タスク情報は、人工知能チップ又はコンピュータが受信した外部からのタスクであってもよい。具体的には、人工知能チップがコンボリューションニューラルネットワークモデルである場合に、当該タスクは、画像を入力することにより画像分類結果を取得するタスクであってもよく、文字を入力することにより語義結果を取得するタスクなどであってもよい。当該タスク情報は、タスクを記述する情報、例えばテキスト情報、画像情報、プロセス情報などであってもよい。当該タスクを記述する情報は、例えばコンボリューション演算、全接続演算、プーリング演算などを含んでもよい。
【0041】
一般的に、上記実行主体には、タスク情報を機械語に転換するプロトコル又は標準(例えばC言語、JAVA(登録商標)言語など)が予め設定されても良い。これにより、上記実行主体は、タスク情報を受信した後に、タスク情報から少なくとも二つの演算系コマンドを抽出可能である。
【0042】
そして、上記実行主体は、コマンドの実行順で、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、その後に、追加ステップを実行することができる。当該追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否か、即ち追加待ちコマンドのオペランドに既にコマンドキューに追加された一つ又は複数の演算系コマンドの演算結果が必要であるか否かを判定する。追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存がないと判定されたことに応答する場合に、追加待ちコマンドをコマンドキューに追加することができる。
【0043】
追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があると判定されたことに応答する場合に、依存する少なくとも一つの演算系コマンドに関連付けられたブロッキング系コマンドを生成することができる。つまり、依存する少なくとも一つの演算系コマンドのコマンド標識とブロッキング系コマンドとを関連付けることにより、当該ブロッキング系コマンドによりブロッキングされるいずれか一つ又は複数のコマンドを具体的に指摘することができる。そして、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、継続して少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、継続して追加ステップを実行する。
【0044】
他の実現方式として、コマンドキューは更に以下のステップにより構築可能である。
【0045】
まず、前記実行主体はタスク情報を受信することができる。
【0046】
次に、タスク情報から少なくとも二つの演算系コマンドを抽出する。
【0047】
そして、コマンドの実行順で、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定する追加ステップを実行する。具体的に、実行コンポーネントセットにおいて、同一の実行コンポーネントは同一の演算タイプのコマンドを実行可能である。一つのタスクを完成することは、演算タイプが同じ複数のコマンドが一般的に含まれるため、上記コマンドキューには、演算タイプが同じ複数のコマンドが一般的に含まれる。実行コンポーネントの実行効率を向上するために、一般的に実行コンポーネントにキャッシュを設けることができる。これにより、実行コンポーネントは、前のコマンドを実行する際に、実行待ちコマンドを実行コンポーネントにキャッシュすることができ、更に、コマンドキューにおけるコマンドの送信效率を向上し、更に異なる演算タイプを実行する実行コンポーネントの使用率を向上することができる。ところが、実行コンポーネントにキャッシュ可能なコマンドの数は一般的に制限がある。コマンドの紛失を回避するために、上記実行主体は、まず追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定するのがよい。次に、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定する。そして、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定する。ここで、1を減算する目的は、実行コンポーネントが実行しているコマンドを除去することである。最後に、上記実行主体は、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加することができる。
【0048】
最後に、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順次にコマンドキューに追加し、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを継続して実行する。
【0049】
続いて図3を参照する。図3は、本願のコマンド実行方法の一適用場面を示している。
【0050】
図3に示される適用場面において、コマンドキュー301は「先入れ先出し」を原則とする。つまり、先にコマンドキュー301に追加されたコマンドは先に実行される。図3は、演算子コマンドとブロッキングコマンドのような二つのコマンドを示す。なお、演算子コマンドは演算系コマンド、ブロッキングコマンドはブロッキング系コマンドである。演算子コマンドは更に演算子1、演算子2、演算子3のような三つの演算タイプの演算系コマンドを含む。コマンドキュー301には、コマンド番号(通し番号)が(1)の一つの演算子1と、コマンド番号がそれぞれ(1)、(2)の二つの演算子2と、コマンド番号が(1)の一つの演算子3が含まれる。コマンド番号は、タイプ毎の演算系コマンドがコマンドキュー301に追加される順番を示す。コマンド番号が(1)の演算子2は先にコマンドキュー301に追加され、つまり先に実行される。コマンド番号が(2)の演算子2は次にコマンドキュー301に追加される。図3において、ブロッキングコマンドは、通し番号が(1)の演算子2をブロッキングするためのものである。つまり、コマンド番号が(1)の演算子3のオペランドには、コマンド番号が(1)の演算子2の実行結果が必要である。したがって、上記ブロッキングコマンドは、コマンド番号が(1)の演算子2のコマンドの実行が終了した後に演算子3を実行することを指示する。コマンド番号が(1)の演算子2のコマンドの実行が終了するまで、コマンドが解放されない。図3に示される実行コンポーネント302は、コマンドキュー内の各コマンドを実行するためのものである。なお、同一の演算タイプの演算系コマンドは、同一の実行コンポーネントにより実行可能である。なお、実行コンポーネント1は演算子1を実行し、実行コンポーネント2は演算子2を実行し、実行コンポーネント3は演算子3を実行する。
【0051】
具体的に、T1において、演算子1が実行コンポーネント1に送信され、そしてコマンド番号が(1)の演算子2がブロッキングされることなく、直ちに実行コンポーネント2に送信される。これにより、演算子1と演算子2は同時に実行することになる。各実行コンポーネントの内部にコマンドキャッシュが存在している場合に、コマンドキューからコマンド番号が(2)の演算子2を実行コンポーネント2に継続して送信しても良い。これにより、後続のコマンドの送信がブロッキングされることが回避され、更にスケジューリングの効率を向上することができる。コマンド番号が(2)の演算子2が送信された後に、コマンドキューにより一つのブロッキングコマンドが解析されることになる。当該ブロッキングコマンドがコマンド番号が(1)の演算子2をブロッキングするコマンドであるため、コマンドキューはコマンド番号が(1)の演算子2の実行が本当に終了するのを待つ。T2において、コマンド番号が(1)の演算子2の実行が終了し、実行コンポーネント2により直ちにキャッシュにおけるコマンド番号が(2)の演算子2の実行が開始される。同時に、コマンドキューはコマンド番号が(1)の演算子2の実行済みを検知した後に、継続して演算子3を実行ユニット3に送信する。三つの実行コンポーネントがT2から同時に動作し、演算子1がT3まで実行されて終了し、その後に実行コンポーネント2と実行コンポーネント3が同時に継続して一定の時間動作し、演算子3がT4まで実行して終了する。
【0052】
本願の実施例により提供されたコマンド実行方法は、コマンドキューを受信してから、所定順でコマンドキューから送信待ちコマンドを取得し、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定された場合に、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定することにより、特定された実行コンポーネントに送信待ちコマンドを送信することができ、送信待ちコマンドがブロッキング系コマンドであると特定された場合に、次の送信待ちコマンドの取得を中止し、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得することができる。これにより、コマンドキューにおけるコマンドにデータ依存がある場合に、現在のコマンドが依存したコマンドが実行された後に現在のコマンドを実行することにより、コマンド実行の信頼性を向上し、更に、データ依存があるコマンドを同一のコマンドキューに設定することにより、コマンドキューの数を低減し、コマンドキューに占用されるメモリの容量を低減することができ、更に、送信待ちコマンドがブロッキング系コマンドではないと特定された場合に、コマンドを当該コマンドに対応する実行コンポーネントに送信して実行させることにより、実行コンポーネントセットにおける実行コンポーネントの使用率を向上し、更にコマンドの実行効率を向上することができる。
【0053】
続いて図4を参照する。図4は、本願のコマンド実行方法による他の実施例のフロー400を示している。当該コマンド実行方法は、以下のステップを含んでもよい。
【0054】
ステップ401において、コマンドキューを取得する。
【0055】
本実施例において、コマンド実行方法の実行主体(例えば図1に示されるコマンドスケジューリングユニット11)はコマンドキューを取得することができる。ここで、当該コマンドキューに各種のコマンドが記憶されている。具体的に、当該コマンドキューにおけるコマンドは、操作コマンドを含んでもよい。ここで、操作コマンドは、人工知能チップの専用実行コンポーネントで実行可能なコマンド、例えば、行列演算コマンド、ベクトル演算コマンドなどであってもよい。上記コマンドキューは、中央プロセッサが受信した外部からのタスク取得要求中のタスクに基づいて生成されても良く、予め人工知能チップに記憶されていても良い。したがって、上記実行主体は、中央プロセッサと通信接続して中央プロセッサからコマンドキューを取得しても良く、人工知能チップから直接にコマンドキューを取得しても良い。上記コマンドキューは、一般的にコマンド実行の順番に並んでいる。
【0056】
ステップ402において、所定順でコマンドキューから送信待ちコマンドを取得して、以下の送信ステップを実行する。
【0057】
ステップ4021において、送信待ちコマンドのタイプを特定する。
【0058】
本実施例において、上記実行主体は、取得されたコマンドキューに基づいて、所定順(例えば先入れ先出し順)で上記コマンドキューから送信待ちコマンドを取得する。ここでは、上記実行主体はコマンドキューから逐一で送信待ちコマンドを取得しても良い。一つのコマンドが取得された後に、更に送信待ちコマンドのタイプを特定することができる。ここで、送信待ちコマンドのタイプは、演算系コマンドとブロッキング系コマンドとを含むことができる。
【0059】
ステップ4022において、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する。
【0060】
本実施例において、上記実行主体は、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットから送信待ちコマンドを実行する実行コンポーネントを特定することができる。具体的には、上記コマンドキューにおけるコマンド毎にコマンド標識を有してもよい。当該コマンド標識は、コマンドの演算タイプを標識するために用いることができる。コマンド標識と、コマンド標識に該当するコマンドを実行する実行コンポーネントとの対応関係テーブルを上記実行主体に記憶しておいてもよい。従って、上記実行主体は、送信待ちコマンドを取得した後に、上記対応関係テーブルから実行コンポーネントセットにおける送信待ちコマンドを実行する実行コンポーネントを検索し、その後に送信待ちコマンドを特定された実行コンポーネントに送信して、特定された実行コンポーネントに送信待ちコマンドを実行させることができる。
【0061】
ステップ403において、実行コンポーネントセットにおける実行コンポーネントにより実行されたコマンドの数を判定する。
【0062】
本実施例において、上記実行主体には、実行コンポーネントセットにおける実行コンポーネントにより実行されたコマンドの数を集計するためのカウンターを設けてもよい。ここで、実行コンポーネントによるコマンドの実行が終了するたびに、上記実行主体へコマンド実行済みの信号を送信することができる。これにより、上記実行主体は、所定の時間帯に受信された各実行主体からのコマンド実行済みの信号の数に基づいて、各実行コンポーネントに対応する実行済みのコマンドの数を判定することができる。これにより、より良好にコマンド実行状況を判定することができる。
【0063】
ステップ404において、送信待ちコマンドがブロッキング系コマンドであると判定されたことに応答して、演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、目標実行コンポーネントにより実行されたコマンドの数を更新する。
【0064】
本実施例において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号が含まれてもよい。これにより、上記実行主体は、送信待ちコマンドがブロッキングコマンドであると特定すると、送信待ちコマンドに関連付けられたコマンドが属する演算タイプを実行する実行コンポーネントを目標実行コンポーネントとすることができ、目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、目標実行コンポーネントにより実行されたコマンドの数を更新することができる。ここで、当該コマンド番号は、上記コマンドキューにおける、送信待ちコマンドに関連付けられたコマンドの属する演算タイプの通し番号であっても良い。つまり、同一のタイプの演算系コマンドにおいて、当該関連付けられたコマンドがコマンドキューにおいて何番目になるかを意味する。
【0065】
ステップ405において、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であるかを判定する。
【0066】
本実施例において、上記実行主体は更に、更新された目標実行コンポーネントにより実行されたコマンドの数が送信待ちコマンドに関連付けられたコマンドのコマンド番号以上であるかを判定してもよい。
【0067】
ステップ406において、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得する。
【0068】
本実施例において、上記実行主体は、更新された目標実行コンポーネントにより実行されたコマンドの数が送信待ちコマンドに関連付けられたコマンドのコマンド番号以上であると判定されたことに応答して、送信待ちコマンドに関連付けられたコマンドが実行済みであると判定することができる。従って、上記実行主体は、次の送信待ちコマンドを取得し、ステップ402~ステップ406のステップを継続して実行することができる。
【0069】
図4からわかるように、図2に対応する実施例と比べて、本実施例におけるコマンド実行方法のフロー400は、実行主体にカウンターが設けられ、各実行コンポーネントにより実行されたコマンドの数を集計して送信待ちコマンドに関連付けられたコマンドの終了状況を判定することを特徴とし、コマンド送信の正確性をより一層向上させることができる。
【0070】
続いて図5を参照する。図2図4に示された方法の実現として、本願はコマンド実行装置の一実施例を提供する。当該装置実施例は、図2に示される方法の実施例に対応する。当該装置は、具体的に人工知能チップ又はコンピュータのコマンドスケジューリングユニットに適用可能である。
【0071】
図5に示すように、本実施例のコマンド実行装置500は、コマンドキュー取得モジュール501と、コマンド送信モジュール502と、送信待ちコマンド取得モジュール503とを含むことができる。なお、コマンドキュー取得モジュール501は、コマンドキューを取得するように構成される。コマンド送信モジュール502は、所定順でコマンドキューから送信待ちコマンドを取得し、送信ステップを実行するように構成され、当該送信ステップにおいて、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する。送信待ちコマンド取得モジュール503は、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、送信ステップを継続して実行するように構成される。
【0072】
本実施例において、コマンド実行装置500におけるコマンドキュー取得モジュール501、コマンド送信モジュール502、送信待ちコマンド取得モジュール503の具体的な処理及び有益な効果は、図2における対応実施例のステップ201、ステップ202、ステップ203の実現方式に関する説明を参照することができ、ここでは詳しく説明しない。
【0073】
本実施例の幾つかの選択可能な実現方式において、コマンド実行装置500は更に、実行コンポーネントセットにおける実行コンポーネントにより実行されたコマンドの数を集計するように構成される集計モジュール(未図示)を備える。
【0074】
本実施例の幾つかの選択可能な実現方式において、送信待ちコマンドに関連付けられたコマンドには、コマンドの属する演算タイプとコマンド番号とが含まれる。送信待ちコマンド取得モジュール503は更に、演算タイプのコマンドを実行する実行コンポーネントを目標実行コンポーネントとし、目標実行コンポーネントから返信されるコマンド実行済みの信号が受信されたことに応答して、目標実行コンポーネントにより実行されたコマンドの数を更新し、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であるかを判定し、更新された目標実行コンポーネントにより実行されたコマンドの数がコマンド番号以上であると判定されたことに応答して、次の送信待ちコマンドを取得するように構成される。
【0075】
幾つかの実施例において、コマンドキューは、タスク情報を受信するステップと、タスク情報から少なくとも二つの演算系コマンドを抽出するステップと、コマンドの実行順に従って、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行するステップであって、当該追加ステップにおいて、追加待ちコマンドと前にコマンドキューに追加された演算系コマンドとの間にデータ依存があるか否かを判定し、データ依存がないと判定されたことに応答して、追加待ちコマンドをコマンドキューに追加する、ステップと、データ依存があると判定されたことに応答して、依存された演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンドと追加待ちコマンドを順にコマンドキューに追加し、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを継続して実行するステップと、を実行することにより構築される。
【0076】
幾つかの実施例において、コマンドキューは、タスク情報を受信するステップと、タスク情報から少なくとも二つの演算系コマンドを抽出するステップと、コマンドの実行順に従って、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを実行するステップであって、当該追加ステップにおいて、追加待ちコマンドを実行する実行コンポーネントにキャッシュ可能なコマンドの数を特定し、コマンドキューに追加された順番に従って、追加待ちコマンドの同じ演算タイプにおけるコマンド番号を決定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であるか否かを判定し、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数以下であると判定されたことに応答して、追加待ちコマンドをコマンドキューに追加する、ステップと、コマンド番号から1を減算した値がキャッシュ可能なコマンドの数よりも大きいと判定されたことに応答して、キャッシュ可能なコマンドの数に等しいコマンド番号の演算系コマンドに関連付けられたブロッキング系コマンドを生成し、生成されたブロッキング系コマンド、追加待ちコマンドを順にコマンドキューに追加し、少なくとも二つの演算系コマンドから演算系コマンドを追加待ちコマンドとして選択し、追加ステップを継続して実行するステップと、を実行することにより構築される。
【0077】
本願の実施例により提供されるコマンド実行装置は、まずコマンドキューを受信し、その後に所定順でコマンドキューから送信待ちコマンドを取得し、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定された場合に、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定することにより、特定された実行コンポーネントに送信待ちコマンドを送信することができ、送信待ちコマンドがブロッキング系コマンドであると特定された場合に、次の送信待ちコマンドの取得を中止し、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得することができる。これにより、コマンドキューにおけるコマンドにデータ依存がある場合に、現在コマンドの依存したコマンドが実行された後に現在コマンドを実行することにより、コマンド実行の信頼性を向上し、更に、データ依存があるコマンドを同一のコマンドキューに設定することにより、コマンドキューの数を低減し、コマンドキューに占用されるメモリの容量を低減することができる。更に、送信待ちコマンドがブロッキング系コマンドではないと特定された場合に、コマンドを当該コマンドに対応する実行コンポーネントに送信して実行させることにより、実行コンポーネントセットにおける実行コンポーネントの使用率を向上し、更にコマンドの実行効率を向上することができる。
【0078】
本願の実施例は更に電子デバイスを提供する。当該電子デバイスの構成は、図6を参照することができる。図6は、本願の電子デバイスの一実施例のコンピュータシステム600の概略構造を示す。図6に示される電子デバイスは、一例に過ぎず、本願の実施例の機能及び使用範囲を制限するものではない。
【0079】
図6に示すように、コンピュータシステム600には、一つ又は複数の中央処理ユニット(CPU)601、及び一つ又は複数の人工知能チップ612が備えられる。CPU601は、読取専用メモリ(ROM)602に記憶されているプログラム、或いは記憶部608からランダムアクセスメモリ(RAM)603にロードされたプログラムに基づいて各種の適切な動作及び処理を実行することができる。人工知能チップ612には、一つ又は複数のコマンドスケジューリングユニットと、一つ又は複数の実行ユニットとを備える。人工知能チップ612は、CPU601から受信するプログラムに基づいて各種の適切な動作及び処理を実行することができる。RAM603には、更にシステム600の操作に必要な各種のプログラム及びデータが記憶される。CPU601、ROM602、RAM603及び人工知能チップ612は、バス604を介して互いに接続される。入力/出力(I/O)インターフェース605もバス604に接続される。
【0080】
タッチパネル、キー、マウス、マイク、カメラなどを含む入力部606、例えば有機発光ダイオード(OLED)ディスプレー、液晶ディスプレー(LCD)など、及びスピーカなどを含む出力部607、ハードディスクなどを含む記憶部608、及びLANカード、モデムのようなネットワークインターフェースカードを含む通信部609は、I/Oインターフェース605に接続される。通信部609は、インターネットのようなネットワークを介して通信処理を実行する。ドライバ610は、必要に応じてI/Oインターフェース605に接続される。リムーバブルメディア611は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ610に取り付けられ、したがって、ドライバ610から読み出されたコンピュータプログラムが必要に応じて記憶部608にインストールされる。
【0081】
特に、本開示の実施例によれば、上記のフローチャートに参照して説明された過程はコンピュータソフトウェアプログラムを用いて実現されても良い。例えば、本開示の実施例はコンピュータ読取可能な媒体にロードされるコンピュータプログラムを含むコンピュータプログラム製品を備える。当該コンピュータプログラムは、フローチャートに示される方法を実行するためのプログラムコードを含む。このような実施例において、当該コンピュータプログラムは、通信部609を介してネットワークからダウンロードしてインストールされ、及び/又はリムーバブルメディア611からインストールされてもよい。当該コンピュータプログラムが人工知能チップ612の汎用実行コンポーネントにより実行されるときに、本願の方法で定義される上記機能が実行される。
【0082】
なお、本願のコンピュータが読取可能な媒体は、コンピュータ読取可能な信号媒体、コンピュータ読取可能な記憶媒体、或いは上記両者の任意の組み合わせであっても良い。コンピュータ読取可能な記憶媒体は、例えば電気、磁気、光、電磁気、赤外線、半導体のシステム、装置又は部品、或いはこれらの任意の組み合わせであっても良いが、それらに限定されない。コンピュータ読取可能な記憶媒体についてのより具体的な例は、一つ又は複数の導線を含む電気的な接続、携帯可能なコンピュータ磁気ディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能なプログラミング読取専用メモリ(EPROM又はフラッシュ)、光ファイバ、携帯可能なコンパクト磁気ディスク読取専用メモリ(CD-ROM)、光学記憶素子、磁気記憶素子、或いは前記の任意の適当の組み合わせを含むが、それらに限定されない。本願において、コンピュータ読取可能な記憶媒体は、プログラムを含むか記憶する任意の有形の媒体であっても良い。当該プログラムは、コマンド実行システム、装置又は部品に使用され、或いはそれらに組み合わせて使用されても良い。本願において、コンピュータ読取可能な信号媒体は、ベースバンドに伝送され或いはキャリアの一部として伝送され、コンピュータ読取可能なプログラムコードがロードされるデータ信号を含んでも良い。このような伝送されるデータ信号は、各種の形式を採用しても良く、電磁気信号、光信号又は前記の任意の適当の組み合わせを含むが、それらに限定されない。コンピュータ読取可能な信号媒体は、コンピュータ読取可能な記憶媒体以外の任意のコンピュータ読取可能な媒体であっても良い。当該コンピュータ読取可能な媒体は、コマンド実行システム、装置又は部品に使用され又はそれらと組み合わせて使用されるプログラムを送信し、伝播し又は伝送することができる。コンピュータ読取可能な媒体に含まれるプログラムコードは、任意の適当の媒体で伝送されても良く、無線、電線、光ケーブル、RFなど、或いは前記の任意の適当の組み合わせを含むが、それらに限定されない。
【0083】
一つ又は複数種のプログラミング言語又はそれらの組み合わせで本出願の操作を実行するためのコンピュータプログラムコードをプログラミングすることができる。上記プログラミング言語には、Java(登録商標)、Smalltalk、C++のようなオブジェクト指向プログラミング言語が含まれ、更にC言語又は類似のプログラミング言語のような通常の手続き型プログラミング言語が含まれる。プログラムコードは、全体がユーザコンピュータに実行されても良く、一部がユーザコンピュータに実行されても良く、一つの独立なパッケージとして実行されても良く、一部がユーザコンピュータに実行され且つ一部がリモートコンピュータに実行されても良く、或いは全体がリモートコンピュータ又はサーバに実行されても良い。リモートコンピュータに関する場合に、リモートコンピュータはローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワークによりユーザコンピュータに接続されても良く、或いは外部のコンピュータ(例えばインターネットサービスプロバイダを利用してインターネットにより接続する)に接続されても良い。
【0084】
図面におけるフローチャート及びブロック図は、本願の各実施例によるシステム、方法及びコンピュータプログラム製品により実現可能なシステム構造、機能及び操作を示す。この点において、フローチャート又はブロック図における各ブロックは、一つのモジュール、プログラムセグメント、又はコードの一部を表すことができる。当該モジュール、プログラムセグメント、コードの一部には、一つ又は複数の所定のロジック機能を実現するための実行可能なコマンドが含まれる。注意すべきなのは、幾つかの置換としての実現において、ブロックに示される機能は図面に示される順序と異なって発生されても良い。例えば、二つの接続的に表示されるブロックは実際に基本的に併行に実行されても良く、場合によっては逆な順序で実行されても良く、関連の機能に従って決定される。注意すべきなのは、ブロック図及び/又はフローチャートにおける各ブロック、及びブロック図及び/又はフローチャートにおけるブロックの組み合わせは、所定の機能又は操作を実行する専用のハードウェアによるシステムで実現されても良く、或いは専用のハードウェアとコンピュータコードの組み合わせで実現されても良い。
【0085】
本願に説明された実施例に係わるモジュールは、ソフトウェアで実現されても良く、ハードウェアで実現されても良い。説明されたモジュールは、プロセッサに設置されても良く、例えば、コマンドキュー取得モジュールと、コマンド送信モジュールと、送信待ちコマンド取得モジュールとを備える汎用実行コンポーネントとして説明されても良い。なお、これらのモジュールの名称は場合によって当該モジュールの自身に対する限定とされない。例えば、コマンドキュー取得モジュールは、「コマンドキューを取得するモジュール」として説明されても良い。
【0086】
他の局面として、本出願は更にコンピュータが読取可能な媒体を提供する。当該コンピュータ読取可能な媒体は、前記実施例に説明された電子デバイスに含まれたものであっても良く、当該電子デバイスに実装されずに別途に存在するものであっても良い。前記コンピュータ読取可能な媒体に一つ又は複数のプログラムが担持され、前記一つ又は複数のプログラムが当該電子デバイスにより実行されると、当該電子デバイスに、コマンドキューを取得し、所定順でコマンドキューから送信待ちコマンドを取得し、且つ、送信待ちコマンドのタイプを特定し、送信待ちコマンドが演算系コマンドであると特定されたことに応答して、実行コンポーネントセットにおいて送信待ちコマンドを実行するための実行コンポーネントを特定し、特定された実行コンポーネントに送信待ちコマンドを送信する送信ステップを実行し、送信待ちコマンドがブロッキング系コマンドであると特定されたことに応答して、送信待ちコマンドに関連付けられたコマンド実行済みを示す信号が受信された後に、次の送信待ちコマンドを取得し、送信ステップを継続して実行する、ことを実行させる。
【0087】
以上の記載は、本発明の好適な実施例及び運用される技術原理に対する説明に過ぎない。当業者であればわかるように、本発明にかかる発明範囲は、上記技術特徴の特定の組み合わせからなる技術案に限定されず、上記の発明構想から逸脱されない場合に上記技術特徴又は均等の特徴による任意の組み合わせで形成される他の技術案も同時に含まれるべきである。例えば上記特徴と本出願に開示された(それらに限定されない)類似の機能を具備する技術特徴が互いに置換されて得られる技術案は該当する。

図1
図2
図3
図4
図5
図6