Embodiments of the present disclosure provide a system on a chip (SOC) comprising a processing core, and a cache including a cache instruction port, a cache data port, and a port utilization circuitry configured to selectively fetch instructions through the cache instruction port and selectively pre-fetch instructions through the cache data port. Other embodiments are also described and claimed.
|
1. A system on a chip (SOC) comprising:
a processing core; and
a cache including:
a cache instruction port;
a cache data port; and
a port utilization circuitry configured to:
selectively fetch instructions through the cache instruction port; and
selectively pre-fetch instructions through only the cache data port; and
refrain from pre-fetching instructions through the cache instruction port.
13. A method for operating a system on a chip (SOC) comprising a processing core and a cache, the cache including a cache instruction port and a cache data port, the method comprising:
issuing a first request for fetching a first line of instruction through the cache instruction port; and
issuing a second request for pre-fetching a second line of instruction through only the cache data port; and
refraining from pre-fetching any line of instructions through the cache instruction port.
0. 36. A method for operating a system on a chip (SOC) comprising a processing core, the method comprising:
selectively fetching data via a first wired communication link;
selectively fetching instructions via a second wired communication link;
while instructions are not being fetched via the second wired communication link, selectively pre-fetching data via only the second wired communication link, the second wired communication link being coupled to a cache instruction port.
0. 21. A system on a chip (SOC) comprising:
a processing core;
a first wired communication link configured to selectively fetch data; and
a second wired communication link configured to (i) selectively fetch instructions, and (ii) selectively pre-fetch data while the second wired communication link is not fetching instructions, the second wired communication link being coupled to a cache instruction port, wherein the cache instruction port pre-fetches data through only the cache instruction port via the second wired communication link.
2. The SOC of
3. The SOC of
issue a first request for fetching a first line of instruction, the first request transmitted through the cache instruction port;
determine that the cache data port is not currently being used to fetch data; and
issue, based on determining that the cache data port is not currently being used to fetch data, a second request for pre-fetching a second line of instruction, the second request transmitted through the cache data port.
4. The SOC of
issue a third request for fetching a first line of data, the third request transmitted through the cache data port;
determine that the cache instruction port is not currently being used to fetch instructions; and
issue, based on determining that the cache instruction port is not currently being used to fetch instructions, a fourth request for pre-fetching a second line of data, the fourth request transmitted through the cache instruction port.
5. The SOC of
transmit the first request for fetching the first line of instruction from the cache instruction port to a memory;
receive, from the memory, the first line of instruction in response to transmitting the first request to the memory; and
transmit the received first line of instruction to the cache instruction port and the processing core.
6. The SOC of
transmit the second request for pre-fetching the second line of instruction from the cache data port to the a memory;
receive, from the memory, the second line of instruction in response to transmitting the second request to the memory; and
transmit the received second line of instruction only to the cache data port; and
refrain from transmitting the second line of instruction to the processing core.
7. The SOC of
transmit the first request for fetching the first line of instruction from the cache instruction port to a memory;
receive, from the memory, the first line of instruction in response to transmitting the first request to the memory; and
transmit the received first line of instruction to the cache instruction port and the processing core.
8. The SOC of
transmit the second request for pre-fetching the second line of instruction from the cache data port to the memory;
receive, from the memory, the second line of instruction in response to transmitting the second request to the memory; and
transmit the received second line of instruction only to the cache data port; and
refrain from transmitting the second line of instruction to the processing core.
9. The SOC of
a cache instruction logic module including an instruction read port and an instruction pre-fetch port;
a cache data logic module including a data read port and a data pre-fetch port;
a first multiplexer module configured to selectively connect the instruction read port and the data pre-fetch port to the cache instruction port; and
a second multiplexer module configured to selectively connect the data read port and the instruction fetch port to the cache data port.
10. The SOC of
issue a first request for fetching a first line of instruction, the first request transmitted through the instruction read port, the first multiplexer, and the cache instruction port;
determine, in response to issuing the first request, that the cache data port is not currently being used by the cache data logic module; and
issue, based on determining that the cache data port is not currently being used by the cache data logic module, a second request for pre-fetching a second line of instruction, the second request transmitted through the instruction pre-fetch port, the second multiplexer, and the cache data port.
11. The SOC of
issue the first request for fetching the first line of instruction based on receiving a request from the processing core for instructions included in the first line of instruction;
anticipate the processing core will request instructions included in the second line of instruction, based at least in part on receiving the said request for instructions from the processing core for instructions; and
issue the second request for pre-fetching the second line of instruction based at least in part on said anticipation.
12. The SOC of
receive, from the processing core, a request for data from the processing core;
issue a third request for fetching a first line of data such that the data requested by the processing core is included in the first line of data, wherein the third request is transmitted through the data read port, the second multiplexer, and the cache data port;
determine that the cache instruction port is not currently being used by the cache instruction logic module; and
issue, based on determining that the cache instruction port is not currently being used by the cache instruction logic module, a fourth request for pre-fetching a second line of data, the fourth request transmitted through the data pre-fetch port, the first multiplexer, and the cache instruction port.
14. The method of
determining, in response to issuing the first request, that the cache data port is not currently being used by the cache; and
issuing the second request based on determining that the cache data port is not currently being used by the cache.
15. The method of
wherein issuing the first request further comprises:
issuing the first request, by the cache instruction logic module, through the instruction read port, the first multiplexer and the cache instruction port; and
wherein issuing the second request further comprises:
issuing the second request, by the cache instruction logic module, through the instruction pre-fetch port, the second multiplexer and the cache data port.
16. The method of
issuing a third request for fetching a first line of data through the cache data port; and
issuing a fourth request for pre-fetching a second line of data through the cache instruction port.
17. The method of
transmitting, by the bridge module, the first request for fetching the first line of instruction from the cache instruction port to a memory;
receiving, by the bridge module from the memory, the first line of instruction in response to transmitting the first request to the memory; and
transmitting the received first line of instruction to the cache instruction port and the processing core.
18. The method of
transmitting, by the bridge module, the second request for pre-fetching the second line of instruction from the cache data port to a memory;
receiving, by the bridge module from the memory, the second line of instruction in response to transmitting the second request to the memory; and
transmitting, by the bridge module, the received second line of instruction to the cache data port.
0. 19. The method of
refraining, by the bridge module, from transmitting the second line of instruction to the processing core.
20. The method of
issuing the first request and the second request substantially simultaneously or in an over-lapping manner.
0. 22. The SOC of claim 21, wherein the first wired communication link is further configured to selectively pre-fetch instructions while the first wired communication link is not fetching data.
0. 23. The SOC of claim 21, further comprising:
a cache comprising (i) a cache data port, the first wired communication link being coupled to the cache data port, and (ii) the cache instruction port.
0. 24. The SOC of claim 23, wherein the cache further comprises:
a port utilization circuitry configured to control the cache such that
(A) the cache data port selectively fetches data via the first wired communication link, and
(B) the cache instruction port (i) selectively fetches instructions via the second wired communication link, and (ii) selectively pre-fetches data via the second wired communication link, while the second wired communication link is not selectively fetching instructions.
0. 25. The SOC of claim 24, wherein the port utilization circuitry is further configured to control the cache such that (A) the cache data port selectively fetches data via the first wired communication link and (B) the cache instruction port selectively pre-fetches data via the second wired communication link.
0. 26. The SOC of claim 24, wherein the port utilization circuitry is configured to:
issue a first request for fetching a first line of instruction, the first request transmitted through the cache instruction port and the second wired communication link;
determine that the cache data port is not currently being used to fetch data; and
issue, based on determining that the cache data port is not currently being used to fetch data, a second request for pre-fetching a second line of instruction, the second request transmitted through the cache data port and the first wired communication link.
0. 27. The SOC of claim 26, wherein the port utilization circuitry is further configured to:
issue a third request for fetching a first line of data, the third request transmitted through the cache data port and the first wired communication link;
determine that the cache instruction port is not currently being used to fetch instructions; and
issue, based on determining that the cache instruction port is not currently being used to fetch instructions, a fourth request for pre-fetching a second line of data, the fourth request transmitted through the cache instruction port and the second wired communication link.
0. 28. The SOC of claim 27, further comprising a bridge module configured to:
transmit the first request for fetching the first line of instruction from the cache instruction port to a memory;
receive, from the memory, the first line of instruction in response to transmitting the first request to the memory; and
transmit the received first line of instruction to the cache instruction port and the processing core.
0. 29. The SOC of claim 27, further comprising a bridge module configured to:
transmit the second request for pre-fetching the second line of instruction from the cache data port to the memory;
receive, from the memory, the second line of instruction in response to transmitting the second request to the memory; and
transmit the received second line of instruction only to the cache data port.
0. 30. The SOC of claim 27, further comprising a bridge module including a bridge instruction module and a bridge data module, wherein the bridge instruction module is operatively coupled to the cache instruction port, the bridge instruction module configured to:
transmit the first request for fetching the first line of instruction from the cache instruction port to a memory;
receive, from the memory, the first line of instruction in response to transmitting the first request to the memory; and
transmit the received first line of instruction to the cache instruction port and to the processing core.
0. 31. The SOC of claim 30, wherein the bridge data module is operatively coupled to the cache data port, the bridge data module configured to:
transmit the second request for pre-fetching the second line of instruction from the cache data port to the memory;
receive, from the memory, the second line of instruction in response to transmitting the second request to the memory; and
transmit the received second line of instruction only to the cache data port.
0. 32. The SOC of claim 24, wherein the port utilization circuitry comprises:
a cache instruction logic module including an instruction read port and an instruction pre-fetch port;
a cache data logic module including a data read port and a data pre-fetch port;
a first multiplexer module configured to selectively connect the instruction read port and the data pre-fetch port to the cache instruction port; and
a second multiplexer module configured to selectively connect the data read port and the instruction fetch port to the cache data port.
0. 33. The SOC of claim 32, wherein the cache instruction logic module is configured to:
issue a first request for fetching a first line of instruction, the first request transmitted through the instruction read port, the first multiplexer, the cache instruction port, and the second wired communication link;
determine, in response to issuing the first request, that the cache data port is not currently being used by the cache data logic module; and
issue, based on determining that the cache data port is not currently being used by the cache data logic module, a second request for pre-fetching a second line of instruction, the second request transmitted through the instruction pre-fetch port, the second multiplexer, the cache data port, and the first wired communication link.
0. 34. The SOC of claim 33, wherein the cache instruction logic module is configured to:
issue the first request for fetching the first line of instruction based on receiving a request from the processing core for instructions included in the first line of instruction;
anticipate the processing core will request instructions included in the second line of instruction, based at least in part on receiving the request for instructions from the processing core; and
issue the second request for pre-fetching the second line of instruction based at least in part on said anticipation.
0. 35. The SOC of claim 33, wherein the cache data logic module is configured to:
receive a request for data from the processing core;
issue a third request for fetching a first line of data such that the data requested by the processing core is included in the first line of data, wherein the third request is transmitted through the data read port, the second multiplexer, the cache data port, and the first wired communication link;
determine that the cache instruction port is not currently being used by the cache instruction logic module; and
issue, based on determining that the cache instruction port is not currently being used by the cache instruction logic module, a fourth request for pre-fetching a second line of data, the fourth request transmitted through the data pre-fetch port, the first multiplexer, the cache instruction port, and the second wired communication link.
0. 37. The method of claim 36, further comprising:
while data are not being fetched via the first wired communication link, selectively pre-fetching instructions via the first wired communication link.
0. 38. The method of claim 36, wherein the SOC comprises a cache, the cache including a cache instruction port and a cache data port, the method further comprising:
issuing a first request for fetching a first line of instruction through the cache instruction port and the second wired communication link;
issuing a second request for pre-fetching a second line of instruction through only the cache data port and the first wired communication link.
0. 39. The method of claim 38, wherein issuing the second request further comprises:
determining, in response to issuing the first request, that the cache data port is not currently being used by the cache; and
issuing the second request based on determining that the cache data port is not currently being used by the cache.
0. 40. The method of claim 38, wherein the cache includes a cache instruction logic module, a cache data logic module, a first multiplexer and a second multiplexer, wherein the cache instruction logic module includes an instruction read port and an instruction pre-fetch port, and wherein the cache data logic module includes a data read port and a data pre-fetch port;
wherein issuing the first request further comprises:
issuing the first request, by the cache instruction logic module, through the instruction read port, the first multiplexer, the cache instruction port, and the second wired communication link; and
wherein issuing the second request further comprises:
issuing the second request, by the cache instruction logic module, through the instruction pre-fetch port, the second multiplexer, the cache data port, and the first wired communication link.
0. 41. The method of claim 38, further comprising:
issuing a third request for fetching a first line of data through the cache data port and the first wired communication link; and
issuing a fourth request for pre-fetching a second line of data through the cache instruction port and the second wired communication link.
0. 42. The method of claim 38, wherein SOC further includes a bridge module, the method further comprising:
transmitting, by the bridge module, the first request for fetching the first line of instruction from the cache instruction port to a memory;
receiving, by the bridge module from the memory, the first line of instruction in response to transmitting the first request to the memory; and
transmitting the received first line of instruction to the cache instruction port and the processing core.
0. 43. The method of claim 38, wherein SOC further includes a bridge module, the method further comprising:
transmitting, by the bridge module, the second request for pre-fetching the second line of instruction from the cache data port to a memory;
receiving, by the bridge module from the memory, the second line of instruction in response to transmitting the second request to the memory; and
transmitting, by the bridge module, the received second line of instruction to the cache data port.
0. 44. The method of claim 38, further comprising:
issuing the first request and the second request substantially simultaneously or in an over-lapping manner.
|
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,
The SOC 100 also includes a memory 175 coupled to the BIU 184. The memory 175 may be of any appropriate type, e.g., an appropriate type of random access memory (RAM). Although illustrated to be a part of the SOC 100, in an embodiment, the memory 175 is external to the SOC 100 (although operatively coupled to the SOC 100, for example, via the BIU 184).
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 similar 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 be included in the SOC 100 (or may be included in the SOC 100, but not coupled to the bridge module 125), as illustrated in
Referring 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 (e.g., memory 175), 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 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 an 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.
The cache instruction logic module 412 includes an instruction read port 442a 442 and an instruction pre-fetch port 442b 443. The cache data logic module 416 includes a data read port 446a 446 and a data pre-fetch port 446b 447. The cache 130 also includes a cache instruction port 432 and a cache data port 436. In accordance with an embodiment, the multiplexer circuitry 406 includes a multiplexer (Mux) 422 and a multiplexer (Mux) 426. The Mux 422 selectively connects the instruction read port 442a 442 and the data pre-fetch port 446b 447 to the cache instruction port 432. Multiplexer (Mux) 426 selectively connects the data read port 446a 446 and the instruction pre-fetch port 442b 443 to the cache data port 436, as illustrated in
Although not illustrated in
A cache command may either be a hit or a miss. For example, the processing core 104 may request information (e.g., instruction and/or data). The cache 130 transmits the requested information to the processing core 104, in case the information is cached in the cache 130 and is valid (i.e., the cached information is in synchronization with a memory, e.g., memory 175). However, in case the requested information is not already cached in the cache 130 and/or is dirty (e.g., the cached information is not in synchronization with memory 175), this results in a cache read miss. If a cache command is a miss, new information is fetched by the cache 130 from the memory 175, and cached in the cache 130.
Thus, the cache 130 periodically fetches information (e.g., data and/or instructions) from memory 175 based on, for example, information required by the processing core. For example, in the event that the processing core 104 requests instructions that are not available in the cache 130 and/or are dirty, the cache instruction logic module 412 requests (e.g. by issuing suitable commands to the memory) the instructions from the memory 175. Similarly, in case the processing core 104 requests data that are not available in the cache 130 and/or are dirty, the cache data logic module 416 requests the data from the memory 175. Such requests for information (data and/or instructions) are transmitted by the cache instruction logic module 412 and/or the cache data logic module 416 to the memory 175 through the cache instruction port 432 and/or the cache data port 436, and also through the second bridge unit 142 and the BIU 184. Similarly, the requested information is received by the cache 130 from the memory 175 through the BIU 184 and the second bridge unit 142.
In an embodiment, information (data and/or instructions) in the cache may be stored in the form of a plurality of cache lines, and each cache line may store multiple data bytes (e.g., 32 bytes). In an embodiment, fetching new information from the memory 175 is done in a resolution of a half cache line, a full cache line, or the like. For the sake of simplicity and without loss of generality, it is herein assumed that information from the memory 175 is fetched in the resolution of a full cache line. However, in other embodiments, information from the memory 175 may be fetched in the resolution of a half cache line (or any other multiple or fraction of a full cache line), and the teachings of the present disclosure apply to these embodiments as well.
Thus, based on the requirement of the processing core 104, the cache 130 fetches a cache line of information from the memory 175, in case, for example, the information is not cached in the cache 130 and/or is dirty.
The cache 130 may also pre-fetch information from the memory 175 based on, for example, anticipating future requirement of the pre-fetched information by the processing core 104. For example, in an embodiment, the processing core 104 requests certain information, which the cache 130 determines is not cached in the cache 130 (or is cached in the cache 130, but is dirty). Accordingly, the cache 130 performs a line fill update command, wherein the cache 130 requests a first information line (that includes information requested by the processing core 104) from the memory 175. The cache 130 may also anticipate that the processing core 104 may also request further information in a short while. For example, the cache 130 may anticipate that the processing core 104 may also request further information that is included in a second information line. For example, the first and second line of information may include two consecutive lines of codes or instructions, based on which the cache may anticipate the future requirement of the second line of information by the processing core 104. Accordingly, in an embodiment, the cache 130 may pre-fetch the second line of information (e.g., before the information included in the second line of information is actually requested by the processing core 104) along with, or subsequent to, fetching the first line of information.
As previously discussed, the cache instruction logic module 412 initiates a request for fetching a line of instruction from the memory 175. In an embodiment, the cache instruction logic module 412 issues a first request for fetching a first line of instruction through the instruction read port 442a 442, the first multiplexer 422, the cache instruction port 432, the second bridge IC module 182, and the BIU 184 (see
In an embodiment, the requested first and second lines of instructions arrive from the memory 175 to the cache 130 simultaneously (e.g., in parallel), sequentially, or at least in an overlapping manner over the cache instruction port 432 and the cache data port 436, respectively, through the BIU 184 and through the second bridge IC module 182 and the second bridge DC module 186, respectively.
As previously discussed, the first line of instruction is fetched by the cache 104 based on a requirement of the processing core 104, while the second line of instruction is pre-fetched by the cache 104 based on anticipating a future requirement of the processing core 104. That is, during the fetching and the pre-fetching process, processing core 104 has requested and requires only the first line of instruction. Accordingly, when the second bridge unit 142 receives the requested first line of instruction from the memory 175 through the BIU 184, the second bridge unit 142 transmits the requested first line of instruction to the processing core 104 (as the processing core 104 actually requested information included in the first line of instruction) and also to the cache 130 (so that the cache 130 caches the first line of instruction). However, when the second bridge unit 142 receives the requested (i.e., pre-fetched) second line of instruction from the memory 175 through the BIU 184, the second bridge unit 142 does not transmit the requested second line of instruction to the processing core 104 (as the processing core 104 did not yet request instructions included in the second line of instruction). Rather, the second bridge unit 142 transmits the requested second line of instruction only to the cache 130 (so that the cache 130 caches the second line of instruction).
Once the cache 130 receives the first and second lines of instructions, the cache instruction logic module 412 relinquishes the control of the cache data port 436, so that the cache data logic module 416 may gain back control of the cache data port 436.
In a similar manner, the cache data logic module 416 issues a data fetch request to the memory 175 for a first line of data through the data read port 446a 446, multiplexer 426, cache data port 436, the second bridge DC module 186, and the BIU 184. The cache data logic module 416 also determines whether the cache instruction port 432 is being used by the cache instruction logic module 412. In case the cache instruction port 432 is currently available (i.e., the cache instruction logic module 412 is not currently using the cache instruction port 432 to request one or more lines of instructions), the cache data logic module 416 uses the cache instruction port 432 for pre-fetching data from the memory 175. For example, the cache data logic module 416 issues a pre-fetch request for a second line of data through the data pre-fetch port 446b 447, the first multiplexer 422, the cache instruction port 432, the second bridge IC module 182, and the BIU 184. The fetch request for the first line of data through the data read port 446a 446 and the pre-fetch request for the second line of data through the data pre-fetch port 446b 447 may be carried out substantially simultaneously (e.g., in parallel), sequentially, or at least in an overlapping manner. The memory 175, upon receiving, from the cache 130, the fetch and pre-fetch requests for the first and second lines of data sent via cache data port 436 and cache instruction port 432 respectively, process the two requests substantially simultaneously (e.g., in parallel), sequentially, or in at least an overlapping manner, based on the operation of the memory 175.
In an embodiment, the requested first and second lines of data arrive from the memory 175 to the cache 130 simultaneously (e.g., in parallel), sequentially, or at least in an overlapping manner over the cache data port 436 and the cache instruction port 432, respectively, through the second bridge DC module 186 and the second bridge IC module 182, respectively.
Also, the first line of data is fetched by the cache 130 based on a requirement of the processing core 104, while the second line of data is fetched by the cache 130 based on anticipating a future requirement of the processing core 104. Accordingly, when the second bridge unit 142 receives the requested first line of data from the memory 175 through the BIU 184, the second bridge unit 142 transmits the requested first line of data to the processing core 104 (as the processing core 104 actually requested information included in the first line of data) and also to the cache 130 (so that the cache 130 caches the first line of data). However, when the second bridge unit 142 receives the requested (i.e., pre-fetched) second line of data from the memory 175 through the BIU 184, the second bridge unit 142 does not transmit the requested second line of data to the processing core 104 (as the processing core 104 did not yet request data included in the first line of data). Rather, the second bridge unit 142 transmits the requested second line of data only to the cache 130 (so that the cache 130 caches the second line of data).
Once the cache 130 receives the first and second lines of data, the cache data logic module 416 relinquishes control of the cache instruction port 436, so that the cache instruction logic module 416 may gain back control of the cache instruction port 432.
Thus, the cache 130 uses only two ports (e.g., the cache instruction port 432 and cache data port 436) to fetch and pre-fetch both instructions and data. Unlike some conventional system, the cache 130 does not need dedicated ports for pre-fetching instructions and/or data. Also, pre-fetching instructions concurrently with fetching instructions reduce the latency in receiving instructions from the memory 175. Similarly, pre-fetching data concurrently with fetching data reduce the latency in receiving data from the memory 175.
Also, introducing the pre-fetching operations of instructions and data, using the data port 436 and instruction port 432, do not necessitate any change in configuration or operation of the processing core 104 and BIU 184 (e.g., no additional port is necessary in the processing core 104 and/or BIU 184 to accommodate the pre-fetch operation of the cache 130). Thus, the pre-fetching operation is transparent to the processing core 104 and BIU 184.
Pre-fetch requests may change the operation of the bridge module 125. For example, as previously discussed, if the requested information is associated with a fetch request, the bridge module 125 transmits the information received from the memory 175 to the processing core 104 and to the cache 130. On the other hand, if the requested information is associated with a pre-fetch request, the bridge module 125 transmits the information received from the memory 175 to the cache 130, but not to the processing core 104. However, the pre-fetching operations do not necessitate any change in the configuration of the bridge module 125 (e.g., no additional port is necessary in the bridge module 125 to accommodate the pre-fetch operation of the cache 130).
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.
Habusha, Adi, Rohana, Tarek, Stoler, Gil
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
4190885, | Dec 22 1977 | Honeywell Information Systems Inc. | Out of store indicator for a cache store in test mode |
5386503, | Jun 16 1992 | Honeywell Inc. | Method for controlling window displays in an open systems windows environment |
5459840, | Feb 26 1993 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Input/output bus architecture with parallel arbitration |
5623627, | Dec 09 1993 | GLOBALFOUNDRIES Inc | Computer memory architecture including a replacement cache |
5625793, | Apr 15 1991 | International Business Machines Corporation | Automatic cache bypass for instructions exhibiting poor cache hit ratio |
5689670, | Mar 17 1989 | Data transferring system with multiple port bus connecting the low speed data storage unit and the high speed data storage unit and the method for transferring data | |
5692152, | Jun 29 1994 | SAMSUNG ELECTRONICS CO , LTD | Master-slave cache system with de-coupled data and tag pipelines and loop-back |
6012134, | Apr 09 1998 | INSTITUTE FOR THE DEVELOPMENT OF EMERGING ARCHITECTURES, L L C | High-performance processor with streaming buffer that facilitates prefetching of instructions |
6157981, | May 27 1998 | International Business Machines Corporation | Real time invariant behavior cache |
6546461, | Nov 22 2000 | Integrated Device Technology, inc | Multi-port cache memory devices and FIFO memory devices having multi-port cache memory devices therein |
6604140, | Mar 31 1999 | Wistron Corporation | Service framework for computing devices |
6604174, | Nov 10 2000 | GOOGLE LLC | Performance based system and method for dynamic allocation of a unified multiport cache |
6754779, | Aug 23 1999 | GLOBALFOUNDRIES Inc | SDRAM read prefetch from multiple master devices |
6918009, | Dec 18 1998 | Fujitsu Limited | Cache device and control method for controlling cache memories in a multiprocessor system |
6928451, | Nov 14 2001 | Hitachi, LTD | Storage system having means for acquiring execution information of database management system |
7209996, | Oct 22 2001 | Oracle America, Inc | Multi-core multi-thread processor |
7240160, | Jun 30 2004 | Oracle America, Inc | Multiple-core processor with flexible cache directory scheme |
7574548, | Sep 12 2007 | International Business Machines Corporation | Dynamic data transfer control method and apparatus for shared SMP computer systems |
20010005871, | |||
20040260872, | |||
20080046736, | |||
20080313328, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 30 2015 | Marvell Israel (M.I.S.L.) Ltd. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Dec 30 2020 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Dec 31 2024 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Mar 27 2021 | 4 years fee payment window open |
Sep 27 2021 | 6 months grace period start (w surcharge) |
Mar 27 2022 | patent expiry (for year 4) |
Mar 27 2024 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 27 2025 | 8 years fee payment window open |
Sep 27 2025 | 6 months grace period start (w surcharge) |
Mar 27 2026 | patent expiry (for year 8) |
Mar 27 2028 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 27 2029 | 12 years fee payment window open |
Sep 27 2029 | 6 months grace period start (w surcharge) |
Mar 27 2030 | patent expiry (for year 12) |
Mar 27 2032 | 2 years to revive unintentionally abandoned end. (for year 12) |