The present invention relates generally to computer system on chip architectures, and, more particularly, to a system and method for implementing arbitration between shared peripheral core devices in system on chip (SOC) architectures.
Recent advances in silicon densities now allow for the integration of numerous functions onto a single silicon chip. With this increased density, peripherals formerly attached to the processor at the card level are now integrated onto the same die as the processor. As a result, chip designers must now address issues traditionally handled by the system designer. For example, the on-chip buses used in such system on chip (SOC) designs must be sufficiently flexible and robust in order to support a wide variety of embedded system needs. Typically, an SOC contains numerous functional blocks representing a very large number of logic gates, the designs of which may be realized through a macro-based approach. Macro-based designs provide numerous benefits during logic entry and verification. From generic serial ports to complex memory controllers and processor cores, each SOC generally requires the use of common macros.
In modern SOC design architectures, there may be many processors each needing to share the same peripheral cores. Although still necessary, many of these peripheral cores are actually used on an infrequent basis. In the case where a separate set of peripheral cores is placed on the SOC for each individual processor in the system, the result is a great deal of device redundancy and wasted silicon. On the other hand, if the system were to provide a method of sharing each peripheral among several processors, this redundancy would be eliminated. One possible solution in this regard could be to connect each processor to the same system bus and to share a small number of peripherals over the same bus. However, this approach is often impractical, since the bandwidth of the system bus may not support several processors.
Accordingly, it would be desirable to be able to implement an SOC architecture that would remove much of the previous redundancy by sharing lesser used peripherals, but that would also maintain separate system busses to support several processors.
The foregoing discussed drawbacks and deficiencies of the prior art are overcome or alleviated by a system for implementing arbitration between one or more shared peripheral core devices in system on chip (SOC) integrated circuit architecture. In an exemplary embodiment, the system includes a first microprocessor in communication with a first system bus, and a second microprocessor in communication with a second system bus. At least one peripheral core device is accessible by both the first microprocessor and said second microprocessor, and an arbitration unit is in communication with the first system bus and the second system bus. The arbitration unit is configured to control communication between the at least one peripheral core device and the first and second microprocessors.
In another embodiment, a method for implementing arbitration between one or more shared peripheral core devices in a system on chip (SOC) integrated circuit architecture includes configuring a first microprocessor in communication with a first system bus, configuring a second microprocessor in communication with a second system bus, and configuring at least one peripheral core device to be accessible by both the first microprocessor and the second microprocessor. An arbitration unit is configured in communication with the first system bus and the second system bus, wherein the arbitration unit controls communication between the at least one peripheral core device and the first and second microprocessors.
Referring to the exemplary drawings wherein like elements are numbered alike in the several Figures:
Disclosed herein is a system and method for implementing arbitration between shared peripheral core devices in system on chip (SOC) architectures. For architectures in which an SOC includes several processors that all need access to a given set of cores, a single set of cores is provided on the chip (rather than providing a separate set of cores for each processor), wherein the processors share use of the cores as needed. Briefly stated, the present disclosure introduces an arbitration unit that manages the complex function of multiplexing a small number of identical peripheral cores among several processors. The arbitration unit is configured to independently connect to each separate processor bus. Where several types of peripheral cores are to be shared in this manner, an arbitration unit is used for each type of peripheral.
Referring initially to
Therefore, in accordance with an embodiment of the invention,
Though the arbitration functions for external I/O's may differ depending on the embodiment, the arbitration protocol between a processor and a given peripheral core is consistent. More specifically, an arbitration unit associated with a particular peripheral is able to detect an appropriate request for that peripheral by either processor 102a or processor 102b. This may be implemented through simple addressing methods. Once a request is detected, the arbitration unit will inspect its internal registers to determine which peripheral, if any, is presently free to handle the request. If a free peripheral is detected, the arbitration unit notes the assignment internally, and data passes between the free peripheral as needed. On the other hand, if a free peripheral is not found, the arbitration utilizes the corresponding system bus to inform the requesting processor that the requested peripheral is busy. This status will be continuously updated until such time as a peripheral becomes available.
In addition, each arbitration unit may also implement data buffering on the processor bus interface and the external I/O to allow itself to store certain data transfers in the event that all peripherals are busy at a given time. This type of buffering would preferably be implemented in a manner such that data could be multiplexed (muxed) in and out so that it is not used when the peripheral devices are not busy. As described in further detail hereinafter, there are least four ways that an arbitration unit could be internally configured, based on the type of peripheral core connected thereto:
Referring now to
Referring now to
Finally,
Thus configured, the arbitration unit 106 is able to identify the target destination by simply looking at the bus that the data arrived on. The appropriate processor would then look for a free peripheral and stream the incoming data to the free peripheral. This also establishes a peripheral/processor association such the arbitration unit would know where to send the data to once it flows through the peripheral. After each transfer in either direction, the arbitration unit then closes the association and considers the peripheral free again. The arbitration takes place at the digital level of the bus; i.e., there would be a physical layer for each external output, and the muxing would be carried out above the physical layer.
While the invention has been described with reference to a preferred embodiment or embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed as the best mode contemplated for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims.