İçeriğe atla

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

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;

  1. Yazmaç 1'e bellek konumu 1024'teki veriyi yükle.
  2. Yazmaç 1'e 24 sayısını ekle.
  3. Yazmaç 1'deki veriyi bellek konumu 1031'ye sakla.
  4. Yazmaç 1'e bellek konumu 2048'deki veriyi yükle.
  5. Yazmaç 1'e 4 sayısını ekle.
  6. 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,

  1. Yazmaç 1'e bellek konumu 1024'teki veriyi yükle.
  2. Yazmaç 1'e 2 sayısını ekle.
  3. Yazmaç 1'deki veriyi bellek konumu 1032'ye sakla.
  4. Yazmaç 2'ye bellek konumu 2048'deki veriyi yükle.
  5. Yazmaç 2'ye 4 sayısını ekle.
  6. 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.

İlgili Araştırma Makaleleri

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

Bellek bilgisayarı oluşturan 3 ana bileşenden biridir.. İşlemcinin çalıştırdığı programı, lar ve programa ait bilgiler bellek üzerinde saklanır. Bellek geçici bir depolama alanıdır. Bellek üzerindeki bilgiler güç kesildiği anda kaybolurlar. Bu nedenle bilgisayarlarda programları daha uzun süreli ve kalıcı olarak saklamak için farklı birimler mevcuttur.

<span class="mw-page-title-main">Intel 80286</span>

Intel 80286 veya i286, 8086/8088'dan sonraki intel işlemcisidir.

İşlemci önbelleği, CPU'nun hafızadaki verilere ulaşma süresini azaltan bir donanımdır. Ana belleğe(RAM) kıyasla küçük, hızlı ve işlemci çekirdeğine yakındır. Sık kullanılan veriler ya da en güncel veriler işlemci önbelleğinde saklanır. Günümüzde pek çok CPU, birden çok seviyede önbellek içerir, bu önbellekler verilerin yanı sıra komutları da bünyesinde tutar.

İndirgenmiş Buyruk Küme Bilgisayar, işlemci tasarım alanında 1980'li yıllarda önerilen ve giderek CISC'in yerini alan bir buyruk kümesi mimarisidir.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

Boru hattı yöntemi bilgisayar mimarisi ve diğer sayısal ürünlerin tasarımında başarımı artırmak için uygulanan bir yöntemdir. Komutları, boru hattı yöntemi ile işleyip daha kısa süre içinde bitmesini sağlar. Asıl amacı saat sıklığını artırarak başarımı artırmaktır. Farklı kaynakları aynı anda, farklı işler tarafından kullanarak çalışır.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

<span class="mw-page-title-main">Merkezî işlem birimi tasarımı</span>

Merkezî işlem birimi tasarımı bilgisayarın temel bileşenlerinden birisi olan Merkezî işlem birimini (MİB) etkin kullanmayı yönelik bir tasarımdır. MİB bilgisayar donanımının temel bileşenlerinden birisidir. İşlemcisi olmayan bir bilgisayar düşünülemez. Bu yüzden işlemcinin tasarımı ne kadar iyi olursa sistem de o derece hızlı olacaktır. İşlemciyi hızlandırmanın değişik yolları vardır. Bunlardan bazıları:

  1. Buyrukların paralel çalışmasını sağlamak
  2. Çok vuruşluk işlemciler kullanmak
  3. Boru hattı kullanmak
  4. Çoklu işleme kullanmak
<span class="mw-page-title-main">Itanium işlemcisi</span>

Itanium işlemcisi, Intel firmasının 64-bit işlemci ailesinden olup IA-64 mimarisi kullanan işlemcilerinin devamı olarak bilinir. Itanium ve Itanium2 olarak sunulan bu işlemci ilk olarak Ekim 2001'de piyasaya sürülmüştür. Itanium işlemcilerin asıl hedefi yüksek performansa sahip bilgisayarlardı. Bu işlemcinin mimarisinin gelişimi ilk olarak Hewlett-Packard tarafından yapılmıştır ve devamında ise Intel ve Hewlett-Packard ortak olarak birlikte gerçek Itanium mimarisini geliştirmişlerdir.

Mikroişlemcilerde kural dışı durumlar, programların çalıştırılması esnasında verilen komutlar neticesinde oluşan hatalardır. Bu hatalar nedeniyle program istenilen şekilde çalışmaz. Hatta işlemcinin kilitlenmesine bile sebep olabilir. Bu tür durumlar normal bir işleyiş olmadığından kural dışı durum oluşturur.

Sırasız yürütüm ya da Düzensiz yürütme, bilgisayar mühendisliğinde, günümüz yüksek performanslı işlemcilerinde kullanılan, yüksek gecikmeler sebebiyle harcanan işlemci döngülerini kullanıma sunan bir talimat yürütme yaklaşımıdır.

<span class="mw-page-title-main">Yazmaç öbeği</span>

Yazmaç öbeği, bir merkezi işlem birimindeki işlemci yazmaçlarının bir dizisini ifade etmektedir. Modern tümleşik devre tabanlı yazmaç öbekleri genellikle çok portlu hızlı durağan rastgele erişimli bellekleri (SRAM) kullanılarak sistemlere tümleştirilmektedirler. Bu tür rastgele erişimli bellekleri kullandıkları okuma ve yazma girişlerine göre ayrılır, fakat normal çok portlu durağan rastgele erişimli bellekler okuma ve yazma işlemlerini aynı girişleri kullanarak gerçekleştirebilmektedirler.

<span class="mw-page-title-main">Çoklu kullanım</span>

Çoklu kullanım özelliğine sahip bilgisayarlar birden fazla iş parçacığını donanım desteği sayesinde çalıştırabilir. Çoklu işlem yapabilen sistemlerden gelişen bu yöntem tek bir çekirdeğin kaynaklarını paylaşmak zorundadır. Bu kaynaklar: aritmetik mantık birimi, yazmaçlar (registers), işlemci ön belleği ve adres dönüştürme ön belleğidir. Çoklu işlem yapabilen sistemlerde, işlem birimlerinin tamamı ayrı çekirdeklerde olmasına rağmen, çoklu kullanım tek bir çekirdeğin kullanılabilirliğini iş-parçacığı seviyesinde ve buyruk düzeyinde daha verimli hale getirir. Bu iki teknik birbirini tamamlayan tekniklerdir.

Çok uzun buyruk kelimesi, buyruk düzeyindeki paralelliğin avantajından yararlanmak için geliştirilmiş bir işlemci tasarımıdır. Her buyruğu arka arkaya çalıştıran işlemciler, işlemci kaynaklarını verimsiz bir şekilde kullanabilmekte ve bu durum da başarımın düşmesine neden olmaktadır. Başarım, sıralı çalışan buyrukların çalıştırılma basamaklarında farklı aşamalarda olmasıyla veya aynı anda birden fazla buyruğun birbirinden bağımsız olarak çalıştırılmasıyla arttırılabilir. Bu yöntemlerin daha da iyileştirilmesi, buyrukların programdaki sırasından farklı bir sırada çalıştırılması ile sağlanabilir; bu yönteme de Sırasız yürütüm denir.

<span class="mw-page-title-main">Alpha 21264</span>

Alpha 21264 1996 yılı Ekim ayında Digital Equipment Corporation tarafından indirgenmiş komut takımı bilgisayarı(RISC) mikroişlemcisi olarak tanıtılmıştır. 21264 Alfa işlemcisi Komut kümesi ile tanımlanmıştır.

NetBurst, İntel'in 2000 yılında piyasaya sürdüğü Pentium 4 işlemci markasının mikromimarisine verilen isimdir. 2006 Temmuz'unda Core mikromimarisinin çıkışına kadar İntel işlemcilerin mikromimarisi olmuştur. Selefi P6 mikromimarisine göre en önemli özelliği derin boru hattı yapılanmasıyla avantaj sağladığı yüksek saat sıklığıdır. Temel olarak dört ana parçadan oluşmaktadır: Sıralı(ing. In-order) Ön-Uç(ing. Front-end), Sırasız(ing. out-of-order) yürütme birimi, Tam sayı ve kayan nokta yürütme birimleri ve bellek altdizgesi.

<span class="mw-page-title-main">Nehalem (mikromimari)</span>

Nehalem, İntel firmasının Eylül 2008'de piyasaya sürülen Core i7 işlemcisiyle birlikte kullanılmaya başlanmıştır. 2011'de Sandy Bridge mikromimarisi sunulana kadar İntel'in en gelişmiş mikromimarisi olarak piyasada kalmıştır. Selefi Core mikromimarisine göre paralelliği ve saat frekansını arttırmış, Core mikromimarisinde İntel'in kullanmadığı fakat daha önce NetBurst'de kullanılan Hyper Threading teknolojisi Nehalem ile tekrar kullanılmaya başlamıştır. Nehalem'le birlikte Core mikromimarisinde terkedilmiş olan üçüncü seivye bir önbellek de yonganın içerisine eklenmiştir. İntel, Nehalem ile ilk defa bellek denetim birimini işlemci yongasının içine koymuş ve front-side bus dan ayırmıştır.