16bit v. 32bit v. 64bit operating systems



What’s the difference, and will we one day have 128bit systems?

In: Technology

The bits typically refer to the size of registers in a CPU. Registers are like buckets inside a CPU that hold an integer value. 8-bit computers could store an 8-bit value (0-255) in a register, 16-bit CPUs operated on 16-bits at a time (0-65535), 64 bit computers have 64-bit registers. Newer x86 CPUs already have (vector) registers that are 128, 256 or 512-bits so we’re beyond 128-bits already, but the CPU itself isn’t considered a 128-bit processor.

There’s a bit of fuzziness as some CPUs (x86) are backwards compatible, so a 64-bit x86 CPU can still use 64, 32, 16 and 8-bit registers. 8-bit computers could still do 64-bit math using carry operations.

8-bit CPUs were things like the 6502 (Super Nintendo, Commodore 64, Atari 2600). Intel 8086 (IBM PC) were 16-bit, Motorola 68000 (original Macintosh, Amiga) were mixed 16/32, ARM is 32-bit (but can do 16/8 as well), etc.

Computer processors simply follow long recipes, and each line of the recipe is called an instruction. Instructions usually tells the processor to read a number from memory, add two numbers or store a number back into memory and similar.

umbNers are stored as bits in a computer. A computer with 16 bits allows numbers from 0 to 2^16=65535 to be handled and stored, while a 32 bit computer will handle and atore numbers 0 to 2^32 = 4294967295. This has implications for what kind of problems the computer can solve. Also, it has an implication of how large of a memory the computer can effectively use since to acces memory, the computer will use numbers to look up the data.

64 bit computers has amaximum memory size of 2305 petabytes. with W2 gigabytes being common and moores law in effect, we will need 128bit computers in not too many years given that the demand keeps up.

To really ELIF it: in a computer, data is passed around in big pipes. Some pipes are 16, some are 32, some are 64 bits wide.

One of the main reasons pipes have gotten bigger over the years is the bigger the pipes are, the more memory you can add to a computer. I can’t think of a way to ELIF that, but it has to do with the fact that you need more information to keep track of all the RAM out there. (The address space is a lot larger, so you need more information to find where your data is being stored in memory.)

128 may come some day but it’s a long way off because each time you double the size of the pipes, you can store way, way more memory.

When CPUs process an instruction such as “add” or “move” it needs to know where the number(s) that will be added or moved are located in memory. Therefore, every location in memory needs to be given some kind of identifier. Bytes are the smallest unit that pretty much all modern computers operate on, so every location a byte can be stored needs to be assigned an ID. The number of bits of the operating system/CPU is the number of bits that these IDs are. 32 bits can represent 4,294,967,296 numbers, which is why 32-bit Windows can’t make use of more than 4GB of RAM. 64 bits can represent 2.3 exabytes. So until we have computers that we’re putting that much RAM into, we won’t need a 128-bit system.

Whether a computer’s 16-bit, 32-bit or 64-bit can refer to a number of different concepts.

– Integer size: How big numbers computers can compute with. 16-bit numbers go up to thousands, 32-bit numbers go up to billions, 64-bit numbers go up to billions of billions. Most problems don’t need bigger than 64-bit numbers. So hardware integer size isn’t likely to go above 64-bit. (For the few problems that *do* need bigger numbers, mostly in pure mathematics and cryptography, you can just write software so it can use as many hardware-based integers as it needs to make an integer of any size.)

– Register width: How many bits a computer can compute with at once. CPU’s have some really wide registers these days (as big as 512 bits). So if you use this definition of “bits,” 512-bit computers are already here. Usually such big registers are *vector registers* meaning they represent a *sequence* of smaller numbers, for example a 512-bit register might represent 32 numbers of 16 bits each.

– Address width: Computers store data in memory. They use a pattern of bits called an *address* to uniquely identify a memory location. Just like a shipping warehouse might use a system of numbered bins, where the first 3 digits represent an aisle, the next digit’s a shelf, and the last 2 digits are a bin on the shelf. This warehouse could handle, at most, a million different products, since the numbering goes from 000000 to 999999. This seems like plenty now, but if the company ever has more than a million products, they’ll need to switch to a new numbering system with more digits. Which is a big job, since not only do the labels on the shelves need to be re-written, but the entire system for running the business will need to be re-done. Computer memory’s pretty similar. Remember the 32-bit number is limited to values in the billions? When computer systems started to have more than a couple billion bytes of memory, they needed a new numbering system for memory, and the OS had to support it. Billions of billions of bytes is a lot of bytes, so we won’t need to switch to 128-bit addresses anytime soon.