Dalam Prosiding 32 Tahunan Simposium Internasional mikroarsitektur (MIKRO-32), November 1999. Ambil Directed Instruksi Prefetching Glenn Reinman Brad Calder Todd Austin Departemen Ilmu Komputer dan Teknik, Universitas California, San Diego Teknik Elektro dan Ilmu Komputer, Universitas Michigan Lieve pengambilan bottleneck [14]. Salah satu aspek dari yang tecture archi- adalah untuk memisahkan prediktor cabang dari cache struction in. Prediktor cabang menghasilkan mengambil blok menjadi Ambil Sasaran Antrian (FTQ), di mana mereka akhirnya Abstrak pasokan instruksi adalah komponen penting dari kinerja prosesor. Instruksi prefetching telah diusulkan sebagai mekanisme untuk membantu mengurangi instruksi cache misses, yang pada gilirannya dapat membantu meningkatkan pasokan instruksi ke prosesor. Dalam makalah ini kami memeriksa instruksi prefetch baru ar chitecture disebut Ambil Sutradara Prefetching, dan membandingkannya dengan kinerja berikutnya-line prefetching dan streaming buffer. Arsitektur ini menggunakan prediktor cabang dan cache instruksi dipisahkan, sehingga prediktor cabang dapat berjalan di depan cache instruksi fetch. Selain itu, kami mantan-amina menandai mengambil blok di prediksi cabang yang ditendang keluar dari cache instruksi, sehingga cabang prediksi mengambil blok dapat secara akurat disangga. Akhirnya, kita model penggunaan menganggur port cache instruksi untuk menyaring permintaan prefetch, sehingga menghemat bandwidth bus ke cache L2. 1. Perkenalan Pada tingkat tinggi, prosesor kinerja tinggi modern terdiri dari dua mesin pengolahan: prosesor front-end dan inti eksekusi. Prosesor front-end bertanggung jawab untuk mengambil dan mempersiapkan (misalnya, decoding, penamaan ulang, dll) instruksi untuk eksekusi. Inti eksekusi orchestrates eksekusi instruksi dan pensiun register dan memori hasil mereka dengan usia stor- non-spekulatif. Biasanya, mesin pengolahan yang terhubung dengan tahap penyangga dari beberapa bentuk, misalnya, instruksi mengambil antrian atau stasiun reservasi - front-end bertindak sebagai produser, fill- ing buffer menghubungkan dengan instruksi untuk dikonsumsi oleh inti eksekusi. Ini hubungan produsen / konsumen antara front-end dan inti eksekusi menciptakan hambatan mental yang mendasar di seluruh komputasi, yaitu, kinerja pelaksanaan secara ketat dibatasi oleh menjemput kinerja. kinerja cache instruksi yang efisien sangat penting untuk menjaga inti eksekusi puas. Cache instruksi prefetching telah terbukti menjadi teknik yang efektif untuk meningkatkan instruksi mengambil kinerja [2, 9, 6, 7, 13, 17, 18, 20, 21], dan ini adalah fokus dari makalah kami. Kami baru-baru mengusulkan scalable mengambil arsitektur untuk kembali 1 dikonsumsi oleh cache instruksi. decoupling ini memungkinkan prediksi cabang untuk menjalankan menjelang instruksi fetch. Ini dapat bermanfaat ketika cache instruksi memiliki miss, atau ketika inti eksekusi punggung atas, dengan demikian mengisi buffer menghubungkan dan menyebabkan cache instruksi untuk kios. Kasus kedua ini dapat terjadi karena data cache misses atau instruksi latensi yang panjang dalam pipa. Dalam makalah ini kita akan mengkaji menggunakan mengambil alamat blok di FTQ untuk pro vide Fetch Directed prefetching (FDP) untuk cache instruksi. Kami menggunakan mengambil alamat blok disimpan dalam FTQ untuk memandu instruksi prefetching, masking siklus warung karena instruksi cache misses. Masa Depan arsitektur prediksi cabang mungkin dapat menyimpan lebih negara dari cache instruksi, terutama multi prediktor cabang tingkat dan orang-orang yang mampu memprediksi besar mengambil blok atau jejak. Ketika sebuah blok cache diusir dari cache instruksi, kita meneliti menandai en- mencoba yang sesuai dengan blok cache ini di Fetch tar- mendapatkan Buffer (FTB) [14], yang mirip dengan buffer sasaran cabang, tetapi dapat memprediksi lebih besar mengambil blok. Jika cabang prediksi FTB entri ditandai sebagai diusir, kita kemudian dapat prefetch diprediksi mengambil blok menggunakan kami arsitektur prefetching mengambil diarahkan. Kami juga memeriksa mengambil keuntungan dari pelabuhan menganggur di cache instruksi untuk memeriksa apakah potensi alamat prefetch berada di cache sebelum menggunakan mereka untuk melakukan prefetch a. Hal ini akan menyaring permintaan prefetch dan menghemat bandwidth bus ke cache L2 bersatu. Kami menggunakan cache penjara instruksi bebas, sehingga port I-cache (s) dapat digunakan untuk menyaring prefetch bahkan selama rindu cache instruksi. Sisa dari makalah ini disusun sebagai berikut. Dalam Bagian 2 kita menjelaskan metodologi yang digunakan untuk mengumpulkan hasil kami. Bagian 3 menjelaskan menggunakan port Cache siaga untuk fil- permintaan prefetch instruksi ter, dan Bagian 4 menjelaskan pekerjaan kami sebelumnya pada cabang front-end dipisahkan prediktif tor. Bagian 5 mengusulkan dan memberikan hasil untuk arsitektur prefetching kami mengambil diarahkan, dan Bagian 6 menggambarkan dan memberikan hasil untuk arsitektur prefetching sebelumnya. Sek- tion 7 membandingkan menjemput diarahkan prefetching untuk arsitektur prefetching sebelumnya untuk ukuran cache yang berbeda dan presenden dan ketika menggunakan satu atau dua port untuk cache. Akhirnya, sek- tion 9 menyediakan ringkasan dan membahas arah masa depan. 2 2.2 Dasar Arsitektur # Inst Program 16K-2W 16K-4W 32K-2W fwd MR IPC MR IPC MR IPC groff 0 5,9 1,90 4,7 2,05 2,6 2,43 gcc 400 7,1 1,43 6,4 1,48 3,4 1,77 pergi 1000 3,4 1,48 2,1 1,61 0,9 1,77 m88ksim 1000 2,8 2,08 1,2 2,49 1,2 2,43 perl 2000 3,9 2,18 2,7 2,43 0,6 2,91 pusaran 1000 12,8 1,50 10,8 1,61 6,5 2,09 Kami model konfigurasi simulasi baseline gen- timbangkan masa depan out-of-order prosesor mikroarsitektur. Kami sudah se lected parameter untuk menangkap tren yang mendasari dalam desain croarchitecture Mi-. Prosesor ini memiliki jendela besar eksekusi; dapat mengambil hingga 8 instruksi per siklus. Memiliki 128 entri pemesanan ulang penyangga dengan 32 entri load / store penyangga. Untuk mengimbangi kompleksitas tambahan disambiguating beban dan toko di jendela eksekusi besar, kami meningkatkan toko depan latency untuk 3 siklus. Ada 8 siklus cabang minimum misprediction penalti. Prosesor ini memiliki 8 bilangan bulat unit ALU, unit / toko 4- beban, 2-FP penambah, 2-bulat MULT / DIV, dan 2- FP MULT / DIV. Latency adalah: ALU 1 siklus, MULT 3 siklus, Integer DIV 12 siklus, FP Adder 2 siklus, FP Mult 4 siklus, dan FP DIV 12 siklus. Semua unit fungsional, kecuali unit membagi, sepenuhnya pipelined memungkinkan tion instruksi yang baru untuk memulai eksekusi setiap siklus. Tabel 1: Statistik Program untuk arsitektur dasar. 2 Metodologi Simulator yang digunakan dalam penelitian ini berasal dari sim- pleScalar / Alpha 3.0 tool set [1], seperangkat alat simulasi fungsional dan waktu untuk Alpha AXP ISA. Simulator waktu mengeksekusi instruksi level user saja, perform- ing simulasi waktu rinci agresif 8-way dynamically dijadwalkan mikroprosesor dengan dua tingkat struction in dan memori cache data. Simulasi executiondidorong, termasuk eksekusi turun setiap jalan spekulatif sampai deteksi kesalahan, TLB lewatkan, atau misprediction cabang. Untuk melakukan evaluasi kami, kami mengumpulkan hasil untuk 5 dari benchmark SPEC95 C ditambah groff C ++ teks formatprogram yang ting menggunakan input referensi. Programprogram yang disusun pada Desember Alpha AXP-21.164 prosesor menggunakan DEC C dan C ++ compiler di bawah sistem operasi OSF / 1 V4.0 menggunakan optimasi compiler penuh (-O4 -ifo). TA ble 1 menunjukkan jumlah instruksi (dalam jutaan) yang dieksekusi (cepat diteruskan) sebelum simulasi dimulai. nomor maju cepat ini diambil dari sebuah studi oleh Sherwood dan Calder [16], yang menunjukkan waktu yang bervariasi perilaku (IPC, tingkat cache miss, misprediction cabang, dll) di 100 juta interval instruksi untuk semua SPEC 95 pro gram. Kami melaporkan hasil untuk simulasi masing-masing program hingga 100 juta instruksi setelah forwarding cepat. 2.3 Hirarki Memori Kami benar-benar menulis ulang hirarki memori di sim- pleScalar untuk hunian yang lebih baik Model bus, bandwidth, dan pipelining dari cache tingkat kedua dan memori utama. Kami memeriksa kinerja instruksi prefetching untuk 16K 2-arah dan 4-arah cache asosiatif, dan 32K 2-arah Cache asosiatif, masing-masing dengan garis 32byte. Tabel 1 menunjukkan persen dari blok cache yang diambil yang tidak terjawab (MR) untuk masing-masing konfigurasi tembolok ini, bersama dengan cor- mereka menanggapi IPC. Cache data untuk setiap konfigurasi adalah 4-arah cache asosiatif 32K dengan 32 garis byte. Cache tingkat kedua adalah terpadu 1 Meg 4-arah ciative asso- pipelined L2 cache dengan garis 64-byte. L2 hit latency 12 siklus, dan round-trip biaya memori 100 siklus. Cache L2 hanya memiliki 1 port. Kami memeriksa dua cache L2 yang berbeda. Konfigurasi pertama sesuai dengan pipelining cache L2 untuk memungkinkan permintaan baru setiap siklus, sehingga bus L2 dapat mentransfer 32 byte / siklus. The figurasi con kedua sesuai dengan memungkinkan permintaan baru setiap 4 cles cy-, sehingga bus L2 dapat mentransfer 8 byte / siklus. L2 bus dibagi antara blok permintaan cache instruksi, permintaan blok data cache, dan permintaan prefetch. 2.1 Metrik Untuk mengevaluasi instruksi prefetching kami memberikan hasil dalam hal (1) speedup persen di IPC dicapai dari menggunakan prefetching selama IPC dasar ditunjukkan pada Tabel 1, (2) persen L2 bus bandwidth yang digunakan, dan (3) tingkat cache instruksi miss. Ketika memberikan hasil untuk pemanfaatan bus, pemanfaatan adalah persen dari siklus bus sedang sibuk instruksi servis L1 dan data cache misses, dan setiap instruksi prefetches. Tingkat kehilangan cache instruksi yang dalam hal persen blok cache yang diambil yang tidak terjawab di cache instruksi. Ini dihitung dengan mengambil jumlah blok cache yang diambil yang tidak terjawab di cache instruksi, dan membagi ini dengan jumlah berusaha blok cache yang diambil selama eksekusi. 3 Menggunakan Ports Cache Menganggur ke Filter Instruksi Permintaan prefetch cache penjara bebas awalnya diusulkan untuk meningkatkan kinerja untuk bersatu instruksi dan data cache yang [8], dan 3 telah terbukti meningkatkan kinerja cache data dengan memungkinkan beberapa beban yang luar biasa [4]. Penjara cache bebas yang murah untuk membangun, karena mereka hanya membutuhkan Nona Status beberapa Induk Register (MSHRs) untuk menahan pembentukan in untuk rindu yang luar biasa. Ketika blok terjawab sudah benar-benar diambil dari memori itu kemudian dimasukkan 4 ke dalam cache. Dalam makalah ini kami menggunakan cache instruksi penjara-bebas untuk menerapkan bentuk penyaringan prefetch selama rindu I-Cache. Sebuah tradisional mengambil pasangan mesin prediksi cabang chitecture ar dengan cache instruksi. Setiap siklus cabang 3.1 Cache Probe Filtering Prefetching blok yang sudah terkandung dalam instruksi yang hasil tembolok tion di bandwidth bus yang terbuang. Ketika cache struction in memiliki port menganggur, pelabuhan dapat digunakan untuk memeriksa apakah atau tidak alamat prefetch potensial adalah al siap hadir dalam cache. Kami menyebutnya teknik ini Cache Probe Filtering (CPF). Jika alamat ditemukan dalam cache, permintaan prefetch dapat dibatalkan, sehingga menghemat lebar band. Jika alamat tidak ditemukan dalam cache, maka pada siklus berikutnya blok dapat disangga jika bus L2 gratis. Cache penyelidikan filtering hanya perlu mengakses instruksi cache tag larik. Oleh karena itu, jika ditemukan untuk menjadi bermanfaat untuk menambah port tambahan untuk CPF, itu hanya akan mempengaruhi waktu akses tag, dan bukan data array. Instruksi cache (port) mungkin menganggur dan pergi tidak terpakai karena (1) cache rindu instruksi, (2) jendela instruksi penuh, atau (3) tidak cukup diprediksi mengambil blok. Jika rindu cache instruksi terjadi, maka pengambilan mesin akan mengulur waktu sampai ketinggalan teratasi. Ketika jendela instruksi menjadi penuh karena instruksi lambat dalam inti eksekusi, cache instruksi memiliki kios sejak mengambil buffer penuh. Selain itu, porting atau membelok instruksi cache ganda berpotensi dapat memiliki port menganggur jika prediktor cabang tidak memberikan cukup alamat blok cache mengambil dalam siklus tertentu. Untuk menggunakan port cache yang menganggur untuk melakukan tembolok penyelidikan fil- tering selama cache miss, cache perlu lockupbebas. Untuk mendapatkan manfaat dari penyaringan tembolok penyelidikan di hadapan (2) dan (3) di atas, cache instruksi tidak harus penjara bebas. 3.2 Sebelum Filtering Penelitian Cache Probe Studi prefetch sebelum cache instruksi telah diperiksa filprefetches instruksi tering berdasarkan pada apakah atau tidak gaun iklan- sudah di cache instruksi [2, 9]. Untuk setiap instruksi prefetch, studi ini periksa dulu cache instruksi dan hanya melakukan prefetch jika blok tidak dalam cache instruksi. Ini mengasumsikan ekstra port cache instruksi untuk melakukan cek tembolok penyelidikan. Dalam simulasi kami, kami memeriksa kinerja dengan dan tanpa penyaringan tembolok penyelidikan. Kami Model Cache pelabuhan kita-usia di simulasi kami, dan hanya memungkinkan tembolok penyelidikan penyaringan terjadi ketika ada port cache yang menganggur. 4 dipisahkan Front-End 5 arsitektur prediksi digunakan untuk menghasilkan pengambilan iklan- dress (es) yang akan digunakan dalam cache siklus berikutnya menjemput. Jika warung cache instruksi, maka instruksi mengambil berhenti dan prediksi cabang dan cache instruksi duduk diam sampai cache miss teratasi. Dalam [14], kita meneliti decoupling prediktor cabang dari cache instruksi. Untuk memberikan end front dipisahkan, sebuah Fetch Sasaran Antrian (FTQ) digunakan untuk menjembatani kesenjangan antara prediktor cabang dan cache instruksi. siklus ery EV-, prediktor cabang akan menghasilkan mengambil sasaran blok prediksi dan menyimpannya dalam FTQ, di mana ia akan bahkan-tually dikonsumsi oleh cache instruksi. The FTQ pro VIDES penyangga yang diperlukan untuk memungkinkan prediksi cabang dan cache instruksi untuk beroperasi secara otonom. The FTQ memungkinkan prediksi cabang untuk bekerja menjelang cache instruksi ketika terhenti karena cache miss atau instruksi buffer penuh. Jika cache instruksi multiporting, beberapa entri FTQ valid dapat dikonsumsi dalam satu siklus sampai port habis. Setiap prediktor cabang (Basic Blok Sasaran Buffer [22], Dua Blok Menjelang Predictor [15], atau Ambil Sasaran Buffer [14]) dapat diletakkan di depan FTQ dan menghasilkan mengambil alamat blok yang akan dikonsumsi oleh cache instruksi. Ini adalah FTQ yang memungkinkan prediksi cabang untuk menjalankan menjelang cache instruksi. dapat mengambil keuntungan dari port cache yang menganggur untuk menyaring prefetches 80% sisa waktu. Prediksi Arsitektur 4.1 Dasar Cabang Dalam pekerjaan sebelumnya, kami menunjukkan bahwa 2tingkat Fetch Sasaran Buffer (FTB) dapat memberikan prediksi cabang terukur [14]. Dalam makalah ini kami menggunakan satu tingkat 4K masuk 4-arah asosiatif FTB, yang feed 32 entri FTQ, bukan meja FTB 2-tingkat, dalam rangka untuk berkonsentrasi pada mengambil prefetching langsung. Entri 4K FTB besar, tetapi diimplementasikan menggunakan 2-tingkat pendekatan FTB dijelaskan dalam [14]. Kami sedang evaluat- ing menggunakan FDP dengan 2 tingkat desain FTB. Untuk prediksi cabang bersyarat, kita menggunakan McFarling bi-modal prediktor gshare [11], dengan meja entri gshare 8K dan 64 entri alamat kembali tumpukan dalam kombinasi dengan FTB. Tabel 2 menunjukkan efek dari menggunakan FTB dengan cache instruksi porting ganda. Hasil penelitian menunjukkan bahwa 7% speedup dicapai rata-rata saat menggunakan 2 port bukannya 1 port untuk cache instruksi. 3 kolom terakhir pada tabel 2 menunjukkan persen dari siklus dijalankan ketika (1) kedua port yang menganggur, (2) ketika hanya salah satu port adalah menganggur, dan (3) ketika tidak ada port yang menganggur. Kasus pertama terjadi karena pengambilan mesin macet. Kasus kedua terjadi ketika FTQ hanya bisa memberikan cukup mengambil bandwidth untuk mengambil dari satu blok tembolok. Kolom terakhir menunjukkan bahwa rata-rata FTQ dapat memberikan cukup mengambil bandwidth untuk menjaga kedua port pada cache instruksi sibuk 20% dari waktu. Cache penyelidikan filtering, seperti yang dijelaskan pada bagian 3, 6 Program groff gcc pergi m88ksim perl pusaran rata-rata % speedup dengan 2 port 8.2 6.9 5.4 5.6 11.2 6.9 7.4 % p rt availability 2 1 0 menga menga meng nggur nggur anggu 36,8 46,1 17.1 r 23,9 35,1 45,6 32.2 44.0 19,3 31.0 46,5 22,5 32,3 42,5 25,3 41.2 47,7 11.1 34.8 45,4 19,9 PIQ L2 Cache prefetch prefetch Enqueue (Mekanisme filtrasi) prefetch FTQ saat ini calon prefetch Tabel 2: Statistik Dasar untuk cache instruksi dual-porting. Kolom pertama menunjukkan speedup persen diperoleh jika menggunakan cache instruksi dual-porting cache porting tunggal untuk arsitektur dasar. Tiga terakhir Cabang tukang ramal port pada cache yang menganggur, ketika satu port idle, dan ketika kedua port sibuk. FTQ Petunjuk Meng ambil serta alamat blok tembolok. Kandidat bit mengindikasikan bahwa blok Cache adalah calon yang disangga. Itu ture kita menggunakan 2 port untuk cache instruksi. Pada bagian 7, kita membandingkan kinerja prefetching dari porting cache instruksi L1 tunggal dan ganda. 5 Ambil Directed Prefetching Ambil Directed Prefetching (FDP) mengikuti aliran diprediksi, enqueuing prefetches dari FTQ. Hal ini dimungkinkan jika arsitektur prediksi cabang dapat berjalan di depan instruksi fetch, yang adalah apa prediktor cabang berdasarkan FTQ menyediakan [14]. Satu keuntungan dari desain ini, adalah bahwa FDP dapat terus prefetch bawah sungai diprediksi bahkan ketika cache instruksi terhenti. Kita sekarang menggambarkan kami Ambil arsitektur Sutradara Prefetching, menggambarkan heuristik yang digunakan untuk lebih pilih yang mengambil blok untuk prefetch, dan mengevaluasi kinerja mereka. 5.1 Ambil Directed Prefetching Arsitektur Gambar 1 menunjukkan arsitektur FDP. Seperti dijelaskan dalam sek- tion 4, kita menggunakan dipisahkan prediktor cabang dan cache instruksi, dimana FTQ berisi pengambilan blok yang akan diambil dari cache instruksi. Arsitektur FDP menggunakan Prefetch Instruksi Antrian (PIQ), yang merupakan antrian alamat prefetch menunggu untuk disangga. Sebuah prefetch dari PIQ akan mulai ketika bus L2 gratis, setelah pertama mengutamakan data cache dan instruksi cache misses. Salah satu manfaat dari tanda cabang prediktor FTB deadalah bahwa hal itu dapat memberikan besar mengambil blok [14]. Sebuah mengambil blok dari satu prediksi berpotensi dapat span 3 blok tembolok. Oleh karena itu, setiap entri FTQ berisi tiga cache yang mengambil entri blok menyediakan mengambil alamat hingga 3 blok Cache. Setiap mengambil blok entri berisi sedikit valid, sedikit calon prefetch, dan disangga bit enqueued, 7 Gambar 1: Ambil Sutradara Prefetching Arsitektur. bit diatur menggunakan heuristik filtrasi dijelaskan di bawah. bit yang enqueued menunjukkan bahwa blok cache yang telah enqueued dimuat dahulu di PIQ. Calon prefetches dari entri FTQ dipertimbangkan dalam FIFO perintah dari FTQ, dan dimasukkan ke dalam PIQ ketika ada entri mampu avail-. Masuknya FTQ saat ini, di bawah pertimbangan untuk memasukkan permintaan prefetch ke PIQ, dilacak melalui pointer hardware-dilaksanakan. Sebuah mengambil diarahkan FIFO prefetch buffer ditambahkan ke arsitektur FDP untuk memegang blok cache yang PREFETCHED. Hal ini sangat mirip dengan buffer streaming yang [7], kecuali bahwa hal itu akan alamat prefetch nya dari FTQ. Setiap kali blok cache dimasukkan ke dalam PIQ untuk prefetching, entri dialokasikan untuk itu blok cache buffer prefetch. Jika prefetch buffer penuh, maka tidak ada blok cache yang lebih lanjut disangga. Ketika melakukan cache instruksi fetch, FIFO prefetch buffer dicari secara paralel dengan cache instruksi lookup untuk blok tembolok. Jika ada hit dalam entri tertua di FIFO buffer prefetch, tersebut akan dihapus dari buffer, dan dimasukkan ke dalam cache instruksi. Pendekatan alternatif akan menggunakan penyangga prefetch tive sepenuhnya associa- dengan strategi penggantian LRU canggih, menambahkan sedikit diganti untuk setiap buffer prefetch en- mencoba. Sebuah prefetch akan dimulai (dialokasikan dalam buffer prefetch) hanya jika ada entri ditandai sebagai diganti dalam buffer prefetch, memilih yang paling terakhir digunakan entri diganti. Pada misprediction cabang, semua entri akan ditunjuk sebagai diganti, daripada pembilasan buffer prefetch seluruh seperti dalam FIFO buffer prefetch. Mereka juga akan ditandai sebagai diganti dalam buffer prefetch ketika blok cache yang cocok yang diambil selama tion Cache instruksi yang menjemput. Menggunakan prefetch penyangga sepenuhnya asosiatif 8 memeriksa tag Cache untuk melihat apakah alamat tersebut di cache. seperti ini akan memungkinkan prefetches ke jalan mispredicted masih berguna - terutama dalam kasus pendek, cabang ke depan. Sebuah buffer dengan desain ini akan diharapkan untuk melakukan lebih baik dari desain FIFO, tetapi pada biaya hardware yang lebih kompleks. Kami sedang menyelidiki mengenai kinerja menggunakan prefetch penyangga sepenuhnya asosiatif dengan bit diganti. Dalam makalah ini kami hanya melaporkan hasil untuk FIFO buffer prefetch. Kami memeriksa beberapa pendekatan untuk memutuskan mana entri FTQ untuk prefetch dan memasukkan ke dalam PIQ, yang kami jelaskan di bagian berikut. 5.2 Filter Berdasarkan Jumlah FTQ Entries Sebelumnya prefetch bisa dimulai sebelum mengambil blok mencapai cache instruksi, semakin besar potensi untuk menyembunyikan rindu latency. Pada saat yang sama, semakin jauh masuk FTQ adalah depan cache, semakin besar kemungkinan bahwa itu akan berada di jalan mispredicted, dan semakin besar kemungkinan prefetch dari entri FTQ mungkin mengakibatkan prefetch terbuang, karena prefetch buffer memerah pada misprediction cabang. Kami memeriksa menyaring jumlah entri FTQ untuk dipertimbangkan untuk prefetching berdasarkan posisi pengambilan blok masuk dalam FTQ. Hasil penelitian kami sebelumnya menunjukkan bahwa ketika menggunakan FTQ, hunian yang dapat cukup tinggi [14]. The FTQ berisi 16 atau lebih mengambil blok untuk 30% dari siklus dilaksanakan rata-rata, dan 4 atau lebih mengambil blok untuk 60% dari siklus dieksekusi. Kami menemukan bahwa mulai entri kedua dari depan FTQ dan akan sampai 10 entri dalam FTQ memberikan performa terbaik. Kami melewatkan entri pertama di FTQ, karena akan ada sedikit atau tidak ada manfaat dari mulai sebagai prefetch ketika itu adalah bahwa dekat dengan menjadi-ing diambil dari cache instruksi. The FTQ kita diimplementasikan dapat menyimpan hingga 32 entri, tetapi berhenti prefetching di 10 entri disediakan kinerja yang baik, 5.3 Cache Probe Filtering Cache filtering Probe menggunakan port tembolok siaga untuk memeriksa apakah permintaan prefetch tential poadalah dalam cache. Kami memeriksa dua pendekatan untuk CPF. Pendekatan pertama, yang disebut tembolok penyelidikan enqueuing (En antrian CPF), hanya akan enqueue sebuah prefetch ke PIQ dari FTQ jika pertama dapat menyelidiki cache instruksi menggunakan port cache yang menganggur untuk memverifikasi bahwa blok cache tidak ada dalam tingkat pertama tembolok. Ini adalah bentuk yang sangat konservatif prefetching. Pendekatan kedua, yang disebut menghapus tembolok penyelidikan penyaring- ing (Hapus CPF), enqueues semua blok tembolok ke PIQ secara default, tetapi jika ada tingkat pertama pelabuhan tembolok menganggur, itu akan 9 Jika alamat dalam cache, masuknya prefetch akan kembali dipindahkan dari daftar alamat prefetch potensial. Jika tidak ada port cache yang menganggur, maka permintaan akan disangga tanpa memeriksa tag tembolok. Indeks bit digunakan untuk mengakses FTB. bit yang diusir di 5.4 Cache Nona Filtering Hal ini diinginkan untuk berkonsentrasi pada prefetching hanya mereka mengambil blok yang kemungkinan besar akan kehilangan dalam cache instruksi untuk mengurangi pemanfaatan bus. Jika satu set cache yang diberikan memiliki banyak meleset konflik, maka dapat bermanfaat untuk prefetch semua block yang di map ke konflik tinggi tembolok set. Untuk cap- ture perilaku ini kita memeriksa menggunakan counter kepercayaan diri yang terkait dengan setiap set cache instruksi untuk menunjukkan set cache yang kehilangan paling sering. Ambil blok yang mengakses tembolok set ini akan memiliki kesempatan lebih besar yang hilang di cache instruksi dan karena itu akan bernilai prefetching. Kami diperiksa menambahkan cache buffer rindu yang berisi 2-bit menjenuhkan kontra untuk setiap set cache instruksi. Kami indeks cache rindu penyangga secara paralel dengan FTB. Jika mengambil blok yang diprediksi peta untuk satu set cache yang telah sering merindukan di masa lalu, yang mengambil blok ditandai dimuat dahulu, jika itu bukan calon yang disangga. Kami menemukan berikut mesin negara yang terbatas untuk bekerja dengan baik untuk counter miss. Ketika cache miss terjadi, corre- sponding set counter di rindu penyangga bertambah. Sebuah cache hit tidak mengubah cache mengatur rindu counter. Sebaliknya negara, counter kepercayaan dibersihkan setiap juta cles cy- untuk mencegah prefetching asing. Blok Cache berpredikat dari FTB yang set counter jenuh (memiliki nilai 3) ditandai sebagai calon yang disangga, erwise oth- tidak. 5,5 Ambil Blok diusir Prefetching Pendekatan lain untuk menemukan mengambil blok untuk prefetch yang mungkin telah diusir dari cache instruksi karena konflik cache untuk melacak blok tembolok ini dalam arsitektur prediksi cabang. Untuk mencapai hal ini, kita menyimpan bit diusir di setiap entri FTB dan sudah diatur ketika blok cache yang sesuai cabang diusir dari cache struction in. implementasi kami memeriksa toko N bit dengan setiap blok cache mengidentifikasi entri FTB yang lalu menyebabkan blok cache yang akan dibawa ke dalam cache. Untuk pelaksanaan kita simulasi, 12 bit yang digunakan untuk memetakan blok ke entri FTB - 10 bit untuk indeks ke set, dan 2 bit untuk cara (4-arah asosiatif FTB). Karena bit disimpan dalam cache adalah indeks langsung ke FTB, tidak ada jaminan bahwa entri yang dimuat blok cache yang masih dalam FTB, tetapi untuk FTB yang dapat menampung lebih negara dan memiliki associativity lebih besar dari instruksi Cache, pemetaan kemungkinan akan benar. Ketika sebuah blok cache diusir dari cache, N 10 tion bus utiliza-, yang turun dari 56% tanpa Cache rindu penyaringan untuk 44% dengan cache yang rindu penyaringan. Hanya menggunakan sedikit Diusir untuk menentukan prediksi tembolok blok untuk prefetch menyediakan 11% speedup rata-rata untuk kasus bandwidth yang tinggi, sementara hanya menggunakan 6% dari bandwidth bus. Menggabungkan penggunaan bit digusur dengan Cache entri FTB sesuai dengan indeks yang ditetapkan, menunjukkan bahwa blok cache yang akan disangga pada saat itu digunakan sebagai prediksi cabang. Pengusiran dapat menyebabkan paling banyak satu prefetch, karena bit diusir dibersihkan untuk entri FTB saat dimasukkan ke dalam FTQ. 5,6 Ambil Directed Prefetching Hasil Gambar 2 menunjukkan hasil untuk mengambil prefetching diarahkan tanpa penyaringan (NoFilt), untuk penyaringan menghapus tembolok Probe (kembali bergerak CPF), menghapus CPF bersama dengan menggunakan 2-bit Cache Nona meja untuk penyaringan, cache penyelidikan enqueuing (Enqueue CPF) , menggunakan bit hanya diusir (mengusir) untuk memandu prefetching, dan ketika menggunakan kedua bit diusir dan enqueue CPF (ENQ CPF + mengusir). Hasilnya ditunjukkan untuk bandwidth bus dari 32 byte / siklus dan 8 byte / siklus untuk instruksi bersama dan data bus ke cache L2 pipelined, yang memiliki 1 port. Angka yang cukup 3 menunjukkan persen pemanfaatan bus L2 rata-rata untuk semua konfigurasi ini. Ambil prefetching diarahkan, bahkan tanpa teknik penyaringan, memberikan manfaat yang cukup besar (38% rata-rata untuk bandwidth 32 bytes / siklus). Seperti dapat dilihat pada angka yang cukup 3, teknik ini menggunakan banyak bus bandwidth (utilisasi bus 67%). Untuk 8 byte / bandwidth siklus, lization uti- mencapai 90% rata-rata, dan speedup IPC ob- dirawat dengan seksama turun menjadi 19% rata-rata. Menggunakan Cache penyelidikan penyaringan untuk menghilangkan prefetches (kembali bergerak CPF) mengurangi pemanfaatan bus (utilisasi 56% untuk bandwidth 32 bytes / siklus dan 80% untuk bandwidth 8 bytes / siklus) dengan mengurangi jumlah dari prefetches tidak berguna. Hal ini memungkinkan prefetches lebih berguna untuk en- antri lebih cepat, mengakibatkan speedup rata-rata 40% dan 26% dalam kasus-kasus bandwidth tinggi dan rendah masing-masing. Cache Probe enqueuing (Enqueue CPF) hanya prefetches blok tembolok jika pertama dapat memverifikasi bahwa tidak dalam cache, dan ini menghilangkan prefetches tidak berguna dan membawa bus utiliza- tion ke 17% untuk kasus bandwidth yang tinggi, dan turun ke 37% untuk kasus bandwidth rendah. Kinerjanya 20% rata-rata untuk bandwidth yang tinggi, dan 16% rata-rata untuk bandwidth bus yang rendah. Menggunakan 2-bit Cache Nona Tabel dengan Remove CPF, hanya tanda prediksi pencekalan tembolok dari FTB sebagai calon karyawan tanggal untuk prefetching apakah cache set meja yang sesuai jenuh. calon ini kemudian disaring menggunakan Re- bergerak CPF jika port cache yang menganggur tersedia. Menambahkan Cache Nona Tabel Hapus CPF menyediakan tentang speedup persen sama seperti menerapkan Hapus CPF pada semua blok cache yang diprediksi. Perbedaan besar adalah penurunan 11 Probe enqueuing (Mengusir + Enqueue CPF) memberikan peningkatan besar dalam percepatan untuk beberapa program (27% untuk kasus bandwidth tinggi), tapi masih hanya menggunakan sebagian kecil (17%) dari bandwidth memori. Untuk kombinasi ini, didasarkan blok cache yang ditandai sebagai calon prefetching jika ei- ther sedikit mereka diusir diatur atau blok cache ditemukan tidak berada di cache instruksi menggunakan CPF. miss terjadi, sekuensial blok Cache, dimulai dengan satu yang tidak terjawab, yang disangga ke dalam buffer streaming, sampai buffer penuh. Buffer Streaming diimplementasikan sebagai antrian FIFO. Streaming buffer dicari secara paralel dengan 6 Berikutnya Jalur Prefetching dan Streaming Buffer Kami sekarang menggambarkan penelitian instruksi prefetching sebelum kami menerapkan, dan membandingkan kinerja relatif mereka. Kami juga menyelidiki menambah mengalir buffer dengan penyaringan Cache penyelidikan. 6.1 Tagged Prefetching Berikutnya Jalur Smith [17] mengusulkan menandai setiap blok tembolok dengan sedikit menunjukkan ketika blok berikutnya harus disangga. Ketika blok yang disangga bit tag-nya diatur ke nol. Ketika blok diakses selama pengambilan dan bit adalah nol, prefetch dari blok sekuensial berikutnya dimulai dan bit diatur ke satu. Smith dan Hsu [18] mempelajari efek ditandai baris berikutnya prefetching dan manfaat dilihat berdasarkan berapa banyak baris cache digunakan sebelum memulai permintaan prefetch. 6.2 Target dan Salah Jalan Prefetching Smith dan Hsu [18] juga meneliti manfaat penggabungan antara berikutnya-line prefetching dengan sasaran prefetching. Untuk sasaran prefetching, mereka menggunakan tabel alamat sasaran cabang, yang diindeks secara paralel dengan lookup cache instruksi. Jika ada hit, maka alamat target itu disangga. Untuk cabang tertentu, mereka diperiksa prefetching baik jatuh melalui dan alamat target. Pierce dan Mudge [13] meneliti apa yang mereka sebut Salah Jalan Prefetching, di mana mereka memeriksa prefetching kedua jalur dari cabang. Ada dua perbedaan utama dalam pendekatan mereka dan pendekatan yang disarankan oleh Smith dan Hsu [18]. Mereka hanya prefetch target diambil jika cabang tidak-diambil, dan mereka hanya melakukan ini setelah alamat yang diambil dihitung dalam tahap decode. alamat tidak berasal dari buffer sasaran cabang. Ini memiliki keuntungan ing be- dapat prefetch target cabang tidak di BTB. Hasil penelitian mereka menunjukkan bahwa sasaran prefetching disediakan hanya perbaikan kecil selama berikutnya-line prefetching. 6.3 Streaming Buffer Jouppi diusulkan mengalir buffer untuk meningkatkan Mance perfor- cache dipetakan diarahkan [7]. Jika cache 12 32 bytes / siklus 84% 60 Tidak ada Filt Hapus CPF % Speedup 50 83,6% 90,4% Cache Nona + Rem CPF Enqueue CPF Mengusir Enq CPF + Mengusir 40 30 20 10 0 groff gcc pergi m88ksim perl pusaran rata 8 bytes / siklus 60 % Speedup Tidak ada Filt Hapus CPF 50 Cache Nona + Rem CPF Enqueue CPF 40 Mengusir ENQ CPF + Mengusir 30 20 10 0 groff gcc pergi m88ksim perl pusaran rata Gambar 2: Persen speedup IPC untuk mengambil prefetching diarahkan menggunakan cache instruksi 16K 2-arah. Hasilnya ditunjukkan untuk kedua tinggi dan rendah bandwidth bus. bar pertama menunjukkan hasil untuk tanpa filter prefetching mengambil diarahkan. Dua bar berikutnya menunjukkan hasil untuk mengambil prefetching diarahkan dengan Hapus Cache Probe Filtering: pertama saja, dan kemudian dalam hubungannya dengan cache yang rindu penyaringan. Bar keempat menunjukkan hasil untuk Enqueue Cache Probe Filtering. Bar kelima menunjukkan hasil ketika menggunakan bit diusir saja, dan bar keenam menunjukkan hasil ketika menggunakan bit digusur dan Enqueue CPF bersama-sama. 100 Tidak ada Filt 80 % Bus Pemanfaatan Hapus CPF 60 Cache Nona + Rem CPF Enqueue CPF 40 Mengusir 20 Enq CPF + Mengusir 0 32 bytes / siklus 8 byte / siklus Gambar 3: pemanfaatan bus Persen untuk mengambil hasil prefetching diarahkan. Kita sekarang memeriksa kinerja berikutnya-line prefetching, berikutnya cache instruksi saat melakukan sebuah pencarian. Dia juga sesuai dengan target prefetching, dan buffer streaming. Kami kemudian exam- INED menggunakan beberapa buffer streaming yang membandingkan kinerja ini prefetching tectures archi- dengan mengambil pada saat yang sama. prefetching diarahkan dalam bagian 7. Farkas et. al., [5] meneliti kinerja menggunakan lookup sepenuhnya asosiatif pada streaming buffer dan unik-filter yang ness. Tersebut terbukti bermanfaat bila menggunakan beberapa buffer streaming, sehingga masing-masing aliran tidak tumpang tindih, menghemat bandwidth bus. 6.4 Kinerja Kerja Sebelum 13 6.4.1 Berikutnya-line Prefetching dan Target Gambar 4 menunjukkan kinerja dan pemanfaatan bus hasil untuk sebelum pekerjaan instruksi prefetching. Kami dilaksanakan tagged Berikutnya-Line prefetching (NLP) seperti yang dijelaskan dalam [17], kecuali kita prefetch blok cache yang menjadi 4-arah asosiatif 32 entri prefetch NLP penyangga dengan penggantian LRU. Ini buffer bertanya secara paralel dengan cache selama pencarian untuk menemukan potensi hit. Kami kemudian diimplementasikan sasaran ing prefetch- dan dikombinasikan bahwa dengan NLP seperti yang dijelaskan dalam [18], yang disebut NLP + T pada gambar 4. Berikutnya baris prefetching menyediakan pemercepat besar untuk bandwidth tinggi dan rendah (23% dan 19% masing-masing), sementara kita-ing sedikit bandwidth. Bahkan, untuk bandwidth rendah kami 14 60 NLP NLP + T S1 S2 S8 S1 CPF 50 S1 CPF Berhenti S2 CPF S2 CPF Berhenti S8 CPF S8 CPF Berhenti 100 % Speedup Selama Basis 80 % Bus Pemanfaatan 40 NLP NLP + T S1 S2 S8 S1 CPF S1 CPF Berhenti S2 CPF S2 CPF Berhenti S8 CPF S8 CPF Berhenti 60 30 40 20 20 10 0 0 32 bytes / siklus 8 byte / siklus 32 bytes / siklus 8 byte / siklus Gambar 4: Persen IPC speedup dan persen perbandingan pemanfaatan bus untuk bekerja sebelum menggunakan 16K 2-arah Cache asosiatif I-. Hasil yang ditunjukkan adalah rata-rata semua benchmark, dan ditampilkan untuk tinggi (32 bytes / siklus) dan rendah bandwidth (8 bytes / siklus) bus. Dua bar pertama di setiap set sesuai dengan hasil yang diperoleh melalui baris berikutnya prefetching dengan dan tanpa sasaran prefetching. Bar yang tersisa mewakili hasil streaming yang penyangga. Hasilnya ditunjukkan untuk streaming buffer untuk 1, 2, dan 8 buffer, dan dengan tembolok penyelidikan penyaringan sendirian dan dengan tembolok penyelidikan filtering yang berhenti ketika cache hit terlihat. sudah dalam cache. Filter ini dapat digunakan dalam salah satu dari dua cara. arsitektur, NLP dilakukan hampir serta buffer streaming, Jika blok cache ditemukan di in the saat menggunakan sedikitnya jumlah bandwidth. Menambahkan sasaran prefetching untuk NLP disediakan perbaikan minimal. 6.4.2 Streaming Buffer Kami menerapkan buffer aliran seperti yang dijelaskan sebelumnya di sektion 6,3. Selain itu, kami menggunakan filter keunikan diusulkan oleh Farkas et. al, [5]. Oleh karena itu, blok cache yang diberikan hanya akan muncul dalam satu aliran pada suatu waktu, dan semua entri berlaku di semua buffer mengalir diperiksa untuk hit di paralel dengan lookup cache instruksi. Kami menyediakan hasil menggunakan satu empat entri Streaming penyangga (S1), arsitektur dengan 2 empat entri Streaming buffer (S2), dan 8 empat entri Streaming buffer (S8) pada gambar 4. Bila menggunakan multiple streaming buffer buffer streaming dialokasikan pada cache miss menggunakan dimodifikasi algoritma paling terakhir digunakan. Sebuah penggunaan buffer streaming dianggap alokasi streaming yang penyangga atau blok cache yang hit di buffer streaming. Kami menemukan bahwa empat buffer entri streaming yang disediakan kinerja yang baik untuk arsitektur pipeline kami. buffer Streaming dilakukan dengan baik (mulai dari 32% speedup selama 1 Streaming buffer untuk 37% speedup rata-rata selama 8 buffer streaming), tetapi kinerja terdegradasi bila digunakan pada bandwidth bus yang lebih rendah. buffer streaming yang tunggal dilakukan lebih baik di bandwidth yang lebih rendah (20% dalam kasus terbaik), sedangkan 8 Streaming buffer disediakan peningkatan kinerja 14% rata-rata. Kami juga diselidiki menggunakan Probe tembolok penyaringan dengan buffer streaming. Kami menggunakan heuristik CPF menghapus de- jelaskan dalam bagian 5.3. Jika port gratis tersedia di cache struction in, dapat digunakan untuk menyaring prefetches Streaming penyangga yang 15 Cache struction, prefetch bisa dilewati, dan ing penyangga stream- dapat terus seperti biasa dan mencoba untuk prefetch blok cache yang berikutnya. Ini diberi label sebagai (Sx CPF) pada Gambar 4. Atau, sekali blok cache yang ditemukan dalam cache instruksi, prefetch bisa dilewati, dan buffer streaming dapat dicegah dari memproduksi prefetches lebih lanjut sampai itu dialokasikan kembali. Kami mengacu pada teknik yang terakhir ini sebagai berhenti fil- ter (Sx CPF Stop). Bila menggunakan tembolok penyelidikan filtering, tentang kinerja yang sama dicapai untuk bandwidth bus yang tinggi, dan pemercepat yang lebih besar terlihat untuk bandwidth bus yang rendah. Untuk bandwidth bus yang rendah, stop filter memberikan Mance perfor- yang sama, dengan penurunan 10% dalam penggunaan bus. Kami juga diperiksa menggabungkan tag berikutnya-line prefetch- ing dengan buffer streaming (hasil tidak ditunjukkan), tapi ini pro- vided hanya sedikit perbaikan. Hal ini karena buffer ing stream- mengikuti jalan berurutan setelah cache miss, yang tumpang tindih blok prefetch yang berikutnya-line prefetch- ing menangkap. 7 Pengorbanan Kinerja Kita sekarang membandingkan mengambil prefetching diarahkan dengan sebelum di- kerja struction prefetching, dan kinerja dari Bining com- teknik ini. Angka 5, 6, dan sults 7 acara ulang untuk selanjutnya-line prefetching (NLP), streaming buffer dengan penyaringan berhenti Cache Probe (SBX CPF Stop), mengambil prefetching diarahkan tanpa penyaringan apapun (No Filt), dan mengambil prefetching diarahkan dengan berbagai teknik penyaringan. Teknik-teknik ini dijelaskan secara rinci dalam bagian 5 dan 6. 7.1 Kombinasi Pendekatan Ambil Directed Prefetching (FDP) berkonsentrasi pada jalan dicted pra eksekusi yang diambil oleh prosesor. Sana 16 NLP Hapus CPF Enq CPF + Mengusir + NLP S1 CPF Berhenti Enqueue CPF Rem CPF + S1 CPF Berhenti S8 CPF Berhenti Mengusir 45 40 40 % Speedup Selama Basis 8 bytes / siklus 45 % Speedup Selama Basis 32 bytes / siklus Tidak ada Filt Enq CPF + Mengusir 35 35 30 30 25 25 20 20 15 15 10 10 5 5 0 0 1 Port 2 Pelabuhan 1 Port 2 Pelabuhan Gambar 5: Rata-rata persen pemercepat IPC untuk single dan dual-porting 16K 2-way instruksi cache asosiatif. Hasilnya ditunjukkan untuk tinggi (32 bytes / siklus) dan rendah arsitektur (8 bytes / siklus) bandwidth. 40 40 % Speedup Selama Basis 8 bytes / siklus 45 % Speedup Selama Basis 32 bytes / siklus 45 35 35 30 30 25 25 20 20 15 15 10 10 5 5 0 0 16K-2way 16K-4way 32K-2way 16K-2way 16K-4way 32K-2way Gambar 6: Rata-rata persen pemercepat IPC untuk 16K 2-way instruksi cache asosiatif, 16K 4-arah instruksi cache asosiatif, dan 32K 2arah instruksi cache asosiatif. 100 % Bus Pemanfaatan 80 60 40 20 0 32 bytes / siklus 8 byte / siklus Gambar 7: Rata-rata utilisasi persen bus selama tujuh teknik prefetching. Hasil ditampilkan untuk 16K 2-way instruksi cache asosiatif, untuk kedua tinggi dan rendah bus bandwidth. dua manfaat dari menggabungkan berikutnya-line mereka berpotensi dapat prefetch jalan tidak-diambil lebih prefetching atau mengalir buffer dengan FDP. Manfaat awal dari arsitektur prefetch mengambil diarahkan, masking pertama adalah bahwa sequen- tially prefetching bawah lebih dari cache rindu latency. Kami mencoba beberapa aliran rindu bisa prefetch jalan yang salah ke dalam buffer kombinasi dari mengambil diarahkan prefetching dan prefetch, yang dapat bermanfaat jika cabang itu pekerjaan sebelumnya, dan sekarang dua kombinasi - salah mispredicted. Manfaat kedua, adalah bahwa satu yang bekerja dengan baik untuk bus bandwidth rendah 17 8 bytes / siklus 32 bytes / siklus 14 14 NLP asli 12 SB1 CPF Berhenti Hapus CPF Enqueue CPF Mengusir 10 Enq CPF + Mengusir NLP asli 12 SB1 CPF Berhenti Hapus CPF 10 Enqueue CPF Mengusir Enq CPF + Mengusir % Nona Tingkat 8 % Nona Tingkat 8 6 6 4 4 2 2 0 0 groff gcc pergi m88k perl pusaran avg groff gcc pergi m88k perl pusaran avg Gambar 8: Cache Instruction Fetch tingkat blok rindu untuk arsitektur prefetching yang berbeda untuk 16K 2-way I-Cache. berbeda Pelindo). Konfigurasi porting ganda melakukan arsitektur dan salah satu yang bekerja dengan baik untuk bus pekerjaan yang lebih baik di tembolok penyelidikan bandwidth tinggi. penyaringan dan tingkat di mana mengambil blok diproses Kombinasi bandwidth rendah menggabungkan lebih tinggi selama instruksi yang normal mengambil dari berikutnya-line prefetching dengan prefetching berbasis sin- arsitektur porting gle. Single arsitektur porting masih penggusuran dan Enqueue Cache Probe Filtering (ENQ CPF + Mengusir + NLP). prioritas Prefetch diberikan pertama yang baris berikutnya prefetching, kemudian ke prefetching berbasis penggusuran, dan akhirnya, untuk Enqueue CPF. Kedua pendekatan kami melihat melibatkan menggabungkan mengambil prefetching diarahkan dengan buffer streaming. nique tech- ini bertujuan untuk mengeksploitasi bandwidth yang lebih tersedia. Kami menggunakan mengambil prefetching diarahkan dalam kombinasi dengan buffer streaming yang tunggal, dengan tembolok penyelidikan filtering pada kedua mekanismemekanisme (Rem CPF + S1 CPF Stop). The stop filter juga digunakan dengan buffer streaming. 7.2 Pelabuhan Perbandingan Untuk mengetahui pengaruh bahwa jumlah instruksi port cache yang akan memiliki pada kinerja skema prefetching kami, kita membandingkan hasil untuk instruksi prefetching dengan baik porting 16K 2-arah asosiatif cache instruksi ganda dalam gambar 5 satu dan. Cache instruksi tunggal porting akan berarti lebih rendah instruksi throughput dari unit menjemput, tetapi juga berarti tingkat yang lebih tinggi dari FTQ hunian. Hal ini pada gilirannya akan berarti bahwa mengambil diarahkan prefetching akan mampu ini- prefetches tiate jauh ke depan dari konfigurasi porting ganda (semakin lama entri duduk di FTQ, semakin latency akses memori dapat disembunyikan). Namun, kurang port juga berarti lebih sedikit kesempatan untuk melakukan tembolok penyelidikan penyaring- ing. Seperti dapat dilihat pada gambar 5, yang paling skema memiliki pemercepat sama pada arsitektur bandwidth tinggi lebih hasil garis dasar- mereka. The pengecualian adalah mereka skema dengan Enqueue CPF mana kinerja turun karena kurangnya pelabuhan bebas untuk melakukan tembolok penyelidikan filtering. Secara keseluruhan konfigurasi porting tunggal dan ganda mencapai pemercepat sama (relatif terhadap yang 18 yang sangat tidak baik, karena cache mengambil blok diproses lebih lambat, yang menghasilkan hunian FTQ lebih tinggi dan lebih dari hukuman miss dapat bertopeng ketika menggunakan mengambil prefetching diarahkan. 7.3 Konfigurasi Cache Kami sekarang mengetahui pengaruh cache tions configura- berbeda pada berbagai skema prefetching. Gambar 6 menunjukkan kinerja di tiga konfigurasi cache yang berbeda, baik tinggi dan rendah bus bandwidth. Kami meneliti mengenai kinerja terlihat ketika menggunakan 16K 2-arah asosiatif, 16K 4-arah asosiatif, dan instruksi asosiatif 32K 2-arah Cache. Meningkatkan associativity cache harus mengurangi misses konflik, sementara meningkatkan ukuran cache harus mengurangi meleset kapasitas. Pada Gambar 6, saat menambahkan lebih associativity kita melihat cline de- dalam speedup diperoleh dengan semua teknik, meskipun kecenderungan umum dari hasil tetap sama. Untuk ple exam-, mengambil prefetching diarahkan dengan Hapus Cache Probe Penyaringan dijatuhkan dari speedup dari 40% untuk percepatan dari 32% untuk arsitektur bandwidth yang tinggi, sedangkan combination dari baris berikutnya prefetching, prefetching berbasis penggusuran, dan Enqueue CPF dijatuhkan dari speedup dari 35% untuk percepatan dari 28%. Ketika meningkatkan ukuran cache, speedup obdirawat dengan seksama dengan mengambil prefetching diarahkan dengan Hapus CPF jatuh ke 18%. Meskipun tidak ditampilkan, bentuk-bentuk per- cache yang rindu penyaring baik di sini, karena berkonsentrasi pada meleset konflik. 7.4 Cache Nona Tarif Gambar 8 menunjukkan persen cache instruksi mengambil blok merindukan untuk arsitektur asli tanpa prefetching dan untuk beberapa arsitektur prefetching diperiksa. sults kembali ditampilkan untuk 16K 2-arah Cache asosiatif. Ada korelasi yang pasti antara tingkat cache miss dan IPC speedup. Namun faktor-faktor lain mempengaruhi speedup IPC, seperti warung data cache karena cache yang bandwidth rendah L2 dan kepentingan relatif dari prediksi cache instruksi. Hapus CPF konsisten menghasilkan tingkat kehilangan terendah 19 instruksi untuk menemukan cabang-cabang untuk memprediksi dan menghitung target mereka gaun ad-, dan (2) mesin prefetch mereka mengambil diarahkan harus berhenti mengikuti aliran diprediksi kapan LA-PC mendapat cache miss. Ketika LA-PC mendapat cache miss, prefetcher mereka terus prefetching berurutan setelah baris cache yang tidak terjawab. Sebaliknya, kami prefetching mengambil diarahkan di semua program untuk kasus-kasus bandwidth tinggi (2,3% rata-rata) - dan untuk sebagian besar yang bandwidth rendah (3,6% rata-rata). Bandwidth untuk Hapus CPF berpotensi menurun secara signifikan jika port tambahan ditambahkan ke tag array untuk lebih menyaring permintaan prefetch. 8 Pekerjaan Terkait Pada bagian ini kita menggambarkan pekerjaan terkait dengan cache instruksi prefetching tidak tercakup dalam bagian 6. 8.1 Ambil Penelitian Directed Prefetching Ambil diarahkan prefetching pertama kali diusulkan oleh Chen dan Baer [3]. Dalam arsitektur prefetching mereka mereka menciptakan ond PC sek- disebut PC Look-depan, yang berjalan di depan instruksi yang normal mengambil mesin. Ini LA-PC dipandu oleh arsitektur prediksi cabang, dan digunakan untuk indeks ke tabel prediksi referensi untuk memprediksi alamat data dalam rangka untuk melakukan data cache prefetching. Karena LA-PC pro vided aliran alamat jauh di muka normal mengambil mesin, mereka mampu untuk memulai data cache prefetches jauh di muka daripada jika mereka telah menggunakan PC biasa untuk melakukan prediksi alamat. Hal ini memungkinkan mereka untuk menutupi lebih dari hukuman cache miss data. Chen dan Baer hanya melihat menggunakan LA-PC untuk prefetching Data [3]. Chen, Lee dan Mudge [2] meneliti menerapkan proach ap Chen dan Baer untuk instruksi prefetching. Mereka diperiksa menambahkan prediktor cabang terpisah untuk prosesor normal; sehingga prosesor akan memiliki 2 cabang prediktor, satu untuk membimbing prefetching dan satu untuk memandu pengambilan mesin. Prediktor cabang terpisah menggunakan LA-PC untuk mencoba dan mempercepat menjelang prosesor, memproduksi potensial mengambil alamat di jalan diprediksi. prediktor cabang yang terpisah ini dirancang untuk meminimalkan biaya tambahan untuk arsitektur. Ini hanya termasuk (1) register global yang sejarah, (2) alamat pengirim stack, dan (3) penambah untuk menghitung alamat target. Dalam desain mereka, setiap siklus blok cache yang ditunjuk oleh LA-PC diambil dari cache instruksi di alel pardengan cache yang normal mengambil. Jika tidak miss, blok cache diterjemahkan untuk menemukan petunjuk cabang dan alamat target yang juga dihitung. Ketika instruksi cabang ditemukan di blok cache yang diperkirakan kita-ing struktur prediksi cabang yang terpisah, LA-PC diperbarui, dan proses ini diulang. cess pro seluruh ini seharusnya mempercepat menjelang instruksi yang normal mengambil, tetapi terbatas untuk seberapa jauh ia dapat mempercepat depan be- penyebab (1) mesin prefetch menggunakan cache 20 arsitektur mengikuti mengambil aliran prefetching blok cache yang lalu yang ketinggalan dalam cache dan tidak perlu mengakses cache instruksi untuk memberikan prediksi sasaran cabang dan prefetch alamat karena kita memiliki dipisahkan front-end. 8.2 Keluar Mengambil dari Instruksi prefetching dan streaming buffer untuk bandwidth bus yang berbeda, jumlah port Cache, dan ukuran cache dan presenden. Hasil penelitian menunjukkan bahwa NLP masih arsitektur ing prefetch- menarik pencapaian speedup ratarata 20% sementara hanya menggunakan sejumlah kecil bandwidth bus. Menggunakan salah satu streaming yang penyangga untuk prefetching tersedia 21% menjadi 32% Orde et Stark. al., [19] diperiksa menggunakan cache instruksi penjara-bebas untuk mengambil petunjuk, bahkan di hadapan sebuah rindu cache instruksi. Prediktor cabang akan con- tinue untuk menghasilkan satu prediksi per siklus, mengambil instruksi-instruksi, dan menempatkan mereka ke dalam hasil pengambilan antrian rusak. Gagasan mereka mirip dengan desain front-end dipisahkan kami [14], kecuali bahwa tidak ada FTQ untuk memungkinkan prediktor untuk berjalan di depan unit menjemput, dan mereka tidak memeriksa instruksi prefetching. Oleh karena itu, mereka tidak akan melihat manfaat apapun dari mengambil rusak di hadapan warung tembolok sekali jendela instruksi menjadi penuh. Dalam pendekatan kami, mengambil di- prefetching rected dapat terus prefetch sampai prefetch buffer penuh. 8.3 Kode Penempatan Banyak teknik perangkat lunak telah dikembangkan untuk ing improv- kinerja cache instruksi. Teknik seperti ba sic blok re-pemesanan dan penempatan prosedur [12], dan pemesanan ulang berdasarkan struktur kontrol [10] semuanya telah terbukti secara signifikan meningkatkan kinerja Cache instruksi. Salah satu tujuan dari dasar blok penataan kembali adalah untuk menempatkan blok dasar berurutan untuk kemungkinan besar jalan melalui cedure pro. Hal ini dapat memungkinkan arsitektur berikutnya-line dan streaming penyangga prefetching untuk mencapai kinerja yang lebih baik dari apa yang kita lihat dalam hasil kami [21]. Menguji efek penempatan kode dan perangkat lunak dipandu prefetching yang be- Yond ruang lingkup apa yang kita mampu untuk menyelidiki dalam makalah ini. Menggunakan teknik ini dalam kombinasi dengan prefetching mengambil diarahkan, teknik penyaringan kami, dan arsitektur prefetching sebelum adalah topik untuk penelitian masa depan. 9 Ringkasan Decoupling front-end dari prosesor dengan FTQ be- tween prediktor cabang dan cache instruksi ditunjukkan dalam pekerjaan sebelum memberikan prediksi cabang terukur layak mendapatkan tanda [14]. Seperti yang telah kita ditunjukkan dalam makalah ini, kopling de- ini sama dengan FTQ dapat memungkinkan efisien mengambil diarahkan cache instruksi prefetching. Kami membandingkan mengambil prefetching diarahkan dengan berikutnya-line 21 [2] IK Chen, CC Lee, dan TN Mudge. Instruksi prefetching kita-ing informasi prediksi cabang. Dalam Konferensi Internasional tentang Desain Komputer, halaman 593-601, Oktober 1997. speedup, sementara hanya menggunakan sedikit lebih bus bandwidth dari NLP. Streaming penyangga melakukan yang lebih baik karena dapat terus berurutan prefetch masa lalu cache miss, yang topeng lebih dari hukuman miss dari arsitektur NLP. Ambil prefetching diarahkan terbukti menjadi esensial alternatif poten- streaming buffer mencapai pemercepat tertinggi 25% sampai 40% rata-rata, tetapi menggunakan jumlah tertinggi bandwidth bus. Kami diperiksa menggunakan tembolok penyelidikan penyaringan untuk mengurangi jumlah prefetches terbuang, dan untuk menghemat bandwidth bus. Untuk mengurangi bandwidth bus bulu- ther mungkin bermanfaat untuk menambah port tambahan untuk di- struction cache tag array untuk memberikan tambahan penyaringan tembolok penyelidikan. Pendekatan lain filtering kami diperiksa adalah fectupaya menandai diusir blok cache pada arsitektur diksi cabang pra, dan hanya prefetch mereka didasarkan blok cache yang ditandai sebagai diusir. Membimbing mengambil di- prefetching dikoreksi dengan hanya sedikit digusur digunakan paling sedikit bandwidth dan memberikan 11% speedup usia aver-. Jika prediksi cabang prosesor dapat menahan negara untuk cabang lebih dari yang diadakan di cache instruksi, kemudian menerapkan prefetching digusur dapat menjadi kemenangan untuk arsitektur prefetching mengambil diarahkan. Arsitektur prefetching pengambilan diarahkan kami exam- ined dalam makalah ini menggunakan desain FIFO buffer prefetch sangat sederhana. Kami sedang meneliti menggunakan sepenuhnya asso- ciative prefetch buffer dengan bit diganti (seperti yang dijelaskan di bagian 5). Hal ini akan memungkinkan prefetch buffer untuk memegang blok cache yang PREFETCHED bawah jalur mispredicted. Dalam disi ad-, kami sedang menyelidiki menggunakan prefetching mengambil diarahkan dan arsitektur FTQ yang dipisahkan untuk membantu pro vide mengambil throughput untuk Simultan Multithreading. Dalam desain ini, FTQ terpisah dipertahankan untuk setiap thread hardware, memungkinkan mengambil prefetching diarahkan untuk berjalan di depan setiap thread, yang berpotensi dapat menghilangkan sejumlah besar instruksi cache misses. Ucapan Kasih [3] TF Chen dan JL Baer. Mengurangi latency memori melalui nonblocking dan cache prefetching. Dalam Prosiding Internasional Keempat Terima Kami ingin mengucapkan terima kasih Norm Jouppi dan pengulas anonim untuk menyediakan komentar yang berguna di atas kertas ini. pekerjaan ini didanai sebagian oleh NSF KARIR hibah No. CCR9733278, NSF hibah No. CCR-9711714, dan hibah dari Compaq Perusahaan Komputer. Referensi [1] DC Burger dan TM Austin. The simplescalar set alat, versi 2.0. Laporan Teknis CS-TR-97-1342, University of Wisconsin, anak Madi-, Juni 1997. 22 Konferensi Dukungan Arsitektur untuk Bahasa Pemrograman dan Sistem Operasi (ASPLOS-IV), Halaman 51-61, Oktober 1992. [4] K. Farkas dan N. Jouppi. timbal balik kompleksitas / kinerja dengan beban non-blocking. Dalam ke-21 Tahunan Simposium Internasional Arsitektur Komputer, halaman 211-222, April 1994. [5] KI Farkas, NP Jouppi, dan P. Chow. Bagaimana berguna adalah nonblocking beban, buffer aliran dan eksekusi spekulatif di cessors beberapa masalah pro? Dalam Prosiding Simposium Internasional Pertama pada High-Performance Komputer Arsitektur, Januari 1995. [6] D. Joseph dan D. Grunwald. Prefetching menggunakan prediktor markov. Dalam 24 Tahunan Simposium Internasional di Komputer Arsitektur, Juni 1997. [7] N. Jouppi. Meningkatkan kinerja cache yang langsung dipetakan oleh hasil penjumlahan dari kecil sepenuhnya asosiatif cache dan prefetch buffer. Dalam ceedings Pro-17 Tahunan Simposium Internasional di Komputer Arsitektur, Mei 1990. [8] D. Kroft. Penjara bebas instruksi mengambil organisasi cache / prefetch. Dalam 8 Tahunan Simposium Internasional Arsitektur Komputer, halaman 81-87, Mei 1981. [9] C.-K. Luk dan TC Mowry. prefetching Koperasi: Compiler dan hardware dukungan untuk instruksi prefetching efektif dalam cessors pro modern. Dalam 31 Simposium Internasional mikroarsitektur, December 1998. [10] S. McFarling. Prosedur penggabungan dengan cache instruksi. Proceed- ings dari ACM SIGPLAN '91 Konferensi pemograman gauge Desain dan Implementasi, 26 (6): 71-79, Juni 1991. [11] S. McFarling. Menggabungkan prediktor cabang. Laporan Teknis TN36, Digital Equipment Corporation, Western Research Lab, Juni 1993. [12] K. Pettis dan RC Hansen. Profil posisi kode dipandu. Proceed- ings dari ACM SIGPLAN '90 Konferensi pemograman gauge Desain dan Implementasi, 25 (6): 16-27, Juni 1990. [13] J. Pierce dan T. Mudge. Salah-jalan instruksi prefetching. Dalam 29 Simposium Internasional tentang Microarchitecture, halaman 165175, De- cember 1996. [14] G. Reinman, T. Austin, dan B. Calder. Sebuah front-end architecmendatang scalable untuk pengiriman instruksi cepat. Dalam 26 Tahunan Internasional Sym- posium di Komputer Arsitektur, Mei 1999. [15] A. Seznec, S. Jourdan, P. Sainrat, dan P. Michaud. Beberapa blok depan prediktor cabang. Dalam Prosiding Konferensi Internasional Ketujuh pada Dukungan Arsitektur untuk Bahasa Pemrograman dan Sistem Operasi, halaman 116-127, Oktober 1996. [16] T. Sherwood dan B. Calder. Waktu bervariasi perilaku program. Laporan Teknis UCSD-CS99-630, University of California, San Diego, Agustus 1999. [17] AJ Smith. kenangan Cache. Komputasi Survei, 14 (3): 473-530, September 1982. [18] JE Smith dan W.-C. Hsu. Prefetching di cache instruksi superkomputer. Dalam Prosiding Supercomputing, November 1992. [19] J. Stark, P. Racunas, dan Y. Patt. Mengurangi dampak kinerja instruksi cache misses dengan menulis instruksi ke stasiun tion reserva- out-oforder. Dalam Prosiding Simposium Internasional ke-30 di Microarchitecture, halaman 34-45, Desember 1997. [20] A. Veidenbaum, T. Zhao, dan A. Shameer. Non-sekuensial instruksi yang prefetching tembolok tion untuk prosesor multi-isu. International Journal of Kecepatan Tinggi Computing, 10 (1): 115-140, 1999. [21] C. Xia dan J. Torrellas. Instruksi prefetching kode sistem dengan tata letak dioptimalkan untuk mengurangi cache misses. Dalam 23 Tahunan Interna- tional Simposium Komputer Arsitektur, Juni 1996. [22] T. Yeh. Dua tingkat adpative cabang prediksi dan instruksi mengambil mekanisme untuk prosesor superscalar kinerja tinggi. Ph.D. Dis sertation, University of Michigan, 1993. 23