090909090909 :
does the 32 bit or 64 bit refer to the registers size? or data bus? or address bus?
64-bit is a very generic term. Its meaning is extremely context dependant. In general it refers to the width of the CPU's general purpose registers, but it can refer to much more than that.
When applied to the 86 family of microprocessors, it refers to CPUs that feature the AMD64 or Intel 64 microprocessor extensions. These extensions were added ~2005, first by AMD and by Intel shortly after. Logically, both extensions are nearly identical (the differences are relevant only to system programmers) and are collectively referred to as either x64, AMD64, or x86_64.
The 64 bit extensions adds a new operating mode to the CPU called
long mode. When enabled, the following changes occur relative to
protected mode which is the operating mode for legacy 32-bit code:
1. The number of addressable general purpose CPU registers is doubled from 8 to 16
2. The width of the general purpose CPU registers is doubled from 32-bits to 64-bits. New arithmetic instructions can operate on the full 64-bits, which greatly speeds up arithmetic operations on large numbers.
3. The number of addressable SIMD CPU registers is doubled from 8 to 16
4. The size of the virtual address space is extended from 32 bits to to 48 bits
5. Segmentation is made obsolete, paging is required
6. The No-Execute bit (hardware enforced data execution prevention) is mandatory
7. SSE and SSE2 Vector instructions are adopted into the core instruction set while x87 instructions are made obsolete. SSE3 and beyond are still considered optional
8. The virtual 8086 mode is removed. It is no longer possible to run real-mode code once the microprocessor is in long-mode. Real-mode programs can only be run through an emulator such as DOSBox.
Although not a feature of long mode, the maximum size of the physical address space on microprocessors that support AMD64/Intel 64 is extended from 36 bits to 52 bits