# Is this kinda sorta how computers work?

**URL:** <https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044>\
**Category:** Factual Questions\
**Created:** [November 9, 2010, 3:31pm UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044 "2010-11-09T15:31:08Z")\
**Posts on this page:** 7\
**Page:** 3

<div class="post-metadata">

**Author:** ![Indistinguishable](https://avatars.discourse-cdn.com/v4/letter/i/90ced4/32.png) [@Indistinguishable](https://boards.straightdope.com/u/Indistinguishable)\
**Post date:** [November 12, 2010, 7:00pm UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044/41 "2010-11-12T19:00:36Z")

</div>

> [@Voyager](#):
>
> I suppose that is true in a sense, but the way computers are implemented is by a whole bunch of small FSMs. Modern processors have hundreds of thousands of flip-flops, so considering it as one FSM is not very useful.

God help me, at first I thought you were joking about flying spaghetti monsters…

---

<div class="post-metadata">

**Author:** ![engineer\_comp\_geek](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/engineer_comp_geek/32/504_2.png) [@engineer\_comp\_geek](https://boards.straightdope.com/u/engineer_comp_geek)\
**Post date:** [November 12, 2010, 7:35pm UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044/42 "2010-11-12T19:35:02Z")

</div>

> [@Voyager](#):
>
> I suppose that is true in a sense, but the way computers are implemented is by a whole bunch of small FSMs. Modern processors have hundreds of thousands of flip-flops, so considering it as one FSM is not very useful.

Well, like I said, computers don’t actually function that way any more. But, if you look at how a simple CISC style machine worked way back when, it’s just a simple finite state machine that goes through a loop of states. Then you realize that a modern RISC architecture, while looking quite different, is just an unrolling of that loop so that each state in the CISC version now has its own dedicated hardware in the RISC version. I think it makes it a bit more obvious as to where the various pipeline stages of a RISC come from, but that’s just my opinion.

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [November 12, 2010, 8:53pm UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044/43 "2010-11-12T20:53:16Z")

</div>

> [@engineer\_comp\_geek](#):
>
> Well, like I said, computers don’t actually function that way any more. But, if you look at how a simple CISC style machine worked way back when, it’s just a simple finite state machine that goes through a loop of states. Then you realize that a modern RISC architecture, while looking quite different, is just an unrolling of that loop so that each state in the CISC version now has its own dedicated hardware in the RISC version. I think it makes it a bit more obvious as to where the various pipeline stages of a RISC come from, but that’s just my opinion.

How far back do you want to go? I wrote a simulator for an 8086 when it came out, and I don’t think an FSM version would have been too useful.  
Perhaps you are confusing architectural states, such as instruction fetch, instruction decode, instruction execution, with states in the FSM sense, which are the possible combinations of storage element values. In the latter sense, each combination of register values and program counter values represent new states, so you get an explosion even for very simple architectures.

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [November 12, 2010, 8:55pm UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044/44 "2010-11-12T20:55:21Z")

</div>

> [@Indistinguishable](#):
>
> God help me, at first I thought you were joking about flying spaghetti monsters…

Never thought about the overloading of the acronym. Though I have seen some spaghetti code in RTL.

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [November 12, 2010, 8:57pm UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044/45 "2010-11-12T20:57:45Z")

</div>

> [@TriPolar](#):
>
> Well, the conversation has taken a turn, this is now about how instructions turn into the internal operations in a processor. With micro-code, its just another turtle in the stack, a simpler processor executing simpler instructions to emulate the function of a more complex processor. But there is one turtle at the bottom, and he is a Rube Goldberg construction of lots of simple components that have mechanical analogs.

To add another turtle, there was a company called Nanodata which sold a machine which allowed nanoprogramming - you constructed your microinstructions out of nano-operations, and your instructions out of microoperations.

IIRC, one of my qual questions was about the utility of picoprogramming. The correct answer was that this was a bad idea. The market said that nanoprogramming was a bad idea also.

---

<div class="post-metadata">

**Author:** ![TriPolar](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/tripolar/32/3008_2.png) [@TriPolar](https://boards.straightdope.com/u/TriPolar)\
**Post date:** [November 12, 2010, 9:14pm UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044/46 "2010-11-12T21:14:07Z")

</div>

> [@Voyager](#):
>
> To add another turtle, there was a company called Nanodata which sold a machine which allowed nanoprogramming - you constructed your microinstructions out of nano-operations, and your instructions out of microoperations.
> 
> IIRC, one of my qual questions was about the utility of picoprogramming. The correct answer was that this was a bad idea. The market said that nanoprogramming was a bad idea also.

I remember that. It was about the time I decided to get out of hardware. Programmable logic sounded great, but the speed and density of Intel and Motorola processors was making it pointless. You could prototype something that wouldn’t have been economical to produce, and a stock product could do it faster from the outset.

What was the distinction between nano and pico programming?

---

<div class="post-metadata">

**Author:** ![Voyager](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/voyager/32/133_2.png) [@Voyager](https://boards.straightdope.com/u/Voyager)\
**Post date:** [November 13, 2010, 12:47am UTC](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044/47 "2010-11-13T00:47:11Z")

</div>

> [@TriPolar](#):
>
> I remember that. It was about the time I decided to get out of hardware. Programmable logic sounded great, but the speed and density of Intel and Motorola processors was making it pointless. You could prototype something that wouldn’t have been economical to produce, and a stock product could do it faster from the outset.

What really did it was the death of the minicomputer in favor of computers based around microprocessors. Microprogrammed machines were good in that the hardware implementation was easier at a time where things didn’t scale very well. In those days all CPUs were custom. When you could pop in a CPU bought as a commodity, everything changed. Computers today are a lot less diverse than they were back then.

The effect you cite killed the special purpose hardware engines, like simulation accelerators which were popular in the early 1980s. While you started with a speed advantage (at a high price) if you picked a standard computer route you’d get speed up for less money without even having to recompile most of the time.

The handwriting was on the wall in 1980, and when I got my PhD I went into another area, though I continued to write some papers and be involved in TC-Micro for another five years.

> [@](#):
>
> What was the distinction between nano and pico programming?

I don’t remember, since it was not a serious proposal. It was basically having control signals for much finer logical operations. It was expected that an architect could figure out what was meant without a lot of background.

[Previous page](https://boards.straightdope.com/t/is-this-kinda-sorta-how-computers-work/560044.md?page=2)
