28
$\begingroup$

As far as I've understood it, referring to this system as an 8-bit system points out that one can access 8 bits of data in one instruction.

While I understand that we're not saving vast amounts of time by calling it "one byte" instead of "eight bits", is there a particular reason why the latter is/was preferred?

$\endgroup$
  • 28
    $\begingroup$ No particular reason. If it were the other way, you would ask why it's not called an 8-bit system. $\endgroup$ – Yuval Filmus May 6 at 17:41
  • 3
    $\begingroup$ @YuvalFilmus - I don't think I would. Calling stuff by their bit-value is fine in this case since it's equally short, but in the long run, it just wouldn't scale well. For instance, I don't have a need to know why we don't call them "4000 MHz processors" rather than "4GHz processors". At some point, it makes sense to use whichever unit of measurement is largest. $\endgroup$ – Alec May 7 at 13:28
  • 2
    $\begingroup$ Is 4GHz 4000Hz? Or is it 4096Hz? Just ask the hard-disk manufacturers why it's great to change nomenclature. If all HDD sizes were expressed in 8-bit byte count, then you would be able to see very easily that they aren't as large as most people think they are. Expressing everything in the same units allows for easy apples-to-apples comparisons. $\endgroup$ – Christopher Schultz May 7 at 17:08
  • 4
    $\begingroup$ @ChristopherSchultz I'm happy to stick with 4000B = 4KB, 4096B = 4KiB, but the suggestion of 4096Hz gives me a visceral hatred! Maybe we should call that 4Hiz? Either way I hate it ;) $\endgroup$ – Warbo May 7 at 18:57
  • 5
    $\begingroup$ Larger than this question: decades later we have 32-bit systems and 64-bit systems, rather than 4-byte systems and 8-byte systems. $\endgroup$ – Cort Ammon May 7 at 23:22
80
$\begingroup$

"Back in the day" computers were defined more by their word size, for example the PDP-8 had 12-bit words composed of two 6-bit "bytes". A "nibble" was half a byte, or 3 bits in this case (and here the op codes were 3 bits).

It is only in recent decades that 8-bit bytes became so prevalent as to make them the default.

Calling the NES 8-bit is less ambiguous than calling it 1 byte, keeping in mind we're talking about a system that came out in 1983.

| cite | improve this answer | |
$\endgroup$
  • 4
    $\begingroup$ That's interesting! I had no idea a byte used to be 6 bits. After some googling, it seems that around 1993 was the time when a byte became standardized to 8 bits, so for a 1983 system, "one byte" would actually misrepresent the NES. It seems that it was standardize in ISO/IEC 2382-1:1993 - iso.org/standard/7229.html $\endgroup$ – Alec May 7 at 13:38
  • 3
    $\begingroup$ Some systems certainly used 8-bit bytes long before 1993. (Most or all home micros did throughout the 1980s, for example. I don't think I've ever used a machine with another byte width.) I think 8-bit bytes had been common for a long time; they just weren't universal until much later. $\endgroup$ – gidds May 7 at 14:44
  • 3
    $\begingroup$ @gidds "Byte" term itself was introduced in IBM 7030 Stretch project around 1960. It was defined as unit of I/O operations as opposite to word which was a unit of computations since 40s. Later, "byte" became a term for a space holding single char, it was usually (always?) whole number of bytes in a word. Some computers/OSes used 6 to 9 bits to represent a char, so byte size was dependent on CPU and even OS! But Stretch approach of 8-bit byte and 2^n-byte word became prevalent and all microprocessors employed it, so it was question of time when older systems will finally die out. $\endgroup$ – Bulat May 7 at 18:38
  • 3
    $\begingroup$ @Alec While there are standards out there, you still have CPUs with 16, 24 or 32 bit Bytes, usually Audio DSPs. The unambiguous way is to call 8 bits "an octet", which is also the term that's usually used to describe data formats that are not only for RAM/CPU but perhaps tape, eg. the ustar archive format. Note also, that C only mandates at least 8 bits (although early C versions ran on 7 bit Honeywell machines), and POSIX precisely 8 bits. C has a CHAR_BIT macro also, to specify how many bits are in one char (= byte) on a given platform. $\endgroup$ – ljrk May 7 at 23:03
  • 1
    $\begingroup$ @Alec aside from the 12, 16, 24, and 32-bit word sizes mentioned, here, there have also been (in significant production) 18, 36, 48, and 60-bit word sizes, as well as partial (usually addressing only) 26 and 31-bit designs. Wikipedia has a good article covering this: en.wikipedia.org/wiki/Word_(computer_architecture). There's some interesting historical info there (like the oldest 32-bit design being from 1948) and much more exotic cases like non-power-of-two word sizes (such as the Apollo guidance computer or the UNIVAC III). $\endgroup$ – Austin Hemmelgarn May 8 at 1:42
44
$\begingroup$

A) Historically, machines have been characterized by number of bits per 'machine word'. Why should NES be handled differently?

B) Calling it a 'byte' is not as clear since historically a 'byte' has not always been composed of eight bits (e.g some early machines had six bits per byte). Admittedly this is not so strong a point anymore.

C) On a side note: I don't think saying 'one byte' actually saves any time compared to saying 'eight bit(s)'.

| cite | improve this answer | |
$\endgroup$
  • 2
    $\begingroup$ There are still modern CPUs with 10 and 16 bit bytes. They're mostly VLIW architectures used for signal processing and 8 bits is often not very useful to process a digitized analog signal. $\endgroup$ – slebetman May 7 at 9:54
  • 14
    $\begingroup$ And, bigger is better! Which would you buy, Nintendo 8 or Nintendo 64? $\endgroup$ – jpa May 7 at 10:39
  • $\begingroup$ @slebetman afair, C11 or so implies 8-bit bytes, isn't it? $\endgroup$ – Bulat May 7 at 18:39
  • 1
    $\begingroup$ @Bulat No. It is guaranteed to be able to store values of 0 to 255 for unsigned and -128 to 127 but implementations also allow char (C doesn't really define "byte" but programmers assume the size of char to be a byte) to represent values like 1000, 32000 etc. The char type can be larger than 8 bits but cannot be smaller. That's why C still supports CPUs with 10, 16, 24 and 32 bit bytes $\endgroup$ – slebetman May 7 at 22:01
  • $\begingroup$ @slebetman True, although it should be mentioned that POSIX does require CHAR_BIT = 8, which is where that idea probably comes from. And I wouldn't count on most general purpose libraries out there that have to deal with such details to correctly handle platforms where it's not 8. $\endgroup$ – Voo May 8 at 11:46
1
$\begingroup$

It is true that in more modern computer architectures, 8 bits is roughly synonymous with a single byte. However that doesn't always mean that we count things in bytes.

Think about a soft drink, maybe a Coca-Cola or something. What are some typical sizes it might be sold in? I will use my memory of Japan and the US as examples:

Japan:     US:
375 mL  ~  12   fl oz
500 mL  ~  16.9 fl oz
           20   fl oz
  1 L   =  1    L
  2 L   =  2    L

Notice that, even on Japan's side of the chart, we're switching between units: milliliters and liters. ...Could we just as easily say things like "1000 mL" and "2000 mL", or either ".375 L" and ".5 L"? Yes, absolutely!

Then why don't we? Because as the general size of the drink container is scaled, the units that we find most useful scale with it.

So think of the NES, which was an 8-bit system. Later you had the Sega Genesis and SNES, which were both 16-bit. The original PlayStation was 32-bit, the N64 (Nintendo likes abbreviations, don't they?) was 64-bit, the Sega Dreamcast was 128-bit, and so on.

Have you ever heard of a normal 64-byte or 128-byte computer architecture? No, of course not. Even the Sega Dreamcast and similar systems had merely "8-byte" architectures. And as other answers have stated, 8 bits hasn't always been completely synonymous with a single byte.

(And to be completely pedantic, 8 bits aren't exactly the same thing as a byte on anything, since they could each belong to different bytes, if you just pick them out randomly. A byte is technically an ordered collection of bits.)

Think about how tiny a single computer instruction is. It is small compared to a lot of what we would normally count in bytes. In fact, when you're dealing with Assembly, you're dealing with quite a lot of detail, including individual bits.

So in the same way that we go from measuring soft drink sizes in liters to milliliters, just because of the scale being different, we go from measuring things in bytes and gigabytes to individual bits, just because of the scale.

| cite | improve this answer | |
$\endgroup$
  • 2
    $\begingroup$ "The N64 was 64-bit, the Sega Dreamcast was 128-bit". Just to nitpick: The problem with that is that it's not well defined what a "n-bit" system is. The most common definition is probably "native word size of the CPU's ALU". Sure the Dreamcasts's FPU could handle 128 bit at a time, but its actual CPU dealt with 32bit. I've never heard anybody refer to any modern CPU with AVX support as a "512-bit CPU". $\endgroup$ – Voo May 8 at 11:58

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.