Byte addressing
Byte addressing refers to hardware architectures which support accessing individual bytes. Such computers are sometimes called byte machines This is in contrast to word-addressable architectures, word machines,  that access data in terms of larger units called words.

The basic unit of digital storage is called a bit, storing a single 0 or 1. Many common architectures can address more than 8 bits of data at a time. For example, the Intel 386SX processor can handle 16-bit (two-byte) data, since data is transferred over a 16-bit bus. However, data in memory may be of various lengths. Byte addressable memory refers to architectures where data can be accessed and addressed in units that are narrower than the bus. An eight-bit processor like the Intel 8008 addresses eight bits, but as this is the full width of the bus, this is regarded as word-addressable. The 386SX, which addresses memory in 8-bit units but can fetch and store it 16 bits at a time, is termed byte-addressable.

The advantage of word addressing is that more memory can be addressed in the same number of bits. The IBM 7094 has 15-bit addresses, so could address 32,768 words of 36 bits. The machines were often built with a full complement of addressable memory. Addressing 32,768 bytes of 6 bits would have been much less useful for scientific and engineering users. Or consider the 32-bit Pentium processor. Its 32-bit address bus can address 4 billion different items. Using word addressing, a 32-bit address bus could address 4 Gigawords; or 16 Gigabytes using the modern 8-bit byte. If the 386SX and its successors had used word addressing, scientists, engineers, and gamers could all have enjoyed programs that were 4x larger on 32-bit machines. Then again, word processing, rendering HTML, and all other text applications would have run more slowly.

When computers were so costly that they were only or mainly used for science and engineering, word addressing was the obvious mode. As it became cost-effective to use computers for handling text, hardware designers moved to byte addressing.

To illustrate why byte addressing is useful, consider the IBM 7094, which is word-addressable and has no concept of a byte. It has 36-bit words, and stores its six-bit character codes six to a word. To change the 16th character in a string, the program has to determine that this is the fourth character of the third word in the string, fetch the third word, mask out the old value of the fourth character from the value held in the register, "or" in the new one, and then store back the amended word. At least six machine instructions. Usually these are relegated to a subroutine, so every store or fetch of a single character involves the overhead of calling a subroutine and returning. With byte addressing, that can be achieved in one instruction: store this character code at that byte address. Text programs are easier to write, smaller, and run faster.

Some systems, such as the PDP-10, use word addressing but facilitate access to individual bytes using special instructions which can access memory using a byte pointer, which contains both a word address and the index of a specific byte within the word.

See also
 Data structure alignment
 Endianness

References

Computer architecture
Central processing unit