31 bit bilgi işlem - 31-bit computing

Olarak bilgisayar mimarisi , 31 bitlik bir tamsayı , bellek adresleri ya da diğer veri birimi 31 olanlardır bit genişliğinde.

1983'te IBM , önceki modellerin 24-bit fiziksel ve sanal ve geçişli 24-bit-sanal/ 26-bit fiziksel adreslemesinin bir yükseltmesi olarak System/370 -XA anabilgisayar mimarisinde 31-bit adreslemeyi tanıttı . Bu geliştirme, adres alanlarının 128 kat daha büyük olmasına izin vererek, programların 16 MB'nin üzerindeki belleği adreslemesine izin verdi  ("satır üstü" olarak anılır). İçin Destek COBOL , FORTRAN ve daha sonra Linux / 390 dahil edildi.

1980'lerin başında Motorola 68012 tanıtıldı; Motorola 68010'da olduğu gibi 32-bit veri ve adres kayıtları vardı, ancak adres pinlerinde bir adresin alt 24 bitini sağlamak yerine, adres pinlerinde bit 30 dışında hepsini sağladı.

31 bit IBM ana bilgisayarları

Mimari

In System / 360 dışında 360/67 ve erken Sistemi / 370 mimarileri, genel amaçlı yazmaç genişliğinde, makine yaptım 32-bit, aritmetik işlemler ve adresleri her zaman 32 bit deyişle saklandı yüzden 32 bit vardı mimari 32 bit olarak kabul edildi , ancak makineler adresin ilk 8 bitini görmezden geldi ve 24 bit adresleme ile sonuçlandı. XA uzantısıyla, adresleme için yalnızca sözcükteki yüksek dereceli bit (bit 0) göz ardı edildi. Bir istisna, mod değiştirme talimatlarının bit 0'ı da kullanmasıdır. IBM'in 360/67'nin 32-bit adreslemesini uygulamamasının en az iki nedeni vardı.

  1. Döngü kontrol talimatları BXH ve BXLE , imzalı karşılaştırmalar yaptı.
  2. Mevcut yazılımın çoğu, bit 0'ı liste sonu göstergesi olarak kullandı.

Geçiş

Geçiş zordu: IBM'in kendi işletim sistemi mimarları ve geliştiricileri de dahil olmak üzere montaj dili programcıları, neredeyse yirmi yıldır bayraklar için adreslerin başındaki yedek baytı kullanıyordu. IBM, acıyı en aza indirmek için iki adresleme biçimi sağlamayı seçti: 32 bitlik bir adresin en önemli biti (bit 0) açıksa, sonraki 31 bit sanal adres olarak yorumlandı. En anlamlı bit kapalıysa, yalnızca alt 24 bit sanal adres olarak kabul edildi (tıpkı XA öncesi sistemlerde olduğu gibi). Böylece programlar, üst biti kapalı bıraktığı sürece, üst baytın yedi düşük sıralı bitini başka amaçlar için kullanmaya devam edebilir. Değiştirilmesi gereken programlar, bir adresi içeren bir kelimenin en üstteki (en soldaki) bitini ayarlayanlardı. Bu aynı zamanda adres karşılaştırmalarını da etkiledi: Bir kelimenin en soldaki biti ayrıca 2'nin tümleyen aritmetiğinde bir işaret biti olarak yorumlanır ve bit 0 açıksa negatif bir sayı belirtir. İmzalı aritmetik karşılaştırma talimatlarını kullanan programlar ters sonuçlar alabilir. İki eşdeğer adres, kalan bitler aynı olsa bile, birinin işaret biti açıksa, eşit olmayan olarak karşılaştırılabilir. Bunların çoğu, COBOL veya FORTRAN gibi yüksek seviyeli dilleri kullanan programcılar için görünmezdi ve IBM, bir süreliğine çift modlu donanımla geçişe yardımcı oldu.

Bu 31 bitlik adresleme modundaki belirli makine talimatları, muhtemelen kasıtlı bir yan etki olarak adresleme modu bitini değiştirir. Örneğin, orijinal alt rutin çağrı talimatları BAL, Branch ve Link ve onun kayıt-kayıt eşdeğeri, BALR, Branch ve Link Register, üst baytta belirli durum bilgilerini, talimat uzunluk kodunu, koşul kodunu ve program maskesini depolar. iade adresinden. 31 bitlik dönüş adreslerine izin vermek için bir BAS, Branch ve Save komutu eklendi. BAS ve onun kayıt-kayıt eşdeğeri BASR, Branch ve Save Register, 24 bitten daha uzun adreslere izin veren tek System/360 modeli olan System/360 Model 67'nin komut setinin bir parçasıydı . Bu talimatlar korundu, ancak 31 bit adresleme için değiştirildi ve genişletildi.

24/31 bit adreslemeyi destekleyen ek talimatlar, bir adresleme modu değişikliğini de etkileyen iki yeni kayıt-kayıt arama/dönüş talimatını içerir (örn. Şube ve Kaydetme ve Ayarlama Modu, BASSM, bir aramanın 24/31 bit versiyonu, mod dahil bağlantı adresi kaydedilir ve bir dal muhtemelen farklı bir moddaki bir adrese alınır ve BSM, Branch ve Set Mode, dönüşün doğrudan önceden kaydedilmiş bağlantı adresine olduğu 24/31 bitlik bir sürümdür. ve önceki modunda). Birlikte ele alındığında, BASSM ve BSM, 24 bit aramaları 31 bit'e (ve 24 bit'e geri dönmeyi), 31 bit aramaları 24 bit'e (ve 31 bit'e geri dönmeyi), 24 bit aramaları 24 bit'e ( ve 24 bit'e döner) ve 31 bitlik aramalar 31 bit'e (ve 31 bit'e döner).

BALR 14,15 (bir çağrının yalnızca 24 bitlik biçimi) gibi BASSM, bağlantı adresi ve modunun kayıt 14'e kaydedildiği ve alt program adresi ve moduna bir dalın alındığı BASSM 14,15 olarak kullanılır. kayıt 15'te belirtilmiştir. BCR 15,14'e (koşulsuz dönüşün yalnızca 24 bitlik biçimi) biraz benzer şekilde BSM, BSM 0,14 olarak kullanılır; burada 0, geçerli modun kaydedilmediğini gösterir (program çıkıyor alt rutin) ve kayıt 14'te belirtilen adres ve modda arayana bir geri dönüş yapılacaktır. BAS, BASR, BASSM ve BSM kullanımına ilişkin kapsamlı örnekler için IBM yayını MVS/Genişletilmiş Mimari Sistem Programlama Kitaplığı: 31-Bit Adresleme, GC28-1158-1'e bakın, özellikle, s. 29–30.

370/ESA mimarisi

1990'larda IBM, 370/ESA mimarisini tanıttı (daha sonra 390/ESA ve son olarak ESA/390 veya System/390, kısaca S/390), tam 31 bit sanal adreslemeye evrimi tamamladı ve bu adresleme modu bayrağını korudu. Bu sonraki mimariler, 2 GB'den fazla fiziksel belleğe izin verir ve her birinin boyutu 2 GB'a kadar olan birden çok eşzamanlı adres alanına izin verir. 2006 yılının ortalarından itibaren, bu çoklu 31-bit adresleme modu tarafından gereksiz yere kısıtlanmış çok fazla program vardı.

z/Mimarlık

IBM, 2000 yılında ilk 64 bit z/Architecture sistemi olan IBM zSeries Model 900'ün piyasaya sürülmesiyle 2 GB doğrusal adresleme engelini ("çubuk") aştı. XA geçişinin aksine, z/Architecture bir üst bit ayırmaz önceki kodu tanımlamak için. z/Architecture, 24 bit ve 31 bit kodla uyumluluğu korur, hatta daha eski kodlar daha yeni 64 bit kodla aynı anda çalışır.

Linux/390

Yana Linux / 390 ilk olarak mevcut bir 32-bit veri yayımlanmıştır / 1999 donanım ele 31 bitlik, ön z / Mimari modunda derlenen ilk ana bilgisayar Linux uygulamaları da 31-bit adresleme ile sınırlıdır. 64-bit donanım, 64-bit Linux on IBM Z ve 64-bit Linux uygulamaları ile bu sınırlama ortadan kalktı . 64-bit Linux dağıtımları hala 32-bit veri/31-bit adresleme programlarını çalıştırmaktadır. IBM'in 31 bitlik adreslemesi, 31 bitlik kodun ek bellekten yararlanmasına olanak tanır. Ancak, herhangi bir anda, her çalışan adres alanında maksimum 2 GB bulunur. 31-bit adreslemeli işlemcilerdeki 64-bit olmayan Linux için, RAM diski olarak 2 GB çubuğun üzerindeki belleği atamak mümkündür. 31-bit Linux çekirdeği (kullanıcı alanı değil) desteği 4.1 sürümünde kaldırıldı.

Ruby ve Küçük Konuşma

Ruby & Smalltalk dilleri için yorumlayıcılar, bir değerin kutulanmamış bir tamsayı olup olmadığını anlamak için en düşük biti kullanır. Bu, 32 bit makinelerde (veya 32 bit işaretçilere sahip 16 bit makinelerde) 31 bit tam sayıların kutusuz olduğu anlamına gelir. Taşma durumunda, sonuç kutulu bir nesneye sığdırılır, bu da bunun tahsis edilmesi ve çöp toplanması gerektiği anlamına gelir. Bu nedenle, 31 bit işaretli formata uymayan 32 bit değerleriniz varsa, bu yorumlayıcılarda çok verimsiz olacaktır. Aynısı, 64-bit bilgisayarlarda 63-bit kutusuz tamsayılar için de geçerlidir. Benzer tasarımlar LISP'de ve değişkenleri herhangi bir türden değer alabilen diğer bazı dillerde bulunabilir. Bazı durumlarda, bu tür bir tasarım için donanım desteği vardı: bkz. Etiketli mimari ve Lisp makinesi .

Referanslar