Sekarang kita tahu bagaimana prosesor bekerja pada level tinggi, sekarang saatnya untuk mempelajari lebih dalam proses mendesain komponen internal mereka. Ini adalah artikel kedua dalam seri tentang pengembangan prosesor. Saya sarankan Anda mempelajari bagian pertama terlebih dahulu, sehingga Anda memahami konsep-konsep yang diuraikan di bawah ini.
Bagian 1: Dasar-dasar arsitektur komputer (arsitektur set instruksi, caching, saluran pipa, hyperthreading)
Bagian 2: Proses desain CPU (sirkuit listrik, transistor, elemen logika, sinkronisasi)
Bagian 3: Tata letak dan pembuatan fisik chip (VLSI dan fabrikasi silikon)
Bagian 4: Tren saat ini dan arah masa depan yang penting dalam arsitektur komputer (laut akselerator, integrasi tiga dimensi, FPGA, Near Memory Computing)
Seperti yang Anda ketahui, prosesor dan sebagian besar perangkat digital lainnya terdiri dari transistor. Cara termudah untuk memahami transistor sebagai saklar terkontrol dengan tiga kontak. Ketika rana dihidupkan, arus listrik dapat mengalir melalui transistor. Saat rana mati, arus tidak dapat mengalir. Rana seperti saklar lampu di ruangan, hanya saja lebih kecil, lebih cepat dan dapat dikontrol secara elektrik.
Ada dua jenis utama transistor yang digunakan dalam prosesor modern: pMOS (PMOS) dan nMOS (NMOS). Transistor nMOS melewati arus ketika gerbang diisi atau memiliki tegangan tinggi, dan transistor pMOS melewati arus ketika gerbang dilepaskan atau memiliki tegangan rendah. Dengan menggabungkan jenis-jenis transistor ini dengan cara yang saling melengkapi, kita dapat membuat elemen logika CMOS. Pada artikel ini, kami tidak akan menganalisis secara rinci fitur pengoperasian transistor, tetapi kami akan menyinggung ini di bagian ketiga dari seri.
Elemen logika adalah perangkat sederhana yang menerima sinyal input, melakukan operasi, dan mengeluarkan hasilnya. Sebagai contoh, elemen AND (AND) menyalakan sinyal outputnya jika dan hanya jika semua input gerbang dihidupkan. Inverter, atau elemen TIDAK (TIDAK), menyalakan outputnya jika input dinonaktifkan. Anda dapat menggabungkan dua daun jendela ini dan mendapatkan elemen NAND yang menyalakan output, jika dan hanya jika tidak ada input yang dihidupkan. Ada elemen lain dengan fungsionalitas logisnya, misalnya, OR (OR), OR-NOT (NOR), eksklusif OR (XOR) dan eksklusif OR dengan inversi (XNOR).
Berikut ini menunjukkan bagaimana dua elemen sederhana dirakit dari transistor: inverter dan NAND. Dalam inverter, transistor pMOS (atas) terhubung ke daya, dan transistor nMOS (bawah) terhubung ke ground. Pada penunjukan transistor pMOS ada lingkaran kecil yang terhubung ke gerbang. Kami mengatakan bahwa perangkat pMOS melewatkan arus saat input dimatikan, dan perangkat nMOS melewatkan arus saat input dihidupkan, sehingga mudah untuk melihat bahwa sinyal keluaran (Keluar) akan selalu menjadi kebalikan dari sinyal input (Masuk). Melihat elemen NAND, kita melihat bahwa ia membutuhkan empat transistor, dan bahwa output akan selalu dinonaktifkan jika setidaknya satu input dimatikan. Menghubungkan transistor dengan cara ini untuk membentuk jaringan sederhana adalah proses yang sama yang digunakan untuk merancang elemen logika yang lebih kompleks dan sirkuit lain di dalam prosesor.

Blok bangunan dalam bentuk elemen logis sangat sederhana sehingga sulit untuk memahami bagaimana mereka berubah menjadi komputer yang berfungsi. Proses desain terdiri dari menggabungkan beberapa elemen untuk membuat perangkat kecil yang dapat melakukan fungsi sederhana. Anda kemudian dapat menggabungkan banyak perangkat ini untuk membuat sesuatu yang melakukan fungsi yang lebih kompleks. Proses menggabungkan komponen individu untuk membuat struktur kerja persis proses yang digunakan saat ini untuk membuat chip modern. Satu-satunya perbedaan adalah bahwa chip modern terdiri dari
milyaran transistor.
Sebagai contoh kecil, mari kita ambil penambah sederhana - penambah penuh 1-bit. Ia menerima tiga sinyal input - A, B, dan Carry-In (sinyal input transfer), dan membuat dua sinyal output - Sum (jumlah) dan Carry-Out (sinyal output transfer). Sirkuit paling sederhana menggunakan lima elemen logika, dan mereka dapat dihubungkan bersama untuk membuat penambah ukuran apa pun. Dalam skema modern, proses ini ditingkatkan dengan mengoptimalkan bagian dari logika dan mentransfer sinyal, tetapi prinsip-prinsip dasar tetap sama.
Output dari Sum adalah A atau B, tetapi tidak pernah keduanya, atau ada sinyal pembawa input, dan kemudian A dan B dihidupkan atau keduanya dimatikan. Output transfer sedikit lebih rumit. Ini aktif ketika A dan B aktif pada saat yang sama, atau ada Carry-in dan salah satu A atau B aktif. Untuk menghubungkan beberapa adders 1-bit untuk membuat adder yang lebih luas, kita hanya perlu menghubungkan Carry-out dari bit sebelumnya ke Carry-in dari bit saat ini. Semakin rumit sirkuit, semakin membingungkan logika, tetapi ini adalah cara termudah untuk menambahkan dua angka. Prosesor modern menggunakan adders yang lebih canggih, tetapi sirkuitnya terlalu rumit untuk ditinjau. Selain adders, prosesor juga mengandung perangkat untuk membagi, mengalikan, dan versi semua operasi floating-point ini.
Kombinasi sekuens elemen-elemen untuk melakukan fungsi pada sinyal input disebut
logika kombinatorial . Namun, ini bukan satu-satunya jenis logika yang digunakan di komputer. Ini tidak akan banyak berguna jika kita tidak dapat menyimpan data atau melacak status. Agar dapat menyimpan data, kita perlu logika berurutan.
Logika sekuensial dibangun dengan menghubungkan inverter dan elemen logika lainnya dengan rapi sehingga outputnya mengirimkan sinyal umpan balik ke input elemen. Putaran umpan balik semacam itu digunakan untuk menyimpan satu bit data dan disebut
Static RAM , atau SRAM. Memori ini disebut RAM statis sebagai lawan dari RAM dinamis (DRAM) karena data yang disimpan selalu terhubung langsung ke tegangan positif atau pentanahan.
Cara standar untuk mengimplementasikan satu bit SRAM adalah dengan rangkaian 6 transistor yang ditunjukkan di bawah ini. Sinyal paling atas yang ditandai sebagai WL (
Word Line ) adalah alamatnya, dan ketika dinyalakan, data yang disimpan dalam sel 1-bit ini ditransfer ke
Bit Line yang ditandai sebagai BL. Output BLB disebut
Bit Line Bar ; ini hanya nilai terbalik dari Bit Line. Anda harus mengenali dua jenis transistor dan memahami bahwa M3 dengan M1, seperti M4 dengan M2, membentuk inverter.
SRAM digunakan untuk membuat cache ultrafast dan register di dalam prosesor. Memori ini sangat stabil, tetapi membutuhkan enam hingga delapan transistor untuk menyimpan setiap bit data. Oleh karena itu, dibandingkan dengan DRAM, harganya sangat mahal dalam hal biaya, kompleksitas, dan area pada chip. RAM dinamis, di sisi lain, menyimpan data dalam kapasitor kecil, daripada menggunakan gerbang logika. Ini disebut dinamis, karena tegangan pada kapasitor dapat sangat bervariasi, karena tidak terhubung ke daya atau ground. Hanya ada satu transistor yang digunakan untuk mengakses data yang disimpan dalam kapasitor.
Karena DRAM hanya membutuhkan satu transistor per bit dan sangat skalabel, DRAM dapat dikemas secara padat dan murah. Kerugian dari DRAM adalah bahwa muatan pada kapasitor sangat kecil sehingga perlu terus diperbarui. Itu sebabnya, setelah mematikan daya ke komputer, semua kapasitor habis dan data dalam RAM hilang.
Perusahaan seperti Intel, AMD, dan Nvidia tidak mempublikasikan diagram sirkuit dari prosesor mereka, sehingga tidak mungkin untuk menunjukkan rangkaian listrik lengkap untuk prosesor modern. Namun, penambah sederhana ini memungkinkan Anda untuk mendapatkan gagasan bahwa bahkan bagian paling kompleks dari prosesor dapat dibagi menjadi elemen logis dan penyimpanan, dan kemudian menjadi transistor.
Sekarang kita tahu bagaimana beberapa komponen prosesor dibuat, kita perlu mencari cara untuk menyatukan semuanya dan menyinkronkan. Semua komponen utama prosesor terhubung ke
sinyal jam . Secara bergantian memiliki tegangan tinggi dan rendah, mengubahnya dengan interval tertentu, yang disebut
frekuensi . Logika di dalam prosesor biasanya beralih nilai dan melakukan perhitungan ketika sinyal jam mengubah tegangan dari rendah ke tinggi. Dengan menyinkronkan semua bagian, kami dapat menjamin bahwa data selalu tiba pada waktu yang tepat sehingga tidak ada gangguan pada prosesor.
Anda mungkin pernah mendengar bahwa Anda dapat meningkatkan kecepatan clock untuk meningkatkan kinerja prosesor. Peningkatan kinerja ini disebabkan oleh fakta bahwa switching transistor dan logika di dalam prosesor mulai terjadi lebih sering daripada yang dimaksudkan. Karena ada lebih banyak siklus per detik, lebih banyak pekerjaan dapat dilakukan dan prosesor akan mengalami peningkatan kinerja. Namun, ini benar sampai batas tertentu. Prosesor modern biasanya beroperasi pada frekuensi dari 3,0 GHz hingga 4,5 GHz, dan nilai ini tidak banyak berubah selama sepuluh tahun terakhir. Sama seperti rantai logam yang tidak lebih kuat dari tautan terlemahnya, prosesor tidak dapat berjalan lebih cepat dari bagian yang paling lambat. Pada akhir setiap siklus clock, setiap elemen prosesor harus menyelesaikan pekerjaannya. Jika beberapa bagian belum menyelesaikannya, maka sinyal jam terlalu cepat dan prosesor tidak akan berfungsi. Desainer menyebut bagian paling lambat ini
Critical Path, dan dialah yang menentukan frekuensi maksimum yang dapat digunakan prosesor. Di atas frekuensi tertentu, transistor tidak punya waktu untuk beralih dengan cukup cepat dan mulai gagal atau menghasilkan nilai output yang salah.
Dengan meningkatkan tegangan prosesor, kita dapat mempercepat switching transistor, tetapi ini juga berfungsi hingga batas tertentu. Jika terlalu banyak tegangan diterapkan, maka kami berisiko membakar prosesor. Ketika kita meningkatkan frekuensi atau tegangan prosesor, selalu mulai memancarkan lebih banyak panas dan mengkonsumsi lebih banyak daya. Ini karena daya prosesor berbanding lurus dengan frekuensi dan sebanding dengan kuadrat tegangan. Untuk menentukan konsumsi daya prosesor, kami menganggap setiap transistor sebagai kapasitor kecil yang perlu diisi atau dikosongkan saat nilainya berubah.
Catu daya adalah bagian penting dari prosesor sehingga dalam beberapa kasus hingga setengah dari kontak fisik pada chip hanya dapat digunakan untuk daya atau pentanahan. Beberapa chip pada beban penuh dapat mengkonsumsi lebih dari 150 ampere, dan dengan semua arus ini, Anda perlu dikendalikan dengan sangat hati-hati. Sebagai perbandingan: prosesor pusat menghasilkan lebih banyak panas per unit luas daripada reaktor nuklir.
Sinyal clock dalam prosesor modern membutuhkan sekitar 30-40% dari total daya, karena sangat kompleks dan harus mengelola banyak perangkat yang berbeda. Untuk menghemat energi, sebagian besar prosesor berdaya rendah menonaktifkan bagian-bagian chip saat tidak digunakan. Ini dapat dilakukan dengan mematikan jam (metode ini disebut Clock Gating) atau mematikan daya (Power Gating).
Sinyal clock menciptakan kesulitan lain dalam desain prosesor: karena frekuensinya terus tumbuh, hukum fisika mulai mempengaruhi pekerjaan. Meskipun kecepatan cahaya yang sangat tinggi, itu tidak cukup besar untuk prosesor berkinerja tinggi. Jika Anda menghubungkan sinyal jam ke salah satu ujung chip, maka pada saat sinyal mencapai ujung yang lain, itu akan tidak sinkron dengan jumlah yang signifikan. Untuk menyinkronkan semua bagian chip, sinyal clock didistribusikan menggunakan apa yang disebut H-Tree. Ini adalah struktur yang memastikan bahwa semua titik akhir berada pada jarak yang sama persis dari pusat.

Tampaknya desain masing-masing transistor, sinyal clock dan kontak daya dalam chip adalah tugas yang sangat monoton dan sulit, dan memang demikian. Meskipun ribuan insinyur bekerja untuk perusahaan seperti Intel, Qualcomm, dan AMD, mereka tidak akan dapat secara manual merancang setiap aspek dari chip tersebut. Untuk merancang chip skala ini, mereka menggunakan banyak alat canggih yang secara otomatis menghasilkan desain dan sirkuit listrik. Alat seperti ini biasanya mendapatkan deskripsi tingkat tinggi tentang apa yang harus dilakukan komponen, dan menentukan konfigurasi perangkat keras terbaik yang memenuhi persyaratan ini. Baru-baru ini, arah pengembangan yang disebut
Sintesis Tingkat Tinggi telah muncul, yang memungkinkan pengembang untuk menentukan fungsionalitas yang diperlukan dalam kode, setelah itu komputer menentukan cara terbaik untuk mencapainya dalam peralatan.
Dengan cara yang sama seperti Anda dapat menggambarkan program komputer melalui kode, desainer dapat menggambarkan perangkat perangkat keras dengan kode. Bahasa seperti Verilog dan VHDL memungkinkan perancang peralatan untuk mengekspresikan fungsionalitas dari setiap sirkuit yang mereka buat. Setelah melakukan simulasi dan verifikasi proyek-proyek tersebut, mereka dapat disintesis menjadi transistor tertentu, yang terdiri dari rangkaian listrik. Meskipun fase verifikasi mungkin tidak semenarik mendesain cache atau kernel baru, ini jauh lebih penting daripada mereka. Untuk setiap insinyur desain yang disewa oleh perusahaan, mungkin ada lima atau lebih insinyur verifikasi.
Verifikasi proyek baru seringkali membutuhkan lebih banyak waktu dan uang daripada membuat chip itu sendiri. Perusahaan menghabiskan begitu banyak waktu dan uang untuk verifikasi, karena setelah mengirim chip ke dalam produksi, itu tidak dapat diperbaiki. Jika terjadi kesalahan pada perangkat lunak, Anda dapat melepaskan tambalan, tetapi peralatan tersebut bekerja secara berbeda. Misalnya, Intel menemukan
bug dalam modul divisi floating point dari beberapa chip Pentium, dan sebagai hasilnya, ia menghasilkan kerugian yang setara dengan $ 2 miliar saat ini.
Sulit untuk memahami bahwa mungkin ada beberapa miliar transistor dalam satu chip dan memahami apa yang mereka lakukan. Jika Anda memecah chip menjadi komponen internal masing-masing, itu menjadi sedikit lebih mudah. Elemen logika terdiri dari transistor, elemen logika digabungkan menjadi modul fungsional yang melakukan tugas tertentu, dan modul fungsional ini dihubungkan bersama untuk membentuk arsitektur komputer yang kita bahas di bagian pertama seri.
Sebagian besar pekerjaan desain terotomatisasi, tetapi hal di atas memungkinkan kita untuk menyadari betapa rumitnya CPU baru yang baru saja kita beli rumit.
Pada bagian kedua dari seri ini, saya berbicara tentang proses desain CPU. Kami membahas transistor, gerbang logika, sinyal daya dan jam, sintesis desain, dan verifikasi. Pada bagian ketiga, kita akan mengetahui apa yang diperlukan untuk produksi fisik chip. Semua perusahaan suka membual tentang bagaimana modernnya proses pembuatannya (Intel 10nm, Apple dan AMD 7nm, dll.), Tetapi apa arti angka-angka ini? Kita akan membicarakan ini di bagian selanjutnya.
Bacaan yang Disarankan