CN101326500B - 提供同时软件/硬件高速缓存填充的方法与装置 - Google Patents
提供同时软件/硬件高速缓存填充的方法与装置 Download PDFInfo
- Publication number
- CN101326500B CN101326500B CN2007800005376A CN200780000537A CN101326500B CN 101326500 B CN101326500 B CN 101326500B CN 2007800005376 A CN2007800005376 A CN 2007800005376A CN 200780000537 A CN200780000537 A CN 200780000537A CN 101326500 B CN101326500 B CN 101326500B
- Authority
- CN
- China
- Prior art keywords
- speed cache
- heavily
- cache
- software
- att
- 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.)
- Active
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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
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
一种方法与装置,提供硬件实现的高速缓存重填电路,用来管理至少一个地址转换表高速缓存,该至少一个地址转换表高速缓存包含用来将外部地址转换为处理系统的物理地址的数据;提供软件实现的高速缓存重填功能,也用来管理该至少一个地址转换表高速缓存;以及利用所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能,同时重填该至少一个地址转换表高速缓存。
Description
技术领域
本发明涉及利用同时硬件和软件高速缓存填充特征、将地址从外部存储空间转换到处理器的存储空间的方法与装置。
背景技术
近年来,由于前沿计算机应用涉及实时多媒体功能,所以人们越来越希望有更快的计算机处理数据吞吐量。图形应用为对处理系统要求最高的应用中的一种,这是因为其在相对较短的时间段内需要大量的数据访问、数据计算、以及数据操作,以获得希望的视觉效果。这些应用要求极快的处理速度,例如每秒几千兆数据。一些处理系统采用单处理器来达到快速处理速度,而其他处理系统利用多处理器体系结构来实现。在多处理器系统中,多个子处理器可以并行(或者至少是协调地)操作,以获得所希望的处理结果。
执行此类应用的适当的处理系统可以包括一个或多个处理器与存储器。在某些处理系统中,可能希望将数据从外部系统(例如另一处理系统、CCD等等)传送到处理系统的存储器。因为可能相对于处理系统的存储器空间转换外部系统可见的存储空间,所以可能需要将与该数据传送相关的外部系统的存储地址转换到处理系统的存储器。希望快速进行这种转换,以满足处理系统的速度目标。
发明内容
技术方案
本发明的一个或多个实施例可以提供一种改进技术,其利用组合硬件和软件高速缓存特征,来转换外部系统的地址,从而来自外部系统的数据可以存储在处理系统的内部存储器空间中,如基于多处理器的体系结构。虽然本发明可以用于许多应用,但是当其用来促进可预测的数据访问(例如流传送视频)以及不可预测的数据访问两者时,会获得优势。
流传送视频应用或者绘图/纹理应用中的数据访问要求实时响应(以及低抖动)。此类数据访问相对可预测,这是因为可以预先确定来自提出请求的I/O设备的访问地址以及定时。由此,软件实现的高速缓存重填机制可以用来预装数据(在高速缓存不中(cache miss)之前),以提高处理效率并且减少抖动。但是,请注意在高速缓存不中的情况下,要完成软件实现的高速缓存重填可能需要大约几微秒。要容纳所有类型的数据访问(尤其是那些要求实时低抖动结果的数据访问)这不够快。硬件实现的高速缓存重填机制显示一般较快的重填速度(大约几百毫微秒级)。但是,对于某些性能关键访问来说,这仍不够快,并且会导致例如流传送视频应用中显著的抖动。
根据本发明的一个或多个实施例,提供硬件与软件高速缓存重填机制两者,其中这两套机制可以同时操作。由此,例如,即使当硬件高速缓存重填机制正进行重填时,也可以进行数据预装。硬件与软件高速缓存重填机制共享相同的高速缓存项目(entry),但是每个项目具有仅可以由软件机制控制的锁定位。如果一项目已经被软件锁定,则硬件机制必须使用另一高速缓存路。在优选实现中,软件机制处理可预测的数据访问,而硬件机制处理不可预测的数据访问。这会导致较高的处理效率并且减低抖动,即获得更好的实时结果。
根据本发明的一个或多个实施例,一种方法与装置,使之能够:提供硬件实现的高速缓存重填电路,用来管理至少一个地址转换表高速缓存,该至少一个地址转换表高速缓存包含用来将外部地址转换为处理系统的物理地址的数据;以及提供软件实现的高速缓存重填功能,用来在高速缓存不中之前预装该至少一个地址转换表高速缓存。所述预装步骤保留所述至少一个地址转换表高速缓存的一个或多个高速缓存行、以及所述处理系统的存储器中由所述物理地址寻址的一个或多个相关物理存储器位置。所述预装步骤可以包括:锁定所述至少一个地址转换表高速缓存的一个或多个高速缓存行,以免由所述硬件实现的高速缓存重填电路重填。
根据本发明的一个或多个实施例,一种方法与装置,使之能够:利用所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能,同时重填所述至少一个地址转换表高速缓存。
根据本发明的一个或多个实施例,一种方法与装置,使之能够:提供硬件实现的高速缓存重填电路,用来管理至少一个地址转换表高速缓存,该至少一个地址转换表高速缓存包含用来将外部地址转换为处理系统的物理地址的数据;以及提供软件实现的高速缓存重填功能,也用来管理该至少一个地址转换表高速缓存,并且在高速缓存不中之前预装该至少一个地址转换表高速缓存;以及利用所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能,同时重填该至少一个地址转换表高速缓存。
所述至少一个地址转换表高速缓存包含至少一个段表高速缓存,该段表高速缓存中的每一高速缓存行表示所述处理系统的不同存储器段。所述至少一个地址转换表高速缓存包含至少一个页表高速缓存,该页表高速缓存中的每一项包括所述存储器中物理地址的至少一部分,并且属于表示所选存储器段中的页的项目组。
该方法与装置使之能够:允许所述软件实现的高速缓存重填功能保留所述至少一个地址转换表高速缓存的一个或多个高速缓存行、以及所述处理系统的存储器中由所述物理地址寻址的一个或多个相关物理存储器位置。可替换地或者另外地,该方法与装置使之能够:允许所述软件实现的高速缓存重填功能锁定所述一个或多个高速缓存行,以免由所述硬件实现的高速缓存重填电路重填。
该方法与装置还可以:将基地址与所述外部地址相加,以产生中间地址的至少一部分;使用该中间地址的第一部分作为用来选择所述段表高速缓存的高速缓存行之一的指针;使用所述段表高速缓存的所选高速缓存行的至少一部分,作为到所述页表高速缓存的多个高速缓存行的引用;以及使用该中间地址的另一部分作为到所述页表高速缓存的所引用项之一的指针,以获得至少部分转换到对于所述外部地址的所述存储器的物理地址。
所述段表高速缓存的一个或多个高速缓存行可以包含:指示给定高速缓存行是否有效的一个或多个位;指示所述页表高速缓存的页号的一个或多个位;指示所述页表高速缓存的页尺寸的一个或多个位;和/或提供对所述页表高速缓存的多个高速缓存行的引用的一个或多个位。
所述页表高速缓存的一个或多个高速缓存行可以包含:指示给定高速缓存行是否有效的一个或多个位;指示给定高速缓存行是否在高速缓存不中之前已被所述软件实现的高速缓存重填功能锁定以免由所述硬件实现的高速缓存重填电路重填的一个或多个位;和/或表示所述存储器的物理地址的至少一部分的一或多个位。
该方法与装置还可以提供:利用所述中间地址的一个或多个最低有效位,增广(augment)所述表示物理地址的至少一部分的页表高速缓存的所选高速缓存行的一个或多个位,以产生对于所述外部地址的转换后的物理地址。
当结合附图考虑此处对本发明的描述时,本领域技术人员将会清楚其他方面、特征、优点等等。
附图说明
为了说明本发明的各个方面,在附图中显示了优选实施例,但是应该理解本发明不限于所示的精确结构与功能。
图1为说明根据本发明的一个或多个方面可以使用的处理系统的结构的方框图;
图2为说明可以由图1的系统执行的地址转换的原理图;
图3为说明用于实现图1的处理系统的一个或多个地址转换功能的适当结构的方框图;
图4为图3的结构中采用的适合于利用基地址增广外部地址的电路的更详细的方框图;
图5为图4的基地址和外部地址的增广的原理图;
图6为适合于实现图3结构中的高速缓存系统的电路的更详细的方框图;
图7为将增广后的外部地址(中间地址)转换到处理系统的实际地址的至少部分的原理图;
图8为说明根据本发明的一个或多个方面的、可以使用的具有两个或更多个子处理器的多处理系统的结构的图;
图9为说明可以用来实现本发明的一个或多个方面的、优选处理器元件(PE)的图;
图10为说明根据本发明的一个或多个方面的、可以使用的图9系统的示范性子处理单元(SPU)的结构的图;以及
图11为说明根据本发明的一个或多个方面的、可以使用的图9系统的示范性处理单元(PU)的结构的图。
具体实施方式
参照附图(其中相同的附图标记表示相同的元件),在图1中显示处理系统100,其可以用来实现本发明的一个或多个特征。为了简单和清楚的目的,此处将参照并且描述图1的方框图以说明装置100,但是应该理解该描述可以同样用于方法的各个方面。
系统100包括:通过一条或多条总线106相互耦合的处理系统102以及至少一个外部系统104(例如I/O设备)。所述处理系统102可以包括通过总线114彼此耦合的一个或多个处理器108、内部存储器空间110(一个或多个存储器单元)、和I/O地址转换电路112,注意图1所示的功能划分仅仅是举例,并且可以采用其他划分。应当理解:系统100也可以包括其他器件,如接口电路、外围电路等等,但是为了简短和清楚的目的,对它们进行了省略。
可以利用任何已知的能够请求来自存储器空间110的数据并且操作所述数据以获得期望结果的技术来实现处理器108。例如,可以使用任何已知的能够执行软件和/或固件的微处理器(包括标准微处理器、分布式微处理器等等),来实现处理器108。作为例子,处理器108可以为图形处理器,其能够请求并且操作数据(如像素数据),包括灰度信息、颜色信息、纹理数据、多边形信息、视频帧信息等等。
在某些处理环境中,外部系统104可能寻求从处理系统102的内部存储器空间110读取数据/向处理系统102的内部存储器空间110写入数据。关于这一点,优选地,地址转换电路112用来将从外部系统104接收的虚拟地址(不同存储器空间的外部地址)转换为内部存储器空间110的物理地址。实际上,外部系统104可能不在与存储器空间110相同的存储器空间中操作,并因此需要地址转换。
参照图2,优选地,存储器110可被分为多个段,例如段0、段1、段2等等。优选地,每个段可被分为多个页。存储器110享用其自身的物理空间,而外部系统104在虚拟空间中操作(至少相对于处理系统102),例如虚拟空间0,其不是与存储器110的物理空间一对一的相同空间。地址转换电路112用来将虚拟空间0的地址120转换为存储器空间110的物理地址122。因为可能有一个或多个外部系统104,所以地址转换电路112可用于将其他虚拟存储器空间(例如虚拟存储器空间N)的地址124转换为内部存储器空间110的物理地址122。在从虚拟存储器空间0、N到内部存储器空间110的转换中,虚拟地址120、124经过基调整(base adjust)并且经受高速缓存机制,以后将对此进行更详细的描述。
现在参照图3,其为说明如何可以实现地址转换电路112的至少某些部分的例子的方框图。在该实施例中,地址转换电路112可以包括基地址调整电路130、以及一个或多个地址转换高速缓存160。处理系统102可以接收来自外部系统104的外部地址(或者虚拟地址)120。再次地,该地址可能与从处理系统102的存储器空间110读取数据或向其写入数据的请求相关联。请注意:该读取和/或写入请求可能在外部系统104(DMA请求方)进行的直接存储器存取(DMA)请求的情形下发出。基地址调整电路130可以包括基地址表132、以及增广电路134,其用来接收来自外部系统104的外部地址120,并且将其与基地址(或者偏移)相加,以产生第一中间地址150。
在图4中说明了实现基地址调整电路130的适当电路的例子。增广电路134可以包括掩码控制电路与乘法器,其接收以下中的至少一个:(i)来自UC地址转换寄存器136的一部分的多个位(例如28位);(ii)外部地址120(例如30位);(iii)以及来自基地址表132的(多个)基地址输出144、146。
优选地,UC地址转换寄存器136确立中间地址150的最高有效位(例如高地址范围)。UC地址转换寄存器136的用于产生中间地址150的部分(例如)可以包括其较低位(例如22-27位)。优选地,运行在处理系统上的应用软件通过对操作系统软件的系统调用,可以将UC地址转换寄存器136的该部分的内容设置为内部存储器空间110(或者其部分)的相对尺寸和/或被映射到内部存储器空间110的外部存储器空间(或者其部分)的尺寸的函数。
基于外部系统104的识别号(外部系统ID),基地址表132产生(多个)基地址输出144、146,从而可以为不同的外部系统104(例如DMA请求方)产生不同的基地址。外部系统104可以实现为一个或多个DMA请求方,其通过南桥器件和/或RSX图形处理器件耦合至处理系统102。在此类实现中,DMA
请求方可以包括以下中的一个或多个:盘驱动器、USB集线器、以太网交换机等等。作为例子,外部系统ID可以为5位长。应该理解:为了容纳不同请求方数目,可以按照希望或者需要调整外部系统ID的位数。在所示实施例中,(多个)基地址表132输出可以包括:一个或多个掩码位144(例如4位)、以及一个或多个基地址位146(例如8位)。在该例子中,基地址表132可以采用多个可配置寄存器(或等效存储元件)140、142,其可以由UC地址转换表寄存器138设置。因此,掩码位以及基地址位的数目(以及特定位值)可以编程。再次地,在处理系统上运行的应用软件优选地通过对操作系统软件的系统调用,可以设置UC地址转换表寄存器138的内容,以为相应外部系统104确立掩码位144与基地址位146。与UC地址转换寄存器136的情况一样,可以将UC地址转换表寄存器138的内容确立为内部存储器空间110和/或被映射到内部存储器空间110的外部存储器空间的相对尺寸的函数。外部系统ID作为对寄存器140、142中的索引操作,以产生适当的掩码位144与基地址位146以输入到增广电路134。
图5为利用图4所示的实现例用掩码位144与基地址位146来增广外部地址120的原理图。由此,外部地址120(32位)输入基地址转换电路130。外部地址120的最高有效位由掩码位144(在该例子中为4位)遮蔽,剩下28位可用于中间地址150的最低有效位。将基地址位146(在该例子中为8位)插到中间地址150的下一个有效位位置中。最终,由UC地址转换寄存器136或者其部分(在该例子中为6位)确立中间地址150的最高有效位。由此,在该实施例中,中间地址150的长度为64位。
再次参照图3,中间地址150用来通过地址转换高速缓存160获得内部存储器空间110的物理地址。通过硬件实现的高速缓存重填电路190以及软件实现的高速缓存重填功能192管理地址转换高速缓存160。在地址转换高速缓存160的优选特征中,硬件实现的高速缓存重填电路190以及软件实现的高速缓存重填功能192可以分开和/或同时操作,以重填地址转换高速缓存160。在优选实施例中,软件实现的高速缓存重填功能192处理可预测的数据访问,而硬件实现的高速缓存重填电路190处理不可预测的数据访问。例如,优选地,软件实现的高速缓存重填功能192用来在高速缓存不中之前预装载地址转换高速缓存160。这可以与硬件实现的高速缓存重填电路190进行高速缓存重填同时完成。
优选地,硬件实现的高速缓存重填电路190以及软件实现的高速缓存重填功能192由在处理系统102上运行的应用软件分开地控制或者启动。例如,优选地,应用软件用来确定硬件实现的高速缓存重填电路190或软件实现的高速缓存重填功能192中的哪一个要操作来管理地址转换高速缓存160、以及管理多长时间。可替换地,或者另外地,应用软件可以用来确定硬件实现的高速缓存重填电路190以及软件实现的高速缓存重填功能192可以同时操作来管理地址转换高速缓存160。在一个或多个实施例中,应用软件通过控制硬件实现的高速缓存重填电路190以及软件实现的高速缓存重填功能192的操作系统调用,获得上述对高速缓存管理的控制。
参照图6,可以使用至少一个段表高速缓存162与至少一个页表高速缓存164来实现地址转换高速缓存160。依赖于实现的具体情况,段表高速缓存162可以为N路组相关高速缓存(N-way set associative cache)或者直接映射高速缓存。段表高速缓存162的每个高速缓存行166A、166B、166C等等表示处理系统100的存储器110的不同段。例如,段表高速缓存162的一个或多个高速缓存行166可以包括:
(i)指示给定高速缓存行166是否有效的一个或多个位(V);
(ii)指示页表高速缓存164的页号的一个或多个位(NPPT);
(iii)指示页表高速缓存164的页尺寸的一个或多个位(PS);和/或
(iv)提供对页表高速缓存164的多个高速缓存行的引用的一个或多个位(IOPT Base RPN)。
段表高速缓存162的每个高速缓存行166可以表示存储器空间110的不同段。
依赖于实现的具体情况,页表高速缓存164也可以为N路组相关高速缓存或者直接映射高速缓存。在优选实施例中,页表高速缓存164为N路组相关高速缓存。页表高速缓存164(如果有效的话)的每个高速缓存行168A、168B、168C等等包括对应于相关外部地址120的存储器110的物理地址122的至少一部分。页表高速缓存164的每个高速缓存行168属于表示存储器空间110的段之一中给定页的高速缓存行168的组。页表高速缓存164的高速缓存行168可以包括:
(i)指示给定高速缓存行168是否有效的一个或多个位(V);
(ii)指示给定高速缓存行168是否已被锁定的一个或多个“提示”位(H)(以下将详细描述);
(iii)表示与给定外部地址120相关的存储器空间110的物理地址122的至少部分的一个或多个位(RPN);
(iv)表示I/O设备识别号(例如外部系统ID)的一个或多个位(IOID);
(v)提供高速缓存一致性信息(例如M=1要求一致性)以及存储顺序命令(例如SO=1要求严格排序)的一个或多个位(M,SO);和/或
(vi)指示物理地址122寻址的存储器的位置为只读、只写、还是读/写的一个或多个位(PP)。
当系统100初始化时,操作系统可能保留页表高速缓存164的高速缓存行168的某些部分。可以通过写入预定逻辑电平到每个此类行的有效位V与提示位H,进行该保留。该保留应该在所有I/O设备都没有正在请求读取和/或写入到内部存储器空间110的时候进行。另外,在初始化时,可以例如由处理系统102或者由外部系统104指定存储器空间110中每个段的页尺寸。这可以通过对操作系统的一个或多个系统调用达到。虽然可以指定页尺寸,但是优选地,页尺寸应该页与页之间以及段与段之间相同。
优选地,软件实现的高速缓存重填功能192用来保留段表高速缓存162和/或页表高速缓存164的一个或多个高速缓存行、以及处理系统102的存储器空间110中由物理地址寻址的一个或多个相关物理存储器位置。优选地,在高速缓存不中之前执行这一点,例如当正在处理可预测数据、并且预装载高速缓存162、164可行时。优选地,软件实现的高速缓存重填功能192能够锁定页表高速缓存164的高速缓存行168,以免由硬件实现的高速缓存重填电路190进行重填。作为例子,可以通过将(多个)H位设置为预定电平(例如逻辑1)来实现该锁定特征。
地址转换高速缓存160还包括可编程段表地址寄存器170,其确立多个基值,每个基值用来访问段表高速缓存162的相应高速缓存行组。用中间地址150的基地址部分146增广的段表地址寄存器170的基值可以被用作用来选择段表高速缓存162的高速缓存行166之一的指针(索引)。段表高速缓存162的选定高速缓存行166的IOPT Base RPN部分提供到页表高速缓存164的基值索引。用中间地址150的另一部分152增广的段表高速缓存162的选定高速缓存行166的基值索引可以被用作用来选择页表高速缓存164的高速缓存行168之一的指针(索引)。中间地址150的部分152对应于外部地址120′(未被遮掩,参见图5)的较高有效位。部分152中的位数目依赖于页尺寸。参照图7,并且与以上例子一致地,4KB的页尺寸导致16位的部分152A,剩余12位在偏移部分154A中。64KB的页尺寸导致12位的部分152B,剩余16位在偏移部分154B中。1MB的页尺寸导致8位的部分152C,剩余20位在偏移部分154C中。16MB的页尺寸导致4位的部分152D,剩余24位在偏移部分154D中。
再次转到图6,假定页表高速缓存164的选定高速缓存行168为有效(例如V=逻辑1),则使用高速缓存行168的RPN部分作为到外部地址120的存储器空间110中的物理地址122的一部分。通过用中间地址150的偏移部分154增广RPN部分,获得物理地址122的剩余部分。但是,如果页表高速缓存164的选定高速缓存行168为无效(例如V=逻辑0),则发生高速缓存不中,并且采用硬件实现的高速缓存重填电路190来重填段表高速缓存162和/或页表高速缓存164。在这一方面,硬件实现的高速缓存重填电路190搜索高速缓存行,寻找一个或多个无效和/或未锁定高速缓存行,并且重填这些行。如果没有找到此类无效和/或未锁定高速缓存行,则发出故障通知中断。换言之,虽然硬件与软件高速缓存重填机制190、192共享相同的高速缓存行,但是仅可由软件机制192控制页表高速缓存164的高速缓存行168的锁定位(H)。由此,如果高速缓存行168已经被软件机制192锁定,则硬件机制190必须使用另一高速缓存路(或行)。
因为仅允许硬件机制190替换其中H=0的高速缓存行168,所以实际的软件机制192仅需要写入H=1以预装载高速缓存行168。由此,如果软件机制192需要保留高速缓存行168,则在使能硬件机制190重填之前,软件应该为此类高速缓存行168写入H=1。相反,如果软件机制192需要释放先前保留的高速缓存行168,则软件应该为此类高速缓存行168写H=0。此类释放的结果将是从该时间以后,硬件机制190可以使用此类高速缓存行168进行重填。以上功能适用于给定一致组的每个特定路。例如,如果N路组相关高速缓存164采用N=4,则给定一致组的每路可以被分开地锁定。这在以下表中表示。
[表1]
路 V H 是否硬件重填可用?
0 0 0 是
1 0 1 否
2 1 0 是
3 1 1 否
图8说明用来实现本发明的一个或多个其他实施例的多处理系统100A。系统100A包括通过总线208 连的多个处理器202A-D、相关本地存储器204A-D、以及共享存储器206。此处,也可以将共享存储器206称为主存储器或者系统存储器。虽然作为例子显示了4个处理器202,但是可使用任何数目而不会脱离本发明的精神与范围。每个处理器202可以为类似结构或者为不同结构。
虽然未显示,但是系统100A优选地包括上述的地址转换器112与其他功能。
优选地,本地存储器204位于与其相应处理器202相同的芯片上(相同半导体衬底);但是,优选地,本地存储器204不是传统的硬件高速缓存存储器,其中没有实现硬件高速缓存存储器功能的片上或片外硬件高速缓存电路、高速缓存寄存器、高速缓存存储器控制器等等。
优选地,处理器202提供通过总线208将数据(其可以包括程序数据)从系统存储器206拷贝到其相应本地存储器204以备程序执行和数据操作的数据存取请求。优选地,利用直接存储器存取控制器(DMAC,未显示),实现用来促进数据存取的机制。优选地,每个处理器的DMAC具有以上参照本发明的其他特征描述的功能基本相同的功能。
优选地,系统存储器206为动态随机存取存储器(DRAM),其通过高带宽存储器连接(未显示)耦合至处理器202。虽然系统存储器206优选为DRAM,但是可以使用其他方式实现存储器206,例如静态随机存取存储器(SRAM)、磁随机存取存储器(MRAM)、光学存储器、全息存储器等等。
优选地,利用处理流水线实现每个处理器202,其中以流水线方式处理逻辑指令。虽然流水线可以被分为任意数目的处理指令的阶段,但是流水线一般包括:获取一条或多条指令、解码指令、检查指令之间的依赖性、发出指令、以及执行指令。在这方面,处理器202可以包括指令缓冲器、指令解码电路、依赖性检查电路、指令发出电路、以及执行级。
优选地,处理器202的DMAC用来促进响应于由处理器202之一发出的单个DMA命令的、在共享存储器206与一个或多个本地存储器204之间的多个数据块的传送。
在一个或多个实施例中,处理器202、本地存储器204、以及DMAC可以置于共同半导体衬底之上。在一个或多个其他实施例中,共享存储器206也可以置于该共同半导体衬底之上,或者其可以被分开地放置。
在一个或多个可替换实施例中,一个或多个处理器202可以作为主处理器操作,其操作地耦合至其他处理器202,并且能够通过总线208耦合至共享存储器206。主处理器可以调度与协调其他处理器202对数据的处理。但是,与其他处理器202不同,主处理器可以耦合至硬件高速缓存存储器,其为从共享存储器206以及处理器202的一个或多个本地存储器204中的至少一个获得的可操作高速缓存数据。主处理器可以提供利用任何已知技术(例如DMA技术)将数据(其可能包括程序数据)从系统存储器206通过总线208拷贝到高速缓存存储器以备程序执行与数据操作的数据访问请求。
现在提供对多处理器系统的优选计算机体系结构的描述,其适合于实现此处讨论的一个或多个特征。根据一个或多个实施例,多处理器系统可以实现为单芯片解决方案,用于含大量媒体的(media-rich)应用的独立和/或分布式处理,例如游戏系统、家用终端、PC系统、服务器系统、以及工作站。在某些应用中,例如游戏系统与家用终端中,实时计算可能是必须的。例如,在实时分布式游戏应用中,必须足够快地执行联网图像压缩、3D计算机图形、音频生成、网络通信、物理模拟、以及人工智能处理中的一个或多个,从而向用户提供实时体验的感觉。由此,多处理器系统中的每个处理器都必须在可预测的短时间内完成任务。
为此,并且根据该计算机体系结构,多处理计算机系统中的所有处理器都从公共计算模块(或者单元)构造。该公共计算模块具有一致的结构,并且优选地采用相同的指令集体系结构。该多处理计算机系统可以由一个或多个客户端、服务器、PC、移动计算机、游戏机、PDA、置顶盒、家用电器、数字电视、以及使用计算机处理器的其他设备形成。
如果希望的话,多个计算机系统也可以为网络的成员。一致的模块化结构使多处理计算机系统能够对应用与数据进行高效高速处理,并且如果采用网络,则使之能够在网络上迅速传送应用与数据。该结构还简化了各种尺寸与处理能力的网络的成员的构造,并且简化了为了由这些成员处理而对应用的准备。
参照图9,基本处理模块为处理器元件(PE)500。PE 500包括:I/O接口502、处理单元(PU)504、以及多个子处理单元508,即子处理单元508A、子处理单元508B、子处理单元508C、以及子处理单元508D。本地(或者内部)PE总线512在PU 504、子处理单元508、以及存储器接口511之间传送数据与应用。本地PE总线512可以具有例如常规体系结构,或者可以被实现为分组交换网络。如果被实现为分组交换网络,则虽然要求更多的硬件,但是增加了可用带宽。
可以使用实现数字逻辑的各种方法构造PE 500。但是优选地,PE 500被构造成单个集成电路,其采用硅衬底上的互补金属氧化物半导体(CMOS)。基底的替换材料包括:砷化镓、砷化镓铝、或者其他所谓的采用多种搀杂剂的III-B化合物。也可以使用超导材料(例如快速单通量量子(RSFQ)逻辑)实现PE500。
通过高带宽存储器连接516,将PE 500与共享(主)存储器514紧密相关。虽然优选地存储器514为动态随机存取存储器(DRAM),但是可以使用其他方式实现存储器514,例如静态随机存取存储器(SRAM)、磁随机存取存储器(MRAM)、光学存储器、全息存储器等等。
优选地,PU 504与子处理单元508每个都耦合至包括直接存储器存取DMA功能的存储器流控制器(MFC),其与存储器接口511结合,促进DRAM514与PE 500的子处理单元508和PU 504之间的数据传送。请注意:DMAC和/或存储器接口511可以集成地或者分离地相对于子处理单元508和PU 504放置。实际上,DMAC功能和/或存储器接口511功能可以与子处理单元508和PU 504中的一或多个(优选地全部)集成在一起。还请注意:DRAM 514可以集成地或者分开地相对于PE 500放置。例如,DRAM 514可以置于片外,如所示图示所暗示的,或者DRAM 514可以集成方式置于片上。
PU 504例如可以为标准处理器,其能够独立进行对数据与应用的处理。在操作中,优选地,PU 504调度与协调子处理单元对数据与应用的处理。优选地,子处理单元为单指令多数据(SIMD)处理器。在PU 504的控制下,子处理单元以并行且独立的方式执行对这些数据与应用的处理。优选地,利用PowerPC核心实现PU 504,PowerPC核心为采用精简指令集计算(RISC)技术的微处理器体系结构。RISC利用简单指令的组合来执行更复杂的指令。因此,处理器的时序可以基于较简单较快的操作,从而使微处理器能够对给定的时钟速度执行更多的指令。
请注意:可以由承担主处理单元(其调度与协调子处理单元508对数据与应用的处理)的角色的子单元508之一来实现PU 504。另外,在处理器元件500内可能实现多于一个的PU。
根据该模块结构,特定计算机系统所采用的PE 500的数目基于该系统所需的处理能力。例如,服务器可能采用4个PE 500,工作站可能采用2个PE500,而PDA可能采用1个PE 500。被分配来处理特定软件单元的PE 500的子处理单元的数目依赖于该单元内的程序与数据的复杂度与大小。
图10说明子处理单元(SPU)508的优选结构与功能。优选地,SPU 508体系结构填补了通用处理器(其被设计来在广泛的应用集合上达到高平均性能)与专用处理器(其被设计来在单个应用上达到高性能)之间的空白。SPU 508被设计来在游戏应用、媒体应用、宽带应用等等上达到高性能,以为实时应用的程序员提供高度控制。SPU 508的某些功能包括图形几何流水线、表面子划分(surface subdivision)、快速傅立叶变换、图像处理关键字、流处理、MPEG编码/解码、加密、解密、设备驱动器扩展、建模、游戏物理、内容创建、以及音频合成与处理。
子处理单元508包括两个基本功能单元,即SPU 核心510A与存储器流控制器(MFC)510B。SPU核心510A进行程序执行、数据操作等等,而MFC510B执行关于SPU核心510A与系统的DRAM 514之间的数据传送的功能。
SPU核心510A包括:本地存储器550、指令单元(IU)552、寄存器554、一个或多个浮点执行级556、以及一个或多个定点执行级558。优选地,使用单端口随机存取存储器(例如SRAM)来实现本地存储器550。虽然大部分处理器通过采用高速缓存来减少到存储器的延迟,但是SPU核心510A实现相对较小的本地存储器550而非高速缓存。实际上,为了为实时应用(以及此处描述的其他应用)的程序员提供一致性且可预测的存储器存取延迟,SPU 508A内的高速缓存存储器体系结构不是优选的。高速缓存存储器的高速缓存命中/不中特点导致多变的存储器存取时间,其变化从几个周期到几百个周期。此类多变性有损于在例如实时应用编程中希望的存取定时可预测性。通过将DMA传送与数据计算重叠,可以在本地存储器550中达到延迟隐藏(latencyhiding)。这为实时应用的编程提供了高度控制。因为与DMA传送相关的延迟与指令开销超过了处理高速缓存不中的延迟与指令开销,所以当DMA传送尺寸足够大并且充分可预测时(例如可以在需要数据之前发出DMA命令),SRAM本地存储器方法具有优势。
在给定的一个子处理单元508上运行的程序利用本地地址引用相关的本地存储器550,但是本地存储器550的每个位置也都被分配在整个系统的存储器映射内的实际地址(RA)。这允许特权软件(privilege software)将本地存储器550映射到进程的有效地址(EA),以促进一个本地存储器550与另一个本地存储器550之间的DMA传送。PU 504也可以利用有效地址,直接访问本地存储器550。在一个优选实施例中,本地存储器550包含556KB的存储容量,并且寄存器552的容量为128×128位。
优选地,利用处理流水线实现SPU核心504A,其中以流水线方式处理逻辑指令。虽然流水线可以被分为任意数目的处理指令的阶段,但是流水线一般包括:获取一条或多条指令、解码指令、检查指令之间的依赖性、发出指令、以及执行指令。在这方面,IU 552包括指令缓冲器、指令解码电路、依赖性检查电路、以及指令发出电路。
优选地,指令缓冲器包括耦合至本地存储器550、并且当获取指令时用来临时存储指令的多个寄存器。优选地,指令缓冲器操作使得所有指令作为编组离开寄存器,即几乎同时地。虽然指令缓冲器可以为任何尺寸,但是优选地,其尺寸不大于大约两个或三个寄存器。
一般地,解码电路分解指令,并且生成执行对应指令的功能的逻辑微操作。例如,逻辑微操作可以指定算术与逻辑运算、到本地存储器550的加载与存储操作、寄存器源运算数和/或中间数据运算数。解码电路也可以指示指令使用哪一资源,如目标寄存器地址、结构资源、功能单元和/或总线。解码电路也可以提供指示其中需要资源的指令流水线阶段的信息。优选地,指令解码电路用来基本同时地解码与指令缓冲器的寄存器的数目相同的多条指令。
依赖性检查电路包括进行测试以确定给定指令的运算数是否依赖于流水线中其他指令的运算数的数字逻辑。如果如此,则不应该执行给定指令,直至更新了其他运算数(例如,通过允许该其他指令完成执行)。优选地,依赖性检查电路确定从解码电路112同时派发的多条指令的依赖性。
指令发出电路用来发出指令到浮点执行级556和/或定点执行级558。
优选地,寄存器554实现为相对较大的统一寄存器文件,例如128项的寄存器文件。这允许深度流水线高频实现,而不会要求寄存器重命名来避免寄存器不足(starvation)。重命名硬件一般消耗处理系统中面积与功率的相当大的部分。因此,当由软件循环展开或者其他交织技术来覆盖延迟时,可以获得有利的操作。
优选地,SPU核心510A为超标量体系结构,从而每个时钟周期发出多于一条的指令。优选地,SPU核心510A操作为到对应于来自指令缓冲器的同时派发的指令数目(例如2与3之间,意味着每个时钟周期发出2或3条指令)的程度的超标量。依赖于所需要的处理能力,可以采用或多或少数目的浮点执行级556和定点执行级558。在优选实施例中,浮点执行级556以每秒32G的浮点运算速度(32GFLOPS)操作,并且定点执行级558以每秒32G的定点运算速度(32GOPS)上操作。
优选地,MFC 510B包括:总线接口单元(BIU)564、存储器管理单元(MMU)562、以及直接存储器存取控制器(DMAC)560。除DMAC 560之外,优选地,MFC 510B以与SPU核心510A与总线512相比为一半的频率(半速)运行,以满足低功率耗散设计目标。MFC 510B用来处理从总线512进入到SPU 508的数据与指令,提供DMAC的地址转换,以及数据一致性的监视操作。BIU 564提供总线512与MMU 562和DMAC 560之间的接口。因此,SPU 508(包括SPU核心510A与MFC 510B)与DMAC 560被物理连接和/或逻辑连接到总线512。
优选地,MMU 562用来将有效地址(取自DMA命令)转换为实际地址,以进行存储器存取。例如,MMU 562可以将有效地址的较高阶位转换为实际地址位。但是优选地,较低阶位是不可转换的、并且用来形成实际地址以及请求对存储器存取时被认为既是逻辑的也是物理的。在一个或多个实施例中,可以基于64位存储器管理模型,来实现MMU 562,并且MMU 562可以提供264字节的有效地址空间,具有4K、64K、1M、和16M字节的页尺寸和256MB的段尺寸。优选地,对于DMA命令,MMU 562用来支持高达265字节的虚拟存储器,以及242字节(4TB)的物理存储器。MMU 562的硬件可以包括8项的全相关联SLB、256项的4路组相关联TLB、以及对于TLB的4×4替换管理表(RMT,其用于硬件TLB不中处理)。
优选地,DMAC 560用于管理来自SPU核心510A以及一或多个其他设备(例如PU 504和/或其他SPU)的DMA命令。可有三类DMA命令:放置命令,其用来将数据从本地存储器550移动到共享存储器514;获得命令,其用来将数据从共享存储器514移动到本地存储器550;以及存储控制命令,其包括SLI命令以及同步命令。同步命令可以包括原子命令、发送信号命令、以及专用阻隔命令。响应于DMA命令,MMU 562将有效地址转换为实际地址,并且将实际地址转发给BIU 564。
优选地,SPU核心510A使用通道接口与数据接口来与DMAC 560内的接口通信(发送DMA命令、状态等等)。SPU核心510A通过通道接口向DMAC560A中的DMA队列派发DMA命令。一旦DMA命令进入DMA队列,DMA命令就由DMAC 560内的发出与完成逻辑处理。当完成DMA命令的所有总线事务时,通过通道接口向SPU核心510A回送完成信号。
图11说明PU 504的优选结构与功能。PU 504包括两个基本功能单元,PU核心504A与存储器流控制器(MFC)504B。PU核心504A进行程序执行、数据操作、多处理器管理功能等等,而MFC 504B执行关于在PU核心504与系统100的存储器空间之间的数据传送的功能。
PU核心504A可以包括L1高速缓存570、指令单元572、寄存器574、一个或多个浮点执行级576、以及一个或多个定点执行级578。L1高速缓存提供对于通过MFC 504B从共享存储器106、处理器102、或者存储器空间的其他部分接收到的数据的数据高速缓存功能。如同PU核心504A优选地实现为超流水线,指令单元572优选地实现为具有许多阶段的指令流水线,包括获取、解码、依赖性检查、发出等等。另外,PU核心504A也优选地实现为超标量配置,由此每个时钟周期从指令单元572发出多于一条的指令。为了达到高处理能力,浮点执行级576与定点执行级578包括流水线配置中的多个阶段。根据所需的处理能力,可以采用或多或少数目的浮点执行级576与定点执行级578。
MFC 504B包括总线接口单元(BIU)580、L2高速缓存存储器、非高速缓存单元(NCU)584、核心接口单元(CIU)586、以及存储器管理单元(MMU)588。MFC 504B的大部分以与PU核心504A和总线108相比的半频率(半速)运行,以满足低功率耗散设计目标。
BIU 580提供总线108与L2高速缓存582和NCU 584逻辑块之间的接口。为此,BIU 580可以作为总线108上的主设备以及从设备,从而执行完全一致的存储器操作。作为主设备,其可以代表L2高速缓存582和NCU 584,发出对于总线108的加载/存储请求,以请求服务。BIU 580也可以实现对于命令的流控制机制,其限制可以发送给总线108的命令总数。总线108上的数据操作可以被设计来占用8个节拍。因此,优选地,BIU 580被设计成大约128字节的高速缓存行,并且一致性和同步间隔(granularity)是128KB。
优选地,L2高速缓存582(和支持硬件逻辑)被设计成高速缓存512KB的数据。例如,L2高速缓存582可以处理可缓存的装载/存储、数据预取、指令取、指令预取、高速缓存操作、和阻隔操作。优选地,L2高速缓存582为8路组相联系统。L2高速缓存582可以包括匹配6个抛出队列(castout queue)(例如6个RC机)的8个重加载队列(reload queue),以及8个(64字节宽)存储队列。L2高速缓存582可以用来提供L1高速缓存570中的某些或者全部数据的备份拷贝。有利的是,当热交换(hot swap)处理节点时,在(多个)恢复状态时这是有用的。该配置还允许L1高速缓存570利用较少端口更迅速地工作,并且允许更快的高速缓存到高速缓存转移(因为请求可以止于L2高速缓存582)。该配置还提供了将高速缓存一致性管理传递给L2高速缓存582的机制。
NCU 584与CIU 586、L2高速缓存582、以及BIU 580接口,并且一般作为对于在PU核心504A与存储器系统之间的非高速缓存操作的排队/缓冲电路。优选地,NCU 584处理不是由L2高速缓存582处理的、与PU核心504A的所有通信,例如禁止高速缓存的加载/存储、阻隔操作、以及高速缓存一致性操作。优选地,NCU 584以半速运行,以满足上述的功率耗散目标。
CIU 586被安置在MFC 504B和PU核心504A的边界之上,并且作为对于来自执行级576、578、指令单元572、以及MMU单元588的命令和去向L2高速缓存582和NCU 584的命令的路由、仲裁、以及流控制点。优选地,PU核心504A和MMU单元588以半速运行,而L2高速缓存582与NCU 584可以2∶1速度比运行。由此,在CIU 586中存在频率边界,并且当其在两个频率域之间转发请求以及重加载数据时,其功能之一要适当地处理频率交叉(frequency crossing)。
CIU 586包含三个功能块:加载单元、存储单元、以及重加载单元。另外,数据预取功能由CIU 586执行,并且优选地为加载单元的功能部分。优选地,CIU 586用来:(i)接受来自PU核心504A和MMU单元588的加载与存储请求;(ii)将来自全速时钟频率的请求转换为半速(2∶1时钟频率转换);(iii)将可高速缓存请求路由至L2高速缓存582,并且将不可高速缓存请求路由至NCU 584;(iv)在到L2高速缓存582与NCU 584的请求之间公平仲裁;(v)对到L2高速缓存582与NCU 584的派发,提供流控制,从而在目标窗口中接收请求,并且避免溢出;(vi)接受加载返回数据,并且将其路由至执行级576、578、指令单元572、或者MMU单元588;(vii)将监听请求传递给执行级576、578、指令单元572、或者MMU单元588;以及(viii)将加载返回数据以及监听流量(traffic)从全速转换为半速。
优选地,MMU单元588为PU核心504A提供地址转换,例如通过第二级地址转换功能。优选地,第一级转换在PU核心504A中由分离的指令与数据ERAT(有效到实际地址转换)阵列提供,该阵列可以比MMU单元588小得多和快得多。
在优选实施例中,PU 504运行于4-6GHz、10F04,具有64位实现。优选地,寄存器为64位长(但是一个或多个专用寄存器可以较小),并且有效地址为64位长。优选地,利用PowerPC技术,实现指令单元570、寄存器572、以及执行级574和576,以达到(RISC)计算技术。
关于该计算机系统的模块化结构的其他细节可以在美国专利第6,526,491号中找到,其全部公开通过引用方式包含。
根据本发明至少一个进一步的方面,可以利用适当的硬件(例如附图中所示的),实现上述的方法与装置。可以利用任何公知技术(例如标准数字电路)、用来执行软件和/或固件程序的任何公知处理器、一个或多个可编程数字器件或系统(例如可编程只读存储器(PROM))、可编程阵列逻辑器件(PAL)等等来实现此类硬件。另外,虽然附图中所示的装置显示被划分为特定功能块,但是此类功能块可以通过分开的电路实现和/或被组合为一个或多个功能单元。进一步地,本发明的各个方面可以通过(多个)软件和/或固件程序实现,其可以存储在适当的存储介质(例如(多个)软盘、(多个)存储器芯片等等)上,以运送和/或分发。
虽然此处参照特定实施例描述了本发明,但是应该理解:这些实施例只是说明本发明的原理与应用。因此,应该理解:在不脱离如所附权利要求限定的本发明的精神与范围的前提下,可以对示范性实施例进行各种修改,并且可以设想其他结构。
工业实用性
本发明可以应用于将地址从外部存储器空间转换为处理器的存储器空间的技术。
Claims (23)
1.一种提供同时软件/硬件高速缓存填充的方法,包括:
提供硬件实现的高速缓存重填电路,用来管理至少一个地址转换表高速缓存,该至少一个地址转换表高速缓存包含用来将外部地址转换为处理系统的物理地址的数据;以及
提供软件实现的高速缓存重填功能,用来在高速缓存不中之前预装该至少一个地址转换表高速缓存,
其中所述预装步骤包括:锁定所述至少一个地址转换表高速缓存的一个或多个高速缓存行,以免由所述硬件实现的高速缓存重填电路重填,以及
在高速缓存不中之后,利用硬件实现的高速缓存重填电路,搜索所述至少一个地址转换表高速缓存的高速缓存行,以寻找一或多个无效的和/或未锁定的高速缓存行,以及利用硬件实现的高速缓存重填功能,重填该一或多个无效的和/或未锁定的高速缓存行。
2.如权利要求1所述的方法,其中所述预装步骤保留所述至少一个地址转换表高速缓存的一个或多个高速缓存行、以及所述处理系统的存储器中由所述物理地址寻址的一个或多个相关物理存储器位置。
3.如权利要求1所述的方法,还包括:当没有可用的无效的和/或未锁定的高速缓存行时,发出对于故障通知的中断。
4.如权利要求1所述的方法,还包括:允许在所述处理系统上运行的应用软件确定所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能中的哪一个来操作管理所述至少一个地址转换表高速缓存。
5.如权利要求4所述的方法,还包括:允许所述应用软件调用所述处理系统的操作系统软件,该操作系统软件控制所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能中的哪一个来操作管理所述至少一个地址转换表高速缓存。
6.如权利要求1所述的方法,还包括:允许在所述处理系统上运行的应用软件确定所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能可以同时操作管理所述至少一个地址转换表高速缓存。
7.如权利要求1所述的方法,还包括:允许应用软件调用所述处理系统的操作系统软件,该操作系统软件控制所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能同时操作管理所述至少一个地址转换表高速缓存。
8.一种提供同时软件/硬件高速缓存填充的方法,包括:
提供硬件实现的高速缓存重填电路,用来管理至少一个地址转换表高速缓存,该至少一个地址转换表高速缓存包含用来将外部地址转换为处理系统的物理地址的数据;以及
提供软件实现的高速缓存重填功能,也用来管理该至少一个地址转换表高速缓存,所述高速缓存重填功能用来在高速缓存不中之前预装该至少一个地址转换表高速缓存;以及
利用所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能,同时重填该至少一个地址转换表高速缓存,
其中所述预装步骤包括:锁定所述至少一个地址转换表高速缓存的一个或多个高速缓存行,以免由所述硬件实现的高速缓存重填电路重填,以及
在高速缓存不中之后,利用硬件实现的高速缓存重填电路,搜索所述至少一个地址转换表高速缓存的高速缓存行,以寻找一或多个无效的和/或未锁定的高速缓存行,以及利用硬件实现的高速缓存重填功能,重填该一或多个无效的和/或未锁定的高速缓存行。
9.一种提供同时软件/硬件高速缓存填充的方法,包括:
提供硬件实现的高速缓存重填电路,用来管理至少一个地址转换表高速缓存,该至少一个地址转换表高速缓存包含用来将外部地址转换为处理系统的物理地址的数据;
提供软件实现的高速缓存重填功能,也用来管理该至少一个地址转换表高速缓存,并且在高速缓存不中之前预装该至少一个地址转换表高速缓存;以及
利用所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能,同时重填该至少一个地址转换表高速缓存,
其中所述至少一个地址转换表高速缓存包含至少一个段表高速缓存,该段表高速缓存中的每一高速缓存行表示所述处理系统的不同存储器段;以及
所述至少一个地址转换表高速缓存包含至少一个页表高速缓存,该页表高速缓存中的每一项包括所述存储器中物理地址的至少一部分,并且属于表示所选存储器段中的页的项目组。
10.如权利要求9所述的方法,还包括:允许所述软件实现的高速缓存重填功能保留所述至少一个地址转换表高速缓存的一个或多个高速缓存行、以及所述处理系统的存储器中由所述物理地址寻址的一个或多个相关物理存储器位置。
11.如权利要求10所述的方法,还包括:允许所述软件实现的高速缓存重填功能锁定所述一个或多个高速缓存行,以免由所述硬件实现的高速缓存重填电路重填。
12.如权利要求9所述的方法,还包括:
将基地址与所述外部地址相加,以产生中间地址的至少一部分;
使用该中间地址的第一部分作为用来选择所述段表高速缓存的高速缓存行之一的指针;
使用所述段表高速缓存的所选高速缓存行的至少一部分,作为到所述页表高速缓存的多个高速缓存行的引用;以及
使用该中间地址的另一部分作为到所述页表高速缓存的所引用项之一的指针,以获得至少部分转换到对于所述外部地址的所述存储器的物理地址。
13.如权利要求12所述的方法,其中所述段表高速缓存的一个或多个高速缓存行包含以下中的至少一个:
指示给定高速缓存行是否有效的一个或多个位;
指示所述页表高速缓存的页号的一个或多个位;
指示所述页表高速缓存的页尺寸的一个或多个位;和
提供对所述页表高速缓存的多个高速缓存行的引用的一个或多个位。
14.如权利要求12所述的方法,其中所述页表高速缓存的一个或多个高速缓存行包含以下中的至少一个:
指示给定高速缓存行是否有效的一个或多个位;
指示给定高速缓存行是否在高速缓存不中之前已被所述软件实现的高速缓存重填功能锁定以免由所述硬件实现的高速缓存重填电路重填的一个或多个位;和
表示所述存储器中的物理地址的至少部分的一个或多个位。
15.如权利要求12所述的方法,还包括:利用所述中间地址的一个或多个最低有效位,增广所述表示物理地址的至少一部分的页表高速缓存的所选高速缓存行的一个或多个位,以产生对于所述外部地址的转换后的物理地址。
16.一种提供同时软件/硬件高速缓存填充的装置,包括:
至少一个处理器,其能够被耦合至存储器;以及
地址转换电路,用来将从外部设备接收的虚拟地址转换为所述存储器的物理地址,其中该地址转换电路包括:
硬件实现的高速缓存重填电路,用来管理至少一个地址转换表高速缓存,该至少一个地址转换表高速缓存包含用来将外部地址转换为物理地址的数据;
其中所述至少一个处理器执行软件实现的高速缓存重填功能,也用来管理所述至少一个地址转换表高速缓存,
其中有以下情况中的至少一种:(i)所述硬件实现的高速缓存重填电路和所述软件实现的高速缓存重填功能用于同时重填所述至少一个地址转换表高速缓存;和(ii)所述软件实现的高速缓存重填功能在高速缓存不中之前预装该至少一个地址转换表高速缓存,
其中所述预装步骤包括:锁定所述至少一个地址转换表高速缓存的一个或多个高速缓存行,以免由所述硬件实现的高速缓存重填电路重填,以及
在高速缓存不中之后,利用硬件实现的高速缓存重填电路,搜索所述至少一个地址转换表高速缓存的高速缓存行,以寻找一或多个无效的和/或未锁定的高速缓存行,以及利用硬件实现的高速缓存重填功能,重填该一或多个无效的和/或未锁定的高速缓存行。
17.如权利要求16所述的装置,其中所述软件实现的高速缓存重填功能用来保留所述至少一个地址转换表高速缓存的一个或多个高速缓存行、以及所述处理器的存储器中由所述物理地址寻址的一个或多个相关物理存储器位置。
18.如权利要求17所述的装置,其中所述软件实现的高速缓存重填功能用来锁定所述至少一个地址转换表高速缓存的一个或多个高速缓存行,以免由所述硬件实现的高速缓存重填电路重填。
19.如权利要求16所述的装置,还包括:在所述至少一个处理器上运行应用软件,其用来控制所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能中的哪一个来操作管理所述至少一个地址转换表高速缓存。
20.如权利要求19所述的装置,还包括:在所述至少一个处理器上运行操作系统软件,该操作系统软件用来单独或者响应于所述应用软件,而控制所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能中的哪一个来操作管理所述至少一个地址转换表高速缓存。
21.如权利要求16所述的装置,还包括:在所述至少一个处理器上运行应用软件,其用来确定所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能可以同时操作管理所述至少一个地址转换表高速缓存。
22.如权利要求21所述的装置,还包括:在所述至少一个处理器上运行操作系统软件,该操作系统软件用来单独或者响应于所述应用软件,而控制所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能同时操作管理所述至少一个地址转换表高速缓存。
23.一种提供同时软件/硬件高速缓存填充的系统,包括:
内部存储器空间;
至少一个处理器,其被操作地耦合至该存储器空间;
至少一个段表高速缓存,该段表高速缓存中的每一高速缓存行表示所述存储器空间的不同段;
至少一个页表高速缓存,该页表高速缓存中的每一项包括所述存储器空间中物理地址的至少一部分,并且属于表示所述存储器空间的给定段中的页的项目组;以及
硬件实现的高速缓存重填电路,用来管理所述段表高速缓存与页表高速缓存;
其中所述至少一个处理器执行软件实现的高速缓存重填功能,也用来管理所述段表高速缓存与页表高速缓存;
其中有以下情况中的至少一种:(i)所述硬件实现的高速缓存重填电路与软件实现的高速缓存重填功能用来同时操作;(ii)所述软件实现的高速缓存重填功能用来在高速缓存不中之前,预装所述段表高速缓存与页表高速缓存。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US80817006P | 2006-05-24 | 2006-05-24 | |
US60/808,170 | 2006-05-24 | ||
US11/444,803 | 2006-06-01 | ||
US11/444,803 US7886112B2 (en) | 2006-05-24 | 2006-06-01 | Methods and apparatus for providing simultaneous software/hardware cache fill |
PCT/JP2007/000556 WO2007135783A1 (en) | 2006-05-24 | 2007-05-24 | Methods and apparatus for providing simultaneous software/hardware cache fill |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101326500A CN101326500A (zh) | 2008-12-17 |
CN101326500B true CN101326500B (zh) | 2012-05-02 |
Family
ID=38723097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800005376A Active CN101326500B (zh) | 2006-05-24 | 2007-05-24 | 提供同时软件/硬件高速缓存填充的方法与装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7886112B2 (zh) |
EP (1) | EP2021929B1 (zh) |
JP (1) | JP4243318B2 (zh) |
CN (1) | CN101326500B (zh) |
WO (1) | WO2007135783A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100876084B1 (ko) * | 2007-02-13 | 2008-12-26 | 삼성전자주식회사 | 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템 |
US7886112B2 (en) * | 2006-05-24 | 2011-02-08 | Sony Computer Entertainment Inc. | Methods and apparatus for providing simultaneous software/hardware cache fill |
US8487655B1 (en) | 2009-05-05 | 2013-07-16 | Cypress Semiconductor Corporation | Combined analog architecture and functionality in a mixed-signal array |
US8179161B1 (en) | 2009-05-05 | 2012-05-15 | Cypress Semiconductor Corporation | Programmable input/output circuit |
US20120131305A1 (en) * | 2010-11-22 | 2012-05-24 | Swamy Punyamurtula | Page aware prefetch mechanism |
US9009410B2 (en) * | 2011-08-23 | 2015-04-14 | Ceva D.S.P. Ltd. | System and method for locking data in a cache memory |
CN103019954A (zh) * | 2011-09-22 | 2013-04-03 | 瑞昱半导体股份有限公司 | 高速缓存装置与高速缓存数据存取方法 |
US8954672B2 (en) * | 2012-03-12 | 2015-02-10 | Advanced Micro Devices, Inc. | System and method for cache organization in row-based memories |
US9047198B2 (en) | 2012-11-29 | 2015-06-02 | Apple Inc. | Prefetching across page boundaries in hierarchically cached processors |
CN103885892A (zh) * | 2012-12-20 | 2014-06-25 | 株式会社东芝 | 存储器控制器 |
GB2528842B (en) * | 2014-07-29 | 2021-06-02 | Advanced Risc Mach Ltd | A data processing apparatus, and a method of handling address translation within a data processing apparatus |
US9665743B2 (en) * | 2015-02-26 | 2017-05-30 | Whitecanyon Software, Inc. | Selective storage device wiping system and method |
CN107430521B (zh) * | 2015-03-27 | 2022-02-18 | 英特尔公司 | 高效地址转换 |
WO2018009240A2 (en) * | 2015-11-12 | 2018-01-11 | University Of Rochester | Superconducting system architecture for high-performance energy-efficient cryogenic computing |
US10282308B2 (en) * | 2016-06-23 | 2019-05-07 | Advanced Micro Devices, Inc. | Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems |
US10579526B2 (en) * | 2017-02-08 | 2020-03-03 | Arm Limited | Responding to snoop requests |
US10613764B2 (en) | 2017-11-20 | 2020-04-07 | Advanced Micro Devices, Inc. | Speculative hint-triggered activation of pages in memory |
US10929310B2 (en) | 2019-03-01 | 2021-02-23 | Cisco Technology, Inc. | Adaptive address translation caches |
US20230333990A1 (en) * | 2022-04-18 | 2023-10-19 | Samsung Electronics Co., Ltd. | Systems and methods for address translation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1235154A2 (en) * | 2001-02-21 | 2002-08-28 | Semiconductor Technology Academic | Cache memory system |
CN1577295A (zh) * | 2003-05-02 | 2005-02-09 | 微软公司 | 使用最佳化方法实现存储器存取控制 |
CN1641606A (zh) * | 2004-01-16 | 2005-07-20 | 国际商业机器公司 | 管理处理器架构中的转换机制的方法和设备 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493660A (en) * | 1992-10-06 | 1996-02-20 | Hewlett-Packard Company | Software assisted hardware TLB miss handler |
US5440710A (en) * | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5918250A (en) * | 1995-05-05 | 1999-06-29 | Intel Corporation | Method and apparatus for preloading default address translation attributes |
US5918251A (en) * | 1996-12-23 | 1999-06-29 | Intel Corporation | Method and apparatus for preloading different default address translation attributes |
US6134633A (en) * | 1997-10-31 | 2000-10-17 | U.S. Philips Corporation | Prefetch management in cache memory |
US6859862B1 (en) | 2000-04-07 | 2005-02-22 | Nintendo Co., Ltd. | Method and apparatus for software management of on-chip cache |
EP1182571B1 (en) | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | TLB operations based on shared bit |
US6938252B2 (en) * | 2000-12-14 | 2005-08-30 | International Business Machines Corporation | Hardware-assisted method for scheduling threads using data cache locality |
US6526491B2 (en) | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US6854046B1 (en) * | 2001-08-03 | 2005-02-08 | Tensilica, Inc. | Configurable memory management unit |
EP1331539B1 (en) * | 2002-01-16 | 2016-09-28 | Texas Instruments France | Secure mode for processors supporting MMU and interrupts |
US7103748B2 (en) | 2002-12-12 | 2006-09-05 | International Business Machines Corporation | Memory management for real-time applications |
JP3655908B2 (ja) * | 2003-02-26 | 2005-06-02 | 株式会社東芝 | 命令ロールバックプロセッサシステム、命令ロールバック方法及び命令ロールバックプログラム |
US7099999B2 (en) * | 2003-09-30 | 2006-08-29 | International Business Machines Corporation | Apparatus and method for pre-fetching data to cached memory using persistent historical page table data |
US20050182903A1 (en) * | 2004-02-12 | 2005-08-18 | Mips Technologies, Inc. | Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer |
JP4520790B2 (ja) * | 2004-07-30 | 2010-08-11 | 富士通株式会社 | 情報処理装置およびソフトウェアプリフェッチ制御方法 |
KR100611305B1 (ko) * | 2004-11-25 | 2006-08-10 | 삼성전자주식회사 | 주소 맵핑 방법 및 장치 |
US20060179236A1 (en) * | 2005-01-13 | 2006-08-10 | Hazim Shafi | System and method to improve hardware pre-fetching using translation hints |
US7558939B2 (en) * | 2005-03-08 | 2009-07-07 | Mips Technologies, Inc. | Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor |
US20070022250A1 (en) * | 2005-07-19 | 2007-01-25 | International Business Machines Corporation | System and method of responding to a cache read error with a temporary cache directory column delete |
US8327075B2 (en) * | 2005-12-08 | 2012-12-04 | International Business Machines Corporation | Methods and apparatus for handling a cache miss |
US7389400B2 (en) * | 2005-12-15 | 2008-06-17 | International Business Machines Corporation | Apparatus and method for selectively invalidating entries in an address translation cache |
US7886112B2 (en) * | 2006-05-24 | 2011-02-08 | Sony Computer Entertainment Inc. | Methods and apparatus for providing simultaneous software/hardware cache fill |
-
2006
- 2006-06-01 US US11/444,803 patent/US7886112B2/en active Active
-
2007
- 2007-05-24 CN CN2007800005376A patent/CN101326500B/zh active Active
- 2007-05-24 EP EP07737212.6A patent/EP2021929B1/en active Active
- 2007-05-24 WO PCT/JP2007/000556 patent/WO2007135783A1/en active Application Filing
- 2007-05-24 JP JP2008511341A patent/JP4243318B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1235154A2 (en) * | 2001-02-21 | 2002-08-28 | Semiconductor Technology Academic | Cache memory system |
CN1577295A (zh) * | 2003-05-02 | 2005-02-09 | 微软公司 | 使用最佳化方法实现存储器存取控制 |
CN1641606A (zh) * | 2004-01-16 | 2005-07-20 | 国际商业机器公司 | 管理处理器架构中的转换机制的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
EP2021929A4 (en) | 2010-10-27 |
JP2009508179A (ja) | 2009-02-26 |
JP4243318B2 (ja) | 2009-03-25 |
CN101326500A (zh) | 2008-12-17 |
EP2021929A1 (en) | 2009-02-11 |
WO2007135783A1 (en) | 2007-11-29 |
US7886112B2 (en) | 2011-02-08 |
US20070277000A1 (en) | 2007-11-29 |
EP2021929B1 (en) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101326500B (zh) | 提供同时软件/硬件高速缓存填充的方法与装置 | |
CN101099140B (zh) | 用于混合dma队列和dma表的方法和装置 | |
CN101057223B (zh) | 支持多处理器系统中的多个配置的方法和设备 | |
JP4246204B2 (ja) | マルチプロセッサシステムにおける共有メモリの管理のための方法及び装置 | |
CN100409222C (zh) | 使能/禁止控制simd处理器切片的方法和设备 | |
JP4805341B2 (ja) | アドレス空間の仮想化のための方法および装置 | |
EP1854016B1 (en) | Methods and apparatus for synchronizing data access to a local memory in a multi-processor system | |
CN100451996C (zh) | 提供软件实现的超高速缓冲存储器的方法与装置 | |
CN100524270C (zh) | 在多处理器系统中使用直接存储器存取传输来进行列表传输的方法及装置 | |
JP4645973B2 (ja) | 命令セットのエミュレーションのための方法、装置及びシステム | |
KR100881810B1 (ko) | 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구 | |
JP2006172468A (ja) | システム内部のデータ転送を処理する装置および方法 | |
JP4583327B2 (ja) | 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置 | |
JP2006221644A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |