CN1808400A - 管理多处理器系统中的共享存储器的方法和设备 - Google Patents
管理多处理器系统中的共享存储器的方法和设备 Download PDFInfo
- Publication number
- CN1808400A CN1808400A CNA2006100057113A CN200610005711A CN1808400A CN 1808400 A CN1808400 A CN 1808400A CN A2006100057113 A CNA2006100057113 A CN A2006100057113A CN 200610005711 A CN200610005711 A CN 200610005711A CN 1808400 A CN1808400 A CN 1808400A
- Authority
- CN
- China
- Prior art keywords
- subclauses
- clauses
- shared storage
- relevant
- section
- 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.)
- Granted
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
方法和设备设置存储器分配表(MAT)条目与二进制树中的节点关联,使得节点和条目被组合成层次级,每个条目包含状态信息;把节点和条目与多处理器系统的共享存储器的区段关联,使得更高级节点和条目与共享存储器的更大量区段相关并且更低级节点和条目与共享存储器的更小数量的区段相关;初始化MAT使得至少多个条目的状态信息指示共享存储器的相关一或多个区段可用于预订;及在对应于要预订的,期望大小的共享存储器的层级处选择MAT中一组条目中的一个条目。
Description
技术领域
本发明涉及管理多处理器系统中的共享存储器的方法和设备,该系统中存储器的各部分可以被预订。
背景技术
近年来,由于刀锋(cutting-edge)计算机应用涉及实时,多媒体功能,所以存在永不满足的对更快速计算机处理数据吞吐率的需求。由于图形应用需要在相对短时间段内进行这种大量数据访问,数据计算和数据操作以实现期望的可见结果,所以在各种应用中,图形应用对处理系统有最高的要求。这些应用需要非常快速的处理速度,例如每秒好几千兆位的数据。虽然某些处理系统使用单处理器实现快速处理速度,但是其它则使用多处理器体系结构实现。在多处理器系统中,多个子处理器能够并行(或至少一致)地操作以实现期望的处理结果。
在某些现有的多处理器系统中,多个并行处理器可以使用共享存储器以存储数据。存储器管理技术被用来防止分配已经被使用的区域并且允许分配未使用区域。管理共享存储器的分配的传统方案涉及作为存储器区域的仲裁器的管理处理器。这个方案从并行处理器取消自主权,并且因此在某些情况下降低处理效率。
发明内容
本发明的一或多个实施例可以通过访问系统的共享存储器的存储器分配表(MAT)来用于多处理器系统的并行处理器以控制存储器分配。处理器被进一步用以在表中搜索存储器的未使用区段,并且根据需要预订一或多个区段。本发明还用于能够在一个DMA周期从共享存储器复制,容易搜索并且容易更新的非常紧凑的MAT结构。
MAT最好是一维阵列,其中阵列中的每个顺序位置对应于″节点″,并且每个位置的内容包含状态位(最好是2位)。MAT的节点表示二进制树的节点。根节点(节点1)是零级(树顶端)并且表示共享存储器的最大分配空间。从属于节点1的中间节点2和3在一级并且每个表示最大分配空间的1/2。从属于节点2的中间节点4和5和从属于节点3的中间节点6和7在二级并且每个表示最大分配空间的1/4。假定一个四级树(L=4),末端节点8和9(从属于节点4),末端节点10和11(从属于节点5),末端节点12和13(从属于节点6),和末端节点14和15(从属于节点7)在三级并且每个表示最大分配空间的1/8。
MAT的每个节点位置的内容最好包含两个状态位,其可以表示:N=部分预订;I=可用;U=使用;及C=继续。
继续上面的例子并且假定例如最大分配大小为8KB,则每个末端节点(即,节点8-15)表示可以分配的存储器的1KB区段,其也是分配的粒度。MAT的大小等于节点数量(2L-1)乘2位,其在这种情况下是15*2=30位。
在共享存储器中试图获得空间(例如,1KB空间)的处理器从共享存储器(最好使用单DMA传送)读取MAT。处理器使用下列等式转换所需空间大小为树中的层级:层级=log2(最大空间/所请求的空间),其在上述例子中是层级=log2(8KB/1KB)=3。这个层级对应于MAT中的末端节点8-15。从节点8开始,处理器搜索状态(I),例如可以在例如节点10处发现。接着,测试节点10的树系(lineage)以查看是否先前预订了存储器的较大区域(例如,两个或更多连续区段)。如果没有,则与节点10相关的共享存储器的区段及MAT的条目10可以被预订。
根据本发明的一或多个其它方面,方法和设备用于:把存储器分配表(MAT)条目与二进制树中的节点关联,使得节点和条目被组合成层次级;把节点及条目与多处理器系统的共享存储器的区段关联,使得高级节点及条目与共享存储器的较大量区段相关,并且低级节点和条目与共享存储器的较少量区段相关;及通过评估对应于要预订的期望大小的共享存储器的MAT的条目的状态信息,并且接着评估一或多个高级条目的状态信息,来选择共享存储器的一或多个区段。
每个条目的状态信息至少包含:(i)有关相关共享存储器的一或多个区段是否已经预订或可用于预订的指示符;和(ii)有关与指定条目的树系中的一或多个低级条目相关的共享存储器的一或多个区段已经被预订的指示符。
树中的最高级节点和MAT中的相关最高级条目最好与共享存储器的所有区段相关;并且树中的多个最低级节点和MAT中的相关多个最低级条目最好均与共享存储器的一个区段相关。
MAT最好被初始化成使得至少多个条目的状态信息指示共享存储器的相关一或多个区段可用于预订。
选择共享存储器的一或多个区段的功能可以包含基于要预订的共享存储器的期望大小计算MAT中的层级。MAT中的层级可以被计算为近似等于log2(M/D),其中M是可用于预订的共享存储器的最大大小,并且D是要预订的共享存储器的期望大小。
方法和设备最好还用于选择与具有指示共享存储器的相关一或多个区段可用于预订的状态信息的计算层级相关的条目之一。方法和设备还可以用于评估选定条目的树系中的一或多个高级条目,以确定高级条目是否具有指示共享存储器的相关区段可用于预订的状态信息。这个功能最好针对树系中的相继高级条目重复执行,直到高级条目之一的状态信息指示共享存储器的相关区段可用于预订。
当确定结果指示树系中的一或多个高级条目具有指示共享存储器的相关区段不可用于预订的状态信息时,可以选择与计算层级相关的条目中一个不同条目。
评估可以包含:当当前条目的状态信息指示与当前条目相关的共享存储器的全部区段可用于预订时,继续执行树系中的相继高级条目的评估。这个评估最好被重复执行,直到当前条目的状态信息指示对与MAT中的低级条目相关的一或多个存储器区段进行了先前预订,而不是预订了与当前条目相关的全部存储器区段,从而终止树系中的高级条目的评估。
最好在(i)全部评估条目的状态信息指示与相应评估条目相关的共享存储器的全部区段可用于预订,并且(ii)在终止顺序评估之前到达MAT中的最高级条目时,修改全部评估条目的状态信息。例如,每个评估条目的状态信息被修改以指示对与MAT中的低级条目相关的一或多个存储器区段进行了先前预订,而不是预订了与当前条目相关的全部存储器区段。
当树系中的当前高级条目的状态信息的评估指示与当前条目相关的共享存储器的全部区段被预订时,MAT的临时选定条目可以被放弃。在这种情况下,在具有指示与临时选定条目相关的共享存储器的一或多个区段可用于预订的状态信息的计算层级处临时选定该条目组的另一个条目。此后,可以对其它临时选定条目的树系中的一或多个高级条目执行评估,以确定状态信息是否指示与其它临时选定条目相关的共享存储器的一或多个区段可用于预订。
当结合附图对本发明进行描述时,本领域技术人员将明白其它方面,特征,优点等等。
附图说明
出于说明本发明的各种方面的目的,以附图形式示出当前优选的方式,然而,可以理解本发明不局限于示出的具体方案和手段。
图1是根据本发明的一或多个方面,说明具有可以调整的两个或更多子处理器的多处理系统的结构的模块图;
图2是根据本发明的一或多个方面,说明图1的处理系统的共享存储器的结构和操作的模块图;
图3是根据本发明的一或多个方面,说明图1的系统的存储器分配表的某些方面的概念图;
图4是说明存储器分配表的状态和其二进制表示之间关系的真值表;
图5是根据本发明的一或多个方面,说明处理系统的存储器分配表的某些性质的二进制树图;
图6是根据本发明的一或多个方面,说明执行处理步骤的流程图;
图7-12是根据本发明的一或多个方面,说明当系统的共享存储器的区段被预订时,图1的系统的存储器分配表的概念图;
图13是根据本发明的一或多个其它方面,说明可以在图1(或其它实施例)的多处理系统中实现关键字表的结构以便共享系统的处理器中的预订对象的模块图;
图14是根据本发明的一或多个其它方面,说明可以执行以便共享系统的处理器中的预订对象的处理步骤的流程图;
图15是说明可以被用来实现本发明的一或多个其它方面的最优处理器单元(PE)的框图;
图16是根据本发明的一或多个其它方面,说明可以调整的图15的系统的示例性子处理单元(SPU)的结构的框图;及
图17是根据本发明的一或多个其它方面,说明可以调整的图15的系统的示例性处理单元(PU)的结构的框图。
具体实施方式
参照附图,其中类似附图标记指示类似单元,图1中示出了适于执行本发明的一或多个特征的处理系统100的至少一部分。出于简洁和清晰的目的,图1的模块图在这里将被称作和描述为如图所示的设备100,然而,可以理解,描述可以容易地被应用于具有相同作用的方法的各个方面。
处理系统100包含多个处理器102A,102B,102C和102D,可以理解,可以在不偏离本发明的宗旨和范围的前提下使用任何数量的处理器。处理系统100还包含多个本地存储器104A,104B,104C,104D和共享存储器106。至少处理器102,本地存储器104和共享存储器106最好通过根据适当协议针对每个部件传送数据的总线系统108彼此连接(直接或间接)。
每个处理器102可以有相似构造或不同构造。可以使用能向共享(或系统)存储器106请求数据,并且操作数据以实现期望结果的任何已知技术实现处理器。例如,处理器102可以使用能执行软件和/或固件、包含标准微处理器,分布式微处理器等等的任何已知微处理器实现。例如,一或多个处理器102可以是能请求和操作包含灰度信息,色彩信息,纹理数据,多边形信息,视频帧信息等等,例如像素数据的数据的图形处理器。
系统100的一或多个处理器102可以作为主(或管理)处理器。主处理器可以安排和协调数据其它处理器的处理。
系统存储器106最好是通过存储器接口电路(未示出)连接到处理器102的动态随机存取存储器(DRAM)。尽管系统存储器106最好是DRAM,但是存储器106可以使用其它器件实现,例如静态随机存取存储器(SRAM),磁性随机访问存储器(MRAM),光学存储器,全息存储器等等。
每个处理器102最好包含处理器核心和其中的相关一个本地存储器104以执行程序。这些部件可以被集成地布置在公共半导体基底上,或可以按设计人员的期望被分别布置。处理器核心最好使用处理流水线实现,其中逻辑指令以流水线方式处理。尽管流水线可以被分成处理指令的任何数量的级段,但是流水线通常包括获取一或多个指令,解码指令,检查指令间的相关性,发出指令及执行指令。在这点上,处理器核心可以包含指令缓冲区,指令解码电路,相关性检查电路,指令发出电路及执行级段。
每个本地存储器104通过总线被连接到与它相关的处理器核心102,并且最好位于与处理器核心相同的芯片(相同半导体基底)上。本地存储器104最好不是其中不存在实现硬件高速缓冲存储器功能的片上或芯片外硬件高速缓存电路,高速缓存寄存器,高速缓冲存储器控制器等等的传统硬件高速缓冲存储器。因为一个芯片的空间通常有限,所以本地存储器的大小可能比共享存储器106小很多。
处理器102最好提供数据访问请求,以通过总线系统108把系统存储器106的数据复制到其相应的用于程序执行和数据操作的本地存储器104。利于数据访问的机构可以使用例如直接存储器访问(DMA)技术的已知技术实现。这个功能最好通过存储器接口电路执行。
参照图2,共享存储器106可以包含一或多个子区域106A,106B,106C等等。区域106C中的一个可以被预订给面向对象的接口活动,例如产生互斥对象(互斥对象),其用于维护共享存储器中数据间的一致性。例如,互斥对象可以是信号量106D,例如二元信号量,其中只允许处理器102中的一个预订对象。虽然管理互斥对象的传统方法涉及具有建立互斥对象的单边权力的管理处理器,但是本发明提供了可以由管理处理器使用或可以由多个处理器102管理的可选技术。
参照图3,存储器分配表(MAT)最好被用于管理互斥对象的产生。一或多个互斥对象可以通过可由一或多个处理器102预订的共享存储器106的相应区段建立。这种共享存储器106的一或多个区段的预订可以确保在需要满足一致性要求的情况下保护预订区段内的任何数据。MAT 110最好是包含多个条目(出于说明的目的,编号为1,2,3,4...15)和每个条目的状态信息的一维表。MAT 110中的每个条目最好与共享存储器106的一或多个区段相关,其中所述区段可以由一或多个处理器102单独或集中预订。
参照图4,状态信息可以具有多个状态中的至少一个,例如I=可用于预订的区段;N=至少部分预订的区段;U=预订的区段;及C=继续的区段。这里将在下面更详细地讨论所有这些状态。然而,当前应当注意,每个状态最好如图4的真值表所示以二进制形式表示。最好,在初始化状态下,MAT 110的每个条目包含状态信息I,由此每个条目的相关区段可用于预订。初始化处理可以由处理器102中的一个执行,或可以由主处理器执行。
应当注意,MAT 110不需要包含过量数据以实现共享存储器106的互斥对象的管理。实际上,每个条目只需要包含表示指定条目的状态的相对小数量的位,例如2位。因而,MAT 110不需要使用存储介质中的大量空间,例如共享存储器106的某部分。最好,完全定义MAT110所需的相对小数量的位允许在一次DMA传送中在共享存储器106和处理器之间传送整个MAT 110。本领域的技术人员将理解,建立分配表的传统技术导致表具有非常大的尺寸,其不太可能在一个DMA周期中传送。
参照图5,MAT 110的每个条目最好与二进制树中的相应节点相关,使得节点和条目组合成层次级,即零级,一级,二级,三级等等。根节点(节点1)处于零级(二进制树的顶端)并且表示共享存储器的最大分配空间。这个最大分配空间可以被称作共享堆。节点1与MAT 110中的条目1相关。从属于节点1的中间节点2和3与MAT 110的条目2和3分别相关。节点2和3处于一级,并且每个表示最大分配空间的一半(在这些例子中,共享存储器106的四个区段)。从属于节点2的中间节点4和5和从属于节点3的中间节点6和7分别与MAT 110的条目4,5,6和7相关。所有这些节点表示最大分配空间的1/4(在这些例子中,共享存储器106的两个区段)。
假定树中只存在四级,节点8-15是末端节点,意味着没有从属于它们的其它节点。末端节点8和9从属于节点4,末端节点10和11从属于节点5,末端节点12和13从属于节点6,并且末端节点14和15从属于节点7。所有这些节点分别与MAT 110的条目8,9,10,11,12,13,14和15相关。所有这些节点表示最大分配空间的1/8(在这些例子中,共享存储器106的一个区段)。
继续上面的例子并且假定例如最大分配大小为8KB,则每个末端节点(例如,节点8-15)表示可以被预订的共享存储器106的1KB区段,也就是说分配的粒度是1KB。因而,MAT 110的大小近似等于节点(条目)数量乘表示每个条目的状态信息的位的数量。节点(条目)数量可以使用下列公式计算:2L-1,其中L是二进制树中的层级数。因而,在迄今讨论的例子中,MAT 110的大小是15×2=30位。
现在参考图6,其是说明可以通过一或多个处理器102执行以便使用MAT 110管理共享存储器106内的互斥对象的处理步骤的流程图。例如,现在讨论使用共享存储器106的区段的若干二元信号量的建立。在操作300中,MAT 110最好从例如共享存储器106的存储介质被读取到处理器102中的一个,例如其本地存储器104。在操作302中,其中产生二元信号量的期望部分存储器的大小被转换成二进制树的层级,也就是说MAT 110内的层级。优选地,基于下列公式计算MAT 110的层级:层级=log2(M/D),其中M是可用于预订的共享存储器的最大大小(最大分配空间),并且D是要预订的共享存储器的期望大小(例如,信号量的大小)。使用上文例子的参数,出于讨论的目的假设可用空间的最大大小M是8KB,并且信号量的期望大小D是1KB(即,共享存储器106的一个区段)。因而,层级=log2(8KB/1KB)=log2(8)=3。
在操作304中,MAT 110的计算层级与MAT 110内的若干条目相关,以便形成从中选择一个条目的一组条目。参照图5,与三级相关的节点是节点8-15。与计算的三级相关的MAT 110内的条目组包含条目8-15。这些条目中的一个根据其状态信息来选择。尤其是,选择组中具有指示与选定条目相关的共享存储器106的一或多个区段可用于预订的状态信息的条目之一。由于假定MAT 110处于初始化状态(图3),可以选择任何条目8-15。实际上,与这些条目的每个相关的状态信息是I,由此与每个条目相关的区段可用于预订。应当注意,在不偏离本发明的宗旨和范围的前提下,可以使用任何有用方案来选择组的条目之一。例如,可以进行组的条目的顺序扫描,由此可以选择所遇到的具有状态信息I的第一个条目。
优选地,组内一个条目的选择只是临时选择,其它处理将在选择被完成之前执行,并且预订共享存储器106的相关区段。出于说明的目的,由于条目8是包含指示与其相关的区段可用于预订的状态信息的组中的第一个条目,所以假定条目8被临时选择。在操作306中,临时选定条目8的树系被测试以确定与其相关的区段是否可事实上被预订。尤其是,这可能需要评估临时选定条目8的树系中的一或多个高级条目的状态信息,以确定这种高级条目的状态信息是否指示与临时选定条目8相关的区段可用于预订。
参照图5,节点8的下一个高级节点(父节点)是在二级的节点4。因而,来自条目8的MAT 110中的下一个高级条目是条目4。可以基于下列公式算术计算来自MAT 110中的任何条目的父条目:父节点=INTEGER(当前节点/2)。MAT 110的条目4的状态信息被优选地评估。转到图3,节点4的状态信息是I,由此与条目4相关的区段(即,区段与条目8和9相关)可用于预订。因为在这些环境下不能进行最终确定,所以评估最好在顺序的更高级继续执行。
转到图5,节点4的下一个高级节点(父节点)是在一级的节点2。条目4的父条目是INTEGER(4/2)=条目2。转到图3,条目2的状态信息是I,指示与条目2相关的区段(即,与条目8-11相关的区段)可用于预订。再次地,因不能在这些环境下进行最终确定,所以最好继续执行顺序的更高级条目的评估。
转到图5,节点2的下一个高级节点,即父节点是在零级的节点1。条目2的父条目是INTEGER(2/2)=条目1。转到图3,节点1的状态信息是I,指示与条目1相关的区段(即,与条目8-15相关的区段-全部区段)可用于预订。因为在MAT 110的条目8的树系中不存在更高级条目,所以评估优选地终止。在这些环境下,条目8可以被选择并且与条目8相关的共享存储器106的区段可以被选择和预订。
参照图7,为了利于互斥对象的进一步管理并且建立其它信号量,MAT 110最好被修改以记录关于结合MAT 110的条目8预订的共享存储器106的区段的预订所采取的操作的某些方面。尤其是,MAT 110的条目8的状态信息最好从I修改到U,其指示与条目8相关的共享存储器106的区段已经被预订。此外,因为条目8的树系中的高级条目的评估达到最高级条目,即条目1(对应于二进制树的根节点1),所以最好进行MAT 110的进一步修改。尤其是,在这些例子中的条目8的树系中的每个条目,即条目4,2和1的状态信息最好是从I转变到N,指示与这些条目相关的至少一个区段被预订。下面结合其它区段的预订更详细地讨论条目4,2和1的状态转变的意义。
参照图7-8,另一个1KB大小的信号量可以通过在MAT 110中从共享存储器106读取,计算对应于要预订的存储器的期望部分的大小的层级,并且建立与这个计算层级相关的MAT 110的一组条目来产生。在这个例子中,计算层级是L=log2(8KB/1KB)=3。在MAT 110中与三级相关的条目组包含条目8-15。条目8-15的状态的顺序评估(参见图7)揭示出条目9包含指示与该条目相关的区段可用于预订的状态I。接着,评估条目9的树系中的高级条目的状态信息。尤其是,条目9的父条目被计算为父条目=INTEGER(9/2)=4。条目4的状态信息被评估并且发现是N,其指示涉及与条目4相关的低级条目的至少一个区段已经被预订,而不是预订了所有与条目4相关的存储器区段。在这些环境下,树系中的高级条目的评估可以被终止。这是由于状态N的第一次出现确保与临时选定条目9相关的共享存储器106的区段可用于预订。作为响应,与条目9相关的状态信息从I转变到U,(参见图8)其指示与条目9相关的共享存储器106的区段已经被预订。接着MAT 110最好被回写到共享存储器106。
参照图8-9,例如2KB大小的另一个信号量可以通过在MAT 110中从共享存储器106读取,计算对应于要预订的存储器的期望部分的大小的层级,并且建立与这个计算层级相关的MAT 110的一组条目来产生。在这个例子中,计算层级是L=Log2(8KB/2KB)=2。在MAT 110中与二级相关的条目组包含条目4,5,6和7。条目4,5,6和7的状态的顺序评估(参见图8)揭示出条目5包含指示与该条目相关的区段可用于预订的状态I。接着,评估条目5的树系中的高级条目的状态信息。尤其是,条目5的父条目被计算为父条目=INTEGER(5/2)=2。条目2的状态信息被评估并且发现是N,其指示涉及与条目2相关的低级条目的至少一个区段已经被预订,而不是预订了所有与条目2相关的存储器区段。在这些环境下,树系中的高级条目的评估可以被终止。再次地,这是由于状态N的第一次出现确保与临时选定条目5相关的共享存储器106的区段可用于预订。作为响应,与条目5相关的状态信息从I转变到U,(参见图9)其指示与条目5相关的共享存储器106的区段已经被预订。接着MAT 110被回写到共享存储器106。
参照图5,上面讨论的例子假定可用于预订的最大存储器的大小(例如,共享堆大小)是2的幂。因而,在最低级的每个末端节点(节点8-15)与共享存储器106的相应区段相关。然而,通常共享堆的大小可能不是以2为因数,由此树的一或多个末端节点(和MAT 110的一或多个条目)可能不与共享存储器106的区段相关。例如,共享堆的大小可能只包含7个区段,由此节点/条目15不与共享堆的区段相关。在这种情况下,MAT 110的条目最好反映节点15不与共享堆的区段相关。
MAT 110可被修改以反映没有共享存储器的区段与条目15相关。条目15可被″临时″选择。接着,来自条目15的MAT 110中的高级条目是父节点=INTEGER(15/2)=条目7。MAT 110的条目7的状态信息被优选地评估。转到图9,节点7的状态信息是I,由此与其相关的区段(即,区段与条目14和15相关)可用于预订。因为条目7不包含U或N状态,所以评估最好在顺序的更高级继续执行。条目7的父条目是INTEGER(7/2)=条目3。节点3的状态信息是I,其指示那些与其相关的区段(即,区段与条目6-7相关)可用于预订。再次地,条目3不包含U或N状态,评估最好在顺序的更高级继续执行。条目3的父条目是INTEGER(3/2)=条目1。节点1的状态信息是N,其指示与条目1相关的一或多个区段已经被预订而不是所有这种区段被预订。因为父条目(条目1)具有状态N(并且是根节点),所以评估最好终止。
MAT 110的条目15的状态信息最好从I被修改到U(参见图10),其保证条目15将不再可用于临时或最终选择。此外,因为条目15的树系中的高级条目的评估达到最高级条目,即条目1(对应于二进制树的根节点1),所以条目15的树系中的每个条目,即条目7和3的状态信息最好从I转变到N,其指示与这些条目相关的至少一个区段被预订。
参照图10-11,1KB大小的另一个信号量可以通过在MAT 110中从共享存储器106读取,计算对应于要预订的存储器的期望部分的大小的层级,并且建立与这个计算层级相关的MAT 110的一组条目来产生。在这个例子中,计算层级是L=log2(8KB/1KB)=3。在MAT 110中与三级相关的条目组包含条目8-15。条目8-15的状态的顺序评估(参见图10)揭示条目10包含状态I,其指示与该条目相关的区段可用于预订。接着,评估条目10的树系中的高级条目的状态信息。尤其是,条目10的父条目被计算为父条目=INTEGER(10/2)=5。条目5的状态信息被评估并且发现为U,其指示与条目10和11相关的区段已经被预订。
因而,临时选择组中的例如条目11的另一个条目。这产生相同结果:父条目5具有状态U。因而,临时选择组中的例如条目12的另一个条目。父条目是INTEGER(12/2)=6。条目6的状态信息被评估并且发现是N,其指示涉及与条目6相关的低级条目的至少一个区段已经被预订,而不是预订了所有与条目6相关的存储器区段。因为状态N的第一次出现确保与临时选定条目12相关的共享存储器106的区段可用于预订,所以可以终止树系中的高级条目的评估。接着,与条目12相关的状态信息从I转变到U(参见图11),其指示与条目12相关的共享存储器106的区段已经被预订。接着MAT 110最好被回写到共享存储器106。
参照图11-12,可以期望产生例如2KB大小的另一个信号量。在上文的例子中,只存在可用于预订的共享存储器106的两个区段,即与MAT 110的条目10和11相关的区段。然而,应该注意,其它处理技术最好被用来预订这些区段。这是由于在图11-12中呈现的环境下预订2KB大小信号量的上文出现的技术将导致不完整结果。尤其是,在这个例子中,计算层级是L=Log2(8KB/2KB)=2。在MAT 110中与二级相关的条目组包含条目4,5,6和7。条目4,5,6和7的状态的顺序评估(参见图11)揭示没有条目包含指示与该条目相关的区段可用于预订的状态I。因而,具有状态N的条目最好被评估,以确定是否在其树系中的任何低级条目具有状态I,及这些条目是否彼此相邻。组中具有状态N的第一个条目是条目4。条目4的子条目被计算为4×2=8和4×2+1=9。条目8和9都具有状态U。因而,临时选择组中的另一个条目。组中具有状态N的第二个条目是条目6。条目6的子条目被计算为6×2=12和6×2+1=13。条目12具有状态U,但是条目13具有状态I。因而,条目13可以是用于预订的候选。接着,临时选择组中的另一个条目。组中具有状态N的第三个条目是条目7。条目7的子条目被计算为7×2=14和7×2+1=15。条目15具有状态U,但是条目14具有状态I。因而,条目14可以是用于预订的候选。接着,进行关于两个候选条目,即条目13和条目14是否彼此相邻的确定。它们是彼此相邻。因而,可以终止其它条目的评估。与条目13和14相关的状态信息分别从I转变到C(参见图12)。就象前面的例子,条目13中的状态U指示与条目13相关的共享存储器106的区段已经被预订。条目14中的状态C还指示与条目14相关的共享存储器106的区段已经被预订,但是它还指示区段与条目13的区段相关。
根据本发明的一或多个其它实施例,并且参照图13,MAT 110定义的预订对象最好被系统的多个处理器共享。图13是说明可以在图1(或其它实施例)的多处理系统中实现关键字表112以便共享系统的处理器中的预订对象的结构的模块图。关键字表112包含多个条目,其中每个条目包含对象名称对象0,对象1,对象2...对象N,以及已经选择以预订共享存储器106的底层区段的相关节点。使用图12的MAT 110作为一个例子(除了允许节点15用于预订),对应关键字表112将包含图13中示出的条目。尤其是,对象0是其中已预订共享存储器的节点8的共享对象的名称。类似地,对象1是其中已预订共享存储器106的节点9的预订对象的名称。为了在多处理系统100的处理器102间共享预订对象,关键字表112最好结合MAT 110使用,以便使用现有对象以及产生其它对象。
图14是说明可以通过这里的实施例使用以便在例如系统100的处理器102间共享预订对象的处理步骤的流程图。在操作400中,MAT110被锁定在共享存储器106内,意味着只有从共享存储器106读取MAT 110的处理器可以执行操作,直到MAT 110被解锁。因而,另一个处理器102不可在MAT 110被锁定时访问MAT 110。在操作402中,关键字表112被锁定并且从共享存储器106被读取到读取MAT 110的处理器102中。
在操作404中,进行关于期望对象是否已经被预订的确定。这最好需要检查关键字表112内的对象名称以确定任何相关节点是否已经被预订。例如,如果指定处理器102(或任务)设法使用对象2,则它在关键字表内搜索对象名称中的该名称,并且检查相关节点名称以确定共享存储器106的任何节点(或区段)是否被预订。在这个例子中,针对对象2预订节点5。即,在低级与节点5相关的节点10和11也可以在节点5被预订时被涉及到。如果操作404确定的结果是肯定,则处理流程最好前进到操作410,其中MAT 110和关键字表112被回写到共享存储器106并且解锁。此后,设法使用对象2的处理器可以通过使用与共享存储器106的节点5,10和11相关的区段来使用该对象。
另一方面,如果操作404确定的结果是否定,则处理流程最好前进到操作406,其中执行图6的操作302-308。换言之,通过预订共享存储器106的其它节点/区段来形成新对象。在操作408中,关键字表112被修改以反映在图6的操作302-308期间执行的节点和存储器区段预订。例如,这些操作可以导致形成新对象5,其中节点15(和与其相关的的存储器区段)被预订。因而,关键字表112最好被更新以反映对象5与节点15相关。处理流程接着前进到操作410,其中MAT 110和关键字表112被回写到共享存储器106并且解锁。
现在描述多处理器系统的最优计算机体系结构,其适于执行这里讨论的一或多个特征。根据一或多个实施例,多处理器系统可以被实现成用于例如游戏系统,家庭终端,PC系统,服务器系统和工作站的媒体丰富应用的独立和/或分布式处理的单芯片解决方案。在例如游戏系统和家庭终端的某些应用中,实时计算是必要的。例如,在实时,分布式游戏应用中,一或多个网络图像解压缩,3D计算机图形,音频生成,网络通信,物理模拟及人工智能处理必须被足够快速地执行以为用户提供实时经历的假象。因而,多处理器系统中的每个处理器必须在短并且可预测的时间内完成任务。
因此,并且根据该计算机体系结构,多处理计算机系统的全部处理器根据公共计算模块(或单元)构造。这个公共计算模块具有一致的结构并且最好使用相同指令集体系结构。多处理计算机系统能够由一或多个客户端,服务器,PC,移动计算机,游戏机,PDA,机顶盒,电器,数字电视和使用计算机处理器的其它设备构成。
需要时,多个计算机系统也可以是网络的成员。一致模块化结构允许多处理计算机系统高效,高速处理应用和数据,并且如果使用网络,则通过网络快速传输应用和数据。这个结构还简化了不同规模和处理能力的网络成员的建立,及这些成员对处理应用的准备。
参照图15,基本处理模块是处理器单元(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)的单集成电路。基底的可选材料包含砷化镓(gallium arsinide),砷化镓铝和使用各种掺杂剂的其它所谓III-B化合物。还可以使用例如快速单磁通量子(RSFQ)逻辑的超导材料来实现PE 500。
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和PU504被集成或分别布置。实际上,DMAC功能和/或存储器接口511功能可以与一或多个(最好全部)子处理单元508和PU 504集成。还应当注意,DRAM 514可以相对于PE 500被集成或分别布置。例如,DRAM514可以如所示图解隐含的那样被布置在芯片外,或DRAM 514可以以集成方式被布置在芯片内。
PU 504可以是例如能独立处理数据和应用的标准处理器。在操作中,PU 504最好安排和协调子处理单元对数据和应用的处理。子处理单元最好是单指令,多数据(SIMD)处理器。在PU 504的控制下,子处理单元以并行和独立的方式执行这些数据和应用的处理。最好使用PowerPC核心实现PU 504,其中PowerPC核心是使用缩减指令集计算(RISC)技术的微处理器体系结构。RISC使用简单指令的组合执行更多复杂指令。因而,处理器的时序可以基于更简单和快速的操作,从而允许微处理器以指定时钟速度执行更多指令。
应当注意,PU 504可以通过子处理单元508之一实现,其作为安排和协调子处理单元508对数据和应用的处理的主处理单元。此外,在处理器单元500内可以有不止一个PU被实现。
根据这个模块化结构,特定计算机系统使用的PE 500的数量基于该系统所需的处理能力。例如,服务器可以使用四个PE 500,工作站可以使用两个PE 500,并且PDA可以使用一个PE 500。分配处理特定软件单元的PE 500的子处理单元的数量取决于单元内程序和数据的复杂度和量。
图16说明子处理单元(SPU)508的优选结构和功能。SPU 508体系结构优选地填补通用处理器(其被设计为在大量应用上实现高平均性能)和专用处理器(其被设计为在单个应用上实现高性能)之间的空白。SPU 508被设计为实现游戏应用,媒体应用,宽带系统等等的高性能,并且为实时应用的程序员提供高度控制。SPU 508的某些性能包含图形几何流水线(graphics geometry pipelines),表面子划分,快速富立叶变换,图像处理关键字,流处理,MPEG编码/解码,加密,解密,设备驱动程序扩展,模拟,游戏物理,内容建立及音频合成和处理。
子处理单元508包含两个基本功能单元,即SPU核心510A和存储器流控制器(MFC)510B。SPU核心510A执行程序处理,数据操作等等,而MFC 510B执行涉及系统的SPU核心510A和DRAM 514之间的数据传送的功能。
SPU核心510A包含本地存储器,指令单元(IU)552,寄存器554,一个或多个浮点执行级段556和一或多个定点执行级段558。本地存储器550最好使用例如SRAM的单端口随机访问存储器实现。鉴于多数处理器通过使用高速缓存减少对存储器的等待时间,SPU核心510A实现相对较小的本地存储器550而不是高速缓存。实际上,为了给实时应用(和其它这里提及的应用程序)的程序员提供一致和可预测的存储器访问等待时间,SPU 508A内的高速缓冲存储器体系结构不是优选的。高速缓冲存储器的高速缓存命中/命中失误特性导致从少数周期到数百周期的易变存储器访问时间。这种易变性削弱了例如实时应用编程中期望的访问定时可预测性。可以通过把DMA传送与数据计算重叠在本地存储器SRAM 550中实现等待时间隐藏。这提供了实时应用编程的高度控制。由于与DMA传送相关的等待时间和指令开销超出服务于高速缓存命中失误的等待时间的开销时,当DMA传送大小足够大并且充分可预测时,SRAM本地存储器方案得到优势(例如,DMA命令可以在需要数据之前发出)。
在一个指定子处理单元508上运行的程序使用本地地址参考相关的本地存储器550,然而,本地存储器550的每个位置还在总的系统的存储器映射内被分配一个实地址(RA)。这允许特权软件把本地存储器550映射到进程的有效地址(EA)以利于一个本地存储器550和另一个本地存储器550之间的DMA传送。PU 504也可以使用有效地址直接访问本地存储器550。在一个最优实施例中,本地存储器550包含556千字节的存储,并且寄存器552的容量是128×128位。
SPU核心504A最好使用处理流水线实现,其中逻辑指令以流水线方式处理。尽管流水线可以被分成处理指令的任何数量的级段,但是流水线通常包括获取一或多个指令,解码指令,检查指令间的相关性,发出指令及执行指令。在这点上,IU 552包含指令缓冲区,指令解码电路,相关性检查电路,和指令发出电路。
指令缓冲区最好包含连接到本地存储器550并且在其被获取时临时存储指令的多个寄存器。指令缓冲区最好进行操作,使得全部指令成组,即基本上同时离开寄存器。尽管指令缓冲区可以具有任何大小,但是优选的是它具有不大于大约两个或三个寄存器的大小。
通常,解码电路分解指令并且产生执行相应指令功能的逻辑微操作。例如,逻辑微操作可以指定算术和逻辑操作,本地存储器550的加载和存储操作,寄存器源操作数和/或立即数据操作数。解码电路也可以指示指令使用哪些资源,例如目标寄存器地址,结构资源,功能单元和/或总线。解码电路也可以提供指示需要资源的指令流水线级段的信息。指令解码电路最好基本同时地解码等于指令缓冲区的寄存器的数量的若干指令。
相关性检查电路包含执行测试以确定指定指令的操作数是否取决于流水线中其它指令的操作数的数字逻辑。如果是,则指定指令将不会被执行,直到这些其它操作数被更新(例如,通过允许其它指令完成处理)。优选地,相关性检查电路同时确定解码器电路112分配的多个指令的相关性。
指令发出电路可以向浮点执行级段556和/或定点执行级段558发出指令。
寄存器554最好被实现为相对较大的统一寄存器堆,例如128个条目的寄存器堆。这允许深流水线化高频实现,而无需要寄存器重命名以避免寄存器资源缺乏。重命名硬件通常消耗处理系统的大量面积和功率。因此,在通过软件循环展开或其它交错技术覆盖等待时间时,可实现有利操作。
最好,SPU核心510A具有超标量体系结构,使得每个时钟周期发出不止一个指令。SPU核心510A最好超标量化到对应于来自指令缓冲区的同时指令分派数量,例如2和3之间的程度(意味着每个时钟周期发出两个或3个指令)。取决于所需的处理能力,可以使用更大或更小数量的浮点执行级段556和定点执行级段558。在一个最优实施例中,浮点执行级段556以每秒32兆兆浮点操作(32GFLOPS)的速度进行操作,并且定点执行级段558以每秒32兆兆操作(32GOPS)的速度进行操作。
MFC 510B最好包含总线接口单元(BIU)564,存储器管理单元(MMU)562,和直接存储器存取控制器(DMAC)560。除了DMAC 560,与SPU核心510A和总线512相比,MFC 510B最好以半频(半速)运行以满足低功耗设计目标。MFC 510B处理从总线512进入SPU 508的数据和指令,为DMAC提供地址转换,及数据一致性的探听操作。BIU 564提供总线512及MMU 562和DMAC 560之间的接口。因而,SPU508(包含SPU核心510A和MFC 510B)和DMAC 560被物理和/或逻辑地连接到总线512。
MMU 562最好把有效地址(取自DMA命令)转换成用于存储器访问的实地址。例如,MMU 562可以把有效地址的高阶位转换成实地址位。然而,低阶地址位最好不可翻译,并且被认为是逻辑和物理的,用于形成针对存储器的实地址和请求访问。在一或多个实施例中,MMU 562可以基于64位存储器管理模型实现,并且可以提供具有4K,64K,1M和16M字节页面尺寸的264字节有效地址空间和256MB区段尺寸。优选地,MMU 562支持高达265字节的虚拟存储器,和242字节(4兆兆字节)的物理存储器,以用于DMA命令。MMU 562的硬件可以包含8条目完全关联SLB,256条目4向组关联TLB,和用于硬件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通过通道接口向DMAC 560中的DMA队列分配DMA命令。一旦DMA命令处于DMA队列中,通过DMAC 560内的发出和完成逻辑来处理它。当DMA命令的全部总线事务处理结束时,完成信号通过通道接口被回送到SPU核心510A。
图17说明PU 504的优选结构和功能。PU 504包含两个基本功能单元,PU核心504A和存储器流控制器(MFC)504B。PU核心504A执行程序处理,数据操作,多处理器管理功能等等,MFC 504B执行涉及系统100的PU核心504A和存储器空间之间的数据传送的功能。
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),L2高速缓冲存储器,非高速缓存单元(NCU)584,核心接口单元(CIU)586和存储器管理单元(MMU)588。与PU核心504A和总线108相比,大部分MFC 504B以半频(半速)运行以满足低功耗设计目标。
BIU 580提供总线108和L2高速缓存582及NCU 584逻辑块之间的接口。因此,BIU 580可以充当总线108上的主以及从设备以便执行完全相干的存储器操作。作为主设备,它可以代表L2高速缓存582和NCU 584发起载入/存储请求到总线108以得到服务。BIU 580也可以实现限制能够被发送到总线108的命令的总数的命令流控制机构。总线108上的数据操作可以被设计为采取8拍,并且因此最好围绕128字节高速缓存线设计BIU 580,并且一致性和同步粒度是128KB。
L2高速缓冲存储器582(和支持硬件逻辑)最好被设计成高速缓存512KB数据。例如,L2高速缓存582可以处理可高速缓存的载入/存储,数据预取,指令获取,指令预取,高速缓存操作和屏蔽操作。L2高速缓存582最好是一个8向组关联系统。L2高速缓存582可以包含与六(6)个逐出(castout)队列(例如,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的请求的路由,仲裁和流控制点。在L2高速缓存582和NCU 584以2∶1速度比操作时,PU核心504A和MMU 588最好以全速运行。因而,频率边界存在于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,或MMU 588;(viii)把加载返回数据和探听传输从半速转换到全速。
MMU 588最好提供PU核心540A的地址转换,例如通过第二级地址转换设施。通过可比MMU 588小得多和更快速的分立指令和数据ERAT(用于实地址转换)阵列,在PU核心504A中优选提供第一级转换。
在一个最优实施例中,PU 504工作在4-6GHz,10F04,具有64位实现。寄存器最好是64位长(尽管一或多个专用寄存器可更小)并且有效地址是64位长。指令单元570,寄存器572和执行级段574最好使用实现(RISC)计算技术的PowerPC技术来实现。
涉及该计算机系统的模块化结构的其它详细资料可以在美国专利No.6,526,491中找到,其中这里参考引用了整个公开。
根据本发明的至少一个其它方面,如上所述的方法和设备可以使用例如附图中说明的适当硬件实现。这些硬件可以使用任何已知技术实现,例如标准数字电路,任何可以执行软件和/或固件程序的已知处理器,一或多个可编程数字设备或系统,例如可编程只读存储器(PROM),可编程阵列逻辑设备(PAL)等等。此外,尽管附图中说明的设备被表示为被分成某些功能模块,这些块可以通过分立电路实现,和/或合并成一或多个功能单元。此外,本发明的不同方面可以通过可被存储在适当存储介质(例如软盘,存储器芯片等等)的软件和/或固件程序实现,以进行传送和/或发布。
尽管这里已经参照特定实施例描述了本发明,但是应当理解,这些实施例仅仅是本发明的原理和应用程序的图解。因此,应当理解,可以在不偏离如所附权利要求限定的本发明的宗旨和范围的前提下,对图解的实施例进行许多修改。
Claims (39)
1.一种方法,包括:
把存储器分配表(MAT)条目与二进制树中的节点相关,使得节点和条目被组合成层次级;
把节点和条目与多处理器系统的共享存储器的区段相关,使得更高级节点和条目与共享存储器的更大量区段相关,并且更低级节点和条目与共享存储器的更小数量的区段相关;及
通过评估与要预订的期望大小的共享存储器对应的MAT的条目的状态信息并且接着评估一或多个高级条目的状态信息,选择共享存储器的一或多个区段。
2.如权利要求1所述的方法,其中每个条目的状态信息包含指示共享存储器的相关一或多个区段是否已经被预订或可用于预订的至少一个指示符。
3.如权利要求2所述的方法,其中指定条目的状态信息包含指示与指定条目的树系中的一或多个低级条目相关的共享存储器的一或多个区段已经被预订的指示符。
4.如权利要求2所述的方法,其中每个条目的状态信息由不超过2位的二进制数据表示。
5.如权利要求1所述的方法,其中:
树中的最高级节点及MAT中的相关最高级条目与共享存储器的所有区段相关;及
树中的多个最低级节点及MAT中的相关多个最低级条目均与共享存储器的一个区段相关。
6.如权利要求5所述的方法,其中选择共享存储器的一或多个区段的步骤包含基于要预订的共享存储器的期望大小计算MAT中的层级。
7.如权利要求6所述的方法,其中MAT中的层级被计算为近似等于log2(M/D),其中M是可用于预订的共享存储器的最大大小,并且D是要预订的共享存储器的期望大小。
8.如权利要求6所述的方法,还包括选择与具有指示共享存储器的相关一或多个区段可用于预订的状态信息的计算层级相关的条目之一。
9.如权利要求8所述的方法,还包括:评估选定条目的树系中的一或多个高级条目以确定高级条目是否具有指示共享存储器的相关区段可用于预订的状态信息。
10.如权利要求9所述的方法,其中针对树系中相继地更高级条目重复评估步骤,直到高级条目之一的状态信息指示共享存储器的相关区段可用于预订。
11.如权利要求10所述的方法,其中如果确定结果指示树系中的一或多个高级条目具有指示共享存储器的相关区段不可用于预订的状态信息,则选择与该计算层级相关的一个不同条目,其中该一个不同条目具有指示共享存储器的相关一或多个区段可用于预订的状态信息。
12.如权利要求1所述的方法,其中共享存储器的预订区段形成一或多个预订对象。
13.如权利要求12所述的方法,还包括在多处理器系统的多个处理器间共享预订对象。
14.如权利要求13所述的方法,还包括在关键字表内把预订对象与树的相关节点关联。
15.如权利要求14所述的方法,还包括在预订共享存储器的一或多个区段的步骤之前访问关键字表,以确定对象是否已经被形成。
16.如权利要求15所述的方法,还包括:
在关键字表如此指示时使用已经形成的对象;及
在关键字表指示这样的对象尚未被形成时,选择共享存储器的一或多个区段以形成对象。
17.一种方法,包括:
把存储器分配表(MAT)条目与二进制树中的节点关联,使得节点和条目被组合成层次级,每个条目包含状态信息;
把节点和条目与多处理器系统的共享存储器的区段关联,使得更高级节点和条目与共享存储器的更大量区段相关,并且更低级节点和条目与共享存储器的更小数量的区段相关;
初始化MAT,使得至少多个条目的状态信息指示共享存储器的相关一或多个区段可用于预订;及
在对应于要预订的共享存储器的期望大小的层级处选择MAT中一组条目中的一个条目。
18.如权利要求17所述的方法,其中选择步骤包含基于要预订的共享存储器的期望大小计算MAT的层级。
19.如权利要求18所述的方法,其中MAT的层级可以被计算为近似等于log2(M/D),其中M是可用于预订的共享存储器的最大大小,并且D是要预订的共享存储器的期望大小。
20.如权利要求18所述的方法,还包括从在计算层级处的条目组中选择具有指示与选定条目相关的共享存储器的一或多个区段可用于预订的状态信息的条目。
21.如权利要求18所述的方法,还包括从在计算层级处的组中临时选择具有指示与临时选定条目相关的共享存储器的一或多个区段可用于预订的状态信息的条目。
22.如权利要求21所述的方法,其中临时选择组的条目的步骤包含顺序评估组中的条目的状态信息,直到发现一个条目具有指示可用性的状态信息。
23.如权利要求21所述的方法,还包括评估临时选定条目的树系中的一或多个高级条目的状态信息,以确定状态信息是否指示与临时选定条目相关的共享存储器的一或多个区段可用于预订。
24.如权利要求23所述的方法,其中评估步骤包含:
当当前条目的状态信息指示与当前条目相关的共享存储器的全部区段可用于预订时,继续执行树系中顺序的更高级条目的评估;及
重复上述步骤,直到当前条目的状态信息指示针对与MAT中低级条目相关的一或多个存储器区段进行了先前预订,而不是预订了与当前条目相关的全部存储器区段,由此终止树系中的高级条目的评估。
25.如权利要求24所述的方法,还包括当(i)全部评估条目的状态信息指示与相应评估条目相关的共享存储器的全部区段可用于预订,及(ii)MAT中的最高级条目在终止顺序评估之前到达时,修改全部评估条目的状态信息,
其中每个评估条目的状态信息被修改以指示对与MAT中的低级条目相关的一或多个存储器区段进行了先前预订,而不是预订了与当前条目相关的全部存储器区段。
26.如权利要求24所述的方法,还包括当树系中的当前高级条目的状态信息的评估指示与当前条目相关的共享存储器的全部区段被预订时,放弃MAT的临时选定条目。
27.如权利要求26所述的方法,还包括:
从在计算层级处的条目组中临时选择具有指示与临时选定条目相关的共享存储器的一或多个区段可用于预订的状态信息的另一个条目;及
执行其它临时选定条目的树系中的一或多个高级条目的评估步骤,以确定状态信息是否指示与其它临时选定条目相关的共享存储器的一或多个区段可用于预订。
28.如权利要求24所述的方法,还包括选择MAT的临时选定条目并且预订与MAT的该选定条目相关的共享存储器的一或多个区段。
29.如权利要求28所述的方法,还包括修改选定条目的状态信息以指示与该选定条目相关的共享存储器的全部区段被预订。
30.一种方法,包括:
从存储介质读取存储器分配表(MAT),MAT包含多个条目,每个条目与二进制树中的相应节点相关,使得节点和条目被组合成层次级,并且节点和条目与多处理器系统的共享存储器的区段相关;
通过评估与要预订的期望大小的共享存储器对应的MAT的条目的状态信息,选择共享存储器的一或多个区段;
修改MAT以指示共享存储器的一或多个选定区段已经被预订;及
把MAT写回到存储介质。
31.一种设备,包括:
多个并行处理器,能与共享存储器通信,每个处理器包含不是硬件高速缓冲存储器的本地存储器,和指令执行流水线,
其中至少一个处理器用于:
从存储介质读取存储器分配表(MAT),MAT包含多个条目,每个条目与二进制树中的相应节点相关,使得节点和条目被组合成层次级,并且节点和条目与多处理器系统的共享存储器的区段相关;
通过评估与要预订的期望大小的共享存储器对应的MAT的条目的状态信息,选择共享存储器的一或多个区段;
修改MAT以指示共享存储器的一或多个选定区段已经被预订;及
把MAT写回到存储介质。
32.如权利要求31所述的设备,其中存储介质是共享存储器。
33.如权利要求31所述的设备,其中每个处理器在共享存储器及其本地存储器之间传送数据块,以用于本地存储器内一或多个程序的执行。
34.如权利要求33所述的设备,其中每个处理器能够在其本地存储器执行内该一或多个程序,但是每个处理器不能在共享存储器内执行该一或多个程序。
35.如权利要求31所述的设备,其中处理器及相关本地存储器被布置在公共半导体基底上。
36.如权利要求31所述的设备,还包括通过总线连接到处理器的共享存储器。
37.如权利要求36所述的设备,其中处理器,相关本地存储器和共享存储器被布置在公共半导体基底上。
38.一种包含至少一个软件程序的存储介质,该程序能使多处理器系统执行操作,包括:
把存储器分配表(MAT)条目与二进制树中的节点关联,使得节点和条目被组合成层次级,每个条目包含状态信息;
把节点和条目与多处理器系统的共享存储器的区段关联,使得更高级节点和条目与共享存储器的更大量区段相关并且更低级节点和条目与共享存储器的更小数量的区段相关;
初始化MAT使得至少多个条目的状态信息指示共享存储器的相关一或多个区段可用于预订;及
在与要预订的共享存储器的期望大小对应的层级处选择MAT中一组条目的一个条目。
39.如权利要求38的存储介质,其中通过评估组的每个条目的状态信息并且接着评估选定条目的树系中的一或多个高级条目的状态信息,选择条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/031,461 US7386687B2 (en) | 2005-01-07 | 2005-01-07 | Methods and apparatus for managing a shared memory in a multi-processor system |
US11/031,461 | 2005-01-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1808400A true CN1808400A (zh) | 2006-07-26 |
CN100432956C CN100432956C (zh) | 2008-11-12 |
Family
ID=36654535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100057113A Active CN100432956C (zh) | 2005-01-07 | 2006-01-06 | 管理多处理器系统中的共享存储器的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7386687B2 (zh) |
JP (1) | JP4246204B2 (zh) |
CN (1) | CN100432956C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424130A (zh) * | 2013-08-20 | 2015-03-18 | 想象力科技有限公司 | 存储器资源的改善使用 |
CN104750658A (zh) * | 2013-12-27 | 2015-07-01 | 英特尔公司 | 辅助式一致共享存储器 |
CN107239367A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 非易失性双列直插式存储器模块及其操作方法 |
CN111432296A (zh) * | 2019-01-09 | 2020-07-17 | 瑞昱半导体股份有限公司 | 共享存储器的双模网路通讯装置 |
CN111886588A (zh) * | 2018-03-30 | 2020-11-03 | 日立汽车系统株式会社 | 处理装置 |
CN118113487A (zh) * | 2024-04-30 | 2024-05-31 | 北京麟卓信息科技有限公司 | 基于寄存器度量的gpu计算单元共享存储器大小测算方法 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7305523B2 (en) * | 2005-02-12 | 2007-12-04 | International Business Machines Corporation | Cache memory direct intervention |
US7305522B2 (en) * | 2005-02-12 | 2007-12-04 | International Business Machines Corporation | Victim cache using direct intervention |
US8732368B1 (en) * | 2005-02-17 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Control system for resource selection between or among conjoined-cores |
WO2007099643A1 (ja) * | 2006-03-03 | 2007-09-07 | Fujitsu Limited | マルチプロセッサシステム及びマルチプロセッサシステムの動作方法 |
US8407451B2 (en) * | 2007-02-06 | 2013-03-26 | International Business Machines Corporation | Method and apparatus for enabling resource allocation identification at the instruction level in a processor system |
US20090013407A1 (en) * | 2007-02-14 | 2009-01-08 | Brad Doctor | Intrusion detection system/intrusion prevention system with enhanced performance |
US8209489B2 (en) * | 2008-10-22 | 2012-06-26 | International Business Machines Corporation | Victim cache prefetching |
US8347037B2 (en) * | 2008-10-22 | 2013-01-01 | International Business Machines Corporation | Victim cache replacement |
US8225045B2 (en) * | 2008-12-16 | 2012-07-17 | International Business Machines Corporation | Lateral cache-to-cache cast-in |
US8499124B2 (en) * | 2008-12-16 | 2013-07-30 | International Business Machines Corporation | Handling castout cache lines in a victim cache |
US8117397B2 (en) * | 2008-12-16 | 2012-02-14 | International Business Machines Corporation | Victim cache line selection |
US8489819B2 (en) * | 2008-12-19 | 2013-07-16 | International Business Machines Corporation | Victim cache lateral castout targeting |
US8949540B2 (en) * | 2009-03-11 | 2015-02-03 | International Business Machines Corporation | Lateral castout (LCO) of victim cache line in data-invalid state |
US8285939B2 (en) * | 2009-04-08 | 2012-10-09 | International Business Machines Corporation | Lateral castout target selection |
US8347036B2 (en) * | 2009-04-09 | 2013-01-01 | International Business Machines Corporation | Empirically based dynamic control of transmission of victim cache lateral castouts |
US8327073B2 (en) * | 2009-04-09 | 2012-12-04 | International Business Machines Corporation | Empirically based dynamic control of acceptance of victim cache lateral castouts |
US8312220B2 (en) * | 2009-04-09 | 2012-11-13 | International Business Machines Corporation | Mode-based castout destination selection |
US8605722B1 (en) | 2009-12-10 | 2013-12-10 | Juniper Networks, Inc. | Deadlock-resistant fabric tree replication in a network device |
US9189403B2 (en) * | 2009-12-30 | 2015-11-17 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
US8782227B2 (en) | 2010-06-22 | 2014-07-15 | Cleversafe, Inc. | Identifying and correcting an undesired condition of a dispersed storage network access request |
KR101724590B1 (ko) | 2011-01-31 | 2017-04-11 | 삼성전자주식회사 | 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법 |
WO2013030628A1 (en) | 2011-09-01 | 2013-03-07 | Freescale Semiconductor, Inc. | Integrated circuit device, memory interface module, data processing system and method for providing data access control |
WO2013052068A1 (en) * | 2011-10-07 | 2013-04-11 | Intel Corporation | Mechanism for employing and facilitating dynamic and remote memory collaboration at computing devices |
GB2511446B (en) | 2011-12-16 | 2016-08-10 | Ibm | Memory sharing by processors |
US9582256B2 (en) * | 2013-03-14 | 2017-02-28 | Sas Institute Inc. | Automated cooperative concurrency with minimal syntax |
US9442864B2 (en) * | 2013-12-27 | 2016-09-13 | Intel Corporation | Bridging circuitry between a memory controller and request agents in a system having multiple system memory protection schemes |
US9558297B1 (en) * | 2014-03-27 | 2017-01-31 | EMC IP Holding Company LLC | Memory management techniques |
US20160306754A1 (en) * | 2015-04-17 | 2016-10-20 | Kabushiki Kaisha Toshiba | Storage system |
WO2019222748A1 (en) * | 2018-05-18 | 2019-11-21 | Rigetti & Co, Inc. | Computing platform with heterogenous quantum processors |
US20200264970A1 (en) * | 2019-02-19 | 2020-08-20 | Nvidia Corporation | Memory management system |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN85104907B (zh) * | 1985-06-25 | 1987-10-14 | 株式会社日立制作所 | 分级多处理器系统及其控制方法 |
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
US6185654B1 (en) * | 1998-07-17 | 2001-02-06 | Compaq Computer Corporation | Phantom resource memory address mapping system |
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
US6314491B1 (en) * | 1999-03-01 | 2001-11-06 | International Business Machines Corporation | Peer-to-peer cache moves in a multiprocessor data processing system |
US6628668B1 (en) * | 1999-03-16 | 2003-09-30 | Fujitsu Network Communications, Inc. | Crosspoint switch bandwidth allocation management |
US6874074B1 (en) * | 2000-11-13 | 2005-03-29 | Wind River Systems, Inc. | System and method for memory reclamation |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
CN1258715C (zh) * | 2003-03-20 | 2006-06-07 | 中国科学院计算技术研究所 | 虚拟化共享式存储设备及方法 |
-
2005
- 2005-01-07 US US11/031,461 patent/US7386687B2/en active Active
-
2006
- 2006-01-05 JP JP2006000722A patent/JP4246204B2/ja active Active
- 2006-01-06 CN CNB2006100057113A patent/CN100432956C/zh active Active
-
2008
- 2008-05-01 US US12/113,366 patent/US7882310B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424130A (zh) * | 2013-08-20 | 2015-03-18 | 想象力科技有限公司 | 存储器资源的改善使用 |
CN104750658A (zh) * | 2013-12-27 | 2015-07-01 | 英特尔公司 | 辅助式一致共享存储器 |
CN107239367A (zh) * | 2016-03-28 | 2017-10-10 | 爱思开海力士有限公司 | 非易失性双列直插式存储器模块及其操作方法 |
CN107239367B (zh) * | 2016-03-28 | 2020-07-07 | 爱思开海力士有限公司 | 非易失性双列直插式存储器模块及其操作方法 |
CN111886588A (zh) * | 2018-03-30 | 2020-11-03 | 日立汽车系统株式会社 | 处理装置 |
CN111886588B (zh) * | 2018-03-30 | 2024-05-14 | 日立安斯泰莫株式会社 | 处理装置 |
CN111432296A (zh) * | 2019-01-09 | 2020-07-17 | 瑞昱半导体股份有限公司 | 共享存储器的双模网路通讯装置 |
CN118113487A (zh) * | 2024-04-30 | 2024-05-31 | 北京麟卓信息科技有限公司 | 基于寄存器度量的gpu计算单元共享存储器大小测算方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4246204B2 (ja) | 2009-04-02 |
US20060155792A1 (en) | 2006-07-13 |
JP2006190299A (ja) | 2006-07-20 |
US7882310B2 (en) | 2011-02-01 |
US20080209156A1 (en) | 2008-08-28 |
CN100432956C (zh) | 2008-11-12 |
US7386687B2 (en) | 2008-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1808400A (zh) | 管理多处理器系统中的共享存储器的方法和设备 | |
CN1811745A (zh) | 使能/禁止控制simd处理器切片的方法和设备 | |
EP1861790B1 (en) | Methods and apparatus for virtualizing an address space | |
CN101080701A (zh) | 用于从外部设备到处理器的存储器的地址翻译的方法和装置 | |
CN101057223B (zh) | 支持多处理器系统中的多个配置的方法和设备 | |
US8327109B2 (en) | GPU support for garbage collection | |
JP4386373B2 (ja) | ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置 | |
EP1839165B1 (en) | Methods and apparatus for hybrid dma queue and dma table | |
EP2021929B1 (en) | Methods and apparatus for providing simultaneous software/hardware cache fill | |
EP1846820B1 (en) | Methods and apparatus for instruction set emulation | |
CN100524270C (zh) | 在多处理器系统中使用直接存储器存取传输来进行列表传输的方法及装置 | |
US20130191605A1 (en) | Managing addressable memory in heterogeneous multicore processors | |
US20080091886A1 (en) | Dynamic Path Determination To An Address Concentrator | |
JP4583327B2 (ja) | 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置 | |
US20060179275A1 (en) | Methods and apparatus for processing instructions in a multi-processor system |
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 |