Selasa, 07 September 2010

VDPI dan implementasinya pada Multi Processor


Sebuah kelas baru prosesor telah mulai muncul dalam berbagai penyimpanan, keamanan, stasiun basis nirkabel, dan jaringan untuk menggantikan aplikasi yang sangat mahal - dengan waktu yang lama untuk boot - Aplikasi proprietary Sirkuit Terpadu Tertentu (ASICs) yang dikembangkan oleh sistem OEM solusi penyedia maupun yang dirancang oleh raksasa industri, seperti LSI Logic dan IBM.

Ini kelas baru prosesor multi-core adalah terdiri dari delapan, enam belas, bahkan enam puluh empat core prosesor individu dengan kontroler memori terintegrasi, aku berbagai / O interface, dan mesin akselerasi terpisah.

Meskipun ini kelas baru prosesor telah membuat langkah besar dalam mengatasi keterbatasan dari prosesor generasi sebelumnya, tidak semua kelas "baru" prosesor multi-core diciptakan sama. Beberapa perusahaan yang mengembangkan prosesor ini threading menambahkan kemampuan untuk mengatasi latency memori, dan juga termasuk antarmuka asli 10Gbps, sementara yang lain termasuk mesin keamanan dan bahkan mesin ekspresi reguler yang mendukung aplikasi yang sangat khusus.

Alih-alih memeriksa semua fitur di sejumlah prosesor multi-core dan membandingkannya dengan sedikit bit, makalah ini akan memfokuskan pada satu elemen arsitektur kritis, subsistem memori. Subsistem memori sangat penting karena ini adalah faktor utama dalam menentukan skalabilitas dan batas atas kinerja prosesor yang dapat dicapai.

Memori arsitektur dibandingkan di sini adalah berdasarkan dua prosesor multi-core terkemuka di pasaran saat ini:

1. Single channel, baris cache lebar (Single / Wide)
2. Dual channel, garis cache sempit (Dual / sempit)

Pertanyaan yang akan dibahas adalah: arsitektur yang lebih unggul dalam memberikan kinerja yang diperlukan untuk bersaing dengan suara yang berkembang, video, dan data lalu lintas bahwa pasar membutuhkan hari ini?

Single Channel, Cache Line Wide (Single / Wide)
Saluran tunggal, cache mendekati garis lebar menggunakan single channel memory interface antara prosesor dan memori DDR2. Lebar saluran adalah 128-bit dan menggunakan 16-bit ECC dengan total 144-bit. Dalam hal ini "Single / Wide" pendekatan, baris cache 128-byte yang digunakan dan setiap akses ke memori adalah-ledakan-8 membaca atau menulis.

Hasil dari pendekatan ini adalah bahwa setiap meledak ke memori mengisi atau mengosongkan cache garis tunggal. Dengan dukungan untuk DDR2-800 memori, / Single Wide pendekatan memiliki bandwidth dari memori 12.8GBps, dan dicapai dengan mendukung potensi sebesar 100 juta transaksi per detik, dimana transaksi adalah baik membaca atau menulis dari 128-byte cache line.

Dual Channel, Cache Line Persempit (Dual / sempit)
Saluran dual, arsitektur cache garis tipis menggunakan pendekatan yang berbeda untuk memaksimalkan kinerja memori. The "Dual / Persempit" memanfaatkan arsitektur memori saluran dua sebagai antarmuka antara prosesor dan memori DDR2 di mana masing-masing saluran adalah 64-bit yang luas dengan 8-bit ECC.

baris cache dalam arsitektur ini adalah 32-byte dan setiap akses ke memori adalah-ledakan-4 membaca atau menulis. Arsitektur ini juga mengisi atau mengosongkan jalur seluruh cache dengan satu transaksi. Arsitektur / Dual Persempit mencapai 12.8GBps sama bandwidth memory baku, tetapi mencapai angka ini melalui 400,000,000 mungkin transaksi per detik.

Dari perspektif teoretis, di kecepatan DDR2-667, di / Single Wide kinerja memori interface 83.000.000 operasi baris cache per detik, sedangkan pendekatan / Dual Persempit adalah 334.000.000 operasi baris cache per detik. Namun, memori DDR2 adalah jauh dari ideal dan memiliki beberapa faktor yang dapat mengurangi kinerja teoretis, termasuk:

1) kali Refresh
2) Siklus Bisnis kali
3) Bank keterbatasan waktu akses

Simulasi dikembangkan untuk membandingkan dua pendekatan arsitektur. Untuk konfigurasi khas 4GB DDR2-667 memori dan klasifikasi beban kerja paket seperti dijelaskan di bawah ini, / Single menghasilkan arsitektur Wide 64.000.000 operasi baris cache per detik, sedangkan / Dual Persempit hasil arsitektur 204.000.000 operasi baris cache per detik.

Penting untuk dicatat bahwa meskipun arsitektur / Single Wide memiliki efisiensi 77%, [64MOps aktual / 83MOps] potensial, dibandingkan dengan 61% efisiensi [] 204MOps aktual / 334MOps potensial, / Dual Persempit arsitektur menyediakan lebih dari tiga kali jumlah transaksi per detik. Sebagaimana dijelaskan di bawah, ini memainkan peran yang signifikan dalam paket throughput dalam aplikasi nyata.

Sebuah Aplikasi Umum "Load Balancing / Paket Distribusi
AdvancedTCA (ATCA) pisau paket prosesor sering diminta untuk bertindak sebagai akhir depan untuk seluruh casis pisau. Dalam aplikasi ini, prosesor paket menghubungkan ke jaringan di satu sisi dan satu set pisau aplikasi di sisi lain.

Lebih jauh lagi, tindakan-tindakan paket pisau sebagai penyeimbang beban prosesor dan memungkinkan seluruh koleksi blades aplikasi untuk muncul sebagai alamat IP tunggal "kritis untuk menyembunyikan kompleksitas sistem internal dari jaringan.

Untuk memperoleh pemahaman untuk tantangan solusi harus melakukan untuk melakukan 10Gbps dari load balancing dan terjemahan alamat jaringan (NAT), pertimbangkan sistem tertentu agar berjalan pada 10Gbps dengan paket minimum berukuran 64-byte "yang 16.400.000 paket per detik, dalam arah masing-masing, atau 32.900.000 paket per detik melalui paket prosesor.

Sebuah penyeimbang beban dioptimalkan / mesin NAT akan menjalankan langkah-langkah berikut ini untuk setiap paket:

1. Menerima paket dan tempat ke dalam memori cache
2. Lakukan pencarian aliran
3. Memodifikasi header paket per aliran
4. Kenaikan statistik tentang paket / aliran
5. Kirim paket dari cache untuk proses selanjutnya

Catatan bahwa ini merupakan kasus terbaik - paket yang tidak pernah disimpan untuk DRAM - hanya ke memori cache, sehingga jumlah akses memori disimpan ke minimum.

Arus Lookup Algoritma
Seperti paket yang diterima ke dalam sistem, mereka harus dikategorikan sebagai apakah atau tidak cocok dengan aliran yang sudah ada atau bagian dari sebuah aliran baru. Hal ini biasanya dilakukan dengan pertandingan 5-tupel, di mana lima bidang yang mendefinisikan aliran dicocokkan dengan database arus yang ada:

1) Alamat IP Sumber
2) Sumber Port
3) Tujuan Alamat IP
4) Port Tujuan
5) Protokol

Fungsi pencarian yang paling umum untuk memeriksa database arus yang ada adalah lookup hash. lookup Hash adalah di mana kunci dibuat berdasarkan 5-tupel dan kemudian diindeks ke daftar kunci yang cocok.

Kunci menunjukkan catatan yang mendefinisikan setiap aliran dan catatan dapat dirantai bersama-sama dalam beberapa kasus 5-tupel hash dengan nilai yang sama. Setiap pencarian membutuhkan minimal dua lookup memori, satu untuk mencari daftar kunci dan yang kedua untuk mengambil catatan aliran. Jika beberapa arus hash ke tombol yang sama, mengakses memori tambahan akan diperlukan untuk mengikuti daftar catatan dirantai.

Dalam rangka meminimalkan jumlah tabrakan, jumlah ember hash biasanya dipilih untuk minimal 2x lebih besar daripada jumlah arus yang diharapkan, dan bahkan dengan ember 2x, 2,24 mengakses memori akan dibutuhkan rata-rata. Dengan lebih dari 10x ember arus, ini turun menjadi 2,05 mengakses memori per paket.

Statistik. Setelah aliran tersebut telah ditemukan, statistik tentang aliran harus diperbarui. Dalam mesin berperforma tertinggi NAT, statistik ini disimpan dalam baris cache yang sama dengan catatan aliran, yang berarti bahwa statistik sudah di memori setelah aliran telah ditemukan. Setelah statistik bertambah, baris cache harus ditulis kembali ke memori utama, memerlukan satu akses memori lebih lanjut.

Kinerja cache. lookup aliran ini dan statistik memperbarui operasi membuat memori cache berkinerja buruk karena jumlah paket arus cenderung jauh lebih besar dari jumlah baris cache, yang berarti bahwa aliran yang diberikan tidak mungkin dalam cache utama pada waktu tertentu.

Contoh: Asumsikan arus 500K, dengan 4M ember hash. Jika setiap ember hash adalah sebuah pointer 8-byte, dan setiap record aliran adalah 32-byte, maka tabel hash adalah 32MB (4M * 8-byte), dan meja aliran 16MB (500K * 32 byte). Dengan cache 2MB, kesempatan bahwa aliran diberikan sudah akan berada dalam cache hanya 4% (2 / 48). Dengan mengakses memori diperlukan 3,05 per paket, cache hanya memiliki dampak kecil dan menjatuhkan mengakses memori rata-rata per paket untuk 2,93.

Diperlukan Memori Kinerja
Sebuah mesin load-balancing yang sangat optimal / mesin NAT dapat dibuat membutuhkan pada mengakses memori 2,93 rata-rata per paket. Mengingat throughput memori untuk Single / Wide dan Dual / Persempit arsitektur dibahas sebelumnya, tarif maksimum dan throughput paket untuk dua arsitektur dapat dihitung seperti yang ditunjukkan pada Tabel 1 di atas.

Tabel ini menyoroti dampak perbedaan memori arsitektur antara Single / Wide dan Dual / pendekatan sempit. Pendekatan / Single Wide hanya pada 66% dari garis menilai dengan DDR2-667, dan tidak dapat mencapai 10G full-duplex bahkan dengan memori DDR2-800.

Di sisi lain, arsitektur / Dual Persempit mudah mencapai 10G bahkan dengan memori DDR2-400 paling lambat, dan dengan standar memori DDR2-667 arsitektur memberikan lebih dari dua kali lipat dari kinerja memori yang diperlukan untuk 10GbE full duplex, sehingga menyediakan ruang kepala yang signifikan untuk lookup tambahan dan fungsi-fungsi lanjutan.

Alasan perbedaan besar antara kedua arsitektur dapat ditemukan dalam cache perbedaan baris. The / Single Wide dirancang dengan pendekatan yang luar biasa besar garis cache 128-byte, tapi jaringan yang khas dan paket aplikasi pengolahan membutuhkan lookup 32-byte hanya 8 - dan.

Akibatnya, sebagian besar setiap baris cache yang terbuang. Arsitektur / Dual sempit, di sisi lain, memiliki ukuran cache garis 32-byte yang lebih erat sesuai apa yang dibutuhkan dalam jaringan yang khas dan aplikasi paket pengolahan dan hasil kinerja tinggi.

Akses memori Anggaran. Cara kedua untuk melihat masalah ini adalah untuk menghitung jumlah akses memori DDR diizinkan per paket pada 10G dupleks penuh. Dengan 32.900.000 paket per detik, dengan / Single Wide arsitektur memungkinkan mengakses memori DDR 1,9 per paket, sedangkan arsitektur / Dual DDR 6 Persempit izin akses memori per paket. Sekali lagi, arsitektur / Dual Persempit memberikan performa yang jauh lebih tinggi.

Ringkasan
Ketika dievaluasi terhadap load balancing sederhana / aplikasi NAT, bahkan ketika sangat dioptimalkan untuk membutuhkan akses kurang dari 3 memori per paket, pendekatan / Single Wide tidak bisa memberikan 10GB garis kinerja tingkat full duplex, sedangkan arsitektur / Dual Persempit menyediakan dua kali lookup diperlukan bandwidth.

Sebagian besar paket aplikasi pengolahan jauh lebih kompleks dari ini penyeimbang beban sederhana / NAT aplikasi dan melakukan pencarian yang lebih dan memerlukan pembaruan statistik.

Di samping itu, analisis ini tidak mencakup biaya overhead untuk pemrosesan lambat-jalan, manajemen cepat jalan, atau keamanan pengolahan, yang menunjukkan bahwa kinerja sejati pendekatan / Single Wide akan bahkan lebih rendah dari dianalisis di sini. Pada akhirnya, / Dual Persempit arsitektur yang dibutuhkan untuk mencapai tingkat garis 10Gbps dan di atas dalam jaringan dan aplikasi paket pengolahan.

Tidak ada komentar:

Posting Komentar