Anda di halaman 1dari 36

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

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 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.

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 loadbalancing 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.

Anda mungkin juga menyukai