Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Yazmaçların yeniden adlandırılması

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
Yazmaçların yeniden adlandırılması, işlemcilerde, yürütülen buyruklardaki, aynı yazmaçların tekrar kullanımından doğan sahte bağımlılıkları gidermek için kullanılan bir yöntemdir. Sorun Programlar bazı değerler üretmek için kullanılan komutlardan oluşmuştur. İşlemci içerisinde komutlara girdi ve çıktı olarak kullanılan değerler yazmaçlardan okunur ve yazmaçlara yazılır. İşlemci içerisinde farklı buyruklar farklı sürelerde işlenirler. Mesela, bir işlemci ana bellekten bir yükleme işlemini gerçekleştirdiği sürede yüzlerce buyruğu işleyebilir. Kısa buyrukların işlenmesi daha hızlı olduğundan işlemci içerisinde buyrukların işlenmesinin tamamlanması program sırasından bağımsız gerçekleşir. Yüksek performanslı işlemciler tarafından yüksek hızlara ulaşmak için sırasız yürütüm kullanılır. Aşağıda sırasız yürütüm yapan bir işlemcinin buyrukları görülmektedir; Yazmaç 1'e bellek konumu 1024'deki veriyi yükle. Yazmaç 1'e 24 sayısını ekle. Yazmaç 1'deki veriyi bellek konumu 1031'ye sakla. Yazmaç 1'e bellek konumu 2048'deki veriyi yükle. Yazmaç 1'e 4 sayısını ekle. Yazmaç 1'deki veriyi bellek konumu 2056'ya sakla. Yukarıda görüldüğü üzere, 4. 5. ve 6. buyruklar 1. 2. ve 3. buyruklardan bağımsızdır fakat işlemci 3. buyruğu tamamlamadan 4. buyruğu işleyemez. 4. buyruk 3. buyruktan önce işlenirse 3. buyrukta bellek konumu 1032'ye yanlış değer yazılmış olur. Bu karşılaştığımız sınırlamayı bazı yazmaçların ismini değiştirerek çözebiliriz. Mesela, Yazmaç 1'e bellek konumu 1024'deki veriyi yükle. Yazmaç 1'e 2 sayısını ekle. Yazmaç 1'deki veriyi bellek konumu 1032'ye sakla. Yazmaç 2'ye bellek konumu 2048'deki veriyi yükle. Yazmaç 2'ye 4 sayısını ekle. Yazmaç 2'deki veriyi bellek konumu 2056'ya sakla. Yukarıda görülen düzenlemeyle, artık 4. 5. ve 6. buyruklar, 1. 2. ve 3. buyruklarla aynı anda işlenebilir, bu sayede işlemler daha hızlı bir şekilde tamamlanabilir. Yazmaç yeniden adlandırma işlemi derleyici tarafından yapılır ancak buyruk kümesinde bulunan sınırlı sayıdaki yazmaçlar derleyicileri sınırlandırır. Birçok yüksek performanslı işlemci buyruk kümesinde mümkün olduğunca çok fiziksel yazmaç kullanır. Bağımlılıklar Bir yazmaca birden fazla buyruk yazmaçtaki veriyi okumak ya da yazmak için erişmek isterse ve buyruklar program sırasının dışında yürütülürse, üç çeşit bağımlılık meydana gelebilir. Bu sorunlar Yazmadan Sonra Okuma (YSO) Yazmaçtan ya da bellekten okunan veri, yazmaca veya belleğe program sırasına göre, başka değil, en son yazılan veri olmalıdır. Bu bağımlılık türüne gerçek bağımlılık denir. Yazmadan Sonra Yazma (YSY) Birden fazla komut aynı bellek konumunu veya yazmacı güncellemek istiyorsa alanı doğru sırada güncellemeleri gerekir. Bu bağımlılığa çıktı bağımlılığı denir. Okumadan Sonra Yazma (OSY) Bir buyruk, bir yazmaca veya bellek alanına yazma yapacaksa bu buyruk yazmacın veya bellek alanının önceki değerini okuyacak olan tüm buyrukların işlenmesinin tamamlanmasını beklemelidir. Bu tür bağımlılıklara sahte bağımlılık denir. Bütün okuma işlemlerinin tamamlanmasını beklemek yerine, alanın eski verisini ve yeni verisini tutan iki farklı kopyası tutulabilir. Program sırasınca bir yazma işleminden önce gelen okuma buyrukları eski veriyi tutan alanı kullanırken, program sırasınca yazma işleminden sonra gelen okuma işlemleri de yeni veriyi tutan alanı kullanır. OSY bağımlılığı bu sayede aşılmış olur ve buyruklar program sırasından bağımsız işletilmeye devam edebilir. Eski veriyi tutan alanı okuyacak tüm buyruklar bittiğinde bu alan bırakılabilir. Yazmaç yeniden adlandırmanın arkasındaki ana fikir budur. Eğer programın yazmaçları hemen kullanmaları kaçınılabilir olursa yazmaç yeniden adlandırmaya gerek kalmazdı. Bu sebepten IA–64 gibi bazı buyruk kümeleri çok büyük miktarda yazmaç kullanırlar. Fakat yazmaç sayısını arttırmanın bazı sınırlamaları vardır; Derleyiciler için kod miktarını arttırmadan yazmaçların yeniden kullanımından kaçınmak çok zordur. Örneğin döngü yapıları için aynı kodun defalarca kez farklı yazmaçlar kullanılarak tekrarlanması gerekir. Kod sayısının artması önemli bir etkendir, çünkü program kodu arttıkça buyruk önbelleğinde bulamama oranı da artar ve bu yüzden işlemci yeni komut için bekleme gecikmesi yaşar. Çok sayıda yazmaç gösterilebilmek için çok sayıda bite ihtiyaç duyulur ve bu da kod büyüklüğünü arttırır. Birçok buyruk kümesi eskiden az sayıda yazmaç tanımlamıştır ve bunu artık değiştirmek zordur. Kategori:Mikroişlemciler
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Izgara yada normal mod

Temanızda forum listeleme yapısını ızgara yapısında yada normal yapıda listemek için kullanabilirsiniz.

Forum arkaplan resimleri

Forum arkaplanlarına eklenmiş olan resimlerinin kontrolü senin elinde, resimleri aç/kapat

Sidebar blogunu kapat/aç

Forumun kalabalığında kurtulmak için sidebar (kenar çubuğunu) açıp/kapatarak gereksiz kalabalıklardan kurtula bilirsiniz.

Yapışkan sidebar kapat/aç

Yapışkan sidebar ile sidebar alanını daha hızlı ve verimli kullanabilirsiniz.

Radius aç/kapat

Blok köşelerinde bulunan kıvrımları kapat/aç bu şekilde tarzını yansıt.

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Geri