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

Benzer belgeler
KASIRGA 4. GELİŞME RAPORU

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

KASIRGA -4 Buyruk Tasarımı Belgesi Ankara

İ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.

KASIRGA PROJESİ 2. GELİŞME RAPORU

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

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

Bilgisayar Mimarisi Nedir?

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. İşlenenin Yeri. Örnek MİB Buyruk Yapısı. İvedi Adresleme. Adresleme Yöntemleri. Bellek. Kütükler.

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

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ı

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

İşletim Sistemlerine Giriş

Mikroçita. Mikroçita Rapor 2:

Bilgisayar Donanım 2010 BİLGİSAYAR

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

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme

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

XC8 ile PİC uygulamaları

FPGA İLE UYGULAMA ÖRNEKLERİ FPGA ile Seri Haberleşme (RS232) Uygulaması

BM-311 Bilgisayar Mimarisi

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB Altbirimleri. Durum Kütüğü. Yardımcı Kütükler

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

Hacettepe Robot Topluluğu

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

PROGRAMLAMAYA GİRİŞ DERS 2

Çalışma Açısından Bilgisayarlar

BÖLÜM FORMÜLLER ve OTOMATİK TOPLAM Formüller

Embedded(Gömülü)Sistem Nedir?

Bilgisayar Donanımı Dersi BİLGİSAYARIN MİMARI YAPISI VE ÇALIŞMA MANTIĞI

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bilgisayarda Programlama. Temel Kavramlar

CPU TURKEY CPU-KULIS MİKROİŞLEMCİSİ ÇALIŞMA RAPORU

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

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

ZS-SU-4500 SDI-12 USB ÇEVİRİCİ KULLANIM KILAVUZU

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

Optik Sürücüler CD/CD-ROM DVD HD-DVD/BLU-RAY DİSK Disket Monitör LCD LED Projeksiyon Klavye Mouse Mikrofon Tarayıcı

BİL-142 Bilgisayar Programlama II

FPGA ile Gömülü Sistem Tasarımı (EE 525) Ders Detayları

BM-311 Bilgisayar Mimarisi

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

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Merkezi İşlem Birimi Kavramı (CPU)

C Dersi Bölüm 1. Bilgisayar Donanımı

Bilgisayar en yavaş parçası kadar hızlıdır!

ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME

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

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

Algoritma ve Akış Diyagramları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Bilgisayar Organizasyonu BIL

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

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

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

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü

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

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Hacettepe Üniversitesi Bilgisayar Müh. Bölümü

BMT 101 Algoritma ve Programlama I Güz Dönemi. Yük. Müh. Köksal Gündoğdu 1

Mikrobilgisayar Sistemleri ve Assembler

Programlama Dilleri 1. Ders 4: Diziler

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

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

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

Algoritma ve Akış Şemaları

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

MİKROİŞLEMCİ İLE A/D DÖNÜŞÜMÜ

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

Bu derste! BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Yazmaç Aktarımı Düzeyi! Büyük Sayısal Sistemler! 12/25/12

YILDIZ TEKNIK ÜNİVERSİTESİ ELEKTRİK - ELEKTRONİK FAKULTESİ ELEKLTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ

HSancak Nesne Tabanlı Programlama I Ders Notları

Bilgisayar Mimarisi ve Organizasyonu Giriş

Bilgisayarların Gelişimi

Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula

Ders Notlarının Creative Commons lisansı Feza BUZLUCA ya aittir. Lisans:

SPARC v8 İŞLEMCİ SİMÜLASYONU

CPU çok güçlü bir hesap makinesi gibi çalışır. CPU lar çok zeki olmayabilirler ancak çok hızlıdırlar. Sadece 0 ve 1 değerleri üzerinden işlem

BÖLÜM Mikrodenetleyicisine Giriş

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

Algoritma ve Programlamaya Giriş

Mikrobilgisayarlar. Mikroişlemciler ve. Mikrobilgisayarlar

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

İçindekiler FPGA GELİŞTİRME KARTI ENERJİ BESLEMESİ:... 5 ENERJİ SİSTEMİ ŞEMASI:... 5 FPGA GELİŞTİRME KARTINA PROGRAM YÜKLEME:... 6

BİLGİSAYAR MİMARİSİ. Komut Seti Mimarisi. Özer Çelik Matematik-Bilgisayar Bölümü

BİLGİSAYAR MİMARİSİ. İkili Kodlama ve Mantık Devreleri. Özer Çelik Matematik-Bilgisayar Bölümü

ESM-361 Mikroişlemciler. 1. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

C++ Dilinde Bazı Temel Algoritmalar

Görüntü Bağdaştırıcıları

Data Communications. Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü. 10. Hata Kontrolü

K uark projesi. Temel Özellikler :

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

Yazılım Mühendisliğine Giriş 2018 GÜZ

BİT in Temel Bileşenleri (Yazılım-1)

Düşünelim? Günlük hayatta bilgisayar hangi alanlarda kullanılmaktadır? Bilgisayarın farklı tip ve özellikte olmasının sebepleri neler olabilir?

İÇİNDEKİLER. 1-1 Lojik ve Anahtara Giriş Lojik Kapı Devreleri... 9

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

Transkript:

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

İçindekiler 1. Kasırga İşlemcisi... 3 1.1. Mimari Tasarımı... 3 1.1.1. Boru Hattı... 3 1.1.2. Yönlendirme... 3 1.1.3. Dallanma Tahmini... 4 1.1.4. Sistem Çağrıları... 5 1.1.5. Buyruk Kümesinde Yapılan Değişiklikler... 7 1.1.6. Bellek Yönetimi... 7 1.2. Fiziksel Tasarım... 7 1.2.1 Zamanlama... 7 1.3.2. Donanım Tanımlama Dili nin Kullanımı... 9 1.3.3 Saat Dağıtımı... 9 1.3. İşlemci Modülleri... 9 1.3.1. Program Sayacı Birimi... 9 1.3.2. Bellek Birimi... 10 1.3.3. Yönlendirme Birimi... 10 1.3.4. Denetim Birimi... 10 1.3.5. İşlem Birimi... 10 1.3.6. Kaydırma Birimi... 10 1.3.7. Çarpma Birimi... 11 1.3.8. Dallanma Birimi... 11 1.3.9. Diğer Birimler... 11 2. Kasırga İşlemcisi Çevre Birimleri... 11 2.1. RS232 Modülü... 12 2.1.1. Alıcı Modül... 12 2.1.2. Verici Modül... 12 2.2. VGA Denetliyicisi... 12 2.3. PS/2 Denetliyicisi... 13 3. Sonuç ve Planlar... 13

1. Kasırga İşlemcisi Kasırga projesinin sanal ve fiziksel tasarım dallarında yapılan çalışmalar sonucunda Kasırga 1, Kasırga 2 ve Kasırga 3 işlemcileri tasarlanmıştır. Kasırga 1 tek vuruşluk işlemcisinde davranışsal model kullanılmış ve verilog yazımında başlangıç adımları atılmıştır. Kasırga 2 de ise yine aynı davranışsal model boruhattı tekniği ile gerçeklenmiştir. Kasırga 3 te ise Kasırga 2 boruhattı modüler şekilde tasarlanmış ve buyruk kümesine yapılan eklemelerle temel buyruk kümesi tam olarak gerçeklenmiş ve kullanım kolaylığı açısından gereken buyruklarla tam işlemci tasarımı bitirilmiştir. Kasırga 3, 38 adet buyruğuyla şu anda çevirici dildeki kodlama becerisine göre matematiksel ve görsel pek çok işlemi gerçekleştirebilecek bir işlemcidir. Bu yönüyle pek çok uygulamada kullanılması mümkündür. Kasırga nın en önemli yönü ise deneyim açısından hem ülkemiz hem de grubumuz adına gelecekteki projelere taban oluşturmuş olmasıdır. Bu proje ile birlikte yaklaşık 10 kişilik bir grup donanım tanımlamada deneyim kazanmış. Ayrıca Tulpar derleyicisinin geliştirilmesiyle yazılım alanında da derleyici yazılması konusuna deneyim kazanılmıştır. 1.1. Mimari Tasarımı Şekil 1. Kasırga Boruhatlı Mimari Tasarımı 1.1.1. Boru Hattı Kasırga işlemcisinde 4 aşamalı bir boru hattı kullanılmaktadır. Bu aşamalar Getir, Çöz, Yürüt, Yaz aşamalarıdır. Geleneksel yapının aksine, Kasırga da Bellek aşaması bulunmamaktadır fakat belleğe yazacak buyruklar geldiğinde, işlemci bu aşamaya girmektedir. Bu durumda bellek işlemlerini gerçekleştirmek için işlemcinin ilgili yerlerine hafıza elemanlarının denetimlerinin korunması, bellek ile ilgili olan bileşenlerin ise çalışması yönünde denetimler gönderilir. Buyrukların normal işleyişinde fazladan bellek aşaması bulunmadığı için boruhattı dolana kadar bir saat darbesi tasarruf edilmiştir. 1.1.2. Yönlendirme Kasırga işlemcisi durum makinası şeklindeki yapısından çıkıp, modüller halinde tasarıma geçince, yönlendirme birimi büyük oranda değişmiştir. Daha önceleri verinin kendisinin gideceği yeri belirleyen bu birim, yeni tasarımla beraber sadece çoklayıcılara denetim bitleri gönderen bir birim haline gelmiştir. Yönledirme işlemi hem çözme aşamasında hem de yürütme aşamasındaki bazı çoklayıcıları kontrol etmektedir. Şekil 2 de görüldüğü üzere, çözme aşamasındaki çoklayıcılar yazma

aşamasından gelen değeri (yazma aşamasına gelen ALT ve ÜST yazmaçları) seçebileceği gibi yazmaç öbeğinden çıkan değeri (buyruk çözüldükten sonra elde edilen ve A,B,C geçici yazmaçlarına atanan değerleri) de seçebilir. Buna rağmen yürütme aşamasında ise, yönlendirme olmadığı durumdaki değerler (A,B,C geçici yazmaçları), yürütme aşamasında olup yazmaya gidecek olan yazmaçlar (ALT ve ÜST yazmaçları) buyruğun türüne göre seçebilir. Görüldüğü üzere A,B,C ve ALT ve ÜST yazmaçlarına 2 kere seçim uygulanmaktadır. Yönlendirmenin ilk aşamasında (Çöz aşamasında) o anda işlenen buyruğun kendinden 2 önceki buyrukla olan bağımlılığı, yönlendirmenin ikinci aşamasında ise, o anda işlenen buyruğun bir önceki buyrukla olan bağımlılığı giderilmektedir. Bu durumda aynı buyruk hem bir önceki, hem de iki önceki buyruğa bağımlı ise sadece bir önceki buyruk ile olan bağımlılığının giderilmesi yeterlidir. Çözme aşamasındaki yönlendirmeyi kontrol eden çoklayıcılar Yürütme aşamasındaki yönlendirmeyi kontrol eden çoklayıcılar Şekil 2. Yönlendirmenin olduğu aşamalar 1.1.3. Dallanma Tahmini Boruhattının temel sorunlarından olan dallanma, birbirine bağımlı buyruklarda ortaya çıkmaktadır. Şekil 3 teki buyruklarda görüldüğü gibi dallanma buyruğu geldiği anda eğer koşullu bir dallanma buyruğu ise koşulun doğruluğu belli olmadan dallanma yapılıp yapılmayacağı kesin değildir.

Şekil 3. Boru hattındaki dallanma sorunu Bu sorun ilk olarak Kasırga 2 de ortaya çıkmıştır. Bir yandan buyruk yürütülürken sonraki buyruğun doğru noktadan alınması gerekir. Kasırga 2 de bu sorun buyruğun çekileceği nokta belirlenene kadar beklemektir. Bu bekleme sırasında veriyoluna anlamsız buyruklar (balonlar) sokulur. Kasırga 3 te ise bu bekleme yerine temel bir kabul alınır. Dallanma buyruklarının atlamayacağı kabul edilir ve hemen bir sonraki buyruk çekilir. Dallanma buyruğu koşulu yanlışsa bu seçim doğru olur ancak buyruk koşulu doğru ise atlanan nokta hatalıdır. Koşulsuz dallanma buyruklarında ise yapılan tahminin direkt yanlış olduğu kabul edilir. Buyruk koşulunun doğruluğunu kontrol eden birim ise dallanma birimidir. Bu birimden bayrakların durumuna göre koşulun doğru ya da yanlış olduğunu bildiren bit veriyoluna gönderilir. Bitin durumuna göre atlanan nokta doğru ise devam edilir. Yanlışsa, yanlış yerden çekilen buyruğun denetim değerleri değiştirilerek buyruğun hiçbir yere yazmaması ve anlamsız olarak işaretlenerek veriyolundan çıkması sağlanır. Dallanma ile ilgili birim geliştirilmeye açıktır. Örneğin şu anda kullanılan gibi sabit değil de dinamik ya da çift kutuplu bir dallanma öngörüsü kullanılırsa hem bekleme veya araya giren yanlış buyrukların sebep olduğu zaman kaybı azaltılabilir. 1.1.4. Sistem Çağrıları Kasırga 1 ve 2 de Syscall buyruğu buyruğu gerçeklenmemiştir. Kasırga 3 te ise Syscall buyruğu bellek içinde belirli noktalarda bulunan özel amaçlı çevirici dil kodlarının başlangıç adresini program sayacına atar ve bu şekilde işlemci özelleşmiş kodu yürütmeye başlar. Bu kısımdan geri dönmek içinse geri dönüş için kullanılan bir diğer syscall kullanılır. Sistem çağrılarının doğru çalışması için belleğin içinde çevirici dil kodlarının doğru noktalara yerleştirilmiş olması gerekir. Kasırga da 4 adet sistem çağrısı bulunmaktadır. 1. Ekrana Kasırga Logosu Basan Çağrı: (Syscall 2) Kasırga VGA modülü standart olarak out buyruğu ile gönderilen 7 bitlik değerlerin ascii karşılıklarını ekrana basmaktadır. Bundan yararlanılarak bellekte ascii karakterlerle

yazılarak yerleştirilmiş olan Kasırga logosu resmi yükleme buyruklarıyla bellekten alınarak out buyruğu ile sırayla ekrana basılır. Geri dönüş için syscall 512 buyruğu kullanılır. 2. Ekrandan Veri Okuyan Çağrı: (Syscall 4) Klavye ile girilen değerler in buyruğu ile alınarak enter değeri gelene kadar giren tüm karakterlerin ascii değerleri yığıta atılır. Enter karakteri geldiğinde programın yürütümüne kalınan yerden devam edilir. Geri dönüş için syscall 512 buyruğu kullanılır. 3. Bölme İşlemi Yapan Çağrı: (Syscall 8) 1 numaralı yazmaçtaki değeri 2 numaralı yazmaçtaki değere bölerek sonucu 3 numaralı yazmaca kalanı da 7 numaralı yazmaca yazan çağrıdır. Buyruk kümesinde bölme işlemi olmadığı için bölem işlemi çıkarma işlemi yardımıyla yapılır. Bir çıkarma döngüsüne konularak sonuç değeri hesaplanır, geriye syscall 512 ile dönülür. 4. Ekranı Konsol Olarak Kullanan Çağrı: (Syscall 16) Klavyeden girilen değerleri dinleyek ekrana klavyeden gelen karakterlerin asciilerini basan programdır. Şekil 4. SYSCALL buyruğunda işlenen programlardan birinin TULPAR ekran görüntüsü

5. Sistem Çağrısından Dönüş (Syscall 512) Bellekte tüm sistem çağrı kodları sonuna yazılarak çağrıdan geri dönüleceğini bildirir. 1.1.5. Buyruk Kümesinde Yapılan Değişiklikler Kasırga buyruk kümesi temelinde yarışmada verilen 30 adet buyruğu gerçekleştirmeyi hedefler ve yine yarışmada verilen kelime uzunluğuna uyum açısından 16 bitlik buyruklar kullanılmıştır. Bu 16 bitlik buyruklarda 4 tip buyruk tanımlanmıştır. Anlık değerlerle işlem yapan buyruklar (A tipi), yazmaçlarla işlem yapan buyruklar (Y tipi), sistemin yürütümünü etkileyen buyruklar (S tipi) ve diğer buyruklar (D tipi) buyuk tipleridir. Diğer raporlarda bahsedilen Kasırga 1 ve 2 de gerçeklenen buyrukların yanısıra D tipi buyruklarda kullanılmayan bazı bitlerin de kullanılmasıyla PUSH, POP ve MOVS buyrukları da eklenmiştir. PUSH, SW ile POP, LW ile ve MOVS MOV buyruğu ile ilişkilendirilmiş ve gerçekleştirimleri yine bu buyruklara benzer şekilde yapılmıştır. Yığıt işlemleri için bir yığıt göstergesi ve kullanımını düzenleyen bir modül de Kasırga ya eklenmiştir. Yığıt belleğin alt yarısını kapsamaktadır ve yönetimi programcıya bırakılmıştır. Ayrıca MOVS ile yığıtın başlangıç adresi istenen bir noktaya alınarak yığıtın kullanımına o noktadan devam edilebilir. İşlem Kodu Son EK Buyruklar (İngilizce) Buyruklar (Türkçe) Buyruk Türü İşlem 10101 11 POP ÇEK D Ra Bellek[Yığıt Göstergesi] 10110 11 PUSH İT D Bellek[Yığıt Göstergesi] Ra 10011 11 MOVS YGT D Yığıt Göstergesi Ra Tablo 1. Buyruk kümesine yeni eklenen buyruklar 1.1.6. Bellek Yönetimi Bellek, SPARTAN 3E kartı üzerinde Chipscope yazılımı ile birlikte kullanıldığından 4096 satır olup, her satırda 16 bitlik veri tutulmaktadır. 2048 adresinden sonra ise yığıt olarak kullanılmaktadır. Yığıt için bir sınır değeri bulunmamaktadır. Yığıtın 4096 adresinden sonra tekrar 0 numaralı adrese dönmesi ya da hiç push yapılmadan pop yapılması durumunda çekilecek verinin anlamsız olması tamamen programcının kontrolündedir. Programlar ise 0 adresinden başlanarak yürütülür. NOT: Kasırga işlemcisi daha büyük ölçekli bir FPGA kartında 16 bit uzunluğunda 65536 satırlık bir belleği desteklemektedir. 1.2. Fiziksel Tasarım Fiziksel tasarım, işlemcinin simülasyonda çalışan kodlarının FPGA üzerinde gömülü olarak çalıştırılması işlemidir. Simülasyonda tüm işlemleri senkron hale getiren saat vuruşu, gerçekleme sırasında çok önemli bir hale gelmektedir. Bunun yanında zamanlamayı iyi bir değere çekmek için işlemci Verilog ile kodlanırken davranışsal ve devre şeklinde yazım tarzları harmanlanmıştır. Tüm bunların sonunda farklı saat frekanslarında çalışan çevre birimlerinin, işlemci ile an uyumlu çalışması anlatılacaktır. 1.2.1 Zamanlama Başarımın artması için, bir saat vuruşunda aynı anda bir çok iş yapılması gerekmektedir. Bir saat vuruşunda daha çok iş yapmak içinse daha çok donanıma ihityaç vardır. Bundan dolayı donanım tanımlama dilleri, işlerin parallel bir şekilde yapılmasına olanak vermektedir. Çok vuruşlu

işlemcilerde bir saat vuruşunda her aşamanın kendi işini bitirmesi gerekmektedir. İşlemcinin saat sıklığı en uzun süren aşamaya göre hesaplanacağından, iyi bir saat sıklığına ulaşmak için her aşamadaki blokların tek tek incelenip, işlemleri olabildiğince hızlı yapması sağlanmaladır. Kasırga işlemcisinde 4 aşama bulunmaktadır ve en uzun süren aşama yürütme aşamasıdır. Timing constraint: Default period analysis for Clock 'clk' Clock period: 10.630ns (frequency: 94.072MHz) Total number of paths / destination ports: 58731 / 1244 Delay: 10.630ns (Levels of Logic = 5) Source: Destination: Source Clock: kasirga3/alt4_0 (FF) kasirga3/alt4_15 (FF) clk rising Data Path: kasirga3/alt4_0 to kasirga3/alt4_15 Gate Net Cell:in >out fanout Delay Delay Logical Name (Net Name) FDRE:C >Q LUT3_D:I1 >O LUT3:I2 >O 16 0.514 0.948 kasirga3/alt4_0 (kasirga3/alt4_0) 2 0.612 0.410 kasirga3/mux_4/o[0]_sw1 (N305) 17 0.612 0.893 kasirga3/mux_4/o[0]_2 (kasirga3/mux_4/o[0]_1) MULT18X18SIO:B0 >P15 1 4.297 0.426 kasirga3/carpici/mmult_c (kasirga3/carpici/c[15]) LUT3:I1 >O LUT4:I1 >O 1 0.612 0.426 kasirga3/carpici/lo[15]1 (kasirga3/carpici_sonuc_alt[15]) 1 0.612 0.000 kasirga3/denetim2_w[18]636 (kasirga3/buyruk_sonucu[15]) FDRE:D 0.268 kasirga3/alt4_15 Total 10.630ns (7.527ns logic, 3.103ns route) (70.8% logic, 29.2% route) Tablo 2. Kasırga İşlemcisindeki en uzun yolun süresi Yukarıdaki tabloda, yürütme aşamasının işlenme süresinin hangi bileşenler oluştuğu gözükmektedir. Görüldüğü üzere mantıksal devre elemanlarından bir gecikmenin yanı sıra, toplam sürenin yaklaşık %30 u sadece route dan oluşmaktadır. Bu da bir devre bileşeninin kendi gecikmesinin dışında, bu elemanın tasarımdaki yerine göre daha yavaş bir blok olabileceğini gösterir.

Örneğin, kullanılan bileşenin çıkışı, fiziksel olarak daha uzaktaki bir elemana bağlanırsa route gecikmesi uzamaktadır. Bunun yanında bu eleman, bir çok başka elemana bağlanırsa yine route gecikmesi uzamaktadır. Kasırga işlemcisininde, yukarıda bahsedilen sebeplerden dolayı, denetim birimi, ilklendirme gibi blokların route gecikmesi diğer bloklardan daha fazladır. 1.3.2. Donanım Tanımlama Dili nin Kullanımı Verilog donanım tanımlama dilinde, devre elemanları doğrudan tanımlanabileceği gibi, bir bloğun sadece davranışı da tanımlanabilir. Bu durumda sentezleyici program bu bloğu optimize ederek devre elemanlarına dönüştürür fakat bu işlem her zaman en verimli şekilde olmayabilir. Bu sebepten dolayı işlemci tasarlanırken mümkün olduğunda devre şeklinde yazım tarzı öncelik olarak alınmıştır. Her şeye rağmen bazı karmaşık blokları davranışsal yazmak, devre şeklinde yazmaktan hem daha kolay hem de daha anlaşılır olmaktadır. Örneğin, denetim birimi, yönlendirme birimi, dallanma gibi diğer devre elemanlarına kontrol bitleri gönderen bu birimler birer durum makinası şeklinde tasarlanmıştır. 1.3.3 Saat Dağıtımı Kasırga işlemcisi bir system on chip tasarımı olduğu için tek bir saat kaynağı ile beslenmektedir. Bu saat SPARTAN 3E Starter Kit üzerindeki 50 Mhz lik osilatör kristal ile sağlanmaktadır. Kasırga işlemcisi dışındaki çevre birimlerinin haberleşme hesapları 50 Mhz lik kristale göre yapılmıştır. Örneğin ; Vga birimindeki 72 Hz lik ekran tazeleme sıklığı, Rs232 birimindeki 9600 baud hesabı. Bu sebepten dolayı Kasırga işlemcisi 50 Mhz den daha yüksek saat sıklıklarında çalıştırılmak istendiğinde bu birimlerin saat sıklığı aynı kalmalıdır. Bunun yanında PS/2 portunu kontrol eden bloğun saat sıklığı, klavyenin kendi saatinden sağlanmaktadır fakat bu saati tasarıma entegre etmek için öncelikle sistemin kendi saat sıklığı ile örneklemek gerekmektedir. 1.3. İşlemci Modülleri 1.3.1. Program Sayacı Birimi Program sayacı birimi giriş olarak mevcut program sayacı değerini ve anlık değeri alır. Çıkış olarak yeni program sayacını verir. Yeni program sayacı değeri işlenen buyruğun türüne göre PS + 1 PS 1 PS Anlık Değer Olabilir. Normal buyruklarda değer 1 artırılırken, yükleme buyruklarında senkronizasyon sağlanması için program sayacı değeri sabit bırakılır, durdurma buyruğunda PS 1 ile tekrar durdurma buyruğunun çekilmesi ve işlemcinin durdurlması sağlanır. Koşulsuz dallanma (bl, ba) buyruklarında ise anlık değer program sayacı olarak verilir. Program sayacı işlemcinin yürütüme başladığı noktadır.

1.3.2. Bellek Birimi Belleğin veri genişliği 16 bittir ve 12 bitle adreslenmektedir. İki kapılı belleğin A kapısından buyruk alış verişi, B kapısından ise veri alış verişi yapılmaktadır. Bu şekilde buyruk ve veri alış verişi sırasında çakışma olması önlenmiş olur. Bellek birimi 16 bit ile adreslendiğinde kullanılan block memory karta sığmadığı için adresleme boyutu 12 bit ile sınırlanmıştır. Kasırga belleği 16 bit ile adresleyecek durumdadır. Bellek oluşturulması için Xilinx Core Generator kullanılmaktadır. 1.3.3. Yönlendirme Birimi Boru hattının dolayısıyla işlemcinin temel sorunlarından olan verilerin bağımlılığı sorunları yönlendirme ile çözülmektedir. Değerler yazılmadan onlara ihtiyaç duyan buyruklara gerekli değerler çoklayıcılardan seçilerek gönderilir. 2. ve 3. aşamalarda bulunan bu çoklayıcılar yönlendirme birimi tarafından kontrol edilir. Birime giriş olarak işlenmekte olan buyruk kendinden önceki buyrukların yazmaçlara yazıp yazmadığına bakarak değerin yazmaç öbeği girişlerinden mi ya da AMB vb. işlem birimlerinin çıkışlarından mı alınacağına karar verir. Bu sırada önceki buyrukların çarpma olup olmaması da üst yazmacına değer yazılmış olacağından farklılık göstermektedir. Denetim biriminden, önceki iki buyruğun çarpma olup olmadığına dair sinyaller yönlendirme birimine girmektedir. 1.3.4. Denetim Birimi Denetim birimi tüm işlemciye hangi anda nasıl çalışacağını bildiren sinyallerin gönderildiği yerdir. Denetim birimi bu yönüyle işlemcinin çalışmasını sağlamaktadır. Denetim birimine bellekten çekilen buyruğun ilk 7 biti giriş olarak verilir. Bir de dallanma biriminden gelen dallanma tahmininin doğruluğunu bildiren bit giriş olarak verilir. Çıkış olarak ise o buyruğun her bir aşaması için gereken denetim değerleri dizisi verilir. Denetim dizisinin ilk biti o aşamanın değerlerinin anlamlı olup olmadığını da bildirir. Yanlış tahmin durumlarında boru hattı boşaltılırken anlamsız aşamlarda değerler değiştirilmez. Bunu sağlamak için denetim dizisi ilk bitine bakılır. 1.3.5. İşlem Birimi İşlem birimi toplama, çıkarma, ve, veya, özel veya işlemlerinin bunların yanısıra karşılaştırma işlemini gerçekleştirmektedir. İşlem biriminden çıkan değerler sıfır, büyüktür ve küçüktür bayraklarını etkilemektedirler. 1.3.6. Kaydırma Birimi A girişinden verilen değeri B girişinden verilen değeri son 4 biti ile kaydıran birimdir. Kaydırma işlemi sağ/sol yönlerinde ve aritmetik veya mantıksal kaydırma olabilir. Tüm bunları bildiren denetim değerleri kaydırma birimine girmektedir. Kaydırma birimi çıkışı 16 bitlik sonuçtur.

1.3.7. Çarpma Birimi A ve B girişinden giren 16 bitlik sayıları işaretli ya da işaretsiz çarparak alt ve üst olarak 16 bitlik iki çıkıştan veren birimdir. 1.3.8. Dallanma Birimi Kasırga 3 te yapılan bir iyileştirme de dallanma tahminidir. Sabit tahmin yapılarak programın hiçbir zaman dallanmayacağı öngörülmüştür. Buna göre program sayacı değiştirildikten sonra 3. aşamada bulunan dallanma biriminde tahminin doğruluğunun kontrolüyle birlikte programa aynen devam edilir ya da yanlış çekilmiş olan buyruk anlamsız kabul edilip boru hattından çıkarılır. Dallanma birimine giriş olarak dallanma buyruğunun program sayacı ve bayraklar alınır. Çıkış ise yeni program sayacı değeri ve tahminin doğruluğunu bildiren sinyaldir. Ayrıca tahmin doğruluğu sinyali ile belleğin girişindeki çoklayıcı kontrol edilerek doğru program sayacı değeri verilmesi sağlanır. 1.3.9. Diğer Birimler Kasırga da bu ana birimler haricinde 2 tane 11 bitlik anlık değeri 16 bite çıkaracak genişetici ve 1 adet değişik büyüklüklerde çoklayıcı kullanılmıştır. Bunların yanısıra aşamalar arasındaki değerleri tutan değişik boyutlarda yazmaçlar kullanılmıştır. 2. Kasırga İşlemcisi Çevre Birimleri Şekil 5. Kasırga System on Chip Tasarımı Kasırga çevre birimleri rs 232 veri alma ve gönderme denetliyicisi, VGA (monitör) denetleyicisi ve PS/2(klavye) denetleyicisinden oluşmaktadır.

2.1. RS232 Modülü Rs232 seri iletişim protokolü ile Kasırga işlemcisi TULPAR yazılımı ile programlanabilmekte bunun yanında koşulan programın kaç saat darbesinde işlendiği bilgisi alınabilmektedir. 9600 baud oranında çalışan bu modül alıcı ve verici olmak üzere iki parçadan oluşmaktadır. 2.1.1. Alıcı Modül Alıcı modül, TULPAR kod çeviricisinde aldığı makina kodlarını seri iletişim protokolü ile almaktadır. Bu modül bitleri öncellikle 8 bitlik daha sonrada 16 bitlik paketler haline çevirmektedir. Kart üzerindeki programlama anahtarı ile denetlenerek gelen paketleri belleğin 0. adresinden başlayarak yazmaktadır. Programlama anatharı 1 konumuna geldikten sonra işlemci programlama modundan çıkar ve 0. adresten başlayarak buyrukları çeker. 2.1.2. Verici Modül Verici modül, kullanıcı programın bittiğinden emin olduğunda kaldırdığı switch sayesinde gelen veriyi 8 lik paketlere ayırarak, işlemciyi dinlemekte olan TULPAR kod çeviricisine aktarır. Bu modüle veri girişi olarak 16 bitlik, programın kaç saat darbesinde koşulduğu verisi iletilmektedir. Bu modül gelen 16 bitlik paketleri önce 8 bitlik paketlere düşürmekte daha sonra seri iletişim ile göndermektedir. Programın kaç saat vuruşunda koşulduğu verisi ise, işlemci başlatıldığı başlatılan bir sayacın, işlemcinin içinde sadece bu iş için kullanılan özel bir yazmaça değer yazması ile elde edilir. HLT komutu geldiğinde yazmaçtaki bu değer verici modüle veri girişi olarak verilir. 2.2. VGA Denetliyicisi Kasırga da VGA modülü girişine gelen 8 bitlik değerleri karakter rom undan okuduğu değere göre ascii olarak ekrana basar. Bu şekilde metinler harf harf ekrana girilerek oluşturulabilir. Ekran 72 Hz frekansında tazelenmekte, 800x600 çözünürlüğü desteklemektedir.bir karakter 8x16 pixel boyutundadır.bu sayede ekran, karakter olarak 37 satır, 100 sütuna bölünmüştür. Şu anda OUT buyruğu ile 8 bitlik değerler almaktadır. 72 Hz lik tazeleme oranı bir sayaç ile sağlanmıştır. Bunun yanında imleç pozisyonu her bir 8 bitlik veri geldiğinde bir sağa kayar satır sonuna geldiği durumda ise bir aşağı satıra geçmektedir. Bu durum carriage return (enter) tuşunun ascii kodu 0D geldiği zaman satır sonunu beklemeden gerçekleşmektedir. VGA denetleyicisinin karakter basmak için özellişmiş bu hali, PS/2 denetleyicisi ile klavye bağlanıldığı zaman tam bir uyum sağlamaktadır.

Şekil 6. ASCII karakterleriyle oluşturulmuş Kasırga Logosu 2.3. PS/2 Denetliyicisi PS/2 Klavye için kullanılan bir arayüzdür. RS232 iletişimine benzer bir protokol kullanan bu veri yolu, klavyeden basılan tuşların tarama kodunu (scan code) alarak, seri bir hat üzerinden denetleyiciye ulaştırır. Kasırga da bulunan in buyruğunun kullanım anlam bulması açısından önemli bir birimdir. Klavyeden gelen değerler denetleyici yardımıyla okunarak in buyruğu ile birlikte birikece yazılır. Ancak klavyede 17 Khz olan klavye hızı 50 Mhz lik saate bağlanmış olan Kasırga üzerinde çalışıtırıldığında, tuşa basılınca gelen tek veriyi birçok kez okumaktadır bu sebepten dolayı Kasırga Assembly Dili ile bu iki bileşeni an uyumlu çalıştıracak bir program yazılmıştır. Bu sayede ekrana normale yakın bir şekilde klavyeden yazı yazılabilmektedir. 3. Sonuç ve Planlar Proje ilerledikçe ortaya yeni planlar ve iyileştirmeler çıkmaktadır. Kasırga nın en son sürümü olan Kasırga 3 te de halihazırda yapılabilecek iyileştirmeler planlanmıştır. Ancak zaman sınırlaması nedeniyle bu iyileştirmeler gerçekleştirilmemiştir. Kasırga buyruk kümesine eklenecek birkaç video buyruğu ile işlemcinin Altera Nios 2 kartta çalışması ve görsel yönünün zenginleştirilmesi bu iyileştirmelerden biridir. Ayrıca temel gereksinim olan hızlı çalışmayı sağlamak için ana saatle senkronize çalışarak aşamalar arasına eklenecek geçici yazmaçlarla işlemci hızının artırılması sağlanabilir. Yine hızlandırma için boruhattında aşama sayısının çok sayıda buyruk işletilirken önemini kaybetmesinden ötürü en uzun birim olan çarpıcının da kendi içinde boruhattı ile çalışması ve

sinyallerin işlemci içine dağılmasındaki verimsizlikleri ortadan kaldırmak için PlanAhead yazılımı ile düzenlemeler yapılması işlemciyi hızlandıracak iyileştirmelerdir. İşlemcinin modülerliği sayesinde değiştirilebilecek dallanma tahmin yöntemi de bir başka iyileştirme olacaktır. Dallanma tahmini olarak ilk adımda çift kutuplu dallanma tahmini kullanılabilir. Kasırga nın OUT (Çık) buyruğuna yapılabilecek eklentiler ile işlemci çokluortam (multimedia) özellikleri kazanabilecektir. Özel lcd denetleyicisi ve DDR Sdram denetleyicisini Kasırga ile kullanarak aşağıdaki şekilde görüldüğü gibi bir resmi lcd ekrana bastırmak mümkün olabilecektir. Şekil 7. OUT buyruğuna yapılabilecek eklentiler sayesinde bu şekilde bir LCD ekran denetlenebilir. Kasırga nın sonuçlanmasıyla genel veya özel işler gerçekleştirebilecek bir işlemci tasarlanmasının yapılabilirliği kanıtlanmış ve en alt seviyede transistörlere kadar dayanan mantıksal işlemlerin oluşturduğu bir bitin olan işlemci ile tam bir bilgisayar sisteminin temelleri atılmıştır. Çevirici dilde yazılacak olan temel bir işletim sistemi ile ilk Türk bilgisayarın elde edilmesi hiç de zor olmayacaktır.