Lịch sử tại sao byte là tám bit?


86

Điều gì mà các lực lượng lịch sử tại nơi làm việc, sự đánh đổi để thực hiện, khi quyết định sử dụng các nhóm tám bit làm đơn vị cơ bản?

Có những máy móc, ngày xưa, sử dụng các kích cỡ từ khác, nhưng ngày nay để không phải là tám bit, bạn phải tìm đến các mảnh bảo tàng, chip chuyên dụng cho các ứng dụng nhúng và DSP. Làm thế nào mà byte phát triển ra khỏi sự hỗn loạn và sáng tạo của những ngày đầu thiết kế máy tính?

Tôi có thể tưởng tượng rằng ít bit hơn sẽ không hiệu quả để xử lý đủ dữ liệu để làm cho tính toán trở nên khả thi, trong khi quá nhiều sẽ dẫn đến phần cứng đắt tiền. Có ảnh hưởng khác trong chơi? Tại sao các lực này cân bằng đến tám bit?

(B.


7
Đây có thể là một trong những câu hỏi mà chúng ta không thể trả lời nó tốt hơn Wikipedia cũ .
Scott Whitlock

10
Vậy tại sao bạn thích 12 bit hơn 8?
Thất vọngWithFormsDesigner

8
Là câu cuối cùng trong trò hề? Một byte 12 bit sẽ bất tiện vì nó không phải là sức mạnh của 2.
Rob

19
Bộ nhớ và các thanh ghi không quá rẻ khi đó, vì vậy 8 bit là một sự thỏa hiệp tốt, so với 6 hoặc 9 (phân số của một từ 36 bit). Ngoài ra, tính toán địa chỉ đơn giản hơn rất nhiều với lũy thừa 2 và được tính khi bạn tạo logic từ các bóng bán dẫn thô trong các lon nhỏ.
Mike Dunlavey

9
Sử dụng kích thước từ có sức mạnh bằng 2 không quá quan trọng trong "những ngày đầu". DEC-10 có từ 36 bit và sê-ri CDC 6000 có từ 60 bit và thanh ghi chỉ mục có 18 bit.
Jay Elston

Câu trả lời:


75

Rất nhiều công việc thực sự ban đầu đã được thực hiện với mã baudot 5 bit, nhưng chúng nhanh chóng trở nên khá hạn chế (chỉ có 32 ký tự có thể, vì vậy về cơ bản chỉ có chữ in hoa và một vài dấu chấm câu, nhưng không đủ "khoảng trắng" cho chữ số) .

Từ đó, khá nhiều máy đã chuyển sang ký tự 6 bit. Điều này vẫn còn khá bất cập - nếu bạn muốn chữ và chữ in hoa và chữ thường (tiếng Anh), chỉ còn lại hai ký tự cho dấu câu, vì vậy hầu hết vẫn chỉ có một trường hợp chữ cái trong một bộ ký tự.

ASCII đã định nghĩa một bộ ký tự 7 bit. Điều đó "đủ tốt" cho nhiều mục đích sử dụng trong một thời gian dài và cũng đã hình thành nên cơ sở của hầu hết các bộ ký tự mới hơn (ISO 646, ISO 8859, Unicode, ISO 10646, v.v.)

Máy tính nhị phân thúc đẩy các nhà thiết kế tạo ra sức mạnh kích thước của hai. Do bộ ký tự "tiêu chuẩn" yêu cầu 7 bit dù sao, việc thêm một bit nữa để có được sức mạnh là 2 (và sau đó, việc lưu trữ đã trở nên rẻ hơn đến mức "lãng phí" một chút cho hầu hết các ký tự cũng được chấp nhận nhiều hơn).

Kể từ đó, các bộ ký tự đã chuyển sang 16 và 32 bit, nhưng hầu hết các máy tính chính chủ yếu dựa trên PC gốc của IBM. Một lần nữa, đủ thị trường đủ thỏa mãn với các ký tự 8 bit mà ngay cả khi PC không đạt đến mức thống trị hiện tại, tôi không chắc mọi người sẽ làm mọi thứ với các ký tự lớn hơn.

Tôi cũng nên thêm rằng thị trường đã thay đổi khá nhiều. Trong thị trường hiện tại, kích thước ký tự được xác định ít hơn bởi phần cứng so với phần mềm. Windows, Java, v.v., đã chuyển sang các ký tự 16 bit từ lâu.

Giờ đây, trở ngại trong việc hỗ trợ các ký tự 16 hoặc 32 bit chỉ là tối thiểu từ những khó khăn vốn có của chính các ký tự 16 hoặc 32 bit, và phần lớn là từ khó khăn trong việc hỗ trợ i18n nói chung. Trong ASCII (ví dụ) phát hiện xem một chữ cái là chữ hoa hay chữ thường, hoặc chuyển đổi giữa hai chữ cái, là vô cùng tầm thường. Trong Unicode / ISO 10646 đầy đủ, về cơ bản, nó phức tạp không thể diễn tả được (đến mức mà các tiêu chuẩn thậm chí không thử - chúng đưa ra các bảng chứ không phải mô tả). Sau đó, bạn thêm vào trong thực tế rằng đối với một số bộ ngôn ngữ / ký tự, ngay cả ý tưởng cơ bản về chữ hoa / chữ thường cũng không được áp dụng. Sau đó, bạn thêm vào trong thực tế là thậm chí hiển thị các ký tự trong một số trong đó vẫn phức tạp hơn nhiều.

Điều đó đủ phức tạp mà đại đa số phần mềm thậm chí không thử. Tình hình đang dần cải thiện, nhưng từ từ là từ hoạt động.


9
Tôi nghĩ rằng tôi đã đọc ở đâu đó 8 đến từ ASCII 7 bit cộng với một bit xác nhận là cần thiết bởi vì các giao thức truyền gần như không mất mát như các nhà thiết kế muốn :-).
Martin York

3
@LokiAstari, Có, nó được gọi là bit chẵn lẻ và có thể được sử dụng cho các hình thức phát hiện hoặc khôi phục lỗi thô. Wikipedia: Chẵn lẻ bit
một CVn

2
Không chắc chắn PC của IBM phải làm gì với điều này. "8 bit mỗi byte" đã là tiêu chuẩn trong kỷ nguyên CP / M (<1980), bắt đầu trên CPU 8080 (tiền thân của 8086/8 trong kỷ nguyên PC của IBM)
MSalters 17/11/11

1
@MSalters: Chủ yếu là nó (được cho là) ​​"cản trở" sự phát triển của phần cứng. Không, 8 bit / byte không phải là mới với PC, nhưng cho đến lúc đó, hầu hết các kiến ​​trúc đã được thay thế cứ sau vài năm. PC đã ngăn chặn điều đó và lấy một kiến ​​trúc thậm chí không tiến bộ khi nó còn mới và bảo tồn nó trong nhiều thập kỷ .
Jerry Coffin

2
Các bộ ký tự hiện tại không có 16 hoặc 32 bit, cũng như Java và Windows không sử dụng như vậy. Bộ ký tự hiện tại là Unicode, cần 21 bit để ánh xạ trực tiếp. Phần mềm hiện tại sử dụng mã hóa dựa trên các đơn vị mã bit 8 (UTF-8), 16 (UTF-16) hoặc 32 (UTF-32), kết hợp nhiều đơn vị mã để tạo thành một điểm mã duy nhất khi cần thiết, nhưng các kích thước bit đó là hậu quả của phần cứng, không phải của bộ ký tự.
Sebastian Redl

10

Bảy bit cho thông tin ASCII và một bit cho tính tương đương phát hiện lỗi.


27
7 bit cho ASCII và thêm một bit đã được sử dụng cho tất cả các loại
Martin Beckett

1
Chẵn lẻ là rất quan trọng khi xử lý bộ nhớ sớm. Ngay cả sau khi di chuyển đến byte dữ liệu 8 bit, vẫn có chip bộ nhớ với 9 bit để cho phép kiểm tra chẵn lẻ.
Jim C

1
Đây là một khẳng định thú vị. Có bất kỳ dữ liệu lịch sử để hỗ trợ ý tưởng?
david

6

Hãy xem trang Wikipedia về kiến ​​trúc 8 bit . Mặc dù các bộ ký tự có thể là 5, 6, rồi 7 bit, kiến ​​trúc bus bộ nhớ CPU / bộ nhớ cơ bản luôn sử dụng các quyền hạn của 2. Bộ vi xử lý đầu tiên (khoảng những năm 1970) có bus 4 bit, có nghĩa là một lệnh có thể di chuyển 4 - 4 bit dữ liệu giữa bộ nhớ ngoài và CPU.

Sau đó, với việc phát hành bộ xử lý 8080, kiến ​​trúc 8 bit trở nên phổ biến và đó là những gì đã tạo ra sự khởi đầu của tập lệnh hướng dẫn lắp ráp x86 được sử dụng ngay cả cho đến ngày nay. Nếu tôi phải đoán, byte đến từ các bộ xử lý ban đầu này, nơi công chúng chính bắt đầu chấp nhận và chơi với PC và 8 bit được coi là kích thước chuẩn của một đơn vị dữ liệu.

Kể từ đó, kích thước xe buýt đã tăng gấp đôi nhưng nó luôn duy trì công suất bằng 2 (tức là 16-, 32- và bây giờ là 64 bit) Trên thực tế, tôi chắc chắn rằng phần bên trong của xe buýt ngày nay phức tạp hơn nhiều so với 64 dây song song, nhưng kiến trúc CPU chính hiện tại là 64 bit.

Tôi cho rằng bằng cách luôn tăng gấp đôi (thay vì tăng 50%), việc tạo ra phần cứng mới cùng tồn tại với các ứng dụng hiện có và các thành phần kế thừa khác sẽ dễ dàng hơn. Vì vậy, ví dụ khi họ chuyển từ 8 bit sang 16, mỗi lệnh bây giờ có thể di chuyển 2 byte thay vì 1, vì vậy bạn tự lưu một chu kỳ đồng hồ nhưng kết quả cuối cùng là như nhau. Tuy nhiên, nếu bạn chuyển từ kiến ​​trúc 8 đến 12 bit, bạn sẽ kết thúc việc chia dữ liệu gốc thành một nửa và việc quản lý có thể trở nên khó chịu. Đây chỉ là phỏng đoán, tôi không thực sự là một chuyên gia phần cứng.


5
"CPU đầu tiên (khoảng những năm 1970) ..." . Bạn cần phải đọc một số thông tin về lịch sử điện toán !! CPU đầu tiên cho máy tính kiến ​​trúc von Neumann được chế tạo trong Thế chiến II ... hoặc trước đó (tùy thuộc vào phiên bản lịch sử mà bạn tin.)
Stephen C

và có những thiết bị điện toán vào thế kỷ 19 và tôi chắc chắn rằng người Ai Cập đã có một số loại máy tính. Thông tin đó đến từ trang Wikipedia mà tôi liên kết. Như tôi đã nói, tôi không phải là chuyên gia phần cứng và tôi chắc chắn không phải là nhà sử học, nhưng nếu bạn cảm thấy rằng tôi ở quá xa, bạn có thể muốn cập nhật trang wikipedia đó.
DXM

Tôi đoán nó sẽ hữu ích nếu tôi không làm hỏng liên kết khi tôi đang tham gia. Tôi cũng xin lỗi vì đã nói "CPU đầu tiên". Vì tôi đã trích dẫn trang wiki, nên tôi đã nói "bộ vi xử lý đầu tiên". Ý tôi là thế Xin lỗi vì điều đó.
DXM

Một giải pháp cho máy tính "tiền điện tử" là nói máy tính hiện đại hoặc tôi cho rằng máy tính điện tử. Thậm chí ngày nay bạn có thể xây dựng một máy tính cơ khí. Mãi cho đến khi chúng tôi bắt đầu sử dụng các trường điện tử, lợi thế của chúng tôi là chúng tôi đã xây dựng một bộ vi xử lý.
Ramhound

Kích thước từ 8 bit và 16 bit được sử dụng bởi chuỗi PDP cũng có thể đóng vai trò trong sự phổ biến của byte 8 bit.
Jay Elston

4

Một byte đã được đa dạng (ít nhất) 1, 4, 6, 7, 8, 9, 12, 18, 20 và có thể 36 bit, tùy thuộc vào máy tính bạn đang xem. Tôi đang dùng "byte" ở đây có nghĩa là "đơn vị bộ nhớ có thể định địa chỉ nhỏ nhất", thay vì sử dụng bất kỳ loại giải thích văn bản trung tâm nào. (Ví dụ: CPU Saturn, CPU 64 bit được sử dụng trong dòng máy tính HP48SX / GX phổ biến giải quyết bộ nhớ trong các nibble - 4 bit.)

Các byte 20 bit cực kỳ phổ biến trong "máy IAS", vào những năm 50. 6, 12, 18 (và có thể 36) khá phổ biến trong một loạt các kiến ​​trúc trong thập niên 60, 70 và một số độ 80.

Cuối cùng, có một sự tương ứng tốt đẹp giữa "lũy thừa 2" và "bit trong một đơn vị địa chỉ" dường như đã chiến thắng.


Và không bao giờ 10 bit? Tất cả những gì tôi có thể tìm thấy với Google là một số bộ xử lý video gần đây là 10 bit.
rslnx

@khrf Có thể, tôi chỉ không thể nhớ bất kỳ kiến ​​trúc nào có nó (tôi chủ yếu coi máy tính đa năng).
Vatine

Vâng, tôi xem xét các máy tính đa năng quá. Thật kỳ lạ bởi vì tôi tưởng tượng nó sẽ tuyệt vời như thế nào với 10 bit byte để biết rằng bạn có thể giải quyết 1 kilobyte với 1 byte, 1 megabyte với 2 byte, v.v ... Tất nhiên, đó chỉ là một caprice thoải mái :)
rslnx

2

Đầu tiên một chút làm rõ: Octets (đơn vị 8 bit) không thực sự là một đơn vị cơ bản trong kiến ​​trúc máy tính hiện đại. Ít nhất không phải là bất kỳ cơ bản nào hơn các quyền hạn khác của hai - 2, 4, 16, 32, 64, 128, v.v. Octets là đơn vị cơ bản cho bộ xử lý 8 bit (do đó là tên!), Nhưng các kiến ​​trúc hiện đại thường hoạt động với bit lớn hơn -sets nội bộ. Ví dụ: x86_64 có các thanh ghi nguyên 64 bit và các thanh ghi dấu phẩy động 80 bit. RAM được đọc và ghi trong các khối 64 bit và bộ xử lý chỉ sử dụng một chút phép thuật để làm cho nó trông giống như bạn có thể xử lý các byte 8 bit riêng lẻ.

Đối với các kiến ​​trúc cũ hơn, "byte" chỉ ra kích thước của bus dữ liệu và như trạng thái câu hỏi ban đầu, có rất nhiều kích thước bus khác nhau tồn tại (4, 5, 6, 8, 12, v.v.). Nhưng từ năm 1993, một byte đã được định nghĩa là 8 bit, để có một đơn vị SI được tiêu chuẩn hóa cho các kích thước dữ liệu. Do đó, ý nghĩa của "byte" đã thay đổi từ đơn vị phụ thuộc kiến ​​trúc sang đơn vị tiêu chuẩn hóa độc lập với kiến ​​trúc.

Vì vậy, ngày nay, byte là đơn vị tiêu chuẩn để đánh địa chỉ và định lượng dữ liệu, nhưng không thực sự cơ bản.

Đơn vị Octets trở thành tiêu chuẩn thực tế cho việc lưu trữ chủ yếu do lo ngại về việc lưu trữ văn bản. Để lưu trữ văn bản, lý tưởng bạn muốn một byte để lưu trữ một ký tự. Hai yếu tố rất quan trọng:

  • Có các đơn vị là sức mạnh của hai (2, 4, 8, 16, 32, v.v.) sẽ thuận tiện hơn khi thiết kế hệ thống kỹ thuật số.
  • 8 bit là đủ để lưu trữ một ký tự trong bộ ký tự ASCII (có chỗ trống để mở rộng bộ ký tự để hỗ trợ nói Cyrillic).

Tất nhiên 8 bit là không đủ để hỗ trợ tất cả các tập lệnh - một cái gì đó như tiếng Nhật cần ít nhất 16 bit (và với giá trị của nó, Unicode là 21 bit), nhưng tại thời điểm đó, bit rất đắt và hầu hết văn bản kỹ thuật số đều ở trong dù sao thì phạm vi ASCII.

Ngày nay, văn bản thường được lưu trữ trong các bảng mã có độ rộng thay đổi như UTF-8 và với những thứ như ký tự kết hợp Unicode, "một byte bằng một ký tự" từ lâu đã trở thành quá khứ. Ngày nay byte thực sự chỉ là tiêu chuẩn cho các lý do lịch sử.


1

Theo thông tin của tôi, byte từ chính nó được lấy từ cụm từ tám, đó là tám (8) bit từ. sự tiện lợi chúng ta tìm thấy trong các từ 8 bit là chuyển đổi thành các giá trị thập lục phân vì giá trị 00000000 = 00 & 11111111 = FF (255 tháng 12 đối với không dấu và -127 đối với đã ký), có thể dễ dàng thực hiện tất cả các hoạt động số học trên cấu trúc như vậy bao gồm cả bit-khôn ngoan hoạt động.

Tôi thấy các byte (8 bit từ) là một sự phát triển tự nhiên của kích thước từ từ 3 bit nhỏ đến mức khủng khiếp đến các từ 60 bit lớn một cách lố bịch


Tôi muốn xem một tài liệu tham khảo cho điều đó. Tôi nghiêm túc nghi ngờ nó. Đặc biệt là từ "byte", như được sử dụng trong Tiêu chuẩn C và được kết hợp trong tiêu chuẩn C ++, không có nghĩa là "8 bit". Một số lượng 8 bit là một octet.
gnasher729

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.