Mengapa lebih banyak transistor = lebih banyak daya pemrosesan?

43

Menurut Wikipedia, kekuatan pemrosesan sangat terkait dengan hukum Moore:

http://en.wikipedia.org/wiki/Moore's_law

Jumlah transistor yang dapat ditempatkan dengan murah di sirkuit terintegrasi telah berlipat dua kira-kira setiap dua tahun. Tren ini terus berlanjut selama lebih dari setengah abad dan diperkirakan tidak akan berhenti sampai 2015 atau lebih baru. Kemampuan banyak perangkat elektronik digital sangat terkait dengan hukum Moore: kecepatan pemrosesan, kapasitas memori, sensor, dan bahkan jumlah dan ukuran piksel dalam kamera digital. Semua ini membaik pada (secara kasar) tingkat eksponensial juga.

Sebagai seseorang yang memiliki latar belakang arsitektur komputer, saya tidak mengerti mengapa melempar lebih banyak transistor pada CPU akan meningkatkan kekuatannya karena pada akhirnya, instruksi dibaca / dieksekusi secara berurutan. Adakah yang bisa menjelaskan bagian mana yang saya lewatkan?

Oli
sumber
10
Lebih banyak transistor = lebih banyak paralelisme
Toby Jaffey
2
Memang benar tidak peduli berapa banyak core yang dimiliki prosesor.
Thomas O
1
Iya. Semakin banyak transistor berarti Anda dapat memasukkan lebih banyak unit eksekusi paralel. Cache yang lebih besar. Pipa yang lebih dalam.
Kaz
1
Cache adalah yang terbesar. Saya pikir proporsi real estat silikon yang didedikasikan untuk cache telah meningkat. Sebagian besar kinerja prosesor modern disebabkan caching, dan caching hanya berfungsi ketika ada lokalitas, tetapi semakin besar cache, semakin santai persyaratan untuk lokalitas (aplikasi yang lebih besar dengan pola akses memori yang lebih aneh masih dipercepat).
Kaz
2
Pikirkan tentang pengganda saja. Dengan transistor yang cukup, Anda dapat menggunakan tabel pencarian lengkap dan melakukan seluruh perkalian dalam satu langkah. Dengan lebih sedikit transistor, Anda harus melakukan hal-hal seperti penambahan berulang.
David Schwartz

Jawaban:

29

Banyak hal yang memberi Anda lebih banyak kekuatan hanya membutuhkan lebih banyak transistor untuk membangunnya. Bus yang lebih luas mengukur jumlah transistor di hampir semua komponen prosesor. Tembolok berkecepatan tinggi menambahkan transistor sesuai dengan ukuran cache. Jika Anda memperpanjang pipa, Anda perlu menambahkan tahapan dan unit kontrol yang lebih kompleks. Jika Anda menambahkan unit eksekusi untuk membantu mengurangi hambatan dalam pipa, masing-masing membutuhkan lebih banyak transistor, dan kemudian kontrol untuk menjaga unit eksekusi yang dialokasikan menambah lebih banyak transistor.

Masalahnya, dalam sirkuit elektronik, semuanya terjadi secara paralel. Dalam dunia perangkat lunak, standarnya adalah untuk hal-hal yang berurutan, dan perancang perangkat lunak bersusah payah untuk mendapatkan paralelisme yang dibangun ke dalam perangkat lunak sehingga dapat memanfaatkan sifat paralel dari perangkat keras. Paralelisme hanya berarti lebih banyak hal terjadi pada saat yang sama, jadi kira-kira sama dengan kecepatan; semakin banyak hal yang bisa dilakukan secara paralel, semakin cepat Anda bisa menyelesaikannya. Satu-satunya paralelisme nyata adalah apa yang Anda dapatkan ketika Anda memiliki lebih banyak transistor dalam pekerjaan.

JustJeff
sumber
19

Instruksi pertama tidak harus "dieksekusi berurutan" bahkan pada ISA non-VLIW, eksekusi hanya perlu muncul berurutan. Implementasi superscalar yang berurutan dapat mengeksekusi lebih dari satu instruksi secara paralel dengan yang lainnya. Untuk melakukan ini secara efektif perangkat keras untuk instruksi penguraian sandi harus ditingkatkan (diperlebar), perangkat keras harus ditambahkan untuk memastikan independensi data dari instruksi yang akan dieksekusi secara paralel, sumber daya eksekusi harus ditingkatkan, dan jumlah port file register pada umumnya ditingkatkan. Semua ini menambah transistor.

Implementasi out-of-order, yang memungkinkan instruksi selanjutnya untuk dieksekusi sebelum yang sebelumnya selama tidak ada ketergantungan data, menggunakan perangkat keras tambahan untuk menangani penjadwalan instruksi segera setelah data tersedia dan menambahkan nama register dan perangkat keras untuk pemetaan, mengalokasikan, dan membebaskan mereka (lebih banyak transistor) untuk menghindari bahaya tulis-setelah-baca dan tulis-setelah-tulis. Eksekusi out-of-order memungkinkan prosesor untuk menghindari kemacetan.

Penyusunan ulang beban dan penyimpanan dalam prosesor yang tidak sesuai pesanan mengharuskan memastikan bahwa penyimpanan yang lebih awal dalam urutan program akan meneruskan hasil ke banyak alamat yang sama di kemudian hari. Ini menyiratkan logika perbandingan alamat serta penyimpanan untuk alamat (dan ukuran) toko (dan penyimpanan untuk data) sampai toko telah berkomitmen untuk memori (cache). (Untuk ISA dengan model konsistensi memori yang kurang lemah, perlu juga untuk memeriksa bahwa beban dipesan dengan benar sehubungan dengan penyimpanan dari prosesor lain - lebih banyak transistor.)

Pipelining menambahkan beberapa kontrol tambahan dan buffering overhead dan mencegah penggunaan kembali logika untuk berbagai bagian penanganan instruksi, tetapi memungkinkan berbagai bagian penanganan instruksi untuk tumpang tindih pada waktunya untuk instruksi yang berbeda.

Pemasangan pipa dan eksekusi superscalar meningkatkan dampak dari bahaya kontrol (yaitu cabang dan lompatan bersyarat). Pipelining (dan juga eksekusi out-of-order) dapat menunda ketersediaan target lompatan bahkan tanpa syarat, sehingga menambahkan perangkat keras untuk memprediksi target (dan arah untuk cabang bersyarat) memungkinkan pengambilan instruksi untuk melanjutkan tanpa menunggu bagian eksekusi dari prosesor untuk membuat data yang diperlukan tersedia. Prediktor yang lebih akurat cenderung membutuhkan lebih banyak transistor.

Untuk prosesor out-of-order, dapat diinginkan untuk memungkinkan beban dari memori untuk dieksekusi sebelum alamat semua toko sebelumnya telah dihitung, sehingga beberapa perangkat keras untuk menangani spekulasi tersebut diperlukan, mungkin termasuk prediktor.

Tembolok dapat mengurangi latensi dan meningkatkan bandwidth akses memori, tetapi tambahkan transistor untuk menyimpan data dan untuk menyimpan tag (dan membandingkan tag dengan alamat yang diminta). Perangkat keras tambahan juga diperlukan untuk menerapkan kebijakan penggantian. Pengambilan awal perangkat keras akan menambah lebih banyak transistor.

Menerapkan fungsionalitas dalam perangkat keras daripada perangkat lunak dapat meningkatkan kinerja (sambil membutuhkan lebih banyak transistor). Misalnya, manajemen TLB, operasi kompleks seperti operasi multiplikasi atau floating point, operasi khusus seperti penghitungan angka nol di depan. (Menambahkan instruksi juga meningkatkan kompleksitas dekode instruksi dan biasanya kompleksitas eksekusi juga - misalnya, untuk mengontrol bagian mana dari perangkat keras eksekusi yang akan digunakan.)

Operasi SIMD / vektor meningkatkan jumlah pekerjaan yang dilakukan per instruksi tetapi membutuhkan lebih banyak penyimpanan data (register yang lebih luas) dan biasanya menggunakan lebih banyak sumber daya eksekusi.

(Multithreading spekulatif juga dapat memungkinkan beberapa prosesor untuk menjalankan program berulir tunggal lebih cepat. Jelas menambahkan prosesor ke sebuah chip akan meningkatkan jumlah transistor.)

Memiliki lebih banyak transistor tersedia juga dapat memungkinkan arsitek komputer untuk menyediakan ISA dengan lebih banyak register yang terlihat oleh perangkat lunak, berpotensi mengurangi frekuensi akses memori yang cenderung lebih lambat daripada akses register dan melibatkan beberapa tingkat tipuan (misalnya, menambahkan offset ke tumpukan pointer) yang meningkatkan latensi.

Integrasi - yang meningkatkan jumlah transistor pada sebuah chip tetapi tidak dalam sistem - mengurangi latensi komunikasi dan meningkatkan bandwidth, jelas memungkinkan peningkatan kinerja. (Ada juga pengurangan konsumsi daya yang dapat diterjemahkan ke dalam peningkatan kinerja.)

Bahkan di tingkat pelaksanaan instruksi, menambahkan transistor dapat meningkatkan kinerja. Misalnya, carry pick adder menambahkan bit atas dua kali secara paralel dengan asumsi yang berbeda dari carry-in dari bit yang lebih rendah, memilih jumlah bit atas yang benar ketika carry dari bit yang lebih rendah tersedia, jelas membutuhkan lebih banyak transistor daripada yang sederhana ripple carry adder tetapi mengurangi penundaan dalam menghasilkan jumlah penuh. Demikian pula pengganda dengan deretan tunggal carry-save adders menggunakan lebih sedikit transistor (tetapi lebih lambat) daripada pengganda pohon Dadda (atau Wallace) dan tidak dapat di pipelined (jadi harus direplikasi untuk memungkinkan penggandaan lain memulai eksekusi sementara yang sebelumnya) kelipatan sedang berlangsung).

Di atas mungkin melelahkan tetapi tidak lengkap!

Paul A. Clayton
sumber
2
Jawaban luar biasa dari seorang pria baru!
Connor Wolf
12

Jumlah transistor tidak selalu berkorelasi dengan lebih banyak kekuatan pemrosesan, namun, dengan lebih banyak transistor, prosesor dapat melakukan instruksi yang semakin rumit dari sebelumnya. Misalnya, prosesor dengan SSE akan menggunakan transistor tambahan untuk mengimplementasikan instruksi kompleks ini (misalnya, menambahkan banyak angka dalam satu siklus).

Thomas O
sumber
2
Alan Kay menghitung bahwa sejak ia mengerjakan Smalltalk di Xerox PARC, kami kehilangan 18 tahun lipat ganda transistor karena arsitektur yang salah dan ketidakefisienan perangkat lunak karena komputer tentu saja tidak secepat yang digandakan transistor.
jpc
5

Faktor lain: ketika Anda menjejalkan lebih banyak transistor ke area tertentu, mereka menjadi lebih kecil, membuatnya lebih cepat.

Leon Heller
sumber
Ketika transistor semakin dekat dan berdekatan, Anda mendapatkan efek yang tidak diinginkan lainnya, seperti peningkatan arus bocor, sehingga merupakan pertukaran antara kinerja dan daya rendah - sebagian besar produsen tampaknya telah melakukan kinerja.
Thomas O
4

Mikroprosesor telah meningkat secara signifikan dalam beberapa tahun terakhir, hal-hal seperti pipa yang lebih panjang, percabangan predikatif dan pada cache chip semuanya ditambahkan ke kompleksitas yang terkait dengan prosesor.

Tentu saja dasar-dasar pemrosesan CPU, fetch, decode, ALU, tulis masih sama, tetapi untuk mempercepat, pipa yang lebih panjang digunakan. Pipelnes yang lebih lama meningkatkan kinerja untuk eksekusi kode kontinu, tetapi juga menimbulkan waktu hit yang lebih besar ketika kode cabang merusak kinerja. Ramuan, percabangan prediktif. Percabangan prediktif adalah rahasia dagang, bahwa intel biasanya tidak mengungkapkan cara kerja sepenuhnya, cukup menggunakannya untuk menjaga kinerja setinggi mungkin pada CPU mereka.

Memori cache jauh lebih cepat daripada RAM, tetapi apa yang harus dipindahkan dari RAM ke cache dan dari cache kembali ke RAM ??? Itu lagi, hal-hal berpemilik, tetapi sekali lagi membutuhkan transistor untuk diimplementasikan.

Jadi transistor tambahan masuk ke hal-hal seperti pipa yang lebih panjang, algoritma cabang prediktif, memori cache, dan algoritma memori.

Ini tanpa menyebutkan prosesor multi-inti, dan pengontrol akses memori / sumber daya bersama.

smashtastic
sumber