Why memory capacities are always in powers of two?

Discussion in 'Highly Technical' started by StrangerGuy, Mar 7, 2006.

  1. StrangerGuy

    StrangerGuy Diamond Member

    Joined:
    May 9, 2004
    Messages:
    8,315
    Likes Received:
    48
  2. Loading...

    Similar Threads - memory capacities powers Forum Date
    Old school N64 memory pack mod thread. Highly Technical Jun 19, 2016
    Page size in DDR2 and above memory Highly Technical Apr 22, 2016
    Memory Rank 4DRx4 Highly Technical Mar 30, 2016
    Your computer is running low on memory? Highly Technical Mar 5, 2016
    Is there way to figure out amp carrying capacity of a circuit? Highly Technical Mar 5, 2012

  3. Soccerman06

    Soccerman06 Diamond Member

    Joined:
    Jul 29, 2004
    Messages:
    5,825
    Likes Received:
    3
  4. SamurAchzar

    SamurAchzar Platinum Member

    Joined:
    Feb 15, 2006
    Messages:
    2,422
    Likes Received:
    0
    Probably due to addressing conecerns - as the addressing is done using binary coding (which means there are X address lines coming into the memory, each can be either ON or OFF), the address range is always a power of 2.



     
  5. TuxDave

    TuxDave Lifer

    Joined:
    Oct 8, 2002
    Messages:
    10,577
    Likes Received:
    3
    Not really sure why exactly. Maybe it has to do with the addresses being encoded in binary and putting as many cells as you can address so that you have a fully utilized decoder in the memory. I don't think there's a technical restriction on why it HAS to be a power of two.
     
  6. BrownTown

    BrownTown Diamond Member

    Joined:
    Dec 1, 2005
    Messages:
    5,315
    Likes Received:
    0
    Tehre are several reasons why sizes go up in powers of 2. First off the memory is adressed in binary, so in order to get larger memmories you need to ad another adress bit, which allows you to double the size of the memmory. Obviously it isnt nescecarry to do so, but it just makes more sense. Also, computer geeks always want things to be in multiples of 2. Even if there was no reason at all for memmory to double it probably would. Kinda like why process sizes get half the size each generation, there is nothing saying you have to do it that way, yet it seems everyone goes from 180>130>90>65>45>32>22nm, the onyl reason is that each time it gets half as big.
     
  7. Peter

    Peter Elite Member

    Joined:
    Oct 15, 1999
    Messages:
    9,640
    Likes Received:
    0
    RAM chips are organized in rows and columns, addressed by binary values. Making a bigger chip means adding a row or column address line - and that doubles the size of the chip.
     
  8. Braznor

    Braznor Diamond Member

    Joined:
    Oct 9, 2005
    Messages:
    3,695
    Likes Received:
    1
    Not always, certain computer manufacturers used to sell memory in odd sizes like 48 MB or so just to force the consumer to upgrade it from them alone
     
  9. Varun

    Varun Golden Member

    Joined:
    Aug 18, 2002
    Messages:
    1,161
    Likes Received:
    0
    Everything in a computer is in powers of 2, since the base unit is a bit with 2 values. The Row/Column addressing posts are correct. You add one bit you double the addressing.
     
  10. Peter

    Peter Elite Member

    Joined:
    Oct 15, 1999
    Messages:
    9,640
    Likes Received:
    0
    You can always have an "odd" total, in this case from 32- and 16-MB memory ranks. The individual RAM chip still has a capacity that is exactly a power of two.
     
  11. Braznor

    Braznor Diamond Member

    Joined:
    Oct 9, 2005
    Messages:
    3,695
    Likes Received:
    1
    Thats a given assumption.
     
  12. CTho9305

    CTho9305 Elite Member

    Joined:
    Jul 26, 2000
    Messages:
    9,214
    Likes Received:
    0
    In a banked memory, you'd want to use the upper bits of the address to select the bank, and the lower bits of the address to select an entry from the bank. If your bank size is not a power of two, however, this simple scheme would have problems. Consider a 48 byte bank size - you need 6 bits to address the 48 bytes, but if you have 2 banks, addresses 0110000 through 1000000 would need to somehow be mapped onto the second bank, and you can't just wire up the lower 6 address bits straight to each bank any more. This applies to actual data arrays within chips as well.