The Eniac Computer the first processor invented
The ENIAC which stands for Electronic, Numerical, Integrator And Computer, is one of the first processors invented in World War 2 in order to solve computational problems. In a demonstration on February 1946, being given to a university, it calculated a trajectory of a shell in 25s, when the shell took 30s to do the trajectory. Furthermore, the electronic calculation took 5s, while the other 20s were consumed by the IBM punch card printer, which punched the result. Therefore, the limiting factor of the ENIAC was not the computational power but its input, output devices which interacted with it. Still, compared to a human computer, it would have taken him one week to calculate it.
The ENIAC made use of about 18,000 vacuum tubes which had the tendency to break a lot and there was an approximation of a vacuum tube breaking every 20hrs. Apart from that, it was found to be better if the ENIAC was never switched off or back on, as in the process more vacuum tubes were breaking.
The ENIAC worked at 100,000 pulses per second, worked 5,000 times faster than a human computer and worked 60 times faster than the electronically driven mechanical computers at the time. Apart from that, it was also very bulky, both when compared to nowadays CPUs and at the time, as it was 20 times as large as the largest radio station period.
Being a military project, it was given a budget of $500,000, which was thought to be worth it, as the calculation of the trajectory tables has been increased a lot, from weeks to just a few minutes.
Still, its true use didn’t come in handy since there were repetitive calculations, being impossible for a human computer.
The ENIAC was controlled in a synchronous way, meaning that a group of pulses were sent out every 200 micro seconds and then, when new processes have started at the beginning of a new pulse.
Processes in the ENIAC were processed in series. Although parallel processing was present in the ENIAC, it wasn’t used much, as the series processing had a powerful processing power at the time and it didn’t need a lot of parallel processing.
The ENIAC components
The Arithmetic Computation
The Arithmetic Computation was used to carry out all the arithmetic computations of a given function. The ALU was made up of 20 accumulators which were used for addition and subtraction; one multiplier in order to do all the multiplication and one divider/square rooter, along with three function tables which having the known values of a function, could be stored there and being later used in the solution.
For all the multiplications, a high speed multiplier was built which used 4 accumulators; 2 for the multiplier and the others for the multiplicand. The multiplier was capable of multiplying 2 to 10-digit numbers.
In order to produce as much as the results at one go, the multiplier had 24 programed controls. This means that the ENIAC was able to make 24 different multiplications in 1 program. Each program control was made up of a transceiver, with an input and output terminal for program pulses, i.e. by which the commands did the desired job by the ENIAC for a specific function.
The divider/square rooter
The divider was made up of 4 accumulators, i.e. 1 for the numerator, one for the denominator, one for the quotient and one for the shifter.
According to inf.fu-berlin.de, â€œThe operation involves set-up, calculation, round-off and interlock and clearingâ€.
The divider’s algorithm was made up of a repetition in a certain way with addition and subtraction algorithm. Therefore, the denominator has the same sign being subtracted until there is a sign change in the answer. On the other hand, if the numerator and the denominator have different signs they are added. â€œWhere every subtraction increments in a decade of the quotient accumulatorâ€.
Furthermore, the square rooting of an integer is based on the theory that the square of an integer is equal to the sum of all odds, until the square integer is reached.
The memory component was made up of 20 accumulators which were used in two ways; to hold or store data. But this was done only if the accumulators were not used for other purposes, which could have been the three function tables, which have a memory and arithmetic function at the same time. Obviously it had unlimited backing storage, done on punch cards, which can later be referenced trough the input devices.
The Control unit
The control unit was divided into two; the control of basic operations and the control of the sequence of operations.
Control of basic operations:
The control of basic operations was called Programming, were the parts of the ENIAC were controlled when they intervened. In the case of the ENIAC, this was done manually by connecting different panels by wires. This process could take from 30 minutes to a whole day work.
Control of the sequences of operations:
Regarding the ENIAC, it was down synchronously, i.e. a new action could only start at a certain time. The ENIAC sent a set of pulses every 200 microseconds, therefore a new process could only start at the beginning of those processes.
Input output component
In order to input and output data, to or from the ENIAC, the help of a punch card was needed, known as printers. This might have been called The limiting factor, as the ENIAC could only continue to work as long as there was no process which was ready and was still being outputted on punch cards. If the next process was ready the ENIAC would have to wait until the printer was ready, so that it could give it the next process to work on and the ENIAC would restart.
The accumulator was a device used a lot in the ENIAC. Such a device was used for addition and subtraction and also to store data and transmit it back when it was needed. Usually they were in columns of 10 as the ENIAC could take up to a 10 digit number.
The accumulator was built in a ring counter from 0 to 9 and it had a carryover circuit so that when it reached 9 and over it switched to the next accumulator and add 1 to it.
It even had a pulse shaping circuit so that it ensured that there was a good pulse flowing through the accumulators.
The modern day processors follow the structure produced by Von Neumann and Alan Turing.
Both computers are inspired by the idea of having the programming stored electronically on a memory which the computer could refer to, unlike the ENIAC where the programming was done manually.
The first idea was proposed firstly by Von Neumann in 1945 known as the EDVAC, while Alan Turning was working on the same project, but not with Von Neumann and proposed the same idea.
In 1946 Von Neumann started working on a new project with his colleagues named the IAS, which wasn’t produced until 1952. Basic or general purpose computers follow the same basic principles found in this computer.
â€œ2.2 First: Because the device is primarily a computer, it will have to perform the elementary operations of arithmetic most frequently. These are addition, subtraction, multiplication and division. It is therefore reasonable that it should contain specialized organs for just these operations. It must be observed, however, that while this principle as such is probably sound, the specific way in which it is realized requires close scrutiny. At any rate a central arithmetical part of the device will probably have to exist and this constitutes the first specific part: CA.
2.3 Second: The logical control of the device, that is, the proper sequencing of its operations, can be most efficiently carried out by a central control organ. If the device is to be elastic, that is, as nearly as possible all purpose, then a distinction must be made between the specific instructions given for and defining a particular problem and the general control organs which see to it that these instructionsâ€”no matter what they areâ€”are carried out. The former must be stored in some way; the latter are represented by definite operating parts of the device. By the central control we mean this latter function only, and the organs which perform it form the second specific part: CC.
2.4 Third: Any device which is to carry out long and complicated sequences of operations (specifically of calculations) must have a considerable memory. The instructions which govern a complicated problem may constitute considerable material, particularly so, if the code is circumstantial (which it is in most arrangements). This material must be remembered. At any rate, the total memory constitutes the third specific part of the device: M. The three specific parts CA, CC (together C), and M correspond to the associative neurons in the human nervous system. It remains to discuss the equivalents of the sensory or afferent and the motor or efferent neurons. These are the input and output organs of the device. The device must be endowed with the ability to maintain input and output (sensory and motor) contact with some specific medium of this type. The medium will be called the outside recording medium of the device: R.
2.5 Fourth: The device must have organs to transfer information from R into its specific parts C and M. These organs form its input, the fourth specific part: I. It will be seen that it is best to make all transfers from R (by I) into M and never directly from C.
2.6 Fifth: The device must have organs to transfer from its specific parts C and M into These organs form its output, the fifth specific part: O. It will be seen that it is again best to make all transfers from M (by O) into R, and never directly from C.â€ (Stallings)
The basic principles which this computer has are:
- The main memory which stores both data and the instructions that the computer will be using.
- An ALU calculating in binary numbers not in decimals like the ENIAC.
- The control unit which takes instructions from the memory and which interprets and executes.
- The inputs and the outputs of the computer are managed by the control unit on how they should operate.
The structure of the Von Neumann machine is used now a days for the general purpose machine.
The IAS has a memory of 1000 storage locations which are called Words. In these words both instructions are to be executed and the data that must be processed is stored in them, a technique which is still used now a days.
In the IAS the ALU and CU have registers so that they store the data that is going to be processed next or the output of the previous process. These registers are:
- Memory Buffer Register: the memory buffer register stores in it words taken form the memory or the input output devices, or words that have to be stored in the memory or given back to the input/output.
- Memory address buffer : specifies the address of the location on the memory, from which data will be taken from and put in MBR or taken from MBR, and written in that specific location in the memory.
- IR: the currently, being executed instruction, is stored in this register.
- Program Counter: the address of the next instruction to be executed after the one being processed at the moment is stored in this register.
- Accumulator and the multiplier quotient: they are used to hold temporary results of the ALU.
To execute instructions the IAS used runs the Instruction Cycle. This cycle is divided into two cycles; the Fetch Cycle and the Execute Cycle. The Fetch cycle consists of having the next instruction loaded in the IR and the address part is inserted into the Memory address register, after the execute cycle is made.
The ALU is one of the major components in the CPU. It does the arithmetic operations on the operands of the instruction words. The ALU can be subdivided into the AU and LU; the Arithmetic Unit and the Logic Unit. Some processors have more than one AU because they are needed for the Fixed Point and the Floating Point.
It has direct input to the main memory, to the processor controller and certainly to the I/O devices. It also includes storage places for input operands and operations where you have the accumulated results and the shifted results. Obviously these results are stored in an accumulator. Arithmetic operations are controlled by logic gates which when arranged in a particular way, they produce a specific arithmetic operation.
In it, the ALU has a section dedicated to status flags, were these status flags show what the status of an arithmetic result is.
These flags are:
- C: Carry: indicates that there must be added a +1 to some register in the CPU.
- Z: Zero: indicates that the result is 0.
- I: Interrupt Disable: indicates if an interrupt was enabled or disabled.
- D: Decimal: indicates if a binary number must be worked in BCD or in real binary number.
- B: Break: indicates if the processor encountered any break.
- V: Overflow: indicates if there was any overflow in an arithmetic operation i.e. an arithmetic operation exceeded +127 or – 128
- N: Negative: tells if a number is negative or not.
Other components in the ALU would be the shifter. The use of the shifter is to shift decimal places of floating point, arithmetic operations.
As it can be seen in the picture below, the ALU only interacts with data that is inside the CPU’s registers.
Figure 2: taken from http://cnx.org/content/m29369/latest/
The Control Unit
The Control Unit takes instructions from the main memory and translates them, while executing how data should be manipulated to bring out the desired output of the instruction. Apart from that, it co-ordinates what other units should do by the means of the Control Bus.
The way the Control Unit controls other units, varies from one CPU to another, as it is specific for the architecture of the every CPU. Taking as an example the x86 CPU, this type of CPU has to fetch, decode, manage execution and store the results. If the Control Unit has an RICS controller than the control unit has more work to do. The RICS controller translates x86 instructions to micro instructions and manages the scheduling of micro instructions between each unit, while taking the output and makes sure that it arrives to its destination.
The Cache Memory
The Cache Memory is a very fast memory made of Static Ram memory. Cache is used so that the CPU saves time in taking the same instruction from the memory for a repetitive amount of time. Therefore, when there are instructions which are repeatedly used for a program, they are stored in the Cache. This means that it would save a lot of time for execution as it would save time for the instruction to travel from the main memory to the control unit, resulting in less bottle necking on the data busses. Also as the Cache is made of static ram and is closer to the CPU, the main memory is made of dynamic ram which is slower than the static ram.
Usually the cache is named l1 since it is found inside the CPU and l2 when found on the motherboard, but nowadays l1 and l2 are found on the CPU and l3 is found on the mother board.
Obviously modern technology is always getting better and outdates previous technology.
When comparing the ENIAC to today’s processor the most evident difference is the size of the processor. The ENIAC had a very large size which occupied a whole room and was 20 times larger than the largest radio station period, making it quite bombastic and space demanding. Compared to nowadays, a CPU has the size of a small rubber and still does the work that the ENIAC did, better and more effectively.
Programming on the ENIAC was done by hand, where operators changed connections of the ENIAC by hand so that the function can be arranged to the desired one, but it was a tedious job and that’s what Turing and Neumann wanted to eliminate. It could take from about 30 minutes to a whole day in order to connect panels to their corresponding ones. On the other hand, today’s CPUs are programmed electronically without the need to touch any wires, which are no longer used in a CPU construction, being too bulky.
The ENIAC was aimed to work out arithmetic operations only, therefore it could only do sum integrations etcâ€¦, but today’s CPUs are more generic and carry out a large spectrum of things than just arithmetic operations, meaning that it can be of help not only for war purposes but for other users. Reducing its size, lead to fewer expenses and therefore affordable by other users.
The ENIAC made use of 18,000 vacuums in order to operate, which had to always be changed as they got burnt and could never be switched off or back on. This was so because it burnt more vacuum tubes therefore it was always switched on. Unlike the modern day CPU, where it doesn’t use any vacuum tubes, it can be switched on or off any time the user wants.
Considering the input and output components which delayed the ENIAC and made it stop and wait for it to be ready, so that it could restart working, caused a lot of delay in the execution of a function, taking into account that for a 5 second electronic calculation there was a 20 second outputting of result. In modern CPUs, apart from having output devices which are faster than a punch card printer, the output devices can never reach the speed of the CPU therefore the Buffer was introduced. When there is an execution to be outputted to a device, it goes to the buffer, where it remains in a sort of queue until it is outputted. Therefore, the CPU can remain working without stopping or being delayed.
Modern CPUs make use of the cache memory where instructions which are used repeatedly are stored in it, so that execution time is lowered and therefore increasing efficiency.
The ENIAC operated at 100,000 pulses per second, today, the speed of the CPU is measured in giga bytes or megabytes, and therefore there is a large difference in the speed which was used on the ENIAC. Even though it was thought that the ENIAC was fast enough and didn’t need parallel execution, in today’s CPUs, this technique is used where more than 1 execution is made. Whilst there was this idea in the ENIAC, it wasn’t used at that time since it was thought that its speed was fast enough and so it could work in series.
Although modern cpus are not created like the eniac still they follow some basic principles like for example there is still the use of the control unit and the Alu and still there is the use of the main memory and the backing storage.
But although they have the same basic structure the alu is built completely different then the technique used back then, apart from that as the eniac accepted 10 digit numbers modern cpus accept to 32 bit numbers or even 64 bit now a days.
The eniac worked in decimal numbers on the other hand nowadays cpu work in binary and in BCD.
Also like the eniac todays processors are built to function electrically and digitally. This there isn’t faster than it.
Conditional branching is also used in todays machines as it was used in the eniac.
From this analysis I made it can be observed that the eniac was the pioneer which without the eniac machine wouldn’t have been possible to produce todays machines and produce better smaller and faster machines which would be generic so that they could be used more than just for arithmetic operations. That’s what technology is, were one thing leads to better more sophisticated thing.Order Now