CN1656445A - 对宽存储器访问 - Google Patents

对宽存储器访问 Download PDF

Info

Publication number
CN1656445A
CN1656445A CNA038118084A CN03811808A CN1656445A CN 1656445 A CN1656445 A CN 1656445A CN A038118084 A CNA038118084 A CN A038118084A CN 03811808 A CN03811808 A CN 03811808A CN 1656445 A CN1656445 A CN 1656445A
Authority
CN
China
Prior art keywords
data
register
vector
size
disposal system
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
CNA038118084A
Other languages
English (en)
Other versions
CN1656445B (zh
Inventor
C·H·范伯克
P·P·E·梅维斯森
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.)
Italian French Ericsson Ltd i L
ST Ericsson SA
Telefonaktiebolaget LM Ericsson AB
Ericsson Inc
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1656445A publication Critical patent/CN1656445A/zh
Application granted granted Critical
Publication of CN1656445B publication Critical patent/CN1656445B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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
    • G06F9/3834Maintaining memory consistency
    • 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/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Saccharide Compounds (AREA)
  • Static Random-Access Memory (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Image Input (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一个处理系统,包括一个处理器和一个物理存储器(500),所述的物理存储器具有单一大小的存储器端口(505),所述的单一大小的存储器端口可以用于访问存储器中的数据。所述的处理器被设置为至少对第一数据大小数据进行操作,并且第一数据大小小于第二数据大小。第一数据大小等于或小于存储器端口的大小。所述的处理系统至少包括一个第一数据大小的数据寄存器(514),所述的至少一个数据寄存器连接到存储器端口(505),并且至少有一个第二数据大小的数据端口(525)连接到数据寄存器(525),并且所述的处理器用于启动对第二大小的数据元素的访问。

Description

对宽存储器访问
发明领域
本发明涉及一个处理系统。
发明背景
第三代无线电通信标准,例如UMTS-FDD、UMTS-TDD、IS2000和TD-SCDMA,都运行在很高的频率。采用3G移动通信标准的调制解调器,例如UMTS(无线电收发机)与GSM相比,大约需要其100倍甚至更多的数字信号处理能力,。为了能处理不同的标准并且能灵活地适应于新的标准,希望使用一个可编程结构实现针对所述标准的无线电收发机。一种已知的提高性能的方法是在存储器的一行中存储多个数据元素(数量),并且每次操作多个(多于一个)数据元素。这样的系统,例如被称为SIMD(单指令、多数据)或MIMD(多指令、多数据)。一个SIMD处理器的例子是矢量处理器。通常,宽存储器具有一个端口,该端口用于启动对存储器的至少一个行的单元的读取和写入访问。在这个例子中,所述的存储器具有一行宽度用于存储矢量,每次可以读取或写入一个或多个矢量。不特别提供对小于矢量的单元的访问。为能最优使用存储器,还希望能够以有效的方法访问那些小于存储器行总宽的数据元素。传统上,这样较小的单元可以存储在存储器的行中,该行的某些部分没有被使用,从而增加了存储器成本。可选地,可以将较小单元存储在以连接形式存在的一个行中,在这里读取或写入整个行,需要选取附加过程指令和周期,或插入一个希望的较小的单元以形成整个存储行。这样降低了性能。在存储器的宽度显著大于较小单元的大小的情况下,这些问题变得尤为严重。例如,用于语音识别的语音特性矢量的数据元素存储部分通常是8到16位宽。对于电话,编码/调制数据元素通常是8位(或用于复杂值的2*8位)。不必增加这些大小。对于新的电话系统或提高的语音识别性能来讲,希望提高处理的速度。利用更宽的存储器来增加处理速度,不用特定调节,会增加储存数据需要的存储器的数量,还可以减少如上所述的存储器访问的特定方式。
发明概要
本发明的一个目的是提供一种处理器体系结构,该体系结构可以提供存储器对宽存储器和对较小数据元素的快速存取。
为了实现这个目的,在一个处理系统中,该处理系统具有处理器以及具有用于在存储器中存取数据的单一大小存储器端口的物理存储器,所述的处理器设置为对至少第一数据大小的数据和较小的第二数据大小进行操作;第一数据大小等于或小于存储器端口大小;所述的处理系统包括至少一个连接到存储器端口的第一数据大小的数据寄存器;和至少一个连接到数据寄存器的第二数据大小的数据端口,并且所述的处理器启动对第二大小的数据元素的存取。
用这种方法可以使用具有一个字长的常规存储器。这样可以保留较低成本的存储器。通常,存储器字大小与处理器的最大字长匹配。为了访问较小的数据元素,使用了一个中间寄存器。增加了一个附加端口启动对寄存器中的较小的数据元素的访问。中间寄存器的使用可以是完全透明的。对于处理器芯片和程序设计人员来讲,存储器看起来像具有不同大小的端口。用这种方法,为了访问作为大数据元素的一部分的小数据元素,不用附加的指令系统开销,例如选择与/或变换大数据元素,就可以快速访问小的数据元素。
如权利要求2所述,存储器端口大小至少是第二数据大小的两倍。用这种方法,寄存器至少可以存储两个小的数据元素。特别是在顺序地对小的数据元素进行访问的情况下,一个对物理存储器的访问至少启动两个连续对小的数据元素的快速访问。这样减少了在访问物理存储器中的时间损失。
如附属权利要求3所述,对于一个读出数据端口,使用一个多路复用器从受到读取地址控制的数据寄存器选择和提取第二数据大小的数据元素。例如,读取地址的最高有效位可以被用来检验所述的数据元素是否已经在寄存器中(并且如果不在,利用这个部分将其从物理存储器中检索出来),然而最低有效位可以用于在寄存器中选择数据元素。
如附属权利要求4所述,对于一个写入数据端口,使用一个多路输出选择器从受到写入地址控制的数据寄存器中的一个可选择的位置插入第二数据大小的数据元素。所述的选择类似于描述过的读取端口。
如附属权利要求5所述,所述的处理系统可以包括多个第二数据大小的数据端口,该数据端口连接到处理器,并且每一个数据端口都各自有一个相关的数据寄存器,该数据寄存器连接到相应的数据端口并且连接到物理存储器的端口。用这种方法,还可以减少访问数据的平均时间。例如,如果一个算法处理两个连续的数据流,每一个数据流可以利用一个寄存器和数据端口。然后每个数据流仅需要对物理存储器访问一次,就至少可以访问两个连续的数据元素。
如附属权利要求6所述,对在所述的存储器与/或多个寄存器中,由包括一个数据的“复制”的寄存器引起的可能的一致性冲突进行检查。所述的系统启动在寄存器中的数据保持更新,其目的是使得小的数据元素的更新不必总是导致对物理存储器的写入操作。此外,它还启动直接从寄存器读取被更新的小的数据元素,即使存储器存取时间也进行保存。对于写入数据端口(由此相关的寄存器允许写入访问),处理器将被存储在寄存器中的数据信息存储在附加的一致性寄存器中。数据用来检查正在读取的数据(从物理存储器或从一个寄存器)是不是经改变的正在访问的数据(不过可能对存储器或读取寄存器来讲还没被更新)。最好,识别信息是一个可以访问物理存储器中的一个字的实际地址,其中所述的字具有存储器端口的宽度。用这种方法,很容易检查对物理存储器的直接访问是否可能同存储在寄存器中的数据相冲突。
如附属权利要求8所述,相干性检查程序包括一个冲突解析器,对于响应检测到的可能的一致性冲突,采取校正步骤。用这种方法,在设计程序时可以减轻程序设计人员不得不进行的这种测量调节。校正步骤的一种方式,如相应的权利要求9所述,是将数据寄存器标记为读取访问无效,使来自存储器的数据寄存器的内容再次加载,以便响应对数据寄存器的读取访问。
换句话说,如附属权利要求10所述,相干性检查程序包括一个相干性寄存器,每个相应的数据寄存器分别保存存储在相应的数据寄存器中的信息识别数据;还设置有校正程序,对一个数据寄存器的写入访问与/或对物理存储器的写入访问进行响应,根据识别信息,通过将内容复制写入数据寄存器或存储器到全部其它数据寄存器与/或存储器中的一个位置,来存储相同的数据。在这个实施例中,更新数据被复制到所有的寄存器,根据相干性,寄存器将存储相同的数据。如果允许直接访问该物理存储器,则包括将数据复制到物理存储器。最好,大数据元素直接访问物理存储器,也采用通过一个中间寄存器的方式,而在这样情况下,不会自动地写入到寄存器,而访问存储器的写入则是必须的。
如附属权利要求11所述,至少一个数据寄存器(以下称为″读取寄存器″)连接到一个读出数据端口,并且至少一个数据寄存器(以下成为“写入寄存器”)连接到一个写数据端口;并且处理器包括一个用于可选择地将数据从写入寄存器提供到读出数据端口的旁路路径;相干性检查程序包括与每个数据寄存器相应的相干性寄存器,用于保存存储在相关数据寄存器中的信息识别数据;设置了冲突解析器,通过响应写入到写入寄存器里的写入数据激活旁路路径来执行校正步骤,以便如果读取寄存器根据识别信息存储了相同的数据元素的情况下,连续的读取访问读取寄存器。通过利用旁路,具有相同内容的写入寄存器已经被更新之后,不需要立即重新加载一个读取寄存器。反之,然后直接从被更新的写入寄存器读取数据。用这种方法,对物理存储器的访问保持在较低的程度。在对写入寄存器的访问中有时可能会产生延迟。
物理存储器最好基于单一端口SRAM,即成本有效的。为了获得一个成本有效的宽物理存储器,可以将很多小的数据元素存储在一个存储器字中,最好使用一个由多个并行排列的RAM存储体形成的物理存储器。该存储器最好嵌入在处理器中。
所描述的体系结构可以方便地用于一个标量/矢量处理器,其中矢量部分操作第一数据大小的矢量,标量部分操作第二数据大小的标量,其中第一数据宽度至少是第二数据宽度的两倍。在这样一个结构里,可以使用相同的存储器存储矢量和标量。它还使其便于在矢量的元素上执行标量操作。
本发明的这些及其它特征是显而易见的,并且参考以下说明的实施例进行解释。
在附图中:
图1示出了一个优选的结构,其中可以使用根据本发明的标量/矢量处理器;
图2示出了根据本发明的标量/矢量处理器的主结构;
图3示出了支持的数据宽度和数据类型;
图4示出了矢量-存储单元的方框图;和
图5示出了使用的中间寄存器和两个端口大小。
优选实施例的详细说明
地址生成器(AGU)和存储单元最好被用于一个为了信号处理而优化过的处理器。这种处理器可以是DSP或任何其它合适的处理器/微控制器。说明书的其余部分说明使用了一个非常强大的标量/矢量处理器中的单元。这样的一个处理器可以单独使用或与另一个处理器结合使用。图1示出了可以使用的标量矢量处理器的优选结构。在这个结构中,通过总线110连接三个主要部分。可以使用任何合适的总线作为总线110连接这三个部分,例如AMBA高速总线(AHB)。主要部分是:
可编程标量/矢量处理器120、微控制器或DSP子系统130,所述的可编程标量/矢量处理器120包括功能单元和本地数据存储器(在图1中称为矢量存储器),
微控制器或DSP子系统130包括被限定的芯片内程序和数据存储器;
连接块140。
所述的标量/向量处理机120主要用于常规″繁忙/功能″处理,尤其是内部-循环的处理。标量/矢量处理器包括矢量处理功能。同样地,它提供了用于待执行的代码的向量化部分的大规模并行性。全部信号处理的大多数将通过标量/矢量处理器的矢量部分执行。具有一个阵列,例如32个相同的处理元件执行相同的指令,提供了高度并行性。
同一个32字宽存储器接口相结合使用,使其以低成本和适度的功率耗费达到崭新的可编程性能水平。然而,完全利用这个并行性并不总是可行的,因为很多算法不足以表示实际形成的数据并行性。根据Amdahl定律,在直接可矢量化部分代码矢量化以后,大部分时间都花费剩余部分的代码上。所述的剩余代码可以分成四种:
涉及指令的地址(例如使用模寻址将一个点增加到环形缓冲器里)
常规标量运算(例如相应于矢量处理器的主循环的标量运算)
循环
不规则的标量运算。
所述各类代码的分数比例基本上取决于执行的算法。例如,Golay相关器(用于P-SCH查找)需要大量与指令有关的地址,但是其它算法例如Rake则不是这样的。可以通过使用根据本发明的AGU/存储器单元优化涉及指令和循环的地址的性能。可以通过在一个处理器中紧密地结合标量和矢量处理优化常规标量运算的操作。本发明人所研究的全部与3G相关的算法揭示了不规则的标量运算部分代码的比例非常有限。这些性质允许将标量/矢量处理器120和微控制器或DSP130之间的任务分离,其中独立的微控制器或DSP130执行不规则的任务,最好同时控制标量/矢量处理器。在这些优选的结构中,标量/矢量处理器120作为可编程共同处理器执行(在剩余部分称为CVP、辅助矢量处理器)。标量/矢量处理器120和微控制器130之间的接口,处理通信(例如通过共享存储器)和同步(例如通过共享存储器和状态信号)。所述的接口最好是存储映像。
接口模块140允许所述的处理器与其余的系统相互作用。在优选实施例中,标量/矢量处理器作为一个用于2G/3G移动式网络的软件调制解调器(收发机)使用。对于这种软件调制解调器功能,接口模块140可以包括专用硬件,该专用硬件作为前端具有一个主任务,受到微控制器130的控制,将控制和数据字传送到矢量存储器,例如DMA。然后由标量/矢量处理器处理矢量存储器中的数据。
标量/矢量处理器120可以从属于总线110,然而微控制器130和连接块140(可以包括DMA单元)可以作为一个主机执行。具有CVP的全部通信,它是程序、数据或控制,最好是存储映象的。存储器可以是一个离线DRAM,这个DRAM可以同时由标量/矢量处理器用作(分离)交替存储器。
在说明书中,经常用到短语″地址计算单元″或ACU。出于说明的目的,认为该用语与″地址生成器″或AGU相同。说明的重点在使用这样的单元对数据地址进行计算上。所属技术领域的专业人员也能将相同的功能用于计算指令地址(″循环控制″)。
图2示出了根据本发明的处理器的主结构。所述的处理器包括一个流水线矢量处理部分210。为了支持矢量部分的操作,标量/矢量处理器包括一个标量处理部分220,被设置为与矢量部分进行并行操作。最好所述的标量处理部分也是流水线。为了支持矢量部分的操作,矢量部分的至少一个功能单元还提供标量部分的对应部分的功能。例如,变换功能单元的矢量部分可以用函数式变换一个矢量,其中标量部分由(或传送到)变换功能单元的标量部分提供。同样地,变换功能单元包括矢量和标量两个部分。因此,至少一些功能单元不但具有一个矢量部分,而且具有一个标量部分,其中矢量部分和标量部分可以通过交换标量数据相互合作。功能单元的矢量部分提供原始的处理能力,其中对应的标量部分(例如相同的功能单元的标量部分)通过提供与/或使用标量数据支持矢量部分的操作。通过矢量流水线提供矢量部分的矢量数据。
在图2的优选实施例中,标量/矢量处理器包括以下七个特定功能单元。
指令分配单元(IDU250)。IDU包括程序存储器252、读取连续的VLIW指令并且将每个指令的七个片段分配给七个功能单元。它最好包括一个循环单元,该循环单元支持高达零-循环的三个嵌套级。在优选实施例中,它不支持分支、转移或中断。根据限制描述符加载初始程序计数器,在下面进行更详细地说明。
矢量存储器单元(VMU260)。VMU包括矢量存储器(图2中未示出)。在每个指令期间,它可以从矢量存储器发送一行或将一行接收到矢量存储器中。相同的指令可以指定另外一个标量发送操作与/或一个接收操作。功能单元VMU是唯一的连接到外部领域,例如外部总线110的单元。
代码生成单元(CGU262)。CGU是专门用于对被限定的字段运算的。例如,可以使用CGU产生矢量CDMA代码芯片以及相关函数,比如通道编码和CRC。
运算器介质存取控制单元(AMU264)。AMU是专门用于规则整数和定点运算的。它支持互相矢量操作,其中以元素-方式在多个矢量上执行运算。在优选实施例中,AMU还提供了一些内部矢量操作,其中在元素内部单个矢量上执行运算。
混洗(shufle)单元(SFU266)。所述SFU单元可以根据指定的混洗帧面重新整理矢量的元素。
左移位单元(SLU268)。所述SLU可以通过一个单元移动矢量的元素,例如一个字、两倍字或四倍字向左移动。产生的标量提供给它的标量部分。根据SLU矢量操作发送的类型,使用的标量或者是零或者来自标量部分。
右移位单元(SRU270)。SRU与SLU相似,只是用来右移。另外它具有将来自在AMU上的内部矢量操作的连续的结果进行合并的能力。
以下表格示出了全部FUs具有的函数向量部分210,其中的某些没有控制部分230或标量部分220。
功能单元 控制 标量 矢量
指令-分配单元 序列,循环 指令分配
矢量存储器单元 地址计算 标量i/o 矢量i/o
代码-生成单元 代码矢量生成
ALU-MAC单元 索引 广播 内部矢量:ALU、MAC、mul,..
部分 内部矢量:附加、极大值
混洗单元 矢量混洗
左移位单元 标量i/o 矢量位移
右移位单元 标量i/o 矢量位移
根据本发明的标量/矢量处理器以两个主要方式应用了指令-级别并行性:向量处理,其中单个指令操作在(标量)数据的矢量上。这个方法又名单个指令流、多个数据流或SIMD。多功能部件的并行处理,每个都操作在矢量上。这个可以被视为VLIW指令级别并行性的方式。注意这两个指令-级别并行性方式是独立的,它们的影响是可以累积的。
功能单元之间(FU)通信
功能单元(FU)并行操作。每个FU能够接收和发送矢量数据。多数的FUs也能够接收和发送标量数据。
FU  源 vmu  cgu  amu  sfu  slu  sru
目标  #输入
Vmu  1  !
Cgu  1  !
Amu  2  !
Sfu  1  !
Slu  1  !
sru  1  !
全部功能单元并行操作。一旦接收指令片段、就输入、处理和输出向量数据和合适的标量数据。在FUs中通信严格地在标量部分之中或在矢量部分(互相FU通信)之中进行。也就是说,除了IDU之外,全部FUs的矢量部分,按流水线连接。在优选实施例中,流水线在指令基础上是可配置的。为此,FUs最好是通过互连网络互相连接的,原则上在每个周期中,允许每个矢量部分从任何其它矢量部分接收一个矢量。在其它情况下,这个特征启动,FUs的任意的流水线的生成(除IDU外)。构成矢量路径的六个功能单元可以输出一个矢量,并且在每个时钟周期期间以并行方式将其发送到其它单元。它们还可以从另一个单元接收一个矢量。网络几乎是完全地连接的。只有没有意义的链接被省略了。AMU可以同时接收两个矢量。如图2所示,网络最好由作为一个信号源(通过一个光盘表示的)被连接到一个网络路径的每个FU组成。它作为一个信号变换(通过一个三角形表示)连接到全部其它路径。FU的VLIW指令部分表示它将使用矢量的哪个路径。用这种方法,可以在指令基础上配置流水线。每个路径可以传输全部矢量,例如使用256并行线路。同样地,至少FUs的一些标量部分是通过独立的流水线连接的。流水线最好在指令基础上还是可配置的。FUs的标量部分之中的互连网络在一定意义上可以是部分的,例如,没有标量可以被发送给或来自于至少一个FU的标量部分。因此,很少能够指定流水线顺序。标量和矢量流水线可以独立地被配置。例如,通过在相应的VLIW部分的表示,标量流水线和矢量流水线二者都能够通过功能单元被读取。
不同功能单元的控制部分之中没有特定的接续性。这个控制部分从IDU接收一个VLIW指令的片段,更新他们自己状态,并且控制它们的相应的标量和矢量部分。
功能单元内部(FU)通信
在FU内部这些部分之间有紧密的交互作用(内部FU通信)。所述的交互作用是FU的操作不可分割的部分。例子是SLU和SRU,其中产生的与/或使用的标量是相应的FU的标量部分提供的。
通常在单个周期中执行指令。有可能由矢量存储器的拥堵和清楚表示本身停止的周期而导致的异常。
数据宽度
在优选实施例中,标量/矢量处理器支持如图3所示的多个数据宽度和数据类型。存储器地址的基本单位是字,也称为单字。数据宽度最好可以是单字(W)、双字(DW或2W=16位)、或四倍长字(QW或4W=32位)。一个字的大小是W=8位。标量最好是三种长度:(单)字、双字,和四倍长字。矢量具有PQ四倍长字的固定大小。它最好是下列三种格式中的一种结构:
PQ四倍长字大小的要素元素,
PD=2PQ双字大小的要素,
Ps=2PD=4PQ(单)字大小的要素。
矢量要素的索引范围是[0...4PQ-1]。因此已经索引的双字和四倍长字的索引也有四个之多。图3示出了数据大小的视图。PQ中的所述的体系结构完全是可升级的,并且用于定义任何大小的矢量PQ≥1。然而,在大多数的情况下,最好为PQ选择2的幂。在优选实施例中,PQ是8,表示数据通路宽度和32字的存储器宽度。
指令
CVP指令是控制指令或者是VLIW指令。控制指令可以是,例如,零-系统开销循环初始化。没有分支、转移或子程序。VLIW指令被分割为片段,其中每个指令片段指定了将由对应的功能单元执行的操作。所述的片段还可以细分为矢量部分和标量部分(如果给出)的一部分。所述的片段还包括两部分信息,哪个网络部分用于接收数据(用于矢量部分的一个或多个矢量和用于标量部分的一个或多个标量)。
标量/矢量处理器的状态
CVP的状态是它的功能单元的组合状态。在优选实施例中,它包括:
矢量存储器(VMU的一部分);
程序存储器(IDU的一部分);
向量寄存器(全部功能单元);
标量寄存器(最多的功能单元);
控制寄存器,包括和地址偏移量寄存器。
除了程序设计员可视寄存器外,CVP通常包含额外的寄存器(矢量,标量和控制)用于流水线操作和缓存。这些不是CVP指令集结构的一部分。
某些(矢量,标量和控制)寄存器是所谓的配置寄存器。配置寄存器的内容只能从矢量存储器中加载;没有其他的方法可以改变它的值。配置寄存器支持功能单元并且通常定义功能参数。通过把“半常数”功能参数保存在配置寄存器中,可以大大降低指令宽度和存储器拥挤。
下表中列出了CVP状态的各个部分的概况。
  FU       控制路径              标量路径              矢量路径
  数据   配置   数据   配置   数据   配置
  Vmu   偏移   5   地址cu   8   数据存储器   2048
  Cgu   计数器   3   代码   3   状态   6   掩码   2
  多项式   2
  Amu   1   接收   1   片断大小   1   寄存器堆   16
  Sfu   寄存器   1   混洗帧面   4
  slu   接收   1   寄存器堆   2
  sru   接收   1   寄存器堆   2
  ldu   pc   1   循环cu   2   程序存储器   2048
全部程序设计员-可见的寄存器可以从矢量存储器加载。全部寄存器,除了结构寄存器可以被保存在矢量存储器中。通过在限制的结尾保存CVP寄存器,并且通过在最后恢复它们,CVP可以继续一个特定的任务,好象没有同时执行别的限制。这些保存和恢复操作是可选择的,可以是部分的,并且必须被明确地编程。
存储单元
图4示出了存储单元(VMU400)的方框图,其中存储器结构使用了根据本发明的存储器结构。在如下所述的优选实施例中,在矢量处理器中使用的存储单元与物理存储器结合,所述的物理存储器具有能够存储整个矢量的宽度。应当理解还可以将相同的原理用于标量处理器,例如传统的DSPs。VMU包括并且控制矢量存储器410,矢量存储器410将一个巨大的数据带宽提供给另一个功能单元。所述的物理向量存储器410最好是基于单个-端口静态存储器。因为嵌入的SRAMs也就是Ps*W宽通常不是有效的,物理存储器可以由一组或多组并行排列的宽随机访问存储器(RAM)构成。所述的标量数据最好是存储在与存储矢量数据相同的存储器中。在这样的一个系统中,标量可以与其相对应的矢量混合。为了使存储器的成本有效并且访问时间最佳,该存储器最好为只允许全部向量行的读取和写入。同样地,逻辑上该物理存储器由每一个矢量大小行组成。为了支持标量的读取和写入,附加的硬件(标量的行高速缓冲存储器430和支持440,以便标量在行内部选择)用于访问以标量方式的矢量宽物理存储器。
图5提供了更加详细的结构。它示出了具有一个充分宽的端口505(在该例子中,具有矢量的宽度)的物理存储器500。在图中仅示出了一个读取端口。所属技术领域的技术人员可以容易确定用于数据写入的相似结构。该结构包括至少一个与物理存储器端口505相同宽度的寄存器。示出了四个寄存器510、512、514、516。全部寄存器对于读取端口505来讲都是可选择的、可连接的,以便接收数据。在该图中,一个寄存器514是专门用于读取小数据元素的,在这个例子中:用于读取标量。寄存器中最好至少有两个小的数据元素。该数据寄存器514与读取端口525有关,连接到一个处理单元(更常见的是:数据接收器)。多路复用器520最好连接到寄存器514,以便从寄存器选择相应的标量数据。该多路复用器可以通过寄存器中的标量的数量进行控制(例如使用具有32个8位字的256位,该标量由五个最低有效位表示),所述的寄存器是由地址的最低有效位指定的寄存器。多路复用器是公知的,不作进一步的说明。寄存器连接到物理存储器的读取端口505,用于接收数据(充分的宽)。通常可能有Nr个标量读取端口,每个连接到矢量宽寄存器。这些可以是独立的寄存器或者可以是相同的。该寄存器是图4的高速缓存430的一部分。该多路复用器是标量选择模块的一部分。尽管没有示出,但是同样的道理,高速缓存430给出了具有Nw矢量宽的Nw量写入端口寄存器。对于每个标量写入端口,高速缓存430中的相应的寄存器连接到Nw输入的矢量-宽分离多路复用器,以便选择将哪个高速缓存行写回到物理存储器。当一个VMU指令需要将多个高速缓存行写回的时候,顺序地完成这些,停止全部其它功能单元,直到全部写入已经完成。以相同的指令访问不同的写入端口,不是允许访问物理存储器中的相同的行的。假定在连续的标量访问中的空间位置(例如属于一个处理环的连续的标量基本上被连续地存储在物理存储器410中),的对物理存储器410的访问,以加载/存储这些寄存器,其频率可以显著地低于对这些寄存器的标量访问频率。
在优选实施例中,无需对存储器中的矢量的界限进行定位。同样地,一个矢量由Ps字组成的矢量可以具有任意的存储器地址。存储器行具有相同的大小,但是由多个Ps定义它的起始地址。(为了进行行访问,与地址的最小的有效210gPs位无关)。通过允许矢量任意定位(通常定位在最小字边界上),可以更好的使用具有较少空间位置的存储器。采取措施允许标量/矢量处理器调节到读/写单独的矢量,而所述的矢量可以存储在物理存储器的两个连续行中。为此矢量发送操作使用了一个定位单元。定位单元如图4的块440所示。图5给出了更详细的图示。定位单元530连接到两行高速缓冲存储器510和512(例如两个矢量宽寄存器),包括由被请求的矢量持续的两行。
当连续的矢量被访问时,只有一个新的行必须从物理存储器中取出,因为另一个在这些行高速缓冲存储器的一个中。组成被请求的矢量的两个高速缓存行的部分与一个包含多路复用器530的网络结合,然后存储在矢量-宽流水线寄存器中。所述的流水线寄存器通过一个矢量读取端口535接收数据。所述的值从所述的流水线寄存器被传输到VMU广播总线。
图5还进一步示出了矢量宽寄存器516和相关的矢量宽读取端口540,它们启动了对存储器的行直接读取,其中寄存器充当高速缓存器。
矢量存储器周围的高速缓存最好对程序设计员来讲是隐藏的。尽管通过利用高速缓冲存储器仿真一个具有单个端口SRAM的多端口矢量存储器,程序设计员能因此假定一个相关的矢量存储器。因为每个寄存器可以包括可能与物理存储器中的数据相同的数据的拷贝,然后,相干性将被自动地保存,而程序设计员不必监视相干性。为此,执行一个检查防止地址冲突,也即为行地址产生一个对寄存器的写入,其中还将相同的行存储在另一个寄存器中。对于这样的一个检查,对于每个寄存器来讲,足够将该行的行地址(地址的最高有效位)存储在寄存器中。如果检测到了可能的冲突,可以采取校正措施。例如,在具有相同的行的寄存器产生一个写入操作之后,立即将写读取寄存器标记为无效。除此之外寄存器没有其它用途,除非它已经再次对物理存储器进行了读取(在写入寄存器首先被写回到存储器之后)。换句话说,写入寄存器的内容可以在为写入寄存器产生写入之后,被复制到全部具有相同的行的读取寄存器。第三个可能性是共享读和写端口之中的寄存器。这个方法需要附加的矢量-宽多路复用器,增加了成本,但是提供性能优势。实际上,连接到一个读取端口的读取寄存器中创建的旁路是旁路,并且数据实际上通过读取端口从写入寄存器读取。全部这些产生的校正措施使用功能一起被称为“相干性检查程序”。为了确定数据可能以被复制的形式(具有一个可能的一致性问题)存储在哪里,使用相干性寄存器存储与内容相关的信息,所述的内容存储在与相干性寄存器相关的数据寄存器中。最好,相干性寄存器存储了数据的实际地址,该数据被存储在相应的数据寄存器中。还可以为矢量读取进行相同的相干性检查和调节,其中矢量是(部分地)存储在一个与写入端口有关的寄存器中,而不仅是为了访问标量。对物理存储器的行读取或写入最好在一个时钟周期中通过一个对物理存储器510的访问执行。
所述的矢量-存储单元在一个VMU指令中可以支持高达四个同时的″子操作″:
发送一个矢量,或发送一个行,或接收一个行从/到VM位置;
从VM位置发送一个标量;
将一个标量接收到VM位置;
修改地址计算单元的状态/输出。
  VMU_cmd=(vopc,aid_v,ainc_v,sopc,aid_s,ainc_s,size,srcv,ai
d_r,ainc_r,aopc,aid_a,imma_ddr)

  vopc=NOPSENDL|SENDV|RCVL_CGTU|RCVL_AMU|RCVL_SFU|RCVL_SLU|
RCVL_SRU

  Aid_v={0,...,7}

  Ainc_v=NOP|INC

  Sopc=NOP|SEND

  Aid_s={0,...,7}

  Aind_s=NOP|INC

  Size=WORD|DWORD|QWORD

  Srcv=NONE|VMU|AMU|SLU|SRU

  Aid_r={0,...,7}

  Ainc_r=NOP|INC

  Aopc=NONE|IMM|LDBASE|LDOFFS|LDINCR|LDBOUND

  Aid_a={0,...,7}

  Imm_addr={0.0,...,524288.31}|{-262144.0,0...,262143.31}
VMU指令可以采用一个时钟周期数的可变数量,取决于子操作的数量和地址序列的连续性。
VMU输入/输出是:
    输入     说明
    Cmd     VMU command
    Rcv_amu     AMU vectorreceive bus
    Rcv_cgu     CGU vectorreceive bus
    Rcv_sfu     SFU vectorreceive bus
    Rcv_slu     SLU vectorreceive bus
    Rcv_sru     SRU vectorreceive bus
    S_rcv_amu     AMU scalarreceive bus
    S_rcv_slu     SLU scalarreceive bus
    S_rcv_sru     SRU scalarreceive bus
    输出     说明
    Snd     VMU vector result
    S_snd     VMU scalar result
另外有两个标量端口(一个发送,一个接收)将被连接到外部总线。同步具有CVP指令的这些存储器是微控制器130的任务。
VMU矢量部分包括物理向量存储器510:
名称 说明
mem[4096][32] 矢量存储器:每32个字的4096行
注意矢量子操作不能访问标量存储器。因此,最高有效的地址位与矢量子操作无关。VMU的矢量部分支持七个子操作,指令的VOPC字段中的编码:矢量发送(SEND)、行发送(SENDL)和五个行接收子操作(RCVLCGU、RCVLAMU、RCVLSFU、RCVLSLU和RCVLSRU)。作为接收源的功能单元明确地在相应的行接收子操作中被编码。每个子操作的读取地址或写入地址由相应的地址计算单元指定。AINCV字段在全部矢量子操作之间是共享的。它将被传送到在AIDV保存中被编码的ACU上。AINC_V字段确定了受影响的地址计算单元是否将执行一个后增量操作。
监视 变换
vopc=NOP  None
vopc=SENDL  snd=mem.line[acu[aid_v].out]
vopc=SENDV  snd=mem.vector[acu[aidv].out]
vopc=RCVL_CGU  mem.line[acu[aid_v].out]=rcv_cgu
vopc=RCVL_AMU  mem.line[acu[aid_v].out]=rcv_amu
vopc=RCVL_SFU  mem.line[acu[aid_v].out]=rev_su
vopc=RCVL_SLU  mem.line[acu[aid_v].out]=rcv_slu
vopc=RCVL_SRU  mem.line[acu[aid_v].out]=rcv_sru
注意作为发送(或接收)操作而被计算,而不是作为加载(或存储)操作的操作,包括一个目的地(或源)。后者由其它功能单元中的操作确定。行发送在功能上等效于具有相同的地址的矢量发送。行-发送子操作通常用于配置功能单元,或恢复各种各样的寄存器中的任务的状态。通过为行发送引入一个特定模式,连续的矢量发送的访问时间(″向量流″)可以通过高速缓冲存储器的有效应用得到优化。
VMU的标量子操作在指令的一些字段中被编码。它仅支持一个子操作:标量发送(SEND)。通过地址计算单元确定读取地址,所述的地址计算单元在AID_S字段被确定。指令的AIN_S字段确定了这些的地址计算单元是否将执行一个后增量操作。标量子操作的操作数大小(WORD、DWORD或QWORD)由指令的SIZE字段确定。
监视 变换
sopc=NOP  None
sopc=SEND&&size=WORD  S_snd=mem.word[acu[aid_s].out]
sopc=SEND&&size=DWORD  S_snd=mem.dword[acu[aid_s].out]
sopc=SEND&&size=QWORD  S_snd=mem.qword[acu[aid_s].out]
标量接收VMU的子操作在指令的SRCV字段中被编码。如果它的值是NONE,没有标量接收被执行。否则,指令的SRCV字段确定哪个功能单元将被用作标量接收的源。通过地址计算单元确定写入地址,所述的地址计算单元在AID_R字段中被确定。指令的AINC_E字段确定了这些的地址计算单元是否将执行一个后增量操作。由源标量的大小确定标量的操作数大小(WORD、DWORD或QWORD)接收子操作。
监视 变换
srcv=NONE  None
srcv=VMU  mem.scalar[acu[aidr].out]=s_rcv_vmu
srcv=AMU  mem.scalar[acu[aidr].out]=s_rcv_amu
srcv=SLU  mem.scalar[acu[aidr].out]=s_rcv_slu
srcv=SRU  mem.scalar[acu[aidr].out]=s_rcv_sru
发送和接收子操作可以合并成一个标量传送操作,从一个VM位置到另一个。由一个相应的地址计算单元确定每个访问的地址。
VMU控制部分550主要是一组地址-运算部件(ACU)或地址生成单元(AGU),它们支持象传统的DSPS那样的寻址方式。这样的一个单元为每个指令执行一个或多个地址计算,不用使用处理器的主数据通路。例如,在每个标量读取访问之后,可以后增量的标量的地址。这样允许以与数据的算术操作并行的方式进行地址,提高了处理器的性能。
依据所支持的寻址方式的设置,这样一个ACU需要访问很多寄存器。例如,
相对寻址,也即相对于一个所谓的基本地址寻址,需要基于一个基本寄存器base。
相对于基本地址的偏移量存储在一个偏移量寄存器中offs
由存储在增量寄存器中的偏移量前/后增量交偏移量incur
相对于一个存储在界限寄存器中的地址的模寻址bound
利用这个寻址方式的设置,可以支持以下操作。假定一个偏移量寄存器offs。在每个存储器访问(读取或写入)地址base+offs之后,寄存器offs根据offs:=(offs+incr)以bound为模进行更新。因此,offs经常改变(每次访问之后),反之值存储在base、incr中,bound很少改变。通常三个最近的寄存器在程序循环之前被初始化。在此不对ACU的操作作详细描述。
应当理解以上实施例所示不是对本发明的限定,对本领域的普通技术人员来讲,在不脱离附加权利要求的范围的情况下,能够设计出很多替换的实施例。在权利要求中,任何设置在括号内的参考标记都不被认为是对权利要求的限定。措词″包括″和″包含″并不排除其它要素的存在或在权利要求中列出的那些步骤。

Claims (15)

1.一种具有处理器和具有用于在存储器中存取数据的单一大小存储器端口的物理存储器的处理系统,所述的处理器设置为对至少第一数据大小和较小的第二数据大小的数据进行操作;第一数据大小等于或小于存储器端口大小;所述的处理系统包括至少一个连接到存储器端口的第一数据大小的数据寄存器;和至少一个连接到数据寄存器的第二数据大小的数据端口,并且所述的处理器启动对第二大小的数据元素的存取。
2.如权利要求1所述的处理系统,其中存储器端口大小至少是第二数据大小的两倍。
3.如权利要求2的处理系统,其中数据端口是一个读取端口,并且所述的处理系统包括一个多路复用器,用于从受到读取地址控制的数据寄存器中选择和选取一个第二数据大小的数据元素。
4.如权利要求2的处理器,其中数据端口是一个写入端口,并且所述的处理器包括一个多路输出选择器,用于在受到写入地址控制的数据寄存器中可选择的位置插入一个第二数据大小的数据元素。
5.如权利要求1或2所述的处理系统,其中所述的处理系统包括多个第二数据大小的数据端口,该数据端口连接到处理器,并且每一个数据端口都各自有一个相关的数据寄存器,该数据寄存器连接到相应的数据端口并且连接到物理存储器的端口。
6.如权利要求1的处理系统,其中数据端口是一个写入端口,所述的处理系统包括一个相干性检查程序,该相干性检查程序包括用于数据寄存器的一个相关的相干性寄存器,用于对存储在数据寄存器中的信息识别数据进行存储;被操作的相干性检查程序,通过将用于访问存储器的读取地址和存储在相干性寄存器中的识别信息进行比较,检查想要从存储器中读取的数据是否与存储在数据寄存器中的数据一致。
7.如权利要求6的处理系统,其中识别信息包括用于访问物理存储器中的字的实际地址,其中所述的字具有一个存储器端口的宽度。
8.如权利要求6的处理系统,其中相干性检查程序包括一个冲突解析器,对于响应检测的可能的一致性冲突,采取校正步骤。
9.如权利要求的处理系统,其中所述的冲突解析器通过将数据寄存器标记为读取访问无效,执行校正步骤,使数据寄存器的内容再次从存储器中加载,以响应对数据寄存器的读取访问。
10.如权利要求5、6和8中的处理系统,相干性检查程序包括一个相干性寄存器,每个相应的数据寄存器分别用于存储相应的数据寄存器中的信息识别数据;校正程序被设置为对一个数据寄存器的写入访问与/或对物理存储器的写入访问的响应,根据识别信息,通过将内容拷贝写入数据寄存器或存储器到全部其它数据寄存器与/或存储器中的一个位置,来存储相同的数据。
11.如权利要求5、6和8的处理系统,其中至少一个数据寄存器(以下称为″读取寄存器″)连接到一个读出数据端口,并且至少一个数据寄存器(以下成为“写入寄存器”)连接到一个写数据端口;并且处理器包括一个用于有选择地将数据从写入寄存器提供到读出数据端口的旁路路径;相干性检查程序包括与每个数据寄存器相应的相干性寄存器,用于保存存储在相关数据寄存器中的信息识别数据;设置了冲突解析器,通过响应写入到写入寄存器里的写入数据激活旁路路径来执行校正步骤,以便如果读取寄存器根据识别信息存储了相同的数据元素的情况下,连续地读取访问读取寄存器。
12.如权利要求1的处理系统,其中所述的物理存储器基于单一端口SRAM。
13.如权利要求11的处理系统,其中所述的物理存储器是由多组并行排列的RAM的存储器构成的。
14.如权利要求1的处理系统,其中处理器被设置为操作在第一数据大小的矢量和第二数据大小的标量上,其中第一数据宽度至少是第二数据宽度的两倍。
15.如权利要求1的处理系统,其中所述的物理存储器被嵌入到处理器中。
CN038118084A 2002-05-24 2003-05-07 处理系统 Expired - Lifetime CN1656445B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP02077034 2002-05-24
EP02077034.3 2002-05-24
EP02078618 2002-09-04
EP02078618.2 2002-09-04
PCT/IB2003/001891 WO2003100599A2 (en) 2002-05-24 2003-05-07 Access to a wide memory

Publications (2)

Publication Number Publication Date
CN1656445A true CN1656445A (zh) 2005-08-17
CN1656445B CN1656445B (zh) 2010-05-05

Family

ID=29585702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN038118084A Expired - Lifetime CN1656445B (zh) 2002-05-24 2003-05-07 处理系统

Country Status (9)

Country Link
US (1) US7430631B2 (zh)
EP (1) EP1512068B1 (zh)
JP (1) JP2005527035A (zh)
CN (1) CN1656445B (zh)
AT (1) ATE372542T1 (zh)
AU (1) AU2003222411A1 (zh)
DE (1) DE60316151T2 (zh)
TW (1) TWI291096B (zh)
WO (1) WO2003100599A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101986287A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于向量数据流的重整理缓冲器
CN104679584A (zh) * 2013-11-28 2015-06-03 中国航空工业集团公司第六三一研究所 矢量上下文切换方法
CN105337995A (zh) * 2015-11-29 2016-02-17 恒宝股份有限公司 一种智能卡快速个人化方法及系统
CN108845826A (zh) * 2013-06-28 2018-11-20 英特尔公司 多寄存器存储器访问指令、处理器、方法和系统

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725745B2 (en) * 2006-12-19 2010-05-25 Intel Corporation Power aware software pipelining for hardware accelerators
WO2008126041A1 (en) * 2007-04-16 2008-10-23 Nxp B.V. Method of storing data, method of loading data and signal processor
US8024527B2 (en) * 2008-02-01 2011-09-20 International Business Machines Corporation Partial cache line accesses based on memory access patterns
US8140771B2 (en) * 2008-02-01 2012-03-20 International Business Machines Corporation Partial cache line storage-modifying operation based upon a hint
US8117401B2 (en) 2008-02-01 2012-02-14 International Business Machines Corporation Interconnect operation indicating acceptability of partial data delivery
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8250307B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Sourcing differing amounts of prefetch data in response to data prefetch requests
US20090198910A1 (en) * 2008-02-01 2009-08-06 Arimilli Ravi K Data processing system, processor and method that support a touch of a partial cache line of data
US7958309B2 (en) 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic selection of a memory access size
US8266381B2 (en) * 2008-02-01 2012-09-11 International Business Machines Corporation Varying an amount of data retrieved from memory based upon an instruction hint
US8255635B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Claiming coherency ownership of a partial cache line of data
US8035537B2 (en) * 2008-06-13 2011-10-11 Lsi Corporation Methods and apparatus for programmable decoding of a plurality of code types
US7895381B2 (en) * 2009-02-16 2011-02-22 Himax Media Solutions, Inc. Data accessing system
US8117390B2 (en) * 2009-04-15 2012-02-14 International Business Machines Corporation Updating partial cache lines in a data processing system
US8176254B2 (en) * 2009-04-16 2012-05-08 International Business Machines Corporation Specifying an access hint for prefetching limited use data in a cache hierarchy
US8140759B2 (en) * 2009-04-16 2012-03-20 International Business Machines Corporation Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US8688957B2 (en) 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
CA2859999A1 (en) * 2011-01-25 2012-08-02 Cognivue Corporation Apparatus and method of vector unit sharing
US10037205B2 (en) * 2011-12-23 2018-07-31 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US9342479B2 (en) 2012-08-23 2016-05-17 Qualcomm Incorporated Systems and methods of data extraction in a vector processor
US9411584B2 (en) 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9411592B2 (en) 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
CN107077381B (zh) * 2014-10-09 2020-04-28 华为技术有限公司 异步指令执行装置和方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949247A (en) * 1988-02-23 1990-08-14 Stellar Computer, Inc. System for transferring multiple vector data elements to and from vector memory in a single operation
US5379393A (en) * 1992-05-14 1995-01-03 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Cache memory system for vector processing
US5426754A (en) * 1992-05-26 1995-06-20 International Business Machines Corporation Cross-interrogate method and means for combined scaler and vector processing system
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US6006315A (en) * 1996-10-18 1999-12-21 Samsung Electronics Co., Ltd. Computer methods for writing a scalar value to a vector
US5928350A (en) * 1997-04-11 1999-07-27 Raytheon Company Wide memory architecture vector processor using nxP bits wide memory bus for transferring P n-bit vector operands in one cycle

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101986287A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于向量数据流的重整理缓冲器
CN101986287B (zh) * 2010-11-25 2012-10-17 中国人民解放军国防科学技术大学 用于向量数据流的重整理缓冲器
CN108845826A (zh) * 2013-06-28 2018-11-20 英特尔公司 多寄存器存储器访问指令、处理器、方法和系统
CN104679584A (zh) * 2013-11-28 2015-06-03 中国航空工业集团公司第六三一研究所 矢量上下文切换方法
CN104679584B (zh) * 2013-11-28 2017-10-24 中国航空工业集团公司第六三一研究所 矢量上下文切换方法
CN105337995A (zh) * 2015-11-29 2016-02-17 恒宝股份有限公司 一种智能卡快速个人化方法及系统
CN105337995B (zh) * 2015-11-29 2019-06-21 恒宝股份有限公司 一种智能卡快速个人化方法及系统

Also Published As

Publication number Publication date
DE60316151D1 (de) 2007-10-18
DE60316151T2 (de) 2009-10-22
AU2003222411A8 (en) 2003-12-12
EP1512068A2 (en) 2005-03-09
WO2003100599A3 (en) 2004-07-22
WO2003100599A2 (en) 2003-12-04
US7430631B2 (en) 2008-09-30
JP2005527035A (ja) 2005-09-08
ATE372542T1 (de) 2007-09-15
TW200407705A (en) 2004-05-16
CN1656445B (zh) 2010-05-05
AU2003222411A1 (en) 2003-12-12
EP1512068B1 (en) 2007-09-05
US20050240729A1 (en) 2005-10-27
TWI291096B (en) 2007-12-11

Similar Documents

Publication Publication Date Title
CN1656445A (zh) 对宽存储器访问
US7568086B2 (en) Cache for instruction set architecture using indexes to achieve compression
CN1272705C (zh) 包括纯量算术逻辑单元的单指令多数据处理机
US8060725B2 (en) Processor architecture with processing clusters providing vector and scalar data processing capability
US7873811B1 (en) Polymorphous computing fabric
US20060026578A1 (en) Programmable processor architecture hirarchical compilation
US20110231616A1 (en) Data processing method and system
Srikanteswara et al. An overview of configurable computing machines for software radio handsets
EP3005078A2 (en) Memory-network processor with programmable optimizations
KR20010080366A (ko) 프로그램 제품 및 데이터 처리장치
US7383419B2 (en) Address generation unit for a processor
Song et al. Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores
CN112486908A (zh) 层次化的多rpu多pea的可重构处理器
Lin et al. A unified processor architecture for RISC & VLIW DSP
CN112540793A (zh) 支持多访存模式的可重构处理单元阵列及控制方法、装置
Paiágua et al. Hotstream: Efficient data streaming of complex patterns to multiple accelerating kernels
CN1650257A (zh) 互换地址寄存器所存内容的方法和设备
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
Wang et al. Loop Kernel Pipelining Mapping onto Coarse-Grained Reconfigurable Architecture for Data-Intensive Applications.
US11327677B1 (en) Data mover circuitry for N-dimensional data in an integrated circuit
Dou et al. A coarse-grained reconfigurable computing architecture with loop self-pipelining
US20220188264A1 (en) Energy efficient microprocessor with index selected hardware architecture
JP2004102988A (ja) データ処理装置
Vander Aa et al. Micro-architectural optimization of a coarse-grained array based baseband processor
Raab et al. A low-power memory hierarchy for a fully programmable baseband processor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20070914

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070914

Address after: Holland Ian Deho Finn

Applicant after: NXP B.V.

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20170426

Address after: Stockholm

Patentee after: Ericsson, Inc.

Address before: Swiss Grand saconnex

Patentee before: ST-ERICSSON S.A.

Effective date of registration: 20170426

Address after: Stockholm

Patentee after: Telefonaktiebolaget LM Ericsson (publ)

Address before: Stockholm

Patentee before: Ericsson, Inc.

Effective date of registration: 20170426

Address after: Swiss Grand saconnex

Patentee after: ST-ERICSSON S.A.

Address before: Swiss Prang Eli Ute Jean Deferre at No. 39

Patentee before: Italian-French Ericsson Limited (in liquidation)

Effective date of registration: 20170426

Address after: Swiss Prang Eli Ute Jean Deferre at No. 39

Patentee after: Italian-French Ericsson Limited (in liquidation)

Address before: Holland Ian Deho Finn

Patentee before: NXP B.V.

TR01 Transfer of patent right
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20100505