Jika Anda tidak terlalu tertarik dengan komputer, Anda akan dimaafkan jika menganggap bahwa satu-satunya bentuk memori di komputer adalah hard drive dan RAM. Anda yang tertarik dengan komputer mungkin tahu bahwa ini bukan masalahnya, dan bahwa CPU juga memiliki seperangkat cache yang digunakan untuk menyimpan data dari RAM agar CPU dapat mengaksesnya lebih cepat. Semua ini adalah fitur yang diiklankan, terutama karena kecepatan dan/atau kapasitas adalah nilai jual yang layak dan umumnya memengaruhi tingkat kinerja.
Sebenarnya ada satu lapisan memori lainnya. Sebanyak mungkin Anda berpikir cache L1 sedekat mungkin dengan inti pemrosesan yang sebenarnya, ada lapisan lain yang lebih tinggi dalam hierarki memori. Ini adalah register CPU. Alasan mengapa ini tidak benar-benar diiklankan atau disebutkan adalah karena mereka tidak benar-benar berubah sama sekali. Secara teknis, mereka bisa saja, bagaimanapun, jumlah dan ukuran register sebenarnya sangat penting untuk arsitektur. Ini berarti bahwa semua CPU x86-64 memiliki jumlah register yang sama. Mereka tidak dipasarkan karena mereka bukan titik persaingan.
Apa yang dilakukan register?
Register adalah lokasi penyimpanan yang tersedia dengan cepat untuk prosesor. Akses ke register langsung dengan latensi nol, sedangkan cache L1 memiliki latensi sekitar 4-5 siklus di CPU modern. Kedekatan akses ini mengisyaratkan kasus penggunaan untuk register. Register digunakan untuk menyimpan instruksi yang secara aktif dioperasikan oleh CPU. Mereka juga menyimpan titik data yang akan diproses. Beberapa register adalah tujuan umum, sementara yang lain memiliki tujuan yang sangat spesifik. Contoh register tujuan khusus adalah penghitung program yang merupakan tempat prosesor melacak posisinya dalam urutan programnya.
Banyak register dianggap dapat diakses oleh pengguna. Ini tidak berarti bahwa pengguna komputer dapat memilih nilai apa yang akan dimasukkan ke dalamnya. Ini berarti bahwa perangkat lunak yang berjalan dapat menentukan data yang akan dimuat ke dalam register ini. Sejumlah kecil register bersifat internal, artinya perangkat lunak tidak dapat menanganinya sama sekali. Register instruksi, yang menyimpan instruksi yang sedang dieksekusi, adalah contoh register internal.
Daftar ganti nama
Meskipun arsitektur CPU hanya mengizinkan satu konfigurasi register, sebenarnya ada sedikit nuansa untuk itu. Semua CPU modern menggunakan penggantian nama register. Ini adalah teknik di mana Anda dapat memiliki lebih banyak register fisik dan menggunakannya untuk memuat data sebelumnya atau menyimpan data yang terkait dengan instruksi yang tidak berurutan yang seharusnya ditimpa. Ketika CPU sampai pada titik bahwa ia membutuhkan data dalam register tambahan, ia hanya mengganti namanya sehingga dapat dialamatkan, pada saat yang sama membuat register yang sebelumnya dapat dialamatkan menjadi tidak dapat dialamatkan.
Proses penggantian nama register bisa sangat membantu untuk eksekusi yang tidak berurutan. Misalnya, jika lokasi memori diprogram untuk dibaca dari kemudian ditulis, dan instruksi dieksekusi dalam urutan itu, ini baik-baik saja. Namun, jika instruksi diurutkan ulang untuk melakukan penulisan terlebih dahulu, instruksi baca akan mendapatkan nilai yang salah. Untuk mencegah hal ini, nilai asli yang akan dibaca disimpan dalam register yang tidak digunakan yang kemudian diganti namanya ketika instruksi yang relevan sedang diproses.
Kesimpulan
Register adalah tingkatan tertinggi dalam hierarki memori. Mereka adalah satu-satunya bagian yang dapat dialamatkan secara langsung oleh CPU dan tidak memiliki latensi. Register digunakan untuk menyimpan data yang secara aktif dieksekusi oleh CPU. Mereka juga digunakan untuk menyimpan titik data lain seperti penghitung program yang melacak instruksi mana yang akan dieksekusi berikutnya. Jumlah register yang tersedia sangat terbatas dengan arsitektur x86-64 yang memiliki 16 register tujuan umum dan 16 atau 32 register floating point tergantung pada apakah AVX-512 didukung.