X



(情報科学)技術的特異点と科学技術等 2 (ナノテク)©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001オーバーテクナナシー 転載ダメ©2ch.net垢版2017/03/19(日) 20:22:23.35ID:cRK6Y+kv
※ このスレは、本家スレから分かれた分家スレです。科学・技術系で『専門的な』話題を特に扱います。

スレ成立のきっかけ
・技術的特異点の関わる分野は非常に幅広く、浅い部分から深い部分までレベルも様々で、多様な人が集まっている
・上記を前提として、科学・技術系で専門的な内容に集中しやすいように、ノイズ(特に不毛な論争)を減らしたい
・これにより、興味がある者同士の意思疎通困難性、過去ログ参照の困難性などが解消される

ただし性質上、本家との区分は厳密には困難です ( むしろ同じ内容が扱われても構いません ) 。
本家は雑談寄り、ここではより専門色を強く、とご理解下さい。

■現在の本家スレと前スレ
(強いAI)技術的特異点/シンギュラリティ63
http://rio2016.2ch.net/test/read.cgi/future/1489471775/
(情報科学)技術的特異点と科学技術等 1 (ナノテク)
http://rio2016.2ch.net/test/read.cgi/future/1475986330/

■関連スレ等
関連書籍・リンク・テンプレ集[必見]
http://singularity-2ch.memo.wiki/
(AI)技術的特異点と経済社会等 9 (BI)
http://rio2016.2ch.net/test/read.cgi/future/1484578214/
人工知能
http://rio2016.2ch.net/test/read.cgi/future/1286353655/
人工知能で自我・魂が作れるか
http://rio2016.2ch.net/test/read.cgi/future/1476229483/
不老不死(不老長寿)を目指すスレ Part32
http://rio2016.2ch.net/test/read.cgi/future/1485781591/
検索
http://google.jp/?q=site:2ch.net/test/read.cgi/future/+tokuiten+cyouju
http://google.jp/search?q=singularity+saron+OR+sinpojiumu&;num=20
0184yamaguti垢版2018/07/27(金) 01:29:26.59ID:pBBIx/eO?2BP(0)

>>46 >>173 >>152-183
Google 翻訳

これは、ファイル http://microsoft.com/en-us/research/wp-content/uploads/2016/02/e2-heart2010.pdf
の html版です。 Google


Page 1

E2ダイナミックマルチコアアーキテクチャにおける動的ベクトル化
2010 HEART 2010の議事に出席する

アンドリュー・パトナム
マイクロソフトリサーチ
anputnamATmicrosoft。

アーロン・スミス
マイクロソフトリサーチ
aasmithATmicrosoft。

ダグ・バーガー
マイクロソフトリサーチ
dburgerATmicrosoft。

抽象
これまでの研究では、明示的データグラフ実行(EDGE)命令セットアーキテクチャ(ISA)が電力効率の良い性能スケーリングを可能 ry
、物理コアを論理プロセッサに動的に合成するために、EDGE ISAを使用するE2という新しい動的マルチコアプロセッサ ry
、EDGE ISAがアウトオブオーダーのベクトル実行をどのように備えているか

カテゴリと主題記述子
C.1.2 [コンピュータシステムの組織]: 複数のデータストリームアーキテクチャ -- 単一命令ストリーム、複数データストリームプロセッサ(SIMD)、アレイプロセッサおよびベクトルプロセッサ、
C.1.3 [コンピュータシステムの組織]: その他のアーキテクチャスタイル -- 適応可能なアーキテクチャ、データフローアーキテ ry
0185>>184垢版2018/07/27(金) 01:37:44.56ID:pBBIx/eO?2BP(0)

一般条件 デザイン、パフォーマンス

キーワード 明示的データグラフ実行(EDGE)

1. 前書き
 チップ設計者は、性能のために電力をトレードオフするために、動的電圧と周波数スケーリング(DVFS)に長く依存 ry
。しかし、 ry 最小スレッショルド電圧(Vmin)に近づくにつれて、電圧スケーリングはもはや機能しません。
電力と性能のトレードオフは、マイクロアーキテクチャまたはシステムソフトウェアのいずれかに委ねられます。
 DVFSがほとんどないアーキテ ry 、設計者はシリコンリソースの使用方法を選択する必要があります。
HillとMarty [6]は、 ry 4つの方法 ry
。(1) 多くの小型、低性能、電力効率の高いコア、 (2) 大規模で電力効率の低い高性能コアはほとんどありませんが、
(3) 小コアと大コアの異種混在、 and (4) コアを結合または分割して所定のワークロードに適合させることができる動的アーキテクチャ。
ry 中でも、ry パフォーマンスとエネルギー効率の高い設計は、ダイナミックなアーキテクチャです。
Hill氏とMarty氏は、 ry 、そのようなアーキテクチャーの詳細は記述しなかった。
 TFlex [9]は、
明示的データグラフ実行(EDGE)命令セットアーキテクチャ(ISA) ry 、電力効率が高く軽量のプロセッサコアをより大きくより強力なコアに組み合わせることによって、
大きなダイナミックレンジと性能を実証したアーキテ ry
TFlexは、小さなエンベデッドプロセッサと同じ性能とエネルギー効率 ry 、またはシングルスレッドアプリケーションでアウトオブオーダーのスーパースカラの高性能を提供するように動的に構成可能です。
 これらの有望な結果に動機づけられ、我々は現在、 ry EDGE ISAを使用するE2という新しい動的アーキテ ry [3]。
EDGEモデルは、プログラムをアトミックに実行する命令のブロックに分割します。
ブロックは、従来のISAで行われたようにレジスタを介して通信するのではなく、プロデューサ - コンシューマ命令間の関係を明示的に符号化する一連のデータフロー命令からなる。
これらの明示的な符号化は、各命令のオペランドをプライベート・リザベーション・ステーション(オペランド・バッファと呼ばれる)にルーティングするために使用されます。
レジスタおよびメモリは、あまり頻繁でないブロック間通信を処理するためにのみ使用 ry
0186>>185垢版2018/07/27(金) 01:40:48.64ID:pBBIx/eO?2BP(0)

 以前の動的アーキテクチャ[7,9]は、タスクとスレッドレベルの並列性を利用する能力を実証しましたが、データレベルの並列性を扱うには、データを独立したセットに分割し、スレッドレベルの並列性 ry
? このホワイトペーパーでは、 ry 、E2の予備ベクタユニット設計 ry 。
この論文では、スレッディングがなくてもデータレベルの並列処理を効率的に活用することに焦点を当て、E2 で準備されたベクタユニットの設計について説明します。
? 以前のイン・オーダー・ ry 。
従来のイン・オーダー・ベクトル・マシンとは異なり、E2では、ベクトルとスカラーの両方のアウト・オブ・オーダー ry
。 E2命令セットと実行モデルは、幅広いコードにわたって効率的なベクトル化を可能にする3つの新しい機能 ry
。第1に、静的にプログラムされた問題ウィンドウをベクトルレーンにスライスすることにより、スケーラモードよりも低いエネルギーオーバーヘッドで高度に並行したアウトオブオーダーの混合スカラーおよびベクトル演算 ry
? ry 予約ステーション ry 、ワイドフェッチをメモリに、ベクトルロードとベクトル演算との間のコピーを制限する。
第2に、静的に割り当てられたリザベーションステーションは、発行ウィンドウをベクトルレジスタファイルとして扱うことを可能にし、メモリのワイドフェッチの限界まで活かせるコピーを、ベクトルロードとベクトル演算との間で行う。
第3に、E2のアトミックブロックベースモデルは、リザベーションステーションにマップされたベクトル(およびスカラー)命令ブロックのリフレッシュを可能にし、
最初のループ反復の後にフェッチまたはデコードエネルギーオーバヘッドなしで発行する反復ベクトル演算を可能にする。
ry 、これらの最適化は、幅広いコードにわたって多くのサイズのベクトルを見つけて実行することに関連するエネルギーを削減 ry
0187>>186垢版2018/07/27(金) 01:43:16.63ID:pBBIx/eO?2BP(0)

Page 2

ALU
命令ウィンドウ 32×54b
ALU
命令ウィンドウ 32×54b
ALU
命令ウィンドウ 32 x 54b
ALU
命令ウィンドウ 32×54b
L1命令キャッシュ32 KB
L1データキャッシュ32 KB
コントロール
分岐予測器
レジスタ[0-15] 16 x 64b
レジスタ[16-31] 16 x 64b
レジスタ[32-47] 16 x 64b
レジスタ[48-63] 16 x 64b
メモリインタフェースコントローラ
ロード/ストア・キュー
オペランド・バッファ 32×64b
オペランド・バッファ 32×64b
オペランド・バッファ 32×64b
オペランド・バッファ 32×64b
オペランド・バッファ 32×64b
オペランド・バッファ 32×64b
オペランド・バッファ 32×64b
オペランド・バッファ 32×64b
レーン1 レーン2 レーン3 レーン4
コア コア コア コア コア コア コア コア   コア コア コア コア コア コア コア コア   L2 L2 L2 L2
コア コア コア コア コア コア コア コア   コア コア コア コア コア コア コア コア   L2 L2 L2 L2
0188>>187垢版2018/07/27(金) 01:45:20.36ID:pBBIx/eO?2BP(0)

図1: E2 ry ブロック図
ベクタモードでは、各コアは4つの独立したベクタレーンで構成され、それぞれが32命令ウィンドウ、2つの64ビットオペランドバッファ、整数および浮動小数点演算のALU、16レジスタ ry
スカラーモードでは、レーン3および4のALUはパワーダウンされ、命令ウィンドウ、オペランドバッファおよびレジスタは他の2つのレーンで使用可

2. E2アーキテクチャ
 E2は、オンチップネットワークで接続された低電力、高性能、分散処理コアで構成されたタイル型アーキテ ry
シンプルさ、スケーラビリティ、フォールトトレランス ry
。図1は、32コアを含むE2プロセッサの基本アーキテクチャと、1つの物理コアの内部構造のブロック図 ry
。 コアにはNレーンが含ま ry (このペーパーでは4つ選択します)。各レーンは64ビットALUと命令ウィンドウ、オペランドバッファ、レジスタファイルの1つのバンク ry
? 、およびファイングレインSIMD実行 ry 。
ALUは、整数および浮動小数点演算、および細粒度 SIMD 実行(サイクルごとに8つの8ビット、4つの16ビット、または2つの32ビット整数演算、または1サイクルあたり2つの単精度浮動小数点演算) ry
。ウィンドウをレーンに分割するこの革新により、ハードウェアの複雑さはほとんどなく高いベクトルスループット ry
?  ry 制限します。
 E2のEDGE ISAは、ブロックを実行サブシステムにマップするハードウェアを簡略化し、ブロックの実行が完了したことを検出するために、ブロックをいくつかの方法で制限 ( 定義 ) します。
ブロックは可変サイズであり、4から128の命令を含み、多くとも32のロードおよびストアを実行 ry
。ハードウェアは、プログラムをデータフロー命令のブロックに分割し、シーケンシャルメモリセマンティクス[12]を実行するためのロードおよびストア識別子を割り当てるために、コンパイラに依存しています。
ry 、コンパイラは、述語を使用して、有用な命令で満たされた大きなブロックを形成します。
コミットを単純化するために、アーキテクチャはコンパイラに依存して、すべてのブロックから単一の分岐が生成され、レジスタの書き込みと使用されるストア識別子のセットをエンコードします。
0189>>188垢版2018/07/27(金) 01:47:20.55ID:pBBIx/eO?2BP(0)

 E2コアは、スカラーモードとベクトルモードの2つの実行モード ry
? ry 他の命令にオペランドを送信でき、 ry ALUのうち2つを除くすべての命令がオフ ry 。
スカラーモードでは、どの命令もブロック内の他の回路にオペランドを送信でき、電力を節約するためにALUのうち2つを除くすべてがオフになります。
? ry 、すべてのN個のALUはオンになっていますが、命令は同じベクタレーンの命令にオペランドのみを送信できます。
ベクタモードでは、 N個全てのALUはオンになっていますが、回路は同じベクタレーンの回路にのみオペランドを送信できます。
モードは、ブロックヘッダのビットからブロックごとに決定されます。
これにより、各コアは、ブロックごとに異なるアプリケーションフェーズに迅速に適応 ry
0190>>189垢版2018/07/27(金) 01:49:59.06ID:pBBIx/eO?2BP(0)

2.1 コアの作成
?   ry 、コアを構成して分解することによって、 ry 。
 E2と他のプロセッサを区別する重要な特性の1つは、コアの構成と分解によって、特定の作業負荷に対してアーキテクチャを動的に適応させることです。
設計時にコアのサイズと数を固定するのではなく、実行時に1つ以上の物理コアを結合して、より大きな、より強力な論理コアを形成 ry
? 、ワークロードのシリアル部分 ry 。
たとえば、すべての物理コアを積極的なスーパースカラのように機能する1つの大きな論理プロセッサにまとめることで、処理内容の直列部分を処理できます。
また、十分なスレッドレベルの並列 ry 、同じ大きな論理プロセッサを分割して、各物理プロセッサが独立して動作し、独立したスレッドから命令ブロックを ry
? コアをまとめてコアを合成し、分割するコアを分解コアと呼びます。
コアをマージしまとめる事をコア合成 ( 融合 構成 形成 ) と、コアを分割する事をコア分解 ( 分割 分離 ) と呼びます。
 論理コアは、物理コア間のレジスタおよびメモリへのアクセスをインターリーブして、論理コアに、合成されたすべての物理コアの結合された計算リソースを与えます。
たとえば、2つの物理コアで構成される論理コアは、アドレスの追加ビットを使用して2つの物理キャッシュ間で選択し、L1キャッシュ容量を効果的に2倍にします。
? 、追加のレジスタファイル容量に電力が供給され、 ry 。
レジスタファイルも同様にインターリーブされますが、64個のレジスタだけがISAによってサポートされているため、追加のレジスタファイル分の電源は遮断され、消費電力が削減されます。
 各命令ブロックは、単一の物理プロセッサにマッピング ry 。
0191>>190垢版2018/07/27(金) 02:04:38.79ID:pBBIx/eO?2BP(0)

Page 3

構成時に、アーキテクチャは投機的命令ブロックを実行するために追加のコアを使用します。
? 非推測ブロック非投機ブロックがコミットすると、 ry 。
非投機ブロックがコミットすると、コミット信号が出口分岐アドレスと共に論理プロセッサ内の他のすべてのコアに送信されます。
正しいパス上の投機的ブロックは実行を継続し、非取得パス上のブロックは押しつぶされる。
ry 詳細 ry 2.2.1 ry
?  ry 、構成を変更するオーバーヘッドが、 ry 向上によって上回る ry 。
 コア構成は、構成を変更するオーバーヘッドを、より効率的な構成のパフォーマンス向上が上回る場合にのみ実行されます。
合成は常にブロック境界で行われ、ランタイムシステムによって開始されます。
構成が有益なシナリオの数を増やすために、E2はコアを構成する2つの異なる方法を提供し、それぞれがオーバーヘッドと効率のトレードオフを提供します。
 フルコンポジションは、論理コア内の物理コアの数を変更し、レジスタファイルとキャッシュのマッピングを変更します。
ダーティなキャッシュ・ラインは、遅延してメイン・メモリに書 ry
。論理レジスタとキャッシュの位置は、物理コア全体に均等に分散されます。
? ry 、より大きな論理キャッシュ(すべての物理コアのキャッシュ容量の合計)につながります。
キャッシュラインは、単純なハッシュ関数を介してマッピングされ、より大きな論理キャッシュ(すべての物理コアのキャッシュ容量の合計)になります。
0192>>191垢版2018/07/27(金) 02:05:52.16ID:pBBIx/eO?2BP(0)

 クイックコンポジションは、追加のコアを論理プロセッサに追加しますが、同じL1データキャッシュとレジスタのマッピングを保持し、ダーティキャッシュラインをメインメモリに書き出しません。
? ry 、論理プロセッサは完全なコンポジションで可能なよりも小さなデータキャッシュになりますが、 ry 。
これにより、論理プロセッサのデータキャッシュはフルコンポジションで可能な大きさよりも小さくなりますが、作成した後もキャッシュに既に存在するデータへのアクセスが確実に行われます。
? ry 、実行ユニットを追加すると有効ですが、キャッシュを再構成するオーバーヘッドがより大きい、より効率的なキャッシュ構成の節約よりも大きい場合に、短期間のアクティビティバーストに最も役立ちます。
クイックコンポジションは、実行ユニット追加が優位性を齎す短期間バーストアクティビティに最も役立ちますが、それはキャッシュを再構成するオーバーヘッドの節約が、キャッシュのより効率的な構成時を上回る場合にです。
?  ry 電力を節約するように電力を供給します。
 分解は、論理プロセッサから物理コアを削除し、除去されたコアへの電力供給は電力を節約する形で行われます。
実行は残りの物理コアで継続されます。
分解するには、論理プロセッサから落とされる各キャッシュのダーティラインをフラッシュし、キャッシュマッピングを更新する必要があります。
? ry が追い出されたときにのみ書き戻されます。
残りのコアのダーティー・キャッシュ・ラインは、キャッシュ・ラインが追出される時点でのみライトバックされます。
0193>>192垢版2018/07/27(金) 02:08:34.87ID:pBBIx/eO?2BP(0)

2.2 投機
? スペキュレーションは、シリアルワークロードで優れ ry 。
 投機は、直列処理で優れたパフォーマンス ry
? ry 推測を積極 ry 。
E2は、 ry 投機を積極 ry
? ry 推測する。
結合述語分岐予測子[5]は、2つのレベルで投機する。
? ry 予測します。
まず、ブロック間の推測のために各ブロックの分岐出口アドレスを投機的予測します。
第2に、述語値を予測することによって、ブロック内の制御フロー経路を予測する。
2.2.1 ブロック間の推測
 分岐出口アドレスを予測することにより、現在のブロックが完了する前に命令ブロックをフェッチして実行 ry
? ry 、非推論としてマークされ、 ry 。
最も古い命令ブロックは、非投機としてマークされ、分岐出口アドレスを予測する。
このアドレスはフェッチされ、命令ウィンドウ内に使用可能なスペースがある場合、論理プロセッサ内の別の物理コアまたは同じ物理コア上で実行を開始します。
 実行された分岐アドレスは、ブロックが完了する前に解決されることがよくあります。
? ry 、取られたアドレスを ry 。
この場合、非投機ブロックは、得られたアドレスを論理プロセッサ内の他のコアに通知する。
最も古い命令ブロックは、非投機的ブロックになる。
? 正しく推測 ry 。
正しく投機されなかったブロックは押しつぶされます。
? ry 取られた分岐信号 ry 。
この得られた分岐信号は、コミット信号とは異なる。
? 取られたブランチは、 ry 推測を続行し、 ry 。
得られたブランチは、次のブロックが投機を続行し、新しい命令ブロックのフェッチ ry 可能にする。
しかし、レジスタ値とメモリ値は、コミット信号の後まで有効ではありません。
0194>>193垢版2018/07/27(金) 02:09:28.17ID:pBBIx/eO?2BP(0)

コンポーネント    パラメータ    領域(mm2)  %領域

命令ウィンドウ    32x54b      0.08    2%
分岐予測器          0.12    3%
オペランドバッファ  32x64b      0.19    5%
ALU      4 SIMD、Int + FP  0.77    20%
レジスタファイル  64 x 64b    0.08    2%
ロード・ストア・キュー        0.19    5%
L1 Iキャッシュ    32kB      1.08    28%
L1 Dキャッシュ    32kB      1.08    28%
コントロール          0.19    5%

コア            3.87    100%

L2キャッシュ    4MB      100

表1: E2コアのコンポーネント、設計パラメータ、および領域
0195>>194垢版2018/07/27(金) 02:16:45.99ID:pBBIx/eO?2BP(0)

? ブロック内の推測
2.2.2 ブロック内での投機
  ry 3つのタイプ ry
? 述語推測は、 ry 。
述語投機は、述語の値を予測するために結合述語分岐予測子を使用する。
? 投機的ブロックが投機的ブロックによって変更される可能性のあるL1キャッシュから ry 。
軽投機的なブロックが投機的ブロックによって変更される可能性のあるL1キャッシュから値をロードするとき、投機的ブロック内でメモリ投機が発生する。
? ry ・スペキュレーションが発生 ry 。
ロード・ストア・キュー(LSQ)によって、ロード・ストア識別子の低いストアが実行される前にロード ry 、ロード投機が発生します。
? ry 、誤った推測は、 ry 。
 3つすべての場合において、誤った投機は、命令ブロック全体の再実行を必要とする。
これは比較的軽量であり、すべてのオペランドバッファ内の有効ビットを無効にし、ゼロオペランド命令を再ロードするだけでよい。
? 2.3 ry と頻度
2.3 面積と周波数
 ChipEstimate InCyte [4]と業界平均の65nmプ ry 、E2プロセッサのエリアモデルを開発 ry
。設計パラメータとコンポーネント領域を表1 ry 。 >>194
各E2コアにはL1キャッシュを含む3.87 mm2 ry
?  InCyteのバージョンでは、頻度の見積り ry 。
 InCyteの我々のバージョンでは、周波数見積りは利用できません。
しかし、マイクロアーキテクチャは、大規模でグローバルな構造を持たず、チップ全体にわたる分散制御 ry
。このため、E2は65nmで600?1000MHzの標準ARMマルチコア ry と同等の周波数 ry 期待 ry [2]。

3. 実行パイプライン
 E2の実行は、命令フェッチ、実行、コミットの3つの主要段階 ry
、最初にスカラーモードで動作するときの各ステージの動作について説明し、次 ry ベクトルモードの違い ry
3.1 フェッチ
 E2と従来のアーキテクチャとの主な違いの1つは、E2が単一命令を連続的にフェッチするのではなく、一度に多くの命令をフェッ ry 。
0196>>195垢版2018/07/27(金) 02:22:41.77ID:pBBIx/eO?2BP(0)

Page 4

? 命令最大128命令のブロック ry 一度にフェッチ ry 。
総合計128以内の命令を持つブロックがL1命令キャッシュから一度にフェッチされ、命令ウィンドウにロードされます。
命令は、ブロックコミット(または、ry 3.3.1 ry 、おそらく長くなる)まで、ウィンドウに常駐しています。
 物理コアは、同時に1つの128命令ブロック、2つの64命令ブロック、または4つの32命令ブロックをウィンドウ内でサポートします。
命令ブロックは、ブロック内の命令数、特殊ブロック動作用のフラグ、およびブロックによって書き込まれたグローバルレジスタを符号化するビットベクトルおよび使用されるストア識別子を含む128ビットブロックヘッダから始まる。
命令は32ビット幅であり、一般に少なくとも4つのフィールドを含む:

? ry 数とともに実行する命令。
* オペコード[9ビット]: 受け取る入力オペランドの数付きで実行する命令。
* 述語[2ビット]: 命令が述語ビットで待機する必要があるかどうか、およびそのビットがtrueまたはfalseの場合に実行するか ry
* ターゲット1 [9ビット]: 命令の結果のコンシューマの識別子。コンシューマがレジスタの場合、このフィールドはレジスタ番号です。
コンシューマが別の命令である場合、このフィールドにはコンシューマの命令番号(オペランドバッファへのインデックス ry )と、結果がオペランド0、オペランド1、または述語として使用されるかどうかが含まれます。
? ry 即時[9ビット]: ry 即時命令 ry 。
* ターゲット2 /即値[9ビット]: 2番目の命令ターゲット、または即値命令の定数値のいずれか。

 命令ウィンドウは4つの等しいバンクに分割され、各バンクは1サイクルにつき2つの命令をロードする。
定数生成命令などの入力オペランドを必要としない命令は、命令番号をレディキューにプッシュ ry 直ちに実行 ry スケジューリング ry 。
0197>>196垢版2018/07/27(金) 02:29:09.72ID:pBBIx/eO?2BP(0)

3.2 実行する
 ry 、レディキュー ry 番号を読 ry 開始 ry
。オペランド、オペコード、および命令ターゲットフィールドは、ALU、レジスタファイル(読み出し命令用)、またはロードストアキュー( ロー ry ア用)のいずれかに転送されます。
? 、結果が(もしあれば)適切
ターゲットフィールドは、結果(もしあれば)を適切なオペランドバッファ(または書き込みの場合はレジスタファイル)に戻すために使用されます。
?  結果がオペランドバッファに転送されると、 ry 。
 結果がオペランドバッファに戻されると、ターゲットとなる命令がチェックされ、どの入力が必要であり、どのオペランドが既に到着しているかがわかります。
命令のすべてのオペランドが到着した場合、命令番号がレディキューに ry
。ブロックが完了するまで、 ry 継続 ry
。 他のEDGEやデータ・フロー・アーキテクチャーと同様に、メモリー操作が命令型言語 ry 順序 ry 確実に従うように、ロードとストアに特別な処理が必要です。
? ry 方法を使用します。 ry 。
E2は[10]で説明した方法を使用し、コンパイラはシーケンシャルメモリセマンティクスを実施するためにマイクロアーキテクチャが使用するプログラム順序を示すシーケンス識別子で各メモリ操作をエンコードします。
? プレディケートのためにブロック内のすべての命令が ry 。
予測のためにブロック内のすべての命令が必ず実行されるわけではないため、 ry ブロックの完了を検出する必要 ry
? ry (1)唯一の分岐 ry 。
ブロックは、(1)一つ ( 又唯一 ) の分岐が実行されたとき、および(2)外部状態を変更するすべての命令(レジスタ書き込みおよびストア)が実行されたときに完了したとみなされる。
? ry criteria(2)が満たされた ry 。
コンパイラはレジスタの書き込みとストア識別子を命令ブロックヘッダにエンコードし、マイクロアーキテクチャが上記(2)の判定が満たされたときを識別できるようにします。
0198>>197垢版2018/07/27(金) 02:33:17.48ID:pBBIx/eO?2BP(0)

3.3 コミット
 実行中、命令はアーキテクチャ状態を変更しません。
代わりに、すべての変更がバッファリングされ、ブロック完了時に一緒にコミットされます。
? ry 最も低いシーケンス識別子 ry 。
コアがコミット・フェーズに入ると、レジスタ・ファイルはすべてのレジスタ書き込みで更新され、ロード・ストア・キュー内のすべてのストアは、最小のシーケンス識別子で始まるL1キャッシュに送信されます。
すべてのレジスタ書き込みおよびストアがコミットされると、コアは同じ論理プロセッサ内の他のすべてのコアにコミット信号を送信します。
3.3.1 リフレッシュ
 リフレッシュと呼ばれる重要なコミット最適化の1つは、命令ブロックが自身に分岐するときに発生します。
命令をL1命令キャッシュから再びロードするのではなく、命令をそのまま残し、オペランド・バッファおよびロード・ストア・キュー内の有効ビットのみをクリアする。
これにより、命令フェッチフェーズを完全にバイパス ry
? ry 実行されるたびに再生成されないようにする ry 。
定数を生成する命令は、オペランドバッファの値をリフレッシュ後も有効なままにしておき、命令ブロックが実行されるたびに再生成される事がないようにすることもできます。
0199>>198垢版2018/07/27(金) 02:34:47.64ID:pBBIx/eO?2BP(0)

要素サイズ  最小値(1 ALU)    最大値(4 ALU)

8ビット  8        32
16ビット  4      16
32ビット  2(1つのシングルfp)  8(4つのシングルfp)
64ビット  1 

表2: サポートされているベクトル演算
0200>>199垢版2018/07/27(金) 02:39:37.38ID:pBBIx/eO?2BP(0)

3.4 ベクトルモード
 ry 、各プロセッサコアをN個(このペーパーでは4つ)の独立したベクトルレーンに分割します。
ry 、命令は同じベクタ・レーン内の他の命令のみをターゲットにすることができ、オペランド・バッファとALU間にフル・クロス・バーを必要としません。
各レーンは、32エントリ命令ウィンドウ、2つの64ビットオペランドバッファ、16レジスタ、および1つのALUで構成 ry
。 E2は、64ビット、128ビット(256ビットにパディングされた)、および256ビット幅のベクトルに対するベクトル演算 ry
。各ALUは、8つの8ビット、4つの16ビット、または2つの32ビット・ベクタ・オペレーション ry
? ry 1コアあたり最大32 ry 。
4つのALUにより、E2は1コア1サイクルあたり最大32のベクトル演算 ry
。 64ビット・ベクタ・オペレーションは単一のALUを使用し、128ビット・オペレーションと256ビット・ベクタ・オペレーションは4つのALUすべて ry
。表2に、各ベクトル長とデータ要素サイズでサポートされる並列ベクトル演算の数 ry 。 >>199
 ベクトル命令を含む命令ブロックは、各ベクトルレーンの命令ウィンドウのサイズである32命令に制限される。
レーン1で発行されるベクトル命令は、他の3つのレーンで自動的に発行され、スカラー命令は常にレーン1に割り当てられます。
?  ry 形成するために別名が付けられます。
 ベクタモードでは、64個の64ビット物理レジスタ(R0R63)に16個の256ビットベクタレジスタ(V0V15)を形成するためにエイリアスされます。
物理レジスタファイルを4つのバンクに分割して、ベクトルの単一サイクルアクセス ry
? 3.4.ベクトル ry
3.4.1 ベクトルモードでのメモリアクセス
 E2コアは、256ビットのチャンクで動作し、中小長のベクトルでデータレベルの並列処理を効率 ry
? より大きなベクトルでの操作は、効率的なリフレッシュモードを使用して命令フェッチと定数の生成(セクション3.3)をバイパスするループ内の複数の命令ブロックを使用して実行されます。
ループ内の複数の命令ブロックでのより大きなベクトル操作に於ては、効率的なリフレッシュモードを使用する事で命令フェッチと定数の生成がバイパスされます(セクション3.3)。
0201>>200垢版2018/07/27(金) 02:41:44.47ID:pBBIx/eO?2BP(0)

Page 5

 複数の命令ブロック間で大きなベクトルを分割すると、同じベクトルの隣接するチャンクのロード間に遅延が発生する可能性 ry 。 ry 。
この遅延を軽減するために、E2はメモリインタフェースコントローラ(MIC)と呼ばれる特殊なユニット ry
。 MICはL1データキャッシュの制御を引き継ぎ、キャッシュの一部をプリフェッチストリームバッファに変更します[8,11]。
ストリームバッファは、次のベクトルロードのアドレスを予測し、そのデータをキャッシュに早期に持ち込む。
これにより、後続の命令ブロックのベクタロードが常にL1キャッシュにヒット ry
?   ry 従来のキャッシュとして動作 ry 。
 ベクトルおよびスカラー演算は命令ブロックで混合されるので、キャッシュの一部は依然として従来型キャッシュとして動作する必要があります。
? ry 半減させますか? それらの方法をスト??リームバッファ用のメモリに変換する。
キャッシュのサイズを半分にするのではなく、キャッシュのセットアソシアティビティを半減させますか? つまりそれらのウェイをストリームバッファ用のメモリに転換する。
ベクタロード時に、キャッシュはストリームバッファをチェックします。
スカラのロードとストアでは、チェックするセットの数は少なくなりますが、キャッシュは同じ方法でキャッシュをチェックします。
?  ry 、ブロックコミットまでストリームバッファにバッファされ、その時点 ry 。
 ベクタストア命令は、ストリームバッファにバッファされ、ブロックコミット時点でメインメモリに直接書き込まれます。
0203>>201垢版2018/07/27(金) 02:47:07.02ID:pBBIx/eO?2BP(0)

4. 例:RGBからYへの変換
 このセクションでは、E2でプログラムをベクトル化 ry 例 ry 。
図2は、カラー画像をグレースケールに変換するために一般的に使用されるRGBからYへの輝度変換のためのCコードおよび対応するベクトル化されたアセンブリを示す。

1 // numVectors > 0
2 // y = r * .299 + g * .587 + b * .114;
3 void rgb2y(int numVectors,
4   __vector float *r, __vector float *g,
5   __vector float *b, __vector float *y)
6 {
7 __vector float yr = { 0.299f, 0.299f,
8   0.299f, 0.299f };
9 __vector float yg = { 0.587f, 0.587f,
10   0.587f, 0.587f } ;
11 __vector float yb = { 0.114f, 0.114f,
12   0.114f, 0.114f };
13
14 for (int i = 0; i < numVectors; i++)
15   y[i] = r[i] * yr + g[i] * yg + b[i] * yb;
16 }
17
18 _rgb2y:
19   read t30, r3  // numVectors
20   read t20, r4  // next rのアドレス
21   read t21, r5  // 次のgのアドレス
22   read t22, r6  // 次のアドレスb
23   read t32, r7  // yのアドレス
24   read t31, r8  // i
25   read t1, v0  // vector yr
26   read t3, v1  // ベクトルyg
27   read t5, v2  // vector yb
28
0204>>203垢版2018/07/27(金) 02:49:23.89ID:pBBIx/eO?2BP(0)

29 // RGBからYへの変換
30   vl t0, t20 [0]  // ベクトルロード
31   vl t2, t21 [1]
32   vl t4, t22 [2]
33   vfmul t6, t0, t1  // ? ベクトルfp mul  ベクトル 乗算 fp
34   vfmul t7, t2, t3
35   vfmul t8, t4, t5
36   vfadd t9, t6, t7  // ? ベクトルfp add  ベクトル 加算 fp
37   vfadd t10, t8, t9
38
39 // 結果をYに格納する
40   multi t40, t31, #32
41   add t41, t32, t40
42   vs 0(t41), t10 [3]  // ベクトルストア
43
44 // ループテスト
45   tlt t14, t31, t30
46   ret_t<t14>
47   br_f<t14> rgb2y
48   addi r8, t31, #1
49   addi r4, t20, #32
50   addi r5, t21, #32
51   addi r6, t22, #32

図2: ベクトル化されたRGBからYへの輝度変換のためのC ry およびE2アセンブリリスト。
0205>>204垢版2018/07/27(金) 02:55:53.80ID:pBBIx/eO?2BP(0)

? ry 三重線を有する。
画像の各ピクセルは、赤、緑、および青の色成分に対応する三重要素を有する。
輝度(Y)は、各RGB値に定数を掛け、3つの結果を合計 ry
? ry 、並行して並列化することができます。
このプログラムは、各変換が独立しているため、並行して複数の変換を実行するために、並列化することができます。
4.1 Cソース
?  ry 、これらのベクトルへのポインタ、 ry Yへのポインタ、変換するベクトルの数 ry 。
 各RGBコンポーネントはベクトルで表され、これらの三つのベクトルへのポインタ、事前に割り当てられた結果ベクトルYへのポインタ、そして変換するベクトルの数が引数として関数に渡されます(行4-5)。 >>203
変換の定数もベクトルに格納されます(7-12行目)。
各ベクトルは256ビット幅で、個々のデータ要素は32ビット単精度浮動小数点型なので64ビットにパディングされます。
変換は単純なforループを使用して行われます(1416行目)。
? この例 ry 、ループを展開してブロックを埋めるわけではありません。
例を単純化するために、ループ展開でブロックを埋める事を避けます。
4.2 アセンブリ
 アセンブリリストは、1851 ry 。 >>203-204 >>203 >>204
? ry 、新しいブロックはすべてのラベル(ライン18)で開始されます。
命令はコンパイラ(この例では1つのブロック)によってブロックにグループ化され、全てのラベルは新しいブロックの先頭を意味します(ライン18)。
ry 、ブロックをアトミックにフェッチ、実行、およびコミットします。
慣習的には、スカラーレジスタを表すためにRn、ベクトルレジスタを表すVn、テンポラリオペランドを表すTn ry
? ry 、すべてのブロックで参照できるグローバル状態の一部です。
スカラーレジスタとベクタレジスタは、全てのブロックでグローバルステートとして参照できる構成要素です。
? ただし、一時的なオペランドは、 ry 表示されます。
但し、テンポラリオペランドは、定義されたブロック内でのみ参照可能です。
? ry 19行目???卸行目 ry 。
グローバルレジスタファイルから読み取ることができる命令は、レジスタREAD命令(19行目 - 27行目)のみです。
ただし、ほとんどの命令はグローバルレジスタファイルに書き込むことができます。
0206>>205垢版2018/07/27(金) 02:57:32.83ID:pBBIx/eO?2BP(0)

 ベクトル命令は 'v'で始まります(行30-37と42)。 >>204 >>203-204 >>203
すべてのロード命令とストア命令には、ロード・ストア識別子が割り当てられ、シーケンシャル・メモリ・セマンティクスが確実に行なわれます(3032行目と42行目)。
? これは、割り当てられた負荷ID0は、ID1のストアの前に ry 。
ここで割り当てられた処理ID0は、ID1のストアの前に完了する必要があります。
? ry 見ることができない。
 ほとんどの命令は述語になり得、述語は定義されたブロック内でしか参照できない。
述語命令は、述語命令に符号化された極性と比較される真または偽を表すオペランドを取る(_tおよび_fで示される)。
45行目のテスト命令は、受信命令(行4647)が自身の符号化された述語と比較する述語を作成する。
一致する述部を持つ命令だけが実行されます。


Page 6

 ブロックは最大で128個のスカラ命令に制限されています。
ベクトル命令を使用する場合、ブロックは合計32個のスカラ命令とベクトル命令に制限されます。
? には27種類 ry 。
ブロック_rgb2yには計 27 個のスカラー命令とベクトル命令が混在しています。
0207>>206垢版2018/07/27(金) 03:03:38.97ID:pBBIx/eO?2BP(0)

サイクル  1 2 3 4 5 6 7 8 9 1011121314151617
FETCH    IF IF IF IF
READ     R R R R R
READ     R R R R
MEM     L L L S
EX     A A A M M M M M M M M M A A B
EX     M A T M M M M M M M M M A A A
EX     M M M M M M M M M A A
EX     M M M M M M M M M A A

図3: 図2の1つの可能なスケジュール。
0208>>207垢版2018/07/27(金) 03:09:30.30ID:pBBIx/eO?2BP(0)

? 4.3 指導スケジュール
4.3 命令スケジュール
 図3は、図2の例の1つの可能なスケジュー ry 。 >>207
我々は、3サイクルの32ビット浮動小数点乗算を仮定し、すべてのロードがL1キャッシュでヒットし、3サイクルが必要となる。
ry 1サイクルにつき8命令をフェッチ ry 、27命令ブロック ry 4サイクル ry
。サイクル1では、8つのレジスタ読み出し命令がフェッチされ、これらの命令は依存性がないので、次のサイクルですべて実行 ry
? すべてのグローバル・レジスタを読み出すために5サイクルを必要とする1サイクルにつき2回のレジスタ・リードが実行できます。
1サイクルに付き 2 つのレジスタの読出しが実行でき 5 サイクルですべてのグローバル・レジスタを読出せます。
サイクル2では、レジスタR4(20行目)とR8(24行目)が読み出され、ベクタロード(30行目)、即値乗算(40行目)、および即値(48行目)命令に送られます。 >>203-204 >>203 >>204
これらの命令はそれぞれ1つのオペランドで待機しているため、すべて準備ができてサイクル3で実行を開始します。
サイクル17でブロックがコミットする準備ができるまで、ry 継続

5. 結論
?   ry 、E2アーキテクチャについて説明しましたか? 高性能な電力を効率的に達成するために設計されたExplicit Data Graph Execution(EDGE)ISAを利用した新しい動的マルチコア。
  この論文では、E2アーキテクチャ -- 演算性能が高く電力を効率的に達成するために設計されたExplicit Data Graph Execution(EDGE)ISAを利用した新しい動的マルチコアに付いて説明しました。
EDGEアーキテクチャとして、E2はデータフローの実行と攻撃的な投機によって命令レベルの並列 ry
、ベクトルとSIMDのサポートによって、データ・レベルの並列 ry 説明 ry
。このベクトルのサポートにはスカラー命令が散在しているため、E2は従来のベクトルプロセッサよりも柔軟性があり、従来のスカラーアーキテクチャよりも優れています。
?   ry 、SystemCとMicrosoft Phoenixソフトウェアの最適化と分析フレームワークで新しいコンパイラバックエンドを使用してE2用の ry 。
0209>>208垢版2018/07/27(金) 03:12:18.38ID:pBBIx/eO?2BP(0)

 我々は、最適化と分析のフレームワークであるMicrosoft Phoenixソフトウェア付きの新しいコンパイラバックエンドと SystemC とを使用して E2用のアーキテクチャシミュレータを開発しました[1]。
? 、産業強度コンパイラ ry 。
ry 、我々の産業強度コンパイラと組み合わせることで、アーキテクチャの詳細な調査と評価を実行できるサイクル精度の高いFPGA実装を開発中です。
? ry 先行しています。
 多くの課題が待受けています。
アクセラレータとして説得するためには、GPUや専用ベクトルプロセッサなどの特殊なアクセラレータよりも優れた性能、電力効率、プログラマビリティ ry
。 E2は汎用プロセッサとしても優れている可能性 ry 。その場合、新しいISAへの移行を正当化するために、現在の静的マルチコア・アーキテクチャに比べて十分な電力/性能 ry
。 E2のパフォーマンスと電力効率は、コアを動的に構成および分解する能力を基盤としているため、動的構成を管理するための正しいポリシーとメカニズムには慎重な検討 ry
? ry プログラマーが基盤となるハードウェアについて推論 ry 。
理想的には、コンポジションに関するすべての決定をランタイムシス ry 、プログラマがこのハードウェアの根本に付いて推論することを完全に免れます。
 最後に、組み込みデバイスからデータセンターまで、E2のパワーとパフォーマンスのトレードオフの能力が役立つさまざまなアプリケーションドメインがあります。
今後数か月 ry 電力性能 ry 調査
0210>>209垢版2018/07/27(金) 03:14:44.39ID:pBBIx/eO?2BP(0)

6. 参考文献
[1] Microsoft Phoenix。
http://research.microsoft.com/phoenix/
[2] ARM。 Cortex-A9 MPCoreテクニカルリファレンスマニュアル、2009年11月
[3] D. Burger、SW Keckler、KS McKinley、M. Dahlin、LK John、C. Lin、CR Moore、J. Burrill、RG McDonald、W. Yoder、およびTRIPSチーム。 EDGEアーキテクチャを使用したSilicon Endへのスケーリング IEEE Computer、37(7):44?55、2004年7月。
[4]ケイデンス。 Cadence InCyte Chip Estimator、2009年9月。
[5] H. EsmaeilzadehおよびD. Burger。.階層的制御予測:積極的な予測のサポート。.マルチコアアーキテクチャにおけるシーケンシャルプログラムの並列実行に関する2009ワークショップの講演会、2009年。
[6] MD HillとMR Marty。 マルチコア時代のアムダールの法則。 IEEE COMPUTER、2008。
[7] E.?Ipek、M. K?rman、N. K?rman、およびJF Mart?ez。 コア・フュージョン:チップ・マルチプロセッサにおけるソフトウェア・ダイバシティの適応。 コンピュータアーキテクチャに関する国際シンポジウム(ISCA)、サンディエゴ、CA、2007年6月。
0211>>210垢版2018/07/27(金) 03:15:58.77ID:pBBIx/eO?2BP(0)

? [8] ry 小さな完全連想キャッシュ ry 。
[8] NP Jouppi。 小さなフルアソシエイティブキャッシュとプリフェッチ・バッファを追加することで、ダイレクト・マップ・キャッシュのパフォーマンスを向上させます。 SIGARCH Computer Architecture News、18(3a)、1990を参照されたい。
? [9] ry マイクロシンポジウム ry 。
[9] C.Kim、S.Sethumadhavan、D.Gulati、D.Burger、M.Govindan、N.Ranganathan、およびS.Keckler。 構成可能な軽量プロセッサ。.第40回IEEE / ACMマイクロアーキテクチャ国際シンポジウム議事録、2007年。
[10] S. Sethumadhavan、F. Roesner、JS Emer、D. Burger、およびSW Keckler。 遅延バインディング:順序なしロード・ストア・キューを使用可能にします。 2007.第34回国際コンピュータシンポジウム講演予稿集、347357頁、ニューヨーク、 NY 、米国、2007年。 ACM。
? [11] ry 国際シンポジウム ry 。
[11] T.シャーウッド、S。セア、B.カルダー。 予測子指示ストリームバッファ。 In Proceedings of the 33rd Annual ACM/IEEE International Symposium on Microarchitecture, 2000.第33回ACM / IEEE国際マイクロアーキテクチャシンポジウム講演予稿集、2000年。
[12] A.スミス。 明示的なデータグラフのコンパイル。 博士論文、テキサス大学、オースティン、2009年。
0212>>184-211垢版2018/07/27(金) 03:21:15.54ID:pBBIx/eO?2BP(0)

>>184-211
http://theregister.co.uk/2018/06/18/microsoft_e2_edge_windows_10/
http://gigazine.net/news/20180620-microsoft-e2/
http://web.archive.org/web/20110119204947/research.microsoft.com:80/en-us/projects/e2/


>478 山口青星 160930 1929 /EmvfkU+
:
>           意味スレッド有機分散普遍浸透

>479 478 160930 1931 /EmvfkU+
:
>> マルチ PC 的スーパスカラ マルチ PC 的順序外実行
>>>>>>>01> ↓
>>>01> フェイルレストランザクション ( 普遍浸透有機スレッド Aperios BeOS PalmOS6 DfBSD )
>>>>>>>01> ↓
>>>>>01> フェイルレストランザクションベース細粒度分散 VM
>>>>>>01>
>>>>>>01>
>>v1> メインメモリ細粒度ページ ( キャッシュライン投影 ) ※1
>>v1> ↓
>>>>>>>>>01> 細粒度ページ単位普遍マルチスレッド ( 完全掌握 ) ※2
>>v1> ↓
>>>>>>>>>01> キャッシュ対応疑似分散 UMA ( コヒーレントレスコヒーレント 浸透スレッド ) ※3
>>v1> ↓
>>>>>>>>>01> 透過可視マルチプロセッサベース論理物理ユニプロセッサ ( 256KB-SPE 込 ) ※4
>>v1>
>>v1> ↓↑ ( VM 策 ↑ / ↓ 環境策 1 )
>>v1>
:
0213>>212垢版2018/07/27(金) 03:23:10.80ID:pBBIx/eO?2BP(0)

>>184-212 >>212
>480 479 161001 2229 hw5iBIwd
>>>>>>>>7> ※1 ROM 化オブジェクト 多段実身仮身 TRONCHIP キュー ( MMU )
>>>>>>>>7> → 自律 機能メモリ
>>>>v>
>>>>v> ※2 選別 波及 浸透 仮身 高低 細胞
> 競合自動回避 分配済オブジェクト投影 ( 必然分配 上流 Ru?y )
>>>>>>>>> API 内外 鏡像 → API 内部 API 外部 ( 内宇宙 外宇宙 )
>>>>>>>>n>
>>>>>>>>>01> ※3 BeBox : キャッシュ非対応 ( 環境 )
>>>>>>>>>71>
>>>>>>>>>01> ※4 MPU 機構直交融合動的普遍オーバライド
>>>>>>>><71> ( 加算器 レジスタ トラップ・ベクタ・ブレークポイント )
>>>>>>>>>71>
>>>>>>>>01> ※5 Rite : スタック 分散 ( Amoeba : 生バイナリ )
>>>>>>01>
:

>485 478 161006 2307 sOXXCC59
:
>>>>><7> 細粒度スレッドレベル部品分散 VM / MTRON WinnyOS ( Aperios/MuseOS )
:
0214>>213垢版2018/07/27(金) 03:25:24.36ID:pBBIx/eO?2BP(0)

>>184-213 >>212-213
>487 486 161008 1739 7/TdBlDM
:
>>>>>>>><71> ↓
>>>>>>><7> 有機無機ハイブリッドコンピュータ ( 有機分子 返り値 互換 )
>>>>>>>><71> ↓
:

>502 478 161016 1447 +gGlHDwt
:
>>>>><71> AAP/SPE AI/AL クラスタ
>>>>>>>><71> ↓
>>>>><71> AAP/SPE 有機コンパイル ( 自生 / 3D プリンタ )
>>>>>>>> 細粒度ライブラリベース回路 ( 最適化 )
>>>>>>>> 平面有機回路 積層有機回路
>>>>>>>><71> ↓
:
0216>>215垢版2018/07/27(金) 03:54:39.51ID:pBBIx/eO?2BP(0)

>>184-215 >>212-215
>>25-42 >>97-98
>>212
>意味スレッド有機分散普遍浸透
>ry ( 普遍浸透有機スレッド
>細粒度ページ単位普遍マルチスレッド ( 完全掌握 ) ※2
>キャッシュ対応疑似分散 UMA ( コヒーレントレスコヒーレント 浸透スレッド ) ※3
>>213
>※2 選別 波及 浸透 仮身 高低 細胞
>競合自動回避 分配済オブジェクト投影 ( 必然分配 上流 Ru?y )
:
>細粒度 ry 分散 VM /
>>214
>有機無機ハイブリッドコンピュータ ( 有機分子 返り値 互換 )
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況