Apa perbedaan antara multithreading dan hyperthreading? [Tutup]

10

Saya pernah mendengar istilah hyper-threading dan multi-threading, tetapi apa sebenarnya perbedaan di antara mereka? Seperti apa prosesor Intel yang menggunakannya?

mawar
sumber
2
Anda mencoba membandingkan hal-hal yang tidak dapat dibandingkan secara langsung; hanya terkait. Itu seperti bertanya, "Apa perbedaan antara kaki dan sepatu?" Selain itu, apa yang telah diungkapkan penelitian Anda sejauh ini? Di mana tepatnya Anda terpaku menentukan perbedaan berdasarkan definisi yang mudah diperoleh dari Internet?
Ƭᴇcʜιᴇ007
1
saya tidak tahu Multithreading atau Hyperthreading tidak menempatkan saya diminta untuk mengenal mereka
naik
1
naz stack stack overflow telah menutup topik sebagai 'off topic' ... Itu pertanyaan yang sangat bagus, populer dan tidak boleh ditutup ..
Robbo_UK
superuser.com/questions/133082/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功 法轮功

Jawaban:

19

Multithreading mengacu pada tugas umum menjalankan lebih dari satu utas eksekusi dalam sistem operasi. Multithreading lebih umum disebut "multiprocessing", yang dapat mencakup beberapa proses sistem (contoh sederhana pada Windows adalah, misalnya, menjalankan Internet Explorer dan Microsoft Word pada saat yang sama), atau dapat terdiri dari satu proses yang memiliki banyak utas dalam Itu.

Multithreading (atau harus saya katakan, multiprocessing) adalah konsep perangkat lunak . Praktis setiap Turing-CPU lengkap dapat melakukan multithreading, bahkan jika komputer hanya memiliki satu core CPU dan core itu tidak mendukung hyperthreading. Untuk mendukung multiprocessing, CPU akan melakukan interleave eksekusi dari berbagai thread eksekusi, dengan mengeksekusi satu, kemudian yang lain, lalu yang lain, di mana sistem operasi akan membagi waktu yang tersedia menjadi "irisan" dan memberikan jumlah waktu yang kira-kira sama untuk setiap utas (waktunya tidak harus sama, tetapi biasanya cara itu dilakukan kecuali suatu proses meminta prioritas yang lebih tinggi).

Perhatikan bahwa, setiap kali ada lebih banyak utas eksekusi perangkat lunak yang mencoba dieksekusi pada waktu tertentu daripada ada utas eksekusi perangkat keras (simultan) yang tersedia , maka utas perangkat lunak ini akan "disisipkan" di antara inti yang tersedia. Dalam kasus "uniprocessor" (satu inti CPU tanpa hyperhreading), jika Anda memiliki lebih dari satu utas perangkat lunak, mereka akan selaludisisipkan Jika Anda memiliki CPU 4-core dengan hyperthreading, itu 8 "utas perangkat keras", artinya CPU dapat mengeksekusi 8 utas eksekusi secara bersamaan pada saat yang bersamaan, jadi jika Anda memiliki 8 utas perangkat lunak yang mencoba dijalankan, semuanya dapat berjalan sekaligus ; tetapi jika Anda memiliki 9 utas perangkat lunak, salah satu utas perangkat keras harus interleave sepasang utas (sepasang utas yang tepat akan tergantung pada implementasi penjadwal sistem operasi).


Hyperthreading, di sisi lain, mengacu pada teknologi perangkat keras yang sangat spesifik yang dibuat oleh Intel, yang memungkinkan inti prosesor tunggal untuk interleave banyak thread eksekusi lebih efisien. Dengan kata lain, CPU dengan hyperthreading akan memberikan kinerja yang agak lebih besar dari CPU yang sebaliknya sama tetapi tanpa hyperthreading, karena CPU hyperthreaded akan dapat secara bersamaan menyeimbangkan dua (kadang-kadang lebih, tetapi hyperthreading biasanya 2- cara) utas eksekusi pada inti yang diberikan.

Namun, hyperthreading benar-benar lebih lambat daripada memiliki core fisik yang benar-benar terpisah, karena ada beberapa jenis operasi yang dapat mengganggu keuntungan kinerja dari hyperthreading, sementara ada lebih sedikit operasi yang dapat menyebabkan peristiwa seperti itu dengan core yang benar-benar terpisah.

Ambil contoh berikut, di mana "1 core" diasumsikan melakukan persis sama dalam semua contoh:

Contoh 1: 2 core, tidak ada hyperthreading.
Contoh 2: 4 core, tidak ada hyperthreading.
Contoh 3: 2 core dengan hyperthreading.
Contoh 4: 4 core dengan hyperthreading.

Dalam hal ini, Contoh 4 akan selalu menjadi yang tercepat. Contoh 2 kadang-kadang sekitar secepat Contoh 4, pada beban kerja yang sangat tidak cocok untuk mengambil keuntungan dari optimasi hyperthreading.

Contoh 3, di sisi lain, kadang-kadang, pada beban kerja di mana hyperthreading paling menguntungkan, hampir secepat Contoh 2, meskipun memiliki setengah inti fisik lebih banyak.

Contoh 1 tentu saja, akan menjadi yang paling lambat dari semua contoh, tetapi kadang-kadang mungkin sekitar secepat Contoh 3, ketika menjalankan beban kerja yang kurang cocok untuk hyperthreading.

Dalam tolok ukur dunia nyata dengan CPU Intel modern, kami biasanya menemukan bahwa hasil hyperthreading menghasilkan, secara umum, 20% hingga 40% peningkatan kinerja dibandingkan dengan tanpa hyperthreading (dengan case "no hyperthreading" diperbandingkan dengan menonaktifkan fitur hyperthreading di BIOS). Kadang-kadang akan ada beban kerja di mana penonaktifan hyperthreading menunjukkan keunggulan kinerja , tetapi beban kerja ini jarang terjadi dalam penggunaan aktual. Tetapi, jika saya memiliki pilihan antara 4 core dengan hyperthreading atau 8 core, dengan asumsi bahwa masing-masing core itu sendiri memiliki kinerja yang sama, saya akan memilih CPU 8 core setiap saat.

allquixotic
sumber
2
Tepatnya, multithreading dan multiprocessing bukan hal yang sama. Thread berbagi konteks eksekusi dengan proses yang terkait dengannya, sementara proses memiliki konteks eksekusi sendiri. Namun, untuk jawaban ini perbedaan ini tidak terlalu penting.
Tero Kilkanen
1
Teknologi Hyperthreading bukan "diciptakan oleh Intel"; untuk mainline x86 itu hanya nama merek dagang untuk multithreading simultan. Jika Alpha 21464 telah diproduksi, itu akan menjadi salah satu pengguna SMT terkemuka pertama. Intel memang menghasilkan penggunaan SMT yang dirilis pertama kali (mungkin tidak termasuk prosesor yang kurang dikenal) dengan beberapa Pentium 4, tetapi ide dasarnya bukanlah penemuan Intel.
Paul A. Clayton
2
Quibble: hyperthreading tidak sepenuhnya lebih lambat dari core yang terpisah. Satu dapat merancang (buatan) kasus di mana berbagi cache L1 adalah manfaat yang lebih besar daripada menggunakan sumber daya inti sepenuhnya. Kasus aneh lainnya mungkin terjadi ketika satu utas aktif terus-menerus dan yang lain secara singkat menangani peristiwa intermiten; membangun inti secara intermiten lebih mahal daripada membangun utas pada inti aktif. Untuk utas dengan ILP yang sangat rendah, jika pertikaian cache tidak menjadi masalah, maka efisiensi energi yang lebih besar menggunakan inti tunggal dapat memungkinkan turboboosting yang lebih besar (kinerja yang lebih baik).
Paul A. Clayton
3
Jawaban dapat diedit di SU, jadi jika Anda ingin memperbaikinya, silakan saja. Juga, perhatikan tingkat pengetahuan OP yang jelas; bahkan jawaban saya yang berdiri sendiri mungkin lebih teknis daripada yang mereka harapkan atau inginkan. Saya sengaja membahas beberapa detail demi kemudahan penjelasan. Saya ragu apakah OP akan merancang prosesor dalam waktu dekat dan sangat perlu mengetahui semua detail ini. Namun komentar yang menarik.
allquixotic
1
Pengeditan yang disarankan yang mengubah konten (mis., Bukan hanya perbaikan tata bahasa / kesalahan ketik atau pengubahan ulang untuk kejelasan) cenderung ditolak.
Paul A. Clayton
4

Multithreading adalah istilah untuk pemrosesan paralel pada tingkat sistem operasi. Prosesor tidak ada hubungannya dengan multithreading.

Hyperthreading adalah konsep Intel yang mengimplementasikan pemrosesan "simultan" dari banyak utas dalam inti prosesor tunggal. Sistem operasi melihat dua inti prosesor, meskipun hanya ada satu inti fisik.

Tero Kilkanen
sumber