Kasırga [Gizli] KASIRGA PROJESİ 3. GELİŞME RAPORU. 16.06.2008 Ankara



Benzer belgeler
KASIRGA 4. GELİŞME RAPORU

KASIRGA -4 Buyruk Tasarımı Belgesi Ankara

KASIRGA PROJESİ 2. GELİŞME RAPORU

Bilgisayarda Programlama. Temel Kavramlar

K uark projesi. Temel Özellikler :

İvme VGA, İvme s_2.1 fiziksel işlemci çekirdeğinin, çalışan iç yapısının herhangi bir simülasyon olmaksızın fiziksel olarak dış dünyaya aktarımıdır.

Mikroçita. Mikroçita Rapor 2:

Tüm personel kendi KEP hesapları üzerinden mevcut ve önceki maaş bordrolarını görüntüleyebilecektir.

İNTERNET TARAYICISI ÜZERİNDE ÇALIŞABİLEN ELEKTRİK TALEP TAHMİNİ ANALİZ PROGRAMI

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz

Şekil. 64 Kelimelik Yığıtın Blok Şeması

MPLAB IDE v7.60 PROGRAMI KULLANIMI

Seri Takibi Yenilikleri

T.C. KIRIKKALE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ YAPAY SİNİR AĞLARI. Doç.Dr. Necaattin BARIŞÇI FİNAL PROJESİ

BQ101 GSM Access Kontrol Ünitesi Windows Programı. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

Q-Biz İş Zekası 5.1. Versiyon Yenilikleri

UZAKTAN EĞİTİM MERKEZİ

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme

C Dersleri Bölüm 3 : Program akışı


ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

Üst Düzey Programlama

WINDOWS VE PARDUS İÇİN İMZAGER KURULUM TALİMATI

PLS2 KOMUTU. Giriş PLS2 Komutunun Açıklanması Sonuç

Mimari Esaslar. Mikroişlemcinin mimari esasları; Kaydediciler Veriyolları İş hatları dır.

BİLGİSAYAR MİMARİSİ. Mimariye Giriş. Özer Çelik Matematik-Bilgisayar Bölümü

ELN1001 BİLGİSAYAR PROGRAMLAMA I

KULUÇKA PRG. VERSION KULLANMA KLAVUZU

HDL ile Gelişmiş Sayısal Tasarım (EE 425) Ders Detayları

1.1. Yazılım Geliştirme Süreci

E-Netsis.Net Yenilikleri

SIMAN KULLANIM KILAVUZU

KASIRGA CPU TURKEY 1. Ve 2. Aşama Raporu

Mikroişlemcilerde Aritmetik

Zirve Bilgi Tenolojileri TUİK A101 Form Giriş Klavuzu V1.1.1

TBİL-405 Mikroişlemci Sistemleri Bölüm 2 1- % %01010 işleminin sonucu hangisidir? % %11000 %10001 %10101 %00011

2011 Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

Gidilen sayfadan bir önceki sayfaya geçilir. Şekil Git İşlemi diyalog kutusu

Elektra Raporlama Sistemi Sunumu

SM 100 Terazi Ayarları. Digi SM 100. SM 100 Terazi Ayarları

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

Kapı Tipi Metal Arama Dedektörleri

MPLAB PROGRAM GELİŞTİRME ORTAMINDA CC8E İLE KOD HAZIRLAMA HAZIRLAYAN: DOÇ. DR. HAMİT ERDEM ARAŞ. GÖR. GENCER TULAY

Datasoft Yazılım Genel Muhasebe Programı Defter Dökümleri Kılavuzu

Bellekler. Mikroişlemciler ve Mikrobilgisayarlar

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

E-VT ELEKTRONİK VERİ TRANSFERİ UYGULAMASI KULLANIM KILAVUZU (TUIK A101)

PULSE ÇIKIŞI İLE SERVO MOTOR KONTROLÜ. Giriş PLS2 Komutunun Açıklanması CP1H ve Smart Step 2 Kablo Bağlantıları Sonuç

BM-311 Bilgisayar Mimarisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BSOFTefat E-FATURA ÇÖZÜMÜ

MİCROSOFT WORD PROGRAMI ÇALIŞMA KAĞIDI

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Mikro Yazılımevi Yazılım Hizmetleri Bilgisayar Sanayi ve Ticaret A.Ş. e-vt (Elektronik Veri Transferi) ile Entegrasyon Kılavuzu

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

KonakSis Müşteri Takip ve Kimlik Bildirim Sistemi

Q-P 110A Kullanım Kılavuzu

Fatura Dinamik Kodlama İyileştirmeleri

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Enlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır.

2016 YILI MERKEZ KÜTÜPHANE AMAÇ VE HEDEFLERİMİZ

BM-311 Bilgisayar Mimarisi

08224 Sunucu İşletim Sistemleri

Temel Mikroişlemci Tabanlı Bir Sisteme Hata Enjekte Etme Yöntemi Geliştirilmesi. Buse Ustaoğlu Berna Örs Yalçın

Hem lw hem de sw komutlarının ofseti 16-bitlik işaretli tamsayıdır.

FP52 PROXIMITY KART OKUYUCUSU KULLANIM KILAVUZU

SICAK VE SOĞUK ETĐKET VE BOY KESME MAKĐNASI KULLANIM KILAVUZU

Mikro Ayarları. Mikro Programının kurulu olduğu veritabanı ve web servisi için bağlantı ayarlarının yapıldığı menüdür.

Mikrobilgisayar Sistemleri ve Assembler

Excel Nedir? Microsoft Excell. Excel de Çalışma sayfası-tablo

Bilgisayar Mimarisi Nedir?

Fatih Üniversitesi. İstanbul. Haziran Bu eğitim dokümanlarının hazırlanmasında SIEMENS ve TEKO eğitim dokümanlarından faydalanılmıştır.

Oterm EE101 Kablosuz Oda Termostatı. Oterm EE101 Kullanım Kılavuzu

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ. PC-SPIMGirişi(MIPS R2000 Simulatörü)

Mikrobilgisayar Donanımı

Xpeech VoIP Gateway Konfigurasyon Ayarları

KATEGORİ MİZANI BAŞLARKEN KATEGORİ NEDİR? NEDEN N İHTİYAÇ DUYULUR?

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

ANALOG ADRESLİ YANGIN ALARM SİSTEMİ YAZILIM KULLANMA KILAVUZU

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ DENEY #6

Her türlü sorunuz için (0216) / 89 numaralı telefonumuzu arayabilir veya teknik@elektromaks.com.tr adresine e-posta atabilirsiniz. (V1.

MİKROBİLGİSAYAR LABORATUVARI DENEY RAPORU

SPARC v8 İŞLEMCİ SİMÜLASYONU

HSancak Nesne Tabanlı Programlama I Ders Notları

HİDROLİK SİSTEMLERİN TASARIMINDA PAKET PROGRAM VE HİDROLİK MODÜLLER KULLANILARAK KOLAY BENZETİM YAPILMASI

BİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ MEHMET ALİ SERT

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

PIC16F877A nın Genel Özellikleri

Bilgisayarın Yapıtaşları

Kargo Modülü. Diğer modüller ile entegre çalışan Kargo modülü ile satış irsaliyesifaturasıoluşturduktan

VAKIFBANK SANAL POS PANELİ KULLANICI KILAVUZU

KDV İADESİ MÜKELLEF MEMNUNİYETİ YÖNETİM SİSTEMİ

24. Yazdırma ve Plot Alma

Transkript:

KASIRGA PROJESİ 3. GELİŞME RAPORU 16.06.2008 Ankara

İÇINDEKILER 1. KASIRGA İşlemcisi... 3 2. Tasarım Aşamaları... 3 2.1. Sanal Tasarım... 3 2.1.1. Buyruk Tasarımı... 3 2.2. Mimari Tasarımı... 4 2.2.1. Kasırga 1... 4 2.2.2. Kasırga 2... 6 2.2.3. Kasırga 3... 7 2.2.4. Kasırga 4... 8 2.3. Fiziksel Tasarım... 8 2.3.1. Giriş... 8 2.3.2. Kasırga 1 in Fiziksel Tasarımı... 8 2.3.3. Kasırga 2 nin Fiziksel Tasarımı... 9 2.3.4. Kasırga 3 ün Fiziksel Tasarımı... 9 3. Kasırga Çeviricisi - Tulpar... 10 3.1. Çeviricinin yazılma amacı ve gerekliliği, ihtiyaçlarla beraber gelişme aşaması, yapabildikleri... 10 3.2. Çeviricinin kurulumu... 10 3.3. Tulpar ın kullanımı... 10 3.4. Öykünücü, öykünücü kullanımı... 11 3.5. Tulpar a Gelecekte Eklenecek Özellikler... 11 4. Örnek Kod - OBEB... 12

1. KASIRGA İŞLEMCİSİ Kasırga, tek bir işlemci değil bir işlemciler dizisinin genel adıdır. Hali hazırda Kasırga 1 ve Kasırga 2 işlemcileri tasarlanmış kart üzerinde çalışır durumdadırlar. Kasırga 3 işlemcisinin ise Sanal tasarımı ve benzetimleri tamamlanmıştır. Kasırga 4 işlemcisinin kavram tasarımı tamamlanmış ancak henüz uygulamasına geçilmemiştir. Kasırga işlemcileri Verilog dili ile ve Xilinx FPGA kartları üzerinde gerçeklenmektedirler. 2. TASARIM AŞAMALARI 2.1. SANAL TASARIM İşlemcilerin sanal tasarımında ilk adım herşeyin kağıt üzerine geçirilmesi ve görülebilen sorunların orada çözülmesidir. Bu konuda mimari dersi deneyimleri hem tasarım yapmada hem de sorunlarını bulmada faydalı olmuştur. Sanal tasarımın ardından EDA araçları yerine, verilog kodları yazılarak benzetimler ile sanal tasarıma devam edilmiştir. Yine bu aşamada saat vuruşu sırasında durumların teker teker incelenebilmesi ile kağıt üzerinde görülememiş hatalar düzeltilmektedir. Burada da istenilen sonuçlar görülebildiğinde işlemcinin fiziksel tasarımı gerçekleştirilmektedir. 2.1.1. BUYRUK TASARIMI Yarışma dahilinde temel olarak verilen 30 buyruğun gerçekleştirilmesi için tüm buyrukların farklı bit kombinasyonları ile tanımlanması gerekir. Bu durumda 2^5 = 32 olduğundan 5 bit işlem kodları için yeterli olmuştur. Yine kelime uzunluğu 16 bit olduğu için buna uyum açısından ve bellek kullanımının kolaylaştırılması için buyruklar da 16 bit olarak belirlenmiştir. Bu 16 bitin ilk 5 biti işlem kodudur. Daha sonra gelen bitlerle işlemlerin yapılacağı yazmaçların adresleri bildirilmektedir. 8 adet 16 bitlik yazmacı adreslemek için 2^3 = 8 olduğundan 3 bit yeterlidir. Yazmaçlarla işlem yapılan buyruk türlerinde 3 veya 2 yazmaç gösterilirken, anlık değerlerle işlem yapan buyruklarda işlem kodu haricinde kalan 11 bit anlık değer olarak kullanılmaktadır. Anlık değerlerle yapılan işlemlerde yazmaç adresi vermek için bi kullanılmamış, bunun yerine anlık değerlerle işlem yapılırken birikeç kullanılmıştır. Buyrukların bu şekilde ayrıştırılmasının başlıca nedeni yarışmada verilen temel buyruk kümesidir. Buyruk kümesindeki buyruk sayısı nedeniyle işlem kodu için kullanılacak bit sayısı zaten belirliydi. Buyruk kümesi tasarlanırken ise amaç mümkün olduğunca düzenli ve sade bir tasarım yapmaktı. Ancak bazı buyrukların gerçekleştirilme şekilleri nedeniyle ve sınırlı bit sayısı tasarımı zorlaştırdı. Yarışmada temel kurallardan bir diğeri ise birikeç kullanılmasıydı. Anlık değerlerle yapılan işlemlerde yazmaç belirtme şansı kalmadığı için birikeç bu tür buyruklarda çözüm olmuştur. Bunun yanında birikeç olarak kullanılan 0 numaralı yazmaç aynı zamanda genel amaçlı yazmaç olarak diğer işlemlerde de kullanılabilmektedir. Yazmaçlarla yapılan aritmetik işlemlerde ise birikeç kullanımı yerine sonucun yazılacağı yazmacın adresi de verilmiştir. Bu şekilde birikeçten devamlı veriyi başka yere taşıma zahmeti yarıya indirilmiş olur. 2 işlenen bir de sonuç olmak üzere 3 yazmaç (3*3 = 9 bit) kullanan buyrukların yanı sıra,

yalnızca 2 yazmaç kullanarak işlem yapan buyruklarda bulunmaktadır. Bunlar kaydırma, çapma, karşılaştırma ve değil buyruklarıdır. Kaydırma buyruklarında işlenen üzerinde işlem yapılarak tekrar kendi üzerine yazılmaktadır. Değil buyruğunda ise işlenenin tersi alınarak sonuç yazmacına yazılmaktadır. Karşılaştırma ise yalnızca büyüklük küçüklük durumuna göre bayrakları etkilemektedir. Çarpma ise yine 2 işlenen ile yaptığı çarpma işlemini Alt ve Üst olarak belirlenmiş yazmaçlara yazmaktadır. Çarpma işleminde 16 bitlik iki sayının çarpımı 32 biti geçemez. Bu nedenle sonuç 2 yazmaca bölünerek gösterilir. Hem çarpma sonucunu tutmak hem de genel amaçlı kullanılan alt ve üst yazmaçları bu görevi görür. Üst 16 bitin iptal edilmesi ile yazılacak noktanın belirlenmesi çarpma işlemi için farklı bir gerçekleştirme olacaktır ancak karmaşıklığı da beraberinde getirecektir. Ayrıca çok daha sık kullanılan Intel işlemcilerin assembly dili de benzer şekilde buyrukları gerçeklemektedirler. Yine buyruk tasarımında örnek alınan tasarım Intel assembly tasarımı olmuştur. Bu durum bayraklar tutulması ve dallanmalarda da kendini göstermektedir. Dallanmalar işlemlerini bayraklara bakarak yapmaktadırlar. Bayraklar ise karşılaştırma buyrukları ya da aritmetik buyruklarla değişmektedirler. Bu durumda genelde bir karşılaştırma buyruğu sonrasında dallanma buyrukları kullanılır. Bu durum dallanmanın 2 adımda yapılmasına neden olmuştur ancak atlanacak mesafenin yeterince büyük olması ve düzen açısından uygun olmuştur. Bunu yerine dallanma buyruğu yanında 3 adet yazmaç verilerek ikisinde karşılaştırılacak değerler ve birinde de atlanacak olan değer tutulabilirdi. Ancak bu durumda da gereksiz yere veri taşıma işlemleri artacak ve bayraklar dolayısıyla karşılaştırma buyruğu anlamsızlaşacaktır. Ya da bayraklara erişmek için ayrı buyruklar eklenmesi gerekecekti. 2.2. MİMARİ TASARIMI 2.2.1. KASIRGA 1 Kasırga 1 tek vuruşluk bir işlemcidir. Program sayacındaki değerle bellekten alınan buyruk bir saat vuruşu içinde işlenerek sonuç değerleri gereken yazmaçlara yazılmaktadır. Kasırga 1 fiziksel tasarımı sırasında sanal tasarımla FPGA üzerindeki gerçekleştirim aynı anda yürütülmüştür. Bu nedenle ancak Verilog ile kodlamaya geçildiği sırada fark edilebilecek sorunlar ve değişiklikler kısa sürede fark edilip çözümlenmektedir. Ancak bazı durumlarda da FPGA üzerindeki yetersiz hata ayıklama ortamı sebebiyle işlerin uzamasına hatta bazen de yanlış durumların doğru gibi algılanmasına neden olmuştur. Kullanılan bellek hem veri belleği hem de buyrukları tutan bellek olduğu için adres çıkışının önüne konulan bir çoklayıcı ile program sayacı ve adres değeri arasında seçim yapılır. Yazmaç öbeğine gelindiğinde sonucun yazılacağı yazmaç herhangi bir yazmaç olabileceği gibi birikeç de olabilir. Birikeç ve diğer yazmaç arasında seçim yapabilmek için sonuç yazmacının adresinin verildiği girişe bir çoklayıcı bağlanmıştır. Yazmaç öbeğinde bulunan yaz denetimi sonuç yazmacına gelen değerin yazılıp yazılmayacağını denetler. Eğer yaz denetimi etkinse sonuç yazmacı olarak seçilmiş olan birikeç ya da genel amaçlı yazmaca yazmaç öbeğinin Veri Girişinden giren değer yazılır. Yazmaç öbeğinin veri girişinde bulunan çoklayıcı ile AMB den gelen sonuç değeri, anlık değer ve MOV buyruğunun gerçekleştirilmesini sağlayan Rb değeri arasında seçim yapılır. Yazmaç öbeğinin çıkışı olarak Ra, Rb ve Rc yazmaçlarının değerleri alınır. Burada Ra bazı buyruklar için birikeci temsil ederken bazı buyruklar için sonuç yazmacını temsil etmektedir. Eğer işlem LW ya da SW gibi bir bellek işlemi ise Rb değeri bellekten okunacak ya da yazılacak veri için adresi gösterir. Ra LW için bellekten alınan değerin yükleneceği yazmacı, SW

içinse belleğe yüklenecek değerin bulunduğu yazmacı gösterir. Eğer buyruk bir aritmetik ya da kaydırma işlemi ise Ra, Rb ve Rc değerleri işlem birimlerinin olduğu kısma yönlendirilir. Aritmetik işlemlerin yapılacağı birimlere iki giriş verilecektir. Giriş değerleri buyruk türüne göre yazmaç öbeğinin çıkışına konulan çoklayıcılar yardımıyla seçilir.

2.2.2. KASIRGA 2 Kasırga 2 sanal işlemcisinde tasarım Verilog yazmada edinilen tecrübe ile birlikte daha çok gerçekleştirimden sanal tasarıma geçmeyi takip eder şekilde olmuştur. Verilog ile gerçekleştirilen kodların tasarımı daha sonra kağıt üzerine aktarılmıştır. Bu yöntemdeki sorun Verilog yazılırken bulunan ufak tefek çözümlerin tam anlamıyla bloklar halinde ifade edilememesi ve modülerliği azaltması olmuştur. Kasırga 2 de Kasırga 1 üzerine boru hattı uygulanmıştır. Boru hattı en temel işlemci hızlandırma tekniklerinden bir tanesidir ve aynen günlük hayatta pek çok noktada karşımıza çıkan boru hattı mantığı ile çalışmaktadır. Ancak boru hattının doğru ve verimli işlemesini sağlayacak olan düzenlemeler tasarımı karmaşık ve zor tasarlanır bir hale getirmektedir. Boru hattına denetimlerin doğru ayarlanması en karmaşık noktadır. Kasırga 2 de boru hattı temel sorunları olan veri yönlendirmesi scoreboarding ile, dallanma sorunları ise gelen buyrukları durdurma ile çözülmüştür. Belleğin 2 girişli ve 2 çıkışlı olması, bellek kullanımından ortaya çıkacak bir yapı sorununu ortadan kaldırmıştır.

2.2.3. KASIRGA 3 Kasırga 3 işlemcisi Kasırga 2 üzerinde yanlış olduğu görülen noktaların düzeltilmesi ile ortaya çıkmıştır. Yine boru hattı tekniği ile tasarlanan Kasırga 3 te sanal tasarım üzerinde uzun süre çalışılarak kağıt üzerinde sorunları halledilmiş olan tasarım ile birlikte fiziksel tasarıma geçiş yapılmıştır. Bu şekilde öncelikle tüm işlemci bloklar halinde tasarlanmış blokların görevleri tam olarak belirlenmiştir. Örneğin Kasırga 2 de yalnızca denetim birimi tarafından kontrol edilen denetim değerleri iki farklı blok tarafından değişik aşamalarda desteklenmektedir. Bu bloklar Dallanma ve yönlendirme bloklarıdır. Ayrıca boru hattı sorunlarından dallanma sorununa bu tasarıma daha verimli bir çözüm olarak dallanma ile ilgili olarak sabit bir tahmin yapma ve ardından tahmin yanlış ise boru hattından buyrukları çıkarma yoluna gidilmiştir. Bu durumda tahminin doğru olduğu durumlarda kazanç sağlanır. Kasırga 3 teki diğer kısımlar önceki tasarımlarla benzer olmasına rağmen getirilen modülerlik sayesinde hız ve düzen sağlanabilmiştir.

2.2.4. KASIRGA 4 Kasırga 4 işlemcisi henüz kavram tasarımı aşamasında olan bir işlemcidir. Şu ana kadar tasarlanmış olan üç Kasırga işlemcisinden farklı olarak yeni bir buyruk kümesi kullanacaktır. Bunun nedeni ilk tasarlanan Kasırga buyruk kümesiyle program yazmanın zorluğu ve veri genişliğinin yetersizliğidir. Yeni nesil Kasırga 4, önceli Kasırga işlemcilerinden farklı olarak yeni ve kolay program yazmak için eklenen yeni buyruklarla geliştirilmiş yeni bir buyruk kümesine, içinde 16 bitlik anlık değerleri barındırabilen 32 bitlik buyruklara ve daha fazla sayıda genel amaçlı yazmaca sahip olacaktır. Kasırga 4 işlemcisinde özellikle dallanma buyruklarının daha da hızlandırılması için mimari düzeyde yenilikler de yapılacaktır. 2.3. FİZİKSEL TASARIM 2.3.1. GİRİŞ Kasırga işlemcisini FPGA üzerinde gerçeklemek için Verilog HDL dili kullanılmıştır. Bu raporda verilen tüm zamanlama değerleri Spartan 3E Fg320 Starter Kit platformunda elde edilmiştir. Tasarım ve gerçekleme süresinde Xilinx ISE, Chipscope ve IP Core Generator kullanılmıştır. İşlemci hafızası FPGA üzerinde bulunan 20 adet blok hafızanın 15 nin kullanılması ile elde edilmiştir. Kelime uzunluğu 16 bit olduğu için teknik olarak hafıza 16 bitle adreslenebilir fakat Spartan 3E nin üzerinde yeterli blok hafıza bulunmaması nedeniyle, denemeler yapılırken 14 bitle adresleme mümkün olabilirmiş. Bunun yanında Chipscope yazılımı ile hata ayıklama sırasında, Chipscope un ILA blokları da çok yer kapladığından blok hafızaların adreslemesi yeri geldiğinde 10 bite kadar düşmüştür. Kasırga işlemcisi hafızada bulunan buyrukları 0. adresten başlayarak işlemektedir. Bu buyruklar, TULPAR çevirisine yazılan kodun makine diline çevrilmesiyle elde edilir. TULPAR çeviricisi bu makine kodlarını, IP Core Generator ın ürettiği hafızaya uygun format olan.coe formatında kaydedebilir. Bu durumda işlemciye yeni bir program yüklemek için, IP Core Generator ile yeni bir hafıza üretilmesi gerekmekte ve işlemcinin tekrar sentezlenip kartın içine yerleştirilmesi gerekmektedir. Bu işlem çok uzun sürdüğü için TULPAR çeviricisine RS232 desteği eklenmiştir. Bu sayede kartın üzerindeki bir anahtar kaldırılarak işlemci programlama moduna alınır ve TULPAR dan çevirilen kodlar Kasırga işlemcisinin hafızasına yazılır. Son olarak kartın üzerindeki anahtar çalışma moduna alınarak işlemci çalıştırılır. İşlemcinin sahip olduğu OUT buyruğu hem kartın üzerinde 8 adet LED e hem de VGA modülü sayesinde herhangi bir ekrana bağlanabilmektedir. Bu sayede işlemcinin fonkisyonları çevresel bir aygıta verilen çıktı ile doğrulanabilmektedir. 2.3.2. KASIRGA 1 İN FİZİKSEL TASARIMI Kasırga 1 işlemcisi tek vuruşluk bir işlemcidir fakat bellek işlemleri tek başına bir saat vuruşu aldığı için, Kasırga işlemcisi içinde daha hızlı 2 saat vuruşu taşımaktadır. Kasırga 1 in sanal tasarımında her ne kadar birimler bloklar halinde gösterilse de, Verilog HDL dilinde tüm işlemci tek bir blok halinde yer almaktadır. Bu bloğa sadece hafıza bağlanmaktadır. Tüm kod tek bir always bloğunun içindedir. Kasırga 1 in işlem birimi kablolar ile bir durum makinesine bağlanmaktadır. Buyruk bellekten çıkar çıkmaz anlam bulan buyruk tanımlamaları vardır. Bu tanımlamalar Verilog dilinde

`define anahtar kelimesi ile yapılmaktadır. Bu buyruk tanımlamaları durum makinesinin içine girerek gerekli olan yazmaç atamalarını, işlem birimine verilecek olan değerleri, program sayacının ilerleyişini ve yazmaç öbeğine ne yazılıp yazılmayacağını ayarlar. 2.3.3. KASIRGA 2 NİN FİZİKSEL TASARIMI Kasırga 2 fiziksel tasarımı, Verilog HDL yazım tarzı açısından ilkine benzemektedir. Yine bir durum makinesi şeklinde tanımlanmıştır fakat mimari açından boru hattı barındırdığı için 4 farklı always bloğu içermektedir. İşlem birimi yine kablolarla tanımlanarak, RTL seviyesinde devre şeklinde elde edilmiştir. Hafızadan çekilen buyruklar Kasırga1 de olduğu gibi `define anahtar kelimesi ile kontrolü sağlamaktadır. Burada boru hattı problemlerini gidermek için kablolar ve yazmaçlar sayesinde yönlendirme ve veri bağımlılıkları bloklar arasındaki veri aktarımını düzenlemektedir. Kodu yazmadaki en temel problem program sayacının kontrolü ve opcode çözme aşamasıdır. Dallanma buyruklarında hesaplanan yeni program sayacı, hafıza bloğuna adres olarak iletildiğinde bir saat vuruşu sonrası elde edilen buyruk, boru hattını bir aşama için bekletmektedir. Aynı şekilde program sayacını doğru yerden dallandırmak ve tekrar başlatmak hassas bir kontrol gerektirmektedir. Bunun yanında çözme aşamasında veri bağımlılıklarını gidermek için yönlendirme kullanılmaktadır. Çözme aşaması tek bir always bloğunda halledilmesi gerektiği için geçici yazmaçlara tıkamasız (non-blocking <= ) atama yapılmaktadır. Tek bir geçici yazmaca dahi değer atamak için hem kod çözmenin hem de yönlendirme aynı anda yapılması gerektiği için tıkamasız atama sırasında çok uzun bir if-else operatörü serisi kullanılmaktadır. Bu tip bir atama daha çok buyruk içeren bir işlemci için uygun değildir. Bu sebepten dolayı Kasırga 2 nin bloklara bölünmesi ve program sayacı kontrolünün boş buyruklara yer vermeyecek şekilde yeniden tasarlanması söz konusu olmuştur ve Kasırga 3 doğmuştur. 2.3.4. KASIRGA 3 ÜN FİZİKSEL TASARIMI Kasırga 1 ve Kasırga 2 den çıkarılan dersler ile mimari tasarım ile Verilog HDL kodlarının bire bir örtüşmesi hedeflenmiştir. Bu sayede işlemci kodunun always bloklarından oluşmasından ziyade, her bloğun ayrı bir Verilog bloğuna sahip olması hedeflenmiştir. Eski Kasırga larda olduğu gibi bir durum makinesi yapısından daha çok bloklar arasındaki veri yolları çoklayıcılar (multiplexer) tarafından yönetilmektedir. Kasırga 2 dekine benzer bir boru hattına sahip olunduğu için dallanma denetimi ve veri bağımlılıkları, yönlendirme, denetim ve dallanma birimi adlı modüller ile kontrol edilmektedir. Yönlendirme biriminde: Boru hattı aşamaları arasında veri yönlendirmenin yönlendirilmesi yapılmaktadır. Denetim biriminde: Çoklayıcıların, yazmaç öbeğinin ve hafızanın denetim bitlerinin doğru ve zamanında gelmesi sağlanmaktadır. Dallanma birimi: Program sayacı kontrolü ve dallanma tahmini yapılmaktadır. Bu tip bir kod yazımı sayesinde, aşamalar arasına işlemci saat vuruşunun 2 katı frekansta çalışacak D tipi flip-flop lar eklenerek, işlemcinin aşamaları daha küçük aşamalara bölünebilir ve saat sıklığı artırılabilir.

3. KASIRGA ÇEVİRİCİSİ - TULPAR Tulpar, Kasıga Çeviricisi, Kasırga İşlemcisi nin en iyi şekilde çalışması için tasarlanan buyruk kümesi kapsamında, Türkçe veya İngilizce assembly dilinde yazılan programları makine koduna çevirir ve istenirse Kasırga İşlemcisi ne gönderir ve yürütür. Eğer Kasırga İşlemcisi nin gömülü olduğu bir kart mevcut değil ise, bu programları kendi bünyesi dahilindeki Kasırga Öykünücüsü bölümünde teker teker çalıştırır ve her buyruğun işlenmesi sonucunda yazmaçlarda ve bayraklarda saklanan değerleri kullanıcıya gösterir. 3.1. ÇEVİRİCİNİN YAZILMA AMACI VE GEREKLİLİĞİ, İHTİYAÇLARLA BERABER GELİŞME AŞAMASI, YAPABİLDİKLERİ Tulpar ın yazılma fikri Kasırga işlemcisi nin ortaya çıkması ile beraber geldi. Her alanda olduğu gibi bir ürünün testi, oluşturulmasından daha önemli olduğundan, Kasırga nın test aşamasını kolaylaştırmak için bir çeviriciye ihtiyaç olduğu tespit edildi. Bu çeviricinin yapması gereken, Kasırga İşlemcisi nin buyruk kümesi dahilinde yazılan assembly kodunu makine koduna çevirmekti. Dolayısıyla bu şekilde örnek programlar yazmak ve bunları Kasırga üzerinde test etmek çok daha kolay olacaktı. Bu ihtiyaç karşılandıktan sonra işlemcinin çalışacak hale gelmesi için gerçekleştirilen memory initialization aşamasının kolaylaştırılması amacıyla, istenirse makine kodu belirli bir formata göre.coe uzantılı bir dosya oluşturabilecekti. Daha sonra karşılaşılacak temel ihtiyaçlara kadar Tulpar bir yandan görsel anlamda geliştirilirken, bir yandan da bünyesindeki hata tespit sistemi ile yazılan kodun kontrolünü gerçekleştirip syntax hatalarını bildirdiği bir alana sahip oldu. Görsel anlamda ise, kullanıcının hem göz zevkine hitap etmek hem de kullanılabilirliği artırmak amacıyla text editörlerdeki özellikler (anlamlı sözcüklerin renklendirilmesi, satır sayısını gösteren gri fonlu sol bölüm ve comment özelliği gibi) eklendi. Sırada Tulpar ın gelişiminin neredeyse en önemli kısmı vardı; Kasırga ya doğrudan bağlantı. Tulpar, makine koduna çevirmiş olduğu 16 bitlik buyrukları RS 232 portu üzerinden seri bir şekilde Kasırga ya gönderiyor. Bu özellik muhtemelen Tulpar ın evrimi sırasındaki en önemli gelişim oldu. Bir diğer önemli eklenti ise Kasırga dilinde program yazmayı, dili hiç bilmeyen bir kişi için oldukça kolay bir hale getiren Öykünücü bölümü oldu. Kasırga İşlemcisi ne bağlanmadan işlemcinin yapacaklarını her aşamada yazmaçlardaki değerleri göstererek gerçekleştiren Öykünücü istenildiği takdirde her öykündür tuşuna basıldığında bir buyruk işleyebilir, veya arzu edilen bir hıza göre (10ms ve 1s arasında) otomatik olarak çalıştırılabilmektedir. Yardım bölümünde bulunan 4 adet örnek program ile de Tulpar ın çalışma stilini anlamak ve alışmak çok kolay bir hale gelmiştir. 3.2. ÇEVİRİCİNİN KURULUMU Çevirici nin kurulumu oldukça basittir. Sıkıştırılmış bir şekilde gelen Tulpar paketi açıldığında içinden iki adet.xml, iki adet.dll, bir adet de Tulpar.exe dosyası çıkmaktadır. 2.dll dosyasının \Windows\System32 adresine yerleştirilmesi gerekmektedir. Diğer üç dosyanın ise her zaman aynı klasörde olduğuna özen gösterilmelidir. Çeviri den sonra arzu edildiği takdirde oluşturulan.txt veya.coe uzantılı dosyalar Tulpar.exe nin bulunduğu adreste oluşturulmaktadır. 3.3. TULPAR IN KULLANIMI Tulpar ın kullanımı her yeni sürümde artarak şu anda sadece buyruk kümesi hakkında yüzeysel bir bilgiye sahip bir kişinin rahatlıkla kullanabileceği bir kolaylık seviyesine erişmiştir.

Tulpar bünyesinde iki adet bölüm bulunmaktadır; sol bölüm assembly dilinde kodun yazılması ve çevrilmesi, sağ bölüm ise bu kodlardaki her buyruğun Tulpar kapsamında çalıştırılması, daha özel ve doğru bir ifadeyle; öykündürülmesinin gerçekleşmesinden sorumludur. Sol bölümde üç adet metin kutusu bulunmaktadır. Bir tanesi assembly dilinde kodun yazılması, hemen sağındaki bu kodun makine koduna çevrilmiş halinin ortaya çıkması için kullanılırken, alttaki geniş metin kutusu ile bu çevirim işlemi sırasında ortaya çıkan hataların bildirilmesi görevini üstlenmiştir. Öykünücü bölümünde, sol tarafta yazılan kodların, Kasırga İşlemcisi üzerinde çalıştırılmış gibi, yazmaçlardaki değerler takip edilebilir. Ayrıca kodun gidişhatını takip etmek amacıyla önceki iki buyruğun çalıştırılması sonucunda yazmaçlarda ve bayraklarda saklanan değerler de görülmektedir. Ayrıca Ayarlar bölümünden, Öykünme şekli olarak manuel veya otomatik seçilebilmektedir. Manuel seçildiği takdirde Öykündür tuşuna her basıldığında bir buyruk çalıştırılır ve yazmaçlardaki ve bayraklardaki değerler gösterilir. Otomatik seçeneğinde ise Öykünücü 500ms varsayılan frekans aralığında çalıştırılır, isstenirse Öykünücü Hızı bölümünden bu hız 10ms ve 1000s arasında değiştirilebilir. Ayarlar bölümünden Dil e girildiğinde Kasırga İşlemcisi buyruk kümesi kapsamında yazılacak olan assembly kodunun dili Türkçe veya İngilizce olarak seçilebilmektedir. Yine Ayarlar bölümünde yer alan Bağlantı kısmında ise RS 232 ile ilgili bağlantı ayarları yapılabilmektedir. Aynı zamanda menüdeki Çeviri Yönü nden istenilen yön seçilerek assembly kodundan makine koduna veya makine kodundan assembly koduna çeviri yapılabilmektedir. 3.4. ÖYKÜNÜCÜ, ÖYKÜNÜCÜ KULLANIMI Öykünücünün kullanımı oldukça basit olup, kodlamaya yardımı da yeterince fazladır. Program yazmak veya bir programı test etmek isteyen kişi, assembly dilinde yazılmış olan kodu önce makine koduna çevirir, daha sonra aktifleşen öykünücü fonksiyonu sayesinde öykün butonuna basıldığında ilk buyruk çekilir, işlenir ve yazmaç ve bayraklarda saklanan değerler öykünücü bölümünde gösterilir. Ayarlar kısmından, Öykünme şekli nden otomatik seçildiği takdirde, hız ayarı istenildiği gibi değiştirilerek buyruklar seçilen milisaniye aralığında çalıştırılır ve bu sıklıkla da yazmaçlarda ve bayraklarda saklanan değerler takip edilir. Bunun hem Kasırga dilinde kodlama yazmak isteyen hem de önceden yazılmış herhangi bir kodun çalışmasını kontrol etmek ve geliştirmek isteyen kişilerin işini oldukça kolaylaştırmaktadır. 3.5. TULPAR A GELECEKTE EKLENECEK ÖZELLİKLER Henüz gerçekleştirilmiş olan Öykünücü özelliği kapsamında buyrukların işlenmesinin kontrolünde yardımcı olan (Yazmaçlarda ve Bayraklarda saklanan değerleri gösteren) bölümün Kasırga İşlemcisi ne doğrudan bağlandığı zaman da kullanılabilmesi, her buyruğun sadece Öykünücü de değil İşlemci nin kendisinde de işlenip sonuçların görülmesinin sağlanması. Program sonlandıktan sonra İşlemci nin başarımı (ortalama işlemci hızı, toplam süre, her yazmacın kullanım sıklığı, belleğe erişimde geçen sürenin yüzdesi ve dallanma tahminlerinde yapılan hata yüzdesi gibi) ile ilgili bazı bilgilerin karttan çekilmesi, bazılarının da elde edilen veriler kapsamında Tulpar ın kendisi tarafından oluşturulması ve bu tür istatistiklerin kullanıcıya bildirilmesi. Kullanılabilirliğin en üst düzeye çıkarılabilmesi amacıyla görsel açıdan bir takım yenilikler. Kasırga buyruk kümesinin olası değişimine göre, yeni buyruk kümesi üzerinde de çalışabilme seçeneği. Ayrıca Tulpar paketinin içinden çıkan xml ve dll uzantılı

dosyaların kullanıcı kontrolü dahilinde uygun yerlere yerleştirilmesi yerine, Tulpar ın kurulum sihirbazı ile ilgili kişinin bilgisayarına yüklenmesi. 4. ÖRNEK KOD - OBEB Aşağıda verilen iki sayı için Ortak Bölenlerin En Büyüğü nü hesaplayan bir Kasırga programı verilmiştir: movi 12 mov r3,r0 movi 18 mov r4,r0 cmp r3,r4 bgt 4 mov r5,r3 mov r3,r4 mov r4,r5 mov r1,r3 mov r2,r4 movi 0 mov r5,r0 movi 1 sub r1,r1,r2 add r5,r5,r0 cmp r1,r2 bgt -3 cmp r1,r2 sub r0,r1,r2 beq -5 cmp r1,r2 blt 1 mov r3,r4 mov r4,r1 mov r7,r3 movi 0 mov r6,r0 cmp r4,r6 bgt -20 mov r0 r7 out ba 32 ; 1.sayı r3'e yüklenir ; 2.sayı r4'e yüklenir ; 2.sayı büyükse bu işlem yapılır ; 2.sayı büyük değilse normal işlem yerine atlar ; bölümü tutmak için ; artırmak için ; bölümün bulunması için her işlemde 1 artırılır ; r3 büyükse ; eşitlerse ; r3 küçükse, x(1.sayı) in y(2.sayı) ye bölümünde kalanı r1 de bulduk ; y yi x e yükle ; kalanı y ye yükle ; x'i yükle obeb i(r7) bul ; y nin 0'a eşitliğini kontrol etmek amaçlı ; y 0 dan büyükse 19 önceki komuta git ; obeb sayısı yazdırılır