Memory and RAM
It's not just on the motherboard
There are different types of memory that can be used, and typically there are found to be SDRAM (Synchronous Dynamic Random Access Memory) or DDR-RAM (Double Data Rate Random Access Memory). SDRAM is presently the most common, simply because it is very cheap and is produced in large quantities. This memory works by accessing one bit of data at the fall of every clock cycle.
DDR memory is a bit more complex. While SDRAM process one bit per-cycle at the fall of each clock cycle, DDR memory is able to process two (hence the name, Double Data Rate) by accessing at the rise and fall of every cycle. By doing this, the speed of the memory is theoretically doubled. However, it is worth noting that DDR memory typically has about 10% less efficiency that SDRAM, so it won't perform exactly double what SDRAM would at a similar effective clock speed.
Data Storage and Access
Earlier we discussed depth testing with Z values. The Z-buffer is where depth data is stored for each pixel. Just before writing a new pixel to the frame-buffer, the Z value of that pixel is compared to the Z value of whatever pixel might be in the same location. The values for all of these pixels are stored in the Z-buffer.
The color buffer is also stored in memory, which is where the actually scene is stored while being, and once rendered. Color buffer storage is typically broken between a back buffer and a front-buffer, when using double buffering. Double buffering happens when rendering takes place to the back buffer while the front buffer is what is being displayed on-screen. While this takes double the data storage, the advantage of such an implementation is that there are no visible screen updates.
If single buffering were to be used, there is potential to actually see the screen being redrawn (this can often be seen when vertical sync is disabled). With double buffering though, this isn't an issue as the next frame in the queue has already been rendered and is simply waiting for its turn on-screen. The basic process for this is as follows:
Write to back buffer while displaying front buffer -> flip front and back buffers -> render back buffer while displaying front buffer image