1.Giriş

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