5

According to https://en.wikipedia.org/wiki/Dynamic_random-access_memory#Page_mode_DRAM

Page mode DRAM is a minor modification to the first-generation DRAM IC interface which improved the performance of reads and writes to a row by avoiding the inefficiency of precharging and opening the same row repeatedly to access a different column.

Minor in implementation difficulty, but major in performance implication; faster multiword data transfer can substantially speed up many operations.

When did CPUs start being able to make use of this? The instruction timing tables I've seen for seventies and early eighties CPUs such as the 6502, Z80 and 68000 suggest they did not use page mode. On the other hand, I've found a few PDFs that indicate the 68030 did. I haven't been able to find anything definite on the 68020. (Apparently the video chip on the Sinclair Spectrum did use it, so even if the CPU didn't, the capability didn't go to waste.)

4

Outside of the world of microprocessors, there were plenty of CPUs that did this. Up until some point in the mid 80s, TTL-based multichip CPUs were generally faster than microprocessors and therefore the memory interface was often the bottleneck for such systems. The Xerox Alto, for example, had a processor that could theoretically run at a rate much faster than it actually did; it was slowed down to 5.88MHz because that was the fastest its RAM could supply instructions and data to it. I don't have an unambiguous indication that it uses page mode, but as the RAM bank uses 4116-2DC chips which are 150ns type chips (and therefore have a page mode cycle time of 170ns == 5.88MHz vs a full cycle time of 375ns == 2.67MHz) it seems pretty clear that the Alto was using them in page mode.

The Alto also used them arranged in 16-bit words, so the Alto's processor meets the requirements of the additional question you asked in the comments to Raffzahn's answer: it is apparently able to read a 16-bit word in a single cycle at 5.88MHz, which appears to be the rate at which its microcode was processed -- it used programmable microcode, so how user-level instructions were handled could vary depending on the software it was running.

For microprocessors, it was less necessary, because most of the well known ones were nowhere near this fast -- I suspect the 80286 was the first mainstream microprocessor that could actually use memory quickly enough to require it: running at 8MHz (the 10MHz and 12.5MHz variants were released later) it requires a memory access response time of 138.5ns to operate with zero wait states, and may perform another access one cycle later (i.e. 250ns after the initial access began). While by the time of its release in 1982 there were faster DRAM chips available that could have managed that, they were very expensive, so I imagine most implementations of 8MHz 80286 machines used page mode, at least for the first few years after the 286 was launched (although I'm pretty sure that by the time my 286-based PC was made in 1987 that at least some manufacturers were simplifying their systems by using the faster RAM that was becoming cheaper by then).

That said, even in micro systems, there were cases where you may have needed the extra performance you could get from using page mode, because the CPU isn't the only component of the system that needs to use memory. As mentioned, the ZX Spectrum uses page mode to fetch 16 pixels worth of information in the tight window that exists between possible successive uses of the bus by its CPU. It wouldn't have enough time to get them in a single gap otherwise, and only getting 8 pixels per gap would leave it taking too long to generate each scan line. More advanced graphical systems than the spectrum's could easily have tipped the balance into needing to use page mode for CPU accesses in order to steal enough bus time to produce a line. Other uses might include DMA for disk-based systems, coprocessors, blitters, or other similar alternative memory users.

A system I'm planning on building at some point would have two pluggable CPU boards (I'm planning on having both a Z80B and a second board that lets any CPU I want to experiment with be plugged into the shared bus) and a graphics system sharing access to a single 16-bit wide memory space. I'm hoping that by caching bytes adjacent to the last access locally to the CPU and using page mode where possible, all three of these users should be able to hit memory whenever they want with very little waiting. It'll be interesting to see if it works out that way...

  • The Question is not (primarily) abbout speed, but memory handling. The main missunderstanding many have is that a CPU has to have an understanding of internal workings of memory. But that's not the case. A CPU sets out a memory request, and the memory delivers. With the exception of simple (static) RAM this will happen in various timing. To handle this, the memory subsystem communicates with the CPU request. On a 68k for example by assering DTACK when ready. So not the CPU is responsible but the memory controler to integrate things like page mode. Its system speed vs. CPU speed. – Raffzahn Dec 30 '17 at 12:24
11

DRAM access in general and page mode (*1) in particular are not CPU features, but depend on the DRAM controller. No matter if build by discrete components (like mulitiplexers and counters) or dedicated IC. Pagemode DRAM can be used with any CPU if the controller (access logic) used supports its features. No matter if it's an 8080 or a 68020.

You won't find any CPU related information on such RAM access techniques until the point in time where memory controllers got integrated into CPUs. For x86 this might be the AMD K8 or Intel's Core-i7. All PC CPUs before did use separate memory controllers. Originally discrete logic, which slowly got moved into what later was known as 'Northbridge'. Beside x86, IBMs Power 5 and the Cell series got also integrated memory controllers around the same time.

So all the time between introduction of PM/FPM/EDO from ~1977(?) till ~2005, it was used without any CPU having an idea about its workings. Wasn't having separate technology domains a great idea?

  • As you say, fast page mode depends on the memory controller, which until relatively recently was a separate chip, but I would have thought it also depended on the CPU? A 68000, for example, is specified to take 4 clock cycles per word. Presumably a fast page mode memory controller might read a double word in e.g. 6 cycles, but that won't help if the CPU doesn't know about this, and ends up waiting the full 8 cycles anyway? – rwallace Dec 28 '17 at 2:07
  • 1
    Since when is a CPU clock in any way related to the internal workings of a RAM? A CPU puts out an address and waits for data. at the end of the cycle (or longer if some wait sate is triggered). It doesn't care how the RAM is accessed. It's the job of the designer of the DRAM access controller to create a circuitryy to link them up. And how it's done isn't necersarry speed. – Raffzahn Dec 28 '17 at 2:11
  • 1
    Sorry, that was supposed to read 1977 - already changed it. – Raffzahn Dec 28 '17 at 2:13
  • 1
    @rwallace A 68k CPU will not wait for a specified time until memory becomes valid - It will wait for a DTACK signal that tells it data bus signals are valid, i.e a memory controller. – tofro Dec 28 '17 at 2:17
  • @tofro And then there was DTACK Grounded :)) SCNR – Raffzahn Dec 28 '17 at 2:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.