Uploaded by User13946

MICRO32-fdp.en.id

advertisement
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
Download