Tüm seçenekler yanlış . Bir işlemcinin uygulayabileceği maksimum (benzersiz) opco sayısı, veri yolu genişliği ile sınırlı değildir.
Normalde bir 12+ bit CPU, veri komut başına bir komut olacak şekilde tasarlanmıştır, böylece çoğu komutu tek seferde okuyabilir. Böylece normal bir CPU 2 ^ 12 opcode sınırlandırılarak tasarlanabilir.
2 ^ 12 = 4096'dan fazla opcode sahip mevcut CPU mimarileri çok nadirdir, çünkü çok fazla ihtiyaç duyulmaz çünkü çok fazla - öğrenmesi için çok fazla, gerçekten kullanışlı olmak için çok fazla, çok fazla maliyetli silikon alan boşa harcanır.
Güncelleme : Yorumlarda belirtildiği gibi, x86 komut setinin tüm olası varyasyonları, nasıl saydığınıza bağlı olarak 6000'den fazla olabilir! Bu daha çok bir istisna.
Ancak 4 bit CPU 2 ^ 4 = 16 için talimatlar çoğu zaman yeterli değildir, bu nedenle bu tür işlemcilerin çoğu daha fazlasına sahiptir.
Bir CPU'nun veri yoluna uyandan daha fazla opcode sahip olmasının birden fazla yolu ve nedeni olabilir:
Kelime yayma talimatları
Bir işlemcinin tek bir veri döngüsünde bir komutu okumasına gerek yoktur - birden fazla ardışık döngü kullanabilir. Aslında çoğu CPU, opcode alanını genişletmek yerine talimat argümanları için daha yaygın olarak kullanılmasına rağmen.
Örnek: intel 4004'te veri / adres satırları olarak çoğullanan sadece 4 satır, 4 bit veri sözcüğü, ancak 8 bit talimatlarda 40'tan fazla opcod vardır.
Önekler ve Sonekler
Bir (CISC) işlemcinin gerektiği kadar komut öneki ve soneki olabilir.
Bunlar, yaptıklarını değiştirmek için gerçek bir talimatın önüne eklenir - biraz veya tamamen.
"Benzersiz opcode" tanımınıza bağlıdır. Bir komutun veri olmayan herhangi bir parçasının opcode'un bir parçası olduğunu varsayarsa, toplam sayıları olası tüm varyasyonları içerecektir. Bununla birlikte, bazıları bu eklerin talimatın farklı parçaları olduğuna inanmaktadır.
Örnek: Intel x86 CPU'larda aslında 4M opcode yoktur. Bununla birlikte, tüm önekleri bir opcode'un parçası olarak sayarsanız, modern CPU'lar 15 bYtes'e kadar olan talimatlara izin verir - bu bir çok olası opcodes'tir. Birçoğu sadece aynı şeyi yapacak olsa da - bu onların "benzersiz" olmalarının tanımına bağlıdır.
Modlar
Bir işlemcinin, tamamen farklı bir opcodes setine sahip olabileceği birden fazla çalışma modu olabilir.
Örnekler: intel x86_64, 32-bit (gerçek / v86 / korumalı) ve farklı opcode sahip 64-bit modlarına sahiptir. ARM işlemcilerin ARM 32 bit ve başparmak 16 bit modları olabilir.
Veri yolu biti çoğullama
Sorular "veri satırlarını" ve "adres satırlarını" belirtir, ancak hem dahili veri yolu hem de dahili adres veri yolu, gerçek veri yolu hatlarının miktarından daha geniş olabilir.
Çoğullanmış veri yolu verileri sırayla, yani ilk yarı, sonra ikinci yarı olarak gönderilir. CPU onu tam boyutlu dahili kayıtlara kaydeder ve bunlarda çalışır.
Bu genellikle maliyetleri ve / veya çip fiziksel ayak izi boyutunu azaltmak için yapılır.
Örnekler arasında Intel 4004, LPC veri yolu üzerindeki herhangi bir şey ve Nintendo64'ün CPU'su olan ve yalnızca 32 satırlı veri yolu olan NEC VR4300 yer alır.
Paralel veri yolu yok
Bir önceki noktanın devamı olarak, bir CPU'nun paralel bir veriyolu göstermesine bile gerek yoktur.
CPU kolayca yalnızca I2C, SPI vb. Sıralı bir veri yolunu açığa çıkarabilir.
Muhtemelen böyle özel bir CPU üretmek için çok uygun maliyetli değildir, ancak çok sayıda düşük pinli sayı mikroişlemcisi (hem CPU hem de bellek içerir), bu değerli pinleri daha kullanışlı bir şey için kaydetmek için bu şekilde yapılır. Örneğin, atmel ATTINY4 / 5/6/10 yongalarının toplamda 6 pimi vardır, ikisi güç için, biri sıfırlama için, üç genel amaçlı. Talimatlar sırayla tescilli 3 satırlı arayüz üzerinden gönderilir.
Mikrodenetleyici tanımınıza bağlı olarak, bir mikroişlemci olarak düşünülebilir veya bir tane işlemek üzere programlanabilir (yani sıralı bir veri yolu veya veri yolu ile özel bir CPU simüle etmek).
Bu soru açıkça bir tür veri yolu IS'nin açıkta olduğunu, ancak paralel bir veri yolu olduğunu belirtmez. Teoride, 12 hatlı veri yolu tek bir seri veri hattı ve 11 yardımcı / toprak / durum hattından oluşabilir , ancak bu muhtemelen çok akılcı bir fikir değildir.
Özel talimat veri yolu
Aslında bir işlemcinin veriyle aynı veri yolu hatlarındaki talimatları kabul etmesi bile gerekmez.
Bu, ALU'ların bir mikroişlemcinin bir parçası olmaktan ziyade ayrık yongalar olduğu, ancak şimdi çoğu zaman ekonomik olarak uygun olmadığı durumlarda kolayca olabilir.
Ancak hiçbir şey, yalnızca talimatlar için özel hatlara sahip bir CPU uygulamanızı engellemez. Böyle bir CPU, bir veri dizisinde (SIMD) tek bir işlem yapılması gerektiğinde yararlı olabilir.
Talimat veri yolu genişliği tamamen keyfi olduğundan, mümkün olan maksimum opcode sayısı da öyle.