CN1714347A - 选择性可变行宽存储器 - Google Patents
选择性可变行宽存储器 Download PDFInfo
- Publication number
- CN1714347A CN1714347A CNA028300440A CN02830044A CN1714347A CN 1714347 A CN1714347 A CN 1714347A CN A028300440 A CNA028300440 A CN A028300440A CN 02830044 A CN02830044 A CN 02830044A CN 1714347 A CN1714347 A CN 1714347A
- Authority
- CN
- China
- Prior art keywords
- line width
- data
- task
- cache memory
- storer
- 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
- 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/0886—Variable-length word access
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了选择性地改变用于存储器的行宽,即选择用于存储器(14)的多个行宽之一。该选择的行宽用于与一个或多个处理器(12,26)通信。这样可提高与存储器通信的灵活性和效率。具体地,可根据希望的行宽设定一寄存器(42),并随后在定位存储器中的数据时使用该寄存器。该选择的行宽可与存储器中的每个数据块(38)相关联以便可同时使用多个行宽。当实现于高速缓冲存储器(30,130)时,该高速缓冲存储器的多个路(40)可被作为一个组进行处理,以在单个存储器操作期间提供数据。可根据任务(13,28)、处理器和/或性能评价改变行宽。
Description
技术领域
本发明涉及存储器行宽。
背景技术
高速缓冲存储器是一种用于加速主存储器和处理单元之间的数据传送的存储器。一般而言,高速缓冲存储器包含的数据量小于主存储器。通常,从主存储器将已经或很可能被处理单元存取的数据(例如,最近被存取的数据、邻近数据、由前瞻(look ahead)算法确定的数据等)加载到高速缓冲存储器中的一个或多个数据块中。当处理单元将主存储器地址提供给高速缓冲存储器时,使用一些或全部该主存储器地址判定所请求的数据是否存在于高速缓冲存储器中。
图1示出一示例性高速缓冲存储器2,该高速缓冲存储器在结构上组织成数据块6(单元)的网格。列被称为路8并且每个行均被一索引指示。在示例性高速缓冲存储器2中,设置有四个路8即路0到路3,和被编索引为0-7的8个行。因此,示出32个数据块6。每个数据块6包括一个或多个数据字。“字”是处理***中的最小的独立可寻址的数据量。一个字通常包括一个或多个字节(例如,两个字节、四个字节等)。为了减轻存储器的开销负担,通常在每个数据块6中存储多个字。单个任务的存储是在多个存储在每个数据块6中的数据量中保存的。
当给定一主存储器地址时,高速缓冲存储器2使用索引在每个路8中定位对应的数据块6。然后,高速缓冲存储器2判定是否任何一个被定位的数据块6包括用于所提供的主存储器地址的数据。当数据存在于一个被定位的数据块6中时,在该数据上执行期望的操作(即,读取、写入、删除等)。如果数据不存在,则可从主存储器中检索该被请求的数据,并将该数据加载到一个被定位的数据块6中,然后执行所述操作。
图2示出现有技术中的一种对高速缓冲存储器2的地址查找操作。图中示出高速缓冲存储器2包括N个路8,路0到路N-1。每个路8包括被编索引为0到2I-1的2I个数据块6。通常,处理器将数据的主存储器地址提供给高速缓冲存储器2。为了定位被请求的数据,高速缓冲存储器2认为主存储器地址4包括一标记部分4A、一索引部分4B和/或一块偏移量部分4C。高速缓冲存储器2与主存储器相比的相对大小和每个数据块6中的数据6D的量决定每个地址部分4A-4C的大小。例如,一特定主存储器可包括4兆字(222个字),需要22位长的地址。但是,高速缓冲存储器2中的每个路8可能仅包括一千字(210个字),存储在256个各四个字的数据块中。在此情况下,块偏移量部分4C将包含两个位(用于定位四(22)个字中的一个),索引部分4B将包含8个位(用于定位256(28)个数据块中的一个),而标记部分4A将包含剩余的12个位。索引部分4B可位于主存储器地址4中从与块偏移量部分C相邻的位开始。标记部分4A包含主存储器地址4的没有用于块偏移量部分4C或索引部分4B的剩余位(T)。通常,标记部分4A包含主存储器4的被指定了最高位值的位(“最高有效位”)。
为了检索数据,高速缓冲存储器2使用索引部分4B定位一行数据块6,即索引部分4B被用作将与索引0-7相匹配的索引查找5。然后,高速缓冲存储器2通过将标记部分4A与每个数据块6中存储的标记6A相比较,来判定被定位的行中的数据块6之一是否包括针对所提供的主存储器地址4的数据6D。如果存在正确数据,则执行期望的操作。块偏移量部分4C包括确定数据块6D中的数据的位置所需的、主存储器地址4的多个位(B)。通常,块偏移量部分4C包括主存储器地址4的被指定了最低位值的位(“最低有效位”)。每个数据块6中还可包含其它信息,例如指示数据块6中的数据6D是否与主存储器中的数据相匹配的脏位(dirty bit)6B,和指示数据块6是否具有有效数据的有效位6C。
为了将位于主存储器地址4的数据装载到高速缓冲存储器2中,将索引部分4B用作对数据块6的行的索引查找5。选择一个路8中的数据块6,并将该数据装载到该数据块6中。当将数据装载到数据块6中时,将标记部分4A写入相应的数据块6的标记6A中。当随后提供主存储器地址4以便进行检索时,再次使用索引部分4B作为索引查找5以定位包含该数据的数据块6的行。将标记部分4A与每个被定位的数据块6中的标记6A相比较,以判定该数据块6是否包含被请求的数据。
“行宽”是在单个操作中向/从存储器传送的位的数量。通常,用以向/从高速缓冲存储器2传送数据的行宽对应于数据块6中的数据6D的量并且是固定的。对于上述示例,每个数据块6包含四个字。因此,行宽将是四个字。结果,在存储器操作期间可单独访问每个路8。
对于给定的存储器大小,较大的行宽是有利的,因为这样会需要较少的存储操作来执行数据操作。例如,使用1个字的行宽读取16个字需要16个读操作。而使用四个字的行宽执行同样的操作仅需要四个读操作。但是,当使用高速缓冲存储器并且行宽对应于数据块的大小时,较大的数据块会增加数据没有存储在该高速缓冲存储器(即高速缓存未命中)的可能性。较高的高速缓存未命中比率会使得主存储器和高速缓冲存储器之间的数据传送更频繁,从而降低性能。通常,执行大量数据操作并维持较小的代码局部性的任务得益于使用较大的行宽,由此减少高速缓冲存储器操作的数量。相反,当代码局部性更加不同和/或许多任务共享高速缓冲存储器时,由于可能存储来自无关的物理地址的额外数据块,因此期望较小的行宽。不幸的是,当前技术没有为单个存储器(高速缓冲存储器)提供不同的行宽。对于得益于不同行宽的任务以及得益于在实现不同功能时使用不同行宽的任务,此问题都会存在。另外,对于可能需要/期望特定的行宽以便正确运行的特定处理器结构或传统程序代码,单个高速缓冲存储器缺少不同行宽是有问题的。当处理器和/或任务共享存储器并要求/期望不同行宽时,这个问题加剧了。
鉴于上文所述,需要一种可选择性地改变对于存储器的行宽的方法。
发明内容
本发明提供了选择性改变用于存储器的行宽。该行宽用于与一个或多个处理器通信。这提高了与存储器通信的灵活性和效率。具体地,一寄存器可存储代表选择的行宽的值,在管理存储器中的数据时使用该选择的行宽。处理器可向该存储器写入以选择一行宽。根据该寄存器的值调整在与存储器通信时使用的行宽。该选择的行宽可与存储器中的每个数据块相关联以便可同时使用多个行宽。当在高速缓冲存储器中实现时,该高速缓冲存储器的多个路中的数据块可被作为一个组来处理,以在单个存储器操作期间使用更宽的行宽提供数据。可根据处理***、任务、处理器和/或性能评价来改变行宽。
本发明的示例性方面被设计用于解决这里所述的问题以及没有讨论的而技术人员可发现的问题。
附图说明
从下面参照附图对本发明的各个方面的详细说明中更容易了解本发明的这些和其它特征,在该些附图中:
图1示出一种现有技术的高速缓冲存储器;
图2示出一种现有技术的对高速缓冲存储器的地址查找操作;
图3示出根据本发明的一个实施例的示例性***;
图4示出根据本发明的一个实施例的对高速缓冲存储器的地址查找操作;
图5示出在已执行不同任务之后的高速缓冲存储器的示例性部分;
图6示出根据本发明的另一个实施例的对高速缓冲存储器的地址查找操作。
应指出,本发明的附图并不是按比例画出的。这些附图仅示出本发明的典型方面,而不能被认为是限制本发明的范围。在各附图中,同样的标号代表同样的元件。
具体实施方式
本发明提供了选择性地改变用于存储器的行宽,即选择用于与存储器通信的多个行宽中的一个。可根据若干参数包括,例如其中安装有该存储器的处理***、访问该存储器的处理器、使用该存储器的任务和/或使用该存储器的有效性的性能评价,来选择行宽。对于一处理***,当本发明的存储器安装在该处理***中时可选择行宽。这允许制造同样的存储器,并将该存储器安装在使用不同行宽的多个处理***之一中。对于任务或处理器,可根据任务的装载/卸载或访问共享存储器的数个处理器之一的启动/结束选择行宽。当实现一种可选择性地改变行宽的存储器时,在该存储器中允许任务使用不同的行宽,所选择的行宽必须与每个任务相关联。可在任务装载时选择行宽,并且在任务卸载时保存行宽以及其它任务信息(即,程序计数器、寄存器信息等),如在现有技术中已知的。当处理器/任务没有选择特定的行宽时,可使用用于处理***的默认行宽。对于活动任务也可改变行宽。例如,可并入一个或多个编译指令以允许软件开发者重新配置用于程序的某些部分的行宽。例如,SetCacheWidth#X指令可指定一期望行宽(X),而EndCacheWidth指令可使所选择的行宽返回其先前大小或默认大小。这样,软件开发商例如可在进入任务的将传送大量数据的部分时指定较大的行宽,从而会受益于较大的行宽。对于性能评价,在处理器上执行一个或多个任务的操作***可检测到存储器的低效率性能,并改变活动任务和/或其它任务的行宽。例如,操作***可监控高速缓冲存储器命中/未命中比率并判定其过高,作为响应,操作***可发送命令以为全部或一些使用该高速缓冲存储器的任务选择不同的行宽。
参阅附图,图3示出实现本发明的各种特征的示例性处理***10。处理***10包括处理器12和存储器14。通常,处理器12在存储在存储器14中的数据上进行存储器操作例如读、写、删除等。为了执行期望的操作,处理器12使用地址线16向存储器4提供地址。使用数据线18在处理器12和存储器14之间传送数据。处理器12可使用一些或全部数据线18或一个或多个未示出的操作线传送期望的操作。
当实现为高速缓冲存储器时,存储器14存储主存储器20中存储的数据的一部分。在操作中,主存储器20包括为由处理器12执行的一个或多个任务保留的一个或多个存储块13。处理器12为主存储器20中存储的数据提供地址。最初,存储器14根据主存储器20的地址判定存储器14是否包含数据的副本。如果包含,则在存储器14中的数据上执行期望的操作。当被请求的数据不存在于主存储器14中时,在执行该操作之前,存储器14从主存储器20获得数据。存储器14在删除该数据和/或为其它数据而换出该数据之前将已被更改的数据写回主存储器20。
存储器14可使用用于数据线18的可选择性地改变的行宽与处理器12通信。为了实现可选择性地改变的行宽,如图所示,存储器14包括宽度部件22和地址部件24。宽度部件22存储可由例如存储器12选择的用于数据线18的行宽。地址部件24根据提供的主存储器20的地址和选择的行宽生成查找,如下文中所述。应理解,尽管宽度部件22和地址部件24包含在存储器14内,但是也可使用软件(例如,在处理器12中执行)、硬件或软硬件的组合在存储器14内部和/或外部实现部件22、24的功能。另外,应理解,一个或多个额外的处理器即处理器26可保留一个或多个存储块28以执行一个或多个任务,并与存储器14和/或主存储器20通信和在存储器14和/或主存储器20上执行操作。
图4示出根据本发明的一个实施例的用于高速缓冲存储器30的地址查找的操作,该高速缓冲存储器可选择性地改变行宽。当所选择的行宽是数据块38中的数据38D的量的倍数时,将位于多个路40中的数据块38当作一组进行管理。另外,块偏移量部分36C、索引部分36B和/或标记部分36A的大小和/或位置可根据所选择的行宽变化。
为了实现行宽选择,如图所示,高速缓冲存储器30包括宽度部件32。宽度部件32包括宽度寄存器42,该宽度寄存器被处理器/任务设定以选择期望的行宽。高速缓冲存储器30使用宽度部件32来确定行宽。根据所选择的行宽,高速缓冲存储器30将一个或多个路40中的数据块38当作大小可变的单个数据块进行管理。例如,当宽度寄存器42指示一2B+1个字(两个数据块)的行宽时,将位于路0和路1中的索引0处的数据块当作两倍大小的单个数据块进行管理。
一个必须处理的问题是,在行宽改变时因为一个或多个数据块会不包含正确的数据和/或数据可能位于不同的数据块中,高速缓冲存储器30中的一些或全部数据会变得不可访问和/或无效。例如,当行宽从一个数据块变为两个数据块时,先前被作为单个数据块写入的数据将不能被作为双数据块检索,因为第二路中的数据块并没有被写入。类似的,当行宽从两个数据块改变到一个数据块时,具有数据的第二个数据块会位于不同的索引处。结果,当选择新的行宽时,可能需要使高速缓冲存储器30中的一些或全部数据无效。
为了防止使所有数据无效,使所选择的行宽与每个数据块38相关联,从而随后可确定数据块38是使用什么行宽写入的。这允许多个处理器/任务同时使用高速缓冲存储器30,而不必在每次行宽改变时都需要使高速缓冲存储器30中的数据无效。在一个实施例中,通过将选择的行宽(例如宽度寄存器42的值)作为大小38E存储在数据块38内,使该选择的行宽与数据块38相关联。或者,可将宽度寄存器42的值映射为与存储在大小38E内的每个可能的行宽相对应的不同值,以使该选择的行宽与数据块38相关联。根据大小38E中的值,可确定数据块38是否是使用当前行宽写入的,以及当标记部分36A与存储在数据块38中的标记38A匹配时是否可使用当前行宽。当将多个数据块38作为一个组管理时,仅需要将用于每个数据块的开销(即标记38A、脏位38B、有效位38C)写入第一个数据块38,因为用于其他数据块38的开销将仅是用于第一个数据块38的开销的副本。但是,将大小38E写入该组中的所有数据块38内,从而使用不同行宽大小的随后的访问识别该数据块为用过的和/或无效的。或者,可将一些或全部信息继续写入每个数据块38。例如,当小于全部数据块38中的数据38D被修改时,可针对每个数据块38单独更新脏位38E以限制复制给主存储器的数据38D的数量。
高速缓冲存储器38还包括地址部件34,该部件根据索引部分36B生成查找37以定位数据块38。地址部件34根据选择的行宽修改索引部分36B,以允许当修改用于任务/处理器的行宽时一些或全部数据块38中的数据保持有效。为了选择一行宽,向宽度寄存器42写入合适的掩码。宽度寄存器42包括与在选择最大行宽(即最大的数据块数量)时被掩蔽(设定为0)的索引部分36B的位的最大数量相对应的位数(E)。换句话说,对于具有N个路的高速缓冲存储器,宽度寄存器42将包含最多log2(N)个位(E)。地址部件34包括逻辑与门44。与门44用于逻辑组合索引部分36B的最低有效位E与宽度寄存器42的内容。然后,所得到的结果与索引部分36B的剩余位组合以生成查找37。然后使用查找37在可能包含用于主存储器地址36的数据的路40中定位数据块38。
下文的示例性的表提供了当可选择最多8个数据块时宽度寄存器42的值。如从行1中可见的,当选择一个数据块的行宽时,使用索引部分36B的所有I位,从而可单独存取每个数据块。从最低有效索引位开始,每使行宽加倍,就掩蔽(设为0)一个附加索引位。因此,得到的查找37在行2中存取偶数索引的数据块,在行3中存取每隔四个的数据块。当选择8个数据块的行宽(最后一行),掩蔽索引部分36B的最低有效的三个位,从而导致存取每隔8个的数据块。需要被掩蔽的索引位(行2到行4)以判定该组中的哪个数据块38在数据38D中包含所需的数据。结果,索引部分36B的被掩蔽的位可被认为是块偏移量部分36C的一部分(即,块偏移量部分36C的大小增加被掩蔽的位数)。
宽度寄存器值(最高有效位到最低有效位) | 使用的索引位的数量 | 行宽 |
111 | I | 一个数据块(2B个字) |
110 | I-1 | 两个数据块(2B+1个字) |
100 | I-2 | 四个数据块(2B+2个字) |
000 | I-3 | 八个数据块(2B+3个字) |
参照图4和图5,其示出在执行四个任务A-D中的每一个之后高速缓冲存储器30的示例性部分。该示例性部分包括四个路40(路0到路3),每个路包括被编索引为0-7的8个数据块38(在图5中示出为单元)。首先示出在执行任务A之后的高速缓冲存储器30。因为任务A使用1个数据块38的行宽(即,单独管理每个路),所以将宽度寄存器42设定为全部为1,从而使用索引部分36B的所有I位生成查找37以便定位数据块38。结果,任务A可向位于任何一路40中的任何数据块38写入数据。
任务B使用的行宽为四个数据块(四路)。因此,每当任务B从高速缓冲存储器30读取数据时,会传送给定索引处的全部数据块中的数据38D(即路0到路3)。另外,因为任务B使用四个数据块的行宽与高速缓冲存储器30通信,所以如上所述将宽度寄存器42的最低有效的两位设为0。结果,当生成用于任务B的查找37时,地址部件34将索引部分38B的最低有效的两位设为0,以允许行宽对于一任务变化而不会使用于该任务的、高速缓冲存储器30中的所有数据无效。因此,任务B被限制为将数据写入在示出的高速缓冲存储器30的部分中索引0和4处的数据块38。
任务C使用的行宽为两个数据块38(两路)。结果,将宽度寄存器42的最低有效的1位设为0,从而当生成用于任务C的查找37时,地址部件34将索引部分38B的最低有效的1位设为0。在执行任务C之后,换出任务B的条目之一的一部分(即,路0到路1的数据块0)。结果,任务B的数据的剩余部分无效,并且不能再被任务B访问。
在执行任务C之后,用于任务A、B和C的数据块38保持有效,并且可被每个任务使用用于每个任务的唯一行宽来访问,因为这些数据块并没有为其它任务被换出。类似地,在任务D使用一个数据块38的行宽运行之后,任务A和C使用的许多数据块保持有效。但是,因为用于任务B的索引0处的数据已被换出,所以只有一个被任务B使用的数据块38保持有效。同样,一旦任务D盖写路0中的索引3处的用于任务A的数据,则使所有路中的索引3处的数据块38中的任务A的数据无效。高速缓冲存储器30示出使用小的行宽(更容易命中)与使用大的行宽(较少的操作)之间所获得的折衷。另外,如图所示,高速缓冲存储器30能够为包括不同行宽的多个任务同时存储数据,从而增加利用高速缓冲存储器30的效率。
当用于一活动任务的行宽可变时,如上所述,包含用于该活动任务的数据的数据块38可能变为无效。为了确保在行宽之间的有效转换,高速缓冲存储器30可在“贯穿存储”(store through)模式下运行。在贯穿存储模式下,高速缓冲存储器30向主存储器写入任何被修改的数据而不必等待任务交换,或数据被换出。这样可将数据块38标记为无效,而不会在此发生之前潜在地需要大量的对主存储器的写操作。另外,当根据行宽掩蔽索引部分36B时,当用于一任务的行宽改变时各路40中的数据的一些部分可能保持有效。对于不同行宽,用于该任务的数据的一些部分存储在相同位置。例如,在图5中在任务B运行之后,如果任务B改变为两个数据块(两路)的行宽,则路0和路1的索引0和4处的数据块28中的任务B数据将保持有效和可用。结果,不需要将此数据标记为无效,这需要一个从主存储器的装载操作。
返回参照图4,地址部件34可提供索引部分36B作为查找37来定位数据块38,而不是掩蔽索引部分36B中的位。当宽度寄存器42根据各处理器使用不同的可寻址字大小而改变时,这可能是合意的。例如,具有一个字节字的处理器可使用一个数据块38(一个路40)的行宽,并且与具有两个字节字并使用两个数据块38的行宽的处理器共享高速缓冲存储器30。在此配置中,单字节可寻址处理器的数据命中可能性为N(对于每个路40有一个可能性),而两字节可寻址处理器的数据命中可能性为N/2(对于每一对路40有一个可能性)。
应理解,标记38A可包括标记部分36A的副本,或任何能够使一指定主存储器地址36与存储在一个或多个数据块38中的数据相匹配的数据。此外,应理解,主存储器地址36可包含所述部分36A-C的一些或全部。例如,当每个数据块38的大小为一个字时,块偏移量部分36C为0位(即不包含)。另外,根据如何在高速缓冲存储器30中存储/存取数据,可对换索引部分36B和块偏移量部分36C在主存储器地址36中的位置。
图6示出根据本发明的另一个实施例的另一个可选择的高速缓冲存储器130。不管选择的行宽的大小如何,高速缓冲存储器130均允许访问全部数据块38。结果,使用较大行宽的任务/处理器可访问高速缓冲存储器130中的全部数据块38,而不是如参照图4说明的数量有限的数据块38。在高速缓冲存储器130中,根据选择的行宽将索引部分36B被放置在主存储器地址36内。宽度部件32包括宽度寄存器42,该寄存器的操作与上文参照图4所述的相同。地址部件134包括一逻辑与门44以生成标记139,该标记139与数据块38中的标记38A相比较并被存储作为标记38A,和一移位电路146以生成查找137以便定位数据块38。
将索引部分36B的全部I位和标记部分36A的最低有效的E位与宽度寄存器42的值一起提供给移位电路146。根据宽度寄存器42的值,将提供的位向右移动0位或更多位。例如,对于宽度寄存器42中具有0值(被掩蔽)的每个位,可将组合的索引部分36B的位与标记部分36A的最低有效的E位向右移动一位。一旦被移位,则剩余的最低有效的I位可被用作查找137以定位数据块38。结果,查找137始终包含没有被掩蔽的I位,因此可访问数据块38的所有索引。随后,可如上所述将任何向右移位的位用作块偏移量部分36C的一部分。
还将标记部分36A的最低有效的E位提供给与门44,并使用宽度寄存器42掩蔽该些位。然后,被掩蔽的位与标记部分36A的剩余位组合以生成标记139。标记149与标记38A比较和/或复制给标记38A。这使得已向右移位并用作查找137的、标记部分36A的最低有效的位在被用作标记的一部分之前成为0。结果,当提供一主存储器地址36时,这些位不会被使用两次,即一次作为查找137的一部分,并然后作为标记139的一部分。
应理解上述两个实施例可具有多种变型。例如,图6中所示的地址部件134和/或宽度32可包括在所述各个实施例之间转换操作的电路和/或软件。例如,宽度部件32可包括一寄存器以选择字大小。根据此选择和宽度寄存器42的值,可改变地址部件134的操作。还可用与大小38E相似的方式(即存储在每个数据块38中)使选择的字大小与每个数据块38相关联。并入这种功能使得在使用不同可寻址字大小的处理器上执行的任务可选择不同的行宽大小。另外,应理解掩蔽主存储器地址36的位不是必需的。例如,地址查找操作可忽略不必要的位。
在本上下文中,计算机程序、软件程序、程序或软件是指旨在使具有信息处理能力的***直接或在以下任一或两个操作之后实现特定功能的一组指令的用任何语言、代码或符号写成的任何表达式,所述操作为:(a)变换到另一种语言、代码或符号;和/或(b)以不同的材料形式再现。上文中对本发明的各种方面的说明是作为示例和说明。它并非旨在是穷尽性的,或将本发明限制为所公开的精确形式,并且很明显许多变型和变化是可能的。本技术领域内的技术人员很清楚的这种变型和变化旨在包含在由所附权利要求限定的本发明的范围内。
工业适用性
本发明可用于访问处理***中的存储器例如高速缓冲存储器。
Claims (20)
1.一种高速缓冲存储器(30,130),包括:
用于存储数据的装置(38,40);以及
用于选择性地改变该高速缓冲存储器的行宽的装置(32)。
2.根据权利要求1的高速缓冲存储器,还包括用于使用所述行宽与高速缓冲存储器(30,130)通信的装置(12,26)。
3.根据权利要求1的高速缓冲存储器,还包括用于在一个数据操作期间传送高速缓冲存储器(30,130)的多个数据块(38)中的数据(38D)的装置(18)。
4.根据权利要求1的高速缓冲存储器,其中,根据处理器(12,26)、任务(13,28)和性能评价中的至少一个来选择行宽。
5.根据权利要求1的高速缓冲存储器,还包括用于使所述行宽与一数据块(38)相关联的装置(38E)。
6.根据权利要求1的高速缓冲存储器,还包括用于根据所述选择的行宽掩蔽主存储器地址(36)的一部分的装置(34,134)。
7.一种管理使用行宽进行通信的存储器的方法,该方法包括以下步骤:
选择性地改变所述行宽;以及
在存储器操作中传送数据,其中数据传送量是基于所述选择的行宽。
8.根据权利要求7的方法,其中,根据处理器(12,26)、任务(13,28)和性能评价中的至少一个来选择所述行宽。
9.根据权利要求7的方法,其中,传送数据包括:
向所述存储器(30,130)提供主存储器地址(36);
根据所述主存储器地址和所述行宽生成查找(37,137);以及
使用所述主存储器地址和所述查找传送位于所述存储器中的至少一个数据块(38)中的数据(38D)。
10.根据权利要求7的方法,还包括使所述行宽与所述数据相关联。
11.根据权利要求10的方法,其中,所述存储器(30,130)包括与第一行宽相关联的第一数据块(38)和与第二行宽相关联的第二数据块,该第二行宽与该第一行宽不同。
12.根据权利要求7的方法,还包括:
使一行宽与一任务(13,28)相关联;
当装载该任务时选择该行宽;以及
当卸载该任务时保存该行宽。
13.根据权利要求7的方法,还包括改变活动任务(13,28)的行宽。
14.一种处理***(10),包括:
包含多个数据块(38)的存储器(14,30,130);
与该存储器相通信的处理器(12,26);
存储被该处理器选择的行宽的宽度部件(22,32);
其中在一存储器操作期间从该些数据块传送的数据(38D)的数量基于该行宽。
15.根据权利要求14的***,还包括主存储器(20),其中所述存储器(14)包括从该主存储器复制的数据。
16.根据权利要求14的***,还包括地址部件(24,34,134),该地址部件生成用于定位所述存储器(14)中的至少一个数据块(38)的查找(37,137),其中该查找基于所述行宽和一主存储器地址(36)的索引部分(36B)。
17.根据权利要求16的***,其中,所述地址部件(24,34,134)还生成用于将数据块(38)与所述主存储器地址(36)相匹配的标记(139),其中该标记基于所述行宽和所述存储器地址。
18.根据权利要求17的***,其中,根据所述行宽设置所述索引部分(36B)在所述主存储器地址(36)中的位置,并且根据所述行宽掩蔽所述标记部分(36A)以生成所述标记(139)。
19.根据权利要求14的***,还包括用于改变活动任务(13,28)的行宽的装置。
20.根据权利要求14的***,还包括用于使所述行宽与任务(13,28)和处理器(12,26)中的至少一个相关联的装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2002/040427 WO2004061675A1 (en) | 2002-12-17 | 2002-12-17 | Selectively changeable line width memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1714347A true CN1714347A (zh) | 2005-12-28 |
Family
ID=32710247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA028300440A Pending CN1714347A (zh) | 2002-12-17 | 2002-12-17 | 选择性可变行宽存储器 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1573553B1 (zh) |
JP (1) | JP4741844B2 (zh) |
CN (1) | CN1714347A (zh) |
AU (1) | AU2002360640A1 (zh) |
IL (1) | IL169137A0 (zh) |
WO (1) | WO2004061675A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385502A (zh) * | 2010-08-25 | 2012-03-21 | 三星电子株式会社 | 用于存储器管理的处理器、设备和方法 |
CN103207843A (zh) * | 2013-04-15 | 2013-07-17 | 山东大学 | 一种数据行宽度可动态配置的cache结构设计方法 |
CN112699063A (zh) * | 2021-03-25 | 2021-04-23 | 轸谷科技(南京)有限公司 | 用于解决通用ai处理器存储带宽效率的动态缓存方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007087372A (ja) * | 2005-08-23 | 2007-04-05 | Canon Inc | メモリ装置、およびメモリ制御方法 |
KR100833178B1 (ko) * | 2005-08-26 | 2008-05-28 | 삼성전자주식회사 | 캐시 메모리에 저장되는 블록개수를 제어할 수 있는 캐시메모리 시스템 및 동작 방법 |
JP5039334B2 (ja) | 2006-07-28 | 2012-10-03 | 富士通セミコンダクター株式会社 | キャッシュメモリ制御方法、及び装置 |
JP5435617B2 (ja) * | 2009-01-22 | 2014-03-05 | エヌイーシーコンピュータテクノ株式会社 | キャッシュメモリ制御回路およびキャッシュメモリ管理方法 |
US8266409B2 (en) * | 2009-03-03 | 2012-09-11 | Qualcomm Incorporated | Configurable cache and method to configure same |
JP7468218B2 (ja) | 2020-07-22 | 2024-04-16 | 富士通株式会社 | 半導体装置およびキャッシュの制御方法 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5132241A (zh) * | 1974-09-13 | 1976-03-18 | Fujitsu Ltd | |
JPS55157182A (en) * | 1979-05-25 | 1980-12-06 | Nec Corp | Buffer memory |
US4315312A (en) * | 1979-12-19 | 1982-02-09 | Ncr Corporation | Cache memory having a variable data block size |
US4503501A (en) * | 1981-11-27 | 1985-03-05 | Storage Technology Corporation | Adaptive domain partitioning of cache memory space |
JPS61210446A (ja) * | 1985-03-15 | 1986-09-18 | Canon Inc | デ−タ貯蔵装置 |
JPH01233537A (ja) * | 1988-03-15 | 1989-09-19 | Toshiba Corp | キャッシュメモリを備えた情報処理装置 |
JP2818415B2 (ja) * | 1988-05-18 | 1998-10-30 | 日本電気株式会社 | バッファ記憶装置 |
JPH0727490B2 (ja) * | 1988-05-18 | 1995-03-29 | 日本電気株式会社 | キャッシュメモリ |
US4994962A (en) * | 1988-10-28 | 1991-02-19 | Apollo Computer Inc. | Variable length cache fill |
US5091851A (en) * | 1989-07-19 | 1992-02-25 | Hewlett-Packard Company | Fast multiple-word accesses from a multi-way set-associative cache memory |
US5257360A (en) * | 1990-03-23 | 1993-10-26 | Advanced Micro Devices,Inc. | Re-configurable block length cache |
US5014195A (en) * | 1990-05-10 | 1991-05-07 | Digital Equipment Corporation, Inc. | Configurable set associative cache with decoded data element enable lines |
JPH04140881A (ja) * | 1990-10-02 | 1992-05-14 | Nec Corp | 情報処理装置 |
JP2646854B2 (ja) * | 1990-12-18 | 1997-08-27 | 三菱電機株式会社 | マイクロプロセッサ |
US5210842A (en) * | 1991-02-04 | 1993-05-11 | Motorola, Inc. | Data processor having instruction varied set associative cache boundary accessing |
US5367653A (en) * | 1991-12-26 | 1994-11-22 | International Business Machines Corporation | Reconfigurable multi-way associative cache memory |
US5386547A (en) * | 1992-01-21 | 1995-01-31 | Digital Equipment Corporation | System and method for exclusive two-level caching |
US5586303A (en) * | 1992-02-12 | 1996-12-17 | Integrated Device Technology, Inc. | Structure and method for providing a cache memory of selectable sizes |
US5465342A (en) * | 1992-12-22 | 1995-11-07 | International Business Machines Corporation | Dynamically adaptive set associativity for cache memories |
JPH07175698A (ja) * | 1993-12-17 | 1995-07-14 | Fujitsu Ltd | ファイルシステム |
US5721874A (en) * | 1995-06-16 | 1998-02-24 | International Business Machines Corporation | Configurable cache with variable, dynamically addressable line sizes |
JP4071886B2 (ja) * | 1998-03-20 | 2008-04-02 | 松下電器産業株式会社 | ブロック・サイズを変更可能なキャッシュ・メモリ・システム |
JP2954178B1 (ja) * | 1998-06-26 | 1999-09-27 | 甲府日本電気株式会社 | 可変式キャッシュ方式 |
JP2001216193A (ja) * | 2000-01-31 | 2001-08-10 | Nec Corp | キャッシュ機構およびキャッシュ機構の動作制御方法 |
-
2002
- 2002-12-17 CN CNA028300440A patent/CN1714347A/zh active Pending
- 2002-12-17 AU AU2002360640A patent/AU2002360640A1/en not_active Abandoned
- 2002-12-17 WO PCT/US2002/040427 patent/WO2004061675A1/en active Application Filing
- 2002-12-17 EP EP02795913.9A patent/EP1573553B1/en not_active Expired - Lifetime
- 2002-12-17 JP JP2004564616A patent/JP4741844B2/ja not_active Expired - Fee Related
-
2005
- 2005-06-14 IL IL169137A patent/IL169137A0/en unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385502A (zh) * | 2010-08-25 | 2012-03-21 | 三星电子株式会社 | 用于存储器管理的处理器、设备和方法 |
CN103207843A (zh) * | 2013-04-15 | 2013-07-17 | 山东大学 | 一种数据行宽度可动态配置的cache结构设计方法 |
CN103207843B (zh) * | 2013-04-15 | 2016-02-03 | 山东大学 | 一种数据行宽度可动态配置的cache结构设计方法 |
CN112699063A (zh) * | 2021-03-25 | 2021-04-23 | 轸谷科技(南京)有限公司 | 用于解决通用ai处理器存储带宽效率的动态缓存方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4741844B2 (ja) | 2011-08-10 |
WO2004061675A1 (en) | 2004-07-22 |
EP1573553B1 (en) | 2016-04-27 |
AU2002360640A1 (en) | 2004-07-29 |
EP1573553A4 (en) | 2007-11-21 |
JP2006510992A (ja) | 2006-03-30 |
EP1573553A1 (en) | 2005-09-14 |
IL169137A0 (en) | 2007-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6961821B2 (en) | Reconfigurable cache controller for nonuniform memory access computer systems | |
CN1317644C (zh) | 简化了缓存替换策略的实现的多线程缓存方法和装置 | |
CN1222870C (zh) | 根据未命中距离将数据预取到高速缓存器中的***和方法 | |
CN103473181B (zh) | 分级式不可变内容可寻址存储器处理器 | |
US4928239A (en) | Cache memory with variable fetch and replacement schemes | |
CN1317645C (zh) | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 | |
US7953953B2 (en) | Method and apparatus for reducing page replacement time in system using demand paging technique | |
US6578111B1 (en) | Cache memory system and method for managing streaming-data | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
JP2002513484A (ja) | フラッシュメモリ大容量記憶システム | |
US6668307B1 (en) | System and method for a software controlled cache | |
US7406579B2 (en) | Selectively changeable line width memory | |
CN113495692A (zh) | 数据存储的方法和键值存储设备 | |
CN1714347A (zh) | 选择性可变行宽存储器 | |
CN1145887C (zh) | 数据处理的装置和方法 | |
CN1324483C (zh) | 在缓存路中进行数据替换的***和方法 | |
US7007135B2 (en) | Multi-level cache system with simplified miss/replacement control | |
US7412569B2 (en) | System and method to track changes in memory | |
Li et al. | Phast: Hierarchical concurrent log-free skip list for persistent memory | |
CN1552025A (zh) | 高速缓存中上下文标识符的使用 | |
US6598124B1 (en) | System and method for identifying streaming-data | |
JP2008512758A (ja) | 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法 | |
WO2002027498A2 (en) | System and method for identifying and managing streaming-data | |
US20060224817A1 (en) | NOR flash file allocation | |
JP2008511882A (ja) | 一意のタスク識別子を用いてデータを共用する仮想アドレス・キャッシュ及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |