マルチセルマイクロプロセッサ、アレイを操作するための「マクロサイクル」

フォンノイマンアーキテクチャの障害は、値のチェック、合計、要素の積など、一連のデータを処理しています。 このアクションには、最初の要素から最後の要素までのサイクルの編成が必要です。 どのサイクルでも、必ずオーバーヘッドがあります。次の要素のアドレスの計算、カウンターの変更とチェックです。 さらに、プロセッサアーキテクチャがファームウェアレベルでループをサポートしていない場合、各ループ命令をメモリまたはキャッシュから読み取り、デコードして実行する必要があります。 そのようなプロセスの効率は非常に低い場合があります。 唯一のプラスは、プログラムコードの長さです。 任意のサイズの配列に対してわずか数バイト。



ベクトルで動作するプロセッサの場合、オーバーヘッドは低くなります。 サイクル数はN倍に削減されます。Nは同時に処理される配列要素の数です。 ただし、これは問題を解決しません。 さらに、要素の数がプロセッサベクトルの整数回に収まらない場合、コストを配列の境界に追加します。



オーバーヘッドを削減するために、配列の要素を自由変数として処理できます。つまり、要素をペアで処理し、次に結果をペアで処理するプログラムを作成できます。 ただし、この方法は固定サイズの配列でのみ可能です。 また、プログラムのサイズは非常に大きくなる可能性があります。



ただし、後者の方法またはその修正は、マルチコアアーキテクチャにより適しています。マルチコアアーキテクチャでは、異なるコアまたはプロセッサ上の部分でアレイの処理を並列に編成することができます。 ただし、ここでもプログラムのコンパイルに制限があります。 配列のサイズが動的に変化する場合、異なるコアで処理を自動的に並列化することは困難または不可能になります。 プログラムには、固定数のコマンドとポインターがあります。 または、プログラムコードの変更を許可する必要があります。 これは非常に困難です。



それでは、マルチセルラープロセッサを見てみましょう。 プロセッサの作成者は、「マルチコマンド」のアイデアを検討しましたか? どういう意味ですか。 これは通常のマシンコマンドまたはコマンドのグループですが、動的リピーターがあります。 プログラムコードでは数バイトかかり、プログラムの実行中に、処理された配列の長さに応じて、指定された回数だけコマンドバッファーに複製されます。 シーケンス全体を一度に複製することはできますが、これは実用的ではありませんが、プロセッサ内のセルと同じ数のコピーを作成したり、このプログラムに参加するセルの数を制限することもできます。 このコマンドの各コピーは、独自のセルで完全に独立して並行して処理できます。



コマンドの後続の各コピーが、独自のセルを持つ配列の次の要素または次の要素を処理することは明らかです。 このメカニズムは、サイクルを編成するオーバーヘッドをほとんど免れ、コンパイルされたプログラムのサイズを増加させず、アレイ要素の処理を任意の数のプロセッサセルに並列化できます。 さらに、セルの1つが極端な配列処理操作を実行し、さらなる処理の必要性を追跡します。 必要な条件に達すると、アレイでのアクションを終了できます。 もちろん、コンパイラはマルチコマンドと補完コマンドの選択と場所を決定し、プロセッサはコマンドを複製します。



このアイデアの特許や出版物がない場合。 この出版物により、2015年5月17日に著作権を主張します。



現時点では、出版物の著者は求人を受け入れる準備ができています。



All Articles