CN112395000A - 一种数据预加载方法和指令处理装置 - Google Patents

一种数据预加载方法和指令处理装置 Download PDF

Info

Publication number
CN112395000A
CN112395000A CN201910745174.3A CN201910745174A CN112395000A CN 112395000 A CN112395000 A CN 112395000A CN 201910745174 A CN201910745174 A CN 201910745174A CN 112395000 A CN112395000 A CN 112395000A
Authority
CN
China
Prior art keywords
data
preload
address
instruction
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910745174.3A
Other languages
English (en)
Other versions
CN112395000B (zh
Inventor
陆一珉
项晓燕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou C Sky Microsystems Co Ltd
Original Assignee
Hangzhou C Sky Microsystems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou C Sky Microsystems Co Ltd filed Critical Hangzhou C Sky Microsystems Co Ltd
Priority to CN201910745174.3A priority Critical patent/CN112395000B/zh
Publication of CN112395000A publication Critical patent/CN112395000A/zh
Application granted granted Critical
Publication of CN112395000B publication Critical patent/CN112395000B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种数据预加载方法,适于在指令处理装置中执行并包括步骤:确定在指令处理装置中执行的数据加载指令所指示的数据地址;以及如果所确定的数据地址在与数据加载指令相关联的预加载数据的地址范围之内,则进行数据预加载操作,以便从外部存储设备加载数据到指令处理装置的数据缓存中。本发明还公开了其中执行该方法的指令处理装置、处理器、片上系统和智能设备。

Description

一种数据预加载方法和指令处理装置
技术领域
本发明涉及处理器领域,尤其涉及具有数据预加载功能的处理器核心和处理器。
背景技术
现代的处理器或者处理器核心以流水线的方式来处理指令。典型的流水线通常包括取 指令、指令解码、指令发射、指令执行和指令退休等各个流水线阶段。
由于存储器的存取速度并未和处理器执行速度相匹配,目前在指令执行阶段,对存储 器进行操作的数据读取和写入操作成为了目前处理器性能的主要瓶颈之一。考虑到不同存 储介质的成本和存储速度,在现在的处理器架构中,通常采取分级存储的机制,即采用低 容量的高速缓存来缓存速度慢但成本也低的存储介质中的数据。缓存机制可以显著提高数 据存取操作的执行速度,但是一旦发生缓存缺失,则这类指令的执行速度会受到显著影响。 为了提高缓存的命中率,目前在处理器中可以采用数据预加载或者数据预取技术。预加载 或者预取技术在缓存可能会发生缺失之前发出预取请求以便在该数据真正被使用到时己 提前将数据块取入高速缓存中,从而避免缓存失效造成的处理器停顿。
另外,在现代的处理器中,为了提高内部逻辑元件的利用率以加快运行速度,通常会 采用多指令发射、乱序执行等各种措施。这样,编译器调度往往会将程序流后面的指令插 入数据冲突的指令之间提前执行,用来减少数据冲突所带来的损失。不管是从软件还是硬 件上来看,乱序执行是高性能处理器所采用的重要措施之一。
加载指令的乱序执行可能会对数据预取或者预加载的稳定性带来影响,例如,在现有 的预取方案中,利用后续指令是否命中高速缓存或是否命中预期的下一个地址来判断预取 效果。但是由于乱序执行,数据存取指令,特别是数据读取或者加载指令的地址很可能会 不符合之前的预期,从而认为预取策略失败而重新进行指令监控,从而导致了处理器性能 的损失。
为此需要一种新的数据预取或者预加载方案,可以高效地解决由于乱序执行而导致的 预取效率和处理器性能损失的问题。
发明内容
为此,本发明提供了一种新的指令处理装置、处理器和数据预加载处理方法,以力图 解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种数据预加载处理方法,适于在指令处理装置中执 行,包括步骤:确定在指令处理装置中执行的数据加载指令所指示的数据地址;以及如果 所确定的数据地址在与该数据加载指令相关联的预加载数据的地址范围之内,则进行数据 预加载操作,以便从外部存储设备加载数据到指令处理装置的数据缓存中。
可选地,根据本发明的处理方法还包括步骤:确定与该数据加载指令相对应的步幅值。 其中进行数据预加载操作的步骤包括:基于数据加载指令所指示的数据地址和所确定的步 幅值来确定预加载数据的地址,以及从外部存储设备的所确定的预加载地址处加载数据到 数据缓存中。
可选地,在根据本发明的处理方法中,在确定数据地址是否在预加载数据的地址范围 之内之前,该方法还包括步骤:确定是否存在与该数据加载指令相关联的数据预加载条目; 如果不存在该数据预加载条目,则创建数据预加载条目,并进行数据预加载操作;以及如 果存在数据预加载条目时,进行确定该数据地址是否在预加载数据的地址范围之内的步 骤。
可选地,在根据本发明的处理方法中,数据预加载条目包括数据初始地址和地址范围。 其中创建数据预加载条目的步骤包括:将该条目的数据初始地址设置为数据加载指令所指 示的数据地址;以及进行数据预加载操作的步骤包括:根据预加载数据的地址来更新数据 预加载条目的地址范围。
可选地,在根据本发明的处理方法中,数据预加载条目包括可信度。该方法还包括步 骤:如果所确定的数据地址在预加载数据的地址范围之内,更新该可信度;以及基于数据 加载指令所指示的数据地址和所确定的步幅值来确定预加载数据的地址的步骤包括基于 数据地址、步幅值和可信度来确定预加载数据的地址。
可选地,在根据本发明的处理方法中,其中更新可信度值包括增加可信度值;以及确 定预加载数据的地址的步骤包括:所确定的预加载数据地址覆盖的范围随着可信度值增加 而变大。
可选地,在根据本发明的处理方法中,确定数据地址是否在预加载数据的地址范围之 内包括:确定所述数据地址是否在前几次预加载数据的地址范围之内。
可选地,根据本发明的处理方法还包括步骤:如果所确定的数据地址在预加载数据的 地址范围之外,则清除预加载数据,并进行是否重新触发数据预加载的监控。
可选地,在根据本发明的处理方法中,在确定数据地址是否在预加载数据的地址范围 之内之前,该方法还包括步骤:确定是否触发了数据预加载处理;如果未触发数据预加载 处理,则对数据加载指令进行分析,以确定是否触发数据预加载处理。
可选地,在根据本发明的处理方法中,其中对数据加载指令进行分析以确定是否触发 数据预加载处理的步骤包括:确定包括数据加载指令之内的多条数据加载指令所指示的数 据地址,如果所确定的地址满足预定步幅模式,则确定触发数据预加载处理。
根据本发明的另一个方面,提供了一种指令处理装置,包括:数据缓存,适于存储从 耦接到该指令处理装置的外部存储设备加载的数据;以及指令执行单元,耦接到数据缓存 和外部存储设备,并适于执行数据加载指令,该数据加载指令适于从外部存储设备加载数 据。指令执行单元包括:指令地址计算单元,适于确定数据加载指令所指示的数据地址;以及预加载单元,适于在指令地址单元所确定的数据地址在与数据加载指令相关联的预加载数据的地址范围之内时,进行数据预加载,以便从外部存储设备加载数据到所述数据缓存中。
根据本发明的另一个方面,提供了一种片上系统,包括根据本发明的指令处理装置或 者处理器。
根据本发明的还有一个方面,提供了一种智能设备,包括根据本发明的片上系统。
根据本发明的方案,不是在当前数据加载指令所指示的数据地址和在上次进行数据预 取时预测的地址不一致就立刻认为预取失效,而是将该数据地址和所有有效预取数据的范 围进行比较,只要该数据地址在预取范围之内,就认为预取仍然有效,并继续进行预取, 通过这种方式,可以提高预取的冗余度,可以显著降低由于乱序执行而导致的预取性能减 低。
根据本发明的方案,还可以对数据加载指令进行分析,并且在连续命中预取策略时, 增加预取的可信度,并扩大预取范围,从而可以进一步提高预取的冗余度。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这 些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落 入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其 它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件 或元素。
图1示出了根据本发明一个实施例的指令处理装置的示意图;
图2示出了根据本发明一个实施例的指令执行单元的示意图;
图3示出了根据本发明一个实施例的数据预加载处理方法的流程示意图;
图4A示出了根据本发明实施例的指令处理流水线的示意图;
图4B示出了根据本发明实施例的处理器核架构的示意图;
图5示出了根据本发明一个实施例的处理器的示意图;
图6示出了根据本发明一个实施例的计算机系统的示意图;以及
图7示出了根据本发明的一个实施例的片上系统(SoC)的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示 例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限 制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完 整的传达给本领域的技术人员。
图1是根据本发明一个实施例的指令处理装置100的示意图。在一些实施例中,指令 处理装置100可以是处理器、多核处理器的处理器核、或者电子系统中的处理元件。
如图1所示,指令处理装置100包括取指令单元130。取指令单元130可以从高速缓存110、存储器120或其他源获取要处理的指令,并发送给解码单元140。取指令单元130 所取出的指令包括但不限于高级机器指令或者宏指令等。处理装置100通过执行这些指令 来完成特定功能。
解码单元140接收从取指令单元130传入的指令,并且解码这些指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了所接收的指令或者从所接收的指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。可使用各种不同的机制来实现解码单元140。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)。本发明不受限于实现解码 单元140的各种机制,任何可以实现解码单元140的机制都在本发明的保护范围之内。
随后,这些经解码的指令被发送到执行单元150,并由执行单元150执行。执行单元150包括可操作用于执行指令的电路。执行单元150在执行这些指令时,从寄存器组170、 高速缓存110和/或存储器120接收数据输入并向它们生成数据输出。
在一个实施例中,寄存器组170包括架构寄存器,架构寄存器也被称为寄存器。除非另外予以规定或清楚明显可知,在本文中,短语架构寄存器、寄存器组、以及寄存器用 于表示对软件和/或编程器可见(例如,软件可见的)和/或由宏指令指定来标识操作数的寄存器。这些寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)。根据一个实施例,寄存器组170可以包括一组矢量寄存器175,其 中的每个矢量寄存器175可以是512位、256位、或128位宽,或者可以使用不同的向量 宽度。可选地,寄存器组170还可以包括一组通用寄存器176。通用寄存器176可以在执 行单元执行指令时使用,例如存储跳转条件等。
执行单元150可以包括多个具体的指令执行单元150a、150b…150c等,这些指令执行单元诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元、数据存取单元等, 并且可以分别执行不同类型的指令。例如,指令执行单元150a为数据存取单元,可以执行 与数据操作相关的指令。与数据操作相关的指令包括数据存储指令和数据加载指令。数据 存储指令用于向高速缓存110或存储器120写入数据。而数据加载指令用于从高速缓存110 或存储器120读取数据。
数据加载指令的源操作数包括与要读取数据的存储位置相关的地址操作数(例如,操 作数为寄存器,根据该寄存器中存储的值可以计算要读取数据的存储位置),目的操作数 包括用于存放所读取的数据内容相关的数据操作数(例如,可以是另一个寄存器,或者寄 存器中的值指示的存储位置)。指令执行单元150a在处理数据加载指令时,会首先根据 源操作数的内容来计算要访问的存储器120的地址,随后从该地址读取数据并写入到数据 操作数指示的寄存器或者存储空间中。
指令执行单元150a在执行数据加载指令时,不一定直接从存储器120来读取数据。根据一种实施方式,指令处理装置100在高速缓存110中缓存存储器120中的部分内容。 当数据加载指令所指示的、在存储器120中预定位置处的数据已经在高速缓存110中进行 了缓存时,则指令执行单元150a可以从高速缓存110中获取已缓存的数据,从而显著提 高数据加载指令的执行速度。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置100。应当理解,指令 处理装置100可以具有不同的形式,例如指令处理装置或处理器的其他实施例可具有多个 核、逻辑处理器或执行引擎。
由于高速缓存110的空间大小通常小于存储器120,指令执行单元150a所要读取的数 据不一定都存储在高速缓存110中。因此,可以采用一种预取方案,以便可以对数据加载指令进行分析,并预先把要读取的数据加载到数据缓存中,以便减少由于数据未处于数据缓存110中而需要从存储器120读取的较长执行时间。但是由于指令在处理装置100中的 乱序执行,数据读取指令的地址很可能会不符合之前的预期,从而认为预取策略失败而重 新进行指令监控,为此,指令执行单元150a提供了一种数据预加载或者数据预取机制来 解决上述问题。
图2示出了根据本发明一个实施例的指令执行单元150a的示意图。应当注意的是,在图2中,根据要在指令执行单元150a中实现的数据预取操作(在下文中,也称为数据 预加载操作)而对指令执行单元150a中的各个部件进行了逻辑划分,这些逻辑划分方式 是示意性的,并且可以根据实际的物理布局和业务需要而进行重新划分,且没有脱离本发 明的保护范围。图3是对在指令执行单元150a中执行的数据预加载处理方法的描述。图3 所示方法可以由图2所示的各个部件来完成。当图2所示的部件进行重新组合和划分时, 可以根据新部件所承载的逻辑而完成相应的方法步骤,且没有脱离本发明的保护范围。
如图2所示,指令执行单元150a包括指令地址计算单元210。指令地址计算单元210接收执行单元150a要执行的数据加载指令,并确定该加载指令所指示的数据地址,即要 加载数据的数据地址。根据一种实施方式,在加载指令中可以立即数的方式直接指定数据 地址,也可以指示在寄存器中存储了数据地址,因此计算单元210需要从所指定的寄存器 获取该数据地址。根据另一种实施方式,加载指令中指定的数据地址为相对于基址的偏移量,计算单元210可以从例如特定寄存器中获取基址,并从加载指令中获取该偏移量,并 计算得到指令指示的要加载数据的地址。
存储操作单元220耦接到指令地址计算单元210,基于计算单元210所计算得到的加 载数据地址,从耦接到指令处理装置100的存储器120或者数据缓存110获取数据并加载到数据加载指令所指定的目标位置,如寄存器中或者寄存器指定的存储位置处。存储操作单元220根据例如在数据缓存110中维护的缓存记录来确定要处理的数据加载指令所要加载的数据是否已经缓存在数据缓存110中了。
根据一种实施方式,缓存记录可以数据地址做为索引项。存储操作单元220以要加载 数据的数据地址在该缓存记录中进行查询,如果命中记录,则直接从数据缓存110获取要 加载的数据,否则,则触发与存储器120的交互,以便从存储器120的指定位置(即加载指令指定的数据地址)获取数据。根据另一种实施方式,当缓存未命中时,存储操作单元220不是直接从存储器120获取数据,而是触发进行该数据的数据缓存,并且在数据被缓 存到数据缓存110中之后,从该数据缓存110中加载该数据。应当注意的是,本发明不受 限于存储操作单元220从数据缓存110和/或存储器120加载数据的具体形式,只要存储操 作单元220可以在数据加载指令要加载的数据已经在数据缓存110中时,从数据缓存110 加载该数据,则该存储操作单元220就在本发明的保护范围之内。
指令执行单元150a还包括预加载单元230。预加载单元230管理与当前在处理的数据 加载指令相对应的数据预加载处理。数据预加载是指对数据加载指令进行分析,以便预测 下次要加载的数据地址,并且在下次进行数据加载操作之前将该地址处的数据提前缓存到 数据缓存110中,从而降低了缓存未命中的几率。对数据预加载处理的管理包括,当存在 相应的数据预加载处理时,根据指令地址计算单元210所计算的当前数据地址,确定是否 继续进行数据预加载处理。根据一种实施方式,数据缓存110中已经存储了与该数据加载 指令相对应的预加载数据以及这些数据的地址范围。当计算单元210所计算得到的数据地 址在该地址范围之内时,则认为该数据预加载处理是有效的,并继续进行数据预加载处理, 以便从存储设备120加载数据到数据缓存110中以更新预加载的数据,并同时更新预加载数据的地址范围。这样,后续对数据加载指令进行处理时,可以根据更新后的地址范围来确定预加载的有效性,从而可以让预加载判断具有更大的裕度,并特别适于指令被乱序执行时的情况。
预加载单元230进一步包括步幅计算单元232、预加载执行单元234和控制单元236。 控制单元236控制预加载单元230的整体操作,包括确定计算单元210所确定的数据地址是否在已经预加载数据的地址范围之内以便进行数据预加载处理等。
步幅计算单元232接收数据加载指令,并可选地还接收计算单元210所确定的数据地址,来确定该数据加载指令相对应的步幅值。当存在与当前数据加载指令相对应的数据预加载时,计算相邻两次数据加载操作之间的地址间隔做为步幅。
当控制单元236确定数据预加载有效时,预加载执行单元234执行数据预加载操作, 以便基于数据加载指令指示的数据地址和步幅计算单元确定的步幅值来确定要预加载数 据的地址,并从存储器120的该预加载地址处加载数据到数据缓存110中,以便更新数据缓存中的预加载数据和预加载数据的地址范围。
为了对数据预加载处理进行管理,预加载单元230还可以包括用于存储与该数据加载 指令相对应的数据预加载条目的存储单元238。根据一种实施方式,存储单元238可以在 数据缓存110中存储数据预加载条目,而存储单元238仅仅提供了访问该数据预加载条目的入口。
考虑到这样的情况,即预加载单元230确定要触发进行数据预加载操作,但是还没有 实际开始进行数据预加载操作,即当前的数据加载指令是确定要进行数据预加载操作之后 的第一条要处理的指令。此时还没有已经预加载的数据,但是应当认为数据预加载是有效 的,并直接进行数据预加载操作。
为此,在控制单元236进行地址比较之前(即进行数据加载指令所指示的数据地址是 否在预加载数据的地址范围之内之前),如果预加载单元230确定要触发进行数据预加载 操作,则控制单元236检查在存储单元238中是否存在与该数据加载指令相对应的预加载条目。如果该条目已经存在了,则说明现在已经进行了相应的预加载操作,并在数据缓存110中具有相应的预加载数据,因此,控制单元236进行后续的地址比较操作。
相反地,如果该预加载条目不存在,则说明虽然预加载操作被触发了,但是没有开始 实际执行,因此相应地,控制单元236在存储单元238中创建该预加载条目,并指示预 加载执行单元234执行数据预加载操作。
根据一种实施方式,数据预加载条目包括数据初始地址和预加载数据的地址范围。在 控制单元236创建该数据预加载条目时,将该条目的数据初始地址设置为当前数据加载指 令所指示的数据地址,即触发数据预加载操作之后执行的第一条数据加载指令所指示的数 据地址。同时,预加载执行单元234在执行预加载操作时,根据预加载数据的地址来更新 该数据预加载条目的地址范围。例如,如果预加载操作预读取了距离初始地址为N个步 幅的地址处的数据,而当前的地址范围为初始地址到N-2个步幅,则可以把地址范围更 新为初始地址到N个步幅。根据一种实施方式,预加载执行单元234不需要在实际预加载数据到数据缓存110中之后进行地址范围更新,而是可以在确定要预加载的数据地址之后就进行地址范围更新。本发明不受限于进行地址范围更新的具体方式,所有可以根据当前预加载操作所指示的预取数据地址来更新预加载条目的地址范围的方式都在本发明的保护范围之内。
根据另一种实施方式,数据预加载条目还可以包括可信度。控制单元236在确定预加 载操作有效(即数据加载指令所指示的数据地址在预加载数据的地址范围之内)时,更新 该可信度,例如增加该可信度值。
预加载执行单元234在确定预加载数据的地址时,除了考虑数据加载指令所指示的数 据地址和步幅计算单元232所确定的步幅值之外,还可以考虑该可信度。例如,当可信度 值较低时,说明数据加载指令连续命中预加载策略的次数不多,此时可以预加载较少的数 据。而当数据加载指令连续命中预加载策略的次数较多时,则很可能说明预加载策略的可 信度较高,因此可以适当扩大预加载数据的范围,从而一次可以预加载较多的数据到数据 缓存110中。
根据还有一种实施方式,考虑到乱序执行会导致的影响,控制单元236在确定数据预 加载的有效性时,除了进行地址范围的判断之外,还可以进行当前数据地址和预加载条目 中的数据初始地址之间的差距是否为步幅的整数倍,例如2倍、3倍等的判断。如果差值为整数倍,则说明当前的数据加载指令仍然符合数据预加载的步幅模式,并因此可以继续进行数据预加载操作。
如上所述,预加载单元230管理与当前处理的数据加载指令相对应的数据预加载处理, 因此当控制单元236确定当前的数据加载指令所指示的数据地址在已经预加载数据的地址 范围之外时,则控制单元236停止当前的预加载处理,例如清除在存储单元238中的预 加载数据条目,并对后续的数据加载指令进行监控,以便确定是否重新触发数据预加载处 理。根据一种实施方式,当数据预加载条目包括可信度时,可以在控制单元236确定当前的数据加载指令所指示的数据地址在已经预加载数据的地址范围之外时,降低该数据预加载条目的可信度,并且当可信度低于某个阈值时,才由控制单元236停止当前的预加载处理。可选地,控制单元236还可以清除数据缓存110中已经预加载的数据。根据另一种 实施方式,控制单元236可以不清除预加载的数据,而是让数据缓存110来自己管理该 缓存的数据。
预加载单元230对数据预加载的管理还包括,当不存在数据预加载处理时,预加载单 元230,特别是控制单元236对指令执行单元150a中执行的数据加载指令进行分析,以便当数据加载指令符合预定条件时,触发数据预加载处理。
根据一种实施方式,步幅计算单元232可以对多条数据加载指令所指示的数据地址以 及规律进行分析,以确定这些数据地址是否满足预定步幅模式。控制单元236在确定多个 数据地址满足步幅模式时,确定触发数据预加载处理,并确定相应的步幅。
例如假设存在有数据加载指令序列i0,i1,i2,i3,i4,i5,指令地址计算单元210所计算得 到的加载地址分别为a0,a1,a2,a3,a4,a5,在步幅计算单元232中,会分别计算出相邻地 址的差值,即a1-a0,a2-a1,a3-a2...,记为s0,s1,s2,s3,s4。当s0=s1=s2=s3时,我们认 为此时的步幅达到了一个稳定值,因此,控制单元236确定可以触发数据预加载操作。
本发明不受限于以固定步幅模式来触发数据预加载操作的触发形式,任何能够触发数 据预加载的模式都在本发明的保护范围之内。
利用参考图2描述的指令执行单元150a,可以在确定数据加载指令所指示的数据地 址在预定范围之内时,继续判断数据预加载有效,提高了数据预加载失效的门槛,对于乱 序执行而言,可以显著降低预加载失效的几率,提高数据读取的性能。
图3示出了根据本发明一个实施例的数据预加载处理方法300的流程示意图。方法300适于在图1所示的指令处理装置100,特别是图2所示的指令执行单元150a中执行。 方法300始于步骤S310。在步骤S310中,确定在装置100中是否已经触发了与该数据 加载指令相对应的数据预加载处理。
如果在步骤S310中确定还没有触发相应的数据预加载处理,则在步骤S315中,对该数据加载指令以及之前的数据加载指令进行分析,以便当数据加载指令符合预定条件时,触发数据预加载处理。根据一种实施方式,在步骤S315中,可以对多条数据加载指 令所指示的数据地址以及规律进行分析,以确定这些数据地址是否满足预定步幅模式。当 这些数据地址满足预定步幅模式时,则可以触发数据预加载处理。本发明不受限于以预定 步幅模式来触发数据预加载操作的触发形式,任何能够触发数据预加载的模式都在本发明 的保护范围之内。
如果在步骤S315中确定不能触发数据预加载处理,则退出数据预加载处理,并由指 令执行单元来执行该数据加载指令。如果在步骤S315中确定触发了数据预加载处理,则在装置100中进行标记,以指示在装置100中触发了与该数据加载指令相对应的预加载 处理,并继续到步骤S320。
当在步骤S310中确定已经触发了相应的数据预加载处理时,则方法300同样继续到 步骤S320。在步骤S320中,确定与该数据加载指令相对应的数据预加载操作是否已经开始执行了。根据一种实施方式,在确定触发了数据预加载处理之后,有可能还没正式开始进行数据预加载操作。当在步骤S320确定预加载操作已经被触发了但是还没开始执行时,则当前的数据加载指令是数据预加载操作被触发之后的第一条要执行的指令,因此在步骤S325中,确定开始进行数据预加载操作,例如进行数据预加载操作标记,并随后在 步骤S350中进行实际的数据预加载操作。
根据一种实施方式,可以利用专门的数据预加载条目来管理数据预加载操作。在步骤 S320中,可以根据数据预加载条目是否存在来确定数据预加载操作是否已经开始执行了。 当在步骤S320中确定该预加载条目不存在时,说明虽然预加载操作被触发了,但是没有 开始实际执行,随后在步骤S325中,创建该预加载条目以确定开始进行数据预加载操作, 并且方法300接着继续到步骤S350,以便进行数据预加载操作。
根据一种实施方式,数据预加载条目包括数据初始地址。在步骤S325中创建该数据 预加载条目时,将该条目的数据初始地址设置为当前数据加载指令所指示的数据地址,即 触发数据预加载操作之后执行的第一条数据加载指令所指示的数据地址。
当在步骤S320中确定已经开始进行实际的数据预加载操作时,则在步骤S330中,对数据加载指令所指示的地址和已预加载的数据的地址范围进行比较,以确定预加载的数据是否被命中。
应当注意的是,在方法300的处理中,在多个步骤(包括但不限于步骤S330、S315、S325等)中需要数据加载指令所指示的数据地址,而且在方法300之外执行该数据加载 指令时,同样需要该数据地址。因此,可以在方法300执行之前就计算该数据地址,或者 在各个步骤实际需要数据地址时执行。上面已经参考图2的数据地址计算单元210详细描 述了如何计算数据加载指令所指示的数据地址的具体处理,这里不再进行赘述。计算数据 加载指令所指示的数据地址的各种方式都在本发明的保护范围之内。
根据一种实施方式,在装置100中,在数据预加载条目中存储预加载数据的地址范围, 因此,在步骤S330中,可以参考数据预加载条目中存储的地址范围来确定加载指令所指 示的地址是否在地址范围之内。
如果在步骤S330中确定加载指令所指示的地址在已预加载数据的地址范围之内,则 说明预加载处理是有效的,因此,方法300继续到步骤S350来继续进行数据预加载操作。
在步骤S350中,还需要确定该数据加载指令相对应的步幅值。当存在与当前数据加 载指令相对应的数据预加载时,计算相邻两次数据加载操作之间的地址间隔做为步幅。在 确定了步幅值之后,在步骤S350中,根据数据加载指令指示的数据地址和所确定的步幅值来确定要预加载数据的地址,并从存储器120的该预加载地址处加载数据到数据缓存110中,以便更新数据缓存中的预加载数据。
随后,在步骤S355中,根据步骤S350的预加载数据操作结果来更新预加载数据的地址范围。根据一种实施方式,在步骤S355中,不需要在步骤S350中实际预加载数据 到数据缓存110中之后进行地址范围更新,而是可以在步骤S350确定要预加载的数据地 址之后就进行地址范围更新,即步骤S355可以和步骤S350并行执行。
如上所述,当存在数据预加载条目时,在步骤S355中的处理则包括更新数据预加载 条目中的相应地址范围。当步骤S350是数据预加载操作被触发之后的第一次执行时,则可以将该地址范围设置为指初始地址到1个步幅。
如果在步骤S330中的判断确定预加载处理无效,即加载指令所指示的地址在已预加 载数据的地址范围之外而导致预加载数据未被命中,则方法300继续到步骤S340,以便在步骤S340中,停止当前的预加载处理,例如清除预加载数据条目,并结束当前的预加 载处理方法300,并当有新的数据加载指令要执行时,重新进入方法300来对后续的数据 加载指令进行监控,以便确定是否重新触发数据预加载处理。
根据一种实施方式,数据预加载条目还包括可信度。在步骤S330中确定预加载操作 有效(即数据加载指令所指示的数据地址在预加载数据的地址范围之内)时,更新该可信 度值,例如增加该可信度值。
随后在步骤S350中在确定预加载数据的地址时,除了考虑数据加载指令所指示的数 据地址和所确定的步幅值之外,还可以考虑该可信度值。例如,当可信度值较低时,说明数据加载指令连续命中预加载策略的次数不多,此时可以预加载较少的数据。而当数据加载指令连续命中预加载策略的次数较多时,则很可能说明预加载策略的可信度较高,因此可以适当扩大预加载数据的范围,从而一次可以预加载较多的数据到数据缓存110中。
根据还有一种实施方式,考虑到乱序执行会导致的影响,在步骤S330中确定数据预 加载的有效性时,除了进行地址范围的判断之外,还可以进行当前数据地址和预加载条目 中的数据初始地址之间的差距是否为步幅的整数倍,例如2倍、3倍等的判断。如果差值为整数倍,则说明当前的数据加载指令仍然符合数据预加载的步幅模式,并因此可以继续进行数据预加载操作。
利用参考图3描述的数据预加载处理方法,可以在确定数据加载指令所指示的数据地 址在预定范围之内时,继续判断数据预加载有效,提高了数据预加载失效的门槛,对于乱 序执行而言,可以显著降低预加载失效的几率,提高数据读取的性能。
如上所述,根据本发明的指令处理装置可以实现为处理器核,且指令处理方法可以在 处理器核中执行。处理器核可以不同的方式在不同的处理器中实现。例如,处理器核可以 实现为用于通用计算的通用有序核、用于通用计算的高性能通用无序核、以及用于图形和 /或科学(吞吐量)计算的专用核。而处理器可以实现为CPU(中央处理器)和/或协处理器, 其中CPU可以包括一个或多个通用有序核和/或一个或多个通用无序核,而协处理器可以 包括一个或多个专用核。这样的不同处理器的组合可以导致不同的计算机系统架构。在一 种计算机系统架构中,协处理器在与CPU分开的芯片上。在另一种计算机系统架构中,协处理器在与CPU相同的封装中但处于分开的管芯上。在还有一种计算机系统架构中,协处理器与CPU在相同管芯上(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核)。在还有一种称为片上系统的计算机系统架构中,可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。后续将参考图4A-图7来描述示例性的核架构、处理器和计算 机架构。
图4A为示出根据本发明实施例的指令处理流水线的示意图,其中流水线包括有序流 水线以及无序发布/执行流水线。图4B为示出根据本发明实施例的处理器核架构的示意图, 其中包括有序架构核以及与寄存器重命名相关的无序发布/执行架构核。在图4A和4B中, 用实线框示出了有序流水线和有序核,而在虚线框中的可选附加项示出了无序发布/执行流 水线和核。
如图4A所示,处理器流水线900包括取出级902、长度解码级904、解码级906、 分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、 执行级916、写回/存储器写入级918、异常处理级922和提交级924。
如图4B所示,处理器核900包括执行引擎单元950和耦合到执行引擎单元950的前端单元930。执行引擎单元950和前端单元930两者都耦合到存储器单元970。核990可 以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或 替代核类型。作为又一选项,核990可以是专用核,诸如例如网络或通信核、压缩引擎、 协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核(GPU)等等。
前端单元930包括分支预测单元934、耦接到分预测单元934的指令高速缓存单元932、耦接到指令高速缓存单元936的指令转换后备缓冲器(TLB)938、耦接到指令转换后 备缓冲器940的指令取出单元938、和耦接到指令取出单元938的解码单元940。解码单 元(或解码器)940可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指 令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其 他控制信号作为输出。解码单元940可使用各种不同的机制来实现,包括但不限于查找表、 硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990 包括存储(例如,在解码单元940中或否则在前端单元930内的)某些宏指令的微代码的微 代码ROM或其他介质。解码单元940耦接到至执行引擎单元950中的重命名/分配器单元 952。
执行引擎单元950包括重命名/分配器单元952。重命名/分配器单元952耦接到引退 单元954和一个或多个调度器单元956。调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元956耦接到各个物理寄存器组单元958。每个物理 寄存器组单元958表示一个或多个物理寄存器组。不同的物理寄存器组存储一种或多种不 同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、 状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器 组单元958包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元 可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元958被引 退单元954覆盖以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新 排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器 图和寄存器池等等)。引退单元954和物理寄存器组单元958耦接到执行群集960。执行群 集960包括一个或多个执行单元962和一个或多个存储器访问单元964。执行单元962可 以执行各种操作(例如,移位、加法、减法、乘法),以及对各种类型的数据(例如,标量浮 点、打包整数、打包浮点、向量整型、向量浮点)执行操作。尽管某些实施例可以包括专用 于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个 执行单元或多个执行单元。在一些实施例中,由于会为某些类型的数据/操作创建单独的流 水线(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和 /或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线), 所以调度器单元956、物理寄存器组单元958和执行群集960可能有多个。还应当理解, 在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其 余流水线可以是有序发布/执行。
存储器访问单元964耦接到存储器单元970,该存储器单元970包括数据TLB单元972、 耦接到数据TLB单元972的数据高速缓存单元974、以及耦接到数据高速缓存单元974的二级(L2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可包括加载 单元、存储地址单元和存储数据单元,其中的每一个均耦接到到存储器单元970中的数据 TLB单元972。指令高速缓存单元934还可以耦接到存储器单元970中的二级(L2)高速缓 存单元976。L2高速缓存单元976耦接到一个或多个其他级的高速缓存,并最终耦接到主 存储器。
作为示例,上面参考图4B描述的核架构可以如下方式来实现上面参考图4A描述的流水线900:1)指令取出单元938执行取出和长度解码级902和904;2)解码单元940执行 解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)调度器单元956 执行调度级912;5)物理寄存器组单元958和存储器单元970执行寄存器读取/存储器读取 级914;执行群集960执行执行级916;6)存储器单元970和物理寄存器组单元958执行写 回/存储器写入级918;7)各单元可牵涉到异常处理级922;以及8)引退单元954和物理寄 存器组单元958执行提交级924。
核990可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的某些 扩展);MIPS技术公司的MIPS指令集;ARM控股的ARM指令集(具有诸如NEON等可 选附加扩展)),其中包括本文中描述的各指令。应当理解,核可支持多线程化(执行两个或 更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包 括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每 一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来 同步多线程化)。
图5示出了根据本发明一个实施例的处理器1100的示意图。如图5中的实线框所示, 根据一种实施方式,处理器1110包括单个核1102A、系统代理单元1110、总线控制器单元1116。如图5中的虚线框所示,根据本发明的另一个实施方式,处理器1100还可以包 括多个核1102A-N、处于系统代理单元1110中的集成存储器控制器单元1114以及专用逻 辑1108。
根据一种实施方式,处理器1100可以实现为中央处理器(CPU),其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),且核1102A-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合)。根据另一种实施方式,处理器1100可以实现为协处理器,其中核1102A-N是用于图形和/或科学(吞吐量)的多个专用核。根据还有一种实施方式,处理器1100可以实现为协处理器,其中核1102A-N是多个通用 有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如网络 或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众 核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个 或多个芯片上。处理器1100可以是一个或多个衬底的一部分,和/或可以使用诸如例如 BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬 底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速 缓存单元1106、以及耦接到集成存储器控制器单元1114的外部存储器(未示出)。该共享高 速缓存单元1106可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4) 或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于 环的互连单元1112将集成图形逻辑1108、共享高速缓存单元1106以及系统代理单元1110/ 集成存储器控制器单元1114互连,本发明不受限于此,并且可使用任何数量的公知技术 来将这些单元互连。
系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例 如功率控制单元(PCU)和显示单元。PCU可以包括调整核1102A-N和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N可以具有上面参考图1和4B描述的核架构,并且在架构指令集方面可以是同构的或异构的。即,这些核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图6示出了根据本发明一个实施例的计算机系统1200的示意图。图6所示的计算机系统1200可以应用于膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务 器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、 视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其 他电子设备。本发明不受限于此,所有可以纳入本说明书中所公开的处理器和/或其它执行 逻辑的系统都在本发明的保护范围之内。
如图6所示,系统1200可以包括一个或多个处理器1210、1215。这些处理器耦接到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢 (GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上)。GMCH 1290包括与存 储器1240和协处理器1245相耦接的存储器控制器和图形控制器。IOH 1250将输入/输出 (I/O)设备1260耦接到GMCH 1290。做为选择,存储器控制器和图形控制器集成在处理器 中,这样存储器1240和协处理器1245就直接耦接到处理器1210,此时控制器中枢1220 仅仅包括IOH1250。
附加处理器1215的任选性质用虚线表示在图6中。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是图5所示的处理器1100的某一版本。
存储器1240可以是例如动态随机访问存储器(DRAM)、相变存储器(PCM)或这两者的 组合。对于至少一个实施例,控制器中枢1220经由诸如前侧总线(FSB)之类的多分支总线 (multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1295与处理 器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例 中,控制器中枢1220可以包括集成图形加速器。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这 些指令中的可以是协处理器指令。处理器1210识别如具有应当由附连的协处理器1245执 行的类型的这些协处理器指令。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。
图7示出了根据本发明的一个实施例的片上系统(SoC)1500的示意图。图7所示的片上系统包含了图5所示的处理器1100,因此与图5中相似的部件具有同样的附图标记。 如图7所示,互连单元1502耦接到应用处理器1510、系统代理单元1110、总线控制器单 元1116、集成存储器控制器单元1114、一个或多个协处理器1520、静态随机存取存储器(SRAM)单元1530、直接存储器存取(DMA)单元1532以及用于耦合至一个或多个外部显示 器的显示单元1540。应用处理器1510包括一个或多个核1102A-N的集合以及共享高速缓 存单元110。协处理器1520包括集成图形逻辑、图像处理器、音频处理器和视频处理器。 在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处理器、压缩引 擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
另外,上面描述的片上系统可以包含在智能设备中,以便在智能设备中实现相应的功 能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能 设备中的外设等。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包 括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能 显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而 赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种IoT和AIoT设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行AI运算、数据通信和传输等,从而实现了更加密集且更加 智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车 辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、 智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设 控制,从而实现了家庭和娱乐设备的智能化。
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、 IoT设备,AIoT设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
以上对智能设备的描述仅仅是示意性的,根据本发明的智能设备不受限于此,所有可 以利用根据本发明的片上系统进行数据处理的智能设备都在本发明的保护范围之内。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合 中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系 统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一 个输入设备以及至少一个输出设备。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发 明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者 对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发 明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求 书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体 实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本 发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可 以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同 的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模 块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变 并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或 组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组 件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合 对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何 方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权 利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来 代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所 包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围 之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意 之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述 功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素 的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所 述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功 能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描 述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须 具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的 技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意, 本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限 定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于 本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对 本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (22)

1.一种数据预加载处理方法,适于在指令处理装置中执行,包括步骤:
确定在所述指令处理装置中执行的数据加载指令所指示的数据地址,所述数据加载指令适于从耦接到所述指令处理装置的外部存储设备中加载数据;以及
如果所确定的数据地址在与所述数据加载指令相关联的预加载数据的地址范围之内,则进行数据预加载操作,以便从所述外部存储设备加载数据到所述指令处理装置的数据缓存中。
2.如权利要求1所述的处理方法,还包括步骤:
确定与所述数据加载指令相对应的步幅值;以及
所述进行数据预加载操作的步骤包括:基于所述数据加载指令所指示的数据地址和所确定的步幅值来确定预加载数据的地址,以及从所述外部存储设备的所确定的预加载地址处加载数据到所述数据缓存中。
3.如权利要求1或者2所述的处理方法,其中在确定所述数据地址是否在所述预加载数据的地址范围之内之前,所述方法还包括步骤:
确定是否存在与所述数据加载指令相关联的数据预加载条目;
如果不存在所述数据预加载条目,则创建所述数据预加载条目,并进行所述数据预加载操作;以及
如果存在所述数据预加载条目时,进行所述确定所述数据地址是否在所述预加载数据的地址范围之内的步骤。
4.如权利要求3所述的处理方法,其中所述数据预加载条目包括数据初始地址和地址范围;
所述创建数据预加载条目的步骤包括:将所述条目的数据初始地址设置为所述数据加载指令所指示的数据地址;以及
所述进行数据预加载操作的步骤包括:根据所述预加载数据的地址来更新所述数据预加载条目的地址范围。
5.如权利要求1-4中任一个所述的处理方法,其中所述数据预加载条目包括可信度,所述方法还包括步骤:
如果所确定的数据地址在所述预加载数据的地址范围之内,更新所述可信度;以及
所述基于所述数据加载指令所指示的数据地址和所确定的步幅值来确定预加载数据的地址的步骤包括基于所述数据地址、所述步幅值和所述可信度来确定所述预加载数据的地址。
6.如权利要求5所述的处理方法,所述更新可信度值包括增加所述可信度值;以及
所述确定预加载数据的地址的步骤包括:所确定的预加载数据地址覆盖的范围随着可信度值增加而变大。
7.如权利要求1-6中任一个所述的处理方法,其中所述确定所述数据地址是否在所述预加载数据的地址范围之内包括:确定所述数据地址是否在前几次预加载数据的地址范围之内。
8.如权利要求1-7中任一个所述的处理方法,还包括步骤:
如果所确定的数据地址在所述预加载数据的地址范围之外,则清除所述预加载数据,并进行是否重新触发数据预加载的监控。
9.如权利要求1-8中任一个所述的处理方法,其中在确定所述数据地址是否在所述预加载数据的地址范围之内之前,所述方法还包括步骤:
确定是否触发了所述数据预加载处理;
如果未触发所述数据预加载处理,则对所述数据加载指令进行分析,以确定是否触发所述数据预加载处理。
10.如权利要求9所述的处理方法,所述对数据加载指令进行分析以确定是否触发所述数据预加载处理的步骤包括:
确定包括所述数据加载指令之内的多条数据加载指令所指示的数据地址,如果所确定的地址满足预定步幅模式,则确定触发所述数据预加载处理。
11.一种指令处理装置,包括:
数据缓存,适于存储从耦接到所述指令处理装置的外部存储设备加载的数据;以及
指令执行单元,耦接到所述数据缓存和所述外部存储设备,并适于执行数据加载指令,所述数据加载指令适于从所述外部存储设备加载数据,以及所述指令执行单元包括:
指令地址计算单元,适于确定所述数据加载指令所指示的数据地址;以及
预加载单元,适于在所述指令地址单元所确定的数据地址在与所述数据加载指令相关联的预加载数据的地址范围之内时,进行数据预加载,以便从所述外部存储设备加载数据到所述数据缓存中。
12.如权利要求11所述的指令处理装置,其中所述预加载单元包括:
步幅计算单元,适于确定与所述数据加载指令相对应的步幅值;
预加载执行单元,适于执行数据预加载操作,以便基于所述数据加载指令所指示的数据地址和所确定的步幅值来确定预加载数据的地址,从所述外部存储设备的所确定的预加载地址处加载数据到所述数据缓存中,以便更新所述预加载数据和所述预加载数据的地址范围;以及
控制单元,适于确定所述指令地址计算单元所确定的数据地址是否在所述预加载数据的地址范围之内。
13.如权利要求11或者12所述的指令处理装置,其中所述预加载单元还包括存储单元,适于存储与所述数据加载指令相对应的数据预加载条目;以及
所述控制单元还适于在确定所述指令地址计算单元所确定的数据地址是否在所述预加载数据的地址范围之内之前,确定所述存储单元中是否存在相对应的数据预加载条目,并当不存在所述数据预加载条目时,创建所述数据预加载条目,并指示所述预加载执行单元执行所述数据预加载操作。
14.如权利要求13所述的指令处理装置,其中所述数据预加载条目包括数据初始地址和地址范围;
所述控制单元适于在创建所述数据预加载条目时,将所述条目的数据初始地址设置为所述数据加载指令所指示的数据地址;以及
所述预加载执行单元适于在执行所述数据预加载操作时,根据所述预加载数据的地址来更新所述数据预加载条目的地址范围。
15.如权利要求11-14中任一个所述的指令处理装置,其中所述数据预加载条目包括可信度,所述控制单元还适于在确定所述数据地址在所述预加载数据的地址范围之内时,更新所述可信度值;以及
所述预加载执行单元适于基于所述数据加载指令所指示的数据地址、所确定的步幅值和所述可信度来确定所述预加载数据的地址。
16.如权利要求15所述的指令处理装置,其中所确定的预加载数据地址覆盖的范围随着可信度值增加而变大;以及
所述控制单元适于在确定所述数据地址在所述预加载数据的地址范围之内时,增加所述可信度值。
17.如权利要求11-16中任一个所述的指令处理装置,其中所述控制单元适于在所述确定所述数据地址是否在所述预加载数据的地址范围之内时,确定所述数据地址与数据预加载条目之间的差值是否为所述步幅的整数倍。
18.如权利要求11-17中任一个所述的指令处理装置,其中所述控制单元适于在确定所述数据地址在所述预加载数据的地址范围之外时,停止当前的数据预加载处理,并进行是否重新触发数据预加载的监控。
19.如权利要求11-18中任一个所述的指令处理装置,其中所述控制单元适于在确定所述数据地址是否在所述预加载数据的地址范围之内之前,确定是否所述数据预加载处理是否已经触发了,并且在未触发所述数据预加载处理时,对所述数据加载指令进行分析,以确定是否触发所述数据预加载处理。
20.如权利要求19所述的指令处理装置,其中所述步幅计算单元适于根据所述数据加载指令之内的多条数据加载指令所指示的数据地址,来确定所指示的数据地址是否满足预定步幅模式;以及
所述控制单元适于在所述步幅计算单元指示所述数据地址满足预定步幅模式时,触发所述数据预加载处理。
21.一种片上系统,包括如权利要求11-20中任一个所述的指令处理装置。
22.一种智能设备,包括如权利要求21所述的片上系统。
CN201910745174.3A 2019-08-13 2019-08-13 一种数据预加载方法和指令处理装置 Active CN112395000B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910745174.3A CN112395000B (zh) 2019-08-13 2019-08-13 一种数据预加载方法和指令处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910745174.3A CN112395000B (zh) 2019-08-13 2019-08-13 一种数据预加载方法和指令处理装置

Publications (2)

Publication Number Publication Date
CN112395000A true CN112395000A (zh) 2021-02-23
CN112395000B CN112395000B (zh) 2023-05-26

Family

ID=74601125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910745174.3A Active CN112395000B (zh) 2019-08-13 2019-08-13 一种数据预加载方法和指令处理装置

Country Status (1)

Country Link
CN (1) CN112395000B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116520754A (zh) * 2023-06-27 2023-08-01 厦门芯泰达集成电路有限公司 基于预加载模式的dps模块控制方法、系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030105942A1 (en) * 2001-11-28 2003-06-05 Sun Microsystems, Inc. Aggressive prefetch of address chains
US20080282062A1 (en) * 2007-05-07 2008-11-13 Montvelishsky Michael B Method and apparatus for loading data and instructions into a computer
CN101882063A (zh) * 2009-08-07 2010-11-10 威盛电子股份有限公司 微处理器以及预取数据至微处理器的方法
CN107077334A (zh) * 2014-12-27 2017-08-18 英特尔公司 从多维阵列预取多维元素块的硬件装置和方法
US20180095756A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers
CN108027766A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 预取指令块
CN108027732A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 与断言的加载指令相关联的预取

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030105942A1 (en) * 2001-11-28 2003-06-05 Sun Microsystems, Inc. Aggressive prefetch of address chains
US20080282062A1 (en) * 2007-05-07 2008-11-13 Montvelishsky Michael B Method and apparatus for loading data and instructions into a computer
CN101882063A (zh) * 2009-08-07 2010-11-10 威盛电子股份有限公司 微处理器以及预取数据至微处理器的方法
CN107077334A (zh) * 2014-12-27 2017-08-18 英特尔公司 从多维阵列预取多维元素块的硬件装置和方法
CN108027766A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 预取指令块
CN108027732A (zh) * 2015-09-19 2018-05-11 微软技术许可有限责任公司 与断言的加载指令相关联的预取
US20180095756A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘生平: "桌面Linux内存管理性能优化技术研究与实现", 《中国硕士学位论文全文数据库(信息科技辑)》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116520754A (zh) * 2023-06-27 2023-08-01 厦门芯泰达集成电路有限公司 基于预加载模式的dps模块控制方法、系统
CN116520754B (zh) * 2023-06-27 2023-09-22 厦门芯泰达集成电路有限公司 基于预加载模式的dps模块控制方法、系统

Also Published As

Publication number Publication date
CN112395000B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US7818542B2 (en) Method and apparatus for length decoding variable length instructions
US20140095847A1 (en) Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
US20090164758A1 (en) System and Method for Performing Locked Operations
US11188341B2 (en) System, apparatus and method for symbolic store address generation for data-parallel processor
US11550731B2 (en) Processing method and apparatus for translation lookaside buffer flush instruction
US6470444B1 (en) Method and apparatus for dividing a store operation into pre-fetch and store micro-operations
US9946546B2 (en) Processor and instruction code generation device
CN114661434A (zh) 用于难以预测的分支的替代路径解码
US11907712B2 (en) Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
CN112395000B (zh) 一种数据预加载方法和指令处理装置
EP4020229A1 (en) System, apparatus and method for prefetching physical pages in a processor
EP3905034A1 (en) A code prefetch instruction
CN114661358A (zh) 基于分支指令信息来访问分支目标缓冲器
CN114661360A (zh) 基于分支指令类型的分段分支目标缓冲器
EP3757772A1 (en) System, apparatus and method for a hybrid reservation station for a processor
CN112559037B (zh) 一种指令执行方法、单元、装置及系统
CN112540937A (zh) 一种缓存、数据访问方法和指令处理装置
EP4202664B1 (en) System, apparatus and method for throttling fusion of micro-operations in a processor
US20230195634A1 (en) Prefetcher with low-level software configurability
US20230342148A1 (en) Microprocessor with non-cacheable memory load prediction
US20240004808A1 (en) Optimized prioritization of memory accesses
US20240037036A1 (en) Scheduling merged store operations in compliance with store ordering rules

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