Genişletilebilir Yazmaç Adlandırma Yöntemi Tasarımı
Günümüzde son kullanıcıya yönelik
üretilen mikroişlemciler büyük bir hızla gelişmektedir. İşlemcilerde
başarım artışını sağlamak için işlemcilerin saat sıklığıyla birlikte
birim zamanda işlenen buyruk sayısı da artmaktadır. Artan saat sıklığı
güç tüketimini de artırdığından, başarımı daha az güç tüketen
bileşenlerle artırmak önemli bir mühendislik sorunu haline gelmiştir.
Çağdaş işlemciler başarımı artırmak için bazı yöntemler kullanmaktadır.
Bunların arasında buyrukların işlemci içinde program sırası dışında
işlenmesi, aynı saat vuruşunda birden fazla buyruk işlenmesi ve boru
hattı kullanılması yöntemleri gösterilebilir.
İşlemcilerin üzerinde çalışan programlarda başarımı artırmanın
önündeki en büyük engel buyruklar arasındaki veri bağımlılıklarıdır. Bu
veri bağımlılıkları mimari düzeyinde derleyici tarafından kullanılabilen
yazmaç sayısının az olması durumunda ortaya çıkan kaynak sıkıntıları
nedeniyle daha da artmaktadır. Kaynak sıkıntısından dolayı gerçekte
olmayan yazmaç bağımlılıkları yaratan derleyici, eğer önlem alınmazsa,
işlemcinin yavaşlamasına yol açabilir. Günümüzde gerçekte olmayan veri
bağımlılıklarını ortadan kaldırmak için mikroişlemciler yazmaçların
yeniden adlandırılması yöntemini kullanmaktadır. Bu yöntemde
mikroişlemcinin içinde, dışarıdan derleyici tarafından görülen sanal
yazmaç sayısından daha fazla sayıda gerçek yazmaç bulunur.
Mikroişlemcide boru hattının erken aşamalarında dışarıdan gelen yazmaç
numaraları içerideki yazmaç numaralarıyla eşleştirilir ve derleyici
tarafından yaratılmış ancak gerçekte olmayan veri bağımlılıkları aynı
sanal yazmaçları kullanan farklı buyrukların sonuçlarını farklı gerçek
yazmaçlara yazması aracılığı ile çözülür. Sanal yazmaç numaralarının
hangi gerçek yazmaçlara denk geldiğini belirlemek için bir yazmaçları
yeniden adlandırma tablosu tutulur. Bu tablo kendisinden önce üretilen
değerlere bağımlı olan buyrukların okuyacakları değerlerin konumlarını
gösteren ve işlemcinin programın tam doğru durumunun (verilerin gerçek
yerlerini) tutulduğu önemli bir yapıdır.
Her programın içinde if-else, while-do benzeri denetim yapıları
bulunur. Bu denetim yapıları derlendiğinde çevirici dil düzeyinde koşula
bağlı dallanma buyruklarına dönüşür. Koşula bağlı dallanma
buyruklarının atlayacağı ya da atlamayacağı işlemci içinde belirlenen
koşullara göre ortaya çıkar ve boru hattı yöntemi kullanılan
işlemcilerde bu sonuç çok ileriki aşamalarda ortaya çıkabilir. Örneğin
Intel Pentium 4'te dallanmaların sonuçları 16ıncı aşamadan önce
anlaşılamamaktadır. Çağdaş işlemciler dallanmaların koşullarının
çözülmesinin çok ileri aşamalara kadar beklenmesinin yarattığı başarım
kaybının önüne geçmek için dallanmaların sonuçlarını tahmin etmektedir.
İşlemcilerin yaptıkları tahminler çoğu zaman doğru olsa da, ara sıra
ortaya çıkan yanlış tahminlerde boru hattının boşaltılması ve programın
yanlış tahminden kaynaklanan hatalardan arındırılması gereklidir.
Yazmaçların yeniden adlandırılması yönteminde kullanılan yeniden
adlandırma tablosu, dallanma öngörülerinde yapılan hatalardan sonra
yeniden yapılandırılmalı ve içerdiği veriler düzeltilmelidir. Bu
verilerin düzeltilmemesi durumunda boru hattının boşaltılmasının
ardından alınan buyruklar okumaları gereken verilere ulaşamayabilirler.
Yeniden adlandırma tablosunun düzeltilmesinin literatürde bulunan ve
çağdaş işlemcilerde uygulanan pek çok yöntemi vardır. Bu yöntemlerin
bazıları uzun düzeltme zamanları yüzünden bazıları ise devre düzeyindeki
karmaşıklıktan dolayı olumsuz özelliklere sahiptir.
Bu proje kapsamında mikroişlemci içinde aynı anda bulunabilen buyruk
sayısının çok artırılması durumunda bile düşük devre karmaşıklığı ve
düşük düzeltme zamanı sağlayacak bir yeniden adlandırma tablosu
yapısının tasarlanması ve denenmesi önerilmektedir. Önerilecek tablo
yapısı çok sayıda ilk giren ilk çıkar (FIFO) türünde bellekten oluşacak
ve günümüzde kullanılan karmaşık devre yapısına dair tablolara göre hem
az güç tüketecek hem de karmaşık devreli yapılara yakın başarım
sağlayacaktır. Gerçek bir işlemcinin tasarlanması ve üretimi çok pahalı
ve uzun süren bir süreç olduğundan projenin gerçekleştirilmesi için
Intel x86 komut kümesi kullanan bir mikroişlemci benzetimliği
(simülatörü) kullanılacaktır. Bu projede önerilen tüm teknikler, her
türlü mikroişlemci mimarisine uygulanabilir ancak dünya üzerinde bulunan
genel kullanım amaçlı işlemcilerin büyük bir çoğunluğu x86 komut kümesi
kullandığından x86 mimarisi kullanan bir benzetimlik seçilmiştir.
Kullanılacak benzetimlik (ptlsim) C++ ile yazılmıştır ve 64 bit x86
işlemcili bilgisayarlar üzerinde çalışabilmektedir. Önerilen teknikler
bu benzetimlik üzerinde denenecek, birim zamanda işlenen komut
sayısındaki artış ya da azalma SPEC 2000 (ya da SPEC 2006) paketi içinde
yer alan 26 program için bulunacaktır. Önerilen tekniklerin yarattığı
gecikme artışları devre düzeyinde yapılan benzetimlerle tasarım araçları
yardımıyla bulunacak, işlemci frekansındaki artış ya da azalma
hesaplanacaktır. Devre tasarım araçları aynı zamanda işlemci
birimlerinin güç tüketiminin hesaplanması için kullanılacak ve bulunan
güç tüketimi sayıları mikroişlemci benzetimliğine aktarılarak önerilen
tekniklerin güçten sağladığı tasarruf ya da kayıp hesaplanacaktır.
Proje kapsamında önerilen tekniklerin uygulanması için ikisi
bilgisayar mühendisi biri elektrik-elektronik mühendisi olmak üzere üç
tam zamanlı yardımcı araştırmacıya gereksinim vardır. Bilgisayar
mühendisleri mikroişlemci benzetimliğinde önerilen teknikleri C++ kodunu
değiştirerek uygularken elektrik-elektronik mühendisi devre düzeyindeki
tasarımları yaparak gecikme ve güç tüketimi sayılarını bulacaktır.
Elektrik-elektronik mühendisi araştırmacının gerekirse mikroişlemci
içyapısını ve benzetimliğin çalışma biçimini öğrenmesi ve kodlama
aşamasında yardımcı olması da amaçlanmaktadır.
Proje 24 ay sürecektir ve önerilen teknikler daha sonra üzerinde
araştırma yapılmaya uygundur. Proje sonunda elde edilen sonuçlar uluslar
arası kurultaylarda ve dergilerde yayınlanacak, Intel, IBM, AMD gibi
mikroişlemci üreticilerine sunularak önerilen tekniklerin gerçek hayata
geçirilmesine çalışılacaktır.**

