Friday, 25 December 2015

Layers of abstraction in computing technology

Designing the computing devices is a fairly complex task. One way of solving tough problem is to divide it into several less enigmatic one. On that principle, computer scientist and engineers have created layers of abstractions of the computing system. The purpose of this is to understand the computing system in a systemic manner and to divide the work among various experts so that a high-performance system can be made.

Following are the components of computing system's layers of abstraction:-


1) Transistors

In this layer, researchers focus on making small, easy to fabricate, fast operation and with robust functionality transistors. Nowadays, MOSFET( Metal Oxide Semiconductor Field Effect transistor) are extensively used as they meet those criteria. Researchers are trying to reduce the size of MOSFET in order to keep Moore's Law valid but are now facing challenges due to phenomena like tunneling effect.


Types of MOSFETs- nMOS & pMOS

You can click here to watch a video on working of the MOSFET.


2) Logic gates

A logic gate is an elementary building block of any digital circuit. They are implemented by transistors, mainly MOSFETs. Today, logic gates are implemented by CMOS(Complementary MOS) among others methods. CMOS contains both pMOS and nMOS.
The main advantage of CMOS is that they dissipate zero static power. Static power is dissipated when logic gate contain stable value (either logic 1 or logic 0).

However, CMOS implementation uses a large number of transistors and can cover a greater area of silicon for complex circuits.



Some standard two-input logic gates



3) Combinational logic

Combinational logic is a digital circuit which consists of logic gates whose outputs at any time are determined from only the present combination of inputs. They are used for code conversion (for instance- binary to BCD) and for implementing arithmetic logic among other applications.

Block diagram of combinational circuit

Examples of standard combinational logic are Multiplexer, demultiplexer, encoder, decoder, adder and subtractor to name a few.


4) Sequential logic

Sequential logics is the digital circuit whose outputs at any time depends on previous output other than present input combination.
Most of the circuits in any microprocessor is sequential logic. Examples of sequential circuits are counter, flip-flops, Finite state machines.

Block diagram of sequential logic


5) Microarchitecture

Microarchitecture of any microprocessor is the way of implementation of instruction set architecture. It contains information regarding how many instructions to fetch from memory at a time, how to handle branch instructions, how to handle any instruction dependency.

Nowadays microprocessors use several concepts of microarchitecture like instruction pipelining, branch predictor, cache coherence protocols, superscalar processor, data level parallelism and many more.
The main aim is to execute as many instructions in a given time without compromising on silicon area covered and power dissipated.



6) Instruction set architecture

Instruction set architecture( ISA) serves as the boundary between software and hardware. An ISA is analogous to human language. It allows the hardware and software to communicate. Like any good language, it should be unambiguous and clear. It tells us about addressing mode, types of instructions and memory instructions.

A good ISA contains simple instructions which are often used. In the case of complex instructions like sorting an array, these simple instructions are used in a particular order.

Today's PC and laptop's microprocessors use x86 ISA and smartphone's processors use the ARM ISA.



7) Assembly language

The instructions given in ISA are stored as binary numbers in the instruction memory. Programming in machine language is tedious and prone to errors. This led to the development of assembly language. It uses mnemonics instead of binary representation for each instruction.Instructions in assembly language have a particular format, which should be followed by the programmers for correct execution of their code.

The program written in assembly language is converted into machine language by a program called assembler. 


8) High-level languages

Programming in assembly language is still cumbersome. The programmer needs to know the ISA of the target machine, which was getting complex as the computing world began to develop. In order to solve this problem, high-level programs were developed. A program called compiler converts the program in the high-level language into machine language.

There are many high-level languages to choose from- C, C++, Python, Java, C#.


C and C++ are one of the popular computer languages today.

No comments:

Post a Comment