高速缓存锁定设备及其方法

文档序号:6477997阅读:246来源:国知局
专利名称:高速缓存锁定设备及其方法
技术领域
本公开内容涉及处理设备,更具体地涉及用于处理设备的高速缓存。
背景技术
处理设备有时采用一个或更多个高速缓存来为处理器提供暂时的、快速的访问存 储位置。响应于正在处理器中执行的存储指令,高速缓存确定该高速缓存的高速缓存行 (cache line)是否已经与存储地址相关联。在高速缓存命中的情况下,该高速缓存将数据 存储在与该存储地址相关联的高速缓存行中。如果不存在与包含有效数据的存储地址相关 联的高速缓存行,则发生高速缓存未中。如果发生高速缓存未中,则该高速缓存通过识别该 高速缓存最近最少使用的(LRU)高速缓存行来确定高速缓存行以存储要存储的数据。将存 储在LRU高速缓存行中的数据替换为正被存储的数据,并且该高速缓存行的标记与该存储 地址相关联。为了保留用于关键数据的高速缓存行,处理器中的软件程序或例程可以指示 该高速缓存锁定高速缓存行,从而迫使该高速缓存行与特定的存储器地址相关联,以便保 证在高速缓存中被锁定的高速缓存行不会被替换为与另一个存储器地址相关联的数据。
除存储数据之外,高速缓存可以存储每个高速缓存行的一致性(coherency)状态 信息,以便保持该高速缓存中的数据与处理系统的外部存储器和其它高速缓存的一致性。 例如,可以响应于接收如下指示而使与高速缓存行相关联的有效位无效,该指示为已经在 高速缓存外部的存储位置处请求访问与高速缓存行相关联的存储器地址。响应于对与高速 缓存行相关联的存储器地址的外部存储器访问,当前处理设备将自动地将高速缓存行置于 未锁定状态,从而允许分配高速缓存行来存储来自任何地址的数据。因此,为了保持被无效 的高速缓存行的锁定状态,软件程序或例程必须监视锁定的高速缓存行并且当它被无效时 重新锁定该高速缓存行。这增加了软件程序的大小并且降低了它的效率。因此,需要一种 新的处理设备。


图1是处理设备100的具体实施例的框图; 图2是处理设备100的一部分的具体实施例的框图; 图3是图1的高速缓存的具体实施例的框图; 图4是图1的高速缓存的可能状态的具体实施例的框图; 图5是示出了在图1的高速缓存的高速缓存行的可能状态之间的变化的具体实施 例的图;以及 图6是在高速缓存中加载和存储数据的方法的具体实施例的流程图。
具体实施例方式
公开了一种用于锁定高速缓存的高速缓存行的方法和设备。该方法包括响应于 接收如下的指示,自动地将高速缓存行的状态从有效的锁定状态变为无效的锁定状态,该指示为该高速缓存外部的并且对应于该高速缓存行的存储位置与处理器或其它数据访问 模块的访问请求相关联。因而,即使在使锁定的高速缓存行中的数据无效之后,也保持高速 缓存行的锁定状态。通过保持该无效的锁定状态,高速缓存行不可用于高速缓存的再分配。 这使得变为无效的锁定的高速缓存行能够保持锁定,而没有用于周期性确定该锁定是否已 经由于高速缓存行的无效而失去的额外软件开销。 参考图l,示出了设备100的具体实施例。设备100包括处理器102、高速缓存104、 一致性控制模块110、前端高速缓存112、处理器120、存储器控制器130、1/0控制器132和 存储器134。设备100还包括总线103、前端总线105和I/O总线107。处理器102通过总 线103访问高速缓存104。处理器102、一致性控制模块IIO和处理器120通过前端总线105 彼此连接。 一致性控制模块110、存储器控制器130和I/O控制器132通过I/O总线107彼 此连接。存储器控制器130连接到存储器134。将理解,图1所示的模块的其它配置是可能 的。例如,在具体实施例中,所有模块连接到公共总线或交叉开关。 处理器102可以是诸如微处理器、微控制器等的处理器。类似地,处理器120可以 是诸如微处理器、控制器、微控制器等的处理器。 高速缓存104可以是数据高速缓存、指令高速缓存、统一的(unitary)高速缓存等 等。在具体实施例中,高速缓存104是8路组关联的高速缓存。经由总线103访问高速缓 存104,该高速缓存104存储与处理器102中执行的指令相关联的数据。
高速缓存104包括大量高速缓存行,每个有效高速缓存行与存储器地址相关联。 此外,高速缓存104保存每个高速缓存行的状态信息,包括一致性状态信息。例如,对于每 个高速缓存行,高速缓存104指示存储在高速缓存行中的数据是否有效,它是否是共享数 据,该数据是否已由处理器102修改,等等。状态信息还指示每个高速缓存行的锁定状况 (status),以便指示高速缓存行是否可以与不同的存储器地址相关联。在具体实施例中,高 速缓存104是回写式高速缓存。在另一个具体实施例中,高速缓存104是直写式高速缓存。
存储器控制器130经由I/O总线接收存储器访问请求,并且基于那些存储器请求 而访问包括存储器134、前端高速缓存112的存储器,或者经由I/O控制器132访问外部存 储器。在具体实施例中,将存储器控制器130访问的存储器134与图1所示的其它元件集 成在公共衬底(诸如封装衬底或公共集成电路衬底)上。存储器134可以是易失性或非易 失性的存储器。 将I/0控制器132配置为便于设备100的模块与外部外围设备(未示出)之间的 通信。例如,1/0控制器132可以允许存储器控制器130访问外围存储器设备。因此,I/O 控制器管理外围设备(包括存储器)与设备100的模块之间的信息的通信。
前端高速缓存112可以是数据高速缓存、指令高速缓存、统一的高速缓存等等。对 于可以访问前端总线105的设备100的模块(诸如处理器102和处理器120),前端高速缓 存112是可访问的。 —致性控制模块IIO从前端总线105和1/0总线107接收一致性信息,并且基于所 接收的一致性信息将一致性控制信息提供给设备100的模块,以便确保保持数据一致性。
在操作期间,处理器102和处理器120都可以访问存储器134和高速缓存112。例 如,处理器102可以通过将存储器地址发送到存储器控制器130来读取存储器134的位置。 作为响应,存储器控制器130从存储器134中检索与该存储器地址相关联的数据。在具体器130检索足够的数据以填充高速缓存104的高速缓存行并且将数 据提供给处理器102。处理器102接收所检索的数据并且将它存储在高速缓存104的高速 缓存行中。此外,高速缓存104存储与存储器地址相关联的标记信息,该标记信息指示检索 的高速缓存行与从其中检索该数据的存储器134的存储器地址相关联。处理器120和处理 器102可以类似地访问存储器134并且将所检索的数据存储在前端高速缓存112中。
—致性控制模块110接收与访问存储器134、前端高速缓存112、高速缓存104和 设备100的任何其它存储器有关的信息,并且将一致性信息提供给前端高速缓存112、高速 缓存104和其它存储器以保持数据一致性。例如,如果外部处理器或其它设备在存储器134 中访问与高速缓存104的高速缓存行相关联的存储器地址,则一致性控制模块110向高速 缓存104通知该存储器访问。 为了向高速缓存104通知与存储器地址相关联的存储器访问, 一致性模块110可 以经由处理器102将一致性控制信息提供给高速缓存104。基于此信息,可以保持与存储器 地址相关联的高速缓存104的高速缓存行的一致性信息的状态。例如,响应于指示已经请 求访问存储器地址的一致性控制信息,高速缓存104可以改变与存储器地址相关联的高速 缓存行的一致性状态信息,以便指示存储在该高速缓存行中的数据是无效的。
处理器102可以通过执行指令来控制高速缓存行的锁定状态,以便基于程序或操 作系统的用户指令来设置每个高速缓存行的锁定状态。例如,软件可以发出指令来明确地 锁定或解锁高速缓存104的特定高速缓存行。处于锁定状态的高速缓存行不可用于被高速 缓存104响应于处理器102中的存储器访问而再分配。因此,只要锁定的高速缓存行处于 锁定状态,它就仍然被分配给特定地址。 —旦被锁定,高速缓存104的高速缓存行的锁定状态不会响应于由一致性控制模 块110引起的高速缓存行一致性状况的变化而变化。取而代之,在高速缓存104中维持锁 定状态,直到处理器102中的指令明确地改变它。因此,在由于存储器134中的存储器访问 而导致锁定的高速缓存行的一致性状况从有效状态变为无效状态的情况下,高速缓存行仍 然是锁定的。由于不需要软件干预来保持锁定,因此自动将高速缓存行保持锁定与现有技 术相比具有优势。 参考图2,示出了处理器202(对应于图1的处理器102)、总线203(对应于图1的 总线103)、高速缓存204 (对应于图1的高速缓存104)和高速缓存一致性模块210 (对应于 图1的高速缓存一致性模块110)的具体实施例的框图。处理器202和高速缓存204每个 都连接到总线203。高速缓存一致性模块210和处理器202连接到与图1的前端总线105 对应的前端总线205。 总线203包括地址总线280、数据总线281、控制总线282 ("CTRL")和命中/未中 总线283 ( "H/M")。地址总线280在处理器202和高速缓存204之间传递地址信息,而数 据总线281传递要被加载或存储的数据。控制总线282传递控制信息,并且命中/未中总 线283在处理器202和高速缓存204之间传递高速缓存命中信息。 处理器202包括加载/存储控制模块220、存储器子系统(MSS) 222和总线接口单 元(BIU) 224。加载/存储控制模块220连接到存储器子系统222,存储器子系统222为处 理器202的模块提供到总线203的接口,而总线接口单元224为处理器202的模块提供到 总线205的接口。
6
加载/存储控制模块220与存储器子系统222通信来控制处理器202的加载和存 储操作。存储器子系统222在需要时通过将控制信息提供给CTRL总线282和总线205来执 行加载和存储操作。存储器子系统222经由总线接口单元224向高速缓存一致性模块210 提供一致性控制信息并且从高速缓存一致性模块210接收一致性控制信息。
高速缓存204包括阵列控制模块230、数据阵列232、最近最少使用的(LRU)阵列 234和标记/状况阵列236。数据阵列232包括高速缓存204的高速缓存行。高速缓存行 被存储为多个高速缓存行组,每个高速缓存行组与被称为索引的存储器地址的特定部分相 关联。LRU阵列234存储如下的信息,该信息指示高速缓存行组内的哪个高速缓存行是最近 最少使用的。在具体实施例中,LRU阵列234被实现为伪LRU。 标记/状况阵列236存储每个高速缓存行的标记信息和一致性信息。阵列控制模 块230经由CTRL总线282接收加载和存储控制信息。基于该加载和存储控制信息,阵列控 制模块访问标记/状况阵列236、 LRU阵列234和数据阵列232以执行加载和存储操作。
在操作期间,存储器子系统222经由控制总线282提供高速缓存204的高速缓存 行的状况控制信息。状况控制信息可以基于从高速缓存一致性模块210接收到的一致性信 息,或者基于正由加载/存储模块220处理的指令,诸如加载/存储指令和明确指示高速缓 存204的位置应当被锁定的指令。基于该控制信息,阵列控制模块230改变标记/状况阵 列236中的相关联高速缓存行的状况信息。 加载/存储控制模块220与存储器子系统222接口连接,以便执行由正在处理器 202中运行的软件程序或例程提供的加载和存储指令。为了执行加载指令,存储器子系统 222经由地址总线280将地址提供给高速缓存204。响应于接收该地址,阵列控制模块230 基于该地址将索引值提供给标记/状况阵列236,标记/状况阵列236提供与如下高速缓 存行组的高速缓存行相关联的一组标记值和状况信息,该高速缓存行组对应于该索引。基 于所接收的标记和状况值,阵列控制模块230确定高速缓存行是否已经被分配给该地址, 以及该高速缓存行是否存储有效数据。如果已将存储有效数据的高速缓存行分配给该地址 (即,高速缓存命中),则阵列控制模块230在命中/未中总线283上指示命中并且从数据 阵列232中检索所请求的数据。经由数据总线281将所检索的数据提供给处理器202。
如果标记/状况阵列236指示在数据阵列232中不存在与提供的地址相关联的高 速缓存行,或者如果在数据阵列232中存在具有无效数据的与提供的地址相关联的高速缓 存行,则相对于该加载指令发生了高速缓存未中。如果发生高速缓存未中,则阵列控制模块 230在命中/未中总线283上指示未中,向存储器子系统222通知应当从存储器检索所请求 的数据。响应于高速缓存未中,存储器子系统222从其它地方检索所请求的数据,并且当接 收到数据时通过执行存储操作将它存储在高速缓存204中。 为了执行存储操作,在发生高速缓存未中的情况下检索数据之后或者响应于加载 /存储控制模块220中的存储指令,存储器子系统经由地址总线280将与要被存储的数据相 关联的地址提供给高速缓存204。经由数据总线281提供要被存储的数据。为了存储数据, 阵列控制模块230访问标记/状况阵列以确定数据阵列232中的有效或锁定的高速缓存行 是否已经被分配给该接收的地址。如果是这样的话,阵列控制模块230将该访问处理为引 起高速缓存命中,并且将接收的数据存储在由标记/状况阵列236指示的数据阵列232中 的高速缓存行中。如果在数据阵列232中不存在已经与该地址相关联的高速缓存行,则阵
7列控制模块230存储LRU阵列234,以便确定数据阵列232中的用来存储该数据的高速缓存 器线。 响应于明确锁定存储器地址的指令的执行,加载/存储控制模块220可以向存储 器子系统222指示应当锁定与存储器地址相关联的高速缓存行。为了锁定高速缓存行,存 储器子系统222经由CTRL总线282发送控制信息并且经由地址总线280发送存储器地址。 响应于接收存储器地址,阵列控制模块230确定数据阵列232的高速缓存行是否与存储器 地址相关联。如果是这样的话,阵列控制模块设置存储在标记/状况阵列236中的与高速 缓存行相关联的状况信息的状态,以便指示高速缓存行被锁定。锁定状况指示符(诸如图 4讨论的专用锁定位)可以指示标记/状况阵列236中的高速缓存行的锁定状态。
如果高速缓存行不与要被锁定的存储器地址相关联,则阵列控制模块230向存储 器子系统222发送请求,以便从除了高速缓存204之外的其它位置检索与该存储器地址相 关联的数据。在数据已被检索并且存储在数据阵列232的高速缓存行中之后,阵列控制模 块230设置与高速缓存行相关联的状况信息的状态,从而指示高速缓存行被锁定。
在存储操作期间,锁定的高速缓存位置不能够被LRU阵列234识别出以用于与其 它存储位置相关联。此外,即使标记/状况阵列236指示高速缓存位置处的数据是无效的, 在标记/状况阵列236中也维持该高速缓存位置的锁定状态。因此,锁定的高速缓存行保 持锁定,直到由加载/存储控制模块220中的指令明确地将它解锁。 参考图3,示出了对应于图2的高速缓存204的具体实现形式的高速缓存304的 具体实施例的框图。高速缓存304包括阵列控制模块330、数据阵列332、最近最少使用的 (LRU)阵列334以及标记/状况阵列336。阵列控制模块330包括路计算模块340、标记比 较模块342和索引生成模块344。路计算模块340包括连接到命中/未中(H/M)总线383 的输入、连接到总线396 (T)的输入、连接到总线382 (CTRL)的输入、连接到总线398 (WAY_T) 的输入以及连接到总线393(LRU)的输入。路计算模块340还包括连接到总线394(WAY)的 输出。 标记比较模块342包括连接到总线395 (TAG)的输入和连接到总线392 (STATUS/ TAGX8)的输入。标记比较模块342还包括连接到H/M总线383的输出、连接到T总线396 的输出和连接到WAY_T总线398的输出。索引生成模块344包括连接到总线380 (ADDRESS) 的输入和连接到总线382 (CTRL)的输入。索引生成模块344还包括连接到总线391 (INDEX) 的输出和连接到TAG总线395的输出。 数据阵列332包括连接到WAY总线394的输入和连接到INDEX总线391的输入。 数据阵列332还包括连接到总线381 (DATA)的输入/输出。LRU阵列334包括连接到INDEX 总线391的输入和连接到LRU总线393的输出。 标记/状况阵列336包括连接到INDEX总线391的输入、连接到CTRL总线382的 输入和连接到STATUS/TAGX8总线392的输出。标记/状况阵列336存储标记/状况信息, 诸如表示特定高速缓存行的标记信息和状况信息的标记/状况信息350。标记/状况信息 350包括标记信息352、有效性信息354、修改信息356、共享信息358和锁定信息360。
标记/状况阵列336中的状况信息可以由CTRL总线382上提供的控制信息基于 一致性信息或基于处理器中执行的指令而改变。例如,一致性控制模块210(图2)可以经 由CTRL总线382指示应当将有效信息354的状况设置为指示与标记信息350相关联的高速缓存行是无效的。类似地,加载/存储控制模块220(图2)中执行的指令可以经由CTRL 总线382明确地设置锁定信息360的状况。 索引生成模块344解码ADDRESS总线380上提供的地址。基于该地址,索引生成模 块344在TAG总线395上提供标记并且在INDEX总线391上提供索引。索引生成模块344 还经由CTRL总线382接收控制信息,包括指示接收的地址是否与加载或存储操作相关联的 信息。索引生成模块可以经由TAG总线395提供此控制信息。 标记/状况阵列336经由INDEX总线391接收索引信息。基于该索引信息,标记/ 状况阵列336经由STATUS/TAGX8总线392提供与索引信息相关联的每个高速缓存行的标 记信息和状况信息。在具体实施例中,高速缓存304是8路关联高速缓存,因此经由STATUS/ TAGX8总线392提供8组标记和状况信息。 标记比较模块342将经由TAG总线395接收的标记信息与经由STATUS/TAGX8总 线392接收的标记信息进行比较,以便确定是存在高速缓存命中还是高速缓存未中。标记 比较模块342经由H/M总线383指示高速缓存命中或高速缓存未中。此外,如果发生高速 缓存命中,则标记比较模块342经由WAY_T总线398提供指示与该命中标记相关联的高速 缓存行的信息。此外,标记比较模块342基于接收的与该命中标记相关联的状况信息来确 定与高速缓存命中相关联的高速缓存行是否为无效和锁定的高速缓存行,并且经由T总线 396提供指示高速缓存行的无效和锁定状况的信息。 LRU阵列334接收经由INDEX总线391提供的索引。基于接收的索引,LRU阵列 334确定与该索引相关联的最近最少使用的高速缓存行,并且经由LRU总线393指示高速缓 存行。在具体实施例中,LRU阵列334使用伪LRU程序来确定最近最少使用的高速缓存行。
路计算模块340在CTRL总线382上接收指示是否正在执行加载或存储操作的信 息,并且在H/M总线383上接收指示该加载或存储操作是否已经导致高速缓存命中或高速 缓存未中的信息。如果发生高速缓存命中,则路计算模块340访问经由WAY_T总线398接 收的高速缓存行信息,以便确定应当加载或存储哪个高速缓存行。如果对于存储操作发生 高速缓存未中,则路计算模块340访问经由LRU总线393提供的信息,以便确定应当存储哪 个高速缓存行。路计算模块340基于由H/M总线383提供的命中/未中信息、由CTRL总线 382提供的加载/存储信息以及由T总线396提供的有效-锁定信息,来选择高速缓存行。
例如,如果接收的信息指示加载操作和高速缓存命中,则路计算模块340选择经 由WAY_T总线398提供的高速缓存行信息。如果接收的信息指示加载操作和高速缓存未中, 则路计算模块340不选择高速缓存行信息,因为请求的数据没有存储在高速缓存中并且必 须从存储器中检索。 如果接收的信息指示存储操作和高速缓存未中,并且T总线396指示没有无效且 锁定的高速缓存行与接收的地址相关联,则路计算模块选择经由LRU总线393提供的高速 缓存行信息。如果接收的信息指示存储操作和高速缓存未中,并且T总线396指示无效且 锁定的路与接收的地址相关联,则路计算模块342选择经由WAY_T总线398提供的高速缓 存行信息。如果接收的信息指示高速缓存命中,则路计算模块342选择经由WAY_T总线398 提供的高速缓存行信息。 数据阵列332经由WAY总线394接收高速缓存行信息以及指示正在执行加载操作 还是存储操作的信息。如果发生加载操作,则数据阵列332在DATA总线381上提供在指示
9的高速缓存行中存储的数据。如果发生存储操作,数据阵列332将在DATA总线381上提供 的数据存储在指示的高速缓存行中。 将理解,高速缓存行的状况位可以用于确定阵列控制模块330将如何处理高速缓 存行。例如,参考图4,在表400的列401-404中列出了用于有效(V)、修改(M)、共享(S) 和锁定(L)的高速缓存状况位。如图所示,将理解,一组状况位值可以对应于多于一个的状 态项,如这里所使用的。例如,具有表400的行410中所示的状况位值的高速缓存行可以被 认为是处于有效状态、修改状态、共享状态和未锁定状态以及它们的组合。类似地,具有表 400的行412中所示的状况位值的高速缓存行可以被认为是处于无效状态、未修改状态、排 它状态和锁定状态。因此,将理解,基于特定的一组状况位状态,可以认为高速缓存行处于 有效且未锁定(有效/未锁定)状态(如列405所示)、有效且锁定(有效/锁定)状态 (如列406所示)、无效且未锁定(无效/未锁定)状态(如列407所示)、或者无效且锁定 (无效/锁定)状态(如列408所示)。将理解,不是该表中阐述的所有状态对于所有的一 致性方案都可以是有效的。 高速缓存行的状况可以用于确定高速缓存如何处理高速缓存行。例如,如果高速 缓存行的状况是无效且锁定的(如列408所示),则高速缓存可以防止该高速缓存行被与不 同的存储器地址相关联的数据替代,从而保持该高速缓存行的锁定状况。
参考图5,示出了描述高速缓存中的高速缓存行的可能状态的具体实施例的状态 图500。状态图500示出了高速缓存行的四个特定状态未分配状态502、有效/未锁定状 态504、无效/锁定状态506和有效/锁定状态508。如图所示,高速缓存行可以开始于未 分配状态502(诸如在重置操作之后),其指示还没有为高速缓存行分配存储器地址。未分 配状态还可以对应于高速缓存行处于无效/未锁定状态中的状态。 如果在未分配状态502下通过加载或存储操作来为高速缓存行分配存储器地址, 则高速缓存行的状态移到有效/未锁定状态504,例如,高速缓存行的有效位(V)被断言 (assert)并且高速缓存行的锁定位被求反(negate)。如果在未分配状态502下接收到软 件锁定指令,则为高速缓存行分配存储器地址,从除了该高速缓存之外的存储器中检索与 该存储器地址相关联的数据并且将其存储在高速缓存行中,并且将该高速缓存行的状态设 置为有效/锁定状态508,例如,高速缓存行的有效位(V)和锁定位(L)两个都被断言。在 可替代实施例(未示出)中,响应于软件锁定不检索数据,并且将高速缓存行的状态设置为 无效/锁定状态506,例如,高速缓存行的有效位(V)被求反并且高速缓存行的锁定位(L) 被断言。 在有效/未锁定状态504下,如果接收到无效指示(诸如由于外部模块对与该存 储器地址相关联的数据的访问或者由于使其无效的软件指令),则将高速缓存行的状态设 置为无效/未锁定状态502,例如,高速缓存行的有效位(V)被求反。如果在有效/未锁定 状态504下接收到软件锁定指令,则高速缓存行的状态被设置为有效/锁定状态508,例如, 高速缓存行的锁定位(L)被断言。 如果在有效/锁定状态508下接收到解锁存储器地址的软件指令,则将高速缓存 行的状态设置为有效/未锁定状态504,例如,高速缓存行的锁定位(L)被求反。如果在有 效/锁定状态508下指示有使其无效的事件(诸如由外部模块对与该存储器地址相关联 的数据的访问)或使其无效的软件指令,则将高速缓存行的状态设置为无效且锁定的状态506,例如,高速缓存行的有效位(V)被求反。 如果在无效/锁定状态506下接收到加载/存储操作,则将高速缓存行的状态设 置为有效/锁定状态,例如,高速缓存行的有效位(V)被断言。如果在无效/锁定状态506下 接收到解锁高速缓存行的软件指令,则将高速缓存行的状态设置为无效/未锁定状态502, 例如,高速缓存行的锁定位(L)被求反。 参考图6,示出了处理高速缓存访问的方法的具体实施例的流程图。在块602处, 确定高速缓存访问是加载操作还是存储操作。如果发生加载操作,则该方法流移到块604, 并且确定该加载操作是导致高速缓存命中还是高速缓存未中。如果发生高速缓存命中,则 该方法流前进到块606并且从发生高速缓存命中的高速缓存行中提供数据,并且该方法流 前进到块624并且所示的方法结束。 如果在块604中确定了高速缓存未中,则该方法流移到块608并且从除了该高速 缓存之外的存储器中检索数据。 一旦检索到数据,则该方法流前进到块610,使得检索的数 据可以被存储在高速缓存中。 回到块602,如果确定了高速缓存访问是存储操作,则该方法流移到块610,并且 确定与该存储操作相关联的地址是导致高速缓存命中、高速缓存未中还是高速缓存过期 (stale)命中。高速缓存过期命中指的是存在对应于与该存储操作相关联的地址的、锁定的 高速缓存行,但是该锁定的高速缓存行存储无效的数据。 如果发生高速缓存命中,则该方法流移到块620并且确定与该高速缓存命中相关 联的高速缓存行。该方法流移到块622并且将与该存储相关联的数据存储到该高速缓存 行。该方法流前进到块624并且该方法结束。 回到块610,如果高速缓存访问导致过期命中,则该方法流移到块618并且确定与 该地址相关联的无效/锁定高速缓存行。该方法流前进到块622,其中将数据存储在该高速 缓存行中。 如果在块610中确定了高速缓存未中,则该方法流移到块612,并且基于一组高速 缓存行中的哪一个高速缓存行是最近最少使用的(LRU)来确定高速缓存行。在块622中, 将与该高速缓存访问相关联的数据存储在确定的高速缓存行中。 因而,所示的方法允许即使当与高速缓存行相关联的数据是无效的时也保持该高 速缓存行的锁定状况。这减少了当数据被无效时软件再锁定先前锁定的高速缓存行的需 要,从而提高了软件效率。 在本文件中,诸如"第一"和"第二"等的关系术语可以被单独使用以将一个实体 或动作与另一个实体或动作区分开来,而不一定要求或暗示在这样的实体或动作之间存在 任何实际的这样的关系或顺序。术语"包括"、"包含"或其任何其它变体意图覆盖非排它的 包含,使得包括一列要素的过程、方法、物品或装置不仅包括那些元素,而且可以包括没有 明确列出的或者为这种过程、方法、物品或装置所固有的其它要素。"包括"之后的要素毫无 更多约束地不排除在包括该要素的过程、方法、物品或装置中附加的等效要素的存在。术语 "或"意图覆盖包括性的"或",使得如果有条件的"或"的两个条件都满足的话,则该条件满 足。术语"范围"可以包括仅仅包括单个值的范围。 这里使用的术语"另一个"被定义为至少第二个或更多个。这里使用的术语"包 括"、"具有"或其任何变体被定义为包括。这里参考电光技术使用的术语"耦接"被定义为
11连接,但是不一定是直接连接而且不一定是机械连接。 使用术语"断言"或"设置"和"求反"(或"解除断言"或"清除")来指代分别将 信号、状况位或类似的装置变为它的逻辑真或逻辑假状态。如果逻辑真状态为逻辑电平一, 则逻辑假状态为逻辑电平零。并且如果逻辑真状态为逻辑电平零,则逻辑假状态为逻辑电平一。 这里使用的术语"总线"用来指代可以用来传送一个或更多个各种类型的信息 (诸如数据、地址、控制或状况)的多个信号或导体。这里讨论的导体可以被示出或描述为 单个导体、多个导体、单向导体或双向导体。但是,不同的实施例可以改变导体的实现方式。 例如,可以使用分开的单向导体而不是双向导体,反之亦然。此外,多个导体可以被替换为 串联或以时分复用方式传送多个信号的单个导体。同样地,传送多个信号的单个导体可以 被分成传送这些信号的子集的各个不同的导体。因此,对于传送信号而言存在许多种选择。
考虑这里公开的内容的说明和实践,该公开内容的其它实施例、用途和优点对本 领域技术人员而言将是清楚的。例如,尽管高速缓存中的存储操作已被描述为将数据直接 写到高速缓存行中,但是其它高速缓存可以通过从高速缓存中读取高速缓存行、利用要被 存储的数据修改高速缓存行、并且将修改的高速缓存行写到高速缓存中来执行存储操作。 因此,该说明书和附图应当被认为仅仅是示范性的,因此该发明的范围意图仅仅由以下权 利要求及其等同物来限定。
权利要求
一种方法,包括以下步骤当高速缓存中的高速缓存行处于第一状态时,接收第一指示,所述第一指示是所述高速缓存外部的对应于所述高速缓存行的存储位置与访问请求相关联,所述第一状态表明所述高速缓存行是有效且锁定的;以及响应于接收所述第一指示,自动地将所述高速缓存行的状态从所述第一状态变为第二状态,所述第二状态表明所述高速缓存行中的数据为无效且锁定的。
2. 如权利要求1所述的方法,还包括以下步骤响应于第一指令在第一处理器中的执 行,将所述高速缓存行的状态从第三状态变为所述第二状态,所述第三状态表明所述高速 缓存行中的数据是有效且未锁定的。
3. 如权利要求2所述的方法,其中响应于第二指令在第二处理器中的执行来接收所述 第一指示。
4. 如权利要求1所述的方法,其中所述第一状态还表明所述高速缓存外部的数据已被 修改。
5. 如权利要求1所述的方法,其中响应于第一指令在第一处理器中的执行来接收所述 第一指示。
6. 如权利要求1所述的方法,其中所述第二状态还表明所述数据被共享。
7. 如权利要求1所述的方法,其中所述第二状态还表明所述数据已被修改。
8. 如权利要求1所述的方法,还包括以下步骤响应于第二指令在所述第一处理器中 的执行,自动地将所述高速缓存行的状态从第三状态改变回到所述第二状态。
9. 如权利要求8所述的方法,其中所述第二指令是存储指令。
10. 如权利要求1所述的方法,其中自动地将高速缓存行的状态从第二状态变为第三状态的步骤还包括基于模式位的状态改变高速缓存行的状态。
11. 如权利要求l所述的方法,还包括以下步骤响应于第二指令在所述第一处理器中 的执行,自动地将所述高速缓存行的状态从第三状态变为第四状态,所述第四状态表明所 述高速缓存行是无效且未锁定的。
12. 如权利要求11所述的方法,还包括以下步骤响应于第三指令在所述第一处理器 中的执行,自动地将所述高速缓存行的状态从所述第四状态变为所述第二状态。
13. 如权利要求11所述的方法,还包括以下步骤响应于第三指令在所述第一处理器 中的执行,自动地将所述高速缓存行的状态从所述第四状态变为所述第三状态。
14. 如权利要求l所述的方法,还包括以下步骤 接收与所述高速缓存中的存储访问相关联的地址; 接收与所述存储访问相关联的数据;以及响应于确定所述高速缓存行处于第二状态且所述高速缓存行与所述地址相关联,将所 述数据存储在所述第一高速缓存行中。
15. 如权利要求14所述的方法,还包括以下步骤响应于确定所述高速缓存不包括与 所述地址相关联的任何高速缓存行,确定可用的高速缓存行并且将所述数据存储在所述可 用的高速缓存行中。
16. 如权利要求15所述的方法,其中确定可用的高速缓存行的步骤包括响应于确定 所述高速缓存行处于所述第二状态,确定所述高速缓存行不可用。
17. —种设备,包括 处理器;高速缓存,耦接到所述处理器,所述高速缓存包括 数据阵列,被配置为存储高速缓存行;状况模块,被配置为存储与所述高速缓存行相关联的状态信息;阵列控制模块,耦接到所述状况模块,所述阵列控制模块被配置为响应于锁定指令在 所述处理器中的执行,将所述状态信息变为第一状态,所述第一状态表明所述高速缓存行 为有效且锁定的,并且所述阵列控制模块被配置为响应于接收所述高速缓存外部的并且对 应于所述高速缓存行的数据位置与访问请求相关联的指示,自动地将所述状态信息从所述 第一状态变为第二状态,所述第二状态表明所述高速缓存行中的数据是无效且锁定的。
18. 如权利要求17所述的设备,其中所述阵列控制模块被配置为响应于第二指令在所 述处理器中的执行,自动地将所述状态信息从所述第二状态变为所述第一状态。
19. 如权利要求17所述的设备,其中所述阵列控制模块被配置为响应于第二指令在所 述处理器中的执行,自动地将所述状态信息从所述第二状态变为第三状态,所述第三状态 表明所述高速缓存行是无效且未锁定的。
20. 如权利要求18所述的设备,其中所述高速缓存是回写式高速缓存。
全文摘要
公开了一种用于锁定高速缓存的高速缓存行的方法和设备。该方法包括响应于接收指示而自动地将高速缓存行的状态从有效且锁定状态变为无效且锁定状态(508),该指示是该高速缓存(104)外部的并且对应于该高速缓存行的存储位置(134)与处理器(120)或其它数据访问模块的访问请求相关联。因而,即使在锁定的高速缓存行中的数据被无效之后,也保持高速缓存行的锁定状态。通过保持该无效且锁定的状态,高速缓存行不可用于高速缓存的再分配。这允许变为无效的锁定的高速缓存行保持锁定,而没有用于周期性地确定该锁定是否已经由于高速缓存行的无效而丢失的额外软件开销。
文档编号G06F12/00GK101772759SQ200880101685
公开日2010年7月7日 申请日期2008年6月17日 优先权日2007年8月2日
发明者D·F·格林伯格, G·L·维森亨特, K·C·斯达瑟尔, K·M·布鲁斯, M·B·斯米特勒, M·D·斯尼德尔, S·R·拉曼 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1