Karmaşık komut seti bilgisayarı - Complex instruction set computer

Bir kompleks talimat seti bilgisayar ( TAK / s ɪ s k / ) tek olan bir bilgisayar talimatları (örneğin bir yük olarak bir çok düşük seviyeli işlemleri yürütmek bellek , bir aritmetik işlem ve bir hafıza deposu ) ya da edebilen tek talimat içinde çok adımlı işlemler veya adresleme modları . Terim, azaltılmış komut seti bilgisayarının (RISC) aksine geriye dönük olarak üretildi ve bu nedenle , tipik ayırt edici özelliğin çoğu RISC tasarımının neredeyse tüm talimatlar için tek tip talimat uzunluğu kullanması olduğu, RISC olmayan her şey için bir şemsiye terim haline geldi. ve kesinlikle ayrı yükleme ve saklama talimatları kullanın.

CISC mimarilerinin örnekleri, bellek yükleme ve depolama işlemlerinin aritmetik komutlardan ayrılmadığı basit mikro denetleyicilere kadar karmaşık ana bilgisayarları içerir . Geriye dönük olarak CISC olarak etiketlenen belirli komut seti mimarileri, System/360 ila z/Architecture , PDP-11 ve VAX mimarileri ve diğerleridir. Birçok akademik yayında CISC olarak da etiketlenen iyi bilinen mikroişlemciler ve mikro denetleyiciler arasında Motorola 6800 , 6809 ve 68000 aileleri; Intel 8080 , iAPX432 ve x86 ailesi; Zilog Z80 , Z8 ve Z8000 -aileleri; National Semiconductor 32016 ve NS320xx line; MOS Technology 6502 - ailesi; Intel 8051 -ailesi; ve diğerleri.

Bazı tasarımlar, bazı yazarlar tarafından sınırda vakalar olarak kabul edilmiştir. Örneğin, Microchip Technology PIC , bazı çevrelerde RISC ve diğerlerinde CISC olarak etiketlenmiştir. 6502 ve 6809 hem de tarif edilmiştir RISC gibi, RISC prensiplerine aykırı kompleksi ele modunda ve bellek üzerinde işlem aritmetik talimatlar olmasına rağmen.

Teşvikler ve faydalar

RISC felsefesi öne çıkmadan önce, birçok bilgisayar mimarı sözde semantik boşluğu kapatmaya çalıştı , yani prosedür çağrıları, döngü kontrolü ve karmaşık adresleme modları gibi yüksek seviyeli programlama yapılarını doğrudan destekleyen komut setleri tasarlamak için veri yapısına izin verdi. ve dizi erişimleri tek bir talimatta birleştirilecek. Kod yoğunluğunu daha da geliştirmek için talimatlar da tipik olarak yüksek oranda kodlanmıştır. Bu tür komut setlerinin kompakt doğası, daha küçük program boyutları ve daha az ana bellek erişimi (genellikle yavaştı) ile sonuçlanır, bu da o zamanlar (1960'ların başı ve sonrası) bilgisayar belleği ve disk depolama maliyetinde muazzam bir tasarrufla sonuçlandı. yanı sıra daha hızlı yürütme. Ayrıca , Fortran veya Algol gibi yüksek seviyeli diller her zaman mevcut veya uygun olmadığından , montaj dilinde bile iyi bir programlama üretkenliği anlamına geliyordu . Gerçekten de, bu kategorideki mikroişlemciler bazen belirli kritik uygulama türleri için hala montaj dilinde programlanır.

Yeni talimatlar

1970'lerde, üst düzey dillerin analizi, derleyicilerin bazı karmaşık makine dilleri ürettiğini gösterdi. Yeni talimatların performansı artırabileceği belirlendi. Asla montaj dilinde kullanılması amaçlanmayan ancak derlenmiş yüksek seviyeli dillere iyi uyan bazı talimatlar eklendi. Derleyiciler bu yönergelerden yararlanmak için güncellendi. Kompakt kodlamalara sahip semantik açıdan zengin talimatların faydaları, modern işlemcilerde de görülebilir, özellikle önbelleklerin merkezi bir bileşen olduğu yüksek performanslı segmentte (çoğu gömülü sistemin aksine ). Bunun nedeni, bu hızlı, ancak karmaşık ve pahalı belleklerin boyutlarının doğası gereği sınırlı olması ve bu da kompakt kodu faydalı hale getirmesidir. Tabii ki, ihtiyaç duyulmalarının temel nedeni, ana belleklerin (yani, günümüzde dinamik RAM ) (yüksek performanslı) bir CPU çekirdeğine kıyasla yavaş kalmasıdır.

TASARIM SORUNLARI

Birçok tasarım, daha düşük maliyetle daha yüksek verim hedefine ulaşırken ve ayrıca yüksek seviyeli dil yapılarının daha az talimatla ifade edilmesine izin verirken, durumun her zaman böyle olmadığı gözlemlendi . Örneğin, karmaşık mimarileri düşük uç sürümleri (yani daha az donanım kullanarak) tarafından değerlendirilmiş performansını artırmak için mümkün olduğu durumlara yol açabilecek değil (talimatını girmek böyle bir prosedür çağrısı olarak ya) karmaşık bir komut kullanılarak yerine bir diziyi kullanarak daha basit talimatlar.

Bunun bir nedeni, mimarların ( mikro kod yazarları) bazen, mevcut temel donanım üzerinde verimli bir şekilde uygulanamayan özellikler de dahil olmak üzere, montaj dili talimatlarını "aşırı tasarlanmış" olmalarıydı. Örneğin, belki nadiren kullanılan bir kayıt veya bellek konumunun ayarlanması gibi "yan etkiler" (geleneksel işaretlerin üzerinde) olabilir; bu, sıradan (yinelenmeyen) dahili veri yolları veya hatta harici veri yolu aracılığıyla yapılsaydı, her seferinde ekstra döngüler talep eder ve bu nedenle oldukça verimsiz olur.

Dengeli yüksek performanslı tasarımlarda bile, yüksek düzeyde kodlanmış ve (nispeten) yüksek düzeyli komutların kodunun çözülmesi ve sınırlı bir transistör bütçesi içinde verimli bir şekilde yürütülmesi karmaşık olabilir. Bu nedenle, bu tür mimariler, kod çözme tablolarına ve/veya mikro kod sıralamasına dayalı daha basit, ancak (tipik olarak) daha yavaş bir çözümün uygun olmadığı durumlarda işlemci tasarımcısının çok fazla çalışmasını gerektirdi. Transistörlerin ve diğer bileşenlerin sınırlı bir kaynak olduğu bir zamanda, bu aynı zamanda daha az bileşen ve diğer performans optimizasyonları için daha az fırsat bıraktı.

RISC fikri

Birçok (ancak hepsinde değil) CISC işlemcilerinde mikrokod tarafından tanımlanan eylemleri gerçekleştiren devre, kendi içinde, yapı olarak çok erken CPU tasarımlarını anımsatan bir işlemcidir. 1970'lerin başında, bu, sıralama ve/veya kod çözme için ROM tabloları ve/veya PLA yapıları olmadan ( o zamanlar nispeten büyük ve pahalı) başa çıkmayı daha uygun hale getirmek için daha basit işlemci tasarımlarına geri dönme fikirlerine yol açtı .

Erken (geriye dönük olarak) RISC etiketli bir işlemci ( IBM 801  – IBM'in Watson Araştırma Merkezi, 1970'lerin ortası), orijinal olarak CISC tasarımlarında dahili bir mikrokod çekirdeği veya motoru olarak kullanılması amaçlanan sıkı bir şekilde ardışık düzene sahip basit bir makineydi. RISC fikrini biraz daha geniş bir kitleye tanıtan işlemci oldu. Görünür komut setinde de basitlik ve düzenlilik , makine kodu düzeyinde (yani derleyiciler tarafından görülen düzey) çakışan işlemci aşamalarını ( boru hattı ) uygulamayı kolaylaştıracaktır . Bununla birlikte, bu seviyedeki boru hattı, talimat döngü süresini azaltmak için bazı yüksek performanslı CISC "süper bilgisayarlarında" zaten kullanılıyordu (o sırada mümkün olan sınırlı bileşen sayısı ve kablolama karmaşıklığı içinde uygulamanın komplikasyonlarına rağmen). Öte yandan, CISC işlemcilerinde dahili mikrokod yürütme, belirli tasarıma bağlı olarak aşağı yukarı ardışık düzene bağlı olabilir ve bu nedenle aşağı yukarı RISC işlemcilerinin temel yapısına benzer.

CDC 6600 ilk kez 1965 yılında teslim süper, aynı zamanda geriye dönük RISC olarak tarif edilmiştir. Programcı kontrolü altında aynı anda beş yüke ve iki depoya kadar devam etmesine izin veren bir yük-depo mimarisine sahipti. Aynı anda çalışabilen birden fazla işlev birimine de sahipti.

süperskalar

Daha modern bir bağlamda, bazı tipik CISC mimarileri tarafından kullanılan karmaşık değişken uzunluklu kodlama, doğrudan bir CISC programlama modelinin bir süperskalar uygulamasını oluşturmayı karmaşık, ancak yine de mümkün kılar ; sıralı süperskaler orijinal Pentium ve sıra dışı süperskaler Cyrix 6x86 bunun iyi bilinen örnekleridir. Tipik bir CISC makinesinin işlenenleri için sık bellek erişimleri, modern tasarımlarda kullanılan hızlı önbellek yapılarının yanı sıra diğer önlemler tarafından güçlü bir şekilde aracılık edilmesine rağmen, koddan çıkarılabilen talimat düzeyi paralelliğini sınırlayabilir. Yapısı gereği kompakt ve anlamsal olarak zengin yönergeler nedeniyle, makine kodu birimi başına (yani bayt veya bit başına) gerçekleştirilen ortalama çalışma miktarı, bir CISC için bir RISC işlemcisinden daha yüksektir ve bu, ona modern bir önbellek tabanlı uygulamada önemli bir avantaj sağlayabilir.

Mantık, PLA'lar ve mikro kod için transistörler artık kıt kaynaklar değil; bugün sadece büyük yüksek hızlı önbellek bellekleri maksimum transistör sayısıyla sınırlıdır. Karmaşık olmasına rağmen, CISC kod çözücülerinin transistör sayısı, işlemci başına toplam transistör sayısı gibi katlanarak artmaz (çoğunluk tipik olarak önbellekler için kullanılır). Daha iyi araçlar ve gelişmiş teknolojilerle birlikte bu, yük depolama sınırlamaları olmaksızın (yani RISC olmayan) yüksek düzeyde kodlanmış ve değişken uzunluklu tasarımların yeni uygulamalarına yol açmıştır. Bu, her yerde bulunan x86 (aşağıya bakınız) gibi eski mimarilerin yeniden uygulamalarının yanı sıra gömülü sistemler için mikro denetleyiciler için yeni tasarımları ve benzer kullanımları yönetir . Modern x86 durumundaki süperskalar karmaşıklık, talimatları bir veya daha fazla mikro operasyona dönüştürerek ve bu mikro operasyonları dinamik olarak yayınlayarak, yani dolaylı ve dinamik süperskalar yürütme; Pentium Pro ve AMD K5 bu erken örneklerdir. Oldukça basit bir süperskalar tasarımın (oldukça karmaşık) kod çözücülerden (ve arabelleklerden) sonra yerleştirilmesine izin vererek, tabiri caizse, birçok açıdan her iki dünyanın en iyisini verir. Bu teknik aynı zamanda IBM z196 ve sonraki z/Architecture mikroişlemcilerinde de kullanılır .

CISC ve RISC terimleri

CISC ve RISC terimleri, hem CISC hem de RISC tasarımlarının ve uygulamalarının devam eden evrimi ile daha az anlamlı hale geldi. İlk yüksek (veya sıkı) ardışık düzene sahip x86 uygulamaları, Intel , AMD , Cyrix ve IBM'den 486 tasarım, öncekilerin yaptığı her talimatı destekledi, ancak yalnızca normalden biraz daha fazla olan oldukça basit bir x86 alt kümesinde maksimum verimlilik elde etti. tipik bir RISC komut seti (yani, tipik RISC yük depolama limitleri olmadan ). Intel P5 Pentium nesli, bu ilkelerin süperskalar bir versiyonuydu. Bununla birlikte, modern x86 işlemcileri ayrıca (tipik olarak) talimatları çözer ve dahili olarak arabelleğe alınmış mikro işlemlerin dinamik dizilerine böler ; bu, daha büyük bir talimat alt kümesini ardışık (örtüşen) bir tarzda yürütmeye yardımcı olur ve koddan paralelliğin daha gelişmiş çıkarılmasını kolaylaştırır. akış, daha da yüksek performans için.

Popüler basitleştirmelerin aksine (bazı akademik metinlerde de mevcuttur), tüm CISC'ler mikrokodlu değildir veya "karmaşık" talimatlara sahip değildir. CISC, bir yük depolama (RISC) mimarisi olmayan herhangi bir şey anlamına gelen her şeyi kapsayan bir terim haline geldiğinden, CISC'yi tanımlayan şey talimatların sayısı veya uygulamanın veya talimatların karmaşıklığı değil, aritmetik talimatların da hafızayı yerine getirmesidir. erişir. Küçük bir 8-bit CISC işlemci ile karşılaştırıldığında, bir RISC kayan nokta komutu karmaşıktır. CISC'nin karmaşık adresleme modlarına bile ihtiyacı yoktur; 32 veya 64 bit RISC işlemciler, küçük 8 bit CISC işlemcilerden daha karmaşık adresleme modlarına sahip olabilir.

Bir PDP-10 , bir PDP-8 , bir Intel 80386 , bir Intel 4004 , bir Motorola 68000 , bir System z ana bilgisayarı, bir Burroughs B5000 , bir VAX , bir Zilog Z80000 ve bir MOS Teknolojisi 6502'nin tümü sayı olarak büyük farklılıklar gösterir, komutların boyutları ve biçimleri, kayıtların sayısı, türleri ve boyutları ve mevcut veri türleri. Bazılarında alt dizi tarama, keyfi kesinlikli BCD aritmetiği veya aşkın işlevler gibi işlemler için donanım desteği bulunurken, diğerlerinde yalnızca 8 bitlik toplama ve çıkarma vardır. Ancak bunların tümü CISC kategorisindedir çünkü gerçek hesaplamaları gerçekleştiren aynı komutlar içinde bellek içeriğini yükleyen ve/veya depolayan "yükle-işlet" komutlarına sahiptirler. Örneğin, yalnızca 8 sabit uzunlukta talimata sahip olan ve hiçbir mikro kod içermeyen PDP-8, talimatların nasıl çalıştığı, 230'dan fazla talimat içeren (bazı VAX'lerden daha fazla) PowerPC ve kayıt gibi karmaşık dahili bileşenler nedeniyle bir CISC'dir. Yeniden adlandırma ve yeniden sıralama arabelleği bir RISC'dir, Minimal CISC ise 8 talimat içerir, ancak bellek erişimini ve hesaplamayı aynı talimatlarda birleştirdiği için açıkça bir CISC'dir.

Ayrıca bakınız

Referanslar

  1. ^ Patterson, ABD ; Ditzel, DR (Ekim 1980). "İndirgenmiş komut seti bilgisayarı için durum". SIGARCH Bilgisayar Mimarisi Haberleri . ACM . 8 (6): 25–33. doi : 10.1145/641914.641917 .

Genel referanslar

  • Tanenbaum, Andrew S. (2006) Structured Computer Organisation, Fifth Edition , Pearson Education, Inc. Upper Saddle River, NJ.

daha fazla okuma