Written by Anthony Chambers , and read 1,747 times
First, a word of warning. This article is VERY technical. It'll also take a while to read through. I hope I've explained things well enough that even if this is all new to you that you can still follow, but just bear this in mind as you're reading. Also, I'm from the UK, so I'll use our naming and spellings, thanks.
Now, to the important stuff!
Let me take you back. Back to the 1990s. Back then marketing types were convincing most of us that the number of bits in your computer meant something significant. The Sega Megadrive was advertised as 16-Bit. It had it in big numbers and letters on the top of it. This was clearly better than the previous 8-bit machines, right?
Then came the next generation. Sony and Sega with their 32-bit consoles; the Playstation and Saturn, respectively.
But Atari? Atari were going to get the jump on these consoles, and release a 64-bit console.
That's right, twice as many bits as the Sony and Sega consoles. That makes it more powerful, right? Do the math, the adverts instructed us.
But what does it even mean to be 64-bit? We barely even talk about this stuff these days. Most of us in PC land know that we have 64-bit processors in our PCs these days (thanks AMD!), but that's a relatively recent development. The Atari Jaguar was released all the way back in 1993! It's 2020 as I write this, and people still disagree on social media and in forums about whether the Jaguar is actually a 64-bit machine. So let's investigate further.
Let's go back to 8-bit
Computer architecture today is incredibly complicated. The Jaguar is also really quite complicated.
But if we go back to the early home computers we find something that is much more simple to grasp, and we can get back to the Jaguar once we've covered the basics.
So, let's look at the MOS Technology 6502 processor from 1975.
This CPU is legendary. It (or some variation of it) could be found in almost every significant home computer of the late 1970s and early 80s. I say almost every because the Zilog Z80 was also (rightfully) really popular. A little company called Intel were also doing something with 8-bit CPUs at the time. But I digress.
The MOS 6502 (and its variants - I'll keep stressing this as people WILL correct me) was found in the Atari 2600/VCS, the Atari 400, 800, and their successors. It was in the BBC Micro, the Commodore PET, VIC-20 and 64. It was also the CPU in the Apple I and the Apple II. Oh, and a derivative powers the Nintendo Entertainment System.
That's right; when I said that the MOS 6502 was legendary, I meant it. And it still is.
Let's take a look at the pins on the processor itself. Unlike a modern CPU, which could easily have over 2,000 contacts, the 6502 (in its most common packaging) has 40 pins. That's right, 40.
Take a look at the pins in this diagram:
What do you notice here? Is it maybe that the majority of the pins have an A or a D prefix? If so, good.
Let's begin with the D pins. These are the data pins, and you would connect these to the data bus. There are 8 here; D0 through D7. We would say that this CPU therefore has an 8-bit wide data bus. ie it can read in 8-bits at a time.
Just in case we're unsure what a bit is, it's a digital on or off. Also often described as a one or zero. A Binary digIT.
There's also something in computers called a byte. A byte is simply 8-bits. With your 8-bits, or 1-byte, you can describe a numeric value, if you will, of no more than 255. That is, if all 8 bits are off (or zeroed), you have a zero value, and if all 8 are on, you have 255. I could wax on about binary numbers and all sorts of clever operations that you can do with them for ages, but I'll try to keep focused here.
Processor architectures also describe something called a word. This typically indicates the number of bits that the processor generally handles at a time. In the case of the 6502, the word size is, again, 8-bits.
So, we're addressing 8-bits at a time. On these systems, that was also the amount of memory that a single character (ie letter, number or symbol) takes up. So it's a pretty handy number to work with.
What does the CPU do with these 8-bits on the data bus? It will either be reading the values (probably from memory, but memory mapped devices are a thing, and it can be more complicated still, so let's just assume memory for now), or it will be writing them back out. Which it is doing depends on the behaviour of the R/W pin, but again, this isn't important for the purposes of this article.
Let's look first of all at when it's reading them in. Where does it store them? We've already mentioned that the data may be coming from memory, so we're clearly not going to be using the same memory to store it. That wouldn't make any sense.
But we do use a memory of sorts.
Inside the CPU are a number of registers, which are effectively very small, but very fast internal memory, some of which can be programmed, and some not. In the typical 6502 there are a handful:
- Accumulator (A)
- Stack pointer (S)
- Status flags (P)
- Programme counter (PC)
Let's take a quick look at what these are for:
The Accumulator (A) register is where the intermediate result of a mathematical operation can be stored. We don't need to know too much about how or why the A register, but it's there for this purpose, and it is 8-bits wide. So it can store up to the decimal value 255 in it. That's all we need to know for now.
The X and Y registers are what we call general purpose registers. The programmer puts whatever value they want into these registers, uses them for something of their choosing (like adding to the A register), but they can do pretty much whatever they like. Both of these registers are, again, 8-bits wide. So no more than 255 in decimal can be stored in them. Simple so far, right?
Then we get onto the Stack Pointer (S) register. The stack itself is one of those simple things that can get complicated to explain, but suffice to say that this is some magic that the CPU needs, and it's also 8-bits wide.
The Status Flags (P) register is a series of single bits that are used to indicate the result of various operations. This register is unusual, in that it is only 7-bits wide, rather than the 8 that we've seen so far. Well, there are only 7 status flags, so it only ever stores a 7-bit value. The flags include the N flag, which indicates that an operation resulted in a negative number, the V flag to indicate an overflow, the Z flag to indicate the result of an operation was zero, and the C flag to indicate that an operation resulted in a carry.
Lastly, we come on to the Programme Counter (PC) register. This is neither 8-bit, nor 7-bit wide. No, this is 16-bits wide. That's right. 16-bits. But what is this used for? For the answer, we need to go back to those pins on the CPU.
Notice that there are 16 A pins? A0 to A15. Those are the address pins, and they're connected to the address bus. Typically, the programmer will put an address on this bus, and devices on the bus will respond if this address is within the range that they cover. It's a little more complicated than that, but not for the sakes of this article.
So, if I were to put a zero on the address bus, and then I read data on my 8-bit data bus, I would be addressing the byte of data at address zero. Right?
If I were to put a 2048 on the address bus, and I write data on my 8-bit data bus, I would be writing a byte of data to whatever is at address 2048.
Side note here: We tend to refer to memory addresses in hexadecimal, rather than the decimal that I'm using here. So we wouldn't refer to the address as I am doing. But let's not confuse an already complicated subject further.
So, we've established that we are reading and writing to an address, and we are doing so a byte at a time. And because the address bus is 16-bits wide, and the maximum number that can be represented by 16 bits is 65,535, that means that we can address 65,536 bytes of memory (because we can also address memory location zero, right). If we divide this by 1024 (because we're stubborn and sticking to the old definition of a kilobyte), we get 64. That's the 64KB of RAM that can be addressed by the 6502 processor.
And that's why the PC register is 16-bits wide; it needs to be in order to be able to track where abouts in the memory space the 6502 is currently working from. That's all. And it makes sense, right?
Now, if anyone is reading this and wants to talk about the 6502's zero page, I'll just add that it exists, I'm aware, but it's not important for this article, so let's move along.
Internally, the 6502 CPU works on 8-bits of data at a time (its word length). It has an 8-bit wide Arithmetic Logic Unit (ALU), which is the part of the CPU that performs basic arithmetic (unsurprisingly). The 6502 can't do a hardware muliply or divide, but that's a different story, and the various solutions for this are quite interesting.
I think that by now we've arrived at the point that I was trying to make (and aren't you glad that I selected a simple CPU like the 6502?).
What is that point?
It's that nobody would consider the 6502 a 16-bit processor. It can address a 16-bit memory space, but the data bus is 8-bit wide. Its word length is 8-bit. The internal registers are all no more than 8-bit, with the exception of the programme counter, which is 16-bit because it needs to keep a track of the 16-bit memory space. But the processor is definitely 8-bit.
Fast forward a little
Our next step is the Motorola 68000 CPU from 1979. Bear in mind that this is only four years after the MOS 6502 was released into the wild. I also love this CPU, and it is again very significant for our story, and understanding of the Jaguar.
The 68000 (or 68k for short) would, like the MOS 6502, be found in some really important machines. It found use in high-end workstations, such as the Sun-1, and the VAXstation 100. It would also be the processor of choice for early Silicon Graphics workstations. It found its way into the Apple Lisa, and then the original Macintosh. The Atari ST, and the Commodore Amiga also had 68k CPUs in them. Atari, Sega, Capcom and SNK used the 68k in their arcade machines.
And then, of course, there's the Sega Megadrive. You remember we talked about the Megadrive earlier, as it had 16-bit emblazoned upon it's shell. This was everything 16-bit. Nothing then, nor since, said 16-bit more than the Sega Megadrive.
But was it 16-bit?
Well, here's the funny thing; the Motorola 68000 CPU had a 24-bit address bus, which means that it can address 16,777,216 memory locations (including zero). It addresses memory at the byte level, just as the 6502 did. So, let's do our calculation again, and we find that this is 16,384KB which, if we divide by 1024 again, gives us 16MB.
OK, so it has a 24-bit address space, but we already established from the 6502 example that the address space isn't what defines the bits that we describe the CPU as being. So let's move on.
What about the data bus? Ah! Now, this is 16-bits wide. So, whereas we could read in or write out a single byte at a time on the 6502, now we can operate on two bytes at a time, or 16-bits.
The word size? Well, that's 32-bit. So it needed to read in two 16-bit values in order for it to have its 32-bit word. It does however address memory at the byte level, and still considers a character as a single 8-bit byte.
That's interesting, isn't it? Why is the word size 32-bit, and not 16-bit? That's another quirk of the 68k processor, because it was designed to be future compatible with 32-bit software, and later CPUs in the series are true 32-bit CPUs (starting with the 68020). So the 8 data registers (D0 - D7) are all 32-bits wide.
The 68000 was somewhat limited by the data bus being 16-bit, yet it was a 32-bit CPU internally. The instruction set is 32-bit, and interestingly very similar to the DEC PDP-11 minicomputers. It's commonly considered to be a hybrid 16/32-bit processor, and indeed the Atari ST is named as such because it is a Sixteen/Thirty-two bit CPU. The Atari TT030 had a true 32-bit 68030 processor in it, hence TT, not ST.
The 68000's address registers A0 through A7, and the stack pointer are all 24-bit wide, as is the programme counter. I mean, they're not; they're 32-bit, but since it can only address 24-bit at a time the values should never be more than the maximum 24-bit value. They can be, and if you want to learn more about that, I recommend that you do a little research into the Apple Mac system software prior to the clean ROMs.
Focusing again, the 68000 has a 24-bit address space, a 16-bit status register, and it has 16-bit ALUs. It has 32-bit general purpose registers, a 32-bit instruction set, and the internal data bus is 32-bits wide.
So why was the Megadrive aggressively advertised as 16-bit?
Why would Sega not make a song and dance out of the fact that it had 32-bit parts?
We're getting to the Jaguar
So far we've just looked at a pair of admittedly very popular CPUs. We hopefully have enough understanding for us to move on to a larger architecture. And the Jaguars architecture is very complicated.
Up until now, it would appear that we've been defining our CPUs bit number as the data bus width. The 6502 had an 8-bit data bus, and nobody disagrees that this is an 8-bit CPU. The 68000 has a 16-bit data bus, and every system that we ever saw with it as the CPU claimed to be a 16-bit machine.
So, the Jaguar must have a 64-bit wide data bus, right?
Only not quite.
Yes, the Jaguar did have a 64-bit data bus. But not everything could take advantage of it. Let's break it down:
There are three processors in the Jaguar. This isn't unusual in itself; let's consider the Sega Megadrive again; it had the Motorola 68000 CPU, as well as a Zilog Z80, and a Yamaha YM7101 GPU. So three processors in a console is OK.
The first processor in the Jaguar is named Tom. Tom has 64 data pins, D0 to D63, and is connected to a 64-bit data bus. On this bus we find four 16-bit 256KB DRAM chips, providing a total of 2MB of RAM.
Tom also has 24 address pins (A0 through A23), the same as the 68k, so it can address up to 16MB. However, none of these pins are connected to the Jaguars RAM chips. At all. This is because Tom has an integrated DRAM controller, which addresses RAM through the MA0 through MA10 pins. Because there are 11 pins on this bus, it therefore has an 11-bit addressable range.
That makes sense, since 2MB is the maximum addressable with an 11-bit range, and we've already identified that the Jaguar has 2MB of RAM.
It's interesting that Atari made this design decision, since the it means that Tom can address this RAM independently of the rest of the system. However, there is a single, shared data bus. And since this data bus is 64-bit wide, and Toms DRAM controller can operate in 8, 16, 32 and 64 bit modes (although it always puts 64 bits of data on the bus, just padding it out with zeroes), it's potentially possible to saturate the data bus with a full 64-bits of data.
But what does Tom require a 64-bit data bus for?
Tom contains the Jaguars GPU. Although it's only a 32-bit unit, so that doesn't appear to be the reason.
There's also a 64-bit blitter on board Tom. It can be used to perform some graphical operations, such as Goraud shading and Z-Buffering, or to move or change chunks of memory really quickly, and independently of the other processors. Blitters were really popular in the 80s and early 90s, and could be found in a number of machines, including Atari's ST series, and the Commodore Amiga. And don't forget, this is a 64-bit component.
Tom also contains an Object Processor, which is used for video output, and although somewhat rudimentary, is very fast. It is also able to operate on 64-bit data at a time, similar to the blitter.
What else is using the 64-bit data bus, though?.
Here we find the second processor; Jerry. Jerry is a 32-bit DSP, and has a surprisingly similar instruction set to Tom. Jerry generates CD-quality (16-bit) audio. It is also connected to the controller ports. Jerry only has 32 data pins (D0 through D31), and even more curious, only has pins D0 through D15 actually connected to the data bus. Pins D16 through D31 are wired directly through a pair of resistor packs, so it can't access anything other than the lowest 16 bits of data on the bus, anyway. This is one reason why Toms DRAM controller can operate in modes smaller than 64-bit; if it loaded 64-bit data onto the bus that was intended for Jerry, Jerry wouldn't be able to access anything other than the first 16 bits anyway.
What about this third processor that I mentioned earlier?
Well, this is interesting... there's a Motorola 68000 CPU here. It's running at half of the clock speed of Tom and Jerry, but there it is. All 24 address pins are wired up, as are all 16 data pins. It's supposed to be operated as a system management processor.
But wait, we've already determined that the 68k can only be considered a 16-bit CPU, or a 32-bit CPU if we're feeling generous. So this definitely doesn't make the Jaguar a 64-bit machine. It's not even using different lines on the data bus to Jerry, which also only uses 24 of the available 64 on this bus. So it can't run in parallel. What a shame!
As a slight aside, the 68k processor in the Jaguar is a sore spot for a lot of fans of the system, as it was used by a lot of detractors to prove that the system was only a 16-bit machine. But the Megadrive had a Z80 in it, and it wasn't an 8-bit machine, so that's a ridiculous proof. That said, some developers opted to use the 68k as the primary CPU as it was familiar and easy, compared to the Jaguars otherwise complicated architecture, meaning that a lot of titles did not do the hardware justice.
The expansion connector
Atari referred to the cartridge slot as the expansion connector. This is most likely because it acts as a system expansion port, as well as just for inserting your game cartridges. For example, a CD-ROM expansion can be added to this slot, which allows a pass-through for cartridges.
This slot is connected internally to the expansion bus, which exposes some control lines for Tom, and Jerry to work with. The 68000 does not have access to the expansion bus at all. That makes sense, as the 68k does not have the pins available to do anything with this, anyway.
The expansion connector also connects to the data bus, so that the processors can read the contents of ROM, and to the address bus, in order to request a given memory location from ROM.
The expansion connector is wired up to 32 data lines, from D0 to D31, of which (if you recall), the first 16 are connected to the 68000 processor, and Jerry, while all 32 are connected to Tom. So we can read in 32-bits of data at a time from a ROM cartridge, or the CD-ROM expansion. Nothing 64-bit here.
It's also connected to the address bus lines A3 through A23. That's right, A0, A1 and A2 are NOT connected to the address bus. That gives us 20-bits of addressable space on a cartridge, or CD-ROM drive. That gives us only 1MB that we can address through this connector. Or does it?
Oh, no, wait... the first three go onto the expansion bus as MASKA0, MASKA1 and MASKA2. Tom is connected to these lines directly so that it can query the expansion connectors addresses directly, without interfering with the main address bus. That does mean that if Jerry or the 68000 want to access anything through the expansion connector, that they need Tom to do the addressing for them.
So, we have a 23-bit addressable space on the expansion connector, which is up to 8MB. Jaguar cartridges come in no more than 6MB flavours, so that's plenty. Drop an address line and we half the available space to 4MB, which is obviously too small, so this works well.
So is it 64-bit or not?
I told you this at the very start of the article; yes, no, and it doesn't even matter.
The Tom chip has a 64-bit wide data bus. The 8-bit 6502 CPU has an 8-bit data bus, and the 16-bit 68000 CPU has a 16-bit data bus. So yeah, it's a 64-bit machine. It even has a 64-bit blitter and a 64-bit object processor.
But the instruction set for both the Tom and Jerry RISC CPUs are 32-bit. The 6502 instruction set is 8-bit, and the 68000 instruction set is 32-bit. So no, it's a 32-bit machine. Right?
The Jaguar can only address 8MB of memory, which is a 23-bit address space, but the 8-bit 6502 can address 64KB of memory, which is 16-bit, and the 16-bit 68000 can address 16MB of memory, which is 24-bit... so that's clear as mud.
What about your modern PC? PCs in 2020 are all 64-bit, right? What does that mean? If we look at the Intel i9-10980XE CPU, launched not long before this article was originally written, it can address up to 256GB of RAM across 4 memory channels. That's a 38-bit address space. But the data bus? 64-bit.
This is a surprise to a lot of people, as the now defunct 32-bit PC CPUs could only address 4GB of RAM at a time, which makes sense, as that's the largest possible memory capacity for a 32-bit address space. But we've already identified (many times over) that the address space is not what we're talking about when we talk about a CPUs bits. If it was, then the latest Intel desktop CPUs would be considered 38-bit, not 64-bit.
What about a modern Intel CPUs instruction set? Well, because of backwards compatibility, they support 16, 32 and 64-bit instructions. And the registers? Again, for backwards compatibility, these CPUs have 16, 32 and 64-bit registers. Not only that, but they also have some 80-bit x87 registers for floating point operations, and 128-bit SSE registers. And that's just the CPU. Do you want to get into the PCI-Express bus? Or maybe your GPU?
The point is that it really doesn't matter.
If you compare the Jaguar to its 32-bit contemporaries, the Sony Playstation and Sega Saturn, it looks decidedly weak. Likewise, compare it to the Nintendo 64, and it looks vastly inferior. We haven't even compared it to modern machines like the Playstation 4, or Xbox One, which both employ 64-bit processors from AMD. It just doesn't mean anything when you're trying to work out how powerful a console is.
So yes, it's a 64-bit machine. It's also not a 64-bit machine. It's also a meaningless thing that some marketing people latched on to, similar to Sega and their Blast Processing hype around the Megadrive. Nobody can agree on what actually makes any given machine a specific bit, especially as computer architectures are complicated.
And really, I wrote this up because it's 2020 and people are STILL arguing about the Jaguar and this marketing, 27 years after it was launched.
So, that brings us to the end. I hope you've learned a little about how computers work, and what does (and doesn't) make a system a particular bit.
And remember, do the math, and nobody in their right mind actually cares if a console is 8, 16, 32 or 64-bit. It's all about the games, and the systems that I like best are clearly the best.