Embodiments of the present disclosure relate to processing core and L2 cache connection, and more particularly, to transparent processing core and L2 cache connection.
A system on a chip (SOC) generally includes at least one processing core, which generally is operatively coupled to a level 2 (L2) memory cache. Various core bus agents included in the processing core, the L2 cache, and various other components of the SOC are usually interconnected through a bus interface unit (BIU). However, the L2 cache may have a bandwidth and a frequency requirement that is different from one or more other components of the SOC. For example, the L2 cache may operate on a clock signal that has a different frequency compared to a frequency of a clock signal of the processing core. Such differences in the bandwidth and/or frequency requirement between the L2 cache and other components accessing the BIU may create additional challenges while designing the SOC.
The description in this section is related art, and does not necessarily include information disclosed under 37 C.F.R. 1.97 and 37 C.F.R. 1.98. Unless specifically denoted as prior art, it is not admitted that any description of related art is prior art.
In an embodiment, the present disclosure provides a system on a chip (SOC) comprising a processing core including a core bus agent, a bus interface unit (BIU); and a bridge module operatively coupling the processing core to the BIU, the bridge module configured to selectively route information from the core bus agent to a cache or to the BIU by bypassing the cache. In an embodiment, the bridge module imitates a role of the BIU to the core bus agent, and the bridge module imitates a role of the core bus agent to the BIU. The bridge module is further configured to selectively route information from the core bus agent to the cache, at least if the cache is present in the SOC and if the information is cacheable, and selectively route information from the core bus agent to the BIU by bypassing the cache, at least if the cache is not present in the SOC or if the information is non-cacheable. In an embodiment, the bridge module is further configured to selectively route information from the BIU to the cache, at least if the cache is present in the SOC and if the information is cacheable. The bridge module is further configured to selectively route information from the BIU to the core bus agent, at least if the cache is not present in the SOC, if the information is received based on a cache miss command, or if the information is non-cacheable. The bridge module is further configured to selectively route information from the BIU to the cache, at least if the cache is present in the SOC and if the information is received based on a pre-fetch command of the cache, and refrain from routing information from the BIU to the processing core, at least if the information is received based on a pre-fetch command of the cache.
In an embodiment, the bridge module comprises a first bridge unit and a second bridge unit, the first bridge unit including a first module and the second bridge unit including a second module, the second module including a multiplexer, the first module configured to receive information from the core bus agent, and selectively route received information from the core bus agent to the multiplexer and/or to the cache. The second module is configured to receive information from the first bridge unit and/or the cache, and multiplex received information from the first bridge unit and/or the cache to the BIU. In an embodiment, the core bus agent is a first core bus agent, the SOC further comprising a second core bus agent configured to directly trans-receive information with the BIU, bypassing the bridge module. The first core bus agent may be one of an instruction cache and an information cache, the second core bus agent may be a memory management unit, and the cache may be a level 2 (L2) cache. The cache is clocked by a first clock signal having a first frequency that is different from a second frequency of a second clock signal that clocks the core bus agent.
There is also provided a method of operating a system on a chip (SOC) comprising a processing core and a bridge module, the processing core including a bus agent, the method comprising receiving, by the bridge module, information from the bus agent, and selectively routing, by the bridge module, information received from the bus agent to a cache or to a bus interface unit (BIU) included in the SOC. The selectively routing information received from the bus agent further comprises selectively routing information received from the bus agent to the cache at least if the cache is operatively coupled to the bridge module and if the information received from the bus agent is cacheable; and selectively routing information received from the bus agent to the BIU included in the SOC at least if the cache is not operatively coupled to the bridge module or if the information received from the bus agent is not cacheable.
In an embodiment, the method further comprises receiving, by the bridge module, information from the BIU; selectively routing, by the bridge module, information received from the BIU to the cache at least if the cache is present in the SOC and if the information received from the BIU is cacheable; and selectively routing, by the bridge module, information received from the BIU to the bus agent at least if the cache is not present in the SOC, if the information is received based on a cache miss command, or if the received information is not cacheable. The method further comprises receiving, by the bridge module, information from the cache; and selectively routing, by the bridge module, information received from the cache to the bus agent or to the BIU based at least in part on an intended recipient of the information.
In an embodiment, the bus agent is a first bus agent, wherein the processing core includes a second bus agent, the method further comprising directly trans-receiving information between the second bus agent and the BIU, bypassing the bridge module.
There is also provided a system on a chip (SOC) comprising a processing core including a core bus agent; and a bridge module comprising a first bridge unit and a second bridge unit, the first bridge unit including a first module, the second bridge unit including a second module, wherein the first module is configured to receive information from the core bus agent; and selectively route received information from the core bus agent to a level 2 (L2) cache at least if the L2 cache is operatively coupled to the bridge module and if the received information from the core bus agent is cacheable. The first module is further configured to selectively route received information from the core bus agent to the second module at least if a L2 cache is not operatively coupled to the bridge module or if the received information from the core bus agent is non-cacheable; and wherein the second module is configured to selectively route information received from the first module and/or from the cache to a bus interface unit (BIU). The SOC further comprises a bus interface unit (BIU), wherein the second module is configured to receive information from the BIU; and selectively route received information from the BIU to the first module and/or to the L2 cache.
Embodiments of the present disclosure will be readily understood by the following detailed description in conjunction with the accompanying drawings. To facilitate this description, like reference numerals designate like structural elements. Embodiments of the disclosure are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings.
a schematically illustrates a system on a chip (SOC), in accordance with an embodiment of the present disclosure;
b schematically illustrates another SOC, in accordance with an embodiment of the present disclosure;
a schematically illustrates the SOC of
b schematically illustrates the SOC of
a-3d illustrate methods for operating the SOCs of
a schematically illustrates a highly simplified system on a chip (SOC) 100, in accordance with an embodiment of the present disclosure. The SOC 100 includes one or more processing cores, including processing core 104. Only one processing core is shown for the sake of simplicity and to avoid obfuscating teaching principles of the present disclosure. The SOC 100 also includes a bus interface unit (BIU) 184 configured to operatively couple one or more components of the processing core 104 with one or more other components of the SOC 100.
The processing core 104 includes a memory management unit (MMU) 108, an instruction cache (IC) 112, a data cache 116, and a write buffer (WB) 120. In an embodiment, the MMU 108 manages one or more memory units (e.g., one or more memory units included in the SOC 100 and/or external to the SOC 100, not illustrated in
For the purpose of this disclosure and unless otherwise mentioned, instructions and data refer to different types of information. For example, instructions refer to information that is received, transmitted, cached, accessed, and/or otherwise associated with the instruction cache IC 112, whereas data refers to information that is received, transmitted, cached, accessed, and/or otherwise associated with the data cache DC 116 of the processing core 104. For the purpose of this disclosure and unless otherwise mentioned, information refers to data bits that represent instructions and/or data. Thus, a component of the SOC 100 receiving information implies that the component receives one or more data bits that represent data and/or instructions.
In an embodiment, the MMU 108, IC 112, DC 116 and/or WB 120 interfaces (e.g., transfers information. i.e., transfers data and/or instructions) with one or more other components of the SOC 100 through the BIU 184. That is, the MMU 108, IC 112, DC 116 and/or WB 120 access the BIU 184. Accordingly, the MMU 108, IC 112, DC 116 and/or WB 120 acts as bus agents for the BIU 184. As the MMU 108, IC 112, DC 116 and/or WB 120 are included in a processing core, the MMU 108, IC 112, DC 116 and/or WB 120 are also referred to herein as core bus agents. In an embodiment, one or more of these core bus agents acts as a master to the BIU 184. Although only four core bus agents are illustrated as included in the processing core 104, in an embodiment, the processing core 104 may include any other suitable number of core bus agents as well.
In an embodiment, the SOC 100 also includes a cache 130, which is, for example, a level 2 (L2) cache. In an embodiment, the cache 130 operates on a clock signal that has a different frequency compared to a frequency of a clock signal of the processing core 104 and/or a frequency of a clock signal of the BIU 184.
Referring again to
In an embodiment, a level 2 cache (e.g., the cache 130) is not included in the SOC 100. In another embodiment, a level 2 cache (e.g., the cache 130) is included in the SOC 100, but not coupled to the bridge module 125. For example,
In an embodiment, the first bridge unit 140 comprises a first bridge IC module 152 operatively coupled to the IC 112 of the processing core 104. The first bridge IC module 152 is also operatively coupled to an input of a multiplexer (Mux) 172 included in a second bridge IC module 182 of the second bridge unit 142. The first bridge IC module 152 is also operatively coupled to a core instruction port of the cache 130. The cache 130 is operatively coupled to another input of the Mux 172. An output of the Mux 172 is operatively coupled to the BIU 184.
The IC 112 communicates with the BIU 184 and/or the cache 130 through the first bridge IC module 152 and/or the second bridge IC module 182. For example, the first bridge IC module 152 receives information (e.g., one or more instructions or codes) from IC 112. The first bridge IC module 152 selectively transmits the received information to the Mux 172 and/or to the core instruction port of the cache 130 based on various factors, including but not limited to, nature of information (e.g., cacheable or non-cacheable information), status of the cache 130 (e.g., whether the cache 130 is present and/or enabled), and/or the like.
For example, in an embodiment, the first bridge IC module 152 transmits the received information to the cache 130 at least in case the cache 130 is present in the SOC 100, is enabled, and the received information is cacheable (e.g., it is desirable to write the received information in the cache 130, or the received information is configured to be written to the cache 130). In another embodiment, information received by the first bridge IC module 152, from IC 112, is transmitted to the Mux 172 (for transmitting to the BIU 184) at least if the cache 130 is not present in the SOC 100 (e.g., as illustrated in
Referring again to
In operation, the DC 116 communicates with the BIU 184 and/or the cache 130 through the first bridge DC module 156 and/or the second bridge DC module 186. For example, the first bridge DC module 156 receives information (e.g., data) from DC 116. The first bridge DC module 156 selectively transmits the received information to the Mux 176 and/or the cache 130, based on various factors, including but not limited to, nature of information (e.g., cacheable or non-cacheable information), status of the cache 130 (e.g., whether the cache 130 is present and/or enabled), and/or the like.
For example, in an embodiment, the first bridge DC module 156 transmits the received information to the cache 130 at least in case the cache 130 is present in the SOC 100, is enabled, and the received information is cacheable. In another embodiment, information received by the first bridge DC module 156 from DC 116, is transmitted to the Mux 176 in case the cache 130 is not present in the SOC 100 (e.g., as illustrated in
Referring again to
The first bridge WB module 160 operates at least in part similarly to the corresponding first bridge IC module 152 and first bridge DC module 156. For example, the first bridge WB module 160 receives information from WB 120, and transmits the received information to the Mux 180 and/or the cache 130 based on various factors, including but not limited to, nature of information, status of the cache 130, and/or the like.
For example, the first bridge WB module 160 transmits the received information to the cache 130 in case the cache 130 is present in the SOC 100, is enabled, and the received information is cacheable. On the other hand, information received by the first bridge WB module 160 from WB 120 is transmitted to the Mux 190 in case the cache 130 is not present in the SOC 100 (e.g., as illustrated in
The bridge module 125, thus, receives information from one or more of the core bus agents, and routes information to appropriate destination (e.g., to the BIU 184 and/or to the cache 130) based on, for example, nature of received information, status of the cache 130, and/or the like. The bridge module 125 also receives information from the BIU 184 (discussed herein later in more detail), and transmits the received information to the one or more of the core bus agents and/or the cache 130 based on, for example, nature of received information, original requester of the received information, status of the cache 130, and/or the like. The bridge module 125 also receives information from the cache 130 (discussed herein later in more detail), and transmits the received information to the one or more of the core bus agents and/or the BIU 184 based on, for example, nature of received information, status of the cache 130, and/or the like.
In an embodiment, information trans-received (e.g., transmitted and/or received) by the MMU 108 is non-cacheable. Accordingly, in
In
As previously discussed, in an embodiment, a level 2 cache (e.g., the cache 130) may not included in the SOC 100 (or may be included in the SOC 100, but not coupled to the bridge module 125), as illustrated in
a illustrates the SOC 100, however some of the components of the SOC 100 are not illustrated in
Referring again to
For example, information received by the second bridge IC module 182 is transmitted directly to the first bridge IC module 152 (e.g., by bypassing the cache 130) if the information is non-cacheable, if the cache 130 is not present in the SOC (e.g., as illustrated in
Also, the cache 130 (e.g., using the core Instruction port) transmits information to the IC 112 through the first bridge IC module 152. Thus, the first bridge IC module 152 receives information from the second bridge IC module 182 and/or from the cache 130, and selectively transmits the received information to the IC 112.
Referring again to
For example, in an embodiment, information received by the second bridge DC module 186 is transmitted directly to the first bridge DC module 156 (e.g., by bypassing the cache 130) if the information is non-cacheable, if the cache 130 is not present in the SOC (e.g., as illustrated in
Also, the cache 130 (e.g., using the core data port) transmits information to the DC 116 through the first bridge DC module 156. Thus, the first bridge DC module 156 receives information from the second bridge DC module 186 and/or from the cache 130, and selectively transmits the received information to the DC 116.
As previously discussed, the WB 120 buffers information to be written by the processing core 104 to, for example, a memory, a cache (e.g., cache 130), and/or any other component included in (or external to) the SOC 100. Accordingly, the WB 120 receives information from one or more components of the processing core 104, and transmits the received information to one or more other components of the SOC 100. However, in an embodiment, the WB 120 does not receive information directly from, for example, the BIU 184 and/or the cache 130. Accordingly,
Also, as previously discussed, information trans-received (e.g., transmitted and/or received) by the MMU 108 may not be cacheable. Accordingly,
As previously discussed, in an embodiment, the respective frequencies of clock signals associated with the processing core 104, cache 130 and/or the BIU 184 are different. Also, in the embodiment the operating bandwidths of the processing core 104, cache 130 and/or the BIU 184 are also different. The bridge module 125 acts as a bridge between these components, thereby allowing seamless information transfer between processing core 104, cache 130 and/or the BIU 184, notwithstanding that each possibly has a different operating frequency and/or bandwidth requirement.
Also, the bridge module 125 allows the processing core 104 and the BIU 184 to operate irrespective of whether the cache 130 is present or absent in the SOC, irrespective of whether the cache 130 is operatively coupled to the bridge module 125, and irrespective of whether the cache 130 is on or off the same die as the SOC. In an embodiment, the bridge module 125 ensures that the design and operation of the processing core 104 and/or the BIU 184 remains, at least in part, unchanged irrespective of whether the cache 130 is present or absent in the SOC. The bridge module 125 essentially makes the cache 130 transparent to the processing core 104 and/or the BIU 184. For example, a core bus agent (e.g., the IC 112) may want to transmit information to the BIU 184. However, instead of the BIU 184, the information from IC 112 is received by the bridge module 125 (e.g., by the first bridge IC module 152). Based on one or more previously discussed criteria, the bridge module 125 selectively transmits information received from the processing core 104 to the BIU and/or the cache. However, the processing core 104 may not be aware of a presence or absence of the cache 130. Rather, the processing core 104 transmits information to the bridge module 125, assuming, for example, that it is transmitting information to the BIU 184. The bridge module 125 makes the cache 130 transparent to the processing core 104. The bridge module 125 also imitates the role of the BIU 184 to the processing core 104. In a similar manner, the bridge module 125 makes the cache 130 transparent to the BIU 184. Also, the bridge module 125 imitates the role of the processing core 104 to the BIU 184.
The bridge module 125 also makes itself transparent to the processing core 104 and the BIU 184. For example, if the bridge module 125 and the cache 130 is absent in the SOC 100, the processing core 104 connects directly to the BIU 184, and the operations (and configurations) of the processing core 104 and/or the BIU 184 remains unchanged. Both the cache 130 and the bridge module 125 are transparent to the processing core 104 and the BIU 184.
a illustrates a method 300a for operating the SOCs of
b illustrates another method 300b for operating the SOCs of
c illustrates another method 300c for operating the SOCs of
d illustrates another method 300d for operating the SOCs of
Although specific embodiments have been illustrated and described herein, based on the foregoing discussion it is appreciated by those of ordinary skill in the art and others, that a wide variety of alternate and/or equivalent implementations may be substituted for the specific embodiment illustrated and described without departing from the scope of the present disclosure. This present disclosure covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents. This application is intended to cover any adaptations or variations of the embodiment discussed herein. Therefore, it is manifested and intended that the disclosure be limited only by the claims and the equivalents thereof.
The present application claims priority to U.S. Provisional Patent Application No. 61/117,714 filed Nov. 25, 2008, entitled “Method for Transparent CPU and L2 Connection Through AHB-Lite Bus Interface,” the entire specification of which is hereby incorporated by reference in its entirety for all purposes, except for those sections, if any, that are inconsistent with this specification.
Number | Name | Date | Kind |
---|---|---|---|
4190885 | Joyce et al. | Feb 1980 | A |
5386503 | Staggs et al. | Jan 1995 | A |
5459840 | Isfeld et al. | Oct 1995 | A |
5623627 | Witt | Apr 1997 | A |
5625793 | Mirza | Apr 1997 | A |
5689670 | Luk | Nov 1997 | A |
6012134 | McInerney et al. | Jan 2000 | A |
6157981 | Blaner et al. | Dec 2000 | A |
6546461 | Au et al. | Apr 2003 | B1 |
6604174 | Dean et al. | Aug 2003 | B1 |
6918009 | Sato et al. | Jul 2005 | B1 |
6928451 | Mogi et al. | Aug 2005 | B2 |
7209996 | Kohn et al. | Apr 2007 | B2 |
7240160 | Hetherington et al. | Jul 2007 | B1 |
7574548 | Drapala et al. | Aug 2009 | B2 |
20010005871 | Shimoda et al. | Jun 2001 | A1 |
20040260872 | Depta | Dec 2004 | A1 |
20080046736 | Arimilli et al. | Feb 2008 | A1 |
20080313328 | Dahlin et al. | Dec 2008 | A1 |
Number | Date | Country | |
---|---|---|---|
61117714 | Nov 2008 | US |