Reverse-engineering the classic MK4116 16-kilobit DRAM chip
righto.com
righto.com
(To RAM, the order of address lines doesn't matter)
An excellent read as usual.
The RAM Pack itself was a nightmare. If it wobbled the computer would crash. I held mine on with blu-tack - lots of it. Every now and again I'd have to take it off and clean the contacts by rubbing the oxide layer off with an India rubber. It used to run quite hot too.
Despite the problems, the RAM pack was the best upgrade I had!
There are still bit flips due to cosmic rays but the rate is low enough that most people don't care. ECC memory can be used if errors are a problem.
More details on Wikipedia: https://en.wikipedia.org/wiki/Soft_error#Alpha_particles_fro...
I was in the service division at the time, and yes, it was a serious issue. However, if I recall correctly it was limited to the E10K. It was the flagship machine, so of course it got all the attention, but most customers didn't suffer from it.
The capacitors in modern DRAMs are deep trenches, rather than a simple polysilicon plate. The trenches are 3.6 micrometers deep while the feature size is 45 nanometers, so they are remarkably deep. See the photos here: https://chipworksrealchips.blogspot.com/2014/02/intels-e-dra...
Anyway I hope someplace archives these documentary articles!
Any idea how big the design team was? I would expect at least two but can imagine up to twenty people.
And wonder if the masks were manually prepped.
It wouldn't have been possible to make the masks for the 4K chip by hand because hand-cut masks wouldn't be accurate enough. The problem was that the sense amps need to distinguish tiny voltage differences. If you cut the sense lines by hand, they would be slightly different widths, enough to mess up the signals.
The conference paper on this memory chip was authored by Schroeder and Proebsting of Mostek, so there were two main designers. There must have been more people on the team, but I couldn't find the size.
https://www.computerhistory.org/revolution/digital-logic/12/...
https://www.cs.utexas.edu/~hunt/class/2016-spring/cs350c/doc...
They had a minicomputer with a hardware rasterizer driving a laser writing to photosensitive film. They had amazing throughput for the day.
One of the issues was temperature and humidity stability of the film. It would change dimensions with as little as 10% change in humidity.
The change was more than the resolution of the laser.
The Intel 8087 math coprocessor stored two bits per transistor in its microcode ROM. It used four transistor sizes / voltage levels. This was necessary to fit the microcode on the die. https://www.righto.com/2018/09/two-bits-per-transistor-high-...
I tend to like NMOS because of its compactness and simplicity (disadvantage is usually dissipating static power of course.)
But one thing I was left wondering was how was the refresh managed?
Was it just the act the reading/writing had the side effect of refreshing? Therefore the memory controller had to keep track of when & what was accessed?
It was much more simple than that.
A typical DRAM of the era had 128 rows (at least as externally visible; what's inside is up to the DRAM implementer).
So in a higher end system the memory controller, about every 15 microseconds, would increment a 7-bit binary counter. It then would command all the DRAMs to simultaneously do a refresh cycle with this specific row address. This refresh took priority over normal read and write.
No need to optimize refresh by skipping it for rows which had recently been accessed. Just blindly refresh all 128 rows in sequence.
Internally a 16k bit DRAM would have 128 rows and 128 columns. Each time a row is read, all 128 associated columns are read in parallel. Then the contents of the selected single column are output. That's what makes refresh work without consuming too much of the chips bandwidth. A refresh of a row results in all 128 columns of that row being refreshed.
It takes about 2000 microseconds to do 128 refreshes. That's often what the DRAM chip was specified for. In reality the chips could often retain content for a minute at room temperature. It was when operating at the limit of 70C that refresh every 2 milliseconds became close to necessary.
Some microprocessors of the era, such as the Z80, had an internal 7 bit counter. The Z80 could be easily set up to send this 7-bit counter out to the DRAM after every instruction fetch.
So a Z80 system did something like this:
fetch an 8-bit opcode
refresh the next 1 of 128 rows of DRAM
fetch additional instruction bytes
complete the instruction
Since a Z80 operated at about 2 MHz minimum and instructions completed in about 6 cycles, DRAM memory was being refeshed, once per instruction, at a much faster rate than the chips needed. There was no such thing as slow divide instructions. The worst case IIRC was about 12 or so cycles to complete an instruction.The only downside to this sort of refresh is in systems that have more than one word width's worth of chips. A normal read or write accessed a single word. Simple refresh accessed all DRAM chips in parallel. Much higher power consumption.
So, e.g. 16 K bytes of memory needed 8 DRAM chips. Whereas 64 K bytes of memory needed 32 DRAM chips. In a Z80 system, which read 8 bits at a time, only 8 chips would be active during normal read/write but all 32 chips would be active in refresh.
A DRAM chip that was idle consumed a few mW of power whereas a DRAM chip that was being accessed or refreshed consumed a few hundred mW of power. So in a large system (hundreds of chips) you couldn't take as simplistic an approach to refresh as the Z80 did.