Memory Timings
To understand how timing works, let’s jump right in and have a look at a memory module. This is a DDR4 eight gigabyte memory module. On the memory module there should be a sticker that will tell you more information about the memory module.
The information on the sticker includes information like the memory type, the size, serial number and timing information. The information we are interested in is the timing information.
On the sticker there is the type of memory and the speed. In this case, the memory is DDR4 and runs at 3200MHz. The clock speed of the memory module gives you an idea of how fast it will run, but as we will see, there are other factors that will determine how fast the memory will be able to transfer data to and from the memory controller.
Also, on the sticker will be what is referred to as the memory timings. These timings determine how long it takes to complete certain functions on the memory module. On the memory module you will generally have a group of four, maybe five numbers. I will go into more detail what these numbers mean in just a moment. For the exam, it is unlikely that you will get a question asking directly about memory timings, but in a troubleshooting scenario you may get a question that relates to adjusting the memory timings. So, having a basic understanding of these will help you in the exam.
The last value that I am interested in is the voltage. The voltage itself has nothing to do with the timings, however if you start playing around with the timings you may also need to adjust the voltage. Before I have a look at the timings in more detail, I will first have a look at how the BIOS gets these timings from the memory module.
Serial Presence Detect (SPD)
Modern memory modules contain a small chip on them called the Serial Presence Detect or SPD chip. This chip contains the basic timing settings for the memory module. Manufacturers tend to be conservative with their timings to ensure the memory module works correctly in all computer systems.
The SPD chip may also contain enhanced performance profiles. These are a different set of memory timings which will give you better performance. The risk of course in using these profiles, is that it may reduce the stability of your computer system. Before I look at the timing settings, I will first have a look at how memory is laid out.
Memory Layout
The memory in the memory modules is essentially laid out into rows and columns. If you consider memory to be similar to a warehouse, where each shelf in the warehouse is at a different location and contains a fixed amount of storage. In this example, we will consider that each individual shelve contains four bits.
In order to get to the shelf, we have a scissor lift. To reach a row, we first need to move the scissor lift up to the required row. Once this is done, we next need to move the scissor lift across until we get to the shelf. Once at the shelf, we can access everything on the shelf, which in this case is four bits of data.
So, essentially there are two movements of the scissor lift required to access one shelf. One to raise the scissor lift to the correct height and a second to move it to the required row. You may be asking yourself, why could we not combine the movements into one? If you think of electrical circuits, you are essentially activating a circuit. In the first case this is the row and until the row is activated you cannot access any column.
When accessing any location in memory, two steps are required. One to select the row and once this is done, the second step is to access the column. Both take time to complete, so you have probably guessed by now, the time taken to select a row and column is found on the sticker of the memory module.
Timing Settings
Before I look at the timing settings, a quick reminder that it is very unlikely CompTIA will ask you a question on a specific timing. The question may give you a scenario where a computer is unstable and the answer may be related to changing the timing settings.
The settings shown here are the five common timing settings you may have on your memory modules. The last one is not present, which was the case in our example memory module. This is quite common with a lot of memory modules on the market.
The first setting is the CAS latency. This is the number of cycles that it takes to access data once a row is activated. So, if you remember our scissor lift, this is essentially how long the scissor lift takes to move left and right to the required position.
When accessing memory, it is not uncommon once a row is activated, that many columns in that row are accessed sequentially. For example, if you are accessing a block of memory, the block will be laid out in sequential order. So, essentially our scissor lift would be moving from left to right to access the block of data. Unlike the other settings where they can vary, this is an absolute value. This is basically an agreement between the memory module and memory controller that, in that number of cycles the data will be read. In our example memory, this will be 16.
The next setting is the number of cycles taken to access a particular row in the memory module. Essentially, the memory module needs to activate a particular row in order to access it. The memory module can only access one row at a time. This timing setting becomes important when the memory module changes rows.
The setting row recharge time is essentially how long the memory module will take to recharge its memory. Essentially each memory cell contains a capacitor that has a charge. As time goes by it loses its charge. If left to long, all the charge will be gone and the data will be lost. Think of it like a water tank with a hole in the bottom. If you don’t keep filling up the water tank, eventually there will be no more water in the tank, because it will have leaked out through the hole.
The row active time is how many cycles before a recharge is required. If you increase this amount, your memory modules will not be refreshed as much, however you increase the chance of memory loss.
The last setting is command rate. You won’t see this setting on all memory modules. This setting is essentially a delay before commands can be issued. This will be a number followed by T or N. Both mean the same thing, and the number that comes before this is a number of cycles. Your memory modules require this small delay to become more electrically stable before they are accessed.
Generally, I would not change the timing settings unless I had good reason to do so. If you want to get a little more performance from your computer, you could reduce the timing speeds but you risk data corruption. If you do decide to change the timing, the first place I would look at is the specifications of your memory modules.
Example Memory Module
In the case of my example memory module, you can see that the memory was tested at 3200MHz. You will also notice that the SPD speed is lower. The SPD speed is the speed the memory module will report to the BIOS that it should be run at. Essentially this means that the memory will run at a slower speed then what it was tested at. Running at a lower speed should hopefully make the memory more reliable.
In this example, the tested latency values are the same as what is printed on the sticker on the memory module. You can try and reduce these, however, this can be risky. Before I look at how to change the timing settings, I will first look at what the memory speed actually means.
DDR Data Rate
When looking at DDR memory, the manufacturer will provide a measurement defining how fast the memory module can transfer data. In our example this was 3200. DDR memory, or double data rate memory, gets its name because it can transfer twice as much data as non-DDR memory. This essentially means that the clock rate is half the data rate. So, for our example memory, the clock rate would be half of 3200 which is 1600.
To understand this better, consider before DDR you only had a single data rate. The timing signal generated has a high and low point. If you measure the same point on the timing signal, this will give you a clock cycle.
Single data rate will transfer data at the same point on the clock cycle. By contrast with double data rate, data will be transferred on both the highest and lowest points of the timing signal. Since it transfers data twice for each signal, this doubles the amount of data it can transfer in the same time period.
It is important to understand this, because some BIOS’s will have the memory clock rate listed and others will have the data rate listed. If you want to convert between the two, it is just a matter of dividing or multiplying by two.
We have looked at latency and also the speed the memory runs at. Both of these will have an effect on how fast our memory will work at. Let’s have a look at how we can make a decision about which memory modules on the market will give us the best performance.
Latency Formula
Now there are a lot of factors that go into how fast your memory will be. These include the type of application you are running. This formula will give you a rough guide to compare different types of memory modules.
The formula is CAS latency divided by RAM speed multiplied by 2000. We use 2000 rather than 1000 because DDR is double the speed.
If we again consider our example memory module. This memory module has a CAS latency of 16 and a RAM speed of 3200. Putting this into our formula gives us a result of 10 nanoseconds. This is only a rough estimate, but is essentially saying, it will take 10 nanoseconds to retrieve data from the memory module.
If I now compare this to another memory module on the market, and this memory module has a speed of 2666 and a CAS latency of 13. When I put these numbers into the formula, this gives us a result of 9.75 nanoseconds – a very small difference, but you can start to see that the true measure of your memory modules is determined by the speed and latency of the memory modules combined. Sometimes a memory module which has a faster clock speed will perform better, and at other times, a slower memory module with lower latency timings will perform better.
To end this video, I will change to one of my desktop computers and have a look at some of the memory settings
Demonstration
To start with, I will press F2 to enter the setup. Once in the setup, I will select “Advanced mode” in order to configure the memory timings. To get to the memory timings, I will next select the menu “OC Tweaker”. Your setup will most likely be different and thus your options will most likely be different. Some setups have limited options and you will generally find the more expensive motherboards will have more options.
To access the memory settings, I will next select the option “DRAM Configuration”. Once in DRAM configuration, I will next select the option “DRAM Tweaker”. This option displays all the memory profiles stored on the memory module.
If you remember back to the start of the video, there is a tiny chip (SPD) on modern memory modules that contains the memory settings and may also contain additional memory profiles.
This memory module has four memory profiles stored in the SPD. The first one is for a frequency of 2133MHz. You can see the latency settings are set to 15. You can see in the next two profiles, the speed decreases but with it the latency also decreases.
You can start to see that if you buy some memory with low latency, even if you run it at a lower speed you may get better results. Essentially, if the memory module runs at a slower speed, it will perform tasks faster. It is a combination of speed and latency that ultimately will determine how fast the memory module will run.
The last memory profile is the highest performing profile. It is designed to run at the highest frequency and the highest settings the memory was tested at. You will also notice that this profile has slightly higher voltage settings then the other memory profiles. When you start running at high speeds and reducing the latency you may need to increase the voltage. Increasing the voltage will cause the memory module to get hotter, thus increasing the risk of failure.
In this case, the computer has selected the first memory profile. To try and get some high performance, I will leave this profile selected, press OK and apply the changes.
Once the changes have been made, notice that the DRAM Frequency is still set to 2133 rather than 3200. To find out why, I will open the settings.
Notice that on this motherboard the setting only goes up to 2400. So, if your motherboard does not support the frequency of your memory, it will use a lower frequency. However, the setting I selected was designed for a higher frequency, so I will accept the highest frequency and next change the latency settings.
To start with, I will change the CAS latency. This is the time taken to retrieve data when a row on the memory module is activated. In this case, I will change the value from 16 to 15.
The next values are both the change row delay and recharge time. Change row is how long the memory module will take to change rows and recharge is how long it takes to recharge the memory module so it does not lose any data. In this case it is set to 18, so I will change it to 17.
The next setting is the time between recharges. Unlike the other values, for better performance you want to increase this value. The higher this value, the more data can be read from and written to the memory module before a refresh is required. In this case I will change it to 40.
The next setting is the command rate. I don’t recommend changing this setting as the RAM needs time to stabilize between commands and this value is quite small anyway. Even though I am showing you how to change these settings, I don’t recommend changing them from what the manufacturer recommends as it may cause stability issues with your computer.
I once was troubleshooting a computer that was crashing all the time due to the memory. I fixed the problem by increasing the memory timings to higher than what the manufacturer recommended. In rare cases like this, increasing the memory settings may increase the stability of a system. Decreasing them may improve performance, but you are taking the risk that something will go wrong.
These primary timings are generally the only ones that you will change, if you change them at all. If your setup supports it, you will also have access to secondary timings. These give you control of a lot more memory timings.
There may also be tertiary timing settings. These will change according to different motherboards and chipsets. You should not have a need to change the secondary or tertiary timings. Most memory manufacturers don’t provide any information about what the second and third level timings should be set to. Unless you’re overclocking your memory to win a competition, there should be no need to change these settings.
If you are trying to get the fastest memory possible, bragging rights or whatever the case may be, your setup could include pages and pages of memory settings. For the average user or even the power user, there should never ever be any need to change them. If you want to get a little more performance out of your memory, I would try changing the primary timing settings only.
If I now go back to the previous screen, when changing the memory settings, you may also need to change the voltage. This can be done by selecting “Voltage Configuration”. It is just a matter of selecting the voltage option and entering in the amount.
To test out my new settings, I will exit out of the setup, making sure that I save the changes. To test my settings, I have downloaded a copy of MemTest86 and put it on a USB stick. The computer is configured to boot from the USB stick. MemTest86 is a free memory testing program that will run a number of tests on your memory to make sure it works. I would recommend running a tool like this after making changes to your memory timings. This will hopefully pick up if the memory timings are stable. If you are having random crashes on your computer, tools like these are good for testing to see if the memory is causing the problem.
Once MemTest86 has loaded, I will make a change to the configuration. The only change I will make is to change the number of times the tests are run to one. By default, each test will be run four times. This takes a long time to complete. If you have the time you can do this, but in this case I just want to run a quick test to see if the memory settings are working.
The tests take a while to complete, so I will pause the video and return once they are complete.
You will notice that the test took 23 minutes and 38 seconds to complete. It would be good to have something to compare this with before I made the timing changes. Luckily for you I have some results that I ran earlier. Before the memory settings were changed, the test took 24 minutes and 18 seconds to complete. So, by doing some math’s you would see that this gives just over a 2% speed increase.
Reducing the settings even lower may increase the speed of your memory, but may also cause the computer to become unstable. If you do decide to change your settings, run tools like MemTest86 to test your configuration. Just remember that the speed is a combination of the speed of the memory and the latency. It comes down to finding a balance between these two in order to get the best results. Also remember that there are lots of components in a computer that make it work. Memory is just one, speeding the memory up may have little to no effect if other components are slowing it down.
In the real world, I want my computers to be stable. For this reason, I have never reduced any memory settings below what the manufacturer has recommended. Sometimes if the computer is having problems, I have increased the memory settings. Increasing the memory settings is generally not required, but if you are having problems with the memory it may help, however I would still recommend replacing the memory.
Summary
To end this video, I will do a quick summary of the major points. Your memory modules will have a sticker on them with the memory timings on. This will tell you how fast the memory will operate at.
Higher RAM frequency has a higher clock rate. This determines the maximum timing signal speed that can be used with the memory module.
Following this is the latency values. Lower latency values are faster. These settings determine how long it takes to perform certain actions – the quicker these actions are the faster the memory will perform. This however does not apply for row active time. This determines how often a recharge to the memory module will occur. Access to the memory module cannot occur while it is being recharged, so the higher this value the more accesses that can occur before a recharge occurs.
To get the best results, you need to find a balance between speed and latency. Once you find this balance you will get the best results. To get a quick comparison between memory modules, you can use the following formula. In the case of our example memory, this gave us a result of 10
nanoseconds.
This formula gives you a quick way to compare different memory modules on the market. Unfortunately, just looking at the clock speed won’t tell us how fast the memory module will operate at. We also need to consider the latency. Thus, don’t be fooled into buying the memory module with the highest clock speed.
End Screen
This concludes this video from ITFreeTraining on memory timings. I hope you have found this video useful and I look forward to seeing you in the next video from us. Until next time, thanks for watching.
References
“3D Model: Rigged – Scissors Lift” https://www.blendswap.com/blend/16656
Credits
Trainer: Austin Mason http://ITFreeTraining.com
Voice Talent: HP Lewis http://hplewis.com
Quality Assurance: Brett Batson http://www.pbb-proofreading.uk