Peripheral devices provide computing devices with additional functionality. Common peripheral devices include printing devices, such as inkjet and laser printers, storage devices, such as internal and external hard disk drives, and display devices, such as cathode-ray tube (CRT) displays and flat panel displays (FPD's). A peripheral device generally has a primary functionality, such as printing data in the case of a printing device, storing data in the case of a storage device, and displaying data in the case of a display device.
Historically, peripheral devices did not have processors, such as central-processing units (CPU's). Instead, the computing device performed processing for the peripheral device. For example, in the case of a printing device, the conversion of image data desired to be printed by a user into data understandable by the printing device was completely accomplished by the computing device to which the printing device was connected. The printing device could not perform such data conversion in order to perform its primary functionality.
Now, peripheral devices include processors that process data for the primary functionality of their peripheral devices. As such, computing devices are not required to perform processing for the peripheral devices. For example, in the case of a printing device, a computing device may simply provide the image data desired to be printed to the printing device, and the printing device itself converts the image data as needed. Because most peripheral devices perform their primary functionalities for just a small portion of the time, their processors are not being efficiently used.
Features shown in the drawing are meant as illustrative of only some embodiments of the invention, and not of all embodiments of the invention.
The computing device 102 includes at least a processor 108, memory 109, storage 111, and an interface 113. The processor 108 processes data and commands, such as by executing computer-executable instructions of computer programs with respect to the data and commands or by performing other types of processing tasks. The memory 109 may be volatile semiconductor memory, and thus temporarily store data and commands. The storage 111 may be non-volatile storage, such as a hard disk drive, and thus indefinitely store data and commands. The interface 113 enables the computing device 102 to communicate with peripheral devices like the peripheral device 104, and may be a wired or a wireless interface. The computing device 102 may include components in addition to the processor 108, the memory 109, the storage 111, and the interface 113.
The peripheral device 104 includes at least one or more components 110 and a processor 112; in one embodiment, the processor 112 may be part of one of the components 110. The components 110 are the components needed by the peripheral device 104 to provide the primary functionality of the peripheral device 104. For example, if the peripheral device 104 is a printing device like a laser printer, the components 110 may include the fuser, laser, media-storage trays, and the other components for the peripheral device 104 to provide its primary functionality, which is laser printing.
The processor 112 of the peripheral device 104 processes data and commands received from the computing device 102 that are related to the primary functionality of the peripheral device 104, as indicated by the arrow 114. Such data and commands related to the primary functionality of the peripheral device 104 are indicated by the letter A 116 in
The processor 112 of the peripheral device 104 also processes data and commands received from the computing device 102 that are unrelated to the primary functionality of the peripheral device 104, as indicated by the arrow 114. Such data and commands unrelated to the primary functionality of the peripheral device 104 are indicated by the letter B 118 in
For instance, the computing device 102 communicates with the peripheral device 104 by sending data that the peripheral device 104 is to decrypt, and by sending the decryption command to the peripheral device 104. The computing device 102 may send the data and the command within a predefined protocol that is otherwise employed by the computing device 102 to send primary functionality data and commands to the peripheral device 104. Alternatively, the computing device 102 may send the data and the command in accordance with a protocol especially tailored for transmission of data and commands that do not relate to the primary functionality of the peripheral device 104. As another example, the command may indicate to the peripheral device 104 to have its processor 112 execute or process code, such as a computer program that has been transferred from the computing device 102 to the peripheral device 104.
Once the processor 112 of the peripheral device 104 processes the data and commands indicated by the letter B 118, the computing device 102 receives results of the processing of this data and commands from the peripheral device 104, as indicated by the arrow 120. The results of the processing of the data and commands unrelated to the primary functionality of the peripheral device are indicated by the letter C 122 in
Processing tasks of the computing device 102 may thus be distributed between its processor 108 and the processor 112 of the peripheral device 104. Transferring processing tasks to the peripheral device 104 effectively increasing the amount of processing power available to the computing device 102. That is, when the peripheral device 104 is not actively using its processor 112, the processor 112 becomes available for the computing device 102 to use. As such, the computing device 102 has two processors at its disposal, its own processor 108, as well as the processor 112 of the peripheral device 104. In this way, the computing device 102 leverages the processor 112 of the peripheral device 104 when it is not being used to assist the peripheral device 104's primary functionality.
For example, the peripheral device 104 may be a laser printer or another type of printing device. As a result, the processor 112 is able to process the data and commands related to the primary functionality of the peripheral device 104, which is printing print jobs submitted by the computing device 102, as may be indicated by the letter A 116. The computing device 102 may, besides sending the peripheral device 104 such print jobs, also send the peripheral device 104 data and commands unrelated to printing, as indicated by the letter B 118. For example, the data unrelated to printing may be data that is to be encrypted. The command unrelated to printing may be an indication that the data is to be encrypted, as opposed to, for instance, decrypted. The computing device may have already transferred the encryption algorithm to the peripheral device 104. When the processor 112 is not actively processing a print job or other data related to the primary functionality of the peripheral device 104, the processor 112 processes the data unrelated to printing, such as specifically encrypting this data. Once the peripheral device 104 has encrypted the data unrelated to its primary functionality, the peripheral device 104 returns the encrypted data, as may be indicated by the letter C 122, back to the computing device 102.
In the example of the previous paragraph, the primary functionality of the peripheral device 104 is printing print jobs submitted by the computing device 102. However, the processor 112 of the peripheral device 104 also processes data and commands that are unrelated to the primary functionality of the peripheral device 104. The encryption of data by the processor 112 is unrelated to the primary functionality of the peripheral device 104. If the processor 112 is not currently processing data and commands related to printing, the processor 112 can instead process data and commands unrelated to printing, such as encrypting data. The computing device 102 thus offloads some processing tasks onto the processor 112 that would otherwise have to be completely performed by the processor 108 of the computing device 102. As such, the computing device 102 leverages the processing capability of the processor 112 of the peripheral device 104. Other functionality of the peripheral device 104 may include decompression, encryption, and decryption.
As noted, the processor 112 of the peripheral device 104 can perform processing tasks for the computing device 102. Such processing tasks are not limited to the examples of encryption and decryption. The computing device 102 can request the peripheral device 104 to perform a wide variety of tasks, such as processing and/or storing data, commands, instructions, code, programs, and so on.
As another example, the peripheral device 104 may be a tape drive or another type of storage device. The primary functionality of the tape drive may be to store archived data submitted by the computing device 102, as may be indicated by the letter A 116. As part of the primary functionality of the peripheral device 104, the processor 112 may first automatically compress the archived data before storing it on tape media represented by the components 110. The processor 112 may also be able to receive data and commands that are unrelated to the primary functionality of the peripheral device 104, such as data and commands indicated by the letter B 118 that is not intended for storage. The processor 112 may nevertheless compress this data, in accordance with a command that specifies compression of the data. The processor 112 thus performs functionality unrelated to the primary functionality of the peripheral device 104, which is storing data. After compressing the data, the peripheral device 104 sends the compressed data back to the computing device 102, as may be indicated by the letter C 122. The computing device 102 is therefore able to employ the compression functionality of the peripheral device 104 on data that is not intended to be stored on the peripheral device 104.
As a final example, the peripheral device 104 may be a flat-panel display (FPD), or another type of display device. The primary functionality of the FPD is to display image data submitted by the computing device 102. The processor 112 may process the image data, as may be indicated by the letter A 116, prior to displaying on the display elements of the FPD represented by the components 110. The processor 112 may also be able to process other data and commands submitted by the computing device 102, as may be indicated by the letter B 118, and send back the results of such processing to the computing device 102, as may be indicated by the letter C 122.
The interface 202 may be implemented in accordance with various embodiments of the invention to allow the computing device 102 to communicate with the peripheral device 104. For example, the interface may be a wired interface or a wireless interface. As a wired interface, the interface 202 may be one or both of two types of interfaces. As one example, the interface 202 may be a hardware-oriented interface. As such, the interface 202 may include one or more pins, or leads or conductors. Such pins, leads and/or conductors are intended for the computing device 102 of
The interface 202 may further include additional pins, leads and/or conductors. Such additional pins, leads, and/or conductors are asserted or unasserted by the computing device 102 to indicate whether the information being transmitted is information related to the primary functionality of the peripheral device 104, or information unrelated to the primary functionality of the peripheral device 104. The processor 112 may further return the results of the processing of the data or command unrelated to the primary functionality of the peripheral device 104 over the interface 202.
As another example, the interface 202 may be a software-oriented interface. As such, the interface 202 may define a communication protocol by which the peripheral device 104 receives from the computing device 102 data or a command either related to or unrelated to the primary functionality of the peripheral device 104. The interface 202 may further define a communication protocol to indicate whether the data or command is related to or unrelated to the primary functionality of the peripheral device 104. Furthermore, the interface 202 may define a communication protocol by which the processor 112 may return the results of the processing of the data or command unrelated to the primary functionality of the peripheral device 104. For example, the communication protocol may packetize data, where each packet of data includes a header that indicates the type of data being transmitted, as well as the actual data being transmitted.
The computer program 304, when executed by the processor 112 on data or commands received from the computing device 102 of
The functionality unrelated to the primary functionality of the peripheral device 104 may thus be predetermined functionality implemented as the computer program 304. The computing device may not be able to modify or change the computer program 304. As a result, even though the computing device 102 may know what additional functionality the peripheral device 104 can perform, the computing device 102 may not be able to change that additional functionality, because it is not able to modify or change the computer program 304.
In the embodiment of
The peripheral device 104 next receives data and/or commands from the computing device 102 (504). The data and/or commands are meant for processing in relation to the functionality unrelated to the primary functionality of the peripheral device 104. For example, the data and/or commands may be received over the interface 202 of
The processor 112 of the peripheral device 104 processes the data and/or commands in accordance with the computer program 304 to perform the functionality on the data and/or commands (506). The functionality is unrelated to the primary functionality of the peripheral device 104. The peripheral device 104, such as the processor 112 thereof, then sends back the results of processing the data and/or commands to the computing device 102 (508). For example, the results of processing the data and/or commands may be sent via the interface 202 of