WO2006027643A1 - A virtual address cache and method for sharing data stored in a virtual address cache - Google Patents

A virtual address cache and method for sharing data stored in a virtual address cache Download PDF

Info

Publication number
WO2006027643A1
WO2006027643A1 PCT/IB2004/052943 IB2004052943W WO2006027643A1 WO 2006027643 A1 WO2006027643 A1 WO 2006027643A1 IB 2004052943 W IB2004052943 W IB 2004052943W WO 2006027643 A1 WO2006027643 A1 WO 2006027643A1
Authority
WO
WIPO (PCT)
Prior art keywords
virtual address
memory
data
cache
task
Prior art date
Application number
PCT/IB2004/052943
Other languages
French (fr)
Inventor
Itay Peled
Moshe Anschel
Original Assignee
Freescale Semiconductors, Inc
Bacher, Moshe
Efrat, Jacob
Eldor, Alon
Tokar, Yakov
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductors, Inc, Bacher, Moshe, Efrat, Jacob, Eldor, Alon, Tokar, Yakov filed Critical Freescale Semiconductors, Inc
Priority to EP04821379A priority Critical patent/EP1807767A1/en
Priority to US11/574,864 priority patent/US20070266199A1/en
Priority to JP2007530782A priority patent/JP2008512758A/en
Priority to PCT/IB2004/052943 priority patent/WO2006027643A1/en
Priority to TW094130547A priority patent/TW200632651A/en
Publication of WO2006027643A1 publication Critical patent/WO2006027643A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

Definitions

  • the present invention relates to a virtual address cache and a method for sharing data stored in a virtual address cache.
  • Digital data processing systems are used in many applications including for example consumer electronics, computers, cars, etc.
  • PCs personal computers
  • complex digital processing functionality to provide a platform for a wide variety of user applications...
  • Digital data processing systems typically comprise input/ output functionality, instruction and data memory and one or more data processors, such as a microcontroller, a microprocessor or a digital signal processor.
  • data processors such as a microcontroller, a microprocessor or a digital signal processor.
  • a PC the memory is organised in a memory hierarchy comprising memory of typically different size and speed.
  • a PC may typically comprise a large, low cost but slow main memory and in addition have one or more cache memory levels comprising relatively small and expensive but fast memory.
  • data from the main memory is dynamically copied into the cache memory to allow fast read cycles.
  • data may be written to the cache memory rather than the main memory thereby allowing for fast write cycles.
  • the cache memory is dynamically associated with different memory locations of the main memory and it is clear that the interface and interaction between the main memory and the cache memory is critical for acceptable performance. Accordingly significant research into cache operation has been carried out and various methods and algorithms for controlling when data is written to or read from the cache memory rather than the main memory as well as when data is transferred between the cache memory and the main memory have been developed.
  • the cache memory system first checks if the corresponding main memory address is currently associated with the cache. If the cache memory contains a valid data value for the main memory address, this data value is put on the data bus of the system by the cache and the read cycle executes without any wait cycles. However, if the cache memory does not contain a valid data value for the main memory address, a main memory read cycle is executed and the data is retrieved from the main memory. Typically the main memory read cycle includes one or more wait states thereby slowing down the process.
  • a memory operation where the processor can receive the data from the cache memory is typically referred to as a cache hit and a memory operation where the processor cannot receive the data from the cache memory is typically referred to as a cache miss.
  • a cache miss does not only result in the processor retrieving data from the main memory but also results in a number of data transfers between the main memory and the cache. For example, if a given address is accessed resulting in a cache miss, the subsequent memory locations may be transferred to the cache memory. As processors frequently access consecutive memory locations, the probability of the cache memory comprising the desired data thereby typically increases.
  • N-way caches are used in which instructions and/or data is stored in one of N storage blocks (i.e. 'ways' ) .
  • Cache memory systems are typically divided into cache lines which correspond to the resolution of a cache memory.
  • cache systems known as set-associative cache systems
  • a number of cache lines are grouped together in different sets wherein each set corresponds to a fixed mapping to the lower data bits of the main memory addresses.
  • the extreme case of each cache line forming a set is known as a direct mapped cache and results in each main memory address being mapped to one specific cache line.
  • the other extreme where all cache lines belong to a single set is known as a fully associative cache and this allows each cache line to be mapped to any main memory location.
  • the cache memory- system typically comprises a data array which for each cache line holds data indicating the current mapping between that line and the main memory.
  • the data array typically comprises higher data bits of the associated main memory address. This information is typically known as a tag and the data array is known as a tag-array.
  • a subset of an address i.e. an index
  • an index is used to designate a line position within the cache where the most significant bits of the address (i.e. the tag) is stored along with the data.
  • indexing an item with a particular address can be placed only within a set of lines designated by the relevant index.
  • a physical address is an address of main (i.e. higher level) memory, associated with the virtual address that is generated by the processor.
  • a multi-task environment is an environment in which the processor may serve different tasks at different times. Within a multi-task environment, the same virtual addresses, generated by different tasks, is not necessarily associated with the same physical address. Data that is shared between different tasks is stored in the same physical location for all the tasks sharing this data; data not shared between different tasks (i.e. private data) will be stored in a physical location that is unique to its task. This is more clearly illustrated in figure 1, where the y-axis defines virtual address space and the x-axis defines time.
  • the private data 150 associated with the four tasks 151, 152, 153, 154, as shown in figure 1, are arranged to have the same virtual addresses however the associated data stored in external memory will be stored in different physical addresses.
  • the shared data 155 of the four tasks 151, 152, 153, 154 are arranged to have the same virtual addresses and the same physical addresses.
  • a virtual address cache will store data with reference to a virtual address generated by a processor; data to be stored in external memory is stored in physical address space.
  • a virtual address cache operating in a multi ⁇ tasking environment will have an address or tag field, for storing an address/tag associated with stored data and a task identifier ID field for identifying as to which task the address/tag and data are associated.
  • a ⁇ hit' requires that the address/tag for data stored in the cache matches the virtual address requested by the processor and the task-id field associated with data stored in cache matches the current active task being executed by the processor.
  • One solution has been to use a physical address cache where a translator translates the virtual address generated by a processor into a respective physical address that is used to store the data in the physical address cache, thereby ensuring that data shared between tasks is easily identified by its physical address.
  • the present invention provides a virtual address cache and a method for sharing data stored in a virtual address cache as described in the accompanying claims.
  • This provides the advantage of allowing a virtual address cache to share data and code between different tasks within a multi-task environment without the need to flush the cache data to a higher level when switching between the different tasks, thereby minimising bus traffic between the cache and the higher level memory; reduce complexity of the operating system in the handling of inter-process communication; reduce the number of time consuming ⁇ miss' accesses to shared data after the flush; and reduce the footprint of shared code by not needing to duplicate the shared code in the cache memory.
  • Figure 1 illustrates a virtual address space versus time chart
  • Figure 2 illustrates a cache system according to an embodiment of the present invention
  • Figure 3 illustrates a data cache according to an embodiment of the present invention
  • Figure 4 illustrates a comparator arrangement according to an embodiment of the present invention.
  • Figure 2 shows a virtual address cache 100 in which the virtual address cache 100 is able to make a determination as to whether a virtual address match exists between a received virtual address generated by a processor 101 and data associated with a virtual address stored in cache memory within the virtual address cache 100, where if a shared data indicator is provided a task-ID match is not required. This allows shared data to be retained and used in the virtual address cache 100 between different tasks executed by the processor 101. However, if a shared data indicator is not provided (i.e. to indicate private data) a task-ID match is required in addition to a virtual address match.
  • Figure 2 shows a virtual address data cache 100 and a memory controller 104 coupled to a system processor 101 via a parallel processor bus 102 with the virtual address data cache 100. additionally being coupled to system memory 113 (i.e. external memory) via a parallel system bus 103. It should be noted, however, that although this embodiment refers to a virtual address data cache the embodiment could equally apply to a virtual address instruction cache.
  • the virtual address data cache 100 is arranged to store data with reference to virtual addresses generated by the system processor 101.
  • the memory controller 104 is coupled to the data cache 100 via a parallel bus 111.
  • the memory controller 104 is arranged to control external memory access and translate virtual addresses to physical addresses'.
  • the memory controller 104 is arranged to implement a high speed translation mechanism that translates from virtual to physical addresses in order to support memory relocation.
  • the memory controller 104 provides cache and bus control for memory management.
  • the memory controller 104 is arranged to store task ID information to support multi-task cache memory management to allow identification of shared and private tasks, as described below.
  • the current embodiment shows the virtual address data cache 100 being coupled to the system processor 101 via a parallel bus the virtual address data cache 100 can be physically integrated within a processor.
  • Figure 3 shows the virtual address data cache 100 having a first input 301 for receiving a virtual address from the processor 101 via the processor bus 102 and a second input 302 for receiving a task-ID from the memory controller 104.
  • the received virtual address is associated with data that the processor 101 needs for the execution of one of a plurality of tasks.
  • the task-ID is used to identify the actual task that the processor is executing for which the data associated with the virtual address is required.
  • the memory controller 104 is able to distinguish between 255 different tasks, however, a different number of tasks may be supported.
  • the current embodiment shows the task-ID being provided by the memory controller 104 the virtual address data cache 100 could receive the task-ID from other elements within a computing system, for example the processor 101.
  • the virtual address data cache 100 includes a first summing node 303, a second summing node 304, a series of comparators 305 (i.e. a plurality of comparators), cache memory 306, an N-way memory block 307 that includes tag memory 308 and valid bit memory 309, and a valid bit checker module 310.
  • the first summing node 303 is coupled to the first input 301 and the second input 302 for receiving the tag portion of the virtual address from the processor 101 and the task-ID from the memory controller 104.
  • the first summing node 303 combines the received tag and task-ID to produce an extended tag that is input to a first input on each one of the series of comparators 305.
  • the N-way memory block 307 uses an indexing system, as described above, for allowing memory addressing.
  • the virtual address in addition to the virtual address generated by the processor 101 having a tag field the virtual address also includes an index field, as described above, and as is well known to a person skilled in the art.
  • other addressing format could be used.
  • the N-way memory block 307 which is used to define the status and location of all data stored in cache memory 306, includes N memory blocks with each block having a plurality of indexes, for example 16, where each index includes an extended tag field 308 and a plurality of valid bit fields that form the valid bit memory 309.
  • the extended tag field 308 includes a task-ID and a tag address for a given index, which allows an access to be mapped to a cache line in cache memory 306 where a cache line is defined by a combination of cache way and index.
  • the plurality of valid bit resolution fields 309 includes status information as to whether corresponding data bits within a cache line to which the access is mapped are valid or dirty, as is well known to a person skilled in the art.
  • the N-way memory block 307 is coupled to a second input on each of the series of comparators 305 such that each index in the N-way memory block 307 is coupled to an associated comparator. Accordingly, the number of comparators 305 is equal to the number of index fields in the N-way memory block 307. However, the use of multiplexers could be used to reduce the number of required comparators.
  • the N-way memory block 307 is arranged to input the extended tag information for each index into the comparator 305 associated with the respective index.
  • a control line 311 from the memory controller 104 is coupled to a third input on each of the series of comparators 305 where the memory controller 104 is arranged to generate a control signal to indicate whether a virtual address generated by the processor 101 is associated with shared data (i.e. data to be shared between tasks) or private data (i.e. data specific to a single task) .
  • the control signal could be any pre ⁇ arranged signal.
  • the memory controller 104 determines whether a virtual address generated by the processor 101 corresponds to shared or private data based upon whether the generated virtual address is within a predetermined range of addresses, where one range of virtual addresses correspond to shared data and another range of virtual addresses correspond to private data.
  • a control signal from the processor 101 directly or the virtual address cache 100 could be pre ⁇ programmed with a range of virtual address spaces that correspond to shared or private data.
  • the N-way memory block 307 is additionally coupled to the valid bit checker module 310 to allow the valid bit checker to monitor the status of each of the valid bit fields for each index in the N-way memory block 307 to allow the valid bit checker module 310 to determine whether any given bit stored in cache memory 306 is- valid . or dirty.
  • the cache memory 306 has a first input coupled to the first input 301 of the virtual address data cache 100 for receiving index information included within the virtual address generated by the processor to allow an association to be made between the access and the relevant cache line.
  • the cache memory 306 has a second input coupled to the outputs from the comparators 305 in which the individual comparators are each associated with a cache line in cache memory.
  • the cache memory 306 has a first output for exchanging data between the processor 101 and system memory 113 over the processor bus 102 and system bus 103 respectively.
  • the series of comparators 305 are arranged to make a determination as to whether there is a match between a virtual address that is associated with data within the cache memory 306 and the virtual address generated by the processor 101, as described below.
  • FIG. 4 illustrates the individual components of a comparator 400.
  • the comparator 400 includes a first comparator element 401, a second comparator element 402, an OR gate 403 and an AND gate 404.
  • the first comparator element 401 is coupled to both the first summing node 303 for receiving tag information for a virtual address generated by the processor 101 and to the N-way memory block 307 for receiving tag information for data stored in cache memory 306 to allow a comparison to be made between tag information for a virtual address generated by the processor 101 and tag information associated with data stored in a cache line, in cache memory 306, to which the comparator 400 is associated.
  • the second comparator element 402 is coupled to both the first summing node 303 for receiving task-ID information provided by the memory controller 104 and to the N-way memory block 307 for receiving task-ID information for data stored in cache memory 306 to allow a comparison to be made between task-ID information for a virtual address generated by the processor 101 and task-ID information associated with data stored in a cache line, in cache memory, to which the comparator 400 is associated.
  • the OR gate 403 is coupled to the output of the second comparator element 402 and the memory controller control signal 311 for performing an OR operation on the outputs from the second comparator element 402 and the memory controller control signal 311.
  • the AND gate 404 is coupled to the output of the first comparator element 401 and the output from the OR gate 403.
  • the comparator 400 is arranged to provide a positive output match between the received virtual address generated by the processor 101 and the virtual address of data in a cache line, in cache memory 306, if the first comparator element 401 identifies that the virtual address tag generated by the processor 101 is the same as the tag information stored in the extended tag 308 of the N-way block 307 to which the comparator 400 is associated and either the memory controller control signal 311 is set to indicates that data associated with the virtual address is shared (i.e. more than one task may use the data) or the task-ID provided by the memory controller 104 is the same as the task-ID associated with the data stored in cache memory 306.
  • cache memory 306 that is to be shared between different tasks can be retained in cache memory when the processor 101 is switching between different tasks, thereby avoiding the need to flush all cache memory when the processor is switching between different tasks.
  • This allows ⁇ hit' accesses to share data, which is already stored in the cache memory, directly after the task switch.
  • an individual comparator 305 is assigned to each respective extended tag in the N-way block 307. Accordingly, on receipt of a virtual address generated by the processor 101 each of the comparators 305 performs a comparison between the received virtual address and the extended tag 308 of the N-way block 307 to which they are associated.
  • each of the comparators 305 are coupled to the cache memory, as described above, and to the second summing node 304.
  • the valid bit checker module 310 is coupled to each of the valid bit resolution fields 309 for determining whether any given bit stored in cache memory is valid or dirty.
  • the output from the valid bit checker module 310 is couple to the second summing node 304 where the second summing node 304 is arranged to generate a ⁇ hit' indication to the processor 101 if the valid bit checker module 310 identifies that the bits of a cache line associated with a matched virtual address are valid and the associated comparator 305 for the cache line determines that the virtual address generated by the processor 101 has been designated as either shared data or has a matched task-ID.
  • the output from the comparator 305 that identified the match is used to initiate the outputting of the ⁇ hit' data from the cache memory 306 to the processor 101.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

A virtual address cache comprising a comparator arranged to receive a virtual address for addressing data associated with a task and a memory, wherein the comparator is arranged to make a determination as to whether data associated with the received virtual address is stored in the memory based upon an indication that the virtual address is associated with data shared between a first task and a second task and a comparison of the received virtual address with an address associated with data stored in memory.

Description

A VIRTUAL ADDRESS CACHE AND METHOD FOR SHARING DATA STORED IN A VIRTUAL ADDRESS CACHE
Field of the Invention
The present invention relates to a virtual address cache and a method for sharing data stored in a virtual address cache.
Background of the Invention
Digital data processing systems are used in many applications including for example consumer electronics, computers, cars, etc. For example, personal computers (PCs) use complex digital processing functionality to provide a platform for a wide variety of user applications...
Digital data processing systems typically comprise input/ output functionality, instruction and data memory and one or more data processors, such as a microcontroller, a microprocessor or a digital signal processor.
An important parameter of the performance of a processing system is the memory performance. For optimum performance, it is desired that the memory is large, fast and preferably cheap. Unfortunately these characteristics tend to be conflicting requirements and a suitable trade¬ off is required when designing a digital system.
In order to improve memory performance of processing systems, complex memory structures which seek to exploit the individual advantages of different types of memory have been developed. In particular, it has become common to use fast cache memory in association with larger, slower and cheaper main memory.
For example, in a PC the memory is organised in a memory hierarchy comprising memory of typically different size and speed. Thus a PC may typically comprise a large, low cost but slow main memory and in addition have one or more cache memory levels comprising relatively small and expensive but fast memory. During operation data from the main memory is dynamically copied into the cache memory to allow fast read cycles. Similarly, data may be written to the cache memory rather than the main memory thereby allowing for fast write cycles.
Thus, the cache memory is dynamically associated with different memory locations of the main memory and it is clear that the interface and interaction between the main memory and the cache memory is critical for acceptable performance. Accordingly significant research into cache operation has been carried out and various methods and algorithms for controlling when data is written to or read from the cache memory rather than the main memory as well as when data is transferred between the cache memory and the main memory have been developed.
Typically, whenever a processor performs a read operation, the cache memory system first checks if the corresponding main memory address is currently associated with the cache. If the cache memory contains a valid data value for the main memory address, this data value is put on the data bus of the system by the cache and the read cycle executes without any wait cycles. However, if the cache memory does not contain a valid data value for the main memory address, a main memory read cycle is executed and the data is retrieved from the main memory. Typically the main memory read cycle includes one or more wait states thereby slowing down the process.
A memory operation where the processor can receive the data from the cache memory is typically referred to as a cache hit and a memory operation where the processor cannot receive the data from the cache memory is typically referred to as a cache miss. Typically, a cache miss does not only result in the processor retrieving data from the main memory but also results in a number of data transfers between the main memory and the cache. For example, if a given address is accessed resulting in a cache miss, the subsequent memory locations may be transferred to the cache memory. As processors frequently access consecutive memory locations, the probability of the cache memory comprising the desired data thereby typically increases.
To improve the hit rate of a cache N-way caches are used in which instructions and/or data is stored in one of N storage blocks (i.e. 'ways' ) .
Cache memory systems are typically divided into cache lines which correspond to the resolution of a cache memory. In cache systems known as set-associative cache systems, a number of cache lines are grouped together in different sets wherein each set corresponds to a fixed mapping to the lower data bits of the main memory addresses. The extreme case of each cache line forming a set is known as a direct mapped cache and results in each main memory address being mapped to one specific cache line. The other extreme where all cache lines belong to a single set is known as a fully associative cache and this allows each cache line to be mapped to any main memory location.
In order to keep track of which main memory address (if any) each cache line is associated with, the cache memory- system typically comprises a data array which for each cache line holds data indicating the current mapping between that line and the main memory. In particular, the data array typically comprises higher data bits of the associated main memory address. This information is typically known as a tag and the data array is known as a tag-array. Additionally, for larger cache memories a subset of an address (i.e. an index) is used to designate a line position within the cache where the most significant bits of the address (i.e. the tag) is stored along with the data. In a cache in which indexing is used an item with a particular address can be placed only within a set of lines designated by the relevant index.
To allow a processor to read and write data to memory the processor will typically produce a virtual address. A physical address is an address of main (i.e. higher level) memory, associated with the virtual address that is generated by the processor. A multi-task environment is an environment in which the processor may serve different tasks at different times. Within a multi-task environment, the same virtual addresses, generated by different tasks, is not necessarily associated with the same physical address. Data that is shared between different tasks is stored in the same physical location for all the tasks sharing this data; data not shared between different tasks (i.e. private data) will be stored in a physical location that is unique to its task. This is more clearly illustrated in figure 1, where the y-axis defines virtual address space and the x-axis defines time. The private data 150 associated with the four tasks 151, 152, 153, 154, as shown in figure 1, are arranged to have the same virtual addresses however the associated data stored in external memory will be stored in different physical addresses. The shared data 155 of the four tasks 151, 152, 153, 154 are arranged to have the same virtual addresses and the same physical addresses.
Consequently, a virtual address cache will store data with reference to a virtual address generated by a processor; data to be stored in external memory is stored in physical address space.
Further, a virtual address cache operating in a multi¬ tasking environment will have an address or tag field, for storing an address/tag associated with stored data and a task identifier ID field for identifying as to which task the address/tag and data are associated.
Consequently, within a multi-tasking environment a λhit' requires that the address/tag for data stored in the cache matches the virtual address requested by the processor and the task-id field associated with data stored in cache matches the current active task being executed by the processor.
When a processor switches from one task to another task the contents of a virtual address data cache, associated with the first task, will typically be flushed to a higher level memory and new data associated with the new task is loaded in to the virtual address cache. This enables the new task to use updated data that is shared between the two tasks. However, the need to change the memory contents when switching between tasks increases the bus traffic between the cache and the higher level memory, and increases the complexity of the operating system in the handling of inter-process communication. This may also produce redundant time consuming λmissr accesses to shared data after the flush. In case of shared code, the flush is not needed after the task switch. However, this increases the footprint of shared code by needing to duplicate the shared code in the cache memory.
One solution has been to use a physical address cache where a translator translates the virtual address generated by a processor into a respective physical address that is used to store the data in the physical address cache, thereby ensuring that data shared between tasks is easily identified by its physical address.
However, the translation of the virtual address to its corresponding physical address can be difficult to implement in high-speed processors that have tight timing constraints.
It is desirable to improve this situation.
Statement of Invention
The present invention provides a virtual address cache and a method for sharing data stored in a virtual address cache as described in the accompanying claims. This provides the advantage of allowing a virtual address cache to share data and code between different tasks within a multi-task environment without the need to flush the cache data to a higher level when switching between the different tasks, thereby minimising bus traffic between the cache and the higher level memory; reduce complexity of the operating system in the handling of inter-process communication; reduce the number of time consuming Λmiss' accesses to shared data after the flush; and reduce the footprint of shared code by not needing to duplicate the shared code in the cache memory.
Brief Description of the Drawings
The present invention will now be described, by way of example, with reference to the accompanying drawings, in which:
Figure 1 illustrates a virtual address space versus time chart;
Figure 2 illustrates a cache system according to an embodiment of the present invention;
Figure 3 illustrates a data cache according to an embodiment of the present invention;
Figure 4 illustrates a comparator arrangement according to an embodiment of the present invention.
Description of a Preferred Embodiment
Figure 2 shows a virtual address cache 100 in which the virtual address cache 100 is able to make a determination as to whether a virtual address match exists between a received virtual address generated by a processor 101 and data associated with a virtual address stored in cache memory within the virtual address cache 100, where if a shared data indicator is provided a task-ID match is not required. This allows shared data to be retained and used in the virtual address cache 100 between different tasks executed by the processor 101. However, if a shared data indicator is not provided (i.e. to indicate private data) a task-ID match is required in addition to a virtual address match.
Figure 2 shows a virtual address data cache 100 and a memory controller 104 coupled to a system processor 101 via a parallel processor bus 102 with the virtual address data cache 100. additionally being coupled to system memory 113 (i.e. external memory) via a parallel system bus 103. It should be noted, however, that although this embodiment refers to a virtual address data cache the embodiment could equally apply to a virtual address instruction cache.
The virtual address data cache 100 is arranged to store data with reference to virtual addresses generated by the system processor 101.
The memory controller 104 is coupled to the data cache 100 via a parallel bus 111.
The memory controller 104 is arranged to control external memory access and translate virtual addresses to physical addresses'. The memory controller 104 is arranged to implement a high speed translation mechanism that translates from virtual to physical addresses in order to support memory relocation.
Additionally, the memory controller 104 provides cache and bus control for memory management.
The memory controller 104 is arranged to store task ID information to support multi-task cache memory management to allow identification of shared and private tasks, as described below.
Although the current embodiment shows the virtual address data cache 100 being coupled to the system processor 101 via a parallel bus the virtual address data cache 100 can be physically integrated within a processor.
Figure 3 shows the virtual address data cache 100 having a first input 301 for receiving a virtual address from the processor 101 via the processor bus 102 and a second input 302 for receiving a task-ID from the memory controller 104. The received virtual address is associated with data that the processor 101 needs for the execution of one of a plurality of tasks. The task-ID is used to identify the actual task that the processor is executing for which the data associated with the virtual address is required.
Within this embodiment the memory controller 104 is able to distinguish between 255 different tasks, however, a different number of tasks may be supported. Although the current embodiment shows the task-ID being provided by the memory controller 104 the virtual address data cache 100 could receive the task-ID from other elements within a computing system, for example the processor 101.
The virtual address data cache 100 includes a first summing node 303, a second summing node 304, a series of comparators 305 (i.e. a plurality of comparators), cache memory 306, an N-way memory block 307 that includes tag memory 308 and valid bit memory 309, and a valid bit checker module 310.
The first summing node 303 is coupled to the first input 301 and the second input 302 for receiving the tag portion of the virtual address from the processor 101 and the task-ID from the memory controller 104. The first summing node 303 combines the received tag and task-ID to produce an extended tag that is input to a first input on each one of the series of comparators 305.
The N-way memory block 307 uses an indexing system, as described above, for allowing memory addressing. As such, in addition to the virtual address generated by the processor 101 having a tag field the virtual address also includes an index field, as described above, and as is well known to a person skilled in the art. However, other addressing format could be used.
The N-way memory block 307, which is used to define the status and location of all data stored in cache memory 306, includes N memory blocks with each block having a plurality of indexes, for example 16, where each index includes an extended tag field 308 and a plurality of valid bit fields that form the valid bit memory 309. The extended tag field 308 includes a task-ID and a tag address for a given index, which allows an access to be mapped to a cache line in cache memory 306 where a cache line is defined by a combination of cache way and index. The plurality of valid bit resolution fields 309 includes status information as to whether corresponding data bits within a cache line to which the access is mapped are valid or dirty, as is well known to a person skilled in the art.
The N-way memory block 307 is coupled to a second input on each of the series of comparators 305 such that each index in the N-way memory block 307 is coupled to an associated comparator. Accordingly, the number of comparators 305 is equal to the number of index fields in the N-way memory block 307. However, the use of multiplexers could be used to reduce the number of required comparators.
Additionally, the N-way memory block 307 is arranged to input the extended tag information for each index into the comparator 305 associated with the respective index.
A control line 311 from the memory controller 104 is coupled to a third input on each of the series of comparators 305 where the memory controller 104 is arranged to generate a control signal to indicate whether a virtual address generated by the processor 101 is associated with shared data (i.e. data to be shared between tasks) or private data (i.e. data specific to a single task) . The control signal could be any pre¬ arranged signal. Within this embodiment the memory controller 104 determines whether a virtual address generated by the processor 101 corresponds to shared or private data based upon whether the generated virtual address is within a predetermined range of addresses, where one range of virtual addresses correspond to shared data and another range of virtual addresses correspond to private data. However, other means for determining whether a virtual address corresponds to share or private data could be used, for example a control signal from the processor 101 directly or the virtual address cache 100 could be pre¬ programmed with a range of virtual address spaces that correspond to shared or private data.
The N-way memory block 307 is additionally coupled to the valid bit checker module 310 to allow the valid bit checker to monitor the status of each of the valid bit fields for each index in the N-way memory block 307 to allow the valid bit checker module 310 to determine whether any given bit stored in cache memory 306 is- valid . or dirty.
The cache memory 306 has a first input coupled to the first input 301 of the virtual address data cache 100 for receiving index information included within the virtual address generated by the processor to allow an association to be made between the access and the relevant cache line.
The cache memory 306 has a second input coupled to the outputs from the comparators 305 in which the individual comparators are each associated with a cache line in cache memory. The cache memory 306 has a first output for exchanging data between the processor 101 and system memory 113 over the processor bus 102 and system bus 103 respectively.
The series of comparators 305 are arranged to make a determination as to whether there is a match between a virtual address that is associated with data within the cache memory 306 and the virtual address generated by the processor 101, as described below.
Figure 4 illustrates the individual components of a comparator 400. The comparator 400 includes a first comparator element 401, a second comparator element 402, an OR gate 403 and an AND gate 404.
The first comparator element 401 is coupled to both the first summing node 303 for receiving tag information for a virtual address generated by the processor 101 and to the N-way memory block 307 for receiving tag information for data stored in cache memory 306 to allow a comparison to be made between tag information for a virtual address generated by the processor 101 and tag information associated with data stored in a cache line, in cache memory 306, to which the comparator 400 is associated.
The second comparator element 402 is coupled to both the first summing node 303 for receiving task-ID information provided by the memory controller 104 and to the N-way memory block 307 for receiving task-ID information for data stored in cache memory 306 to allow a comparison to be made between task-ID information for a virtual address generated by the processor 101 and task-ID information associated with data stored in a cache line, in cache memory, to which the comparator 400 is associated. The OR gate 403 is coupled to the output of the second comparator element 402 and the memory controller control signal 311 for performing an OR operation on the outputs from the second comparator element 402 and the memory controller control signal 311.
The AND gate 404 is coupled to the output of the first comparator element 401 and the output from the OR gate 403.
Accordingly, the comparator 400 is arranged to provide a positive output match between the received virtual address generated by the processor 101 and the virtual address of data in a cache line, in cache memory 306, if the first comparator element 401 identifies that the virtual address tag generated by the processor 101 is the same as the tag information stored in the extended tag 308 of the N-way block 307 to which the comparator 400 is associated and either the memory controller control signal 311 is set to indicates that data associated with the virtual address is shared (i.e. more than one task may use the data) or the task-ID provided by the memory controller 104 is the same as the task-ID associated with the data stored in cache memory 306.
Consequently, data stored in cache memory 306 that is to be shared between different tasks can be retained in cache memory when the processor 101 is switching between different tasks, thereby avoiding the need to flush all cache memory when the processor is switching between different tasks. This allows Λhit' accesses to share data, which is already stored in the cache memory, directly after the task switch. In this embodiment an individual comparator 305 is assigned to each respective extended tag in the N-way block 307. Accordingly, on receipt of a virtual address generated by the processor 101 each of the comparators 305 performs a comparison between the received virtual address and the extended tag 308 of the N-way block 307 to which they are associated.
The output from each of the comparators 305 are coupled to the cache memory, as described above, and to the second summing node 304.
The valid bit checker module 310 is coupled to each of the valid bit resolution fields 309 for determining whether any given bit stored in cache memory is valid or dirty. The output from the valid bit checker module 310 is couple to the second summing node 304 where the second summing node 304 is arranged to generate a Λhit' indication to the processor 101 if the valid bit checker module 310 identifies that the bits of a cache line associated with a matched virtual address are valid and the associated comparator 305 for the cache line determines that the virtual address generated by the processor 101 has been designated as either shared data or has a matched task-ID.
If a Λhit' condition has been identified then the output from the comparator 305 that identified the match is used to initiate the outputting of the λhit' data from the cache memory 306 to the processor 101.

Claims

Claims
1. A virtual address cache (100) comprising a memory (306) and a comparator (400) arranged to receive a virtual address for addressing data associated with a task, characterised in that the comparator (400) is arranged to make a determination as to whether data associated with the received virtual address is stored in the memory (306) based upon an indication (311) that the virtual address is associated with data shared between a first task and a second task and a comparison of the received virtual address with an address associated with data stored in memory (306) .
2. A virtual address cache (100) according to claim 1, wherein the comparator (400) is arranged to receive a task identifier associated with the received virtual address, wherein the comparator (400) is arranged to make a determination as to whether data associated with the received virtual address is stored in the memory (306) based upon an indication (311) that the virtual address in not associated with shared data and a comparison of the received virtual address with an address associated with data stored in memory (306) and a comparison of the received task identifier with a task associated with data stored in memory (306) .
3. A virtual address cache (100) according to claim 1 or 2, wherein the indication that the virtual address is associated with data shared between the first task and a second task is provided by a control signal (311) to the comparator (400) .
4. A virtual address cache (100) according to claim 3, further comprising a memory controller (104) arranged to generate the control signal (311) upon a determination that a virtual address is associated with data shared between the first task and a second task
5. A virtual address cache (100) according to any preceding claim, wherein the address associated with data stored in memory (306) corresponds to a tag.
6. A virtual address cache (100) according to any preceding claim, wherein the part of the bits of a received virtual address are used in the comparison of the received virtual address with an address associated with data stored in memory (306) .
7. A method for sharing data stored in a virtual address cache (100), the method comprising receiving a virtual address for addressing data associated with a task; characterised by determining as to whether data associated with the received virtual address is stored in a memory (306) based upon an indication that the virtual address is associated with data shared between a first task and a second task and a comparison of the received virtual address with an address associated with data stored in memory (306) .
8. A method for sharing data stored in a virtual address cache according to claim 7, further comprising receiving a task identifier associated with the received virtual address; and determining as to whether data associated with the received virtual address is stored in the memory (306) based upon an indication that the virtual address in not associated with shared data and a comparison of the received virtual address with an address associated with data stored in memory (306) and a comparison of the received task identifier with a task associated with data stored in memory (306) .
9. A Computer Apparatus comprising data processing means, a main memory and a cache operably coupled to share data as claimed in any preceding claim.
PCT/IB2004/052943 2004-09-07 2004-09-07 A virtual address cache and method for sharing data stored in a virtual address cache WO2006027643A1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
EP04821379A EP1807767A1 (en) 2004-09-07 2004-09-07 A virtual address cache and method for sharing data stored in a virtual address cache
US11/574,864 US20070266199A1 (en) 2004-09-07 2004-09-07 Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache
JP2007530782A JP2008512758A (en) 2004-09-07 2004-09-07 Virtual address cache and method for sharing data stored in virtual address cache
PCT/IB2004/052943 WO2006027643A1 (en) 2004-09-07 2004-09-07 A virtual address cache and method for sharing data stored in a virtual address cache
TW094130547A TW200632651A (en) 2004-09-07 2005-09-06 A virtual address cache and method for sharing data stored in a virtual address cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2004/052943 WO2006027643A1 (en) 2004-09-07 2004-09-07 A virtual address cache and method for sharing data stored in a virtual address cache

Publications (1)

Publication Number Publication Date
WO2006027643A1 true WO2006027643A1 (en) 2006-03-16

Family

ID=34980394

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2004/052943 WO2006027643A1 (en) 2004-09-07 2004-09-07 A virtual address cache and method for sharing data stored in a virtual address cache

Country Status (5)

Country Link
US (1) US20070266199A1 (en)
EP (1) EP1807767A1 (en)
JP (1) JP2008512758A (en)
TW (1) TW200632651A (en)
WO (1) WO2006027643A1 (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US8117418B1 (en) * 2007-11-16 2012-02-14 Tilera Corporation Method and system for managing virtual addresses of a plurality of processes corresponding to an application
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
JP5152297B2 (en) 2010-10-28 2013-02-27 株式会社デンソー Electronic equipment
WO2014016650A1 (en) * 2012-07-27 2014-01-30 Freescale Semiconductor, Inc. Circuitry for a computing system and computing system
GB2570110B (en) * 2018-01-10 2020-04-15 Advanced Risc Mach Ltd Speculative cache storage region
KR102655094B1 (en) * 2018-11-16 2024-04-08 삼성전자주식회사 Storage device including heterogeneous processors which shares memory and method of operating the same
US11588697B2 (en) * 2021-01-21 2023-02-21 Dell Products L.P. Network time parameter configuration based on logical host group

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0442474A2 (en) * 1990-02-13 1991-08-21 Sanyo Electric Co., Ltd. Apparatus and method for controlling cache memory
EP1215582A1 (en) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache memory access system and method
US20030182512A1 (en) * 2002-03-22 2003-09-25 Per Hammarlund Use of a context identifier in a cache memory

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5925303B2 (en) * 1980-05-16 1984-06-16 富士通株式会社 Multiple virtual memory control method in multiple virtual computer system
JPS63231550A (en) * 1987-03-19 1988-09-27 Hitachi Ltd Multiple virtual space control system
JP2846697B2 (en) * 1990-02-13 1999-01-13 三洋電機株式会社 Cache memory controller
JPH03235143A (en) * 1990-02-13 1991-10-21 Sanyo Electric Co Ltd Cache memory controller
US5754818A (en) * 1996-03-22 1998-05-19 Sun Microsystems, Inc. Architecture and method for sharing TLB entries through process IDS
US6938252B2 (en) * 2000-12-14 2005-08-30 International Business Machines Corporation Hardware-assisted method for scheduling threads using data cache locality

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0442474A2 (en) * 1990-02-13 1991-08-21 Sanyo Electric Co., Ltd. Apparatus and method for controlling cache memory
EP1215582A1 (en) * 2000-12-15 2002-06-19 Texas Instruments Incorporated Cache memory access system and method
US20030182512A1 (en) * 2002-03-22 2003-09-25 Per Hammarlund Use of a context identifier in a cache memory

Also Published As

Publication number Publication date
EP1807767A1 (en) 2007-07-18
JP2008512758A (en) 2008-04-24
TW200632651A (en) 2006-09-16
US20070266199A1 (en) 2007-11-15

Similar Documents

Publication Publication Date Title
US20210406170A1 (en) Flash-Based Coprocessor
US5778434A (en) System and method for processing multiple requests and out of order returns
EP0185867B1 (en) A memory hierarchy and its method of operation
US5410669A (en) Data processor having a cache memory capable of being used as a linear ram bank
KR920005280B1 (en) High speed cache system
EP0908825B1 (en) A data-processing system with cc-NUMA (cache coherent, non-uniform memory access) architecture and remote access cache incorporated in local memory
CN100573477C (en) The system and method that group in the cache memory of managing locks is replaced
JPH1196074A (en) Computer system for dynamically selecting exchange algorithm
EP0706133A2 (en) Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
US6427188B1 (en) Method and system for early tag accesses for lower-level caches in parallel with first-level cache
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US6571316B1 (en) Cache memory array for multiple address spaces
JP2005174341A (en) Multi-level cache having overlapping congruence group of associativity set in various cache level
EP0706131A2 (en) Method and system for efficient miss sequence cache line allocation
EP0708404A2 (en) Interleaved data cache array having multiple content addressable fields per cache line
US6332179B1 (en) Allocation for back-to-back misses in a directory based cache
JPH07104816B2 (en) Method for operating computer system and memory management device in computer system
CN115168248B (en) Cache memory supporting SIMT architecture and corresponding processor
US20070266199A1 (en) Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache
US8468297B2 (en) Content addressable memory system
US20050027960A1 (en) Translation look-aside buffer sharing among logical partitions
EP0706132A2 (en) Method and system for miss sequence handling in a data cache array having multiple content addressable fields per cache line
CN101930344B (en) Determine the data storage protocols of the project storing in link data reservoir and rewrite
WO2006040689A1 (en) Implementation and management of moveable buffers in cache system
US7865691B2 (en) Virtual address cache and method for sharing data using a unique task identifier

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 11574864

Country of ref document: US

Ref document number: 2004821379

Country of ref document: EP

Ref document number: 2007530782

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWP Wipo information: published in national office

Ref document number: 2004821379

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 11574864

Country of ref document: US