首页> 中国专利> 数据处理装置中的动态缓存分配策略调适

数据处理装置中的动态缓存分配策略调适

摘要

本公开涉及数据处理装置中的动态缓存分配策略调适。处理数据的数据处理装置和方法被公开,根据该数据处理装置和方法,处理器单元被配置为针对存储器发出由存储器访问缓冲器缓冲和处理的写访问请求。缓存单元被配置为根据针对缓存单元定义的分配策略来缓存被访问的数据项。存储器事务被约束为按照预定存储器地址范围中的所有存储器地址(由被缓冲的写访问请求所指定的一个或多个存储器地址位于该范围内)必须由相应的写操作来写这样的方式来被执行。如果被缓冲的写访问请求不包括至少两个预定存储器地址范围中的所有存储器地址,并且缓存单元被配置为按照非写分配策略进行操作,则数据处理装置被配置为使得缓存单元随后按写分配策略进行操作。

著录项

  • 公开/公告号CN105159844A

    专利类型发明专利

  • 公开/公告日2015-12-16

    原文格式PDF

  • 申请/专利权人 ARM有限公司;

    申请/专利号CN201510290255.0

  • 申请日2015-05-29

  • 分类号G06F12/08;

  • 代理机构北京东方亿思知识产权代理有限责任公司;

  • 代理人李晓冬

  • 地址 英国剑桥

  • 入库时间 2023-12-18 12:59:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-09

    授权

    授权

  • 2017-06-23

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20150529

    实质审查的生效

  • 2015-12-16

    公开

    公开

说明书

技术领域

本发明涉及数据处理装置。更具体地,本发明涉及数据处理装置内的缓存单元的使用的调适。

背景技术

在数据处理装置中提供与处理器单元相关联的缓存单元是已知的,其中缓存单元被配置为存储由处理器单元在存储器中所访问的数据项的本地副本,从而使得如果再次需要访问那些数据项的话,则与访问被存储在存储器中的数据项相关联的延迟在很大程度上可以通过改为访问被存储在缓存中的本地副本来避免。当做出这样的到被缓存的数据项的随后访问时并且当该访问是写访问时,副本则可以在缓存中被更新并且在回写配置中像这样(“脏的”)被标记或系统可以具有透写配置(其中,对缓存中的数据项的改变被立即传播到存储器中的原始存储位置)。

在该背景下,缓存单元具有分配策略(当写失效出现时(即,当处理器单元寻求将当前未被缓存在缓存单元中的数据项写到存储器时)分配策略确定它的行为)是已知的。例如,在数据处理装置(其中,数据项的存储的可靠性是重要的因素)中,可以使用“非写分配”策略,根据该策略,当写失效出现时,使得数据项被写入目标存储器,而无需该数据项的副本被拖入缓存。另外,这样的缓存分配策略可以是额外优选的,因为用数据项填充缓存通常将涉及从存储器中取回整个缓存行并且它可以被确定来更好的避免其中相关联的附加的总线活动。

发明内容

从第一方面来看,本发明提供了一种数据处理装置,该数据处理装置包括:处理器单元,该处理器单元被配置为发出写访问请求,写访问请求指定了存储器地址和数据项,以便使得数据项被存储在存储器地址处的存储器中;缓存单元,该缓存单元被配置为根据针对缓存单元所定义的分配策略来存储来自存储器的被访问的数据项的本地副本以供由处理器单元进行随后的访问;以及存储器访问缓冲器,该存储器访问缓冲器被配置为对由处理器单元发出的一个或多个写访问请求进行缓冲,直到存储器事务触发条件被满足,然后使得关于存储器的存储器事务被启动,存储器事务包括执行一个或多个被缓冲的写访问请求,其中,存储器事务被约束为执行写操作,其中预定存储器地址范围中的所有存储器地址都通过写操作来写,由一个或多个被缓冲的写访问请求所指定的一个或多个存储器地址位于所述预定存储器地址范围内,其中,该数据处理装置被配置为当被缓冲的写访问请求不包括至少两个预定存储器地址范围内的所有存储器地址时识别访问尺寸不足条件,以及当缓存单元被配置为按照作为非写分配策略的分配策略进行操作并且访问尺寸不足条件被满足时,数据处理装置被配置为使得缓存单元随后按照作为写分配策略的分配策略进行操作,其中,根据非写分配策略,被访问的数据项的本地副本未被存储在缓存单元中,根据写分配策略,被访问的数据项的本地副本被存储在缓存单元中。

本发明认识到在某些情况下,缓存单元的非写分配策略可能不是针对缓存单元的操作的最期望的配置。更具体地,本发明的发明人已经识别到当包括存在约束的写操作的存储器事务将被执行时这样的情况可以发生,在约束中,将被写的存储器地址位于预定存储器地址范围内,该预定范围内的所有存储器地址都必须通过写操作来写。换句话说,如果写访问是对该预定存储器地址范围内的任何存储器地址被做出的,则该预定范围内的所有存储器地址都必须在写操作中被写。对于存储器事务的这种约束可能针对很多不同的原因而存在。例如,可以是被存储在存储器(其是存储事务的目标)中的数据项具有与它们一起被存储的相关联的误差校正码,并且误差校正机制的配置是被存储的误差校正码各自与具有某范围的相关联的存储器地址的很多数据项相关的情况。因此,如果该组内的任何数据项将被更新(通过写访问),则整个组需要被重写,以便用于被存储的与组相关联的误差校正码将被正确地更新。作为另一示例,对于存储器事务的该约束可能起因于存储器它本身的硬件配置,其仅允许数据项的组作为块一起被写,即使这样的块内的单独的数据项具有它们自己的单独的存储器地址。

根据本技术,数据处理装置被提供具有存储器访问缓冲器,存储器访问缓冲器在一个或多个写访问请求通过存储器事务被动作之前暂时持有(缓冲)由处理器单元发出的写访问请求。该存储器事务通过一个或多个预定条件(存储器事务触发条件)的满足来被触发,一个或多个预定条件例如可以是超时或缓冲器达到它的全部容量。缓冲为多个写访问请求提供结合的机会,并且结合来指定预定存储器地址范围内的所有存储器地址,即使每个单独的写访问请求它本身不覆盖整个范围。在这种情况下,本发明的发明人已经确定了当由存储器访问缓冲器缓冲的写访问请求不包括至少两个预定存储器地址范围内的所有存储器地址时(被称为访问尺寸不足条件),这代表有益于调适缓存单元的分配策略的情况。更具体地,当缓存单元当前正在按照非写分配策略(根据非写分配策略,对存储器中被访问的数据项的缓存不会发生)进行操作并且访问尺寸不足条件被满足时,则根据本技术,数据处理装置使得缓存单元随后使用写分配策略(根据写分配策略,被访问的数据项被缓存在缓存单元中)进行操作。

因此,在存储器事务包括寻求对不止一个预定存储器地址范围的仅一部分执行写操作的写访问请求的情况下,如果缓存单元当前正在按照定义被访问的数据项的本地副本不被存储在缓存单元中的缓存分配策略(非写分配策略)进行操作,则数据处理装置被配置为将缓存分配策略切换到写分配策略(根据写分配策略,被访问的数据项的本地副本被存储在缓存单元中)。这样的布置已经被确定为是有益的,尽管事实是(通过行填充操作)对缓存进行分配以实现写分配策略通常可能会引起系统总线(其调解存储器事务)上的额外的负担。然而,已经发现的是当访问尺寸不足条件被满足时,缓存相关数据项的好处可以被获得,而不会显著地进一步增加系统总线上的负担,这归因于必须已经被执行以便实现对指定的不止一个预定存储器地址范围的读操作(由于访问尺寸不足条件)和写操作的总线事务。

在一些实施例中,缓存单元被配置为按照透写模式(根据透写模式,随后的访问对被访问的数据项的本地副本的修改还引起对存储器中的相应的原始数据项的修改)进行操作。缓存单元的透写配置可以是优选的,这是由于这保持存储器中的数据为最新的这种方式(即,“脏的”数据未被维持在缓存中,如在回写配置的情况下)。本技术可以在被配置为按照透写模式进行操作的缓存单元的情况下发现特定的应用,因为在该配置中对缓存的使用的依赖通常被降低并且其中额外的缓存分配可以被实现,而没有显著的额外的总线事务成本,这是特别值得做的。

在一些实施例中,存储器访问缓冲器被配置为当一个或多个被缓冲的写访问请求(针对该一个或多个被缓冲的写访问请求,存储器访问事务将被执行)指定至少一个预定存储器地址范围中的存储器地址(所指定的存储器地址不包括至少一个预定存储器地址范围内的所有存储器地址)时,使得存储器访问事务包括取回由至少一个预定存储器地址范围所指示的至少一个可扩展的数据项,从而使得被缓冲的写访问请求中所指定的一个或多个数据项被合并到所取回的至少一个可扩展的数据项中,并且将经修改的至少一个可扩展的数据项写回到存储器。

因此,由于存储器事务被约束为按照预定存储器地址范围内的所有存储器地址都通过写操作被写的方式执行写操作的事实,当被缓冲的写访问请求仅指定给定预定存储器地址范围的一部分时,存储器事务请求可以按照读-修改-写操作被执行。该读-修改-写操作包括从存储器读取由预定存储器地址范围所指定的“完整”数据项、修改它的与写访问请求相关的部分(通过将被缓冲的写访问请求中所指定的一个或多个数据项合并到该“完整”数据项中)、并且将这样经修改的“完整的”数据项写回到存储器。在这样的实施例中,被缓冲的写访问请求引起包括读操作(更具体地为取回与预定存储器地址范围内的所有存储器地址相对应的数据的读操作)的存储器访问事务的事实意味着当访问尺寸不足条件被满足时(即,当至少两个预定存储器地址范围应该通过被缓冲的写访问请求被部分地写时),缓存分配可以发生(即,用与所取回的可扩展的数据项相对应的数据项填充缓存),而该分配不会引起显著的额外的缓冲器访问事务将被执行,这是由于行填充操作所需求的数据中的很多(或全部)已经正在从存储器被取回。

在一些实施例中,数据处理装置被配置为在使得缓存单元随后按照作为写分配策略的分配策略进行操作后,并且当存储器事务触发条件被满足时,当被缓冲的写访问请求(针对被缓冲的写访问请求,存储器访问事务将被执行)指定存储器地址(其包括所指定的存储器地址所位于至少一个预定存储器地址范围中的所有存储器地址)时识别访问全尺寸条件,并且当访问全尺寸条件被满足时,存储器访问缓冲器被配置为使得缓存单元切换回到按照作为非写分配策略的分配策略进行操作。

因此可以认识到,在对访问尺寸不足条件的识别和将缓存单元切换到根据写分配策略进行操作之后,在此情况下,将缓存单元切换回到根据非写分配策略进行操作将是有益的。当指定了存储器地址(包括所指定的存储器地址所属的至少一个预定存储器地址范围中的所有存储器地址)的存储器访问事务需要被执行时,这样的情况在这里被认为是被实现。换句话说,这是当存储器访问事务内的至少一个预定存储器地址范围由被缓冲的写访问请求“完整地访问”时,即那些被缓冲的写访问请求将向预定存储器地址范围内的所有存储器地址执行写。在这种情况下,可以认识到该存储器事务可以按相对直接的方式被执行-例如连续数据块可以被写到一个或多个预定存储器地址范围,这仅需要相对简单的总线事务-而根据写分配策略对缓存单元进行操作将潜在地招致额外的总线事务,从而使得总线事务的总体数量可以通过将缓存单元切换回到非写分配策略来被降低。

在一些实施例中,缓存单元被初始配置为按照作为非写分配策略的分配策略进行操作。将认识到的是缓存单元可以按很多不同的方式(这些方式由硬件或软件指定)被配置,但处理器单元上的处理负担被降低,其中分配策略(缓存单元根据该分配策略进行操作)是硬件配置的一部分。因此将缓存单元初始配置为硬件配置的一部分,按照非写分配策略进行操作将是有益的。

预定存储器地址范围(存储器事务被约束为按照块来写)可以与数据项被存储在存储器中的方式的各种不同方面相对应。然而,在一个实施例中,数据项与相关联的误差校正码被存储在存储器中并且预定存储器地址范围由单位数据项尺寸确定,单位数据项尺寸必须从存储器被读取,以便供相关联的误差校正码被更新。因此,在这样的实施例中,误差校正码可以关于被存储在预定存储器地址范围处的数据项被生成,从而使得如果预定存储器地址范围内的任何数据项被更新,则针对数据项的整个块的相关联的误差校正码也需要更新。

相应的误差校正码的计算可以按很多不同的方式在数据处理装置中发生,例如,这可以本质上是存储器它本身的特征或可以是数据处理装置的特征。在一个实施例中,数据处理装置还包括误差校正码确定单元,该误差校正码确定单元被配置为确定经更新的误差校正码值以供包含在存储器事务中。因此,当被缓冲的写访问请求将按照存储器事务被执行时,误差校正码确定单元可以提供相应的误差校正码值,误差校正码值然后可以被写到与被缓冲的写访问请求中所指定的数据项相关联的存储器。在一些实施例中,存储器访问缓冲器包括误差校正码确定单元。

在一些实施例中,预定存储器地址范围由关于存储器的存储器事务的单位数据尺寸确定。因此,将存储器事务约束为写到预定存储器地址范围中的所有存储器地址可以起因于存储器它本身的特征,例如,存储器可以配置为使得写事务中具有最小的必须一起被访问的存储器地址群组。

存储器访问缓冲器可以按各种方式被配置,但在一个实施例中,存储器访问缓冲器包括访问槽,其中访问槽被配置为对由处理器单元针对被存储的与访问槽相关联的所选择的存储器地址发出的写访问请求进行缓冲。特定存储器地址与访问槽的关联因此使得存储器访问缓冲器能够累积写访问请求,有用地,这些写访问请求可以凭借这些写访问请求相关的数据项的紧密的空间关联来在单个存储器事务中一起被执行。换句话说,访问槽存储存储器地址并且与该存储器地址相关的写访问请求(即,在该存储器地址处或在距该存储器地址的由槽的尺寸所表示的偏移内)然后可以在被执行之前被累积在该访问槽中。

访问槽可以为写访问请求缓冲的数据项的尺寸可以变化,但在一个实施例中,访问槽被配置为具有小于缓存行尺寸的尺寸。换句话说,访问槽的尺寸可以是这样的,(最大数量的)被缓冲的数据项具有结合的尺寸,该结合的尺寸小于缓存单元中的缓存行尺寸。将认识到的是缓存单元中的缓存行尺寸通常代表当特定的数据项将被缓存在缓存单元中(通过行填充操作)时,缓存单元将从存储器取回的数据单元。如所指出的,通过与访问槽的尺寸的对比,对缓存单元的行填充操作表示一种重要操作,该操作与必须被执行来支持此操作的总线事务有关,并且将缓存单元切换到根据写分配策略进行操作原则上将引起显著的额外的总线事务出现。然而,在本技术的情境下,其中数据处理装置被配置为当访问尺寸不足条件被满足时,将缓存单元切换到根据写分配策略进行操作,这样不产生显著的额外的总线事务负担。

虽然存储器访问缓冲器可以仅包括一个访问槽时,但在一些实施例中,存储器访问缓冲器包括多个访问槽,其中每个访问槽被配置为对由处理器单元针对与该访问槽相关联被存储的所选择的存储器地址发出的写访问请求进行缓冲。换句话说,每个访问槽存储存储器地址并且与该存储器地址相关的写访问请求(即,在该存储器地址处或在距该存储器地址的由槽的尺寸所表示的偏移内)然后可以在被执行之前被累积在该访问槽中。

可以针对仅一个访问槽来识别访问尺寸不足条件,但在一些实施例中,数据处理装置被配置为针对被缓冲在不止一个访问槽中的多个写访问请求来识别访问尺寸不足条件。

数据处理装置可以被配置为针对单个存储器事务或针对多个存储器事务来识别访问尺寸不足条件。在一个实施例中,数据处理装置被配置为当被缓冲的写请求(其不包括至少两个预定存储器地址范围内的所有存储器地址)在单个存储器事务中被执行时识别访问尺寸不足条件。

在一些实施例中,存储器访问缓冲器被配置为当被缓冲的写请求(其不包括至少两个预定存储器地址范围内的所有存储器地址)在单独的存储器事务(这些单独的存储器事务以小于预定的彼此间隔而被执行)中被执行时识别访问尺寸不足条件。

该预定的间隔可以采取很多形式,例如由单独的存储器事务的时间间隔或一系列存储器事务中的顺序间隔来定义。

在一个实施例中,单独的存储器事务彼此紧接(back-to-back)地被执行。换句话说,这些单独的存储器事务在无另外的存储器事务在它们之间被执行的情况下被执行。

访问尺寸不足条件可以通过数据处理装置的很多不同的组件被识别并且类似地可以使得缓存单元通过数据处理装置的很多不同的组件根据访问尺寸不足条件来改变分配策略,但在一个实施例中,存储器访问缓冲器被配置为识别访问尺寸不足条件,并且存储器访问缓冲器被配置为使得缓存单元根据访问尺寸不足条件来改变分配策略。

从第二方面来看,本发明提供了一种数据处理方法,该方法包括以下各项步骤:发出写访问请求,写访问请求指定了存储器地址和数据项,以便使得数据项被存储在存储器地址处的存储器中;根据分配策略来存储来自存储器的被访问的数据项的本地副本以供随后的访问;对已经被发出的一个或多个写访问请求进行缓冲,直到存储器事务触发条件被满足,然后使得关于存储器的存储器事务被启动,存储器事务包括执行一个或多个被缓冲的写访问请求,其中,存储器事务被约束为执行写操作,其中预定存储器地址范围内的所有存储器地址都通过写操作来写,由一个或多个被缓冲的写访问请求所指定的一个或多个存储器地址位于预定存储器地址范围内;当被缓冲的写访问请求不包括至少两个预定存储器地址范围内的所有存储器地址时,识别访问尺寸不足条件;以及当分配策略是非写分配策略并且访问尺寸不足条件被满足时,使得分配策略改变为写分配策略,其中,根据非写分配策略,被访问的数据项的本地副本未被存储,根据写分配策略,被访问的数据项的本地副本被存储。

从第三方面来看,本发明提供了一种数据处理装置,该装置包括:用于发出写访问请求的装置,写访问请求指定了存储器地址和数据项,以便使得数据项被存储在存储器地址处的存储器中;用于根据分配策略来存储来自存储器的被访问的数据项的本地副本以供随后的访问的装置;用于对已经由用于发出的装置发出的一个或多个写访问请求进行缓冲,直到存储器事务触发条件被满足,然后使得关于存储器的存储器事务被启动的装置,存储器事务包括执行一个或多个被缓冲的写访问请求,其中,存储器事务被约束为执行写操作,其中预定存储器地址范围内的所有存储器地址都通过写操作来写,由一个或多个被缓冲的写访问请求所指定的一个或多个存储器地址位于预定存储器地址范围内;用于当被缓冲的写访问请求不包括至少两个预定存储器地址范围内的所有存储器地址时识别访问尺寸不足条件的装置;以及用于当分配策略是非写分配策略并且访问尺寸不足条件被满足时,使得分配策略改变为写分配策略的装置,其中,根据非写分配策略,被访问的数据项的本地副本未被存储,根据写分配策略,被访问的数据项的本地副本被存储。

附图说明

仅通过示例,参照如附图中所示出的实施例来进一步描述本发明,其中:

图1示意性地示出了一个实施例中的数据处理装置;

图2示意性地示出了一个实施例中的数据处理装置;

图3示意性地示出了一个实施例中的存储缓冲器的示例内容和缓存分配策略中产生的改变;

图4A示意性地示出了一个实施例中的被连接到硬驱动存储器的数据处理装置;

图4B示意性地示出了一个实施例中的被连接到NAND闪速存储器的数据处理装置;以及

图5A和图5B示意性地示出了一个实施例的方法中所采取的一系列步骤。

具体实施方式

图1示意性地示出了一个实施例中的数据处理装置10。数据处理装置中的处理器单元12被配置为执行数据处理操作,数据处理操作包括将数据项写到存储器14中的指定存储器地址。处理器单元12通过发出指定了存储器地址和数据项的写访问请求来使得数据项被写到存储器14中的指定存储器地址。由处理器单元12发出的写访问请求由存储缓冲器16接收。存储缓冲器16包括很多访问槽22,访问槽22在写访问请求作为存储器事务被执行之前暂时缓冲写访问请求。来自存储缓冲器16的存储器事务经由总线接口单元18、经由系统总线(未示出)继续到存储器14。数据处理装置还包括缓存20,缓存20被配置为存储数据项(处理器单元当前正在将这些数据项用作它的数据处理操作的一部分)的本地副本,从而使得与从存储器14取回这些数据项相关联的延迟在很大程度上可以被避免。由处理器单元12对缓存20的内容的访问由存储缓冲器16传达,从而使得当由处理器12发出的写访问请求由存储缓冲器16接收时,缓存查找被启动来判定指定的数据项当前是否被存储在缓存中。缓存20包括很多缓存行24并且存储于缓存中的数据项26通常将仅占用给定缓存行24的相对较小的一部分。

数据处理装置10默认被配置为缓冲单元20按照非写分配策略进行操作,这意味着当上述缓存查找发生并且缓存未中(miss)出现时,响应于由存储缓冲器16从处理器12所接收的写响应请求,数据项不是被存储在缓存20中,而是被直接写到存储器14。虽然这意味着如果由处理器单元12对相同数据项做出随后的访问,则不能在缓存中获得该数据项以便快速访问,较少的负担被施加于总线系统上,这是因为将该数据项存储在缓存中将涉及行填充操作(包括从存储器14取回整个缓存行的数据值)。然而,根据本技术的数据处理装置10被配置为根据由存储缓冲器16从处理器单元12所接收的写访问请求的性质来动态调适它的缓存分配策略。如参照下面的附图将更加详细描述的,这些写访问请求被监测并且在适当的情况下缓存分配策略被切换到写分配策略(根据写分配策略,数据项的本地副本被存储在缓存单元中)。对由存储缓冲器16所接收的写访问请求的监测可以按很多方式被实现,并且通过提供图1中所示出的访问监测器28来进行一般地说明。该访问监测器28被示出为与存储缓冲器16相关联,但应该认识到该关联是功能性的并且访问监测器28可以表示数据处理装置10的单独的组件,或在下面参照图2所描述的实施例的情况下,访问监测器28它本身可以是存储缓冲器16的一部分。

图2示意性地更详细地示出了一个实施例中的数据处理装置的配置。数据处理装置在图2中由核心30表示,核心30是数个处理器核心(如通过“多个核心”32示出)中的一个,数个处理器核心中的每个处理器核心按照与核心30相同的方式被配置。核心30包括执行单元34、存储缓冲器36、缓存38和(在它的外围上的)总线接口单元40。如上面参照图1中所示出的实施例所描述的,图2中的存储缓冲器36被提供用于当数据项应该被写到指定的存储器地址时,管理由执行单元34发出的写访问请求。总线接口单元40在核心30和系统总线42(在该实例中,系统总线42是由英国剑桥的ARM有限公司提供的AXI总线)之间提供接口。还被耦合到系统总线42的是存储器44,在该实例中存储器44是被提供与核心30相关联的低延迟RAM,并且在存储器44中数据可以被相对快速地(相对系统中的存储器的其它实例)访问。低延迟RAM44中的存储器位置是字节可寻址的,即数据以字节级别的粒度被存储在存储器44中,从而使得数据的单独的字节在存储器中可以被寻址(并且因此可以被写入或被读取)。另外,然而,存储器44存储与32位数据块(即,4字节的块)相关联的误差校正码(ECC)。对与数据相关联的该ECC的存储提供了一定冗余并且因此提供了对数据的保护,从而使得如果误差出现在所存储的数据项中(例如由于特定攻讦),则只要误差不是太广泛,该误差就可以被检测到和/或被校正。

对与存储器44中的数据相关联的ECC的存储还有助于存储缓冲器36对写访问请求进行管理,这是因为由存储缓冲器36从执行单元34所接收的写访问请求可以指定少到存储器44内的单个字节,然而,对与4字节(32位)数据“块”相关联的ECC的存储意味着指定了子块(即,少于32位块中的所有4字节)的写访问请求必须通过存储器事务(写所有的32位块)被实现,这是因为必须针对整个块来确定ECC。

对存储缓冲器36的总体控制由控制单元46维持。存储缓冲器36包括4个访问槽48,每个访问槽被配置为在状态机50的基础上进行操作并且持有针对被分配给该访问槽的写访问请求的指定的地址52。每个访问槽可以容纳四个32位数据块。由存储缓冲器36从执行单元34所接收的写访问请求由控制单元46管理,控制单元46将每个所接收的写访问请求分配给访问槽48中的一个,更具体地根据与该写访问请求相关联的存储器地址进行分配。在指定了存储器地址(该存储器地址已经被存储在访问槽之一中)的写访问请求被接收、或至少所接收的地址在由存储于访问槽中的地址所表示的范围和访问槽可以容纳的128位(4x32位)数据范围内的情况下,则随后的写访问请求可以被累积到该访问槽中。如果指定了存储器地址(该存储器地址与任何访问槽的当前内容都是不相关的)的写访问请求被接收,则新的写访问请求被分配给空闲的访问槽、或必须被缓冲直到访问槽变成空闲的。每个访问槽因此用于累积与128位数据范围(4块)相关的写访问请求。存储缓冲器36中的访问槽继续累积写访问请求,直到存储器事务触发条件被满足,此时存储缓冲器36使得该访问槽的内容经由总线接口单元40和系统总线42按照存储器事务被操作来访问存储器44。控制单元46还包括ECC计算单元54,ECC计算单元54被配置为计算误差校正码(ECC),误差校正码(ECC)与每个32位(4字节)数据块相关联被存储于存储器44中。与每个这样的数据块相关联地存储ECC并且尤其是针对32位块(与每个单独的字节相反)确定ECC的事实意味着存储缓冲器执行的写事务一定是针对完整的32位块并且不能仅关于块的一部分(“子块”)来执行。因此,在存储器事务触发条件被满足并且访问槽的内容将按照存储器事务被操作以便该内容写入存储器44中的情况下,如果该访问槽内的四个32位块中的任何块仅被部分指定(即,少于该块中的所有4字节被指定要写),则该存储器事务作为读-修改-写事务被执行,其中相应的块首先从存储器44中被读取,要被被写的新的子块被合并到已经从存储器中读取的块中,新的ECC由ECC计算单元54确定,并且完整的块随它的相关联的经更新的ECC然后被写到存储器44。相反,如果当访问槽的内容要按照存储器事务被写出而访问槽的内容仅是完整的数据块时,该存储器事务可以被实现为直接写事务,根据直接写事务,指定的块(以及由单元54计算的相关联的ECC)被写到存储器44。

作为对存储缓冲器36的操作的总体管理的一部分,控制单元46监测正在被执行的存储器访问(并且因此扮演图1中所示出的访问监测器28的角色)。当写访问请求从执行单元34被接收时,加上上述对访问槽48的使用的管理,控制单元46使得缓存查找在缓存38中被执行,以便判定写访问请求中所指定的数据项当前是否被存储在缓存38的缓存行中。缓存38包括控制单元56,控制单元56控制缓存的操作。如果数据项当前未被存储在缓存38中(缓存未中),则默认核心30被配置为将指定的数据项写到存储器44,而不用该数据填充缓存38的缓存行。换句话说,通常,缓存38被配置为按照非写分配策略进行操作。对于与低延迟RAM44相关联的核心30的操作,该配置通常是优选的,这是因为它避免了与执行行填充操作来填充整个64字节缓存行(包括指定的数据项)相关联的额外的总线事务。按该方式降低总线事务的数量支持核心30使用低延迟(即,快速)RAM作为数据存储位置,因此降低了执行单元34由于未决的总线事务的排队而将被停止的可能性。

存储缓冲器36的控制单元46还被配置为监测写访问请求,并且更具体地为监测存储器事务的“占用”(其起因于存储缓冲器36的给定访问槽48中的写访问请求的累积)。控制单元46被配置为识别存储器事务发生的情况(其中,不止一个子块数据项被指定)。换句话说,如果给定访问槽中可以被指定的四个32位块中的不止一个块实际上仅指定要被写的块的一部分,则控制单元46识别此为“访问尺寸不足条件”。当访问尺寸不足条件被控制单元46识别到时,控制单元46向缓存38(并且更具体地向其中的控制单元56)发出信号,如果缓存单元当前正在按照非写分配策略进行操作,则缓存单元应该切换为按照写分配策略进行操作。存储缓冲器36的控制单元46的操作的该配置已经被确定是值得做的,这是因为虽然按照写分配策略对缓存进行操作意味着行填充将额外地发生以便用相应的数据项填充缓存,但当不止一个子块写操作被执行时,发现相应的行填充操作与按照非写分配策略对缓存进行操作相比负担更少。这是由于这些子块写操作将作为读-修改-写操作由存储缓冲器36处理并且更具体地因此关于这些数据项的读事务已经被执行的事实,并且在该情况下,随后可从缓存38中获得这些数据项的好处比取回其余相关缓存行(以便将这些子块数据项填充到缓存中)的额外的负担更重要。

存储缓冲器36的控制单元46被配置为不仅识别单个访问槽内的不止一个子块数据项,而且还可以当不止一个访问槽48中的写访问请求指定子块数据项时识别访问尺寸不足条件。因为源于不同访问槽的很多事务可能相继发生,控制单元46被提供具有历史存储58,历史存储58更具体地被配置为记录由存储缓冲器36启动的最近的存储器事务并且不论每个访问槽的那些存储器事务是否包括至少一个子块数据项。控制单元46因此还被配置为当源于两个不同的访问槽48的两个事务(其中,每个事务包括子块数据项并且存储器事务是紧接的,即未被另外的存储器事务分开)发生时识别访问尺寸不足条件。

存储缓冲器36还被配置为与数据处理系统中的另外的核心32的其它存储缓冲器进行通信,以便维持被与每个核心相关联提供的缓存单元38之间的缓存一致性。这是本领域的普通技术人员所熟悉的方式并且为了简洁,该通信的另外的细节在这里被省掉。

图3示意性地示出了存储缓冲器36的两个访问槽的内容,与存储缓冲器36的控制单元46使得缓存单元38改变它的分配策略的两种情况相对应。图3的上面部分示意性地示出了两个访问槽(WBUF0和WBUF1)各自单独包括不止一个子块写的情况,实际上在所示出的示例中每个访问槽中可用的四个32位块中的每个仅被单个有效字节填充,与针对每个块应该被执行的单个字节子块写相对应。因此,存储缓冲器36的控制单元46将针对访问槽单独地识别访问尺寸不足条件、或实际上针对由每个访问槽启动的存储器事务(假设这些存储器事务紧接着发生)来识别访问尺寸不足条件。因此,控制单元46使得缓存单元38随后按照写分配策略进行操作(如果它不是已经在这么做了)。图3还示出了存储缓冲器36的控制单元46使得缓存单元38从根据写分配策略进行操作切换回到按照非写分配策略进行操作。这当控制单元46识别到将在访问槽的内容的基础上被执行的存储器事务仅包括完整块写时,即没有将被执行的子块写时,发生。图3的下面部分示出了访问槽WBUF0和WBUF1这二者的完整块写配置。

在上述的实施例中,将针对存储器的写事务限制为必须针对4字节数据块发生是由于存储器44中与每个32位块相关联存储的ECC。然而,重要的是认识到本技术决不限于这样的基于ECC的配置,并且将源于存储缓冲器的访问槽的写事务限制为必须针对数据项块(即,具有横跨不止一个单独的可寻址的存储器位置的相应的存储器地址的群组)发生可能起因于各种系统配置特征。图4A和4B示意性地示出了就是这样的情况的两个数据处理系统。在图4A中所示出的示例中,数据处理装置10(并且因此被配置为如上关于图1所描述的)访问存储器(其被体现为硬驱动60)。该硬驱动60的配置是由硬驱动60所接收的访问请求被约束为访问512字节的扇区62中的数据,这意味着如果执行单元12发出针对少于512字节的扇区的写访问请求,将不得不执行“完整的”512字节写操作。类似地,图4B示意性地示出了另一示例,在该实例中,数据处理装置10的存储器访问将是针对NAND闪速存储器64,其中存在数据必须被写在2048字节的页66中的约束。

图5A和图5B根据一个实施例的方法示意性地示出了数据处理装置内所采取的一系列步骤。在步骤100处,寻求将指定数据项写到指定存储器地址的写访问请求由处理器发出。该写访问请求由存储缓冲器接收,然后在步骤102处被暂时缓冲在存储缓冲器的可用访问槽中。存储缓冲器使得缓存查找过程被启动并且在步骤104处判定缓存命中是否已经出现。如果已经出现,则流程经由步骤106继续进行,在此,包含指定数据项的缓存条目被修改并且存储缓冲器继续处理写访问请求以便将该修改透写到存储器。此后或如果在步骤104处缓存未中出现,则在步骤108处判定针对该访问槽存储器事务触发条件是否被满足。换句话说,存储缓冲器判定该访问槽是否应该是耗尽的。本领域的普通技术人员将认识到该条件可由于本领域的普通技术人员所熟悉的很多原因而被满足,并且为了简洁,另外的描述在这里被省掉。如果存储器事务触发条件未被满足,则流程继续进行到步骤110,在此,存储缓冲器等待,并且在步骤112处判定另一新的写访问请求是否已经从处理器被接收。当这样的新的写访问请求未被接收,并且存储器事务触发条件未被满足时,流程围绕步骤108、步骤110、步骤112环路进行循环。如果另一新的写访问请求从处理器被接收,则流程继续进行到步骤102,在步骤102处该新的写访问请求被缓冲在存储缓冲器的可用的槽中。更具体地,在新的写访问请求与充分接近存储缓冲器中已经被缓冲的写访问请求的存储器地址相关的情况下,则新的写访问请求将被缓冲在该同一访问槽中与存储于该访问槽中的之前所接收的写访问请求适当偏移的位置。

在步骤108处,一旦判定针对该访问槽,存储器事务触发条件已经被满足,则在步骤114处判定存储器事务是否包括不止一个非完整块访问。如果不是,则流程继续进行到步骤116,在步骤116处判定所需求的存储器事务中是否仅具有一个子块访问。如果不是,即如果所需求的存储器事务仅包括完整块写访问,则在步骤118处执行写存储器事务并且使得缓存单元切换到非写分配策略(如果不是已经根据该策略在进行操作)。此后流程返回到步骤110并且来自处理器的新的写访问请求按上面所描述的被处理。

返回到步骤114,如果在此判定存储器事务中具有不止一个非完整块访问,则在步骤120处所需求的存储器事务按照读-修改-写操作被执行,根据读-修改-写操作,包括不止一个指定的非完整块的完整数据块首先从存储器被读取,被缓冲的写访问请求中的指定的数据项被合并到从存储器所取回的完整数据块中并且与这四个块相关联的ECC被更新,并且这样经修改的完整的数据块被写回到存储器。此后,在步骤122处判定当前缓存分配策略是否是非写分配。此处是非写分配的情况,于是在步骤124处使得缓存单元将分配策略切换到写分配并且流程经由步骤110按上面所描述的继续进行。替代地,如果在步骤122处判定缓存分配策略不是非写分配(即,它已经是写分配),则流程直接继续进行到步骤110。

现在返回到步骤116,如果判定存储器事务中仅指定了一个子块访问,则流程继续进行到步骤126,在步骤126处,存储器事务作为读-修改-写操作被执行,根据读-修改-写操作,与该指定的子块相对应的完整的块首先从存储器被读取,指定的数据项被合并到完整的块中并且完整的块的相应的ECC被确定,并且这样经修改的完整的块被写回到存储器。此后,在步骤128处判定由存储缓冲器执行的之前的存储器事务(包括由其它访问槽启动的那些)中是否具有(至少)一个子块访问。如果不是这种情况,则流程直接继续进行到步骤110。然而如果是这种情况,则流程经由步骤122和潜在地步骤124按上面所描述的继续进行,以便将缓存分配切换到所需求的写分配。

总之,处理数据的数据处理装置和方法被公开,根据该数据处理装置和方法,处理器单元被配置为针对存储器发出由存储器访问缓冲器缓冲和处理的写访问请求。缓存单元被配置为根据针对缓存单元所定义的分配策略来缓存被访问的数据项。存储器事务被约束为按照预定存储器地址范围(由被缓冲的写访问请求所指定的一个或多个存储器地址位于该范围内)中的所有存储器地址都必须由相应的写操作来写这样的方式来被执行。如果被缓冲的写访问请求不包括至少两个预定存储器地址范围内的所有存储器地址,并且缓存单元被配置为按照非写分配策略进行操作,则数据处理装置被配置为使得缓存单元随后按写分配策略进行操作。

虽然本文已经描述了特定的实施例,但应该理解的是本发明不限于此并且在本发明的范围内可以做出很多修改和添加。例如,在不脱离本发明的范围的情况下,可以做出下面的从属权利要求的特征与独立权利要求的特征的各种组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号