HAZIRLAYA MOME TUM PROJE GRUBU
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii TEK VURUŞLUK ĐŞLEMCĐ 1. Öz Bu çalışmada, temel olarak en basit tek vuruşluk işlemci(single cycle computer) tasarlanmıştır. Tasarım Xlinx Webpack programında yapılmış olup simulasyonda ModelSim programı kullanılmıştır. Derleme işlemi ve blok elemanlar Virtex 5 serisi FPGA bordlara uygun olarak hazırlanmış ve derleme çıktıları buna göre alınmıştır. Öncelikle, CPU ve teknolojileri hakkında kısaca bilgiler verildikten sonra, tasarım aşaması anlatılmıştır. Üniteler tek tek tanıtıldıktan sonra sistem üzerindeki analiz ve yorumlar belirtilmiştir. Son olarak ana yapı oluşturulduktan, sonra örnek bir program (komut kümesi) üzerinden simule edilen programın simulasyon çıktıları verilmiştir. Çıktılar simulasyon raporları ile birlikte değrlendirilmiştir. 2.Giriş ve Altyapı 2.1 Tanımı: Đşlemci(Central Processing Unit(CPU) yâda Merkezi Đşlem Birim(MĐB)), bilgisayarın beyni niteliğindeki en önemli bileşendir. Giriş arabirimleri vasıtasıyla dış dünyadan gelen sayısal veya analog verileri alır. Bu verileri, belleğindeki programa göre işler ve gereken çıkış verilerini, kontrol edilmek istenen sistem, çıkış arabirimleri üzerinden gönderir. Merkezi işlem birimi aritmetik ve mantıksal işlem yapma yeteneğine sahiptir. Giriş ve çıkış birimleri arasında verilen program ile uygun çalışmayı sağlar. Makine dili denilen düşük seviyeli kodlama sistemi ile çalışır; bu kodlama sistemi bilgisayarın algılayabileceği operasyon kodlarından (opcode) oluşur. Bir mikroişlemcinin algılayabileceği kodların tamamına o işlemcinin komut kümesi denir. 2.2 Görevi Örnek olarak 2 ve 3 ü topla sonucu bana ilet komutu verildiğinde işlemci hemen aritmetik merkezini devreye sokar, işlemi gerçekleştirir ve sonucu bize iletir. Benzer şekilde özel bir yöntemle kodlanmış MP3 dosyalarını açar, işler ve gerekli veriyi ses kartına iletir. Kısacası hesaplaması veya karar verilmesi gereken her şeyde işlemci devreye girer Hesaplama işlemlerinde aritmetik, karar verilmesi gereken işlemlerde de mantık ünitesi devreye girer. Bugünkü Programlanabilir Lojik Denetleyicilerin komut kümeleri sayesinde aşağıda belirlenmiş fonksiyonların gerçekleşmesi mümkündür. 1) Veri işleme 2) Matematiksel dört işlem 3) Matris lojiği işlemleri 4) Çift hassasiyetli işlemler 5) Değişken bit uzunluğu öteleme ve döndürme 6) Zamanlayıcı (Tımer) ve sayıcı (Counter) birimleri 7) Alt program yürütme - 2 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu 8) Öncelikli kesme yapısı gerçekleştirebilme. 2.3 Yapısı Đşlemcilerin yapısı hiç bir mekanik parçası olmayan tamamen devreler ve transistörlerden oluşur. Đçlerinde milyonlarca transistor bulunur ve bu transistorlerin sayısı ne kadar fazla olursa işlemci o kadar hızlı olur. Đşlemcilerin hızları MHZ (MegaHertz) cinsinden ölçülür. Doğal olarak bu sayı ne kadar yüksek olursa, hızı da o kadar yüksek olur. 3-4 santimetrekare büyüklüğünde bir silikon tabaka içinde milyonlarca transistörden oluşurlar. Đşlemcilerin oluşturulmasını sağlayan sistem mikron teknolojisidir. Bu teknoloji sayesinde bir kaç santimetrekarelik bir alana milyonlarca transistor sığdırabilmek mümkündür. Günümüz işlemcileri 100, 133, 333 MHZ ve daha fazla veriyolu hızında (Veriyi iletme hızı) çalışabilmektedir. Bu hız değeri ne kadar yüksek olursa, işlemci de o kadar fazla veri iletebilir. Ancak hızı belirleyen asıl faktör frekanstır. Veriyolu hızı frekansın yanında pek fazla bir şey ifade etmemektedir. Bütün işlemciler bir ön belleğe sahiptirler. Bunlar birincil (L1) ve ikincil (L2) olmak üzere ikiye ayrılırlar. Bu tür belleklere Cache de denir ve 32 KB ile 512 KB (Kilobyte) arasında değişirler. Önceden yapılmış olan ve yapılmakta olan işlerin bu belleklerde geçici olarak tutulmasını sağlarlar. Bu sayede cache bellekte tutulan bu verilere daha hızlı erişim sağlanmış olunur. 2,4 Üniteler Đşlemci üzerinde komutları icra etme işini uygulama ünite si (execution unit) ya da fonksiyon ünitesi (function unit) adı verilen üniteler gerçekleştirir. Modern işlemcilerde değişik komut türlerini işletmek üzere birden fazla fonksiyon ünitesi bulunur. Çoğunlukla aritmetik/mantıksal ünite (arithmetic/logic unit) olarak da anılan tamsayı (integer) üniteleri tam sayılar ile ilgili işlemleri yapar. Kayan nokta ünitesi (FPU-Floating Point Unit) ise 5,21 gibi küsuratlı sayılarla ilgili işlemleri yapar. Bir mikroişlemcide ne kadar fazla fonksiyon ünitesi varsa aynı anda çalışabilecek komut sayısı da o kadar artar. Register seti; işlem anında bir program tarafından kullanılmakta olan sayıların saklandığı geçici hafıza hücreleridir. Farklı komut ve register setlerine sahip olan işlemciler birbirlerinin yazılımlarını çalıştıramazlar. Kontrol ünitesi ise komutların sıralanıp düzenlendiği bölümdür. Programlama işlemi asıl olarak bu kısımda uygulanır. 2.5 Tasarımı Merkezi işlem birimi tasarımı, bilgisayarın temel bileşenlerinden birisi olan Merkezi işlem birimini etkin kullanmayı yönelik bir tasarımdır. MĐB bilgisayar donanımının temel bileşenlerinden birisidir. Đşlemcisi olmayan bir bilgisayar düşünülemez. Bu yüzden işlemcinin tasarımı ne kadar iyi olursa sistem de o derece hızlı olacaktır. Đşlemciyi hızlandırmanın değişik yolları vardır. Bunlardan bazıları: Buyrukların paralel çalışmasını sağlamak Çok vuruşluk işlemciler kullanmak Boru hattı kullanmak Çoklu işleme kullanmak şeklinde sıralanabilir. Đşlemcinin hızlandırılmasında asıl önemli unsur buyruk başına çevrim süresini azaltmaktır. Đşlemci hızlarını karşılaştırırken saat sıklığına bakmak yanıltıcı olabilir. Örneğin, 2 GHz'lik saati olan bir işlemci ile 2.5 GHz'lik saati olan bir işlemci aynı programı eşit sürede çalıştırabilirler. MĐB tasarımını demek ayrıca şu birimlerin tasarımıyla da ilgilenmek demektir: - 3 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii Veriyolu Yazmaç ve Önbellek Denetim birimleri Saat çevirimi Mantık kapıları Bir işlemci tasarlanırken aşağıdaki temel ilkeler kullanılır: Yalınlık düzenden gelir Küçük olan hızlıdır Đyi tasarım fedakârlık ister Olağan durumu hızlandırılmalıdır Yalın bir işlemci hızlıdır. Đşlemcinin karmaşıklığı arttıkça işlemci yavaşlayacaktır. Çok büyük bir işlemcide veri iletimi daha uzun sürecektir, yani küçük işlemci hızlıdır. Đşlemcide yapılacak bir takım iyileştirmeler sistemi hızlandırabilir, bu değişikliği yapmak için yapılan fedakârlık ise yavaşlatabilir. Olağan bir durumu (mesela sürekli işlenen bir buyruğu) hızlı çalışır hale getiren bir değişiklik işlemcinin başarımını arttırabilir. MĐB tasarımında bazı temel mantıklar kullanılır. Bunlar: Yapısal olmayan rastgele mantık Sonlu durum makinaları Mikroprogramlama Programlanabilir mantık dizisi şeklinde sıralanabilir. Tasarım genel olarak aşağıdaki işlemleri kapsar: Đşlemci mimarisi ve başarım modellemesi Tasarım ve doğrulama Önemli bileşenlerin tasarımı (önbellek, yazmaç, AMB) Mantık kapılarının tasarımı Devre elemanlarının eşzamanlı çalışması Fiziksel tasarım Bütünleşebilirlik ve üretilebilirlik Đyi tasarlanmış bir işlemcinin özellikleri şunlardır: Yüksek başarım Düşük maliyet Az güç tüketimi Uyumluluk 2.6 Temel Đşlemci Türleri En basit ve temel işlemci olarak tek vuruşluk işlemci(single cycle computer) düşünülebilinir. Her bir buyruğun 4 bayt tuttuğu ve bellekte tek bir sözcük olarak tutulduğunu düşünürsek, tek vuruşluk bir işlemci, işlem yaparken aşağıdaki üç adımı kullanacaktır. Program sayacı tarafından belirlenen yazmaçtaki bilgiyi al ve buyruk belleğine yaz. Bu işlem simgesel olarak şu şekilde gösterilebilir. BB [[PS]] Eğer bellek bayt bayt adreslenmiş ise program sayacını 4 arttır. PS [PS]+4 Buyruk belleğinde tutulan işlemleri yap. - 4 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu Tek vuruşluk işlemcide çevrim zamanı uzundur. Buyruklar sıra ile işlendiği için en yavaş işlenen buyruk işlemci hızını belirleyecektir. Ayrıca işlemler tek bir vuruşla bitirilemeyebilir. Đkinci ve daha gelişmiş bir işlemci olarak çok vuruşluk işlemci görülür. Tek vuruşluk işlemcilerde ortaya çıkan sorunlar tasarımda değişiklik yapıp veriyolu sayısını arttırarak engellenebilir. Çok vuruşluk işlemcide: AMB hem adres hesabı hem program sayacını arttırmak için kullanılır. Denetim işaretleri sadece buyruk tarafından belirlenmez. Denetim için sınırlı durum makinası kullanılır. 3. Sistemin Tanıtımı Ve Calışma Prensibleri Bu çalışmada 16 bitlik veri yoluna haiz, 16 registerli, temel komutları koşturabilen, basit bir tek vuruşluk işlemci (Single cycle computer) tasarlanmıştır. Tasarım Xlinx Webpack programında VHDL dilinde yazılmıştır. Simulasyon ise ModelSim programı ile başarıyla gerçeklenmiştir. Đşlev olarak temel komutları gerçeklemesi beklenmektedir. Kod yazımında öncelikle her eleman compenent halinde tasarlanmıştır. Daha sonra bu compenentler birleştirilerek CPU oluşturulmuştur. Bu raporda, büün parçalar tek tek tanıtılmış, sentezlenmiş, kod yazımında kullanılan teknikler, varsa analiz ve incelemelere her bölümün içinde hepsi için özel olarak değinilmiştir. Ayrıca bazı modüller birden fazla şekilde hazırlanmıştır. Đstenilen parça aktive edilerek kullanılabilinir. Sistem klasik bir tek vuruşluk işlemci yapısındadır. Temel olarak 3 birimden oluşur. Bunlar: Veriyolu(Datapath) Hafıza elamanı(memory) Kontrol ünitesi(control Unit)dir. 3.1 Veriyolu Şekil-1; Veri Yolu - 5 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii Veriyolu alınan bilginin işlendiği kısımdır. Temel olarak 4 ana birimden oluşurlar.bunlar yazmaçlar(register file), multiplexer B, fonksiyon ünitesi, Multiplexer D olarak düşünülebilinir Yazmaçlar işlenilecek bilginin saklandığı kısımdır. Đçerisinde tasarıma göre değişecek boyut ve sayılarda yazmaç(register) bulunur. Bu çalışmada hazırlanan register file, 16 adet 16 bitlik yazmaca sahiptir. Register file ünitesinde, yazılacak bilginin, hangi adresteki yazmaca yazılacağını gösteren hedef adresi(destination adress-da) girişi, çıkışların hangi adresteki yazmaçlardan alınacağını gösteren A adresi ve B adresi (AA, BA) girişleri bulunur. Ayrıca registerdeki bilgileri sıfırlamak için CLR girişi kullanılır. Bununla beraber yazım işlemini kontrol eden RW girişi de bu ünitenin girişlerindendir. Registere file a yazma işlemi ancak RW girişinin lojik 1 olmasıyla gerçekleşebilir. Ayrıca yazmaç ünitesinde okuma işlemi yükselen kenarda gerçekleşirken yazma işlemi düşen kenarda yapılır. Yazmaç ünitesi hazırlanımında VHDL dilinde kod yazılırken 2 ayrı yöntem izlenmiştir. Đlk olarak yapı behavioral(davranışsal) olarak hazırlanmıştır. Ardından da aynı yapı, aynı işlevi görecek şekilde architectiral(mimarisel) olarak hazırlanmıştır. Bundaki maksat hangi yapının daha hızlı çalıştığını tespit edebilmektir. Sonuç iki yapının hız ve alan kullanım özelliklerinin hemen hemen aynı olduğu ve mimarisel tasarlanan ünitede daha az register kullanıldığından hızının ve alan kullanımının diğerinden çok az da olsa üstün olduğu gözlenmiştir. Şekil-2 ;Mimarisel Tasarıma ait Zamanlama Özetleri Şekil-3 ; Davranışsal Tasarıma ait Zamanlama Özetleri Şekil-4 ; Davranışsal ve mimarisel tasarımlara ait alan kullanım özetleri - 6 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu Şekil-5 ; Yazmaç Dosyası Mux B işlenecek bilginin dışarıdan mı yoksa reg file dan mı alınacağını seçer. Mux D ise reg file a gönderilecek bilginin hafıza elemanından mı yoksa fonksiyon ünitesinden mi alınacağına karar verir. - 7 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii Şekil-6 ; Fonksiyon Ünitesi - 8 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu Fonksiyon Adı Gösterim Kod Save A F=A 00000 Đncrement F=A+1 00001 A plus B A+B 00010 A plus B plus 1 A+B+1 00011 A plus not B A+B 00100 A minus B A+B +1 00101 Decrement A-1 00110 Save A A 00111 A and B A B 01000 A or B A B 01010 A xor B A B 01100 Complement A A 01110 Multiply AxB 01111 Save B B 10000 Shift Right lsrb 10100 Shift Left lslb 11000 Arithmetic Shift Right asrb 11001 Arithmetic Shift Left aslb 10101 Rotate Right rorb 11010 Rotate Left rolb 10110 Rotate With Carry Right RorcB 11011 Rotate With Carry Left RolcB 10111 Tablo-1 Fonksiyon Tablosu Fonksiyon ünitesi ise asıl işi yapan bölümdür. Gelen sinyali aritmetik, lojik veya kaydırma işlemlerine tabi tutarak işler. Yapısında bir adet aritmetik-lojik ünite(alu) ve bir adet kaydırıcı (Shifter) bulunur. ALU ise 2 ana bölümden oluşu, birincisi aritmetik işlemleri (toplama, çıkarma, arttırma vb.) yapan aritmetik ünitesi (AU) diğeri ise lojik işlemleri (and. or, xor vb.) gerçekleştiren lojik ünitesidir. Fonsiyon ünitesinin, yapılacak fonksiyonu seçen 5 bitlik FS girişi vardır. FS nin fonksiyon tablosu Tablo-1 ile verilmiştir. Fonksiyon ünitesinde kaydırma işlemleri yalnızca B adresinde yapılabilinir. Fonksiyon ünitesinin ayrıca 4 adet çıkışı vardır. Bunlar gerçeklenen işlemin sonucu hakkında yorum yapan çıkışlardır. Đşlemin sonucunda taşma varsa V çıkışı, elde varsa C çıkışı, işlemin sonucu negatif ise N çıkışı, 0 ise Z çıkışı lojik 1 verir. 0 iken lojik 1 verir. Veri yolunun hafıza elemanıyla bağlantıyı sağlayan adres out ve data out çıkışları bulunmaktadır. 3.2 Hafıza Elemanı Đşlenecek bilginin depolandığı ve işlenen bilginin tekrar kaydedildiği elemandır. Hafıza elemanı okuma-yazma işlevleri seçmek üzere RW girişi bulunmaktadır. Ayrıca bu elemanda veri yolunun adress out çıkışının bağlandığı adress in ve yine veri yolunun data out çıkışına bağlanan data in girişleri bulunmaktadır. Memory nin çıkışı ise seçilmek üzere mux d ye bağlanır. CLR girişi lojik 1 yapılarak memory sıfırlanabilinir. Çalışmada 2 adet hafıza elemanı tasarlanmıştır. Birincisi davranışsal olarak yazılmış, 2 ise VHDL kütüphanesinden blok olarak kullanılmıştır. Davranışsal olarak tasarlanan belleğin derleme aşaması oldukça uzun bir zaman almaktadır. Ayrıca bu şekilde kullanılan bellek, board üzerinde çok geniş bir alan kullanmaktadır. Blok bellek kullanıldığı durumda ise diğer şekilde çok büyük bir alan kaplayan bölüm tek bir elemanla oluşturulmuş olmaktadır. Ayrıca derlemem işlemi de oldukça ise sürmektedir. Bu projede hafıza elemanı olarak 64Kx16 lık RAM kullanılacaktı ve VHDL kodları buna göre yazıldı. Ancak davranışsal olarak tasarlanan belleğin derleme işleminde yaşanan zorluklar nedeniyle elemanın kapasitesi düşürülmek zorunda kalındı. Şekil-7 ; Bellek - 9 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii 3.3 Kontrol Ünitesi Đşlemlerin sıralandığı ve düzenlendiği bölümdür. 6 temel yapıdan oluşturulmuştur. Đlki komut hafızasıdır. Komut hafızasında koşturulacak komutlar sıralı olarak saklanır. Programlama işlemi bu elemanda yapılır. Hafıza elemanın giriş ve çıkış sayıları keyfidir. Giriş sayısı arttırıldıkça uygulanabilecek komut sayısı artar. Çıkışlar arttıkça ise koşturulabilinecek komut çeşidi arttırılabilinir. Bizim tasarımımızda 15 giriş ve 19 çıkışlı hafıza elemanı kullanılmıştır. Hafıza elemanının adres girişleri komutların tutulduğu adresi seçmekte kullanılır. Çıkışlar ise veri yolunun anlayamayacağı biçimde kodlanmıştır. Bu kodlar bir kod çözücüyle çözülerek veri yoluna uygulanır. Komut Bitleri Kontrol Kelimesi Bitleri Fonksiyon Tipi Tanımları Bit 18 Bit 17 Bit 16 MB MD RW MW PL JB Registerli ALU fonksiyonları 0 0 0 0 0 1 0 0 X Shifterli ALU fonksiyonları 0 0 1 0 0 1 0 0 X Registerdan memory e yazma 0 1 0 0 X 0 1 0 X Memory den okuma 0 1 1 0 1 1 0 0 X Sabitle ALU fonksiyonu 1 0 0 1 0 1 0 0 X Sabitle shifter fonksiyonu 1 0 1 1 0 1 0 0 X Şartlı dallanma 1 1 0 X X 0 0 1 0 Şartsız zıplama 1 1 1 X X 0 0 1 1 Tablo-2 Opcode Listesi Hafıza elemanında saklanan komutların ilk 7 biti işlem kodunu(opcode) belirtir. Đşlem kodlarının tasarımı tasarımcıya göre değişebilir. Bizim tasarımımızdaki opcodelarım işlem tablosu tablo-2 ile verilmiştir. Komutların geri kalan 12 biti ise komut formatına göre değişik görevler alabilir. Örnek olarak 3 komut formatı ve son 12 bitin görevleri aşağıda gösterilmiştir: 18 12 11 8 7 4 3 0 Opcode Destination (hedef) Source (Kaynak) Register (DR) Register A (SA) Tablo-3a) Register Source (kaynak) Register B (SB) 18 12 11 8 7 4 3 0 Opcode Destination (hedef) Source (Kaynak) Register (DR) Register A (SA) Tablo-3b) Đmmediate Operand (OP) 18 12 11 8 7 4 3 0 Opcode Şekil-8 Kontrol Ünitesi Destination (hedef) Source (Kaynak) Register (DR) Register A (SA) Tablo-3c) Jump and Branch Source (kaynak) Register B (SB) - 10 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu Şekil-9 Kontrol Ünitesi Tablo 3a da gösterilen komut tipi registerlar üzrinde işlem yaptırırken geçerlidir. Yani hem hedef hemde kaynak olarak reg file daki yazmaçlar kullanılıyorsa birinci komut tipi kullanılır. Tablo 3b ise immediate komut tipidir. Bu komut dışarıdan girilen sabit bir sayıyla işlem yapılacağı zaman kullanılır. Tablo 3c deki komut tipi jump and branch tipi olup bu formatta veri yolunda işlem yapılmaz. Zıplama ve dallanma işlemi komutların sıralamsı ile ilgili bir işlemdir. Zıplama işlemi bir adresten sonra koşulsuz olarak, bir sonraki adres değil de istenilen kadar sonraki adrese gitmek için kullanılır. Dallanma işlemi ise bunun şarta bağlı olanıdır. Komut hafızası da diğer hafıza elemanı gibi hem davranışsal olarak kullanılmış, hem de blok olarak kullanılmıştır. Kodlarda her ikisi de görülebilir ve istenilen RAM aktive edilerek kullanılabilir. Kontrol ünitesinin diğer bir elemanı program sayıcı(program counter-pc) dır. Program counter komut hafızasının adres girişlerine bağlanır yani bir sonraki komutun hangisi olacağını program counter belirler. Eğer program counter ın yükleme girişi lojik 0 olur ise program counter içeriğini bir arttırır yani hafızanın bir sonraki adresini adresler. Yükleme girişinin lojik 1 olduğu durumda ise counter içeriğini extend isimli elamanın içeriği ile toplayarak çıkış verir. Yani hafızanın yeni adresi bir sonraki adres değil extend in gösterdiği kadar sonraki adrestir. Bunu adına zıplama denir. Program sayıcının yükleme girişi ise dallanma konrolü isimli elemana bağlıdır. Diğer bir eleman olan dallanma kontrol (branch control) dallanmanın olup olmayacağına, eğer dallanma olacaksa onun şarta bağlı olup olmayacağına, eğer şarta bağlıysa hangi şarta bağlı olacağına karar verir. Branch kontrolün 4 girişine fonksiyon ünitesinin yorumlama çıkışları (V, C, N, Z) bağlıdır. Bunlar dallanma şartlarını gösterirler. Branch control ün diğer üç girişine ise PL, JB ve BC girişleri bağlıdır. PL(Program load) girişi dallanma yada zıplama olup olmayacağına karar verir. PL 1 iken JB 1 ise branch kontrolün çıkışı lojik 1 olur yani PC de yükleme yapılır. Başka bir değişle zıplama(jump) yapılır. - 11 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii PL 1 iken JB 0 ise koşula bağlı olarak dallanma yapılır. Dallanma yapılacak koşula ise BC karar verir. Dallanma koşul tablosu tablo-4 ile verilmiştir. Tablo-4 Şekil-10 Kontrol Ünitesi Branch kontrol isimli eleamnın çıkışı Boulean diliyle aşağıdaki gibi ifade edilebilinir: branch_out <= PL A D (selection OR JB) Kontrol ünitesinin diğer bir elemanı ise extend(sunucu) dur. Bu eleman zıplamanın kaç basamak ileri veya geriye yapılacağını PC ye bildirir. 8 bitlik girişlerinin ilk 4 biti komut hafızasının 11-8 arasındaki çıkışlarına, son 4 biti ise 3-0 arasındaki çıkışlarına bağlanır. Extend in çıkışı ise PC ile uyumlu olabilmesi için PC nin giriş biti sayısı kadar olmalıdır. Eksik kalan bitler extend tarafından doldurulur. Eğer extend in MSB(en değerli bit) i lojik 1 ise kalan bitler lojik 1 ile 0 olması durumunda ise lojik 0 ile doldurulur. Bu yolla çıkışın işareti korunmuş olunur. Zero-fill, kontrol üniteinin bir diğer elemanıdır. Komut hafızasında kullanılmış olan sabit bir sayıyı veri yoluna bağlar. Đmmediate komut tipinde de görüldüğü gibi, sabit sayı kullanımında kullanılacak sabit (operand) komutun son 4 bitine yerleştirilmiştir. Bu çıkışlar veri yolunun MUX B sine bağlanırken eksik bitler olacaktır çünkü operand 4 bitlikken multiplexer 16 bitliktir. Eksik kalan bitler ise zero-fill tarafında 0 ile doldurulur. Bu şekilde operand veri yoluna uyumlu hale getirilmiş olunur. Kontrol ünitesinin son elemanı komut çözücü (instruction decoder)dır. Komut çözücü komut hafızasında bulunan komutları veri yolunun anlayacağı dile çevirir. Komut çözücü opcode ları hazırlanma tarzına göre keyfi olarak tasarlanabilir ve opcodelarla yakın bir ilişki içindedir. Komut çözücünün iç yapısı tablo-2 ye göre düzenlenir. Şekil-8 ile komut çözücünün iç yapısı görülmektedir. - 12 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu Şekil-11,12 Đnstruction Decoder 4.Yazılım Bazında Simulasyonlarla Sistemin Đncelenmesi Tasarımın simulasyonu ModelSimXE III 6.0a isimli programda yapılmıştır. Simulasyon için, en temel bilgisayar kodlarını içeren aşağıdaki program koşturulmuştur. 1) Đşlem: R1 0011 Adres:1 Tanım: Movi-Move data (immediate) Kod: "1010000000100000011" when "000000000000000", --70103 2) Đşlem: R2 0101 Adres:2, Tanım: Movi-Move data (immediate) - 13 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii Kod: "1010000001000000101" when "000000000000001", -5 3) Đşlem: R3 R1+R2 Adres:3 Tanım: Add Addition Kod: 0000010001100010010" when "000000000000010", 4) Đşlem: R4 R3+ 0001 Adres:4 Tanım: Addi Addition (immediate) Kod: "1000010010000110001" when "000000000000011", 5) Đşlem: R5 R4-0011 Adres:5 Tanım: Subi Subtraction (immediate) Kod: "1000101010101000011" when "000000000000100", 6) Đşlem: R4 R5-R1 Adres:6 Tanım: Sub Subtraction Kod: "0000101010001010001" when "000000000000101", 7) Đşlem: R5 R3 AND 1111 Adres:7 Tanım: Andi AND (immediate) Kod: "1001000010100111111" when "000000000000110", 8) Đşlem: R10 R1 AND R2 Adres:8 Tanım: And AND Kod: "0001000101000010010" when "000000000000111", 9) Đşlem: R6 R4 OR R1 Adres:9 Tanım: Or OR Kod: "0001010011001000001" when "000000000001000", 10) Đşlem: R6 R1 OR 1111 Adres:10 Tanım: Ori OR (immediate) Kod: 1001010011000011111" when "000000000001001", 11) Đşlem: R7 NOT R4 Adres:11 Tanım: Not NOT Kod: "0001110011101000000" when "000000000001010", 12) Đşlem: R6 R1 R10 Adres:12 Tanım: Xor XOR Kod: "0001100011000011010" when "000000000001011", 13) Đşlem: R4 R1 1111 Adres:13 Tanım: Xori XOR (immediate) Kod: "1001100010000011111" when "000000000001100", 14) Đşlem: If [R2= 0 ] then NA=16 Adres:14 Tanım: Beq Branch if equal to 0 Kod: "1100011000000100011" when "000000000001101", 15) - 14 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu Đşlem: If [R8= 0 ] then NA=20 Adres:15 Tanım: Beq Branch if equal to 0 Kod: "1100011000010000110" when "000000000001110", 16) Đşlem: If [R8 0] then NA=25 Adres:21 Tanım: Bne Branch if not equal to 0 Kod: "1100111000010000101" when "000000000010100", 17) Đşlem: If [R2 0] then NA=26 Adres:22 Tanım: Bne Branch if not equal to 0 Kod: "1100111000000100101" when "000000000010101", 18) Đşlem: NA=30 Tanım: Ba Branch always Adres:27 Kod: "1110000000000000100" when "000000000011010", 19) Đşlem: R3 sl R5 Adres:31 Tanım: Sll Logical shift left Kod: "0011000001100000101" when "000000000011110", 20) Đşlem: R2 sr R3 Adres:32 Tanım: Srl Logical shift right Kod: "0010100001000000011" when "000000000011111", 21) Đşlem: M [R2] R1 Adres:33 Tanım: Sw Store word Kod: "0100000000000100001" when "000000000100000", 22) Đşlem: R6 M [R5] Adres:34 Tanım: Lw Load word Kod: "0110000011001010000" when "000000000100001", 23) Đşlem: R2 R6 Adres:35 Tanım: Mov Move data between registers Kod: "0000000001001100000" when "000000000100010", 24) Đşlem: NOP Adres:36 Tanım: Nop No operation Kod: "1100000000000000001" when "000000000100011", 25) Đşlem: HALT Adres:37 Tanım: Hlt Halt Kod: "1110000000000000000" when "000000000100100", Yukarıdaki 25 komut koşturulduğunda elde edilen sonuç resim-1 ile gösterilmiştir. Simulasyonda giriş olarak yalnızca üç elemanın CLR girişleri verilmiştir. En başta CLR verilerek sıfırlanmışlardır. Görüleceği gibi simulasyon 25 komutlu programı başarıyla koşmuştur. - 15 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii 5. Sonuçlar Basit bir tek vuruşlu işlemci yapılarak simulasyonu yapıldı. Bu sayede en basit yapıdaki bir işlemin yapısı, tasarımı, çalışma prensipleri daha iyi anlaşıldı. VHDL ile çalışılması bu dili daha iyi kullanma becerisi kazanıldı. Ayrıca daha detaylı ve gelişmiş bir proje tasarımı için gerekli önbilgiye sahip olundu. Tasarıma özel sonuçlara gelince: tasarlanan sistemin kaynak kullanımı şöyledir: - 16 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu Đşlemcinin zamanlama raporu ise şu şekilde alınmıştır: 6.Referanslar Logic and Computer Design Fundamentals, M.Morris Mano, Charles Kime, Prentice Hall 2nd Edition, 2000. Digital Systems 2, EEE 222 Course Notes, Prof.Dr. Đrfan ALAN, 3rd Edition Circuit Design with VHDL,Volnei A. Pedroni,MIT Pres,Cambridge, Massachusetts, London, England http://tr.wikipedia.org/wiki/cpu, http://tr.wikipedia.org/wiki/m%c4%b0b_tasar%c4%b1m%c4%b1 http://www.msxlabs.org/forum/bilgisayar-bilesenleri-hardware/20985-cpucentral-processing-unit-merkezi-islem-birimi.html http://www.systemdizayn.com/board/showthread.php?t=247 Dıgıtal Sımulatıon And Processor Desıgn, Davıd Currıe, St John s Colleg - 17 -
TTeekk VVuur ruuşşl lluukk Đşşl Đ lleemcci ii Resim-1 Simulasyon Sonuçları - 18 -
MOOMEENNTTUUM PPr rooj jjee GGr ruubbuu - 19 -