Apa itu thread pada prosesor ?
Thread adalah komponen atau kode virtual, yang membagi inti fisik CPU menjadi beberapa inti virtual. Satu inti CPU dapat memiliki hingga 2 Thread per inti. Misalnya, jika CPU adalah dual core (yaitu, 2 core) itu akan memiliki 4 Thread. Dan jika CPU adalah inti Oktal (yaitu, 8 inti) ia akan memiliki 16 Thread dan sebaliknya.
Bagaimana Thread Bekerja ?
Masalah dasarnya adalah bahwa memori utama (RAM tidak memiliki kecepatan
secepat prosesor. Dalam waktu yang diperlukan untuk mendapatkan satu kata
data dari memori utama, prosesor dapat melakukan setidaknya 10 detik jika
tidak 100 detik atau 1000 detik instruksi.
Tetapi ada saatnya dalam eksekusi semua program ketika tidak dapat membuat
kemajuan lebih lanjut tanpa mendapatkan data dari memori. Seperti, jika
kamu ingin menambahkan 1 ke data di lokasi memori A, kamu tidak akan
terlalu jauh sampai kamu mendapatkan data di A. Garis pertahanan pertama
yang berlawanan adalah memori cache. memori cache Ini adalah memori cepat
yang dapat mengimbangi prosesor tempat menyimpan data yang baru saja
digunakan. memori cache mampu mengimbangi kecepatan prosesor, tetapi juga
jauh lebih kecil dari memori utama (10x hingga 100x+ lebih kecil), karena
jika semakin besar, itu akan menjadi lebih lambat dan mengalahkan seluruh
tujuannya. Jadi tidak semuanya bisa disimpan dalam cache.Disisi lain
ternyata program sering menggunakan kembali data, jadi cache bekerja lebih
baik daripada yang kita harapkan: lebih dari 90% akses data program biasa
dapat dipenuhi oleh cache. Ketika sebuah program menemukan datanya dalam
cache, itu disebut cache hit . Ketika hal tersebut tidak terjadi, itu
disebut sebagai cache miss . Tetapi beberapa program, sangat disayangkanya,
memiliki banyak cache yang hilang, dan orang-orang selalu berusaha keras
untuk mendapatkan 1% kinerja lagi. Di sinilah threading masuk. Jika
perangkat lunak telah menyediakan program lain (atau bagian dari program)
yang juga dapat dijalankan pada saat yang sama, (ini adalah persyaratan
penting).
Sediakan beberapa program berbeda untuk dijalankan bersamaan program kemudian, ketika satu program menemukan cache miss, lakukan multitasking dan beralih ke program lain yang statusnya disimpan. Jika berhasil berarti CPU tidak berhenti sama sekali, Siklus jam CPU berikutnya dapat berjalan menggunakan program lain. (Tidak ada perbandingan dengan pergantian perangkat lunak, hal ini membutuhkan ribuan instruksi, dan mungkin seluruh tumpukan cache sudah meleset.) Perangkat keras melakukan peralihan ini sendiri, menggunakan kumpulan data utas dan penjadwal sederhana .
Setelah kamu menjalankan program lain untuk sementara waktu, data yang
diminta oleh yang pertama mungkin telah tiba dari memori, sehingga kamu
dapat melanjutkannya, setelah memanfaatkan CPU dengan baik untuk sementara
dengan melakukan sesuatu yang lain. Atau, jika yang kamu jalankan memiliki
cache yang hilang, alihkan ke yang ketiga. Dan seterusnya.
Mengapa disebut sebagai Thread ?
Setiap status tersimpan disebut thread , atau CPU thread - untuk
membedakannya dari thread yang diimplementasikan perangkat lunak.
tamivoo telah melihat perkiraan bahwa ruang ekstra yang diperlukan untuk
beberapa (4, 8, sekitar) utas hanya menambahkan beberapa persen ke area CPU
- penyimpanan tidak memakan banyak area - tetapi ketika cukup banyak
program terpisah tersedia, agregat kinerja di semua program - yang berarti
jumlah siklus CPU yang benar-benar melakukan pekerjaan yang bermanfaat,
daripada menunggu - meningkat 30%.
yang artinya hal itu tidak sempurna, tetapi ini adalah tradeoff teknik yang
bagus, dan banyak prosesor menggunakannya. Tidak seperti cache, ini
terutama digunakan pada prosesor berperforma tinggi, sistem chip tunggal
dan sistem tertanam biasanya tidak menggunakannya.
Multiprosessor dan multitasking
Kembali ke "jawaban singkat" tamivoo menyebut ini "jenis multiprosesor."
Walaupun tidak benar-benar multi processing , karena beberapa program tidak
pernah berjalan pada waktu yang sama persis: ketika melakukan multitasking
ketika kamu mengoperasikan software seperti word dan chrome secara
bergantian Ini jauh lebih mirip dengan apa yang disebut multi processing ,
yang telah digunakan oleh perangkat lunak untuk waktu yang sangat lama bisa
menutupi waktu yang seharusnya dihabiskan untuk menunggu perangkat IO
(seperti disk) untuk merespons. Maksud dari multithreading CPU persis sama
dengan multiprosesor perangkat lunak, tetapi skala waktunya sangat berbeda
(milidetik vs. nanodetik) dan, tentu saja, implementasinya sama sekali
berbeda (perangkat lunak vs. perangkat keras).
Contoh Thread pada smatphone
Aplikasi smartphone adalah contohnya, ketika kamu membuka aplikasi, itu
menunjukkan lingkaran yang berputar terus menerus, proses ini dilakukan
oleh Thread yang dibuat untuk tujuan ini saja, dan Thread kedua memuat
informasi dan menyajikannya dalam Grafik Antarmuka pengguna.
Satu-satunya fakta yang akan membatasi pembuatan Thread adalah jumlah
Thread yang disediakan oleh CPU fisik, dan itu bervariasi dari CPU ke CPU.
Gambar pertama adalah pemintal pemuatan oleh Thread pertama dan yang kedua
adalah pemuatan GUI oleh Thread kedua.