Ketika membahas prosesor, kita sering mendengar istilah seperti CPU, core, thread, cache, clock speed, dan mikroarsitektur. Namun, ada satu konsep penting yang menjadi dasar komunikasi antara software dan hardware, yaitu instruction set.
Instruction set memiliki peran penting karena menjadi sekumpulan instruksi yang dapat dipahami dan dijalankan oleh prosesor. Sementara itu, mikroarsitektur menentukan bagaimana instruksi tersebut diproses di dalam CPU.
Dengan kata lain, instruction set dan mikroarsitektur memiliki hubungan yang sangat erat. Keduanya menjadi bagian penting dalam menentukan bagaimana sebuah program dapat berjalan di komputer.
Lalu, apa sebenarnya instruction set? Apa hubungannya dengan mikroarsitektur prosesor? Mari kita bahas secara sederhana.
Apa Itu Instruction Set?
Instruction Set atau sering disebut Instruction Set Architecture (ISA) adalah kumpulan instruksi dan aturan yang menentukan bagaimana software berkomunikasi dengan prosesor.
Sederhananya, instruction set dapat diibaratkan sebagai bahasa yang dipahami oleh CPU.
Program yang dibuat oleh programmer pada akhirnya perlu diterjemahkan menjadi instruksi yang dapat dipahami oleh prosesor. Instruksi tersebut dapat berupa perintah untuk:
- Melakukan perhitungan
- Memindahkan data
- Membandingkan nilai
- Membaca data dari memori
- Menyimpan data
- Melakukan percabangan
- Memanggil fungsi tertentu
CPU kemudian menjalankan instruksi tersebut sesuai dengan aturan instruction set yang didukungnya.
Mengapa Instruction Set Penting?
Instruction set menjadi semacam jembatan antara software dan hardware.
Programmer biasanya tidak menulis aplikasi modern secara langsung menggunakan instruksi mesin satu per satu. Mereka menggunakan bahasa pemrograman seperti C, C++, Java, Python, atau bahasa lainnya.
Kode tersebut kemudian diproses oleh compiler, interpreter, atau runtime sehingga dapat dijalankan menggunakan kemampuan hardware yang tersedia.
Pada tingkat paling dasar, prosesor akhirnya bekerja dengan instruksi yang sesuai dengan ISA-nya.
Tanpa adanya aturan yang jelas mengenai instruksi, software tidak akan memiliki cara standar untuk meminta prosesor melakukan operasi tertentu.
Contoh Instruction Set yang Populer
Ada berbagai jenis instruction set yang digunakan pada perangkat komputasi.
Beberapa yang cukup dikenal antara lain:
1. x86 dan x86-64
x86 merupakan keluarga instruction set yang sangat populer pada komputer desktop, laptop, dan server.
Versi 64-bit yang umum digunakan saat ini sering disebut x86-64 atau x64.
Instruction set ini digunakan pada banyak prosesor modern dari Intel dan AMD.
2. ARM
ARM merupakan keluarga arsitektur instruction set yang banyak digunakan pada perangkat mobile dan berbagai sistem embedded.
ARM juga berkembang ke perangkat komputasi lain, termasuk laptop, server, dan perangkat dengan kebutuhan efisiensi energi tinggi.
3. RISC-V
RISC-V merupakan ISA terbuka yang dapat digunakan dan dikembangkan oleh berbagai pihak.
RISC-V menarik perhatian karena spesifikasinya dirancang agar dapat digunakan dalam berbagai jenis perangkat dan memungkinkan pengembangan ekstensi sesuai kebutuhan.
Instruction Set vs Mikroarsitektur
Instruction set dan mikroarsitektur merupakan dua konsep yang berbeda.
Instruction set menjelaskan instruksi dan aturan yang tersedia bagi software untuk berkomunikasi dengan prosesor.
Sementara itu, mikroarsitektur menjelaskan bagaimana prosesor secara internal mengimplementasikan dan menjalankan instruksi tersebut.
Agar lebih mudah, bayangkan sebuah restoran.
Instruction set seperti daftar menu yang tersedia. Menu memberi tahu pelanggan makanan apa saja yang dapat dipesan.
Sedangkan mikroarsitektur seperti dapur restoran. Dapur menentukan bagaimana pesanan tersebut diproses, siapa yang mengerjakannya, peralatan apa yang digunakan, dan bagaimana pekerjaan dilakukan secara efisien.
Jadi:
Instruction Set = Apa yang dapat dilakukan CPU
Mikroarsitektur = Bagaimana CPU melakukannya
Hubungan Instruction Set dengan Mikroarsitektur
Hubungan keduanya sangat erat.
Sebuah mikroarsitektur dirancang untuk mengimplementasikan instruction set tertentu. Artinya, CPU harus memiliki mekanisme internal agar setiap instruksi yang didukung oleh ISA dapat dijalankan dengan benar.
Sebagai contoh, prosesor dapat mendukung ISA x86-64. Di baliknya, prosesor memiliki mikroarsitektur yang mengatur bagaimana instruksi x86-64 tersebut diproses.
Hal ini memungkinkan dua prosesor yang mendukung instruction set yang sama tetap memiliki desain internal dan performa yang berbeda.
Apakah Instruction Set yang Sama Berarti Performanya Sama?
Tidak.
Ini merupakan salah satu hal penting yang perlu dipahami.
Dua prosesor dapat mendukung instruction set yang sama, tetapi menggunakan mikroarsitektur yang berbeda.
Akibatnya, performa keduanya dapat berbeda.
Perbedaan tersebut dapat disebabkan oleh berbagai faktor, seperti:
- Jumlah core
- Clock speed
- IPC
- Struktur cache
- Pipeline
- Branch prediction
- Execution unit
- Memory subsystem
- Efisiensi energi
- Kemampuan pemrosesan paralel
Jadi, instruction set bukan satu-satunya faktor yang menentukan performa CPU.
Bagaimana Instruction Set Diproses oleh CPU?
Untuk memahami hubungan instruction set dan mikroarsitektur, mari lihat gambaran sederhana prosesnya.
1. Program Menghasilkan Instruksi
Ketika sebuah aplikasi dijalankan, program membutuhkan CPU untuk melakukan berbagai operasi.
Misalnya, program meminta CPU melakukan perhitungan atau memindahkan data.
2. Instruksi Diambil
CPU mengambil instruksi dari memori atau cache.
Tahap ini dikenal sebagai instruction fetch.
3. Instruksi Didekode
Instruksi yang diperoleh kemudian diterjemahkan oleh bagian internal CPU agar prosesor mengetahui operasi yang harus dilakukan.
Tahap ini disebut instruction decode.
4. Instruksi Diproses
Instruksi kemudian diteruskan ke bagian CPU yang sesuai.
Misalnya, operasi aritmetika dapat diproses oleh unit aritmetika, sedangkan operasi tertentu membutuhkan unit eksekusi lainnya.
5. Hasil Dikembalikan
Setelah instruksi selesai diproses, hasilnya dapat disimpan di register, cache, atau memori sesuai kebutuhan.
Semua proses tersebut diatur oleh mikroarsitektur prosesor.
Apa Itu ISA RISC dan CISC?
Dalam pembahasan instruction set, kita sering menemukan istilah RISC dan CISC.
Keduanya menggambarkan pendekatan desain instruction set yang berbeda.
RISC
RISC (Reduced Instruction Set Computer) menggunakan pendekatan yang cenderung memiliki instruksi lebih sederhana dan terstruktur.
Tujuannya adalah membuat instruksi lebih mudah diproses secara efisien oleh hardware.
ARM dan RISC-V merupakan contoh ISA yang sering dikaitkan dengan pendekatan RISC.
Namun, implementasi modern sangat kompleks sehingga membandingkan RISC dan CISC hanya berdasarkan “instruksi sederhana” dan “instruksi kompleks” tidak selalu cukup.
CISC
CISC (Complex Instruction Set Computer) menggunakan instruction set yang menyediakan berbagai instruksi dengan tingkat kompleksitas yang lebih beragam.
x86 merupakan contoh keluarga ISA yang secara historis dikategorikan sebagai CISC.
Prosesor modern dapat menggunakan teknik internal yang kompleks untuk mengimplementasikan instruksi tersebut secara efisien.
Apa Hubungan RISC/CISC dengan Mikroarsitektur?
RISC dan CISC berkaitan dengan desain instruction set, sedangkan mikroarsitektur berkaitan dengan cara instruction set tersebut diimplementasikan.
Menariknya, desain internal prosesor modern tidak selalu terlihat seperti karakteristik sederhana dari ISA-nya.
Misalnya, prosesor x86 modern dapat menerjemahkan instruksi tertentu menjadi operasi internal yang lebih sederhana sebelum dieksekusi.
Hal ini menunjukkan bahwa ISA dan mikroarsitektur berada pada lapisan yang berbeda.
ISA menyediakan antarmuka yang terlihat oleh software, sedangkan mikroarsitektur bekerja di balik layar.
Instruction Set dan Compiler
Instruction set juga memiliki hubungan erat dengan compiler.
Compiler bertugas menerjemahkan kode sumber menjadi bentuk yang dapat dijalankan oleh target platform.
Sebagai contoh, ketika programmer menulis kode menggunakan bahasa C atau C++, compiler dapat menghasilkan instruksi mesin yang sesuai dengan ISA target.
Jika targetnya adalah x86-64, compiler akan menghasilkan kode mesin yang mengikuti aturan x86-64.
Jika targetnya ARM64, compiler akan menghasilkan instruksi yang sesuai dengan ARM64.
Karena itu, ISA menjadi salah satu faktor penting yang menentukan kompatibilitas software dengan hardware.
Mengapa Satu Program Bisa Berjalan di Banyak Prosesor?
Pertanyaan menariknya adalah: jika instruction set berbeda, bagaimana sebuah aplikasi dapat berjalan pada berbagai komputer?
Jawabannya bergantung pada software yang digunakan.
Sebuah program dapat:
- Dikompilasi untuk arsitektur tertentu
- Memiliki versi berbeda untuk platform yang berbeda
- Menggunakan virtual machine
- Menggunakan interpreter
- Menggunakan runtime yang menyediakan kompatibilitas lintas platform
Contohnya, aplikasi dapat dibuat agar tersedia untuk sistem x86-64 dan ARM64 dengan proses build yang berbeda.
Dengan demikian, software dapat menyesuaikan instruksi yang digunakan dengan platform hardware.
Instruction Set pada Intel dan AMD
Intel dan AMD merupakan dua produsen prosesor yang banyak menggunakan keluarga ISA x86-64 pada CPU mereka.
Walaupun instruction set dasarnya dapat kompatibel, mikroarsitektur Intel dan AMD tidak sama.
Intel dan AMD mengembangkan desain internal masing-masing untuk mengoptimalkan performa dan efisiensi.
Itulah sebabnya prosesor Intel dan AMD dapat menjalankan banyak software yang sama, tetapi memiliki karakteristik performa yang berbeda.
Dengan kata lain:
ISA dapat menjadi sama, tetapi mikroarsitekturnya dapat berbeda.
Instruction Set pada Smartphone
Konsep instruction set juga dapat ditemukan pada perangkat smartphone.
Banyak perangkat mobile menggunakan prosesor berbasis ARM.
Keunggulan ARM dalam berbagai perangkat mobile tidak hanya berkaitan dengan ISA, tetapi juga dengan implementasi hardware, efisiensi energi, desain SoC, dan berbagai faktor lainnya.
Inilah alasan mengapa pembahasan tentang instruction set tidak dapat dipisahkan sepenuhnya dari mikroarsitektur dan desain sistem secara keseluruhan.
Mengapa Instruction Set Penting bagi Programmer?
Bagi programmer, pemahaman tentang instruction set memang tidak selalu diperlukan untuk membuat aplikasi sehari-hari.
Namun, pengetahuan dasarnya sangat berguna ketika mempelajari:
- Sistem operasi
- Computer architecture
- Compiler
- Assembly
- Embedded system
- Optimasi performa
- Low-level programming
Programmer yang memahami hubungan antara software, ISA, dan mikroarsitektur akan memiliki gambaran lebih baik mengenai apa yang sebenarnya terjadi ketika sebuah program dijalankan.
Mengapa Instruction Set Penting bagi Teknisi Komputer?
Teknisi dan penggemar hardware juga dapat memperoleh manfaat dari memahami instruction set.
Pengetahuan ini membantu menjelaskan mengapa:
- Software tertentu hanya tersedia untuk platform tertentu
- Sistem operasi memiliki versi arsitektur berbeda
- Aplikasi x86 dan ARM tidak selalu dapat dijalankan secara langsung satu sama lain
- Prosesor dengan ISA yang sama tetap memiliki performa berbeda
- Emulator dan translation layer dibutuhkan dalam kondisi tertentu
Dengan memahami konsep tersebut, kita dapat melihat hubungan hardware dan software dengan lebih jelas.
Perbedaan Instruction Set, Mikroarsitektur, dan Arsitektur Sistem
Ketiga istilah ini sering membingungkan pemula.
Berikut gambaran sederhananya:
| Konsep | Fokus Utama |
|---|---|
| Instruction Set / ISA | Instruksi yang dapat dipahami dan dijalankan CPU |
| Mikroarsitektur | Cara internal CPU menjalankan instruksi |
| Arsitektur komputer | Gambaran lebih luas tentang organisasi dan cara kerja sistem komputer |
Instruction set berada pada tingkat antarmuka antara software dan CPU, sedangkan mikroarsitektur berada pada tingkat implementasi hardware.
Apakah Instruction Set Menentukan Kecepatan CPU?
Tidak secara langsung.
Instruction set menentukan kemampuan dan aturan instruksi yang tersedia, tetapi kecepatan dan performa CPU dipengaruhi oleh banyak faktor lain.
Misalnya:
- Mikroarsitektur
- IPC
- Frekuensi
- Cache
- Jumlah core
- Jumlah thread
- Memory latency
- Branch prediction
- Execution unit
- Efisiensi software
Oleh karena itu, dua CPU dengan ISA yang sama tetap dapat memiliki performa yang sangat berbeda.
Contoh Sederhana Hubungan ISA dan Mikroarsitektur
Bayangkan dua orang menerima instruksi yang sama:
“Buat satu laporan dalam waktu tertentu.”
Instruksinya sama.
Namun, orang pertama mungkin memiliki komputer yang lebih cepat, metode kerja lebih efisien, dan alat yang lebih baik. Orang kedua mungkin menggunakan metode yang berbeda.
Hasil akhirnya dapat berbeda meskipun instruksinya sama.
Dalam analogi tersebut:
- Instruksi: perintah yang harus dilakukan
- ISA: aturan mengenai instruksi
- Mikroarsitektur: cara pekerjaan dilaksanakan
- CPU: pihak yang menjalankan pekerjaan
Analogi ini memang disederhanakan, tetapi cukup membantu untuk memahami konsep dasarnya.
Kesimpulan
Instruction Set atau Instruction Set Architecture (ISA) adalah kumpulan instruksi dan aturan yang menjadi antarmuka antara software dan prosesor. Sementara itu, mikroarsitektur adalah desain internal yang menentukan bagaimana instruksi tersebut dijalankan oleh CPU.
Hubungan keduanya sangat erat. Mikroarsitektur dibuat untuk mengimplementasikan instruction set tertentu, tetapi satu ISA dapat diimplementasikan menggunakan berbagai mikroarsitektur.
Karena itu, dua prosesor yang mendukung ISA yang sama belum tentu memiliki performa yang sama. Perbedaan desain cache, pipeline, execution unit, branch prediction, jumlah core, IPC, dan berbagai komponen lainnya dapat menghasilkan karakteristik CPU yang berbeda.
Memahami instruction set juga membantu kita mengetahui mengapa software tertentu dibuat untuk arsitektur x86-64, ARM64, atau RISC-V, serta mengapa kompatibilitas antara platform dapat membutuhkan compiler, emulator, virtual machine, atau teknologi translasi.
Pada akhirnya, ISA adalah aturan komunikasi antara software dan CPU, sedangkan mikroarsitektur adalah cara CPU menjalankan aturan tersebut di dalam hardware.
Memahami keduanya merupakan langkah penting untuk mengenal cara kerja komputer secara lebih mendalam, terutama bagi pelajar RPL, programmer, teknisi komputer, dan siapa saja yang tertarik dengan dunia teknologi.
