WO2014002222A1 - リードリクエスト処理装置 - Google Patents
リードリクエスト処理装置 Download PDFInfo
- Publication number
- WO2014002222A1 WO2014002222A1 PCT/JP2012/066494 JP2012066494W WO2014002222A1 WO 2014002222 A1 WO2014002222 A1 WO 2014002222A1 JP 2012066494 W JP2012066494 W JP 2012066494W WO 2014002222 A1 WO2014002222 A1 WO 2014002222A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- read
- read request
- address
- request
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
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 employ 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.
- the vertical ECC is taken as an example, but the following description is applicable to vertical parity.
- the address data (first data) that is first read from the memory is used in the first and last two times when the ECC is included.
- Wrapping read means that when reading for the line size by cache read fill operation etc., the address that needs to be accessed first is first, and when the address is monotonically increased from the start address and the wrapping boundary is reached, the lower address is reached. This is a method of returning data after wrapping around.
- the unit of the wrapping lead is divided for each of four addresses (for example, four addresses of addresses 0000h, 0004h, 0008h, and 000Ch).
- addresses 0000h, 0004h, 0008h, and 000Ch for example, four addresses of addresses 0000h, 0004h, 0008h, and 000Ch.
- the unit of the wrapping read is divided for each of five addresses (for example, five addresses at addresses 0000h, 0004h, 0008h, 000Ch, and 0010h).
- five addresses at addresses 0000h, 0004h, 0008h, 000Ch, and 0010h are read out.
- data at the address 0004h ECC0 to D6
- data at the address 0008h D7 to D9
- data at the address 000Ch Da to Dc
- address 0010h Data (Dd to ECC3) are read out. Since the wrapping boundary is reached at address 0010h, the data (D0 to D3) at address 0000h is read out by wrapping around to the lower address. Since the ECC of the data at address 0000h (D0 to D3) is “ECC0” at address 0004h, the data at address 0004h (ECC0 to D6) needs to be read again.
- the wrapping read is performed to the memory adopting the vertical ECC
- the data of the address to be read first from the memory is read twice at the first and last times when the ECC is included.
- there is an overhead in memory access for example, in DRAM (Dynamic Random Access Memory), when the same bank is ACTed, an inaccessible period occurs).
- DRAM Dynamic Random Access Memory
- the first data is read twice, performance loss occurs and inefficiency occurs. It is. Further, since power is consumed every memory access, power consumption increases when the first data is read twice.
- Patent Document 1 makes it possible to use vertical ECC and DRAM high-speed access technology of page mode and bank switching, but only increment access can be applied and wrapping read access cannot be supported.
- the present invention has been made in view of the above circumstances, and mainly aims to avoid reading duplicate data, efficiently use a finite memory bandwidth, and suppress power consumption in memory access. Objective.
- the read request processing apparatus includes: Each has n addresses where data of a predetermined data width is stored, and the n addresses are divided into m addresses which are units of wrapping reads (m is an integer of 2 or more, n is an integer that is an integer multiple of 2 or more of m), and payload data and error correction data that are in a corresponding relationship are stored over two adjacent addresses, and data is read out in units of addresses.
- a read request processing device for processing a read request for requesting, A read request input section for inputting a read request; A read request determination unit that determines whether the read request input by the read request input unit is a request for a wrapping read; When the read request determination unit determines that the read request is a wrapping read request, an address storing the payload data requested by the read request is included from the n addresses. M addresses are extracted as wrapping read targets, the order of reading data from the m addresses is specified based on the order of the extracted m addresses, and the number of times of reading data from each address is set to 1.
- An address extractor limited to When the read request determination unit determines that the read request is a request for a wrapping read, data is transferred from the head address in which the head reading order is designated among the m addresses extracted by the address extraction unit.
- the head data read from the head address is input, the head data storage unit for storing the head data,
- the read request determination unit determines that the read request is a wrapping read request, from the last address in which the last read order is designated among the m addresses extracted by the address extraction unit.
- the tail data read from the tail address is input, and the head data is input from the head data storage unit, and the head data and the tail data are It has the data extraction part which extracts the payload data and error correction data which are related, It is characterized by the above-mentioned.
- the number of times data is read from each address is limited to one, the head data is stored, and the stored head data is used for the tail data. Can be avoided, the limited memory bandwidth can be efficiently used, and the power consumption in memory access can be suppressed.
- 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 diagram illustrating a memory control device, a request request source, and a request request destination 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. 4 is a diagram illustrating a memory control device, a request request source, and a memory according to the second embodiment.
- FIG. 10 is a diagram illustrating 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. 10 is a diagram illustrating a memory control device, a request request source, and a memory according to a fourth embodiment.
- FIG. 9 is a flowchart showing an operation example of the memory control device according to the fourth embodiment.
- FIG. 10 is a diagram illustrating a memory control device, a request request source, and a memory according to a fourth embodiment.
- FIG. 3 shows the memory control device 100, the request request source 101, and the memory 105 according to the first embodiment.
- a configuration that is a prerequisite for describing a configuration corresponding to a wrapping lead will be described.
- a configuration corresponding to the wrapping lead will be described in a second 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. Further, the request request source 101 recognizes the unit of the wrapping read for every four addresses.
- n addresses are set.
- 1-byte ECC is added to 4-byte payload data by vertical ECC.
- the vertical ECC is an ECC memory arrangement method in which ECC is arranged in the address depth direction and ECC and parity are realized without increasing the data width of the memory. Data is read from the memory 105 in units of addresses.
- n addresses in the memory 105 are divided into m addresses that are units of wrapping reads (m is an integer of 2 or more, and n is an integer that is an integer multiple of 2 or more of m). Is).
- the wrapping read unit of the memory 105 for example, 0000h address, 0004h address, 0008h address, 000Ch address, 0010h address
- the wrapping read unit of the request request source 101 for example, 0000h address, 0004h address, 0008h address, 000Ch address
- the wrapping read unit of the request request source 101 includes the same payload data (D0 to Df).
- the ECC is arranged in the order in which the ECC is arranged after the payload data.
- the arrangement method of the ECC arranges the payload data and the ECC which are in a correspondence relation between two adjacent addresses. It only has to be.
- “EEC0” may be arranged before payload data “D0”.
- the data assigned to the same address can be expanded. For example, D0 to D3, ECC0, D4 to D6 at address 0000h, D7, ECC1, D8 to Db, ECC2, and Dc at the next address 0008h. It may be expanded. Even in that case, part of the payload data and the ECC continue to be in a correspondence relationship between two adjacent 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, a previous value holding unit 104, a data alignment unit 103, and an ECC correction unit 102.
- 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 data alignment unit 103, and the ECC correction unit 102 may be realized using a program. Note that the memory control device 100 corresponds to an example of a read request processing device.
- the memory address conversion unit 106 receives a read request from the request request source 101. In addition, the memory address conversion unit 106 converts the address of the received read request into an address on the memory 105 in which the vertical ECC is arranged. That is, the memory address conversion unit 106 stores p pieces of payload data requested by a read request from the request request source 101 and ECCs corresponding to the payload data (p is 2 or more and n (The following integer) is extracted as a read target.
- the memory address conversion unit 106 corresponds to an example of a read request input unit and an address extraction unit.
- the previous value holding unit 104 is a register that holds the previous read data (4 bytes) received from the memory 105. That is, the previous value holding unit 104 inputs the read 4-byte data every time 4-byte data is read from each address designated by the memory address conversion unit 106, and the input data is input to the previous value ( As past data).
- the previous value holding unit 104 corresponds to an example of a past data storage unit.
- the data alignment unit 103 separates the current read data (4 bytes) received from the memory 105 and the data (4 bytes) of the previous value holding unit 104 into a payload data portion and an ECC corresponding thereto, and performs ECC correction. Arrange the data into an arrangement that can. That is, the data alignment unit 103 inputs the read 4-byte data every time 4-byte data is read from each address specified by the memory address conversion unit 106. Further, the data alignment unit 103 inputs the 4-byte data (previous value) read out immediately before the input 4-byte data from the previous value holding unit 104, and uses the data from the memory 105 and the previous value as the data. From certain data, payload data and ECC that are in a correspondence relationship are extracted.
- the data alignment unit 103 corresponds to an example of a data extraction unit.
- the ECC correction unit 102 performs ECC correction on the read data received from the data alignment unit 103 and returns the read data to the request request source 101. In other words, the ECC correction unit 102 performs error correction processing of the payload data in the correspondence relationship using the ECC extracted by the data alignment unit 103, and outputs the payload data after the error correction processing to the request request source 101. .
- the ECC correction unit 102 corresponds to an example of an error correction processing unit.
- FIG. 3 shows a configuration in which the memory control device 100 is directly connected to the memory 105, but the memory control device 100 may be connected to the request request destination 200 as shown in FIG. Although not shown in FIG. 4, the request request destination 200 is connected to the memory 105, reads data from the memory 105, and outputs the read data to the memory control device 100.
- the memory address conversion unit 106 receives a read request from the request request source 101 (S201).
- the memory address conversion unit 106 calculates an area on the memory 105 including 4-byte data (D0 to D3) and the corresponding ECC (ECC0).
- the memory address conversion unit 106 converts the data into a request for reading 8 bytes from the address 0000h (S202).
- the memory address conversion unit 106 instructs the memory 105 to read in the order of the data at address 0000h (D0 to D3) and the data at address 0004h (ECC0 to D6).
- the memory 105 returns the data at address 0000h (D0 to D3) and the data at address 0004h (ECC0 to D6) in order.
- the previous value holding unit 104 receives the data (D0 to D3) at the address 0000h and holds the received data (D0 to D3) at the address 0000h (S203).
- the data aligning unit 103 also receives the data (D0 to D3) at the address 0000h. However, data alignment cannot be performed with only the data at the address 0000h (NO in S204), and the reception of data at the address 0004h is waited.
- the data alignment unit 103 When the data alignment unit 103 receives the data at addresses 0004h (ECC0 to D6) from the memory 105, the data alignment unit 103 receives the data at addresses 0000h (D0 to D3) held by the previous value holding unit 104 and the memory 105. It is determined that data alignment is possible based on the data at addresses 0004h (ECC0 to D6) (YES in S204). That is, the data alignment unit 103 can extract the payload data (D0 to D3) and the ECC (ECC0) having the corresponding relationship from the data (D0 to D3) at the address 0000h and the data (ECC0 to D6) at the address 0004h. to decide. Next, the data alignment unit 103 cuts out ECC0 corresponding to the payload data portions D0 to D3 and aligns the data (S205).
- the ECC correction unit 102 receives data (D0 to D3 and ECC0) in which payload data and ECC are aligned, performs ECC correction, and returns read data (D0 to D3) to the request request source 101 (S206). . Since all the data requested by the read request has been returned, the processing is completed (S207).
- the memory control device including the following means has been described.
- A Means for converting a request from a request request source into a memory request and bridging data
- b Means for correcting ECC error of data
- c Received data from a memory adopting vertical ECC, Relocation to data that can be ECC error corrected (separated into data and corresponding ECC)
- d Convert address and length from request request source to address and length to memory using vertical ECC
- E Means for holding the previous data received from the memory.
- the memory control device provided with means for converting a request from the request request source into a request to the subsequent request request destination has been described.
- Embodiment 2 a description will be given of a configuration that avoids reading the first data twice when performing lapping read on a memory that employs vertical ECC. More specifically, the memory control device 100 according to the present embodiment includes a buffer that holds the first data, and reads the first data only once. According to the memory control device 100 according to the present embodiment, it is possible to efficiently use a finite memory band and to suppress power consumption in memory access. Furthermore, the memory control device 100 according to the present embodiment can contribute to speeding up memory access.
- the memory control device 100 returns the read data of 16 bytes in total in the order of 0004h ⁇ 0008h ⁇ 000Ch ⁇ 0000h to the request request source 101.
- a total of 24 bytes of read data are read from the memory in the order of 0004h ⁇ 0008h ⁇ 000Ch ⁇ 0010h ⁇ 0000h ⁇ 0004h.
- ECC0 is the ECC of the payload data “D0 to D3” at address 0000h, from address 0004h, so the first data (data at address 0004h) needs to be read again. There is.
- FIG. 6 shows a memory control device 100 that solves the above-described problem in wrapping read.
- a wrapping burst read determination unit 108 and a first data holding unit 109 are added to the configuration shown in FIG.
- the wrapping burst read determination unit 108 receives a read request from the request source 101, determines whether the received read request is a wrapping burst read request, and notifies the memory address conversion unit 106 of the result.
- the wrapping burst read determination unit 108 corresponds to an example of a read request input unit and a read request determination unit.
- the first data holding unit 109 is a register that holds read data that is returned first from the memory 105 in response to a request converted by the memory address conversion unit 106. That is, when the wrapping burst read determination unit 108 determines that the read request is a wrapping burst read request, the first data holding unit 109 determines the start address that is the start reading order (address 0004h in the above example). When the data is read from (), the head data read from the head address is input and the head data is stored.
- the first data holding unit 109 corresponds to an example of a head data storage unit.
- the memory address conversion unit 106 stores the payload data requested by the read request when the wrapping burst read determination unit 108 determines that the read request is a read request for a wrapping burst. Five addresses including the address that has been set are extracted as wrapping read targets. Further, the memory address conversion unit 106 specifies the order of reading data from the five addresses based on the order of the extracted five addresses, and limits the number of times of reading data from each address to one. For example, it is assumed that a read request for a wrapping read is issued with address 0004h (D4 to D7) in FIG.
- the memory address conversion unit 106 wraps and reads five addresses including addresses 0004h and 0008h (addresses 0004h, 0008h, 000Ch, and 0000h) including the payload data “D4 to D7” in FIG. Extract. Then, the memory address conversion unit 106 specifies the data reading order as 0004h ⁇ 0008h ⁇ 000Ch ⁇ 0000h. As described above, since the memory address conversion unit 106 according to the present embodiment limits the number of times data is read from each address to one, the data at address 0004h, which is the first data, is not read twice. . The operation of the memory address conversion unit 106 when a normal read request is received is as described in the first embodiment.
- FIG. 8 illustrates how each unit of the memory control device 100 processes data.
- the wrapping burst read determination unit 108 receives a read request from the request request source 101 (S201). The wrapping burst read determination unit 108 determines whether or not the read request is a wrapping burst read request (S301). If the request is a wrapping burst read request (YES in S301), the wrapping burst read determination unit 108 outputs the read request to the memory address conversion unit 106, and the memory address conversion unit 106 converts it into a memory address of the wrapping burst read. (S302).
- the memory address conversion unit 106 calculates an area including 16-byte data (D4 to Df and D0 to D3) and the corresponding ECC (ECC1 to ECC3 and ECC0). Referring to FIG. 2, since the data is allocated from address 0004h to address 0010h and address 0000h, it is converted into a request for reading 16 bytes from address 0004h and 4 bytes from address 0000h (S302). Then, the memory address conversion unit 106 instructs the memory 105 to read data in the order of 0004h ⁇ 0008h ⁇ 000Ch ⁇ 0000h. The memory 105 returns the data from address 0004h (ECC0 to D6) in order.
- the first data holding unit 109 receives the data at the address 0004h (ECC0 to D6) (first data A in FIG. 8) as the first data, and the received data at the address 0004h is the first data (the first data in FIG. 8). 1 data E) is held (S303).
- the data alignment unit 103 also receives the data (ECC0 to D6) at address 0004h (first data A in FIG. 8). However, data alignment cannot be performed only with the data at address 0004h (NO in S305), so the data reception at address 0008h is received. Wait for.
- the previous value holding unit 104 also receives the data (ECC0 to D6) at address 0004h (first data A in FIG. 8), and the received data at address 0004h is the previous value (first data in FIG. 8). B) is held (S203). The operation until the data at address 0000h is received is the same as in the first embodiment.
- the previous value holding unit 104 sets the data at address 0008h as the previous value (second data in FIG. 8).
- the data alignment unit 103 also receives the data (D7 to D9) at the address 0008h (second data A in FIG. 8). As shown in FIG. 8, the data alignment unit 103 extracts “D4 to D7” and “ECC1” from the received data at the address 0008h (second data A) and the previous value (first data B), First data C is generated (S305, S205). Then, the ECC correction unit 102 performs ECC correction and transmits the first data D to the request request source 101 (S206). At this point, since all the read data has not been returned, S207 is NO.
- the previous value holding unit 104 sets the data at address 000Ch as the previous value (first data in FIG. 8).
- data B data (S203)
- the data alignment unit 103 also receives the data (Da to Dc) at address 000Ch (third data A in FIG. 8).
- the data alignment unit 103 extracts “D8 to Db” and “ECC2” from the received data at the 000Ch address (third data A) and the previous value (second data B), Second data C is generated (S305, S205).
- the ECC correction unit 102 performs ECC correction and transmits the second data D to the request request source 101 (S206). At this point, since all the read data has not been returned, S207 is NO.
- the previous value holding unit 104 sets the data at address 0010h as the previous value (first data in FIG. 8). 4 data B) (S203), and the data alignment unit 103 also receives the data (Dd to ECC3) at address 0010h (fourth data A in FIG. 8). As shown in FIG. 8, the data alignment unit 103 extracts “Dc to Df” and “ECC3” from the received data at the address 0010h (fourth data A) and the previous value (third data B), Third data C is generated (S305, S205). Then, the ECC correction unit 102 performs ECC correction and transmits the third data D to the request request source 101 (S206). At this point, since all the read data has not been returned, S207 is NO.
- the previous value holding unit 104 sets the data at the address 0000h as the previous value (the first value in FIG. 8).
- the data alignment unit 103 also receives the data (D0 to D3) at address 0000h (fifth data A in FIG. 8).
- the data alignment unit 103 receives the data at address 0000h (D0 to D3) (fifth data A in FIG. 8), but cannot be aligned with the data at address 0010h (fourth data B) (NO in S305). , Wait for data at address 0000h (fifth data B). As shown in FIG.
- the data alignment unit 103 generates “D0 to D3” from the received data at the address 0000h (fifth data B) and the first data (first data E) in the first data holding unit 109. And “ECC0” are extracted to generate the fourth data C (S305, S205). Then, the ECC correction unit 102 performs ECC correction, and transmits the fourth data D to the request request source 101 (S206). At this time, all the read data has been returned, so S207 is YES.
- the previous value holding unit 104 stores the fourth data B and the fifth data B.
- the fourth data B and the fifth data B are not used in the data alignment unit 103.
- the previous value holding unit 104 may not store the fourth data B and the fifth data B.
- the number of times of reading data from each address is limited to one, the first data is stored, and the stored first data is compared with the last data. Therefore, it is possible to avoid reading duplicate data, efficiently use a finite memory bandwidth, and suppress power consumption in memory access.
- the memory control device including the following means in addition to the configuration shown in the first embodiment has been described.
- Embodiment 3 In the first embodiment, one read request from the request request source 101 is accepted, and the next read request cannot be accepted until the read data is returned. For example, in DRAM, the period from when a read request is issued to when the read data is returned (read latency) is long, but before the read data that issued the read request is returned, the next read request is continued. Can be issued. This pipeline processing is indispensable for improving the throughput.
- FIG. 9 shows a memory control device 100 that performs pipeline processing based on the configuration of the first embodiment.
- a FIFO (First-In First-Out) 110 is added to the configuration shown in FIG.
- the FIFO 110 stores the issued request in the memory 105, and passes the information to the data alignment unit 103 at the timing when the read data is returned from the memory 105.
- the processing until the memory address conversion unit 106 converts the address requested by the read request into the memory address in FIG. 2 (S202) is the same as that in the first embodiment.
- the command information converted into the memory address is held in the FIFO 110 (S401).
- the command information is continuously held in the FIFO 110.
- the data alignment unit 103 and the previous value holding unit 104 accept read data from the memory 105 (S203).
- the data alignment unit 103 and the previous value holding unit 104 read the read data for the next request from the memory 105. Accept (S203). If the command information does not exist in the FIFO 110 (NO in S402), the processing is completed because all the request data has been returned (S207).
- the memory control device including means for storing requests from the request request source has been described.
- Embodiment 4 Even in the configuration described in the second embodiment, pipeline processing is possible as in the third embodiment. However, simply adding the FIFO 110 to the configuration shown in FIG.
- the next Data read in response to the read request may be output from the memory 105 to the data alignment unit 103.
- the wrapping read after the data at the last address is output from the memory 105 to the data alignment unit 103, the first data from the first data holding unit 109 and the last address stored in the previous value holding unit 104 are output. Data alignment using the data is performed by the data alignment unit 103.
- the pipeline processing is realized by providing the FIFO 110 and means for controlling data collision in the configuration shown in FIG.
- FIG. 11 shows a memory control apparatus 100 that performs pipeline processing based on the configuration of the second embodiment.
- a FIFO 110 and a data collision control unit 111 are added to the configuration shown in FIG.
- the data collision control unit 111 sends data read from the memory 105 to the data alignment unit 103 in response to a subsequent read request at a timing when the data alignment unit 103 uses the first data from the first data holding unit 109.
- Prevent input That is, in the data collision control unit 111, the data alignment unit 103 inputs the first data from the first data holding unit 109, and the payload data and the ECC that are in a correspondence relationship are obtained from the first data and the data at the last address.
- the timing control of the data read from the memory 105 is performed so that the data read from the memory 105 is input to the data alignment unit 103 in response to a subsequent read request.
- the data collision control unit 111 is arranged between the memory 105 and the data alignment unit 103, and the data read from the memory 105 in response to a subsequent read request by the data collision control unit 111. It is conceivable to control collision by buffering. Further, as shown in FIG. 13, a data collision control unit 111 is arranged between the memory 105 and the memory address conversion unit 106, and the data collision control unit 111 issues a request to the memory 105 for a read request subsequent to the wrapping read. It is conceivable to control the collision by leaving an interval.
- FIG. 12 shows an operation example in the configuration of FIG.
- the processing up to the process of storing command information in the FIFO 110 is the same as in the second and third embodiments.
- the processing in the case where the head command information held in the FIFO 110 is not wrapping read command information is the same as in the third embodiment.
- If the first command information held in the FIFO 110 is wrapping read command information (YES in S501), the process until the data alignment unit 103 performs data alignment using the first data is the same as in the second embodiment. It is.
- the data collision control unit 111 determines whether data read from the memory 105 is received before the data alignment unit 103 completes data alignment using the first data (S502).
- the data collision control unit 111 delays the timing at which the data alignment unit 103 receives the read data from the memory 105 (S503). Specifically, the data collision control unit 111 buffers read data from the memory 105. Subsequent operations are the same as those in the third embodiment.
- the memory control device including the following means in addition to the configuration shown in the second embodiment has been described.
- 100 memory controller 101 request request source, 102 ECC correction unit, 103 data alignment unit, 104 previous value holding unit, 105 memory, 106 memory address conversion unit, 108 wrapping burst read determination unit, 109 first data holding unit, 110 FIFO, 111 data collision control unit, 200 request request destination.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
通常は、付加したECC、パリティビット専用に幅方向にメモリ素子を追加する(水平ECC、水平パリティ)。
例えば×8ビット構成のメモリではなく、特殊な×9ビット構成のメモリを使用することが考えられる。
しかし、メモリ素子の追加や特殊メモリの採用は、コスト的に不利であったり、部品の入手性に難がある場合が多い。
その解決策の一つとして、ECCを幅方向ではなく深さ方向へECCを保存することで幅方向にメモリを増やす必要のない、垂直ECC、垂直パリティを採用することがある。
以下では、垂直ECCを例にして説明を進めるが、垂直パリティに対しても以下の説明は適用可能である。
図1では、1つのアドレスに、各々のデータ幅が1バイトのペイロードデータが4つ格納されている。
図1のメモリ構成において、垂直ECCにより、4バイトのペイロードデータにつき1バイトのECCを付加すると、図2に示すようなデータの配置となる。
ラッピングリードとは、キャッシュのリードフィル動作などでラインサイズ分リードする場合に、最初にアクセスが必要なアドレスを先頭にするとともに、先頭アドレスからアドレスを単調に増加させてラッピング境界に達すると低位アドレスへラップ・アラウンドしてデータを返送する方法である。
図1の例では、4つのアドレス(例えば、0000h番地、0004h番地、0008h番地、000Ch番地の4つのアドレス)ごとにラッピングリードの単位が区切られている。
図2の例では、5つのアドレス(例えば、0000h番地、0004h番地、0008h番地、000Ch番地、0010h番地の5つのアドレス)ごとにラッピングリードの単位が区切られている。
図2の例において、例えば、0004h番地を先頭アドレスにする場合は、0004h番地のデータ(ECC0~D6)、0008h番地のデータ(D7~D9)、000Ch番地のデータ(Da~Dc)、0010h番地のデータ(Dd~ECC3)が読み出される。
そして、0010h番地でラッピング境界に達するので、低位アドレスにラップ・アラウンドして、0000h番地のデータ(D0~D3)が読み出される。
0000h番地のデータ(D0~D3)のECCは、「ECC0」として0004h番地にあるので、再度、0004h番地のデータ(ECC0~D6)を読み出す必要がある。
メモリアクセスにはオーバーヘッドがある場合が多く(例えば、DRAM(Dynamic Random Access Memory)では同一バンクをACTするとアクセスできない期間が発生する)、第1データを2回リードすると、性能ロスが生じ、非効率である。
また、メモリアクセスごとに電力が消費されるため、第1データを2回リードすると、電力消費が多くなる。
各々に所定のデータ幅分のデータが格納されるn個のアドレスを有し、前記n個のアドレスが、ラッピングリードの単位であるm個のアドレスごとに区分され(mは2以上の整数、nはmの2以上の整数倍の整数)、対応関係にあるペイロードデータと誤り訂正データが、隣接する2つのアドレスにわたって格納され、アドレス単位でデータの読み出しが行われるメモリ
からのペイロードデータの読み出しを要求するリードリクエストを処理するリードリクエスト処理装置であって、
リードリクエストを入力するリードリクエスト入力部と、
前記リードリクエスト入力部により入力されたリードリクエストが、ラッピングリードのリクエストであるか否かを判定するリードリクエスト判定部と、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記n個のアドレスの中から、前記リードリクエストで要求されているペイロードデータが格納されているアドレスが含まれるm個のアドレスをラッピングリードの対象として抽出し、抽出したm個のアドレスの順序に基づいてm個のアドレスからのデータの読み出し順序を指定するとともに、各アドレスからのデータの読み出し回数を1回に限定するアドレス抽出部と、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により抽出されたm個のアドレスのうち先頭の読み出し順序が指定された先頭アドレスからデータが読み出された際に、前記先頭アドレスから読み出された先頭データを入力し、前記先頭データを記憶する先頭データ記憶部と、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により抽出されたm個のアドレスのうち最後尾の読み出し順序が指定された最後尾アドレスからデータが読み出された際に、前記最後尾アドレスから読み出された最後尾データを入力するとともに、前記先頭データ記憶部から前記先頭データを入力し、前記先頭データと前記最後尾データから、対応関係にあるペイロードデータと誤り訂正データを抽出するデータ抽出部とを有することを特徴とする。
図3は、実施の形態1に係るメモリ制御装置100とリクエスト要求元101とメモリ105とを示す。
本実施の形態では、ラッピングリードに対応する構成を説明するにあたって前提となる構成を説明する。
ラッピングリードに対応する構成は、実施の形態2で説明する。
以下では、リクエスト要求元101は、メモリ105からのペイロードデータの読み出しを要求するリードリクエストを発行する場合に限って説明を進める。
リクエスト要求元101は、例えば、CPU(Central Processing Unit)である。
なお、リクエスト要求元101では、例えば図1に示す形式で、ペイロードデータの配置を認識している。
また、リクエスト要求元101では、4つのアドレスごとにラッピングリードの単位を認識している。
メモリ105には、n個のアドレスが設定されている。
図2では、一例として、メモリ105に、20個のアドレスが設定されている(n=20)。
前述したように、図2では、垂直ECCにより、4バイトのペイロードデータにつき1バイトのECCが付加されている。
垂直ECCとは、前述したように、アドレスの深さ方向へECCを配置し、メモリのデータ幅を増やすことなくECC、パリティを実現する、ECCのメモリ配置方法である。
メモリ105からは、アドレス単位でデータの読み出しが行われる。
また、メモリ105のn個のアドレスが、ラッピングリードの単位であるm個のアドレスごとに区分されている(なお、mは2以上の整数であり、nはmの2以上の整数倍の整数である)。
図2では、一例として、5つのアドレスごとにラッピングリードの単位が設けられている(m=5)。
なお、メモリ105のラッピングリードの単位(例えば、0000h番地、0004h番地、0008h番地、000Ch番地、0010h番地)と、リクエスト要求元101のラッピングリードの単位(例えば、0000h番地、0004h番地、0008h番地、000Ch番地)には、同じペイロードデータ(D0~Df)が含まれている。
また、図2では、ペイロードデータに続けてECCを配置する順になっているが、これは一例であり、ECCの配置方法は、隣接する2つのアドレスにわたって対応関係にあるペイロードデータとECCが配置されていればよい。
例えば、「EEC0」がペイロードデータ「D0」の前に配置されていてもよい。
また、同じアドレスに割り当たったデータは拡張可能であり、例えば0000h番地にD0~D3、ECC0、D4~D6、次の0008h番地にD7、ECC1、D8~Db、ECC2、Dcと、データ幅を拡張しても良い。その場合においても、一部のペイロードデータとECCは隣接する2つのアドレスにわたって対応関係にあり続けるためである。
なお、メモリ105は、メモリ制御装置100の制御対象のメモリである。
メモリ制御装置100の各構成要素は、例えば素子、デバイス、回路といったハードウェアである。
メモリ制御装置100の各構成要素は、例えば、チップセット内の半導体回路群である。
また、例えば、メモリアドレス変換部106、データ整列部103及びECC訂正部102は、プログラムを用いて実現されていてもよい。
なお、メモリ制御装置100は、リードリクエスト処理装置の例に相当する。
また、メモリアドレス変換部106は、受信したリードリクエストのアドレスを垂直ECCを配置したメモリ105上のアドレスへ変換する。
つまり、メモリアドレス変換部106は、リクエスト要求元101からのリードリクエストで要求されているペイロードデータと当該ペイロードデータと対応関係にあるECCが格納されているp個(pは2以上であってn以下の整数である)のアドレスを読み出しの対象として抽出する。
メモリアドレス変換部106は、リードリクエスト入力部とアドレス抽出部の例に相当する。
つまり、前回値保持部104は、メモリアドレス変換部106によって指定された各アドレスから4バイトのデータが読み出される度に、読み出された4バイトのデータを入力し、入力したデータを前回値(過去データ)として記憶する。
前回値保持部104は、過去データ記憶部の例に相当する。
つまり、データ整列部103は、メモリアドレス変換部106によって指定された各アドレスから4バイトのデータが読み出される度に、読み出された4バイトのデータを入力する。
また、データ整列部103は、入力した4バイトのデータの1つ前に読み出された4バイトのデータ(前回値)を前回値保持部104から入力し、メモリ105からのデータと前回値であるデータから、対応関係にあるペイロードデータとECCとを抽出する。
データ整列部103は、データ抽出部の例に相当する。
つまり、ECC訂正部102は、データ整列部103により抽出されたECCを用いて、対応関係にあるペイロードデータの誤り訂正処理を行い、誤り訂正処理後のペイロードデータを、リクエスト要求元101に出力する。
ECC訂正部102は、誤り訂正処理部の例に相当する。
図4では、図示を省略しているが、リクエスト要求先200は、メモリ105に接続しており、メモリ105のデータの読み出しを行って、読み出したデータをメモリ制御装置100に出力する。
ここでは、リクエスト要求元101が、図1の0000h番地の4バイト(D0~D3)のリードを要求する場合を説明する。
メモリアドレス変換部106は、4バイトのデータ(D0~D3)とそれに対応するECC(ECC0)を含むメモリ105上の領域を計算する。
図2を参照すると、上記データは0000h番地と、0004h番地に跨って配置されているため、メモリアドレス変換部106は、0000h番地から8バイトをリードするリクエストに変換する(S202)。
そして、メモリアドレス変換部106は、0000h番地のデータ(D0~D3)、0004h番地のデータ(ECC0~D6)の順序での読み出しをメモリ105に指示する。
メモリ105は、0000h番地のデータ(D0~D3)と0004h番地のデータ(ECC0~D6)を順に返す。
前回値保持部104は、0000h番地のデータ(D0~D3)を受信し、受信した0000h番地のデータ(D0~D3)を保持する(S203)。
データ整列部103も0000h番地のデータ(D0~D3)を受信するが、0000h番地のデータだけではデータ整列ができないので(S204でNO)、0004h番地のデータ受信を待つ。
つまり、データ整列部103は、0000h番地のデータ(D0~D3)と、0004h番地のデータ(ECC0~D6)から、対応関係にあるペイロードデータ(D0~D3)とECC(ECC0)を抽出できると判断する。
次に、データ整列部103は、ペイロードデータ部分D0~D3と対応するECC0を切り出し、データを整列させる(S205)。
以上でリードリクエストで要求されたデータを全て返送し終えたので処理が完了する(S207)。
(a)リクエスト要求元からのリクエストを、メモリのリクエストに変換し、データの橋渡しをする手段
(b)データのECCエラー訂正をする手段
(c)垂直ECCを採用したメモリからの受信データを、ECCエラー訂正をすることができるデータ(データと対応するECCに分離したもの)に再配置する手段
(d)リクエスト要求元からのアドレスとレングスを、垂直ECCを採用したメモリへアドレスとレングスに変換する手段
(e)メモリから受信した前回のデータを保持するための手段。
本実施の形態では、垂直ECCを採用したメモリにラッピングリードを行う際に、第1データを2回リードすることを回避する構成を説明する。
より具体的には、本実施の形態に係るメモリ制御装置100は、第1データを保持しておくバッファを備え、第1データのリードを1回で済ませる。
本実施の形態に係るメモリ制御装置100によれば、有限なメモリ帯域を効率的に利用することができ、メモリアクセスにおける電力消費を抑制することができる。
更に、本実施の形態に係るメモリ制御装置100は、メモリアクセスの高速化に寄与することができる。
例えば、図1の0004h番地から16バイトをラッピングリードする場合、メモリ制御装置100は、リクエスト要求元101に、0004h→0008h→000Ch→0000h番地の順で計16バイトのリードデータを返送することになる。
このリード動作を図2に示す垂直ECCを付加したメモリ配置で行うと、0004h→0008h→000Ch→0010h→0000h→0004h番地の順で計24バイトのリードデータをメモリからリードすることになり、0004h番地に対して2回リードが発生している。
つまり、図2のメモリ配置では、0000h番地のペイロードデータ「D0~D3」のECCである「ECC0」を0004h番地からリードする必要があるため、第1データ(0004h番地のデータ)を再度読み出す必要がある。
図6のメモリ制御装置100は、図3に示した構成に、ラッピングバーストリード判定部108と第1データ保持部109が追加されている。
ラッピングバーストリード判定部108は、リードリクエスト入力部とリードリクエスト判定部の例に相当する。
つまり、第1データ保持部109は、ラッピングバーストリード判定部108によりリードリクエストがラッピングバーストのリードリクエストであると判定された場合に、先頭の読み出し順序である先頭アドレス(上記の例では、0004h番地)からデータが読み出された際に、先頭アドレスから読み出された先頭データを入力し、先頭データを記憶する。
第1データ保持部109は、先頭データ記憶部の例に相当する。
また、メモリアドレス変換部106は、抽出した5個のアドレスの順序に基づいて5個のアドレスからのデータの読み出し順序を指定するとともに、各アドレスからのデータの読み出し回数を1回に限定する。
例えば、図1の0004h番地(D4~D7)を先頭のアドレスとするラッピングリードのリードリクエストが発行された場合を想定する。
メモリアドレス変換部106は、図2においてペイロードデータ「D4~D7」が含まれる0004h番地と0008h番地を含む5個のアドレス(0004h番地、0008h番地、000Ch番地、0000h番地)をラッピングリードの対象として抽出する。
そして、メモリアドレス変換部106は、データ読み出し順序を0004h→0008h→000Ch→0000hと指定する。
このように、本実施の形態に係るメモリアドレス変換部106は、各アドレスからのデータの読み出し回数を1回に限定するので、第1データである0004h番地のデータが2回読み出されることがない。
なお、通常のリードリクエストが受信された場合のメモリアドレス変換部106の動作は実施の形態1に示した通りである。
ここでは、リクエスト要求元101が、図1の0004h番地(D4~D7)を先頭のアドレスとするラッピングリードを要求する場合を説明する。
また、図8は、メモリ制御装置100の各部で、どのようにデータを処理するかを説明している。
ラッピングバーストリード判定部108は、リードリクエストがラッピングバーストリードのリクエストであるか否かを判定する(S301)。
ラッピングバーストリードのリクエストである場合(S301でYES)は、ラッピングバーストリード判定部108は、リードリクエストをメモリアドレス変換部106に出力し、メモリアドレス変換部106がラッピングバーストリードのメモリアドレスに変換する(S302)。
図2を参照すると、上記データは0004h番地から0010h番地と0000h番地に配置されているので、0004h番地から16バイト、0000h番地から4バイトをリードするリクエストに変換する(S302)。
そして、メモリアドレス変換部106は、0004h→0008h→000Ch→0000hの順で、メモリ105にデータの読み出しを指示する。
メモリ105は、0004h番地のデータ(ECC0~D6)から順に返す。
第1データ保持部109は、先頭のデータである0004h番地のデータ(ECC0~D6)(図8の第1データA)を受信し、受信した0004h番地のデータを第1データ(図8の第1データE)として保持する(S303)。
データ整列部103も0004h番地のデータ(ECC0~D6)(図8の第1データA)を受信するが、0004h番地のデータだけではデータ整列ができないので(S305でNO)、0008h番地のデータ受信を待つ。
また、このとき、前回値保持部104も、0004h番地のデータ(ECC0~D6)(図8の第1データA)を受信し、受信した0004h番地のデータを前回値(図8の第1データB)として保持する(S203)。
なお、0000h番地のデータを受信するまでの動作は、実施の形態1と同様である。
データ整列部103は、図8に示すように、受信した0008h番地のデータ(第2データA)と前回値(第1データB)から、「D4~D7」と「ECC1」を抽出して、第1データCを生成する(S305、S205)。
そして、ECC訂正部102がECC訂正を行い、第1データDをリクエスト要求元101に送信する(S206)。
なお、この時点では、全てのリードデータが返送されていないので、S207はNOとなる。
データ整列部103は、図8に示すように、受信した000Ch番地のデータ(第3データA)と前回値(第2データB)から、「D8~Db」と「ECC2」を抽出して、第2データCを生成する(S305、S205)。
そして、ECC訂正部102がECC訂正を行い、第2データDをリクエスト要求元101に送信する(S206)。
なお、この時点では、全てのリードデータが返送されていないので、S207はNOとなる。
データ整列部103は、図8に示すように、受信した0010h番地のデータ(第4データA)と前回値(第3データB)から、「Dc~Df」と「ECC3」を抽出して、第3データCを生成する(S305、S205)。
そして、ECC訂正部102がECC訂正を行い、第3データDをリクエスト要求元101に送信する(S206)。
なお、この時点では、全てのリードデータが返送されていないので、S207はNOとなる。
データ整列部103は0000h番地のデータ(D0~D3)(図8の第5データA)を受信するが、0010h番地のデータ(第4データB)とではデータ整列ができないので(S305でNO)、0000h番地のデータ(第5データB)を待つ。
データ整列部103は、図8に示すように、受信した0000h番地のデータ(第5データB)と第1データ保持部109内の第1データ(第1データE)から、「D0~D3」と「ECC0」を抽出して、第4データCを生成する(S305、S205)。
そして、ECC訂正部102がECC訂正を行い、第4データDをリクエスト要求元101に送信する(S206)。
この時点で、全てのリードデータが返送されたので、S207はYESとなる。
(a)リクエスト要求元からのリクエストによる、最初の受信データを保持する手段
(b)ラッピングリードを判定する手段。
実施の形態1では、リクエスト要求元101からのリードリクエストを1つ受け付け、そのリードデータを返送し終えるまで、次のリードリクエストを受け付けることができない。
例えばDRAMでは、リードリクエストを発行してから、リードデータが返ってくるまでの期間(リードレイテンシ)は長いが、リードリクエストを発行したリードデータが返ってくる前に、次のリードリクエストを連続して発行することができる。
スループットを向上させるには、このパイプライン処理は不可欠である。
図9に示すメモリ制御装置100では、図3に示す構成にFIFO(First-In First-Out)110を追加している。
FIFO110は、メモリ105に発行したリクエストを記憶しておき、メモリ105からリードデータが返ってきたタイミングでデータ整列部103にその情報を渡す。
次に、メモリアドレスに変換したコマンド情報をFIFO110で保持する(S401)。
ECC訂正をしたリードデータの返送が完了する前に、リクエスト要求元101から新たなリードリクエストを受け付ける場合は、連続してFIFO110でコマンド情報を保持する。
ここで、FIFO110にはコマンド情報が保持されており空でないため(S402でYES)、データ整列部103及び前回値保持部104は、メモリ105からのリードデータを受け付ける(S203)。
ECC訂正をしたリードデータの返送が完了した後、FIFO110にコマンド情報が存在する場合(S402でYES)は、データ整列部103及び前回値保持部104は、次のリクエストに対するリードデータをメモリ105から受け付ける(S203)。
FIFO110にコマンド情報が存在しない場合(S402でNO)には、リクエストのデータを全て返送し終えたので処理が完了する(S207)。
実施の形態2で説明した構成においても、実施の形態3と同様にパイプライン処理が可能である。
しかし、図6に示す構成に単純にFIFO110を追加しただけでは、不都合が生じる。
ラッピングリードの次のリードリクエストに対してパイプライン処理により連続してメモリリードが行われると、ラッピングリードの最後尾のアドレスのデータがメモリ105からデータ整列部103に出力された直後に、次のリードリクエストに対して読み出されたデータがメモリ105からデータ整列部103に出力される場合がある。
ラッピングリードでは、最後尾のアドレスのデータがメモリ105からデータ整列部103に出力された後に、第1データ保持部109からの第1データと前回値保持部104に格納された最後尾のアドレスのデータとを用いたデータ整列がデータ整列部103で行われる。
このデータ整列が完了する前に、次のリードリクエストに対してメモリ105から読み出されたデータがデータ整列部103に入力されると、データ整列部103においてデータの衝突が生じる。
このため、本実施の形態では、図6に示す構成に、FIFO110と、データの衝突を制御する手段を設けて、パイプライン処理を実現する。
図9に示すメモリ制御装置100では、図6に示す構成にFIFO110と、データ衝突制御部111を追加している。
データ衝突制御部111は、データ整列部103が第1データ保持部109からの第1データを利用するタイミングで、後続するリードリクエストに対してメモリ105から読み出されたデータがデータ整列部103に入力されないようにする。
つまり、データ衝突制御部111は、データ整列部103が第1データ保持部109からの第1データを入力し、第1データと最後尾のアドレスのデータから、対応関係にあるペイロードデータとECCを抽出した後に、後続するリードリクエストに対してメモリ105から読み出されたデータがデータ整列部103に入力されるように、メモリ105から読み出されたデータのタイミング制御を行う。
例えば、図11に示すように、データ衝突制御部111をメモリ105とデータ整列部103との間に配置し、データ衝突制御部111が後続するリードリクエストに対してメモリ105から読み出されたデータをバッファリングして、衝突制御することが考えられる。
また、図13に示すように、データ衝突制御部111をメモリ105とメモリアドレス変換部106との間に配置し、データ衝突制御部111がラッピングリードに後続するリードリクエストのメモリ105へのリクエスト発行間隔を空けることで衝突制御することが考えられる。
なお、図12は、図11の構成における動作例を示している。
FIFO110に保持されている先頭のコマンド情報がラッピングリードのコマンド情報でない場合(S501でNO)の処理は、実施の形態3と同様である。
FIFO110に保持されている先頭のコマンド情報がラッピングリードのコマンド情報である場合は(S501でYES)、データ整列部103が第1データを使ってデータ整列をする処理までは実施の形態2と同様である。
次に、データ衝突制御部111が、データ整列部103が第1データを使ったデータ整列を完了するまでにメモリ105から読み出されたデータが受信されているか否かを判断する(S502)。
データ整列を完了するまでにメモリ105からのデータ受信があった場合(S502でYES)は、データ衝突制御部111は、データ整列部103がメモリ105からのリードデータを受信するタイミングを遅らせる(S503)。
具体的には、データ衝突制御部111は、メモリ105からのリードデータをバッファリングする。
以降の動作は、実施の形態3と同様である。
(a)リクエスト要求元からのリクエストを蓄える手段
(b)実施の形態2に記載の最初の受信データと、メモリからの受信データの、衝突制御を実現する手段。
Claims (13)
- 各々に所定のデータ幅分のデータが格納されるn個のアドレスを有し、前記n個のアドレスが、ラッピングリードの単位であるm個のアドレスごとに区分され(mは2以上の整数、nはmの2以上の整数倍の整数)、対応関係にあるペイロードデータと誤り訂正データが、隣接する2つのアドレスにわたって格納され、アドレス単位でデータの読み出しが行われるメモリ
からのペイロードデータの読み出しを要求するリードリクエストを処理するリードリクエスト処理装置であって、
リードリクエストを入力するリードリクエスト入力部と、
前記リードリクエスト入力部により入力されたリードリクエストが、ラッピングリードのリクエストであるか否かを判定するリードリクエスト判定部と、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記n個のアドレスの中から、前記リードリクエストで要求されているペイロードデータが格納されているアドレスが含まれるm個のアドレスをラッピングリードの対象として抽出し、抽出したm個のアドレスの順序に基づいてm個のアドレスからのデータの読み出し順序を指定するとともに、各アドレスからのデータの読み出し回数を1回に限定するアドレス抽出部と、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により抽出されたm個のアドレスのうち先頭の読み出し順序が指定された先頭アドレスからデータが読み出された際に、前記先頭アドレスから読み出された先頭データを入力し、前記先頭データを記憶する先頭データ記憶部と、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により抽出されたm個のアドレスのうち最後尾の読み出し順序が指定された最後尾アドレスからデータが読み出された際に、前記最後尾アドレスから読み出された最後尾データを入力するとともに、前記先頭データ記憶部から前記先頭データを入力し、前記先頭データと前記最後尾データから、対応関係にあるペイロードデータと誤り訂正データを抽出するデータ抽出部とを有することを特徴とするリードリクエスト処理装置。 - 前記リードリクエスト処理装置は、更に、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により指定された読み出し順序に従って前記m個のアドレスの各アドレスからデータが読み出される度に、読み出されたデータを入力し、入力したデータを過去データとして記憶する過去データ記憶部を有し、
前記データ抽出部は、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記最後尾アドレスからデータが読み出されるまでは、前記アドレス抽出部により指定された読み出し順序に従って前記m個のアドレスの各アドレスからデータが読み出される度に、読み出されたデータを入力するとともに、入力した入力データの1つ前に読み出された過去データを前記過去データ記憶部から入力し、前記入力データと前記過去データから、対応関係にあるペイロードデータと誤り訂正データとを抽出することを特徴とする請求項1に記載のリードリクエスト処理装置。 - 前記リードリクエスト処理装置は、更に、
前記データ抽出部により抽出された誤り訂正データを用いて、対応関係にあるペイロードデータの誤り訂正処理を行い、誤り訂正処理後のペイロードデータを、前記リードリクエストの出力元に出力する誤り訂正処理部を有することを特徴とする請求項1又は2に記載のリードリクエスト処理装置。 - 前記アドレス抽出部は、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、
前記リードリクエストで要求されているペイロードデータが格納されているアドレスである要求先アドレスに、先頭の読み出し順序を指定し、
前記要求先アドレスの1つ前のアドレスに、最後尾の読み出し順序を指定することを特徴とする請求項1~3のいずれかに記載のリードリクエスト処理装置。 - 前記リードリクエスト判定部、前記アドレス抽出部、前記先頭データ記憶部及び前記データ抽出部は、
複数のリードリクエストをパイプライン処理することを特徴とする請求項1~4のいずれかに記載のリクエスト処理装置。 - 前記リードリクエスト処理装置は、更に、
前記データ抽出部が前記先頭データ記憶部から前記先頭データを入力し、前記先頭データと前記最後尾データから、対応関係にあるペイロードデータと誤り訂正データを抽出した後に、ラッピングリードのリクエストに後続するリードリクエストに対して前記メモリから読み出されたデータが前記データ抽出部に入力されるように、前記メモリから読み出されたデータのタイミング制御を行うデータ衝突制御部を有することを特徴とする請求項5に記載のリクエスト処理装置。 - 各々に所定のデータ幅分のデータが格納されるn個のアドレスを有し(nは2以上の整数)、対応関係にあるペイロードデータと誤り訂正データが、隣接する2つのアドレスにわたって格納され、アドレス単位でデータの読み出しが行われるメモリ
からのペイロードデータの読み出しを要求するリードリクエストを処理するリードリクエスト処理装置であって、
リードリクエストを入力するリードリクエスト入力部と、
前記n個のアドレスの中から、前記リードリクエスト入力部により入力されたリードリクエストで要求されているペイロードデータと当該ペイロードデータと対応関係にある誤り訂正データが格納されているp個(pは2以上であってn以下の整数)のアドレスを読み出しの対象として抽出し、抽出したp個のアドレスの順序に基づいてp個のアドレスからのデータの読み出し順序を指定するアドレス抽出部と、
前記アドレス抽出部により指定された読み出し順序に従って前記p個のアドレスの各アドレスからデータが読み出される度に、読み出されたデータを入力し、入力したデータを過去データとして記憶する過去データ記憶部と、
前記アドレス抽出部により指定された読み出し順序に従って前記p個のアドレスの各アドレスからデータが読み出される度に、読み出されたデータを入力するとともに、入力した入力データの1つ前に読み出された過去データを前記過去データ記憶部から入力し、前記入力データと前記過去データから、対応関係にあるペイロードデータと誤り訂正データとを抽出するデータ抽出部とを有することを特徴とするリードリクエスト処理装置。 - 前記リードリクエスト処理装置は、
前記n個のアドレスがラッピングリードの単位であるm個のアドレスごとに区分されている(mは2以上の整数、nはmの2以上の整数倍の整数)メモリ
からのペイロードデータの読み出しを要求するリードリクエストを処理し、
前記リードリクエスト処理装置は、更に、
前記リードリクエスト入力部により入力されたリードリクエストが、ラッピングリードのリクエストであるか否かを判定するリードリクエスト判定部を有し、
前記アドレス抽出部は、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記n個のアドレスの中から、前記リードリクエストで要求されているペイロードデータが格納されているアドレスが含まれるm個のアドレスをラッピングリードの対象として抽出し、抽出したm個のアドレスの順序に基づいてm個のアドレスからのデータの読み出し順序を指定するとともに、各アドレスからのデータの読み出し回数を1回に限定し、
前記リードリクエスト処理装置は、更に、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により抽出されたm個のアドレスのうち先頭の読み出し順序が指定された先頭アドレスからデータが読み出された際に、前記先頭アドレスから読み出された先頭データを入力し、前記先頭データを記憶する先頭データ記憶部を有し、
前記データ抽出部は、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により抽出されたm個のアドレスのうち最後尾の読み出し順序が指定された最後尾アドレスからデータが読み出された際に、前記最後尾アドレスから読み出された最後尾データを入力するとともに、前記先頭データ記憶部から前記先頭データを入力し、前記先頭データと前記最後尾データから、対応関係にあるペイロードデータと誤り訂正データを抽出することを特徴とする請求項7に記載のリードリクエスト処理装置。 - 前記過去データ記憶部は、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記アドレス抽出部により指定された読み出し順序に従って前記m個のアドレスの各アドレスからデータが読み出される度に、読み出されたデータを入力し、入力したデータを過去データとして記憶し、
前記データ抽出部は、
前記リードリクエスト判定部により前記リードリクエストがラッピングリードのリクエストであると判定された場合に、前記最後尾アドレスからデータが読み出されるまでは、前記アドレス抽出部により指定された読み出し順序に従って前記m個のアドレスの各アドレスからデータが読み出される度に、読み出されたデータを入力するとともに、入力した入力データの1つ前に読み出された過去データを前記過去データ記憶部から入力し、前記入力データと前記過去データから、対応関係にあるペイロードデータと誤り訂正データとを抽出することを特徴とする請求項8に記載のリードリクエスト処理装置。 - 前記リードリクエスト処理装置は、更に、
前記データ抽出部により抽出された誤り訂正データを用いて、対応関係にあるペイロードデータの誤り訂正処理を行い、誤り訂正処理後のペイロードデータを、前記リードリクエストの出力元に出力する誤り訂正処理部を有することを特徴とする請求項7~9のいずれかに記載のリードリクエスト処理装置。 - 前記アドレス抽出部、前記過去データ記憶部及び前記データ抽出部は、
複数のリードリクエストをパイプライン処理することを特徴とする請求項7に記載のリクエスト処理装置。 - 前記リードリクエスト判定部、前記アドレス抽出部、前記過去データ記憶部、前記先頭データ記憶部及び前記データ抽出部は、
複数のリードリクエストをパイプライン処理することを特徴とする請求項8に記載のリクエスト処理装置。 - 前記リードリクエスト処理装置は、更に、
前記データ抽出部が前記先頭データ記憶部から前記先頭データを入力し、前記先頭データと前記最後尾データから、対応関係にあるペイロードデータと誤り訂正データを抽出した後に、ラッピングリードのリクエストに後続するリードリクエストに対して前記メモリから読み出されたデータが前記データ抽出部に入力されるように、前記メモリから読み出されたデータのタイミング制御を行うデータ衝突制御部を有することを特徴とする請求項12に記載のリクエスト処理装置。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014522301A JP5623677B2 (ja) | 2012-06-28 | 2012-06-28 | リードリクエスト処理装置 |
PCT/JP2012/066494 WO2014002222A1 (ja) | 2012-06-28 | 2012-06-28 | リードリクエスト処理装置 |
CN201280074337.6A CN104471549B (zh) | 2012-06-28 | 2012-06-28 | 读取请求处理装置 |
DE112012006587.5T DE112012006587T5 (de) | 2012-06-28 | 2012-06-28 | Leseanforderungs-Verarbeitungsvorrichtung |
US14/388,049 US9465691B2 (en) | 2012-06-28 | 2012-06-28 | Read request processing apparatus |
TW101125663A TWI492237B (zh) | 2012-06-28 | 2012-07-17 | Read request processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/066494 WO2014002222A1 (ja) | 2012-06-28 | 2012-06-28 | リードリクエスト処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2014002222A1 true WO2014002222A1 (ja) | 2014-01-03 |
Family
ID=49782453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2012/066494 WO2014002222A1 (ja) | 2012-06-28 | 2012-06-28 | リードリクエスト処理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9465691B2 (ja) |
JP (1) | JP5623677B2 (ja) |
CN (1) | CN104471549B (ja) |
DE (1) | DE112012006587T5 (ja) |
TW (1) | TWI492237B (ja) |
WO (1) | WO2014002222A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866432A (zh) * | 2014-02-24 | 2015-08-26 | 斯班逊有限公司 | 具有绕回-至-连续读取的存储器子系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715427B2 (en) | 2012-11-05 | 2017-07-25 | Mitsubishi Electric Corporation | Memory control apparatus |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06119255A (ja) * | 1992-10-02 | 1994-04-28 | Oki Electric Ind Co Ltd | データ記憶装置 |
JPH06282449A (ja) * | 1993-03-29 | 1994-10-07 | Nec Corp | メモリコントローラ |
JP2003050748A (ja) * | 2001-08-03 | 2003-02-21 | Nec Corp | バッファメモリ回路 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223264B1 (en) * | 1991-10-24 | 2001-04-24 | Texas Instruments Incorporated | Synchronous dynamic random access memory and data processing system using an address select signal |
US5265218A (en) * | 1992-05-19 | 1993-11-23 | Sun Microsystems, Inc. | Bus architecture for integrated data and video memory |
US5608896A (en) * | 1992-05-28 | 1997-03-04 | Texas Instruments Incorporated | Time skewing arrangement for operating memory devices in synchronism with a data processor |
US5574880A (en) * | 1994-03-11 | 1996-11-12 | Intel Corporation | Mechanism for performing wrap-around reads during split-wordline reads |
JP3643601B2 (ja) | 1996-07-03 | 2005-04-27 | 株式会社日立製作所 | 情報処理装置 |
JPH1198462A (ja) | 1997-09-19 | 1999-04-09 | Hitachi Ltd | データ再生装置 |
JP4234863B2 (ja) * | 1998-12-11 | 2009-03-04 | 株式会社アドバンテスト | フェイル情報取り込み装置、半導体メモリ試験装置及び半導体メモリ解析方法 |
JP2004038705A (ja) | 2002-07-05 | 2004-02-05 | Toshiba Corp | メモリ制御装置およびメモリアクセス方法 |
US7899957B1 (en) * | 2003-12-30 | 2011-03-01 | Altera Corporation | Memory controller having a buffer for providing beginning and end data |
ITMI20041910A1 (it) * | 2004-10-08 | 2005-01-08 | Atmel Corp | Architettura di decodifica a colonne migliorata per memorie flash |
ITMI20050063A1 (it) * | 2005-01-20 | 2006-07-21 | Atmel Corp | Metodo e sistema per la gestione di una richiesta di sospensione in una memoria flash |
US7307635B1 (en) * | 2005-02-02 | 2007-12-11 | Neomagic Corp. | Display rotation using a small line buffer and optimized memory access |
US7376762B2 (en) * | 2005-10-31 | 2008-05-20 | Sigmatel, Inc. | Systems and methods for direct memory access |
JP4912718B2 (ja) * | 2006-03-30 | 2012-04-11 | 富士通セミコンダクター株式会社 | ダイナミック型半導体メモリ |
JP2008059565A (ja) | 2006-08-01 | 2008-03-13 | Nec Electronics Corp | バーストメモリアクセスを制御するメモリインターフェース装置及びその制御方法 |
US20080034132A1 (en) | 2006-08-01 | 2008-02-07 | Nec Electronics Corporation | Memory interface for controlling burst memory access, and method for controlling the same |
CN102508635B (zh) * | 2011-10-19 | 2014-10-08 | 中国科学院声学研究所 | 一种处理器装置及其循环处理方法 |
-
2012
- 2012-06-28 US US14/388,049 patent/US9465691B2/en not_active Expired - Fee Related
- 2012-06-28 DE DE112012006587.5T patent/DE112012006587T5/de not_active Withdrawn
- 2012-06-28 WO PCT/JP2012/066494 patent/WO2014002222A1/ja active Application Filing
- 2012-06-28 JP JP2014522301A patent/JP5623677B2/ja not_active Expired - Fee Related
- 2012-06-28 CN CN201280074337.6A patent/CN104471549B/zh active Active
- 2012-07-17 TW TW101125663A patent/TWI492237B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06119255A (ja) * | 1992-10-02 | 1994-04-28 | Oki Electric Ind Co Ltd | データ記憶装置 |
JPH06282449A (ja) * | 1993-03-29 | 1994-10-07 | Nec Corp | メモリコントローラ |
JP2003050748A (ja) * | 2001-08-03 | 2003-02-21 | Nec Corp | バッファメモリ回路 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866432A (zh) * | 2014-02-24 | 2015-08-26 | 斯班逊有限公司 | 具有绕回-至-连续读取的存储器子系统 |
KR20150100565A (ko) * | 2014-02-24 | 2015-09-02 | 스펜션 엘엘씨 | 랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템 |
US10331359B2 (en) | 2014-02-24 | 2019-06-25 | Cypress Semiconductor Corporation | Memory subsystem with wrapped-to-continuous read |
KR102180975B1 (ko) * | 2014-02-24 | 2020-11-19 | 사이프레스 세미컨덕터 코포레이션 | 랩핑된 판독 대 연속적인 판독을 갖는 메모리 서브 시스템 |
Also Published As
Publication number | Publication date |
---|---|
TW201401289A (zh) | 2014-01-01 |
US9465691B2 (en) | 2016-10-11 |
CN104471549B (zh) | 2017-06-16 |
CN104471549A (zh) | 2015-03-25 |
DE112012006587T5 (de) | 2015-04-02 |
TWI492237B (zh) | 2015-07-11 |
JP5623677B2 (ja) | 2014-11-12 |
JPWO2014002222A1 (ja) | 2016-05-26 |
US20150046773A1 (en) | 2015-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4936506B2 (ja) | メモリ制御回路及びメモリ制御方法 | |
CN110265071B (zh) | 具有内部读取-修改-写入操作的存储部件 | |
US10990322B2 (en) | Memory buffer chip, memory system and method of controlling the memory buffer chip | |
JP6287571B2 (ja) | 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 | |
US20170160952A1 (en) | Memory controller, memory system, and information processing system | |
US8856479B2 (en) | Implementing storage adapter performance optimization with hardware operations completion coalescence | |
US7698475B2 (en) | DMA transfer control apparatus for performing direct memory access transfer from a transfer source to a transfer destination | |
CN110781107B (zh) | 基于dram接口的低延迟融合io控制方法和装置 | |
JP6785629B2 (ja) | 通信メカニズムを含むコンピューティングシステム及びその動作方法 | |
JP5623677B2 (ja) | リードリクエスト処理装置 | |
JP4855864B2 (ja) | ダイレクトメモリアクセスコントローラ | |
CN116685943A (zh) | 可编程原子单元中的自调度线程 | |
US9715427B2 (en) | Memory control apparatus | |
KR20120110450A (ko) | 에러 정정 디코더 및 그것의 에러 정정 방법 | |
US20190391840A1 (en) | Memory module | |
JP5982148B2 (ja) | 半導体記憶装置 | |
US10719440B2 (en) | Semiconductor device and memory access method | |
JP2007140858A (ja) | メモリアクセス方法及びメモリアクセス装置 | |
JP2012137944A (ja) | メモリアクセス装置 | |
JP5803000B2 (ja) | Dma装置、情報処理装置、及びデータ転送方法 | |
US20160004655A1 (en) | Computing system and operating method of the same | |
US8533565B2 (en) | Cache controller and cache controlling method | |
JP5852090B2 (ja) | 命令処理装置およびその命令処理方法 | |
US20090248919A1 (en) | Method for external fifo acceleration | |
JP2019200592A (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: 12879649 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2014522301 Country of ref document: JP Kind code of ref document: A |
|
WWE | Wipo information: entry into national phase |
Ref document number: 14388049 Country of ref document: US |
|
WWE | Wipo information: entry into national phase |
Ref document number: 112012006587 Country of ref document: DE Ref document number: 1120120065875 Country of ref document: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12879649 Country of ref document: EP Kind code of ref document: A1 |