• Sonuç bulunamadı

3. MATERYAL ve YÖNTEM

3.1 Materyal

3.1.5 İşlemci tasarım mimarileri

3.1.5.2 Komut işleme düzenleri

İşlemciler komut işleme düzenlerine göre farklılık gösterirler. Bazı komut işleme düzenleri komutların hızlı işlenmesine olanak tanırken bazıları komutları daha yavaş işler ya da bazı düzenler basit yapıda iken bazıları karmaşık bir tasarım süreci gerektirir.

Kısacası açıklamak gerekirse, komut işleme hızı ile işlemci karmaşıklığı arasında bir denge bulunmaktadır. Komut işleme düzenleri Tek Döngülü, Çok Döngülü, İş hattı ve Süper ölçek olmak üzere dört çeşide ayrılabilir. Şekil 3.8’de farklı düzenlerde komutların nasıl işlendiği görülmektedir.

Şekil 3.8 Komut işleme düzenleri

21

Tek Döngülü düzende tüm komutlar eşit saat darbesinde işlenir. Bu özellik kolay tasarımı beraberinde getirir. Ancak bazı komutların işlenmesi diğerlerine kıyasla daha uzun sürebildiği için saat frekansı, en yavaş işlenen komuta göre seçilir. Bu durumda beraberinde kısa komutlar içinde uzun süre beklemeyi, yani verimsizliği getirir.

Çok Döngülü düzende ise komutlar farklı saat darbesi sayısında işlenebilir. Bu da tek döngülü düzendeki kısa sürede işlenebilecek komutlar için gereksiz beklemeyi ortadan kaldırmış olur. Tek Döngülü düzene kıyasla daha verimlidir ancak tasarımı daha karmaşıktır. Çünkü komutların işlem süresi birbirinden farklı olduğu için birçok birimden durum sinyali alınıp yapılan işin hangi aşamada olduğunun sürekli kontrol edilmesi gereklidir.

İş hattı düzeninde Tek ve Çok Döngülü düzenden farklı ve daha gelişmiş bir özellik olan, bir komutun işlenmesi bitmeden diğer komutun işlenmeye başlaması özelliği vardır. Kontrol biriminin durumlarından biri olan yakalama durumunda komutun yakalama durumunda işlenecek kısmı işlendikten sonra diğer komutun yakalama durumunda işlenecek kısmı alınır. Aynı durum kod çözme, yürütme ve geri yazma durumlarında da devam eder. Bu özellik komut işleme hızını ciddi derecede artırır ancak sıralı gelen komutların birbirinin sonucuna bağlı olması ya da dallanma içeren komutlar bu mimaride soruna sebep olacağı için bu gibi sorunlara önlem almak işlemci tasarımını karmaşıklaştırır.

Süper ölçek mimarisinde tüm komutlar değerlendirilir ve birbirinden bağımsız olan komutlar eş zamanlı olarak işlenir. Bu özellik komut işleme hızını büyük ölçüde arttırır.

Ancak aynı anda birden çok komutun işlenebilmesi için yakalama, kod çözme, yürütme, geri yazma birimlerinin çok sayıda olması yani tasarımın büyümesi gerekir (Nurmi 2009).

Tasarlanan işlemcide Çok Döngülü komut işleme düzeni tercih edilmiştir. Bunun sebebi Tek Döngülü komut işleme düzenine kıyasla daha verimli olması, İş Hattı ve Süperölçek düzenlerine kıyasla tasarım karmaşıklığının daha az olmasıdır.

22 3.1.5.3 Komut seti mimarileri

İşlemciler komut seti mimarilerine göre farklılık gösterirler. Komutların uzunluğu, yapısı, karmaşıklığı her mimaride değişmektedir. Bu değişim tasarımdaki farklılaşmayı da beraberinde getirir.

Komut seti mimarilerinden ilki olan CISC (Complex Instruction Set Computing) ilk ortaya çıkan komut seti mimarisidir. Bu mimaride komutlar değişken uzunlukta ve karmaşık yapıdadır. Çok sayıda komut tek bir komut haline getirildiği için hem bellekten hem de komut sayısından tasarruf sağlanır. Ancak komutların karmaşıklığı işlemci tasarımında karmaşıklığı da beraberinde getirir.

RISC komut seti mimarisinde komutlar eşit uzunlukta ve basit yapıdadır. Bu sayede işlemci tasarımı daha basit olur. Ancak bir işlemi gerçekleştirmek için CISC mimarisine kıyasla daha fazla komut kullanmak gerekir. (Chevtchenko ve Vale 2014)

Şekil 3.9 RISC ve CISC komutların karşılaştırılması

Şekil 3.9’da üç ayrı yazmaçtaki değerin karelerinin toplamını bir yazmaca aktarma işleminin RISC ve CISC mimarilerindeki işlemcilerle nasıl gerçekleştirebileceği örnek olarak görülmektedir. RISC komut setlerinde komutlar basit yapıda olduğu için çarpma işlemi her bir yazmaca toplamda üç kere uygulandıktan sonra yazmaçlardaki değerler hedef yazmaca iki seferde toplanabilmektedir. Buna karşın CISC komut setlerinde

23

komutlar karmaşık yapıda ve uzun boyutta oldukları için çarpımların toplamı işlemini gerçekleştirmek üzere sadece bir adet komut bulunabilmektedir.

İşlemci üretiminin ilk dönemlerinde belleklerin çok daha masraflı ve yavaş olması belleğin mümkün olduğunca az kullanıldığı CISC mimarisini ortaya çıkarmıştır. CISC mimarisinden RISC mimarisine geçişi sağlayan teknolojik gelişmeler bellek hızlarının artması ve maliyetlerinin düşmesi olmuştur. Bellek ve merkezi işlem birimi hızları arasındaki fark şekil 3.10’da görülmektedir.

Şekil 3.10 Merkezi İşlem Birimi ile veri belleği hız arasındaki farkı (Hruska 2018)

Gelişen bilgisayar teknolojisi ve artan hız ihtiyacı, komut seviyesinde paralellik sağlayan VLIW (Very Long Instruction Word) mimarisini ortaya çıkarmıştır. VLIW mimarisinde komutlar çok uzundur ve çok sayıda işlem içerir. Bu karmaşık ve uzun komutların çözümü ise derleyici kullanılarak gerçekleştirilir. VLIW mimarisine uygun olarak oluşturulmuş derleyiciler, bir komut içerisindeki sıralı ve paralel işlemleri tanımlar ve bunları donanıma bildirir. VLIW mimarisinde işlem tanımının derleyici tarafından yapılması donanımdaki karmaşıklığın düşük seviyede kalmasını sağlar (Nurmi 2009).

24

RISC yapıdaki komutlar basit yapıda olduğu için komutların çözülmesinde diğer komut seti mimarilerine kıyasla daha basit kod çözme birimi yeterli olmaktadır. Bu sebeple tasarlanan işlemcide, tasarım hedeflerinden biri olan düşük kaynak kullanımı hedefine ulaşmak amacıyla işlemci karmaşıklığının daha az olduğu RISC komut işleme düzeni tercih edilmiştir.

3.1.5.4 Adresleme yöntemleri

Adresleme yöntemi verinin belleğe nasıl yerleştirileceğini ve bellekteki veriye nasıl erişileceğini belirler. Bir işlemcide adresleme yönteminin çokluğu işlemci tasarımının karmaşıklığını artırır ancak karmaşık işlemlerin daha hızlı ve kolay yerine getirilmesini sağlar. İşlemci mimarisine bağlı olarak adresleme yöntemlerinin sayısı değişmektedir.

Tasarlanan işlemcide 6 farklı adresleme yöntemi kullanılmıştır.

3.1.6 Vivado Design Suite Geliştirme Ortamı

Vivado Design Suite, Xilinx firması tarafından HDL tasarımlarının sentezi ve analizi için üretilmiş, çip geliştirme ve yüksek seviyeli sentez için ek özellikler sunan bir yazılım paketidir.Simülasyon için dahili bir mantık simülatörü içerir.

Şekil 3.11 Vivado Design Suite Geliştirme Ortamı

25

Vivado Desing Suite ayrıca C kodunu programlanabilir mantığa dönüştüren bir takım zinciri ile yüksek seviyeli sentez de sunar. Vivado, geliştiricilerin tasarımlarını sentezlemesine, zamanlama analizini gerçekleştirmesine, RTL diyagramlarını incelemesine, tasarımlarını simüle etmesine ve hedef cihazı yapılandırılmasına olanak sağlar. Vivado, Xilinx FPGA ürünleri için bir tasarım ortamıdır ve bu tür yongaların mimarisine sıkı sıkıya bağlıdır ve diğer üreticilerin FPGA ürünleriyle kullanılamaz (Anonymous 2017b)

3.1.7 Arty A7-35T : Artix FPGA Geliştirme Platformu

Arty A7-35T, Xilinx firması tarafından Artix-7 FPGA’i kullanılarak tasarlanmış kullanıma hazır bir geliştirme platformdur. Yapılan çalışmada tasarlanan sanal işlemcinin gerçeklenmesi sırasında Arty A7-35T Geliştirme Platformu kullanılmıştır.

Şekil 3.12 Arty A7-35T FPGA Geliştirme Platformu

Şekil 3.12’de görseli bulunan Arty A7-35T Platformu,

 33.280 mantık hücresi

 450MHz frekansa kadar dahili saat

 Anolog/Sayısal Çevirgeç

26

 16 bit genişlik, 667 MHz frekans 256MB DDR3L RAM

 16MB Quad-SPI Flash Bellek

 USB-JTAG Programlama Devresi

 10/100 Mbps Ethernet Modulü

 4 Pmod Konnektörü

 Arduino/chipKIT Shield Konnektörü

 4 Anahtar, 5 Buton, 4 LED, 4 RGB LED donanım bileşenlerine sahiptir (Anonymous 2017c)

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

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

Benzer Belgeler