CN108257078B - 存储器知晓重排序源 - Google Patents
存储器知晓重排序源 Download PDFInfo
- Publication number
- CN108257078B CN108257078B CN201711293325.3A CN201711293325A CN108257078B CN 108257078 B CN108257078 B CN 108257078B CN 201711293325 A CN201711293325 A CN 201711293325A CN 108257078 B CN108257078 B CN 108257078B
- Authority
- CN
- China
- Prior art keywords
- memory
- unique
- request
- page
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 545
- 238000000034 method Methods 0.000 claims abstract description 24
- 239000000872 buffer Substances 0.000 claims description 31
- 230000003139 buffering effect Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 16
- 238000007667 floating Methods 0.000 description 9
- 239000011800 void material Substances 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007334 memory performance Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004793 poor memory Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/302—In image processor or graphics adapter
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Human Computer Interaction (AREA)
Abstract
本申请公开了存储器知晓重排序源。本文描述了用于对存储器访问请求流重排序以建立局部性的处理器、装置和方法。一种方法的一个实施例包括:将多个执行单元生成的存储器访问请求存储在请求队列中,存储器访问请求包括用于访问存储器中的第一存储器页的第一请求和用于访问存储器中的第二存储器页的第二请求;维持唯一存储器页的列表,每个唯一存储器页与存储在请求队列中的一个或多个存储器访问请求相关联并且会被一个或多个存储器访问请求访问;从唯一存储器页的列表选择当前存储器页;以及在请求队列中的任何其他存储器访问请求被分派之前,将来自请求队列的与当前存储器页相关联的所有存储器访问请求分派到存储器。
Description
背景技术
在现代计算机系统中,对高存储器性能的需求持续增长。在用于在图形处理器单元(GPGPU)上执行诸如3D游戏、成像和感知计算以及通用计算之类的数据密集型工作负荷的图形处理器(GPU)中尤其如此。因此,现代GPU往往被设计为包括多个处理单元的大量数据并行计算引擎。随着每一代的GPU中的线程和数据流的数量增加,存储器效率在传递高存储器性能中变得更加关键。组合来自多个并发地运行的源的存储器访问请求的一个共同问题是存储器控制器接收的相邻的存储器访问请求之间的局部性的损失。不具有局部性通常意味着对存储器行的更多重复访问,这进而导致糟糕的存储器效率。
试图改善存储器效率的当前解决方案包括:1)添加更多DDR通道或更大的高速缓存以提供更高的带宽;2)增加存储器控制器待决队列;以及3)改善GPU内部的流专用的或知晓局部性的仲裁。然而,这些现有的解决方案中没有一个对于建立或维持到达存储器控制器的存储器请求流的局部性是有效的。例如,尽管以功率和管芯空间为代价添加更多DDR通道或更大的高速缓存增大了可用的存储器带宽,但是这样未解决局部性的损失,因为存储器访问请求之间的局部性没有恢复。关于增加存储器控制器内部的待决队列,尽管这允许在存储器通道接口处的更大的前向窗口以用于恢复局部性,但是这要求增加存储器访问请求的源与存储器之间的路径上的所有缓冲器的尺寸。由此,该解决方案远不够理想,因为相关联的功率和面积要求的增加可能是禁止的,更不用说其将具有对共享相同的非核和存储器控制器的其他组件(CPU、FPGA等)的性能的不利影响。对于在GPU内部改善流专用的和/或知晓局部性的仲裁,其性能的折衷对其带来的益处可能至多是可疑的,因为涉及管理来自在GPU的内部互连网络或结构内的多个仲裁点处的不同流和片的存储器访问请求的复杂度。
附图说明
随着通过在结合所附附图时参考以下具体实施方式使本发明的前述多个方面和许多伴随的优点变得更好地被理解,本发明的前述多个方面和许多伴随的优点将更容易领会,其中,遍及各个视图,除非另外指定,否则相同的附图标记指相同的部件:
图1示出根据现有技术如何将乱序存储器访问请求流存储在队列中;
图2示出本发明的实施例执行的对乱序存储器访问请求流的重排序;
图3是示出可以实现本发明的实施例的示例性硬件系统的高级视图的框图;
图4是示出实现存储器知晓重排序源(MARS)逻辑组件的核的示例性实施例的框图;
图5是示出MARS逻辑组件的示例性实施例的框图;
图6是根据本发明的实施例的请求队列和对应的请求队列占用映射的逻辑表示;
图7示出根据实施例的物理页列表(PhyPageList)的逻辑表示;
图8是物理页顺序队列(PhyPageOrderQ)的示例性实施例;
图9是示出根据实施例的用于实现MARS逻辑组件的缓冲逻辑的操作和逻辑的流程图;
图10是示出根据实施例的用于实现MARS逻辑组件的选择逻辑的操作和逻辑的流程图;
图11A是示出根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图;
图11B是示出根据本发明的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图;
图12是根据本发明的实施例的具有集成存储器控制器和图形器件的单核处理器和多核处理器的框图;
图13示出根据本发明的一个实施例的系统的框图;
图14示出根据本发明的实施例的第二系统的框图;
图15示出根据本发明的实施例的第三系统的框图;
图16示出根据本发明的实施例的芯片上系统(SoC)的框图;以及
图17示出根据本发明的实施例的、对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文描述了实现机制——存储器知晓重排序源(MARS)——以用于对存储器访问请求的重排序以恢复存储器局部性的处理器、装置和方法的实施例。在以下描述中,阐述了许多具体细节以提供对本发明的实施例的透彻理解。然而,本领域技术人员将认识到,可不利用特定的细节中的一个或多个或利用其他方法、部件、材料等来实践本发明。在其他实例中,未详细地示出或描述公知的结构、材料或操作以避免使本发明的多个方面模糊。
贯穿本说明书,对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定指的是同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。为了清晰起见,可以附图中部件的标签而不是以特定的附图标记来引用本文中附图中的各个部件。
存储器局部性,或简称局部性,指代未来存储器访问接近过去存储器访问的原理。存储器层次结构,以及存储器控制器,被设计为通过希望重新使用最近被访问的存储器页以快速地满足后续的存储器访问请求而无需重复对存储器行的调用来高速缓存最近被访问的存储器页以利用局部性。因此,访问与先前的存储器访问请求相同或类似位置的存储器访问请求比不这样做的存储器访问请求快得多地执行。由此,通过基于存储器访问请求访问的存储器位置(即,存储器页)对存储器访问请求分组来保留或建立局部性可以显著地提高存储器效率和带宽。现代计算系统利用的多流执行模型往往生成访问不同存储器页的多种存储器访问请求。这在采用设计为传递高吞吐量图形性能的高度并行核的强大的图形处理单元(GPU)中尤其明显。
典型的GPU包括具有多个层级的流专用的高速缓存(即,第1级(L1)和第2级(L2)高速缓存)以及共享的第3级(L3)高速缓存的多个处理元件或执行单元(EU)(例如,图11B的执行硬件1162)。每个EU能够运行6-7个可以同时对多个独立的图形流操作的SIMD(单输入多数据)线程。存储器接口充当要被引导朝向存储器的所有存储器访问请求(例如,读/写访问)的收敛点。在操作中,源自GPU中的EU和高速缓存的存储器访问请求在到达存储器接口之前穿过GPU内的多个层级的仲裁。存储器接口在先进先出(FIFO)缓冲器(有时被称为超级队列(SuperQ))中缓冲所接收的请求。存储器接口然后基于信用流接口将这些经缓冲的请求转发到非核中的存储器控制器。沿途的每个仲裁合并来自不同源(即不同EU或线程)的通信量,这导致高度分散的存储器访问请求流到达存储器接口。这意味着超级队列中的相邻的存储器访问请求之间的局部性很可能丢失。
为了解决这个问题,本发明的方面在乱序存储器访问请求被分派到存储器之前通过基于与每个请求相关联的存储器页对乱序存储器访问请求重排序来重新建立局部性。本发明的一个方面引入称为存储器知晓重排序源(Memory Aware Reordered Source)(MARS)的机制。有两个涉及实现MARS的关键操作。第一个关键操作是对GPU内的多个EU或线程生成的存储器访问请求的缓冲和组织。第二个关键操作是对要从GPU分派到存储器的存储器访问请求的选择。这两个操作的组合使得MARS能建立前向(lookahead)窗口以观察乱序存储器访问请求流内的局部性,并且然后在这些请求被提交到非核中的存储器/存储器控制器之前,通过选择性地将这些请求分派到超级队列来将这些请求重排序。利用MARS,在多个执行单元与超级队列之间添加请求队列。请求队列的关键目的是缓冲足够的存储器访问请求以提供大的前向窗口用于捕捉和建立经缓冲的存储器访问请求内的局部性。根据实施例,请求队列可以是任何尺寸,因为与超级队列不同,请求队列不被存储器通道的尺寸和/或存储器控制器中的缓冲器的尺寸约束。在一个实施例中,请求队列的尺寸比超级队列大,从而可以提供更大的前向窗口。
图1和2提供对照现有技术和MARS的简化图示。在图1中,其示出典型的GPU中的请求流,执行单元1-3(EU1–EU3)各自生成在超级队列中缓冲的多个存储器访问请求。可以通过不同执行单元在不同时间执行不同线程来生成这些存储器访问请求。这通常导致到达超级队列的请求流中的一个请求访问与下一请求要访问的存储器页不同的存储器页。例如,超级队列102中的第一经缓冲的存储器访问请求102由EU1生成以访问存储器页P1。第二经缓冲的存储器访问请求104由EU2生成以访问不同的存储器页P2。第三经缓冲的存储器访问请求106也由EU1生成以访问存储器页P1。因为每个请求试图访问与其之前的请求访问的存储器页不同的存储器页,所以存在到达超级队列的连续存储器访问请求之间的局部性的损失。相比之下,图2示出在存储器访问请求被缓冲到超级队列(SuperQ)中之前由MARS处理的相同的存储器访问请求流。MARS内的缓冲逻辑(未示出)首先将存储器访问请求缓冲到请求队列(RequestQ)中。然后,选择逻辑(未示出)基于每个请求试图访问的存储器页来选择性地分派来自请求队列的请求。例如,将请求202和206从请求队列分派到超级队列中,因为它们均试图访问或被映射到存储器页P1。相比之下,不分派请求204,因为它试图访问存储器页P2。下文将进一步详述在确定是否分派来自请求队列的请求中选择使用哪个存储器页。将来自请求队列的经分派的请求按照它们被分派的顺序存储在超级队列中。最终结果是超级队列中的重排序的存储器访问请求流,其中试图访问相同的存储器页的请求被分组到一起。由此重新建立连续存储器访问请求之间的局部性。从此,将超级队列中的重排序的请求按照与它们被存储的顺序相同的顺序分派到存储器。
根据实施例,为了组织请求队列中的经缓冲的存储器访问请求,将物理页列表(PhyPageList)实现为MARS的一部分以跟踪请求队列中的存储器访问请求要访问或映射的多个唯一的物理存储器页。在一个实施例中,物理页列表是集合关联结构,并且列表中的每个条目由它们相应页的物理页编号索引。这些条目相应的来自请求队列的映射到物理页的存储器访问请求的列表也存储在条目中。根据实施例,链表用于高效地存储或跟踪每个物理页的存储器访问请求的列表。具体地,物理页列表中的每个条目包括头指针,头指针引用请求队列中的包括请求队列的列表上的第一存储器访问请求的条目。请求队列中的该头条目进而包括引用请求队列条目中的包括请求队列的列表上的下一存储器访问请求的另一条目的指针。根据实施例,基于每个物理页相应列表中的存储器访问请求被添加到列表的顺序,按时序排序或布置存储器访问请求。如此组织,物理页列表中的每个物理页条目只需要跟踪或引用请求队列中的它们相应的存储器访问请求的列表的头和尾条目。根据实施例,头指针引用的存储器访问请求是列表中的最旧请求,而尾指针引用的存储器访问请求是最新请求。在另一实施例中,情况相反。可以通过物理页列表来引用访问映射到特定物理页的所有存储器访问请求而不需要高速缓存访问存储器(CAM)查找。
在一个实施例中,请求队列实现为乱序缓冲器,其中可以将存储器访问请求插入到请求队列中的任何空隙并且可以从请求队列中的任何空隙提取存储器访问请求。为了更高效地找到请求队列中的空的空隙以用于插入新的存储器访问请求,可以实现请求队列占用映射。根据实施例,请求队列占用映射是位向量,其中每个位与请求队列中的特定空隙对应。位值1将指示请求队列中的对应空隙被占用,而位值0将指示对应空隙是可用的。
为了将全部访问相同物理存储器页的存储器访问请求从请求队列一起(即,背靠背(back-to-back))发送到存储器,首先选择物理存储器页。在一个实施例中,如果物理页具有请求队列中的最旧的存储器访问请求映射到该物理页,则选择该物理页。根据实施例,请求队列中的最旧的存储器访问请求是最早被插入到请求队列中的存储器访问请求。为了长期地跟踪哪个物理页包括最旧的存储器访问请求,利用先进先出(FIFO)物理页顺序队列(PhyPageOrderQ)。无论何时在物理页列表中创建新条目,将包括新的物理页列表条目的物理页编号的对应条目插入到物理页顺序队列中。由此,物理页顺序队列中的第一条目将始终是具有最旧的存储器访问请求的物理页列表。这避免当已经耗尽与当前物理页列表相关联的存储器访问请求时浪费时间搜索新的物理页。
图3是示出可以实现本发明的实施例的示例性硬件系统的高级视图的框图。硬件系统300包括一个或多个核302、存储器控制器304和存储器306。高速互连308连接一个或多个核302与存储器控制器304。存储器控制器通过处理来自核302的存储器访问请求并对其作出响应来控制对存储器306的访问。存储器306通常指示系统的主存储器或随机存取存储器(RAM)。动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)是这种存储器的示例。在一个实施例中,存储器控制器304和存储器306位于非核中或者是非核的一部分。根据本发明的实施例,核302可以是对多个处理流操作的任何知识产权(IP)并且由于IP不能控制或维持退出IP的存储器访问请求流中的局部性而遭受存储器低效。核的一个实施例包括诸如中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)等的芯片上系统(SoC)。硬件系统300可以包括未示出以避免使本发明的方面模糊和/或复杂的其他组件。
图4是示出核的示例性实施例的框图。根据实施例,核302是包括多个执行单元(EU)的高功率GPU,多个执行单元诸如EU 1到N 404-1–404-N。此外,每个EU 404-1–404-N与其相应的高速缓存相关联。该高速缓存可以是单层级L1高速缓存或多层级L1/L2高速缓存(例如,L1/L2高速缓存406-1–406-N)。在一些实施例中,还可以实现附加层级的高速缓存。在图4中,核302进一步包括共享高速缓存(即,L3高速缓存420)、MARS逻辑组件412和存储器接口组件414。存储器接口组件414用作核与非核之间的网关。在一些实施例中,可以将MARS逻辑组件412和存储器接口组件414一起实现为单个单元。高速互连408提供核内的多个组件之间的连接。互连408可以是单个连接(例如,环)或可以包括若干分开的(即,点对点)连接。
如下文将进一步详述的,MARS逻辑组件412包括或通信地耦合到请求队列(RequestQ)416和待决队列(PendingQ)418。在一些实施例中,可以存在多个请求队列和/或待决队列。请求队列416是用于存储EU生成的以存储器为目的的存储器访问请求的乱序缓冲器。另一方面,待决队列418是用于当物理页列表或请求队列已满时存储溢出的存储器访问请求的有序缓冲器。存储器接口414包括或耦合到超级队列(SuperQ)420。超级队列420是用于存储由MARS逻辑组件412从请求队列416分派的存储器访问请求的有序缓冲器。超级队列420中的存储器访问请求会被根据它们被接收的顺序从核302通过存储器接口414发送到存储器控制器306。尽管如图4所示,请求队列416和待决队列418与MARS逻辑组件412分开,但是在一些实施例中,这些队列中的一个或两个可以实现为MARS逻辑组件412的一部分。相同的情况应用到超级队列420,该队列可以实现为存储器接口组件414的一部分,而不是与存储器接口414分开。从核302发送到存储器306的所有存储器访问请求必须首先被发送到MARS逻辑组件412以在请求队列416或待决队列418中被缓冲。MARS逻辑组件然后选择性地将经缓冲的存储器访问请求从请求队列416发送到超级队列420。存储器接口414然后将要被处理的请求从超级队列420发送到存储器控制器304。
图5是示出MARS逻辑组件412的示例性实施例的框图。根据实施例,MARS逻辑组件412是存储器访问硬件(例如,图11B的存储器访问硬件1164)内的电路。MARS逻辑组件412包括缓冲逻辑502、待决队列(pendingQ)504、请求队列(RequestQ)506、请求队列占用映射(RequestQ OM)508、物理页列表(PhyPageList)510、物理页顺序队列(PhyPageOrderQ)512以及选择逻辑514。缓冲逻辑502通信地耦合到待决队列504、请求队列506、请求队列占用映射508、物理页列表510和物理页顺序队列512。选择逻辑通信地耦合到请求队列506、物理页列表510和物理页顺序队列512。
图6是根据本发明的实施例的请求队列和对应的请求队列占用映射的逻辑表示。请求队列(RequestQ)602是MARS逻辑组件(例如,图4的412)管理的用于存储核(例如,图4的302)的多个EU(例如,图4的404)生成的存储器访问请求(MemReqs)的乱序缓冲器。在图6中,请求队列602的尺寸为N或深度为N,这意味着请求队列602能够存储或缓冲N个存储器访问请求(即,MemReq 1到MemReq N)。请求队列的尺寸确定用于捕捉和建立所接收的存储器访问请求中的局部性的前向窗口的尺寸。在一个实施例中,请求队列能够存储512个存储器访问请求(即,N=512)。作为乱序缓冲器,可以按照任何顺序将请求队列中的条目(即,MemReq1到MemReq N)插入到任何空隙中和从任何空隙提取请求队列中的条目。请求队列可以实现为链表、数组或任何其他合适的数据结构。根据实施例,每个请求队列条目包括存储器访问请求分组604、下一指针(RequestQ_下一指针)606和有效位608。存储器访问请求分组604是接收自EU的实际存储器访问请求。下一指针606指向另一请求队列条目,该条目存储映射到与当前条目映射到的存储器页相同的存储器页的后续接收到的存储器访问请求。有效位608指示条目当前被占用还是可用于存储新的存储器访问请求。在示例性实施例中,请求分组604包括P个位,下一指针606具有log2(N)个位,并且有效位占用1位。因此该实施例中的每个请求队列条目的尺寸为P+log2(N)+1位。
在至少一些实施例中,请求队列占用映射610实现为提供对每个请求队列条目的用于存储新的存储器访问请求的可用性的快速引用。请求队列占用映射610的尺寸与请求队列的尺寸对应。请求队列中的每个条目由请求队列占用映射610中的对应位表示。在一个实施例中,包括N个条目的请求队列的请求队列占用映射为N位。根据实施例,如果请求队列中的对应空隙被占用,则请求队列占用映射610中的位设置为1。如果对应空隙可用于存储新的存储器访问请求,则相同位设置为0。在一些实施例中,情况相反。
图7示出根据实施例的物理页列表(PhyPageList)的逻辑表示。物理页列表中的每个条目与存储器中的唯一物理页对应并且用于存储关于当前存储在请求队列中的映射到该唯一物理页的存储器访问请求的信息。在一个实施例中,物理页列表702实现为包括用于跟踪M个唯一页的M个条目的集合关联数据结构。根据实施例,每个物理页列表条目包括物理页编号字段(PhyPage#)704、头请求字段(头)706、尾请求字段(尾)708、计数字段710和有效位712。物理页编号字段704存储与物理页列表条目对应的物理页的页编号。头706和尾708请求字段各自存储到请求队列中的条目的索引。头请求字段706引用的请求队列中的条目包括映射到物理页的存储器访问请求的列表中的第一请求。尾请求字段708引用的条目包括映射到物理页的存储器访问请求的列表中的最后请求。计数字段710跟踪该列表中的请求的数量。有效位712指示该条目当前被占用还是可用于存储新的物理页。在示例性实施例中,物理页编号字段704约为13位,头和尾请求字段各自为log2(N)个位,计数字段710包括6位,并且有效位占用1位。根据该示例性实施例,每个物理页列表条目的总尺寸为20+2log2(N)位。
图8是物理页顺序队列(PhyPageOrderQ)的示例性实施例。物理页顺序队列802简单地为包括M个条目的先进先出(FIFO)缓冲器。根据实施例,物理页顺序队列802中的每个条目包括用于标识物理页列表(例如,图7的702)中的条目的物理页编号或索引。每当创建物理页列表中的条目时,将对应条目插入到物理页顺序队列802中。因为物理页顺序队列802是FIFO,所以基于物理页顺序队列802中的条目创建或插入到物理页顺序队列802中的顺序将条目时序地布置。由此,物理页顺序队列802中的第一条目将始终是相对于其他条目最早创建的条目。因此第一条目标识最旧的物理页。根据实施例,请求队列中的映射到最旧的物理页的存储器访问请求将是MARS逻辑组件412第一个选择和分派的存储器访问请求。当MARS逻辑组件412已经将与最旧的物理页相关联的所有存储器访问请求分派到存储器接口414时,物理页列表702中的最旧的物理页的对应条目也将被无效或删除。以类似的方式,物理页顺序队列802中的第一条目也将被无效或删除,并且物理页顺序队列802中的下一条目将用于标识所有剩余物理页中的最旧的物理页。
图9是示出根据实施例的用于实现MARS逻辑组件412的缓冲逻辑的操作和逻辑的流程图。对图9的讨论将引用图5的多个元件。在902处,MARS逻辑组件412的缓冲逻辑502通过输入516接收存储器访问请求。在一个实施例中,存储器访问请求由GPU中的执行单元或线程发送。在904处,在物理页列表(PPL)中执行搜索以确定是否存在与存储器访问请求映射到的物理页匹配的条目。伪代码的示例如下:
m=在PhyPageList中搜索PhysicalPage(R),
其中R=新接收到的存储器访问请求。
如果在物理页列表中找到包括匹配的物理页的条目,则在906处将所接收的存储器访问请求插入到请求队列中。以下是用于创建请求队列中的新条目的伪代码的示例:
n=<空的RequestQ空隙>
RequestQ[n].pkt=R
RequestQ[n].下一指针=NULL
在908处,更新物理页列表中的包括匹配的物理页的条目以说明请求队列中的新插入的存储器访问请求条目。以下是用于更新物理页列表条目的伪代码的示例:
PhyPageList[m].计数++
t=PhyPageList[m].尾
RequestQ[t].下一指针=n
PhyPageList[m].尾=n
在更新物理页列表之后,将存储器访问请求插入到请求队列的操作完成。
回到904,如果在物理页列表中未找到包括匹配的物理页的条目,则在910处检查以查看物理页列表是否已满。如果物理页列表不是满的,则在912处将存储器访问请求插入到请求队列中。用于在请求队列中创建新条目的伪代码的示例如下:
n=<空的RequestQ空隙>
RequestQ[n].pkt=R
RequestQ[n].下一指针=NULL
然后在914处,将新条目添加到物理页列表。新的物理页列表条目包括关于存储器访问请求映射到的物理页的信息。以下是用于创建新的物理页列表条目的伪代码的示例:
PhyPageList[m].页编号=R.页编号
PhyPageList[m].计数=1
PhyPageList[m].头=n
PhyPageList[m].尾=n
在将新创建的物理页添加到物理页列表之后,更新物理页顺序队列(PPOQ)以说明新的物理页。在一个实施例中,将新的物理页添加到是FIFO的物理页顺序队列的末尾。在更新物理页顺序队列之后,将存储器访问请求插入到请求队列的操作完成。
回到910,如果物理页列表已满,则不可以创建新的物理页列表条目以添加存储器访问请求映射到的物理页。由此,将存储器访问请求存储在待决队列中以在当物理页列表中的空隙释放时的稍后时间处理。
图10是示出根据实施例的用于实现MARS逻辑组件412的选择逻辑的操作和逻辑的流程图。对图10的讨论将引用图4和5的多个元件。在1002处,选择逻辑514从物理页顺序队列(PPOQ)512获得当前物理页。在一个实施例中,物理页顺序队列512是FIFO缓冲器,并且将物理页顺序队列512中的第一条目引用的物理页选择为当前物理页。该物理页将被最旧的存储器访问请求映射。在1004处,定位映射到当前物理页的存储器访问请求的列表中的第一存储器访问请求。该存储器访问请求也是存储在请求队列中的所有存储器访问请求中的最旧的请求。根据实施例,当前物理页的头属性引用第一存储器访问请求。用于从映射到当前物理页的存储器访问请求的列表获得第一存储器访问请求的伪代码的示例如下:
当前PhyPage=PhyPage顺序.弹出_前
N=CurrPhyPage.头
在1006处,从请求队列删除第一存储器访问请求。根据实施例,从请求队列删除第一存储器访问请求意味着使包括第一存储器访问请求的请求队列条目无效。用于从请求队列删除第一存储器访问请求的伪代码的示例如下:
R=RequestQ[N]
CurrPhyPage.头=RequestQ[N].下一指针
RequestQ[N].有效=假
在1008处,将第一存储器访问请求发送到超级队列420以由存储器接口414分派到非核310中的存储器控制器304。在1010处,当前物理页的计数减1,因为已经将第一存储器访问请求分派到超级队列420。这可以简单地由伪代码完成:
CurrPhyPage.计数--
在1012处,检查当前物理页的计数。如果计数不为零,即指示在映射到当前物理页的存储器访问请求的列表中存在更多存储器访问请求,则选择逻辑514回到1004以定位要分派到超级队列420的下一存储器访问请求。然而,如果当前物理页的计数等于零,即指示没有剩余更多仍映射到当前物理页的存储器访问请求,则在1014处,将与当前物理页对应的条目从物理页列表510和物理页顺序队列512移除。接下来,在1016处,检查以查看物理页顺序队列512是否为空的。如果是,意味着不存在更多物理页,并且因此在请求队列中没有剩余更多要分派的存储器访问请求,则分派过程完成。然而,如果物理页顺序队列512不是空的,则选择逻辑514回到1002以从物理页顺序队列512获得新的物理页并且开始分派映射到新的物理页的存储器访问请求。
本发明的一个实施例是一种系统,包括存储器和处理器核。存储器和处理器彼此通信地耦合。处理器核进一步包括多个执行单元和存储器知晓重排序源(MARS)电路。执行单元中的每一个通信地耦合到MARS电路,从而MARS电路接收执行单元生成的所有存储器访问请求。所接收的存储器访问请求中的至少一些用于访问不同的存储器页,从而第一请求用于访问存储器中的第一存储器页并且第二请求用于访问存储器中的与第一存储器页不同的第二存储器页。MARS电路还维持唯一存储器页的列表。列表中的唯一存储器页中的每一个与存储在请求队列中的一个或多个存储器访问请求相关联并被这些存储器访问请求访问。MARS电路用于从唯一存储器页的列表选择当前存储器页并且用于在请求队列中的任何其他存储器访问请求被分派之前将来自请求队列的与当前存储器页相关联的所有存储器访问请求分派到存储器。本文中引用的存储器页可以是存储器中的物理存储器页。请求队列可以是乱序队列,从而可以将多个执行单元生成的存储器访问请求插入到请求队列中的任何空隙并且可以从请求队列中的任何空隙提取存储器访问请求。如果唯一存储器页的列表已满,则MARS电路可以在待决队列中缓冲多个执行单元生成的存储器访问请求。MARS电路可以时序地跟踪何时将每个唯一存储器页插入到唯一存储器页的列表中,从而如果在插入第二唯一存储器页之前将第一唯一存储器页插入到唯一存储器页的列表中,则第一唯一存储器页被视为比第二唯一存储器页更旧。MARS电路可以从唯一存储器页的列表选择最旧的唯一存储器页作为当前存储器页。当将与当前存储器页相关联的存储器访问请求分派到存储器时,MARS电路可以首先将请求发送到超级队列。在一些情形下,请求队列的尺寸大于超级队列。超级队列可以是MARS电路的一部分,或者其可以是通信地耦合到MARS电路和非核的存储器接口的一部分。
本发明的另一实施例是一种处理器,包括多个执行单元、请求队列和存储器知晓重排序源(MARS)电路。执行单元中的每一个通信地耦合到MARS电路,从而MARS电路接收执行单元生成的所有存储器访问请求。所接收的存储器访问请求中的至少一些用于访问不同的存储器页,从而第一请求用于访问存储器中的第一存储器页并且第二请求用于访问存储器中的与第一存储器页不同的第二存储器页。MARS电路还维持唯一存储器页的列表。列表中的唯一存储器页中的每一个与存储在请求队列中的一个或多个存储器访问请求相关联并被这些存储器访问请求访问。MARS电路用于从唯一存储器页的列表选择当前存储器页并且用于在请求队列中的任何其他存储器访问请求被分派之前将来自请求队列的与当前存储器页相关联的所有存储器访问请求分派到存储器。本文中引用的存储器页可以是存储器中的物理存储器页。请求队列可以是乱序队列,从而可以将多个执行单元生成的存储器访问请求插入到请求队列中的任何空隙并且可以从请求队列中的任何空隙提取存储器访问请求。如果唯一存储器页的列表已满,则MARS电路可以在待决队列中缓冲多个执行单元生成的存储器访问请求。MARS电路可以时序地跟踪何时将每个唯一存储器页插入到唯一存储器页的列表中,从而如果在插入第二唯一存储器页之前将第一唯一存储器页插入到唯一存储器页的列表中,则第一唯一存储器页被视为比第二唯一存储器页更旧。MARS电路可以从唯一存储器页的列表选择最旧的唯一存储器页作为当前存储器页。当将与当前存储器页相关联的存储器访问请求分派到存储器时,MARS电路可以首先将请求发送到超级队列。在一些情形下,请求队列的尺寸大于超级队列。超级队列可以是MARS电路的一部分,或者其可以是通信地耦合到MARS电路和非核的存储器接口的一部分。
本发明的另一实施例包括一种装置,其通信地耦合到处理器核的多个执行单元并且包括缓冲逻辑电路和选择逻辑电路。缓冲逻辑电路用于将多个执行单元生成的存储器访问请求存储在请求队列中。存储器访问请求包括用于访问存储器中的第一存储器页的第一请求和用于访问存储器中的第二存储器页的第二请求。缓冲逻辑电路还用于维持唯一存储器页的列表,其中每个唯一存储器页与存储在请求队列中的一个或多个存储器访问请求相关联。每个唯一存储器页还被这些一个或多个存储器访问请求访问。另一方面,选择逻辑电路用于从唯一存储器页的列表选择当前存储器页并且用于在请求队列中的任何其他存储器访问请求被分派之前将来自请求队列的与当前存储器页相关联的所有存储器访问请求分派到存储器。本文中引用的存储器页可以是存储器中的物理存储器页。请求队列可以是乱序队列,从而可以将多个执行单元生成的存储器访问请求插入到请求队列中的任何空隙并且可以从请求队列中的任何空隙提取存储器访问请求。如果唯一存储器页的列表已满,则缓冲逻辑电路可以在待决队列中缓冲多个执行单元生成的存储器访问请求。缓冲逻辑电路可以时序地跟踪何时将每个唯一存储器页插入到唯一存储器页的列表中,从而如果在插入第二唯一存储器页之前将第一唯一存储器页插入到唯一存储器页的列表中,则第一唯一存储器页被视为比第二唯一存储器页更旧。选择逻辑电路可以从唯一存储器页的列表选择最旧的唯一存储器页作为当前存储器页。当将与当前存储器页相关联的存储器访问请求分派到存储器时,选择逻辑电路可以首先将请求发送到超级队列。在一些情形下,请求队列的尺寸大于超级队列。超级队列可以是装置的一部分或者通信地耦合到装置和非核的存储器接口的一部分。
本发明的又一实施例是一种方法,包括将多个执行单元生成的存储器访问请求存储在请求队列中。这些存储器访问请求可以包括用于访问存储器中的第一存储器页的第一请求和用于访问存储器中的第二存储器页的第二请求。第一存储器页与第二存储器页不同。方法还可以包括维持唯一存储器页的列表,其中每个唯一存储器页与存储在请求队列中的一个或多个存储器访问请求相关联。每个唯一存储器页会被其相关联的存储器访问请求访问。方法可以进一步包括从唯一存储器页的列表选择当前存储器页并且在请求队列中的任何其他存储器访问请求被分派之前将来自请求队列的与当前存储器页相关联的所有存储器访问请求分派到存储器。本文中引用的存储器页可以是存储器中的物理存储器页。请求队列可以是乱序队列,从而可以将多个执行单元生成的存储器访问请求插入到请求队列中的任何空隙并且可以从请求队列中的任何空隙提取存储器访问请求。如果唯一存储器页的列表已满,则方法可以进一步包括在待决队列中缓冲多个执行单元生成的存储器访问请求。方法还可以包括时序地跟踪何时将每个唯一存储器页插入到唯一存储器页的列表中,从而如果在插入第二唯一存储器页之前将第一唯一存储器页插入到唯一存储器页的列表中,则第一唯一存储器页比第二唯一存储器页更旧。可以从唯一存储器页的列表选择最旧的唯一存储器页作为当前存储器页。当将与当前存储器页相关联的存储器访问请求分派到存储器时,可以首先将请求发送到超级队列。在一些情形下,请求队列的尺寸大于超级队列。
图11A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线的框图。图11B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图11A-B中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、乱序发布/执行流水线和核。给定有序方面是乱序方面的子集的情况下,将描述乱序方面。
在图11A中,处理器流水线1100包括取出级1102、长度解码级1104、解码级1106、分配级1108、重命名级1110、调度(也称为分派或发布)级1112、寄存器读取/存储器读取级1114、执行级1116、写回/存储器写入级1118、异常处理级1122以及提交级1124。
图11B示出处理器核1190,其包括耦合至执行引擎硬件1150的前端硬件1130,该前端硬件和执行引擎硬件两者均耦合至存储器硬件1170。核1190可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核1190可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、或图形核等等。
前端硬件1130包括耦合到指令高速缓存硬件1134的分支预测硬件1132,该指令高速缓存硬件1134耦合到指令转换后备缓冲器(TLB)1136,该指令转换后备缓冲器1136耦合到指令取出硬件1138,指令取出硬件1138耦合到解码硬件1140。解码硬件1140(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码硬件1140可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1190包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码硬件1140中,或以其他方式在前端硬件1130内)。解码硬件1140耦合至执行引擎硬件1150中的重命名/分配器硬件1152。
执行引擎硬件1150包括重命名/分配器硬件1152,该重命名/分配器硬件1152耦合到引退硬件1154和一个或多个调度器硬件的集合1156。调度器硬件1156表示任意数量的不同调度器,包括预留站、中央指令窗口等。调度器硬件1156耦合到物理寄存器堆硬件1158。每个物理寄存器堆硬件1158表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器堆硬件1158包括向量寄存器硬件、写掩码寄存器硬件和标量寄存器硬件。这些寄存器硬件可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器堆硬件1158被引退硬件1154所覆盖,以示出可实现寄存器重命名和乱序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器堆、使用未来文件(future file)、历史缓冲器、引退寄存器堆、使用寄存器映射和寄存器池等等)。引退硬件1154和物理寄存器堆硬件1158耦合到执行群集1160。执行群集1160包括一个或多个执行硬件1162的集合和一个或多个存储器访问硬件1164的集合。执行硬件1162可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行硬件,但其他实施例可包括仅一个执行硬件或全部执行所有功能的多个执行硬件。调度器硬件1156、物理寄存器堆硬件1158和执行群集1160被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了多个单独流水线(例如,均具有各自调度器硬件、物理寄存器堆硬件和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线和/或存储器访问流水线;以及在单独的存储器访问流水线的情况下,某些实施例被实现为仅仅该流水线的执行群集具有存储器访问硬件1164)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问硬件的集合1164耦合至存储器硬件1170,该存储器硬件包括数据TLB硬件1172,该数据TLB硬件耦合至数据高速缓存硬件1174,该数据高速缓存硬件耦合至第二级(L2)高速缓存硬件1176。在一个示例性实施例中,存储器访问硬件1164可包括加载硬件、存储地址硬件和存储数据硬件,其中的每一个均耦合至存储器硬件1170中的数据TLB硬件1172。指令高速缓存硬件1134还耦合到存储器硬件1170中的第二级(L2)高速缓存硬件1176。L2高速缓存硬件1176耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
作为示例,示例性寄存器重命名的、乱序发布/执行核架构可以如下实现流水线1100:1)指令取出1138执行取出和长度解码级1102和1104;2)解码硬件1140执行解码级1106;3)重命名/分配器硬件1152执行分配级1108和重命名级1110;4)调度器硬件1156执行调度级1112;5)物理寄存器堆硬件1158和存储器硬件1170执行寄存器读取/存储器读取级1114;执行群集1160执行执行级1116;6)存储器硬件1170和物理寄存器堆硬件1158执行写回/存储器写入级1118;7)各硬件可牵涉到异常处理级1122;以及8)引退硬件1154和物理寄存器堆硬件1158执行提交级1124。
核1190可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核1190包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2和/或下文描述的一些形式的通用向量友好指令格式(U=0和/或U=1))的逻辑,从而使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存硬件1134/1174以及共享L2高速缓存硬件1176,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图12是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1200的框图。图12中的实线框示出具有单个核1202A、系统代理1210、一个或多个总线控制器硬件1216的集合的处理器1200,而虚线框的可选附加示出具有多个核1202A-N、系统代理硬件1210中的一个或多个集成存储器控制器硬件1214的集合以及专用逻辑1208的替代处理器1200。
因此,处理器1200的不同实现可包括:1)CPU,其中专用逻辑1208是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1202A-N是一个或多个通用核(例如,通用的有序核、通用的乱序核、这两者的组合);2)协处理器,其中核1202A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1202A-N是大量通用有序核。因此,处理器1200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1200可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个工艺技术中的任何一个技术将该处理器实现在一个或多个衬底上。
存储器层次结构包括核内的一个或多个层级的高速缓存、一组或一个或多个共享高速缓存硬件1206以及耦合到集成存储器控制器硬件1214的集合的外部存储器(未示出)。共享高速缓存硬件1206的集合可包括一个或多个中级高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。尽管在一个实施例中,基于环的互连硬件1212将集成图形逻辑1208、共享高速缓存硬件1206的集合以及系统代理硬件1210/集成存储器控制器硬件1214互连,但替代实施例可使用任何数量的公知技术来将这些硬件互连。在一个实施例中,在一个或多个高速缓存硬件1206与核1202A-N之间维持一致性。
在一些实施例中,核1202A-N中的一个或多个能够实现多线程。系统代理1210包括协调并操作核1202A-N的那些组件。系统代理硬件1210可包括例如功率控制单元(PCU)和显示硬件。PCU可以是对核1202A-N以及集成图形逻辑1208的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示硬件用于驱动一个或多个外部连接的显示器。
核1202A-N在架构指令集方面可以是同构的或异构的;即,这些核1202A-N中的两个或更多个核可能能够执行相同的指令集,而其它核可能能够执行该指令集的仅仅子集或不同的指令集。在一个实施例中,核1202A-N是异构的,并且包括下文所述的“小型”核和“大型”核两者。
图13-16是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其他执行逻辑的多个系统或电子设备一般都是合适的。
现在参考图13,所示出的是根据本发明一个实施例的系统1300的框图。系统1300可以包括一个或多个处理器1310、1315,这些处理器耦合到控制器中枢1320。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(GMCH)1390和输入/输出中枢(IOH)1350(其可以在分开的芯片上);GMCH 1390包括存储器和图形控制器,存储器1340和协处理器1345耦合到该存储器和图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合到GMCH1390。替代地,存储器和图形控制器中的一个或两个在处理器(如本文中所描述的)内集成,存储器1340和协处理器1345直接耦合到处理器1310、以及在单一芯片中具有IOH 1350的控制器中枢1320。
在图13中以虚线表示附加的处理器1315的可选的性质。每一处理器1310、1315可包括本文中描述的处理核中的一个或多个,并且可以是处理器1200的某一版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1320经由诸如前端总线(FSB)之类的多分支总线、点对点接口、或者类似的连接1395与处理器1310、1315进行通信。
在一个实施例中,协处理器1345是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器中枢1320可以包括集成图形加速器。
在物理资源1310、1315之间会存在包括架构、微架构、热、功耗特性等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1310将这些协处理器指令识别为应当由附连的协处理器1345执行的类型。因此,处理器1310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1345。协处理器1345接受并执行所接收的协处理器指令。
现在参见图14,所示是根据本发明的实施例的更具体的第一示例性系统1400的框图。如图14所示,多处理器系统1400是点对点互连系统,且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个都可以是处理器1200的某一版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和1480分别是处理器1310和协处理器1345。
处理器1470和1480被示为分别包括集成存储器控制器(IMC)硬件1472和1482。处理器1470还包括作为其总线控制器硬件的一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可以经由使用点对点(P-P)接口电路1478、1488的P-P接口1450来交换信息。如图14所示,IMC 1472和1482将处理器耦合到相应的存储器,即存储器1432和存储器1434,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1470、1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个P-P接口1452、1454与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组1490可经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图14所示,各种I/O设备1414可以连同总线桥1418被耦合至第一总线1416,总线桥1418将第一总线1416耦合至第二总线1420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)硬件)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1415耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。各种设备可耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1427以及存储硬件1428,诸如在一个实施例中可包括指令/代码和数据1430的盘驱动器或者其他大容量存储设备。此外,音频I/O 1424可以被耦合至第二总线1420。注意,其他架构是可能的。例如,代替图14的点对点架构,系统可以实现多分支总线或其它这类架构。
现在参考图15,所示为根据本发明的实施例的更具体的第二示例性系统1500的框图。图14和15中的相同部件用相同附图标记表示,并已从图15中省去了图14中的某些方面,以避免使图15的其他方面变得模糊。
图15示出处理器1470、1480可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器硬件并包括I/O控制逻辑。图15示出不仅存储器1432、1434耦合至CL 1472、1482,而且I/O设备1514也耦合至控制逻辑1472、1482。传统I/O设备1515被耦合至芯片组1490。
现在参照图16,所示出的是根据本发明的实施例的SoC 1600的框图。在图12中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可任选特征。在图16中,互连硬件1602被耦合至:应用处理器1610,其包括一个或多个核的集合1202A-N以及共享高速缓存硬件1206;系统代理硬件1210;总线控制器硬件1216;集成存储器控制器硬件1214;一个或多个协处理器的集合1620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)硬件1630;直接存储器存取(DMA)硬件1632;以及用于耦合至一个或多个外部显示器的显示硬件1640。在一个实施例中,协处理器1620包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如图14中示出的代码1430)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态的有形安排,其包括存储介质,诸如,硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图17是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图17示出可使用x86编译器1704来编译利用高级语言1702的程序,以生成可由具有至少一个x86指令集核的处理器1716原生执行的x86二进制代码1706。具有至少一个x86指令集核的处理器1716表示能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的本质部分,或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1704表示用于生成x86二进制代码1706(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1716上执行。类似地,图17示出可以使用替代的指令集编译器1708来编译利用高级语言1702的程序,以生成可以由不具有至少一个x86指令集核的处理器1714(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1710。指令转换器1712被用来将x86二进制代码1706转换成可以由不具有x86指令集核的处理器1714原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。由此,指令转换器1712通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1706的软件、固件、硬件或其组合。
虽然参考特定实现方式描述了一些实施例,但是根据一些实施例,其他实现方式也是可能的。另外,附图中所示的和/或本文中描述的元件或其他特征的布置和/或顺序不必以所示和所描述的特定方式来布置。根据一些实施例,许多其他布置是可能的。
在附图中示出的每一个系统中,在一些情况下的每个元件可具有相同或不同的附图标记以表明所表示的元件可能不同和/或类似。但是,元件可以足够灵活以具有不同的实现方式,并与本文所示或所述的一些或所有系统一起操作。附图中示出的各种元件可以是相同或不同的。将哪个称为第一元件以及将哪个称为第二元件是任意的。
在说明书和权利要求书中,可使用术语“耦合的”和“连接的”及其衍生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在特定实施例中,可以使用“连接的”来指示两个或更多个元件彼此直接物理和/或电接触。“耦合”可表示两个或更多个元件直接物理或电气接触。然而,“耦合的”也可意味着两个或更多个元件彼此并不直接接触,但是仍然彼此协作或相互作用。
实施例是本发明的实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用表示结合这些实施例描述的特定的特征、结构或特性被包括在本发明的至少一些实施例中,而不一定在所有的实施例中。各处出现的“实施例”、“一个实施例”或“一些实施例”不一定都指相同的实施例。
并非本文中描述和示出的所有部件、特征、结构、特性等都需要被包括在特定的一个或多个实施例中。例如,如果说明书陈述“可”、“可能”、“能”或“能够”包括部件、特征、结构或特性,则不一定包括该特定的部件、特征、结构或特性。如果说明书或权利要求书提到“一”或“一个”元件,则这并不意味着仅有一个该元件。如果说明书或权利要求书引用“附加的”元件,则不排除有多于一个的该附加的元件。
上文对本发明的所示出的本发明的各实施例的描述(包括在摘要中描述的内容)不旨在是详尽的,也不旨在将本发明限于所公开的精确形式。尽管为了说明,本文中描述了本发明的具体实施例以及示例,但是,如相关领域技术人员所理解,在本发明的范围内,各种等效的修改是可能的。
可以根据上面的具体实施方式对本发明进行这些修改。所附权利要求书中所使用的术语不应该被理解为将本发明限制于说明书和附图中所公开的特定实施例。相反,本发明的范围完全由所附权利要求书来确定,权利要求书根据权利要求解释的既定原则来解释。
Claims (28)
1.一种处理器,包括:
多个执行单元;
请求队列;以及
存储器知晓重排序源(MARS)电路,耦合到所述多个执行单元,所述MARS电路用于:
将所述多个执行单元生成的存储器访问请求存储在所述请求队列中,所述存储器访问请求包括用于访问存储器中的第一存储器页的第一请求和用于访问所述存储器中的第二存储器页的第二请求;
维持唯一存储器页的列表,每个唯一存储器页与存储在所述请求队列中的一个或多个存储器访问请求相关联并且会被所述一个或多个存储器访问请求访问;
从所述唯一存储器页的列表选择当前存储器页;以及
在所述请求队列中的任何其他存储器访问请求被分派之前,将来自所述请求队列的与所述当前存储器页相关联的所有存储器访问请求分派到所述存储器。
2.如权利要求1所述的处理器,其特征在于,每个存储器页是所述存储器中的物理存储器页。
3.如权利要求1-2中的任一项所述的处理器,其特征在于,所述请求队列是乱序队列,从而可以将所述多个执行单元生成的存储器访问请求插入到所述请求队列中的任何空隙并且可以从所述请求队列中的任何空隙提取所述存储器访问请求。
4.如权利要求1-2中的任一项所述的处理器,其特征在于,所述MARS电路用于:如果所述唯一存储器页的列表已满,则在待决队列中缓冲所述多个执行单元生成的存储器访问请求。
5.如权利要求1-2中的任一项所述的处理器,其特征在于,所述MARS电路用于时序地跟踪何时将每个唯一存储器页插入到所述唯一存储器页的列表中,其中如果在插入第二唯一存储器页之前将第一唯一存储器页插入到所述唯一存储器页的列表中,则所述第一唯一存储器页比所述第二唯一存储器页更旧。
6.如权利要求1-2中的任一项所述的处理器,其特征在于,所述当前存储器页是所述唯一存储器页的列表中的所有唯一存储器页中最旧的。
7.如权利要求1-2中的任一项所述的处理器,其特征在于,将来自所述请求队列的与所述当前存储器页相关联的所有存储器访问请求分派到所述存储器的步骤包括:首先将与所述当前存储器页相关联的所有存储器访问请求发送到超级队列。
8.如权利要求7所述的处理器,其特征在于,所述请求队列的尺寸大于所述超级队列。
9.如权利要求8所述的处理器,其特征在于,所述超级队列是所述MARS电路的一部分。
10.如权利要求8所述的处理器,其特征在于,所述超级队列是存储器接口的一部分,其中所述存储器接口耦合到所述MARS电路和非核。
11.一种装置,耦合到处理器核的多个执行单元,所述装置包括:
缓冲逻辑电路,用于:
将所述多个执行单元生成的存储器访问请求存储在请求队列中,所述存储器访问请求包括用于访问存储器中的第一存储器页的第一请求和用于访问所述存储器中的第二存储器页的第二请求;以及
维持唯一存储器页的列表,每个唯一存储器页与存储在所述请求队列中的一个或多个存储器访问请求相关联并且会被所述一个或多个存储器访问请求访问;以及
选择逻辑电路,用于:
从所述唯一存储器页的列表选择当前存储器页;以及
在所述请求队列中的任何其他存储器访问请求被分派之前,将来自所述请求队列的与所述当前存储器页相关联的所有存储器访问请求分派到所述存储器。
12.如权利要求11所述的装置,其特征在于,每个存储器页是所述存储器中的物理存储器页。
13.如权利要求11-12中的任一项所述的装置,其特征在于,所述请求队列是乱序队列,从而可以将所述多个执行单元生成的存储器访问请求插入到所述请求队列中的任何空隙并且可以从所述请求队列中的任何空隙提取所述存储器访问请求。
14.如权利要求11-12中的任一项所述的装置,其特征在于,所述缓冲逻辑电路用于:如果所述唯一存储器页的列表已满,则在待决队列中缓冲所述多个执行单元生成的存储器访问请求。
15.如权利要求11-12中的任一项所述的装置,其特征在于,所述缓冲逻辑电路用于时序地跟踪何时将每个唯一存储器页插入到所述唯一存储器页的列表中,其中如果在插入第二唯一存储器页之前将第一唯一存储器页插入到所述唯一存储器页的列表中,则所述第一唯一存储器页比所述第二唯一存储器页更旧。
16.如权利要求11-12中的任一项所述的装置,其特征在于,所述当前存储器页是所述唯一存储器页的列表中的所有唯一存储器页中最旧的。
17.如权利要求11-12中的任一项所述的装置,其特征在于,将来自所述请求队列的与所述当前存储器页相关联的所有存储器访问请求分派到所述存储器的步骤包括:首先将与所述当前存储器页相关联的所有存储器访问请求发送到超级队列。
18.如权利要求17所述的装置,其特征在于,所述请求队列的尺寸大于所述超级队列。
19.如权利要求18所述的装置,其特征在于,所述超级队列是所述装置的一部分。
20.如权利要求18所述的装置,其特征在于,所述超级队列是存储器接口的一部分,其中所述存储器接口耦合到所述装置和非核。
21.一种方法,包括:
将多个执行单元生成的存储器访问请求存储在请求队列中,所述存储器访问请求包括用于访问存储器中的第一存储器页的第一请求和用于访问所述存储器中的第二存储器页的第二请求;
维持唯一存储器页的列表,每个唯一存储器页与存储在所述请求队列中的一个或多个存储器访问请求相关联并且会被所述一个或多个存储器访问请求访问;
从所述唯一存储器页的列表选择当前存储器页;以及
在所述请求队列中的任何其他存储器访问请求被分派之前,将来自所述请求队列的与所述当前存储器页相关联的所有存储器访问请求分派到所述存储器。
22.如权利要求21所述的方法,其特征在于,每个存储器页是所述存储器中的物理存储器页。
23.如权利要求21-22中的任一项所述的方法,其特征在于,所述请求队列是乱序队列,从而可以将所述多个执行单元生成的存储器访问请求插入到所述请求队列中的任何空隙并且可以从所述请求队列中的任何空隙提取所述存储器访问请求。
24.如权利要求21-22中的任一项所述的方法,其特征在于,进一步包括:如果所述唯一存储器页的列表已满,则在待决队列中缓冲所述多个执行单元生成的存储器访问请求。
25.如权利要求21-22中的任一项所述的方法,其特征在于,进一步包括:时序地跟踪何时将每个唯一存储器页插入到所述唯一存储器页的列表中,其中如果在插入第二唯一存储器页之前将第一唯一存储器页插入到所述唯一存储器页的列表中,则所述第一唯一存储器页比所述第二唯一存储器页更旧。
26.如权利要求21-22中的任一项所述的方法,其特征在于,所述当前存储器页是所述唯一存储器页的列表中的所有唯一存储器页中最旧的。
27.如权利要求21-22中的任一项所述的方法,其特征在于,将来自所述请求队列的与所述当前存储器页相关联的所有存储器访问请求分派到所述存储器的步骤包括:首先将与所述当前存储器页相关联的所有存储器访问请求发送到超级队列。
28.如权利要求27所述的方法,其特征在于,所述请求队列的尺寸大于所述超级队列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/392,638 | 2016-12-28 | ||
US15/392,638 US10866902B2 (en) | 2016-12-28 | 2016-12-28 | Memory aware reordered source |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108257078A CN108257078A (zh) | 2018-07-06 |
CN108257078B true CN108257078B (zh) | 2023-12-05 |
Family
ID=62625744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711293325.3A Active CN108257078B (zh) | 2016-12-28 | 2017-12-08 | 存储器知晓重排序源 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10866902B2 (zh) |
CN (1) | CN108257078B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11003459B2 (en) * | 2013-03-15 | 2021-05-11 | Intel Corporation | Method for implementing a line speed interconnect structure |
US11144457B2 (en) * | 2018-02-22 | 2021-10-12 | Netspeed Systems, Inc. | Enhanced page locality in network-on-chip (NoC) architectures |
CN108881917B (zh) * | 2018-07-27 | 2019-12-03 | 西安电子科技大学 | 基于高速实时解码平台的并行解码快速排序方法 |
US11609899B2 (en) * | 2020-07-16 | 2023-03-21 | Nvidia Corporation | Concurrent hash map updates |
CN116685958A (zh) * | 2021-05-27 | 2023-09-01 | 华为技术有限公司 | 一种访问数据的方法和装置 |
US11925860B2 (en) * | 2021-06-09 | 2024-03-12 | Nvidia Corporation | Projective hash maps |
US11755246B2 (en) | 2021-06-24 | 2023-09-12 | Advanced Micro Devices, Inc. | Efficient rank switching in multi-rank memory controller |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962563A (ja) * | 1995-08-28 | 1997-03-07 | Hitachi Ltd | 共有メモリシステム、並列型処理装置並びにメモリlsi |
GB201409963D0 (en) * | 2014-06-05 | 2014-07-16 | Advanced Risc Mach Ltd | Dynamic cache allocation policy adaptation in a data processing apparatus |
WO2014120215A1 (en) * | 2013-01-31 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Adaptive granularity row-buffer cache |
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
TW201633153A (zh) * | 2014-10-21 | 2016-09-16 | 英特爾股份有限公司 | 具有獨立的使用者和監管者域的記憶體保護鑰結構 |
TW201640354A (zh) * | 2014-12-23 | 2016-11-16 | 英特爾股份有限公司 | 用於分頁表走查位元交換之指令和邏輯 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785893B2 (en) * | 2000-11-30 | 2004-08-31 | Microsoft Corporation | Operating system event tracker having separate storage for interrupt and non-interrupt events and flushing the third memory when timeout and memory full occur |
US20080126641A1 (en) * | 2006-08-31 | 2008-05-29 | Irish John D | Methods and Apparatus for Combining Commands Prior to Issuing the Commands on a Bus |
TWI385529B (zh) * | 2008-07-22 | 2013-02-11 | Realtek Semiconductor Corp | 匯流排系統以及其操作方法 |
US8775762B2 (en) * | 2012-05-07 | 2014-07-08 | Advanced Micro Devices, Inc. | Method and apparatus for batching memory requests |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US9183161B2 (en) * | 2012-12-28 | 2015-11-10 | Intel Corporation | Apparatus and method for page walk extension for enhanced security checks |
US9405672B2 (en) * | 2013-06-25 | 2016-08-02 | Seagate Technology Llc | Map recycling acceleration |
US9891936B2 (en) * | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US10158712B2 (en) * | 2015-06-04 | 2018-12-18 | Advanced Micro Devices, Inc. | Source-side resource request network admission control |
CN106528450B (zh) * | 2016-10-27 | 2019-09-17 | 上海兆芯集成电路有限公司 | 数据预先提取方法及使用此方法的装置 |
-
2016
- 2016-12-28 US US15/392,638 patent/US10866902B2/en active Active
-
2017
- 2017-12-08 CN CN201711293325.3A patent/CN108257078B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962563A (ja) * | 1995-08-28 | 1997-03-07 | Hitachi Ltd | 共有メモリシステム、並列型処理装置並びにメモリlsi |
CN104583959A (zh) * | 2012-09-25 | 2015-04-29 | 英特尔公司 | 允许处理器资源的虚拟化 |
WO2014120215A1 (en) * | 2013-01-31 | 2014-08-07 | Hewlett-Packard Development Company, L.P. | Adaptive granularity row-buffer cache |
GB201409963D0 (en) * | 2014-06-05 | 2014-07-16 | Advanced Risc Mach Ltd | Dynamic cache allocation policy adaptation in a data processing apparatus |
TW201633153A (zh) * | 2014-10-21 | 2016-09-16 | 英特爾股份有限公司 | 具有獨立的使用者和監管者域的記憶體保護鑰結構 |
TW201640354A (zh) * | 2014-12-23 | 2016-11-16 | 英特爾股份有限公司 | 用於分頁表走查位元交換之指令和邏輯 |
Non-Patent Citations (1)
Title |
---|
面向实时流处理的多核多线程处理器访存队列;田杭沛等;《计算机研究与发展》;20091015(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US10866902B2 (en) | 2020-12-15 |
US20180181329A1 (en) | 2018-06-28 |
CN108257078A (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108257078B (zh) | 存储器知晓重排序源 | |
US8997103B2 (en) | N-way memory barrier operation coalescing | |
JP5945291B2 (ja) | デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置 | |
CN107003837B (zh) | 用于推测性编译器优化的轻量级受限事务存储器 | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
CN109062608B (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
US8619087B2 (en) | Inter-shader attribute buffer optimization | |
US20110078692A1 (en) | Coalescing memory barrier operations across multiple parallel threads | |
US9448803B2 (en) | System and method for hardware scheduling of conditional barriers and impatient barriers | |
US8930636B2 (en) | Relaxed coherency between different caches | |
US8539130B2 (en) | Virtual channels for effective packet transfer | |
US12073251B2 (en) | Offloading computations from a processor to remote execution logic | |
JP2017107579A (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
US9798543B2 (en) | Fast mapping table register file allocation algorithm for SIMT processors | |
US9626191B2 (en) | Shaped register file reads | |
US7743223B2 (en) | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system | |
CN111752616A (zh) | 用于符号存储地址生成的系统、装置和方法 | |
US11500779B1 (en) | Vector prefetching for computing systems | |
US20130212364A1 (en) | Pre-scheduled replays of divergent operations | |
US20130152093A1 (en) | Multi-Channel Time Slice Groups | |
US8570916B1 (en) | Just in time distributed transaction crediting | |
US9734072B2 (en) | Main memory prefetch operation and multiple prefetch operation | |
US20140229677A1 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
CN109564510B (zh) | 用于在地址生成时间分配加载和存储队列的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |