There are 2 types of computers with different instruction sets depending on their functions and uses and structures
Uses the processors hardware such as use of registers and logic gates to execute instructions. So they have a hard-wired control unit
It has a reduced simple instruction set as it handles very simple instructions
Executes very simple and reduced instruction which takes one clock cycle to execute
Uses mainly the registers to store data
Uses Fewer addressing modes and fixed length instructions
Supports pipelining which we will discuss later
Mainly uses coding and software to execute instructions so they have a microprogrammed control unit
Uses a large instruction set as it handles very large complex instruction sets
Each instruction will take many clock cycles
Has more addressing modes
Uses Less registers and mainly the memory
Harder to pipeline
The idea of pipelining is to make more efficient and faster way to execute instructions. Each instruction can be broken down to five steps:
1. Instruction Fetch
3. Operand Fetch
5. Write Back
In pipelining, each step is handled by a separate unit within the processor. So multiple steps could be done simultaneously. For this reason, pipelining is a form of instruction level parallelism
Make note that a single instruction is divided into separate steps and handled by different units.
We will discuss an example now:
Note the image is a 6 stage pipelining system. You only are required to know the 5 stage one
So for the first clock cycle, one step of the 1st instruction is processed. Then in the next cycle, the 2nd step of the 1st instuction is processed and the 1st step of the 2nd instruction is processed
In another way, for each clock cycle, there are many parts of different instructions processed. It is important you understand the basics of this table above and how it increases the speed of the processor. Alternatively, there are 5 units proccesing each step, the speed is 5 times faster so if a processing of instruction with no pipelining is 0.1 then with pipelining it is 0.02sec. This is an average as there are 5 instructions completed every 0.1 so we assume it takes 0.02 but no need to go that in depth
The main problem is that previous instructions may have to be fully completed for the current instruction to be executed
So this shows the first instruction must be completed to give the value for the 2nd instruction. Usually, this could be improved by changing the order of the instruction to make it more efficient
Note that this problem is called data dependency and cause bubbles or holes to form in registers called stalling until the previous instruction is fully completed
Another big problem is when there are interrupts generated by the CPU. In this case, the contents of the first 3 clock cycles are erased to load the base address of the ISR which can cause disruptions. If there many interrupts, there must be ways to avoid this...
This will discuss the types of processors:
Single Instruction Single Data Stream
A processor that handles a single instruction at a time and fetches a single stream of data from the memory
There is only a single unit or core. This is usually used for embedded systems such as washing machine where the instructions are simple
Single Instruction Multiple Data Stream
Has a single instruction that requires multiple data. For example, in vector and graphic processing, we need to collect data from different pixels to execute the instruction
It has a single processor that is divided into many units, called cores but a different type of core. These cores are usually used in graphics GPU card where there can be more than 1000s of them
Multiple Instruction Single Data Stream
There are many instructions applied to the data. There are no practical examples of these. The only one which is close is a video encoder that processes the data each time it processes the video
Multiple Instruction Multiple Data Streams
The Processor has many cores that can execute each instruction separately. Each Core has its own control unit
Common examples are the intel processors in your laptops and supercomputers
A system in which the computers are linked towards performing a specific task. It is similar to a MIMD processor, but the cores are instead separate computers
The main problem associated with Massively parallel computers is that a lot of wiring is required. Also, it will take a lot of space and it is very costly. There might be some delay when communicating between computers. The program must also be divided into many sections so that each computer can handle them and send signals between computers
These are not actual hardware systems but software systems. A virtual machine is a system that is able to host a different environment. The Virtual machine is hosted by the host OS. This is the original OS of your system. The Virtual machine is able to host many other guest OS that runs within the host OS. See the diagram below.
The software between the host OS and the Virtual Machine Software handles communications and signals between the host OS and the virtual machine.
The Guest OS handles any request between the guest software ( software to be tested ) and the virtual machine. It also handles any virtual hardware
The Host OS handles any request between the virtual machine software and the actual hardware of the computer. Note that there is a specific path of data flow.
A very good example is JAVA. JAVA is a virtual machine that emulates a new environment. For you to run Minecraft ( testing software ) you need to run and have JAVA installed
1. It is efficient for testing software in different OS rather than having a separate computer with that OS so it saves cost
2. Many Softwares can run in parallel so a different system can be running while another guest software is not working
3. However, there are more lines of code due to the emulation code
4. As many guest Operating Systems run in parallel, it reduces performances and slows them down.
5. Sometimes the virtual hardware may not be compatible with the actual hardware
You may have realized by now that Tlauncher, Myboy are common examples of virtual hardware software.
These are things you might like. Clicking these ads can help us improve our free services in the future...