CMPXCHG16B
CMPXCHG16B, tanımlı bir yazmaç çifti arayüzü kullanarak 16 baytlık bir bellek değerini karşılaştırır ve koşullu olarak takas eder. Doğru hizalama ve bölünmezlik (atomicity) gereksinimleri eşzamanlı kullanım için şarttır.
Bilmeniz gerekenler
CMPXCHG16B, tanımlı bir yazmaç çifti arayüzü kullanarak 16 baytlık bir bellek değerini karşılaştırır ve koşullu olarak takas eder. Doğru hizalama ve bölünmezlik (atomicity) gereksinimleri eşzamanlı kullanım için şarttır.
Nasıl çalışır
Komut, 128 bitlik bir bellek işlenenini RDX:RAX içindeki beklenen değerle karşılaştırır, ardından koşullu olarak RCX:RBX'i depolar veya gözlemlenen bellek değerini beklenen değer yazmaçlarına yükler. Bellek işleneni 16 baytlık hizalama gereksinimini karşılamalıdır. Paylaşılan bellek atomik kullanımı uygun LOCK semantiğini gerektirir.
Nerede yararlıdır
Bir çalışma zamanı, etiketli bir işaretçinin veya makine sözcükleri çiftinin atomik güncellemesi için bu komutu kullanabilir. Derleyicinin atomik API'si ayrıca bellek sıralamasını, tür hizalamasını ve geri dönüş davranışını da hesaba katar; elle yazılmış montaj kodu (assembly) tüm bu sözleşmeleri karşılamalıdır.
Destek ve etkinleştirme durumu nasıl kontrol edilir
CPUID.01H:ECX 13. biti CMPXCHG16B'yi gösterir. Donanım bitinin yanı sıra ABI ve çalışma zamanının atomik garantilerini de kontrol edin. Bir işlemin kilitsiz (lock-free) olup olmadığına karar verirken dilin desteklenen atomik sorgusunu kullanın.
Desteği komşu bir uzantıdan çıkarmak yerine tam komut ve işlenen biçimini kontrol edin. Skaler tamsayı özellikleri genellikle genel amaçlı yazmaçları kullanır; vektörlerle ilişkili bir kodlama, otomatik olarak bir vektör durumu gereksinimi anlamına gelmez.
Özelliğin sağlamadığı durumlar
Komut genel bir 128 bit aritmetik birim değildir ve varlığı, her dilin 128 bit atomik türünün her derlemede kilitsiz olduğu anlamına gelmez. Yanlış hizalama, desteklenen bir CPU'da bile hata verebilir.
Uygulamada uyumluluk ve performans
Doğruluk, hızın yanı sıra uç durumlara da bağlıdır. Sıfır girdisi, taşma, elde bayrakları, işlenen genişliği, hizalama ve bellek sıralaması anlambilimi değiştirebilir. Bu ayrıntıları belgeleyen ve desteklenen bir geri dönüş sağlayan derleyici veya kitaplık arabirimlerini tercih edin.
Pratik bir doğrulama kontrol listesi
- İlgili tam işlemci veya platform modelini ve uygulama, işletim sistemi ve çalışma zamanı sürümlerini kaydedin. Gerçek hatanın veya gereksinimin metnini koruyun.
- Bu tam model için üretici referansını kontrol edin, ardından programın çalıştığı ortamda geçerli yeteneği ve etkinleştirilmiş durumu inceleyin.
- Seçilen ikili dosyanın veya arka ucun her gereksinimini karşılaştırın. Benzer şekilde adlandırılmış bir özellik, diğer ad veya genel teknoloji etiketi yeterli değildir.
- Uygulamanın hedeflenen uygulamayı seçtiğini onaylayın. Gereksinimler karşılanmadığında belgelenmiş tanılamalarını ve desteklenen bir geri dönüşü kullanın.
- Her seferinde desteklenen bir değişiklik yapın ve aynı iş yükünü tekrarlayın. Orijinal yapılandırmayı ve kurtarma yolunu kullanılabilir durumda tutun.
Özellik listeleniyor ancak yazılım kullanamıyorsa
Hata veren tam bileşenle başlayın. Bir donanım veritabanı kayıtlı yeteneği açıklar; işletim sistemi veya hipervizör farklı bir geçerli ortam sunabilir. Geçersiz komut hatası, gerçek hatalı komutun ve ikili yapının da incelenmesini gerektirir, çünkü bozulma veya ilgisiz, desteklenmeyen bir komut benzer bir belirti üretebilir.
Tam platform için desteklenen uygulama, sürücü veya çalışma zamanı sürümünü yükleyin ve gerekirse satıcının belgelenmiş temel veya geri dönüş derlemesini kullanın. Bir yazılım güncellemesi, işlemcide eksik olan bir komutu oluşturamaz. Bellenim ve güvenlik politikası değişiklikleri, genel bir optimizasyon tarifi yerine sistem üreticisinin prosedürünü ve bir kurtarma planını izlemelidir.
Bu açıklamanın kaynakları ve kapsamı
Intel 64 ve IA-32 Mimarileri Yazılım Geliştirici Kılavuzu · x86-64 psABI: işlemci mimarisi ve mikro mimari seviyeleri
Bu referanslar mimari davranışı ve yazılım gereksinimlerini belirler. Bağlantılı bir donanım modeli sayfasındaki her özellik değerini bağımsız olarak doğrulamazlar. Model desteği için ilgili sayfanın üretici kanıtlarını kullanın ve geçerli sistem yapılandırmasını kontrol edin. Bu makale bir kıyaslama, sertifikasyon veya bağımsız inceleme tarihi sağlamaz.
Kaynaklar ve doğrulama
Editoryal mülkiyet: Feex. Bağımsız bir inceleme tarihi kaydedilmemiştir. Nasıl araştırıyoruz.
- Intel 64 ve IA-32 Mimarileri Yazılım Geliştirici Kılavuzu · Cilt 1 ve 2, adlandırılmış komut ailelerini ve CPUID'yi açıklar; Cilt 3, durum, sayfalama, VMX ve koruma denetimlerini açıklar. Mimari belgeleri belirli bir model için desteği doğrulamaz.
- x86-64 psABI: işlemci mimarisi ve mikro mimari seviyeleri · Makine Arayüzü, İşlemci Mimarisi: temel ve kümülatif v2/v3/v4 özellik tablosu, işletim sistemi durumu kontrolleri ve dağıtım önerileri.
Bu makale yararlı oldu mu?
Evet veya hayır yeterlidir. İsterseniz bir neden seçin veya kısa bir not ekleyin.
Teşekkürler. Bu, bu sayfayı geliştirmemize yardımcı olur.