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/