CN100549984C - 用于从外部设备到处理器的存储器的地址翻译的方法和装置 - Google Patents

用于从外部设备到处理器的存储器的地址翻译的方法和装置 Download PDF

Info

Publication number
CN100549984C
CN100549984C CNB2005800430121A CN200580043012A CN100549984C CN 100549984 C CN100549984 C CN 100549984C CN B2005800430121 A CNB2005800430121 A CN B2005800430121A CN 200580043012 A CN200580043012 A CN 200580043012A CN 100549984 C CN100549984 C CN 100549984C
Authority
CN
China
Prior art keywords
address
subclauses
clauses
page
hyte
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.)
Expired - Fee Related
Application number
CNB2005800430121A
Other languages
English (en)
Other versions
CN101080701A (zh
Inventor
山崎刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of CN101080701A publication Critical patent/CN101080701A/zh
Application granted granted Critical
Publication of CN100549984C publication Critical patent/CN100549984C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/04Arrangements for selecting an address in a digital store using a sequential addressing device, e.g. shift register, counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本发明提供如下方法和装置:使用外部地址的第一部分作为指针以选择段表中的多个条目之一,所述段表的每个条目代表存储器的不同段;使用所述段表的所选择条目的至少一部分作为指向页表中多个条目的一个或多个的参考,所述页表中的每个条目包括在所述存储器中的物理地址的至少一部分,并且属于代表在所述存储器的所选择段中的页的条目组;以及使用所述外部地址的第二部分作为指向所述页表中条目之一的指针,以针对所述外部地址获得到所述存储器的至少部分翻译的物理地址。

Description

用于从外部设备到处理器的存储器的地址翻译的方法和装置
技术领域
本发明涉及用于从外部存储器空间到处理器的存储器空间翻译地址的方法和装置。
背景技术
近年来,因为最前沿的计算机应用包括实时和多媒体功能,人们对于更快的计算机数据处理吞吐量有着永不满足的渴望。在各种应用中图形应用对处理系统提出了最高的需求,因为它们要求在相对短的时间内进行海量的数据访问、数据计算和数据操作以获得所期望的视觉效果。这些应用要求极快的处理速度,如每秒数千兆比特数据。虽然一些处理系统使用单处理器获得快的处理速度,但其它处理系统利用多处理器结构来实现。在多处理器系统中,多个子处理器能够并行(或者至少协同)地工作以获得所期望的处理结果。
用于执行此类应用的适当的处理系统可以包括一个或多个处理器和存储器。在一些处理系统中,可能希望将数据从外部系统(例如另一个处理系统、CCD等)传输到所述处理系统的所述存储器中。因为要针对所述处理系统的所述存储器空间来翻译对所述外部系统可见的所述存储器空间,所以有必要将与所述数据传输相关的所述外部系统的所述存储器地址翻译到所述处理系统的所述存储器中。
发明内容
本发明的一个或多个实施例可以提供这样一种改进技术,该技术对处理系统中使用的外部系统的地址进行翻译,以便可以将来自外部系统的数据存储到所述处理系统的存储器中。
根据一个或多个实施例,处理系统包括处理器、存储器和地址翻译器(优选地以硬件实现)。所述存储器被分成许多段,每个段被分成多个页。可以规定每个段中的页大小,但是它最好是统一的。运行在所述处理器上的程序初始化段表和页表。所述段表中的每个条目的最高有效位组(MSB)定义页大小,并且所述段表中的每个条目的最低有效位组(LSB)定义所述页表中的基位置。所述页表中的每个基位置是与共享存储器中的地址页对应的多个条目中的起始条目。所述页表内的每个条目代表所述共享存储器中的所述物理地址的MSB。
通过经对所述处理器的系统调用来注册所述外部地址空间的连续区域,可以将所述区域映射到所述存储器的段。对每个外部地址,可以添加基值来获得第一中间地址。所述第一中间地址的MSB被用作指向所述段表中的条目的指针。所述第一中间地址的其余位被用作第二中间地址。所述段表中的所述条目的MSB(即,所述页大小)定义了被用于所述物理地址中的页偏移的所述第二中间地址的许多LSB。所述段表的所述条目的其余位被用作指向所述页表中的起始条目的指针。所述第二中间地址的其余位(即,它的MSB)被用作通过自所述页表中的所述起始条目的偏移指向所述页表中的条目的指针。所述页表的所述条目的所述内容被用作所述物理地址的MSB,而所述第二中间地址的LSB通过用作所述物理地址的LSB扩充了所述条目。
根据一个或多个进一步的实施例,一种方法包括:添加基地址到外部地址以产生第一中间地址;使用所述第一中间地址的第一部分作为指针以选择段表中的多个条目之一,段表中的每个条目代表存储器的不同段;使用所述段表的所选择条目的至少一部分作为对页表中一个或多个条目的参考,页表中的每个条目包括存储器中物理地址的至少一部分,并且属于代表在存储器的所选择段中的页的条目组;以及使用所述第一中间地址的第二部分的一些或全部作为指向所述页表中所参考条目之一的指针,以针对所述外部地址获得到所述存储器的至少部分翻译的物理地址。
使用所述第一中间地址的第一部分的所述步骤包括使用其上的所述最高有效位组作为指向所述段表中的所述指针。
所述的方法也可以包括:使用所述第一中间地址的所述第二部分以产生第二中间地址;以及使用所述第二中间地址的至少一部分作为指向所述页表中所参考条目之一的所述指针。所述段表的所选择条目的许多位(优选地,为MSB)可以被用来划分所述第二中间地址的所述位。所述段表的所选择条目的所述许多位优选地被用来识别所述第二中间地址的许多最低有效位。
所述第二中间地址的所述最高有效位组优选地被用作所述指针以选择所述页表中的所参考条目之一。所述页表中的所选择条目内的所述物理地址的所述部分被用于产生针对所述外部地址的所翻译物理地址的部分。所述第二中间地址的所述最低有效位组被用来增加页表中的所选择条目内的所述物理地址的所述部分以产生针对所述外部地址的所翻译的物理地址。
所述段表的所选择条目的所述部分指向条目组的顶部条目,所述条目组代表所述存储器的所选择段中的页。所述第二中间地址的所述最高有效位组优选地被用作自所述组的所述顶部条目的偏移以选择所述页表中的所参考条目之一。
根据一个或多个进一步的实施例,一种装置包括:加法电路,它的工作是添加基地址到外部地址以产生第一中间地址;和查询电路。所述查询电路的工作优选地是(i)使用所述第一中间地址的第一部分作为指针以选择段表中的多个条目之一,段表中的每个条目代表存储器的不同段;以及(ii)使用所述段表的所选择条目的至少一部分作为对页表中一个或多个条目的参考,页表中每个条目包括存储器中物理地址的至少一部分,并且属于代表在存储器的所选择段中的页的条目组;(iii)使用所述第一中间地址的第二部分的一些或全部作为指向所述页表中所参考条目之一的指针,以针对所述外部地址获得到所述存储器的至少部分翻译的物理地址。
根据一个或多个进一步的实施例,一种装置包括:一部件,用于添加基地址到外部地址以产生第一中间地址;一部件,用于使用所述第一中间地址的第一部分作为指针以选择段表中的多个条目之一,段表中的每个条目代表存储器的不同段;一部件,用于使用段表的所选择条目的至少一部分作为对页表中一个或多个条目的参考,页表中每个条目包括存储器中物理地址的至少一部分,并且属于代表在存储器的所选择段中的页的条目组;一部件,用于使用所述第一中间地址的第二部分的一些或全部作为指向所述页表中所参考条目之一的指针,以针对所述外部地址获得进入存储器的至少部分翻译的物理地址。
根据一个或多个进一步的实施例,一种装置包括:至少一个能够与存储器相耦合的处理器;以及地址翻译电路,它的工作是将从外部设备接收的虚拟地址翻译成进入所述存储器的物理地址。所述至少一个处理器的工作是产生可被所述地址翻译电路使用的段表和页表,所述段表包括多个条目,每个条目代表所述存储器的不同段,以及所述页表包括多个条目,每个条目含有存储器中物理地址的至少一部分并且属于代表在所述存储器的段之一中的页的条目组。
所述地址翻译电路的工作优选地是:添加基地址到所述虚拟地址以产生第一中间地址;使用所述第一中间地址的最高有效位组作为指针以选择所述段表中的多个条目之一;以及使用所述段表的所选择条目的至少一部分作为指向代表所述存储器的所选择段中的页的条目组的顶部条目的指针。所述地址翻译电路的进一步工作优选地是以下至少之一:(i)使用所述第一中间地址的最低有效位组来产生第二中间地址;(ii)使用所述第二中间地址的最高有效位组作为自所述组的顶部条目的偏移以选择所述页表中的所参考条目之一;(iii)使用所述页表中的所选择条目内的所述物理地址的部分以产生所述物理地址的一部分;以及(iv)使用所述第二中间地址的最低有效位组来增加所述页表中的所选择条目内的所述物理地址的所述部分以产生所述物理地址。
根据一个或多个进一步的实施例,一种存储介质,包含能够引起处理系统执行动作的程序,所述动作包括:添加基地址到外部地址以产生第一中间地址;使用所述第一中间地址的第一部分作为指针以选择段表中的多个条目之一,段表中的每个条目代表存储器的不同段;使用所述段表的所选择条目的至少最低有效位组作为指向页表中所选择条目的指针,所述页表中的每个条目包括所述存储器中的物理地址的至少一部分并且属于代表所述存储器的所选择段中的页的条目组,并且所选择的条目属于代表所述存储器的所选择段中的页的条目组;以及使用所述第一中间地址的第二部分的一些或全部作为指向所述页表中所参考条目之一的指针,以针对所述外部地址获得到所述存储器的至少部分翻译的物理地址。
当这里结合附图对本发明进行描述时,对于本领域的技术人员来说,其它方面、特征、优点等将变得显而易见。
附图说明
为了说明本发明的各个方面,附图中所给出的是目前优选的形式,然而应当理解,本发明并不限于所给出的精确安排和手段。
图1是说明处理系统的所述结构的框图,它可以根据本发明的一个或多个方面进行改变;
图2是说明可以由图1的所述系统执行的地址翻译的概念图。
图3是根据本发明的一个或多个方面说明用于实现图1的所述处理系统的一个或多个功能的适当结构的框图;
图4是根据本发明的一个或多个方面说明可以由图1的所述处理系统执行的动作的部分框图和部分流程图;
图5是根据本发明的一个或多个方面说明可由图1的所述处理系统执行的处理步骤的流程图;
图6是说明根据本发明的一个或多个方面可以由图1的所述处理系统执行的进一步处理步骤的流程图;
图7是说明含有可以根据本发明的一个或多个方面进行改变的两个或多个子处理器的多处理系统的结构图;
图8是说明可以被用于实现本发明的一个或多个进一步方面的优选处理器元件(PE)的图示。
图9是可以根据本发明的一个或多个进一步方面来改变的图8所述系统的示例子处理单元(SPU)的结构图。
图10是可以根据本发明的一个或多个进一步方面来改变的图8所述系统的示例处理单元(PU)的结构图。
具体实施方式
参考所述附图,其中,相似的编号表示相似的元件,图1所示的处理系统100适合实现本发明的一个或多个特征。为了简明起见,图1的框图这里将被称为和描述为装置100,然而应当理解,所述的描述很容易以相同的效力适用于一种方法的各个方面。
系统100包括通过总线106彼此耦合的处理系统102和外部系统104。处理系统102可以包括通过总线114彼此耦合的一个或多个处理器108、存储器110和地址翻译电路112。应当理解,系统100也可能包括其它设备,但是为了简短和清楚起见省略了其它设备。
处理器108可以利用能够从存储器110中请求数据并且操作所述数据以获得所期望结果的任何已知技术来实现。例如,处理器108可以利用能够运行软件和/或固件的任何已知微处理器来实现,所述已知微处理器包括标准微处理器、分布式微处理器等。作为例子,处理器108可以是能够请求和操作诸如像素数据的数据的图形处理器,像素数据包括灰度信息、色彩信息、纹理信息、多边形信息、视频桢信息等。
在一些处理环境中,外部系统104可能寻求向存储器110写数据或者从存储器110读取数据。为此,地址翻译电路112优选地可以将从外部系统104接收的虚拟地址(不同存储器空间的外部地址)翻译成存储器110的物理地址。的确,外部系统104不能在与存储器110相同的存储器空间中工作,因此,由地址翻译电路112执行地址翻译。
参考图2,存储器110优选地分成多个段,例如,段0、段1、段2等。每个段优选地分成多个页。虽然存储器110拥有自身的物理空间,但外部系统104工作在虚拟空间,例如虚拟空间0,它不是像存储器110的所述物理空间一样的一对一的相同空间。地址翻译电路112的工作是将虚拟空间0的地址120转换为存储器110的物理地址122。由于可以有一个或多个外部系统,地址翻译电路112可以将其它虚拟空间(例如虚拟空间1)的地址124翻译成存储器110的物理地址126。
现在参考图3,图3是说明可以如何实现地址翻译电路112的实例的框图。在此实施例中,地址翻译电路112可以包括存储器,例如与数字信号处理器(DSP)118相耦合的随机存取存储器(RAM)116。DSP 118的工作是按照存储在RAM 116中的程序执行动作,其中所述的程序使得所述的DSP执行所述的地址翻译功能。处理器108也优选地与地址翻译电路112、特别是RAM 116相耦合,以便帮助实现地址翻译。
处理器108的工作优选地是初始化在DSP 118上执行的所述程序所使用的某些数据。所述的数据最好包括段表206和页表208(在图4中最佳地看到)。段表206优选地包括多个条目,每个条目代表存储器110的不同段。页表208优选地包括多个条目208B,每个条目有存储器110中的物理地址的至少一部分。页表208的每一个条目208B属于条目组208A,条目组208A代表在存储器110的所述段之一中的页。
现在将参考图4-6更详细地讨论地址翻译电路112的运行。图4是说明地址翻译电路112优选执行的各种组合功能的部分框图和部分流程图。图5-6是说明可以被系统100执行以实现地址翻译的处理步骤的流程图。在动作300中,例如,外部系统104可以规定存储器110中的每个段的页大小。这可以通过从外部系统104到处理器108的系统调用来实现。虽然可以规定页大小,但页到页和段到段的页大小最好是一致的。
在动作302中,处理器108优选地初始化段表206和页表208。这包括为段表206和页表208中的每个条目输入与所规定的页大小、段长度和段数量等相一致的数值。
在动作304中,处理系统102可以从外部系统104接收外部地址(或虚拟地址)。此外,这个地址可以与如下请求相关联:从处理系统102的存储器110读取数据或者向处理系统102的存储器110中写入数据。地址翻译电路112优选地接收外部地址202并且在其上增加基地址(或偏移)以产生第一中间地址204(动作304)。接下来,地址翻译电路112优选地利用第一中间地址204的第一部分204A作为指针来选择段表206的多个条目之一。优选地,地址翻译电路112利用第一中间地址204的最高有效位组(MSB)204A作为指向段表206中的指针。这样,一般来说,使用外部地址202的第一部分来选择段表206的条目之一。
地址翻译电路112优选地利用第一中间地址204的其余位204B来产生第二中间地址210(动作308)。注意段表206中的每个条目优选地包括代表存储器110的每个段内的页大小的多个位206A。如图解所示,这些位优选地是段表206中每个条目的最高有效位组。优选地利用段表206的所选择条目的MSB 206A来划分第二中间地址210的位。特别地,优选地使用所选择条目的MSB 206A来识别第二中间地址210的许多最低有效位(LSB)210B。隐含地,这也定义了第二中间地址210的最高有效位组210A。正如下面将详细讨论的,可以利用第二中间地址210的LSB 210B来定义物理地址212的页偏移(动作310)。
接下来,地址翻译电路112优选地利用段表206的所选择条目的至少一部分来参考页表208的多个条目208B的一个或多个。优选地,利用段表206的所选择条目的其余位(即,最低有效位组)206B来指向表示存储器110的所选择段中的页的条目组208A的起始位置或顶部条目(动作312)。接下来,地址翻译电路112优选地利用第二中间地址210的至少一部分作为指向页表208中的所参考条目208A之一的指针。因为第二中间地址210是由第一中间地址204的一部分204B所产生,可以考虑地址翻译电路112使用第一中间地址204的至少一部分204B作为指向页表208中所参考条目之一的指针。然而,更特别地,优选地利用第二中间地址210的MSB 210A作为自页表208内所述条目组的顶部条目的偏移量以选择页表208中所参考条目的一个条目208B(动作314)。
接下来,地址翻译电路112优选的工作是使用页表208中所选择条目208B内所述物理地址的所述部分以产生用于所述已翻译外部地址的物理地址212的一部分。更特别地,在页表208的所选择条目208B内的所述物理地址的所述部分优选地代表物理地址212的最高有效位组(MSB)212A(动作316)。接下来,地址翻译电路112优选地使用第二中间地址210的最低有效位组210B来增加物理地址212A的所述部分以产生物理地址212。这样,第二中间地址210的最低有效位组210B被用作物理地址212的最低有效位组212B(动作318)。此时,处理系统102可以利用物理地址212执行存储器110的所述读和/或写操作。
有利地,本发明的双表方法提供了在页大小方面的灵活性和调整段大小的便利性。这样,所述段的恰当调整提高了在内部存储器空间110中命中数据的概率。
图7是适合实现本发明的一个或多个进一步的实施例的多处理系统100A。系统100A包括通过总线108互连的多个处理器102A-D、相关联的本地存储器104A-D和共享存储器106。共享存储器106在这里也可以被称为是主存储器或系统存储器。虽然作为例子给出四个处理器102,但在不脱离本发明精神和范围的情况下可以利用任何数量的处理器。每个处理器102可以具有相同的或不同的结构。
虽然没有示出,系统100A优选地包括以上讨论的地址翻译电路112。
本地存储器104优选地位于与它们各自的处理器102相同的芯片(相同的半导体衬底)上;然而,本地存储器104优选地不是传统的硬件高速缓存存储器,因为没有片上或片外硬件高速缓存电路、高速缓存寄存器、高速缓存存储器控制器等以实现硬件高速缓存存储器功能。
处理器102优选地提供数据存取请求以便将数据(可以包括程序数据)通过总线108从系统存储器106拷贝到它们各自的本地存储器104中用于程序执行和数据操作。优选地利用直接存储器存取控制器(DMAC)(未示出)实现便于数据存取的所述机制。每个处理器的所述DMAC优选地具有与以上参照本发明其他特征讨论的的基本相同的能力。
系统存储器106优选地是通过高带宽存储器连接与处理器102相耦合的动态随机存取存储器(DRAM)(未示出)。虽然系统存储器106优选地是DRAM,但它可以用其它方法来实现,例如,静态随机存取存储器(SRAM)、磁随机存取存储器(MRAM)、光存储器、全息存储器等。
每个处理器102优选地使用处理流水线来实现,其中以流水线方式处理逻辑指令。虽然可以将所述流水线分成任意数量的处理指令的级,所述流水线通常包括取出一个或多个指令,译码所述的指令,检查所述指令间的相关性,发布所述的指令以及执行所述的指令。为此,处理器102可以包括指令缓冲器、指令译码电路、相关性检查电路、指令发布电路以及执行级。
处理器102的所述DMAC可以优选地促进在共享存储器106和一个或多个本地存储器104之间的多个数据块的所述传输以响应处理器102之一发布的单个DMA命令。为此,处理器102、本地存储器104、DMAC等优选地包括与以上参照图1-3讨论的基本相同的功能。例如,每个处理器可以在它的本地存储器104内建立一个或多个列表120,所述的DMA命令可以规定至少一个条目,例如在列表120A中的条目122A,并且所述DMA可以访问这样的条目122A并且通过使用在条目122A中规定的用于识别需要传输的相应数据块的所述起始地址和所述大小以开始数据块传输。
在一个或多个实施例中,可以将处理器102、本地存储器104和DMAC160布置在共同的半导体衬底上。在一个或多个进一步的实施例中,也可以将共享存储器106布置在所述的共同半导体衬底上,或者可以单独布置。
在一个或多个可替换的实施例中,一个或多个处理器102可以作为与其它处理器102相耦合并且能够通过总线108与共享存储器106相耦合的主处理器来工作。所述的主处理器可以通过其它处理器102调度和组织所述的数据处理。但是与其它处理器102不同,所述的主处理器可以与硬件高速缓存存储器相耦合,它能够高速缓存从共享存储器106和处理器102的一个或多个本地存储器104至少之一获得的数据。所述的主处理器可以提供数据存取请求,以利用诸如DMA技术的任何已知技术将数据(可以包括程序数据)通过总线108从系统存储器106拷贝到所述的高速缓存存储器用于程序执行和数据操作。
现在将描述多处理器系统的优选计算机结构,它适合于执行这里讨论的一个或多个特点。根据一个或多个实施例,所述的多处理器系统可以被实现为用于多媒体应用(media-rich application)的单机和/或分布处理的单芯片解决方案,例如游戏系统、家庭终端、PC系统、服务器系统和工作站。在一些诸如游戏系统和家庭终端的应用中可能需要实时计算。例如,在实时分布式游戏应用中,必须足够快地执行网络图像解压缩、3D计算机图形、音频生成、网络通信、物理仿真以及人工智能处理中的一个或多个以便提供给用户实时经历的幻觉。这样,多处理器系统中的每个处理器必须在短的、可预测的时间内完成任务。
为此,按照这种计算机结构,从共同的计算模块(单元)出发来构建多处理计算机系统的所有处理器。这种共同的计算模块有一致的结构并且优选地使用相同的指令集结构。利用计算机处理器能够形成一个或多个客户机、服务器、PC、移动计算机、游戏机、PDA、机顶盒、各种器械、数字电视机和其它设备的所述多处理计算机系统。
如果愿意的话多个所述的计算机系统也可以是网络的成员。一致的模块化结构使得所述的多处理计算机系统能够高效、快速地处理应用和数据,并且如果使用了网络,可以通过网络快速地传输应用和数据。这种结构也简化了不同大小和处理能力的网络成员的建造并且简化了这些成员处理应用的准备。
参考图8,基本处理模块是处理器元件(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的化合物。PE 500也可以使用诸如快速单通量量子(rapidsingle-flux-quantum)(RSFQ)逻辑的超导材料来实现。
PE 500通过高带宽存储器连接器516与共享(主)存储器514紧密相关联。虽然存储器514优选地是动态随机存取存储器(DRAM),存储器514能够使用其它方法来实现,例如静态随机存取存储器(SRAM)、磁随机存取存储器(MRAM)、光存储器、全息存储器等。
PU 504和子处理单元508优选地每个都耦合到包括直接存储器访问DMA功能的存储器流控制器(MFC),它与存储器接口511相结合来加速DRAM 514和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的控制下,所述的子处理单元以并行和独立的方式执行对这些数据和应用的处理。PU 504优选地用PowerPC核来实现,PowerPC核是采用精简指令集计算(RISC)技术的微处理器结构。RISC使用简单指令的组合来执行更加复杂的指令。这样,所述处理器的定时可以基于更简单和更快速的操作,使得所述的微处理器以给定的时钟速度能够执行更多的指令。
注意PU 504可以由充当主处理单元角色的子处理单元508之一来实现,它通过子处理单元508调度和组织数据和程序的处理。进一步,在处理器元件500内可以实现不止一个PU。
按照这种模块化结构,特定计算机系统所使用的PE 500的数量基于那个系统所要求的处理能力。例如,服务器可以使用四个PE 500,工作站可以使用两个PE 500而PDA可以使用一个PE 500。被分配用于处理特定软件单元的PE 500的子处理单元数量取决于在所述单元内的所述程序和数据的复杂性和大小。
图9说明子处理单元(SPU)508的优选结构和功能。SPU 508结构优选地填充通用处理器(针对广泛的应用设计以获得高的平均性能)和专用处理器(针对单一的应用设计以获得高性能)之间的空白。SPU 508被设计在游戏应用、媒体应用、宽带系统等上获得高性能,并且给实时应用的程序员提供高度的控制。SPU 508的一些能力包括图形几何流水线、表面细分、快速傅里叶变换、图像处理关键字、流处理、MPEG编码/解码、加密、解密、设备驱动器扩充、建模、游戏物理、内容创建以及音频合成和处理。
子处理单元508包括两个基本的功能单元:即SPU核510A和存储器流控制器(MFC)510B。SPU核510A执行程序运行、数据操作等,而MFC 510B执行与在SPU核510A和系统的DRAM 514之间的数据传输有关的功能。
SPU核510A包括本地存储器550、指令单元(IU)552、寄存器554、一个或多个浮点执行级556以及一个或多个定点执行级558。本地存储器550优选地用诸如SRAM的单口随机存取存储器来实现。尽管大部分处理器通过使用高速缓存器来减小存储器的等待时间,但SPU核510A实现了比高速缓存器更小的本地存储器550。的确,为了为实时应用(以及这里提到的其它应用)的程序员提供一致的以及可预测的存储器存取等待时间,在SPU508A内高速缓存存储器结构不作为首选。高速缓存器的命中/不中特性导致易变的存储器存取时间,从几个周期变化到几百个周期。这种易变性削弱了在诸如实时应用编程中所期望的存取定时可预测性。在本地存储器SRAM550中通过将数据计算与DMA传输交叠可以实现等待时间隐藏。这为实时应用的编程提供了高度的控制。因为与DMA传输相关的等待时间和指令开销超过了用于高速缓存器不中的等待时间,所以当所述DMA传输量足够大并且完全可预测时,所述SRAM本地存储器方法获得优势(例如,在需要数据之前发布DMA命令)。
在给定的一个子处理单元508上运行的程序用本地地址参考关联的本地存储器550,然而,本地存储器550的每个位置在整个系统的存储器映射中也被分配实地址(RA)。这允许特权软件将本地存储器550映射到进程的有效地址(EA)以便于在一个本地存储器550和另一个本地存储器550之间的DMA传输。PU 504也可以用有效地址直接存取本地存储器550。在优选实施例中,本地存储器550包含556K字节的存储空间,并且寄存器552的容量是128×128比特。
SPU核504A优选地用处理流水线来实现,其中逻辑指令以流水线方式来处理。虽然可以将所述的流水线分成处理指令的任意数量的级,但是所述的流水线通常包括取一个或多个指令、译码所述的指令、检查所述指令之间的相关性、发布所述的指令以及执行所述的指令。为此,IU 552包括指令缓冲器、指令译码电路、相关性检查电路和指令发布电路。
所述的指令缓冲器优选地包括与本地存储器550相耦合并且可以暂时存储所取回指令的多个寄存器。所述指令缓冲器的作用优选地是让所有的指令成组地(即,基本上同时地)离开所述寄存器。虽然所述的指令缓冲器可以是任意大小的,但是它的大小最好不超过大约2到3个寄存器。
通常,所述的译码电路分解所述的指令并且产生执行相应指令的所述功能的逻辑微操作。例如,所述的逻辑微操作可以规定算术和逻辑操作、操作到本地存储器550的装载和存储、寄存源操作数和/或中间数据操作数。所述译码电路也可以指明所述的指令使用哪个资源,例如目标寄存器地址、结构资源、功能单元和/或总线。所述的译码电路也可以提供指明所述资源所要求的所述指令流水线级的信息。所述指令译码电路的优选作用是基本上同时译码等于所述指令缓冲器的寄存器数量的多个指令。
相关性检查电路包括执行测试以确定流水线中给定指令的操作数与其他指令的操作数是否相关的数字逻辑。如果相关,则直到所述其它操作数被更新后才执行所述给定指令(例如,通过允许所述其它指令完成执行)。所述的相关性检查电路最好同时确定从译码电路112分派的多个指令的相关性。
所述指令发布电路的功能是向浮点执行级556和/或定点执行级558发布指令。
寄存器554优选地被实现为相对大的统一寄存器堆,例如128个条目的寄存器堆。这允许在不要求寄存器重命名以避免寄存器资源不足的情况下的深流水线化的高频率实现。典型地,重命名硬件会消耗掉处理系统中相当大部分的区域和能力。因此,当通过软件循环解开或其它交织技术来弥补等待时间时可以获得有利的操作。
SPU核510A优选地是超标量体系结构,以便每个时钟周期发布多于一条指令。SPU核510A优选地作为与从所述指令缓冲器分配的同时指令数量,比如2和3之间,(就是说每个时钟周期发布2或3个指令)相对应的程度的超级标量来运行。根据所要求的处理能力,可以使用更多或更少数量的浮点执行级556和定点执行级558。在优选实施例中,浮点执行级556以每秒320亿次浮点运算(32GFLOPS)的速度进行运算,并且定点执行级558以每秒320亿次运算(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可以将所述有效地址的所述较高位翻译成实地址位。然而,所述的较低地址位优选地不翻译并且被认为在逻辑上和物理上用于形成所述的实地址,并且请求存储器的存取。在一个或多个实施例中,MMU 562可以基于64位存储器管理模型来实现,并且可以提供带有4k-、64k-、1M-以及16M-字节页大小和256MB段大小的264字节的有效地址空间。优选地,MMU 562的工作是支持直至265字节的虚拟存储器,以及242字节(4万亿字节)的物理存储器用于DMA命令。MMU 562的所述硬件可以包括8-入口,完全相关的SLB、256入口,4路集联的TLB以及用于硬件TLB不中处理的4×4代替管理表(RMT)。
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通过所述的通道接口将DMA命令分配到DMAC 560中的DMA队列。一旦DMA命令在DMA队列中,它被DMAC 560内的发布和完成逻辑来处理。当完成了DMA命令的所有总线交互时,完成信号经所述的通道接口被发送回SPU核510A。
图10说明了PU 504的所述优选结构和功能。PU 504包括两个基本功能单元:PU核504A和存储器流控制器(MFC)504B。PU核504A执行程序运行、数据操作、多处理器管理等功能,而MFC 504B执行与在PU核504A和系统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上的主设备以及从设备以便执行完全连贯的存储器操作。作为主设备,它可以装载/存储到/于总线108用于L2高速缓存器和NCU 584的服务代理的请求。BIU 580也可以实现对于命令的流控制机制,它对能够发送到总线108上的命令的总数进行限制。可以将总线108上的所述数据操作设计为执行8拍,因此,BIU 580优选地被设计为128字节左右的高速缓存线,并且所述的一致性和同步间隔是128KB。
L2高速缓存器582(以及支持硬件逻辑)优选地被设计为缓存512KB的数据。例如,L2高速缓存器582可以处理可缓存的装载/存储、数据预取回、指令取回、指令预取回、高速缓存操作以及障碍操作。L2高速缓存器582优选地是8路集联的系统。L2高速缓存器582可以包括匹配6个掷出队列(例如,6个RC机器)的6个重装载队列,8个(64字节宽)存储队列。L2高速缓存器582可以提供L1高速缓存器570中部分或全部数据的备份拷贝。有利地,当处理节点被热交换时,这在恢复状态中是有用的。这种配置也允许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中,并且它的功能之一是适当地处理所述的频率交叉,因为它在两个频率域之间转发请求和重装数据。
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或M0MU 588;以及(viii)转换装载返回数据并且监听从半速到全速的流量。
MMU 588优选地为PU核504A提供地址翻译,例如经由第二级地址翻译工具。比MMU 588更小并且更快的独立指令和数据ERAT(有效地址到实地址翻译)阵列优选地在PU核504A中提供第一级翻译。
在优选实施例中,PU 504运行在46GHz、10F04,以64位实现。所述寄存器的长度优选地是64位(虽然一个或多个特定目的的寄存器可以更短),并且有效地址的长度是64位。指令单元570、寄存器572以及执行级574和576优选地用PowerPC技术来实现以获得所述的(RISC)计算技术。
有关这种计算机系统的模块结构的其它细节可以在美国专利No.6,526,491中找到,通过引用将它的全部公开合并。
根据本发明的至少一个进一步方面,可以利用诸如图中所说明的适当的硬件来获得以上描述的方法和装置。这种硬件可以利用任何已知技术来实现,例如,标准的数字电路、能够执行软件和/或固件程序的任何已知处理器、诸如可编程只读存储器(PROM)、可编程阵列逻辑设备(PAL)等的一个或多个可编程数字设备或系统。进一步地,虽然图中说明的所述装置被划分为若干功能模块,但是这些模块可以通过独立电路来实现和/或被组合成一个或多个功能单元。仍然进一步地,本发明的所述各个方面可以通过存储在适当的存储介质或媒介(例如软盘、存储芯片等)中以便于运输和/或分发的软件和/或固件程序来实现。
虽然这里已经参考特定的实施例描述了本发明,但是应当理解,这些实施例仅仅是对本发明的所述原则以及应用的说明。因此应当理解,在不脱离由所附权利要求书所定义的本发明精神和范围的情况下,可以对所述的说明性实施例进行许多的修改,并且可以设计其他的布置。
工业适用性
本发明适合于从外部存储器空间到处理器的存储器空间的地址翻译的技术。

Claims (15)

1.一种用于地址翻译的方法,包括:
将基地址添加到外部地址以产生第一中间地址;
使用所述第一中间地址的第一部分作为指针以选择段表中的多个条目之一,段表中的每个条目代表存储器的不同段并且包括代表每个段内的页大小的多个位;
使用所述段表的所选择条目的至少一部分作为对页表中的多个条目中的一个或多个条目的参考,页表中每个条目包括存储器中物理地址的至少一部分,并且属于与存储器的所选择段相对应的条目组;
使用所述第一中间地址的第二部分来产生第二中间地址;
使用所述段表的所选择条目的所述多个位来划分第二中间地址以指定第二中间地址的第一位组和第二位组,以便提取与由所述段表的所选择条目指示的段内的页大小相对应的页偏移;
使用所述第二中间地址的第一位组作为指针以选择页表中的所参考条目之一;
使用页表中的所选择条目中的所述物理地址的所述部分来产生对于外部地址的所翻译物理地址的一部分;以及
通过将所述第二中间地址的第二位组添加到所述物理地址的所述部分来产生对于外部地址的所翻译物理地址,其中使该第二位组构成所述对于外部地址的所翻译物理地址中的最低有效位组,该第二位组用于定义页偏移。
2.如权利要求1所述的方法,其中,使用所述第一中间地址的第一部分的所述步骤包括使用其最高有效位组作为指向所述段表的所述指针。
3.如权利要求1或2所述的方法,其中,指示页大小的所述多个位是所述段表的所选择条目的最高有效位组。
4.如权利要求1或2所述的方法,所述第一位组和第二位组的指定包括将所述第二中间地址的最低有效位组标识为第二位组的步骤。
5.如权利要求4所述的方法,选择页表中的所参考条目之一包括使用所述第二中间地址的最高有效位组作为第一位组的步骤。
6.如权利要求1或2所述的方法,其中,所述段表的所选择条目的所述部分指向与所述存储器的所选择段相对应的条目组的顶部条目。
7.如权利要求6所述的方法,选择页表中的所参考条目之一包括使用所述第二中间地址的最高有效位组作为自所述条目组的所述顶部条目的偏移量,以选择所述页表中所参考条目之一。
8.一种用于地址翻译的方法,包括:
使用外部地址的第一部分作为指针来选择段表中的多个条目之一,所述段表的每个条目代表存储器的不同段并且包括代表每个段内的页大小的多个位;
使用所述段表的所选择条目的至少一部分作为对页表中的多个条目中的一个或多个条目的参考,页表中的每个条目包括存储器中物理地址的至少一部分,并且属于与所述存储器的所选择段相对应的条目组;
使用所述段表的所选择条目的所述多个位来划分所述外部地址的第二部分以及指定第二部分的第一位组和第二位组,以便提取与由所述段表的所选择条目指示的段内的页大小相对应的页偏移;
使用所述第二部分的第一位组作为指针以选择页表中的所参考条目之一;
使用页表中的所选择条目中的所述物理地址的所述部分来产生对于外部地址的所翻译物理地址的一部分;以及
通过将所述第二部分的第二位组添加到所述物理地址的所述部分来产生对于外部地址的所翻译物理地址,其中使第二位组构成所述对于外部地址的所翻译物理地址中的最低有效位组,该第二位组用于定义页偏移。
9.一种用于地址翻译的装置,包括:
地址添加电路,能够将基地址添加到外部地址以产生第一中间地址,并能够使用所述第一中间地址的第一部分来产生第二中间地址;
查询电路,其能够进行以下处理:
(i)使用所述第一中间地址的第二部分作为指针以选择段表中的多个条目之一,所述段表的每个条目代表存储器的不同段并且包括代表每个段内的页大小的多个位,
(ii)使用所述段表的所选择条目的至少一部分作为指向页表中的多个条目中的一个或多个条目的参考,所述页表中的每个条目包括存储器中物理地址的至少一部分,并且属于与所述存储器的所选择段相对应的条目组,
(iii)使用所述段表的所选择条目的所述多个位来划分第二中间地址以指定第二中间地址的第一位组和第二位组,以便提取与由所述段表的所选择条目指示的段内的页大小相对应的页偏移,和
(iv)使用所述第二中间地址的第一位组作为指针以选择页表中的所参考条目之一;以及
地址翻译电路,其能够:
(1)使用页表中的所选择条目中的所述物理地址的所述部分来产生对于外部地址的所翻译物理地址的一部分,以及
(2)通过将所述第二中间地址的第二位组添加到所述物理地址的所述部分来产生对于外部地址的所翻译物理地址,其中使该第二位组构成所述对于外部地址的所翻译物理地址中的最低有效位组,该第二位组用于定义页偏移。
10.一种用于地址翻译的装置,包括:
用于将基地址添加到外部地址以产生第一中间地址的部件;
用于使用所述第一中间地址的第一部分作为指针以选择段表中的多个条目之一的部件,段表中的每个条目代表存储器的不同段并且包括代表每个段内的页大小的多个位;
用于使用段表的所选择条目的至少一部分作为对页表中的多个条目中的一个或多个条目的参考的部件,页表中每个条目包括存储器中物理地址的至少一部分,并且属于与存储器的所选择段相对应的条目组;
用于使用所述第一中间地址的第二部分来产生第二中间地址的部件;
用于使用所述段表的所选择条目的所述多个位来划分第二中间地址以指定第二中间地址的第一位组和第二位组、以便提取与由所述段表的所选择条目指示的段内的页大小相对应的页偏移的部件;
用于使用所述第二中间地址的第一位组作为指针以选择页表中的所参考条目之一的部件;
用于使用页表中的所选择条目中的所述物理地址的所述部分来产生对于外部地址的所翻译物理地址的一部分的部件;以及
用于通过将所述第二中间地址的第二位组添加到所述物理地址的所述部分来产生对于外部地址的所翻译物理地址的部件,其中使该第二位组构成所述对于外部地址的所翻译物理地址中的最低有效位组,该第二位组用于定义页偏移。
11.一种信息处理装置,包括:
至少一个处理器,能够与存储器相耦合;以及
地址翻译电路,其能够将从外部设备接收的虚拟地址翻译成进入存储器的物理地址,
其中,所述至少一个处理器能够产生可被所述地址翻译电路使用的段表和页表,
所述段表包括多个条目,每个条目代表所述存储器的不同段并且包括代表每个段内的页大小的多个位,
所述页表包括多个条目,每个条目含有存储器中物理地址的至少一部分,并且属于与所述存储器的所述段之一相对应的条目组,
该地址翻译电路能够:
将基地址添加到虚拟地址以产生第一中间地址;
使用所述第一中间地址的第一部分作为指针以选择段表中的多个条目之一;
使用所述段表的所选择条目的至少一部分作为对页表中的多个条目中的一个或多个条目的参考,每个条目属于与存储器的所选择段相对应的条目组;
使用所述第一中间地址的第二部分来产生第二中间地址;
使用所述段表的所选择条目的所述多个位来划分第二中间地址以指定第二中间地址的第一位组和第二位组,以便提取与由所述段表的所选择条目指示的段内的页大小相对应的页偏移;
使用所述第二中间地址的第一位组作为指针以选择页表中的所参考条目之一;
使用页表中的所选择条目中的所述物理地址的所述部分来产生对于虚拟地址的所翻译物理地址的一部分;以及
通过将所述第二中间地址的第二位组添加到所述物理地址的所述部分来产生对于虚拟地址的所翻译物理地址,其中使该第二位组构成所述对于外部地址的所翻译物理地址中的最低有效位组,该第二位组用于定义页偏移。
12.如权利要求11所述的信息处理装置,其中,所述地址翻译电路能够:
使用所述第一中间地址的最高有效位组作为指针,选择所述段表中的多个条目之一作为所述第一中间地址的所述第一部分;以及
使用所述段表的所选择条目的至少一部分作为指向与所述存储器的所选择段相对应的条目组的顶部条目的指针。
13.如权利要求12所述的信息处理装置,其中,所述地址翻译电路能够使用所述第一中间地址的最低有效位组作为所述第一中间地址的所述第二部分来产生第二中间地址。
14.如权利要求11至13之任一项所述的信息处理装置,其中,所述地址翻译电路能够使用所述第二中间地址的最高有效位组作为自所述条目组的顶部条目的偏移以选择所述页表中的所参考条目之一。
15.如权利要求11至13之任一项所述的装置,其中,所述地址翻译电路能够在产生对于虚拟地址的所翻译物理地址时,使用所述第二中间地址的最低有效位组作为所述第二位组。
CNB2005800430121A 2004-12-14 2005-12-14 用于从外部设备到处理器的存储器的地址翻译的方法和装置 Expired - Fee Related CN100549984C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/011,784 2004-12-14
US11/011,784 US7707385B2 (en) 2004-12-14 2004-12-14 Methods and apparatus for address translation from an external device to a memory of a processor

Publications (2)

Publication Number Publication Date
CN101080701A CN101080701A (zh) 2007-11-28
CN100549984C true CN100549984C (zh) 2009-10-14

Family

ID=35999519

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005800430121A Expired - Fee Related CN100549984C (zh) 2004-12-14 2005-12-14 用于从外部设备到处理器的存储器的地址翻译的方法和装置

Country Status (6)

Country Link
US (1) US7707385B2 (zh)
EP (1) EP1846829B1 (zh)
JP (1) JP2006172474A (zh)
KR (1) KR100881810B1 (zh)
CN (1) CN100549984C (zh)
WO (1) WO2006064961A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155955A1 (en) * 2005-01-10 2006-07-13 Gschwind Michael K SIMD-RISC processor module
US20080065855A1 (en) * 2006-09-13 2008-03-13 King Matthew E DMAC Address Translation Miss Handling Mechanism
US7986327B1 (en) 2006-10-23 2011-07-26 Nvidia Corporation Systems for efficient retrieval from tiled memory surface to linear memory display
US7805587B1 (en) * 2006-11-01 2010-09-28 Nvidia Corporation Memory addressing controlled by PTE fields
KR101416879B1 (ko) * 2008-10-06 2014-08-07 삼성전자주식회사 비휘발성 메모리의 동작 방법
US8549182B2 (en) * 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
KR101724590B1 (ko) 2011-01-31 2017-04-11 삼성전자주식회사 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법
GB2493340A (en) * 2011-07-28 2013-02-06 St Microelectronics Res & Dev Address mapping of boot transactions between dies in a system in package
EP3033682A4 (en) * 2013-08-14 2017-04-05 Skyera, LLC Address translation for a non-volatile memory storage device
CN105404597B (zh) * 2015-10-21 2018-10-12 华为技术有限公司 数据传输的方法、设备及系统
US10176109B2 (en) * 2017-04-20 2019-01-08 Oracle International Corporation Permuted memory access mapping
CN110362509B (zh) * 2018-04-10 2024-04-12 北京忆恒创源科技股份有限公司 统一地址转换方法与统一地址空间
EP4036741A1 (en) * 2019-10-17 2022-08-03 Huawei Technologies Co., Ltd. Address translation method and apparatus
CN112000593B (zh) * 2020-07-31 2022-03-25 瑞芯微电子股份有限公司 一种PCIe设备管理方法及其运行系统

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2230258A5 (zh) * 1973-05-16 1974-12-13 Honeywell Bull Soc Ind
FR130806A (zh) * 1973-11-21
GB1498116A (en) 1974-04-18 1978-01-18 Honeywell Inf Systems Data processing systems
IT1049588B (it) 1974-09-17 1981-02-10 Siemens Ag Dispositivo per eseguire operazioni di immissione emissione in un impanto elaboratore di dati funzionante con formulazione di in dirizzi virtuali
US4356549A (en) * 1980-04-02 1982-10-26 Control Data Corporation System page table apparatus
FR2515404B1 (fr) 1981-10-28 1987-06-26 France Etat Ensemble de gestion de la memoire d'un processeur
AU597363B2 (en) 1987-05-22 1990-05-31 Honeywell Bull Inc. Present bit recycle and detect logic for a memory management unit
JPS6417138U (zh) 1987-07-22 1989-01-27
EP0464333A3 (en) 1990-07-03 1992-07-29 International Business Machines Corporation Virtual memory
EP0506236A1 (en) * 1991-03-13 1992-09-30 International Business Machines Corporation Address translation mechanism
JPH087717B2 (ja) * 1991-09-03 1996-01-29 富士通株式会社 動的アドレス変換処理装置
US5428759A (en) * 1992-03-30 1995-06-27 Unisys Corporation Associative memory system having segment and page descriptor content-addressable memories
JPH06231047A (ja) * 1993-02-05 1994-08-19 Fujitsu Ltd アドレス変換方法および装置
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
US5752275A (en) * 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US6088780A (en) * 1997-03-31 2000-07-11 Institute For The Development Of Emerging Architecture, L.L.C. Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address
JP2000148665A (ja) 1998-11-17 2000-05-30 Nec Eng Ltd データ処理装置
US6349380B1 (en) * 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6738889B2 (en) * 1999-07-12 2004-05-18 International Business Machines Corporation Apparatus and method for providing simultaneous local and global addressing with hardware address translation
WO2002057923A1 (fr) * 2001-01-19 2002-07-25 Sony Corporation Dispositif de commande de protection de la memoire
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks

Also Published As

Publication number Publication date
US7707385B2 (en) 2010-04-27
KR20070089998A (ko) 2007-09-04
EP1846829A1 (en) 2007-10-24
KR100881810B1 (ko) 2009-02-03
WO2006064961A1 (en) 2006-06-22
JP2006172474A (ja) 2006-06-29
CN101080701A (zh) 2007-11-28
EP1846829B1 (en) 2013-07-03
US20060129786A1 (en) 2006-06-15

Similar Documents

Publication Publication Date Title
CN100549984C (zh) 用于从外部设备到处理器的存储器的地址翻译的方法和装置
CN100409222C (zh) 使能/禁止控制simd处理器切片的方法和设备
CN100432956C (zh) 管理多处理器系统中的共享存储器的方法和设备
CN101099140B (zh) 用于混合dma队列和dma表的方法和装置
CN101057223B (zh) 支持多处理器系统中的多个配置的方法和设备
CN101326500B (zh) 提供同时软件/硬件高速缓存填充的方法与装置
CN100451996C (zh) 提供软件实现的超高速缓冲存储器的方法与装置
CN100524270C (zh) 在多处理器系统中使用直接存储器存取传输来进行列表传输的方法及装置
EP1861790B1 (en) Methods and apparatus for virtualizing an address space
US11604649B2 (en) Techniques for efficiently transferring data to a processor
US7818724B2 (en) Methods and apparatus for instruction set emulation
CN101401128A (zh) 使用图形处理进行粒子操作的方法和装置
US11907717B2 (en) Techniques for efficiently transferring data to a processor
US20190147884A1 (en) Accelerated data transfer for latency reduction and real-time processing
US20080091886A1 (en) Dynamic Path Determination To An Address Concentrator
US10915445B2 (en) Coherent caching of data for high bandwidth scaling
JP4583327B2 (ja) 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置
JP2006221644A (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置
CN108734631A (zh) 活动窗口渲染优化和显示
US20230289190A1 (en) Programmatically controlled data multicasting across multiple compute engines
Chiu et al. Design and Implementation of the Link-List DMA Controller for High Bandwidth Data Streaming

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091014

Termination date: 20151214

EXPY Termination of patent right or utility model