8-bit or 16-bit Architecture for a Hobbyist Computer

In summary: The 80286 added 4 additional bits of address that could be accessed by using additional features of the address unit which is an early version...Advantages:Larger Numbers,Larger Computations,Larger Memory, because the addresses are larger, which allows more memory1,Thus, it is more 'practical' and useful.Disadvantages:Potentially Expensive,Large Physical Volume,More Complexity, which may allow more errors,More Power Consumption, which may require a complex power system,However, is it worth it? 2^9-1 = 511, which is not a practical range to work with. I want my

8-bit or 16-bit Architecture for hobbyist project,


  • Total voters
    4
  • Poll closed .
  • #1
LtIvan
40
6
I am thinking of building a basic computer, similar to Ben Eater's 8-bit computer. I may be building it on a PCB. However, I intend to aspire to 16-bit bus computer, because it will allow larger numbers, larger computations, larger memory, because the address is larger.
However, is it worth it? 2^9-1 = 511, which is not a practical range to work with. I want my computer to perhaps handle large problems; so, it may be useful.

16-bit Architecture:
Advantages:
  • Larger Numbers,
  • Larger Computations,
  • Larger Memory, because the addresses are larger, which allows more memory1,
  • Thus, it is more 'practical' and useful.
Disadvantages:
  • Potentially Expensive,
  • Large Physical Volume,
  • More Complexity, which may allow more errors,
  • More Power Consumption, which may require a complex power system,
Thus, I offer the enquiry to you.

Ic þancie eower,

1 Yes, there are ways to increase memory for 8-bit computers, but I am suggesting generally.
 
Technology news on Phys.org
  • #2
Are there any specific projects you would like to attempt that we could focus our opinions on?
 
  • Like
Likes Nidum
  • #3
It really depends on the projects.
I have an Arduino UNO R3 and it is based on an ATmega328P microcontroller. Ah, do you want a microcontroller or microcomputer?
The Arduino UNO has 8-bit processing and seems alright to me. As I said, it really depends on the project. If you want fast computing and good processing then get the most powerful option. If you want to control many input/output sources then...it still depends. My current answer to the poll is... it depends...
 
  • Like
Likes Nidum
  • #4
LtIvan said:
I am thinking of building a basic computer, similar to Ben Eater's 8-bit computer. I may be building it on a PCB.
If the goal is to simply build a computer from scratch, then using an 8-bit processor is reasonable, and might be simpler than working with a 16-bit processor.
LtIvan said:
However, I intend to aspire to 16-bit bus computer, because it will allow larger numbers, larger computations, larger memory, because the address is larger.
However, is it worth it? 2^9-1 = 511, which is not a practical range to work with. I want my computer to perhaps handle large problems; so, it may be useful.
With 8 bits, the largest number that can be represented is ##2^8 - 1## or 255, not 511 as you wrote. That would give you a range of unsigned numbers 0 through 255, or a range of signed numbers from -128 through 127..
If you really want larger numbers, etc., why not make the jump to 32 bits? The Raspberry Pi board comes with a variety of types of ARM processors, with prices ranging between $5 USD to $35 USD (see https://en.wikipedia.org/wiki/Raspberry_Pi). There are also the Arduino kits that ISamson mentioned.
 
  • Like
Likes sysprog and ISamson
  • #5
just because the computer is 8 bit doesn’t mean you are limited to 8 bit numbers. You can always use software to add and multiply larger numbers.
 
  • Like
Likes rbelli1 and donpacino
  • #6
jedishrfu said:
just because the computer is 8 bit doesn’t mean you are limited to 8 bit numbers. You can always use software to add and multiply larger numbers.

I have a project I worked on that used an 8-bit micro-controller. At one point in the calculations I found that 32-bit floats made the programming easier. So 32-bit floats I used. It took a relatively long time and a distressing amount of storage but was fast enough by far.

BoB
 
  • Like
Likes jedishrfu
  • #7
rbelli1 said:
I have a project I worked on that used an 8-bit micro-controller. At one point in the calculations I found that 32-bit floats made the programming easier. So 32-bit floats I used. It took a relatively long time and a distressing amount of storage but was fast enough by far.

BoB

8-bit microcontrollers are an average Arduino UNO...
 
  • Like
Likes rbelli1
  • #8
ISamson said:
8-bit microcontrollers are an average Arduino UNO...

True. And they like the micro I used (Cypress psoc3) can do 32 bit numbers. Actually they are only limited to 32 bits out of the box by the libraries available. Add more and you can do arbitrarily large numbers limited only be the flash and ram available.

BoB
 
  • #9
LtIvan said:
are ways to increase memory for 8-bit computers, but I am suggesting generally.
The original IBM PC and similar had 8 bit processors, meaning that addressing more than one megabyte of memory was problematic from a programming point of view.
Things started to change with invention of 'overhead' memory hardware. you could have several banks of 1Mb which could be 'paged', but still was tricky.
When 16bit processors arrived it got a lot less messy.

I don't know what the details are for your project but I suggest go the 16bit way.
Parts are really not that much more expensive.
 
Last edited:
  • #10
rootone said:
The original IBM PC and similar had 8 bit processors

They had 16-bit Intel 8088 processors with an extra 4 bits of address that could used via segment registers to get to 1MB of memory. Beyond that required external bank switching.

The 80286 added 4 additional bits of address that could be accessed by using additional features of the address unit which is an early version of an MMU. This gives 16MB natively still with a 16-bit CPU.

Finally the 32-bit 80386 comes out and addressing in user mode software gets "less messy" but the underlying MMU gets tons "more messy" for the OS.

Future generations (486, 586{Pentium}, Core, 64-bit, etc.) complicate the situation for the OS even more but provide GB and then TB address spaces.

BoB

MMU = Memory Management Unit
 
  • #11
rootone said:
I don't know what the details are for your project but I suggest go the 16bit way.
Parts are really not that much more expensive.

32-bit is available too at a similar price point to the 16-bitters. Unfortunately all (as far as I can find) of the 32 bit DIP micros have been discontinued. 16-bit DIPs are still widely available. Some of these more capable micros are available Arduino ready.

Many of the manufacturers (NXP, ST, Cypress, TI, Silabs, FTDI, off the top of my head) offer their own ecosystem of beginner and wallet friendly boards.

BoB

Edit: Microchip makes some 32-bit DIP micros. The ARM based DIPs are discontinued.
 
Last edited:
  • #12
Mark44 said:
If the goal is to simply build a computer from scratch, then using an 8-bit processor is reasonable, and might be simpler than working with a 16-bit processor.
With 8 bits, the largest number that can be represented is ##2^8 - 1## or 255, not 511 as you wrote. That would give you a range of unsigned numbers 0 through 255, or a range of signed numbers from -128 through 127..
If you really want larger numbers, etc., why not make the jump to 32 bits? The Raspberry Pi board comes with a variety of types of ARM processors, with prices ranging between $5 USD to $35 USD (see https://en.wikipedia.org/wiki/Raspberry_Pi). There are also the Arduino kits that ISamson mentioned.

https://en.wikipedia.org/wiki/Arduino
:)
 
  • #13
8-bit computers and electronics/software are most popular. Most computers function on it.
 
  • #14
ISamson said:
8-bit computers and electronics/software are most popular. Most computers function on it.
?
If by "computer" you mean desktop computer or laptop or tablet, what you said isn't true at all. Most computers that are sold right now are 64-bit computers, meaning that the registers in the processor are 64 bits wide. My Apple II computer that I bought in 1980 was an 8-bit computer, but all of the ones I've had since then have been 32-bit or higher machines.
 
  • #15
One option would be to build using the bit slice approach. Initially build it as an 8 bit then later double up the hardware to 16 bit if you still feel keen on the project.
 
  • #16
As @jedishrfu posted, the problem will not be with the arithmetic range - at least not directly.
In the same way that decimal digits don't limit you to 0-9, bytes won't limit you to 0-255 or -128 to -127. You just keep track of the carry bits, etc.

What is much more important is the address range. You want to be able to access much more than 256 bytes of data and program space.
This can be done with a 8-bit instruction length, either with paging, offset addressing, indirect addressing, multibyte instructions, or some combination.
 
  • Like
Likes jedishrfu
  • #17
  • #18
.Scott said:
What is much more important is the address range. You want to be able to access much more than 256 bytes of data and program space.
This can be done with a 8-bit instruction length, either with paging, offset addressing, indirect addressing, multibyte instructions, or some combination.
Note that all 8-bit processors had an 16 bit address bus, allowing 64 kByte. Having an adrress space of 256 bytes is really too limiting.
Having an 8-bit bus made execution really slow. An instruction like ld a, [memory] would take 4 memory cycles of at least 3 clockcycles each on an 8080 or z80.
1 reading the opcode
2 reading the low byte of the memory address
3 reading the high byte of the memory address
4 reading the contents of the memory location.
Having some 16 bit address registers (or at least one) is really useful, and at least the program counter would have to be 16 bit.
A full 16 bit ALU would increase the transistor count by a lot however.
 
  • #19
8080 Z80
These processors have some 16 bit math, in the form of DAD, a 16 bit add, HL = HL + BC or HL = HL + DE. There's also an 16 bit increment "INX", 16 bit decrement "DCX", and a load "LXI" instruction. A later 8 bit processor, the Z8, has 128 or 256 8 bit registers, and any even/odd pair could be used as a 16 bit address for memory access instructions.

The 6502 was used in the Apple II, Comodore ?, and Atari 400/800/65XE/135XE "8 bit" home computers. Other than PC, it only has 8 bit index registers and an 8 bit stack register (the stack is located at addresses hex 100 to hex 1FF).
 
Last edited:

1. What is the difference between 8-bit and 16-bit architecture for a hobbyist computer?

The main difference between 8-bit and 16-bit architecture is the size of the data bus. An 8-bit architecture has a data bus that can handle 8 bits of data at a time, while a 16-bit architecture has a data bus that can handle 16 bits of data at a time. This means that a 16-bit architecture can process larger chunks of data and perform more complex operations compared to an 8-bit architecture.

2. Which one is better for a hobbyist computer, 8-bit or 16-bit?

The answer to this question depends on the specific needs of the hobbyist. If the hobbyist is looking for a simple and inexpensive computer for basic tasks, an 8-bit architecture may suffice. However, if the hobbyist wants to work with more advanced programs and require faster processing speeds, a 16-bit architecture would be a better choice.

3. Are there any limitations to using 8-bit or 16-bit architecture for a hobbyist computer?

Both 8-bit and 16-bit architecture have their limitations. An 8-bit architecture may not be able to handle complex programs or large amounts of data. On the other hand, a 16-bit architecture may require more resources and may be more expensive to build. It is important for a hobbyist to consider their specific needs and budget when choosing between the two architectures.

4. Can I use 8-bit or 16-bit architecture for gaming on a hobbyist computer?

While both architectures can be used for gaming, the capabilities of a 16-bit architecture would be better suited for more advanced and graphics-intensive games. A 16-bit architecture can handle larger amounts of data and perform more complex operations, making it a better choice for gaming compared to an 8-bit architecture.

5. Are there any advantages to using 8-bit or 16-bit architecture for a hobbyist computer?

Both 8-bit and 16-bit architecture have their advantages. An 8-bit architecture can be more cost-effective and simpler to build, making it a good choice for beginners. On the other hand, a 16-bit architecture can handle more complex tasks and provide faster processing speeds, making it a better choice for more advanced projects. Ultimately, the choice between the two architectures will depend on the specific needs and goals of the hobbyist.

Similar threads

  • Sticky
  • Programming and Computer Science
Replies
13
Views
4K
  • Programming and Computer Science
Replies
29
Views
3K
  • Programming and Computer Science
Replies
15
Views
1K
  • Computing and Technology
Replies
4
Views
744
Replies
2
Views
863
  • Programming and Computer Science
Replies
4
Views
662
Replies
1
Views
793
  • Computing and Technology
Replies
0
Views
141
Replies
9
Views
1K
Back
Top