6
\$\begingroup\$

I keep seeing EEPROM datasheets using terms such as 4k, 16k, etc. and they're referring to 4 kilobit and 16 kilobit, bits, megabits, and kilobits are often used. Very seldom do they use byte prefixes. Some will also clarify with 512 * 8 bits, or 2048 * 8 bits.

Why isn't using bytes (or kilo-/mega-) preferred, as there's always 8-bits in a byte, and I've never heard of EEPROM that can't be divided into bytes.

I realize that kbit/Mbit is used in data communication, but I don't understand the relation because EEPROM is technically storage, not bandwidth. This applies to EEPROM, but also other similar types of memory like Flash or SRAM, etc.

\$\endgroup\$
  • 2
    \$\begingroup\$ I want to point out that kilo and mega are the wrong prefixes for 2^10 and 2^20. The correct prefix for 2^10 is kibi and for 2^20 it's mebi. The symbols for 2^10 bits and 2^20 bytes are Kib and MiB. I know it sounds pedantic but lawsuits have been lost over the difference and engineering is about being precise. Details in IEEEStd-1541. \$\endgroup\$ – Joe Hass Jan 4 '14 at 12:45
5
\$\begingroup\$
  1. The marketing department got there first.

  2. Because they can.

  3. To some extent, knowing how many bits you can store has some value as EEPROM may be used for bit or nibble or ternary or Klingon-base-xxx storage. BUT most engineers can multiply by 8 and divide by whatever quite well so expressing it in bits has no vast value.

1 & 2 can translate to "it sounds better and we may sell more". It doesn't and they won't, but hope dies eternal in the marketing department.

Some systems use other than 8 bit word widths so expressing in bits may make sense, but this is not usually a good enough reason. If you are using an Intersil 6601 CPU to build a DECMATE PDP-8 'compatible you may wish to use 12 bit words (but you'd be about 30 years late :-) ). Otherwise using "bytes" where word size is 8 bits, or "words" where word size <> 8 bits, are just as useful or more so than bits.

\$\endgroup\$
  • 1
    \$\begingroup\$ The really funny thing is that this went the other way when showing how much program memory a microcontroller has. I want to see it in instruction words, because that's how I spend it most of the time. But the first spec is usually in bytes, even when that makes no sense for the architecture. For example, a PIC 16F877 has 8k words of 14 bits each, but I've seen it quoted a 14 k or so bytes. \$\endgroup\$ – Olin Lathrop Jan 4 '14 at 14:30
2
\$\begingroup\$

This is pretty standard practice among many different types of memory. I think there are a couple of reasons for it. First, the marketing guys want to put the biggest number possible on their devices. Second is that it's the most fundamental measurement of memory size. Devices can come in all sorts of different widths - 1, 2, 4, 8, 16, 32, 64, etc bits. As a result, chips with the same number of bits can have a very different number of words. The difference between a 128M x 8 memory, a 16M x 16 memory, and a 256M x 4 memory is just the configuration of the banks in the memory chip, how many address pins are connected, and how many data pins are routed out. The only difference for some devices may be just a fuse setting. The basic memory array for all three of these will consist of 1 Gb of memory. It makes sense to measure a 128M x 8 as 128 MB, but what about 16M x 16 or 256M x 4? When building a memory module, multiple chips can be combined into a larger memory - say 16 256M x 4 can be combined to form a 256M x 64 memory. This could be measured as 256 M qwords, 2048 M bytes, 16384 M bits, etc.

\$\endgroup\$
2
\$\begingroup\$

Historically, RAM chips have been commonly available in x1, x4, x8, and later x16 configurations, and it was common that computers would end up needing multiple banks of chips to achieve maximum RAM capacity. Two 1Kx4 chips would hold the same amount of storage as would eight 4Kx1 chips, but an 8-bit machine that used 1Kx4 chips could be expanded in 1KB (2 chips--8Kbit) increments (one chip at a time) while one that used 4Kx1 chips would have to be expanded in 4KB (8 chips--32Kbit) increments.

Note also that historically not every system used 8-bit wide memory for everything. The VIC-20, which is advertised as having 5K of RAM, actually has 5Kx8 plus 1Kx4; the Commodore 64 has 64Kx8 plus 1Kx4. In both cases, the 1Kx4 (4kbit) chips are mapped into 1024 bytes of address space, but only the lower four data wires are connected (the extra RAM is used to allow each character cell on screen to be configured for one of 16 colors, and only four bits per byte are needed for that purpose). On the VIC-20, the video display only needs 506 nybbles, with the remaining 518x4 bits generally going unused. I've heard of at least one application that uses them, though, since 259 bytes is an extra 5% of memory.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.