Coprocessor : Architecture, Working, Types & Its Applications

In a microprocessor chip, new circuitry is added to achieve special tasks and also operations on numbers to offload the CPU core work so that, the CPU can function very fast. A supplementary processor like a Coprocessor is mainly used in computers to achieve special tasks like graphical display processing & wide arithmetic calculations. This processor is is designed to perform such tasks very efficiently as compared to the CPU, thus overall computer speed can be increased. This article discusses an overview of a coprocessor –architecture, working & its applications.


What is Coprocessor?

A processor which works with the main processor of a computer like the CPU side by side is known as a coprocessor. This processor is also known as a supplementary computer processor. By using this processor, some difficult mathematical calculations can be performed like the graphics displayed on the screen, signal processing, string processing, floating-point arithmetic, input-output interfacing, etc.

Coprocessor
Coprocessor

Coprocessor Architecture

The coprocessor like 8087 architecture is shown below. Generally, this co-processor works with the microprocessor parallelly. This coprocessor was developed by Intel and used with 16-bit 8086 family microprocessors. When the processor functions in combination with the microprocessor, the calculation portion is simply handled by the processor & this allows the CPU to utilise the resources to execute various other activities.

The following figure represents the architecture of the 8087 coprocessor. This architecture includes two main units like control unit and a numeric execution unit which is also called NEU.

8087 Coprocessor Architecture
8087 Coprocessor Architecture

In the control unit, there are various units like data buffer, control & status word register, shared operand queue, exception pointer, and addressing & bus tracking unit. The Numeric Execution Unit or NEU mainly includes a microcode control unit, register stack, programmable shifter, temporary registers, arithmetic module, exponent module & shared operand queue.

The control unit in the coprocessor is to control the instruction execution (IE) for which the Numeric Execution Unit is responsible. Mostly, the microcode control unit (CU) of the numeric execution unit obtains the numeric instructions from the coprocessor’s control unit. This coprocessor has complete 8-registers of 80 bits and each of these is utilized in the LIFO stack. The operands over which the co-processor instructions will occur exist in the register stack.

The existing stack is pointed through the 3-bit SP (stack pointer) which holds the binary values which range from 000 – 111 in order to show the 8 stack registers. It works within a circular stack way in LIFO mode. But, once the reset action occurs then the pointer can be initialized by binary value ‘000’.

The numeric data three classifications on which the co-processor functions are packed decimal numbers, real numbers & binary integers. The binary integers are three types 16-bit word integer, 32-bit short integer & 64-bit long integer. The 80-bit BCD format signifies the packed decimal numbers while real numbers are 3 types; 32-bit short real, 64-bit long real, and 80-bit temporary real.

For transferring the numeric data in the coprocessor either a 16-bit exponent bus or a 64-bit mantissa bus is utilized. The coprocessor includes a 16-bit control word & a 16-bit status word.

The control word is written into the control register & this takes place in such a way that the coprocessor initially writes the control word within the location of memory. After that, the coprocessor simply reads the control word using the memory location & stores it in the control register.

Similarly, the status word reads in such a way that the processor sends the data in the status register toward a location of memory. Further, this coprocessor reads the status register from that specific location of memory. So this means, the processor & the microprocessor communicate with each other by the main memory.

How Does Coprocessor Work?

The coprocessor is mainly designed to work with both the 8086 & 8088 processors. The coprocessor is used to help the system to run more powerfully by offloading specific CPU tasks. Once this processor works in combination with the microprocessor then the instructions of both the microprocessor and coprocessor are integrated within while writing the program. The beginning of instructions in the assembly language program has an ‘F’ that represents the instructions of the coprocessor whereas the instructions without an ‘F’ prefix show the instructions of the microprocessor.

At first, the instructions are fetched by the microprocessor from the location of memory & sequentially load them within the queue, at the same time, the 8087 coprocessor also reads & stores the instructions within an inside queue. So this means, every single instruction can be read through both the coprocessor & processor however at the execution time, both the coprocessor & microprocessor can execute the execution of their particular instructions. This means, that instruction is read & decoded. If the microprocessor checks that there is a coprocessor’s instr then that instruction then is treated as No-operation. Similarly, if this co-processor approaches across any instruction of microprocessor then it will be treated as no-operation.

Types of Coprocessor

There are different coprocessors available based on manufacturers like the following.

Intel 8087 Coprocessor

Intel 8087 is a specially designed co-processor that is used to perform mathematical calculations that includes floating-point & integer values. Sometimes, it is also known as a numeric data processor & math processor. This is a numeric co-processor for Intel 80188, 8086, 80186 & 8088 processors. The 8087 coprocessor includes eight 80-bit general registers which are executed as a stack. So, all the floating point operations are simply performed with data from the stack & from external memory.

Intel 8087 Coprocessor
Intel 8087 Coprocessor

Intel 8087 co-processor simply supports BCD, integer, single & double precision floating-point numbers & also extended precision floating-point numbers. Once the 8087 processor loads data from memory then it converts internally to extend the precision number & further all calculations are performed through this number.

So switching from a double-precision number to a single-precision number otherwise from 64-bit integer – 32-bit/16-bit integer numbers don’t give any significant boost performance. 8087 coprocessors were not only manufactured by Intel but AMD, Cyrix & IBM also manufactures these coprocessors.

Motorola 68881

Motorola 68881 is a coprocessor that is mainly used with 2nd generation of Motorola 68K microprocessors like Motorola 68030 & 68020. Theoretically, this coprocessor is used with earlier 68000 or 68010 CPUs as a peripheral device.

Motorola 68881
Motorola 68881

The Motorola 68881 co-processor simply functions like a memory-mapped device. Once the main CPU loads the instruction of the co-processor, then it writes the instruction code into CIR (Co-processor Interface Registers), which are mapped within the address space of the CPU, and after that, it reads the response of the co-processor from one of CIR registers.

The Motorola 68881/68882 coprocessors were utilized in the IBM RT PC workstations, Sun Microsystems Sun-3 workstations, NeXT Computer, Apple Computer Macintosh II family, Amiga 3000, Sharp X68000, Convergent Technologies MightyFrame, TT, Atari Mega STE & Falcon. These processors are also used in some third-party Atari & Amiga products like a memory-mapped device to the 68000.

Apple Motion Coprocessors

The M-series coprocessors of Apple are known as motion coprocessors which are used in Apple mobile devices. The first coprocessor was designed in 2013, used to gather sensor data from incorporated gyroscopes, accelerometers, and compasses & offload the gathered sensor data using the main CPU.

Apple Motion Coprocessors
Apple Motion Coprocessors

The M-series Apple coprocessors simply gather process & store the data of the sensor even if the device is asleep & applications can recover data once the device is again powered up. So this decreases the power drawn from the device & saves the life of the battery.

Difference between Processor and Coprocessor

The difference between processor & coprocessor includes the following.

Processor

Coprocessor

The processor is the main processing unit in the computer that executes different arithmetic, logic & control operations based on the instructions. The coprocessor is a special processor that gives support to the main processor.

 

The processor takes care of all the main works

 

The coprocessor takes care of some other things only like graphics & arithmetic calculations.
It handles logical operations & mathematical calculations and generates control signals to other components for synchronizing the tasks. It performs signal processing, mathematical operations, networking & cryptography based on the type.
The processor maintains the entire computer’s proper functioning. This processor helps in increasing the performance of the system and offloads severe tasks from the CPU.

Advantages

The advantages of a coprocessor include the following.

  • The co-processor simply handles more specialized tasks faster as compared to the core CPU
  • These processors are easy to use and the most popular.
  • It decreases the microprocessor’s strain by taking special processing tasks from the CPU so that it runs at a higher speed.
  • This processor is helpful in extending the CPU’s processing features by expanding the instruction set or by offering configuration registers.

Disadvantages

The disadvantages of coprocessors include the following.

  • The coprocessor is not capable in recovering instructions from memory, directly executing instructions, managing memory, I/O operations performing
  • It depends on the main processor to regain coprocessor instructions & take care of all other operations not related to the coprocessor.
  • This is not the major processor of the system.
  • The coprocessor cannot work without the main microprocessor.

Applications

The applications of coprocessors include the following.

  • The co-processor is used to perform some of the more specialized tasks such as graphical display processing or complex mathematical calculations.
  • A co-processor is simply used for reducing the burden on the CPU of a computer.
  • This processor works with the CPU of the computer side-by-side.
  • This processor performs high-level mathematical operations much faster as compared to the main processor like roots, logarithms, trigonometry functions, etc.
  • A coprocessor increases the primary processor’s functions.
  • The coprocessor performs different operations like signal processing, floating-point arithmetic, string processing, graphics, I/O interfacing through peripheral devices, cryptography, etc.
  • These processors are stand-alone chips in earlier desktop computers that were connected to the motherboard.
  • A coprocessor handles the CPU tasks for boosting overall performance.

Thus, this is an overview of a coprocessor – working and its applications. This processor is also known as a Math Processor. A coprocessor performs different tasks very faster as compared to the core CPU. Thus, the overall speed of the computer system increases. This processor can be attached to an ARM processor. Once it is added then we need to increase Core CPU’s instruction set or include configurable registers for increasing the processing power. Here is a question for you, what is a microprocessor?