KASIRGA PROJESİ 2. GELİŞME RAPORU

Benzer belgeler
KASIRGA -4 Buyruk Tasarımı Belgesi Ankara

KASIRGA 4. GELİŞME RAPORU

Kasırga [Gizli] KASIRGA PROJESİ 3. GELİŞME RAPORU 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.

K uark projesi. Temel Özellikler :

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

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

Mikroçita. Mikroçita Rapor 2:

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

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

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

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

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

FPGA Kullanarak 16 Bitlik Mikroişlemci Tasarımı Designing of a 16 bit Microprocessor by Using FPGA

BM 375 Bilgisayar Organizasyonu Dersi Vize Sınavı Cevapları 10 Nisan 2009

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ı

BÖLÜM Mikrodenetleyicisine Giriş

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

Anakart ve Bileşenleri CPU, bellek ve diğer bileşenlerinin bir baskı devre (pcb) üzerine yerleştirildiği platforma Anakart adı

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

MİKROİŞLEMCİ MİMARİLERİ

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

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

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

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

A.Ü. GAMA MYO. Elektrik ve Enerji Bölümü ALGORİTMA VE PROGRAMLAMA 1.HAFTA

Operatör panelleri FED

Haftalık Ders Saati Okul Eğitimi Süresi

Bilgisayar Donanım 2010 BİLGİSAYAR

1. PROGRAMLAMA. PDF created with pdffactory Pro trial version

XC8 ile PİC uygulamaları

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

EEM 419-Mikroişlemciler Güz 2017

İşletim Sistemleri (Operating Systems)

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

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

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

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.

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

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

Algoritma ve Programlamaya Giriş

FPGA ile Kablosuz Görüntü Aktarımı. Yusuf Onur Koçberber

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

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

Bilgisayar Mimarisi Nedir?

Hacettepe Robot Topluluğu

İşletim Sistemlerine Giriş

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin

ALGORİTMA VE PROGRAMLAMA I

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

Mikroişlemci ile Analog-Sayısal Dönüştürücü (ADC)

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Bilgisayar Programlama. Giriş

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

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

Deney 4. Gerçek Zamanlı Kesme Uygulamaları

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

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

Bölüm 4 Ardışıl Lojik Devre Deneyleri

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

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

EDI MIGROS (Sipariş) LOGO ENTEGRASYONU

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

İşletim Sistemlerine Giriş

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

WiFi RS232 Converter Sayfa 1 / 12. WiFi RS232 Converter. Teknik Döküman

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

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

NB Macro Kullanımı Hakkında Genel Bilgiler

William Stallings Computer Organization and Architecture 9 th Edition

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

CP1E KM-N2-FLK MODBUS HABERLEŞMESİ

BİL 361 BİLGİSAYAR MİMARİSİ VE ORGANİZASYONU Güz Dönemi ÖDEV 1

TT - SC6V Video Modülü

ANAKARTLAR. Anakartın Bileşenleri

Ege MYO Bilgisayar Donanım Ders Notları

DY-45 OSİLOSKOP V2.0 KİTİ

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI

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İ

C# ile NJ Simulatöre Bağlanmak

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

HSancak Nesne Tabanlı Programlama I Ders Notları

Yazılım Mühendisliği 1

Bölüm 4 Aritmetik Devreler

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

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

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

Bölüm 7 Ardışıl Lojik Devreler

Mikroişlemcili Sistemler ve Laboratuvarı

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

Bilgisayar Mimarisi ve Organizasyonu Giriş

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

5.41. UYDU ANTENİ YÖNLENDİRME OTOMASYON PROJESİ

Kullanım Kılavuzu Milli Eğitim Bakanlığı 2010

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Geleneksel ekran kartları, bilgileri, sistem belleğinden kendi belleğine alıp monitöre göndermekteydi. Günümüzdeki ekran kartları ise görüntülenecek

PİLSAY KULLANMA KILAVUZU

Paralel ve Seri İletişim. Asenkron/Senkron İletişim. Şekil 2: İletişim Modları

Transkript:

KASIRGA PROJESİ 2. GELİŞME RAPORU 29.04.2008 Ankara

İçindekiler 1.GİRİŞ... 4 2. KASIRGA İŞLEMCİSİ... 5 2.1 Kasırga Buyruk Tasarımı... 5 2.2 Kasırga 1... 7 2.2.1 Kasırga 1 Sanal Tasarım... 10 2.2.2 Kasırga 1 Benzetim... 11 2.2.3 Kasırga 1 Fiziksel (FPGA Üzerinde) Tasarım... 15 2.3 Kasırga 2... 16 2.3.1 Kasırga 2 Sanal Tasarım... 17 2.3.2 Kasırga 2 Benzetim... 22 2.3.3 Kasırga 2 Fiziksel Tasarım... 25 2.4 Kasırga 3... 26 2.5 Kasırga Soc (System On Chıp)... 27 3. TULPAR KASIRGA ÇEVİRİCİSİ... 28 3.1 Rs 232 Modülü... 29 3.2 Vga Modülü... 30 2

ÖZ Günümüz teknolojisi bilgisayar üzerine kurulmuş durumdadır. Bilgisayar donanımı üzerinde en yoğunlaşmış ülkeler Almanya, Amerika ve bazı Uzakdoğu ülkeleridir. Bunun nedeni bilim ve teknolojide ilerlemiş olmaları ve üretime geçmiş bulunmalarıdır. Bunların dışında da belirli çalışmalar yapılmasına rağmen bu ülkeler bilgisayar donanım sektöründe tekel konumundadırlar. Amerika ve Almanya nın tekelliğini sürdürdüğü bu teknoloji sektöründe Türkiye de kendini kanıtlamak isteyen ülkelerden birisidir. Bu nedenle bazı üniversiteler ve şirketler bünyesinde başlangıç seviyesinde çalışmalar yapılmıştır. Ancak hedeflenen büyük adımlar atılamamıştır. Bu adımlardan en önemlisi bir işlemci tasarlanmasıdır. Çünkü işlemciler bilgisayarların en önemli parçaları olmakla birlikte diğer teknolojilerin de temelinde yer almaktadır. İşte bu önemli adımın atılabilmesi için bu projede farklı sistemlere uyum sağlayabilecek temel bir işlemci tasarımı yapılacaktır. Bu makalede bu işlemcinin tasarımı ve gerçekleştirilmesine ilişkin ayrıntılar anlatılacaktır. 3

1.GİRİŞ Bilgisayar donanımı temel olarak dört kısımda incelenebilir. Bunlar işlemci, bellek ve giriş çıkış birimleridir. Bunlar arasında en önemlisi işlemcidir. Bir işlemci bilgisayarın temel parçasıdır. Adından da anlaşılacağı üzere işlemci, bir bilgisayardaki işlemleri yürüten ve sonuçları gerekli yerlere gönderen elemandır. Günümüzdeki işlemciler nanometreler ile ölçülen transistörlerin; dirençler, kondansatörler ve diyotlarla bir araya getirilmesinden oluşan milyonlarca karmaşık mantık kapısından oluşur. Bu karmaşık yapı ile işlemcinin temel iki birimi olan veriyolu ve denetim birimi oluşturulur. İşlemciler ilk olarak vakum tüpleriyle başlayan ve transistörlerle devam eden bir evrim geçirmişlerdir. Ancak işlemci üretiminin tam ivme kazanması silikon üzerine yapılan transistörler sayesinde olmuştur. Intel firmasının 1971 yılında ilk defa binlerce transistörü bir silikon çip üzerinde birleştirmesiyle bilgisayar çağında devrim gerçekleştirilmiştir. İşlemcilerin seri üretimine geçilmesiyle daha önce sadece büyük şirketlerin ve üniversitelerin kullanabildiği bilgisayarlar iyice küçüldü ve bugünkü PS halini aldılar. Bununla birlikte işlemciler modern hayatta yalnızca bilgisayarlar değil otomobil, cep telefonu gibi birçok yerde kullanılmaktadır. Teknolojide ileri seviyelere gelmiş birçok ülkede işlemci tasarımı gerçekleştirilmektedir. Bu konuda daha yeni adımlar atan ülkemizde de bir işlemci yapılmak istenmektedir. Bu yüzden daha yaratıcı olabilmek ve doğrudan bilgisayar tasarımının kullanıcılar, teknik elemanlar ve mühendisler tarafından daha yakından irdelenmesi amacı ile ülkemizde Tübider (Türk Bilişim Derneği) tarafından işlemci tasarımı üzerine bir yarışma düzenlenmektedir. Bu yarışma kapsamında gerçekleştirilecek işlemci bu projenin konusudur. Yarışmaya 3 dalda girmek mümkündür. Bunlar Sanal İşlemci Tasarımı, FPGA ile Fiziksel İşlemci Tasarımı ve Akademik Yenilikçi Gömülü Sistem Tasarımı dır. Projesi kapsamında her üç dalda bir tasarım yapılması planlanmaktadır. Ancak bu makalede yalnızca sanal tasarım ve FPGA ile tasarıma ilişkin ayrıntılar verilecektir. Ayrıca yarışmanın ilerleyen zamanlarında yapılacak işler ile ilgili planlar da yer alacaktır. İşlemci tasarımı için zaten hali hazırda verilmiş olan buyruklar kullanılarak işlemcinin yapması gerekenler ve kullanılacak birimler belirlenmiştir. İlk olarak buyrukların nasıl davranacağı ve buyruk türleri tasarlanmıştır. Bu adımdan sonra kağıt üzerine geçirilen tasarım üzerinde gerekli düzenleme ve değişiklikler yapılmış ve tasarım son halini almıştır. Veriyolunun son halini almasıyla birlikte denetim birimi tasarımı tamamlanmıştır. 4

2. KASIRGA İŞLEMCİSİ Kasırga ilk olarak Cpu Turkey yarışması için verilmiş temel buyruk kümesini gerçekleştirecek daha sonra tasarım üzerinde yapılacak olan değişiklik ve düzeltmelerle hem daha hızlı hem daha kullanışlı bir işlemci elde etmek üzere yapılacak olan işlemci dizisinin genel adıdır. Bu plan çerçevesinde Kasırga 1 ve Kasırga 2 işlemcileri tasarlanmış ve Kasırga 3 e yönelik ana adımlar atılmıştır. Kasırga 1 35 buyruktan oluşan temel buyruk kümesini kullanan tek vuruşluk bir işlemcidir. En temel ve basit tasarım her işin tek bir saat çevriminde bitmesi olduğu için diziye Kasırga 1 gibi tek vuruşluk bir işlemci ile başlanmıştır. Kasırga 2 ise Kasırga 1 den farklı olarak boru hattına sahip bir işlemcidir. Yine aynı buyruk kümesi bu sefer boru hattı ile gerçekleştirilmiş ve boru hattının sağladığı hızlanma gözlemlenmiştir. İşlemcilerin en temel hızlandırma yöntemi olan boru hattı bundan sonraki tasarımların tümünde var olacaktır. Kasırga 3 yapılacak değişiklik ise kullanım üzerinedir. Buyruk kümesi biraz daha genişletilerek programlanması daha pratik bir işlemci tasarımı yapılacaktır. Ayrıca buyruklar da 32 bite yükseltilerek buyruk kümesindeki buyruk sayısı artırılacaktır. Hiçbir işlemci giriş çıkışı olmadan anlam ifade etmeyeceği gibi Kasırga için de giriş çıkışlar daha doğrusu bir sistem olması için çalışmalar yapılmıştır. Bunun sonucunda Kasırga dizisindeki her bir tasarımın entegre edilebileceği bir sistem geliştirilmiştir. Bu sistem Kasırga çeviricisi ile başlamakta ve bir ekran ile son bulmaktadır. Yani kasırga çeviricisi üzerinde yazılan Kasırga buyrukları çevirici tarafından makine kodlarına çevrilerek seri port aracılığıyla kart üzerine atılmakta ve buradan her bir çıkış buyruğu sonucunda ekranda VGA modülü yardımıyla belirli bir yazmaçtaki değerin ascii karşılığı görülebilmektedir. Bu haliyle Kasırga_SOC(System on Chip) temel bir giriş çıkış fonksiyonu gerçekleştirmekle beraber yarışma süresince birimler üzerinde yapılacak iyileştirmelerle daha gelişmiş bir sistem elde edilecektir. Kasırga SOC un tasarımı sırasında Kasırga için kullanılacak pek çok yan birim de tasarlanmıştır. Bunlar başta Kasırga Çeviricisi (TULPAR) olmak üzere, seri port ve VGA modülleridir. TULPAR visual C# ile yazılmış bir bilgisayar arayüzüdür. TULPAR ile yazılan buyrukların çıkışları hem FPGA kartı hem de ekranda gösterilirler. 2.1 Kasırga Buyruk Tasarımı Sanal tasarım sırasında gerçekleştirilen ilk adım buyrukların belirlenmesi ve buyruk içindeki bitlerle buyrukların ve yazmaçların nasıl ifade edileceğinin belirlenmesidir. Kasırga nın buyrukları 5

16 bit genişliğinde olup anlık değeler 11 bit ile gösterilmektedir. İşletilecek olan 35 buyruk ise 16 bitlik buyruğun ilk 5 veya 7 biti ile gösterilmektedir. Kasırga işlemcisinde 4 tür buyruk bulunmaktadır. Bunlar A tipi, Y tipi, D tipi ve S tipi buyruklardır. A tipi buyruklar anlık değerlerle yapılan işlemleri ifade etmektedirler. 5 bit buyruğu bildirirken kalan 11 bit ise anlık değerdir. Anlık değerlerle işlem yapan buyruklar genellikle birikeci kullanmaktadırlar. Bu tür işlemlerde yazmaçlardan alınan değerler değil, buyrukla gelen anlık değerler kullanılır. Y tipi buyruklar yazmaçlarla işlem yapan buyruklardır. İşlem iki yazmaçtan gelen değerler arasında yapılır ve bir sonuç yazmacına bulunan sonuç yazılır. Buyruktaki ilk 5 bit yapılacak işlemi bildirirken sonraki 3 bit sonuç yazmacını, sonraki 6 bit ise işlemin yapılacağı değerlerin bulunduğu 2 yazmacı göstermektedir. D tipi buyruklar ise yine 5 bitlik işlem kodu ve 2 yazmaçtan oluşurlar. Buyruktaki 2.yazmaç adresi üzerinde işlem yapılacak yazmacı gösterirken ilk yazmaç ise yine sonucun yazılacağı yazmaçtır. S tipi buyruklar ise sistem ile ilgili buyruklardır. Yani program işleyişi ve giriş çıkış portlarına gelen değerlerin yönlendirilmesiyle ilgili buyruklarda kullanılırlar. Buyrukların nasıl gerçekleştirildiğine dair diğer ayrıntılar. Kasırga 1 ve Kasırga 2 tasarımında verilmiştir. Tablo 1 Kasırga Buyruk Kümesi İŞLEM KODLARI BUYRUKLAR (İNGİLİZCE) BUYRUKLAR (TÜRKÇE) BUYRUK TÜRLERİ İŞLEMLER 00000 syscall sisçağ A 00001 add topla Y Ra Rb + Rc 00010 addi atopla A Brkç Brkç+Anlık Değ. (İş. g.) 00011 sub çıkar Y Ra Rb Rc 00100 subi açıkar A Brkç Brkç Anlık Değ. (İş. g.) 00101 mul çarp D Üst+Alt Ra * Rb 00110 muli açarp A HI+LO Brkç*Anlık D. (İş. g.) 00111 mulu içarp D Üst+Alt Ra * Rb 01000 and ve Y Ra Rb Rc 01001 andi ave A Brkç Brkç Anlık Değer (Sıfırla genişletilmiş) 01010 or veya Y Ra Rb Rc 01011 ori aveya A Brkç Brkç Anlık Değer (Sıfırla genişletilmiş) 01100 xor öveya Y Ra Rb (XOR) Rc 01101 xori aöveya A Brkç Brkç (XOR) Anlık Değer (Sıfırla genişletilmiş) 6

01110 not değil D Ra Rb 1 01111 sll somk D Ra Ra<< Rb 10000 srl samk D Ra Ra>> Rb 10001 sla soak D Ra Ra<<< Rb 10010 sra saak D Ra Ra>>> Rb 10011 mov taşı D Ra Rb 10100 movi ataşı A Brkç Anlık Değer (İşaret. g.) 10101 lw yükle D Ra Bellek [Rb] 10110 sw sakla D Bellek [Rb] Ra 10111 cmp karş D Ra>Rb ise Büyük Bayrağı=1 Ra<Rb ise Küçük Bayrağı=1 11000 beq sed A Sıfır Bayrağı = 1 ise PS=PS+İşaretle gen. Anlık D. 11001 bne sedd A Sıfır Bayrağı = 0 ise PS =PS+İşaretle gen. Anlık D. 11010 ba atla A PS=Anlık Değer(İşaretle gen.) 11011 bl avb A PS_ret = PS PS = Anlık Değer(İşaretle gen.) 11100 bret dön A PS= PS_ret 11101 bgt bd A Büyük Bayrağı = 1 ise PS =PS+İşaretle gen. Anlık D. 11110 blt kd A Küçük Bayrağı= 0 ise PS =PS+İşaretle gen. Anlık D. 1111100 in gir S Brkç= Anlık Değer(Sıfırla gen.) 1111101 out çık S Brkç<7:0> dışarı verilir. 1111110 hlt dur S PS = PS 1111111 nop işlyok S PS PS+1 2.2 Kasırga 1 Kasırga 1 tek vuruşluk bir işlemcidir. Yani 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. İşlemcinin gerçekleştirilmesi sırasında tek bir modül içinde tüm kodlar yazılmıştır. Yalnızca bellek modülü dışarıdan IP Core Generator yardımıyla hazırlanmıştır. Yine tasarım üzerindeki çarpma, AMB ve Kaydırma modülleri ayrı ayrı yazılmış ancak hız sağlanması açısından Verilog un standart operatörleri kullanılarak gerçekleştirme yapılmıştır. Herhangi bir durumda ayrıca yazılmış AMB, Çarpıcı ve Kaydırıcı da işlemciye bütünleştirilebilir. Kasırga tasarımı sırasında sanal tasarımla FPGA üzerindeki gerçekleştirim aynı anda yürütülmektedir. Bu nedenle ancak Verilog ile kodlamaya geçildiği sırada fark edilebilecek sorunlar 7

ve değişiklikler kısa sürede fark edilip çözümlenmektedir. Bunlardan bir tanesi de Kasırga 1 deki saat vuruşu kavramıdır. Tek vuruşlu bu işlemcide aslında 2 vuruşta bir buyruk gerçekleştirilmektedir. Ancak bu iki vuruş üst düzeyde tek bir vuruş olarak değerlendirilir. Bunun nedeni belleğin de bir saat darbesi ile çalışmasıdır. Saat darbesiyle birlikte bellekten alınan buyruğa göre geçici yazmaçlara okunan değerler atılır. Sonraki saat darbesiyle geçici yazmaçlardaki değerler işlem birimlerinden geçerek sonuçlar hesaplanır. Modüller yerine standart operatörlerin kullanılması da yine FPGA üzerinde tasarım sırasında fark edilmiş benzer bir iyileştirmedir. Şekil 1 de Kasırga 1 in sanal tasarımı gösterilmektedir. Bu tasarıma göre Kasırga 1 içinde gerçekleşen işlemler sırasıyla Kasırga 1 sanal tasarım başlığı altında anlatılmaktadır. 8

Şekil 1 Kasırga 1 Veriyolu 9

2.2.1 Kasırga 1 Sanal Tasarım 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. Program sayacından gelen değerin seçilmesi için çoklayıcının denetim değeri 0 olarak belirlenir Program sayacından gelen değerle bellekten alınan buyruk yazmaç öbeğine getirilir. Yazmaç öbeğinde de; A tipi buyruk için ilk 5 bit <0:4> işlem değerini geriye kalan 11 bit ise anlık değer olarak alınır. Y tipi buyruk için ilk 5 bit <0:4> işlem değeri sonraki 3 bit <5:7> sonucun yazılacağı yazmacı (Ra), <8:10> arasındaki 3 bit birinci kaynak yazmacını (Rb), <11:13> arasındaki 3 bit ikinci kaynak yazmacını (Rc) gösterir. D tipi buyruk için ilk 5 bit <0:4> işlem değeri sonraki 3 bit <5:7> sonucun yazılacağı yazmacı (Ra),<8:10> arasındaki 3 bit birinci kaynak yazmacını (Rb) gösterir. Yazmaç öbeğine gelindiğinde Ra sonucun yazılacağı yazmacı gösterir, 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. Bu çoklayıcının girişleri Ra yı bildiren <5:7> arasındaki 3 bit ve birikecin adresini bildiren 000 bitleridir. 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 AMBden 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. Bu belirlemenin yapılmasına sebep olan buyruk MOVI buyruğudur. MOVI buyruğu anlık değeri birikece atmaktadır. MOVI nın gerçekleştirilmesi için sonuç yazmacı olarak birikeç seçilirken yazmaç öbeğine giren değer olarak anlık değer seçilmektedir. Diğer buyruklarda ise işlemlerin yapılacağı AMB, Bellek vb. birimlerden gelen sonuç değeri seçilmektedir. MOV buyruğunda ise yazılacak değer olarak Rb yazmacının değeri olarak seçilir. 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 10

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. Birinci çoklayıcıya anlık değer ve birinci kaynak yazmacı (Rb), ikinci çoklayıcıya ise sonuç yazmacı (Ra) ve ikinci kaynak yazmacı (Rc) verilir. Buyruğun türüne göre çoklayıcılardan değerler seçilir. Buyruklara göre hangi değerlerin seçileceği aşağıdaki tabloda gösterilmişti. 2.2.2 Kasırga 1 Benzetim Kasırga dizisinde tasarım sırasında izlenilen yol sanal ve fiziksel tasarımın bir arada yürütülmesidir. Bu tasarım sırasında verilog ile kodlama yapılmış ve bundan sonra geriye dönüş yapılarak benzetimler yardımıyla sanal tasarım kısmı gerçekleştirilmiştir. Bu sırada bellekte bulunan buyrukların görülebilmesi için chipscope ile tasarımın kart üzerinde çalıştırılırken gerçek değerleri alınmıştır. Çalıştırılan Kod: 5 Faktöriyel Hesabı movi 5 mov r3 r0 movi 1 mov r4 r0 mov r5 r0 mov r6 r0 cmp r3 r4 bgt 2 ba 13 add r4 r4 r5 mul r6 r4 mov r6 r2 ba 6 //faktöriyeli alınacak sayı mov r0 r6 out ba 0 //13.yer //faktöriyel sayısı yazdırılır 11

Şekil 2 Kasırga 1 Sinyallerini Gösteren Grafik Program sayaci her bir saat darbesinde 1 artmaktadır. Buyruk_w değişkeninde hafızadan çekilen buyruklar bulunmaktadır. Bu buyruklar direk olarak işlemci tarafından işlenir. Kod incelendiğinde programın sürekli başa döndüğü görülecektir. Bu sebepten çıkış yazmacı olan gc cikis hep 120 değerini göstermektedir. 12

Şekil 3 Kasırga 1 Sinyallerini Gösteren Grafik Y1 ve y0 yazmaçları faktöriyel hesabı için gerekli değerlerini almaktadırlar. Bu sırada program sayacının artışı bir kesintiye uğramadan devam etmektedir. 13

Şekil 4 Kasırga 1 Sinyallerini Gösteren Grafik Program sayacının artışı 12 den 6 ya atlamaktadır. Bunun sebebi 12. adreste bulunan dallanma koşulunun doğru olmasıdır. 14

Şekil 5 Kasırga 1 Sinyallerini Gösteren Grafik Program işlemini tamamladıktan sonra ba 0 buyruğu ile başa dönmektedir. 2.2.3 Kasırga 1 Fiziksel (FPGA Üzerinde) Tasarım Kasırga 1 tek bir modül ve bir hafıza modülünden oluşmaktadır. Kasırga modülüne giriş olarak saat, reset ve giriş portu değeri verilmektedir. Modülden çıkış olarak 8 bitlik çıkış portu değeri alınmaktadır. Çıkış portu kart üzerinde bulunan 8 LEDe bağlanmış durumdadır. Reset tuşu ise tüm işlemciye ilk değer vermek için ya da bazı durumlarda sıfırlamak için yine kart üzerindeki bir butona bağlanmış durumdadır. Kodlar içinde 2 "always" bloğu bulunmaktadır. Birinci blokta buyruk bellekten okunarak yazmaç değerleri okunup geçici yazmaçlara atılırken, ikinci "always" bloğunda işlemler yapılarak sonuçlar yazmaçlara yazılmaktadır. İşlemler yapılırken her bir işlemin sonucu paralel şekilde hesaplanarak sonuç tüm işlemlerin geldiği kablolardan seçilmektedir. 15

Hangi buyruğun işlenmekte olduğu bilgisinin işlemciye yayımlanması verilog'daki "define" yapısı ile gerçekleştirilmiştir. Bu şekilde ayrı modüllere gerek kalmadan tek bir modülde tasarım tamamlanmıştır. 2.3 Kasırga 2 Kasırga 2, Kasırga 1 buyruk kümesinin boru hattı ile gerçekleştirilmiş halidir. Bunun haricinde yazmaç sayıları ve diğer tasarım ana kuralları aynı şekilde kalmıştır. Bu sayede hem işlemciye hız kazandırılmış hem de boru hattının bir işlemci üzerindeki hızlandırma etkisi de incelenebilmiştir. Kasırga 2 boruhattı 4 aşamadan oluşmaktadır. Bu aşamalar Getir (Fetch), Çöz (Decode), Yürüt (Execute) ve Yaz (WriteBack)'dır. Getir aşamasında bellekten program sayacı yardımıyla buyruklar çekilir. Çöz aşamasında buyrukla birlikte gelen anlık değer veya değerlerin okunacağı yazmaçların adreslerine göre okumalar yapılır. Okunacak değerlerin yazmaç ya da anlık değer olması gelen buyruğun türüne göre belirlenir. Çöz aşamasında boru hattı sorunlarından birisi olan veri iletimi sorunu da çözümlenir. Yürüt aşamasında ise buyruğun türüne göre çöz aşamasında saklanan değerler kullanılarak hesaplanan sonuç değeri kaydedilir. Yürüt sırasında bayraklar da değerlerinin alırlar. Son aşama olan Yaz da ise bir önceki aşamada kaydedilmiş olan sonuç değeri 2 aşama önce Çöz'de belirlenmiş olan yazmaca yazılır. Ayrıca Yaz aşamasında dallanma buyrukları için gidilecek olan adres de hesaplanır. Boru hattı uygulaması aslında tek bir buyruğun işlenme süresini uzatmaktadır ancak boru hattı dolduktan sonra her bir vuruşta bir buyruk sonuçlanmaktadır. bir vuruşta yapılacak işler de tek vuruşlu işlemciye göre kısaldığı için çok daha kısa sürede buyruklar işlenmektedir. İşlenecek 1 2 buyruk için tek vuruşluk işlemciden yavaş olan boru hattının yararı buyruk sayısı arttıkça belirginleşmektedir. Ancak buyrukların bu kadar süratle arka arkaya işlenmesi de beraberinde sorunlar getirmektedir. Kasırga boru hattında temel olarak 2 sorun vardır. Birincisi henüz hazır olmayan değerlerin yazmaçlardan okunmak istenmesi yani buyrukların arasındaki veri bağımlılığının getirdiği sorun, diğeri ise koşullu dallanma buyruğu geldiği anda koşulun doğru ya da yanlış olması durumuna göre bir sonraki buyruğun alınacağı adresin yani atlanacak adresinin bilinememesidir. Veri bağımlılığı sorununa yönlendirme tekniği ile çözüm bulunurken dallanma probleminde ise adresin değeri belli oluncaya kadar beklenmekte yani program sayacı sabitlenmektedir. Bu durumda dallanma buyruğu geldiği anlarda bir kaç vuruşun israf edilmesi söz konusudur. Ancak bu soruna bulunabilecek en temel ve ilk çözüm bekleme olmuştur. Kasırga 3 tasarımında dallanma sorununun çözümü üzerine iyileştirmeler yapılması planlanmaktadır. 16

2.3.1 Kasırga 2 Sanal Tasarım Tüm boru hattı aşamaları arasındaki yazmaçlar program sayacı yazmacıyla başlar. Program sayacı belleğin buyruk iletişimi yapılan kapısının adres girişine bağlanmış durumdadır. Program sayacının ilerlemesiyle yeni gelen buyruklar veri yoluna alınır. Bellekte veriler 2 baytlık sözcükler halinde bulunmaktadır. Bu nedenle normal şartlarda program sayacı birer birer artarken dallanma buyruklarıyla farklı değerler almaktadır. Bellekten alınan buyruk, yakalama ile çözme arasında geçişi sağlayacak olan buyruk yazmacına yazılır. Bundan sonra buyruk tüm aşamalarda ilerletilir. Bu şekilde her bir aşamada yapılmakta olan işlem kontrol edilerek denetimler ayarlanır. Buyruk yazmacına yazılmış olan değer ile çöz aşamasına geçilir. Bu sırada saat vuruşuyla birlikte değişen program sayacı sayesinde buyruk yazmacına yeni buyruk yazılır. Çözme aşamasında gerekli yazmaçlar veya anlık değerler buyruk türüne göre okunurlar. Kasırga buyrukları yazmaç kullanımlarına göre 4 gruba ayrılmış şekildedirler. Bunlar: Çarpma Buyrukları Yazmayan Buyruklar Anlık Değer Buyrukları Diğer Buyruklar Çarpma buyrukları B ve C yazmaçlarını okuyarak sonucu önceden belirlenmiş olan ALT ve ÜST yazmaçlarına yazarlar. Yazmayan buyruklar ise hiçbir yazmaca sonuç yazamayacak olanlardır. Bunlar dallanma buyrukları, OUT ve SW buyruklarıdır. Yazamayanlar işlenirken anlık değer, A ve B yazmaçları okunur. Anlık buyruklarda ise genişletilmiş anlık değer ve birikeç okunur. Diğer buyruklar ise aritmetik işlemler, kaydırma ve IN buyruklarıdır. Bu buyruklar işlenirken A,B ve C yazmaçları okunur. Aritmetik işlemler B ve C arasında yapılırken, Kaydırma buyrukları ise A ve B yazmaçları arasında yapılır. Buna göre çöz aşamasında: 1. Yazmaçlar okunur 2. Veri Yönlendirmesi yapılır 3. Sonucun yazılacağı yazmaç belirlenir Yazmaçlar okunurken 16 bit uzunluğundaki 8 yazmaçtan gereken değerler çoklayıcılar yardımıyla alınır ve A, B, C yazmaçlarına atılırlar. Yazmaçlar okunurken ortaya bazı veri bağımlılıkları 17

çıkmaktadır. Eğer okunmak istenilen veri henüz yazmaca yazılmamışsa veri yönlendirmesi yapılması gerekir. Şekil 6 Boru hattındaki veri yönlendirmesi Yönlendirme için scoreboarding yöntemi kullanılmıştır. Bu metot verinin yazılacağı yeri gösteren 10 bitlik bir vektör dizisi kullanarak çalışmaktadır. Vektörün ilk iki biti her işlendiğinde aynı yeree yazan buyrukların kullandığı yazmaçları göstermektedir. Örneğin çarpma buyrukları her zaman Alt ve Üst yazmaçlara yazdığından bu buyruklar işlenirken adresin hesaplanmasına gerek yoktur. Sonuç olarak vektörün ilk biti 1 ise Üst ve Alt yazmaçları yönlendirmek gerekmektedir. Vektörün geri kalan 8 biti <7:0> yazmaç öbeğinde yazmaçları göstermektedir. Önceki buyruğun yazdığı yazmacın vektördeki biti 1 diğerleri 0 olmaktadır. Veri yönlendirmesi çöz aşamasında uygulanmaktadır. Yönlendirme de 2 tane vektör biti kullanılmaktadır. Bunlardan birincisi bir önceki saat darbesinde oluşturulan, diğeri de 2 saat darbesi öncesinde oluşturulan vektör dizisidir. Eğer bir saat darbesi öncesine bağımlılık varsa veri yürüt aşamasından n, eğer ikii saat darbesi öncesine bağımlılık varsa veri yaz aşamasındann yönlendirilmektedir. Yaz aşamasından yönlendirilen değer geçici bir yazmaçla, yürüt aşamasındann yönlendirilen değer bir kablo ile alınmaktadır. 18

Son olarak, sonucun yazılacağı hedef yazmaç, çöz aşamasında belirlenmektedir. Sonuç yazmacı çarpma işlemi için Alt ve Üst, anlık değer buyrukları için birikeç yazmacıdır. Diğer buyruklar A yazmacını, yaz aşamasına kadar taşıyarak sonucun yazılacağı hedef yazmacın adresi olarak kullanır. Çöz aşamasından A, B, C ile gelen değerler AMB, çarpma, karşılaştırma ve kaydırma birimlerine yollanır. Sonuçlar asenkron olarak elde edilir, bir başka deyişle işlem birimlerinin saate bir bağımlılığı yoktur. Sonuçlar çöz aşamasına ve yürüt aşaması sonuç yazmaçlarına bağlıdır. Sonuç ve hedef yazmaçlar elde edildikten sonra geri bir tek yazma işlemi kalmaktadır. Aynı anda bayraklar yürüt aşamasında güncellenmektedir. Büyüktür ve küçüktür bayrakları CMP buyruğundan sonra, sıfır ve işaret bayrakları da diğer buyrukların işlemlerinden sonra güncellenmektedir. Sonuç değerleri ve bayrakların durumları yürütmeden sonra diğer aşamaya da taşınır. Yazma aşamasında yürüt aşamasından alınan sonuç ve adres değeri kullanılır ve sonuç değeri yazmaç öbeğine yazılır. Sonucun yazılacağı yazmaç gösterilirken, çarpma için özel olarak 1 bit ayrılmıştır. Ayrıca yazmayan buyruklar için de hiçbir yazmaca yazılmayacağını bildiren 1 özel bit ayrılmış durumdadır. Yazma aşamasında ayrıca dallanma adresi de hesaplanır. Bu nedenle anlık değer boru hattının son aşamasına kadar taşınır. Anlık değer boru hattının sonuna taşınırken dallanma koşulunun doğruluğu kontrol edilir. Eğer dallanma koşulu gerçekleşirse yeni dallanma adresi yaz aşamasında anlık değer yardımıyla hesaplanır. Dallanma buyrukları işlenirken boru hattının bir diğer problemiyle karşılaşılır. Problem dallanmadan sonraki buyruğun nereden çekileceğinin bilinememesinden ötürü ortaya çıkmaktadır. 19

Şekil 7 Boru hattındaki dallanma sorunu Her ne kadar normal çalışma sırasında program sayacı birer birer artsa da, eğer dallanma koşuluu doğru ise henüz yeni program sayacı değeri hesaplanmamış olacaktır. Çünkü program sayacınınn değeri son aşamada hesaplanmaktadır. Kasırga 2'de bu soruna bulunan çözüm yeni adres değeri gelene kadar beklenmesidir. Çözme aşamasında dallanma buyruğu olduğu anlaşıldığı anda, bellekten çekilmiş olan buyruk durdurulur. Adres hesaplanması için beklenirken, dallanma fark edildiği anda bir sayaç başlatılır ve sayaç sıfırlanıncaya kadar boru hattına boş buyruklar sokulur. Sayaç sıfırlandığı anda işlemcii normal işleyişine devam eder. Boş buyruklar işlendiği süre içinde tüm yazmaç değerleri ve değişkenler aynı şekilde tutulur. 4 saat vuruşunda yeni adres hesaplanmaktadır ancak aradaa giren buyruğun etkisizleştirilmesi için sayacın 1 oluğu dudumda da program sayacınınn sıfırlanması gerekir. Dallanma sonrasındaki adres hesaplanana kadar beklenilmesi bir kaç saat vuruşunun israf edilmesi anlamına gelse ve kulağa kolay gelse de FPGA üzerinde gerçekleştirilmesi hata ayıklama konusundaki zorluklar nedeniyle vakit alan bir kısım olmuştur. 20

Şekil 8 Kasırga 2 Veriyolu 21

2.3.2 Kasırga 2 Benzetim Kasırga 2'de de Kasırga 1 ile aynı şekilde belirli bir işlev gerçekleştirecek buyrukların arka arkaya sıralandığı bir kod çalıştırılmış ve bu çalışmanın Chipscope yardımıyla program sayacı, buyruk yazmaçları vb. değerlerine erişilmiştir. Çalıştırılan Kod: 5 Faktöriyel Hesabı movi 5 mov r3 r0 movi 1 mov r4 r0 mov r5 r0 mov r6 r0 //faktöriyeli alınacak sayı cmp r3 r4 bgt 2 ba 13 add r4 r4 r5 mul r6 r4 mov r6 r2 ba 6 mov r0 r6 out ba 0 //13.yer //faktöriyel sayısı yazdırılır 22

Şekil 9 Kasırga 2 Sinyallerini Gösteren Grafik Ps asama1: Bellekten çekilenin verinin adresidir ve program akışını kontrol eden sayaçtır. Görüldüğü üzere 0 dan başlayarak her bir saat darbesinde değeri 1 artmaktadır. Her yeni çekilen buyruk, buyruk_w adlı değişkende tutulur daha sonra çekilen her buyruk, boru hattına gönderilir. Boru hattı aşamaları buyruk aşama1, buyruk aşama2, buyruk aşama3 ve buyruk aşama 4 olarak gösterilmiştir. A,B ve C geçici yazmaçlardır. y0 birikeç yazmacıdır. 23

Şekil 10 Kasırga 2 Sinyallerini Gösteren Grafik Şekilde görüldüğü üzere buyruk aşamalarında uzun süre 0000000000000000 buyruğu girmektedir. Bu buyruk boru hattını dallanma geldiğinde durdurmak için kullanılmaktadır. Veri bağımlılıklarını engellemek için vektör ve vektör1 adlı bit dizileri yazmaçları yönlendirme amacıyla tutulmaktadır. 24

Şekil 11 Kasırga 2 Sinyallerini Gösteren Grafik Dallanma sonuçlandıktan sonra buyruklar normal çalışmasını devam etmektedir. Ps yeni ve Ps tutulan değişkenleri dallanmadan önce ve sonra program sayacının değerinin doğru devam etmesini sağlayan değerlerdir. 2.3.3 Kasırga 2 Fiziksel Tasarım Kasırga 2 yine Kasırga 1 de olduğu gibi tek bir ana modül ve bir hafıza modülünden oluşmaktadır. Kasırga modülüne giriş olarak saat, reset ve giriş portu değeri verilmektedir. Modülden çıkış olarak 8 bitlik çıkış alınmaktadır. Çıkış portu kart üzerinde bulunan 8 LEDe bağlanmış durumdadır. Reset tuşu ise tüm işlemciye ilk değer vermek için ya da bazı durumlarda sıfırlamak için yine kart üzerindeki bir butona bağlanmış durumdadır. Kasırga 1 de bulunan tek bir "always" bloğu, Kasırga 2 de 4 ayrı bloğa bölünmüş durumdadır. İlk blokta bellekten çekilen buyruk buyruğun tutulduğu bir ara yazmaca atılır. İkinci blokta ise değerler okunur ve bir sonraki "always" bloğuna taşınmak üzere ara yazmaçlara atılırlar. Çöz aşamasında yönlendirmeyi sağlayan vektör değişkeni de bu aşamada atanır bir sonraki gelen buyruk da vektöre bakarak yine ikinci "always" bloğunda vektörün durumuna göre kimi zaman yürütme aşamasından 25

değer okunur. Bazen de iki buyruk üstteki veri bağımlılıklarından ötürü bir önceki vektöre bakılarak yaz aşamasından değerler okunur. Bir sonraki "always" bloğunda ise çöz aşamasından gelen değerlerle paralel şekilde yapılan işlemler bir sonraki aşamaya atanmak üzere ara yazmaçlara atılırlar. Ayrıca yine bu aşamada küçük büyük, işaret ve sıfır bayrakları da değerlerini alırlar. Son blokta ise bir önceki aşamadan taşınan sonuç değerleri 2. "always" de belirlenmiş olan yazmaca yazılır. Yine son aşamada dallanmalar için hesaplanan yeni program sayacı değeri de ara bir yazmaca atılır. Boru hattı sorunlarından veri bağımlılığına vektör ile gerçekleştirilen "scoreboarding" yöntemiyle çözüm bulunurken. Dallanma buyruklarındaki bekletme ise program sayacının kaç defa bekleyeceğinin bir değişkende tutulması ile gerçekleştirilmektedir. Dallanma ikinci "always" e girdiği anda hangi buyruk olduğu anlaşılmakta ve boru hattına boş buyruklar sokulmaya başlanmaktadır. bekletme süresi boyunca boş buyruklar verilir. Daha sonra 4.aşamada bayrakların durumuna göre belirlenmiş olan yeni program sayacı değeri atanır. Bu şekilde 4 blokla gerçekleştirilen 4 aşama sayesinde her bir saat vuruşunda aşamaların tümü paralel olarak çalıştırılır. İlk çalışma anında aşamaların tümü boş olmakla beraber 4 saat vuruşu sonra aşamaların tümüne buyruklar girer ve her bir vuruşta bir sonuç alınır. tek vuruşta işlem yapan Kasırga1 e göre bir vuruşta yapılacak işlem daha kısadır. Bu nedenle saat sıklığını en uzun aşama olan çöz aşaması belirler. Boru hattı uygulamasıyla yaklaşık 20 mhz lik bir hız artışı sağlanmıştır. 2.4 Kasırga 3 Kasırga 3 şu anda tasarım aşamasında olan bir işlemcidir. Tasarımın ilk adımı olan buyruk tasarımı tamamlanmıştır. Buna göre buyruklar 32 bite çıkarılmış ve buyruk kümesi 67 buyruğa çıkarılmış buna göre buyruk tipleri de 8 e ve yazmaç sayısı da 16 ya çıkarılmıştır. Ayrıca BL ve BRET buyrukları için kullanılan Program Sayacı dönüş yazmacı da bulunmaktadır. Bu yeni buyruk tasarımı sayesinde Kasırga buyruklarıyla daha kolay programlama yapılabilir duruma gelmiştir. Anlık değerlerin kullanımı yaygınlaştırılarak pratiklik sağlanmıştır. Örneğin eski buyruk kümesindeki her değerin önce birikece atılması durumundan kurtulmak için MOV vb. komutlar yeniden tasarlanmıştır. Ayrıca eklenen DEBUG ve CONTINUE buyruklarıyla da işlemcinin çalışması sırasında yazmaç değerlerini görmek ve bu noktadan devam mümkün olacaktır. Kasırga 3 işlemcisinde bilgisayardan verilecek bir komutla işlemcinin geçici olarak durdurulması ya da tamamen işlemin bitirilmesi mümkün olacaktır. 26

Kasırga 3'te yapılması planlanan diğer yenilikler ise bir önbellek eklenmesi ve boru hattı aşamaları ve çarpma biriminin bölünmesiyle birlikte hızlanmanın sağlanması amaçlanmaktadır. Kasırga 3 teki temel prensip kullanımı daha kolaya bir buyruk kümesi ve daha hızlı bir işlemci ortaya çıkarmaktır. Tasarım sırasında değişiklik ve geliştirmeler devam edecektir. 2.5 Kasırga Soc (System On Chıp) İşlemcinin çıkışlarının sergilenmesi, diğer sistemlerle bağının kurulabilmesi hatta bir bilgisayar gibi kullanılıp yapılan işlemlerin sonuçlarının alınarak problem çözümü sağlaması için işlemcinin dışarıya bağlantıları olması gerekir. Kasırga da bu bağlantılar FPGA kartı üzerinde bulunan RS 232 seri portu ile yapılmaktadır. USB yolu ile bilgisayardan alınarak karta gömülen Kasırga verilog kodları ile kart üzerinde bulunan Xilinx Spartan 3E chip üzerinde gereken transistör bağlantılarını, dolayısıyla Kasırga'nın oluşmasını sağlar. Kasırga buyrukları makine dilinde yazılmış şekliyle bellekten alınarak işlenmelidir. Yazılan buyrukların makine diline çevrilmesi ise TULPAR Kasırga Çeviricisi ile yapılır. Tulpar ile çevrilen kodlar seri port bağlantısı ile belleğe yazılırlar. Bu sırada bellek ile işlemci arasındaki bağ kesilir. Yalnızca bilgisayardan gelen buyrukların yazımı yapılır. Buyrukların yazımının bitmesi ile port ile bellek arasındaki bağ kesilir ve Kasırga ile bellek iletişime başlar. Bu geçiş bir switch sayesinde gerçekleştirilir. Bundan sonra eğer aksi durum belirtilmemişse program sayacı 0 adresinden başlayarak tüm buyrukları okumaya başlar. Yapılan işlemlerin sonuçlarının gösterilmesi, işlemciden çıkış almak içinse bir VGA modülü yardımıyla monitöre OUT buyruğu ile dışarı verilen değerler ASCII kodları ile basılır. Kasırga'nın bir sistem olarak gerçekleştirilmesi sürümüne bağlı değildir. Çünkü her iki sürümde de buyruklar ve yaptıkları işler aynıdır. Bu durum sistemde modüler çalışmaya olanak verir. Şekil 12 Kasırga System on Chip Şeması 27

3. TULPAR KASIRGA ÇEVİRİCİSİ TULPAR Kasırga buyruklarını makine koduna yani bitlere çeviren bir programdır. Visual C# dili ile yazılmıştır. İlk olarak yalnızca işlemci denemelerinde kolaylık sağlaması açısından tasarlanmış olan bu çevirici daha sonra bellek modülüne buyrukların yüklenmesinde daha sonra da direkt seri port bağlantısı ile bilgisayar ve Kasırga arasında işlem kurulmasında kullanılmıştır. Proje içinde en sık kullanılan parçalardan bir tanesidir. Bu nedenle programın derhal test edilmesi ve eksiklerinin giderilmesi mümkün olmuştur. Şekil 13 Tulpar ekran görüntüsü TULPAR'ın soldaki penceresine yazılan kod üzerinde bulunan tuşa basılması ile yazılmış olan buyruklar ayrıştırılarak hatalı olanlar bildirilir ve buyrukların türlerine göre bir XML 28

dosyasında kayıtlı olan buyrukların içinden işlem kodu değeri ve yazmaçların değerleri çekilerek yazılmış olan program 16 bitlik buyruklara çevrilir. Şekil 14 Tulpar Seri port iletişim mesajı Seri port ayarları ayarlar menüsünden yapıldıktan sonra işlemciye sağ pencerede makine kodunda olan buyruklar tuşuna basılarak işlemciye gönderilir. 3.1 Rs 232 Modülü Bu modül Kasırga Çeviricisi olarak kullanılan Tulpar aracılığıyla Kasırga2 işlemcisini programlamak için tasarlanmıştır. Projenin başlangıcında işlemci hafızası Xilinx in yazılımı olan IP Core Generator ile oluşturuluyordu. Bu şekilde yapılan hafıza oluşturma işleminin çok zaman alması ve buyrukları test etmek için esnek bir yöntem olmamasından dolayı seri port iletişimi kullanılmaktadır. Kasırga2 deki seri port modülünün devreye alınabilmesi için kart üzerinde bulunan mod seçim anahtarı belleğe yaz konumuna getirilir. Mod seçim anahtarı 1 yapıldığı anda, Tulpar editöründe oluşturulan veriler Kasırga işlemcisinin belleğine yazılır. Program işlemciye yüklendikten sonra anahtar 0 konumuna getirilir ve işlemci buyrukları çekmeye başlar. İşlemcinin normal halinde, program sayacı 0 dan başlar. SPARTAN 3E kartıyla seri iletişim Bilgisayardan SPARTAN 3E kartına seri bağlantı aşağıdaki şekilde gösterilmiştir. 29

Şekil 15 Seri port pin bağlantıları Hazır oluşturulmuş IP core hafızası seri porttan 8 bitlik veriyi okumak için kullanılır. Fakat Kasırga nın belleği 16 bitlik veri uzunluğuna sahiptir. 8 bitlik paketler 16 bitlik olacak şekilde organize edilir ve veri hafızanın doğru adresine yazılır. Bu işlemleri yapan Verilog modülü paketleri senkronize etmek ve iletişim protokolü için basit bir sayaç kullanmaktadır. Çünkü belleğe yazma veya okuma işlemi bir saat vuruşunda gerçekleşmektedir. Ayrıca bir etkinleştirme biti yine seri port ve TULPAR üzerinden işlemciyi durdurmak üzere gönderilir. 3.2 Vga Modülü VGA modülü yazmaçların anlık durumunu görebilmek ve Kasırga Assembly Dili ile yazılmış programların hatasını ayıklamak amacıyla geliştirilen bir birimdir. SPARTAN 3E Starter Kit platformundaki VGA girişi ile standard PC monitörü veya flat panel LCD lere DB15 könnektörü ile bağlanabilmektedir. Şekilde görüldüğü gibi renkler VGA_RED, VGA_GREEN ve VGA_BLUE pinleri ile üretilmektedir. Senkronlama ise VGA_VSYNC ve VGA_HSYNC pinleri ile yapılmaktadır 30

Şekil 16 VGA modülü pin bağlantıları Kasırga VGA modülü 72 Hz tazeleme oranında 800x600 çözünürlüğe sahiptir. Vga sinyal zamanlaması Video Electronics Standards Association (VESA) tarafından belirlenmiştir. Bahsi geçen çözünürlük ve tazeleme oranlarına göre zamanlama terimleri aşağıda açıklanmıştır. 31

Dikey Zamanlama Toplam Çizgi Sync Pulse (çizgi) Back Porch (çizgi) Aktif Zaman (çizgi) Front Porch (çizgi) Tüm çerçeve Periyodu (çizgi) 666 6 21 604 35 666 Yatay Zamanlama Piksel Saati Sync pulse Back Porch Aktif Zaman Front porch Tüm Çerçeve Periyodu 50 MHz 120 piksel 61 piksel 806 piksel 53 piksel 1040 piksel Bu darbeler Verilog HDL de ayrı ayrı sayaçlar ile üretilmektedir. Sistem Spartan 3E kartı ile uyumlu olarak 50 MHz de çalışmaktadır. Kasırga işlemcisinin çıkış portları hem LED ler hem de VGA dır. Kasırga Çevirici dilindeki OUT buyruğu birikecin ilk 8 bitini dışarı vermektedir. Bu yazmaç aynı zamanda akümülatör yazmacı olarak da adlandırılır. 8 tane LED den ikilik tabanda çıkış alınırken VGA modülünden 7 bit ASCII ye karşılık gelen figür ekrana bastırılır. Bu modülün satır başına geçme, boşluk bırakma gibi fonksiyonlara sahip olmasına rağmen ekran temizleme, renk ayarı vs. gibi geliştirilecek yönleri bulunmaktadır. 32