Selasa, 12 Januari 2021

Perbedaan Proses dan Thread | The Difference between a Process and a Threads

Nama : Fikih yuhada sena

Kelas : IF 20B

Fakultas : FTIK

Assalamualaikum Wr. Wb saya disini ini menjelaskan materi tentang Perbedaan Proses dan Thread | The Difference between a Process and a Threads .sebagai berikut :

1. Pengertian Proses

Sebuah proses, secara umum, adalah serangkaian terus menerus dari tindakan untuk mencapai hasil yang spesifik. Namun, dalam dunia komputer, proses adalah sebuah contoh dari mengeksekusi program komputer. Dengan kata lain, itu adalah konsep dari kejadian tunggal dari program komputer yang berjalan.
Berdasarkan jumlah thread yang telibat dalam proses, proses dapat dibedakan menjadi 2 jenis yaitu :
  • proses tunggal-thread : proses yang hanya memiliki satu thread
  • proses multi-thread : Proses yang memiliki lebih dari satu thread

2. Pengertian Thread

thread adalah pelaksanaan instruksi terkecil dari program komputer yang dapat dikelola secara independen sesuai dengan jadwal. Sebuah thread adalah jalan eksekusi sederhana dalam proses. Sebuah thread adalah sebagai proses kuat karena thread bisa melakukan proses apa saja yang bisa dilakukan. Sebuah thread adalah proses ringan dan membutuhkan sumber daya yang lebih sedikit. Thread dapat mulai dari membaca dan menulis ke variabel yang sama dan struktur data variabel. Thread dapat berkomunikasi antara thread dengan mudah.

3. Perbedaan Proses dan Thread


a. PROSES

  • Proses mencakup program counter, yaitu sebuah stack untuk menyimpan alamat dari instruksi yang selanjutnya akan di eksekusi dan di registrasi.
  • Memiliki ruang alamat atau IP address masing-masing.
  • Dari satu proses dengan proses lainnya harus menggunakan komunikasi.
  • Memiliki overhead.
  • Hanya dapat mengendalikan proses turunannya.
  • Perubahan pada parent proses tidak mempengaruhi proses turunannya.
  • Pembentukan proses membutuhkan waktu yang lebih lama.
  • Waktu yang dibutuhkan untuk mengakhiri proses lebih lama.

b. THREAD

  • Merupakan unit dasar dari penggunaan CPU dan sering disebut dengan lightweight process.
  • Ruang alamat atau IP address digunakan secara bersama-sama dari proses yang menciptakannya.
  • Memiliki akses langsung ke segmen data dari prosesnya.
  • Dapat saling berkomunikasi dengan thread lain dalam satu proses.
  • Hampir tidak memiliki overhead.
  • Perubahan pada thread utama seperti pembatalan atau perubahan prioritas dapat mempengaruhi tingkah laku thread lain dalam satu proses.
  • Pembentukan thread membutuhkan waktu yang lebih sedikit.
  • Waktu yang dibutuhkan untuk mengakhiri thread lebih sedikit.
  • Lebih mudah dan cepat melakukan swicth antar thread daripada switch antar proses.

Jumat, 08 Januari 2021

Pengertian, Sejarah, Keuntungan, Kekurangan, SIMD

1. Pengertian  SIMD





SIMD adalah kelas komputer paralel dalam taksonomi Flynn. Klarifikasi diperlukan Ini menjelaskan komputer dengan beberapa elemen pemrosesan yang melakukan operasi yang sama pada beberapa titik data secara bersamaan. Mesin semacam itu mengeksploitasi paralelisme tingkat data , tetapi bukan konkurensi : ada komputasi simultan (paralel), tetapi hanya satu proses (instruksi) pada saat tertentu. SIMD khususnya dapat diterapkan untuk tugas-tugas umum seperti mengatur kontras dalam gambar digital atau mengatur volume audio digital . Paling modernDesain CPU menyertakan instruksi SIMD untuk meningkatkan kinerja penggunaan multimedia . SIMD tidak sama dengan SIMT , yang menggunakan utas .

2. Keuntungan SIMD

Aplikasi yang dapat memanfaatkan SIMD adalah aplikasi di mana nilai yang sama ditambahkan ke (atau dikurangi dari) sejumlah besar titik data, operasi umum pada banyak aplikasi multimedia . Salah satu contohnya adalah mengubah kecerahan gambar. Setiap piksel gambar terdiri dari tiga nilai kecerahan bagian warna merah (R), hijau (G), dan biru (B). Untuk mengubah kecerahan, nilai R, G dan B dibaca dari memori, nilai ditambahkan ke (atau dikurangkan dari) nilai tersebut, dan nilai yang dihasilkan ditulis kembali ke memori.

Dengan prosesor SIMD ada dua peningkatan pada proses ini. Untuk satu data dipahami sebagai blok, dan sejumlah nilai dapat dimuat sekaligus. Alih-alih serangkaian instruksi yang mengatakan "ambil piksel ini, sekarang ambil piksel berikutnya", prosesor SIMD akan memiliki instruksi tunggal yang secara efektif mengatakan "ambil n piksel" (di mana n adalah angka yang bervariasi dari desain ke desain). Untuk berbagai alasan, ini bisa memakan waktu lebih sedikit daripada mengambil setiap piksel satu per satu, seperti pada desain CPU tradisional.

Keuntungan lainnya adalah bahwa instruksi beroperasi pada semua data yang dimuat dalam satu operasi. Dengan kata lain, jika sistem SIMD bekerja dengan memuat delapan titik data sekaligus, addoperasi yang diterapkan ke data tersebut akan terjadi pada kedelapan nilai pada saat yang bersamaan. Paralelisme ini terpisah dari paralelisme yang disediakan oleh prosesor superscalar ; delapan nilai diproses secara paralel bahkan pada prosesor non-superskalar, dan prosesor superskalar mungkin dapat melakukan beberapa operasi SIMD secara paralel.

3. Kekurangan SIMD

  • Tidak semua algoritme dapat divektorisasi dengan mudah. Misalnya, tugas berat kontrol aliran seperti penguraian kode mungkin tidak dengan mudah mendapatkan keuntungan dari SIMD; namun, secara teori dimungkinkan untuk melakukan vektorisasi perbandingan dan "aliran batch" untuk menargetkan optimalitas cache maksimal, meskipun teknik ini akan memerlukan lebih banyak status perantara. Catatan: Sistem pipeline batch (contoh: GPU atau pipeline rasterization software) paling menguntungkan untuk kontrol cache saat diimplementasikan dengan intrinsik SIMD, tetapi tidak eksklusif untuk fitur SIMD. Kompleksitas lebih lanjut mungkin terlihat untuk menghindari ketergantungan dalam rangkaian seperti string kode; sedangkan independensi diperlukan untuk vektorisasi.
  • File register besar yang meningkatkan konsumsi daya dan area chip yang dibutuhkan.
  • Saat ini, mengimplementasikan algoritma dengan instruksi SIMD biasanya membutuhkan tenaga manusia; sebagian besar kompiler tidak menghasilkan instruksi SIMD dari program C biasa , misalnya. Vektorisasi otomatis dalam kompiler adalah area aktif penelitian ilmu komputer. (Bandingkan pemrosesan vektor .)
  • Pemrograman dengan set instruksi SIMD tertentu dapat melibatkan banyak tantangan tingkat rendah.
    1. SIMD mungkin memiliki batasan pada penyelarasan data ; programmer yang akrab dengan satu arsitektur tertentu mungkin tidak mengharapkan ini.
    2. Mengumpulkan data ke register SIMD dan menyebarkannya ke lokasi tujuan yang benar itu rumit (terkadang membutuhkan operasi permute) dan bisa jadi tidak efisien.
    3. Instruksi khusus seperti rotasi atau penambahan tiga operan tidak tersedia di beberapa set instruksi SIMD.
    4. Set instruksi khusus untuk arsitektur: beberapa prosesor tidak memiliki instruksi SIMD sama sekali, jadi programmer harus menyediakan implementasi non-vektorisasi (atau implementasi vektorisasi yang berbeda) untuk mereka.
    5. Arsitektur yang berbeda menyediakan ukuran register yang berbeda (misalnya 64, 128, 256 dan 512 bit) dan set instruksi, yang berarti bahwa pemrogram harus menyediakan banyak implementasi kode vektor untuk beroperasi secara optimal pada CPU tertentu. Selain itu, set instruksi SIMD yang mungkin bertambah dengan setiap ukuran register baru.
    6. Set instruksi MMX awal berbagi file register dengan stack floating-point, yang menyebabkan inefisiensi saat mencampur floating-point dan kode MMX. Namun, SSE2 memperbaikinya.

Untuk memperbaiki masalah 1 dan 5, ekstensi vektor RISC-V dan ARM's Scalable Vector Extension menggunakan pendekatan alternatif: alih-alih memaparkan detail tingkat sub-register kepada programmer, set instruksi mengabstraksikannya sebagai beberapa "register vektor "yang menggunakan antarmuka yang sama di semua CPU dengan set instruksi ini. Perangkat keras menangani semua masalah penyelarasan dan "strip-mining" loop. Mesin dengan ukuran vektor berbeda akan dapat menjalankan kode yang sama. [6] LLVM menyebut jenis vektor ini "vscale".

Implementasi Algoritma Branch & Bound Pada Masalah Knapsack

 Metode Branch and Bound Metode Branch and Bound adalah sebuah teknik algoritma yang secara khusus mempelajari bagaimana caranya memperkecil...