Koprosesor

**Koprosesor** (*coprocessor*) adalah prosesor komputer yang digunakan untuk melengkapi fungsi prosesor utama (CPU). Operasi yang dilakukan oleh koprosesor dapat berupa aritmetika titik-mengambang, grafik, pemrosesan isyarat, pemrosesan string, kriptografi, atau antarmuka I/O dengan perangkat periferal. Dengan membongkar tugas intensif prosesor dari prosesor sentral, koprosesor dapat mempercepat kinerja sistem. Koprosesor memungkinkan jajaran komputer untuk dikustomisasi, sehingga pelanggan yang tidak membutuhkan kinerja ekstra tidak perlu membayarnya.

## Fungsi
Koprosesor bervariasi dalam tingkat otonominya. Beberapa (seperti FPU) bergantung pada kontrol langsung melalui instruksi coprocessor, tertanam dalam aliran instruksi CPU. Lainnya adalah prosesor independen dalam hak mereka sendiri, mampu bekerja secara asinkron; mereka masih belum dioptimalkan untuk kode tujuan umum, atau mereka tidak mampu melakukannya karena set instruksi terbatas yang berfokus pada percepatan tugas tertentu . Hal ini umum untuk didorong oleh akses memori langsung (DMA), dengan prosesor host (CPU) membangun daftar perintah. Mesin Emosi PlayStation 2 berisi unit vektor SIMD mirip DSP yang tidak biasa yang mampu melakukan kedua mode operasi.

## Sejarah
Untuk memanfaatkan waktu prosesor komputer bingkai utama selayaknya, tugas masukan/keluaran didelegasikan ke sistem terpisah yang disebut Saluran I/O. Bingkai utama tidak memerlukan pemrosesan I/O sama sekali, sebaliknya hanya akan mengatur parameter untuk operasi input atau output dan kemudian memberi sinyal ke prosesor saluran untuk melakukan seluruh operasi. Dengan mendedikasikan sub-prosesor yang relatif sederhana untuk menangani pemformatan dan pemrosesan I/O yang memakan waktu, kinerja sistem secara keseluruhan ditingkatkan.

Koprosesor untuk aritmetika titik-mengambang pertama kali muncul di komputer desktop pada 1970-an dan menjadi umum sepanjang 1980-an dan hingga awal 1990-an. Prosesor 8-bit dan 16-bit awal menggunakan perangkat lunak untuk melakukan operasi aritmetika titik-mengambang . Di mana coprocessor didukung, perhitungan floating-point dapat dilakukan berkali-kali lebih cepat. Koprosesor matematika adalah pembelian populer bagi pengguna perangkat lunak desain berbantuan komputer (CAD) dan perhitungan ilmiah dan teknik. Beberapa unit floating-point, seperti AMD 9511, Intel 8231/8232 dan Weitek FPU diperlakukan sebagai perangkat periferal, sementara yang lain seperti Intel 8087, Motorola 68881 dan Nasional 32081 lebih terintegrasi dengan CPU.

Bentuk lain dari koprosesor adalah koprosesor tampilan video, seperti yang digunakan dalam keluarga Atari 8-bit, komputer rumahan Texas Instruments TI-99/4A dan MSX, yang disebut "Pengontrol Tampilan Video". Chipset kustom Commodore Amiga termasuk unit yang dikenal sebagai Copper, serta Blitter untuk mempercepat manipulasi bitmap dalam memori.

Sebagai mikroprosesor dikembangkan, biaya integrasi fungsi aritmetika floating point ke dalam prosesor menurun. Kecepatan prosesor yang tinggi juga membuat koprosesor yang terintegrasi erat sulit untuk diimplementasikan. Koprosesor matematika yang dikemas secara terpisah sekarang tidak umum di komputer desktop. Namun, permintaan untuk koprosesor grafis khusus telah meningkat, terutama karena meningkatnya permintaan untuk grafis 3D realistis dalam permainan komputer.

### Intel

IBM PC asli menyertakan soket untuk koprosesor titik-mengambang Intel 8087 (alias FPU) yang merupakan pilihan populer bagi orang-orang yang menggunakan PC untuk desain berbantuan komputer atau kalkulasi intensif matematika. Dalam arsitektur itu, coprocessor mempercepat aritmetika floating-point di urutan lima puluh kali lipat. Pengguna yang hanya menggunakan PC untuk pengolah kata, misalnya, menghemat biaya koprosesor yang tinggi, yang tidak akan mempercepat kinerja operasi manipulasi teks.

8087 terintegrasi erat dengan 8086/8088 dan merespons kode operasi bahasa mesin floating-point yang dimasukkan ke dalam aliran instruksi 8088. Prosesor 8088 tanpa 8087 tidak dapat menginterpretasikan instruksi ini, memerlukan versi program yang terpisah untuk sistem FPU dan non-FPU, atau setidaknya pengujian pada saat dijalankan untuk mendeteksi FPU dan memilih fungsi perpustakaan matematika yang sesuai.

Koprosesor lain untuk prosesor pusat 8086/8088 adalah koprosesor input/output 8089. Ini menggunakan teknik pemrograman yang sama seperti 8087 untuk operasi input/output, seperti transfer data dari memori ke perangkat periferal, dan dengan demikian mengurangi beban pada CPU. Namun, IBM tidak menggunakannya dalam desain PC IBM dan Intel menghentikan pengembangan jenis koprosesor ini.

Mikroprosesor Intel 80386 menggunakan koprosesor "matematika" opsional (80387) untuk melakukan operasi floating point secara langsung di perangkat keras . Prosesor Intel 80486DX menyertakan perangkat keras titik-mengambang pada chip. Intel merilis prosesor hemat biaya, 80486SX, yang tidak memiliki perangkat keras floating point, dan juga menjual koprosesor 80487SX yang pada dasarnya menonaktifkan prosesor utama saat dipasang, karena 80487SX adalah 80486DX lengkap dengan set koneksi pin yang berbeda.

Prosesor Intel lebih lambat dari perangkat keras floating-point terintegrasi 80486 pada chip prosesor utama; kemajuan dalam integrasi menghilangkan keuntungan biaya dari penjualan prosesor floating point sebagai elemen opsional. Akan sangat sulit untuk mengadaptasi teknik papan sirkuit yang memadai pada 75&nbsp;kecepatan prosesor MHz untuk memenuhi standar waktu tunda, konsumsi daya, dan interferensi frekuensi radio yang diperlukan pada kecepatan jam rentang gigahertz. Prosesor floating point on-chip ini masih disebut sebagai koprosesor karena beroperasi secara paralel dengan CPU utama.

Selama era komputer desktop 8- dan 16-bit, sumber umum koprosesor floating-point lainnya adalah Weitek. Koprosesor ini memiliki set instruksi yang berbeda dari koprosesor Intel, dan menggunakan soket yang berbeda, yang tidak didukung oleh semua motherboard. Prosesor Weitek tidak menyediakan fungsi matematika transendental (misalnya, fungsi trigonometri) seperti keluarga Intel x87, dan memerlukan pustaka perangkat lunak khusus untuk mendukung fungsinya.

### Motorola
Keluarga Motorola 68000 memiliki koprosesor 68881/68882 yang memberikan akselerasi kecepatan floating-point yang sama seperti untuk prosesor Intel. Komputer yang menggunakan keluarga 68000 tetapi tidak dilengkapi dengan prosesor floating point perangkat keras dapat menjebak dan meniru instruksi floating-point dalam perangkat lunak, yang, meskipun lebih lambat, memungkinkan satu versi biner dari program untuk didistribusikan untuk kedua kasus. Koprosesor manajemen memori 68451 dirancang untuk bekerja dengan prosesor 68020.

### Koprosesor modern
, *[[Unit pemroses grafis|Graphics Processing Unit]]* (GPU) khusus dalam bentuk kartu grafis adalah hal yang biasa. Model kartu suara tertentu telah dilengkapi dengan prosesor khusus yang menyediakan pencampuran multisaluran digital dan efek DSP real-time pada awal 1990 hingga 1994 (Gravis Ultrasound dan Sound Blaster AWE32 menjadi contoh tipikal), sedangkan Sound Blaster Audigy dan Sound Blaster X -Fi adalah contoh yang lebih baru.

Pada tahun 2006, AGEIA mengumumkan kartu tambahan untuk komputer yang disebut PhysX PPU . PhysX dirancang untuk melakukan perhitungan fisika yang kompleks sehingga CPU dan GPU tidak perlu melakukan perhitungan yang memakan waktu ini. Ini dirancang untuk video game, meskipun penggunaan matematika lainnya secara teoretis dapat dikembangkan untuk itu. Pada tahun 2008, Nvidia membeli perusahaan dan menghapus lini kartu PhysX; fungsionalitas ditambahkan melalui perangkat lunak yang memungkinkan GPU mereka untuk merender PhysX pada inti yang biasanya digunakan untuk pemrosesan grafis, menggunakan perangkat lunak mesin Nvidia PhysX mereka.

Pada tahun 2006, BigFoot Systems meluncurkan kartu tambahan PCI yang mereka beri nama KillerNIC yang menjalankan kernel Linux khusus pada FreeScale PowerQUICC yang berjalan pada 400&nbsp;MHz, menyebut chip FreeScale sebagai Unit Pemrosesan Jaringan  (*Network Processing Unit* /NPU).

## Referensi