CN105404588B - 处理器和其中生成数据存储操作的一个或多个地址的方法 - Google Patents

处理器和其中生成数据存储操作的一个或多个地址的方法 Download PDF

Info

Publication number
CN105404588B
CN105404588B CN201510561012.6A CN201510561012A CN105404588B CN 105404588 B CN105404588 B CN 105404588B CN 201510561012 A CN201510561012 A CN 201510561012A CN 105404588 B CN105404588 B CN 105404588B
Authority
CN
China
Prior art keywords
data
addresses
address
store
ram
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510561012.6A
Other languages
English (en)
Other versions
CN105404588A (zh
Inventor
迈克尔·约翰·戴维斯
A·J·安德森
加里·克里斯多佛·瓦斯
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.)
Nordic Semiconductor ASA
Original Assignee
Imagination Technologies 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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN105404588A publication Critical patent/CN105404588A/zh
Application granted granted Critical
Publication of CN105404588B publication Critical patent/CN105404588B/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/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本发明涉及数据的有效加载和存储。描述了从存储器到寄存器的有效数据加载和从寄存器到存储器的数据存储的方法和装置。在实施例中,处理器包括数据结构,用于加载操作的地址被压入到该数据结构。替代独立生成用于存储操作的地址,地址被从数据结构中弹出并被直接使用或者可以首先将可选的偏移应用到弹出的地址。这样,存储操作和加载操作可以并行执行,因为它们不都需要使用独立生成用于加载/存储操作的地址的逻辑。在各个示例中,数据结构是FIFO结构。

Description

处理器和其中生成数据存储操作的一个或多个地址的方法
技术领域
本发明涉及但不限于数据的有效加载和存储。
背景技术
人们往往期望处理器可以支持并发独立数据加载和存储(例如,从存储器到寄存器,以及从寄存器到存储器)。对于这个问题的已知解决方案是使用多个地址单元,从而可以并行计算加载地址和存储地址(因此用于加载和存储操作)。然而,增加多个地址单元增大了处理器的物理尺寸(例如,就硅面积而言)并且这相应地增加了处理器的成本。此外,当增加附加的地址单元时,需要附加的指令信息以控制额外的地址单元,这导致增加的指令译码逻辑和增加的指令存储需求(例如,需要更多的代码RAM)。这进一步地增加了处理器所需的硅面积。
发明内容
以下所描述的实施例并不限于解决从存储器加载数据和将数据存储到存储器的已知处理器和已知方法的任何缺点或全部缺点的实现。
提供本发明内容来以简化的形式介绍以下在详细的描述中进一步描述的概念的选择。该发明内容并不旨在表明所要求保护的主题的关键特征或本质特征,其也不旨在用于帮助确定所要求保护的主题的范围。
描述了数据从存储器到寄存器的有效加载和数据从寄存器到存储器的存储的方法和装置。在实施例中,处理器包括数据结构,用于加载操作的地址被压入到该数据结构。替代独立生成用于存储操作的地址,地址被从数据结构中弹出并且直接被使用或者可以首先将可选的偏移应用到弹出的地址。这样,存储操作和加载操作可以并行执行,因为它们不同时需要使用独立生成用于加载操作/存储操作的地址的逻辑。在各个示例中,数据结构是FIFO结构。
第一方面提供在处理器中生成用于数据存储操作的一个或多个地址的方法,该方法包括:响应于数据加载指令,将针对数据加载指令生成的一个或多个地址存储在数据结构中;并且响应于数据存储指令,访问数据结构中一个或多个存储的地址以及确定用于由数据存储指令触发的数据存储操作中的一个或多个地址,其中,基于一个或多个被访问的地址确定用于数据存储操作中的一个或多个地址。
第二方面提供处理器,所述处理器包括:数据结构,其布置成存储响应于数据加载指令生成的一个或多个地址;以及存储地址逻辑,其布置成响应于数据存储指令访问来自数据结构的一个或多个存储的地址并且确定用于由数据存储指令触发的数据存储操作中的一个或多个地址,其中,基于一个或多个被访问的地址来确定用于数据存储操作中的一个或多个地址。
又一方面提供了具有在其上编码的、用于生成如本文所描述的处理器的计算机可读程序代码的计算机可读存储介质和具有在其上编码的、用于生成配置为执行本文所描述的任何方法的处理器的计算机可读程序代码的计算机可读存储介质。
本文描述的方法可由配置有软件的计算机执行,软件以机器可读的形式存储在有形存储介质上,例如,当程序在计算机上运行时以及在计算机程序可实现在计算机可读存储介质上的情况下,以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式、或以包括适合于执行本文所述的任何方法的所有步骤的计算机程序代码工具的计算机程序的形式。有形(或非暂时性)存储介质的示例包括磁盘、拇指驱动器、存储卡等,且并不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序执行或同时执行。
本文描述的硬件部件可由非暂时性计算机可读存储介质产生,非暂时性计算机可读存储介质具有在其上编码的计算机可读程序代码。
本文认为固件和软件可以分开使用并且是有价值的。其旨在包括运行在“非智能硬件”或标准硬件上或控制“非智能硬件”或标准硬件的软件以执行期望的功能。还旨在包括“描述”或定义硬件配置的软件,例如,如用于设计硅芯片或用于配置通用可编程芯片的HDL(硬件描述语言)软件,以执行期望的功能。
对技术人员将明显的是,优选的特征可被适当地组合,并可与本发明的任何方面组合。
本发明的实施例涉及但不限于以下方面:
1)一种在处理器中生成数据存储操作的一个或多个地址的方法,所述方法包括:
响应于已经从程序找取的数据加载指令,生成用于所述数据加载指令的一个或多个地址并将用于所述数据加载指令的一个或多个地址存储在数据结构中;以及
响应于已经从程序找取的数据存储指令,访问所述数据结构中的一个或多个存储的地址,并且确定用于由所述数据存储指令触发的数据存储操作的一个或多个地址,其中,响应于所述数据存储指令而访问的所述一个或多个存储的地址在之前由所述处理器中的地址单元生成并且被存储在所述数据结构中,以响应于对应且单独的数据加载指令,并且其中,基于一个或多个被访问的地址,确定用于所述数据存储操作的一个或多个地址。
2)根据1)所述的方法,还包括:将所确定的用于所述数据存储操作的一个或多个地址传送到所述处理器内的存储器单元。
3)根据1)或2)所述的方法,还包括:接收详述要被应用的偏移的参数,并且其中,基于所述一个或多个被访问的地址确定用于数据存储操作的一个或多个地址包括:将所述偏移应用到所述一个或多个被访问的地址中的每一个。
4)根据1)或2)所述的方法,其中,针对所述数据加载指令生成的一个或多个地址标识来自数据向量的数据项,并且其中,所述方法还包括下列中的一个或两个:在存储标识来自数据向量的第一数据项的地址之前,清理所述数据结构;以及在访问来自所述数据结构、标识来自数据向量的最后一个数据项的地址之后,清理所述数据结构。
5)根据1)或2)所述的方法,其中,将针对所述数据加载指令生成的一个或多个地址存储在数据结构中包括:将针对所述数据加载指令生成的多个地址存储在数据结构中的单个条目中。
6)根据5)所述的方法,其中,访问所述数据结构中的一个或多个存储的地址包括:从所述数据结构中的单个条目中访问多个存储的地址。
7)根据1)或2)所述的方法,其中,所述处理器是乱序处理器并且所述数据结构是RAM,并且其中:将针对所述数据加载指令生成的一个或多个地址存储在数据结构中包括根据所述数据加载指令在指令的原始顺序中的位置,将针对所述数据加载指令生成的一个或多个地址存储在所述RAM中的位置中;以及访问所述数据结构中的一个或多个存储的地址包括根据所述数据存储指令在指令的原始顺序中的位置,从所述RAM中的位置访问一个或多个存储的地址。
8)一种处理器,包括:
地址生成逻辑,其布置成响应于已经从程序找取的数据加载指令生成用于由所述数据加载指令触发的数据加载操作的一个或多个地址;
数据结构,其布置成存储由所述地址生成逻辑响应于数据加载指令生成的一个或多个地址;以及
存储地址逻辑,其被布置成响应于已经从程序找取的数据存储指令,从所述数据结构访问一个或多个存储的地址,并且被布置成确定用于由所述数据存储指令触发的数据存储操作的一个或多个地址,其中,响应于所述数据存储指令而访问的所述一个或多个存储的地址在之前由所述地址生成逻辑生成并且被存储在所述数据结构中,以响应于对应且单独的数据加载指令,并且其中,基于一个或多个被访问的地址,确定用于所述数据存储操作的一个或多个地址。
9)根据8)所述的处理器,还包括:地址单元,其包括所述数据结构、所述存储地址逻辑和所述地址生成逻辑。
10)根据8)或9)所述的处理器,还包括:存储器单元,其被布置成,实现由数据加载指令触发的数据加载操作和实现使用由所述存储地址逻辑确定的地址的数据存储操作。
11)根据8)或9)所述的处理器,其中所述存储地址逻辑还被布置成接收详述要被应用的偏移的参数,并且被布置成通过将所述偏移应用到所述一个或多个被访问的地址中的每一个被访问的地址来确定用于所述数据存储操作的一个或多个地址。
12)根据8)或9)所述的处理器,其中,所述数据结构被布置成存储多个条目,每个条目包括多个地址字段,其中,每个地址字段在条目中被布置成存储针对单个数据加载指令生成的多个地址中的一个地址。
13)根据12)所述的处理器,其中,所述数据结构中的条目还包括个数字段,其布置成存储标识在所述多个地址字段中存储的有效地址的个数的值。
14)根据8)或9)所述的处理器,其中,所述存储地址逻辑被布置成,响应于数据存储指令,从所述数据结构中的单条目访问多个存储的地址。
15)根据8)或9)所述的处理器,其中,所述数据结构是FIFO数据结构。
16)根据8)或9)所述的处理器,其中,所述数据结构是RAM,并且其中:所述数据结构被布置成,根据所述数据加载指令在指令的原始顺序中的位置,在所述RAM中的位置存储响应于数据加载指令而生成的一个或多个地址;并且其中所述存储地址逻辑被布置成,响应于数据存储指令,根据所述数据存储指令在指令的原始顺序中的位置,从所述RAM中的位置访问一个或多个存储的地址,并且确定用于由所述数据存储指令触发的数据存储操作的一个或多个地址,其中,基于所述一个或多个被访问的地址,确定用于所述数据存储操作的一个或多个地址。
17)根据8)或9)所述的处理器,还包括数据单元,其布置成使用软件流水线技术处理通过数据加载指令加载的数据。
18)根据8)或9)所述的处理器,其中,所述处理器是无线处理单元。
附图说明
将参考下面的附图以示例的方式描述本发明的实施例,在附图中:
图1示出了在其中可以实现本文所描述的方法的示例处理器的示意图;
图2是示出了地址单元的更多细节的示意图;
图3是示出了同时用于加载指令和存储指令的地址单元的操作的示例方法的流程图;图4是示出了两个示例FIFO结构的示意图。
在全部附图中使用共同的参考数字来指示类似的特征。
具体实施方式
下面仅以示例的方式描述本发明的实施例。这些示例代表申请人当前已知的实践本发明的最佳方式,但是其不是可实现本发明的唯一方式。该描述阐述示例的功能和用于构造和操作示例的步骤的顺序。然而,可通过不同的示例来实现相同或等效的功能和顺序。
如以上所描述的,使处理器内的并发独立数据加载和数据存储可行的解决方案是使用多个地址单元,使得在任何循环周期内,不同的地址单元可以独立地计算加载操作或存储操作(例如,从存储器加载到寄存器,或从寄存器存储到存储器)中使用的存储器地址。然而这种解决方案由于附加的地址单元,引起了硅面积的增加并且还导致指令信息的增加。指令信息的增加也影响硅面积,因为它需要增加的指令译码逻辑和更多的RAM来存储指令。处理器的物理尺寸不断增加通常是不期望的,因为这增加成本并且不利于减小包括处理器的设备(例如,机顶盒、数字收音机和TV、移动电话、平板电脑,等等)的尺寸和/或将更多的功能添加到芯片/设备而不增加尺寸的普遍期望。
本文所描述的是能够并发地执行加载和存储而不需要附加的(例如,第二)地址单元的方法和装置。如以下更详细描述的,这可以通过在后续数据存储操作中重用数据加载操作期间生成的地址(或地址序列)实现。例如,由处理器实现的方法可以将数据元素从存储器(例如,从地址A)读入寄存器,将数据元素输入到一些算术运算中,并且然后将来自寄存器的结果写回到最初读取数据元素的位置(例如,存储器中的地址A)。替代在加载操作时使用生成加载地址(地址A)的地址单元和后续在相应的存储操作时使用生成存储地址(地址A)的地址单元,将加载地址存储在数据结构中,诸如存储在FIFO(先进先出)数据结构中,并且然后在执行相应的存储操作时,将加载地址从数据结构(例如,从FIFO)读回。虽然这描述了原位类型的操作(即,其中的存储地址与加载地址相同),但是该方法还可以用于复制类型的操作(即,其中的存储地址与加载地址不相同,但是存储地址可以很容易地从加载地址生成)。
方法的描述涉及相应的加载指令和存储指令。加载指令和存储指令被认为是“对应的”,前提是加载指令加载一些数据并且存储指令存储处理该数据的结果。例如,在数据单元采用4个周期来执行,并且加载操作发生在周期0,数据单元在周期1-4执行且相应的存储操作发生在周期5。
图1示出了在其中可以实现本文所描述的方法的示例处理器100的示意图。在该示例中,处理器100是单线程处理器,然而该方法也适用于多线程处理器。
处理器100包括控制单元102、地址单元104、数据单元106以及存储器单元108。图1还示出了在处理器100外部的代码(或指令)存储器110和数据存储器112;然而,应该理解的是,这些存储器可以合并为用于数据和代码的单个存储器。此外,代码存储器和/或数据存储可以被包含在处理器100之内和/或被包含在处理器100的同一芯片上。
控制单元102找取和译码存储在代码存储器110中的指令并且因此可以被描述为实现取指级114和译码级116。控制单元102被配置为从如由程序计数器(PC)指示的程序(以程序顺序)找取指令。一旦(例如,通过取指级114)找取了指令,控制单元102就被布置成(例如,在译码级116)解释指令。特别是,每个指令可以包括一个或多个寄存器写入操作;一个或多个寄存器读取操作;和/或一个或多个算术运算或逻辑运算。寄存器写入操作对目标存储器写入,该寄存器写入操作也可以称为加载操作,而寄存器读取操作从源寄存器读取,该寄存器读取操作也可以称为存储操作。源寄存器和目标寄存器117可以位于数据单元106内并且也可以称为数据路径寄存器。地址单元104和控制单元102内也可以有寄存器,其可以用来存储处理器操作中使用的各个参数和/或可以在数据存储器中保存的参数。对于读取/写入操作,控制单元102将指令分发到存储器单元108内实现的加载/存储单元并且用于读取/写入(或加载/存储)操作的地址在地址单元104内生成。对于算术或逻辑运算,控制单元102将指令分发到数据单元106(其也可以称为数据路径功能单元)用于执行(使用先前已经加载到寄存器的数据)。
地址单元104负责执行从存储器到寄存器以及从寄存器到存储器的所有数据传输(例如,传输到数据存储器112以及从数据存储器112传输)。如在图1中所示,地址单元104包括地址生成逻辑118,其用来以已知的方式在存储器中(例如,数据存储器112中)生成用于加载/存储操作的地址。处理器100中的地址单元104还包括数据结构120(在该示例中是FIFO结构),其被布置成存储与加载操作相关的地址(称为“加载地址”并且通过地址生成逻辑118生成)。地址单元104还包括存储地址逻辑122,其被布置成使用来自FIFO结构120的存储的加载地址来生成用于后续存储指令的地址(称为“存储地址”)。加载地址和存储地址是数据存储器112中的地址。相比之下,已知的地址单元会包括地址生成逻辑118而不会包括数据结构120或存储地址逻辑122。
存储地址逻辑122与地址生成逻辑118并不相同(例如,存储地址逻辑122并不是地址生成逻辑118的副本),且与地址生成逻辑118相比,存储地址逻辑122不能独立地生成用于指令(例如,存储指令或加载指令)的新的存储器地址。而是,存储地址逻辑122基于存储在数据结构120中的加载地址来确定存储地址(并且对于原位类型的操作,存储地址与存储的加载地址相同)。因此,存储地址逻辑122远没有地址生成逻辑118那么复杂(因此更小),并且可以独立的操作以及与地址生成逻辑118并行操作。在下面将参考图2和图3对数据结构120和存储地址逻辑122的操作进行更详细的描述。采用其最不复杂(并且因此最小)形式,存储地址逻辑122可以实现单一加操作。
应该理解的是,在各个示例中,处理器100也可以包括除了在图1中示出的功能元件之外的功能元件(例如,缓存等)和/或图1中示出的功能元件中的一个或多个可以被省略。虽然图1示出了地址单元104内的FIFO120和存储地址逻辑122,但在其它示例中,这两个功能元件中的一个或两个可以位于地址单元104之外。
虽然图1以及以下描述涉及诸如FIFO的用于存储加载地址的数据结构,但这仅仅是可能使用的数据结构的一个实现。当使用FIFO时,地址被压入到FIFO(即,存储在FIFO中)然后按照与其被存储的顺序完全的相同顺序弹出(即,当其被访问时,被移除),并且因此不需要添加索引或其它参数来指示FIFO中的条目应该被读取的顺序(FIFO中总是使用最早的条目)。在其它示例中,可以使用存储与每个条目相关的地址和参数的缓冲区,并且参数用来识别地址被存储的顺序(因此识别应该读取地址的顺序)。
FIFO储存器可以使用任何合适的技术来实现,例如,使用触发器阵列或RAM来实现。在使用RAM的各个示例中,如果通常执行少于最大数量的并行存储操作,每个地址可使用一RAM,因为这降低了功率。然而,这样的实现将仍然保持公共的FIFO指针/计数器逻辑。
图2是示出了地址单元104的更多细节的示意图并且图3是示出了用于加载指令301和存储指令302二者的地址单元104的操作的示例方法的流程图。
关于加载指令(如在方法301中所示),由地址生成逻辑118以标准方式接收详述地址生成的参数(框310和箭头L1)。这些参数(可以包括要生成的地址个数)由地址生成逻辑118使用从而以标准方式生成一个或多个地址(框312)。然后将这些地址存储在(例如,压入到)FIFO结构中(框314和箭头L3)并且被传送到存储器单元108(框316和箭头L4)。存储器单元108使用接收的地址(箭头L4)和详述数据被加载到的目标寄存器的参数(箭头L2)以执行加载操作。在各个示例中,可以将这些详述目标存储器的参数从地址单元104传送到存储器单元108。
关于存储指令,(如在方法302中所示),包括一个或多个地址的条目可以由存储地址逻辑122从FIFO 120读取(例如,从FIFO 120弹出)(框322和箭头S3)并且被传送到存储器单元108(框326和箭头S4)。存储器单元108使用接收的地址(箭头S4)和详述包括要存储的数据的源寄存器的参数(箭头S2)来执行存储操作。当存储操作将数据存储在已访问过的FIFO条目中所存储的地址时,这可以被表述为“原位”类型的操作。
在各个示例中,“复制类型”的操作可以被实现(替代或除了原位类型操作之外)。在复制类型的存储操作中,数据被存储在与已访问过的FIFO条目中所存储的地址不同的地址(在数据存储器112中);然而,通过将偏移应用到FIFO条目中的地址来确定存储地址。在这样的示例中,方法302还包括接收标识要应用的任何可选的偏移的参数(框320和箭头S1)并且随后将任何可选的偏移应用到已经从FIFO 120读取的地址(框324)。该偏移由地址单元104内的存储地址逻辑122接收和应用,并且然后将应用了任何可选的偏移的地址传送到存储器单元108(框326和箭头S4)。和前面一样,存储器单元108使用接收的地址(箭头S4)和详述包括要被存储的数据的源寄存器的参数(箭头S2)来执行存储操作。
应该理解的是,在各个示例中,可只接收详述任何可选的偏移的参数(在框320中),其中偏移为非零,并且在其它示例中,可一直接收这些参数,并且在需要原位类型的操作的示例中,这些参数可以指示不需要偏移(例如,它们可以详述等于零的偏移)。
通过使用在图3中示出的方法以及在图2中示出的FIFO 120(或数据结构的可替代形式)和存储地址逻辑122,加载操作和存储操作可以并行实现(假如存储器单元108能够并行操作),因为这两个操作不同时需要地址生成逻辑118。在图3中示出的方法中,虽然加载地址和存储地址在相同的周期标识出,但是只独立生成(即,不引用另一个先前生成的加载地址/存储地址)这两个地址中的一个地址(加载地址),而另一个地址(存储地址)基于先前生成的加载地址(即,基于地址生成逻辑118的先前的输出)而生成。
在各个示例中,每个FIFO条目可以包括单个加载地址。然而,在其它示例中,FIFO条目可以包括包含一个或多个地址,并且在图4中示出了两个示例FIFO 420、430。在图4中所示出的第一个示例FIFO 420中,每个条目402包括多个字段:类型字段404、个数字段406以及多个地址字段408。类型字段404指示数据类型,例如,数据类型可以是“复数”(例如,包括实数/虚数对的复数数据)或“双精度浮点数”(即,双精度纯实数数据)。个数字段406指示有效的地址字段的个数(例如,其中,在FIFO中的不同条目中可能有不同个数的有效地址)并且每个地址字段能够存储一个地址(其中每个地址是数据存储器112中的一个地址)。可以将数据类型和地址个数(它们存储在字段404、406中)提供给地址生成逻辑118作为详述地址生成过程的参数(在图3的框310中以及图2中的箭头L1)。
在图4示出的第一个示例中,FIFO 420包括四个条目和四个地址字段;然而应该理解的是,FIFO可以包括更多或更少的条目和/或每个条目中的地址字段并且可以不包括示出的全部字段(例如,可以省略类型字段和/或个数字段)。由地址生成逻辑118生成(框312中)并且保存在FIFO的条目中(框314中)的有序地址的个数可取决于数据单元106的结构。在图4中示出的第二个示例FIFO 430中,个数字段406被省略且代替的是每个地址字段408对应一个有效比特410。虽然与使用单独的有效比特410相比,在第一示例中使用了更少的(log2)FIFO存储比特来编码个数字段406,但是FIFO的两端需要更多的译码/编码逻辑。
在图4中示出的第二示例中,FIFO 430也包括四个条目和四个地址字段;然而应该理解的是,FIFO可以包括更多或更少的条目和/或每个条目中的地址字段并且可以不包括示出的全部字段(例如,可以省略类型字段)。如以上所描述的,由地址生成逻辑118生成(框312中)并且保存在FIFO的条目中(框314中)的有序地址的个数可取决于数据单元106的结构。
虽然在图4中示出的示例FIFO 420、430能够存储多个地址,但是在各个示例中,FIFO可以只能够存储单个地址(例如,用于执行单个并行加载存储操作的处理器结构)。
在各个示例中,在图1中示出的数据单元106可以支持将输入数据布置成四列的操作(即,其为单输入多数据SIMD单元)。响应于加载指令,生成四个地址(在框312中)并且将这四个地址存储(在框314中)在FIFO中的相同条目402中的四个地址字段408中(例如,图4中的字段ADD0-ADD3)。响应于相应的存储指令,从FIFO中的单个条目读取四个存储的地址(框322),将任何可选的偏移应用到四个地址中的每一个地址(在框324中)并且所产生的地址被传送到存储器单元108来使用(在框326中)。这导致四个并行的存储操作在单个周期中执行。在其它示例中,数据单元106可以是对布置成不同列数(例如,N列,其中N是自然数)的输入数据操作的SIMD单元,并且因此在FIFO的每个条目中可存在不同数目的地址字段408(例如,N个地址字段)。用于FIFO的任何条目中的地址字段的个数可以在所有条目中是相同的(在这种情况中个数字段可以在一些示例中省略)或可以变化。
为了实现图3中示出的加载指令方法301,可以修改加载指令以实现将地址压入到FIFO以及将数据项从存储器加载到寄存器。这样的修改的加载指令的常规示例的描述在下面示出,带有下划线的条目是涉及FIFO的使用的描述的附加部分:
建立数据条目并且填充类型字段和个数(num)字段
对于c=0到(个数-1):
生成地址
将来自地址的项存储在目标寄存器中
将地址存储在数据条目中的下一个地址字段中
结束
将已填充的数据条目压入到FIFO中
在该示例中,指令的“生成地址”部分可以包括根据数据类型生成地址的不同方式。此外,当个数>1(即,每个FIFO条目包括多个地址)时,地址可以基于参数而生成,所述参数诸如是基址、步幅(例如,其确定使用连续地址或使用交替地址等)、增量(例如,其用来生成用于下一个地址序列的修改的基址),其中这些参数被提供给地址生成逻辑118作为指令的一部分(图2中的箭头L1)。在其它示例中,替代使用步幅(其表明存储器中的数据项之间的固定间距),可以基于参数生成地址,所述参数诸如是基址、偏移集合(其中序列中的每个地址的偏移是独立指定的且为增量)。例如,当使用2的步幅时,序列中的加载地址可以为[基址,基址+2,基址+4,基址+6];然而,当定义了[0,1,3,6]的偏移时,序列中的加载地址可以是[基址,基址+1,基址+3,基址+6]。
在一些示例中,数据单元可能只操作数据向量中的条目的适当的子集(例如,来自数据向量的4项,其中数据向量可以包括更多项,例如,包括100个数据项),并且在该情况中,针对单个数据向量,可以将修改的存储指令执行多次(例如,对于数据项0-3,4-7,...,96-99分别执行25次)。在这样的示例中,相同周期中的加载和存储操作可以对来自相同数据向量的不同项操作。例如,当数据单元采用3个周期来执行时,向量内的数据项可以进行如下处理:
Figure GDA0002465678870000131
Figure GDA0002465678870000141
如从以上表格中看到的,在周期0中,数据向量中的数据项0-3的加载地址被生成并且被存储在FIFO的第一条目中,并且使用数据项0-3的存储的加载地址的相应的存储指令发生在周期4中。当没有来自数据单元的有效输出数据时,周期0-3的存储被抑制,并且这将在下面进行进一步地描述。当存储被抑制时,地址从FIFO的弹出也被抑制。
在周期100-103,仍使用来自数据向量的数据项,并且条目仍被压入到FIFO(例如,循环可以包括多余的加载操作)。在这发生时,在循环(周期0-3)开始的存储指令被抑制并且FIFO在其下一次被使用之前(例如,在该数据向量的末尾或在下一个数据向量的开始)被清理(即,被清空),使得FIFO不包括来自多余加载操作(在周期100-103期间)的任何无效或不正确的地址。在各个示例中,可以使用专用的指令来清理FIFO。
为了实现在图3中示出的存储指令方法302,修改存储指令以使用来自FIFO的地址而不是生成新地址(这在加载指令中完成并且这将在已知的存储指令中完成)。对于修改的存储指令,替代将新的部分添加到描述中(如,在以上描述的修改的加载指令的情况中),修改的存储指令是大大精简的指令(例如,在各个示例中只包含4比特),这是因为不再需要为了能够生成存储地址而通常需要的参数(例如,类型、个数、基址、步幅、增量)。这样的修改的存储指令的常规的示例描述在下面示出:
如果SHO==0
从FIFO读取下一个条目
从FIFO条目提取类型和个数(num)
对于c=0到(个数-1):
从FIFO条目提取下一个地址
将任何可选偏移应用到提取出的地址
将项从源寄存器存储到修改的地址
结束
结束
在该示例中,作为指令的一部分的所需要的仅有的参数是源寄存器和任何可选偏移的详细信息。然而,通过将所述存储指令限制为只从数据单元106内的数据路径寄存器的单个集合中读取,可以进一步地减少这些参数,并且在这样的示例中,作为修改的存储指令的一部分的所需要的仅有的参数是包括真实的地址偏移的寄存器的标识符,并且由于偏移是可选的,所以也许并不总是使用这个参数。
在上述示例存储指令中的存储推迟(SHO)参数用来使存储操作无效直到真实数据存在于源寄存器内为止(例如,在参数具有非零值时,存储操作被无效)。回头参考以上表格中示出的示例,为了不执行这些存储,对于周期0-3,SHO参数可以是非零的(例如,在循环之前SHO参数可以被初始化为数值4,然后在每次迭代的结束减小知道它达到零)。应该理解的是,在各个示例中,可能不需要SHO参数并且以上示例存储指令的这个部分可以被省略。
在本文所描述的方法的变化中,通过具有更大深度(例如,更多的条目)的FIFO的使用,可以使加载和存储的时间上的更大的间隔成为可能。
在各个示例中,查找表可以被用于利用所实现的查找操作来获取待增加的可变偏移(和已增加的偏移),这发生在存储之前(例如,用位于图3中的框312和314之间的框324替代示出的位置)或在地址从FIFO弹出之后(例如,如在图3中示出的框322之后的框324)。
在使用查找表的示例中,FIFO存储相对加载索引(替代绝对地址,如以上所描述)并且查找表被用于将存储的地址索引(在FIFO中)映射到重新排序的存储地址。使用的查找表的深度匹配(或大于)加载取指延迟,并且查找操作可以在加载地址生成以及所产生的索引被压入到FIFO期间(例如,在图3的框312和框314之间执行查找)实现;或它可以在存储寻址期间(例如,图3中的框322之后和框324/326之前)根据从FIFO弹出的值执行。通过在加载寻址期间(例如,在第一个选项中)执行查找(在查找表中),这保证存储寻址简单(即,查找表的使用影响存储在FIFO中的数据而不影响存储地址的确定),并且在一些情况中,允许对所提供的用于乱序加载寻址的查找表的重用。在各个示例中,查找表可以按照逻辑来实现,所述逻辑诸如是使用线性反馈移位寄存器(LFSR)实现的伪随机序列生成器。LFSR是获取来自不同比特的当前状态并且将它们异或在一起以生成下一个输入的移位寄存器。来自初始编程状态(或种子)的序列将始终是相同的。LFSR可以用来生成可以被添加到框324的地址的值的伪随机序列。
本文所描述的方法和装置提供并行实现加载操作和存储操作的面积有效和功率有效的方式(例如,加载操作可以与存储操作并行执行而不需要第二地址单元)。为了能够在相同的周期中实现加载操作和存储操作,消除了对第二地址单元的需求,从而实现了面积和功率效率。如上所述,第二地址单元的使用增加了所需的硅面积和整体功耗,并且也需要更长的指令(增加指令存储需求)和附加的指令译码逻辑。
通过使加载操作和存储操作在相同周期中实现可行,提高了处理器的数据处理的速度(例如,只用单个地址单元,可能会存在额外的时延,因为加载操作和存储操作不能在相同的周期执行)。
以上所描述的方法可以用在使用RISC或加载/存储结构的任何处理器中,即,可以用于在能够以某种方式使用或操控数据之前数据已经从存储器移动到寄存器的那些处理器中。在各个示例中,处理器可以使用软件流水线技术;然而,方法也可以用于在数据路径(或数据单元)内不使用软件流水线技术的处理器中。例如,所述方法可以被应用到执行RAM访问的任何硬件流水线中(即,应用到任何硬件加速器,不仅仅是处理器)。在这样的实例中,它可以降低RAM写入寻址逻辑的复杂度。
方法可以在其中实现的、以上描述的处理器是有序处理器。所描述的方法也可以被修改,使得其也可以在乱序处理器中实现。在乱序处理器中,可以使用RAM来代替FIFO。条目可以在加载时在与原始指令顺序相关的位置中被写入RAM,并且同样地,在存储时从与原始指令顺序相关的位置取指。例如,这可以通过标记重新排序的指令与其原始相对位置并且随后使用这些标记的值来确定将条目存储到RAM中的哪个位置/从RAM中的哪个位置取指来实现。
术语“处理器”和“计算机”在本文用于指代具有使其可执行指令的处理能力的任何设备或其部分。例如,术语“处理器”可以包括中央处理单元(CPU)、无线处理单元(RPU)、图形处理单元(GPU或VPU)、物理处理单元(PPU)、数字信号处理器(DSP)、通用处理器(例如,通用CPU)、微处理器、设计为加速CPU之外的任务的任何处理单元,等等。本领域的技术人员将意识到,这样的处理能力被包括在许多不同的设备中并且因此术语“计算机”包括机顶盒、媒体播放器、数字收音机、PC、服务器、移动电话、个人数字助理以及许多其它设备。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络当中。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段,或执行在本地终端处的一些软件指令和在远程计算机(或计算机网络)处的一些软件指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路例如DSP、可编程逻辑阵列等执行。
存储用于实现所公开的方面的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性的或非易失性的。易失性非暂时性介质的示例包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的示例包括光学和磁性存储器技术、闪存、相变存储器、电阻性RAM。
对“逻辑”的特定引用指执行一种或多种功能的结构。逻辑的示例包括布置成执行那些功能的电路系统。例如,这样的电路系统可包括晶体管和/或在制造过程中可用的其它硬件元件。作为示例,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器例如寄存器、触发器或锁存器、逻辑运算器例如布尔运算、数学运算器例如加法器、乘法器或移位器和互连的电路系统或结构。这样的元件可被提供为定制电路或标准单元库、宏或提供在其它抽象层级处。可以特定的布置使这样的元件互连。逻辑可包括固定功能的电路系统,且电路系统可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑也可包括实现组成部分的功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路系统。
本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效果,这对技术人员将是明显的。
将理解,上面描述的益处和优点可涉及一个实施例或可涉及几个实施例。实施例不限于解决任何或所有所陈述的问题的那些实施例或具有任何或全部所陈述的益处和优点的那些实施例。
对“一个”项目的任何引用指那些项目中的一个或多个。术语“包括”在本文用于意指包括所标识的方法框或元件,但这样的框或元件并不包括排他列表,且装置可包含附加框或元件,而且方法可包含附加操作或元件。此外,框、元件和操作本身并不隐含地是封闭的。
本文描述的方法的步骤可在适当时以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行地执行多个步骤。此外,单独的框可从任何方法删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可与所描述的其它示例中的任一个示例的方面组合以形成另外的示例,而不失去所寻求的效果。在附图的元件被示为由箭头连接的场合,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流向。元件之间的流向可以在任一方向上或在两个方向上。
应该理解的是,优选实施例的上述描述仅作为示例给出,并且各种修改可由本领域中的技术人员做出。虽然上面以特定的详细程度或参考一个或多个单独的实施例描述了各种实施例,但是本领域中的技术人员可对所公开的实施例进行很多变更而不偏离本发明的精神或范围。

Claims (15)

1.一种在处理器中生成数据存储操作的一个或多个地址的方法,所述方法包括:
响应于已经从程序找取的数据加载指令,生成用于所述数据加载指令的一个或多个地址并将用于所述数据加载指令的一个或多个地址存储在FIFO数据结构或随机存取存储器RAM中(314);
响应于已经从程序找取的数据存储指令,访问所述FIFO数据结构或RAM中的一个或多个存储的地址(322),并且确定用于由所述数据存储指令触发的数据存储操作的一个或多个地址,其中,响应于所述数据存储指令而访问的所述一个或多个存储的地址在之前由所述处理器中的地址单元生成并且被存储在所述FIFO数据结构或RAM中,以响应于对应的各自的数据加载指令,并且其中,基于一个或多个被访问的地址,确定用于所述数据存储操作的一个或多个地址;以及
将所确定的用于所述数据存储操作的一个或多个地址传送到所述处理器内的存储器单元(326)。
2.根据权利要求1所述的方法,还包括:
接收用于详述要被应用的偏移量的参数(320),
并且其中,基于所述一个或多个被访问的地址确定用于数据存储操作的一个或多个地址包括:
将所述偏移量应用到所述一个或多个被访问的地址中的每一个(324)。
3.根据权利要求1所述的方法,其中,针对所述数据加载指令生成的一个或多个地址被用于标识来自数据向量的数据项,并且其中,所述方法还包括下列中的一个或两个:
在存储标识来自数据向量的第一数据项的地址之前,清理所述FIFO数据结构或RAM;以及
在访问来自所述FIFO数据结构或RAM、标识来自数据向量的最后一个数据项的地址之后,清理所述FIFO数据结构或RAM。
4.根据权利要求1所述的方法,其中,将针对所述数据加载指令生成的一个或多个地址存储在所述FIFO数据结构或RAM中包括:
将针对所述数据加载指令生成的多个地址存储在所述FIFO数据结构或RAM中的单个条目中。
5.根据权利要求4所述的方法,其中,访问所述FIFO数据结构或RAM中的一个或多个存储的地址包括:
从所述FIFO数据结构或RAM中的单个条目中访问多个存储的地址。
6.根据权利要求1所述的方法,其中,所述处理器是乱序处理器,并且其中:
将针对所述数据加载指令生成的一个或多个地址存储在FIFO数据结构或RAM中包括根据所述数据加载指令在指令的原始顺序中的位置,将针对所述数据加载指令生成的一个或多个地址存储在所述RAM中的位置中;以及
访问所述FIFO数据结构或RAM中的一个或多个存储的地址包括根据所述数据存储指令在指令的原始顺序中的位置,从所述RAM中的位置访问一个或多个存储的地址。
7.一种处理器,包括:
地址生成逻辑(118),其布置成响应于已经从程序找取的数据加载指令生成用于由所述数据加载指令触发的数据加载操作的一个或多个地址;
FIFO数据结构或随机存取存储器RAM(120),其布置成存储由所述地址生成逻辑(118)响应于数据加载指令生成的一个或多个地址;
存储地址逻辑(122),其被布置成响应于已经从程序找取的数据存储指令,从所述FIFO数据结构或RAM访问一个或多个存储的地址,并且被布置成确定用于由所述数据存储指令触发的数据存储操作的一个或多个地址,其中,响应于所述数据存储指令而访问的所述一个或多个存储的地址在之前由所述地址生成逻辑生成并且被存储在所述FIFO数据结构或RAM中,以响应于对应的各自的数据加载指令,并且其中,基于一个或多个被访问的地址,确定用于所述数据存储操作的一个或多个地址;以及
地址单元(104),其包括所述FIFO数据结构或RAM(120)、所述存储地址逻辑(122)和所述地址生成逻辑(118)。
8.根据权利要求7所述的处理器,还包括:
存储器单元(108),其被布置成,实现由数据加载指令触发的数据加载操作和实现使用由所述存储地址逻辑确定的地址的数据存储操作。
9.根据权利要求7所述的处理器,其中所述存储地址逻辑还被布置成接收用于详述要被应用的偏移量的参数,并且被布置成通过将所述偏移量应用到所述一个或多个被访问的地址中的每一个被访问的地址来确定用于所述数据存储操作的一个或多个地址。
10.根据权利要求7所述的处理器,其中,所述FIFO数据结构或RAM(420)被布置成存储多个条目(402),每个条目包括多个地址字段(408),其中,每个地址字段在条目中被布置成存储针对单个数据加载指令生成的多个地址中的一个地址。
11.根据权利要求10所述的处理器,其中,所述FIFO数据结构或RAM中的条目(402)还包括个数字段(406),其布置成存储用于标识在所述多个地址字段中存储的有效地址的个数的值。
12.根据权利要求7所述的处理器,其中,所述存储地址逻辑被布置成,响应于数据存储指令,从所述FIFO数据结构或RAM中的单条目访问多个存储的地址。
13.根据权利要求7所述的处理器,其中:
所述FIFO数据结构或RAM(120)被布置成,根据所述数据加载指令在指令的原始顺序中的位置,在所述RAM中的位置存储响应于数据加载指令而生成的一个或多个地址;并且其中
所述存储地址逻辑(122)被布置成,响应于数据存储指令,根据所述数据存储指令在指令的原始顺序中的位置,从所述RAM中的位置访问一个或多个存储的地址,并且确定用于由所述数据存储指令触发的数据存储操作的一个或多个地址,其中,基于所述一个或多个被访问的地址,确定用于所述数据存储操作的一个或多个地址。
14.根据权利要求7所述的处理器,还包括数据单元(106),其布置成使用软件流水线技术来处理通过数据加载指令所加载的数据。
15.根据权利要求7所述的处理器,其中,所述处理器是无线处理单元。
CN201510561012.6A 2014-09-08 2015-09-06 处理器和其中生成数据存储操作的一个或多个地址的方法 Active CN105404588B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1415817.4 2014-09-08
GB1415817.4A GB2529892B (en) 2014-09-08 2014-09-08 Efficient loading and storing of data

Publications (2)

Publication Number Publication Date
CN105404588A CN105404588A (zh) 2016-03-16
CN105404588B true CN105404588B (zh) 2020-09-18

Family

ID=51796326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510561012.6A Active CN105404588B (zh) 2014-09-08 2015-09-06 处理器和其中生成数据存储操作的一个或多个地址的方法

Country Status (4)

Country Link
US (1) US9916108B2 (zh)
CN (1) CN105404588B (zh)
DE (1) DE102015114969A1 (zh)
GB (1) GB2529892B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101542430A (zh) * 2006-09-29 2009-09-23 Mips技术公司 用于处理器的加载/存储单元及其应用
WO2012077516A1 (ja) * 2010-12-10 2012-06-14 株式会社日立製作所 プログラマブルコントローラ
CN102754069A (zh) * 2010-02-18 2012-10-24 国际商业机器公司 加载/存储分离设施及其指令

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2961792B2 (ja) * 1990-03-16 1999-10-12 日本電気株式会社 Ramアドレス生成回路
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US8221298B2 (en) * 2008-07-21 2012-07-17 Paragon Films, Inc. Apparatus and method for folding film edges
US9244686B2 (en) * 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9798550B2 (en) * 2013-01-09 2017-10-24 Nxp Usa, Inc. Memory access for a vector processor
US9710268B2 (en) * 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101542430A (zh) * 2006-09-29 2009-09-23 Mips技术公司 用于处理器的加载/存储单元及其应用
CN102754069A (zh) * 2010-02-18 2012-10-24 国际商业机器公司 加载/存储分离设施及其指令
WO2012077516A1 (ja) * 2010-12-10 2012-06-14 株式会社日立製作所 プログラマブルコントローラ

Also Published As

Publication number Publication date
GB2529892A (en) 2016-03-09
DE102015114969A1 (de) 2016-03-10
CN105404588A (zh) 2016-03-16
GB201415817D0 (en) 2014-10-22
US20160070505A1 (en) 2016-03-10
GB2529892B (en) 2017-04-12
US9916108B2 (en) 2018-03-13

Similar Documents

Publication Publication Date Title
US11816572B2 (en) Hardware accelerated machine learning
US10719318B2 (en) Processor
US10656944B2 (en) Hardware apparatus and methods to prefetch a multidimensional block of elements from a multidimensional array
CN107871301B (zh) 在gpu中的任务调度
EP2603851B1 (en) Data processing apparatus having bit field manipulation instruction and method
US9361242B2 (en) Return stack buffer having multiple address slots per stack entry
CN109144568B (zh) 将有效位通道作为矢量断言暴露于cpu
US20140047218A1 (en) Multi-stage register renaming using dependency removal
CN106681695B (zh) 提前取出分支目标缓冲器
EP3079068A1 (en) Cache operation in a multi-threaded processor
US9569210B2 (en) Apparatus and method of execution unit for calculating multiple rounds of a skein hashing algorithm
CN111782270A (zh) 一种数据处理方法及装置、存储介质
CN105404588B (zh) 处理器和其中生成数据存储操作的一个或多个地址的方法
JP4444305B2 (ja) 半導体装置
WO2023009468A1 (en) Apparatus and methods employing a shared read port register file

Legal Events

Date Code Title Description
C06 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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210330

Address after: Trondheim

Patentee after: NORDIC SEMICONDUCTOR ASA

Address before: Hertfordshire

Patentee before: Imagination Technologies Ltd.