• Sonuç bulunamadı

3. MATERYAL ve YÖNTEM

3.1 Materyal

3.1.8 Uart arabirimi

UART çift yönlü, seri, asenkron bir haberleşme protokolüdür. UART sistemlerde bir verici, bir alıcı ve iki hat bulunmaktadır. Temel olarak verici, gönderilecek olan verileri paralel olarak toplar, ardından bu verileri belirli bir hızda seri olarak gönderir. Alıcı ise seri olarak gelen verileri toplar. Sistem boştayken seri hat ‘1’ dir. Aktarım, ‘0’ olan bir başlangıç biti ile başlar, ardından veri bitleri ve isteğe bağlı bir eşlik biti gönderilir ve

‘1’ olan bitiş bitiyle sona erer (Chu 2008). Şekil 3.13’te başlangıç biti, veri bitleri, eşlik biti ve bitiş bitinden oluşan bit düzeni görülmektedir.

Şekil 3.13 UART arabirimi bit düzeni

Tasarlanan işlemcinin programlanması UART Arabirimi kullanılarak gerçekleştirilir.

27 3.2 Yöntem

Bu bölümde tasarlanan işlemcinin mimari ve işlevsel özelliklerinden bahsedilecektir. İlk olarak işlemcinin temel özellikleri kısa bir şekilde sunulacaktır. Daha sonra işlemcide kullanılan komutlar ve yapıları açıklamalarıyla gösterilecektir. Komutların açıklanmasından sonra ise işlevsel birimler tanıtılacak ve her birimin görevleri, bu görevleri nasıl yerine getirdiği açıklanacaktır. Son olarak bellek organizasyonu ve komut işleme düzeni hakkında bilgi verilecektir.

3.2.1 Tasarlanan işlemcinin temel özellikleri

Tasarlanan işlemci 8 adet veri giriş ve 8 adet veri çıkış, 1 adet kesme giriş ve 1 adet kesme çıkış, 1 adet saat, 1 adet reset ve 1 adet programlama girişi olmak üzere toplamda 12 adet giriş, 9 adet çıkış portu bulundurmaktadır. İşlemci 8 bit genişliğinde veri yoluna sahiptir. Literatürdeki diğer sanal işlemcilerin çoğundan farklı olarak tasarlanan işlemcide hafıza erişimi haricinde veri giriş çıkış portları ve kesme giriş çıkış portları olacaktır. Kullanılan FPGA platformu üzerindeki genel amaçlı giriş çıkış portu sayısı göz önüne alındığında işlemcinin 8 bit genişliğinde veri yoluna sahip olması uygun görülmüştür. İşlemci 40 adet komut içeren RISC yapıda komut setine sahiptir. Harvard hafıza mimarisinde olan işlemci 256 byte veri belleği ve 704 byte program belleği içermektedir. 16 adet genel amaçlı yazmaç ve Çok Döngülü komut işleme düzenine sahip olan işlemcinin gerçeklenmesi amacıyla Arty 7-35T FPGA Geliştirme Platformu kullanılmıştır.

3.2.2 Komut yapısı

Tasarlanan işlemcide 10 farklı komut yapısı bulunmaktadır ve tüm komutlar 22 bit genişliğindedir. İşlemcinin tüm komut yapılarında ilk 6 bit Opcode (Operation Code) için ayrılmıştır. 4 bit genişliğindeki kaynak yazmaçları genel amaçlı yazmaçların içeriğinin okunmasında, hedef yazmaçları ise genel amaçlı yazmaçların içeriğinin değiştirilmesinde kullanılmaktadır. Anlık değer ise veri belleği ya da fiziksel girişten

28

alınan değerdir. Bunun yanında komut yapısına bağlı olarak komut içerisinde kullanılmayan bitler bulunmaktadır. Şekil 3.14’de tasarlanan işlemcinin komut yapıları görülmektedir.

Opcode Hedef Yazmacı Kaynak Yazmacı-1 Kaynak Yazmacı-2 Kullanılmayan

6 bit 4 bit 4 bit 4 bit 4 bit

Opcode Hedef Yazmacı Kaynak Yazmacı Anlık Değer

6 bit 4 bit 4 bit 8 bit

Opcode Hedef Yazmacı Kaynak Yazmacı Kullanılmayan

6 bit 4 bit 4 bit 8 bit

Opcode Hedef Yazmacı Kullanılmayan Anlık Değer

6 bit 4 bit 4 bit 8 bit

Opcode Kullanılmayan Kaynak Yazmacı Anlık Değer

6 bit 4 bit 4 bit 8 bit

Opcode Kullanılmayan Kaynak Yazmacı-1 Kaynak Yazmacı-2 Kullanılmayan

6 bit 4 bit 4 bit 4 bit 4 bit

Opcode Kullanılmayan Anlık Değer

6 bit 8 bit 8 bit

Opcode Hedef Yazmacı Kullanılmayan

6 bit 4 bit 12 bit

Opcode Kullanılmayan Kaynak Yazmacı Kullanılmayan

6 bit 4 bit 4 bit 8 bit

Opcode Kullanılmayan

6 bit 16 bit

Şekil 3.14 Tasarlanan işlemcinin komut yapıları

3.2.3 Komut seti

Tasarlanan işlemcinin komut setinde aritmetik ve mantık, veri transferi, kaydırma ve döndürme, karşılaştırma ve dallanma gibi işlemleri yerine getirmekte olan 40 adet komut bulunmaktadır. Tasarlanan işlemcinin komutları gruplandırılarak ayrı ayrı

29

çizelgelerde verilmiştir. Çizelgelerde HY kısaltması hedef yazmacı, KY kısaltması kaynak yazmacı, KY-1 kısaltması birinci kaynak yazmacı, KY-2 kısaltması ikinci kaynak yazmacı temsil etmektedir. Bir adet kaynak yazmacı kullanılan komutlarda KY kısaltması, iki adet kaynak yazmacı kullanılan komutlarda ise KY-1, KY-2 kısaltmaları kullanılmıştır.

Çizelge 3.1’de aritmetik ve mantık işlemlerini gerçekleştirmek üzere kullanılan 15 adet komut görülmektedir. İşlemci 0 ile 256 doğal sayı aralığını destekler. Aritmetik ve mantık işlemler kaynak yazmacındaki değer ya da anlık değer ile yapılabilir.

Çizelge 3.1 Aritmetik ve Mantık işlem komutları Komut Opcode İşlem Açıklama NOT 110000 HY = ~ KY Hedef yazmaca kaynak yazmacının tersinin

yazılması

30

Çizelge 3.2’de kaydırma ve döndürme komutları görülmektedir. İşlemci mantıksal kaydırma, aritmetik kaydırma ve dairesel kaydırma işlemlerini desteklemektedir. Birinci kaynak yazmacındaki değer anlık veri değeri kadar kaydırılarak hedef yazmaca aktarılır.

Çizelge 3.2 Kaydırma ve döndürme komutları

Komut Opcode İşlem Açıklama

SLL 110010 HY =KY << A.D. Anlık değer kadar sola mantıksal kaydırma SRL 110011 HY= KY >> A.D. Anlık değer kadar sağa mantıksal kaydırma SLA 110100 HY =KY << A.D. Anlık değer kadar sola aritmetik kaydırma SRA 110101 HY= KY >> A.D. Anlık değer kadar sağa aritmetik kaydırma SLC 110110 HY = KY <<

A.D.

Anlık değer kadar sola dairesel kaydırma SRC 110111 HY = KY >>

A.D.

Anlık değer kadar sağa dairesel kaydırma

Çizelge 3.3’te veri transfer komutları görülmektedir. MOV ve MOVi komutları hedef yazmaca kaynak yazmaçtaki değeri ya da anlık değeri aktarmak için kullanılır. LOAD ve STR komutları hafıza erişim komutlarıdır. Birinci kaynak yazmacındaki değeri hafızada istenen adrese aktarmayı ya da hafızada belirli bir adresteki değeri hedef yazmaca aktarmayı sağlarlar. IN ve OUT komutları ise giriş portlarından veri alınmasını ya da yazmaçtaki verinin çıkış portlarına aktarılması amacıyla kullanılır.

Çizelge 3.3 Veri transfer komutları

Komut Opcode İşlem Açıklama

MOV 110001 HY = KY Hedef yazmaca kaynak yazmacının içeriği aktarılır

MOVi 101000 HY = Anlık Değer Kaynak yazmaca anlık değer aktarılır LOAD 100000 HY = Mem[A.D.] Hedef yazmaca hafızanın anlık değer ile

belirlenen adresinin içeriği aktarılır

STR 101111 Mem[A.D.] = KY Hafızanın anlık değer ile belirlenen adresine kaynak yazmacının içeriği aktarılır

IN 100010 HY = Input Hedef yazmaca giriş portundaki değer aktarılır

OUT 010001 Output = KY Çıkış portuna kaynak yazmacının değeri aktarılır

31

Çizelge 3.4’te karşılaştırma ve dallanma komutları görülmektedir. CMP komutu kaynak yazmaçlarındaki değerleri karşılaştırarak bayrak durumlarını günceller. Koşullu dallanma komutları bu bayrak durumlarına bağlı olarak dallanma işlemini gerçekleştirir.

Dallanma komutlarından JMP ve CALL koşulsuz dallanma gerçekleştirirler. CALL komutu JMP komutundan farklı olarak dallanmayla birlikte bir sonraki komutun adresini yazmaçta tutar. RET komutuyla birlikte tutulan bu adrese geri dönülebilir.

Çizelge 3.4 Karşılaştırma ve dallanma komutları

Komut Opcode İşlem Açıklama

JMP 001000 Program Sayacı = Anlık Değer Koşulsuz dallanma JE 001001 Karşılaştırma Bayrağı(1) = ‘1’ise

Program Sayacı = Anlık Değer

Koşullu dallanma

JNE 001010 Karşılaştırma Bayrağı(1) = ‘0’ise Program Sayacı = Anlık Değer

Koşullu dallanma

JG 001011 Karşılaştırma Bayrağı(2) = ‘1’ise Program Sayacı = Anlık Değer

Koşullu dallanma

JL 001100 Karşılaştırma Bayrağı(0) = ‘1’ise Program Sayacı = Anlık Değer

Koşullu dallanma

JGE 001101 Karşılaştırma Bayrağı(1) = ‘1’ise veya

Karşılaştırma Bayrağı(2) = ‘1’ise Program Sayacı = Anlık Değer

Koşullu dallanma

JLE 001110 Karşılaştırma Bayrağı(1) = ‘1’ise veya

Karşılaştırma Bayrağı(0) = ‘1’ise Program Sayacı = Anlık Değer

Koşullu dallanma

CALL 001111 Program Sayacı = Anlık Değer P.S_Ret = Program Sayacı+1

Koşulsuz dallanma

RET 000000 Program Sayacı = P.S_Ret Koşullu dallanma NOP 000010 Program Sayacı = Program Sayacı+1 İşlem yok

32

Çizelge 3.5’te kesme komutları görülmektedir. Eint komutu kesme portunun aktif edilmesi amacıyla kullanılır. Dint komutu ise kesme portunu yok sayar. Dint komutu kullanıldığında dışarıdan gelen kesme sinyali dikkate alınmaz.

Çizelge 3.5 Kesme komutları

Komut Opcode İşlem Açıklama

Eint 000100 Kesme Bayrağı = ‘1’ Kesme portu dikkate alınır Dint 000101 Kesme Bayrağı = ‘0’ Kesme portu dikkate alınmaz

3.2.4 Adresleme yöntemleri

 Yazmaç adresleme yöntemi: Hem kaynak hem de hedef bir yazmaçtır.

Tasarlanan işlemcinin aritmetik ve mantık işlemleri ve karşılaştırma işlemi yazmaç adresleme yöntemi kullanılarak gerçekleştirilir.

 Anlık adresleme yöntemi: Sabit bir değer doğrudan bir yazmaca aktarılır.

Tasarlanan işlemcinin anlık değer kullanan aritmetik mantık işlemleri ve kaydırma ve döndürme işlemleri anlık adresleme yöntemi kullanılarak gerçekleştirilir.

 Mutlak adresleme yöntemi: Dallanma komutlarında kullanılır. Bu yöntemde anlık değer doğrudan hedef adrestir. Tasarlanan işlemcinin koşullu ve koşulsuz dallanma işlemleri mutlak adresleme yöntemi kullanılarak gerçekleştirilir.

 Zımni adresleme yöntemi: Adres, operasyon kodunun kendisinden gelmektedir.

Adresleme için bir yazmaç ya da anlık değer kullanılmaz. Kesme işlemleri zımni adresleme yöntemi kullanılarak gerçekleştirilir.

 Doğrudan Bellek adresleme yöntemi: Veri belleğine erişim komutları ile birlikte kullanılır. Veri belleğinde ulaşılacak adres ya da veri belleğinden alınacak bilginin adresi anlık değer ile belirlenir.

 Giriş Çıkış adresleme yöntemi: Giriş ve çıkış işlemleri ile birlikte kullanılır.

Giriş portlarındaki değer doğrudan hedef yazmaca ya da kaynak yazmacındaki

33

değer doğrudan çıkış portuna aktarılır. Tasarlanan işlemcinin IN ve OUT işlemleri giriş çıkış adresleme yöntemi kullanılarak gerçekleştirilir.

3.2.5 Çok Döngülü komut işleme düzeni

Tasarlanan işlemci Çok Döngülü komut işleme düzenine sahiptir. Şekil 3.15’de tasarlanan işlemcinin komut işleme düzeni görülmektedir. İşlenen programa bağlı olarak işlemler iki ya da üç saat darbesinde gerçekleştirilmektedir. Dallanma komutları, kesme komutları, OUT ve CMP komutları genel amaçlı yazmaçlardan okuma işlemi gerektirmediği için 2 saat darbesi komutların işlenmesi için yeterli olmaktadır. Veri transfer komutları, kaydırma ve döndürme komutları ve aritmetik mantık işlem komutları genel amaçlı yazmaçlardan veri okuma işlemi gerektirdiği için işlenmeleri 3 saat darbesi sürmektedir. Bölüm 3.1.5.2’de belirtildiği üzere Çok Döngülü komut işleme düzeni, Tek Döngülü komut işleme düzenine kıyasla daha karmaşık bir tasarım sürecini beraberinde getirir ancak komut işleme süresini düşürdüğü için daha verimlidir.

İş Hattı ve Süperölçek komut işleme düzenleri ise ileri derecede tasarım zorluğuna sebep olacağı için çok döngülü komut işleme düzeninin kullanılmasında karar kılınmıştır.

Şekil 3.15 Çok döngülü komut işleme düzeni

34 3.2.6 Yakalama birimi

Yakalama birimi işlenecek olan komutun adresini program belleğine ileten birimdir.

Program belleği, yakalama biriminden gelen adrese bağlı olarak ilgili adresteki komutu kod çözme birimine iletir. Şekil 3.16’te görüldüğü üzere, yakalama birimi yürütme biriminden gelen ExecuteFlag sinyaline ve kod çözme biriminden gelen BranchFlag, JumpFlag, InterrupFlag, NopFlag ve ReturnFlag sinyallerine bağlı olarak çıkış üretir.

Gelen sinyaller dallanma gerektiriyorsa gerekli adres, dallanma gerektirmiyorsa bellekteki bir sonraki komut adresi çıkışta üretilir ve ProgramAddress sinyali üzerinden program belleğine iletilir. Yakalama biriminin dallanma gerektiren komutlar işlenirken hangi adresi kullanacağı ise ImmediateAddress girişindeki değeri ile belirlenir. Bunun yanında yakalama biriminde yapılan işlemlerin bittiğini gösteren, kod çözme birimine bağlı olan FetchFlag sinyali ve kesme durumunu belirten, çıkış portuna bağlı olan InterruptAck sinyali yakalama biriminin çıkışları olarak üretilir.

Şekil 3.16 Tasarlanan işlemcinin yakalama birimi

35 3.2.7 Kod Çözme birimi

Kod çözme birimi program belleğinden okunan komutun çözüldüğü birimdir. Opcode’a bağlı olarak yapılacak olan işlemin belirlenmesi, genel amaçlı yazmaçtan hangi bilgilerin okunacağı, yürütme işlemi sonrası genel amaçlı yazmaçta hangi bilgilerin güncelleneceği, anlık değerin ne olduğu, veri belleğine erişim olup olmayacağı, giriş çıkış portlarının kullanılıp kullanılmayacağı gibi kararlar bu birimde yapılan işlemler sonucu belirlenir. Bunun yanında yürütme birimine gerek kalmaksızın 2 saat darbesi süren işlemler bu birimde gerçekleştirilir. Şekil 3.17’te görüldüğü üzere program belleğinden komutların okunduğu InstructionIn sinyali ve yakalama biriminden gelen FetchFlag sinyali dışında, yürütme biriminde gerçekleştirilen karşılaştırma işleminin sonucunu taşıyan CheckFlag sinyali de kod çözme biriminin girişlerindendir. Çıkış kısmında ise veri belleği ile bağlantıyı oluşturan Address ve RW sinyalleri, genel amaçlı yazmaçlar ile bağlantıyı oluşturan R0, R1, R2 sinyalleri ve çözülen komutun gerektirdiği işlemleri belirten BranchFlag, JumpFlag, InterruptFlag, NopFlag ve DecodeFlag sinyalleri bulunmaktadır.

Şekil 3.17 Tasarlanan işlemcinin kod çözme birimi

36 3.2.8 Yürütme birimi

Yürütme birimi, kod çözme biriminden gelen sinyallere bağlı olarak aritmetik ve mantık, kaydırma ve döndürme, veri transferi, kesme, hafıza erişimi ve giriş çıkış işlemlerinin yapıldığı birimdir. Yürütme sonunda elde edilen sonuçlar ilgili birimlere iletilir ve gerekliyse genel amaçlı yazmaçların içeriğinde güncelleme yapılır. Şekil 3.18’te görüldüğü üzere yürütme biriminde giriş olarak genel amaçlı yazmaçlardan gelen D1, D2 sinyalleri, veri belleğinden gelen DataOut sinyali, fiziksel girişten gelen Input sinyali ve kod çözme biriminden gelen, kod çözme biriminde işlemlerin bittiğini belirten DecodeFlag sinyali ile yine kod çözme biriminden gelen, hangi işlemlerin yapılacağını belirten OperationSelect sinyali bulunmaktadır. Çıkış kısmında ise genel amaçlı yazmaçlara bağlanan DW sinyali, veri belleğine bağlanan DataIn ve RW sinyalleri, fiziksel çıkışa aktarılan Output sinyali ve yürütme biriminde yapılan işlemlerin bittiğini belirten ExecuteFlag sinyali bulunmaktadır.

Şekil 3.18 Tasarlanan işlemcinin yürütme birimi

37 3.2.9 Genel amaçlı yazmaçlar

İşlemcide komutlar işlenirken sonradan kullanılmak üzere saklanması gereken veriler genel amaçlı yazmaçlar birimde tutulur. Tasarlanan işlemcide 16 adet genel amaçlı yazmaç bulunmaktadır. Genel amaçlı yazmaçlardaki içeriğin güncellenmesi yürütme birimi tarafından gerçekleştirilir. Şekil 3.19’de görüldüğü üzere genel amaçlı yazmaçlar biriminin girişinde yürütme biriminden gelen ve bilgi taşıyan DW sinyali, kod çözme biriminden gelen ve genel amaçlı yazmaçlardan hangi bilgilerin okunacağını belirleyen R0, R1, R2 sinyalleri bulunmaktadır. Çıkış kısmında ise yürütme biriminde kullanılmak üzere genel amaçlı yazmaçlardan okunan bilgileri taşıyan D1 ve D2 sinyalleri bulunmaktadır.

Şekil 3.19 Tasarlanan işlemcinin genel amaçlı yazmaçlar birimi

38 3.2.10 Hafıza organizasyonu

Bölüm 3.1.5.1’de sebepleri ile belirtildiği üzere tasarlanan işlemcide Harvard mimarisi kullanılmıştır. Bu mimarinin gereği olarak tasarlanan işlemcide veri ve komutlar iki ayrı bellekte tutulurlar.

Şekil 3.20 Tasarlanan işlemcinin hafıza organizasyonu

Veri belleğine göre daha basit yapıda olan program belleği, gelen adres bilgisine bağlı olarak o adresteki komutu komut çözme birimine gönderir. Veri belleği ise adres girişi dışında, yapılacak işlemi belirleyen bir giriş, veri girişi ve veri çıkışı içermektedir. Veri belleği adres bilgisini ve yapılacak işlemi belirleyen sinyali komut çözme biriminden alır. Belleğe yazılacak bilgiler ve bellekten okunacak bilgiler için ise yürütme birimiyle bağlantı kurar.

39 4. ARAŞTIRMA BULGULARI

Önceki bölümlerde tasarlanan işlemcinin komut seti, komut yapısı, hafıza organizasyonu, komut işleme düzeni ve komutların işlenmesi için gerekli birimler detaylı bir şekilde anlatılmıştır. Bu bölümde tasarlanmış olan işlemci kullanılarak yapılan bazı uygulamalar gösterilecek, uygulamalar gerçeklenirken yapılan işlemlerin tasarım ile tutarlılığı ve uygulama sonuçlarının doğruluğu ortaya koyulacaktır.

4.1 Varyans Hesabı Uygulaması

Bu uygulamada veri belleğinde dört ayrı adreste bulunan sayılar hafızadan çağırılarak genel amaçlı yazmaçlara yüklenmiştir. Genel amaçlı yazmaçlardaki değerler üzerinden varyans hesabı için gerekli işlemler gerçekleştirildikten sonra sonuç fiziksel çıkışa verilmiştir. Birçok bilim dalında sıkça kullanılan bir ölçü olması sebebiyle varyans hesabı uygulamasının yapılmasına karar verilmiştir.

Şekil 4.1 Varyans hesabı uygulaması

Şekil 4.1 uygulama sırasında kullanılan sinyallerin değerleri görülmektedir. Yapılan uygulama herhangi bir dallanma işlemi gerektirmemektedir. BranchFlag sinyalinde bir değişiklik olmaması ve ProgramAddress değerinin sıralı olarak artması da bu durumu göstermektedir. DataMemory isimli veri belleğinde bulunan değerler ve bu değerlere varyans hesabı algoritmasının uygulanması sonucu elde edilen Output sinyalinde görünen değer algoritmanın doğru bir şekilde gerçeklendiğini göstermektedir.

40

FetchFlag, DecodeFlag ve ExecuteFlag sinyallerinin ise sırayla değer alması uygulama kodunun 3 saat darbesi süren komutlardan oluştuğunu göstermektedir.

4.2 Ortanca Süzgeci Uygulaması

Sinyal işleme alanında sıkça kullanılan bir süzgeç olduğu için ortanca süzgeci uygulaması yapılmasına karar verilmiştir. Bu uygulamada veri belleğinde bulunan dört ayrı değere ortanca süzgeci algoritması uygulanarak elde edilen değerler tekrar veri belleğine yüklenmiştir. İlk olarak veri belleğindeki ilgili değerler genel amaçlı yazmaçlara yüklenmiştir. Daha sonra algoritma gereği yapılması gereken aritmetik ve mantık işlemleri gerçekleştirilmiştir. Şekil 4.2’de BranchFlag ve JumpFlag sinyallerinden görüldüğü üzere bu algoritma birçok dallanma işlemi gerektirmektedir.

Program adresindeki değerler incelendiğinde gerekli dallanmaların başarılı şekilde ve 2 saat darbesinde gerçekleştirildiği görülmektedir. DataMemory isimli veri belleğinde başlangıçta bulunan dört değer ve ortanca süzgeci algoritması sonucu elde edilen değerlerin tekrar veri belleğine yazılması sonucu elde edilen değerler incelendiğinde bellek erişimi işlemlerinin ve tüm algoritmanın başarılı bir şekilde gerçeklendiği doğrulanmaktadır.

Şekil 4.2 Ortanca süzgeci uygulaması

41 4.3 Performans Analizi

Tasarlanan işlemci maksimum saat frekansı, kaynak kullanımı ve güç tüketimi açısından Picoblaze Sanal İşlemcisi ile karşılaştırmalı olarak analiz edilmiştir.

Karşılaştırmada Picoblaze Sanal İşlemcisi seçilmesinin sebebi iki işlemcinininde 8 adet giriş portu, 8 adet çıkış portu, 1 adet kesme giriş portu, 1 adet kesme çıkış portu ve 8 bit veri genişliği içererek benzer özellik taşımalarıdır.

4.3.1 Maksimum saat frekansı

Vivado Design Suite geliştirme ortamı kullanılarak tasarlanan işlemcinin kararlı olarak çalışacağı maksimum saat frekansı hesaplanmıştır. Tasarlanan işlemcide bu değer 12,25 MHz, buna bağlı olarak MIPS (Millions of Instructions Per Second) değeri 4,537 olarak belirlenmiştir. Çizelge 4.1’de görüldüğü üzere Picoblaze Sanal İşlemcisinde ise maksimum saat frekansının 128 MHz ve buna bağlı olarak MIPS değerinin 64 olduğu görülmektedir. Bu açıdan Picoblaze Sanal İşlemcisi tasarlanan işlemciye kıyasla ciddi bir üstünlük göstermektedir.

Çizelge 4.1 Maksimum çalışma frekansı

Tasarlanan İşlemci Picoblaze

Saat Frekansı 12,25 MHz 128 MHz

MIPS 4,537 64

4.3.2 Kaynak kullanımı

Tasarım sonrası Vivado Design Suite geliştirme ortamının sunduğu tasarım özetinde kaynak kullanımlarına detaylı olarak ulaşılabilmektedir. Çizelge 4.2 incelendiğinde tasarlanan işlemcinin kaynak kullanımları görülmektedir. LUT ve FF (Flip Flop) kullanımına bakıldığında Picoblaze Sanal İşlemcisi üstünlük sağlamaktadır. Ancak BUFG (Global Buffer), BRAM (Block Random Access Memory) ve LUTRAM (Look

42

Up Table Random Access Memory) kullanımında tasarlanan işlemci üstünlük sağlamaktadır. BRAM ve LUTRAM’in LUT setleri olduğu, maksimumu saat frekansı ve bir sonraki bölümde bahsedilecek olan güç tüketimi göz önüne alındığında toplam kaynak kullanımı açısından tasarlanan işlemcinin daha üstün olduğu görülmektedir.

Çizelge 4.2 Kaynak kullanımı Kaynak

Kullanımı

Tasarlanan İşlemci(Adet) Picoblaze(Adet) Toplam(Adet)

LUT 3799 128 20800

FF 6176 117 41600

BUFG 2 3 32

BRAM 0 1 50

LUTRAM 0 24 9600

IO 22 30 210

4.3.3 Güç tüketimi

Tasarlanan işlemcinin ve Picoblaze Sanal İşlemcisinin Vivado Design Suite geliştirme ortamı kullanılarak elde edilen güç tüketim analizi Çizelge 4.3’te görülmektedir.

Tasarlanan işlemcinin toplam 171 mW güç tüketmesine karşın Picoblaze 220 mW güç tüketmektedir. Bu açıdan tasarlanan işlemcinin Picoblaze Sanal İşlemcisine karşı açık bir üstünlüğü olduğu görülmektedir.

Çizelge 4.3 Güç tüketimi

Güç Tüketimi Tasarlanan İşlemci Picoblaze

Dinamik Güç Tüketimi 109 mW 158 mW

Statik Güç Tüketimi 62 mW 62 mW

Toplam Güç Tüketimi 171 mW 220 mW

43 5. SONUÇ

5.1 Değerlendirme

Tez çalışması kapsamında düşük kaynak kullanımı, düşük güç tüketimi ve yüksek maksimumum çalışma frekansı hedefleri ile sanal işlemci tasarımı yapılmıştır. İşlemci tasarımının tüm aşamaları şeffaf bir şekilde sunulmuş ve tasarım sonuçları Picoblaze Sanal İşlemcisi ile karşılaştırmalı olarak verilmiştir.

İşlemcinin tasarımı davranışsal seviyede, VHDL kullanılarak, Vivado Design Suite geliştirme ortamında yapılmıştır. Tasarım aşamasında ve tasarım sonrasında aynı geliştirme ortamı kullanılarak işlemcinin istenen işlevleri doğru bir şekilde yerine getirdiğini doğrulamak amacıyla simülasyonlar yapılmış ve bu simülasyon sonuçları tez içerisinde sunulmuştur. Simülasyonlar ile doğrulanan tasarımın gerçeklenmesi ise Arty A7-35T isimli FPGA geliştirme platformu kullanılarak gerçekleştirilmiştir. FPGA üzerinde gerçeklenen tasarımın sonuçları yine tez içinde detaylı bir şekilde sunulmuştur.

İşlemcinin tasarımı davranışsal seviyede, VHDL kullanılarak, Vivado Design Suite geliştirme ortamında yapılmıştır. Tasarım aşamasında ve tasarım sonrasında aynı geliştirme ortamı kullanılarak işlemcinin istenen işlevleri doğru bir şekilde yerine getirdiğini doğrulamak amacıyla simülasyonlar yapılmış ve bu simülasyon sonuçları tez içerisinde sunulmuştur. Simülasyonlar ile doğrulanan tasarımın gerçeklenmesi ise Arty A7-35T isimli FPGA geliştirme platformu kullanılarak gerçekleştirilmiştir. FPGA üzerinde gerçeklenen tasarımın sonuçları yine tez içinde detaylı bir şekilde sunulmuştur.

Benzer Belgeler