Loading ...
Sorry, an error occurred while loading the content.

Re: Mechanical CPU Clock

Expand Messages
  • awasson2001
    Paul, that is a very concise explanation. I would like to say thanks for posting that. I ve been considering the question of whether the clock is in fact a CPU
    Message 1 of 10 , Apr 19 3:31 PM
    View Source
    • 0 Attachment
      Paul, that is a very concise explanation. I would like to say thanks for posting that. I've been considering the question of whether the clock is in fact a CPU as well.

      I am leaning towards accepting that it is a CPU because it if I accept the explanation provided with the 9 line program, it does have registers, it has a comparator and it can perform jumps and loops. I suppose what remains to be seen is if it can be programmed to perform more than one algorithm using the machine language provided and without modifying the machine.

      Great topic by the way.

      Cheers,
      Andrew


      --- In friendsofdigicomp@yahoogroups.com, "prp_teleport" <prp@...> wrote:
      >
      > Some more rigorous definitions than those you found on Wikipedia might help understand whether the clock is a CPU:
      >
      > Computer - In modern usage, a stored program general purpose digital electronic computer, defined not in terms of its construction but in terms of its capability. In particular, a computer is a machine that would be equivalent to a "Turing Machine" if it had infinite memory. (The "electronic" aspect is not optional in proper usage, but we can discard it for this discussion.)
      >
      > CPU - Central Processing Unit. Tranditionally, the "control" part of the computer, a computer consisting of control, memory and I/O. The CPU is the defining part of a computer and it is the part that must pass the Turing Machine equivalency test.
      >
      > Harvard Architecture - A computer where the instructions and data are in separate memory units, and the memory containing the instructions is read-only.
      >
      > Turing Machine - A rigorous pure mathematical construct proposed by the famous British mathemetician Alan Turing. There is an entire field of mathematics based on it. A Turing Machine is a very simple 1-bit device with an infinite memory. An important early result in the field is that you can construct (mathematically) a computing device in many different ways, and if it has the capabilities of a Turing Machine, then it can be proved that it has exactly the same capability as a Turing Machine, no more and no less. (Execution time is not modelled, so there is no notion of "faster" or "slower", only whether it is the same or not.) So, for instance, if you can show that your construct is able to emulate a Turing Machine, then you have proved that it is exactly the same as a Turing Machine as far as what you could do with it.
      >
      >
      > All computers, from the tiniest microcontrollers to the largest supercomputer, pass the Turing Machine equivalency test. There is the special case of the Harvard Architecture designs, typical for microcontrollers, where in addition to assuming the memory is infinite you also have to assume that, for the purposes of the test, the instruction and data memories are combined and uniformly accessible for read and write.
      >
      > The Mechanical Clock is not able to emulate a Turing Machine even if its registers were inifitely large, so its not a computer or a CPU in itself.
      >
      > You could argue that the Mechanical Clock is a Harvard Architecture machine, where the instructions are encoded in the structure of the pathways for the ball. But this structure is not similar enough to the data memory (the registers) to convincingly argue that they could be unified for the purposes of testing Turing Machine equivalency. So thats out.
      >
      > If it is possible to emulate a Turing Machine using the 6-instruction assembly language given, then you could argue that the instruction set combined with the laser cutter is a computer, and the clock is one possible program. However, I don't think the instruction set is sufficient (even though its larger than some minimal examples I've seen) because, among possibly other things, it lacks any kind of indirect or computed addressing mechanism. In any case, a single program is not a computer, so the Mechanical Clock is still not a CPU.
      >
      > The property of Turing Machine equivalence is an extremely important concept in Computer Science, and in my opinion cannot be discarded lightly because its so helpful in understanding how it is that computers can do what they do. So I'm uncomfortable seeing you call the Mechanical Clock a CPU, and more uncomfortable seeing it used to explain what a computer is. Its a fine way to show how logic works, and then to note that a CPU is made out of logic.
      >
      > I like the way you've combined a logical description (the instructions) with the visual and tactile implementation. You had a tutelage problem you wanted to solve, and came up with a clever approach, but it slightly missed the mark you were ultimately aiming for.
      >
      > Paul Pierce
      >
    • Lior Elazary
      Thanks for the great insight. I would “agree” with the definition that a CPU “must pass the Turing Machine equivalency test” for it is to be considered
      Message 2 of 10 , Apr 19 7:23 PM
      View Source
      • 0 Attachment
        Thanks for the great insight.

        I would “agree” with the definition
        that a CPU “must pass the Turing Machine equivalency test” for it
        is to be considered a CPU. But this machine, does passes the Turing
        Machine equivalence test (although it does not passes the “Turing
        Test” since it can not talk back :)
        However, I think you are on to
        something, which has to do with Universal Turing Machines.

        First whether this is a Turing machine:
        I say yes, and here is the proof.

        Once simple proof can be based on Church's Thesis which states that that
        any algorithm can be represented as a Turing machine. And since I
        have an algorithm for this clock, it is a Turing machine.

        A more formal definition: A Turing
        machine T has a set of 4-tuple (S,I,f,s0) (in its simplest form. I
        know there are other definition, but they could all be boiled down to
        this without a lose in generality). I got this from the book
        “Discrete Mathematics and its applications” page 776
        (http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0072899050). Yes, you made me brush up my old CS book.


        S is a fine set of states (in the
        clock, Register A and the DTD_FLAG)
        I is a finite set of alphabet (in the
        clock 0 and 1)
        f which is a partial function from SxI
        to SxI x {R,L} (this is the program of the clock implemented by the
        tracks and the flip-flops, I and L levers)
        s0, which is the starting state (in our
        case we can set register A and the DTD_FLAG to anything).

        The “tape” is implemented by the
        ball which reads register A and the DTD_FLAG and manipulates them
        accordingly.

        Note that I did not considered the
        other registers, because they are tied together with the buss, so their state is just the same. Also note that there is an optimization
        when the INCREMENT instruction and is actually an INCREMENT and CHECK
        together.
        Paul Pierce wrote: “However, I don't
        think the instruction set is sufficient “ (see more later)

        Note that in the Turing machine
        definition f can be any length (even 1) so you could have a 1
        instruction Turing machine (see 1 bit Turing machines).

        Therefore, this is a Turing machine.
        Note that a Turing machine does not require for the tape to change!!!

        However, I believe what you meant to
        prove is that this is not a Universal Turing Machine (UTM), which is how we
        should define a CPU (not just a Turing machine). A universal Turing
        machine is one that reads the set of instructions f from the tape.
        This will allow it to simulate an arbitrary Turing machine, and thus
        solve an array of problems. This is why the Harvard Architecture is a
        spatial case, since it has its program in a separate memory
        structure. So I would argue that his clock has an Harvard
        Architecture. Therefore, the only question remaining is whether this
        clock reads the program from memory, and how is this memory
        implemented.

        I argue that the program memory is
        implemented in the paths the ball takes, and is burned in using the
        laser as well as the configurations of the flip-flops, so its similar
        to burning the program on a ROM. (although I agree this is a far
        fetch, but just for the sake of discussion). Therefore, I could
        change the program of the clock by simply rotating on of the L levers
        or changing the T flip-flops to an L. I could also, remake the tracks
        of the C register, to check for a different number, or change the B
        register to increment instead of reset (by changing the L to
        flip-flops and reconfiguring the paths).
        Therefore I conclude that this is a
        Universal Turing machine, and thus a CPU.

        Paul Pierce wrote: “However, I don't
        think the instruction set is sufficient “
        However,
        this is not a complete proof (even if we buy the argument that the
        laser cutter can cut the paths). The reason is that a universal
        machine need be be able to calculate all possible functions which can
        be calculated. Therefore, we need to find if this clock can do that
        (even if we can reprogrammed it, by only using the instructions I
        have given), which I am not able to do at this point. However, See
        Wolfram's 2-state 3-symbol Turing machine
        (http://en.wikipedia.org/wiki/Wolfram%27s_2-state_3-symbol_Turing_machine)
        for what might be the smallest universal Turing machine, but the
        proof is difficult.

        Based on that, the I don't believe the DigiComp Ior II is not is a UTM, and threfore should not be called a computer either!


        However, even if you don't buy the
        argument that the program is read from memory (and I agree this is
        hard to swallow, even for me) or that is can not emulate a Universal Turing
        machine. I still stand by the fact that this is still useful in
        describing a CPU since it has all the major components of a CPU. just like the DigiComp.
        Therefore, it can help people understand what is inside a CPU and how
        a CPU works in a very broad way. Remember, this is for non
        computer-science people, and not for hardware designers trying to
        implement a useful CPU.



        ________________________________
        From: prp_teleport <prp@...>
        To: friendsofdigicomp@yahoogroups.com
        Sent: Thursday, April 19, 2012 2:50 PM
        Subject: Re: [Friends of DigiComp] Mechanical CPU Clock


         
        Some more rigorous definitions than those you found on Wikipedia might help understand whether the clock is a CPU:

        Computer - In modern usage, a stored program general purpose digital electronic computer, defined not in terms of its construction but in terms of its capability. In particular, a computer is a machine that would be equivalent to a "Turing Machine" if it had infinite memory. (The "electronic" aspect is not optional in proper usage, but we can discard it for this discussion.)

        CPU - Central Processing Unit. Tranditionally, the "control" part of the computer, a computer consisting of control, memory and I/O. The CPU is the defining part of a computer and it is the part that must pass the Turing Machine equivalency test.

        Harvard Architecture - A computer where the instructions and data are in separate memory units, and the memory containing the instructions is read-only.

        Turing Machine - A rigorous pure mathematical construct proposed by the famous British mathemetician Alan Turing. There is an entire field of mathematics based on it. A Turing Machine is a very simple 1-bit device with an infinite memory. An important early result in the field is that you can construct (mathematically) a computing device in many different ways, and if it has the capabilities of a Turing Machine, then it can be proved that it has exactly the same capability as a Turing Machine, no more and no less. (Execution time is not modelled, so there is no notion of "faster" or "slower", only whether it is the same or not.) So, for instance, if you can show that your construct is able to emulate a Turing Machine, then you have proved that it is exactly the same as a Turing Machine as far as what you could do with it.

        All computers, from the tiniest microcontrollers to the largest supercomputer, pass the Turing Machine equivalency test. There is the special case of the Harvard Architecture designs, typical for microcontrollers, where in addition to assuming the memory is infinite you also have to assume that, for the purposes of the test, the instruction and data memories are combined and uniformly accessible for read and write.

        The Mechanical Clock is not able to emulate a Turing Machine even if its registers were inifitely large, so its not a computer or a CPU in itself.

        You could argue that the Mechanical Clock is a Harvard Architecture machine, where the instructions are encoded in the structure of the pathways for the ball. But this structure is not similar enough to the data memory (the registers) to convincingly argue that they could be unified for the purposes of testing Turing Machine equivalency. So thats out.

        If it is possible to emulate a Turing Machine using the 6-instruction assembly language given, then you could argue that the instruction set combined with the laser cutter is a computer, and the clock is one possible program. However, I don't think the instruction set is sufficient (even though its larger than some minimal examples I've seen) because, among possibly other things, it lacks any kind of indirect or computed addressing mechanism. In any case, a single program is not a computer, so the Mechanical Clock is still not a CPU.

        The property of Turing Machine equivalence is an extremely important concept in Computer Science, and in my opinion cannot be discarded lightly because its so helpful in understanding how it is that computers can do what they do. So I'm uncomfortable seeing you call the Mechanical Clock a CPU, and more uncomfortable seeing it used to explain what a computer is. Its a fine way to show how logic works, and then to note that a CPU is made out of logic.

        I like the way you've combined a logical description (the instructions) with the visual and tactile implementation. You had a tutelage problem you wanted to solve, and came up with a clever approach, but it slightly missed the mark you were ultimately aiming for.

        Paul Pierce




        [Non-text portions of this message have been removed]
      • awasson2001
        It s definitely a convoluted question of whether it is a CPU or not based on Turing and/or modern definition. I ve been writing software for decades and built
        Message 3 of 10 , Apr 19 10:22 PM
        View Source
        • 0 Attachment
          It's definitely a convoluted question of whether it is a CPU or not based on Turing and/or modern definition.

          I've been writing software for decades and built 8-bit computers with Hex Keypads back in the late 70's but I've only been really interested in CPU design for about the last 5 - 6 years. As a result I may have a liberal idea of what constitutes a true CPU.

          My interpretation of Turing and the definition of a CPU dictates that it must have:

          1) an instruction set
          2) control
          3) program memory
          4) accumulator
          5) conditional jump
          6) the ability to loop
          7) the ability to be programmed

          I think this unit has the first 6 but I'm not sure that the program can be modified enough to believe that it can be programmed to do anything but be some sort of clock.

          It's not to say that it won't ever be a CPU but at the moment it is hard for me to definitively state that it is a CPU.

          That said, it's really impressive.

          Cheers,
          Andrew



          --- In friendsofdigicomp@yahoogroups.com, Lior Elazary <lelazary@...> wrote:
          >
          >
          > Thanks for the great insight.
          >
          > I would “agree” with the definition
          > that a CPU “must pass the Turing Machine equivalency test” for it
          > is to be considered a CPU. But this machine, does passes the Turing
          > Machine equivalence test (although it does not passes the “Turing
          > Test” since it can not talk back :)
          > However, I think you are on to
          > something, which has to do with Universal Turing Machines.
          >
          > First whether this is a Turing machine:
          > I say yes, and here is the proof.
          >
          > Once simple proof can be based on Church's Thesis which states that that
          > any algorithm can be represented as a Turing machine. And since I
          > have an algorithm for this clock, it is a Turing machine.
          >
          > A more formal definition: A Turing
          > machine T has a set of 4-tuple (S,I,f,s0) (in its simplest form. I
          > know there are other definition, but they could all be boiled down to
          > this without a lose in generality). I got this from the book
          > “Discrete Mathematics and its applications” page 776
          > (http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0072899050). Yes, you made me brush up my old CS book.
          >
          >
          > S is a fine set of states (in the
          > clock, Register A and the DTD_FLAG)
          > I is a finite set of alphabet (in the
          > clock 0 and 1)
          > f which is a partial function from SxI
          > to SxI x {R,L} (this is the program of the clock implemented by the
          > tracks and the flip-flops, I and L levers)
          > s0, which is the starting state (in our
          > case we can set register A and the DTD_FLAG to anything).
          >
          > The “tape” is implemented by the
          > ball which reads register A and the DTD_FLAG and manipulates them
          > accordingly.
          >
          > Note that I did not considered the
          > other registers, because they are tied together with the buss, so their state is just the same. Also note that there is an optimization
          > when the INCREMENT instruction and is actually an INCREMENT and CHECK
          > together.
          > Paul Pierce wrote: “However, I don't
          > think the instruction set is sufficient “ (see more later)
          >
          > Note that in the Turing machine
          > definition f can be any length (even 1) so you could have a 1
          > instruction Turing machine (see 1 bit Turing machines).
          >
          > Therefore, this is a Turing machine.
          > Note that a Turing machine does not require for the tape to change!!!
          >
          > However, I believe what you meant to
          > prove is that this is not a Universal Turing Machine (UTM), which is how we
          > should define a CPU (not just a Turing machine). A universal Turing
          > machine is one that reads the set of instructions f from the tape.
          > This will allow it to simulate an arbitrary Turing machine, and thus
          > solve an array of problems. This is why the Harvard Architecture is a
          > spatial case, since it has its program in a separate memory
          > structure. So I would argue that his clock has an Harvard
          > Architecture. Therefore, the only question remaining is whether this
          > clock reads the program from memory, and how is this memory
          > implemented.
          >
          > I argue that the program memory is
          > implemented in the paths the ball takes, and is burned in using the
          > laser as well as the configurations of the flip-flops, so its similar
          > to burning the program on a ROM. (although I agree this is a far
          > fetch, but just for the sake of discussion). Therefore, I could
          > change the program of the clock by simply rotating on of the L levers
          > or changing the T flip-flops to an L. I could also, remake the tracks
          > of the C register, to check for a different number, or change the B
          > register to increment instead of reset (by changing the L to
          > flip-flops and reconfiguring the paths).
          > Therefore I conclude that this is a
          > Universal Turing machine, and thus a CPU.
          >
          > Paul Pierce wrote: “However, I don't
          > think the instruction set is sufficient “
          > However,
          > this is not a complete proof (even if we buy the argument that the
          > laser cutter can cut the paths). The reason is that a universal
          > machine need be be able to calculate all possible functions which can
          > be calculated. Therefore, we need to find if this clock can do that
          > (even if we can reprogrammed it, by only using the instructions I
          > have given), which I am not able to do at this point. However, See
          > Wolfram's 2-state 3-symbol Turing machine
          > (http://en.wikipedia.org/wiki/Wolfram%27s_2-state_3-symbol_Turing_machine)
          > for what might be the smallest universal Turing machine, but the
          > proof is difficult.
          >
          > Based on that, the I don't believe the DigiComp Ior II is not is a UTM, and threfore should not be called a computer either!
          >
          >
          > However, even if you don't buy the
          > argument that the program is read from memory (and I agree this is
          > hard to swallow, even for me) or that is can not emulate a Universal Turing
          > machine. I still stand by the fact that this is still useful in
          > describing a CPU since it has all the major components of a CPU. just like the DigiComp.
          > Therefore, it can help people understand what is inside a CPU and how
          > a CPU works in a very broad way. Remember, this is for non
          > computer-science people, and not for hardware designers trying to
          > implement a useful CPU.
          >
          >
          >
          > ________________________________
          > From: prp_teleport <prp@...>
          > To: friendsofdigicomp@yahoogroups.com
          > Sent: Thursday, April 19, 2012 2:50 PM
          > Subject: Re: [Friends of DigiComp] Mechanical CPU Clock
          >
          >
          >  
          > Some more rigorous definitions than those you found on Wikipedia might help understand whether the clock is a CPU:
          >
          > Computer - In modern usage, a stored program general purpose digital electronic computer, defined not in terms of its construction but in terms of its capability. In particular, a computer is a machine that would be equivalent to a "Turing Machine" if it had infinite memory. (The "electronic" aspect is not optional in proper usage, but we can discard it for this discussion.)
          >
          > CPU - Central Processing Unit. Tranditionally, the "control" part of the computer, a computer consisting of control, memory and I/O. The CPU is the defining part of a computer and it is the part that must pass the Turing Machine equivalency test.
          >
          > Harvard Architecture - A computer where the instructions and data are in separate memory units, and the memory containing the instructions is read-only.
          >
          > Turing Machine - A rigorous pure mathematical construct proposed by the famous British mathemetician Alan Turing. There is an entire field of mathematics based on it. A Turing Machine is a very simple 1-bit device with an infinite memory. An important early result in the field is that you can construct (mathematically) a computing device in many different ways, and if it has the capabilities of a Turing Machine, then it can be proved that it has exactly the same capability as a Turing Machine, no more and no less. (Execution time is not modelled, so there is no notion of "faster" or "slower", only whether it is the same or not.) So, for instance, if you can show that your construct is able to emulate a Turing Machine, then you have proved that it is exactly the same as a Turing Machine as far as what you could do with it.
          >
          > All computers, from the tiniest microcontrollers to the largest supercomputer, pass the Turing Machine equivalency test. There is the special case of the Harvard Architecture designs, typical for microcontrollers, where in addition to assuming the memory is infinite you also have to assume that, for the purposes of the test, the instruction and data memories are combined and uniformly accessible for read and write.
          >
          > The Mechanical Clock is not able to emulate a Turing Machine even if its registers were inifitely large, so its not a computer or a CPU in itself.
          >
          > You could argue that the Mechanical Clock is a Harvard Architecture machine, where the instructions are encoded in the structure of the pathways for the ball. But this structure is not similar enough to the data memory (the registers) to convincingly argue that they could be unified for the purposes of testing Turing Machine equivalency. So thats out.
          >
          > If it is possible to emulate a Turing Machine using the 6-instruction assembly language given, then you could argue that the instruction set combined with the laser cutter is a computer, and the clock is one possible program. However, I don't think the instruction set is sufficient (even though its larger than some minimal examples I've seen) because, among possibly other things, it lacks any kind of indirect or computed addressing mechanism. In any case, a single program is not a computer, so the Mechanical Clock is still not a CPU.
          >
          > The property of Turing Machine equivalence is an extremely important concept in Computer Science, and in my opinion cannot be discarded lightly because its so helpful in understanding how it is that computers can do what they do. So I'm uncomfortable seeing you call the Mechanical Clock a CPU, and more uncomfortable seeing it used to explain what a computer is. Its a fine way to show how logic works, and then to note that a CPU is made out of logic.
          >
          > I like the way you've combined a logical description (the instructions) with the visual and tactile implementation. You had a tutelage problem you wanted to solve, and came up with a clever approach, but it slightly missed the mark you were ultimately aiming for.
          >
          > Paul Pierce
          >
          >
          >
          >
          > [Non-text portions of this message have been removed]
          >
        • Lior Elazary
          I think number 7 needs to be defined more. So we will need a definition of what does reprogramming means. For example, I believe that the clock can be
          Message 4 of 10 , Apr 20 7:26 AM
          View Source
          • 0 Attachment
            I think number 7 needs to be defined more. So we will need a definition of what does reprogramming means. For example, I believe that the clock can be reprogrammed (even without re-burning the tracks).


            For example, we can make it add two numbers (only up 4 bits) by doing the following. 


            * Reprogram the clock by disconnecting the 3 buss wires from register C to register A (register C is the check).

            * Place the first number in register A
            * Run the clock for the second number of times
            * The result will be in register A

            Similarly, subtraction can be made by taking the compliment of the number. 

            We can also produce other programs by replacing the T flip-flops with L or I.

            So this clock can be reprogram. However, this does not mean that it can simulate any program (or any Turing machine). 

            So I think it is not a Universal Turing Machine (although it will need to be proven) and thus not a True CPU.

            Non the less, its still useful in explaining CPU concepts.


            Lior.







            ________________________________
            From: awasson2001 <no_reply@yahoogroups.com>
            To: friendsofdigicomp@yahoogroups.com
            Sent: Thursday, April 19, 2012 10:22 PM
            Subject: [Friends of DigiComp] Re: Mechanical CPU Clock


             
            It's definitely a convoluted question of whether it is a CPU or not based on Turing and/or modern definition.

            I've been writing software for decades and built 8-bit computers with Hex Keypads back in the late 70's but I've only been really interested in CPU design for about the last 5 - 6 years. As a result I may have a liberal idea of what constitutes a true CPU.

            My interpretation of Turing and the definition of a CPU dictates that it must have:

            1) an instruction set
            2) control
            3) program memory
            4) accumulator
            5) conditional jump
            6) the ability to loop
            7) the ability to be programmed

            I think this unit has the first 6 but I'm not sure that the program can be modified enough to believe that it can be programmed to do anything but be some sort of clock.

            It's not to say that it won't ever be a CPU but at the moment it is hard for me to definitively state that it is a CPU.

            That said, it's really impressive.

            Cheers,
            Andrew

            --- In friendsofdigicomp@yahoogroups.com, Lior Elazary <lelazary@...> wrote:
            >
            >
            > Thanks for the great insight.
            >
            > I would “agree” with the definition
            > that a CPU “must pass the Turing Machine equivalency test” for it
            > is to be considered a CPU. But this machine, does passes the Turing
            > Machine equivalence test (although it does not passes the “Turing
            > Test” since it can not talk back :)
            > However, I think you are on to
            > something, which has to do with Universal Turing Machines.
            >
            > First whether this is a Turing machine:
            > I say yes, and here is the proof.
            >
            > Once simple proof can be based on Church's Thesis which states that that
            > any algorithm can be represented as a Turing machine. And since I
            > have an algorithm for this clock, it is a Turing machine.
            >
            > A more formal definition: A Turing
            > machine T has a set of 4-tuple (S,I,f,s0) (in its simplest form. I
            > know there are other definition, but they could all be boiled down to
            > this without a lose in generality). I got this from the book
            > “Discrete Mathematics and its applications” page 776
            > (http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0072899050). Yes, you made me brush up my old CS book.
            >
            >
            > S is a fine set of states (in the
            > clock, Register A and the DTD_FLAG)
            > I is a finite set of alphabet (in the
            > clock 0 and 1)
            > f which is a partial function from SxI
            > to SxI x {R,L} (this is the program of the clock implemented by the
            > tracks and the flip-flops, I and L levers)
            > s0, which is the starting state (in our
            > case we can set register A and the DTD_FLAG to anything).
            >
            > The “tape” is implemented by the
            > ball which reads register A and the DTD_FLAG and manipulates them
            > accordingly.
            >
            > Note that I did not considered the
            > other registers, because they are tied together with the buss, so their state is just the same. Also note that there is an optimization
            > when the INCREMENT instruction and is actually an INCREMENT and CHECK
            > together.
            > Paul Pierce wrote: “However, I don't
            > think the instruction set is sufficient “ (see more later)
            >
            > Note that in the Turing machine
            > definition f can be any length (even 1) so you could have a 1
            > instruction Turing machine (see 1 bit Turing machines).
            >
            > Therefore, this is a Turing machine.
            > Note that a Turing machine does not require for the tape to change!!!
            >
            > However, I believe what you meant to
            > prove is that this is not a Universal Turing Machine (UTM), which is how we
            > should define a CPU (not just a Turing machine). A universal Turing
            > machine is one that reads the set of instructions f from the tape.
            > This will allow it to simulate an arbitrary Turing machine, and thus
            > solve an array of problems. This is why the Harvard Architecture is a
            > spatial case, since it has its program in a separate memory
            > structure. So I would argue that his clock has an Harvard
            > Architecture. Therefore, the only question remaining is whether this
            > clock reads the program from memory, and how is this memory
            > implemented.
            >
            > I argue that the program memory is
            > implemented in the paths the ball takes, and is burned in using the
            > laser as well as the configurations of the flip-flops, so its similar
            > to burning the program on a ROM. (although I agree this is a far
            > fetch, but just for the sake of discussion). Therefore, I could
            > change the program of the clock by simply rotating on of the L levers
            > or changing the T flip-flops to an L. I could also, remake the tracks
            > of the C register, to check for a different number, or change the B
            > register to increment instead of reset (by changing the L to
            > flip-flops and reconfiguring the paths).
            > Therefore I conclude that this is a
            > Universal Turing machine, and thus a CPU.
            >
            > Paul Pierce wrote: “However, I don't
            > think the instruction set is sufficient “
            > However,
            > this is not a complete proof (even if we buy the argument that the
            > laser cutter can cut the paths). The reason is that a universal
            > machine need be be able to calculate all possible functions which can
            > be calculated. Therefore, we need to find if this clock can do that
            > (even if we can reprogrammed it, by only using the instructions I
            > have given), which I am not able to do at this point. However, See
            > Wolfram's 2-state 3-symbol Turing machine
            > (http://en.wikipedia.org/wiki/Wolfram%27s_2-state_3-symbol_Turing_machine)
            > for what might be the smallest universal Turing machine, but the
            > proof is difficult.
            >
            > Based on that, the I don't believe the DigiComp Ior II is not is a UTM, and threfore should not be called a computer either!
            >
            >
            > However, even if you don't buy the
            > argument that the program is read from memory (and I agree this is
            > hard to swallow, even for me) or that is can not emulate a Universal Turing
            > machine. I still stand by the fact that this is still useful in
            > describing a CPU since it has all the major components of a CPU. just like the DigiComp.
            > Therefore, it can help people understand what is inside a CPU and how
            > a CPU works in a very broad way. Remember, this is for non
            > computer-science people, and not for hardware designers trying to
            > implement a useful CPU.
            >
            >
            >
            > ________________________________
            > From: prp_teleport <prp@...>
            > To: friendsofdigicomp@yahoogroups.com
            > Sent: Thursday, April 19, 2012 2:50 PM
            > Subject: Re: [Friends of DigiComp] Mechanical CPU Clock
            >
            >
            >  
            > Some more rigorous definitions than those you found on Wikipedia might help understand whether the clock is a CPU:
            >
            > Computer - In modern usage, a stored program general purpose digital electronic computer, defined not in terms of its construction but in terms of its capability. In particular, a computer is a machine that would be equivalent to a "Turing Machine" if it had infinite memory. (The "electronic" aspect is not optional in proper usage, but we can discard it for this discussion.)
            >
            > CPU - Central Processing Unit. Tranditionally, the "control" part of the computer, a computer consisting of control, memory and I/O. The CPU is the defining part of a computer and it is the part that must pass the Turing Machine equivalency test.
            >
            > Harvard Architecture - A computer where the instructions and data are in separate memory units, and the memory containing the instructions is read-only.
            >
            > Turing Machine - A rigorous pure mathematical construct proposed by the famous British mathemetician Alan Turing. There is an entire field of mathematics based on it. A Turing Machine is a very simple 1-bit device with an infinite memory. An important early result in the field is that you can construct (mathematically) a computing device in many different ways, and if it has the capabilities of a Turing Machine, then it can be proved that it has exactly the same capability as a Turing Machine, no more and no less. (Execution time is not modelled, so there is no notion of "faster" or "slower", only whether it is the same or not.) So, for instance, if you can show that your construct is able to emulate a Turing Machine, then you have proved that it is exactly the same as a Turing Machine as far as what you could do with it.
            >
            > All computers, from the tiniest microcontrollers to the largest supercomputer, pass the Turing Machine equivalency test. There is the special case of the Harvard Architecture designs, typical for microcontrollers, where in addition to assuming the memory is infinite you also have to assume that, for the purposes of the test, the instruction and data memories are combined and uniformly accessible for read and write.
            >
            > The Mechanical Clock is not able to emulate a Turing Machine even if its registers were inifitely large, so its not a computer or a CPU in itself.
            >
            > You could argue that the Mechanical Clock is a Harvard Architecture machine, where the instructions are encoded in the structure of the pathways for the ball. But this structure is not similar enough to the data memory (the registers) to convincingly argue that they could be unified for the purposes of testing Turing Machine equivalency. So thats out.
            >
            > If it is possible to emulate a Turing Machine using the 6-instruction assembly language given, then you could argue that the instruction set combined with the laser cutter is a computer, and the clock is one possible program. However, I don't think the instruction set is sufficient (even though its larger than some minimal examples I've seen) because, among possibly other things, it lacks any kind of indirect or computed addressing mechanism. In any case, a single program is not a computer, so the Mechanical Clock is still not a CPU.
            >
            > The property of Turing Machine equivalence is an extremely important concept in Computer Science, and in my opinion cannot be discarded lightly because its so helpful in understanding how it is that computers can do what they do. So I'm uncomfortable seeing you call the Mechanical Clock a CPU, and more uncomfortable seeing it used to explain what a computer is. Its a fine way to show how logic works, and then to note that a CPU is made out of logic.
            >
            > I like the way you've combined a logical description (the instructions) with the visual and tactile implementation. You had a tutelage problem you wanted to solve, and came up with a clever approach, but it slightly missed the mark you were ultimately aiming for.
            >
            > Paul Pierce
            >
            >
            >
            >
            > [Non-text portions of this message have been removed]
            >




            [Non-text portions of this message have been removed]
          Your message has been successfully submitted and would be delivered to recipients shortly.