Neden biri CISC'yi istesin ki?


42

Bilgisayar sistemleri dersimizde MIPS işlemcisiyle tanıştık. Dönem boyunca (yeniden) geliştirildi ve anlaşılması oldukça kolaydı. Bir RISC tasarımını kullanır , temel komutları düzenli olarak kodlanır ve telleri basit tutmak için bunlardan yalnızca birkaçı vardır.

CISC'nin farklı bir felsefe izlediği belirtildi . X86 komut setine kısaca baktım ve şok oldum . Kimsenin bu kadar karmaşık bir komut seti kullanan bir işlemci nasıl inşa etmek istediğini göremiyorum!

Bu yüzden işlemci pazarının büyük bölümlerinin neden CISC mimarisini kullandığına dair iyi argümanlar olmalı. Onlar neler?


Yanıtlar:


47

Genel bir tarihsel eğilim var.

Eski günlerde hatıralar küçüktü ve programlar küçüktü. Ayrıca, derleyiciler çok akıllı değildi ve bir çok program assembler'a yazıldı, bu yüzden birkaç komut kullanarak bir program yazabilmek iyi bir şeydi. Talimat boru hatları basitti ve işlemciler bir seferde bir talimat aldı. İşlemcinin içindeki makineler yine de oldukça karmaşıktı; kod çözme talimatlarının çok fazla bir yük olduğu düşünülmedi.

1970'lerde CPU ve derleyici tasarımcıları bu tür karmaşık talimatlara sahip olmanın sonuçta çok da yardımcı olmadığını fark etti. Bu talimatların gerçekten verimli olduğu işlemciler tasarlamak zordu ve bu talimatlardan gerçekten yararlanan derleyicileri tasarlamak zordu. Talaş alanı ve derleyici karmaşıklığı, daha genel amaçlı kayıtlar gibi daha genel arayışlara daha iyi harcandı. RISC üzerinde Wikipedia makalesi daha ayrıntılı olarak açıklıyor.

MIPS nihai RISC mimarisidir, bu yüzden bu kadar sık ​​öğretiliyor.

X86 ailesi biraz farklıdır. Aslında çok az hafızalı (büyük talimatlara yer yok) sistemler için tasarlanan bir CISC mimarisiydi ve birçok ardışık versiyondan geçti. Bugünün x86 komut seti, sadece CISC olduğu için karmaşık değil, aynı zamanda muhtemelen bir x86_64 işlemciye sahip bir Pentium ile 80386 olan bir 8088 olduğu için.

Günümüz dünyasında, RISC ve CISC artık bir zamanlar olabileceği siyah-beyaz ayrımı değil. Çoğu CPU mimarisi farklı gri tonlarına gelişti.

RISC tarafında, bazı modern MIPS varyantları, düzgün olmayan bir kodlamayla, çarpma ve bölme talimatlarını ekledi. ARM işlemcileri daha karmaşık hale geldi: birçoğunda "orijinal" 32 bitlik talimatlara ek olarak Thumb olarak adlandırılan 16 bitlik bir komut seti var, CPU'da JVM komutlarını uygulamak için Jazelle'den bahsetmiyorum . Modern ARM işlemcilerinde multimedya uygulamaları için SIMD talimatları da var : bazı karmaşık talimatlar sonuçta karşılığını veriyor.

CISC tarafında, tüm yeni işlemciler bir dereceye kadar içeride RISC'dir. Tüm bu karmaşık makro talimatlarını tanımlamak için mikro kodları var . İşlemcinin tamamen karmaşık olması, her modelin tasarımının birkaç yıl sürmesine, hatta bir RISC tasarımında bile, çok sayıda bileşende, boru hattında ve tahminde bulunup bulunmadığına ve yapılmamasına neden olur.

Öyleyse neden en hızlı işlemciler dışarıda CISC olarak kalıyor? Bunun bir kısmı, x86 (32 bit ve 64 bit) ailesi durumunda, tarihsel uyumluluktur. Ama hepsi bu değil. 2000'lerin başında, Intel, Itanium mimarisini zorlamaya çalıştı . Itanium çok karmaşık bir talimattır (gerçekte CISC değil: tasarımı EPIC olarak adlandırılmıştır ). Eski moda olan talimatları sırayla yürütme fikrini bile ortadan kaldırır: tüm talimatlar bir sonraki bariyere kadar paralel olarak yürütülür. Itanium'un almadığı sebeplerden biri, Intel'de veya başka bir yerde hiç kimsenin bunun için uygun bir derleyici yazamamasıydı. Şimdi x86_64 gibi eski, çoğunlukla sıralı bir işlemci, anladığımız bir şey.


4
Bunun nedenlerinden biri, CISC'nin sınırlı hafızadan (kompakt talimatları zorunlu kılma) ortaya çıkmasıdır; günümüzün CPU'ları hafızadan çok daha hızlıdır ( bir hafıza getirme yüzlerce talimatı uygulamak için yeterli zaman alır ve boşluk daha da genişler). Önbelleği etkin bir şekilde kullanmak için küçük talimatlar çok önemlidir.
vonbrand

Oh, ve RISC'nin arkasındaki itici güçlerden biri, günün CISC makinelerinde yürütülen talimatların analizi idi. Onlar ezici bir şekilde basit talimatlar verdiler, bu yüzden karmaşık kod çözme işleminin ekstra çabası (devre ve zaman çizelgesi) çoğunlukla boşa harcandı.
vonbrand

2
@ vonbrand: Talimatlar içeren işlemcilerde, dec [address]biraz kullanılma eğilimindedirler ve ldr r0,[address] / sub r0,#1 / str r0,[address] bunları verimli bir şekilde uygulayabilecek mimariler üzerinde önemli bir avantaj sunarlar . RISC'nin ortaya çıkışı, boru hattı olmayan bir makinenin decbir load/sub/storedizinin iki katından daha hızlı bir şekilde uygulayabilmesine rağmen, boru hattının , ikinci dizinin hızını, okuma-modifiye-yazma hızını geliştirebildiğinden daha fazla artırabilmesinden kaynaklanmaktadır. talimat.
supercat,

@ vonbrand haklı, bu RAM neredeyse olduğu kadar değerli değil, ancak önbellek. Komut setini kodlayan Huffman (bugünlerde CISC'nin ne olduğu gibi) bu anlamda hala değerli.
Takma

Itanium hakkında hiç bilmediğim bir şey! Teşekkürler. (Ayrıca, birisinin hala üst seviye MIPS CPU'ları yapmasını diliyorum - program için etkileyici göründüğü gibi ses çıkarıyorlar. Tasarımların var olduğunu biliyorum ama hiç kimse onları FPGA'lardan
çıkarmadı

15

X86 komut seti özel bir durumdur. Motorola'nın 68K ve DEC'in VAX'in CISC için biraz daha iyi olduğunu düşünüyorum. Çok sayıda meclis dili kodunun yapıldığı günlerde, insanlar çok düzenli, çok kapsamlı bir ISA'nın daha iyi olduğunu düşünüyorlardı: Bence derleme kodu ile insanların " Semantik Boşluğu " düşündükleri arasındaki farkı aradıklarına inanıyorum . Teorik olarak, düşündüğünüz şekilde eşleşen bir talimat seti istediniz.

CISC için diğer büyük tasarım sürücüsü "diklik" gibi görünüyor: her talimat her adresleme modunda çalışacak (kayıt, mutlak adres, göreceli ofset, vb.). Dağıtılmış Hesaplama Ortamı'nda (DCE) ve CORBA'da API tasarımında ortogonalliğin öfkeli adamını görebilirsiniz. Bu fikir, komut seti tasarımıyla sınırlı değildir.


5
Tuhaflık pratikte ortogonalliğin , tüm seçeneklerin birliği anlamına geldiği anlamına geliyor .
Dave Clarke,

Bu ortogonallık kesinlikle çok ileri götürülebilir, ancak hafızaya faydalı bir yardımcıdır. Motorola 6502'yi çok sevdim, ancak "bu talimatlar X, bu sadece Y, hiçbiri üçüncüsü yok" kayıt kullanımıyla ilgili kısıtlamalar her türlü çıldırtıcı.
VAX’ın buluşması

@ vonbrand: 6502 Motorola değildi - Motorola 6800’e rakip olarak üreten MOS Technologies idi. Bazen, şube dışı tüm talimatlar varsa, 6502’nin daha mı basit veya daha karmaşık olacağını merak ettim. operandlar aynı kodlamayı kullandılar (24 komut kez sekiz adresleme modunun oldukça kolay bir şekilde kodu çözülebildi). Özellikle CMP'nin sekiz adresleme modu ve DEC ile yalnızca dört çalıştığını merak ediyorum, ancak ("6502'nin NMOS versiyonlarında" biri bu talimatlar için opcodları bir araya getiriyorsa, sadece bir "DCP" almayacak) talimat ...
supercat

... DEC gibi davranır, ancak azalmanın sonucunu akümülatördeki değerle karşılaştırır ve bayrakları uygun şekilde ayarlar, ancak DCP DEC ile kullanılamayan adresleme modlarını doğru şekilde kullanır. Donanımın doğru bir şekilde (ZP), Y'nin bir okuma-değiştirme yazma talimatı ile ele alınması, ancak komut kod çözücünün bu modun belgelenmiş herhangi bir okuma-değiştirme-yazma talimatında çalışmasına izin vermemesi garip.
supercat

1
Okuduklarımdan itibaren, RISC’deki “R” işlemcinin daha az talimat almış olduğu anlamına gelmez; aksine, azaltılmış talimatlar aldığı anlamına gelir; Bunun en büyük yönü, hafızanın yüklenmesi ve depolanması diğer işlemlerle birleştirilmemesi gereksinimidir.
supercat

7

CISC'nin bir nedeni, talimatlar için yoğun kodlamaya sahip olmaktı (bellek pahalıydı). Tüm RISC fikri, her zaman aynı ebat talimatlarını alarak işlemciyi hızlandırmaktı (karmaşık, yavaş "talimat boyutu belirleme" adımı yok), basit şeyler yapmalarını istemek (bu yüzden ne yapmaları gerektiğini anlamak için hızlıdır). . Hafıza ucuzdu. CPU üzerinde bu serbest devre alanı, diğer şeyler için (daha fazla kayıt, daha fazla işlem birimi, böylece bağımsız olmaları durumunda birkaç komut paralel olarak yapılabilir). CPU RAM'den çok daha yavaştığı için bu işe yaradı. Ancak, CPU hızlandı (ve paralel olarak daha fazlasını yaptı ve ...), RAM ise hızlanmadı (en azından paralelliği arttığı için CPU'nun veri tüketimiyle aynı oranda değildi). CPU kadar hızlı ama küçük olan önbellekle tanışın. Öyleyse, şimdi bellek, maliyet nedenlerinden dolayı değil, hız için tekrar yüksek seviyede. CISC canlanma zamanı. Bu arada, CPU'lar daha da karmaşıklaştı. Bugünün mikroişlemcisinin bir RISC derleyicisinin yaptığı şeylerden fazlasını yaptığı noktaya gelince: İşlemleri temel parçalara ayırın, iç RISCy talimatlarını yeniden sıralayın, böylece mümkün olduğunda eşzamanlı olarak yapılabilirler. RISC, bir nedenden dolayı "Derleyicide Önemli Öğeleri Rahatlat" olarak işaretlendi ...


1
Bellek kapasitesi, bazı gömülü sistemlerde, özellikle tüm bellek / depolamanın işlemci yongasında olduğu mikro denetleyicilerde hala önemlidir. Bu muhtemelen Renesas'ın yeni bir CISC ISA - RX - tanıtımı için önemli bir faktördü, yani sadece performans için kod yoğunluğu değil, (çoğunlukla?) Düşük depolama için.
Paul A. Clayton

Anladığım kadarıyla, RISC'nin "R'si" azaltılmış talimatlar kümesine değil, azaltılmış talimatlara atıfta bulundu. En önemlisi, 8086 gibi bir CISC işlemcide doğrudan belleğe bir değer eklenebilir, ancak bir RISC'de yükleme, ekleme ve kaydetme ayrı adımlar halinde gerçekleştirilmelidir. Çoğu durumda, CISC makineleri RISC makinelerine göre değişken uzunluktaki komut setlerine ve daha yoğun komut kodlarına sahiptir, ancak daha yeni ARM işlemciler değişken uzunluktaki komutları ve yine de ayrı yük ve depoları kullanır.
supercat

@ PaulA.Clayton Bu doğru, ancak bilgili olacağım ve harici RAM (denetleyici aracılığıyla SRAM veya DDR) ile bağlantı kurabileceğiniz ve ilave karmaşıklık ve düşük pratiklik pahasına bellek kapasitenizi artırabileceğinizi belirteceğim.
Wyatt8740,

3

CISC'nin asıl avantajı, azaltılmış bellek ve önbellek baskısıdır ve tek başına bunu, yüksek performans gerektiren uygulamalar için daha iyi hale getirir, çünkü bu tür sistemlerde büyük bir darboğaz, bellek bant genişliğidir. Eşit büyüklükte önbellek verildiğinde, CISC işlemcileri RISC'den daha fazla bilgi tanımlayabilir. Ayrıca, CISC komutları birçok mikro işlemi içerdiğinden, bireysel talimatlar yazmanın sağlayabileceği en hızlı uygulama yolunu sağlayabilecek mimari iyileştirmeler mümkün olabilir. Kısacası, CISC işlemciler, bellek yoğun uygulamalar için genellikle performans kazancı anlamına gelen bellek bant genişliğini kullanmada daha verimlidir.

Örneğin R1 = R2 + R3 + R4 + R5 + R6, sonucu gerçekleştirmek ve istifin üzerine itmek için, RISC kodunun şöyle yazıldığını söyleyin:

ADD  R1, R2, R3 (4-byte)
ADD  R1, R4, R5 (4-byte)
ADD  R1, R6, R0 (4-byte, R0=0)
PUSH R1         (4-byte)

ve bu şekilde 16 baytlık bir alan gerektirir.

CISC'ye gelince, farklı kodlama stilleri nedeniyle, aynı bilgi aşağıdaki gibi gösterilebilir ...

ADD R1, R2, R3 (4-byte)
ADD R1, R4, R5 (4-byte)
ADD R1, R6     (2-byte)
PUSH R1        (1-byte) 

bu sadece 12 bayt hafıza alır. Bu nedenle, bellek kullanımı, işlemcinin daha fazla talimat görmesine ve böylece boşa çevrimleri azaltmasına izin verecek şekilde geliştirilmiştir.


1
Bu yararlı bir bakış açısı sağlar, ancak sıfat kullanımında muhtemelen biraz fazla belirtilmiş görünmektedir. "büyük performans kazancı" - bunu ölçmek ister misiniz? "Büyük" kısmı haklı gösterebilir misin? Benzer şekilde "çok daha fazla bilgi" için.
DW

Linus Torvalds'ın da benzer bir ifade söylediğine inanıyorum. Sıfatlar yine de kaldırıldı.
Revanth Kamaraj

Bu doğru değil. CISC, hafıza bant genişliğini azaltmaz. Belki de baskı yap.
Jeff,

Jeff, Steve Furber'in ARM soc mimarisine bakın.
Revanth Kamaraj

Page 27 2. Baskı ARM Sistemi On Chip mimarisi.
Revanth Kamaraj

2

Böylece kimsenin yakalayamadığı önemli bir husus, hemen hemen tüm CISC işlemcilerin mikro kodlanmış mimariler olmasıdır. Bir mikro sekanslayıcı ve bir kontrol mağazası, kablolu bir kontrol cihazından çok daha az gayrimenkul tüketir ve talimat seti donanımı değiştirmeden değiştirilebilir.

Mikroişlemciler, sahaya girdiğimde yenilik cihazlarıydı. Yetmişli yıllarda ve seksenlerin başlarında çok yaygın bir uygulama, bit dilimli ALU'lar, bir mikro dizici tabanlı kontrol birimi ve içine mikro kodlanmış komut setinin yüklendiği ya da şişirildiği bir kontrol deposunu kullanan bir CPU'yu birleştirmekti. Bu bilgisayarlar 7400 serisi transistör-transistör mantığına (TTL) dayanıyordu. 78181 4-bit ALU, DEC PDP-11 ve erken VAX 11 bilgisayarları, Data General Nova, Xerox Alto ve Wang masaüstü bilgisayarı da dahil olmak üzere birçok işlemci oluşturmak için kullanıldı.


"Hiç kimsenin ortaya çıkarmamış olduğu önemli bir husus, neredeyse tüm CISC işlemcilerin mikro kodlanmış mimariler olmasıdır." Evet ve hayır. Talimat çizelgeleme için, modern CISC CPU'ları genellikle sadece eski sabit CISC komutları için mikro kodlanmış kontrole başvurur (örneğin, x87 aşkın talimatlar). Öte yandan, RISC yongaları bile zaman zaman bazı alt sistemler için durum makinelerine alternatif olarak mikro kod kontrolünü kullanıyor (örneğin, belirli bir üniteyi kontrol etmek için). Aslında, mikro kod ve durum tablosu arasındaki çizgi bulanık olabilir.
Takma ad

2

X86 uyumlu bir işlemci kullanmayan herhangi bir masaüstü bilgisayarı bulmakta zorlanacaksınız. Bu talimat seti MIPS'yi yendi, Sparc'u yendi, Alpha'yı yendi, Titanic'i yendi (bu adı yanlış yazmış olabilirim). Öte yandan MIPS bugün çok az var. Bugün ne düşündüğünüz önemli değil, zeki insanlar x86 komut setinin gerçekten iyi bir fikir olduğunu ve bununla bir ton para kazandıklarını düşünüyorlardı.

Bilgisayarlar RISC olarak başladı, çünkü karmaşık bir komut seti uygulayıcıların yeteneklerinin hemen ötesindeydi. Bir RISC komut seti görmek istiyorsanız, CDC 6400-6600 ve CDC Cyber ​​170-175 komut setine bakın. Bu doğru RISC. Yaklaşık 10 yıl önce, bazı yonga tasarımcılarına ne kadar alan gerektireceğini sordum (makul bir gelişmiş GPU yongasının köşesinde). Bana 1mm2'den bahsettiler - makinenin RAM'i dahil, bu alanın% 99'unu alacaktı.

İnsanlar CISC makineleri üretebildiklerinde , aslında bir avantajdaydılar. X86’nın MIPS, 1978 ve 1985’den çok daha önce piyasaya sürüldüğünü unutmayın. O zaman, talimatları okumak, kodlarını çözmek, bunları yapmak için işlemci çevrimlerine ihtiyacınız vardı. 1978'de MIPS, talimat başına ve işlem başına dört döngü almış olacaktı. Eğer "hafızaya kayıt ekle" gibi bir x86 talimatı alırsanız, talimat için belki 7 devir sürer, ancak 3 işlem gerçekleştirilir. Bu büyük bir avantajdı. Ve ne kadar farklı talimatlara sahip olursanız ve her bir talimat ne kadar güçlü olursa, avantaj o kadar büyük olur.

Ve x86 64 bit talimatı kabus önek kodlarıyla birlikte set edildiğinde, talimat setinin karmaşıklığı artık önemli değildi. Bugünlerde CISC sadece RISC'ye çevrilmiş ve tüm çeviri işi belki de çipin yüzde biri.


1

Bu sorunun, mobil ve tablet bilgisayarlara büyük bir kayma lehinde olan ve böylece RISC cpus'unu destekleyen bilgisayarcılıkta son zamanlardaki eğilimlerle ilgisi var ve Intel'i (muhtemelen dünyanın en büyük CISC danışmanı) bir dezavantajda bir “dezavantajda yakaladı. noktası" tür aynen böyle Grove dikkat çekti ve uyardı. Kısa öykü, CISC'nin, görünüşte yüksek enerji tüketiminden ötürü, mobil bilgi işlem saldırılarının büyük paradigma kayması / gamechanging altında erimeye başladığı görülüyor.

CISC muhtemelen her zaman masaüstünde olacak ancak mobil bilgisayarların yeni geleceği olarak kabul ediliyor. Gelişmekte olan birçok ülke (büyük potansiyel bilgisayar kullanan popülasyonlara sahip), aslında masaüstü aşamasını atlayacaktır. Bkz. Örneğin, Masaüstü bilgisayarların Yükselişi ve Düşüşü

Bu sorunun mükemmel bir örneği, Intel için mobil piyasada daha iyi bir pozisyona sahip "skunkworks" benzeri bir proje / inisiyatif aracılığıyla, Intel CPU'yu Atom CPU üzerinden daha iyi konumlandırmaya çalışan yeni bir pozisyonda çalışan Mike Bell hakkında okumak. destek. Mobil pazar, RISC mimarisine ve özellikle de ARM işlemcilerine, büyük oranda yüksek enerji verimliliğine (enerji tüketimi) bağlı olduğundan, sorunun cevabının başka hiçbir cevabın bahsetmediğini hesaplamak için yeni bir kilit kriterdir. İşte bu satırlar boyunca konuyla ilgili birçok iç şirket düşüncesini (ve sonrasında kapışmayı!) Ortaya çıkaran iki makale:


Zeyilname. matematiksel kavramla gevşek bir şekilde ilişkili olan iş temelli çekim noktaları üzerine bir makaleden bahsediyordu . bkz. örneğin Andy Grove ve çekim noktasındaki gizemler
saat

0

Diğer cevaplarda belirtilmeyen bir faktör ekonomiktir. Aynı zamanda Intel ile ilgili. CISC mimarisi büyük ölçüde x86 ve x64 aileleri tarafından temsil edilmektedir. Bunların hepsi, orijinal IBM PC'de kullanılan mütevazi 8088'den geliyor. Bu bilgisayar serisinin erken pazar hakimiyeti, Intel'in Ar-Ge için sağlam bir gelir akışına sahip olduğu anlamına geliyordu. Intel’in, ikinci kaynak anlaşmasını iptal ederek / iptal ederek rekabeti durdurabilmesi gerçeği ile birlikte, CPU fiyatlarının aşırı seviyelere yükselebileceği, brüt kar marjlarının çok zengin olacağı anlamına geliyordu.

Böylece, diğer CPU üreticileri ayak uydurmak için mücadele ederken, Intel daha yeni ve daha hızlı ürünler geliştirmek için milyarlarca dolar harcadı. RISC yarışması neredeyse bu kadar para harcayamıyordu. Birçok RISC işlemcisi piyasadan çıktı. Bazıları:

Aralık Alpha, Fairchild Clipper, AMD 29000, SPARC, MIPS, GÜÇ (PC kullanımı için), Hitachi SuperH ...

RISC ve CISC savaşının sona erdiğini ve CISC'nin kazandığını açıklayan o dönemin cezalarını hatırlıyorum. Olmadı. Sadece herkesi harcadı.

Bu dinamik hiç değişebilir mi? Zaten öyle. Hiçbir ekonomik avantaj mutlak değildir.

X86'nın Aşil topuklularından biri, iktidarın acayip iştahı. Bu, enerji tasarrufunun önemli olduğu pazarlarda (telefonlar / tabletler vb.) Daha küçük, daha çevik bir yarışmacının (ARM) gelişmesini sağlamıştır.

ARM ekibinin bir üyesinin bu konudaki harika bir videosu ARM İşlemci - Başarı Tohumlarını Ekim - Saat 8: 30'da Computerphile

X86 için ikinci sorun, Intel'in stratejisinin başarısıdır. Neredeyse tüm rekabeti ortadan kaldırmayı başardılar. Yavaşladılar. Şimdilik, yeni Intel işlemciler yalnızca mütevazı iyileştirmeler yaptı. Daha da kötüsü, süper zengin marjlar herhangi bir şirket için vazgeçmek zor bir diyet.

Bugün, ARM tabanlı sistemler Chip (SOC) ve AMD'den gelen x64 yongalar yine CPU pazarını ilginç bir yer haline getiriyor. (BENİM NACİZANE FİKRİME GÖRE)


0

Birinin bir CISC uygulamayı tercih etmesinin pek çok nedeni vardır. En belirgin neden, mevcut bir CISC komut seti ile ikili uyumluluk içindir. Yazılım ikili çeviri teknolojisi gelişmiş olsa da, donanım tabanlı uyumluluğun bazı teknik avantajları (ayrıca daha az çeviri önbelleğe almanın dezavantajı) ve daha güvenilir görünmenin daha az teknik avantajı vardır.

Kod yoğunluğu, belki de CISC'yi seçmenin en önemli ikinci nedenidir. Renesas RX, kod belleği boyutunun önemli bir maliyet faktörü olduğu mikrodenetleyicileri hedef aldığı için özellikle kod yoğunluğu için bir CISC olarak tasarlanmıştır. Değişken uzunluklu talimatlar, karmaşık talimatlar (çoğunlukla daha fazla adresleme modu), örtülü işlenenler ve daha düşük kayıt, tüm fayda kodu yoğunluğunu sayar.

CISC'yi seçmenin tarihsel (ve bence yanlış yönlendirilmiş) bir nedeni, daha yüksek bir dil ve işlemci kullanan programcılar arasındaki anlamsal boşluğu kapatmaktı. Karmaşık talimatlar genellikle bir basit talimatlar dizisi ile değiştirilebildiği için, bir RISC için daha yüksek seviyeli bir dil derleyicisinin karmaşıklığının bir dil eşleştirme CISC'sinden daha karmaşık olması gerekmez. RISC (anlamsal çatışmayı) önler (burada bir işlemci talimatı karşılık gelen dil ifadesinden daha az veya çok çalışır) ve güç azaltma ve zamanlama optimizasyonlarını kolaylaştırır. (Daha fazla ayrıntı için bkz. "Derleyici geliştirme çabalarındaki CISC ve RISC ile ilgili travmalar nelerdir?"

Bir talimatın uygulanması ile ilgili önemli bir sabit maliyet olabilir. Bu, bu ek yükü daha gerçek çalışmaya yaymak için nispeten karmaşık talimatların kullanılmasını teşvik eder; Dinamik komut sayısının azaltılması performansı artırabilir. Mantık ve RAM'in maliyeti ROM'un maliyetinden çok daha yüksek olduğunda, karmaşık talimatlar için teşvik, bir talimatın mikro kod aranarak çözüldüğünden önemli olmuştur.

Tarihsel kanıtlarla çelişen CISC'yi kullanmanın bir nedeni, mikro kitaplığın her mikro mimari için optimize edilebildiği ve standart kütüphanelerin yeni bir uygulamanın özelliklerini kullanmakta yavaş olabileceğidir. REP MOVSB ​​için mikro kodun aksine, yazılım uygulamasının optimizasyon seviyesi, kütüphanelerin mikro koddan daha fazla dikkat çekebileceğini gösterir. Bunun bir kısmı daha geniş bir kullanıcı tabanını hedefleyen işlemci satıcısından gelebilir, bu nedenle çabanın haklı gösterilmesi, geliştiricilerin veya kullanıcıların yerel çıkarlarının uygulama çabalarını önyargılı hale getirdiği açık kaynaklı veya dahili yazılıma kıyasla daha zor olabilir.

İşlemci ile optimize edilmiş bir standart kütüphaneyi gönderebilmek önemli cazibe merkezlerine sahiptir. Bir platform standart kütüphanesinin saklanması ve yürütülmesi, yazılım-donanım kod tasarımı ile önemli ölçüde optimize edilebilir. Karmaşık bir komut ile bir Platform Soyutlama Katmanı çağrısı arasındaki ayrım ince (veya olmayan) olabilir. Bir RISC tasarımı, PAL çağrılarını idare etmek için aynı uygulama tekniklerini kullanabilir; CISC, özel donanımda genel talimat setinde bulunmayan işlemleri, akıllı önbellekleme ve kod çözmeyi kullanarak ve kayıt operandlarını belirtmeyi de içeren karmaşık talimatlar için olduğu gibi kullanabilir. genellikle bir ABI işlevine benzeyen adanmış kayıtlar kullanın). CISC ile ilişkilendirilen zihinsel model bu gibi optimizasyonları teşvik edebilir. Buna ek olarak, kullanıcılar bir "zorla dahil etme" tarafından daha az rahatsız olabilirler.

Nispeten karmaşık talimatların kodunun çözülmesi, bir talimatlar dizisinin semantik bir ünite olarak kabul edildiği, karşılaştırılabilir RISC deyim tanıma tekniğinden daha az ek yüke (ve belki de niyet alma konusunda daha güvenilirdir) sahip olabilir. Bu genel gider farkı, daha küçük bir uygulamada en belirgindir, ancak bu bilgiyi kullanmak için kullanılan genel gider, kod çözme tasarruflarının önemini azaltır.

Ek bağlamsal bilgi donanım optimizasyonunu kolaylaştırabilir. Örneğin, bellekteki bir değeri artırırken, donanım bellek adresinin iki kez kullanıldığını (yük ve depo için) önbellek yolunda kayıt ve önbellekleme için bir fırsat sağladığını fark edebilir. Karmaşık talimatlar bu bilgileri açıkça sağlayabilir. Karmaşık bir talimatta, ara değerler açık bir ömre sahiptir (talimatın değeri); geleneksel bir RISC siciline sahip olan kayıt defterlerinin, geçerliliğin sona erdiğini belirtmek için açıkça üzerine yazılması gerekir. (Not: Bir RISC, her kullanımdan sonra her zaman sıfırlanan ve tek kullanımlık bir geçici değer belirtmek için bir araç sağlayan bir kayıt belirtebilir. Bu tür talimatlar orta derecede daha karmaşık olacaktır.)

Uygulama detayları bir soyutlama katmanının arkasına gizlenmezse, farklı tradeoffiyonları optimize etmek için farklı mikro mimarileri kullanmak zorlaşır. Mimari tasarım olarak mikro mimari detayların ortaya çıkarılması, mikro mimariyi uyumluluk garantisine kilitler. PAL yazılımı, karmaşık talimatlarla aynı şekilde optimize edilebilse de, donanım yazılımı kod tasarımı gerektirir. Örgütsel ayrılık ve çeşitlilik, kod tasarımını zorlaştırır.

Karmaşık talimatlar, ayrıcalıklı duruma güvenli erişim sağlayabilir. Örneğin, karmaşık talimatlar genellikle kesintilere göre atomiktir. Bir RISC komut seti, kesintileri geçici olarak askıya almak için kullanıcı düzeyinde bir mekanizma sunsa da, muhtemelen bağlı yük gibi bir şey bile olsa, yazılım kesintiye uğrarsa işlemi açık bir şekilde yeniden dener, bunun sağlanması RISC'ler için tipik değildir.

Benzer şekilde, karmaşık bir talimat ayrıcalıklı bilgilerin kontrollü erişim ve / veya kullanımını sağlayabilir. Yürütülen işlem anlambilim kontrol ettiğinden, gerçek ayrıcalık ihlali önlenebilir. RISC odaklı alternatifler arasında PAL kodu (genellikle önemli bir ek yük vardır) ve bazı ayrıcalıklı bir duruma sahip olan yapılandırma kayıtlarına (veya kayıtların gölge kopyaları) maskeli erişim bulunur. Genel bir çözüm (RISC) sunmak, bir veya birkaç özel duruma (CISC) bir çözüm sağlamaktan daha zordur, ancak özel vakaların birikmesine karşı daha güçlü ve daha az hassastır. Birisi önemli özel durumların az olduğuna inanıyorsa, CISC daha çekici olabilir.

Karmaşık talimatlar ayrıca durumu yazılımdan gizleyebilir. Bunun belirgin bir avantajı, bağlam tasarrufu ve geri yükleme için olacaktır. Durumu kaydeden ve geri yükleyen talimatlarla, mimarinin, durumu belleğe aktarmak için belirli mekanizmaları değil, yalnızca bağlam boyutunu işletim sistemine iletmesi gerekir. Bu, eski bir işletim sisteminde çalışan uygulamaların durum ekleyen ISA uzantılarını kullanmalarına izin verir. (Yine, PAL yazılımı aynı işlevi sağlayabilir.)


X86'nın karmaşıklığının çoğu, birçok uzantıdaki uyumluluktan kaynaklanıyor. Karmaşık ve daha az ortogonal komutlarla (kod yoğunluğu için yararlı), yaygın olarak ihtiyaç duyulmayan bazı işlerin kaldırılması, gereksiz bağımlılık zincirlerinden kaçınılması (örneğin, yalnızca bir taşıma biti, yalnızca bir dinamik kaydırma miktarı kaydı), döndürülen bazı işler eklenmesi Yaygın olarak kullanılması ve karmaşık talimatların içinde optimize edilebilmesi - bunlardan herhangi birinin yeni bir talimat eklemesi ve ISA'nın estetik olarak daha az zevkli hale getirilmesi gerekir.

Çoğu durumda, bir RISC bu tür sorunlarla karşılaşmaz çünkü talimatlar çok dik ve ilkeldir. Bazı durumlarda, bir RISC'nin yeni ilkel eklemesi gerekebilir, ancak bu genellikle birden fazla kullanım için uygulanabilir.

Ek olarak, karmaşık talimatları desteklemek için altyapı oluşturulduktan sonra, ilave karmaşık talimatlar için engeller azaltılır. Yani, tekrar etmeme konusundaki karmaşık talimatların maliyetinin çoğu. Şiddetle RISC ISA'lar, CISCy özelliklerini tanıtmak için tamamlayıcı bir engelden muzdariptir.

X86'nın uzama sıklığı, kısmen genel amaçlı hesaplama ve ticari işlemci modelindeki popülerliğine de bağlanabilir (bunlar ayrıca ikili uyumluluğun önemini de arttırır). RISC ISA'ları genellikle, uygulamalara daha dar bir odaklanmayı teşvik eden ve belirli bir RISC ISA'nın uygulanması için rekabet eksikliğini teşvik eden sistem satıcılarına bağlanmıştır ve pazarlama için komut seti uzantılarının kullanılmasını engellemektedir. Popülerlik ayrıca yeni uzantı geliştirme maliyetini daha az önemli kılar (tekrar eden harcamalar daha yüksek hacimlerde daha az önemlidir).

X86 uyumluluk felsefesi muhtemelen daha temiz bir mola vermek yerine mevcut mekanizmaların genişletilmesine de önyargılıdır; bu, yeni özelliklerin mevcut özelliklerden daha fazla etkilenmesi anlamına gelir. Daha yüksek uzatma sıklığı aynı zamanda ortogonaliteyi azaltmaya meyilli yeniden kullanım mekanizmalarını teşvik eden daha fazla artımlı değişikliği teşvik eder.

Klasik MIPS'in akademik sunumunu (bu, MIPS'in modern sürümlerinin alt kümesidir ve çeşitli isteğe bağlı ISA uzantılarını hariç tutar) modern x86 ile (bu, 16-bit 8086'ya geri ikili uyumluluk ve daha da geriye montaj montajı uyumluluğu) izler. tüm tarihsel bagajı ile CISC için en iyi durumu ya da RISC için gerçekçi bir durumu sunmuyor.


-1

Az önce Talimat Kümesi Yapılandırmaları yapılmamıştı, Komut Kümesi Yapılandırmaları vardı. Uygulamaları var. özellikle çok büyük bellek bloğunda, uzun bir döngü için uzun bir süre yerine tüm video sayfasını aktarmak için yalnızca 4-16 bayta ihtiyaç duyan yüksek kapasiteli yonga setleri ile aktarılır. bu değişiyor ve RISC, yüksek kaliteli ekran kartlarında bulunan inanılmaz GPU'lar gibi çip setleri daha karmaşık hale geldikçe statüko haline geliyor.


-2

CISC cpu, RISC'den daha fazla avantaja sahiptir. CISC birçok kez RISC'den daha az donanım kaydı ve XNOR / XOR kapıları kullandığı için !!!! CISC'deki komut baytlarının çalıştırılacağını düşünün, sadece bir mantık geçidi var ve kayıt kullanılır. 1 milyar transistör yaklaşık 300 milyon mantık kapısı üretebiliyorsa, 300 milyon operatörü veya işlemi işleyebilir (IF, eşit, matematiksel, değişken, adresleme ... vb.) Ve daha fazla program CISC'de çalışabilir. Ancak RISC'de, bir programın boru hattı tasarımında çalıştırılması için bir düzine kez mantık geçidi sürmektedir. Yani 300 milyon x 50 kez (50 talimat) + 15000000000 bit sayıcılar !!! sözde RISC. CISC, cpu'yu yavaşlatan yazılım algılamasını azaltmak için daha fazla donanım kullanıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.