CN111831404A - 用于dram控制器的高性能内联ecc架构 - Google Patents
用于dram控制器的高性能内联ecc架构 Download PDFInfo
- Publication number
- CN111831404A CN111831404A CN201910801524.3A CN201910801524A CN111831404A CN 111831404 A CN111831404 A CN 111831404A CN 201910801524 A CN201910801524 A CN 201910801524A CN 111831404 A CN111831404 A CN 111831404A
- Authority
- CN
- China
- Prior art keywords
- ecc
- write
- time period
- transaction
- during
- 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 claims abstract description 160
- 238000000034 method Methods 0.000 claims abstract description 51
- 238000012937 correction Methods 0.000 claims abstract description 9
- 230000004044 response Effects 0.000 claims description 20
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 230000003111 delayed effect Effects 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 70
- 238000010586 diagram Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 15
- 238000005192 partition Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 230000004913 activation Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008685 targeting Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4013—Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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
- 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/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种用于DRAM控制器的高性能内联ECC架构。具体公开了用于减少向存储器读取和写入数据所需的时间的技术。当用于检测和/或纠正数据损坏的纠错码(ECC)位被写入存储器时,可以延迟数据读取和/或写入。在某些情况下写入ECC位可能比写入数据位要花费更长时间,因为ECC写入可能涉及读取/修改/写入操作,而不是简单地将位写入存储器。通过将ECC写入与数据写入交错,可以隐藏与写入ECC位相关联的一些延时。然而,如果没有足够的数据写入可用于交错,则隐藏这种延时变得困难。因此,例如公开了各种技术,其中ECC写入被推迟,直到足够数量的数据写入变得可用于交错。通过交错ECC写入,所公开的技术减少了将向存储器读取和写入数据所需的总时间。
Description
技术领域
各个实施例总地涉及计算机存储器控制器技术,并且更具体地,涉及用于减少向存储器读取和写入的时间的技术。
背景技术
一些常规的存储器控制器通过命令/数据总线将系统和应用程序数据以及相应的纠错码(ECC)数据写入存储器。这些存储器控制器随后可以通过命令/数据总线从存储器读取系统和应用程序数据以及相应的ECC数据,并使用相应的ECC数据验证系统和应用程序数据。
某些常规的存储器控制器实现所谓的“内联ECC”操作。在这样的实现中,存储器控制器通过命令/数据总线将系统和应用程序数据以及相应的ECC数据写入同一存储器页面。存储器控制器随后通过命令/数据总线从该同一存储器页面读取系统和应用程序数据以及相应的ECC数据。以这种方式配置的存储器控制器在本文称为“写入回合(write turn)”的时间间隔期间向存储器发布写入事务和相应的ECC写入事务。这些存储器控制器随后在本文称为“读取回合(read turn)”的时间间隔期间向存储器发布读取事务和相应的ECC读取事务。一般情况下,写入回合和读取回合相互交替。
ECC写入事务通常由于至少两个原因而经历更高的延时。首先,在先前的写入事务完成之后不能立即发生给定的ECC写入事务,因为需要延迟来为与ECC写入事务相关联的附加写入数据准备存储器页面。这种延迟可能是由内部读取-修改-写入引起的。其次,一旦给定的ECC写入事务完成,通常需要激活操作来为随后的读取操作准备存储器页面。这些激活操作消耗额外的时钟周期。
当来自其他存储体的其他写入事务与命令/数据总线上的那些ECC写入事务交错时,可以掩蔽与ECC写入事务相关联的延时。然而,在写入回合结束时,大多数写入事务已经完成,留下很少(如果有的话)写入事务,其可以与命令/数据总线上的ECC写入事务交错。由于可用于交错的写入事务较少,与这些ECC写入回合相关联的延时通常不能被掩蔽,这可能以各种方式降低整体性能。
首先,必须延长写入回合,同时完成剩余的ECC写入事务。延长写入回合会延迟后续的读取回合,从而降低存储器的访问速度。通常与上面讨论的ECC写入事务相关联的延时加剧了这些类型的延迟。反过来,关键请求(诸如中央处理器单元(CPU)读取和/或存储器管理单元(MMU)行走(walk))的延时可能增加,从而降低整体系统性能。其次,在剩余的ECC写入事务完成时未充分利用命令/数据总线,所导致的命令/数据总线上的“气泡”会降低整体总线性能。当多个ECC写入在同一个存储体中待处理时,这些问题都会进一步降低系统性能。
如前所述,本领域需要的是用于将ECC写入事务调度到存储器的更有效方式。
发明内容
各个实施例包括计算机实现的方法,包括:确定在写入事务被调度以执行的第一时间段期间没有足够数量的待处理(pending)写入事务可用于掩蔽与第一纠错码(ECC)写入事务相关联的一个或更多个延时,响应于确定没有足够数量的待处理写入事务可用,在第一时间段期间阻止第一ECC写入事务被调度以执行,确定在写入事务被调度以执行的第二时间段期间有足够数量的待处理写入事务可用于掩蔽一个或更多个延迟,并且响应于确定有足够数量的待处理写入事务可用,在第二时间段期间调度第一ECC写入事务以执行。
所公开的技术相对于现有技术的至少一个技术优点是,通过将那些ECC写入事务推迟到后续回合,可以继续掩蔽与回合结束时的ECC写入事务相关联的延时。结果,必须延迟写入回合之后的少量读取回合,并且可以掩蔽更多ECC写入事务延时,这增加了存储器访问速度和整体性能。
附图说明
因此,可以详细地理解各个实施例的上述特征的方式,可以通过参考各个实施例来获得上面简要概述的发明构思的更具体的描述,其中一些实施例在附图中被示出。然而,应当注意,附图仅示出了本发明构思的典型实施例,因此不应被视为以任何方式限制范围,并且存在其他同样有效的实施例。
图1示出了被配置为实现本实施例的一个或更多个方面的系统;
图2是根据各个实施例的图1的并行处理子系统的更详细的图示;
图3A是根据各个实施例的图2的分区单元的更详细的图示;
图3B示出了根据各个实施例的可以实现图3A的存储器控制器的替代系统;
图4是根据各个实施例的图3A和图3B的存储器控制器的更详细的图示;
图5是根据各个实施例的示出ECC写入事务如何可以降低性能的总线活动图;
图6是根据各个实施例的示出高速缓存ECC写入事务如何提高性能的总线活动图;以及
图7是根据各个实施例的用于高速缓存ECC写入事务以提高性能的方法步骤的流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对各个实施例的更透彻的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一个或更多个的情况下实践本发明构思。
如上所述,被配置为实现“内联ECC”的存储器控制器在写入回合期间向同一存储器页面发布写入事务和相应的ECC写入事务。ECC写入事务可以是“掩蔽的(masked)”写入,其触发内部读取-修改-写入。随后,存储器控制器可以在读取回合期间向同一存储器页面发布读取事务和相应的ECC读取事务。存储器控制器通过命令/数据总线发布这些各种事务。
ECC写入事务引起各种延时,当其他写入事务与命令/数据总线上的那些ECC写入事务交错时,可以掩蔽这些延时。然而,在写入回合结束时,写入事务仍然不足以与ECC写入事务交错,并且与这些ECC写入事务相关联的延时不能被掩蔽。因此,写入回合可能必须延长,而剩余的ECC写入事务完成。在此期间,命令/数据总线未充分利用,导致本领域中称为“气泡”的状况。
为了解决这些问题,各个实施例包括事务仲裁器,其跨命令/数据总线调度存储器事务。在写入回合期间,事务仲裁器确定是否有足够的写入事务可用于与ECC写入事务交错,以便掩蔽与那些ECC写入事务相关联的延时。如果没有足够的写入事务可用,则事务仲裁器激活高速缓存以存储剩余的ECC写入事务,从而允许随后的读取回合开始。在随后的读取回合期间,如果事务仲裁器调度对应于高速缓存的ECC写入事务的ECC数据的ECC读取事务,则从高速缓存服务ECC读取事务。在随后的写入回合期间,事务仲裁器优先调度高速缓存的ECC写入事务,从而允许那些ECC写入事务与命令/数据总线上的其他写入事务交错。
所公开的技术相对于现有技术的至少一个技术优点在于,通过将那些ECC写入事务推迟到后续回合,可以继续掩蔽与回合结束时ECC写入事务相关联的延时。结果是,写入回合之后必须延迟的读取回合更少,并且可以掩蔽更多ECC写入事务延时,这增加了存储器访问速度和整体性能。所公开技术的另一技术优点是推迟的ECC写入事务可以与其他写入事务交错以增加命令/数据总线利用率。因此,可以实现所公开的技术以减少命令/数据总线上气泡的出现,并提高命令/数据总线的性能。这些技术优势代表了相对于现有技术方法的一个或更多个技术进步。
系统总览
图1是示出被配置为实现本实施例的一个或更多个方面的计算机系统100的框图。计算机系统100包括经由可以包括内存桥105的互连路径通信的中央处理单元(CPU)102和系统内存104。内存桥105(例如,可以是北桥芯片)经由总线或其他通信路径106(例如,超传输链路)连接到I/O(输入/输出)桥107。I/O桥107(其可以例如南桥芯片)从一个或更多个用户输入设备108(例如,键盘、鼠标)接收用户输入,并经由通信路径106和内存桥105将输入转发到CPU 102。并行处理子系统112经由总线或第二通信路径113(例如,外围组件互连(PCI)Express、加速图形端口或超传输链路)耦合到内存桥105;在一个实施例中,并行处理子系统112是将像素传送到显示设备110的图形子系统,显示设备110可以是任何传统的阴极射线管、液晶显示器、发光二极管显示器等。系统盘114还连接到I/O桥107,并且可以配置成存储内容和应用程序以及数据,以供CPU 102和并行处理子系统112使用。系统盘114为应用程序和数据提供非易失性存储,并且可以包括固定的或可移除的硬盘驱动器、闪存设备和CD-ROM(光盘只读存储器)、DVD-ROM(数字多功能盘-ROM)、蓝光、HD-DVD(高清晰度DVD)或其他磁、光或固态存储设备。
交换机116提供I/O桥107与其他组件(诸如网络适配器118和各种插入卡120和121)之间的连接。其他组件(未明确示出),包括通用串行总线(USB)或其他端口连接、光盘(CD)驱动器、数字通用盘(DVD)驱动器、胶片记录设备等,也可以连接到I/O桥107。图1所示的各种通信路径,包括具体命名的通信路径106和113,可以使用任何合适的协议来实现,例如PCI Express、AGP(加速图形端口)、超传输或任何其他总线或一个或更多个点对点通信协议,并且不同设备之间的连接可以使用本领域中已知的不同的协议。
在一个实施例中,并行处理子系统112包含针对图形和视频处理优化的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一实施例中,并行处理子系统112包含针对通用处理而优化的电路,同时保留下面的计算架构,这将在本文中更详细地描述。在又一个实施例中,并行处理子系统112可以与单个子系统中的一个或更多个其他系统元件集成,例如加入内存桥105、CPU 102和I/O桥107以形成片上系统(SoC),也如下面结合图3B更详细地描述的。
应当理解,本文所示的系统是说明性的,并且可以进行变化和修改。可以根据需要修改连接拓扑,包括桥的数量和布置、CPU 102的数量以及并行处理子系统112的数量。例如,在一些实施例中,系统内存104直接连接到CPU 102而不是通过桥,并且其他设备经由内存桥105和CPU 102与系统内存104通信。在其他替代拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU 102,而不是连接到内存桥105。在其他实施例中,I/O桥107和内存桥105可以集成到单个芯片中,而不是作为一个或更多个分立器件存在。大型实施例可以包括两个或更多个CPU 102和两个或更多个并行处理子系统112。本文示出的特定组件是可选的;例如,可能支持任何数量的插入卡或外围设备。在一些实施例中,消除了交换机116,并且网络适配器118和插入卡120、121直接连接到I/O桥107。
图2示出了根据各个实施例的并行处理子系统112。如图所示,并行处理子系统112包括一个或更多个并行处理单元(PPU)202,每个并行处理单元(PPU)202耦合到本地并行处理(PP)存储器204。通常,并行处理子系统包括U个PPU,其中U≥1(此处,类似对象的多个实例用标识对象的附图标记和标识所需实例的带括号的数字表示)。PPU 202和并行处理存储器204可以使用一个或更多个集成电路设备来实现,例如可编程处理器、专用集成电路(ASIC)或存储器设备,或任何其他技术上可行的方式。
再次参考图1以及图2,在一些实施例中,并行处理子系统112中的一些或所有PPU202是具有渲染管线的图形处理器,其可被配置为执行与从图形数据生成像素数据相关的各种操作,所述图形数据由CPU 102和/或系统内存104经由内存桥105和第二通信路径113提供,其与本地并行处理存储器204(可以用作包括例如常规帧缓冲器的图形存储器)交互以存储和更新像素数据,将像素数据传送到显示设备110等。在一些实施例中,并行处理子系统112可以包括作为图形处理器操作的一个或更多个PPU 202以及用于通用计算的一个或更多个其他PPU 202。PPU可以相同的或不同的,并且每个PPU可以具有专用的并行处理存储器设备或者没有专用的并行处理存储器设备。并行处理子系统112中的一个或更多个PPU202可以将数据输出到显示设备110,或者并行处理子系统112中的每个PPU 202可以将数据输出到一个或更多个显示设备110。
在操作中,CPU 102是计算机系统100的主处理器,控制和协调其他系统组件的操作。特别地,CPU 102发布控制PPU 202的操作的命令。在一些实施例中,CPU 102将每个PPU202的命令流写入可位于系统内存104、并行处理存储器204或CPU 102和PPU 202都可访问的另一个存储位置中的数据结构(未在图1或图2中明确示出)。指向每个数据结构的指针被写入推送缓冲器(pushbuffer)以启动数据结构中的命令流的处理。PPU 202从一个或更多个推送缓冲器读取命令流,然后相对于CPU 102的操作异步地执行命令。可以由应用程序经由设备驱动器103为每个推送缓冲器指定执行优先级,以控制不同推送缓冲器的调度。
现在回头参考图2以及图1,每个PPU 202包括I/O(输入/输出)单元205,其经由通信路径113与计算机系统100的其余部分通信,通信路径113连接到内存桥105(或者,在一个替代实施例中,直接连接到CPU 102)。PPU 202与计算机系统100的其余部分的连接也可以改变。在一些实施例中,并行处理子系统112被实现为可以插入计算机系统100的扩展槽中的插入卡。在其他实施例中,PPU 202可以与总线桥(诸如内存桥105或I/O桥107)一起集成在单个芯片上。在其他实施例中,PPU 202的一些或所有元件可以与CPU 102一起集成在单个芯片上。
在一个实施例中,通信路径113是PCI Express链路,其中专用通道被分配给每个PPU 202,如本领域中已知的。也可以使用其他通信路径。I/O单元205生成用于在通信路径113上传输的分组(或其他信号),并且还从通信路径113接收所有传入分组(或其他信号),将传入分组引导到PPU 202的适当组件。例如,与处理任务相关的命令可以被引导到主机接口206,而与存储器操作有关的命令(例如,从并行处理存储器204读取或写入到并行处理存储器204)可以被引导到存储器交叉开关单元210。主机接口206读取每个推送缓冲器并将存储在推送缓冲器中的命令流输出到前端212。
每个PPU 202有利地实现高度并行的处理架构。如详细所示,PPU 202(0)包括处理集群阵列230,其包括数量为C个通用处理集群(GPC)208,其中C≥1。每个GPC 208能够并发地执行大量(例如,数百或数千个)线程,其中每个线程都是程序的实例。在各种应用中,可以分配不同的GPC 208用于处理不同类型的程序或用于执行不同类型的计算。GPC 208的分配可以根据每种类型的程序或计算产生的工作量而变化。
GPC 208从任务/工作单元207内的工作分配单元接收要执行的处理任务。工作分配单元接收指向处理任务的指针,该处理任务被编码为任务元数据(TMD)并存储在存储器中。指向TMD的指针包括在命令流中,该命令流被存储为推送缓冲器并由前端单元212从主机接口206接收。可被编码为TMD的处理任务包括要处理的数据的索引,以及定义如何处理数据(例如,要执行什么程序)的状态参数和命令。任务/工作单元207从前端212接收任务,并确保在启动每个TMD指定的处理之前将GPC 208配置为有效状态。可以为用于调度处理任务的执行的每个TMD指定优先级。处理任务也可以从处理集群阵列230接收。可选地,TMD可以包括控制TMD是否被添加到处理任务列表(或指向处理任务的指针的列表)的头部或尾部的参数,从而提供对优先级的另一级控制。
存储器接口214包括数量为D个分区单元215,每个分区单元215直接耦合到并行处理存储器204的一部分,其中D≥1。如图所示,分区单元215的数量通常等于动态随机存取存储器(DRAM)220的数量。在其他实施例中,分区单元215的数量可以不等于存储器设备的数量。本领域普通技术人员将理解,DRAM 220可以用其他合适的存储设备代替,并且可以是一般的常规设计。因此省略详细描述。渲染目标(诸如帧缓冲器或纹理映射)可以跨DRAM 220存储,允许分区单元215并行地写入每个渲染目标的部分,以有效地使用并行处理存储器204的可用带宽。
GPC 208中的任何一个可以处理要写入并行处理存储器204内的任何DRAM 220的数据。交叉开关单元210被配置为将每个GPC 208的输出路由到任何分区单元215的输入,或路由到另一个GPC 208用于进一步处理。GPC 208通过交叉开关单元210与存储器接口214通信,以从各种外部存储器设备读取或写入各种外部存储器设备。在一个实施例中,交叉开关单元210具有到存储器接口214的连接,以与I/O单元205通信,以及到本地并行处理存储器204的连接,从而使得不同GPC 208内的处理核能够与系统内存104或与其他不是PPU 202本地的存储器通信。在图2所示的实施例中,交叉开关单元210直接与I/O单元205连接。交叉开关单元210可以使用虚拟信道来分离GPC 208和分区单元215之间的业务流。
此外,GPC 208可以被编程为执行与各种各样的应用程序有关的处理任务,包括但不限于线性和非线性数据变换,视频和/或音频数据的过滤,建模操作(例如,应用物理规律以确定对象的位置、速度和其他属性),图像渲染操作(例如,曲面细分着色器、顶点着色器、几何着色器和/或像素着色器程序)等。PPU 202可以将数据从系统内存104和/或本地并行处理存储器204传输到内部(片上)存储器,处理数据,并将结果数据写回系统内存104和/或本地并行处理存储器204,其中这样的数据可以由其他系统组件访问,包括CPU 102或另一个并行处理子系统112。
PPU 202可以具有任何数量的本地并行处理存储器204,不包括本地存储器,并且可以以任何组合使用本地存储器和系统内存。例如,PPU 202可以是统一存储器架构(UMA)实施例中的图形处理器。在这样的实施例中,将提供很少或不提供专用图形(并行处理)存储器,并且PPU 202将专门或几乎专门地使用系统内存。在UMA实施例中,PPU 202可以集成到桥芯片或处理器芯片中,或者作为具有高速链路(例如,PCI Express)的分立芯片提供,高速链路经由桥芯片或其他通信手段将PPU 202连接到系统内存。
如上所述,任何数量的PPU 202可以包括在并行处理子系统112中。例如,可以在单个插入卡上提供多个PPU 202,或者可以将多个插入卡连接到通信路径113,或者,一个或更多个PPU 202可以集成到桥芯片中。多PPU系统中的PPU 202可以彼此相同或不同。例如,不同的PPU 202可具有不同数量的处理核、不同数量的本地并行处理存储器等等。在存在多个PPU 202的情况下,那些PPU可以并行操作,以比单个PPU 202可能的更高吞吐量处理数据。包含一个或更多个PPU 202的系统可以以各种配置和形式因子实现,包括台式机、笔记本电脑或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等。
图3A是根据各个实施例的图2的PPU 202之一内的分区单元215的框图。如图所示,分区单元215包括L2高速缓存350、存储器控制器355和光栅操作单元(ROP)360。L2高速缓存350是读/写高速缓存,其被配置为执行从交叉开关单元210和ROP 360接收的加载和存储操作。由L2高速缓存350将读取错过和紧急写回请求输出到存储器控制器355以进行处理。还将脏(dirty)更新发送到存储器控制器355以进行机会处理。存储器控制器355直接与DRAM220接口,输出读取和写入请求以及接收从DRAM 220读取的数据。存储器控制器355也可以在SoC架构中实现,如下面结合图3B更详细地描述的。
在图形应用中,ROP 360是执行光栅操作(例如,模板测试、z测试、混合等)的处理单元,并输出像素数据作为经处理的图形数据以存储在图形存储器中。在一些实施例中,ROP 360包括在每个GPC 208内而不是分区单元215中,并且通过交叉开关单元210发送像素读取和写入请求而不是像素片段数据。
经处理的图形数据可以显示在显示设备110上或者被路由以供CPU102或并行处理子系统112内的处理实体之一进一步处理。每个分区单元215包括ROP 360以便分配处理光栅操作。在一些实施例中,ROP 360可以被配置为压缩写入存储器的z数据或颜色数据,以及解压缩从存储器读取的z数据或颜色数据。
图3B示出了根据各个实施例的可以实现图3A的存储器控制器的替代系统。如图所示,系统300包括图1的CPU 102、图2的PPU 202和片上系统(SoC)客户端302。SoC客户端302可以包括编码器、解码器、显示器、相机和其他设备。CPU 102、PPU 202和SoC客户端302被耦合到存储器控制器355,存储器控制器355被配置为将各种类型的存储器事务传输到存储器控制器355。作为响应,存储器控制器355访问存储在DRAM 220中的数据。例如,CPU 102可以将一个或更多个写入事务发送到存储器控制器355。作为响应,存储器控制器355可以将数据写入DRAM 220。类似地,CPU 102可以将一个或更多个读取事务发送到存储器控制器355。作为响应,存储器控制器355可以从DRAM 220读取数据。
通常参考图3A-图3B,存储器控制器355可以以这些图中所示的任一配置来实现,以提供对DRAM 220的访问。存储器控制器355执行各种操作以协调存储器事务的执行,以改善存储器访问性能,如下面结合图4-图7更详细描述的。
存储器控制器配置为改进存储器访问
图4是根据各个实施例的图3A-图3B的存储器控制器的更详细的图示。如图所示,存储器控制器355包括事务队列400、ECC高速缓存410、激活仲裁器420、方向仲裁器430、事务仲裁器440、命令发布450和ECC命令调度器460。事务队列400耦合到激活仲裁器420、方向仲裁器430和事务仲裁器440。激活仲裁器420耦合到命令发布450。方向仲裁器430耦合到激活仲裁器420。事务仲裁器440耦合到命令发布450和ECC命令调度器460。命令发布450经由命令/数据总线452耦合到DRAM 220。ECC命令调度器460耦合到ECC高速缓存410。
事务队列400被配置为对写入事务和读取事务进行排队。写入事务涉及要写入DRAM 220的正常系统数据,并且读取事务涉及要从DRAM 220读取的正常系统数据。
事务仲裁器440从事务队列400获得写入事务,并使命令发布450在写入回合期间向DRAM 220发布那些写入事务。ECC命令调度器460在写入回合期间生成与那些写入事务相对应的ECC写入事务。ECC写入事务指定与要写入DRAM 220的系统数据相关联的ECC数据。如本文所引用的,“写入回合”是当写入事务和ECC写入事务被调度用于执行时的间隔。
在给定的写入回合期间,事务仲裁器440调度要执行的给定写入事务,并且ECC命令调度器460调度要执行的相应ECC写入事务。作为响应,DRAM 220将与给定写入事务相关联的写入数据存储到给定存储器页面,并将与相应ECC写入事务相关联的ECC数据存储到该同一存储器页面。该方法在本领域中可以称为“内联ECC”。在一个实施例中,可以为ECC数据分配每个存储器页面的一部分,并且可以为正常系统数据分配每个存储器页面的剩余部分。
事务仲裁器440从事务队列400获得读取事务,并使命令发布450在读取回合期间向DRAM 220发布那些读取事务。ECC命令调度器460在读取回合期间生成与那些读取事务相对应的ECC读取事务。ECC读取事务指定与要从DRAM 220读取的系统数据相关联的ECC数据。如本文所述,“读取回合”是当读取事务和ECC读取事务被调度用于执行时的间隔。
在给定的读取回合期间,ECC命令调度器460调度给定的ECC读取事务以从DRAM220的相关存储器页面读取ECC数据,并且事务仲裁器440然后调度相应的读取事务,以从DRAM 220的该同一存储器页面读取数据。如本领域中已知的,ECC数据可用于验证读取数据。
方向仲裁器430分析事务队列400并确定是否应发生写入回合或读取回合。方向仲裁器430基于存储在事务队列400中的事务来实现回合策略,以在写入回合和读取回合之间交替。回合策略指示给定回合结束和后续回合开始的特定条件。激活仲裁器420将激活命令发送到DRAM 220,以准备给定的写入回合或给定的读取回合。
ECC写入事务通常是部分写入事务,因此可能导致显着的延时。事务仲裁器440和ECC命令调度器460有时可以通过交错写入事务和ECC写入事务来在写入回合期间掩蔽该延时。当有足够的写入事务可用并且有足够的命令/数据总线452的存储体打开以服务那些写入事务时,事务仲裁器440和ECC命令调度器460可以以这种方式掩蔽延时。然而,当写入回合快结束时,可能没有足够的写入事务可用于与任何剩余的ECC写入事务交错,并且没有足够的命令/数据总线452的存储体是打开的。因此,必须延长写入回合,直到剩余的ECC写入事务完成。在此期间,命令/数据总线452未得到充分利用。下面结合图5更详细地描述这些问题。
为了解决上述问题,事务仲裁器440在写入期间分析事务队列400并确定何时没有足够的写入事务可用于掩蔽与任何剩余的ECC写入事务相关联的延时。然后,事务仲裁器440激活ECC高速缓存410并使ECC命令调度器460高速缓存剩余的ECC写入事务。然后,事务仲裁器440可以启动读取回合而无需等待这些剩余的ECC写入事务完成。在读取回合期间,目标为与高速缓存的ECC写入事务相关联的相同存储器空间的任何ECC读取事务从ECC高速缓存410被服务。在随后的写入回合期间,高速缓存的ECC写入事务被优先,以在写入回合的开始附近发生,并且因此,可以与写入事务交错,从而掩蔽与这些ECC写入事务相关联的延时。下面结合图6更详细地描述该方法。
示例性总线活动图
图5是根据各个实施例的总线活动图,其示出了ECC写入事务如何降低性能。如图所示,总线活动图500指示在写入回合510和随后的读取回合520期间在命令/数据总线452的存储体B0至B4上发生的各种操作。这些操作包括写入事务、ECC写入事务、激活、ECC读取事务以及读取事务。
如上所述,ECC写入事务可能导致显着的延时。出现这种延时有两个原因。首先,在先前的写入事务完成之后,不能立即发生给定的ECC写入事务。给定的ECC写入事务只能在总线活动图500中示出为D0的最小延迟之后开始。其次,在ECC写入事务完成之后,不能立即发生跟随给定ECC写入事务的激活。激活只能在总线活动图500中示出为D1的最小延迟之后开始。
当许多存储体打开并且写入事务可以与给定的ECC写入事务交错时,可以掩蔽与给定ECC写入事务相关联的延迟。例如,与存储体B0相关联的延迟D0和D1被存储体B3和B4上发生的写入事务掩蔽。
然而,在写入回合510结束时,许多写入事务已经完成并且相应的存储体可能被关闭。因此,写入事务可能不可用于掩蔽与任何剩余ECC写入事务相关联的延时。例如,不能掩蔽在存储体B3和B4上发生的ECC写入事务。在这种情况下,出现气泡520,因为在存储体B3和B4上发生的ECC写入事务导致写入回合510被延长,并且在此期间命令/数据总线452未被充分利用。气泡通常限制命令/数据总线452的性能。事务仲裁器440和ECC命令调度器460通过下面结合图6描述的方法减轻由回合结束时ECC写入事务引起的气泡。
图6是根据各个实施例的总线活动图,其示出了高速缓存ECC写入事务如何可以改善性能。如图所示,总线活动图600指示在写入回合610、后续读取回合620和随后的写入回合630期间在命令/数据总线452的存储体B0至B4上发生的各种操作。
在写入回合610期间,事务仲裁器440确定没有足够的写入事务可用于掩蔽与存储体B3和B4上的ECC写入事务相关联的延时(先前在图5的写入回合510中示出)。作为响应,事务仲裁器440将这些ECC写入事务推迟到在写入回合630期间发生,如图所示。在这样做时,事务仲裁器440激活ECC高速缓存410,并且ECC命令调度器460将ECC写入事务发送到ECC高速缓存410,而不是发布那些事务以供执行。
利用这种方法,不需要延长写入回合610以适应回合结束时ECC写入事务,并且因此读取回合620可以比图5的读取回合520更早地开始。目标为与高速缓存的ECC写入事务相关联的存储器空间的任何ECC读取事务都由ECC高速缓存410服务。一旦读取回合620完成,事务仲裁器440在写入回合630期间使高速缓存的ECC写入事务优先,并且将存储体B3和B4上的这些事务与存储体B0和B1上的其他写入事务交错。这样,可以有效地掩蔽与这些ECC写入事务相关联的延时,并且可以减少或避免命令/数据总线452上的气泡。
在一个实施例中,掩蔽与给定ECC写入事务相关联的延时所需的写入事务的数量与执行ECC写入事务所需的时钟周期的数量成比例。例如,当给定的ECC写入事务在N个时钟周期内完成时,则需要N个写入事务来掩蔽与给定ECC写入事务相关联的延时。在一个实施例中,事务仲裁器440可以将ECC写入事务与来自不同存储体组的写入事务交错。
推迟ECC写入事务以提高性能
图7是根据各个实施例的用于高速缓存ECC写入事务以提高性能的方法步骤的流程图。尽管结合图1-图6的系统描述了该方法步骤,但是本领域技术人员将理解,被配置为以任何顺序执行方法步骤的任何系统都落入各个实施例的范围内。
如图所示,方法700开始于步骤702,其中图4的事务仲裁器440调度写入事务,并且ECC命令调度器460生成并调度ECC写入事务。事务仲裁器440发布写入事务,并且ECC命令调度器460在写入回合期间调度ECC写入事务。在写入回合期间,事务仲裁器440从事务高速缓存400中检索写入事务,并且在一些情况下,从先前高速缓存的ECC写入事务中检索写入事务。
在步骤704,事务仲裁器440确定是否有足够的写入事务可用于掩蔽ECC写入事务延时。ECC写入事务延时的发生是因为ECC写入事务不能在先前的写入事务之后立即执行,并且在ECC写入事务之后不能立即执行后续的激活操作。这些延时通常不能在写入回合结束时被掩蔽。
如果在步骤704,事务仲裁器440确定有足够的写入事务可用,则方法700返回到步骤702,并且事务仲裁器440继续调度写入事务,并且ECC命令调度器460继续调度ECC写入事务。事务仲裁器440还优先调度任何高速缓存的ECC写入事务。或者,如果在步骤704,事务仲裁器440确定没有足够的写入事务可用,则方法700前进到步骤706。
在步骤706,事务仲裁器440激活ECC高速缓存410以存储任何剩余的ECC写入事务,直到后续的写入回合为止。ECC高速缓存410的大小为适于容纳通常在写入回合结束时剩余的ECC写入事务的数量。ECC高速缓存410被配置为服务其目标为与任何高速缓存的ECC写入事务相同的存储器空间的ECC读取请求。
在步骤708,方向仲裁器430启动读取回合。方向仲裁器430基于存储在事务队列400中的事务的数量和/或优先级等来实现回合策略。在一个实施例中,回合策略可以指示当阈值数量的读取事务驻留在事务队列400中时,应当发生从写入回合到读取回合的转换。
在步骤710,响应于方向仲裁器430,事务仲裁器440启动读取回合并调度读取事务,而ECC命令调度器460调度相应的ECC读取事务。这样做,事务仲裁器440发布读取事务,并且ECC命令调度器460在命令/数据总线452上发布ECC读取事务。目标为ECC数据的ECC读取事务通常在目标为相应读取数据的读取事务之前被调度。然后,基于ECC数据,可以根据需要验证和/或校正读取数据。
在步骤712,事务仲裁器440确定是否有任何ECC读取事务的目标为与高速缓存的ECC写入事务相关联的存储器空间。如果事务仲裁器440识别出目标为与高速缓存的ECC写入事务相关联的存储器空间的ECC读取事务,则该方法前进到步骤714。在步骤714,事务仲裁器440使ECC高速缓存410基于高速缓存的ECC写入事务服务ECC读取事务。在一个实施例中,高速缓存的ECC写入事务可以包括响应于ECC读取事务而需要提供的ECC数据。如果在步骤712,事务仲裁器440并未识别出目标为与高速缓存的ECC写入事务相关联的存储器空间的任何ECC读取事务,则该方法跳过步骤714并前进到步骤716。在ECC数据未被高速缓存的情况下,则ECC数据可以也可以从DRAM 220读取,可能延迟后续写入回合的启动。
在步骤716,方向仲裁器430基于上面结合步骤708讨论的回合策略发起写入回合。在一个实施例中,回合策略可以指示当阈值数量的写入事务驻留在事务队列400中时,应当发生从读取回合到写入回合的转变。在读取回合结束之后,事务仲裁器440可以停止高速缓存ECC写入事务。
在步骤718,事务仲裁器440当在写入回合期间发布写入事务时使高速缓存的ECC写入事务优先。然后,高速缓存的ECC写入事务可以与命令/数据总线452的不同存储体上的其他写入事务交错,从而掩蔽与这些ECC写入事务相关联的延时。一旦已经调度了所有高速缓存的ECC写入事务,事务仲裁器440就可以停用ECC高速缓存410,然后连续地确定是否有足够的写入事务可用于掩蔽与ECC写入事务相关联的延时。在一个实施例中,掩蔽与给定ECC写入事务相关联的延时所需的写入事务的数量与执行ECC写入事务所需的时钟周期的数量成比例。在另一个实施例中,事务仲裁器440可以将ECC写入事务与来自不同存储体组的写入事务交错。
总之,事务仲裁器跨命令/数据总线调度存储器事务。在写入回合期间,事务仲裁器确定是否有足够的写入事务可用于与ECC写入事务交错,以便掩蔽与那些ECC写入事务相关联的延时。如果没有足够的写入事务可用,则事务仲裁器激活高速缓存以存储剩余的ECC写入事务,从而允许随后的读取回合开始。在随后的读取回合期间,如果事务仲裁器调度对应于高速缓存的ECC写入事务的ECC数据的ECC读取事务,则从高速缓存服务ECC读取事务。在随后的写入回合期间,事务仲裁器优先调度高速缓存的ECC写入事务,从而允许那些ECC写入事务与命令/数据总线上的其他写入事务交错。
所公开的存储器控制器的一个实现包括执行一系列步骤的事务仲裁器。在第一步骤中,事务仲裁器确定没有足够的写入事务可用于掩蔽与ECC写入事务相关联的延时。事务仲裁器通过确定少于N个写入事务被排队来执行该步骤,其中ECC写入事务需要N个时钟周期来完成。在第二步骤中,事务仲裁器阻止ECC写入事务被调度以执行。事务仲裁器通过高速缓存该ECC写入事务而不是调度该ECC写入事务以在第一写入回合期间执行来执行该步骤。在第三步骤中,事务仲裁器确定在第二写入回合期间有足够的写入事务可用于掩蔽与ECC写入事务相关联的延时。事务仲裁器通过确定在第二写入回合期间至少N个写入事务被排队来执行该步骤。在第四步骤中,事务仲裁器调度ECC写入事务以在第二写入回合期间执行。通过执行这四个步骤和相应的子步骤,事务仲裁器减少了由被调度以在写入回合结束时执行的ECC写入事务引起的总线气泡的发生,从而允许存储器子系统更有效地操作。
所公开的技术相对于现有技术的至少一个技术优点是,通过将那些ECC写入事务推迟到后续回合,可以继续掩蔽与回合结束时ECC写入事务相关联的延时。结果是,在写入回合之后必须延迟的读取回合更少,并且可以掩蔽更多ECC写入事务延时,这增加了存储器访问速度和整体性能。所公开技术的另一技术优点是推迟的ECC写入事务可以与其他写入事务交错,以增加命令/数据总线利用率。因此,可以实现所公开的技术以减少命令/数据总线上气泡的发生并提供命令/数据总线性能。这些技术优势代表了相对于现有技术方法的一个或更多个技术进步。
1.一些实施例包括一种计算机实现的方法,包括:确定在写入事务被调度以执行的第一时间段期间,没有足够数量的待处理写入事务可用于掩蔽与第一纠错码(ECC)写入事务相关联的一个或更多个延时;响应于确定没有足够数量的待处理写入事务可用,阻止所述第一ECC写入事务在所述第一时间段期间被调度以执行;确定在写入事务被调度以执行的第二时间段期间,有足够数量的待处理写入事务可用于掩蔽一个或更多个延时;以及响应于确定有足够数量的待处理写入事务可用,在所述第二时间段期间调度所述第一ECC写入事务以执行。
2.如条款1所述的计算机实现的方法,其中阻止所述第一ECC写入事务被调度以执行包括:在所述第一时间段期间以及在读取事务被调度以执行的后续时间段期间,高速缓存所述第一ECC写入事务。
3.如条款1-2中任一项所述的计算机实现的方法,还包括:确定第一读取事务以与所述第一ECC写入事务相关联的存储器页面为目标;以及使用所述第一ECC写入事务的高速缓存版本服务所述第一读取事务。
4.如条款1-3中任一项所述的计算机实现的方法,在所述第二时间段期间,调度一个或更多个写入事务以使用与命令/数据总线相关联的第一存储体来执行,其中调度所述第一ECC写入事务以执行包括:在所述第二时间段期间,调度所述第一ECC写入事务以使用与所述命令/数据总线相关联的第二存储体来执行。
5.如条款1-4中任一项所述的计算机实现的方法,其中所述第一ECC写入事务在所述第二时间段期间发生的N个时钟周期期间执行,并且所述一个或更多个写入事务包括至少N个写入事务,其中N包括正整数值。
6.如条款1-5中任一项所述的计算机实现的方法,其中所述第一ECC写入事务与在所述第一时间段期间写入第一存储器页面的写入数据相关联。
7.如条款1-6中任一项所述的计算机实现的方法,其中在所述第二时间段期间执行所述第一ECC写入事务,以将与所述写入数据相关联的ECC数据写入所述第一存储器页面。
8.如条款1-7中任一项所述的计算机实现的方法,其中确定有足够数量的待处理写入事务可用包括:确定在所述第二时间段期间调度与第一组存储体相关联的至少第一数量的待处理写入事务以执行,并且在所述第二时间段期间调度与第二组存储体相关联的至少第二数量的待处理写入事务以执行。
9.如条款1-8中任一项所述的计算机实现的方法,其中在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行包括:阻止在所述第一时间段期间在所述第一ECC事务在其上已被调度以执行的命令/数据总线上形成气泡。
10.如条款1-9中任一项所述的计算机实现的方法,其中在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行,增加了在所述第一时间段和所述第二时间段期间对命令/数据总线的利用。
11.一些实施例包括一种系统,包括:存储器控制器,其通过执行以下步骤来调度写入事务以执行:确定在写入事务被调度以执行的第一时间段期间,没有足够数量的待处理写入事务能够用于掩蔽与第一纠错码(ECC)写入事务相关联的一个或更多个延时;响应于确定没有足够数量的待处理写入事务可用,在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行;确定在写入事务被调度以执行的第二时间段期间,有足够数量的待处理写入事务能够用于掩蔽一个或更多个延时;以及响应于确定有足够数量的待处理写入事务可用,在所述第二时间段期间调度所述第一ECC写入事务以执行。
12.如条款11所述的系统,其中所述存储器控制器通过在所述第一时间段期间以及在读取事务被调度以执行的后续时间段期间高速缓存所述第一ECC写入事务,来阻止所述第一ECC写入事务被调度以执行。
13.如条款11-12中任一项所述的系统,其中所述存储器控制器执行以下附加步骤:确定第一读取事务以与所述第一ECC写入事务相关联的存储器页面为目标;以及使用所述第一ECC写入事务的高速缓存版本服务所述第一读取事务。
14.如条款11-13中任一项所述的系统,其中所述存储器控制器执行以下附加步骤:在所述第二时间段期间,调度一个或更多个写入事务以使用与命令/数据总线相关联的第一存储体来执行,其中调度所述第一ECC写入事务以执行包括:在所述第二时间段期间,调度所述第一ECC写入事务以使用与命令/数据总线相关联的第二存储体来执行。
15.如条款11-14中任一项所述的系统,其中所述第一ECC写入事务在所述第二时间段期间发生的N个时钟周期期间执行,并且所述一个或更多个写入事务包括至少N个写入事务,其中N包括正整数值。
16.如条款11-15中任一项所述的系统,其中所述第一ECC写入事务与在所述第一时间段期间写入第一存储器页面的写入数据相关联,并且其中在所述第二时间段期间执行所述第一ECC写入事务,以将与所述写入数据相关联的ECC数据写入所述第一存储器页面。
17.如条款11-16中任一项所述的系统,其中所述存储器控制器通过确定在所述第二时间段期间调度与第一组存储体相关联的至少第一数量的待处理写入事务以执行,并且在所述第二时间段期间调度与第二组存储体相关联的至少第二数量的待处理写入事务以执行,来确定有足够数量的待处理写入事务可用。
18.如条款11-17中任一项所述的系统,其中所述存储器控制器阻止在所述第一时间段期间所述第一ECC写入事务被调度以执行,以阻止在所述第一时间段期间在所述第一ECC事务在其上已被调度以执行的命令/数据总线上形成气泡。
19.如条款11-18中任一项所述的系统,其中所述存储器控制器阻止在所述第一时间段期间所述第一ECC写入事务被调度以执行,增加了在所述第一时间段和所述第二时间段期间对命令/数据总线的利用。
20.一些实施例包括一种子系统,包括:高速缓存,其存储存储器事务;以及事务仲裁器,其执行以下步骤:确定在写入事务被调度以执行的第一时间段期间,没有足够数量的待处理写入事务能够用于掩蔽与第一纠错码(ECC)写入事务相关联的一个或更多个延时;响应于确定没有足够数量的待处理写入事务可用,将所述第一ECC写入事务存储在所述高速缓存中,以在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行;确定在写入事务被调度以执行的第二时间段期间,有足够数量的待处理写入事务能够用于掩蔽一个或更多个延时;以及响应于确定有足够数量的待处理写入事务可用,在所述第二时间段期间调度所述第一ECC写入事务以执行。
任何权利要求中所述的任何权利要求要素和/或本申请中描述的任何要素的任何和所有组合,都以任何方式落入本实施例和保护的预期范围内。
已经出于说明的目的给出了对各个实施例的描述,但是并不旨在穷举或限制于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。
本实施例的各方面可以体现为系统、方法或计算机程序产品。因此,本公开的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例(其通常在本文中可以称为“模块”或“系统”)的形式。此外,本公开的各方面可以采取体现在一个或更多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读程序代码。
可以利用一个或更多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或者前述的任何合适的组合。计算机可读存储介质的更具体示例(非穷举列出)将包括以下内容:具有一条或更多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或任何上述的适当组合。在本文件的上下文中,计算机可读存储介质可以是任何有形介质,其可以包含或存储程序以供指令执行系统、装置或设备使用或与其结合使用。
以上参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各方面。应当理解,流程图和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器。该指令当通过计算机的处理器或其他可编程数据处理装置执行时,使得能够实现流程图和/或框图的一个或更多个框中指定的功能/动作。这些处理器可以是但不限于通用处理器、专用处理器、应用程序专用处理器或现场可编程门阵列。
附图中的流程图和框图示出了根据本公开的各个实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示模块、片段或代码的部分,其包括用于实现指定的逻辑功能的一个或更多个可执行指令。还应注意,在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图示出的每个框以及框图和/或流程图示出中的框的组合可以由执行特定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
虽然前述内容针对本公开的实施例,但是可以在不脱离本公开的基本范围的情况下设计本公开的其他和进一步的实施例,并且本公开的范围由所附权利要求确定。
Claims (20)
1.一种计算机实现的方法,包括:
确定在写入事务被调度以执行的第一时间段期间,没有足够数量的待处理写入事务能够用于掩蔽与第一纠错码(ECC)写入事务相关联的一个或更多个延时;
响应于确定没有足够数量的待处理写入事务可用,在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行;
确定在写入事务被调度以执行的第二时间段期间,有足够数量的待处理写入事务能够用于掩蔽一个或更多个延时;以及
响应于确定有足够数量的待处理写入事务可用,在所述第二时间段期间调度所述第一ECC写入事务以执行。
2.如权利要求1所述的计算机实现的方法,其中阻止所述第一ECC写入事务被调度以执行包括:在所述第一时间段期间以及在读取事务被调度以执行的后续时间段期间,高速缓存所述第一ECC写入事务。
3.如权利要求1所述的计算机实现的方法,还包括:
确定第一读取事务以与所述第一ECC写入事务相关联的存储器页面为目标;以及
使用所述第一ECC写入事务的高速缓存版本服务所述第一读取事务。
4.如权利要求1所述的计算机实现的方法,还包括:在所述第二时间段期间,调度一个或更多个写入事务以使用与命令/数据总线相关联的第一存储体来执行,其中调度所述第一ECC写入事务以执行包括:在所述第二时间段期间,调度所述第一ECC写入事务以使用与所述命令/数据总线相关联的第二存储体来执行。
5.如权利要求4所述的计算机实现的方法,其中所述第一ECC写入事务在所述第二时间段期间发生的N个时钟周期期间执行,并且所述一个或更多个写入事务包括至少N个写入事务,其中N包括正整数值。
6.如权利要求1所述的计算机实现的方法,其中所述第一ECC写入事务与在所述第一时间段期间写入第一存储器页面的写入数据相关联。
7.如权利要求6所述的计算机实现的方法,其中在所述第二时间段期间执行所述第一ECC写入事务,以将与所述写入数据相关联的ECC数据写入所述第一存储器页面。
8.如权利要求1所述的计算机实现的方法,其中确定有足够数量的待处理写入事务可用包括:确定在所述第二时间段期间调度与第一组存储体相关联的至少第一数量的待处理写入事务以执行,并且在所述第二时间段期间调度与第二组存储体相关联的至少第二数量的待处理写入事务以执行。
9.如权利要求1所述的计算机实现的方法,其中在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行包括:阻止在所述第一时间段期间在所述第一ECC事务在其上已被调度以执行的命令/数据总线上形成气泡。
10.如权利要求1所述的计算机实现的方法,其中在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行,增加了在所述第一时间段和所述第二时间段期间对命令/数据总线的利用。
11.一种系统,包括:
存储器控制器,其通过执行以下步骤来调度写入事务以执行:
确定在写入事务被调度以执行的第一时间段期间,没有足够数量的待处理写入事务能够用于掩蔽与第一纠错码(ECC)写入事务相关联的一个或更多个延时;
响应于确定没有足够数量的待处理写入事务可用,在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行;
确定在写入事务被调度以执行的第二时间段期间,有足够数量的待处理写入事务能够用于掩蔽一个或更多个延时;以及
响应于确定有足够数量的待处理写入事务可用,在所述第二时间段期间调度所述第一ECC写入事务以执行。
12.如权利要求11所述的系统,其中所述存储器控制器通过在所述第一时间段期间以及在读取事务被调度以执行的后续时间段期间高速缓存所述第一ECC写入事务,来阻止所述第一ECC写入事务被调度以执行。
13.如权利要求11所述的系统,其中所述存储器控制器执行以下附加步骤:
确定第一读取事务以与所述第一ECC写入事务相关联的存储器页面为目标;以及
使用所述第一ECC写入事务的高速缓存版本服务所述第一读取事务。
14.如权利要求11所述的系统,其中所述存储器控制器执行以下附加步骤:在所述第二时间段期间,调度一个或更多个写入事务以使用与命令/数据总线相关联的第一存储体来执行,其中调度所述第一ECC写入事务以执行包括:在所述第二时间段期间,调度所述第一ECC写入事务以使用与所述命令/数据总线相关联的第二存储体来执行。
15.如权利要求14所述的系统,其中所述第一ECC写入事务在所述第二时间段期间发生的N个时钟周期期间执行,并且所述一个或更多个写入事务包括至少N个写入事务,其中N包括正整数值。
16.如权利要求14所述的系统,其中所述第一ECC写入事务与在所述第一时间段期间写入第一存储器页面的写入数据相关联,并且其中在所述第二时间段期间执行所述第一ECC写入事务,以将与所述写入数据相关联的ECC数据写入所述第一存储器页面。
17.如权利要求14所述的系统,其中所述存储器控制器通过确定在所述第二时间段期间调度与第一组存储体相关联的至少第一数量的待处理写入事务以执行,并且在所述第二时间段期间调度与第二组存储体相关联的至少第二数量的待处理写入事务以执行,来确定有足够数量的待处理写入事务可用。
18.如权利要求11所述的系统,其中所述存储器控制器阻止在所述第一时间段期间所述第一ECC写入事务被调度以执行,以阻止在所述第一时间段期间在所述第一ECC事务在其上已被调度以执行的命令/数据总线上形成气泡。
19.如权利要求11所述的系统,其中所述存储器控制器阻止在所述第一时间段期间所述第一ECC写入事务被调度以执行,增加了在所述第一时间段和所述第二时间段期间对命令/数据总线的利用。
20.一种子系统,包括:
高速缓存,其存储存储器事务;以及
事务仲裁器,其执行以下步骤:
确定在写入事务被调度以执行的第一时间段期间,没有足够数量的待处理写入事务能够用于掩蔽与第一纠错码(ECC)写入事务相关联的一个或更多个延时;
响应于确定没有足够数量的待处理写入事务可用,将所述第一
ECC写入事务存储在所述高速缓存中,以在所述第一时间段期间阻止所述第一ECC写入事务被调度以执行;
确定在写入事务被调度以执行的第二时间段期间,有足够数量的待处理写入事务能够用于掩蔽一个或更多个延时;以及
响应于确定有足够数量的待处理写入事务可用,在所述第二时间段期间调度所述第一ECC写入事务以执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/384,614 | 2019-04-15 | ||
US16/384,614 US11093323B2 (en) | 2019-04-15 | 2019-04-15 | Performant inline ECC architecture for DRAM controller |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831404A true CN111831404A (zh) | 2020-10-27 |
Family
ID=72613732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910801524.3A Pending CN111831404A (zh) | 2019-04-15 | 2019-08-28 | 用于dram控制器的高性能内联ecc架构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11093323B2 (zh) |
CN (1) | CN111831404A (zh) |
DE (1) | DE102020108530A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461440A (zh) * | 2021-01-20 | 2022-05-10 | 沐曦集成电路(上海)有限公司 | 隐藏ecc编码延时的存储系统及方法 |
CN114840455A (zh) * | 2021-02-02 | 2022-08-02 | 辉达公司 | 存储器接口上的数据加扰技术 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12019516B2 (en) * | 2022-01-24 | 2024-06-25 | Micron Technology, Inc. | Instant write scheme with delayed parity/raid |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6772289B1 (en) * | 2001-12-17 | 2004-08-03 | Lsi Logic Corporation | Methods and apparatus for managing cached CRC values in a storage controller |
US7840876B2 (en) * | 2007-02-20 | 2010-11-23 | Qimonda Ag | Power savings for memory with error correction mode |
US8626997B2 (en) * | 2009-07-16 | 2014-01-07 | Micron Technology, Inc. | Phase change memory in a dual inline memory module |
US20110246686A1 (en) * | 2010-04-01 | 2011-10-06 | Cavanagh Jr Edward T | Apparatus and system having pci root port and direct memory access device functionality |
US8281188B2 (en) * | 2010-08-05 | 2012-10-02 | Miller Gary L | Data processing system with peripheral configuration information error detection |
US8583987B2 (en) * | 2010-11-16 | 2013-11-12 | Micron Technology, Inc. | Method and apparatus to perform concurrent read and write memory operations |
US9552175B2 (en) * | 2011-02-08 | 2017-01-24 | Diablo Technologies Inc. | System and method for providing a command buffer in a memory system |
US9612901B2 (en) * | 2012-03-30 | 2017-04-04 | Intel Corporation | Memories utilizing hybrid error correcting code techniques |
US9110809B2 (en) * | 2013-07-03 | 2015-08-18 | Nvidia Corporation | Reducing memory traffic in DRAM ECC mode |
US9367392B2 (en) * | 2014-08-01 | 2016-06-14 | Winbond Electronics Corporation | NAND flash memory having internal ECC processing and method of operation thereof |
US9787772B2 (en) * | 2015-05-19 | 2017-10-10 | Netapp, Inc. | Policy based alerts for networked storage systems |
US9354967B1 (en) * | 2015-11-30 | 2016-05-31 | International Business Machines Corporation | I/O operation-level error-handling |
KR20180127707A (ko) * | 2017-05-22 | 2018-11-30 | 에스케이하이닉스 주식회사 | 메모리 모듈 및 이의 동작 방법 |
US10282250B1 (en) * | 2017-10-16 | 2019-05-07 | Cadence Design Systems, Inc. | Apparatus and method for a coherent, efficient, and configurable cyclic redundancy check retry implementation for synchronous dynamic random access memory |
US10956262B2 (en) * | 2019-03-14 | 2021-03-23 | Micron Technology, Inc. | Deferred error code correction with improved effective data bandwidth performance |
-
2019
- 2019-04-15 US US16/384,614 patent/US11093323B2/en active Active
- 2019-08-28 CN CN201910801524.3A patent/CN111831404A/zh active Pending
-
2020
- 2020-03-27 DE DE102020108530.3A patent/DE102020108530A1/de active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461440A (zh) * | 2021-01-20 | 2022-05-10 | 沐曦集成电路(上海)有限公司 | 隐藏ecc编码延时的存储系统及方法 |
CN114461440B (zh) * | 2021-01-20 | 2022-11-04 | 沐曦集成电路(上海)有限公司 | 隐藏ecc编码延时的存储系统及方法 |
CN114840455A (zh) * | 2021-02-02 | 2022-08-02 | 辉达公司 | 存储器接口上的数据加扰技术 |
Also Published As
Publication number | Publication date |
---|---|
US11093323B2 (en) | 2021-08-17 |
DE102020108530A1 (de) | 2020-10-15 |
US20200327010A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095526B2 (en) | Technique for improving performance in multi-threaded processing units | |
US9110809B2 (en) | Reducing memory traffic in DRAM ECC mode | |
US10282803B2 (en) | State handling in a tiled architecture | |
US9489763B2 (en) | Techniques for setting up and executing draw calls | |
US10032243B2 (en) | Distributed tiled caching | |
US10002031B2 (en) | Low overhead thread synchronization using hardware-accelerated bounded circular queues | |
US9348762B2 (en) | Technique for accessing content-addressable memory | |
US10977037B2 (en) | Techniques for comprehensively synchronizing execution threads | |
US9626216B2 (en) | Graphics processing unit sharing between many applications | |
US10032246B2 (en) | Approach to caching decoded texture data with variable dimensions | |
US8928677B2 (en) | Low latency concurrent computation | |
US8539130B2 (en) | Virtual channels for effective packet transfer | |
US10489200B2 (en) | Hierarchical staging areas for scheduling threads for execution | |
US11093323B2 (en) | Performant inline ECC architecture for DRAM controller | |
US8195858B1 (en) | Managing conflicts on shared L2 bus | |
US20220121542A1 (en) | Techniques for testing semiconductor devices | |
US9594599B1 (en) | Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors | |
US8321618B1 (en) | Managing conflicts on shared L2 bus | |
US9754561B2 (en) | Managing memory regions to support sparse mappings | |
US11016802B2 (en) | Techniques for ordering atomic operations | |
US9262348B2 (en) | Memory bandwidth reallocation for isochronous traffic | |
US8570916B1 (en) | Just in time distributed transaction crediting | |
US20130152094A1 (en) | Error checking in out-of-order task scheduling | |
US20140136793A1 (en) | System and method for reduced cache mode | |
US11061571B1 (en) | Techniques for efficiently organizing and accessing compressible data |
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 |