etc.
You've reminded us all of an important historical point (Justifying
the additional cross-post added above.)
In the days of core stores, reading was destructive and so a single
memory read cycle was actually read followed by write-back. This was why
the autoincrement and ISZ write-backs did not increase the
number of memory cycles needed to execute their associated
instructions because the write-back of an exisiting cycle was used
for the purpose, but it did mean that the Instruction Decoder part of
the CPU had to be tied in to the Memory Controller.
Wouldn't be true of today's semiconductor memories, where extra
cycles would be needed to achieve the same effect; something to
be borne in mind when attempting simulations.
Actually dynamic ram is destructive read and always has been. This is
because a bit of data is stored as a charge in a pretty leaky
capacitor. A static ram element requires at least two transistors and
a few resistors to make a limited flipflop and they draw power all the
time to maintain their state. The leaky capacitor is a lot smaller in
size so takes a lot less space on the chip allowing lots more of them
in the same space. It also uses power only during refresh and the
actual read or write operation. For DRAM the read operation
discharges the capacitor so that the data must be rewritten or it is
lost. These capacitors also leak out with time so a refresh cycle
within a certain amount of time is necessary. Early implementations
of DRAM all allowed for read/modify/write cycles similar to core
memory. I haven't looked at the way any of the modern memory
subsystems are implemented but it is unlikely that modern designers
put stuff like that in because none of the mass market machines would
use it. But internally there is a write back after every read and
occasionally there is a refresh cycle which will refresh a whole row
of bits in the chips.
Doug Ingraham
Rapid City, SD
(snip on core memory, destructive read, and read modify write cycles)
> Actually dynamic ram is destructive read and always has been. This is
> because a bit of data is stored as a charge in a pretty leaky
> capacitor. A static ram element requires at least two transistors and
> a few resistors to make a limited flipflop and they draw power all the
> time to maintain their state.
Well, CMOS SRAM cells mostly only draw power when changing state.
That is why they can be used as battery backed long term storage.
> The leaky capacitor is a lot smaller in
> size so takes a lot less space on the chip allowing lots more of them
> in the same space. It also uses power only during refresh and the
> actual read or write operation. For DRAM the read operation
> discharges the capacitor so that the data must be rewritten or it is
> lost. These capacitors also leak out with time so a refresh cycle
> within a certain amount of time is necessary. Early implementations
> of DRAM all allowed for read/modify/write cycles similar to core
> memory. I haven't looked at the way any of the modern memory
> subsystems are implemented but it is unlikely that modern designers
> put stuff like that in because none of the mass market machines would
> use it. But internally there is a write back after every read and
> occasionally there is a refresh cycle which will refresh a whole row
> of bits in the chips.
A read or refresh cycle reads a whole row out (or is it column,
I forget), and then writes it back. The cycles are now fast enough
that the gain from waiting for the write back wouldn't be very big.
Actually, with cache in between, the DRAM likely doesn't see a
read-modify-write cycle, anyway.
-- glen
I remember the refresh, but not what you say is destructive read.
There used to be a joke amongst amateur computer designers,
Q. What is the difference between static RAM and dynamic RAM?
A. Static works and dynamic doesn't
Yes. The write-back is transparent, I think, above
the chip level, so many are unaware of it. Writing back is
(needs to be?) done immediately after the read so there may
not be time to use it in a read-modify-write scenario.
An entire row needs to be written during this write-back,
not just the cell in the column that is eventually selected.
> This is because a bit of data is stored as a charge in
> a pretty leaky capacitor.
Almost 30 years ago, the charge in such a cell was about
200,000 electrons, IIRC. In a conversation with Thomas L.
Palfi, a key inventor of semiconductor memory,
I expressed surprise that this tiny charge could be detected
reliably. His answer? "You can detect a single electron
if you're smart enough!" What's the charge in a single
cell of one of today's dense DRAM's?
> A static ram element requires at least two transistors and
> a few resistors to make a limited flipflop and they draw
> power all the time to maintain their state.
In the 1970's, IIRC, static ram cells used a total of 4 or 5
transistors (you need gating in addition to the flip-flop itself).
There was a 3-transistor "pseudo-static" cell used
in what was then advertised as the World's Fastest NMOS RAM.
As glen points out, the magic of CMOS reduces power
consumption.
James Dow Allen
Somewhere I might still have the data sheet from some older DRAM
in the days when that might have been considered.
(snip)
> In the 1970's, IIRC, static ram cells used a total of 4 or 5
> transistors (you need gating in addition to the flip-flop itself).
> There was a 3-transistor "pseudo-static" cell used
> in what was then advertised as the World's Fastest NMOS RAM.
The two transistor FF requries pull-up resistors. CMOS would
need four. Then one or two for the gating.
-- glen
When you "hit each row" of the dynamic RAM chip, isn't that called
"refresh"???
--
+----------------------------------------+
| Charles and Francis Richmond |
| |
| plano dot net at aquaporin4 dot com |
+----------------------------------------+
Any read or write would refresh the row. A write cycle is a read into
the row buffer followed by a modify of the cell you were interested in
writing followed by the write back of the row. Reads are read of a
row into the row buffer followed by a write back. I was thinking the
Intel 1103, which was a wretched chip to work with, had a read/modify/
write cycle but I didn't find a data sheet in a quick web search. I
am not sure I have a databook that old anymore.
I remember looking at one machine that didnt have any refresh
hardware, it was done automagically when an interrupt occurred. They
would always execute enough instructions in the interrupt routine to
hit the first 128 bytes of memory which would refresh all the dram
because all chips were selected for read, it was just the one they
wanted to see that was gated onto the data bus so all cells got
refreshed on every timer interrupt. I remember thinking this was
clever but it consumed more power and of course slowed down
execution. Woe be you if you turned off the interrupts for too long.
I can't remember what this machine was.
This is pretty far off topic now but still interesting.
> In the 1970's, IIRC, static ram cells used a total of 4 or 5
> transistors (you need gating in addition to the flip-flop itself).
> There was a 3-transistor "pseudo-static" cell used
> in what was then advertised as the World's Fastest NMOS RAM.
Even today, 4 or 6 transistors are used per bit in most on-chip cache
memories.
John Savard
Caveat: My involvement with computer memories was in the
mid-1970's specifically. Details might now be *completely*
different, for all I know.
> > Yes. The write-back is transparent, I think, above
> > the chip level, so many are unaware of it. Writing back is
> > (needs to be?) done immediately after the read so there may
> > not be time to use it in a read-modify-write scenario.
> > An entire row needs to be written during this write-back,
> > not just the cell in the column that is eventually selected.
>
> When you "hit each row" of the dynamic RAM chip, isn't that called
> "refresh"???
At the chip level, refresh is same as read. You refresh
one row at a time. The reason refresh cycles consumed much
more power than reads was that *every* memory chip was
selected during refresh. (In those days, 1 Megabyte of memory
might comprise 32 sets of 72 chips each. I guess memories
are denser these days. :-)
More interesting than the refresh itself was how to prevent
the processor, designed for static memories, from accessing
memory during the refresh. For a *very* long-winded account
of an interesting bug associated with refresh on
IBM's 370/158 (AP or MP), see
http://fabpedigree.com/james/bug22.htm
James Dow Allen
ISTR that the Z80 did this by having a memory refresh cycle,
immediately after instruction fetch, during the decode time.
<snip>
In some cases, this (no r-m-w) is not a feature ;-).
/BAH
It seems that the MK4027, a popular 4K bit DRAM from not so long
ago, also has a read-modify-write timing diagram.
Somewhat easier to find than the 1103 data sheet, though I
think I had one of those not so long ago.
-- glen