CN109478169B - 具有灵活地址解码的存储器控制器 - Google Patents

具有灵活地址解码的存储器控制器 Download PDF

Info

Publication number
CN109478169B
CN109478169B CN201680087529.9A CN201680087529A CN109478169B CN 109478169 B CN109478169 B CN 109478169B CN 201680087529 A CN201680087529 A CN 201680087529A CN 109478169 B CN109478169 B CN 109478169B
Authority
CN
China
Prior art keywords
address
region
decoder
memory
access
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
CN201680087529.9A
Other languages
English (en)
Other versions
CN109478169A (zh
Inventor
凯文·M·布朗德
托马斯·汉密尔顿
海德凯·卡纳亚玛
凯达尔纳特·巴拉里斯南
詹姆斯·R·麦格罗
沈贯豪
马克·福勒
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN109478169A publication Critical patent/CN109478169A/zh
Application granted granted Critical
Publication of CN109478169B publication Critical patent/CN109478169B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • 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
    • 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/0607Interleaved addressing
    • 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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/1041Resource optimization
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)
  • Power Sources (AREA)

Abstract

一种存储器控制器包括:主机接口,所述主机接口用于接收包括访问地址的存储器访问请求;存储器接口,所述存储器接口用于将存储器访问提供到存储器系统;以及地址解码器,所述地址解码器联接到所述主机接口,用于可编程地将所述访问地址映射到多个区域中的所选择区域。所述地址解码器能编程来使用各自具有二次幂大小的初级解码器和次级解码器将所述访问地址映射到具有非二次幂大小的第一区域,并且作为响应,提供第一区域映射信号。命令队列存储所述存储器访问请求和所述区域映射信号。仲裁器基于多个标准从所述命令队列选取所述存储器访问请求,并且作为响应,将对应存储器访问提供到所述存储器接口,所述多个标准部分地基于所述区域映射信号来评估。

Description

具有灵活地址解码的存储器控制器
技术领域
本公开总体上涉及数据处理系统,并且更具体地,涉及具有可与具有各种大小的存储器对接的存储器控制器的数据处理系统。
背景技术
计算机系统通常将便宜且高密度的动态随机存取存储器(DRAM)芯片用于主存储器。现今销售的大部分DRAM芯片与由电子器件工程联合委员会(JEDEC)颁布的各种双数据速率(DDR)DRAM标准相容。随着JEDEC推出新的DDR标准,在很长一段时间内,诸如DDR3和DDR4等多代DDR DRAM都很受欢迎。此外,JEDEC还指定专为现代图形处理器需求而设计的另一类DRAM(称为图形DDR(gDDR)存储器),而gDDR5这一代现今仍然流行。因此,对于存储器控制器而言,重要的是能够灵活地与这些以及可能的其他新兴存储器类型中的任一者对接。
存储器控制器的灵活性对于使存储器系统满足使用它的不同类型的产品的需求来说也是重要的。例如,存储器通常被设计为具有二次幂密度以简化布局和解码。随着现代集成电路光刻技术的发展,存储器芯片密度在历史上呈指数增长。因此,在历史上DRAM大小已经从20世纪80年代中期可获得的64千比特(64Kb)发展到128Kb、再到256Kb,依此类推,直到现在,通常可获得4、8和16千兆位(Gb)密度的DDR DRAM。这种趋势可能无法继续的原因有两个。首先,半导体光刻技术可能正在接近物理极限。因此,存储器制造商可能提供不是二次幂的中间大小。其次,设计人员可能需要所具有的密度不接近最近的二次幂大小的存储器,并且可能不希望随未来更高密度而来的额外产品成本。因此,存储器制造商已经开始设计非二次幂存储器大小以更好地面对这些现实。与非二次幂存储器的对接给存储器控制器制造商带来了设计满足所有可能配置的电路而无过多成本的另外负担。
如果存储器控制器能够以交错的方式访问不同存储体(bank)而不引起页冲突,则存储器系统的操作更有效。通过使对不同存储体的访问交错,存储器控制器能够部分地隐藏对同一存储体中的不同行的一系列访问将需要的开销。已知的存储器控制器使用以下电路:对输入地址进行加扰或“调混”,使得对同一存储列(rank)和存储体的顺序访问将跨多个存储体分布。例如,存储器控制器使用某些地址位来对存储体地址进行加扰,使得在地址空间的相对小的区域中的存储器访问被映射到不同存储体。由这种存储器控制器实施的存储体加扰算法提供了根据系统类型、应用程序和操作系统所生成的访问的特性等而对一些系统具有所希望水平的交错、但对其他系统则没有的访问模式。
附图说明
图1以框图形式展示根据一些实施方案的数据处理系统;
图2以框图形式展示适合于在图1的数据处理系统中使用的加速处理单元(APU);
图3以框图形式展示根据一些实施方案的适合于在图2的APU中使用的存储器控制器和相关联的物理接口(PHY);
图4以框图形式展示根据一些实施方案的适合于在图2的APU中使用的另一存储器控制器和相关联的PHY;
图5以框图形式展示根据一些实施方案的存储器控制器;并且
图6以框图形式展示根据一些实施方案的可用于实现图5的存储器控制器的一部分的存储器控制器。
图7以框图形式展示根据一些实施方案的可用作图6的非二次幂解码器的地址解码器的简化框图。
图8展示示出由图7的地址解码器在被编程用于非二次幂地址空间时使用两个区域解码器执行的地址映射的图。
图9展示示出根据一些实施方案由图7的地址解码器在被编程来实施芯片选择交错时执行的地址映射的图。
图10以框图形式展示根据一些实施方案的可用于实现图5的地址解码器的地址解码器。
图11以框图形式展示根据一些实施方案的可用于实现图5的地址解码器的另一地址解码器。
在以下描述中,在不同图示中相同参考符号的使用指示类似或完全相同的项目。除非另外指出,否则词语“联接”及其相关联的动词形式包括直接连接和通过本领域中已知手段的间接电气连接两者,并且除非另外指出,否则对直接连接的任何描述也意味着使用适当形式的间接电气连接的替代性实施方案。
具体实施方式
如以下将在一种形式中描述的,一种存储器控制器包括:主机接口,所述主机接口用于接收存储器访问请求,所述存储器访问请求包括访问地址;存储器接口,所述存储器接口用于将存储器访问提供到存储器系统;地址解码器;命令队列;以及仲裁器。所述地址解码器联接到所述主机接口,用于使用散列函数可编程地将所述访问地址映射到多个区域中的所选择区域。所述地址解码器对用于确定在所述散列函数中使用所述访问地址的对应多个位中的哪一些的多个可编程位作出响应,并且能编程来使用具有第一二次幂大小的初级解码器和具有第二二次幂大小的次级解码器来将所述访问地址映射到具有非二次幂大小的第一区域。所述命令队列联接到所述地址解码器,用于存储所述存储器访问请求和区域映射信号。所述仲裁器是用于基于多个标准从所述命令队列选取所述存储器访问请求,并且作为响应,将对应存储器访问提供到所述存储器接口,所述多个标准部分地基于所述区域映射信号来评估。
例如,所述地址解码器可包括多个区域解码器,其中所述区域对应于所述存储器系统的芯片选择信号。每个区域解码器可包括初级解码器和次级解码器两者。所述初级解码器是用于接收所述访问地址并提供初级区域选择信号,并且具有第一基地址和第一二次幂大小。所述次级解码器是用于接收所述访问地址并提供次级区域选择信号,其中所述次级解码器具有第二基地址和第二二次幂大小。所述区域解码器还包括逻辑电路,所述逻辑电路用于响应于所述初级区域选择信号和所述次级区域选择信号中的至少一者的激活,激活对应区域映射信号。例如,所述区域的大小可为2N+2(N-1),其中所述初级解码器解码对大小为2N的区域进行解码,并且所述次级解码器对大小为2(N-1)的区域进行解码。以这种方式,所述区域可具有利用两个紧凑型二次幂解码器实现的例如6千兆字节(6GB)的大小。
在另一实例中,所述存储器控制器还包括第一区域解码器和第二区域解码器。所述第一区域解码器是用于使用具有第三二次幂大小的第一初级解码器和具有所述第三二次幂大小的第一次级解码器来选择性地将所述访问地址映射到具有二次幂大小的第一区域,并且作为响应,提供所述第一区域映射信号。所述第二区域解码器用于使用具有所述第三二次幂大小的第二初级解码器和具有所述第三二次幂大小的第二次级解码器来选择性地将所述访问地址映射到具有二次幂大小的第二区域,并且作为响应,提供所述第二区域映射信号。所述存储器控制器使对应于所述访问地址的存储器空间在所述第一初级解码器、所述第二初级解码器、所述第一次级解码器和所述第二次级解码器中的每一者之间交错。
在另一种形式中,一种设备具有存储器控制器,所述存储器控制器包括主机接口、存储器接口、地址解码器、命令队列和仲裁器。所述主机接口是用于接收存储器访问请求,所述存储器访问请求包括访问地址。所述存储器接口是用于将存储器访问提供到存储器系统。所述地址解码器联接到所述主机接口,用于可编程地将所述访问地址映射到多个区域中的所选择区域,其中所述地址解码器能编程来使用具有第一二次幂大小的初级解码器和具有第二二次幂大小的次级解码器来将所述访问地址映射到具有非二次幂大小的第一区域,并且作为响应,提供第一区域映射信号。所述命令队列联接到所述地址解码器,用于存储所述存储器访问请求和区域映射信号。所述仲裁器是用于基于多个标准从所述命令队列选取所述存储器访问请求,并且作为响应,将对应存储器访问提供到所述存储器接口,所述多个标准部分地基于所述区域映射信号来评估。在又一种形式中,一种具有存储器控制器的设备包括主机接口、存储器接口、地址解码器、命令队列和仲裁器。所述主机接口是用于接收存储器访问请求,所述存储器访问请求包括访问地址。所述存储器接口是用于将存储器访问提供到存储器系统,所述存储器访问包括散列地址。所述地址解码器接到所述主机接口,用于使用散列函数可编程地将所述访问地址映射到所述存储器系统的多个区域中的所选择区域,其中所述地址解码器对用于确定在所述散列函数中使用所述访问地址的对应多个位中的哪一些的多个可编程位作出响应。所述命令队列联接到所述地址解码器,用于存储包括所述散列地址的所述存储器访问请求.所述仲裁器用于基于多个标准从所述命令队列选取所述存储器访问请求,并且作为响应,将包括所述散列地址的对应存储器访问提供到所述存储器接口。
在又一种形式中,一种方法包括:接收存储器访问请求,所述存储器访问请求包括访问地址。对所述访问地址进行解码,并且作为响应,提供对应区域映射信号。所述解码包括:使用具有第一二次幂大小的第一初级解码器和具有第二二次幂大小的第一次级解码器来选择性地将所述访问地址映射到具有非二次幂大小的第一区域。响应于将所述访问地址映射到所述第一区域,提供第一区域映射信号。存储所述存储存储器访问请求和所述区域映射信号,并且基于多个标准选取这样存储的所述存储器访问请求,其中所述多个标准部分地基于所述区域映射信号来评估。响应于所选取存储器访问请求,提供对应存储器访问。
在再一种形式中,一种方法包括:接收存储器访问请求,所述存储器访问请求包括访问地址。对所述访问地址进行解码,并且作为响应,提供对应区域映射信号,其中所述解码包括:响应于用于确定在散列函数中使用所述访问地址的对应多个位中的哪一些的多个可编程位,选择性地使用所述散列函数对所述访问地址进行散列。响应于所述解码,提供所述区域映射信号。存储所述存储存储器访问请求和所述区域映射信号,并且基于多个标准选取这样存储的所述存储器访问请求,所述多个标准部分地基于所述区域映射信号来评估。响应于所选取存储器访问请求,提供对应存储器访问。
图1以框图形式展示根据一些实施方案的数据处理系统100。数据处理系统100包括呈加速处理单元(APU)形式的数据处理器110、存储器系统120、外围组件互连高速(PCIe)系统150、通用串行总线(USB)系统160和磁盘驱动器170。数据处理器110操作为数据处理系统100的中央处理单元(CPU),并提供可用于现代计算机系统中的各种总线和接口。这些接口包括两个双数据速率(DDRx)存储器通道、用于连接到PCIe链路的PCIe根联合体、用于连接到USB网络的USB控制器、以及到串行高级技术附件(SATA)大容量存储装置的接口。
存储器系统120包括存储器通道130和存储器通道140。存储器通道130包括连接到DDRx总线132的一组双列直插存储器模块(DIMM),包括在此实例中对应于单独的存储列的代表性DIMM 134、136和138。同样地,存储器通道140包括连接到DDRx总线142的一组DIMM,包括代表性DIMM 144、146和148。
PCIe系统150包括连接到数据处理器110中的PCIe根联合体的PCIe交换机152,PCIe装置154、PCIe装置156和PCIe装置158。PCIe装置156又连接到系统基本输入/输出系统(BIOS)存储器157。系统BIOS存储器157可为多种非易失性存储器类型中的任一种,诸如只读存储器(ROM)、快闪电可擦除可编程ROM(EEPROM)等。
USB系统160包括连接到数据处理器110中的USB主控的USB集线器162,以及各自连接到USB集线器162的代表性USB装置164、166和168。USB装置164、166和168可为诸如键盘、鼠标、快闪EEPROM端口等的装置。
磁盘驱动器170通过SATA总线连接到数据处理器110,并为操作系统、应用程序、应用文件等提供大容量存储。
数据处理系统100通过提供存储器通道130和存储器通道140而适合于在现代计算应用中使用。存储器通道130和140中的每一者可连接到现有技术DDR存储器,诸如DDR第四版(DDR4)、低功率DDR4(LPDDR4)、图形DDR第五版(gDDR5)以及高带宽存储器(HBM),并且可适于未来的存储器技术。这些存储器提供高总线带宽和高速操作。同时,这些存储器还提供低功率模式以节省用于电池供电的应用(诸如膝上型计算机)的功率,并且还提供内置的热监测。
图2以框图形式展示适合于在图1的数据处理系统100中使用的APU 200。APU 200包括中央处理单元(CPU)核心联合体210、图形核心220、一组显示引擎230、存储器管理集线器240、数据组构250、一组外围控制器260、一组外围总线控制器270、系统管理单元(SMU)280以及一组存储器控制器290。
CPU核心联合体210包括CPU核心212和CPU核心214。在此实例中,CPU核心联合体210包括两个CPU核心,但在其他实施方案中,CPU核心联合体可包括任意数目的CPU核心。CPU核心212和214中的每一者均双向地连接到系统管理网络(SMN)(其形成控制组构)和数据组构250,并且能够将存储器访问请求提供到数据组构250。CPU核心212和214中的每一者可为单一核心,或可另外为具有共享诸如高速缓存等特定资源的两个或更多个单一核心的核心联合体。
图形核心220为高性能图形处理单元(GPU),其能够以高度集成且并行的方式执行图形操作,诸如顶点处理、片段处理、明暗处理、纹理混合等。图形核心220双向地连接到SMN和数据组构250,并且能够将存储器访问请求提供到数据组构250。就此而言,APU 200可支持其中CPU核心联合体210和图形核心220共享同一存储器空间的统一存储器架构,或其中CPU核心联合体210和图形核心220共享存储器空间的一部分、同时图形核心220还使用CPU核心联合体210不可访问的专用图形存储器的存储器架构。
显示引擎230对由图形核心220生成的对象进行渲染和光栅化以便在监测器上显示。图形核心220和显示引擎230双向地连接到公共存储器管理集线器240以用于统一转变成存储器系统120中的适合的地址,并且存储器管理集线器240双向地连接到数据组构250以用于生成此类存储器访问以及接收从存储器系统返回的读取数据。
数据组构250包括用于在任何存储器访问代理与存储器控制器290之间路由存储器访问请求和存储器响应的纵横交换机。数据组构250还包括由BIOS限定的用于基于系统配置来确定存储器访问的目的地的系统存储器映射,以及用于每一虚拟连接的缓冲器。
外围控制器260包括USB控制器262和SATA接口控制器264,所述控制器中的每一者均双向地连接到系统集线器266和SMN总线。这两个控制器仅举例示出可在APU 200中使用的外围控制器。
外围总线控制器270包括系统控制器或“南桥”(SB)272和PCIe控制器274,所述控制器中的每一者均双向地连接到输入/输出(I/O)集线器276和SMN总线。I/O集线器276还双向地连接到系统集线器266和数据组构250。因此,例如,CPU核心可通过数据组构250通过I/O集线器276来路由的访问对USB控制器262、SATA接口控制器264、SB 272或PCIe控制器274中的寄存器进行编程。
SMU 280为本地控制器,其控制APU 200上的资源的操作并使其间的通信同步。SMU280管理APU 200上的各种处理器的加电定序,并通过重置、启用以及其他信号来控制多个芯片外装置。SMU 280包括图2中未示出的一个或多个时钟源,诸如锁相环路(PLL),以为APU200的组件中的每一个提供时钟信号。SMU 280还管理用于各种处理器和其他功能块的功率,并且可从CPU核心212和214以及图形核心220接收所测量的功耗值以确定适合的功率状态。
APU 200还实施各种系统监测和功率节约功能。特别地,一个系统监测功能为热监测。例如,如果APU 200变热,则SMU 280可减小CPU核心212和214和/或图形核心220的频率和电压。如果APU200变得过热,则可完全关闭所述APU 200。热事件还可由SMU 280通过SMN总线从外部传感器接收,并且SMU 280作为响应可减小时钟频率和/或电源电压以。
图3以框图形式展示根据一些实施方案的适合于在图2的APU200中使用的存储器控制器300和相关联的物理接口(PHY)330。存储器控制器300包括存储器通道310和电源引擎320。存储器通道310包括主机接口312、存储器通道控制器314以及物理接口316。主机接口312通过可扩展数据端口(SDP)将存储器通道控制器314双向地连接到数据组构250。物理接口316通过遵守DDR-PHY接口规范(DFI)的总线将存储器通道控制器314双向地连接到PHY330。电源引擎320通过SMN总线双向地连接到SMU 280,通过高级外围总线(APB)双向地连接到PHY 330,并且还双向地连接到存储器通道控制器314。PHY 330具有到存储器通道(诸如图1的存储器通道130或存储器通道140)的双向连接。存储器控制器300为用于使用单一存储器通道控制器314的单一存储器通道的存储器控制器的实例化,并且具有电源引擎320以按下文将进一步描述的方式控制存储器通道控制器314的操作。
图4以框图形式展示根据一些实施方案的适合于在图2的APU200中使用的另一存储器控制器400和相关联的PHY 440和450。存储器控制器400包括存储器通道410和420以及电源引擎430。存储器通道410包括主机接口412、存储器通道控制器414以及物理接口416。主机接口412通过SDP将存储器通道控制器414双向地连接到数据组构250。物理接口416将存储器通道控制器414双向地连接到PHY 440,并遵守DFI规范。存储器通道420包括主机接口422、存储器通道控制器424以及物理接口426。主机接口422通过另一SDP将存储器通道控制器424双向地连接到数据组构250。物理接口426将存储器通道控制器424双向地连接到PHY 450,并遵守DFI规范。电源引擎430通过SMN总线双向地连接到SMU 280,通过APB双向地连接到PHY 440和450,并且还双向地连接到存储器通道控制器414和424。PHY 440具有到存储器通道(诸如图1的存储器通道130)的双向连接。PHY 450具有到存储器通道(诸如图1的存储器通道140)的双向连接。存储器控制器400为具有两个存储器通道控制器的存储器控制器的实例化,并且使用共享的电源引擎430来以下文将进一步描述的方式控制存储器通道控制器414和存储器通道控制器424两者的操作。
图5以框图形式展示根据一些实施方案的存储器控制器500。存储器控制器500包括存储器通道控制器510和电源控制器550。存储器通道控制器510包括接口512、队列514、命令队列520、地址生成器522、内容可寻址存储器(CAM)524、重放队列530、刷新逻辑块532、定时块534、页表536、仲裁器538、错误校正码(ECC)校验块542、ECC生成块544以及数据缓冲器(DB)546。
接口512具有通过外部总线到数据组构250的第一双向连接,并且具有输出端。在存储器控制器500中,此外部总线与由英国剑桥的ARM Holdings,PLC指定的高级可扩展接口第四版(称为“AXI4”)相容,但在其他实施方案中可为其他类型的接口。接口512将存储器访问请求从称为FCLK(或MEMCLK)域的第一时钟域变换到称为UCLK域的在存储器控制器500内部的第二时钟域。类似地,队列514将存储器访问从UCLK域提供到与DFI接口相关联的DFICLK域。
地址生成器522对通过AXI4总线从数据组构250接收的存储器访问请求的地址进行解码。存储器存取请求包括以归一化格式表示的物理地址空间中的访问地址。地址生成器522将归一化地址转换成可用于对存储器系统120中的实际存储器装置进行寻址以及用于高效地调度相关访问的格式。此格式包括区域识别符,所述区域识别符使存储器访问请求与特定存储列、行地址、列地址、存储体地址以及存储体群组相关联。在启动时,系统BIOS查询存储器系统120中的存储器装置以确定所述存储器装置的大小和配置,并对与地址生成器522相关联的一组配置寄存器进行编程。地址生成器522使用存储在配置寄存器中的配置来将归一化地址变换成适合的格式。命令队列520为从数据处理系统100中的存储器访问代理(诸如CPU核心212和214以及图形核心220)接收的存储器访问请求的队列。命令队列520存储由地址生成器522解码的地址字段,以及允许仲裁器538高效地选择存储器访问的其他地址信息,包括访问类型和服务质量(QoS)识别符。CAM 524包括用以强制实施排序规则的信息,诸如写后写(WAW)和写后读(RAW)排序规则。
重放队列530为用于存储由仲裁器538选取的正在等待响应的存储器访问的暂时性队列,所述响应诸如地址和命令奇偶校验响应、DDR4DRAM的写循环冗余校验(CRC)响应、或gDDR5DRAM的写入和读取CRC响应。重放队列530访问ECC校验块542以确定返回的ECC是正确的还是指示错误。重放队列530允许在这些周期中的一个的奇偶校验错误或CRC错误的情况下重放访问。
刷新逻辑532包括用于各种下电、刷新以及终结电阻(ZQ)校准周期的状态机,所述周期与从存储器访问代理接收的正常的读和写存储器访问请求分开生成。例如,如果存储器存储列处于预充电下电,则所述存储器存储列必须定期被唤醒以运行刷新周期。刷新逻辑532定期地生成刷新命令,以防止通过从DRAM芯片中的存储器单元的存储电容器的电荷的泄漏造成的数据错误。另外,刷新逻辑532定期地校准ZQ以防止由于系统中的热变化导致的片内终结电阻中的失配。
仲裁器538双向地连接到命令队列520,并且为存储器通道控制器510的核心。仲裁器538通过智能地调度访问以提高存储器总线的使用率来提高效率。仲裁器538使用定时块534来通过基于DRAM定时参数确定命令队列520中的特定访问是否合格用于发出来强制实施恰当的定时关系。例如,每一DRAM具有激活命令之间的最小指定时间,称为“tRC”。定时块534维持一组计数器,所述一组计数器基于在JEDEC规范中指定的此参数和其他定时参数来确定合格性,并且所述定时块534双向地连接到重放队列530。页表536维持关于仲裁器538的存储器通道的每一存储体和存储列中的活动页的状态信息,并且双向地连接到重放队列530。
响应于从接口512接收的写入存储器访问请求,ECC生成块544根据写入数据来计算ECC。DB 546存储所接收存储器访问请求的写入数据和ECC。当仲裁器538选取对应的写入访问以用于分派到存储器通道时,DB 546将组合的写入数据/ECC输出到队列514。
电源控制器550包括到高级可扩展接口第一版(AXI)的接口552、APB接口554以及电源引擎560。接口552具有到SMN的第一双向连接,包括输入端和输出端,所述输入端用于接收在图5中单独地示出的标记为“EVENT_n”的事件信号。APB接口554具有连接到接口552的输出端的输入端,以及用于通过APB连接到PHY的输出端。电源引擎560具有连接到接口552的输出端的输入端,以及连接到队列514的输入端的输出端。电源引擎560包括一组配置寄存器562、微控制器(μC)564、自刷新控制器(SLFREF/PE)566以及可靠的读取/写入定时引擎(RRW/TE)568。配置寄存器562通过AXI总线来编程,并且存储配置信息以控制存储器控制器500中的各种块的操作。因此,配置寄存器562具有连接到图5中未详细示出的这些块的输出端。自刷新控制器566为引擎,其允许除由刷新逻辑532进行的自动刷新生成外的手动刷新生成。可靠的读取/写入定时引擎568将连续的存储器访问流提供到存储器或I/O装置,以用于诸如DDR接口最大读取延时(MRL)训练和回送测试的目的。
存储器通道控制器510包括允许其选取存储器访问以用于分派到相关联的存储器通道的电路。为做出期望的仲裁决定,地址生成器522将地址信息解码成预解码信息(包括存储器系统中的存储列、行地址、列地址、存储体地址以及存储体群组),并命令队列520存储预解码信息。配置寄存器562存储配置信息以确定地址生成器522如何对所接收地址信息进行解码。仲裁器538使用解码的地址信息、由定时块534指示的定时合格性信息以及由页表536指示的活动页信息来高效地调度存储器访问,同时观察其他准则,诸如QoS要求。例如,仲裁器538实施对打开页的访问的偏好以避免改变存储器页所需的预充电和激活命令的开销,并通过将对一个存储体的开销访问与对另一个存储体的读取和写入访问进行交错来隐藏所述开销访问。特别地,在正常操作期间,仲裁器538正常地在选择不同的页之前在不同存储体中保持页打开,直到需要对所述页进行预充电为止。
图6以框图形式展示根据一些实施方案的可用于实现图5的存储器控制器500的一部分的存储器控制器600。存储器控制器600将图5的地址解码器522实现为非二次幂地址解码器610,以适应非传统存储器大小。例如,存储器控制器600能够从数据组构250接收请求并且可编程地将其映射到非二次幂存储器大小,诸如6GB DIMM。下文将更详细地讨论此操作。
存储器控制器600具有用于使用SDP从数据组构250接收存储器访问请求的输入端口。每个存储器访问请求包括标记为“CONTROL”的一组控制信号、标记为“NORMALIZEDADDRESS”的40位地址、以及标记为“DATA”的一组256个数据信号。CONTROL信号包括访问请求的标签、请求的大小、所请求服务的质量、访问类型(诸如读取或写入)等。NORMALIZEDADDRESS包括所有所支持的地址位,并且为附加隐式前导零的40位地址。DATA信号包括与单个存储器访问请求相关联的足够数量的信号。例如,CPU核心可包括具有256位高速缓存行大小的最后一级高速缓存;因此,将高速缓存行写回到存储器将需要256位传输。诸如图3的PHY 330的物理接口可将对应的存储器访问作为8位到64位或72位(64位加8位纠错码)DDRDIMM的突发来执行,但是存储器控制器将所有256个DATA位作为存储器访问请求的一部分来接收。
存储器控制器600包括非二次幂地址解码器610和如先前在图5中所展示的写入数据缓冲器546。地址解码器610包括用于接收NORMALIZED ADDRESS的输入端以及用于提供以下项的输出端:标记为“CS[n]”的一组n个芯片选择信号、标记为“CHIP_ID”的一组三个芯片识别信号、标记为“ROW_ADDRESS”的解码行地址、标记为“COLUMN_ADDRESS”的解码列地址、标记为“BG”的存储体群组信号、以及标记为“BA”的存储体地址信号。存储器控制器600将地址解码器610的这些输出连同CONTROL信号提供到命令队列520,以允许命令队列520存储它们,使得仲裁器538可做出关于存储器访问请求的有效排序的决定。存储器控制器600还将COLUMN_ADDRESS、BG和BA信号提供到页表536,以允许页表536使访问请求与每个DRAM芯片中的打开页相关联。
写入数据缓冲器546为保持缓冲器,其具有用于接收256位DATA信号的输入端以及连接到BEQ 514的输入端的输出端。由于数据组构250向存储器控制器600提供散布的读取和写入存储器访问请求,因此写入数据缓冲器546将不用于所有所接收存储器访问请求,而仅用于写入存储器访问请求。
在操作中,系统BIOS在启动时查询存储器通道130和140的每个存储器模块上的串行存在检测(SPD)ROM,以确定它们各自的密度和组织。系统BIOS使用此信息来对地址解码器610的可配置地址解码器寄存器进行编程,以限定给定工作负载和存储器芯片配置的地址映射。系统BIOS还使得此信息可供操作系统使用,以允许它将用于虚拟地址变换的页表从逻辑地址编程到物理地址,所述物理地址是NORMALIZED ADDRESS的格式。在由系统BIOS配置寄存器之后,地址解码器610使用它们来对NORMALIZED ADDRESS进行解码,以将每个访问请求映射到具有对应芯片选择的特定区域。
例如,如果存储器是具有二次幂大小的DDR4存储器,那么地址解码器522将NORMALIZED ADDRESS解码成如下表I所示的各种输出信号:
表I
为了与一些DIMM一起操作,存储器控制器600还支持称为秩乘法(rankmultiplication)的特征。在具有秩乘法的系统中,给定DIMM上的每个封装集成电路包括使用穿硅通孔(TSV)技术互连的三维(3D)存储器芯片堆栈。例如,DDR4标准指定3位芯片识别输入信号C[2:0]以支持2个、4个和8个存储器芯片的堆栈。以这种方式,通过公共芯片选择信号和编码C[2:0]信号来选择堆栈中的每个存储器芯片,以识别所述区域内的所选择逻辑存储列。为了实施秩乘法,地址解码器610可编程地将NORMALIZED ADDRESS解码成逻辑存储列并激活所选择区域的单热芯片选择信号,并且还提供对应于所选择逻辑存储列的编码C[2:0]信号。
地址解码器610支持非二次幂地址解码。现在将描述地址解码器610的构造。
图7以框图形式展示根据一些实施方案的图6的非二次幂解码器610的简化框图。非二次幂地址解码器610包括一组区域解码器700,其与由相应芯片选择信号限定的不同存储列相关联。在图7所展示的实例中,地址解码器700包括与分别标记为“CS0”、“CS1”、“CS2”和“CS3”的四个芯片选择信号相关联的四个区域解码器710。每个区域解码器710包括初级解码器720、次级解码器730、标记为“OR”的逻辑电路740、与初级解码器720相关联的标记为“CFG”的第一组配置寄存器750、以及与次级解码器730相关联的第二组类似标记的配置寄存器760。应当注意,配置寄存器750和760在逻辑上分别与初级解码器720和次级解码器730相关联,并且可在物理上与中央寄存器组(诸如图5的配置寄存器562)中的其他配置寄存器相异,或者可与其组合。
配置寄存器750和760中的每一者具有连接到SMN总线的输入端,以及用于提供寄存器值以供初级解码器720和次级解码器730中的相应一个使用的输出端。初级解码器720具有用于接收NORMALIZED ADDRESS的第一输入端、连接到配置寄存器750的输出端的第二输入端、以及用于提供主芯片选择信号的输出端。主芯片选择信号分别标记为“CSPRI0”、“CSPRI1”、“CSPRI2”和“CSPRI3”。次级解码器730具有用于接收NORMALIZED ADDRESS的第一输入端、连接到配置寄存器760的输出端的第二输入端、以及用于提供主芯片选择信号的输出端。主芯片选择信号分别标记为“CSSEC0”、“CSSEC1”、“CSSEC2”和“CSSEC3”。逻辑电路740具有连接到初级解码器720的输出端的第一输入端、连接到次级解码器730的输出端的第二输入端、以及用于提供信号“CS0”、“CS1”、“CS2”和“CS3”中的相应一个的输出端。
每组配置寄存器750和760包括足以限定区域的属性、使得可对NORMALIZEDADDRESS进行解码并将其映射到区域的若干寄存器。在一个实例中,基地址寄存器限定区域的起始地址并且对应于区域中的最低地址,而地址掩码寄存器限定区域的大小并因此识别要在解码中使用的有效位。每个解码器将根据地址掩码寄存器掩码的NORMALIZED ADDRESS的有效位与基地址寄存器的对应位进行比较。如果存在匹配,那么解码器输出其相应的芯片选择信号,并且逻辑电路740输出最终芯片选择信号。对于高态有效芯片选择信号,使用逻辑OR功能来实现逻辑电路740。
在一个实施方案中,每个初级解码器支持大小为2N的区域,并且每个次级解码器支持大小为2(N-1)的区域,其中N是整数。例如,如果N等于32,那么初级解码器720支持4GB的区域大小,并且次级解码器支持2GB的区域大小,总供6GB的区域大小。
通过提供分配给同一区域的初级解码器和次级解码器两者并将它们的结果进行组合,区域解码器710支持非二次幂存储器大小而无需复杂的逐位解码,从而减小解码器的大小。由于初级解码器和次级解码器中的每一者都具有二次幂大小,因此它们可使用紧凑型电路快速且高效地对NORMALIZED ADDRESS位的子集执行区域解码。通过减少解码操作中所需的位数,地址解码器700能够更快地对地址进行解码。例如,将40位NORMALIZEDADDRESS的32位与任意区域大小的基址寄存器和限制寄存器进行完全逐位比较将需要多于单个时钟周期来使用当代CMOS逻辑进程解决以获得更高时钟速率。
虽然地址解码器710可用于通过初级解码器和次级解码器两者来支持非二次幂区域大小,但是根据其他实施方案,另外的配置是可能的。例如,每个地址解码器可包括各自大小为2N、2(N-1)和2(N-2)的初级解码器、次级解码器和三级解码器。例如,如果N等于32,那么此配置允许将归一化地址解码成1-7GB的区域大小且增量为1GB。此概念也可进一步扩展到四个或更多个解码器。
图8展示示出由图7的地址解码器在被编程用于非二次幂地址空间编程时使用两个区域解码器执行的地址映射的图800。图800包括归一化地址空间810、第一区域820和第二区域830。归一化地址空间810具有与解码信号CSPRI0相关联的4GB子区域812、与解码器信号CSPRI1相关联的4GB子区域814、与解码信号CSSEC0相关联的2GB子区域816、以及与解码信号CSSEC1相关联的2GB子区域。子区域812从地址0x0开始并延伸到地址0x0_FFFF_FFFF(是4G–1(232–1)),其中0x指示具有隐式前导零的40位十六进制地址。子区域814从地址0x1_0000_0000(232)开始并延伸到地址0x1_FFFF_FFFF(是8G–1(232+232–1))。子区域816从地址0x2_0000_0000(8G)开始并延伸到地址0x2_7FFF_FFFF(10G–1)。子区域818从地址0x2_8000_0000(10G)开始并延伸到地址0x2_FFFF_FFFF(12G–1)。第一区域820是与CS0相关联的6GB区域,并且具有4GB初级部分822和2GB次级部分824。第一区域820用各自为128K(131,072)字节的48K(49,152)行实现,其中初级部分822用从行地址0x0延伸到行地址0x7FFF的32K(32,768)行实现,并且次级部分824用从行地址0x8000延伸到0xbFFF的16K行实现。同样地,第二区域830用各自为128K字节的48K行实现,其中初级部分832用从行地址0x0延伸到行地址0x7FFF的32K行实现,并且次级部分834用从行地址0x8000延伸到0xbFFF的16K行实现。
要执行此解码操作,系统BIOS如表II所示对配置寄存器进行编程:
表II
应当注意,位[7:0]表示256字节的字节寻址。为了实施方便,这些位被丢弃,并且对于基址寄存器,被推断为0,且对于掩码寄存器,被推断为1。
存储器访问交错
已知的存储器控制器使用称为存储体调混模式的另外的交错模式,其中对输入地址的某些位进行解码以形成存储体地址。这些特定位包括用于生成新的存储体(或者在DDR4的的情况下,存储体和存储体群组两者)位的访问地址的某些位,诸如低阶行地址位。以这种方式,可将否则会导致页冲突的一组连续地址的不同部分划分在存储体之间,从而产生更高的效率。
根据一些实施方案,如本文所述的存储器控制器包括用于使物理地址空间跨一组相异区域交错的可编程机制。以这种方式,如上所述的存储器控制器(例如,图2的存储器控制器292或294,或图5的存储器控制器500)可通过跨多个DRAM存储列分布可在程序执行期间遇到的一系列访问来更有效地操作。因此,可在有用的周期内隐藏诸如页预充电和页激活的开销周期。第一种机制是可使用初级区域解码器和次级区域解码器完成的芯片选择交错。
图9展示示出根据一些实施方案由图7的地址解码器在被编程来实施芯片选择交错时使用两个地址解码器执行的地址映射的图900。图900包括归一化地址空间910、第一区域920和第二区域930。归一化地址空间910具有与解码信号CSPRI0相关联的2GB子区域912、与解码器信号CSPRI1相关联的2GB子区域914、与解码信号CSSEC0相关联的2GB子区域916、以及与解码信号CSSEC1相关联的2GB子区域918。子区域912从地址0x0开始并延伸到地址0x0_7FFF_FFFF(是2G–1(231–1))。子区域914从地址0x8_0000_0000(231)开始并延伸到地址0x0_FFFF_FFFF(是4G–1(231+231–1))。子区域916从地址0x1_0000_0000(4GB)开始并延伸到地址0x1_7FFF_FFFF(6G–1)。子区域918从地址0x1_8000_0000(6G)开始并延伸到地址0x1_FFFF_FFFF(8G–1)。第一区域920是与CS0相关联的4GB区域,并且具有2GB部分922和2GB部分924。第一区域920用各自为128K字节的16K行实现,其中初级部分922用从行地址0x0延伸到行地址0x3FFF的16K行实现,并且次级部分924用从行地址0x4000延伸到x7FFF的16K行实现。同样地,第二区域930用各自为128K字节的16K行实现,其中初级部分932用从行地址0x0延伸到行地址0x3FFF的16K行实现,并且次级部分934用从行地址0x4000延伸到0x7FFF的16K行实现。
在芯片选择交错模式中,存储器控制器600使物理地址空间在通道上的多个DIMM存储列上交错,而不是单个DIMM存储列占据归一化地址空间中的一组连续地址。芯片选择(CS)交错减少页冲突,因为可在更小的地址区域上使用潜在地更多的DRAM存储体,从而有效地使更多的DRAM存储体可供使用。要使用芯片选择交错,有两个要求。首先,交错芯片选择信号的数量是二次幂。其次,区域大小相同。在图9中的实例中,对于具有相同大小(4GB)的两个区域,有两种(21)芯片选择。
通过交换用于选择区域的较高阶归一化地址位和具有与期望的交错大小相对应的归一化地址的较低阶位的芯片选择信号,存储器控制器600可编程地实现芯片选择交错。CS交错模式可通过设置BaseAddrCS和AddrMaskCS寄存器以指示交错的大小来配置。例如,如果在双CS系统中在1024KB归一化地址范围内仅使初级解码器交错、然后仅使次级解码器交错,那么寄存器设置将如下表III所示:
表III
因此,区域912和914现在跨地址0x0到0x0_FFFF_FFFF进行双向交错,并且地址位12确定是使用CS0还是CS1。同样地,区域916和918也跨地址0x1_0000_0000到0x1_FFFF_FFFF进行双向交错,并且地址位12再次确定是使用CS0还是CS1。
在表I所示的实例中,地址位A[12](对应于1024KB的大小)被映射到列地址位9(COL[9])。此映射允许实施交错时的另外的固件灵活性。在当前实例中,A[12]用于CS交错,而COL[9]替代地被映射到A[13],并且较高阶地址位用于存储体和存储体群组地址,即根据表I的模式,A[14]用于BA0、A[15]用于BA1等。
第二种机制称为散列。通过允许使用更多地址位,散列提供更精细的粒度。用于散列的地址位的数量和位置可由用户编程,从而提供灵活性,使得可针对特定应用和软件代码的特性来定制散列操作。
图10以框图形式展示根据一些实施方案的可用于实现图5的地址解码器522的存储器控制器1000的一部分。存储器控制器1000包括地址解码器1010和一组配置寄存器1020。地址解码器1010包括芯片选择(CS)散列电路1012和存储体地址(BA)散列电路1014。CS散列电路1012具有用于从接口512接收40位NORMALIZED ADDRESS的输入端,以及用于提供标记为“CS_HASH”的一组散列芯片选择信号的输出端。BA散列电路1014具有连接到CS散列电路1012的输出端的第一输入端、用于接收NORMALIZED ADDRESS的第二输入端、以及用于提供CHIP_ID、ROW_ADDRESS、COLUMN_ADDRESS、BG和BA_HASH信号的输出端。存储器控制器1000使用这些输出端将解码存储器访问、连同CONTROL信号提供到命令队列520,以允许命令队列520存储它们,使得仲裁器538可做出关于存储器访问请求的有效排序的决定。
如上所述,地址解码器1010从各种配置寄存器接收存储器通道中的每个存储器芯片的基地址和大小的字段。另外,地址解码器1010使用另外的配置寄存器来支持可编程散列函数,并且图10仅示出这些另外的配置寄存器。在所展示实施方案中,地址解码器1010支持多达四个芯片选择信号和多达三十二个存储体。因此,配置寄存器1020包括各自对应于编码CS信号的一位的一组两个CS散列寄存器1030,以及各自对应于编码BA信号的一位的一组五个BA散列寄存器1040。
CS散列寄存器1030包括与CS_HASH[0]相关联的第一CS散列寄存器1032和与CS_HASH[1]相关联的第二CS散列寄存器1034。每个CS散列寄存器是32位寄存器,其包括寄存器位31:1中的标记为“NORMALIZED ADDRESS XOR[39:9]”的30位字段以及寄存器位0中的标记为“EN”的启用字段。BA散列寄存器1040包括分别与散列的存储体地址位BA_HASH[0]、BA_HASH[1]、BA_HASH[2]、BA_HASH[3]和BA_HASH[4]相关联的BA散列寄存器1042、1044、1046、1048和1050。每个BA散列寄存器是具有以下三个字段的32位寄存器:寄存器位31:14中的标记为“ROWXOR[17:0]”的18位行异OR(XOR)字段、在寄存器位13:1中的标记为“COLXOR[12:0]”的13位列XOR字段、以及寄存器位0中的标记为“EN”的启用字段。
地址解码器1010使用NORMALIZED ADDRESS的所选择位执行按位XOR运算。CS散列电路1012首先使用NORMALIZED ADDRESS的最重要的三十一位中的所选择位来对芯片选择位进行散列。CS散列寄存器的NORMALIZED ADDRESS XOR字段的每个位用于选择性地对NORMALIZED ADDRESS的指示位执行按位异OR(XOR)运算。这两个芯片选择信号根据以下等式[1]和[2]进行散列:
CS_HASH[0]=CS[0]^(CS0_XORENABLE&(^(NORMADDR[39:9]&CS0_NORMADDRXOR)))
[1]
CS_HASH[1]=CS[1]^(CS1_XORENABLE&(^(NORMADDR[39:9]&CS1_NORMADDRXOR)))
[2]
其中^表示XOR运算子,并且^()表示各对位上的按位XOR运算子。
存储器解码器1010首先基于存储器的大小来定位CS[1:0]位。然后,存储器解码器1010使用等式[1]和[2]来执行CS散列以计算CS_HASH值。在CS散列电路1012确定散列的CS_HASH值之后,BA散列电路1014使用等式[3]-[7]执行BA散列以计算BA_HASH值:
BA_HASH[0]=BA[0]^(BA0_XORENABLE&(^(COL[12:0]&BANK0_COLXOR))^(^(ROW[17:0]&BANK0_ROWXOR)) [3]
BA_HASH[1]=BA[1]^(BA1_XORENABLE&(^(COL[12:0]&BANK1_COLXOR))^(^(ROW[17:0]&BANK1_ROWXOR)) [4]
BA_HASH[2]=BA[2]^(BA2_XORENABLE&(^(COL[12:0]&BANK2_COLXOR))^(^(ROW[17:0]&BANK2_ROWXOR)) [5]
BA_HASH[3]=BA[3]^(BA3_xORENABLE&(^(COL[12:0]&BANK3_COLXOR))^(^(ROW[17:0]&BANK3_ROWXOR)) [6]
BA_HASH[4]=BA[4]^(BA4_XORENABLE&(^(COL[12:0]&BANK4_COLXOR))^(^(ROW[17:0]&BANK4_ROWXOR)) [7]
应当注意,对应于CS位的NORMALIZED ADDRESS位本身不能用于对CS位进行散列,因为否则它将强制所有CS_HASH值为0。下文将进一步描述设置这些寄存器值的另外限制。
在一些实施方案中,CS和BA散列函数可扩展到另外级别的存储器组织。例如,HBM存储器实施称为“伪通道”的概念。伪信道也可使用对应的散列等式和对应的伪通道寄存器来进行散列,如以下等式[8]中所描述:
PC_HASH=PC^(PC_XORENABLE&(^(COL[12:0]&PC_COLXOR))^(^(ROW[17:0]&PC_ROWXOR))^(^(BANK[4:0]&PC-BANKXOR)) [8]
在这种情况下,存储器控制器使用另外的散列电路和另外的配置寄存器。
已知的存储器控制器仅对存储体地址进行散列并使用固定的散列函数。存储器控制器1000提供两种另外的机制来增加其灵活性。首先,存储器控制器1000选择性地对芯片选择进行散列以允许在划分访问方面具有更大的灵活性。例如,具有四个存储列和四个芯片选择的存储器可用于将一组近端存储器访问更广泛地分布在多四倍的存储器存储体之上。这种更广泛的分布允许存储器控制器1000更好地隐藏开销。其次,存储器控制器1000允许散列函数本身可编程并因此可改变以更好地适应处理环境。例如,与台式系统或服务器相比,移动系统往往运行更少数量的任务并在物理地址空间中使用更高的代码和数据集中,因此将受益于确保对相对小的物理存储器区域的更多存储器访问更广泛地跨多个芯片和存储体分布的更复杂的散列算法。另一方面,台式和服务器系统往往是更加多任务的和多线程的,因此更简单的散列算法可能就足够了。在任一种情况下,散列算法都可通过可选择性地由系统BIOS编程的一组散列寄存器进行编程。
图11以框图形式展示根据一些实施方案的可用于实现图5的地址解码器522的存储器控制器1100的另一部分。如这里所示,存储器控制器1100包括地址解码器1110,其具有散列电路1120、之后是非二次幂解码器1130。散列电路1120具有用于接收访问地址的输入端、以及输出端,并且可用图10的散列电路1010实现。非二次幂解码器1130具有连接到散列电路1120的输出端的输入端、以及用于提供解码地址的输出端,并且可用图6和图7的非二次幂解码器电路610实现。存储器控制器1100表明散列机制和非二次幂存储器大小解码器不仅可单独实现,它们还可在单个存储器解码器1110中一起使用。在这种情况下,散列机制无缝地在非二次幂解码之前,以通过支持两种功能为存储器控制器提供进一步增强的灵活性。
散列操作也可与非二次幂存储器大小无缝地一起使用。可以关于特定实例来描述散列电路1012与非二次幂存储器地址大小一起执行散列操作的方式。在此实例中,使用两个区域解码器实现双列12Gb存储器,其中用于CS0的第一区域解码器映射到使用初级解码器(CS0p)和次级解码器(CS0s)的存储器空间的12Gb,并且用于CS1的第二区域解码器映射到使用初级解码器(CS1p)和次级解码器(CS1s)的存储器空间的12Gb。在此实例中,交错以直接的方式发生:
表IV
表V
归一化地址 解码器 散列地址的MSB
0x0000 CS0p 0x0
0x0001 CS1p 0x0
0x0002 CS0p 0x0
0x0003 CS1p 0x0
0x0004 CS0p 0x0
0x0005 CS1p 0x0
0x0006 CS0p 0x0
0x0007 CS1p 0x0
0x0008 CS0p 0x1
0x0009 CS1p 0x1
0x000A CS0p 0x1
0x000B CS1p 0x1
0x000C CS0p 0x1
0x000D CS1p 0x1
0x000E CS0p 0x1
0x000F CS1p 0x1
0x0010 CS0s 0x2
0x0011 CS1s 0x2
0x0012 CS0s 0x2
0x0013 CS1s 0x2
0x0014 CS0s 0x2
0x0015 CS1s 0x2
0x0016 CS0s 0x2
0x0017 CS1s 0x2
当系统BIOS配置非二次幂解码器1130以设置非二次幂大小时,由于DRAM架构,对散列函数存在另外的限制。例如,根据图8和图9所展示的配置,只有48K行,并且对应于Row[MSB:MSB-1]的ROWXOR位不应被启用用于散列操作,因为它不能正确地将三种状态变换成正确数量的存储体状态。相反,这些位只能在具有二次幂大小的存储器中使用。
因此,上述存储器控制器能够通过各种可配置选项来执行灵活的地址映射,从而为用户提供一系列选择。这些地址映射选择包括支持非二次幂存储器大小、交错和散列,所有这些都在一个组合解码器(地址解码器522)中实现。
图5和图6的存储器控制器可用硬件和软件的各种组合实现。例如,出于速度和效率目的,解码器610可用硬件电路实现。此硬件电路可包括优先级编码器、有限状态机、可编程逻辑阵列(PLA)等。在一些实施方案中,存储器控制器500的其他功能块可由在软件控制下的数据处理器执行。一些软件组件可存储在计算机可读存储介质中以便由至少一个处理器执行,并且可对应于存储在非暂时性计算机存储器或计算机可读存储介质中的指令。在各种实施方案中,非暂时性计算机可读存储介质包括:磁盘或光盘存储装置、固态存储装置(诸如快闪存储器)、或一个或多个其他非易失性存储器装置。存储在非暂时性计算机可读存储介质上的计算机可读指令可呈源代码、汇编语言代码、目标代码的形式,或呈可由一个或多个处理器解译或以其他方式执行的其他指令格式。
图5的存储器控制器500或图6的地址解码器610或其任何部分可由呈数据库或其他数据结构形式的计算机可访问数据结构来描述或表示,所述数据库或其他数据结构可由程序读取并直接或间接地用于制造集成电路。例如,此数据结构可为用高级设计语言(HDL)(诸如Verilog或VHDL)对硬件功能性的行为级描述或寄存器传输级(RTL)描述。所述描述可由合成工具来读取,所述合成工具可对描述进行合成,以便从合成库产生包括一系列门的网表。所述网表包括一组门,所述一组门还表示包括集成电路的硬件的功能性。所述网表随后可被放置和选路以产生描述要应用于掩模的几何形状的数据集。随后可在各种半导体制造步骤中使用掩模来产生集成电路。可替代地,计算机可访问存储介质上的数据库可为网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。
虽然已经描述了特定实施方案,但是本领域技术人员将明白对这些实施方案的各种修改。例如,存储器控制器500可与除DDRx存储器之外的其他类型的存储器(诸如高带宽存储器(HBM)、RAMbus DRAM(RDRAM)等以及不同类型的DIMM)对接。此外,存储器控制器500可缩放以访问不同大小的存储器。在其他实施方案中,二次幂解码器的数量将变化。虽然所展示实施方案描述了在DDR存储器中有用的存储器寻址和控制信号,但它们将根据所用存储器的类型而变化。而且,示例性数据处理系统100是基于具有CPU核心和GPU核心两者的APU,诸如图2的APU 200,但是,上述技术也适用于CPU(具有一个或多个CPU核心但没有GPU核心的系统)和GPU(没有CPU核心但有一个或多个GPU核心的系统)。
因此,所附权利要求意图涵盖落入所公开实施方案的范围内的对所公开实施方案的所有修改。

Claims (15)

1.一种具有存储器控制器(500)的设备(100/200),所述存储器控制器(500)包括:
主机接口(512),所述主机接口(512)用于接收存储器访问请求,所述存储器访问请求包括访问地址;
存储器接口(514),所述存储器接口(514)用于将存储器访问提供到存储器系统(120);
地址解码器(522/610),所述地址解码器(522/610)联接到所述主机接口(512),用于可编程地将所述访问地址映射到多个区域中的所选择区域,其中所述地址解码器(522/610)能编程来使用用于接收所述访问地址并具有第一二次幂大小的初级解码器(720)和用于接收所述访问地址并具有第二二次幂大小的次级解码器(730)来将所述访问地址映射到具有非二次幂大小的第一区域(820) ,其中所述第二二次幂大小不同于所述第一二次幂大小,并且作为响应,提供第一区域映射信号;
命令队列(520),所述命令队列(520)联接到所述地址解码器(522/610),用于存储所述存储器访问请求和区域映射信号;以及
仲裁器(538),用于基于多个标准从所述命令队列(520)选取所述存储器访问请求,并且作为响应,将对应存储器访问提供到所述存储器接口(514),所述多个标准部分地基于所述区域映射信号来评估。
2.如权利要求1所述的设备(100/200),其中所述区域映射信号对应于所述存储器系统(120)的芯片选择信号。
3.如权利要求1所述的设备(100/200),其中所述地址解码器(522/610)包括多个区域解码器,其中对于每个区域解码器(710):
所述初级解码器(720)是用于接收所述访问地址并提供初级区域选择信号,其中所述初级解码器(720)具有第一基地址和所述第一二次幂大小;
所述次级解码器(730)是用于接收所述访问地址并提供次级区域选择信号,其中所述次级解码器(730)具有第二基地址和所述第二二次幂大小;并且
所述区域解码器(710)还包括逻辑电路(740),所述逻辑电路(740)用于响应于所述初级区域选择信号和所述次级区域选择信号中的至少一者的激活,激活对应区域映射信号。
4.如权利要求3所述的设备(100/200),其中所述第一区域的大小为2N + 2(N-1),其中N为整数,所述初级解码器(720)对大小为2N的子区域进行解码,并且所述次级解码器(730)对大小为2(N-1)的区域进行解码。
5.如权利要求3所述的设备(100/200),其中所述地址解码器(522/610)进一步对所述访问地址进行解码,以提供行地址、列地址、存储体地址和存储体群组。
6.如权利要求3所述的设备(100/200),其中每个区域解码器(710)还包括:
第一组配置寄存器(750),所述第一组配置寄存器(750)与所述初级解码器(720)相关联;以及
第二组配置寄存器(760),所述第二组配置寄存器(760)与所述次级解码器(730)相关联。
7.如权利要求1所述的设备(100/200),其还包括:
第一区域解码器(710/CS0),所述第一区域解码器(710/CS0)用于使用具有第三二次幂大小的第一初级解码器(720)和具有所述第三二次幂大小的第一次级解码器(730)来选择性地将所述访问地址映射到具有二次幂大小的第一区域(920),并且作为响应,提供所述第一区域映射信号;以及
第二区域解码器(710/CS1),所述第二区域解码器(710/CS1)用于使用具有所述第三二次幂大小的第二初级解码器(720)和具有所述第三二次幂大小的第二次级解码器(730)来选择性地将所述访问地址映射到具有二次幂大小的第二区域(930),并且作为响应,提供所述第二区域映射信号,
其中所述存储器控制器(500)使对应于所述访问地址的存储器空间在所述第一初级解码器(720)、所述第二初级解码器(720)、所述第一次级解码器(730)和所述第二次级解码器(730)中的每一者之间交错。
8.如权利要求1所述的设备(100/200),其中所述设备(100/200)是数据处理系统(100),所述数据处理系统(100)还包括:
存储器访问代理(110/210/220),所述存储器访问代理(110/210/220)用于提供存储器访问请求,所述存储器访问请求具有所述访问地址;以及
对所述存储器访问作出响应的所述存储器系统(120),所述存储器系统(120)具有包括至少一个非二次幂区域的所述多个区域。
9.如权利要求1所述的设备(100/200),其中所述设备(100/200)是在单个集成电路芯片上形成的微处理器(100),所述微处理器(100)还包括:
存储器访问代理(110/210/220),所述存储器访问代理(110/210/220)用于提供所述存储器访问请求,所述存储器访问请求具有访问地址。
10.一种存储器访问方法,其包括:
接收存储器访问请求,所述存储器访问请求包括访问地址;
对所述访问地址进行解码,并且作为响应,提供对应区域映射信号,其中所述解码包括:使用用于接收所述访问地址并具有第一二次幂大小的第一初级解码器(720)和用于接收所述访问地址并具有第二二次幂大小的第一次级解码器(730)来选择性地将所述访问地址映射到具有非二次幂大小的第一区域(820),其中所述第二二次幂大小不同于所述第一二次幂大小;
响应于将所述访问地址映射到所述第一区域,提供第一区域映射信号;
存储所述存储器访问请求和所述区域映射信号;以及
基于多个标准选取这样存储的所述存储器访问请求,所述多个标准部分地基于所述区域映射信号来评估;以及
响应于所选取存储器访问请求,提供对应存储器访问。
11.如权利要求10所述的方法,其还包括:
响应于所述所选取存储器访问请求的所述对应区域映射信号,激活多个芯片选择信号中的所选择芯片选择信号。
12.如权利要求10所述的方法,其中所述解码包括:
如果第一访问地址落入由第一基地址和所述第一二次幂大小限定的第一子区域内,则对所述第一访问地址进行解码并提供初级区域选择信号;
如果所述第一访问地址落入由第二基地址和所述第二二次幂大小限定的第二子区域内,则对所述第一访问地址进行解码并提供次级区域选择信号;以及
响应于所述初级区域选择信号和所述次级区域选择信号中的至少一者的激活,激活对应区域映射信号。
13.如权利要求12所述的方法,其中所述对所述第一访问地址进行解码并提供所述初级区域选择信号以及所述对所述第一访问地址进行解码并提供所述次级区域选择信号中的每一者包括:
对所述第一访问地址进行解码以提供行地址、列地址、存储体地址和存储体群组。
14.如权利要求10所述的方法,其还包括:
使用具有第三二次幂大小的所述第一初级解码器(720)和具有所述第三二次幂大小的所述第一次级解码器(730)来选择性地将所述访问地址映射到具有二次幂大小的第一区域(920),并且作为响应,提供所述第一区域映射信号;以及
使用具有所述第三二次幂大小的第二初级解码器(720)和具有所述第三二次幂大小的第二次级解码器(730)来选择性地将所述访问地址映射到具有二次幂大小的第二区域(930),并且作为响应,提供所述第二区域映射信号,
其中所述选择性地将所述访问地址映射到所述第一区域(920)以及所述选择性地将所述访问地址映射到所述第二区域(930)中的每一者包括:使对应于所述访问地址的存储器空间(910)在所述第一初级解码器(720)、所述第二初级解码器(720)、所述第一次级解码器(730)和所述第二次级解码器(730)之间交错。
15.如权利要求10所述的方法,其中所述解码还包括:
响应于用于确定在散列函数中使用所述访问地址的对应多个位中的哪一些的多个可编程位,选择性地使用所述散列函数对所述访问地址进行散列。
CN201680087529.9A 2016-07-15 2016-09-23 具有灵活地址解码的存储器控制器 Active CN109478169B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/211,887 US10403333B2 (en) 2016-07-15 2016-07-15 Memory controller with flexible address decoding
US15/211,887 2016-07-15
PCT/US2016/053358 WO2018013158A1 (en) 2016-07-15 2016-09-23 Memory controller with flexible address decoding

Publications (2)

Publication Number Publication Date
CN109478169A CN109478169A (zh) 2019-03-15
CN109478169B true CN109478169B (zh) 2023-07-28

Family

ID=60940724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680087529.9A Active CN109478169B (zh) 2016-07-15 2016-09-23 具有灵活地址解码的存储器控制器

Country Status (6)

Country Link
US (1) US10403333B2 (zh)
EP (1) EP3485383A4 (zh)
JP (1) JP6761891B2 (zh)
KR (1) KR20190019200A (zh)
CN (1) CN109478169B (zh)
WO (1) WO2018013158A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604206B (zh) * 2016-11-23 2021-10-22 华为技术有限公司 一种内存分配方法和设备
US11082523B2 (en) * 2017-02-09 2021-08-03 International Business Machines Corporation System, method and computer program product for a distributed virtual address space
IT201800002895A1 (it) * 2018-02-21 2019-08-21 Stmicroelectronics Application Gmbh Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
KR102583448B1 (ko) * 2018-04-10 2023-09-27 에스케이하이닉스 주식회사 온도 관리를 위해 주소를 제어하는 반도체 메모리 장치
US11194382B2 (en) * 2018-10-16 2021-12-07 Advanced Micro Devices, Inc. Speculative exit from power down mode of a dynamic random access memory rank
US10642734B1 (en) * 2018-12-03 2020-05-05 Advanced Micro Devices, Inc. Non-power of two memory configuration
KR20210034726A (ko) 2019-09-20 2021-03-31 삼성전자주식회사 메모리 모듈, 그것을 제어하는 메모리 제어기의 에러 정정 방법, 및 그것을포함하는 컴퓨팅 시스템
US11403217B2 (en) * 2019-10-30 2022-08-02 Qualcomm Incorporated Memory bank group interleaving
US11537319B2 (en) 2019-12-11 2022-12-27 Advanced Micro Devices, Inc. Content addressable memory with sub-field minimum and maximum clamping
US11561862B2 (en) 2020-05-29 2023-01-24 Advanced Micro Devices, Inc. Refresh management for DRAM
CN112286844B (zh) * 2020-10-30 2022-09-02 烽火通信科技股份有限公司 一种可适配业务地址映射的ddr4控制方法及装置
US11379388B1 (en) * 2021-03-31 2022-07-05 Advanced Micro Devices, Inc. Credit scheme for multi-queue memory controllers
US11693585B2 (en) 2021-04-26 2023-07-04 Apple Inc. Address hashing in a multiple memory controller system
US11972140B2 (en) 2021-04-26 2024-04-30 Apple Inc. Hashing with soft memory folding
CN113312277B (zh) * 2021-06-29 2024-06-25 合肥忆芯电子科技有限公司 存储体地址映射装置、方法及电子设备
JP7168731B1 (ja) 2021-07-19 2022-11-09 Necプラットフォームズ株式会社 メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム
US12007895B2 (en) 2021-08-23 2024-06-11 Apple Inc. Scalable system on a chip
US20230418772A1 (en) * 2022-06-24 2023-12-28 Advanced Micro Devices, Inc. Memory controller with pseudo-channel support
CN116049047B (zh) * 2022-12-30 2024-04-12 成都电科星拓科技有限公司 一种eeprom访问方法
CN116700631B (zh) * 2023-08-03 2023-09-29 摩尔线程智能科技(北京)有限责任公司 任务管理装置、方法、图形处理器及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142672A (en) * 1987-12-15 1992-08-25 Advanced Micro Devices, Inc. Data transfer controller incorporating direct memory access channels and address mapped input/output windows
US7620793B1 (en) * 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748939A (en) * 1993-06-30 1998-05-05 Intel Corporation Memory device with a central control bus and a control access register for translating an access request into an access cycle on the central control bus
JP3713312B2 (ja) * 1994-09-09 2005-11-09 株式会社ルネサステクノロジ データ処理装置
US5764963A (en) * 1995-07-07 1998-06-09 Rambus, Inc. Method and apparatus for performing maskable multiple color block writes
US7318114B1 (en) 2004-10-29 2008-01-08 Sun Microsystems, Inc. System and method for dynamic memory interleaving and de-interleaving
US7480781B2 (en) 2004-12-30 2009-01-20 Intel Corporation Apparatus and method to merge and align data from distributed memory controllers
US9171585B2 (en) * 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
JP5018074B2 (ja) * 2006-12-22 2012-09-05 富士通セミコンダクター株式会社 メモリ装置,メモリコントローラ及びメモリシステム
US7904626B2 (en) * 2007-06-07 2011-03-08 Renesas Electronics Corporation Arbiter and arbitration method of multiple data accesses
US8438320B2 (en) * 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US7793038B2 (en) * 2007-06-26 2010-09-07 International Business Machines Corporation System and method for programmable bank selection for banked memory subsystems
US7813212B2 (en) * 2008-01-17 2010-10-12 Mosaid Technologies Incorporated Nonvolatile memory having non-power of two memory capacity
US20120137090A1 (en) * 2010-11-29 2012-05-31 Sukalpa Biswas Programmable Interleave Select in Memory Controller
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9141541B2 (en) 2013-09-20 2015-09-22 Advanced Micro Devices, Inc. Nested channel address interleaving
US9213600B2 (en) 2013-11-11 2015-12-15 Seagate Technology Llc Dynamic per-decoder control of log likelihood ratio and decoding parameters
US9293188B2 (en) * 2014-02-03 2016-03-22 Advanced Micro Devices, Inc. Memory and memory controller for high reliability operation and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142672A (en) * 1987-12-15 1992-08-25 Advanced Micro Devices, Inc. Data transfer controller incorporating direct memory access channels and address mapped input/output windows
US7620793B1 (en) * 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages

Also Published As

Publication number Publication date
EP3485383A1 (en) 2019-05-22
WO2018013158A1 (en) 2018-01-18
EP3485383A4 (en) 2020-04-22
KR20190019200A (ko) 2019-02-26
US20180019006A1 (en) 2018-01-18
CN109478169A (zh) 2019-03-15
JP2019520660A (ja) 2019-07-18
JP6761891B2 (ja) 2020-09-30
US10403333B2 (en) 2019-09-03

Similar Documents

Publication Publication Date Title
CN109478169B (zh) 具有灵活地址解码的存储器控制器
CN109564556B (zh) 具有条纹和读取/写入事务管理的存储器控制器仲裁器
CN109154918B (zh) 自刷新状态机mop阵列
JP6730453B2 (ja) 細かい粒度のリフレッシュ
CN109690508B (zh) 带虚拟控制器模式的存储器控制器
CN107924375B (zh) 用于高速存储器接口的命令仲裁
CN109219806B (zh) 低功率存储器节流
CN115516563B (zh) 用于dram的刷新管理
CN116324744A (zh) 具有多个命令子队列和对应的仲裁器的存储器控制器
US20230325326A1 (en) Memory encryption
EP3270294B1 (en) Command arbitration for high-speed memory interfaces
JP2024512623A (ja) マルチキューメモリコントローラのためのクレジット方式
EP3270295A1 (en) Memory controller with virtual controller mode

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