Monday, May 25, 2009

Register Processor


Dalam arsitektur komputer, Register prosesor adalah sejumlah kecil memori komputer yang bekerja dengan kecepatan sangat tinggi yang digunakan untuk melakukan eksekusi terhadap program-program komputer dengan menyediakan akses yang cepat terhadap nilai-nilai yang umum digunakan. Umumnya nilai-nilai yang umum digunakan adalah nilai yang sedang dieksekusi dalam waktu tertentu.
Register prosesor berdiri pada tingkat tertinggi dalam hierarki memori: ini berarti bahwa kecepatannya adalah yang paling cepat; kapasitasnya adalah paling kecil; dan harga tiap bitnya adalah paling tinggi. Register juga digunakan sebagai cara yang paling cepat dalam sistem komputer untuk melakukan manipulasi data.

Register umumnya diukur dengan satuan bit yang dapat ditampung olehnya, seperti "register 8-bit", "register 16-bit", "register 32-bit", atau "register 64-bit" dan lain-lain.
Istilah register saat ini dapat merujuk kepada kumpulan register yang dapat diindeks secara langsung untuk melakukan input/output terhadap sebuah instruksi yang didefinisikan oleh set instruksi. untuk istilah ini, digunakanlah kata "Register Arsitektur". Sebagai contoh set instruksi Intel x86 mendefinisikan sekumpulan delapan buah register dengan ukuran 32-bit, tapi CPU yang mengimplementasikan set instruksi x86 dapat mengandung lebih dari delapan register 32-bit.
Register terbagi menjadi beberapa kelas:

• Register data, adalah register yang digunakan untuk menyimpan angka-angka dalam bilangan bulat (integer) yang mengandung informasi yang akan, sedang atau telah diolah oleh komputer. Pada 8088 register ini diwujudkan oleh AX, BX, CX dan BX (sebagai general purpose register), sehubungan dengan fungsinya yang selain menangani tugas-tugas khusus, juga bisa dimanfaatkan untuk membantu proses-proses pengolahand data didalam internal mikroprosessor.

• Register alamat, yang digunakan untuk menyimpan alamat-alamat memori dan juga untuk mengakses memori. Register alamat, dapat berisi:
(1) alamat di main memory,
(2) alamat instruksi di main memory,
(3) bagian alamat yang digunakan dalam penghitungan alamat lengkap.
contoh:
- register index (index register)
- register penunjuk segmen (segment pointer register)
- register penunjuk stack (stack pointer register)
- register penanda (flag register)

• Register general purpose, atau lebih dikenal General Purpose adalah register-register serbaguna, dapat digunakan untuk menyimpan angka dan alamat secara sekaligus, sering dimanfaatkan untuk keperluan-keperluan lain yang bukan merupakan fungsi khasnya dan untuk menampung secara sementara data-data yang akan diolah, sebelum diambil dan diproses oleh ALU (Arithmetic and Logical Unit), walaupun demikian ada juga instruksi-instruksi tertentu yang mengharuskan penggunaan register-register secara spesifik (sesuai fungsi sebenarnya), yang mempunyai 16 bit, dan dapat digunakan penuh 16 bit (1 word = 1 kata) atau 8 bit (1 byte = 1 karakter) saja.

Jenis-jenis general purpose register dapat dijelaskan sebagai berikut :

1. AX (16 bit), terdiri dari AH (high byte/8 bit), AL (low byte/8 bit)
Secara khusus sebagai Accumulator dan register serbaguna yang berfungsi sebagai masukan, atau menampung hasil proses / perhitungan (add, sub, mul, dan div) dan sering untuk menyimpan data sementara. Banyak instruksi yang dioptimasikan unjuk kerjanya jika beroperasi pada register accumulator. Pengoperasian data yang disimpan di accumulator sedikit lebih cepat dibanding bila data disimpan di register lain. Pada operasi pembagian, jika bilangan pembagi besarnya 16 bit, bilangan yang dibagi ditampung di pasangan register DX:AX. Setelah pembagian hasil ditampung di AX sedang sisa hasil bagi di DX.
Bila bilangan pembagi besarnya 8 bit, bilangan yang dibagi ditempatkan di AX. Setelah pembagian, hasil bagi ditempatkan di AL sedang sisa hasil bagi di AH.
Pada operasi perkalian, accumulator menampung bilangan yang akan dikalikan. Hasil perkalian ditempatkan di register AX. Pada operasi I/O ke dan dari port, accumulator menampung data yang akan ditransfer.

2. BX (16 bit), terdiri dari BH (high byte.bit), AL (low byte/8 bit)
Secara spesifik sebagai Base juga dan register serbaguna yang merupakan salah satu dari dua register base Addressing mode (penunjuk basis alamat), yang dapat mengambil atau menulis langsung dari/ke memory dengan segment DS (Data Segment) serta dapat dipakai sebagai pointer pada suatu basis data misalnya.

3. CX (16 bit), terdiri dari CH (high byte.bit), CL (low byte/8 bit)
Secara spesifik sebagai Counter untuk meletakkan jumlah lompatan pada LOOP yang dilakukan, misal sebagai penunjuk berapa banyak perhitungan dilakukan. Berfungsi untuk menampung cacah perulangan suatu operasi (loop, string, shift, dan rotate). Register ini dapat dipakai sebagai penyimpan data sementara.

4. DX (16 bit), terdiri dari DH (high byte.bit), DL (low byte/8 bit)
Secara spesifik sebagai Data juga sebagai register serbaguna yang
digunakan sebagai penampung data tertentu (karakter, pointer,
penentuan disk).
4 tugas pokok register DX :
• Mmbantu AX dalam proses perkalian dan pembagian, terutama perkalian dan
pembagian 16 bit
• DX merupakan register offset dari DS
• Menunjukkan nomor port pada operasi port
• Dipakai sebagai penampung sementara data. Dipakai berpasangan dengan
register AX, operasi perkalian dan pembagian 16 bit. Pada operasi I/O ke dan
dari port, DX menampung port yang akan diakses.

AX / BX / CX / DX
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
----------------------------------- ---------------------------------------
AH / BH / CH / DH AL / BL / CL / DL

Dari fungsi-fungsi register AX, BX, CX, DX dapat digolongkan sebagai register 'Data' karena kegunaan dan pemanfaatannya yang cenderung ke penampungan data, selain memiliki fungsi spesifik tetapi dapat saling tergantung.

• Register floating-point, yang digunakan untuk menyimpan angka-angka bilangan titik mengambang (floating-point). Floating-point atau bilangan titik mengambang, adalah sebuah format bilangan yang dapat digunakan untuk merepresentasikan sebuah nilai yang sangat besar atau sangat kecil. Bilangan ini direpresentasikan menjadi dua bagian, yakni bagian mantisa dan bagian eksponen (E). Bagian mantisa menentukan digit dalam angka tersebut, sementara eksponen menentukan nilai berapa besar pangkat pada bagian mantisa tersebut (pada posisi titik desimal). Sebagai contoh, bilangan 314600000 dan bilangan 0.0000451 dapat direpresentasikan dalam bentuk bilangan floating point: 3146E5 dan 451E-7 (artinya 3146 * 10 pangkat 5, dan 451 * 10 pangkat -7).
Kebanyakan CPU atau mikroprosesor sederhana tidak mendukung secara langsung operasi terhadap bilangan floating-point ini, karena aslinya mikroprosesor ini hanya memiliki unit aritmetika dan logika, serta unit kontrol yang beroperasi berdasarkan pada bilangan bulat (integer) saja. Perhitungan atau kalkulasi terhadap nilai floating point pada jenis mikroprosesor sederhana dapat dilakukan dengan menggunakan perangkat lunak, sehingga operasinya sangat lambat. Untuk itulah, sebuah prosesor tambahan dibutuhkan untuk melakukan operasi terhadap jenis bilangan ini, yang disebut dengan unit titik mengambang. Dalam bahasa pemrograman, khususnya keluarga bahasa pemrograman C, bilangan titik mengambang direpresentasikan dengan tipe data float.

• Register konstanta (constant register), yang digunakan untuk menyimpan angka-angka tetap yang hanya dapat dibaca (bersifat read-only), semacam phi, null, true, false dan lainnya.

• Register vektor, yang digunakan untuk menyimpan hasil pemrosesan vektor yang dilakukan oleh prosesor SIMD.

• Register special purpose yang dapat digunakan untuk menyimpan data internal prosesor, seperti halnya instruction pointer, stack pointer, dan status register.

• Register yang spesifik terhadap model mesin (machine-specific register), dalam beberapa arsitektur tertentu, digunakan untuk menyimpan data atau pengaturan yang berkaitan dengan prosesor itu sendiri. Karena arti dari setiap register langsung dimasukkan ke dalam desain prosesor tertentu saja, mungkin register jenis ini tidak menjadi standar antara generasi prosesor.

No comments:

Post a Comment