Dua thread, satu core: cara kerja simultaneous multithreading
Latar belakang dan motivasi
- Latar belakang penerapan SMT: Diperkenalkan untuk meningkatkan tingkat pemanfaatan sumber daya prosesor. Prosesor memiliki ratusan register, berbagai unit load/store, dan unit aritmetika. Untuk memanfaatkannya dengan lebih baik, digunakan teknik instruction-level parallelism (ILP).
- Pipelining instruksi: Eksekusi instruksi dibagi ke beberapa tahap sehingga instruksi baru dapat diproses tambahan pada setiap siklus. Semakin dalam pipeline, semakin banyak instruksi yang dapat diproses secara paralel.
- Arsitektur superscalar: Dapat menerbitkan beberapa instruksi pada setiap siklus. Sebagai contoh, prosesor Intel Core i7 modern dapat menerbitkan 4 instruksi per siklus.
- Pemborosan horizontal dan vertikal: Pemborosan sumber daya yang terjadi saat tidak cukup banyak instruksi independen dapat ditemukan. Pemborosan horizontal terjadi ketika prosesor tidak dapat menemukan cukup instruksi independen, sedangkan pemborosan vertikal terjadi ketika semua instruksi bergantung pada instruksi yang sedang dieksekusi.
Implementasi SMT pada prosesor Intel
- Replikasi status arsitektural: Status arsitektural prosesor direplikasi agar dua thread dapat dijalankan secara bersamaan. Dengan demikian, satu prosesor fisik terlihat sebagai dua prosesor logis oleh sistem operasi.
- Berbagi dan replikasi sumber daya: Sebagian sumber daya direplikasi, dan sebagian lainnya dibagikan. Keputusan apakah suatu sumber daya direplikasi ditentukan oleh berbagai faktor seperti konsumsi daya dan ruang fisik nyata pada chip.
Mikroarsitektur prosesor
- Frontend, backend, dan unit retirement: Mikroarsitektur prosesor dibagi menjadi tiga bagian. Frontend mengambil dan mendekode instruksi, backend mengalokasikan sumber daya eksekusi dan menjalankan instruksi. Unit retirement melacak hasil instruksi yang telah dieksekusi dan meng-commit-nya ke status arsitektural.
Detail implementasi SMT
- Frontend: Terdiri dari berbagai komponen seperti instruction pointer, trace cache, cache ITLB, dan antrean uop. Setiap komponen direplikasi atau dibagikan untuk mendukung dua prosesor logis.
- Backend: Terdiri dari allocator sumber daya, register renaming, antrean kesiapan instruksi, scheduler instruksi, dan lain-lain. Allocator sumber daya berganti di antara prosesor logis pada setiap siklus.
- Unit retirement: Melacak saat instruksi siap di-commit ke status arsitektural dan memastikan commit dilakukan dalam urutan yang benar.
Subsistem memori
- TLB: Cache kecil yang menerjemahkan alamat virtual ke alamat fisik. Dibagikan secara dinamis di antara dua prosesor logis.
- Cache L1, L2, L3: Setiap core CPU memiliki cache L1 sendiri. Cache L2 dapat berbeda tergantung mikroarsitektur, dan cache L3 dibagikan antar-core.
Dampak SMT terhadap performa
- Eksekusi single-thread: Saat satu thread dijalankan pada core dengan SMT aktif, performa dapat menurun karena sumber daya dibagikan.
- Eksekusi dua thread: Performa dapat berbeda tergantung pola akses cache. Thread yang kooperatif dapat meningkatkan performa, tetapi thread yang saling bersaing dapat menurunkannya.
- Kerentanan keamanan: Dalam beberapa tahun terakhir, ditemukan masalah keamanan terkait SMT. Karena berbagi sumber daya dan eksekusi spekulatif instruksi, ada kemungkinan data sensitif bocor.
Kesimpulan
- Menentukan apakah SMT akan digunakan: SMT dirancang untuk meningkatkan pemanfaatan sumber daya CPU dan menaikkan throughput instruksi, tetapi ada trade-off dari sisi performa dan keamanan. Penting untuk menentukan apakah SMT akan digunakan berdasarkan workload.
Ringkasan GN⁺
- Memahami SMT: SMT dirancang untuk meningkatkan pemanfaatan sumber daya CPU dan menaikkan throughput instruksi.
- Performa dan keamanan: SMT dapat membantu meningkatkan performa, tetapi persaingan sumber daya dan kerentanan keamanan juga dapat menyebabkan penurunan performa serta masalah keamanan.
- Menentukan penggunaan: Perlu memutuskan dengan hati-hati apakah SMT akan digunakan sesuai workload. Jika membutuhkan performa tinggi, menonaktifkan SMT bisa menjadi pilihan yang baik.
- Proyek terkait: Implementasi SMT dari AMD dan proyek analisis performa SMT pada prosesor ARM juga layak dijadikan referensi.
Belum ada komentar.