Judul Psting : mode pengalamatan di processor intel
mode pengalamatan di processor intel
TUGAS ARSITEKTUR KOMPUTER
MODE ADDRESSING INTEL
PendahuluanBahasa Assembly adalah representasi dari bahasa mesin yang mengeksekusi pada arsitektur tertentu. Membaca dan memahami IA-32 dan Intel® 64 arsitektur bahasa assembly adalah tugas yang sulit. Insinyur perangkat lunak tertanam gentar dengan umur panjang menyimpang dari set instruksi dan luasnya yang meliputi:
â € ¢ 8-bit, 16-bit, 32-bit, dan 64-bit tujuan umum mendaftar set
â € ¢ panjang instruksi Variabel
â € ¢ Beberapa petunjuk yang melakukan tindakan yang sama
â € ¢ Agresif optimasi compiler
â € ¢ instruksi Baru dan mendaftarkan set
â € ¢ x87 floating point
Terlepas dari itu, ada kalanya seorang insinyur perangkat lunak tertanam perlu melihat pembongkaran sebuah biner aplikasi atau kode sumber dikompilasi ke perakitan untuk melakukan debugging atau kinerja tuning. Tulisan ini melengkapi pembaca dengan kompetensi yang diperlukan untuk melakukan tindakan ini.
Pertama, dasar-dasar arsitektur rinci dengan informasi tentang set mendaftar, tipe data, dan memori dan format instruksi. Selanjutnya, set instruksi ekstensi yang rinci, yang meliputi Intel® Streaming SIMD Extensions (SSE Intel®) dan Intel® Advanced Vector Extensions (AVX Intel®). Bagian ketiga menunjukkan cara efektif menghasilkan dan membaca bahasa assembly. Bagian terakhir memberikan analisis dari program C yang kecil disusun dengan bahasa assembly.
Prosesor Intel Core i7, Core i5 dan Core i3
Processor ini termasuk dalam keluarga Nehalem dan mempunyai kode Bloomfield. Processor yang diklaim tercepat di dunia ini memiliki 4 processor dan sudah mengadopsi teknologi DDR3 sebagai memory controllernya. Untuk menggunakannya harus menggunakan chipset terbaru yaitu x58. Dari segi arsitekturnya, processor ini memuat 731 juta transistor dan dibuat dengan proses fabrikasi 45nm. Walaupun “hanya” menggunakan L1 cache sebesar 64KB dan L2cache sebesar 256KB, namun processor ini didukung oleh L3cache sebesar 8MB yang penggunaanya dishare ke masing- masing processor.
Intel akan mengeluarkan produk ini dalam 3 macam kecepatan yaitu 2.66Ghz, 2.93Ghz dan 3.20Ghz.
Setelah merilis processor Core i7, Intel kembali merilis dua varian lainnya yaitu Core i5 dan Core i3. Beberapa tambahan penting lainnya adalah :
1. Brand Core 2 Duo dan Core 2 Quad akan dihilangkan.
2. Brand Pentium, Celeron dan Atom akan tetap dipertahankan.
3. Brand Centrino akan dihilangkan juga.
Kemungkinan produk berbasis Intel WiFi dan WIMAX yang akan menggunakan nama Centrino, jadi bukan Notebook lagi. Pada dasarnya Core i5 dan Core i3 merupakan versi “value” (alias memiliki performa lebih rendah) dari Core i7. Positionignya adalah sebagai berikut; Core i3 sebagai produk Entry Level, Core i5 sebagai produk Mid Level dan Core i7 sebagai produk High Level. Seluruh processor ini akan tersedia pada PC Desktop & Mobile.
Kelebihan Core i5 adalah ditanamkannya fungsi chipset Northbridge pada inti processor (dikenal dengan nama MCH pada Motherboard). Maka motherboard Core i5 yang akan menggunakan chipset Intel P55 (dikelas mainstream) ini akan terlihat lowong tanpa kehadiran chipset northbridge. Jika Core i7 menggunakan Triple Channel DDR 3, maka di Core i5 hanya menggunakan Dual Channel DDR 3. Penggunaan dayanya juga diturunkan menjadi 95 Watt. Chipset P55 ini mendukung Triple Graphic Cards (3x) dengan 1×16 PCI-E slot dan 2×8 PCI-E slot. Pada Core i5 cache tetap sama, yaitu 8 MB L3 cache.
Intel Core i3 merupakan varian paling value dibandingkan dua saudaranya yang lain. Processor ini akan mengintegrasikan GPU (Graphics Processing Unit) alias Graphics On-board didalam processornya. Kemampuan grafisnya diklaim sama dengan Intel GMA pada chipset G45. Selain itu Core i3 nantinya menggunakan manufaktur hybrid, inti processor dengan 32nm, sedangkan memory controller/graphics menggunakan 45nm. Code produk Core i3 adalah “Arrandale”.Tabel Jumlah Core, Thread & Turbo di Desktop & Mobile Processor.
Dasar Arsitektur
IA-32 dan Intel® 64 arsitektur dijelaskan dalam hal set mendaftar mereka, tipe data, memori mode pengalamatan dan format instruksi. Subbagian berikutnya merangkum aspek-aspek dari arsitektur.
Daftar Set dan Jenis Data
asli Intel® 8086 prosesor menerapkan arsitektur 16-bit yang ditetapkan delapan 16-bit tujuan umum register bernama AX, BX, CX, DX, SP, BP, SI, dan DI. Atas dan bawah 8 bit AX-DX bisa diakses secara independen sebagai AL-DL dan AH-DH masing-masing.
The Intel386 ™ prosesor diperpanjang arsitektur 32 bit, menciptakan tujuan umum mendaftar file yang ditemukan di modern IA-32 arsitektur. Register tumbuh 32 bit tetapi tetap alias 8- dan 16-bit mereka. Register tujuan umum biasanya menyimpan data integer, dan arsitektur memberikan instruksi untuk beroperasi pada 8-, 16-, 32-, dan dalam beberapa kasus 64-bit ditandatangani dan unsigned integer. Gambar 1 menggambarkan register tujuan umum dalam arsitektur IA-32.
Gambar Figure 1. IA-32 Architecture Data Registers
Intel® 64 Arsitektur diperkenalkan terutama untuk memperluas ruang memori beralamat melampaui batas 32-bit, tetapi juga secara signifikan memperluas register data arsitektur IA-32. Pertama, memperluas ukuran tujuan umum register 64 bit. Ia menyimpan semua yang ada mendaftarkan nama untuk mengakses lebih rendah 32 bit register dan menambahkan Nama Rax-RDX, RSP, RBP, RSI, dan RDI untuk mengakses penuh 64-bit register. Kedua, ia menambahkan kemampuan untuk mandiri referensi yang lebih rendah 8 bit RSP, RBP, RSI, dan RDI menggunakan nama SPL, BPL, SIL, dan DIL.
Ketiga, ia menambahkan delapan register tujuan umum baru bernama R8-R15. Semakin rendah
32, 16, atau 8 bit register ini dapat diakses dengan menggunakan nama R8DR15D, R8W-R15W, dan R8B-R15B, masing-masing. Akhirnya, ia menambahkan delapan baru Register XMM bernama XMM8-XMM15.
Gambar Figure 2. Intel® 64 Architecture Data Registers
Format instruksi dan Memori Mengatasi Mode pengalamatan
Instruksi perakitan dimulai dengan mnemonic. Sebuah mnemonic adalah kalimat pendek yang biasanya merupakan singkatan dari fungsi instruksi itu. Sebagai contoh, MULPS adalah mnemonic digunakan untuk mewakili Multiply dari PackedPresisi tunggal nilai floating-point.Setelah mnemonic adalah nol atau lebih operan. Jumlah hukum danjenis operan tergantung pada instruksi, tapi konvensi, di AT & Tperakitan sintaks operan keluaran selalu operan paling kanan.
Operan mungkin mendaftar, referensi memori, atau nilai literal, biasanyadisebut langsung. Daftar operan dapat digunakan sebagai input, output, ataubaik dan ditunjukkan dalam perakitan dengan awalan nama mendaftar dengan% yangbudi pekerti. Operan langsung selalu digunakan sebagai masukan dan ditunjukkan dalamperakitan dengan awalan nilai literal dengan $ karakter. Kadang-kadang,Nilai literal adalah sesuatu yang tidak diketahui sampai saat hubungan seperti alamatdari variabel global. Dalam perakitan, konstan link-waktu diwakilisimbolis seperti yang ditunjukkan dalam instruksi berikut, yang bergerak alamatx ke dalam register EAX.
Mov1 $ x,% eax
Operan tidak diawali oleh salah% atau $ adalah operan memori. seperti mendaftaroperan, operan memori dapat digunakan sebagai input, output, atau keduanya. DalamIA-32 dan Intel® 64 arsitektur, instruksi dapat menggunakan cukup rumitekspresi untuk menentukan alamat untuk referensi memori. Bentuk umummemori ekspresi muncul sebagai berikut dalam perakitan.
Offset (base register, index register, scale)
Alamat yang efektif untuk ekspresi memori ini dihitung dengan
Offset + base register + (index register * scale)
Semua komponen ekspresi alamat adalah opsional kecuali bahwa skalaharus menemani register indeks. Offset dapat berupa 8-bit atau 32bit nilai langsung dan sering konstan saat link. Hal ini tanda diperpanjang untukukuran alamat. Skala adalah nilai langsung dan harus menjadi salah satu 1, 2, 4, atau
8. Dalam IA-32 ISA, dasar dan indeks register harus register 32-bit. Nilai yang disimpan dalam register 8- atau 16-bit pertama harus diperluas ke 32 bit sebelum digunakan dalam sebuah ekspresi alamat. Demikian pula, dalam Intel® 64 ISA, dasar dan register indeks harus register 64-bit. Nilai yang lebih kecil harus diperluas ke 64 bit sebelum digunakan dalam ekspresi alamat.
Dalam Intel® 64 arsitektur, ada juga RIP-relatif khusus menanganiModus. Mode ini selalu menggunakan daftar RIP sebagai base register dengan 32-bitoffset dan tidak ada register indeks. Daftar RIP adalah instruksi pointer register.Ini berisi alamat dari instruksi berikutnya yang akan dieksekusi. ini
mode pengalamatan secara signifikan meningkatkan efisiensi posisi independen kode.
Di saat IA-32 dan Intel® 64 arsitektur, operasi biner sepertiMULPS menggunakan format 2-operan. Secara konseptual, MULPS memiliki dua masukan operan, para multiplicands, dan satu output operan, hasilnya. Tapi arsitektur mengharuskan output menimpa salah satu input. Jadi, untuk Misalnya, semantik instruksi
Mulps% xmm1,% XMM2
adalah untuk memperbanyak isi register XMM1 oleh isi registerXMM2 dan menyimpan hasilnya dalam register XMM2. Jika program perlu melestarikannilai-nilai dari kedua multiplicands, harus menggunakan instruksi salinan tambahan.
Movaps% XMM2,% XMM3
Mulps% xmm1,% XMM3
Bagi banyak petunjuk, jenis operan dapat bervariasi. Melanjutkan dengan MULPS contoh, operan pertama baik bisa menjadi mendaftar atau memori Lokasi. Misalkan Anda ingin memperbanyak isi register XMM2 oleh 4 elemen dalam array mengapung. Salah satu metode adalah dengan menggunakan beban yang terpisah dan kalikan instruksi.
movaps x (,% eax, 4),% xmm1
mulps% xmm1,% XMM2
Sebuah alternatif adalah dengan menggunakan instruksi untuk perkalian tunggal dengan operan memori.
mulps x (,% eax, 4),% XMM2
Yang terakhir ini lebih efisien dalam jumlah instruksi, kode ukuran, XMM register, dan biasanya waktu eksekusi. Banyak instruksi integer menunjukkan variasi yang lebih besar dalam jenis operan
mereka dapat menangani. Sebagai contoh, berikut ini adalah semua bentuk valid dari 32-bit Selain integer.
Addl % ebx, % edx
addl (% eax), % edx
addl $ 42, % edx
addl $ 42, (% eax)
addl % ebx, (% eax)
Figure 3. Intel® SSE Vector Multiply Example
Intel SSE Assembly Implementation
movaps x, %xmm0
mulps y, %xmm0
movaps %xmm0, z
x87 Assembly Implementation
flds x
fmuls y
flds 4+x
fmuls 4+y
flds 8+x
fmuls 8+y
flds 12+x
fmuls 12+y
fxch %st(3)
fstps z
fxch %st(1)
fstps 4+z
fstps 8+z
fstps 12+z
Intel® SSE juga memperkenalkan instruksi software prefetch, non-temporal instruksi toko, dan beberapa perangkat tambahan teknologi MMXTM khusus ditargetkan untuk mempercepat Media encoding dan decoding. Penggunaan efektif Intel® SSE dapat meningkatkan kinerja sangat untuk aplikasi seperti Grafis 3D yang menggunakan presisi tunggal floating point dan cenderung untuk mempekerjakan
operasi umum pada sejumlah besar data. Intel® SSE pertama kali diperkenalkan beban selaras dan toko untuk arsitektur. Paling 128-bit referensi memori memerlukan alamat menjadi 16-byte selaras. Itu ide adalah bahwa referensi memori yang melintasi batas baris cache yang mahal di kebanyakan prosesor, dan menegakkan 16-byte alignment menghindari potensi yang penalti. Ada 128-bit beban unaligned dan menyimpan instruksi khusus ketika data diketahui sejajar. Sebagai contoh, berikut dua instruksi kedua beban 128 bit data dari alamat dalam register EAX. Itu Satu-satunya perbedaan fungsional dalam perilaku adalah bahwa kesalahan instruksi MOVAPS jika alamat di EAX tidak kelipatan genap dari 16.
movaps (% eax),% xmm0
movups (% eax),% xmm0
Intel® SSE2 menambahkan pemrosesan SIMD untuk presisi ganda floating-point dan juga 128-bit SIMD pengolahan untuk data integer. Kemampuan Intel® SSE2 memberikan presisi ganda floating-point yang serupa dengan apa yang Intel® SSE memberikan presisi tunggal. Lebar vektor lebih kecil sejak 128-bit vektor mendaftar dapat menyimpan 4 nilai presisi tunggal tetapi hanya dua ganda nilai presisi. Untuk data integer, Intel® SSE2 efektif menggandakan vector lebar lebih MMXTM teknologi. Tapi sebaliknya kemampuan serupa
Figure 4. Intel® SSE2 Vector Average Example
Assembly Implementation
movdqa a, %xmm0
pavgb b, %xmm0
movdqa %xmm0, c
menggambarkan rata-rata vektor unsigned byte yang dapat dilakukan efisien menggunakan Intel® SSE2.
Intel® Tambahan Streaming SIMD Extensions 3 (SSE3) menyediakan kecil jumlah instruksi terutama dirancang untuk meningkatkan efisiensi singleprecision dan double-presisi perkalian kompleks dan pembagian. Intel® SSSE3 memberikan petunjuk tambahan untuk operasi pada data integer. Misalnya, menyediakan penambahan dan pengurangan instruksi horisontal untuk operasi pada elemen data dalam vektor tunggal. Ini juga menyediakan dikemas nilai absolut dan petunjuk negasi bersyarat.
Intel® Tambahan Streaming SIMD Extensions 4.1 (SSE4.1)
Memberikan berbagai petunjuk tambahan untuk operasi pada data vektor di XMM yang register. Beberapa petunjuk ini memudahkan bagi compiler untuk otomatis vectorize loop skalar. Misalnya, ada instruksi untuk tanda vektor dan nol ekstensi, vektor dan skalar floating-point pembulatan, dan vektor bilangan bulat max / min. Instruksi vektor campuran mengekspos baru kesempatan untuk menulis vektor kode untuk loop yang mengandung conditional. misalnya,
Figure 5. Intel® SSE4.1 Vector Blend Example
Assembly Implementation
movaps z, %xmm1
xorps %xmm0, %xmm0
cmpltps x, %xmm0
blendvps %xmm0, y, %xmm1
movaps %xmm1, x
Intel® SSE4.2 menambahkan empat instruksi pemrosesan string baru yang melakukan perbandingan string maju dan operasi pencarian dalam satu instruksi. Saya T juga menyediakan 64-bit dikemas bilangan bulat instruksi perbandingan. Prosesor Intel® CoreTM i7 menambahkan dua akselerator aplikasi yang ditargetkan, Popcnt dan CRC32. Sebenarnya, ini bukan bagian dari Intel® SSE tapi adalah ekstensi set instruksi yang dirancang untuk meningkatkan kinerja spesifik algoritma kritis kinerja.
Figure 6. Intel® AVX Register Extensions
Intel® Advanced Vector Extensions (AVX)
Intel® Advanced Vector Extensions (AVX) adalah perangkat tambahan set instruksi yang lebih memperluas kemampuan SIMD prosesor. Intel berencana untuk kapal prosesor yang menerapkan Intel® AVX mulai tahun 2010.
Intel® AVX memperlebar XMM register file 128-256 bit, menggandakan SIMD panjang vektor maksimal. Register 256-bit penuh direferensikan dalam perakitan menggunakan nama YMM0-YMM15, seperti digambarkan pada Gambar 6. Pada mode 32-bit, hanya register YMM0-YMM7 tersedia.
Instruksi Intel® AVX logis memperpanjang 128-bit vektor Intel® SSE instruksi untuk 256 bit. Operasi sederhana seperti mengalikan vektor beroperasi pada dua kali lebih banyak elemen data. Operasi data penataan ulang seperti mengocok biasanya beroperasi "di jalur", yang berarti bahwa penataan ulang data yang sama Operasi diterapkan untuk kedua bagian 128-bit atau "jalur" dari daftar YMM. Baru 128-bit menukar urutan, penyisipan, dan instruksi ekstraksi memungkinkan program untuk memindahkan data di jalur. Arsitektur Intel® AVX juga menyediakan baru primitif seperti siaran dan beban bertopeng dan toko. primitif ini membuatnya lebih mudah untuk menghasilkan kode vektor yang efisien, dan mereka membuat lebih mudah untuk compiler vectorize kode otomatis.
Selain vektor yang lebih luas, Intel® AVX menyediakan bentuk instruksi 3-operansehingga operan tujuan independen dari operan masukan. Intel®AVX juga menyediakan alternatif bentuk 3-operan untuk semua yang ada vektor 128-bitdan operasi skalar. Menggunakan contoh MULPS, bahkan jika kebutuhan Programuntuk melestarikan multiplicands, dapat menerapkan multiply menggunakan salah satuinstruksi.
Vmulps % xmm1, % XMM2, % XMM3
AVX mempertahankan konvensi yang operan tujuan adalah paling kanan yang satu, sehingga operasi yang dilakukan oleh instruksi ini ditunjukkan oleh berikut ekspresi.
XMM3 ← XMM1 * XMM2
Akhirnya, untuk sebagian besar instruksi Intel® AVX mengangkat pembatasan yang vektor bebandan toko disejajarkan. Eksplisit "bergerak selaras" instruksi seperti VMOVDQA masih memerlukan alamat yang akan berjajar dalam batas ukuran vektor. tapi lain beban vektor dan toko bisa unaligned. Hal ini sangat berguna dalam menciptakan kesempatan untuk menggabungkan beban dan menyimpan instruksi dengan instruksi lainnya. Sebelumnya, beban tidak dapat digabungkan dengan instruksi berikutnya kecualialamat load provably selaras, yang mengarah ke multi-instruksiurutan seperti berikut ini.
Movups x (,% eax, 4), % xmm1
Mulps % xmm1, % XMM2
Intel® AVX memungkinkan dua instruksi ini untuk digabungkan.
Vmulps x (,% eax, 4), % XMM2, % XMM2
Demikianlah Artikel mode pengalamatan di processor intel
Sekian Posting mode pengalamatan di processor intel, mudah-mudahan bisa memberi manfaat untuk anda semua.
Belum ada tanggapan untuk "mode pengalamatan di processor intel"
Posting Komentar