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 #5 16 Bitlik R Tipi İçin ALTERA MAX-PLUS-II VHDL’de Tek Saat Veri Yolu Birimi 1.Giriş Bu deneyde sadece R Tipi komutlarına odaklanacağız bundan dolayı bazı temel yapı taşlarını gözlemleyeceğiz. Örneğin; program sayacı (program counter), komut belleği (instruction memory), yazmaç dosyası(register file), ve program sayacını güncellemek için toplayıcı(adder). Şekil 1- R Tipi Komutu İçin Tek Dönüş Veri Yolu Aşağıdaki tablolarda 16 bit komutunun tam seti özet olarak verilmiştir. Tablo 1- R tipi komutlarının genel sunumu 1 Tablo 1.1- İşlem Kodu(Opcodes) Komutunun Karnough Map Sunumu Tablo 1.2- R Tipi Komutları İçin Fonksiyon Kodları R-tipi komutları aşağıdaki tabloda listelenmiştir. Tablo 1.3- R tipi komutlarının işlem kodlarının (opcodes) ile birlikte sunumu 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 2 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. 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. 3 Figür 1-3 Yazmaç dosyası içeriğinin başlangıç değerleri 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. Figür 1.4 16 Bitlik ALU için VHDL Kodu 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. Yazmaçlı Adresleme Çoklayıcısı (Jump Register Multiplexer) Son olarak, bir çoklayıcı ALURESULT’dan PC’ye PCin[15..0] girişleri ile yazmaçlı adresleme komutunun uygulanması için bir veriyolu sağlar. ALURESULT ile PCIN’i bir sonraki komut adresini ayarlamak için ( ALUop1 + ALUop2 ) birbirine bağlar. Analiz: R tipi veriyolu için aşağıdaki zaman örnekleri gözlemlenebilir: 4 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 1. sccR041201.zip dosyasını indirin ve çıkarın. 2. Altera max plus II programını açın. 3. sccR041201 dosyası içinde File-->Open-->lab.gdf olarak açın. 4. File-->Project->Set Project to Current File seçeneğine tıklayın. 5. INSTR_MEMORY seçeneğine tıklayın ve bellekteki bütün komutları ikili biçimde görebilirsiniz. 6. sccR041201 dosyası içindeki File-->Open-->lab.scf file açın. 7. Daha sonra View-->Fit in Window seçeneğine tıklayın. Tek dönüş-R-tipi very yolunda tek saat uygulamasının çeşitli ayarlarını gözlemleyeceğiz. Buradaki beklentimiz ALU’nun FFFF+1’i ekledikten sonra bize en uzun gecikmeyi vermesidir. İlk üç komutu bellek komutunda kurunuz. When "0000000000000000"=>instr<="0000"&"000000"&"000000";-- 0 and $0,$0,$0 (nop) When "0000000000000001"=>instr<="0000"&"000001"&"110111";-- 1 slt $6,$0,$1 When "0000000000000010"=>instr<="0000"&"000110"&"001110";-- 2 sub $1,$0,$6 When "0000000000000011"=>instr<="0000"&"001110"&"001010";-- 3 add $1,$1,$6 Daha sonra bellek komutunu Vhdl kod olarak kaydediniz ve projeyi derleyiniz. Daha sonra projeyi çalıştırın (grid size 2ns, pc_clock multiplied :40) ve SCF dosyasını açınız. Figür 2.1- Çalıştırılmış R tipi komutunun SCF biçiminde genel görünümü 6 240ns yakınlaştırdığınız zaman aşağıdaki dalgayı (waveform) göreceksiniz. Bu dalga üzerinde: 1= TPC; 2=TnPC; 3=TIM; 4=TIF; 4=TRR; 5=TALU Benzer şekilde, time=400 için 0xFFFF+1=0x0000 eklediğimizde aynı dalgayı gözlemleyeceğiz. Figür 2-3 Toplam 0xFFFF+1 sıfır verir. Rapor sayfasında bu iki dalganın gecikmelerini yazınız. 1= TPC; 2=TnPC; 3=TIM; 4=TIF; 4=TRR; 5=TALU Atla-yazmaç komutu(jump-register instruction) çalışınca 1.20 s ile 1.28 s aralığında zoom yapın. Her çalıştırdığınız adımı rapor sayfasında açıklayınız. Örneğin; 1211ns’de PC 0x0008’de stabilize olur. 1222ns’de nPC=iPC+1’ye eşitken 0x0009’de stabilize olur. 7 İ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 #5 Bölüm-1: Tcmin için muhtemel en düşük saat periyodu nedir? Tcmin=...... Fcmax için muhtemel maksimum saat oranı nedir? Fcmax=...... Bölüm-2: 1200ns ile 1280ns zaman aralığında ne olur? Açıklayınız. Notlandırma: Deney performansı: 8
© Copyright 2024 Paperzz