WO2017206000A1 - 内存访问方法及内存控制器 - Google Patents

内存访问方法及内存控制器 Download PDF

Info

Publication number
WO2017206000A1
WO2017206000A1 PCT/CN2016/083783 CN2016083783W WO2017206000A1 WO 2017206000 A1 WO2017206000 A1 WO 2017206000A1 CN 2016083783 W CN2016083783 W CN 2016083783W WO 2017206000 A1 WO2017206000 A1 WO 2017206000A1
Authority
WO
WIPO (PCT)
Prior art keywords
access
memory
address
memory controller
bank group
Prior art date
Application number
PCT/CN2016/083783
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 PCT/CN2016/083783 priority Critical patent/WO2017206000A1/zh
Priority to CN201680058616.1A priority patent/CN108139994B/zh
Publication of WO2017206000A1 publication Critical patent/WO2017206000A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Definitions

  • the present invention relates to the field of computer technologies, and in particular, to a memory access method and a memory controller.
  • DDR4 double-rate synchronous dynamic random access memory (English: Double Data Rate, referred to as: DDR) bus has been developed to DDR4.
  • the equivalent frequency of the memory is This setting has also been greatly improved.
  • the inventors have found that in the sequence of memory access requests initiated by the processor to the memory controller in the conventional technology, usually the bank group addresses in all memory access requests are the same, which makes the memory controller generation in the conventional technology.
  • the bank group address of the memory access instruction is also the same, and since the memory controller of the standard setting has a long interval of accessing the same row address in the memory to the register of the memory, this requires memory access. It takes a long time, resulting in low memory read and write speed.
  • the present application provides a memory access method and a memory controller, which can shorten the access delay in the memory access process and improve the memory access efficiency.
  • the present application provides a memory access method for a computer system, the computer system including a memory controller and a memory, the memory including a control circuit and a plurality of registers.
  • the memory controller first determines a first access set in the access queue, the first access set includes a plurality of consecutive access requests, and the plurality of access requests in the first access set include The first bank group address and the first row address, it is necessary to explain the first row address Point to a row of registers in the memory.
  • the memory controller may determine the first access set as the BBBBB request sequence.
  • the memory controller modifies the first bank group address of the partial access request of the plurality of access requests in the determined first access set to the second bank group address; that is, if the access request bank in the first access set If the group address is BG0, you can select a random access method or select a partial access request according to the preset policy to change the bank group address to BG1. If the memory controller supports more bank groups, the memory controller can also access the partial access request.
  • the bank group address is modified to BG2 or BG3.
  • the second bank group address is only used to distinguish it from the first bank group address, and is not limited to a specific bank group address.
  • the memory controller generates a first access instruction and a second access instruction according to the first access request and the second access request in the modified first access set, where the first access request and the second access request are An adjacent access request in the first access set, the first access request and the first access instruction include a first bank group address, and the second access request and the second access instruction include There is a second bank group address.
  • the memory controller separately sends the first access instruction and the second access instruction to the memory according to a preset first time interval, where the first time interval is less than a standard setting and consecutive transmissions have the same bank group address. a time interval between two access instructions, the first access instruction is used to instruct the control circuit of the memory to access a first register to be accessed by the first access request, and the second access instruction is used to indicate the memory The control circuit accesses the second register to be accessed by the second access request.
  • the minimum value of the first time interval may be tCCD_S, that is, the delay of the column address to column address operation under the different bank group address, and the standard set memory controller continuously sends two addresses with the same bank group address.
  • the time interval for access instructions for the same row address is tCCD_L. Since tCCD_S (4 memory timings) ⁇ tCCD_L (6 memory timings), the value of the first time interval may be smaller than the standard interval of consecutively transmitting two access instructions having the same bank group address.
  • the memory controller performs the access request in the first access set.
  • the bank group address is modified, the number of access requests in the first access set may be determined to be not less than a preset threshold; and then the first bank of the plurality of access requests in the first access set is accessed.
  • the group address is modified to a second bank group address, so that the plurality of access requests in the modified first access set alternately use the first bank group address and the second bank group address.
  • the bank group addresses of the two adjacent access instructions are different.
  • the bank group address of the 2ith access instruction is BG0
  • the bank group address of the 2i+1th access instruction is BG1
  • i is a natural number.
  • the preset threshold is:
  • tRP is the precharge valid period
  • tRCD is the time required for the operation of the memory address address after the row address activation command is issued
  • tCCD_S is the delay of the column address to column address operation under the different bank group address
  • tCCD_L is the same bank group address The delay from the column address to the column address operation.
  • the present application provides yet another memory access method, the method being applied to a computer system, the computer system comprising a memory controller and a memory, the memory comprising a control circuit and a plurality of registers.
  • the memory controller first determines a first access set in the access queue, the first access set includes a plurality of consecutive access requests, and the plurality of access requests in the first access set Each includes a first bank group address and a first row address. It should be noted that the first row address is used to point to the first row register in the memory.
  • the memory controller may determine the first access set as the BBBBB request sequence.
  • the memory controller further determines a second access request in the access queue, the second access request being located in the access queue after the access request of the first access set and with the first access set
  • the access request is adjacent, the second access request includes the first bank group address and the second row address, the second row address is different from the first row address, and the second row address is used for Points to the second row of registers in the memory.
  • the access request C is different from the row address included in the access request B, but the bank group address is the same. Therefore, the memory controller can determine that the access request C is the second access request.
  • the row address contained in access request C is the second row address and is used to point to the second row register in memory.
  • the memory controller determines that the number of access requests in the first access set is less than a preset threshold, the first bank group address in the second access request is modified to a second bank group address.
  • the bank group address of the second access request C can be modified to BG1.
  • the memory controller sends the first activation instruction and the second activation instruction to the memory according to the second time interval, wherein the first activation instruction is generated according to the first access request in the first access set.
  • the first activation instruction includes the first bank group address and the first row address, and the first activation instruction is used to indicate a row address of the first register to be accessed by the first access request.
  • the second activation instruction is generated according to the second access request, where the second activation instruction includes the second bank group address and the second row address, and the second activation instruction is used for A row address indicating a second register to which the second access request is to be accessed.
  • the minimum value of the second time interval may be a row address delay tRRD. That is, after the first row address corresponding to the first access request is activated, the memory controller does not need to wait for all access requests in the first access set to complete access, and then activates the second activation corresponding to the second access request. Instead of the instruction, the second row address can be activated asynchronously in the second bank group in response to the first access instruction, thereby reducing latency and increasing memory access speed.
  • the preset threshold may be set as:
  • tRP is the precharge valid period
  • tRTP is the memory before the read command is issued to tRP.
  • Delay tRCD is the time required for the operation of the memory to the row address after the row address activation command is issued
  • tCCD_S is the delay of the column address to column address operation under the different bank group address
  • tCCD_L is the column address under the same bank group address The delay to the column address operation.
  • the memory controller determines the priority arrival in the first row address and the second row address. a row address of an idle state; when the memory controller determines that the first row address preferentially reaches an idle state, the memory controller sends the first activation instruction to the memory, after the second time interval The memory controller sends the second activation instruction to the memory.
  • the memory controller determines the priority arrival in the first row address and the second row address. a row address of an idle state; when the memory controller determines that the second row address preferentially reaches an idle state, the memory controller sends the second activation instruction to the memory, after the second time interval The memory controller sends the first activation instruction to the memory.
  • the memory controller when the memory controller separately sends the first activation instruction and the second activation instruction to the memory according to the second time interval, it may decide to preferentially send the first activation instruction or the second activation instruction, and the basis for the determination is The one of the row address and the second row address preferentially reaches the idle state. If the first row address reaches the idle state first, the memory controller preferentially sends the first activation instruction; when the second row address reaches the idle state first, the memory controller takes precedence. Send a second activation command. This can reduce the waiting time for the row address to become idle, thereby reducing the memory access time and increasing the memory access speed.
  • an embodiment of the present invention further provides a memory controller connected to a memory in a computer system, where the memory includes a control circuit and a plurality of registers.
  • the memory controller can be used to perform the memory access method provided by the first aspect above.
  • an embodiment of the present invention further provides another memory controller, where the memory controller is connected to a memory in a computer system, where the memory includes a control circuit and a plurality of registers.
  • the memory controller can be used to perform the memory access method provided by the second aspect above.
  • the same register content in the register space corresponds to at least one register address
  • the at least one register address is different only in the bank group address
  • the register address of the access request uses the first bank group address.
  • the memory controller sets the bank group address to the second bank group address by dynamically selecting an access request, so that the memory controller A memory access instruction carrying a different bank group address can be generated according to a memory access request that originally carries the same bank group address, so that some memory access instructions can access the memory asynchronously, improve the concurrent access of memory access, and utilize memory control.
  • the minimum interval tCCD_S of the memory access instruction for sending the different bank group address is smaller than the minimum interval tCCD_L of the memory access instruction for sending the same bank group address, thereby reducing the memory read and write delay and improving the read and write efficiency of the memory.
  • the present application provides a computer program product, comprising: a computer readable storage medium storing program code, the program code comprising instructions for executing any one of the memory access instructions described in the first aspect above Scheduling method.
  • the present application provides a computer program product, comprising: a computer readable storage medium storing program code, the program code comprising instructions for executing any one of the memory access instructions described in the second aspect above Scheduling method.
  • FIG. 1 is a hardware architecture diagram of a memory working environment according to an embodiment of the present invention.
  • FIG. 2 is a flowchart of a memory access method according to an embodiment of the present invention.
  • FIG. 3 is a schematic diagram of internal functions of a memory controller according to an embodiment of the present invention.
  • FIG. 4 is a schematic diagram of content of a same register in a multi-BG address mapping according to an embodiment of the present invention
  • FIG. 5 is a sequence diagram of a memory access process when a bank group address of an access request is not modified according to an embodiment of the present invention
  • FIG. 6 is a sequence diagram of memory access when a bank group address of an access request for accessing a same row address is modified by an interval according to an embodiment of the present invention
  • FIG. 7 is a flowchart of still another memory access method according to an embodiment of the present invention.
  • FIG. 8 is a sequence diagram of memory access when modifying adjacent bank group addresses accessing different row address access requests according to an embodiment of the present invention
  • FIG. 9 is a schematic diagram of multiple modification manners when selecting an access request to modify a bank group address in a request queue according to an embodiment of the present invention.
  • a memory access method is proposed. The method is applied to a computer system comprising a memory controller and a memory, the memory comprising a control circuit and a plurality of registers, the method being executable by a memory controller.
  • the memory controller is usually located inside the north bridge chip of the motherboard chipset, or integrated in the north bridge chip built in the CPU (Central Processing Unit) substrate.
  • NVM NonVolatile Memory
  • FLASH Flash EEPROM Memory
  • DIMM Dual In-line Memory Module
  • DDR4 standard memory interface
  • the CPU wants to exchange data with the memory, it needs to go through the CPU ⁇ memory controller (in the north bridge chip) ⁇ memory bus (such as DDR4 bus) ⁇ NVM/FLASH controller (register space of NVM/FALSH DIMM) ⁇ memory bus ⁇ memory controller ⁇ CPU data transfer process.
  • the CPU can access the memory controller by sending a memory access request to the memory space, where the access request carries the register address of the register contents in the register space to be accessed, and a register address includes a bank group address, a row address, a column address, and a bank address. , Rank address, etc.
  • the memory controller can generate a memory access instruction on the memory bus according to the register address of the memory access request and send it to the NVM/FLASH controller for reading and writing.
  • the embodiment of the present invention solves the problem of waste of access delay caused by accessing the memory access request with the same bank group address, and the technical problem of low memory read/write speed, and the CPU is modified in the memory controller.
  • the bank group address of the register address of the memory access request in the register space, so that the memory controller can send asynchronous memory access instructions to the memory The method of processing makes the delay of memory access greatly reduced.
  • the memory access method includes:
  • Step S102 The memory controller determines a first access set in the access queue, where the first access set includes a plurality of consecutive access requests, and the multiple access requests in the first access set include the first bank group address and the first A row of addresses, the first row of addresses is used to point to a row of registers in memory.
  • the processor CPU reads and writes to the memory by sending an access request to the memory controller's register space to the memory controller.
  • the process of the memory controller receiving the access request of the CPU and then generating the access instruction on the memory bus can be referred to FIG.
  • the memory controller receives an access request sent by the CPU through an interface with the CPU, and then caches it in the request queue, and then further stores the access request belonging to each bank.
  • the Bank Status Register stores the current status of each bank. Bank status includes READ/WRITE (read/write status), ACT (active status), PRECHARGE (precharge status), and IDLE (idle status).
  • the bank status register also stores the row address in the ACT (active) state. If a row in the bank is active, the currently active row address is recorded.
  • the access address generator generates access commands based on the order of access requests in the Bank queue and the register addresses carried, and then sends them to the NVM/FLASH DIMMs via a memory bus (eg, DDR4). It can be understood that, in practical applications, the memory controller can also cache the received memory access request without distinguishing the bank, that is, the Bank queue in FIG. 3 is not required.
  • the first access set is a subqueue in the request queue cached in the memory controller that accesses the same row address, for example, if the request sequence in the cached request queue is ABBBBBC, where A, B, and C respectively represents different row addresses, that is, respectively pointing to the A, B, and C row registers in the memory, then BBBBB is a first access set, and row address B is included in multiple access requests in the first access set.
  • the first row of addresses, and the bank group addresses of these memory access requests are the same.
  • the same register content in the register space corresponds to at least one register address, and at least one register address corresponding to the register content is different only in the bank group address.
  • the register address of the received access request uses the first bank group address.
  • the same register content can be accessed through two register addresses, that is, the first bank group address is used.
  • BG address register address and register address using the second BG address
  • these two addresses only need different BG addresses, but the bank address, the Rank address, the row address, and the column address need to be the same (that is, the same
  • the register contents are only related to the bank address, the Rank address, the row address, and the column address, and are independent of the BG address.
  • the register address corresponding to the same register content may be multiple, for example, more than two. Use different BG addresses respectively).
  • the first BG address or the first register address can be used for accessing the register address of the same register content.
  • the second BG address only the bank address, the Rank address, the row address, and the column address of the two register addresses are required to be the same.
  • the register address carried in the access request uses only the first BG address, as shown in FIG. 4, and only the BG0 address can be used, and the conventional The technology is consistent.
  • the embodiment of the present invention does not need to modify the computer program of the CPU to access the memory controller, and the CPU can still send an access request to the memory controller in a manner of accessing the memory controller in the conventional technology, and for some Some old-fashioned CPU programs may not support the bank group address. Therefore, the register address carried in the access request sent to the memory controller may only contain the bank address, the Rank address, the row address, and the column address, then the memory controller is When the access request is received and cached in the request queue, the default BG address can be automatically set to the first BG address.
  • Step S104 The memory controller modifies the first bank group address of the partial access request among the plurality of access requests in the first access set to the second bank group address.
  • the memory controller may select a partial access request, modify the BG address of the selected access request, and modify the default first BG address to the second. BG address. After the modification is completed, an access instruction on the memory bus can be generated according to the access request in the request queue.
  • Step S106 The memory controller generates a first access instruction and a second access instruction according to the first access request and the second access request in the modified first access set, where the first access request and the second access request are An access request in the access set, the first access request and the first access instruction include a first bank group address, and the second access request and the second access instruction include a second bank group address.
  • Step S108 The memory controller separately sends the first access instruction and the second access instruction to the memory according to the preset first time interval, and the first time interval is smaller than the standard setting, and the two access instructions having the same bank group address are continuously sent.
  • the first access instruction is used to instruct the control circuit of the memory to access the first register to be accessed by the first access request
  • the second access instruction is used to instruct the control circuit of the memory to access the second register to be accessed by the second access request.
  • the default first BG address of the partial access request in the first access set may be modified to be the second BG address, that is, BG0 is changed to BG1, and the BG address of the unmodified access request is BG0.
  • the BG address of the selected access request is BG1.
  • the first access instruction and the second access instruction are transmitted at a first time interval of a time interval of two access instructions of the same bank group address.
  • the minimum value of the first time interval may be tCCD_S, that is, the delay of the column address to column address operation under the different bank group address, and the standard setting of consecutively transmitting the time interval of two access instructions having the same bank group address.
  • the minimum value is tCCD_L, that is, the delay from the column address to the column address operation under the bank group address, and the memory read and write delay of the two consecutive access requests due to the tCCD_L delay in the memory is greater than the tCCD_S delay. Reduce, thereby improving the efficiency of memory reading and writing.
  • three consecutive read plus requests in a request queue (executing a read and adding one access request, that is, including both a read command and a write command) A, B, and C respectively correspond to rows.
  • the addresses R0, R0 and R1, R0 and R1 are the row addresses in the register addresses that are requested to be accessed by three requests, that is, the first two requests are requests with the same row address, and a subsequent request for a different row is contiguous.
  • the memory controller generates the access commands according to the access requests A, B, and C respectively, and sends the access commands to the NVM/FLASH DIMMs through the memory bus at the time interval set by the standard, and the memory in the NVM/FLASH DIMMs.
  • Read and write timing can be seen in Figure 5.
  • CAS is the Column Address Strobe, column address signal, which defines the interval between the time the read command is issued and the time the data is read out to the IO interface.
  • RAS Row Address Strobe
  • CAS Row Address Strobe
  • tRCD ie DRAM RAS to CAS Delay
  • tRP Precharge command Period: Precharge valid period. After the memory pre-charge command is issued, it takes a while for the RAS line to be sent to open a new work line. This interval is called tRP.
  • tRTP ie DRAM Read to Precharge Time: defines the interval before the memory is sent from the read command to the tRP on the same rank, but it does not take effect until the read is completed and the row address is closed.
  • the R0 BG0 in the register in which the memory controller activates the memory takes time tRCD, and then the data on the R0 BG0 can be read in response to the A request, and when the data of the R0 BG0 is accessed again in response to the B request of the peer, it is required. Wait for the delay of tCCD_L to be read.
  • the C request to respond to the different line reads the data on R1 BG0, it needs to wait for the line precharge time of tRP+tRTP. Then wait for the time to write data on R1 BG0.
  • the time interval of the access instruction of the two adjacent but bank group addresses sent by the memory controller to the memory can be shortened.
  • the addresses of the three access requests A, B, and C are respectively in the queue: R0 BG0, R0 BG0, R1 BG0; requests A and B of consecutive peers are available.
  • Interval modification that is, the address of the modified B request is R0 BG1 (ie, modified to the second BG address, but the row address remains unchanged R0).
  • the memory controller sends the access instruction corresponding to the access request of A and B
  • the first time interval is tCCD_S, which shortens the memory controller to send the adjacent corresponding row address.
  • the time of the access instruction, and overall, the sum of the memory response delays of the three access requests is (in units of memory timing units):
  • BG0 after responding to the read instruction of R0 BG0 of A request, directly pre-charge, and continue to read R1 BG0 in response to C request, and R0 BG1 requested by B belongs to BG1, so it can be accessed asynchronously. BG1, which saves time.
  • the following policy may also be adopted for accessing the access request of different row addresses, as shown in FIG. 7, including:
  • Step S202 The memory controller determines a first access set in the access queue, where the first access set includes consecutive multiple access requests, and multiple access requests in the first access set include the first bank group address and the first A row of addresses, the first row of addresses being used to point to the first row of registers in the memory.
  • Step S204 The memory controller determines a second access request in the access queue, where the second access request is located in the access queue after the access request of the first access set and adjacent to the access request of the first access set, in the second access request.
  • the first bank group address and the second row address are included, the second row address is different from the first row address, and the second row address is used to point to the second row register in the memory.
  • Both the first row register and the second row register refer to any row of registers in memory.
  • the addresses of the three access requests A, B, and C are in the queue: R0 BG0, R0 BG0, and R1 BG0.
  • Request A and B access row address R0, request C to access row address R1, but the bank group addresses corresponding to requests A, B, and C are all BG0.
  • the request A and B are the first access request in the first access set
  • the request C is the second access request after the access request of the first access set and adjacent to the access request of the first access set.
  • R0 is the first row address
  • the first row register in memory is executed
  • R1 is the second row address
  • the second row register in memory is executed.
  • Step S206 The memory controller determines that the number of access requests in the first access set is less than a preset threshold.
  • Step S208 The memory controller modifies the first bank group address in the second access request to the second bank group address.
  • the memory controller can modify the bank group address of request C to BG1, while keeping the bank group addresses of requests A and B unchanged.
  • Step S210 The memory controller separately sends a first activation instruction and a second activation instruction to the memory according to the second time interval, where the first activation instruction is generated according to the first access request in the first access set, The first activation instruction includes the first bank group address and the first row address, and the first activation instruction is used to indicate a row address of the first register to be accessed by the first access request;
  • the second activation command is generated according to the second access request, where the second activation instruction includes the second bank group address and the second row address, and the second activation instruction is used to indicate the The access address is the row address of the second register to be accessed.
  • the minimum value of the second time interval may be the delay between the row addresses tRRD (DRAM RAS to RAS Delay, the shortest delay of two consecutive active instructions between different banks of the same rank), that is, the memory controller is sent to the memory for the first
  • tRRD DRAM RAS to RAS Delay
  • the second activation instruction is asynchronously transmitted after waiting for a shorter second time interval (eg, an interval of tRRDs) such that access to the second row address can be performed asynchronously.
  • the addresses of three requests A, B, and C are in the queue: R0 BG0, R0 BG0, R1 BG0; Request AB and C interval modification, that is, modify the address of the C request to R1BG1 (ie, modify to the second BG address, but the row address remains R1 unchanged).
  • the memory controller sends the first activation instruction to the memory, it waits for the time of the tRRD to send the second activation instruction, which shortens the waiting time, and the sum of the memory access delays of the three requests is (the unit is the memory timing unit) :
  • the second activation instruction corresponding to the C request of the BG1 may be asynchronously initiated to the memory, that is, after the activation of the R0 BG0, although It is necessary to wait for the delay of tRRD to activate R1 BG1, but when this delay occurs, BG0 is still in the delay waiting process of tRCD. While BG0 waits for the delay of tCCD_L and tCCD_S, BG1 is also in the process of waiting for tCL delay. Therefore, the delay is distributed to BG0 and BG1 to be processed asynchronously, so that the delay of executing memory access instruction is greatly cut back.
  • the memory controller may select a preferred mode among the two methods for modifying the bank group address according to the length N of the first access set.
  • the memory controller determines that the number N of access requests in the first access set is not less than a preset threshold, the memory controller accesses a first bank of the partial access request of the plurality of access requests in the first access set.
  • the group address is modified to a second bank group address, so that the plurality of access requests in the modified first access set alternately use the first bank group address and the second bank group address.
  • step S208 above the memory controller modifying the first bank group address in the second access request to the second bank group address.
  • the preset threshold is:
  • tRP is the precharge valid period
  • tRTP is the delay before the memory is sent from the read command to tRP
  • tRCD is the time required for the memory to address the row address after the row address activation command is issued
  • tCCD_S is the same as the bank group address
  • tCCD_L is the delay from the column address to the column address operation under the bank group address.
  • the addresses of the N first access requests in the first access set correspond to the same row R0 BG0, and the latter second access request corresponds to the different rows R1 BG0, and the obtained A subqueue is N requests for R0 BG0.
  • the total saving delay is:
  • the modification is performed by modifying the first bank group address in the second access request to the second bank group address by using the foregoing memory controller, and the delay is:
  • the above-mentioned request for continuous peers is selected for interval modification.
  • the way to set the BG address when saving time 1 ⁇ saving time 2, select the BG address in the manner of the above-mentioned interval modification for the inter-line request.
  • the queue length threshold is (tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S).
  • the same register content in the register space can be used in an application scenario with more than 2 BG addresses, for example, corresponding to BG0, BG1, and BG2 addresses, and so on, for the above requests A, B. C, the initial R0 BG0, R0 BG0, R1 BG0 can be modified to R0 BG0, R0 BG1, R1 BG2, and then distributed asynchronously on BG0, BG1, BG2. Further improve execution efficiency.
  • the memory controller determines that the number N of access requests in the first access set is less than a preset threshold, that is, the memory controller uses the first bank group address in the second access request to be modified to the second bank group address.
  • the memory controller may also determine the order in which the first activation command and the second activation command are sent.
  • the memory controller determines the row address that preferentially reaches the idle state in the first row address and the second row address.
  • the memory controller determines that the first row address preferentially reaches the idle state, the memory controller sends the first activation instruction to the memory, and after the second time interval, the memory controller sends a second activation instruction to the memory;
  • the memory controller determines that the second row address preferentially reaches the idle state, the memory controller sends a second activation instruction to the memory, and after the second time interval, the memory controller sends a first activation instruction to the memory.
  • a memory status register is also provided in the memory controller, in which the state of the register row address in the memory is stored.
  • the id/WRITE read/write state
  • ACT active state
  • PRECHARGE precharge state
  • IDLE IDLE
  • the memory controller activates the row address in the register in time, and also needs to wait for the row address to reach the idle state. Accessing it, so it is necessary to wait for extra time.
  • the second activation command is sent first, and while waiting for the second time interval, waiting for the first row address to reach the idle state, thereby merging the waiting time, that is, Reduces access time to memory, which increases memory access speed.
  • the same register content in the register space corresponds to at least one register address, the at least one register address is different only in the bank group address of the memory bank group, and the register address of the access request is used first. Bank group address.
  • the memory controller dynamically sets the access request to set the bank group address to the second bank group address, so that the memory controller can generate a memory access instruction carrying different bank group addresses according to the memory access request originally carrying the same bank group address, thereby Part of the memory access instruction can access the memory asynchronously, which improves the concurrent access of the memory access, and utilizes the minimum interval tCCD_S of the memory access instruction that the memory controller sends the different bank group address is smaller than the memory access instruction that sends the same bank group address.
  • the minimum interval of tCCD_L which reduces memory read and write latency, improves memory read and write efficiency.
  • the method and device for setting the bank group address in the embodiment of the present invention do not modify the computer program that the CPU requests the memory controller.
  • the manner in which the memory controller sets the bank group address is transparent.
  • developers there is no need to modify the computer program on the CPU side to complete the adaptation, which improves the scalability.

Abstract

本发明实施例公开了一种内存访问方法,包括:内存控制器确定访问队列中第一访问集合,所述第一访问集合中包含有连续的多个访问请求;所述内存控制器将所述第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址;所述内存控制器分别根据修改后的第一访问集合中的第一访问请求和第二访问请求生成第一访问指令和第二访问指令;所述内存控制器按照预设的第一时间间隔分别向所述内存发送所述第一访问指令和所述第二访问指令。上述设定内存访问方法可减少内存访问延时,提高内存的读写速度。

Description

内存访问方法及内存控制器 技术领域
本发明涉及计算机技术领域,特别是涉及一种内存访问方法及内存控制器。
背景技术
随着计算机技术的发展,双倍速率同步动态随机存储器(英文:Double Data Rate,简称:DDR)总线已经发展到了DDR4。DDR4标准中的bank group将内存划分为多个区域,每个bank group可以独立读写数据,这样一来内部的数据吞吐量大幅度提升,可以同时读取大量的数据,内存的等效频率在这种设置下也得到巨大的提升。
然而发明人经研究发现,传统技术中处理器向内存控制器发起的内存访问请求的序列中,通常所有的内存访问请求中的bank group地址均相同,这就使得传统技术中的内存控制器生成的内存访问指令的bank group地址也均相同,而由于标准设定的内存控制器在向内存发送指向内存的寄存器中的同一行地址的访问指令的时间间隔较长,这就使得内存的访问需要耗费较长的时间,从而导致内存读写速度较低。
发明内容
本申请提供了一种内存访问方法和内存控制器,能够缩短内存访问过程中的访问延时,提高内存访问效率。
第一方面,本申请提供了一种内存访问方法,该方法应用于计算机系统,所述计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器。
在上述方法中,内存控制器先确定访问队列中第一访问集合,该第一访问集合中包含有连续的多个访问请求,并且,该第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,需要说明的是第一行地址用 于指向所述内存中的一行寄存器。
例如,若访问队列中的请求为ABBBBBC,A、B和C分别为包含不同行地址但bank group地址均相同的请求,则内存控制器可确定第一访问集合为BBBBB的请求序列。
内存控制器将确定的第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址;也就是说,若第一访问集合中的访问请求的bank group地址均为BG0,则可以随机选取或按照预设的策略选取部分访问请求将bank group地址修改为BG1,若内存控制器支持更多的bank group,那么内存控制器还可以将部分访问请求的bank group地址修改为BG2或BG3等。若此处,第二bank group地址仅用于与第一bank group地址以示区别,而并不限定于某个特定的bank group地址。
内存控制器分别根据修改后的第一访问集合中的第一访问请求和第二访问请求生成第一访问指令和第二访问指令,其中,所述第一访问请求和所述第二访问请求为所述第一访问集合中相邻的访问请求,所述第一访问请求和所述第一访问指令中包含有第一bank group地址,所述第二访问请求和所述第二访问指令中包含有第二bank group地址。
所述内存控制器按照预设的第一时间间隔分别向所述内存发送所述第一访问指令和所述第二访问指令,第一时间间隔小于标准设定的连续发送具有相同bank group地址的两个访问指令的时间间隔,所述第一访问指令用于指示所述内存的控制电路访问所述第一访问请求待访问的第一寄存器,所述第二访问指令用于指示所述内存的控制电路访问所述第二访问请求待访问的第二寄存器。
可选的,第一时间间隔的最小取值可以是tCCD_S,即异bank group地址下的列地址到列地址操作的延时,而标准设定的内存控制器连续发送具有相同bank group地址的两个针对同一行地址的访问指令的时间间隔即为tCCD_L。由于tCCD_S(4个内存时序)<tCCD_L(6个内存时序),因此,第一时间间隔的取值可以小于标准设定的连续发送具有相同bank group地址的两个访问指令的时间间隔。
结合本发明实施例第一方面可能的实现方式,在本发明实施例第一方面的第一种可能的实现方式中,内存控制器在对第一访问集合中的访问请求进行 bank group地址的修改时,可以先确定该第一访问集合中的访问请求的数量N不小于预设阈值;然后将该第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址,以使修改后的第一访问集合中的多个访问请求交替使用第一bank group地址和第二bank group地址。
也就是说,对于第一访问集合中的N个连续的访问请求,生成的连续的访问指令的中,两两相邻的访问指令的bank group地址都不同。例如,可第2i个访问指令的bank group地址为BG0,第2i+1个访问指令的bank group地址为BG1,i为自然数。
结合本发明实施例第一方面以及第一方面的第一种可能的实现方式,在本发明实施例第一方面的第二种可能的实现方式中,所述预设阈值为:
(tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S);
其中,tRP为预充电有效周期,内存控制器在发出预充电命令之后,要经过一段时间间隔才能发送RAS行有效命令打开新的行,这个时间间隔即为tRP,tRTP为内存从读取命令发出到tRP之前的延时,tRCD为行地址激活命令发出之后内存对行地址的操作所需要的时间;tCCD_S为异bank group地址下的列地址到列地址操作的延时,tCCD_L为同bank group地址下的列地址到列地址操作的延时。
第二方面,本申请提供了又一种内存访问方法,所述方法应用于计算机系统,所述计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器。
在上述内存访问方法中,内存控制器先确定访问队列中第一访问集合,所述第一访问集合中包含有连续的多个访问请求,并且,该第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,需要说明的是,第一行地址用于指向所述内存中的第一行寄存器。
例如,若访问队列中的请求为ABBBBBC,A、B和C分别为包含不同行地址但bank group地址均相同的请求,则内存控制器可确定第一访问集合为BBBBB的请求序列。
内存控制器还要确定访问队列中的第二访问请求,该第二访问请求在所述访问队列中位于所述第一访问集合的访问请求之后且与所述第一访问集合的 访问请求相邻,所述第二访问请求中包含有所述第一bank group地址以及第二行地址,所述第二行地址与所述第一行地址不同,所述第二行地址用于指向所述内存中的第二行寄存器。
如上例中,访问请求C与访问请求B包含的行地址不同,但bank group地址相同,因此,内存控制器可确定访问请求C即为第二访问请求。访问请求C包含的行地址即为第二行地址,用于指向内存中的第二行寄存器。
内存控制器确定所述第一访问集合中的访问请求的数量小于预设阈值之后,则将所述第二访问请求中的第一bank group地址修改为第二bank group地址。
如上例中,在第一访问集合中的访问请求的数量N小于预设阈值时,也就是第一访问集合中,包含同一行地址的请求B的数量小于预设阈值时,若访问请求B和C初始的bank group地址均为BG0,则可将第二访问请求C的bank group地址修改为BG1。
内存控制器根据第二时间间隔分别向所述内存发送第一激活指令以及第二激活指令,其中,需要说明的是,第一激活指令是根据所述第一访问集合中的第一访问请求生成的,所述第一激活指令中包含有所述第一bank group地址以及所述第一行地址,所述第一激活指令用于指示所述第一访问请求待访问的第一寄存器的行地址;所述第二激活指令是根据所述第二访问请求生成的,所述第二激活指令中包含有所述第二bank group地址以及所述第二行地址,所述第二激活指令用于指示所述第二访问请求待访问的第二寄存器的行地址。
所述第二时间间隔的最小取值可以是行地址间延迟tRRD。也就是说,内存控制器在激活了第一访问请求对应的第一行地址之后,不需要等待第一访问集合中的第一访问请求全部访问完毕,再激活第二访问请求对应的第二激活指令,而是可以在响应第一访问指令的过程中,异步地在第二bank group中激活第二行地址,从而减少等待时间,提高内存访问速度。
结合本发明实施例第二方面可能的实现方式,在本发明实施例第三方面的第一种可能的实现方式中,该预设阈值可以设置为:
(tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S);
其中,tRP为预充电有效周期,tRTP为内存从读取命令发出到tRP之前的 延时,tRCD为行地址激活命令发出之后内存对行地址的操作所需要的时间;tCCD_S为异bank group地址下的列地址到列地址操作的延时,tCCD_L为同bank group地址下的列地址到列地址操作的延时。
结合本发明实施例第二方面可能的实现方式,在本发明实施例第三方面的第二种可能的实现方式中,内存控制器在所述第一行地址和第二行地址中确定优先到达空闲状态的行地址;当所述内存控制器确定所述第一行地址优先到达空闲状态时,所述内存控制器向所述内存发送所述第一激活指令,经过所述第二时间间隔后,所述内存控制器向所述内存发送所述第二激活指令。
结合本发明实施例第二方面可能的实现方式,在本发明实施例第三方面的第三种可能的实现方式中,内存控制器在所述第一行地址和第二行地址中确定优先到达空闲状态的行地址;当所述内存控制器确定所述第二行地址优先到达空闲状态时,所述内存控制器向所述内存发送所述第二激活指令,经过所述第二时间间隔后,所述内存控制器向所述内存发送所述第一激活指令。
也就是说,内存控制器在根据第二时间间隔分别向所述内存发送第一激活指令以及第二激活指令时,可决定优先发送第一激活指令还是第二激活指令,决定的依据即为第一行地址和第二行地址中谁优先到达空闲状态,若第一行地址先到达空闲状态,则内存控制器优先发送第一激活指令;第二行地址先到达空闲状态,则内存控制器优先发送第二激活指令。这样可以减少等待行地址变为空闲状态的时间,从而减少内存访问耗时,提高内存的访问速度。
第二方面,本发明实施例还提供了一种内存控制器,该内存控制器在计算机系统与内存连接,所述内存包括控制电路和多个寄存器。该内存控制器可用于执行上述第一方面提供的内存访问方法。
第四方面,本发明实施例还提供了另一种内存控制器,该内存控制器在计算机系统中与内存连接,所述内存包括控制电路和多个寄存器。该内存控制器可用于执行上述第二方面提供的内存访问方法。
上述内存访问方法及内存控制器中,寄存器空间中的同一寄存器内容对应至少一个寄存器地址,所述至少一个寄存器地址仅内存库组bank group地址不同,所述访问请求的寄存器地址使用第一bank group地址。内存控制器通过动态地选访问请求设定bank group地址为第二bank group地址,使得内存控制器 能够根据原本携带同一bank group地址的内存访问请求生成携带不同bank group地址的内存访问指令,从而使得部分内存访问指令可对内存进行异步地访问,提高了内存访问的并发量,并利用了内存控制器发送异bank group地址的内存访问指令的最小间隔tCCD_S小于发送同bank group地址的内存访问指令的最小间隔tCCD_L的特性,从而减少了内存读写延时,提高了内存的读写效率。
第五方面,本申请提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行上述第一方面中描述的任意一种内存访问指令的调度方法。
第六方面,本申请提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行上述第二方面中描述的任意一种内存访问指令的调度方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例的附图。
图1为本发明实施例提供的一种内存工作环境的硬件架构图;
图2为本发明实施例提供的一种内存访问方法的流程图;
图3为本发明实施例提供的内存控制器的内部功能示意图;
图4为本发明实施例提供的多BG地址映射同一寄存器内容的示意图;
图5为本发明实施例提供的未修改访问请求的bank group地址时的内存访问过程的时序图;
图6为本发明实施例提供的间隔修改多个访问同一行地址的访问请求的bank group地址时的内存访问的时序图;
图7为本发明实施例提供的又一种内存访问方法的流程图;
图8为本发明实施例提供的修改相邻的但访问不同行地址访问请求的bank group地址时的内存访问的时序图;
图9为本发明实施例提供的在请求队列中选择访问请求修改bank group地址时的多种修改方式的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
为了解决上述传统技术中的内存控制器在根据多个具有同一行地址的内存访问请求生成访问指令访问内存时导致的访问延时的浪费,内存读写速度较低的技术问题,在一个实施例中,提出了一种内存访问方法。该方法应用于计算机系统,该计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器,该方法可由内存控制器执行。在传统技术中的计算机系统架构中,内存控制器通常位于主板芯片组的北桥芯片内部,或集成在CPU(中央处理单元,Central Processing Unit)基板上内置的北桥芯片中。
具体的,参考图1所示,在一个NVM(英文:NonVolatile Memory,中文:非易失存储器)/FLASH(即Flash EEPROM Memory,闪存)DIMM(英文:Dual In-line Memory Module,中文:双列直插式存储模块)接入标准内存接口(DDR4)的实施例中,CPU若要与内存进行数据交换,则需要经过CPU→内存控制器(北桥芯片中)→内存总线(例如DDR4总线)→NVM/FLASH控制器(NVM/FALSH DIMM的寄存器空间)→内存总线→内存控制器→CPU的数据传输过程。CPU可通过发送寄存器空间的内存访问请求至内存控制器,该访问请求中携带有需要访问的寄存器空间中的寄存器内容的寄存器地址,一个寄存器地址包括bank group地址、行地址、列地址、Bank地址、Rank地址等。内存控制器接收到该内存访问请求之后,则可根据内存访问请求的寄存器地址生成内存总线上的内存访问指令发送给NVM/FLASH控制器进行读写。
而本发明实施例为解决前述的多个携带同一bank group地址的内存访问请求访问内存时导致的访问延时的浪费,内存读写速度较低的技术问题,采用了在内存控制器中修改CPU对寄存器空间中的内存访问请求的寄存器地址的bank group地址,从而使得内存控制器可向内存发送异步的内存访问指令的技 术手段,使得内存访问的延时大大降低。
具体的,如图2所示,该内存访问方法包括:
步骤S102:内存控制器确定访问队列中第一访问集合,第一访问集合中包含有连续的多个访问请求,第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,第一行地址用于指向内存中的一行寄存器。
如前所述,处理器CPU对内存的读写操作是通过向内存控制器发送对内存的寄存器空间的访问请求实现的。内存控制器接收CPU的访问请求然后生成内存总线上的访问指令的过程可参考图3所示。
在图3中,内存控制器通过与CPU的接口接收到CPU发送的访问请求,然后缓存在请求队列中,然后进一步的,分Bank的存放属于各bank的访问请求。Bank状态寄存器中则存储着记录各Bank的当前状态。Bank状态包括READ/WRITE(读/写状态)、ACT(激活状态)、PRECHARGE(预充电状态)、IDLE(空闲状态)等几种状态。Bank状态寄存器中还存储有处于ACT(激活)状态的行地址,如果Bank中有行处于激活状态,那么则记录当前激活的行地址。访问地址生成器则根据Bank队列中的访问请求的先后顺序以及携带的寄存器地址生成访问指令,然后通过内存总线(例如DDR4)发送给NVM/FLASH DIMM。可以理解的是,实际应用中,内存控制器也可以将接收的内存访问请求不区分Bank进行缓存,也就是说,图3中的Bank队列不是必需的。
在本实施例中,第一访问集合即为内存控制器中缓存的请求队列中的访问同一行地址的子队列,例如,若缓存的请求队列中的请求序列为ABBBBBC,其中,A、B和C分别表示不同的行地址,即分别指向内存中的A、B和C行寄存器,则BBBBB则为一个第一访问集合,行地址B即为第一访问集合中的多个访问请求均包含的第一行地址,且这些内存访问请求的bank group地址相同。
在本实施例中,寄存器空间中的同一寄存器内容对应至少一个寄存器地址,该寄存器内容对应的至少一个寄存器地址仅bank group地址不同。另外,接收的访问请求的寄存器地址使用第一bank group地址。
参考图4所示,在一个应用场景中,NVM/FLASH DIMM的寄存器空间中,同一个寄存器内容可通过两个寄存器地址访问,即使用第一bank group地址 (以下简称BG地址)的寄存器地址和使用第二BG地址的寄存器地址,这两个地址仅需要BG地址不同,但Bank地址、Rank地址、行地址和列地址需要相同(也就是说,同一个寄存器内容仅与Bank地址、Rank地址、行地址和列地址相关,与BG地址无关,在其他实施例或应用场景中,对应同一个寄存器内容的寄存器地址可以为多个,例如,大于2个,分别使用不同的BG地址)。
而内存控制器在生成内存访问指令,通过内存总线(例如,DDR4总线)访问NVM/FLASH DIMM的寄存器空间时,对于访问同一寄存器内容的寄存器地址,既可使用第一BG地址,也可使用第二BG地址,只需要这两个寄存器地址的Bank地址、Rank地址、行地址和列地址相同即可。
而在本实施例中,CPU在向内存控制器发送寄存器空间的访问请求时,访问请求中携带的寄存器地址仅使用第一BG地址,如图4中所示,可仅使用BG0地址,与传统技术一致。
也就是说,对于CPU侧而言,本发明实施例不需要修改CPU访问内存控制器的计算机程序,CPU仍然可按照传统技术中访问内存控制器的方式向内存控制器发送访问请求,而对于某些老式的CPU程序,可能不支持bank group地址,因此,其发送的给内存控制器的访问请求中携带的寄存器地址可能仅包含Bank地址、Rank地址、行地址和列地址,则内存控制器在接收到该访问请求并缓存在请求队列中时,可自动为其设置缺省的BG地址为第一BG地址。
步骤S104:内存控制器将第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址。
再参考图3所示,内存控制器在根据访问请求生成内存总线上的访问指令之前,可选取部分访问请求,修改选取的访问请求的BG地址,由缺省的第一BG地址修改为第二BG地址。修改完成后,则可根据请求队列中的访问请求生成内存总线上的访问指令。
步骤S106:内存控制器分别根据修改后的第一访问集合中的第一访问请求和第二访问请求生成第一访问指令和第二访问指令,其中,第一访问请求和第二访问请求为第一访问集合中相邻的访问请求,第一访问请求和第一访问指令中包含有第一bank group地址,第二访问请求和第二访问指令中包含有第二bank group地址。
步骤S108:内存控制器按照预设的第一时间间隔分别向内存发送第一访问指令和第二访问指令,第一时间间隔小于标准设定的连续发送具有相同bank group地址的两个访问指令的时间间隔,第一访问指令用于指示内存的控制电路访问第一访问请求待访问的第一寄存器,第二访问指令用于指示内存的控制电路访问第二访问请求待访问的第二寄存器。
参考图4所示,可将第一访问集合中的部分访问请求缺省的第一BG地址修改为第二BG地址即由BG0修改为BG1,未修改的访问请求的BG地址即为BG0,被选择修改的访问请求的BG地址即为BG1。这样修改之后,对于第一访问集合中的两个连续的但经过修改后bank group地址不同的内存访问请求:第一访问请求和第二访问请求,内存控制器生成的相应的内存访问指令:第一访问指令和第二访问指令对应的BG地址也分别为BG0和BG1,此时内存控制器在向内存发送第一访问指令和第二访问指令时,即可采用小于标准设定的连续发送具有相同bank group地址的两个访问指令的时间间隔的第一时间间隔发送第一访问指令和第二访问指令。第一时间间隔的最小取值可以是tCCD_S,即异bank group地址下的列地址到列地址操作的延时,而标准设定的连续发送具有相同bank group地址的两个访问指令的时间间隔的最小取值为tCCD_L,即同bank group地址下的列地址到列地址操作的延时,而由于在内存中tCCD_L延时大于tCCD_S延时,使得这两个连续的访问请求的内存读写延时降低,从而提高内存读写的效率。
例如,在一个应用场景中,一个请求队列中连续的三个读加请求(执行读取并加1的访问请求,即既包含了读指令也包含了写指令)A、B、C分别对应行地址R0,R0和R1,R0和R1为三个请求需要访问的寄存器地址中的行地址,也就是说,前两个请求为行地址相同的请求,邻接了一个后续的不同行的请求。
若按照传统技术中的方式,由内存控制器根据访问请求A、B、C分别生成访问指令分别按照标准设定的时间间隔通过内存总线发送给NVM/FLASH DIMM,则NVM/FLASH DIMM中的内存读写时序即可参考图5所示。
在图5中,这三个访问请求的内存响应延时总和为(单位为内存时序单元):
tRCD(16)+tCCD_L(6)+tRTP(6)+tRP(11)tRCD(16)+tCL (16)+4=75
其中,tCL(即CAS Latency):CAS即Column Address Strobe,列地址信号,它定义了在读取命令发出后到数据读出到IO接口的间隔时间。
RAS(Row Address Strobe,行地址选通脉冲)的含义与CAS类似,就是行(Row)地址信号。它定义的是在内存的一个rank(内存的一面)之中,行地址激活(Active)命令发出之后,内存对行地址的操作所需要的时间。
tRCD(即DRAM RAS to CAS Delay):内存在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔即为tRCD,RAS至CAS的延迟,简单的说,已知行地址位置,在这一行中找到相应的列地址,就可以完成寻址,进行读写操作,从已知行地址到找到列地址过去的时间就是tRCD。
tRP(Precharge command Period):预充电有效周期。在内存发出预充电命令之后,要经过一段时间才能允许发送RAS行有效命令打开新的工作行,这个间隔被称为tRP。
tRTP(即DRAM Read to Precharge Time):定义了同一rank上内存从读取命令发出到tRP之前的间隔时间,但是它在读取完成并且行地址关闭之后才会生效。
也就是说,内存控制器激活内存的寄存器中的R0 BG0需要耗时tRCD,然后才能响应A请求读取R0 BG0上的数据,当紧接着响应同行的B请求再次访问R0 BG0的数据时,需要等待tCCD_L的延时方可读取,当紧接着响应异行的C请求读取R1 BG0上的数据时,需要等待tRP+tRTP的行预充电时间。然后再等待R1 BG0上写数据的时间。
而若采用上述方法,对于访问同行地址的连续多个访问请求修改bank group地址,则内存控制器向内存发送的两个相邻的但bank group地址的访问指令的时间间隔则可得到缩短。
例如,参考图6所示,在图6中,仍然是三个访问请求A、B、C的地址在队列中分别为:R0 BG0、R0 BG0、R1 BG0;可将连续同行的请求A、B间隔修改,即修改B请求的地址为R0 BG1(即修改为第二BG地址,但行地址仍然保持R0不变)。则内存控制器在发送A和B的访问请求对应的访问指令时,第一时间间隔为tCCD_S,缩短了内存控制器发送相邻的对应同一行地址 的访问指令的时间,而整体上,这三个访问请求的内存响应延时总和为(单位为内存时序单元):
tRCD(16)+tRTP(6)+tRP(11)tRCD(16)+tCL(16)+4=69,即节省了tCCD_L–tCCD_S+tCCD_S个延时。
也就是说,对于BG0,在响应完A请求的R0 BG0的读取指令之后,直接预充电,并继续响应C请求读取R1 BG0,而B请求的R0 BG1由于属于BG1,因此可异步地访问BG1,从而节省了延时。
而在另一个实施例中,内存控制器在修改请求队列中访问请求的bank group地址时,也可针对访问不同行地址的访问请求采用如下策略,请参考图7所示,包括:
步骤S202:内存控制器确定访问队列中第一访问集合,第一访问集合中包含有连续的多个访问请求,第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,第一行地址用于指向所述内存中的第一行寄存器。
步骤S204:内存控制器确定访问队列中的第二访问请求,第二访问请求在访问队列中位于第一访问集合的访问请求之后且与第一访问集合的访问请求相邻,第二访问请求中包含有第一bank group地址以及第二行地址,第二行地址与第一行地址不同,第二行地址用于指向内存中的第二行寄存器。第一行寄存器和第二行寄存器均是指内存中的任意一行寄存器。
如上例中,仍然是三个访问请求A、B、C的地址在队列中分别为:R0 BG0、R0 BG0、R1 BG0。请求A和B访问行地址R0,请求C访问行地址R1,但请求A、B、C对应的bank group地址均为BG0。则请求A和B为第一访问集合中的第一访问请求,请求C为位于第一访问集合的访问请求之后且与第一访问集合的访问请求相邻的第二访问请求。R0为第一行地址,执行内存中的第一行寄存器,R1为第二行地址,执行内存中的第二行寄存器。
步骤S206:内存控制器确定所述第一访问集合中的访问请求的数量小于预设阈值。
步骤S208:内存控制器将第二访问请求中的第一bank group地址修改为第二bank group地址。
如上例中,内存控制器可将请求C的bank group地址修改为BG1,而保持请求A和B的bank group地址不变。
步骤S210:内存控制器根据第二时间间隔分别向内存发送第一激活指令以及第二激活指令,其中,第一激活指令是根据所述第一访问集合中的第一访问请求生成的,所述第一激活指令中包含有所述第一bank group地址以及所述第一行地址,所述第一激活指令用于指示所述第一访问请求待访问的第一寄存器的行地址;所述第二激活指令是根据所述第二访问请求生成的,所述第二激活指令中包含有所述第二bank group地址以及所述第二行地址,所述第二激活指令用于指示所述第二访问请求待访问的第二寄存器的行地址。
第二时间间隔的最小取值可以是行地址间延迟tRRD(DRAM RAS to RAS Delay,同rank不同bank间两个连续激活指令的最短延迟),也就是说,内存控制器在向内存发送针对第一行地址的第一激活指令和针对第二行地址的第二激活指令时,不需要等待第一访问集合中的所有请求访问内存完毕再发送针对第二行地址的第二激活指令,而可在等待较短的第二时间间隔(例如tRRD的间隔)后异步地发送第二激活指令,使得对第二行地址的访问可异步地执行。
例如,在该实施例中,参考图8所示,在图8中,三个请求A、B、C的地址在队列中分别为:R0 BG0、R0 BG0、R1 BG0;可将连续异行的请求AB和C间隔修改,即修改C请求的地址为R1BG1(即修改为第二BG地址,但行地址仍然保持R1不变)。则内存控制器在向内存发送第一激活指令之后,等待tRRD的时间即可发送第二激活指令,缩短了等待时间,且这三个请求的内存访问延时总和为(单位为内存时序单元):
tRCD(16)+tCL(16)+6+4+4=46
即节省了tRTP+tRP+tRCD–tCCD_S个延时。
也就是说,内存控制器在根据BG0的A请求和B请求向内存发起第一激活指令时,可异步地向内存发起BG1的C请求对应的第二激活指令,即在激活R0 BG0后,虽然需要等待tRRD的延时,才能激活R1 BG1,但该延时发生时,BG0仍处于tRCD的延时等待过程中。而BG0在等待tCCD_L和tCCD_S的延时时,BG1也处于等待tCL延时的过程中,因此,延时被分摊到了BG0和BG1上得到了异步地处理,从而使得执行内存访问指令的延时大大减少。
进一步的,在一个实施例中,还存在针对连续同行的访问请求数量较多的情况,例如,请求队列中现有N+1个请求,按照接收的先后顺序,前N个请求的地址对应同一行R0 BG0,后1个请求对应不同行R1 BG0。内存控制器可根据第一访问集合的长度N在上述两种修改bank group地址的方法中选择较优的方式。
例如,当内存控制器确定所述第一访问集合中的访问请求的数量N不小于预设阈值时,内存控制器将第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址,以使修改后的第一访问集合中的多个访问请求交替使用第一bank group地址和第二bank group地址。
而当内存控制器确定第一访问集合中的访问请求的数量N小于预设阈值时,则执行上述步骤S208:内存控制器将第二访问请求中的第一bank group地址修改为第二bank group地址。
可选的,该预设阈值为:
(tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S);
其中,tRP为预充电有效周期,tRTP为内存从读取命令发出到tRP之前的延时,tRCD为行地址激活命令发出之后内存对行地址的操作所需要的时间;tCCD_S为异bank group地址下的列地址到列地址操作的延时,tCCD_L为同bank group地址下的列地址到列地址操作的延时。
如前所述,参考图9所示,第一访问集合中的N个第一访问请求的地址对应同一行R0 BG0,后1个第二访问请求对应不同行R1 BG0的情况,则得到的第一子队列即为N个针对R0 BG0的请求。
若采用前述的内存控制器将第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址的方式进行修改,则共计节省延时为:
省时1=(tCCD_L–tCCD_S)×N+tCCD_S
而采用前述的内存控制器将第二访问请求中的第一bank group地址修改为第二bank group地址的方式进行修改,则节省延时为:
省时2=tRTP+tRP+tRCD–tCCD_S个延时。
因此当省时1>省时2时,选用前述的针对连续同行的请求进行间隔修改 的方式设定BG地址,当省时1<省时2,选用前述的针对异行间的请求进行间隔修改的方式设定BG地址。
因此,队列长度阈值即为(tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S)。
在其他实施例中,在寄存器空间中的同一个寄存器内容可使用大于2个BG地址的应用场景中,例如,可分别对应BG0、BG1和BG2地址,则以此类推,对于上述请求A、B、C,可将初始的R0 BG0、R0 BG0、R1 BG0修改为R0 BG0、R0 BG1、R1 BG2,然后分摊在BG0、BG1、BG2上异步执行。更进一步地提高执行效率。
进一步的,若内存控制器确定第一访问集合中的访问请求的数量N小于预设阈值时,即内存控制器采用将第二访问请求中的第一bank group地址修改为第二bank group地址的修改方式时,内存控制器还可确定发送第一激活指令和第二激活指令的先后顺序。
即,内存控制器在第一行地址和第二行地址中确定优先到达空闲状态的行地址。
当所述内存控制器确定第一行地址优先到达空闲状态时,内存控制器向内存发送所述第一激活指令,经过第二时间间隔后,内存控制器向内存发送第二激活指令;
当内存控制器确定第二行地址优先到达空闲状态时,内存控制器向内存发送第二激活指令,所述第二时间间隔后,内存控制器向所述内存发送第一激活指令。
参考图3所示,内存控制器中还设置有Bank状态寄存器,其中存储有内存中的寄存器行地址的状态。Bank状态中按照距离空闲状态由远到近的顺序为READ/WRITE(读/写状态)、ACT(激活状态)、PRECHARGE(预充电状态)、IDLE(空闲状态)。若第一行地址更快达到空闲状态,则优先发送第一激活指令,使得第一访问指令能够被内存快速地响应;而当第二地址更快达到空闲状态,则优先发送第二激活指令,使得第二访问指令能够被内存快速地响应。若在第二地址更快达到空闲状态时,仍然优先发送第一激活指令,则及时内存控制器将寄存器中的行地址激活,也需要等待该行地址达到空闲状态才能 对其访问,因此需要等待额外的时间,而此时先发送第二激活指令,则在等待第二时间间隔的同时,等待了第一行地址抵达空闲状态,从而合并了等待的时间,也就减少了访问内存的时间,从而提高了内存的访问速度。
综上,实施本发明实施例,将具有如下有益效果:
上述设定内存访问方法及内存控制器中,寄存器空间中的同一寄存器内容对应至少一个寄存器地址,所述至少一个寄存器地址仅内存库组bank group地址不同,所述访问请求的寄存器地址使用第一bank group地址。内存控制器通过动态地选访问请求设定bank group地址为第二bank group地址,使得内存控制器能够根据原本携带同一bank group地址的内存访问请求生成携带不同bank group地址的内存访问指令,从而使得部分内存访问指令可对内存进行异步地访问,提高了内存访问的并发量,并利用了内存控制器发送异bank group地址的内存访问指令的最小间隔tCCD_S小于发送同bank group地址的内存访问指令的最小间隔tCCD_L的特性,从而减少了内存读写延时,提高了内存的读写效率。
同时,本发明实施例中的设定bank group地址的方法及装置没有对CPU请求内存控制器的计算机程序进行修改,对于CPU侧而言,内存控制器设定bank group地址的方式是透明的,对于开发人员而言,也不需要对CPU侧的计算机程序进行修改即可完成适配,从而提高了扩展性。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (14)

  1. 一种内存访问方法,其特征在于,所述方法应用于计算机系统,所述计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器,所述方法包括:
    所述内存控制器确定访问队列中第一访问集合,所述第一访问集合中包含有连续的多个访问请求,所述第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,所述第一行地址用于指向所述内存中的一行寄存器;
    所述内存控制器将所述第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址;
    所述内存控制器分别根据修改后的第一访问集合中的第一访问请求和第二访问请求生成第一访问指令和第二访问指令,其中,所述第一访问请求和所述第二访问请求为所述第一访问集合中相邻的访问请求,所述第一访问请求和所述第一访问指令中包含有第一bank group地址,所述第二访问请求和所述第二访问指令中包含有第二bank group地址;
    所述内存控制器按照预设的第一时间间隔分别向所述内存发送所述第一访问指令和所述第二访问指令,所述第一时间间隔小于标准设定的连续发送具有相同bank group地址的两个访问指令的时间间隔,所述第一访问指令用于指示所述内存的控制电路访问所述第一访问请求待访问的第一寄存器,所述第二访问指令用于指示所述内存的控制电路访问所述第二访问请求待访问的第二寄存器。
  2. 根据权利要求1所述的方法,其特征在于,所述内存控制器将所述第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址包括:
    所述内存控制器确定所述第一访问集合中的访问请求的数量不小于预设阈值;
    所述内存控制器将所述第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址,以使修改后的第一访问集合中的多个访问请求交替使用第一bank group地址和第二bank group地址。
  3. 根据权利要求2所述的方法,其特征在于,所述预设阈值为:
    (tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S);
    其中,tRP为预充电有效周期,tRTP为内存从读取命令发出到tRP之前的延时,tRCD为行地址激活命令发出之后内存对行地址的操作所需要的时间;tCCD_S为异bank group地址下的列地址到列地址操作的延时,tCCD_L为同bank group地址下的列地址到列地址操作的延时。
  4. 一种内存访问方法,其特征在于,所述方法应用于计算机系统,所述计算机系统包括内存控制器以及内存,所述内存包括控制电路和多个寄存器,所述方法包括:
    所述内存控制器确定访问队列中第一访问集合,所述第一访问集合中包含有连续的多个访问请求,所述第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,所述第一行地址用于指向所述内存中的第一行寄存器;
    所述内存控制器确定访问队列中的第二访问请求,所述第二访问请求在所述访问队列中位于所述第一访问集合的访问请求之后且与所述第一访问集合的访问请求相邻,所述第二访问请求中包含有所述第一bank group地址以及第二行地址,所述第二行地址与所述第一行地址不同,所述第二行地址用于指向所述内存中的第二行寄存器;
    所述内存控制器确定所述第一访问集合中的访问请求的数量小于预设阈值;
    所述内存控制器将所述第二访问请求中的第一bank group地址修改为第二bank group地址;
    所述内存控制器根据第二时间间隔分别向所述内存发送第一激活指令以及第二激活指令,其中,所述第一激活指令是根据所述第一访问集合中的第一访问请求生成的,所述第一激活指令中包含有所述第一bank group地址以及所述第一行地址,所述第一激活指令用于指示所述第一访问请求待访问的第一寄存器的行地址;所述第二激活指令是根据所述第二访问请求生成的,所述第二激活指令中包含有所述第二bank group地址以及所述第二行地址,所述第二激活指令用于指示所述第二访问请求待访问的第二寄存器的行地址。
  5. 根据权利要求4所述的方法,其特征在于,所述预设阈值为:
    (tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S);
    其中,tRP为预充电有效周期,tRTP为内存从读取命令发出到tRP之前的延时,tRCD为行地址激活命令发出之后内存对行地址的操作所需要的时间;tCCD_S为异bank group地址下的列地址到列地址操作的延时,tCCD_L为同bank group地址下的列地址到列地址操作的延时。
  6. 根据权利要求4所述的方法,其特征在于,所述内存控制器根据第二时间间隔分别向所述内存发送第一激活指令以及第二激活指令包括:
    所述内存控制器在所述第一行地址和第二行地址中确定优先到达空闲状态的行地址;
    当所述内存控制器确定所述第一行地址优先到达空闲状态时,所述内存控制器向所述内存发送所述第一激活指令,经过所述第二时间间隔后,所述内存控制器向所述内存发送所述第二激活指令。
  7. 根据权利要求4所述的方法,其特征在于,所述内存控制器根据第二时间间隔分别向所述内存发送第一激活指令以及第二激活指令包括:
    所述内存控制器在所述第一行地址和第二行地址中确定优先到达空闲状态的行地址;
    当所述内存控制器确定所述第二行地址优先到达空闲状态时,所述内存控制器向所述内存发送所述第二激活指令,经过所述第二时间间隔后,所述内存控制器向所述内存发送所述第一激活指令。
  8. 一种内存控制器,所述内存控制器在计算机系统中与内存连接,所述内存包括控制电路和多个寄存器,其特征在于,所述内存控制器用于:
    确定访问队列中第一访问集合,所述第一访问集合中包含有连续的多个访问请求,所述第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,所述第一行地址用于指向所述内存中的一行寄存器;
    将所述第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址;
    分别根据修改后的第一访问集合中的第一访问请求和第二访问请求生成第一访问指令和第二访问指令,其中,所述第一访问请求和所述第二访问请求为所述第一访问集合中相邻的访问请求,所述第一访问请求和所述第一访问指 令中包含有第一bank group地址,所述第二访问请求和所述第二访问指令中包含有第二bank group地址;
    按照预设的第一时间间隔分别向所述内存发送所述第一访问指令和所述第二访问指令,所述第一时间间隔小于标准设定的连续发送具有相同bank group地址的两个访问指令的时间间隔,所述第一访问指令用于指示所述内存的控制电路访问所述第一访问请求待访问的第一寄存器,所述第二访问指令用于指示所述内存的控制电路访问所述第二访问请求待访问的第二寄存器。
  9. 根据权利要求8所述的内存控制器,其特征在于,所述内存控制器用于:
    确定所述第一访问集合中的访问请求的数量不小于预设阈值;
    将所述第一访问集合中的多个访问请求中的部分访问请求的第一bank group地址修改为第二bank group地址,以使修改后的第一访问集合中的多个访问请求交替使用第一bank group地址和第二bank group地址。
  10. 根据权利要求9所述的内存控制器,其特征在于,所述预设阈值为:
    (tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S);
    其中,tRP为预充电有效周期,tRTP为内存从读取命令发出到tRP之前的延时,tRCD为行地址激活命令发出之后内存对行地址的操作所需要的时间;tCCD_S为异bank group地址下的列地址到列地址操作的延时,tCCD_L为同bank group地址下的列地址到列地址操作的延时。
  11. 一种内存控制器,所述内存控制器在计算机系统中与内存连接,所述内存包括控制电路和多个寄存器,其特征在于,所述内存控制器用于:
    确定访问队列中第一访问集合,所述第一访问集合中包含有连续的多个访问请求,所述第一访问集合中的多个访问请求中均包含有第一bank group地址以及第一行地址,所述第一行地址用于指向所述内存中的第一行寄存器;
    确定访问队列中的第二访问请求,所述第二访问请求在所述访问队列中位于所述第一访问集合的访问请求之后且与所述第一访问集合的访问请求相邻,所述第二访问请求中包含有所述第一bank group地址以及第二行地址,所述第二行地址与所述第一行地址不同,所述第二行地址用于指向所述内存中的第二行寄存器;
    确定所述第一访问集合中的访问请求的数量小于预设阈值;
    将所述第二访问请求中的第一bank group地址修改为第二bank group地址;
    根据第二时间间隔分别向所述内存发送第一激活指令以及第二激活指令,其中,所述第一激活指令是根据所述第一访问集合中的第一访问请求生成的,所述第一激活指令中包含有所述第一bank group地址以及所述第一行地址,所述第一激活指令用于指示所述第一访问请求待访问的第一寄存器的行地址;所述第二激活指令是根据所述第二访问请求生成的,所述第二激活指令中包含有所述第二bank group地址以及所述第二行地址,所述第二激活指令用于指示所述第二访问请求待访问的第二寄存器的行地址。
  12. 根据权利要求11所述的内存控制器,其特征在于,所述预设阈值为:
    (tRTP+tRP+tRCD-tCCD_S-tCCD_S)/(tCCD_L-tCCD_S);
    其中,tRP为预充电有效周期,tRTP为内存从读取命令发出到tRP之前的延时,tRCD为行地址激活命令发出之后内存对行地址的操作所需要的时间;tCCD_S为异bank group地址下的列地址到列地址操作的延时,tCCD_L为同bank group地址下的列地址到列地址操作的延时。
  13. 根据权利要求11所述的内存控制器,其特征在于,所述内存控制器用于:
    在所述第一行地址和第二行地址中确定优先到达空闲状态的行地址;
    当所述内存控制器确定所述第一行地址优先到达空闲状态时,向所述内存发送所述第一激活指令,经过所述第二时间间隔后,所述内存控制器向所述内存发送所述第二激活指令。
  14. 根据权利要求11所述的内存控制器,其特征在于,所述内存控制器用于:
    在所述第一行地址和第二行地址中确定优先到达空闲状态的行地址;
    当所述内存控制器确定所述第二行地址优先到达空闲状态时,向所述内存发送所述第二激活指令,经过所述第二时间间隔后,所述内存控制器向所述内存发送所述第一激活指令。
PCT/CN2016/083783 2016-05-28 2016-05-28 内存访问方法及内存控制器 WO2017206000A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2016/083783 WO2017206000A1 (zh) 2016-05-28 2016-05-28 内存访问方法及内存控制器
CN201680058616.1A CN108139994B (zh) 2016-05-28 2016-05-28 内存访问方法及内存控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/083783 WO2017206000A1 (zh) 2016-05-28 2016-05-28 内存访问方法及内存控制器

Publications (1)

Publication Number Publication Date
WO2017206000A1 true WO2017206000A1 (zh) 2017-12-07

Family

ID=60478335

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/083783 WO2017206000A1 (zh) 2016-05-28 2016-05-28 内存访问方法及内存控制器

Country Status (2)

Country Link
CN (1) CN108139994B (zh)
WO (1) WO2017206000A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021041041A1 (en) * 2019-08-23 2021-03-04 Rambus Inc. Hierarchical bank group timing
CN117009088A (zh) * 2023-09-25 2023-11-07 上海芯高峰微电子有限公司 内存管理方法、装置、芯片、电子设备及可读存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112631757B (zh) * 2020-12-31 2021-07-13 成都卓讯云网科技有限公司 一种ddr4多用户访问的调度方法和设备
CN113299328A (zh) * 2021-05-21 2021-08-24 深圳市格灵精睿视觉有限公司 随机寻址读写控制方法、控制系统及存储介质
CN117174160A (zh) * 2022-05-26 2023-12-05 长鑫存储技术有限公司 指令的测试方法、装置、测试平台及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292867B1 (en) * 1993-09-08 2001-09-18 Hitachi, Ltd. Data processing system
CN101621469A (zh) * 2009-08-13 2010-01-06 杭州华三通信技术有限公司 数据报文存取控制装置和方法
CN105487988A (zh) * 2015-12-03 2016-04-13 武汉烽火网络有限责任公司 基于存储空间复用提高sdram总线有效访问速率的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050083337A1 (en) * 2002-02-21 2005-04-21 Jaspers Egbert G.T. Method of storing data-elements
US7035150B2 (en) * 2002-10-31 2006-04-25 Infineon Technologies Ag Memory device with column select being variably delayed
US7702839B2 (en) * 2005-04-12 2010-04-20 Nokia Corporation Memory interface for volatile and non-volatile memory devices
CN101123113B (zh) * 2007-09-20 2010-07-14 上海交通大学 同步动态随机访问存储器的访问方法及控制装置
JP2010003067A (ja) * 2008-06-19 2010-01-07 Sony Corp メモリシステムおよびそのアクセス制御方法、並びにプログラム
US9281036B2 (en) * 2013-01-08 2016-03-08 Qualcomm Incorporated Memory device having an adaptable number of open rows
US9224442B2 (en) * 2013-03-15 2015-12-29 Qualcomm Incorporated System and method to dynamically determine a timing parameter of a memory device
CN104252422A (zh) * 2013-06-26 2014-12-31 华为技术有限公司 内存访问方法和内存控制器
CN105608027B (zh) * 2015-12-18 2018-10-19 华为技术有限公司 非易失存储设备和访问非易失存储设备的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292867B1 (en) * 1993-09-08 2001-09-18 Hitachi, Ltd. Data processing system
CN101621469A (zh) * 2009-08-13 2010-01-06 杭州华三通信技术有限公司 数据报文存取控制装置和方法
CN105487988A (zh) * 2015-12-03 2016-04-13 武汉烽火网络有限责任公司 基于存储空间复用提高sdram总线有效访问速率的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021041041A1 (en) * 2019-08-23 2021-03-04 Rambus Inc. Hierarchical bank group timing
CN117009088A (zh) * 2023-09-25 2023-11-07 上海芯高峰微电子有限公司 内存管理方法、装置、芯片、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN108139994B (zh) 2020-03-20
CN108139994A (zh) 2018-06-08

Similar Documents

Publication Publication Date Title
US11237728B2 (en) Method for accessing extended memory, device, and system
WO2017206000A1 (zh) 内存访问方法及内存控制器
JP4742116B2 (ja) アウトオブオーダdramシーケンサ
US8862963B2 (en) Nonvolatile memory, memory controller, nonvolatile memory accessing method, and program
KR100868393B1 (ko) 비휘발성 메모리 제어기 및 휘발성 메모리에 액세스하는방법 및 시스템, 비휘발성 메모리 제어기 및 휘발성 메모리
US9343127B1 (en) Memory device having an adaptable number of open rows
JP2007527592A (ja) Dramの部分的リフレッシュのための方法及び装置
US6963516B2 (en) Dynamic optimization of latency and bandwidth on DRAM interfaces
JP6788517B2 (ja) ハイブリッドメモリ制御器及びその制御方法並びに格納ノード
CN109388517A (zh) 存储器控制器、包括存储器控制器的存储器系统和应用处理器
JP2021507414A (ja) 連動メモリデバイスに対するメモリ要求のスケジューリング
JP2008305350A (ja) メモリシステム、メモリ装置、およびメモリ装置の制御方法
US20080098176A1 (en) Method and Apparatus for Implementing Memory Accesses Using Open Page Mode for Data Prefetching
US7461216B2 (en) Memory controller
JP2014154119A (ja) メモリ制御装置及び半導体記憶装置
US20130191587A1 (en) Memory control device, control method, and information processing apparatus
JP5034551B2 (ja) メモリコントローラ、半導体メモリのアクセス制御方法およびシステム
TWI564787B (zh) 響應第二讀取請求之第一資料相關技術
US20050232060A1 (en) Memory controller controlling cashed dram
KR20170059239A (ko) 이종 메모리들을 포함하는 메모리 장치 및 메모리 시스템
US7536519B2 (en) Memory access control apparatus and method for accomodating effects of signal delays caused by load
TWI761655B (zh) 頁面大小感知調度方法和非暫時性電腦可讀記錄媒體
CN106776373B (zh) 一种面向移动设备的基于闪存的高速缓存系统及方法
US20120310621A1 (en) Processor, data processing method thereof, and memory system including the processor
WO2017156747A1 (zh) 一种内存访问方法以及计算机系统

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: 16903388

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16903388

Country of ref document: EP

Kind code of ref document: A1