ARSITEKTUR DAN ORGANISASI KOMPUTER CHAPTER 17 PARALLEL PROCESSING
Disusun Oleh: Hendi Maryanto 135150207111102 Freddy Ajax Pratama 135150200111100 Yosef Febri Wiryawan 135150200111099 Tony Faqih Prayogi 135150201111091
PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA 2014
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 :
pengolahan informasi yang menekankan pada manipulasi data-data elemen secara
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
-
Instruction Stream Processor
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
Sistem SIMD umumnya hanya mencakup instruksi-instruksi yang dapat diaplikasikan terhadap semua data dalam satu operasi. Dengan kata lain, sistem SIMD dapat bekerja dengan memuat beberapa titik data secara sekaligus, dan melakukan operasi terhadap titik data secara sekaligus. Sayangnya, beberapa desainer SIMD terbentur dengan beberapa pertimbangan desain yang berada di luar kontrol mereka. Salah satu pertimbangan tersebut adalah harus menambahkan banyak register untuk menampung data yang akan diproses. Idealnya, hal ini dapat dilakukan dengan menambahkan unit SIMD ke dalam prosesor agar memiliki registernya sendiri, tetapi beberapa desainer terpaksa menggunakan register yang telah ada, umumnya yang digunakan adalah register floating-point. Register floating-point umumnya memiliki ukuran 64-bit, yang lebih kecil daripada yang dibutuhkan oleh SIMD agar bekerja secara optimal, meskipun hal ini dapat mendatangkan masalah jika kode hendak mencoba untuk menggunakan instruksi floating-point dan SIMD secara bersamaan. Pada pendesainan awal SIMD, terdapat beberapa prosesor yang khusus disiapkan untuk melakukan tugas ini, yang seringnya disebut sebagai Digital Signal Processor (DSP). Perbedaan utama antara SIMD dan DSP adalah DSP merupakan prosesor yang komplit dengan set instruksinya sendiri (yang meskipun lebih sulit digunakan), sementara SIMD hanya bergantung pada register general-purpose untuk menangani detail program, dan instruksi SIMD hanya menangani manipulasi data. Penggunaan instruksi SIMD pertama kali dilakukan dalam superkomputer vektor dan dipopulerkan oleh Cray pada tahun 1970-an. Akhir-akhir ini, SIMD skala kecil (64-bit atau 128-bit) telah menjadi populer dalam CPU yang bersifat general purpose, yang dimulai pada tahun 1994 dengan set instruks MAX yang diaplikasikan pada HewlettPackard PA-RISC. Instruksi SIMD, saat ini dapat ditemukan dalam kebanyakan prosesor,
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
ketergantungan antar operasi. Parallelism yang termasuk dalam kategori ini adalah vector/array parallelism, SIMD dan
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
prosesor melaksanakan operasi tersebut secara sendiri-sendiri tanpa perlu koordinasi. Paradigma yang juga termasuk dalam kategori ini adalah MIMD dan reduksi. Paradigma reduksi adalah paradigma yang berpijak pada konseph graph reduksi. Program dengan model reduksi diekspresikan sebagai graph alur data. Komputasi berlangsung dengan cara mereduksi graph dan program berhenti jika graph akhirnya hanya mempunyai satu simpul.
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
4
dapat dilakukan jika ketiga pekerjaan 1, 2 dan 3 telah selesai.
Pekerjaan 1, 2 dan 3 dapat dilakukan secara bersamaan, sebagai contoh control parallelism. Masing-masing pekerjaan adalah contoh data parallelism. Sementara pekerjaan 4 dikerjakan pada sebuah taman, pekerjaan 1, 2 dan 3 dapat dikerjakan pada satu taman yang lain.
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
menggunakan beberapa CPU sekaligus), sementara multiprogramming sering digunakan dalam perangkat lunak. Sebuah sistem mungkin dapat memiliki dua kemampuan tersebut, salah satu di antaranya, atau tidak sama sekali. Multiprocessing adalah istilah teknologi informasi dalam bahasa Inggris yang merujuk kepada kemampuan pemrosesan komputer yang dilakukan secara serentak dengan menggunakan dua CPU atau lebih dalam sebuah sistem komputer. Istilah ini juga dapat merujuk kepada dukungan sebuah sistem untuk mendukung lebih dari satu prosesor dan mengalokasikan tugas kepada prosesor-prosesor tersebut. Sistem multi prosessor yang
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 Encore’s 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.
3) Peningkatan kehandalan (reliabilitas), Jika satu prossor mengalami suatu gangguan, maka proses yang terjadi masih dapat berjalan dengan baik karena tugas prosesor yang terganggu diambil alih oleh prosesor lain. Hal ini dikenal dengan istilah Graceful Degradation. Sistemnya sendiri dikenal bersifat fault tolerant atau failoft system. Berdasarkan kedekatan antar prosesor jenis multiprocessing dapat dibagi ke dalam :
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.
Multiprocessing dapat dibagi ke dalam beberapa kelas berdasarkan simetrinya yaitu :
Asymmetric Multiprocessing (AMP) Symmetric Multiprocessing (SMP) Non-uniform memory access (NUMA) C. AMP (Asymmetric Multiprocessing) Pendekatan pertama untuk Multiprocessor
Scheduling
adalah
asymmetric
multiprocessingScheduling atau biasa disebut juga sebagai penjadwalan Master Slave MultiProcessor. Dimana pada metode ini satu prosesor bertindak sebagai master dan prosesor lainnya sebagai slave. Master Processor bertugas untuk menjadualkan dan mengalokasikan proses yang akan dijalankan oleh Slave Processors. Master Processor melakukan pekerjaan yang berhubungan dengan System, Slave Processor melayani user requests dalam pengeksekusian program. Pemrosesan yang banyak tidak menyebabkan penurunan performance. Metode ini sederhana karena hanya satu prosesor yang mengakses struktur data sistem dan juga mengurangi data sharing. Sebagai contoh, prosesor master memilih proses yang akan dieksekusi, kemudian mencari prosesor yang available, dan memberikan instruksi start processor. Prosesor slave memulai eksekusi pada lokasi memori yang dituju. Saat slave mengalami sebuah kondisi tertentu, prosesor slave memberi interupsi kepada prosesor master dan berhenti untuk menunggu perintah selanjutnya. Perlu diketahui bahwa prosesor slave yang berbeda dapat ditujukan untuk suatu proses yang sama pada waktu yang berbeda. Master processor dapat mengeksekusi OS dan menangani I/O, sedangkan sisanya processor
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
•
Processor membagi I/O dan memory yang sama
•
Processor terkoneksi oleh bus atau koneksi internal lainya
•
Waktu akses moemory kira-kira sama pada setiap processor
•
Seluruh processor membagi akses I/O baik pada chanel yang sama maupun berbeda dengan memberikan path ke device yang sama
•
Seluruh Processor mengerjakan fungsi yang sama (hence symetric)
•
Sistem dikontrol oleh OS yang terintegrasi menyediakan interaksi antara processor atau interaksi terjadi pada job, task, file, data pada level-level elemen.
•
SMP merupakan Tightly Coupled System
•
Mempunyai lebih dari satu prosesor
•
Dapat berkomunikasi
•
Membagi bus, clock, perangkat memory, dan peripheral.
•
Setiap prosesor menjalankan sistem operasi yang identik dan komunikasi antar prosesor jika diperlukan Penjadwalan SMP adalah pendekatan kedua
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
amming dengan Symm
etric
Multiprocessing
Gambar Organisasi Symmetric Multiprocessor
•
Setiap prosesor memiliki
akses ke memori utama dan perangkat-
perangkat I/O bagi-pakai melalui mekanisme interkoneksi tertentu Dalam Klasifikasi Organisasi Symmetric Multiprocessor Time-shared atau Common Bus : •
Prosesor dapat berkomunikasi dengan prosesor lainnya melalui memori
•
Time shared bus adalah mekanisme simpel untuk membangun sistem multi-processor, struktur dan inteface sama pada single processor yaitu penggunaan bus interconnection
Fitur: •
Pengalamatan (Addressing) = Membedakan module untuk mengalokasikan data dari sumber ke tujuan
•
Artbitrasi (Artbitration) = Mekanisme penyediaan permintaan acak -lebih penting didahulukan- untuk kontrol bus dengan skema prioritas
•
Time Sharing = Jika satu mudule berada di bus, yang lain harus menunggu dan bisa juga di tunda operasinya.
Keuntungannya Time-shared Bus : •
Simplicity = Fisik interface, addressing, arbitration, dan time –sharing logic tiap processor sama seperti sistem single processor
•
Flexibility = mudah ekspansi sistem dengan menyisipkan beberapa processor ke dalam bus
•
Reliability = kesalahan pada penyisipan device tidak mengakibatkan kegagalan pada seluruh sistem
Kerugian Time-shared Bus : •
Performa terbatas pada bus cycle time
•
Setiap processor harus memiliki local chace
•
Mengurangi beberapa akses bus
•
Masalah Pada “chace coherence” (dijelaskan nanti)
Multiport Memory
Pengijinan akses langsung, dan independen pada modul memory oleh setiap processor
Kebutuhan logic untuk pemecahan conflict
Sedikit modifikasi (bahkan tidak ada) ke processor atau modul yang dibutuhkan
Central Control Unit
Pembagian data stream antara independent modul seperti; processor, memory, I/O.
Dapat melakukan buffer pada permintaan
Melakukan arbitrasi dan penjadwalan
Melakukan status dan kontrol
Melakukan cache update alerting
Contoh. IBM S/390
Operating system untuk SMP: •
Simultaneous concurrent processes = Manajemen eksekusi IS code yang sama secara simultan pada OS routine
•
Scheduling = Melakukan Penjadwalan untuk menghindari conflict
•
Synchronization = Sinkronisasi yang efektif pada shared address/ shared I/O
•
Memory management = Pengaturan memory yang akurat pada multiport
•
Reliability and fault tolerance = Pengenalan kesalahan pada processor
Mainframe SMP pada IBM S/390
•
Processor unit (PU) terdiri dari : CISC microprocessor, Frequently used instructions hard wired, 64k L1 unified cache with 1 cycle access time
•
L2 cache : 384k
•
Bus switching network adapter (BSN) : Includes 2M of L3 cache, Memory card, 8G per card
Directory Protocol : •
Mengumpukan dan merawat informasi tentang copian data pada cache
•
Directory tersimpan pada memory
•
Permintaan di cek oleh directory
•
Pelaksanaan transfer yang lebih penting dahulu
•
Pembuatan sentral bottleneck
•
Efektif
pada
sistem
skala
besar
dengan
interkoneksi skema yang kompleks Lock digunakan untuk proses sinkronisasi, apabila ada 2 atau lebih proses yang ingin mengakses alamat memori yang sama dan mengubah shared memory. Dalam skema tersebut, salah satu penjadwalan akan digunakan. Salah satu cara menggunakan symmetric multiprocessing (SMP). Dimana setiap prosesor menjadwalkan diri sendiri. Setiap prosesor memeriksa ready queue dan memilih proses yang akan dieksekusi. Dalam sistem multiprocessing, semua CPU mungkin sama, atau beberapa mungkin disediakan untuk tujuan khusus. Sebuah kombinasi antara perangkat lunak perangkat keras dan pertimbangan desain sistem operasi menentukan simetri (atau kekurangan daripadanya) dalam sistem tertentu. Sebagai contoh, perangkat keras atau perangkat lunak mungkin memerlukan pertimbangan bahwa hanya satu CPU menanggapi semua hardware interrupts, sedangkan semua pekerjaan lain dalam sistem boleh didistribusikan merata antara CPU, atau eksekusi kode kernel-mode dapat dibatasi hanya satu prosesor (baik prosesor tertentu, atau hanya satu prosesor pada satu waktu), sedangkan kode pengguna-mode mungkin dijalankan dalam setiap kombinasi prosesor.
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
Gambar UMA machine block diagram Permasalahan pada Multiprocessor Scheduling 1) Load sharing : dapat terjadi apabila proses yang jalan di satu prosesor overload sehingga sebagian proses berpindah ke prosesor yang lain 2) Time Sharing : masing – masing proses akan dijalankan bila terdapat CPU yang telah menyelesaikan job nya 3) Space Sharing: multiple threads dalam waktu yang sama masuk ke multiple CPUs 4) Gang scheduling: semua thread berasal dari proses yang running pada suatu waktu E. NUMA (Non Uniform Memory Access) Non-Uniform Memory Access atau Non-Uniform Memory Arsitektur (NUMA) adalah memori komputer Rancangan yang digunakan dalam multiprocessors , dimana waktu akses memori tergantung pada lokasi memori relatif terhadap prosesor. Under NUMA, Dalam NUMA, prosesor atau NUMA multiprocessor adalah sebuah sistem shared memory dimana waktu aksesnya bervariasi ke lokasi memori word.
Shared memory yang secara phisik didistribusikan kesemua process disebut lokal memori, dan kumpulan dari lokal memori membentuk ruang alamat global yang dapat diakses
oleh semua process. NUMA dapat mengakses lokal memori lebih cepat dengan local process, sedangkan akses ke memori yang jauh diberikan ke process lain yang kapasistasnya lebih besar untuk
ditambah delay melalui interconeksi jaringan (BBN Butterfly). Disamping distribusi memori, secara umum shared memory dapat ditambahkan ke multiprocessor system, dalam hal ini ada tiga pola akses memory, dimana yang tercepat adalah akses ke lokal memori, akses ke global memori dan yang paling lambat adalah akses dari memory yang jauh (Hierarchical Cluster Model ).
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 .
Batas prosesor di SMP adalah salah satu motivasi pendorong di belakang pengembangan sistem klaster. Namun, dengan sebuah cluster, masing-masing node memiliki sendiri memori utama; aplikasi tidak melihat memori global besar. Akibatnya, koherensi dipertahankan dalam perangkat lunak dari pada perangkat keras. Granularity memori ini mempengaruhi kinerja dan, untuk mencapai kinerja maksimum, perangkat lunak harus disesuaikan dengan lingkungan. Salah satu pendekatan untuk mencapai skala besar multiprocessingsementara tetap mempertahankan rasa SMP adalah NUMA. a. Cluster Cluster, dalam ilmu komputer dan jaringan komputer adalah sekumpulan komputer (umumnya server jaringan) independen yang beroperasi serta bekerja secara erat dan terlihat oleh klien jaringan seolah-olah komputer-komputer tersebut adalah satu buah unit komputer. Proses menghubungkan beberapa komputer agar dapat bekerja seperti itu dinamakan dengan Clustering. Komponen cluster biasanya saling terhubung dengan cepat melalui sebuah interkoneksi yang sangat cepat, atau bisa juga melalui jaringan lokal (LAN). Karena menggunakan lebih dari satu buahserver, maka manajemen dan perawatan sebuah cluster jauh lebih rumit dibandingkan dengan manajemen server mainframe tunggal yang memiliki skalabilitas tinggi (semacam IBM AS/400), meski lebih murah. Kategori kluster komputer Kluster komputer terbagi ke dalam beberapa kategori, sebagai berikut: - Kluster untuk ketersediaan yang tinggi (High-availability clusters) High-availability cluster, yang juga sering disebut sebagai Failover Cluster pada umumnya diimplementasikan untuk tujuan meningkatkan ketersediaan layanan yang disediakan oleh kluster tersebut. Elemen kluster akan bekerja dengan memiliki nodenode redundan, yang kemudian digunakan untuk menyediakan layanan saat salah satu elemen kluster mengalami kegagalan. Ukuran yang paling umum dari kategori ini adalah dua node, yang merupakan syarat minimum untuk melakukan redundansi. Implementasi kluster jenis ini akan mencoba untuk menggunakan redundansi komponen kluster untuk menghilangkan kegagalan di satu titik - (Single Point of Failure). Ada beberapa implementasi komersial dari sistem kluster kategori ini, dalam beberapa sistem operasi. Meski demikian, proyek Linux- HA adalah salah satu paket yang paling umum digunakan untuk sistem operasi GNU/Linux.Dalam keluarga sistem operasi Microsoft Windows NT, sebuah layanan yang disebut denganMicrosoft Cluster Service (MSCS) dapat digunakan untuk menyediakan kluster kategori ini. MSCS ini diperbarui lagi dan telah diintegrasikan dalam Windows 2000 Advanced Server dan Windows 2000 Datacenter Server, dengan namaMicrosoft Clustering Service. Dalam Windows Server 2003, Microsoft Clustering Service ini ditingkatkan lagi kinerjanya. Kluster untuk pemerataan beban komputasi (Load-balancing clusters) Kluster kategori ini beroperasi dengan mendistribusikan beban pekerjaan secara merata melalui beberapa node yang bekerja di belakang (back-end node). Umumnya kluster ini akan dikonfigurasikan sedmikian rupa dengan beberapa front-end load-
-
balancing redundan. Karena setiap elemen dalam sebuah kluster load-balancing 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.
1. CACHE COHERENCE AND THE MESI PROTOCOL
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
Ini jelas membuktikan bahwa aturan write-back dapat menghasilkan ketidakteraturan. Jika dua cache memiliki line yang sama, dan jika line-nya memperbarui pada salah satu cache, cache yang lainnya akan memiliki nilai yang salah. Kemudian membaca line yang salah tersebut dan meng hasilkan data yang salah pula. Bahkan dengan menggunakan aturan write-trough,
ketidakteraturan tetap terjadi kecuali jika cache yang lain mengawasi lalu lintas memory atau menerima pemberitahuan langsung tentang pembaruannya. 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 Directory protocol mengumpulkan dan mengatur informasi tentang dimana line-nya berlokasi.Ada kontrol sentral yang menjadi bagian dari kontrol memory utama.Dan daftar yang tersimpan di memry utama.Daftar tersebut mengandung informasi global tentang isi dari berbagai macam local cache. Saat sebuah controllercache meminta, kontrol sentral memeriksa perintah yang dibutuhkan untuk data transfer antara memory dan cache atau antara sesame cache. Ini juga bertanggung jawab untuk menjaga informasi agar tetap diperbarui.Namun, setiap aksi local dapat mempengaruhi line dan harus dilaporkan kepada kontrol central. Controller menjaga informasi tentang prosesor mana yang mempunyai salinan dari line tersebut. Sebelum prosesor dapat menulis ke salinan local line, harus meminta akses khusus ke linedari controller. Sebelum memberi akses khusus, controller mengirim pesan ke semua prosesor dengancachesalinan line, memaksa setiap prosesor untuk mentidaksahkan salinan tersebut.Setelah mendapatkan pengakuan dari setiap prosesor, controller memberi akses khusus dari permintaan prosesor. Saat prosesor lain mencoba membaca line yang diberi akses khusus oleh prosesor lain, prosesor itu akan mengirim pemberitahuan yang salah ke controller. Controller akan memberi perintah kepada prosesor untuk menahan line tersebut yang membutuhkan prosesor untuk menulis kembali di memory utama. Line tersebut sekarang dapat dibagi untuk dibaca oleh prosesor yang asli dan prosesor yang meminta. Pola daftar terbebani dari kekurangan kemacetan sentral dan konunikasi overhead antara bermacam-macam cache controller dan kontrol sentral.Tetapi ini sangat efektif dalam sistem skala besar yang melibatkan beberapa bus pola hubungan rumit lainnya. Snoopy protocols Snoopy protocols membagikan tanggung jawab untuk menjaga hubungan cache diantara semua cache controllers pada multiprosesor. Cache harus mengenali kapan line yang ditahan terbagi dengan cache lain. Saat pembaruan dijalankan pada cache lineyang terbagi, harus diumumkan kepada semua cache lainnya menggunakan mekanisma broadcasting. Setiap cache controllers dapat melakukan snoop pada jaringan untuk mengamati pemberitahuan yang disiarkan, dan bereaksi sepantasnya. Snoop protocols idealnya cocok untuk multiprosesor bus-based, karena bus yang terbagi menyediakan tanda sederhana untuk broaadcasting dan snooping. Tetapi karena salah satu tujuan dari preggunaan cache local mencegah akses bus, harus diperhatikan bahwa penambahan lalulintas bus dibutuhkan untuk broadcasting dan snooping bukan menghapuskan penambahan dari penggunaan cache local. Dua pendekatan dasar untuk snoopy protocol yaitu: write invalidate dan write update(write broadcast). Dengan protocol write-invalidate, dapat terjadi pembaca ganda tetapi hanya satu pembaca di satu waktu. Mulanya, line terbagi dalam beberapa cache yang ditujukan untuk dibaca. Saat salah satu cache ingin menjalankan write pada line. Pertama akan
mengeluarkan tanda mennyalahkan line tersebut pada cache lain. Membuat line khusus ke writing cache. Saat line menjadi khusus, prosesor yang memilikinya bisa membuat write local sampai prosesor lain meminta line yang sama. 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.
The MESI Protokol Untuk menyediakan konsistensi cache pada SMP, cache data sering membantu protocol MESI. Untuk MESI, cache data termasuk dua status bits per tanda, jadi setiap line bisa satu dalam 4 keadaan:
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:
Shared: sebelum melakukan pembaruan, prosesor harus menambah kepemilikan line khusus. Prosesor memberi sinyal kepada bus. Setiap prosesor yang memiliki salinan line yang terbagi dalam cache mentransisikan ke sector dari shared menjdai invalid. Prosesor
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.
2. MULTITHREADING AND CHIP MULTIPROCESSOR
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.
Implicit and Explicit Multithreading Konsep penggunaan thread pada multithreading processor bisa saja sama dengan konsep software threads pada multiprogrammed operating sistem. Akan dijelaskan:
Process: process dibagi menjadi dua karaktesistik: 1. Resource Partnership: proses termasuk address spacemenahan proses image: proses image mengumpulkan program, data, stack, dan atribut yang menjelaskan proses. Lama-kelamaan proses memberikan control atau kepemilikan sumber, seperti memory utama, I/O channel, I/O devices, dan files. 2. Scheduling/execution: eksekusi proses mengikuti jaluur eksekusi (trace/path) lewat satu atau lebih program. Jadi proses memiliki keadaan eksekusi (running, ready, dll) dan mengirim kesatuan prioritas yang terjadwal dan yang terkirim oleh sistem operasi. Process Switch: operasi yang mengganti dari prosessor ke prosessor yang lainnya, dengan menyimpan semua proses control data, register, dan semua informasi. Thread: dispatchable unit diantara proses, termasuk konteks prosesor (termasuk program counter dan stack pointer) dan data area untuk stack.
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.
Approaches to Explicit Multithreading Dalam keadaan minimum, prosesor multithread harus menyediakan program counter terpisah untuk setiap eksekusi thread untuk di eksekusi secara bersamaan. Perancang membedakan dari jumlah dan tipe dari hadware tambahan yang digunakan untuk menunjang teknik untuk mengoptimalkan eksekusi single-thread, termasuk branch prediction, register renaming, dan superscalar technique. Yang didapatkan dari thread-level parallelism, adalah dapat menyediakan performa yang meningkat saat menyatu dengan instruction-level parallelism. Terdapat empat prinsip multithreading
Interleaved multithreading: dapat dinamakan sebagai fine-grained multithreading. Prosesor bekerja dengan dua atau lebih konteks thread bersamaan, mengganti dari satu thread ke thread yang lain dalam satu putaran clock. Jika thread di block karena ketergantungan data atau interval memory, thread tersebut akan dilewatin dan thread siap untuk di eksekusi Blocked Multithreading: dinamakan juga sebagai coarse-grained multithreading. Thread instruksi di eksekusi sampai selesai hingga terjadi penundaan, atau cache miss. Kejadian ini menstimulasi mengganti thread lain. Pendekatan ini efekti pada prosesor inorder yang akan stall si pipeline untuk penundaan. Simultaneous Multithreading (SMT): secara bersamaan instruksi mengeluarkan dari multiple thread untuk eksekusi unit pada superscalar processor. Ini menggambungkan instruksi superscalar luas mengeluarkan kemampuan bersama konteks multiple thread Chip Multiprocessing: dalam keadaan ini, semua prosesor mereplika chip tunggal dan setiap prosesor menangani thread yang berbeda. Keuntungan dari ini adalah area logika yang tersedia pada chip digunakan dengan efektif tanpa ketergantungan pada komplektisitas ever-increasing di desain pipeline.
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
Simultaneous Multithreading: gambar 17.7j menunjukkan kemampuan sistem mengeluarkan delapan instruksi bersamaan. Jika satu thread memiliki tingkat tinggi instruction-level parallelism, beberapa cycle akan dapat memenuhi semua horizontal slot. Pada cycle lain, instruksi dari dua atau lebih bisa dikeluarkan, jika thread akan aktif cukup, biasanya memungkinkan untuk mengeluarkan semua jumlah instruksi pada setiap cycle, memberikan efektifitas tingkat tinggi Chip Multiprocessor (multicore): gambar 117.7k menunjukkan chip memuat empat processor, setiap prosesor memiliki two-issue prosesor superscalar. Setipa prosesor menugaskan sebuah thread
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.