Multithreading and multiprocessing

The CCA application running inside the 4765 can process several CCA requests simultaneously. The coprocessor contains several independent hardware elements, including the Rivest-Shamir-Adleman algorithm (RSA) engine, Data Encryption Standard (DES) engine, CPU, random-number generator, and Peripheral Component Interconnect-X (PCI-X) communications interface. These elements can all be working at the same time, processing parts of different CCA verbs. By working on several verbs at the same time, the coprocessor can keep all of its hardware elements busy, maximizing the overall system throughput.

To take advantage of this capability, your host system must send multiple CCA requests to the coprocessor without waiting for each one to finish before sending the next one. The best way to send multiple requests is to design a multithreaded host application program, in which each thread can independently send CCA requests to the coprocessor. For example, a web server can start a new thread for each request it receives over the network. Each of these threads will send the required cryptographic requests to the coprocessor, independent of what the other threads are doing. The multithreaded model guarantees that the coprocessor is not under used. Another option is to have several independent host application programs all using the coprocessor at the same time.