Post : 12 Oktober 2013
By:ilhamgariansyah.blogspot.com
Teknologi Prosesor Intel
1. MMX (set instruksi)
MMX adalah instruksi tunggal, multiple data ( SIMD ) set instruksi yang dirancang oleh Intel , diperkenalkan pada tahun 1997 dengan mereka P5 -berbasis Pentium garis mikroprosesor , ditunjuk sebagai "Pentium dengan Teknologi MMX".Ini dikembangkan dari unit serupa memperkenalkan pada Intel i860 , dan sebelumnya Intel i750 prosesor video pixel. MMX adalah kemampuan tambahan prosesor yang didukung pada akhir IA-32 prosesor dengan Intel dan vendor lainnya.MMX kemudian telah diperpanjang dengan beberapa program oleh Intel dan lain-lain: 3DNow! dan revisi berkelanjutan Streaming SIMD Extensions .
Penamaan
MMX adalah resmi berarti initialism merek dagang oleh Intel, secara tidak resmi, inisial telah berbagai dijelaskan sebagai berdiri untuk ekstensi MultiMedia, Multiple Math ekstensi, atauMatrix Math ekstensi. AMD , dalam salah satu pertempuran pengadilan banyak dengan Intel, menghasilkan materi pemasaran dari Intel menunjukkan bahwa MMX berdiri untuk "Matrix Math Extensions". Karena initialism tidak bisa merek dagang, ini merupakan upaya untuk membatalkan merek dagang Intel.Pada tahun 1997, Intel mengajukan gugatan terhadap AMD dan Cyrix Corp untuk penyalahgunaan MMX merek dagang. AMD dan Intel diselesaikan, dengan AMD mengakui MMX sebagai merek dagang yang dimiliki oleh Intel, dengan Intel dan AMD hibah hak untuk menggunakan merek dagang MMX sebagai nama teknologi, tetapi bukan nama prosesor.
Rincian teknis
Prosesor Pentium II dengan teknologi MMX
MMX didefinisikan delapan register , yang dikenal sebagai MM0 melalui MM7 (selanjutnya disebut sebagai MMN). Untuk menghindari masalah kompatibilitas dengan mekanisme saklar konteks sistem operasi yang ada, register ini adalah alias untuk ada x87 FPU tumpukan register (jadi tidak ada register baru perlu diselamatkan atau dikembalikan). Oleh karena itu, apa pun yang dilakukan untuk floating point tumpukan juga akan mempengaruhi register MMX dan sebaliknya. Namun, tidak seperti FP stack, register MMN secara langsung dialamatkan (random access). Setiap register MMN memegang 64 bit ( mantissa -bagian dari penuh 80-bit FPU pendaftaran). Penggunaan utama dari set instruksi MMX didasarkan pada konsep dikemas tipe data, yang berarti bahwa alih-alih menggunakan seluruh register integer 64-bit tunggal, dua bilangan bulat 32-bit, empat bilangan bulat 16-bit, atau delapan 8 -bit bilangan bulat dapat diproses secara bersamaan. Pemetaan MMX register ke register FPU yang ada membuatnya agak sulit untuk bekerja dengan floating point dan data SIMD dalam aplikasi yang sama. Untuk memaksimalkan kinerja, programmer sering digunakan prosesor secara eksklusif dalam satu modus atau yang lain, menunda saklar relatif lambat antara mereka selama mungkin.
Karena tumpukan register FPU adalah 80 bit lebar, bagian atas 16 bit dari register tumpukan pergi tidak digunakan di MMX, dan bit-bit yang siap untuk orang, membuat mereka NaN atau tak terbatas itu dalam representasi floating point. Hal ini dapat digunakan untuk memutuskan apakah konten register tertentu dimaksudkan sebagai floating point atau data SIMD. MMX hanya menyediakan operasi integer. Ketika awalnya dikembangkan, untuk Intel i860 , penggunaan bilangan bulat matematika masuk akal (baik 2D dan 3D diperlukan perhitungan itu), tetapi sebagai kartu grafis yang melakukan banyak hal ini menjadi umum, bulat SIMD dalam CPU menjadi agak berlebihan untuk aplikasi grafis. Di sisi lain, aritmatika saturasi beroperasi di MMX secara signifikan dapat mempercepat beberapa pemrosesan sinyal digital aplikasi.
Penerus
AMD , vendor mikroprosesor x86 bersaing, MMX Intel ditingkatkan dengan mereka sendiri 3DNow! set instruksi. 3DNow paling dikenal untuk menambahkan presisi tunggal (32-bit) dukungan floating-point ke SIMD instruksi-set, antara lain bilangan bulat dan perangkat yang lebih umum.Setelah MMX, ekstensi x86 utama berikutnya Intel adalah SSE , diperkenalkan dengan keluarga Pentium-III (kira-kira setahun setelah 3DNow AMD! diperkenalkan.)
SSE membahas kekurangan inti MMX (ketidakmampuan untuk mencampur integer SIMD ops dengan floating-point ops) dengan menciptakan 128-bit lebar register file baru (xmm0-XMM7) dan instruksi SIMD baru untuk itu. ! Seperti 3DNow, SSE berfokus pada presisi tunggal operasi floating-point (32-bit), operasi integer SIMD masih dilakukan dengan menggunakan register MMX dan set instruksi. Namun, XMM baru mendaftar-file yang diizinkan SSE SIMD-operasi untuk digabungkan secara bebas dengan baik MMX atau x87 FPU ops. SSE2 , diperkenalkan dengan Pentium 4, lebih lanjut memperluas SIMD instruksi x86 set dengan bilangan bulat (8/16/32 bit) dan double-presisi data dukungan floating-point untuk register file XMM. SSE2 juga memungkinkan opcodes MMX menggunakan XMM mendaftar operan, tetapi berakhir dukungan ini dengan SSE4 (dan baru-baru dengan SSE4.2 , diperkenalkan padamikroarsitektur Inti .) Namun, karena dukungan prosesor untuk setiap revisi SSE juga menyiratkan dukungan untuk MMX, penghapusan tidak membatasi jenis data yang dapat digunakan oleh x86 SIMD.
MMX dalam aplikasi embedded
Intel dan Marvell 's XScale mikroprosesor inti dimulai dengan PXA270 termasuk SIMD set instruksi ekstensi ke inti ARM disebut iwMMXt yang fungsinya mirip dengan orang-orang dari IA-32ekstensi MMX. iwMMXt singkatan dari "Intel Wireless MMX Technology". Ini menyediakan operasi aritmatika dan logika pada 64-bit bilangan bulat (perangkat lunak dapat memilih untuk bukan melakukan dua 32-bit, empat 16-bit atau delapan operasi 8-bit dalam instruksi tunggal). Ekstensi berisi 16 register data dari 64-bit dan delapan register kontrol 32-bit. Semua register diakses melalui standar arsitektur ARM coprocessor mekanisme pemetaan. iwMMXt menempati coprocessors 0 dan 1 ruang, dan beberapa yang opcodes bentrokan dengan opcodes perpanjangan sebelumnya floating-point, FPA. Kemudian versi Marvell prosesor ARM 's mendukung WMMX (Wireless MMX) dan WMMX2 (Wireless MMX2) dukungan.
2. Streaming SIMD Extensions
Dalam komputasi , Streaming SIMD Extensions (SSE) adalah SIMD set instruksi ekstensi untuk x86 arsitektur, dirancang oleh Intel dan diperkenalkan pada tahun 1999 di mereka Pentium IIIprosesor seri sebagai jawaban atas AMD 's 3DNow! . SSE berisi 70 instruksi baru, yang sebagian besar bekerja pada presisi tunggal floating point data. Instruksi SIMD dapat sangat meningkatkan kinerja kapan tepatnya operasi yang sama harus dilakukan pada beberapa objek data. Aplikasi yang umum adalah pemrosesan sinyal digital dan pengolahan grafis . Pertama Intel IA-32 SIMD usaha adalah MMX set instruksi. MMX punya dua masalah utama: digunakan kembali ada floating point register membuat CPU tidak dapat bekerja pada kedua floating point dan data SIMD pada saat yang sama, dan hanya bekerja pada bilangan bulat . SSE instruksi floating point beroperasi pada independen mendaftar set baru (register XMM), dan menambahkan beberapa instruksi integer yang bekerja pada register MMX. SSE kemudian diperluas oleh Intel untuk SSE2 , SSE3 , SSSE3 , dan SSE4 . Karena mendukung floating point matematika, itu aplikasi yang lebih luas daripada MMX dan menjadi lebih populer.Penambahan dukungan integer dalam SSE2 MMX membuat sebagian besar berlebihan, meskipun peningkatan kinerja lebih lanjut dapat dicapai dalam beberapa situasi dengan menggunakan MMX secara paralel dengan operasi SSE.
SSE awalnya disebut Katmai New Instructions (KNI), Katmai menjadi nama kode untuk revisi inti Pentium III pertama. Selama Katmai proyek Intel berusaha untuk membedakannya dari lini produk mereka sebelumnya, terutama mereka andalannya Pentium II . Ia kemudian diganti Intel Streaming SIMD Extensions (ISSE), kemudian SSE. AMD akhirnya menambahkan dukungan untuk instruksi SSE, dimulai dengan yang Athlon XP dan Duron ( Morgan inti ) prosesor.
Register
SSE awalnya menambah delapan baru 128-bit register dikenal sebagai xmm0 melalui XMM7. The AMD64 ekstensi dari AMD (awalnya disebut x86-64) menambahkan delapan register lanjut XMM8 melalui XMM15, dan ekstensi ini diduplikasi dalam 64 Intel arsitektur. Ada juga kontrol / status mendaftar 32-bit yang baru, MXCSR. Register XMM8 melalui XMM15 hanya dapat diakses dalam mode operasi 64-bit.
SSE digunakan hanya tipe data tunggal untuk register XMM:• empat 32-bit presisi tunggal nomor floating point
SSE2 kemudian memperluas penggunaan XMM register meliputi:
• dua 64-bit presisi ganda nomor floating point atau
• dua bilangan bulat 64-bit atau
• empat bilangan bulat 32-bit atau
• delapan bilangan bulat pendek 16-bit atau
• enam belas byte 8-bit atau karakter.
Karena register 128-bit adalah negara Program tambahan bahwa sistem operasi harus menjaga seluruh switch tugas , mereka dinonaktifkan secara default sampai sistem operasi eksplisit memungkinkan mereka. Ini berarti bahwa OS harus tahu bagaimana menggunakan FXSAVE dan instruksi FXRSTOR, yang merupakan pasangan diperpanjang instruksi yang dapat menyimpan semua x86 dan register SSE negara sekaligus. Dukungan ini dengan cepat ditambahkan ke semua sistem operasi utama IA-32.
CPU pertama yang mendukung SSE, yang Pentium III , berbagi sumber daya eksekusi antara SSE dan FPU . Sementara dikompilasi aplikasi dapat interleave FPU dan instruksi SSE side-by-side, Pentium III tidak akan mengeluarkan FPU dan instruksi SSE di sama siklus clock . Keterbatasan ini mengurangi efektivitas pipelining , tetapi register XMM terpisah mengizinkan SIMD dan operasi floating point skalar untuk dicampur tanpa kinerja hit dari MMX eksplisit / modus floating point switching.
Instruksi SSE
SSE memperkenalkan kedua skalar dan dikemas instruksi floating point.
Mengambang instruksi titik
• Pergerakan data Memory-to-register/register-to-memory/register-to-register
• Skalar - MOVSS
• Dikemas - MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS
• Hitung
• Skalar - ADDSS, SUBSS, MULSS, DIVSS, RCPSS, SQRTSS, MAXSS, MINSS, RSQRTSS
• Dikemas - ADDPS, SUBPS, MULPS, DIVPS, RCPPS, SQRTPS, MAXPS, MINPS, RSQRTPS
• Membandingkan
• Skalar - CMPSS, COMISS, UCOMISS
• Dikemas - CMPPS
• Mengocok Data dan membongkar
• Dikemas - SHUFPS, UNPCKHPS, UNPCKLPS
• Data- jenis konversi
• Skalar - CVTSI2SS, CVTSS2SI, CVTTSS2SI
• Dikemas - CVTPI2PS, CVTPS2PI, CVTTPS2PI
• Bitwise operasi logis
• Dikemas - ANDPS, ORPS, XORPS, ANDNPS
Instruksi integer
• Hitung
• PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
• Pergerakan data
• PEXTRW, PINSRW
• Lain
• PMOVMSKB, PSHUFW
Instruksi lain
• MXCSR manajemen
• LDMXCSR, STMXCSR
• Cache Memory dan manajemen
• MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE
Contoh
Contoh berikut sederhana menunjukkan keuntungan dari menggunakan SSE. Pertimbangkan operasi seperti penjumlahan vektor, yang sangat sering digunakan dalam aplikasi komputer grafik.Untuk menambahkan dua presisi tunggal, vektor empat komponen bersama-sama menggunakan x86 memerlukan empat instruksi penambahan floating-point
vec_res.x = v1.x + v2.x;vec_res.y = v1.y + v2.y;
vec_res.z = v1.z + v2.z;
vec_res.w = v1.w + v2.w;
Hal ini akan sesuai dengan empat instruksi x86 FADD dalam kode obyek. Di sisi lain, seperti yang ditunjukkan pseudo-kode berikut, satu 128-bit 'dikemas-add' instruksi dapat mengganti instruksi penambahan skalar empat.
movaps xmm0, [v1]; xmm0 = v1.w | v1.z | v1.y | v1.xaddps xmm0, [v2]; xmm0 = v1.w + v2.w | v1.z + v2.z | v1.y + v2.y | v1.x + v2.x
movaps [vec_res], xmm0
Versi
• SSE2 , diperkenalkan dengan Pentium 4 , adalah perangkat tambahan besar untuk SSE. SSE2 menambahkan instruksi matematika baru untuk presisi ganda titik (64-bit) mengambang dan juga memperluas instruksi integer MMX untuk beroperasi pada 128-bit register XMM. Sampai SSE2, SSE instruksi bilangan bulat diperkenalkan dengan ekstensi SSE kemudian masih bisa beroperasi pada 64-bit MMX register karena register XMM baru membutuhkan dukungan sistem operasi. SSE2 memungkinkan programmer untuk melakukan SIMD matematika pada setiap tipe data (dari 8-bit integer 64-bit float) seluruhnya dengan XMM file vektor-register, tanpa perlu menggunakan warisan MMX atau register FPU. Banyak programmer menganggap SSE2 menjadi "segalanya SSE seharusnya", sebagai SSE2 menawarkan himpunan ortogonal instruksi untuk menangani jenis data umum.
• SSE3 , juga disebut Prescott New Instructions (PNI), merupakan incremental upgrade ke SSE2, menambahkan beberapa berorientasi DSP instruksi matematika dan beberapa proses (benang) instruksi manajemen.
• SSSE3 adalah incremental upgrade ke SSE3, menambahkan 16 instruksi baru yang meliputi permuting byte dalam kata, mengalikan 16-bit fixed-point angka dengan pembulatan benar, dan dalam kata menumpuk instruksi. SSSE3 sering keliru untuk SSE4 sebagai istilah ini digunakan selama pengembangan dari Core microarchitecture .
• SSE4 adalah peningkatan besar lainnya, menambahkan instruksi dot produk, instruksi integer tambahan, instruksi popcnt, dan banyak lagi.
• XOP , FMA4 dan CVT16 adalah iterasi baru diumumkan oleh AMD pada bulan Agustus 2007 dan direvisi pada Mei 2009.
• AVX (Advanced Vector Extensions) adalah versi lanjutan dari SSE diumumkan oleh Intel menampilkan jalur data melebar dari 128 bit ke 256 bit dan instruksi 3-operan (naik dari 2). Intel merilis prosesor pada awal tahun 2011 dengan dukungan AVX.AVX memerlukan dukungan dari sistem operasi. AVX tidak dapat dimanfaatkan pada sistem operasi lama seperti Windows XP atau Windows Vista, bahkan jika CPU mendukung AVX.
Perangkat lunak
Dengan semua ekstensi set instruksi x86, terserah ke BIOS , sistem operasi dan pemrogram aplikasi untuk menguji dan mendeteksi keberadaan mereka dan operasi yang tepat.
• Intel dan AMD menawarkan aplikasi untuk mendeteksi ekstensi mendukung CPU Anda.• The CPUID opcode adalah penolong instruksi prosesor (namanya berasal dari CPU Identification) untuk arsitektur x86. Saat itu diperkenalkan oleh
Intel pada tahun 1993 ketika memperkenalkan Pentium dan prosesor 486 SL Enhanced.
Pengguna aplikasi penyerapan ekstensi x86 telah lambat bahkan dengan telanjang minimum dasar MMX dan dukungan SSE (dalam beberapa kasus) tidak didukung oleh aplikasi sekitar 10 tahun setelah ekstensi ini menjadi umum tersedia. Komputasi terdistribusi telah mempercepat penggunaan ekstensi ini di masyarakat-dan ilmiah banyak aplikasi ilmiah menolak untuk berjalan kecuali CPU mendukung SSE2 atau SSE3 .
Penggunaan beberapa revisi dari aplikasi untuk mengatasi banyak set yang berbeda dari ekstensi yang tersedia adalah cara paling sederhana sekitar masalah optimasi ekstensi x86. Software perpustakaan dan beberapa aplikasi telah mulai mendukung beberapa jenis ekstensi mengisyaratkan bahwa penuh penggunaan instruksi x86 yang tersedia mungkin akhirnya menjadi umum sekitar 5 sampai 15 tahun setelah instruksi awalnya diperkenalkan.
3.SSE2
SSE2, Streaming SIMD Extensions 2, adalah salah satu dari Intel SIMD (Instruksi Single, Multiple Data) prosesor instruksi tambahan set pertama diperkenalkan oleh Intel dengan versi awalPentium 4 pada tahun 2001. Ini memperluas sebelumnya SSE set instruksi, dan dimaksudkan untuk sepenuhnya menggantikan MMX . Intel diperpanjang SSE2 untuk membuat SSE3 pada tahun 2004. SSE2 menambahkan 144 instruksi baru untuk SSE, yang memiliki 70 instruksi. Bersaing pembuat chip AMD menambahkan dukungan untuk SSE2 dengan pengenalan mereka Opterondan Athlon 64 kisaran AMD64 64-bit CPU pada tahun 2003.
Perubahan
Sebagian besar instruksi SSE2 menerapkan vektor floating-point operasi juga ditemukan di MMX. Mereka berbeda dari setara MMX mereka dalam bahwa mereka menggunakan XMM register bukan x87 register. Yang pertama digunakan oleh instruksi SSE dan yang terakhir dengan skalar floating-point (x87) instruksi. Karena menggunakan satu set register untuk set instruksi yang berbeda membutuhkan modus switching, SSE2 memungkinkan pencampuran skalar dan vektor operasi floating-point tanpa hukuman kinerja beralih modus. Selain itu, sementara MMX yang menggunakan x87 register sebagai register 64bit, SSE2 dapat menggunakan kapasitas penuh 128bit register XMM, yang memberikan potensi keuntungan kinerja besar dalam aplikasi dioptimalkan. Lainnya SSE2 ekstensi termasuk satu set Cache instruksi kontrol dimaksudkan terutama untuk meminimalkan pencemaran tembolok saat memproses aliran tak terbatas informasi, dan pelengkap canggih instruksi konversi format numerik. Pelaksanaan AMD SSE2 pada (AMD64 x86-64 ) platform termasuk tambahan delapan register, dua kali lipat jumlah total 16 (xmm0 melalui XMM15). Ini tambahan register hanya terlihat ketika berjalan dalam modus 64-bit. Intel mengadopsi ini register tambahan sebagai bagian dari dukungan mereka untuk arsitektur x86-64 (atau dalam bahasa Intel, "Intel 64") pada tahun 2004.
Perbedaan antara x87 FPU dan SSE2
FPU (x87) instruksi memberikan presisi lebih tinggi dengan menghitung hasil antara dengan 80 bit presisi, secara default, untuk meminimalkan kesalahan roundoff dalam algoritma numerik tidak stabil (lihat desain IEEE 754 pemikiran dan referensi di dalamnya). Namun, x87 FPU adalah unit skalar hanya sementara SSE2 dapat memproses vektor kecil dari operan secara paralel.
Jika kode yang dirancang untuk x87 yang porting ke bawah presisi ganda presisi floating point SSE2, kombinasi tertentu operasi matematika atau dataset input dapat mengakibatkan penyimpangan numerik terukur, yang dapat menjadi masalah dalam perhitungan ilmiah direproduksi, misalnya jika hasil perhitungan harus dibandingkan terhadap hasil yang dihasilkan dari arsitektur mesin yang berbeda. Isu yang terkait adalah bahwa, secara historis, standar bahasa dan compiler telah tidak konsisten dalam penanganan register x87 80-bit menerapkan variabel presisi diperpanjang ganda, dibandingkan dengan format presisi ganda dan tunggal diimplementasikan dalam SSE2: pembulatan diperpanjang nilai presisi menengah untuk menggandakan variabel presisi tidak sepenuhnya ditentukan dan tergantung pada rincian pelaksanaan seperti ketika register yang tumpah ke memori. Namun, standar bahasa modern seperti C99 dan Fortran 2003 telah memasukkan dukungan IEEE 754 floating point dan sekarang persis menentukan semantik diperpanjang ganda ("panjang ganda") ekspresi presisi untuk menghindari masalah reproduktifitas tersebut.
Perbedaan antara MMX dan SSE2
SSE2 meluas instruksi MMX untuk beroperasi pada register XMM. Oleh karena itu, adalah mungkin untuk mengubah semua kode MMX yang ada untuk setara SSE2. Sejak mendaftar XMM adalah dua kali lebih lama sebagai MMX register, counter lingkaran dan akses memori mungkin perlu diubah untuk mengakomodasi ini. Namun, beban 8 byte dan toko untuk XMM tersedia, jadi ini tidak diperlukan ketat. Meskipun satu SSE2 instruksi dapat beroperasi pada dua kali lebih banyak data sebagai instruksi MMX, kinerja mungkin tidak meningkat secara signifikan. Dua alasan utama adalah: mengakses SSE2 data dalam memori tidak selaras dengan batas 16-byte dapat dikenakan hukuman yang signifikan, dan throughput yang dari SSE2 petunjuk di tua x86 implementasi adalah setengah bahwa untuk instruksi MMX. Intel membahas masalah pertama dengan menambahkan instruksi dalam SSE3 untuk mengurangi overhead mengakses data unaligned dan meningkatkan kinerja keseluruhan beban sejajar, dan masalah terakhir dengan memperluas mesin eksekusi mereka mikroarsitektur Inti di Core 2 Duo dan produk kemudian.
Sejak MMX dan x87 file mendaftar alias satu sama lain, menggunakan MMX akan mencegah x87 instruksi dari bekerja seperti yang diinginkan. Setelah MMX telah digunakan, programmer harus menggunakan instruksi untuk mengembalikan operasi untuk register file x87. Pada beberapa sistem operasi, x87 tidak digunakan sangat banyak, tapi masih dapat digunakan dalam beberapa bidang penting seperti pow dimana presisi ekstra yang dibutuhkan. Dalam kasus tersebut, para koruptor floating-point negara disebabkan oleh kegagalan untuk memancarkan Emms mungkin tidak terdeteksi selama jutaan instruksi sebelum akhirnya menyebabkan rutinitas floating-point untuk gagal, kembali NaN. Karena masalahnya bukan lokal jelas dalam kode MMX, bug bisa sangat memakan waktu untuk menemukan dan memperbaiki waktu. Sebagai SSE2 tidak memiliki masalah ini, biasanya menyediakan throughput yang lebih baik dan menyediakan lebih banyak register dalam kode 64-bit, itu harus lebih diutamakan untuk hampir semua pekerjaan vektorisasi.
Compiler penggunaan
Ketika pertama kali diperkenalkan pada tahun 2000, SSE2 tidak didukung oleh alat pengembangan perangkat lunak. Misalnya, untuk menggunakan SSE2 dalam Microsoft Developer Studioproyek, programmer harus secara manual menulis inline-perakitan atau impor kode-obyek dari sumber eksternal. Kemudian Visual C + + Pack menambahkan Processor SSE2 dukungan untukVisual C + + dan MASM .
The Intel C + + Compiler secara otomatis dapat menghasilkan SSE4/SSSE3/SSE3/SSE2 dan / atau SSE-kode tanpa menggunakan tangan-kode perakitan.Sejak GCC 3, GCC secara otomatis dapat menghasilkan SSE/SSE2 kode skalar ketika target mendukung instruksi tersebut. vektorisasi otomatis untuk SSE/SSE2 telah ditambahkan sejak GCC 4. The Sun Studio Compiler Suite juga dapat menghasilkan SSE2 instruksi ketika compiler bendera xvector = SIMD digunakan.
CPU yang mendukung SSE2• AMD K8 berbasis CPU ( Athlon 64 , Sempron 64 , Turion 64 , dll)
• AMD Phenom CPU
• Intel NetBurst berbasis CPU ( Pentium 4 , Xeon , Celeron , Celeron D , dll)
• Intel Pentium M dan Celeron M
• Intel Core keluarga (termasuk Intel Core 2 , Intel Core i5 , Intel Core i7 )
• Intel Atom
• Transmeta Efficeon
• VIA C7
• VIA Nano
Terkemuka IA-32 CPU tidak mendukung SSE2
SSE2 merupakan perpanjangan dari IA-32 arsitektur. Oleh karena itu setiap arsitektur yang tidak mendukung IA-32 tidak mendukung SSE2. x86-64 CPU semua menerapkan IA-32 . Semua dikenal x86-64 CPU juga menerapkan SSE2. Karena IA-32 mendahului SSE2, awal IA-32 CPU tidak menerapkannya. SSE2 dan set instruksi SIMD lain dimaksudkan terutama untuk meningkatkan dukungan CPU untuk grafis realtime, terutama game. SSE2 juga merupakan persyaratan untuk menginstal Windows 8 atau Microsoft Office 2013 "untuk meningkatkan keandalan aplikasi dan driver berjalan di Windows 8 pihak ketiga".
Berikut CPU dilaksanakan IA-32 setelah SSE2 dikembangkan, tetapi tidak menerapkan SSE2:• AMD CPU sebelum Athlon 64 , termasuk semua Socket A CPU berbasis
• Intel CPU sebelum Pentium 4
• VIA C3
• Transmeta Crusoe
4. SSE3
SSE3, Streaming SIMD Extensions 3, juga yang dikenal dengan Intel kode nama Prescott New Instructions (PNI), merupakan iterasi ketiga dari SSE set instruksi untuk IA-32 (x86) arsitektur.Intel memperkenalkan SSE3 pada awal tahun 2004 dengan revisi Prescott dari mereka Pentium 4 CPU. Pada bulan April 2005, AMD memperkenalkan subset dari SSE3 dalam revisi E (Venice dan San Diego) mereka Athlon 64 CPU. Semakin awal SIMD set instruksi pada x86 Platform, dari yang terlama ke terbaru, adalah MMX , 3DNow! (dikembangkan oleh AMD), SSE dan SSE2 . SSE3 berisi 13 instruksi baru selama SSE2 .
Perubahan
Perubahan yang paling penting adalah kemampuan untuk bekerja secara horizontal di register, yang bertentangan dengan lebih atau kurang ketat vertikal operasi dari semua instruksi SSE sebelumnya. Lebih khusus, instruksi untuk menambah dan mengurangi beberapa nilai yang disimpan dalam register tunggal telah ditambahkan. Instruksi ini menyederhanakan pelaksanaan sejumlah DSP dan 3D operasi. Ada juga instruksi baru untuk mengkonversi nilai floating point ke integer tanpa harus mengubah modus pembulatan global, sehingga menghindari mahal pipawarung. Akhirnya, ekstensi menambahkan LDDQU, beban vektor bilangan bulat sejajar alternatif yang memiliki performa lebih baik pada NetBurst platform berbasis untuk beban yang melintasi batas cacheline.
CPU dengan SSE3AMD :
• Athlon 64 (Venice sejak Stepping E3 dan San Diego Stepping E4)
• Athlon 64 X2
• Athlon 64 FX (sejak San Diego Stepping E4)
• Opteron (karena Stepping E4)
• Sempron (karena Stepping E3 Palermo.)
• Phenom
• Phenom II
• Athlon II
• Turion 64
• Turion 64 X2
• Turion X2
• Turion X2 Ultra
• Turion II X2 Ponsel
• Turion II X2 Ultra
• APU
• FX Series
Intel :
• Celeron D
• Celeron (dimulai dengan mikroarsitektur Core)
• Pentium 4 (sejak Prescott)
• Pentium D
• Pentium Extreme Edition (tapi BUKAN Pentium 4 Extreme Edition)
• Pentium Dual-Core
• Pentium (dimulai dengan mikroarsitektur Core)
• Core
• Xeon (karena Nocona)
• Atom
VIA / Centaur :
• C7
• Nano
• Transmeta Efficeon TM88xx (TIDAK Model Nomor TM86xx)
Instruksi baru
Instruksi umum
Hitung
• ADDSUBPD - (Add-Kurangi-Dikemas-Double)
• Masukan: {A0, A1}, {B0, B1}
• Output: {A0 - B0, A1 + B1}
• ADDSUBPS - (Add-Kurangi-Dikemas-Single)
• Masukan: {A0, A1, A2, A3}, {B0, B1, B2, B3}
• Output: {A0 - B0, A1 + B1, A2 - B2, A3 + B3}
AOS (Array Of Strukt)
• HADDPD - (Horizontal-Add-Dikemas-Double)
• Masukan: {A0, A1}, {B0, B1}
• Output: {A0 + A1, B1 B0 +}
• HADDPS (horizontal-Add-Dikemas-Single)
• Masukan: {A0, A1, A2, A3}, {B0, B1, B2, B3}
• Output: {A0 + A1, A2 + A3, B0 + B1, B2 + B3}
• HSUBPD - (Horizontal-Kurangi-Dikemas-Double)
• Masukan: {A0, A1}, {B0, B1}
• Output: {A0 - A1, B0 - B1}
• HSUBPS - (Horizontal-Kurangi-Dikemas-Single)
• Masukan: {A0, A1, A2, A3}, {B0, B1, B2, B3}
• Output: {A0 - A1, A2 - A3, B0 - B1, B2 - B3}
• LDDQU - Sebagaimana dinyatakan di atas, ini adalah sejajar beban vektor bilangan bulat alternatif. Hal ini dapat membantu untuk tugas-tugas kompresi video.
• MOVDDUP, MOVSHDUP, MOVSLDUP - ini juga digunakan untuk bilangan kompleks, dan dapat membantu untuk perhitungan gelombang seperti suara.
• FISTTP - Seperti tua x87 FISTP instruksi, tetapi mengabaikan pengaturan modus pembulatan floating point kontrol mendaftar dan menggunakan "memotong" (truncate) siaga sebagai pengganti. Memungkinkan kelalaian pemuatan mahal dan re-loading register kontrol dalam bahasa seperti C di mana konversi apung ke-int memerlukan perilaku truncate oleh standar.
Instruksi Intel
• MONITOR, MWAIT - Ini mengoptimalkan aplikasi multi-threaded, memberikan prosesor dengan Hyper-Threading kinerja yang lebih baik.
5.SSSE3
Tambahan Streaming SIMD Extensions 3 (SSSE3 atau SSE3S) adalah SIMD set instruksi
Sejarah
SSSE3 pertama kali diperkenalkan dengan prosesor Intel berdasarkan mikroarsitektur Inti tanggal 26 Juni 2006 dengan "Woodcrest" Xeon. SSSE3 telah disebut oleh codenames Tejas Instruksi Baru (TNI) atau Merom New Instructions (MNI) untuk desain prosesor pertama dimaksudkan untuk mendukungnya.
Fungsi
SSSE3 berisi 16 petunjuk diskrit baru. Setiap instruksi dapat bertindak pada 64-bit MMX atau 128-bit register XMM. Oleh karena itu, bahan Intel lihat 32 instruksi baru. Menurut Intel:
SSSE3 memberikan 32 instruksi (diwakili oleh 14 mnemonik) untuk mempercepat perhitungan pada bilangan bulat dikemas. Ini termasuk:• Dua belas instruksi yang melakukan penambahan horisontal atau operasi pengurangan.
• Enam instruksi yang mengevaluasi nilai absolut.
• Dua instruksi yang melakukan biak dan menambahkan operasi dan mempercepat evaluasi dot produk.
• Dua instruksi yang mempercepat operasi multiply dikemas bilangan bulat dan menghasilkan nilai integer dengan skala.
• Dua instruksi yang melakukan byte-bijaksana, di tempat mengocok sesuai dengan operan kontrol mengocok kedua.
• Enam instruksi yang meniadakan bilangan bulat dikemas dalam operan tujuan jika tanda-tanda dari elemen yang sesuai dalam operan sumber kurang dari nol.
• Dua instruksi yang menyelaraskan data dari komposit dari dua operan.
CPU dengan SSSE3
AMD :
• Bobcat
• Buldoser
• Piledriver
Intel :
• Xeon 5100 Series
• Xeon 5300 Series
• Xeon 3000 Series
• Core 2 Duo
• Core 2 Extreme
• Core 2 Quad
• Core i7
• Core i5
• Core I3
• Pentium Dual Core (TIDAK "Pentium D")
• Celeron 4xx Urutan Conroe-L
• Celeron Dual Core E1200
• Celeron M 500 series
• Atom
VIA :
• Nano
Petunjuk baru
Dalam tabel di bawah, satsw (X) (dibaca sebagai 'jenuh dengan kata ditandatangani') mengambil integer ditandatangani X, dan mengkonversi ke -32768 jika kurang dari -32.768, untuk 32.767 jika itu lebih besar dari 32767, dan daun berubah sebaliknya. Seperti biasa untuk arsitektur Intel, byte 8 bit, 16 bit kata-kata, dan dwords 32 bit, 'mendaftar' mengacu pada MMX atau XMM vektor mendaftar.
Pustaka : Wiki.org
0 comments:
Post a Comment