• işlemci talimatları SSE2 ve SSE3'ün kullanıma sunulmasıyla yeni işlemci özellikleri

    Birçok kullanıcı, çeşitli uygulamaları yüklerken bir mesajla karşı karşıya kalır. "İşlemci SSE2 komut setini desteklemiyor". Bu hata, eski donanıma sahip bilgisayarlarda ortaya çıkıyor ve kullanıcıların kafasını karıştırıyor - Windows sorunsuz çalışıyor gibi görünüyor, ancak program yüklenmek istemiyor. Deneyeceğiz sade dil bu SSE2 teknolojisinin ne olduğunu ve bir PC'deki işlevlerinin neler olduğunu anlatın. Windows'ta SSE2 Talimatları desteğini etkinleştirmenin mümkün olup olmadığını da öğreneceksiniz.

    Bir bilgisayarda SSE2 nedir?

    SSE2 teknolojisi işlemcinizde bir dizi talimatı yürüten 32 bit mimarinin bir uzantısıdır. Talimat seti ne kadar geniş olursa, işlemcinin sistem isteklerini işleme yeteneği o kadar artar. Örneğin, ilk CCE'deki komut seti 70 iken, ikinci versiyon zaten 144'ü destekliyor.

    SSE2 yönergeleri erken işlemci hatları için mevcut değildir ve bunlar: AMD (Athlone 64'ten önce), Intel (Pentium 4'ten önce), ayrıca VIA C3 ve Transmeta Crusoe. Sonraki tüm hatlar desteklenir bu teknoloji. İşte cihazların tam listesi.

    Sorunla ne yapmalı?

    Zaten açık olduğu gibi, "eski" olması nedeniyle yürütülmesi işlemci tarafından desteklenmeyecek bir uygulamayı yüklemeye çalıştığınızda "Bu program SSE2 talimatlarını destekleyen bir bilgisayar gerektiriyor" hatası oluşuyor. En sık bu sorun tarayıcıların güncel sürümlerini yüklerken oluşur (Firefox, Opera, Chrome, internet gezgini), Üçüncü taraf uygulamaları(Ofis, Skype, Norton virüs koruyucu vb.) veya Windows'u yeniden yüklerken.


    Bu hatayı alırsanız, fazla seçeneğiniz yoktur: donanımı güncelleyin - aşırı durumlarda, anakartı ve işlemciyi veya yazılımın daha eski bir sürümünü yükleyin. Bir PC'de yeni parçalar satın almak istemiyorsanız, programınız için işlemcinin gereksinimleriyle uyumlu olacak eski sürümleri bulun. Örneğin, SSE2 gerektirmeyen tarayıcı sürümleri: Opera 20.0.1387.91, Chrome 35.0.1870.2, sürüm 48'in altındaki Firefox. İşte tam liste.

    Lütfen birçok sitenin şifrelemesinin ve protokollerinin tarayıcıların eski sürümlerinde desteklenmeyeceğini unutmayın. Ayrıca, bu tür yazılımlar için otomatik güncellemeyi devre dışı bırakmayı unutmayın. Güncellemeleri devre dışı bırakmak için birçok talimat var, Web'e bakın.

    SSE2'yi etkinleştirmek mümkün mü?

    Bu hatanın ortaya çıkmasından sonra, birçok kullanıcı sistemde bu "seçeneği" etkinleştirmeyi mümkün kılacak talimatları arıyor, birisi normalden biraz daha fazlasını anlıyor ve BIOS'a giriyor. Hatta bir yerlerde bilgisayarda CCE2'yi etkinleştirmenize izin verecek yamalardan bahsediliyor, ancak bunların ek yük dışında bir etkisi olmayacak. Bu tür modlar bir hataya çözüm olarak bulunur

    İşlemcinizin özelliklerini görüntülemek için CPU-Z aracını kullanabilirsiniz.SSE2, Talimatlar satırında listelenmiyorsa, o zaman hiçbir şey yapılamaz.


    CPU-Z programı - işlemcinin özelliklerini kontrol etme

    Çözüm

    Çoğu zaman, bir bilgisayara yalnızca yazdırma, İnternette sınırlı gezinme, dokümantasyon gibi bazı amaçlar için ihtiyaç duyulur - bu nedenle, "İşlemci SSE2'yi desteklemiyor" sorununu çözecek olan yazılımın uygun sürümünü indirmekle kendinizi sınırlayabilirsiniz. hata. Ancak her donanımın belirli bir zamanı vardır, bu nedenle PC donanımınızı yükseltmeye hazır olun.

    SSE2 talimatları - Akış SIMD Uzantıları 2'nin kısaltması. Yalnızca Pentium 4 işlemci serisinde ortaya çıktı SSE2 teknolojisi, 144 komut içeren bir dizi talimattır ve bunlar tüm modern programlar için gereklidir.

    Bu teknolojilerin desteği olmadan kurulum yapamazsınız. şimdiki versiyonu pencereler ve hatta herhangi bir modern tarayıcı. Yükleme sırasında işlemci SSE2'yi desteklemiyorsa bir hata görürsünüz - Bu program, SSE2 talimatlarını destekleyen bir bilgisayar gerektirir.. Buna daha ayrıntılı olarak bakalım.

    SSE2 nasıl etkinleştirilir

    İşlemciniz bu teknolojiyi desteklemiyorsa etkinleştiremezsiniz. Modelinizin aşağıdakilerden daha yeni olduğundan emin olun:

    • IA-32
    • Athlon 64'ten önceki tüm AMD işlemciler sse2'yi desteklemez
    • Pentium 1, 2, 3. Yukarıda belirtildiği gibi, destek yalnızca 4'te ortaya çıktı.
    • Transmeta Crusoe
    • C3 ÜZERİNDEN

    Diğerlerinin tümü zaten talimat seti desteğine sahiptir.

    Ayrıca, desteğin mevcut olduğundan emin olmak için CPU-Z programını yükleyin. sse2 desteği olup olmadığını anlamak için programı kullanmak için "Talimatlar" sütununa dikkat edin. İşlemcinizin desteklediği teknolojileri listelemelidir.

    BIOS'ta etkinleştirmek için aşağıdakileri yapın:

    Bilgisayarı yeniden başlatın ve yalnızca açılacağı anda birçok kez Del veya F1 tuşuna basın (ana karta bağlı olarak). BIOS'a girmeyi başardıktan sonra, "SSE Tweaks" e gidin, ardından "SSE Enable" seçeneğini ayarlamanız gerekir. F10, Y, Enter'a basın.

    İşlemci SSE2'yi desteklemiyor

    Tabii ki, Windows XP altında yapılan programların yeteneklerini hesaba katmazsanız, bilgisayarınız artık kullanışlı değildir. Geri kalanının yüklenmesi gerekmez.

    Görünüşe göre bu oldukça yeterli, ama hayır. İnternette rahat oturamayacaksınız. Sitelerin yarısı sizin için açılmayacak, ikincisi ise tarayıcınızı güncellemeniz için bildirimler gösterecek.

    Ancak başka bir bilgisayar almanız mümkün değilse, yine de bu bilgisayar üzerinde çalışabilirsiniz.

    sse2 kontrolü nasıl atlanır

    Bunu yapmak mümkündür, ancak her program için ayrı ayrı bypass yapmak gerekir. İnternette "SSE2 emülatörü" hakkında pek çok yanlış bilgi var - bu mevcut değil. Virüsleri, SMS aboneliklerini vb. indirmeye yönlendiriliyorsunuz. Kontrolü atlamak için, her programdaki kodun çoğunu yeniden yazmak gerekir, bundan sonra düzgün çalışmayacaktır. Anladığınız gibi, bunu yapmak gerekli değildir çünkü bu mantıksız bir zaman kaybıdır.

    SSE2 desteği olmayan işlemciler için tarayıcılar

    Uzun bir süre sizin gibi ben de SSE2 yüzünden laptopu değiştirmek istemedim ama beni yendiler (hatalar ve bildirimler). tarayıcılarım var Google Chrome, Mozilla Firefox ve Opera) bu komut setini gerektirmez. İşte, sizinle paylaşıyorum - İndir

    Dikkat, son zamanlarda spam gönderenler, iddiaya göre benim adıma sürümün eski olduğunu ve bir bağlantı bıraktığını iddia ederek yorumlarda yazıyor - bunu ben yapmıyorum. Dosyayı yeniden yüklersem, makaledeki bağlantıyı değiştiririm. Böylece korkmadan indirebilirsiniz.

    Destek gerektirmeyen programlar nereden alınır?

    Test etmeye karar verirseniz, gergin sistem, ve bu işlemciyi kullanmaya devam edin, o zaman komut seti gerektirmeyen programlara ihtiyacınız olacak. Onları her yere götürebilirsin Windows inşa etmek xp. Eklenti içerisinde programların olduğu derlemeyi indirmeniz ve sağlığınız için kullanmanız yeterli.

    Kişisel bilgisayarlarda kullanılmak üzere tasarlanmış yeni bir Intel işlemci olan Prescott, son düzenli Intel Developers Forum'da resmi olarak tanıtıldı. Yeni nesil bir işlemci - yeni nesil bir işlemci olarak sunulur. İşlemci, 4-5 GHz saat frekanslarına ulaşmayı sağlayacak 90 nanometre teknolojisi kullanılarak yapılmıştır. İkinci seviye önbelleğin boyutu 1 MB'a yükseltildi - görünüşe göre, yeni teknik süreç nedeniyle böyle bir artış maliyet açısından haklı çıktı. Birinci seviye önbelleğin boyutu da iki katına çıktı ve iyileştirilmiş teknolojinin olumlu etkisi burada göze çarpıyor. Sistem veri yolu frekansı 800MHz'e yükseldi. Genel olarak, tüm işlemci bloklarında küçük iyileştirmeler yapılmıştır. Peki bu gösterişli Pentium 4, geliştiricilere ne getiriyor? yazılım? Artan önbellek elbette iyidir, genellikle ciddi bir performans sınırlayıcı faktör olan bellekten veri okuma ve yazma hızı hakkında biraz daha az düşünmeniz gerekir. Ancak, yine de, tüm sorunları ortadan kaldırmaz, veri miktarı büyük olduğunda, önbelleği ikiye katlamak bile önemli değildir.
    Artan sistem veri yolu frekansı, Intel'in yeni işlemcisinin oldukça dengeli olacağını ve genel sistem performansını yavaşlatan bariz darboğazların olmayacağını garanti ediyor. Ne yazık ki, bazı geçmiş işlemcilerde olduğu gibi, frekansı artırırken hızda orantılı bir artış sağlamadı.
    Bununla birlikte, yedi katmanlı yeni bir işlemci tasarımı gibi bir şey, yazılım geliştiricilerin pek ilgisini çekmez. Hangi yeni işlemci talimatlarının kullanılabilir hale geldiği, maksimum performansa ulaşmak veya en azından eskisinden daha yavaş olmamak için hangi optimizasyon tekniklerinin uygulanması gerektiği onlar için çok daha önemlidir. Intel'in önceki işlemcisi Pentium 4, performansı artırmak için önemli yazılım iyileştirmeleri gerektiriyordu. Geniş bir görev sınıfında Pentium 4, Pentium III'ten yalnızca aynı frekansta değil, aynı zamanda iki kata kadar çok daha düşük performans gösterdi. Aşağıda bunun neden olduğunu ayrıntılı olarak inceleyeceğiz, ancak küresel nedenin frekansı artırmak için çekirdekte önemli bir değişikliğe ihtiyaç duyulduğunu hemen not edebiliriz.
    Genel olarak, işlemci çekirdeği büyük değişikliklere uğramadı. Pentium 4'ün sevmediği her şey - her şeyden önce dallanma - her şey, 90 nanometre işlem teknolojisine dayalı modifikasyonlardan miras kaldı. Hatta biraz güçlendi. Sıklığı artırmak için, Prescott'un boru hattı derinliği artırılmıştır, bu nedenle şube yanlış tahmin boru hattının sıfırlanmasına yol açarsa büyük kayıplar beklenebilir.
    Ancak iyi haberler var, asıl haber, işlemci talimatları setinin genişletilmesidir. MMX, SSE, SSE2'nin tanıtılması, yazılım geliştiricileri, onlara sorması açısından memnun etti. ekstra iş program optimizasyonu için. Aksi takdirde, birçok program hızlı çalışmayı reddetti. Ancak Prescott 13'te ortaya çıkan yeni talimatlar, geliştiricilerin işini çok daha kolaylaştırıyor.

    MMX, 3DŞimdi! SSE, SSE2 - çalışma ve optimizasyon ilkesi

    Yeni talimatlara bakmadan önce yapalım kısa incelemeİşlemci komut setinin önceki SIMD uzantılarından, her şeyden önce, bir veya başka bir komut setini kullanırken olası performans kazancını değerlendirelim. Konuya aşina olanlar bu bölümü atlayabilir ve doğrudan yeni Prescott komutlarının açıklamasına geçebilirler.
    Burada bazen test incelemelerinde bu programın SSE için iyi optimize edildiği söylenir ve bu sayede şu veya bu işlemci gösterir iyi sonuçlar. SSE nedir? Adın kendisi, bu talimat dizisinin doğasından bahseder. SSE - Akış SIMD Uzantısı. Akış SIMD uzantısı. SİMD nedir? SIMD, Tek Yönerge Çoklu Veri anlamına gelir. Bir talimat - birkaç veri işleneni.
    İşlemciler genellikle nasıl çalışır, ilk Pentium olan 486 gibi işlemciler nasıl çalışırdı? Sadece. Birkaç hücre kaydı vardır, sayıları bir hücrede saklarlar - bir numara, işlemci komutları yürütür: iki kaydın içeriğini ekleyin, yeni bir numara alırsınız, bu numarayı üçüncü kaydın içeriğiyle karşılaştırın, eğer daha fazlaysa, talimat listesinde atla. Ancak bu yaklaşımla birlikte artan verimlilikle birlikte yavaş yavaş zorluklar ortaya çıkmaya başladı. Gerçek şu ki, işlemci, gerekli işlenenler önceki talimatlar tarafından hesaplanmadan bir sonraki talimatı yürütmeye başlayamaz. İşlemciye en az yüz çarpma bloğu koyabilirsiniz, daha hızlı sayılmaz, her zaman yalnızca bir blok çalışır, diğerleri ise hesaplamalarının sonuçlarını bekler. Ve böylece, işlemleri bir çift işlenenle değil, aynı anda birkaç çiftle gerçekleştirme fikrini buldular. Kişisel bilgisayarlardaki ilk modern SIMD uzantısı örneğinde nasıl görünüyor - MMX.

    Operasyon3. bölümBölüm 2Bölüm 1Bölüm 0Kayıt olmak
    70 50 30 10 1 kayıt
    +
    80 60 40 20 2 kayıt
    =
    150 110 70 30 sonuç

    Aynı zamanda, bir çift sayı değil, dört eklenir. Ayrıca çıkarma, çarpma vb. işlemleri de yapabilirsiniz. her biri aynı kayıtta olan, aynı anda birkaç işlenen çifti. Bu teknolojinin tanıtılması, saat frekansını artırmadan bilgi işlem modüllerinin sayısını artırarak işlemcinin performansını artırmayı kolaylaştırır. Daha doğrusu, artan modül sayısı değil, aynı anda birkaç işlenen çifti ile çalışabilme yeteneğine sahip olmalarıdır. Ancak programlama için önemli değil.
    Ancak, SIMD teknolojisini kullanmak için program kodu düzeyinde destek gereklidir. İşlemcinin kendisi, benzer işlemlere sahip birkaç veriyi tek bir kayda yerleştiremez. Bir program yazarken, programcı, dedikleri gibi, işlemcinin bu tür verileri bellekten MMX kayıtlarına yüklediğini ve bunlarla bu tür SIMD işlemlerini gerçekleştirdiğini kalemlerle açıkça belirtmelidir. Bunu yapmak için, kendisi bellekteki verileri kayıtlara iyi uyacak şekilde düzgün bir şekilde hazırlamalıdır. Bazı durumlarda, yüksek verimli SIMD talimatlarını kullanan kodu otomatik olarak üreten özel SIMD optimize edici derleyicileri etkili bir şekilde kullanmak mümkündür. Ancak kural olarak, etkili bir derleme için program kodunun önceden belirli kurallara uygun olarak yazılmış olması gerekir.
    Ancak prensipte tüm algoritmalar SIMD uzantılarına iyi bir şekilde uyarlanamaz. Böyle bir ifadeyi hesaplamaya çalışın - (a + b * c) * d. Üçten az takım vazgeçilmezdir. Aynı üç komut, (x, y, z, w) biçimindeki dört vektörün toplamını bulmak için kullanılabilir. (x1+x2+x3+x4, y1+y1+y3+y4, z1+z2+z3+z4, w1+w2+w3+w4). SIMD işlemlerinin normal işlemlerle yaklaşık aynı hızda gerçekleştirildiği göz önüne alındığında, bu gerçekçidir, çünkü işlemcinin zaten yapacak bir şeyi yoktur, SIMD için iyi optimize edilmiş programları yürütürken hızda çok sayıda artış görebilirsiniz.
    Bir geliştiricinin bakış açısından, birkaç tür SIMD optimizasyonu vardır. Doğrudan manuel kod optimizasyonu, oldukça verimli ve oldukça zaman alıcıdır. Derleyicinin, değişen derecelerde başarı ile elde edilen olağan SIMD kodu yerine üretme "iknası". Ve standart ortak işlemleri gerçekleştiren işlemci üreticileri tarafından sağlanan önceden optimize edilmiş işlev kitaplıklarının kullanımı. İkinci seçeneğin en çok tercih edilen olduğu açıktır.
    SIMD uzantıları arasındaki fark nedir, MMX'in 3DNow'dan farkı nedir! ve SSE vb.? Her şeyden önce, desteklenen veri türleri, kayıtların boyutu ve sayısı ve olası işlem kümeleri bakımından farklılık gösterirler. Veri türü en önemli fark, çünkü parametrelerin geri kalanı çeşitli uzantılar için aşağı yukarı benzerdir.
    İşlemci, çeşitli formatlardaki sayılarla çalışır, her şeyden önce, veriler kayan ondalık noktalı sayılara ve tam sayılara bölünür. Farklı görevler gerektirir farklı sunum veri. İkinci parametre, bayt cinsinden boyuttur. Kayan noktalı sayılar biçimindeki veriler, rasgele gerçek sayılara bir miktar doğrulukla yaklaşır, bir sayıya ne kadar çok bayt tahsis edilirse, doğruluk o kadar yüksek olur. Tamsayı başına bayt sayısı arttıkça, ait olabileceği değer aralığı da artar.

    MMX

    MMX eklentisi uzun süredir piyasada ve kişisel bilgisayarlar için standart hale geldi. MMX, Çoklu Ortam Uzantıları anlamına gelir. Multimedya verileriyle, görüntü ve sesle çalışmak üzere tasarlanmış bir uzantı.
    MMX teknolojisine sahip işlemciler, her biri 64 bit = 8 bayt olan 8 MMX kaydına sahiptir. MMX yalnızca tamsayılarla çalışır; 1, 2, 4 veya 8 baytlık veri boyutları desteklenir. Yani, bir MMX kaydı 8, 4, 2 veya 1 işlenen içerebilir.


    Vesaire. MMX kayıtlarında bulunan veriler eklenebilir, çarpılabilir, bileşen bileşen çıkarılabilir, çoklu kayıt için gerekli çeşitli özel işlevler uygulama ortamı, taşma olmadan toplama, aritmetik ortalamayı hesaplama ve bitler üzerinde mantıksal işlemler gerçekleştirme gibi işlemler. Bitsel ve, veya, xor. Doğru, paylaşmak imkansız, hala kısıtlamalar var. Ancak birçok işlem çok daha hızlı, hatta daha fazla yapılabilir. Ancak, özellikle MMX kullanımı özel manuel optimizasyon gerektirir, burada hiçbir derleyici önemli ölçüde yardımcı olmaz. Örneğin, MMX altında, algoritmaları MMX ile iyi çalışan çeşitli ses dosyaları codec'leri optimize edilmiştir. Üstelik programın tamamı bir bütün olarak değil, ana işi yapan küçük bir kısımdır ve bu durum optimizasyonu basitleştirir.

    SSE2 - tamsayı işlemleri

    Tanrı bilir ne zaman ortaya çıkan MMX'ten nispeten yakın zamanda Pentium 4 ile gelen bir yeniliğe nasıl hemen sıçradık? Hem SSE hem de 3DNow gitti! Sadece SSE2 temelde farklı iki parça içerir - SSE'nin devamı ve MMX'in devamı. SSE devamı gerçek sayılarla, MMX devamı tamsayılarla çalışır. SSE2'de, kayıtlar MMX'e kıyasla iki katına çıktı, yani örneğin 8 sayı değil, 16 oraya sığmaya başladı Talimat yürütme hızı değişmediğinden, SSE2 için optimize edildiğinde program kolayca iki kat artış aldı. verim. Aşağıdaki duruma dikkat etmek gerekir. Program zaten MMX için optimize edilmişse, komut sisteminin benzerliği nedeniyle SSE2 için optimizasyon nispeten kolaydır.
    Athlon XP, SSE2'yi desteklemez, dolayısıyla Pentium 4 ilk başta kodlama sırasında Athlon XP'yi kaybettiğinde ve SSE2 için codec optimizasyonundan sonra kazanmaya başladığında ilginç bir tablo gözlemlenebilir. MMX'i SSE2'de genişletme fikrini iyi bir fikir olarak kabul edebiliriz, çünkü çok fazla program MMX için optimize edilmemiştir ve optimize edilmiş olanlar iyi optimize edilmiştir. Intel'in, bazı tipik kodlama işlemlerini gerçekleştiren SSE2 işlev kitaplıkları için zaten optimize edilmiş yazılım geliştiricilere neredeyse ücretsiz olarak sağlama konusunda uzmanlaştığı belirtilmelidir. Ve bu durum, Pentium 4 işlemcilerin performansını "kurtarmada" önemli bir rol oynadı.

    SSE

    Şimdi SSE komut setini ele alalım. Pentium III işlemcilerle birlikte ortaya çıktı, ancak SSE kullanımının performansta radikal bir artış sağladığı Pentium 4'ün piyasaya sürülmesinden sonra tamamen "çiçeklendi".
    SSE, öncelikle geometrik hesaplamalarda, yani üç boyutlu grafik uygulamalarında kullanılan gerçek tipteki verilerle çalıştığı için ilginçtir. bilgisayar oyunları, 3DStudioMax gibi düzenleyiciler ve diğerleri. Quake gibi bilgisayar oyunları, video hızlandırıcılar kullanarak üçgenleri tekstüre etmeye başladığından beri, tamsayı hesaplamalarına çok az ihtiyaç duyuldu. Gerçek bir vektörü gerçek bir matrisle çarpmak gibi kayan nokta işlemlerinin hızı zirveye çıktı. Şimdi SSE'nin bir geliştiriciye neler sunabileceğini görelim.
    SSE'nin piyasaya sürülmesiyle işlemci, standart x87 mimarisi kayıtlarına ek olarak, her biri 4 adet 32 ​​bit içeren 128 bit boyutunda 8 yeni büyük kayıt aldı. gerçek sayılar.

    3. bölümBölüm 2Bölüm 1Bölüm 0
    kayıt 7
    kayıt 6
    kayıt 5
    kayıt 4
    kayıt 3
    * * * * kayıt 2
    2 55.9 -1.9e101.567e-6kayıt 1
    0.7 -100.0 11.2 0.5 kayıt 0

    Dörtlü işlenenlerle, aşağıdaki işlemleri bileşen bileşen gerçekleştirebilirsiniz: iki dörtlü sayı toplama, çıkarma, çarpma, bölme. 4 (karşılıklı) karekökü aynı anda tam veya yaklaşık olarak hesaplayın. Ayrıca, kayıtların içeriğini karıştırabilir, kaydın bir bölümünden diğerine veri aktarabilir ve diğer bazı benzer işlemleri gerçekleştirebilirsiniz. Bununla birlikte, verilerin taşınması, bunların eklenmesinden daha hızlı değildir, bu nedenle SSE'nin etkin kullanımı, yalnızca hazırlanmış, uygun şekilde paketlenmiş veriler üzerinde mümkündür.
    Ve Pentium 4 işlemcide, bir SSE işlemi benzer bir sıradan işlem kadar uzun sürer. Yani optimizasyon ile 4 kat performans artışı elde edebilirsiniz. Daha kesin olmak gerekirse, yeni büyük kayıtların kullanılması nedeniyle biraz daha fazla. Ancak, tüm hesaplamalar SSE için etkili bir şekilde optimize edilemez. "İyi" bir probleme örnek olarak, dört boyutlu bir matrisin dört boyutlu bir vektörle çarpımı verilmelidir. Ek ücret ödemeden dört kat daha hızlı.
    Her şeyden önce, SSE'nin kullanılması, modern işlemcilerin, üç boyutlu bir sahneyi oluşturan üçgenlerin köşelerinin dönüşümünü gerçekleştirirken en son video hızlandırıcılarla başarılı bir şekilde rekabet etmesini sağlar. Başka bir şey de, işlemcinin başka birçok görevi olması ve mümkünse video hızlandırıcı ile paralel çalışması için boşaltmak daha iyidir.
    Peki ya Athlon XP? Aslında, alışılagelmiş Athlon'a kıyasla ana yeniliklerden biri SSE teknolojisinin tanıtılmasıydı. Normal koda kıyasla yaklaşık iki kat hızlanma bekleyebilirsiniz. Bununla birlikte, Athlon XP'de uygulanan SSE'nin "daha kötü" olmadığı, ancak sıradan kodun yürütülmesinin son derece verimli olduğu belirtilmelidir. Aynı frekansta, yalnızca SSE komutlarını kullanan Athlon XP ve Pentium 4 benzer performansa sahiptir. Athlon XP'nin koşullu atlamalar yaparken de bir avantajı vardır, bu yüzden bunun için oldukça iyidir. Ancak Pentium 4, SIMD komutlarını kullanırken bazen önemli ölçüde hız kazanmasına izin veren daha yüksek frekanslara ulaşır.

    3DŞimdi! ve 3 AMD Strateji Hatası

    Şimdi, bir anlamda, AMD'nin işlemci talimatlarının tescilli bir uzantısı olan SSE'ye bir rakip düşünelim. SSE'yi 3DNow'a rakip olarak adlandırmak daha doğru olabilir! çünkü daha sonra geldi. Hatırlatayım, 3DNow! ilk olarak Intel Pentium II rakipleri olan AMD k6-2-3D ​​işlemcilerde uygulandı. Aslında, 3DNow! önek veya isterseniz sonek 3D. Neden 3DNow! güvenli bir şekilde SSE'ye rakip olarak adlandırılabilir mi? Bu sadece bu uzantıların farklı "tescilli" ilişkileri meselesi değildir, sonuçta tek bir işlemci üreticisi tarafından oluşturulabilirler. Bu uzantıların her ikisi de gerçek sayılarla çalışır ve geometrik uygulamalarda kullanılmak üzere tasarlanmıştır.
    Yani, 3DNow! Bu uzantı birçok yönden SSE'ye benzer, ancak önemli farklılıkları da vardır. Ayrıca 8 register var ama 128 bit değil 64 bit. Buna göre 4 değil sadece 2 numaraya uyuyorlar. Benzer bir SSE seti var Aritmetik işlemler kayıtlar ile. İki işlenen çiftini topla-çarp-böl vb. Ayrıca bulma işlemleri de vardır (ters) kare kök, kesin ve daha hızlı yaklaşımlar.

    Bölüm 1Bölüm 0
    kayıt 7
    kayıt 6
    kayıt 5
    kayıt 4
    * * kayıt 3
    10000.1 6.7 kayıt 2
    -0.5 1.5e7kayıt 1
    2.0 1.0 kayıt 0

    Tahmin edebileceğiniz gibi, 3DNow! için tamamen optimize edilmiş kod bölümlerinde, iki işlenen çifti üzerinde işlemlerin aynı anda yürütülmesi nedeniyle performansta iki kat artış bekleyebilirsiniz. SSE kullanırken olduğundan daha az umut verici görünüyor. Aslında, özellikle manuel olarak optimize etmeye başlarsanız, maksimum performans artışını aramak daha iyidir. Bu durum, Intel işlemcilerin pazardaki geleneksel olarak daha büyük payıyla birleştiğinde, 3DNow'un yayılmasını engelleyen önemli faktörlerden biri haline geldi! geliştiriciler arasında.
    Elbette, 3DNow'un dağıtımını etkileyen SSE işlemcilerinin daha büyük bir payının "paylaşma" faktörü! maksimum. Kelime oyunu için üzgünüm. Ayrıca, Pentium III'te SSE kullanımından elde edilen kazanç - eski rakipler Athlon işlemciler 3DNow ile! - Pentium 4'tekinin yaklaşık yarısı kadar düşük. Ve 3DNow kullanmanın etkisine benzer! v AMD Athlon.
    Ancak 3DNow! ile arasında önemli bir fark daha var! Bir kaydın içeriğini birlikte ekleyebilirsiniz. Yani sadece "dikey" işlemleri değil, yatay işlemleri de gerçekleştirmek. İki üç boyutlu vektörün skaler ürünü olan SSE'de temel geometrik işlemlerden birini gerçekleştirmeye çalışın. Bundan iyi bir şey çıkmayacak. Uzun bir SSE kaydının öğeleri basitçe eklenemez, ek kayıtlar kullanılmalıdır. Herhangi bir SSE olmadan daha hızlı olmayacak, hatta belki daha yavaş. Ve skaler çarpım, bir vektörün normunu bulurken, noktalar arasındaki mesafe dahil olmak üzere çok yaygındır. Bu bağlamda 3DNow! daha fazla esneklik nedeniyle daha çok tercih edilir görünüyor.
    lehine konuşan bir diğer önemli durum, derleyici tarafından oldukça verimli otomatik optimizasyon olasılığıdır. SSE, otomatik veri organizasyonu için çok külfetlidir - kayıt boyutları büyüktür -. Kayan nokta hesaplamalarıyla dolu kodda, yaklaşık bir buçuk performans artışı ücretsiz olarak elde edilebilir. Ancak Intel, SSE'yi destekleyen kendi optimize edici derleyicisini yoğun bir şekilde tanıtırken ve tabii ki 3DNow hakkında değilken, AMD böyle bir derleyici yaratma zahmetine girmedi! bilmemek. İşler, AMD'nin Spec işlemci testleri (www.spec.org) için kaynak kodunu derlemek üzere Intel'in derleyicisini kullandığı noktaya geldi. Kendinize ait kimse yok, test uygulamasından maksimum performans elde etmek için en verimli derleyiciyi kullanmanız gerekiyor.
    Geliştiriciler, elbette, programları bir kez daha optimize etmeye çalışmadılar ve en yaygın Intel işlemciler için istenen optimizasyonla ilgili çok fazla sorun var. Ya SIMD optimizasyonunun hiç olmadığı, ardından Athlon işlemcinin özellikle Pentium 4'e kıyasla mükemmel bir şekilde kendini gösterdiği ortaya çıktı.
    AMD'nin 3DNow ile ciddi anlamda hesap hatası yaptığını söyleyebiliriz! İlk sunumda tabii ki bir miktar lokal etkisi oldu. Temel olarak, reklamcılık, optimize edilmiş popüler uygulamalar yalnızca hızda önemli bir artış gözlemlenen OpenGL sürücüleri not edilebilir. Komut uzantılarını "kıramayacakları" için, işlemcilerinde tüm Intel yeniliklerini katı bir şekilde uygulamalılarsa daha iyi olur. Kullanılmayan 3DNow! Athlon XP'de, SSE2 komut sistemi kadar verimli olmasa bile. İşlemci, neredeyse hiç zayıf noktası olmayan altın renginde olurdu.
    İleriye baktığımda, sonunda hayatın AMD'yi işlemcileri için bir derleyici ile ilgilenmeye zorladığını söyleyeceğim. Yeni AMD x86-64 mimarisi yeniden derleme gerektirdiğinden mevcut uygulamalar yeni fırsatlardan yararlanmak için. AMD Athlon 64 işlemcileri de 3DNow!'u korudu, böylece SSE ve 3DNow! için otomatik optimizasyonun etkinliğini karşılaştırmak mümkün hale geldi. Gerçekten ilginç olacak.

    SSE2

    Son olarak, şu anda piyasada bulunan x86 uyumlu kişisel bilgisayarların en son SIMD uzantısı olan SSE2'ye bakalım. Tamsayı bileşenini daha önce tartışmıştık. Ancak SSE2'de yalnızca tamsayılarla çalışma yönergeleri görünmedi. Aynı 8 büyük 128 bitlik yazmaç artık dört adet 32 ​​bitlik gerçek sayı değil, iki adet 64 bitlik yüksek hassasiyetli gerçek sayı içeriyor olarak yorumlanabilir. Sıradan hassasiyetle yapılan hesaplamalar büyük hatalara yol açtığında yüksek hassasiyetli sayılar kullanılır. Tüm işlemler SSE'den aktarıldı, yalnızca dört çift işlenenle değil, iki çift işlenenle çalışıyorlar. Doğru, karekökün yaklaşık hesaplaması elbette gitti.

    Bölüm 1Bölüm 0
    kayıt 7
    kayıt 6
    kayıt 5
    kayıt 4
    kayıt 3
    * * kayıt 2
    -1.5e10 0.00001 kayıt 1
    1e-25 5.5 kayıt 0

    3DNow!'un bir analogu olduğu ortaya çıktı, ancak bir kaydın içeriğini bir araya getirme esnek işlemi olmadan.
    Peki ya hız? Bir araştırmacı bir keresinde bana hesaplama işlevini SSE için en iyi nasıl optimize edebileceğimi sordu, bir yerlerde bir büyüklük sırası elde edebileceğinizi duydu. Ne tür veriler kullandığını merak ediyordum. Hesaplamaların doğruluğundan bir kez daha emin olmak için artan doğrulukla ortaya çıktı. Ardından, performansı optimize etmek için SSE2'yi kullanmalı ve performansta "yalnızca" iki kat artışla yetinmelidir.
    Hesaplamalı programların performansını değerlendirmek için basit bir kural türetebiliriz: eğer program SSE2 için özel olarak optimize edilmişse, Athlon XP'ye göre Pentium 4 işlemcilerde aşağı yukarı hızlı olacaktır. En yüksek frekansta sollayın. Özel bir optimizasyon yoksa, ilgili dereceye sahip Athlon XP işlemciye kaybedecektir.

    Yeni Prescott Talimatları

    Prescott işlemcide uygulanacak olağan talimat dizisindeki yenilikleri tanımanın ve bunların kullanışlılığını değerlendirmenin zamanı geldi.
    Her şeyden önce, gerçekten ne istiyoruz? Öncelikle yazılım geliştiricileri kastediyorum.
    Başta bilgisayar oyunları olmak üzere üç boyutlu programların hemen hemen tüm geliştiricilerinin küçük bir hayali vardır: geometrik nesneleri, vektörleri ve matrisleri temsil eden kullanışlı, hızlı bir sınıf kitaplığına sahip olmak.

    sınıf vektörü
    {
    kayan x,y,z;

    halk:

    satır içi arkadaş Vektör operatörü +(const Vector &a, const Vector &b); //ek

    satır içi kayan norm() const; // vektör uzunluğu
    satır içi kayan norm2() const; // vektör uzunluğunun karesi

    satır içi arkadaş kayan Nokta(const Vector &a, const Vector &b); // skaler çarpım
    };


    Böylece sadece a=b+c yazabilir ve sıkıcı bir şekilde a.x=b.x+c.x yazmak zorunda kalmazsınız; a.y=b.y+c.y; a.z=b.z+c.z; Ve her zaman yolunda bir şeyler vardı. Veya kötü bir derleyici derlenmiş vektör toplama işlevi o kadar kötü çağrılıyor ki, performans ek yükü yazmanın rahatlığından daha ağır basıyor. Daha sonra, SSE'nin yardımıyla vektörleri toplamanın uygun olduğu ve skaler ve vektörel çarpımı hesaplamanın oldukça zahmetli ve yavaş olduğu ortaya çıktı.
    Ve sonra küçük bir mucize gerçekleşti, yeni talimatlar, vektör matematiği de dahil olmak üzere SSE ve SSE2 için optimize etmeyi çok daha kolaylaştırmalıdır.
    Hadi daha yakından bakalım.
    En önemli şey: son olarak, bir SSE kaydının öğelerini birbirine oldukça etkili bir şekilde eklemek mümkün hale geldi.


    Böylece, ek yazmaçlar kullanmadan iki vektörün skaler çarpımını veya bir vektörün normunu hesaplamak için üç komutu kullanabilirsiniz. Tabii ki, böyle bir yatay toplama komutunun performansıyla ilgili endişeler var. Komut uygulandığı için büyük olmamalıdır. Umalım ki bu talimatı yürütme işlemcinin ardışık düzenini sıfırlamaz.
    Benzer şekilde, aynı kaydın öğelerini ekleyemez, ancak çıkaramazsınız.
    Artık aynı SSE2 kaydında bulunan iki sayı arasında toplama ve çıkarma yapmak mümkündür. İki elementin birleştirilmiş toplama-çıkarma işlemi için de bir talimat vardı.

    y2x2
    ADDSUBPD
    y1x1
    =
    y1+y2x1-x2

    Bu talimatın ortaya çıkışı, karmaşık sayıların çarpımının doğasından kaynaklanmaktadır. (a+bi)*(c+di)=a*c-b*d+(b*c+a*d)i Artık karmaşık sayılarla SSE2 hesaplamaları için optimizasyon büyük ölçüde basitleştirildi. Aslında SSE2, 3DNow!'a benzer hale geldi, yalnızca artan hassasiyetle sayılarla çalışıyor.

    İşte yeni talimatların bir tablosu.

    TalimatTanım
    Yatay kayıt işlemleri
    HADDPSSSE kayıtlarının içeriğinin yatay olarak eklenmesi
    HSUBPSSSE kayıtlarının içeriğinin yatay olarak çıkarılması
    HADDPDbir SSE2 kaydının iki elemanının eklenmesi
    HSUBPDSSE2 kaydının diğer iki elemanından birinin çıkarılması
    Her bakımdan, geliştiricilerin uzun süredir beklediği yararlı komutlar, otomatik ve manuel optimizasyonu büyük ölçüde basitleştiriyor.
    Veri Yükleme Komutları
    MOVSHDUPyalnızca 2. ve 4. 32 bitlik öğeyi kopyalayarak hedef yazmaca veri yükler
    MOVSLDUPyalnızca 1 ve 2 32 bitlik öğeyi kopyalayarak hedef yazmaca veri yükler
    MOVDDUPkaynak kaydın ilk yarısını kopyalayarak ve ikiye katlayarak hedef yazmaca veri yükler
    Otomatik ve manuel optimizasyon için kullanışlıdır.
    Birleşik toplama-çıkarma
    ADDSUBPS EKLE(x1,y1,z1,w1) * (x2,y2,z2,w2) =
    (x1-x2,y1+y1,z1-z2,w1+w2)
    ADDSUBPD(x1, y1) * (x2, y2) =
    (x1-x2, y1+y2)
    Karmaşık sayılarla işlemlerin uygulanmasını önemli ölçüde basitleştirir. Programların otomatik optimizasyonunda yardımcı olur.

    Nispeten nadir ince manuel ve otomatik optimizasyon için.
    Veri dönüşümü
    FISTTPTek yeni x87 talimatı. Yardımcı işlemci yığınının içeriğinin bir tamsayı türüne hızlı bir şekilde dönüştürülmesini gerçekleştirir.
    Derleme sırasında bir programı otomatik olarak optimize etmek için kullanışlıdır. Bir zamanlar bu talimatın standart x87 komut setine eklenmesi unutulmuş, şimdi ise bu eksiklik giderilmiştir.
    Hyper-threading desteği geliştirmeleri
    MONİTÖR/MWAITİşlemci, belirtilen bellek aralığına bir yazma olayı dinler ve uykuda olan iş parçacığını uyandırır.
    Programların ve hizmetlerin optimizasyonunu basitleştirir işletim sistemi Hyper-Threading teknolojisini ve genel olarak multi-threading'i desteklemek için.

    Yeniliklerin değerlendirilmesi ve AMD x86-64 ile karşılaştırılması

    Komut sistemlerine yapılan eklemelere bakıldığında, Prescott işlemcinin komut setinin bir miktar uyum ve bütünlük kazandığını rahatlıkla söyleyebiliriz. onunla yaşayabilirsin uzun zaman radikal yeniliklerin ortaya çıkmasından önce. Kayıt sayısının artmaması üzücü, ancak bunu x86 makine komut formatının sınırlamaları nedeniyle uyumluluğu kaybetmeden yapmak zordu. Fisttp verimli dönüştürme komutu gibi her türlü güzel küçük şey tamamlandı. SIMD için optimize edilmiş kodun otomatik olarak oluşturulması önemli ölçüde basitleştirildi. İşlemci, bilinmeyen fiyata ek olarak, yalnızca bir zayıf noktaya sahip olabilir - boru hattının büyük bir derinliği ve bu nedenle, koşullu sıçramalar için güçlü bir "hoşlanmama". Bununla birlikte, boru hattının uzaması, daha yüksek frekanslara geçmenin gerekli bir kötülüğü gibi görünüyor. Şahsen bunun Intel'in son yıllardaki en güzel işlemcisi olduğunu düşünüyorum. Şimdi güç tüketimi, soğutma gereksinimleri konularına değinmiyoruz - umalım ki bununla ilgili bir sorun çıkmasın. Fiyata gelince, aşırı olmayacağına inanmak için sebepler var. İkinci seviye önbelleğin hacmine bir göz atalım - 1MB, o zaman karşılık gelen Celeron neyi temsil edecek? 512 KB önbelleğe sahip olacak mı? Artık Celeron değil, bir çeşit cep canavarı olacak. Birçok uygulama için 256 KB önbellek bile yeterlidir, bu nedenle maliyet tasarrufu için bolca yer vardır. Söylemeye gerek yok, yeni bir teknolojik sürece geçiş büyük faydalar vaat ediyor.
    Ancak, işlemci fiyatını önemli ölçüde artırabilecek bir durum var. Değerli rakipleri olacak mı? Böyle bir rakip karşısında AMD'den yeni bir 64-bit işlemci - Athlon 64 görmek isteriz. özellikler zaten çok şey söylendi, geliştiricilerin ilgisini nasıl çekebileceğini görelim.
    AMD nihayet SSE2 desteğini uygulamaya koydu ki bu güzel bir şey. Artık Intel işlemciler, programda yalnızca SSE2 kullanma gerçeğinden yararlanamayacak. Bildiğiniz gibi, Athlon 64'ün çeşitli çalışma modları vardır - uyumluluk modu ve aslında yeni AMD x86-64 mimarisinin tüm olanaklarını açan 64-bit modu. Uyumluluk modunda yeni işlemci, yazılım geliştiricinin bakış açısından 3DNow! özellikli bir Pentium 4 ile sunulur! Ve bazı belirli eksikliklerden yoksun, SIMD için optimize edilmemiş kodun bir şekilde iğrenç bir şekilde yürütülmesi ve dallara karşı büyük bir hoşnutsuzluk. Yeni AMD işlemcinin, tabii ki yüzüğe ulaşabilirse, normal Pentium 4'e layık bir rakip olacağını söylemek güvenlidir.
    Geniş bir uygulama yelpazesini kapsayan entegre testlerde, geleneksel bir Pentium 4 işlemcinin yeni Athlon'un performansıyla eşleşmesi için çok önemli bir frekans avantajına ihtiyaç duyacağı bile kesin olarak tahmin edilebilir. Evet, aslında, işlemci henüz piyasada olmasa da, frekans başına performans katsayısının Athlon 64 için iki kat daha yüksek olduğu birçok prototip testi var.
    Ancak yeni özel 64 bit modu geliştiriciye ne sunuyor? Her şeyin ve her şeyin güzel bir şekilde yeniden derlenmesine ek olarak, üç ana şey vardır - kayıt sayısını iki katına çıkarmak, 64 bit aritmetik ve uygulamanın sanal adres alanı 2 GB'ın üzerine çıktı. 64-bit aritmetik kendi başına güzel, ancak günümüzün masaüstü sistemlerinde oldukça dar bir kapsamı var. Çoğu uygulama için 32 bit yeterlidir. AMD, 64 bit tamsayı aritmetiği için oldukça alakalı bir uygulama alanı buldu - bazı kriptografik görevlerin yürütülmesi önemli ölçüde hızlandırıldı.
    Adres alanının genişletilmesi, yakın gelecekte masaüstü uygulamalarında kesinlikle talep görecek, ancak önümüzdeki yıllarda büyük olasılıkla 2 GB'tan fazla belleğe sahip çok fazla kişisel bilgisayar olmayacak.
    Kayıt sayısını ikiye katlamak için kalır. Belli olmak Ek özellikler kullanılan değişkenleri belleğe gereksiz erişim olmaksızın kayıtlarda saklamak için. Kayıtlar kullanılarak fonksiyon parametrelerinin daha verimli bir şekilde aktarılması mümkün olacaktır. Üstelik geliştiricinin bu konuda endişelenmesine gerek yok, optimize eden derleyici her şeyi yapacak. Kayıt sayısının arttırılması, bağımsız talimatların koda daha verimli bir şekilde yerleştirilmesine de izin verecek ve bu da işlemcinin daha yoğun bir şekilde yüklenmesini sağlayacaktır. Ve bu aynı zamanda derleyicinin cesur omuzlarına da düşecek. İkincisi bana en önemli avantaj gibi görünüyor. Gerçek şu ki, modern işlemciler, bellek yüklemeden takas kayıtlarını verimli bir şekilde düzenlemenize izin veren çok sayıda geri yazma arabelleğine sahiptir. Hafızaya gönderilen ve hemen talep edilen veri hafızadan beklenmez, tampondan anında yüklenir. Bu arada, Prescott bu tür tamponların sayısını artırdı.
    Evet, sunucu sistemlerinde yeni AMD işlemci için iyi beklentiler olduğunu rahatlıkla varsayabiliriz. Dallar onu korkutmaz, adres alanı geniştir, yeterince kayıt vardır, hızlı bir şekilde şifreleyebilir. Bütün bunlar bir veritabanı sunucusu için fena değil. Nispeten düşük fiyat, onu belirli bir niş içinde ideal hale getirebilir.
    Bununla birlikte, hesaplama açısından ağır olan olasılıklarını göz önünde bulundurun grafik uygulamaları kişisel bilgisayarlar için, öncelikle üç boyutlu bilgisayar oyunlarında. Aslında, modern bir oyunda performansı oluşturan nedir? İki ana bileşenden: sahnenin üst düzey akıllı işlenmesi, portal teknolojisi vb. kullanılarak görünmez ilkellerin kesilmesi, yapay zeka hesaplaması ve fiziksel model. Ve ikinci bileşen, verileri video hızlandırıcıya hızlı bir şekilde iletme yeteneğidir. Büyük saat hızı ve yüksek frekans sistem veri yolu, Intel'in yeni işlemcisini VPU'yu "besleme" sorununda başarısızlığa uğratmamalıdır. Gerçek oyun motorunun performansı ile her şey daha karmaşıktır. AMD tarafında, bu tür kodlarda çok yaygın olan şubelere karşı daha sadık bir tutum var. Çok sayıda rastgele dallanma, frekanstaki herhangi bir avantajı dengeleyebilir. Ve son olarak, 3DNow! modern oyunlar. Ayrıca, AMD Athlon 64'ün uygulamaları x86-64'ün yeni özelliklerini kullanacak şekilde yeniden derlemesi arzu edildiğinden, 3DNow için optimizasyon! geliştiricinin çabasını gerektirmeden optimize eden derleyici tarafından otomatik olarak üretilecektir.
    Intel Prescott işlemcide yeni görünmüyor kullanışlı talimatlar, optimizasyonu büyük ölçüde kolaylaştıran, ilk bakışta Pentium 4'ün doğasında açık bir şekilde zayıf noktaları olmayan AMD işlemciye bir ön tercih verirdim. Ve öyleyse - bakalım, önceden söylemek zor.
    Intel, geliştiricilere çok sayıda optimize edilmiş özellik sağlar, kesinlikle alacaklar maksimum hızlanma yeni talimatların uygulanmasından. AMD de x86-64'ün yeteneklerini tam olarak kullanan kitaplık setini duyurarak bu yola girdi.
    İşte düşündüğüm şey, Intel'in, özellikle başarılı olursa, AMD x86-64 mimarisini Prescott işlemcilerde uygulayacağına dair garip söylentiler vardı. Biraz inanılmaz, daha önce hiç olmamıştı. Aksine AMD, zaten işlemcilerin çıkışını geciktirdiği için yeni Athlon'da Prescott işlemci için ek talimatlara neden yer vermiyor? Ardından, Intel tarafından optimize edilmiş tüm işlev kitaplıkları AMD işlemcilerde sorunsuz çalışır. Uygun talimatlar nedeniyle Prescott işlemcinin herhangi bir avantajı olmayacaktır. Üstelik ilk bakışta bunu yapmak çok da zor değil; AMD işlemciler uzun süredir esnek 3DNow işlemleri gerçekleştiriyor! Aksine, işlemci çekirdeğinin daha uygun mimarisi, her şeyden önce daha düşük bir frekans, daha fazla sayıda yürütme modülü vb. Nedeniyle AMD'nin bu tür "yatay" veri işlemlerini başlatması beklenebilir.
    Umarım bu önemli eksiklik düzeltilir, özellikle AMD o zaman işlemcilerinde her zaman olduğu gibi SSE uzantılarını uygulamak zorunda kalacağı için.

    Çalıştırma Yok (NX)

    No-eXecute (NX), bellek sayfalarının çalıştırılabilir kod içermediği şeklinde işaretlenmesini sağlayan bir işlemci özelliğidir. Bu özellik, CPU'nun sistemi saldırılara karşı korumasını sağlar. kötü amaçlı yazılım. NX özelliği, kötü amaçlı yazılımın barındırılmasını önler program kodu kullanılabilir bellek alanları. Windows 8, sistemlerin NX'i destekleyen işlemcilere sahip olmasını gerektirir ve uygun güvenlik ve olası güvenlik açıklarından kaçınmak için NX özelliğinin etkinleştirilmesi gerekir.

    Bu bölümde terim NX doğrudan AMD tarafından tanımlanan NX işlemci bitini veya Intel tarafından Microsoft Windows'ta Veri Başlatma Önleme (DEP) özelliğini desteklemek için tanımlanan eşdeğer XD işlemci bitini ifade eder.

    DEP, kötü amaçlı kodların bellek sayfalarından çalıştırılmasını önlemenizi sağlar. veri içeren. Windows'un 32 bit sürümü, DEP'yi desteklemek için aşağıdaki özelliklerden birini kullanır:

      Sayfaları çalıştırılabilir koddan (NX) korumak için işlemci işlevi

      Intel tarafından tanımlanan eXecute Disable (XD) bit işlevi.

    Bu işlemci özelliklerini kullanmak için x86 (32 bit) işlemcinin Fiziksel Adres Uzantısı (PAE) modunda çalışıyor olması gerekir. Windows'un 64 bit sürümü, 64 bit uzantılar için NX işlemci özelliğini ve Intel Itanium (IPF) işlemci ailesi için özel PTE izin alanı değerlerini kullanır.

    DEP'ye ek olarak, Adres Alanı Konum Rastgeleleştirme (ASLR), sistem önyüklenirken yürütülebilir görüntüleri rastgele konumlara taşıyarak kötü amaçlı kodun kasıtlı olarak yürütülmesini zorlaştırır. ASLR ve DEP yalnızca birlikte kullanıldığında etkilidir. Bu iki önemli önlemin etkili bir şekilde çalışması için Windows Güvenliği NX işlevi etkinleştirilmelidir. Daha fazla bilgi için bkz. Windows Programları için ISV Güvenlik Önlemleri .

    Fiziksel Adres Uzantısı (PAE)

    NX işlemci özelliğini kullanmak için işlemcinin Fiziksel Adres Uzantısı (PAE) modunda olması gerekir. PAE, x86 işlemcilerin bu özelliği destekleyenlerde 4 GB'den fazla fiziksel belleğe erişmesine izin veren bir işlemci özelliğidir. Windows sürümleri. Intel Itanium ve x64 işlemci mimarileri doğal olarak 4 GB'tan fazla fiziksel belleğe erişebilir ve bu nedenle bir PAE eşdeğerine sahip değildir. PAE, yalnızca x86 sistemlerinde çalışan 32 bit Windows sürümlerinde desteklenir.

    NX işlevini destekleyen bir işlemciye sahip bir sistemde DEP işlevi etkinleştirilirse, PAE işlevi otomatik olarak etkinleştirilir.

    SIMD uzantıları (SSE2)

    NX'i destekleyen tüm işlemciler aynı zamanda SIMD Uzantıları 2'yi (SSE2) de destekler. SSE2, SIMD işlemcisi için ek bir talimat setidir. AMD, AMD64 işlemcilerinin Opteron ve Athlon 64 serilerinde SSE2 desteğini de içeriyor. NX'i destekleyen tüm işlemciler SSE2'yi de destekler. Birçok Windows uygulamaları 8, SSE2 komut seti ile kod yollarına sahiptir. SSE2 zorunlu ihtiyaç Windows 8 için.

    uygulama alanı

    Tüm modern işlemciler NX özelliğini destekler. NX özelliği BIOS'ta devre dışı bırakılabilir. Mevcut telemetriye dayalı olarak, Windows® 7 çalıştıran tüm sistemlerin yüzde birinde NX özelliği şu nedenlerle devre dışı bırakılmıştır: yanlış ayar BIOS.

    Windows'un 32 bit sürümlerinde NX, PAE'yi destekleyen işlemciler gerektirir. Tüm 64 bit işlemciler, AWE'yi destekledikleri için NX'i destekler. Bu nedenle, PAE'yi desteklemeyen daha eski 32 bit işlemcilerin kullanılması WOA'yı veya Windows Server'ı etkilemez (Windows Server 2012 yalnızca 64 bit sistemdir). Modern sistemleri veya Windows 7 logosu gereksinimlerini karşılayan sistemleri çalıştıran müşterileri, bu sistemler aynı zamanda NX özelliğini destekleyen ve etkinleştiren PAE özellikli 32 bit işlemcilere sahip olduğundan işlemci gereksinimi etkilemez. Bu, PAE/NX desteği olmayan çok eski 32 bit işlemcilerde Windows 7 çalıştıran yalnızca az sayıda istemciyi etkileyecektir.

    Windows 8 ve Windows Server 2012 için PAE gereklidir. Bu gereksinim, PAE'yi desteklemeyen eski donanımları kullanan az sayıda kullanıcıyı etkiler. Hatalar, Windows 8 yanlış yapılandırılmış sistemlere yüklendiğinde ortaya çıkar. Sanal makineler(VM). Windows Kurulumu, 0xc0000260 hatasıyla başarısız olur ve Windows 7'ye geri döner.

    Visual Studio, varsayılan olarak SSE2 yönergeleri sağlar. Bu talimatlara erişen uygulamalar, SSE2'yi desteklemeyen eski işlemcilere sahip sistemlerde başarısız olur, SSE2 talimatlarında açıklandığı gibi /arch:SSE belirtildiğinde oluşturulur.

    Destek Gereksinimleri

    Bu bölümde, Windows 8 çalıştıran sistemlerin işlemcilerinin PAE, NX ve SSE2 gereksinimlerini desteklediğini doğrulayan önlemler açıklanmaktadır.

    Windows 8 logosu gereksinimi

    Windows 8 donanım sertifikası gereksinimi, uygun aygıt ve sürücü sistemi davranışını sağlamak için tüm sürücülerin veri yürütme önleme korumasıyla birlikte çalışmasını gerektirir. Sürücüler yığından, disk belleği havuzundan veya oturum havuzundan kod yürütmemelidir. PAE modu etkinleştirilmişse, sürücüler önyükleme sırasında çökmemelidir. Sistem belleniminde NX etkinleştirilmiş olmalı ve DEP ilkesi şu şekilde ayarlanmalıdır: Herzaman kapalı. Sistemin bu NX destek gereksinimini karşıladığını doğrulamak için bir sertifika testi eklenmiştir.

    Daha fazla bilgi için bkz. Windows Donanım Sertifikası Gereksinimleri.

    Windows'u kurarken donanım uyumluluğunu kontrol etme

    programı Windows kurulumu kurulmakta olan sistemde PAE, NX ve SSE2'yi desteklemek için bir donanım uyumluluk denetleyicisine sahiptir. PAE, NX ve SSE2 için işlemci desteği gereksinimini karşılamayan sistemler, Uyumluluk Raporunda Windows 8 için donanım kilitleri olarak işaretlenir ve şu mesajı görüntüler: Bilgisayarınızın işlemcisi Windows 8 ile uyumlu değil.

    Pirinç. 1. İşlemci uyumsuzluğuyla ilgili hata mesajı

    Not

    Bu destek gereksinimleri denetimi yalnızca yeni Windows Kurulum ve Yükseltme Yardımcısı'nda mevcuttur. Windows 8, kurulum medyasındaki Kaynaklar klasöründe bu kontrolü yapmayan Kur'un alternatif bir sürümünü içerir. PAE/NX/SSE2 destek gereksinimlerini karşılamayan bir sistemde Windows Installer'ın bu alternatif sürümünü kullanmaya çalışan müşteriler, yükleme sırasında bir hata mesajı görecek ve daha sonra işletim sisteminin önceki sürümüne geri alınacaktır.

    Yükleme sırasında Windows Dağıtım Hizmetleri'ni (WDS) kullanmak gibi bir ortamdan veya bir ağdan önyükleme yaparken Windows kontrolü uyumluluk sağlanmaz. Bu tür senaryolarda, NX ve SSE2 desteği olmayan bir sistem kritik bir hata üretecektir (bu, bir sonraki bölümde açıklanmıştır). Temel iyileştirmeler) yükleyici Windows'u yüklemeye çalıştığında.

    Temel iyileştirmeler

    SSE2 komutlarını ve NX işlevini destekleme gerekliliğiyle uyumluluğu doğrulamak için Windows çalışması 8 Bu işletim sisteminin çekirdeği, başlatma sırasında bu işlevleri kontrol eder. NX veya SSE2'yi desteklemeyen sistemler başlatılamaz Windows çekirdeği 8. Ürün yazılımında NX'i devre dışı bırakabilen sistemlerde, yanlış yapılandırılmış ürün yazılımının önyüklemenin başarısız olmasına neden olmaması için bu ayar geçersiz kılınır. NX veya SSE2 desteği olmayan bir sistemi başlatmaya çalışmak, önemli bir hatayla sonuçlanacaktır. 32 bitlik bir sistemde, kullanıcılar 4 bilgi satırıyla birlikte bir UNSUPPORTED_PROCESSOR (0x0000005D) kod hatası alırlar:

      Satır 1 - eksik özelliği ve CPU kimliğini gösteren kod

      Satır 2 - 4 - Satıcı kimliği satırları

    64 bitlik bir sistemde, önemli hata, aşağıdaki dört bilgi satırıyla birlikte 32 bitlik bir sistemdekiyle aynı UNSUPPORTED_PROCESSOR kodunu gösterir:

      Satır 1 - standart işlevler kaydının içeriği

      Satır 2 - genişletilmiş işlevler kaydının içeriği

      Satır 3 - 4 - her ikisi de 0 değerinde

    Sorular ve cevaplar

    Sistemimin NX veya SSE2'yi destekleyip desteklemediğini nasıl anlarım?

    Sistem işlemci bilgilerini almak ve çıkış listesindeki PAE, NX ve SSE2 girişlerini görüntülemek için Coreinfo komut satırı aracını kullanabilirsiniz. Sembol * desteklenen özelliğin adının yanında görüntülenir. Sembol - işlev desteklenmiyorsa görüntülenir. Örneğin:

    Coreinfo v3.04 - Sistem CPU'su ve bellek topolojisi hakkında bilgi dökümü Telif hakkı (C) 2008-2012 Mark Russinovich Sysinternals - www.sysinternals.com HTT* Hiper iş parçacığı etkin HYPERVISOR - Hiper yönetici mevcut VMX - Intel donanım destekli sanallaştırmayı destekler SVM * AMD'yi destekler donanım destekli sanallaştırma EM64T * 64-bit modu SMX'i destekler - Intel güvenilir yürütme SKINIT'i destekler - AMD SKINIT EIST'i destekler - Gelişmiş Intel Speedstep NX'i destekler * Yürütme gerektirmeyen sayfa korumasını destekler PAGE1GB - 1 GB büyük sayfaları destekler PAE * > 32-bit'i destekler fiziksel adresler PAT * Sayfa Öznitelik Tablosunu destekler PSE * 4 MB sayfaları destekler PSE36 * > 32 bit adres 4 MB sayfaları destekler PGE * Sayfa tablolarında global biti destekler SS - Önbellek işlemleri için veri yolu gözetlemeyi destekler VME * Virtual-8086 modu FPU'yu destekler * i387 kayan nokta komutlarını uygular MMX * MMX komut seti MMXEXT'i destekler * AMD MMX uzantıları 3DNOW'u uygular * 3DNow'u destekler! talimatlar 3DNOWEXT * 3DNow'u destekler! uzantı talimatları SSE * Akış SIMD Uzantılarını destekler SSE2 * Akış SIMD Uzantılarını destekler 2 SSE3 * Akış SIMD Uzantılarını destekler 3 SSSE3 - Ek SIMD Uzantılarını destekler 3 SSE4.1 - Akış SIMD Uzantılarını 4.1 destekler SSE4.2 - Akış SIMD Uzantılarını 4.2 destekler ……. .……..

    Coreinfo komutunun çıktısı PAE'yi desteklenmeyen bir özellik olarak gösteriyorsa, bu, sistemin işlemcisinin PAE'yi desteklemediği ve NX'i destekleyemeyeceği anlamına gelir. Coreinfo komut çıktısında PAE destekleniyor olarak gösteriliyor ancak NX özelliği desteklenmiyor olarak gösteriliyorsa:

      İşlemci NX'i destekliyorsa, sistemin BIOS ayarları NX'i destekleyecek şekilde doğru tanımlanmamış olabilir.

    Sistemde NX destekleniyorsa, NX'i nasıl etkinleştiririm?

    Sistem üreticinizin kılavuzuna bakın ve NX'i destekleyen bir sistemde BIOS'a girerek NX veya XD seçeneğini altında bulun. Emniyet ve ardından NX desteğini etkinleştirin. Sistem yoksa BIOS ayarları NX desteği dahil, BIOS'u güncellemek için üreticiye başvurmanız gerekebilir.

    Not

    NX, 64 bitlik bir sistemde destekleniyorsa, sistem yapılandırma ayarları, DEP politikasını şu şekilde ayarlamanıza izin vermez: Herzaman kapalı. DEP sistem yapılandırması hakkında daha fazla bilgi için bkz.

    Windows 8'i başarıyla başlatmak için sistem işlemcilerinin NX ve SSE2'yi desteklemesi gerekir. Sistem bu özellikleri destekliyorsa ancak ayarlar yanlış yapılandırılmışsa sistem önyüklemeden önce bu ayarlar çekirdek tarafından geçersiz kılınır.

    0x0000260 hatası nedeniyle Windows 8'i bir sanal makineye yükleyemezsem ne yapmalıyım?

    Sanal makine, NX'i destekleyen bir sistemde barındırılıyorsa, bir Windows 8 sanal makinesi kurarken VM ayarlarında veya Configuration Manager'da PAE/NX'i etkinleştirmeniz gerekir. ürün kurulum kılavuzu.

    Not

    Windows 8'i yüklemeye çalışırsanız sanal makine NX'in devre dışı bırakıldığı Windows tabanlı bir sistemde barındırılıyorsa, sanal makine için PAE/NX'i etkinleştirmeden önce sistemde NX'i etkinleştirmek için ve bölümlerindeki talimatları izlemelisiniz.

    Modern işlemcilerde, işi hızlandırmak ve yürütülebilir algoritmaları optimize etmek için talimatlar kullanılır.

    AMD64 (x86-64)

    EM64T (x86-64)

    Genişletilmiş 3DNow!

    IA-32 (x86-32)

    MİMD

    YANLIŞ

    simd

    ÖÖSD

    SSE2

    SSE3

    SSE4

    SSE4.1

    SSE4.2

    SSE4A

    SSSE3

    MMX (Multimedya Uzantıları - multimedya uzantısı), tek bir makine talimatında akış ses / video verilerini kodlama / kod çözme işlemlerine özgü eylemleri gerçekleştiren ek bir talimat setinin ticari adıdır. İlk olarak Pentium MMX işlemcilerde ortaya çıktı. 1990'ların ilk yarısında İsrail'in Hayfa kentindeki Intel laboratuvarında geliştirildi.

    SIMD (Single Instruction, Multiple Data), veri düzeyinde paralelliğe izin veren bir bilgisayar hesaplama ilkesidir.

    SSE (Streaming SIMD Extensions, işlemcinin akış SIMD uzantısı), Intel tarafından geliştirilen ve ilk olarak Pentium III serisi işlemcilerde bir yanıt olarak tanıtılan bir SIMD (Single Instruction, Multiple Data, Onestruction - a lot of data) komut setidir. benzer bir komut seti 3DNow! bir yıl önce tanıtılan AMD'den. Bu talimatların orijinal adı, Katmai New Instructions (Katmai, Pentium III işlemci çekirdeğinin ilk sürümünün adıdır) anlamına gelen KNI idi.

    SSE teknolojisi, MMX'in 2 ana sorununun üstesinden gelmeyi mümkün kıldı - MMX kullanırken, yardımcı işlemci komutlarını aynı anda kullanmak imkansızdı, çünkü kayıtları MMX için kullanıldı ve gerçek sayılarla çalıştı.

    SSE, işlemci mimarisinde her biri 4 ardışık tek duyarlıklı kayan nokta değeri olarak ele alınan sekiz adet 128 bitlik kayıt (xmm0 ila xmm7) içerir. SSE, skaler ve kutulu veri türleri üzerinde işlemler gerçekleştiren bir komut seti içerir.

    Performans avantajı, farklı veriler üzerinde aynı işlem sırasını gerçekleştirmek gerektiğinde elde edilir.

    SIMD bloklarının uygulanması, veriler arasındaki hesaplama sürecinin paralelleştirilmesiyle gerçekleştirilir. Yani, birçok veri akışı sırayla bir bloktan geçtiğinde.

    SSE2 (Streaming SIMD Extensions 2), Intel tarafından geliştirilen ve ilk olarak Pentium 4 serisi işlemcilerde tanıtılan bir SIMD (Single Instruction, Multiple Data) komut setidir.

    SSE2, SSE uzantısının kullanıma sunulmasıyla birlikte x86 mimarisine dahil edilen ve her biri 2 ardışık çift duyarlıklı kayan nokta değeri olarak ele alınan sekiz adet 128 bitlik kayıt (xmm0 ila xmm7) kullanır. SSE2, skaler ve kutulu veri türleri üzerinde işlemler gerçekleştiren bir komut seti içerir. SSE2 ayrıca aynı 128 bitlik xmm kayıtlarında tamsayı verilerinin akışı için talimatlar içerir, bu da bu uzantıyı tamsayı hesaplamaları için çok daha önce ortaya çıkan MMX komut setini kullanmaktan daha çok tercih edilir hale getirir.

    Performans avantajı, aynı türden büyük bir veri kümesi üzerinde aynı eylem dizisini gerçekleştirmek gerektiğinde elde edilir.

    SSE3 (PNI - Prescott New Instruction), Intel'in SSE, SSE2 ve x87'nin soyundan gelen SIMD uzantısının üçüncü sürümüdür. İlk olarak 2 Şubat 2004'te Pentium 4 işlemcinin Prescott çekirdeğinde tanıtıldı.2005 yılında AMD, Athlon 64 işlemcileri (Venedik ve San Diego çekirdekleri) için SSE3 uygulamasını sundu.

    SSE3 seti 13 talimat içerir:

    FISTTP (x87)

    MOVSLDUP (SSE)

    MOVSHDUP (SSE)

    MOVDDUP (SSE2)

    LDDQU (SSE/SSE2)

    ADDSUBPD (SSE)

    ADDSUBPD (SSE2)

    HADDPS (SSE)

    HSUBPS (SSE)

    HADDPD (SSE2)

    HSUBPD (SSE2)

    - MONİTÖR (AMD için SSE3'te analog yok)

    - MWAIT (AMD için SSE3'te analog yok).

    SSE4, ilk olarak Penryn serisi işlemcilerde uygulanan bir Intel Core mikromimari talimat setidir (AMD'nin SSE4A'sı ile karıştırılmamalıdır). 27 Eylül 2006'da açıklandı, ancak ayrıntılı bir açıklama ancak 2007 baharında sunuldu.

    SSE4 54 komuttan oluşur, bunların 47'si SSE4.1'e aittir (bunlar sadece Penryn işlemcilerde bulunur). Tam komut setinin (SSE4.1 ve SSE4.2, yani 47 + kalan 7 komut) Nehalem işlemcilerde bulunması bekleniyor. SSE4 yönergelerinin hiçbiri 64 bit mmx kayıtlarıyla çalışmaz (yalnızca 128 bit xmm0-15 ile).

    Sürüm 10'dan beri Intel'in C derleyicisi, -QxS seçeneği belirtildiğinde SSE4 yönergeleri üretir.

    SSE4, video kodeklerinde hareket dengelemeyi hızlandıran talimatlar, WC belleğinden hızlı okuma, programların derleyiciler tarafından vektörleştirilmesini basitleştirmek için birçok talimat ekler. SSE4'te ilk kez, xmm0 kaydı bazı komutlar için üstü kapalı bir argüman olarak kullanıldı.

    SSE4.1, Intel'in genişletilmiş SSE4 komutları kümesidir.

    Aşağıdakiler, SSE4.1'de yer alan talimatlardır:

    - Video hızlandırma (3 talimat)

    - Vektör ilkelleri (5 talimat)

    - Ekler/Çıkarır (4 talimat)

    - Vektör skaler çarpma (2 talimat)

    - Karıştırma (4 talimat)

    Bit kontrolleri

    - Yuvarlama (2 talimat)

    WC Hafızasını Oku

    SSE4.2 7 talimattan oluşur.

    - Dize işleme (4 talimat)

    CRC32 sayımı

    - 1 bitlik bir popülasyonu sayma

    - Vektör İlkelleri

    SSE4A, AMD'nin genişletilmiş bir SSE4 yönergeleri setidir ve ek olarak değil, Intel'in SSE4 yönergelerine bir alternatif olarak tasarlanmıştır.

    SSSE3 (Ek Akış SIMD Uzantısı 3), atamadır Intel tarafından verilen Komuta sisteminin 4. uzantısı. Bir önceki, SSE3 olarak adlandırıldı ve Intel, belki de SSSE3'ü SSE3'e basit bir ekleme olarak gördükleri için dahili numarayı artırmak yerine başka bir "S" ekledi. Genellikle, SSSE3'ün resmi tanımı kullanılmadan önce, bu yeni komutlara SSE4 adı verildi. Ayrıca Intel'in bu yeni yönergeleri desteklemeyi amaçladığı işlemcilerden sonra Tejas New Instructions (TNI) ve Merom New Instructions (MNI) olarak kodlandılar. Intel Core Mikromimarisinde tanıtılan SSSE3, Xeon 5100 işlemci serisinde (Sunucu ve İş İstasyonu sürümleri) ve ayrıca Intel işlemcilerÇekirdek 2 (Dizüstü ve Masaüstü sürümleri).

    SSE3'e kıyasla SSSE3'teki yenilikler, 16 benzersiz paketlenmiş tamsayı komutudur. Her biri hem 64 bit (MMX) hem de 128 bit (XMM) kayıtlarla çalışabilir, bu nedenle Intel, materyallerinde 32 yeni komuta atıfta bulunur.

    Bunlardan bazıları:

    - İşaretle çalışın (2 talimat)

    vardiya

    - Bayt Karıştırma

    - Çarpımlar (2 talimat)

    - Yatay Tamsayı Toplama/Çıkarma (4 talimat)

    3DŞimdi! - AMD K6 3D ile başlayan AMD işlemciler için isteğe bağlı MMX uzantısı. 3DNow'u yaratmanın nedeni! multimedya veri işleme alanında Intel tarafından üretilen işlemcilere karşı üstünlük kazanma arzusuydu. Bu uzantı bir AMD geliştirmesi olsa da, IBM, Cyrix ve diğerleri tarafından işlemcilerine de entegre edilmiştir.

    3DŞimdi! 21 yeni işlemci yönergesi ve standart MMX kayıtlarında 32 bit gerçek türlerde çalışma becerisini tanıttı. MMX/3DNow!'a geçişi optimize etmek için özel talimatlar da eklendi! (standart emms komutunun yerini alan femms) ve işlemci önbelleğiyle çalışır. Böylece, 3DNow! MMX teknolojisinin yeteneklerini, yeni işlemci modlarının ve yeni kayıtların tanıtılmasını gerektirmeden genişletti.

    3DNow kontrol ediliyor! işlemci.

    3DNow ile çalışmaya başlamadan önce! CPU'nun bunları desteklediğinden emin olun. Bu, CPUID komutu kullanılarak yapılır. Doğrulama için genel prosedür aşağıdaki gibidir:

    1. İşlemcinin CPUID talimatını desteklediğinden emin olun. Değilse, CPU da 3DNow!'u desteklemiyor demektir.

    2. Cpuid talimatını EAX = 0 ile yürütün - bu sonraki adım için gereklidir.

    3. CPUID'yi EAX = 80000000h değeriyle yürütün. Talimatı yürüttükten sonra EAX'in değeri 1'den küçükse, 3DNow! desteklenmiyor.

    4. CPUID'yi EAX = 80000001h ile yürütün. Yürütmeden sonra EDX kaydının 31. biti 1'e ayarlanırsa, 3DNow! desteklenir. Aksi takdirde - hayır.