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

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

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

特許7419293命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム
<>
  • 特許-命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム 図1
  • 特許-命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム 図2
  • 特許-命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム 図3
  • 特許-命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-12
(45)【発行日】2024-01-22
(54)【発明の名称】命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム
(51)【国際特許分類】
   G06F 9/34 20180101AFI20240115BHJP
   G06F 9/30 20180101ALI20240115BHJP
   G06F 9/38 20180101ALI20240115BHJP
   G06F 12/0875 20160101ALI20240115BHJP
【FI】
G06F9/34 350A
G06F9/30 350A
G06F9/38 370X
G06F12/0875 100
【請求項の数】 11
(21)【出願番号】P 2021089687
(22)【出願日】2021-05-28
(65)【公開番号】P2021144730
(43)【公開日】2021-09-24
【審査請求日】2021-05-28
【審判番号】
【審判請求日】2023-04-14
(31)【優先権主張番号】202010699439.3
(32)【優先日】2020-07-20
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【弁理士】
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】スー,インナン
(72)【発明者】
【氏名】オウヤン,ジェン
(72)【発明者】
【氏名】ドゥ,シュエリャン
(72)【発明者】
【氏名】アン,カン
【合議体】
【審判長】吉田 美彦
【審判官】林 毅
【審判官】稲垣 良一
(56)【参考文献】
【文献】国際公開第2009/119021(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/30-9/38
G06F12/0875
(57)【特許請求の範囲】
【請求項1】
命令実行方法であって、
メモリ命令及び非メモリ命令を含む命令シーケンスを順次実行することと、
第1メモリ命令の実行完了が必要であることを、前記命令シーケンス内の前記第1メモリ命令の後にある、次のメモリ命令である第2メモリ命令の実行を開始する前に決定することと、
前記第1メモリ命令の実行サイクルにおいて、前記第2メモリ命令を実行せずに、前記第1メモリ命令と前記第2メモリ命令の間の非メモリ命令を実行することと、を含み、
前記決定することは、
前記命令シーケンスに含まれる中止命令を実行するとき、前記中止命令に対応するメモリ命令を前記第1メモリ命令として決定することと、
ソフトウェアによって、前記第1メモリ命令の実行完了が必要であることを、前記第2メモリ命令の実行を開始する前に決定することを含む、
命令実行方法。
【請求項2】
さらに、前記命令シーケンスを実行するためのハードウェアによって、前記第1メモリ命令と前記第2メモリ命令のタイプに基づいて、前記第1メモリ命令の実行完了が必要であることを、前記第2メモリ命令の実行を開始する前に決定することを含む、
請求項1に記載の命令実行方法。
【請求項3】
前記決定することは
前記第1メモリ命令の実行完了が必要であることを、前記第1メモリ命令を実行するときに決定することを含む、
請求項に記載の命令実行方法。
【請求項4】
前記第1メモリ命令の前記実行完了に応じて、前記第2メモリ命令の実行を開始する、
請求項1に記載の命令実行方法。
【請求項5】
命令の実行装置であって、
メモリ命令及び非メモリ命令を含む命令シーケンスを順次実行するように構成される命令シーケンス実行モジュールと、
第1メモリ命令の実行完了が必要であることを、前記命令シーケンス内の前記第1メモリ命令の後にある、次のメモリ命令である第2メモリ命令の実行を開始する前に決定するように構成される実行決定モジュールと、
前記第1メモリ命令の実行サイクルにおいて、前記第2メモリ命令を実行せずに、前記第1メモリ命令と前記第2メモリ命令の間の非メモリ命令を実行するように構成される非メモリ命令実行モジュールと、を備え、
前記実行決定モジュールは、
前記命令シーケンスに含まれる中止命令を実行するとき、前記中止命令に対応するメモリ命令を前記第1メモリ命令として決定するように構成される第1メモリ命令決定モジュールと、
ソフトウェアによって、前記第1メモリ命令の実行完了が必要であることを、前記第2メモリ命令の実行を開始する前に決定するように構成される第3実行決定モジュールと、を備える、
命令の実行装置。
【請求項6】
前記実行決定モジュールは、
前記命令シーケンスを実行するためのハードウェアによって、前記第1メモリ命令と前記第2メモリ命令のタイプに基づいて、前記第1メモリ命令の実行完了が必要であることを、前記第2メモリ命令の実行を開始する前に決定するように構成される第2実行決定モジュールをさらに備える、
請求項5に記載の命令の実行装置。
【請求項7】
前記実行決定モジュールは、
前記第1メモリ命令の実行完了が必要であることを、第1メモリ命令を実行するときに決定するように構成される第1実行決定モジュールをさらに備える、
請求項6に記載の命令の実行装置。
【請求項8】
前記第1メモリ命令の前記実行完了に応じて、前記第2メモリ命令の実行を開始するように構成される第2メモリ命令実行モジュールをさらに備える、
請求項に記載の命令実行装置。
【請求項9】
電子デバイスであって、
少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに通信接続されるメモリと、を備え、
前記メモリには、前記少なくとも1つのプロセッサにより実行可能な命令が記憶されており、前記命令は、前記少なくとも1つのプロセッサにより実行されると、前記少なくとも1つのプロセッサに、請求項1~のいずれか一項に記載の命令実行方法を実行させる、
電子デバイス。
【請求項10】
コンピュータに請求項1~のいずれか一項に記載の命令実行方法を実行させるコンピュータ命令を記憶するための非一時的なコンピュータ可読記憶媒体。
【請求項11】
コンピュータにおいて、プロセッサにより実行されると、請求項1~のいずれか一項に記載の命令実行方法を実現することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はコンピュータ技術に関し、より具体的に、命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラムに関し、人工知能分野に適用することが可能である。
【背景技術】
【0002】
メモリモデルは、ハードウェア上のメモリモデルと言語上のメモリモデルに分けられることができ、ハードウェア設計定義又はプログラミング要件定義によって、アクセスの順序と実行順序を保証し、プログラム実行の正確性を保証する。従来のプロセッサ、及びC++のような高レベル言語は、いずれもメモリモデルをサポートする。主なメモリモデルは、順序整合性モデル、トータルストアオーダリングモデル和リラックストメモリモデル等があり、リラックストメモリモデルは性能に良い。新興の人工知能用のプロセッサ及び対応するプログラム言語は、同様にメモリモデルを定義、サポートする必要がある。人工知能のプロセッサは、1種のドメイン特定のプロセッサである。人工知能分野の特徴を対象とするメモリのアーキテクチャにおいて、最大の変化として、従来のプロセッサ内の高速キャッシュの代わりにスクラッチパッドメモリを採用しており、それによってプログラマーがデータの記憶を直接に管理することができるようになる。
【0003】
具体的に、人工知能の適用場面において、参照の局所性が、従来のプロセッサより劣化しており、この場合、高速キャッシュによる性能向上が期待できず、データを使用後に直ぐに廃棄する場面において性能を逆に低下する。同時に、高速キャッシュの複雑度及びリソースの占用率が非常に高く、してみれば、高速キャッシュを取り除いて、より多くのハードウェアリソースを獲得して演算力の増加に使用したほうが合理的であり、そのため、現在、多くの人工知能のプロセッサは、非高速キャッシュのスクラッチパッドメモリ構造を使用する。スクラッチパッドメモリを採用する場合、メモリは、プログラマーによって管理するようになり、大分の人工知能は、アーキテクチャとプログラム言語上の相違で、従来のプロセッサで実現するメモリモデルシステム及び方法に完全に適用されることができない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の実施形態によれば、命令実行方法、装置、電子デバイス、及びコンピュータ可読記憶媒体を提供する。
【課題を解決するための手段】
【0005】
本開示の第1様態において、命令実行方法を提供し、命令シーケンスを実行することであって、前記命令シーケンスはメモリ命令と非メモリ命令とを含み、前記シーケンス内の命令を実行することは順序に従って実行を開始することであることと、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定することであって、前記第2メモリ命令は、前記命令シーケンス内の前記第1メモリ命令の後にある、次のメモリ命令であることと、前記第1メモリ命令の実行サイクルにおいて、前記第2メモリ命令を実行せずに、前記第1メモリ命令と前記第2メモリ命令の間の非メモリ命令を実行することと、を含む。
【0006】
本開示の第2様態において、命令の実行装置を提供し、命令シーケンスを実行するように構成され、前記命令シーケンスはメモリ命令と非メモリ命令とを含み、前記シーケンス内の命令を実行することは順序に従って実行を開始することである命令シーケンス実行モジュールと、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定するように構成され、前記第2メモリ命令は、前記命令シーケンス内の前記第1メモリ命令の後にある、次のメモリ命令である実行決定モジュールと、前記第1メモリ命令の実行サイクルにおいて、前記第2メモリ命令を実行せずに、前記第1メモリ命令と前記第2メモリ命令の間の非メモリ命令を実行するように構成される非メモリ命令実行モジュールと、を含む。
【0007】
本開示の第3様態において、電子デバイスを提供し、少なくとも1つのプロセッサ、及び前記少なくとも1つのプロセッサに通信接続されるメモリを含み。ここで、前記メモリに前記少なくとも1つのプロセッサで実行可能な命令が記憶され、前記命令は前記少なくとも1つのプロセッサに実行され、前記少なくとも1つのプロセッサに、本開示による第1様態の方法を実行させる。
【0008】
本開示の第4様態において、コンピュータ命令を記憶する、非一時的なコンピュータ可読記憶媒体を提供し、前記コンピュータ命令は、前記コンピュータに、本開示による第1様態の方法を実行させる。
【0009】
本開示に提供される技術を利用して、プロセッサ全体性能を向上させると共に、プログラミングの正確性を保証して使い勝手を向上することができ、人工知能のプロセッサの普及に有利である。
【0010】
なお、ここで記載されている内容は、本開示の実施形態においてキーとなっている、又は重要視されている特徴、本開示の範囲を限定しているわけではない。本開示の他の特徴は下記の明細書の記載によって理解しやすくさせる。
【図面の簡単な説明】
【0011】
図1】本開示の例示的な実施形態における命令実行方法を実現する命令実行システム100を示す図である。
図2】本開示の実施形態における命令実行方法200を示すフローチャートである。
図3】本開示の実施形態における命令の実行装置300を示すブロック図である。
図4】本開示の実施形態における電子デバイス400を示すブロック図である。
【発明を実施するための形態】
【0012】
図面を参照しながら本開示の例示的な実施形態をより詳しく説明することによって、本開示の上記、及び他の目的、特徴、及びメリットがより分かりやすくなり、ここで、本開示の例示的な実施形態において、同様な符号が通常同一部品を表す。なお、図面は本案をよりよく理解させるためのものであり、本開示の限定にならない。
【0013】
各図面で、同様又は対応する符号が同一又は対応する部分を表す。
【0014】
図面を参照しながら本開示の好ましい実施形態をより詳しく説明する。図面に本開示の好ましい実施形態を示しているが、ここで記載されている実施形態に限定せずに、異なる形態で本開示を実現することもできる。逆に、これらの実施形態を提供するのは、本開示をより分かりやすくし、本開示の範囲を完全に当業者に伝わるためである。
【0015】
本文に記載されている「包括」、及び類似な表現は、オープン的な包括を意味し、即ち、「含むが、それに限定されない」意味をする。明言しない限り、「又は」という記載は、「及び/又は」を表す。「基づく」という記載は、「少なくとも一部的に基づく」ことを表す。「1つの例示的な実施形態」と「1つの実施形態」という記載は、「少なくとも1つの例示的な実施形態」を表す。「もう1つの実施形態」というのは、「少なくとも1つのもう1つの実施形態」を表す。「第1」、「第2」等々は、異なり又は同様な対象を指すことが可能である。後文において、その他の明確的な定義と暗黙的な定義を含むことができる。
【0016】
上記の背景技術で説明したように、高速キャッシュは、記憶内容が複数回で使用されるケースにより適合し、しかし、人工知能の応用場面においてデータの使用回数が少ない可能性があり、ひいては一回しか使用されなく、そのため、スクラッチパッドメモリのほうがもっと相応しい。しかしこの二つのメモリの実現方式が異なる。そのため、従来のプロセッサを使用して実現されるメモリモデルシステムと方法は、人工知能のプロセッサで使用するスクラッチパッドメモリに完全に適用することができる。例えば、従来のプロセッサに高速キャッシュが存在するため、命令とデータの記憶は、プログラマーにとって、見えないことである。そのため、リラックストメモリモデルを実現するために、相関のプログラムの正確性はコンパイラによって処理される。
【0017】
プロセッサ命令シーケンスを実行する場合、命令シーケンス内の命令は、順序に従って実行する。しかし、プロセッサは、必ずしも各々の命令の実行完了後に次の命令の実行を開始するとは限らない。例えば1つのプロセッサ周期開始場合第1個の命令を実行し、次のプロセッサ周期開始場合第2個の命令を実行する。それぞれの命令の命令周期が相違する可能性があり、例えば、第1個の命令の実行は10個のプロセッサ周期が必要であり、第2個の命令の実行は、1個のプロセッサ周期だけ必要があるため、実行開始の遅い命令は、其れより前で実行する命令の前に実行完了する可能性があり、この場合、プロセッサは後続命令を実行し続けることができる。そのため、プロセッサは、命令シーケンス内の命令を、乱れた順序で実行する可能性がある。
【0018】
しかし、プロセッサが命令を処理する場合、厳しい実行順序で実行する必要がある命令があり、即ち、後ろの命令を、前の命令が実行完了になってから実行開始しなければならず、そうでない場合エラーが生じる。例えば、第1個の命令は、変数Aに値を代入する命令であり、第2個の命令は値を代入した後の変数Aを使用する命令である。変数Aへの値の代入後にしか、値の代入後の変数Aを正常に使用することができないため、この二つの命令の実行は、厳しい実行順序があり、即ち、第1個の命令が実行完了後に、第2個の命令を実行開始しなければならない。プロセッサ分野において、実行順序が求められる命令は、例えば、スカラロード(scalar load)命令、スカラストア(scalar store)命令、ベクトルロード(vector load)命令、ベクトルストア(vector store)命令、グローバルメモリからローカルメモリへ搬送(gm2lm)命令、及びローカルメモリからグローバルメモリへ搬送(lm2gm)命令を含む。本開示において、これらの命令はメモリ命令と称され、これらの命令以外の、実行順序が厳しく求められていない命令は、非メモリ命令と称される。
【0019】
また、同じく上記の値の代入命令を例として説明すると、プログラマーが高レベル言語で上記の二つの命令をプログラミングした後に、この二つの命令がアセンブリ言語に変換された後に、これらの命令の間で複数のその他の命令が生成され得、これらの命令は、通常、非メモリ命令である。そのため、アセンブリ言語に変換された後の命令シーケンスにおいて、メモリ命令同士の間に数多くの非メモリ命令が存在する。
【0020】
二つのメモリ命令が命令のセマンティックで厳しい実行順序が求められた場合、ハザード衝突が存在すると称する。ハザード衝突問題を解決するために、従来のプロセッサで使用される方法は、コンパイルで中止命令を暗黙的に付加し、例えば、fence命令を付加する。中止命令は、阻止符号の作用と似ており、中止命令を実行する場合、後続のすべの命令の実行を阻止し、特定条件を満たすときのみ、後続の命令を再開し、これらの条件は、例えば、中止命令前の特定命令又はすべての命令が実行完了になっていることを含む。
【0021】
しかし、従来のプロセッサで、高速キャッシュに記憶されている命令がソフトウェア上で見えないため、ハードウェアでしかハザード衝突問題を解決することができない。また、従来のプロセッサが、中止命令を実行する場合後続のすべての命令の実行を阻止するために、そもそも実行してもハザード衝突問題にならない非メモリ命令の実行も阻止されてしまい、例えば、ハザード衝突がある二つのメモリ命令の間に、何個、何十個、何百個、ひいてはもっと多くの非メモリ命令が存在する。上記の状況があるため、従来のプロセッサにおいて、ハザード衝突問題の解決効率が低く、ハザード衝突問題を解決する場合非メモリ命令の実行効率が酷く影響される。
【0022】
少なくとも上記の課題の一部を解決するために、又はその他の潜在的な1つ又は複数の課題を解決するために、本開示の実施形態は命令実行方法を提供し、この方法を使用して、メモリ命令と非メモリ命令とを含む命令シーケンスを順に実行する場合、隣接のメモリ命令の間にハザード衝突がある場合、ハードウェアとソフトウェアとの協働によって、ハザード衝突が生じる二つのメモリ命令の間の大量の非メモリ命令を実行し続けることができる。それによってプロセッサの全体性能を向上させると共に、プログラミングの正確性を保証して使い勝手を向上し、ユーザがプロセッサで命令を実行する効率、及びユーザ体験を向上させるために有利であり、しかも人工知能のプロセッサの普及に有益である。
【0023】
図1は本開示の例示的な実施形態における命令実行方法を実現する命令実行システム100を示す図である。図1に示すように、命令実行システム100は、グローバルメモリ110、DMA(ダイレクトメモリアクセス)120、及びプロセッサコア130を含む。なお、命令実行システム100は拡張することができ、ここで、より多くのプロセッサコア130、ひいてはより多くのグローバルメモリ110とDMA120を含みえる。簡略化するために、図1に、単に1つのグローバルメモリ110、1つのDMA120、及び1つプロセッサコア130を示している。なお、命令実行システム100は、メモリ内の記憶内容を利用してソフトウェアレベルで可視であり且つ管理可能な任意の命令実行システムであっても良く、例えば、スクラッチパッドメモリを使用する人工知能メモリシステムであり得る。
【0024】
図1に示されるプロセッサコア130はスカラモジュール131、ベクトルモジュール132、グローバルメモリモジュール133、クロスバスイッチ134、及びローカルメモリ135を含む。クロスバスイッチ134は、ローカルメモリ135、スカラモジュール131、ベクトルモジュール132、及びグローバルメモリモジュール133とデータのインタラクションを制御する。グローバルメモリモジュール133は、DMA120とグローバルメモリ110によってデータのインタラクションを行う。
【0025】
スカラモジュール131は、ハザードプロセス部131-1、スカラロード部131-2及びスカラストア部131-3を含む。スカラロード部131-2は、スカラ命令のロードを処理するために用いられ、スカラストア部131-3は、スカラ命令の記憶を処理するために用いられ、ハザードプロセス部131-1は、スカラ命令のハザード衝突を処理するために用いられる。スカラ命令、例えば、スカラロード命令とスカラストア命令とを含むことができる。
【0026】
ベクトルモジュール132は、ハザードプロセス部132-1、ベクトルロード部132-2及びベクトルストア部132-3を含む。ベクトルロード部132-2は、ベクトル命令のロードを処理するために用いられ、ベクトルストア部132-3じゃ、ベクトル命令の記憶を処理するために用いられ、ハザードプロセス部132-1は、ベクトル命令のハザード衝突を処理するために用いられる。ベクトル命令、例えばはベクトルロード命令とベクトルストア命令と含むことができる。
【0027】
グローバルメモリモジュール133は、グローバルメモリロード部133-1とグローバルメモリ記憶部133-2を含む。グローバルメモリロード部133-1は、グローバルメモリ命令のロードを処理するために用いられ、グローバルメモリ記憶部133-2は、グローバルメモリ命令の記憶を処理するために用いられる。グローバルメモリ命令は、例えば、グローバルメモリからローカルメモリへ搬送命令、及びローカルメモリからグローバルメモリへ搬送命令を含むことができる。
【0028】
本開示の実施形態によれば、命令実行システム100は制御器をさらに含むことができ、命令実行システム100の各操作を制御するために用いられる。
【0029】
本開示の実施形態によれば、命令実行システム100において、例えば、スカラロード命令、スカラストア命令、ベクトルロード命令、ベクトルストア命令、グローバルメモリからローカルメモリへ搬送命令、及びローカルメモリからグローバルメモリへ搬送命令のメモリ命令は、異なるハードウェア行列を使用して実行することができ、各ハードウェア行列の間でメモリ順序整合性とプログラム順序整合性を保つ。
【0030】
図2は、本開示の実施形態における命令実行方法200を示すフローチャートである。具体的に、方法200は、命令実行システム100によって実行される。なお、方法200は、図示されていない付加操作を含んでもよく、及び/又は示されている操作を省略してもよく、それに関して本開示の範囲は制限されない。
【0031】
ブロック202において、命令実行システム100は命令シーケンスを実行する。本開示の実施形態によれば、命令シーケンスは上記のようなメモリ命令と非メモリ命令とを含み、命令実行システム100は、シーケンス内の命令の順序に従って各命令を実行する。
【0032】
ブロック204において、命令実行システム100は第2メモリ命令の実行を開始する前に、第1メモリ命令の実行完了を必要であることを決定する。本開示の実施形態によれば、第2メモリ命令は命令シーケンスにおける第1メモリ命令の後にある、次のメモリ命令である。
【0033】
本開示の幾つかの実施形態によれば、命令の実行に前後順序があるため、命令実行システム100は第1メモリ命令を実行する場合、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定する。本開示の他方の実施形態によれば、命令実行システム100は、第1メモリ命令の実行前に、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定することもできる。
【0034】
人工知能のプロセッサ分野において、全てのハザード衝突がソフトウェアによって発見されるわけではない。例えば、メモリ命令に対するメモリ操作粒度はメモリ行の大きさにおける特定操作であり、同一サブシステム(例えば、スカラモジュール131とベクトルモジュール132)内部におけるロードと記憶との間のハザード衝突は、ハードウェアによって処理され、これらのメモリ命令は、スカラロード命令の間、スカラストア命令の間、ベクトルロード命令の間及びベクトルストア命令の間の命令を含む。そのため、これらのハザード衝突は、ソフトウェアにとって見えないものであり、ソフトウェアで処理することができない。
【0035】
しかし、ソフトウェアで処理実行するのは効率が良く、便利であるため、本開示の実施形態において、まず、ソフトウェアでハザード衝突問題を処理し、ハザード衝突が、ソフトウェアに不可視である関係で、ソフトウェアで発見、処理することができない場合、ハードウェアによってハザード衝突を処理する。
【0036】
そのため、本開示の幾つかの実施形態によれば、命令実行システム100は、第1メモリ命令と第2メモリ命令のタイプに基づいて、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定する。このケースは、例えば、メモリ操作粒度が1つのメモリ行の大きさの特定操作であることを含み、例えば、スカラロード命令の間、スカラストア命令の間、ベクトルロード命令の間及びベクトルストア命令の間のハザード衝突が挙げられる。この場合、命令シーケンスを実行するためのハードウェアによって、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定する。
【0037】
ソフトウェアで処理可能な命令衝突場合、プログラマーが命令シーケンスをプログラミングする場合、ハザード衝突が生じ得ることを既知しているため、プログラマーは命令シーケンスに特定の定義された中止命令を付加して、ソフトウェアにハザード衝突の発生を把握させる。
【0038】
本開示の実施形態によれば、命令シーケンスに中止命令が含まれるため、命令実行システム100は、中止命令を実行する場合、中止命令の対象とするメモリ命令を、第1メモリ命令として決定することができ、さらに、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定する。本開示の幾つかの実施形態によれば、中止命令は、何かしらのメモリ命令の直後に位置してもよく、それによって、中止命令の前のこのメモリ命令の直前の命令が第1メモリ命令であることを示す。本開示の他方の実施形態によれば、中止命令は、何かしらのメモリ命令の前の直前に位置してもよく、それによって中止命令の後ろのこのメモリ命令の直後の命令が第1メモリ命令であることを示す。この場合、ソフトウェアによって、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定する。本開示の実施形態によれば、ソフトウェアで処理するハザード衝突は、例えば異なるサブシステムの間のハザード衝突を含み、例えば、スカラモジュール131、ベクトルモジュール132、及びグローバルメモリモジュール133の間のハザード衝突が挙げられる。ソフトウェアで処理するハザード衝突は、メモリ命令に対する記憶操作粒度が複数のメモリ行の大きさの操作を含んでもよく、例えばグローバルメモリモジュール133内部のグローバルメモリのロードとグローバルメモリの記憶との間のハザード衝突が挙げられる。
【0039】
ブロック206において、命令実行システム100は、第1メモリ命令の実行サイクルで、第2メモリ命令を実行せずに、第1メモリ命令と第2メモリ命令との間の非メモリ命令を実行する。
【0040】
ブロック202、204及び206における操作によって、ハザード衝突を効率よく発見することができ、ハザード衝突がある場合、ハザード衝突を招くメモリ命令を実行せず、大量の非メモリ命令を実行する。それによって、ハザード衝突の処理効率、及び命令シーケンスの処理効率を向上させることができる。
【0041】
方法200は、図2に点線ブロックで示される選択可能なブロック208を含んでもよい。選択可能なブロック28において、命令実行システム100は、第1メモリ命令の実行完了に応じて、第2メモリ命令の実行を開始する。
【0042】
定義されたfence命令を、本開示の実施形態における中止命令とすることを例として本開示の実施形態における中止命令の操作を説明する。
【0043】
例えば、命令シーケンスは、gm2lm→fence→add、r0、r1、r2→load r3、lm→add、r0、r1、r2→……である。この命令シーケンスにおいて、gm2lmは第1メモリ命令であり、loadは第2メモリ命令であり、fenceは中止命令である。fence命令まで実行される場合、ソフトウェアは、gm2lmが第1メモリ命令であり、loadの実行開始前にgm2lmの実行を完了させる必要があることを知る。従来のプロセッサ処理によれば、この場合、fenceの後ろのすべでの命令の実行を停止する。それに対して、本開示の実施形態におけるこの例において、fence命令とload命令との間のadd、r0、r1、r2命令が依然として正常に実行する。gm2lm命令が実行完了後に、ソフトウェアは、load命令を実行するようにハードウェアに通知する。
【0044】
上記の図1図2を参照して、それらにおいて本開示の幾つかの例示的な実施形態における命令実行方法を実現することができる命令実行システム100、及び本開示の実施形態における命令実行方法200に関する内容を記載している。なお、上記の記載は、本開示に記載されている内容をよりよく説明するためのものであり、いかなる制限をかける目的ではない。
【0045】
なお、本開示の上記の各図面に使用される各コンポーネントの数と物理量の大きさは、単なる例であり、本開示の保護範囲を制限するわけではない。上記の数及び大きさは、都合によって任意設定することができ、本開示の実施形態の実施に影響を及ぼすことがない。
【0046】
図1図2において本開示の実施形態における命令実行方法の細部を説明している。下記において、図3を参照して、命令の実行装置内の各モジュールを説明する。
【0047】
図3は、本開示実施形態における命令の実行装置300を示すブロック図である。図3に示すように、命令の実行装置300は、命令シーケンスを実行するように構成され、前記命令シーケンスはメモリ命令と非メモリ命令とを含み、前記シーケンス内の命令を実行することは順序に従って実行を開始することである命令シーケンス実行モジュール310と、第2メモリ命令の実行を開始する前に第1メモリ命令の実行完了を必要であることを決定するように構成され、前記第2メモリ命令は、前記命令シーケンス内の前記第1メモリ命令の後にある、次のメモリ命令である実行決定モジュール320と、前記第1メモリ命令の実行サイクルにおいて、前記第2メモリ命令を実行せずに、前記第1メモリ命令と前記第2メモリ命令の間の非メモリ命令を実行するように構成される非メモリ命令実行モジュール330とを含む。
【0048】
幾つかの実施形態において、ここで、前記実行決定モジュール320は、第1メモリ命令を実行する場合、前記第2メモリ命令の実行を開始する前に前記第1メモリ命令の実行完了を必要であることを決定するように構成される第1実行決定モジュール(図示せず)、を含む。
【0049】
幾つかの実施形態において、ここで、前記実行決定モジュール320は、前記第1メモリ命令と前記第2メモリ命令のタイプに基づいて、前記第2メモリ命令の実行を開始する前に前記第1メモリ命令の実行完了を必要であることを決定するように構成される第2実行決定モジュール(図示せず)と、を含む。
【0050】
幾つかの実施形態において、ここで、前記第2実行決定モジュールは、前記命令シーケンスを実行するためのハードウェアによって、前記第2メモリ命令の実行を開始する前に前記第1メモリ命令の実行完了を必要であることを決定するように構成される。
【0051】
幾つかの実施形態において、ここで、前記命令シーケンスに中止命令が含まれ、前記実行決定モジュール320は、前記中止命令を実行する場合、前記中止命令の対応するメモリ命令を前記第1メモリ命令として決定するように構成される第1メモリ命令決定モジュール(図示せず)と、及び前記第2メモリ命令の実行を開始する前に前記第1メモリ命令の実行完了を必要であることを決定するように構成される第3実行決定モジュール(図示せず)と、を含む。
【0052】
幾つかの実施形態において、ここで、前記第3実行決定モジュールは、ソフトウェアによって、前記第2メモリ命令の実行を開始する前に前記第1メモリ命令の実行完了を必要であることを決定するように構成される。
【0053】
幾つかの実施形態において、命令の実行装置300は、選択可能な第2メモリ命令実行モジュール340(図3に点線ブロックで示される)をさらに含み、第2メモリ命令実行モジュール340が、前記第1メモリ命令の前記実行が完了することに応じて、前記第2メモリ命令の実行を開始するように構成される。
【0054】
本開示の実施形態によれば、本開示は、電子デバイスとコンピュータ可読記憶媒体を含む。
【0055】
上記の図1図3を参照して、本開示の実施形態における技術案は、従来技術より幾つかのメリットがある。例えば、上記の技術案によって、メモリ命令のハザード衝突を処理する場合、ハザード衝突を生じる二つのメモリ命令の間の大量の非メモリ命令を依然として実行することができ、それによってプロセッサ全体性能を向上させると共に、プログラミングの正確性を保証して使い勝手を向上させることができ、さらにユーザがプロセッサを使用して命令を実行する効率、及びユーザ体験を向上させるために有利であり、人工知能のプロセッサの普及に有益である。さらに、上記の技術案によって、ハードウェアだけに頼らずに、ハードウェアとソフトウェアがメモリ命令のハザード衝突を協働して処理し、そのため、メモリ命令のハザード衝突の処理効率をさらに向上させることができる。
【0056】
図4は、本開示の実施形態における電子デバイス400を示すブロック図である。例えば、図1に示される命令実行システム100と図3に示される命令の実行装置300は、電子デバイス400によって実施することができる。電子デバイス400は、各形式のデジタルコンピュータを指し、例えば、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、個人デジタルアシスタント、サーバ、ブレードサーバ、大型コンピュータ、及びその他の適合するコンピュータが挙げられる。電子デバイス400は、各形式の移動装置をさらに指し、例えば、個人デジタルアシスタント、セルラー電話、スマートフォン、ウェアラブルデバイス、及びその他の類似のコンピュータ装置が挙げられる。本出願に記載されているコンポーネント、それらの接続関係、及び機能は例示的なものに過ぎず、本開示に記載・特定されているものの実現を限定するわけではない。
【0057】
図4に示すように、当該電子デバイス400は、1つ又は複数のプロセッサ401、メモリ402、及び各部品を接続するためのインターフェースを含み、高速インターフェースと低速インターフェースを含む。各部品が異なるバスによって接続され、共通マザーボードに装着することができ、又は必要に応じて他の方式で装着することもできる。プロセッサは、電子デバイス400で実行する命令を実行することができ、メモリに記憶される命令、又は外部入力/出力装置(例えば、インターフェースにカップリングする表示デバイス)に記憶され、GUIに表示するグラフィック情報の命令を含む。その他の実施形態において、必要があれば、複数のプロセッサ及び/又は複数のバス及び複数のメモリを一緒に使用することができる。同様に、複数の電子デバイス400を接続することができ、各デバイスが各自の必要な操作を提供する(例えば、サーバアレイとしての1グループのブレードサーバ、又は、複数のプロセッサシステム)。図4では1つのプロセッサ401を例としている。
【0058】
メモリ402は、本開示に提供される非一時的なコンピュータ可読記憶媒体である。ここで、当該メモリに少なくとも1つのプロセッサで実行する命令が記憶され、当該少なくとも1つのプロセッサに、本開示に提供される命令実行方法を実行させる。本開示の非一時的なコンピュータ可読記憶媒体にコンピュータ命令が記憶され、当該コンピュータ命令は、コンピュータに本開示に提供される命令実行方法を実行させる。
【0059】
メモリ402は、コンピュータ可読非一時的記憶媒体として、非一時的ソフトウェアプログラムを記憶するためのものであってもよく、非一時的コンピュータは、プログラム、及びモジュールを実行することができ、例えば、本開示の実施形態における命令実行方法に対応するプログラム命令/モジュール(例えば、図3に示される命令シーケンス実行モジュール310、実行決定モジュール320、及び非メモリ命令実行モジュール330)を実行することができる。プロセッサ401は、メモリ402に記憶されている非一時的ソフトウェアプログラム、命令及びモジュールを実行することによって、サーバの各機能及びデータ処理を実行し、即ち、上記の方法実施形態における命令実行方法を実現する。
【0060】
メモリ402は、プログラム記憶領域とデータ記憶領域を含み、ここで、プログラム記憶領域に、オペレーションシステム、少なくとも1つの機能に必要なアプリケーションプログラムが記憶され得、データ記憶領域に、命令実行方法による電子デバイスの使用によって生成されるデータ等が記憶され得る。また、メモリ402は、高速ランダムアクセスメモリを含み得、非一時的メモリも含み得、例えば、少なくとも1つのディスク記憶素子、フラッシュ素子、又はその他の非一時的固体メモリ素子を含む。幾つかの実施形態において、メモリ402はプロセッサ401から遠隔に設置されるメモリを選択的に含み、これらの遠隔メモリは、ネットワークによって、命令実行方法を実行する電子デバイス400に接続されることができる。上記のネットワークは、インターネット、イントラネット、ローカルエリアネットワーク、移動通信ネットワーク及びそれらの組み合わせを例として含むが、それらを限定しない。
【0061】
命令実行方法を実行する電子デバイスは、入力装置403及び出力装置404をさらに含み得る。プロセッサ401、メモリ402、入力装置403、及び出力装置404は、バス又は他の方式で接続されることができ、図4ではバスによる接続を例としている。
【0062】
入力装置403は入力された数字又は文字情報を受け取ることができ、命令実行方法を実行する電子デバイス400のユーザ設定及び機能制御に関連するキーボード信号入力を生成し、例えば、タッチスクリーン、テンキー、マウス、トラックプレート、タッチタブレット、インジケーター、1つ又は複数のマウスボタン、トラックボール、ジョイスティックなどの入力装置が挙げられる。出力装置404は、表示用デバイス、照明補助装置(例えば、LED)及び触覚型フィードバック装置(例えば、振動モーター)等を含み得る。当該表示用デバイスは、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、及びプラズマディスプレイを含むが、それらを限定しない。幾つかの実施形態において、表示用デバイスは、タッチスクリーンであってもよい。
【0063】
ここで記載されているシステムと技術に関する各実施形態は、デジタル電子回路システム、集積回路システム、専用ASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせによって実現されることができる。これらの各実施形態は、1つ又は複数のコンピュータプログラムで実施することを含み得、当該1つ又は複数のコンピュータプログラムは、少なくとも1つのプログラミング可能なプロセッサを含むプログラミング可能なシステムにおいて、実行及び/又は解釈することができ、当該プログラミング可能なプロセッサは、専用又は汎用プログラミング可能なプロセッサであってもよく、記憶システム、少なくとも1つの入力装置、及び少なくとも1つの出力装置から、データと命令を受け取ることができ、データと命令を当該記憶システム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置に伝送することができる。
【0064】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも称する)はプログラミング可能なプロセッサの機械命令を含み、高級プロシージャ及び/又はオブジェクト指向のプログラム言語、及び/又はアセンブラ/機械語を利用してこれらのコンピュータプログラムを実施する。例えば、本出願に使用される、用語「機械での可読媒体」と「コンピュータ可読媒体」は、機械命令及び/又はデータをプログラミング可能なプロセッサに提供するためのコンピュータプログラム製品、デバイス、及び/又は装置(例えば、ディスク、コンパクトディスク、メモリ、プログラミング可能なロジック装置(PLD))を指しており、機械可読信号として機械命令を受け取る機械可読媒体を含む。用語「機械可読信号」は、機械命令及び/又はデータをプログラミング可能なプロセッサに提供するためのいかなる信号を指している。
【0065】
ユーザとのインタラクションを提供するために、コンピュータでここに記載されているシステムと技術を実施することができ、当該コンピュータは、ユーザに情報を表示するための表示用装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニター)、及びキーボードとポインティングデバイス(例えば、マウス又はトラックボール)を備え、ユーザは、当該キーボードと当該ポインティングデバイスによって、入力をコンピュータに提供することができる。他の種類の装置は、ユーザとのインタラクションを提供するために用いられることができ、例えば、ユーザに提供するフィードバックは、いかなる形式のセンサーフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、いかなる形式(音入力、音声入力、又は触覚入力)によって、ユーザからの入力を受け取ることができる。
【0066】
ここに記載されているシステムと技術を、バックグラウンド部品に含まれる計算システム(例えば、データサーバとして)、又はミドルウェア部品を含む計算システム(例えば、アプリケーションサーバ)、又はフロント部品を含む計算システム(例えば、GUI又はネットワークブラウザを有するユーザコンピュータが挙げられ、ユーザがGUI又は当該ネットワークブラウザによって、ここに記載されているシステムと技術の実施形態とインタラクションすることができる)、又はこのようなバックグラウンド部品、ミドルウェア部品、又はフロント部品のいかなる組合した計算システムで実施することができる。如何なる形式又はメディアのデジタルデータ通信(例えば、通信ネットワーク)を介して、システムの部品を互いに接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)及びインターネットを含む。
【0067】
コンピュータシステムは、クライアントとサーバを含み得る。通常、クライアントとサーバは、互いに離れており、通信ネットワークを介してインタラクションを行うことが一般的である。対応するコンピュータで動作することで、クライアント-サーバの関係を有するコンピュータプログラムによってクライアントとサーバの関係を生み出す。
【0068】
本開示実施形態の技術案によれば、メモリ命令と非メモリ命令とを含む命令シーケンスを順に実行する場合、隣接のメモリ命令の間にハザード衝突がある場合、ハードウェアとソフトウェアとの協働によって、ハザード衝突が生じる二つのメモリ命令の間の大量の非メモリ命令を実行し続けることができる。それによってプロセッサの全体性能(処理速度及び命令の実行効率)を向上させると共に、プログラミングの正確性を保証して使い勝手を向上し、ユーザがプロセッサで命令を実行する効率、及びユーザ体験を向上させるために有利であり、しかも人工知能のプロセッサの普及に有益である。
【0069】
理解すべきこととして、上記に記載されている各形式のプロセスを利用して、ステップを再度順序付け、追加又は削除することができる。本開示に開示されている技術案の期待結果を実現することさえできれば、例えば、本開示に記載されている各ステップは、平行して実行してもよく、順序付けて実行してもよく、ランダム的に実行してもよく、本開示は、其れを限定しない。
【0070】
上記の具体的な実施形態は、本開示の保護範囲に対する制限にならない。当業者が、設計要件と他の要因に基づいて、改修、組合、サブ組合、代替を行うことができることは明らかである。本開示の思想と原則内での如何なる変更、等価の入れ替え及び改善等は、いずれも本発明の保護の範囲内に含まれるべきである。

図1
図2
図3
図4