ID Artikel: 000074260 Jenis Konten: Pemecahan Masalah Terakhir Ditinjau: 11/09/2012

Mengapa kompilator C-to-Hardware (C2H) Nios II saya menghasilkan waktu gagal akselerator ketika kode sumber berisi operator shift variabel?

Lingkungan

  • Prosesor Intel® Nios® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Deskripsi

    Alasan yang memungkinkan desain tidak memenuhi waktu adalah bahwa desain berisi satu atau lebih pergeser barel dalam seri dengan logika kombinatorial lainnya. Kapan pun operator shift digunakan dengan variabel operand yaitu "a = b << c;" Nios® II C2H menghasilkan logika barrelshift. Logika barrelshift yang dihasilkan oleh C2H mengimplementasikan multixer kombinatorial dalam jumlah besar yang secara signifikan dapat memengaruhi waktu desain.  Dua contoh berikut menunjukkan kode sumber yang dapat menyebabkan degradasi waktu karena peralihan laras.


    Input Shift Kombinatorial:

    Di bawah ini adalah contoh input peralihan kombinatorial ke shifter barel yang dapat menyebabkan degradasi waktu.

    int a, b, c, d, result, shift_distance;
    result = (a b c d) >> shift_distance;

    Hasil tambahan digunakan sebagai operan ke operator shift, sehingga jalur waktu yang panjang dibuat antara salah satu input tambahan dan 'hasil'. Untuk meningkatkan jumlah pipelining, berikan hasil tambahan ke variabel sementara seperti yang ditunjukkan di bawah ini:

    int a, b, c, d, addition_result, shift_distance;
    addition_result = a b c d;
    result = addition_result >> shift_distance;


    Keluaran Shift Kombinatorial:

    Di bawah ini adalah contoh keluaran peralihan kombinatorial dari peralihan barel yang dapat menyebabkan degradasi waktu.

    int a, b, c, d, result, shift_distance;
    result = (a >> shift_distance) b c d;

    Hasil peralihan digunakan sebagai operan ke operator tambahan, sehingga jalur waktu yang panjang dibuat antara 'a' dan 'hasil'. Untuk meningkatkan jumlah pipelining, berikan hasil shift ke variabel seperti yang ditunjukkan di bawah ini:

    int a, b, c, d, result, shift_result, shift_distance;
    shift_result = a >> shift_distance;
    result = shift_result b c d;

    Produk Terkait

    Artikel ini berlaku untuk 1 produk

    Perangkat yang Dapat Diprogram Intel®

    Isi halaman ini adalah kombinasi terjemahan manusia dan komputer dari konten berbahasa Inggris. Konten ini diberikan hanya untuk kenyamanan Anda serta sebagai informasi umum dan tidak bisa dianggap sebagai lengkap atau akurat. Jika terdapat kontradiksi antara versi bahasa Inggris halaman ini dan terjemahannya, versi bahasa Inggris akan didahulukan. Lihat versi bahasa Inggris halaman ini.