Senin, 25 Maret 2019

Prosesor paralel


Parallel Processing merupakan salah satu teknik yang digunakan dalam komputasi, yaitu teknik yang menggunakan dua atau lebih processor dalam melakukan komputasi dan dilakukan secara bersamaan. Komputasi adalah suatu aktifitas penghitungan atau pemecahan masalah, lalu bagaimana dengan processor. Processor merupakan sumber semua perintah, jika diibaratkan dalam makhluk hidup, prosessor merupakan otaknya. Idealnya satu komputer hanya memiliki satu prosesor saja, namun dengan berkembangnya teknologi, muncullah multi prosesor dimana dalam satu komputer terdapat dua prosessor yang digabung menjadi satu, contohnya dual core, core 2 duo, quad core, dan lain-lain.
Tujuan Pemrosesan Parallel
Tujuan utama dari pemrosesan paralel adalah untuk meningkatkan performa komputasiSemakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikanAnalogi yang paling mudah untuk diingat adalahbila kamu dapat merebus air dalam sebelum memotong motong bawang saat kamu akan masakwaktu yang kamu butuhkan akan lebih sedikit dibandingkan bila kamu mengerjakan hal tersebut secara berurutan (serial). Atau waktu yang kamu butuhkan pada saat memotong bawang akan lebih sedikit jika kamu kerjakan berdua.

Perbedaan Komputasi Tunggal & Parallel
  Perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digunakanyaitu:


dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi.
Ada 4 model komputasi yang digunakan, yaitu:

1.  Komputer SISD (Single Instruction stream-Single Data stream)
2. Komputer SIMD (Single Instruction stream-Multiple Data stream)
3. Komputer MISD (Multiple Instruction stream-Single Data stream)
4. Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
SISD
  Yang merupakan singkatan dari Single Instruction, Single Data adalah 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. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
SIMD
  Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
MISD
  Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
MIMD

Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

  
Pada gambar komputasi paralel, instruksi akan dibagi menjadi beberapa instruksi sesuai dengan banyaknya processor. Hal ini tentunya akan mempercepat kerja komputer dan mempercepat waktu untuk mendapatkan hasil.



Komputasi vektor


  Perkembangan aplikasi berada diluar kemampuan mainframe modern. Terdapat kebutuhan komputer untuk menyelesaikan masalah matematika proses yang sebenarnya seperti yang terdapat pada bidang aerodinamika, seismologi, meteorologi, fisika atom dll. Umumnya masalah tersebut ditandai dengan kebutuhan perhitungan berpresisi tinggi dan program yang secara berulang melakukan operasi-operasi aritmetik terhadap larik bilangan dalam jumlah besar. Untuk mengatasi masalah tersebut maka dibuat super komputer. Mesin ini mampu melakukan ratusan juta operasi perdetik untuk keperluan kalkulasi numerik.

Berbeda dengan mainframe yang dirancang untuk pemrograman multi dan I/O secara intensif. Ada sistem jenis lain yang dirancang untuk memenuhi kebutuhan komputasi vektor. Sistem ini dikenal dengan prosesor larik. Walaupun super komputer dioptimasikan untuk kebutuhan komputasi vektor, namun pada dasarnya ia memiliki kemamppuan menangani tugas-tugas pengolahan skalar dan pengolahan data yang umum. Pada pengolahan larik tidak mencakup pengolahan skalar, pengolah larik dipasang sebagai perangkat periperal baik oleh pengguna mainframe maupun pengguna komputer kecil untuk menjalankan bagian-bagian yang divektorkan pada suatu program.
Terdapat tiga organisasi prosesor yang penting :
– ALU pipeline
Prosesor paralel
– ALU paralel
  Operassi vektor dapat ditingkatkan lebih lanjut apabila elemen-elemen vektor terdapat didalam register seperti terlihat pada gambar (a) dibawah ini. Semua elemen operand vektor dimuatkan sebagai sebuah blok ke dalam register vektor yang sebenarnya hanya berupa bank register-register yang identik dan besar. Hasilnya juga disimpan didalam suatu register vektor. Sebagian operasi hanya melibatkan penggunaan register dan hanya operasi pemuatan dan penyimpanan awal serta akhir operasi vektor memerlukan akses ke memori.

  Cara lain untuk mendapatkan pengolahan vektor adalah dengan menggunakan ALU berjumlah jamak pada prosesor tunggal dibawah kendali kontrol unit. Unit kontrol mengirimkan data ke ALU hingga ALU tersebut dapat berfungsi secara paralel. Dapat pula menggunakan pipeline pada tiap ALU yang paralel. Seperti halnya pipeline, organisasi ALU paralel cocok untuk pengolahan vektor. Unit kontrol mengirimkan elemen-elemen vektor ke ALU sampai seluruh elemen tersebut selesai diproses. Jenis organisasi ini lebih kompleks dibanding prosesor dengan ALU tunggal.
  Cara yang terakhir untuk pengolahan vektor dapat diperoleh dengan menggunakan prosesor paralel berjumlah banyak. Diperlukan pembagian tugas menjadi beberapa proses yang akan dieksekusi secara paralel.
Organisasi ini efektif bila terdapat software dan hardware untuk keperluan organisasi prosesor paralel yang efektif.
  Organisasi komputer dapat dibedakan menurut jumlah unit kontrolnya. Unit kontrol berjumlah banyak mengimplementasikan sejumlah prosesor. Apabila sejumlah prosesor dapat berfungsi secara kooperatif maka prosesor tersebut disebut prosesor paralel.
Koherensi cache dan protokol MESI

Koherenci cache
  Dalam komputasi, cache koherensi (juga koherensi cache) mengacu pada konsistensi data yang disimpan di lokal cache dari suatu sumber daya bersama. Cache coherence is a special case of memory coherence . koherensi Cache adalah kasus khusus dari koherensi memori .
A. Kegunaan Multiprocessing
  Komputer ini memiliki lebih dari satu processor. Akibatnya meningkatkan jumlah suatu proses yang dapat diselesaikan dalam satu unit waktu (pertambahan throughput ). Perlu diingat hal ini tidak berarti daya komputasinya menjadi meningkat sejumlah prosesornya. Yang meningkat adalah jumlah pekerjaan yang bisa dilakukannya dalam waktu tertentu.
B. Cara Kerja Multiprocessing
  Uang yang terpakai lebih sedikit karena prosesor -prosesor terdapat dalam satu komputer dan dapat membagi peripheral(ekonomis) seperti disk dan catu daya listrik.
  Jika satu processor 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 fail-soft system .
Ada dua jenis multiprocessor system yaitu :
1. Symmetric MultiProcessing (SMP)
2. Asymmetric MultiProcessing (ASMP).
  Dalam SMP setiap prosesor menjalankan salinan identik dari sistem operasi dan banyak job yang dapat berjalan di suatu waktu tanpa pengurangan performance. Sementara itu dalam ASMP setiap prosesor diberikan suatu tugas yang spesifik. Sebuah prosesor bertindak sebagai Master processor yang bertugas menjadwalkan dan mengalokasikan pekerjaan pada prosesor lain yang disebut slave processors . Umumnya ASMP dipake pada sistem yang besar.
  Ketika klien dalam suatu sistem memelihara cache dari suatu sumber daya memori umum, permasalahan akan muncul dengan data yang tidak konsisten. Hal ini terutama berlaku dari CPU dalam multiprocessing sistem.. Mengacu pada "Caches Beberapa dari Shared Resource" angka, jika klien atas memiliki salinan dari sebuah blok memori dari membaca sebelumnya dan perubahan klien bawah yang blok memori, klien atas dapat ditinggalkan dengan cache tidak valid dari memori tanpa pemberitahuan perubahan. Cache koherensi dimaksudkan untuk mengelola konflik tersebut dan menjaga konsistensi antara cache dan memori.
Koherensi mendefinisikan perilaku dari membaca dan menulis ke lokasi memori yang sama. Koherensi cache diperoleh jika kondisi berikut ini terpenuhi:
1.Bacaan yang dibuat oleh prosesor P ke lokasi X yang mengikuti menulis dengan prosesor yang sama P ke X, dengan tidak menulis tentang X dengan prosesor lain yang terjadi antara menulis dan membaca petunjuk yang dibuat oleh P, X harus selalu mengembalikan nilai tertulis oleh P. Hal ini terkait dengan urutan program pelestarian, dan ini harus dicapai bahkan di arsitektur monoprocessed.
2.Bacaan yang dibuat oleh prosesor P1 ke lokasi X yang mengikuti menulis dengan prosesor P2 lain untuk X harus mengembalikan nilai tertulis yang dibuat oleh P2 jika tidak ada lain menulis ke X yang dibuat oleh prosesor pun terjadi antara dua akses. Kondisi ini mendefinisikan konsep pandangan koheren memori.. Jika prosesor dapat membaca nilai lama yang sama setelah menulis dibuat oleh P2, kita dapat mengatakan bahwa memori sudah membingungkan.
3.Dengan kata lain, jika lokasi X menerima dua nilai yang berbeda A dan B, dalam urutan ini, oleh dua prosesor, prosesor tidak pernah dapat membaca lokasi X sebagai B dan kemudian membacanya sebagai A. Lokasi X harus dilihat dengan nilai A dan B dalam urutan itu.
  Kondisi ini didefinisikan mengandaikan bahwa membaca dan menulis operasi dibuat seketika. Namun, hal ini tidak terjadi di memori komputer hardware latency diberikan dan aspek lain dari arsitektur. Sebuah menulis dengan prosesor P1 tidak dapat dilihat dengan membaca dari P2 prosesor jika membaca dilakukan dalam waktu yang sangat kecil setelah menulis telah dibuat. Model konsistensi mendefinisikan memori ketika nilai tertulis harus dilihat oleh instruksi membaca berikut dibuat oleh prosesor lainnya.
Berbagai model dan protokol telah dirancang untuk menjaga koherensi cache, seperti:
MSI protocol
MESI protocol
MOSI protocol
MOESI protocol
MERSI protocol
MESIF protocol
Write-once protocol
Synapse protocol
Berkeley protocol
Firefly protocol
Dragon protocol
  Pilihan model konsistensi sangat penting untuk merancang sistem koheren cache. Coherence model berbeda dalam kinerja dan skalabilitas; masing-masing harus dievaluasi untuk setiap perancangan sistem.
Mengelola koherensi cache
  Suatu protokol untuk mengelola cache sistem multiprosesor sehingga tidak ada data yang hilang atau ditimpa sebelum data tersebut dipindahkan dari cache ke target memori. When two or more computer processors work together on a single program,
  Ketika dua atau lebih prosesor komputer bekerja sama dalam satu program, yang dikenal sebagai multiprocessing , mungkin setiap prosesor memiliki memori cache sendiri yang terpisah dari yang lebih besar RAM bahwa prosesor individu akan akses.
  Sebuah cache memori, kadang-kadang disebut sebuah toko cache atau cache RAM , adalah bagian memori yang terbuat dari high-speed static RAM (SRAM) bukan lebih lambat dan murah RAM dinamis (DRAM) yang digunakan untuk utama memori . Memori cache efektif karena sebagian besar program
akses data yang sama atau instruksi berulang-ulang. Dengan menjaga sebanyak informasi ini mungkin dalam SRAM, komputer menghindari mengakses DRAM lebih lambat.
  Ketika beberapa prosesor dengan cache terpisah berbagi memori yang sama, perlu untuk menjaga persediaan dalam keadaan koherensi dengan memastikan bahwa setiap bersama operan yang diubah dalam cache apapun berubah sepanjang seluruh sistem.
  Hal ini dilakukan dalam salah satu dari dua cara: melalui-direktori berbasis atau sistem mengintai. Dalam sistem direktori berbasis, data sedang dibagi ditempatkan dalam sebuah direktori umum yang mempertahankan koherensi antara cache. direktori bertindak sebagai filter melalui mana prosesor harus meminta izin untuk memuat entri dari memori utama ke cache nya.. Ketika entri berubah direktori baik pembaruan atau membatalkan cache lain dengan entri tersebut. Dalam sistem mengintai, semua cache pada bus monitor (atau mengintip) bus untuk menentukan apakah mereka memiliki salinan dari blok data yang diminta di bus. cache Setiap salinan status berbagi setiap blok memori fisik yang dimilikinya.
  Cache misses dan memori lalu lintas karena blok data bersama membatasi kinerja komputasi paralel di komputer multiprocessor atau sistem.. koherensi Cache bertujuan untuk memecahkan masalah yang berkaitan dengan berbagi data.
  Koherensi Cache adalah disiplin yang memastikan bahwa perubahan nilai dari operan bersama yang disebarkan di seluruh sistem secara tepat waktu.
Ada tiga tingkatan yang berbeda dari koherensi cache:
1.Every write operation appears to occur instantaneously. Setiap operasi menulis tampaknya terjadi secara instan.
2.All processes see exactly the same sequence of changes of values for each separate operand. Semua proses melihat urutan yang sama persis perubahan nilai untuk setiap operan terpisah.
3.Different processes may see an operand assume different sequences of values. proses yang berbeda mungkin melihat operan mengasumsikan urutan yang berbeda nilai. (This is considered noncoherent behavior.) (Ini dianggap perilaku koheren.)
In both level 2 behavior and level 3 behavior, a program can observe stale data . Dalam kedua perilaku 2 dan tingkat 3 perilaku, sebuah program dapat mengamati data basi . Recently, computer designers have come to realize that the programming discipline required to deal with level 2 behavior is sufficient to deal also with level 3 behavior. Baru-baru ini, desainer komputer telah menyadari bahwa disiplin pemrograman dibutuhkan untuk menangani dengan tingkat 2 perilaku cukup untuk menangani juga dengan tingkat 3 perilaku. Therefore, at some point only level 1 and level 3 behavior will be seen in machines. Oleh karena itu, di beberapa titik hanya level 1 dan level 3 perilaku akan terlihat dalam mesin.