CN115176313A - 内存启动和初始化系统和方法 - Google Patents
内存启动和初始化系统和方法 Download PDFInfo
- Publication number
- CN115176313A CN115176313A CN202180004852.6A CN202180004852A CN115176313A CN 115176313 A CN115176313 A CN 115176313A CN 202180004852 A CN202180004852 A CN 202180004852A CN 115176313 A CN115176313 A CN 115176313A
- Authority
- CN
- China
- Prior art keywords
- memory
- boot
- pattern
- address
- write
- 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1096—Write circuits, e.g. I/O line write drivers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/20—Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供一种可高效且有效地对内存进行启动和初始化的系统和方法。在一个实施例中,内存控制器包括正常数据路径和启动路径。正常数据路径在存储芯片电源启动后引导正常内存读/写操作期间的存储操作。启动路径包括启动模块,其中所述启动模块在存储芯片的电源启动期间引导内存启动操作,包括转发用于存储在存储芯片的写入样式模式寄存器中的启动样式以及存储芯片中选择的内存地址借以利用启动样式进行初始化。启动样式包括对应于合适的初始数据值的信息。启动样式还可以包括合适的相对应的纠错码(ECC)值。启动模块可以包括存储启动样式的启动样式寄存器。
Description
技术领域
本发明涉及内存中的信息处理和通信领域。
背景技术
许多电子技术,如数字计算机、计算器、音频设备、视频设备和电话系统,有助于在商业、科学、教育和娱乐的大多数领域提高数据和信息分析和通信的生产率,降低成本。电子元件可用于许多重要应用中(例如,医疗程序、车辆辅助操作、金融应用等),这些活动通常涉及存储大量信息。在许多应用中,对系统而言,正确、准确地处理信息非常重要。提供正确和准确的信息通常取决于从可靠的信息开始。在系统初始化时为易失性存储器建立可靠的信息配置可能是有问题和困难的。
一些系统包括信息验证方法,该信息验证方法用于验证存储在内存中的信息的准确性。一种传统方法包括纠错码(ECC)功能。ECC功能可以包括数据位的奇偶校验。在一些常规存储器中,预定数量的存储数据位(例如32、64等)具有相应的预定数量的存储ECC奇偶校验位(例如4、8等),用于检查数据位的准确性。用于第四代双倍速数据内存(DDR4)接口的单纠错/双纠错(SEC/DEC)汉明码通常是64位数据接口,如果包括ECC功能,则增加8位奇偶校验位接口,总共是72位接口。DDR5接口的SEC/DED通常为32位数据接口,如果包含ECC功能,则增加8位奇偶校验位接口,总共为40位接口。
易失性存储器通常需要电能来存储信息,并且在断电或关机时不会保留信息。动态随机存取存储器(DRAM)是一种易失性存储器,通常需要能量将信息存储在电容性存储器/存储单元中,而电容性存储器/存储单元需要重复刷新存储单元的电容状态。DRAM的基本工作原理是,存储单元的电容特性存储的电荷与存储单元存储的信息位的信息逻辑状态相对应。由于电容特性和特点(如充电、放电等),DRAM通常会进行若干操作(如预充电、刷新、环路放大等),这些操作需要能量来维持和更改存储单元的状态。因此,当DRAM的电源关闭时,存储在DRAM的电容特性中的电荷消散或放电,相应的信息就会丢失或消失。这给实现ECC存储的系统带来了特殊的问题,因为当电源关闭时,数据位的逻辑值和相应的ECC奇偶校验位全都消失了。
由于当电源处于关闭状态时,存储单元的先前逻辑状态消失或丢失,因此当在具有ECC验证功能的DRAM中打开电源时,数据位和相应ECC奇偶校验位的值通常无法确定。如果在内存启动或通电期间未建立数据位和ECC位之间的合适关系,则当内存控制器执行奇偶校验(例如,计算奇偶校验等)时,ECC位可能在信息初始状态中指示错误。启动过程通常用于使具有ECC的DRAM启动或初始化。传统的启动过程通常包括软件/操作系统(OS)方法或硬件方法。
传统的软件/操作系统方法通常利用直接内存访问(DMA)、中央处理器(CPU)写入或内存集(memset)功能来建立初始存储内存值。软件方法通常包括系统初始化、禁用ECC、软件启动和重新启用ECC。在DMA方法中,软件启动通常涉及将逻辑值从固定源地址写入DRAM范围内的地址。在CPU写入方法中,软件启动通常涉及从DRAM的起始地址到结束地址的32位存储操作循环。在memset方法中,启动操作通常涉及从目标指针写入DRAM的起始地址,长度是DRAM的大小。软件方法通常不能从时间零点开始,效率低(例如,低延迟、低功耗等),并且需要在启动操作期间禁用和启用ECC功能。
传统的硬件方法通常使用内存控制器将所有配置的内存设置为默认值,如逻辑零或预编程样式(pattern)。传统的硬件方法也试图将相应的ECC位设置为有效值。虽然传统的硬件方法可能比传统的软件/OS方法更有效,但是传统的硬件方法对相应的内存地址进行每次写入操作,将相应的数据样式放置在数据总线上,以便每次写入一个接一个的地址。传统的硬件方法通常也局限于以顺序方式处理内存秩(rank)级别。与传统的软件/操作系统方法类似,传统的硬件方法通常需要在启动操作期间禁用和启用ECC功能。
发明内容
本申请提供一种可高效且有效地对内存进行启动(prime)和初始化的系统和方法。在一个实施例中,内存控制器包括正常数据路径和启动路径。所述正常数据路径在存储芯片的电源启动后的正常内存读/写操作期间,引导存储操作。所述启动路径包括启动模块,其中所述启动模块在所述存储芯片的电源启动期间引导内存启动操作。所述启动模块可包括存储启动样式的启动样式寄存器。所述内存启动操作可包括从启动样式寄存器(例如,在内存控制器中等)转发启动样式以加载到存储芯片中的写入样式模式寄存器中。所述内存启动操作还可以包括选择所述存储芯片中的内存地址,以便使用所述启动样式进行初始化。所述启动样式包括与合适初始数据值相对应的信息。启动样式还可以包括适当的相应纠错码(ECC)值。
在一个实施例中,所述存储模块将启动样式从所述存储模块中的启动样式寄存器加载到存储芯片上的写入样式模式寄存器中。所述启动模块可以包括:存储内存地址范围的起始地址的启动范围起始地址寄存器和存储内存地址范围的结束地址的启动范围结束地址寄存器。内存地址可以基于从启动范围起始地址到启动范围结束地址的递增地址值来选择。启动模块可以包括启动级别(PL)寄存器,该寄存器存储指示并行启动写入操作级别的级别并行性定义值。在一个实施例中,可以在秩级别上执行并行启动写入操作。在一个示例性实现中,内存启动模块基于内存地址引导写入样式操作。写入样式操作可以将样式信息从所述存储芯片中的写入样式寄存器写入与所述内存地址对应的所述存储芯片中的存储单元。所述启动模块可包括启动写入(MRW)命令,该启动写入命令用于使用启动样式引导存储芯片的编程,其中所述启动样式从内存控制器启动模块中的启动样式寄存器加载到所述存储芯片中的写入样式模式寄存器。在一个示例性实现中,所述内存是动态随机存取存储器(DRAM),并且内存启动操作包括双数据速率版本5(DDR5)纠错码(ECC)兼容的写入样式操作。
在一个实施例中,内存启动方法包括:执行启动编程过程和引导启动控制操作。所述启动编程过程包括使用启动样式和内存范围地址信息对内存控制器中的启动模块进行编程。所述引导启动控制操作包括:转发启动样式以加载到存储芯片的写入样式模式寄存器中;生成要启动和初始化的存储芯片的内存地址;以及发出写入操作命令,该命令将启动样式从所述存储芯片中的写入样式模式寄存器写入所述存储芯片中的存储单元,其中所述存储单元对应于所述内存地址。所述存储芯片可以是多个存储芯片中的一个,并且至少部分并行地对所述多个存储芯片执行引导启动控制操作。在一个示例性实现中,根据所述启动样式和内存地址在存储芯片上执行启动操作。内存控制器可以是多个内存控制器中的一个,并且至少部分并行地对多个内存控制器执行启动编程操作。
在一个实施例中,内存启动方法还包括在所述存储芯片上执行启动操作。在所述存储芯片上执行启动操作可以包括将接收到的样式信息存储在所述存储芯片上的写入样式模式寄存器中。在所述存储芯片上执行启动操作可以包括响应于接收到的写入命令将样式信息从写入样式模式寄存器写入所述存储芯片的存储单元。所述存储单元可以对应于要初始化和启动的存储芯片中的内存地址。所述存储芯片可以是多个存储芯片中的一个,并且至少部分并行地对所述多个存储芯片执行启动操作。内存范围地址信息可以包括内存范围起始地址和内存范围结束地址。生成内存地址可以包括根据内存范围起始地址和内存范围结束地址建立内存地址。发出写入命令操作可以在数据总线上没有数据信息的情况下执行。
在一个实施例中,存储系统包括多个存储模块和内存控制器。所述多个存储模块被配置为存储信息,其中所述多个存储模块中的第一个包括第一组多个存储芯片,多个存储模块中的第二个包括第二组多个存储芯片。所述内存控制器包括启动模块,其中启动模块被配置为在所述多个存储模块的电源启动期间引导内存启动操作。所述内存启动操作可包括转发启动样式以存储在第一组存储芯片和第二组存储芯片上的各个写入样式模式寄存器中,选择各个第一组存储芯片和第二组存储芯片中的内存地址以使用启动样式进行初始化。所述内存启动操作还可以包括将信息的写入样式操作从相应的写入样式模式寄存器引导到相应的选定内存地址。
第一组存储芯片和第二组存储芯片可以被组织成多个秩,并且可以在第一组芯片和第二组芯片中在秩级别基本上并行地执行所述写入模式操作。通过使相应的多个秩使能信号有效,可以基本上使多个所述多个秩同时启用。在一个示例性实现中,命令/地址总线和数据总线可通信的将内存控制器耦合到多个存储模块,其中,发出写入样式操作命令时,在所述命令/地址总线上有生成的地址,在所述数据总线上的没有样式数据。
提供此内容是为了以简化形式介绍一些概念,这些概念将在下面的详细描述中进一步描述。本内容不旨在识别所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
包含在本说明书中并构成本说明书一部分的附图用于本发明原理的示例性说明,并不旨将本发明限制于其中所示的特定实现方式。除非另有特别说明,附图不按比例绘制。在附图的图中,本申请的实施例以示例而非限制的方式示出,并且在附图中相同的附图标记表示类似的元件。除非另有说明,否则附图不一定按比例绘制。
图1是根据一个实施例的计算机系统的框图。
图2是根据一个实施例的启动模块的框图。
图3是根据一个实施例的内存系统的框图。
图4是根据一个实施例的示例性内存启动方法的流程图。
图5是根据一个实施例的另一示例性内存启动方法的流程图。
图6是根据一个实施例的典型传统内存启动方法与内存控制器启动模块方法的比较。
图7是根据一个实施例的用于存储和处理信息的示例性计算系统的框图。
图8是根据一个实施例的示例性处理核配置的框图。
具体实施方式
现在将详细参考本申请的实施例,其示例在附图中示出。虽然将结合这些实施例来描述本申请,但是应当理解,它们不旨在将本申请限制于这些实施例。相反,本发明旨在涵盖可包括在由所附权利要求限定的本发明范围内的替代、修改和等同物。此外,在本申请的以下详细描述中,阐述了许多具体细节以提供对本申请的透彻理解。然而,应当理解,本申请可以在没有这些具体细节的情况下得以实施。另一方面,在此没有详细描述众所周知的方法、过程、组件和电路,以免不必要地混淆本申请的各方面。
下面的本申请的一些实施例以例程、模块、逻辑块和对一个或多个电子设备内的数据进行操作的其他符号表示的形式来呈现。这些描述和表示是本领域技术人员用来最有效地将他们工作的实质传达给其他本领域技术人员的手段。例程、逻辑块和/或类似物在本文中并且通常被认为是导致期望结果的过程或指令的自洽序列。这些过程包括物理量的物理操作。通常,尽管并非一定,这些物理操作采用能够在电子设备中存储、传输、比较和以其他方式操作的电或磁信号的形式。为方便起见,并参考常见用法,参考本申请的实施例,这些信号被称为数据、位、值、元素、符号、字符、术语、数字、字符串等。
然而,应当记住,这些术语将被解释为参考物理操作和量,并且仅仅是为了方便的标签,并且将根据本领域中常用的术语进一步解释。除非从以下讨论中清楚地另有说明,否则应理解,通过对本申请的讨论,使用诸如“接收”等术语的讨论指的是诸如电子设备的动作和过程,例如一种处理和转换数据的电子计算设备。数据在电子设备的逻辑电路、寄存器、内存和/或类似物内被表示为物理(例如,电子)量,并且被转换成类似地被表示为电子设备内的物理量的其他数据。
在本申请中,使用反意连接词意在包括连词。使用定冠词或不定冠词不旨在表示个数。特别地,对“该(the)”对象或“一(a)”对象的引用也旨在表示可能的多个这样的对象中的一个。术语“包含”、“包含”、“包括”、“包括”等的使用指定了所述元素的存在,但并不排除存在或包括一个或多个其他元素和/或它们的组。还应当理解的是,尽管这里可以使用术语第一、第二等来描述各种元素,但是这样的元素不应受这些术语的限制。这些术语在本文中用于将一个元素与另一个元素区分开来。例如,在不脱离实施例的范围的情况下,第一元素可以被称为第二元素,并且类似地第二元素可以被称为第一元素。还应当理解,当一个元素被称为“耦合”到另一个元素时,它可以直接或间接地连接到另一个元素,或者可以存在中间元素。相反,当一个元素被称为“直接连接”到另一个元素时,则不存在中间元素。还应理解,本文使用的措辞和术语是为了描述的目的,不应被视为限制。
所述系统和方法有利于高效和有效地电源启动和内存存储资源初始化。在一个实施例中,内存初始化启动系统和方法比典型的传统系统和方法更快。在一个示例性实施方式中,内存初始化启动系统和方法能够并行加载和存储启动数据(例如,在多个存储芯片中、用于多个秩、跨多个内存模块等)。加载和存储操作可以响应单独的命令而独立执行。作为第一操作的一部分(例如,响应第一命令、触发器等),可以将启动数据加载到多个存储芯片上的寄存器中。启动数据可以从存储芯片上的寄存器写入并存储在存储单元中。可以响应于命令/触发而执行将启动数据从寄存器到存储器单元的写入和存储,而无需同时启动数据总线上的数据(例如,不同于传统方法等)。避免在数据总线上重复切换数据使初始化启动系统和方法能够比传统系统消耗更少的功率。在一个实施例中,传统系统将禁用和启用ECC操作作为启动存储器的一部分。
图1是根据一个实施例的计算机系统100的示例性框图。计算机系统100包括中央处理单元110、内存管理单元120、内存控制器130、存储模块140和存储模块150。中央处理单元110通信地耦合到内存管理单元120,内存管理单元120通信地耦合到内存控制器130。内存控制器130通信地耦合到存储模块140和存储模块150。存储模块140和存储模块150存储信息。中央处理单元110处理存储在存储模块140和存储模块150中的信息。存储管理单元120管理存储模块140和存储模块150中的信息存储。内存控制器130引导对存储模块140和存储模块150的访问。存储模块140和存储模块150可以是双列直插式内存模块(DIMM)。
在一个实施例中,内存控制器130包括用于引导对存储模块140和150的正常数据访问的正常数据路径。内存控制器130还包括引导存储模块140和150中的电源启动和初始化启动操作的启动操作路径131。在一个实施例中,启动操作路径132包括启动模块133。启动模块133引导启动样式信息加载到存储模块140和150上的存储芯片中的写入样式模式寄存器中。启动模块133还引导启动操作,包括生成地址和发出写入样式命令,指示存储芯片在数据总线上没有数据的情况下将启动样式从写入样式模式寄存器写入内存地址。
可以理解,本申请的初始化启动系统和方法与各种标准兼容。在一个实施例中,初始化启动系统和方法与双倍数据速率实现兼容。在一个示例性实现中,初始化启动系统和方法与DDR5实现兼容。
图2是根据一个实施例的示例性启动模块200的框图。在一个实施例中,启动模块200类似于启动模块132。在一个示例性实施方式中,启动模块200作为可编程寄存器接口运行。启动模块200包括启动寄存器210和启动引擎220。启动寄存器210包括启动样式寄存器211、开始启动地址寄存器212、结束启动地址寄存器213和优先级寄存器214。启动引擎220包括样式寄存器设置(MRS)数据生成功能221、启动地址生成功能222和启动级别生成功能223。在一个实施例中,启动级别生成功能223包括MRS数据生成功能(例如,在秩级别等)。
启动模块200的组件协同操作以引导存储芯片的启动和初始化。存储芯片可以包含在存储模块中。启动样式寄存器211存储启动样式信息。开始启动地址寄存器212存储要启动和初始化的启动范围的起始地址。结束启动地址寄存器213存储要启动和初始化的启动范围的结束地址。优先级寄存器214存储基本并行或同时启动和初始化的存储器组件(例如,bank、模块、秩等)的级别的指示。MRS数据生成组件221基于存储在启动样式寄存器211中的启动样式信息生成用于加载到存储芯片的写入样式模式寄存器中的样式寄存器设置(MRS)或存储器寄存器写入(MRW)数据。启动地址生成组件222基于开始启动地址寄存器212和结束启动地址寄存器213中的信息生成地址。在一个实施例中,启动级别生成功能223生成并行级别的命令信息。在一个示例性实施方式中,启动级别生成功能223为基本上并行/同时启用的级别(例如,模块、秩等)生成芯片启用指示/信号。
在一个实施例中,通道可以包括多个存储模块。多个存储模块可以共享地址总线和数据总线。在一个示例性实现中,多个存储模块不能被启用并将数据同时传送到不同的或第二地址(例如,当数据总线上有不同数据时,共享地址总线上不能具有不同地址,等)。然而,在一个实施例中,预载启动样式数据到各个存储芯片上的各个写入样式模式寄存器中,并在地址和命令总线上发出具有相同地址的写入样式操作命令和多于一个通道/秩的使能信号(例如片选ID等),并且由于数据总线上没有数据,多个存储芯片可以并行启动。
图3是根据一个实施例的示例性存储系统300的框图。存储系统300包括内存控制器310、存储模块320和存储模块330。内存控制器310包括正常数据路径311和启动路径,所述启动路径包括启动模块312。存储模块320包括存储芯片321和328,存储芯片321和328分别包括写入样式模式寄存器322和写入样式模式寄存器329。存储模块330包括存储芯片331和338,它们分别包括写入样式模式寄存器332和写入样式模式寄存器339。存储器样式模式寄存器322、329、332和339存储从启动模块312接收的启动样式信息。响应于从启动模块312接收到样式写入命令和地址,存储芯片321、328、331和338将来自各个存储器样式模式寄存器322、329、332和339的启动样式信息分别写入存储单元。
在一个实施例中,启动模块312发出MRS或MRW命令以对存储芯片进行编程,其中对存储芯片进行编程包括将启动样式数据从启动模块213中的寄存器加载到各个的写入样式模式寄存器(例如,322、329、332、339等)。在一个示例性实施方式中,启动样式数据基本上同时(例如,响应于单个MRS命令等)经由数据总线加载到多个DRAM芯片。基本上同时将启动数据加载到多个存储芯片的各个写入样式模式寄存器中可以避免如传统方法中经常需要的那样在单独用于DRAM芯片的数据总线上的重复切换。启动模块312产生要启动的DRAM地址。在一个示例性实施方式中,要被启动的DRAM地址包括对应于从启动地址开始到启动地址结束的内存地址的递增的DRAM地址序列。启动模块312可以基本上同时并行地将芯片选择或芯片使能信号直接发给各个DRAM芯片(例如,321、331、328、338等)。启动模块312可以发出写入样式操作命令,以引导将启动样式数据从各个写入样式模式寄存器写入和存储到与要启动的DRAM地址对应的各个存储芯片的存储单元中。要启动的DRAM地址的指示和写入样式操作命令可以通过地址/命令总线传送到各个DRAM芯片(例如,321、331、328、338等),而无需在数据总线同时传送/切换样式数据。
可以理解,可以用不同的启动样式对不同的DRAM芯片进行编程。在一个实施例中,样式数据通过每DRAM可寻址(PDA)模式一个接一个地加载到DRAM中。在一个示例性实现中,基于独立DRAM的寻址模式使得具有不同数据样式的不同启动信息能够加载到不同DRAM中。
在一个实施例中,由于启动数据是从存储芯片上的写入样式模式寄存器写入的,因此该信息不涉及内存控制器中的ECC检查,并且作为启动过程的一部分,ECC不会被禁用和启用。在一个示例性实施方式中,ECC可以由于除启动过程的一部分之外的原因而被禁用和启用。
图4是根据一个实施例的示例性内存启动方法400的流程图。在一个实施例中,内存启动方法400与DDR的实现和要求兼容。
在框410中,执行启动编程过程。启动编程过程包括使用启动样式和内存范围地址信息对内存控制器中的启动模块进行编程。为每个区域自动生成启动样式和内存范围地址信息。在一个示例性实现中,内存大小由硬件或软件内核自动确定。在一个示例性实现中,一旦确定了内存大小,就建立了启动起始地址和结束地址。在一个实施例中,使用隔离内存区(IMR)命令。
在框420中,执行启动控制操作。引导启动控制操作可以包括转发启动样式数据以加载到存储芯片中的写入样式模式寄存器中。启动样式数据可以从内存控制器转发到存储芯片。在一个实施例中,样式或存储器寄存器写入(MRW)命令用于引导将启动样式信息加载和编程到存储芯片中的写入样式模式寄存器。启动控制操作可以包括生成要初始化的存储芯片的内存地址,并用启动样式数据启动。启动控制操作可以包括通过使各个的芯片启动信号有效来同时使多个存储芯片启动。可以基于基本上并行地启动和初始化的内存组件(例如,bank、模块、秩等)的级别来启用多个存储芯片。在一个实施例中,启动控制操作可包括发出写入操作命令,该命令将引导启动样式从存储芯片中的写入样式模式寄存器写入存储芯片中对应于内存地址的存储单元。
存储芯片可以是多个存储芯片中的一个,并且至少部分并行地对多个存储芯片执行启动编程操作。在一个示例性实施方式中,根据启动样式和内存地址在存储芯片上执行启动操作。启动操作的执行包括发出引导写操作的写命令以及生成的地址,同时在数据总线上没有数据信息,所述启动操作的执行可以至少部分并行地在多个存储器芯片上执行。内存范围地址信息可以包括内存范围起始地址和内存范围结束地址,生成内存地址包括根据内存范围起始地址和内存范围结束地址建立内存地址。
在一个实施例中,对于多个内存地址,启动样式数据可以相同。在一个实施例中,对于多个内存地址,启动样式数据可以不同。各个内存地址的启动样式数据的相似性和差异性可以基于不同级别存储器层次结构组织。在一个实施例中,多个存储模块的启动样式数据相同。在一个实施例中,对于多个存储模块和各个部件中的不同存储模块和部件,启动样式数据可以变化。
图5是根据一个实施例的示例性启动过程方法500的流程图。
在框510中,开始系统初始化。在一个实施例中,系统通电。
在框520中,响应于系统初始化,启动DRAM初始化过程。
在框530中,设置启动模块寄存器。在一个实施例中,在启动样式寄存器中设置启动样式。
在框540中,启动开始。在一个实施例中,启动样式从内存控制器启动模块中的启动样式寄存器加载到存储芯片中的写入样式模式寄存器。在一个示例性实现中,写入样式模式寄存器可以被包括在存储芯片外围电路的输入/输出(I/O)部分中。
在框550中,伴随写入样式命令生成地址。在一个实施例中,所述地址和写入样式命令被发送到存储芯片,同时在数据总线上的没有数据。在一个示例性实施方式中,地址和写入样式命令基本上同时并行地发到多个存储芯片。
在框560中,启动操作完成。在一个实施例中,系统被通知启动操作完成并且内存被初始化。
图6是根据一个实施例的典型传统内存启动方法与内存控制器启动模块方法的比较。在典型的传统启动方法中(例如,如图6的上部所示),ECC被禁用,秩0启动,然后秩1启动,依此类推。对于各秩,在数据总线上触发启动数据的同时发出写命令。最终,秩7被启动,然后再次启用ECC。与传统的启动方法相比,示例性的新初始化启动方法(例如,图6的下部所示)可以包括各种效率改善。在新的初始化启动系统和方法中通过不禁用和启用ECC功能来节省时间和能量。在一个实施例中,并行编程多个秩。
应当理解,启动系统和方法可以与EEC兼容的存储器配置和无ECC(non-ECC)兼容的存储器配置一起使用。在一个示例性实施方式中,启动系统和方法与ECC DRAM DIMM一起使用。在一个示例性实现中,启动系统和方法与non-ECC DRAM DIMM一起使用。
图7是根据一个实施例的用于存储和处理信息的示例性计算系统900的框图。在一个实施例中,存储芯片包括在内存904中(例如,类似于存储系统100、200、400、800等)。计算系统900可以包括处理器902和存储器904。在一种实现方式中,计算系统900可以是服务器计算机、数据中心、云计算系统、流服务系统、互联网服务提供商系统、蜂窝服务提供商系统等。处理器902可以是中央处理单元(CPU)、图形处理单元(GPU)、神经处理单元(NPU)、向量处理器、内存处理单元等或其组合。在一种实施方式中,处理器902可以包括通信接口,例如外围组件接口(PCIe4)921和内部集成电路(I2C)接口933,片上电路测试器,例如联合测试动作组(JTAG)引擎923、直接存储器访问引擎924、命令处理器(CP)925和核931-934。核931-934可以在有向环总线配置中耦合。
继续参考图7,核931-934可以执行计算设备可执行指令集以执行包括但不限于:执行窄通道转换内存控制方法的功能。这些功能可以在单独的核931-934上执行,可以分布在多个核931-934上,可以与其他功能一起在核上执行,等等。在一个实施例中,在内存904上执行初始化启动操作。
图8是根据一个实施例的示例性处理核配置1000的框图。在一个实施例中,处理核配置1000的组件参与内存启动操作。处理核1000可以包括张量引擎(TE)1010、池化引擎(PE)1015、内存复制引擎(ME)1020、定序器(SEQ)1025、指令缓冲器(IB)1030、本地内存(LM)1035和常量缓冲器(CB)1040。本地内存1035可以预先安装有模型权重,并且可以存储以在使用中即时激活。常量缓冲器1040可以存储用于批量归一化、量化等的常量。张量引擎1010可用于加速融合卷积和/或矩阵乘法。池化引擎1015可以支持池化、插值、感兴趣区域等操作。内存复制引擎1020可以被配置用于核间和/或核内数据复制、矩阵转置等。张量引擎1010、池化引擎1015和内存复制引擎1020可以并行运行。定序器10210可以根据来自指令缓冲器1030的指令来编排张量引擎1010、池化引擎1015、内存复制引擎1020、本地内存10310和常量缓冲器1040的操作。处理核1000可以提供在融合粗粒度指令的操作控制下的视频编码高效计算。示例性处理单元核心1000的详细描述对于理解本申请的方面并非是必需的,因此这里将不再进一步描述。
因此,所述初始化启动系统和方法有利于电源启动和内存存储资源初始化高效且有效的进行。在一个实施例中,内存初始化启动系统和方法克服了与常规/传统方法相关的许多问题。例如,初始化启动系统和方法可以在接近时间零快速开始,这与传统的软件/硬件方法不同,传统的软件/硬件方法在延迟和功耗方面存在许多效率问题(例如,通常需要禁用/启用ECC功能,不能从时间零开始,在内存控制器(MC)级别或内存模块级别不能并行,对软件/操作系统(SW/OS)解决方案的要求等)。与典型的传统方法相比,所述初始化启动系统和方法能够实现更快的速度和更低的功耗。
前面已经出于说明和描述的目的呈现了本申请的特定实施例,它们并不旨在穷举或将本申请限制为所公开的精确形式,并且显然根据上述教导可以进行许多修改和变化。本申请所选择和描述的实施例是为了较好地解释本申请的原理及其实际应用,从而使本领域的其他技术人员能够较好地利用本申请和具有适合预期特定用途的各种修改的各种实施例。本发明的范围旨在由所附的权利要求及其等同物来定义。
Claims (20)
1.一种内存控制器,包括:
正常数据路径,用于在存储芯片电源启动后的正常内存读/写操作期间引导存储操作;和
启动路径,所述启动路径包括启动模块,其中所述启动模块用于在所述存储芯片的电源启动期间引导内存启动操作,包括转发启动样式以加载到一存储芯片的写入样式模式寄存器中和在所述存储芯片中选择的内存地址,以便使用所述启动样式进行初始化。
2.如权利要求1所述的内存控制器,其中所述启动样式包括适用于纠错码(ECC)兼容存储器的合适初始数据值和ECC值对应的信息。
3.如权利要求1所述的内存控制器,其中所述启动样式包括适用于非ECC兼容存储器的合适初始数据值的信息。
4.根据权利要求1所述的内存控制器,其中所述启动模块包括存储所述启动样式的启动样式寄存器,并且其中所述存储模块引导将所述启动样式从所述存储模块中的启动样式寄存器加载到存储芯片上的写入样式模式寄存器中。
5.如权利要求1所述的内存控制器,其中所述启动模块包括:
启动范围起始地址寄存器,其存储一内存地址范围的起始地址,以及
启动范围结束地址寄存器,其存储该内存地址范围的结束地址,
其中内存地址的选择是基于从启动范围起始地址到启动范围结束地址之间递增地址值。
6.如权利要求1所述的内存控制器,其特征在于,所述启动模块包括秩启动级别(PL)寄存器,其存储表示基于秩的并行启动写入操作等级的秩级别并行定义值。
7.如权利要求1所述的内存控制器,其中所述启动模块基于所述内存地址来引导写入模式操作,其中所述写入样式操作将存储在所述存储芯片的写入样式模式寄存器中的样式信息写入所述存储芯片中与所述选择的内存地址对应的存储单元。
8.根据权利要求1所述的内存控制器,其中所述启动模块包括启动引擎,所述启动引擎发出存储器寄存器写入(MRW)命令以利用所述启动样式引导对所述存储芯片进行编程,其中所述启动样式从所述内存控制器的启动模块的启动样式寄存器加载到存储芯片中的写入样式模式寄存器。
9.如权利要求1所述的内存控制器,所述内存是动态随机存取存储器(DRAM),并且所述内存启动操作包括双倍数据速率版本5(DDR5)纠错码(ECC)兼容的写入样式操作。
10.一种内存启动方法,包括:
执行启动编程过程,包括使用启动样式和内存范围地址信息对内存控制器中的启动模块进行编程;和
引导启动控制操作,包括:
转发所述启动样式以加载到存储芯片的写入样式模式寄存器中;和
在待初始化和启动的所述存储芯片中生成内存地址;和
发出写入操作命令,将启动样式从所述存储芯片的写入样式模式寄存器写入所述存储芯片中与存储地址对应的存储单元。
11.如权利要求10所述的内存启动方法,其中,所述存储芯片是多个存储芯片中的一个,并且并行地在至少部分的所述多个存储芯片上执行所述引导启动控制操作。
12.如权利要求10所述的内存启动方法,还包括根据所述启动样式和内存地址在所述存储芯片上执行启动操作。
13.如权利要求12所述的内存启动方法,其中,所述存储芯片是多个存储芯片中的一个,并且并行地对至少部分都所述多个存储芯片执行启动操作。
14.如权利要求10所述的内存启动方法,其中,所述内存范围地址信息包括内存范围起始地址和内存范围结束地址,生成所述内存地址包括根据所述内存范围起始地址和内存范围结束地址建立内存地址。
15.如权利要求10所述的内存启动方法,其中发出写入命令操作是在数据总线上没有数据信息的情况下执行。
16.如权利要求10所述的内存启动方法,其中所述内存控制器是多个内存控制器中的一个,并且在述多个内存控制器的至少部分上并行地执行所述启动编程操作。
17.一种存储系统,包括:
多个存储模块,所述多个存储模块被配置为存储信息,其中所述多个存储模块中的第一个包括第一组多个存储芯片,并且所述多个存储模块中的第二个包括第二组多个存储芯片;
内存控制器,所述内存控制器包括启动模块,其中所述启动模块被配置为在所述多个存储模块的电源启动期间引导内存启动操作,包括:
转发启动模式以存储在所述第一组存储芯片和第二组存储芯片的各个写入模式的模式寄存器中,选择各个第一组存储芯片和第二组存储芯片中的内存地址以使用所述启动模式进行初始化,和
将信息的写入模式操作从各个写入模式的模式寄存器引导到相应的选定内存地址。
18.根据权利要求17所述的存储系统,其中所述第一组存储芯片和所述第二组存储芯片被组织成多个秩,并且所述写入样式操作在所述第一组芯片和所述第二组芯片中在秩级别上并行地执行。
19.如权利要求18所述的存储系统,其中通过使对应的多个秩启用信号有效而使所述多个秩中的多个同时被启用。
20.如权利要求17所述的存储系统,其中命令/地址总线和数据总线将所述内存控制器通信耦合到所述多个存储模块,其中写入样式操作命令伴随生成的地址被发送到所述命令/地址总线上,且样式数据不被发送到所述数据总线上。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/072773 WO2022155798A1 (en) | 2021-01-19 | 2021-01-19 | Memory priming and initialization systems and methods |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115176313A true CN115176313A (zh) | 2022-10-11 |
Family
ID=82548472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180004852.6A Pending CN115176313A (zh) | 2021-01-19 | 2021-01-19 | 内存启动和初始化系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230245711A1 (zh) |
CN (1) | CN115176313A (zh) |
WO (1) | WO2022155798A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578352B (zh) * | 2023-07-11 | 2023-09-22 | 沐曦集成电路(上海)有限公司 | 芯片初始化系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8478947B2 (en) * | 2005-07-05 | 2013-07-02 | Arm Limited | Memory controller |
JP2008065434A (ja) * | 2006-09-05 | 2008-03-21 | Matsushita Electric Ind Co Ltd | プログラム起動制御装置 |
US8301980B2 (en) * | 2009-09-28 | 2012-10-30 | Nvidia Corporation | Error detection and correction for external DRAM |
US20130318285A1 (en) * | 2012-05-23 | 2013-11-28 | Violin Memory Inc | Flash memory controller |
CN107643955B (zh) * | 2016-07-27 | 2020-11-06 | 中电海康集团有限公司 | 一种基于纠错回写技术提升非易失存储器性能的方法及非易失存储器结构 |
US10394648B2 (en) * | 2016-11-07 | 2019-08-27 | Samsung Electronics Co., Ltd. | Method to deliver in-DRAM ECC information through DDR bus |
-
2021
- 2021-01-19 US US17/788,696 patent/US20230245711A1/en active Pending
- 2021-01-19 WO PCT/CN2021/072773 patent/WO2022155798A1/en active Application Filing
- 2021-01-19 CN CN202180004852.6A patent/CN115176313A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230245711A1 (en) | 2023-08-03 |
WO2022155798A1 (en) | 2022-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9037812B2 (en) | Method, apparatus and system for memory validation | |
KR101159400B1 (ko) | 하이브리드 메모리 장치를 위한 방법 및 시스템 | |
US20180246643A1 (en) | System and Method to Perform Runtime Saves on Dual Data Rate NVDIMMs | |
US10769066B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
KR20110007571A (ko) | 듀얼 인라인 메모리 모듈의 상변화 메모리 | |
US10289339B2 (en) | System and method for storing modified data to an NVDIMM during a save operation | |
US10990291B2 (en) | Software assist memory module hardware architecture | |
US20230195338A1 (en) | Memory system for updating firmware when spo occurs and operating method thereof | |
US20140181495A1 (en) | System on chip including boot shell debugging hardware and driving method thereof | |
KR20190102438A (ko) | 전자 장치 및 그것의 동작 방법 | |
CN114649048A (zh) | 用于存储器中矩阵向量运算的并发计算和ecc | |
US20170371785A1 (en) | Techniques for Write Commands to a Storage Device | |
US11487339B2 (en) | Operating mode register | |
US20040225874A1 (en) | Method for reduced BIOS boot time | |
US10528283B2 (en) | System and method to provide persistent storage class memory using NVDIMM-N with an NVDIMM-P footprint | |
US10732859B2 (en) | Systems and methods for granular non-volatile memory health visibility to a host | |
US10725845B2 (en) | Methods of operating memory system | |
CN115176313A (zh) | 内存启动和初始化系统和方法 | |
US20220092410A1 (en) | Architected library interface for kernel fusion | |
US20150199201A1 (en) | Memory system operating method providing hardware initialization | |
US8745363B2 (en) | Bootable volatile memory device, memory module and processing system comprising bootable volatile memory device, and method of booting processing system using bootable volatile memory device | |
US11243757B2 (en) | Systems and methods for efficient firmware update of memory devices in BIOS/UEFI environment | |
US10678467B2 (en) | Systems and methods for selective save operations in a persistent memory | |
KR20210042192A (ko) | 반도체 메모리 장치, 전자 장치, 및 그것의 설정 방법 | |
US20240184454A1 (en) | Storage device and operating method of the same |
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 |