Mengapa CPU dual-core saya diakui sebagai quad-core?

52

Prosesor saya adalah Intel Core i3-380m . Seperti yang Anda lihat, ini 2 inti dan 4 utas.

Meskipun, baik Ubuntu 11.04 dan Windows 7 tampaknya berpikir itu adalah CPU quad-core:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Kenapa ini? Apakah karena ada 2 utas per inti, yang membagi CPU dalam 4 unit pemrosesan?

serius
sumber

Jawaban:

43

Seperti yang disebutkan Anda memiliki sistem dual-core, dengan 2 utas per inti.

Ini dipasarkan oleh Intel sebagai hyperthreading dan telah dilakukan dengan berbagai cara selama bertahun-tahun oleh berbagai produsen yang berbeda.

Untuk menjelaskannya dalam bentuk yang paling sederhana, masing-masing inti CPU terdiri dari "inti" dan berbagai arsitektur di sekeliling inti yang membuat keadaan dan memproses informasi untuk setiap utas. Sebuah inti berulir tunggal memiliki arsitektur untuk menjaga nilai 1 informasi negara yang dimiliki pada satu waktu, sebuah inti yang diretas mengandung dua set informasi negara yang berbeda, memungkinkan dua proses terpisah untuk dijalankan sekaligus selama mereka membutuhkan bagian inti yang berbeda ( yang kemungkinan besar akan terjadi karena inti terdiri dari beberapa unit dari beberapa jenis unit pemrosesan yang berbeda).

Untuk menyederhanakan bagaimana CPU dilihat ke sistem, masing-masing hyperthread dilihat sebagai CPU yang terpisah, sehingga prosesor dual core, 2 thread per-core muncul sebagai prosesor quad core.

Mungkin juga bagi sistem operasi untuk menggunakan Core-parking (sebuah fitur pada prosesor Intel yang lebih baru) memungkinkan sistem operasi untuk menangguhkan setengah dari inti yang mengalami Hyper -read sehingga ketika kemampuan pemrosesan tambahan dari Hyper -reading tidak diperlukan maka kinerja single thread ditingkatkan karena inti tidak lagi membagikan cache itu di 2 utas dan sekarang dapat sepenuhnya mencurahkan cache inti untuk satu utas.

Mokubai
sumber
Terima kasih untuk penjelasannya. Jadi, dapatkah kita katakan di sini bahwa utas adalah untuk inti apa inti untuk prosesor?
seriousdev
2
Di satu sisi, ya. OS melihat prosesor, tahu berapa core yang ada pada prosesor itu dan pada gilirannya berapa banyak thread yang didukung masing-masing core, dari mana penggunaan CPU yang Anda lihat sekarang "per-thread" daripada "per core". Ini tidak cukup sederhana (seperti setiap thread tidak benar-benar muncul ke non-HyperThreading OS sadar sebagai inti CPU sepenuhnya matang) tapi itu adalah ide umum itu.
Mokubai
Link parkir inti @Mububai tidak berfungsi.
Biswapriyo
49

Alasannya adalah hyperthreading , yang didukung prosesor Anda. Hyperthreading bukan setara dengan prosesor tambahan, tetapi benar-benar dapat meningkatkan kinerja pada aplikasi multithreaded. Untuk setiap inti prosesor yang hadir secara fisik, sistem operasi menangani dua prosesor virtual, dan berbagi beban kerja di antara mereka jika memungkinkan.

Keltari
sumber
7
Apakah ini dikenal sebagai core fisik vs logis?
xdumaine
11
Ya, inti fisik adalah - yah ... fisik. Anda bisa menyentuhnya. Core yang dikoreksi tidak nyata, karenanya logis. Anda dapat memecah inti fisik menjadi inti logis melalui virtualisasi juga.
Keltari
3
@Keltari sebenarnya, ada bagian fisiknya ... Hyperthreading adalah komponen perangkat keras dalam inti CPU (dan hanya dapat dinonaktifkan pada tingkat perangkat keras). Lihat whitepaper Intel ini untuk detailnya. Pada dasarnya, ia berbagi sumber daya inti antara dua unit eksekusi fisik. Secara teknis, kedua core yang dilihat oleh OS di dalam core hyperthreaded adalah "logis", tidak ada yang fisik maupun logis.
Terobosan
1
benar, hyperthreading adalah bagian fisik dari prosesor, tetapi bukan inti fisik.
Keltari
1
Cara terbaik untuk memikirkan HT adalah "inti-dan-setengah" yang dibagikannya lebih banyak sumber daya dengan saudaranya daripada inti yang terpisah. Namun ia mampu mengeksekusi utas "sendiri" dan OS memperlakukannya sebagai unit eksekusi utas (yang Anda asosiasikan dengan inti).
crasic
12

Hal-hal jauh lebih kompleks daripada pada zaman satu instruksi CPU per satu siklus clock.

Sekarang ada saluran pipa untuk setiap instruksi yang terdiri dari sejumlah langkah. Saya sudah mendengar sebanyak 41, meskipun itu beberapa waktu lalu dan saya tidak tahu seperti apa pipa cpu saat ini. Saya tahu bahwa jika pipa cukup panjang, Anda dapat memulai instruksi baru di pipa sebelum instruksi terakhir selesai, kadang-kadang dalam siklus clock yang sama, sehingga inti tunggal Anda secara efektif melakukan dua hal sekaligus.

Tapi ada trik di sini. Anda tidak bisa hanya menggunakan ini untuk mempercepat kecepatan prosesor mengunyah instruksi dari program tertentu. Ada masalah kebenaran yang terlibat: instruksi berikutnya mungkin tergantung pada hasil instruksi sebelumnya yang belum ditentukan. Untuk memanfaatkan pipa panjang dengan aman , chip akan menghadirkan dua inti prosesor terpisah ke penjadwal sistem operasi, dan instruksi alternatif dikirim ke masing-masing inti sehingga dua instruksi ke "inti" yang sama tidak pernah ada dalam pipa pada saat yang bersamaan. Dengan cara ini kita dapat memastikan bahwa setiap instruksi yang dijalankan secara bersamaan tidak akan saling mengganggu. Ini disebut hyperthreading .

Perlu dicatat di sini bahwa meskipun HyperThreading secara signifikan dapat meningkatkan jumlah pekerjaan yang Anda dapatkan dari CPU Anda, itu sama sekali tidak memiliki banyak core fisik. Bergantung pada beban kerja Anda, itu mungkin berarti peningkatan minimal 15% atau sebanyak 40% peningkatan. Dalam beberapa keadaan, Anda bahkan mungkin ingin menonaktifkan fitur tersebut sehingga inti yang tersisa memiliki akses eksklusif penuh ke cache L1 / L2 untuk inti itu (ini kadang-kadang dilakukan dengan server database khusus).

Ketika chip Anda mengiklankan dirinya memiliki 2 core dengan 4 utas, itu berarti itu adalah prosesor dual core yang mendukung hyperthreading.

Joel Coehoorn
sumber
2

Lihatlah halaman intel ini - ada banyak animasi yang menunjukkan bagaimana hyperhreading mempercepat tugas Anda.

Ini Utilization of Processor Resourcesadalah animasi terbaik, lihat dan mereka klik tombol "maju".

woliveirajr
sumber
1

Kenapa ini? Apakah karena ada 2 utas per inti, yang membagi CPU dalam 4 unit pemrosesan?

Sederhananya, jawabannya adalah ya. Setiap inti cpu Anda dapat mendukung dua utas independen, jadi totalnya ada 4. Tapi itu tidak berarti ia memiliki kinerja yang sama dengan cpu single-threaded quad-core. praktis kinerja cpu ulir ganda dual-core lebih rendah daripada cpu single-threaded quad-core. Seperti AMD Phenom X4.

aminfar
sumber
Apa kamu tahu kenapa?
seriousdev
1
Alasannya adalah bahwa dalam inti berulir ganda sumber daya perangkat keras (seperti buffer pemesanan ulang) dibagi di antara dua utas, sedangkan dalam CPU tunggal berulir semua sumber daya didedikasikan untuk satu inti. Perlu disebutkan bahwa memiliki inti mulsa-ulir meningkatkan pemanfaatan dan throughput perangkat keras Anda, tetapi buruk untuk latensi. Ada banyak kompromi yang terlibat. Jadi kata "kinerja" benar-benar tidak jelas di sini. Bagi orang awam itu berarti latensi dari satu utas.
aminfar