64 bitlik sistemlə 32 bitlik sistem arasındakı fərq nədir? Niyə 128 bit və ya daha çox kimi bir şey yoxdur?


cavab 1:

Bu şəkildə təyin olunan bitlərin sayı, əsas qeydlərin ALU və tam ədədlərin eni ilə əlaqəlidir. Əslində yalnız həll edilə bilən RAM miqdarı ilə bağlıdır.

RAM-a daxil olduqda istifadə olunan 2 fərqli avtobus var: ümumiyyətlə əsas ALU ilə eyni genişlikdə olan məlumat avtobusu (bir əməliyyatla RAM-a köçürülə biləcək məlumatların miqdarını müəyyənləşdirir) və ünvan avtobusu ; Bu, mikroişlemcinin neçə yaddaş yerini (nə qədər yaddaş) həll edə biləcəyini təyin edir.

Şəkil mənbəyi: Google Şəkillər (tək mənbə tapılmadı)

İş burasındadır, amma bu 2 avtobus həqiqətən ölçüdə bir-birinə bağlı deyil. 32 bitlik bir CPU müxtəlif ölçülü bir ünvan sahəsinə sahib ola bilər. Əslində bu tarix boyu tez-tez olub:

  • 8 bitli 6502 və z80 modelləri 64 bit operativ yaddaşını 16 bitli ünvanı ilə təmin edə bildi, 16 bitli Intel 8086 isə 20 bitlik adres diapazonuna sahib oldu. 16/32 bit Motorola 68000 24 bit ünvan aralığına sahib idi. Intel PAE-nin x86-a qədər uzadılması 32-bit mikroprosessorlarda 36-bitlik (64 GB) fiziki ünvana yer verməyə imkan verir (bununla belə, hər bir proses üçün 4 GB hədd tətbiq edən virtual ünvanlama hələ 32 bitlidir). 64 bitlik genişləndirmə x86-64 yalnız 52 bit fiziki və 48 bitlik virtual ünvana imkan verir.

Bunu qeyd etmək istəyirəm, çünki bir mikroişlemci kontekstində bitlərdən bəhs edərkən çox vaxt diqqətdən kənarda qalır. Əslində, bir çox insan səhvən 4 GB maneəni keçmək üçün 64 bit lazım olduğunu düşünür, baxmayaraq ki, bu yalnız x86-nın virtual ünvan sxeminin məhdudlaşdırılmasıdır. Heç bir kəs, 64 GB RAM istifadə edə biləcək 8 bitlik bir CPU düzəltməyə mane olmur. Sadəcə səmərəsiz olardı. 64 bitlik bir CPU-da ünvan boşluğu tükənirsə, 128 bitə keçmək məcburiyyətində deyilik. Bizə yalnız daha böyük bir ünvan sahəsi lazımdır.

Bitlərin sayı sizə nə deyir? Bir əməliyyatla emal edə biləcəyiniz nömrələrin maksimum ölçüsünü bildirir. 32 bitli bir mikroişlemcinin ifadə edə biləcəyi maksimum sayı (2 ^ 32) -1 və ya 4,294,967,295. 64 bitlik bir CPU-nun ifadə edə biləcəyi maksimum sayı (2 ^ 64) -1 və ya inanılmaz dərəcədə böyük olan 18 446 744 073 709 551 615. Burada bir saniyə x86 haqqında danışdıqda, 64 bitlik ISA-ya keçəndə aşağıdakıları əldə edirsən:

  • Daha böyük virtual və fiziki ünvan məkanını tetikleyici nömrələr, daha çox memarlıq qeydləri

Hər halda, burada Bit Səviyyə Paralellik (BLP) adlı bir konsepsiya təqdim etmək istədiyim vaxt gəldi.

Burada bir nümunə istifadə edək: deyək ki, 2 tam ədəd əlavə etmək istəyirik:

568+27568 + 27

568 ifadəsi üçün tam 10 bit lazımdır, 27-nin isə 5-i lazımdır.

Budur quraşdırma: 1970-ci illərdə idik və əlimizi 8 bitlik bir CPU-ya aldıq. Bu 2 ədəd əlavə edirik, amma oh yox! 568 8 bitə sığmır. Bu səbəbdən və bunlar bayt ünvanlı sistemlər olduğundan, CPU-ya əvvəlcə aşağı baytları əlavə etməyi və daha sonra hər hansı bir daşqını nəzərə alaraq daha yüksək sifariş baytları ilə bunu etməyi tapşırırıq. Bu, ALU-nun idarə edə biləcəyindən daha böyük olan 2 ədədini effektiv şəkildə əlavə etməyə imkan verir, lakin bunun üçün 2 əməliyyat lazımdır.

Artıq 1980-ci illərdəyik. Əllərimizi yeni 16 bitlik mikroprosessor üzərində əldə etdik. Terminator filminin təkrarını seyr edərkən eyni 2 nömrəni yenidən əlavə etmək qərarına gəldik. Artıq CPU bir əməliyyatda 16 bitlik tam ədədlərdə əməliyyatlar edə bildiyindən, əvvəlki hesablama nümunəmiz yarım vaxtda tamamlandı, çünki eyni anda bütün hesablamaları edə bilərik. Bu, BLP-nin effektiv istifadəsi idi: Prosessorun söz ölçüsünü artıraraq iş yükümüzü sürətləndirdik.

Problem: niyə ALU-nun genişliyini artırmağa davam etməyək?

Beləliklə, 90-cı illərə girdik və yeni 32 bit çip aldıq. Yenidən eyni hesablamaları edirik. Amma yox! Heç bir sürət görmürük və əlavə bir əməliyyatda hələ tamamlanır. İş budur ki, bit əlavə etmək artıq iş yükünü sürətləndirmir və istifadə etdiyiniz operandların əsas ALU-ya uyğun gəlmədiyi təqdirdə kömək edir. Bu vaxt yalnız tranzistorların sayını iki dəfə artırdın və çox səy göstərərək anakartdakı izlərin sayını demək olar ki, iki dəfə artırdın.

Bir az əvvəl gördük ki, bit əlavə etmək həmişə problemin həlli yolu deyil. İndi bu barədə düşünün: 32 bit ilə ~ 4 milyardadək tam ədədləri ifadə edə bilərsiniz. 64 bit ilə bunu 18,5 trilyonadək rəqəmlərlə edə bilərsiniz. Əgər varsa, nə qədər böyük və ya daha çox olan nömrələrdən istifadə edirsiniz? Heç bir kod yazmısınızsa, ən çox yayılmış tam ədədlərin nisbətən az olduğunu (ən çox milyard) bilirsiniz. 4 milyard, amma 18 trilyondan çox dəyərləri dəstəkləmək üçün bir mübahisə edilə bilər?

Bu qədər çox saya ehtiyacınız varsa, əlbəttə ki, çox yaygın deyil və bunları bir yerinə iki dövrədə işləsəniz böyük problem deyildir.

128 bitlik bir ALU ilə bir prosessor seçsəydik, kənar yüklərdə performansını artırmaq üçün tranzistorların sayını və anakart izlərinin sayını iki qat artırardıq. Əslində, yəqin ki, hər hansı digər iş yükündə performansın azalacağını görərik, çünki indi effektiv işləmək üçün daha az önbelleğimiz var.

Bununla birlikdə, Intel / AMD / ARM və s. Çox böyük tam ədədlər və üzən nöqtə nömrələrini çox ucuz və tez həll etmək üçün genişləndirmələr hazırlamış və tətbiq etmişdir. X86-dan AVX, AVX2, SSE və 3DNOW kimi uzantılar! və ARMv8-in NEON bu böyük dəyərlərin vektor işlənməsinə imkan verir.


cavab 2:

Bir çox CPU-da registrlərin, tam ədədlərin və ünvanların / ünvan boşluqlarının ölçüsü, habelə çoxsaylı mülahizələr üçün ünvan sahəsini qorumaq üçün fərqli iş rejimləri mövcuddur.

Intel CPU-larında "həqiqi rejim" adlı bir rejim mövcuddur, bu prosessorda qeydiyyat ölçüsü, təlimat dəsti və ünvan baxımından köhnə 8086/8286 + CPU effektivdir. 640K və MS-DOS günlərini xatırladır.

Bir əməliyyat sistemi işə düşən kimi, CPUu 32 bit və ya 64 bit rejimində (64 bit rejimi ilə) qoyan bir CPU əmri var.

32 bit rejimində tam ədədlərin ünvanı və ölçüsü 32 bit təşkil edir. Ünvan məhdudiyyətləri 4 GB yaddaşla məhdudlaşır, tez-tez bu ünvan məkanının bir hissəsi video yaddaş üçün / qorunursa, təxminən 3,2 GB təşkil edir. Arifmetik problemlər arasında sabit disklərin ölçüsündə məhdudiyyətlər var. * Nix lseek () metodu yalnız bir faylın əvvəlindən 4G-ə qədər hərəkət edə bilər və daxili fayl sistemi dəyişənləri də eyni şəkildə məhdudlaşdırılıb.

64 bitlik rejimdə ünvan sahəsi 2 ilə 64 bayt və ya 16 eksabayt ardıcıllıqla verilir. Tam ədədlər də 64 bit genişdir.

32 bitlik rejim məhdud RAM və ROM (və ya ekvivalent format) və ya məhdud bir sabit disk olan sistemlər üçün idealdır. Proqramlarınızın dəyişənləri, əksər proqram təlimatları kimi, işləmə yaddaşının yarısını (ya da ROM-un yarısını) alır. Sabit diskinizdə işlənən sənədlər də daha kiçikdir.

64 bitlik rejim, 8 GB RAM və ya daha çox və 4 GB sabit disk və ya SSD saxlama sahəsinə sahib demək olar ki, bütün müasir sistemlərə cavab verən çox sayda mənbəyə sahib sistemlər üçün idealdır. Proqramlarınızdakı dəyişənlər 32 bitlik proqramlardan iki qat çox RAM tutur.

64 bitlik rejimdə CPU daha sürətli olmalıdır, çünki 32 bit əvəzinə 64 biti operativ yaddaşdan çıxarır. 64 bitlik riyaziyyat bir CPU təlimatıdır, 64 bitlik riyaziyyatı 32 bitli rejimdə çox təlimat və sürət hesabına edə bilərsiniz.

64 bit rejimində, CPU önbelleğinizdə daha az dəyişənlər və proqram təlimatları var, çünki bunlar 32 bit rejimində 2 bayt əvəzinə normal olaraq 4 baytdır.

64 bitlik əməliyyat sistemlərində 32 bit proqramı işlədə bilərsiniz. Windows 7, Windows 7 göründükdən sonra ən uzun müddət bunu etdi. O dövrdə kompüterlərin çoxu 32 bitli CPU (64 bit rejimi deyil) idi və 32 bit və 64 bit versiyalarının paylanması və dəstəklənməsi xərcləri nəzərə alındı.

32 bitli proqramları 64 bit rejimində işlətmək üçün ya emulatorda proqramları işlət, ya da işləyən sisteminizdə çoxtərəfli ləpəsi, hazırda işləyən istifadəçi məkan proqramından asılı olaraq 32 və 64 bit arasında olmalıdır. Rejim açarı. Birində 32 bit proqramı, digərində 64 bitlik işləyən birdən çox nüvəniz varsa daha çətin olur.

Əlbətdə hazırda 128 bitlik CPU-ya sahib ola bilərik, amma onları etmək üçün həqiqi motivasiya və ya üstünlük yoxdur. CPU'larda 64 bitdən çox olan çox sayda işləyən vektor təlimatları var. 64 ekzabaytlıq adres sahəsi, hazırda super hesablama üçün kompüter arxitekturası üçün çox sayda "baş otağı" təklif edir.

128 bit dəyəri cari prosessorları tərtib edərkən mövcud olan digər funksiyalara da təzyiq göstərəcəkdir. Müəyyən bir ölçüdə bir çipə uyğun olan tranzistorların sayı məhduddur və mövcud funksiyalar üçün istifadə olunan bəzi tranzistorları qurban verməlisiniz - məsələn, hiper iplik və ya CPU nüvələri və ya inkişaf etmiş təlimatlar və ya CPU önbelleği və s.


cavab 3:

64 və 32 bitlik sistem ümumiyyətlə prosessorun memarlığını və ya prosessor dizaynını təsvir edir. (Memarlıq əsasən kompüter sisteminin dizaynı deməkdir).

64 bitlik bir sistemdə 64 bitlik bir qeyd var, yəni tuta biləcəyini göstərir

2642^{64}

18.446.744.073.709.551.616-a qədər sadələşdirən dəyərlər və 32-bit sistemdə 32 bitlik bir qeyd var, yəni tuta bilər

2322^{32}

Dəyərlər və ya 4,294,967,296. 64 bit qeydini saxlaya biləcəyimizi görə bilərik

2322^{32}

32 bitlik qeyddən dəfələrlə çox dəyər. Fərq nədir?

Qeydlər mərkəzi bölmə üçün xatirələrdir. Bu prosessorun təsadüfi giriş yaddaşından və ya sadəcə RAM-dan məlumat əldə etmək üçün istifadə etdiyi yaddaş ünvanını saxlayır. İndi reyestrdəki 1 bit yaddaşdakı 1 bayta aiddir. 32 bit bu səbəbdən maksimum müraciət edə bilər

2322^{32}

4 giqabayt və 64 bitlik baytlar maksimum dərəcədə müraciət edə bilər

2642^{64}

Bayt, yəni 16 eksabaytdır. Bu, həqiqətən böyükdür və kifayət qədər çoxdur.

Budur, 4 gigabaytdan çox RAM olan 64 bitlik bir sistemin idarə edə biləcəyi əsas fərq, lakin 32 bit sistemlər üçün eyni deyil.

32 bitlik bir sistemdə 8 gigabayt RAM istifadə etdiyimizi düşünsək, 4 giqabaytlıq yaddaş CPU-ya daxil ola bilməz. Bu vəziyyətdə 64 bitlik bir sistem istifadə etməliyik.

128 bitlik bir sistemə ehtiyac duymuruq, çünki 64 bitlik sistem lazımlı yaddaşdan daha çoxunu həll edə bilər. Bu kimi

21282^{128}

Yaddaş baytları indi tələb olunmur. Gələcək üçün saxlayaq.

Ümid edirəm kömək edir


cavab 4:

64 və 32 bitlik sistem ümumiyyətlə prosessorun memarlığını və ya prosessor dizaynını təsvir edir. (Memarlıq əsasən kompüter sisteminin dizaynı deməkdir).

64 bitlik bir sistemdə 64 bitlik bir qeyd var, yəni tuta biləcəyini göstərir

[riyaziyyat] 2 ^ {64} [/ riyaziyyat]

18.446.744.073.709.551.616-a qədər sadələşdirən dəyərlər və 32-bit sistemdə 32 bitlik bir qeyd var, yəni tuta bilər

[riyaziyyat] 2 ^ {32} [/ riyaziyyat]

Dəyərlər və ya 4,294,967,296. 64 bit qeydini saxlaya biləcəyimizi görə bilərik

[riyaziyyat] 2 ^ {32} [/ riyaziyyat]

32 bitlik qeyddən dəfələrlə çox dəyər. Fərq nədir?

Qeydlər mərkəzi bölmə üçün xatirələrdir. Bu prosessorun təsadüfi giriş yaddaşından və ya sadəcə RAM-dan məlumat əldə etmək üçün istifadə etdiyi yaddaş ünvanını saxlayır. İndi reyestrdəki 1 bit yaddaşdakı 1 bayta aiddir. 32 bit bu səbəbdən maksimum müraciət edə bilər

[riyaziyyat] 2 ^ {32} [/ riyaziyyat]

4 giqabayt və 64 bitlik baytlar maksimum dərəcədə müraciət edə bilər

[riyaziyyat] 2 ^ {64} [/ riyaziyyat]

Bayt, yəni 16 eksabaytdır. Bu, həqiqətən böyükdür və kifayət qədər çoxdur.

Budur, 4 gigabaytdan çox RAM olan 64 bitlik bir sistemin idarə edə biləcəyi əsas fərq, lakin 32 bit sistemlər üçün eyni deyil.

32 bitlik bir sistemdə 8 gigabayt RAM istifadə etdiyimizi düşünsək, 4 giqabaytlıq yaddaş CPU-ya daxil ola bilməz. Bu vəziyyətdə 64 bitlik bir sistem istifadə etməliyik.

128 bitlik bir sistemə ehtiyac duymuruq, çünki 64 bitlik sistem lazımlı yaddaşdan daha çoxunu həll edə bilər. Bu kimi

[riyaziyyat] 2 ^ {128} [/ riyaziyyat]

Yaddaş baytları indi tələb olunmur. Gələcək üçün saxlayaq.

Ümid edirəm kömək edir