In this article, you will begin learning Computer Organization. You appreciate the complexity involved in building a basic computer and type of specialize components required to make a computer.
The entire computing machine comes down to two important thing – Processor (or CPU) and Memory. A computer cannot function without these minimum components. The purpose of the computer is to interact with humans, I/O system works like an extended memory and helps computers to interact with humans.
CPU deals with I/O in the same way as with memory.
Computer Architecture vs Computer Organization
Computer architecture is from a designer point of view mostly deals with computer hardware system. Computer Organization is from a user point of view, mostly deals with software. The users are programmers.
Where do you use such a system? They are basically of two types.
1. Control Applications – Purpose is specific for these type of applications.
eg. ROM (read-only memory has fixed routine)
2.Data processing applications – General Purpose program for users comes under this category.
eg. RAM is software oriented and basically, run different programs from many users.
Both are complementary to each other. The focus of computing is shifted to storage and retrieval. But memory and storage devices must keep up with the processor or CPU. Arithmetic Logic Unit( ALU ) is the core of CPU. The arithmetic part of ALU does the arithmetic processing and logic part of ALU does logic processing of symbols.
Architecture Point of View
The hardware is the core of the system, however, it is very difficult for users to interact with hardware directly. So a software layer is added to soften the hardware aspect of the computing system. You know this layer as operating systems.
No matter how many layers you add to the hardware, the computer instructions are translated to machine code, the only language hardware understands. Users/programmer must know about machine code which is in a binary number.
You can see that the machine codes are difficult for human and nobody can remember such codes. Instead of using machine codes, we can use mnemonic codes.
For example,
ADD A, B
where ADD is a code and instruction to add contents of A and B.
The layers added to ease the interaction with hardware are given below.
Some examples of HLL are as follows.
- FORTRAN
- PASCAL
- BASIC
- C/C++
System Software
The user/programmer writes the code in HLL and a translator software converts codes between the “coding systems”.
Translators
There are many translators at the different layer between coding systems.
- Translator between machine code and assembly is called an “Assembler“.
- Translator between high level language and assembly is called a “Compiler“.
- An interpreter is a program that directly executes the code without compiling it into a machine code.
From the concept of a machine that consists of hardware such as CPU, memory, I/O we are moving towards System. A system has now compilers, assemblers, and interpreters to work with. You can develop programs that are available to users all the time and part of the system.
For I/O system, you can write routines, utility programs for devices and system libraries of programs. For example, Keyboard routines, Display routines, etc.
Users do not bother about hardware and they interact with OS now. For the same hardware, you can install many types of OS which issues different types of commands.
Relation between HLL and Machine Code
A user/programmer writes a program called the source code stored in a source file. The source code is translated into binary code or machine code and stored in object files.
There are many types of systems available for users. They are listed below.
- BATCH PROCESSING – It is a single user system.
- TIME SHARING – It is a multi-user system.
- PROCESS CONTROL – Do active processing of data.
- REAL TIME – Not only process data but return processed information in real time.
- DISTRIBUTED SYSTEM – Many system collectively act as a single system.
- NETWORKED OS – networked based operating system.
All OS are different, but if the OS has too many layers, then the response will slow. Systems closer to hardware can be very fast. For example, Real-time systems.