CN117716679A - 地址转换类型分组的传输 - Google Patents
地址转换类型分组的传输 Download PDFInfo
- Publication number
- CN117716679A CN117716679A CN202280051797.0A CN202280051797A CN117716679A CN 117716679 A CN117716679 A CN 117716679A CN 202280051797 A CN202280051797 A CN 202280051797A CN 117716679 A CN117716679 A CN 117716679A
- Authority
- CN
- China
- Prior art keywords
- entries
- entry
- request
- allocated
- address translation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013519 translation Methods 0.000 title claims abstract description 131
- 230000005540 biological transmission Effects 0.000 title description 9
- 230000004044 response Effects 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 21
- 230000008685 targeting Effects 0.000 claims abstract description 7
- 230000014616 translation Effects 0.000 claims description 128
- 230000002093 peripheral effect Effects 0.000 claims description 39
- 238000004891 communication Methods 0.000 abstract description 32
- 239000004744 fabric Substances 0.000 abstract description 28
- 230000015654 memory Effects 0.000 description 82
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 1
- 101100534229 Caenorhabditis elegans src-2 gene Proteins 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
Abstract
本发明提供了用于路由以共享资源为目标的请求和响应的装置、系统和方法。通信结构中的队列位于请求器与共享资源之间的路径中。在一些实施方案中,该共享资源是存储在端点中的共享地址转换高速缓存。该队列与该共享资源之间的物理信道支持多个虚拟信道。该队列将至少一个条目分配给一组虚拟信道中的每个虚拟信道,其中该组包括用于来自多个请求器中的单个请求器的每个地址转换请求类型的虚拟信道。当用于给定请求器的至少一个条目被取消分配时,即使空条目是该队列的唯一可用的条目,该队列也仅利用来自已分配虚拟信道的请求来分配该条目。
Description
背景技术
相关技术的描述
在计算系统中,一些类型的应用程序执行能够比其他应用程序更好地利用并行处理和共享存储器的功能。此类应用程序的示例包括机器学习应用程序、娱乐和实时应用程序以及一些商业、科学、医疗和其他应用程序。虽然一些处理器架构包括一个以上的处理单元(例如,CPU、GPU、多媒体引擎等)或处理核心,但在一些情况下,耦接到存储器的一个或两个附加处理单元或核心未必提供足够水平的并行性以提供所需水平的性能。
除了读取和写入访问命令和对应的数据之外,还通过通信结构(或多个结构)在系统中传输相干探测、中断和其他通信消息。结构中的互连的示例是总线架构、基于交叉开关的架构、片上网络(NoC)通信子系统、裸片之间的通信信道、用于并排堆叠芯片的硅内插器、用于在处理器裸片的顶部上垂直堆叠专用裸片的硅通孔(TSV)等等。
在许多情况下,结构具有多个物理信道,每个物理信道支持相对宽的分组。当在单个结构内传输数据时,该结构减少了延迟,因为数量相对较多的物理线路是可用的。然而,当经由结构将独立的裸片连接在一起时,并且当将独立的处理节点(每个处理节点具有各自的结构)连接在一起时,数据通过数量显著较少的物理线进行传输,这限制了可用带宽。在一些情况下,链路物理线路传输数据的数据速率是裸片上物理线路数据速率的倍数。然而,当在裸片之间和节点之间进行通信时,带宽仍然会显著降低。
除了上述传输数据的低效率之外,通信结构中的中间队列有可能变满或者基于时期对要发布的条目进行优先级排序。这些条目存储包括请求或对应响应的分组。当队列发布较低优先级分组时,高优先级分组可能等待。当一个或多个队列延迟从请求器到共享资源的第一路径上的高优先级请求,并且另外,一个或多个队列延迟与从共享资源到请求器的第二路径上的请求相对应的高优先级响应时,性能受到影响。
根据上述情况,需要用于有效地路由以共享资源为目标的请求和响应的有效方法和系统。
附图说明
图1是存储至少地址转换请求的队列的概要图。
图2是处理至少地址转换请求的分组发射器的一个实施方案的概要图。
图3是传输至少地址转换请求的计算系统的概要图。
图4是用于有效地分配存储至少地址转换请求的队列的条目的方法的一个实施方案的概要图。
图5是用于从存储至少地址转换请求的队列的条目有效地进行发布的方法的一个实施方案的概要图。
虽然本发明可以有各种修改和另选形式,但具体实施方案在附图中通过举例的方式示出并且在本文进行详细描述。然而,应当理解,附图和对其的详细描述并不旨在将本发明限制为所公开的特定形式,而是相反,本发明是涵盖落入由所附权利要求书限定的本发明范围内的所有修改、等效物和替代方案。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本发明的透彻理解。然而,本领域普通技术人员应认识到,可以在没有这些具体细节的情况下实践本发明。在一些情况下,未详细示出众所周知的电路、结构和技术,以避免模糊本发明。此外,应当理解,为了简单和清楚说明,图中所示的元件不一定按比例绘制。例如,一些元件的尺寸相对于其他元件被放大。
设想了用于有效地路由以共享资源为目标的请求和响应的装置、系统和方法。在各种实施方案中,计算系统包括由多个请求器通过通信结构访问的共享资源。在各种实施方案中,共享资源是页面表的虚拟到物理地址转换的至少一部分的副本。在一些情况下,目的地是存储共享页面表的存储器控制器。在其他情况下,目的地是存储共享页面表的一部分的副本的I/O外围设备(或外围设备)。通信结构中的队列位于请求访问共享页面表的源与包括共享页面表的目的地之间的路径中。队列将请求存储在其条目中,该条目从目的地请求服务。
队列包括将数据从队列传输到目的地的单向信道。所传输的数据包括由队列选择发布的一个或多个请求。单向信道被称为“物理信道”,其包括队列与目的地之间的预定数量的物理线路。因此,物理信道具有用于支持它的物理资源的限制,诸如发射器和接收器电路以及存储元件。队列支持现有物理信道上的时分复用,而不是通过增加物理信道的数量来增加请求访问目的地的多个源的吞吐量。队列支持的时分复用在队列与目的地之间创建多个“虚拟信道”。因此,在单个物理信道上的数据传输是针对多个虚拟信道进行的,而不增加物理资源。在一些情况下,虚拟信道被分配给特定源。在其他情况下,虚拟信道被分配给特定请求类型。在其他情况下,将虚拟信道分配给来自特定源的特定请求类型。
源与目的地之间的队列的电路包括仲裁单元和控制单元。队列的控制单元保持存储来自多个源的请求的队列的已分配条目和未分配条目。在一个实施方案中,控制单元将至少一个条目分配给一组虚拟信道中的每个虚拟信道,其中该组包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道。地址转换请求的一个示例是请求从目的地检索一个或多个虚拟到物理地址转换的副本的读取请求。地址转换请求的另一示例是请求使存储在目的地处的一个或多个所存储的虚拟到物理地址转换无效的无效请求。
仲裁单元基于诸如一个或多个属性的选择标准来从已分配条目中选择一个或多个请求以进行发布。当给定虚拟信道中的至少一个或多个已分配条目为空时,电路利用存储在未分配条目中的给定虚拟信道的请求来分配这些条目。然而,如果控制单元确定不存在为给定虚拟信道分配的未分配条目,则控制单元将已分配的一个或多个条目保持为空。例如,即使已分配的一个或多个条目是队列中唯一可用的条目,控制单元也不为其他虚拟信道分配已分配的一个或多个条目。
参考图1,示出了存储至少地址转换请求的队列100的一个实施方案的概要框图。在例示的实施方案中,队列100包括队列条目110(或条目110)、仲裁单元130和控制单元140。此外,右下角还提供了两个密钥。密钥提供描述与源相关联的设备类型的映射,以及虚拟信道到源和请求类型的映射。条目110存储被发送到一个或多个目的地的来自一个或多个源的各种请求类型。条目110包括已分配条目112、114和116以及未分配条目118。仲裁单元130包括基于诸如一个或多个属性的选择标准来从已分配条目112、114和116中选择向目的地发布的一个或多个请求的电路。该一个或多个发布的请求在物理信道132上被发送到目的地。发布的请求的条目稍后基于虚拟信道由存储在未分配条目118中的请求分配。控制单元140包括保持条目110的分配并且确定将多少条目提供给已分配条目112、114和116以及未分配条目118的电路。
图1的右下角包括两个密钥。第一密钥包括源到设备类型的映射。例如,“Src 1”或源1是计算系统的第一中央处理单元(CPU)。类似地,“Src 2”或源2是计算系统的第二中央处理单元(CPU),以此类推。尽管在第一密钥中示出了特定数量的设备和特定类型的设备,但在其他实施方案中,使用队列100的计算系统包括另一数量和类型的设备。第二密钥包括虚拟信道(VC)到源和请求类型的映射。例如,“VC 1”或虚拟信道1被分配给来自源1和源2的存储器写入请求类型,该源为CPU 1和CPU 2。应注意,尽管虚拟信道被分配给来自多个源的存储器写入请求和存储器读取请求,但单个虚拟信道被分配给单个源和地址转换请求类型的组合。因此,当源生成地址转换请求类型时,没有源共享虚拟信道。如图所示,每个虚拟信道具有已分配条目112、114和116中的单个已分配条目。在其他实施方案中,虚拟信道具有已分配条目112、114和116中的一个或多个条目。
使用多种随机存取存储器(RAM)、内容可寻址存储器(CAM)、多个寄存器或触发器电路或其他电路中的一者来实施条目110。在一些实施方案中,条目110存储来自以相同目的地为目标的多个源的各种事务。队列100经由通信结构从多个源接收事务。通信结构支持源与目的地之间的请求、响应和其他类型的消息的传输。源的示例为中央处理单元(CPU)、处理音频和视频数据中的一者或多者的多媒体引擎、专用集成电路(ASIC)、图形处理单元(GPU)、各种输入/输出(I/O)外围设备中的一者,等等。源也被称为请求器和“客户端”,其能够生成将由目的地服务的请求和消息。目的地的示例包括存储器控制器和当通过接收到的请求来请求源执行服务时的源的示例。目的地也被称为“端点”,其是服务于从以设备为目标的客户端接收的请求的设备。
存储在条目110中的事务的示例为存储器读取请求、存储器写入请求、存储器窥探(探测)请求、令牌或信用消息和地址转换请求。在其他实施方案中还包括请求类型的其他示例。地址转换请求的一个示例是请求从目的地检索一个或多个虚拟到物理地址转换的副本的读取请求。地址转换请求的另一示例是请求使存储在目的地处的一个或多个所存储的虚拟到物理地址转换无效的无效请求。尽管右下角处的两个密钥提供用于存储器写入请求、存储器读取请求和地址转换请求的信息,但在其他实施方案中,在虚拟信道的分配中包括其他类型的请求。
操作系统向软件进程分配虚拟地址空间,并且将地址空间划分成特定大小的块。每个块是地址空间的“页面”。虚拟页面被映射到物理存储器的帧,并且虚拟地址到物理地址的映射跟踪虚拟页面在物理存储器中的存储位置。这些映射被存储在页面表中,并且外部系统存储器存储该页面表。页面表的至少一部分的副本被存储在目的地的地址转换高速缓存中。地址转换高速缓存还可被称为转换后备缓冲器(TLB)。存储页面表的至少一部分的该副本的目的地的示例包括用于系统存储器的存储器控制器和诸如I/O外围设备(或外围设备)的端点中的一者或多者。
队列100包括物理信道132,该物理信道将被选择发布的一个或多个请求从条目110传输到目的地。所传输的数据包括由队列选择发布的一个或多个请求。物理信道132包括队列100与目的地之间的预定数量的物理线路。因此,物理信道132具有用于支持它的物理资源的限制,诸如发射器和接收器电路以及存储元件。控制单元140支持现有物理信道132上的时分复用,而不是增加物理信道132的数量来提高吞吐量。控制单元140支持的时分复用在队列100与目的地之间创建多个“虚拟信道”。
在一些情况下,控制单元140将虚拟信道分配给特定源。在其他情况下,控制单元140将虚拟信道分配给特定请求类型。例如,控制单元保持用于存储器写入请求的已分配条目112。另外,控制单元保持用于存储器读取请求的已分配条目114。此外,控制单元保持用于地址转换请求的已分配条目116。尽管示出了三组已分配条目,每组具有特定数量的条目,但另一数量的已分配条目组也是可行的并且被考虑。每组已分配条目还可具有与所示数量不同的另一数量的条目。
尽管已分配条目116被分配给地址转换类型,但应注意,在所示实施方案中,单个条目被分配给特定虚拟信道。这里,虚拟信道被分配给来自特定源的地址转换请求。在一个示例中,虚拟信道(VC)8被分配给来自显示引擎的地址转换请求,VC 9被分配给来自第一类型的外围设备的地址转换请求,并且VC 10被分配给来自第二类型的外围设备的地址转换请求,以此类推。尽管这里使用了虚拟信道标识符7-10,但在其他实施方案中,使用其他标识符。因此,控制单元140将至少一个条目分配给一组虚拟信道中的每个虚拟信道,其中该组包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道。相比之下,VC 1被分配给来自诸如CPU 1和CPU 2的两个或更多个源的存储器写入请求。
如图所示,条目110包括多个字段120-128,用于存储对应于接收到的请求的信息。尽管在条目110中示出了特定数量和类型的字段,但在其他实施方案中,在条目110中存储了另一数量的字段和其他类型的字段。如图所示,条目110存储诸如状态字段120的元数据,该元数据存储指示是否利用请求来分配对应条目的至少有效(V)位。字段122存储虚拟信道(VC)标识符(ID)。虚拟信道ID在应用程序的运行时期间动态地分配。在分配阶段期间,单独的虚拟信道ID被分配给来自多个源中的单个源的地址转换请求类型。字段124存储被示出为“Src”的源或客户端标识符(ID)。源ID识别生成和发送请求的源。
条目110还包括存储由“Arb”指示的仲裁值的字段126。仲裁值基于诸如一个或多个属性的选择标准。这些属性的示例是接收到的请求的优先级水平、服务质量(QoS)参数、源标识符(ID)、应用程序ID或类型(诸如实时应用程序)、虚拟信道ID、带宽要求或延迟容忍要求、时期的指示,等等。在一些实施方案中,这些值存储在条目110的各个字段中,并且仲裁单元130接收这些值中的一个或多个值并且确定已分配条目112、114和116中的条目的最终属性值。在其他实施方案中,控制单元140接收这些值中的一个或多个值并且确定最终属性值以存储在条目110中。控制单元140基于至少时期来更新这些仲裁值。
条目110的字段128包括请求类型,诸如存储器写入请求、存储器读取请求和地址转换请求。存储在队列条目110的其他字段(未示出)中的其他类型的信息的示例为对应于请求的目标地址、和要读取或写入的数据大小的指示、对应请求的时期的指示、目的地ID、队列100接收到对应请求之前通信结构内的前一跳的ID、软件进程ID、应用程序ID、诸如实时数据或非实时数据的数据类型的指示,等等。
至少基于根据选择标准确定的最终值,仲裁单元130从已分配条目112、114和116中选择一个或多个请求以经由物理信道132向目的地发布。在一些实施方案中,当仲裁单元130从已分配条目112、114和116中选择两个或更多个请求来进行发布时,仲裁单元130在每个仲裁阶段期间从已分配条目116中选择至少一个请求。每个仲裁阶段可以是一个或多个时钟周期或流水线阶段,具体取决于具体实施。换句话讲,每次从队列条目110发布请求时,仲裁单元130都从已分配条目116中选择至少一个请求。因此,仲裁单元130在每个仲裁阶段期间从已分配条目116的虚拟信道组中选择至少一个地址转换请求进行发布,但所选择的地址转换请求具有比已分配条目112和114中的一个或多个请求更低的仲裁值。在一个示例中,仲裁单元130在每个仲裁阶段期间选择两个请求进行发布。仲裁单元130选择具有条目114的VC 5和仲裁值10的存储器读取请求以及具有条目116的VC 9和仲裁值6的地址转换请求,而不是选择具有仲裁值10和9的虚拟信道5和6的条目114的两个存储器读取请求。以这种方式,仲裁单元130确保尽可能快地将地址转换请求发送到目的地。
当已分配条目116中的一个或多个条目为空(V=0)或被取消分配时,控制单元140利用来自存储在未分配条目118中的对应虚拟信道的地址转换请求来分配这些条目。已分配条目112和114中的条目以与分配给条目的类型的请求类似的方式被分配。然而,如果控制单元140确定不存在为对应虚拟信道分配的未分配条目118的条目,则控制单元140将已分配条目116中的一个或多个条目保持为空。例如,即使已分配的一个或多个条目是条目110中唯一可用的条目,控制单元140也不为其他虚拟信道分配条目116中已分配的一个或多个条目。例如,如果分配有用于VC=1和Arb=8的地址转换类型的条目116的条目由于被选择用于发布而被取消分配,并且条目118中没有条目具有用于VC=1的请求,则尽管存储在未分配条目118中的请求需要已分配条目112、114和116中的条目,但分配给VC=1的条目116的条目仍保持取消分配。另一个示例是用于条目116的VC=7的条目,当未分配条目118不具有用于VC=7的请求时,尽管存储在未分配条目118中的请求需要已分配条目112、114和116中的条目,但该条目仍保持取消分配。
在一些实施方案中,控制单元140基于虚拟信道来从条目112、114和116中的已分配条目开始以有序连续方式分配接收到的请求。在此类实施方案中,控制单元140将对应于特定虚拟信道的最早请求保持在已分配条目112、114和116中的对应条目中。从特定虚拟信道的角度来看,队列100似乎提供先入先出(FIFO)数据存储。应注意,队列100位于请求访问共享地址转换高速缓存的源与包括共享地址转换高速缓存的目的地之间的路径中。在一些实施方案中,至少队列100和目的地支持互连通信协议,并且该协议包括用于路由地址转换请求的规范。在一些实施方案中,所支持的规范是PCIe(外围部件快速互连)互连通信协议的地址转换服务(ATS)规范。ATS规范支持端点上的地址转换的远程高速缓存(存储)。在其他实施方案中,支持另一规范和另一互连通信协议。
还应注意,类似于队列100的另一队列用于存储对应于至少地址转换请求的响应。响应的类型包括指示是否批准地址转换读取请求的完成确认、指示是否批准无效请求的确认、以及诸如所请求的虚拟到物理地址转换的一个或多个副本的响应数据。在各种实施方案中,以与队列100类似的方式来管理该其他队列,并且以类似的方式来处理存储在队列条目中的响应。
转到图2,示出了结构分组发射器200的一个实施方案的概要框图。在例示的实施方案中,结构分组发射器200包括队列210和230,每个队列用于存储相应类型的分组。在一些实施方案中,分组是流控制单元(“微片”)。微片是较大分组的子集。微片通常携载数据和控制信息,诸如用于较大分组的头部和尾部信息。尽管用于传输的数据被描述为在网络中路由的分组,但在其他实施方案中,用于传输的数据是点对点互连中的比特流或字节流。在各种实施方案中,队列210和230存储要在结构链路上发送的控制分组。对应的数据分组(诸如对应于微片的较大分组)存储在其他队列中。在其他实施方案中,队列210和230存储数据分组,并且对应的控制分组存储在其他队列中。
当结构分组发射器200被放置在从生成请求的源到为请求提供服务的目的地的数据流中时,存储在队列210和230中的控制分组类型的示例为存储器读取请求类型、存储器写入请求类型、探测(窥探)消息类型、令牌或信用类型、地址转换读取访问类型和地址转换无效类型。当结构分组发射器200被放置在从为请求提供服务的目的地到等待请求被服务的源的数据流中时,存储在队列210和230中的控制分组类型的示例为读取响应类型、写入响应类型、探测(窥探)响应类型、地址转换读取访问响应类型和地址转换无效响应类型。在其他实施方案中还包括分组类型的其他示例。
在一些实施方案中,队列210存储作为控制请求类型的“类型1”的分组。队列230存储“类型N”的分组,该分组在一个实施方案中为地址转换请求类型。在其他实施方案中,“类型1”和“类型N”对应于不同的虚拟信道,而不是请求类型。如前所述,地址转换请求的一个示例是请求从目的地检索一个或多个虚拟到物理地址转换的副本的读取请求。地址转换请求的另一示例是请求使存储在目的地处的一个或多个所存储的虚拟到物理地址转换无效的无效请求。队列210和230之间的队列存储“类型2”至“类型N-1”的分组,这些分组包括其他控制响应类型或其他不同的虚拟信道,具体取决于具体实施。因此,尽管在图2中仅示出了两个队列,但结构分组发射器200包括任意数量的队列。尽管队列210和230被示出为单独的队列,但在其他实施方案中,队列210和230的条目保持在单个队列中。
使用多种随机存取存储器(RAM)、内容可寻址存储器(CAM)、多个寄存器或触发器电路或其他电路中的一者来实施队列210和230。当结构分组发射器200接收新分组时,控制单元220使用诸如电路的硬件来确定要分配队列210的哪些条目。当分组被分配到队列210中并从队列210发布时,控制单元220还更新分配给分组的源的信用或令牌。例如,控制单元220确定接收新分组之间的时钟周期(或周期)的最小数量,以便避免当队列210的条目变满时或在变满条目的阈值数量内的条目中的数据冲突。控制单元240具有类似的功能,但由于存储在队列230中的分组的类型,用于访问队列210中的数据的方式可不同于用于访问队列230中的数据的方式。
在各种实施方案中,队列230、控制单元240和队列仲裁器242具有之前针对(图1的)队列110、控制单元130和仲裁单元120描述的类似功能。然而,除了分配给地址转换类型的虚拟信道之外,(图1的)队列110还存储虚拟信道的请求。这里,队列230存储仅分配给地址转换类型的虚拟信道的请求。控制单元240将至少一个条目分配给一组虚拟信道中的每个虚拟信道,其中该组包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道。在一些实施方案中,在通信结构内的中间位置处使用结构分组发射器200,而(图1的)队列100用作目的地之前的最后队列。
队列仲裁器222使用电路来选择存储在队列210的条目中的分组以便在结构链路上进行发送。在一些实施方案中,队列仲裁器222基于一个或多个属性来确定来自已分配条目的分组的优先级水平。如前所述,这些属性是以下各项中的一项或多项:接收到的请求的优先级水平、服务质量(QoS)参数、源标识符(ID)、应用程序ID或类型(诸如实时应用程序)、虚拟信道ID、带宽要求或延迟容忍要求、时期的指示,等等。当结构链路可用时,在结构链路上发送一个或多个候选分组224。类似地,队列仲裁器242从队列230中选择一个或多个候选分组244以在结构链路上进行发送。在一些实施方案中,队列仲裁器222-242在每个时钟周期从队列210-230选择候选分组224-244。在其他实施方案中,在先前选择的候选分组230-234已经被插入到链路分组中并且在结构链路上进行发送之后选择分组。
如前所述,队列230存储“类型N”的分组,该分组是与地址转换请求相对应的分组类型或与地址转换响应相对应的分组类型(具体取决于通信结构中上游或下游的数据流的方向)。例如,有权限访问特定页面表的请求器生成TLB未命中,并且该请求器已经将地址转换请求发送到控制对特定页面表的至少一部分的副本的访问的存储器控制器或其他端点。在各种具体实施中,地址转换请求将发起页面表遍历。在其他具体实施中,地址转换请求将访问存储来自特定页面表的所请求地址转换的副本的特定TLB。队列230是从请求器到存储器控制器或其他端点的路径上的中间队列。另选地,存储器控制器或其他端点向请求器发送对应的地址转换响应,并且队列230是从存储器控制器或其他端点到请求器的路径上的中间队列。接收到的“类型N”的分组存储在队列230的条目252-266之一中。
在一些实施方案中,地址转换存储在共享资源中,诸如存储共享页面表的存储器控制器或其他端点。在一些实施方案中,地址转换请求是基于PCIe(外围部件快速互连)互连通信协议的地址转换服务(ATS)规范的请求。ATS规范支持端点上的地址转换的远程高速缓存(存储)。队列230和支持电路(诸如控制单元240和队列仲裁器242)减少了为访问共享页面表的请求器提供地址转换请求服务的延迟。例如,控制单元240将条目252-254保持为已分配条目250,而控制单元240将条目262-266保持为未分配条目260。在各种实施方案中,具有对特定页面表的访问权限的每个请求器具有已分配条目250中的至少一个已分配条目。来自多个请求器中的特定请求器的每个地址转换请求被分配特定的虚拟信道。对于特定的虚拟信道,当分配了条目250的至少一个已分配条目中的每个已分配条目并且接收到的分组对应于该特定请求器时,控制单元240选择未分配条目260的可用条目以进行分配。
队列仲裁器242从存储在已分配条目250中的分组中选择一个或多个分组以进行发布。在一个实施方案中,如果已分配条目250的分组超过时期阈值,则队列仲裁器242选择该分组。否则,队列仲裁器242基于如前所述的一个或多个属性来从已分配条目250中选择分组以进行发布。另外,队列仲裁器242能够基于最近最少选择算法、循环算法或其他算法来从已分配条目250中选择分组。当用于特定请求器的条目250的已分配条目为空(取消分配)时,控制单元240利用来自对应于特定请求器的未分配条目260的分组来分配条目250的这些条目。因此,在一些实施方案中,控制单元240将来自给定虚拟信道的最早分组保持在已分配条目250中的一者中。例如,控制单元240以有序的方式为来自特定虚拟信道的分组提供服务。
然而,如果控制单元240确定不存在为特定虚拟信道分配的条目260的未分配条目,则控制单元240针对特定虚拟信道将条目250的已分配的一个或多个条目保持为空。例如,即使这些已分配的一个或多个条目是队列230的唯一可用条目,控制单元240也不利用来自其他虚拟信道的分组来分配条目250的这些空条目。因此,尽管当前特定虚拟信道在队列230中没有已分配条目,但条目250中的至少一个条目仍可用于特定虚拟信道。因此,没有任何对共享页面表具有访问权限的虚拟信道具有地址转换分组(请求或响应),该地址转换分组由于没有条目252-266的可用条目而将在队列230处被阻塞。相反,保证每个虚拟信道具有已分配条目250中的至少一个可用条目。
现在转到图3,示出了传输至少地址转换请求的计算系统300的一个具体实施的概要框图。如图所示,计算系统300包括存储器控制器340、外围设备380和390中的每一者与多个客户端之间的通信结构310。存储器控制器340用于与存储器350交互。多个客户端的示例为中央处理单元(CPU)360、图形处理单元(GPU)362、集线器364以及外围设备380和390。集线器364用于与多媒体引擎368通信。在一些具体实施中,一个或多个集线器用于与多媒体播放器(即,用于多媒体引擎368的集线器364)、显示单元或其他单元交互。在此类情况下,集线器是计算系统300中的客户端。在一些具体实施中,外围设备380和390中的一者或多者使用集线器。每个集线器另外包括用于根据各种通信协议来处理数据传输的控制电路和存储元件。尽管示出了五个客户端360、362、364、380和390,但在其他具体实施中,计算系统300包括任何数量的客户端和其他类型的客户端,诸如显示单元、一个或多个其他输入/输出(I/O)外围设备,等等。
在一些具体实施中,计算系统300是片上系统(SoC),其中所描绘部件中的每个部件集成在单个半导体裸片上。在其他具体实施中,这些部件是系统级封装(SiP)或多芯片模块(MCM)中单独的裸片。在各种具体实施中,CPU 360、GPU 362、多媒体引擎366以及外围设备380和390在智能电话、平板电脑、游戏控制台、智能手表、台式计算机、虚拟现实头戴式耳机或其他设备中使用。CPU 360、GPU 362、多媒体引擎366以及外围设备380和390是能够生成要传输的片上网络数据的客户端的示例。网络数据的示例包括存储器访问请求、存储器访问响应数据、存储器访问确认、探测和探测响应、地址转换请求、地址转换响应、地址转换无效请求和客户端之间的其他网络消息。该网络数据被放置在网络分组(或分组)中。每个分组包括特定类型的网络数据。例如,一个分组包括一个或多个请求,另一个分组包括一个或多个响应,等等。这些分组包括具有元数据的标头,该元数据包括用于至少识别源、目的地、虚拟信道、分组类型、响应数据的数据大小、优先级水平、生成消息的应用程序等的多个标识符。
为了有效地路由分组,在各种具体实施中,通信结构310使用包括网络交换机的路由网络320。在各种具体实施中,结构310和路由网络320中的一者或多者包括用于存储控制参数的状态和控制寄存器。在一些具体实施中,结构310包括用于支持通信、数据传输以及用于通过一个或多个总线路由分组的网络协议的诸如电路的硬件。结构310包括用于支持地址格式、接口信号和同步/异步时钟域使用的电路。在一些具体实施中,结构310的网络交换机是片上网络(NoC)交换机。在一个具体实施中,路由网络320在点对点(P2P)环形拓扑中使用多个网络交换机。在其他具体实施中,路由网络320在网状拓扑中使用具有可编程路由表的网络交换机。在又一些其他具体实施中,路由网络320在拓扑的组合中使用网络交换机。在一些具体实施中,路由网络320包括一个或多个总线以减少计算系统300中的线路的数量。例如,接口330-332中的一个或多个接口在路由网络320内的单个总线上发送读取响应和写入响应。
CPU 360、GPU 362、多媒体引擎366以及外围设备380和390中的每一者能够作为源和目的地。源为要服务的目的地生成请求。目的地为请求提供服务并且向对应的源发送任何响应。如前所述,CPU 360、GPU 362、多媒体引擎366以及外围设备380和390被称为客户端,但这些部件也是端点。如前所述,端点是充当为以设备为目标的请求提供服务的目的地的设备。
在各种实施方案中,结构310、路由网络320、接口312、314、316、330、332和334以及存储器控制器340中的一者或多者使用诸如队列370-373的中间队列来存储在源与目的地之间传输的分组。尽管仅路由网络320被示出为使用队列370-373,但其他部件也包括类似的队列也是可行的并且被考虑。队列370-373具有附带的控制单元(CU)374-377,该CU具有执行多种功能的硬件,诸如控制电路和存储元件。这些功能的示例为控制对队列条目的访问、从队列条目发布分组、以及对队列条目内的分组的存储进行任何重新排序。在各种实施方案中,队列370-373和附带的控制单元374-377提供(图1的)队列100的功能。在其他实施方案中,队列370-373和附带的控制单元374-377中的一者或多者提供(图2的)结构分组发射器200的功能。
在各种具体实施中,通信结构310(或结构310)在CPU 360、GPU 362、多媒体引擎366以及外围设备380和390之间传输分组。结构310还在存储器350与诸如CPU 360、GPU362、多媒体引擎366以及外围设备380和390以及其他外围设备(未示出)的客户端之间传输数据。在各种具体实施中,接口312-316和330-334以及存储器控制器340包括用于实施算法以提供功能的硬件电路。接口312-316和332-334用于在路由网络320与CPU 360、GPU 362、多媒体引擎366以及外围设备380和390之间传输数据、请求和确认响应。接口312-316和332-334以及控制单元374-377中的一者或多者包括用于生成分组、解码分组以及支持与路由网络320的通信的电路。在一些实施方案中,接口312-316和330-334使用诸如PCIe(外围部件快速互连)互连通信协议的通信协议。在其他实施方案中,使用另一通信协议。在一些具体实施中,接口312-316和332-334中的每个接口与如图所示的单个客户端通信。在其他具体实施中,接口312-316和332-334中的一个或多个接口与多个客户端通信并且使用识别客户端的标识符来跟踪与客户端的数据。
尽管针对存储器350示出了单个存储器控制器340,但在其他具体实施中,计算系统300包括多个存储器控制器,其中每个存储器控制器支持一个或多个存储器信道。存储器控制器340包括用于在支持突发模式的情况下基于存储器350的定时规范来对要发送到存储器350的请求进行分组并且将请求发送到存储器350的电路。在各种具体实施中,存储器350-390包括各种随机存取存储器(RAM)中的任一者。在一些具体实施中,存储器350将数据和对应的元数据存储在同步RAM(SRAM)中。在其他具体实施中,存储器350将数据和对应的元数据存储在各种动态RAM(DRAM)中的一者中。例如,存储器350将数据存储在传统DRAM中或彼此堆叠的多个三维(3D)存储器裸片中,具体取决于具体实施。尽管并未示出,但存储器控制器340或另一存储器控制器提供对非易失性存储器的访问,该非易失性存储器用于以比存储器350更低的存储器分级结构水平来存储数据。非易失性存储器的示例为硬盘驱动器(HDD)、固态驱动器(SSD),等等。
当处理应用程序时,客户端360-366和其他外围设备(未示出)将频繁访问的数据存储在高速缓存存储器子系统的一个或多个高速缓存中。客户端360-366和其他外围设备的处理器利用线性(或“虚拟”)地址来识别所请求的数据。所请求的数据的示例为用户数据、最终结果数据、中间结果数据和指令。由处理器执行的每个软件进程具有虚拟地址空间。虚拟地址空间被划分成特定大小的页面。例如,4千字节(4KB)或64千字节(64KB)的页面大小是可行的,但也设想了其他大小。虚拟页面被映射到物理存储器的帧。虚拟地址到物理地址的映射跟踪虚拟页面存储在物理存储器中的位置,诸如存储器350中的页面表352。尽管示出了单个页面表352,但在其他实施方案中,另一数量的页面表被存储在存储器350中。
为了减少对存储器350的访问,使用高速缓存来存储页面表352的一个或多个子集的副本。例如,存储器控制器340使用转换后备缓冲器(TLB)342来存储副本。一个或多个端点有权限访问页面表352的子集的这些副本,具体取决于正在运行的一个或多个应用程序。如图所示,至少集线器364以及外围设备380和390具有这种权限,并且它们将页面表352的子集的副本存储在地址转换高速缓存(ATC)366、ATC 382和ATC 392中。处理器或其他电路利用给定存储器访问请求的虚拟地址来访问ATC 366、ATC 382和ATC 392中的对应一者,以确定对应的地址转换高速缓冲存储器是否存储保持目标数据的存储器位置的相关联物理地址。
当未找到虚拟到物理映射时,处理器或其他电路生成地址转换请求以发送到地址转换的所有者。在一些示例中,存储器控制器340是所有者。在其他示例中,诸如外围设备380的外围设备被操作系统或应用程序指定为所有者。例如,当应用程序开始并且稍后结束时,操作系统和应用程序中的一者或多者执行虚拟信道分配的动态重新配置并且为特定客户端设置访问特定页面表的权限。如果外围设备390确定在ATC 392的访问期间发生未命中,则外围设备390生成地址转换请求以发送到外围设备380用于访问ATC 382。该地址转换访问请求及其对应的响应通过队列370-373中的一个或多个队列在分组内传输。类似地,当正在运行的应用程序完成并且不再需要地址转换时,外围设备390生成地址转换无效请求以发送到集线器364和外围设备390中的每一者。该地址转换无效请求及其对应的响应通过队列370-373中的一个或多个队列在分组内传输。基于队列370-373和附带的控制单元374-377的具体实施,减少了为地址转换请求提供服务的延迟。
下面描述的方法400和500用于队列的电路。队列将以共享资源为目标的请求存储在其条目中。多个请求器生成用于访问共享资源的请求。在一些实施方案中,请求器是计算系统的客户端,并且队列位于请求器与共享资源之间的路径中。例如,队列位于计算系统的通信结构内。在各种实施方案中,多个请求器对共享资源的访问基于互连通信协议的规范。在一些实施方案中,该共享资源是存储在存储器控制器或另一端点的地址转换高速缓存中的共享页面表的一部分的副本,并且该规范是PCIe(外围部件快速互连)互连通信协议的地址转换服务(ATS)规范。ATS规范支持端点上的地址转换的远程高速缓存(存储)。在其他实施方案中,支持另一通信协议。当请求从请求器遍历到共享资源时,请求被存储在队列中。除了确定何时从队列发布请求之外,队列的电路还控制队列的条目中的数据存储。队列的电路将至少一个条目分配给一组虚拟信道中的每个虚拟信道,其中该组包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道。先前描述的装置、分组发射器、队列和系统中的任一者可用于实施方法400-500的步骤。对这些步骤的进一步描述在以下论述中提供。
现在参考图4,示出了用于有效地分配存储至少地址转换请求的队列的条目的方法400的一个实施方案。出于讨论的目的,以顺序的次序示出了该实施方案(以及图5)中的步骤。然而,在其他实施方案中,一些步骤以与所示不同的顺序发生,一些步骤同时执行,一些步骤与其他步骤组合,并且一些步骤不存在。
当特定应用程序开始时,操作系统和应用程序中的一者或多者执行虚拟信道分配的动态重新配置并且为特定源设置访问特定页面表的权限。具有权限的一个或多个源是诸如外围设备的端点。被授予权限的源能够为特定页面表中的地址转换的副本生成访问请求。队列的电路将队列的至少一个条目分配给一组虚拟信道中的每个虚拟信道,该组虚拟信道包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道(框402)。这里,虚拟信道被分配给来自特定源的地址转换请求。在一个示例中,虚拟信道(VC)1被分配给来自第一类型的外围设备的地址转换请求,VC 2被分配给来自第二类型的外围设备的地址转换请求,VC 3被分配给来自存储器控制器的地址转换请求,以此类推。尽管这里使用了虚拟信道标识符1-3,但在其他实施方案中,使用其他标识符。因此,队列的控制电路将至少一个条目分配给一组虚拟信道中的每个虚拟信道,其中该组包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道。
当条目尚未分配时,电路将缓冲器的一个或多个未分配条目保持为可用于多个源中的任一个源(框404)。电路从给定虚拟信道接收地址转换请求(框406)。地址转换请求的一个示例是请求从目的地检索一个或多个虚拟到物理地址转换的副本的读取请求。地址转换请求的另一示例是请求使存储在目的地处的一个或多个所存储的虚拟到物理地址转换无效的无效请求。如果电路确定已分配条目可用于给定虚拟信道(条件框408的“是”分支),则电路选择队列的可用已分配条目(框410)。随后,电路利用接收到的请求来分配所选择的条目(框414)。由于队列的控制电路将至少一个条目分配给一组虚拟信道中的每个虚拟信道,该组虚拟信道包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道,因此仅当已经分配了已分配条目时,已分配条目才不可用。队列的仲裁电路检查队列的已分配条目。因此,没有任何对共享地址转换具有访问权限的虚拟信道具有由于没有任何可用的已分配条目而将被阻止仲裁的请求。
如果电路确定已分配条目对于给定虚拟信道不可用(条件框408的“否”分支),则电路选择队列的可用未分配条目(框412)。随后,电路利用接收到的请求来分配所选择的条目(框414)。在各种实施方案中,队列具有可用的未分配条目,因为当未分配条目不可用时,队列向其他源或队列发送指示。在一些实施方案中,队列以及其他源和队列保持多个信用,该多个信用指示电路能够接收多少请求以及在特定时钟周期中能够针对其他源和队列中的每一者发送多少请求。
现在参考图5,示出了用于从存储至少地址转换请求的队列请求的条目有效地进行发布的方法500的一个实施方案。队列的电路保持存储来自以地址转换高速缓存为目标的请求器的请求的队列的已分配条目和未分配条目(框502)。电路检查队列的已分配条目(框504)。如果电路确定没有任何已分配条目超过时期阈值(条件框506的“否”分支),则电路基于仲裁属性来选择已分配条目进行发布(框510)。这些属性的示例是接收到的请求的优先级水平、服务质量(QoS)参数、源标识符(ID)、应用程序ID或类型(诸如实时应用程序)、虚拟信道ID、带宽要求或延迟容忍要求、时期的指示,等等。
在各种实施方案中,队列的控制电路将至少一个条目分配给一组虚拟信道中的每个虚拟信道,其中该组包括用于来自多个源中的单个源的每个地址转换请求类型的虚拟信道。在一些实施方案中,在每个仲裁阶段期间,当队列的仲裁电路从队列的已分配条目中选择两个或更多个请求来进行发布时,仲裁电路从上述虚拟信道组的已分配条目中选择至少一个请求。仲裁阶段需要一个或多个时钟周期,具体取决于具体实施。因此,仲裁电路在每个仲裁阶段期间从上述虚拟信道组中选择至少一个地址转换请求进行发布,但所选择的地址转换请求具有比其他虚拟信道的一个或多个请求更低的仲裁值。
如果电路确定已分配条目超过时期阈值(条件框506的“是”分支),则电路选择超过时期阈值的已分配条目进行发布(框508)。如果存储在已分配条目中的两个或更多个请求具有超过时期阈值的时期并且仲裁电路不能发布所有请求,则电路基于如前所述的属性来选择一个或多个请求。电路发布所选择的已分配条目的请求(框512)。例如,电路向包括共享地址转换高速缓存的端点发布所选择的请求,并且一个或多个中间队列可在朝向该端点的路径上。
如果电路确定不存在为所发布条目的虚拟信道分配的未分配条目(条件框514的“否”分支),则电路将所选择的已分配条目保持为空(框516)。例如,即使所选择的已分配条目是队列中唯一可用的条目,该电路也不为其他虚拟信道分配所选择的已分配条目。如果电路确定存在为所发布条目的虚拟信道分配的未分配条目(条件框514的“是”分支),则电路利用来自虚拟信道的未分配条目的请求来分配所选择的已分配条目(框518)。随后,方法500的控制流程返回到框502,其中电路保持队列的已分配条目和未分配条目。
应注意,上述实施方案中的一者或多者包括软件。在此类实施方案中,实施方法和/或机制的程序指令被输送或存储在计算机可读介质上。被配置为存储程序指令的许多类型的介质可用并且包括硬盘、软盘、CD-ROM、DVD、闪存、可编程ROM(PROM)、随机存取存储器(RAM)和各种其他形式的易失性或非易失性存储装置。一般而言,计算机可访问存储介质包括在使用期间可由计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质包括诸如磁性或光学介质,例如磁盘(固定或可移除)、磁带、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光等存储介质。存储介质还包括易失性或非易失性存储介质,诸如RAM(例如,同步动态RAM(SDRAM)、双数据速率(DDR、DDR2、DDR3等)SDRAM、低功率DDR(LPDDR2等)SDRAM、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、可经由外围设备接口(诸如通用串行总线(USB)接口等)访问的ROM、闪存存储器、非易失性存储器(例如,闪存)。存储介质包括微电子机械系统(MEMS),以及可经由诸如网络和/或无线链路等通信介质访问的存储介质。
另外,在各种实施方案中,程序指令包括在高级编程语言(诸如C)或设计语言(HDL)(诸如Verilog、VHDL或数据库格式(诸如GDS II流格式(GDSII))中的硬件功能的行为级描述或寄存器传输级(RTL)描述。在一些情况下,描述由合成工具读取,所述合成工具合成描述以产生包括来自合成库的门列表的网表。网表包括门集,其也表示包括系统的硬件的功能。然后将网表放置并路由以产生描述要施加到掩码的几何形状的数据集。然后将掩码用于各种半导体制造步骤中以产生对应于系统的半导体电路或电路。另选地,计算机可访问存储介质上的指令是如所期望的网表(具有或不具有合成库)或数据集。另外,所述指令用于由如和Mentor/>的此类供应商的基于硬件的类型仿真器进行仿真的目的。
尽管已经相当详细地描述了以上实施方案,但是一旦完全了解上述公开内容,许多变型和修改对于本领域技术人员将变得显而易见。旨在将以下权利要求书解释为涵盖所有此类变型和修改。
Claims (20)
1.一种装置,所述装置包括:
多个条目,每个条目被配置为存储与第一组虚拟信道和不同于所述第一组虚拟信道的第二组虚拟信道中的一者相对应的请求,其中所述第二组虚拟信道中的每个虚拟信道被分配用于传送来自多个请求器中的不同请求器的地址转换请求;和
电路,所述电路被配置为:
将所述多个条目中的给定条目分配给所述第二组虚拟信道中的每个虚拟信道;以及
利用所分配的所述已分配给定条目中的每个条目的至少选择标准,从所述多个条目中选择一个或多个请求以进行发布。
2.根据权利要求1所述的装置,其中所述电路被进一步配置为每次从所述多个条目发布请求时,从所分配的所述已分配给定条目中选择至少一个请求。
3.根据权利要求1所述的装置,其中所述地址转换请求类型是以存储地址转换的共享页面表的至少一部分的副本为目标的访问请求。
4.根据权利要求3所述的装置,其中所述地址转换请求类型是以存储地址转换的共享页面表的至少一部分的副本为目标的无效请求。
5.根据权利要求3所述的装置,其中分配有所述第二组虚拟信道中的虚拟信道的请求器是有权限访问所述共享页面表的多个客户端和外围设备中的一者。
6.根据权利要求3所述的装置,其中至少部分地基于确定包括所述地址转换的地址的地址空间被重新定义,所述电路被进一步配置为:
重新定义所述第二组虚拟信道;以及
将所述多个条目中的至少一个条目重新分配给所述重新定义的第二组中的每个虚拟信道。
7.根据权利要求1所述的装置,其中所述电路被进一步配置为响应于确定以下各项来将所述已分配给定条目中的条目保持为取消分配:
所述已分配给定条目中的所述条目被取消分配;以及
不存在分配给所述已分配给定条目中的所述条目的所述第二组中的虚拟信道的未决请求。
8.根据权利要求1所述的装置,其中所述电路被进一步配置为:
接收分配请求,所述分配请求指示与所述地址转换类型不同的第一类型的第一请求准备好在所述多个条目中进行分配;以及
至少部分地基于确定以下各项来发送指示等待分配所述第一请求的响应:
分配给所述第一类型请求的所述多个条目中没有条目可用于分配;以及
所述多个条目中没有未分配条目可用于分配。
9.一种方法,所述方法包括:
在队列的多个条目中的每个条目中存储来自第一组虚拟信道和不同于所述第一组虚拟信道的第二组虚拟信道中的一者的请求,其中所述第二组虚拟信道中的每个虚拟信道被分配用于传送来自多个请求器中的不同请求器的地址转换请求;
通过所述队列的电路将所述多个条目中的给定条目分配给所述第二组虚拟信道中的每个虚拟信道;以及
利用所分配的所述已分配给定条目中的每个条目的至少选择标准,通过所述队列的所述电路从所述多个条目中选择一个或多个请求以进行发布。
10.根据权利要求9所述的方法,还包括每次从所述多个条目发布请求时,从所分配的所述已分配给定条目中选择至少一个请求。
11.根据权利要求9所述的方法,其中所述地址转换请求类型是以存储地址转换的共享页面表的至少一部分的副本为目标的访问请求。
12.根据权利要求11所述的方法,其中分配有所述第二组虚拟信道中的虚拟信道的请求器是有权限访问所述共享页面表的多个客户端和外围设备中的一者。
13.根据权利要求11所述的方法,其中至少部分地基于确定包括所述地址转换的地址的地址空间被重新定义,所述方法还包括:
重新定义所述第二组虚拟信道;以及
将所述多个条目中的至少一个条目重新分配给所述重新定义的第二组中的每个虚拟信道。
14.根据权利要求9所述的方法,还包括响应于确定以下各项来将所述已分配给定条目中的条目保持为取消分配:
所述已分配给定条目中的所述条目被取消分配;以及
不存在分配给所述已分配给定条目中的所述条目的所述第二组中的虚拟信道的未决请求。
15.一种计算系统,所述计算系统包括:
多个请求器,所述多个请求器被配置为生成请求;
第一队列,其中所述第一队列包括:
多个第一条目,每个条目被配置为存储来自第一组虚拟信道和不同于所述第一组虚拟信道的第二组虚拟信道中的一者的请求,其中所述第二组虚拟信道中的每个虚拟信道被分配用于传送来自多个请求器中的不同请求器的地址转换请求;和
第一电路;
其中所述第一电路被配置为:
将所述多个条目中的给定条目分配给所述第二组虚拟信道中的每个虚拟信道;以及
利用所分配的所述已分配给定条目中的每个条目的至少选择标准,从所述多个条目中选择一个或多个请求以进行发布。
16.根据权利要求15所述的计算系统,其中所述第一电路被进一步配置为每次从所述多个条目发布请求时,从所分配的所述已分配给定条目中选择至少一个请求。
17.根据权利要求15所述的计算系统,其中所述地址转换请求类型是以存储地址转换的共享页面表的至少一部分的副本为目标的访问请求。
18.根据权利要求17所述的计算系统,其中至少部分地基于确定包括所述地址转换的地址的地址空间被重新定义,所述电路被进一步配置为:
重新定义所述第二组虚拟信道;以及
将所述多个条目中的至少一个条目重新分配给所述重新定义的第二组中的每个虚拟信道。
19.根据权利要求15所述的计算系统,其中所述第一电路被进一步配置为响应于确定以下各项来将所述已分配给定条目中的条目保持为取消分配:
所述已分配给定条目中的所述条目被取消分配;以及
不存在分配给所述已分配给定条目中的所述条目的所述第二组中的虚拟信道的未决请求。
20.根据权利要求15所述的计算系统,其中所述计算系统还包括第二队列,所述第二队列包括:
多个第二条目,每个条目被配置为存储对第三组虚拟信道和第四组虚拟信道中的一者的响应,其中所述第四组中的每个虚拟信道被分配给用于多个请求器中的单个请求器的地址转换类型的响应;和
第二电路;
其中所述第二电路被配置为:
将所述多个第二条目中的一组条目分配给所述第四组中的每个虚拟信道;以及
在每个仲裁阶段期间,利用来自所分配的所述已分配条目组的选择标准。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/357,838 | 2021-06-24 | ||
US17/357,838 US11853231B2 (en) | 2021-06-24 | 2021-06-24 | Transmission of address translation type packets |
PCT/IB2022/056423 WO2022269582A1 (en) | 2021-06-24 | 2022-07-12 | Transmission of address translation type packets |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117716679A true CN117716679A (zh) | 2024-03-15 |
Family
ID=84541745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280051797.0A Pending CN117716679A (zh) | 2021-06-24 | 2022-07-12 | 地址转换类型分组的传输 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11853231B2 (zh) |
EP (1) | EP4360286A1 (zh) |
CN (1) | CN117716679A (zh) |
WO (1) | WO2022269582A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230308384A1 (en) * | 2022-03-25 | 2023-09-28 | Xilinx, Inc. | Efficiency and quality of service improvements for systems with higher bandwidth clients mixed with lower bandwidth clients |
US11914865B2 (en) * | 2022-04-11 | 2024-02-27 | Mellanox Technologies, Ltd. | Methods and systems for limiting data traffic while processing computer system operations |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5687282A (en) | 1979-12-14 | 1981-07-15 | Nec Corp | Data processor |
US4669043A (en) | 1984-02-17 | 1987-05-26 | Signetics Corporation | Memory access controller |
US5060137A (en) | 1985-06-28 | 1991-10-22 | Hewlett-Packard Company | Explicit instructions for control of translation lookaside buffers |
GB2210479B (en) | 1987-10-02 | 1992-06-17 | Sun Microsystems Inc | Alias address support. |
US5491806A (en) | 1990-06-26 | 1996-02-13 | Lsi Logic Corporation | Optimized translation lookaside buffer slice having stored mask bits |
US5564052A (en) | 1991-06-27 | 1996-10-08 | Integrated Device Technology, Inc. | Logically disconnectable virtual-to-physical address translation unit and method for such disconnection |
EP0651332B1 (en) | 1993-10-29 | 2001-07-18 | Advanced Micro Devices, Inc. | Linearly addressable microprocessor cache |
US5671444A (en) | 1994-02-28 | 1997-09-23 | Intel Corporaiton | Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers |
US5680572A (en) | 1994-02-28 | 1997-10-21 | Intel Corporation | Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers |
JP3672634B2 (ja) | 1994-09-09 | 2005-07-20 | 株式会社ルネサステクノロジ | データ処理装置 |
ZA954460B (en) | 1994-09-30 | 1996-02-05 | Intel Corp | Method and apparatus for processing memory-type information within a microprocessor |
US5963984A (en) | 1994-11-08 | 1999-10-05 | National Semiconductor Corporation | Address translation unit employing programmable page size |
US5752274A (en) | 1994-11-08 | 1998-05-12 | Cyrix Corporation | Address translation unit employing a victim TLB |
US5924125A (en) | 1995-08-01 | 1999-07-13 | Arya; Siamak | Method and apparatus for parallel access to consecutive TLB entries |
US5895501A (en) | 1996-09-03 | 1999-04-20 | Cray Research, Inc. | Virtual memory system for vector based computer systems |
US6189074B1 (en) | 1997-03-19 | 2001-02-13 | Advanced Micro Devices, Inc. | Mechanism for storing system level attributes in a translation lookaside buffer |
US6226732B1 (en) | 1997-10-02 | 2001-05-01 | Hitachi Micro Systems, Inc. | Memory system architecture |
US6079003A (en) | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache |
US6233652B1 (en) | 1998-10-30 | 2001-05-15 | Intel Corporation | Translation lookaside buffer for multiple page sizes |
US6446189B1 (en) | 1999-06-01 | 2002-09-03 | Advanced Micro Devices, Inc. | Computer system including a novel address translation mechanism |
US6751698B1 (en) | 1999-09-29 | 2004-06-15 | Silicon Graphics, Inc. | Multiprocessor node controller circuit and method |
JP4740897B2 (ja) * | 2007-05-24 | 2011-08-03 | 株式会社日立製作所 | 仮想ネットワーク構成方法及びネットワークシステム |
US8275598B2 (en) | 2009-03-02 | 2012-09-25 | International Business Machines Corporation | Software table walk during test verification of a simulated densely threaded network on a chip |
US8751830B2 (en) | 2012-01-23 | 2014-06-10 | International Business Machines Corporation | Memory address translation-based data encryption/compression |
US9170954B2 (en) | 2012-12-10 | 2015-10-27 | International Business Machines Corporation | Translation management instructions for updating address translation data structures in remote processing nodes |
US20140281366A1 (en) | 2013-03-15 | 2014-09-18 | Cognitive Electronics, Inc. | Address translation in a system using memory striping |
EP3812900B1 (en) | 2016-12-31 | 2023-11-29 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
US20180203807A1 (en) | 2017-01-13 | 2018-07-19 | Arm Limited | Partitioning tlb or cache allocation |
US10380039B2 (en) | 2017-04-07 | 2019-08-13 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
US10810133B1 (en) | 2017-11-15 | 2020-10-20 | Amazon Technologies, Inc. | Address translation and address translation memory for storage class memory |
US11221962B2 (en) * | 2019-09-04 | 2022-01-11 | Apple Inc. | Unified address translation |
-
2021
- 2021-06-24 US US17/357,838 patent/US11853231B2/en active Active
-
2022
- 2022-07-12 CN CN202280051797.0A patent/CN117716679A/zh active Pending
- 2022-07-12 EP EP22827832.1A patent/EP4360286A1/en active Pending
- 2022-07-12 WO PCT/IB2022/056423 patent/WO2022269582A1/en active Application Filing
-
2023
- 2023-06-13 US US18/334,143 patent/US20230342307A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220417206A1 (en) | 2022-12-29 |
WO2022269582A1 (en) | 2022-12-29 |
US11853231B2 (en) | 2023-12-26 |
EP4360286A1 (en) | 2024-05-01 |
US20230342307A1 (en) | 2023-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4926963B2 (ja) | 多重メモリアクセスレイテンシ時間をサポートするコンピュータメモリシステムにおける性能を改善するためのシステムおよび方法 | |
US7269709B2 (en) | Memory controller configurable to allow bandwidth/latency tradeoff | |
EP1820309B1 (en) | Streaming memory controller | |
KR100288453B1 (ko) | 다수의관련데이타를참조하는데단일포인터를사용하는메모리버퍼시스템 | |
US20230342307A1 (en) | Transmission of address translation type packets | |
US7406568B2 (en) | Buffer allocation for split data messages | |
US20020087614A1 (en) | Programmable tuning for flow control and support for CPU hot plug | |
JP7108135B2 (ja) | 並び替えの間のキャッシュ一貫性を維持する方法 | |
US10152434B2 (en) | Efficient arbitration for memory accesses | |
US10942878B1 (en) | Chunking for burst read transactions | |
CN111684430A (zh) | 支持同一信道上对不统一等待时间的存储器类型的响应 | |
JP2008544359A (ja) | メモリーコントローラ | |
US20230269205A1 (en) | Switch for transmitting packet, network on chip having the same, and operating method thereof | |
US10684965B2 (en) | Method to reduce write responses to improve bandwidth and efficiency | |
US6701387B1 (en) | Adaptive data fetch prediction algorithm | |
US8117320B2 (en) | Allocation of tracker resources in a computing system | |
KR102584507B1 (ko) | 링크 계층 데이터 패킹 및 패킷 흐름 제어 기법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |