Loading000 :
I am wondering what is a memory bank and what exactly it does? Does it effect ram in any way?
A memory bank is a functionally independent memory device that is constructed in parallel with other banks in order to increase the throughput of the memory architecture.
Many types of RAM and even some non-volatile storage use multiple memory banks. For the purposes of keeping things brief and not overly technical I'll detail how memory banks work in DDR3 and DDR4 SDRAM.
All DDR3 chips contain eight fully independent memory
banks tied to a shared IO interface. A 4 gigabit DDR3 die (the largest capacity produced) is actually constructed from eight 512 megabit memory banks. During operation, each rank has one row open from all of the rows in its own memory; a memory bank cannot open a row in another bank's memory. When a command is sent to the selected
rank, the
Bank Address is used to determine which memory bank the command is to be sent to. The chip's internal decoding circuitry takes care of the rest. Since the IO bus is shared, care must be taken to avoid sending commands to banks such that the results may overlap.
Consider the following:
A CPU contains a single dual-channel DDR3 SDRAM controller.
Each memory channel is populated by two DIMMs.
Each DIMM contains two ranks.
Each rank is constructed from 4 gigabit DDR3 SDRAM chips.
Now, lets do some math.
<2 DIMMs per channel> * <2 ranks per DIMM> = 4 ranks per channel
<4 ranks per channel> * <8 banks per rank> = 32 banks per channel. Since each bank has its own open row, more banks is better!
<8 kilobits per row> * <65,536 rows per bank> = 512 megabits per bank
<512 megabits per bank> * <8 banks per die> = 4 gigabits per die
<64 IO bits per rank> / <8 IO bits per die (in this example)> = 8 chips per rank
<8 chips per rank> * <1 die per chip> * <4 gigabits per die> = 32 gigabits per rank
<32 gigabits per rank> / <8 bits per byte> = 4 gigabytes per rank
<4 gigabytes per rank> * <2 ranks per DIMM> = 8 gigabytes per DIMM
<8 gigabytes per DIMM> * <2 DIMMs per channel> = 16 gigabytes per channel
<16 gigabytes per channel> * <2 channels> = 32 gigabytes installed
Since each bank has one row out of 65,536 open, the memory controller must know the precise state of each bank under its command. The greater the number of banks installed, the greater the likelihood that the memory controller will be able to reorder and schedule a command without having to open a new row on a bank, which is a time consuming task.
DDR4 works slightly differently. Whereas DDR3 has eight fully independent banks, DDR4 has four fully independent bank groups, with each bank group having four semi-independent banks within it. The principle and mathematics behind it are the same but DDR4 has additional timing constraints not present in DDR3.