Back to IF3130 Sistem Paralel dan Terdistribusi

Topic

Questions/Cues

  • Apa peran jaringan interkoneksi?

  • Apa jenis interkoneksi untuk shared memory?

  • Apa itu bus vs switched interconnect?

  • Apa jenis interkoneksi untuk distributed memory?

  • Apa metrik performa jaringan?

  • Apa masalah Cache Coherence?

  • Bagaimana contoh inkonsistensi data?

  • Apa solusi untuk Cache Coherence?

  • Apa itu Snooping?

  • Apa itu Directory-Based Coherence?

Reference Points

  • Slides IF3230-02-ParallelHardware-Software-2022.pdf

Jaringan Interkoneksi (Interconnection Networks)

Jaringan interkoneksi adalah “sistem peredaran darah” dari sebuah komputer paralel. Kinerjanya sangat memengaruhi performa sistem secara keseluruhan, baik pada sistem shared memory maupun distributed memory. Jaringan ini dapat dikategorikan berdasarkan arsitektur memori yang didukungnya.

1. Interkoneksi untuk Memori Bersama (Shared Memory)

Menghubungkan cores ke satu pool memori utama yang dapat diakses bersama.

  • Bus Interconnect:
    • Konsep: Sekumpulan kabel komunikasi paralel yang dipakai bersama oleh semua perangkat (cores, memori) yang terhubung.
    • Kelemahan: Kinerja menurun drastis seiring bertambahnya jumlah perangkat karena terjadi kontensi (perebutan) untuk menggunakan bus. Hanya satu komunikasi yang bisa terjadi pada satu waktu.
  • Switched Interconnect:
    • Konsep: Menggunakan switch untuk mengatur rute data antar perangkat, memungkinkan beberapa komunikasi terjadi secara simultan.
    • Contoh (Crossbar): Sebuah switch crossbar menghubungkan setiap core ke setiap modul memori dengan jalur langsung. Ini sangat cepat dan menghindari kontensi, tetapi biaya implementasinya sangat mahal karena jumlah koneksi yang dibutuhkan sangat banyak.

2. Interkoneksi untuk Memori Terdistribusi (Distributed Memory)

Menghubungkan node-node komputasi (yang masing-masing memiliki prosesor dan memori privat).

  • Direct Interconnect: Setiap switch terhubung langsung ke satu pasang prosesor-memori, dan switch-switch ini saling terhubung satu sama lain membentuk topologi tertentu (misalnya, ring, mesh, atau torus).

  • Indirect Interconnect: Switch tidak harus terhubung langsung ke prosesor; mereka bisa membentuk jaringan switching tersendiri yang lebih kompleks.

Metrik Performa Jaringan

  • Latency: Waktu yang dibutuhkan dari saat sumber mulai mengirim data hingga bit pertama data tersebut tiba di tujuan.

  • Bandwidth: Laju transfer data (misalnya dalam MB/s atau GB/s) setelah koneksi terjalin.

  • Bisection Width: Ukuran “konektivitas” jaringan. Dihitung dengan membelah jaringan menjadi dua bagian yang sama besar dan menghitung jumlah link (atau total bandwidth dari link tersebut, yang disebut bisection bandwidth) yang terpotong. Semakin besar nilainya, semakin baik kemampuan jaringan untuk menangani komunikasi simultan.

Koherensi Cache (Cache Coherence)

Ini adalah masalah fundamental dan kritis yang hanya terjadi pada sistem shared-memory.

  • Masalah: Setiap core memiliki cache privat berkecepatan tinggi. Ketika beberapa core menyimpan salinan dari data yang sama dari memori utama di cache mereka, masalah muncul saat salah satu core mengubah data tersebut. Salinan di cache core lain menjadi usang (stale), menyebabkan inkonsistensi data.

  • Contoh Ilustratif:

    • Variabel x di memori utama bernilai 2.
    • Waktu 0:
      • Core 0 membaca x (nilai 2) dan menyimpannya di cache-nya.
      • Core 1 membaca x (nilai 2) dan menyimpannya di cache-nya.
    • Waktu 1:
      • Core 0 mengubah nilai x menjadi 7 di cache-nya. Sekarang, cache Core 0 punya x=7, tapi cache Core 1 dan memori utama masih punya x=2.
    • Waktu 2:
      • Core 1 melakukan operasi z = 4 * x. Karena Core 1 menggunakan nilai x dari cache-nya yang sudah usang, ia akan menghitung z = 4 * 2 = 8, padahal seharusnya z = 4 * 7 = 28. Hasilnya salah.

Solusi untuk Koherensi Cache

Diperlukan sebuah protokol untuk memastikan semua core melihat data yang konsisten.

  1. Snooping Cache Coherence:

    • Cara Kerja: Digunakan pada sistem yang terhubung melalui bus bersama. Setiap cache controller “menguping” (snoops) semua transaksi di bus. Ketika Core 0 memperbarui x, ia akan menyiarkan perubahan ini ke bus. Cache controller Core 1 yang mendengar siaran ini akan segera menandai salinan x di cache-nya sebagai tidak valid (invalid). Saat Core 1 butuh x lagi, ia akan mengambil versi terbaru dari memori (atau dari cache Core 0).
  2. Directory-Based Cache Coherence:

    • Cara Kerja: Tidak memerlukan bus bersama, lebih cocok untuk sistem NUMA yang besar. Sistem memelihara sebuah struktur data terpusat yang disebut direktori. Direktori ini melacak status setiap baris cache (misalnya, di-cache oleh core mana saja). Ketika sebuah variabel diubah, sistem akan memeriksa direktori dan mengirim pesan invalidasi hanya ke core yang relevan.

Summary

Jaringan interkoneksi berfungsi sebagai fondasi komunikasi dalam sistem paralel, dengan desain yang berbeda untuk arsitektur shared-memory (bus atau switched) dan distributed-memory (direct atau indirect), yang kinerjanya diukur dengan latency dan bandwidth. Pada sistem shared-memory, penggunaan cache privat oleh setiap core menimbulkan masalah kritis yaitu Cache Coherence, di mana data bisa menjadi tidak konsisten. Masalah ini diselesaikan melalui protokol seperti Snooping (untuk sistem berbasis bus) atau Directory-Based (untuk sistem yang lebih besar) untuk memastikan integritas data di seluruh sistem.