BİL 361 BİLGİSAYAR MİMARİSİ VE ORGANİZASYONU Güz Dönemi ÖDEV 1

Benzer belgeler
K uark projesi. Temel Özellikler :

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. İşlenenin Yeri. Örnek MİB Buyruk Yapısı. İvedi Adresleme. Adresleme Yöntemleri. Bellek. Kütükler.

Hem lw hem de sw komutlarının ofseti 16-bitlik işaretli tamsayıdır.

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

KASIRGA 4. GELİŞME RAPORU

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

BM-311 Bilgisayar Mimarisi

MİKROİŞLEMCİ MİMARİLERİ

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

Komutların Yürütülmesi

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

BM-311 Bilgisayar Mimarisi

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ DENEY #6

KASIRGA -4 Buyruk Tasarımı Belgesi Ankara

Mikroçita. Mikroçita Rapor 2:

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB Altbirimleri. Durum Kütüğü. Yardımcı Kütükler

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Bilgisayar Organizasyonu BIL

BLM1011 Bilgisayar Bilimlerine Giriş I

BİLGİSAYAR MİMARİSİNDE YENİ YAKLAŞIMLAR DÖNEM PROJESİ

BM-311 Bilgisayar Mimarisi

TBİL-405 Mikroişlemci Sistemleri Bölüm 2 1- % %01010 işleminin sonucu hangisidir? % %11000 %10001 %10101 %00011

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BM-311 Bilgisayar Mimarisi

BİL 423 Bilgisayar Mimarisi 1. Ara Sınavı

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Bilgisayar Mimarisi ve Örgütleşimi (COMPE 331) Ders Detayları

Komut Seti Mimarisi (ISA)

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

MUTLAK DEĞER Test -1

SPARC v8 İŞLEMCİ SİMÜLASYONU

Buna göre, eşitliği yazılabilir. sayılara rasyonel sayılar denir ve Q ile gösterilir. , -, 2 2 = 1. sayıdır. 2, 3, 5 birer irrasyonel sayıdır.

BM-311 Bilgisayar Mimarisi

İşletim Sistemlerine Giriş

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

Bilgisayar Mimarisi Nedir?

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

Mikrobilgisayar Sistemleri ve Assembler

SAYISAL ELEKTRONİK. Ege Ü. Ege MYO Mekatronik Programı

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

Math 103 Lineer Cebir Dersi Final Sınavı

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

Mimari. risi. Yazar: İşlemci Mimar. bulunmasını istediğimiz. mimariyi. Şekil 1

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

TAM SAYILAR. Tam Sayılarda Dört İşlem

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

HSancak Nesne Tabanlı Programlama I Ders Notları

Ders - 1. BİL 221 Bilgisayar Yapısı GİRİŞ. Ders Hakkında. Ders İzlencesi

ALGORİTMA VE PROGRAMLAMA II

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

PASCAL PROGRAMLAMA DİLİ YAPISI

Math 103 Lineer Cebir Dersi Final Sınavı

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

DSP DONANIMI. Pek çok DSP için temel elemanlar aşağıdaki gibidir.

Mikroişlemciler ve Assembler Programlama. Teknoloji Fakültesi / Bilgisayar Mühendisliği Öğr.Gör. Günay TEMÜR

BM-311 Bilgisayar Mimarisi

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

Şekil. 64 Kelimelik Yığıtın Blok Şeması

Değişken içeren ve değişkenlerin belli değerleri için doğru olan cebirsel eşitliklere denklem denir.

Elektronik sistemlerde dört farklı sayı sistemi kullanılır. Bunlar;

5.2 Komut Biçimleri Komut Setleri İçin Tasarım Kararları

Final Sınavı Soruları Bahar 2018

Bileenler arasndaki iletiim ise iletiim yollar ad verilen kanallar yardm ile gerçekleir: 1 Veri Yollar 2 Adres Yollar 3 Kontrol Yollar

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

DENEY 4: TOPLAYICILAR, ÇIKARICILAR VE KARŞILAŞTIRICILAR

Mikroişlemciler (EE 208) Ders Detayları

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Yığın MİKROİŞLEMCİ SİSTEMLERİ. Yığın. Örnek MİB için Yığın. Yığma İşlemi. Çekme İşlemi

MATEMATİK ÜSLÜ SAYILAR. Tam Sayıların Tam Sayı Kuvveti. Üslü sayı, bir sayının kendisi ile tekrarlı çarpımıdır.

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Yrd. Doç. Dr. Caner ÖZCAN

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Yrd. Doç. Dr. Caner ÖZCAN

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BMT 101 Algoritma ve Programlama I Güz Dönemi. Yük. Müh. Köksal Gündoğdu 1

Ağaç (Tree) Veri Modeli

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Cebir Notları. Gökhan DEMĐR, ÖRNEK : A ve A x A nın bir alt kümesinden A ya her fonksiyona

BİL1001 Bilgisayar Bilimlerine Giriş 1

8. MİKROİŞLEMCİ MİMARİSİ

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

MODÜLER ARİTMETİK Test -4

Anakart ve Bileşenleri CPU, bellek ve diğer bileşenlerinin bir baskı devre (pcb) üzerine yerleştirildiği platforma Anakart adı

Sayısal İşaret İşleme Dersi Laboratuvarı

Mikroişlemcilerde Aritmetik

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

Transkript:

BİL 361 BİLGİSAYAR MİMARİSİ VE ORGANİZASYONU 2015-2016 Güz Dönemi ÖDEV 1 Son Teslim Tarihi/Saati : 07.10.2015/18:00 Teslim Yeri : Teknoloji Merkezi, 217 Uyarı: Bu ödevdeki soruları öğrenciler kişisel çabalarıyla cevaplamalıdır. Grup halinde ödev hazırlanması, çözümlerin tamamen veya kısmi olarak dersi alan veya almayan başka herhangi biri tarafından yapılması durumunda, bu öğrenciler ödevde kopya çekmiş sayılacak ve gerekli işlemler yapılacaktır. Soru 1 (2 + 8 = 10 puan) Küçüğü Başta (Little Endian) ve Büyüğü Başta (Big Endian) cesitli mimarilerde kullanılan iki veri adresleme formatıdır. Bu soruda sizden istenen, bu iki formata göre verilen sayının bellekte hangi adreslerde saklanacağını göstermenizdir. a) 10 tabanındaki 1007708173 sayısını 16'lık tabana dönüştürün. (1007708173) 10 = (3C10680D) 16 b) 16'lık tabandaki sayı üzerinde her byte'ın karşılık geleceği adresi Küçüğü Başta ve Büyüğü Başta gösterimlerine uygun olarak ayrı ayrı 0-3 arasında numaralandırın. Küçüğü Başta Büyüğü Başta 3C 10 68 0D 3 2 1 0 0 1 2 3 Soru 2 (15 + 25 = 40 puan) 2GHz minimum saat vuruş sıklığına (frekans) sahip fakat işlemcide bulunan 2 çekirdekten sadece biri işlem yaparken vuruş sıklığını 3GHz'ye kadar çıkaran bir işlemciniz vardır. Çekirdekler üzerinde çalıştırılan yazılımın 4 aşamada çalıştırdığı i) toplam buyruk sayısı, ii) buyruk tipleri ve iii) her bir buyruk tipinin o aşama için toplam buyruk sayısına oranı aşağıdaki şekilde verilmiştir. Ayrıca her buyruk tipi için işlemcinin buyruğu kaç çevrimde tamamladığı bilgisi aşağıdaki tabloda verilmiştir. 1

Buyruk Tipi Aritmetik 3 Kayan Nokta 10 Dallanma 3 Sakla-Yükle 20 Çevrim Sayısı Buna göre; a) Programın tamamının çalıştırılması durumunda toplam Buyruk Başına Çevrim (BBÇ) her bir çekirdek için kaç olur? (Çekirdek boştayken buyruk işlemiyor) Toplam çevrim sayısını işlenen toplam buyruk sayısına bölerek BBÇ'yi bulabiliriz. Dikkat edilmesi gereken nokta çekirdekler boştayken geçen çevrimlerin hesaba katılması gerektiğidir. Aşamalarda işlenen buyruk sayıları sırasıyla R 0, S 0, T 0, Q 0 olsun. Aynı şekilde Çekirdek 1 için aşamalardaki buyruk sayılarını R 1, S 1, T 1, Q 1 olarak adlandıralım. Bazı aşamalardaki buyruk sayıları zaten verilmiş. Bunlar şu şekildedir: R 0 = 1.5x10 9, S 0 = 1x10 9, T 0 = 0, Q 0 =? R 1 = 0, S 1 =?, T 1 = 0.5x10 9, Q 1 = 2x10 9? işareti ile belirtilen buyruk sayıları çözümün devamında hesaplanacaktır. Her bir aşamada geçen çevrim sayısını hesaplamak için buyruk türüne ait buyruk sayısını o buyruk türünün işlem süresiyle çarpmamız gerekir. Çekirdek 0 için; Aşama 1 Çevrim Sayısı = 3x0.4R 0 + 10x0.05R 0 + 3x0.1R 0 + 20x0.45xR 0 = 11R 0 Aşama 2 Çevrim Sayısı = 3x0.4S 0 + 10x0.45S 0 + 3x0.05S 0 + 20x0.1S 0 = 7.85S 0 Aşama 3 Çevrim Sayısı = Çekirdek 1 Aşama 3 Çevrim Sayısı 2

Aşama 4 Çevrim Sayısı = Çekirdek 1 Aşama 4 Çevrim Sayısı Çekirdek 1 için; Aşama 1 Çevrim Sayısı = Çekirdek 1 Aşama 1 Çevrim Sayısı Aşama 2 Çevrim Sayısı = Çekirdek 1 Aşama 2 Çevrim Sayısı Aşama 3 Çevrim Sayısı = 3x0.3T 1 + 10x0.3T 1 + 3x0.3T 1 + 20x0.1T 1 = 6.8T 1 Aşama 4 Çevrim Sayısı = 3x0.55Q 1 + 10x0.1Q 1 + 3x0.2Q 1 + 20x0.15Q 1 = 6.25Q 1 Çekirdek 0 Toplam BBÇ = Toplam Çevrim / Toplam Buyruk Sayısı = (11R 0 + 7.85S 0 + 6.8T 1 + 6.25Q 1) / (R 0 + S 0 + T 0 + Q 0) Çekirdek 1 Toplam BBÇ = Toplam Çevrim / Toplam Buyruk Sayısı = (11R 0 + 7.85S 0 + 6.8T 1 + 6.25Q 1) / (R 1 + S 1 + T 1 + Q 1) Bilinmeyen Q 0 ve R 1 buyruk sayılarını bulalım. Bu buyrukların çalıştırıldıkları aşamaların çevrim sayısı bakımından süreleri her iki çekirdek için de aynıdır. O halde, buyruk sayısı verilen çekirdekten yola çıkarak o aşamanın çevrim sayısını hesaplayıp, diğer çekirdeğin çalıştırdığı buyruk sayısını hesaplayabiliriz. 3x0.5Q 0 + 10x0.05Q 0 + 3x0.15Q 0 + 20x0.30Q 0 = 3x0.55Q 1 + 10x0.1Q 1 + 3x0.2Q 1 + 20x0.15Q 1 8.45Q 0 = 6.25Q 1 8.45Q 0 = 6.25x2x10 9 Q 0 = 1.48x10 9 3x0.4S 0 + 10x0.45S 0 + 3x0.05S 0 + 20x0.1S 0 = 3x0.3S 1 + 10x0.5S 1 + 3x0.1S 1 + 20x0.1S 1 7.85S 0 = 8.2S 1 S 1 = 0.96x10 9 O halde; Çekirdek 0 Toplam BBÇ = Toplam Çevrim / Toplam Buyruk Sayısı = (11R 0 + 7.85S 0 + 6.8T 1 + 6.25Q 1) / (R 0 + S 0 + T 0 + Q 0) = (11x1.5x10 9 + 7.85x10 9 + 6.8x0.5x10 9 + 6.25x2x10 9 )/(1.5x10 9 + 7.85x10 9 + 0 + 1.48x10 9 ) = 40.25/10.83 = 3.72 Çekirdek 1 Toplam BBÇ = Toplam Çevrim / Toplam Buyruk Sayısı = (11R 0 + 7.85S 0 + 6.8T 1 + 6.25Q 1) / (R 1 + S 1 + T 1 + Q 1) = 40.25 / (0 + 0.96 + 0.5 + 2) = 11.63 b) Her bir işlemci çekirdeğine kayan nokta işlemlerini hızlandıran birim eklenmesi planlanmaktadır. Bu birim, kayan nokta işlemlerini bir önceki sürüme göre %40 oranında daha az çevrimde tamamlamaktadır fakat çekirdeğin maksimum vuruş sıklığı 2.5GHz'de sınırlandırmaktadır. Kayan nokta işlemlerini hızlandıran böyle bir birim eklenmesi durumunda BBÇ ne olur? Önceki sürüme göre aynı programın çalıştırılmasında yüzde olarak ne kadar hızlanma/yavaşlama görülür? 3

Yapılan %40 oranında iyileştirme sayesinde kayan nokta buyruklarının çalıştığı çevrim sayısı 6'ya düşmüş oldu. Kayan nokta işlemlerindeki hızlanma nedeniyle aşamaların çalışma süresi kısalmış oldu. Dolayısıyla, A şıkkında? işareti yerine bulmuş olduğumuz buyruk sayıları her iki çekirdeğin de çalışmayı aynı anda bitirmemesine neden olabilir. Bu sorunu gidermek için çekirdeklerden hangisi çalışmayı en uzun sürede tamamlıyorsa onun çalışma süresini kullanıp, diğer çekirdeğe boşta çevrimler eklemeliyiz. Çekirdek 0 için; Aşama 1 Çevrim Sayısı = 3x0.4R 0 + 6x0.05R 0 + 3x0.1R 0 + 20x0.45xR 0 = 10.8R 0 Aşama 2 Çevrim Sayısı = 3x0.4S 0 + 6x0.45S 0 + 3x0.05S 0 + 20x0.1S 0 = 6.05S 0 Aşama 3 Çevrim Sayısı = Çekirdek 1 Aşama 3 Çevrim Sayısı Aşama 4 Çevrim Sayısı = 3x0.5Q 0 + 6x0.05Q 0 + 3x0.15Q 0 + 20x0.3Q 0 = 8.25Q 0 Çekirdek 1 için; Aşama 1 Çevrim Sayısı = Çekirdek 1 Aşama 1 Çevrim Sayısı Aşama 2 Çevrim Sayısı = 3x0.3S 1 + 6x0.5S 1 + 3x0.1S 1 + 20x0.1S 1 = 6.2S 1 Aşama 3 Çevrim Sayısı = 3x0.3T 1 + 6x0.3T 1 + 3x0.3T 1 + 20x0.1T 1 = 5.6T 1 Aşama 4 Çevrim Sayısı = 3x0.55Q 1 + 6x0.1Q 1 + 3x0.2Q 1 + 20x0.15Q 1 = 5.85Q 1 6.05S 0 > 6.2S 1 ve 8.25Q 0 > 6.25Q 1 'dir. O halde; Çekirdek 0 Toplam BBÇ = Toplam Çevrim / Toplam Buyruk Sayısı = (10.8R 0 + 6.05S 0 + 5.6T 1 + 8.25Q 0) / (R 0 + S 0 + T 0 + Q 0) = (10.8x1.5x10 9 + 6.05x10 9 + 5.6x0.5x10 9 + 8.25x1.48x10 9 )/(1.5x10 9 + 7.85x10 9 + 0 + 1.48x10 9 ) = 37.26/10.83 = 3.44 Çekirdek 1 Toplam BBÇ = Toplam Çevrim / Toplam Buyruk Sayısı = (10.8R 0 + 6.05S 0 + 5.6T 1 + 8.25Q 0) / (R 1 + S 1 + T 1 + Q 1) = 37.26 / (0 + 0.96 + 0.5 + 2) = 10.77 Yürütme zamanlarını bulmak için her aşamanın çevrim sayısını o aşamadaki saat periyodu ile çarpıp, tüm aşamaların çalışma sürelerini toplamamız gerekiyor. A şıkkı için yürütme zamanı; 11R 0/3x10 9 + 7.85S 0/2x10 9 + 6.8T 1/3x10 9 + 6.25Q 1/2x10 9 = 11x1.5/3 + 7.85x1/2 + 6.8x0.5/3 + 6.25x2/2 = 16.81 s (saniye) B şıkkı için yürütme zamanı; 10.8R 0/2.5x10 9 + 6.05S 0/2x10 9 + 5.6T 1/2.5x10 9 + 8.25Q 0/2x10 9 ) = 10.8x1.5/2.5 + 6.05x1/2 + 5.6x0.5/2.5 + 8.25x1.48/2 = 16.73 s O halde, b şıkkındaki iyileştirme sayesinde programın çalışma süresinde a şıkkına göre; 4

(16.81 16.76)/16.81 = %0.3 hızlanma sağlanmıştır. Soru 3 (15 + 35 (+ 15 bonus) = 50 (65 bonus)) 32-bit (4 byte) adresleme yapan bir buyruk kümesi tasarlamanız istenmektedir. Bu buyruk kümesinde 32- bitlik 8 adet genel amacli yazmaç (y0-y7) kullanılacaktır. Ayrıca bir adet 32-bitlik program sayacı (PS) bulunmaktadır. 16-bit sabit uzunlukta buyruklardan olusacak bu buyruk kümesi şu işlemleri içermelidir: Bellek: Yükle: yx Bellek[yY] Sakla: Bellek[yX] yy Taşıma: TaşıY: yx yy TaşıA: yx Anlık Aritmetik: Topla: yx yy + yz Çıkar: yx yy - yz Çarp: yx yy * yz Böl: yx yy / yz Mod: yx yy % yz Dallanma: Atla: PS PS + Anlık AtlaE: (yx = 0) ise PS PS + Anlık Diğer: Boşta: herhangi bir işlem yok NOT: 32-bitlik adresleme yapıldığından PS'in 1 artması programın iki buyruk ilerlemesine neden olacaktır. 16-bitlik buyrukların bellekten doğru bir şekilde çekildiğini varsayabilirsiniz. Yani dallanma olmayan durumlarda sıradaki buyruğun işlemciye doğru bir şekilde alındığını kabul edin. Arada kalan (yarım adreste) bir buyruğa atlanmak istenmesi durumundan kaçınmak için ise boşta buyruğunu kullanın. a) Yukarıda verilenlere göre tasarladığınız buyruk kümesinde bulunan buyruk türlerini ve komut, yazmaç, anlık değer gibi bit alanlarının uzunluklarını belirtip bu alanların 16-bitlik buyruklarda hangi bitlere karşılık geldiğini gösterin. 12 buyruk bulunduğu için 4 bit opcode kullanmamız yeterlidir. 8 adet yazmacı indexlemek için 3 bit gerekir. Bellek Buyrukları ve TaşıY: Opcode (4 bit) yx (3 bit) yy (3 bit) Taşı A, Atla ve AtlaE: Opcode (4 bit) yx (3 bit) Anlık (9 bit) 5

Aritmetik: Opcode (4 bit) yx (3 bit) yy (3 bit) yz (3 bit) b) Tasarladığınız buyruk kümesini kullanarak aşağıda C dilinde verilen kodu buyruk seviyesinde gerçekleyin. Bu kodda, short 16-bitlik, int ise 32-bitlik değişkenleri göstermektedir. A ve B short*, C ise int* olarak önceden tanımlanmış işaretçilerdir (pointer). Bu işaretçilerin başlangıç adresleri sırasıyla 0x00400000, 0x000000ab ve 0x00800000 olarak verilmiştir. (0x11 gösterimi sayının 16'lık tabanda olduğunu belirtir. Yani 0x11 = 17'dir) Yukarıda verilen işlemler dışında, kendi işlemlerinizi tanımlayarak buyruk kümesini genişletebilirsiniz. Eklediğiniz buyrukların nasıl kodlanacağını a) şıkkındaki gibi gösteriniz. Tek kısıtınız 4-byte'tan farklı adresleme çözünürlüğüne sahip bellek erişimi yapan buyruk ekleyememenizdir. Ayrıca, verilenler dışında bir dallanma buyruğu eklemeden buyruk seviyesinde doğru çalışan bir kod yazmanız durumunda ek olarak 15 puan alabilirsiniz. short i, j, k; short N = 1024; short P = 16; int tmp; for (k = 0; k < N; k++) { tmp = 0; for (i = 0; i < P; i++) { j = k - i; if (j >= 0) { tmp += A[k] * B[j]; //A and B are input arrays of type short with first elements starting at 0x00400000 and 0x000000ab, respectively } } C[i] = tmp; //C is an output array of type int with first element starting at 0x00800000 } 0 TaşıA y1, #10 TaşıA y0, #1 1 SolaKaydir y0, y0, y1 //N=1024 y0'da (shift left) 2 TaşıA y2, #0 //k Boşta TaşıA y1, #16 3: OUTER TaşıA y3, #0 //tmp TaşıA y4, #0 //i 6

LOOP 4: INNER_LO OP Çıkar y5, y2, y4 Brlz y5, BR (17) //branch if less than zero 5 TaşıA y6, #12 SolaKaydir y6, y0, y6 //loaded the base address of A 6 TaşıA y7, #1 SagaKaydir y7, y2, y7 //compute the offset (shift right) 7 Topla y6, y6, y2 Yukle y6, y6 //load A[k] 8 TaşıA y7, #2 Mod y7, y2, y7 9 Brz y7, NOSHIFT (2) //branch if zero TaşıA y7, #16 10 SagaKaydir y6, y6, y7 Boşta 11: NOSHIFT TaşıA y7, #16 12 SagaKaydir y6, y6, y7 //made all high 16 bits zero SolaKaydir y6, y6, y7 TaşıA y1, #0xab //load the base fo B 13 TaşıA y, #1 SagaKaydir y7, y5, y7 //compute the offset 14 Topla y1, y1, y7 Yukle y7, y1 //load B[j] 15 TaşıA y1, #2 Mod y1, y5, y1 16 Brz y1, NOSHIFT2 (2) TaşıA y5, #16 17 SagaKaydir y7, y7, y5 NOP 18: NOSHIFT2 TaşıA y5, #16 19 SagaKaydir y7, y7, y5 //makde all high 16 bits zero SolaKaydir y7, y7, y5 TaşıA y1, #16 //restore P 20 Çarp y5, y6, y7 Topla y3, y3, y5 //tmp += 21: BR TaşıA y6, #1 Topla y4, y4, y6 22 Çıkar y6, y1, y4 Boşta 23 Brnz y6, INNER_LOOP (-19) //branch if not zero TaşıA y5, #13 24 SolaKaydir y5, y0, y5 Topla y5, y5, y4 25 Sakla y5, y3 //store tmp to C[i] TaşıA y5, #1 26 Topla y2, y2, y5 Çıkar y5, y0, y2 27 Brnz Y5, OUTER_LOOP (-24) //branc if not zero 7