Eşlik biti

Çift eşlikte gönderilen sözcükteki 1'lerin sayısı çifttir; tek bitlik hata görülür, iki bitlik hata görülmez.

Eşlik biti (İngilizce: parity bit), ikili bir veri sözcüğüne, sözcükteki 1 değerli bitlerin sayısını önceden kararlaştırılmış biçimde çift ya da tek yapmak için eklenen fazladan bittir.:150:25 Toplam 1 sayısını çift yapan düzene çift eşlik, tek yapan düzene tek eşlik denir. Eşlik biti bir hata algılama yöntemidir: alıcı ya da okuyucu aynı sayımı yeniden yapar ve sonuç kararlaştırılan eşliğe uymuyorsa verinin bozulduğunu anlar.:296

Tek bir eşlik biti, sözcükte tek sayıda bitin değerinin değişmesini görür; çift sayıda bitin birlikte değişmesini göremez ve hangi bitin bozulduğunu da gösteremez. Bu yüzden hata algılandığında veri yeniden gönderilir ya da kopyası başka bir yerden yeniden okunur.:25:330 Buna karşılık bedeli düşüktür: sözcüğe yalnız bir bit eklenir ve bu bit, dışlayan VEYA kapılarından kurulan basit bir devreyle üretilir ve denetlenir.:104-105

Eşlik biti seri iletişimde, ana bellekte ve önbelleklerde, yollarda, manyetik bantlarda ve RAID disk dizilerinde kullanılmıştır. Seçilmiş bit kümeleri üzerinde birden çok eşlik denetimini birleştiren kodlar hatanın yerini de bulup düzeltebilir; Richard Hamming 1950'deki makalesinde tek hata düzelten kodları böyle kurmuştur.:150-153

Tanım

7 bitlik veri

(1'lerin adeti)
Eşlik dahil 8 bitlik veri
çift tek
0000000 (0) 00000000 10000000
1010001 (3) 11010001 01010001
1101001 (4) 01101001 11101001
1111111 (7) 11111111 01111111

Bir bit dizisinin eşliği, dizideki 1 değerli bitlerin sayısının tek ya da çift olmasıdır. Hamming bu denetime eşlik denetimi (İngilizce: parity check) adını vermiştir: denetim biti, sözcüğün bütün konumlarında çift sayıda 1 bulunacak biçimde seçilirse çift, tek sayıda 1 bulunacak biçimde seçilirse tek eşlik denetimi yapılmış olur. Bir eşlik denetiminin bütün konumları kapsaması da gerekmez, seçilmiş konumlar üzerinde yapılabilir.:150 IBM'in 1960 tarihli genel bilgi el kitabında da her geçerli karakterinde 1 bitlerinin sayısı çift olan kodlar çift eşlikli, tek olanlar tek eşlikli sayılır ve kurala uymayan karakter hatalı kabul edilir.:20-21

Çift eşlikte eşlik biti, veri bitlerindeki 1'lerin sayısı tekse 1, çiftse 0 olur; tek eşlikte bunun tersi geçerlidir. Örneğin 7 bitlik 1010001 sözcüğünde üç tane 1 vardır; çift eşlikte eşlik biti 1, tek eşlikte 0 olur. Mano ile Ciletti'nin ASCII örneğinde eşlik biti karakterin en soluna eklenir ve iki düzenden çift eşliğin daha yaygın olduğu belirtilir.:25 Bitin yeri bir kural değildir; TL16C550D gibi eşzamansız seri iletişim yongaları eşlik bitini son veri bitinin arkasına koyar.:36

Üretilmesi ve denetlenmesi

Dışlayan VEYA kapılarıyla kurulmuş üç bitlik çift eşlik üreteci ve dört bitlik çift eşlik denetleyicisi. Üreteç P = x ⊕ y ⊕ z bitini üretir; denetleyicinin C çıkışı 1 olduğunda iletimde tek sayıda bitin değeri değişmiştir.

Çok girişli dışlayan VEYA işlemi, girişlerinden tek sayıda olanı 1 olduğunda 1, çift sayıda olanı 1 olduğunda 0 verir. Bu yüzden çift eşlik biti doğrudan veri bitlerinin dışlayan VEYA'sıdır; x, y ve z bitlerinden oluşan bir ileti için eşlik biti P = x ⊕ y ⊕ z olarak üretilir. Gönderici tarafta bu biti üreten devreye eşlik üreteci, alıcı tarafta eşliği sınayan devreye eşlik denetleyicisi denir.:104 Denetleyici, alınan dört bitin dışlayan VEYA'sını alır, C = x ⊕ y ⊕ z ⊕ P. Bitlerden birinin değeri yolda değişmişse 1'lerin sayısı tek olur ve C çıkışı 1 olarak hatayı gösterir. Aynı devre iki iş için de kullanılabilir; denetleyicinin P girişi 0'a bağlandığında çıkışı eşlik bitini verir.:105

Üç ve daha çok girişli dışlayan VEYA, iki girişli kapıların art arda bağlanmasıyla kurulur; çıkıştaki kapı dışlayan VEYA DEĞİL kapısıyla değiştirildiğinde çıkış tümlenir ve aynı yapı tek eşlik biti üretir.:103 Hazır yongalar da vardır: Texas Instruments'ın TTL ailesinden SN74LS280 yongası dokuz veri hattı için çift ya da tek eşlik üretir ya da denetler ve daha uzun sözcükler için art arda bağlanabilir.:1

Kullanım alanları

Seri iletim

Eşzamansız seri iletimde her karakter bir başlangıç bitiyle açılır; ardından veri bitleri, isteğe bağlı eşlik biti ve durma biti gelir.:36 Koşut veriyi seriye, seri veriyi koşut veriye çeviren yongaya evrensel eşzamansız alıcı-verici (İngilizce: universal asynchronous receiver and transmitter, UART) denir.:1 Bu ailedeki TL16C550D yongası başlangıç, durma ve eşlik bitlerini seri akışa kendisi ekler ve alırken ayıklar.:1 Karakter uzunluğu 5 ile 8 bit arasında seçilir. Hat denetim yazmacının 3. biti eşliği açar ve eşlik biti son veri bitiyle ilk durma biti arasına yerleşir; 4. bit çift ya da tek eşliği seçer; 5. bit ise eşlik bitini hep 0 ya da hep 1 gönderen sabit eşlik kipini açar.:36 Alınan karakterin eşliği tutmazsa yonga hat durum yazmacındaki eşlik hatası (PE) bitini 1 yapar.:37

Çerçeve biçimi kısaca veri biti sayısı, eşlik türünün baş harfi ve durma biti sayısıyla yazılır; N eşliksizi, E çift eşliği, O tek eşliği gösterir. Arduino kartlarının seri kapı işlevi varsayılan olarak 8N1 biçimini (8 veri biti, eşlik yok, 1 durma biti) kullanır, 7E1 ya da 8O2 gibi biçimler de seçilebilir. 7E1 biçimi 7 bitlik bir ASCII karakterine çift eşlik biti eklenmesine karşılık gelir; Mano ile Ciletti, ASCII karakterine sekizinci bit olarak eşlik eklendiğini ve eşlik hatası gören alıcının NAK (olumsuz alındı) karakteriyle iletinin yinelenmesini istediğini anlatır.:25

Ana bellek

Mano ile Ciletti'ye göre bellek birimlerinde en yaygın hata algılama düzeni eşlik bitidir: eşlik biti veri sözcüğüyle birlikte saklanır, sözcük okunurken yeniden hesaplanır; sonuç tutmazsa hata algılanır ama düzeltilemez.:296 IBM PC'nin teknik başvuru el kitabına göre ana karttaki bellek, dokuzar tane 64K×1 bitlik dinamik bellek yongasından oluşan banklardan kurulur ve belleğin tamamı eşlikle denetlenir. Bellek eşlik hataları 8088 işlemcisine maskelenemez kesmeyle (NMI) bildirilir; genişleme kartlarındaki bellekler de eşlik hatalarını yine maskelenemez kesme üreten G/Ç kanalı denetim hattıyla bildirir.:1-13 - 1-15

Micron'un 1994 tarihli bir teknik notuna göre eşlik, ilk 4K ve 16K bitlik DRAM kuşaklarının yüksek yumuşak hata oranı ve 8 bitlik yollarda hata düzeltme kodunun pahalı olması yüzünden bellek tasarımında standart uygulama olmuştu. 4 Mbit'lik yongalarda yumuşak hata oranı yaklaşık on bin kat düşünce dizüstü ve alt sınıf masaüstü bilgisayarları eşliksiz üretme eğilimi başladı; not, eşliğin bellek maliyetini yüzde 10-15 artırdığını, güvenilirliği belirgin biçimde iyileştirmediğini yazar ve üst sınıf sistemlere hata düzeltme önerir.:5-19 - 5-22 Eşlikli sistemler için 512K×8 yerine 512K×9 düzenli yongalar kullanılır; aynı veri kitabındaki 72 bitlik MT24D472 bellek modülünde de her bayta bir eşlik biti ucu ayrılmıştır.:5-19, 3-323

Eşliğin ek bit gideri sözcük genişliğiyle orantılıdır, hata düzeltme kodununki ise genişlik arttıkça oransal olarak azalır. Micron'un çizelgesinde 8 bitlik yolda eşlik 1, hata düzeltme 5 ek bit isterken 64 bitlik yolda ikisi de 8 ek bit ister.:5-22 Bu yüzden geniş yollarda aynı 8 bit, tek bit hatasını düzelten ve çift hatayı algılayan bir koda ayrılır; AMD Opteron işlemcisinin veri yollarında her 64 veri bitine 8 hata düzeltme biti eşlik eder.:330

Önbellek

Bir önbellekte tutulan veri değiştirilmemişse aynısı alt düzeyde de durur ve eşlik hatası görüldüğünde oradan yeniden okunabilir. Opteron'da yalnız okunan yapılar olan buyruk önbelleği ve adres dönüştürme ön belleği (TLB) eşlikle korunur ve hata görüldüğünde alt düzeyden yeniden okunur; veri önbelleği, ikinci düzey önbellek ve ana bellek ise tek hata düzelten, çift hata algılayan kodla korunur.:330

Değiştirilmiş veride ise eşlik yalnız hatayı haber verir. Sun Microsystems'in E3000-E10000 sistemleri bu sınıra 2000'de takıldı. Bu sistemlerin ikinci düzey önbelleğinde hata düzeltme olmadan yalnız eşlik vardı; SRAM'lerin aralıklı arızalarını eşlik algılıyordu, ama kirli veride düzeltme olanağı olmadığından işletim sistemi hatayı bildirip programı sonlandırmak zorunda kalıyordu.:51-52

Yollar

PCI yerel yolunda PAR sinyali, 32 bitlik adres ve veri hatları (AD[31::00]) ile dört komut ve bayt etkinleştirme hattı (C/BE[3::0]#) üzerinden çift eşlik taşır; bu 36 hat ile PAR'daki 1'lerin sayısı her zaman çifttir. Eşlik üretimi bütün PCI aygıtları için zorunludur; adres ve yazma verisinde ana aygıt, okuma verisinde hedef aygıt PAR'ı bir saat çevrimi gecikmeyle sürer.:10 Veri eşlik hataları PERR#, adres eşlik hataları SERR# sinyaliyle bildirilir; SERR# maskelenemez kesmeye yol açabilir.:12 SCSI yolunda sekiz veri hattına DB(P) adlı bir eşlik hattı eşlik eder ve eşlik tektir; SCSI-2'nin geniş yolunda ek 24 veri hattının her baytı için ayrı bir eşlik hattı vardır.

Disk dizileri

RAID 5'te eşlik blokları disklere dağılır; bozulan diskin verisi sağlam disklerle eşliğin dışlayan VEYA'sından geri kurulur.

Patterson, Gibson ve Katz'ın 1988'de RAID kavramını tanıttıkları makalede tek bir eşlik diski yeterli görülmüştür, çünkü disk denetleyicileri hangi diskin bozulduğunu zaten bilir. Yitirilen diskteki her bit, sağlam disklerdeki bitlerin eşliği hesaplanıp özgün grup için saklanan eşlikle karşılaştırılarak yeniden kurulur. Bu düzen RAID 3 adını almıştır ve grup başına tek denetim diskiyle ek maliyeti yüzde 4 ile 10 arasına indirir.:112-113 Patterson ile Hennessy eşliği 2'ye göre toplam olarak açıklar: bozulan disk dışındaki disklerin verisi eşlik diskinden çıkarıldığında kalan, yitirilen veridir.:602

Örneğin üç veri diskinin aynı konumundaki baytlar 01101101, 11010100 ve 10011010 ise eşlik diskine bunların dışlayan VEYA'sı olan 00100011 yazılır. İkinci disk bozulduğunda kalan üç bayt (01101101, 10011010 ve 00100011) dışlayan VEYA'dan geçirilir ve sonuç yitirilen 11010100 baytını verir.:602-603

RAID 4'te küçük bir yazma yalnız iki diske dokunur, çünkü yeni eşlik = (eski veri ⊕ yeni veri) ⊕ eski eşlik olarak hesaplanabilir.:113 Her yazmada aynı eşlik diskine gidilmesi darboğaz yarattığı için RAID 5 eşlik bloklarını bütün disklere dağıtır; eşlik blokları ayrı disklerde olan iki küçük yazma aynı anda yapılabilir.:114:603-604 Tek eşlik yalnız kendini belli eden tek bir disk arızasına karşı korur; RAID 6 ikinci bir eşlik hesabı ekler. NetApp'in satır ve köşegen eşliği (RAID-DP), satır eşliğinin yanında köşegenler boyunca çift eşlik saklar.:364-365

Manyetik bant

IBM'in 1960 tarihli el kitabında anlatılan bant birimlerinde veri, bant boyunca uzanan yedi koşut izde saklanır ve bandın enine dizilen yedi bit bir sütun oluşturur.:26 İzler C, B, A, 8, 4, 2 ve 1 diye adlandırılır; ikili kodlu ondalık karakterlerde C izi denetim bitidir ve her karakter çift eşlik için sınanır. Bu dikey denetime ek olarak her kaydın sonuna, 1'lerin sayısı tek olan her iz için 1 taşıyan bir denetim karakteri yazılarak boyuna eşlik denetimi yapılır. İkili kipte ise her sütunun tek eşlikli olması istenir.:27 IBM 729 bant biriminin bakım el kitabına göre her izin yazma tetikleyicisi yazılan her 1 bitinde durum değiştirdiği için blok sonunda o izde tek ya da çift sayıda 1 yazıldığını gösterir; tetikleyicilerin sıfırlanmasıyla banda boyuna artıklık denetim karakteri (LRCC) yazılır.:C64

Sonraki IBM bant sistemleri tek eşlik bitinin ötesine geçti. IBM 2401'in ilk modellerinde Döngüsel artıklık denetimi eklendi ve yeniden okumada bir izin silinmesi düzeltilebildi; 1985 tarihli bir makalede anlatılan 18 izli IBM 3480 ise dikey eşlik denetimlerini iki iz kümesini kesen çapraz eşlik denetimleriyle birleştiren uyarlamalı çapraz eşlik (AXP) koduyla dokuz izlik bir kümede yeri bilinen üç bozuk izi düzeltebiliyordu.:546-547

Sınırları

Bir, üç ya da başka tek sayıda bitin değeri değişirse eşlik bozulur ve hata algılanır; çift sayıda bit değişirse eşlik korunur ve hatalı sözcük doğru görünür.:25 Hamming bu kodun artıklığının n/(n-1) olduğunu ve sözcük uzadıkça artıklığın düştüğünü, ama fark edilmeden geçen çift hata olasılığının da büyüdüğünü gösterir. Bit başına hata olasılığı p iken sözcük uzunluğu 1/p'ye yaklaştığında sözcüğün doğru gelme olasılığı yaklaşık 0,37'ye iner, çift hata olasılığı yaklaşık 0,18'e çıkar.:149-150

Eşlik biti hatanın yerini de göstermez; alıcı bozuk veriyi atar ve yeniden ister.:25 Bozuk bitin yeri başka bir yolla biliniyorsa durum değişir: disk dizisinde hangi diskin bozulduğu denetleyiciden öğrenildiğinde, tek bir eşlik diski o diskin bütün içeriğini yeniden kurmaya yeter.:112-113

İlişkili kodlar

İki boyutlu eşlikte tek bitlik hata, tutmayan dikey ve boyuna eşliğin kesiştiği yerdedir.

İki boyutlu eşlik verinin hem satırları hem sütunları için eşlik tutar; yedi izli bantlardaki karakter başına dikey eşlik ile kayıt sonundaki boyuna eşlik karakteri böyle bir düzen kurar.:27 IBM 3480'in AXP kodu, dikey eşliği iz kümelerini çaprazlama kesen eşlik denetimleriyle birleştirerek bozuk izleri düzeltmeye kadar götürmüştür.:546

Hamming kodu, her biri seçilmiş konumlar üzerinde yapılan birkaç çift eşlik denetiminden kurulur. Denetimler sırayla uygulanır, tutan için 0, tutmayan için 1 yazılır ve elde edilen ikili sayı bozuk bitin konumunu verir; 0 değeri hata olmadığını gösterir. 4 veri bitine 3 denetim biti eklenerek 7 bitlik tek hata düzelten kod elde edilir.:150-153 Bu koda bütün konumları kapsayan bir çift eşlik biti daha eklendiğinde kod tek hatayı düzeltir ve çift hatayı algılar (SEC-DED): tek hatada son eşlik denetimi tutmaz, çift hatada tutar ama denetim sayısı sıfırdan farklı çıkar.:153-154 Bellek yongalarıyla kullanılan tümleşik devreler bu tür değiştirilmiş Hamming kodlarıyla 8, 16 ve 32 bitlik sözcüklerde tek hatayı düzeltip çift hatayı algılar.:299

Kodların gücü Hamming uzaklığıyla ölçülür. Hamming, iki kod sözcüğü arasındaki uzaklığı farklı oldukları konumların sayısı olarak tanımlar; en küçük uzaklığı 2 olan kod tek hatayı algılar, 3 olan tek hatayı düzeltir, 4 olan ayrıca çift hatayı algılar. Eşlik bitiyle kurulan kod, en küçük uzaklığı 2 olan koddur.:155-156 Opteron'un ana belleği gibi hata düzeltme kodlu (ECC) bellekler de SEC-DED kodlarıyla korunur.:330

Tarihçe

Hamming, 1950'deki makalesinde yalnız hata algılayan kodların o güne kadar yaygın olduğunu belirtir: telefon santrallerinin ortak denetim sistemlerinde ve Bell Telefon Laboratuvarlarının röleli hesap makinelerinde beşte iki kodları, radyo telgrafında yedide üç kodu kullanılıyordu. Laboratuvarın Aberdeen Deneme Alanı için yaptığı Model 5 röleli bilgisayarlarda arızalar fark edilmeden geçmiyordu, ama makineler gece ve hafta sonu gözetimsiz çalıştığından hata çoğu zaman hesabın durması demekti. Hamming hata düzeltmeyi bu deneyimden yola çıkarak ele almıştır.:147-149

IBM'in 1960 tarihli el kitabına göre IBM 705 veri işleme sisteminin yedi bitlik alfasayısal kodunda C konumundaki denetim biti yalnız denetim içindi; kod çift eşlikliydi ve 1 sayısı tek olan karakter geçersiz sayılırdı.:21 Eşlik bant birimlerine de taşındı ve karakter başına eşlik ile kayıt başına boyuna denetim karakteri birlikte kullanıldı.:27 Eşlik kişisel bilgisayarların ana belleğinde de kullanıldı; IBM PC'nin belleğinin tamamı eşlikle denetleniyordu.:1-13 Micron 1994'te, DRAM'lerin yumuşak hata oranı düştüğü için eşlikli sistemlerin birkaç yıl içinde ya eşliksiz ya da hata düzeltmeli sistemlere geçebileceğini yazıyordu.:5-19

Kaynakça

  1. 1 2 3 4 5 6 7 8 Hamming, R. W. (1950). "Error Detecting and Error Correcting Codes". Bell System Technical Journal (İngilizce). 29 (2): 147-160. doi:10.1002/j.1538-7305.1950.tb00463.x.
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 Mano, M. Morris; Ciletti, Michael D. (2006). Digital Design (İngilizce) (4. bas.). Upper Saddle River, N.J.: Pearson Prentice Hall. ISBN 978-0-13-198924-5.
  3. 1 2 3 4 5 6 Hennessy, John L.; Patterson, David A. (2007). Computer Architecture: A Quantitative Approach (İngilizce) (4. bas.). San Francisco: Morgan Kaufmann. ISBN 978-0-12-370490-0.
  4. 1 2 3 4 5 6 IBM (1960). General Information Manual: Introduction to IBM Data Processing Systems. F22-6517 (İngilizce). International Business Machines Corporation. Erişim tarihi: 20 Ekim 2026.
  5. 1 2 3 4 5 "TL16C550D, TL16C550DI Asynchronous Communications Element with Autoflow Control" (PDF) (İngilizce). Texas Instruments. Aralık 2008. Erişim tarihi: 20 Ekim 2026.
  6. ↑ "SN54LS280, SN54S280, SN74LS280, SN74S280: 9-Bit Odd/Even Parity Generators/Checkers" (PDF) (İngilizce). Texas Instruments. Mart 1988. Erişim tarihi: 20 Ekim 2026.
  7. ↑ "SC16C550B: 5 V, 3.3 V and 2.5 V UART with 16-byte FIFOs" (PDF) (İngilizce). NXP Semiconductors. 16 Aralık 2014. Erişim tarihi: 20 Ekim 2026.
  8. ↑ "Serial.begin()". Arduino Language Reference (İngilizce). Arduino. Erişim tarihi: 20 Ekim 2026.
  9. 1 2 IBM (1984). IBM Personal Computer Hardware Reference Library: Technical Reference. 6322507 (İngilizce) (gözden geçirilmiş bas.). International Business Machines Corporation. Erişim tarihi: 20 Ekim 2026.
  10. 1 2 3 4 Micron Semiconductor (1994). 1994 DRAM Data Book (İngilizce). Micron Semiconductor. Erişim tarihi: 20 Ekim 2026.
  11. 1 2 PCI Special Interest Group (18 Aralık 1998). PCI Local Bus Specification, Revision 2.2 (PDF) (İngilizce). PCI Special Interest Group. Erişim tarihi: 20 Ekim 2026.
  12. ↑ "Information technology - Small Computer System Interface - 2, Clause 5: Physical characteristics". X3T9.2 Project 375D, Working Draft, Revision 10L (İngilizce). Accredited Standards Committee X3. 7 Eylül 1993. Erişim tarihi: 20 Ekim 2026.
  13. 1 2 3 4 Patterson, David A.; Gibson, Garth; Katz, Randy H. (1988). A Case for Redundant Arrays of Inexpensive Disks (RAID) (PDF). Proceedings of the 1988 ACM SIGMOD International Conference on Management of Data (İngilizce). ACM. ss. 109-116. doi:10.1145/50202.50214.
  14. 1 2 3 Patterson, David A.; Hennessy, John L. (2012). Computer Organization and Design: The Hardware/Software Interface (İngilizce) (4. (gözden geçirilmiş) bas.). Waltham, Mass.: Morgan Kaufmann. ISBN 978-0-12-374750-1.
  15. ↑ IBM (1959). Customer Engineering Manual of Instruction: 729 II, 729 III, 729 IV Magnetic Tape Units. 223-6845 (İngilizce). International Business Machines Corporation. Erişim tarihi: 20 Ekim 2026.
  16. 1 2 Patel, Arvind M. (1985). "Adaptive cross-parity (AXP) code for a high-density magnetic tape subsystem". IBM Journal of Research and Development (İngilizce). 29 (6): 546-562. doi:10.1147/rd.296.0546.