CN106155577B - 扩展内存的访问方法、设备以及*** - Google Patents

扩展内存的访问方法、设备以及*** Download PDF

Info

Publication number
CN106155577B
CN106155577B CN201510198452.XA CN201510198452A CN106155577B CN 106155577 B CN106155577 B CN 106155577B CN 201510198452 A CN201510198452 A CN 201510198452A CN 106155577 B CN106155577 B CN 106155577B
Authority
CN
China
Prior art keywords
memory
address
exented
data
access request
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201510198452.XA
Other languages
English (en)
Other versions
CN106155577A (zh
Inventor
崔泽汉
陈明宇
刘垚
阮元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
Original Assignee
Huawei Technologies Co Ltd
Institute of Computing Technology of CAS
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
Priority to CN201910200464.XA priority Critical patent/CN110059020B/zh
Application filed by Huawei Technologies Co Ltd, Institute of Computing Technology of CAS filed Critical Huawei Technologies Co Ltd
Priority to CN201510198452.XA priority patent/CN106155577B/zh
Priority to EP16782466.3A priority patent/EP3279788B1/en
Priority to EP19189059.9A priority patent/EP3674877B1/en
Priority to PCT/CN2016/073304 priority patent/WO2016169318A1/zh
Priority to CA2983479A priority patent/CA2983479C/en
Priority to BR112017022547-6A priority patent/BR112017022547B1/pt
Priority to SG11201708477UA priority patent/SG11201708477UA/en
Priority to JP2017555264A priority patent/JP6685323B2/ja
Priority to KR1020177032218A priority patent/KR102168017B1/ko
Publication of CN106155577A publication Critical patent/CN106155577A/zh
Priority to US15/788,990 priority patent/US10545672B2/en
Application granted granted Critical
Publication of CN106155577B publication Critical patent/CN106155577B/zh
Priority to US16/744,795 priority patent/US11237728B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • 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
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0064Latency reduction in handling transfers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

本发明实施例公开了一种扩展内存的访问方法、设备以及***。其中,方法包括:接收计算机的处理器***串行发送的N+1条内存访问请求,每条内存访问请求中访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在所述扩展内存上的存储地址,N≥1且N为整数;在接收到第一条内存访问请求时,向扩展内存发送读取请求,并向处理器返回特定响应消息;在从扩展内存读取待访问数据的过程中,每接收到一条内存访问请求,在经过内存总线协议规定的时延内,向处理器返回特定响应消息,直到待访问数据被写入数据缓冲器;之后,将待访问数据返回给所述处理器***。

Description

扩展内存的访问方法、设备以及***
技术领域
本发明涉及计算机领域,尤其涉及扩展内存的访问方法、设备以及***。
背景技术
大数据(Big Data)的应用对计算机处理能力提出了越来越高的要求。提高计算机处理能力的一个重要指标在于内存容量的提升,一种应用场景下,在现有内存芯片集成度有限的条件下,通过扩展芯片连接多个内存芯片,从而实现内存容量的扩展。另外一个应用场景是,越来越多的计算机***中,增加应用加速芯片来进行某些特定应用的加速处理,比较常见的如GPU(Graphic Processing Unit,图形处理单元)加速,用来对图形图像数据进行处理,这类应用加速芯片一般可采用ASIC(Application Specific IntegratedCircuit,专用集成电路)或者FPGA(Field Programmable Gate Array,现场可编程门阵列)来实现。
上述两种应用场景可通过图1进行说明,图1中包括处理器(Processor)***101,***内存102,内存扩展芯片103,以及扩展内存104,其中,处理器***101中集成了内存控制器1011。其中,***内存102通过内存总线和处理器***101相连,扩展内存104通过内存总线和内存扩展芯片103相连,处理器***101通过内存控制器1011和内存扩展芯片103可以采用多种方式总线相连接。
现有技术一中的实现方式是采用I/O总线来连接处理器***101和内存扩展芯片103,常用的I/O总线为PCI-E(Peripheral Component Interconnect-Express,高速外设部件互连标准)、Intel QPI(Quick Path Interconnect,快速通道互连)或者AMD HT(HyperTransport,超级传输)总线。采用上述I/O总线,会存在延迟较大的问题,且需要对内存扩展芯片103进行精细的流水线设计,以此掩盖数据访问的延迟。
现有技术二中的实现方式是采用内存总线来连接处理器***101和内存扩展芯片103,采用内存总线能够使得内存扩展芯片103和处理器***101能够直接共享扩展内存104,访存的延迟较小。
现有技术二中这种技术手段也存在如下问题:由于在处理器***101和扩展内存104之间存在内存扩展芯片103,当处理器***101发出对扩展内存104中的数据进行访问的内存访问请求后,集成内存控制器1011接受该内存访问请求后,采用DDR(Double DataRate)协议访问扩展内存104时,内存扩展芯片103的存在带来了额外的时延,使得内存访问请求的处理结果无法按照DDR协议要求的时延内返回,从而影响上述计算机***对扩展内存104访问的可行性。
为了解决上面时延的问题,现有技术采用修改内存控制器的时序参数的方式,即通过对处理器内部集成的内存控制器的时序参数进行修改,使得处理器的时序参数大于内存实际的内存访问延迟,但是由于处理器支持的最大时序参数设置范围有限,很难补偿访问扩展内存过程中额外的访问延迟。
发明内容
基于上述问题,本发明实施例提供一种扩展内存的访问方法、设备以及***,有效地解决在访问扩展内存过程中的时延无法补偿的问题。
本发明实施例第一方面提供了一种计算机对扩展内存的访问方法,其中,计算机中的处理器***通过内存总线连接到扩展内存***,扩展内存***包括扩展内存控制器和扩展内存,当计算机的处理器***需要访问存储在扩展内存上的待访问数据时,该方法包括:
扩展内存控制器接收计算机的处理器***串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,其中,物理地址为待访问数据在扩展内存上的存储地址,所述N≥1且N为整数;
在接收到N+1条内存访问请求中的第一条内存访问请求时,扩展内存控制器根据所述第一条内存访问请求携带的访问地址确定物理地址,向扩展内存发送获取待访问数据的读取请求,并向所述处理器***返回特定响应消息,读取请求包含所述物理地址;
在接收到扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,扩展内存控制器向处理器***返回特定响应消息;
在接收到扩展内存返回的待访问数据后,扩展内存控制器将待访问数据写入数据缓冲器,并停止向所述处理器***返回特定响应消息;
当再次接收到N+1条内存访问请求中的一条内存访问请求时,扩展内存控制器从数据缓冲器读取待访问数据,并返回给所述处理器***。
结合第一方面,在第一种可能的实现方式中,上述N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。
结合第一方面以及第一方面的第一种可能的实现方式,在第二种可能的实现方式中,扩展内存控制器预先设置N+1条内存访问请求中每条内存访问请求所包含的访问地址和待访问数据在所述扩展内存中的物理地址的映射关系;扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址,包括:扩展内存控制器根据第一条内存访问请求携带的访问地址查询映射关系,得到物理地址。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,当扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址之后,该方法实施方式还包括:扩展内存控制器在数据缓冲器中创建记录,该记录包括标签字段和数据字段,将标签字段设置为物理地址。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述记录中还包括有效性字段,所述方法还包括:所述扩展内存控制器将所述有效性字段设置为无效。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求之后,该方法实施方式还包括:扩展内存控制器根据每一条内存访问请求携带的访问地址查询映射关系,得到物理地址;根据物理地址查询数据缓冲器中的记录,确定记录的有效性字段为无效时,生成特定响应消息。
结合第一方面的第四种可能的实现方式,在第六种可能的实现方式中,在接收到扩展内存返回的待访问数据后,扩展内存控制器将待访问数据写入数据缓冲器,包括:扩展内存控制器在数据缓冲器查找物理地址对应的记录,将上述记录中的数据字段设置为待访问数据,并将有效性字段设置为有效。
本发明实施例第二方面提供了一种对扩展内存的访问方法,计算机通过内存总线连接到扩展内存***,扩展内存***包括扩展内存控制器和扩展内存,当计算机的处理器***需要访问存储在扩展内存上的待访问数据时,该方法实施例包括:
处理器***接收待访问数据的存储地址;
所述待访问数据的存储地址,处理器***生成N+1条内存访问请求,N+1条内存访问请求包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在扩展内存上的存储地址,所述N≥1且N为整数;
处理器***将上述N+1条内存访问请求发送给扩展内存控制器。
结合第二方面,在第一种可能的实现方式中,所述根据所述待访问数据的存储地址,所述处理器***生成N+1条内存访问请求之前,还包括:
根据所述计算机从所述扩展内存获取数据的时延参数,确定数值N,其中,所述计算机从所述扩展内存获取数据的时延参数包括以下任一参数之一或其任意组合:内存访问请求通过所述扩展内存控制器到达所述扩展内存的传输延迟tPD1,所述内存访问请求读取的数据从所述扩展内存到达所述扩展内存控制器的传输延迟tPD2,以及所述处理器***发出连续两条内存访问请求的时间间隔T_Interval。
结合第二方面的第一种可能的实现方式中,在第二种可能的实现方式中,根据所述计算机从所述扩展内存获取数据的时延参数,确定数值N包括:确定数值N,其中N≥[(tPD1+tPD2)/T_Interval],其中,[*]为取整函数。
结合第二方面的第一种可能的实现方式以及第二种可能的实现方式中,在第三种可能的实现方式中,所述连续两条内存访问请求的时间间隔T_Interval为:tGAPmin=tRCD+tRTP+tRP,或者T_Fence(即处理器执行Fence指令所需要的时延)。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式以及第二方面的第三种可能的实现方式,在第四种可能的实现方式中,根据待访问数据的存储地址,处理器***生成N+1条内存访问请求,该方法实施方式还包括:
待访问数据的存储地址为虚拟地址,根据待访问数据的虚拟地址进行虚拟地址到物理地址的转换,得到与虚拟地址Addr_Virtual对应的物理地址Addr_Physical;
根据物理地址Addr_Physical生成N个访问地址Addr_Physical(n),其中,n为整数且1≤n≤N,其中,N个访问地址的行地址Addr_Physical_Row(n)=n*M+Addr_Physical_Row,n为整数且1≤n≤N,M为扩展内存所包括的内存行的数目,Addr_Physical_Row为物理地址Addr_Physical的行地址;所述N个物理地址中每个物理地址除行地址之外的其他地址和所述物理地址Addr_Physical除行地址之外的其他地址相同;
处理器***根据Addr_Physical以及Addr_Physical(n),n为整数且1≤n≤N生成上述N+1条内存访问请求。
本发明实施例第三方面提供了一种计算机中的扩展内存控制器,应用于计算机的处理器***对扩展内存中待访问数据的访问,计算机中的处理器***通过内存总线连接到扩展内存***,扩展内存***包括扩展内存控制器和扩展内存,该扩展内存控制器包括:
接收模块,用于接收来自计算机的处理器***串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数;
执行模块,用于在接收到所述N+1条内存访问请求中的第一条内存访问请求时,根据所述第一条内存访问请求携带的访问地址确定物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,生成获取所述待访问数据的读取请求,并向所述处理器***返回特定响应消息,所述读取请求包含所述物理地址;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的一条内存访问请求,在内存总线协议规定的访问时延内,产生特定响应消息;在接收到扩展内存返回的待访问数据后,将待访问数据写入数据缓冲器;在待访问数据被写入到所述数据缓冲器之后,当再次接收到N+1条内存访问请求中的一条内存访问请求时,从数据缓冲器读取所述待访问数据,并发送给所述发送模块;
发送模块,用于向扩展内存发送所述读取请求;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的一条内存访问请求,在内存总线协议规定的访问时延内,向处理器***返回特定响应消息;以及从执行模块接收待访问数据,将待访问数据发送给处理器***。
结合第三方面,在第一种可能的实现方式中,N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。
结合第三方面以及第三方面的第一种可能的实现方式,在第二种可能的实现方式中,执行模块,还用于预先设置N+1条内存访问请求中每条内存访问请求所包含的访问地址和待访问数据在所述扩展内存中的物理地址的映射关系;根据第一条内存访问请求携带的访问地址查询第一条内存访问请求所包含的地址和待访问数据在扩展内存中的物理地址之间的映射关系,确定待访问数据在扩展内存中的物理地址。
结合第三方面第二种可能的实现方式,在第三种可能的实现方式中,执行模块,还用于当根据第一条内存访问请求携带的访问地址确定物理地址之后,在所述数据缓冲器中创建记录,所述记录中包括标签字段和数据字段,将所述标签字段设置为所述物理地址。
结合第三方面第三种可能的实现方式,在第四种可能的实现方式中,所述记录中还包括有效性字段,所述执行模块,还用于将所述记录中的所述有效性字段设置为无效。
结合第三方面第四种可能的实现方式,在第五种可能的实现方式中,执行模块,还用于在每接收到一条内存访问请求之后,查询每一条内存访问请求携带的访问地址查询所述映射关系,确定物理地址;根据物理地址查询数据缓冲器中的记录,确定记录的有效性字段为无效时,生成特定响应消息。
结合第三方面第四种可能的实现方式,在第六种可能的实现方式中,执行模块,在接收到扩展内存返回的待访问数据之后,还用于在数据缓冲器查找物理地址对应的记录,将记录中的数据字段设置为待访问数据,并将有效性字段设置为有效。
本发明实施例第四方面提供了一种包括扩展内存的计算机***,该计算机***包括:处理器***、主存储器、如第三方面或第三方面的各个实现方式中所述扩展内存控制器、以及扩展内存,所述扩展内存控制器与所述扩展内存相连,所述扩展内存控制器通过内存接口连接到所述处理器***,所述处理器***连接所述主存储器,主存储器用于存放程序存储执行指令,所述处理器***用于执行所述主存储器存储的所述执行指令,以使得处理器***执行如第二方面或第二方面的各个实施方式所述的计算机对扩展内存***中扩展内存的访问方法。
基于上述技术方案,本发明实施例所提供的扩展内存的访问方法、设备以及***,扩展内存控制器接收到处理器***串行发送的N+1条内存访问请求(N为大于等于1的正整数)后,发送读取待访问数据的请求给扩展内存,在从扩展内存读取待访问数据的过程中,扩展内存控制器对于接收到的内存访问请求,会在内存总线协议规定的访问时延内,返回特殊响应消息,这样持续到待访问数据被读取并被写入到数据缓冲器,并在下一个内存访问请求的执行周期内,将待访问数据返回到处理器中。上述过程,利用了N+1个存在行缺失的内存访问请求执行过程中所带来的时延,有效弥补了扩展内存控制器从扩展内存中读取待访问数据,并将待访问数据返回给处理器***的读取时延。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。
图1是现有技术中包含扩展内存的计算机***的硬件组成示意图。
图2是本发明实施例中所提供的计算机***硬件的组成结构示意图。
图3是本发明实施例中计算机对扩展内存的访问时延的分析示意图。
图4是DDR协议中针对内存访问请求执行时的时序分析示意图。
图5A是扩展内存中数据访问处理方法的实施例的流程示意图。
图5B是根据待访问数据的存储地址生成N+1条访问地址的流程示意图。
图6是本发明实施例中处理器检测出的扩展内存空间的示意图。
图7是扩展内存控制器对内存访问请求进行处理的实施例的流程示意图。
图8是扩展内存控制器按序执行的实施例的流程示意图。
图9是扩展内存控制器乱序执行的实施例的流程示意图。
图10是扩展内存控制器实施例中的组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。
一般的,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构、以及其他类型的结构。此外,本领域的技术人员可以明白,各实施例可以用其他计算机***配置来实施,包括手持式设备、多处理器***、基于微处理器或可编程消费电子产品、小型计算机、大型计算机以及类似计算设备。各实施例还能在任务由通过通信网络连接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。
各实施例可被实现为计算机实现的过程、计算***、或者诸如计算机程序产品或计算机***执行示例过程的指令的计算机程序的计算机存储介质。例如:计算机可读存储介质可经由易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘(Compact Disc)和类似介质中的一个或多个来实现。
贯穿本说明书,术语“处理器***(Processor System)”指的是包含处理器以及内存控制器的***,当内存控制器集成在处理器(Processor)内部时,该处理器***指的是包含该内存控制器的处理器芯片。结合本发明的实施例的应用场景,处理器***中的处理器芯片用来接收目标程序执行过程中所生成的内存访问指令,根据待访问数据的地址生成内存访问请求,并将内存访问请求发送给内存控制器,内存控制器根据内存总线协议将内存访问请求分解为可供内存芯片执行的数据读写请求。
贯穿本说明书,术语“内存控制器(Memory Controller)”是计算机***内部控制内存的计算机组件,通过内存控制器使得内存与处理器之间能够进行数据的交换。在具体应用中,内存控制器可以独立存在于处理器(Processor)之外,也可以集成在处理器中。其中,本说明书中的“内存控制器”是用来实现对***内存(System Memory)的访问进行控制,更多情况下,内存控制器集成在处理器中,如内存控制器独立于处理器而存在时,内存控制器需要和处理器相连接。
贯穿本说明书,术语“扩展内存控制器”指的是通过内存接口和内存控制器相连接,作为处理器对扩展内存进行访问的桥梁。
贯穿本说明书,术语“扩展内存”指的是通过内存扩展芯片所连接的存储器,用来实现内存的扩展。扩展内存可以采用如下的形式但不限于如下的形式实现,譬如:DRAM(Dynamic Random Access Memory,动态随机存取存储器)、PCM(Phase-Change Memory,相变存储器)、以及MRAM(Magnetic Random Access Memory,磁性随机存储器)等。
贯穿本说明书,术语“内存访问指令”,又简称为“访存指令”,指的是源代码(Source Code)通过编译(Compile)得到目标代码(Object Code)中所包含Load/Store等访存指令时,处理器就需要这些访存指令。在执行的过程中,处理器需要通过虚拟地址(Virtual Address)到物理地址(Physical Address)转换过程,将访存指令中的虚拟地址转换为物理地址,并生成内存访问请求,发送给内存控制器(Memory Controller)执行。
贯穿本说明书,术语“内存访问请求”,又简称为“访存请求”,指的是由处理器对访存指令执行后所生成的对内存中的数据进行访问的请求。访存请求包括:读请求和写请求。
贯穿本说明书,术语“数据缓冲器”指的是用来存储从扩展内存中读取的待访问数据的存储器件,可以集成在扩展内存控制器内部,也可以和扩展内存控制器独立实现。
本发明实施例对应的***硬件架构
在介绍本发明具体实施例之前,先对本发明实施例对应的***硬件组成结构进行介绍,参看图2,包括如下组件:
处理器***(Processing System)201:包括处理器2011以及内存控制器2012,作为指令的执行组件,在本发明所提供的实施例中,处理器***201用来接收可执行程序在执行过程中生成的内存访问指令,并根据内存访问指令生成内存访问请求。其中,处理器2011用于对内存访问(Memory Access)指令进行处理,生成内存访问请求,并将内存访问请求发送给内存控制器2012。内存控制器2012根据内存访问请求中所包含的位置属性信息,判断是访问***内存202或是扩展内存204,当确定是访问***内存202时,将内存访问请求发送给***内存202;当确定是访问扩展内存204时,将内存访问请求发送给扩展内存控制器203。
***内存(Memory)202:指的是通过内存总线直接和处理器***201相连的存储器,用来暂时存储处理器***201在执行过程中的运算数据。
扩展内存控制器(Extended Memory Controller)203:用于连接扩展内存204,作为处理器***201对扩展内存204进行内存访问处理的桥梁。扩展内存控制器203通过如下类型的总线和处理器201相连接,这些类型的总线包括但不限于:DDR(Double Data Rate,双倍数据速率)总线、LPDDR(Low Power DDR,低功耗DDR)总线、或者Wide I/O总线。在扩展内存控制器203中,至少包括如下模块:执行模块2031,用来执行对扩展内存中待访问数据的读取操作,以及数据缓冲器2032,用来暂存执行模块2031从扩展内存204中读取的待访问数据。需要说明的是,数据缓冲器2032作为待访问数据的缓存组件,可以集成在扩展内存控制器203中,也可以独立于扩展内存控制器203实现。对此,本发明的实施例不加以限定。
扩展内存(Extended Memory)204:指的是区别于***内存202,作为扩展的存储器使用,用于存储处理器201执行过程中的运算数据。扩展内存204可以采用不同的存储介质实现,譬如:DRAM(Dynamic Random Access Memory,动态随机存取存储器)、PCM(Phase-Change Memory,相变存储器)、以及MRAM(Magnetic Random Access Memory,磁性随机存储器)等。
在图2所示的***硬件组成结构示意图中,由于作为内存扩展芯片具体实现的扩展内存控制器203的存在,使得处理器***201发出的对扩展内存204中数据的读取请求在执行的过程中,会存在较长的时延,无法在DDR协议要求的访问时延内返回待访问的数据。结合图2,并通过图3对扩展内存的访问时延问题进行分析:
图3中,执行对扩展内存204中的数据进行读取,包括如下三部分时延:
-tPD1:即处理器***201发出的内存访问请求从“扩展内存控制器203”到达“扩展内存204”的传播时延,包含信号的传输时延,以及扩展内存控制器203内的逻辑处理时延。
-tRL:即扩展内存204从“收到内存访问请求”至“将待访问数据传输到扩展内存204和扩展内存控制器203上的总线”的时延。
-tPD2:从扩展内存204读取的数据从“扩展内存204至扩展内存控制器203”的传输时延,以及从“扩展内存控制器203”至“处理器***201中的内存控制器2012”的传输时延。
对于处理器,实际的访存时延为tPD1+tRL+tPD2,这就违反了内存访问协议(如:DDR协议)所要求的tRL时延内返回待访问数据的要求,因此,如何弥补时延tPD1+tPD2就成为本发明实施例的一个出发点。
现有的内存总线协议(常用的是DDR协议)是固定延迟的同步访存协议。对于一次内存访问的执行分如下三个阶段:
A、激活(Activate):即由内存控制器(Memory Controller)发送Activate(激活)命令和行地址(Row Address),把行地址对应的DRAM中的一行数据读取到行缓冲区(RowBuffer)中;
B、读写(Read/Write):即由内存控制器发送Read/Write命令和列地址(ColumnAddress),读写行缓冲区中列地址对应的数据。
C、预充电(Pre-Charge):即由内存控制器发送Pre-Charge命令,关闭行缓冲区。
而对于连续两次内存访问请求,根据其行地址是否相同,可以分为如下两种类型:
(1)行命中(Row Hit),即两次内存访问请求所需要操作的数据位于同一个Bank中的同一行(即Row地址相同),因此,在第一次访问的读写(Read/Write命令)执行后,该行数据仍然位于行缓冲区(Row Buffer)中,因此,不需要进行第一次内存访问请求的预充电阶段以及第二次内存访问请求的激活操作阶段,内存控制器可以直接发送第二次内存访问请求的读写命令以及列地址。
(2)行缺失(Row Miss),即两次内存访问位于同一个Bank中的不同行,在执行完第一次内存访问请求的读写(Read/Write)阶段后,就需要先执行预充电操作(Pre-Charge命令),关闭行缓冲区,然后对第二次内存访问请求的行进行激活操作(Activate命令),把该行数据读取到行缓冲区,最后才能发送第二次内存访问请求的读写命令以及列地址。
图4示出了DDR协议中针对内存访问请求执行过程中的时序要求,其中:
tRL:即从“读(RD)命令发出”到“数据出现在内存总线上”的固定延迟。
tRCD:即从“激活(ACT)命令发出”到“发送读(RD)命令”的最小时间间隔。
tRTP:即从“读(RD)命令发出”到“发送预充电(PRE)命令”的最小时间间隔。
tRP:即从“预充电(PRE)命令发出”到“发送下一个激活(ACT)命令”的最小时间间隔。
根据上面的参数可以计算,发生行缺失的两个读(RD)命令之间的最小时间间隔为tGAPmin=tRCD+tRTP+tRP。
另一方面,还可以利用内存屏障(Memory Barrier)技术,其中内存屏障也称内存栅栏(Memory Bar),内存栅障(memory fence),屏障指令(Fence instruction)等,是一类同步屏障指令,使得CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。
为了弥补扩展内存访问过程中的时延,本发明实施例利用上述多条发生行缺失的内存访问请求执行过程中的时延来弥补对扩展内存中的待访问数据的访问时延。对于应用程序执行对扩展内存204中的数据进行访问的需求,通过软件(如编译器,Compiler)将扩展内存的访问请求编译为多条行缺失的内存访问请求或者在生成的多条内存访问请求之间***Fence指令,利用发生行缺失的内存访问请求的时延以及执行多条内存访问请求之间的Fence指令所带来的时延,在执行多条内存访问请求的过程中,扩展内存中的待访问数据会先被读取到扩展内存控制器中(数据预取阶段),然后从扩展内存控制器通过内存控制器读取到处理器中(数据读取阶段)。
本发明的方法实施例
图5示出了计算机对扩展内存的访问方法实施例的流程示意图,其中,包括如下步骤:
510、处理器***接收待访问数据的存储地址。
具体的,通过编译器得到的可执行程序在执行的过程中,产生N+1条内存访问指令,这N+1条内存访问指令均包含待访问数据的存储地址。具体实现中,待访问数据的存储地址为虚拟地址。
530、处理器***根据待访问数据的存储地址,处理器***生成N+1条内存访问请求,N+1条内存访问请求包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在扩展内存上的存储地址,所述N≥1且N为整数。
具体的,生成的N+1个访问地址互不相同,这样就能够避免依据这N+1个访问地址所生成的内存访问请求被处理器在MSHR(Miss-status Handling Registers)内合并。这N+1个访问地址指向同一个物理地址,在具体实现中,这N+1个访问地址和待访问数据在扩展内存中的物理地址存在映射关系。
550、处理器***将生成的N+1条内存访问请求发送给扩展内存控制器。
具体的,为了弥补对扩展内存中的待访问数据的访问时延,在处理器***中,处理器在生成这N+1条内存访问请求后,将这N+1条内存访问请求发送给处理器***中的内存控制器。处理器将这N+1条内存访问请求发送给内存控制器,可以采用依次间隔一定时间发送的方式,也可以一起发送给内存控制器。内存控制器接收到这N+1条内存访问请求之后,判断彼此访问地址不同(尤其是行地址不同),则会识别为行缺失,这样会根据内存访问协议中发生行缺失的内存请求发送时延要求,串行发送这N+1条内存访问请求。
需要说明的是,这N+1内存访问指令是包含在目标程序(Object Program)中,该目标程序是由源程序(Source Program)经过编译器(compiler)的编译得到,对源程序进行编译的计算机***可以是本发明的实施例中的计算机***,也可以是第三方计算机***。
对于包含扩展内存***的计算机,软件开发者在开发源程序时,会定义每一个变量的类型以及存储位置。对于一些变量,程序员定义暂存在***内存中,对于另一些变量,程序员定义暂存在扩展内存中。
对于定义在扩展内存中的变量,在程序使用过程中,需要涉及到对该变量(即本说明书所称的“待访问数据”)的读写操作。本发明的实施例中,在对源程序编译的过程中,当存在对存储在扩展内存的某一待访问数据访问需求时,编译器会根据扩展内存的时延参数以及内存总线协议的时延要求,将对待访问数据的访问请求编译为N+1条内存访问请求,N≥1且N为整数。
进一步的,按照如下方式确定需要发送的内存访问请求的数目。
(1)内存访问请求“通过扩展内存控制器”到达“扩展内存的传输延迟”为tPD1,根据所述内存访问请求读取的数据“从扩展内存”到达“所述扩展内存控制器”的传输延迟为tPD2。
具体的,当包含扩展内存的计算机***一旦确定,上述的两个参数就可以确定。
(2)确定符合DDR协议的发生行缺失的连续两条内存访问请求从处理器发出的时间间隔为tGAPmin=tRCD+tRTP+tRP。
具体的,参看图4以及相关文字的介绍,两条发生行缺失的内存访问请求从处理器发出的时间间隔至少为tRCD+tRTP+tRP,上述参数由DDR协议明确规定。
可拓展的,连续两条内存访问请求从处理器的时间间隔,还可以由处理器在内存访问请求生成后,在每一条内存访问请求之后***一条fence指令,即利用fence指令的执行实现时延,其中,Fence指令的执行所花的时间为T_Fence。
(3)根据上述参数计算出需要生成的内存访问请求的个数N,即N≥[(tPD1+tPD2)/(tRCD+tRTP+tRP)],其中,[*]为取整函数。可拓展的,当采用处理器在生成的N+1条内存访问请求中***Fence指令后,所计算出来的N≥[(tPD1+tPD2)/T_Fence],其中,[*]为取整函数。T_Fence即处理器执行Fence指令所需要的时延。
具体实现中,根据待访问数据的存储地址,生成N+1个访问地址可以采用如下的步骤551-553得到,如图5B所示:
551、待访问数据的存储地址为虚拟地址,根据待访问数据的虚拟地址Addr_Virtual进行虚拟地址到物理地址的转换,得到与虚拟地址Addr_Virtual对应的物理地址Addr_Physical。
需要说明的是,一般情况下,处理器接收到内存访问指令中包含的地址是虚拟地址,根据待访问数据的虚拟地址进行虚拟地址到物理地址的转换,得到与虚拟地址对应的物理地址。
552、根据物理地址Addr_Physical生成N个访问地址Addr_Physical(n),其中,n为整数且1≤n≤N,N个访问地址的行地址Addr_Physical_Row(n)=n*M+Addr_Physical_Row,n为整数且1≤n≤N,M为扩展内存所包括的内存行的数目,Addr_Physical_Row为物理地址Addr_Physical的行地址;N个物理地址中每个物理地址Bank地址和所述物理地址Addr_Physical的Bank地址相同。
具体的,为了生成N+1条存储行缺失的内存访问请求,就需要保证这N+1条内存访问请求的地址中bank地址相同,而行地址是不同的。
这就需要重新定义扩展内存的地址空间。参考图6,以N=1为例,处理器根据待访问数据的物理地址,生成两个访问地址,从而生成两条针对扩展内存的内存访问请求。
在图6中,处理器所能够检测出的内存空间包括两部分:即扩展内存实际内存空间,以及影子空间。其中,扩展内存对应的内存空间包括的内存行为M行,影子空间和扩展内存对应的内存空间具有相同的大小(行列的大小均一致)。为了保证这两条内存访问请求是作为行缺失的内存访问请求,需要保证这两条内存访问请求的地址具有bank地址相同,行地址不同的特征。
因此,内存访问请求的地址中,一条内存访问请求的行地址是i,另一条内存访问请求的行地址是i+M,这样就确保了两者行地址是不同的。另外,影子空间中的行地址减去偏移量M,就得到了待访问数据在扩展内存空间中的物理地址对应的行地址,这样就确保了这两个地址指向扩展内存上的同一物理地址。
另外,对于扩展内存中的物理地址,除行地址之外,该物理地址中还包括Bank地址,保证生成的N+1个访问地址具有Bank地址相同,行地址不同,这样处理器***中的内存控制器在接收到这N+1条内存访问请求时,就能够识别为行缺失。
需要说明的是,为了简化本发明实施例的描述,由待访问数据的物理地址生成N+1条访问地址,是默认为处于一个内存芯片(Chip)中。具体实现中,该访问地址作为内存的物理地址,根据内存物理地址的要求,除了Bank地址、行地址之外,还包括:Channel地址、DIMM地址、Rank地址、Chip地址,因此,方案的具体实现中,可以设定“生成的N+1个访问地址”和“待访问数据的物理地址”的Channel地址、DIMM地址、Rank地址、Chip地址保持一致。
可以理解,上述实现方式采用N=1举例,对于其他的取值,可以按照类似的过程来生成内存访问请求的地址,并创建N+1条内存访问请求。
553、处理器***根据Addr_Physical以及Addr_Physical(n),n为整数且1≤n≤N生成N+1条内存访问请求。
上述实施例中,计算机中处理器***在对扩展内存中的待访问数据进行访问的过程中,由处理器据此生成N+1条内存访问请求,所生成的N+1条内存访问请求中所包含的访问地址具有相同的bank地址,及不同的行地址,这样由集成在处理器中的内存控制器执行时,会触发行缺失的内存访问请求,利用在执行这N+1条具有行缺失的内存访问请求的过程中,使得扩展内存控制器能够根据这个处理时延,将待访问数据从扩展内存读取出来,并最终返回到处理器。上述实现方式,有效地利用了行缺失情况下的内存访问请求执行过程中的延时,弥补了待访问数据无法在指定的时延范围中返回数据的问题。
图7示出了扩展内存控制器在接收到处理器***所发送的N+1内存访问请求之后的处理过程。其中,该扩展内存***包括:扩展内存控制器和扩展内存,所述计算机中的处理器***通过内存总线连接到扩展内存控制器,当计算机的处理器***需要访问存储在扩展内存上的待访问数据时,该方法实施例包括:
710、扩展内存控制器接收计算机的处理器***串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数。
具体的,按照步骤550所描述的过程,扩展内存控制器接收到处理器***串行发送的N+1条内存访问请求,这N+1条内存访问请求所包含的访问地址互不相同,且这N+1个访问地址都指向同一物理地址。
730、在接收到N+1条内存访问请求中的第一条内存访问请求时,扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址,向扩展内存发送读取请求,并向处理器***返回特定响应消息,读取请求携带所述物理地址。
具体的,当接收到第一条内存访问请求时,扩展内存控制器根据其访问地址确定物理地址,并向扩展内存发送针对该物理地址的读取请求,该读取请求用于读取扩展内存中的待访问数据。
750、在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,扩展内存控制器向处理器***返回特定响应消息。
具体的,由于读取待访问数据的过程需要较长的时延,且内存总线协议是固定延迟的同步访存协议,因此,针对每一个内存访问请求,扩展内存控制器需要返回一个响应消息,故扩展内存控制器会向处理器返回针对第一条内存访问请求的特定响应消息。需要说明的是,特定响应消息是处理器和扩展内存控制器约定好的一个特殊的识别码,比如,可以采用0x5a5a5a5a5a5a5a5a作为这一特殊识别码。
需要说明的是,上述特殊识别码是一种可自定义的识别码,在具体实现中,还可以采用其他的识别码。对此,本发明的所有实施例均不加以限定。
770、在接收到扩展内存返回的待访问数据之后,扩展内存控制器将待访问数据写入数据缓冲器,并停止向所述处理器***返回特定响应消息。
具体的,在步骤730中,由扩展内存控制器发送的读取请求发送到扩展内存中,并从扩展内存读取待访问数据的过程需要较长的时延,在这个阶段,处理器发送的N+1条内存访问请求中会存在一些内存访问请求到达扩展内存控制器,此时,扩展内存控制器收到这些内存访问请求后,就会按照内存总线协议要求的时延内向处理器返回特定响应消息,以便告知处理器待访问数据还未获取到。当扩展内存控制器接收到从扩展内存返回的待访问数据时,则会将待访问数据写入数据缓冲器。
需要说明的是,数据缓冲器可以集成在扩展内存控制器中,也可以独立实现于扩展内存控制器之外。
790、当再次接收到N+1条内存访问请求中的一条内存访问请求时,扩展内存控制器从数据缓冲器读取待访问数据,并返回给处理器。
具体的,由于内存总线协议是固定延迟的同步访存协议,当待访问数据被写入到数据缓冲器之后,在下一个内存访问请求的执行周期内,扩展内存控制器将待访问数据从数据缓冲器读取,并返回给处理器***。
进一步的,N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。具有这个特征的内存访问请求,会被集成在处理器的内存控制器识别为行缺失(Row Miss),进而在执行这N+1条内存访问请求的过程中,能够产生内存访问协议规定的时延。
进一步的,扩展内存控制器预先设置所述N+1条内存访问请求中每条内存访问请求所包含的访问地址和待访问数据在所述扩展内存中的物理地址的映射关系。扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址,包括:扩展内存控制器根据第一条内存访问请求携带的访问地址查询映射关系,确定上述物理地址。
进一步的,步骤730中,当扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址之后,该方法实施例还包括:扩展内存控制器在数据缓冲器中创建记录,记录中包括标签字段和数据字段,将标签字段设置为物理地址。
进一步的,步骤730中,记录中还包括有效性字段,该方法实施例还包括:扩展内存控制器将有效性字段设置为无效。
进一步的,步骤750中,在从所述扩展内存读取所述待访问数据的过程中,所述扩展内存控制器每接收到一条内存访问请求之后,该方法还包括:扩展内存控制器查询每一条内存访问请求携带的访问地址查询映射关系,确定物理地址;根据物理地址查询数据缓冲器中的记录,确定记录的有效性字段为无效时,生成特定响应消息。
进一步的,步骤750中,在扩展内存控制器将待访问数据写入数据缓冲器包括:扩展内存控制器在数据缓冲器查找物理地址对应的记录,在记录中将数据字段设置为待访问数据,并将有效性字段设置为有效。
通过上述实现过程,扩展内存控制器在接收到第一条内存访问请求后,发送读取待访问数据的请求给扩展内存,在从扩展内存读取待访问数据的过程中,扩展内存控制器对于接收到的内存访问请求,会在内存总线协议规定的访问时延内,返回特殊响应消息,以便处理器按照行缺失的要求执行下一个内存访问请求的发送,扩展内存控制器会将读取到的数据暂存在数据缓冲器,并在下一个内存访问请求的执行周期内,将待访问数据返回到处理器中。上述过程,利用了N+1个行缺失的内存访问请求的执行所带来的时延,有效弥补了扩展内存控制器从扩展内存中读取待访问数据,并将待访问数据返回给处理器的时延。
根据实验得到的经验值,在扩展内存的级数不多的情况下,对扩展内存中的数据进行待访问数据的读写时,N=1,即产生两个内存访问请求就能够弥补从扩展内存中读取数据的时延,下面以N=1来介绍两种具体的实现过程:
一、按序执行的方式(参看图8)
根据图6中的包含扩展内存的内存空间,可以看出只需要虚拟一个影子空间即可实现,以图6为例,并结合图2的***结构图,假设待访问数据位于扩展内存中的第i行,其行地址为i,根据前述方法,所生成两个访问地址的行地址分别为:i,以及i+M。两个访问地址的Bank地址设置为相同。上述生成的访问地址被记录在扩展内存控制器中的缓存器中。
根据生成的两个访问地址,构造两次内存访问请求,由处理器发送给扩展内存控制器,假设处理器开始发送的是行地址为i+M的内存访问请求,然后发送行地址为i的内存访问请求。该方法实施例的执行过程如下:
810、扩展内存控制器接收到第一条内存访问请求,解析该请求,得到其访问地址,识别其行地址为i+M,则向处理器返回特殊识别码。
具体的,由于扩展内存控制器根据行地址能够识别出是扩展内存实际内存空间或者是影子空间,本步骤中,识别出行地址为i+M,则确认该访问地址位于影子空间,产生特殊识别码(譬如:0x5a5a5a5a5a5a5a5a),并返回给处理器。
830、扩展内存控制器生成读取请求,该读取请求中包括待访问数据的物理地址,将读取请求发送给扩展内存,并在内存总线协议规定的一次内存访问请求的处理时延内,获取读取的待访问数据至数据缓冲器。
具体的,扩展内存控制器接收到第一条内存访问请求后,生成针对待访问数据的读取请求,并发送给扩展内存。利用内存总线协议规定的内存访问请求的时延中,读取待访问数据到数据缓冲器。
850、经过内存总线协议规定的时延,扩展内存控制器接收到第二条内存访问请求,解析该请求,得到其访问地址,识别其行地址为i,则从数据缓冲器读取待访问数据,并返回给处理器。
具体的,在扩展内存控制器将待访问数据读取到数据缓冲器中之后,又接收到处理器发送的第二条内存访问请求,解析该请求获取访问地址中的行地址,判断其行地址为i,即位于扩展内存的实际内存空间中的地址,则从数据缓冲器中读取待访问数据,并返回给处理器。
上述实施例中,按照事先约定的地址访问的顺序,即接收到的第一条内存访问请求包含的访问地址为影子空间的地址,第二条内存访问请求包含的访问地址为实际内存空间的地址,且影子空间的地址和实际内存空间的地址之间具有映射关系,接收到影子空间地址的内存访问请求则触发从扩展内存中读取待访问数据并缓存到数据缓冲器中,接收到实际内存空间中的地址的内存访问请求则触发从数据缓冲器中读取数据给处理器。
可以理解,上述事先约定的地址访问顺序,还可以按照“先实际内存空间的地址,后影子空间的地址”这种顺序,或者进一步拓展的是,两次内存访问请求中包含的地址均为影子空间的地址(即Add1和Add2),只要确保两次内存访问请求所包含的访问地址具有映射关系,且指向同一物理地址。
二、乱序执行的方式(参看图9)
这里所说的乱序指的是访存请求到达扩展内存控制器的顺序和处理器发送内存访问请求的顺序不一致。这种情况下,无法通过访问地址的行地址是处于影子空间还是实际内存空间的方式来判断内存访问请求的发送顺序。因此,这里,采用查询数据缓冲器中是否存有待访问数据的方式进行判断。
假设待访问数据位于扩展内存中的第i行,其行地址为i,根据前述方法,所生成两个访问地址的行地址分别为:i,以及i+M。两个访问地址的bank地址设置为相同。上述生成的访问地址被记录在扩展内存控制器中的缓存器中。
根据生成的两个访问地址,构造两次内存访问请求,由处理器发送给扩展内存控制器,假设处理器开始发送的是行地址为i+M的内存访问请求,然后发送行地址为i的内存访问请求。该方法实施例的执行过程如下:
910、扩展内存控制器依次接收两条内存访问请求,这两次内存访问请求中的访问地址互不相同,且这两个访问地址指向同一物理地址,该物理地址为待访问数据在扩展内存中的物理地址。
具体的,两次内存访问请求中的访问地址互不相同能够避免依据这两个访问地址所生成的内存访问请求被处理器在MSHR(Miss-status Handling Registers)内合并。两个访问地址指向同一个物理地址,表示这两个访问地址和这一物理地址之间存在映射关系。
930、扩展内存控制器接收到其中一条内存访问请求后,将地址映射到待访问数据的物理地址,并去数据缓冲器中查找。
具体的,数据缓冲器是用来缓存数据的,具体实现中,可以采用Cache来实现的。其中,采用<标识,数据>的方式来存储的,其中,标识可采用待访问数据的物理地址作为标识。
950、当查找不到时,则确定该内存访问请求为第一条内存访问请求,返回特殊识别码给处理器,并发送待访问数据的读取请求给扩展内存中,读取请求中包含物理地址。
具体的,根据步骤930,当扩展内存控制器在数据缓冲器中无法找到待访问数据的记录时,则确定所接收到的内存访问请求为第一条内存访问请求,此时则会生成访问地址为物理地址的读取请求并发送给扩展内存,该读取请求用来读取待访问数据;在这个过程中,扩展内存控制器还会生成特殊识别码(譬如:0x5a5a5a5a5a5a5a5a),发送给处理器,使得处理器根据该特殊识别码判断待访问数据还未读取到数据缓冲器。
970、当查找到,则确定该内存访问请求为第二条内存访问请求,从数据缓冲器读取数据,并返回给处理器。
具体的,当扩展内存控制器查找到待访问数据的记录时,说明该内存访问请求为第二条内存访问请求,则从数据缓冲器读取数据,并返回给处理器。
通过上述的实现方式,处理器生成两个内存访问请求,发送给扩展内存控制器,使得扩展内存控制器根据两次访存请求读取扩展内存中的待访问数据,这样就解决了处理器访问扩展内存中的待访问数据时的时延无法满足内存访问协议的要求。
本发明的设备实施例
本发明还提供了扩展内存控制器的设备实施例,参看图10,应用于计算机的处理器对扩展内存中待访问数据的访问,所述扩展内存控制器通过内存总线连接到所述计算机,该扩展内存控制器包括:
接收模块1010,用于接收来自计算机的处理器***串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,其中,物理地址为所述待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数。
执行模块1020,用于在接收到N+1条内存访问请求中的第一条内存访问请求时,根据第一条内存访问请求携带的访问地址确定物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,向扩展内存发送获取待访问数据的读取请求,以及生成特定响应消息,读取请求包含所述物理地址;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的一条内存访问请求,在内存总线协议规定的访问时延内,产生特定响应消息;在接收到所述扩展内存返回的待访问数据后,将所述待访问数据写入数据缓冲器1040,并停止向所述处理器***返回特定响应消息;在待访问数据被写入到数据缓冲器1040之后,当接收到N+1条内存访问请求中的一条内存访问请求时,从数据缓冲器1040读取所述待访问数据,并发送给发送模块。
发送模块1030,用于向扩展内存发送所述读取请求,并向所述处理器***返回特定响应消息;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,向处理器***返回特定响应消息;以及从执行模块1020接收待访问数据,将待访问数据发送给处理器***。
进一步的,上述N+1条内存访问请求中的每一条内存访问请求的访问地址具有Bank地址相同,行地址不同的特征。
进一步的,执行模块1020,还用于预先设置N+1条内存访问请求中每条内存访问请求所包含的访问地址和待访问数据在扩展内存中的物理地址的映射关系;根据第一条内存访问请求携带的访问地址查询第一条内存访问请求所包含的地址和待访问数据在扩展内存中的物理地址之间的映射关系,得到待访问数据在扩展内存中的物理地址。
进一步的,执行模块1020,还用于当根据第一条内存访问请求携带的访问地址确定所述物理地址之后,在所述数据缓冲器中创建记录,所述记录中包括标签字段和数据字段,将所述标签字段设置为所述物理地址。
进一步的,记录中还包括有效性字段,执行模块1020,还用于将记录中的有效性字段设置为无效。
进一步的,执行模块1020,还用于在每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求之后,查询所述每一条内存访问请求携带的访问地址查询所述映射关系,得到物理地址;根据物理地址查询数据缓冲器1040中的记录,确定记录的有效性字段为无效时,生成特定响应消息。
进一步的,执行模块1020,还用于在数据缓冲器1040查找物理地址对应的记录,在记录中将数据字段设置为待访问数据,并将有效性字段设置为有效。
需要进一步说明的是,在上述扩展内存控制器的实施例中,数据缓冲器1040是集成在扩展内存控制器中,这只是一种较优的实现方式,本领域的技术人员可以理解,该数据缓冲器1040还可以独立于扩展内存控制器实现。
本发明还提供一种包括扩展内存的计算机***,如图2所示,该计算机***包括:处理器***201、***内存202、如扩展内存控制器的设备实施例所描述的扩展内存控制器203、以及扩展内存204,扩展内存控制器203与扩展内存204相连,扩展内存控制器203通过内存接口连接到处理器201,处理器***201连接***内存202,***内存202用于存放程序存储执行指令,处理器***201用于执行所述***内存202存储的所述执行指令,以使得处理器***201执行如计算机对扩展内存的访问方法实施例中所示计算机对扩展内存***中扩展内存的访问方法。
本领域普通技术人员可以意识到,结合本发明中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (20)

1.一种对扩展内存的访问方法,其特征在于,计算机通过内存总线连接到扩展内存***,所述扩展内存***包括扩展内存控制器和扩展内存,当所述计算机需要访问存储在所述扩展内存上的待访问数据时,所述方法包括:
所述扩展内存控制器接收所述计算机的处理器***串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数;
在接收到所述N+1条内存访问请求中的第一条内存访问请求时,所述扩展内存控制器根据所述第一条内存访问请求携带的访问地址确定所述物理地址,向所述扩展内存发送获取所述待访问数据的读取请求,并向所述处理器***返回特定响应消息,所述读取请求包含所述物理地址;
在接收到所述扩展内存返回的待访问数据之前,每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,所述扩展内存控制器向所述处理器***返回特定响应消息;
在接收到所述扩展内存返回的待访问数据后,所述扩展内存控制器将所述待访问数据写入数据缓冲器,并停止向所述处理器***返回特定响应消息;
当再次接收到所述N+1条内存访问请求中的一条内存访问请求时,所述扩展内存控制器从所述数据缓冲器读取所述待访问数据,并返回给所述处理器***。
2.根据权利要求1所述的方法,其特征在于,所述N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述扩展内存控制器预先设置所述N+1条内存访问请求中每条内存访问请求所包含的访问地址和所述待访问数据在所述扩展内存中的物理地址的映射关系;
所述扩展内存控制器根据所述第一条内存访问请求携带的访问地址确定所述物理地址,包括:
所述扩展内存控制器根据所述第一条内存访问请求携带的访问地址查询所述映射关系,得到所述物理地址。
4.根据权利要求3所述的方法,其特征在于,当所述扩展内存控制器根据所述第一条内存访问请求携带的访问地址确定所述物理地址之后,所述方法还包括:
所述扩展内存控制器在所述数据缓冲器中创建记录,所述记录中包括标签字段和数据字段,将所述标签字段设置为所述物理地址。
5.根据权利要求4所述的方法,其特征在于,所述记录中还包括有效性字段,所述方法还包括:
所述扩展内存控制器将所述有效性字段设置为无效。
6.根据权利要求5所述的方法,其特征在于,每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求之后,所述方法还包括:
所述扩展内存控制器根据所述每一条内存访问请求携带的访问地址查询所述映射关系,得到所述物理地址;
根据所述物理地址查询数据缓冲器中的记录,确定所述记录的有效性字段为无效时,生成所述特定响应消息。
7.根据权利要求5所述的方法,在接收到所述扩展内存返回的待访问数据后,所述扩展内存控制器将所述待访问数据写入所述数据缓冲器,包括:
所述扩展内存控制器在所述数据缓冲器查找所述物理地址对应的记录,将所述记录中的所述数据字段设置为所述待访问数据,并将所述有效性字段设置为有效。
8.一种对扩展内存的访问方法,其特征在于,计算机通过内存总线连接到扩展内存***,所述扩展内存***包括扩展内存控制器和扩展内存,当所述计算机需要访问存储在所述扩展内存上的待访问数据时,所述方法包括:
所述计算机的处理器***接收待访问数据的存储地址;
根据所述待访问数据的存储地址,所述处理器***生成N+1条内存访问请求,所述N+1条内存访问请求包含的访问地址互不相同且都指向同一物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数;
所述处理器***将所述N+1条内存访问请求发送给所述扩展内存控制器;
在内存总线协议规定的访问时延内,接收所述扩展内存控制器返回的特定响应消息;
接收所述扩展内存控制器返回的待访问数据。
9.根据权利要求8所述的访问方法,其特征在于,所述根据所述待访问数据的存储地址,所述处理器***生成N+1条内存访问请求之前,还包括:
根据所述计算机从所述扩展内存获取数据的时延参数,确定数值N,其中,所述计算机从所述扩展内存获取数据的时延参数包括以下任一参数之一或其任意组合:内存访问请求通过所述扩展内存控制器到达所述扩展内存的传输延迟tPD1,所述内存访问请求读取的数据从所述扩展内存到达所述扩展内存控制器的传输延迟tPD2,以及所述处理器***发出连续两条内存访问请求的时间间隔T_Interval。
10.根据权利要求9所述的访问方法,其特征在于,所述根据所述计算机从所述扩展内存获取数据的时延参数,确定数值N包括:
确定数值N,其中N≥[(tPD1+tPD2)/T_Interval],其中,[*]为取整函数。
11.根据权利要求9或10所述的访问方法,其特征在于,所述连续两条内存访问请求的时间间隔T_Interval为:tGAPmin=tRCD+tRTP+tRP,或者T_Fence。
12.根据权利要求8-10任一所述的访问方法,其特征在于,根据所述待访问数据的存储地址,所述处理器***生成N+1条内存访问请求,所述方法还包括:
所述待访问数据的存储地址为虚拟地址,根据所述待访问数据的存储地址Addr_Virtual进行虚拟地址到物理地址的转换,得到与所述虚拟地址Addr_Virtual对应的物理地址Addr_Physical;
根据所述物理地址Addr_Physical生成N个访问地址Addr_Physical(n),其中,n为整数且1≤n≤N,所述N个访问地址的行地址Addr_Physical_Row(n)=n*M+Addr_Physical_Row,n为整数且1≤n≤N,M为扩展内存所包括的内存行的数目,Addr_Physical_Row为物理地址Addr_Physical的行地址;所述N个物理地址中每个物理地址除行地址之外的其他地址和所述物理地址Addr_Physical除行地址之外的其他地址相同;
所述处理器***根据Addr_Physical以及Addr_Physical(n),n为整数且1≤n≤N生成所述N+1条内存访问请求。
13.一种扩展内存控制器,其特征在于,应用于计算机的处理器***对扩展内存中待访问数据的访问,所述计算机中的处理器***通过内存总线连接到扩展内存***,所述扩展内存***包括扩展内存控制器和扩展内存,所述扩展内存控制器包括:
接收模块,用于接收来自所述计算机的处理器***串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数;
执行模块,用于在接收到所述N+1条内存访问请求中的第一条内存访问请求时,根据所述第一条内存访问请求携带的访问地址确定所述物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,生成获取所述待访问数据的读取请求,以及生成特定响应消息,所述读取请求包含所述物理地址;在接收到所述扩展内存返回的待访问数据之前,每接收到所述N+1条内存访问请求中的一条内存访问请求,在内存总线协议规定的访问时延内,产生特定响应消息;在接收到所述扩展内存返回的待访问数据之后,将所述待访问数据写入数据缓冲器,并停止向所述处理器***返回特定响应消息;当再次接收到所述N+1条内存访问请求中的一条内存访问请求时,从所述数据缓冲器读取所述待访问数据,并发送给所述发送模块;
所述发送模块,用于向所述扩展内存发送所述读取请求,并向所述处理器***返回特定响应消息;在接收到所述扩展内存返回的待访问数据之前,每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,向所述处理器***返回特定响应消息;以及从所述执行模块接收所述待访问数据,将所述待访问数据发送给所述处理器***。
14.根据权利要求13所述的扩展内存控制器,其特征在于,所述N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。
15.根据权利要求13或14所述的扩展内存控制器,其特征在于,
所述执行模块,还用于预先设置所述N+1条内存访问请求中每条内存访问请求所包含的访问地址和所述待访问数据在所述扩展内存中的物理地址的映射关系;根据所述第一条内存访问请求携带的访问地址查询所述第一条内存访问请求所包含的地址和所述待访问数据在所述扩展内存中的物理地址之间的映射关系,得到所述待访问数据在所述扩展内存中的物理地址。
16.根据权利要求15所述的扩展内存控制器,其特征在于,
所述执行模块,还用于当根据所述第一条内存访问请求携带的访问地址确定所述物理地址之后,在所述数据缓冲器中创建记录,所述记录中包括标签字段和数据字段,将所述标签字段设置为所述物理地址。
17.根据权利要求16所述的扩展内存控制器,其特征在于,所述记录中还包括有效性字段,
所述执行模块,还用于将所述记录中的所述有效性字段设置为无效。
18.根据权利要求17所述的扩展内存控制器,其特征在于,
所述执行模块,还用于在每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求之后,查询所述每一条内存访问请求携带的访问地址查询所述映射关系,得到所述物理地址;根据所述物理地址查询数据缓冲器中的记录,确定所述记录的有效性字段为无效时,生成所述特定响应消息。
19.根据权利要求17所述的扩展内存控制器,其特征在于,
所述执行模块,在接收到所述扩展内存返回的所述待访问数据之后,还用于在所述数据缓冲器查找所述物理地址对应的记录,将所述记录中的所述数据字段设置为所述待访问数据,并将所述有效性字段设置为有效。
20.一种包括扩展内存的计算机***,其特征在于,该计算机***包括:处理器***、主存储器、如权利要求13-19任一所述扩展内存控制器、以及扩展内存,所述扩展内存控制器与所述扩展内存相连,所述扩展内存控制器通过内存接口连接到所述处理器***,所述处理器***连接所述主存储器,所述主存储器用于存放程序存储执行指令,所述处理器***用于执行所述主存储器存储的所述执行指令,以使得所述处理器***执行如权利要求8-12中任一所述的一种对扩展内存的访问方法。
CN201510198452.XA 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及*** Active CN106155577B (zh)

Priority Applications (12)

Application Number Priority Date Filing Date Title
CN201510198452.XA CN106155577B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及***
CN201910200464.XA CN110059020B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及***
KR1020177032218A KR102168017B1 (ko) 2015-04-23 2016-02-03 확장 메모리에 대한 액세스 방법, 디바이스 및 시스템
PCT/CN2016/073304 WO2016169318A1 (zh) 2015-04-23 2016-02-03 扩展内存的访问方法、设备以及***
CA2983479A CA2983479C (en) 2015-04-23 2016-02-03 Method for accessing extended memory, device, and system
BR112017022547-6A BR112017022547B1 (pt) 2015-04-23 2016-02-03 Método para acessar memória estendida, dispositivo e sistema
EP16782466.3A EP3279788B1 (en) 2015-04-23 2016-02-03 Access method, device and system for expanding memory
JP2017555264A JP6685323B2 (ja) 2015-04-23 2016-02-03 拡張メモリにアクセスするための方法、デバイス及びシステム
EP19189059.9A EP3674877B1 (en) 2015-04-23 2016-02-03 Method for accessing extended memory, device, and system
SG11201708477UA SG11201708477UA (en) 2015-04-23 2016-02-03 Method for accessing extended memory, device, and system
US15/788,990 US10545672B2 (en) 2015-04-23 2017-10-20 Method for accessing extended memory, device, and system
US16/744,795 US11237728B2 (en) 2015-04-23 2020-01-16 Method for accessing extended memory, device, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510198452.XA CN106155577B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及***

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201910200464.XA Division CN110059020B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及***

Publications (2)

Publication Number Publication Date
CN106155577A CN106155577A (zh) 2016-11-23
CN106155577B true CN106155577B (zh) 2019-03-26

Family

ID=57142912

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910200464.XA Active CN110059020B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及***
CN201510198452.XA Active CN106155577B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及***

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201910200464.XA Active CN110059020B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及***

Country Status (9)

Country Link
US (2) US10545672B2 (zh)
EP (2) EP3279788B1 (zh)
JP (1) JP6685323B2 (zh)
KR (1) KR102168017B1 (zh)
CN (2) CN110059020B (zh)
BR (1) BR112017022547B1 (zh)
CA (1) CA2983479C (zh)
SG (1) SG11201708477UA (zh)
WO (1) WO2016169318A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及***
CN108228076B (zh) * 2016-12-14 2020-10-16 华为技术有限公司 访问磁盘的方法和主机
US10733100B2 (en) 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
CN107590099B (zh) * 2017-08-31 2021-04-20 深圳市共济科技股份有限公司 一种多主机访问从机的方法、扩展装置及存储介质
CN109783395B (zh) * 2017-11-15 2023-03-31 阿里巴巴集团控股有限公司 内存访问方法、交换芯片、内存模组及电子设备
US10909046B2 (en) * 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
CN109308190B (zh) * 2018-07-09 2023-03-14 北京中科睿芯科技集团有限公司 基于3d堆栈内存架构的共享行缓冲***及共享行缓冲器
JP7094364B2 (ja) 2018-07-17 2022-07-01 華為技術有限公司 I/o要求処理方法およびデバイス
CN109284231B (zh) * 2018-07-24 2023-05-23 江苏微锐超算科技有限公司 内存访问请求的处理方法、装置及内存控制器
CN109189700A (zh) * 2018-10-19 2019-01-11 郑州云海信息技术有限公司 一种扩展内存装置、扩展内存***、扩展内存的访存方法
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
CN111405603B (zh) * 2019-01-02 2023-05-09 ***通信有限公司研究院 一种时延获取方法、测试装置以及计算机存储介质
CN112306918B (zh) * 2019-07-31 2024-06-14 北京百度网讯科技有限公司 数据访问方法、装置、电子设备和计算机存储介质
CN113377704B (zh) * 2021-06-11 2022-04-12 上海壁仞智能科技有限公司 人工智能芯片以及数据操作方法
EP4365748A1 (en) * 2021-07-23 2024-05-08 Huawei Technologies Co., Ltd. Data access method and related device
US11600312B1 (en) * 2021-08-16 2023-03-07 Micron Technology, Inc. Activate commands for memory preparation
CN114721726B (zh) * 2022-06-10 2022-08-12 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN115757196B (zh) * 2022-11-09 2023-09-01 超聚变数字技术有限公司 内存、访问内存方法及计算设备
CN115686153B (zh) * 2022-12-29 2023-03-31 浪潮电子信息产业股份有限公司 一种内存模组及一种电子设备
CN115827504B (zh) * 2023-01-31 2023-07-11 南京砺算科技有限公司 多核心图形处理器的数据存取方法、图形处理器及介质
CN117851291B (zh) * 2024-03-07 2024-06-21 北京象帝先计算技术有限公司 内存访问***、电子组件及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089828A (zh) * 2006-06-13 2007-12-19 深圳市研祥智能科技股份有限公司 计算机访问扩充内存的方法
CN102609378A (zh) * 2012-01-18 2012-07-25 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
CN104375946A (zh) * 2013-08-16 2015-02-25 华为技术有限公司 一种数据处理的方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5042003A (en) * 1988-07-06 1991-08-20 Zenith Data Systems Corporation Memory usage system
JP2513024B2 (ja) * 1989-03-16 1996-07-03 日本電気株式会社 拡張記憶アドレス制御方式
JPH05143438A (ja) * 1991-11-19 1993-06-11 Nec Software Kansai Ltd 拡張メモリ管理方式
JP2002063069A (ja) * 2000-08-21 2002-02-28 Hitachi Ltd メモリ制御装置、データ処理システム及び半導体装置
JP2003186740A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd メモリ制御装置、及びメモリ制御方法
JP3513147B2 (ja) * 2002-05-29 2004-03-31 株式会社ハギワラシスコム Usbストレージデバイス及びその制御装置
JP2004234461A (ja) * 2003-01-31 2004-08-19 Sony Corp 情報処理装置および方法、並びにプログラム
KR100420444B1 (ko) * 2003-06-03 2004-02-26 주식회사 넥스트웨이 외장형 저장장치
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8307190B2 (en) 2006-12-25 2012-11-06 Panasonic Corporation Memory control device, memory device, and memory control method
WO2009125572A1 (ja) * 2008-04-08 2009-10-15 パナソニック株式会社 メモリ制御回路及びメモリ制御方法
JP2010250727A (ja) * 2009-04-20 2010-11-04 Panasonic Corp メモリ制御回路
JP2011118501A (ja) * 2009-12-01 2011-06-16 Yokogawa Electric Corp データ転送システム
JP2013069210A (ja) * 2011-09-26 2013-04-18 Toshiba Corp メモリシステム
US9281036B2 (en) * 2013-01-08 2016-03-08 Qualcomm Incorporated Memory device having an adaptable number of open rows
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存***、内存访问请求的处理方法和计算机***
CN104346293B (zh) * 2013-07-25 2017-10-24 华为技术有限公司 混合内存的数据访问方法、模块、处理器及终端设备
CN103488436B (zh) * 2013-09-25 2017-04-26 华为技术有限公司 内存扩展***及方法
CN104388436B (zh) 2014-10-29 2016-08-24 中南民族大学 一种水稻诱导抗病基因OsAAA1及其应用
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101089828A (zh) * 2006-06-13 2007-12-19 深圳市研祥智能科技股份有限公司 计算机访问扩充内存的方法
CN102609378A (zh) * 2012-01-18 2012-07-25 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
CN104375946A (zh) * 2013-08-16 2015-02-25 华为技术有限公司 一种数据处理的方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种监测函数语义信息访存地址序列的方法;陈荔城 等;《计算机研究与发展》;20130515(第2013年第05期);第1110-1119页 *
基于消息的内存***关键技术研究;陈明宇 等;《网络新媒体技术》;20130416;第2卷(第1期);第29-37页 *

Also Published As

Publication number Publication date
US20180039424A1 (en) 2018-02-08
EP3279788A4 (en) 2018-04-04
EP3674877B1 (en) 2021-12-29
CN110059020A (zh) 2019-07-26
SG11201708477UA (en) 2017-11-29
EP3674877A1 (en) 2020-07-01
WO2016169318A1 (zh) 2016-10-27
BR112017022547B1 (pt) 2023-10-10
KR102168017B1 (ko) 2020-10-20
US11237728B2 (en) 2022-02-01
EP3279788B1 (en) 2019-08-21
US10545672B2 (en) 2020-01-28
JP2018517205A (ja) 2018-06-28
JP6685323B2 (ja) 2020-04-22
CN110059020B (zh) 2024-01-30
US20200150872A1 (en) 2020-05-14
CN106155577A (zh) 2016-11-23
CA2983479C (en) 2020-12-22
CA2983479A1 (en) 2016-10-27
EP3279788A1 (en) 2018-02-07
KR20170134704A (ko) 2017-12-06
BR112017022547A2 (zh) 2018-10-16

Similar Documents

Publication Publication Date Title
CN106155577B (zh) 扩展内存的访问方法、设备以及***
CN100407169C (zh) 为dma控制器提供高速缓存管理命令的***和方法
CN108958848A (zh) 近存储器计算体系结构
CN107273311A (zh) 使用多个页表的执行
WO2018028629A1 (en) Pattern based preload engine
JP2009528612A (ja) データ処理システム並びにデータ及び/又は命令のプリフェッチ方法
US9300716B2 (en) Modelling dependencies in data traffic
US20230057633A1 (en) Systems, methods, and apparatus for transferring data between interconnected devices
CN107977577A (zh) 访存指令访问检测方法及装置
Grevtsev et al. Multicore processor models verification in the early stages
US9842049B2 (en) Data deployment determination apparatus, data deployment determination program, and data deployment determination method
Bayliss et al. Methodology for designing statically scheduled application-specific SDRAM controllers using constrained local search
JP2013101563A (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
Sung et al. Denovond: Efficient hardware for disciplined nondeterminism
Bhimani et al. Design space exploration of GPU Accelerated cluster systems for optimal data transfer using PCIe bus
JP3954248B2 (ja) 情報処理装置の試験方法
Kamkin et al. A model-based approach to design test oracles for memory subsystems of multicore microprocessors
CN105354010B (zh) 处理器及由处理器执行硬件数据的方法
JP2007048019A (ja) エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム
CN106155853B (zh) 处理器ip的验证方法、装置和***
Owda et al. Hierarchical transactional memory Protocol for distributed mixed-criticality embedded systems
US11748254B2 (en) Data transformer apparatus
Mehta et al. Cache Memory Subsystem Verification: UVM Agent Based
Al-Manasia et al. Evaluation of Cache Coherence Mechanisms for Multicore Processors
WO2008004006A1 (en) Multiprocessor development environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant