WO2010032433A1 - バッファメモリ装置、メモリシステム及びデータ読出方法 - Google Patents
バッファメモリ装置、メモリシステム及びデータ読出方法 Download PDFInfo
- Publication number
- WO2010032433A1 WO2010032433A1 PCT/JP2009/004595 JP2009004595W WO2010032433A1 WO 2010032433 A1 WO2010032433 A1 WO 2010032433A1 JP 2009004595 W JP2009004595 W JP 2009004595W WO 2010032433 A1 WO2010032433 A1 WO 2010032433A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- attribute
- data
- read
- memory
- buffer memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
Definitions
- the present invention relates to a buffer memory device, a memory system, and a data reading method, and more particularly to a buffer memory device, a memory system, and a data reading method for holding burst-read data when burst-reading data held in a main memory.
- a buffer memory device a memory system
- a data reading method for holding burst-read data when burst-reading data held in a main memory.
- a small-capacity and high-speed cache memory such as SRAM (Static Random Access Memory) has been used.
- SRAM Static Random Access Memory
- FIG. 27 is a diagram showing an outline of a conventional memory access method. As shown in the figure, in the technique described in Patent Document 1, the main memory 620 is divided into a cacheable area 621 and an uncacheable area 622.
- the burst read data is stored in a general-purpose register 612 included in the processor 610.
- the burst read data is stored in the cache memory 611.
- memory access can be further speeded up by burst reading data corresponding to an address that is likely to be accessed.
- the burst-read data is stored in the general-purpose register 612 provided in the CPU, as described above.
- the general-purpose register 612 includes the cache memory 611 and the like. It is very inefficient. Further, in the uncacheable area 622, there is a read-sensitive area in which the value of data held just by reading changes. When the data held in the uncacheable area 622 is read in bursts, the read sensitive area is accessed and the data is rewritten.
- the burst-read data is stored in the cache memory 611 as described above, whereby the contents of the cache memory 611 are rewritten. As a result, data originally stored in the cache memory 611 for speeding up memory access is erased, so that speeding up of memory access cannot be achieved.
- the present invention has been made to solve the above-described problem, and performs buffer read without causing a problem due to data rewriting, thereby speeding up memory access and a memory system. It is another object of the present invention to provide a data reading method.
- a buffer memory device includes a main memory or a peripheral device including a plurality of areas belonging to either a cacheable attribute or an uncacheable attribute in response to a read request from a processor.
- a buffer memory device for reading data an attribute acquisition unit that acquires an attribute of an area indicated by a read address included in the read request, and an attribute acquired by the attribute acquisition unit is the uncacheable attribute,
- an attribute determination unit that determines whether or not the data to be burst transferred is a first attribute, and the attribute acquired by the attribute acquisition unit by the attribute determination unit is the first attribute If it is determined that the data including the data held in the area indicated by the read address is Includes a data reading unit for reading, and a first buffer memory for holding the data burst read by said data reading unit.
- the data is burst read from the area holding the data to be burst transferred in the uncacheable area. It is possible to prevent unexpected rewriting of data in other areas. Further, since the burst read data can be held in the buffer memory in advance, the memory access speed can be increased. Further, by storing the data that has been burst read in a buffer memory different from the cache memory, it is possible to increase the area in which the data can be held without using the cache memory.
- the attribute determination unit is the second attribute indicating that the attribute acquired by the attribute acquisition unit is the uncacheable attribute and that data to be burst transferred is not held, or the first attribute
- the data reading unit further determines whether the attribute is an attribute, and when the attribute determination unit determines that the attribute acquired by the attribute acquisition unit is the second attribute, an area indicated by the read address Only the data held in the memory may be read out.
- the buffer memory device may further include that the address of the main memory or the peripheral device and the attributes of the area indicated by the address are the first attribute, the second attribute, and the cacheable attribute.
- a table holding unit that holds a table that associates attribute information indicating which of the third attributes is indicated, and the attribute acquisition unit refers to the table held in the table holding unit, You may acquire the attribute of the area
- the relationship between the area indicated by the address of the main memory or the peripheral device and the attribute can be easily managed, and the attribute can be acquired simply by referring to the table.
- the configuration can be simplified.
- the buffer memory device may further include a cache memory, and the attribute determination unit may determine whether the attribute acquired by the attribute acquisition unit is any of the first attribute, the second attribute, and the third attribute. And when the attribute determination unit determines that the attribute acquired by the attribute acquisition unit is the third attribute, the data reading unit stores the data in the area indicated by the read address.
- the data including the data held is burst read, and the cache memory holds the first data including the data held in the area indicated by the read address among the data burst read by the data reading unit
- the first buffer memory excludes the first data from the data burst-read by the data reading unit. It may hold two data.
- the data can be held in the buffer memory in advance, so that the memory access can be further speeded up.
- the buffer memory device further sets the address of the main memory or the peripheral device and the attribute of the area indicated by the address to any one of the first attribute, the second attribute, and the third attribute.
- An attribute setting unit that generates the table by setting may be provided, and the table holding unit may hold the table generated by the attribute setting unit.
- the data reading unit further stores data held in an area indicated by the read address Is already held in the first buffer memory. If the data is already held in the first buffer memory, the data is read from the first buffer memory, and the data is read from the first buffer memory. If the data is not held in one buffer memory, the data including the data may be burst read.
- the attribute acquisition unit further acquires an attribute of an area indicated by a write address included in a write request from the processor, and the buffer memory device is further acquired by the attribute acquisition unit by the attribute determination unit.
- a second buffer memory that holds write data corresponding to the write request for writing to the main memory or the peripheral device when the attribute of the area indicated by the write address is the first attribute
- a memory access information acquisition unit that acquires memory access information indicating the nature of the memory access request that is the read request or the write request from the processor, and the memory access information acquired by the memory access information acquisition unit
- the property or the attribute acquired by the attribute acquisition unit A condition determination unit that determines whether or not a predetermined condition is satisfied, and a write held in the second buffer memory when the condition determination unit determines that the property indicated by the memory access information satisfies the condition And a controller that sweeps data to the main memory or the peripheral device.
- the data can be merged when data is written, and the merged data can be burst-written to the main memory or the peripheral device, thereby improving the data transfer efficiency.
- the memory access information acquisition unit acquires, as the memory access information, processor information indicating a logical processor and a physical processor that issued the memory access request, and the condition determination unit includes a physical processor indicated by the processor information. Satisfy the condition when write data corresponding to a write request previously issued by the same logical processor as the logical processor indicated by the processor information is held in the second buffer memory. If the condition determining unit determines that the condition is satisfied, the control unit may sweep the data held in the second buffer memory that satisfies the condition to the main memory or the peripheral device. Good.
- the condition determining unit determines whether the memory access information includes command information for sweeping data held in the second buffer memory to the main memory or the peripheral device, and When the condition determination unit determines that the command information is included in the memory access information, the control unit stores data held in the second buffer memory indicated by the command information in the main memory or the peripheral device May be swept out.
- the data held in the buffer memory can be easily swept out to the main memory or the peripheral device, and the data in the main memory or the peripheral device can be updated to the latest data.
- the memory access information acquisition unit further acquires processor information indicating the processor that issued the memory access request as the memory access information
- the condition determination unit further includes an attribute indicated by the attribute information: It is determined whether the attribute is the first attribute, and the control unit further determines the processor information when the condition determination unit determines that the attribute acquired by the attribute acquisition unit is the first attribute.
- the data held in the second buffer memory corresponding to the processor indicated by may be swept out to the main memory or the peripheral device.
- the second buffer memory further holds a write address corresponding to the write data
- the memory access information acquisition unit further includes the memory access information when the memory access request includes a read request as the memory access information.
- the read address included in the read request is acquired, the condition determination unit determines whether a write address that matches the read address is held in the second buffer memory, and the control unit If the condition determination unit determines that a write address that matches the read address is held in the second buffer memory, the data held in the second buffer memory before the write data corresponding to the write address is stored. You may sweep to the main memory or the peripheral device.
- the data in the area can be updated to the latest data, thereby preventing the processor from reading out the old data.
- the memory access information acquisition unit further acquires a first write address included in the write request when the memory access request includes a write request, and the condition determination unit determines that the first write address is
- the controller determines whether or not the second write address included in the write request input immediately before is continuous, and the controller determines that the first write address and the second write address are continuous by the condition determination unit. When the determination is made, data held in the second buffer memory before the write data corresponding to the second write address may be swept out to the main memory or the peripheral device.
- the condition determination unit further determines whether or not the data amount of the data held in the second buffer memory has reached a predetermined threshold value, and the control unit further determines that the data amount is
- the condition determination unit determines that the threshold value has been reached, the data held in the second buffer memory may be swept out to the main memory or the peripheral device.
- the buffer memory device further determines whether a write address included in a write request from the processor matches an address corresponding to data held in the first buffer memory, and If the addresses match, an invalidation unit for invalidating data held in the first buffer memory may be provided.
- the present invention can also be realized as a memory system.
- the memory system of the present invention includes a processor and a main memory or a peripheral device including a plurality of areas belonging to either a cacheable attribute or an uncacheable attribute.
- a memory system that reads data from the main memory or the peripheral device in response to a read request from the processor, and acquires an attribute of an area indicated by a read address included in the read request from the processor Attribute determination for determining whether the attribute acquired by the acquisition unit and the attribute acquisition unit is the uncacheable attribute and is a first attribute indicating that data to be burst transferred is held Attribute acquired by the attribute acquisition unit by the attribute determination unit and the attribute determination unit
- a data reading unit that burst-reads data including data held in the area indicated by the read address when it is determined to be the first attribute, and a buffer memory that holds data burst-read by the data reading unit And when the attribute determination unit determines that the attribute acquired by the attribute acquisition unit is the first attribute, the data reading unit
- the memory system may further include a plurality of caches, and a cache closest to the main memory or the peripheral device among the plurality of caches may include the buffer memory.
- the present invention can be realized not only as a buffer memory device and a memory system, but also as a method using a processing unit constituting the memory system as a step. Moreover, you may implement
- a communication network such as the Internet.
- the memory access can be speeded up by performing the burst read without causing a problem due to the rewriting of data.
- FIG. 1 is a block diagram illustrating a schematic configuration of a system including a processor, a main memory, and a cache memory according to the first embodiment.
- FIG. 2 is a diagram showing attributes set in the address space of the first embodiment.
- FIG. 3 is a block diagram showing a configuration of the buffer memory device according to the first embodiment.
- FIG. 4 is a diagram illustrating an example of a region attribute table according to the first embodiment.
- FIG. 5 is a diagram illustrating details of the buffer memory and the cache memory according to the first embodiment.
- FIG. 6 is a flowchart showing the operation of the buffer memory device of the first embodiment.
- FIG. 7 is a flowchart showing details of transfer processing when the attribute is a burstable attribute in the first embodiment.
- FIG. 1 is a block diagram illustrating a schematic configuration of a system including a processor, a main memory, and a cache memory according to the first embodiment.
- FIG. 2 is a diagram showing attributes set in the address space of the first embodiment.
- FIG. 8 is a flowchart showing details of the transfer process when the attribute is the burst impossible attribute in the first embodiment.
- FIG. 9 is a flowchart showing details of transfer processing when the attribute is a cacheable attribute in the first embodiment.
- FIG. 10 is a block diagram showing a configuration of the buffer memory device according to the second embodiment.
- FIG. 11 is a flowchart showing details of the transfer process when the attribute is a cacheable attribute in the second embodiment.
- FIG. 12 is a block diagram illustrating a configuration of the memory system according to the third embodiment.
- FIG. 13 is a diagram illustrating an example of an address conversion table according to the third embodiment.
- FIG. 14 is a block diagram showing a configuration of the buffer memory device according to the fourth embodiment.
- FIG. 15 is a diagram illustrating an example of memory access information according to the fourth embodiment.
- FIG. 16 is a diagram showing an outline of a buffer memory included in the buffer memory device of the fourth embodiment.
- FIG. 17 is a diagram illustrating a determination table illustrating an example of a plurality of determination conditions according to the fourth embodiment.
- FIG. 18 is a block diagram illustrating a detailed configuration of the determination unit according to the fourth embodiment.
- FIG. 19 is a flowchart showing the operation of the buffer memory device according to the fourth embodiment.
- FIG. 20 is a flowchart showing a write process of the buffer memory device according to the fourth embodiment.
- FIG. 21 is a flowchart illustrating attribute determination processing of the buffer memory device according to the fourth embodiment.
- FIG. 22 is a flowchart showing command determination processing of the buffer memory device according to the fourth embodiment.
- FIG. 23 is a flowchart showing read address determination processing of the buffer memory device according to the fourth embodiment.
- FIG. 24 is a flowchart showing a write address determination process of the buffer memory device according to the fourth embodiment.
- FIG. 25 is a flowchart illustrating a buffer amount determination process of the buffer memory device according to the fourth embodiment.
- FIG. 26 is a flowchart illustrating processor determination processing of the buffer memory device according to the fourth embodiment.
- FIG. 27 is a diagram showing an outline of a conventional memory access method.
- FIG. 1 is a block diagram showing a schematic configuration of a system including a processor, a main memory, and a cache memory according to the present embodiment.
- the system according to the present embodiment includes a processor 10, a main memory 20, an L1 (level 1) cache 30, and an L2 (level 2) cache 40.
- the buffer memory device of the present embodiment is provided, for example, between the processor 10 and the main memory 20 in the system as shown in FIG. Specifically, the buffer memory included in the buffer memory device is provided in the L2 cache 40.
- the processor 10 outputs a memory access request to the main memory 20.
- the memory access request is, for example, a read request for reading data or a write request for writing data.
- the read request includes a read address indicating a data read destination area
- the write request includes a write address indicating a data write destination area.
- the main memory 20 includes a plurality of areas belonging to either a cacheable attribute or an uncacheable attribute, and a large-capacity main memory such as an SDRAM (Synchronous Dynamic Random Access Memory) that stores a program or data in the area. It is.
- SDRAM Serial Dynamic Random Access Memory
- data is read from the main memory 20 or data is written to the main memory 20.
- the L1 cache 30 and the L2 cache 40 are cache memories such as SRAMs that store a part of data read by the processor 10 from the main memory 20 and a part of data to be written to the main memory 20.
- the L1 cache 30 and the L2 cache 40 are cache memories that have a smaller capacity than the main memory 20 but can operate at high speed.
- the L1 cache 30 is a cache memory having a higher priority that is arranged closer to the processor 10 than the L2 cache 40, and is usually smaller in capacity than the L2 cache 40 but can operate at high speed.
- the L1 cache 30 acquires the memory access request output from the processor 10 and determines whether data corresponding to the address included in the acquired memory access request has already been stored (hit) or not stored (miss). To do. For example, when a read request hits, the L1 cache 30 reads data corresponding to the read address included in the read request from the L1 cache 30 and outputs the read data to the processor 10. The data corresponding to the read address is data stored in the area indicated by the read address. When the write request is hit, the L1 cache 30 writes the data output from the processor 10 simultaneously with the write request into the L1 cache 30.
- the L1 cache 30 When the read request misses, the L1 cache 30 reads data corresponding to the read request from the L2 cache 40 or the main memory 20 and outputs the read data to the processor 10. When the write request misses, the L1 cache 30 performs refill processing, updates the tag address, and writes the data output from the processor 10 simultaneously with the write request.
- the L2 cache 40 acquires the memory access request output from the processor 10 and determines whether the acquired memory access request has hit or missed. When the read request is hit, the L2 cache 40 reads data corresponding to the read address included in the read request from the inside of the L2 cache 40, and outputs the read data to the processor 10 via the L1 cache 30. When the write request is hit, the data output from the processor 10 at the same time as the write request is written into the L2 cache 40 via the L1 cache 30.
- the L2 cache 40 When the read request is missed, the L2 cache 40 reads data corresponding to the read request from the main memory 20 and outputs the read data to the processor 10 via the L1 cache 30. When the write request misses, the L2 cache 40 performs refill processing, updates the tag address via the L1 cache 30, and writes the data output from the processor 10 simultaneously with the write request.
- processing for providing coherency among the main memory 20, the L1 cache 30, and the L2 cache 40 is performed.
- data written to the cache memory according to the write request is written to the main memory 20 by a write-through process or a write-back process.
- the processor 10 may write data to the main memory 20 without refilling and updating the L1 cache 30. The same applies to the L2 cache 40.
- FIG. 1 shows a configuration in which the L1 cache 30 is provided outside the processor 10, the processor 10 may include the L1 cache 30.
- data may be transferred not only to the main memory 20 but also to other peripheral devices such as an IO device.
- the peripheral device is a device that transfers data to and from the processor 10, and is, for example, a keyboard, a mouse, a display, or a floppy (registered trademark) disk drive.
- FIG. 2 is a diagram showing attributes set in the address space of the present embodiment.
- the area of the address space is allocated to the main memory 20 and other peripheral devices.
- the main memory 20 includes a cacheable area 21 and an uncacheable area 22.
- the cacheable area 21 is an area belonging to a cacheable attribute indicating that data to be cached can be held in a cache memory such as the L1 cache 30 and the L2 cache 40.
- the uncacheable area 22 is an area belonging to an uncacheable attribute indicating that data that should not be cached can be held in a cache memory such as the L1 cache 30 and the L2 cache 40.
- the uncacheable area 22 includes a burstable area 23 and a burst impossible area 24.
- the burstable area 23 is an area that belongs to the burstable attribute indicating that data that should not be cached in the cache memory and that should be burst transferred can be held. Burst transfer is a batch transfer of data, such as burst read and burst write. The burstable area 23 is an area that is not read-sensitive, for example.
- the non-burstable area 24 is an area that belongs to a non-burstable attribute indicating that it should not be cached in the cache memory and that data to be burst transferred cannot be held.
- the burst impossible area 24 is, for example, a read sensitive area.
- one of three exclusive attributes is set for each area.
- FIG. 3 is a block diagram showing a configuration of the buffer memory device according to the present embodiment.
- the buffer memory device 100 shown in the figure is provided in the same chip as the L2 cache 40 shown in FIG. 1, and executes data transfer processing between the processor 10 and the main memory 20.
- the processor 10 includes the L1 cache 30, and the L1 cache 30 is not illustrated.
- the buffer memory device 100 includes an attribute acquisition unit 110, an attribute determination unit 120, a data reading unit 130, a buffer memory 140, a cache memory 150, a table holding unit 160, and an attribute setting unit. 170.
- the buffer memory device 100 reads data corresponding to the read request output from the processor 10 from the main memory 20, the buffer memory 140 or the cache memory 150, and transfers the read data to the processor 10.
- the attribute acquisition unit 110 acquires the attribute of the area indicated by the address included in the read request (hereinafter also referred to as the read address). Specifically, the attribute acquisition unit 110 acquires the attribute of the area indicated by the read address by referring to the area attribute table 161 held in the table holding unit 160.
- a cacheable attribute indicates that the area belongs to the cacheable area 21.
- the burstable attribute indicates that the area belongs to the burstable area 23 of the uncacheable area 22.
- the non-burstable attribute indicates that the area belongs to the non-burstable area 24 of the uncacheable area 22.
- the attribute determination unit 120 determines whether the attribute acquired by the attribute acquisition unit 110 is a cacheable attribute, a burstable attribute, or a burst impossible attribute.
- the data reading unit 130 reads data corresponding to the read request from the main memory 20, the buffer memory 140, or the cache memory 150 according to the determination result of the attribute determination unit 120.
- the data reading unit 130 includes a first data reading unit 131, a second data reading unit 132, and a third data reading unit 133.
- the first data reading unit 131 stores the data held in the area indicated by the read address. Perform a read. Further, the first data reading unit 131 determines whether the read request has hit or missed.
- the first data reading unit 131 reads data corresponding to the read address (hereinafter also referred to as read data) from the buffer memory 140 and outputs the read data to the processor 10.
- the first data reading unit 131 burst-reads data including the read data from the main memory 20 and stores the burst-read data (hereinafter also referred to as burst read data) in the buffer memory 140. To do. Then, only the read data among the stored burst read data is output to the processor 10.
- the burst read data stored in the buffer memory 140 and the read data output to the processor 10 may be executed in parallel.
- the burst read data is, for example, read data and data that is highly likely to be used together with the read data. In general, it is data corresponding to an address continuous to the read address.
- the sizes of the read data and the burst read data are determined based on the data bus width between the processor 10, the main memory 20 and the buffer memory device 100, the memory size of the buffer memory 140, or an instruction from the processor 10, or the like. Is done.
- the size of read data is 4 bytes
- the size of burst read data is 64 bytes.
- the case where the data corresponding to the read address is already held in the buffer memory 140 is “read request hit”, and the data corresponding to the read address is buffered.
- a case where it is not held in the memory 140 is referred to as “read request missed”.
- the second data reading unit 132 performs data reading when the attribute determining unit 120 determines that the attribute of the area indicated by the address included in the read request is a non-burstable attribute. Specifically, the second data reading unit 132 reads only the data (read data) corresponding to the read address from the main memory 20 and outputs the read data to the processor 10.
- the third data reading unit 133 performs data reading when the attribute determining unit 120 determines that the attribute of the area indicated by the address included in the read request is a cacheable attribute. Further, the third data reading unit 133 determines whether the read request has hit or missed.
- the third data reading unit 133 reads data (read data) corresponding to the read address from the cache memory 150 and outputs the read data to the processor 10.
- the third data reading unit 133 reads the read data from the main memory 20 and stores the read data read in the cache memory 150. Then, the stored read data is transferred to the processor 10. Note that the storage of the read data read from the main memory 20 in the cache memory 150 and the output to the processor 10 may be executed in parallel.
- the buffer memory 140 is a storage unit such as a memory that holds data (burst read data) burst-read from the main memory 20 by the first data reading unit 131.
- the buffer memory 140 stores burst read data and addresses corresponding to each data in association with each other.
- the cache memory 150 is a cache memory that holds data read from the main memory 20 by the third data reading unit 133.
- Cache memory 150 includes a tag area for storing addresses and a data area for storing data.
- the cache memory 150 corresponds to the L2 cache 40 of FIG.
- the table holding unit 160 is a storage unit such as a memory that holds a region attribute table 161 in which an address of a main memory is associated with a region attribute.
- the area attribute table 161 is generated and changed by the attribute setting unit 170.
- FIG. 4 is a diagram illustrating an example of the region attribute table 161 according to the present embodiment.
- the area attribute table 161 is a table in which the physical address of the main memory 20 is associated with the attribute of the area indicated by the physical address. “Cashable” in the figure indicates a cacheable attribute, “burst ready” indicates a burstable attribute, and “burst impossible” indicates a burst impossible attribute.
- the attribute acquisition unit 110 refers to the area attribute table 161 and sets the burst impossible attribute as the attribute of the area indicated by the read address. get.
- the attribute setting unit 170 sets the attribute corresponding to the address of the main memory 20 to any one of the cacheable attribute, the burstable attribute, and the burst impossible attribute. These attributes are set according to characteristics of data stored in the main memory 20 based on instructions from the processor 10.
- the attribute setting unit 170 sets a read-sensitive area in the uncacheable area as a non-burstable attribute.
- the attribute setting part 170 sets an attribute to each address according to the availability of data.
- the attribute setting unit 170 sets a cacheable attribute to an address indicating an area that stores data that is continuously read and is likely to be used many times.
- a burstable attribute is set to an address indicating an area storing data that is read continuously but is likely to be used only once.
- a burst impossible attribute is set to an address indicating an area where other data is stored.
- each attribute is set arbitrarily or as necessary to an address indicating an area where data is not stored.
- FIG. 5 is a diagram showing details of the buffer memory 140 and the cache memory 150 of the present embodiment.
- the buffer memory 140 stores the address (physical address) of the main memory 20 and the data read by the first data reading unit 131 from the area indicated by the address in association with each other.
- the buffer memory 140 can hold a plurality (for example, 8) of data having a predetermined number of bytes (for example, 64 bytes).
- the buffer memory 140 is used only for reading data from the main memory 20. That is, it is not used for writing data into the main memory 20.
- the buffer memory 140 is a PFB (Prefetch Buffer) that holds data that is highly likely to be read in advance.
- PFB Prefetch Buffer
- the cache memory 150 is, for example, a 4-way set associative cache memory as shown in FIG.
- the cache memory 150 has four ways having the same configuration, and each way has a plurality of (for example, 1024) cache entries.
- One cache entry has a valid flag V, a tag, line data, and a dirty flag D.
- the valid flag V is a flag indicating whether or not the data of the cache entry is valid.
- a tag is a copy of a tag address.
- the line data is a copy of a predetermined number of bytes of data (for example, 64 bytes of data) in the block specified by the tag address and the set index.
- the dirty flag D is a flag indicating whether or not the cached data needs to be written back to the main memory.
- the buffer memory 140 stores addresses and data in association with each other in the same manner as the relationship between the cache memory tag and data.
- the number of ways the cache memory 150 has is not limited to four.
- the number of cache entries that one way has and the number of bytes of line data that one cache entry has may be any value.
- the cache memory 150 may be another type of cache memory. For example, a direct map method or a full associative method may be used.
- the buffer memory device 100 reads data to be burst read from the uncacheable area 22 of the main memory 20 including the cacheable area 21 and the uncacheable area 22.
- a buffer memory 140 that holds data that is burst read from the non-burstable area 24 that is held is provided.
- the data corresponding to the read request and the data that is likely to be read after that are burst read, so that the memory access can be speeded up.
- the buffer memory device 100 illustrated in FIG. 3 also includes a processing unit that performs a write process of write data corresponding to a write request.
- the attribute acquisition unit 110 acquires the attribute of the area indicated by the write address included in the write request in the same manner as the read request.
- the attribute determination unit 120 determines whether the attribute acquired by the attribute acquisition unit 110 is a cacheable attribute, a burstable attribute, or a non-burstable attribute. Then, a data writing unit (not shown) writes write data to the cache memory 150 or the main memory 20 based on the determination result.
- write data is written to the cache memory 150 when the attribute is a cacheable attribute. If the attribute is an uncacheable attribute, write data is written to the main memory 20. At this time, at the time of writing to the cache memory 150, it is determined whether the write request hits or misses, and if it hits, the write data is written to the cache memory 150, and if missed, it is written to the main memory 20. Write data.
- the buffer memory device 100 can also write write data in response to a write request from the processor 10.
- the data reading unit 130 determines whether the write address matches the address corresponding to the data held in the buffer memory 140. If the write address matches, the data read unit 130 holds the data in the buffer memory 140. You may invalidate existing data. For example, the data is invalidated by setting a flag indicating that the corresponding data is invalid, or by deleting the corresponding data from the buffer memory 140.
- FIG. 6 is a flowchart showing the operation of the buffer memory device 100 of the present embodiment.
- the buffer memory device 100 acquires the read request from the processor 10 and executes the read process according to the present embodiment.
- the attribute acquisition unit 110 acquires the attribute of the area indicated by the read address by referring to the area attribute table 161 (S101). Then, the attribute determination unit 120 determines whether the attribute acquired by the attribute acquisition unit 110 is a cacheable attribute, a burstable attribute, or a burst impossible attribute (S102).
- the first data reading unit 131 executes the first transfer process (S103). ).
- the first transfer process is a process executed when the attribute is a burst enable attribute.
- the data is burst read from the main memory 20, and the burst read data is transferred to the buffer memory 140. It is a process to store in.
- FIG. 7 is a flowchart showing details of transfer processing when the attribute is a burstable attribute in the present embodiment.
- the first data reading unit 131 determines whether the read request has hit or missed (S201). When the read request is missed (No in S201), the first data reading unit 131 burst-reads the burst read data including the read data from the main memory 20 (S202). Then, the first data reading unit 131 stores the read burst read data in the buffer memory 140 (S203). Further, the first data reading unit 131 reads the read data from the buffer memory 140 (S204), and outputs the read data to the processor 10 (S205). At this time, the burst read data stored in the buffer memory 140 and the read data output to the processor 10 may be simultaneously executed.
- the first data reading unit 131 reads the read data corresponding to the read request from the buffer memory 140 (S204). Then, the first data reading unit 131 outputs the read data that has been read to the processor 10 (S205).
- the second data reading unit 132 performs the second transfer. Processing is executed (S104).
- the second transfer process is a process that is executed when the attribute is a non-burstable attribute, and is a process of reading data from the main memory 20 and transferring the read data to the processor 10.
- FIG. 8 is a flowchart showing details of the transfer process when the attribute is a burst impossible attribute in the present embodiment.
- the second data reading unit 132 reads the read data from the main memory 20 (S301). Then, the second data reading unit 132 outputs the read data that has been read to the processor 10 (S302).
- the third data reading unit 133 executes the third transfer process. (S105).
- the third transfer process is a process executed when the attribute is a cacheable attribute.
- the data is read from the main memory 20 and the read data is stored in the cache memory 150. It is processing.
- FIG. 9 is a flowchart showing details of transfer processing when the attribute is a cacheable attribute in the present embodiment.
- the third data reading unit 133 determines whether the read request has been hit or missed (S401). When the read request is missed (No in S401), the third data reading unit 133 reads the read data from the main memory 20 (S402). Then, the third data reading unit 133 stores the read data that has been read in the cache memory 150 (S403). Further, the third data reading unit 133 reads the read data from the cache memory 150 (S404), and outputs the read data to the processor 10 (S405). At this time, the storage of the read data in the cache memory 150 and the output to the processor 10 may be executed simultaneously.
- the third data reading unit 133 reads the read data corresponding to the read request from the cache memory 150 (S404). Then, the third data reading unit 133 outputs the read data that has been read to the processor 10 (S405).
- the buffer memory device 100 determines which attribute area the area indicated by the read address is, and executes data reading according to the determination result.
- the buffer memory device 100 has a burst that holds data to be burst read out of the uncacheable area 22 of the main memory 20 including the cacheable area 21 and the uncacheable area 22.
- a buffer memory 140 that holds data that has been burst read from the impossible area 24 is provided. Then, it is determined which attribute area the area indicated by the read address is, and data is read according to the determination result. At this time, if the attribute is a burstable attribute, the data burst-read from the main memory 20 is stored in the buffer memory 140.
- the cache memory can hold data that is expected to be used frequently. Furthermore, by setting an area that disables burst reading in the main memory 20, it is possible to prevent problems caused by reading more data than necessary, and by setting an area that enables burst reading, Memory access can be speeded up.
- the buffer memory device When the attribute of the area indicated by the address included in the read request is a cacheable attribute, the buffer memory device according to the present embodiment burst-reads data including data corresponding to the read request. Thereby, the memory access can be further speeded up.
- FIG. 10 is a block diagram showing the configuration of the buffer memory device of the present embodiment.
- the buffer memory device 200 shown in the figure is different from the buffer memory device 100 of FIG. 3 in that a data reading unit 230 is provided instead of the data reading unit 130.
- symbol is attached
- the data reading unit 230 reads data corresponding to the read request from the main memory 20, the buffer memory 140, or the cache memory 150 in accordance with the determination result of the attribute determination unit 120.
- the data reading unit 230 includes a first data reading unit 131, a second data reading unit 132, and a third data reading unit 233.
- the third data reading unit 233 executes data reading when the attribute determining unit 120 determines that the attribute of the area corresponding to the address included in the read request is a cacheable attribute. Further, the third data reading unit 233 determines whether the read request has hit or missed.
- the third data reading unit 233 reads data corresponding to the read address from the cache memory 150 or the buffer memory 140 and outputs the read data to the processor 10.
- the third data reading unit 233 burst-reads the data including the read data from the main memory 20 and stores the burst-read data (burst read data) in the cache memory 150 and the buffer memory 140. To do.
- the data including the read data among the burst read data is stored in the cache memory 150, and the remaining data of the burst read data excluding the data held in the cache memory 150 is stored in the buffer memory 140. Then, read data of the stored burst read data is read from the cache memory 150 and the read data read is output to the processor 10.
- the burst read data stored in the cache memory 150 and the buffer memory 140 and the read data output to the processor 10 may be executed in parallel.
- the third data reading unit 233 burst-reads 128-byte data including the read data. Then, the third data reading unit 233 stores 64 bytes of the read data among the 128 bytes of burst read data in the cache memory 150 and stores the remaining 64 bytes of data in the buffer memory 140.
- the buffer memory device 200 when it is determined that the attribute of the area indicated by the read address is the cacheable attribute, stores data including data corresponding to the read address. Burst read is performed, and the burst read data is stored in the cache memory 150 and the buffer memory 140.
- the buffer memory device 200 according to the present embodiment is compared with the operation of the buffer memory device 100 according to the first embodiment when the attribute is determined to be a cacheable attribute (S105 in FIG. 6, FIG. 9). Is different. Therefore, below, it demonstrates focusing on a different point and may abbreviate
- the buffer memory device 200 acquires a read request from the processor 10 to execute the read process of the present embodiment.
- the attribute acquisition unit 110 refers to the area attribute table 161 to acquire the attribute of the area indicated by the read address (S101). Then, the attribute determination unit 120 determines whether the attribute acquired by the attribute acquisition unit 110 is a cacheable attribute, a burstable attribute, or a burst impossible attribute (S102).
- the attribute determining unit 120 determines that the attribute of the area indicated by the read address is a burstable attribute (“uncacheable (burst possible)” in S102)
- the first transfer process is executed (S103: details) FIG. 7).
- the second transfer process is executed (S104: FIG. 8 for details).
- the third data reading unit 233 executes a third transfer process (S105).
- the third transfer process is a process executed when the attribute is a cacheable attribute.
- the data is read from the main memory 20 and the read data is stored in the cache memory 150. It is processing.
- FIG. 11 is a flowchart showing details of transfer processing when the attribute is a cacheable attribute in the present embodiment.
- the third data reading unit 233 determines whether the read request has hit or missed (S501). When the read request is missed (No in S501), the third data reading unit 233 burst-reads data including the read data (burst read data) from the main memory 20 (S502). Then, the third data reading unit 233 stores the burst read data in the cache memory 150 and the buffer memory 140 (S503). Further, the third data reading unit 233 reads the read data from the cache memory 150 (S504), and outputs the read data to the processor 10 (S505). At this time, the storage of the burst read data in the cache memory 150 and the output of the read data to the processor 10 may be performed simultaneously.
- the third data reading unit 233 reads the read data corresponding to the read request from the cache memory 150 or the buffer memory 140 (S504). Then, the third data reading unit 233 outputs the read data that has been read to the processor 10 (S505).
- the buffer memory device 200 when it is determined that the attribute of the area indicated by the read address is the cacheable attribute, stores the data including the data corresponding to the read address in the cache memory 150. And burst read to the buffer memory 140.
- the buffer memory 140 can be used even when the processor 10 outputs a read request for the cacheable area. That is, by performing a burst read of more data than the data corresponding to the read request and storing the burst read data in the buffer memory 140, the memory access at the time of reading can be speeded up.
- an MMU Memory Management Unit
- OS Operating System
- FIG. 12 is a block diagram showing the configuration of the memory system of the present embodiment.
- the memory system 300 shown in the figure includes processors 310a and 310b, a main memory 320, and an L2 cache 330.
- the memory system 300 of this embodiment is a system including a multiprocessor including a processor 310a and a processor 310b.
- the processor 310a is a CPU that includes an L1 cache 311 and a TLB (Translation Lookaside Buffer) 312 and outputs a memory access request (read request or write request) to the main memory 320. Further, the processor 310a manages the main memory 320 by using an MMU and an OS that are built in or externally provided.
- TLB Translation Lookaside Buffer
- the processor 310a manages an address conversion table in which a physical address and a logical address of the main memory 320 are associated with each other. Further, the attribute of the area indicated by the physical address of the main memory 320 is set, and the set attribute and the physical address are associated with each other and stored in the TLB 312 that holds the address conversion table.
- the processor 310a corresponds to the attribute setting unit 170 of the first and second embodiments.
- the processor 310b is a processor having the same configuration as the processor 310a.
- the processors 310a and 310b may be two physically different processors, or two virtual processors obtained by virtually dividing one processor by an OS.
- the L1 cache 311 and the TLB 312 may be provided for each processor.
- the L1 cache 311 and the TLB 312 may be provided between the processor 310a and the L2 cache 330.
- the L1 cache 311 acquires a memory access request issued by the processor 310a, and determines whether the acquired memory access request (read request or write request) has hit or missed.
- the L1 cache 311 corresponds to the L1 cache 30 of the first and second embodiments.
- the L1 cache 311 When the read request is hit, the L1 cache 311 reads data corresponding to the read address included in the read request from the inside of the L1 cache 311 and outputs the read data to the processor 310a. When the write request is hit, the L1 cache 311 writes the data output from the processor 310a simultaneously with the write request into the L1 cache 311.
- the L1 cache 311 When the read request misses, the L1 cache 311 reads data corresponding to the read request from the L2 cache 330 or the main memory 320, and outputs the read data to the processor 310a. When the write request misses, the L1 cache 311 writes the data output from the processor 310a simultaneously with the write request to the L2 cache 330 or the main memory 320.
- the TLB 312 is a cache memory that stores the address conversion table 313.
- the TLB 312 corresponds to the table holding unit 160 of the first and second embodiments.
- the address conversion table 313 is a table in which a logical address, a physical address, and an attribute of an area indicated by the physical address are associated with each other.
- the address conversion table 313 corresponds to the area attribute table 161 of the first and second embodiments.
- FIG. 13 is a diagram illustrating an example of an address conversion table according to the present embodiment.
- the address conversion table 313 is a table in which logical addresses, physical addresses, access permission attributes, and memory attributes are associated with each other.
- the logical address is an address virtually set by the processor 310a and is also called a virtual address.
- the physical address is an address indicating an actual writing or reading area of the main memory 320 and is also referred to as a real address.
- the memory attribute indicates whether the area is a cacheable area, a burstable area, or a non-burstable area.
- logical address C indicates an area indicated by “physical address 3” in the main memory 320, and the area is “user mode” and “burst impossible area”. It shows that there is. Therefore, data cannot be burst read from the area indicated by “logical address C”.
- the main memory 320 is a storage unit such as an SDRAM that stores programs or data. Data reading from the main memory 320 or data writing to the main memory 320 is executed in response to a memory access request (read request or write request) output from the processors 310a and 310b.
- the main memory 320 corresponds to the main memory 20 of the first and second embodiments.
- the L2 cache 330 acquires the memory access request output from the processors 310a and 310b, and determines whether the acquired memory access request has hit or missed.
- the L2 cache 330 corresponds to the L2 cache 40 (cache memory 150) of the first and second embodiments.
- the memory access request input to the L2 cache 330 is issued by the processor 310a.
- the memory access request may be issued by another processor (such as the processor 310b) or DMAC (Direct Memory Access Controller).
- the L2 cache 330 When the read request is hit, the L2 cache 330 reads data corresponding to the read address included in the read request from the inside of the L2 cache 330, and outputs the read data to the processor 310a or the like. When the write request is hit, the L2 cache 330 writes the data output from the processor 310a simultaneously with the write request into the L2 cache 330.
- the L1 cache 311 When the read request misses, the L1 cache 311 reads data corresponding to the read request from the L2 cache 330 or the main memory 320, and outputs the read data to the processor 310a. When the write request misses, the L1 cache 311 writes the data output from the processor 310a simultaneously with the write request to the L2 cache 330 or the main memory 320.
- the L2 cache 330 includes queues 331a and 331b, attribute determination units 332a and 332b, selectors 333a and 333b, a PFB 334, a cache memory 335, and a memory interface 336.
- the queue 331a is a first-in first-out memory (FIFO memory: First In First Out) that temporarily holds a memory access request output from the processor 310a.
- the held memory access request includes the attribute of the area indicated by the address as well as the address.
- the queue 331b has the same configuration as the queue 331a and is a FIFO memory that temporarily holds a memory access request output from the processor 310b.
- queues 331a and 331b correspond to the attribute acquisition unit 110 of the first and second embodiments.
- the attribute determination unit 332a reads the memory access request held in the queue 331a, and determines whether the attribute included in the read memory access request is a cacheable attribute, a burstable attribute, or a non-burstable attribute. . Then, according to the determination result, the attribute determination unit 332a outputs a memory access request to the PFB 334 and the cache memory 335 or to the memory interface 336 via the selector 333a or 333b and the memory interface 336.
- the attribute determination unit 332a when it is determined that the attribute is a cacheable attribute or a burstable attribute, the attribute determination unit 332a sends a memory access request to the PFB 334 and the cache memory 335 via the selector 333a and the memory interface 336. Output. When it is determined that the attribute is a non-burstable attribute, the attribute determination unit 332a outputs a memory access request to the main memory 320 via the selector 333b and the memory interface 336.
- the attribute determination unit 332b has the same configuration as the attribute determination unit 332a, reads a memory access request held in the queue 331b, and determines an attribute included in the read memory access request.
- attribute determination units 332a and 332b correspond to the attribute determination unit 120 of the first and second embodiments.
- the selectors 333a and 333b arbitrate which of the plurality of memory access requests input from the two queues 331a and 331b via the attribute determination unit 332a or 332b, and the arbitrated memory access request via the memory interface 336. , PFB 334, cache memory 335, and main memory 320 are selected.
- the PFB 334 is a buffer memory that stores the address of the main memory 320 and the data read from the area indicated by the address in association with each other.
- the PFB 334 is used for prefetch processing that holds in advance data that is likely to be read by the processor 310a or the like in response to a read request output from the processor 310a or the like.
- the PFB 334 corresponds to the buffer memory 140 of the first and second embodiments.
- the cache memory 335 is a cache memory that holds data read from the main memory 320.
- the cache memory 335 corresponds to the cache memory 150 of the first and second embodiments.
- the memory interface 336 determines whether the read request hits or misses, and executes reading of data from the main memory 320, the PFB 334, or the cache memory 335 according to the determination result.
- the memory interface 336 corresponds to the data reading unit 130 (230) of the first and second embodiments.
- the memory interface 336 reads data from the main memory 320 and outputs the read data to the processor 310a.
- the memory interface 336 determines whether the read request hits or misses. If the read request is hit, the corresponding read data is read from the PFB 334 and output to the processor 310a. When the read request is missed, the data including the corresponding read data is burst read from the main memory 320, and the burst read data is written to the PFB 334. Then, read data is read from the PFB 334 and output to the processor 310a.
- the memory interface 336 determines whether the read request hits or misses. When the read request is hit, the corresponding read data is read from the cache memory 335 and output to the processor 310a. If the read request misses, data including the corresponding read data is read from the main memory 320 and the read data is written to the cache memory 335. Then, the data is read from the cache memory 335 and output to the processor 310a. At this time, as in the second embodiment, data may be burst read from the main memory 320 and stored in the cache memory 335 and the PFB 334.
- a read request issued from the processor 310a or the like is stored in the queue 331a or the like.
- the read request includes an attribute obtained by referring to the address conversion table 313 (S101).
- the attribute determination unit 332a determines whether the attribute included in the read request is a cacheable attribute, a burstable attribute, or a non-burstable attribute (S102). The determination result is output to the memory interface 336 via the selector 333a and the like.
- the memory interface 336 executes the first transfer process (S103).
- the memory interface 336 determines whether the read request has hit or missed (S201). When the read request is missed (No in S201), the memory interface 336 performs burst read of the burst read data including the read data from the main memory 320 (S202). Then, the memory interface 336 stores the read burst read data in the PFB 334 (S203). Further, the memory interface 336 reads the read data from the PFB 334 (S204), and outputs the read data to the processor 310a (S205).
- the memory interface 336 reads the read data from the PFB 334 (S204), and outputs the read data to the processor 310a (S205).
- the memory interface 336 executes the second transfer process. (S104).
- the memory interface 336 reads the read data from the main memory 320 (S301). Then, the memory interface 336 outputs the read data that has been read to the processor 310a (S302).
- the memory interface 336 executes a third transfer process (S105).
- the memory interface 336 determines whether the read request has hit or missed (S401). When the read request is missed (No in S401), the memory interface 336 reads the read data from the main memory 320 (S402). Then, the memory interface 336 stores the read data read out in the cache memory 335 (S403). Further, the memory interface 336 reads the read data from the cache memory 335 (S404), and outputs the read data to the processor 310a (S405).
- the memory interface 336 reads the read data from the cache memory 335 (S404), and outputs the read data to the processor 310a (S405).
- the memory interface 336 stores the main memory Data including read data from 320 may be burst read (flow chart shown in FIG. 11). At this time, the read burst read data is stored in the cache memory 335 and the PFB 334.
- the attribute is set by the MMU in the processor, and the set attribute is stored in the address conversion table held in the TLB.
- an address conversion table provided conventionally can be used, and a new attribute storage buffer is not required, and the configuration can be simplified.
- the buffer memory device temporarily holds data to be written to the main memory output from the processor, and burst-writes the held data when a predetermined condition is satisfied.
- the data bus can be used effectively and data can be transferred efficiently.
- FIG. 14 is a block diagram showing the configuration of the buffer memory device of the present embodiment.
- the buffer memory device 400 shown in the figure transfers data between the plurality of processors 10a, 10b, and 10c and the main memory 20 in accordance with a memory access request issued by each of the plurality of processors 10a, 10b, and 10c.
- the plurality of processors 10a, 10b, and 10c are referred to as the processor 10 when it is not necessary to distinguish between them.
- the buffer memory device 400 is provided in the same chip as the L2 cache 40 shown in FIG.
- the L1 cache 30 shown in FIG. 1 is provided in each of the plurality of processors 10a, 10b, and 10c, and is not shown in FIG.
- the L1 cache 30 may be provided between the plurality of processors 10a, 10b, and 10c and the buffer memory device 400, and may be shared by the plurality of processors 10a, 10b, and 10c.
- the buffer memory device 400 includes a memory access information acquisition unit 410, a determination unit 420, a control unit 430, a data transfer unit 440, STB (Store Buffer) 450a, 450b, and 450c, a cache, A memory 460 and a PFB 470 are provided.
- STBs 450a, 450b, and 450c are referred to as STB450 unless it is necessary to distinguish between them.
- the memory access information acquisition unit 410 acquires a memory access request from the processor 10, and acquires memory access information indicating the nature of the memory access request issued by the processor 10 from the acquired memory access request.
- the memory access information is information included in the memory access request and information accompanying it, and includes command information, address information, attribute information, processor information, and the like.
- the command information is information indicating whether the memory access request is a write request or a read request, and other commands related to data transfer.
- the address information is information indicating a write address indicating a data write area or a read address indicating a data read area.
- the attribute information is information indicating whether the attribute of the area indicated by the write address or the read address is a cacheable attribute, a burst enable attribute, or a burst disable attribute.
- the processor information is information indicating a thread that has issued a memory access request, a logical processor (LP), and a physical processor (PP).
- the memory access information acquisition unit 410 holds a table in which the address of the main memory 20 is associated with the attribute of the area indicated by the address, and acquires the attribute information by referring to the address information and the table. May be.
- FIG. 15 is a diagram illustrating an example of memory access information according to the present embodiment.
- memory access information 501 and 502 are shown.
- the memory access information 501 indicates that the memory access request is a write request issued by the logical processor “LP1” of the physical processor “PP1”, and data is written to an area belonging to the burstable attribute indicated by “write address 1”. It shows that it includes a write command. Further, it is indicated that the write request includes an “All Sync” command.
- the memory access information 502 indicates that the memory access request is a read request issued by the logical processor “LP1” of the physical processor “PP1”, and data is read from the area belonging to the burstable attribute indicated by “read address 1”.
- the read command shown is included. Further, it is indicated that the read request includes a “Self Sync” command.
- the determination unit 420 determines whether or not the property indicated by the memory access information acquired by the memory access information acquisition unit 410 satisfies a predetermined condition. Specifically, the determination unit 420 uses the command information, attribute information, address information, processor information, and the like acquired as memory access information, and the buffer amount information acquired from the STB 450 via the control unit 430 to determine the condition. Make a decision. Details of the conditions and the processing of the determination unit 420 will be described later.
- the buffer amount information is information indicating the amount of data held in each STB 450.
- control unit 430 stores data held in the STB corresponding to the condition among the plurality of STBs 450a, 450b, and 450c. To sweep out. Specifically, control unit 430 outputs a sweep command to STB 450. The sweep command is output to the STB that is the target of the data sweep, and the STB that has received the sweep command outputs the stored data to the main memory 20.
- control unit 430 controls the data transfer unit 440 by outputting control information to the data transfer unit 440.
- control information includes at least attribute information, and the control unit 430 determines a write data write destination, a read data read destination, and the like according to the attribute of the area indicated by the address.
- control unit 430 outputs a buffer amount, which is the amount of data held in each of the plurality of STBs 450a, 450b, and 450c, to the determination unit 420.
- the data transfer unit 440 transfers data between the processor 10 and the main memory 20 under the control of the control unit 430. Specifically, when a write request is output from the processor 10, write data output from the processor 10 for writing to the main memory 20 is written to any of the STB 450, the cache memory 460, and the main memory 20. When a read request is output from the processor 10, the read data is read from any one of the cache memory 460, the PFB 470, and the main memory 20, and the read read data is output to the processor 10. Which memory is used is determined by the control unit 430 according to the attribute of the area indicated by the address.
- the data transfer unit 440 includes a first data transfer unit 441, a second data transfer unit 442, and a third data transfer unit 443.
- the first data transfer unit 441 transfers data when the area indicated by the address belongs to the burstable attribute.
- the first data transfer unit 441 writes the write data corresponding to the write request in the STB 450.
- Which of the plurality of STBs 450a, 450b, and 450c is to be written is determined by the processor information included in the control information. Specifically, write data is written to the STB corresponding to the processor that issued the write request.
- the first data transfer unit 441 determines whether or not read data corresponding to the read request is held in the PFB 470. That is, it is determined whether the read request has hit or missed. When the read request is hit, the first data transfer unit 441 reads the corresponding read data from the PFB 470 and outputs the read data to the processor 10. When the read request is missed, the first data transfer unit 441 performs burst read from the main memory 20 including the read data corresponding to the read request, and writes the burst read data in the PFB 470. Then, read data corresponding to the read request is read from the PFB 470, and the read data read is output to the processor 10. Note that the read data corresponding to the read request may be output to the processor 10 simultaneously with the burst read data read from the main memory 20 being written into the PFB 470.
- the second data transfer unit 442 transfers data when the area indicated by the address belongs to the burst impossible attribute.
- the second data transfer unit 442 writes write data corresponding to the write request in the main memory 20.
- the second data transfer unit 442 reads the read data corresponding to the read request from the main memory 20 and outputs the read read data to the processor 10.
- the third data transfer unit 443 transfers data when the area indicated by the address belongs to the cacheable attribute.
- the write data write destination differs depending on whether the third data transfer unit 443 performs the write back process or the write through process.
- the third data transfer unit 443 determines whether the write request hits or misses. When the write request hits, write data is written into the cache memory 460. If the write request is missed, the third data transfer unit 443 performs refill processing on the cache memory 460 and writes the address (tag address) and write data included in the write request to the cache memory 460. In any case, the write data written to the cache memory 460 is written to the main memory 20 at an arbitrary timing. If the write request is missed, the write data may be directly written to the main memory 20 without writing the write data to the cache memory 460.
- the third data transfer unit 443 determines whether the write request hits or misses. When the write request is hit, the third data transfer unit 443 writes the write address and the write data in the STB 450. The write data written to the STB 450 is transferred from the STB 450 to the cache memory 460 and the main memory 20 according to the control of the control unit 430 when the determination unit 420 determines that the nature of the subsequent memory access request satisfies the condition. Burst write.
- the third data transfer unit 443 writes the write address and write data in the STB 450.
- the write data and the write address written to the STB 450 are burst-written from the STB 450 to the cache memory 460 and the main memory 20 when the determination unit 420 determines that the nature of the subsequent memory access request satisfies the condition.
- the third data transfer unit 443 determines whether the read request hits or misses. When the read request is hit, the third data transfer unit 443 reads the read data from the cache memory 460 and outputs the read data to the processor 10.
- the third data transfer unit 443 reads the read data from the main memory 20 and writes the read data and the read address to the cache memory 460. Then, the third data transfer unit 443 reads the read data from the cache memory 460 and outputs the read data to the processor 10. Note that the read data read from the main memory 20 may be output to the processor 10 at the same time as it is written to the cache memory 460.
- Each of the STBs 450a, 450b, and 450c is a store buffer (STB) that corresponds to the plurality of processors 10a, 10b, and 10c and holds write data corresponding to a write request issued by the corresponding processor.
- the STB 450 is a buffer memory that temporarily holds write data in order to merge write data output from the plurality of processors 10.
- the STB 450 is provided for each physical processor.
- the STB 450 can hold data of up to 128 bytes. Data held in the STB 450 is burst-written to the main memory 20 based on control from the control unit 430. When the write request is an access to an area belonging to the cacheable attribute and the write-through process is performed, the data held in the STB 450 is burst-written to the main memory 20 and the cache memory 460.
- FIG. 16 is a diagram showing an outline of the STB 450 provided in the buffer memory device 400 of the present embodiment.
- STBs 450a, 450b, and 450c are provided corresponding to physical processors (processors 10a (PP0), 10b (PP1), and 10c (PP2)), respectively. That is, the STB 450a holds buffer control information such as a write address output from the processor 10a and write data.
- the STB 450b holds buffer control information such as a write address output from the processor 10b and write information.
- the STB 450c holds buffer control information such as a write address output from the processor 10c and write data.
- the buffer control information is information included in the write request, and is information for managing data written to the STB 450. That is, the buffer control information includes at least a write address and information indicating a physical processor and a logical processor that output corresponding write data.
- the STB provided for each physical processor has two areas capable of holding 64-byte data. For example, these two areas may be associated with each thread.
- the cache memory 460 is, for example, a 4-way set associative cache memory, similar to the cache memory 150 of the first embodiment.
- the PFB 470 corresponds to the buffer memory 140 of the first embodiment, and is a buffer memory that stores the address of the main memory 20 and the data read by the first data transfer unit 441 from the area indicated by the address in association with each other. is there.
- FIG. 17 is a diagram illustrating a determination table showing an example of a plurality of determination conditions according to the present embodiment.
- an attribute determination condition (“Uncache”)
- a command determination condition (“All Sync” and “Self Sync”)
- an address determination condition (“RAW Hazard” and “Another Line Access”
- the buffer amount determination condition (“Slot Full”) and the processor determination condition (“same LP, different PP”) are shown.
- the attribute determination condition is a condition for sweeping out data from the STB 450 and determining an STB to be swept out according to the attribute of the area indicated by the address included in the memory access request using the attribute information.
- the “Uncache” condition shown in FIG. 17 is an example of an attribute determination condition.
- the determination unit 420 determines whether or not the attribute of the area indicated by the address included in the memory access request is a burst impossible attribute.
- the control unit 430 holds the data from the STB that holds data corresponding to the memory access request issued by the same logical processor that issued the memory access request. The stored data is swept out to the main memory 20.
- the control unit 430 may use a virtual processor corresponding to a thread instead of a logical processor as a reference for determining the STB to be swept out.
- the command determination condition is a condition for sweeping out data from the STB 450 and determining the STB to be swept out according to the command included in the memory access request using the command information.
- the “All Sync” condition and the “Self Sync” condition shown in FIG. 17 are examples of command determination conditions.
- the determination unit 420 determines whether or not the “All Sync” command is included in the memory access request.
- the “All Sync” command is a command for sweeping out all data held in all STBs 450 to the main memory 20.
- the control unit 430 sweeps out all the data held in all the STBs 450 to the main memory 20.
- the determination unit 420 determines whether or not the “Self Sync” command is included in the memory access request.
- the “Self Sync” command is a command for sweeping only the data output from the processor that issued the command from the STB 450 to the main memory 20.
- the control unit 430 transmits data corresponding to the memory access request issued by the same logical processor as the logical processor that issued the memory access request. The stored data is swept out to the main memory 20 from the STB that holds.
- the control unit 430 may use a virtual processor corresponding to a thread instead of a logical processor as a reference for determining the STB to be swept out.
- the address determination condition is a condition for sweeping out data from the STB 450 and determining the STB to be swept out according to the address included in the memory access request using the address information.
- the “RAW Hazard” condition and the “Another Line Access” condition shown in FIG. 17 are examples of address determination conditions.
- the determination unit 420 determines whether or not a write address that matches the read address included in the read request is held in at least one of the plurality of STBs 450.
- the control unit 430 holds all the data up to the Hazard line, that is, the write data corresponding to the write address before the write data. The data is swept out to the main memory 20.
- the determination unit 420 determines whether the write address included in the write request is related to the write address included in the write request input immediately before. Specifically, it is determined whether or not the two write addresses are consecutive addresses. At this time, it is assumed that the two write requests are issued by the same physical processor. When it is determined that the two write addresses are not consecutive addresses, the control unit 430 sweeps the data held in the STB 450 before the write data corresponding to the write request input immediately before to the main memory 20.
- the buffer amount determination condition is a condition for sweeping out data from the STB 450 and determining an STB to be swept out according to the data amount held in the STB 450 using the buffer amount information.
- the “Slot Full” condition shown in FIG. 17 is an example of a buffer amount determination condition.
- the determination unit 420 determines whether or not the buffer amount that is the data amount held in the STB 450 is full (128 bytes). When it is determined that the buffer amount is 128 bytes, the control unit 430 sweeps the data of the STB to the main memory 20.
- the processor determination condition is a condition for sweeping out data from the STB 450 and determining an STB to be swept out according to which logical processor and physical processor issued a memory access request using the processor information. .
- the “same LP, different PP” condition shown in FIG. 17 is an example of a processor determination condition.
- the logical processor that issued the memory access request is the same as the logical processor that issued the write request corresponding to the write data held in the STB 450. Further, it is determined whether or not the physical processor that has issued the memory access request is different from the physical processor that has issued the write request. That is, write data corresponding to a write request previously issued by a physical processor different from the physical processor indicated by the processor information and the same logical processor indicated by the logical processor indicated by the processor information is stored in at least one STB. The determination unit 420 determines whether or not it is held.
- control unit 430 sweeps out data corresponding to the write request previously issued by the logical processor from the STB 450. It may be determined whether the threads are the same instead of the logical processor.
- data is swept from the STB 450 when each condition is satisfied. Note that it is not necessary to determine all of the above conditions.
- a new condition may be added to the above condition, or the above condition and the new condition may be replaced.
- the “Slot Full” condition is a condition for determining whether or not the buffer amount is full.
- a predetermined buffer amount such as half the maximum value of the buffer amount that can be held in the STB. It may be a condition for determining whether or not. For example, although the maximum value of the data amount that can be held in the STB 450 is 128 bytes, whether or not the buffer amount has reached 64 bytes when the data bus width between the STB 450 and the main memory 20 is 64 bytes. May be determined.
- FIG. 18 is a block diagram illustrating a detailed configuration of the determination unit 420 according to the present embodiment.
- the determination unit 420 includes an attribute determination unit 421, a processor determination unit 422, a command determination unit 423, an address determination unit 424, a buffer amount determination unit 425, and a determination result output unit 426. Prepare.
- the attribute determination unit 421 acquires attribute information from the memory access information acquired by the memory access information acquisition unit 410, and the attributes of the area indicated by the address included in the memory access request include a cacheable attribute, a burstable attribute, and a burst Determine which of the impossible attributes. Then, the attribute determination unit 421 outputs the obtained determination result to the determination result output unit 426.
- the processor determination unit 422 acquires the processor information from the memory access information acquired by the memory access information acquisition unit 410, and the processor that has issued the memory access request selects any one of the plurality of logical processors and physical processors. Determine if it is a physical processor. Then, the processor determination unit 422 outputs the obtained determination result to the determination result output unit 426.
- the command determination unit 423 acquires command information from the memory access information acquired by the memory access information acquisition unit 410, and determines whether or not a predetermined command is included in the memory access request. Further, when a predetermined command is included in the memory access request, the command determination unit 423 determines the type of the predetermined command. Then, the command determination unit 423 outputs the obtained determination result to the determination result output unit 426.
- the predetermined command is, for example, an instruction for sweeping data from the STB 450 regardless of other conditions.
- the address determination unit 424 acquires address information from the memory access information acquired by the memory access information acquisition unit 410, and determines whether the address included in the memory access request is already held in the STB 450. Further, the address determination unit 424 determines whether the address included in the memory access request is related to the address included in the immediately previous memory access request. Specifically, it is determined whether or not two addresses are continuous. Then, the address determination unit 424 outputs the obtained determination result to the determination result output unit 426.
- the buffer amount determination unit 425 acquires the buffer amount from the STB 450 via the control unit 430, and determines for each STB whether or not the buffer amount has reached a predetermined threshold value. Then, the buffer amount determination unit 425 outputs the obtained determination result to the determination result output unit 426.
- the predetermined threshold is, for example, the maximum value of the STB 450 or the data bus width between the buffer memory device 400 and the main memory 20.
- the determination result output unit 426 determines whether or not the condition shown in FIG. 17 is satisfied based on the determination result input from each determination unit, and outputs the obtained determination result to the control unit 430. Specifically, when it is determined that the condition shown in FIG. 17 is satisfied, the determination result output unit 426 outputs sweep information indicating which data of which STB is swept to the main memory 20 to the control unit 430.
- the buffer memory device 400 includes a plurality of STBs 450 that temporarily hold write data output from the plurality of processors 10, and the STB 450 has a predetermined condition when a predetermined condition is satisfied.
- the held data is burst-written to the main memory 20. That is, in order to merge a plurality of write data having a small size, the STB 450 is temporarily held, and the large size data obtained by merging is burst-written to the main memory 20. At this time, whether or not data can be swept out from the STB 450 is determined based on conditions for guaranteeing the order of data among a plurality of processors.
- FIG. 19 is a flowchart showing the operation of the buffer memory device 400 of the present embodiment.
- the buffer memory device 400 executes the data transfer process according to the present embodiment by acquiring a memory access request from the processor 10.
- the memory access information acquisition unit 410 acquires memory access information from the memory access request (S601). Then, the acquired memory access information is output to the determination unit 420. Moreover, the determination part 420 acquires buffer amount information from STB450 via the control part 430 as needed.
- the determination unit 420 determines whether to sweep data from the STB 450 using the input memory access information and the acquired buffer amount information (S602). Details of this sweep-out determination process will be described later.
- the command determination unit 423 determines whether the memory access request is a write request or a read request (S603).
- the data transfer unit 440 performs a write process of write data output from the processor 10 (S604). If the memory access request is a read request (“read” in S603), the data transfer unit 440 executes a read data read process for the processor 10 (S605).
- the memory access request determination process (S603) is completed after the sweep determination process (S602). ),
- the write process (S604) or the read process (S605) may be executed.
- FIG. 20 is a flowchart showing the writing process of the buffer memory device 400 of the present embodiment.
- the attribute determination unit 421 determines the attribute of the area indicated by the write address included in the write request (S611). Specifically, the attribute determination unit 421 determines whether the attribute of the area indicated by the write address is a burstable attribute, a burst impossible attribute, or a cacheable attribute.
- the first data transfer unit 441 uses the write data output from the processor 10 as STB450. (S612). Specifically, the first data transfer unit 441 writes the write data to the STB (STB 450a) corresponding to the physical processor (for example, the processor 10a) that issued the write request based on the control from the control unit 430.
- the second data transfer unit 442 uses the write data output from the processor 10 as the main data Write to the memory 20 (S613).
- the third data transfer unit 443 determines whether the write request has hit or missed (S614). . If the write request is missed (No in S614), the third data transfer unit 443 performs refill processing on the cache memory 460 and updates the tag address (S615).
- the control unit 430 determines whether the write process based on the write request is a write-back process or a write-through process.
- the write data write destination is changed (S617).
- the third data transfer unit 443 writes the write data to the cache memory 460 (S617).
- the third data transfer unit 443 writes the write data and the write address in the STB 450 (S618).
- the write data output from the processor 10 is written into the main memory 20, the STB 450, or the cache memory 460.
- the data written in the STB 450 and the cache memory 460 is written in the main memory 20 by a sweep-out determination process executed when a subsequent memory access request is input.
- the attribute determination process (S611) is not performed after the memory access request determination process (S603) is completed. Each writing process may be executed.
- the read process (S605) is executed according to the flowcharts shown in FIGS. 6 to 9, for example.
- the attribute acquisition process (S101) and the attribute determination process are performed after the memory access request determination process (S603) is completed. Each reading process may be executed without performing (S102).
- the conditions indicated by the determination table shown in FIG. 17 may be determined in any order. However, when the condition is satisfied, such as the “All Sync” condition, the data stored in all the buffers is swept out, so that it is not necessary to determine other conditions after that. desirable.
- FIG. 21 is a flowchart showing the attribute determination process of the buffer memory device 400 of the present embodiment. This figure shows the sweep determination process based on the “Uncache” condition of FIG.
- the attribute determination unit 421 determines whether or not the attribute of the area indicated by the address included in the memory access request is a burst impossible attribute (S701). If the attribute of the area indicated by the address is not a burst impossible attribute (No in S701), another determination process is executed.
- the control unit 430 When it is determined that the attribute of the area indicated by the address included in the memory access request is a non-burstable attribute (Yes in S701), the control unit 430 is issued by the same logical processor as the logical processor that issued the memory access request. The stored data is swept out from the STB holding the data corresponding to the memory access request to the main memory 20 (S702). Note that the control unit 430 uses the determination result of the processor determination unit 422 to specify the STB to be swept out of the plurality of STBs 450, thereby executing data sweeping. When the sweeping is completed, another determination process is executed.
- FIG. 22 is a flowchart showing command determination processing of the buffer memory device 400 of the present embodiment. This figure shows the sweep determination processing based on the “All Sync” condition and the “Self Sync” condition of FIG.
- the command determination unit 423 determines whether the command included in the memory access request includes a “Sync” command that is an instruction to sweep data regardless of other conditions. It is determined whether or not (S801). When the “Sync” command is not included in the memory access request (No in S801), another determination process is executed.
- the command determination unit 423 determines whether the “Sync” command is an “All Sync” command or a “Self Sync” command (S802). ).
- the control unit 430 sweeps out all data from all STBs 450 (S803).
- the control unit 430 When the “Sync” command is a “Self Sync” command (“Self Sync” in S802), the control unit 430 responds to a memory access request issued by the same logical processor as the logical processor that issued the memory access request. The retained data is swept out from the STB retaining the data to the main memory 20 (S804). Note that the control unit 430 uses the determination result of the processor determination unit 422 to specify the STB to be discharged out of the plurality of STBs 450, thereby executing data sweeping.
- FIG. 23 is a flowchart showing a read address determination process of the buffer memory device 400 of the present embodiment. This figure shows the sweep-out determination process based on the “RAW Hazard” condition of FIG.
- the “RAW Hazard” condition is a condition determined when the buffer memory device 400 receives a read request. That is, it is executed when the command determination unit 423 determines that the memory access request is a read request.
- the address determination unit 424 determines whether or not the read address included in the read request matches the write address held in the STB 450 (S901). When it is determined that the read address does not match the write address held in the STB 450 (No in S901), another determination process is executed.
- the control unit 430 displays all the data up to the Hazard line, that is, before the write data corresponding to the matched write address. All the stored data is swept from the STB 450 (S902). When the data sweeping is completed, another determination process is executed.
- FIG. 24 is a flowchart showing the write address determination process of the buffer memory device 400 of the present embodiment. This figure shows a sweep-out determination process based on the “Another Line Access” condition of FIG.
- the “Another Line Access” condition is a condition that is determined when the buffer memory device 400 receives a write request. That is, it is executed when the command determination unit 423 determines that the memory access request is a write request.
- the address determination unit 424 determines whether or not the write address included in the write request is continuous with the write address included in the write request input immediately before (S1001). When two addresses are consecutive (No in S1001), another determination process is executed.
- control unit 430 includes write data corresponding to the write request input immediately before and sweeps out all previous data from the STB 450 (S1002).
- S1002 the control unit 430 includes write data corresponding to the write request input immediately before and sweeps out all previous data from the STB 450 (S1002).
- FIG. 25 is a flowchart showing a buffer amount determination process of the buffer memory device 400 of the present embodiment. This figure shows the sweep-out determination process based on the “Slot Full” condition of FIG.
- the “Slot Full” condition is a condition that is determined based on the buffer amount information obtained from the STB 450, not the memory access information, unlike the other conditions. Therefore, the determination may be made not only when the buffer memory device 400 receives a memory access request but also at an arbitrary timing or when data is written in the STB 450.
- the buffer amount determination unit 425 acquires buffer amount information from the STB 450 via the control unit 430, and determines whether the buffer amount is full for each STB (S1101). When the buffer amount is not full (No in S1101), when the buffer memory device 400 receives a memory access request, another determination process is executed.
- control unit 430 sweeps out data from the STB whose buffer amount is full among the plurality of STBs 450 (S1102).
- the data sweeping is completed, another determination process is executed.
- FIG. 26 is a flowchart showing the processor determination process of the buffer memory device 400 of the present embodiment. This figure shows the sweep determination process based on the “same LP, different PP” condition of FIG.
- the processor determination unit 422 is a physical processor that is different from the physical processor that issued the memory access request, and is the same logical processor as the logical processor that issued the memory access request. It is determined whether write data corresponding to a previously issued memory access request is held in the STB 450 (S1201). If the write data is not held in the STB 450 (No in S1201), another determination process is executed.
- the write data corresponding to the write request is held in the STB 450. That is, the input small-size write data is merged by the STB 450 and becomes large-size data. The data is burst-written to the main memory 20 when any of the above-described conditions is satisfied.
- the data is swept out to the main memory 20 each time each determination condition is satisfied. However, after all the determination conditions are determined, the data corresponding to the satisfied condition are collected in the main memory 20. It may be swept out.
- the buffer memory device 400 includes the STB 450 corresponding to each of the plurality of processors 10, and merges and holds the write data output from the processor 10 in each STB 450. Then, when a predetermined condition is satisfied, the data merged from the STB 450 is burst-written to the main memory 20.
- the buffer memory device and the memory system of the present invention have been described based on the embodiments.
- the present invention is not limited to these embodiments. Unless it deviates from the meaning of this invention, the form which carried out the various deformation
- the issuer of the memory access request may be a processor such as a CPU and any master such as a DMAC.
- the L2 cache 40 includes the buffer memory 140, the PFB 334, or the PFB 470 of each embodiment has been described.
- the L1 cache 30 may include the buffer memory 140, the PFB 334, or the PFB 470.
- the memory system may not include the L2 cache 40.
- the present invention may be applied to a memory system provided with a cache of level 3 cache or higher.
- the cache of the maximum level that is, the cache closest to the main memory 20 includes the buffer memory 140, the PFB 334, or the PFB 470 of each embodiment.
- the present invention can be realized not only as a buffer memory device, a memory system, and a data reading method, but also as a program for causing a computer to execute the data reading method of the present embodiment. Further, it may be realized as a computer-readable recording medium such as a CD-ROM for recording the program. Furthermore, it may be realized as information, data, or a signal indicating the program. These programs, information, data, and signals may be distributed via a communication network such as the Internet.
- the constituent elements constituting the buffer memory device may be constituted by one system LSI (Large Scale Integration).
- the system LSI is an ultra-multifunctional LSI manufactured by integrating a plurality of components on a single chip.
- the system LSI is a computer system including a microprocessor, a ROM, a RAM, and the like. .
- the buffer memory device and the memory system of the present invention can be used for a system that transfers data between a processor such as a CPU and a main memory, and can be used for a computer, for example.
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
Description
まず、本実施の形態のバッファメモリ装置が備えられる一般的なメモリシステムについて説明する。
本実施の形態のバッファメモリ装置は、リード要求に含まれるアドレスが示す領域の属性がキャッシャブル属性である場合に、当該リード要求に対応するデータを含むデータをバーストリードする。これにより、さらに、メモリアクセスを高速化させることができる。
本実施の形態のメモリシステムは、メインメモリを管理するMMU(Memory Management Unit)、又は、OS(Operating System)がメインメモリの領域の属性を設定する。
本実施の形態のバッファメモリ装置は、プロセッサから出力されたメインメモリへ書き込むためのデータを一時的に保持し、所定の条件が満たされた場合に、保持したデータをバーストライトする。これにより、データバスを有効に利用することができ、効率よくデータを転送することができる。
20、320、620 メインメモリ
21、621 キャッシャブル領域
22、622 アンキャッシャブル領域
23 バースト可領域
24 バースト不可領域
30、311 L1キャッシュ
40、330 L2キャッシュ
100、200、400 バッファメモリ装置
110 属性取得部
120、332a、332b、421 属性判定部
130、230 データ読出部
131 第1データ読出部
132 第2データ読出部
133、233 第3データ読出部
140 バッファメモリ
150、335、460、611 キャッシュメモリ
160 テーブル保持部
161 領域属性テーブル
170 属性設定部
300 メモリシステム
312 TLB
313 アドレス変換テーブル
331a、331b キュー
333a、333b セレクタ
334、470 PFB
336 メモリインタフェース
410 メモリアクセス情報取得部
420 判定部
422 プロセッサ判定部
423 コマンド判定部
424 アドレス判定部
425 バッファ量判定部
426 判定結果出力部
430 制御部
440 データ転送部
441 第1データ転送部
442 第2データ転送部
443 第3データ転送部
450、450a、450b、450c STB
501、502 メモリアクセス情報
612 汎用レジスタ
Claims (17)
- プロセッサからのリード要求に応じて、キャッシャブル属性とアンキャッシャブル属性とのいずれかに属する複数の領域からなるメインメモリ又は周辺デバイスからデータを読み出すバッファメモリ装置であって、
前記リード要求に含まれるリードアドレスが示す領域の属性を取得する属性取得部と、
前記属性取得部によって取得された属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されることを示す第1属性であるか否かを判定する属性判定部と、
前記属性判定部によって、前記属性取得部によって取得された属性が前記第1属性であると判定された場合、前記リードアドレスが示す領域に保持されているデータを含むデータをバーストリードするデータ読出部と、
前記データ読出部によってバーストリードされたデータを保持する第1バッファメモリとを備える
バッファメモリ装置。 - 前記属性判定部は、前記属性取得部によって取得された属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されないことを示す第2属性であるか、前記第1属性であるかを判定し、
前記データ読出部は、さらに、前記属性判定部によって、前記属性取得部によって取得された属性が前記第2属性であると判定された場合、前記リードアドレスが示す領域に保持されているデータのみを読み出す
請求項1記載のバッファメモリ装置。 - 前記バッファメモリ装置は、さらに、
前記メインメモリ又は前記周辺デバイスのアドレスと、当該アドレスが示す領域の属性が、前記第1属性、前記第2属性、及び、前記キャッシャブル属性であることを示す第3属性のいずれであるかを示す属性情報とを対応付けたテーブルを保持するテーブル保持部を備え、
前記属性取得部は、前記テーブル保持部に保持されたテーブルを参照することで、前記リードアドレスが示す領域の属性を取得する
請求項2記載のバッファメモリ装置。 - 前記バッファメモリ装置は、さらに、
キャッシュメモリを備え、
前記属性判定部は、前記属性取得部によって取得された属性が、前記第1属性、前記第2属性、及び、前記第3属性のいずれであるかを判定し、
前記データ読出部は、さらに、前記属性判定部によって、前記属性取得部によって取得された属性が前記第3属性であると判定された場合、前記リードアドレスが示す領域に保持されているデータを含むデータをバーストリードし、
前記キャッシュメモリは、前記データ読出部によってバーストリードされたデータのうち、前記リードアドレスが示す領域に保持されているデータを含む第1データを保持し、
前記第1バッファメモリは、前記データ読出部によってバーストリードされたデータのうち、前記第1データを除く第2データを保持する
請求項3記載のバッファメモリ装置。 - 前記バッファメモリ装置は、さらに、
前記メインメモリ又は前記周辺デバイスのアドレスと、当該アドレスが示す領域の属性を、前記第1属性、前記第2属性、及び、前記第3属性のいずれかに設定することで前記テーブルを生成する属性設定部を備え、
前記テーブル保持部は、前記属性設定部によって生成されたテーブルを保持する
請求項3記載のバッファメモリ装置。 - 前記データ読出部は、前記属性判定部によって、前記属性取得部によって取得された属性が前記第1属性であると判定された場合、さらに、前記リードアドレスが示す領域に保持されているデータが前記第1バッファメモリに既に保持されているか否かを判断し、当該データが前記第1バッファメモリに既に保持されている場合、前記第1バッファメモリから当該データを読み出し、当該データが前記第1バッファメモリに保持されていない場合、当該データを含むデータをバーストリードする
請求項1記載のバッファメモリ装置。 - 前記属性取得部は、さらに、前記プロセッサからのライト要求に含まれるライトアドレスが示す領域の属性を取得し、
前記バッファメモリ装置は、さらに、
前記属性判定部によって、前記属性取得部によって取得された属性のうち、前記ライトアドレスが示す領域の属性が前記第1属性である場合に、前記メインメモリ又は前記周辺デバイスに書き込むための前記ライト要求に対応するライトデータを保持する第2バッファメモリと、
前記プロセッサからの前記リード要求又は前記ライト要求であるメモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、
前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質、又は、前記属性取得部によって取得された属性が、予め定められた条件を満たすか否かを判定する条件判定部と、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記条件判定部によって判定された場合、前記第2バッファメモリに保持されたライトデータを前記メインメモリ又は前記周辺デバイスに掃き出す制御部とを備える
請求項1記載のバッファメモリ装置。 - 前記メモリアクセス情報取得部は、前記メモリアクセス情報として、前記メモリアクセス要求を発行した論理プロセッサ及び物理プロセッサを示すプロセッサ情報を取得し、
前記条件判定部は、前記プロセッサ情報が示す物理プロセッサとは異なる物理プロセッサで、かつ、前記プロセッサ情報が示す論理プロセッサと同じ論理プロセッサで以前に発行されたライト要求に対応するライトデータが前記第2バッファメモリに保持されている場合に、前記条件を満たすと判定し、
前記制御部は、前記条件を満たすと前記条件判定部によって判定された場合、前記条件を満たす第2バッファメモリに保持されているデータを前記メインメモリ又は前記周辺デバイスに掃き出す
請求項7記載のバッファメモリ装置。 - 前記条件判定部は、前記メモリアクセス情報に、前記第2バッファメモリに保持されたデータを前記メインメモリ又は前記周辺デバイスに掃き出すためのコマンド情報が含まれているか否かを判定し、
前記制御部は、前記メモリアクセス情報に前記コマンド情報が含まれていると前記条件判定部によって判定された場合、前記コマンド情報が示す第2バッファメモリに保持されたデータを前記メインメモリ又は前記周辺デバイスに掃き出す
請求項7記載のバッファメモリ装置。 - 前記メモリアクセス情報取得部は、さらに、前記メモリアクセス情報として、前記メモリアクセス要求を発行したプロセッサを示すプロセッサ情報を取得し、
前記条件判定部は、さらに、前記属性情報が示す属性が、前記第1属性であるか否かを判定し、
前記制御部は、さらに、前記属性取得部によって取得された属性が前記第1属性であると前記条件判定部によって判定された場合、前記プロセッサ情報が示すプロセッサに対応する第2バッファメモリに保持されたデータを前記メインメモリ又は前記周辺デバイスに掃き出す
請求項7記載のバッファメモリ装置。 - 前記第2バッファメモリは、さらに、前記ライトデータに対応するライトアドレスを保持し、
前記メモリアクセス情報取得部は、さらに、前記メモリアクセス要求がリード要求を含む場合に、前記メモリアクセス情報として、当該リード要求に含まれるリードアドレスを取得し、
前記条件判定部は、前記リードアドレスに一致するライトアドレスが前記第2バッファメモリに保持されているか否かを判定し、
前記制御部は、前記リードアドレスに一致するライトアドレスが前記第2バッファメモリに保持されていると前記条件判定部によって判定された場合、前記ライトアドレスに対応するライトデータ以前に前記第2バッファメモリに保持されたデータを前記メインメモリ又は前記周辺デバイスに掃き出す
請求項7記載のバッファメモリ装置。 - 前記メモリアクセス情報取得部は、さらに、前記メモリアクセス要求がライト要求を含む場合に、当該ライト要求に含まれる第1ライトアドレスを取得し、
前記条件判定部は、前記第1ライトアドレスが、直前に入力されたライト要求に含まれる第2ライトアドレスに連続するか否かを判定し、
前記制御部は、前記第1ライトアドレスと前記第2ライトアドレスとが連続すると前記条件判定部によって判定された場合、前記第2ライトアドレスに対応するライトデータ以前に前記第2バッファメモリに保持されたデータを前記メインメモリ又は前記周辺デバイスに掃き出す
請求項7記載のバッファメモリ装置。 - 前記条件判定部は、さらに、前記第2バッファメモリに保持されているデータのデータ量が所定の閾値に達したか否かを判定し、
前記制御部は、さらに、前記データ量が前記閾値に達したと前記条件判定部によって判定された場合、前記第2バッファメモリに保持されたデータを前記メインメモリ又は前記周辺デバイスに掃き出す
請求項7記載のバッファメモリ装置。 - 前記バッファメモリ装置は、さらに、
前記プロセッサからのライト要求に含まれるライトアドレスが、前記第1バッファメモリに保持されているデータに対応するアドレスと一致するか否かを判断し、前記ライトアドレスが一致する場合、前記第1バッファメモリに保持されているデータを無効化する無効化部を備える
請求項1記載のバッファメモリ装置。 - プロセッサと、キャッシャブル属性及びアンキャッシャブル属性のいずれかに属する複数の領域からなるメインメモリ又は周辺デバイスとを備え、前記プロセッサからのリード要求に応じて、前記メインメモリ又は前記周辺デバイスからデータを読み出すメモリシステムであって、
前記プロセッサからのリード要求に含まれるリードアドレスが示す領域の属性を取得する属性取得部と、
前記属性取得部によって取得された属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されることを示す第1属性であるか否かを判定する属性判定部と、
前記属性判定部によって、前記属性取得部によって取得された属性が前記第1属性であると判定された場合、前記リードアドレスが示す領域に保持されているデータを含むデータをバーストリードするデータ読出部と、
前記データ読出部によってバーストリードされたデータを保持するバッファメモリとを備え、
前記データ読出部は、前記属性判定部によって、前記属性取得部によって取得された属性が前記第1属性であると判定された場合、さらに、前記リードアドレスが示す領域に保持されているデータが前記バッファメモリに既に保持されているか否かを判断し、当該データが前記バッファメモリに既に保持されている場合、前記バッファメモリから当該データを読み出し、当該データが前記バッファメモリに保持されていない場合、当該データを含むデータをバーストリードする
メモリシステム。 - 前記メモリシステムは、さらに、複数のキャッシュを備え、
前記複数のキャッシュのうち、前記メインメモリ又は前記周辺デバイスに最も近いキャッシュは、前記バッファメモリを備える
請求項15記載のメモリシステム。 - プロセッサからのリード要求に応じて、キャッシャブル属性とアンキャッシャブル属性とのいずれかに属する複数の領域からなるメインメモリ又は周辺デバイスからデータを読み出すデータ読出方法であって、
前記プロセッサからのリード要求に含まれるリードアドレスが示す領域の属性を取得する属性取得ステップと、
前記属性取得ステップで取得された属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されることを示す第1属性であるか否かを判定する属性判定ステップと、
前記属性判定ステップで、前記属性取得ステップで取得された属性が前記第1属性であると判定された場合、前記リードアドレスが示す領域に保持されているデータが前記バッファメモリに既に保持されているか否かを判断する判断ステップと、
前記判断ステップで、当該データがバッファメモリに既に保持されていると判断された場合、前記バッファメモリから当該データを読み出し、当該データが前記バッファメモリに保持されていないと判断された場合、当該データを含むデータをバーストリードし、バーストリードしたデータを前記バッファメモリに格納するデータ読出ステップとを含む
データ読出方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010529624A JPWO2010032433A1 (ja) | 2008-09-18 | 2009-09-15 | バッファメモリ装置、メモリシステム及びデータ読出方法 |
CN2009801365185A CN102160041A (zh) | 2008-09-18 | 2009-09-15 | 缓冲存储器装置、存储器***以及数据读出方法 |
US13/050,090 US20110167223A1 (en) | 2008-09-18 | 2011-03-17 | Buffer memory device, memory system, and data reading method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008-239927 | 2008-09-18 | ||
JP2008239927 | 2008-09-18 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/050,090 Continuation US20110167223A1 (en) | 2008-09-18 | 2011-03-17 | Buffer memory device, memory system, and data reading method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010032433A1 true WO2010032433A1 (ja) | 2010-03-25 |
Family
ID=42039282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2009/004595 WO2010032433A1 (ja) | 2008-09-18 | 2009-09-15 | バッファメモリ装置、メモリシステム及びデータ読出方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20110167223A1 (ja) |
JP (1) | JPWO2010032433A1 (ja) |
CN (1) | CN102160041A (ja) |
TW (1) | TW201015579A (ja) |
WO (1) | WO2010032433A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014112360A (ja) * | 2012-11-12 | 2014-06-19 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019381B2 (en) | 2012-05-01 | 2018-07-10 | Nvidia Corporation | Cache control to reduce transaction roll back |
WO2014106871A1 (en) | 2013-01-07 | 2014-07-10 | Hitachi, Ltd. | Storage system which realizes asynchronous remote copy using cache memory composed of flash memory, and control method thereof |
US10366244B2 (en) | 2015-06-09 | 2019-07-30 | International Business Machines Corporation | Performing an operation on sensitive data |
JP6424330B2 (ja) * | 2015-10-13 | 2018-11-21 | 株式会社アクセル | 情報処理装置、及び情報処理方法 |
US10120808B2 (en) * | 2016-04-22 | 2018-11-06 | Arm Limited | Apparatus having cache memory disposed in a memory transaction path between interconnect circuitry and a non-volatile memory, and corresponding method |
CN113515474A (zh) * | 2021-07-30 | 2021-10-19 | 上海阵量智能科技有限公司 | 数据处理装置、方法、计算机设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992005489A1 (en) * | 1990-09-18 | 1992-04-02 | Fujitsu Limited | Method of nonsynchronous access to shared memory |
JPH05282205A (ja) * | 1992-03-31 | 1993-10-29 | Nec Corp | 情報処理装置 |
JPH06348593A (ja) * | 1993-06-03 | 1994-12-22 | Sumitomo Electric Ind Ltd | データ転送制御装置 |
JPH09282228A (ja) * | 1996-04-10 | 1997-10-31 | Hitachi Ltd | 主記憶制御装置 |
JPH10187532A (ja) * | 1996-12-19 | 1998-07-21 | Nec Corp | 2次キャッシュ装置 |
JPH1124994A (ja) * | 1997-06-06 | 1999-01-29 | Texas Instr Inc <Ti> | マイクロプロセッサ |
JP2002189629A (ja) * | 2000-08-23 | 2002-07-05 | Nintendo Co Ltd | 機能拡張型メモリコントローラを備えるグラフィックス処理システム |
JP2004240520A (ja) * | 2003-02-04 | 2004-08-26 | Renesas Technology Corp | ノンキャッシュ領域内高速メモリアクセス方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3820078A (en) * | 1972-10-05 | 1974-06-25 | Honeywell Inf Systems | Multi-level storage system having a buffer store with variable mapping modes |
US4195342A (en) * | 1977-12-22 | 1980-03-25 | Honeywell Information Systems Inc. | Multi-configurable cache store system |
US6108755A (en) * | 1990-09-18 | 2000-08-22 | Fujitsu Limited | Asynchronous access system to a shared storage |
JPH09505679A (ja) * | 1993-07-07 | 1997-06-03 | トーシバ・アメリカ・エレクトロニック・コンポーネンツ・インコーポレーテッド | 選択フラッシュ機能を具備するメモリーバッファ |
US6173368B1 (en) * | 1995-12-18 | 2001-01-09 | Texas Instruments Incorporated | Class categorized storage circuit for storing non-cacheable data until receipt of a corresponding terminate signal |
EP0782079A1 (en) * | 1995-12-18 | 1997-07-02 | Texas Instruments Incorporated | Burst access in data processing systems |
US5911151A (en) * | 1996-04-10 | 1999-06-08 | Motorola, Inc. | Optimizing block-sized operand movement utilizing standard instructions |
JP4024247B2 (ja) * | 2002-09-30 | 2007-12-19 | 株式会社ルネサステクノロジ | 半導体データプロセッサ |
-
2009
- 2009-09-11 TW TW098130759A patent/TW201015579A/zh unknown
- 2009-09-15 WO PCT/JP2009/004595 patent/WO2010032433A1/ja active Application Filing
- 2009-09-15 JP JP2010529624A patent/JPWO2010032433A1/ja not_active Withdrawn
- 2009-09-15 CN CN2009801365185A patent/CN102160041A/zh active Pending
-
2011
- 2011-03-17 US US13/050,090 patent/US20110167223A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992005489A1 (en) * | 1990-09-18 | 1992-04-02 | Fujitsu Limited | Method of nonsynchronous access to shared memory |
JPH05282205A (ja) * | 1992-03-31 | 1993-10-29 | Nec Corp | 情報処理装置 |
JPH06348593A (ja) * | 1993-06-03 | 1994-12-22 | Sumitomo Electric Ind Ltd | データ転送制御装置 |
JPH09282228A (ja) * | 1996-04-10 | 1997-10-31 | Hitachi Ltd | 主記憶制御装置 |
JPH10187532A (ja) * | 1996-12-19 | 1998-07-21 | Nec Corp | 2次キャッシュ装置 |
JPH1124994A (ja) * | 1997-06-06 | 1999-01-29 | Texas Instr Inc <Ti> | マイクロプロセッサ |
JP2002189629A (ja) * | 2000-08-23 | 2002-07-05 | Nintendo Co Ltd | 機能拡張型メモリコントローラを備えるグラフィックス処理システム |
JP2004240520A (ja) * | 2003-02-04 | 2004-08-26 | Renesas Technology Corp | ノンキャッシュ領域内高速メモリアクセス方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014112360A (ja) * | 2012-11-12 | 2014-06-19 | Fujitsu Ltd | 演算処理装置及び演算処理装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201015579A (en) | 2010-04-16 |
JPWO2010032433A1 (ja) | 2012-02-02 |
US20110167223A1 (en) | 2011-07-07 |
CN102160041A (zh) | 2011-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5536658B2 (ja) | バッファメモリ装置、メモリシステム及びデータ転送方法 | |
KR102273622B1 (ko) | 거대한 페이지들을 지원하는 메모리 관리 | |
KR101379596B1 (ko) | Tlb 프리페칭 | |
US8782348B2 (en) | Microprocessor cache line evict array | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US8195881B2 (en) | System, method and processor for accessing data after a translation lookaside buffer miss | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
TWI393050B (zh) | 促進多重處理器介面之板內建快取記憶體系統之記憶體裝置及方法及使用其之電腦系統 | |
WO2010032433A1 (ja) | バッファメモリ装置、メモリシステム及びデータ読出方法 | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
US11341042B2 (en) | Storage apparatus configured to manage a conversion table according to a request from a host | |
US10564871B2 (en) | Memory system having multiple different type memories with various data granularities | |
KR20210058877A (ko) | 외부 메모리 기반 변환 색인 버퍼 | |
WO2024066195A1 (zh) | 缓存管理方法及装置、缓存装置、电子装置和介质 | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
US20080307169A1 (en) | Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory | |
EP2790107A1 (en) | Processing unit and method for controlling processing unit | |
JP7139719B2 (ja) | 情報処理装置、演算処理装置及び情報処理装置の制御方法 | |
US7949833B1 (en) | Transparent level 2 cache controller | |
US9442856B2 (en) | Data processing apparatus and method for handling performance of a cache maintenance operation | |
US10713165B2 (en) | Adaptive computer cache architecture | |
JP2004326175A (ja) | プロセッサ、キャッシュシステム及びキャッシュメモリ | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
US20220374360A1 (en) | Memory device and method for accessing memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200980136518.5 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09814278 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2010529624 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09814278 Country of ref document: EP Kind code of ref document: A1 |