CN114661357A - 用于在处理器中预取物理页的系统、装置和方法 - Google Patents
用于在处理器中预取物理页的系统、装置和方法 Download PDFInfo
- Publication number
- CN114661357A CN114661357A CN202111374725.3A CN202111374725A CN114661357A CN 114661357 A CN114661357 A CN 114661357A CN 202111374725 A CN202111374725 A CN 202111374725A CN 114661357 A CN114661357 A CN 114661357A
- Authority
- CN
- China
- Prior art keywords
- prefetch
- page
- hint
- processor
- request
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000015654 memory Effects 0.000 claims description 120
- 238000012545 processing Methods 0.000 claims description 16
- 238000003860 storage Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 22
- 230000007246 mechanism Effects 0.000 description 16
- 238000007667 floating Methods 0.000 description 10
- 229910003460 diamond Inorganic materials 0.000 description 8
- 239000010432 diamond Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 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
- 238000004242 micellar liquid chromatography Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/3802—Instruction prefetching
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及用于在处理器中预取物理页的系统、装置和方法。在一个实施例中,一种处理器包括:一个或多个执行电路,用于执行指令;流预测电路,与一个或多个执行电路相耦合,该流预测电路用于接收针对信息的需求请求,并且至少部分基于需求请求,来生成针对第一页的页预取提示;以及预取器电路,用于生成第一预取请求,每个第一预取请求针对一缓存线,流预测电路与预取器电路解耦。描述和要求保护了其他实施例。
Description
技术领域
实施例涉及处理器电路,更具体而言,涉及用于从存储器层次体系中预取信息的预取电路。
背景技术
在处理器中,核心通常包括执行电路,以使用数据来执行指令。在一些场景中,可从存储器层次体系获得这个数据。当特定指令的数据不可用时,就会向存储器层次体系请求该数据。在这种情形中,当数据不可用时,就会发出所谓的需求请求来获得数据。除了这种需求请求以外,现代处理器通常还包括预取电路,以便在数据可能被执行电路使用之前提前获得该数据。虽然这种预取可以减少时延并且提高性能,但是传统的预取实现方式可能会受到带宽和容量问题的影响。
发明内容
根据本公开的一个实施例,提供了一种用于生成预取请求的处理器,包括:一个或多个执行电路,用于执行指令;流预测电路,与所述一个或多个执行电路相耦合,所述流预测电路用于接收针对信息的需求请求,并且至少部分基于所述需求请求,来生成针对第一页的页预取提示;以及预取器电路,用于生成第一预取请求,每个第一预取请求针对一缓存线,所述流预测电路与所述预取器电路解耦。
根据本公开的另一个实施例,提供了一种用于发送预取请求的方法,包括:在处理器的第二缓存存储器中接收来自所述处理器的第一缓存存储器的页预取提示;为所述页预取提示分配页预取检测器;在所述页预取检测器中基于所述页预取提示来生成多个第一预取请求;并且在耦合在所述第二缓存存储器和所述处理器的共享缓存存储器之间的互连的可用槽位中,将所述多个第一预取请求发送到所述共享缓存存储器。
根据本公开的另一个实施例,提供了至少一种计算机可读存储介质,在其上存储有指令,所述指令在由机器执行时,使得所述机器执行上述方法。
根据本公开的另一个实施例,提供了一种用于处理预取请求的系统,包括:片上系统(SoC),包括:一个或多个执行电路,用于执行指令;第一缓存存储器,与所述一个或多个执行电路相耦合,所述第一缓存存储器包括流预测电路,所述流预测电路用于接收针对第一页中的信息的需求请求,并且至少部分基于所述需求请求,来生成针对第二页的页预取提示;以及第二缓存存储器,与所述第一缓存存储器相耦合,所述第二缓存存储器包括:第一预取电路,用于生成第一预取请求;以及页预取电路,用于基于所述页预取提示来生成第二预取请求,其中,所述页预取电路与所述第一预取电路解耦;以及系统存储器,与所述SoC相耦合,其中,所述系统存储器用于响应于所述第一预取请求而从所述第一页向所述SoC发送第一信息,并且响应于所述第二预取请求而从所述第二页向所述SoC发送第二信息。
根据本公开的另一个实施例,提供了一种用于生成预取请求的设备,包括:一个或多个执行装置,用于执行指令;流预测装置,与所述一个或多个执行装置相耦合,所述流预测装置用于接收针对信息的需求请求,并且至少部分基于所述需求请求,来生成针对第一页的页预取提示;以及预取器装置,用于生成第一预取请求,每个第一预取请求针对一缓存线,所述流预测装置与所述预取器装置解耦。
附图说明
图1是根据一实施例的处理器的框图。
图2是根据一实施例的中级缓存的框图。
图3是根据一实施例的方法的流程图。
图4是根据另一实施例的方法的流程图。
图5A是根据本发明的实施例图示出示范性有序流水线和示范性寄存器重命名、乱序发出/执行流水线两者的框图。
图5B是根据本发明的实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、乱序发出/执行体系结构核心两者的框图。
图6是根据本发明的实施例的处理器的框图,该处理器可具有多于一个核心、可具有集成的存储器控制器并且可具有集成的图形。
图7是根据本发明的实施例的第一更具体示范性系统的框图。
图8是根据本发明的实施例的SoC的框图。
图9是根据本发明的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。
具体实施方式
在各种实施例中,处理器被提供有页预取机制,该机制可用于允许诸如核心之类的数据请求者在带宽可用时消耗更多带宽(例如,片上互连和/或附接存储器的带宽)。这种页预取机制可操作来实现物理页内的流的早期检测,并且将整个物理页(或者其大部分)预取到缓存层次体系(例如,共享缓存存储器,比如最后一级缓存(last level cache,LLC))。而这种页预取机制可以按需求流不可知的方式来进行操作。换句话说,这种页预取机制可按与处理器的传统预取机制解耦的方式来实现,从而使得它不受这些机制中的运行时约束的阻碍。
在特定的实施例中,这种页预取机制可在硬件电路中实现,该硬件电路与处理器的其他预取电路是分开并且解耦的。通过这种方式,核心或其他请求者可增大流式场景的消耗带宽,而不对需求流和核心的内部队列和限制有太多的依赖。因此,实施例可针对处理器可维持高带宽并且核心由于内部限制而受到限制的情况增大核心消耗的带宽。
在一个实施例中,可以在多个部分中实现页预取器电路。第一部分(可能存在于核心的存储器执行单元(memory execution unit,MEU)集群中)处理流预测,而第二部分(可能存在于中级缓存(mid-level cache,MLC)集群中)负责监视和发出页预取。在一些实施例中,可以存着扼制机制,用于在某些场景中对该页预取器进行扼制。
如上所述,在一实施例中,数据缓存单元(data cache unit,DCU)或其他核心内部缓存电路可包括流检测器,以使用下一页预取器(next page prefetcher,NPP)算法来检测流。当然,在其他实施例中可以使用其他流检测机制。流检测器监视并且检查在存储器的物理页的特定部分中(例如,接近页的末端)的给定数目的连续缓存线访问。当达到这个阈值数目的连续缓存线访问时,就会针对与正被需求请求访问的当前页不同的物理页生成页预取提示。作为一个示例,这个物理上不同的页可能在与当前页相距两个物理页的跨度处,从而可能是与触发地址有某个偏移量(例如,8K)的页的开始。请注意,页跨度值(在此例中为2)可以是可配置的,例如,基于工作负载,并且可被存储在配置寄存器中。
在一实施例中,页预取提示在加载端口上调遣,通过地址转化机制(例如,转化后备缓冲器(translation lookaside buffe,TLB))进行转化,并且在TLB未命中(miss)的情况下可以执行页游走。一旦被调遣到DCU的缓存存储器,它就会查找DCU,并且在DCU命中(hit)的情况下可被丢弃。
在一实施例中,如果在MLC的缓存存储器中没有命中,则到达MLC的页预取提示将分配页预取检测器。在一实施例中,这个页预取检测器(可包括多个分开的检测器,在此也被称为LLC页预取(LLC page prefetch,LLCPP)检测器),可持有页的物理页地址和该页的下一个可预取偏移量。一旦分配了,LLCPP检测器就可利用任何未使用的互连槽位来发出独立于需求流的LLC页预取,该需求流可能由于各种原因而暂停。在一实施例中,针对互连的LLCPP请求的优先级可能低于需求请求。如果多个检测器有效,则可经由LLCPP检测器之间的循环淘汰来选择则LLC页预取请求。检测器还可基于分配页预取提示的偏移量,而具有流的方向。在逐出LLCPP检测器时,如果预取的下一个偏移量小于预定的阈值,另一个LLC预取方案可能被启用。
在一些实施例中,处理器压力指示可暂停这个页预取器,并且停止新预取的生成。这些压力指示可包括带宽的水平等等。类似地,可基于某些处理器度量来暂停页预取器。例如,如果每个物理页的需求访问的平均数目低于给定的阈值,则页预取器可被暂停,其中该阈值可以是存储在配置寄存器中的可配置值。
现在参考图1,示出了根据一实施例的处理器的框图。更具体而言,如图1所示,处理器100可以是任何类型的处理器,从具有一个或几个核心的相对低功率的处理器到较大的更高功率处理器或片上系统(system on chip,SoC),等等。
在图1的实施例中,处理器100被示为具有多个核心1100-110n。在不同的实现方式中,核心110可以是同构的或异构的核心。示出了代表性核心1100的一些细节。具体而言,如图所示,核心1100包括前端电路112,该前端电路112可被配置为获得和解码指令,以及获得用于执行这种指令的数据。如图所示,前端电路112耦合到一个或多个执行电路1140-114n。在不同的实施例中,执行电路114可采取算术逻辑单元(arithmetic logic unit,ALU)的形式,例如整数和浮点ALU,包括标量和/或向量ALU,固定功能单元、或其他执行电路。
如进一步图示的,执行电路114耦合到缓存层次体系的各种级别。在所示的实施例中,核心1100包括数据缓存单元(DCU)120和中级缓存(MLC)130。在所示的实施例中,DCU120包括第一级(L1)缓存122和缓存控制器124,该缓存控制器124可控制L1缓存122内的数据的写入和读取,以及缓存控制操作,包括缓存一致性操作、逐出、插入、更新,等等。DCU120还包括流预测电路126。在这里的实施例中,流预测电路126可被配置为识别访问的流并且生成预测,例如,以最后一级缓存(LLC)页预取提示的形式,该预测可被提供给缓存层次体系的更多级别。虽然流预测电路126可被配置为检测针对诸如媒体内容(例如,音频、视频等等)之类的信息流的访问,但是要理解,流访问也可包括其他信息类型,例如添加存储器拷贝操作(将一个缓冲区拷贝到另一个)、大阵列排序,或者以连续访问来访问任何大结构。
注意,在这里的实施例中,流预测电路126与缓存控制器124是分开的,并且预取操作是在缓存控制器内执行的。通过这种方式,这些页预取操作可独立于其他预取操作进行,并且避免了背压或其他约束。注意,如进一步所示,虽然在缓存控制器124中生成的预取请求可经由预取主带被传达给MLC 130,但是在流预测电路126中生成的LLC页预取提示可经由单独的路径被发送至MLC 130。因此,这些预取提示是以发后不理(fire and forget)方式发送的。
如图1中进一步图示的,一个或多个配置寄存器128可存在,以存储用于流预测电路126的操作的可配置参数。在一实施例中,配置寄存器128可存在于流预测电路126内。当然,在其他实施例中,它们可位于其他位置。在一个实施例中,配置寄存器128可存储页跨度值的信息,该值可以是当前页之前(或之后)的给定页数,LLC页预取将在该处发生。此外,可触发这种页预取的连续访问的可配置数目也可作为另一个配置参数被存储。当然,在其他实施例中可以使用其他配置参数。
现在参考MLC 130,这个缓存可以更大,并且可被配置为相对于数据缓存单元120而言是包含性的或非包含性的。MLC 130包括第二级(L2)缓存132和缓存控制器124,该缓存控制器124可控制缓存132内的数据的写入和读取。如图所示,预取电路135可被配置为针对MLC 130执行预取操作。除了典型的MLC预取活动以外,还要注意LLC预取检测器136的存在。在这里的实施例中,预取检测器136可以与预取电路135的附加电路分开,这样它就不会受到主带预取操作的影响。它也不受到关于内部队列或其他结构的容量问题的影响。
如本文将会描述的,预取检测器136可从数据缓存单元120接收传入的LLC页预取提示,并且针对给定预取页的相应行生成预取请求,该预取页可能比当前访问提前(或落后)一个或多个页。注意,能够在每个缓存线的基础上生成的这种预取请求可作为LLC预取提示被传达,这些LLC预取提示可在预取和需求请求被经由诸如片内互连(intra-dieinterconnect,IDI)之类的互连发送到LLC 150时被与该预取和需求请求进行仲裁。
如进一步图示的,预取电路135还可包括监视器137,其可监视各种条件,包括在中层缓存130内以及来自LLC 150的反馈信息。取决于活动的水平,监控器137可向扼制器138通知高水平的预取和其他流量,并且可使得扼制由预取电路135生成的常规预取请求。取决于实现方式,扼制器138也可依据活动水平暂停LLC页预取在预取检测器136内被生成。
仍然参考图1,LLC 150包括最后一级缓存存储器152和缓存控制器154,该最后一级缓存存储器152可以是共享缓存存储器,并且该缓存控制器154可控制缓存存储器152内的数据的写入和读取。如进一步示出的,LLC 150还包括扼制器156,该扼制器156可监视带宽、容量等等,并且至少部分地基于这种监视向MLC 130和DCU 120提供反馈信息。这种反馈信息进而可用于触发对主路径预取(可能还有LLC页预取)的扼制。虽然在图1的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图2,示出了根据一实施例的中级缓存的框图。更具体而言,如图2所示,MLC 200包括MLC预取电路,它包括主带MLC预取电路210和单独的LLC页预取电路240。如进一步所示,MLC缓存220可包括MLC 200的缓存存储元件,以及缓存控制器电路(为便于图示而未示出)。
MLC预取电路210可被配置为根据一种或多种技术来生成预取,以试图在其受到需求请求之前预取所请求的数据。因此,MLC预取电路210输出预取请求,这些请求被提供给选择电路215。在一个实施例中,选择电路215可被实现为解复用器或其他选择电路,例如,由仲裁电路控制。
如进一步所示,来自DCU的传入预取提示(其中可能包括传统预取提示以及根据一实施例的LLC页预取提示)也被提供给选择电路215。选择电路215进一步可接收从一个或多个外部请求者接收到的额外请求。此外,选择电路215可接收指令取得请求,在一实施例中,这些请求可以是从取得电路(例如指令取得电路)接收的。选择电路215可从这些各种来源中进行选择,并且向MLC 220提供请求,后者可确定所请求的信息是否存在于其内。如果没有,则会发生未命中,并且相应的请求可被发送到互连接口电路230。然而,要注意,LLC页预取提示可以替代地在MLC 220内针对所请求的数据发生未命中时被发送到LLC页预取电路240。
仍然参考图2,示出了LLC页预取电路240的高级别视图。在一个实施例中可实现为有限状态机(finite state machine,FSM)的控制电路246可控制LLC页预取电路240的操作。如图所示,页预取电路240接收传入的LLC页预取提示。这些预取提示可被提供给多个LLC页预取检测器2440-244n中的选定一个。
在一实施例中,这些提示可包括页跨度值和偏移量值。在一实施例中,页跨度值可指示出预取操作将要发生的跨度长度的页的数目。例如,在前进方向上,页跨度值为2表明预取将在从当前访问的页往前两页的位置开始。在典型的具有4K页大小的系统实现方式中,页跨度值为2对应于8K跨度。进而,偏移量值可指示出到这个跨入的页中的偏移量。在一些实施例中,页预取提示可只包括页跨度值,从而预取请求可在页预取电路240内在跨入页之内的零偏移量处开始生成。
仍然参考图2,每个LLC页检测器244可被配置为接收给定的页预取提示,并且在跨入页中生成预取的流。例如,在没有提供偏移量的情况下,给定的LLC页检测器244可在偏移量为0处开始作出预取请求。这些预取请求被提供给选择电路245,它可选择给定的请求,例如,以循环淘汰的方式。进而,选定的预取请求被提供给另一个选择电路250。在这里的实施例中,选择电路250可在LLC页预取请求和从互连接口电路230接收到的主带流量之间进行选择。因此,当存在高水平的流量或其他阻塞条件,并且主带电路向互连接口电路230发送有限的流量时,可经由选择电路250向LLC发送相对较高数目的页预取请求。
仍然参考页预取电路240,输出请求也被反馈到累积器242,它可累积偏移量值,这样,给定的LLC预取检测器244可针对来自跨入页的连续缓存线发送递增(或递减)的预取请求。要理解,虽然在图2的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图3,示出了根据一实施例的方法的流程图。更具体而言,图3的方法300是一种用于预测流访问的方法。在一实施例中,方法300可由在DCU内实现的硬件电路来执行,并且在一些实施例中可进一步利用在这个硬件电路上执行的固件和/或软件来实现。在一个特定的示例中,方法300可由图1的流预测电路126执行。
如图所示,方法300开始于接收需求缓存线访问(方框310)。这个需求访问可从请求者那里接收,例如,核心电路,它可在信息被请求时发出这种需求访问。注意,作为需求访问,这个请求是针对实际执行路径所需要的信息的,从而可与推测性请求或预取请求相区别。
仍然参考图3,接下来确定这个需求缓存线访问是否在给定页的触发窗口内(菱形320)。在一实施例中,这个触发窗口可在页边界(例如,页的开始或结束)的一定距离内。当然,在其他实现方式中,可在页的另一部分内识别触发窗口,例如在页的中点等等。在任何情况下,如果需求访问不在这个触发窗口内,就不会发生进一步的操作,并且控制传递回到方框310。
相反,如果确定需求访问在这个触发窗口内,则控制接下来会传递到菱形330,以确定需求访问的地址是否与先前访问连续。在一实施例中,这个连续的地址可对应于先前访问的下一个缓存线。如果这个需求访问不是针对连续的位置,则控制会传递到方框340,在那里连续缓存线访问的计数可被重置。在一实施例中,控制随后传递回到方框310。
仍然参考图3,相反,如果确定这个需求访问是针对连续位置的,则控制传递到方框350,在那里连续缓存线访问的计数可被更新,例如,递增一。接下来,确定此计数是否超过阈值(菱形360)。虽然实施例在这个方面不受限制,但此阈值水平可被设置为可配置的数字,在一实施例中该数字可在例如3和5之间。当确定此计数超过阈值水平时,控制传递到方框370,在那里可以生成LLC页预取。另外,这个生成的页预取提示可具有与给定数目的跨页相对应的页跨度值。虽然实施例在这个方面不受限制,但可以是可配置值的这个页跨度值在一实施例中可被设置在例如2和3之间。因此,这个页预取提示被发出,以开始预取一页的缓存线,该页与正被需求请求所访问的当前页相比(在线性或虚拟地址空间中)提前(或落后)该跨度值。
通过这种方式,未来可能需要的信息,例如更多的流媒体数据,可被高效地获得并且供请求者(例如,核心)随时使用。此外,不是发送多个预取提示且每个预取提示用于单个缓存线,在这里的实施例中,这个LLC页预取是单个预取提示,其可被LLC页机制(例如,LLC页检测器)使用,以进而生成多个个体缓存线预取。要理解,虽然在图3的实施例中在这个高级别示出了,但许多变化和替换是可能的。
现在参考图4,示出了根据另一实施例的方法的流程图。更具体而言,图4的方法400是一种用于执行页预取的方法。在一实施例中,方法400可由在DCU和MLC内实现的硬件电路来执行,并且在一些实施例中可进一步利用在这个硬件电路上执行的固件和/或软件来实现。
如图所示,方法400开始于在DCU中接收LLC页预取提示(方框410)。要理解,在这里的实施例中,这个页预取提示本身可在DCU的电路内生成,例如流预测电路。接下来,在方框415,这个页预取提示可被转化以提供物理地址,因为在实施例中,可以用线性或虚拟地址来生成该页预取提示。接下来,在菱形420处确定该提示是否在DCU内命中。在一实施例中,缓存控制器可至少部分基于虚拟地址来确定所请求的页预取提示的数据是否存在于DCU中。如果是,则在方框425处,该提示被丢弃。
否则,如果页预取在DCU中未命中,则控制传递到430方框,在那里其被发送到MLC。在菱形435处确定该提示是否在MLC内命中。如果是,则在方框440处,该提示被丢弃。否则,在未命中时,在方框450处,LLC页预取检测器可被分配,例如,在MLC的页预取电路内。注意,这种页预取检测器可以是通过预取电路的单独路径,这样它就不会受到主预取路径的背压、容量问题等等的影响。通过分配这个页预取检测器,它可以开始针对对象跨入页内的连续缓存线生成个体缓存线预取。
仍然参考图4,接下来,在菱形455处确定在将MLC耦合到LLC的互连(例如,IDI)上是否有可用的槽位。注意,这个判定可在MLC内的接口电路中实现,或者更一般而言在核心中实现。当存在可用槽位时,控制传递到方框460,其中这个提示(其是针对跨入页内的给定缓存线的预取提示)经由该互连被发送给LLC。
然后,在方框470处,图示了页预取检测器的操作,其中这个偏移量可被递增以为下一个预取提示作准备。控制传递到菱形480,以确定预取是否已到达跨入页的结束(或开始)。如果没有,则控制传递回到菱形455。否则,在这个确定点处,给定跨入页的所有线都被请求预取,因此控制传递到方框490,其中LLC页预取检测器可被取消分配。要理解,虽然在图4的实施例中在这个高级别示出了,但许多变化和替换是可能的。
要理解,可联系许多不同的处理器体系结构来使用实施例。图5A是根据本发明的实施例图示出示范性有序流水线和示范性寄存器重命名、乱序发出/执行流水线两者的框图。图5B是根据本发明的实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、乱序发出/执行体系结构核心两者的框图。这种实施例可包括如本文所述与处理器的其他预取电路分开并且解耦的解耦页预取机制。图5A和5B中的实线框图示了有序流水线和有序核心,而虚线框的可选添加图示了寄存器重命名、乱序发出/执行流水线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图5A中,处理器流水线500包括取得级502、长度解码级504、解码级506、分配级508、重命名级510、调度(也称为调遣或发出)级512、寄存器读取/存储器读取级514、执行级516、写回/存储器写入级518、异常处理级522、以及提交级524。注意,如本文所述,在给定的实施例中,核心可包括多个处理流水线,例如流水线500。
图5B示出了处理器核心590包括耦合到执行引擎单元550的前端单元530,并且两者都耦合到存储器单元570。核心590可以是精简指令集计算(reduced instruction setcomputing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替换核心类型。作为另外一个选项,核心590可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元530包括分支预测单元532,其耦合到分支目标缓冲器533和指令缓存单元534,指令缓存单元534耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)536,指令TLB 536耦合到指令取得单元538,指令取得单元538耦合到解码单元540。解码单元540(或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或者其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或者其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可利用各种不同的机制来实现解码单元540。适当机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一个实施例中,核心590包括微代码ROM或其他介质,其为某些宏指令存储微代码(例如,在解码单元540中或者以其他方式在前端单元530内)。解码单元540耦合到执行引擎单元550中的重命名/分配器单元552。
如图5B中进一步示出的,执行引擎单元550包括重命名/分配器单元552,其耦合到引退单元554和一组一个或多个调度器单元556。(一个或多个)调度器单元556表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。(一个或多个)调度器单元556耦合到(一个或多个)物理寄存器文件单元558。物理寄存器文件单元558的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,物理寄存器文件单元558包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可提供体系结构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器文件单元558与引退单元554重叠以说明可用来实现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、和(一个或多个)引退寄存器文件;利用寄存器图谱和寄存器的池;等等)。引退单元554和(一个或多个)物理寄存器文件单元558耦合到(一个或多个)执行集群560。(一个或多个)执行集群560包括一组一个或多个执行单元562和一组一个或多个存储器访问单元564。执行单元562可在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元556、(一个或多个)物理寄存器文件单元558和(一个或多个)执行集群560被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,它们各自具有其自己的调度器单元、物理寄存器文件单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现了某些实施例,其中只有此流水线的执行集群具有(一个或多个)存储器访问单元564)。还应当理解,在使用分开流水线的情况下,这些流水线中的一个或多个可以是乱序发出/执行,并且其余的是有序的。
存储器访问单元564的集合耦合到存储器单元570,存储器单元570包括数据TLB单元572,数据TLB单元572耦合到数据缓存单元574,数据缓存单元574耦合到第2级(L2)缓存单元576。在一个示范性实施例中,存储器访问单元564可包括加载单元、存储地址单元、以及存储数据单元,它们中的每一者耦合到存储器单元570中的数据TLB单元572。
如图所示,数据缓存单元574可包括根据实施例的流检测电路575来如本文所述检测流访问。进而,L2缓存单元576包括预取器电路578和分开的解耦页预取电路579,如本文所述。指令缓存单元534进一步耦合到存储器单元570中的L2缓存单元576。L2缓存单元576耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
作为示例,示范性寄存器重命名、乱序发出/执行核心体系结构可实现流水线500如下:1)指令取得538执行取得和长度解码级502和504;2)解码单元540执行解码级506;3)重命名/分配器单元552执行分配级508和重命名级510;4)(一个或多个)调度器单元556执行调度级512;5)(一个或多个)物理寄存器文件单元558和存储器单元570执行寄存器读取/存储器读取级514;执行集群560执行执行级516;6)存储器单元570和(一个或多个)物理寄存器文件单元558执行写回/存储器写入级518;7)在异常处理级522中可涉及各种单元;并且8)引退单元554和(一个或多个)物理寄存器文件单元558执行提交级524。
核心590可支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一个实施例中,核心590包括逻辑来支持紧缩数据指令集扩展(例如,AVX1、AVX2),从而允许了被许多多媒体应用使用的操作被利用紧缩数据来执行。
应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心针对该物理核心在同时多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取得和解码,然后是同时多线程处理,例如像Hyperthreading技术中那样)。
虽然是在乱序执行的情境中描述寄存器重命名的,但应当理解寄存器重命名可被用在有序体系结构中。虽然处理器的图示实施例还包括分开的指令和数据缓存单元534/574和共享的L2缓存单元576,但替换实施例可针对指令和数据两者具有单个内部缓存,例如,第1级(L1)内部缓存或者多级别的内部缓存。在一些实施例中,系统可包括内部缓存与在核心和/或处理器外部的外部缓存的组合。或者,所有缓存可在核心和/或处理器外部。
图6是根据本发明的实施例的处理器600的框图,处理器600可具有多于一个核心,可具有集成的存储器控制器并且可具有集成的图形。图6中的实线框图示了具有单个核心602A、系统代理600和一组一个或多个总线控制器单元616的处理器600,而虚线框的可选添加图示了替换处理器600,其具有多个核心602A-N、系统代理单元610中的一组一个或多个集成存储器控制单元614、以及可执行一个或多个特定功能的专用逻辑608。
从而,处理器600的不同实现方式可包括:1)其中专用逻辑是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心),并且核心602A-N是一个或多个通用核心(例如,通用有序核心、通用乱序核心、或者两者的组合)的CPU;2)其中核心602A-N是大量的主要打算用于图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心602A-N是大量的通用有序核心的协处理器。从而,处理器600可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器可被实现在一个或多个芯片上。处理器600可以是一个或多个衬底的一部分和/或可利用若干个工艺技术中的任何一者被实现在一个或多个衬底上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系包括核心内的一级或多级缓存单元604A-N、一组或一个或多个共享缓存单元606、以及耦合到该组集成存储器控制器单元614的外部存储器(未示出)。该组共享缓存单元606可包括一个或多个中间级别缓存(例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存),最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一个实施例中基于环的互连单元612互连专用逻辑608、该组共享缓存单元606和系统代理单元610/(一个或多个)集成存储器控制器单元614,但替换实施例也可使用任何数目的公知技术来互连这种单元。
系统代理单元610包括协调和操作核心602A-N的那些组件。系统代理单元610可包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是或者可以包括调节核心602A-N和专用逻辑608的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心602A-N就体系结构指令集而言可以是同构的或者异构的;也就是说,核心602A-N中的两个或更多个可能够执行同一指令集,而其他的核心可能够只执行该指令集的子集或者不同的指令集。核心602A-N可包括如本文所述的解耦页预取电路。
图7-图8是示范性计算机体系结构的框图。本领域中已知的用于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、和各种其他电子设备的其他系统设计和配置,也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是适当的。
现在参考图7,其中示出了根据本发明的实施例的第一更具体示范性系统700的框图。如图7中所示,多处理器系统700是点到点互连系统,并且包括经由点到点互连750耦合的第一处理器770和第二处理器780。处理器770和780的每一者可以是处理器600的某个版本。
处理器770和780被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元772和782。处理器770还包括点到点(P-P)接口776和778作为其总线控制器单元的一部分;类似地,第二处理器780包括P-P接口786和788。处理器770、780可利用P-P接口电路778、788经由点到点(P-P)接口750交换信息。如图7中所示,集成存储器控制器(integrated memory controller,IMC)772和782将处理器耦合到各自的存储器,即存储器732和存储器734,存储器732和存储器734可以是在本地附接到各自处理器的主存储器的一部分。在实施例中,处理器770、780可包括如本文所述的与其他预取电路分开并且解耦的页预取电路。
处理器770、780可各自利用点到点接口电路776、794、786、798经由个体P-P接口752、754与芯片组790交换信息。芯片组790可以可选地经由高性能接口739与协处理器738交换信息。在一个实施例中,协处理器738是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。
芯片组790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种第三代I/O互连总线之类的总线,虽然本发明的范围不限于此。
如图7中所示,各种I/O设备714可耦合到第一总线716,以及将第一总线716耦合到第二总线720的总线桥718。在一个实施例中,一个或多个额外的处理器715,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器,耦合到第一总线716。在一个实施例中,第二总线720可以是低引脚数(low pin count,LPC)总线。各种设备可耦合到第二总线720,包括例如键盘/鼠标722、通信设备727和存储单元728,例如盘驱动器或者其他大容量存储设备,其中该存储单元728在一个实施例中可包括指令/代码和数据730。另外,音频I/O 724可耦合到第二总线720。注意其他体系结构是可能的。例如,取代图7的点到点体系结构,系统可实现多点分支总线或者其他这种体系结构。
现在参考图8,其中示出了根据本发明的实施例的SoC 800的框图。虚线框是更先进SoC上的可选特征。在图8中,(一个或多个)互连单元802耦合到:应用处理器810,其包括一组一个或多个核心802A-N(包括组成的缓存单元804A-N),其中至少一些可包括如本文所述的与其他预取电路分开并且解耦的页预取电路;(一个或多个)共享缓存单元806;系统代理单元812;(一个或多个)总线控制器单元816;(一个或多个)集成存储器控制器单元814;一组或一个或多个协处理器820,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机访问存储器(static random access memory,SRAM)单元830;直接存储器访问(direct memory access,DMA)单元832;以及显示单元840,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器820包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
可以用硬件、软件、固件或者这种实现方案的组合来实现本文公开的机制的实施例。本发明的实施例可被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、和至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码,例如图7中所示的代码730,可被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可按已知的方式被应用到一个或多个输出设备。对于本申请而言,处理系统包括任何具有处理器的系统,例如;数字信号处理器(digital signalprocessor,DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)、或者微处理器。
可以用高级别过程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者解译的语言。
至少一个实施例的一个或多个方面可由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当被机器读取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
这种机器可读存储介质可包括但不限于由机器或设备制造或形成的物品的非暂态有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compactdisk rewritable,CD-RW)、和磁光盘),半导体设备(诸如,只读存储器(read-only memory,ROM),诸如动态随机访问存储器(dynamic random access memory,DRAM)、静态随机访问存储器(static random access memory,SRAM)之类的随机访问存储器(random accessmemory,RAM),可擦除可编程只读存储器(erasable programmable read-only memory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM),相变存储器(phase change memory,PCM)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可被称为程序产品。
在一些情况下,指令转换器可被用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上一部分在处理器外。
图9是根据本发明的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。在图示的实施例中,指令转换器是软件指令转换器,虽然可替换地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图9示出了高级别语言902的程序可被利用x86编译器904来编译以生成x86二进制代码906,x86二进制代码906可由具有至少一个x86指令集核心的处理器916原生执行。具有至少一个x86指令集核心916的处理器表示任何这样的处理器:这种处理器可通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分、或者(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果。x86编译器904表示可操作来生成x86二进制代码906(例如,目标代码)的编译器,x86二进制代码906在带有或不带有额外的链接处理的情况下可在具有至少一个x86指令集核心的处理器916上被执行。类似地,图9示出了高级别语言902的程序可被利用替换指令集编译器908来编译以生成替换指令集二进制代码910,替换指令集二进制代码910可由没有至少一个x86指令集核心的处理器914(例如,具有执行加州森尼维尔市的MIPS技术公司的MIPS指令集和/或执行加州森尼维尔市的ARM控股公司的ARM指令集的核心的处理器)原生执行。指令转换器912用于将x86二进制代码906转换成可由没有x86指令集核心的处理器914原生执行的代码。这个转换后的代码不太可能与替换指令集二进制代码910相同,因为能够做到这一点的指令转换器是难以制作的;然而,转换后的代码将实现一般操作并且由来自替换指令集的指令构成。从而,指令转换器912表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码906的软件、固件、硬件或者其组合。
以下示例涉及进一步实施例。
在一个示例中,一种处理器包括:一个或多个执行电路,用于执行指令;流预测电路,与所述一个或多个执行电路相耦合,该流预测电路接收针对信息的需求请求,并且至少部分基于所述需求请求,来生成针对第一页的页预取提示;以及预取器电路,用于生成第一预取请求,每个第一预取请求针对一缓存线,所述流预测电路与所述预取器电路解耦。
在一示例中,所述处理器还包括:共享缓存存储器,与所述流预测电路和所述预取器电路相耦合,其中,所述共享缓存存储器用于接收与所述页预取提示相关联的第二预取请求和所述第一预取请求中的至少一些第一预取请求,其中,所述第二预取请求与所述第一预取请求相比针对不同的页。
在一示例中,所述处理器还包括:数据缓存单元,该数据缓存单元包括第一缓存存储器和所述流预测电路。
在一示例中,所述处理器还包括:中间级缓存,该中间级缓存包括第二缓存存储器和所述预取器电路,其中,所述数据缓存单元用于在所述页预取提示在所述第一缓存存储器中未命中时将所述页预取提示发送到所述中间级缓存。
在一示例中,所述处理器还包括:互连接口电路,用于接收所述第二预取请求和所述第一预取请求,并且将所述第二预取请求中的至少一些第二预取请求和所述第一预取请求中的至少一些第一预取请求指引到共享缓存存储器。
在一示例中,所述互连接口电路用于在所述预取器电路被暂停时发送所述第二预取请求。
在一示例中,所述处理器还包括:多个页检测器,每个页检测器用于接收页预取提示,并且基于该页预取提示来生成多个预取请求。
在一示例中,第一页检测器用于接收所述页预取提示,并且至少部分基于所述页预取提示的页跨度值来针对第一页生成所述多个预取请求。
在一示例中,所述处理器还包括:扼制器,用于至少部分基于压力水平来扼制所述流预测电路。
在另一示例中,一种方法包括:在处理器的第二缓存存储器中接收来自所述处理器的第一缓存存储器的页预取提示;为所述页预取提示分配页预取检测器;在所述页预取检测器中基于所述页预取提示来生成多个第一预取请求;并且在耦合在所述第二缓存存储器和所述处理器的共享缓存存储器之间的互连的可用槽位中,将所述多个第一预取请求发送到所述共享缓存存储器。
在一示例中,所述方法还包括:在所述多个第一预取请求和多个第二预取请求之间进行仲裁,所述多个第一预取请求针对的是第一页,该第一页位于与所述多个第二预取请求所针对的第二页相距根据页跨度值的距离处。
在一示例中,所述方法还包括:接收包括页提示部分和偏移量提示部分的所述页预取提示,所述页提示部分针对的是被从当前需求访问页中去除的两个或更多个页。
在一示例中,所述方法还包括:维持针对第二页的连续缓存线访问的计数;当所述计数满足阈值水平时,在所述第一缓存存储器中生成所述页预取提示,所述页预取提示针对的是与所述第二页相距至少两页的第一页;以及将所述页预取提示发送到所述第二缓存存储器。
在一示例中,所述方法还包括:响应于非连续缓存线请求而重置连续缓存线访问的所述计数。
在一示例中,所述方法还包括:响应于下一个连续缓存线请求而更新连续缓存线访问的所述计数。
在另一示例中,一种计算机可读介质,包括指令,所述指令用于执行如上述示例中任一者所述的方法。
在另一示例中,一种计算机可读介质,包括数据,所述数据被至少一个机器用来制造至少一个集成电路以执行如上述示例中任一者所述的方法。
在另一示例中,一种装置,包括用于执行如上述示例中任一者所述的方法的装置。
在另外一个示例中,一种系统包括SoC和与所述SoC相耦合的系统存储器。所述SoC可包括:一个或多个执行电路,用于执行指令;第一缓存存储器,与所述一个或多个执行电路相耦合,所述第一缓存存储器包括流预测电路,所述流预测电路用于接收针对第一页中的信息的需求请求,并且至少部分基于所述需求请求,来生成针对第二页的页预取提示;以及第二缓存存储器,与所述第一缓存存储器相耦合。所述第二缓存存储器可包括:第一预取电路,用于生成第一预取请求;以及页预取电路,用于基于所述页预取提示来生成第二预取请求,其中,所述页预取电路与所述第一预取电路解耦。所述系统存储器可响应于所述第一预取请求而从所述第一页向所述SoC发送第一信息,并且响应于所述第二预取请求而从所述第二页向所述SoC发送第二信息。
在一示例中,所述第一预取电路包括主带预取电路。
在一示例中,所述系统还包括:接口电路,与所述第一预取电路和所述页预取电路相耦合,其中,所述接口电路用于在所述第一预取电路被暂停时向第三缓存存储器发送多个所述第二预取请求。
在一示例中,所述接口电路用于以与所述第二预取请求相比更高的优先级来处理所述第一预取请求。
在一示例中,所述页预取电路用于针对所述第二页生成所述第二预取请求,所述第二页被从具有针对所述页预取提示的触发地址的所述第一页中去除。
要理解,上述示例的各种组合是可能的。
注意,在本文中可互换使用术语“电路”和“电子线路”。如本文所使用的,这些术语和术语“逻辑”用于单独地或者按任何组合提及模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路、和/或任何其他类型的物理硬件组件。实施例可被用于许多不同类型的系统中。例如,在一个实施例中,通信设备可被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,而是其他实施例可指向其他类型的用于处理指令的装置,或者包括指令的一个或多个机器可读介质,这些指令响应于在计算设备上被执行而使得该设备实现本文描述的一个或多个方法和技术。
实施例可被实现在代码中并且可被存储在其上存储有指令的非暂态存储介质上,所述指令可用于将系统编程为执行这些指令。实施例还可被实现在数据中并且可被存储在非暂态存储介质上,该存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路来执行一个或多个操作。还有另外的实施例可被实现在包括信息的计算机可读存储介质中,所述信息当被制造到SoC或其他处理器中时将配置该SoC或其他处理器来执行一个或多个操作。存储介质可包括但不限于任何类型的盘,包括软盘,光盘,固态驱动器(solid state drive,SSD),致密盘只读存储器(compact disk read-only memory,CD-ROM),可改写致密盘(compact disk rewritable,CD-RW),以及磁光盘,半导体装置,比如只读存储器(read-only memory,ROM),随机访问存储器(random access memory,RAM),比如动态随机访问存储器(dynamic random access memory,DRAM),静态随机访问存储器(static random access memory,SRAM),可擦除可编程只读存储器(erasableprogrammable read-only memory,EPROM),闪速存储器、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM),磁卡或光卡,或者任何其他类型的适用于存储电子指令的介质。
虽然已关于有限数目的实施例描述了本发明,但本领域技术人员将会明白从这些实施例进行的许多修改和变化。希望所附权利要求覆盖落在本发明的真实精神和范围内的所有这种修改和变化。
Claims (25)
1.一种用于生成预取请求的处理器,包括:
一个或多个执行电路,用于执行指令;
流预测电路,与所述一个或多个执行电路相耦合,所述流预测电路用于接收针对信息的需求请求,并且至少部分基于所述需求请求,来生成针对第一页的页预取提示;以及
预取器电路,用于生成第一预取请求,每个第一预取请求针对一缓存线,所述流预测电路与所述预取器电路解耦。
2.如权利要求1所述的处理器,还包括:共享缓存存储器,与所述流预测电路和所述预取器电路相耦合,其中,所述共享缓存存储器用于接收与所述页预取提示相关联的第二预取请求和所述第一预取请求中的至少一些第一预取请求,其中,所述第二预取请求与所述第一预取请求相比针对不同的页。
3.如权利要求1所述的处理器,还包括:数据缓存单元,该数据缓存单元包括第一缓存存储器和所述流预测电路。
4.如权利要求3所述的处理器,还包括:中间级缓存,该中间级缓存包括第二缓存存储器和所述预取器电路,其中,所述数据缓存单元用于在所述页预取提示在所述第一缓存存储器中未命中时将所述页预取提示发送到所述中间级缓存。
5.如权利要求2所述的处理器,还包括:互连接口电路,用于接收所述第二预取请求和所述第一预取请求,并且将所述第二预取请求中的至少一些第二预取请求和所述第一预取请求中的至少一些第一预取请求指引到共享缓存存储器。
6.如权利要求5所述的处理器,其中,所述互连接口电路用于在所述预取器电路被暂停时发送所述第二预取请求。
7.如权利要求1所述的处理器,还包括:多个页检测器,每个页检测器用于接收页预取提示,并且基于所述页预取提示来生成多个预取请求。
8.如权利要求7所述的处理器,其中,第一页检测器用于接收所述页预取提示,并且至少部分基于所述页预取提示的页跨度值来针对第一页生成所述多个预取请求。
9.如权利要求1所述的处理器,还包括:扼制器,用于至少部分基于压力水平来扼制所述流预测电路。
10.一种用于发送预取请求的方法,包括:
在处理器的第二缓存存储器中接收来自所述处理器的第一缓存存储器的页预取提示;
为所述页预取提示分配页预取检测器;
在所述页预取检测器中基于所述页预取提示来生成多个第一预取请求;并且
在耦合在所述第二缓存存储器和所述处理器的共享缓存存储器之间的互连的可用槽位中,将所述多个第一预取请求发送到所述共享缓存存储器。
11.如权利要求10所述的方法,还包括:在所述多个第一预取请求和多个第二预取请求之间进行仲裁,所述多个第一预取请求针对的是第一页,该第一页位于与所述多个第二预取请求所针对的第二页相距根据页跨度值的距离处。
12.如权利要求10所述的方法,还包括:接收包括页提示部分和偏移量提示部分的所述页预取提示,所述页提示部分针对的是被从当前需求访问页中去除的两个或更多个页。
13.如权利要求10所述的方法,还包括:
维持针对第二页的连续缓存线访问的计数;
当所述计数满足阈值水平时,在所述第一缓存存储器中生成所述页预取提示,所述页预取提示针对的是与所述第二页相距至少两页的第一页;以及
将所述页预取提示发送到所述第二缓存存储器。
14.如权利要求13所述的方法,还包括:响应于非连续缓存线请求而重置连续缓存线访问的所述计数。
15.如权利要求13所述的方法,还包括:响应于下一个连续缓存线请求而更新连续缓存线访问的所述计数。
16.至少一种计算机可读存储介质,在其上存储有指令,所述指令在由机器执行时,使得所述机器执行如权利要求10至15中任一项所述的方法。
17.一种用于处理预取请求的系统,包括:
片上系统SoC,包括:
一个或多个执行电路,用于执行指令;
第一缓存存储器,与所述一个或多个执行电路相耦合,所述第一缓存存储器包括流预测电路,所述流预测电路用于接收针对第一页中的信息的需求请求,并且至少部分基于所述需求请求,来生成针对第二页的页预取提示;以及
第二缓存存储器,与所述第一缓存存储器相耦合,所述第二缓存存储器包括:
第一预取电路,用于生成第一预取请求;以及
页预取电路,用于基于所述页预取提示来生成第二预取请求,其中,所述页预取电路与所述第一预取电路解耦;以及
系统存储器,与所述SoC相耦合,其中,所述系统存储器用于响应于所述第一预取请求而从所述第一页向所述SoC发送第一信息,并且响应于所述第二预取请求而从所述第二页向所述SoC发送第二信息。
18.如权利要求17所述的系统,其中,所述第一预取电路包括主带预取电路。
19.如权利要求17所述的系统,还包括:接口电路,与所述第一预取电路和所述页预取电路相耦合,其中,所述接口电路用于在所述第一预取电路被暂停时向第三缓存存储器发送多个所述第二预取请求。
20.如权利要求19所述的系统,其中,所述接口电路用于以与所述第二预取请求相比更高的优先级来处理所述第一预取请求。
21.如权利要求17至20中任一项所述的系统,其中,所述页预取电路用于针对所述第二页生成所述第二预取请求,所述第二页被从具有针对所述页预取提示的触发地址的所述第一页中去除。
22.一种用于生成预取请求的设备,包括:
一个或多个执行装置,用于执行指令;
流预测装置,与所述一个或多个执行装置相耦合,所述流预测装置用于接收针对信息的需求请求,并且至少部分基于所述需求请求,来生成针对第一页的页预取提示;以及
预取器装置,用于生成第一预取请求,每个第一预取请求针对一缓存线,所述流预测装置与所述预取器装置解耦。
23.如权利要求22所述的设备,还包括:共享缓存存储器装置,与所述流预测装置和所述预取器装置相耦合,其中,所述共享缓存存储器装置用于接收与所述页预取提示相关联的第二预取请求和所述第一预取请求中的至少一些第一预取请求,其中,所述第二预取请求与所述第一预取请求相比针对不同的页。
24.如权利要求22所述的设备,还包括:数据缓存装置,该数据缓存装置包括第一缓存存储器装置和所述流预测装置。
25.如权利要求24所述的设备,还包括:中间级缓存装置,该中间级缓存装置包括第二缓存存储器装置和所述预取器装置,其中,所述数据缓存装置用于在所述页预取提示在所述第一缓存存储器装置中未命中时将所述页预取提示发送到所述中间级缓存。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/130,696 US20220197808A1 (en) | 2020-12-22 | 2020-12-22 | System, apparatus and method for prefetching physical pages in a processor |
US17/130,696 | 2020-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114661357A true CN114661357A (zh) | 2022-06-24 |
Family
ID=77910711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111374725.3A Pending CN114661357A (zh) | 2020-12-22 | 2021-11-19 | 用于在处理器中预取物理页的系统、装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220197808A1 (zh) |
EP (1) | EP4020229A1 (zh) |
CN (1) | CN114661357A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230205700A1 (en) * | 2021-12-28 | 2023-06-29 | Advanced Micro Devices, Inc. | Selective speculative prefetch requests for a last-level cache |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822790A (en) * | 1997-02-07 | 1998-10-13 | Sun Microsystems, Inc. | Voting data prefetch engine |
US20070101100A1 (en) * | 2005-10-28 | 2007-05-03 | Freescale Semiconductor, Inc. | System and method for decoupled precomputation prefetching |
US9418013B2 (en) * | 2014-06-30 | 2016-08-16 | Intel Corporation | Selective prefetching for a sectored cache |
US11176045B2 (en) * | 2020-03-27 | 2021-11-16 | Apple Inc. | Secondary prefetch circuit that reports coverage to a primary prefetch circuit to limit prefetching by primary prefetch circuit |
-
2020
- 2020-12-22 US US17/130,696 patent/US20220197808A1/en active Pending
-
2021
- 2021-09-23 EP EP21198548.6A patent/EP4020229A1/en active Pending
- 2021-11-19 CN CN202111374725.3A patent/CN114661357A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220197808A1 (en) | 2022-06-23 |
EP4020229A1 (en) | 2022-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101614867B1 (ko) | 데이터 스트림에 대한 저장 인식 프리페치 | |
US10303609B2 (en) | Independent tuning of multiple hardware prefetchers | |
US7493451B2 (en) | Prefetch unit | |
JP5372929B2 (ja) | 階層マイクロコードストアを有するマルチコアプロセッサ | |
US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
US11030108B2 (en) | System, apparatus and method for selective enabling of locality-based instruction handling | |
US20200104259A1 (en) | System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations | |
WO2019005105A1 (en) | ACTIVATION OF SPECULATIVE MEMORY | |
US10437732B2 (en) | Multi-level cache with associativity collision compensation | |
EP3716055A1 (en) | System, apparatus and method for symbolic store address generation for data-parallel processor | |
US10482017B2 (en) | Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization | |
US10402336B2 (en) | System, apparatus and method for overriding of non-locality-based instruction handling | |
US11182298B2 (en) | System, apparatus and method for dynamic profiling in a processor | |
EP4020229A1 (en) | System, apparatus and method for prefetching physical pages in a processor | |
CN112395000B (zh) | 一种数据预加载方法和指令处理装置 | |
JP2023550231A (ja) | 局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化 | |
EP4155915B1 (en) | Scalable toggle point control circuitry for a clustered decode pipeline | |
US20240004808A1 (en) | Optimized prioritization of memory accesses |
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 |