Problem Detail: I was curious to know what limits the max RAM capacity for an OS while reading about microprocessors being 32-bit and 64-bit. I know that limit for 32-bit OS is 4GB and for 64-bit OS is 16 Exabytes, but my question is how do we get there? I found this calculation: $qquad 2^{32} = 4,294,967,296$ and $qquad frac{4,294,967,296}{1024 cdot 1024},mathrm{B} = 4,096, mathrm{MB} = 4, mathrm{GB}$. It’s different for 64-bit: $qquad 2^{64} = 18,446,744,073,709,551,616$ and $qquad frac{18,446,744,073,709,551,616}{1024 cdot 1024}mathrm{B} = 16,mathrm{EB}$. What I don’t understand is how the calculation of bits turned into bytes and reached the results 4GB and 16EXB?
Asked By : Neeraj
Answered By : Neeraj
- First of all, in computer architecture, 32-bit/64-bit computing is the use of processors that have datapath widths, integer size, and memory addresses widths of 32/64 bits (four/eight octets). Also, 32-bit/64-bit CPU and ALU architectures are those that are based on registers, address buses, or data buses of that size(due to design decisions that may differ in different CPU/OS).
- Secondly, there is a confusion that is created when calculating the maximum RAM capacity for 32/64 bit OS/microprocessor. The 32-bit/64-bit address/machine word is usually considered as containing a single byte word and not byte (e.g a byte word might be a floating point number of 32/64 bits depending on the architecture & a byte on the other hand is 8 bits) but since we do all our memory calculations in terms of bytes the result her too is in terms of bytes. Hence, bytes is the unit written where
1byte = 1 byteword = 1 address space/machine word So if we have 4,294,967,296 addresses that means we can address as much byte words and hence the total capacity of RAM in a 32-bit OS is 4GB, similarily for 64-bit OS the calculations are of addresses with one byteword each and later written in terms of bytes. I hope this should make it pretty clear. Thank you for your inputs and replies.
Best Answer from StackOverflow
Question Source : http://cs.stackexchange.com/questions/19619