Sie sind auf Seite 1von 6

CPU Performance

Most computers areconstructed using a clock running at a constant rate. These discrete time events are called ticks, clock ticks, clock periods, clocks , cycles or clock cycles. Computer designer refer to the time of a clock period by its length (e.g., 10 ns) or by its rate (e.g., 100 MHz). CPU time for a program can then be expressed two ways :

Or

Note that it wouldnt make sens to show elapsed time as a function of CPU clock cycle time since the latency for I/O devices is normally independent of the rate of the CPU clock. In addition to the number of clock cycles to execute the program, we can also count the number of instructions executed the instructionpath length or instruction count. If we know the number of clock cycles and the instruction count we can calculate the average number of clock cycles per instructions (CPI):

This CPU figure of merit provides insight into different styles of instruction sets and implementations. By transposing instruction count in the above formula , clock cycles can be defined as instruction count * CPI. This allows us to use CPI in the execution time formula :

Or

Expanding the first formula into units of measure shows how the pieces fiy together:

As this formula demonstrates, CPU performance is dependent upon three characteristics : clock cycles (or rate) , clock cycle per instruction , and instructions count. You cant change one of these in isolation from others because the basic technologies involved in changing each characteristic are also interdependent : Clock cycle Hardware technology and organization CPI Organization and instruction set architecture Instruction count Instruction set architecture and compiler technology Sometimes it is useful in designing the CPU to calculate the number of total CPU clock cycles as

Where represents number of times instruction is executed in a program and represents the average number of clock cycles for instruction . This form can be used to express CPU time as And overall CPI as

The latter form of the CPI calculation multiplies each individual CPI by the fraction of occurrences in a program. CPI should be measured and not just calculated from a table in the back of a reference manual since it must include cache misses and any other memory system inefficiencies. Always bear in mind that the real measure of computer performance is time. Changing the instruction set to lower the instruction count, for example , may lead to an organization with a slower clock cycle time that offsets the improvement in instruction count. When comparing two machines , you must look at all three components to understand relative performances.

EXAMPLE
Suppose we are considering two alternatives for our conditional branch instructions, as follows : CPU A.A condition code is set by a compare instruction and followed by a branch that tests the condition code. CPU B.A compare is included in the branch On both CPUs, the conditional branch instruction takes 2 cycles, and all other instructions take 1 clock cycle. (Obviously , if the CPI is 1.0 for everything but branches in this simple example we are ignoring losses due to the memory system in this decision; see the falancy on page 72.) On CPU A, 20% of all instructions executed are conditional branches; since every branch needs a compare, another 20% of the instrctions are compares. Because CPU A doesnt have the compare included in the branch, its clock cycle time is 25% faster than CPU Bs. Which CPU is faster?

ANSWER
Since we are ignoring all system issuesm we can use the CPU performance formula : CPI A is ((.20*2) + (.80*1)) or 1.2 since 20% branches taking 2 clock cycles and the rest take 1. Clock cycle timeB is 1.25 * Clock cycle timeA since A is 25% faster. The performance of CPU A is then CPU timeA = Instruction countA * 1.2 * Clock cycle timeA

= 1.20 * Instruction CountA * Clock cycle timeA Compares are not executed CPU B, so 20% / 80% or 25% of the instructions are now branches , taking 2 clock cycles, and the remaining 75% of the instructions take 1. CPIB is then ((.25 * 2) + (.75 *1)) or 1.25 because CPU B doesnt execute compares, Instruction countB is .80 * Instruction countA . The performance of CPU B is CPU timeB = (.80 * Instruction countA) * 1.25 * (1.25*Clock cycle timeA) = 1.25 * Instruction CountA * Clock cycle timeA Under these assumptions , CPU A , with the shorter clock cycle time, is faster than CPU B, which executes fewer instructions.

EXAMPLE
After seeing the analysis , a designer realized that by reworking the organization the difference in clock cycle can easily be reduced to 10%. Which CPU is faster now?

ANSWER
The only change from the answer above is that clock cycle timeB is now 1.10 * clock cycle timeA since A is just 10% faster. The performance of CPU is still CPU timeA = Instruction countA * 1.2 * Clock cycle timeA

The performance of CPU B is now CPU timeB = (.80 * Instruction countA) * 1.25 * (1.10*Clock cycle timeA) = 1.10 * Instruction CountA * Clock cycle timeA

Kinerja CPU
Sebagian besar komputer dibuat menggunakan jam yang begerak dengan laju yang konstan. Peristiwa waktu diskrit ini disebut juga ticks, clock ticks, clock periods, clocks , cycles or clock cycles. Desainer komputer mengacu pada waktu periode jam dengan panjang (misalnya, 10 ns) atau dengan laju (misalnya, 100 MHz). CPU time (Waktu CPU) untuk sebuah program kemudian dapat dinyatakan dengan dua cara:

atau

Perlu dicatat bahwa itu tidak masuk akal untuk menunjukkan waktu yang telah berlalu sebagai fungsi dari CPU time karena kepasifan perangkat I / O yang biasanya tidak bergantung tingkat CPU clock. Selain jumlah clock cycles untuk mengeksekusi program, kita juga bisa menghitung jumlah instruction yang dieksekusi - panjang jalur instruction atau jumlah instruksi. Jika kita mengetahui jumlah clock cycle dan jumlah instruksi, maka kita dapat menghitung jumlah rata-rata clock cycles per instruction (CPI) :

Angka CPU ini memberikan wawasan pantas atau tidaknya tentang gaya yang berbeda dari suatu set instruction dan implementasi. Dengan mengubah urutan instructions count dalam rumus di atas, clock cycles dapat didefinisikan sebagai instructions count * CPI. Hal ini memungkinkan kita untuk menggunakan CPI dalam rumus eksekusi CPU time :

Or

Menulis semua rumus pertama tadi ke ukuran satuannya menunjukkan bagaimana bisa pas bersama-sama:

Sebagai mana yang telah rumus ini tunjukkan, kinerja CPU tergantung pada tiga karakteristik : clock cycles (atau clock rate), clock cycles per instruction, dan instruction count. Anda tidak dapat mengubah salah satu dari ini dengan yang lain karena teknologi dasar yang terlibat dalam mengubah setiap karakteristik juga saling terkait: Clock cycles - teknologi Hardware dan organisasi CPI - Organisasi dan set instruksi arsitektur instruction count - set instruksi arsitektur dan teknologi compiler

Kadang-kadang ini juga berguna dalam merancang CPU untuk menghitung jumlah total CPU clock cycles sebagai

Dimana I mewakili berapa kali instruksi dieksekusi dalam program dan CPI merupakan jumlah rata-rata clock cycles yang dipakai untuk instruksi . Bentuk ini dapat digunakan untuk mengekspresikan CPU time sebagai

Dan CPI keseluruhan sebagai

Bentuk terakhir dari perhitungan CPI mengalikan setiap CPI oleh sebagian kecil dari kejadian pada sebuah program. CPI harus diukur dan bukan hanya dihitung dari daftar referensi manual karena harus mencakup cache yang hilang dan setiap ketidak efisiensi sistem memori lainnya. Ingat selalu bahwa suatu yang nyata dan bisa diukur dari kinerja komputer adalah waktunya. Mengubah set instruksi untuk menurunkan instruction count, misalnya, dapat menyebabkan sebuah susunan dengan jam clock cycle lambat yang mengimbangi peningkatan instruction count. Ketika membandingkan dua mesin, Anda harus melihat ketiga komponen untuk memahami kinerja relatif CPU.

CONTOH
Misalkan kita sedang mempertimbangkan dua alternatif untuk cabang instruksi bersyarat kita, sebagai berikut: CPU A.A kode kondisi sudah diatur oleh Instruksi pembanding dan diikuti dengan cabang yang menguji kode kondisi. CPU B.A membandingkan yang sudah termasuk dalam cabang Pada kedua CPU, instruction branch bersyarat membutuhkan 2 cycles, dan semua instruksi lain mengambil 1 clock cycles. (Jelas, jika CPI adalah 1.0 untuk segala sesuatu tetapi jika cabang di contoh ini sangat sederhana maka kita akan mengabaikan kerugian sistem memori akibat pemilihan dalam keputusan ini,. Lihat falancy pada halaman 72) Pada CPU A, dari semua instruksi yang dieksekusi, 20% adalah kondisional branch, karena setiap cabang membutuhkan perbandingan, sedangkan 20% lain dari Instructions pembanding. Karena CPU A tidak memiliki perbandingan termasuk dalam cabang, clock cycles nya adalah 25% lebih cepat dari CPU B. CPU mana yang lebih cepat?

JAWABAN
Karena kita mengabaikan semua sistem masalah sistem kita dapat menggunakan rumus CPU performance : CPIA adalah ((.20 * 2) + (.80 * 1)) atau 1.2 dikarenakan 20%nya adalah branch yang

mengambil 2 clock cycles dan sisanya mengambil 1. Clock cycles timeB adalah 1.25 * Clock cycle timeA karena A 25% lebih cepat. Maka kinerja CPU A

CPU timeA

= Instruction countA * 1.2 * Clock cycle timeA = 1.20 * Instruction CountA * Clock cycle timeA

Membandingkan tidak dieksekusi CPU B, sehingga 20% / 80% atau 25% dari instruction sekarang cabang, mengambil 2 clock cycles, dan sisanya 75% dari instruction mengambil 1. CPIB kemudian ((.25 * 2) + (75 * 1)) atau 1,25 karena CPU B tidak mengeksekusi membandingkan, Instruction countB adalah .80 * Instruction COUNTA. Kinerja CPU B adalah

CPU timeB

= (.80 * Instruction countA) * 1.25 * (1.25*Clock cycle timeA) = 1.25 * Instruction CountA * Clock cycle timeA

Berdasarkan asumsi ini, CPU A, dengan waktu clock cycle yang lebih pendek,maka CPU A lebih cepat dari CPU B, yang mengeksekusi instruksi yang lebih sedikit.

CONTOH
Setelah melihat analisis, desainer menyadari bahwa dengan melakukan ulang pengerjaan organisasi , perbedaan clock cycle dapat dengan mudah dikurangi hingga 10%. Sekarang CPU mana yang lebih cepat?

JAWABAN
Satu-satunya perubahan dari jawaban di atas adalah bahwa clock cycle timeB sekarang menjadi 1.10 * clock cycle timeA , karena A hanya lebih cepat 10%. Kinerja CPU A masih

CPU timeA

= Instruction countA * 1.2 * Clock cycle timeA

Kinerja CPU B sekarang

CPU timeB

= (.80 * Instruction countA) * 1.25 * (1.10*Clock cycle timeA) = 1.10 * Instruction CountA * Clock cycle timeA