Why are microprocessors 8 bit (or 16, 32, 64, and so on)?

I guess this is fairly simple.

You need to know a small thing about how the addressing and transmission works. (Correct me if i am wrong)

Heard of multiplexer?

This is an essential component of any transmission. why?


The above is a simple 2:1 (
2 input channel-1 output channel) Multiplexer.

We know that in a computer, data needs to be constantly transferred,
for example,
1) from secondary storage to primary storage
2) The graphic content has to be processed by the GPU and sent to the display unit. etc.

I hope you get the vibe. There is always data being sent from one device to other internally. No

I guess this is fairly simple.

You need to know a small thing about how the addressing and transmission works. (Correct me if i am wrong)

Heard of multiplexer?

This is an essential component of any transmission. why?


The above is a simple 2:1 (
2 input channel-1 output channel) Multiplexer.

We know that in a computer, data needs to be constantly transferred,
for example,
1) from secondary storage to primary storage
2) The graphic content has to be processed by the GPU and sent to the display unit. etc.

I hope you get the vibe. There is always data being sent from one device to other internally. Now check out your Computer, It has only one bus cable for all this.
Our aim is to reduce the no. of cables being used. Here comes the Multiplexer,

Viola!

In the above figure there are two sources of input, we use a single bit "sel" to find which source it is! That is, 1 bit is used to tell which source has it input being transmitted,

logical right? 1 bit can have two values 0 or 1.
Thus,
0-1st sourse (means 1st source is transmitting data)
1-2nd source

Now, how many bit you need for addressing 4 sources? 2 bits!
00-1st source
01-2nd source
10-3rd source
11-4th source

Similarly, 8 sources require 3 bits to uniquely identify it.
Thus using a multiplexer data from multiple sources can sent through 1 single channel.

Now comes the demultiplexer. Above is 1:2 Demultiplexer (1 channel input-2 channel output)

So out of the multiple sources, the "sel" or select gives the unique bit values to find which source is transmitting data. At the receiver end, a demultiplexer is used, wherein, it uses the "sel" bits to give the transmitted data to the necessary output device (could be a different output device, so "sel" may vary).

Thats it!

1) Doing this helps us in easy transmission which reduced complexity in terms of cables
2) Reduction in cost
3) Easy addressing of devices (as a multiple of 2). Each address is unique and 16 bit means 2^16 possible devices could be connected.
4) Not only devices, each bit/byte in the primary and secondary need to be addressed. Thus, 32 bits or 64 bits can address a large number of location/devices.

Thus, since we are dealing with binary values, everything is in powers of 2. So, no 6 or 17...etc.

In fact, we've built all sorts of different sized processors over the years. A power of two is the common trend simply because there's not a lot of need to optimize to the exact number of bits given that they're all implemented in (relatively) very scalable silicon today.

Other processors that come to mind:

Intel 4004 - 4 bits
DEC PDP-1 - 18 bits
DEC PDP-6 (and PDP-10) - 36 bits
CDC 6600 - 60 bits

A more complete list can be found here: Word (computer architecture)

In the world of general-purpose mainstream computers - PCs, laptops, tablets, servers, etc. - the 8-bit ship left port long ago. Hobbyists and vintage computer enthusiasts still work with 8-bit CPUs, and some stubborn businesses are still working with 16-bit CPUs. But we are clearly in a 32-bit and 64-bit world today.

However, in the embedded systems world, there is still demand for 8-bit and 16-bit microcontrollers. In fact, even 4-bit microcontrollers have a place.

Although there are plenty of 32-bit microcontrollers, the lower cost, size, power consumption, and complexity of 8-bit microcontro

In the world of general-purpose mainstream computers - PCs, laptops, tablets, servers, etc. - the 8-bit ship left port long ago. Hobbyists and vintage computer enthusiasts still work with 8-bit CPUs, and some stubborn businesses are still working with 16-bit CPUs. But we are clearly in a 32-bit and 64-bit world today.

However, in the embedded systems world, there is still demand for 8-bit and 16-bit microcontrollers. In fact, even 4-bit microcontrollers have a place.

Although there are plenty of 32-bit microcontrollers, the lower cost, size, power consumption, and complexity of 8-bit microcontrollers make them ideal for many embedded scenarios. 32-bit microcontrollers have a distinct advantage in compute-intensive applications, assembling and transmitting data packets, etc. But 8-bit microcontrollers are great for low-power sensor-based applications that don’t involve much number crunching. They just periodically wake up to look for sensor input (or detect an interrupt), and make a decision about what to do next.

I’m working on a project for a client right now that uses an 8-bit PIC microcontroller. It was selected for the project primarily because of its low cost, small physical size, and low power consumption.

Cost differences between 8-bit and 32-bit microcontrollers are diminishing, but still exist. For example, one study a couple of years ago showed that 8-bit microcontrollers cost as little as $0.311US each (in quantities of 1,000), 16-bit for as little as $0.385US each (quantity 1,000), and 32-bit for as little as $0.378US each (quantity 1,000). This might not seem like much of a cost difference, but if you sell a huge number of products, these few cents can really add up. Of course, in smaller quantities, the cost differences are much larger. There’s additional overall cost savings in simpler external logic, fewer address and data lines, smaller physical device size (leading to a smaller board), etc., when you use the smaller microcontrollers.

When the term n-bit microcontroller is used, this refers to the size of the internal data registers (e.g. accumulators) and data bus.

Virtually all 8-bit processors have a wider address bus, as an 8-address bus would only address 256 bytes of memory.

The 8-bit 8051 microcontroller, one of the oldest designs still in use, has a register set consisting of an 8-bit accumulator (A), an 8-bit extension register (B) used for multiply and divide, 8-bit stack pointer, 16-bit address register (DPTR), and four banks of eight 8-bit general purpose registers (R0-R7). It can address up to 64KB with its 16-bi

When the term n-bit microcontroller is used, this refers to the size of the internal data registers (e.g. accumulators) and data bus.

Virtually all 8-bit processors have a wider address bus, as an 8-address bus would only address 256 bytes of memory.

The 8-bit 8051 microcontroller, one of the oldest designs still in use, has a register set consisting of an 8-bit accumulator (A), an 8-bit extension register (B) used for multiply and divide, 8-bit stack pointer, 16-bit address register (DPTR), and four banks of eight 8-bit general purpose registers (R0-R7). It can address up to 64KB with its 16-bit address bus.

More modern 8-bit microcontrollers, many based on RISC (reduced instruction set architecture) typically have many more registers. For example, the Atmel 8-bit AVRs have 32 general-purpose 8-bit registers, and the last six (R26:R27, R28:R29 and R30:R31) can be paired and used as 16-bit pointer (index) registers, named X, Y and Z.

16-bit processors have 16-bit data and address registers, and a 16-bit or larger address bus.

The Freescale S12, based on the older 68HC11, has two 8-bit accumulators that can be concatenated to form a 16-bit accumulator D, two 16-bit index registers (IX and IY), a 16-bit program counter and 16-bit stack pointer.

The Texas Instrument’s 16-bit microcontroller has 16 16-bit registers, of which four are dedicated to special purposes: R0 is the program counter, R1 is the stack pointer, and R2 is the status register. Some R2 and R3 source encodings yield six commonly used constant values without requiring an additional operand. (R3 can only be used as a constant generator.) R4 through R15 are available for general purpose use (data or addressing). Most MSP430’s can only address 64K of memory; some have an extension to address 20-bits.

Microchip’s 16-bit PIC24 series also has 16 16-bit registers, the last two (W14 and W15) used as a frame pointer and stack pointer. The others can be used as either data or address registers. W0 aka WREG is the only one that can address memory. PIC24’s have 24-bit instructions (hence their name) and 24-bit program counters, which can theoretically address 24M instructions, however the largest part has only 1M instructions words. Most parts use 16-bit data addresses; a few parts use a page register to extend that to 24-bits also.

Most 32-bit microcontrollers today also use RISC designs, typically MIPS (e.g. Microchip PIC32) or ARM (many vendors). They have 32-bit data and address registers, and 32-bit addressing (though most parts only address up to several MB of physical memory).

MIPS microcontrollers have 32 32-bit general-purpose registers ($0-$31) and 32 32-bit floating point registers ($f0-$f31). Register $0 is hardwired with the value 0, all others are general purpose but several are reserved for special use by convention; e.g. $29 for a stack pointer, $30 for a frame pointer, and $31 for a return address. Other registers are also by convention used for arguments, return values, and save areas.

ARM Cortex microcontrollers have 16 32-bit registers, of which 13 are general-purpose registers, R0-R12; R13 is the stack pointer (one for the user and one for kernel); R14 is the link register, and R15 is the program counter. Some parts have 32 64-bit floating point registers.

The number of bits refers to the size of a memory address supported by the CPU and the operating system.

A memory address is a number used by programs to know where information is stored in system memory (RAM).

The size of a memory address is determined by the CPU manufacturer.

At first computers would just have 8 bit memory addresses, but this would only accommodate 256 bytes of memory or less. As CPUs became more powerful they supported more and more memory, sometimes by adding clever tricks to support more memory using the same size memory address, but ultimately increasing the size of a memor

The number of bits refers to the size of a memory address supported by the CPU and the operating system.

A memory address is a number used by programs to know where information is stored in system memory (RAM).

The size of a memory address is determined by the CPU manufacturer.

At first computers would just have 8 bit memory addresses, but this would only accommodate 256 bytes of memory or less. As CPUs became more powerful they supported more and more memory, sometimes by adding clever tricks to support more memory using the same size memory address, but ultimately increasing the size of a memory address.

Powers of two are preferred for memory address sizes for various reasons, e.g. 2, 4, 8, 16, 32, 64, 128. The main reason, I think, is that each size up neatly fits a power of two multiple of the prior sizes within it. This creates a lot of conveniences in the CPU design.

With 32 bit systems, it is difficult to support 4GB of memory or more. And it has increasingly been the case that people want to have systems with 4GB of memory or more. This is why we transitioned to 64 bits.

A 64 bit address can support rather large amounts of memory, billions more than most current PCs have in them. I'm tempted to say it would be hundreds of years or even to the end of human existence before 64 bits are too few, but I can't really say for sure.

If we did decide we need to move beyond 64 bits, it seems logical we would go with 128 bits but there's no law saying that this must be the case.

This question is a bit like asking, “What determines that a vehicle’s engine is 4, 6, or 8 cylinder?” The short answer is that the manufacturer determines whether a microprocessor is 8, 16, 32, or 64 bit. Even today, some manufacturers produce microprocessors (and/or microcontrollers) with a variety of bit sizes, including 8-bit products.

In general, an N-bit microprocessor (CPU) has an ALU (Arithmetic Logic Unit), registers, an address bus, or data bus having N bits. Notice that I said or. This is a pretty broad definition, because some CPU architectures have a mixture of internal sizes and mi

This question is a bit like asking, “What determines that a vehicle’s engine is 4, 6, or 8 cylinder?” The short answer is that the manufacturer determines whether a microprocessor is 8, 16, 32, or 64 bit. Even today, some manufacturers produce microprocessors (and/or microcontrollers) with a variety of bit sizes, including 8-bit products.

In general, an N-bit microprocessor (CPU) has an ALU (Arithmetic Logic Unit), registers, an address bus, or data bus having N bits. Notice that I said or. This is a pretty broad definition, because some CPU architectures have a mixture of internal sizes and might use different sizes internally and externally. The size of the data bus has often been used to drive the bitness of the CPU, but that’s not always the case.

Consider the following examples:

  • Zilog Z80 - Considered an 8-bit CPU, it has an 8-bit data bus, 16-bit address bus, and a mix of 8-bit and 16-bit registers.
  • Intel 8086 - Considered a 16-bit CPU, it has a 16-bit data bus, a 20-bit address bus, and 16-bit registers.
  • Intel 8088 - Considered a 16-bit CPU, even though it has only an 8-bit external data bus. Everything else is identical to the 8086. The original IBM PC was based on this CPU.
  • Intel 80386 - Considered a 32-bit CPU, it has a 32-bit data bus, 32-bit address bus, and 32-bit registers.
  • Intel 80386SX - Considered a 32-bit CPU, even though it has only a 16-bit external data bus and a 24-bit external address bus. Everything else is identical to the 80386.

As you can see, the bitness of a CPU is not always based on the size of the external data bus, the size of the external address bus, or the size of the largest registers. It usually has to do with how much data it can move around at a time internally, but that’s not always the case.

If you hop in the wayback machine to the 1975 - 1980 time frame, I’d say the main difference is the natural bitwidth that the instructions work on for data. 8-bit CPUs worked most naturally on 8 bit data, while 16-bit CPUs worked most naturally on 16-bit data.

I say “most naturally,” as in that was the default computation width. Many 16-bit CPUs had instructions for operating on 8-bit data as well. TMS9900 and 8086 are examples.

Under the hood, a number of 16-bit CPUs had an 8-bit ALU that got double-pumped. TMS9900 and CP1600 fit this description. Both were considered 16-bit CPUs though.

Heck, t

If you hop in the wayback machine to the 1975 - 1980 time frame, I’d say the main difference is the natural bitwidth that the instructions work on for data. 8-bit CPUs worked most naturally on 8 bit data, while 16-bit CPUs worked most naturally on 16-bit data.

I say “most naturally,” as in that was the default computation width. Many 16-bit CPUs had instructions for operating on 8-bit data as well. TMS9900 and 8086 are examples.

Under the hood, a number of 16-bit CPUs had an 8-bit ALU that got double-pumped. TMS9900 and CP1600 fit this description. Both were considered 16-bit CPUs though.

Heck, the Z-80 was considered an 8-bit CPU despite having a 4-bit ALU.

That difference still holds with modern microcontrollers: 8-bit MCUs work on 8 bit data naturally, while 16-bit MCUs work on 16-bit data naturally.

This is in contrast to modern microprocessors, where “bitness” more accurately describes the size of a pointer.

You might note that I left the 68000 out of this. It’s in a weird space between 16-bit and 32-bit. It’s one of my favorite examples for the argument that the “bitness” of an architecture is not a well defined concept, and is best understood in the context of the era a given processor was popular.

A simplification is that it implies that it has 16 bit arithmetic instructions. 8 bit processors only had 8 bit arithmetic instructions. Modern CPUs have 64 bit arithmetic instructions.

8 bits was always limiting. 16 bits was a bit limiting too, because that only allows for integers between -32768 and 32767. 32 bit was pretty good, but as files got very large, it became a problem because of file size limitations, RAM limitations, and some other limitations.

64 bits seems to be large enough for all uses I know of - if you need larger than 64 bit integers, there’s way around that using arbitrary p

A simplification is that it implies that it has 16 bit arithmetic instructions. 8 bit processors only had 8 bit arithmetic instructions. Modern CPUs have 64 bit arithmetic instructions.

8 bits was always limiting. 16 bits was a bit limiting too, because that only allows for integers between -32768 and 32767. 32 bit was pretty good, but as files got very large, it became a problem because of file size limitations, RAM limitations, and some other limitations.

64 bits seems to be large enough for all uses I know of - if you need larger than 64 bit integers, there’s way around that using arbitrary precision libraries, or simply using floating point values, and accepting a loss of precision. But for addressing memory, 64 bits is more than enough, because that’s a currently inconceivable amount of RAM ( 1.8 * 10^19 bytes of addressable RAM.) And it’s big enough for any files I know of 1000 Petabytes or something like that. While I can conceive of some large database maybe containing that much info, it would not be a single file. But I digress…

Wikipedia says that 64 bits refers to register size and address size. Registers are used by the CPU for computations, intermediate values, and other things. This is also a good answer, but in my experience is the same as the answer in the first sentence ( as register size usually dictates max integer size for arithmetic.)

If this is a homework question, I suggest you use the answer from the course’s text. But if you are asking out of curiosity, I think you will find my simplified answer is pretty accurate.

It means that the microprocessor has a data bus of 8 bit which implies that it can process 8 bits of data in one clock cycle. (2^8 = 0–255).

Every microprocessor has an address bus and a data bus. Say, your microprocessor has a data bus of 8 bit and address bus of 16 bit. Say what?!

Okay, so bus is nothing but a collection of wires through which data is transmitted from one part of a computer to another.

Address bus of 16 bit means that it has total of 65536 (2^16 = 0–65535) memory locations which can store data.

Now the next quest question that comes to mind is how much data can these memory loc

It means that the microprocessor has a data bus of 8 bit which implies that it can process 8 bits of data in one clock cycle. (2^8 = 0–255).

Every microprocessor has an address bus and a data bus. Say, your microprocessor has a data bus of 8 bit and address bus of 16 bit. Say what?!

Okay, so bus is nothing but a collection of wires through which data is transmitted from one part of a computer to another.

Address bus of 16 bit means that it has total of 65536 (2^16 = 0–65535) memory locations which can store data.

Now the next quest question that comes to mind is how much data can these memory locations store? That is where data bus comes into play. The data bus of 8 bit means that each of these locations can store data of 8 bit (2^8 = 0–255).

So the specifications of your microprocessor tells you that it has 65536 number of memory locations each of which can store 8 bit of data.

When someone refers to as a 8 bit or 16 bit processor, they are referring to the size of the data bus (The amount of data it can process in a clock cycle).

Computers have memory which stores data. The memory is in numbered slots, each of which stores (for the computers you will be concerned with) one byte. So you have slots numbered 0, 1, 2,... up to a limit.

Computers use the binary system. 1 bit can have 2 values - 0, 1. Two bits can have four values: 00, 01, 10, 11. Three bits can have eight values: 000, 001, 010, 011, 100, 101, 110, 111. These are, respectively, 2, 2x2, and 2x2x2 values, written as 2^1, 2^2 and 2^3 bits. Thus a number with n bits can have 2^n values. And when used for selecting the slots in memory, it can generate different ad

Computers have memory which stores data. The memory is in numbered slots, each of which stores (for the computers you will be concerned with) one byte. So you have slots numbered 0, 1, 2,... up to a limit.

Computers use the binary system. 1 bit can have 2 values - 0, 1. Two bits can have four values: 00, 01, 10, 11. Three bits can have eight values: 000, 001, 010, 011, 100, 101, 110, 111. These are, respectively, 2, 2x2, and 2x2x2 values, written as 2^1, 2^2 and 2^3 bits. Thus a number with n bits can have 2^n values. And when used for selecting the slots in memory, it can generate different addresses for 2^n slots.

In a 64-bit processor, the numbers used to address memory have 64 bits (compared to 32 bits in simpler processors). This means that it can identify 2^64 different memory locations, each of which stores one byte. In fact, this number is far larger than needed today, which is why your source says "in theory". Actually, they tend to use about 48 of the 64 bits, allowing them to address 2^48 selarate memory locations.

32bit cpu means in one cycle a cpu can fetch 32bit instructions only and under 32 bit.....
16 bit means instructions will be less sized ..... So you might need two cycles to perform the same task which you were doing in one cycle in 32 bit
Ready example -- 16 bit cpu first cycle - give me water
16 bit cpu Second cycle --turn on lights
32bit cpu first cycle - give me water and turn on lights
Longer instruction - less cycles

It is mainly the width of the data bus and the registers used for arithmetic and logical operations that specify whether a microcontroller is 8 bit/16 bit/32 bit etc. This means that the upper limit of the operations you could do or input/output you can take, results you can store in the accumulator,etc are limited by these number of bits in a particular microcontroller.