Sự khác nhau giữa 32 bit và 64 bit?


SỰ KHÁC NHAU GIỮA 32 BIT VÀ 64 BIT
Bạn là một nhân viên trong xưởng chế biến nước táo. Bạn có một chiếc máy trước mặt và một đống táo, với mỗi quả tương ứng với 1 ô.


Trên bàn phím chỉ có 2 con số: 0 và 1. Mỗi ô chứa táo sẽ đánh số tương ứng. Bạn có thể lựa chọn cách đánh số.
Giả sử mỗi lần lấy táo bạn chỉ nhập được tối đa 2 số. Vậy thì các giá trị bạn có thể nhập vào máy tính là 00, 01, 10, 11. Nếu đánh 4 ô táo đó các mã số lần lượt là 00, 01, 10, 11, vậy thì chỉ có tối đa 4 ô táo có thể dùng. (Lưu ý là mình nói đánh dấu ô táo, không phải quả táo vì táo trong ô có thể mất và có thể nhận hàng mới.)
Bạn có thể truy cập vào ô táo thứ 5 không? Không, vì máy của bạn chỉ có thể nhận diện được 4 trường hợp như đã kể phía trên.
Vậy giả sử máy có thể nhập tối đa 3 số thì sao? Máy sẽ trông như thế này đây!

Như thế thì bạn có thể nhập được bao nhiêu giá trị nhỉ? 000, 001, 010, 011, 100, 101, 110, 111. Hừm, 8 cái. Vậy nếu ta đánh số ô chứa táo tương ứng như trên 000, 001,..., 110, 111, thế là ta có thể truy cập tối đa 8 ô chứa táo rồi.
Ta cùng nhập 000, và ấn nút đỏ thôi!
Nào táo số 000, biến thành nước nào!

Nào táo số 101, biến thành nước nào!

Lại câu hỏi cũ, nếu chỉ có thể truy cập tối đa 8 ô chứa táo, vậy làm sao truy cập táo thứ 9?
Chúng ta sẽ tăng giới hạn nhập của máy lên.
Giả sử máy có giới hạn là 32 slot để nhập. Vậy thì số ô chứa táo tối đa có thể truy cập là bao nhiêu? 4,294,967,296 ô, với mỗi ô lần lượt là 00000000000000000000000000000000, 00000000000000000000000000000001,... (32 chữ số). Tại sao lại ra con số 4 tỷ này? Vì mỗi slot nhập có 2 trường hợp là 0 và 1, trong mỗi khả năng nó thì slot nhập kế tiếp lại có 2 trường hợp. Như thế thì ta có 2*2*2*...*2 (32 lần), tương ứng với 2^32 = 4,294,967,296.
Bàn táo đủ rồi, ta quay lại về máy tính nào.
Nếu xem máy để truy cập các ô táo đó là register, và các ô táo là các ô lưu trữ dữ liệu trên RAM, quả táo chính là dữ liệu. Thì ta sẽ hiểu nôm na rằng, register có một kích thước thể hiện giới hạn truy cập dữ liệu trên RAM (cũng như lúc nãy chúng ta bảo rằng kích thước máy nhập thể hiện giới hạn ô táo chúng ta có thể truy cập). Vậy thì 32 bit và 64 bit chính là loại register thể hiện giới hạn của chúng. Đối với 32 bit, ta có thể truy cập được 4 triệu bit bộ nhớ, tương ứng với 4GB bộ nhớ. Điều này dẫn đến máy 32 bit chỉ có thể sử dụng tối đa RAM 4GB, với RAM trên 4GB sẽ là không thể, cũng giống như việc truy cập vào ô táo thứ 5 khi giới hạn máy nhập là 2 như ví dụ bên trên vậy.
64 bit ra đời để giải quyết bài toán trên. Với 64 bit, ta có thể truy cập được 2^64 = 18,446,744,073,709,551,616 ô, tương ứng với 16777216 TB, tha hồ mà sử dụng.
RAM càng lớn, máy tính chạy càng nhanh? Đúng nhưng không đúng. Đúng vì đối với các RAM kích thước nhỏ, khi bộ nhớ RAM đầy thì nó sẽ chuyển dữ liệu về ổ cứng để lưu trữ tạm thời. So với việc tương tác giữa RAM và register, lại có sự phát sinh thêm thời gian giữa RAM và ổ cứng, dẫn đến máy bị chậm. Với RAM kích thước lớn, chúng không lo bị đầy nên không cần phải gửi nhờ dữ liệu cho ổ cứng, nên sẽ không bị chậm vì lý do đó. Nhưng máy cũng sẽ có thể bị chậm vì lý do dở hơi nào khác. Chính vì thế RAM không quyết định tốc độ của máy, thế nhưng RAM ít thì chắc chắn máy sẽ chậm.

Tổng kết: Trong đời sống thường ngày, chúng ta hay gặp những thứ nhỏ nhặt, cũng vì chúng ta ít quan tâm và không được ai giải thích nên xem nó là điều hiển nhiên. Mình hi vọng những bài viết giải thích những điều đơn giản này giúp các bạn mở rộng lăng kính của mình không chỉ giới hạn bởi hai từ “hiển nhiên” ấy, mà nó còn là một sự hiểu biết về ý nghĩa của chúng. Cám ơn các bạn đã đọc!
Nội dung bài viết thuộc về Lê Công Diễn.

Người viết: Lê Công Diễn
Mang đi nhớ ghi nguồn



Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)