Sequential (SEQ, Ardışıl) Y86 İşlemci Uygulaması (Devamı)

Benzer belgeler
Komut Seti Mimarisi (ISA)

Komut Seti Mimarisi (ISA)

Bilgisayar Sistemlerine Genel Bakış

BM-311 Bilgisayar Mimarisi

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

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

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

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

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

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

BM 375 Bilgisayar Organizasyonu Dersi Vize Sınavı Cevapları 10 Nisan 2009

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

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

BM-311 Bilgisayar Mimarisi

Komutların Yürütülmesi

BM-311 Bilgisayar Mimarisi

Bölüm Bazı Temel Konseptler

PIC16F877A nın Genel Özellikleri

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

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Mikroçita. Mikroçita Rapor 2:

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İ

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

8086 Mikroişlemcisi Komut Seti

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü

Yrd.Doç.Dr. Celal Murat KANDEMİR

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

(Random-Access Memory)

William Stallings Computer Organization and Architecture 9 th Edition

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

BM-311 Bilgisayar Mimarisi

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

MİKROİŞLEMCİLER 1 Ders 1

Mikroişlemcili Sistemler ve Laboratuvarı

BÖLÜM 7 Kesmeler.

Ders Özeti. Ders 2. PC nin İç Organizasyonu. Mikroişlemcinin Organizasyonu. Basitçe İşlemciyi Oluşturan Parçalar. Mikroişlemciler

İvme VGA, İvme s_2.1 fiziksel işlemci çekirdeğinin, çalışan iç yapısının herhangi bir simülasyon olmaksızın fiziksel olarak dış dünyaya aktarımıdır.

BM-311 Bilgisayar Mimarisi

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

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

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

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

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

Yrd. Doç. Dr. Caner ÖZCAN

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Yrd. Doç. Dr. Caner ÖZCAN

Mikrobilgisayar Mimarisi ve Programlama

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

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

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

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

B.Ç. / E.B. MİKROİŞLEMCİLER

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk bit 07FF kullanıcının program alanı

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ı

Floating Point (Kayan Noktalı Sayılar)

Memory. Amac. Baslangictan beri programcilar unlimited hizli memory ler hayal etmisler 1972, PDP-11/20. Oku H&P sections 7.1, 7.2

Mikroişlemcili Sistemler ve Laboratuvarı

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

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

Mikrobilgisayar Sistemleri ve Assembler

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

8086 Mikroişlemcisi Komut Seti

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

MODBUS MODÜL. Mekanik sayaçların tüketimlerinin sayılıp kaydedilmesi.

Mimari Esaslar. Mikroişlemcinin mimari esasları; Kaydediciler Veriyolları İş hatları dır.

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI KESMELİ GİRİŞ/ÇIKIŞ

BM-311 Bilgisayar Mimarisi

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

8 li Çıkış Modülü Kullanım Kılavuzu

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

DS18B20. İsmail VarıĢlı

Proses. Prosesler 2. İşletim Sistemleri

Eln 1002 Bilgisayar Programlama II

PROSESLER. Proses. Proses

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

MODBUS MODÜL. Mekanik sayaçların tüketimlerinin sayılıp kaydedilmesi.

İşletim Sistemlerine Giriş

Temel Mikroişlemci Tabanlı Bir Sisteme Hata Enjekte Etme Yöntemi Geliştirilmesi. Buse Ustaoğlu Berna Örs Yalçın

LCD (Liquid Crystal Display )

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.

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

BM-311 Bilgisayar Mimarisi

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

Bölüm 13: Giriş-Çıkış (I/O) Sistemleri

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

Bilgisayar Yapısı MİKROİŞLEMCİ SİSTEMLERİ. Bilgisayar Temel Birimleri. MİB Yapısı. Kütükler. Kütükler

MCR02/04/05/08 Serileri Temassız Kart Okuyucular

EEM 419-Mikroişlemciler Güz 2017

Spatial locality nin getirdigi avantaji kullanmak

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

8 li Röle Çıkış Modülü Kullanım Kılavuzu

Transkript:

Sequential (SEQ, Ardışıl) Y86 İşlemci Uygulaması (Devamı) BIL-304: Bilgisayar Mimarisi Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe Ders kitabına ait sunum dosyalarından adapte edilmiştir: http://csapp.cs.cmu.edu/ Adapted from slides of the textbook: http://csapp.cs.cmu.edu/ 1

call un Yürütülmesi call Hedef 8 0 Hedef Dönüş noktası: XX XX Hedef: XX XX Fetch Decode 2 9 byte okunur PC 9 arttırılır Yığın pointer ı okunur Yığın pointer ı 8 azaltılır Arttırılmış PC değeri (dönüş noktasının adresi) yığın pointer ının yeni değeriyle gösterilen adrese yazılır Write back Yığın pointer ı güncellenir PC Update PC ye Hedef in adresi yüklenir

Hesaplama Aşamaları: call call Hedef Fetch Decode Write back PC update icode:ifun M 1 [PC] valc M 8 [PC+1] valp PC+9 valb R[%rsp] vale valb + 8 M 8 [vale] valp R[%rsp] vale PC valc Komut byte ını oku Hedef adresini oku Dönüş noktasının adresini hesapla Yığın pointer ını oku Yığın pointer ını azalt Dönüş noktasının adresini yığına yaz Yığın pointer ını güncelle PC ye Hedef adresini yükle Yığın pointer ını azaltmak için ALU kullanılır Arttırılmış PC değeri (geri dönerken kullanılmak üzere yığına) kaydedilir 3

ret in Yürütülmesi ret 9 0 return: XX XX Fetch Decode 1 byte okunur Yığın pointer ı okunur Yığın pointer ı 8 arttırılır Geri dönüş adresi arttırılmamış yığın pointer ının gösterdiği adresten okunur Write back Yığın pointer ını güncelle PC Update PC ye okunan geri dönüş adresini yükle 4

Hesaplama Aşamaları: ret ret icode:ifun M 1 [PC] Komut byte ını oku Fetch Decode Write back PC update vala R[%rsp] valb R[%rsp] vale valb + 8 valm M 8 [vala] R[%rsp] vale PC valm İşlem yapılacak yığın pointer ını oku İşlem yapılacak yığın pointer ını oku Yığın pointer ını arttır Geri dönüş adresini oku Yığın pointer ını güncelle PC ye geri dönüş adresini yükle Yığın pointer ını arttırmak için ALU kullanılır Geri dönüş adresi hafızadan okunur 5

Hesaplama Adımları OPq ra, rb icode,ifun icode:ifun M 1 [PC] Komut byte ını oku Fetch ra,rb valc ra:rb M 1 [PC+1] Kaydedici byte nı oku [Sabit sözcüğü oku] valp valp PC+2 Bir sonraki PC'yi hesapla Decode vala, srca valb, srcb vala R[rA] valb R[rB] İşlem yapılacak A değerini oku İşlem yapılacak B değerini oku vale Cond code vale valb OP vala Set CC ALU işlemini gerçekleştir Durum kodlarını güncelle valm [Hafızadan oku/hafızaya yaz] Write dste R[rB] vale ALU sonucunu geri yaz back dstm [Hafıza sonucunu geri yaz] PC update PC PC valp PC yi güncelle Tüm komutlar aynı genel biçimi izler Her bir adımda hesaplananlar farklılaşır 6

Hesaplama Adımları call Dest icode,ifun icode:ifun M 1 [PC] Komut byte ını oku Fetch ra,rb valc valc M 8 [PC+1] [Kaydedici byte nı oku] Sabit sözcüğü oku valp valp PC+9 Bir sonraki PC'yi hesapla Decode vala, srca valb, srcb valb R[%rsp] [İşlem yapılacak A değerini oku] İşlem yapılacak B değerini oku vale Cond code vale valb + 8 ALU işlemini gerçekleştir [Durum kodlarını güncelle/kullan] Write valm dste M 8 [vale] valp R[%rsp] vale Hafızaya yaz ALU sonucunu geri yaz back PC update dstm PC PC valc [Hafıza sonucunu geri yaz] PC yi güncelle Tüm komutlar aynı genel biçimi izler Her bir adımda hesaplananlar farklılaşır 7

Hesaplanan Değerler Fetch icode Komut kodu vale ALU sonucu ifun ra Komut fonksiyonu Komut kaydedicisi A Cnd Şartlı Dallanma/taşıma bayrağı rb Komut kaydedicisi B valc valp Komut sabiti Arttırılmış PC valm Hafızadan okunan veri Decode srca Kaydedici ID si A srcb Kaydedici ID si B dste Hedef kaydedici E dstm Hedef kaydedici M vala Kaydedici değeri A valb Kaydedici değeri B 8

SEQ Donanımı Mavi kutular: öntasarımlı donanım blokları Örnek: hafızalar, ALU 9 Gri kutular: kontrol lojiği HCL de tanımlanır Beyaz oval kutular: sinyal etiketleri Kalın hatlar: 64-bit sözcük değerleri İnce hatlar: 4-8 bit değerler Kesikli noktalı hatlar: 1-bit değerler Sağdaki şekildeki İngilizce terimler ilerleyen slaytlarda her bir kısım ayrı ayrı detaylandırılırken çevrilecektir.

Fetch Lojiği icode ifun ra rb valc valp Instr valid (komut geçerli) Need valc (valc gerekli) Need regids (regid gerekli) PC arttırma icode ifun Böl Byte 0 Hizala Bytes 1-9 imem_error Komut hafızası Öntasarımlı bloklar 10 PC: PC değerini içeren kaydedici Komut hafızası: 10 byte okunması durumunda PC den PC+9 a kadar adreslerdeki byte lar okunur Geçersiz adres durumunda geçersiz adres hata sinyalini üretir Böl: Komut byte ını icode ve ifun kısımlarına ayırır Hizala: ra, rb ve valc değerlerini çeker PC

Fetch Lojiği icode ifun ra rb valc valp Instr valid (komut geçerli) Need valc (valc gerekli) Need regids (regid gerekli) PC arttırma icode ifun Böl Byte 0 Hizala Bytes 1-9 imem_error Komut hafızası Kontrol lojiği 11 Instr. Valid (komut geçerli): Bu komut geçerli mi? icode, ifun: Geçersiz adres durumunda nop komutu üretilir Need regids (regids gerekli): Komutta kaydedici kullanılıyor mu? Need valc (valc gerekli): Komutta sabit bir sözcük var mı? PC

HCL dilinde Fetch Kontrol Lojiği icode ifun Böl Byte 0 # Komut kodunu belirle int icode = [ imem_error: INOP; 1: imem_icode; ]; # Komut fonksiyonunu belirle int ifun = [ imem_error: FNONE; 1: imem_ifun; ]; imem_error Komut hafızası PC 12

HCL dilinde Fetch Kontrol Lojiği halt 0 0 nop 1 0 cmovxx ra, rb 2 fn ra rb irmovq V, rb 3 0 F rb V rmmovq ra, D(rB) 4 0 ra rb D mrmovq D(rB), ra 5 0 ra rb D OPq ra, rb 6 fn ra rb jxx Hedef 7 fn Hedef call Hedef 8 0 Hedef ret 9 0 pushq ra A 0 ra F popq ra B 0 ra F bool need_regids = icode in { IRRMOVQ, IOPQ, IPUSHQ, IPOPQ, IIRMOVQ, IRMMOVQ, IMRMOVQ }; bool instr_valid = icode in { INOP, IHALT, IRRMOVQ, IIRMOVQ, IRMMOVQ, IMRMOVQ, IOPQ, IJXX, ICALL, IRET, IPUSHQ, IPOPQ }; 13

Decode Lojiği Kaydedici Dizisi Okuma portları: A, B Yazma portları: E, M Cnd vala valb valm vale Adresler kaydedici ID leri veya 15 (0xF) tir (kaydedici erişimi olmaması durumunda) Kontrol Lojiği A B M Kaydedici dizisi E dste dstm srca srcb srca, srcb: Okuma port adresleri dste dstm srca srcb dste, dstm: Yazma port adresleri icode ra rb Sinyaller Cnd: Şartlı taşıma yapılıp yapılmayacağını belirtir 14 aşamasında hesaplanır

A Değerinin Kaynakları Decode Decode OPq ra, rb vala R[rA] cmovxx ra, rb vala R[rA] rmmovq ra, D(rB) İşlem yapılacak A değerini oku İşlem yapılacak A değerini oku Decode Decode vala R[rA] popq ra vala R[%rsp] İşlem yapılacak A değerini oku Yığın pointer ını oku jxx Dest Decode İşlem yapılacak bir şey yok call Dest Decode İşlem yapılacak bir şey yok ret Decode vala R[%rsp] Yığın pointer ını oku int srca = [ icode in { IRRMOVQ, IRMMOVQ, IOPQ, IPUSHQ } : ra; icode in { IPOPQ, IRET } : RRSP; 1 : RNONE; # Kaydediciye gerek yok ]; 15

E Değerinin Yazılacağı Yerler Write-back Write-back OPq ra, rb R[rB] vale cmovxx ra, rb R[rB] vale Sonucu geri yaz Şarta bağlı olarak sonucu geri yaz rmmovq ra, D(rB) Write-back Hiçbir şey yok popq ra Write-back R[%rsp] vale Yığın pointer ını güncelle jxx Dest Write-back Hiçbir şey yok call Dest Write-back R[%rsp] vale Yığın pointer ını güncelle ret Write-back R[%rsp] vale Yığın pointer ını güncelle int dste = [ icode in { IRRMOVQ } && Cnd : rb; icode in { IIRMOVQ, IOPQ} : rb; icode in { IPUSHQ, IPOPQ, ICALL, IRET } : RRSP; 1 : RNONE; # Herhangi bir kaydediciye yazma 16 ];

Lojiği Birimler 17 ALU İhtiyaç duyulan 4 fonksiyonu gerçekleştirir Durum kodu değerlerini üretir CC 3 bitlik durum kodlarını içeren kaydedici cond Şartlı dallanma/taşıma bayrağını (Cnd) hesaplar Kontrol Lojiği Set CC: Durum kodu kaydedicisi yüklenmeli mi? ALU A: ALU nun A girişi ALU B: ALU nun B girişi ALU fun: ALU hangi fonksiyonu hesaplamalı? Cnd cond CC Set CC ALU A vale ALU ALU B icode ifun valc vala valb ALU fun.

ALU A Girişi OPq ra, rb vale valb OP vala cmovxx ra, rb ALU işlemini gerçekleştir vale 0 + vala vala yı ALU üzerinden aktar rmmovq ra, D(rB) vale valb + valc Efektif adresi hesapla popq ra vale valb + 8 Yığın pointer ını arttır jxx Dest İşlem yok call Dest vale valb + 8 Yığın pointer ını azalt ret vale valb + 8 Yığın pointer ını arttır 18 int alua = [ icode in { IRRMOVQ, IOPQ } : vala; icode in { IIRMOVQ, IRMMOVQ, IMRMOVQ } : valc; icode in { ICALL, IPUSHQ } : -8; icode in { IRET, IPOPQ } : 8; # Diğer komutlar ALU ya gerek duymaz ];

ALU İşlemi OPl ra, rb vale valb OP vala cmovxx ra, rb vale 0 + vala ALU işlemini gerçekleştir vala yı ALU üzerinden aktar rmmovl ra, D(rB) vale valb + valc Efektif adresi hesapla popq ra vale valb + 8 Yığın pointer ını arttır jxx Dest İşlem yok call Dest vale valb + 8 Yığın pointer ını azalt ret vale valb + 8 Yığın pointer ını arttır 19 int alufun = [ icode == IOPQ : ifun; 1 : ALUADD; ];

Lojiği Hafızadan sözcük okunur veya hafızaya sözcük yazılır Kontrol Lojiği stat: Komutun durumu nedir? Mem. read: sözcük okunacak mı? Mem. write: sözcük yazılacak mı? Mem. addr.: Adresi seçer Mem. data.: Veriyi seçer Stat stat instr_valid imem_error icode Mem. read Mem. write dmem_error okuma yazma Veri Hafızası Mem. addr vale valm Veri çıkışı Mem. data Veri girişi vala valp 20

Komut durumu Stat Kontrol Lojiği stat: Komut durumu nedir? stat instr_valid imem_error Mem. read Mem. write dmem_error okuma yazma valm Veri çıkışı Veri Hafızası Veri girişi Mem. addr Mem. data 21 icode ## Komut durumunu belirle int Stat = [ imem_error dmem_error : SADR;!instr_valid: SINS; icode == IHALT : SHLT; 1 : SAOK; ]; vale vala valp

Adresi OPq ra, rb İşlem yok rmmovq ra, D(rB) M 8 [vale] vala popq ra valm M 8 [vala] jxx Dest call Dest M 8 [vale] valp ret valm M 8 [vala] Değeri hafızaya yaz Yığından oku İşlem yok Dönüş adresini yığına yaz Dönüş adresini oku 22 int mem_addr = [ icode in { IRMMOVQ, IPUSHQ, ICALL, IMRMOVQ } : vale; icode in { IPOPQ, IRET } : vala; # Diğer komutlar adrese ihtiyaç duymaz ];

Read (Okuma) OPq ra, rb rmmovq ra, D(rB) M 8 [vale] vala popq ra valm M 8 [vala] jxx Dest call Dest M 8 [vale] valp ret valm M 8 [vala] İşlem yok Değeri hafızaya yaz Yığından oku İşlem yok Dönüş adresini yığına yaz Dönüş adresini oku bool mem_read = icode in { IMRMOVQ, IPOPQ, IRET }; 23

PC Update (Güncelleme) Lojiği PC New (Yeni) PC PC nin bir sonraki değerini seç New (Yeni) PC icode Cnd valc valm valp 24

PC Update PC update OPq ra, rb PC valp PC yi güncelle rmmovq ra, D(rB) PC update PC valp PC yi güncelle popq ra PC update PC valp PC yi güncelle jxx Hedef PC update PC Cnd? valc : valp PC yi güncelle call Hedef PC update PC valc PC ye Hedef adresini yükle ret PC update PC valm PC ye dönüş adresini yükle 25 int new_pc = [ icode == ICALL : valc; icode == IJXX && Cnd : valc; icode == IRET : valm; 1 : valp; ];

SEQ in Çalışması 26 Kombinasyonel lojik CC 100 PC 0x014 Okuma Okuma portları Veri Hafızası Kaydedici Dizisi %rbx = 0x100 Yazma Yazma portları Durum PC kaydedicisi Durum kodu kaydedicisi Veri hafızası Kaydedici dizisi Tamamı saat sinyalinin yükselen kenarında güncellenir Kombinasyonel Lojik ALU Kontrol lojiği Hafıza okumaları Komut hafızası Kaydedici dizisi Veri hafızası

SEQ in Çalışması #2 Clock Cycle 1: Cycle 2: Cycle 3: Cycle 4: Cycle 5: 0x00a: 0x014: addq %rdx,%rbx # %rbx <-- 0x300 CC <-- 000 0x016: je hedef # Dallanma olmaz 0x01f: Cycle 1 Cycle 2 Cycle 3 Cycle 4 j k l m 0x000: irmovq $0x100,%rbx # %rbx <-- 0x100 irmovq $0x200,%rdx # %rdx <-- 0x200 rmmovq %rbx,0(%rdx) # M[0x200] <-- 0x300 Combinational logic CC 100 Okuma Okuma portları Veri Hafızası Kaydedici Dizisi %rbx = 0x100 Yazma Yazma portları durum ikinci irmovq komutuna bağlı olarak set edilir kombinasyonel lojik durum değişikliğine tepki vermeye başlar PC 0x014 27

SEQ in Çalışması #3 Clock Cycle 1: Cycle 2: Cycle 3: Cycle 4: Cycle 5: 0x00a: 0x014: addq %rdx,%rbx # %rbx <-- 0x300 CC <-- 000 0x016: je hedef # Dallanma olmaz 0x01f: Cycle 1 Cycle 2 Cycle 3 Cycle 4 j k l m 0x000: irmovq $0x100,%rbx # %rbx <-- 0x100 irmovq $0x200,%rdx # %rdx <-- 0x200 rmmovq %rbx,0(%rdx) # M[0x200] <-- 0x300 Kombinasyonel lojik CC 100 000 Okuma Okuma portları Veri Hafızası Kaydedici Dizisi %rbx = 0x100 Yazma Yazma portları %rbx <-- 0x300 durum ikinci irmovq komutuna bağlı olarak set edilir kombinasyonel lojik addq komutunun sonuçlarını oluşturur PC 0x014 0x016 28

SEQ in Çalışması #4 Clock Cycle 1: Cycle 2: Cycle 3: Cycle 4: Cycle 5: 0x00a: 0x014: addq %rdx,%rbx # %rbx <-- 0x300 CC <-- 000 0x016: je hedef # Dallanma olmaz 0x01f: Cycle 1 Cycle 2 Cycle 3 Cycle 4 j k l m 0x000: irmovq $0x100,%rbx # %rbx <-- 0x100 irmovq $0x200,%rdx # %rdx <-- 0x200 rmmovq %rbx,0(%rdx) # M[0x200] <-- 0x300 Kombinasyonel lojik CC 000 Okuma Okuma portları Veri Hafızası Kaydedici Dizisi %rbx = 0x300 Yazma Yazma portları durum addq komutuna bağlı olarak set edilir kombinasyonel lojik durum değişikliğine tepki vermeye başlar PC 0x016 29

SEQ in Çalışması #5 Clock Cycle 1: Cycle 2: Cycle 3: Cycle 4: Cycle 5: 0x00a: 0x014: addq %rdx,%rbx # %rbx <-- 0x300 CC <-- 000 0x016: je hedef # Dallanma olmaz 0x01f: Cycle 1 Cycle 2 Cycle 3 Cycle 4 j k l m 0x000: irmovq $0x100,%rbx # %rbx <-- 0x100 irmovq $0x200,%rdx # %rdx <-- 0x200 rmmovq %rbx,0(%rdx) # M[0x200] <-- 0x300 Kombinasyonel lojik CC 000 PC 0x016 0x01f Okuma Okuma portları Veri Hafızası Kaydedici Dizisi %rbx = 0x300 Yazma Yazma portları durum addq komutuna bağlı olarak set edilir kombinasyonel lojik je komutunun sonuçlarını oluşturur 30

SEQ Özeti Uygulaması 31 Herbir komut basit adımlar dizisi olarak ifade edilir Her komut tipi için aynı genel akış izlenir Kaydedici, hafızalar ve öntasarımlı kombinasyonel blokları birleştirir Bu blokların birleşimini kontrol lojiği ile sağlar Kısıtlamalar Pratik uygulama açısından çok yavaştır Bir saat palsinde, komut hafızası, kaydedici dizisi, ALU ve veri hafızası boyunca sinyallerin yayılmaları gerekir Bu yayılma gereksinimi nedeniyle saat sinyalinin çok yavaş işlemesi gerekir Donanım alt birimleri saat palsinin sadece belli bir kısmında aktif olarak çalışırlar (saat palsinin geri kalan süresinde sadece beklerle, herhangi bir işlem gerçekleştirmezler)