Notes on Computer organization and design

From Zheyong Fan
Jump to navigation Jump to search

Computer abstractions and technology

Introduction

Different computers:

  • Desktop computer: A computer designed for use by an individual, usually incorporating a graphics display, a keybord, and a mouse.
  • Server: A computer used for running larger programs for multiple users, often simultaneously, and typically accessed only via a network.
  • Supercomputer: A class of computers with the highest performance and cost.
  • Embedded computer: A computer inside another device used for running one predetermined application or collection of software.

Below your program

  • Between the hardware and the application software, there is system software.
  • System software provides services that are commonly useful, including operating systems, compilers, loaders, and assemblers.
  • Operating system is a supervising program that manages the resources of a computer for the benefit of the programs that run on that computer. Examples of operating systems in use today are Linux, MacOs, and Windows.
  • A Compiler translates a program written in a high-level language such as C into instructions that the hardware can execute.
  • A bit is a binary digit.
  • An instruction is a command consisting a sequence of bits that the computer hardware understands and obeys. All the instructions constitute the machine language.
  • An assembly language is a symbolic representation of machine instructions. A program that translates assembly language to machine language is called an assembler.
  • A high-level programming language is a portable language that is composed of words and algebraic notation that can be translated by a compiler into assembly language.
  • Advantages of a high-level programming language to an assembly language:
    • Easier to write and read.
    • More portable.

Under the covers

Instructions: Language of the computer

Arithmetic for computers

The processor

Large and fast: exploiting the memory hierarchy

Storage and other I/O topics

Multicores, multiprocessors, and clusters