Disusun Oleh:
Hendi Maryanto 135150207111102
Freddy Ajax Pratama 135150200111100
Yosef Febri Wiryawan 135150200111099
Tony Faqih Prayogi 135150201111091
Parallel Processing
Pemrosesan paralel (parallel processing) adalah penggunaaan lebih dari satu CPU untuk
menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program
berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek,
seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa
berkaitan di antaranya.
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan
dengan memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan saat kapasitas
yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun
karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel
ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan
dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu
diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang
berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya
pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
Misal : diberikan 5 buah data acak yang nantinya akan diurutkan secara Ascending
dengan menggunakan CRCW-Sort dengan menggunakan perhitungan [n/2]. n = jumlah data
[n/2] = [5/2] = [2,5] = 3, jadi kita memerlukan 3 kali putaran untuk mengurutkan data tersebut.
Dan masing-masing data diproses oleh 1 processor. Berikut gambar dari pemrosesan diatas.
Dari gambar diatas bisa dilihat dari data yang tidak terurut {6,5,9,2,4} menjadi terurut dengan
menggunakan 3 kali putaran searching secara ganjil dan genap dengan menggunakan 5 buah
processor. Yang menghasilkan data yang terurut menjadi {2,4,5,6,9}
Jadi dari kedua pengertian diatas dapat diambil sebuah kesimpulan bahwa kinerja
komputasi dengan paralel proccesing memungkinkan beberapa pekerjaan dilakukan secara
bersamaan dan dalam waktu yang bersamaan dan semakin banyak pekerjaan yang dapat
diselesaikan tepat waktu.
Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi
perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun
banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel
adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara
bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
Komputasi paralel membutuhkan algoritma, bahasa pemrograman dan compiler
Pengolahan Paralel :
simultan.
dimaksudkan untuk mempercepat komputasi dari sistem komputer dan menambah
jumlah keluaran yang dapat dihasilkan dalam jangka waktu tertentu.
Sebagaian besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih
dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapat
melakukan parallel processing dengan menghubungkannya dengan komputer lain pada jaringan.
Namun, parallel processing ini memerlukan software canggih yang disebut distributed
processing software. Parallel processing berbeda dengan multitasking, yaitu satu CPU
mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.
Yang terdiri dari empat kelompok komputer. Tujuan utama dari pemrosesan paralel adalah untuk
meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan
(dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
A. Paradigma Pengolahan Paralel
1. M. J. FLYNN
Dalam arsitektur komputer, adalah sebuah klasifikasi yang dibuat oleh Michael J.
Flynn pada tahun 1966 dikenal sebagai taksonomi Flynn. Klasifikasi ini dibuat
berdasarkan jumlah instruksi yang berjalan simultan dan konkuren, dan juga aliran data
yang diprosesnya. Dalam Taksonomi Flynn, komputer dibagi menjadi empat buah kelas,
-
yaitu :
Single Instruction Single Data Stream (SISD), satu-satunya yang menggunakan
arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor
saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal.
Pada komputer jenis ini semua instruksi dikerjakan terurut satu demi satu, tetapi juga
dimungkinkan adanya overlapping(tumpang tindih fungsi yang digunakan) dalam
eksekusi setiap bagian instruksi (pipelining). Pada umumnya komputer SISD berupa
komputer yang terdiri atas satu buah pemroses (single processor). Namun komputer
SISD juga mungkin memiliki lebih dari satu unit fungsional (modul memori, unit
pemroses, dan lain-lain), selama seluruh unit fungsional tersebut berada dalam kendali
sebuah unit pengendali. Contoh mesin SISD adalah PC tradisional atau mainframe yang
tua.
Control
Data
Stream
Memory
Multiple Instruction, Single Data Sream (MISD), komputer jenis ini memiliki n unit
pemroses yang masing-masing menerima dan mengoperasikan instruksi yang berbeda
terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit
pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi pemroses
berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk
prototype untuk penelitian dan tidak pernah dirilis secara massal.
Control 1Instruction Stream
Processor 1
Control 2Instruction Stream
Processor 2
.
.
.
.
.
.
Data
Stream
Memory
Processor N
Control NInstruction Stream
Single Instruction, Multiple Data Stream (SIMD), pada komputer SIMD terdapat lebih
dari satu elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama.
Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang
dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang
berbeda yang berasal dari aliran data yang berbeda pula. Contoh dari SIMD adalah
prosesor larik (array processor), atau GPU.
Berdasarkan interkoneksi antar prosesor, komputer SIMD dapat dibedakan menjadi dua,
yaitu :
a) Antar Prosesor tidak ada koneksi atau setiap prosesor hanya berhubungan dengan
prosesor-prosesor yang ada di sebelahnya.
b) Hubungan antara Processor Elements (PEs) melalui jaringan interkoneksi.
SIMD pertama kali dipopulerkan pada superkomputer skala besar, meski sekarang
telah ditemukan pada komputer pribadi. Contoh aplikasi yang dapat mengambil
keuntungan dari SIMD adalah aplikasi yang memiliki nilai yang sama yang ditambahkan
ke banyak titik data (data point), yang umum terjadi dalam aplikasi multimedia. Salah
satu contoh operasinya adalah mengubah brightness dari sebuah gambar. Setiap pixel dari
sebuah gambar 24-bit berisi tiga buah nilai berukuran 8-bit brightness dari porsi warna
merah (red), hijau (green), dan biru (blue). Untuk melakukan perubahan brightness, nilai
R, G, dan B akan dibaca dari memori, dan sebuah nilai baru ditambahkan (atau
dikurangkan) terhadap nilai-nilai R, G, B tersebut dan nilai akhirnya akan dikembalikan
(ditulis kembali) ke memori.
Prosesor yang memiliki SIMD menawarkan dua keunggulan, yakni:
1
Data langsung dapat dipahami dalam bentuk blok data, dibandingkan dengan beberapa
data yang terpisah secara sendiri-sendiri. Dengan menggunakan blok data, prosesor
dapat memuat data secara keseluruhan pada waktu yang sama. Daripada melakukan
beberapa instruksi "ambil pixel ini, lalu ambil pixel itu, dst", sebuah prosesor SIMD
akan melakukannya dalam sebuah instruksi saja, yaitu "ambil semua pixel itu!" (istilah
"semua" adalah nilai yang berbeda dari satu desain ke desain lainnya). Jelas, hal ini
dapat mengurangi banyak waktu pemrosesan (akibat instruksi yang dikeluarkan hanya
satu untuk sekumpulan data), jika dibandingkan dengan desain prosesor tradisional
yang tidak memiliki SIMD (yang memberikan satu instruksi untuk satu data saja).
2
seperti halnya AltiVec dalam prosesor PowerPC; Intel MMX, SSE, SSE2, SSE3, SSE4,
AMD 3DNow! dalam prosesor Intel x86; VIS dalam prosesor prosesor SPARC; MAX
dalam Hewlett-Packard PA-RISC; MDMX serta MIPS-3D dalam MIPS serta MVI dalam
prosesor DEC Alpha. Meskipun demikian, perangkat lunak pada umumnya tidak
mengeksploitasi instruksi, dan bahkan instruksi ini hanya digunakan dalam aplikasi yang
khusus, seperti pengolahan grafik.
Meskipun hal ini secara umum telah membuktikan bahwa sulitnya mencari aplikasi
komersial yang dikhususkan untuk prosesor SIMD, ada beberapa kesuksesan yang terjadi
seperti halnya aplikasi GAPP yang dikembangkan oleh Lockheed Martin. Versi yang
lebih baru dari GAPP bahkan menjadi aplikasi yang dapat memproses video secara
waktu-nyata (real-time) seperti halnya konversi antar bermacam-macam standar video
yang (seperti konversi NTSC ke PAL atau sebaliknya, NTSC ke HDTV atau sebaliknya
dan lain-lain), melakukan deinterlacing, pengurangan noise (noise reduction), kompresi
video, dan perbaikan citra gambar (image enhancement).
-
Multiple Instruction, Multiple Data stream (MIMD), pada sistem komputer MIMD
murni terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran dari dan
ke memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD
bersifat tightly coupled (global memory) jika tingkat interaksi antara pemroses tinggi dan
disebut loosely coupled jika tingkat interaksi antara pemroses rendah. Komputer ini
memiliki beberapa prosesor yang bersifat otonomus yang mampu melakukan instruksi
yang berbeda pada data yang berbeda. Sistem terdistribusi umumnya dikenal sebagai
MIMD, entah itu menggunakan satu ruangan memori secara bersama-sama atau sebuah
ruangan memori yang terdistribusi.
2. T.G. Lewis
T.G. Lewis membedakan komputer paralel ke dalam dua kelas, berdasarkan ada
atau tidak adanya common global clock, sebagai : synchronous dan asynchronous.
a) Synchronous :
Pada komputer paralel yang termasuk dalam kategori ini terdapat koordinasi yang
mengatur beberapa operasi untuk dapat berjalan bersamaan sedemikian hingga tidak ada
systolic parallelism.
Systolic parallel computer adalah multiprocessor dimana data didistribusikan dan dipompa
dari memory ke suatu array prosesor sebelum kembali ke memory.
b) Asynchronous :
Pada komputer paralel yang termasuk dalam kategori asynchronous, masing-masing
prosesor dapat diberi tugas atau menjalankan operasi berbeda dan masing-masing
3. MICHAEL J. QUINN
Quinn membedakan paralelisma ke dalam dua jenis : Data Parallelism dan
Control Parallelism.
a. Data Parallelism :
penerapan operasi yang sama secara simultan terhadap elemen-elemen dari
kumpulan data.
b. Control Parallelism :
penerapan operasi-operasi berbeda terhadap elemen-elemen data yang berbeda
secara bersamaan. Pada control parallelism dapat terjadi aliran data antar
proses-proses dan kemungkinan terjadi aliran data yang kompleks/rumit.
Pipeline merupakan satu kasus khusus dari control parallelism dimana aliran
data membentuk jalur yang sederhana.
Contoh :
Perhatikan ke-empat taman yang harus dirawat berikut ini :
Pekerjaan
B. Multiprocessing
Multiprocessing adalah suatu kemampuan suatu sistem operasi yang menjalankan dua
atau lebih instruksi secara serentak dengan menggunakan sejumlah CPU dalam sebuah
komputer. Dengan sistem seperti ini sebuah sistem operasi dapat mengatur agar sejumlah
CPU menjalankan instruksi-instruksi yang berbeda yang terletak dalam sebuah program
dalam waktu yang sama. Kemampuang eksekusi terhadap beberapa proses perangkat lunak
dalam sebuah sistem secara serentak, jika dibandingkan dengan sebuah proses dalam satu
waktu, meski istilah multiprogramming lebih sesuai untuk konsep ini.
Multiprocessing
sering
diimplementasikan
dalam
perangkat
keras
(dengan
sering digunakan
adalah
model
symmetric
multiprocessing, dimana setiap prosessor menjalankan sistem operasi yang identik dan
komunikasi antar prosesor jika diperlukan. Beberapa sistem menggunakan asymmetric
multiprocessing, dimana setiap prosessor mempunyai tugas tetentu. Prosessor master
mengontrol sistem, prosessor lain menunggu instruksi master atau mempunyai tugas yang
ditentukan oleh master. Skema ini merupakan hubungan master-slave. Prosessor master
menjadwal dan mengalokasikan pekerjaan dari prosessor slave.
Contoh symmetric multiprocessing adalah sistem UNIX versi Encores untuk
komputer Multimax Komputer dapat dikonfigurasikan untuk menangani satu lusin
prosessor, semua menjalankan UNIX. Keuntungan dari model ini adalah bahwa beberapa
proses dapat berjalan pada satu waktu (N proses jika terdapat N CPU) tanpa menyebabkan
pengurangan performansi. Sehingga kita dapat mengontrol I/O secara hati-hati untuk
menjamin data mendapatkan prosessor yang tepat.
Keunggulan Multiprocessor
1) Peningkatan throughput, karena lebih banyak proses / thread yang berjalan dalam satu
waktu sekaligus (jika proses yang antri di ready queue sedikit). Perlu diingat hal ini tidak
berarti daya komputasinya menjadi meningkat sejumlah prosesornya. Yang meningkat
ialah jumlah pekerjaan yang bisa dilakukannya dalam waktu tertentu.
2) Economy of scale (ekonomis), ekonomis dalam devices yang dibagi bersama sama.
Prosesorprosesor terdapat dalam satu komputer dan dapat membagi peripheral
(ekonomis) seperti disk dan catu daya listrik.
Loosely coupled
Mendistribusikan komputasi diantara beberapa prosessor. Prosessor berkomunikasi
dengan prosessor lain melalui saluran komunikasi, misalnya bus kecepatan tinggi atau
saluran telepon. Sistem ini disebut loosely coupled system atau sistem terdistribusi
(distributed system) dengan menggunakan memory local atau multi komputer.
Setiap site memiliki processor, memori lokal dan clock sendiri namun semua resource
dapat diakses dari setiap site.
Proses yang dijalankan pada komputer yang berbeda modul saling berkomunikasi
dengan bertukar pesan melalui Message Transfer System (MTS).
Thightly coupled
Tight coupling di antara window adalah konsep antarmuka yang mendukung
koordinasi secara global atau multi processor.
Prosesor berkomunikasi antara satu dengan yang lain dengan cara berbagi memori
utama, sehingga kecepatan komunikasi dari satu prosesor ke yang lain tergantung
pada bandwidth memori.
Sebuah memori lokal kecil atau buffer (cache) kemungkinan terdapat pada setiap
prosesor untuk memperbaiki kinerja.
Scheduling
adalah
asymmetric
tidak punya kemampuan I/O dan disebut sebagai Attached Processor (Aps). APs
mengeksekusi kodekode user dibawah pengawasan master processor.
Gambar Ma
ster slave
MultiProcessor
D. SMP (Symmetric Multiprocessing)
Pada Komputer stand alone dengan karakteristik berikut (William Stallings):
Dua atau lebih processor yang sama dengan kapasitas yang sebanding
Seluruh processor membagi akses I/O baik pada chanel yang sama maupun berbeda
dengan memberikan path ke device yang sama
Sistem dikontrol oleh OS yang terintegrasi menyediakan interaksi antara processor atau
interaksi terjadi pada job, task, file, data pada level-level elemen.
Dapat berkomunikasi
untuk Multiprocessor Scheduling. Pada metode ini setiap prosesor menjadwalkan dirinya
sendiri (self scheduling). Penjadwalan terlaksana dengan menjadwalkan setiap prosesor
untuk memeriksa antrian ready dan memilih suatu proses untuk dieksekusi. Jika suatu sistem
Multiprocessor Scheduling mencoba untuk mengakses dan mengupdate suatu struktur data,
penjadwal dari prosesor-prosesor tersebut harus diprogram dengan hati-hati, kita harus yakin
bahwa dua prosesor tidak memilih proses yang sama dan proses tersebut tidak hilang dari
antrian. Secara virtual, semua sistem operasi modern mendukung SMP, termasuk Windows
XP, Windows 2000, Windows Vista, Solaris, Linux, Mac OS X, OS/2 Warp Server 4.0 ,
OS/2 for SMP 2.11, Windows NT 4.0 , Novell NetWare 4.1 SMP, Novell UnixWare SMP
2.0 , SCO Open Server 5.0 with SCO MPX 3.0 , Banyan Vines , Symbian OS (Mobile
Device)
Gambar Multiprogr
etric
Multiprocessing
Time shared bus adalah mekanisme simpel untuk membangun sistem multi-processor,
struktur dan inteface sama pada single processor yaitu penggunaan bus interconnection
Fitur:
Time Sharing = Jika satu mudule berada di bus, yang lain harus menunggu dan
bisa juga di tunda operasinya.
Simplicity = Fisik interface, addressing, arbitration, dan time sharing logic tiap
processor sama seperti sistem single processor
Multiport Memory
Pengijinan akses
langsung, dan
independen pada modul
memory oleh setiap
processor
Sedikit modifikasi (bahkan tidak ada) ke processor atau modul yang dibutuhkan
Pembagian data stream antara independent modul seperti; processor, memory, I/O.
Processor unit (PU) terdiri dari : CISC microprocessor, Frequently used instructions
hard wired, 64k L1 unified cache with 1 cycle access time
L2 cache : 384k
Directory Protocol :
Efektif
pada
sistem
skala
besar
dengan
Jika suatu pekerjaan bisa diorganisasikan, maka porsi yang sama pada sebuah pekerjaan bisa
dilakukan secara paralel, sehingga sistem dengan multiple processor akan menunjukan
performa yang tingggi dibandingkan single processor (William Stallings)
Sistem Multiprocessing sering lebih mudah untuk merancang jika larangan tersebut
diberlakukan, tetapi mereka cenderung kurang efisien dibandingkan dengan sistem di mana
semua CPU yang digunakan.
Sistem yang memperlakukan semua CPU sama disebut multiprocessing simetris (SMP)
sistem. Dalam sistem dimana semua CPU yang tidak sama, sumber daya sistem dapat dibagi
dalam beberapa cara, termasuk asymmetric multiprocessing (ASMP), non-seragam akses
memori (NUMA) multiprocessing, dan berkelompok multiprocessing.
processor
1
cache
processor
2
...
cache
processor
N
cache
interconnection network
memory
1
memory
2
...
memory
M
Shared memory yang secara phisik didistribusikan kesemua process disebut lokal memori,
dan kumpulan dari lokal memori membentuk ruang alamat global yang dapat diakses
MOTIVATION
Dengan sistem SMP, ada batas praktis untuk jumlah prosesor yang
dapat digunakan. Skema cache yang efektif mengurangi lalu lintas bus antara salah satu
prosesor dan memori utama. Karena jumlah prosesor meningkat, lalu lintas bus ini
juga meningkat. Selain itu, bus yang digunakan untuk bertukar sinyal cache koherensi, lanjut
menambah beban.
Pada titik tertentu kinerja tampaknya membatasi jumlah prosesor dalam sebuah SMP
konfigurasi untuk suatu tempat antara 16 dan 64 prosesor. Misalnya, Silicon
Graphics 'Power Challenge SMP terbatas pada 64 prosesor R10000 dalam satu sistem
melampaui kinerja nomor ini menurunkan secara substansial .
menawarkan layanan penuh, maka dapat dikatakan bahwa komponen kluster tersebut
merupakan sebuah kluster aktif/kluster HA aktif, yang bisa menerima semua
permintaan yang diajukan oleh klien.
Kluster hanya untuk komputasi (Compute clusters)
Penggunaan utama kluster komputer adalah untuk tujuan komputasi, ketimbang
penanganan operasi yang berorientasi I/O seperti layanan Web atau basis data.
Sebagai contoh, sebuah kluster mungkin mendukung simulasi komputasional untuk
perubahan cuaca atau tabrakan kendaraan. Perbedaan utama untuk kategori ini
dengan kategori lainnya adalah seberapa eratkah penggabungan antar node-nya.
Sebagai contoh, sebuah tugas komputasi mungkin membutuhkan komunikasi yang
sering antar node--ini berarti bahwa kluster tersebut menggunakan sebuah jaringan
terdedikasi yang sama, yang terletak di lokasi yang sangat berdekatan, dan mungkin
juga merupakan node-node yang bersifat homogen. Desain kluster seperti ini,
umumnya disebut juga sebagai Beowulf Cluster. Ada juga desain yang lain, yakni saat
sebuah tugas komputasi hanya menggunakan satu atau beberapa node saja, dan
membutuhkan komunikasi antar-node yang sangat sedikit atau tidak ada sama sekali.
Desain kluster ini, sering disebut sebagai "Grid". Beberapa compute cluster yang
dihubungkan secara erat yang didesain sedemikian rupa, umumnya disebut dengan
"Supercomputing". Beberapa perangkat lunak Middleware seperti MPI atau Parallel
Virtual Machine (PVM) mengizinkan program compute clustering agar dapat
dijalankan di dalam kluster-kluster tersebut.
Dalam sistem multiprosesor sementara, membutuhkan satu atau dua tingkat cache yang
terhubung pada setiap prosessor.Susunan ini sangat penting ungutk mendapatkan performa yang
maksimal.Tetapi susunan ini memiliki masalah, yaitu cache coherence problem.Susunan ini
mengakitbatkan terjadinya data yang sama pada cache yang berbeda secara bersamaan, jika
prosessor mengijinkan cache untuk meng-copy data secara bebas, maka akan terjadi hasil yang
tak beraturan. Pada Bab 4 dijelaskan aturan write:
Write back: operasi Write biasanya dibuat hanya pada cache, memory utama
hanya dapat memperbarui jika cache line dihapus dari cache
Write trough: semua operasi write dibuat pada memory utama atau pada cache,
memastikan bahwa memory utama selalu bekerja
Untuk semua protocol cache coherence, tujuannya adalah agar variabel local yang
sehabis dipakai mendapatkan cache yang cocok dan tetap disana menggunakan reads dan writes.
Sembari menggunakan protocol untuk menjaga keteraturandari variabel yang terbagi yang
mungkin terjadi pada beberapa cache pada saat bersamaan.Cache coherence umumnya dibagi
menjadi software dan hardware.Beberapa implementasinya menggunakan software dan hardware
sekaligus.Namun, klasifikasi software dan hardware masih instruktif dan umumnya digunakan
dalam mensurvey cache coherence.
Software Solution
Pola cache coherence software mengusahakan untuk menghindari kebutuhan tambahan
hardware dengan mengandalkan compiler dan sistem operasi untuk mengatasi masalah tersebut.
Software ini unik karena overhead deteksi potential problem deipindah dati run time ke compile
time, dan desainnya kompleksitasnya dipindah dari hardware ke software. Software Compiletime
umumnnya membuat pilihan konserfatif, untuk pemanfaatan yang tidak efisien.
Mekanisme Compiler-based coherence dapat menganalisa kode dan membedakan data
mana yang tidak baik untuk cache, dan meemberi tanda untuk yang lainnya. Sistem operasi atau
hardware akan menghindari data yang noncacheable untuk di-cache-kan
Pendekatan yang paling sederhana adalah untuk mencegah variabel data yang terbagi dari
di-cache-kan. Ini terlalu sederhana, karena struktur variabel data yang terbagi mungkin secara
khusus digunakan dalam beberapa periode dan mungkin secara efektif read-only di periode lain.
Ini terjadi dalam beberapa waktu saat setidaknya satu proses memperbarui variabel dan
setidaknya proses lain mengakses variabel cache coherence tersebut.
Pendekatan yang lebih efisien adalah menganalisa kode untuk membedakan periode
amaan untuk variabel yang terbagi.Compiler kemudian memasukkan instruksi ke kode untuk
melaksanakan cache coherence saat periode kritis.Teknik angka telah dikembangkan untuk
melaksanakan analisis dan mengeluarkan hasilnya.
Hardware Solution
solusiHardware-based umumnya ditujukan untuk protocol cache coherence. Solusi ini
menyediakan pengenalan dinamis saat run time kondisi potensi ketidakteraruran. Karena
masalah ini hanya terjadi saat benar-benar muncul, ini lebih efektif menggunakan cache,
meningkatkan performa software.Untuk tambahan, pendekatan ini transparan terhadap
programmer dan compiler, mengurangi beban pengembangan software.
Pola hardware berlainan dalam pengkhususannya.Termasuk dimana informasi tentang
data disimpan, bagaimana informasi tersebut disusun, dimana coherence berjalan, dan
pelaksanaan mekanismenya. Secara umum, pola hardware dibagi menjadi dua kategori: directory
protocol dan snoopy protocol.
Directory protocol
Dengan protocol write-update, dapat terjadi writer ganda sekaligus reader ganda.Saat
prosesor ingin memperbarui line yang terbagi, pembaruan tersebut dibagi ke semuanya, dan
cache yang menyimpan line tersebut dapat memperbarui.
Kedua pendekatan ini tidak superior dalam segala keadaan. Performanya tergantung dari
banyaknya cache local dan pola dari memory read dan write. Beberapa sistem menerapkan
protocol adaptif yang bekerja pada kedua mekanisme write-invalidate dan write-update.
Pada pendekatan write-invalidate umumnya digunakan pada multiprosesor sistem umum,
seperti Pentium4 dan PowerPC. Ini menandakan keadaan setiap line cache (dua bit tambahan
pada cache tag) telah dirubah, khusus, terbagi, atau tidak sah. Untuk alas an ini, protocol writeinvalidate dinamakan MESI.
Modified:line pada cache telah dirubah (berbeda dari memory utama) dan tersedia hanya
pada cache ini.
Exclusive: line pada cachesama seperti pada memory utama dan tidak tersedia pada
cache lain.
Shared: line pada cachesama seperti pada memory utama dan bisa tersedia pada cache
lain.
Invalid: line pada cache tidak berisi data yang sah
Gambar 17.1
Gambar 17.6
Berdasarkan dari empat keadaan (gambar 1.1). Menyatakan diagram keadaan protocol
MESI. Setiap line pada cache memiliki keadaan bit sendiri dan pelaksanaan sendiri. Pada
gambar 1.2a menunjukkan transisi yang terjadi karena aksi dimulai oleh prosesor yang terikat
pada cache tersebut. Gambar 1.2b menunjukkan transisi yang terjadi karena kejadian snoop pada
bus. Gambar ini adalah diagram keadaan terpisah untukaksi processor-initiated dan bus-initiated
untuk memperjelas logika protocol MESI.
Kapanpun itu Cache memiliki satu keadaan.Jika kejadian selanjutnya dari prosesor yang
terikat, maka transisi diperintah seperti gambar 1.2b.
Read Miss. Saat read miss terjadi pada local cache, prosesor menginisiasi read memory untuk
membaca line pada memory utama yang berisi alamat yang hilang. Prosesor memasukkan sinyal
ke bus yang akan memberi tanda kepada semua prosesor/cache untuk melakukan snoop pada
transaksi tersebbut. Akan ada beberapakemungkinan keluaran:
Jika salah satu cache memiliki salinan orisinal (yang tak dirubah sejak pembaaan dari
memori) dari line pada keadaan khusus, akan mengembalikkan sinyal yang menandakan
untuk membagikan line. Prosesor yang merespon kemudian mentransisikan keadaan
salinan dari yang khusus untuk dibagikan, dan prosesor yang berjalan membaca line dari
memory utama dan mentransisikan line dalam cache dari yang tidak sah untuk dibagikan.
Jika satu atau lebih cache memiliki salinan line orisinil pada keadaan terbagi, setiap
sinyal berbagi line. Prosesor yang berjalan membaca line dan mentransisikan line dalam
cache dari yang tidak sah untuk dibagikan.
Jika salah satu cache merubah salinan line, maka cache mem-blok read memory dan
menyediakan line untuk cache yang meminta lewat bus yang terbagi. Cache yang
merespon kemudian merubah line dari modified menjadi shared. Line dikirim menuju
yang cache meminta dan juga diterima dan diproses oleh kontrol memory, yang mana
menyimpan yang ter-blok di memory
Jika tidak ada cache lain memiliki salinan line (orisinil atau telah dirubah), kemudian
taka da sinyal kembalian. Prosesor yang berjalan membaca line dan mentransisikan line
dalam cache dari yang tidak sah ke khusus.
Read Heat. Jika read hit terjadi pada line yang sekarang berada pada lokal cache, prosesor
membaca barang yang diminta. Disini tidak ada keadaan yang diubah: keadaan tetap modified,
shared, atau exclusive.
Write Miss. Saat write miss terjadi di lokal cache, prosesor yang menginisiasi read memory
untuk membaca line dari memory utama yang berisi alamat yang hilang. Untuk tujuan ini,
prosesor mengeluarkan sinyal pada bus yang berarti read-with-intent-to-modify (RWITM). Saat
line terisi, langsung bertanda modified. Dua kemungkinan scenario mendahului pemuatan data
pada line.
Pertama, beberapa cache yang lain mungkin memiliki salinan yang telah dirubah di line
ini (state=modify). Bila seperti ini, prosesor yang diberi peringatan memberi sinyal kepada
prosesor yang sedang berjalan bahwa prosesor lain telah merubah saline line. Prosesor yang
sedang berjalan menyerahkan pada bus dan menunggu. Prosesor yang lain menambah akses bus,
menulis cache yang telah dirubah kembali ke memory utam, dan mentransisikan keadaan line
cache menjadi tidak sah (karena proses yang menginisisasi sedang merubah line tersebut).
Kemudian, prosesor yang sedang berjalan akan kembali mengeluarkan sinyal ke RWITM bus
dan kemudian membaca line dari memory utama, merubah line pada cache, dan menandakan
line dalam keadaan modified.
Scenario kedua yaiut tidak ada cache lain yang merubah salinan line yang diminta. Dalam
keadaan ini tidak ada sinyal yang dikembalikan, dan prosesor yang berjalan menjalankan proses
membaca line dan merubahnya. Sementara jika satu cache atau lebih memiliki salinan line
orisinil dalam keadaan terbagi, setiap cache mentidaksahkan salinan line-nya, dan jika salahsatu
cache memiliki salinan line orisinil dalam keadaan khusus, itu mentidaksahkan salinan line-nya.
Write Hit. Saat write hit terjadi pada line berada di cache lokal, efeknya tergantung keadaan line
yang sekarang di lokal cache:
yang berjalan kemudian melakukan pembaruan dan mentransisikan salinan line dari
shared menjadi modified.
Exclusive: prosesor yang sudah memmilikiline kontrol khusus, akan dapat melakukan
pembaruan dan mentransisikan salinan line dari exclusive menjadi medified.
Modified: prosesor yang sudah memiliki line kontrol khusus dan memiliki line yang
bertanda modified, dapat langsung melakukan pembaruan
L1-L2 cache consistency.Cache L2 adalah cache, dan setiap prosesor juga memiliki cache
L1yang tidak terhubung langsung ke bus dan oleh karena itu tidak dapat menggunakan protocol
snoop. Jadi beberapa poola dibutuhkan untuk menjaga integritas data dan melintasi semua cache
di konfigurasi SMP
Tujuannya adalah untuk memperpanjang protocol MESI (atau cache coherence protocol)
ke cache L1. Jadi setiap line di cache L1 termasuk bit dan menunjukkan keadaannya. Dasarnya,
memiliki tujuan seperti: untuk semua line yang ada pada kedua cache L2 dan yang cocok dengan
cache L1, L1 keadaan line harus mengikuti keadaan line L2. Maksud dari ini adalah untuk
meniru aturan write-trough pada cache L1; dalam keadaan ini write-trough ke cache L2 dan
tidak ke memory. Aturan Write-trough L1 merubah paksa line L1 keluar ke cache L2 dan karena
itu dapat dilihat oleh cache L2. Kegunaan aturan write-trough L1 mengharuskan isi L1 harus
menjadi bagian dari isi L2.Ini menyatakan bahwa hubungancache L2 harus sama atau lebih
daripada hubungan L1. Aturan write-trough L1 digunakan IBM S/390 SMP
Jika cache L1 memiliki aturan write-back, hubungan antara sua cache L1akan lebih
kompleks. Ada beberapa pendekatan untuk menjaga koherensi.Sontoh, pendekatan yang
digunakan Pentium II.
Yang paling penting dalam mengukur performa prosesor adalah menilai dari eksekusi
instruksi. Dapat dilambangkan sebagi
MIPS rate = f x IPC
Dimana fadalah frekuensi klok prosesor, dalam MHz, dan IPC (Instruction per cycle)
adalah angka rata-rata instruksi dieksekusi per putaran. Karena itu para perancang mengejar
tujuan menambah performa dalam dua cara: menambah frekuensi klok dan menambah jumlah
ekskusi instruksi atau jumlah instruksi selesai saat putaran prosesor. Para perancang sudah
menambah IPC menggunakan pipeline instruksi dan menggunakanmultiple parallel instruction
pipeline dalam arsitektur skala super. Dengan pipline dan desain multiple-pipeline, prinsipnya
adalah untuk memaksimalkan pemanfaatan dari setiap tahap pipeline.Untuk menambah
throughput, para perancang menciptakan mekanisme yang lebih kompleks, seperti mengeksekusi
instruksi dalam urutan yang berbeda dari jalan yang terjadi pada alur instruksi dan memulai
eksekusi instruksi yang mungkin tidak diperlukan.Pendekatan ini dapat mencapai batas karena
kompleksitas dan konsumsi daya.
Alternative lain, dimana memperbolehkan instruction-level parallelism tingkat atas tanpa
menambah kompleksitas sirkuit dan konsumsi daya, ini dinamakan multithreading.Pada
dasarnya, alur instruksi dibagi menjadi beberapa alur kecil bernama thread, seperti thread yang
bisa dieksekusi pada parallel.
Ada macam-macam pendekatan, yang memperbolehkan desain multithreading, melihat
sistem komersil dan sistem eksperimental yang luas.
Jadi, thread menyangkut secheduling dan execution, dimana proses menyangkut kedua
scheduling/executin dan kepemilikan sumber. Multiple thread diantara proses membagi sumber
yang sama. ini kenapa thread switch menghabiskan waktu lebih sedikit daripada process switch.
Operasi sistem lama, seperti versi awal UNIX tidak menunjang thread.Kebanyakan operasi
sistem modern seperti Linux, versi baru UNIX, dan Windows dapat menunjang threads.
Perbedaan terjadi antara user-level thread, dimana hanya terbuka untuk sistem operasi. Keduanya
bisa direferensikan sebagai thread explicit.
Semua prosesor komersial dan kebanyakan prosesor eksperimental sejauh ini telah
menggunakan multithreading explicit. Sistem ini secara bersamaan mengeksekusi instruksi dari
explicit thread yang berbeda, dari instruksi interleaving dari threads yang berbeda pada pipeline
yang terbagi atau eksekusi parallel pada pipeline parallel. Multithreading implicit mengacu pada
eksekusi multiple thread secara bersamaan dari program sekuensial. Thread implicit bisa
dijelaskan secara statis oleh compiler atau secara dinamis oleh hardware.
Pada dua pendekatan pertama, instruksi dari thread yang berbeda tidak di eksekusi
bersamaan. Prosesor dapat dengan cepat men-switch dari satu thread ke thread lainnya,
menggunakan set register yang berbeda dan konten informasi lainnya. Hasilnya akan lebih baik
dalam penggunaan eksekusi sumber prosesor dan menghindari kesalahan kaena miss cache dan
interval. SMT melibatkan eksekusi instruksi bersamaan dari thread yang berbeda, menggunakan
sumber eksekusi yang tereplika. Multiprocessing chip juga dapat mengeksekusi instruksi
bersamaan dari trhead yang berbeda
Gambar 1.3
Gambar diatas menyatakan beberapa arsitektur pipeline melibatkan multithreading dan
kontras dengan yang tidak melibatkan multithreading. Setiap kolom horizontal melambangkan
potensi mengeluarkan slot untuk eksekusi tunggal yang artinya lebar setiap kolom cocok untuk
jumlah maksimum instruksi yang bisa dikeluarkan dalam sekali putaran clock. Yang vertical
mewakili sekuen waktu pada putaran clock. Slot kosong(gelap) mewakili slot eksekusi yang
tidak terpakai di satu pipeline. No-op ditandai dengan N.
Tiga gambar pertama menunjukkan pendekatan prosesor sekalar yang berbeda:
Single-threaded scalar: ini adalah pipeline sederhana pada RISC sederhana dan
mesin CISC, tanpa multithreading
Interleaved Multithreaded Scalar: ini adalah implementasi multithreading
termudah, dengan menswitch dari satu thread ke thread yang lain saat setiap
putaran clock. Tahap pipeline dapat dijaga tetap sibuk, atau keluarkan sampai
sibuk. Hardware harus dapat menswitch dari satu konteks thread ke yang lain
diantara putaran.
Blocked multithreaded scalar: disini, thread tunggal di eksekusi sampai yang di
blok terjadi hingga pipeline berhenti, saat prosesor menswitch ke thread lain.
Gambar 17.7c menunjukkan waktu melakukan switch thread di satu putaran. Gambar
17.7b menunjukan switching thread terjadi pada putaran kosong. Jika terjadi interleaved
multithreading, ini dianggap kalau disini tidak ada control atau ketergantungan data antara
thread, dengan menyederhanakan desain pipeline oleh karena itu harus memperbolehkan switch
thread tanpa penundaan. Tetapi, tergantung pada desain khusus dan implementasinya, block
multithreading membutuhkan putaran clock untuk melakukan switch thread, ditunjukkan pada
gambar 17.7.
Walaupun interleaving multithreading menawarkan penggunaan prosesor yang lebih
baik, tapi mengorbankan performa single-thread. Multiple thread bersaing untuk resource cache,
yang menaikkan kemungkinan cache miss untuk given thread.
Lebih banyak peluang untuk eksekusi parallel jika prosesor dapat mengeluarkan
multiple instruction per putaran. Gambar 17.7d sampai 17.7i menunjukkan jumlah macam
prosesor yang mempunyai hardware untuk mengeluarkan empat instruksi per putaran. Untuk
semua kasus ini, hanya instruksi daari single thread yang dikeluarkan pada satu putaran.
Alternative lain dijelaskan dibawah:
Superscalar: ini adalah pendekatan superscalar dasar tanpa multithreading. Ini adalah
pendekatan yang paling kuat untuk membuktikan paralelisme diantara prosesor. Pada
saat putaran, tidak semua slot digunakan. Saat putaran ini, tidak semua instruksi
dikeluarkan; ini lebih mengacu kepada horizontal loss. Saat putaran instruksi, tidak
ada slot keluaran; ini adalah putaran saat tidak ada instruksi yang dikeluarkan;
dinamakan sebagai vertical loss
Interleave multithreading superscalar: selama putaran, banyak instruksi yang bisa
dikeluarkan dari sebuah thread. Dengan teknik ini, potensi penundaan karena menswitch thread hilang. Tetapi jumlah instruksi yang keluar setiap putaran dibatasi
tergantung yang diberikan thread.
Blocked Multithreaded Superscalar: instruksi hanya dari satu thread dan bisa
dikeluarkan saat cycle, dan memblok multithreading yang bekerja.
Very Long Instruction Word (VLIW): VLIW seperti IA-64, menaruh beberapa
instruksi dalam word tunggal. VLIW diciptakan oleh compiler, yang menempatkan
operasi yang bisa dieksekusi parallel di word yang sama. Pada VLIW(gambar 17.7g),
jika tidak memungkinkan untuk memenuhi word dengan instruksi untuk dikeluarkan
parallel, digunakanlah no-op.
Interleaved Multithreading VLIW: pendekatan ini dapat menyediakan efektifitas
yang sama dengan yang disediakan interleaved multithreading pada arsitektur
superscalar.
Blocked Multithreading VLIW: pendekatan ini dapat menyediakan efektifitas yang
sama dengan yang disediakan oleh blocked multithreading pada arsitektur superscalar
Membandingkan gambar 17.7j ddan 17.7k, chip multiprocessor dengan instruksi yang
sama mengeluarkan kemampuan yang SMT tidak dapat lakukan pada tingkat instructiob-level
parallelism. Ini karena chip multiprocessor tidak dapat menyembunyikan yang belum aktif
dengan mengeluarkan instruksi dari thread lain. Sedangkan chip multiprosesor dapat
mengeluarkan hasil lebih dengan kemampuan mengeluarkan instruksi yang sama, karena
horizontal loss akan lebih baik untuk prosesor superscalar. Tambahan lain, bisa juga
menggunakan multithreading diantara setiap prosesor pada chip multiprosesor.
Example System
Pentium 4.Model terbaru Pentium 4 menggunakan teknik multithreading dimana pihak Intel
menyebutnya dengan hyperthreading.Pada dasarnya Pentium 4 menggunakan SMT yang
menunjang dua thread. Jadi multithreaded processor adalah dua buah prosesor.
IBM power5.Chip IBM Power5 digunakan oleh produk PowerPC tingkat atas, menggabungkan
chip multiprocessing dengan SMT. Chip memiliki dua prosesor terpisah, salah satunya adalah
multithreaded processor yang dapat menunjang dua thread bersamaan menggunakan SMT. Para
perancang menciptakan berbagai macam alternative dan menemukan bahwa memiliki dua buah
two-waySMT processor pada sebuah chip memberikan performa luar biasa kepada sebuah fourway SMT processor. Simulasi menunjukkan bahwa multithreading tambahan melebihi dukungan
untuk dua thread mungkin mengurangi performa karena cache thrashing. Sebagaimana data dari
sebuah thread displaces data dibutuhkan oleh thread lain.