Lectures for 2nd Edition

Download Report

Transcript Lectures for 2nd Edition

Chapter 4
2004 Morgan Kaufmann Publishers
1
2004 Morgan Kaufmann Publishers
2
Outline
• 4.1 Introduction
• 4.2 CPU Performance and Its Factor
• 4.3 Evaluating Performance
• 4.4 Real Stuff: Two SPEC Benchmarks and the Performance
of Recent Intel Processors
• 4.5 Fallacies and Pitfalls
• 4.6 Concluding Remarks
• 4.7 Historical Perspective and Further Reading
• 4.8 Exercises
2004 Morgan Kaufmann Publishers
3
4.1
Introduction
2004 Morgan Kaufmann Publishers
4
Keywords
• Response time Also called execution time. The total time
required for the computer to complete a task, including disk
accesses, memory accesses, I/O activities, operating system
overhead, CPU execution time, and so on.
• CPU execution time Also called CPU time. The actual time the
CPU spends computing for a special task.
• User CPU time
The CPU time spent in a program itself.
• System CPU time The CPU time spent in the operating system
performing tasks on behalf of the program.
• Clock cycle Also called tick, clock tick, clock period, clock, cycle.
The time for one clock period, usually of the processor clock,
which runs at a constant rate.
• Clock period
The length of each clock cycle.
2004 Morgan Kaufmann Publishers
5
Performance
•
•
•
•
Measure, Report, and Summarize
Make intelligent choices
See through the marketing hype
Key to understanding underlying organizational motivation
Why is some hardware better than others for different programs?
What factors of system performance are hardware related?
(e.g., Do we need a new machine, or a new operating system?)
How does the machine's instruction set affect performance?
2004 Morgan Kaufmann Publishers
6
Which of these airplanes has the best performance?
Airplane
Passengers
Boeing 737-100
Boeing 747
BAC/Sud Concorde
Douglas DC-8-50
101
470
132
146
Range (mi) Speed (mph)
630
4150
4000
8720
598
610
1350
544
•How much faster is the Concorde compared to the 747?
•How much bigger is the 747 than the Douglas DC-8?
2004 Morgan Kaufmann Publishers
7
Computer Performance: TIME, TIME, TIME
•
Response Time (latency)
— How long does it take for my job to run?
— How long does it take to execute a job?
— How long must I wait for the database query?
•
Throughput
— How many jobs can the machine run at once?
— What is the average execution rate?
— How much work is getting done?
•
If we upgrade a machine with a new processor what do we increase?
•
If we add a new machine to the lab what do we increase?
2004 Morgan Kaufmann Publishers
8
Execution Time
•
•
•
Elapsed Time
– counts everything (disk and memory accesses, I/O , etc.)
– a useful number, but often not good for comparison purposes
CPU time
– doesn't count I/O or time spent running other programs
– can be broken up into system time, and user time
Our focus: user CPU time
– time spent executing the lines of code that are "in" our program
2004 Morgan Kaufmann Publishers
9
常用單位換算表
單位名稱
十進位
二進位
縮寫
milli
10-3
m
micro
10-6
μ
nano
10-9
n
pico
10-12
p
Kilo
103
210
K
Mega
106
220
M
Giga
109
230
G
Tera
1012
240
T
2004 Morgan Kaufmann Publishers
10
Book's Definition of Performance
•
For some program running on machine X,
PerformanceX = 1 / Execution timeX
•
"X is n times faster than Y"
PerformanceX / PerformanceY = n
Then the execution time on Y is n times longer than it is on X:
Perform anceX Executiontim eY

n
Perform anceY Executiontim eX
•
Problem:
– machine A runs a program in 20 seconds
– machine B runs the same program in 25 seconds
2004 Morgan Kaufmann Publishers
11
Relative performance
•
If computer A runs a program in 10 seconds and computer B runs
the same program in 15 seconds, how much faster is A than B?
We know that A is n times faster than B if
Perform anceA Executiontim eB

n
Perform anceB Executiontim eA
Thus the performance ratio is
15/10 = 1.5
and A is therefore 1.5 times faster than B.
2004 Morgan Kaufmann Publishers
12
Clock Cycles
•
Instead of reporting execution time in seconds, we often use cycles
seconds
cycles
seconds


program program
cycle
•
Clock “ticks” indicate when to start activities (one abstraction):
time
•
•
cycle time = time between ticks = seconds per cycle
clock rate (frequency) = cycles per second (1 Hz. = 1 cycle/sec)
A 4 Ghz. clock has a
1
4 109
1012  250 picoseconds (ps) cycle time
(0.25 nanoseconds, 0.25 ns)
2004 Morgan Kaufmann Publishers
13
How to Improve Performance
seconds
cycles
seconds


program program
cycle
So, to improve performance (everything else being equal) you can
either (increase or decrease?)
________ the # of required cycles for a program, or
________ the clock cycle time or, said another way,
________ the clock rate.
2004 Morgan Kaufmann Publishers
14
How many cycles are required for a program?
...
6th
5th
4th
3rd instruction
2nd instruction
Could assume that number of cycles equals number of instructions
1st instruction
•
time
This assumption is incorrect,
different instructions take different amounts of time on different machines.
Why? hint: remember that these are machine instructions, not lines of C code
2004 Morgan Kaufmann Publishers
15
Different numbers of cycles for different instructions
time
•
Multiplication takes more time than addition
•
Floating point operations take longer than integer ones
•
Accessing memory takes more time than accessing registers
•
Important point: changing the cycle time often changes the number of
cycles required for various instructions (more later)
2004 Morgan Kaufmann Publishers
16
Example
•
Our favorite program runs in 10 seconds on computer A, which has a
4 GHz. clock. We are trying to help a computer designer build a new
machine B, that will run this program in 6 seconds. The designer can use
new (or perhaps more expensive) technology to substantially increase the
clock rate, but has informed us that this increase will affect the rest of the
CPU design, causing machine B to require 1.2 times as many clock cycles as
machine A for the same program. What clock rate should we tell the
designer to target?"
•
Don't Panic, can easily work this out from basic principles
2004 Morgan Kaufmann Publishers
17
Now that we understand cycles
•
A given program will require
– some number of instructions (machine instructions)
– some number of cycles
– some number of seconds
•
We have a vocabulary that relates these quantities:
– cycle time (seconds per cycle)
– clock rate (cycles per second)
– CPI (cycles per instruction)
a floating point intensive application might have a higher CPI
– MIPS (millions of instructions per second)
this would be higher for a program using simple instructions
2004 Morgan Kaufmann Publishers
18
4.2
CPU performance and Its Factors
2004 Morgan Kaufmann Publishers
19
Keywords
• Clock cycle per instruction (CPI) Average number of clock cycles
per instruction for a program or program fragment.
• Instruction mix A measure of the dynamic frequency of
instructions across one or many programs.
2004 Morgan Kaufmann Publishers
20
Performance
•
•
Performance is determined by execution time
Do any of the other variables equal performance?
– # of cycles to execute program?
– # of instructions in program?
– # of cycles per second?
– average # of cycles per instruction?
– average # of instructions per second?
•
Common pitfall: thinking one of the variables is indicative of
performance when it really isn’t.
2004 Morgan Kaufmann Publishers
21
•
A simple formula relates the most basic metrics (clock cycles and
clock cycle time) to CPU time:
CPU executiontime CPU clock cycles

 Clock cycle time
for a program
for a program
Alternatively, because clock rate and clock cycle time are inverses,
CPU executiontime CPU clock cyclesfor a program

for a program
Clock rate
2004 Morgan Kaufmann Publishers
22
Improving Performance
• Our favorite program runs in 10 seconds on compute A, which has
4 GHz clock. We are trying to help a computer designer build a
computer, B, that will run this program in 6 seconds. The designer
has determined that a substantial increase in the clock rate is
possible, but this increase will affect the rest of the CPU design,
causing computer B to require 1.2 times as many clock cycles as
computer A for this program. What clock rate should we tell the
designer to target?
2004 Morgan Kaufmann Publishers
23
• Solution:
(1)Let’s first find the number of clock cycles required for the program on A:
CPU timeA 
CPU clock cyclesA
Clock rateA
10 seconds 
CPU clock cyclesA
cycles
4 109
second
CPU clock cycles A  10 second  4 10 9
cycles
 40 10 9 cycles
second
2004 Morgan Kaufmann Publishers
24
(2)CPU time for B can be found using this equation:
CPU timeB 
1.2 CPU clock cyclesA
Clock rateB
1.2 40109 cycles
6 seconds 
Clock rateB
1.2  40109 cycles 8 109 cycles
Clock rateB 

 8 GHz
6seconds
second
computer B must therefore have twice the clock rate of A to run
the program in 6 seconds.
2004 Morgan Kaufmann Publishers
25
CPI Example
•
Suppose we have two implementations of the same instruction set
architecture (ISA).
For some program,
Machine A has a clock cycle time of 250 ps and a CPI of 2.0
Machine B has a clock cycle time of 500 ps and a CPI of 1.2
What machine is faster for this program, and by how much?
•
If two machines have the same ISA which of our quantities (e.g., clock rate,
CPI, execution time, # of instructions, MIPS) will always be identical?
2004 Morgan Kaufmann Publishers
26
• Solution:
CPU clock cyclesA  I  2.0
CPU clock cyclesB  I 1.2
Now we can compute the CPU time for each computer:
CPU timeA  CPU clock cyclesA  Clock cycle timeA
 I  2.0  250 ps  500 I ps
Clearly, computer A is faster. The amount faster is given by the
ratio of the execution times:
CPU performanc
e A ExecutiontimeB 600 I ps


 1.2
CPU performanc
e B ExecutiontimeA 500 I ps
We can conclude that computer A is 1.2 times as fast as computer
B for this program.
2004 Morgan Kaufmann Publishers 27
Figure 4.2 The basic components of performance and
how each is measured.
Components of performance
Units of measure
CPU execution time for a program
Seconds for the program
Instruction count
Instructions executed for the program
Clock cycles per instruction (CPI)
Average number of clock cycles per instruction
Clock cycle time
Seconds per clock cycle
2004 Morgan Kaufmann Publishers
28
# of Instructions Example
•
A compiler designer is trying to decide between two code sequences
for a particular machine. Based on the hardware implementation,
there are three different classes of instructions: Class A, Class B, and
Class C, and they require one, two, and three cycles (respectively).
The first code sequence has 5 instructions: 2 of A, 1 of B, and 2 of C
The second sequence has 6 instructions: 4 of A, 1 of B, and 1 of C.
Which sequence will be faster? How much?
What is the CPI for each sequence?
2004 Morgan Kaufmann Publishers
29
•
Solution:
We can use the equation for CPU clock cycles based on instruction count
and CPI to find the total number of clock cycles for each sequence:
n
CPU clock cycles  (CPIi  Ci )
i 1
This yields
CPU clock cycles1  (21)  (1 2)  (2 3)  2  2  6  10 cycles
CPU clock cycles2  (41)  (1 2)  (1 3)  4  2  3  9 cycles
The CPI values can be computed by
CP U clock cycles
Instruction count
CP U clock cycles1 10
CP I1 
 2
Instruction count1 5
CP I 
CP I2 
CP U clock cycles2 9
  1.5
Instruction count2 6
2004 Morgan Kaufmann Publishers
30
MIPS example
•
Two different compilers are being tested for a 4 GHz. machine with
three different classes of instructions: Class A, Class B, and Class
C, which require one, two, and three cycles (respectively). Both
compilers are used to produce code for a large piece of software.
The first compiler's code uses 5 million Class A instructions, 1
million Class B instructions, and 1 million Class C instructions.
The second compiler's code uses 10 million Class A instructions, 1
million Class B instructions, and 1 million Class C instructions.
•
•
Which sequence will be faster according to MIPS?
Which sequence will be faster according to execution time?
2004 Morgan Kaufmann Publishers
31
4.3
Evaluating Performance
2004 Morgan Kaufmann Publishers
32
Keywords
• Workload A set of programs run on a computer that is either the
actual collection of applications run by a user or is constructed
from real programs to approximate such a mix. A typical workload
specifies both the programs as well as the relative frequencies.
• Arithmetic mean The average of the execution times that is
directly proportional to total execution time.
1 n
AM   T imei
n i 1
• Weight arithmetic mean An average of the execution time of a
workload with weighting factors designed to reflect the presence
of the programs in a workload; computed as the sum of the
products of weighting factors and execution times.
2004 Morgan Kaufmann Publishers
33
Figure4.3 System description of a desktop system
using the fastest Pentium 4 available in 2003.
Hardware
Hardware vendor
Dell
Model number
Precision Workstation 360 (3.2 GHz Pentium 4 Extreme Edition)
CPU
Intel Pentium 4 (800 MHz system bus)
CPU MHz
3200
FPU
Integrated
CPU(s) exabled
1
CPU(s) orderable
1
Parallel
No
Primary cache
12K(I) micro-ops + 8KB(D) on chip
Secondary cache
512KB (I+D) on chip
L3 cache
2048KB(I+D) on chip
Other cache
N/A
Memory
4*512MB ECC DDR400 SDRAM CL3
Disk subsystem
1*80GB ATA/100 7200 RPM
Other hardware
2004 Morgan Kaufmann Publishers
34
Software
Operating system
Windows XP Professional SP1
Compiler
Intel C++ Compiler 7.1 (20030402Z)
Microsoft Visual Studio.NET (7.0.9466)
MicroQuill SmartHeap Library 6.01
File system type
NTFS
System state
Default
2004 Morgan Kaufmann Publishers
35
Figure4.4 Execution times of two programs on two
different computers.
Computer A
Computer B
Program 1 (seconds)
1
10
Program 2 (seconds)
1000
100
Total time (seconds)
1001
110
2004 Morgan Kaufmann Publishers
36
4.4 Real Stuff: Two SPEC Benchmarks
and the Performance of Recent Intel
Processors
2004 Morgan Kaufmann Publishers
37
Keywords
• System performance evaluation cooperative (SPEC) benchmark
A set of standard CPU-intensive, integer and floating point
benchmarks based on real programs.
2004 Morgan Kaufmann Publishers
38
Benchmarks
•
•
•
Performance best determined by running a real application
– Use programs typical of expected workload
– Or, typical of expected class of applications
e.g., compilers/editors, scientific applications, graphics, etc.
Small benchmarks
– nice for architects and designers
– easy to standardize
– can be abused
SPEC (System Performance Evaluation Cooperative)
– companies have agreed on a set of real program and inputs
– valuable indicator of performance (and compiler technology)
– can still be abused
2004 Morgan Kaufmann Publishers
39
Benchmark Games
•
An embarrassed Intel Corp. acknowledged Friday that a bug in a
software program known as a compiler had led the company to
overstate the speed of its microprocessor chips on an industry
benchmark by 10 percent. However, industry analysts said the
coding error…was a sad commentary on a common industry
practice of “cheating” on standardized performance tests…The error
was pointed out to Intel two days ago by a competitor,
Motorola …came in a test known as SPECint92…Intel acknowledged
that it had “optimized” its compiler to improve its test scores. The
company had also said that it did not like the practice but felt to
compelled to make the optimizations because its competitors were
doing the same thing…At the heart of Intel’s problem is the practice
of “tuning” compiler programs to recognize certain computing
problems in the test and then substituting special handwritten
pieces of code…
Saturday, January 6, 1996 New York Times
2004 Morgan Kaufmann Publishers
40
SPEC ‘89
Compiler “enhancements” and performance
800
700
600
SPEC performance ratio
•
500
400
300
200
100
0
gcc
espresso
spice
doduc
nasa7
li
eqntott
matrix300
fpppp
tomcatv
Benchmark
Compiler
Enhanced compiler
2004 Morgan Kaufmann Publishers
41
SPEC CPU2000
2004 Morgan Kaufmann Publishers
42
SPEC 2000
Does doubling the clock rate double the performance?
Can a machine with a slower clock rate have better performance?
1400
1200
Pentium 4 CFP2000
1000
Pentium 4 CINT2000
800
600
Pentium III CINT2000
400
Pentium III CFP2000
200
0
500
1000
1500
2000
2500
3000
3500
Clock rate in MHz
2004 Morgan Kaufmann Publishers
43
Figure4.7 SPEC web9999 performance for a variety of Dell PowerEdge systems
using the Xeon versions of the Pentium III and Pentium 4 microprocessors.
System
Processor
Number
of disk
drives
Number
of CPUs
Number
of
networks
Clock
rate
(GHz)
Result
1550/1000
Pentium III
2
2
2
1
2765
1650
Pentium III
3
2
1
1.4
1810
2500
Pentium III
8
2
4
1.13
3435
2550
Pentium III
1
2
1
1.26
1454
2650
Pentium 4 Xeon
5
2
4
3.06
5698
4600
Pentium 4 Xeon
10
2
4
2.2
4615
6400/700
Pentium III Xeon
5
4
4
0.7
4200
6600
Pentium 4 Xeon XP
8
4
8
2
6700
8450/700
Pentium III Xeon
7
8
8
0.7
8001
2004 Morgan Kaufmann Publishers
44
1.6
Pentium M @ 1.6/0.6 GHz
Pentium 4-M @ 2.4/1.2 GHz
1.4
Pentium III-M @ 1.2/0.8 GHz
1.2
1.0
0.8
0.6
0.4
0.2
0.0
SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000
Always on/maximum clock
Laptop mode/adaptive
clock
Minimum power/minimum
clock
Benchmark and power mode
2004 Morgan Kaufmann Publishers
45
Experiment
•
Phone a major computer retailer and tell them you are having trouble
deciding between two different computers, specifically you are
confused about the processors strengths and weaknesses
(e.g., Pentium 4 at 2Ghz vs. Celeron M at 1.4 Ghz )
•
What kind of response are you likely to get?
•
What kind of response could you give a friend with the same
question?
2004 Morgan Kaufmann Publishers
46
4.5
Fallacies and Pitfalls
2004 Morgan Kaufmann Publishers
47
Keywords
• Amdahl’s law A rule stating that the performance enhancement
possible with a given improvement is limited by the amount that
the improved feature is used.
Executiontimeafterimprovemen
t
 Executiontimeaffectedby improvemen

t
 
 Executiontimeunaffected
Amountof improvemen
t


• Million instruction per second (MIPS) A measurement of
program execution speed based on the number of millions of
instructions. MIPS is computed as the instruction count divided by
6
the product of the execution time and 10 .
MIPS 
Instructio n count
Execution time 10 6
2004 Morgan Kaufmann Publishers
48
Amdahl's Law
Execution Time After Improvement =
Execution Time Unaffected +( Execution Time Affected / Amount of Improvement )
•
Example:
"Suppose a program runs in 100 seconds on a machine, with
multiply responsible for 80 seconds of this time. How much do we have to
improve the speed of multiplication if we want the program to run 4 times
faster?"
How about making it 5 times faster?
•
Principle: Make the common case fast
2004 Morgan Kaufmann Publishers
49
• Solution:
Execution time after improvemen t 
80 seconds
 (100  80 seconds )
n
Since we want the performance to be five times faster, the new
execution time should be 20 seconds, giving
80 seconds
 20 seconds
n
80 seconds
0
n
20 seconds 
2004 Morgan Kaufmann Publishers
50
MIPS as a Performance Measure
• Consider the computer with three instruction classes and CPI
measurements from the last example on page 252. Now suppose
we measure the code for the same program from two different
compilers and obtain the following data:
Code from
Instruction counts (in billions) for each instruction class
A
B
C
Compiler 1
5
1
1
Compiler 2
10
1
1
Assume that the computer’s clock rate is 4 GHz. Which code
sequence will execute faster according to MUPS? According to
execution time?
2004 Morgan Kaufmann Publishers
51
• Solution:
Here we use three equations:
n
(2)CPU clock cycles   (CPIi  Ci )
i 1
(1)Executi on time 
CPU clock cycles
Clock rate
Instructio n count
(3)MIPS 
Execution time 106
Then =>
CPU clock cycles1  (51  1 2  1 3)109  10109
CPU clock cycles2  (101  1 2  1 3)109  15109
10109
Executiontime1 
 2.5 seconds
9
4 10
15109
Executiontime2 
 3.75 seconds
9
4 10
2004 Morgan Kaufmann Publishers
52
• Now Let’s compute the MIPS rate for each version of the program:
(5  1  1) 109
MIPS1 
 2800
6
2.5 10
(10  1  1) 109
MIPS2 
 3200
6
3.75(30) 10
So, the code from compiler 2 has a higher MIPS rating, but the
code from compiler 1 runs faster!
2004 Morgan Kaufmann Publishers
53
Example
•
Suppose we enhance a machine making all floating-point instructions run
five times faster. If the execution time of some benchmark before the
floating-point enhancement is 10 seconds, what will the speedup be if half of
the 10 seconds is spent executing floating-point instructions?
•
We are looking for a benchmark to show off the new floating-point unit
described above, and want the overall benchmark to show a speedup of 3.
One benchmark we are considering runs for 100 seconds with the old
floating-point hardware. How much of the execution time would floatingpoint instructions have to account for in this program in order to yield our
desired speedup on this benchmark?
2004 Morgan Kaufmann Publishers
54
Remember
•
Performance is specific to a particular program/s
– Total execution time is a consistent summary of performance
•
For a given architecture performance increases come from:
–
–
–
–
•
increases in clock rate (without adverse CPI affects)
improvements in processor organization that lower CPI
compiler enhancements that lower CPI and/or instruction count
Algorithm/Language choices that affect instruction count
Pitfall: expecting improvement in one aspect of a machine’s
performance to affect the total performance
2004 Morgan Kaufmann Publishers
55
4.6
Concluding Remarks
2004 Morgan Kaufmann Publishers
56
• The execution time is related to other important measurements we
can make by the following equation:
Seconds Instructions Clock cycles Seconds



Program
Program
Instruction Clock cycle
2004 Morgan Kaufmann Publishers
57