I. Fundamental Computer Organisation
Computer and Its Environment
- • To study the evolution of computer organisations and operating systems (OSs), and their numerous developments through different generations.
- • To gain a clear understanding of the basic system structures and different types of relevant system software.
- • To describe the salient features of different generations of computers, using representative computer systems of each generation up to supercomputers.
- • To provide an overview of various hardware technologies and pioneering concepts.
- • To describe the vibrant technological innovations in the area of microprocessors using family concept.
- • To give an idea about multiple-processor architectures along with their numerous forms and different topologies.
- • To explain the concepts of embedded systems and to describe in brief the generic real-time systems.
- • To focus on the various forms and different issues of recent multicore processors.
- • To introduce different types of operating systems - network operating system (NOS), distributed operating system (DOS), and real-time operating system (RTOS) - to handle different computing environments.
History in Short
The history of the evolution of the computer is itself very scintillating. A journey through it gives an overview of the evolutionary track with respect to computer structure, its design, and its function. It also helps to understand how its initial versions have been gone through many vibrant inventions and sparkling innovations to arrive at its present form (Augarten, S.).
The rapid pace in change that took place in the advancement of computer technology over this period to bring about the formation of today's computer architecture and organisation has been identified and narrated. These changes entail almost all aspects of computer science, starting from the underlying simple semiconductor technology through the most advanced integrated circuit (IC) technology. These technologies are presently used to fabricate numerous advanced computer components. Assembling of these superior components has eventually led to the extent of increasing use of ultimate parallel architecture concepts. It is interesting to note that despite radical changes in the concept of computer architecture and design, as well as the rapid pace in technological evolution by this time, certain fundamental concepts that emerged long back, still by and large, are consistently applied throughout, even at the present age of supercomputers. The implementation of the ongoing concepts existing at any point of time over this period is, however, observed to be decided mostly by the current state of technology and cost/performance, in order to fulfil certain primary prevailing objectives. Sometimes the implementation of an innovative design remains awaiting for the introduction of a befitting technology. This chapter, although not a complete one, highlights only the selective salient features of the ongoing evolution in the technology to realize numerous advanced computer components that summarily set the stage of a revolution in the design, organisation, and architecture of the computer system along with its inseparable part, the OS, as a whole.
Computer Organisation and Architecture
Computers are often described, categorized, and distinguished in terms of their design, organisation, and architecture. Computer design is mostly concerned in the formulation of the specifications of the proposed computer system considering primarily the different hardware components and the types of hardware facilities to be provided, the type of applications to be normally run, the target user community and their financial capability, the maximum permissible cost of the system and its allied performance, and similar other related aspects. All these when considered together lead to build up a computer system, which is called computer design (Blaauw).
After the selection of all the appropriate operational hardware units, the issues are now the relative placement of these units, and the way how the units are to be interconnected with one another for smooth operation as intended - all these when considered together lead to conceive a model of an abstract machine, which is known as computer organisation.
Computer architecture involves both hardware organisation and the behaviour of the computer as experienced by the user. This includes the number of registers, instruction set, instruction format, addressing modes, the techniques for addressing memory, and similar other attributes that have a direct impact on the logical execution of a program. The architectural design also includes the specification of various functional models (like CPU (central processing unit), caches, buses, microcodes, and physical memory, etc.) and structuring of these models and their interoperations that eventually lead to essentially realize a complete computer system to achieve the desired system performance, which is the ultimate goal in the study of computer architecture.
Nevertheless, the architecture of the computer entails many other different issues, including the processor design that itself constitutes a central and very important element of computer architecture. That is why, various functional elements of a processor must be designed, interconnected without much affecting the existing organisation, and interoperated in such a way that desired processor performance can be achieved.
In summary, it can be concluded that whenever a specific hardware system is built up, a lot of strategies must be framed in advance, mainly with certain aspects in regard to each individual resource to be used, their relative placements, as well as the interconnections to be made between them so as to lead to a totality, commonly referred to as computer organisation (Langholz, G., et al.). The organisation of the computer must be designed in such a way that a particular architectural specification can be judiciously implemented. In fact, a thorough treatment of organisation requires a detailed examination of the architecture as well.
Hardware and Software: An Introductory Concept
A computing system consists of hardware, software, and programming elements, which are considered as its basic components. The electronic circuit, which is the lowest level of a computer system, consists of tangible objects such as processor, memory, input-output (I/O) devices, cables, integrated circuits ICs, printed circuit board, and power supplies, which all form the computer hardware. The basic hardware elements in any computer system, be it a tiny microcomputer, minicomputer, supermini, mainframe, or gigantic supercomputer, are processor, memory, I/O devices, and interconnecting buses. Depending on certain basic parameters (such as size, capacity, capability, power, and speed) of these individual resources and considering the characteristics of the interconnections made between resources, the computers are accordingly classified. These resources, however, are normally driven individually by the respective software.
Software essentially consists of the systematic steps (algorithms) to be executed to perform a predefined task, and their computer representation in the form of a collective meaningful sequence of suitable instructions is called a program. Software of any kind, however, is essentially the programs of any types and never includes the physical devices on which it resides. Software associated with computer systems truly defines and determines the ways that actually drive the hardware resources of the system. It is a key factor that unfolds the actual strength of the hardware by driving it properly to extract the best potential out of it. In fact, the joint effort of the software and the hardware manifests the real performance of the system. Software is mainly differentiated according to its purpose and broadly classified into two distinct categories, namely application software and system software. Application software is developed using mostly high-level programming languages that mainly cater to the specific needs of the concerned user.
Some common programs that are developed to drive, control, and monitor the operations of the computing system resources as and when they are required to make computers better adapt to the needs of their users are historically called the system software. Numerous I/O devices also require device-dependent programs that control and monitor the smooth operation of the devices during an I/O operation. These programs are essentially the system software known as device driver or sometimes called IOCS (input-output control system). All these programs are mostly written using a low-level language, such as assembly language and binary language, which are very near to the machine's (hardware's) own language or have the pattern so that the machine resources can be directly accessed from the user level. Nowadays, they are often developed also using a high-level language (HLL) like "C". Common system software, in particular, is very general and covers a broad spectrum of functionalities. It mainly comprises three major subsystems: (i) language translators and runtime supporting systems for a programming language (compiler, assembler, loader), (ii) utility systems, and (iii) operating sustems. Some system software programs, such as graphic library, an artificial intelligence, image processing, and expert system,
are specific to a particular application area and are rather not very common in others. The OS, compiler, assembler, loader, and to some extent the utilities are mainly required to commit physical hardware (machine) resources to bind with the application program for its execution. The optimal design of these software programs based on the architecture and organisation of the underlying hardware, their offered facilities, and lastly their effectiveness ultimately determine the efficiency of the hardware utilization and the programmability of the computer system as a whole. Figure 1.1, however, illustrates a conceptual representation of an overall computing environment when viewed from a user end in respect of the relative placement of hardware and the different types of software as already mentioned, including the OS.
With continuous steady advancement in computer technology, a different form other than that of traditional hardware and software gradually emerges, historically known as the firmware, which is assumed to be an intermediate form present in between hardware and software, and indeed, a form of low-level software embedded in electronic hardware devices (normally in IC chips). This software is usually (not necessarily) infused at the time of hardware fabrication (manufacturing), or sometimes implanted later into the specified hardware. The programs as written are expected to be never changed, or at most are
Level-wise position of OS, system software, and hardware organisation.
rarely modified. Nowadays, many appliances and instruments, process control systems, toys, etc. extensively use firmware for their control while in action. The programs in the firmware remain unchanged even when the power is off. Microprogram in many computers, in essence, is also a firmware.