Kapan bahaya struktural terjadi pada arsitektur perpipaan?

8

Saya mencari beberapa contoh yang relatif sederhana ketika bahaya struktural terjadi dalam arsitektur pipelined.

Satu-satunya skenario yang dapat saya pikirkan adalah ketika memori perlu diakses selama berbagai tahap pipa (yaitu, instruksi awal mengambil tahap dan memori kemudian membaca / menulis tahap).

Saya berpikir bahwa ada lebih banyak bahaya struktural dalam arsitektur yang lebih kompleks, seperti superscalar. Apakah itu diklasifikasikan sebagai bahaya struktural ketika instruksi dikirim ke unit eksekusi tetapi diantrekan karena unit sedang digunakan?

Jika ini sangat spesifik untuk arsitektur, maka asumsikan MIPS atau yang serupa.

Mat
sumber

Jawaban:

6

Dalam implementasi skalar, bahaya struktural dapat ada jika perangkat keras eksekusi spesifik tidak sepenuhnya disalurkan melalui pipa. Untuk beberapa operasi (mis. Penggandaan dan khususnya divisi), biaya implementasi perpipaan penuh mungkin tidak dianggap layak untuk frekuensi operasi yang diharapkan.

Dalam implementasi superscalar, bahaya struktural mungkin ada karena tidak setiap unit eksekusi dapat melakukan setiap operasi. Misalnya, mendukung memulai pelaksanaan empat operasi memori atau empat multiplikasi setiap siklus akan relatif mahal jika terbatas pada masalah empat-lebar mengingat bahwa jenis operasi yang berbeda kemungkinan akan tersedia.

Mendaftarkan file batas baca dan tulis port juga dapat menimbulkan bahaya struktural. Meskipun dimungkinkan untuk menyediakan cukup port baca dan tulis untuk mendukung kasus terburuk, biaya port file register untuk memenuhi kasus terburuk (bahkan dengan manfaat dalam kompleksitas desain karena tidak harus menangani kasus luar biasa) dapat dianggap tidak layak manfaat ketika kasus-kasus buruk cukup langka atau tidak kritis. Misalnya, beberapa implementasi out-of-order menggunakan penangkapan operan (merebut operan yang tersedia antara waktu operasi memasuki penjadwal dan waktu dijadwalkan untuk eksekusi) dan menyediakan lebih sedikit register port baca dari yang diperlukan untuk operasi lebar penuh (apakah operan tersedia lebih awal dibaca ketika operasi memasuki penjadwal atau ketika operasi dijadwalkan untuk dieksekusi).

(Bahkan untuk implementasi in-order, penerusan hasil dan penggunaan operasi dengan operan sumber register tunggal dapat membuat mendukung empat port read register untuk masalah dua arah menjadi kurang perlu.)

Demikian pula, perbankan sering digunakan untuk cache (dan telah diusulkan untuk mendaftarkan file). Misalnya, dalam kasus umum, dua akses tidak mungkin untuk memetakan ke bank yang sama dari 16 bank. Penyimpanan perbankan jauh lebih murah daripada menambahkan port akses. Potensi konflik bank merupakan bahaya struktural.

Paul A. Clayton
sumber