Bildiğiniz gibi, CPU, bir bilgisayar sistemindeki her şeyin çalışması için yazılımı işler. Programlar talimatlar ve verilerden oluşur; talimatlar, beklenen sonucu elde etmek için veriler üzerinde hangi işlemin yapılması gerektiğini belirtir. Ve her şey bu şekilde yürütülür. CPU'nun en önemli birimlerinden biri, matematiksel işlemlerden sorumlu olan ALU veya FPU'dur. Intel gibi günümüz işlemcilerinde ise, 512 bite kadar veri uzunluklarına sahip vektör talimatlarını çalıştırabilen fonksiyonel birimler bulunmaktadır: AVX-512 bunu burada tartışacağız.
Bu uzantılar, özellikle bu türde çok sayıda işlem gerektiren bilimsel iş yüklerinin işlenmesini hızlandırmayı amaçlamaktadır. Ancak, AVX-512 ortaya çıktığında, Intel için yapılan tüm incelemeler iyi değildi, bu eklemeyi hiç beğenmeyenler de oldu, hatta ileride göreceğimiz gibi bazı sorunlarla karşılaşanlar da oldu…
İlginizi çekebilecek diğer konular:
ALU nasıl çalışır?
AVX-512 komut setini daha detaylı öğrenmeden önce, bir komut setinin nasıl çalıştığını anlamak önemlidir. ALU (Aritmetik Mantık Birimi), yani aritmetik ve mantıksal işlem birimi.
Yani bu ünitede bunlar gerçekleştiriliyor Toplama, çarpma, bölme vb. işlemleri içeren hesaplamalarBu görevleri gerçekleştirmek için ALU, CPU'nun kontrol ünitesi tarafından kontrol edilen belirli dijital devreleri kullanır. Bellekten işlenecek bir talimatı alıp kodunu çözdüğünde, ALU'ya kayıtlara yüklenen iki veri öğesiyle ne yapılacağını belirten bir İşlem Kodu gönderir. Örneğin, bir ADD talimatı toplama, bir SUB talimatı çıkarma, MUL talimatı çarpma, DIV talimatı bölme vb. yapar.
Ayrıca bu ALU, diğer CPU birimleri gibi, işlemci tarafından belirlenen hızda çalışacaktır. saat frekansı. Mesela 5 GHz ise saniyede 5.000 milyar işlem yapacaklar, çok basit bir şekilde anlatmak gerekirse.
Bununla birlikte, CPU saat hızı arttıkça, CPU tarafından üretilen ısı miktarı da artar. Bu nedenle, frekansı sürekli olarak artırmak, performans artırmanın tek çözümü değildir. Bu nedenle, CPU tasarımcıları, çekirdek düzeyinde paralellik, kayıt defteri yeniden adlandırma, tahmin ve spekülasyon, sıra dışı yürütme, süperskaler sistemler vb. gibi performans artırma alternatifleri aramalıdır. Ayrıca, işlem gücünü artırmaya yönelik önlemler arasında şunlar da yer almaktadır: SIMD adı verilen talimatlar, yani daha büyük veri kümeleri üzerinde işlem yapabilen vektör.
Bunlardan bir örnek talimatlar AVX-512'dirDiğer birimler 64 bit veriyle çalışırken, bu uzantılar için özel birimler 512 bit veri uzunluğuyla çalışır, yani normal kelime boyutunun 8 katını aynı anda işleyebilirler. Bunu yapmak için, ALU'lar (tamsayılar) veya FPU'lar (kayan nokta ise) daha büyük ve daha karmaşıktır, bu da sonuçta daha büyük bir çip yüzeyine, dolayısıyla daha yüksek maliyetlere ve ayrıca diğer komplikasyonlara dönüşür…
Veriler ALU'ya nasıl ulaşır?
Peki, artık bir ALU'nun ne olduğu ve nasıl çalıştığı, ayrıca AVX-512'lerin temel düzeyde ne için kullanıldığı hakkında temel bir anlayışa sahip olduğunuza göre, bir sonraki adım öğrenmektir veriler ALU'ya nasıl ulaşır, bu aynı zamanda bu uzantıları anlamanıza da yardımcı olacaktır.
ALU'ya ulaşmak için verilerin farklı depolama sistemlerinden geçmesi gerekir. Bu veri yolculuğu, bellek hiyerarşisi Bilgisayar sisteminin hiyerarşisinin kısa bir açıklaması şöyle olabilir:
- İkincil bellek: Bunlar, optik ortamlar vb. gibi G/Ç sistemine bağlanabilen diğer sürücülerin yanı sıra, toplu depolama ortamlarıdır, yani HDD veya SSD sabit diskler. Büyük miktarda bilgi depolarlar, ancak bellekleri CPU hızına kıyasla daha yavaştır. Bu nedenle, bu ortamlara erişim bir ceza, daha fazla gecikme gerektirir. Bu cezalardan kaçınmak için yaptığımız şey, bu verileri bir sonraki noktada tartışacağımız birincil belleğe yüklemektir. Örneğin, size daha net bir fikir vermek için, sabit diskinize Word yüklü olduğunu ve çalıştırmak istediğinizi düşünün. Bu yazılım, CPU'nun bunları yürütmesi için gereken talimatları ve verileri içeren bir dizi çalıştırılabilir dosya veya ikili dosyadan oluşacaktır. Çalıştırmak istediğiniz yazılımın sabit diskte olmaması da mümkündür, örneğin bir USB flash sürücüden veya DVD'den bir işletim sistemi yüklediğinizde. Bu talimatları ve verileri içeren çalıştırılabilir ikili dosyalar da orada bulunacaktır.
- Birincil bellek: Birincil depolama sistemi, rastgele erişimli bellekten (RAM) oluşur. Bu depolama sistemi, ikincil depolama sisteminden daha hızlıdır, ancak aynı miktarda bilgiyi depolayamaz ve açıkken bilgi depolayan geçici bir bellek olduğundan bunu kalıcı olarak yapamaz. Yani, bilgisayarı her kapattığınızda, yüklediğiniz programlar silinmez, ancak bu RAM'in içeriği silinir. Daha önce de söylediğim gibi, işlem veya program RAM'e yüklendiğinde, aslında yapılan şey, çalıştırılabilir ikili dosyanın talimatlarını ve verilerini ikincil birimden, CPU'nun daha hızlı erişebileceği bu birincil birime aktarmaktır.
- Önbellek: Önbellek, CPU'ya gömülüdür ve en hızlı bellek sistemidir, ancak aynı zamanda çok küçük bir kapasiteye sahiptir ve değişkendir. Bu bellek sistemi genellikle üç bölüme ayrılır: L1, L2 ve L3. ALU tarafından işlenmesi gereken tüm veriler sabit diskten RAM'e ve ardından önbelleğe taşınır. Bununla birlikte, ALU önbellekteki verilere doğrudan erişemez. Bu nedenle, bir sonraki nokta olan daha küçük ve daha hızlı bir belleğe ihtiyaç duyar...
- CPU Kayıtları: CPU kaydı, çok hızlı flip-flop elemanlarından oluşan çok basit bir bellektir. CPU mimarisine bağlı olarak kayıtların boyutu değişebilir. Örneğin, 8 bit, 16 bit, 32 bit, 64 bit vb. olabilirler. Ayrıca, sayıları değişken olabilir ve hepsi CPU'nun kayıt penceresini veya dosyasını oluşturur. ALU veya FPU gibi hesaplama birimleri, içlerine yüklenen verilere bu kayıtlar aracılığıyla erişebilir. Dolayısıyla, bir komut RAM'den CPU'ya getirme döngüsü sırasında getirildiğinde, komut kontrol ünitesi tarafından çözülür veya yorumlanır ve bu komutun yürütülmesinin ne gerektirdiği belirlenir. Örneğin, ADD r1, r2, r3 komutu, r2 + r3 kayıtlarındaki verileri toplayabilir ve sonucu r1'de saklayabilir. Bu şekilde, kontrol ünitesi bu işlem kodunu ALU'ya göndererek, değerleri ve verilerin konumunu (bu durumda gerekli kayıtlar) eklemesini söyler. ALU daha sonra verilere erişir ve toplama işlemini gerçekleştirir. Bu hiyerarşi bu şekilde işler.
Ayrıca, bildiğiniz gibi, veriler ve talimatlar En sık kullanılan dosyalar, gelecekte tekrar ihtiyaç duyulması halinde daha hızlı erişilebilmeleri için önbelleğe alınır. Tahmin edebileceğiniz gibi, her önbellek düzeyi daha da hızlanır:
- L1: Bu, en düşük gecikme süresine sahip, en hızlı ilk seviyedir. Bu, erişim için daha az saat döngüsünün boşa harcandığı anlamına gelir. Ayrıca, bu bellek genellikle veriler için bir L1D veya L1 ve talimatlar için bir L1I veya L1 olmak üzere ikiye ayrılır. Bu, talimatlar ve verilerin karışmadığı anlamına gelir.
- L2: Bu, bir sonraki seviye önbellektir ve L1'den daha büyük bir kapasiteye sahiptir, ancak biraz daha yavaştır, bu nedenle erişmek için daha fazla döngü gerekir. Burada, birleşik olduğu için hem veriler hem de talimatlar karışacaktır.
- L3: Bu seviye, L2'den daha fazla kapasiteye sahiptir, ancak L2'den bile daha yavaştır. L2 gibi, hem verileri hem de talimatları depolayarak birleşiktir. L3 son seviyeyse, LLC (Son Seviye Önbellek) olarak da bilinir; ancak diğer sistemlerde L4 vb. gibi farklı seviyeler de bulunabilir.
Tahmin edebileceğiniz gibi, CPU performansı artırmak için bir veri veya talimat araması gerektiğinde, önce erişimi en az saat döngüsü gerektiren L1'de arama yapar. Eğer orada değilse, bir sonraki en hızlı olan L2'de arama yapar. Orada da yoksa, L3'te arama yapar. Orada da yoksa, RAM'de arama yapar ve bu böyle devam eder.
AVX-512 nedir ve nasıl çalışır?
Kümesi AVX-512 talimatları AVX'in ikinci yinelemesidir ve Intel işlemcilere 2013 yılında gelmiştir. AVX, Advanced Vector Extensions (Gelişmiş Vektör Uzantıları) anlamına gelir ve ilk olarak Intel'in Xeon Phi (Knights Landing) işlemcisinde tanıtılmış, daha sonra Skylake-X tabanlı Xeon'larla Intel'in sunucularına gelmiştir.
Ayrıca AVX-512 komut seti tüketici ekipmanlarına, yani PC'lere de ulaştı. Cannon Lake mimarisi ve daha sonra Ice Lake ve Tiger Lake mimarilerini destekledi. Belki de hiç atılmaması gereken en çok eleştirilen adımlardan biriydi; bir yandan bu talimatlardan yararlanacak yeterli yazılım olmaması, diğer yandan da bu birimlere karmaşıklık katması nedeniyle.
Yukarıda açıklandığı gibi, ALU/FPU yalnızca mevcut verilere erişebilir. CPU kaydıAVX komut seti, bu kayıtların boyutunu artırır. Bu artış, tek bir komutla birden fazla veri noktasının işlenmesine olanak tanıyarak performansı artırır.
Bu talimat setinin temel amacı veri sıkıştırma, görüntü işleme ve kriptografik hesaplamalarla ilgili görevleri hızlandırınAVX-256 komut seti, AVX-512'ya kıyasla iki kat daha fazla işlem gücü sunarak önemli performans iyileştirmeleri sağladı. Ancak, bu Intel CPU'ların performansı, çoğu kişinin düşündüğünün aksine, iki katına çıkmadı.
Intel AVX-512'yi neden üretmiyor?

Yukarıda açıklandığı gibi, AVX-512 talimat seti hesaplamalı hesaplamalarda çeşitli avantajlar sunar, ancak her şey hoş karşılanmadıTensorFlow gibi popüler kütüphanelerin, talimat setini destekleyen CPU'larda daha hızlı hesaplamalar sağlamak için talimat setini kullandığı doğrudur.
AMD, AVX-512'yi ilk olarak Zen 4 tabanlı mikroişlemcilerde benimsedi. İki şirket arasında tam bir değişim...
Peki Intel, son Alder Lake işlemcilerinde AVX-512'yi neden devre dışı bırakıyor? Aslında, tamamen kaldırılmadılar. Örneğin, Alder Gölü Yüksek performanslı P-Çekirdekler ve yüksek verimli E-Çekirdeklerden oluşan, heterojen çok çekirdekli bir mimariden oluşmalıyız.
P-Çekirdekler Golden Cove mikro mimarisine dayanır ve bu talimatları yürütme yeteneğine sahipken, Gracemont mikro mimarisine dayanan E-Çekirdeklerde, Bu talimatların yürütülmesine izin verilmiyorBu çekirdeklerin zamanlayıcısı, çekirdekleri daha küçük ve daha enerji verimli tutmak için bu tür talimatları reddedecektir.
Ancak, Alder Lake CPU'ları ve sonraki sürümleri AVX-512 komut setini desteklemez, çünkü aksi takdirde belirli programları çalıştıramayan E-çekirdekler olurdu. Ancak, Intel'in bu çekirdekleri fiziksel olarak karıştırmadığı diğer CPU'larda (örneğin HPC ve sunucular için Xeon'da) ve hatta izin verilen bazı bilgisayarlarda kullanılabilirler. E-çekirdekleri devre dışı bırak BIOS/UEFI'den.
Tüketici CPU'sunda AVX-512'ye ihtiyaç var mı?

AVX-512 talimat seti, performansını artırmak için bir CPU'nun kayıt boyutunu artırır. performans artışı CPU'ların sayıları daha hızlı işlemesini sağlayarak kullanıcıların video/ses sıkıştırma algoritmalarını daha hızlı çalıştırmalarına olanak tanır.
Bununla birlikte, performanstaki bu artış yalnızca bir programda tanımlanan talimatlar uygulandığında gözlemlenebilir. çalıştırmak için optimize edildi AVX-512 komut setinde. Aksi takdirde tamamen işe yaramaz hale gelirler ve AVX-512'nin düşük benimsenmesi göz önüne alındığında, bu durum nadiren gerçekleşir.
Bu nedenle, AVX-512 gibi komut seti mimarileri, aşağıdaki iş yükleri için daha uygundur: sunucu ve HPC, ancak ortalama tüketici için değil. Bu nedenle, bunu yapmanın pek bir anlamı yok.
Peki AMD bunları neden şimdi entegre etti? O zamanlar, Intel'in zamanında yaşadığı sorunları yaşamamak için uzak durarak iyi bir iş çıkarmışlardı. Ancak şimdi tam tersi yönde ilerleyip bunları benimsediler. Bunun nedeni, AMD tarafından tasarlanan mikro mimariler olabilir. Zen 4, hem Ryzen, hem Threadripper hem de EPYC yongaları için kullanılıyor ve belki de Intel'in o dönemde yaptığı gibi, tüm yongalar için aynısını üretmiş olabilirler. Bu sayede AMD, artık sunucularda, iş istasyonlarında ve HPC'lerde AVX-512 ile çalışarak Xeon ile rekabet edebilecek.
Intel onları neden Alder Lake'ten kaldırdı?

Intel'in Alder Lake işlemcileriyle AVX-512 yönergelerine desteği karanlık bir meseleydiŞirket, başlangıçta bu özelliğin yeni 12. nesil veya daha sonraki işlemcilerde çalışmayacağını belirtmişti. Ancak anakart üreticileri, bu talimatları aygıt yazılımından etkinleştirmek için çeşitli çözümler bulduklarında, bu karardan vazgeçtiler.
Bu şekilde yapabilirsiniz Bu seçeneği BIOS/UEFI'den etkinleştirin veya devre dışı bırakın Anakartın bu özelliği, kullanıcılara iş yükü ihtiyaçlarına bağlı olarak AVX-512'yi kullanma veya kullanmama seçeneği sunuyor.
Ancak Intel'in, hız aşırtma için kilidi açılmamış bazı K olmayan birimleri sattığı anlaşılıyor. AVX-512 varsayılan olarak devre dışıdırVe, bu ürünlerin donanım seviyesinde kaldırılmış gibi görünmese de, bu engelleme kullanıcıların bunları kullanmasını engelleyecektir.
Ancak Intel'in fare ve fareyle oynadığı anlaşılıyor, çünkü sonunda Amerikan şirketinin fare ve fareyi seçtiği anlaşılıyor. fiziksel olarak desteği devre dışı bırak Tüketici çiplerinde silikon seviyesinde AVX-512 komutları kullanılıyor, dolayısıyla enerji verimliliğini artırma adına bu komutları kullanmak için hiçbir şey yapılamaz.
Yani özetle Intel'in yaptığı hamleler şunlar oldu:
- AVX-512'nin yeni hibrit işlemcilerle uyumlu olmayacağını basına açıkladı.
- Yayımlanmasından önce, bu özelliğin nasıl kullanılacağını gösteren bir optimizasyon kılavuzu ortaya çıktı.
- Intel, geçmişte aldığı eleştiriler nedeniyle bu talimatların desteklendiğini bir kez daha reddetti ve ardından bu kılavuzdan referansları kaldırdı.
- Alder Lake yayınlandığında, talimatların uygun donanım yazılımına sahip bazı anakartlarda çalıştığı keşfedildi. Bu, anakart üreticilerinin Intel'in isteklerine aykırı olarak yaptığı bir şeydi.
- Intel başlangıçta sessizliğini korudu, ancak Tayvan basınına AVX-512 desteğinin varsayılan olarak mevcut olmadığını, dolayısıyla isteyen birinin bunu kendi riski altında kullanabileceğini, tıpkı hız aşırtma risklerini üstlendiği gibi...
- Intel, geçen yıl AVX-512'yi yeni bir yazılım veya mikro kod güncellemesiyle devre dışı bırakacağını duyurmuştu.
- Aynı hafta, AVX-512 seçeneğini devre dışı bırakan BIOS/UEFI sürümleri ortaya çıktı.
- MSI, Intel AVX-512 kilidini aşmanın bir yolunu buldu ve bu sayede BIOS/UEFI'de kolayca değişiklik yapılabiliyor.
- Intel bundan memnun kalmadı ve sonunda donanımdaki komut setini devre dışı bırakmaya karar verdi, böylece hiçbir şekilde değiştirilemezdi. Bu nedenle, erken Alder Lake sürümlerinde fiziksel olarak kullanılabilir olacak, ancak sonraki Alder Lake sürümlerinde kullanılamayacak.
Yani AVX-512'nin etkinleştirilmesini istiyorsanız, o zaman Intel Xeon'u satın al, ki bunlar elbette daha pahalıdır.
Bütün bunlar sırasında pembe diziAMD artık tüm Zen 512 yongalarına, hatta tüketici yongalarına bile AVX-4 desteği ekliyor. Dolayısıyla, bilgisayarınız için AVX-512 destekli bir işlemci arıyorsanız, şu anda en iyi seçeneğiniz Ryzen 7000 (Zen 4).
VNNI nedir?

Ve bitirmek için, şunu söylemeden bitirmek istemiyorum: AVX-512 VNNI, yani evrişimli sinir ağı algoritmalarını hızlandırmak için özel olarak tasarlanmış bir uzantı. VNNI kısaltması şu anlama gelir: Vektör Sinir Ağı Talimatları.
Bu talimatlar, başlangıçtaki AVX-512 uzantılarını genişletir; dört yeni talimat Sinir ağı döngülerini hızlandırmak için şu talimatlar verilmiştir:
VPDPBUSD: Bu talimat, ilk kaynak işlenenin ayrı baytlarını (8 bit = 1 bayt) ikinci kaynak işlenenin karşılık gelen baytlarıyla çarparak, toplanan ve çift sözcüklü (16 bit) bir hedef işlenende biriken 32 bitlik sözcük sonuçları üretebilir.VPDPBUSDS: yukarıdakiyle aynı, ancak pozitif/negatif sayılar için ara toplam taşması 0x7FFF_FFFF/0x8000_0000'da doygunluğa ulaşır.VPDPWSSD: Bu diğer talimatta, ilk kaynak işlenenin bireysel sözcükleri (16 bit), ikinci kaynak işlenenin karşılık gelen sözcüğüyle çarpılabilir ve hedef işlenenin çift sözcüğünde (32 bit) toplanan ve biriktirilen ara sözcük sonuçları üretilir.VPDPWSSDS: Tahmin edebileceğiniz gibi, pozitif/negatif sayılar için ara toplam taşmasının 0x7FFF_FFFF/0x8000_0000 noktasında doyması haricinde bir öncekiyle aynıdır.
AVX512 VNNI uzantısının arkasındaki temel motivasyon, birçok sıkı evrişimli sinir ağı döngüsünün, iki 16 bit veya iki 8 bit değerin tekrar tekrar çarpılmasını ve sonucun 32 bitlik bir biriktiriciye toplanmasını gerektirmesidir. Bu, iki komut kullanılarak mümkündür: VPMADDWD iki 16 bitlik çifti çarpmak ve bunları birer birer eklemek için kullanılır VPADDD biriken değeri toplayan.