CN112559037A - 一种指令执行方法、单元、装置及系统 - Google Patents
一种指令执行方法、单元、装置及系统 Download PDFInfo
- Publication number
- CN112559037A CN112559037A CN201910912624.3A CN201910912624A CN112559037A CN 112559037 A CN112559037 A CN 112559037A CN 201910912624 A CN201910912624 A CN 201910912624A CN 112559037 A CN112559037 A CN 112559037A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- address
- unit
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 239000000872 buffer Substances 0.000 claims abstract description 64
- 238000012545 processing Methods 0.000 claims abstract description 45
- 238000010586 diagram Methods 0.000 description 18
- 238000007667 floating Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 206010063385 Intellectualisation Diseases 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission 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
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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
- 230000008447 perception Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
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)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例公开了一种指令执行方法,包括:接收地址非对齐的数据加载指令,数据加载指令指示从存储器读取目标数据;从缓存器获取目标数据的第一部分数据;从存储器获取目标数据的第二部分数据;以及合并第一部分数据和第二部分数据,得到目标数据。本发明实施例还公开了相应的指令执行单元、指令处理装置、片上系统及智能设备。
Description
技术领域
本发明涉及处理器领域,尤其涉及一种指令执行方法、单元、装置及系统。
背景技术
处理器一般能够执行指令以访问存储器。例如,处理器可以执行数据加载指令从存储器读取数据。
对于有些处理器,特别是精简指令集(RISC)处理器来说,在执行数据加载指令时,指令所要读取的数据的地址必须是数据长度的整数倍,也就是必须地址对齐。如果数据加载指令是地址非对齐的,则会引起异常。
对于这种地址非对齐的数据加载指令,传统的处理方式是将其拆分为两次对存储器的访问,将两次访问获取的数据合并得到指令的执行结果。然而,现代的处理器或者处理器核心以流水线的方式来处理指令。传统的处理方式会占用两次处理器流水线,执行速度和执行效率都较低。并且,由于多次访问存储器,还会极大地降低处理器的性能,导致高功耗。
因此,期望提供一种更为先进的指令执行方案,以解决执行地址非对齐的数据加载指令时执行效率低下和处理器性能损失等问题。
发明内容
为此,本发明实施例提供一种指令执行方法、单元、装置及系统,以力图解决或至少缓解上面存在的问题。
根据本发明实施例的一个方面,提供了一种指令执行方法,包括:接收地址非对齐的数据加载指令,数据加载指令指示从存储器读取目标数据;从缓存器获取目标数据的第一部分数据,第一部分数据为目标数据中第一多个位的数据;从存储器获取目标数据的第二部分数据,第二部分数据为目标数据中第二多个位的数据;以及合并第一部分数据和第二部分数据,得到目标数据。
可选地,在根据本发明实施例的方法中,缓存器存储有至少一条缓存数据,从缓存器获取目标数据的第一部分数据的步骤包括:基于第一部分数据地址区间和缓存数据地址区间,查询包括目标数据的第一部分数据的缓存数据。
可选地,在根据本发明实施例的方法中,还包括:如果从缓存器获取不到第一部分数据,则从存储器获取第一部分数据。
可选地,在根据本发明实施例的方法中,从存储器获取第一部分数据的步骤包括:基于第一部分数据的地址和存储器的位宽,访问存储器,访问获取到的数据包括第一部分数据。
可选地,在根据本发明实施例的方法中,从存储器获取目标数据的第二部分数据的步骤包括:基于第二部分数据的地址和存储器的位宽,访问存储器,访问获取到的数据包括第二部分数据。
可选地,在根据本发明实施例的方法中,基于第一部分数据、或者第二部分数据的地址和存储器的位宽,访问存储器的步骤包括:基于存储器的位宽指定访问要获取的数据的数据长度;基于第一部分数据、或者第二部分数据的地址指定访问要获取的数据的地址,该地址与数据长度对齐。
可选地,在根据本发明实施例的方法中,在访问存储器的步骤之后,还包括:将访问获取到的数据的至少一部分,作为缓存数据存储至缓存器。
可选地,在根据本发明实施例的方法中,还包括:基于目标数据地址区间和存储器的位宽,确定目标数据的第一部分数据和/或第二部分数据。
可选地,在根据本发明实施例的方法中,基于目标数据地址区间和存储器的位宽,确定目标数据的第一部分数据和/或第二部分数据的步骤包括:基于目标数据地址区间和存储器的位宽,确定目标数据所跨越的位宽边界;基于所跨越的位宽边界,将目标数据划分为第一部分数据和第二部分数据。
可选地,在根据本发明实施例的方法中,地址非对齐的数据加载指令中目标数据的地址不等于目标数据的数据长度的整数倍。
可选地,在根据本发明实施例的方法中,第二部分数据包括多个第二部分数据,从存储器获取目标数据的第二部分数据的步骤包括:对于目标数据的各个第二部分数据,均基于该个第二部分数据的地址和存储器的位宽,访问存储器,访问获取到的数据包括该个第二部分数据。
可选地,在根据本发明实施例的方法中,第一部分数据包括多个第一部分数据,缓存器存储有至少一条缓存数据,从缓存器获取目标数据的第一部分数据的步骤包括:对于目标数据的各个第一部分数据,均基于该个第一部分数据地址区间和缓存数据地址区间,查询包括该个第一部分数据的缓存数据。
根据本发明实施例的另一个方面,提供了一种指令执行单元,适于执行地址非对齐的数据加载指令,数据加载指令用于从存储器读取目标数据,指令执行单元与缓存器和存储器相耦接,并包括:数据获取单元,适于从缓存器获取目标数据的第一部分数据,第一部分数据为目标数据中第一多个位的数据;还适于从存储器获取目标数据的第二部分数据,第二部分数据为目标数据中第二多个位的数据;以及数据处理单元,适于合并第一部分数据和第二部分数据,得到目标数据。
根据本发明实施例的另一个方面,提供了一种指令处理装置,包括根据本发明实施例的指令执行单元。
根据本发明实施例的另一个方面,提供了一种片上系统,包括根据本发明实施例的指令处理装置。
根据本发明实施例的还有一个方面,提供了一种智能设备,包括根据本发明实施例的片上系统。
根据本发明实施例的用于地址非对齐的数据加载指令的指令执行方案,通过从缓存器处获取目标数据的至少部分数据,可以有效减少对存储器的访问次数,显著提高指令的执行效率和处理器性能,降低功耗。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的指令处理装置100的示意图;
图2示出了根据本发明一个实施例的指令执行单元120a的示意图;
图3A-图3C分别示出了根据本发明实施例的获取目标数据的示意图;
图4示出了根据本发明一个实施例的指令执行方法400的流程图;
图5A示出了根据本发明一个实施例的指令处理流水线900的示意图;
图5B示出了根据本发明一个实施例的处理器核990架构的示意图;
图6示出了根据本发明一个实施例的处理器1100的示意图;
图7示出了根据本发明一个实施例的处理器系统1200的示意图;以及
图8示出了根据本发明一个实施例的片上系统(SoC)1500的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图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执行指令时使用。
执行单元150可以包括多个具体的指令执行单元150a、150b…150c等,这些指令执行单元诸如例如矢量运算单元、算术逻辑单元(ALU)、整数单元、浮点单元、存储器执行单元等,并且可以分别执行不同类型的指令。例如,指令执行单元150a为存储器执行单元,可以执行访问存储器120的指令,特别是地址非对齐的数据加载指令。通常地,访问存储器120的指令包括数据存储指令和数据加载指令。数据存储指令用于向高速缓存110或存储器120写入数据。数据加载指令用于从高速缓存110或存储器120读取数据。为便于描述,下文将数据加载指令所要读取的数据称为目标数据。
数据加载指令的源操作数包括与目标数据的存储位置相关的地址操作数 (例如,操作数为寄存器,根据该寄存器中存储的值可以计算目标数据的存储位置),目的操作数包括与用于存放目标数据内容的存储位置相关的数据操作数(例如,可以是另一个寄存器,或者寄存器中的值指示的存储位置)。指令执行单元150a在处理数据加载指令时,首先根据源操作数的内容来计算要访问的目标数据的存储位置,随后从该存储位置读取目标数据并写入到数据操作数指示的寄存器或者存储空间中。其中,存储位置通过地址来表示。
本领域技术人员可以理解,数据加载指令包括地址对齐的指令和地址非对齐的指令。如果所要读取的目标数据的地址是目标数据的数据长度的整数倍,则数据加载指令是地址对齐的。如果目标数据的地址不是目标数据的数据长度的整数倍,则数据加载指令是地址非对齐的。应当指出,如无特别说明,全文所提到的“地址”为起始地址,例如,目标数据的地址为目标数据的起始地址。
按照传统处理方式,指令执行单元150a在执行地址非对齐的数据加载指令时,可以将该指令拆分为多次(通常为两次)对存储器的访问来进行处理,然后将多次访问获取的数据合并,得到目标数据。但这样处理会占用多次处理器流水线,执行效率低下。并且,由于多次访问存储器,不仅功耗很高,还会极大地降低处理器的性能。因此,指令执行单元150a提供了一种指令执行方法400来解决上述问题。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置100。应当理解,指令处理装置100可以具有不同的形式,例如指令处理装置或处理器的其他实施例可具有多个核、逻辑处理器或执行引擎。
图2示出了根据本发明一个实施例的指令执行单元150a的示意图。应当注意,在图2中,根据要在指令执行单元150a中实现的操作而对指令执行单元150a中的各个部件进行了逻辑划分,这些逻辑划分方式是示意性的,并且可以根据实际的物理布局和业务需要而进行重新划分,且没有脱离本发明的保护范围。指令执行单元150a中执行的指令执行方法400可以由图2所示的各个部件来完成。当图2所示的部件进行重新组合和划分时,可以根据新部件所承载的逻辑而完成相应的方法步骤,且没有脱离本发明的保护范围。
如图2所示,指令执行单元150a分别与缓存器110和存储器120相耦接,并包括地址计算单元210。地址计算单元210接收指令执行单元150a要执行的地址非对齐的数据加载指令,并确定目标数据的地址。其中,缓存器110 可以为图1所示的高速缓存110、或者高速缓存110的一部分存储空间。
数据加载指令通常可以包括目标数据的地址和数据长度。根据一种实施方式,在数据加载指令中可以以立即数的方式直接指定目标数据的地址,也可以指示在寄存器中存储了目标数据的地址。如果是后者的情况,地址计算单元210需要从所指定的寄存器获取目标数据的地址。
根据另一种实施方式,目标数据的地址为相对于基址的偏移量。地址计算单元210可以从例如特定寄存器中获取基址,并从数据加载指令中获取偏移量,从而计算得到目标数据的地址。
数据获取单元220耦接到地址计算单元210,可以基于目标数据的地址和数据长度,从缓存器110和/或存储器120获取目标数据。
本领域技术人员可以理解,存储器120具有位宽,存储器120的位宽表示存储器120在一个时钟周期内所能传送的数据的位数。存储器120的位宽例如可以是32位、64位、或者128位等等,本发明实施例对存储器120的位宽不做限制。
例如,假设接收到的地址非对齐的数据加载指令要获取的目标数据跨越了存储器120的位宽边界,那么按照传统处理方式,需要基于该边界将目标数据划分为至少两部分数据,并对存储器进行至少两次访问来分别获取这至少两部分数据。但根据本发明的实施方式,一部分数据可以从缓存器110获取,另外部分数据可以从存储器120获取。这样,减少了对存储器的访问次数。
又例如,假设接收到的地址非对齐的数据加载指令要获取的目标数据没有跨越存储器120的位宽边界,那么按照传统处理方式,可以对存储器120 进行一次访问来获取目标数据。但根据本发明的实施方式,目标数据可以直接从缓存器110获取,减少了对存储器的访问次数。
下面将详细描述本发明实施例的获取目标数据的过程。
数据获取单元220可以基于目标数据地址区间和存储器120的位宽,确定目标数据的第一部分数据和/或第二部分数据。第一部分数据、或者第二部分数据为目标数据的至少部分数据。可以理解地,第一部分数据为目标数据中第一多个位的数据,第二部分数据为目标数据中第二多个位的数据。
在一种实施方式中,可以基于目标数据地址区间和存储器的位宽,判断目标数据是否跨越存储器120的位宽边界。在目标数据跨越位宽边界的情况下,基于所跨越的位宽边界,将目标数据划分为第一部分数据和第二部分数据,并得到第一部分数据地址区间和第二部分数据地址区间。其中,位宽边界是与存储器120的位宽对齐的地址,也就是,为存储器120的位宽的整数倍的地址。
例如,假设存储器120的位宽为8个字节,某条数据加载指令指示获取长度为4个字节,地址为0x1006的目标数据。基于数据长度和地址可以得到目标数据地址区间为0x1006~0x1009,其跨越了存储器120的位宽边界 0x1008。因此,可以基于该位宽边界0x1008,将目标数据0x1006~0x1009划分为第一部分数据0x1006~0x1007和第二部分数据0x1008~0x1009。
如果目标数据没有跨越存储器120的位宽边界,则不需要划分,可以认为第一部分数据即为目标数据。
应当指出,目标数据可以跨越存储器120的一个或多个位宽边界,相应地,目标数据可以被划分为一个或多个第一部分数据和一个或多个第二部分数据。例如,假设存储器120的位宽为4个字节,某条数据加载指令指示获取长度为8个字节、地址为0x1002的目标数据。基于数据长度和地址可以得到目标数据地址区间为0x1002~0x1009,其跨越了存储器120的位宽边界 0x1004和0x1008。因此,可以基于该位宽边界0x1004和0x1008,将目标数据0x1002~0x1009划分为第一部分数据0x1002~0x1003、第二部分数据 0x1004~0x1007和第二部分数据0x1008~0x1009。
对于目标数据的(各个)第一部分数据,数据获取单元220可以从缓存器110获取。在一些实施例中,缓存器110存储有至少一条缓存数据,该缓存数据为对存储器120的在先访问获取到的数据的至少一部分。数据获取单元220可以在缓存器110存储的至少一条缓存数据中查询包括目标数据的第一部分数据的那(条)缓存数据,并从中抽取第一部分数据。
具体地,数据获取单元220可以基于第一部分数据地址区间和缓存数据地址区间来进行查询。例如,可以判断缓存数据地址区间是否包括第一部分数据地址区间,如果包括,则对应的该(条)缓存数据包括第一部分数据,否则对应的该(条)缓存数据不包括第一部分数据。
其中,第一部分数据地址区间可以在确定第一部分数据和/或第二部分数据时得到。缓存数据地址区间、或者该(条)缓存数据对应的地址和数据长度可以与该(条)缓存数据相关联的存储在缓存器110中。如果是后者的情况,可以基于缓存数据对应的地址和数据长度确定缓存数据地址区间。
在另一些实施例中,如果数据获取单元220从缓存器110获取不到第一部分数据,也就是查询不到包括第一部分数据的缓存数据,则仍需要从存储器120获取第一部分数据。
对于目标数据的(各个)第二部分数据,数据获取单元220可以从存储器120获取。从存储器120获取(各个)第一部分数据(如果需要的话)或者(各个)第二部分数据的过程是类似的,下面以获取(一个)第二部分数据为例来进行说明。
数据获取单元220基于第二部分数据的地址和存储器120的位宽,访问存储器120,并从访问获取到的数据中抽取第二部分数据。其中,该(次)访问获取到的数据的地址与数据长度对齐,并至少包括第二部分数据。
具体地,可以基于存储器的位宽指定访问要获取的数据的数据长度。例如将数据长度指定为存储器的位宽,或者其他不小于第二部分数据的数据长度、且不大于存储器的位宽的合适长度。
还可以基于第二部分数据的地址指定访问要获取的数据的地址。例如,在第二部分数据的地址与指定的数据长度对齐的情况下,将第二部分数据的地址指定为访问要获取的数据的地址。又例如,在第二部分数据的地址与指定的数据长度非对齐的情况下,将在第二部分数据的地址之前的、与指定的数据长度对齐的地址指定为访问要获取的数据的地址。
根据本发明的一种实施方式,在访问存储器,获取到包括第一部分数据或者第二部分数据的数据之后,数据处理单元230还可以将该(次)访问获取到的数据的至少一部分,作为缓存数据存储至缓存器。
在一些实施例中,可以将该(次)访问获取到的数据的至少一部分,替换包括第一部分数据或者第二部分数据的(一条)缓存数据;也可以将该(次) 访问获取到的数据的至少一部分,存储为新的(一条)缓存数据。本发明对此不做限制。其中,存储至缓存器的该(次)访问获取到的数据的至少一部分可以是全部数据,也可以是除开第一部分数据或者第二部分数据以外的一部分,也可以是其他部分。本发明对此同样不做限制。
数据处理单元230耦接到数据获取单元220,可以至少基于获取到的第一部分数据,得到目标数据来作为上述数据加载指令的执行结果。
在有些情况下(例如目标数据虽然是地址非对齐的、但没有跨越位宽边界的情况),第一部分数据即为目标数据(此时不存在第二部分数据),那么可以直接将从缓存器110获取的第一部分数据作为数据加载指令的执行结果。这样,不用访问存储器即可得到目标数据,减少了访问存储器的次数。
当然,在大部分情况下,第一部分数据仅为目标数据的部分数据,数据获取单元220需要从存储器120获取目标数据的第二部分数据,数据处理单元230可以在数据获取单元220获取到第一部分数据和第二部分数据之后,合并第一部分数据和第二部分数据,得到目标数据。这样,原本需要访问存储器例如至少两次才能得到目标数据,根据本发明实施例的指令执行方法只需要访问存储器例如一次即可,减少了访问存储器的次数。
下面将结合图3进一步描述本发明实施例的获取目标数据的过程。
图3A-图3C分别为根据本发明实施例的获取目标数据的示意图。假设存储器的位宽为8个字节,每次访问存储器均指定数据长度为存储器的位宽。
首先,如图3A所示,接收地址非对齐的第一数据加载指令,其指示获取地址为0x1006,数据长度为4个字节的目标数据。显然地,对应的目标数据地址区间为0x1006~0x1009,跨越存储器的位宽边界0x1008,因此可以被划分为数据0x1006~0x1007和数据0x1008~0x1009。对于数据0x1006~0x1007,由于在缓存器110中查询不到包括数据0x1006~0x1007的缓存数据,因此可以通过访问存储器120来得到。对于数据0x1008~0x1009,访问存储器获取 0x1008~0x100f的数据,从中抽取得到数据0x1008~0x1009。同时,数据0x1008~0x100f的内容及地址区间可以作为一条新的缓存数据存储至缓存器110。
随后,如图3B所示,接收地址非对齐的第二数据加载指令,其指示获取地址为0x100a,数据长度为4个字节的目标数据。显然地,对应的目标数据地址区间为0x100a~0x100d,虽然地址非对齐但没有跨越位宽边界,因此在缓存器110中查询包括数据0x100a~0x100d的缓存数据。查询到缓存数据 0x1008~0x100f之后,从中抽取得到数据0x100a~0x100d。由于没有访问存储器120,缓存器110没有更新。
随后,如图3C所示,接收地址非对齐的第三数据加载指令,其指示获取地址为0x100e,数据长度为4个字节的目标数据。显然地,对应的目标数据地址区间为0x100e~0x1011,跨越存储器的位宽边界0x100f,因此目标数据可以被划分为数据0x100e~0x100f和数据0x1010~0x1011。对于数据 0x100e~0x100f,在缓存器110中查询包括数据0x100e~0x100f的缓存数据,在查询到缓存数据0x1008~0x100f之后,从中抽取得到数据0x100e~0x100f。对于数据0x1010~0x1011,访问存储器获取0x1010~0x1017的数据,从中抽取得到数据0x1010~0x1011。数据0x1010~0x1017的内容及地址区间可以替换缓存数据0x1008~0x100f存储至缓存器110。后续接收到的地址非对齐的数据加载指令依此类推进行处理。
通过上文可知,根据本发明实施例的指令执行方法能够有效减少处理地址非对齐的数据加载指令时的存储器访问次数,特别是在图3A-图3C所示的地址连续的场景下。应当注意,虽然在图3A-图3C中地址是递增的,但地址也可以递减,本发明对此不做限制。
还应当注意,虽然存储器的位宽在上述示例中被描述为8个字节(64位),但存储器的位宽还可以是其他数值,例如32位、128位、256位等等。本发明对存储器的位宽不做限制,任何位宽都在本发明的保护范围之内。
此外,还应当注意,虽然目标数据(第一数据加载指令和第二数据加载指令)在上述示例中仅被划分为两个部分的数据,但目标数据还可以被划分为更多个部分的数据,例如三个部分的数据、四个部分的数据。其中,某几个部分的数据可以从相应缓存数据中抽取得到,某几个部分的数据可以分几次访问存储器,分别从获取到的相应数据中抽取得到。
图4示出了根据本发明一个实施例的指令执行方法400的流程图。指令执行方法400适于在图1所示的指令处理装置100,特别是图2所示的指令执行单元150a中执行。
指令执行方法400始于步骤S410。在步骤S410中,接收地址非对齐的数据加载指令,该数据加载指令指示从存储器120读取目标数据。其中,地址非对齐的数据加载指令指的是目标数据的地址不是目标数据的数据长度的整数倍的数据加载指令。
而后,在步骤S420中,确定目标数据的第一部分数据和/或第二部分数据,第一部分数据、或者第二部分数据为目标数据的至少部分数据。第一部分数据为目标数据中第一多个位的数据,第二部分数据为目标数据中第二多个位的数据。
在一些实施例中,可以基于目标数据地址区间和存储器120的位宽来确定。例如,基于目标数据地址区间和存储器的位宽,确定目标数据所跨越的存储器120的位宽边界。基于所跨越的位宽边界,将目标数据划分为第一部分数据和第二部分数据。其中,如果目标数据没有跨越位宽边界,则可以认为目标数据即为第一部分数据。
目标数据的第一部分数据可以从缓存器110获取,缓存器110存储有至少一条缓存数据。根据本发明的实施方式,在步骤S430中,基于第一部分数据地址区间和缓存数据地址区间,查询包括第一部分数据的缓存数据。如果查询到包括第一部分数据的缓存数据,则在步骤S431中,从查询到的缓存数据中获取第一部分数据。如果查询不到,则需要从存储器120获取第一部分数据,即,在步骤S432中,基于第一部分数据的地址和存储器120的位宽,访问存储器120,以获取包括第一部分数据的数据。在步骤S433中,从该(次) 访问获取到的数据中获取第一部分数据。
其中,可以基于存储器120的位宽指定访问要获取的数据的数据长度,基于第一部分数据的地址指定访问要获取的数据的地址,且该地址与访问要获取的数据的数据长度对齐。
在一些实施例中,得到第一部分数据之后,至少可以基于该第一部分数据,得到目标数据,以作为上述数据加载指令的执行结果。例如在前述目标数据没有跨越位宽边界的情况下,第一部分数据即为目标数据。
在大多数情况下,确定目标数据的第一部分数据和/或第二部分数据之后,可以从存储器120获取第二部分数据。具体地,在步骤S440中,基于第二部分数据的地址和存储器120的位宽,访问存储器120,以获取包括第二部分数据的数据。在步骤S441中,从该(次)访问获取到的数据中获取第二部分数据。此外,还可以在步骤S442中,将该(次)访问获取到的数据的至少一部分,作为缓存数据存储至缓存器120。
其中,可以基于存储器120的位宽指定访问要获取的数据的数据长度,基于第二部分数据的地址指定访问要获取的数据的地址,且该地址与访问要获取的数据的数据长度对齐。
在得到第一部分数据和第二部分数据之后,在步骤S450中,合并第一部分数据和第二部分数据,得到目标数据作为上述数据加载指令的执行结果。
此外,应当指出,第二部分数据可以包括多个第二部分数据。那么对于目标数据中的各个第二部分数据,均需要基于该个第二部分数据的地址和存储器的位宽,去访问一次存储器,显然地,该次访问获取到的数据包括该个第二部分数据。
相应地,第一部分数据也可以包括多个第一部分数据,那么对于目标数据中的各个第一部分数据,均需要基于该个第一部分数据地址区间和缓存数据地址区间,查询一次包括该个第一部分数据的缓存数据。
关于指令执行方法400中各步骤的详细处理逻辑和实施过程可以参见前文结合图1-图3C对指令处理装置100以及指令执行单元120a的相关描述,此处不再赘述。
利用根据本发明实施例的指令执行方法,通过在对地址非对齐的数据加载指令(特别是地址连续的指令)进行处理时,从缓存器获取目标数据的至少部分数据,可以有效地减少对存储器的访问次数,显著提高指令执行效率和处理器性能,降低功耗。
如上所述,根据本发明实施例的指令处理装置可以实现为处理器核,且指令执行方法可以在处理器核中执行。处理器核可以不同的方式在不同的处理器中实现。例如,处理器核可以实现为用于通用计算的通用有序核、用于通用计算的高性能通用无序核、以及用于图形和/或科学(吞吐量)计算的专用核。而处理器可以实现为CPU(中央处理器)和/或协处理器,其中CPU可以包括一个或多个通用有序核和/或一个或多个通用无序核,而协处理器可以包括一个或多个专用核。这样的不同处理器的组合可以导致不同的计算机系统架构。在一种计算机系统架构中,协处理器在与CPU分开的芯片上。在另一种计算机系统架构中,协处理器在与CPU相同的封装中但处于分开的管芯上。在还有一种计算机系统架构中,协处理器与CPU在相同管芯上(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核)。在还有一种称为片上系统的计算机系统架构中,可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。后续将结合图5A-图8来描述示例性的核架构、处理器和计算机架构。
图5A示出根据本发明实施例的指令处理流水线的示意图,其中,流水线包括有序流水线以及无序发布/执行流水线。图5B示出根据本发明实施例的处理器核架构的示意图,其中,包括有序架构核以及与寄存器重命名相关的无序发布/执行架构核。在图5A和图5B中,用实线框示出了有序流水线和有序核,而在虚线框中的可选附加项示出了无序发布/执行流水线和核。
如图5A所示,处理器流水线900包括取出级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为分派或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处理级922和提交级924。
如图5B所示,处理器核990包括执行引擎单元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耦接到一个或多个其他级的高速缓存,并最终耦接到主存储器。
作为示例,上面结合图5B描述的核架构可以采用如下方式来实现上面结合图5A描述的流水线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等可选附加扩展)),其中包括本文中描述的各指令。应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
图6示出了根据本发明一个实施例的处理器1100的示意图。如图6中的实线框所示,根据一种实施方式,处理器1110包括单个核1102A、系统代理单元1110、总线控制器单元1116。如图6中的虚线框所示,根据本发明的另一个实施方式,处理器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和图5B描述的核架构,并且在架构指令集方面可以是同构的或异构的。即,这些核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图7示出了根据本发明一个实施例的计算机系统1200的示意图。图7 所示的计算机系统1200可以应用于膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备。本发明不受限于此,所有可以纳入本说明书中所公开的处理器和/或其它执行逻辑的系统都在本发明的保护范围之内。
如图7所示,系统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的任选性质用虚线表示在图7中。每一处理器1210、 1215可包括本文中描述的处理核中的一个或多个,并且可以是图6所示的处理器1100的某一版本。
存储器1240可以是例如动态随机访问存储器(DRAM)、相变存储器(PCM) 或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前侧总线 (FSB)之类的多分支总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1295与处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC 处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1210识别如具有应当由附连的协处理器1245执行的类型的这些协处理器指令。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。
图8示出了根据本发明的一个实施例的片上系统(SoC)1500的示意图。图8所示的片上系统包含了图6所示的处理器1100,因此与图6中相似的部件具有同样的附图标记。如图8所示,互连单元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 (27)
1.一种指令执行方法,包括:
接收地址非对齐的数据加载指令,所述数据加载指令指示从存储器读取目标数据;
从缓存器获取所述目标数据的第一部分数据,所述第一部分数据为所述目标数据中第一多个位的数据;
从所述存储器获取所述目标数据的第二部分数据,所述第二部分数据为所述目标数据中第二多个位的数据;以及
合并所述第一部分数据和所述第二部分数据,得到所述目标数据。
2.如权利要求1所述的方法,其中,所述缓存器存储有至少一条缓存数据,所述从缓存器获取所述目标数据的第一部分数据的步骤包括:
基于第一部分数据地址区间和缓存数据地址区间,查询包括所述目标数据的第一部分数据的缓存数据。
3.如权利要求1所述的方法,其中,还包括:
如果从所述缓存器获取不到所述第一部分数据,则从所述存储器获取所述第一部分数据。
4.如权利要求3所述的方法,其中,所述从所述存储器获取所述第一部分数据的步骤包括:
基于所述第一部分数据的地址和所述存储器的位宽,访问所述存储器,所述访问获取到的数据包括所述第一部分数据。
5.如权利要求1所述的方法,其中,所述从所述存储器获取所述目标数据的第二部分数据的步骤包括:
基于所述第二部分数据的地址和所述存储器的位宽,访问所述存储器,所述访问获取到的数据包括所述第二部分数据。
6.如权利要求4或5所述的方法,其中,基于所述第一部分数据、或者所述第二部分数据的地址和所述存储器的位宽,访问所述存储器的步骤包括:
基于所述存储器的位宽指定所述访问要获取的数据的数据长度;
基于所述第一部分数据、或者所述第二部分数据的地址指定所述访问要获取的数据的地址,所述地址与所述数据长度对齐。
7.如权利要求5所述的方法,其中,在所述访问所述存储器的步骤之后,还包括:
将所述访问获取到的数据的至少一部分,作为缓存数据存储至所述缓存器。
8.如权利要求1所述的方法,其中,还包括:
基于目标数据地址区间和所述存储器的位宽,确定所述目标数据的第一部分数据和/或第二部分数据。
9.如权利要求8所述的方法,其中,所述基于目标数据地址区间和所述存储器的位宽,确定所述目标数据的第一部分数据和/或第二部分数据的步骤包括:
基于目标数据地址区间和所述存储器的位宽,确定所述目标数据所跨越的位宽边界;
基于所跨越的位宽边界,将所述目标数据划分为第一部分数据和第二部分数据。
10.如权利要求1所述的方法,其中,所述地址非对齐的数据加载指令中目标数据的地址不等于所述目标数据的数据长度的整数倍。
11.如权利要求1所述的方法,其中,所述第二部分数据包括多个第二部分数据,所述从所述存储器获取所述目标数据的第二部分数据的步骤包括:
对于所述目标数据的各个第二部分数据,均基于该个第二部分数据的地址和所述存储器的位宽,访问所述存储器,所述访问获取到的数据包括该个第二部分数据。
12.如权利要求1所述的方法,其中,所述第一部分数据包括多个第一部分数据,所述缓存器存储有至少一条缓存数据,所述从缓存器获取所述目标数据的第一部分数据的步骤包括:
对于所述目标数据的各个第一部分数据,均基于该个第一部分数据地址区间和缓存数据地址区间,查询包括该个第一部分数据的缓存数据。
13.一种指令执行单元,适于执行地址非对齐的数据加载指令,所述数据加载指令用于从存储器读取目标数据,所述指令执行单元与缓存器和所述存储器相耦接,并包括:
数据获取单元,适于从所述缓存器获取所述目标数据的第一部分数据,所述第一部分数据为所述目标数据中第一多个位的数据;还适于从所述存储器获取所述目标数据的第二部分数据,所述第二部分数据为所述目标数据中第二多个位的数据;以及
数据处理单元,适于合并所述第一部分数据和所述第二部分数据,得到所述目标数据。
14.如权利要求13所述的单元,其中,所述缓存器存储有至少一条缓存数据,所述数据获取单元还适于
基于第一部分数据地址区间和缓存数据地址区间,查询包括所述目标数据的第一部分数据的缓存数据。
15.如权利要求13所述的单元,其中,所述数据获取单元还适于
如果从所述缓存器获取不到所述第一部分数据,则从所述存储器获取所述第一部分数据。
16.如权利要求15所述的单元,其中,所述数据获取单元还适于
基于所述第一部分数据的地址和所述存储器的位宽,访问所述存储器,所述访问获取到的数据包括所述第一部分数据。
17.如权利要求13所述的单元,其中,所述数据获取单元还适于
基于所述第二部分数据的地址和所述存储器的位宽,访问所述存储器,所述访问获取到的数据包括所述第二部分数据。
18.如权利要求16或17所述的单元,其中,所述数据获取单元还适于基于所述存储器的位宽指定所述访问要获取的数据的数据长度;
基于所述第一部分数据、或者所述第二部分数据的地址指定所述访问要获取的数据的地址,所述地址与所述数据长度对齐。
19.如权利要求17所述的单元,其中,所述数据获取单元还适于
在访问所述存储器之后,将所述访问获取到的数据的至少一部分,作为缓存数据存储至所述缓存器。
20.如权利要求13所述的单元,其中,所述数据获取单元还适于
基于目标数据地址区间和所述存储器的位宽,确定所述目标数据的第一部分数据和/或第二部分数据。
21.如权利要求20所述的单元,其中,所述数据获取单元还适于
基于目标数据地址区间和所述存储器的位宽,确定所述目标数据所跨越的位宽边界;
基于所跨越的位宽边界,将所述目标数据划分为第一部分数据和第二部分数据。
22.如权利要求13所述的单元,其中,所述地址非对齐的数据加载指令中目标数据的地址不等于所述目标数据的数据长度的整数倍。
23.如权利要求13所述的单元,其中,所述第二部分数据包括多个第二部分数据,所述数据获取单元适于
对于所述目标数据的各个第二部分数据,均基于该个第二部分数据的地址和所述存储器的位宽,访问所述存储器,所述访问获取到的数据包括该个第二部分数据。
24.如权利要求13所述的单元,其中,所述第一部分数据包括多个第一部分数据,所述缓存器存储有至少一条缓存数据,所述数据获取单元适于
对于所述目标数据的各个第一部分数据,均基于该个第一部分数据地址区间和缓存数据地址区间,查询包括该个第一部分数据的缓存数据。
25.一种指令处理装置,包括如权利要求13-24中任一项所述的指令执行单元。
26.一种片上系统,包括如权利要求25所述的指令处理装置。
27.一种智能设备,包括如权利要求26所述的片上系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910912624.3A CN112559037B (zh) | 2019-09-25 | 2019-09-25 | 一种指令执行方法、单元、装置及系统 |
PCT/US2020/051966 WO2021061626A1 (en) | 2019-09-25 | 2020-09-22 | Instruction executing method and apparatus |
US17/028,352 US20210089305A1 (en) | 2019-09-25 | 2020-09-22 | Instruction executing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910912624.3A CN112559037B (zh) | 2019-09-25 | 2019-09-25 | 一种指令执行方法、单元、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559037A true CN112559037A (zh) | 2021-03-26 |
CN112559037B CN112559037B (zh) | 2024-04-12 |
Family
ID=74881872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910912624.3A Active CN112559037B (zh) | 2019-09-25 | 2019-09-25 | 一种指令执行方法、单元、装置及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210089305A1 (zh) |
CN (1) | CN112559037B (zh) |
WO (1) | WO2021061626A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755324B2 (en) * | 2021-08-31 | 2023-09-12 | International Business Machines Corporation | Gather buffer management for unaligned and gather load operations |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340495B2 (en) * | 2001-10-29 | 2008-03-04 | Intel Corporation | Superior misaligned memory load and copy using merge hardware |
US20080189512A1 (en) * | 1998-08-24 | 2008-08-07 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
US20120047311A1 (en) * | 2010-08-17 | 2012-02-23 | Sheaffer Gad S | Method and system of handling non-aligned memory accesses |
GB201403976D0 (en) * | 2013-03-15 | 2014-04-23 | Intel Corp | Limited range vector memory access instructions, processors, methods, and systems |
CN105229696A (zh) * | 2013-04-15 | 2016-01-06 | 微软技术许可有限责任公司 | 用于多维数据存取的并行存储器 |
CN106575216A (zh) * | 2014-09-19 | 2017-04-19 | 英特尔公司 | 数据元素选择和合并处理器、方法、系统和指令 |
US20170109165A1 (en) * | 2015-10-19 | 2017-04-20 | Arm Limited | Apparatus and method for accessing data in a data store |
US20190121740A1 (en) * | 2017-10-23 | 2019-04-25 | Seagate Technology Llc | Using a First-In-First-Out (FIFO) Wraparound Address Lookup Table (ALT) to Manage Cached Data |
CN109992308A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 用于单指令多数据(simd)流水线中的循环展平和约简的装置和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9652231B2 (en) * | 2008-10-14 | 2017-05-16 | International Business Machines Corporation | All-to-all permutation of vector elements based on a permutation pattern encoded in mantissa and exponent bits in a floating-point SIMD architecture |
-
2019
- 2019-09-25 CN CN201910912624.3A patent/CN112559037B/zh active Active
-
2020
- 2020-09-22 US US17/028,352 patent/US20210089305A1/en not_active Abandoned
- 2020-09-22 WO PCT/US2020/051966 patent/WO2021061626A1/en active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080189512A1 (en) * | 1998-08-24 | 2008-08-07 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
US7340495B2 (en) * | 2001-10-29 | 2008-03-04 | Intel Corporation | Superior misaligned memory load and copy using merge hardware |
US20120047311A1 (en) * | 2010-08-17 | 2012-02-23 | Sheaffer Gad S | Method and system of handling non-aligned memory accesses |
GB201403976D0 (en) * | 2013-03-15 | 2014-04-23 | Intel Corp | Limited range vector memory access instructions, processors, methods, and systems |
CN105229696A (zh) * | 2013-04-15 | 2016-01-06 | 微软技术许可有限责任公司 | 用于多维数据存取的并行存储器 |
CN106575216A (zh) * | 2014-09-19 | 2017-04-19 | 英特尔公司 | 数据元素选择和合并处理器、方法、系统和指令 |
US20170109165A1 (en) * | 2015-10-19 | 2017-04-20 | Arm Limited | Apparatus and method for accessing data in a data store |
US20190121740A1 (en) * | 2017-10-23 | 2019-04-25 | Seagate Technology Llc | Using a First-In-First-Out (FIFO) Wraparound Address Lookup Table (ALT) to Manage Cached Data |
CN109992308A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 用于单指令多数据(simd)流水线中的循环展平和约简的装置和方法 |
Non-Patent Citations (2)
Title |
---|
任海;刘伟亮;唐振刚;张风源;潘乐乐;: "一种高效的星载高速固态存储器坏块管理算法", 计算机测量与控制, no. 01, 25 January 2018 (2018-01-25) * |
麦宋平;张春;杨昆;王志华;: "一个嵌入式多媒体应用平台的设计与实现", 微电子学, no. 04, 20 August 2006 (2006-08-20) * |
Also Published As
Publication number | Publication date |
---|---|
CN112559037B (zh) | 2024-04-12 |
WO2021061626A1 (en) | 2021-04-01 |
US20210089305A1 (en) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6143872B2 (ja) | 装置、方法、およびシステム | |
CN108845826B (zh) | 多寄存器存储器访问指令、处理器、方法和系统 | |
US10191742B2 (en) | Mechanism for saving and retrieving micro-architecture context | |
CN104657110B (zh) | 具有固定数量的可变长度指令的指令高速缓存器 | |
JPH10124391A (ja) | マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法 | |
US20120204008A1 (en) | Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections | |
US11550731B2 (en) | Processing method and apparatus for translation lookaside buffer flush instruction | |
EP3550437A1 (en) | Adaptive spatial access prefetcher apparatus and method | |
US9317285B2 (en) | Instruction set architecture mode dependent sub-size access of register with associated status indication | |
US20040049657A1 (en) | Extended register space apparatus and methods for processors | |
US20210089306A1 (en) | Instruction processing method and apparatus | |
CN110554887A (zh) | 间接存储器提取器 | |
US20200326940A1 (en) | Data loading and storage instruction processing method and device | |
US10545757B2 (en) | Instruction for determining equality of all packed data elements in a source operand | |
CN112559037B (zh) | 一种指令执行方法、单元、装置及系统 | |
CN111814093A (zh) | 一种乘累加指令的处理方法和处理装置 | |
CN111813447B (zh) | 一种数据拼接指令的处理方法和处理装置 | |
US11907712B2 (en) | Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline | |
CN112395000B (zh) | 一种数据预加载方法和指令处理装置 | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
CN112540789A (zh) | 一种指令处理装置、处理器及其处理方法 | |
CN112540937A (zh) | 一种缓存、数据访问方法和指令处理装置 | |
JPH04104350A (ja) | マイクロプロセッサ | |
US11275588B2 (en) | Context save with variable save state size | |
CN115858022A (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 |