[MUSIC] All along the course we are going to design a very simple processor. During this first week we will introduce the concept of processor and will give a partial specification of our particular processor. First, let us go back to the examples of digital systems described during lesson 1 of this week. The first one was a temperature controller executing this algorithm. A second example was a chronometer executing this other algorithm. We have seen in lesson 1 that to each of those algorithms can be associated a digital system: to the temperature controller, corresponds this system and to the chronometer this other system. Now, as regards the way those systems will be designed and implemented, there are several options among which the designer will choose the best one in function of parameters such as the cost, the accuracy, the size of the final system, and so on. A first option is to associate to each algorithm a completely new system thatexecutes the corresponding algorithm, but could not execute any other algorithm. The way this first option can be considered is, up to a certain point, the main topic of this course. Nevertheless both algorithms have some common characteristics. The first common characteristic is that both algorithms are made up of instructions that are sequentially executed. For example, in the case of the temperature controller, the instruction execute at ime n could be this one: if "temperature" is smaller than the position minus half a degree, then the output ONOFF must be equal to ON. If it is greater, then ONOFF must be equal to OFF. This could be a first instruction executed at time n. At time n + 1, according to this algorithm, the executed instruction will be "wait for 10 seconds". Then the next one, according to the loop construct of this algorithm, the next one will be the same as the instruction executed at time n. At time n plus 3, once again, "wait for 10 seconds", and so on. So this is a firs common characteristics: both algorithms, all algorithms in general, are made up of sequentially executed instructions. A second common characteristic is that sometimes there are branches and jumps. For example, in this instruction of the first algorithm, this one, there is a branch: if "temp" is less than "position", then ONOFF will be equal to ON, While if "temp" (temperature) is greater than "position", then ONOFF will be equal to OFF. Another example is the "while loop", here, of the second algorithm. The corresponding instruction is executed only if condition "STOP = OFF" is true. Now, a third common characteristic is that both algorithms include instructions that read input values or generate output values. Here, as an example, in the first algorithm, in order to execute the first instruction, it is necessary to read the current value of "temperature" and the current value of "position". Once a decision has been taken, the value, ON or OFF, must be transmitted to the ONOFF output. In the second example, you know that to execute the while instruction it is necessary to read the value of the STOP input. Another example here:: once the new value of "time" has been computed, it must be transmitted to the TIME output. Finally, last but not least, some instructions execute computations. In the first algorithm, the computation of the difference between "temp" and "pos" (position) must be computed in order to take a decision. In the second algorithm, the updating of the time includes, for example, additions. Then, a conclusion: the fact that many digital systems can be defined by algorithms, with some common characteristics, suggest another way to implement them. Instead of designing and implementing a new specific circuit for any new system that we want to implement, we could first design a generic system, a generic system that includes input and output ports in order to read external data or to transmit external data to the outputs. It includes memory elements, for example X0, X1, X2 and so on, able to store data necessary to execute the algorithm, and it must include processing resources or computing resources able to execute computations such as arithmetic operations, and so on. Further more this generic system must be able to interpret instructions such as "write within memory element Xi a constant value A", or "transmit to the internal memory element Xi the value of input port j" (here at the input ports). On the contrary, "transmit to output port (one of these ones) the value of an internally stored variable", or "transmit to an output port a constant value A". Execute an arithmetic or logic function, some available function f, using the value of some internal data, and updating the value of an internal data Xi. Function f is assumed to be one of the processing resources of our generic system. And, also, it must be able to make jumps and branches, such as "goto instruction number n", or "goto to instruction number n if some condition holds true". So that it receives external instruction - we will see later on where from come those instruction - and also, it generates some conditions such as "Xi is equal to some constant value" or "Xi is greater than Xj", and so on. Summary of this lesson. Another way to implement a digital system is to use a predefined generic system of this type, and this generic system will be called a processor. It received input data through input ports. It transmits output data through this output ports. It stores internal data X1, X2, X3 and so on, and it includes internal processing resources. This is our generic system. Then a list of instructions (a list of instruction will be called a program) must be generated. It is the way a specific system is implemented by using this generic processor.