Picproje Elektronik Sitesi

BİLGİSAYAR => Donanım ve Yazılım => Konuyu başlatan: mir_as82 - 23 Eylül 2014, 19:45:00

Başlık: işlemci fetching ?
Gönderen: mir_as82 - 23 Eylül 2014, 19:45:00
32 bit ilk bir işlemci, RAM den 32 bit isletilebilir bir makina kodu aliyor, ve bunun 8 biti opcode olsun, peki o işletilebilir kodun geri kalan kismi ne?
2. Sorum ise o fetch edilen sadece kod mu? Yani o kodun içinde işlem yapacagi adres var mi? Fetch yaparken 32 bit + opcode kadar mi fetch yapar? Çünkü işlem yapacagi adres ve verisi de 32 bit ya onun için...
Load ax, [0x00123456] buradaki ax register diğeri adres içeriği olarak düşünün.
Buradaki makina kodu nasil olur? ISA ya gore değişir ama genel bir mantik olarak soruyorum

Başlık: Ynt: işlemci fetching ?
Gönderen: mir_as82 - 24 Eylül 2014, 07:18:47
Arkadaşlar sorumu soramadim galiba. 32 bit bit işlemcinin işletilebilir makina kodu nasil olur?onun içinde işlem yapacagi adres var midir?
Başlık: Ynt: işlemci fetching ?
Gönderen: yamak - 24 Eylül 2014, 08:01:36
1. Hocam komutun tipine göre ve mimariye göre değişir.Örneğin mips mimarisinde R tipi komutlar aşağıdaki formatta oluyor

opcode-rs-rt-rd-shift-funct
R tipi komutlarda opcode hep 0 dır.Hangi komut olduğuğu(add,sub,and,sll vs) func kısmından belirlenir.rs,rt,rd de register isimleridir. Örneğin add rd,rs,rt=rd=rs+rt dir. shift kısmı da sonucu kaç bit kaydırılacağını belirler.

Diğer tipteki komutlarda mantık yine benzer şekildedir.

2.Sadece komut değil hex kodun tamamı fetch edilir. Örneğin yukarıdaki gibi   000000,00101,00110,00111,00000,000001=0x00A63801 bir R tipi komutumuz olsun bu komut olduğu gibi fetch edilir.
                                                                                                                  opcode    rs        rt        rd     shift   func
32 bitli adreslere erişileceği zaman değişk yöntemler kullanır.Örneğin adres 16 bitlik 2 ayrı registerda saklanır.Ya da derleyici kodu derleme esnasında bu adresleri belleğin kullanılmayan bi bölgesine yerleştirir sonra bu bölgenin başlangıç adresini bildiği için offset uygulayarak bu adresleri kullanır.Örneğin
LDR R3,[PC,offset] bu komutta program counter ın değerin offset uygulayarak derleme esnasında 32 bitlik değerleri yerleştirdiği bellek bölgesine erişiyo.Sonra oradaki sayıyı R3 registerına yüklüyo.
Genel olarak mantık bu şekilde işliyo.