Rabu, 25 Desember 2013

Floating-point unit


Sebuah unit floating-point (FPU, bahasa sehari-hari mathco) adalah bagian dari komputer sistem yang dirancang khusus untuk melakukan operasi pada floating point nomor. Operasi khas Selain itu , pengurangan, perkalian , pembagian , akar kuadrat , bitshifting . Beberapa sistem (terutama yang lebih tua, microcode arsitektur berbasis) juga dapat melakukan berbagai fungsi transendental seperti eksponensial atau trigonometri perhitungan, meskipun dalam kebanyakan prosesor modern ini dilakukan dengan rutinitas perpustakaan software.

Dalam kebanyakan tujuan umum modern arsitektur komputer , satu atau lebih FPUs terintegrasi dengan CPU , namun banyak prosesor tertanam , terutama desain yang lebih tua, tidak memiliki dukungan hardware untuk operasi floating-point.

Di masa lalu, beberapa sistem telah menerapkan floating point melalui coprocessor bukan sebagai unit yang terintegrasi, dalam mikro era, ini umumnya satu sirkuit terpadu , sedangkan pada sistem yang lebih tua itu bisa menjadi seluruh papan sirkuit atau kabinet.


Tidak semua arsitektur komputer memiliki FPU hardware. Dengan tidak adanya sebuah FPU, banyak fungsi FPU dapat ditiru, yang menghemat biaya hardware tambahan dari FPU tetapi secara signifikan lebih lambat. Emulation dapat diimplementasikan pada salah satu dari beberapa tingkatan: dalam CPU sebagai microcode, sebagai sistem operasi fungsi, atau di ruang pengguna kode.

Dalam kebanyakan arsitektur komputer modern, ada beberapa pembagian operasi floating-point dari bilangan bulat operasi. Divisi ini bervariasi secara signifikan dengan arsitektur, beberapa, seperti x86 Intel telah mendedikasikan floating-point register , sementara beberapa menganggapnya sejauh independen clocking skema.

Operasi floating-point sering pipelined . Di awal superscalar arsitektur tanpa general out-of-order eksekusi , operasi floating-point kadang-kadang pipelined secara terpisah dari operasi bilangan bulat. Sejak awal dan pertengahan 1990-an, banyak mikroprosesor untuk desktop dan server memiliki lebih dari satu FPU.

Ketika CPU mengeksekusi program yang membutuhkan operasi floating-point, ada tiga cara untuk melaksanakannya:
- Sebuah floating-point Unit emulator (perpustakaan floating-point)
- Add-on FPU
- Integrated FPU

Floating-point library
Beberapa floating-point hardware hanya mendukung operasi sederhana - penambahan, pengurangan, dan perkalian. Tetapi bahkan yang paling kompleks floating-point hardware memiliki jumlah terbatas operasi dapat mendukung - misalnya, tidak satupun dari mereka langsung mendukung sewenang-wenang-presisi aritmatika .

Ketika CPU mengeksekusi program yang membutuhkan operasi floating-point tidak langsung didukung oleh perangkat keras, CPU menggunakan serangkaian operasi floating-point sederhana. Dalam sistem tanpa floating-point hardware, CPU mengemulasi menggunakan serangkaian sederhana fixed-point aritmatika operasi yang berjalan pada integer Unit logika aritmatika .

Perangkat lunak yang berisi daftar seri diperlukan operasi untuk meniru operasi floating-point sering dikemas dalam floating-point library .

Integrated FPUs
Dalam beberapa kasus, FPUs dapat khusus, dan dibagi antara sederhana operasi floating-point (terutama penjumlahan dan perkalian) dan operasi yang lebih rumit, seperti divisi. Dalam beberapa kasus, hanya operasi sederhana dapat diimplementasikan dalam perangkat keras dan / atau microcode , sedangkan operasi yang lebih kompleks diimplementasikan sebagai kode mesin rutinitas (yaitu ditulis dalam bahasa assembly atau dikompilasi bahasa tingkat tinggi ).

Dalam beberapa arsitektur saat ini, fungsi FPU dikombinasikan dengan unit untuk melakukan SIMD perhitungan, sebuah contoh dari hal ini adalah penggantian x87 petunjuk yang ditetapkan dengan SSE set instruksi dalam x86-64 arsitektur yang digunakan dalam prosesor Intel dan AMD yang lebih baru.

Add-on FPUs
Pada 1980-an, hal itu biasa di IBM PC / kompatibel mikrokomputer untuk FPU menjadi sepenuhnya terpisah dari CPU , dan biasanya dijual sebagai add-on opsional. Ini hanya akan dibeli jika diperlukan untuk mempercepat atau mengaktifkan program matematika intensif.

The IBM PC, XT , dan sebagian besar kompatibel berbasis pada 8088 atau 8086 memiliki soket untuk opsional 8087 coprocessor. The AT dan 80286 sistem berbasis umumnya socketed untuk 80.287 , dan 80.386 / 80386SX mesin berbasis untuk 80.387 dan 80387SX masing-masing, meskipun yang awal yang socketed untuk 80.287, sejak 80387 tidak ada lagi.

Dimulai dengan i486 (Intel turun 'awalan dari 48 seri menggantikan' i '80 'bukan), dalam chip x86 unit floating-point yang terintegrasi dengan CPU, sesuatu yang benar untuk hampir semua prosesor x86-arsitektur nanti. Satu pengecualian adalah i486SX, itu juga tidak biasa dalam bahwa tidak ada coprocessor sebenarnya tersedia. Contoh-contoh awal dari i486SX adalah CPU penuh dengan FPU terintegrasi, Jika selama hardware menguji FPU dari chip i486 gagal sedangkan sisanya dari perangkat keras CPU melewati FPU akan dinonaktifkan dan chip akan dikemas sebagai biaya yang lebih rendah i486SX. Jika hasil dari chip i486DX cukup tinggi, FPU sepenuhnya bekerja akan cacat fisik untuk memenuhi tuntutan untuk i486SX. Akhirnya chip i486SX secara khusus diproduksi tanpa FPU pada mati. Kemudian papan di mana chip i486SX yang disolder langsung ke papan, itu tidak mungkin untuk mengganti seluruh chip dengan chip i486DX berfungsi penuh. Sebaliknya chip i487SX dipasarkan sebagai coprocessor untuk papan ini yang memiliki soket coprocessor. Pada kenyataannya chip i487SX adalah sebuah chip i486 penuh yang benar-benar dinonaktifkan chip i486SX asli dan mengambil alih semua operasi CPU untuk forum diskusi. The i487SX hampir elektrik identik dengan i486SX. Satu-satunya perbedaan adalah pin tambahan yang tujuan utamanya adalah untuk menonaktifkan i486SX ada ketika diinstal. The i487SX dapat digunakan sebagai pengganti i486DX dengan menjepit pin tambahan.

Selain seri x87 Intel, beberapa perusahaan lain diproduksi co-prosesor untuk seri x86. Ini termasuk Cyrix yang dipasarkan seri FasMath sebagai kinerja yang lebih tinggi tetapi sepenuhnya kompatibel x87, dan Weitek yang menawarkan kinerja tinggi namun seri tidak sepenuhnya x87 kompatibel coprocessors.

Selain arsitektur Intel, FPUs sebagai coprocessors yang tersedia untuk Motorola 68000 keluarga line. Ini FPUs, yang 68.881 dan 68.882 , yang umum di Motorola 68020 / 68030 berbasis workstation seperti Sun 3 seri. Mereka juga sering ditambahkan ke model yang lebih tinggi-end Apple Macintosh dan Commodore Amiga series, tapi tidak seperti sistem PC yang kompatibel IBM, soket untuk menambahkan Coprocessor yang tidak umum dalam sistem ujung bawah. Dengan 68040 , Motorola terintegrasi FPU dan CPU, tetapi biaya yang lebih rendah 68LC040 tanpa FPU terintegrasi juga tersedia, seperti i486SX.

Ada juga add-on FPUs unit coprocessor untuk mikrokontroler unit (MCU / μCs) / single-board computer (SBC), yang berfungsi untuk memberikan floating-point aritmatika kemampuan dalam sistem yang mungkin tidak memiliki fungsi tersebut. Perbedaan jenis FPU coprocessors, bila dibandingkan dengan lebih coprocessors floating-point tradisional seperti seri 80x87, adalah bahwa add-on FPUs adalah host--prosesor independen, memiliki kebutuhan mereka sendiri pemrograman ( operasi , set instruksi , dll .) dan sering disediakan dengan mereka sendiri lingkungan terpadu pengembangan (IDE) s.

Tidak ada komentar:

Posting Komentar