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