Crimson's Blog
Welcome to My blog

Jumat, 10 Oktober 2008

Arsitektur AMD64


Arsitektur terbaru dari prosesor AMD adalah AMD64. Yang mencengangkan adalah Intel sebagai produsen resmi prosesor IBM-PC Compatible malah tunduk dan membeli lisensi arsitektur AMD64. Padahal kita tahu, AMD dari awal adalah peniru prosesor Intel, tepatnya arsitektur IA-32.
Arsitektur AMD64 tidak akan begitu populer jika ia tidak tetap mempertahankan arsitektur x86. Arsitektur x86? Itu adalah arsitektur prosesor yang sudah kita pakai sejak zaman Intel 8086 sampai Intel Pentium 4 32-bit. Dalam dokumentasi zaman sekarang, arsitektur x86 adalah arsitektur yang sudah [mulai] ditinggalkan dan disebut legacy x86 architecture.
Sekarang jawab pertanyaan ini: Kamu membeli prosesor berbasis AMD64 untuk menjalankan program yang dirancang bagi arsitektur x86 atau untuk yang dikhususkan bagi AMD64? Saya kira, semua orang yang waras akan menjawab: "Hey, aku susah payah beli prosesor AMD64 tentu saja untuk menjalankan program 64-bit!!! Dan bagiku dukungan arsitektur x86 adalah nilai tambah, tapi kalian harus segera membuat program yang benar-benar 64-bit!!!"
Ini juga salah satu alasan mengapa saya tidak menyarankan para programmer assembler pemula memulai dari arsitektur x86 (pemograman 32-bit). Apalagi kalau mereka mulai dari arsitektur x86 16-bit!!! Orang-orang ingin membeli program 64-bit agar merasakan kehebatan AMD64 mereka, jangan berikan program 32-bit lagi pada mereka, apalagi DOS 16-bit!!
Lalu kamu pun bertanya: "Hey, aku juga belajar assembler. Tahu dari mana aku mempelajari 16-bit, 32-bit atau yang 64-bit?" Well, memang tidak banyak bedanya, tapi jika hampir seluruh aktifitasmu menggunakan register 16-bit seperti AX, BX, CX, dan DX maka kemungkinan besar kamu mempelajari pemograman 16-bit. Bagaimana jika kamu lebih banyak memakai register 32-bit seperti EAX, EBX, ECX, dan EDX? Tebak sendiri kamu mempelajari pemograman berapa bit :)
Yang lebih mengagumkan lagi, dan merupakan ciri khas prosesor IBM-PC kita, arsitektur AMD64 bukan hanya masih tetap bisa menjalankan program 32-bit, tapi juga 16-bit!! Jadi, masih ada kemungkinan program DOS kamu tetap berjalan di prosesor dengan arsitektur AMD64. Tapi, siapa yang mau beli AMD64 mahal-mahal hanya untuk menjalankan program DOS?
Ok, lalu apa yang berbeda di arsitektur AMD64? Dari segi register, kini kamu punya 8 tambahan general purpose register baru, sehingga daftar general purpose register di AMD64 menjadi:
RAX
RBX
RCX
RDX
RBP
RSI
RDI
RSP
R8
R9
R10
R11
R12
R13
R14
R15
Ingat bahwa register di atas hanya aktif jika prosesor berada pada modus 64-bit atau kita sebut dengan Long Mode. Bagaimana kalau aku masih memakai sistem operasi Windows XP 32-bit? Itu 'kan artinya aku memakai Legacy and Compatibility Mode sehingga general purpose register yang ada hanya:
EAX
EBX
ECX
EDX
EBP
ESI
EDI
ESP
Wew, beda jauh 'kan? Duh.. Jangan mengebiri prosesor AMD64 punya kamu dengan hanya memakai Windows XP 32-bit. Segera ganti Vista donk :) Dengan jumlah general purpose register yang lebih banyak, maka transfer memori relatif berkurang alias kita jadi lebih jarang menyimpan ke memori (soalnya 'kan masih bisa nampung di register).
Masih tetap mau menjalankan AMD64 di Legacy Mode? Ini bukan hanya masalah jumlah general purpose register saja lho. Tapi tiap register di Long Mode sudah berukuran 64-bit! Dan register di Legacy and Compatibility Mode tetap masih 32-bit! Ok, aku tidak peduli, memang apa bedanya??
Apa bedanya?? Begitu tanyamu padaku.. Mmh.. Bagaimana menjawabnya ya?? Pada modus 16-bit, prosesor dapat mengerjakan operasi 16-bit dengan paling efisien. Misalnya, untuk menghitung 0x5432 ditambah 0x1234 = berapa? Prosesor 16-bit bisa mengerjakan dengan cepat! Tapi kalau kamu menyuruh prosesor 16-bit menghitung 0x12345678 ditambah dengan 0x44556677, maka ia harus bekerja agak lama, karena melewati daya tampung maksimal registernya yang hanya 16-bit atau 2 byte (seperti AX, BX, CX dan DX).
Lalu, pada modus 32-bit, prosesor dapat mengerjakan operasi 32-bit dengan paling efisien. Misalnya, menyuruh prosesor menambah nilai 0x12345678 dengan nilai 0x37654321 bukanlah masalah baginya. Tapi kalau kamu menyuruh prosesor mengerjakan operasi untuk angka 64-bit atau lebih, maka ia akan bekerja agak lama, lagi-lagi karena daya tampung maksimal registernya yang hanya 32-bit atau 4 byte (seperti EAX, EBX, ECX, dan EDX).
Nah, tebak sendiri mengapa prosesor 64-bit menawarkan kinerja lebih... Karena mereka bisa mengkalkulasi dan melakukan operasi pada bilangan yang lebih besar tanpa pengurangan kinerja!!! Tapi tentu saja, lagi-lagi, kalau kamu menjalankan prosesor kamu dalam Long Mode bukannya Compatibility Mode.

0 komentar: