• Sonuç bulunamadı

3. MATERYAL ve YÖNTEM

3.2 Yöntem

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.

Tasarlanan işlemci ile Picoblaze Sanal İşlemcisinin karşılaştırılması sonucunda, maksimum çalışma frekansı açısından tasarlanan işlemcinin 12,25 MHz frekans değerine karşılık, Picoblaze Sanal İşlemcisi 128 MHz frekans değeri ile büyük bir üstünlük göstermiştir. Güç tüketimi açısından yapılan karşılaştırma sonucunda ise Picoblaze Sanal İşlemcisinin 220 mW güç tüketim değerine karşın tasarlanan işlemcinin toplam 171 mW ile daha yüksek performans gösterdiği görülmektedir. Kaynak kullanımı açısından karşılaştırma sonucunda ise tasarlanan işlemci daha çok sayıda LUT ve FF kullanılmasına karşın LUTRAM ve BRAM kullanmayarak toplamda daha düşük kaynak kullandığı tespit edilmiştir.

Picoblaze Sanal İşlemcisi 5 aşamalı İş Hattı komut işleme düzenine sahip iken tasarlanan işlemci çok döngülü komut işleme düzenine sahiptir. İş hattı komut işleme düzeninin yüksek çalışma frekansı ve daha karmaşık tasarım sonucu yüksek kaynak kullanımı özelliklerini beraberinde getirdiği göz önüne alındığında tasarlanan işlemcinin

44

maksimum çalışma frekansı açısından daha düşük performans göstermesi, kaynak ve güç tüketimi açısından ise daha yüksek performans göstermesi beklenen bir sonuçtur ve bu sonuç çalışma hedeflerine uygundur.

5.2 Öneriler

Tasarım öncesi belirlenen hedeflere sonuç olarak büyük ölçüde ulaşılmıştır. Bunun yanında tasarlanan işlemcinin performansını ve kabiliyetlerini artırmak, programlanmasını kolaylaştırmak amacıyla birtakım iyileştirmeler yapılabilir.

Tasarlanan sanal işlemcinin maksimum çalışma frekansı ve MIPS değerleri düşüktür.

Bu değerler, Çok Döngülü komut işleme düzeni yerine İş Hattı komut işleme düzeni tercih edilerek yükseltilebilir. Bunun yanında, tasarlanan sanal işlemci doğal sayılar ile işlem yapabilmektedir. İşlemlerin tam sayılar kullanılarak yapılabilmesi amacıyla işlemci tasarımında geliştirmeler yapılabilir. Bunlara ek olarak, oluşturulan bir derleyici ile işlemci için kod yazılması ve işlemcinin programlanması kolaylaştırılabilir.

Tez çalışmasının giriş bölümünde belirtildiği üzere, sanal işlemciler var olan avantajları sayesinde fiziksel işlemcilere alternatif olarak kullanılmaktadır. Bu sebeple, tasarlanan sanal işlemcinin benzer kabiliyetlerdeki bir fiziksel işlemci ile performans açısından karşılaştırılmasını içeren bir çalışma gerçekleştirilebilir.

45 KAYNAKLAR

Alaer, E. 2006. 16 Bitlik Mikroişlemcinin FPGA Mimarileri Kullanılarak Gerçekleştirilmesi. Yüksek Lisans Tezi. Kocaeli Üniversitesi, Fen Bilimleri Enstitüsü,Elektronik ve Haberleşme Mühendisliği Anabilim Dalı, 96, Kocaeli Anonymous. 2017a. FPGA Market Analysis And Segment Forecasts To 2020. San

Francisco, USA

Anonymous. 2017b. Vivado Design Suite User Guide. Xilinx Inc. USA.

Anonymous. 2017c. Arty FPGA Board Reference Manual. Digilent Inc. USA

Başak, S. 2011. FPGA Tabanlı Sentezlenebilir İşlemci Tasarımı. Yüksek Lisans Tezi.

Yıldız Teknik Üniversitesi, Fen Bilimleri Enstitüsü, Bilgisayar Mühendisliği Anabilim Dalı, 65, İstanbul.

Bennett, J. and Baxter, J. 2010. OpenRISC 1200 Supplementary Programmer's Reference Manual. Embecosm Limited and Authors, 42, San Francisco, California,USA.

Baida, Y. 2010. Introduction to Microprocessors. Moscow Institute of Physics and Technology. October 2. Moscow

Burks, A,W. 2017. Electronic Computing Circuits of the ENIAC, Proceedings of the I.R.E., 35 (8), 756–767.

Chevtchenko, S,F. and Vale, R,F. 2014. A Comparison of RISC and CISCArchitectures.Department of Statistics and Informatics UFRPE. Recife, Brazil.

Chu, P,P. 2008. FPGA Prototyping BY VHDL Examples. John Wiley & Sons, 471, Hoboken.

El-Aawar, H. 2015. Increasing The Transistor Count By Constructing a Two- Layer Crystal Square on a Single Chip. International Journal of Engineering Research and Technology(IJERT).7(3), 97-105

Enoch, O. H. 2005. Digital Logic and Microprocessor Design with VHDL. Brooks/Cole 512, Riverside.

Farooq, U., Marrakchi, Z. and Mehrez, H. 2012. Tree-based Heterogeneous FPGA Architectures. Springer, 188, New York

Golson, S. and Clark L. 2016. Language Wars in the 21st Century: Verilog versus VHDL.Synopsys User Group. March 31, San Diego, California

46

Hongbao, M. 2006. Nobel Prizes From 1901. Nature and Science. 4(3), 86-94, Michigan, USA

Hruska, J. 2018. How L1 and L2 CPU Caches Work, and Why They’re an Essential Part of Modern Chips. Extremetech, August 30, US.

Jeemon, J. 2016. Pipelined 8-bit RISC Processor Design using Verilog HDL on FPGA.

IEEE International Conference On Recent Trends In Electronics Information Communication Technology. May 20-21, 2023-2027, India

Mwangi, J. 2016. Xilinx - A Compelling Long-Term Pick Even Without An Acquisition. Seeking Alpha. November 29,2, US.

Nade, J.B. and Sarwadnya, R.W. 2015. The Soft Core Processors : A Review.

Internatıonal Journal Of Innovatıve Research In Electrıcal, Electronıcs, Instrumentatıon And Control Engıneerıng (IJIREEICE). December, 3(12). 197-203. India

Nurmi, J. 2009. Processor Design : System-On-Chip Computing for FPGAs and ASICs.

Springer, 534, Finland

Öztürk, E. 2010. FPGA Kullanarak 16 Bitlik Mikroişlemci Tasarımı. Yüksek Lisans Tezi. Yıldız Teknik Üniversitesi, Fen Bilimleri Enstitüsü, Elektronik ve Haberleşme Mühendisliği Anabilim Dalı, 44, İstanbul.

Smith, S.W. 1999. The Scientist and Engineer’s Guide to Digital Signal Processing.

California Technical Publishing, 722, San Diego, California

Thakor, K. and Pal, A. 2017. Design of a 16-bit RISC Processor UsingVHDL.

International Journal of Engineering Research and Technology(IJERT). 6(4).

Tong, J., Anderson, I. and Khalid, M. 2006. Soft-Core Processor for Embedded Systems. The 18th International Conference on Microelectronics. December 16-19, 170-173, Dhahran.

Zavala, A., Nieto, O. and Ruelas, J. 2015. Design of a General Purpose 8-bit RISC Processor for Computer Architecture Learning. Computacion y Sistemas, 19(2), 371-385.

47 EKLER EK 1 Komut Seti

EK 2 Tasarlanan İşlemcinin Şematik Gösterimi EK 3 Varyans Hesabı Assembly Kodu

EK 4 Ortanca Süzgeci Assembly Kodu

48 EK 1 Komut Seti

Komut Opcode İşlem Döngü

AND 011001 HY = KY1 & KY2

Program Sayacı = Program Sayacı+1

3

OR 011001 HY= KY1 | KY2

Program Sayacı = Program Sayacı+1

3 XOR 011010 HY = KY1 ^ KY2

Program Sayacı = Program Sayacı+1 3 ADD 011100 HY = KY1 + KY2

Program Sayacı = Program Sayacı+1

3 SUB 011101 HY = KY1 - KY2

Program Sayacı = Program Sayacı+1

3 MUL 011110 HY = KY1 * KY2

Program Sayacı = Program Sayacı+1 3 DİV 011111 HY = KY1 / KY2

Program Sayacı = Program Sayacı+1

3 ANDi 111000 HY = KY & Anlık Değer

Program Sayacı = Program Sayacı+1

3 ORi 111001 HY = KY | Anlık Değer

Program Sayacı = Program Sayacı+1 3 XORi 111010 HY = KY ^ Anlık Değer

Program Sayacı = Program Sayacı+1 3 ADDi 111100 HY = KY + Anlık Değer

Program Sayacı = Program Sayacı+1

3 SUBi 111101 HY = KY - Anlık Değer

Program Sayacı = Program Sayacı+1

3 MULi 111110 HY = KY * Anlık Değer

Program Sayacı = Program Sayacı+1 3 DİVi 111111 HY = KY / Anlık Değer

Program Sayacı = Program Sayacı+1

3

NOT 110000 HY = ~ KY

Program Sayacı = Program Sayacı+1

3 SLL 110010 HY = KY << Anlık Değer

Program Sayacı = Program Sayacı+1 3 SRL 110011 HY = KY >> Anlık Değer

Program Sayacı = Program Sayacı+1

3 SLA 110100 HY = KY << Anlık Değer

Program Sayacı = Program Sayacı+1

3 SRA 110101 HY = KY >> Anlık Değer

Program Sayacı = Program Sayacı+1 3 SLC 110110 HY= KY << Anlık Değer

Program Sayacı = Program Sayacı+1 3 SRC 110111 HY = KY >> Anlık Değer

Program Sayacı = Program Sayacı+1

3

MOV 110001 HY = KY

Program Sayacı = Program Sayacı+1

3 MOVi 101000 HY = Anlık Değer

Program Sayacı = Program Sayacı+1 3

LOAD 100000 HY = Mem[A.D.] 3

49

Program Sayacı = Program Sayacı+1 STR 101111 Mem[A.D.] = KY

Program Sayacı = Program Sayacı+1

3

IN 100010 HY = Input

Program Sayacı = Program Sayacı+1

3 OUT 010001 Output = KY

Program Sayacı = Program Sayacı+1

3

Program Sayacı = Program Sayacı+1

3

JMP 001000 Program Sayacı = Anlık Değer 2

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

2

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

2

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

2

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

2

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

2

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

2

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

2

RET 000000 Program Sayacı = P.S_Ret 2

NOP 000010 Program Sayacı = Program Sayacı+1 2 Eint 000100 Kesme Bayrağı = ‘1’

Program Sayacı = Program Sayacı+1 2 Dint 000101 Kesme Bayrağı = ‘0’

Program Sayacı = Program Sayacı+1

2

50 EK 2 Tasarlanan İşlemcinin Şematik Gösterimi

51 EK 3 Varyans Hesabı Assembly Kodu 0: load r0,x"00"

1: load r1,x"01"

2: load r2,x"02"

3: load r3,x"03"

4: add r5,r0,r1 5: add r5,r5,r2 6: add r5,r5,r3 7: div r5,r5,4 8: mul r5,r5,r5 9: mul r0,r0,r0 10: mul r1,r1,r1 11: mul r2,r2,r2 12: mul r3,r3,r3 13: add r4,r0,r1 14: add r4,r4,r2 15: add r4,r4,r3 16: divi r4,r4,4 17: sub r6,r4,r5 18: out r6 19: halt

52 EK 4 Ortanca Süzgeci Assembly Kodu 0: load r0,x"00"

1: load r1,x"01"

2: load r2,x"02"

3: load r3,x"03"

4: mov r4,r0 5: mov r7,r3 6: str r4,x"04"

7: str r7,x"07"

8: cmp r0,r1 9: jg 14 10: jl 19 11: mov r5,r0 12: str r5,x"05"

13: jmp 23 14: cmp r0,r2 15: jl 11 16: mov r5,r1 17: str r5,x"05"

18: jmp 23 19: cmp r1,r2 20: jg 16 21: mov r5,r1

53 22: str r5,x"05"

23: cmp r1,r2 24: jg 29 25: jl 34 26: mov r6,r1 27: str r6,x"06"

28: halt 29: cmp r1,r3 30: jl 26 31: mov r6,r3 32: str r6,x"06"

33: halt 34: cmp r2,r3 35: jg 31 36: mov r6,r2 37: str r6,x"06"

38: halt

54 ÖZGEÇMİŞ

Adı Soyadı : Muhammet Ertuğrul ÇAKIR Doğum Yeri : Eynesil/Giresun

Doğum Tarihi : 30.08.1993 Medeni Hali : Bekar Yabancı Dili : İngilizce

Eğitim Durumu (Kurum ve Yıl)

Lise : Rize Fen Lisesi (2011)

Lisans : Ankara Üniversitesi Elektrik Elektronik Mühendisliği (2016)

Yüksek Lisans: Ankara Üniversitesi Fen Bilimleri Enstitüsü, Elektrik Elektronik Mühendisliği Anabilim Dalı (Eylül 2016- Aralık 2018)

Çalıştığı Kurum/Kurumlar ve Yıl

Adularya Enerji A.Ş. (Haziran 2017 – Kasım 2018) Aselsan (Aralık 2018 - )

Benzer Belgeler