İşlemci Mimar risi Yazar: Erman Üret (ermanuret@gmail.com) Bu yazıda işlemci tasarımı yapılırken izlenecek yol ve unsurlar ile yapılması gerekli dokümantasyon hakkında bilgi verilecektir. İşlemci tasarımındaki ilk kısım tasarlanacak olan işlemcide kullanılacak mimariyi seçmektir. Mimari seçimi tasarlayacağımız işlemcide bulunmasını istediğimiz özellikler ve işlemcimizin karşılamasını istediğimiz kriterleree göre biçimlenmektedir. Bu kısımda mimari seçiminin nasıl yapıldığı atlanarak önceki videolarda kullandığımız referans tasarım üzerindenn gideceğiz. İşlemci blok şemamıza yakından bakacak olursak; Şekil 1
Yukarıdaki blok şemadan da görülebileceği gibi referans tasarımda mimari olarak pipeline mimarisi seçilmiş. Şemaya dikkatli bakacak olursak bu işlemcinin 5 durumlu bir pipeline olduğunu görebiliriz. Pipeline 5 state olarak tasarlanan bu mimari MIPS işlemci mimarisi olarak da bilinir. Bu tasarımın dışında ilk pdf dokümanında da belirttiğim gibi işlemciyi single cycle, multi cycle, değişik sayıda durum içeren pipeline yada superscalar olarak tasarlayabilirsiniz. İşlemci tasarımına yön verecek olan kriterler komut ve işlemciden beklentilerimizdir. Bu beklentiler harcanacak güç miktarı, kullanılan alan, hız yada bunların bileşiminden oluşabilir. Mimariye karar verdikten sonraki aşama kullanılacak bloklara karar vermektir. Kullanılacak bloklara karar verilirken işlemcinin koşturmasını beklediğimiz komutları barındıran komut setinden faydalanılmalıdır. Örneğin bir çarpma yada bölme modülü komut setinde bu blokları kullanacak komut yada komutlar var ise tasarlanmalıdır. Ayrıca modüllerin tasarımında kullanılacak, modüllerle ilgili bilgi (örneğin kaç bit çarpma yapılacağı, sonucun nasıl gösterileceği ve kaydedileceği, işaretli işlemlere izin verilip verilmediği gibi) komut setinden elde edilebilir. Alt modüllerin tasarımı da yukarıda belirttiğim beklentilere göre gerçekleştirilmelidir. İşlemci yapısının ve alt modüllerin geliştirilmesinde beklentilere göre optimizasyonlar yapılır. Genellikle beklentilere göre yapılan geliştirme ve optimizasyonlar diğer bölümlere olumsuz etki yapar. Örneğin hız konusunda bir optimizasyon yaptığımızda, modülün optimize edilmemiş modüle göre daha fazla alan kaplaması yada daha fazla güç tüketmesi normaldir. İşlemci içindeki modüller de alt modüllerden oluşabilmektedir. Tasarım anlamında yukarıda belirttiğimiz özellikler hiyerarşik yapı içinde en alt yapıya kadar geçerlidir.
Dokümantasyon Dokümantasyon bölümü işlemci tasarımının önemli bölümlerinden biridir. Tasarlanan işlemcinin ve alt modüllerinin dokümantasyonu detaylı bir şekilde yapılmalıdır. Dokümantasyonda tasarıma katılmamış kişilerin dokümantasyondan faydalanarak yapı hakkında kolayca bilgi edinebilmeleri göz önünde bulundurulmalıdır. Dokümantasyon yapılırken, kullanılan modüller ve üst yapı hakkında verilecek detaylı bilgilerin yanında tasarımın şemalar halinde görsel ifadesi de gereklidir. Görsel ifadelerden yoksun bir dokümantasyon tasarımı inceleyenler açısından çok fazla bir anlam ifade etmez. Örneğin tamamen koddan oluşmuş referans işlemcimizin kodlarını inceleyerek bir fikir edinmek yukarıdaki şematik ifadesini (Şekil 1) incelemekten çok daha zahmetlidir. Kodlarla ifade edilmiş işlemcimizi Xilinx ISE programında şematik karşılığını elde edersek (Şekil 2) aşağıdakine benzer bir görüntü elde edebiliriz. Aşağıdaki şematik tasarımda bazı kablolar bağlanmamasına rağmen anlaşılır bir şekil elde edilememiştir. Bunun dışında şematik olarak göstereceğimiz yapı içinde kod ile hallettiğimiz bazı kısımları da göstermemiz gerekmektedir. Örneğin execute bloğunu şematik olarak göstermek istersek bu modülün içinde kablo bağlantıları dışındaki örneğin kullanılan multiplexer ları da şematik olarak tasarlamamız gerekmektedir. Bu ekstra tasarım zamanı gerektirdiği gibi tasarımın birebir karşılığını da içermez. Şu anda mevcut işlemci tasarımları incelendiğinde işlemcilerin dokümantasyonunda yukarıda verilen blok şema (Şekil 1) gibi şemaların kullanıldığı gözlemlenebilir. Bu yapı simülasyon için kullanılamamakla beraber tasarlanan işlemci hakkında daha net bilgiler vermektedir. Xilinx ISE programında oluşturduğumuz şematik tasarımı simülasyon için de kullanabiliriz. Dokümantasyonda öncelikle Şekil1 deki gibi tasarımın ana yapısı bir çizim programı ile çizilebilir. Daha sonra hiyerarşik yapıya göre modüller ve alt modüller aynı şekilde çizilerek gösterilebilir. En alt düzeydeki yapıların (kapı düzeyinde yada daha alt modülü bulunmayan yapılar) üst modüllerle nasıl ilişki kurdukları ve çalışma şekilleri detaylı bir şekilde anlatılmalıdır.
Şekil 2
Örneğin ALU modülünün toplama çıkarma yapan kısmının 16 bitlik veriler üzerinde işlem yaptığını düşünelim. Bu işlem 4 bitlik alt modüller tarafından yapılsın. Bu senaryoda en üst seviyede ALU, bunun içinde toplama çıkarma birimi, ve bunun içinde de 4 bitlik modüller gösterilmelidir. Alt seviye modüllerin çalışması, örneğin ne tür bir adder devresi kullanıldığı, 4 bitlik modüllerin bağlanma şekli ve mantığı detaylı şekilde anlatılmalı, mevcut yapılar üzerinde yapılmış optimizasyon varsa bundan da bahsedilmelidir. İşlemcideki diğer yapılar içinde (örneğin çarpma birimi yada kaydırma birimi) bu işlem üst modüllerden alt modüllere inerek tekrarlanmalıdır. Ayrıca işlemci çalışmasına etki eden yapılar (hazard detection unit, forwarding unit, branch predictor, cache vb gibi mimari için gerekli yada performans bakımından opsiyonel üniteler) aynı şekilde görsel bir şekilde ve yazıyla detaylı şekilde anlatılmalıdır. Dokümantasyon olarak bir diğer önemli nokta komut setindeki komutlar tek tek ve ilgili komutlar bölüm bölüm ele alınarak detaylı bir şekilde incelenmesidir. İncelemede komutların ne şekilde ele alındığı ve işlemcide nasıl işlemlere yol açtığı açıklanmalıdır. Alt birimler ve komut seti dışında işlemcinin genel yapısı, varsa işlemcinin ve alt birimlerin simülasyon yada deneysel sonuçları dokümantasyona eklenmelidir.