64 bit computing
64 bit CPU (Central Processing
Unit) is a computer processor with internal registers, holding and
processing individual pieces of information (integer numbers,
memory pointers, ...), up to 64 bits
long. The first microprocessor ever was 4 bit (Intel 4004), but it was soon replaced by
8 bit version (Intel 8008).
8 bit CPUs became widely popular and
numerous models appeared (Intel 8080, Zilog Z80, Motorola 6800,
MOS Technology 6502, ...) and they powered first truly personal
computers. In a chase for greater computing power and the ability
to access more memory 16 bit and
later 32 bit processors appeared,
some of them created as extension of existing architectures, some
designed from the scratch to be directly 16 or even 32 bit.
Continuous demand for more memory caused the 4 GB limit, allowed by 32 bit processors (2^32 = 4G) was exceeded
and a room for 64 bit processors
opened. And similarly, some of them were natural extension of
older 32 bit architectures, some of
them were newly designed as 64 bit.
But processor architectures have a tough life. They either
become successful and widely spread or die soon. Currently (2015)
only two architectures dominate—Intel
x86-64 and ARM v7/v8. Another MIPS architecture processors
(historically MIPS processors pioneered the RISC concepts and also
become the first 64 bit
microprocessors in the world) are trying to catch. All these
architectures are available in 64 bit
variants. And all evolved from their previous 32 bit versions, so they are able to run both
32 bit and 64 bit code.
64 bit operating system
64 bit operating system needs
64 bit CPU to run. While a purely
64 bit OS, requiring 64 bit applications only, could be designed, it is
almost impossible to succeed on the market. People need to run
existing applications, so a backward compatibility is a key to
success.
To achieve compatibility, both hardware (CPU) and
software (operating system) must support it. And all major
players do this (x64 and ARM, Windows and Android).
64 bit CPU can run both
32 bit and 64 bit operating systems and applications. If
32 bit OS is run, the whole system
acts as purely 32 bit, including
memory address space limitations. It is not possible to use any
64 bit piece of code, 64 bit applications do not work.
When 64 bit CPU runs
64 bit OS, it is possible to run
both 32 bit and 64 bit applications. So
64 bit Windows can run both
32 bit and 64 bit SIPS without any problems.
But there is one important limitation. It not possible to
mix 32 bit and 64 bit code in one process. One process is
either completely 32 bit or
completely 64 bit, including all
DLLs, drivers and other components. The same is true for the
operating system kernel—if it is
64 bit version, all device drivers
must be 64 bit,
too. Similarly drivers for user applications
(e.g. ASCOM camera drivers) must be 32 bit if the application is 32 bit (remember—majority of applications are still 32 bit), despite the application runs on
64 bit CPU and OS.
The fact that 32 bit and
64 bit code cannot be mixed and
64 bit code is always newly
translated/modified allowed CPU designers to more or less modify
the instruction set. Both AMD with x86-64 and ARM with v8 took
advantage of introduction of a new 64 bit mode and upgraded the respective
architectures. x64 somewhat reorganized register set, making it
more regular, and doubled number of registers (from 8 to 16). ARM
similarly removed conditional execution of all instructions and
used the saved space in the instruction word to address twice as
much registers (32 instead of 16). So it is not exaggeration to
say that 64 bit ARM v8 is a
completely new architecture, only similar to 32 bit ARM v7 (similarly like 16 bit Intel 8086 remotely resembled 8 bit Intel 8080).
|