Từ hoặc địa chỉ byte? Thuật ngữ chính xác


9

Dường như, một byte đã tự thiết lập thành 8 bit (điều đó có đúng không?). RAM và NOR-flash thường có thể được truy cập ở mức khá chi tiết, nhưng tùy thuộc vào kiến ​​trúc hệ thống để xác định xem đơn vị địa chỉ nhỏ nhất là 8 bit, 16 bit hay bất kỳ công suất nào khác của số hai bit. Thuật ngữ chính xác sẽ gọi từ này là địa chỉ? Hoặc hỏi khác nhau, một từ có kích thước của đơn vị địa chỉ nhỏ nhất? Hoặc có một số thuật ngữ khác để mô tả điều này?

Có phải mabye nibble, byte, word, double word đều biến theo chiều dài bit và chỉ được xác định bởi kiến ​​trúc? Và do đó, chỉ là trùng hợp ngẫu nhiên khi một byte luôn luôn là 8 bit? Ví dụ, ai đó có thể thiết kế một số loại CPU và bộ nhớ mới và xác định byte của cô ấy là 16 bit?

Câu hỏi chính: Thuật ngữ chính xác cho khối bộ nhớ địa chỉ nhỏ nhất là gì?

Câu hỏi phụ: Từ trái nghĩa của từ này tôi đang tìm kiếm (ví dụ: được sử dụng trong NAND-flash) là gì? Địa chỉ trang, địa chỉ khối? Cả hai đều đúng hay là một không chính xác?

Câu trả lời:


9

Từ quan điểm kiến ​​trúc máy tính, và với sự cảnh báo rằng danh pháp đôi khi thay đổi, đặc biệt là khi có một gia đình kiến ​​trúc liên quan đã phát triển trong một thời gian dài, hoặc khi bộ phận tiếp thị quyết định rằng các thuật ngữ thông thường phải sử dụng trong một thuật ngữ khác cách (để đặt sản phẩm dưới ánh sáng tốt hơn bằng cách sử dụng số lớn hơn hoặc có số đơn giản để phân biệt nhiều hoặc ít sản phẩm liên quan).

Một từ có kích thước thường được sử dụng cho các hoạt động số nguyên (thường được biểu thị bằng kích thước của số nguyên hoặc các thanh ghi mục đích chung, nghĩa là không phải địa chỉ hoặc dữ liệu, các bus bên trong hoặc bên ngoài, không phải là thanh ghi chỉ mục, không phải là thanh ghi chỉ mục). Một vấn đề phổ biến là khi kiến ​​trúc là một sự tiến hóa của trước đó, người ta thường giữ từ ngữ cho kích thước ban đầu và người ta sử dụng "từ kép" hoặc "từ bốn" cho từ đó là gì nếu bạn nhìn vào kiến ​​trúc trong sự cách ly. Các từ trong lịch sử không phải lúc nào cũng là một sức mạnh của hai (tôi biết các kích cỡ: 12, 16, 18, 24, 32, 36, 60, 64 và tôi không nghĩ kiến ​​thức của mình là toàn diện).

Từ có thể định địa chỉ có nghĩa là bộ nhớ được coi là mảng các từ và do đó không có đơn vị nhỏ hơn nào có một địa chỉ riêng lẻ.

Một byte có nhiều định nghĩa khác nhau. Thuật ngữ này được giới thiệu có nghĩa là đơn vị được sử dụng trong mã hóa ký tự tại thời điểm mã hóa nhiều byte không tồn tại. Nó thường được sử dụng để chỉ đơn vị địa chỉ nhỏ nhất cho máy không có địa chỉ từ (cũng như nó không phải là một bit). Tôi không nghĩ hai định nghĩa đó đã từng cho một kích thước khác nhau. (cũng không có kích thước khác với 6 hoặc 8 bit). Đối với máy có địa chỉ từ, nó thường có nghĩa là một số đơn vị nhỏ hơn một từ mà máy có một số hỗ trợ (ví dụ: PDP-10 - máy tính có địa chỉ từ 36 bit - có các lệnh byte có thể thao tác bất kỳ kích thước nào từ 1 đến 35 hoặc 36 bit). Ngày nay nó cũng thường là 8 bit. Thông thường một vài trong số các định nghĩa là thực tế tương đương.

Byte địa chỉ đặc trưng cho các máy trong đó bộ nhớ được coi là mảng byte theo một trong các ý nghĩa trên.

AFAIK nibble chỉ được sử dụng cho số lượng 4 bit.

Ví dụ, ai đó có thể thiết kế một số loại CPU và bộ nhớ mới và xác định byte của cô ấy là 16 bit?

Có, nhưng tôi không chắc liệu sẽ có ý nghĩa như vậy nếu người ta giữ việc sử dụng CA để sử dụng byte cho một cái gì đó nhỏ hơn từ. Có một bộ xử lý 16 bit có địa chỉ từ mà không hỗ trợ cho một từ nhỏ hơn một từ có thể là một lựa chọn tốt cho bộ xử lý cho mục đích đặc biệt.

Thứ hai, từ trái nghĩa của từ này tôi đang tìm kiếm là gì? Địa chỉ trang, địa chỉ khối?

Địa chỉ bit, địa chỉ byte và địa chỉ từ là những thuật ngữ duy nhất tôi thấy sử dụng. Không có ý nghĩa gì khi chỉ giải quyết các đơn vị lớn hơn từ ở cấp độ kiến ​​trúc. Word-addressable hiện nay chỉ được sử dụng cho các bộ xử lý cho mục đích đặc biệt như DSP. Tôi không nghĩ rằng khả năng đánh địa chỉ bit đã được sử dụng cho bất kỳ mục đích nào khác ngoài mục đích đặc biệt ngoại trừ IBM Stretch.

Về câu hỏi chính mới của bạn

Thuật ngữ chính xác cho khối bộ nhớ địa chỉ nhỏ nhất là gì?

Tôi biết không có cái nào được sử dụng trong Kiến trúc máy tính ( byte đã được sử dụng cho một cái gì đó nhỏ hơn trong các máy có thể nhập từ), nhưng là định nghĩa được sử dụng bởi C cho byte .


Cảm ơn câu trả lời công phu. Khi tôi đọc lại câu hỏi của mình, tôi nhận thấy tôi hơi mơ hồ, do đó tôi vẫn đang tìm kiếm một câu trả lời chắc chắn mà bạn vẫn có thể thêm vào câu trả lời của mình: thuật ngữ chính xác cho khối bộ nhớ địa chỉ nhỏ nhất là gì? Hay là không có? Hơn nữa, tôi đã thay đổi câu mà bạn trích dẫn. Cám ơn rất nhiều.
Franz Kafka

1
Các vùng dải bit trên một số ISA vi điều khiển có thể được tính là địa chỉ bit. Một phần của không gian địa chỉ dịch địa chỉ từ (ít nhất là trong ARM Cortex-M) thành địa chỉ bit. Rõ ràng điều này chỉ hỗ trợ địa chỉ bit cho một phần nhỏ của tổng không gian địa chỉ (chỉ có 2MiB trong số 4GiB cho Cortex-M3). Ngoài ra, địa chỉ của tập lệnh cũng khác với địa chỉ phần cứng (ví dụ: flash NAND có thể định địa chỉ trang, DRAM thường có thể đánh địa chỉ ở mức độ chi tiết của khối bộ đệm, bộ đệm L1 thường có kích thước tải tối đa có thể định địa chỉ [với ECC ghi nhỏ hơn yêu cầu RMW].)
Paul A. Clayton

@ PaulA.Clayton Tôi không biết thuật ngữ dải bit nhưng tôi biết về 8051 cũng cung cấp nó. Tôi không xem xét một ISA cung cấp nó dưới dạng địa chỉ bit không hơn tôi coi PDP-10 là địa chỉ byte, nó có vẻ quá khác biệt so với datapath thông thường.
Lập trình viên

@AProgrammer Tôi không chắc chắn làm thế nào tôi có thể xác định địa chỉ của ISA. Việc xác định như vậy theo đơn vị địa chỉ bên ngoài nhỏ nhất được hỗ trợ trong một lệnh sẽ cho một câu trả lời khác với xác định theo đơn vị địa chỉ của "địa chỉ / con trỏ thông thường" (loại trừ dải bit và địa chỉ / con trỏ và vây cơ chế bù-tăng cường). Cái sau (mà bạn chọn) có vẻ tự nhiên hơn trong một số bối cảnh, nhưng cái trước có thể có ý nghĩa trong các bối cảnh khác. Nguyên tử (ngắt wrt hoặc kết hợp bộ đệm cache) cũng có thể được xem xét (hướng dẫn có thể không phải là nguyên tử).
Paul A. Clayton

1
@ PaulA.Clayton, tôi đã cố gắng bám sát những gì dường như đã được thực hiện trong lĩnh vực này, nhưng đó là một lĩnh vực yêu thích các trạng thái trung gian và tôi không phải là tài năng hay văn hóa của Andy Glew để có thể đưa ra một mô tả đầy đủ nhưng dễ hiểu.
AProgrammer

1

Burveys B1700 có thể định địa chỉ bit (thực tế là địa chỉ được gọi là khoảng trống giữa các bit mà bạn có thể đọc tiến hoặc lùi một số bit tùy ý). (Vì vậy, đó không chỉ là IBM Stretch, đó là một thất bại.)

B1700 được thiết kế để trở thành cỗ máy linh hoạt nhất. Các ứng dụng không có nghĩa là được viết ở cấp độ bit, nhưng các môi trường khác nhau được xây dựng cho các kiểu ứng dụng khác nhau. Các môi trường này được lập trình bằng microcode, cung cấp các công cụ máy ảo. Mỗi ngôn ngữ (hệ thống SDL cho HĐH, COBOL cho doanh nghiệp, FORTRAN cho COBOL) được viết dưới dạng một môi trường mã hóa riêng biệt. Do đó, kiến ​​trúc có thể được điều chỉnh cho bất kỳ phong cách ứng dụng nào trong tương lai.

Wayne Wilner, một trong những nhà thiết kế, đã đưa ra quan điểm rằng các cỗ máy khác cùng thời buộc các lập trình viên phải nằm trên giường Procrustean gồm các byte và từ có kích thước cố định. Thực sự những gì mỗi môi trường thời gian chạy yêu cầu là cấu trúc dữ liệu phù hợp với ứng dụng. Thật không may, hầu hết các kiến ​​trúc máy hiện tại vẫn là Procrustean (và do đó được lập trình bằng các ngôn ngữ như C phơi bày cấu trúc máy này, thay vì hỗ trợ các cấu trúc hướng vấn đề).

Các bài đọc thêm về cỗ máy hấp dẫn này và triết lý của nó có sẵn tại:

http://citeseerx.ist.psu.edu/viewdoc/doad?doi=10.1.1.590.2624&rep=rep1&type=pdf

và chi tiết hơn:

http://ianjoyner.name/Files/Wilner.pdf

Vậy tại sao B1700 không còn được sản xuất?

Burroughs có ba phạm vi máy tính chính, hệ thống lớn B5000-B7000 (kiến trúc ALGOL), hệ thống trung bình B2000-B4000 (kiến trúc COBOL) và hệ thống nhỏ B1000 (kiến trúc giống như bạn).

Các hệ thống lớn thực sự đắt tiền, cho đến khi B5900 được mã hóa trên bộ xử lý giá rẻ để cung cấp máy xếp ALGOL. Jack Allweis, nhà thiết kế của B5900 đã chỉ ra rằng kiến ​​trúc hệ thống lớn do đó thu nhỏ lại thành các máy tính nhỏ, nhưng B1700 được thiết kế để có giá rẻ và không tăng quy mô.

Do đó, B1700 đến B1900, trong khi rất thành công vào thời điểm đó, đã chết vì lý do thương mại.

Các hệ thống lớn của Burroughs vẫn có sẵn dưới dạng Unisys ClearPath MCP và thậm chí chạy trên PC của bạn dưới dạng mô phỏng.

Như một chú thích khác, IPC trên B1700 là một nỗi đau giữa các máy ảo khác nhau, nhưng rất an toàn (như microkernels ngày nay). Tất cả các hệ thống lớn đều chạy các quy trình trong cùng một môi trường nơi dữ liệu có thể được chia sẻ một cách an toàn, nhưng IPC là trực tiếp. Điều này phần nào giữa kiến ​​trúc vi nhân (Mach) và không nhân (Linux). Tuy nhiên, B5000 là một máy rất an toàn, nhưng cũng hoạt động tốt.

Bảo mật là vấn đề lớn nhất trong ngành hiện nay và thực sự những cỗ máy này cần được hồi sinh và nghiên cứu để chỉ ra con đường phía trước.


1

Câu hỏi chính: Thuật ngữ chính xác cho khối bộ nhớ địa chỉ nhỏ nhất là gì?

Tôi sẽ thêm một câu trả lời khác để giải quyết vấn đề đó theo một cách khác. Trong phần cứng điện tử, chúng tôi gọi nó là bit - chữ số nhị phân. Đó là một thực thể có thể đại diện cho bất kỳ hai giá trị. Chúng ta thường nghĩ theo 0 và 1, nhưng nó có thể là 3 hoặc 4, 365 hoặc 266, -3 hoặc -4, thậm chí 25 hoặc 37.

Bất kỳ hệ thống tín hiệu nào cũng có thể được sử dụng để thể hiện các giá trị này - cờ lên, cờ xuống, mắt mở, mắt nhắm, + 5v, -5v. Điều đó không quan trọng.

Điều quan trọng là về mặt triết học, chúng tôi đang đại diện cho lượng thông tin phân biệt nhỏ nhất. Điều này có thể là bật, tắt hoặc đúng, sai, hoặc lên, xuống hoặc 0, 1 - bất cứ điều gì phân biệt hai trạng thái riêng biệt. Chúng ta có thể ánh xạ các giá trị này lên bất kỳ hệ thống tín hiệu nào ở trên và nhiều hệ thống khác.

Bây giờ câu hỏi là, làm thế nào chúng ta có thể kiểm tra và thiết lập một lượng nhỏ thông tin riêng lẻ như vậy? Như tôi đã nói trong câu trả lời trước, B1700 đã chọn giải quyết trực tiếp lượng thông tin nhỏ nhất đó.

Tuy nhiên, hầu hết các máy quyết định chỉ giải quyết lượng thông tin lớn hơn. Hãy xem xét một nhóm bốn bit với một địa chỉ. Vì vậy, nếu chúng tôi nhận được giá trị 1011 ở vị trí của mình, làm thế nào để chúng tôi kiểm tra bit thứ hai từ bên trái. Chúng tôi sử dụng mặt nạ: 1011 và 0100 thử nghiệm chỉ là bit thứ hai. Vậy làm thế nào để chúng ta thiết lập bit thứ hai thành 1? Một số học CPU nhỏ cho biết giá trị sẽ là 15 hoặc 1111, do đó toàn bộ bốn bit được ghi lại vào bộ nhớ, mặc dù chúng tôi thực sự chỉ đặt một bit.

Bây giờ điều này không hữu ích cho hầu hết các ứng dụng. Hầu hết các ứng dụng đại diện cho dữ liệu hoặc thông tin, lên, xuống, đúng, sai, mở, đóng.

Chúng tôi muốn nói những điều như:

nếu mở thì ... khác ... kết thúc

hoặc nhiều khả năng áp dụng điều đó cho một thực thể lớn hơn:

nếu cánh cửa đang mở thì - rất có thể là 'door.open' ... khác ... kết thúc

"Cửa đang mở" minh họa địa chỉ phân cấp. Địa chỉ hệ thống chính cung cấp cho cửa thực thể và cửa có địa chỉ riêng cho phép truy cập để mở (và có thể các thuộc tính khác).

Hầu hết các tập hợp cũng có nhiều hơn hai giá trị có thể (một tập hợp có một giá trị không bao giờ thay đổi và do đó thậm chí không cần biểu diễn, vì vậy các bit bằng 0). Đối với những điều này, chúng tôi đã liệt kê các bộ, như (vàng, xanh lá cây, xanh dương, tím, đỏ). Chúng xác định các bộ và loại và số bit chính xác được yêu cầu được cho bởi số lượng giá trị (log2 (số giá trị)).

Do đó, địa chỉ tối ưu thực sự phụ thuộc vào kích thước thực thể được sử dụng trong ứng dụng - thậm chí có thể là các thực thể có kích thước thay đổi. Nhưng trong hầu hết các phần cứng, các địa chỉ như vậy phải được dịch sang kích thước cố định mà phần cứng xác định. Điều này tất nhiên có thể chi phí về thời gian. Nó cũng phải là thứ mà trình dịch tự động thực hiện (trình biên dịch hoặc trình thông dịch), không phải là lập trình viên, giống như một hệ thống như vậy sẽ tạo mã để kiểm tra và đặt bit như trên (nếu bit không thể định địa chỉ trực tiếp).

Một điểm quan trọng ở đây là không nghĩ về mặt điện tử - điện tử chỉ là một cách tính toán thực sự tốt và nhanh chóng. Không có gì kỳ diệu về tính toán điện tử cho phép thực hiện các tính toán mà bạn không thể làm khác được. Phép thuật chỉ ở tốc độ. Đó là lý do tại sao các khái niệm trừu tượng ở mức độ thấp như bit, byte, word hoặc cơ chế đánh địa chỉ phần cứng (con trỏ) thực sự không hữu ích.


-2

Hệ thống máy tính của chúng tôi được sử dụng theo bộ nhớ địa chỉ Byte mặc định. Một ô của nó đang trỏ đến thông tin 8 bit. Và kích thước ô không phụ thuộc vào chiều dài bộ xử lý. Trong bộ nhớ địa chỉ từ, một ô đang trỏ đến một thông tin từ, nhưng độ dài từ phụ thuộc vào độ dài của bộ xử lý. Khi chúng ta sử dụng các từ có bộ nhớ địa chỉ hơn nó tạo ra một sự mơ hồ. Vì vậy, máy tính của chúng tôi sử dụng theo bộ nhớ địa chỉ byte mặc định.


Chào mừng đến với trang web nhưng tôi không thấy cách này trả lời câu hỏi.
David Richerby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.