branch-prediction

    9

    1答えて

    ブランチングが正しく(x86)分かっていると、プロセッサは時には推測的にコードパスをとり、命令を実行し、間違ったパスの結果を 'キャンセル'します。間違ったコードパスの操作がキャッシュミスや高価な数学演算の原因となるメモリ読み込みのように非常に高価な場合はどうでしょうか?プロセッサが先に高価なものを実行しようとしますか?プロセッサーはこれをどのように扱いますか? if (likely) {

    1

    2答えて

    私は理解しているように、私が持っている場合: if(case 1) { char x[] = "1"; printf("%s",x); } else if(case 2) { char x[] = "12"; printf("blah-blah-blah\n"); printf("%s",x); } はその後、私のコンパイラは実行フロ

    0

    1答えて

    simplescalarでパーセプトロン分岐予測子をシミュレートしたいと思います。私はCプログラミング言語で簡単なコードを書いています。 simplescalarインストールガイドでは、このコマンドは、Cコードをコンパイルします: $ $IDIR/bin/sslittle-na-sstrix-gcc –o hello hello.c が、私はbinディレクトリを持っていません。私は、このコマン

    0

    1答えて

    私はこのコードを持っている:に私は黙認した場合、「各分岐で 『もし』ステートメントを交換してください」、示唆問題として if (null == _priceComplianceSummaryList) { _priceComplianceSummaryList = new List<PriceComplianceSummary>(); } ReSharperのフラグを、変更上記の

    0

    1答えて

    C++(Alpha 21264マイクロプロセッサアーキテクチャ用)で分岐予測アルゴリズムを実装する必要があるコンピュータアーキテクチャクラスの割り当てに取り組んでいます。 解決策は、exampleとして提供されています。この解決策は、Global Share Predictorの実装です。 私は単純に起こっている、特に何、与えられた解決策を理解しようとしています:具体的には、 if (b.br_f

    0

    1答えて

    私はコンピュータアーキテクチャに関する本を読んでいます。この章では、分岐予測について説明します。 私はそれの周りに私の頭を包み込むのに苦労しているこの小さな練習があります。 ループ for (j = 0; j < 2; j++) { for (i = 10; i > 0; i = i-1) x[i] = x[i] + s } ための内部以下------->内部ループ検

    6

    1答えて

    私の考えは、命令キャッシュの制限の影響を示すエレガントなコード例を提供することでした。私は、テンプレートメタプログラミングを使用して、大量の同一機能を作成する以下のコードを書いた。 volatile int checksum; void (*funcs[MAX_FUNCS])(void); template <unsigned t> __attribute__ ((noinline)) s

    0

    1答えて

    Cortex-R4で動作するCコードで最適化を行っています。 まず、コンディションチェックで "__builtin_expect"を指定したときに、アセンブリコードの出力に変更が見られませんでした。 コンパイラが不要なジャンプを生成するようです。 マイCコード: bit ++; (Likely) if(__builtin_expect(bit >= 32),0) { bit -

    -2

    1答えて

    こんにちは私は何かの「次」を私に与えることになっている関数を最適化するために自分の道を進んでいます。これまでのところ、私が持っているものを int fun(int a){ const int k = ...; for(;test_value(a++) != k;); return a; } これは私のアルゴリズムは、実際に働いたことをテストするために迅速

    5

    1答えて

    は、私が(例えばthis questionを参照)により、分岐予測ミスに対する感受性に非効率的になることがあり if(someCondition) { someCode(); } else { alternateCode(); } を使用していることをStackOverflowの上でお読みください。 だから、例えば、switch -constructある swit