Rumah / Aneka ragam / Dukungan untuk teknologi hyper threading. Teknologi Hyper-Threading dari Intel. Produktivitas tidak pernah cukup

Dukungan untuk teknologi hyper threading. Teknologi Hyper-Threading dari Intel. Produktivitas tidak pernah cukup

Pengguna yang setidaknya pernah mengonfigurasi BIOS mungkin telah memperhatikan bahwa ada parameter Intel Hyper Threading yang tidak dapat dipahami oleh banyak orang. Banyak yang tidak tahu apa teknologi ini dan untuk tujuan apa digunakan. Mari kita coba mencari tahu apa itu Hyper Threading dan bagaimana Anda dapat mengaktifkan penggunaan dukungan ini. Kami juga akan mencoba mencari tahu keuntungan apa yang diberikannya pada komputer. pengaturan ini. Pada prinsipnya, tidak ada yang sulit untuk dipahami di sini.

Intel Hyper Threading: apa itu?
Jika Anda tidak masuk jauh ke dalam hutan terminologi komputer, tetapi memasukkannya ke dalam bahasa yang sederhana, maka teknologi ini dirancang untuk meningkatkan aliran perintah yang diproses secara bersamaan oleh CPU. Chip prosesor modern, sebagai suatu peraturan, hanya menggunakan 70% dari kemampuan komputasi yang tersedia. Sisanya, bisa dikatakan, sebagai cadangan. Untuk pemrosesan aliran data, dalam banyak kasus hanya satu utas yang digunakan, meskipun faktanya sistem menggunakan prosesor multi-inti.

Prinsip dasar kerja
Untuk meningkatkan kemampuan prosesor pusat, teknologi Hyper Threading khusus dikembangkan. Teknologi ini memudahkan untuk membagi satu aliran perintah menjadi dua. Dimungkinkan juga untuk menambahkan aliran kedua ke aliran yang sudah ada. Hanya aliran seperti itu yang virtual dan tidak berfungsi pada tingkat fisik. Pendekatan ini memungkinkan Anda untuk meningkatkan kinerja prosesor secara signifikan. Seluruh sistem, karenanya, mulai bekerja lebih cepat. Peningkatan kinerja CPU dapat berfluktuasi cukup banyak. Ini akan dibahas secara terpisah. Namun, para pengembang teknologi Hyper Threading sendiri mengklaim bahwa itu kurang dari inti yang lengkap. Dalam beberapa kasus, penggunaan teknologi ini sepenuhnya dibenarkan. Jika Anda mengetahui esensi dari prosesor Hyper Threading, maka hasilnya tidak akan lama datang.

Referensi sejarah
Mari selami sedikit sejarah perkembangan ini. Dukungan untuk Hyper Threading pertama kali muncul hanya di prosesor Intel Pentium 4. Kemudian, penerapan teknologi ini dilanjutkan di seri Intel Core iX (X singkatan dari seri prosesor di sini). Perlu dicatat bahwa untuk beberapa alasan itu tidak ada di jajaran chip prosesor Core 2. Benar, maka peningkatan produktivitas agak lemah: di suatu tempat di tingkat 15-20%. Ini menunjukkan bahwa prosesor tidak memiliki kekuatan pemrosesan yang diperlukan, dan teknologi yang dibuat praktis lebih maju dari masanya. Saat ini, dukungan untuk teknologi Hyper Threading sudah tersedia di hampir semua chip modern. Untuk meningkatkan kekuatan prosesor pusat, proses itu sendiri hanya menggunakan 5% dari permukaan kristal, sambil meninggalkan ruang untuk memproses perintah dan data.

Pertanyaan tentang konflik dan kinerja
Semua ini tentu bagus, tetapi dalam beberapa kasus, saat memproses data, mungkin ada perlambatan dalam pekerjaan. Ini sebagian besar disebabkan oleh apa yang disebut modul prediksi cabang dan ukuran cache yang tidak mencukupi ketika terus-menerus dimuat ulang. Jika kita berbicara tentang modul utama, maka di kasus ini situasi berkembang sedemikian rupa sehingga dalam beberapa kasus utas pertama mungkin memerlukan data dari utas kedua, yang mungkin tidak diproses pada saat itu atau sedang dalam antrian untuk diproses. Juga, yang tidak kalah umum adalah situasi ketika inti CPU memiliki beban yang sangat serius, dan modul utama, meskipun demikian, terus mengirim data ke sana. Beberapa program dan aplikasi, seperti game online yang membutuhkan banyak sumber daya, dapat menjadi sangat lambat hanya karena kurang dioptimalkan untuk penggunaan teknologi Hyper Threading. Apa yang terjadi dengan game? Sistem komputer pengguna, pada bagiannya, mencoba mengoptimalkan aliran data dari aplikasi ke server. Masalahnya adalah gim tidak tahu cara mendistribusikan aliran data secara mandiri, membuang semuanya dalam satu tumpukan. Pada umumnya, itu mungkin tidak dirancang untuk ini. Terkadang dalam prosesor dual-core, peningkatan kinerja secara signifikan lebih tinggi daripada di prosesor 4-core. Mereka hanya tidak memiliki kekuatan pemrosesan.

Bagaimana cara mengaktifkan Hyper Threading di BIOS?
Kami telah mengetahui sedikit tentang apa itu teknologi Hyper Threading dan berkenalan dengan sejarah perkembangannya. Kami hampir memahami apa itu teknologi Hyper Threading. Bagaimana cara mengaktifkan teknologi ini untuk digunakan di prosesor? Di sini semuanya dilakukan dengan cukup sederhana. Anda harus menggunakan subsistem manajemen BIOS. Subsistem dimasukkan menggunakan tombol Del, F1, F2, F3, F8, F12, F2+Del, dll. Jika Anda menggunakan laptop Sony Vaio, mereka memiliki input khusus saat menggunakan kunci ASSIST khusus. Dalam pengaturan BIOS, jika prosesor yang Anda gunakan mendukung teknologi Hyper Threading, harus ada jalur pengaturan khusus. Dalam kebanyakan kasus, ini terlihat seperti Teknologi Hyper Threading, dan terkadang terlihat seperti Fungsi. Bergantung pada pengembang subsistem dan versi BIOS, pengaturan parameter ini dapat dimuat di menu utama atau di pengaturan lanjutan. Untuk mengaktifkan teknologi ini, Anda harus masuk ke menu opsi dan mengatur nilainya ke Diaktifkan. Setelah itu, Anda perlu menyimpan perubahan yang dibuat dan mem-boot ulang sistem.

Mengapa Hyper Threading berguna?
Sebagai penutup, saya ingin berbicara tentang manfaat penggunaan teknologi Hyper Threading. Untuk apa semua ini? Mengapa perlu meningkatkan daya prosesor saat memproses informasi? Para pengguna yang bekerja dengan aplikasi dan program intensif sumber daya tidak perlu menjelaskan apa pun. Banyak orang mungkin tahu bahwa paket perangkat lunak desain grafis, matematika, membutuhkan banyak sumber daya sistem dalam proses kerjanya. Karena itu, seluruh sistem dimuat begitu banyak sehingga mulai sangat lambat. Untuk mencegah hal ini terjadi, disarankan untuk mengaktifkan dukungan Hyper Threading.

Banyak prosesor Intel menyertakan modul dengan Dukungan hiper-Teknologi Threading, yang sesuai dengan ide pengembang, akan membantu meningkatkan kinerja chip dan mempercepat PC secara keseluruhan. Apa spesifikasi solusi ini dari perusahaan Amerika? Bagaimana Anda bisa memanfaatkan Hyper-Threading?

Dasar-dasar Teknologi

Mari kita lihat detail utama tentang Hyper-Threading. Apa teknologi ini? Ini dikembangkan oleh Intel dan pertama kali diperkenalkan ke publik pada tahun 2001. Tujuan pembuatannya adalah untuk meningkatkan kinerja server. Prinsip utama yang diterapkan dalam Hyper-Threading adalah distribusi perhitungan prosesor ke beberapa utas. Selain itu, ini dimungkinkan bahkan jika hanya satu inti yang dipasang pada jenis sirkuit mikro yang sesuai (pada gilirannya, jika ada 2 atau lebih, dan utas dalam prosesor sudah didistribusikan, teknologi berhasil melengkapi mekanisme ini).

Memastikan pengoperasian chip PC utama dalam beberapa utas dilakukan dengan membuat salinan status arsitektur selama perhitungan. Dalam hal ini, set sumber daya yang sama pada chip digunakan. Jika aplikasi menggunakan kemampuan yang sesuai, maka operasi yang signifikan secara praktis dilakukan jauh lebih cepat. Penting juga bahwa teknologi yang bersangkutan didukung oleh sistem input / output komputer - BIOS.

Mengaktifkan Hyper-Threading

Jika prosesor yang terpasang di PC mendukung standar yang sesuai, maka biasanya diaktifkan secara otomatis. Tetapi dalam beberapa kasus, Anda harus melakukan tindakan yang diperlukan secara manual agar teknologi Hyper-Threading berfungsi. Bagaimana cara mengaktifkannya? Sangat sederhana.

Anda harus masuk ke antarmuka BIOS utama. Untuk melakukan ini, di awal boot komputer, Anda perlu menekan DEL, terkadang - F2, F10, lebih jarang - tombol lain, tetapi yang diinginkan selalu muncul di salah satu baris teks yang ditampilkan di layar segera setelahnya menyalakan PC. Di antarmuka BIOS, Anda perlu menemukan item Hyper-Threading: dalam versi sistem I / O yang mendukungnya, biasanya terletak di tempat yang menonjol. Setelah memilih opsi yang sesuai, Anda harus menekan Enter dan mengaktifkannya, menandainya sebagai Diaktifkan. Jika mode ini sudah diatur, maka Teknologi Hyper-Threading berfungsi. Anda dapat menggunakan semua kelebihannya. Setelah mengaktifkan teknologi di pengaturan, Anda harus menyimpan semua entri di BIOS dengan memilih Save and Exit Setup. Setelah itu, komputer akan restart dalam mode ketika prosesor bekerja dengan dukungan Hyper-Theading. Demikian pula, Hyper-Threading dinonaktifkan. Untuk melakukan ini, pilih opsi lain di item yang sesuai - Dinonaktifkan dan simpan pengaturan.

Setelah mempelajari cara mengaktifkan Hyper-Threading dan menonaktifkan teknologi ini, mari kita lihat lebih dekat fitur-fiturnya.

CPU dengan Dukungan Hyper Threading

Prosesor pertama yang menerapkan konsep perusahaan, menurut beberapa sumber, adalah Intel Xeon MP, juga dikenal sebagai Foster MP. Chip ini serupa dalam sejumlah komponen arsitektural dengan Pentium 4, yang juga kemudian mengimplementasikan teknologi tersebut. Selanjutnya, fitur komputasi multi-utas diimplementasikan pada prosesor server Xeon dengan inti Prestonia.

Jika kita berbicara tentang prevalensi Hyper-Threading saat ini - "pro" mana yang mendukungnya? Di antara chip paling populer dari jenis ini adalah yang termasuk dalam keluarga Core dan Xeon. Ada juga informasi bahwa algoritma serupa diimplementasikan dalam prosesor seperti Itanium dan Atom.

Setelah mempelajari informasi dasar tentang Hyper-Threading, prosesor dengan dukungannya, mari kita lihat fakta paling luar biasa tentang sejarah perkembangan teknologi.

Sejarah perkembangan

Seperti yang kami sebutkan di atas, Intel menunjukkan konsep tersebut kepada publik pada tahun 2001. Tetapi langkah pertama dalam penciptaan teknologi dilakukan pada awal 90-an. Insinyur perusahaan Amerika memperhatikan bahwa sumber daya prosesor PC tidak sepenuhnya digunakan saat melakukan sejumlah operasi.

Seperti yang dihitung oleh para ahli Intel, selama pengguna bekerja pada PC, sirkuit mikro tidak digunakan secara aktif untuk interval yang signifikan - hampir sebagian besar waktu - sekitar 30%. Pendapat para ahli mengenai angka ini sangat berbeda - seseorang menganggapnya jelas diremehkan, yang lain sepenuhnya setuju dengan tesis pengembang Amerika.

Namun, sebagian besar spesialis TI setuju bahwa meskipun tidak 70% dari kapasitas prosesor menganggur, tetapi jumlah yang sangat signifikan.

Tugas utama pengembang

Intel telah memutuskan untuk memperbaiki keadaan ini melalui pendekatan kualitatif baru untuk memastikan efisiensi chip PC utama. Diusulkan untuk membuat teknologi yang akan berkontribusi pada penggunaan kemampuan prosesor yang lebih aktif. Pada tahun 1996, spesialis Intel memulai pengembangan praktisnya.

Menurut konsep perusahaan Amerika, prosesor, yang memproses data dari satu program, dapat mengarahkan sumber daya yang menganggur untuk bekerja dengan aplikasi lain (atau komponen dari yang sekarang, tetapi memiliki struktur yang berbeda dan membutuhkan penggunaan sumber daya tambahan). Algoritme yang sesuai juga mengasumsikan interaksi yang efektif dengan komponen perangkat keras PC lainnya - RAM, chipset, dan program.

Intel berhasil memecahkan masalah tersebut. Awalnya, teknologi itu disebut Willamette. Pada tahun 1999, itu diperkenalkan ke dalam arsitektur beberapa prosesor, dan pengujiannya dimulai. Segera teknologi menerima nama modernnya - Hyper-Threading. Sulit untuk mengatakan apa sebenarnya itu - rebranding sederhana atau penyesuaian mendasar pada platform. Kita sudah mengetahui fakta lebih lanjut mengenai kemunculan teknologi tersebut di depan umum dan implementasinya di berbagai model prosesor Intel. Di antara nama pengembangan yang umum saat ini adalah Teknologi Hyper-Threading.

Aspek kompatibilitas dengan teknologi

Seberapa baik dukungan untuk teknologi Hyper-Threading diimplementasikan dalam sistem operasi? Dapat dicatat bahwa jika kita berbicara tentang modern Versi Windows, maka tidak akan ada masalah bagi pengguna untuk memanfaatkan sepenuhnya keunggulan Teknologi Intel Hyper-Threading. Tentu saja, juga sangat penting bahwa sistem I / O mendukung teknologi - kita membicarakannya di atas.

Faktor perangkat lunak dan perangkat keras

Mengenai versi OS yang lebih lama - Windows 98, NT dan XP yang relatif ketinggalan jaman, kondisi yang diperlukan untuk kompatibilitas dengan Hyper-Threading adalah dukungan ACPI. Jika tidak diimplementasikan di OS, maka tidak semua aliran komputasi yang dibentuk oleh modul terkait akan dikenali oleh komputer. Perhatikan bahwa Windows XP secara keseluruhan memberikan manfaat dari teknologi ini. Hal ini juga sangat diinginkan bahwa algoritma multithreading diimplementasikan dalam aplikasi yang digunakan oleh pemilik PC.

Terkadang Anda mungkin memerlukan PC - jika Anda menginstal prosesor dengan dukungan Hyper-Threading di dalamnya, bukan prosesor yang awalnya ada di dalamnya dan tidak kompatibel dengan teknologi tersebut. Namun, seperti halnya sistem operasi, tidak akan ada masalah khusus jika pengguna memiliki PC modern atau setidaknya komponen perangkat keras yang sesuai dengan prosesor Hyper Threading pertama, seperti yang kami sebutkan di atas, diimplementasikan di lini Core, dan diadaptasi untuk itu chipset pada motherboard sepenuhnya mendukung fungsi chip yang sesuai.

Kriteria Percepatan

Jika komputer di tingkat komponen perangkat keras dan perangkat lunak tidak kompatibel dengan Hyper-Threading, maka teknologi ini, secara teori, bahkan dapat memperlambat kerjanya. Keadaan ini telah menyebabkan beberapa profesional TI meragukan prospek solusi dari Intel. Mereka memutuskan bahwa itu bukan lompatan teknologi, tetapi langkah pemasaran yang mendasari konsep Hyper Threading, yang, karena arsitekturnya, tidak mampu mempercepat PC secara signifikan. Tetapi keraguan para kritikus dengan cepat dihilangkan oleh para insinyur Intel.

Jadi, syarat dasar agar teknologi berhasil digunakan:

Dukungan untuk Hyper-Threading oleh sistem I / O;

Kompatibilitas motherboard dengan prosesor dari jenis yang sesuai;

Dukungan teknologi oleh sistem operasi dan aplikasi khusus yang berjalan di atasnya.

Jika tidak ada masalah khusus pada dua poin pertama, maka dalam hal kompatibilitas program dengan Hyper-Threading, mungkin masih ada beberapa overlay. Tetapi dapat dicatat bahwa jika suatu aplikasi mendukung, misalnya, bekerja dengan prosesor dual-core, maka itu akan kompatibel, hampir dijamin, dengan teknologi dari Intel.

Setidaknya ada penelitian yang mengkonfirmasi peningkatan kinerja program yang disesuaikan dengan sirkuit mikro dual-core sekitar 15-18% jika modul Intel Hyper Threading bekerja di prosesor. Kami sudah tahu cara menonaktifkannya (jika pengguna ragu tentang kelayakan menggunakan teknologi). Tapi mungkin ada sangat sedikit alasan nyata untuk penampilan mereka.

Kegunaan Praktis dari Hyper-Threading

Apakah teknologi yang dimaksud memberikan dampak nyata pada Intel? Ada pendapat yang berbeda tentang masalah ini. Tetapi banyak orang mencatat bahwa teknologi Hyper-Threading telah menjadi sangat populer sehingga solusi ini menjadi sangat diperlukan bagi banyak produsen sistem server, dan juga diterima secara positif oleh pengguna PC biasa.

Pemrosesan data perangkat keras

Keuntungan utama dari teknologi ini adalah diimplementasikan dalam format perangkat keras. Artinya, bagian utama dari perhitungan akan dilakukan di dalam prosesor pada modul khusus, dan bukan dalam bentuk algoritma perangkat lunak yang ditransmisikan ke tingkat inti utama dari sirkuit mikro - yang akan menyiratkan penurunan kinerja keseluruhan komputer. Secara umum, menurut pakar TI, para insinyur Intel berhasil memecahkan masalah yang mereka identifikasi di awal pengembangan teknologi - untuk membuat fungsi prosesor lebih efisien. Memang, seperti yang ditunjukkan oleh tes, ketika menyelesaikan banyak tugas yang secara praktis signifikan bagi pengguna, penggunaan Hyper-Threading memungkinkan untuk mempercepat pekerjaan secara signifikan.

Dapat dicatat bahwa di antara 4 sirkuit mikro yang dilengkapi dengan modul pendukung untuk teknologi yang dipertimbangkan bekerja jauh lebih efisien daripada modifikasi pertama. Ini sebagian besar dinyatakan dalam kemampuan PC untuk berfungsi dalam mode multitasking nyata - ketika beberapa jenis Aplikasi Windows, dan sangat tidak diinginkan bahwa, karena peningkatan konsumsi sumber daya sistem oleh salah satu dari mereka, kecepatan yang lain akan berkurang.

Solusi simultan dari tugas yang berbeda

Dengan demikian, prosesor dengan dukungan Hyper-Threading lebih baik beradaptasi daripada sirkuit mikro yang tidak kompatibel dengannya, untuk meluncurkan secara bersamaan, misalnya, browser, memutar musik, dan bekerja dengan dokumen. Tentu saja, semua keuntungan ini dirasakan oleh pengguna dalam praktiknya hanya jika komponen perangkat lunak dan perangkat keras PC cukup kompatibel dengan mode operasi ini.

Perkembangan serupa

Hyper-Threading bukan satu-satunya teknologi yang dirancang untuk meningkatkan kinerja PC melalui komputasi multi-utas. Dia memiliki analog.

Misalnya, prosesor POWER5 yang dirilis oleh IBM juga mendukung multithreading. Artinya, masing-masing (total, 2 elemen yang sesuai dipasang di dalamnya) dapat melakukan tugas dalam 2 utas. Dengan demikian, sirkuit mikro memproses 4 aliran perhitungan secara bersamaan.

AMD juga memiliki hasil yang sangat baik di bidang konsep multithreading. Sehingga diketahui bahwa arsitektur Bulldozer menggunakan algoritma yang mirip dengan Hyper-Threading. Fitur solusi AMD adalah bahwa setiap utas memproses blok prosesor yang terpisah. Ketika tingkat kedua tetap umum. Konsep serupa diimplementasikan dalam arsitektur Bobcat yang dikembangkan oleh AMD, yang diadaptasi untuk laptop dan PC kecil.

Tentu saja, analog langsung dari konsep dari AMD, IBM dan Intel dapat dianggap sangat kondisional. Serta pendekatan untuk merancang arsitektur prosesor secara umum. Tetapi prinsip-prinsip yang diterapkan dalam masing-masing teknologi dapat dianggap sangat mirip, dan tujuan yang ditetapkan oleh pengembang dalam hal meningkatkan efisiensi fungsi sirkuit mikro pada dasarnya sangat dekat, jika tidak identik.

Ini adalah fakta kunci mengenai teknologi paling menarik dari Intel. Apa itu, bagaimana mengaktifkan Hyper-Threading atau, sebaliknya, menonaktifkannya, telah kami tentukan. Intinya mungkin dalam penggunaan praktis kelebihannya, yang dapat digunakan dengan memastikan bahwa PC dalam komponen perangkat keras dan perangkat lunak mendukung teknologi tersebut.

Hyper Threading (hyper-threading, 'hyper-threading', hyper threading - rus.) - teknologi yang dikembangkan oleh perusahaan Intel, yang memungkinkan inti prosesor untuk mengeksekusi lebih banyak aliran data dari satu (biasanya dua). Karena ditemukan bahwa prosesor konvensional di sebagian besar tugas menggunakan tidak lebih dari 70% dari semua daya komputasi, diputuskan untuk menggunakan teknologi yang memungkinkan, ketika unit komputasi tertentu menganggur, untuk memuatnya dengan pekerjaan dengan utas lain. Ini memungkinkan Anda untuk meningkatkan kinerja kernel dari 10 hingga 80% tergantung pada tugas.

Lihat cara kerja Hyper-Threading .

Misalkan prosesor melakukan perhitungan sederhana dan pada saat yang sama blok instruksi menganggur dan SIMD ekstensi.

Modul pengalamatan mendeteksi ini dan mengirimkan data ke sana untuk perhitungan lebih lanjut. Jika datanya spesifik, maka blok ini akan mengeksekusinya lebih lambat, tetapi datanya tidak akan menganggur. Atau mereka akan memprosesnya terlebih dahulu, untuk diproses lebih lanjut dengan cepat oleh blok yang sesuai. Ini memberikan keuntungan kinerja tambahan.

Secara alami, utas virtual tidak mencapai inti penuh, tetapi ini memungkinkan Anda untuk mencapai hampir 100% efisiensi daya komputasi, memuat hampir seluruh prosesor dengan pekerjaan, tidak membiarkannya menganggur. Dengan semua ini, untuk menerapkan teknologi HT hanya sekitar 5% ruang mati tambahan, dan kinerja terkadang dapat ditambahkan ke 50% . Area tambahan ini mencakup blok register dan prediksi cabang tambahan, yang menghitung aliran di mana daya komputasi dapat digunakan pada saat tertentu dan mengirim data dari blok alamat tambahan di sana.

Untuk pertama kalinya, teknologi muncul di prosesor Pentium 4, tetapi tidak ada peningkatan kinerja yang besar, karena prosesor itu sendiri tidak memiliki daya komputasi yang tinggi. Pertumbuhannya adalah yang terbaik 15-20% , dan dalam banyak tugas, prosesor bekerja jauh lebih lambat daripada tanpa HT.

Pelan - pelan prosesor karena teknologi Hyper Threading, terjadi jika:

  • Cache tidak cukup untuk semua yang diberikan dan reboot secara siklis, memperlambat prosesor.
  • Data tidak dapat diproses dengan benar oleh prediktor cabang. Terjadi terutama karena kurangnya optimasi untuk perangkat lunak tertentu atau dukungan dari sistem operasi.
  • Bisa juga terjadi karena ketergantungan data, ketika, misalnya, utas pertama membutuhkan data langsung dari utas kedua, tetapi belum siap, atau sedang menunggu antrean untuk utas lainnya. Atau data siklik memerlukan blok tertentu untuk pemrosesan cepat, dan blok tersebut dimuat dengan data lain. Ada banyak variasi ketergantungan data.
  • Jika inti sudah banyak dimuat, dan modul prediksi cabang "tidak cukup pintar" masih mengirimkan data yang memperlambat prosesor (relevan untuk Pentium 4).

Setelah Pentium 4, Intel mulai menggunakan teknologi hanya dari inti i7 generasi pertama, melewatkan seri 2 .

Kekuatan pemrosesan prosesor telah menjadi cukup untuk implementasi penuh hyperthreading tanpa banyak kerugian, bahkan untuk aplikasi yang tidak dioptimalkan. Nanti, Hyper Threading muncul pada prosesor kelas menengah dan bahkan anggaran dan portabel. Digunakan pada semua seri inti saya (i3; i5; i7) dan pada prosesor seluler atom(tidak semuanya). Menariknya, prosesor dual-core dengan HT, menerima peningkatan kinerja yang lebih besar daripada quad-core dari menggunakan Hyper Threading, berdiri di atas 75% empat nuklir penuh.

Di mana HyperThreading berguna?

Ini akan berguna untuk digunakan bersama dengan program profesional, grafik, analitis, matematika dan ilmiah, editor video dan audio, pengarsipan ( Photoshop, Corel Draw, Maya, 3D Max, WinRar, Sony Vegas &dll). Semua program yang menggunakan banyak perhitungan, HT pasti akan bermanfaat. Syukurlah, di 90% kasus, program tersebut dioptimalkan dengan baik untuk penggunaannya.

hyperthreading sangat diperlukan untuk sistem server. Sebenarnya untuk ceruk ini dikembangkan sebagian. Terimakasih untuk HT, Anda dapat meningkatkan pengembalian prosesor secara signifikan saat ada banyak tugas. Setiap utas akan diturunkan setengahnya, yang memiliki efek menguntungkan pada pengalamatan data dan prediksi cabang.

Banyak permainan komputer , berhubungan negatif dengan keberadaan Hyper Threading, yang mengurangi jumlah bingkai per detik. Hal ini disebabkan kurangnya optimasi untuk Hyper Threading dari sisi permainan. Satu optimasi pada bagian dari sistem operasi tidak selalu cukup, terutama ketika bekerja dengan data yang tidak biasa, heterogen dan kompleks.

Pada motherboard yang mendukung HT, Anda selalu dapat menonaktifkan teknologi hyperthreading.

20 Januari 2015 pukul 19:43

Lebih lanjut tentang Hyper-Threading

  • pengujian sistem TI,
  • Pemrograman

Ada saat ketika perlu untuk mengevaluasi kinerja memori dalam konteks teknologi Hyper-threading. Kami sampai pada kesimpulan bahwa pengaruhnya tidak selalu positif. Ketika kuantum waktu luang muncul, ada keinginan untuk melanjutkan penelitian dan mempertimbangkan proses yang sedang berlangsung dengan akurasi siklus dan bit mesin, menggunakan perangkat lunak pengembangan sendiri.

Platform yang diteliti

Objek percobaan- laptop asus N750JK dengan prosesor Intel Core i7-4700HQ. Kecepatan clock adalah 2.4GHz, didorong oleh mode Intel Turbo Boost hingga 3.4GHz. 16 gigabyte terpasang memori akses acak DDR3-1600 (PC3-12800) beroperasi dalam mode saluran ganda. Sistem operasi - Microsoft Windows 8.1 64 bit.

Gbr.1 Konfigurasi platform yang dipelajari.

Prosesor platform yang diteliti berisi 4 inti, yang, ketika teknologi Hyper-Threading diaktifkan, menyediakan dukungan perangkat keras untuk 8 utas atau prosesor logis. Firmware platform meneruskan informasi ini ke sistem operasi melalui tabel ACPI MADT (Multiple APIC Description Table). Karena platform hanya berisi satu pengontrol RAM, tidak ada SRAT (System Resource Affinity Table) yang menyatakan kedekatan inti prosesor dengan pengontrol memori. Jelas, laptop yang dimaksud bukan platform NUMA, tapi sistem operasi, untuk tujuan penyatuan, menganggapnya sebagai sistem NUMA dengan satu domain, seperti yang ditunjukkan oleh baris NUMA Nodes = 1. Fakta yang mendasar untuk percobaan kami adalah bahwa cache data tingkat pertama memiliki ukuran 32 kilobyte untuk masing-masing dari empat inti. Dua prosesor logis yang berbagi inti yang sama berbagi cache L1 dan L2.

Operasi yang diselidiki

Kami akan menyelidiki ketergantungan kecepatan membaca blok data pada ukurannya. Untuk melakukan ini, kami akan memilih metode yang paling produktif, yaitu membaca operan 256-bit menggunakan instruksi VMOVAPD AVX. Pada grafik, sumbu X menunjukkan ukuran blok, dan sumbu Y menunjukkan kecepatan membaca. Di sekitar titik X, sesuai dengan ukuran cache L1, kami berharap untuk melihat titik belok, karena kinerja akan turun setelah blok yang diproses keluar dari cache. Dalam pengujian kami, dalam kasus multithreading, masing-masing dari 16 utas yang dimulai bekerja dengan rentang alamat yang terpisah. Untuk mengontrol teknologi Hyper-Threading dalam aplikasi, setiap utas menggunakan fungsi API SetThreadAffinityMask, yang menetapkan topeng di mana setiap prosesor logis sesuai dengan satu bit. Nilai tunggal bit memungkinkan penggunaan prosesor yang ditentukan oleh utas yang ditentukan, nilai nol melarangnya. Untuk 8 prosesor logis dari platform yang dipelajari, mask 11111111b memungkinkan menggunakan semua prosesor (Hyper-Threading diaktifkan), mask 01010101b memungkinkan menggunakan satu prosesor logis di setiap inti (Hyper-Threading dinonaktifkan).

Singkatan berikut digunakan pada grafik:

MBPS (Megabyte per Detik)blokir kecepatan baca dalam megabyte per detik;

CPI (Jam per Instruksi)jumlah siklus per instruksi;

TSC (Penghitung Cap Waktu)penghitung siklus prosesor.

Catatan: Kecepatan clock register TSC mungkin tidak sesuai dengan kecepatan clock prosesor saat dijalankan dalam mode Turbo Boost. Ini harus diperhitungkan ketika menafsirkan hasil.

Di sisi kanan grafik, dump heksadesimal dari instruksi yang membentuk tubuh siklus operasi target yang dilakukan di setiap utas program, atau 128 byte pertama dari kode ini, divisualisasikan.

Pengalaman nomor 1. Satu utas



Gbr.2 Membaca dalam satu utas

Kecepatan maksimum adalah 213563 megabyte per detik. Titik belok terjadi pada ukuran blok sekitar 32 kilobyte.

Pengalaman nomor 2. 16 utas pada 4 prosesor, Hyper-Threading dinonaktifkan



Gbr.3 Membaca dalam enam belas utas. Jumlah prosesor logis yang digunakan adalah empat

Hyper-threading dinonaktifkan. Kecepatan maksimumnya adalah 797598 megabyte per detik. Titik belok terjadi pada ukuran blok sekitar 32 kilobyte. Seperti yang diharapkan, dibandingkan dengan membaca dalam satu utas, kecepatannya meningkat sekitar 4 kali lipat, dalam hal jumlah inti yang berfungsi.

Pengalaman nomor 3. 16 utas pada 8 prosesor, Hyper-Threading diaktifkan



Gbr.4 Membaca dalam enam belas utas. Jumlah prosesor logis yang digunakan adalah delapan

Hyper-threading diaktifkan. Kecepatan maksimum 800722 megabyte per detik, sebagai hasil dari penyertaan Hyper-Threading, hampir tidak meningkat. Minus besar adalah bahwa titik belok terjadi pada ukuran blok sekitar 16 kilobyte. Mengaktifkan Hyper-Threading sedikit meningkatkan kecepatan maksimum, tetapi penurunan kecepatan sekarang terjadi pada setengah ukuran blok - sekitar 16 kilobyte, sehingga kecepatan rata-rata telah turun secara signifikan. Ini tidak mengherankan, setiap inti memiliki cache L1 sendiri, sedangkan prosesor logis dalam inti yang sama membaginya.

temuan

Skala operasi yang diselidiki cukup baik pada prosesor multi-core. Alasannya adalah bahwa masing-masing inti berisi memori cache sendiri dari tingkat pertama dan kedua, ukuran blok target sebanding dengan ukuran memori cache, dan masing-masing utas bekerja dengan rentang alamatnya sendiri. Untuk tujuan akademis, kami menciptakan kondisi seperti itu dalam pengujian sintetis, menyadari bahwa aplikasi nyata biasanya jauh dari optimalisasi ideal. Tetapi dimasukkannya Hyper-Threading, bahkan dalam kondisi ini, memiliki efek negatif, dengan sedikit peningkatan kecepatan puncak, ada kerugian yang signifikan dalam kecepatan pemrosesan blok, yang ukurannya berkisar antara 16 hingga 32 kilobyte.

Kami menulis bahwa penggunaan sistem Xeon prosesor tunggal tidak masuk akal, karena dengan harga yang lebih tinggi, kinerjanya akan sama dengan Pentium 4 dengan frekuensi yang sama. Sekarang, setelah pemeriksaan lebih dekat, pernyataan ini mungkin harus sedikit diubah. Teknologi Hyper-Threading yang diimplementasikan pada Intel Xeon dengan inti Prestonia benar-benar berfungsi dan memberikan efek yang cukup nyata. Meskipun ada juga banyak pertanyaan saat menggunakannya ...

Berikan kinerja

"Lebih cepat, bahkan lebih cepat ...". Perlombaan untuk kinerja telah berlangsung selama bertahun-tahun, dan kadang-kadang bahkan sulit untuk mengatakan komponen komputer mana yang berakselerasi lebih cepat. Untuk ini, semakin banyak cara baru ditemukan, dan semakin jauh, semakin banyak tenaga terampil dan otak berkualitas tinggi diinvestasikan dalam proses seperti longsoran salju ini.

Peningkatan kinerja yang konstan, tentu saja, diperlukan. Paling tidak, ini adalah bisnis yang menguntungkan, dan selalu ada cara yang bagus untuk mendorong pengguna meningkatkan "CPU berperforma super" kemarin ke "bahkan lebih super..." besok. Misalnya, pengenalan ucapan simultan dan terjemahan simultan ke bahasa lain - bukankah ini impian semua orang? Atau permainan realistis yang luar biasa dengan kualitas hampir "sine" (benar-benar menyerap perhatian dan terkadang menyebabkan perubahan serius dalam jiwa) - bukankah ini keinginan banyak pemain, tua dan muda?

Tapi mari kita tinggalkan aspek pemasaran dalam hal ini, dengan fokus pada aspek teknis. Selain itu, tidak semuanya begitu suram: ada tugas mendesak (aplikasi server, perhitungan ilmiah, pemodelan, dll.), di mana semuanya lebih kinerja tinggi, khususnya unit pemrosesan pusat, sangat diperlukan.

Lantas, apa saja cara untuk meningkatkan kinerja mereka?

Peningkatan jam. Bisa lebih "ditipiskan" proses teknologi dan meningkatkan frekuensi. Tapi, seperti yang Anda tahu, ini tidak mudah dan penuh dengan segala macam efek samping, seperti masalah pembuangan panas.

Meningkatkan sumber daya prosesor- misalnya, menambah volume cache, menambahkan blok baru (Unit Eksekusi). Semua ini memerlukan peningkatan jumlah transistor, kompleksitas prosesor, peningkatan area kristal, dan, akibatnya, biaya.

Selain itu, dua metode sebelumnya memberikan, sebagai suatu peraturan, tidak berarti peningkatan linier dalam produktivitas. Hal ini diketahui dengan baik dalam contoh Pentium 4: kesalahan dalam prediksi cabang dan interupsi menyebabkan reset dari pipa yang panjang, yang sangat mempengaruhi kinerja secara keseluruhan.

multiproses. Menginstal banyak CPU dan mendistribusikan pekerjaan di antara mereka seringkali cukup efisien. Tetapi pendekatan ini tidak terlalu murah - setiap prosesor tambahan meningkatkan biaya sistem, dan motherboard ganda jauh lebih mahal daripada yang biasa (belum lagi motherboard dengan dukungan untuk empat atau lebih CPU). Selain itu, tidak semua aplikasi mendapat manfaat dari multiprosesing yang cukup untuk membenarkan biaya.

Selain multiprosesor "murni", ada beberapa opsi "perantara" yang memungkinkan Anda mempercepat eksekusi aplikasi:

Multiprosesor Chip (CMP)- dua inti prosesor secara fisik terletak pada chip yang sama, menggunakan cache umum atau terpisah. Secara alami, ukuran kristal ternyata cukup besar, dan ini tidak bisa tidak mempengaruhi biaya. Perhatikan bahwa beberapa dari CPU "ganda" ini juga dapat bekerja dalam sistem multiprosesor.

Time Slice Multithreading. Prosesor beralih di antara utas program pada interval tetap. Overhead terkadang bisa sangat besar, terutama jika sebuah proses sedang menunggu.

Mengaktifkan Multithreading Acara. Pengalihan tugas ketika jeda yang lama terjadi, seperti "cache misses" (cache tidak terjawab), yang sebagian besar merupakan tipikal untuk aplikasi server. Dalam hal ini, proses yang menunggu untuk memuat data dari memori yang relatif lambat ke dalam cache ditangguhkan, membebaskan sumber daya CPU untuk proses lain. Namun, Multithreading Switch-on-Event, seperti Time-Slice Multithreading, tidak selalu mencapai penggunaan sumber daya prosesor yang optimal, khususnya karena kesalahan prediksi cabang, dependensi instruksi, dll.

Multithreading Simultan. Dalam hal ini, utas program dijalankan pada prosesor yang sama "secara bersamaan", yaitu tanpa beralih di antara mereka. Sumber daya CPU didistribusikan secara dinamis, sesuai dengan prinsip "jika Anda tidak menggunakannya, berikan kepada orang lain." Pendekatan inilah yang mendasari teknologi Intel Hyper-Threading, yang sekarang kita tuju.

Cara Kerja Hyper-Threading

Seperti yang Anda ketahui, "paradigma komputasi" saat ini melibatkan: komputasi multithread. Ini tidak hanya berlaku untuk server, di mana konsep seperti itu awalnya ada, tetapi juga untuk workstation dan sistem desktop. Utas dapat dimiliki oleh aplikasi yang sama atau berbeda, tetapi hampir selalu ada lebih banyak utas aktif daripada satu (untuk melihatnya, cukup buka Pengelola Tugas di Windows 2000/XP dan nyalakan tampilan jumlah utas). Pada saat yang sama, prosesor konvensional hanya dapat mengeksekusi salah satu utas pada satu waktu dan dipaksa untuk terus-menerus beralih di antara utas tersebut.

Untuk pertama kalinya, teknologi Hyper-Threading diimplementasikan dalam prosesor Intel Xeon MP (Foster MP), di mana ia "berjalan". Ingatlah bahwa Xeon MP, yang secara resmi disajikan di IDF Spring 2002, menggunakan inti Pentium 4 Willamette, berisi cache L2 256 KB dan cache L3 512 KB/1 MB, dan mendukung konfigurasi 4-prosesor. Dukungan Hyper-Threading juga hadir dalam prosesor Intel Xeon untuk workstation (Prestonia core, 512 KB L2 cache), yang memasuki pasar sedikit lebih awal dari Xeon MP. Pembaca kami sudah terbiasa dengan konfigurasi prosesor ganda pada Intel Xeon, jadi kami akan mempertimbangkan kemungkinan Hyper-Threading menggunakan CPU ini sebagai contoh - baik secara teoritis maupun praktis. Bagaimanapun, Xeon "sederhana" lebih biasa dan mudah dicerna daripada Xeon MP dalam sistem 4-prosesor...

Prinsip pengoperasian Hyper-Threading didasarkan pada fakta bahwa pada waktu tertentu hanya sebagian dari sumber daya prosesor yang digunakan saat mengeksekusi kode program. Sumber daya yang tidak digunakan juga dapat dimuat dengan pekerjaan - misalnya, satu aplikasi lagi (atau utas lain dari aplikasi yang sama) dapat digunakan untuk eksekusi paralel. Dalam satu prosesor Intel Xeon fisik, dua prosesor logis (LP - Prosesor Logis) terbentuk, yang berbagi sumber daya komputasi CPU. Sistem operasi dan aplikasi "melihat" tepat dua CPU dan dapat mendistribusikan pekerjaan di antara keduanya, seperti dalam kasus sistem dua prosesor yang lengkap.

Salah satu tujuan penerapan Hyper-Threading adalah untuk memungkinkan hanya satu utas aktif yang berjalan pada kecepatan yang sama seperti pada CPU normal. Untuk melakukan ini, prosesor memiliki dua mode operasi utama: Tugas Tunggal (ST) dan Multi Tugas (MT). Dalam mode ST, hanya satu prosesor logis yang aktif dan menggunakan sumber daya yang tersedia tidak terbagi (mode ST0 dan ST1); LP lainnya dihentikan oleh perintah HALT. Ketika utas program kedua muncul, prosesor logis yang menganggur diaktifkan (melalui interupsi) dan CPU fisik dimasukkan ke mode MT. Menghentikan piringan hitam yang tidak digunakan dengan perintah HALT adalah tanggung jawab sistem operasi, yang pada akhirnya bertanggung jawab atas eksekusi cepat yang sama dari satu utas seperti dalam kasus tanpa Hyper-Threading.

Untuk masing-masing dari dua piringan hitam, apa yang disebut Status Arsitektur (AS) disimpan, yang mencakup status register dari berbagai jenis - tujuan umum, kontrol, APIC, dan layanan. Setiap LP memiliki APIC (pengendali interupsi) sendiri dan satu set register, untuk pekerjaan yang benar yang dengannya konsep Daftar Alias ​​​​Tabel (RAT) diperkenalkan, yang melacak korespondensi antara delapan register tujuan umum IA-32 dan 128 register CPU fisik (satu RAT untuk setiap LP).

Saat menjalankan dua utas, dua set Penunjuk Instruksi Berikutnya yang sesuai didukung. Sebagian besar instruksi diambil dari Trace Cache (TC), di mana mereka disimpan dalam bentuk decode, dan dua piringan hitam aktif mengakses TC secara bergantian, setiap jam. Pada saat yang sama, ketika hanya satu LP yang aktif, ia memperoleh akses eksklusif ke TC tanpa interleaving pada jam. Demikian pula, akses ke Microcode ROM terjadi. Blok ITLB (Instruction Translation Look-aside Buffer), yang diaktifkan tanpa adanya instruksi yang diperlukan dalam cache instruksi, diduplikasi dan mengirimkan instruksi masing-masing untuk utasnya sendiri. Blok dekode instruksi Dekode Instruksi IA-32 dibagi dan, dalam kasus ketika dekode instruksi diperlukan untuk kedua aliran, itu melayani mereka satu per satu (sekali lagi, setiap jam). Blok Uop Queue dan Allocator dibagi menjadi dua, dengan setengah dari elemen dialokasikan untuk setiap LP. Penjadwal dari 5 buah proses antrian perintah decode (Uops) meskipun milik LP0/LP1 dan perintah langsung untuk dieksekusi oleh Unit Eksekusi yang diperlukan - tergantung pada kesiapan untuk eksekusi yang pertama dan ketersediaan yang kedua. Cache dari semua level (L1/L2 untuk Xeon, dan L3 untuk Xeon MP) sepenuhnya dibagi antara dua LP, namun, untuk memastikan integritas data, entri dalam DTLB (Data Translation Look-aside Buffer) disediakan dengan deskriptor dalam bentuk ID prosesor logis.

Dengan demikian, instruksi dari kedua CPU logis dapat dieksekusi secara bersamaan pada sumber daya dari satu prosesor fisik, yang dibagi menjadi empat kelas:

  • digandakan (Digandakan);
  • sepenuhnya dibagikan (Fully Shared);
  • dengan deskriptor elemen (Entry Tagged);
  • dibagi secara dinamis (Dipartisi) tergantung pada mode operasi ST0/ST1 atau MT.

Namun, sebagian besar aplikasi yang dipercepat pada sistem multiprosesor juga dapat dipercepat pada CPU dengan Hyper-Threading diaktifkan tanpa modifikasi apa pun. Tetapi ada juga masalah: misalnya, jika satu proses berada dalam loop tunggu, proses tersebut dapat menghabiskan semua sumber daya CPU fisik, mencegah LP kedua bekerja. Dengan demikian, performa saat menggunakan Hyper-Threading terkadang bisa turun (hingga 20%). Untuk mencegah hal ini, Intel merekomendasikan untuk menggunakan instruksi PAUSE alih-alih menunggu loop kosong (diperkenalkan di IA-32 dimulai dengan Pentium 4). Pekerjaan serius juga sedang dilakukan pada pengoptimalan kode otomatis dan semi-otomatis selama kompilasi - misalnya, kompiler seri Intel OpenMP C ++ / Fortran Compilers () telah membuat kemajuan yang signifikan dalam hal ini.

Tujuan lain dari implementasi pertama Hyper-Threading, menurut Intel, adalah untuk meminimalkan pertumbuhan jumlah transistor, area mati dan konsumsi daya sambil meningkatkan kinerja secara signifikan. Bagian pertama dari komitmen ini telah terpenuhi: penambahan dukungan Hyper-Threading ke Xeon/Xeon MP meningkatkan area mati dan konsumsi daya kurang dari 5%. Apa yang terjadi dengan bagian kedua (pertunjukan), kami belum memeriksanya.

Bagian praktis

Untuk alasan yang jelas, kami tidak menguji sistem server 4-prosesor pada Xeon MP dengan Hyper-Threading diaktifkan. Pertama, ini cukup padat karya. Dan kedua, jika kita memutuskan prestasi seperti itu, masih sekarang, kurang dari sebulan setelah pengumuman resmi, sama sekali tidak realistis untuk mendapatkan peralatan mahal ini. Oleh karena itu, diputuskan untuk membatasi diri pada sistem yang sama dengan dua Intel Xeon 2.2 GHz, di mana tes pertama prosesor ini dilakukan (lihat tautan di awal artikel). Sistem ini didasarkan pada papan utama Supermikro P4DC6+ ( chipset intel i860), berisi 512 MB RDRAM, kartu video pada chip GeForce3 (64 MB DDR, driver Detonator 21.85), HDD digital barat WD300BB dan 6X DVD-ROM; Windows 2000 Professional SP2 digunakan sebagai OS.

Pertama, beberapa kesan umum. Saat menginstal satu Xeon dengan kernel Prestonia saat startup BIOS sistem menampilkan pesan tentang keberadaan dua CPU; jika dua prosesor dipasang, pengguna melihat pesan tentang empat CPU. Sistem operasi biasanya mengenali "kedua prosesor", tetapi hanya jika dua kondisi terpenuhi.

Pertama, di Pengaturan CMOS, yang terakhir versi BIOS Papan Supermicro P4DCxx memperkenalkan item Aktifkan Hyper-Threading, yang tanpanya OS hanya akan mengenali prosesor fisik. Kedua, ACPI digunakan untuk memberi tahu OS bahwa ada prosesor logis tambahan. Oleh karena itu, untuk mengaktifkan Hyper-Threading, opsi ACPI harus diaktifkan di Setup CMOS, dan HAL (Hardware Abstraction Layer) dengan dukungan ACPI juga harus diinstal untuk OS itu sendiri. Untungnya, di Windows 2000 mengubah HAL dari PC Standar (atau MPS Uni-/Multiprosesor PC) ke ACPI Uni-/Multiprosesor PC itu mudah - dengan mengubah "driver komputer" di pengelola perangkat. Pada saat yang sama, untuk Windows XP, satu-satunya cara legal untuk bermigrasi ke ACPI HAL adalah menginstal ulang sistem di atas instalasi yang ada.

Tapi sekarang semua persiapan sudah dilakukan, dan Windows 2000 Pro kami sudah sangat yakin bahwa ini bekerja pada sistem dua prosesor (walaupun sebenarnya hanya ada satu prosesor yang terpasang). Sekarang, seperti biasa, saatnya memutuskan tujuan pengujian. Jadi kami ingin:

  • Menilai dampak Hyper-Threading pada kinerja aplikasi dari berbagai kelas.
  • Bandingkan efek ini dengan efek memasang prosesor kedua.
  • Periksa bagaimana sumber daya "cukup" diberikan ke prosesor logis aktif saat LP kedua tidak digunakan.

Untuk mengevaluasi kinerja, kami mengambil satu set aplikasi yang sudah akrab bagi pembaca, yang digunakan dalam pengujian sistem stasiun kerja. Mari kita mulai, mungkin, dari akhir dan memeriksa "kesetaraan" CPU logis. Semuanya sangat sederhana: pertama kami menjalankan tes pada satu prosesor dengan Hyper-Threading dinonaktifkan, dan kemudian kami mengulangi proses dengan Hyper-Threading diaktifkan dan hanya menggunakan satu dari dua CPU logis (menggunakan Pengelola Tugas). Karena dalam kasus ini kami hanya tertarik pada nilai relatif, hasil semua pengujian direduksi menjadi bentuk "lebih besar lebih baik" dan dinormalisasi (indikator sistem prosesor tunggal tanpa Hyper-Threading diambil sebagai satu unit).

Seperti yang Anda lihat, janji Intel terpenuhi di sini: dengan hanya satu thread aktif, kinerja masing-masing dari dua piringan hitam persis sama dengan kinerja CPU fisik tanpa Hyper-Threading. LP yang menganggur (baik LP0 dan LP1) memang ditangguhkan, dan sumber daya bersama, sejauh dapat dinilai dari hasil yang diperoleh, sepenuhnya ditransfer ke penggunaan LP aktif.

Oleh karena itu, kami menarik kesimpulan pertama: dua prosesor logis sebenarnya memiliki hak yang sama, dan mengaktifkan Hyper-Threading "tidak mengganggu" pengoperasian satu utas (yang sebenarnya tidak buruk). Sekarang mari kita lihat apakah penyertaan ini "membantu", dan jika demikian, di mana dan bagaimana?

rendering. Hasil dari empat pengujian dalam paket pemodelan 3D 3D Studio MAX 4.26, Lightwave 7b dan A|W Maya 4.0.1 digabungkan menjadi satu diagram karena kemiripannya.

Dalam keempat kasus (untuk Lightwave - dua adegan berbeda), beban CPU di hadapan satu prosesor dengan Hyper-Threading yang dinonaktifkan hampir selalu dipertahankan pada 100%. Namun, ketika Hyper-Threading diaktifkan, penghitungan adegan dipercepat (sebagai hasilnya, kami bahkan memiliki lelucon tentang penggunaan CPU lebih dari 100%). Dalam tiga pengujian, kita dapat melihat peningkatan kinerja dari Hyper-Threading sebesar 14--18% - di satu sisi, tidak banyak dibandingkan dengan CPU kedua, tetapi di sisi lain, cukup baik, mengingat efek "bebas" dari efek ini. Dalam salah satu dari dua tes dengan Lightwave, peningkatan kinerja hampir nol (tampaknya, spesifisitas aplikasi ini yang penuh dengan keanehan mempengaruhi). Tetapi tidak ada hasil negatif di mana pun, dan peningkatan nyata dalam tiga kasus lainnya menggembirakan. Dan ini terlepas dari kenyataan bahwa proses rendering paralel melakukan pekerjaan yang sama dan, tentu saja, tidak dapat menggunakan sumber daya CPU fisik pada saat yang sama dengan cara terbaik.

Pengkodean Photoshop dan MP3. Codec GOGO-no-coda 2.39c adalah salah satu dari sedikit yang mendukung SMP, dan menunjukkan peningkatan kinerja 34% dari prosesor ganda. Pada saat yang sama, efek Hyper-Threading dalam kasus ini adalah nol (kami tidak menganggap perbedaan 3% sebagai signifikan). Namun dalam pengujian dengan Photoshop 6.0.1 (skrip yang terdiri dari sekumpulan besar perintah dan filter), Anda dapat melihat perlambatan saat Hyper-Threading diaktifkan, meskipun CPU fisik kedua menambahkan kinerja 12% dalam kasus ini. Di sini, sebenarnya, adalah kasus pertama ketika Hyper-Threading menyebabkan penurunan kinerja ...

OpenGL profesional. Telah lama diketahui bahwa SPEC ViewPerf dan banyak aplikasi OpenGL lainnya sering melambat pada sistem SMP.

OpenGL dan prosesor ganda: mengapa mereka bukan teman

Sering kali dalam artikel kami menarik perhatian pembaca pada fakta bahwa platform prosesor ganda jarang menunjukkan keuntungan yang signifikan dibandingkan platform prosesor tunggal saat melakukan tes OpenGL profesional. Dan selain itu, ada kasus saat memasang prosesor kedua, sebaliknya, memperburuk kinerja sistem saat menampilkan adegan tiga dimensi yang dinamis.

Secara alami, tidak hanya kami yang memperhatikan keanehan ini. Beberapa penguji diam-diam mengabaikan fakta ini - misalnya, dengan memberikan hasil perbandingan SPEC ViewPerf hanya untuk konfigurasi dua prosesor, sehingga menghindari penjelasan "mengapa sistem dua prosesor lebih lambat?". Lainnya membuat segala macam asumsi aneh tentang koherensi cache, kebutuhan untuk mempertahankannya, overhead yang dihasilkan, dan sebagainya. Dan untuk beberapa alasan, tidak ada yang terkejut bahwa, misalnya, prosesor tidak sabar untuk memantau koherensi secara tepat dalam rendering OpenGL berjendela (dalam esensi "komputasi", itu tidak jauh berbeda dari tugas komputasi lainnya).

Padahal, penjelasannya, menurut kami, jauh lebih sederhana. Seperti yang Anda ketahui, aplikasi dapat berjalan lebih cepat pada dua prosesor daripada satu jika:

  • ada lebih dari dua atau lebih program yang menjalankan utas (utas);
  • utas ini tidak mengganggu eksekusi satu sama lain - misalnya, mereka tidak bersaing untuk sumber daya bersama seperti drive eksternal atau antarmuka jaringan.

Sekarang, mari kita lihat tampilan rendering OpenGL yang disederhanakan, yang dilakukan oleh dua utas. Jika sebuah aplikasi, "melihat" dua prosesor, membuat dua utas rendering OpenGL, maka untuk masing-masingnya, sesuai dengan aturan OpenGL, konteks glnya sendiri dibuat. Dengan demikian, setiap utas merender ke konteks gl-nya sendiri. Tetapi masalahnya adalah bahwa untuk jendela tempat gambar ditampilkan, hanya satu konteks-gl yang dapat aktif setiap saat. Dengan demikian, utas dalam hal ini hanya "secara bergantian" menampilkan gambar yang dihasilkan ke jendela, membuat konteksnya bergantian saat ini. Tak perlu dikatakan, "interleaving konteks" ini bisa sangat mahal dalam hal overhead?

Juga, sebagai contoh, kami akan memberikan grafik penggunaan dua CPU di beberapa aplikasi yang menampilkan adegan OpenGL. Semua pengukuran dilakukan pada platform dengan konfigurasi berikut:

  • satu atau dua Intel Xeon 2.2 GHz (Hyper-Threading dinonaktifkan);
  • 512 MB RDRAM;
  • Papan utama Supermicro P4DC6+;
  • Kartu video ASUS V8200 Deluxe (NVidia GeForce3, 64 MB DDR SDRAM, driver Detonator 21.85);
  • Windows 2000 Profesional SP2;
  • mode video 1280x1024x32 bpp, 85 Hz, Vsync dinonaktifkan.

Biru dan merah masing-masing adalah grafik beban CPU 0 dan CPU 1. Garis di tengah adalah grafik Penggunaan CPU terakhir. Tiga grafik sesuai dengan dua adegan dari 3D Studio MAX 4.26 dan bagian dari tes SPEC ViewPerf (AWAdvs-04).


Penggunaan CPU: Animation 3D Studio MAX 4.26 - Anibal (dengan manipulator).max


Penggunaan CPU: Animation 3D Studio MAX 4.26 - Rabbit.max


Penggunaan CPU: SPEC ViewPerf 6.1.2 - AWAdvs-04

Pola yang sama diulang di sejumlah aplikasi lain yang menggunakan OpenGL. Dua prosesor tidak mengganggu pekerjaan sama sekali, dan total CPU Usage berada di level 50-60%. Pada saat yang sama, untuk sistem prosesor tunggal, dalam semua kasus ini, Penggunaan CPU dengan percaya diri dijaga pada level 100%.

Jadi tidak mengherankan bahwa banyak aplikasi OpenGL tidak menjadi lebih cepat pada sistem ganda. Nah, fakta bahwa mereka kadang-kadang bahkan melambat, menurut kami, memiliki penjelasan yang sepenuhnya logis.

Kita dapat menyatakan bahwa dengan dua CPU logis, penurunan kinerja bahkan lebih signifikan, yang cukup dapat dimengerti: dua prosesor logis saling mengganggu dengan cara yang sama seperti dua prosesor fisik. Tapi kinerja mereka secara keseluruhan, tentu saja, ternyata lebih rendah dalam kasus ini, jadi ketika Hyper-Threading diaktifkan, itu menurun bahkan lebih dari hanya ketika dua CPU fisik sedang berjalan. Hasilnya dapat diprediksi dan kesimpulannya sederhana: Hyper-Threading, seperti SMP "nyata", terkadang dikontraindikasikan untuk OpenGL.

aplikasi CAD. Kesimpulan sebelumnya dikonfirmasi oleh hasil dua tes CAD - SPECapc untuk SolidEdge V10 dan SPECapc untuk SolidWorks. Performa grafis tes ini untuk Hyper-Threading serupa (walaupun hasilnya sedikit lebih tinggi dalam kasus sistem SMP untuk SolidEdge V10). Tetapi hasil tes CPU_Score yang memuat prosesor membuat Anda berpikir: peningkatan 5-10% dari SMP dan perlambatan 14-19% dari Hyper-Threading.

Tetapi pada akhirnya, Intel dengan jujur ​​mengakui potensi penurunan kinerja dengan Hyper-Threading dalam beberapa kasus - misalnya, saat menggunakan loop tunggu kosong. Kami hanya dapat berasumsi bahwa inilah alasannya (pemeriksaan mendetail tentang kode SolidEdge dan SolidWorks berada di luar cakupan artikel ini). Bagaimanapun, semua orang tahu konservatisme pengembang aplikasi CAD yang lebih memilih keandalan yang terbukti dan tidak terburu-buru untuk menulis ulang kode dengan mempertimbangkan tren baru dalam pemrograman.

Menyimpulkan, atau "Perhatian, pertanyaan yang tepat"

Hyper-Threading berfungsi, tidak diragukan lagi. Tentu saja, teknologinya tidak universal: ada aplikasi yang Hyper-Threading "menjadi buruk", dan dalam kasus penyebaran teknologi ini, akan diinginkan untuk memodifikasinya. Tapi bukankah hal yang sama terjadi pada MMX dan SSE dan terus terjadi pada SSE2?..

Namun, ini menimbulkan pertanyaan tentang penerapan teknologi ini pada realitas kita. Kami akan segera membuang opsi sistem prosesor tunggal pada Xeon dengan Hyper-Threading (atau menganggapnya hanya sebagai yang sementara, untuk mengantisipasi membeli prosesor kedua): bahkan peningkatan kinerja 30% tidak membenarkan harga di mana pun cara - maka lebih baik untuk membeli Pentium biasa 4. Jumlah CPU yang tersisa adalah dari dua atau lebih.

Sekarang mari kita bayangkan bahwa kita membeli sistem Xeon dua-prosesor (misalnya, dengan Windows 2000/XP Professional). Dua CPU diinstal, Hyper-Threading diaktifkan, BIOS menemukan sebanyak empat prosesor logis, sekarang mari kita mulai ... Berhenti. Tetapi berapa banyak prosesor yang akan dilihat oleh sistem operasi kita? Itu benar, dua. Hanya dua, karena tidak dirancang untuk jumlah yang lebih besar. Ini akan menjadi dua prosesor fisik, yaitu semuanya akan bekerja persis sama dengan Hyper-Threading yang dinonaktifkan - tidak lebih lambat (dua CPU logis "tambahan" hanya akan berhenti), tetapi tidak lebih cepat (diverifikasi oleh tes tambahan, hasilnya tidak dikutip untuk kejelasan mereka). Hmm kurang seru...

Apa yang tersisa? Nah, jangan install Advanced Server atau .NET Server di workstation kita ya? Tidak, sistem akan menginstal, mengenali keempat prosesor logis dan akan berfungsi. Itu hanya OS server yang terlihat di workstation, secara halus, sedikit aneh (belum lagi aspek keuangan). Satu-satunya kasus yang masuk akal adalah ketika sistem Xeon dua prosesor kami akan bertindak sebagai server (setidaknya beberapa pembuat tidak ragu-ragu merilis server pada prosesor Xeon workstation). Tetapi untuk workstation ganda dengan sistem operasi yang sesuai, penerapan Hyper-Threading tetap dipertanyakan. Intel sekarang secara aktif menganjurkan lisensi OS berdasarkan jumlah CPU yang tidak logis, tetapi fisik. Diskusi masih berlangsung, dan, secara umum, banyak tergantung pada apakah kita melihat OS workstation dengan dukungan untuk empat prosesor.

Nah, dengan server, semuanya keluar dengan cukup sederhana. Misalnya, Server Lanjutan Windows 2000 yang diinstal pada sistem Xeon dua soket dengan Hyper-Threading diaktifkan akan melihat empat prosesor logis dan berjalan dengan lancar di dalamnya. Untuk mengevaluasi apa yang dibawa Hyper-Threading ke sistem server, kami menyajikan hasil Lab Perangkat Lunak Mikroprosesor Intel untuk sistem dua prosesor pada Xeon MP dan beberapa aplikasi server Microsoft.

Peningkatan kinerja 20-30% untuk server dua prosesor "gratis" lebih dari sekadar menggoda (terutama dibandingkan dengan membeli sistem 4 prosesor "asli").

Jadi ternyata saat ini penerapan praktis Hyper-Threading hanya dimungkinkan di server. Masalah dengan workstation tergantung pada solusi dengan lisensi OS. Meskipun satu lagi aplikasi Hyper-Threading cukup nyata - jika prosesor desktop mendapatkan dukungan untuk teknologi ini. Misalnya (mari kita bayangkan) apa yang salah dengan sistem Pentium 4 dengan dukungan Hyper-Threading, di mana Windows 2000/XP Professional dengan dukungan SMP diinstal? .. Namun, tidak ada yang luar biasa dalam hal ini: pengembang Intel yang antusias menjanjikan penyebaran luas pengenalan Hyper-Threading - dari server ke desktop dan sistem seluler.