Thursday, November 17, 2011

Sistem Terdistribusi [2-1] : Bus-Based Multiprocessors

Artikel berikut merupakan sambungan dari artikel sebelumnya tentang konsep perangkat keras. Bus-based multiprocessors terdiri dari beberapa jumlah CPU yang semua terhubung menggunakan bus, bersama dengan sebuah modul memori.
Konfigurasi sederhana seperti terlihat di gambar, sebuah bus berkecepatan tinggi menghubungkan CPU dan memori. Tipikal bus memiliki 32 atau 64 jalur alamat, 32 atau 64 jalur data, dan mungkin 32 atau lebih banyak kontrol jalur, yang semuanya beroperasi secara paralel. Proses membaca (read) dari memori, dengan cara,  CPU menempatkan alamat dari kata/data yang diinginkan pada bus yang berisi alamat, kemudian meletakkan sinyal pada bus kontrol yang tepat untuk menunjukkan bahwa akan terjadi proses read. Memori merespon dengan menempatkan data pada bus data untuk agar CPU yang meminta dapat membacanya dengan cara yang sama.
Karena hanya ada satu memori, jika CPU A menulis (write) data ke memori dan kemudian CPU B membaca data itu  satu mikrodetik kemudian, B akan mendapatkan nilai yang dituliskan (proses real time). Sebuah memori yang memiliki properti ini dikatakan koheren. Koheren memainkan peran penting dalam sistem operasi terdistribusi dalam berbagai cara yang akan kita bahas nanti.
Masalahnya dengan skema ini adalah bahwa dengan jumlah CPU sebanyak  4 atau 5, akan membuat bus kelebihan beban dan menyebabkan kinerja akan menurun drastis. Solusi adalah menambahkan kecepatan memori yang tinggi (cache memory) antara CPU dan bus, seperti yang ditunjukkan pada gambar diatas. Cache memiliki data yang paling baru diakses dan semua memori melakukan permintaan melalui cache. Jika ada permintaan dalam cache, cache sendiri menanggapi ke CPU, dan tidak pada bus. Jika cache cukup besar, kemungkinan keberhasilan, yang disebut hit rate, akan tinggi, dan jumlah bus traffic per CPU akan turun drastis, sehingga memungkin penambahan CPU dalam sistem menjadi banyak lagi. Ukuran cache 64Kb untuk 1Mb memori adalah sebuah kewajaran, dan akan memberikan  hit rate 90 persen atau lebih.
Namun, pengenalan cache juga membawa masalah serius. Misalkan dua CPU, A dan B, masing-masing membaca data yang sama ke dalam masing-masing cache. Maka A akan menimpa data. B berikutnya ketika membaca data itu, ia mendapatkan nilai lama dari cache, bukan nilai yang baru saja dituliskan dan sistem ini sulit untuk diprogram.
Banyak peneliti telah mempelajari masalah ini, dan berbagai solusi diketahui. Anggaplah bahwa cache memori  dirancang sedemikian rupa agar setiap kali data yang ditulis ke cache, tertulis melalui memori juga. Seperti cache, disebut writethrough cache. Dalam desain ini, cache hits untuk membaca bus tidak menyebabkan macetnya trafik data, tapi cache yang tidak dapat membaca dan menulis yang menyebabkan macetnya trafik data pada bus.
Selain itu, semua cache selalu memantau bus. Cache setiap kali melihat  alamat memori yang ada dalam cache, hal ini untuk menghapus yang entri dari cache, atau entri cache update dengan nilai baru. Seperti cache disebut snoopy cache (atau kadang-kadang, sebuah mengintai cache) karena selalu "mengintip" (menguping) di bus. Sebuah desain yang terdiri dari snoopy write-through cache adalah koheren dan ini tidak terlihat oleh programmer. Hampir semua bis Multiprocessors berbasis gunakan arsitektur atau satu ini berkaitan erat dengan hal itu,  untuk menempatkan sekitar 32 atau mungkin 64 CPU pada satu bus. Untuk lebih lanjut tentang Multiprocessors berbasis bus, lihat Lilja (1993).


No comments:

Post a Comment

Note: Only a member of this blog may post a comment.