mome tum proje grubu - mcu turkey · (l1) ve ikincil (l2) olmak üzere ikiye ayrılırlar. bu tür...

19
HAZIRLAYA MOMETUM PROJE GRUBU

Upload: others

Post on 12-Jan-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MOME TUM PROJE GRUBU - MCU Turkey · (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

HAZIRLAYA MOMETUM PROJE GRUBU

Page 2: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 2 -

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

Page 3: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 3 -

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:

Page 4: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 4 -

� 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.

Page 5: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 5 -

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

Page 6: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 6 -

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

Page 7: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 7 -

Ş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.

Page 8: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 8 -

Şekil-6 ; Fonksiyon Ünitesi

Page 9: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 9 -

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

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

Page 10: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 10 -

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) Register (DR)

Source (Kaynak) Register A (SA)

Source (kaynak) Register B (SB)

Tablo-3a) Register

18 12 11 8 7 4 3 0

Opcode Destination (hedef) Register (DR)

Source (Kaynak) Register A (SA)

Operand (OP)

Tablo-3b) Đmmediate

18 12 11 8 7 4 3 0

Opcode Destination (hedef) Register (DR)

Source (Kaynak) Register A (SA)

Source (kaynak) Register B (SB)

Tablo-3c) Jump and Branch

Şekil-8 Kontrol Ünitesi

Page 11: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 11 -

Ş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.

Page 12: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 12 -

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.

Ş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.

Tablo-4

Page 13: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 13 -

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)

Şekil-11,12 Đnstruction Decoder

Page 14: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 14 -

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)

Page 15: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 15 -

Đş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.

Page 16: MOME TUM PROJE GRUBU - MCU Turkey · (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

TTTeeekkk VVVuuurrruuuşşşllluuukkk ĐĐĐşşşllleeemmmccciii

- 16 -

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:

Page 17: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 17 -

Đş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-cpu-

central-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

Page 18: MOME TUM PROJE GRUBU - MCU Turkey · (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

TT Tee ekk k VV V

uu urr ruu uşş şll l uu u

kk k ĐĐ Đ

şş şll l ee e

mm mcc cii i

- 18

-

R

esim

-1 S

imul

asyo

n So

nuçl

arı

Page 19: MOME TUM PROJE GRUBU - MCU Turkey · (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

MMMOOOMMMEEENNNTTTUUUMMM PPPrrrooojjjeee GGGrrruuubbbuuu

- 19 -