23
CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı CEBİRCİ CEBİRCİ

CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

  • Upload
    fisk

  • View
    48

  • Download
    0

Embed Size (px)

DESCRIPTION

CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı. CEBİRCİ. Proje Ekibi : Süleyman Yasin Dündar Serpil Dutar Danışman : Yrd. Doç. Dr. Rıfat Edizkan Akademik Destek : Eskişehir Osmangazi Üniversitesi - PowerPoint PPT Presentation

Citation preview

Page 1: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

CPU-Turkey ´08

Sanal RISC İşlemci Tasarımı

CEBİRCİCEBİRCİ

Page 2: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı
Page 3: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Proje Ekibi : Süleyman Yasin Dündar Serpil Dutar

Danışman : Yrd. Doç. Dr. Rıfat Edizkan

Akademik Destek :Eskişehir Osmangazi Üniversitesi Elektrik-Elektronik / Bilgisayar

Mühendisliği

Page 4: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Not : Bu sunumda “Cebirci” isimli çalışmanın anlatımına rehberlik etmek amaçlanmıştır. Detaylı bilgiler , test programları vb, Dökumanlar klasöründe bulunmaktadır. Gerekli görülen yerlerde bu klasördeki dosyalara atıflarda bulunulmuştur.

Page 5: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Mimari ÖzellikleriMimari Özellikleri 16 bit işlem uzunluğu 4k x (6+16) RAM boyutu 4 genel amaçlı yazmaç (B,C,D,E) Akümülator tabanlı mimari 2 yazmaçlı Yığın Belleği (Stack Memory as

a circular buffer)

Page 6: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Akümülator

(16-bit)

Genel amaçlı yazmaçlar

(B, C, D, E)

4K RAM

2 yazmaçlı Yığın Belleği

(Detay için; bkz. main.gif)

Page 7: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

İcra Edilebilen Komutlarİcra Edilebilen Komutlar Veri Transfer Komutları

LW, SW, MOV, MOVI Aritmetik Komutlar

ADD, ADDI, SUB, SUBI, Kontrol Komutları

NOP, HLT Dallanma Komutları

CALL, RETURN, BA, BEQ, BNE Mantıksal Komutlar

CMP, AND, ANDI, OR, ORI, NOT, XOR, XORI

Page 8: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

İşlem Kodlarıİşlem Kodları 22-bit Kelime uzunluğu vardır Herbir komut için 6-bit opcode

kullanılmıştır. 6-bit uzunluğundaki verilerle: 26 = 64 tane komut desteklenebilir.

( Detaylı bilgi için; bkz. İşlem Kodları.doc)

Page 9: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Kelime yapısıKelime yapısı

opcode(6-bit)

mem_select(1-bit)

reg_select(3-bit)

mem_address(12-bit)

0 : İşlenecek sayı genel yazmaçlardan (B,C,D,E) kullanılır

1 : İşlenecek sayı RAM’den kullanılır

Her komuta ait özel bir opcode vardır (bkz. İşlem Kodları.doc)

000 : RAM

001 : Reg_B

010 : Reg_C

011: Reg_D

100 : Reg_E

000h : REG

XXXh : Memory Adresi

(Detaylı bilgi için; bkz. Komut Yapıları.doc)

serpil
Page 10: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Kelime yapısı (immediate)Kelime yapısı (immediate)

opcode(6-bit)data(16-bit)opcode(6-bit)

data(16-bit)

Her komuta ait özel bir opcode vardır (bkz. İşlem Kodları.doc)

İşlem yapılması istenilen 16-bit veri direkt olarak buraya yazılır.

(Detaylı bilgi için; bkz. Komut Yapıları.doc)

Page 11: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Genel YazmaçlarGenel Yazmaçlar 16-bit uzunluğunda

genel amaçlı 4 adet genel yazmaç bulunmaktadır.Bu yazmaçlar ile program denetiminin kolaylaştırılması amaçlanmıştır.

Page 12: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Temel YazmaçlarTemel Yazmaçlar

AR (Address Register) : İşlenen komutun adres bilgisini saklar (12-bit)

IR (Instruction Register) : İşlenen kelimeyi saklar (22-bit)

DR (Data Register) : Anlık verileri saklar (16-bit)

(Detaylı bilgi için; Bkz. Cebirci(1)_genel_rapor.doc)

Page 13: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

AC (Accumulator)AC (Accumulator) İşlemcimiz AC tabanlı

çalıştığı için tüm işlemlerin sonucunda elde edilen veriler;

-ALU çıkışından,-Yazmaçlardan (register),-DR’den (data register)AC’ye yüklenir, AC’den; -RAM’e veya -ALU’ailetilir.

(Bkz. Cebirci(1)_genel_rapor.doc)

Page 14: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

RAM (Random Access Memory)RAM (Random Access Memory) RAM’in özellikleri;

4K 22-bit Program RAM’e yüklenir. D girişinden veri yazılır

ya da okunur. A girişinden istenilen

adres seçilir.

(Örnek çalışmayı görmek için bkz. video_0)(Bkz. Cebirci(1)_genel_rapor.doc)

Page 15: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Yığın Belleği (Stack Memory)Yığın Belleği (Stack Memory)

0f88ff90

Yığın belleği, CALL komutu kullanılırken atlanan adresleri kaydetmek için kullanılan dahili bir bellektir. İşlemcimizin yığın belleği 2 yazmaçlı olduğu için, iç içe çağırılan iki CALL döngüsü adresleri sırayla yığın belleği yazmaçlarında saklanır. Bu kısımda içsel dairesel tampon (circular buffer) tipinde hafıza birimi amaçlanmıştır bazı teknik sorunlardan dolayı hafıza birimi 2 yazmaç ile sınırlı kalmıştır.

stck_clk stck_slct çıkış

0 0 X

0 1 X

1 0 D0

1 1 D1

D0

D1

(Bkz. Cebirci(1)_genel_rapor.doc)

Page 16: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Komut Kod Çözücü (Command Komut Kod Çözücü (Command Decoder)Decoder)

CMD decoder

6 bit opcode add

movi

returnxorba

Kod çözücü, IR(instruction register) den gelen kelime bilgisine göre opcod’u çözümleyerek, işlenecek komutu ALU’ya tanımlamaktadır.

6-bit giriş 26 adet çıkış

(Bkz. Cebirci(1)_genel_rapor.doc)

Page 17: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Program Sayıcısı (PC Counter)Program Sayıcısı (PC Counter) Program sayıcısı, RAM’in

hangi adresten devam edeceğini yönetmektedir.

AR(adress register) ile irtibat içerisindedir gerekli komutlarda içeriğini AR ye aktarır veya AR den içeriğini günceller.

(Bkz. Cebirci(1)_genel_rapor.doc)

(Bkz. cpu_v39.circ)

Page 18: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Aritmetik Mantık Birimi (ALU)Aritmetik Mantık Birimi (ALU) 16_bit verilerle mantıksal ve aritmetik 14 komutu

çalıştırabilme. ‘Barrel Shifter’ yöntemi ile saat darbesi (clock)

gerektirmeyen kaydırma işlemi. 16_bit sayıları çarparak 32_bit çıkış elde etme.(Tek

darbe) 5 durum bayrağı : sıfır bayrağı, büyüktür bayrağı,

küçüktür bayrağı, eşittir bayrağı, taşma biti

Not: Kaydırma ve Çarpma komutlarının ALU tasrımları yapılmıştır fakat Kontrol Birimi tarafından bu komutların icrasını yönetecek sinyal üretimlerini henuz gerçekleştirilmemiştir.

Page 19: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

ALU Komut SetiALU Komut SetiCommand decoder

(CMD)(14-bit)

instruction

0 00000000000001 ADD

1 00000000000010 SUB

2 00000000000100 CMP

3 00000000001000 AND

4 00000000010000 OR

5 00000000100000 NOT

6 00000001000000 XOR

7 00000010000000 SLL

8 00000100000000 SRL

9 00001000000000 SLA

10 00010000000000 SRA

11 00100000000000 INC

12 01000000000000 DEC

13 10000000000000 MUL

Page 20: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

ALU Paket DevresiALU Paket DevresiNo Pin Adı Tanım Durum

1 A 16_bit veri giriş (16-bit)

2 B 16_bit veri giriş (16-bit)

3 CMD Düzenlenmiş komut devresi girişi giriş (14-bit)

4 shft_slct Kaydırma için seçilen basamk sayısı giriş (3-bit)

5 mul_least MUL işleminin en az değerlikli 16_bit çıkışı

çıkış (16-bit)

6 Q ALU çıkış portu çıkış (16-bit)

7 flags Durum bayrakları çıkış (5-bit)

Page 21: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

ALU Alt DevreleriALU Alt Devreleri

ADD, SUB, DEC, INC işlemlerini gerçekleştirir.

AND, OR, XOR, NOT işlemlerini gerçekleştirir.

Büyüktür, Küçüktür, Eşittir durum bayraklarını kontrol eder.

16x16=32 bit çarpma işlemi

CMD

SLL, SLA, SRL, SRA işlemlerini gerçekleştirir.

Düzenlenmiş komut devresidir. Devredeki seçici (select) bitlerin

kontrolünü gerçekleştirir.

(Bkz. Cebirci(1)_genel_rapor.doc)

Page 22: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Kontrol BirimiKontrol BirimiKontrol birimi işlemcinin tüm sinyallerinin üretildiği işlemcinin beyni niteliğinde olan kısımdır.

Bu birimde okunan komutun opcod’una uygun sinyaller üretilerek gerekli yazmaç transferleri ve işlemler yapılır.

Kontrol ünitesindeki bazı sinyalleme hataları; geciktirme (delay), kapı, vb.

birimlerle düzeltilmeye çalışılmıştır.

(Detaylı bilgi için; bkz. Cebirci(1)_genel_rapor.doc)

Page 23: CPU-Turkey ´08 Sanal RISC İşlemci Tasarımı

Örnek Kod ParçasıÖrnek Kod Parçası

Adres Komut HEX Kodu Açıklama

004 ADD 002000 // ACU=DCA0

005 ANDI 09484F // ACU=4800

006 SW 1A0100 // &100=4800

007 NOT 0C1000 // ACU=EB9E

008 SUB 028100 // ACU=A39E

009 MOV 103200 // REG_B=3537 REG_D-->REG_B

RAM adresi

RAM’e yüklenen kodlar

(Bkz. kod5.doc)

(Çalışan kod programını görmek için bkz. video_0, video_1)