DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR 2012-2013 BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ DENEY #6 16 Bitlik R Tipi İçin ALTERA MAX-PLUS-II VHDL’de Tam Tek Saat Veri Yolu Birimi Amaç: Tek-Saat VHDL uygulamaları ile R-tipi komutları tanıtmak ve RISC veri yolunda çeşitli elemanların tepki süresini ölçmek. 1.Giriş Bu deneyde tek saat döngüsünde 16-bit very yolu üzerinde çalışacak R-tipi, I-tipi, ve L-tipi komutları gerçekleştireceksiniz. Figür 1-Bütün komutlar için tek dönüş veri yolu 1 Aşağıdaki tablolarda 16 bit komutunun tam seti özet olarak verilmiştir. Tablo 1- R tipi komutlarının genel sunumu Tablo 1.1- İşlem Kodu(Opcodes) Komutunun Karnough Map Sunumu Tablo 1.2- R Tipi Komutları İçin Fonksiyon Kodları R-tipi komutları And, Or, and Xor ile çalışır. Add ve Sub işaretli tamsayılar üzerinde çalışır. ShrA bir bit kaydırır ve ALU girişindeki işaretli biti tutarak bir bit sağa kaydırır. Slt eğer birinci kaynak ikinci kaynaktan daha az ise hedef komutu ayarlar. Jr atla dönüş komutudur ve ALU kontroldeki atla-dönüş-kapıları tarafından tespit edilir ve ALU sonucu PC-in girişine bağlar böylece kaynak1+kaynak2 için saat-kenar PC değeri değişir. I-tipi komutları Addi, Andi, Ori, Xori, Lw, Sw, Beq, and Bneq anlık işlenen 6-bite sahiptir ve bu anlık işlenen 16-bitlik değerler alan ayıracı tarafından bloklara ayrılır. L-tipi komutu olan Goto 12 bitlik uzun-işlenen adres alanına sahiptir. Bununla birlikte Call ve Lui diğer L-tipi komutlarıdır ve gidilecek yer olrak yazmaç-7 yi kullanırlar. Halt komutu devam sinyali gidene kadar programın yürütülmesini durdurur. 2 Komut Belleği (instruction memory) Komut belleği komutuna tıklayınca komut belleğinin içeriğine ulaşabilirsiniz. Vhdl dosyası komut belleğinin içeriğinin nasıl değiştiğini içerir. Komut belleği sadece 16-sözcük içerir. Vhdl dosyası içerisinde belleğin içeriğine karşılık gelen adresler ikili dizgiler (binary strings) olarak yazılıyor. Komutlar 4+6+6 karakter grupları şeklinde yazılır. İşlem kodunun 4 biti R tipi komutunda sıfırdır. Dosyanın içeriği aşağıdaki figürde açıklanmıştır. Şekil 1-2 Bellek Komutunun İçeriği Komut Alan Ayracı (Instruction field separator) Şematik editor içindeki lab.gdf dosyasında Instr_Fields alan ayırıcıdır ve blokları alanlara ayırır ve daha sonra tekrar isimlendirilir (bit grupları için OPC[3..0], RR1[2..0], RR2[2..0], RWT[2..0], FN[2..0], bununla birlikte kısa ve uzun alanlarla birlikte ve işaret genişletme ve 4-bit kaydırma olmadan). Bu birimler için VHDL açıklaması herhangi bir arabirim devresi olmayan bir sinyal bağlantısı şeklindedir. 3 Yazmaç Dosyası (Register File) Kayıt dosyası bloğu reg_filer bir senkron reset girişi ile döşenmiştir ve özellikle reset girişi yüksek olduğunda pozitif saat-kenarında her kayıt içeriğini ayarlar. I'inci yazmaç ayarlarında VHDL dosyasında sıfırla = '1 'durumu ile istenen değerin tmp_rf (i) içeriğini ayarlayarak bir başlangıç değeri için modifiye edilebilir. ALU ALU bloğu lab.gdf grafik dosyası içerisinde VHDL kod olarak yazılmıştır. VHDL kodu içerisindeki bu durum çoklayıcıya (multiplexer) karşılık gelir ve eklenti alt fonksiyonları en kompakt form olan MAXPLUS2 derleyicisi tarafından optimize edilmiştir. Tablo-4 16 bitlik fonsiyonlar için seçilen sel kodları Yukarıdaki ALU işlemleri (“sel kodları”) ile FN[2..0] alan komutunu fonksiyonunu belirlemek için direk olarak ALU’daki sel[2..0] girişlerine bağlayabiliriz. Analiz: Load-word komutunun çalışmasıyla ilgili aşağıda verilen zaman örnekleri gözlemlenebilir: 4 Figure 3- Zaman analizi için önemli zaman aralıkları a) Saat-dönüşü (clock-cycle) ( Tc: Saat kenarından(clock edge) saat kenarına) b) iPC+1 toplayıcı(adder) tarafından hesaplanır (TnPC: nPC’den PCin stabilizasyonuna) c) iPC+1 nPC, (TPC: saat kenarından nPC stabilizasyonuna) d) Komut belleği erişimi (TIM: nPC stabilizasyonundan stabilize edilen komuta) e) Komutların alanlara ayrılması (TIF: Sabit komuttan sabit alanlara) f) Reg[rr1] ve Reg[rr2] sabit olur, (TRR: sabit alanlardan sabit yazmaç içeriğine) g) ALU işlemin sonucunu ortaya koyar, (TALU: Sabit ALU girişlerinden sabit ALU sonuçlarına) h) ALU sonucu Reg[rwt]’ye yazılır, (Gözlemlenebilir değil, 2ns civarında) Aşağıdaki koşullar veriyolunun düzgün çalışabilmesi için her durumda (en kötü şartları da dahil olmak üzere) sağlanmalıdır. 5 2. Deneysel Uygulama Bölüm-1 Lw Komutu Bu bölümde lw komutunun 16 bitlik tek-döngü veri yolundaki zaman aralığını gözlemleyeceğiz. 1. Pc_clock oluşturmak için 2ns grid-step ve x40 çarpım faktörünü kullanacağız, bundan dolayı saat periyodu 160ns olacak. Program aşağıdaki gibi olmalıdır: VHDL koddaki komut belleğini control edin, düzeltmek gerekirse düzeltin ve projeyi derleyin. Simülatörü çalıştırın (grid size 2ns, pc_clock multiplied with 40) ve SCF dosyasını Waveformda gözlemlemek için açınız. 2. LW komutunun işlem kodu(opcode) 2’dir. Genel şemada opcode 2’yi bulun yakınlaştırın. Figure 4- Çalıştırılmış LW komutunun yakınlaştırılmış hali 870-980ns aralığına yakınlaştırdığınız zaman figure 3’ü göreceksiniz. Mümkün olan en küçük Tc periyodunu hesaplamak için gerekli işlemleri yapınız. 6 Bölüm-2 Dallanma (Branch) Komutu: Program içindeki beq dallanma komutudur ve işlem kodu (opcode) 6’dır. İşlem kodu 6 ile birlikte zaman aralığını bulunuz ve bu bölgeye mesafeyi ayarlayınız (1350ns den 1500ns ye kadar) Figür 5- BEQ komutu içerisindeki zaman parametreleri PC-in değerine karar verirken zaman kısıtlaması olanlar: Paralel kısıtlama hedef adres hesaplama yolunu yükseltir Eğer toplayıcı ALU-toplayıcısı ile aynı gecikme değerine sahipse dallanma hedef toplayıcı çıkışını gözlemlemeyeceğiz. Hesaplamalarınızda aşağıdakini varsayabilirsiniz: 7 Bölüm-3 Sonuç: Eğer analiz bölümünü tüm komutlar için tamamlarsak, her bir komut için muhtemel en düşük saat zaman sınırlamasını bulabiliriz. Döngüye başlamadan once hangi komutun nasıl çalışacağını bilemeyiz çünkü genel saat zamanı tüm komutların yürütülmesi için yeterince uzun olmalıdır. Bundan dolayı, her bir komut için minimum-saat-döngüsünü en fazla kullanmamız gerekir. Örneğin, eğer LW komutu için minimum 120ns gerekiyorsa ve BEQ komutu için minimum 105ns gerekiyorsa her iki komutun en yüksek olanını (max(120ns,105ns)= 120 ns) almamız gerekir. 8 İsim:__________________ Öğrenci No:__________________ DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ DENEY #6 Bölüm-2.1 LW Komutu: Tcmin için muhtemel en düşük saat periyodu nedir? Tcmin=...... Fcmax için muhtemel maksimum saat oranı nedir? Fcmax=...... Bölüm-2.2: Dallanma Komutu: Tcmin için muhtemel en düşük saat periyodu nedir? Tcmin=...... Bölüm-3 Sonuç: Yalnızca LW ve BEQ komutlarını düşünerek ve bölüm 2.1 ve 2.2 deki ölçülen en kötü durum aralığını alarak bu very yolu için maksimum saat frekansını hesaplayınız. Notlandırma: Deney performansı: 9
© Copyright 2024 Paperzz