CN108139989A - 配备有存储器中的处理和窄访问端口的计算机设备 - Google Patents
配备有存储器中的处理和窄访问端口的计算机设备 Download PDFInfo
- Publication number
- CN108139989A CN108139989A CN201680057288.3A CN201680057288A CN108139989A CN 108139989 A CN108139989 A CN 108139989A CN 201680057288 A CN201680057288 A CN 201680057288A CN 108139989 A CN108139989 A CN 108139989A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- memory
- memory circuit
- circuit
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling between buses with data restructuring with data-width conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明涉及一种计算机设备,其包括:第一处理装置(202);多个存储器电路(204),多个存储器电路中的第一存储器电路包括一个或更多个另外的处理装置(206);数据总线(DATA),其将第一处理装置(202)耦接至存储器电路(204)中的每一个,每个存储器电路(204)都具有宽度为m位的数据端口,并且数据总线宽度为n位,n大于m,第一处理装置和/或另外的电路(208)适于通过将第一地址转换为多个第二地址并且通过在第一存储器电路中凭借多个存储器访问操作而执行n位数据值的读取或写入操作,来在第一存储器电路(204)中读取或写入n位数据值,其中多个第二地址对应于第一存储器电路中的m位存储器位置。
Description
本专利申请要求法国专利申请FR15/59321和FR16/50186的优先权,其被看作是本说明书的组成部分。
技术领域
本发明涉及“存储器中的处理”的领域,具体地涉及一种计算机设备和一种涉及存储器电路的方法,该存储器电路包括一个或更多个处理器和宽度较小的数据总线。
背景技术
现代计算机通常包括处理电路,其通常以片上系统(SoC)的形式实现并且耦接至一个或更多个动态随机存取存储器电路(DRAM)。通常需要周期性更新操作的这种存储器能够实现密集且相对快速的访问,并且因此被用作多数计算机中的RAM中的主要数据存储设备。然而,在SoC与DRAM电路之间要传输的数据量是不断增长的,而这种数据传输会使计算机的运行减缓并且导致能耗相对增大。
已经提出的一种解决方案在于提供集成有一个或更多个处理器的DRAM电路,以及位于SoC中的主处理器。这种解决方案由于允许向DRAM的处理器赋予某些数据处理任务使得在避免DRAM电路与主处理器之间的数据传输的情况下实现这些任务,而降低了DRAM电路与主处理器之间的数据传输量。
使用位于存储器芯片中的数据处理器的一个困难在于,每个存储器芯片不能知晓主处理器的总线的总体宽度。实际上,在实践中通常提供一组存储器芯片,每个存储器芯片耦接到主处理器的数据总线的相应的块(slice)。将数据总线分成多个块的优势在于芯片盒可以具有较窄的数据端口,这意味着较少的引脚以及降低的能耗。另外,窄数据端口使得构建大容量存储器系统,而无需额外的缓冲放大器芯片,使用该缓冲放大器芯片会增加成本、能耗、等待时间并且减小工作频率和通带。由于每个存储器芯片的窄数据端口,存储器芯片的处理器将无法处理在主处理器的总宽度上提供的数据。
因此,存在这一技术问题:如何获得一种能够在具有窄数据总线的存储器芯片中实现存储器中的处理的系统。
发明内容
本说明书的一个实施方式的目的是至少部分地解决一个或更多个现有技术问题。
根据一个方面,提供了一种计算机设备,包括:第一处理装置;多个存储器电路,多个存储器电路中的至少一个第一存储器电路包括一个或更多个另外的处理装置;数据总线,其将第一处理装置耦接到存储器电路中的每一个,其中,每个存储器电路具有宽度为m位的数据端口和宽度为n位的数据总线,n大于m,每个存储器电路的数据端口例如耦接至数据总线的相应的m位块,第一处理装置适于提供要借助数据总线读取或写入的n位数据值的一个或更多个第一地址,其中,第一处理装置和/或另外的电路适于通过将第一地址转换成与第一存储器电路中的m位存储器位置相对应的多个第二地址并且通过凭借多个存储器访问操作在第一存储器电路中对n位数据值进行读取和写入操作,来在第一存储器电路中读取或写入n位数据值,其中,多个第二地址中的至少两个是相邻地址。
根据一个实施方式,每个另外的处理装置包括被配置成根据由第一处理装置提供的命令而对由第一存储器电路存储的数据执行处理操作的一个或更多个处理器。
根据一个实施方式,数据总线的宽度n是每个存储器电路的数据端口的宽度m的p倍,并且存在p个存储器电路。
根据一个实施方式,地址转换包括地址重排(permutation),例如所述一个多个第一地址的一个或更多个最高有效位变成表示第一存储器电路的多个第二地址的一个或更多个最低有效位。
根据一个实施方式,所述一个或更多个第一地址是在第一处理装置的寻址空间(HGAS)中的地址,而所述多个第二地址是在所述一个或更多个另外的处理装置的局部寻址空间中的地址,局部寻址空间是线性的或者针对每个段是线性的。
根据一个实施方式,计算机设备还包括数据高速缓存,以及适于对数据高速缓存的一条或多条线进行高速缓存线重排的数据重排电路,数据高速缓存包括高速缓存线,每条线存储多个数据字,每个数据字包括多个数据字节,存储这些字节的高速缓存线的重排形成高速缓存的与第一存储器电路相关联的存储位置中的第一数据字。
根据一个实施方式,数据高速缓存借助数据总线耦接至存储器电路,并且数据重排电路是字节转置电路,其耦接在数据总线与数据高速缓存之间并且适于对被存储在高速缓存中或者从高速缓存加载的数据的每个值的高速缓存线进行重排。
根据一个实施方式,第一处理装置和/或另外的电路适于确定所述一个或更多个第一地址是否落入与一个或更多个另外的处理装置相关联的地址段,并且如果所述一个或更多个第一地址落入所述地址段则实现地址转换。
根据一个实施方式,第一地址的多个最低有效位与多个第二地址中之一的多个最低有效位相同。
根据一个实施方式,多于m位的命令寄存器被映射到第一存储器电路的寻址空间,该命令寄存器包括至少一个控制位,第一处理装置适于凭借多个存储器访问操作实现在命令寄存器中的写入操作,命令寄存器的字节包括通过存储器访问操作中的最终操作而被写入的控制位,该控制位涉及控制位修改。
根据一个实施方式,第一存储器电路是集成有存储器矩阵和所述一个或更多个另外的处理装置的集成电路芯片。
根据一个实施方式,第一存储器电路包括具有存储器矩阵的第一集成电路芯片和包括所述一个或更多个另外的处理装置另一集成电路芯片。
根据一个实施方式,第一存储器电路包括多个另外的处理装置,每个另外的处理装置都关联于与存储器矩阵相对应的寻址空间。
根据一个实施方式,第一处理装置包括适于将一个或更多个纠错码(ECC)位插入每个m位值中的一个或更多个ECC电路。
根据一个实施方式,第一处理装置包括适于生成要在另外的存储器访问操作期间被存储到第一存储器电路中的纠错码(ECC)位的一个或更多个ECC电路。
根据另一个方面,提供了一种方法,包括:通过第一处理装置,借助将第一处理装置耦接到多个存储器中的每个存储器的数据总线实现在多个存储器电路中的第一存储器电路中对n位数据值进行读取或写入的操作,第一存储器电路包括个或多个另外的处理装置,其中,存储器电路中的每一个都包括宽度为m位的数据端口和宽度为n位的数据总线,n大于m,每个存储器电路的数据端口例如耦接到数据总线的相应的m位块,读取或写入操作包括:通过第一处理装置提供用于要借助数据总线读取或写入的n位数据值的一个或更多个第一地址;将第一地址转换成与第一存储器电路中的m位存储器位置相对应的多个第二地址,多个第二地址中的至少两个第二地址是相邻地址;以及通过多个存储器访问操作实现在第一存储器电路中对n位数据值进行读取或写入的操作。
根据一个实施方式,方法还包括通过第一处理装置对数据高速缓存的一条或多条线实现高速缓存线重排,数据高速缓存包括高速缓存线,每条高速缓存线存储多个数据字,每个数据字包括多个数据字节,对存储所述字节的高速缓存线的重排形成高速缓存的与第一存储器电路相关联的存储位置中的第一数据字。
根据另一方面,提供了一种存储程序指令的电子存储介质,该程序指令在由第一处理装置执行时实施上述方法。
根据另一方面,提供了一种计算机系统,其中,主处理器连接到多个存储器芯片,这些存储器芯片集成有一个或更多个数据处理器,这些存储器芯片与主处理器之间的连接是通过比这些存储器芯片的数据端口更大的数据总线来实现的,这些存储器芯片以并行数据模式连接到数据总线以与数据总线的宽度一致。
根据一个实施方式,限定了线性的、或者针对每个段为线性的寻址空间,该寻址空间允许以线性的、或针对每个段为线性的方式访问每个存储器芯片中的存储器。
根据一个实施方式,在主处理器的该新寻址空间与原始寻址空间之间的地址转换功能使得主处理器能够访问该新寻址空间。
根据一个实施方式,地址转换功能直接通过硬件实现。
根据一个实施方式,地址转换的硬件功能是可配置的,并且该硬件功能从功能上改变可配置存储器的段。
根据一个实施方式,新寻址空间本身包括子寻址空间,这些子寻址空间由集成到存储器芯片中的数据处理器使用,并且确保对它们的可访问存储器的线性的、或针对每个段是线性的访问。
根据一个实施方式,这些子寻址空间以线性的、或针对每个段为线性的方式映射到新寻址空间中。
根据一个实施方式,主处理器包括数据高速缓存,或者也用作数据高速缓存的通用高速缓存,并且实现高速缓存线重排以改变地址转换功能并且使该地址转换功能为针对每个段是线性的。这使得主处理器能够在使用加载指令、存储指令或访问存储器的任何其他指令的情况下正确地访问存储器,其中该存储器可由集成到存储器芯片中的数据处理器访问,主处理器的访问存储器的宽度远大于相关存储器芯片的数据端口。
根据一个实施方式,高速缓存线重排是完全通过软件实现的。
根据一个实施方式,高速缓存线重排是完全通过硬件实现的。
根据一个实施方式,高速缓存线重排是部分地通过软件且部分地通过硬件来实现的。
根据一个实施方式,突发数据模式天然地对应于高速缓存线重排,这等同于在从存储器加载高速缓存线或者将高速缓存线存储到存储器中的情况下总是能够实现高速缓存线重排。
根据一个实施方式,支持多种高速缓存线重排类型,并且一些配置方式允许指定地址段以及在这些段内存在访问的情况下指定应实现哪种高速缓存线重排。
根据一个实施方式,存储器芯片集成有比存储器芯片的数据端口更宽的一个或更多个命令寄存器,使用命令颜色处理器,请求改变命令颜色使得新的命令在相关命令寄存器中生效。
根据一个实施方式,主处理器是包括多个处理器核的芯片上的系统。
根据一个实施方式,主处理器是包括多个存储器总线的芯片上的系统。
根据另一个实施方式,提供一种更大的系统,其包括多个系统,每个系统例如是前文限定的系统,该多个系统彼此相连并且属于相同的高速缓存一致性域,以便构建具有多个连接接口的服务器。
根据一个实施方式,每个数据存储器芯片的存储容量和数据端口宽度均被放大,以允许在总突发事务期间从该数据存储器芯片传送ECC码或者向该数据存储器芯片传送ECC码,该ECC码覆盖了在该突发事务期间未被放大的数据总体。
根据一个实施方式,每个数据存储器芯片的存储容量被放大以允许存储ECC码,突发事务被延长使得能够在突发事务期间传送ECC码,从而使所传送的ECC码能够保护非ECC数据总体,该非ECC数据总体在突发事务期间从该数据存储器芯片被发送或者被传送至该数据存储器芯片。
根据一个实施方式,数据处理器没有被集成到存储器芯片中,而是被集成到位于主处理器与存储器芯片之间的一个或更多个附加电路中。
根据一个实施方式,地址转换和/或高速缓存线重排是部分地或完全地被实现在位于主处理器与存储器芯片之间的一个或更多个附加电路的内部。
根据一个方面,提供了一种计算机设备,包括:第一处理器;多个存储器装置,其中至少一个第一存储器装置集成有一个或更多个另外的处理器;将第一处理器耦接至存储器装置中的每一个的数据总线,每个存储器装置都包括宽度为m位的数据端口和宽度为n位的数据总线,其中n大于m,第一处理器适于提供用于借助数据总线读取或写入的n位数据值的第一地址,第一处理器和/或另外的电路适于通过将第一地址转换成与第一存储器装置中的m位存储器位置相对应的多个地址并且通过凭借多个存储器访问操作实现在第一存储器装置中的n位数据值的读取或写入操作,来在第一存储器装置中读取或写入n位数据值,其中多个地址中的至少两个是相邻地址。
附图说明
参考附图,通过阅读以下以说明性而非限制性方式给出的实施方式的详细描述,上述特征和优点及其他特征和优点将变得显而易见,在附图中:
图1示意性地示出了计算机设备的示例;
图2示意性地示出了根据本说明书的一个实现示例的计算机设备;
图3示意性地示出了根据一个实现示例的图2的计算机设备中的存储器寻址空间;
图4示意性地示出了根据一个实现示例的图3的主处理器的更详细的存储器寻址空间;
图5是说明根据一个实现示例的用于实现读取或写入操作的方法的各步骤的流程图;
图6示意性地示出了根据本说明书的一个示例的数据字节在存储器电路中的分布;
图7示意性地示出了根据本说明书的一个实现示例的包括多个存储体(memorybank)的计算机设备;
图8示意性地示出了根据一个实现示例的更详细的存储器电路;
图9示意性地示出了根据一个实现示例的具有多个虚拟存储体的存储器电路;
图10A示意性地示出了根据本说明书的一个实现示例的图2的主处理器的数据高速缓存;
图10B示意性地示出了根据一个实现示例的将高速缓存线中的数据存储到图4的寻址空间中的示例;
图10C至10F示意性地示出了根据一个实现示例的工作中的高速缓存线重排电路;
图11示意性地示出了根据本说明书的一个实现示例的计算机设备的电路;
图12示意性地示出了根据一个实现示例的将纠错码水平地或垂直地存储到存储器电路中;
图13示意性地示出了根据另一个实现示例的将纠错码水平地或垂直地存储到存储器电路中;和
图14示意性地示出了根据另一个实现示例的更详细的存储器电路。
具体实施方式
在以下描述中,认为以下术语是以如下定义来使用的:
存储器芯片:包括存储器矩阵的集成电路,存储器矩阵例如是DRAM矩阵(动态随机存取存储器)或其他类型的随机存取存储器矩阵;
数据处理模块(DPU):处理装置,其包括被集成到存储器芯片中或以其他方式与存储器芯片相关联的一个或更多个处理器;
存储器电路:包括存储器芯片的电路,其可以包括被集成到存储器芯片中或以其他方式与存储器芯片相关联的一个或更多个数据处理模块;和
主中央处理模块(HCPU):包括计算机设备的主处理装置,其包括被布置成借助数据总线在存储器电路中读取和写入数据的一个或多个处理器。
图1示意性地示出了根据一个实现示例的计算机设备100。计算机设备100例如包括中央处理器102,其在本文中称为主中央处理模块(HCPU)。HCPU 102例如耦接至存储器电路104。在图1的示例中,存在8个标记为MemC 0至MemC 7的存储器电路。
每个存储器电路104例如具有比HCPU的数据总线的宽度更窄的数据端口,并且每个数据端口耦接至HCPU 102的数据总线的一部分。在一个示例中,数据总线的宽度为64位,并且每个存储器电路104具有耦接至数据总线的相应的8位块的数据端口。如上文所述,提供具有比HCPU 102的数据总线宽度更窄的数据端口的存储器电路的优势在于,更窄的数据端口使用更少的引脚,这导致芯片表面以及能耗方面的成本降低。另外,窄数据端口使得构建大容量存储器系统而无需额外的缓冲放大器芯片,而使用缓冲放大器芯片会增加成本、能耗、等待时间并且减小工作频率和通带。
因此,当64位数据字被写入存储器电路中时,每个存储器电路104仅存储数据字的一部分。这意味着如果一个或更多个存储器电路104除了HCPU 102之外还包括用于实现数据处理的数据处理模块,则这种数据处理模块将仅知晓被存储在存储器中的每个数据字的一部分,并且因此无法实现有效的操作。
作为示例,假设处理装置应当被集成到每个存储器电路104中使得实现简单的计数功能。另外,假设存储器电路MemC 0至MemC 7初始被映射到地址0x04000000,其中前导“0x”指示值是以十六进制呈现的。HCPU 102将64位称为计数器的字写入由存储器电路104构成的主存储器中的地址0x04000000处。HCPU然后希望存储器电路MemC 0的DPU通过使64位计数器字递增来实现计数功能。然而,该DPU仅知晓64位字的一部分[7:0],因此无法完成期望的功能。同样地,任何其他存储器电路的DPU也仅知晓64位字的一部分,从而无法完成期望的功能。
如图1所示,附加存储器电路(MemC DPU)106可以包括DPU和宽度与HCPU 102的数据总线相等的数据端口。该存储器电路106可以存储在HCPU的数据总线上提供的完整字,并且因此该电路的DPU可以对完整数据字执行操作,包括上述计数功能。然而,由于其数据端口较宽,因此该存储器电路106将使用更多的引脚,因此不具有与如上文所述的窄数据端口相关的优势。
图2示意性地示出了根据本说明书的一个实现示例的计算机设备200。
计算机设备200包括耦接至多个存储器电路204的HCPU 202。在图2的示例中,存在8个标记为MemC 0至MemC 7的存储器电路。每个存储器电路204包括DPU 206,位于存储器电路MemC 0至MemC 7中的DPU在图2中分别标记为DPU0至DPU7。每个存储器电路204接收HCPU202的数据总线的相应块。在一个示例中,HCPU 202的数据总线的宽度为64位,并且在本文中表示为数据_总线[63:0]。该数据总线的位例如以如下的分块方式分布在存储器电路204之中:
-MemC 0的数据端口连接到数据_总线[7:0];
-MemC 1的数据端口连接到数据_总线[15:8];
-MemC 2的数据端口连接到数据_总线[23:16];
-MemC 3的数据端口连接到数据_总线[31:24];
-MemC 4的数据端口连接到数据_总线[39:32];
-MemC 5的数据端口连接到数据_总线[47:40];
-MemC 6的数据端口连接到数据_总线[55:48];
-MemC 7的数据端口连接到数据_总线[63:56]。
地址转换功能(ADDR CONV)208例如在HCPU 202中通过硬件和/或软件实现、或者通过分离的电路实现。该转换功能208将HCPU的寻址空间中的地址转换成在由存储器电路204使用的物理全局寻址空间(PGAS)中的特定地址,使得原本在HCPU数据总线的整个宽度上并且部分地在每个存储器电路204上呈现的数据字处于完全由其中一个存储器电路存储的位置处。转换后的PGAS地址例如在耦接至每个存储器电路204的命令和地址总线210上连同适当的读取或写入命令信号一起被提供给存储器电路204。下面将参考图3至图6更详细地描述地址转换功能208。
图3示意性地示出了根据一个实现示例的地址转换功能208。根据该示例,限定了HCPU全局寻址空间(HGAS)302,其是HCPU 202知晓和使用的寻址空间。物理全局寻址空间(PGAS)304被用于对物理存储器系统寻址。
根据本文描述的实施方式,HGAS和PGAS针对HGAS寻址空间中的至少某些范围而被不同地限定。例如,HGAS 302包括图3所示的子寻址空间306,其是DPU全局寻址空间(DGAS)。
当HGAS地址在DGAS区306之外时,通过该HGAS地址的值直接给出相应的PGAS地址。换言之,不需要进行任何地址转换。
然而,当HGAS地址位于DGAS区域306中时,实现地址转换以生成PGAS地址。例如,PGAS地址由功能308生成,该功能在本文中称为DGAS2PGAS。
在一些实施方式中,整个HGAS 302可以对应于DGAS 306,这意味着存储器电路的DPU可以访问存储器电路204的完整寻址空间。
DGAS 306包括被分配个每个DPU并且可由每个DPU访问的地址范围,如现在将参考图4所描述的那样。
图4示意性地示出了详细的全局寻址空间HCPU 302,并且特别地展示了DGAS 306可以包括与存储器电路的每个DPU的局部DPU寻址空间(DLAS)相对应的存储器地址的区域DLAS0至DLAS7。每个DPU的DLAS例如是线性的、或针对每个段是线性的寻址空间。这意味着地址之一的递增将针对存储器电路的地址的至少一部分而访问存储器电路中的相邻存储器字节。这不是将字存储到特定数量的不同的存储器电路中的情况,这是因为在这种情况下,地址之一的递增导致不同存储器电路的寻址。
图4对应于图2的示例,其中存在8个存储器电路,其具有8个相应的DPU,因此存在8个DLAS(DLAS0至DLAS7)。当然,在一些实现变型中,可以取决于存储器电路中的DPU数量并且取决于存储器电路的数量而存在不同数量的局部寻址空间。
例如,在一个实施方式中,假设每个存储器电路的大小是8MB(兆字节)并且因此存储器的总物理大小是64MB,局部寻址空间DLAS0至DLAS7被映射到存储器系统的后续存储器部分上:
-DLAS 0被映射到物理地址0-8MB-1,其中X MB-1这一表示是指比X兆字节小的一个字节;
-DLAS 1被映射到物理地址8-16MB-1;
-DLAS 2被映射到物理地址16-24MB-1;
-DLAS 3被映射到物理地址24-32MB-1;
-DLAS 4被映射到物理地址32-40MB-1;
-DLAS 5被映射到物理地址40-48MB-1;
-DLAS 6被映射到物理地址48-56MB-1;
-DLAS 7被映射到物理地址56-64MB-1。
因此,存储器电路MemC 0包括物理寻址空间的第一个8MB,存储器电路MemC 1包括物理寻址空间的第二个8MB,等等。这种部署的一个优点是每个DPU都可以访问连续的寻址空间。然而,局部DPU寻址空间与物理地址之间的这种对应仅是一个示例,并且其他类型的对应也是可行的。例如,物理地址可以是4MB的块,其中:
-DLAS 0被映射到物理地址0-4MB-1和32-36MB-1;
-DLAS 1被映射到物理地址4-8MB-1和36-40MB-1;等等,直到:
-DLAS 7被映射到物理地址28-32MB-1和60-64MB-1。
图5是展示根据本发明的一个实现示例的存储器访问方法的各步骤的流程图。该方法例如通过HCPU 202和/或实现地址转换功能208的电路来实现。特别地,在由HCPU的一个或更多个处理器执行的软件中实现地址转换功能208的情况下,该方法可以只通过HCPU来实现。作为变型,在通过与HCPU 202分开的硬件实现地址转换功能208的情况下,该方法可以通过专用电路来实现。
在步骤501中,生成存储器读取或写入请求。例如,HCPU 202通过执行加载或存储指令来生成该存储器读取或写入请求。
在步骤502中,确定存储器读取或写入请求是否涉及DGAS段的相关地址。换言之,确定该地址是否对应于图3和4中的标记为306的存储器区域,其应当被转换以生成物理地址。例如,地址转换功能208存储与DGAS 306相对应的地址范围的指示。
在一些实施方式中,HCPU 202被改进以实现DGAS2PGAS功能,而不会有性能损失或者仅有微小的性能损失。例如,HCPU包括多个配置寄存器,其使得创建HGAS中的特定DGAS地址段。例如,这些配置寄存器存储该DGAS段的界限,或者在存在多个非连续DGAS段的情况下存储每个DGAS段的界限。另外,配置寄存器例如针对地址转换而指示要执行的变换。实际上,这种转换取决于所使用的特定存储器电路,并且特别取决于存储器电路的数据端口的宽度。如果HGAS地址在DGAS段内,则该地址实际上是DGAS地址,并且因此应当被转换成PGAS地址。
如果该地址不在DGAS段内,那么在步骤503中,假设全局物理寻址空间(PGAS)等于全局DPU寻址空间(DGAS),因此在后面的步骤504中,根据HGAS地址库来处理存储器访问。
作为变型,如果在步骤502中确定读取或写入请求涉及落入DGAS段内的地址,则下一个步骤为步骤505,在步骤505中,通过使用DGAS2PGAS功能来执行地址转换,下面将参考图6详细描述该转换的一个示例。
图6示意性地示出了在8个存储器电路MemC 0至MemC 7的情况下的存储器系统的物理寻址空间的示例。每个存储器电路MemC 0至MemC 7的每个行存储子字,该子字例如是字节。每个字在HCPU数据总线上具有64位并且因此被存储成使得子字(SW)被存储在每个行中。例如,覆盖存储器系统的第一行R0包括被存储在存储器电路MemC 0中的第一8位值、被存储子存储器电路MemC 1中的第二8位值,等等。因此,对于落在DGAS 306之外并且不对其进行任何地址转换的地址来说,HCPU寻址空间中的每个字是穿过存储器系统的每个存储器电路而被存储的。在这种情况下,每个子字SW或字节的地址的形式例如是[25:0],其中23位[25:3]表示存储器系统的8388608个行之中的一行,并且最终位[2:0]表示该行中的字节。
然而,对于落入DGAS 306中的地址来说,后续的转换功能例如被施加在DGAS 302的地址与用于对存储器电路寻址的PGAS地址之间:
PGAS_地址[25:0]={DGAS_地址[22:0],DGAS_地址[25:23]}
因此,DGAS地址的原本指示该行是否落入1048576个行的第一组、第二组、第三组、第四组、第五组、第六组、第七组或第八组中的最高有效位[25:23],现在指示应写入哪个存储器电路。因此,通常落入第一1048576行中的地址现在将被写入存储器单元MemC 0,第二1048576行将被写入存储器单元MemC 1,等等。
因此,形成DGAS 306中的64位数据字的字节例如在存储器电路之一中的相邻八行中被全部写入或读取。因此,该64位字的读取和写入例如是通过连续的八个以上读取或写入操作来被执行的。在这种情况下,DGAS地址位[2:0]可以例如被省略,并且存储器电路例如能够在相继的地址位置处执行操作,而无须提供这些地址位。然而,DGAS地址位[2]例如是在应访问32位字的情况下被提供的,DGAS地址位[1:0]例如是在应执行16位访问的情况下被提供的,并且DGAS地址位[2:0]例如是在应访问指定字节的情况下被提供的。
在一些实施方式中,这种地址转换可以通过针对DGAS段自动执行的地址位重排来实现。例如,通过相应的配置寄存器的内容来指定位重排特性。在一些实施方式中,DGAS可以作为多个映射段的总和、以针对每个段为线性而被映射到HGAS。实际上,DGAS例如是存储器电路中的DLAS段的总和。
再次参考图5,在后续步骤506中,根据转换的物理地址的库执行对存储器的k个访问操作。例如,在一些实施方式中,读取操作或写入操作的地址可以对应于单个数据字节,其在这种情况下可以通过单个读取或写入操作来实现,其中k等于1。作为变型,读取请求或写入请求可以对应于要读取或要写入的数据字,并且在这种情况下将存在要对存储器执行的8个访问操作的序列,从而将数据写入存储器中的相应DLAS区,其中k等于8。取决于由读取操作或写入操作的地址所指定的字节数目,其他k值是可行的。
图7示出了计算机设备700,其类似于图2的设备200,但不是包括存储器电路204的单个存储体,而是包括存储器电路的多个存储体702。例如,HCPU 202与存储器电路的全部n个存储体通信,这些存储体标记为区块(Rank)0MemC至区块r-1MemC。每个存储体包括例如多个存储体电路。HCPU的数据总线耦接至每个存储体,并且地址转换功能208例如针对每个存储体单独实施。例如,在存在两个存储体0和1的情况下,存储体0包括例如区DLAS 0至7,而存储体1包括例如区DLAS 8至15。
然而在图2的实施方式中,每个存储器电路204都包括单个DPU 206,在一些实现变型中,每个存储器电路204可以包括多个DPU,如下面将参考图8和图9所描述的。
图8示意性地示出了作为图2的每个存储器电路204的替选的存储器电路800。例如,存储器电路800是集成有存储器矩阵(MEM)802和标记为DPU 0和DPU 1的两个DPU的存储器芯片。包括DPU 0和DPU 1的DPU和存储器矩阵802均耦接至例如HCPU总线的块804。在该实施方式中,包括DPU 0和DPU 1的DPU中的每一个例如共享相同的DPU局部寻址空间,并且例如能够访问存储器矩阵802的整个寻址空间。同样地,每个另外的存储器电路的DPU也例如共享同一个DLAS。
图9示出了一种替选实施方式,其中,每个存储器电路的存储器被分成多个区。在图9的示例中,三个存储器电路MemC x-1、MemC x和MemC x+1每个都包括两个区,一个区标记为MemC区0,且另一个区标记为MemC区1。DPU关联于存储器的每个区,并且仅可以访问该区。例如,每个存储器电路的DPU 0仅可以访问标记为MemC区0的区,而每个存储器电路的DPU 1尽可以访问标记为MemC区1的区。因此,相关存储器电路的区0可以被看作是一个虚拟存储体,而区1可以被看作是另一个虚拟存储体,并且区0和1在图9中被分别标记为虚拟区块0和虚拟区块1。因此,可以简单地认为存在多个存储体并且采取以上关于图7描述的解决方案,而不是认为每个存储器电路包括多个DPU。
在替选的实施方式中,每个DPU能够访问多个区,但是存储器电路的物理存储器的总寻址空间不可由DPU访问。在这种情况下,DLAS例如针对每个可访问存储器区而被限定,使得相关联的一个或更多个DPU能够访问该可访问存储器区。
通过作为如上文所述的地址位重排来实施地址转换功能,地址转换可以从性能的角度来看以多少有些透明的方式被执行。然而,HCPU仍通过以字节大小的读取和写入操作来访问DGAS寻址空间。可以通过使用突发存储器访问来执行更高效的转换,这将在下面参考图10A和10B更详细地描述。
图10A示意性地示出了根据一个实现示例的数据高速缓存1000(CACHE)。数据高速缓存使得处理装置能够本地存储数据并且快速访问该数据。数据高速缓存1000例如被集成到HCPU 202中,并且例如耦接到HCPU 202的数据总线(DDR DATA总线)以及命令和地址总线(ADDR+CMD总线)。数据高速缓存1000包括例如高速缓存线L1、L2、L3等,线的数量取决于高速缓存的大小。每个缓存线的大小例如是一个突发存储器事务。一个突发存储器事务例如是一个存储器访问操作,其通过允许对存储器地址块的快速的读取或写入访问而改善了性能。
例如,突发写入事务意味着一个写入访问序列,第一写入访问使用由HCPU生成的地址,并且接下来的写入访问使用例如由存储器电路从第一写入访问所使用的地址自动递增的地址,递增的大小对应于HCPU总线的字节宽度。
同样地,突发读取事务意味着读取访问序列,第一读取访问使用由HCPU生成的地址,并且接下来的读取访问使用从第一读取访问所使用的地址自动递增的地址,递增的大小对应于HCPU总线的字节宽度。
例如,根据DDR3(第三代双倍数据速率)和DDR4(第四代DDR)协议,突发事务包括八个连续访问,每个访问移动8个数据字节。因此,通过突发操作所移动的数据量是64字节。另外,第一访问地址例如与64字节界限对齐。
在一些实施方式中,突发存储器访问基于方形突发,也就是说字节宽度等于其访问数量方面的深度的突发。
在一个示例中,数据高速缓存1000基于DDR3或DDR4协议工作,因此高速缓存的每条线L1、L2等例如是64字节。DDR3和DDR4协议使用方形突发。实际上,在DDR3/DDR4的背景下,HCPU 202借助于包括8个64位(8字节)突发访问的突发操作来与其存储器通信,这些访问在本文中称为“突发访问0”至“突发访问7”。
包括本文中表示为B00至B63的64字节的突发读取或写入事务例如如下安排:
因此,当数据高速缓存1000的64字节高速缓存线之一填充有突发事务时,其可以例如表示为包括如下的8×8的表:
在这种高速缓存线内,HCPU 202例如能够访问:任何字节;任何16位字,其由两个字节(Bn,Bn+1)组成,其中n可被2整除;32位字,其由字节{Bn,Bn+1,Bn+2,Bn+3}组成,其中n可被4整除;和64位字,其由上表中的一行的8个字节组成。
在一些实施方式中,对数据高速缓存1000的高速缓存线中的字节进行重排以修改它们被存储在存储器电路中的方式。例如,取代当数据从HCPU 202的DDR数据总线到达时用该数据填充高速缓存线,执行如下重排:将高速缓存线表示为8×8的表,将坐标(x,y)处的每个字节与坐标(y,x)处的字节交换。一旦被重排,高速缓存线就被如下填充:
总是通过使用物理全局寻址空间中的地址来访问高速缓存,因此地址转换功能DGAS2PGAS被修改以将字节重排考虑在内。如上文所述,初始地址转换功能如下:
PGAS_地址[25:0]={DGAS_地址[22:0],DGAS_地址[25:23]}。
通过重排高速缓存的线中的字节,将对应于8×8矩阵的x方向中的地址位置的PGAS地址位[2:0]与对应于8×8矩阵的y方向的PGAS地址位[5:3]相交换。因此,新的地址转换变成如下:
PGAS_地址[25:0]={DGAS_地址[22:3],DGAS_地址[25:23],DGAS_地址[2:0]}。
注意,PGAS地址位[2:0]现在等于DGAS地址位[2:0]。有利地,这说明对16位、32位和64位的值进行寻址的存储器访问操作成为可能。特别地,在对高速缓存线进行读取或访问的情况下,执行以下任一访问操作成为可能:
-16位字,这16位对齐,该字由具有连续DGAS地址的2个字节构成;
-32位字,这32位对齐,该字由具有连续DGAS地址的4个字节构成;或
-64位字,这64位对齐,该字由具有连续DGAS地址的8个字节构成。
虽然以上描述提到了通过同时使用高速缓存的两条线进行与同一大小对齐的特定大小的存储器访问,但是也可以进行16位、32位和64位的非对齐DGAS访问。特别地,这可以例如通过如下获得:对将相邻高速缓存线切割成连续两个访问的访问进行分割,其中这两个访问均包括唯一的高速缓存线;对于两条高速缓存线进行同时访问,然后对读取数据多路复用以提取相关部分。
以上示例假设将重排(x,y)->(y,x)应用于方形高速缓存线突发。其他重排也是可行的。例如,可以替代地使用重排(x,y)->(y,~x),符号“~”是指1的补数。也就是说7-x。结果是存储器芯片索引被倒转。
以上示例假设存储器突发是方形的,这是针对DDR3和DDR4协议的情况。然而,其他协议涉及矩形突发。例如,DDR2协议包括4个访问,每个访问移动8个字节。与上文描述的重排操作相似的重排操作可以被应用于这种突发,如下面将详细描述的那样。
在DDR2的背景下,高速缓存的线具有32字节的大小,并且当该线通过突发操作被填充并且具有8×4表的形式时,其包括:
通过应用变换(x,y)->(y,x),并且通过以4×8表的形式表示32字节高速缓存线,得到以下:
再一次,DGAS2PGAS地址转换功能例如被修改以将该字节重排考虑在内。如上文所述,初始地址转换功能如下:
PGAS_地址[25:0]={DGAS_地址[22:0],DGAS_地址[25:23]}。
应注意,该初始地址重排与示例DDR3/DDR4相同,这是因为该初始重排仅取决于并行存储器电路的数量,该数量对于DDR2和DDR3/DDR4的示例来说例如是八个。
对于示例DDR2的新重排例如是:
PGAS_地址[25:0]={DGAS_地址[22:2],DGAS_地址[25:23],DGAS_地址[1:0]}。
HCPU例如执行以下读取或写入访问:
-DGAS中的16位访问,这16位对齐;或
-DGAS中的32位访问,这32位对齐。
DGAS中的64位访问无法实现,这是因为DGAS线性仅具有4字节的大小,这意味着只有DGAS地址的两个最低有效位等于PGAS地址的两个最低有效位。
虽然在DDR2示例中,矩形突发的宽度远大于其深度,但是本文描述的变换例如在宽度小于深度的情况下可以以与其他突发配置相同的方式来实施。
上文描述的高速缓存线的重排例如可以通过软件或硬件来实现。
在通过软件实现重排的情况下,重排可以例如基于36个周期来被实现。该周期数目可以与通常大于200个周期的随机DRAM访问(关闭页)的成本相比较。因此,通过软件执行重排的成本相对较低。
作为变型,在通过硬件执行高速缓存线重排的情况下,HCPU 202包括例如一个或更多个重排电路。这些电路例如被实现在HCPU 202中,或者作为耦接在HCPU与存储器电路之间的分隔开的电路的一部分。重排操作例如不是通过管道实现的,这是因为在重排开始之前应当加载整个8×8网络。
重排电路可以通过使用如下来实现:
-双端口寄存器,其具有正交的读取总线和写入总线;或
-单端口存储器,其输入端是与存储器总线正交的移位寄存器;
-移位寄存器的2D矩阵,其具有一个方向中的可能移位,然后是另一个方向中的移位。
现在将参考图10C至10E、基于高速缓存线包括16个字节b0至b15的示例来描述重排电路的实现示例。本领域技术人员能够容易地想到如何使该实现适配于其他大小的高速缓存线,例如上文描述的32和64字节的示例。
图10C至10F示出了用于在数据高速缓存中进行高速缓存线的读取操作期间实现高速缓存线重排的重排电路1001。当然,可以在高速缓存中进行高速缓存线的写入的情况下实现逆操作。
重排电路1001包括例如寄存器1002、1004、1006和1008,其例如是移位寄存器。如图10C所示,寄存器1002具有以从高速缓存线接收字节b0、b4、b8和b12的方式耦接的输入线,寄存器1004具有以从高速缓存线接收字节b1、b5、b9和b13的方式耦接的输入线,寄存器1006具有从高速缓存线接收字节b2、b6、b10和b14的方式耦接的输入线,以及寄存器1008具有从高速缓存线接收字节b3、b7、b11和b15的方式耦接的输入线。
图10D示出了在字节b0至b15例如通过移位操作已经被载入寄存器1002至1008之后的重排电路1001。
图10E示出了第一输出操作,在该操作期间载入寄存器1002中的字节b0、b4、b8和b12是被并行提供的,以形成重排后的高速缓冲线的第一行。同时,来自寄存器1004的字节朝向寄存器1002移位,来自寄存器1006的字节朝向寄存器1004移位,并且来自寄存器1008的字节朝向寄存器1006移位。
接着重复进行图10E所示的移位和输出操作,直到寄存器1002至1008已经提供了所有字节以形成重排后的高速缓存线,如图10F所示。
数据到寄存器1002至1008中的初始载入可以利用如上文所述的移位寄存器、通过移位操作来实现,或者通过在寄存器中进行存储器写入操作来实现。另外,虽然在结合图10E和10F描述的示例中,数据值是通过实现移位操作从寄存器1002、1004、1006、1008提供的,但是在实现变型中,数据可以通过存储器读取操作来提供。
在一些实施方式中,高速缓存线的重排可以针对所有存储器访问来实现,而无需考虑其是否涉及具有集成DPU的存储器电路这一事实。实际上,在存储器系统中写入高速缓存线的方向通常是无关紧要的,因此对所有数据实现重排是可能的。在这种情况下,高速缓存线的字节重排可以通过修改从总线DDR2、DDR3或DDR4载入高速缓存线或者写入这些总线的方式来被实现。地址转换例如还针对DGAS地址来实现。
实际上,参考图10B,在DGAS 1004中进行读取的情况下,64字节高速缓存线包括8×64位的字,每个字属于不同的DLAS。因此,这8个字在DGAS中不是以相邻的方式被映射的,并且例如在存储器系统具有由8个存储器电路确保的64MB的大小的情况下相隔8MB。在HGA1006中进行读取的情况下,64MB的高速缓存线包括64位的8个字,并且这8个字在HGAS中是以相邻的方式被映射的。
现在将参考图11详细描述变换的流程。
图11示出了包括图10A的高速缓存1000和图2的地址转换功能208的计算机设备200的一部分。图11的电路例如全部被集成到HCPU 202中。
地址转换功能208例如通过软件或硬件来实现。该功能在图11中显示为由多个操作构成的流程。转换是基于HGAS地址的,其是访问高速缓存数据操作的目标。在操作1106中,确定HGAS地址是否对应于一个DGAS段。如果是,则在接下来的操作1108中,根据存储器突发操作的类型,例如基于上文描述的DGAS2PGAS功能之一来实现从DGAS向PGAS的地址转换。多路复用器1110在HGAS地址对应于一个DGAS段的情况下选择例如被转换的地址,或者选择HGAS地址,以形成用于寻址高速缓存1000的PGAS地址。在数据高速缓存1000的地址端口(ADDR)处在地址总线(ADDR总线)上提供地址。
数据高速缓存1000耦接到HCPU 202的HCPU寄存器堆(register file)1114。HCPU寄存器堆1114例如是可通过由HCPU 202执行的指令来访问的通用寄存器堆。借助于字节转置电路(字节转置)1116用数据填充数据高速缓存,该字节转置电路例如是通过与图10C至10F的重排电路1001类似的电路来实现的。字节转置电路1116例如耦接在数据总线DDR(DDR总线)1118与数据高速缓存1000之间。然而,在其他实施方式中,其可以以其他方式布置,例如布置在数据高速缓存1000与HCPU寄存器堆1114之间的路径中。
在一些实施方式中,可以通过由软件在存储器电路与数据高速缓存之间读取和写入字节来实现高速缓存线重排,而不是如上文所述那样通过使用高速缓存线重排电路作为字节转置电路1116来实现高速缓存线重排。因此,16位、32位和64位的写入被转换成8位的写入序列,这打破了这些写入操作的粒度。与其本身大小对齐的16位、32位或64位的标准访问具有特定的粒度,但是粒度在只有一些位在数据写入操作中被写入的情况下被打破。实际上,在每个写入操作之后,写入操作的所有相关字节都应当被写入,否则系统的粒度会遭到损坏。如果在数据写入操作之后数据字包括已经被写入的某些字节和等待被写入的其他字节,则粒度被打破。例如,具有比存储器电路的数据端口更宽的宽度的命令寄存器可以在DGAS中被映射。如果该命令寄存器仅以部分的方式被写入,则命令变得没有意义。该问题例如通过在命令寄存器中包括指示命令何时有效的至少一个控制位而得以解决。控制位被包括在待写入命令寄存器的最终字节中,并且例如在每个写入操作期间被倒置。这样,仅当控制位改变了颜色,也就是说一旦控制位相对于前一命令被倒置,DPU就考虑从命令寄存器读取的命令。
在一些实施方式中,被存储在存储器电路204中的数据可以包括纠错码(ECC),如将在下文中参考图12和13所描述的。
图12示意性地示出了根据一个实现示例纠错码在存储器电路204中的水平存储和垂直存储。
图12中的块1202示出了水平存储。通过空心矩形来表示每个数据字节,数据被存储在由八列矩形表示的八个存储器电路中。第九个存储器电路例如被添加用来针对水平的每行数据而存储相关的ECC位。然而,由于存储器电路的每个内部DPU都可以修改由该存储器电路存储的数据,因此每个存储器电路都应能够在数据改变时访问和修改ECC数据。这在水平存储的布置中是无法实现的。另外,由于每个ECC值都关联于水平的一行字节,因此每个存储器电路也应能够访问由其他存储器电路存储的数据,以便验证和重新计算ECC值。
图12的块1204示出了垂直存储。如由关联于每个数据字节的阴影部分所示,关联于一列字节的垂直列的ECC位分布在这些字节之间。例如,针对每个字节设置一个或多个附加存储单元,以便存储一个或更多个附加的ECC位。存储器电路的数据端口也被放大相同的位数。存储器电路的DPU因此能够通过组合以同一列中的特定数量的子字中的每个字节而被存储的一个或更多个ECC位来重构ECC。例如,存在关联于每个字节的i位ECC,并且ECC包括i×j个位,也就是说关联于一列中的j个位的ECC位,其中i例如等于一或更大,而j例如等于至少二。在该实施方式中,HCPU 202包括例如用于基于一组八字节来生成ECC位的单个ECC电路,因为这些位分布于这些字节之间。例如,HCPU包括关联于每个存储器电路的ECC电路,使得ECC值可以被并行计算。集成DPU的每个存储器电路还包括例如用于验证ECC位并且在修改数据值时再次生成ECC位的ECC电路。
图13示意性地示出了展示ECC位的替选垂直存储模式的块1302。在
图13的示例中,关联于一个数据列的j行字节的ECC位被存储在专用于存储ECC数据的附加行中。ECC位因而可以通过实现附加的读取或写入操作来被访问。例如,突发的长度从8个访问扩展至9个访问。在该实施方式中,HCPU 202包括例如特定数量的ECC电路,该特定数量在每次访问中等于字节数。因此,在其中每次访问包括八个字节的图13的示例中,HCPU 202包括例如八个并行工作的ECC电路。集成DPU的每个存储器电路也包括例如用于验证ECC位并且当数据值被修改时再次生成ECC位的ECC电路。
图14示意性地示出了根据一个实现示例的更详细的图2的存储器电路204之一,其中DPU 206没有被直接集成到包括存储器矩阵(阵列)的集成电路芯片中,而是被集成到通过数据总线1402和地址总线1404耦接到存储器矩阵的分隔开的集成电路芯片中。DPU 206包括例如耦接到HCPU 202的命令和地址总线(ADDR+CMD总线)和数据总线块(DATA总线)的一个或更多个数据处理器(一个或更多个数据处理器)。
本文描述的实施方式的优点是,通过提供地址转换,数据字可以被垂直存储到具有其宽度小于数据字的数据端口的单个存储器电路中。因此,存储器电路的数据处理装置能够访问数据字并且对数据字进行操作。
通过以上对至少一个说明性实施方式的描述,本领域技术人员能够容易地设想各种不同的改变、修改和改进。例如,本领域技术人员应理解,虽然已经就具有64位宽度的HCPU数据总线和具有8位数据端口的八个存储器电路的一个或更多个存储体而描述了特定实施方式,但是许多不同的安排也是可行的。
另外,虽然在本文描述的实现示例中每个存储器电路对应于包括一个或更多个集成DPU的集成电路,但是在实现变型中,一个或更多个DPU可以被形成在存储器电路的分隔开的一个或更多个其他集成电路中。
Claims (18)
1.一种计算机设备,包括:
第一处理装置(202);
多个存储器电路(204),所述多个存储器电路中的至少一个第一存储器电路(204)包括一个或更多个另外的处理装置(206);
数据总线(DATA),其将所述第一处理装置(202)耦接至所述存储器电路(204)中的每个存储器电路,其中,所述存储器电路(204)中的每个存储器电路具有数据端口,所述数据端口具有m位的宽度,并且所述数据总线具有n位的宽度,其中n大于m,所述存储器电路(204)中的每个存储器电路的所述数据端口耦接到所述数据总线的相应的m位块,所述第一处理装置(202)能够向要经由所述数据总线读取或写入的n位数据值提供一个或更多个第一地址,其中所述第一处理装置和/或另外的电路(208)能够通过如下在所述第一存储器电路(204)中读取或写入所述n位数据值:
-将所述第一地址转换成与所述第一存储器电路中的m位存储器位置相对应的多个第二地址,所述多个第二地址中的至少两个第二地址是相邻的地址;和
-通过多个存储器访问操作,在所述第一存储器电路中对所述n位数据值进行读取或写入操作。
2.根据权利要求1所述的计算机设备,其中,每个所述另外的处理装置(206)包括被配置成基于由所述第一处理装置提供的命令而对由所述第一存储器电路(204)存储的数据执行处理操作的一个或更多个处理器。
3.根据权利要求1或2所述的计算机设备,其中,所述数据总线的宽度n是每个存储器电路的数据端口的宽度m的p倍,并且其中,存在p个存储器电路。
4.根据权利要求1至3中任一项所述的计算机设备,其中,所述地址转换包括地址重排,使得所述一个或更多个第一地址的一个或更多个最高有效位(MSB)变成指派所述第一存储器电路的所述多个第二地址的一个或更多个最低有效位(LSB)。
5.根据权利要求1至4中任一项所述的计算机设备,其中,所述一个或更多个第一地址是在所述第一处理装置的寻址空间(HGAS)中的地址,并且所述多个第二地址是在所述一个或更多个另外的处理装置的局部寻址空间(DLAS)中的地址,其中所述局部寻址空间是线性的或者针对每个段是线性的。
6.根据权利要求1至5中任一项所述的计算机设备,还包括数据高速缓存(1000),以及能够对所述数据高速缓存(1000)的一条或更多条线(L0,L1,L2)进行高速缓存线重排的数据重排电路(1001,1116),所述数据高速缓存(1000)包括高速缓存线,每条所述高速缓存线均存储多个数据字,每个数据字包括多个数据字节,并且其中,所述高速缓存线重排将形成所述数据字中的第一数据字的字节存储到所述高速缓存的与所述第一存储器电路相关联的存储位置中。
7.根据权利要求6所述的计算机设备,其中,所述数据高速缓存(1000)经由数据总线耦接到所述存储器电路(204),并且其中,所述数据重排电路是耦接在所述数据总线与所述数据高速缓存(1000)之间的字节转置电路(1116),并且能够实现被存储在所述高速缓存中或者从所述高速缓存载入的每个数据值的高速缓存线重排。
8.根据权利要求1至7中任一项所述的计算机设备,其中,所述第一处理装置和/或所述另外的电路(208)能够确定所述一个或更多个第一地址是否落入与所述一个或更多个另外的处理装置(206)相关联的地址段中,并且如果所述一个或更多个第一地址落入所述地址段中则进行地址转换。
9.根据权利要求1至8中任一项所述的计算机设备,其中,所述第一地址的多个最低有效位与所述第二地址之一的多个最低有效位相同。
10.根据权利要求1至9中任一项所述的计算机设备,其中,多于m位的命令寄存器被映射到所述第一存储器电路的寻址空间,所述命令寄存器包括至少一个控制位,其中,所述第一处理装置(202)能够通过多个存储器访问操作而在所述命令寄存器中进行写入操作,所述命令寄存器的字节包括所述控制位,所述控制位通过所述存储器访问操作中的最终操作而被写入并且涉及所述控制位的修改。
11.根据权利要求1至10中任一项所述的计算机设备,其中,所述第一存储器电路(204,800)是集成有存储器矩阵(802)和所述一个或更多个另外的处理装置(DPU 0,DPU 1)的集成电路芯片。
12.根据权利要求1至10中任一项所述的计算机设备,其中,所述第一存储器电路(204,800)包括第一集成电路芯片,所述第一集成电路芯片包括存储器矩阵和具有所述一个或更多个另外的处理装置(DPU 0,DPU 1)的另外的集成电路芯片。
13.根据权利要求11或12所述的计算机设备,其中,所述第一存储器电路(204,800)包括多个另外的处理装置(DPU 0,DPU 1),所述多个另外的处理装置中的每一个都与所述存储器矩阵的相应寻址空间相关联。
14.根据权利要求1至13中任一项所述的计算机设备,其中,所述第一处理装置(202)包括一个或更多个纠错码(ECC)电路,所述一个或更多个纠错码电路能够将一个或更多个ECC位插入每个m位值。
15.根据权利要求1至14中任一项所述的计算机设备,其中,所述第一处理装置(202)包括一个或更多个纠错码(ECC)电路,所述一个或更多个纠错码电路能够生成要在另外的存储器访问操作期间被存储到所述第一存储器电路(204)中的ECC位。
16.一种方法,包括:
由第一处理装置(202)经由数据总线(DATA)对多个存储器电路中的第一存储器电路(204)中的n位数据值进行读取或写入操作,所述数据总线将所述第一处理装置(202)耦接到所述存储器电路中的每个存储器电路,所述第一存储器电路包括一个或更多个另外的处理装置(206),其中,所述存储器电路中的每个存储器电路具有宽度为m位的数据端口,并且所述数据总线的宽度为n位,其中n大于m,所述存储器电路(204)中的每个存储器电路的所述数据端口耦接到所述数据总线的相应的m位块,所述读取或写入操作包括:
-由所述第一处理装置(202)经由所述数据总线向要被读取或写入的n位数据值提供一个或更多个第一地址;
-将所述第一地址转换成与所述第一存储器电路中的m位存储器位置相对应的多个第二地址,所述多个第二地址中的至少两个第二地址是相邻的地址;和
-通过多个存储器访问操作对所述第一存储器电路中的n位数据值进行读取或写入操作。
17.根据权利要求16所述的方法,还包括由所述第一处理装置对数据高速缓存(1000)的一条或更多条线(L0,L1,L2)进行高速缓存线重排,所述数据高速缓存(1000)具有高速缓存线,每条所述高速缓存线均存储多个数据字,每个数据字包括多个数据字节,并且其中,所述高速缓存线重排将形成所述数据字中的第一数据字的字节存储到所述高速缓存的与所述第一存储器电路相关联的存储位置中。
18.一种存储有程序指令的电子存储介质,所述程序指令在被所述第一处理装置(202)执行时使得实施根据权利要求16或17所述的方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1559321 | 2015-10-01 | ||
FR1559321A FR3042049A1 (zh) | 2015-10-01 | 2015-10-01 | |
FR1650186A FR3042050B1 (fr) | 2015-10-01 | 2016-01-11 | Dispositif informatique muni de traitement en memoire et de ports d'acces etroits |
FR1650186 | 2016-01-11 | ||
PCT/FR2016/052450 WO2017055732A1 (fr) | 2015-10-01 | 2016-09-27 | Dispositif informatique muni de traitement en memoire et de ports d'acces etroits |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139989A true CN108139989A (zh) | 2018-06-08 |
CN108139989B CN108139989B (zh) | 2021-05-25 |
Family
ID=56137415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057288.3A Active CN108139989B (zh) | 2015-10-01 | 2016-09-27 | 配备有存储器中的处理和窄访问端口的计算机设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10884657B2 (zh) |
EP (1) | EP3356945B1 (zh) |
JP (1) | JP6757791B2 (zh) |
CN (1) | CN108139989B (zh) |
FR (2) | FR3042049A1 (zh) |
WO (1) | WO2017055732A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181865A (zh) * | 2020-09-09 | 2021-01-05 | 北京爱芯科技有限公司 | 地址编码方法、装置、解码方法、装置及计算机存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3066842B1 (fr) | 2017-05-24 | 2019-11-08 | Upmem | Logique de correction de row hammer pour dram avec processeur integre |
US10908820B2 (en) * | 2017-09-14 | 2021-02-02 | Samsung Electronics Co., Ltd. | Host-based and client-based command scheduling in large bandwidth memory systems |
FR3115395A1 (fr) | 2020-10-16 | 2022-04-22 | Upmem | Dispositif semi-conducteur comprenant un empilement de puces et puces d’un tel empilement |
CN114048157B (zh) * | 2021-11-16 | 2024-08-13 | 安徽芯纪元科技有限公司 | 一种内部总线地址重映射装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996035176A1 (en) * | 1995-05-03 | 1996-11-07 | Apple Computer, Inc. | Bus bridge address translator |
US5745791A (en) * | 1992-09-16 | 1998-04-28 | Intel Corporation | System for interfacing first and second components having different data path width by generating first and second component address to read data into buffer |
US5758108A (en) * | 1994-11-22 | 1998-05-26 | Seiko Epson Corporation | Data processing apparatus for variable bus width CPU |
EP0976054B1 (en) * | 1996-06-06 | 2001-08-29 | Advanced Micro Devices, Inc. | Address generation and data path arbitration to and from sram to accommodate multiple transmitted packets |
US20030037190A1 (en) * | 2001-05-10 | 2003-02-20 | Thomas Alexander | Flexible FIFO system for interfacing between datapaths of variable length |
US20030222283A1 (en) * | 2002-05-29 | 2003-12-04 | Hitachi, Ltd. | Semiconductor integrated circuit and testing method thereof |
US20130262786A1 (en) * | 2012-03-30 | 2013-10-03 | Sony Computer Entertainment Inc. | Memory system, method for controlling the same, and information processing device |
-
2015
- 2015-10-01 FR FR1559321A patent/FR3042049A1/fr active Pending
-
2016
- 2016-01-11 FR FR1650186A patent/FR3042050B1/fr not_active Expired - Fee Related
- 2016-09-27 US US15/763,970 patent/US10884657B2/en active Active
- 2016-09-27 EP EP16784233.5A patent/EP3356945B1/fr active Active
- 2016-09-27 WO PCT/FR2016/052450 patent/WO2017055732A1/fr active Application Filing
- 2016-09-27 JP JP2018516124A patent/JP6757791B2/ja active Active
- 2016-09-27 CN CN201680057288.3A patent/CN108139989B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745791A (en) * | 1992-09-16 | 1998-04-28 | Intel Corporation | System for interfacing first and second components having different data path width by generating first and second component address to read data into buffer |
US5758108A (en) * | 1994-11-22 | 1998-05-26 | Seiko Epson Corporation | Data processing apparatus for variable bus width CPU |
WO1996035176A1 (en) * | 1995-05-03 | 1996-11-07 | Apple Computer, Inc. | Bus bridge address translator |
EP0976054B1 (en) * | 1996-06-06 | 2001-08-29 | Advanced Micro Devices, Inc. | Address generation and data path arbitration to and from sram to accommodate multiple transmitted packets |
US20030037190A1 (en) * | 2001-05-10 | 2003-02-20 | Thomas Alexander | Flexible FIFO system for interfacing between datapaths of variable length |
US20030222283A1 (en) * | 2002-05-29 | 2003-12-04 | Hitachi, Ltd. | Semiconductor integrated circuit and testing method thereof |
US20130262786A1 (en) * | 2012-03-30 | 2013-10-03 | Sony Computer Entertainment Inc. | Memory system, method for controlling the same, and information processing device |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181865A (zh) * | 2020-09-09 | 2021-01-05 | 北京爱芯科技有限公司 | 地址编码方法、装置、解码方法、装置及计算机存储介质 |
CN112181865B (zh) * | 2020-09-09 | 2024-05-31 | 北京爱芯科技有限公司 | 地址编码方法、装置、解码方法、装置及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
FR3042050A1 (zh) | 2017-04-07 |
WO2017055732A1 (fr) | 2017-04-06 |
JP2018534666A (ja) | 2018-11-22 |
FR3042049A1 (zh) | 2017-04-07 |
EP3356945B1 (fr) | 2019-09-04 |
US20180260161A1 (en) | 2018-09-13 |
CN108139989B (zh) | 2021-05-25 |
EP3356945A1 (fr) | 2018-08-08 |
JP6757791B2 (ja) | 2020-09-23 |
US10884657B2 (en) | 2021-01-05 |
FR3042050B1 (fr) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210034524A1 (en) | Stacked memory device system interconnect directory-based cache coherence methodology | |
CN108139989A (zh) | 配备有存储器中的处理和窄访问端口的计算机设备 | |
US4926314A (en) | Method and apparatus for determining available memory size | |
US6912616B2 (en) | Mapping addresses to memory banks based on at least one mathematical relationship | |
US9697111B2 (en) | Method of managing dynamic memory reallocation and device performing the method | |
CN101751980B (zh) | 基于存储器知识产权核的嵌入式可编程存储器 | |
US20070143568A1 (en) | Address scrambing to simplify memory controller's address output multiplexer | |
CN101840383B (zh) | 支持连续/离散地址多数据并行访问的可配置存储器 | |
CN106776358A (zh) | Dimm ssd寻址性能技术 | |
CN107430550A (zh) | 非对称集组合的高速缓存 | |
US10020036B2 (en) | Address bit remapping scheme to reduce access granularity of DRAM accesses | |
CN103760525A (zh) | 一种补齐式原地矩阵转置方法 | |
US8468433B2 (en) | Optimizing the size of memory devices used for error correction code storage | |
JPH0792790B2 (ja) | ベクトル並列計算機 | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
CN106066833A (zh) | 存取多端口存储器模块的方法及相关的存储器控制器 | |
AU616653B2 (en) | Method and apparatus for determining available memory size | |
CN109783404A (zh) | 具有非对称通道的固态存储设备 | |
CN115048320A (zh) | Vtc加速器及其计算vtc的方法 | |
JP2001209574A (ja) | 記憶装置の制御方法 | |
JPS6037930B2 (ja) | 情報記憶装置 | |
TWI828108B (zh) | 應用於記憶體定址的資料路徑架構之記憶體 | |
TWI721660B (zh) | 控制資料讀寫裝置與方法 | |
CN116028423A (zh) | 一种通过内置边缘模块实现数据传送的fpga | |
KR20230020876A (ko) | 인 메모리 컴퓨팅을 통해 컨벌루션 뉴럴 네트워크 연산을 수행하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |