4 MBit! = 512 kB?


8

Tôi đang làm việc với một bộ vi điều khiển Fujitsu và tôi nghĩ rằng tôi hơi khó hiểu về các chi tiết sau đây, đó là lý do tại sao tôi hỏi câu hỏi này. Tôi có thông số kỹ thuật sau:

  • Bộ nhớ flash 4M-bit
  • Sản phẩm tích hợp: MB90F345E (S), MB90F345CE (S)
  • khối lượng: 512 Kbyte / 256 Kwords
  • Cấu hình ngành: 64K × 6 + 32K × 2 + 16K × 2 + 8 K × 4
  • Ngân hàng được phân bổ: F8H sang ngân hàng FFH

Chúng dường như kỳ diệu tạo ra 12K byte bộ nhớ ROM phụ? Tôi đang thiếu điều gì ở đây?


7
512 Kbyte = 512 * 8 Kbit = 4096 Kbits = 4 Mbits
John Dvorak

Googling: "512 kb to megabit" mang lại cho tôi 512 kb = 4.096 Mbits. Và đó là làm tròn đến 4 Mbits?
Evert

4
Thay vào đó, hãy thử googling "512 kib to mibit".
fgb

3
Trong ngữ cảnh kỹ thuật, Kbytes và M-bit thường đề cập đến những gì cần tránh sự mơ hồ được gọi là Kibibytes và Mebibits
njzk2 14/11/14

3
Cũng lưu ý rằng trong một bối cảnh kỹ thuật, có một sự khác biệt rất lớn giữa Bb. Những gì tiêu đề nói thực sự là "4 megabit! = 512 kilobit?", Tất nhiên điều đó không có ý nghĩa. Những gì bạn muốn là 4 Mbit != 512 KB?có ý nghĩa hơn, tùy thuộc vào việc bạn đang sử dụng tiền tố nhị phân hay thập phân.
một CVn

Câu trả lời:


16

Nếu bạn nhìn vào bản đồ bộ nhớ, thực sự có 524.288 byte ROM, là 512K (trong đó 'K' chỉ 1024, không phải 1000) - btw, tôi đã nhận được điều đó bằng cách trừ địa chỉ bắt đầu 0xF8000 từ địa chỉ cuối 0xFFFFFF một.

http://pdf1.alldatasheet.com/datasheet-pdf/view/202599/FUJITSU/MB90F345CE/+Q035-AVDyppuuX+SHGNxD.hOS+/datasheet.pdf

Đó là 4M (trong đó 'M' là 1024 * 1024 = 1.048.576, không phải = 1.000.000).106

Thông thường khá rõ ràng những gì đang diễn ra từ ngữ cảnh, vì vậy điều này hiếm khi gây nhầm lẫn (đặc biệt là khi có nhiều bộ nhớ hơn bạn mong đợi), tuy nhiên dung lượng ổ đĩa tiêu dùng là một ví dụ nổi tiếng về việc sử dụng các đơn vị 'tiếp thị' làm cho sản phẩm trông giống hơn thuận lợi khoảng 5-10%.

Chỉnh sửa: Như nhiều nhà lập trình khác nhau ở đây đã đề cập, có những đơn vị "chính thức" như MiB phải thoát khỏi sự mơ hồ, tuy nhiên vì hầu như không ai sử dụng chúng, tôi nghĩ rằng họ có thể sẽ gây nhầm lẫn nhiều hơn trong hầu hết các trường hợp (và rõ ràng các tác giả của bảng dữ liệu cảm thấy theo cách đó). Câu hỏi là về việc diễn giải chính xác những gì được viết trong một bảng dữ liệu, chứ không phải thuật ngữ nào bạn nên sử dụng khi tự viết một biểu dữ liệu.


2
+1, luôn luôn nhìn vào bản đồ bộ nhớ (hoặc tìm một chỉ số không có "k" hoặc "M") nếu bạn cần biết chính xác những gì đang diễn ra (các tùy chọn bộ nhớ không có kích thước cách nhau 10%, mà là theo hệ số 2). "60k" trong nhiều micros không phải là 60 * 1024, nhưng thường ở đâu đó trong khoảng từ 60000 đến 61440 bởi vì một số trong số 1440 đó được đưa lên bởi các thanh ghi CTNH.
Nick T

@NickT Yup, và đôi khi có thể có một "lỗ hổng" nơi có I / O, RAM hoặc thứ gì đó được ánh xạ bộ nhớ.
Spehro Pefhany

14

Các kỹ sư máy tính ban đầu đã chọn áp dụng và điều chỉnh các đơn vị tiền tố SI cho số lượng dữ liệu của họ. Đây là những tiền tố giống nhau, nhưng tính bằng cách sử dụng nhị phân chứ không phải số liệu. Vì 2 ^ 10 gần với 10 ^ 3, nên mỗi tiền tố SI thường tăng một lượng thêm 10 ^ 3 thay vào đó là mức tăng 2 ^ 10:

Prefix  Metric prefix        Binary prefix       Difference
k kilo  10^3=1,000           2^10=1,024           2.4%
M mega  10^6=1,000,000       2^20=1,048,576       4.9%
G giga  10^9=1,000,000,000   2^30=1,073,741,824   7.4%
T tera  10^12                2^40                10.0%
P peta  10^15                2^50                12.6%

Chúng được thông qua như là một phần của tiêu chuẩn JEDEC.

Điều này có một số lợi ích vì rất nhiều công việc trong lĩnh vực này xảy ra với quyền hạn là 2. Tuy nhiên, như bạn có thể thấy chúng phân kỳ khỏi số liệu, và vì chúng ta hiện đang xử lý lượng lưu trữ lớn hơn trong đó sự khác biệt giữa hai phân kỳ đáng kể vấn đề đã được xử lý bởi IEC và NIST. Chúng phân biệt hai hệ thống bằng cách thay đổi tiền tố nhị phân:

Prefix  Binary prefix
ki kibi  2^10
Mi mebi  2^20
Gi gibi  2^30
Ti tebi  2^40
Pi pebi  2^50

Chúng được chuẩn hóa lần đầu tiên vào năm 1998 và được áp dụng vào Hệ thống số lượng quốc tế vào năm 2008, nhưng việc áp dụng còn chậm và vẫn có những công ty tạo ra các tài liệu mới sử dụng tiêu chuẩn cũ. Khi các công ty đã chuyển đổi, họ đã thấy người dùng bối rối và một số đã chuyển về kiểu cũ.

Do đó, sử dụng tiêu chuẩn cũ hơn, 4Mb là 4 * 2 ^ 20 bit, tương đương với 512 * 2 ^ 10 byte.

Được biểu diễn trong tiêu chuẩn mới hơn, thay vào đó sẽ là 4Mib = 512 kiB, giả sử 'b' là bit và 'B' là byte.


Theo đó , nó đã được chuẩn hóa vào năm 1998.
glglgl

1
Nó có thể là một tiêu chuẩn, nhưng mọi người đều thích nó. Như đã lưu ý, có rất nhiều tài liệu cũ hơn, theo lý thuyết, các công ty nên thay đổi (bạn có thể so sánh điều này với chi phí của Hoa Kỳ chuyển đổi sang hệ thống Số liệu). Câu hỏi này và câu trả lời, trở thành một lời nhắc nhở tốt về thuật ngữ mà chúng ta NÊN sử dụng.
Alan Campbell

@glglgl IEC và những người khác đã định nghĩa chúng vào năm 1998, nhưng mãi đến năm 2008, tiền tố IEC mới được đưa vào Hệ thống Số lượng Quốc tế. Tôi đã cập nhật câu trả lời một chút.
Adam Davis

10

Trong bối cảnh dung lượng bộ nhớ, MB thường có nghĩa là 1024KB (thay vì 1000K). Bạn có thể sử dụng MiB để tránh sự mơ hồ.


Điều đó nói rằng, tôi đã nghe một số nhà sản xuất ổ cứng sử dụng 1000. Đôi khi nó thực sự lầy lội nhưng thực sự nên là 1024.
DKNguyen

1

Sức mạnh cũ của 2 so với quyền hạn của 10 cuộc tranh luận. Các công ty đã mất hàng triệu vụ kiện về nó. Tiền tố nhị phân so với số thập phân khiến bạn mất 24 bit trên mỗi kilo thực sự cộng vào bit giga và byte. Đó là lý do tại sao ổ cứng 120 gb của tôi (xếp hạng nhà sản xuất) chỉ có 115,8 gb hoặc hơn (màn hình máy tính)

http://en.m.wikipedia.org/wiki/Binary_prefix có một khám phá đầy đủ.


2
Đừng quên đĩa mềm "1.44 MB" cũ. Đó là 1,44 lần 1000 lần 1024 byte (1,474,560 byte). Nhân đôi!
một CVn

1

Khi nói về RAM, ROM hoặc bất cứ thứ gì được kết nối theo bất kỳ cách nào với các bus của CPU:

  • Một kilobit là 1024 bit.

  • Một megabit là 1024 kilobit.

  • 4 megabits là 4096 kilobit.

  • 4096 kilobit là 4194304 bit.

  • Một byte là 8 bit.

  • 4194304 bit là 524288 byte

  • Một kilobyte là 1024 byte

  • 524288 byte là 512 kilobyte.

Tất cả là vì .2n


2
Googling "4 megabits to kbit" mang lại cho tôi 4000 kilobits? Tôi nghĩ rằng trang wiki này giải thích sự mơ hồ: en.wikipedia.org/wiki/Binary_prefix
Evert

5
Sự khác biệt bắt nguồn từ các nhà sản xuất ổ cứng sử dụng 1000 cho kilo / mega, v.v. (để làm cho các ổ đĩa trông lớn hơn), trong khi mọi thứ khác lưu trữ kỹ thuật số khôn ngoan sử dụng 1024. Hoàn toàn để chống lại sự nhầm lẫn này mà Mibibyte vv (MIllion BInary BYTEs) đã được phát minh.
Majenko

2
-1: nói đúng ra, tôi sẽ không nói "một kilobyte là 1024 byte" - nó cũng có thể là 1000 byte (ISO / IEC80000 là một trong những bối cảnh) hoặc 1024 byte (sử dụng chung, SI nhị phân ); như vậy, tôi không thể đồng ý với câu trả lời này trừ khi bạn đưa thông tin từ Nhận xét của bạn (kibibyte, v.v.) vào chính câu trả lời. Ngoài ra, 1000 cho kg không phải là từ HD OEM (mặc dù nó là nhất phổ biến cho họ) - đó là từ bảng tiền tố SI, mà xảy ra trước CS ngày nay và máy tính ít nhất nửa thế kỷ (khoảng 1950-1960)

3
@vaxquis: Nửa thế kỷ là một cách nói chưa đúng. 'Kilo' bắt nguồn từ hàng ngàn từ tiếng Hy Lạp cổ đại, đi trước SI bằng milimet.
Marcks Thomas

3
@vaxquis SI không định nghĩa một byte cũng như một bit, do đó việc sử dụng kilo với chúng không được xác định bởi nó. Thay vào đó, nó được định nghĩa theo Tiêu chuẩn 100B.01 của JEDEC.
Ruslan

1

Thật không may, ngành công nghiệp máy tính sử dụng tiền tố kilo và mega không nhất quán.

Bộ nhớ bán dẫn có xu hướng có sức mạnh từ hai kích cỡ, bởi vì nó làm cho việc ánh xạ địa chỉ đơn giản hơn. 1024 gần bằng 1000, vì vậy những người làm việc với bộ nhớ bán dẫn bắt đầu sử dụng kilo có nghĩa là 1024. Khi kích thước bộ nhớ lớn hơn, họ cũng bắt đầu sử dụng mega có nghĩa là 1024 2 = 1048576 giga có nghĩa là 1024 3 = 1073741824 và cứ thế.

Theo các định nghĩa về kilobyte và megabyte, tuyên bố của nhà sản xuất của bạn khớp với. 4 megabits nhị phân bằng 4096 kilobits nhị phân bằng 512 kilobyte nhị phân.


Tuy nhiên, các bộ phận khác của ngành công nghiệp máy tính, đặc biệt là các nhà sản xuất ổ đĩa cứng và nhà thiết kế giao diện truyền thông đã sử dụng tiền tố SI theo nghĩa gốc của chúng. Các nhà sản xuất phương tiện flash giống như đĩa cũng có xu hướng tuân theo quy ước này.

Một số bộ phận của ngành thậm chí còn trộn lẫn cả hai, ví dụ "đĩa mềm 1,44 MB" thực sự là 1,44 * 1000 * 1024 = 1474560 byte

IEC đã cố gắng khắc phục tình trạng lộn xộn vào năm 1998 bằng cách giới thiệu các tên và ký hiệu cụ thể cho các tiền tố nhị phân, các tên được hình thành bằng cách lấy hai chữ cái đầu tiên của tên đơn vị SI và nối thêm "bi", vì vậy kilo trở thành kibi, mega trở thành mebi và như vậy. Đối với các ký hiệu, "i" được thêm vào để k trở thành ki, M trở thành Mi và vân vân.

Tuy nhiên, chỉ vì một tổ chức tiêu chuẩn giới thiệu thuật ngữ không có nghĩa là mọi người thực sự sử dụng nó. Ít nhất theo kinh nghiệm của tôi, việc nhìn thấy kilo, mega vv được sử dụng theo nghĩa nhị phân vẫn còn phổ biến hơn nhiều so với việc xem kibi, mebi, v.v.


1

Như mọi người khác đã giải thích, có lẽ bạn đang phải chịu một vụ hack nửa tuổi của IEC và cộng sự, điều này tiếp tục tạo ra sự nhầm lẫn lớn. Thay vì giới thiệu một đơn vị mới có cùng chiều (hoặc tiền tố), họ đã xác định lại ý nghĩa của một đơn vị được sử dụng rộng rãi (tiền tố) khác, đồng thời không xác định rõ định nghĩa nào áp dụng trong bối cảnh nào.

Trong trường hợp vấn đề cụ thể của bạn, chỉ cần kiểm tra các bản đồ bộ nhớ như đã đề cập.


Tuy nhiên, tôi mong các bạn nhận ra một vấn đề chung chung hơn nhiều.
Vấn đề là việc nói 123 kBkhông đáng tin cậy dẫn đến sự hiểu biết rõ ràng về phía người nhận.

Đây là một di sản ngôn ngữ và thiếu hụt API chính của từ vựng CS.

Chúng ta có thể làm gì để giải quyết điều đó?

Vâng, đoán xem: sử dụng tiền tố nhị phân .
Ý nghĩa 123 kiB100% đáng tin cậy rõ ràng.
Ý nghĩa của 123 kiB (126.0 kB)nó thậm chí còn tốt hơn.
Bạn không cần phải là nhà sử học CS chỉ để truyền đạt một số lượng lớn cho ai đó.
Không ai quan tâm đến các công ty, ổ đĩa cứng, cơ quan độc lập, tuyên bố khấu hao, vân vân và vân vân.
Nó không đáng. Chỉ cần sử dụng các mebibytes nhị phân. Họ không rõ ràng.

những người đã nói thành công 32 kibihertzvào năm 2002. Họ đã được nghe. Thật tiện lợi phải không?

Cuối cùng, nếu bạn từ chối chấp nhận tiền tố nhị phân - bạn sẽ làm cho vấn đề trở nên tồi tệ hơn.
Chiến lược duy nhất mà tất cả chúng ta có thể hợp tác để giải toả và khắc phục lỗi ngôn ngữ chết tiệt đó là làm mất đi sự mơ hồ và chuyển sang kibi ... giây (tại sao không?) Và các đơn vị bi khác.


1
Ồ Tôi phải nhớ sử dụng kibihertz nhiều hơn!
đường ống
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.