msc-computer-science-notes

MSC Computer Architecture And Operating Systems

This module is for MSC Algorithm and Data Structure lesson notes.

Special thanks to H. Ozgur Cagdas for his great detailed notes.

Overview

WEEK 1

Fundamentals

John von Neumann Model

alt text

John von Neumann Model Bottleneck

Clock signals

Software view point

Electronics

Speed versus complexity

Processors: the heart of the machine.

Heat and power constraints

CPU architecture

Beating the performance barrier

Processor frequency

Scalar execution model

Pipelining

Superscalar execution model

Data flow analysis

Branch Prediction

Speculative execution

Performance Balance

Instruction micro-sequencing

Introduction to Pipelining

Terminology of Instructions

alt text alt text

LDI R1,9
LDI R2,3
ADD R1,R2,R3
MUL R1,R3,R1
HALT
LDI R1,3
LDI R2,5
MUL R1,R2,R3
LDI R1,6
LDI R2,4
MUL R1,R2,R4
SUB R4,R3, R1
HALT

Computers Everywhere

General purpose computers

Embedded Systems

Mainframes and supercomputers

Ambdal’s Law

TODO Week 1 :

WEEK 2

Making Memory

Volatile and Non-Volatile Memory

Non-volatile memories

Questions:

DRAM (Dynamic Random Access Memory)

Memory Timing Concept:

Performance calculation:

Boosting Memory Performance

Burst Mode Access

Mixed burst mode

Fast Page Mode Access

Locality

The Performance Challenge

Cache for Speedup

Multi-level Cache

Anatomy of a Real Cache Hierarchy

Performance Impact of Cache Parameters

alt text

Memory Mountain

QUIZ - WEEK 2

Quick calculations :

More about memory

Memory maps

alt text

Cache Coherency

Activity - Memory Maps

  1. Draw a memory map for each of the following cases:
  1. (Difficult) A system exists where two computer systems share a portion of memory. Both systems have a 64K address space, 8K ROM, 32K RAM. System one has a further 4K RAM mapped at the top of memory, which is shared with system two, where the same RAM appears directly after the ROM.
    • Detail Explanation : the IO devices don’t hold 1024 registers but instead hold 8 registers each. However, each register can be 32 bits which means that each IO device can be 256 bits. Remember that you are dealing with memory here. In reality, each register can hold between 8 bits and 64 bits based on the size of the memory addresses being used by the system so again, the decision is up to the designer and the system they are working with.

Readings - Week 2:

NOTES:

TODO Week 2:

WEEK 3

Building the System

Bus Evaluations

The system bus vs the dedicated bus

Concurrency in bus architecture

Bus standards

A generic system bus

PCI: a very successful Bus Standard

Data rate matching and buffers

USB: Universal Serial Bus

More common bus standards

Industrial and embedded standards

I2C (Inter-Integrated Chip) bus standard.

CAN (Controller Area Network) bus

Rack-mount, hot-swap, and servers

IO device mapping and IO servicing

Bus Protocols and Efficiency

Busses And Concurrency

3.4 Activity: Bus standards

Asynchronous bus protocols

Advanced Bus exercises

Question 1:

Answer 1:

Question 2:

Answer 2:

Question 3:

Answer 3:

Storage Technologies

Disk Performance Concepts

EXAMPLE:



Hard Disk Drive, HDD

Tracks, Sectors and Fragmentation

Solid State Drives (SSD)

Reliability and fault tolerance

Peripherals and interfaces

WEEK 4

Operating System Concepts

Boot! - From Power-on to Login

The OS and Abstraction

OS Types

QUIZ: Operating Systems

The purpose of the kernel

Exceptions

Exception Handling

Exception classes

Interrupts

Traps and system calls

Faults

Aborts

Linux x86/64

Workload Management

Tasks and Process

Process Identifier (PIDs) and housekeeping

Multithreading Concepts

Task Scheduling

Scheduling Algorithms

Activity : What is your computer actually doing

From scalar to superscalar

Multicore

Process Parallelism

How programmers use threads

Thread safety

Races

Concurrent programming with threads

WEEK 5

Memory Allocation

Linking

Virtual Memory

Task Privacy and Isolation

Memory Management

Swapping

Partitioning

Paging

Privileges and restrictions

Activity: Memory management knowledge test

File systems

Volumes and partitions

File system directory structures

Activity: File systems knowledge check

File formats and storage options

File attributes

File compression

File encryption

Filesystem resilience

File formats

File structures and encodings

TODO : Week 5

WEEK 6

Open Systems Interconnection, OSI, reference model

Bridging, Switching

Routing

Quiz : Network Basics

Getting Connected

Network node identification

Network Services

Sockets Interface

Distributed systems

Netstat

IPv6

Virtualisation

WEEK 7

Threats and weaknesses

Security threats

Viruses

Virus checkers, aka anti-virus software

Virus examples

Architectural exploits

Firewalls

The resilient system

Encryption and validation

Data resilience

Resilient systems

UPS (Uninterruptible Power Supply) systems

Resilience and safety

Activity - week 7

Notes for me :

Terms and Computing Common Measurements

Definitions and Orders of Magnitude for Common Computing Measures

This list of common computing terms and their abbreviations is intended as a simple guide to the most common measurements used to describe computing units and are taken from the international SI standards. Note: The inclusion of units and definitions is for information only and does not indicate that they will be used as part of the module or that they are included in assessment questions.

Time :

The most common units of time used in computing to measure time performance are listed in the following table:

Use of Decimal and Hexadecimal Notation

Hexadecimal notation is a numbering system. Unlike decimal notation (base 10) or binary notation (base 2), it uses 16 digits (base 16). It is used as a convenient way to represent binary notation, which can be difficult to read and prone to error when manipulated by humans.

Data Size

A byte is a unit of digital information that most commonly consists of eight bits. Larger units based on the byte are used to measure information using either decimal or binary units. Whilst at lower values, the differences between the units are small, the differences between binary and decimal notations increase with size. In this module, the default is the long-established approach of using binary megabytes, gigabytes, etc., unless stated otherwise [1]. Broadly speaking, binary-based values are used for memory capacities, addressing, and mapping, whilst decimal values are used for data rates and disk storage capacities.

Frequency

Frequency is measured using decimal values as the number of cycles per second.

Computing Performance

Floating point operations per second (FLOPS, flops or flop/s) is a measure of computer performance, useful in fields of computation that require floating-point calculations. For such cases, it is a more accurate performance measure than measuring instructions per second.

References: [1] W. Stallings, Computer Organisation and Architecture. Global Edition, 11th ed. Pearson, London, UK,

  1. Chapter 10. Number systems.