CN116303155A - 异构存储器目标的交错 - Google Patents
异构存储器目标的交错 Download PDFInfo
- Publication number
- CN116303155A CN116303155A CN202211415194.2A CN202211415194A CN116303155A CN 116303155 A CN116303155 A CN 116303155A CN 202211415194 A CN202211415194 A CN 202211415194A CN 116303155 A CN116303155 A CN 116303155A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory device
- interface
- processor
- controller
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 403
- 230000008878 coupling Effects 0.000 claims abstract description 10
- 238000010168 coupling process Methods 0.000 claims abstract description 10
- 238000005859 coupling reaction Methods 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 5
- 239000003795 chemical substances by application Substances 0.000 description 19
- 238000013461 design Methods 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000001427 coherent effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- 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
-
- 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/1684—Details of memory controller using multiple buses
-
- 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/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
一种装置,所述装置包括:第一类型的第一存储器接口,用于耦合到至少一个第一存储器设备;第二类型的第二存储器接口,用于耦合到至少一个第二存储器设备;电路,用于在所述至少一个第一存储器设备和所述至少一个第二存储器设备之间交错针对连续存储器地址的存储器请求。
Description
技术领域
本公开总体上涉及计算机开发领域,更具体地,涉及异构存储器目标的交错(interleave)。
背景技术
计算系统可以包括多个存储器目标。诸如操作系统或应用之类的实体可以生成将要通过各种存储器目标执行的存储器请求。
附图说明
图1示出了根据某些实施例的异构存储器目标的交错。
图2示出了根据某些实施例的具有交错存储器的计算机系统的组件。
图3示出了根据某些实施例的用于在异构交错存储器中路由存储器请求的流程。
图4示出了根据某些实施例的计算机系统的组件。
不同附图中的相同参考标号和名称表示相同的元件。
具体实施例
尽管附图描绘了特定的计算机系统,但是各种实施例的构思适用于任何合适的计算机系统。可以使用本公开的教导的系统的示例包括台式计算机系统、服务器计算机系统、存储系统、手持设备、平板电脑、其他薄笔记本、片上系统(SOC,system on a chip)设备和嵌入式应用。手持设备的一些示例包括蜂窝电话、数码相机、媒体播放器、个人数字助理(PDA,personal digital assistant)和手持PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP,digital signal processor)、SOC、网络计算机(NetPC,network computer)、机顶盒、网络集线器、广域网(WAN,wide area network)交换机或其他可以执行以下描述的功能和操作的任何系统。本公开的各种实施例可以在任何合适的计算环境中使用,合适的计算环境例如是个人计算设备、服务器、大型机、云计算服务提供商基础设施、数据中心、通信服务提供商基础设施(例如,演进分组核心的一个或多个部分)或包括一个或多个计算设备的其他环境。
增加(例如,服务器片上系统(SoC)中的)每插槽核心计数的趋势为相应增加更高的存储器带宽以支持更高的核心计数提供了动力。因此,当前的一些系统包括可供核心使用的多种存储器类型,例如具有多个通道的本机双倍数据速率5(DDR5,Double Data Rate5)存储器以及其他存储器,例如计算快速链路(CXL,Compute Express Link)类型3存储器(例如,其可以是易失性的、持久性的)、高带宽存储器(HBM,High Bandwidth Memory)或其他存储器类型。增加本机存储器通道的数量(例如,从集成存储器控制器到DDR存储器的通道)可能会遇到诸如平台技术可行性以及成本和功率挑战之类的限制,因此这些额外的存储器类型可能会以可行的方式提高存储器带宽。
在一些计算系统中,可以对存储器进行交错,以便将存储器访问均匀地分布在多个存储器目标上,以由于并行性而实现提高的性能。存储器访问可以分布在交错的存储器目标上,例如以循环方式来分布。用于向交错的存储器目标进行写入的地址可以是唯一的,以使得在多个存储器目标之间不存在存储地址的混淆。在一些系统中,当存在异构存储器目标类型(例如,DDR5、CXL、HBM等)时,不同的存储器目标可以各自交错(使得特定类型的存储器目标可以提供第一地址空间,并且另一类型的存储器目标可以提供第二地址空间)。因此,每个存储器目标类型的各自存储器范围可以通过基本输入/输出系统(BIOS,BasicInput/Output System)配置,并且单独暴露给操作系统(OS,operating system)、虚拟机管理器(VMM,virtual machine manager)或其他软件应用。因此,各个存储器类型可以被BIOS配置为不同的地址范围。
作为这样的系统的一个示例,可以使用分层存储器方法,其中,SoC包括(到第一存储器目标类型的)八个DDR5通道和(到第二存储器目标类型的)四个CXL端口。系统固件(例如,BIOS)可以配置两层存储器资源:第一地址范围交错在八个DDR5通道上,第二地址范围交错在四个CXL端口上。OS或VMM然后可以调度应用来使用第一地址范围或第二地址范围。由于可用存储器资源被分层/分离到不同的存储桶/范围中,因此使用第一存储器范围(例如,DDR5通道0-7)的应用无法利用由另一存储器范围(例如,CXL端口0-3)提供的另外的带宽机会。这样的分层存储器方法可能不适合需要大量存储器带宽的应用。此外,基于应用的特性和带宽需求来在不同的存储器范围上正确调度应用,可能会给OS/VMM带来额外的负担。
本公开的各种实施例提供了通过将异构存储器目标(例如,附接到集成存储器控制器的DDR5、通过CXL、HBM等附接的存储器)交错到OS、VMM和/或应用可用的单个连续软件可见地址范围中来实现带宽扩展的方法。带宽扩展通过允许应用利用由该地址范围内的不同存储器目标提供的全部存储器带宽来实现。在一个实施例中,针对内部存储器控制器通道(例如,DDR5目标)和CXL存储器缓冲器(例如,CXL目标)二者的异构地址范围通过系统BIOS配置并且暴露给软件。
由于可以在异构交错存储器的地址范围内统一调度应用,因此各种实施例还可以简化OS或VMM调度。在一些实施例中,OS或VMM可以调度带宽密集型应用来使用一个或多个异构交错存储器范围,并调度其他应用来使用不是异构交错存储器范围的一个或多个其他存储器范围。
图1示出了根据某些实施例的异构存储器目标102(例如,102A-102H)的交错。在该实施例中,第一类型的第一组存储器目标(耦合到接口104的各个通道)和第二类型的第二组存储器目标(耦合到接口106的各个端口)一起交错到单个地址空间中。通过请求实体(例如,执行软件实体的指令的核心)提供的存储器地址可以被确定为在对应于路由表112的存储器范围110内。路由表112可以基存储器地址108将引用存储器地址的请求路由到存储器目标102中的一个。
异构存储器目标可以是在一个或多个方面不同的存储器目标,例如性能特性(例如,带宽、延迟)、底层存储技术类型(例如,NAND闪存、诸如3D交叉点之类的持久存储器(PMEM,persistent memory)、动态随机存取存储器(DRAM,dynamic random accessmemory)等)或传输机制和/或到存储器目标的接口(例如,到通过插槽耦合到存储器的集成存储器控制器的存储器总线、到一个或多个CXL端口的CXL总线、到一个或多个PCIe端口的PCIe总线、到HBM存储器逻辑管芯的中介层等)。
在各种实施例中,存储器请求可以采取通过不同的子系统到异构存储器目标的不同路线。在所描绘的实施例中,对耦合到接口104的存储器目标的存储器请求可以通过第一路径来路由,而对耦合到接口106的存储器目标的存储器请求可以通过第二路径来路由(其中,耦合到接口104的存储器目标被视为与耦合到接口106的存储器目标异构)。
当异构存储器目标具有各异的特性时,系统存储器性能可能会受到影响。例如,对异构交错存储器的存储器访问的延迟可以是不同存储器类型(具有与各个存储器类型的设备的数量对应的权重)的延迟的加权平均值。在一些实施例中,用作存储器目标的各个存储器设备具有相同的容量。在各种实施例中,如果特定存储器设备大于异构交错中使用的其他存储器设备,则该存储器设备的仅一部分用于异构交错中,并且任何剩余的容量可以在单独的地址空间中使用或可以不被使用。在一个示例中,如果多个异构存储器设备具有各异的容量,则具有最小容量(或某个较小容量)的存储器设备的容量可以用作每个交错的存储器设备的容量。
交错存储器目标可以通过在多个存储器目标上均匀分布存储器地址来提高系统存储器的带宽。以这种方式,针对连续地址的存储器读取和写入可以依次使用存储器目标,由于减少了对存储器目标执行后续命令的等待,从而实现了更高的存储器吞吐量。当存在n个存储器目标时,交错的存储器被称为n路交错。
仅作为一个示例,在具有四个存储器目标的异构交错存储器(4路交错系统)中,逻辑地址0可以被路由到第一存储器目标,逻辑地址1可以被路由到第二存储器目标,逻辑地址2可以被路由到第三存储器目标,逻辑地址3可以被路由到第四存储器目标,逻辑地址4可以被路由到第一存储器目标,逻辑地址5可以被路由到第二存储器目标,以此类推。在该示例中,逻辑地址的两位可以用于将存储器请求路由到适当的存储器目标。每个逻辑地址可以指代存储器的具有被称为交错粒度的大小的部分。仅作为一个示例,交错粒度可以是256字节。
在一些实施例中,计算系统可以包括一个或多个异构交错存储器。异构交错存储器可以包括一个或多个第一类型的存储器目标(例如,耦合到内部存储器控制器的DDR5存储器设备)以及一个或多个第二类型的存储器目标(例如,耦合到一个或多个CXL桥的存储器设备)。一些异构交错存储器还可以包括一种或多种附加类型的一个或多个存储器目标。
当计算系统包括多个异构交错存储器时,每个异构交错存储器可以包括不同的地址空间并且可以与各自的路由表112相关联。对特定异构交错存储器的存储器请求可以通过相关联的路由表112来路由。在各种实施例中,计算系统可以包括一个或多个异构交错存储器以及一个或多个其他非异构交错存储器。
图2示出了根据某些实施例的具有异构交错存储器目标202和204的计算机系统200的组件。系统200包括第一类型的存储器目标202和第二类型的存储器目标204。第一类型的存储器目标包括多个DDR5存储器设备206(例如,206A-H),第二类型的存储器目标包括多个CXL存储器设备208(例如,208A-D)(例如,使用CXL协议通信的存储器设备)。第一类型的存储器目标202可通过第一接口203到达,该第一接口可以包括集成存储器控制器。第二类型的存储器目标204可通过第二接口205到达,该第二接口可以包括两个CXL主机桥210,该CXL主机桥包括CXL端口(示出为端口0和端口1)。
DDR5存储器设备206可以通过相应的通道耦合到包括各个存储器控制器MC0-MC7的集成存储器控制器。在各种实施例中,该存储器控制器可以与核心209集成在相同的管芯和/或封装上。在一个实施例中,每个DDR5存储器设备206是耦合到处理器的DDR5总线的双列直插式存储器模块(DIMM,dual in-line memory module)。在其他实施例中,存储器设备206可以是任何其他类型的存储器(例如,不同的DDR存储器或其他合适的存储器)。
CXL存储器设备208可以耦合到CXL主机桥210(例如,210A和210B)的CXL端口。CXL存储器设备可以是例如类型3CXL存储器设备,设备208的存储器(例如,DDR5、持久存储器或其他合适类型的存储器)可以与DDR5存储器设备206的存储器相干(coherent)。在一些实施例中,CXL主机桥210可以与核心集成在同一管芯或封装上。在各种实施例中,CXL存储器设备208可以是具有一个或多个存储器模块的存储器卡,并且CXL存储器设备208可以附接到处理器的CXL总线。
尽管描述了异构交错存储器的特定布置方式,但是在其他实施例中,可以使用任何合适的配置来将异构交错存储器耦合到一个或多个核心或其他处理器单元。
核心209可以包括处理器核心,该处理器核心执行软件指令(例如,OS、VMM、或通过OS或VMM管理的应用的软件指令)或其他逻辑实体,以生成存储器请求。核心209可以发出存储器请求,以对异构交错存储器进行读取或写入。存储器请求可以指定存储器的逻辑地址。在一些实施例中,请求还包括存储器请求应该被路由到的缓存归属代理212的标识符(ID,identifier)或者以其他方式与该标识符相关联。在一些实施例中,缓存归属代理ID可以通过对存储器地址的至少部分进行哈希来生成。在各种实施例中,请求还可以包括或以其他方式与集群ID相关联。例如,处理器可以包括多个集群,每个集群包括用于核心集群的一个或多个缓存归属代理,并且集群ID可以与缓存归属代理ID结合使用,以将存储器请求路由到适当的缓存归属代理212。
缓存归属代理212管理对一组存储器设备的存储器请求。缓存归属代理212可以负责处理涉及存储器设备的存储器请求,并且可以充当存储器地址空间的至少一部分的归属(例如,一个处理器在分布式地址空间映射中可以具有多个归属)。在一些情况下,缓存归属代理212可以监督相干存储器的一部分。如此,缓存归属代理212可以管理在不同核心访问分配于该缓存归属代理212的存储器空间时出现的冲突。缓存归属代理212可以根据给定事务的流程提供适当的数据和所有权响应。
缓存归属代理212可以包括一个或多个路由表214。路由表可以包括多个条目,其中,条目将逻辑存储器地址映射到用于逻辑存储器地址的路由信息。路由表214的条目和/或相关联的信息可以通过计算系统的固件(例如,BIOS 216)编程。在所描绘的实施例中,缓存归属代理212包括用于异构交错存储器的地址空间的路由表214。在一些示例中,缓存归属代理212还可以包括用于一个或多个其他地址空间的一个或多个附加路由表(例如,用于设备206或208的未用于异构交错存储器的存储器)。
如上所述,在一些实施例中,缓存归属代理212可以包括多个路由表214。例如,一个路由表可以用于第一异构交错存储器,另一个路由表可以用于第二异构交错存储器(例如,其使用与第一异构交错存储器不同的存储器设备)。在一些实施例中,多个不同的交错存储器可以具有不同的参数(例如,交错粒度)并且因此可以利用单独的路由表。作为另一示例,一个路由表可以用于异构交错存储器,另一路由表可以用于非异构交错存储器。例如,非异构交错存储器可以是DDR5存储器设备206(或连接到集成存储器控制器的其他存储器设备)中未用在异构交错存储器中的部分之间的交错存储器,而异构交错存储器可以在DDR5存储器设备206和CXL存储器设备208之间交错。
在各种实施例中,BIOS 216可以将计算系统200配置为使用异构交错存储器。例如,BIOS 216可以检查(例如,在计算系统200的启动期间)各种存储器设备的属性,以确定它们针对包含在异构交错存储器中的适合度。在一些实施例中,CXL存储器设备208在枚举期间经由相干设备属性表的表格来发布它们的设备性能特性,因此BIOS 216可以确定CXL存储器设备以异构方式(例如,与CPU直接附接的DDR存储器)交错的适合度。BIOS 216可以利用指定系统地址的哪些位应该用于索引到路由表214的信息来执行其他配置操作,例如选择多个存储器设备来用作目标、确定每个存储器设备用在异构交错存储器中的存储器量、选择异构交错存储器的粒度、配置(例如,通过写入寄存器)路由表214的条目或(例如,在存储器控制器(例如,MC0-MC7)或CXL主机桥210中的)其他解码元件、对缓存归属代理212的系统地址解码器218进行编程,或其他合适的配置操作。
在一些实施例中,不同目标类型(例如,DDR5、CXL等)的每个存储器通道上的存储器通道带宽被(例如,被BIOS 216)要求在特定容差内(例如,在彼此的+-25%内),以便于包含在异构交错存储器中(例如,为了避免任何系统脆弱)。类似地,不同目标类型的每个存储器通道上的延迟可能被要求在特定的容差范围内。因此,在一些实施例中,BIOS 216可以防止在带宽或延迟方面变化很大的存储器被一起用在异构交错存储器中。
使用的地址解码流程具有两个关键部分,CPU内部地址解码和存储器侧解码。CPU内部地址解码可以包括确定系统地址映射中存储器的归属位置(例如,适当的缓存归属代理212)(例如,经由对存储器请求的存储器地址执行的集群ID/CHA解码来确定)。然后,通过系统地址解码器218针对异构交错存储器的目标位置对存储器请求的传入逻辑存储器地址进行解码,以确定存储器地址映射到的存储器类型(例如,在所描绘的示例中,直接附接的DDR或CXL)。计算系统200的内部结构基于目标(和路由表214中的信息),将存储器请求路由到目标存储器类型的适当接口和端口/通道(例如,MC0、...、MC7、CXL主机桥210A或210B)。
接收方存储器组件(例如,集成存储器控制器的MC0-7或CXL存储器设备208)可以被(例如,被BIOS 216)编程有关于交错方式(例如,多少存储器目标正在被交错,其在本示例中为12)和交错粒度(例如,在交错期间在写入下一个存储器目标之前写入特定存储器目标的数据量)的信息。在存储器侧解码期间,存储器组件可以基于该信息,将在存储器请求中接收的逻辑地址转换为设备物理地址(DPA,device physical address)。在一些实施例中,存储器组件通过基于交错方式的数量和交错粒度来移除逻辑地址的特定位来执行该转换。在一些实施例中,存储器组件还可以将DPA解码为地址组件,例如物理存储器通道、区块(rank)、库(bank)等。
BIOS 216和/或其他系统固件组件可以负责CPU组件间的一致编程,该CPU组件例如是系统地址解码器218、用于将逻辑地址转换为物理地址的目标地址解码器(例如,位于存储器控制器MC0-MC7和CXL存储器设备208中)、CXL存储器设备主机管理的设备存储器(HDM,Host-managed Device Memory)解码器、或其他合适的组件。例如,BIOS 216可以利用用于正确地将逻辑地址转换为物理地址所需的任何信息(例如,方式的数量、交错粒度)来对这些组件进行编程。
图3示出了根据某些实施例的用于在异构交错存储器中路由存储器请求的流程。在302处,可以将计算系统配置用于异构交错。例如,计算系统的固件或其他逻辑可以检测存储器设备,并且通过基于将要用于交错的存储器设备对计算系统进行编程来建立交错方案。
在304处,(例如,通过处理器核心或其他合适的处理单元)生成存储器请求。在306处,基于存储器请求的存储器地址从多个异构存储器接口中选择存储器接口。在308处,将存储器请求路由到选择的存储器接口。在310处,耦合到选择的存储器接口的存储器组件将存储器地址转换为设备物理地址,并且将请求引导到适当的存储器设备,以用于在312处执行请求。
图4示出了根据某些实施例的计算机系统400的组件的框图。本公开的各个方面可以通过系统400实现。例如,核心209可以对应于核心414,接口104、106、203或205可以是CPU402的一部分(例如,接口104或203可以对应于CPU存储器控制器412的至少一部分),异构交错存储器可以用作系统存储器407,缓存归属代理212可以是CPU 402的一部分,或者异构交错存储器的任何存储器目标可以通过结合存储设备406或系统存储器设备407描述的任何类型的存储器来实现。
系统400包括耦合到外部输入/输出(I/O,input/output)控制器404、存储设备406和系统存储器设备407的中央处理单元(CPU,central processing unit)402。在操作期间,数据可以在存储设备406或系统存储器设备407与CPU 402之间传输。在各种实施例中,涉及存储设备406或系统存储器设备407的特定数据操作(例如,擦除、编程和读取操作)可以通过操作系统或通过由处理器408执行的其他软件应用来管理。
CPU 402包括处理器408,例如微处理器、嵌入式处理器、数字信号处理器(DSP,digital signal processor)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SOC)、或执行代码(即,软件指令)的其他设备。在所描绘的实施例中,处理器408包括两个处理元件(所描绘的实施例中的核心414A和414B),其可以包括不对称的处理元件或对称的处理元件。然而,处理器可以包括任意数量的可以是对称或不对称的处理元件。
在一个实施例中,处理元件是指支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核心和/或能够保持处理器的诸如执行状态或架构状态之类的状态的任何其他元件。换言之,在一个实施例中,处理元件是指能够独立地与诸如软件线程、操作系统、应用或其他代码之类的代码相关联的任何硬件。实体处理器(或处理器插槽)通常是指集成电路,其可能包括任意数量的其他处理元件,例如核心或硬件线程。
核心414可以指位于集成电路上的能够维持独立架构状态的逻辑,其中,每个独立维持的架构状态与至少一些专用执行资源相关联。硬件线程可以指位于集成电路上的能够维持独立架构状态的任何逻辑,其中,独立维持的架构状态共享对执行资源的访问。如可以看出的,当某些资源被共享而其他资源专用于架构状态时,硬件线程和核心的命名法之间的界线重叠。然而,操作系统经常将核心和硬件线程视为单独的逻辑处理器,其中,操作系统能够单独调度每个逻辑处理器上的操作。
在各种实施例中,处理元件还可以包括一个或多个算术逻辑单元(ALU,arithmetic logic unit)、浮点单元(FPU,floating point unit)、缓存、指令管线、中断处理硬件、寄存器或其他硬件,以促进处理元件的操作。
I/O控制器410是集成I/O控制器,其包括用于在CPU 402和I/O设备之间传送数据的逻辑,I/O设备可以指能够向诸如CPU 402之类的电子系统传输数据和/或从该电子系统接收数据的任何合适的设备。例如,I/O设备可以包括:音频/视频(A/V,audio/video)设备控制器,例如图形加速器或音频控制器;数据存储设备控制器,例如闪存设备、磁存储盘或光存储盘控制器;无线收发器;网络处理器;网络接口控制器;或用于诸如显示器、打印机、鼠标、键盘或扫描仪之类的其他输入设备的控制器;或其他合适的设备。在特定实施例中,I/O设备可以包括可以通过I/O控制器410耦合到CPU 402的存储设备406。
I/O设备可以使用任何合适的信令协议与CPU 402的I/O控制器410通信,该信令协议例如是外围组件互连(PCI,peripheral component interconnect)、PCI快速(PCIe,PCIExpress)、通用串行总线(USB,Universal Serial Bus)、串行附接SCSI(SAS,SerialAttached SCSI)、串行ATA(SATA,Serial ATA)、光纤通道(FC,Fibre Channel)、IEEE802.3、IEEE 802.11或其他当前或未来的信令协议。在特定实施例中,I/O控制器410和底层I/O设备可以根据诸如非易失性存储器快速(NVMe,Non-Volatile Memory Express)(例如,如可在www.nvmexpress.org/specifications/处获得的规范中的一个或多个所描述的)或高级主机控制器接口(AHCI,Advanced Host Controller Interface)(例如,如可在http://www.intel.com/content/www/us/en/io/serial-ata/serial-ata-ahci-spec-rev1-3-1.html处获得的诸如串行ATA AHCI:Specification,Rev.1.3.1之类的一个或多个AHCI规范所描述的)之类的逻辑设备接口规范,来传送数据和命令。在各种实施例中,耦合到I/O控制器的I/O设备可以位于芯片外(即,不在与CPU 402相同的芯片上)或可以与CPU 402集成在相同的芯片上。
CPU存储器控制器412是集成存储器控制器,其包括用于控制进出一个或多个系统存储器设备407的数据流的逻辑。CPU存储器控制器412可以包括这样的逻辑:能操作为从系统存储器设备407进行读取、向系统存储器设备407进行写入、或从系统存储器设备407请求其他操作。在各种实施例中,CPU存储器控制器412可以从核心414和/或I/O控制器410接收写入请求,并且可以将在这些请求中指定的数据提供给系统存储器设备407,以用于存储在其中。CPU存储器控制器412还可以从系统存储器设备407读取数据,并且将读取的数据提供给I/O控制器410或核心414。在操作期间,CPU存储器控制器412可以发出包括系统存储器设备407的一个或多个地址的命令,以便从存储器读取数据或将数据写入存储器(或执行其他操作)。在一些实施例中,CPU存储器控制器412可以被实现在与CPU 402相同的芯片上,而在其他实施例中,CPU存储器控制器412可以被实现在与CPU 402不同的芯片上。I/O控制器410可以相对于一个或多个存储设备406执行相似的操作。
CPU 402还可以通过外部I/O控制器404耦合到一个或多个其他I/O设备。在特定实施例中,外部I/O控制器404可以将存储设备406耦合到CPU 402。外部I/O控制器404可以包括用于管理一个或多个CPU 402与I/O设备之间的数据流的逻辑。在特定实施例中,外部I/O控制器404与CPU 402一起位于主板上。外部I/O控制器404可以使用点对点或其他接口与CPU 402的组件交换信息。
系统存储器设备407可以存储任何合适的数据,例如由处理器408用来提供计算机系统400的功能的数据。例如,与由核心414执行的程序或访问的文件相关联的数据可以存储在系统存储器设备407中。因此,系统存储器设备407可以包括存储由核心414执行或以其他方式使用的数据和/或指令序列的系统存储器。在各种实施例中,系统存储器设备407可以存储即使在系统存储器设备407的电力被移除之后仍保持存储的持久数据(例如,用户的文件或指令序列)。系统存储器设备407可以专用于特定CPU 402或与计算机系统400的其他设备(例如,一个或多个其他处理器或其他设备)共享。
在各种实施例中,系统存储器设备407可以包括存储器,存储器包括任意数量的存储器阵列、存储器设备控制器和其他支持逻辑(未示出)。存储器阵列可以包括非易失性存储器和/或易失性存储器。非易失性存储器是不需要电力来维持介质所存储的数据状态的存储介质。非易失性存储器的非限制性示例可以包括以下项中的任一个或其组合:固态存储器(例如,平面或3D NAND闪存或NOR闪存)、3D交叉点存储器、使用硫族化物相变材料(例如,硫族化物玻璃)的存储器设备、字节可寻址非易失性存储器设备、铁电存储器、氧化硅-氮化物-氧化硅(SONOS,silicon-oxide-nitride-oxide-silicon)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM,ferroelectrictransistor random access memory)奥氏存储器、纳米线存储器、电可擦可编程只读存储器(EEPROM,electrically erasable programmable read-only memory)、其他各种类型的非易失性随机存取存储器(RAM,random access memory)和磁存储存储器。在一些实施例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的交叉处并且是可单独寻址的,并且其中,位存储是基于体电阻的变化的。易失性存储器是需要电力来维持介质所存储数据的状态的存储介质。易失性存储器的示例可以包括诸如动态随机存取存储器(DRAM,dynamic random-access memory)或静态随机存取存储器(SRAM,static random-access memory)之类的各种类型的随机存取存储器(RAM)。可以在存储器阵列中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM,dynamicrandom-access memory)。在一些实施例中,作为易失性存储器的系统存储器设备407的任何部分可以符合JEDEC标准,JEDEC标准包括但不限于诸如DDR3、4和5之类的双倍数据速率(DDR,Double Data Rate)标准或低功率DDR4(LPDDR4,Low Power DDR4)以及新兴的标准。
存储设备406可以存储任何合适的数据,例如由处理器408用来提供计算机系统400的功能的数据。例如,与由核心414A和414B执行的程序或访问的文件相关联的数据可以存储在存储设备406中。因此,在一些实施例中,存储设备406可以存储由核心414A和414B执行或以其他方式使用的数据和/或指令序列。在各种实施例中,存储设备406可以存储即使在存储设备406的电力被移除之后仍保持存储的持久数据(例如,用户的文件或软件应用代码)。存储设备406可以专用于CPU 402或与计算机系统400的其他设备(例如,另一个CPU或其他设备)共享。
在所描绘的实施例中,存储设备406包括存储设备控制器418和存储器416,存储器416包括能操作以存储数据的四个存储器设备422A-D,然而,存储设备可以包括任何合适数量的存储器设备。存储器设备422A包括多个存储器单元,每个存储器单元能操作以存储一个或多个位。存储器设备422A的单元可以以任何合适的方式排列,例如以行(例如,字线)和列(例如,位线)、三维结构和/或其他方式排列。在各种实施例中,单元可以被逻辑地分组为库、块、子块、平面、字线、页、帧、字节或其他合适的组。在各种实施例中,存储器设备422A包括一个或多个NAND闪存阵列。
存储器设备422A可以包括上面列出的任何易失性或非易失性存储器或其他合适的存储器。在特定实施例中,存储器设备422A包括诸如平面或3D NAND闪存之类的非易失性存储器。在特定实施例中,具有非易失性存储器的存储器设备422A可以符合由联合电子器件工程委员会(JEDEC,Joint Electron Device Engineering Council)颁布的一种或多种非易失性存储器标准,例如JESD218、JESD219、JESD220-1、JESD220C、JESD223C、JESD223-1或其他合适的标准(本文中引用的JEDEC标准可从www.jedec.org处获得)。在特定实施例中,存储设备包括符合由JEDEC颁布的用于SDRAM存储器的标准的一个或多个部分的NAND闪存,例如用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3SDRAM的JESD79-3F或用于DDR4 SDRAM的JESD79-4A(这些标准可在www.jedec.org处获得)。这样的标准(和类似的标准)可以被称为基于DDR的标准,并且实施这样的标准的存储设备的通信接口可以被称为基于DDR的接口。例如,包括NAND闪存的存储设备406可以接收具有符合基于DDR的标准的格式的命令,并且可以将该命令转换成与存储设备406的NAND闪存兼容的一个或多个命令。类似地,存储设备406可以在将来自在NAND闪存上执行的操作的结果传输到CPU 402之前,将该结果格式化为符合基于DDR的标准的格式。
在特定实施例中,存储器设备422是半导体封装。在各种实施例中,半导体封装可以包括外壳,所述外壳包括一个或多个半导体管芯(也称为芯片)(例如,存储器芯片423A-D)。封装还可以包括用于连接到外部电路的接触引脚或引线。然而,封装仅是存储器设备422可以采用的一个示例形式,存储器设备可以是一个或多个存储器阵列的任何合适的布置以及任何合适的物理布置中的相关联的逻辑。例如,虽然单个物理封装可以包括单个存储器设备422,但是多个存储器设备422也可以驻留在单个封装上或者存储器设备422可以分布在多个封装上。
存储器416可以体现为一种或多种不同的物理介质,例如电路板、管芯、磁盘驱动器、其他介质或它们的任何组合(或与一个或多个封装的组合)。在特定实施例中,存储器416包括耦合到多个存储器设备422的电路板,每个存储器设备包括半导体封装。
存储设备406可以在各种实施例中包括任何合适类型的存储器并且不限于存储器的特定的速度、技术或形状因数。例如,存储设备406可以是磁盘驱动器(例如,固态驱动器)、闪存驱动器、与计算设备集成的存储器(例如,集成在计算设备的电路板上的存储器)、可以插入到存储器插槽中的存储器模块(例如,双列直插式存储器模块)或其他类型的存储设备。此外,计算机系统400可以包括多种不同类型的存储设备。存储设备406可以包括任何合适的接口,以使用诸如基于DDR的协议、PCI、PCIe、USB、SAS、SATA、FC、系统管理总线(SMBus,System Management Bus)或其他合适协议等的任何合适的通信协议,与CPU存储器控制器412或I/O控制器410通信。存储设备406还可以包括通信接口,以根据诸如NVMe、AHCI或其他合适规范等的任何合适的逻辑设备接口规范,与CPU存储器控制器412或I/O控制器410通信。在特定实施例中,存储设备406可以包括多个通信接口,每个通信接口使用单独的协议与CPU存储器控制器412和/或I/O控制器410通信。
存储设备控制器418可以包括用于以下项的逻辑:(例如,经由CPU存储器控制器412或I/O控制器410)从CPU 402接收请求,使得请求相对于存储器416(或其存储器设备和/或存储器芯片)被执行,并且(例如,经由CPU存储器控制器412或I/O控制器410)将与请求相关联的数据提供给CPU 402。控制器418还可操作以检测和/或纠正在存储器操作期间遇到的错误。在一个实施例中,控制器418还跟踪特定单元(或单元的逻辑分组)已被写入的次数,以便执行磨损均衡和/或检测单元何时接近它们可以被可靠地写入的估计次数。在执行磨损均衡时,存储设备控制器418可以在存储器416的存储器的块之间均匀地分布写入操作,使得特定块不会被写入得比其他块更多。在各种实施例中,控制器418还可以监视存储设备406的诸如温度或电压之类的各种特性,并且向CPU 402报告相关的统计数据。存储设备控制器418可以被实施在与存储器416相同的电路板或设备上,或者被实施在不同的电路板或设备上。例如,在一些环境中,存储设备控制器418可以是管理计算机系统400的多个不同存储器416(其分别可以是相同类型的存储器或者可以是不同类型的)的存储器操作的集中存储控制器(并且因此可以向其所耦合到的任何存储器提供本文中描述的存储设备控制器功能)。
在各种实施例中,存储设备406还包括地址转换引擎420。在所描绘的实施例中,地址转换引擎420示出为存储设备控制器418的一部分,然而在各种实施例中,地址转换引擎420可以与存储设备控制器418分离并且可通信地耦合到存储设备控制器418。在各种实施例中,地址转换引擎420可以集成在与存储设备控制器418相同的芯片或封装上,或者集成在不同的芯片或封装上。
在各种实施例中,地址转换引擎420可以包括用于存储和更新存储设备406(其可以暴露于或不暴露于主计算设备)的存储器416的逻辑地址空间(例如,对耦合到存储设备406的主计算设备可见的地址空间)和物理地址空间之间的映射的逻辑。逻辑地址空间可以暴露多个逻辑数据组,这些逻辑数据组物理地存储在存储器的能通过存储设备406的物理地址空间寻址的对应物理组上。物理地址空间的物理地址可以包括标识存储设备406的物理存储器位置(例如,存储器416的存储器阵列内的位置)的任何合适的信息,例如物理存储器位置所在的存储器416的标识符、物理存储器位置所位于的存储器设备422A的标识符、物理存储器位置的一个或多个页、物理存储器位置的一个或多个子块、物理存储器位置的一个或多个字线、物理存储器位置的一个或多个位线或者其其他合适的标识符或编码。
在各种实施例中,存储设备406还包括编程控制逻辑424,该编程控制逻辑能够单独或与存储器设备控制器426组合地操以控制当数据被写入存储器416时执行的编程序列、当从存储器416读取数据时执行的读取序列、或者当从存储器416擦除数据时的擦除序列。在各种实施例中,程序控制逻辑424可以在数据的编程、读取和/或擦除期间提供施加到一个或多个存储器单元、字线、位线和/或存储器阵列的其他部分的各种电压(或指示应该提供哪些电压的信息),执行错误纠正,并且执行其他合适的功能。
在各种实施例中,程序控制逻辑424可以集成在与存储设备控制器418相同的芯片上或集成在不同的芯片上。在所描绘的实施例中,程序控制逻辑424示出为存储设备控制器418的一部分,然而在各种实施例中,程序控制逻辑424的全部或一部分也可以与存储设备控制器418分离并且可通信地耦合到存储设备控制器418。例如,程序控制逻辑424的全部或一部分可以位于与存储器416和/或存储器设备422A-D相同的封装或芯片上。
在一些实施例中,系统400的元件中的全部或一些驻留在(或耦合到)相同的电路板(例如,母板)上。在各种实施例中,可以存在元件之间的任何合适的划分。例如,CPU 402中描绘的元件可以位于单个管芯(即,芯片上)或封装上,或者CPU 402的任何元件可以位于芯片外或封装外。类似地,存储设备406中描绘的元件可以位于单个芯片或多个芯片上。在各种实施例中,存储设备406和主计算设备(例如,CPU 402)可以位于相同的电路板上或相同的设备上,在其他实施例中,存储设备406和主计算设备可以位于不同的电路板或设备上。
系统400的组件可以以任何合适的方式耦合在一起。例如,总线可以将任何组件耦合在一起。总线可以包括任何已知的互连结构,例如多点总线、网状互连、环形互连、点对点互连、串行互连、并行总线、相干(例如,缓存相干)总线、分层协议架构、差分总线和Gunning收发器逻辑(GTL,Gunning transceiver logic)总线。在各种实施例中,集成I/O子系统包括系统400的各种组件之间的点对点多路复用逻辑,各种组件例如是核心414、一个或多个CPU存储器控制器412、I/O控制器410、集成I/O设备、直接存储器访问(DMA,direct memoryaccess)逻辑(未示出)等。在各种实施例中,计算机系统400的组件可以通过一个或多个网络耦合在一起,该网络包括任意数量的中间网络节点,例如路由器、交换机或其他计算设备。例如,主计算设备(例如,CPU 402)和存储设备406可以通过网络可通信地耦合。
尽管未描绘,但是系统400可以使用用于接收电力的电池和/或电源插座连接器和相关联的系统、用于输出通过CPU 402提供的数据的显示器、或允许CPU 402通过网络进行通信的网络接口。在各种实施例中,电池、电源插座连接器、显示器和/或网络接口可以通信地耦合到CPU 402。可以使用诸如可再生能源(例如,太阳能或基于运动的电源)之类的其他电源。
本文中描述的流程仅代表特定实施例中可能发生的操作。图中所示的一些操作可以在适当的地方重复、合并、修改或删除。此外,在不脱离特定实施例的范围的情况下,可以以任何合适的顺序执行操作。
设计可以经历从创建到模拟再到制造的各个阶段。表示设计的数据可以以多种方式表示该设计。首先,如在仿真中很有用的,可以使用硬件描述语言(HDL,hardwaredescription language)或其他功能描述语言来表示硬件。此外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到了表示硬件模型中各种设备的物理布置的数据级别。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生产集成电路的掩模的不同掩模层上各种特征的存在或不存在的数据。在一些实施中,这样的数据可以以诸如图形数据系统II(GDS II,GraphicData System II)、开放艺术品系统交换标准(OASIS,Open Artwork System InterchangeStandard)或类似格式之类的数据库文件格式来存储。
在一些实施中,基于软件的硬件模型以及HDL和其他功能描述语言对象可以包括寄存器传输语言(RTL,register transfer language)文件以及其他示例。这样的对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型),解析HDL对象以获得所描述的硬件的属性,并且从对象来确定物理电路和/或片上布局。设计工具的输出可以用于制造物理设备。例如,设计工具可以从HDL对象来确定各种硬件和/或固件元件的配置,例如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、结构拓扑以及被实施以实现HDL对象中建模的系统的其他属性。设计工具可以包括用于确定片上系统(SoC,system on chip)和其他硬件设备的拓扑和结构配置的工具。在一些情况下,HDL对象可以用作开发模型和设计文件的基础,制造设备可以使用这些开发模型和设计文件来制造所描述的硬件。实际上,HDL对象本身可以作为输入被提供给制造系统软件,以引起所描述的硬件。
在设计的任何表示中,数据可以存储在任何形式的机器可读介质中。存储器或诸如盘的磁或光存储器可以是机器可读介质,以存储经由光或电波传输的信息,该光或电波被调制或以其他方式产生为用于传输这样信息。当传输指示或携带代码或设计的电载波时,在执行电信号的复制、缓冲或重新传输的范围内,进行新的复制。因此,通信提供商或网络提供商可以至少暂时地在有形的机器可读的存储介质上存储诸如编码成载波的信息之类的产品,从而实现本公开的实施例的技术。
如本文中所用的模块是指硬件、软件和/或固件的任何组合。作为示例,模块包括硬件,例如微控制器,其与用于存储适于由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,对模块的引用是指硬件,该硬件被具体配置为识别和/或执行要保存在非暂时性介质上的代码。此外,在另一个实施例中,模块的使用是指包含代码的非暂时性介质,该代码具体适用于由微控制器执行以执行预定操作。并且可以推断,在又一实施例中,术语模块(在该示例中)可以是指微控制器和非暂时性介质的组合。通常,分离示出的模块边界经常会改变并且可能重叠。例如,第一模块和第二模块可以共享硬件、软件、固件或它们的组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑设备之类的其他硬件。
逻辑可以用于实施各种组件的任何功能,例如路由表112、接口104、接口106、核心209、缓存归属代理212、BIOS 216、存储器控制器(MC0-7)、DDR5存储器设备206、CXL存储器设备208、CXL主机桥210、CPU 402、外部I/O控制器404、处理器408、核心414A和414B、I/O控制器410、CPU存储器控制器412、存储设备406、系统存储器设备407、存储器芯片416、存储设备控制器418、地址转换引擎420、存储器分区422、程序控制逻辑424、芯片控制器426或本文中描述的其他实体或组件,或这些中任何一个的子组件。“逻辑”可以是指硬件、固件、软件和/或各自的组合,以执行一个或多个功能。在各种实施例中,逻辑可以包括微处理器或其他可操作以执行软件指令的处理元件、诸如专用集成电路(ASIC,application specificintegrated circuit)之类的离散逻辑、诸如现场可编程门阵列(FPGA,fieldprogrammable gate array)之类的编程逻辑设备、包含指令的存储设备、逻辑设备(例如,可以在印刷电路板上找到)的组合、或其他合适的硬件和/或软件。逻辑可以包括一个或多个门或其他电路组件。在一些实施例中,逻辑也可以完全体现为软件。软件可以体现为软件包、代码、指令、指令集和/或记录在非暂时性计算机可读存储介质上的数据。固件可以体现为存储设备中的硬编码(例如,非易失性)的代码、指令或指令集和/或数据。
在一个实施例中,短语“用于”或“配置为”的使用是指对装置、硬件、逻辑或元件进行布置、组合、制造、提供销售、进口和/或设计,以执行指定或确定的任务。在该示例中,如果未正在操作的装置或其元件被设计、耦合和/或互连为执行所述指定任务,则其仍是被“配置为”执行指定任务的。作为纯粹的示例性示例,逻辑门可以在操作期间提供0或1。但是,“配置为”向时钟提供启动信号的逻辑门并不包括每个可能提供1或0的潜在逻辑门。而是,该逻辑门是以某种方式耦合的,在操作期间,1或0输出是用于启动时钟的。应再次注意的是,使用术语“配置为”不需要操作,而是关注装置、硬件和/或元件的潜在状态,其中,在潜在状态下,装置、硬件和/或元件被设计用于在装置、硬件和/或元件操作时执行特定任务。
此外,在一个实施例中,短语“能够/用于”和/或“可操作以”的使用是指一些装置、逻辑、硬件和/或元件,其被设计成能够以特定方式使用该装置、逻辑、硬件和/或元件。如上所述,在一个实施例中,用于、能够或可操作的使用是指装置、逻辑、硬件和/或元件的潜在状态,其中,装置、逻辑、硬件和/或元件不是正在操作,但是被设计成能够以特定方式使用装置。
如本文中所用,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑的值的使用也称为1和0,其仅表示二进制逻辑状态。例如,1表示高逻辑电平,0表示低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能能够保持单个逻辑值或多个逻辑值。然而,已经使用了计算机系统中值的其他表示。例如,十进制数十也可以表示为二进制值1010和十六进制字母A。因此,值包括能够保存在计算机系统中的信息的任何表示。
此外,状态可以由值或值的部分来表示。作为示例,诸如逻辑一之类的第一值可以表示默认或初始状态,而诸如逻辑零之类的第二值可以表示非默认状态。此外,在一个实施例中,术语重置和设置分别指默认值和更新的值或状态。例如,默认值可能包括高逻辑值,例如重置,而更新的值可能包括低逻辑值,例如设置。应注意的是,可以使用任何值的组合来表示任意数量的状态。
上述方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的可由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括以诸如计算机或电子系统之类的机器可读的形式提供(例如,存储和/或传输)信息的任何机制。例如,非瞬态机器可访问介质包括随机存取存储器(RAM,random-access memory),例如静态RAM(SRAM,static RAM)或动态RAM(DRAM,dynamicRAM);ROM;磁或光存储介质;闪存存储设备;电存储设备;光存储设备;声学存储设备;其他形式的存储设备,以用于保存从瞬时(传播)信号(例如,载波、红外信号、数字信号)接收到的信息;等,这将与可能从中接收信息的非暂时性介质区分开来。
用于对逻辑进行编程以执行本公开的实施例的指令可以存储在系统中的存储器内,例如DRAM、缓存、闪存或其他存储设备。此外,指令可以经由网络或通过其他计算机可读介质分发。因此,机器可读存储介质可以包括用于以机器(例如,计算机)可读形式存储或传输信息的任何机制,但是不限于软盘、光盘、只读光盘存储器(CD-ROM,Compact Disc,Read-Only Memory)和磁光盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、可擦可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦可编程只读存储器(EEPROM,Electrically Erasable ProgrammableRead-Only Memory)、磁或光卡、闪存或者用于经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形机器可读的存储介质。因此,计算机可读介质包括任何类型的有形机器可读存储介质,其适用于以机器(例如,计算机)可读的形式存储或传输电子指令或信息。
在整个说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书的各个地方出现的短语“在一个实施例中”或“在实施例中”不一定都指代相同的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
在前述说明书中,已经参考特定示例性实施例给出了详细描述。然而,在不背离如所附权利要求中阐述的本公开的更广泛的精神和范围的情况下,显然可以对其进行各种修改和改变。因此,说明书和附图应被视为说明性意义而非限制性意义。此外,前述实施例和其他示例性语言的使用不一定指相同的实施例或相同的示例,而是可以指代不同和区别的实施例以及潜在地相同的实施例。
示例1包括一种处理器,所述处理器包括:第一类型的第一存储器接口,用于耦合到至少一个第一存储器设备;第二类型的第二存储器接口,用于耦合到至少一个第二存储器设备;电路,用于在所述至少一个第一存储器设备和所述至少一个第二存储器设备之间交错针对连续存储器地址的存储器请求。
示例2包括示例1的主题,其中,所述第一存储器接口包括集成存储器控制器。
示例3包括示例1和示例2中的任一项的主题,其中,第二存储器接口包括计算快速链路(CXL)接口。
示例4包括示例1-3中的任一项的主题,其中,所述至少一个第一存储器设备包括多个双倍数据速率(DDR)存储器设备,其中,所述至少一个第二存储器设备包括多个CXL存储器设备。
示例5包括示例1-4中的任一项的主题,其中,用于交错存储器请求的所述电路包括路由表,所述路由表包括将逻辑存储器地址映射到所述第一存储器接口和所述第二存储器接口的条目。
示例6包括示例1-5中的任一项的主题,还包括第二电路,所述第二电路用于配置所述电路以交错存储器请求。
示例7包括示例1-6中的任一项的主题,其中,所述第二电路实现基本输入/输出系统(BIOS)。
示例8包括示例1-7中的任一项的主题,其中,所述第二电路用于分析所述至少一个第一存储器设备和所述至少一个第二存储器设备的参数,并且基于所述参数确定所述至少一个第一存储器设备和所述至少一个第二存储器设备针对交错的适合度。
示例9包括示例1-8中的任一项的主题,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的通道带宽。
示例10包括示例1-9中的任一项的主题,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的延迟。
示例11包括一种系统,所述系统包括:处理器单元,用于发出针对连续逻辑存储器地址的多个存储器请求;第一类型的第一存储器接口,用于耦合到至少一个第一存储器设备;第二类型的第二存储器接口,用于耦合到至少一个第二存储器设备;电路,用于在所述至少一个第一存储器设备和所述至少一个第二存储器设备之间交错所述多个存储器请求。
示例12包括示例11的主题,还包括所述至少一个第一存储器设备。
示例13包括示例11和12中的任一项的主题,还包括所述至少一个第二存储器设备。
示例14包括示例11-13中的任一项的主题,还包括通信地耦合到处理器的电池、通信地耦合到处理单元的显示器和通信地耦合到处理单元的网络接口中的一个或多个。
示例15包括示例11-14中的任一项的主题,其中,所述第一存储器接口包括集成存储器控制器。
示例16包括示例11-15中的任一项的主题,其中,所述第二存储器接口包括计算快速链路(CXL)接口。
示例17包括示例11-16中的任一项的主题,其中,所述至少一个第一存储器设备包括多个双倍数据速率(DDR)存储器设备,其中,所述至少一个第二存储器设备包括多个CXL存储器设备。
示例18包括示例11-17中的任一项的主题,其中,用于交错存储器请求的所述电路包括路由表,所述路由表包括将逻辑存储器地址映射到所述第一存储器接口和所述第二存储器接口的条目。
示例19包括示例11-18中的任一项的主题,还包括第二电路,所述第二电路用于配置所述电路以交错存储器请求。
示例20包括示例11-19中的任一项的主题,其中,所述第二电路实现基本输入/输出系统(BIOS)。
示例21包括示例11-20中的任一项的主题,其中,所述第二电路用于分析所述至少一个第一存储器设备和所述至少一个第二存储器设备的参数,并且基于所述参数确定所述至少一个第一存储器设备和所述至少一个第二存储器设备针对交错的适合度。
示例22包括示例11-21中的任一项的主题,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的通道带宽。
示例23包括示例11-22中的任一项的主题,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的延迟。
示例24包括一个或多个计算机可读介质,所述计算机可读介质上存储有代码,其中,所述代码能够执行以使机器:将处理器配置为在至少一个第一存储器设备和至少一个第二存储器设备之间交错具有连续存储器地址的存储器请求,其中,所述处理器包括用于耦合到所述至少一个第一存储器设备的第一类型的第一存储器接口、以及用于耦合到所述至少一个第二存储器设备的第二类型的第二存储器接口。
示例25包括示例24的主题,其中,所述代码能够执行以使所述机器分析所述至少一个第一存储器设备和所述至少一个第二存储器设备的参数,并且基于所述参数确定所述至少一个第一存储器设备和所述至少一个第二存储器设备针对交错的适合度。
示例26包括示例24和25中的任一项的主题,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的通道带宽。
示例27包括示例24-26中的任一项的主题,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的延迟。
示例28包括示例1-27中的任一项的主题,其中,所述连续地址是连续逻辑地址。
Claims (23)
1.一种处理器,包括:
第一类型的第一存储器接口,用于耦合到至少一个第一存储器设备;
第二类型的第二存储器接口,用于耦合到至少一个第二存储器设备;以及
电路,用于在所述至少一个第一存储器设备和所述至少一个第二存储器设备之间交错针对连续存储器地址的存储器请求。
2.根据权利要求1所述的处理器,其中,所述第一存储器接口包括集成存储器控制器。
3.根据权利要求2所述的处理器,其中,所述第二存储器接口包括计算快速链路(CXL)接口。
4.根据权利要求3所述的处理器,其中,所述至少一个第一存储器设备包括多个双倍数据速率(DDR)存储器设备,其中,所述至少一个第二存储器设备包括多个CXL存储器设备。
5.根据权利要求1-4中任一项所述的处理器,其中,用于交错存储器请求的所述电路包括路由表,所述路由表包括将逻辑存储器地址映射到所述第一存储器接口和所述第二存储器接口的条目。
6.根据权利要求1所述的处理器,还包括第二电路,所述第二电路用于配置所述电路以交错存储器请求。
7.根据权利要求6所述的处理器,其中,所述第二电路实现基本输入/输出系统(BIOS)。
8.根据权利要求6所述的处理器,其中,所述第二电路用于分析所述至少一个第一存储器设备和所述至少一个第二存储器设备的参数,并且基于所述参数确定所述至少一个第一存储器设备和所述至少一个第二存储器设备针对交错的适合度。
9.根据权利要求8所述的处理器,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的通道带宽。
10.根据权利要求8所述的处理器,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的延迟。
11.一种方法,包括:
在至少一个第一存储器设备和至少一个第二存储器设备之间交错针对连续存储器地址的存储器请求,其中,第一类型的第一存储器接口耦合到所述至少一个第一存储器设备,其中,第二类型的第二存储器接口耦合到所述至少一个第二存储器设备。
12.根据权利要求11所述的方法,其中,所述第一存储器接口包括集成存储器控制器。
13.根据权利要求11所述的方法,其中,所述第二存储器接口包括计算快速链路(CXL)接口。
14.根据权利要求13所述的方法,其中,所述至少一个第一存储器设备包括多个双倍数据速率(DDR)存储器设备,其中,所述至少一个第二存储器设备包括多个CXL存储器设备。
15.根据权利要求11所述的方法,还包括:基于路由表来交错存储器请求,所述路由表包括将逻辑存储器地址映射到所述第一存储器接口和所述第二存储器接口的条目。
16.根据权利要求11所述的方法,还包括:通过第二电路将第一电路配置为执行对存储器请求的交错。
17.根据权利要求16所述的方法,其中,所述第二电路包括基本输入/输出系统(BIOS)。
18.根据权利要求16所述的方法,其中,所述第二电路用于分析所述至少一个第一存储器设备和所述至少一个第二存储器设备的参数,并且基于所述参数确定所述至少一个第一存储器设备和所述至少一个第二存储器设备针对交错的适合度。
19.根据权利要求18所述的方法,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的通道带宽。
20.根据权利要求18所述的方法,其中,所述参数包括所述至少一个第一存储器设备和所述至少一个第二存储器设备的延迟。
21.根据权利要求11所述的方法,还包括:由处理单元发出所述针对连续存储器地址的存储器请求。
22.一种系统,包括用于执行根据权利要求11-21中任一项所述的方法的组件。
23.根据权利要求22所述的系统,其中,所述组件包括机器可读代码,所述机器可读代码在被执行时,使得机器执行所述方法的一个或多个步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/557,963 | 2021-12-21 | ||
US17/557,963 US20220114115A1 (en) | 2021-12-21 | 2021-12-21 | Interleaving of heterogeneous memory targets |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116303155A true CN116303155A (zh) | 2023-06-23 |
Family
ID=81077771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211415194.2A Pending CN116303155A (zh) | 2021-12-21 | 2022-11-11 | 异构存储器目标的交错 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220114115A1 (zh) |
EP (1) | EP4202704A1 (zh) |
KR (1) | KR20230094964A (zh) |
CN (1) | CN116303155A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11487454B2 (en) * | 2019-12-05 | 2022-11-01 | Sandisk Technologies Llc | Systems and methods for defining memory sub-blocks |
US20230342045A1 (en) * | 2022-04-21 | 2023-10-26 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for selecting devices in tiered memory |
US20240220405A1 (en) * | 2022-12-29 | 2024-07-04 | Advanced Micro Devices, Inc. | Systems and methods for hosting an interleave across asymmetrically populated memory channels across two or more different memory types |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959298B2 (en) * | 2012-12-10 | 2015-02-17 | Qualcomm Incorporated | System and method for managing performance of a computing device having dissimilar memory types |
US20210075633A1 (en) * | 2020-11-18 | 2021-03-11 | Intel Corporation | Packet multi-cast for memory pool replication |
-
2021
- 2021-12-21 US US17/557,963 patent/US20220114115A1/en active Pending
-
2022
- 2022-10-17 EP EP22201897.0A patent/EP4202704A1/en active Pending
- 2022-11-11 CN CN202211415194.2A patent/CN116303155A/zh active Pending
- 2022-11-18 KR KR1020220155774A patent/KR20230094964A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
EP4202704A1 (en) | 2023-06-28 |
US20220114115A1 (en) | 2022-04-14 |
KR20230094964A (ko) | 2023-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10389839B2 (en) | Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node | |
US10289313B2 (en) | Method and apparatus for improving sequential reading in NAND flash | |
US11403044B2 (en) | Method and apparatus for performing multi-object transformations on a storage device | |
US10268407B1 (en) | Method and apparatus for specifying read voltage offsets for a read command | |
US20170344430A1 (en) | Method and apparatus for data checkpointing and restoration in a storage device | |
US10714186B2 (en) | Method and apparatus for dynamically determining start program voltages for a memory device | |
EP4202704A1 (en) | Interleaving of heterogeneous memory targets | |
US9727267B1 (en) | Power management and monitoring for storage devices | |
US10725933B2 (en) | Method and apparatus for redirecting memory access commands sent to unusable memory partitions | |
US10402338B2 (en) | Method and apparatus for erase block granularity eviction in host based caching | |
CN109643574B (zh) | 用于在完成数据加载操作之前启动预读取操作的方法和设备 | |
US20220004488A1 (en) | Software drive dynamic memory allocation and address mapping for disaggregated memory pool | |
US20170255565A1 (en) | Method and apparatus for providing a contiguously addressable memory region by remapping an address space | |
WO2017213908A1 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
EP3926451A1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
US10095432B2 (en) | Power management and monitoring for storage devices | |
CN109314103B (zh) | 用于远程现场可编程门阵列处理的方法和装置 | |
US10331385B2 (en) | Cooperative write-back cache flushing for storage devices | |
US20230064007A1 (en) | Encoding additional states in a three-dimensional crosspoint memory architecture | |
WO2017218170A1 (en) | Method and apparatus for programming wordlines of nand flash memory using alternating encoding schemes | |
US10229057B2 (en) | Method and apparatus for avoiding bus contention after initialization failure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |