Selasa, 26 November 2013

Cara Penggunaan CPU

Cara Penggunaan CPU. Sebuah central processing unit (CPU), juga disebut sebagai unit prosesor sentral, adalah hardware dalam komputer yang melaksanakan instruksi dari sebuah program komputer dengan melakukan aritmatika dasar, logis, dan input / output operasi sistem. Istilah telah digunakan dalam industri komputer setidaknya sejak awal 1960-an. Bentuk, desain, dan implementasi dari CPU telah berubah selama sejarah mereka, tetapi operasi dasar mereka tetap sama.

Sebuah komputer dapat memiliki lebih dari satu CPU, ini disebut multiprocessing . Semua CPU modern adalah mikroprosesor, yang berarti terdapat pada satu chip. Beberapa sirkuit terpadu (IC) dapat berisi beberapa CPU pada satu chip, yang disebut IC prosesor multi-core. Sebuah IC yang mengandung CPU juga dapat berisi perangkat periferal, dan komponen lain dari sistem komputer, ini disebut sistem pada sebuah chip (SoC).

Dua komponen khas dari CPU adalah logika aritmatika Unit (ALU), yang melakukan operasi aritmatika dan logika, dan unit kontrol (CU), yang ekstrak instruksi dari memori dan decode dan mengeksekusi mereka, menyerukan ALU bila diperlukan.
Tidak semua sistem komputasi bergantung pada satu unit pengolah pusat. Sebuah prosesor array atau prosesor vektor memiliki beberapa elemen komputasi paralel, dengan tidak ada satu unit dianggap sebagai "pusat". Dalam komputasi terdistribusi Model, masalah ini diselesaikan oleh satu set saling berhubungan didistribusikan prosesor.

Komputer seperti ENIAC harus secara fisik rewired untuk melakukan tugas yang berbeda, yang menyebabkan mesin ini disebut "komputer tetap program." Karena istilah "CPU" secara umum didefinisikan sebagai perangkat untuk perangkat lunak (program komputer) pelaksanaan, perangkat awal yang tepat bisa disebut CPU datang dengan munculnya komputer disimpan-program.

Ide dari sebuah komputer disimpan-program sudah hadir dalam desain J. Presper Eckert dan John William Mauchly 's ENIAC , tapi pada awalnya dihilangkan sehingga bisa selesai lebih cepat. Pada tanggal 30 Juni 1945, sebelum ENIAC dibuat, matematikawan John von Neumann membagikan makalah berjudul Draft Pertama Laporan di EDVAC . Itu garis besar komputer disimpan-program yang pada akhirnya akan selesai pada Agustus 1949. EDVAC dirancang untuk melakukan sejumlah instruksi (atau operasi) dari berbagai jenis. Instruksi ini dapat dikombinasikan untuk membuat program yang berguna bagi EDVAC untuk menjalankan. Secara signifikan, program yang ditulis untuk EDVAC disimpan dalam kecepatan tinggi memori komputer daripada yang ditentukan oleh kabel fisik dari komputer. Ini mengatasi pembatasan parah ENIAC, yang merupakan waktu dan upaya yang diperlukan untuk mengkonfigurasi ulang komputer untuk melakukan tugas baru. Dengan desain von Neumann, program, atau perangkat lunak, yang EDVAC berlari bisa diubah hanya dengan mengubah isi dari memori.

CPU awal yang dirancang khusus sebagai bagian dari yang lebih besar, kadang-kadang satu-of-a-kind, komputer. Namun, metode ini merancang CPU kustom untuk aplikasi tertentu sebagian besar diberikan cara untuk pengembangan prosesor diproduksi massal yang dibuat untuk berbagai tujuan. Standarisasi ini dimulai pada era diskrit transistor mainframe dan minicomputer dan telah dengan cepat dipercepat dengan popularisasi dari sirkuit terintegrasi (IC). The IC telah memungkinkan CPU semakin kompleks harus dirancang dan diproduksi untuk toleransi atas perintah nanometer . Baik miniaturisasi dan standarisasi dari CPU telah meningkatkan kehadiran perangkat digital dalam kehidupan modern jauh melampaui aplikasi terbatas mesin komputasi khusus. Mikroprosesor modern muncul dalam segala hal dari mobil ke ponsel dan mainan anak-anak.

Sementara von Neumann yang paling sering dikreditkan dengan desain komputer disimpan-program karena desain nya EDVAC, lain sebelum dia, seperti Konrad Zuse , telah menyarankan dan menerapkan ide yang sama. Yang disebut Harvard arsitektur dari Harvard Mark I, yang selesai sebelum EDVAC, juga menggunakan desain yang disimpan-program menggunakan pita kertas menekan daripada memori elektronik. Perbedaan utama antara arsitektur von Neumann dan Harvard adalah bahwa yang kedua memisahkan penyimpanan dan perawatan instruksi CPU dan data, sementara mantan menggunakan ruang memori yang sama untuk keduanya. Kebanyakan CPU modern terutama von Neumann dalam desain, tetapi elemen dari arsitektur Harvard yang biasanya terlihat juga.
 
Relay dan tabung vakum (katup termionik) umum digunakan sebagai elemen switching, sebuah komputer yang berguna memerlukan ribuan atau puluhan ribu perangkat switching. Kecepatan keseluruhan sistem tergantung pada kecepatan switch. Tube komputer seperti EDVAC cenderung rata-rata delapan jam antara kegagalan, sedangkan komputer relay seperti (lebih lambat, tetapi sebelumnya) Harvard Mark I gagal sangat jarang. [2] Pada akhirnya, CPU berbasis tabung menjadi dominan karena keunggulan kecepatan yang signifikan diberikan pada umumnya melebihi masalah reliabilitas. Kebanyakan CPU sinkron awal berlari pada rendah tingkat clock dibandingkan dengan desain mikroelektronik modern (lihat di bawah untuk pembahasan laju jam). Frekuensi sinyal clock mulai dari 100 kHz sampai 4 MHz sangat umum saat ini, sebagian besar dibatasi oleh kecepatan perangkat switching mereka dibangun dengan.

Transistor dan sirkuit terpadu CPU


Kompleksitas desain CPU meningkat berbagai teknologi difasilitasi membangun perangkat elektronik yang lebih kecil dan lebih dapat diandalkan. Peningkatan tersebut pertama datang dengan munculnya transistor . CPU transistorized selama 1950-an dan 1960-an tidak lagi harus dibangun dari besar, tidak dapat diandalkan, dan rapuh elemen beralih seperti tabung vakum dan relay listrik . Dengan peningkatan ini CPU yang lebih kompleks dan dapat diandalkan dibangun ke salah satu atau beberapa papan sirkuit yang mengandung diskrit (individu) komponen.

Selama periode ini, metode manufaktur banyak transistor yang saling berhubungan dalam ruang kompak dikembangkan. The sirkuit terpadu (IC) memungkinkan sejumlah besar transistor yang akan diproduksi pada satu semikonduktor berbasis mati , atau "keping." 

Pada awalnya hanya sangat dasar sirkuit digital non-khusus seperti NOR gerbang yang miniatur ke IC. CPU ini didasarkan pada "building block" IC umumnya disebut sebagai "integrasi skala kecil" perangkat (SSI). SSI IC, seperti yang digunakan dalam komputer bimbingan Apollo, biasanya terkandung hingga beberapa transistor skor. Untuk membangun seluruh CPU dari SSI IC diperlukan ribuan chip individu, tapi masih dikonsumsi lebih sedikit ruang dan kekuatan dari desain transistor diskrit sebelumnya. Sebagai teknologi mikroelektronik maju, peningkatan jumlah transistor yang ditempatkan pada IC, sehingga mengurangi jumlah IC individu yang diperlukan untuk CPU lengkap. MSI dan LSI (skala besar menengah dan integrasi) IC meningkat jumlah transistor untuk ratusan, dan kemudian ribuan.

Pada tahun 1964 IBM memperkenalkan System/360 arsitektur komputer yang digunakan dalam serangkaian komputer yang bisa menjalankan program yang sama dengan kecepatan dan kinerja yang berbeda. Ini signifikan pada saat kebanyakan komputer elektronik yang kompatibel dengan satu sama lain, bahkan yang dibuat oleh produsen yang sama. Untuk memfasilitasi perbaikan ini, IBM memanfaatkan konsep microprogram (sering disebut "microcode"), yang masih melihat penggunaan luas dalam CPU modern. 

Arsitektur System/360 begitu populer sehingga mendominasi komputer mainframe pasar selama beberapa dekade dan meninggalkan warisan yang masih dilanjutkan oleh komputer modern yang sama seperti IBM zSeries. Pada tahun yang sama (1964), Digital Equipment Corporation (DEC) memperkenalkan komputer berpengaruh lain yang ditujukan untuk pasar ilmiah dan penelitian, PDP-8. Desember nanti akan memperkenalkan sangat populer PDP-11 baris yang awalnya dibangun dengan SSI IC namun akhirnya diimplementasikan dengan komponen LSI sekali ini menjadi praktis. Berbeda sekali dengan perusahaan SSI dan MSI pendahulunya, pelaksanaan LSI pertama dari PDP-11 berisi CPU terdiri dari hanya empat LSI sirkuit terpadu. 

Komputer berbasis transistor memiliki beberapa keuntungan yang berbeda atas pendahulu mereka. Selain memfasilitasi peningkatan kehandalan dan konsumsi daya yang rendah, transistor juga memungkinkan CPU untuk beroperasi pada kecepatan yang jauh lebih tinggi karena waktu switching pendek transistor dibandingkan dengan tabung atau estafet. Berkat kedua peningkatan kehandalan serta meningkat secara dramatis kecepatan elemen beralih (yang hampir secara eksklusif transistor saat ini), tingkat clock CPU dalam puluhan megahertz diperoleh selama periode ini. Selain itu sementara transistor diskrit dan IC CPU berada dalam penggunaan berat, desain kinerja tinggi baru seperti SIMD (Single Instruction Multiple Data) prosesor vektor mulai muncul. Ini desain eksperimen awal kemudian memunculkan era khusus superkomputer seperti yang dibuat oleh Cray Inc
 
Mikroprosesor

Generasi sebelumnya CPU yang diimplementasikan sebagai komponen diskrit dan sejumlah kecil sirkuit terpadu (IC) pada satu atau lebih papan sirkuit. Mikroprosesor, di sisi lain, adalah CPU yang diproduksi pada jumlah yang sangat kecil dari IC, biasanya hanya satu. Keseluruhan ukuran CPU yang lebih kecil sebagai akibat dari dilaksanakan pada satu mati berarti waktu switching lebih cepat karena faktor fisik seperti penurunan gerbang kapasitansi parasit . Hal ini memungkinkan mikroprosesor sinkron untuk memiliki tingkat clock mulai dari puluhan megahertz ke beberapa gigahertz. Selain itu, kemampuan untuk membangun transistor sangat kecil pada IC telah meningkat, kompleksitas dan jumlah transistor dalam sebuah CPU tunggal telah meningkat berkali lipat. Tren ini banyak diamati dijelaskan oleh hukum Moore, yang telah terbukti menjadi prediktor yang cukup akurat dari pertumbuhan CPU (dan lainnya IC) kompleksitas.

Sementara kompleksitas, ukuran, konstruksi, dan bentuk umum dari CPU telah berubah sangat sejak tahun 1950, perlu dicatat bahwa desain dasar dan fungsi tidak banyak berubah sama sekali. Hampir semua CPU umum hari ini bisa sangat akurat digambarkan sebagai von Neumann mesin disimpan-program. Sebagai hukum Moore tersebut terus berlaku, kekhawatiran muncul tentang batas-batas teknologi sirkuit terpadu transistor. Miniaturisasi ekstrim gerbang elektronik yang menyebabkan efek dari fenomena seperti ELEKTROMIGRASI dan kebocoran subthreshold untuk menjadi jauh lebih signifikan. Ini kekhawatiran baru adalah salah satu dari banyak faktor yang menyebabkan peneliti untuk menyelidiki metode baru komputasi seperti komputer kuantum , serta untuk memperluas penggunaan paralelisme dan metode lain yang memperpanjang kegunaan dari model yang klasik von Neumann.
 
Operasi

Operasi dasar dari kebanyakan CPU, terlepas dari bentuk fisik mereka mengambil, adalah untuk mengeksekusi urutan disimpan instruksi yang disebut program. Instruksi disimpan dalam beberapa jenis memori komputer . Ada empat langkah yang hampir semua CPU digunakan dalam operasi mereka: fetch, decode, mengeksekusi, dan writeback.

Langkah pertama, mengambil, melibatkan mengambil sebuah instruksi (yang diwakili oleh nomor atau urutan angka) dari memori program. Lokasi di memori program ditentukan oleh program counter (PC), yang menyimpan nomor yang mengidentifikasi posisi saat ini dalam program ini. Setelah instruksi diambil, PC bertambah dengan panjang kata instruksi dalam hal unit memori. Seringkali, instruksi yang akan diambil harus diambil dari memori relatif lambat, menyebabkan CPU untuk kios sambil menunggu instruksi untuk dikembalikan. Masalah ini sebagian besar dibahas dalam prosesor modern oleh cache dan arsitektur pipa (lihat di bawah).

Instruksi yang CPU menjemput dari memori digunakan untuk menentukan apa CPU adalah melakukan. Pada langkah decode, instruksi tersebut dipecah menjadi bagian-bagian yang memiliki signifikansi untuk bagian lain dari CPU. Cara di mana nilai instruksi numerik ditafsirkan didefinisikan oleh set instruksi arsitektur CPU (ISA). Seringkali, satu kelompok nomor dalam instruksi, disebut opcode, yang menunjukkan operasi untuk melakukan. 

Bagian yang tersisa dari jumlah biasanya menyediakan informasi yang diperlukan untuk itu instruksi, seperti operan untuk operasi penjumlahan. Operan tersebut dapat diberikan sebagai nilai konstan (disebut nilai langsung), atau sebagai tempat untuk mencari nilai: sebuah daftar atau alamat memori, sebagaimana ditentukan oleh beberapa mode pengalamatan . Dalam desain yang lebih tua bagian dari CPU yang bertanggung jawab untuk decoding instruksi adalah perangkat keras yang tidak bisa diubah. Namun, dalam CPU lebih abstrak dan rumit dan ISA, sebuah microprogram sering digunakan untuk membantu dalam menerjemahkan instruksi ke berbagai sinyal konfigurasi untuk CPU.  

Microprogram ini kadang-kadang ditulis ulang sehingga dapat dimodifikasi untuk mengubah cara CPU decode instruksi bahkan setelah itu telah diproduksi.
Setelah mengambil dan decode langkah, langkah eksekusi dilakukan. Selama langkah ini, berbagai bagian CPU dihubungkan sehingga mereka dapat melakukan operasi yang diinginkan. Jika, misalnya, sebuah operasi penjumlahan diminta, maka Unit aritmatika logika (ALU) akan terhubung ke satu set input dan satu set output. Masukan menyediakan nomor yang akan ditambahkan, dan output akan berisi jumlah akhir. The ALU berisi sirkuit untuk melakukan aritmatika sederhana dan operasi logis pada input (seperti penambahan dan operasi bitwise ). Jika operasi penjumlahan menghasilkan hasil terlalu besar untuk CPU untuk menangani, bendera melimpah aritmatika dalam bendera mendaftar juga dapat diatur.

Langkah terakhir, writeback, hanya "menulis kembali" hasil eksekusi langkah untuk beberapa bentuk memori. Sangat sering hasilnya ditulis ke beberapa internal yang mendaftar CPU untuk akses cepat oleh instruksi berikutnya. Dalam kasus lain hasil dapat ditulis lebih lambat, tapi lebih murah dan lebih besar, memori utama. Beberapa jenis instruksi memanipulasi program counter daripada secara langsung menghasilkan data hasil. Biasanya ini disebut "melompat" dan memfasilitasi perilaku seperti loop , pelaksanaan program bersyarat (melalui penggunaan lompatan bersyarat), dan fungsi dalam program.Banyak instruksi juga akan mengubah keadaan digit dalam "bendera" mendaftar. Bendera ini dapat digunakan untuk mempengaruhi bagaimana sebuah program berperilaku, karena mereka sering menunjukkan hasil dari berbagai operasi. Sebagai contoh, satu jenis "membandingkan" instruksi menganggap dua nilai dan menetapkan nomor dalam bendera mendaftar sesuai dengan mana yang lebih besar. Bendera ini kemudian dapat digunakan oleh instruksi jump kemudian untuk menentukan aliran program.

Setelah pelaksanaan instruksi dan writeback data yang dihasilkan, seluruh proses berulang, dengan berikutnya siklus instruksi biasanya mengambil instruksi berikutnya-in-urutan karena nilai bertambah dalam program counter. Jika instruksi selesai adalah melompat, program counter akan dimodifikasi untuk berisi alamat dari instruksi yang melompat, dan eksekusi program berlanjut secara normal. Dalam CPU yang lebih kompleks dari yang dijelaskan di sini, beberapa instruksi dapat diambil, diterjemahkan, dan dieksekusi secara bersamaan. Bagian ini menjelaskan apa yang umumnya disebut sebagai "klasik pipa RISC", yang sebenarnya cukup umum di antara CPU sederhana yang digunakan di banyak perangkat elektronik (sering disebut mikrokontroler). Ini sebagian besar mengabaikan peran penting dari cache CPU , dan oleh karena itu tahap akses pipa.
 
Desain dan implementasi
 
Konsep dasar dari CPU adalah sebagai berikut:

Tertanam ke dalam desain sebuah CPU adalah daftar operasi dasar dapat melakukan, yang disebut sebuah set instruksi. Operasi tersebut dapat mencakup menambah atau mengurangi dua angka, membandingkan angka, atau melompat ke bagian yang berbeda dari sebuah program. Masing-masing operasi dasar diwakili oleh urutan tertentu bit , urutan ini disebut opcode untuk operasi tertentu. Mengirim opcode khusus untuk CPU akan menyebabkan ia untuk melakukan operasi diwakili oleh opcode itu. Untuk mengeksekusi instruksi dalam sebuah program komputer, CPU menggunakan opcode untuk instruksi itu serta argumen (misalnya dua nomor yang akan ditambahkan, dalam kasus operasi tambahan). Sebuah program komputer karena itu merupakan urutan instruksi, dengan setiap instruksi termasuk opcode dan argumen bahwa operasi itu.

Operasi matematika sebenarnya untuk setiap instruksi dilakukan oleh subunit dari CPU yang dikenal sebagai Unit aritmatika logika atau ALU. Di samping menggunakan nya ALU untuk melakukan operasi, CPU juga bertanggung jawab untuk membaca instruksi berikutnya dari memori, membaca data yang ditentukan dalam argumen dari memori, dan menulis hasil ke memori.

Dalam banyak desain CPU, sebuah set instruksi jelas akan membedakan antara operasi yang memuat data dari memori, dan orang-orang yang melakukan matematika. Dalam hal ini data yang diambil dari memori disimpan dalam register , dan operasi matematika tidak membutuhkan argumen tetapi hanya melakukan matematika pada data dalam register dan menulis ke register baru, yang nilainya operasi terpisah kemudian dapat menulis ke memori.
 
Control unit
 
Kisaran Integer
 
Cara CPU merupakan angka adalah pilihan desain yang mempengaruhi cara yang paling dasar di mana fungsi perangkat. Beberapa komputer digital awal menggunakan model listrik umum desimal (basis sepuluh) sistem angka untuk mewakili angka internal. Beberapa komputer lain telah menggunakan sistem angka lebih eksotis seperti terner (base tiga). Hampir semua CPU modern merupakan angka dalam biner bentuk, dengan masing-masing digit yang diwakili oleh beberapa kuantitas fisik dua-nilai seperti "tinggi" atau "rendah" tegangan .


Terkait dengan representasi angka adalah ukuran dan presisi angka yang CPU dapat mewakili. Dalam kasus CPU biner, sedikit mengacu pada satu tempat yang signifikan dalam jumlah CPU berurusan dengan. Jumlah bit (atau tempat angka) CPU digunakan untuk mewakili angka-angka yang sering disebut "kata ukuran", "sedikit lebar", "lebar jalur data", atau" bilangan bulat presisi "ketika berhadapan dengan angka ketat bilangan bulat (sebagai lawan mengambang titik ). Jumlah ini berbeda antara arsitektur, dan sering dalam bagian yang berbeda dari CPU yang sama. Sebagai contoh, sebuah 8-bit CPU penawaran dengan kisaran angka yang dapat diwakili oleh delapan digit biner (setiap digit memiliki dua nilai yang mungkin), yaitu, 2 8 atau 256 nomor diskrit. Akibatnya, ukuran bilangan bulat menetapkan batas hardware pada kisaran bilangan bulat perangkat lunak yang dijalankan oleh CPU dapat memanfaatkan.

 Kisaran Integer juga dapat mempengaruhi jumlah lokasi dalam memori CPU dapat alamat (menemukan). Sebagai contoh, jika sebuah CPU biner menggunakan 32 bit untuk mewakili alamat memori, dan setiap alamat memori merupakan salah satu oktet (8 bit), jumlah maksimum memori yang CPU dapat mengatasi adalah 2 32 oktet, atau 4 GiB . Ini adalah pandangan yang sangat sederhana dari CPU address space, dan banyak desain menggunakan metode pengalamatan yang lebih kompleks seperti paging untuk mencari memori lebih dari rentang bilangan bulat mereka akan memungkinkan dengan ruang alamat datar.

Tingkat yang lebih tinggi dari jangkauan bilangan bulat memerlukan struktur yang lebih untuk berurusan dengan tambahan angka, dan karena itu lebih kompleksitas, ukuran, penggunaan daya, dan biaya umum. Hal ini sama sekali tidak biasa, oleh karena itu, untuk melihat 4 - atau 8-bit mikrokontroler yang digunakan dalam aplikasi modern, meskipun CPU dengan kisaran yang lebih tinggi (seperti 16, 32, 64, bahkan 128-bit) yang tersedia.  

Semakin sederhana mikrokontroler biasanya lebih murah, menggunakan daya yang lebih kecil, dan karena itu menghasilkan lebih sedikit panas, yang semuanya dapat menjadi pertimbangan desain utama untuk perangkat elektronik. Namun, dalam aplikasi yang lebih tinggi-end, manfaat yang diberikan oleh berbagai tambahan (paling sering ruang alamat tambahan) yang lebih signifikan dan sering mempengaruhi pilihan desain. Untuk mendapatkan beberapa keuntungan yang diberikan oleh kedua lebih rendah dan lebih tinggi panjang bit, banyak CPU yang dirancang dengan lebar bit yang berbeda untuk bagian yang berbeda dari perangkat. Sebagai contoh, IBM System/370 menggunakan CPU yang terutama 32 bit, tapi dulu 128-bit presisi isinya floating point unit untuk memfasilitasi akurasi yang lebih besar dan berbagai angka floating point. Banyak desain CPU kemudian menggunakan sejenis campuran sedikit lebar, terutama ketika prosesor dimaksudkan untuk penggunaan tujuan umum di mana keseimbangan yang wajar integer dan kemampuan floating point diperlukan.
 
Clock rate

Clock rate adalah kecepatan di mana sebuah mikroprosesor mengeksekusi instruksi. Setiap komputer berisi jam internal yang mengatur tingkat di mana instruksi dieksekusi dan mensinkronisasikan semua berbagai komponen komputer. CPU membutuhkan sejumlah tetap kutu jam (atau clock cycle) untuk mengeksekusi setiap instruksi. Semakin cepat jam, semakin banyak instruksi CPU dapat mengeksekusi per detik.

Kebanyakan CPU, dan memang sebagian besar logika sekuensial perangkat, yang sinkron di alam. Artinya, mereka dirancang dengan, dan beroperasi di bawah, asumsi tentang sinyal sinkronisasi. Sinyal ini, yang dikenal sebagai sinyal clock, biasanya mengambil bentuk periodik gelombang persegi . Dengan menghitung waktu maksimum yang sinyal listrik dapat bergerak dalam berbagai cabang banyak sirkuit CPU, para desainer dapat memilih sesuai periode untuk sinyal clock.

Periode ini harus lebih dari jumlah waktu yang dibutuhkan untuk sinyal untuk bergerak, atau menyebarkan, dalam skenario terburuk. Dalam menetapkan periode jam ke nilai jauh di atas terburuk delay propagasi , adalah mungkin untuk merancang seluruh CPU dan cara memindahkan data sekitar "pinggiran" dari naik dan turunnya sinyal clock. Ini memiliki keuntungan dari menyederhanakan CPU secara signifikan, baik dari sudut pandang desain dan perspektif komponen-count. Namun, juga membawa kerugian yang seluruh CPU harus menunggu pada elemen yang paling lambat, meskipun beberapa bagian dari itu jauh lebih cepat. Keterbatasan ini sebagian besar telah dikompensasikan dengan berbagai metode meningkatkan CPU paralelisme. 
Namun, perbaikan arsitektur saja tidak menyelesaikan semua kelemahan dari CPU sinkron global. Sebagai contoh, sebuah sinyal clock tunduk pada penundaan dari sinyal listrik lainnya. Clock rate yang lebih tinggi dalam CPU semakin kompleks membuat lebih sulit untuk menjaga sinyal clock dalam fase (disinkronkan) seluruh seluruh unit. Hal ini telah menyebabkan banyak CPU modern membutuhkan beberapa sinyal clock identik dengan diberikan untuk menghindari menunda satu sinyal yang cukup signifikan untuk menyebabkan CPU untuk kerusakan. Masalah besar lain seperti clock rate meningkat secara dramatis adalah jumlah panas yang hilang oleh CPU . Jam terus berubah menyebabkan banyak komponen untuk beralih terlepas dari apakah mereka sedang digunakan pada saat itu. Secara umum, komponen yang beralih menggunakan lebih banyak energi daripada elemen dalam keadaan statis. Oleh karena itu, sebagai clock rate meningkat, demikian juga konsumsi energi, menyebabkan CPU untuk memerlukan lebih banyak disipasi panas dalam bentuk pendingin CPU solusi.

Salah satu metode untuk berurusan dengan switching komponen yang tidak dibutuhkan disebut jam gating , yang melibatkan mematikan sinyal clock untuk komponen yang tidak diperlukan (efektif menonaktifkan mereka). Namun, hal ini sering dianggap sebagai sulit untuk menerapkan dan karena itu tidak melihat penggunaan umum di luar sangat desain daya rendah. Satu terkenal akhir desain CPU yang menggunakan jam gating untuk mengurangi kebutuhan daya dari konsol videogame adalah bahwa dari IBM PowerPC berbasis Xbox 360. Ini menggunakan jam gating yang luas di mana ia digunakan. 

Metode lain untuk menangani beberapa masalah dengan sinyal clock global penghapusan sinyal clock sama sekali. Saat mengeluarkan sinyal clock global membuat proses desain jauh lebih kompleks dalam banyak hal, asynchronous (atau clockless) desain membawa keuntungan ditandai dalam konsumsi daya dan disipasi panas dibandingkan dengan desain sinkron serupa. Sementara agak jarang, seluruh CPU asynchronous telah dibangun tanpa menggunakan sinyal clock global. Dua contoh penting dari ini adalah ARM compliant AMULET dan MIPS R3000 MiniMIPS kompatibel. Daripada benar-benar mengeluarkan sinyal clock, beberapa desain CPU memungkinkan bagian-bagian tertentu dari perangkat yang akan asynchronous, seperti menggunakan asynchronous ALUs dalam hubungannya dengan pipelining superscalar untuk mencapai beberapa keuntungan kinerja aritmatika.  

Meskipun tidak sama sekali jelas apakah desain benar-benar asynchronous dapat tampil di tingkat yang sebanding atau lebih baik daripada rekan-rekan mereka sinkron, jelas bahwa mereka setidaknya unggul dalam operasi matematika sederhana. Hal ini, dikombinasikan dengan konsumsi daya yang sangat baik dan sifat disipasi panas, membuat mereka sangat cocok untuk komputer tertanam .
 
Paralelisme

Proses ini menimbulkan inefisiensi yang melekat dalam CPU subscalar. Karena hanya satu instruksi dieksekusi pada satu waktu, seluruh CPU harus menunggu instruksi yang untuk menyelesaikan sebelum melanjutkan ke instruksi berikutnya. Sebagai hasilnya, CPU subscalar akan "menutup" pada instruksi yang mengambil lebih dari satu siklus clock untuk menyelesaikan eksekusi. Bahkan menambahkan kedua satuan eksekusi (lihat di bawah) tidak meningkatkan kinerja yang jauh, melainkan dari satu jalur digantung, sekarang dua jalur yang menutup telepon dan jumlah transistor yang tidak terpakai meningkat. Desain ini, dimana sumber daya CPU eksekusi dapat beroperasi hanya pada satu instruksi pada satu waktu, hanya mungkin mencapai kinerja skalar (satu instruksi per jam). Namun, kinerja hampir selalu subscalar (kurang dari satu instruksi per siklus).

Upaya untuk mencapai skalar dan kinerja yang lebih baik telah menghasilkan berbagai metodologi desain yang menyebabkan CPU untuk berperilaku kurang linear dan lebih secara paralel. Ketika mengacu ke paralelisme dalam CPU, dua istilah yang umumnya digunakan untuk mengklasifikasikan teknik desain tersebut. tingkat paralelisme instruksi (ILP) berusaha untuk meningkatkan tingkat di mana instruksi dieksekusi dalam CPU (yaitu, untuk meningkatkan pemanfaatan eksekusi on-die sumber daya), dan tingkat benang paralelisme (TLP) bertujuan untuk meningkatkan jumlah benang (efektif program individu) yang CPU dapat mengeksekusi secara bersamaan. Setiap metodologi berbeda baik dalam cara di mana mereka diimplementasikan, serta efektivitas relatif mereka mampu meningkatkan kinerja CPU untuk aplikasi.
 
Tingkat paralelisme instruksi

Pipelining, bagaimanapun, memperkenalkan kemungkinan untuk situasi di mana hasil dari operasi sebelumnya diperlukan untuk menyelesaikan operasi selanjutnya, kondisi sering disebut konflik ketergantungan data. Untuk mengatasi hal ini, perawatan tambahan harus diambil untuk memeriksa hal-kondisi dan menunda sebagian dari pipa instruksi jika hal ini terjadi. Tentu, menyelesaikan ini membutuhkan sirkuit tambahan, sehingga prosesor pipelined lebih kompleks daripada yang subscalar (meskipun tidak sangat signifikan begitu). Sebuah prosesor pipelined dapat menjadi sangat hampir skalar, dihambat hanya dengan warung pipa (instruksi menghabiskan lebih dari satu siklus clock dalam tahap a).


Perbaikan lebih lanjut atas ide instruksi pipelining menyebabkan perkembangan dari metode yang mengurangi waktu idle komponen CPU lebih jauh. Desain yang dikatakan superscalar termasuk pipa instruksi yang panjang dan beberapa unit eksekusi identik. 

Dalam sebuah pipa superscalar, beberapa instruksi dibaca dan diteruskan ke operator, yang memutuskan apakah instruksi dapat dieksekusi secara paralel (bersamaan ). Jika demikian mereka dikirim ke unit eksekusi yang tersedia, sehingga kemampuan untuk beberapa instruksi yang akan dieksekusi secara bersamaan. Secara umum, semakin banyak instruksi CPU superscalar mampu mengirimkan secara bersamaan untuk menunggu unit eksekusi, semakin banyak instruksi akan selesai dalam siklus tertentu.

Sebagian besar kesulitan dalam desain arsitektur CPU superscalar terletak dalam menciptakan operator yang efektif. Dispatcher harus dapat dengan cepat dan benar menentukan apakah instruksi dapat dieksekusi secara paralel, serta mengutus mereka sedemikian rupa untuk menjaga banyak unit eksekusi sibuk mungkin. Ini mensyaratkan bahwa pipa instruksi diisi sesering mungkin dan menimbulkan kebutuhan dalam arsitektur superscalar untuk sejumlah besar cache CPU. Hal ini juga membuat bahaya teknik-menghindari seperti prediksi cabang, eksekusi spekulatif, dan out-of-order eksekusi penting untuk mempertahankan tingkat kinerja yang tinggi. Dengan mencoba untuk memprediksi cabang (atau path) instruksi bersyarat akan mengambil, CPU dapat meminimalkan jumlah kali bahwa seluruh pipa harus menunggu sampai instruksi bersyarat selesai. Eksekusi spekulatif sering memberikan peningkatan kinerja yang sederhana dengan menjalankan bagian dari kode yang mungkin tidak diperlukan setelah operasi bersyarat selesai. Out-of-order eksekusi agak menata kembali urutan instruksi dieksekusi untuk mengurangi penundaan karena ketergantungan data. Juga dalam kasus Instruksi Tunggal Multiple Data-kasus ketika banyak data dari jenis yang sama harus diproses, prosesor modern dapat menonaktifkan bagian pipa sehingga ketika sebuah instruksi dijalankan berkali-kali, CPU melompat mengambil dan fase decode dan dengan demikian sangat meningkatkan kinerja pada saat-saat tertentu, terutama di mesin program yang sangat monoton seperti perangkat lunak pembuatan video dan pengolahan foto.

Dalam kasus di mana sebagian dari CPU superscalar dan bagian yang tidak, bagian yang tidak menderita hukuman kinerja karena warung penjadwalan. The Intel P5 Pentium memiliki dua ALUs superscalar yang bisa menerima satu instruksi per jam masing-masing, tetapi FPU yang tidak bisa menerima satu instruksi per jam. Dengan demikian P5 adalah bilangan bulat superscalar tetapi tidak floating point superscalar. Penerus Intel untuk arsitektur P5, P6, menambahkan kemampuan superscalar fitur titik mengambang, dan oleh karena itu diberikan peningkatan yang signifikan dalam kinerja floating instruksi titik.

Kedua pipelining sederhana dan desain superscalar meningkatkan ILP CPU dengan memungkinkan prosesor tunggal untuk menyelesaikan eksekusi instruksi dengan harga melebihi satu instruksi per siklus (IPC). Kebanyakan desain CPU modern setidaknya agak superscalar, dan hampir semua CPU tujuan umum dirancang dalam dekade terakhir adalah superscalar. Dalam tahun kemudian beberapa penekanan dalam merancang komputer high-ILP telah dipindahkan dari hardware CPU dan ke-nya antarmuka perangkat lunak, atau ISA. Strategi yang sangat panjang instruksi kata (VLIW) menyebabkan beberapa ILP menjadi tersirat langsung oleh perangkat lunak, mengurangi jumlah pekerjaan CPU harus melakukan untuk meningkatkan ILP dan dengan demikian mengurangi kompleksitas desain itu.
 
Thread-level parallelism
 
Strategi lain untuk mencapai kinerja adalah untuk menjalankan beberapa program atau thread secara paralel. Daerah ini penelitian dikenal sebagai komputasi paralel . Dalam taksonomi Flynn, strategi ini dikenal sebagai Beberapa Instruksi-Multiple Data atau MIMD.

Salah satu teknologi yang digunakan untuk tujuan ini multiprocessing (MP). Rasa awal teknologi ini dikenal sebagai multiprocessing simetris (SMP), di mana sejumlah kecil CPU berbagi pandangan yang koheren dari sistem memori mereka. Dalam skema ini, masing-masing CPU memiliki hardware tambahan untuk mempertahankan selalu up-to-date tampilan memori. Dengan menghindari pandangan basi memori, CPU dapat bekerja sama pada program yang sama dan program dapat bermigrasi dari satu CPU yang lain. Untuk meningkatkan jumlah CPU bekerja sama di luar segelintir, skema seperti akses non-seragam memori (NUMA) dan protokol koherensi berbasis direktori diperkenalkan pada 1990-an. Sistem SMP terbatas pada sejumlah kecil CPU sementara sistem NUMA telah dibangun dengan ribuan prosesor. Awalnya, multiprocessing dibangun dengan menggunakan beberapa CPU diskrit dan papan untuk menerapkan interkoneksi antara prosesor. Ketika prosesor dan interkoneksi mereka semua diimplementasikan pada sebuah chip silikon tunggal, teknologi ini dikenal sebagai prosesor multi-core .

Ia kemudian mengakui bahwa paralelisme halus-butir ada dengan satu program. Sebuah program tunggal mungkin memiliki beberapa thread (atau fungsi) yang dapat dijalankan secara terpisah atau paralel. Beberapa contoh awal dari teknologi ini diimplementasikan input / output pengolahan seperti akses memori langsung sebagai thread terpisah dari benang perhitungan. Sebuah pendekatan yang lebih umum untuk teknologi ini diperkenalkan pada 1970-an ketika sistem yang dirancang untuk menjalankan beberapa thread komputasi secara paralel. Teknologi ini dikenal sebagai multi-threading (MT).  

Pendekatan ini dianggap lebih hemat biaya daripada multiprocessing, karena hanya sejumlah kecil komponen dalam CPU direplikasi untuk mendukung MT sebagai lawan seluruh CPU dalam kasus MP. Di MT, unit eksekusi dan sistem memori termasuk cache dibagi di antara beberapa thread. Kelemahan dari MT adalah bahwa dukungan hardware untuk multithreading lebih terlihat untuk perangkat lunak daripada MP dan dengan demikian software pengawas seperti sistem operasi harus mengalami perubahan besar untuk mendukung MT. Salah satu jenis MT yang dilaksanakan dikenal sebagai blok multithreading, di mana satu thread dijalankan sampai terhenti menunggu data kembali dari memori eksternal. Dalam skema ini, CPU akan lalu cepat-cepat beralih ke thread lain yang siap dijalankan, switch sering dilakukan dalam satu clock CPU siklus, seperti UltraSPARC Technology. Tipe lain dari MT dikenal sebagai multithreading simultan, di mana instruksi dari beberapa thread yang dieksekusi secara paralel dalam satu CPU clock cycle.

Selama beberapa dekade dari tahun 1970an sampai awal 2000-an, fokus dalam merancang kinerja tinggi tujuan umum CPU sebagian besar pada pencapaian tinggi ILP melalui teknologi seperti pipelining, cache, eksekusi superscalar, out-of-order eksekusi, dll Kecenderungan itu memuncak pada besar , CPU haus kekuasaan seperti Intel Pentium 4 . Pada awal 2000-an, desainer CPU digagalkan dari mencapai kinerja yang lebih tinggi dari teknik ILP karena kesenjangan yang tumbuh antara frekuensi operasi CPU dan main frekuensi operasi memori serta meningkatnya CPU disipasi daya karena teknik ILP lebih esoteris.

Desainer CPU kemudian meminjam ide dari pasar komputasi komersial seperti pemrosesan transaksi, di mana kinerja agregat dari beberapa program, juga dikenal sebagai throughput yang komputasi, adalah lebih penting daripada kinerja thread atau program tunggal.

Pembalikan penekanan ini dibuktikan dengan proliferasi ganda dan multiple core CMP (chip-level multiprocessing) desain dan terutama, desain Intel yang lebih baru menyerupai superscalar dikurangi P6 arsitektur. Desain akhir di beberapa keluarga prosesor pameran CMP, termasuk x86-64 Opteron dan Athlon 64 X2 , yang SPARC UltraSPARC T1, IBM Power4 dan POWER5, serta beberapa konsol video game CPU seperti Xbox 360 triple-core desain PowerPC 's, dan PS3 7-core 's your mikroprosesor .
 
Data paralelisme

Sebuah paradigma yang kurang umum tapi semakin penting dari CPU (dan memang, komputasi pada umumnya) berkaitan dengan paralelisme data. Prosesor dibahas sebelumnya semua disebut sebagai beberapa jenis perangkat skalar. Sesuai dengan namanya, prosesor vektor berurusan dengan beberapa bagian data dalam konteks satu instruksi. Hal ini kontras dengan prosesor skalar, yang berhubungan dengan salah satu bagian dari data untuk setiap instruksi. Menggunakan taksonomi Flynn, dua skema ini berurusan dengan data yang umumnya disebut sebagai SIMD (instruksi tunggal, beberapa data) dan SISD (instruksi tunggal, data tunggal), masing-masing. Utilitas yang besar dalam menciptakan CPU yang berhubungan dengan vektor data terletak dalam mengoptimalkan tugas-tugas yang cenderung membutuhkan operasi yang sama (misalnya, penjumlahan atau dot product ) yang akan dilakukan pada satu set data yang besar. Beberapa contoh klasik dari jenis tugas yang multimedia aplikasi (gambar, video, dan suara), serta berbagai jenis ilmiah tugas dan rekayasa. Sedangkan CPU skalar harus menyelesaikan seluruh proses mengambil, decoding, dan melaksanakan setiap instruksi dan nilai dalam satu set data, CPU vektor dapat melakukan operasi tunggal pada satu set yang relatif besar data dengan satu instruksi. Tentu saja, ini hanya mungkin bila aplikasi cenderung membutuhkan banyak langkah yang menerapkan satu operasi untuk satu set data yang besar.

Kebanyakan CPU vektor awal, seperti Cray-1, dikaitkan hampir secara eksklusif dengan penelitian ilmiah dan kriptografi aplikasi. Namun, seperti multimedia sebagian besar bergeser ke media digital, kebutuhan untuk beberapa bentuk SIMD secara umum tujuan CPU telah menjadi signifikan. Tak lama setelah masuknya unit eksekusi floating point mulai menjadi biasa dalam prosesor tujuan umum, spesifikasi untuk dan implementasi dari SIMD unit eksekusi juga mulai muncul untuk tujuan umum CPU. Beberapa dari spesifikasi SIMD awal seperti HP Multimedia Percepatan ekstensi (MAX) dan Intel MMX yang integer saja.  

Hal ini terbukti menjadi hambatan yang signifikan untuk beberapa pengembang perangkat lunak, karena banyak aplikasi yang mendapatkan keuntungan dari SIMD terutama berurusan dengan floating point nomor. Semakin, ini desain awal yang disempurnakan dan dibuat ulang ke dalam beberapa umum, spesifikasi SIMD modern, yang biasanya dikaitkan dengan satu ISA. Beberapa contoh moderennya menonjol adalah Intel SSE dan PowerPC terkait AltiVec (juga dikenal sebagai VMX).
 
Kinerja

Kinerja pengolahan komputer meningkat dengan menggunakan prosesor multi-core , yang pada dasarnya adalah memasukkan dua atau lebih prosesor individu (core disebut dalam pengertian ini) menjadi satu sirkuit terpadu. Idealnya, prosesor dual core akan hampir dua kali lebih kuat sebagai prosesor single core. Dalam prakteknya, bagaimanapun, keuntungan kinerja jauh lebih kecil, hanya sekitar 50%, karena algoritma perangkat lunak yang tidak sempurna dan implementasi. Meningkatkan jumlah core dalam prosesor (yaitu dual-core, quad-core, dll) meningkatkan beban kerja yang dapat ditangani. Ini berarti bahwa prosesor sekarang dapat menangani berbagai acara asynchronous, interupsi, dll yang dapat mengambil tol pada CPU (Central Processing Unit) ketika kewalahan. Core ini dapat dianggap sebagai lantai yang berbeda di pabrik pengolahan, dengan masing-masing lantai menangani tugas yang berbeda. Kadang-kadang, core tersebut akan menangani tugas-tugas yang sama seperti core berdekatan dengan mereka jika satu inti tidak cukup untuk menangani informasi. Cara Penggunaan CPU


Tidak ada komentar:

Posting Komentar