Professional Documents
Culture Documents
Lecture 5
Lecture 5
Lecture 5
Topics
• Software (System/Application)
• Computer Organization
• Architecture and its Organization
• Basic Architectural Design Principles
• Caching
• Measuring Performance
• Aspects of Computer Performance
Software
• Computer software, or simply software, is a generic term that refers to a collection of data or
computer instructions that tell the computer how to work.
• The majority of software is written in high-level programming languages that are easier and
more efficient for programmers to use because of their familiarity with natural languages.
• TYPES OF SOFTWARE
• System software: is software that directly operates the computer hardware, to provide basic
functionality needed by users and other software, and to provide a platform for running
application software.
• Application software: is software that uses the computer system to perform special functions
or provide entertainment functions beyond the basic operation of the computer itself.
Types of System Software
• TYPES OF SYSTEM SOFTWARE
• Operating systems: are essential collections of software that manage resources and provides
common services for other software that runs "on top" of them.
• Device drivers: operate or control a particular type of device that is attached to a computer.
Each device needs at least one corresponding device driver.
• Utilities: are computer programs designed to assist users in the maintenance and care of
their computers. E.g., Disk Defragmenter.
• Malicious software or malware: is software that is developed to harm and disrupt
computers. As such, malware is undesirable.
Types of Application Software
• TYPES OF APPLICATION SOFTWARE
• Smaller is faster
• Must have a good reason for adding an instruction, register etc.
• memory hierarchy: registers, caches, main memory
• Keep it simple, stupid: this principle simplicity favors smaller designs
and shorter design time
Assembly Language
• Symbolic form of computer machine language
• Easier to understand in comparison to machine language
• Level 2 (L2) cache, or secondary cache, is often more capacious than L1. L2 cache may be
embedded on the CPU, or it can be on a separate chip or coprocessor and have a high-
speed alternative system bus connecting the cache and CPU. That way it doesn't get
slowed by traffic on the main system bus.
• Level 3 (L3) cache is specialized memory developed to improve the performance of L1 and
L2. L1 or L2 can be significantly faster than L3, though L3 is usually double the speed of
RAM.
• L3 cache. (Level 3 cache) A memory bank built onto the motherboard or within the CPU
module. The L3 cache feeds the L2 cache, and its memory is typically slower than the L2
memory, but faster than main memory. The L3 cache feeds the L2 cache, which feeds the
L1 cache, which feeds the processor.
Computer Performance and Benchmarks
• In computing, the performance of a computer system refers to the amount of useful work it accomplishes
(i.e. instructions it executes).
• When it comes to computers with high performance however, one or more of the following factors may be
involved:
• Short response time for a given piece of work.
• High throughput (rate of processing work).
• Low utilization of computing resource(s).
• High availability of the computing system or application.
• Fast (or highly compact) data compression and decompression.
• High bandwidth.
• Short data transmission time.
• Benchmarks are programs that have been developed to test a CPU on all aspects of performance.
• EXAMPLES: SPECint and SPECfp benchmarks developed by Standard Performance Evaluation Corporation.
Performance
• Performance improvements:
– Improvements in semiconductor technology
• Architecture (e.g., 10nm architecture), clock speed
– Improvements in computer architectures
• Lead to RISC architectures
RISC
•As we see in the Graph on the Previous Slide, with the advent of Multi-
Processor/Multi-core systems, the Performance Percentage has decreased
from 52%/Year to 22%/Year.
•The reason for this is that Multi-core CPUs were designed after considering
the limitations of Single Core CPUs under High Performance Conditions such as
Over clocking.
•Multi-core CPUs feature separate Cache Memory for each core, therefore
improved performance can be obtained even at lower clock speeds than the
Single Core CPUs and over clocking is not required as it can damage the CPU.
Current Trends in Architecture
• Cannot continue to leverage Instruction-Level
parallelism (ILP)
– Single processor performance improvement ended in 2003
– A common type of Data Parallelism is when you convert a large video file into some
format, in that case, the file is split into two or more parts and each part is assigned to
each core of the CPU for conversion.
Request Level Parallelism (RLP): is another way of representing tasks which are
nothing but a set of requests which we are going to run in parallel. When we use
the term Request then we mean that user is asking for some information which
servers are going to respond in parallel.
Flynn’s Taxonomy
• Single instruction stream, single data stream (SISD)
• SIMD is particularly applicable to common tasks such as adjusting the contrast in a digital
image or adjusting volume of an audio or video file. Most modern CPU designs include SIMD
instructions to improve the performance of multimedia use.
Flynn’s Taxonomy
• MISD: In computing, MISD (multiple instruction, single data) is a type of parallel
computing architecture where many functional units perform different operations on the
same data.
• Execution time
– Wall clock time: includes all system overheads
– CPU time: only computation time
• Benchmarks
– Kernels (e.g. matrix multiply)
– Toy programs (e.g. sorting)
– Synthetic benchmarks (e.g. Dhrystone)
– Benchmark suites(Standard Performance Eval. Coorp’s SPEC06fp, TPC-C)
Benchmark name by SPEC gen.
Aspects of Computer Performance
Aspects of Computer Performance include:
•Availability
•Response Time
•Processing Speed
•Channel Capacity
•Latency
•Bandwidth
•Throughput
•Scalability
•Power Consumption
•Performance Per Watt
•Speedup
•Hardware Acceleration
Aspects of Computer Performance
Availability: Availability of a system is typically measured as a factor of its reliability - as reliability increases, so does
availability (that is, less downtime).
Availability of a system may also be increased by the strategy of focusing on increasing testability and maintainability.
Response Time: Response time is the total amount of time it takes to respond to a request for service. In computing, that
service can be any unit of work from a simple disk IO to loading a complex web page.
Channel Capacity: Channel capacity is the tightest upper bound on the rate of information that can be reliably transmitted
over a communications channel.
Latency: Latency is a time delay between the cause and the effect of some physical change in the system being observed.
Online games are sensitive to latency since fast response times to new events occurring during a game session are
rewarded while slow response times may carry penalties. Lag is the term used to describe latency in gaming.
Network latency in a packet-switched network is measured as either one-way (the time from the source sending a packet
to the destination receiving it), or round-trip delay time (the one-way latency from source to destination plus the one-way
latency from the destination back to the source).
Aspects of Computer Performance
Bandwidth: Bandwidth is a measurement of bit-rate of available data communication resources, expressed in bits per second or
multiples of it (bit/s, kbit/s, Mbit/s, Gbit/s, etc.).
Scalability: Scalability is the ability of a system, network, or process to handle a growing amount of work in a capable manner or its
ability to be enlarged to accommodate that growth.
Power Consumption: The amount of electricity used by the computer. This becomes especially important for systems with limited
power sources such as solar, batteries, human power.
Performance Per Watt: In computing, performance per watt is a measure of the energy efficiency of a particular computer
architecture or computer hardware. Literally, it measures the rate of computation that can be delivered by a computer for
every watt of power consumed.
Speedup: In computer architecture, speedup is a number that measures the relative performance of two systems processing the same
problem.
Hardware Acceleration: Hardware acceleration is the use of computer hardware specially made to perform some functions more
efficiently than is possible in software running on a general-purpose CPU.
The implementation of computing tasks in hardware to decrease latency and increase throughput is known as hardware acceleration.
Examples of hardware acceleration include graphics acceleration functionality in graphics processing units (GPUs).