Apa arti perbankan ketika diterapkan pada register?

13

Jawaban atas pertanyaan tentang StackOverflow tentang apa arti perbankan dalam konteks register yang ditagih ARM menunjukkan bahwa ada beberapa kebingungan tentang arti perbankan ketika diterapkan pada register.

Apa yang dimaksud dengan perbankan sehubungan dengan register?

Paul A. Clayton
sumber

Jawaban:

16

Kata perbankan digunakan dalam dua pengertian berbeda ketika diterapkan pada register.

Register yang Dibelokkan untuk Penanganan Interrupt

Perasaan yang terkait dengan pertanyaan StackOverflow mirip dengan penggunaan dalam peralihan bank (memori) (digunakan oleh beberapa prosesor 8-bit dan 16-bit) dalam fungsinya . Nama-nama kumpulan register dipetakan ke koleksi register fisik yang berbeda. ARMv7 menyediakan satu bank ekstra untuk 7 dari 16 GPR dan lima bank lagi untuk register penunjuk tumpukan dan register tautan (ARM menggunakan register register untuk menyimpan PC yang akan digunakan untuk kembali dari interupsi). Itanium menyediakan satu bank ekstra untuk 16 dari 31 GPR statisnya. (MIPS menyediakan seluruh set 31 GPR, menyebutnya sebagai "set register bayangan".)

Tidak seperti switching bank memori, tujuan utama dari jenis perbankan register ini (biasanya) bukan untuk memperluas penyimpanan yang dapat dialamatkan tetapi untuk memberikan penanganan interupsi yang lebih cepat dengan menghindari perlunya menyimpan nilai register, memuat nilai yang digunakan oleh pengendali interupsi, dan mengembalikan yang asli. mendaftarkan nilai-nilai dan untuk menyederhanakan penanganan interupsi.

(Menggunakan tumpukan aplikasi untuk menyimpan status register membuka kemungkinan meluap memori yang dialokasikan untuk tumpukan ini, menghasilkan pengecualian yang kemudian harus menangani penyimpanan keadaan. Lebih buruk lagi, jika halaman memori segera melewati batas tumpukan dapat ditulisi oleh meningkatkan hak istimewa penangan interupsi tetapi tidak oleh aplikasi, maka aplikasi secara efektif menulis ke halaman yang tidak memiliki izin menulis.Beberapa ABI menghindari masalah ini dengan mendefinisikan satu atau lebih register sebagai volatile lintas interupsi. Ini memungkinkan interupsi handler untuk memuat pointer untuk menghemat keadaan tanpa kondisi aplikasi yang berantakan, tetapi tidak seperti register yang dibelokkan, register volatile interrupt yang ditentukan perangkat lunak tidak dapat dipercaya tidak akan diubah oleh perangkat lunak aplikasi.)

(Menggunakan bank register seperti itu sebagai jendela tetap telah diusulkan untuk menambah jumlah register yang tersedia, misalnya, "Meningkatkan Jumlah Register Efektif dalam Prosesor Berdaya Rendah Menggunakan File Register Windowed", Rajiv A. Ravindran et al., 2003. Orang mungkin juga mencatat kesamaan dengan register stack yang digunakan untuk menghindari register save dan restore overhead untuk panggilan fungsi seperti pada Itanium dan SPARC [yang menggunakan istilah "register windows"], meskipun mekanisme ini biasanya menggeser nama register daripada menukarnya. di luar.)

Dalam hal perangkat keras, register banked dapat diimplementasikan dengan mengubah nama register dalam decode instruksi. Untuk sistem perbankan ARM yang relatif kompleks, ini mungkin akan menjadi mekanisme yang disukai. Untuk sistem perbankan yang lebih sederhana seperti yang digunakan oleh Itanium dengan satu bank ekstra dengan kekuatan dua nomor register, mungkin praktis untuk memasukkan penggantian nama ke dalam pengindeksan file register itu sendiri. (Tentu saja, ini tidak akan kompatibel dengan bentuk penggantian nama tertentu yang digunakan untuk mendukung eksekusi out-of-order.)

Dengan mengakui bahwa bank-bank yang berbeda tidak diakses pada saat yang sama, optimisasi cerdas menggunakan mekanisme ini dapat mengurangi overhead (terbatas kawat) area file register yang sangat porting dengan menggunakan "register 3D". (Teknik ini diusulkan dalam konteks jendela register SPARC - "File Registrasi Tiga Dimensi Untuk Prosesor Superscalar", Tremblay et al., 1995 - dan varian digunakan oleh Intel untuk SoEMT - "Multi-Threaded, Parity-Protected) 128-Word Mendaftarkan File pada Prosesor Dual-Core Itanium-Family ", Fetzer et al., 2005.)

Perbankan untuk Meningkatkan Jumlah Kemungkinan Akses

Arti kedua di mana istilah perbankan digunakan untuk register mengacu pada pemisahan satu set register menjadi kelompok (bank) yang masing-masing dapat diakses secara paralel. Menggunakan empat bank meningkatkan jumlah akses maksimum yang didukung oleh faktor empat, memungkinkan setiap bank untuk mendukung lebih sedikit port akses (mengurangi penggunaan area dan energi) untuk jumlah akses efektif yang diberikan. Namun, sejauh akses dalam siklus tertentu tidak merata di seluruh bank, jumlah maksimum akses tidak akan tercapai. Bahkan dengan sejumlah besar bank relatif terhadap jumlah akses yang diinginkan, konflik bank dapat, dalam kasus terburuk, membatasi jumlah akses aktual ke jumlah port yang disediakan oleh satu bank.

Ada banyak makalah akademis tentang file register yang diblok ( pencarian Google Cendekia), dan beberapa teknik umum telah diusulkan untuk mengurangi dampak konflik bank. Teknik yang paling jelas adalah buffer instruksi (seperti yang dilakukan untuk eksekusi out-of-order) memberikan beberapa statistik rata-rata konflik bank. Dimungkinkan juga untuk membaca operan register sebelum instruksi siap untuk dieksekusi (mis., Jika operan lain belum siap atau bahaya struktural menunda eksekusi). Alokasi register ke bank dapat memanfaatkan informasi tentang penggunaan yang diharapkan untuk mengurangi kemungkinan konflik. (Perangkat lunak dapat membantu dengan preferensi menggunakan register dengan cara yang diharapkan.) Menggunakan nama register fisik virtual, dimungkinkan untuk menunda alokasi nama register fisik (dan dengan demikian bank) hingga nilainya disimpan dalam register;

Jenis perbankan ini kadang-kadang disebut pseudo-multiporting karena memberikan ilusi sejumlah besar port akses. Teknik ini biasanya digunakan untuk cache karena struktur fisik sering dipartisi ke dalam array memori yang terpisah karena alasan lain.

(Salah satu alternatif untuk perbankan tersebut adalah mereplikasi file register. Menggunakan dua salinan file register memungkinkan setiap salinan memerlukan setengah port baca, meskipun jumlah port penulisan yang sama diperlukan. Teknik ini digunakan dalam POWER2 dan Alpha 21264 dan umumnya digunakan pada prosesor berkinerja tinggi.)

Ringkasan

Mungkin bermanfaat untuk membedakan kedua jenis perbankan ini sebagai perbankan sementara di mana pemilihan bank tersebar sepanjang waktu (seperti register bank umum ARM untuk interupsi cepat) dan perbankan spasial di mana akses bank dapat bersamaan dalam waktu tetapi didistribusikan secara spasial.

Perbankan sementara biasanya terkena perangkat lunak dan digunakan untuk mengurangi overhead (dan kompleksitas) interupsi. (Secara konseptual, penggantian ulir dalam prosesor Switch-on-Event-MultiThreaded sangat mirip dengan penanganan interupsi dan dapat menggunakan mekanisme serupa untuk mengurangi overhead.)

Perbankan spasial jarang menjadi bagian dari ISA (meskipun Itanium diperlukan memuat dan menyimpan pasangan register floating-point untuk menggunakan nomor register genap dan ganjil - yang tidak dijamin mengingat penggunaan rotasi register - memungkinkan desain dua bank yang sepele untuk memberikan tambahan register persyaratan akses file) dan digunakan untuk mengurangi biaya menyediakan sejumlah besar akses register per siklus.

Paul A. Clayton
sumber