Durum kaydı - Status register

Bir durum kaydı, bayrak kaydıveya durum kodu kaydı (CCR) bir statü koleksiyonudur bayrak bitler için işlemci. Bu tür kayıtların örnekleri şunları içerir: BAYRAKLAR kaydı içinde x86 mimarisi, içindeki bayraklar program durum sözcüğü (PSW) kayıt IBM System / 360 mimarisi vasıtasıyla z / Mimarlık ve uygulama programı durum kaydı (APSR) ARM Cortex-A mimari.[1]

Durum kaydı bir donanım kaydı durumu hakkında bilgi içeren işlemci. Bireysel bitler, dolaylı veya açık bir şekilde tarafından okunur ve / veya yazılır. makine kodu işlemcide yürütülen talimatlar. 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 işleme 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.

Gibi bazı CPU mimarileri MIPS ve Alfa, özel bir bayrak kaydı kullanmayın. Diğerleri dolaylı olarak bayrak ayarlamaz ve / veya okumaz. Bu tür makineler ya geçmez örtük talimatlar arasında durum bilgisi veya açıkça seçilmiş genel amaçlı bir kayıtta iletirler.

Bir durum kaydı genellikle daha özel bayraklar gibi başka alanlara da sahip olabilir, kesmek bitleri ve benzer bilgi türlerini etkinleştirin. Bir kesinti sırasında, halihazırda yürütülen iş parçacığının durumu, durum yazmacının mevcut değeri ile birlikte saklanarak korunabilir (ve daha sonra geri çağrılabilir). program sayıcı ve diğer aktif kayıtlar makine yığını veya başka bir ayrılmış bellek alanı.

Ortak bayraklar

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

BayrakİsimAçıklama
ZSıfır bayrakAritmetik veya mantıksal bir işlemin (veya bazen bir yükün) sonucunun sıfır olduğunu belirtir.
CTaşıma bayrağıDaha az anlamlı bir kelimeden ikili bir rakam taşıyarak tek bir kelimeden daha büyük sayıların eklenmesini / çıkarılmasını sağlar. En az anlamlı bit Gerektiği gibi daha anlamlı bir kelime. Ayrıca genişletmek için kullanılır bit kaymaları ve birçok işlemcide benzer şekilde döner (bazen özel bir X bayrak).
S / Nİşaret bayrağı
Negatif bayrak
Matematiksel bir işlemin sonucunun negatif olduğunu gösterir. Bazı işlemcilerde[2] N ve S bayrakları farklı anlam 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 / Ö / WTaşma bayrağıBir işlemin işaretli sonucunun, kullanılarak kayıt genişliğine sığamayacak kadar büyük olduğunu gösterir. Ikisinin tamamlayıcısı temsil.

Diğer bayraklar

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

BayrakİsimAçıklama
H / Bir / DCYarım taşıma bayrağı
Yardımcı bayrak
Haneli Taşıma
Ondalık ayar bayrağı
Arasında bir miktar taşıma oluştuğunu gösterir. kemirmeler (tipik olarak bir bayt işleneninin 4 bitlik yarımları arasında) son aritmetik işlemin sonucu olarak. Böyle bir bayrak genellikle uygulamak için yararlıdır BCD ikili donanım üzerinde aritmetik işlemler.
PParite bayrağıSon sonucun ayarlanan bit sayısının tek mi çift mi olduğunu gösterir.
benKesinti bayrağıBazı işlemcilerde bu bit, kesintilerin etkin mi yoksa maskeli mi olduğunu gösterir.[3] İşlemcide birden fazla kesmek öncelik seviyeleri, örneğin PDP-11 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 işleyiciyi kes.
SSüpervizör bayrağıİki veya daha fazlasını sağlayan işlemcilerde koruma halkaları, 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. İçinde ardışık düzenlenmiş gibi işlemciler süper skalar ve spekülatif işlemciler, bu yaratabilir tehlikeler işlemeyi yavaşlatan veya bunların etrafında çalışmak için fazladan donanım gerektiren.[4]

Biraz çok uzun talimat kelimesi işlemciler durum işaretlerinden vazgeçerler. Tek bir talimat hem bir test gerçekleştirir hem de Karşılaştırma gibi bir testin hangi sonucunun bir eylemde bulunacağını belirtir. a ile b ve atla c Eşit ise. Testin sonucu sonraki talimatlar için kaydedilmez.

Durum kaydına başka bir alternatif, işlemci talimatlarının, program bunu talep ettiğinde genel amaçlı bir kayıtta durum bilgisini biriktirmesidir. MIPS, AMD 29000, Aralık Alfa, 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. Koşullu dallar, genel amaçlı sicildeki değere göre hareket eder.

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:[4]

        # alow = darbe + palyaço	Seni ekledim	alow, darbe, palyaço        # set tmp = 1 eğer azsa 	sltu	tmp, alow, palyaço	Seni ekledim	Yüksek, bhigh, iç çekiş	Seni ekledim	Yüksek, Yüksek, tmp

sltu komut setleri tmp diğer iki işlenen arasında belirtilen karşılaştırmaya göre 1 veya 0'a. (Burada genel amaçlı kayıt tmp koşullu atlamayı 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 sıralı kelimeye eklenir.)

Hesaplama sırasında iki ekleme olduğundan, üç veya daha fazla kelime eklerken bu şema daha az kullanışlı hale gelir. b + c + tmpher ikisi de bir taşıma oluşturabilir ve iki sltu Talimatlar. 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

  1. ^ "ARM Bilgi Merkezi". infocenter.arm.com. Alındı 2019-05-18.
  2. ^ "Toshiba 900 Kullanım Kılavuzu, bölüm 3" (PDF).
  3. ^ "4/8/16 / 32KByte Sistem İçi Programlanabilir Flaşlı Atmel 8-Bit Mikrodenetleyici - Veri Sayfası" (PDF). Mikroçip Teknolojisi.
  4. ^ a b Mashey, John (1996-06-04). "Taşlarım; Mimarın Tuzağı". Alındı 2013-10-05.