Transcript USTURLAB

USTURLAB
Marmara Ünv. Bilgisayar
Mühendisliği Bölümü
Temel Özellikler
•
•
•
•
16 bit veri yolu
32 bit adres yolu
32 genel amaçlı register
JAL 8 clock cycle, LD / ST ve MUL
(signed) 3 clock cycle, kalan bütün
komutlar 2 clock cycle.
• (JAL dışındaki) tüm komutlar 1-2 word
uzunluğunda. JAL 3 word uzunluğunda
Komut Setinin Özellikleri
• Sysenter dışındaki bütün komutlar
gerçeklendi.Sysenter Linux bazlı
sistemlerde kullanıcı modundan kernel
moduna geçişte kullanılıyor. İşlemcimizde
memory management (paging) ve
ayrıcalık seviyeleri olmadığı için bu
komutu kullanmadık.
• Daha hızlı çalışan ek komutlar ekledik.
Genel mimari
• ALU
• Kontrol ünitesi (microprogramlı)
• Adresleme ünitesi ( addresleme modu
hesapları için )
• Register bankası (32 16-bit register)
• PC (program counter), DR (data register)
• LO, HI registerleri (çarpma operasyonu
için – MIPS gibi )
LD ve ST komutları
• USTURLAB LD /ST mimarisinde
tasarlandı. Ana belleğe sadece LD ve ST
komutlarıyla ulaşılıyor.
•
•
•
•
LD reg1, reg2, reg3, disp
reg3 <- M( [ reg1 : reg2 ] + sign-ex(disp) )
disp işaretli 11-bitlik bir sayı
ST operasyonu da aynı şekilde çalışıyor.
Addresleme Modu
• Önceki saydamda gösterilen adresleme
modu en karışık array / struct işlemlerini
gerçekleyebilecek şekilde seçildi.
A[i+1] = A[i] + A[i-1]
A[i-1].salary , A[i].age
gibi nispeten karmaşık C yapıları bu
adresleme moduyla kolaylıkla makina
koduna çevrilebilir.
Akış kontrol komutları
• Bütün akış komutları PC-göreli olarak
tasarlandı (relocatability için).
• İki temel akış kontrol komutu var: JPL,
JPS
• JPL (long jump): JPL xyz
PC <- (address of JPL instruction+1) +
sign-extend-to-32-bits( xyz )
• xyz 26 bitlik işaretli sabit bir sayı.
• JPS (Short Jump): JPS xyz
xyz 10-bitlik işaretli bir sayı.
PC <- PC + sign-extend-to-32-bits( xyz )
JPL uzun sıçramalar yapma olanağını
veriyor, ama yavaş ve hafızada çok yer
tutuyor. Programlardaki sıçramaların çoğu
kısa mesafelere yapıldığı için JPS (3
yerine 2 clock cycle, 2 yerine 1 word
uzunluğunda) avantaj sağlıyor.
Şartlı akış kontrolü komutları
• XOR operasyonuyla set edilen sıfır
bayrağını kullanıyorlar
• Bu komutların da short ve long versiyonları
var:
• JPLZ, JPLNZ
• JPSZ, JPSNZ
Fonksiyon çağırma
• JAL (jump and link) operasyonu. Aynen
MIPS te olduğu gibi çalışıyor:
JAL reg1, reg2, addr(32-bit):
Reg1<- LOW(PC+2)
Reg2 <- HIGH(PC+2)
PC<- addr //resolv’d by linker
• JR tam tersini yaparak fonksiyondan
dönüyor
ALU komutları-1
• Register - register: ADD, SUB, MULI,
MUL, AND, OR, XOR, SLL, SRL, SLA,
SRA, MOV
• OPR reg1, reg2 : reg1 <- reg1 opr reg2
Örnek: MOV reg1,reg2 : reg1 <- reg2
SUB reg1,reg2: reg1 <-reg1-reg2
ALU komutları-2
• İmmediate : ADDI, SUBI, MULI, MULI,
MULUI, MOVI, ANDI, ORI, XORI.
• OPR reg1, reg2, amt :
reg1 <- reg2 opr amt
• amt 16 bitlik işaretli bir sayı
• Immediate ALU komutları fazladan bir
hafıza erişimi gerektiriyor ve hafızada bir
word daha fazla yer tutuyorlar.
ALU komutları-3
• ADDI ve SUBI çoğunlukla küçük sayılar
için kullanıldığından bu komutların sadece
küçük sayılar için çalışan daha hızlı
versiyonlarını da komut setimize ekledik:
• ADDIS, SUBIS aynı INC ve DEC
operasyonlar gibi çalışıyor, ancak (-1, +1)
yerine 6 bitlik işaretli sayıları kullanıyor.
ALU komutları-4
• Dört çarpma komutu var : MUL, MULU,
MULI, MULUI
• Çarpma operasyonları 32 bit sonuç verdiği
için sonuçlar LO ve HI isimli iki 16 bitlik
özel registera atılıyor.
• Daha sonra bu sonuçlar MOV reg, LO ve
MOV reg, HI özel MOV komutlarıyla
istenilen genel amaçlı registera getiriliyor.
Tasarımımızdaki Eksiklikler
•
•
•
•
Byte operasyonları yok
Nonaligned hafıza erişimi yok
Overflow bayrağı yok
Sıfır bayrağı şu anda sadece XOR ile set
ediliyor ( CMP operasyonu). ADD ve SUB
gibi operasyonlarla da set edilebilmeli.
• Stack yok
• Kesmeler yok
Test Programı-1
• Usturlabı test etmek için kısa bir program
yazdık.
• Program bellekte 64KWord’den başlayan
5 wordluk alana 1, 2, 3, 4, 5 yazıyor.
• Program şartlı sıçramaları, ALU
operasyonlarını (ADD, XOR), MOV ve ST
komutlarını test ediyor.
Test programı-2
•
Movi reg3, 1
•
Movi reg1, 1
•
Movi reg2, 0
• Loop St [reg1:reg2]+0, reg3
•
Addis reg2, 1
•
Addis reg3, 1
•
Xori reg3, 5
•
Jpstz Loop
•
Halt
8460 0001
8420 0001
8440 0000
0822 0003
4841
4861
94a2 0005
1bf9
3c00
Test Programı-3
• Test programının çalışması (bazı ek
mimari bilgileriyle beraber) bu klasördeki
usturlab mimarisi.vmw klibi ile belgelendi.
Şu noktada bu klibi seyredeblirsiniz.
• Klipte açıkça görülebildiği gibi CPU’nun
çalışmasında bazı problemler var.
• Bu hatalar bizim CPU tasarımımızdan
ziyade Logisim’den kaynaklanıyor!
Problemler ve Sebepleri-1
• Usturlab’ın hatalı sonuç ürettiği bir işaretli
çarpma işlemi carpma hatasi.wmv
klibinde analiz edildi. Şu noktada bu klibi
izleyebilirsiniz.
• Klipte, çarpma hatasının ALU içindeki bir
OR kapısının hatalı çalışmasından
kaynaklandığı açıkça görülüyor. Yani hata
Logisim kaynaklı.
Problemler ve Sebepleri-2
• Programlar genellikle doğru çalışıyor.
• Ancak daha önce birçok kez doğru
çalışmış bir program hatalı çalışabiliyor.
• Yaptığımız analizlerde bu hataların
Logisim kaynaklı olduğunu saptadık.
• Hatalar genellikle ALU’daki veya
adresleme ünitesindeki bir kapının yanlış
çalışmasından kaynaklanıyor.
Problemler ve Sebepleri-3
• Logisim’de gözlemlediğimiz bu problemi
başkaları da gözlemlemiş.
• Sourceforge’deki Logisim sitesinde
“Logisim sometimes calculates incorrect
value with basic gate” başlığı altında bug
report’lar var.
• http://sourceforge.net/tracker/index.php?fu
nc=detail&aid=1938274&group_id=14327
3&atid=755041
Problemler ve Sebepleri:Sonuç
Dizaynımızın doğru çalıştığına ve hataların
tümüyle Logisim kaynaklı olduğuna
inanıyoruz.
Sunumumuza zaman ayırdığınız
için teşekkür ederiz!
Sorularınız varsa:
Mehmet Baran : 0532 243 85 49
Kaynaklar-1
• John Carpinelli, Computer Systems
Organization and Architecture
• David A. Patterson and John L. Hennessy
Computer Architecture
• The Art of Assembly Language
Chapter 5: Instruction Set Architecture
http://webster.cs.ucr.edu/AoA/Windows/HTM
L/ISA.html
Kaynaklar-2
• Morris Mano Digital Design
• Intel® 64 and IA-32 Architectures Software
Developer's Manuals
http://www.intel.com/products/processor/ma
nuals/