cpu-turkey ´08 sanal risc İşlemci tasarımı
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 PresentationTRANSCRIPT
CPU-Turkey ´08
Sanal RISC İşlemci Tasarımı
CEBİRCİ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 Elektrik-Elektronik / Bilgisayar
Mühendisliği
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.
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)
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)
İ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
İş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)
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)
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)
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.
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)
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)
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)
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)
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)
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)
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.
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
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)
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)
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)
Ö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)