2010-04-27 14 views
18

Ai đó có thể giải thích sự khác biệt giữa WordByte là gì? Làm thế nào nó liên quan đến kích thước bộ nhớ, vv?Sự khác biệt giữa địa chỉ từ và địa chỉ byte

+2

Vui lòng xem [lược đồ byte so với từ địa chỉ] (http://tams-www.informatik.uni-hamburg.de/applets/ hades/webdemos/50-rtlib/40-memory/byte-vs-word.html):> Trình diễn các lược đồ địa chỉ dựa trên byte và từ. –

Trả lời

25

Một byte là một đơn vị bộ nhớ để lưu trữ và một chip bộ nhớ có đầy đủ các byte như vậy. Các đơn vị bộ nhớ là địa chỉ. Đó là cách duy nhất chúng ta có thể sử dụng bộ nhớ.

Trong bộ nhớ thực tế chỉ là địa chỉ byte. Điều đó có nghĩa là địa chỉ nhị phân luôn trỏ đến một byte đơn chỉ. Một từ chỉ là một nhóm các byte – 2, 4, 8 tùy thuộc vào kích thước bus dữ liệu của CPU.


Để hiểu hoạt động bộ nhớ đầy đủ, bạn phải làm quen với các thanh ghi khác nhau của CPU và các cổng bộ nhớ của RAM. Tôi giả sử bạn biết ý nghĩa 'đăng ký địa chỉ bộ nhớ MAR', 'đăng ký dữ liệu bộ nhớ MDR', 'đăng ký bộ đếm chương trình PC', 'đăng ký bộ đệm MBR'. RAM có hai cổng bộ nhớ: 32 bit cho dữ liệu/địa chỉ, 8 bit cho OPCODE.

Giả sử CPU muốn đọc một từ (nói 4 byte) từ địa chỉ xyz trở đi. CPU sẽ đặt địa chỉ vào MAR, gửi tín hiệu đọc bộ nhớ tới chip bộ điều khiển bộ nhớ. Khi nhận được địa chỉ và tín hiệu đọc, bộ điều khiển bộ nhớ sẽ kết nối bus dữ liệu với cổng 32 bit và 4 byte bắt đầu từ địa chỉ xyz sẽ chảy ra khỏi cổng tới MDR.

Nếu CPU muốn tìm nạp lệnh tiếp theo, nó sẽ đặt địa chỉ này vào thanh ghi PC và gửi tín hiệu tìm nạp tới bộ điều khiển bộ nhớ. Khi nhận được địa chỉ và tín hiệu tìm nạp, bộ điều khiển bộ nhớ sẽ kết nối bus dữ liệu với cổng 8 bit và một opcode dài một byte nằm tại địa chỉ nhận được sẽ chảy ra khỏi RAM vào MDR của CPU.

Vì vậy, đó là ý nghĩa của nó khi chúng tôi nói một đăng ký nhất định là 'bộ nhớ địa chỉ' hoặc 'địa chỉ byte'. Bây giờ điều gì sẽ xảy ra khi bạn đặt, nói số thập phân 2 trong nhị phân trên MAR với ý định đọc 'từ' 2, không phải (byte số 2)?

Từ số 2 có nghĩa là byte 4, 5, 6, 7 đối với máy 32 bit. Trong thực tế, bộ nhớ vật lý chỉ là byte địa chỉ. Vì vậy, có mẹo để xử lý 'giải quyết từ'.
Khi MAR được đặt trên bus địa chỉ, 32 bit của nó không ánh xạ lên 32 dòng địa chỉ 0-31 tương ứng. Thay vào đó, bit MAR 0 được kết nối với địa chỉ dòng xe buýt 2, bit MAR 1 được kết nối tới địa chỉ dòng xe buýt 3 và vân vân. 2 bit trên của MAR bị loại bỏ vì chúng chỉ cần thiết cho các địa chỉ từ trên 2^32, không cái nào trong số đó là hợp pháp cho máy 32 bit của chúng ta.
Sử dụng ánh xạ này, khi MAR là 1, địa chỉ 4 được đặt lên xe buýt, khi MAR là 2, địa chỉ 8 được đặt lên xe buýt và vân vân.

Có chút khó khăn khi bắt đầu hiểu. Tôi đã học được nó từ tổ chức máy tính có cấu trúc của Andrew Tanenbaums.

1

Hình ảnh này nên làm cho nó dễ hiểu: http://i.stack.imgur.com/rpB7N.png

một cách đơn giản,

• Trong byte lược đồ địa chỉ, từ đầu tiên bắt đầu tại địa chỉ 0, và từ thứ hai bắt đầu tại địa chỉ 4 •

• Trong lược đồ địa chỉ từ, tất cả các byte của từ đầu tiên được đặt trong địa chỉ 0 và tất cả byte của từ thứ hai được đặt tại địa chỉ 1.

Ưu điểm của khả năng xử lý byte rõ ràng khi chúng tôi xem xét các ứng dụng xử lý dữ liệu một byte tại một thời điểm. Việc truy cập một byte đơn trong hệ thống có thể định địa chỉ byte chỉ yêu cầu cấp một địa chỉ duy nhất. Trong một hệ thống 16-bit địa chỉ, trước hết cần tính toán địa chỉ của từ chứa byte, tìm nạp từ đó và sau đó trích xuất byte từ từ hai byte. Mặc dù các quy trình khai thác byte được hiểu rõ, nhưng chúng kém hiệu quả hơn việc truy cập trực tiếp byte. Vì lý do này, nhiều máy hiện đại là byte địa chỉ.

1

Địa chỉ là kích thước của một đơn vị bộ nhớ có địa chỉ riêng. Nó cũng là phần nhỏ nhất của bộ nhớ mà bạn có thể sửa đổi mà không ảnh hưởng đến hàng xóm của nó.

Ví dụ: máy có byte là 8 bit bình thường và kích thước từ = 4 byte. Nếu đó là một máy có thể định địa chỉ, không có địa chỉ nào là địa chỉ của byte thứ hai của int. Xử lý các chuỗi (ví dụ: một mảng như char str[]) trở nên bất tiện vì bạn vẫn lưu trữ các ký tự được đóng gói cùng nhau. Sửa đổi chỉ str[1] có nghĩa là tải từ có chứa nó, thực hiện một số thay đổi/và/hoặc hoạt động để áp dụng thay đổi, sau đó thực hiện một cửa hàng từ.

Lưu ý rằng điều này khác với máy không cho phép tải/lưu trữ từ không được căn lề (trong đó 2 bit thấp của địa chỉ từ phải bằng 0). Các máy như vậy thường có chỉ lệnh tải/lưu trữ byte. Chúng ta đang nói về máy móc mà không có điều đó.

Địa chỉ CPU thực sự vẫn có thể bao gồm các bit thấp, nhưng yêu cầu chúng luôn bằng không (hoặc bỏ qua chúng). Tuy nhiên, sau khi kiểm tra xem chúng có bằng không, có thể bỏ đi, vì vậy phần còn lại của hệ thống bộ nhớ chỉ nhìn thấy địa chỉ từ, trong đó hai từ liền kề có địa chỉ khác 1 (không phải 4). Tuy nhiên, trên CPU 16 bit, nơi đăng ký chỉ có thể chứa 64k địa chỉ khác nhau, bạn sẽ không thể làm điều này. Mỗi địa chỉ CPU riêng biệt sẽ tham chiếu đến 2 byte bộ nhớ khác nhau, thay vì loại bỏ bit thấp. 2B bộ nhớ địa chỉ từ sẽ cho phép bạn giải quyết 128kiB bộ nhớ, thay vì chỉ 64kiB với bộ nhớ byte địa chỉ.

Thực tế thú vị: ARM được sử dụng để sử dụng 2 bit thấp của địa chỉ dưới dạng điều khiển ngẫu nhiên cho các tải từ chưa được căn chỉnh. (Nhưng nó luôn luôn có byte hướng dẫn tải/cửa hàng.)


Xem thêm:


Lưu ý rằng cắn-địa chỉ bộ nhớ có thể tồn tại nhưng không. 8-bit byte gần như là tiêu chuẩn phổ biến hiện nay. (Các máy tính cổ đại đôi khi có các byte lớn hơn, xem phần lịch sử của wikipedia's Byte article.)