Downlocking Ice Lake AVX-512

gambar


Ini adalah posting singkat tentang studi perilaku AVX2 dan AVX-512 sehubungan dengan downlocking berlisensi chip Intel Ice Lake baru.



Downlocking berlisensi 1 adalah efek yang sedikit diketahui di mana batas frekuensi turun di bawah nominal ketika instruksi SIMD tertentu dijalankan, terutama instruksi atau instruksi floating point berat dengan lebar 512-bit.



Anda dapat membaca lebih lanjut tentang jenis downlocking ini dalam jawaban ini di StackOverflow , dan kami telah menjelaskan mekanisme tingkat rendah dari transisi tersebut secara mendetail . Anda juga dapat menemukan instruksicara memanfaatkan SIMD lebar (Single Instruction Multiple Data: jenis atau ekstensi arsitektur set instruksi, misalnya, Intel AVX atau ARM NEON, yang mampu melakukan beberapa operasi identik pada elemen yang dikemas dalam register SIMD) dengan mempertimbangkan masalah ini 2 .



Informasi pada tautan ditulis dalam konteks Skylake-SP (SKX, arsitektur server Intel Skylake yang mencakup Skylake-SP, Skylake-X dan Skylake-W), yang merupakan chip generasi pertama yang mendukung AVX-512.



Bagaimana situasi dengan Ice Lake, dengan chip terbaru yang mendukung instruksi AVX-512 dari SKX dan set instruksi AVX-512 yang baru ? Apakah kami harus melihat instruksi baru ini dari jauh dan tidak akan pernah dapat menggunakannya karena downlocking?



Baca artikel untuk mengetahuinya, atau langsung saja ke bagian Ringkasan.



AVX-Turbo



Kami akan menggunakan utilitas avx-turbo untuk mengukur ketergantungan frekuensi pada jumlah inti dan set instruksi. Alat ini bekerja secara sederhana: ia mengeksekusi serangkaian instruksi tertentu pada sejumlah inti, mengukur frekuensi yang dicapai selama pengujian.



Misalnya, tes avx256_fma_tyang mengukur biaya instruksi 256-bit yang berat dengan ILP tinggi (paralelisme level instruksi: jumlah paralelisme pada level antar-instruksi dari prosesor superskalar) menjalankan urutan FMA berikut:



	vfmadd132pd ymm0,ymm10,ymm11
	vfmadd132pd ymm1,ymm10,ymm11
	vfmadd132pd ymm2,ymm10,ymm11
	vfmadd132pd ymm3,ymm10,ymm11
	vfmadd132pd ymm4,ymm10,ymm11
	vfmadd132pd ymm5,ymm10,ymm11
	vfmadd132pd ymm6,ymm10,ymm11
	vfmadd132pd ymm7,ymm10,ymm11
	vfmadd132pd ymm8,ymm10,ymm11
	vfmadd132pd ymm9,ymm10,ymm11
	; repeat 10x for a total of 100 FMAs


Secara total, kami menggunakan lima tes untuk menguji setiap kombinasi instruksi 256-bit dan 512-bit ringan dan berat, serta instruksi skalar (SIMD 128-bit berperilaku sama dengan instruksi skalar) dengan mengetik di baris perintah:



./avx-turbo --test=scalar_iadd,avx256_iadd,avx512_iadd,avx256_fma_t,avx512_fma_t


Hasil Danau Es



Saya menjalankan avx-turbo seperti yang dijelaskan di atas pada Ice Lake i5-1035G4, prosesor klien Ice Lake kelas menengah yang berjalan hingga 3,7 GHz. Hasil lengkapnya tersembunyi di intinya , dan di sini saya menyajikan hasil paling penting untuk frekuensi yang diperoleh (semua nilai dalam GHz):



Set instruksi Inti aktif
1 2 3 4
Skalar / 128-bit 3.7 3.6 3.3 3.3
Ringan 256-bit 3.7 3.6 3.3 3.3
Berat 256-bit 3.7 3.6 3.3 3.3
512-bit ringan 3.6 3.6 3.3 3.3
512-bit berat 3.6 3.6 3.3 3.3


Seperti yang diharapkan, penurunan frekuensi maksimum terjadi saat jumlah inti aktif meningkat, tetapi lihat ke bawah setiap kolom untuk melihat dampaknya pada kategori instruksi. Hampir tidak ada penguncian bawah yang terjadi di sepanjang sumbu ini! Dengan hanya satu inti aktif, ada penurunan dengan instruksi lebar, dan hanya sedikit 100 MHz: dari 3 700 MHz menjadi 3 600 MHz menggunakan instruksi 512-bit.



Dalam semua kasus lain, termasuk dengan beberapa inti aktif, serta yang berat 256-bit, downlocking berlisensi adalah nol : semuanya bekerja secepat dengan instruksi skalar.



Jenis lisensi



Ada perubahan lain di sini. Arsitektur SKX memiliki tiga lisensi, atau kategori instruksi downlocking: L0, L1, dan L2. Di sini, di ICL klien, hanya ada dua dari mereka, 3, dan mereka tidak sesuai secara akurat dengan tiga kategori di SKX.



Lisensi di SKX sesuai dengan lebar dan berat instruksi sebagai berikut:



Lebar Paru-paru Berat
Skalar / 128 L0 L0
256 L0 L1
512 L1 L2


Secara khusus, perhatikan bahwa instruksi 256-bit yang berat dilisensikan di bawah lisensi yang sama dengan instruksi 512-bit ringan.



Di ICL klien, skemanya adalah sebagai berikut:



Lebar Paru-paru Berat
Skalar / 128 L0 L0
256 L0 L0
512 L1 L1


Di sini instruksi 256-bit dan 512-bit yang ringan berada dalam kategori yang berbeda! Faktanya, konsep instruksi ringan versus instruksi berat tampaknya tidak berlaku di sini: kategorisasi sepenuhnya bergantung pada lebar 4 .



Terus?



Jadi apa ini?



Paling tidak, ini berarti kita perlu mengubah model mental biaya instruksi AVX-512 relatif terhadap frekuensi. Daripada mengatakan bahwa mereka "biasanya menyebabkan downlocking yang signifikan," chip Ice Lake ini dapat dikatakan memiliki AVX-512 yang menyebabkan sedikit atau tidak ada downlocking berlisensi, dan saya berasumsi hal ini juga berlaku untuk chip klien Ice Lake lainnya.



Namun, perubahan dalam ekspektasi kami ini memiliki kelemahan penting: downlocking berlisensi bukan satu - satunya.sumber downlocking. Kami juga mungkin menghadapi keterbatasan daya, panas atau arus. Beberapa konfigurasi hanya dapat menjalankan instruksi SIMD lebar di semua inti untuk waktu yang singkat dan kemudian melebihi batas daya pengoperasian. Dalam kasus saya, laptop $ 250 yang saya uji didinginkan dengan sangat buruk, dan alih-alih keterbatasan daya, saya mengalami batas pembuangan panas (100 Β° C) hanya beberapa detik setelah menjalankan instruksi berat pada semua core.



Namun, pembatasan lain ini secara kualitatif berbeda dari pembatasan perizinan. Pada dasarnya mereka membatasi 5 berdasarkan pembayaran untuk apa yang Anda gunakan: Jika Anda menggunakan instruksi yang lebar atau berat (atau keduanya), maka itu hanya menyebabkan peningkatan mikroskopis dalam daya atau panas yang terkait dengan instruksi ini saja. Ini tidak seperti beberapa efek lisensi di mana perubahan frekuensi terjadi dalam inti atau seluruh chip, yang secara signifikan memengaruhi eksekusi selanjutnya yang tidak terkait dengan jenis instruksi ini.



Karena operasi yang luas biasanya kurang intensif daya dibandingkan dengan operasi sempit 6 yang serupa , segera jelas apakah operasi yang luas itu sepadan ; setidaknya dalam kasus yang diskalakan dengan baik dengan lebar yang meningkat. Namun, masalah ini sebagian besar bersifat lokal: tidak bergantung pada perilaku kode tetangga.



Hasil



Inilah kesimpulan saya.



  • Prosesor Ice Lake i5-1035 hanya mendemonstrasikan penguncian berlisensi 100 MHz dengan satu inti aktif saat menjalankan instruksi 512-bit.
  • Dalam semua kasus lainnya, tidak ada downlocking.
  • Frekuensi turbo eksekusi instruksi 512-bit pada semua core adalah 3,3 GHz, yang merupakan 89% dari frekuensi maksimum eksekusi operasi skalar pada satu inti (3,7 GHz), oleh karena itu, dalam batas daya dan pembuangan panas, chip ini memiliki frekuensi yang sangat β€œdatar”. kecanduan.
  • Berbeda dengan arsitektur SKX, chip Ice Lake ini tidak menggunakan pembagian menjadi

    instruksi "ringan" dan "berat" untuk frekuensi penskalaan: Operasi FMA dilakukan dengan cara yang sama seperti operasi ringan.


Artinya, tidak perlu takut melakukan downlock pada ICL klien. Hanya masa depan yang akan memberi tahu kami jika ini juga berlaku untuk ICL sisi server.



Diskusi dan komunikasi



Posting ini dapat didiskusikan di Hacker News .



Jika Anda memiliki pertanyaan atau tanggapan lain, Anda dapat meninggalkan komentar di posting asli . Saya juga akan tertarik dengan hasil chip ICL lainnya , misalnya pada versi i3 dan i7: beri tahu saya jika Anda memilikinya dan kami bisa mendapatkan hasilnya.






Catatan



  1. Saya sudah lelah terus-menerus mengulangi downlocking berlisensi , jadi saya akan sering menggunakan istilah "downlocking", tetapi harus jelas bahwa ini adalah versi berlisensi, dan bukan jenis pembatasan frekuensi lainnya
  2. Perhatikan bahwa Daniel menulis tentang ini lebih lama , dari sekali.

  3. : , - ( ) , , .
  4. , , ICL FMA : 512- . , 256- : - 2x256- FMA , , 1x512- FMA . , , 512- .
  5. , , , , , . , , , vzeroupper vzeroall.
  6. Misalnya, satu penambahan bilangan bulat 512-bit biasanya akan kurang intensif energi daripada dua operasi 256-bit yang diperlukan untuk menghitung hasil yang sama, karena overhead dalam eksekusi tumbuh secara non-linier dengan lebar yang bertambah (mereka mencakup hampir semua kecuali eksekusi itu sendiri).



All Articles