KAFA Open-Source/Open-Implementation, 32-bit CPU

27
KAFA Open-Source/Open-Implementation, 32-bit CPU Proje Yetkilisi: Deniz ALTINBÜKEN Proje Danışmanı: Prof. Emin Gün Sirer Projenin Bağlı Olduğu Kurum: Koç Üniversitesi, Bilgisayar Mühendisliği Bölümü

description

KAFA Open-Source/Open-Implementation, 32-bit CPU. Proje Yetkilisi : Deniz ALTINBÜKEN Proje Danışmanı : Prof. Emin Gün Sirer Proje nin Bağlı Olduğu Kurum : Ko ç Ü niversit esi , Bilgisayar Mühendisliği Bölümü. Desteklenen Komutlar. J, JR, JAL BEQ, BNE, BLEZ, BGTZ LW, SW, MOV, MOVI - PowerPoint PPT Presentation

Transcript of KAFA Open-Source/Open-Implementation, 32-bit CPU

Page 1: KAFA Open-Source/Open-Implementation, 32-bit CPU

KAFAOpen-Source/Open-Implementation,32-bit CPU

Proje Yetkilisi: Deniz ALTINBÜKENProje Danışmanı: Prof. Emin Gün SirerProjenin Bağlı Olduğu Kurum: Koç Üniversitesi, Bilgisayar Mühendisliği Bölümü

Page 2: KAFA Open-Source/Open-Implementation, 32-bit CPU

Desteklenen Komutlar

J, JR, JAL BEQ, BNE, BLEZ, BGTZ LW, SW, MOV, MOVI LUI ADDIU, ANDI, ORI, XORI, SUBI ADDU, SUBU, AND, OR, XOR, NOR, CMP,

NOT SLL, SLA, SRL, SRA, SLLV, SRLV, SRAV

Page 3: KAFA Open-Source/Open-Implementation, 32-bit CPU

Desteklenen Komutlar

Java koduyla oluşturulmuş olan Program Counter implementasyonunda aşağıdaki komutlar bulunmadığı için simülasyonları yapılamamıştır. Fakat implementasyonları yapılmıştır ve işlemci içerisinde simüle edilmemiş olsalar da çalışma durumları ayrı ayrı test edilmiştir.

SUBI, MULT, MULTI, MULTU, CMP, NOTSLA, MOV, MOVI, JAL, HLT, SYSCALL

Page 4: KAFA Open-Source/Open-Implementation, 32-bit CPU

Örnek Adres Dağılımı

Adres dağılımına göre hangi Register’dan okuma yapılacağı, hangi Register’a data kaydı yapılacağı, yukarıdaki örnekte verilen sayının kaç bit kaydırılacağı gibi bilgiler ayrıştırılır. Bu ayrıştırma ve Adres değerine göre karar alma süreci iki adet Control Unit tarafından yapılmaktadır.

Page 5: KAFA Open-Source/Open-Implementation, 32-bit CPU

Örnek MIPS Diagramı

Turuncu çizgiler bilgi akışının sağlandığı yolları, siyah çizgiler ise 32-bitlik adres değerlerinin akışının sağlandığı yolları göstermektedir.

Page 6: KAFA Open-Source/Open-Implementation, 32-bit CPU

Genel Dizayn

Page 7: KAFA Open-Source/Open-Implementation, 32-bit CPU

ALU Dizaynı• Temel Aritmetik ve Lojik işlemler ALU’da gerçekleştirilmektedir. • ALU 32-bitlik işlemler için tasarlanmıştır. • Hangi işlemin yapılacağına karar verilmesi için kullanılan opcode ALU Kontrol Ünitesinde oluşturulmaktadır. • ALU’da işlem görecek olan değerlerin nereden geleceği Ana Kontrol Ünitesinde oluşturulan kontrol datalarına bağlıdır.• MULT işlemi ALU’ya gömülememiştir fakat kendi içerisinde çalışır durumdadır.

Page 8: KAFA Open-Source/Open-Implementation, 32-bit CPU

32-bit Toplama-Çıkarma Ünitesi

Çıkarma işlemi Two’s Complement Mantığı implement edilerek yapılmıştır: 1011 – 0011 = 1011 + 1100 + 1 = 1000

Page 9: KAFA Open-Source/Open-Implementation, 32-bit CPU

1-bit Toplama-Çıkarma Ünitesi

Toplama-Çıkarma Ünitesi’nin yapıtaşı olan bu 1-bitlik ünite 32-bit sayılara ait her bit toplanırken kullanılmaktadır. Ardarda yapılan toplama işlemleri arasında ‘elde kalan değer’ler bir önceki işlemden bir sonrakine taşınmaktadır.

Page 10: KAFA Open-Source/Open-Implementation, 32-bit CPU

32-bit Right Shifter Ünitesi

Bu ünite içerisinde 5 katmanda 25-bitlik sağa kaydırma işlemi yapılmaktadır. İlk katmanda 2-bit, ikinci katmanda 4-bit, üçüncü katmanda 8-bit... kaydırma prensibine göre çalışmaktadır.

Page 11: KAFA Open-Source/Open-Implementation, 32-bit CPU

32-bit Total Shifter Ünitesi

Bu ünite içerisinde sadece Right Shifter kullanılarak Right ve Left-Shift işlemleri yapılmaktadır. Left-Shift işlemi aşağıda gösterilen mantığa göre yapılmıştır:101111 << 2 = R(R(101111) >> 2)) = R(111101 >> 2) = R(001111) = 111100

Page 12: KAFA Open-Source/Open-Implementation, 32-bit CPU

32-bit Çarpma Ünitesi• Bu ünite içerisinde iki 32-bit sayının çarpım işlemi hem pozitif hem de negatif sayılar için gerçeklenmiştir.

• İmplementasyonda bilinen çarpma işlemi mantığı kullanılmıştır: İlk sayı ikinci sayının her biti ile çarpılır ve her çarpma işlemi sonrasında kaydırma işlemi yapılır. Elde edilen tüm sayılar toplanır ve sonuç elde edilir.

• Bu ünite içerisinde yapılan toplama, çıkarma ve kaydırma işlemleri 64-bitlik sayılar üzerinde yapıldığı için 64-bitlik toplama-çıkarma ve kaydırma ünitesi tasarlanmıştır.

Page 13: KAFA Open-Source/Open-Implementation, 32-bit CPU

32-bit ile 1-bit Çarpma Ünitesi

• 32-bitlik bir sayının her bitinin 1-bit ile çarpıldığı 32-bitlik Çarpma Ünitesinin yapıtaşı olan ünitedir.

• Çarpma işlemi 32-bit için ayrı ayrı 32 adet AND işlemi yapılarak gerçekleştirilmiştir.

Page 14: KAFA Open-Source/Open-Implementation, 32-bit CPU

64-bit Toplama-Çıkarma Ünitesi• Bu ünite Çarpma Ünitesi içerisinde oluşturulan 64-bitlik sayıların toplanması için tasarlanmıştır.

• Yapıtaşı olarak 1-bitlik toplama çıkarma ünitesi kullanılmıştır.

Page 15: KAFA Open-Source/Open-Implementation, 32-bit CPU

64-bit Right Shifter Ünitesi

• Bu ünite içerisinde 64-bitlik bir sayının 5 katmanda 25-bitlik sağa kaydırma işlemi yapılmaktadır.

• Bu ünite Çarpma İşlemi sırasında yapılması gereken kaydırmaların gerçekleştirilmesi için ilk adım olarak tasarlanmıştır.

Page 16: KAFA Open-Source/Open-Implementation, 32-bit CPU

64-bit Total Shifter Ünitesi• Bu ünite içerisinde 64-bitlik bir sayının sağa ve sola kaydırma işlemleri yapılmaktadır.

• Sola kaydırma işlemi 32-bit Total Shifter Ünitesinde olduğu gibi Right Shifter kullanılarak yapılmıştır.

Page 17: KAFA Open-Source/Open-Implementation, 32-bit CPU

PC Güncellenme Detayı

• Görülen Program Counter Jump ve Branch olmadığı durumlarda Program ROM’u dörder satır ilerletmektedir. Jump veya Branch olduğu durumlarda yeni PC değeri PC’nin solunda ve üzerinde kalan kısımlarda hesaplanmaktadır.

Page 18: KAFA Open-Source/Open-Implementation, 32-bit CPU

Ana Kontrol Ünitesi

Ana Konrol Ünitesinde ALUda yapılacak işlemler için opcode ayrıştırılması, okunacak ve yazılacak dataları kontrol edecek değerlerin oluşturulması, Branch ve Jump gibi komutlara karar verilmesi gibi işlemler yapılmaktadır.

Page 19: KAFA Open-Source/Open-Implementation, 32-bit CPU

ALU Kontrol Ünitesi

ALU Konrol Ünitesinde ALUda yapılacak işleme karar verilmesi için gerekli olan 4-bitlik opcode Ana Kontrol Ünitesinden gelen ALUop, address değerinden alınan opcode ve function değerleri işlenerek yaratılmaktadır.

Page 20: KAFA Open-Source/Open-Implementation, 32-bit CPU

Memory Ünitesi Detayı

Memory Ünitesi Memory’ye kayıt ve Memory’den okuma işlemleri sırasında kullanılmaktadır. Okuma ve yazma işlemleri Ana Kontrol Ünitesi içerisinde üretilen değerler ile kontrol edilmektedir.

Page 21: KAFA Open-Source/Open-Implementation, 32-bit CPU

Branch Detayları

Branch komutunun yerine getirilip getirilmeyeceğine 4 farklı Branch Ünitesi içerisinde ayrı ayrı karar verilmektedir. Branch senaryosuna göre, ALU’dan gelen veriler bu üniteler içerisinde yorumlanır ve alınan karara göre PC değerinin update edilmesi için komut gönderilir.

Page 22: KAFA Open-Source/Open-Implementation, 32-bit CPU

Simülasyon

Simülasyon için Program ROM’a çalıştırılacak Assembly Kodu yüklenmiş ve Clock ilerlerken Register File, Memory ve Program ROM’daki değişiklikler izlenerek beklenen değerlerin elde edilip edilmediği incelenmiştir. Alınan değerler beklenen değerlerle aynıdır.

Page 23: KAFA Open-Source/Open-Implementation, 32-bit CPU

Simülasyon

Page 24: KAFA Open-Source/Open-Implementation, 32-bit CPU

Simülasyon

Page 25: KAFA Open-Source/Open-Implementation, 32-bit CPU

Simülasyon

Page 26: KAFA Open-Source/Open-Implementation, 32-bit CPU

Simülasyon• Simülasyonlar sırasında isteğe yönelik olarak hazırlanmış ya da C Kodundan compile edilerek hazırlanmış (.s formatında) Assembly Kodları kullanılmıştır. Örnek kodlar aşağıda verilmiştir.

ORI $14, $0, 4SLLV $11, $12, $14SRAV $11, $13, $14SRLV $11, $13, $12SW $29, 16($25)LW $10, 12($26)ORI $12, $28, 56...BEQ $29, $30, ARI1

#NO_APPori $29,$29,0ori $29,$30,0lw $30,0($29)addiu $29,$29,8jr $31.end putc.align 2.globl getc.ent getc.type getc, @function

Page 27: KAFA Open-Source/Open-Implementation, 32-bit CPU

Detaylı Bilgi İçin...

Bu sunum içerisinde projenin yalnızca temel noktalarına değinilmiştir. İşlemcinin dizaynı sırasında kullanılan prensiplerin, işlemcinin yapısının ve simülasyon verilerinin daha detaylı anlatımı hazırlamış olduğum rapor içerisinde bulunmaktadır.

Teşekkür ederim.