2

Dynamic RAM is denser than static RAM, but needs to be refreshed every few milliseconds to avoid losing data. How many milliseconds, exactly? If the answer has changed over time, then I'm interested in what it was on the RAM chips used in the seventies and eighties.

What prompted the question was that I was under the impression some computers used the video circuitry to do the refresh, which would suggest it sufficed to do it once per 60 Hz frame, which would be about 16 ms, but according to http://www.jagregory.com/abrash-black-book/

Each DRAM chip in the PC must be completely refreshed about once every four milliseconds in order to ensure the integrity of the data it stores.

Was 4 ms the typical figure for standard DRAM chips?

2
  • 3
    You could check the datasheets. The TMS4116, for instance. has a 2 ms refresh interval (pdf.datasheetcatalog.com/datasheets/700/237022_DS.pdf). Also, note that "using the video circuitry to do the refresh" does not automatically imply "doing one refresh per frame". It depends on which bits of the address are used for the row, and which for the column. Jan 18, 2021 at 9:24
  • 1
    As mentioned below in an answer, IBM PC 5150 uses about 66.3kHz timer rate to refresh 128 rows of memory in 1.93ms. IBM VGA does 3 refresh cycles per line in the blanking area, with a line rate of 31.47kHz to refresh 256 rows in 2.71ms.
    – Justme
    Jan 18, 2021 at 19:21

2 Answers 2

7

Was 4 ms the typical figure for standard DRAM chips?

Only starting with 128kbit and 256kbit chips. Many earlier chips (16kbit, 32kbit, 64kbit) and some 128kbit chips were documented as requiring a 2 ms refresh cycle; see these tables for details: 4116, 4132, 4164, 41128, 41256.

The fact that many computers used the video circuitry to handle DRAM refresh doesn’t mean that that refresh happened at the same rate as the video refresh. See What is DRAM refresh and why is the weird Apple II video memory layout affected by it? for a description of the Apple II’s implementation. In the 8-bit Ataris, DRAM refresh was handled by ANTIC, with a dedicated counter for that purpose; see the Atari 8-bit FAQ for details. Reenigne wrote a blog post explaining DRAM refresh on the IBM 5150 (not using the video circuitry).

4

About that video thing: Early chips have a 7bit refresh, so you have to access all rows in a 2ms frame. You could swap some address lines to achieve more (physical) rows access per cycle.

In an extreme case, you can swap A0-A6 and A7-A13 completely, so for linear access will be each byte stored in a totally different physical row. Et voila, you have a "free refresh" by design (and a lot of headaches, because it is very slow). So it is possible, but it needs some kind of trade-off.

See also: Why do Early DRAMs (e.g. 4116) have a negative Column Address Set-up Time?

4
  • The "free refresh" doesn't add any headaches to the memory system: usually it does the opposite by letting your video generator do the refresh. Nor is it any slower than regular naïve memory access where you don't know in advance the order in which you'll be accessing memory and so need to do the full setup for every access.
    – cjs
    Nov 9, 2021 at 0:11
  • Later DRAM devices supported page mode, which allowed you faster access in certain circumstances, but that was what now gave you headaches if you wanted to use it, since your system had to track whether it was accessing one or several bits in the row before changing to another row.
    – cjs
    Nov 9, 2021 at 0:12
  • @cjs: Looking at old data sheets, page mode has been available for a lot longer than devices have been using it, even though many 6502 systems could have benefited from the ability to perform two consecutive video fetches in each operation. If the VIC-II had been designed around DRAM with rows tied to A3-A10, and designed to work with color and character data in the upper and lower halves of a 2K bank (rather than using dedicated color RAM), it could have eliminated bad lines while shrinking the 40-character buffer RAM to eight by starting each text line 8 cycles early with fetches of...
    – supercat
    Aug 10 at 15:31
  • ...characters 0 and 8, 2 and 10, 4 and 12, and 6 and 16. Then fetch character 1 and 9, and shape data for characters 0 and 1, then characters 3 and 11 with shape for 2 and 3, etc. Such a design wouldn't fit the Max Machine at all, but if that hadn't been a consideration the C64 could probably have been way cooler.
    – supercat
    Aug 10 at 15:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .