What were wait-states, and why was it only an issue for PCs? Announcing the arrival of Valued...

How is an IPA symbol that lacks a name (e.g. ɲ) called?

Why did Israel vote against lifting the American embargo on Cuba?

What kind of equipment or other technology is necessary to photograph sprites (atmospheric phenomenon)

What helicopter has the most rotor blades?

Can gravitational waves pass through a black hole?

Compiling and throwing simple dynamic exceptions at runtime for JVM

What's the connection between Mr. Nancy and fried chicken?

Why aren't road bike wheels tiny?

Assertions In A Mock Callout Test

Im stuck and having trouble with ¬P ∨ Q Prove: P → Q

Why is one lightbulb in a string illuminated?

Is it OK if I do not take the receipt in Germany?

How to keep bees out of canned beverages?

Weaponising the Grasp-at-a-Distance spell

Sorting the characters in a utf-16 string in java

How was Lagrange appointed professor of mathematics so early?

How to create a command for the "strange m" symbol in latex?

How to ask rejected full-time candidates to apply to teach individual courses?

Suing a Police Officer Instead of the Police Department

Why doesn't the university give past final exams' answers?

What's the difference between using dependency injection with a container and using a service locator?

A German immigrant ancestor has a "Registration Affidavit of Alien Enemy" on file. What does that mean exactly?

Does Prince Arnaud cause someone holding the Princess to lose?

How to mute a string and play another at the same time



What were wait-states, and why was it only an issue for PCs?



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)What was Burst Mode on the 68030 and why didn't the A2630 support it?How did the IBM PC handle multiple physical devices serving memory at the same physical address?What was the first C compiler for the IBM PC?Z80 and video chip contending for random accessWas there ever any reason to wait 30 seconds to restart a c.1995 PC?What we commonly call PCs are in fact ATs, correct?Was photographic film ever used for data storage?Where are the authoritative specs for legacy PC/AT devices still in use in today's PCs?What specific technical advance(s) allowed PCs to play “Full-screen full-motion” video?What were the real competitors to the early IBM PC?IBM PC expansion card latency












5















PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.



Basically, the wait-states I am asking about are due to the main system DRAM being too slow for the CPU, so extra bus cycles were added to make up for this latency. This reduced the overall processing speed.
I'm not asking about cases where a CPU is blocked from accessing main system RAM by some peripheral doing DMA, for example. Obviously, that's a feature for improving performance.



But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.



What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?










share|improve this question




















  • 2





    Brian, this question is rather wide. It's almost like asking why TTL chips need current and why don't they use all the same. It might be a good idea to narrow it a bit down.

    – Raffzahn
    9 hours ago











  • Many processors have had some notion of variable memory timing that can be configured one way or another. Some dynamically, some by data driven configuration, others by simply hard-coding one specific timing. See, for example, retrocomputing.stackexchange.com/questions/9562/…

    – Erik Eidt
    9 hours ago
















5















PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.



Basically, the wait-states I am asking about are due to the main system DRAM being too slow for the CPU, so extra bus cycles were added to make up for this latency. This reduced the overall processing speed.
I'm not asking about cases where a CPU is blocked from accessing main system RAM by some peripheral doing DMA, for example. Obviously, that's a feature for improving performance.



But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.



What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?










share|improve this question




















  • 2





    Brian, this question is rather wide. It's almost like asking why TTL chips need current and why don't they use all the same. It might be a good idea to narrow it a bit down.

    – Raffzahn
    9 hours ago











  • Many processors have had some notion of variable memory timing that can be configured one way or another. Some dynamically, some by data driven configuration, others by simply hard-coding one specific timing. See, for example, retrocomputing.stackexchange.com/questions/9562/…

    – Erik Eidt
    9 hours ago














5












5








5








PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.



Basically, the wait-states I am asking about are due to the main system DRAM being too slow for the CPU, so extra bus cycles were added to make up for this latency. This reduced the overall processing speed.
I'm not asking about cases where a CPU is blocked from accessing main system RAM by some peripheral doing DMA, for example. Obviously, that's a feature for improving performance.



But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.



What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?










share|improve this question
















PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.



Basically, the wait-states I am asking about are due to the main system DRAM being too slow for the CPU, so extra bus cycles were added to make up for this latency. This reduced the overall processing speed.
I'm not asking about cases where a CPU is blocked from accessing main system RAM by some peripheral doing DMA, for example. Obviously, that's a feature for improving performance.



But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.



What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?







ibm-pc memory






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 8 hours ago







Brian H

















asked 9 hours ago









Brian HBrian H

18k67154




18k67154








  • 2





    Brian, this question is rather wide. It's almost like asking why TTL chips need current and why don't they use all the same. It might be a good idea to narrow it a bit down.

    – Raffzahn
    9 hours ago











  • Many processors have had some notion of variable memory timing that can be configured one way or another. Some dynamically, some by data driven configuration, others by simply hard-coding one specific timing. See, for example, retrocomputing.stackexchange.com/questions/9562/…

    – Erik Eidt
    9 hours ago














  • 2





    Brian, this question is rather wide. It's almost like asking why TTL chips need current and why don't they use all the same. It might be a good idea to narrow it a bit down.

    – Raffzahn
    9 hours ago











  • Many processors have had some notion of variable memory timing that can be configured one way or another. Some dynamically, some by data driven configuration, others by simply hard-coding one specific timing. See, for example, retrocomputing.stackexchange.com/questions/9562/…

    – Erik Eidt
    9 hours ago








2




2





Brian, this question is rather wide. It's almost like asking why TTL chips need current and why don't they use all the same. It might be a good idea to narrow it a bit down.

– Raffzahn
9 hours ago





Brian, this question is rather wide. It's almost like asking why TTL chips need current and why don't they use all the same. It might be a good idea to narrow it a bit down.

– Raffzahn
9 hours ago













Many processors have had some notion of variable memory timing that can be configured one way or another. Some dynamically, some by data driven configuration, others by simply hard-coding one specific timing. See, for example, retrocomputing.stackexchange.com/questions/9562/…

– Erik Eidt
9 hours ago





Many processors have had some notion of variable memory timing that can be configured one way or another. Some dynamically, some by data driven configuration, others by simply hard-coding one specific timing. See, for example, retrocomputing.stackexchange.com/questions/9562/…

– Erik Eidt
9 hours ago










4 Answers
4






active

oldest

votes


















9














It was an issue on all machines — wait states resolve any situation in which the part a processor needs a response from isn't yet ready to respond — but only in the commoditised world of the PC was it a variable and therefore worth putting in the advertising.



In the Atari ST, wait states are inserted if the 68000 tries to access RAM during a video slot (two of every four cycles), or when it accesses some peripherals (e.g. there is a fixed one-cycle delay for accessing the sound chip).



The Amiga differentiates chip RAM and fast RAM. Chip RAM is that shared with the coprocessors and in which the CPU may encounter wait states. Small Amigas like the unexpanded A600 have only chip RAM.



Conversely, on the PC processors scaled in processing speed much more widely, the underlying reasons for potential waits were much more variable, and one manufacturer would likely do a better job than another. So it warranted boasting about if your machine has a good number rather than a bad one.






share|improve this answer
























  • I was referring to wait states introduced by DRAM latency, not contention with DMA devices sharing the bus. I'll try to clarify...

    – Brian H
    8 hours ago











  • It wasn't an issue with all machines, but it was an issue which spread across many types of machines. On something like a VIC-20 or an Apple II, the memory system will always respond to a request by the time the CPU would be interested in the response. Conversely, on something like a 6502-based Nibbler arcade machine, ROM accesses were designed to have a wait state (although a machine used in competition had a broken wait-state circuit whose failure simply caused the game to run a little faster than normal, giving the player an unfair advantage).

    – supercat
    8 hours ago






  • 3





    There's an obvious reason for that, in that the Apple II and VIC-20 have CPUs running at 1MHz, while the RAM is faster. As such the CPU can access the RAM on without any wait states; it's even fast enough for the video hardware to have a go on alternate cycles usually without contention. Once you've got a CPU that's faster than its RAM, wait states are inevitable though.

    – Matthew Barber
    8 hours ago













  • There are small machines with wait states induced only by slow RAM — e.g. the Electron accesses ROM at 2Mhz but RAM at a max 1Mhz and forces delays to the CPU to deal with the latter. Does that count?

    – Tommy
    7 hours ago






  • 1





    Also: the sound chip example on the ST is exactly the same phenomena, I'd argue. There's no contention, just a memory-mapped area where the underlying device is slower than the processor, so the processor is made to wait.

    – Tommy
    5 hours ago



















5














The DRAM chips used for memory needed a certain memory access cycle length, for example 1000ns. Also CPUs needed several clock cycles to perform a memory cycle, so for example a 8086 could take 4 cycles to access memory. If the CPU is running at 5 MHz, the memory access takes only 800ns which is too fast for the memory. Therefore one wait state is needed to get 1000ns memory cycle. Lowering the CPU speed to 4 MHz would allow it to run with zero wait states. Basically wait states were needed because memory speeds were slower than what CPUs could access. Advertising does tell something about system performance. For example, if one system has 1000ns memories and another has 800ns memories, a 5 MHz 8086 is able to run at 0ws with faster memories and at 1ws with slower ones. In theory the 0ws machine can transfer data 25% more in same time than the 1ws machine can. Surely faster memories were more expensive so maybe it was important to advertise why two identical looking systems had a significant price difference.






share|improve this answer































    5














    Preface 1: The way it is asked, it's way to broad that any answer can make any sense. Especially making some assumtions at the same time as widening it across all different CPU memory interface technologies there where.



    Preface 2: Design decisions for wait state design and application is a topic for a whole course on system design. It's next to impossible to give a satisfying Answer to this in general within a single unspecific RC.SE question.






    PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.




    It looks like, at first sight, but looking close, systems without are more often than not the slower ones.




    Basically, the RAM was too slow so extra bus cycles were added to make up for this latency. That reduced the overall processing speed.




    No, not rally. It's way more complex than that, so it may be a helpful to restrict this to the core of wait state usage on IBM and compatible machines of the 80286 area where the question was most prominent and seams to be originated.



    To start with, a wait state isn't an issue of memory but of the CPU. It's the CPU design requiring memory access to be synchronized with the clock speed used. An 8086 class CPU always takes four clock cycles per memory access, while it is two with a 80286. For the following we go with the 80286, as it's a quite different timing than on the 8088.



    For an AT running at 6 MHz this two cycle structure would make a basic access time of 333ns per bus cycle, but the structure is a bit more complex. The first cycle is a setup cycle where all control signals are presented (called TS), while the second is called command cycle (TC) and contains the operation itself and handshaking. This cycle will be extended as long as there is no acknowledge from the memory system (called Ready). Intel added quite some nifty structure to enable the full use of these two cycles for memory operation, like address pipelining, which offers a stable address already before the first cycle. Using this requires non trivial circuitry.



    IBM did choose a more simple approach. The decoding waits for the raising edge of ALE, when all signals (status like direction and memory/IO) are valid, simplifying decoding a lot. ALE becomes valid a few ns after the first half of TS, reducing the time available for decoding and memory access to somewhat less than 250 ns. The AT was designed to run with 200 ns RAM access time, so already tight, especially when considering that RDY needs to be assigned by the memory system before the second half of TC, effectively reducing the timing to less than 133ns. Way to short.



    For the AT (5170 Type 139) IBM decided to be better safe than sorry, adding a wait state. In addition, it also made sure that access time for I/O cards would stay within the limits set by the PC. Equally important, with a wait state, they could be sure that there is no chance a less than perfect charge of RAMs would screw the quality. Considering that the AT was about three times faster than the PC, there was no need to take any risk.



    With the later PC-XT 286 (5162), with basically the same design (and the same 200 ns memory), IBM did go with zero wait states. Maybe they became more confident.



    Then again, it's as well possible that the whole system was already designed to run at 8 MHz from start on and has been only slowed down to 6 MHz for company policy reasons. In that case the wait state does make a lot more sense, as an 8 MHz design (as IBM did) can only run with 200 ns RAM by implying a wait state. Similar to keep the slots compatible. The difference between 6 MHz AT (type 139) and 8 MHz (type 239) is basically just the clock chip.



    Bottom line: It all comes down to design decisions. With a more sophisticated decoder circuitry 200 ns RAM can well work with a 8 MHz 80286 without wait states - as many other 80286 machines of the same time showed.



    Now, then there was the race to more MHz, cranking 80286 machines up from original 6/8 MHz way past 12 or 16 MHz. At that time there was no memory fast enough to support this speed. Even adding a more sophisticated decoding, as for example NEAT boards added, couldn't help at the higher end.



    It might be important to remember that memory access of the 8086 family is different from next to all previous or concurrent CPUs as only data access was synchronous. Code was read ahead of time by asynchronous BIU operation, resulting in way less unused cycles compared to like a 68k. Eventually the reason why Intel CPUs performed quite well in comparison.




    But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.




    Comparatively-priced is a more than vague term, considering that full fitted PC could well outprice high end workstations. And neither is clock speed an issue, as clock speed is only marginally related to memory speed. As mentioned before, it's all about memory access (and cycle) time. Other CPUs where hit by the same problem when clock speed did increase. A 68k used at minimum two cycles per access, resulting, which means that 200 ns is fine for a 8 MHz 68000 (assuming a simple decoding circuit). Anything faster than that will as well require wait states.




    What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?




    Because they where fricking slow :)) Considering RAM speed of the time it's obvious why even upper end machines, like a SUN 1 or 2 did run at 'only' 6 and 10 MHz. It wasn't until the 68020 based SUN 3 reached 15 MHz - enabled due the 68020's cache, as memory access was done with three wait states.



    Even many, many years (1992) later, Commodores Amiga 4000 (A3640 CPU card) used as well 3 wait states by default adapt the 25 MHz CPU to slower memory.






    share|improve this answer

































      0














      The PC machines where made as modifiable/expandable system so you can have different CPU, memory, peripherial configuration on per machine basis. That leads to problem with interfacing different speed busses, peripherials, ICs ... So wait states makes sense.



      If I recall older 8 bit machines like Z80 based ZX Spectrum, or i8080 based PMD did not have configurable wait states (but that does not mean they do not have wait states if you take a look at ULA in ZX it actively stops CPU clock ... which can be seen as a form of wait state). However on such old systems the memory was usually faster than the rest of the system and wait states where used for different than slow down reasons (like resolve sharing conflicts etc...)



      So when even a more recent and or complex system does not have any wait states configuration it does not mean it does not use them. It just suggest they are either set automatically or are non changeable limiting expandability. For example just compare the SETUP utility on a laptop and on a DESKTOP machines even on PC platform.



      LAPTOPs are not expandable so much so its very hard or even impossible to change its core parts meaning no need to change the wait states configuration and even if it does need to change its usually done by flashing the firmware instead of direct user configuration.



      If you want non PC example of wait states use simply look at AVR32 like AT32UC3 MCUs they have configurable SRAM wait state to slow down the memory interface in case the MCU core runs on higher clock than the internal SRAM speed. Unless you set it correctly prior to switching to higher speeds the system will be unstable and freeze or worse ...





      share
























        Your Answer








        StackExchange.ready(function() {
        var channelOptions = {
        tags: "".split(" "),
        id: "648"
        };
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function() {
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled) {
        StackExchange.using("snippets", function() {
        createEditor();
        });
        }
        else {
        createEditor();
        }
        });

        function createEditor() {
        StackExchange.prepareEditor({
        heartbeatType: 'answer',
        autoActivateHeartbeat: false,
        convertImagesToLinks: false,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: null,
        bindNavPrevention: true,
        postfix: "",
        imageUploader: {
        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        },
        noCode: true, onDemand: true,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        });


        }
        });














        draft saved

        draft discarded


















        StackExchange.ready(
        function () {
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f9779%2fwhat-were-wait-states-and-why-was-it-only-an-issue-for-pcs%23new-answer', 'question_page');
        }
        );

        Post as a guest















        Required, but never shown

























        4 Answers
        4






        active

        oldest

        votes








        4 Answers
        4






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        9














        It was an issue on all machines — wait states resolve any situation in which the part a processor needs a response from isn't yet ready to respond — but only in the commoditised world of the PC was it a variable and therefore worth putting in the advertising.



        In the Atari ST, wait states are inserted if the 68000 tries to access RAM during a video slot (two of every four cycles), or when it accesses some peripherals (e.g. there is a fixed one-cycle delay for accessing the sound chip).



        The Amiga differentiates chip RAM and fast RAM. Chip RAM is that shared with the coprocessors and in which the CPU may encounter wait states. Small Amigas like the unexpanded A600 have only chip RAM.



        Conversely, on the PC processors scaled in processing speed much more widely, the underlying reasons for potential waits were much more variable, and one manufacturer would likely do a better job than another. So it warranted boasting about if your machine has a good number rather than a bad one.






        share|improve this answer
























        • I was referring to wait states introduced by DRAM latency, not contention with DMA devices sharing the bus. I'll try to clarify...

          – Brian H
          8 hours ago











        • It wasn't an issue with all machines, but it was an issue which spread across many types of machines. On something like a VIC-20 or an Apple II, the memory system will always respond to a request by the time the CPU would be interested in the response. Conversely, on something like a 6502-based Nibbler arcade machine, ROM accesses were designed to have a wait state (although a machine used in competition had a broken wait-state circuit whose failure simply caused the game to run a little faster than normal, giving the player an unfair advantage).

          – supercat
          8 hours ago






        • 3





          There's an obvious reason for that, in that the Apple II and VIC-20 have CPUs running at 1MHz, while the RAM is faster. As such the CPU can access the RAM on without any wait states; it's even fast enough for the video hardware to have a go on alternate cycles usually without contention. Once you've got a CPU that's faster than its RAM, wait states are inevitable though.

          – Matthew Barber
          8 hours ago













        • There are small machines with wait states induced only by slow RAM — e.g. the Electron accesses ROM at 2Mhz but RAM at a max 1Mhz and forces delays to the CPU to deal with the latter. Does that count?

          – Tommy
          7 hours ago






        • 1





          Also: the sound chip example on the ST is exactly the same phenomena, I'd argue. There's no contention, just a memory-mapped area where the underlying device is slower than the processor, so the processor is made to wait.

          – Tommy
          5 hours ago
















        9














        It was an issue on all machines — wait states resolve any situation in which the part a processor needs a response from isn't yet ready to respond — but only in the commoditised world of the PC was it a variable and therefore worth putting in the advertising.



        In the Atari ST, wait states are inserted if the 68000 tries to access RAM during a video slot (two of every four cycles), or when it accesses some peripherals (e.g. there is a fixed one-cycle delay for accessing the sound chip).



        The Amiga differentiates chip RAM and fast RAM. Chip RAM is that shared with the coprocessors and in which the CPU may encounter wait states. Small Amigas like the unexpanded A600 have only chip RAM.



        Conversely, on the PC processors scaled in processing speed much more widely, the underlying reasons for potential waits were much more variable, and one manufacturer would likely do a better job than another. So it warranted boasting about if your machine has a good number rather than a bad one.






        share|improve this answer
























        • I was referring to wait states introduced by DRAM latency, not contention with DMA devices sharing the bus. I'll try to clarify...

          – Brian H
          8 hours ago











        • It wasn't an issue with all machines, but it was an issue which spread across many types of machines. On something like a VIC-20 or an Apple II, the memory system will always respond to a request by the time the CPU would be interested in the response. Conversely, on something like a 6502-based Nibbler arcade machine, ROM accesses were designed to have a wait state (although a machine used in competition had a broken wait-state circuit whose failure simply caused the game to run a little faster than normal, giving the player an unfair advantage).

          – supercat
          8 hours ago






        • 3





          There's an obvious reason for that, in that the Apple II and VIC-20 have CPUs running at 1MHz, while the RAM is faster. As such the CPU can access the RAM on without any wait states; it's even fast enough for the video hardware to have a go on alternate cycles usually without contention. Once you've got a CPU that's faster than its RAM, wait states are inevitable though.

          – Matthew Barber
          8 hours ago













        • There are small machines with wait states induced only by slow RAM — e.g. the Electron accesses ROM at 2Mhz but RAM at a max 1Mhz and forces delays to the CPU to deal with the latter. Does that count?

          – Tommy
          7 hours ago






        • 1





          Also: the sound chip example on the ST is exactly the same phenomena, I'd argue. There's no contention, just a memory-mapped area where the underlying device is slower than the processor, so the processor is made to wait.

          – Tommy
          5 hours ago














        9












        9








        9







        It was an issue on all machines — wait states resolve any situation in which the part a processor needs a response from isn't yet ready to respond — but only in the commoditised world of the PC was it a variable and therefore worth putting in the advertising.



        In the Atari ST, wait states are inserted if the 68000 tries to access RAM during a video slot (two of every four cycles), or when it accesses some peripherals (e.g. there is a fixed one-cycle delay for accessing the sound chip).



        The Amiga differentiates chip RAM and fast RAM. Chip RAM is that shared with the coprocessors and in which the CPU may encounter wait states. Small Amigas like the unexpanded A600 have only chip RAM.



        Conversely, on the PC processors scaled in processing speed much more widely, the underlying reasons for potential waits were much more variable, and one manufacturer would likely do a better job than another. So it warranted boasting about if your machine has a good number rather than a bad one.






        share|improve this answer













        It was an issue on all machines — wait states resolve any situation in which the part a processor needs a response from isn't yet ready to respond — but only in the commoditised world of the PC was it a variable and therefore worth putting in the advertising.



        In the Atari ST, wait states are inserted if the 68000 tries to access RAM during a video slot (two of every four cycles), or when it accesses some peripherals (e.g. there is a fixed one-cycle delay for accessing the sound chip).



        The Amiga differentiates chip RAM and fast RAM. Chip RAM is that shared with the coprocessors and in which the CPU may encounter wait states. Small Amigas like the unexpanded A600 have only chip RAM.



        Conversely, on the PC processors scaled in processing speed much more widely, the underlying reasons for potential waits were much more variable, and one manufacturer would likely do a better job than another. So it warranted boasting about if your machine has a good number rather than a bad one.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 8 hours ago









        TommyTommy

        16.3k14780




        16.3k14780













        • I was referring to wait states introduced by DRAM latency, not contention with DMA devices sharing the bus. I'll try to clarify...

          – Brian H
          8 hours ago











        • It wasn't an issue with all machines, but it was an issue which spread across many types of machines. On something like a VIC-20 or an Apple II, the memory system will always respond to a request by the time the CPU would be interested in the response. Conversely, on something like a 6502-based Nibbler arcade machine, ROM accesses were designed to have a wait state (although a machine used in competition had a broken wait-state circuit whose failure simply caused the game to run a little faster than normal, giving the player an unfair advantage).

          – supercat
          8 hours ago






        • 3





          There's an obvious reason for that, in that the Apple II and VIC-20 have CPUs running at 1MHz, while the RAM is faster. As such the CPU can access the RAM on without any wait states; it's even fast enough for the video hardware to have a go on alternate cycles usually without contention. Once you've got a CPU that's faster than its RAM, wait states are inevitable though.

          – Matthew Barber
          8 hours ago













        • There are small machines with wait states induced only by slow RAM — e.g. the Electron accesses ROM at 2Mhz but RAM at a max 1Mhz and forces delays to the CPU to deal with the latter. Does that count?

          – Tommy
          7 hours ago






        • 1





          Also: the sound chip example on the ST is exactly the same phenomena, I'd argue. There's no contention, just a memory-mapped area where the underlying device is slower than the processor, so the processor is made to wait.

          – Tommy
          5 hours ago



















        • I was referring to wait states introduced by DRAM latency, not contention with DMA devices sharing the bus. I'll try to clarify...

          – Brian H
          8 hours ago











        • It wasn't an issue with all machines, but it was an issue which spread across many types of machines. On something like a VIC-20 or an Apple II, the memory system will always respond to a request by the time the CPU would be interested in the response. Conversely, on something like a 6502-based Nibbler arcade machine, ROM accesses were designed to have a wait state (although a machine used in competition had a broken wait-state circuit whose failure simply caused the game to run a little faster than normal, giving the player an unfair advantage).

          – supercat
          8 hours ago






        • 3





          There's an obvious reason for that, in that the Apple II and VIC-20 have CPUs running at 1MHz, while the RAM is faster. As such the CPU can access the RAM on without any wait states; it's even fast enough for the video hardware to have a go on alternate cycles usually without contention. Once you've got a CPU that's faster than its RAM, wait states are inevitable though.

          – Matthew Barber
          8 hours ago













        • There are small machines with wait states induced only by slow RAM — e.g. the Electron accesses ROM at 2Mhz but RAM at a max 1Mhz and forces delays to the CPU to deal with the latter. Does that count?

          – Tommy
          7 hours ago






        • 1





          Also: the sound chip example on the ST is exactly the same phenomena, I'd argue. There's no contention, just a memory-mapped area where the underlying device is slower than the processor, so the processor is made to wait.

          – Tommy
          5 hours ago

















        I was referring to wait states introduced by DRAM latency, not contention with DMA devices sharing the bus. I'll try to clarify...

        – Brian H
        8 hours ago





        I was referring to wait states introduced by DRAM latency, not contention with DMA devices sharing the bus. I'll try to clarify...

        – Brian H
        8 hours ago













        It wasn't an issue with all machines, but it was an issue which spread across many types of machines. On something like a VIC-20 or an Apple II, the memory system will always respond to a request by the time the CPU would be interested in the response. Conversely, on something like a 6502-based Nibbler arcade machine, ROM accesses were designed to have a wait state (although a machine used in competition had a broken wait-state circuit whose failure simply caused the game to run a little faster than normal, giving the player an unfair advantage).

        – supercat
        8 hours ago





        It wasn't an issue with all machines, but it was an issue which spread across many types of machines. On something like a VIC-20 or an Apple II, the memory system will always respond to a request by the time the CPU would be interested in the response. Conversely, on something like a 6502-based Nibbler arcade machine, ROM accesses were designed to have a wait state (although a machine used in competition had a broken wait-state circuit whose failure simply caused the game to run a little faster than normal, giving the player an unfair advantage).

        – supercat
        8 hours ago




        3




        3





        There's an obvious reason for that, in that the Apple II and VIC-20 have CPUs running at 1MHz, while the RAM is faster. As such the CPU can access the RAM on without any wait states; it's even fast enough for the video hardware to have a go on alternate cycles usually without contention. Once you've got a CPU that's faster than its RAM, wait states are inevitable though.

        – Matthew Barber
        8 hours ago







        There's an obvious reason for that, in that the Apple II and VIC-20 have CPUs running at 1MHz, while the RAM is faster. As such the CPU can access the RAM on without any wait states; it's even fast enough for the video hardware to have a go on alternate cycles usually without contention. Once you've got a CPU that's faster than its RAM, wait states are inevitable though.

        – Matthew Barber
        8 hours ago















        There are small machines with wait states induced only by slow RAM — e.g. the Electron accesses ROM at 2Mhz but RAM at a max 1Mhz and forces delays to the CPU to deal with the latter. Does that count?

        – Tommy
        7 hours ago





        There are small machines with wait states induced only by slow RAM — e.g. the Electron accesses ROM at 2Mhz but RAM at a max 1Mhz and forces delays to the CPU to deal with the latter. Does that count?

        – Tommy
        7 hours ago




        1




        1





        Also: the sound chip example on the ST is exactly the same phenomena, I'd argue. There's no contention, just a memory-mapped area where the underlying device is slower than the processor, so the processor is made to wait.

        – Tommy
        5 hours ago





        Also: the sound chip example on the ST is exactly the same phenomena, I'd argue. There's no contention, just a memory-mapped area where the underlying device is slower than the processor, so the processor is made to wait.

        – Tommy
        5 hours ago











        5














        The DRAM chips used for memory needed a certain memory access cycle length, for example 1000ns. Also CPUs needed several clock cycles to perform a memory cycle, so for example a 8086 could take 4 cycles to access memory. If the CPU is running at 5 MHz, the memory access takes only 800ns which is too fast for the memory. Therefore one wait state is needed to get 1000ns memory cycle. Lowering the CPU speed to 4 MHz would allow it to run with zero wait states. Basically wait states were needed because memory speeds were slower than what CPUs could access. Advertising does tell something about system performance. For example, if one system has 1000ns memories and another has 800ns memories, a 5 MHz 8086 is able to run at 0ws with faster memories and at 1ws with slower ones. In theory the 0ws machine can transfer data 25% more in same time than the 1ws machine can. Surely faster memories were more expensive so maybe it was important to advertise why two identical looking systems had a significant price difference.






        share|improve this answer




























          5














          The DRAM chips used for memory needed a certain memory access cycle length, for example 1000ns. Also CPUs needed several clock cycles to perform a memory cycle, so for example a 8086 could take 4 cycles to access memory. If the CPU is running at 5 MHz, the memory access takes only 800ns which is too fast for the memory. Therefore one wait state is needed to get 1000ns memory cycle. Lowering the CPU speed to 4 MHz would allow it to run with zero wait states. Basically wait states were needed because memory speeds were slower than what CPUs could access. Advertising does tell something about system performance. For example, if one system has 1000ns memories and another has 800ns memories, a 5 MHz 8086 is able to run at 0ws with faster memories and at 1ws with slower ones. In theory the 0ws machine can transfer data 25% more in same time than the 1ws machine can. Surely faster memories were more expensive so maybe it was important to advertise why two identical looking systems had a significant price difference.






          share|improve this answer


























            5












            5








            5







            The DRAM chips used for memory needed a certain memory access cycle length, for example 1000ns. Also CPUs needed several clock cycles to perform a memory cycle, so for example a 8086 could take 4 cycles to access memory. If the CPU is running at 5 MHz, the memory access takes only 800ns which is too fast for the memory. Therefore one wait state is needed to get 1000ns memory cycle. Lowering the CPU speed to 4 MHz would allow it to run with zero wait states. Basically wait states were needed because memory speeds were slower than what CPUs could access. Advertising does tell something about system performance. For example, if one system has 1000ns memories and another has 800ns memories, a 5 MHz 8086 is able to run at 0ws with faster memories and at 1ws with slower ones. In theory the 0ws machine can transfer data 25% more in same time than the 1ws machine can. Surely faster memories were more expensive so maybe it was important to advertise why two identical looking systems had a significant price difference.






            share|improve this answer













            The DRAM chips used for memory needed a certain memory access cycle length, for example 1000ns. Also CPUs needed several clock cycles to perform a memory cycle, so for example a 8086 could take 4 cycles to access memory. If the CPU is running at 5 MHz, the memory access takes only 800ns which is too fast for the memory. Therefore one wait state is needed to get 1000ns memory cycle. Lowering the CPU speed to 4 MHz would allow it to run with zero wait states. Basically wait states were needed because memory speeds were slower than what CPUs could access. Advertising does tell something about system performance. For example, if one system has 1000ns memories and another has 800ns memories, a 5 MHz 8086 is able to run at 0ws with faster memories and at 1ws with slower ones. In theory the 0ws machine can transfer data 25% more in same time than the 1ws machine can. Surely faster memories were more expensive so maybe it was important to advertise why two identical looking systems had a significant price difference.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 8 hours ago









            JustmeJustme

            4573




            4573























                5














                Preface 1: The way it is asked, it's way to broad that any answer can make any sense. Especially making some assumtions at the same time as widening it across all different CPU memory interface technologies there where.



                Preface 2: Design decisions for wait state design and application is a topic for a whole course on system design. It's next to impossible to give a satisfying Answer to this in general within a single unspecific RC.SE question.






                PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.




                It looks like, at first sight, but looking close, systems without are more often than not the slower ones.




                Basically, the RAM was too slow so extra bus cycles were added to make up for this latency. That reduced the overall processing speed.




                No, not rally. It's way more complex than that, so it may be a helpful to restrict this to the core of wait state usage on IBM and compatible machines of the 80286 area where the question was most prominent and seams to be originated.



                To start with, a wait state isn't an issue of memory but of the CPU. It's the CPU design requiring memory access to be synchronized with the clock speed used. An 8086 class CPU always takes four clock cycles per memory access, while it is two with a 80286. For the following we go with the 80286, as it's a quite different timing than on the 8088.



                For an AT running at 6 MHz this two cycle structure would make a basic access time of 333ns per bus cycle, but the structure is a bit more complex. The first cycle is a setup cycle where all control signals are presented (called TS), while the second is called command cycle (TC) and contains the operation itself and handshaking. This cycle will be extended as long as there is no acknowledge from the memory system (called Ready). Intel added quite some nifty structure to enable the full use of these two cycles for memory operation, like address pipelining, which offers a stable address already before the first cycle. Using this requires non trivial circuitry.



                IBM did choose a more simple approach. The decoding waits for the raising edge of ALE, when all signals (status like direction and memory/IO) are valid, simplifying decoding a lot. ALE becomes valid a few ns after the first half of TS, reducing the time available for decoding and memory access to somewhat less than 250 ns. The AT was designed to run with 200 ns RAM access time, so already tight, especially when considering that RDY needs to be assigned by the memory system before the second half of TC, effectively reducing the timing to less than 133ns. Way to short.



                For the AT (5170 Type 139) IBM decided to be better safe than sorry, adding a wait state. In addition, it also made sure that access time for I/O cards would stay within the limits set by the PC. Equally important, with a wait state, they could be sure that there is no chance a less than perfect charge of RAMs would screw the quality. Considering that the AT was about three times faster than the PC, there was no need to take any risk.



                With the later PC-XT 286 (5162), with basically the same design (and the same 200 ns memory), IBM did go with zero wait states. Maybe they became more confident.



                Then again, it's as well possible that the whole system was already designed to run at 8 MHz from start on and has been only slowed down to 6 MHz for company policy reasons. In that case the wait state does make a lot more sense, as an 8 MHz design (as IBM did) can only run with 200 ns RAM by implying a wait state. Similar to keep the slots compatible. The difference between 6 MHz AT (type 139) and 8 MHz (type 239) is basically just the clock chip.



                Bottom line: It all comes down to design decisions. With a more sophisticated decoder circuitry 200 ns RAM can well work with a 8 MHz 80286 without wait states - as many other 80286 machines of the same time showed.



                Now, then there was the race to more MHz, cranking 80286 machines up from original 6/8 MHz way past 12 or 16 MHz. At that time there was no memory fast enough to support this speed. Even adding a more sophisticated decoding, as for example NEAT boards added, couldn't help at the higher end.



                It might be important to remember that memory access of the 8086 family is different from next to all previous or concurrent CPUs as only data access was synchronous. Code was read ahead of time by asynchronous BIU operation, resulting in way less unused cycles compared to like a 68k. Eventually the reason why Intel CPUs performed quite well in comparison.




                But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.




                Comparatively-priced is a more than vague term, considering that full fitted PC could well outprice high end workstations. And neither is clock speed an issue, as clock speed is only marginally related to memory speed. As mentioned before, it's all about memory access (and cycle) time. Other CPUs where hit by the same problem when clock speed did increase. A 68k used at minimum two cycles per access, resulting, which means that 200 ns is fine for a 8 MHz 68000 (assuming a simple decoding circuit). Anything faster than that will as well require wait states.




                What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?




                Because they where fricking slow :)) Considering RAM speed of the time it's obvious why even upper end machines, like a SUN 1 or 2 did run at 'only' 6 and 10 MHz. It wasn't until the 68020 based SUN 3 reached 15 MHz - enabled due the 68020's cache, as memory access was done with three wait states.



                Even many, many years (1992) later, Commodores Amiga 4000 (A3640 CPU card) used as well 3 wait states by default adapt the 25 MHz CPU to slower memory.






                share|improve this answer






























                  5














                  Preface 1: The way it is asked, it's way to broad that any answer can make any sense. Especially making some assumtions at the same time as widening it across all different CPU memory interface technologies there where.



                  Preface 2: Design decisions for wait state design and application is a topic for a whole course on system design. It's next to impossible to give a satisfying Answer to this in general within a single unspecific RC.SE question.






                  PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.




                  It looks like, at first sight, but looking close, systems without are more often than not the slower ones.




                  Basically, the RAM was too slow so extra bus cycles were added to make up for this latency. That reduced the overall processing speed.




                  No, not rally. It's way more complex than that, so it may be a helpful to restrict this to the core of wait state usage on IBM and compatible machines of the 80286 area where the question was most prominent and seams to be originated.



                  To start with, a wait state isn't an issue of memory but of the CPU. It's the CPU design requiring memory access to be synchronized with the clock speed used. An 8086 class CPU always takes four clock cycles per memory access, while it is two with a 80286. For the following we go with the 80286, as it's a quite different timing than on the 8088.



                  For an AT running at 6 MHz this two cycle structure would make a basic access time of 333ns per bus cycle, but the structure is a bit more complex. The first cycle is a setup cycle where all control signals are presented (called TS), while the second is called command cycle (TC) and contains the operation itself and handshaking. This cycle will be extended as long as there is no acknowledge from the memory system (called Ready). Intel added quite some nifty structure to enable the full use of these two cycles for memory operation, like address pipelining, which offers a stable address already before the first cycle. Using this requires non trivial circuitry.



                  IBM did choose a more simple approach. The decoding waits for the raising edge of ALE, when all signals (status like direction and memory/IO) are valid, simplifying decoding a lot. ALE becomes valid a few ns after the first half of TS, reducing the time available for decoding and memory access to somewhat less than 250 ns. The AT was designed to run with 200 ns RAM access time, so already tight, especially when considering that RDY needs to be assigned by the memory system before the second half of TC, effectively reducing the timing to less than 133ns. Way to short.



                  For the AT (5170 Type 139) IBM decided to be better safe than sorry, adding a wait state. In addition, it also made sure that access time for I/O cards would stay within the limits set by the PC. Equally important, with a wait state, they could be sure that there is no chance a less than perfect charge of RAMs would screw the quality. Considering that the AT was about three times faster than the PC, there was no need to take any risk.



                  With the later PC-XT 286 (5162), with basically the same design (and the same 200 ns memory), IBM did go with zero wait states. Maybe they became more confident.



                  Then again, it's as well possible that the whole system was already designed to run at 8 MHz from start on and has been only slowed down to 6 MHz for company policy reasons. In that case the wait state does make a lot more sense, as an 8 MHz design (as IBM did) can only run with 200 ns RAM by implying a wait state. Similar to keep the slots compatible. The difference between 6 MHz AT (type 139) and 8 MHz (type 239) is basically just the clock chip.



                  Bottom line: It all comes down to design decisions. With a more sophisticated decoder circuitry 200 ns RAM can well work with a 8 MHz 80286 without wait states - as many other 80286 machines of the same time showed.



                  Now, then there was the race to more MHz, cranking 80286 machines up from original 6/8 MHz way past 12 or 16 MHz. At that time there was no memory fast enough to support this speed. Even adding a more sophisticated decoding, as for example NEAT boards added, couldn't help at the higher end.



                  It might be important to remember that memory access of the 8086 family is different from next to all previous or concurrent CPUs as only data access was synchronous. Code was read ahead of time by asynchronous BIU operation, resulting in way less unused cycles compared to like a 68k. Eventually the reason why Intel CPUs performed quite well in comparison.




                  But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.




                  Comparatively-priced is a more than vague term, considering that full fitted PC could well outprice high end workstations. And neither is clock speed an issue, as clock speed is only marginally related to memory speed. As mentioned before, it's all about memory access (and cycle) time. Other CPUs where hit by the same problem when clock speed did increase. A 68k used at minimum two cycles per access, resulting, which means that 200 ns is fine for a 8 MHz 68000 (assuming a simple decoding circuit). Anything faster than that will as well require wait states.




                  What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?




                  Because they where fricking slow :)) Considering RAM speed of the time it's obvious why even upper end machines, like a SUN 1 or 2 did run at 'only' 6 and 10 MHz. It wasn't until the 68020 based SUN 3 reached 15 MHz - enabled due the 68020's cache, as memory access was done with three wait states.



                  Even many, many years (1992) later, Commodores Amiga 4000 (A3640 CPU card) used as well 3 wait states by default adapt the 25 MHz CPU to slower memory.






                  share|improve this answer




























                    5












                    5








                    5







                    Preface 1: The way it is asked, it's way to broad that any answer can make any sense. Especially making some assumtions at the same time as widening it across all different CPU memory interface technologies there where.



                    Preface 2: Design decisions for wait state design and application is a topic for a whole course on system design. It's next to impossible to give a satisfying Answer to this in general within a single unspecific RC.SE question.






                    PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.




                    It looks like, at first sight, but looking close, systems without are more often than not the slower ones.




                    Basically, the RAM was too slow so extra bus cycles were added to make up for this latency. That reduced the overall processing speed.




                    No, not rally. It's way more complex than that, so it may be a helpful to restrict this to the core of wait state usage on IBM and compatible machines of the 80286 area where the question was most prominent and seams to be originated.



                    To start with, a wait state isn't an issue of memory but of the CPU. It's the CPU design requiring memory access to be synchronized with the clock speed used. An 8086 class CPU always takes four clock cycles per memory access, while it is two with a 80286. For the following we go with the 80286, as it's a quite different timing than on the 8088.



                    For an AT running at 6 MHz this two cycle structure would make a basic access time of 333ns per bus cycle, but the structure is a bit more complex. The first cycle is a setup cycle where all control signals are presented (called TS), while the second is called command cycle (TC) and contains the operation itself and handshaking. This cycle will be extended as long as there is no acknowledge from the memory system (called Ready). Intel added quite some nifty structure to enable the full use of these two cycles for memory operation, like address pipelining, which offers a stable address already before the first cycle. Using this requires non trivial circuitry.



                    IBM did choose a more simple approach. The decoding waits for the raising edge of ALE, when all signals (status like direction and memory/IO) are valid, simplifying decoding a lot. ALE becomes valid a few ns after the first half of TS, reducing the time available for decoding and memory access to somewhat less than 250 ns. The AT was designed to run with 200 ns RAM access time, so already tight, especially when considering that RDY needs to be assigned by the memory system before the second half of TC, effectively reducing the timing to less than 133ns. Way to short.



                    For the AT (5170 Type 139) IBM decided to be better safe than sorry, adding a wait state. In addition, it also made sure that access time for I/O cards would stay within the limits set by the PC. Equally important, with a wait state, they could be sure that there is no chance a less than perfect charge of RAMs would screw the quality. Considering that the AT was about three times faster than the PC, there was no need to take any risk.



                    With the later PC-XT 286 (5162), with basically the same design (and the same 200 ns memory), IBM did go with zero wait states. Maybe they became more confident.



                    Then again, it's as well possible that the whole system was already designed to run at 8 MHz from start on and has been only slowed down to 6 MHz for company policy reasons. In that case the wait state does make a lot more sense, as an 8 MHz design (as IBM did) can only run with 200 ns RAM by implying a wait state. Similar to keep the slots compatible. The difference between 6 MHz AT (type 139) and 8 MHz (type 239) is basically just the clock chip.



                    Bottom line: It all comes down to design decisions. With a more sophisticated decoder circuitry 200 ns RAM can well work with a 8 MHz 80286 without wait states - as many other 80286 machines of the same time showed.



                    Now, then there was the race to more MHz, cranking 80286 machines up from original 6/8 MHz way past 12 or 16 MHz. At that time there was no memory fast enough to support this speed. Even adding a more sophisticated decoding, as for example NEAT boards added, couldn't help at the higher end.



                    It might be important to remember that memory access of the 8086 family is different from next to all previous or concurrent CPUs as only data access was synchronous. Code was read ahead of time by asynchronous BIU operation, resulting in way less unused cycles compared to like a 68k. Eventually the reason why Intel CPUs performed quite well in comparison.




                    But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.




                    Comparatively-priced is a more than vague term, considering that full fitted PC could well outprice high end workstations. And neither is clock speed an issue, as clock speed is only marginally related to memory speed. As mentioned before, it's all about memory access (and cycle) time. Other CPUs where hit by the same problem when clock speed did increase. A 68k used at minimum two cycles per access, resulting, which means that 200 ns is fine for a 8 MHz 68000 (assuming a simple decoding circuit). Anything faster than that will as well require wait states.




                    What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?




                    Because they where fricking slow :)) Considering RAM speed of the time it's obvious why even upper end machines, like a SUN 1 or 2 did run at 'only' 6 and 10 MHz. It wasn't until the 68020 based SUN 3 reached 15 MHz - enabled due the 68020's cache, as memory access was done with three wait states.



                    Even many, many years (1992) later, Commodores Amiga 4000 (A3640 CPU card) used as well 3 wait states by default adapt the 25 MHz CPU to slower memory.






                    share|improve this answer















                    Preface 1: The way it is asked, it's way to broad that any answer can make any sense. Especially making some assumtions at the same time as widening it across all different CPU memory interface technologies there where.



                    Preface 2: Design decisions for wait state design and application is a topic for a whole course on system design. It's next to impossible to give a satisfying Answer to this in general within a single unspecific RC.SE question.






                    PC compatibles in the 1980s were often advertised as having zero, one, two, or sometimes more "wait states". Zero wait states was the best.




                    It looks like, at first sight, but looking close, systems without are more often than not the slower ones.




                    Basically, the RAM was too slow so extra bus cycles were added to make up for this latency. That reduced the overall processing speed.




                    No, not rally. It's way more complex than that, so it may be a helpful to restrict this to the core of wait state usage on IBM and compatible machines of the 80286 area where the question was most prominent and seams to be originated.



                    To start with, a wait state isn't an issue of memory but of the CPU. It's the CPU design requiring memory access to be synchronized with the clock speed used. An 8086 class CPU always takes four clock cycles per memory access, while it is two with a 80286. For the following we go with the 80286, as it's a quite different timing than on the 8088.



                    For an AT running at 6 MHz this two cycle structure would make a basic access time of 333ns per bus cycle, but the structure is a bit more complex. The first cycle is a setup cycle where all control signals are presented (called TS), while the second is called command cycle (TC) and contains the operation itself and handshaking. This cycle will be extended as long as there is no acknowledge from the memory system (called Ready). Intel added quite some nifty structure to enable the full use of these two cycles for memory operation, like address pipelining, which offers a stable address already before the first cycle. Using this requires non trivial circuitry.



                    IBM did choose a more simple approach. The decoding waits for the raising edge of ALE, when all signals (status like direction and memory/IO) are valid, simplifying decoding a lot. ALE becomes valid a few ns after the first half of TS, reducing the time available for decoding and memory access to somewhat less than 250 ns. The AT was designed to run with 200 ns RAM access time, so already tight, especially when considering that RDY needs to be assigned by the memory system before the second half of TC, effectively reducing the timing to less than 133ns. Way to short.



                    For the AT (5170 Type 139) IBM decided to be better safe than sorry, adding a wait state. In addition, it also made sure that access time for I/O cards would stay within the limits set by the PC. Equally important, with a wait state, they could be sure that there is no chance a less than perfect charge of RAMs would screw the quality. Considering that the AT was about three times faster than the PC, there was no need to take any risk.



                    With the later PC-XT 286 (5162), with basically the same design (and the same 200 ns memory), IBM did go with zero wait states. Maybe they became more confident.



                    Then again, it's as well possible that the whole system was already designed to run at 8 MHz from start on and has been only slowed down to 6 MHz for company policy reasons. In that case the wait state does make a lot more sense, as an 8 MHz design (as IBM did) can only run with 200 ns RAM by implying a wait state. Similar to keep the slots compatible. The difference between 6 MHz AT (type 139) and 8 MHz (type 239) is basically just the clock chip.



                    Bottom line: It all comes down to design decisions. With a more sophisticated decoder circuitry 200 ns RAM can well work with a 8 MHz 80286 without wait states - as many other 80286 machines of the same time showed.



                    Now, then there was the race to more MHz, cranking 80286 machines up from original 6/8 MHz way past 12 or 16 MHz. At that time there was no memory fast enough to support this speed. Even adding a more sophisticated decoding, as for example NEAT boards added, couldn't help at the higher end.



                    It might be important to remember that memory access of the 8086 family is different from next to all previous or concurrent CPUs as only data access was synchronous. Code was read ahead of time by asynchronous BIU operation, resulting in way less unused cycles compared to like a 68k. Eventually the reason why Intel CPUs performed quite well in comparison.




                    But I don't recall this being an issue on comparatively-priced machines with 16 or 32-bit Motorola processors, and running at similar clock speeds.




                    Comparatively-priced is a more than vague term, considering that full fitted PC could well outprice high end workstations. And neither is clock speed an issue, as clock speed is only marginally related to memory speed. As mentioned before, it's all about memory access (and cycle) time. Other CPUs where hit by the same problem when clock speed did increase. A 68k used at minimum two cycles per access, resulting, which means that 200 ns is fine for a 8 MHz 68000 (assuming a simple decoding circuit). Anything faster than that will as well require wait states.




                    What was the cause of the wait states, precisely, and how come other low-cost home computers were able to avoid this performance problem?




                    Because they where fricking slow :)) Considering RAM speed of the time it's obvious why even upper end machines, like a SUN 1 or 2 did run at 'only' 6 and 10 MHz. It wasn't until the 68020 based SUN 3 reached 15 MHz - enabled due the 68020's cache, as memory access was done with three wait states.



                    Even many, many years (1992) later, Commodores Amiga 4000 (A3640 CPU card) used as well 3 wait states by default adapt the 25 MHz CPU to slower memory.







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited 6 hours ago

























                    answered 7 hours ago









                    RaffzahnRaffzahn

                    57.2k6139232




                    57.2k6139232























                        0














                        The PC machines where made as modifiable/expandable system so you can have different CPU, memory, peripherial configuration on per machine basis. That leads to problem with interfacing different speed busses, peripherials, ICs ... So wait states makes sense.



                        If I recall older 8 bit machines like Z80 based ZX Spectrum, or i8080 based PMD did not have configurable wait states (but that does not mean they do not have wait states if you take a look at ULA in ZX it actively stops CPU clock ... which can be seen as a form of wait state). However on such old systems the memory was usually faster than the rest of the system and wait states where used for different than slow down reasons (like resolve sharing conflicts etc...)



                        So when even a more recent and or complex system does not have any wait states configuration it does not mean it does not use them. It just suggest they are either set automatically or are non changeable limiting expandability. For example just compare the SETUP utility on a laptop and on a DESKTOP machines even on PC platform.



                        LAPTOPs are not expandable so much so its very hard or even impossible to change its core parts meaning no need to change the wait states configuration and even if it does need to change its usually done by flashing the firmware instead of direct user configuration.



                        If you want non PC example of wait states use simply look at AVR32 like AT32UC3 MCUs they have configurable SRAM wait state to slow down the memory interface in case the MCU core runs on higher clock than the internal SRAM speed. Unless you set it correctly prior to switching to higher speeds the system will be unstable and freeze or worse ...





                        share




























                          0














                          The PC machines where made as modifiable/expandable system so you can have different CPU, memory, peripherial configuration on per machine basis. That leads to problem with interfacing different speed busses, peripherials, ICs ... So wait states makes sense.



                          If I recall older 8 bit machines like Z80 based ZX Spectrum, or i8080 based PMD did not have configurable wait states (but that does not mean they do not have wait states if you take a look at ULA in ZX it actively stops CPU clock ... which can be seen as a form of wait state). However on such old systems the memory was usually faster than the rest of the system and wait states where used for different than slow down reasons (like resolve sharing conflicts etc...)



                          So when even a more recent and or complex system does not have any wait states configuration it does not mean it does not use them. It just suggest they are either set automatically or are non changeable limiting expandability. For example just compare the SETUP utility on a laptop and on a DESKTOP machines even on PC platform.



                          LAPTOPs are not expandable so much so its very hard or even impossible to change its core parts meaning no need to change the wait states configuration and even if it does need to change its usually done by flashing the firmware instead of direct user configuration.



                          If you want non PC example of wait states use simply look at AVR32 like AT32UC3 MCUs they have configurable SRAM wait state to slow down the memory interface in case the MCU core runs on higher clock than the internal SRAM speed. Unless you set it correctly prior to switching to higher speeds the system will be unstable and freeze or worse ...





                          share


























                            0












                            0








                            0







                            The PC machines where made as modifiable/expandable system so you can have different CPU, memory, peripherial configuration on per machine basis. That leads to problem with interfacing different speed busses, peripherials, ICs ... So wait states makes sense.



                            If I recall older 8 bit machines like Z80 based ZX Spectrum, or i8080 based PMD did not have configurable wait states (but that does not mean they do not have wait states if you take a look at ULA in ZX it actively stops CPU clock ... which can be seen as a form of wait state). However on such old systems the memory was usually faster than the rest of the system and wait states where used for different than slow down reasons (like resolve sharing conflicts etc...)



                            So when even a more recent and or complex system does not have any wait states configuration it does not mean it does not use them. It just suggest they are either set automatically or are non changeable limiting expandability. For example just compare the SETUP utility on a laptop and on a DESKTOP machines even on PC platform.



                            LAPTOPs are not expandable so much so its very hard or even impossible to change its core parts meaning no need to change the wait states configuration and even if it does need to change its usually done by flashing the firmware instead of direct user configuration.



                            If you want non PC example of wait states use simply look at AVR32 like AT32UC3 MCUs they have configurable SRAM wait state to slow down the memory interface in case the MCU core runs on higher clock than the internal SRAM speed. Unless you set it correctly prior to switching to higher speeds the system will be unstable and freeze or worse ...





                            share













                            The PC machines where made as modifiable/expandable system so you can have different CPU, memory, peripherial configuration on per machine basis. That leads to problem with interfacing different speed busses, peripherials, ICs ... So wait states makes sense.



                            If I recall older 8 bit machines like Z80 based ZX Spectrum, or i8080 based PMD did not have configurable wait states (but that does not mean they do not have wait states if you take a look at ULA in ZX it actively stops CPU clock ... which can be seen as a form of wait state). However on such old systems the memory was usually faster than the rest of the system and wait states where used for different than slow down reasons (like resolve sharing conflicts etc...)



                            So when even a more recent and or complex system does not have any wait states configuration it does not mean it does not use them. It just suggest they are either set automatically or are non changeable limiting expandability. For example just compare the SETUP utility on a laptop and on a DESKTOP machines even on PC platform.



                            LAPTOPs are not expandable so much so its very hard or even impossible to change its core parts meaning no need to change the wait states configuration and even if it does need to change its usually done by flashing the firmware instead of direct user configuration.



                            If you want non PC example of wait states use simply look at AVR32 like AT32UC3 MCUs they have configurable SRAM wait state to slow down the memory interface in case the MCU core runs on higher clock than the internal SRAM speed. Unless you set it correctly prior to switching to higher speeds the system will be unstable and freeze or worse ...






                            share











                            share


                            share










                            answered 8 mins ago









                            SpektreSpektre

                            3,178618




                            3,178618






























                                draft saved

                                draft discarded




















































                                Thanks for contributing an answer to Retrocomputing Stack Exchange!


                                • Please be sure to answer the question. Provide details and share your research!

                                But avoid



                                • Asking for help, clarification, or responding to other answers.

                                • Making statements based on opinion; back them up with references or personal experience.


                                To learn more, see our tips on writing great answers.




                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function () {
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f9779%2fwhat-were-wait-states-and-why-was-it-only-an-issue-for-pcs%23new-answer', 'question_page');
                                }
                                );

                                Post as a guest















                                Required, but never shown





















































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown

































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown







                                Popular posts from this blog

                                Why do type traits not work with types in namespace scope?What are POD types in C++?Why can templates only be...

                                Will tsunami waves travel forever if there was no land?Why do tsunami waves begin with the water flowing away...

                                Should I use Docker or LXD?How to cache (more) data on SSD/RAM to avoid spin up?Unable to get Windows File...