Komut seti mimarisi - Instruction set architecture

Gelen bilgisayar bilimleri , bir komut seti mimarisi ( ISA da denir), bilgisayar mimarisi , bir olan soyut bir model a bilgisayara . Merkezi işlem birimi (CPU) gibi bu ISA tarafından açıklanan talimatları yürüten bir cihaza uygulama denir .

Genel olarak bir ISA, desteklenen talimatları , veri türlerini , kayıtları , ana belleği yönetmek için donanım desteğini , temel özellikleri ( bellek tutarlılığı , adresleme modları , sanal bellek gibi ) ve bir uygulama ailesinin giriş/çıkış modelini tanımlar. ISA'nın.

Bir ISA , bu ISA'nın uygulamaları üzerinde çalışan makine kodunun davranışını, o uygulamanın özelliklerine bağlı olmayan bir şekilde belirtir ve uygulamalar arasında ikili uyumluluk sağlar . Bu, performans , fiziksel boyut ve parasal maliyet (diğer şeylerin yanı sıra) gibi özellikler bakımından farklılık gösteren , ancak aynı makine kodunu çalıştırabilen, böylece daha düşük performanslı, daha düşük maliyetli bir makinenin, yazılımı değiştirmek zorunda kalmadan daha yüksek maliyetli, daha yüksek performanslı bir makine ile değiştirilebilir. Ayrıca , bir ISA'nın daha yeni, daha yüksek performanslı bir uygulamasının önceki nesil uygulamalarda çalışan yazılımı çalıştırabilmesi için bu ISA'nın uygulamalarının mikro mimarilerinin evrimini sağlar .

Bir işletim sistemi , belirli bir ISA için standart ve uyumlu bir uygulama ikili arabirimi (ABI) sağlıyorsa, makine kodu, o ISA ve işletim sisteminin gelecekteki uygulamaları üzerinde çalışacaktır. Ancak, bir ISA birden çok işletim sistemini çalıştırmayı destekliyorsa, ilk işletim sistemi diğer işletim sistemi için oluşturulmuş makine kodunu çalıştırmayı 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'nın sürümleri için makine kodunu yürütmeye devam edebilecektir. Bu uzantıları kullanan makine kodu, yalnızca bu uzantıları destekleyen uygulamalarda çalışır.

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

genel bakış

Bir talimat seti mimarisi, talimat setini uygulamak için belirli bir işlemcide kullanılan işlemci tasarım teknikleri seti olan bir mikro mimariden ayırt edilir . Farklı mikro mimarilere sahip işlemciler ortak bir komut setini paylaşabilir. Örneğin, Intel Pentium ve Advanced Micro Devices Athlon , x86 komut setinin neredeyse aynı sürümlerini uygular , ancak tamamen farklı dahili tasarımlara sahiptir.

Belirli bir makinenin tasarımından farklı bir mimari kavramı, System/360'ın tasarım aşamasında IBM'de Fred Brooks tarafından geliştirilmiştir .

NPL'den [System/360] önce, şirketin bilgisayar tasarımcıları, yalnızca teknolojileri seçerek değil, aynı zamanda işlevsel ve mimari iyileştirmeler yaparak da maliyet hedeflerini yerine getirmekte özgürdü. SPREAD uyumluluğu hedefi, aksine, geniş bir maliyet ve performans aralığını kapsayan beş işlemcilik bir dizi için tek bir mimari varsayıyordu. Beş mühendislik tasarım ekibinden hiçbiri, maliyet ve performans hedeflerine ulaşmadaki zorlukları azaltmanın bir yolu olarak mimari özelliklerde ayarlamalar yapabileceklerine güvenemezdi.

Bazı sanal makineleri destek olduğunu baytkodu onların gibi ISA gibi Smalltalk , Java sanal makine ve Microsoft 'ın ortak dil çalışma zamanı , yerli makine koduna yaygın kullanılan kod yolları için bayt kodu çevirerek bu uygularlar. Ek olarak, bu sanal makineler, yorumlama yoluyla daha az kullanılan kod yollarını yürütür (bkz: Tam zamanında derleme ). Transmeta , bu şekilde VLIW işlemcilerin üzerine x86 komut setini uyguladı .

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

Bir ISA birkaç farklı şekilde sınıflandırılabilir. Yaygın bir sınıflandırma, mimari karmaşıklığa göredir . Bir karmaşık komut setli bilgisayar (CISC) nadiren pratik programlarında kullanılabilecek bazıları birçok uzman talimatlarını vardır. Bir Komut kümesi küçültülmüş bilgisayar (RISC) daha az yaygın operasyonlar onların seyrek kullanımı ile ofset ek işlemci yürütme zamanı sonuçlanan sahip, alt rutin olarak uygulanır yaparken verimli, sık programlarında kullanılan yalnızca talimatları uygulayarak işlemciyi kolaylaştırır.

Diğer türler arasında çok uzun talimat kelimesi (VLIW) mimarileri ve yakından ilişkili uzun talimat kelimesi (LIW) ve açıkça paralel talimat hesaplama (EPIC) mimarileri bulunur. Bu mimariler , RISC ve CISC'den daha az donanımla talimat düzeyinde paralellikten yararlanmaya çalışır ve derleyiciyi talimat sorunu ve zamanlamadan sorumlu hale getirir .

Minimal komut seti bilgisayarı (MISC) ve bir komut seti bilgisayarı (OISC) gibi daha az karmaşıklığa sahip mimariler üzerinde çalışılmıştır . Bunlar teorik olarak önemli türlerdir, ancak ticarileştirilmemiştir.

Talimatlar

Makine dili , ayrık ifadelerden veya yönergelerden oluşur . İşlem mimarisinde, verilen bir talimat şunları belirtebilir:

  • opcode (gerçekleştirilecek talimat) örneğin ekleme, kopyalama, test etme
  • herhangi bir açık işlenen:
kayıtlar
değişmez/sabit değerler
belleğe erişmek için kullanılan adresleme modları

Daha karmaşık işlemler, sıralı olarak yürütülen bu basit talimatların birleştirilmesiyle veya kontrol akışı talimatlarının yönlendirdiği şekilde oluşturulur .

talimat türleri

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

Veri işleme ve bellek işlemleri

  • Set bir kayıt sabit sabit bir değere.
  • Bir hafıza konumundan veya bir kayıttan bir hafıza konumuna veya bir kayıt defterine veri kopyalayın (bir makine talimatına genellikle hareket denir ; ancak bu terim yanıltıcıdır). Bir kaydın içeriğini, bir hesaplamanın sonucunu depolamak veya daha sonra üzerinde bir hesaplama yapmak üzere saklanan verileri almak için kullanılır. Genellikle yükleme ve depolama işlemleri olarak adlandırılır .
  • Donanım aygıtlarından veri okuyun ve yazın .

Aritmetik ve mantık işlemleri

  • Ekle , çıkarma , çarpma veya bölme muhtemelen bir veya daha fazla ayar, bir kayıt yerleştirmektir registerlarının değerlerini koşulu kodlarını bir de durum kaydı .
    • Arttırma ,bazı ISA'larda azalma , önemsiz durumlarda işlenen getirme tasarrufu.
  • Gerçekleştirmek Bitwise işlemleri alarak, örneğin, bağlaç ve ayrılma alarak, bir çift kayda girdi bitleri tekabül eden diğer deyişle bir kayıt, her bitin.
  • Kayıtlardaki iki değeri karşılaştırın (örneğin, birinin daha az olup olmadığını veya eşit olup olmadığını görmek için).
  • Kayan nokta talimat skayan noktalı sayılar üzerinde aritmetik için.

Kontrol akışı işlemleri

  • Şube programında başka bir konuma ve yürütmek talimatlar var.
  • Belirli bir koşul geçerliyse, koşullu olarak başka bir konuma dallanır .
  • Dolaylı olarak başka bir yere şube .
  • Bir sonraki komutun konumunu geri dönülecek bir nokta olarak kaydederken başka bir kod bloğunu çağırın .

Yardımcı işlemci talimatları

  • Bir yardımcı işlemciye ve işlemciden veri yükleyin/depolayın veya CPU kayıtları ile değiş tokuş yapın.
  • Yardımcı işlemci işlemlerini gerçekleştirin.

Karmaşık talimatlar

İşlemciler, komut setlerinde "karmaşık" komutlar içerebilir. Tek bir "karmaşık" talimat, diğer bilgisayarlarda birçok talimat alabilen bir şey yapar. Bu yönergeler simgelenen , çoklu adımlar çok sayıda fonksiyonel birimleri kontrol ya da başka şekilde verilen işlemci tarafından uygulanan basit talimatlar toplu daha büyük bir ölçekte görünür talimatlar. "Karmaşık" talimatların bazı örnekleri şunları içerir:

Karmaşık komutlar CISC komut setlerinde RISC komut setlerinden 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ı taşıma talimatlarını içermez, ancak çoğu RISC komut seti , aynı anda birden fazla veri parçası üzerinde aynı aritmetik işlemi gerçekleştiren SIMD veya vektör talimatlarını içerir. SIMD komutları, büyük vektörleri ve matrisleri minimum sürede manipüle etme yeteneğine sahiptir. SIMD talimatları , ses, görüntü ve video işlemede yaygın olarak yer alan algoritmaların kolay paralelleştirilmesine olanak tanır . MMX , 3DNow! gibi ticari isimler altında çeşitli SIMD uygulamaları piyasaya sürülmüştür ! ve AltiVec .

Komut kodlaması

Bir komut, 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" talimatıdır.

Geleneksel mimarilerde, bir talimat, kaydedilecek bellek içeriği eklemek gibi gerçekleştirilecek işlemi belirten bir işlem kodu ve kayıtları , bellek konumlarını veya değişmez verileri belirtebilen sıfır veya daha fazla işlenen belirteci içerir . İşlenen belirteçleri, anlamlarını belirleyen adresleme modlarına sahip olabilir veya sabit alanlarda olabilir. İçinde çok uzun bir emir sözcüğü birçok içerir (VLIW) mimarileri, mikro mimarileri, aynı anda birden çok işlem kodları ve işlenen tek talimat belirtilmiştir.

Bazı egzotik komut kümelerinin, aktarımla tetiklenen mimariler (TTA) gibi bir işlem kodu alanı yoktur , yalnızca işlenen(ler) vardır.

Forth sanal makine ve diğer " 0-işlenen " komut setleri, bazı gibi herhangi işlenen belirteci alanları eksikliği yığın makineleri NOSC dahil.

Koşullu komutlar genellikle bir yüklem alanına sahiptir - bir işlemin gerçekleştirilmemesinden ziyade gerçekleştirilmesine neden olmak için belirli koşulu kodlayan birkaç bit. Örneğin, koşullu bir dal 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 setleri ayrıca koşullu hareketlere sahiptir, böylece hareket yürütülür ve koşul doğruysa ve yürütülmezse hedef konumda depolanan veriler ve koşul yanlışsa hedef konum değiştirilmez. Benzer şekilde, IBM z/Architecture , koşullu bir mağaza talimatına sahiptir. Birkaç talimat seti, her talimatta bir yüklem alanı içerir; buna dal yüklemi denir .

işlenen sayısı

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

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

C = A+B
  • 0 işleneni ( sıfır adresli makineler ), yığın makineleri olarak adlandırılır : Tüm aritmetik işlemler yığındaki en üstteki bir veya iki konum kullanılarak yapılır: push a, push b, add, pop c.
    • C = A+Bdört talimata ihtiyacı var . Yığın makineler için, "0-işlenen" ve "sıfır-adres" terimleri aritmetik komutlar için geçerlidir, ancak tüm komutlar için geçerli değildir, çünkü 1 işlenenli push ve pop komutları belleğe erişmek için kullanılır.
  • 1 işlenen ( tek adresli makineler ), sözde akümülatör makineleri , ilk bilgisayarları ve birçok küçük mikro denetleyiciyi içerir : çoğu talimat, örtük akümülatör olarak tek bir sağ işleneni (yani, sabit, bir kayıt veya bir bellek konumu) belirtir . sol işlenen (ve varsa hedef): load a, add b, store c.
    • C = A+Büç talimata ihtiyacı var .
  • 2 işlenen — birçok CISC ve RISC makinesi bu kategoriye girer:
    • - TAK move Aiçin C ; Daha sonra add Büzere C .
      • C = A+Biki talimata ihtiyacı var . Bu, sonucu açık bir mağaza talimatı olmadan etkili bir şekilde 'depolar' .
    • CISC — Genellikle makineler, talimat başına bir bellek işleneni ile sınırlıdır : load a,reg1; add b,reg1; store reg1,c; Bu, addsonucun içinde olduğu gibi farklı bir yerde C = A+Bveya aynı bellek konumunda depolanan bir büyütme olup olmadığına bakılmaksızın, herhangi bir bellek hareketi için bir yükleme/depolama çifti gerektirir : A = A+B.
      • C = A+Büç talimata ihtiyacı var .
    • RISC — Açık bellek yüklemeleri gerektiren talimatlar şöyle olacaktır: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c.
      • C = A+Bdört talimata ihtiyacı var .
  • 3-işlenen, verilerin daha iyi yeniden kullanılmasına izin verir:
    • CISC — Tek bir talimat haline gelir: add a,b,c
      • C = A+Bbir talimata ihtiyacı var .
    • CISC — Veya, talimat başına iki bellek işleneni ile sınırlı makinelerde move a,reg1; add reg1,b,c;
      • C = A+Biki talimata ihtiyacı var .
    • RISC — aritmetik komutlar yalnızca kayıtları kullanır, bu nedenle açık 2 işlenen yükleme/depolama talimatları gereklidir: load a,reg1; load b,reg2; add reg1+reg2->reg3; store reg3,c;
      • C = A+Bdört talimata ihtiyacı var .
      • 2 işlenen veya 1 işlenenden farklı olarak, bu, a, b ve c değerlerinin tümünü daha sonra yeniden kullanım için kayıtlarda bırakır.
  • daha fazla işlenen—bazı CISC makineleri, VAX "POLY" polinom değerlendirme talimatı gibi 3'ten fazla işlenene (kayıtlar veya bellek erişimleri) izin veren çeşitli adresleme modlarına izin verir .

3 işlenen talimatın üç kaydını kodlamak için gereken çok sayıda bit nedeniyle, 16 bitlik talimatlara sahip RISC mimarileri, Atmel AVR, TI MSP430 ve bazı ARM Thumb sürümleri gibi her zaman 2 işlenen tasarımlardır. . 32 bit komutlara sahip RISC mimarileri genellikle ARM , AVR32 , MIPS , Power ISA ve SPARC mimarileri gibi 3 işlenen tasarımlardır .

Her talimat, belirli sayıda işleneni (kayıtlar, bellek konumları veya anlık değerler) açıkça belirtir . Bazı talimatlar, bir veya her iki işleneni örtük olarak verir, örneğin yığının üstünde veya örtülü bir kayıtta saklanarak . Bazı işlenenler dolaylı olarak verilirse, talimatta daha az işlenen belirtilmesi gerekir. 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 ( arity ) için matematiksel olarak gerekli argüman sayısından farklı olabilir . İşlenenler ya komutun "opcode" gösteriminde kodlanır ya da opcode'dan sonra değerler veya adresler olarak verilir.

Kayıt basıncı

Kayıt basıncı , 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 kayıt kullanımdayken kayıt basıncı yüksektir; bu nedenle, yazmaç basıncı ne kadar yüksek olursa, yazmaç içeriğinin belleğe o kadar sık dökülmesi gerekir . Bir mimarideki kayıt sayısını artırmak, kayıt baskısını azaltır ancak maliyeti artırır.

Thumb gibi gömülü komut kümeleri , küçük kayıt kümelerine sahip oldukları için son derece yüksek kayıt basıncından muzdarip olsa da, MIPS ve Alpha gibi genel amaçlı RISC ISA'lar düşük kayıt basıncının tadını çıkarır . x86-64 gibi CISC ISA'lar, daha küçük kayıt kümelerine sahip olmalarına rağmen düşük kayıt basıncı sunar. Bunun nedeni, CISC ISA'ların sunduğu birçok adresleme modu ve optimizasyonu (alt kayıt adresleme, ALU komutlarındaki bellek işlenenleri, mutlak adresleme, PC'ye göre adresleme ve kayıttan kayda dökülmeler gibi).

talimat uzunluğu

Bir talimatın boyutu veya uzunluğu, bazı mikrodenetleyicilerde dört bit kadar küçükten , bazı VLIW sistemlerinde yüzlerce bite kadar geniş ölçüde değişir . Kişisel bilgisayarlarda , ana bilgisayarlarda ve süper bilgisayarlarda kullanılan işlemciler , 8 ile 64 bit arasında talimat boyutlarına sahiptir. x86'da mümkün olan en uzun talimat 15 bayttır (120 bit). Bir komut seti içinde, farklı komutların farklı uzunlukları olabilir. Bazı mimarilerde, özellikle çoğu azaltılmış komut seti bilgisayarlarında (RISC),komutlar sabit bir uzunluktadır ve tipik olarak o mimarinin kelime boyutuna karşılık gelir. Diğer mimarilerde, talimatların değişken uzunluğu vardır, tipik olarak bir baytın veya yarım kelimenin tam katları. Gibi bazı, ARM ile başparmak-uzantısı olan karışık , değişken kodlama bu talimatlar serbest karıştırılamaz ancak ARMv8 bir kolun (veya durum sınırında arasında açık olmalıdır sabitlenmiş iki, genellikle de 32-bit ve 16 bit kodlama, bir ).

Bir RISC komut seti normalde sabit bir talimat uzunluğuna (genellikle 4 bayt = 32 bit) sahipken, tipik bir CISC komut seti, çok farklı uzunluktaki talimatlara sahip olabilir (x86 için 1 ila 15 bayt). Sabit uzunluktaki talimatların işlenmesi, çeşitli nedenlerle (örneğin, bir talimatın bir önbellek satırında mı yoksa sanal bellek sayfa sınırında mı olduğunu kontrol etmek zorunda kalmadan) değişken uzunluktaki talimatlardan daha az karmaşıktır ve bu nedenle hız için optimize etmek biraz daha kolaydır.

kod yoğunluğu

1960'ların başında bilgisayarlar, ana belleklerde bile pahalı ve çok sınırlıydı. Sınırlı belleğe sığacağından emin olmak için bir programın boyutunu en aza indirmek genellikle çok önemliydi. Bu nedenle, belirli bir görevi gerçekleştirmek için gereken tüm talimatların birleşik boyutu, kod yoğunluğu , herhangi bir talimat setinin önemli bir özelliğiydi. Mini bilgisayarların ve daha sonra mikroişlemcilerin başlangıçtaki küçücük belleklerinde önemini korudu. Akıllı telefon uygulamaları, yavaş İnternet bağlantıları üzerinden tarayıcılara indirilen uygulamalar ve gömülü uygulamalar için ROM'lar için yoğunluk günümüzde önemini korumaktadır. Arttırılmış yoğunluğun daha genel bir avantajı, önbelleklerin ve komut önceden getirmenin geliştirilmiş etkinliğidir.

Yüksek kod yoğunluğuna sahip bilgisayarlar genellikle prosedür girişi, parametreli dönüşler, döngüler vb. için karmaşık talimatlara sahiptir (bu nedenle geriye dönük olarak Karmaşık Komut Seti Bilgisayarları , CISC olarak adlandırılır ). Ancak, daha tipik veya sık "CISC" komutları, yalnızca "ekleme" gibi temel bir ALU işlemini bellekteki bir veya daha fazla işlenenin erişimiyle birleştirir ( doğrudan, dolaylı, dizinlenmiş vb. adresleme modlarını kullanarak ). . Bazı mimariler, doğrudan bellekte iki veya üç işlenene (sonuç dahil) 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ü talimatlara sahip olabilir.

Azaltılmış komut seti bilgisayarlar , RISC , ilk olarak hızla büyüyen bellek alt sistemlerinin bir döneminde yaygın olarak uygulandı. Uygulama devresini basitleştirmek için kod yoğunluğunu feda ederler ve daha yüksek saat frekansları ve daha fazla kayıt aracılığıyla performansı artırmaya çalışırlar. Tek bir RISC komutu, tipik olarak, kayıtların "eklenmesi" veya bir bellek konumundan bir kayıt defterine "yüklenmesi" gibi yalnızca tek bir işlemi gerçekleştirir. Bir RISC komut seti normalde sabit bir komut uzunluğuna sahiptir , oysa tipik bir CISC komut seti, çok farklı uzunluktaki komutlara 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, doğal olarak veri yolu bant genişliğini ve önbellek belleklerini daha az optimal şekilde kullanırlar.

Thumb ve AVR32 gibi belirli gömülü RISC ISA'lar , kod sıkıştırma adı verilen bir teknik sayesinde tipik olarak çok yüksek yoğunluk sergiler. Bu teknik, iki adet 16 bitlik talimatı tek bir 32 bitlik kelimeye paketler ve daha sonra kod çözme aşamasında paketten çıkarılır ve iki talimat olarak yürütülür.

Minimal talimat seti bilgisayarları (MISC), birkaç ayrı talimatın (16-64) bulunduğu, böylece birden fazla talimatın tek bir makine kelimesine sığabileceği bir yığın makine biçimidir . Bu tür çekirdeklerin uygulanması genellikle çok az silikon gerektirir, bu nedenle bir FPGA veya çok çekirdekli biçimde kolayca gerçekleştirilebilirler . MISC'nin kod yoğunluğu, RISC'nin kod yoğunluğuna benzer; artan talimat yoğunluğu, bir görevi yapmak için daha fazla ilkel talimat gerektirerek dengelenir.

Kod yoğunluğunu iyileştirmek için bir mekanizma olarak yürütülebilir sıkıştırma konusunda araştırmalar yapılmıştır . Kolmogorov karmaşıklığının matematiği, bunun zorluklarını ve sınırlarını tanımlar.

temsil

Bir programı oluşturan talimatlar nadiren dahili, sayısal formları ( makine kodu ) kullanılarak belirtilir; bunlar bir assembly dili kullanan programcılar tarafından belirtilebilir veya daha yaygın olarak derleyiciler tarafından yüksek seviyeli programlama dillerinden oluşturulabilir .

Tasarım

Komut setlerinin tasarımı karmaşık bir konudur. Mikroişlemci için tarihte iki aşama vardı. Birincisi, 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 ortadan 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, azaltılmış işlemci boyutu ve azaltılmış güç tüketimi potansiyeli sunabilir. Ancak, daha karmaşık bir küme, genel işlemleri optimize edebilir, bellek ve önbellek verimliliğini iyileştirebilir veya programlamayı basitleştirebilir.

Bazı komut seti tasarımcıları, bir tür sistem çağrısı veya yazılım kesintisi için bir veya daha fazla işlem kodu ayırır . Örneğin, MOS Technology 6502 kullanımları 00 H , birZilog Z80 sekiz kodları C7, CF, D7, DF, E7, EF, F7, FF kullanan H ise Motorola 68000 serisi A000..AFFF kullanım kodları H .

Bir komut seti Popek ve Goldberg sanallaştırma gereksinimlerini karşılıyorsa, hızlı sanal makinelerin uygulanması çok daha kolaydır .

NOP slayt kullanılan bağışıklık farkında programlama bellek "unprogrammed" devlet olarak yorumlanır eğer uygulamak çok daha kolaydır NOP'da .

Birden fazla işlemci bulunan sistemlerde, engellenmeyen senkronizasyon algoritmaları komut kümesi örneğin "olarak bir şey için destek içerir eğer uygulamak çok daha kolaydır getir-eklenti ", " yük bağlantı / mağaza şartlı " (LL / SC) veya "atomik karşılaştırma ve takas ".

Komut seti uygulaması

Verilen herhangi bir talimat seti çeşitli şekillerde uygulanabilir. Belirli bir komut setini uygulamanın tüm yolları aynı programlama modelini sağlar ve bu komut setinin tüm uygulamaları aynı yürütülebilir dosyaları çalıştırabilir. Bir komut setini uygulamanın çeşitli yolları, maliyet, performans, güç tüketimi, boyut vb. arasında farklı dengeler sağlar.

Tasarlarken mikromimarisini bir işlemcinin, mühendisler böyle çeşit vb toplayıcılar, çoklayıcılar, sayaçlar, kayıtlar, ALU gibi "sert kablolu" elektronik devre bloklarını (genellikle ayrı olarak tasarlanmış) kullanmak kayıt aktarım dili sonra sık tanımlamak için kullanılır bu fiziksel mikromimariyi kullanarak bir ISA'nın her talimatının kodunun çözülmesi ve sıralanması. Bu açıklamayı uygulamak için bir kontrol ünitesi oluşturmanın iki temel yolu vardır (birçok tasarım orta yollar veya tavizler kullansa da):

  1. Bazı bilgisayarlar, komut setinin tamamının kod çözme ve sıralamasını "bağlantılı" olarak tasarlar (tıpkı mikromimarinin geri kalanı gibi).
  2. Diğer tasarımlar , bunu yapmak için mikrokod rutinleri veya tabloları (veya her ikisi) kullanır - tipik olarak çip üstü ROM'lar veya PLA'lar veya her ikisi ( geçmişte ayrı RAM'ler ve ROM'lar kullanılmış olmasına rağmen ). Western Digital MCP-1600 mikrokoda için özel, ayrı ROM kullanarak, eski bir örnektir.

Bazı tasarımlar, kontrol ünitesi için kablolu tasarım ve mikro kodun bir kombinasyonunu kullanır.

Bazı CPU tasarımları yazılabilir bir kontrol deposu kullanır ; komut setini yazılabilir bir RAM veya CPU ( Rekursiv işlemci ve Imsys Cjip gibi ) veya bir FPGA ( yeniden yapılandırılabilir bilgi işlem ) içinde flash olarak derlerler .

Bir ISA, bir yorumlayıcı tarafından yazılımda da taklit edilebilir . Doğal olarak, yorumlama yükü nedeniyle, öykünücüyü çalıştıran donanım çok daha hızlı olmadığı sürece, öykünücüyü çalıştıran donanım üzerinde doğrudan çalışan programlardan daha yavaştır. Bugün, yeni ISA'ların veya mikro mimarilerin satıcıları için, donanım uygulaması hazır olmadan önce yazılım öykünücülerini yazılım geliştiricilerin kullanımına sunmak yaygın bir uygulamadır.

Genellikle uygulamanın ayrıntıları, talimat seti için seçilen belirli talimatlar üzerinde güçlü bir etkiye sahiptir. Örneğin, talimat ardışık düzeninin birçok uygulaması, talimat başına yalnızca tek bir bellek yüküne veya bellek deposuna izin vererek bir yükleme-depolama mimarisine (RISC) yol açar . Başka bir örnek için, talimat ardışık düzenini uygulamanın bazı erken yolları bir gecikme yuvasına yol açtı .

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

Ayrıca bakınız

Referanslar

daha fazla okuma

Dış bağlantılar