-1

Not just "really back in the day", but even as late as "only a few years ago" (meaning 15-20 years), every time I started my PC, it would slowly "count through" the installed RAM, apparently doing some sort of check/verification.

This caused painfully slow boot times for seemingly no good reason.

But it was possible (perhaps only after year 1998 or something?) to turn this off in the BIOS settings, and then the computer started much faster.

It seems like a pointless and frustrating default, causing everyone except for "super-nerds" (those who ever looked into the BIOS settings) to believe that PCs were extremely sluggish and cumbersome to boot up.

Why did they do this "test"? If there were some error with the RAM (which never once happened to me on any PC I ever used), would it just refuse to boot? Wouldn't I notice this anyway while using it? I don't understand the basic purpose of doing this "diagnostics test" on every single boot, especially since it was apparently only performed on the RAM and no other part of the system.

0

3 Answers 3

2

Why did they do this "test"?

.1 No error checking Memory at the time did not have any error checking. It does now, if an error is found now it will create an exception. At the time, without error checking, things would go silently wrong. Hence checking every bit of memory (also see below).

.2 Lots of memory chips Computers typically had lots and lots of memory chips, increasing the chance of error. Each chip / connection has to be tested. Today a computer typically has a few, maybe 2 memory stick with builtin error checking. Memory checking from the CPU nowadays only needs to check if there is a memory stick, checking one or a few positions.

.3 Tradition This was how it was used on the "traditional" large system, so it basically was accepted as how things should be done.

3
  • 4
    Most computers nowadays have memory which doesn’t perform any error checking, unlike early PCs (which had parity checking). Commented Aug 27, 2021 at 19:02
  • @Stephen Kitt on the contrary, DDR4 and DDR5 typically have ECC on-chip - it’s (allegedly) there but you don’t get to see it from the outside.
    – Frog
    Commented Aug 27, 2021 at 20:08
  • 4
    On-die ECC in DDR4 and DDR5 isn’t the same as end-to-end ECC; while it can correct some errors, it can’t generate an exception, so the system as a whole doesn’t know when things go wrong. You still need an ECC-capable DRAM controller for the kind of memory checking you seem to be talking about in point 1. Again, memory in early PCs was capable of indicating parity errors (wired to a non-maskable interrupt). Commented Aug 27, 2021 at 20:50
2

It was not only about the memory itself, but also other required hardware.

For example, the first IBM PC model 5150 used a timer chip to periodically trigger a DMA chip to perform a memory refresh cycle. So it was not only about the memory chips.

If the memory was not good, it is possible that at some point you try to load an operating system and the code or data gets corrupted, and it is possible that the data you are supposed to read out from disk will accidentally get turned to a write to disk, or if you only want to write one byte to file it needs to read the whole sector, modify the one byte, and write the contents back to disk.

So you are lucky if it just hangs without losing or damaging any data, but there is a good chance it corrupts data and the damage propagates everywhere.

And the diagnostics is performed to every part of the system. The IBM PC did first test the CPU registers, then proceeded to items like timer chip, interrupt controller chip, DMA controller chip, the 8255 PPI chip, literally everything it can to make sure that if the system has an issue, it will be prevented from booting until problem is fixed.

1
  • 2
    Don't feed the troll.
    – Raffzahn
    Commented Aug 27, 2021 at 19:00
2

Diagnostics have changed

Modern machines have far more built-in diagnostic capability. The first couple of generations didn't even have any interactive setup pages - you set everything with dip switches and jumpers. As later machines added built-in Setup routines, it gradually became practical to include enhanced diagnostics as well, so a typical machine now (and for many years) has the ability to do both a short and a long memory test, along with many other diagnostic tests, on demand. In older machines you often didn't have any way to do a reliable test except for the automatic one on startup, unless you bought extra software/hardware to do the testing, which your average user would not do.

Memory has grown too fast

CPU speed and memory size have grown tremendously, but not exactly in synch. A typical machine today might have 8 Gig. RAM and run at 3 Ghz., which sounds pretty good compared to 640 K RAM and 4.77 Mhz. But while the new CPUs are working on that memory 32 bits or 64 bits at a time instead of the 8088's 8 bits at a time, that 3 Ghz. is the internal CPU speed and not the RAM speed. Multiple levels of cache are key to getting today's CPUs to run at 3 Ghz. Or even to run at 1 Ghz. In fact, while CPU speeds have, nominally, increased by a speed factor of 600 or more (actually a lot more because of wider internal bus and more complex instructions and built-in floating point, and multiple cores, etc.) and memory by a size factor of around 25,000 (16 Gig. for a high (but not super-high) end system for the last few years, compared to the max. size of 640 K in the early PC days), memory speed has only gone from on the order of 150ns to around 10ns or so. There are a bunch of different numbers involved in modern memory speed calculations, but put all these differences together and the result is that a slow test through 640 K would be interminable going through 16 Gig. You actually can still do that test - it's the "long" type of test in the improved built-in diagnostics. But start it and walk away for a while - you don't want to run it at every startup.

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