Ari64 said:
If SIMD counts, then SSE2 is 128-bit also. SNES actually did have 16-bit registers, but an 8-bit data bus, so loading a 16-bit value took 2 cycles.
Some people do use the SIMD to consider XBox 128-bit. But no one in their right mind considers Pentium 3 PCs to be 128-bit. It's just marketing no matter how you look at it, and I answered your question regarding what in Dreamcast is 128-bit.
Of course I know SNES has 16-bit registers, I hope you don't think I'm making comments like this without knowing anything about the architecture. Likewise, Genesis has 32-bit registers and 32-bit operations and no one considers it 32-bit. z80 also has 16-bit register pairs and a small number of 16-bit operations, and no one considers the plethora of z80 systems to be 16-bit.
I know ALU width is the deciding factor for why people consider SNES 16-bit and Genesis not 32-bit. However, if you think about it, SNES gains nothing by having a full 16-bit ALU, and may not even have one. Because of the accumulator based architecture all binary ALU operations require at least two bus accesses for the second operand, either in the form of an immediate from the instruction stream or from a memory load. So while performing these operations it makes more sense to stage them into two 8-bit ALU ops. Full 16-bit is only necessary for unary operations like inc, dec, and shifts, which don't strictly need to go through an ALU. So SNES's architecture isn't much differentiated from an 8-bit CPU with 16-bit macros. Macros are more efficient than no macros, but then Genesis has full 32-bit macro operations.
Ari64 said:
Plenty of N64 games actually use the 64-bit instructions, though not all. I don't know if it would have been better to use the die area for something else. They could have gone with a larger L1 cache, I suppose.
So because they're used it means they're necessarily useful? The same argument applies to doubles. How often do you think double precision is really necessary? A lot of people probably used them just because they can. Both are a waste of die space, IMO, and you can see that most other consoles have opted for 32-bit and single precision instead (for instance PSP which is also MIPS). PS2's CPU is 64-bit, but it has integer SIMD so the bulk of the execution resources for 64-bit aren't wasted.
Rather than L1 size (not sure how if there'd be room for that now) they should have gone with some L1 associativity, IMO. Direct mapped is pretty problematic, and by those cache sizes CPUs had long since abandoned it. The bump from direct to 2-way tends to make a really big difference.