it-swarm-tr.com

32 bit işletim sistemi 64 bit işlemcide çalışabilir mi?

32 bit işletim sistemi ve 64 bit işletim sistemi arasındaki fark nedir? 32 bit işletim sistemi 64 bit işlemcide çalışabilir mi?

23
Prabhu

Sorunuz mimariye özgüdür. x64 aslında x86 mimarisinin bir uzantısıdır. 64 bit adres alanını destekler. Bazı yeni talimatlar ve yeni kayıtlar sağlar.

Bir x64 makinede 32-bit x86 Windows çalıştırabilirsiniz. Bunu Itanium 64-bit sistemlerde yapamayacağınızı unutmayın.

32
Mehrdad Afshari

64 bit işlemci hem 32 hem de 64 işletim sistemini çalıştırabilir (en az bir x64 olabilir). 32 bit işlemci, yalnızca 32 yerel olarak çalışabilir.

Aradaki fark çoğunlukla bir İşaretçi/Referansın büyüklüğü ile ilgilidir. 64 bit makinelerde, 64 bit adres aralığında bir adrese başvurabilirsiniz (böylece 2 ^ 64 bayt bellek verir). 32 bit'te yalnızca 2 ^ 32 bayta (= 4 GB) adres verebilirsiniz. Şimdi mevcut bilgisayarlara bakarsanız, neden dünyanın 64 bit'e geçtiği açıktır: 32 bit artık tüm RAM öğelerini kolayca çözemez.

X64'te (AMD/Intel) 64 bitlik ek avantajlara sahipsiniz. CPU daha fazla kayıtlara sahiptir ve bu nedenle daha verimli kod sağlar.

Diğer mimarilerde 64 ve 32 bit arasındaki farklar daha az belirgindir. Örneğin, Nintendo 64 (hatırladın mı?) 64 bit bir makineydi ancak kodunun çoğu 32 bit idi. Yani bu durumda 64 bit bir pazarlama hilesi olarak daha fazla hizmet etti.

14
Lemmy

Halen kabul edilen cevap genel olarak doğrudur, ancak tam olarak öyle değildir. Gerçekten "32-bit CPU" veya "" 64-bit CPU "olarak adlandırılan tek bir şey yoktur - bu, CPU mimarisinin sadece küçük bir kısmına atıfta bulunan bir açıklamadır. CPU ve bellek arasındaki adres seçim hatlarının, yani adres alanı olarak adlandırılan bellek işlemleri için kullanılabilir.

CPU'nun bir işlemci ve bellek arasındaki telleri oturtup ördüğü (ördüğü) zaman kullandığı eski zamanlarda, ya 32'yi kullanmak zorunda kalacaktınız (teorik olarak, çünkü o zamanlar yoktu) CPU ile bellek denetleyicisi arasında 64 kabloya erişmek istediğiniz bellek adresini belirtmek için kullanılacak. Örneğin, 2 bitlik bir bellek mimarisine sahip olduğumuzu varsayalım: 00 göndermek, 0, 01 adresini seçer, 1 adresini, 10 adres 2'yi, 11 adresi 3'ü seçer. Bu 2-bit bize 2 ^ 2 bayt verir. RAM (4 bayt).

32 bit CPU kullanıyorsanız ve daha fazla belleği destekleyebilmeniz için CPU ve bellek denetleyicisi arasına 32 kablo eklerseniz, artık 32 bit çalıştırabilen bir "64 bit CPU" vardır. kod veya 64 bit kod. Bu ne anlama geliyor ve bu nasıl oluyor? Şimdi 2-bit işlemcimizi bu cevabın önceki bölümünden alalım ve başka bir kablo ekleyerek 3 bitlik bir işlemciye dönüştürelim, bizi 4 bayttan 2 ^ 3 veya 8 bayta RAM'e götürelim.

Mevcut "2 bayt" kodu çalışacak ve son 2 kablonun değerlerini yukarıda belirtildiği gibi ayarlayarak (00-11) çalışacaktır. Ekstra bağlantıyı varsayılan olarak sıfır olarak bağlayacağız, bu yüzden aslında 2 baytlık kod çalıştığında, 00'ı seçtiğinde, aslında 000'ı ve 11'i seçtiğinde aslında 011'i seçiyor. Kolay.

Şimdi bir programcı "yerel" 3 baytlık bir kod yazmak istiyor ve ek adres alanından yararlanmak için yazılımını yazıyor. CPU'ya ne yaptığını bildiğini ve yeni, ekstra kabloların manuel kontrolünü alacağını söyler. Onun yazılımı fazladan kabloları bilir ve doğru bir şekilde 000-111'i gönderir ve bu yeni CPU mimarisi tarafından desteklenen hafıza aralığına tam erişim sağlar.

Ama böyle olması gerekmiyor. Aslında, bu normalde değil işlerin nasıl gerçekleştiği. 64 bit CPU'lar ilk kez piyasaya sürüldüğünde (ve daha fazlası vardı), hepsi tamamen yeni mimariler/tasarımlarla geçti. Sadece 32 ek kabloyla bağlantıya geçmediler ve "işte burda, bu 32-bit veya 64-bit modunda kullanabileceğiniz 64-bit bir CPU'dur" demediler, aksine "Yeni işlemcimiz ve" dediler. sadece bu tamamen yeni makine dilinde programlama yapar, tamamen yeni bir şekilde davranır, eski x86/i386 32-bit işlemcilerden çok daha farklı bir bazilyon problemi çözer ve 64-bit yerli bir mimariye sahiptir. ."

Ne kadar kitlesel bir biçimde battığından dolayı meşhur "İtanik" olarak bilinen Intel Itanium'un öyküsü buydu. Yeni 64-bit döneminde habercisi olması gerekiyordu ve bakması gereken bir şeydi. Değişken uzunluklu talimatlar, büyük önbellek, 64 bit adres alanı, tonlarca yazmaç, süper heyecan verici, süper serin ve herkesi 20 yıllık eski kodu yeniden derlemeye ya da yeniden yazmaya ikna etmek için çok zor. Bu, AMD ve Intel aslında rekabet ettikleri zamandı ve AMD, “tüm bunları unutalım,“ tüm dünyadaki sorunları çözelim ”işten bahsetmek ve i386'ya 32 kablo daha eklemek ve 32-bit uyumlu hale getirmek için mükemmel bir fikre sahipti. bit CPU "ve x86_64 CPU mimarisi doğdu.

Aslında, büyük işletim sistemleri için çekirdek adlarına ve kaynaklarına bakarsanız (Linux, Windows, BSD'ler, vb.), Bunları AMD64 CPU'lara ve AMD64 mimarisine referanslarla karıştırılmış bulacaksınız. AMD, 32-bit uygulamalarla uyumluluğu korurken, 32-bit bir işletim sisteminin 64-bit donanımda veya hatta 32-bit uygulamalarda çalışabileceği şekilde, herkesin 64-bit dünyaya geçiş yapmasını sağlayan bir strateji geliştirdi 64 bit donanımda 64 bit işletim sistemi üzerinde çalışabilir. Intel, "Intel EM64T" mimarisiyle (temel olarak AMD64 ile aynıydı) ve daha sonraları x86_64 ile daha hızlı bir şekilde takip etti ve Itanic ve MIPS64 ve ALPHA64 gibi diğerleri artık masaüstü/sunucu pazarında görünmüyordu.

tl; dr AMD64 aka x86_64 CPU'lar hem 32 hem de 64 bit çekirdek ve kod ile uyumlu olacak şekilde tasarlanmıştır, ancak çoğu 64 bit CPU kesinlikle aynı şekilde değil geriye doğru uyumludur. 32 bit CPU en fazla 4GiB belleğe erişebilirken, 64 bit CPU çarpıcı bir 16 EiB'ye erişebilir (16 × 1024 ^ 6 bayt veya 4 milyar 4GiB kadar bellek) .

3