WO2014068789A1 - メモリ制御装置 - Google Patents

メモリ制御装置 Download PDF

Info

Publication number
WO2014068789A1
WO2014068789A1 PCT/JP2012/078628 JP2012078628W WO2014068789A1 WO 2014068789 A1 WO2014068789 A1 WO 2014068789A1 JP 2012078628 W JP2012078628 W JP 2012078628W WO 2014068789 A1 WO2014068789 A1 WO 2014068789A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
read
address
command
Prior art date
Application number
PCT/JP2012/078628
Other languages
English (en)
French (fr)
Inventor
浩士 跡部
Original Assignee
三菱電機株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to JP2014544200A priority Critical patent/JP5797342B2/ja
Priority to US14/423,841 priority patent/US9715427B2/en
Priority to PCT/JP2012/078628 priority patent/WO2014068789A1/ja
Priority to CN201280076878.2A priority patent/CN104769558B/zh
Priority to DE112012007102.6T priority patent/DE112012007102B4/de
Priority to TW102101434A priority patent/TWI475383B/zh
Publication of WO2014068789A1 publication Critical patent/WO2014068789A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to a technique for processing a read request for requesting reading of payload data from a memory.
  • ECC Error Correcting Code
  • a parity bit may be added to the payload data.
  • memory elements are added in the width direction exclusively for the added ECC and parity bits (horizontal ECC, horizontal parity).
  • horizontal ECC horizontal parity
  • a special x9-bit memory instead of a x8-bit memory.
  • the addition of a memory element and the use of a special memory are often disadvantageous in cost and difficult to obtain parts.
  • One solution is to use vertical ECC and vertical parity, which do not require increasing the memory in the width direction by storing the ECC in the depth direction instead of the width direction (hereinafter referred to as vertical ECC). To describe).
  • the second data (second data) read from the memory is also used in subsequent reads that include the ECC.
  • the request request source manages the payload data in the data arrangement of FIG. 1
  • the memory manages the payload data and the ECC in the data arrangement of FIG. 2, the data at address 0000h in FIG.
  • the following data read is performed.
  • the data is read from the memory in the order of data at address 0000h (D0 to D3) and data at address 0004h (ECC0 to D6) in FIG. 2, and error correction is performed on the read D0 to D3 using ECC0.
  • D0 to D3 after error correction are output to the request source.
  • D4 to D7 when there is a read request for data (D4 to D7) at address 0004h in FIG. 1, the following data read is performed.
  • the data is read from the memory in the order of data at addresses 0004h (ECC0 to D6) and data at addresses 0008h (D7 to D9) in FIG. 2, and error correction is performed on the read D4 to D7 using ECC1.
  • D4 to D7 after error correction are output to the request source.
  • bus control is performed so that the next read request is not received before the parity check result is output, and the read request is sent until the data transfer after the parity check.
  • There is a technique for waiting for example, Patent Document 1).
  • Patent Document 1 can guarantee that one transaction from a read request to a read data return is completed, but has a problem that it cannot cope with data transfer to a pipeline type memory.
  • the present invention has been made in view of the above circumstances, and even in a pipeline type memory, reading of duplicate data is avoided, a limited memory bandwidth is efficiently used, and memory access is performed.
  • the main purpose is to reduce power consumption in
  • the memory control device includes: Each has a plurality of addresses where data for a predetermined data width is stored, error correction data is set for the payload data for the data width, and the payload data for the data width corresponding to the data width has an error
  • a memory control device that processes a read request that requests reading of payload data from a memory in which correction data is stored over two adjacent addresses and data is read out in address units, A cache area for caching data read from the memory;
  • a read request input unit for inputting a read request for requesting reading of payload data of an integral multiple of the data width;
  • Stored is request payload data which is payload data requested by a read request input by the read request input unit, and corresponding error correction data which is error correction data used for error correction of the request payload data 2
  • a cache determination unit that determines whether data of any one of the read candidate addresses that are two or more addresses is cached or scheduled to be cached in the cache area; When the cache determination unit determines that the data of any one of the two or more read candidate addresses
  • a partial read command instructing reading of data from an address other than the cache address among the read candidate addresses is stored after a predetermined delay time has elapsed from the timing at which the partial read command can be output to the memory. Output to.
  • FIG. 6 is a diagram showing an example of data arrangement not including ECC according to the first embodiment.
  • FIG. 6 is a diagram showing an example of arrangement of data to which a vertical ECC according to the first embodiment is added.
  • FIG. 3 is a diagram illustrating a memory control device, a request request source, and a memory according to the first embodiment.
  • FIG. 3 is a flowchart showing an operation example of the memory control device according to the first embodiment.
  • FIG. 3 is a diagram illustrating an operation example of the memory control device according to the first embodiment.
  • FIG. 3 is a diagram illustrating an operation example of the memory control device according to the first embodiment.
  • FIG. 4 is a diagram illustrating a memory control device, a request request source, and a memory according to the second embodiment.
  • FIG. 9 is a flowchart showing an operation example of the memory control device according to the second embodiment.
  • FIG. 9 is a flowchart showing an operation example of the memory control device according to the second embodiment.
  • FIG. 10 is a diagram illustrating a memory control device, a request request source, and a memory according to the third embodiment.
  • FIG. 9 is a flowchart showing an operation example of the memory control device according to the third embodiment.
  • FIG. 9 is a timing chart illustrating an operation example of the memory control device according to the second embodiment.
  • FIG. 9 is a timing chart illustrating an operation example of the memory control device according to the second embodiment.
  • FIG. 10 is a timing chart illustrating an operation example of the memory control device according to the third embodiment.
  • a memory control device corresponding to a non-pipeline type memory will be described, and in the second and third embodiments, a memory control device corresponding to a pipeline type memory will be described.
  • the previous value holding unit and the internal buffer are used in order to avoid redundant reading of the second data.
  • the memory control devices according to the second and third embodiments corresponding to the pipeline type memory also use the previous value holding unit and the internal buffer in order to avoid the redundant reading of the second data. Since the method of using the previous value holding unit and the internal buffer in the memory control device is common to the first to third embodiments, the non-pipeline type memory is used in the first embodiment in consideration of ease of understanding.
  • the operation of the control device will be described. Then, on the premise of the operation in the first embodiment, in the second and third embodiments, operations unique to the pipeline method will be described.
  • FIG. 1 shows a vertical ECC memory layout in which 1 byte is added to every 4 bytes.
  • the ECC is arranged in the order in which the ECC is arranged after the data.
  • the ECC arrangement method may be as long as the data and the ECC are arranged in two adjacent lines. For example, “EEC0” may be arranged before payload data “D0”.
  • the data assigned to the same address can be expanded.
  • FIG. 3 shows the memory control device 100, the request request source 101, and the memory 105 according to the first embodiment.
  • the request request source 101 issues a read / write request to the memory 105.
  • the request request source 101 is, for example, a CPU (Central Processing Unit).
  • the request request source 101 recognizes the arrangement of payload data, for example, in the format shown in FIG.
  • the memory 105 for example, payload data and ECC as error correction data are arranged in the format shown in FIG. Data is read from the memory 105 in units of addresses.
  • the memory 105 is a memory to be controlled by the memory control device 100.
  • the memory control device 100 includes a memory address conversion unit 106, an internal buffer A 109, an internal buffer management unit 107, an internal buffer information storage unit 112, a hit determination unit 113, a previous value holding unit 104, a data selection unit 108, a data alignment unit 103, and The ECC correction unit 102 is configured.
  • Each component of the memory control device 100 is hardware such as an element, a device, or a circuit.
  • Each component of the memory control device 100 is, for example, a semiconductor circuit group in a chip set.
  • the memory address conversion unit 106, the internal buffer management unit 107, the internal buffer information storage unit 112, the data selection unit 108, the data alignment unit 103, and the ECC correction unit 102 may be realized using a program.
  • the memory address conversion unit 106 inputs a read request from the request request source 101.
  • the memory address conversion unit 106 converts the address of the input read request into an address on the memory 105 in which the vertical ECC is arranged. For example, if there is a read request for the data (D0 to D3) at address 0000h in FIG. 1 from the request request source 101, the memory address conversion unit 106 reads the data at address 0000h (D0 to D3) and address 0004h in FIG. Address conversion to data (ECC0 to D6).
  • the addresses after the address conversion by the memory address conversion unit 106 are referred to as read candidate addresses (in the above example, addresses 0000h and 0004h in FIG. 2 are read candidate addresses).
  • payload data requested by a read request from the request request source 101 is referred to as request payload data (in the above example, D0 to D3 are request payload data).
  • the ECC used for error correction of request payload data is referred to as corresponding error correction data or corresponding ECC (in the above example, ECC0 is the corresponding error correction data).
  • the memory address conversion unit 106 outputs a read command for instructing data read to the memory 105 based on the address conversion result and the determination result of the hit determination unit 113.
  • information input from the request request source 101 by the memory address conversion unit 106 is referred to as a read request
  • information output from the memory address conversion unit 106 to the memory 105 is referred to as a read command.
  • the memory address conversion unit 106 If the hit determination unit 113 determines a hit, the memory address conversion unit 106 outputs a partial read command to the memory 105.
  • the partial read command is a command for instructing to read data from addresses other than the addresses that are cached in the internal buffer A 109 (referred to as cache addresses) among the read candidate addresses.
  • the memory address conversion unit 106 If there is a miss determination in the hit determination unit 113, the memory address conversion unit 106 outputs a whole area read command to the memory 105.
  • the whole area read command is a command for instructing reading of data from the whole area of the read candidate address.
  • the memory address conversion unit 106 corresponds to an example of a read request input unit and a command output unit.
  • the internal buffer A109 is an example of a cache area. In FIG. 1, only one internal buffer is shown, but a plurality of internal buffers can be arranged.
  • the internal buffer management unit 107 manages the internal buffer A109. More specifically, the internal buffer management unit 107 selects data to be stored in the internal buffer A 109 from the data read from the memory 105, and stores the selected data in the internal buffer A 109. Of the data read from the memory 105 in response to the read command output from the memory address conversion unit 106, the last data (referred to as the last data) includes data that is neither the request payload data nor the corresponding ECC. In such a case, the internal buffer management unit 107 stores the tail data in the internal buffer A 109. For example, when there is a read request for the data (D0 to D3) at address 0000h in FIG.
  • the last data (address 0004h) read from the memory 105 in response to this whole area read command includes ECC0 to D6.
  • ECC0 corresponds to the corresponding ECC, but D4 to D6 are not request payload data. Therefore, the internal buffer management unit 107 stores the data (ECC0 to D6) at address 0004h in the internal buffer A109.
  • the memory address conversion unit 106 uses the data at the address 0020h (D1a to D1c) in FIG. Address conversion to address data (D1d to ECC7) is performed. If the data at address 0020h (D1a to D1c) is not stored in the internal buffer A109, a miss determination is made, and an entire area read command for instructing reading of the data at address 0020h and the data at address 0024h is output. The last data (address 0024h) read from the memory 105 in response to this whole area read command includes D1d to ECC7.
  • D1d to D1f correspond to request payload data
  • ECC7 corresponds to a corresponding ECC. Therefore, the internal buffer management unit 107 does not store the data at address 0024h (D1d to ECC7) in the internal buffer A109.
  • the internal buffer management unit 107 corresponds to an example of a cache management unit.
  • the hit determination unit 113 determines whether or not the data of some of the read candidate addresses acquired by the memory address conversion unit 106 has been cached in the internal buffer A109. If the data at some of the read candidate addresses has been cached in the internal buffer A 109, the hit determination is made, and if it has not been cached, the miss determination is made. The hit determination unit 113 calculates a continuous address from the “address of the internal buffer A” and the “distance information” in the internal buffer information storage unit 112 and determines whether or not the data has been cached in the internal buffer A 109. If it is a hit determination, the hit determination unit 113 outputs a hit signal to the memory address conversion unit 106. Note that the hit determination unit 113 corresponds to an example of a cache determination unit.
  • the address (address in FIG. 1) indicated by the read request from the request request source 101 is stored.
  • the “distance information A” in the internal buffer information storage unit 112 stores the address length of the address requested by the read request.
  • “address 0000h” is stored in “address of internal buffer A”
  • “4 bytes” is stored in “distance information A”.
  • the address and distance information are stored for each internal buffer. In FIG.
  • internal buffer A address and “distance information A” are managed separately, but only “internal buffer A address” may be used.
  • a value obtained by adding the address length to the address indicated in the read request is stored in “address of internal buffer A”. That is, when there is a read request at address 0000h in FIG. 1 from the request request source 101, “address 0004h” obtained by adding 4 bytes to address 0000h is stored in “address of internal buffer A”.
  • the previous value holding unit 104 is a register that holds the previous read data received from the memory 105 or the data of the internal buffer A 109.
  • the data selection unit 108 selects either the read data received from the memory 105 or the data in the internal buffer A 109 and outputs the selected data to the data alignment unit 103.
  • the data alignment unit 103 acquires the request payload data and the corresponding ECC from the data selected by the data selection unit 108 and the data of the previous value holding unit 104, and performs ECC correction on the acquired request payload data and the corresponding ECC. Align as you can.
  • a combination of the data alignment unit 103, the previous value holding unit 104, and the data selection unit 108 is referred to as a data acquisition unit 111.
  • the ECC correction unit 102 inputs the request payload data after alignment and the corresponding ECC from the data alignment unit 103, performs ECC correction of the request payload data using the corresponding ECC, and requests the request payload data after the ECC correction to the request request source 101. Is output.
  • the memory address conversion unit 106 receives a read request for reading 4 bytes from the address 0000h from the request request source 101 (S201).
  • the hit determination unit 113 determines whether the accepted read request hits the data stored in the internal buffer A 109 (S301). Specifically, the hit determination unit 113 calculates and determines a cache address from “the address of the internal buffer A” and “distance information A” of the internal buffer information storage unit 112. At this time, no data is stored in the internal buffer A109, so the determination result in S301 is No.
  • the memory address conversion unit 106 calculates an area (read candidate address) including 4-byte data (D0 to D3) and the corresponding ECC (ECC0), and a read command for instructing reading from the calculated area And the generated read command is output to the memory 105 (S202).
  • the memory address conversion unit 106 since the data is arranged across the addresses 0000h and 0004h, the memory address conversion unit 106 generates a read command (wide area read command) instructing the 8-byte read from the address 0000h. To do.
  • the memory address conversion unit 106 outputs the generated read command to the memory 105, and outputs the read command and the read request from the request request source 101 to the internal buffer management unit 107 and the data selection unit 108.
  • the memory 105 returns the data (D0 to D3) at the address 0000h, and the data selection unit 108 inputs the data at the address 0000h in the memory control device 100 (S203).
  • the data selection unit 108 notifies the data alignment unit 103 and the internal buffer management unit 107 of input of read data.
  • the internal buffer management unit 107 determines whether the input read data is the last data (S400). Since the data at address 0000h is not the last data, the determination result in S401 is No. The internal buffer management unit 107 receives the read command and the read request from the memory address conversion unit 106 and recognizes the data arrangement of FIG. 1 and the data arrangement of FIG. It can be determined that (the data at address 0000h) is not the last data. Since the input data at address 0000h is not the last data, the input read data is not held in the internal buffer A109.
  • the data alignment unit 103 determines whether the data can be aligned (S305). That is, the data alignment unit 103 determines whether the request payload data requested by the request request source 101 and the corresponding ECC can be obtained from the data from the memory 105 or the data in the internal buffer A 109 and the data in the previous value holding unit 104. to decide. At this time, data at address 0000h is input from the memory 105, but no data is stored in the previous value holding unit 104. Since the requested payload data and the corresponding ECC cannot be obtained only with the data at address 0000h, the data alignment unit 103 waits for the input of data at address 0004h (NO in S305).
  • the read data (address 0000h) is stored from the data selection unit 108 to the previous value holding unit 104 as the previous value.
  • the data alignment unit 103 receives the read command and the read request from the memory address conversion unit 106, and recognizes the data arrangement of FIG. 1 and the data arrangement of FIG. It can be determined whether or not.
  • the memory 105 returns the data (ECC0 to D6) at address 0004h, and in the memory control device 100, the data selection unit 108 inputs the data at address 0004h (S203).
  • the data selection unit 108 notifies the data alignment unit 103 and the internal buffer management unit 107 of input of read data.
  • the internal buffer management unit 107 determines whether the input read data is the last data (S400).
  • the data at address 0004h is the last data input from the memory 105 in response to the read command, and corresponds to the last data (YES in S400).
  • the internal buffer management unit 107 determines whether or not the input data at address 0004h includes subsequent payload data other than the request payload data and the corresponding ECC (S401).
  • Request payload data requested from the request request source 101 is D0 to D3, and the corresponding ECC is EEC0.
  • the data at address 0004h includes subsequent payload data D4 to D6. For this reason, the determination result of S401 is YES.
  • the internal buffer management unit 107 receives the read request from the memory address conversion unit 106 and recognizes the data arrangement of FIG. 1 and the data arrangement of FIG. It can be determined that .about.D6 is subsequent payload data that is neither request payload data nor corresponding ECC.
  • the internal buffer management unit 107 describes “0000h” in “address of internal buffer A” and “4” of 4-byte read in “distance information A” of the internal buffer information storage unit 112, and internal buffer A 109.
  • the data (ECC0 to D6) at the address 0004h are stored in (S402).
  • the data alignment unit 103 determines whether the data can be aligned (S305). That is, the data alignment unit 103 determines whether the request payload data requested by the request request source 101 and the corresponding ECC can be obtained from the data from the memory 105 or the data in the internal buffer A 109 and the data in the previous value holding unit 104. to decide. At this time, data at address 0004h is input from the memory 105, and data at address 0000h is stored in the previous value holding unit 104 as the previous value. Since the request payload data and the corresponding ECC are obtained from the data input from the memory 105 and the data of the previous value holding unit 104, the determination result in S305 is Yes.
  • the data alignment unit 103 receives the data (D0 to D3) at the address 0000h from the previous value holding unit 104, acquires the data (ECC0 to D6) at the address 0004h from the data selection unit 108, and requests payload data (D0). To D3) and the corresponding ECC (ECC0) are extracted, and the extracted data is aligned (S205).
  • the ECC correction unit 102 acquires the aligned data (D0 to D3 and ECC0) from the data alignment unit 103 and performs ECC correction of the request payload data D0 to D3 using ECC0
  • the request request source Request payload data D0 to D3 are returned to 101 (S206). Since all of the requested payload data has been returned, the processing is completed (S207).
  • request request source 101 receives a 4-byte read request from address 0004h.
  • the hit determination unit 113 determines whether the payload data requested by the read request hits the data stored in the internal buffer A109 (S301). That is, whether the hit determination unit 113 requests the read request received in S201 to read data at an address continuous to the address described in the “address of the internal buffer A” of the internal buffer information storage unit 112. to decide.
  • the hit determination unit 113 requests the read request received in S201 to read data at an address continuous to the address described in the “address of the internal buffer A” of the internal buffer information storage unit 112. to decide.
  • 4 bytes are added to “0000h address”. 0004h ”, which matches the read request request, so that the hit determination is made, and the determination result in S301 is Yes.
  • the memory address conversion unit 106 calculates an area (read candidate address) including 4-byte data (D4 to D7) and the corresponding ECC (ECC1). Referring to FIG. 2, since the data is arranged across the addresses 0004h and 0008h, the memory address conversion unit 106 normally generates a read command for instructing 8-byte read from the address 0004h. . However, since the data at address 0004h uses data in the internal buffer A109, the memory address conversion unit 106 generates a read command (partial read command) instructing reading of 4 bytes from 0008h, and stores the generated read command in the memory. It outputs to 105 (S302). The memory address conversion unit 106 outputs the generated read command to the memory 105, and outputs the read command and the read request from the request request source 101 to the internal buffer management unit 107 and the data selection unit 108.
  • an area read candidate address
  • ECC ECC
  • the internal buffer management unit 107 sends the data in the internal buffer A109 to the data alignment unit 103 via the data selection unit 108 (S303).
  • the data alignment unit 103 determines whether the data can be aligned (S305). That is, the data alignment unit 103 determines whether the request payload data requested by the request request source 101 and the corresponding ECC can be obtained from the data from the memory 105 or the data in the internal buffer A 109 and the data in the previous value holding unit 104. to decide. At this time, the internal buffer A 109 has data at address 0004h, and the previous value holding unit 104 also has data at address 0004h. Since the requested payload data and the corresponding ECC cannot be obtained only with the data at address 0004h, the data alignment unit 103 waits for the input of data at address 0008h (NO in S305). At this time, the data (address 0004h) in the internal buffer A 109 is stored as the previous value from the data selection unit 108 to the previous value holding unit 104.
  • the memory 105 returns the data at address 0008h (D7 to D9), and in the memory control device 100, the data selection unit 108 inputs the data at address 0008h (S203).
  • the data selection unit 108 notifies the data alignment unit 103 and the internal buffer management unit 107 of input of read data.
  • the internal buffer management unit 107 determines whether the input read data is the last data (S400).
  • the data at address 0008h is the last data input from the memory 105 in response to the read command, and corresponds to the last data (YES in S400).
  • the internal buffer management unit 107 determines whether the input data at address 0008h includes subsequent payload data other than the request payload data and the corresponding ECC (S401).
  • Request payload data requested from the request request source 101 is D4 to D7, and the corresponding ECC is EEC1.
  • the data at address 0008h includes subsequent payload data D8 to D9. For this reason, the determination result of S401 is YES.
  • the internal buffer management unit 107 describes “0004h” in “address of internal buffer A” and “4” of 4-byte read in “distance information A” of the internal buffer information storage unit 112, and internal buffer A 109.
  • the data at address 0008h (D7 to D9) are stored (S402).
  • the data alignment unit 103 determines whether the data can be aligned (S305). That is, the data alignment unit 103 determines whether the request payload data requested by the request request source 101 and the corresponding ECC can be obtained from the data from the memory 105 or the data in the internal buffer A 109 and the data in the previous value holding unit 104. to decide. At this time, data at address 0008h is input from the memory 105, and data at address 0004h is stored in the previous value holding unit 104 as the previous value. Since the request payload data and the corresponding ECC are obtained from the data input from the memory 105 and the data of the previous value holding unit 104, the determination result in S305 is Yes.
  • the data alignment unit 103 receives data at addresses 0004h (ECC0 to D6) from the previous value holding unit 104, acquires data at addresses 0008h (D7 to D9) from the data selection unit 108, and requests payload data (D4). To D7) and the corresponding ECC (ECC1) are extracted, and the extracted data is aligned (S205).
  • the ECC correction unit 102 acquires the aligned data (D4 to D7 and ECC1) from the data alignment unit 103 and performs ECC correction of the request payload data D4 to D7 using ECC1
  • the request request source Request payload data D4 to D7 are returned to 101 (S206). Since all of the requested payload data has been returned, the processing is completed (S207).
  • FIG. 5 specifically explains the operation of the memory control device 100 described above.
  • the first data A (D0 to D3) is read from the address 0000h in FIG. Since the first data A (D0 to D3) is not the last data, it is not held in the internal buffer A109, but is held in the previous value holding unit 104 as the first data B (D0 to D3).
  • the second data A (ECC0 to D6) is read from the memory 105 from address 0004h in FIG. Since the second data A (ECC0 to D6) is the last data, it is held in the internal buffer A109 as the second data E (ECC0 to D6).
  • the data aligning unit 103 performs data alignment from the second data A (ECC 0 to D 6) from the memory 105 and the first data B (D 0 to D 3) of the previous value holding unit 104, so that the first data C (D 0 to D 0 ECC0) is generated. Then, the ECC correction unit 102 performs ECC correction of the first data C (D0 to ECC0), and outputs the first data D (D0 to D3) after the ECC correction to the request request source 101.
  • the second data A (ECC0 to D6) is held in the previous value holding unit 104 as the second data B (ECC0 to D6).
  • the second data E (ECC0 to D6) exists in the internal buffer A109.
  • the second data B (ECC0 to D6) is held in the previous value holding unit 104 as the previous value. Since the second data E (ECC0 to D6) in the internal buffer A109 and the second data B (ECC0 to D6) in the previous value holding unit 104 cannot be aligned, the second data E (ECC0 to D6) is used as the previous value. While being held in the previous value holding unit 104, the fourth data A (D7 to D9) is read from the memory 105 from the address 0008h in FIG.
  • the fourth data A (D7 to D9) is the tail data, it is held in the internal buffer A109 as the fourth data E (D7 to D9).
  • the data aligning unit 103 performs data alignment from the fourth data A (D7 to D9) from the memory 105 and the second data E (ECC0 to D6) of the previous value holding unit 104 to obtain the second data C (D4 to D4).
  • ECC1 is generated.
  • the ECC correction unit 102 performs ECC correction of the second data C (D4 to ECC1), and outputs the second data D (D4 to D7) after the ECC correction to the request request source 101.
  • the fourth data A (D7 to D9) is held in the previous value holding unit 104 as the fourth data B (D7 to D9).
  • ECC0 to D6 data is duplicated as in the third data A (ECC0 to D6).
  • the data is read from the memory 105.
  • ECC0 to D6 data in the internal buffer A109 can be used, duplicate reading from the memory 105 is unnecessary.
  • the operation example of the memory control device 100 including only the internal buffer A 109 has been described above.
  • an operation example of the memory control device 100 including the internal buffer A109 and the internal buffer B1090 will be described.
  • FIG. 6 shows an operation example of the memory control device 100 including the internal buffer A 109 and the internal buffer B 1090.
  • FIG. 6 there is a 4-byte read read request (D0 to D3) from address 0000h (FIG. 1) from the request request source 101, and then a 4-byte read read request (D14 to D17) from address 0014h (FIG. 1). Further, an example of the operation of the request request source 101 when there is a read request (D4 to D7) for reading 4 bytes from address 0004h is shown.
  • the ECC4 to D16 data (address 0018h in FIG. 2) read for the read request preceding the first read request is the first. It is assumed that 3 data E is held in the internal buffer B1090. On the other hand, it is assumed that data is not held in the internal buffer A 109 at the time of the first read request.
  • the first data A (D0 to D3) is read from the address 0000h in FIG. Since the first data A (D0 to D3) is not the last data, it is not held in the internal buffer A109, but is held in the previous value holding unit 104 as the first data B (D0 to D3).
  • the second data A (ECC 0 to D 6) is read from the memory 105. Since the second data A (ECC0 to D6) is the last data, it is held in the internal buffer A109 as the second data E (ECC0 to D6).
  • the data aligning unit 103 performs data alignment from the second data A (ECC 0 to D 6) from the memory 105 and the first data B (D 0 to D 3) of the previous value holding unit 104, so that the first data C (D 0 to D 0 ECC0) is generated. Then, the ECC correction unit 102 performs ECC correction of the first data C (D0 to ECC0), and outputs the first data D (D0 to D3) after the ECC correction to the request request source 101.
  • the second data A (ECC0 to D6) is held in the previous value holding unit 104 as the second data B (ECC0 to D6).
  • the third data E (ECC4 to D16) exists in the internal buffer B1090.
  • the second data B (ECC0 to D6) is held in the previous value holding unit 104 as the previous value. Since the third data E (ECC4 to D16) in the internal buffer B1090 and the second data B (ECC0 to D6) in the previous value holding unit 104 cannot be aligned, the third data E (ECC4 to D16) is the third data.
  • the data aligning unit 103 performs data alignment from the fourth data A (D17 to D19) from the memory 105 and the third data B (ECC4 to D16) of the previous value holding unit 104 to obtain the second data C (D14 to D14). ECC5) is generated.
  • the ECC correction unit 102 performs ECC correction of the second data C (D14 to ECC5), and outputs the second data D (D14 to D17) after the ECC correction to the request request source 101.
  • the fourth data A (D17 to D19) is held in the previous value holding unit 104 as the fourth data B (D17 to D19).
  • the second data E (ECC0 to D6) exists in the internal buffer A109.
  • the fourth data B (D17 to D19) is held in the previous value holding unit 104 as the previous value. Since the second data E (ECC0 to D6) in the internal buffer A109 and the fourth data B (D17 to D19) in the previous value holding unit 104 cannot be aligned, the second data E (ECC0 to D6) is the fifth data.
  • the data aligning unit 103 performs data alignment from the sixth data A (D7 to D9) from the memory 105 and the fifth data B (ECC0 to D6) of the previous value holding unit 104 to obtain the third data C (D4 to D4). ECC1) is generated.
  • the ECC correction unit 102 performs ECC correction of the third data C (D4 to ECC1), and outputs the third data D (D4 to D7) after the ECC correction to the request request source 101.
  • the sixth data A (D7 to D9) is held in the previous value holding unit 104 as the sixth data B (D7 to D9).
  • the sixth data B (D7 to D9) is not shown.
  • the memory control device 100 can cope with a read request that is an integer multiple of 4 bytes. For example, it is possible to handle read requests of 8 bytes each, such as 8 bytes from address 0000h and 8 bytes from address 0008h.
  • a memory control device having the following means has been described.
  • A Means for converting a request from a request request source into a memory request and bridging data
  • E Means for holding the previous data received from the memory
  • f Means for holding the last received read data including the payload data of the next address
  • Means for holding distance information i) means for determining whether to reuse payload data held by a read command to be issued to the memory from now on (j) data in the internal buffer and read data received from the memory Means to choose between.
  • FIG. 1 for example, a read request for reading 4 bytes from the address 0004h (FIG. 1) from the request request source 101 is completed after reading 4 bytes from the preceding address 0000h (FIG. 1) (S207 in FIG. 4). Therefore, a non-pipeline type operation is performed.
  • pipeline type operation read data of another transaction is returned from the memory at the timing when the data held in the internal buffer is used, and there is a possibility of contention between the data in the internal buffer and the data from the memory. If there is a data conflict, any data will be lost.
  • the memory control device 100 of the present embodiment corresponds to a pipeline type memory.
  • the memory control apparatus 100 according to the present embodiment can make use of the characteristics of the pipeline type memory, and can contribute to an improvement in memory access throughput.
  • FIG. 7 shows a configuration example of the memory control device 100 according to the present embodiment.
  • a command issue interval control unit 114 and a FIFO buffer 110 are added.
  • the command issuance interval control unit 114 When using the data in the internal buffer A 109, the command issuance interval control unit 114 performs control to delay the output of the read command to the memory 105 for a time required to use the data in the internal buffer A 109. Since the read data is returned from the memory 105 after a certain time interval (read latency) after the read command is output, the command issue interval control unit 114 controls the interval at which the read command is issued. It is possible to make time for using the data in the internal buffer A. Note that the delay time for the command issue interval control unit 114 to delay the output of the read command is, for example, the time for one slot in the pipeline. In the present embodiment, the command issue interval control unit 114 also corresponds to an example of a command output unit.
  • the memory address conversion unit 106 stores a read command for the memory 105 in the FIFO buffer 110. Further, the memory address conversion unit 106 receives an internal buffer data input command (corresponding to a cache data input command) for instructing the data alignment unit 103 to input data held in the internal buffer A 109, and data from the memory 105. A memory data input command instructing the data alignment unit 103 to input is stored in the FIFO buffer 110.
  • the FIFO buffer 110 stores a read command, an internal buffer data input command, and a memory data input command.
  • the memory control apparatus 100 controls a pipeline type memory. That is, the memory control device 100 according to the present embodiment sends the next read request to the request request source 101 before returning all read data corresponding to the read request received from the request request source 101 to the request request source 101. And issues a read command to the memory 105. For this purpose, the issued read command is stored in the FIFO buffer 110.
  • the internal buffer management unit 107 sets the “internal buffer A address” value and the “distance information A” value in the internal buffer information storage unit 112 before inputting read data from the memory 105. To update. Therefore, the hit determination unit 113 not only determines whether or not the data of the read target address has been cached in the internal buffer A 109, but also the value of “address of internal buffer A” and the value of “distance information A” From this, it is also determined whether or not the data of the read target address is to be cached in the internal buffer A109.
  • S201, S301, and S202 are the same as those described in the first embodiment, and a description thereof will be omitted.
  • the memory address conversion unit 106 in S302, the memory address conversion unit 106 generates a read command (partial read command) instructing to read data not held in the internal buffer A 109, and in S506, the command issue interval control unit 114.
  • the read command (partial read command) is output to the memory 105 with a time interval for using the data in the internal buffer A 109 (time for avoiding data collision).
  • the command issue interval control unit 114 outputs the read command to the memory 105 after a predetermined delay time has elapsed from the normal timing at which the memory address conversion unit 106 generates the read command and outputs the read command.
  • the internal buffer management unit 107 determines whether or not subsequent payload data is included in the tail data (S505). That is, the internal buffer management unit 107 determines whether or not the subsequent payload data is included in the last data of the data read from the memory 105 in response to the read command generated in S202 or S302. This process is the same as S401 in FIG. As in the first embodiment, the internal buffer management unit 107 receives a read request from the request request source 101 and a read command to the memory 105 from the memory address conversion unit 106, and the data arrangement shown in FIG. Since the data arrangement in FIG. 2 is recognized, it can be determined whether or not the subsequent payload data is included in the tail data as in S505.
  • the internal buffer management unit 107 determines the value of “address of internal buffer A” and the value of “distance information A” in the internal buffer information storage unit 112. Is updated (S507). However, at this time, the data in the internal buffer A 109 is not updated.
  • the values of “address of internal buffer A” and “distance information A” of the internal buffer information storage unit 112 are read from the memory 105. Update before typing.
  • the memory address conversion unit 106 stores the command in the FIFO buffer 110 (S501). Specifically, when the whole area read command is generated in S202, the memory address conversion unit 106 generates a memory data input command for instructing the data alignment unit 103 to input data from the memory 105. Then, the memory address conversion unit 106 stores the entire area read command, the read request, and the memory data input command in the FIFO buffer 110. When the memory address conversion unit 106 generates a partial read command in S302, the memory address conversion unit 106 instructs the data alignment unit 103 to input the data held in the internal buffer A 109, and the memory data Generate input commands.
  • the memory address conversion unit 106 stores the partial read command, the read request, the internal buffer data input command, and the memory data input command in the FIFO buffer 110. If a read request is received from the request request source 101 before the return of the request payload data subjected to ECC correction is completed, commands are continuously stored in the FIFO buffer 110.
  • the data alignment unit 103 periodically checks whether or not the command is accumulated in the FIFO buffer 110 (S502). If there is a command in the FIFO buffer 110 (YES in S502), A command is taken out from the FIFO buffer 110 (S503). If the extracted command is an internal buffer data input command, YES is obtained in S504, and the process proceeds to S303. If the extracted command is a memory data input command, NO is returned in S504, and the process proceeds to S203. For reasons of drawing, FIG.
  • the data selection unit 108 inputs read data from the memory 105, and notifies the internal buffer management unit 107 of the input of read data.
  • the internal buffer management unit 107 determines whether or not the input read data is the last data (S400). If the read data is the last data, the subsequent payload data is included in the last data. It is determined whether or not it is (S401). If the trailing data is included in the tail data, the internal buffer management unit 107 updates the data in the internal buffer A 109 (S402).
  • the internal buffer management unit 107 sends the data in the internal buffer A 109 to the data alignment unit 103 via the data selection unit 108.
  • the data alignment unit 103 determines whether the data can be aligned (S305). If the data can be aligned, the data alignment unit 103 extracts the request payload data and the corresponding ECC, and aligns the extracted data. (S205). Further, the ECC correction unit 102 acquires the aligned data from the data alignment unit 103, performs ECC correction of the request payload data using the ECC data, and then returns the request payload data to the request request source 101 ( S206). When all the request payload data is returned, the processing is completed (S207).
  • FIGS. 1 Before receiving a 4-byte read read request from address 0000h (FIG. 1) as a first read request from the request request source 101 and returning request payload data to the first read request.
  • the operation of the memory control apparatus 100 will be described on the assumption that a 4-byte read read request from address 0004h (FIG. 1) is accepted as the second read request.
  • T1 to T11 in FIG. 12 indicate slots in the pipeline processing.
  • Memory CLK indicates an operation clock of the request request source 101, the memory control device 100, and the memory 105.
  • Command (C1) in FIG. 12 corresponds to C1 in FIG. 7
  • Command (C2) corresponds to C2 in FIG. 7
  • Command (C3) corresponds to C3 in FIG.
  • Read Data (Out) in FIG. 12 indicates output of request payload data from the ECC correction unit 102 to the request request source 101.
  • Read Data (In) in FIG. 12 indicates input of read data from the memory 105.
  • sRead-0000 indicates a read request from the request request source 101, and indicates a read request of 4-byte read from the address 0000h (FIG. 1).
  • sRead-0004 indicates a read request from the request request source 101, and indicates a read request for reading 4 bytes from the address 0004h (FIG. 1).
  • dRead-0000 indicates a read command to the memory 105, and indicates a read command for reading 4 bytes from the address 0000h (FIG. 2).
  • dRead-0004 indicates a read command to the memory 105, and indicates a read command for reading 4 bytes from the address 0004h (FIG. 2).
  • dRead-0008 indicates a read command to the memory 105, and indicates a read command for reading 4 bytes from the address 0008h (FIG. 2).
  • Data-0000 in the column other than Read Data (out) indicates data at address 0000h (FIG.
  • Data-0004 in the column other than Read Data (out) indicates data at address 0004h (FIG. 2) read from the memory 105.
  • Data-0008 in a column other than Read Data (out) indicates data at address 0008h (FIG. 2) read from the memory 105.
  • Data-0000 in the column Read Data (out) indicates request payload data at address 0000h (FIG. 1) output to the request request source 101.
  • Data-0004 in the column of Read Data (out) indicates request payload data at address 0004h (FIG. 1) output to the request request request source 101.
  • the memory address conversion unit 106 receives a read request (sRead-0000 in FIG. 12) for reading 4 bytes from the address 0000h (FIG. 1) from the request request source 101 (S201).
  • the hit determination unit 113 determines whether the accepted read request hits the data stored in the internal buffer A 109 (S301). At this time, no data is stored in the internal buffer A109, so the determination result in S301 is No.
  • the memory address conversion unit 106 generates read commands (dRead-0000 and dRead-0004 in FIG. 12) for instructing reading from addresses 0000h (FIG. 2) and 0004h (FIG. 2).
  • the command is output to the memory 105 (S202).
  • the internal buffer management unit 107 checks whether or not the subsequent payload data is included in the tail data (S505). In this case, the subsequent payload data is added to the read data from address 0004h (FIG. 2). Therefore, the internal buffer management unit 107 updates the values of “internal buffer A address” and “distance information A” in the internal buffer information storage unit 112 (S507). As a result, “0000h address” is described in “Internal buffer A address” and “4” is described in “Distance information A” as shown in the column “Internal buffer A address” in FIG. . Further, the memory address conversion unit 106 stores a read command (dRead-0000 and dRead-0004 in FIG. 12), a read request (sRead-0004 in FIG. 12), and a memory data input command in the FIFO buffer 110 (S501).
  • the memory address conversion unit 106 receives a read request (sRead-0004 in FIG. 12) for reading 4 bytes from the address 0004h (FIG. 1) from the request request source 101 (S201).
  • sRead-0004 in FIG. 12
  • “0000h address” is described in the “internal buffer A address” of the internal buffer information storage unit 112 in the process of S507
  • “4” is described in “distance information A”. Since the data of FIG. 2 is scheduled to be cached in the internal buffer A 109, the determination in S301 is YES. For this reason, the memory address conversion unit 106 generates a read command (dRead-0008 in FIG. 12) for instructing reading from the address 0008h (FIG. 2) (S302).
  • the command issuance interval control unit 114 sends a read command (dRead-0008 in FIG. 12) to the memory 105 with an interval by a time for using the data in the internal buffer A 109 (a time for avoiding data collision). Output to. From the input timing of the read request from the request request source 101 (sRead-0004 in FIG. 12), the read command (dRead-0008 in FIG. 12) can be output to the memory 105 at the timing indicated by reference numeral 1201 in FIG. . However, in this embodiment, the command issue interval control unit 114 delays the read command output timing by one slot from the timing at which the read command can be output, and the read command (dRead-0008 in FIG. ) Is output to the memory 105.
  • the internal buffer management unit 107 checks whether or not the subsequent payload data is included in the tail data (S505). In this case, since the subsequent payload data is included in the read data from the address 0008h (FIG. 2), the internal buffer management unit 107 performs “internal buffer A address” and “distance information A” in the internal buffer information storage unit 112. "Is updated (S507). As a result, “0004h address” is described in “address of internal buffer A” and “4” is described in “distance information A” as shown in the column of “address of internal buffer A” in FIG. . Further, the memory address conversion unit 106 stores the read command (dRead-0008 in FIG. 12), the read request (sRead-0004 in FIG. 12), the memory data input command, and the internal buffer data input command in the FIFO buffer 110 (S501). ).
  • the data alignment unit 103 takes out the first read command (dRead-0000 and dRead-0004 in FIG. 12) and the memory data input command from the FIFO buffer 110 (S502, S503).
  • S504 is NO
  • the data selection unit 108 receives the data at address 0000h (FIG. 2) (data-0000 in FIG. 12) from the memory 105 as shown in FIG. Input (S203).
  • the input data (data-0000 in FIG. 12) is not the last data (NO in S400) and is not stored in the internal buffer A109.
  • the data at address 0000h (FIG. 2) (data-0000 in FIG. 12) is held in the previous value holding unit 104.
  • the data selection unit 108 inputs the data at address 0004h (FIG. 2) (data-0004 in FIG. 12) from the memory 105 (S203).
  • the input data (data-0004 in FIG. 12) is the last data (YES in S400) and includes subsequent payload data (YES in S401), so the input data is stored in the internal buffer A109. Is done.
  • the data alignment unit 103 since the data can be aligned with the input data (data-0004 in FIG. 12) and the data in the previous value holding unit 104 (data-0000 in FIG. 12) (YES in S305), the data alignment unit 103 stores the data.
  • the ECC correction unit 102 performs ECC correction, and outputs the request payload data after ECC correction (data-0000 in FIG. 12) to the request request source 101 (S205, S206). Also, the data (data-0004 in FIG. 12) at address 0004h (FIG. 2) is held in the previous value holding unit 104.
  • the data alignment unit 103 takes out the next read command (dRead-0008 in FIG. 12), the internal buffer data input command, and the memory data input command from the FIFO buffer 110 (S502, S503).
  • S504 is YES
  • the data in the internal buffer A109 (data-0004 in FIG. 12) is output to the data alignment unit 103 (S303). Since data cannot be aligned between the data from the internal buffer A 109 (data-0004 in FIG. 12) and the data in the previous value holding unit 104 (data-0004 in FIG. 12) (NO in S305), the next data from the memory 105 Wait for input. At this time, the data (data-0004 in FIG. 12) from the internal buffer A 109 is held in the previous value holding unit 104.
  • the data selection unit 108 inputs data (data-0008 in FIG. 12) at address 0008h (FIG. 2) from the memory 105 (S203). If dRead-0008 is output from the command issue interval control unit 114 to the memory 105 at the timing of reference numeral 1201, data-0008 is input from the memory 105 at the timing of reference numeral 1203. In addition, since dRead-0008 is output at timing 1202, data-0008 is input from the memory 105 at timing 1204.
  • the input data (data-0008 in FIG. 12) is the last data (YES in S400) and includes subsequent payload data (YES in S401), so the input data is stored in the internal buffer A109. Is done. Further, since the data can be aligned with the input data (data-0008 in FIG. 12) and the data in the previous value holding unit 104 (data-0004 in FIG. 12) (YES in S305), the data alignment unit 103 stores the data.
  • the ECC correction unit 102 performs ECC correction and outputs the request payload data after ECC correction (data-0004 in FIG. 12) to the request request source 101 (S205, S206). Further, the data at address 0008h (FIG. 2) (data-0004 in FIG. 12) is held in the previous value holding unit 104.
  • FIGS. 1 An operation example of the memory control device 100 in which the internal buffer B 1090 exists in addition to the internal buffer A 109 will be described with reference to FIGS.
  • the operation of the memory control device 100 will be described on the assumption that a read request for 4-byte read from address 0014h (FIG. 1) is accepted as the second read request.
  • the internal buffer B 1090 has the address 0018h (FIG. 2) in response to a read request for the previous address 0010h (FIG. 1). It is assumed that data (data-0018 in FIG. 13) is stored.
  • data-0018 is represented by a double line to indicate that data-0018 is continuously held in the internal buffer B 1090.
  • the memory address conversion unit 106 accepts a read request (sRead-0000 in FIG. 13) for reading 4 bytes from the address 0000h (FIG. 1) from the request request source 101 (S201).
  • the hit determination unit 113 determines whether the accepted read request hits the data stored in the internal buffer A 109 or the internal buffer B 1090 (S301). At this time, no data is stored in the internal buffer A 109, and the data in the internal buffer B 1090 does not match the address requested in the read request, so the determination result in S301 is No.
  • the memory address conversion unit 106 generates read commands (dRead-0000 and dRead-0004 in FIG. 13) for instructing reading from addresses 0000h (FIG. 2) and 0004h (FIG. 2), and the generated read command Is output to the memory 105 (S202).
  • the internal buffer management unit 107 checks whether or not the subsequent payload data is included in the tail data (S505). In this case, the subsequent payload data is added to the read data from address 0004h (FIG. 2). Therefore, the internal buffer management unit 107 updates the values of “internal buffer A address” and “distance information A” in the internal buffer information storage unit 112 (S507). As a result, “0000h address” is described in “Internal buffer A address” and “4” is described in “Distance information A” as shown in the column “Internal buffer A address” in FIG. . Further, the memory address conversion unit 106 stores the read data (dRead-0000 and dRead-0004 in FIG. 13) and the memory data input command in the FIFO buffer 110 (S501).
  • the memory address conversion unit 106 receives a read request (sRead-0014 in FIG. 13) for reading 4 bytes from the address 0014h (FIG. 1) from the request request source 101 (S201).
  • a read request (sRead-0014 in FIG. 13) for reading 4 bytes from the address 0014h (FIG. 1) from the request request source 101 (S201).
  • Data-0018) is cached, the determination in S301 is YES. Therefore, the memory address conversion unit 106 generates a read command (dRead-001C in FIG. 13) for instructing reading from the 001Ch address (FIG.
  • the command issuance interval control unit 114 sends the read command (dRead-001C in FIG. 13) to the memory 105 with an interval for the time for using the data in the internal buffer B 1090 (time for avoiding data collision). Output to. From the input timing of the read request from the request request source 101 (sRead-0014 in FIG. 13), the read command (dRead-001C in FIG. 13) is output to the memory 105 at the timing of reference numeral 1301 in FIG. However, in this embodiment, the command issue interval control unit 114 delays the read command output timing by one slot from the timing at which the read command can be output, and reads the read command (dRead ⁇ in FIG. 001C) is output to the memory 105.
  • the internal buffer management unit 107 checks whether or not the subsequent payload data is included in the tail data (S505). In this case, the subsequent payload data is added to the read data from the address 001Ch (FIG. 2). Therefore, the internal buffer management unit 107 updates the values of “internal buffer B address” and “distance information B” in the internal buffer information storage unit 112 (S507). As a result, “0014h address” is described in “Internal buffer B address” and “4” is described in “Distance information B” as shown in the “Internal buffer B address” column of FIG. . Further, the memory address conversion unit 106 stores the read data (dRead-001C in FIG. 13) and the read request (sRead-0014 in FIG.
  • the memory data input command, and the internal buffer data input command in the FIFO buffer 110 S501).
  • the internal buffer data input command is instructed to input data in the internal buffer B 1090.
  • the internal buffer data input command is instructed to input the data in the internal buffer A 109.
  • the data alignment unit 103 takes out the first read command (dRead-0000 and dRead-0004 in FIG. 13) and the memory data input command from the FIFO buffer 110 (S502, S503).
  • S504 is NO
  • the data selection unit 108 receives the data at address 0000h (FIG. 2) (data-0000 in FIG. 13) from the memory 105 as shown in FIG. Input (S203).
  • the input data (data-0000 in FIG. 13) is not the last data (NO in S400) and is not stored in the internal buffer A109.
  • the data at address 0000h (FIG. 2) (data-0000 in FIG. 13) is held in the previous value holding unit 104.
  • the data selection unit 108 inputs the data at address 0004h (FIG. 2) (data-0004 in FIG. 13) from the memory 105 (S203).
  • the input data (data-0004 in FIG. 13) is the last data (YES in S400) and includes subsequent payload data (YES in S401), so the input data is stored in the internal buffer A109. Is done.
  • the data alignment unit 103 since the data can be aligned with the input data (data-0004 in FIG. 13) and the data in the previous value holding unit 104 (data-0000 in FIG. 13) (YES in S305), the data alignment unit 103 stores the data.
  • the ECC correction unit 102 performs ECC correction, and outputs the request payload data after ECC correction (data-0000 in FIG. 13) to the request request source 101 (S205, S206). Further, data (data-0004 in FIG. 13) at address 0004h (FIG. 2) is held in the previous value holding unit 104.
  • the data alignment unit 103 extracts the next read data (dRead-001C in FIG. 13), the internal buffer data input command, and the memory data input command from the FIFO buffer 110 (S502, S503).
  • S504 is YES
  • the data in the internal buffer B 1090 (data-0018 in FIG. 13) is output to the data alignment unit 103 (S303).
  • the data from the internal buffer B 1090 (data-0018 in FIG. 13) and the data in the previous value holding unit 104 (data-0004 in FIG. 13) cannot be aligned (NO in S305), so the next data from the memory 105 Wait for input.
  • data (data-0018 in FIG. 13) from the internal buffer A 109 is held in the previous value holding unit 104.
  • the data selection unit 108 inputs the data (data-001C in FIG. 13) at the address 001Ch (FIG. 2) from the memory 105 (S203). If dRead-001C is output from the command issuing interval control unit 114 to the memory 105 at the timing of reference numeral 1301, data-001C is input from the memory 105 at the timing of reference numeral 1303. In addition, since dRead-001C is output at the timing of reference numeral 1302, data-001C is input from the memory 105 at the timing of reference numeral 1304.
  • the input data (data-001C in FIG. 13) is the last data (YES in S400) and includes subsequent payload data (YES in S401), so the input data is stored in the internal buffer B1090. Is done. Further, since the data can be aligned with the input data (data-001C in FIG. 13) and the data (data-0018 in FIG. 13) of the previous value holding unit 104 (YES in S305), the data alignment unit 103 stores the data.
  • the ECC correction unit 102 performs ECC correction, and outputs the request payload data after ECC correction (data-0014 in FIG. 13) to the request request source 101 (S205, S206). Further, the data (data-001C in FIG. 13) at the address 001Ch (FIG. 2) is held in the previous value holding unit 104.
  • data for one address (4-byte data) is stored in the internal buffer A 109 and the internal buffer B 1090.
  • data for two addresses or more is stored in the internal buffer A 109 and the internal buffer B 1090. It may be.
  • the memory address conversion unit 106 stores data of addresses other than the two addresses, that is, A read command (partial read command) for instructing reading of data after the third address is generated.
  • the command issue interval control unit 114 delays the output timing of the partial read command generated by the memory address conversion unit 106 by one slot and outputs it to the memory 105.
  • the memory address conversion unit 106 generates a partial read command with a delay of one slot from the normal generation timing, so that the read data from the memory 105 and the data from the internal buffer A 109 can be transmitted. You may make it avoid a collision.
  • the memory control device 100 can cope with a read request of an integer multiple of 4 bytes as in the first embodiment. Even when three or more internal buffers are used, processing can be performed according to the procedure described in this embodiment.
  • a memory control device for supporting pipelined memory, (A) Means for storing request issued to memory (b) A memory control apparatus having means for controlling the command issue interval and delaying the issue of the next command issued to the memory has been described.
  • Embodiment 3 In the second embodiment, when data in the internal buffer A 109 is used, the read command issuance interval to the memory 105 is unconditionally left, but when the read request from the request request source 101 is received, the internal buffer When the time longer than the use of A109 is available, that is, when data conflict does not occur, it is not necessary to leave a read command issue interval.
  • a method of issuing a read command without waste by detecting that time for using the internal buffer A 109 is not available and controlling so as to leave a command issuing interval only in that case will be described. .
  • FIG. 10 shows a configuration example of the memory control device 100 according to the present embodiment.
  • an issue interval determination unit 115 is added in FIG. 10.
  • the issuance interval determination unit 115 has a constant issuance interval between the partial read command to be issued to the memory 105 and the read command issued immediately before the partial read command (either the whole area read command or the partial read command). It is determined whether or not it is free. Specifically, the issue interval determination unit 115 determines the elapsed time (delay time) described in the second embodiment from the last output of the read command (either the whole area read command or the partial read command). ) Is exceeded.
  • the command issue interval control unit 114 does not leave the interval, A read command is output to the memory 105.
  • the issue interval determination unit 115 holds the time when the last read command was output as the issue time of the previous read, and the difference between the issue time of the previous read and the current time will be described in the second embodiment. It is determined whether the issued interval (delay time) has been exceeded.
  • the issue interval determination unit 115 also corresponds to an example of a command output unit.
  • the request request source 101 accepts a 4-byte read read request from address 0000h (FIG. 1) as a first read request, and returns request payload data to the first read request.
  • the operation of the memory control device 100 will be described on the assumption that an example of receiving a 4-byte read read request from the address 0004h (FIG. 1) is received as the second read request.
  • the memory address conversion unit 106 inputs a read request for reading 4 bytes (sRead-0000 in FIG. 14) from the address 0000h (FIG. 1), and from the address 0000h (FIG. 2) to 8 as in the second embodiment.
  • a global read command for instructing byte reading is generated, and the command issue interval control unit 114 outputs the global read command to the memory 105 (S201, S301, S202).
  • the command issue interval control unit 114 notifies the issue interval determination unit 115 of the output of the read command, and the issue interval determination unit 115 notifies the output of the read command from the command issue interval control unit 114.
  • the issuance time of the immediately preceding read is updated with the set time (S602). Thereafter, the same processing as in the second embodiment is performed.
  • the memory address conversion unit 106 inputs a read request for reading 4 bytes (sRead-0004 in FIG. 14) from address 0004h (FIG. 1) (S201).
  • sRead-0004 in FIG. 14 4 bytes
  • S301 is YES
  • the memory address conversion unit 106 issues a partial read command (dRead-0008 in FIG. 14) as in the second embodiment.
  • Generate S302
  • the issue interval determination unit 115 determines whether or not the elapsed time from the output of the last read command (dRead-0004 in FIG. 14) exceeds the delay time (the time for one slot in the example of FIG. 14). Is determined (S601). In the example of FIG.
  • a read command (dRead-0008 in FIG. 14) is output to the memory 105 without waiting.
  • the read command (dRead-0008) is output to the memory 105 at the timing indicated by reference numeral 1402 in FIG. 14, but in this embodiment, the read command (dRead-0008) is output at the timing indicated by reference numeral 1401.
  • the data is output to the memory 105.
  • read data (data-0008) is input from the memory 105 at the timing of reference numeral 1403.
  • read data (data-0008) is input at the timing of reference numeral 1404.
  • the command issuance interval control unit 114 sends the read command to the memory 105 as in the second embodiment.
  • a read command (dRead-0008 in FIG. 14) is output to the memory 105 after a delay time has elapsed from the output possible timing (S506). Since the subsequent processing is the same as that of the second embodiment, description thereof is omitted.
  • the command issue interval control unit 114 determines that the read command has passed after the delay time has elapsed from the timing at which the read command can be output. Is output to the memory 105.
  • the command issuance interval control unit 114 determines the difference between the elapsed time from the output of the last read command and the delay time. The time may be calculated, and the read command may be output to the memory 105 after the difference time has elapsed from the timing at which the read command can be output.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 内部バッファA109は、メモリ105からのデータをキャッシュする。メモリアドレス変換部106は、リクエスト要求元101からリードリクエストを入力する。ヒット判定部113は、リードリクエストで要求されているペイロードデータと、対応するECCとが格納されている2つ以上のアドレスである読み出し候補アドレスのいずれかのアドレスのデータが、内部バッファA109にキャッシュ済み又はキャッシュ予定であるかを判定する。コマンド発行間隔制御部114は、いずれかのアドレスのデータが内部バッファA109にキャッシュ済み又はキャッシュ予定である場合に、読み出し候補アドレスのうち内部バッファA109にデータがキャッシュ済み又はキャッシュ予定のアドレス以外のアドレスからのデータリードを指示する部分リードコマンドを、所定の遅延時間が経過した後にメモリ105に出力する。

Description

メモリ制御装置
 本発明は、メモリからのペイロードデータの読み出しを要求するリードリクエストを処理する技術に関する。
 メモリの信頼性を向上するためにペイロードデータにECC(Error Correcting Code)やパリティビットを付加することがある。
 通常は、付加したECC、パリティビット専用に幅方向にメモリ素子を追加する(水平ECC、水平パリティ)。
 例えば×8ビット構成のメモリではなく、特殊な×9ビット構成のメモリを使用することが考えられる。
 しかし、メモリ素子の追加や特殊メモリの採用は、コスト的に不利であったり、部品の入手性に難がある場合が多い。
 その解決策の一つとして、ECCを幅方向ではなく深さ方向へECCを保存することで幅方向にメモリを増やす必要のない、垂直ECC、垂直パリティを採用することがある(以下垂直ECCと記載する)。
 例えば、図1に示すようなメモリ構成に垂直ECC方式により、ECCを付加する場合を考える。
 図1では、1つのアドレスに、各々のデータ幅が1バイトのペイロードデータが4つ格納されている。
 図1のメモリ構成において、垂直ECCにより、4バイトのペイロードデータにつき1バイトのECCを付加すると、図2に示すようなデータの配置となる。
 垂直ECCを採用したメモリへアドレスが連続したリードを行うと、メモリからリードする2番目のデータ(第2データ)は、ECCを含めると後続するアドレスが連続したリードにおいても利用する。
 リードリクエストの要求元で図1のデータ配置にてペイロードデータを管理しており、メモリでは図2のデータ配置にてペイロードデータとECCを管理している場合に、図1の0000h番地のデータ(D0~D3)のリードリクエストがあると、以下のデータリードが行われる。
 メモリからは図2の0000h番地のデータ(D0~D3)、0004h番地のデータ(ECC0~D6)の順序で読み出しが行われ、読み出されたD0~D3に対してECC0を用いて誤り訂正が行われ、誤り訂正後のD0~D3が要求元に出力される。
 更に、図1の0004h番地のデータ(D4~D7)のリードリクエストがあった場合は、以下のデータリードが行われる。
 メモリからは図2の0004h番地のデータ(ECC0~D6)、0008h番地のデータ(D7~D9)の順序で読み出しが行われ、読み出されたD4~D7に対してECC1を用いて誤り訂正が行われ、誤り訂正後のD4~D7が要求元に出力される。
 このように、リード対象のアドレスが連続した場合、第2データ(上記の例では、図2の0004h番地のデータ)を2回メモリからリードする必要がある。
 しかし、メモリアクセスにはオーバーヘッドがある場合が多く(例えば、DRAM(Dynamic Random Access Memory)では同一バンクをACTするとアクセスできない期間が発生する)、第2データを2回リードすると、性能ロスが生じ、非効率的である。
 また、メモリアクセスごとに電力が消費されるため、第2データを2回リードすると、電力消費が多くなる。
 パリティチェック結果を伴うデータ転送技術に関し、連続したアクセスに対し、パリティチェック結果が出力されるよりも前に次のリードリクエストを受け取らないようバスコントロールを行い、パリティチェック後のデータ転送までリードリクエストを待たせる技術がある(例えば、特許文献1)。
特開平5-233471号公報
 特許文献1の方式では、リードリクエストからリードデータ返送までの1つのトランザクションが必ず完了することを保障はできるが、パイプライン型のメモリへのデータ転送には対応できないという課題がある。
 本発明は、上記のような事情に鑑みたものであり、パイプライン型のメモリであっても、重複したデータの読み出しを回避し、有限なメモリ帯域を効率的に利用し、また、メモリアクセスにおける電力消費を抑制することを主な目的とする。
 本発明に係るメモリ制御装置は、
 各々に所定のデータ幅分のデータが格納される複数のアドレスを有し、前記データ幅分のペイロードデータに対して誤り訂正データが設定され、対応関係にある前記データ幅分のペイロードデータと誤り訂正データとが隣接する2つのアドレスにわたって格納され、アドレス単位でデータの読み出しが行われるメモリ、からのペイロードデータの読み出しを要求するリードリクエストをパイプライン方式にて処理するメモリ制御装置であって、
 前記メモリから読み出されたデータをキャッシュするキャッシュ領域と、
 前記データ幅の整数倍分のペイロードデータの読み出しを要求するリードリクエストを入力するリードリクエスト入力部と、
 前記リードリクエスト入力部により入力されたリードリクエストで要求されているペイロードデータである要求ペイロードデータと前記要求ペイロードデータの誤り訂正に用いられる誤り訂正データである対応誤り訂正データとが格納されている2つ以上のアドレスである読み出し候補アドレスのうちのいずれかのアドレスのデータが、前記キャッシュ領域にキャッシュ済み又はキャッシュされる予定であるかを判定するキャッシュ判定部と、
 2つ以上の読み出し候補アドレスのうちのいずれかのアドレスのデータが前記キャッシュ領域にキャッシュ済み又はキャッシュされる予定であると前記キャッシュ判定部により判定された場合に、2つ以上の読み出し候補アドレスのうち前記キャッシュ領域にデータがキャッシュ済み又はキャッシュされる予定のアドレスであるキャッシュアドレス以外のアドレスからのデータの読み出しを指示する部分リードコマンドを、前記メモリへの前記部分リードコマンドの出力が可能なタイミングから所定の遅延時間が経過した後に、前記メモリに出力するコマンド出力部とを有することを特徴とする。
 本発明では、読み出し候補アドレスのうちキャッシュアドレス以外のアドレスからのデータの読み出しを指示する部分リードコマンドを、メモリへの部分リードコマンドの出力が可能なタイミングから所定の遅延時間が経過した後に、メモリに出力する。
 キャッシュアドレスのデータはキャッシュ領域のデータを用いることで重複したデータの読み出しを回避し、有限なメモリ帯域を効率的に利用し、また、メモリアクセスにおける電力消費を抑制することができる。
 また、遅延時間が経過した後に部分リードコマンドをメモリに出力することで、パイプライン型のメモリであっても、キャッシュ領域からのキャッシュアドレスのデータの入力とメモリからのキャッシュアドレス以外のアドレスのデータの入力との間の衝突を回避することができる。
実施の形態1に係るECCが含まれないデータの配置例を示す図。 実施の形態1に係る垂直ECCを付加されたデータの配置例を示す図。 実施の形態1に係るメモリ制御装置とリクエスト要求元とメモリとを示す図。 実施の形態1に係るメモリ制御装置の動作例を示すフローチャート図。 実施の形態1に係るメモリ制御装置の動作例を示す図。 実施の形態1に係るメモリ制御装置の動作例を示す図。 実施の形態2に係るメモリ制御装置とリクエスト要求元とメモリとを示す図。 実施の形態2に係るメモリ制御装置の動作例を示すフローチャート図。 実施の形態2に係るメモリ制御装置の動作例を示すフローチャート図。 実施の形態3に係るメモリ制御装置とリクエスト要求元とメモリとを示す図。 実施の形態3に係るメモリ制御装置の動作例を示すフローチャート図。 実施の形態2に係るメモリ制御装置の動作例を示すタイミングチャート図。 実施の形態2に係るメモリ制御装置の動作例を示すタイミングチャート図。 実施の形態3に係るメモリ制御装置の動作例を示すタイミングチャート図。
 実施の形態1では、パイプライン型ではないメモリに対応したメモリ制御装置を説明し、実施の形態2及び3で、パイプライン型のメモリに対応したメモリ制御装置を説明する。
 実施の形態1のメモリ制御装置では、第2データの重複したリードを回避するために前回値保持部と内部バッファを用いている。
 パイプライン型のメモリに対応した実施の形態2及び3のメモリ制御装置でも、第2データの重複したリードを回避するために、同じく前回値保持部と内部バッファを用いている。
 メモリ制御装置における前回値保持部と内部バッファの使用法は、実施の形態1~3で共通であるため、理解のしやすさを考慮して、実施の形態1において、非パイプライン方式のメモリ制御装置の動作を説明する。
 そして、実施の形態1での動作を前提にして、実施の形態2及び3では、パイプライン方式に特有の動作を説明する。
 また、実施の形態1~3で共通する、リクエスト要求元及びメモリ上のアドレスとデータの関係を説明する。
 例えば、図1に示すような、アドレスとデータ幅が4バイトのデータ(D0~D3f)がある。
 ECCを4バイトにつき1バイト付加した垂直ECCのメモリ配置を図2に示す。
 データに続けてECCを配置する順になっているが、これは一例であり、ECCの配置方法は、隣り合う前後2ラインの中にデータとECCが配置されていればよい。
 例えば、「EEC0」がペイロードデータ「D0」の前に配置されていてもよい。
 また、同じアドレスに割り当たったデータは拡張可能であり、例えば0000h番地にD0~D3、ECC0、D4~D6、次の0008h番地にD7、ECC1、D8~Db、ECC2、Dcと、データ幅を拡張しても良い。
 その場合においても、一部のペイロードデータとECCは隣接する2つのアドレスにわたって対応関係にあり続けるためである。
 実施の形態1.
 図3は、実施の形態1に係るメモリ制御装置100とリクエスト要求元101とメモリ105とを示す。
 図3において、リクエスト要求元101は、メモリ105へのリード・ライトリクエストを発行する。
 以下では、リクエスト要求元101は、メモリ105からのペイロードデータの読み出しを要求するリードリクエストを発行する場合に限って説明を進める。
 リクエスト要求元101は、例えば、CPU(Central Processing Unit)である。
 なお、リクエスト要求元101では、例えば図1に示す形式で、ペイロードデータの配置を認識している。
 また、メモリ105では、例えば図2に示す形式で、ペイロードデータと、誤り訂正データであるECCが配置されている。
 メモリ105からは、アドレス単位でデータの読み出しが行われる。
 なお、メモリ105は、メモリ制御装置100の制御対象のメモリである。
 メモリ制御装置100は、メモリアドレス変換部106、内部バッファA109、内部バッファ管理部107、内部バッファ情報記憶部112、ヒット判定部113、前回値保持部104、データ選択部108、データ整列部103及びECC訂正部102で構成される。
 メモリ制御装置100の各構成要素は、例えば素子、デバイス、回路といったハードウェアである。
 メモリ制御装置100の各構成要素は、例えば、チップセット内の半導体回路群である。
 また、例えば、メモリアドレス変換部106、内部バッファ管理部107、内部バッファ情報記憶部112、データ選択部108、データ整列部103及びECC訂正部102は、プログラムを用いて実現されていてもよい。
 メモリアドレス変換部106は、リクエスト要求元101からのリードリクエストを入力する。
 また、メモリアドレス変換部106は、入力したリードリクエストのアドレスを垂直ECCを配置したメモリ105上のアドレスへ変換する。
 例えば、リクエスト要求元101から図1の0000h番地のデータ(D0~D3)のリードリクエストがあった場合は、メモリアドレス変換部106は、図2の0000h番地のデータ(D0~D3)と0004h番地のデータ(ECC0~D6)へのアドレス変換を行う。
 なお、メモリアドレス変換部106によるアドレス変換後のアドレスを読み出し候補アドレスという(上記の例では、図2の0000h番地と0004h番地が読み出し候補アドレス)。
 また、リクエスト要求元101からのリードリクエストで要求されているペイロードデータを要求ペイロードデータという(上記の例では、D0~D3が要求ペイロードデータ)。
 また、要求ペイロードデータの誤り訂正に用いられるECCを対応誤り訂正データ又は対応ECCという(上記の例では、ECC0が対応誤り訂正データ)。
 更に、メモリアドレス変換部106は、アドレス変換結果及びヒット判定部113の判定結果に基づき、メモリ105にデータリードを指示するリードコマンドを出力する。
 なお、本明細書では、メモリアドレス変換部106がリクエスト要求元101から入力する情報をリードリクエストといい、メモリアドレス変換部106がメモリ105に出力する情報をリードコマンドという。
 ヒット判定部113においてヒット判定があった場合は、メモリアドレス変換部106は、部分リードコマンドをメモリ105に出力する。
 部分リードコマンドは、読み出し候補アドレスのうち内部バッファA109にキャッシュ済みのアドレス(キャッシュアドレスという)以外のアドレスからのデータの読み出しを指示するコマンドである。
 また、ヒット判定部113においてミス判定があった場合は、メモリアドレス変換部106は、全域リードコマンドをメモリ105に出力する。
 全域リードコマンドは、読み出し候補アドレスの全域からのデータの読み出しを指示するコマンドである。
 なお、メモリアドレス変換部106は、リードリクエスト入力部及びコマンド出力部の例に相当する。
 内部バッファA109には、以前のリードコマンドによってメモリ105からリードされたデータが格納される。
 内部バッファA109は、キャッシュ領域の例である。
 なお、図1では、内部バッファは1つだけ図示されているが、複数の内部バッファを配置することが可能である。
 内部バッファ管理部107は、内部バッファA109の管理を行う。
 より具体的には、内部バッファ管理部107は、メモリ105からリードされたデータのうち、内部バッファA109に記憶させるデータを選択し、選択したデータを内部バッファA109に格納する。
 メモリアドレス変換部106により出力されたリードコマンドに応じてメモリ105から読み出されたデータのうちの最後尾のデータ(最後尾データという)に、要求ペイロードデータ及び対応ECCのいずれでもないデータが含まれている場合に、内部バッファ管理部107は、当該最後尾データを内部バッファA109に格納する。
 例えば、リクエスト要求元101から図1の0000h番地のデータ(D0~D3)のリードリクエストがあった場合は、メモリアドレス変換部106により、図2の0000h番地のデータ(D0~D3)と0004h番地のデータ(ECC0~D6)へのアドレス変換が行われる。
 0000h番地のデータ(D0~D3)が内部バッファA109に格納されていない場合は、ミス判定となり、0000h番地のデータと0004h番地のデータのリードを指示する全域リードコマンドが出力される。
 この全域リードコマンドに対してメモリ105からリードされた最後尾データ(0004h番地)には、ECC0~D6が含まれる。
 ECC0は対応ECCに該当するが、D4~D6は要求ペイロードデータではない。
 このため、内部バッファ管理部107は、0004h番地のデータ(ECC0~D6)を内部バッファA109に格納する。
 一方で、リクエスト要求元101から図1の001Ch番地のデータ(D1c~D1f)のリードリクエストがあった場合は、メモリアドレス変換部106により、図2の0020h番地のデータ(D1a~D1c)と0024h番地のデータ(D1d~ECC7)へのアドレス変換が行われる。
 0020h番地のデータ(D1a~D1c)が内部バッファA109に格納されていない場合は、ミス判定となり、0020h番地のデータと0024h番地のデータのリードを指示する全域リードコマンドが出力される。
 この全域リードコマンドに対してメモリ105からリードされた最後尾データ(0024h番地)には、D1d~ECC7が含まれる。
 D1d~D1fは要求ペイロードデータに該当し、ECC7は対応ECCに該当する。
 このため、内部バッファ管理部107は、0024h番地のデータ(D1d~ECC7)は、内部バッファA109に格納しない。
 なお、内部バッファ管理部107は、キャッシュ管理部の例に相当する。
 ヒット判定部113は、メモリアドレス変換部106により取得された読み出し候補アドレスの一部のアドレスのデータが内部バッファA109にキャッシュ済みであるか否かを判定する。
 読み出し候補アドレスの一部のアドレスのデータが内部バッファA109にキャッシュ済みであれば、ヒット判定であり、キャッシュ済みでなければミス判定である。
 ヒット判定部113は、内部バッファ情報記憶部112の「内部バッファAのアドレス」と「距離情報」から連続するアドレスを計算して、内部バッファA109にデータがキャッシュ済みかどうかを判定する。
 ヒット判定であれば、ヒット判定部113は、ヒット信号をメモリアドレス変換部106に出力する。
 なお、ヒット判定部113は、キャッシュ判定部の例に相当する。
 内部バッファ情報記憶部112内の「内部バッファAのアドレス」には、リクエスト要求元101からのリードリクエストで示されているアドレス(図1のアドレス)が記憶される。
 内部バッファ情報記憶部112内の「距離情報A」には、リードリクエストで要求されたアドレスのアドレス長が記憶される。
 リクエスト要求元101から図1の0000h番地のリードリクエストがあった場合は、「内部バッファAのアドレス」には「0000h番地」が記憶され、「距離情報A」には「4バイト」が記憶される。
 内部バッファが複数ある場合は、各内部バッファに対してアドレスと距離情報が記憶される。
 なお、図1では、「内部バッファAのアドレス」と「距離情報A」を別に管理しているが、「内部バッファAのアドレス」のみで運用してもよい。
 この場合は、リードリクエストで示されているアドレスにアドレス長を加算した値を「内部バッファAのアドレス」に記憶する。
 つまり、リクエスト要求元101から図1の0000h番地のリードリクエストがあった場合は、0000h番地に4バイトを加算した「0004h番地」を「内部バッファAのアドレス」に記憶する。
 前回値保持部104は、メモリ105から受信した前回のリードデータ、もしくは内部バッファA109のデータを保持するレジスタである。
 データ選択部108は、メモリ105から受信したリードデータ及び内部バッファA109のデータのいずれかを選択し、選択したデータをデータ整列部103に出力する。
 データ整列部103は、データ選択部108で選択したデータと前回値保持部104のデータの中から、要求ペイロードデータと対応ECCとを取得し、取得した要求ペイロードデータと対応ECCとをECC訂正を行うことができるように整列する。
 なお、データ整列部103、前回値保持部104及びデータ選択部108を合わせたものをデータ取得部111という。
 ECC訂正部102は、データ整列部103から整列後の要求ペイロードデータと対応ECCを入力し、対応ECCを用いて要求ペイロードデータのECC訂正を行い、リクエスト要求元101にECC訂正後の要求ペイロードデータを出力する。
 次に、本実施の形態に係るメモリ制御装置100の動作例を、図1~図5を用いて説明する。
 以下では、図1の0000h番地から4バイト(D0~D3)、続けて0004h番地から4バイト(D4~D7)をリードする場合を説明する。
 まず、メモリアドレス変換部106が、リクエスト要求元101から0000h番地から4バイトリードのリードリクエストを受理する(S201)。
 次に、ヒット判定部113が、受理したリードリクエストが内部バッファA109に格納されているデータとヒットするかを判定する(S301)。
 具体的には、ヒット判定部113は、内部バッファ情報記憶部112の「内部バッファAのアドレス」、「距離情報A」からキャッシュアドレスを計算し、判定する。
 なお、この時点では、内部バッファA109にはデータが格納されていないので、S301の判定結果はNoとなる。
 次に、メモリアドレス変換部106が、4バイトのデータ(D0~D3)とそれに対応するECC(ECC0)を含む領域(読み出し候補アドレス)を計算し、計算した領域からのリードを指示するリードコマンドを生成し、生成したリードコマンドをメモリ105に出力する(S202)。
 図2を参照すると、上記データは0000h番地と、0004h番地に跨って配置されているため、メモリアドレス変換部106は、0000h番地から8バイトのリードを指示するリードコマンド(全域リードコマンド)を生成する。
 また、メモリアドレス変換部106は、生成したリードコマンドをメモリ105に出力するとともに、内部バッファ管理部107及びデータ選択部108に、リードコマンドとリクエスト要求元101からのリードリクエストを出力する。
 メモリ105は、0000h番地のデータ(D0~D3)を返し、メモリ制御装置100ではデータ選択部108が0000h番地のデータを入力する(S203)。
 データ選択部108は、データ整列部103と内部バッファ管理部107にリードデータの入力を通知する。
 内部バッファ管理部107は、データ選択部108から通知があると、入力されたリードデータが最後尾データであるかを判断する(S400)。
 0000h番地のデータは、最後尾データではないのでS401の判定結果はNoとなる。
 内部バッファ管理部107は、メモリアドレス変換部106からリードコマンドとリードリクエストを入力しており、また、図1のデータ配置及び図2のデータ配置を認識しているため、最初に入力するリードデータ(0000h番地のデータ)は最後尾データでないと判定することができる。
 なお、入力した0000h番地のデータは、最後尾データではないので、入力したリードデータは内部バッファA109で保持されない。
 次に、データ整列部103は、データの整列ができるか否かを判断する(S305)。
 つまり、データ整列部103は、メモリ105からのデータ又は内部バッファA109のデータと前回値保持部104のデータとで、リクエスト要求元101から要求された要求ペイロードデータと対応ECCとが得られるかを判断する。
 この時点では、メモリ105から0000h番地のデータを入力しているが、前回値保持部104にはデータが格納されていない。
 0000h番地のデータだけでは要求ペイロードデータと対応ECCとが得られないため、データ整列部103は、0004h番地のデータの入力を待つ(S305でNO)。
 このとき、データ選択部108から前回値保持部104に、リードデータ(0000h番地)が前回値として格納される。
 なお、データ整列部103は、メモリアドレス変換部106からリードコマンドとリードリクエストを入力しており、また、図1のデータ配置及び図2のデータ配置を認識しているため、データの整列ができるか否かを判断することができる。
 次に、メモリ105は、0004h番地のデータ(ECC0~D6)を返し、メモリ制御装置100ではデータ選択部108が0004h番地のデータを入力する(S203)。
 データ選択部108は、データ整列部103と内部バッファ管理部107にリードデータの入力を通知する。
 内部バッファ管理部107は、データ選択部108から通知があると、入力されたリードデータが最後尾データであるかを判断する(S400)。
 0004h番地のデータは、リードコマンドに対してメモリ105から入力する最後のデータであり、最後尾データに該当する(S400でYES)。
 次に、内部バッファ管理部107は、入力された0004h番地のデータに、要求ペイロードデータ及び対応ECC以外の後続のペイロードデータが含まれるか否かを判断する(S401)。
 リクエスト要求元101から要求された要求ペイロードデータはD0~D3であり、また、対応ECCはEEC0である。
 0004h番地のデータには、後続のペイロードデータであるD4~D6が含まれている。
 このため、S401の判定結果はYESとなる。
 前述したように、内部バッファ管理部107は、メモリアドレス変換部106からリードリクエストを入力しており、また、図1のデータ配置及び図2のデータ配置を認識しているため、0004h番地のD4~D6が、要求ペイロードデータ及び対応ECCのいずれでもない後続のペイロードデータであると判断できる。
 次に、内部バッファ管理部107は、内部バッファ情報記憶部112の「内部バッファAのアドレス」に「0000h」を、「距離情報A」に4バイトリードの「4」を記述し、内部バッファA109に0004h番地のデータ(ECC0~D6)を格納する(S402)。
 次に、データ整列部103は、データの整列ができるか否かを判断する(S305)。
 つまり、データ整列部103は、メモリ105からのデータ又は内部バッファA109のデータと前回値保持部104のデータとで、リクエスト要求元101から要求された要求ペイロードデータと対応ECCとが得られるかを判断する。
 この時点では、メモリ105から0004h番地のデータを入力し、前回値保持部104に前回値として0000h番地のデータが格納されている。
 メモリ105から入力したデータと前回値保持部104のデータで、要求ペイロードデータと対応ECCとが得られるため、S305の判定結果はYesとなる。
 データ整列部103は、前回値保持部104から0000h番地のデータ(D0~D3)を入力し、また、データ選択部108から0004h番地のデータ(ECC0~D6)を取得し、要求ペイロードデータ(D0~D3)と対応ECC(ECC0)を抽出し、抽出したデータの整列を行う(S205)。
 次に、ECC訂正部102が、整列されたデータ(D0~D3とECC0)をデータ整列部103から取得し、ECC0を用いて要求ペイロードデータD0~D3のECC訂正を行った後に、リクエスト要求元101に、要求ペイロードデータD0~D3を返送する(S206)。
 以上で要求されたペイロードデータを全て返送し終えたので処理が完了する(S207)。
 続けてリクエスト要求元101から0004h番地から4バイトリードのリードリクエストを受理する場合を想定する。
 この場合は、リードリクエストの受理(S201)後に、ヒット判定部113が、リードリクエストで要求されているペイロードデータが内部バッファA109に格納されているデータとヒットするかを判定する(S301)。
 つまり、ヒット判定部113は、S201で受理したリードリクエストは、内部バッファ情報記憶部112の「内部バッファAのアドレス」に記述されているアドレスに連続するアドレスのデータのリードを要求しているかを判断する。
 本例の場合は、「内部バッファAのアドレス」に「0000h番地」が記述され、「距離情報A」に「4」が記述されているため、「0000h番地」に4バイトを加算して「0004h」となり、リードリクエストの要求に合致するので、ヒット判定となり、S301の判定結果はYesである。
 メモリアドレス変換部106は、4バイトのデータ(D4~D7)とそれに対応するECC(ECC1)を含む領域(読み出し候補アドレス)を計算する。
 図2を参照すると、上記データは0004h番地と、0008h番地に跨って配置されているため、通常であれば、メモリアドレス変換部106は0004h番地から8バイトのリードを指示するリードコマンドを生成する。
 しかし、0004h番地のデータは内部バッファA109のデータを利用するため、メモリアドレス変換部106は、0008hから4バイトのリードを指示するリードコマンド(部分リードコマンド)を生成し、生成したリードコマンドをメモリ105に出力する(S302)。
 また、メモリアドレス変換部106は、生成したリードコマンドをメモリ105に出力するとともに、内部バッファ管理部107及びデータ選択部108に、リードコマンドとリクエスト要求元101からのリードリクエストを出力する。
 0004h番地のデータは内部バッファA109にすでに格納されているため、内部バッファ管理部107は、内部バッファA109のデータをデータ選択部108を介してデータ整列部103に送る(S303)。
 データ整列部103は、データの整列ができるか否かを判断する(S305)。
 つまり、データ整列部103は、メモリ105からのデータ又は内部バッファA109のデータと前回値保持部104のデータとで、リクエスト要求元101から要求された要求ペイロードデータと対応ECCとが得られるかを判断する。
 この時点では、内部バッファA109に0004h番地のデータがあり、前回値保持部104にも0004h番地のデータがある。
 0004h番地のデータだけでは要求ペイロードデータと対応ECCとが得られないため、データ整列部103は、0008h番地のデータの入力を待つ(S305でNO)。
 このとき、データ選択部108から前回値保持部104に、内部バッファA109のデータ(0004h番地)が前回値として格納される。
 次に、メモリ105は、0008h番地のデータ(D7~D9)を返し、メモリ制御装置100ではデータ選択部108が0008h番地のデータを入力する(S203)。
 データ選択部108は、データ整列部103と内部バッファ管理部107にリードデータの入力を通知する。
 内部バッファ管理部107は、データ選択部108から通知があると、入力されたリードデータが最後尾データであるかを判断する(S400)。
 0008h番地のデータは、リードコマンドに対してメモリ105から入力する最後のデータであり、最後尾データに該当する(S400でYES)。
 次に、内部バッファ管理部107は、入力された0008h番地のデータに、要求ペイロードデータ及び対応ECC以外の後続のペイロードデータが含まれるか否かを判断する(S401)。
 リクエスト要求元101から要求された要求ペイロードデータはD4~D7であり、また、対応ECCはEEC1である。
 0008h番地のデータには、後続のペイロードデータであるD8~D9が含まれている。
 このため、S401の判定結果はYESとなる。
 次に、内部バッファ管理部107は、内部バッファ情報記憶部112の「内部バッファAのアドレス」に「0004h」を、「距離情報A」に4バイトリードの「4」を記述し、内部バッファA109に0008h番地のデータ(D7~D9)を格納する(S402)。
 次に、データ整列部103は、データの整列ができるか否かを判断する(S305)。
 つまり、データ整列部103は、メモリ105からのデータ又は内部バッファA109のデータと前回値保持部104のデータとで、リクエスト要求元101から要求された要求ペイロードデータと対応ECCとが得られるかを判断する。
 この時点では、メモリ105から0008h番地のデータを入力し、前回値保持部104に前回値として0004h番地のデータが格納されている。
 メモリ105から入力したデータと前回値保持部104のデータで、要求ペイロードデータと対応ECCとが得られため、S305の判定結果はYesとなる。
 データ整列部103は、前回値保持部104から0004h番地のデータ(ECC0~D6)を入力し、また、データ選択部108から0008h番地のデータ(D7~D9)を取得し、要求ペイロードデータ(D4~D7)と対応ECC(ECC1)を抽出し、抽出したデータの整列を行う(S205)。
 次に、ECC訂正部102が、整列されたデータ(D4~D7とECC1)をデータ整列部103から取得し、ECC1を用いて要求ペイロードデータD4~D7のECC訂正を行った後に、リクエスト要求元101に、要求ペイロードデータD4~D7を返送する(S206)。
 以上で要求されたペイロードデータを全て返送し終えたので処理が完了する(S207)。
 図5は、以上のメモリ制御装置100の動作を具体的に説明している。
 リクエスト要求元101から0000h番地(図1)から4バイトリードのリードリクエスト(D0~D3)があると、メモリ105から、第1データA(D0~D3)が図2の0000h番地から読み出される。
 第1データA(D0~D3)は、最後尾データではないため、内部バッファA109では保持されないが、第1データB(D0~D3)として前回値保持部104に保持される。
 次に、メモリ105から第2データA(ECC0~D6)が図2の0004h番地から読み出される。
 第2データA(ECC0~D6)は、最後尾データであるので、第2データE(ECC0~D6)として内部バッファA109に保持される。
 データ整列部103は、メモリ105からの第2データA(ECC0~D6)と、前回値保持部104の第1データB(D0~D3)からデータ整列を行って、第1データC(D0~ECC0)を生成する。
 そして、ECC訂正部102が、第1データC(D0~ECC0)のECC訂正を行い、ECC訂正後の第1データD(D0~D3)をリクエスト要求元101に出力する。
 また、第2データA(ECC0~D6)は、第2データB(ECC0~D6)として前回値保持部104に保持される。
 続けて、リクエスト要求元101から0004h番地(図1)から4バイトリードのリードリクエスト(D4~D7)があった際には、内部バッファA109に第2データE(ECC0~D6)が存在しており、第2データB(ECC0~D6)が前回値保持部104に前回値として保持されている。
 内部バッファA109の第2データE(ECC0~D6)と前回値保持部104の第2データB(ECC0~D6)では、データ整列ができないので、第2データE(ECC0~D6)が前回値として前回値保持部104に保持されるとともに、メモリ105から第4データA(D7~D9)が図2の0008h番地から読み出される。
 第4データA(D7~D9)は、最後尾データであるので、第4データE(D7~D9)として内部バッファA109に保持される。
 データ整列部103は、メモリ105からの第4データA(D7~D9)と、前回値保持部104の第2データE(ECC0~D6)からデータ整列を行って、第2データC(D4~ECC1)を生成する。
 そして、ECC訂正部102が、第2データC(D4~ECC1)のECC訂正を行い、ECC訂正後の第2データD(D4~D7)をリクエスト要求元101に出力する。
 また、第4データA(D7~D9)は、第4データB(D7~D9)として前回値保持部104に保持される。
 本実施の形態によらなければ、リクエスト要求元101から0004h番地から4バイトリードのリードリクエストがあった際には、第3データA(ECC0~D6)のように、ECC0~D6のデータを重複してメモリ105から読み出すことになる。
 これに対して、本実施の形態では、内部バッファA109内の第2データE(ECC0~D6)を利用することが可能であるため、メモリ105からの重複した読み出しは不要である。
 以上では、内部バッファA109のみが含まれるメモリ制御装置100の動作例を説明した。
 ここでは、内部バッファA109の他に内部バッファB1090が含まれるメモリ制御装置100の動作例を説明する。
 図6は、内部バッファA109と内部バッファB1090が含まれるメモリ制御装置100の動作例を示す。
 図6では、リクエスト要求元101から0000h番地(図1)から4バイトリードのリードリクエスト(D0~D3)があり、次に、0014h番地(図1)から4バイトリードのリードリクエスト(D14~D17)があり、更に、0004h番地から4バイトリードのリードリクエスト(D4~D7)がある場合のリクエスト要求元101の動作例を示している。
 なお、第1のリードリクエスト(0000h番地のリードリクエスト)の際には、第1のリードリクエストに先行するリードリクエストに対して読み出されたECC4~D16のデータ(図2の0018h番地)が第3データEとして内部バッファB1090に保持されているものとする。
 一方、内部バッファA109には、第1のリードリクエストの際には、データが保持されていないものとする。
 リクエスト要求元101から0000h番地(図1)から4バイトリードのリードリクエスト(D0~D3)があると、メモリ105から、第1データA(D0~D3)が図2の0000h番地から読み出される。
 第1データA(D0~D3)は、最後尾データではないため、内部バッファA109では保持されないが、第1データB(D0~D3)として前回値保持部104に保持される。
 次に、メモリ105から第2データA(ECC0~D6)が読み出される。
 第2データA(ECC0~D6)は、最後尾データであるので、第2データE(ECC0~D6)として内部バッファA109に保持される。
 データ整列部103は、メモリ105からの第2データA(ECC0~D6)と、前回値保持部104の第1データB(D0~D3)からデータ整列を行って、第1データC(D0~ECC0)を生成する。
 そして、ECC訂正部102が、第1データC(D0~ECC0)のECC訂正を行い、ECC訂正後の第1データD(D0~D3)をリクエスト要求元101に出力する。
 また、第2データA(ECC0~D6)は、第2データB(ECC0~D6)として前回値保持部104に保持される。
 続けて、リクエスト要求元101から0014h番地(図1)から4バイトリードのリードリクエスト(D14~D17)があった際には、内部バッファB1090に第3データE(ECC4~D16)が存在しており、第2データB(ECC0~D6)が前回値保持部104に前回値として保持されている。
 内部バッファB1090の第3データE(ECC4~D16)と前回値保持部104の第2データB(ECC0~D6)では、データ整列ができないので、第3データE(ECC4~D16)が第3データB(ECC4~D16)(前回値)として前回値保持部104に保持されるとともに、メモリ105から第4データA(D17~D19)が図2の001Ch番地から読み出される。
 第4データA(D17~D19)は、最後尾データであるので、第4データE(D17~D19)として内部バッファA109に保持される。
 データ整列部103は、メモリ105からの第4データA(D17~D19)と、前回値保持部104の第3データB(ECC4~D16)からデータ整列を行って、第2データC(D14~ECC5)を生成する。
 そして、ECC訂正部102が、第2データC(D14~ECC5)のECC訂正を行い、ECC訂正後の第2データD(D14~D17)をリクエスト要求元101に出力する。
 また、第4データA(D17~D19)は、第4データB(D17~D19)として前回値保持部104に保持される。
 続けて、リクエスト要求元101から0004h番地(図1)から4バイトリードのリードリクエスト(D4~D7)があった際には、内部バッファA109に第2データE(ECC0~D6)が存在しており、第4データB(D17~D19)が前回値保持部104に前回値として保持されている。
 内部バッファA109の第2データE(ECC0~D6)と前回値保持部104の第4データB(D17~D19)では、データ整列ができないので、第2データE(ECC0~D6)が第5データB(ECC0~D6)(前回値)として前回値保持部104に保持されるとともに、メモリ105から第6データA(D7~D9)が図2の0008h番地から読み出される。
 第6データA(D7~D9)は、最後尾データであるので、第6データE(D7~D9)として内部バッファA109に保持される。
 データ整列部103は、メモリ105からの第6データA(D7~D9)と、前回値保持部104の第5データB(ECC0~D6)からデータ整列を行って、第3データC(D4~ECC1)を生成する。
 そして、ECC訂正部102が、第3データC(D4~ECC1)のECC訂正を行い、ECC訂正後の第3データD(D4~D7)をリクエスト要求元101に出力する。
 また、第6データA(D7~D9)は、第6データB(D7~D9)として前回値保持部104に保持される。
 なお、第6データB(D7~D9)の図示は省略している。
 以上では、0000h番地から4バイト、0004h番地から4バイトというように、4バイトずつのリードリクエストに対してペイロードデータをリクエスト要求元101に返送する例を取り上げた。
 本実施の形態のメモリ制御装置100は、4バイトの整数倍ずつのリードリクエストにも対処可能である。
 例えば、0000h番地から8バイト、0008h番地から8バイトというように、8バイトずつのリードリクエストにも対処可能である。
 また、本実施の形態では、内部バッファA109と内部バッファB1090という2つの内部バッファを用いる例を説明したが、3つ以上の内部バッファを用いる場合も、本実施の形態で説明した手順にて処理することができる。
 本実施の形態では、
 以下の手段を備えたメモリ制御装置を説明した。
 (a)リクエスト要求元からのリクエストを、メモリのリクエストに変換し、データの橋渡しをする手段
 (b)データのECCエラー訂正をする手段
 (c)垂直ECCを採用したメモリからの受信データを、ECCエラー訂正をすることができるデータ(データと対応するECCに分離したもの)に再配置する手段
 (d)リクエスト要求元からのアドレスとレングスを、垂直ECCを採用したメモリのアドレスとレングスに変換する手段
 (e)メモリから受信した前回のデータを保持する手段
 (f)次のアドレスのペイロードデータを含む最後に受信したリードデータを保持する手段
 (g)次のアドレスであることを判定するために、保持しているペイロードデータのアドレスを記憶する手段
 (h)次のアドレスであることを判定するために、距離情報を保持する手段
 (i)これからメモリに発行するリードコマンドが保持しているペイロードデータを再利用するかどうかを判定する手段
 (j)内部バッファのデータとメモリから受信したリードデータのどちらかを選択する手段。
 実施の形態2.
 実施の形態1では、例えば、リクエスト要求元101からの0004h番地(図1)から4バイトリードのリードリクエストは、先行する0000h番地(図1)から4バイトのリードが完了後(図4のS207でYES)に行われているため、非パイプライン型の動作が行われている。
 パイプライン型の動作では、内部バッファに保持しているデータを利用するタイミングで、別トランザクションのリードデータがメモリから返送され、内部バッファのデータとメモリからのデータとの間で競合が生ずる可能性があり、データの競合が発生した場合にはいずれかのデータが消失してしまう。
 本実施の形態では、パイプライン型の動作で内部バッファのデータを再利用する場合に、メモリから受信するリードデータのデータ取得部111への出力タイミングと内部バッファからのデータのデータ取得部111への出力タイミングとが重ならないように、メモリからのリードデータの受信タイミングを遅らせる。
 このようにして、本実施の形態のメモリ制御装置100では、パイプライン型のメモリに対応する。
 そして、本実施の形態のメモリ制御装置100は、パイプライン型メモリの特徴を活かすことができ、メモリアクセスのスループット向上に寄与することができる。
 本実施の形態に係るメモリ制御装置100の構成例を図7に示す。
 図3の構成と比較して、図7では、コマンド発行間隔制御部114とFIFOバッファ110が追加されている。
 コマンド発行間隔制御部114は、内部バッファA109のデータを利用する場合に、内部バッファA109のデータを利用するために必要な時間、メモリ105へのリードコマンドの出力を遅延させる制御を行う。
 メモリ105からは、リードコマンドを出力してから、ある一定間隔の後(リードレイテンシ)にリードデータが返送されてくるため、コマンド発行間隔制御部114によりリードコマンドを発行する間隔を制御することで、内部バッファAのデータを利用するための時間を空けることが可能である。
 なお、コマンド発行間隔制御部114がリードコマンドの出力を遅延させる遅延時間は、例えば、パイプラインにおける1スロット分の時間である。
 本実施の形態では、コマンド発行間隔制御部114も、コマンド出力部の例に相当する。
 本実施の形態では、メモリアドレス変換部106は、メモリ105へのリードコマンドをFIFOバッファ110に格納する。
 更に、メモリアドレス変換部106は、内部バッファA109に保持されているデータを入力するようデータ整列部103に指示する内部バッファデータ入力コマンド(キャッシュデータ入力コマンドに相当)と、メモリ105からのデータを入力するようデータ整列部103に指示するメモリデータ入力コマンドをFIFOバッファ110に格納する。
 FIFOバッファ110は、リードコマンド、内部バッファデータ入力コマンド及びメモリデータ入力コマンドを記憶する。
 本実施の形態に係るメモリ制御装置100は、パイプライン型のメモリを制御する。
 つまり、本実施の形態に係るメモリ制御装置100は、リクエスト要求元101から受理したリードリクエストに対応するリードデータをリクエスト要求元101に全て返送し終わる前に、次のリードリクエストをリクエスト要求元101から受理し、メモリ105に対してリードコマンドを発行する。
 このために、FIFOバッファ110において、発行したリードコマンドを記憶する。
 また、本実施の形態では、内部バッファ管理部107は、メモリ105からリードデータを入力する前に、内部バッファ情報記憶部112の「内部バッファAのアドレス」の値と「距離情報A」の値を更新する。
 このため、ヒット判定部113は、読み出し対象アドレスのデータが内部バッファA109にキャッシュ済みであるか否かを判定するだけでなく、「内部バッファAのアドレス」の値と「距離情報A」の値から、読み出し対象アドレスのデータが内部バッファA109にキャッシュされる予定であるか否かも判定する。
 なお、図7に示す他の要素は、図3に示したものと同様なため、説明を省略する。
 次に、本実施の形態に係るメモリ制御装置100の動作例を、図8及び図9を参照して説明する。
 S201、S301、S202は、実施の形態1で説明したものと同様であり、説明を省略する。
 本実施の形態では、S302において、メモリアドレス変換部106が、内部バッファA109に保持されていないデータのリードを指示するリードコマンド(部分リードコマンド)を生成し、S506において、コマンド発行間隔制御部114が、内部バッファA109のデータを利用するための時間(データの衝突を回避するための時間)だけ間隔を空けてリードコマンド(部分リードコマンド)をメモリ105に出力する。
 コマンド発行間隔制御部114は、メモリアドレス変換部106がリードコマンドを生成した後にリードコマンドを出力する通常のタイミングから、所定の遅延時間が経過した後に、リードコマンドをメモリ105に出力する。
 次に、内部バッファ管理部107が、最後尾データに後続のペイロードデータが含まれるか否かを判断する(S505)。
 つまり、内部バッファ管理部107は、S202又はS302で生成されたリードコマンドに対してメモリ105から読み出されるデータのうちの最後尾データに後続のペイロードデータが含まれるか否かを判断する。
 この処理は、図4のS401と同様の処理である。
 実施の形態1と同様に、内部バッファ管理部107は、メモリアドレス変換部106から、リクエスト要求元101からのリードリクエスト及びメモリ105へのリードコマンドを入力しており、また、図1のデータ配置及び図2のデータ配置を認識しているため、S505のように、最後尾データに後続のペイロードデータが含まれるか否かを判断することができる。
 最後尾データに後続のペイロードデータが含まれる場合(S505でYES)は、内部バッファ管理部107は、内部バッファ情報記憶部112の「内部バッファAのアドレス」の値と「距離情報A」の値を更新する(S507)。
 但し、この時点では、内部バッファA109のデータは更新しない。
 本実施の形態では、パイプライン型のメモリに対応した動作を行うために、内部バッファ情報記憶部112の「内部バッファAのアドレス」及び「距離情報A」の値を、リードデータをメモリ105から入力する前に更新する。
 次に、メモリアドレス変換部106が、コマンドをFIFOバッファ110に格納する(S501)。
 具体的には、メモリアドレス変換部106は、S202において全域リードコマンドを生成した場合には、メモリ105からのデータを入力するようデータ整列部103に指示するメモリデータ入力コマンドを生成する。
 そして、メモリアドレス変換部106は、全域リードコマンド及びリードリクエストとメモリデータ入力コマンドをFIFOバッファ110に格納する。
 また、メモリアドレス変換部106は、S302において部分リードコマンドを生成した場合には、内部バッファA109に保持されているデータを入力するようデータ整列部103に指示する内部バッファデータ入力コマンドと、メモリデータ入力コマンドを生成する。
 そして、メモリアドレス変換部106は、部分リードコマンド及びリードリクエストと内部バッファデータ入力コマンドとメモリデータ入力コマンドをFIFOバッファ110に格納する。
 なお、ECC訂正をした要求ペイロードデータの返送が完了する前に、リクエスト要求元101からリードリクエストを受け付けた場合は、連続してFIFOバッファ110にコマンドが格納される。
 図8の処理と並行して、データ整列部103は、定期的にFIFOバッファ110にコマンドが蓄積されているかどうかを確認し(S502)、FIFOバッファ110にコマンドがあれば(S502でYES)、FIFOバッファ110からコマンドを取り出す(S503)。
 取り出したコマンドが内部バッファデータ入力コマンドであれば、S504でYESとなり、S303に処理を進める。
 取り出したコマンドがメモリデータ入力コマンドであれば、S504でNOとなり、S203に処理を進める。
 なお、作図上の理由により、図9には、取り出したコマンドがリードコマンド及びリードリクエストである場合の処理が示されていないが、リードコマンド及びリードリクエストを取り出した場合は、データ整列部103は、取り出したリードコマンド及びリードリクエストを所定の記憶領域に保持するとともに、再度、FIFOバッファ110からコマンドを取り出す。
 S203では、データ選択部108がメモリ105からリードデータを入力し、内部バッファ管理部107にリードデータの入力を通知する。
 内部バッファ管理部107は、入力されたリードデータが最後尾のデータであるか否かを判断し(S400)、リードデータが最後尾データである場合は、最後尾データに後続のペイロードデータが含まれているか否かを判断する(S401)。
 最後尾データに後続のペイロードデータが含まれている場合は、内部バッファ管理部107は内部バッファA109のデータを更新する(S402)。
 S303では、内部バッファ管理部107は、内部バッファA109のデータをデータ選択部108を介してデータ整列部103に送る。
 データ整列部103は、データの整列ができるか否かを判断し(S305)、データの整列ができる場合は、データ整列部103は、要求ペイロードデータと対応ECCを抽出し、抽出したデータの整列を行う(S205)。
 更に、ECC訂正部102が、整列されたデータをデータ整列部103から取得し、ECCデータを用いて要求ペイロードデータのECC訂正を行った後に、リクエスト要求元101に、要求ペイロードデータを返送する(S206)。
 要求ペイロードデータを全て返送したら処理が完了する(S207)。
 なお、S203、S400、S401、S402、S305、S205、S206、S207の動作は、図4について説明したものと同じである。
 次に、図8、図9及び図12を用いて、本実施の形態に係るメモリ制御装置100の動作を具体的に説明する。
 ここでは、リクエスト要求元101から、第1のリードリクエストとして、0000h番地(図1)からの4バイトリードのリードリクエストを受理し、第1のリードリクエストに対して要求ペイロードデータを返送する前に、第2のリードリクエストとして、0004h番地(図1)からの4バイトリードのリードリクエストを受理する例を想定して、メモリ制御装置100の動作を説明する。
 なお、図12のT1~T11は、パイプライン処理における各スロットを示している。
 Memory CLKは、リクエスト要求元101、メモリ制御装置100及びメモリ105の動作クロックを示す。
 また、図12のCommand(C1)は、図7のC1に相当し、Command(C2)は、図7のC2に相当し、Command(C3)は、図7のC3に相当する。
 また、図12のRead Data(Out)は、ECC訂正部102からリクエスト要求元101への要求ペイロードデータの出力を示している。
 また、図12のRead Data(In)は、メモリ105からのリードデータの入力を示している。
 また、sRead-0000は、リクエスト要求元101からのリードリクエストを示し、0000h番地(図1)から4バイトリードのリードリクエストを示している。
 また、sRead-0004は、リクエスト要求元101からのリードリクエストを示し、0004h番地(図1)から4バイトリードのリードリクエストを示している。
 dRead-0000は、メモリ105へのリードコマンドを示し、0000h番地(図2)から4バイトリードのリードコマンドを示している。
 dRead-0004は、メモリ105へのリードコマンドを示し、0004h番地(図2)から4バイトリードのリードコマンドを示している。
 dRead-0008は、メモリ105へのリードコマンドを示し、0008h番地(図2)から4バイトリードのリードコマンドを示している。
 Read Data(out)の以外の欄にあるdata-0000は、メモリ105からリードされた0000h番地(図2)のデータを示している。
 Read Data(out)の以外の欄にあるdata-0004は、メモリ105からリードされた0004h番地(図2)のデータを示している。
 Read Data(out)の以外の欄にあるdata-0008は、メモリ105からリードされた0008h番地(図2)のデータを示している。
 Read Data(out)の欄にあるdata-0000は、リクエスト要求元101に出力する0000h番地(図1)の要求ペイロードデータを示している。
 Read Data(out)の欄にあるdata-0004は、リクエスト要求元101に出力する0004h番地(図1)の要求ペイロードデータを示している。
 まず、メモリアドレス変換部106が、リクエスト要求元101から、0000h番地(図1)から4バイトリードのリードリクエスト(図12のsRead-0000)を受理する(S201)。
 次に、ヒット判定部113が、受理したリードリクエストが内部バッファA109に格納されているデータとヒットするかを判定する(S301)。
 なお、この時点では、内部バッファA109にはデータが格納されていないので、S301の判定結果はNoとなる。
 次に、メモリアドレス変換部106が、0000h番地(図2)と0004h番地(図2)からのリードを指示するリードコマンド(図12のdRead-0000とdRead-0004)を生成し、生成したリードコマンドをメモリ105に出力する(S202)。
 次に、内部バッファ管理部107が、最後尾データに後続のペイロードデータが含まれるか否かを確認し(S505)、この場合は、0004h番地(図2)からのリードデータに後続のペイロードデータが含まれるので、内部バッファ管理部107は、内部バッファ情報記憶部112の「内部バッファAのアドレス」、「距離情報A」の値を更新する(S507)。
 この結果、図12の「内部バッファAのアドレス」の欄に示されるように「内部バッファAのアドレス」に「0000h番地」が記述され、「距離情報A」には「4」が記述される。
 また、メモリアドレス変換部106は、リードコマンド(図12のdRead-0000とdRead-0004)及びリードリクエスト(図12のsRead-0004)、メモリデータ入力コマンドをFIFOバッファ110に格納する(S501)。
 ここで、メモリアドレス変換部106が、リクエスト要求元101から、0004h番地(図1)から4バイトリードのリードリクエスト(図12のsRead-0004)を受理したとする(S201)。
 前述のようにS507の処理にて内部バッファ情報記憶部112の「内部バッファAのアドレス」に「0000h番地」が記述され、「距離情報A」には「4」が記述されており、0004h番地(図2)のデータは内部バッファA109にキャッシュされる予定なので、S301の判定はYESとなる。
 このため、メモリアドレス変換部106は、0008h番地(図2)からリードを指示するリードコマンド(図12のdRead-0008)を生成する(S302)。
 そして、コマンド発行間隔制御部114が、内部バッファA109のデータを利用するための時間(データの衝突を回避するための時間)だけ間隔を空けてリードコマンド(図12のdRead-0008)をメモリ105に出力する。
 リクエスト要求元101からのリードリクエスト(図12のsRead-0004)の入力タイミングからは、リードコマンド(図12のdRead-0008)は、図12の符号1201のタイミングでメモリ105に出力することができる。
 しかし、本実施の形態では、コマンド発行間隔制御部114は、リードコマンドを出力できるタイミングから、1スロット分、リードコマンドの出力タイミングを遅らせ、符号1202のタイミングでリードコマンド(図12のdRead-0008)をメモリ105に出力している。
 次に、内部バッファ管理部107が、最後尾データに後続のペイロードデータが含まれるか否かを確認する(S505)。
 この場合は、0008h番地(図2)からのリードデータに後続のペイロードデータが含まれるので、内部バッファ管理部107は、内部バッファ情報記憶部112の「内部バッファAのアドレス」、「距離情報A」の値を更新する(S507)。
 この結果、図12の「内部バッファAのアドレス」の欄に示されるように「内部バッファAのアドレス」に「0004h番地」が記述され、「距離情報A」には「4」が記述される。
 また、メモリアドレス変換部106は、リードコマンド(図12のdRead-0008)及びリードリクエスト(図12のsRead-0004)、メモリデータ入力コマンド及び内部バッファデータ入力コマンドをFIFOバッファ110に格納する(S501)。
 上記の動作と並行して、データ整列部103が、FIFOバッファ110から先頭のリードコマンド(図12のdRead-0000とdRead-0004)と、メモリデータ入力コマンドを取り出す(S502、S503)。
 この場合は、内部バッファA109を利用しないため、S504はNOとなり、図12に示すように、データ選択部108が、メモリ105から0000h番地(図2)のデータ(図12のdata-0000)を入力する(S203)。
 そして、入力されたデータ(図12のdata-0000)は、最後尾データではないので(S400でNO)、内部バッファA109には格納されない。
 また、入力されたデータ(図12のdata-0000)だけではデータの整列ができないので(S305でNO)、メモリ105からの次のデータの入力を待つ。
 なお、このとき、0000h番地(図2)のデータ(図12のdata-0000)は前回値保持部104に保持される。
 次に、データ選択部108が、メモリ105から0004h番地(図2)のデータ(図12のdata-0004)を入力する(S203)。
 入力されたデータ(図12のdata-0004)は、最後尾データであり(S400でYES)、また、後続のペイロードデータを含むので(S401でYES)、入力されたデータが内部バッファA109に格納される。
 また、入力されたデータ(図12のdata-0004)と前回値保持部104のデータ(図12のdata-0000)でデータの整列ができるので(S305でYES)、データ整列部103がデータを整列し、ECC訂正部102がECC訂正を行って、ECC訂正後の要求ペイロードデータ(図12のdata-0000)をリクエスト要求元101に出力する(S205、S206)。
 また、0004h番地(図2)のデータ(図12のdata-0004)は前回値保持部104に保持される。
 また、データ整列部103は、FIFOバッファ110から次のリードコマンド(図12のdRead-0008)と、内部バッファデータ入力コマンド及びメモリデータ入力コマンドを取り出す(S502、S503)。
 この場合は、内部バッファA109を利用するため、S504はYESとなり、内部バッファA109内のデータ(図12のdata-0004)がデータ整列部103に出力される(S303)。
 内部バッファA109からのデータ(図12のdata-0004)と前回値保持部104のデータ(図12のdata-0004)ではデータの整列ができないので(S305でNO)、メモリ105からの次のデータの入力を待つ。
 なお、このとき、内部バッファA109からのデータ(図12のdata-0004)は前回値保持部104に保持される。
 次に、データ選択部108が、メモリ105から0008h番地(図2)のデータ(図12のdata-0008)を入力する(S203)。
 なお、符号1201のタイミングでコマンド発行間隔制御部114からメモリ105にdRead-0008が出力されていれば、符号1203のタイミングでメモリ105からdata-0008が入力されることになるが、前述のように、符号1202のタイミングでdRead-0008が出力されているので、符号1204のタイミングでメモリ105からdata-0008が入力される。
 入力されたデータ(図12のdata-0008)は、最後尾データであり(S400でYES)、また、後続のペイロードデータを含むので(S401でYES)、入力されたデータが内部バッファA109に格納される。
 また、入力されたデータ(図12のdata-0008)と前回値保持部104のデータ(図12のdata-0004)でデータの整列ができるので(S305でYES)、データ整列部103がデータを整列し、ECC訂正部102がECC訂正を行って、ECC訂正後の要求ペイロードデータ(図12のdata-0004)をリクエスト要求元101に出力する(S205、S206)。
 また、0008h番地(図2)のデータ(図12のdata-0004)は前回値保持部104に保持される。
 図12の例において、コマンド発行間隔制御部114によりdRead-0008の出力タイミングが調整されずに、符号1201のタイミングでdRead-0008が出力されていれば、符号1203のタイミングでメモリ105からdata-0008が入力される。
 この場合には、符号1206のタイミングで、data-0008が前回値保持部104に入力されるが、符号1205に示すように、内部バッファA109内のdata-0004が前回値保持部104に入力されるタイミングと競合してしまう。
 このため、data-0008とdata-0004のいずれかが消失してしまう。
 これに対して、本実施の形態では、コマンド発行間隔制御部114が符号1202のタイミングでdRead-0008を出力するため、符号1204のタイミングでメモリ105からdata-0008が入力される。
 そして、符号1204のタイミングで入力された場合は、data-0008が前回値保持部104に入力されるタイミングは、符号1207のタイミングであり、データの競合は起こらない。
 次に、図8、図9及び図13を用いて、内部バッファA109に加えて内部バッファB1090が存在するメモリ制御装置100の動作例を説明する。
 ここでは、リクエスト要求元101から、第1のリードリクエストとして、0000h番地(図1)からの4バイトリードのリードリクエストを受理し、第1のリードリクエストに対して要求ペイロードデータを返送する前に、第2のリードリクエストとして、0014h番地(図1)からの4バイトリードのリードリクエストを受理する例を想定して、メモリ制御装置100の動作を説明する。
 なお、図13の「内部バッファBのアドレス」及び「内部バッファB」に示されるように、内部バッファB1090には、以前の0010h番地(図1)についてのリードリクエストにより0018h番地(図2)のデータ(図13のdata-0018)が格納されているものとする。
 なお、図13では、data-0018が内部バッファB1090に継続して保持されていることを表すために、data-0018を二重線で表現している。
 まず、メモリアドレス変換部106が、リクエスト要求元101から、0000h番地(図1)から4バイトリードのリードリクエスト(図13のsRead-0000)を受理する(S201)。
 次に、ヒット判定部113が、受理したリードリクエストが内部バッファA109又は内部バッファB1090に格納されているデータとヒットするかを判定する(S301)。
 なお、この時点では、内部バッファA109にはデータが格納されておらず、また、内部バッファB1090のデータはリードリクエストで要求されているアドレスに合致しないので、S301の判定結果はNoとなる。
 次に、メモリアドレス変換部106が、0000h番地(図2)と0004h番地(図2)からリードを指示するリードコマンド(図13のdRead-0000とdRead-0004)を生成し、生成したリードコマンドをメモリ105に出力する(S202)。
 次に、内部バッファ管理部107が、最後尾データに後続のペイロードデータが含まれるか否かを確認し(S505)、この場合は、0004h番地(図2)からのリードデータに後続のペイロードデータが含まれるので、内部バッファ管理部107は、内部バッファ情報記憶部112の「内部バッファAのアドレス」、「距離情報A」の値を更新する(S507)。
 この結果、図13の「内部バッファAのアドレス」の欄に示されるように「内部バッファAのアドレス」に「0000h番地」が記述され、「距離情報A」には「4」が記述される。
 また、メモリアドレス変換部106は、リードデータ(図13のdRead-0000とdRead-0004)と、メモリデータ入力コマンドをFIFOバッファ110に格納する(S501)。
 ここで、メモリアドレス変換部106が、リクエスト要求元101から、0014h番地(図1)から4バイトリードのリードリクエスト(図13のsRead-0014)を受理したとする(S201)。
 前述のように内部バッファB1090には、0014h番地(図1)に対応する0018h番地(図2)のデータと001Ch番地(図2)のデータのうち、0018h番地(図2)のデータ(図13のdata-0018)がキャッシュされているので、S301の判定はYESとなる。
 このため、メモリアドレス変換部106は、001Ch番地(図2)からのリードを指示するリードコマンド(図13のdRead-001C)を生成する(S302)。
 そして、コマンド発行間隔制御部114が、内部バッファB1090のデータを利用するための時間(データの衝突を回避するための時間)だけ間隔を空けてリードコマンド(図13のdRead-001C)をメモリ105に出力する。
 リクエスト要求元101からのリードリクエスト(図13のsRead-0014)の入力タイミングからは、リードコマンド(図13のdRead-001C)は、図13の符号1301のタイミングでメモリ105に出力される。
 しかし、本実施の形態では、コマンド発行間隔制御部114は、リードコマンドを出力できるタイミングから、1スロット分、リードコマンドの出力タイミングを遅らせて、符号1302のタイミングでリードコマンド(図13のdRead-001C)をメモリ105に出力している。
 次に、内部バッファ管理部107が、最後尾データに後続のペイロードデータが含まれるか否かを確認し(S505)、この場合は、001Ch番地(図2)からのリードデータに後続のペイロードデータが含まれるので、内部バッファ管理部107は、内部バッファ情報記憶部112の「内部バッファBのアドレス」、「距離情報B」の値を更新する(S507)。
 この結果、図13の「内部バッファBのアドレス」の欄に示されるように「内部バッファBのアドレス」に「0014h番地」が記述され、「距離情報B」には「4」が記述される。
 また、メモリアドレス変換部106は、リードデータ(図13のdRead-001C)及びリードリクエスト(図13のsRead-0014)と、メモリデータ入力コマンド及び内部バッファデータ入力コマンドをFIFOバッファ110に格納する(S501)。
 なお、本例では、内部バッファデータ入力コマンドには、内部バッファB1090のデータを入力する旨が指示されている。
 一方、内部バッファA109のデータを利用する場合は、内部バッファデータ入力コマンドには、内部バッファA109のデータを入力する旨が指示されている。
 上記の動作と並行して、データ整列部103は、FIFOバッファ110から先頭のリードコマンド(図13のdRead-0000とdRead-0004)と、メモリデータ入力コマンドを取り出す(S502、S503)。
 この場合は、内部バッファA109を利用しないため、S504はNOとなり、図13に示すように、データ選択部108が、メモリ105から0000h番地(図2)のデータ(図13のdata-0000)を入力する(S203)。
 そして、入力されたデータ(図13のdata-0000)は、最後尾データではないので(S400でNO)、内部バッファA109には格納されない。
 また、入力されたデータ(図13のdata-0000)だけではデータの整列ができないので(S305でNO)、メモリ105からの次のデータの入力を待つ。
 なお、このとき、0000h番地(図2)のデータ(図13のdata-0000)は前回値保持部104に保持される。
 次に、データ選択部108が、メモリ105から0004h番地(図2)のデータ(図13のdata-0004)を入力する(S203)。
 入力されたデータ(図13のdata-0004)は、最後尾データであり(S400でYES)、また、後続のペイロードデータを含むので(S401でYES)、入力されたデータが内部バッファA109に格納される。
 また、入力されたデータ(図13のdata-0004)と前回値保持部104のデータ(図13のdata-0000)でデータの整列ができるので(S305でYES)、データ整列部103がデータを整列し、ECC訂正部102がECC訂正を行って、ECC訂正後の要求ペイロードデータ(図13のdata-0000)をリクエスト要求元101に出力する(S205、S206)。
 また、0004h番地(図2)のデータ(図13のdata-0004)は前回値保持部104に保持される。
 また、データ整列部103は、FIFOバッファ110から次のリードデータ(図13のdRead-001C)と、内部バッファデータ入力コマンド及びメモリデータ入力コマンドを取り出す(S502、S503)。
 この場合は、内部バッファB1090を利用するため、S504はYESとなり、内部バッファB1090内のデータ(図13のdata-0018)がデータ整列部103に出力される(S303)。
 内部バッファB1090からのデータ(図13のdata-0018)と前回値保持部104のデータ(図13のdata-0004)ではデータの整列ができないので(S305でNO)、メモリ105からの次のデータの入力を待つ。
 なお、このとき、内部バッファA109からのデータ(図13のdata-0018)は前回値保持部104に保持される。
 次に、データ選択部108が、メモリ105から001Ch番地(図2)のデータ(図13のdata-001C)を入力する(S203)。
 なお、符号1301のタイミングでコマンド発行間隔制御部114からメモリ105にdRead-001Cが出力されていれば、符号1303のタイミングでメモリ105からdata-001Cが入力されることになるが、前述のように、符号1302のタイミングでdRead-001Cが出力されているので、符号1304のタイミングでメモリ105からdata-001Cが入力される。
 入力されたデータ(図13のdata-001C)は、最後尾データであり(S400でYES)、また、後続のペイロードデータを含むので(S401でYES)、入力されたデータが内部バッファB1090に格納される。
 また、入力されたデータ(図13のdata-001C)と前回値保持部104のデータ(図13のdata-0018)でデータの整列ができるので(S305でYES)、データ整列部103がデータを整列し、ECC訂正部102がECC訂正を行って、ECC訂正後の要求ペイロードデータ(図13のdata-0014)をリクエスト要求元101に出力する(S205、S206)。
 また、001Ch番地(図2)のデータ(図13のdata-001C)は前回値保持部104に保持される。
 なお、以上では、内部バッファA109及び内部バッファB1090に1アドレス分のデータ(4バイトのデータ)を格納することとしているが、内部バッファA109及び内部バッファB1090に2アドレス分以上のデータを格納するようにしてもよい。
 また、リクエスト要求元101からのリードリクエストで対象となっている図1の形式のアドレスを図2の形式のアドレスに変換した結果、3つ以上のアドレスが読み出し候補アドレスとなった場合に、3つ以上の読み出し候補アドレスのうちの前から2つのアドレスのデータが内部バッファA109又は内部バッファB1090にキャッシュされている場合は、メモリアドレス変換部106は、当該2つアドレス以外のアドレスのデータ、すなわち、3つ目のアドレス以降のデータのリードを指示するリードコマンド(部分リードコマンド)を生成する。
 また、以上では、コマンド発行間隔制御部114が、メモリアドレス変換部106により生成された部分リードコマンドの出力タイミングを1スロット分遅らせてメモリ105に出力している。
 これに対して、メモリアドレス変換部106が、部分リードコマンドを、通常の生成タイミングから1スロット分遅らせて生成することで、メモリ105からのリードデータと内部バッファA109からのデータとの間での衝突を回避するようにしてもよい。
 また、本実施の形態のメモリ制御装置100も、実施の形態1と同様に、4バイトの整数倍ずつのリードリクエストにも対処可能である。
 また、3つ以上の内部バッファを用いる場合も、本実施の形態で説明した手順にて処理することができる。
 以上、本実施の形態では、
 パイプライン型メモリに対応するためのメモリ制御装置であって、
 (a)メモリに発行したリクエストを記憶する手段
 (b)コマンド発行間隔を制御し、次にメモリに発行するコマンドの発行を遅延させる手段を有するメモリ制御装置を説明した。
 実施の形態3.
 実施の形態2では、内部バッファA109のデータを利用する場合、無条件にメモリ105へのリードコマンドの発行間隔を空けていたが、リクエスト要求元101からのリードリクエストを受理した時点で、内部バッファA109を利用する以上の時間が空いている場合、すなわち、データの競合が起きない場合には、リードコマンドの発行間隔を空ける必要がない。
 本実施の形態では、内部バッファA109の利用のための時間が空いていないことを検出し、その場合のみコマンド発行間隔を空けるように制御することで、無駄なくリードコマンドを発行する方式を説明する。
 図10は、本実施の形態に係るメモリ制御装置100の構成例を示す。
 図7と比較して、図10では、発行間隔判定部115が追加されている。
 発行間隔判定部115は、現在、メモリ105に発行しようとしている部分リードコマンドと、その部分リードコマンドの直前に発行したリードコマンド(全域リードコマンド、部分リードコマンドのいずれか)との発行間隔が一定以上空いているかどうかを判定する。
 具体的には、発行間隔判定部115は、最後にリードコマンド(全域リードコマンド、部分リードコマンドのいずれか)を出力してからの経過時間が、実施の形態2で説明した発行間隔(遅延時間)を超えているかどうかを判定する。
 コマンド発行間隔制御部114は、最後にリードコマンドを出力してからの経過時間が、実施の形態2で説明した発行間隔(遅延時間)を超えている場合には、間隔を空けることなく、部分リードコマンドをメモリ105に出力する。
 なお、発行間隔判定部115は、最後にリードコマンドを出力した時刻を、直前リードの発行時刻として保持しており、この直前リードの発行時刻と現在時刻との差が、実施の形態2で説明した発行間隔(遅延時間)を超えているかどうかを判定する。
 本実施の形態では、発行間隔判定部115も、コマンド出力部の例に相当する。
 次に、本実施の形態に係るメモリ制御装置100の動作を、図11及び図14を参照しながら説明する。
 なお、以下では、主に実施の形態2との相違点を説明する。
 また、以下では、リクエスト要求元101から、第1のリードリクエストとして、0000h番地(図1)からの4バイトリードのリードリクエストを受理し、第1のリードリクエストに対して要求ペイロードデータを返送する前に、第2のリードリクエストとして、0004h番地(図1)からの4バイトリードのリードリクエストを受理する例を想定して、メモリ制御装置100の動作を説明する。
 まず、メモリアドレス変換部106は、0000h番地(図1)から4バイトリードのリードリクエスト(図14のsRead-0000)を入力し、実施の形態2と同様に、0000h番地(図2)から8バイトのリードを指示する全域リードコマンドを生成し、コマンド発行間隔制御部114が、この全域リードコマンドをメモリ105に出力する(S201、S301、S202)。
 コマンド発行間隔制御部114は、リードコマンドの出力の際に、リードコマンドの出力を発行間隔判定部115に通知し、発行間隔判定部115では、コマンド発行間隔制御部114からリードコマンドの出力が通知された時刻で直前リードの発行時刻を更新する(S602)。
 以降は、実施の形態2と同様の処理が行われる。
 その後、メモリアドレス変換部106が、0004h番地(図1)から4バイトリードのリードリクエスト(図14のsRead-0004)を入力する(S201)。
 ここでは、内部バッファA109のデータを利用できるので、ヒット判定となり、S301はYESであり、メモリアドレス変換部106は、実施の形態2と同様に、部分リードコマンド(図14のdRead-0008)を生成する(S302)。
 次に、発行間隔判定部115は、最後のリードコマンド(図14のdRead-0004)の出力からの経過時間が遅延時間(図14の例では、1スロット分の時間)を超えているか否かを判断する(S601)。
 図14の例では、最後のリードコマンドの出力からの経過時間が遅延時間を超えているため(S601でYES)、コマンド発行間隔制御部114は、発行間隔を空けずに(遅延時間の経過を待たずに)リードコマンド(図14のdRead-0008)をメモリ105に出力する。
 実施の形態2では、図14の符号1402のタイミングでリードコマンド(dRead-0008)がメモリ105に出力されるが、本実施の形態では、リードコマンド(dRead-0008)は、符号1401のタイミングでメモリ105に出力される。
 この結果、メモリ105からは、符号1403のタイミングで、リードデータ(data-0008)が入力される。
 一方、実施の形態2の場合は、符号1404のタイミングで、リードデータ(data-0008)が入力される。
 一方、最後のリードコマンドの出力からの経過時間が遅延時間を超えていない場合(S601でNO)は、コマンド発行間隔制御部114は、実施の形態2と同様に、メモリ105へのリードコマンドの出力が可能なタイミングから遅延時間を経過した後にリードコマンド(図14のdRead-0008)をメモリ105に出力する(S506)。
 以降の処理は、実施の形態2と同じであるため、説明を省略する。
 なお、以上では、最後のリードコマンドの出力からの経過時間が遅延時間を超えていない場合は、コマンド発行間隔制御部114は、リードコマンドの出力が可能なタイミングから遅延時間を経過した後にリードコマンドをメモリ105に出力している。
 これに対して、最後のリードコマンドの出力からの経過時間が遅延時間を超えていない場合に、コマンド発行間隔制御部114は、最後のリードコマンドの出力からの経過時間と遅延時間との差分の時間を算出し、リードコマンドの出力が可能なタイミングから差分の時間が経過した後にリードコマンドをメモリ105に出力するようにしてもよい。
 以上、本実施の形態では、
 内部バッファのデータを再利用する時間が十分ある場合には、コマンド発行を遅らせないメモリ制御装置であって、
 (a)直前に発行したリードコマンドとの発行間隔が、内部バッファのデータを再利用する時間よりも経っているかどうか判定する手段
(b)直前に発行したリードコマンドのタイミングを保持する手段を有するメモリ制御装置を説明した。
 以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。
 あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。
 あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。
 なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
 100 メモリ制御装置、101 リクエスト要求元、102 ECC訂正部、103 データ整列部、104 前回値保持部、105 メモリ、106 メモリアドレス変換部、107 内部バッファ管理部、108 データ選択部、109 内部バッファA、110 FIFOバッファ、111 データ取得部、112 内部バッファ情報記憶部、113 ヒット判定部、114 コマンド発行間隔制御部、115 発行間隔判定部、1090 内部バッファB。

Claims (15)

  1.  各々に所定のデータ幅分のデータが格納される複数のアドレスを有し、前記データ幅分のペイロードデータに対して誤り訂正データが設定され、対応関係にある前記データ幅分のペイロードデータと誤り訂正データとが隣接する2つのアドレスにわたって格納され、アドレス単位でデータの読み出しが行われるメモリ、からのペイロードデータの読み出しを要求するリードリクエストをパイプライン方式にて処理するメモリ制御装置であって、
     前記メモリから読み出されたデータをキャッシュするキャッシュ領域と、
     前記データ幅の整数倍分のペイロードデータの読み出しを要求するリードリクエストを入力するリードリクエスト入力部と、
     前記リードリクエスト入力部により入力されたリードリクエストで要求されているペイロードデータである要求ペイロードデータと前記要求ペイロードデータの誤り訂正に用いられる誤り訂正データである対応誤り訂正データとが格納されている2つ以上のアドレスである読み出し候補アドレスのうちのいずれかのアドレスのデータが、前記キャッシュ領域にキャッシュ済み又はキャッシュされる予定であるかを判定するキャッシュ判定部と、
     2つ以上の読み出し候補アドレスのうちのいずれかのアドレスのデータが前記キャッシュ領域にキャッシュ済み又はキャッシュされる予定であると前記キャッシュ判定部により判定された場合に、2つ以上の読み出し候補アドレスのうち前記キャッシュ領域にデータがキャッシュ済み又はキャッシュされる予定のアドレスであるキャッシュアドレス以外のアドレスからのデータの読み出しを指示する部分リードコマンドを、前記メモリへの前記部分リードコマンドの出力が可能なタイミングから所定の遅延時間が経過した後に、前記メモリに出力するコマンド出力部とを有することを特徴とするメモリ制御装置。
  2.  前記コマンド出力部は、
     2つ以上の読み出し候補アドレスのうちの最前のアドレスのデータと前記最前のアドレスに後続する0個以上のアドレスのデータが前記キャッシュ領域にキャッシュ済み又はキャッシュされる予定であると前記キャッシュ判定部により判定された場合に、
     前記最前のアドレスを含むキャッシュアドレス以外のアドレスのデータの読み出しを指示する部分リードコマンドを、前記メモリに出力することを特徴とする請求項1に記載のメモリ制御装置。
  3.  前記メモリ制御装置は、更に、
     コマンドを蓄積するFIFO(First In First Out)バッファと、
     前記FIFOバッファからコマンドを入力し、入力したコマンドに従って、前記要求ペイロードデータと前記対応誤り訂正データとを取得するデータ取得部とを有し、
     前記コマンド出力部は、
     前記部分リードコマンドを前記メモリに出力するとともに、
     前記キャッシュ領域から前記キャッシュアドレスのデータを入力するよう前記データ取得部に指示するキャッシュデータ入力コマンドと、前記メモリから前記キャッシュアドレス以外のアドレスのデータを入力するよう前記データ取得部に指示するメモリデータ入力コマンドとを前記FIFOバッファに格納し、
     前記データ取得部は、
     前記FIFOバッファから前記キャッシュデータ入力コマンドと前記メモリデータ入力コマンドとを入力し、前記キャッシュデータ入力コマンドに従って、前記キャッシュ領域から前記キャッシュアドレスのデータを入力し、前記メモリデータ入力コマンドに従って、前記部分リードコマンドに応じて読み出された前記キャッシュアドレス以外のアドレスのデータを前記メモリから入力し、
     前記キャッシュ領域から入力した前記キャッシュアドレスのデータと、前記メモリから入力した前記キャッシュアドレス以外のアドレスのデータとから、前記要求ペイロードデータと前記対応誤り訂正データとを取得することを特徴とする請求項2に記載のメモリ制御装置。
  4.  前記コマンド出力部は、
     前記遅延時間が経過した後に部分リードコマンドを前記メモリに出力することで、前記データ取得部における前記キャッシュ領域からの前記キャッシュアドレスのデータの入力と前記メモリからの前記キャッシュアドレス以外のアドレスのデータの入力との間で衝突を発生させないことを特徴とする請求項3に記載のメモリ制御装置。
  5.  前記コマンド出力部は、
     2つ以上の読み出し候補アドレスのうちのいずれのアドレスのデータも前記キャッシュ領域にキャッシュ済みでなく、キャッシュされる予定でもないと前記キャッシュ判定部により判定された場合に、
     2つ以上の読み出し候補アドレスの全域からのデータの読み出しを指示する全域リードコマンドを、前記遅延時間の経過を待つことなく前記メモリに出力することを特徴とする請求項1~4のいずれかに記載のメモリ制御装置。
  6.  前記コマンド出力部は、
     部分リードコマンドを前記メモリに出力する場合に、全域リードコマンド及び部分リードコマンドのいずれかを最後に前記メモリに出力してからの経過時間が前記遅延時間を超えているか否かを判断し、
     全域リードコマンド及び部分リードコマンドのいずれかを最後に前記メモリに出力してからの経過時間が前記遅延時間を超えている場合に、前記遅延時間の経過を待つことなく部分リードコマンドを前記メモリに出力することを特徴とする請求項5に記載のメモリ制御装置。
  7.  全域リードコマンド及び部分リードコマンドのいずれかを最後に前記メモリに出力してからの経過時間が前記遅延時間を超えていない場合に、
     全域リードコマンド及び部分リードコマンドのいずれかを最後に前記メモリに出力してからの経過時間と前記遅延時間との差分時間を算出し、
     前記メモリへの前記部分リードコマンドの出力が可能なタイミングから前記差分時間が経過した後に、部分リードコマンドを前記メモリに出力することを特徴とする請求項6に記載のメモリ制御装置。
  8.  前記メモリ制御装置は、更に、
     前記コマンド出力部により出力された全域リードコマンド及び部分リードコマンドのいずれかに応じて前記メモリから読み出された最後尾のデータである最後尾データに、前記要求ペイロードデータ及び前記対応誤り訂正データのいずれでもないデータが含まれている場合に、前記最後尾データを前記キャッシュ領域に格納するキャッシュ管理部を有することを特徴とする請求項5~7のいずれかに記載のメモリ制御装置。
  9.  前記コマンド出力部は、
     少なくともパイプライン処理におけるスロット1つ分の時間に相当する時間を前記遅延時間とすることを特徴とする請求項1~8のいずれかに記載のメモリ制御装置。
  10.  前記メモリ制御装置は、
     複数のキャッシュ領域を有し、
     前記キャッシュ判定部は、
     2つ以上の読み出し候補アドレスのうちのいずれかのアドレスのデータが前記複数のキャッシュ領域のいずれかのキャッシュ領域にキャッシュ済み又はキャッシュされる予定であるかを判定することを特徴とする請求項1~9のいずれかに記載のメモリ制御装置。
  11.  各々に所定のデータ幅分のデータが格納される複数のアドレスを有し、前記データ幅分のペイロードデータに対して誤り訂正データが設定され、対応関係にある前記データ幅分のペイロードデータと誤り訂正データとが隣接する2つのアドレスにわたって格納され、アドレス単位でデータの読み出しが行われるメモリ、からのペイロードデータの読み出しを要求するリードリクエストを処理するメモリ制御装置であって、
     前記メモリから読み出されたデータをキャッシュするキャッシュ領域と、
     前記データ幅の整数倍分のペイロードデータの読み出しを要求するリードリクエストを入力するリードリクエスト入力部と、
     前記リードリクエスト入力部により入力されたリードリクエストで要求されているペイロードデータである要求ペイロードデータと前記要求ペイロードデータの誤り訂正に用いられる誤り訂正データである対応誤り訂正データとが格納されている2つ以上のアドレスである読み出し候補アドレスのうちのいずれかのアドレスのデータが、前記キャッシュ領域にキャッシュ済みであるかを判定するキャッシュ判定部と、
     2つ以上の読み出し候補アドレスのうちのいずれかのアドレスのデータが前記キャッシュ領域にキャッシュ済みであると前記キャッシュ判定部により判定された場合に、2つ以上の読み出し候補アドレスのうち前記キャッシュ領域にデータがキャッシュ済みのアドレスであるキャッシュアドレス以外のアドレスからのデータの読み出しを指示する部分リードコマンドを、前記メモリに出力するコマンド出力部とを有することを特徴とするメモリ制御装置。
  12.  前記コマンド出力部は、
     2つ以上の読み出し候補アドレスのうちのいずれのアドレスのデータも前記キャッシュ領域にキャッシュ済みでないと前記キャッシュ判定部により判定された場合に、
     2つ以上の読み出し候補アドレスの全域からのデータの読み出しを指示する全域リードコマンドを、前記メモリに出力することを特徴とする請求項11に記載のメモリ制御装置。
  13.  前記メモリ制御装置は、更に、
     前記コマンド出力部により出力された全域リードコマンド及び部分リードコマンドのいずれかに応じて前記メモリから読み出された最後尾のデータである最後尾データに、前記要求ペイロードデータ及び前記対応誤り訂正データのいずれでもないデータが含まれている場合に、前記最後尾データを前記キャッシュ領域に格納するキャッシュ管理部を有することを特徴とする請求項11又は12に記載のメモリ制御装置。
  14.  前記メモリ制御装置は、
     複数のキャッシュ領域を有し、
     前記キャッシュ判定部は、
     2つ以上の読み出し候補アドレスのうちのいずれかのアドレスのデータが前記複数のキャッシュ領域のいずれかのキャッシュ領域にキャッシュ済みであるかを判定することを特徴とする請求項11~13のいずれかに記載のメモリ制御装置。
  15.  前記コマンド出力部は、
     2つ以上の読み出し候補アドレスのうちの最前のアドレスのデータと前記最前のアドレスに後続する0個以上のアドレスのデータが前記キャッシュ領域にキャッシュ済みであると前記キャッシュ判定部により判定された場合に、
     前記最前のアドレスを含むキャッシュアドレス以外のアドレスのデータの読み出しを指示する部分リードコマンドを、前記メモリに出力し、
     前記メモリ制御装置は、更に、
     前記キャッシュ領域から前記キャッシュアドレスのデータを入力し、前記部分リードコマンドに応じて読み出された前記キャッシュアドレス以外のアドレスのデータを前記メモリから入力し、
     前記キャッシュ領域から入力した前記キャッシュアドレスのデータと、前記メモリから入力した前記キャッシュアドレス以外のアドレスのデータとから、前記要求ペイロードデータと前記対応誤り訂正データとを取得するデータ取得部を有することを特徴とする請求項11~14のいずれかに記載のメモリ制御装置。
PCT/JP2012/078628 2012-11-05 2012-11-05 メモリ制御装置 WO2014068789A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2014544200A JP5797342B2 (ja) 2012-11-05 2012-11-05 メモリ制御装置
US14/423,841 US9715427B2 (en) 2012-11-05 2012-11-05 Memory control apparatus
PCT/JP2012/078628 WO2014068789A1 (ja) 2012-11-05 2012-11-05 メモリ制御装置
CN201280076878.2A CN104769558B (zh) 2012-11-05 2012-11-05 存储器控制装置
DE112012007102.6T DE112012007102B4 (de) 2012-11-05 2012-11-05 Speichersteuervorrichtung
TW102101434A TWI475383B (zh) 2012-11-05 2013-01-15 Memory control device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/078628 WO2014068789A1 (ja) 2012-11-05 2012-11-05 メモリ制御装置

Publications (1)

Publication Number Publication Date
WO2014068789A1 true WO2014068789A1 (ja) 2014-05-08

Family

ID=50626752

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/078628 WO2014068789A1 (ja) 2012-11-05 2012-11-05 メモリ制御装置

Country Status (6)

Country Link
US (1) US9715427B2 (ja)
JP (1) JP5797342B2 (ja)
CN (1) CN104769558B (ja)
DE (1) DE112012007102B4 (ja)
TW (1) TWI475383B (ja)
WO (1) WO2014068789A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326142A (zh) * 2015-06-17 2017-01-11 群联电子股份有限公司 缓冲存储器存取方法、存储器控制器与存储器存储装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017131648A1 (en) * 2016-01-27 2017-08-03 Hewlett Packard Enterprise Development Lp Adaptive request management
US10713750B2 (en) * 2017-04-01 2020-07-14 Intel Corporation Cache replacement mechanism
CN111881068B (zh) * 2020-06-30 2024-06-04 上海思朗科技有限公司 多入口的全相联的高速缓冲存储器及数据管理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03132852A (ja) * 1989-10-19 1991-06-06 Pfu Ltd バス非同期制御方式
JPH1040165A (ja) * 1996-07-22 1998-02-13 Oki Data:Kk データ読み出し方法およびリードバッファ
JP2003044354A (ja) * 2001-07-26 2003-02-14 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2010191511A (ja) * 2009-02-16 2010-09-02 Toshiba Corp マイクロプロセッサ
JP2012137944A (ja) * 2010-12-27 2012-07-19 Mitsubishi Electric Corp メモリアクセス装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0588987A (ja) 1991-09-25 1993-04-09 Hitachi Ltd バツフア記憶装置
JPH05233471A (ja) 1992-02-21 1993-09-10 Toshiba Corp マイクロプロセッサ及びそれを使用したデータ処理装置
JPH0773114A (ja) 1993-09-01 1995-03-17 Nec Corp 宇宙用デジタル計算機のメモリ制御回路
JPH07146825A (ja) 1993-11-22 1995-06-06 Okuma Mach Works Ltd メモリシステム
JPH1198462A (ja) 1997-09-19 1999-04-09 Hitachi Ltd データ再生装置
US6748486B2 (en) * 2001-01-04 2004-06-08 International Business Machines Corporation Method, system, and data structures for superimposing data records in a first data format to memory in a second data format
JP2004038705A (ja) 2002-07-05 2004-02-05 Toshiba Corp メモリ制御装置およびメモリアクセス方法
JP2006185162A (ja) 2004-12-27 2006-07-13 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びその制御方法
US8214600B2 (en) * 2005-02-10 2012-07-03 International Business Machines Corporation Data processing system and method for efficient coherency communication utilizing coherency domains
US20080034132A1 (en) 2006-08-01 2008-02-07 Nec Electronics Corporation Memory interface for controlling burst memory access, and method for controlling the same
JP2008059565A (ja) 2006-08-01 2008-03-13 Nec Electronics Corp バーストメモリアクセスを制御するメモリインターフェース装置及びその制御方法
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
KR101100143B1 (ko) 2007-06-20 2011-12-29 후지쯔 가부시끼가이샤 캐시 메모리 제어 장치, 및 파이프 라인 제어 방법
US9311262B2 (en) 2010-02-09 2016-04-12 Mitsubishi Electric Corporation Transmission control device, memory control device, and PLC including the transmission control device
TWI467579B (zh) * 2011-01-14 2015-01-01 Mstar Semiconductor Inc 電子裝置及其記憶體控制方法以及相關電腦可讀取儲存媒體
CN104471549B (zh) 2012-06-28 2017-06-16 三菱电机株式会社 读取请求处理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03132852A (ja) * 1989-10-19 1991-06-06 Pfu Ltd バス非同期制御方式
JPH1040165A (ja) * 1996-07-22 1998-02-13 Oki Data:Kk データ読み出し方法およびリードバッファ
JP2003044354A (ja) * 2001-07-26 2003-02-14 Matsushita Electric Ind Co Ltd メモリ制御装置
JP2010191511A (ja) * 2009-02-16 2010-09-02 Toshiba Corp マイクロプロセッサ
JP2012137944A (ja) * 2010-12-27 2012-07-19 Mitsubishi Electric Corp メモリアクセス装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326142A (zh) * 2015-06-17 2017-01-11 群联电子股份有限公司 缓冲存储器存取方法、存储器控制器与存储器存储装置

Also Published As

Publication number Publication date
DE112012007102B4 (de) 2022-04-28
US20150186208A1 (en) 2015-07-02
DE112012007102T5 (de) 2015-07-16
US9715427B2 (en) 2017-07-25
CN104769558A (zh) 2015-07-08
TWI475383B (zh) 2015-03-01
TW201418980A (zh) 2014-05-16
JPWO2014068789A1 (ja) 2016-09-08
JP5797342B2 (ja) 2015-10-21
CN104769558B (zh) 2017-07-21

Similar Documents

Publication Publication Date Title
US10976939B2 (en) Address/command chip synchronized autonomous data chip address sequencer for a distributed buffer memory system
JP5797342B2 (ja) メモリ制御装置
JP5076488B2 (ja) 情報処理装置、履歴管理方法、履歴管理プログラム
US9753872B2 (en) Information processing apparatus, input and output control device, and method of controlling information processing apparatus
JP4966404B2 (ja) メモリ制御装置、記憶装置、及びメモリ制御方法
JP2007034392A (ja) 情報処理装置及びデータ処理方法
KR20140108787A (ko) 텍스쳐 맵핑 파이프라인을 위한 논블로킹 방식의 텍스쳐 캐쉬 메모리 시스템 및 논블로킹 방식의 텍스쳐 캐쉬 메모리의 동작 방법
US8806102B2 (en) Cache system
JPS5829187A (ja) キヤツシユメモリ制御装置
JP5623677B2 (ja) リードリクエスト処理装置
KR20190112020A (ko) 데이터 처리
US11841812B2 (en) Data bus bridge
US11487695B1 (en) Scalable peer to peer data routing for servers
JP2018173856A (ja) 情報処理装置およびその制御方法
WO2014128967A1 (ja) 記憶制御装置、及びデータの書き込み完了を検知する方法
WO2016170673A1 (ja) 計算機システム、及び、メモリモジュール
JP6625735B2 (ja) 計算機システム及び不揮発性メモリの冗長化方法
JP2012137944A (ja) メモリアクセス装置
JP5852090B2 (ja) 命令処理装置およびその命令処理方法
JP2019200592A (ja) メモリ制御回路、出力回路、メモリ制御回路の制御方法および出力回路の制御方法
KR19990030723A (ko) 로컬버스의 트랜잭션 지연 제어방법 및 장치
JP2004318252A (ja) システムlsiにおけるデータ転送制御回路
JP2006146966A (ja) 記憶制御装置
JP2006268708A (ja) 冗長接続構成を持つコンピュータシステム
JP2007115287A (ja) 記憶制御装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12887469

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014544200

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14423841

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 1120120071026

Country of ref document: DE

Ref document number: 112012007102

Country of ref document: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12887469

Country of ref document: EP

Kind code of ref document: A1