Program sayıcı - Program counter

1952'de tanıtılan bir IBM 701 bilgisayarının ön paneli. Ortadaki ışıklar, çeşitli kayıtların içeriğini gösterir. Talimat sayacı Sol alttaki olduğunu.

Program sayacı ( PC ), yaygın olarak adlandırılan yönerge işaretçisi ( IP ) 'de , Intel x86 ve Itanium mikroişlemci ve bazen denilen talimat adres kaydı ( IAR ), talimat sayacını veya talimat sequencer sadece bir parçası, bir olduğunu işlemcinin kayıt olduğunu bir yeri belirten bir bilgisayar kendi içinde bir program sekansı.

Genellikle, bilgisayar bir talimat getirildikten sonra artırılır ve yürütülecek bir sonraki talimatın hafıza adresini (" işaret eder") tutar .

İşlemciler genellikle talimatları sıralı olarak bellekten alır, ancak kontrol aktarım talimatları, PC'ye yeni bir değer yerleştirerek sıralamayı değiştirir. Bunlar, dalları (bazen atlama olarak adlandırılır), alt rutin çağrıları ve dönüşleri içerir . Bazı iddiaların doğruluğuna bağlı olan bir transfer, bilgisayarın farklı koşullar altında farklı bir sıra izlemesini sağlar.

Dal, sonraki talimatın bellekteki başka bir yerden alınmasını sağlar. Bir alt yordam çağrısı yalnızca dallara ayrılmaz, aynı zamanda bilgisayarın önceki içeriğini bir yere kaydeder. Bir dönüş, PC'nin kaydedilen içeriğini alır ve PC'ye geri yerleştirir, alt rutin çağrısını takip eden talimatla sıralı yürütmeyi sürdürür.

Donanım uygulaması

Basit bir merkezi işlem biriminde (CPU), PC, çeşitli donanım kayıtlarından biri olabilen dijital bir sayaçtır ("program sayacı" teriminin kaynağıdır) . Komut döngüsü bir ile başlar getirme CPU üzerindeki PC değerini yerleştirir ettiği, adres otobüste belleğe göndermek için. Bellek, bu bellek konumunun içeriğini veri yolu üzerinde göndererek yanıt verir . (Bu, tek bir bellek alanının hem çalıştırılabilir komutları hem de sıradan verileri içerdiği depolanmış program bilgisayar modelidir.) Getirmenin ardından, CPU, elde ettiği bellek içeriğine bağlı olarak bazı eylemler gerçekleştirerek yürütmeye devam eder . Bu döngünün bir noktasında, PC, yürütülen bir sonraki komut farklı olacak şekilde değiştirilecektir (tipik olarak, bir sonraki talimat, mevcut talimatın son hafıza konumundan hemen sonra hafıza adresinden başlayan komut olacak şekilde artırılır) .

Diğer işlemci kayıtları gibi, PC, her biri PC'nin değerinin bir bitini temsil eden bir ikili mandal bankası olabilir. Bit sayısı (bilgisayarın genişliği) işlemci mimarisiyle ilgilidir. Örneğin, bir “32-bit” CPU, 2 32 birim belleği adresleyebilmek için 32 bit kullanabilir . Bazı işlemcilerde, program sayacının genişliği adreslenebilir belleğe bağlıdır; örneğin, bazı AVR denetleyicilerinin 12 bitten sonra saran bir PC'si vardır.

PC bir ikili sayaç ise, COUNT UP girişine bir darbe uygulandığında artabilir veya CPU başka bir değeri hesaplayabilir ve onu LOAD girişine bir darbe ile PC'ye yükleyebilir.

Mevcut talimatı tanımlamak için, PC bir segmenti veya sayfayı tanımlayan diğer kayıtlarla birleştirilebilir . Bu yaklaşım, ilgilenilen bellek birimlerinin çoğunun mevcut yakınlık içinde olduğunu varsayarak daha az bit içeren bir PC'ye izin verir.

Makine mimarisindeki sonuçlar

Normalde artan bir bilgisayarın kullanılması, bir bilgisayarın yaptığı şeyin genellikle doğrusal bir talimat dizisini yürütmek olduğunu varsayar. Böyle bir bilgisayar von Neumann mimarisinin merkezinde yer alır . Böylece programcılar, sıralı olması gerekmeyen algoritmalar için bile sıralı bir kontrol akışı yazarlar . Ortaya çıkan " von Neumann darboğazı ", von Neumann dışı veya bir PC kullanmayan veri akışı modelleri dahil olmak üzere paralel hesaplama konusunda araştırmalara yol açtı ; örneğin, sıralı adımları belirtmek yerine, üst düzey programcı istenen işlevi belirleyebilir ve düşük düzeyli programcı bunu birleşik mantığı kullanarak belirleyebilir .

Bu araştırma aynı zamanda geleneksel, PC tabanlı CPU'ları daha hızlı çalıştırmanın yollarını açtı:

  • Ardışık , burada CPU farklı donanım aynı anda birden fazla talimat farklı aşamalarını yürütür.
  • Çok uzun buyruk kelimesi bir tek komut çok etkiler elde edebilirsiniz (VLIW) mimarisi.
  • Sıra dışı yürütmeyi tahmin etme ve normal sıranın dışında yürütme için müteakip talimatları hazırlama teknikleri .

Üst düzey programlamadaki sonuçlar

Modern yüksek seviyeli programlama dilleri hala sıralı yürütme modelini takip eder ve aslında programlama hatalarını belirlemenin yaygın bir yolu, programcının parmağının bir PC'nin yapacağı gibi yürütme noktasını tanımladığı bir "prosedür yürütme" dir. Yüksek seviyeli dil, aslında bir sanal makinenin makine dilidir, donanım olarak inşa edilemeyecek kadar karmaşıktır, ancak bunun yerine yazılım tarafından taklit edilir veya yorumlanır .

Ancak, yeni programlama modelleri sıralı yürütme programlamasının ötesine geçer:

  • Çok iş parçacıklı bir program yazarken , programcı her iş parçacığını diğer dizilerdeki talimatlara göre herhangi bir talimatın zamanlamasını belirtmeden bir dizi talimat olarak yazabilir.
  • In olaya dayalı programlama , programcı için yanıt verdiklerini talimatların dizileri yazabilirsiniz olaylar programı için genel bir diziyi belirtmeden.
  • Gelen veri akımı programlama , programcı işlem her bölümü yazılabilir boru hattı diğer bölümlere zamanlama göre belirtmeden.

Sembol

Satıcılar, assembly dili programlarında program sayacını sembolize etmek için farklı karakterler kullanır . Intel , Zilog , Texas Instruments , Toshiba , NEC , Siemens ve AMD işlemci belgelerinde, Motorola , Rockwell Semiconductor , Microchip Technology ve Hitachi'de "$" karakterinin kullanımı yaygınken , bunun yerine "*" karakteri kullanılırken, SGS-Thomson Microelectronics "PC" kullanır.

Ayrıca bakınız

Notlar

Referanslar