In a system-on-a-chip (SoC) application, an entire system address space is typically partitioned into multiple regions in accordance with end-user/application requirements. These regions associate to different system peripherals, wherein masters or processors access the peripherals through multilevel interconnect networks. Additionally, these address regions are associated with varied attributes (e.g., read only, write only, constant data access, no access, etc.) for data and instruction accesses. Some of these attributes (e.g., read only, write only, no access) are addressed using a memory management unit (MMU) or memory programming unit (MPU) in a processor-based system. For masters other than processors, this specific behavior is handled either at the interconnect level or using specific peripherals. However, existing implementations of an interconnect network are not exhaustive enough to support all application requirements, and specific peripheral implementations will add additional access latency and area overhead due to varied bus protocols and operating frequencies, which are thus impractical or undesirable.
Embodiments of the invention advantageously provide novel methods and apparatus for affording configurable responses to a master device or processor adapted to access one or more slave or peripheral devices through a bus interconnect. Methods and apparatus according to embodiments of the invention facilitate efficient addressing of different system address region attributes in such a manner that the number of logic gates, congestion in the bus interconnect, and power consumption are beneficially reduced, among other benefits.
In accordance with an embodiment of the invention, a bus interconnect for interconnecting one or more master devices with one or more slave devices in a system includes at least one slave interface module adapted for communicating with a corresponding one of the master devices and at least one master interface module adapted for communicating with a corresponding one of the slave devices. The bus interconnect further includes a configurable response module coupled with the slave interface module(s). The configurable response module is operative to generate different configurable responses associated with access requests to corresponding portions of an address space of the system.
Embodiments of the invention will become apparent from the following detailed description thereof, which is to be read in connection with the accompanying drawings.
The following drawings are presented by way of example only and without limitation, wherein like reference numerals (when used) indicate corresponding elements throughout the several views, and wherein:
It is to be appreciated that elements in the figures are illustrated for simplicity and clarity. Common but well-understood elements that may be useful or necessary in a commercially feasible embodiment may not be shown in order to facilitate a less hindered view of the illustrated embodiments.
Embodiments of the invention will be described herein in the context of illustrative methods and/or apparatus for generating configurable responses for multiple regions of address space in a multiprocessor system in a manner which advantageously reduces system hardware (i.e., logic) requirements, reduces network interconnect congestion, reduces integrated circuit area, reduces overall power consumption in the system and improves system performance, among other benefits. It should be understood, however, that embodiments of the invention are not limited to these or any other particular methods and/or apparatus. While embodiments of the invention may be described herein with reference to specific address ranges or mappings, it is to be understood that the embodiments of the invention are not limited to the ranges or mappings shown and described herein, and that embodiments of the invention can be performed using other memory ranges or mappings, as will become apparent to those skilled in the art. Moreover, it will become apparent to those skilled in the art given the teachings herein that numerous modifications can be made to the embodiments shown that are within the scope of the claimed invention. That is, no limitations with respect to the embodiments shown and described herein are intended or should be inferred.
As a preliminary matter, for the purposes of clarifying and describing embodiments of the invention, the following table provides a summary of certain acronyms and their corresponding definitions, as the terms are used herein:
In modern data processing systems, bus interconnects or alternative connection means (e.g., bus matrix, etc.) are often used for routing data from high-performance “masters” or processors to corresponding “slaves” or peripherals in operative communication with the masters.
As is known in data processing systems with memory-mapped I/O, each slave device S0-S3 in the data processing system 100, whether it is a memory device or an I/O device, is mapped onto its own region of the data processing system's address space and is enabled when one of the data processors M0, M1 asserts an address within that slave device's mapped address region on the bus interconnect 110.
The masters M0, M1 and slaves S0-S3 in the data processing system 100 might be running at different frequencies and/or utilizing different protocols, as is often the case. Hence, a transaction that starts from a given master and ends at a corresponding slave or slaves running a different protocol relative to the master will require various transformation phases when an access is initiated by the master. The bus interconnect 110 routes transactions based at least in part on the slave address space as per a system memory map. Any address space not occupied by the slaves is generally allocated as reserved space, and any accesses to such reserved spaces are directed to a “dummy slave” device for response (e.g., generating an error message, etc.). The dummy slave generates a fixed response to the master which is not controllable using a standard bus interconnect architecture.
By way of illustration only and without loss of generality,
With reference now to
The bus interconnect 316 includes, by way of illustration only, an Advanced eXtensible Interface (AXI) slave interface module 318, an Advanced High-performance Bus (AHB) slave interface module 320 and an APB slave interface module 322 each operatively coupled with one or more of an AXI master interface module 324, an AHB master interface module 326, an APB master interface module 328 and a dummy APB master interface module 330, as shown by dotted lines indicative of respective data paths. From the standpoint of the bus interconnect, modules 318, 320 and 322 are referred to herein as “slave interface modules,” since they act as slaves for the corresponding master units 302, 304 and 306, respectively, with which they communicate. Likewise, modules 324, 326, 328 and 330 are referred to herein as “master interface modules,” since they act as masters for the corresponding slave units 308, 310, 312 and 314, respectively, with which they communicate. While reference is made herein to certain protocols, including, for example, APB, AXI, AHB, it is to be appreciated that embodiments of the invention are not limited to these or any specific protocols; rather, embodiments of the invention are well-suited for use with any programmable interface.
The AXI slave interface module 318 is operative essentially as a port for communicating with corresponding processor 302. Likewise, the AHB slave interface module 320 is operative as a port for communicating with corresponding DMA controller 304, the APB slave interface module 322 is operative for communicating with corresponding APB master unit 306, the AXI master interface module 324 is operative as a port for communicating with corresponding slave peripheral 308, the AHB master interface module 326 is operative as a port for communicating with corresponding slave peripheral 310, the APB master interface module 328 is operative as a port for communicating with corresponding slave peripheral 312, and the dummy APB master interface module 330 is operative as a port for communicating with corresponding dummy slave unit 314. An APB port 332 in the bus interconnect 316 provides access for configuring the bus interconnect.
As previously stated, one or more of the masters 302, 304, 306 and slaves 308, 310, 312, 314 in the system 300 might support different operating parameters relative to one another, such as, for example, utilizing different operating frequencies, communication protocols, data bus widths, data transmission rates, etc. Consequently, a data path from a given master to a corresponding slave might go through multiple translation phases to handle the various protocols, frequencies, data widths, etc., across the interconnect interfaces.
By way of illustration only, translation phases associated with a transaction between a given master unit and a corresponding slave unit might be represented as follows: master output→slave interface of interconnect→data width conversion→protocol conversion→frequency conversion→master interface of interconnect→slave input. In
The particular cross-hatch pattern assigned to each of the slave units 308, 310, 312, 314 depicted in
For example, each of the four external dummy slave units 314 are adapted to respond differently to address regions 3, 6, 12 and 15 (see
write ignore with okay response; read return zero with okay response
write ignore with error response; read return invalid data with error response
read only region slave access error
error on opcode fetch from this region
The type of response generated depends on the interconnect design/configuration, but it remains fixed for all master accesses such as, for example, in the case of an unused address space for decode error generation.
In some applications, a master device may expect an “okay” response for a particular reserved space access, with an error response for another reserved space access. Furthermore, this dummy slave implementation employed by the system 300 does not provide flexibility if varied responses are needed for different masters. For example, if region 2 (address range 0x0000—8000-0x0000—9FFF in
When a valid address space with a predictable response is desired, dummy slaves must be instantiated with the desired capability. A workaround to this problem is to add different dummy slaves with different response types based on the system memory map. However, the interconnect architecture in system 300, which only allows varying responses through the addition of customized slave blocks (e.g., dummy slave blocks 314), significantly increases integrated circuit area utilization and impacts performance of the system proportional to the complexity of the slave protocol employed. Moreover, the required additional interconnect congestion, as well as increased power consumption, attributable to the added slave blocks will further degrade system performance.
The bus interconnect 408 comprises a plurality of interface modules, including, by way of illustration only, an AXI slave interface module 410, an AHB slave interface module 412 and an APB slave interface module 414, each operatively coupled with one or more of an AXI master interface module 416, an AHB master interface module 418 and an APB master interface module 420, as shown by dotted lines indicative of respective data paths. From the standpoint of the bus interconnect 408, modules 410, 412 and 414 are referred to herein as “slave interface modules,” since they act as slaves for the corresponding master units 302, 304 and 306, respectively, with which they communicate. Likewise, modules 416, 418 and 420 are referred to herein as “master interface modules,” since they act as masters for the corresponding slave units 402, 404 and 406, respectively, with which they communicate. While reference is made herein to certain protocols, including, for example, APB, AXI and AHB, it is to be appreciated that embodiments of the invention are not limited to these or any particular protocols; rather, embodiments of the invention are well-suited for use with any programmable interface.
The AXI slave interface module 410 is operative as a port for communicating with corresponding processor 302. Likewise, the AHB slave interface module 412 is operative as a port for communicating with corresponding DMA controller 304, the APB slave interface module 414 is operative for communicating with corresponding APB master unit 306, the AXI master interface module 416 is operative as a port for communicating with corresponding slave peripheral 402, the AHB master interface module 418 is operative as a port for communicating with corresponding slave peripheral 404, and the APB master interface module 420 is operative as a port for communicating with corresponding slave peripheral 406. It is to be understood that embodiments of the invention are not limited to any specific number or type of interface modules included in the bus interconnect 408.
A plurality of translation modules 421 are included in the bus interconnect 408. Each of the translation modules 421 is connected in a corresponding master-slave interface path between a given master interface module and a given slave interface module. More particularly, the translation modules 421 reside in one or more data/control paths between slave interface modules (e.g., 410, 412, 414) and master interface modules (e.g., 416, 418, 420) within the bus interconnect 408. For example, a first of the translation modules 421 resides between the AXI slave interface module 410 and the AHB master interface module 418, a second of the translation modules 421 resides between the AXI slave interface module 410 and the APB master interface module 420, and a third of the translation modules 421 resides between the AHB slave interface module 412 and the APB master interface module 420.
Each translation module 421 is operative to perform a translation (e.g., protocol or other data translation) corresponding to the particular master-slave interface path in which the translation module is connected. For example, a translation module 421 utilized in the data/control path between the AXI slave interface module 410 and the AHB master interface module 418 is operative to perform data translation between an AXI protocol and an AHB protocol. Thus, the translation module 421 can be thought of as a composite representation of multiple functions, including, but not limited to, protocol conversion, data width conversation, frequency translation, clock domain translation, etc., as required by the corresponding master and slave interface paths. For a data/control path between a slave interface module and a master interface module utilizing the same or compatible protocols (e.g., between modules 410 and 416, or between modules 414 and 420), no translation module is required.
The bus interconnect 408 comprises a configurable response module 422 which includes a set of registers 424, referred to herein as configurable response registers, which are configurable (i.e., programmable) to generate different response types for each associated address region. In an alternative embodiment, each of at least a subset of the address regions is divided into a plurality of sub-regions, with each of the sub-regions of the address space having a corresponding response associated therewith. Moreover, each register may be associated with multiple regions and/or sub-regions of the system address space. The bus interconnect 408 is thus able to support multiple response types without the need for adding customized dummy slave units for the different response types and/or translation modules, with such functions being handled through the configurable response module 422. The configurable registers 424 are programmed using a programming interface, such as, for example, an APB port 426, or other low-bandwidth slave interface, in the configurable response module 422. The APB port 426 may be used to control other programmable parameters and configurations in the bus interconnect 408 as well, including, but not limited to, quality of service (QoS) parameters, arbitration schemes, etc. At least a subset of the configurable responses generated by the configurable response module 422 can be dynamically changed by programming (e.g., by a user via the APB port 426) at least one of the registers 424 or one or more bit fields associated with each of the registers.
By incorporating configurable response registers 424 in the bus interconnect 408, the dummy slave APB interface module 330 shown in
Whenever a master accesses a reserved memory space (e.g., Reserved space 1—Region 3 in the illustrative mapping shown in
With reference to
Embodiments of the invention can employ hardware, software, or hardware and software aspects. Software includes but is not limited to firmware, resident software, microcode, etc. One or more embodiments of the invention or portions thereof may be implemented in the form of an article of manufacture including a machine readable medium that contains one or more programs which when executed implement method step(s) used to perform at least portions of embodiments of the invention; that is to say, a computer program product including a tangible computer readable recordable storage medium (or multiple such media) with computer usable program code stored thereon in a non-transitory manner for performing one or more of the method steps indicated. Furthermore, one or more embodiments of the invention or elements thereof can be implemented in the form of an apparatus including a memory and at least one processor (e.g., master device) coupled with the memory and operative to perform, or facilitate the performance of, exemplary method steps.
As used herein, “facilitating” an action includes performing the action, making the action easier, helping to carry out the action, or causing the action to be performed. Thus, by way of example only and not limitation, instructions executing on one processor might facilitate an action carried out by instructions executing on a remote processor, by sending appropriate data or commands to cause or aid the action to be performed. For the avoidance of doubt, where an actor facilitates an action by other than performing the action, the action is nevertheless performed by some entity or combination of entities.
Yet further, in another aspect, one or more embodiments of the invention or elements thereof can be implemented in the form of means for carrying out one or more of the method steps described herein; the means can include (i) hardware module(s), (ii) software module(s) executing on one or more hardware processors, or (iii) a combination of hardware and software modules; any of (i)-(iii) implement the specific techniques set forth herein, and the software modules are stored in a tangible computer-readable recordable storage medium (or multiple such media). Appropriate interconnections via bus, network, and the like can also be included.
Embodiments of the invention may be particularly well-suited for use in an electronic device or alternative system (e.g., multiprocessor systems, multilayer and multilevel interconnect systems, memory storage systems, etc.). For example,
It is to be appreciated that the term “processor” as used herein is intended to include any processing device, such as, for example, one that includes a central processing unit (CPU) and/or other processing circuitry (e.g., network processor, microprocessor, digital signal processor, etc.). Additionally, it is to be understood that a processor may refer to more than one processing device, and that various elements associated with a processing device may be shared by other processing devices. The term “memory” as used herein is intended to include memory and other computer-readable media associated with a processor or CPU, such as, for example, RAM, read only memory (ROM), fixed storage media (e.g., a hard drive), removable storage media (e.g., a diskette), flash memory, etc. Furthermore, the term “I/O circuitry” as used herein is intended to include, for example, one or more input devices (e.g., keyboard, mouse, etc.) for entering data to the processor, and/or one or more output devices (e.g., display, etc.) for presenting results associated with the processor.
Accordingly, an application program, or software components thereof, including instructions or code for performing methodologies according to embodiments of the invention, as described herein, may be stored in a non-transitory manner in one or more of the associated storage media (e.g., ROM, fixed or removable storage) and, when ready to be utilized, loaded in whole or in part (e.g., into RAM) and executed by the processor. In any case, it is to be appreciated that at least a portion of the components shown in the previous figures may be implemented in various forms of hardware, software, or combinations thereof (e.g., one or more microprocessors with associated memory, application-specific integrated circuit(s) (ASICs), functional circuitry, one or more operatively programmed general purpose digital computers with associated memory, etc). Given the teachings of the embodiments of the invention provided herein, one of ordinary skill in the art will be able to contemplate other implementations of the embodiments of the invention.
At least a portion of the embodiments of the invention may be implemented in an integrated circuit. In forming integrated circuits, identical die are typically fabricated in a repeated pattern on a surface of a semiconductor wafer. Each die includes a device described herein, and may include other structures and/or circuits. The individual die are cut or diced from the wafer, then packaged as an integrated circuit. One skilled in the art would know how to dice wafers and package die to produce integrated circuits. Integrated circuits so manufactured are considered part of this invention.
An integrated circuit in accordance with embodiments of the invention can be employed in essentially any application and/or electronic system in which multiple processors or a bus interconnect may be employed. Suitable systems for implementing techniques of embodiments of the invention may include, but are not limited to, servers, personal computers, data storage networks, etc. Systems incorporating such integrated circuits are considered part of embodiments of the invention. Given the teachings of embodiments of the invention provided herein, one of ordinary skill in the art will be able to contemplate other implementations and applications of the techniques of embodiments of the invention.
The illustrations of embodiments of the invention described herein are intended to provide a general understanding of the structure of various embodiments, and they are not intended to serve as a complete description of all the elements and features of apparatus and systems that might make use of the structures described herein. Many other embodiments will become apparent to those skilled in the art given the teachings herein; other embodiments are utilized and derived therefrom, such that structural and logical substitutions and changes can be made without departing from the scope of this disclosure. The drawings are also merely representational and are not drawn to scale. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
Embodiments of the inventive subject matter are referred to herein, individually and/or collectively, by the term “embodiment” merely for convenience and without intending to limit the scope of this application to any single embodiment or inventive concept if more than one is, in fact, shown. Thus, although specific embodiments have been illustrated and described herein, it should be understood that an arrangement achieving the same purpose can be substituted for the specific embodiment(s) shown; that is, this disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will become apparent to those of skill in the art given the teachings herein.
The abstract is provided to comply with 37 C.F.R. §1.72(b), which requires an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the appended claims reflect, inventive subject matter lies in less than all features of a single embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as separately claimed subject matter.
Given the teachings of embodiments of the invention provided herein, one of ordinary skill in the art will be able to contemplate other implementations and applications of the techniques of embodiments of the invention. Although illustrative embodiments of the invention have been described herein with reference to the accompanying drawings, it is to be understood that embodiments of the invention are not limited to those precise embodiments, and that various other changes and modifications are made therein by one skilled in the art without departing from the scope of the appended claims.