Durum kaydı - Status register

Bir durum kaydı , bayrak kaydı veya koşul kodu kaydı ( CCR ), bir işlemci için durum bayrağı bitlerinin bir koleksiyonudur . Bu tür kayıt örnekleri arasında x86 mimarisindeki FLAGS kaydı , IBM System / 360 mimarisinde z / Architecture aracılığıyla program durum sözcüğü (PSW) kaydındaki bayraklar ve ARM Cortex-A mimarisindeki uygulama programı durum kaydı (APSR) bulunur. .

Durum kaydı, işlemcinin durumu hakkında bilgi içeren bir donanım kaydıdır . Bağımsız bitler , işlemci üzerinde çalıştırılan makine kodu talimatları tarafından dolaylı veya açıkça okunur ve / veya yazılır . Durum kaydı, bir talimatın önceki bir talimatın sonucuna bağlı olarak işlem yapmasına izin verir.

Tipik olarak, durum yazmacındaki bayraklar aritmetik ve bit manipülasyon işlemlerinin etkileri olarak değiştirilir. Örneğin, işlemin sonucu sıfırsa bir Z biti ayarlanabilir ve sıfır değilse temizlenebilir. Diğer talimat sınıfları da durumu belirtmek için bayrakları değiştirebilir. Örneğin, bir dize talimatı, talimatın bir eşleşme / uyuşmazlık bulduğu için mi yoksa dizenin sonunu bulduğu için mi sonlandırıldığını belirtmek için bunu yapabilir. Bayraklar, sonraki bir koşullu talimat tarafından okunur, böylece belirtilen eylem (işlemciye, bir atlama, çağrı, dönüş vb. Bağlı olarak) yalnızca bayraklar önceki talimatın belirli bir sonucunu gösteriyorsa gerçekleşir.

MIPS ve Alpha gibi bazı CPU mimarileri, özel bir bayrak yazmacı kullanmaz. Diğerleri dolaylı olarak bayrak ayarlamaz ve / veya okumaz. Bu tür makineler ya talimatlar arasında örtük durum bilgisini hiç geçirmezler ya da bunu açıkça seçilmiş genel amaçlı bir kayıtta geçirirler.

Bir durum yazmacı genellikle daha özel bayraklar, kesme etkinleştirme bitleri ve benzer bilgi türleri gibi başka alanlara da sahip olabilir . Bir kesinti sırasında, halihazırda yürütülmekte olan iş parçacığının durumu, durum yazmacının mevcut değeri program sayacı ve diğer aktif yazmaçlarla birlikte makine yığınına veya başka bir ayrılmış bellek alanına saklanarak korunabilir (ve daha sonra geri çağrılabilir) .

Ortak bayraklar

Bu, hemen hemen tüm modern işlemcilerde uygulanan en yaygın CPU durum kayıt bayraklarının bir listesidir.

Bayrak İsim Açıklama
Z Sıfır bayrak Aritmetik veya mantıksal bir işlemin (veya bazen bir yükün) sonucunun sıfır olduğunu belirtir.
C Taşıma bayrağı Tek bir kelimeden daha büyük sayıların, ikili bir rakamı daha az anlamlı bir kelimeden daha az anlamlı bir kelimenin en az anlamlı bitine taşıyarak eklenmesini / çıkarılmasını sağlar . Aynı zamanda bit kaydırmalarını genişletmek için kullanılır ve birçok işlemcide benzer şekilde döner (bazen özel bir X bayrağıyla yapılır).
S / N İşaret bayrağı
Negatif bayrak
Matematiksel bir işlemin sonucunun negatif olduğunu gösterir. Bazı işlemcilerde, N ve S bayrakları farklı anlamlar ve kullanımlarla farklıdır: Biri son sonucun negatif olup olmadığını gösterirken, diğeri bir çıkarma veya toplamanın gerçekleşip gerçekleşmediğini gösterir.
V / O / W Taşma bayrağı Bir işlemin işaretli sonucunun, ikinin tümleyen gösterimini kullanarak kayıt genişliğine sığamayacak kadar büyük olduğunu belirtir .

Diğer bayraklar

Bazı işlemcilerde durum kaydı ayrıca aşağıdakiler gibi bayraklar içerir:

Bayrak İsim Açıklama
H / A / DC Yarım taşıma bayrağı
Yardımcı bayrak
Basamaklı Taşıma
Ondalık ayar bayrağı
Son aritmetik işlemin bir sonucu olarak yarım baytlar arasında (tipik olarak bir bayt işleneninin 4-bit yarıları arasında) bir bit taşıma üretildiğini belirtir . Böyle bir bayrak genellikle ikili donanım üzerinde BCD aritmetik işlemlerini uygulamak için kullanışlıdır .
P Parite bayrağı Son sonucun set bitlerinin sayısının tek mi çift mi olduğunu gösterir.
ben Kesinti bayrağı Bazı işlemcilerde bu bit, kesintilerin etkin mi yoksa maskelenmiş mi olduğunu gösterir. İşlemcinin PDP-11 gibi birden fazla kesme öncelik seviyesi varsa, mevcut iş parçacığının önceliğini belirtmek için birkaç bit kullanılabilir, bu da yalnızca daha yüksek bir önceliğe ayarlanmış donanım tarafından kesilmesine izin verir. Diğer mimarilerde, bir bit, bir kesmenin şu anda etkin olduğunu ve geçerli iş parçacığının bir kesme işleyicisinin parçası olduğunu gösterebilir .
S Süpervizör bayrağı İki veya daha fazla koruma halkası sağlayan işlemcilerde , durum yazmacındaki bir veya daha fazla bit, geçerli iş parçacığının halkasını (ne kadar güvenilir olduğunu veya diğer iş parçacıklarını engelleyebilecek istekler için işletim sistemini kullanması gerekip gerekmediğini) gösterir. Yalnızca iki halkalı bir işlemcide, tek bir bit, Süpervizörü Kullanıcı modundan ayırabilir.

Aritmetik bayrakları olmayan CPU mimarileri

Durum bayrakları, bir talimatın önceki bir talimatın sonucuna göre hareket etmesini sağlar. Gelen ardışık gibi işlemciler, superscalar ve spekülatif işlemciler, bu oluşturabilir tehlikeleri olduğunu yavaş işleme veya çevrelerindeki çalışmaları için ekstra donanım gerektirir.

Bazı çok uzun komut kelime işlemcileri, durum işaretlerinden vazgeçer. Tek bir talimat hem bir test gerçekleştirir hem de o testin hangi sonucunun bir eylemde bulunacağını belirtir; örneğin a ile b'yi karşılaştır ve Eşitse c'ye atla . Testin sonucu sonraki talimatlar için kaydedilmez.

Durum kaydına bir başka alternatif, işlemci talimatlarının, program bunu talep ettiğinde genel amaçlı bir kayıtta durum bilgisini biriktirmesidir. MIPS , AMD 29000 , DEC Alpha ve RISC-V , karşılaştırma sonucunu tek bir bit veya 0 veya 1 sayısal değeri olarak genel amaçlı bir kayıtta depolayan karşılaştırma talimatları sağlayan mimari örneklerdir. genel amaçlı kayıt defterindeki değer.

Genellikle karşılaştırma talimatları eşitliği veya işaretli / işaretsiz büyüklüğü test eder. Diğer koşulları test etmek için bir program bir eşdeğerlik formülü kullanır. Örneğin, MIPS'in "taşıma biti" yoktur, ancak çok kelimeli toplama gerçekleştiren bir program, toplamın bir işlenenden daha düşük olup olmadığını test ederek tek kelimelik kayıtların taşıp taşmadığını test edebilir:

        # alow = blow + clow
	addu	alow, blow, clow
        # set tmp = 1 if alow < clow, else 0
	sltu	tmp, alow, clow
	addu	ahigh, bhigh, chigh
	addu	ahigh, ahigh, tmp

sltu Komut setleri tmp 1 veya 0 olan iki diğer operandların belirtilen karşılaştırılmasına dayanır. (Burada, genel amaçlı kayıt tmp , koşullu bir sıçramayı yönetmek için bir durum kaydı olarak kullanılmaz; bunun yerine, düşük sıralı toplamadan taşımayı gösteren olası 1 değeri, yüksek dereceli kelimeye eklenir.)

Bu şema, üç veya daha fazla kelime eklerken daha az uygun hale gelir, çünkü hesaplama sırasında iki ekleme vardır, b + c + tmp bunlardan herhangi biri bir taşıma oluşturabilir ve iki sltu komutla saptanması gerekir . Neyse ki, bu iki taşıma, taşma riski olmadan birbirine eklenebilir, bu nedenle durum, eklenen kelime başına beş talimatla sabitlenir.

Ayrıca bakınız

Referanslar