Komut seti mimarisi - Instruction set architecture

İçinde bilgisayar Bilimi, bir komut seti mimarisi (ISA) bir soyut model bir bilgisayar. Aynı zamanda mimari veya bilgisayar Mimarisi. Bir ISA'nın gerçekleştirilmesi, örneğin Merkezi işlem birimi (CPU), bir uygulama.

Genel olarak bir ISA, desteklenen veri tipleri, kayıtlar, yönetmek için donanım desteği ana hafıza, temel özellikler (örneğin hafıza tutarlılığı, adresleme modları, sanal bellek ), ve giriş çıkış ISA'nın bir uygulama ailesi modeli.

ISA, aşağıdakilerin davranışını belirtir makine kodu Bu ISA'nın uygulamalarını, o uygulamanın özelliklerine bağlı olmayan bir şekilde çalıştırmak, ikili uyumluluk uygulamalar arasında. Bu, farklı bir ISA uygulamasına olanak tanır. verim, fiziksel boyut ve parasal maliyet (diğer şeylerin yanı sıra), ancak aynı makine kodunu çalıştırabilen, böylece daha düşük performanslı, daha düşük maliyetli bir makine, daha yüksek maliyetli, daha yüksek performanslı bir makineyle değiştirilebilir. yazılımı değiştirmek için. Aynı zamanda, mikro mimariler ISA'nın daha yeni, daha yüksek performanslı bir uygulamasının önceki nesil uygulamalarda çalışan yazılımları çalıştırabilmesi için,

Eğer bir işletim sistemi standart ve uyumludur uygulama ikili arabirimi Belirli bir ISA için (ABI), bu ISA için makine kodu ve işletim sistemi, bu ISA'nın gelecekteki uygulamaları ve bu işletim sisteminin daha yeni sürümleri üzerinde çalışacaktır. Ancak, bir ISA birden fazla işletim sistemi çalıştırmayı destekliyorsa, ilk işletim sistemi diğer işletim sistemi için oluşturulmuş çalışan makine kodunu desteklemediği sürece, bir işletim sistemi için makine kodunun başka bir işletim sisteminde çalışacağını garanti etmez.

Bir ISA, talimatlar veya diğer yetenekler eklenerek veya daha büyük adresler ve veri değerleri için destek eklenerek genişletilebilir; Genişletilmiş ISA'nın bir uygulaması, bu uzantılar olmadan ISA sürümleri için makine kodunu çalıştırmaya devam edebilecektir. Bu uzantıları kullanan makine kodu, yalnızca bu uzantıları destekleyen uygulamalarda çalışır.

Sağladıkları ikili uyumluluk, ISA'ları en temel soyutlamalardan biri yapar. bilgi işlem.

Genel Bakış

Bir komut seti mimarisi, bir mikro mimari hangi settir işlemci tasarımı talimat setini uygulamak için belirli bir işlemcide kullanılan teknikler. Farklı mikro mimarilere sahip işlemciler ortak bir komut kümesini paylaşabilir. Örneğin, Intel Pentium ve gelişmiş mikro cihazlar Athlon hemen hemen aynı sürümlerini uygulayın x86 komut seti ama tamamen farklı iç tasarımlara sahip.

Bir kavramı mimari, belirli bir makinenin tasarımından farklı olarak, Fred Brooks IBM'de tasarım aşamasında Sistem / 360.

NPL [System / 360] 'dan önce, şirketin bilgisayar tasarımcıları yalnızca teknolojileri seçerek değil, aynı zamanda işlevsel ve mimari iyileştirmeler oluşturarak da maliyet hedeflerini yerine getirmekte özgürdü. SPREAD uyumluluk hedefi, aksine, geniş bir maliyet ve performans yelpazesini kapsayan bir dizi beş işlemci için tek bir mimari varsaydı. Beş mühendislik tasarım ekibinden hiçbiri, maliyet ve performans hedeflerine ulaşmada zorlukları hafifletmenin bir yolu olarak mimari özelliklerde ayarlamalar yapabileceklerine güvenemedi.[1]:s. 137

Biraz Sanal makineler bu destek bayt kodu ISA gibi Smalltalk, Java sanal makinesi, ve Microsoft 's Ortak dil çalışması, bunu yaygın olarak kullanılan kod yolları için bayt kodunu yerel makine koduna çevirerek uygulayın. Ek olarak, bu sanal makineler yorumlama yoluyla daha az kullanılan kod yollarını yürütür (bkz: Tam zamanında derleme ). Transmeta üstüne x86 komut setini uyguladı VLIW bu şekilde işlemciler.

ISA'ların sınıflandırılması

Bir ISA, birkaç farklı şekilde sınıflandırılabilir. Ortak bir sınıflandırma mimari gereğidir karmaşıklık. Bir karmaşık komut seti bilgisayarı (CISC), bazıları sadece pratik programlarda nadiren kullanılabilen birçok özel talimata sahiptir. Bir indirgenmiş komut seti bilgisayarı (RISC), yalnızca programlarda sık kullanılan talimatları verimli bir şekilde uygulayarak işlemciyi basitleştirir, daha az yaygın olan işlemler ise alt yordamlar olarak uygulanır ve bunların sonucunda ortaya çıkan ek işlemci yürütme süresinin seyrek kullanımla dengelenmesini sağlar.[2]

Diğer türler şunlardır çok uzun talimat kelimesi (VLIW) mimarileri ve yakından ilişkili uzun talimat kelimesi (LIW) ve açıkça paralel talimat hesaplama (EPIC) mimarileri. Bu mimariler istismar etmeye çalışıyor öğretim düzeyinde paralellik RISC ve CISC'den daha az donanımla derleyici talimat sorunu ve programlamadan sorumludur.

Daha az karmaşıklığa sahip mimariler, örneğin minimum komut seti bilgisayarı (MISC) ve bir komut seti bilgisayar (OISC). Bunlar teorik olarak önemli türlerdir, ancak ticarileştirilmemiştir.

Talimatlar

Makine dili ayrıktan oluşturulmuştur ifadeler veya Talimatlar. İşleme mimarisinde, belirli bir talimat şunları belirtebilir:

  • belirli kayıtlar (aritmetik, adresleme veya kontrol fonksiyonları için)
  • belirli hafıza konumları (veya bunlara göre uzaklıklar)
  • belirli adresleme modları (işlenenleri yorumlamak için kullanılır)

Daha karmaşık işlemler, sıralı olarak yürütülen bu basit talimatların birleştirilmesiyle veya başka bir şekilde, kontrol akışı Talimatlar.

Talimat türleri

Birçok komut setinde ortak olan işlem örnekleri şunları içerir:

Veri işleme ve hafıza işlemleri

  • Ayarlamak a Kayıt ol sabit bir sabit değere.
  • Kopyala bir hafıza konumundan bir kayıt listesine veya tam tersi veriler (bir makine talimatı genellikle hareket; ancak terim yanıltıcıdır). Bir kaydın içeriğini, bir hesaplamanın sonucunu depolamak veya daha sonra üzerinde bir hesaplama yapmak için depolanan verileri geri almak için kullanılır. Genellikle aradı yükle ve sakla operasyonlar.
  • Okuyun ve yazmak donanım cihazlarından gelen veriler.

Aritmetik ve mantık operasyonlar

  • Ekle, çıkarmak, çarpmakveya bölmek iki kaydın değerleri, sonucu bir kayda yerleştirerek, muhtemelen bir veya daha fazla ayarlama durum kodları içinde durum kaydı.
    • artış, azalma bazı ISA'larda, önemsiz durumlarda işlenen getirme tasarrufu.
  • Performans bitsel işlemler örneğin, almak bağlaç ve ayrılma bir çift yazmaçta karşılık gelen bitlerin olumsuzluk bir kayıttaki her bitin.
  • Karşılaştırmak yazmaçlarda iki değer (örneğin, birinin daha az olup olmadığını veya eşit olup olmadığını görmek için).
  • Kayan nokta talimatıs kayan noktalı sayılarda aritmetik için.

Kontrol akışı operasyonlar

  • Şube programdaki başka bir yere gidin ve orada talimatları uygulayın.
  • Koşullu olarak şube belirli bir koşul varsa başka bir yere.
  • Dolaylı şube başka bir yere.
  • Telefon etmek bir sonraki talimatın konumunu geri dönmek için bir nokta olarak kaydederken başka bir kod bloğu.

Yardımcı İşlemci Talimatlar

  • Bir yardımcı işlemciye / işlemciden veri yükleyin / depolayın veya CPU kayıtlarıyla alışveriş yapın.
  • İşlemci işlemlerini gerçekleştirin.

Karmaşık talimatlar

İşlemciler, komut setlerinde "karmaşık" talimatlar içerebilir. Tek bir "karmaşık" talimat, diğer bilgisayarlarda birçok talimat alabilen bir şey yapar.[kaynak belirtilmeli ] Bu tür talimatlar tiplenmiş birden çok adım atan, birden çok işlevsel birimi kontrol eden veya belirli bir işlemci tarafından uygulanan basit talimatların çoğundan daha büyük bir ölçekte görünen talimatlarla. Bazı "karmaşık" talimat örnekleri şunları içerir:

Karmaşık komutlar, CISC komut setlerinde RISC komut setlerinde olduğundan daha yaygındır, ancak RISC komut setleri de bunları içerebilir. RISC komut setleri genellikle bellek işlenenleri ile ALU işlemlerini veya büyük bellek bloklarını hareket ettirme komutlarını içermez, ancak çoğu RISC komut seti şunları içerir: SIMD veya vektör aynı aritmetik işlemi aynı anda birden çok veri parçası üzerinde gerçekleştiren talimatlar. SIMD komutları, büyük vektörleri ve matrisleri minimum zamanda işleme yeteneğine sahiptir. SIMD talimatları kolaylık sağlar paralelleştirme yaygın olarak ses, görüntü ve video işleme ile ilgili algoritmalar. Aşağıdaki ticari isimler altında çeşitli SIMD uygulamaları piyasaya sunulmuştur. MMX, 3DNow!, ve AltiVec.

Komut kodlaması

Bir talimat, mantıksal işlemi tanımlayan birkaç alana sahip olabilir ve ayrıca kaynak ve hedef adresleri ve sabit değerleri içerebilir. Bu, kaynak ve hedef kayıtlarının seçilmesine ve küçük bir sabitin dahil edilmesine izin veren MIPS "Hemen Ekle" komutudur.

Geleneksel mimarilerde, bir talimat bir opcode gerçekleştirilecek işlemi belirten, örneğin kayıt için hafıza içeriği ekle- ve sıfır veya daha fazla işlenen belirleyicileri, kayıtlar, bellek konumları veya değişmez veriler. Operand belirteçleri sahip olabilir adresleme modları anlamlarını belirleme veya sabit alanlarda olabilir. İçinde çok uzun talimat kelimesi (VLIW) mimarileri, birçok mikro kod mimariler, çoklu eşzamanlı işlem kodları ve işlenenler tek bir komutta belirtilir.

Bazı egzotik komut kümelerinde işlem kodu alanı yoktur, örneğin taşıma tetiklemeli mimariler (TTA), yalnızca işlenen (ler).

Dördüncü sanal makine ve diğeri "0 işlenen "komut kümelerinde herhangi bir işlenen belirtici alanı yoktur, örneğin bazıları istif makineleri NOSC dahil.[3][daha iyi kaynak gerekli ]

Koşullu komutlar genellikle bir yüklem alanına sahiptir - belirli bir koşulu kodlayarak bir işlemin gerçekleştirilmesi yerine gerçekleştirilmesine neden olan birkaç bittir. Örneğin, koşullu bir dallanma talimatı, koşul doğruysa denetimi aktarır, böylece yürütme programın farklı bir bölümüne ilerler ve koşul yanlışsa denetimi aktarmaz, böylece yürütme sırayla devam eder. Bazı komut setlerinin de koşullu hareketleri vardır, böylece hareket yürütülür ve koşul doğruysa ve yürütülmezse veriler hedef konumda depolanır ve koşul yanlışsa hedef konum değiştirilmez. Benzer şekilde, IBM z / Mimarlık şartlı saklama talimatı vardır. Birkaç komut seti, her talimatta bir yüklem alanı içerir; buna denir şube tahmini.

İşlenen sayısı

Komut kümeleri maksimum işlenen sayısına göre kategorize edilebilir açıkça talimatlarda belirtilmiştir.

(Aşağıdaki örneklerde, a, b, ve c hafıza hücrelerine atıfta bulunan (doğrudan veya hesaplanmış) adreslerdir. reg1 ve benzeri makine kayıtlarına bakın.)

C = A + B
  • 0 işlenen (sıfır adresli makineler), Lafta istif makineleri: Tüm aritmetik işlemler, yığındaki en üstteki bir veya iki konum kullanılarak gerçekleştirilir: itmek, b'ye bas, Ekle, pop c.
    • C = A + B ihtiyaçlar dört talimat. Yığın makineleri için, "0-işlenen" ve "sıfır-adres" terimleri aritmetik komutlar için geçerlidir, ancak tüm talimatlar için geçerli değildir, çünkü belleğe erişmek için 1-işlenen push ve pop komutları kullanılır.
  • 1 işlenen (tek adresli makineler), Lafta akümülatör makineleri, eski bilgisayarlar ve birçok küçük mikrodenetleyiciler: çoğu talimat, örtük olarak tek bir sağ işlenen (yani sabit, bir kayıt veya bellek konumu) belirtir. akümülatör sol işlenen (ve varsa hedef) olarak: yükle, b ekle, mağaza c.
    • C = A + B ihtiyaçlar üç talimat.
  • 2 işlenen - birçok CISC ve RISC makinesi bu kategoriye girer:
    • CISC - hareket et -e C; sonra B ekle -e C.
      • C = A + B ihtiyaçlar iki talimat. Bu, sonucu açık bir şekilde 'depolar' mağaza talimat.
    • CISC - Genellikle makineler bir bellek işleneni ile sınırlı talimat başına: a, reg1 yükle; b, reg1 ekle; mağaza reg1, c; Bu, herhangi bir bellek hareketi için bir yükleme / saklama çifti gerektirir. Ekle sonuç, olduğu gibi farklı bir yerde depolanan bir büyütmedir. C = A + Bveya aynı hafıza konumu: A = A + B.
      • C = A + B ihtiyaçlar üç talimat.
    • RISC - Açık bellek yüklemeleri gerektiren talimatlar şöyle olacaktır: a, reg1 yükle; yük b, reg2; reg1, reg2 ekle; mağaza reg2, c.
      • C = A + B ihtiyaçlar dört talimat.
  • 3 işlenen, verilerin daha iyi yeniden kullanımına izin verir:[4]
    • CISC - Ya tek bir talimat olur: a, b, c ekle
      • C = A + B ihtiyaçlar bir talimat.
    • CISC - Veya, komut başına iki bellek işleneniyle sınırlı makinelerde, hareket a, reg1; reg1, b, c ekle;
      • C = A + B ihtiyaçlar iki talimat.
    • RISC - aritmetik talimatlar yalnızca yazmaçları kullanır, bu nedenle açık 2 işlemli yükleme / saklama talimatları gereklidir: a, reg1 yükle; yük b, reg2; reg1 + reg2-> reg3 ekle; mağaza reg3, c;
      • C = A + B ihtiyaçlar dört talimat.
      • 2-işlenen veya 1-işlenenden farklı olarak, bu, yazmaçlarda a, b ve c üç değerinin tümünü daha sonra yeniden kullanım için hazır bırakır.[4]
  • daha fazla işlenen — bazı CISC makineleri, 3'ten fazla işlenen (yazmaç veya bellek erişimi) gibi çeşitli adresleme modlarına izin verir. VAX "POLY" polinom değerlendirme talimatı.

3-işlenen bir talimatın üç kaydını kodlamak için gereken çok sayıda bit nedeniyle, 16-bit talimatlara sahip olan RISC mimarileri, Atmel AVR gibi her zaman 2-işlenen tasarımlardır, TI MSP430 ve bazı sürümleri ARM Başparmak. 32 bit talimatlara sahip RISC mimarileri genellikle 3 işlenen tasarımlardır; KOL, AVR32, MIPS, Güç ISA, ve SPARC mimariler.

Her komut, bazı işlenen sayılarını (kayıtlar, bellek konumları veya anlık değerler) belirtir. açıkça. Bazı talimatlar, işlenenlerden birini veya her ikisini örtük olarak verir; örneğin, yığın veya örtük bir kayıtta. Bazı işlenenler örtük olarak verilmişse, talimatta daha az işlenen belirtilmelidir. Bir "hedef işlenen" hedefi açıkça belirttiğinde, ek bir işlenen sağlanmalıdır. Sonuç olarak, bir talimatta kodlanan işlenenlerin sayısı, mantıksal veya aritmetik bir işlem için matematiksel olarak gerekli argüman sayısından farklı olabilir ( derece ). İşlenenler ya talimatın "işlem kodu" gösteriminde kodlanır veya işlem kodunu izleyen değerler veya adresler olarak verilir.

Basıncı kaydedin

Basıncı kaydedin programın yürütülmesi sırasında herhangi bir zamanda ücretsiz kayıtların kullanılabilirliğini ölçer. Çok sayıda mevcut yazmaç kullanımda olduğunda kayıt baskısı yüksektir; bu nedenle, kayıt basıncı ne kadar yüksekse, kayıt içeriği o kadar sık ​​olmalıdır dökülmüş hafızaya. Bir mimaride yazmaç sayısını artırmak, kayıt baskısını azaltır ancak maliyeti artırır.[5]

Gömülü komut setleri gibi Başparmak çok yüksek kayıt baskısından muzdariptir çünkü küçük kayıt setleri, genel amaçlı RISC ISA'lar MIPS ve Alfa düşük kayıt basıncının tadını çıkarın. X86-64 gibi CISC ISA'lar, daha küçük kayıt setlerine sahip olmalarına rağmen düşük kayıt basıncı sunar. Bu, CISC ISA'ların sunduğu birçok adresleme modu ve optimizasyonundan (alt kayıt adresleme, ALU talimatlarındaki bellek işlenenleri, mutlak adresleme, PC'ye göre adresleme ve kayıttan kayda dökülmeler gibi) kaynaklanmaktadır.[6]

Talimat uzunluğu

Bir talimatın boyutu veya uzunluğu, bazılarında en az dört bit olmak üzere büyük ölçüde değişir. mikrodenetleyiciler bazı VLIW sistemlerinde yüzlerce bit. Kullanılan işlemciler kişisel bilgisayarlar, anabilgisayarlar, ve süper bilgisayarlar 8 ile 64 bit arasında komut boyutlarına sahiptir. X86'da mümkün olan en uzun talimat 15 bayttır (120 bit).[7] Bir komut seti içinde, farklı talimatların farklı uzunlukları olabilir. Bazı mimarilerde, özellikle çoğu azaltılmış komut seti bilgisayarlar (RISC), talimatlar sabit uzunluktadır, tipik olarak bu mimarinin Kelime boyutu. Diğer mimarilerde, komutlar değişken uzunluktadır, tipik olarak bir bayt veya a yarım kelime. Bazıları, örneğin KOL ile Başparmak uzatma Sahip olmak karışık değişken kodlama, yani iki sabit, genellikle 32 bit ve 16 bit kodlamadır, burada talimatlar serbestçe karıştırılamaz, ancak bir dalda (veya ARMv8'de istisna sınırı) arasında geçiş yapılması gerekir.

Bir RISC komut seti normalde sabit bir komut uzunluğuna sahiptir (genellikle 4 bayt = 32 bit), oysa tipik bir CISC komut seti, büyük ölçüde değişen uzunlukta talimatlara sahip olabilir (x86 için 1 ila 15 bayt). Sabit uzunlukta talimatların işlenmesi, çeşitli nedenlerden dolayı değişken uzunluklu talimatlara göre daha az karmaşıktır (bir talimatın bir önbellek satırı veya sanal bellek sayfası sınırını aşıp aşmadığını kontrol etmeye gerek yoktur,[4] örneğin) ve bu nedenle hız için optimize etmek biraz daha kolaydır.

Kod yoğunluğu

İlk bilgisayarlarda bellek pahalıydı, bu nedenle sınırlı belleğe sığacağından emin olmak için bir programın boyutunu küçültmek genellikle merkeziydi. Böylece, belirli bir görevi gerçekleştirmek için gereken tüm talimatların toplam boyutu, kod yoğunluğu, herhangi bir komut setinin önemli bir özelliğiydi. Yüksek kod yoğunluğuna sahip bilgisayarlar genellikle prosedür girişi, parametreli dönüşler, döngüler vb. İçin karmaşık talimatlara sahiptir (bu nedenle geriye dönük olarak adlandırılır) Karmaşık Komut Seti Bilgisayarları, CISC ). Ancak, daha tipik veya sık "CISC" komutları, yalnızca "ekle" gibi temel bir ALU işlemini bellekteki bir veya daha fazla işlenen erişimiyle birleştirir ( adresleme modları doğrudan, dolaylı, indeksli vb.). Bazı mimariler, iki veya üç işlenenin (sonuç dahil) doğrudan bellekte olmasına izin verebilir veya otomatik işaretçi artışı, vb. Gibi işlevleri gerçekleştirebilir. Yazılımla uygulanan komut kümeleri daha da karmaşık ve güçlü komutlara sahip olabilir.

Azaltılmış komut seti bilgisayarlar, RISC, ilk olarak hızla büyüyen bellek alt sistemleri döneminde yaygın olarak uygulanmıştır. Uygulama devresini basitleştirmek için kod yoğunluğunu feda ederler ve daha yüksek saat frekansları ve daha fazla yazmaç yoluyla performansı artırmaya çalışırlar. Tek bir RISC talimatı tipik olarak, kayıtların "eklenmesi" veya bir hafıza konumundan bir kayıt listesine "yükleme" gibi sadece tek bir işlemi gerçekleştirir. Bir RISC komut seti normalde sabit bir talimat uzunluğu oysa tipik bir CISC komut seti, çok çeşitli uzunluklarda talimatlara sahiptir. Bununla birlikte, RISC bilgisayarları normalde belirli bir görevi gerçekleştirmek için daha fazla ve sıklıkla daha uzun talimatlar gerektirdiğinden, veri yolu bant genişliğini ve önbellek hafızalarını doğal olarak daha az optimal kullanırlar.

Bazı gömülü RISC ISA'lar Başparmak ve AVR32 kod sıkıştırma adı verilen bir teknik sayesinde tipik olarak çok yüksek yoğunluk sergiler. Bu teknik, 16 bitlik iki talimatı tek bir 32-bit kelime halinde paketler, bu daha sonra kod çözme aşamasında açılır ve iki talimat olarak yürütülür.[8]

Minimal komut seti bilgisayarlar (MISC) bir biçimdir yığın makinesi, birkaç ayrı talimatın olduğu yerlerde (16-64), böylece birden çok talimat tek bir makine kelimesine sığabilir. Bu tür çekirdeklerin uygulanması genellikle çok az silikon gerektirir, bu nedenle bir FPGA veya içinde çok çekirdekli form. MISC'nin kod yoğunluğu, RISC'nin kod yoğunluğuna benzer; artan talimat yoğunluğu, bir görevi yerine getirmek için daha fazla ilkel talimat gerektirerek dengelenir.[kaynak belirtilmeli ]

Araştırmalar yapıldı yürütülebilir sıkıştırma kod yoğunluğunu iyileştirmek için bir mekanizma olarak. Matematiği Kolmogorov karmaşıklığı bunun zorluklarını ve sınırlarını açıklar.

Temsil

Bir programı oluşturan talimatlar, nadiren dahili, sayısal biçimleri (makine kodu ); programcılar tarafından bir montaj dili veya daha yaygın olarak şunlardan oluşturulabilir: Programlama dilleri tarafından derleyiciler.

Tasarım

Komut setlerinin tasarımı karmaşık bir konudur. Mikroişlemci için tarihte iki aşama vardı. İlki, birçok farklı talimatı olan CISC (Karmaşık Komut Seti Bilgisayarı) idi. Ancak 1970'lerde IBM gibi yerler araştırma yaptı ve setteki birçok talimatın kaldırılabileceğini buldu. Sonuç, daha küçük bir talimat seti kullanan bir mimari olan RISC (Azaltılmış Komut Seti Bilgisayarı) oldu. Daha basit bir komut seti, daha yüksek hızlar, daha düşük işlemci boyutu ve daha düşük güç tüketimi potansiyeli sunabilir. Ancak, daha karmaşık bir set ortak işlemleri optimize edebilir, belleği geliştirebilir ve önbellek verimlilik veya programlamayı basitleştirme.

Bazı komut seti tasarımcıları, bazı türler için bir veya daha fazla işlem kodu ayırır. sistem çağrısı veya yazılım kesintisi. Örneğin, MOS Teknolojisi 6502 00 kullanırH, Zilog Z80 sekiz kod C7, CF, D7, DF, E7, EF, F7, FF kullanırH[9] süre Motorola 68000 A000..AFFF aralığındaki kodları kullanınH.

Hızlı sanal makinelerin, bir komut setinin aşağıdaki koşulları karşılaması durumunda uygulanması çok daha kolaydır. Popek ve Goldberg sanallaştırma gereksinimleri.[açıklama gerekli ]

NOP slayt kullanılan bağışıklığa duyarlı programlama hafızanın "programlanmamış" durumu bir HAYIR.[şüpheli ]

Birden çok işlemcili sistemlerde, engellemeyen senkronizasyon algoritmaları uygulamak çok daha kolaydır[kaynak belirtilmeli ] talimat seti "gibi bir şey için destek içeriyorsagetir ve ekle ", "load-link / store-conditional "(LL / SC) veya" atomik karşılaştır ve değiştir ".

Komut seti uygulaması

Verilen herhangi bir komut seti, çeşitli şekillerde uygulanabilir. Belirli bir komut setini uygulamanın tüm yolları aynı şeyi sağlar programlama modeli ve bu komut setinin tüm uygulamaları aynı çalıştırılabilirleri çalıştırabilir. Bir komut setini uygulamanın çeşitli yolları, maliyet, performans, güç tüketimi, boyut vb. Arasında farklı ödünleşmeler sağlar.

Tasarım yaparken mikro mimari bir işlemcinin mühendisleri, toplayıcılar, çoklayıcılar, sayaçlar, kayıtlar, ALU'lar vb. gibi "fiziksel bağlantılı" elektronik devre blokları (genellikle ayrı olarak tasarlanmıştır) kullanırlar. transfer dilini kaydet daha sonra bu fiziksel mikro mimariyi kullanarak bir ISA'nın her bir talimatının kod çözme ve dizilişini tanımlamak için kullanılır. kontrol ünitesi bu açıklamayı uygulamak için (birçok tasarım orta yollar veya uzlaşmalar kullansa da):

  1. Bazı bilgisayar, komut setinin tamamını kod çözme ve sıralamayı "donanımla birleştirir" (tıpkı mikro mimarinin geri kalanı gibi).
  2. Diğer tasarımlar kullanır mikro kod bunu yapmak için rutinler veya tablolar (veya her ikisi) - genellikle çip üzerinde olduğu gibi ROM'lar veya PLA'lar veya her ikisi de (ayrı RAM'ler ve ROM'lar tarihsel olarak kullanılmıştır). Western Digital MCP-1600 mikrokod için ayrılmış, ayrı bir ROM kullanan eski bir örnektir.

Bazı tasarımlar, kontrol ünitesi için donanımla bağlantılı tasarım ve mikro kod kombinasyonunu kullanır.

Bazı CPU tasarımları bir yazılabilir kontrol mağazası - komut setini yazılabilir olarak derlerler Veri deposu veya flaş CPU'nun içinde (örneğin Rekursiv işlemci ve Imsys Cjip ),[10] veya bir FPGA (yeniden yapılandırılabilir bilgi işlem ).

Bir ISA ayrıca öykünmüş yazılımda bir çevirmen. Doğal olarak, yorumlama ek yükü nedeniyle, öykünücüyü çalıştıran donanım bir büyüklük sırası olmadığı sürece, öykünücüyü çalıştıran donanımda programları doğrudan çalıştırmaktan daha yavaştır. Günümüzde, yeni ISA veya mikro mimari satıcılarının, donanım uygulaması hazır olmadan önce yazılım öykünücülerini yazılım geliştiricilerinin kullanımına sunmaları yaygın bir uygulamadır.

Çoğunlukla uygulamanın ayrıntıları, talimat seti için seçilen belirli talimatlar üzerinde güçlü bir etkiye sahiptir. Örneğin, birçok uygulama talimat boru hattı talimat başına yalnızca tek bir bellek yüklemesine veya bellek deposuna izin vererek yükleme deposu mimarisi (RISC). Başka bir örnek için, uygulamanın bazı erken yolları talimat boru hattı yol açtı gecikme yuvası.

Yüksek hızlı dijital sinyal işlemenin talepleri ters yöne itti - talimatları belirli bir şekilde uygulanmaya zorladı. Örneğin, dijital filtreleri yeterince hızlı gerçekleştirmek için tipik bir MAC komutu dijital sinyal işlemcisi (DSP) bir tür kullanmalıdır Harvard mimarisi bir talimatı ve iki veri kelimesini aynı anda getirebilen ve tek bir döngü gerektirir çarpmak-biriktirmek çarpan.

Ayrıca bakınız

Referanslar

  1. ^ Pugh, Emerson W .; Johnson, Lyle R .; Palmer, John H. (1991). IBM'in 360 ve Erken 370 Sistemleri. MIT Basın. ISBN  0-262-16123-0.
  2. ^ Crystal Chen; Greg Novick; Kirk Shimano (16 Aralık 2006). "RISC Mimarisi: RISC ve CISC". cs.stanford.edu. Alındı 21 Şubat 2015.
  3. ^ "Dördüncü Kaynaklar: NOSC Posta Listesi Arşivi". strangegizmo.com. Arşivlenen orijinal 2014-05-20 tarihinde. Alındı 2014-07-25.
  4. ^ a b c John Cocke tarafından IBM'de RISC teknolojisinin evrimi - IBM Ar-Ge Dergisi, Cilt 44, Sayılar 1/2, s. 48 (2000)
  5. ^ Sayfa, Daniel (2009). "11. Derleyiciler". Bilgisayar Mimarisine Pratik Bir Giriş. Springer. s. 464. Bibcode:2009pica.book ..... P. ISBN  978-1-84882-255-9.
  6. ^ Venkat, Ashish; Tullsen, Dean M. (2014). ISA Çeşitliliğinden Yararlanma: Heterojen-ISA Çipli Çok İşlemcinin Tasarımı. 41. Uluslararası Bilgisayar Mimarisi Sempozyumu.
  7. ^ "Intel® 64 ve IA-32 Mimarileri Yazılım Geliştirici Kılavuzu". Intel Kurumu. Alındı 12 Temmuz 2012.
  8. ^ Weaver, Vincent M .; McKee, Sally A. (2009). Yeni mimariler için kod yoğunluğu endişeleri. IEEE Uluslararası Bilgisayar Tasarımı Konferansı. CiteSeerX  10.1.1.398.1967. doi:10.1109 / ICCD.2009.5413117.
  9. ^ Ganssle, Jack (26 Şubat 2001). "Proaktif Hata Ayıklama". embedded.com.
  10. ^ "Geçmişin ve Günümüzün Büyük Mikroişlemcileri (V 13.4.0)". cpushack.net. Alındı 2014-07-25.

daha fazla okuma

Dış bağlantılar