CN112035167A - 灵活配置硬件流传输单元 - Google Patents

灵活配置硬件流传输单元 Download PDF

Info

Publication number
CN112035167A
CN112035167A CN202010896656.1A CN202010896656A CN112035167A CN 112035167 A CN112035167 A CN 112035167A CN 202010896656 A CN202010896656 A CN 202010896656A CN 112035167 A CN112035167 A CN 112035167A
Authority
CN
China
Prior art keywords
data stream
stream
data
queue
memory
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
CN202010896656.1A
Other languages
English (en)
Other versions
CN112035167B (zh
Inventor
D·J·戈夫
D·L·韦弗
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Priority to CN202010896656.1A priority Critical patent/CN112035167B/zh
Publication of CN112035167A publication Critical patent/CN112035167A/zh
Application granted granted Critical
Publication of CN112035167B publication Critical patent/CN112035167B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Logic Circuits (AREA)

Abstract

本公开涉及灵活配置硬件流传输单元。具体地,公开了具有流传输单元的处理器。在一种实施例中,处理器包括被配置为从耦合到处理器的存储器加载一个或多个输入数据流的流传输单元。流传输单元包括具有多个被配置为存储数据流的队列的内部网络。流传输单元还包括多个被配置为对数据流执行操作的操作电路。流传输单元是可编程为经由多个队列中一个或多个队列将多个操作电路中两个或更多个操作电路操作耦合到一起的软件。操作电路可以对多个数据流执行操作,从而产生对应的输出数据流。

Description

灵活配置硬件流传输单元
本申请是申请日为2014年8月6日、题为“灵活配置硬件流传输单元”的发明专利申请201480055049.5的分案申请。
技术领域
本公开内容涉及处理器,并且更具体而言,涉及针对流传输数据的处理的硬件。
背景技术
由计算机系统执行的许多应用涉及流传输数据的使用。流传输数据是以某个规律的间隔从存储器获得的数据。某些操作可以对数据流的全部数据执行。例如,数据流的数据可以从一组连续的存储器地址获得,从指定的存储器地址开始,并一直持续到该地址组中的所有数据都被获得。作为替代,数据流的数据可以以某个地址开始来获得,附加的数据块按彼此相等的地址间隔(有时被称为“步幅”)获得。然后,从流中获得的数据可以经历某种形式的处理。在许多情况下,相同的操作可以对数据流的每个块执行。
许多现代处理器包括可以执行指令以便从存储器中取数据或将数据写入存储器的加载/存储单元。对于流传输数据,加载/存储单元可以接收一系列指令来从存储器读取数据,每个要被读取的数据元素一个指令。当数据元素从存储器被加载/存储单元读取时,它们可以或者被传递到寄存器以便在后续操作中用作操作数,或者直接传递到执行单元,然后执行单元可以对数据流的元素执行操作。其后,数据可以被返回到加载/存储单元并且随后被写回到存储器。
发明内容
公开了具有流传输单元的处理器。在一种实施例中,处理器包括流传输单元,其被配置为从耦合到处理器的存储器加载一个或多个输入数据流。流传输单元包括具有多个被配置为存储数据流的队列的内部网络。流传输单元还包括多个被配置为对数据流执行操作的操作电路。流传输单元是可编程为经由多个队列中一个或多个队列将多个操作电路中两个或更多个操作电路操作耦合到一起的软件。操作电路可以对数据的多个输入流执行操作,从而产生数据的对应输出流。
在一种实施例中,一种方法包括编程具有内部网络的流传输单元,其中内部网络包括多个队列和多个操作电路。编程流传输单元包括经由多个队列中一个或多个队列将多个操作电路中两个或更多个选定的操作电路彼此操作耦合。该方法还包括将第一数据流从存储器加载到流传输单元中,其中存储器耦合到包括该流传输单元的处理器,从而利用多个操作电路中第一选定的操作电路对第一数据流执行第一操作,并且利用多个操作电路中第二选定的操作电路对第二数据流执行第二操作。
附图说明
在阅读以下详细描述后和参照现在如下描述的附图后,本公开内容的其它方面将变得显然。
图1是处理器的一种实施例的框图。
图2是流传输单元的一种实施例的框图。
图3是示出用于操作处理器中的流传输单元的方法的一种实施例的流程图。
图4是示出用于操作处理器中的流传输单元的方法的另一实施例的流程图。
图5是流传输单元的另一实施例的框图。
图6A-6F是示出图5的流传输单元的各种可编程配置的框图。
图7是流传输单元的另一实施例的框图。
图8A-8D是示出图7的流传输单元的各种可编程配置的框图。
图9是示出编程可编程流传输单元的各种实施例的方法的一种实施例的流程图。
图10是示出用于操作可编程流传输单元的各种实施例的方法的一种实施例的流程图。
虽然本文所公开的主题易于接受各种修改和替代形式,但其具体实施例作为例子在附图中示出并将在本文详细描述。但是,应当理解,附图和对其的描述并不意在限定到所公开的特定形式,而是相反,意在覆盖属于如由所附权利要求定义的本公开内容的精神和范围之内的所有修改、等同物和备选方案。
具体实施方式
图1是包括处理器的一种实施例的计算机系统的一种实施例的框图。在所示出的实施例中,计算机系统5包括耦合到主存储器9的处理器10。计算机系统5可以包括为简单起见而未在这里示出的其它部件。
所示实施例中的存储器9是随机存取存储器(RAM),其可以被实现为许多不同类型中的任何一种,包括动态RAM(DRAM)和静态RAM(SRAM)。其中主存储器9可利用未在本文明确讨论的存储器技术实现的实施例也是可能的和预期的。
所示实施例中的处理器10是具有多个不同的执行单元的超标量处理器。在这种特定的实施例中,处理器10包括执行单元15A、15B和15C。在一些实施例中,这些单元可以在功能上完全相同,而在其它实施例中,这些单元可以彼此功能不同。例如,在一种实施例中,执行单元15A可以是整数单元,执行单元15B可以是浮点单元,并且执行单元15C可以是固定点单元。
还应当指出的是,虽然这里处理器10被示为超标量处理器,但属于本公开内容的范围之内的其它实施例不限于超标量体系架构。例如,在一种实施例中,处理器10可以是向量处理器。此外,多核心实施例也是可能的和预期的,其中每个核心都具有在其中实现的一个或多个执行单元。
除了执行单元15A-15C,处理器10还包括加载/存储单元14,其可被用来对一些存储器事务从存储器加载数据并将数据存储回存储器。加载/存储单元14可以响应于加载指令的执行而从存储器加载数据。类似地,数据可以响应于加载/存储单元14执行存储指令而被存储回存储器。在所示出的实施例中,加载/存储单元14耦合到包括L1高速缓存17和L2高速缓存18的高速缓存子系统。结合加载和存储操作,加载/存储单元14可以实现从这些高速缓存存储器当中一个或二者读取或向其写入,使得高速缓存的一致性得到维持。在高速缓存转储清空的情况下,加载/存储单元14也可以将来自一个或两个高速缓存的修改后的数据写回到存储器。
应当指出的是,虽然这里示出的高速缓存子系统仅包括高速缓存17和18,但包括附加高速缓存和/或其它部件的实施例也是可能的和预期的。例如,在一些实施例中的高速缓存子系统可以包括高速缓存控制器以及一个或多个附加级别的高速缓存存储器。此外,其中一些高速缓存存储器,例如L1高速缓存,被分离成两个高速缓存的实施例是可能的和预期的,其中两个高速缓存一个用于存储指令并且一个用于存储数据。
处理器10还包括耦合在执行单元15A-15C与主存储器9之间的流传输单元20。流传输单元20也被用来从存储器加载数据和将数据存储到存储器。但是,不像加载/存储单元14,流传输单元20专用于加载数据流。数据流在本文可以被定义为连续的数据元素序列,其中数据元素以规则的间隔被隔开,或者从地址列表上的地址加载(其中地址不一定是连续的或间隔相等的)。例如,数据流可以是数据元素序列,其中每个相继的元素与前一数据元素隔开五个地址。数据流定义的特殊情况可以包括存储器中连续的数据块,其中每个相继的元素是在与前一数据元素相关的下一个地址。数据流还可以由数据流的参数定义,包括起始地址、元素大小、步幅间隔(其可以是一,例如,对于连续的数据块)和结束地址。应该注意的是,数据流的数据元素可以包括消耗单个地址的全部、单个地址的一部分或多个地址的数据。数据流可以在各种各样的应用中被使用,诸如数据库搜索、通信,等等。
在一种实施例中,处理器10的指令集可以包括明确地要由流传输单元20执行以便加载和/或存储数据流的指令。例如,在所示实施例中的流传输单元20可以执行从主存储器加载数据流的指令。指令可以包括多个变元。第一个变元可以指示数据流的起始地址。第二个变元可以指示数据流的元素之间的步幅(或间隔)。如果数据流是连续的,则第二个变元可以指示步幅是一。在其中流传输单元总是对连续的数据流操作的实施例中,没有步幅变元是必需的。第三个变元可以指示数据流的结束地址。在一种实施例中,第三个变元可以明确地声明流的结束地址。在另一种实施例中,第三个变元可以指示要加载的流的长度或数据元素的数目,当其与第二个变元中的步幅结合时,隐含地指示流的结束地址。指示流的每个数据元素的大小以及输出流的目的地的变元也可以被包括在内。可以对用于流传输单元的指令提供的附加变元可以包括指示加载的数据流如何被流传输单元的某些实施例处理的变元。在一些实施例中,流传输单元20可以从软件接收输入数据流,例如,诸如在软件程序中某些指令的执行期间生成的数据。对应地,其中输出数据流被提供给软件并由此被消耗而没有其个别元素被无限期地存储到存储器的实施例也是可能的和预期的。
响应于加载第一数据流,流传输单元20可以输出与其对应的第二数据流。在一些实施例中,第二数据流的目的地可以由对于上述指令给出的第四个变元来指示。这第四个变元可以指示第二数据流要被写回到存储器、输出到执行单元15A-15C当中选定的一个或多个,或者提供给另一个目的地。第二数据流也可以由以上讨论的其它变元定义。
第二数据流可以采取各种形式。例如,如果流传输单元正在进行移动或复制操作,则第二数据流的数据可以与第一数据流的数据完全相同,其中第一和第二数据流存储在不同的位置。在一些实施例中的流传输单元20还可以通过变换第一数据流来产生第二数据流。例如,第一数据流的数据可以是加密的数据,而第二数据流的数据可以是与第一数据流等同的解密数据,解密在流传输单元20内部执行。逻辑运算也可以在流传输单元20的一些实施例中对进入的数据流执行。例如,流传输单元20的一些实施例可以包括可以对第一数据流的数据执行各种操作的逻辑电路,其中操作诸如相加、移位、比较,等等。第二数据流的数据因此可以作为对第一数据流执行逻辑运算的结果而产生。
如上所述,加载/存储单元14被耦合到高速缓存子系统并可以与其结合操作。另一方面,在示出的实施例中的流传输单元20可以独立于高速缓存子系统来操作。因此,由流传输单元20的这个实施例加载的数据元素在从存储器加载后不一定被高速缓存。这可以减少高速缓存污染并且因此允许高速缓存子系统的更高效操作。在一些情况下,数据可以由流传输单元20从高速缓存加载,并且在一些情况下从流传输单元20输出的数据可以被写入高速缓存。不过,流传输单元20还是可以包括独立于高速缓存子系统执行操作的能力,诸如这里所说明的。
虽然上面的讨论集中在输入和输出单数据流,但流传输单元20的各种实施例可被配置为同时或并发地从存储器加载多个数据流,同时或并发地输出多个数据流,和/或同时或并发地将多个数据流写入存储器。
现在转向图2,示出了流传输单元的一种实施例的框图。在所示出的实施例中,流传输单元20包括三个输入队列22和三个输出队列26。从存储器(或执行单元)加载的数据流的数据元素可以最初被放在输入队列22中选定的一个输入队列。类似地,要由流传输单元20输出的数据流的数据元素可以在被输出到其预期目的地之前被暂时存储在输出队列26中选定的一个输出队列。应当指出的是,输入队列22和输出队列26可以在一种实施例中被实现为先入先出(FIFO)存储器,但是其它实施例不限于使用FIFO。
在所示出的实施例中,流传输单元20包括变换电路23和逻辑运算电路25。应当指出的是,这里所示的输入和输出队列、变换电路以及逻辑运算电路的数目是示例性的,并且可以从一种实施例到另一种发生变化。此外,流传输单元20的一些实施例可以被实现为没有变换电路23或逻辑运算电路25。其中变换电路23和逻辑运算电路25的功能被组合到单个单元中的实施例也是可能的和预期的。
在示出的实施例中的变换电路23可被配置为对经由其分别耦合的输入队列22接收到的数据流执行一个或多个各种变换。例如,变换电路23可被配置为解密加密的数据、压缩数据、解压缩数据,等等。在一些实施例中,变换电路23可以具有单个功能。在其它实施例中,变换电路23可被配置为执行多个不同的可能功能当中特定的一个功能,这可以根据软件编程或其它输入来改变。变换后的数据可以被输送到输出队列26并最终输送到其预期目的地。
在示出的实施例中的逻辑运算电路25可以对从输入队列22中分别耦合的一个输入队列接收到的数据元素执行逻辑运算。可以被执行的逻辑运算包括各种算术运算、移位操作、比较操作,等等。这种运算的结果可以被输送到对应耦合的输出队列26,然后输出到预期目的地。
应当指出的是,在示出的实施例中的其中一个输入队列22直接耦合到对应的输出队列26。这种配置可被用于各种操作,诸如移动和复制操作,以及用于其中从存储器加载的数据流要在不更改的情况下提供给一个或多个执行单元的操作。
如前面所指出的,从流传输单元22输出的数据流的一个可能的目的地是主存储器。一般而言,流传输单元20可以向任何选定并适当耦合的目的地输出数据流。因此,流传输单元20可以独立于执行单元对数据流执行一些操作,诸如以上提到的变换和逻辑运算。这可以减少执行单元的工作量或者在流传输单元20对数据流执行其它操作的同时允许它们执行其它操作。这也可以允许流传输单元20执行要由执行单元进行操作的数据流的某种预处理,从而也减少了执行单元的总工作量。总体而言,流传输单元20独立于执行单元和高速缓存子系统操作的能力可以导致更高效的处理器操作。
图3是示出用于操作处理器中的流传输单元的方法的一种实施例的流程图。在所示出的实施例中,方法300包括从存储器加载数据流的流传输单元(方框305)。存储器流可以是由该流传输单元并发地加载的多个数据流之一。方法300还包括从流传输单元向预期目的地输出对应的数据流(方框310)。对应的数据流可以与最初加载的数据流完全相同、可以是最初加载的数据流的变换后的版本,或者可以是通过对最初加载的数据流执行操作而生成的新数据流。预期目的地可以是返回存储器、到执行单元,或者到另一目的地。
图4是示出用于操作处理器中的流传输单元的方法的另一实施例的流程图。方法400以从存储器加载数据流开始(方框405)。如果数据流是要从存储器加载的多个数据流之一(方框407,是),则这多个流可以被并发地加载(方框410)。否则(方框407,否),则只有单个数据流被加载,并且该方法前进到下一个方框。
在一些情况下,一个或多个数据流当中一些可预期被用于变换。如果数据流要被变换(方框415,是),则流传输单元将对选定的数据流执行变换(方框420)。如上所述,这种变换可以包括(但不限于)加密、解密、压缩、解压缩,等等。如果数据流不要进行变换(方框415,否),则方法400前进到方框425。
一些数据流可以预期要对其执行逻辑运算(方框425,是)。对于这种选定的数据流,逻辑运算可以由流传输单元执行(方框430)。逻辑运算可以包括(但不限于)从数据流搜索指定的数据、算术运算、逻辑移位,或者可以对数据流和/或它们的个别元素执行的任何其它逻辑运算。对于不要对其执行逻辑运算的选定的流(方框425,否),方法400前进到方框435。
流传输单元可以基于接收到的输入数据流向选定的目的地提供输出数据流(方框435)。输出流可以与输入数据流完全相同、是输入数据流的变换后的版本,或者是基于对输入数据流执行的逻辑运算而新生成的数据流。给定数据流的选定的目的地可以是一个或多个执行单元、要被存储回存储器,或者另一目的地(例如,寄存器,等等)。如果存在要被处理的附加数据流(方框440,是),则该方法前进回到方框405,否则,方法400完成,直到要进行更多的流操作。
图5是流传输单元的另一实施例的框图。在示出的实施例中,流传输单元50包括可配置的内部网络,该内部网络包括各种代理。在代理之间包括多个存储器操作队列52和多个操作电路55。开关电路58可以耦合到每个代理(应当指出的是,为简单起见,耦合在这里未示出)。开关电路58又可以将选定的代理彼此耦合,以配置流传输单元50执行各种操作。来自外部源的软件编程可以应用到开关电路58,以便为要执行的特定操作确定配置。
应当指出的是,图5中所示的代理的数目是示例性的。但是,其它实施例可包括其中示出的每种代理类型的更大或更小数目,并且因此图5并不意在限制本公开内容的范围。
每个存储器操作队列52可以耦合到主存储器,诸如以上图1中所示的主存储器9。在一些实施例中,存储器操作队列52可以包括用于从存储器接收输入数据流和向存储器或其它目的地提供输出流的单独队列。在另一实施例中,每个存储器操作队列52可以作充当输入队列或输出队列。一般而言,存储器操作队列可被用于执行存储器操作和用于将流传输单元50接口到其它单元,诸如执行单元或系统存储器。每个存储器操作队列52可以如所示实施例中那样被实现为FIFO。
在所示的实施例中的操作电路55被配置为对数据流执行各种操作。由操作电路55执行的操作可以包括上面讨论的变换或逻辑运算以及本文中未明确讨论的操作当中任何一种。在一些实施例中,每个操作电路55可被配置为专门的用途,即,可被配置为执行单一类型的操作。但是,其中每个操作电路55可以执行多于一种类型的操作并且当流传输单元50被设置为执行一个操作或一组操作时由软件或其它装置可编程或以其它方式可配置的其它实施例也是可能的和预期的。
在所示出的实施例中,每个操作电路55包括两个输入队列54和一个输出队列56,但是输入和输出队列的数目可以从一个实施例到另一个有所不同。在操作过程中,操作电路54的一个或两个输入队列54可以耦合到存储器操作队列52,存储器操作队列52又从存储器或其它数据源接收数据流。在每个操作电路55中的输出队列56可以耦合到向选定的目的地提供输出流的另一存储器操作队列52。因此,在示出的实施例中数据通过流传输单元50的流动是从存储器到一个或多个存储器操作队列52,然后到选定的操作电路55中传送/生成输出数据流并将其写到输出队列的输入队列54,然后到另一个存储操作队列52并最终到其预期目的地。
开关电路58可以以各种方式来实现。在一种实施例中,开关电路58可以被实现为被配置为将任何选定的代理耦合到任何其它选定的代理的交叉开关。在另一实施例中,包括开关电路58的开关可以在整个流传输单元50中分布,并且可以将选定的代理耦合到其它选定的代理。一般而言,开关电路58可以以适于允许以各种布置对内部网络进行配置以便执行期望操作的任何方式来实现。用于特定的一个操作或一组操作的流传输单元50的特定布置可以被软件编程到开关电路58中。响应于被编程,开关电路58可以将流传输单元50的各种代理按使期望操作能够被执行的次序彼此耦合。编程可以利用至少一个指令来执行,诸如以上关于流传输单元20的实施例所讨论的。特别地,具有多个不同变元的指令可以被提供给流传输单元50。除了上面讨论的那些变元,指令还可以包括指示哪些操作要被执行并且按什么次序执行的变元。开关电路58可以配置流传输单元50按所指示的次序执行所指示的操作。
图6A-6F是示出图5的流传输单元实施例的各种可编程配置的框图。应当指出的是,为简单起见,只有直接参与操作的单元在这些各种例子中被示出。流传输单元50中的其它单元可以与这些各个图中示出的操作并发地执行其它操作。还应当指出的是,虽然为简单起见而未示出开关电路58,但它仍然存在并且假设所示单元的耦合已经由此被执行。
图6A示出了用于利用流传输单元50的实施例执行简单的移动或复制操作的配置。输入数据流,存储器流#1,可以由流传输单元50加载到第一存储器操作队列52中。从存储器操作队列52,随后输入数据流被输送到操作电路55的第一输入队列54。由于操作是移动或复制操作,因此数据流不被变换,并且因此照原样被输送到输出队列56。从输出队列56,数据流被输送到另一存储器操作队列52。其后,数据流被输送到主存储器9中的新位置。
图6B示出了涉及在串联配置中耦合到一起的三个操作电路的另一操作。9位值的数据流从主存储器9加载到存储器操作队列52中,然后加载到第一操作电路55的输入队列54中。第一操作电路55执行数据流的每个单独元素从9位至16位的扩展,后者在这个特定的实施例中构成半字。在扩展之后,数据流的元素被传递到第一操作电路55的输出队列56,然后传递到第二操作电路55的输入队列54。在第二操作电路55中,每个半字接受范围比较。对于在指定范围内的每个比较,“1”被记录,否则“0”被记录。然后,比较结果的位流被提供给输出队列56,并且随后被转发到第三操作电路55的输入队列54。在第三操作电路55中,“1”的个数被计数,最后的计数值被写入输出队列56。其后,计数值经由“从流中读取”指令被写入整数寄存器。现在转向图6C,示出了利用流传输单元50和向量寄存器的操作。在所示出的例子中,流传输单元50将9位值的流从主存储器加载到存储器操作队列52,并随后加载到第一操作电路55的输入队列54。在第一操作电路55中,每个9位值被扩展到16位,这在这个实施例中构成半字。其后,利用“从流读”指令,16位值经由输出队列56被输送到向量寄存器。然后,这些值与第一值和第二值进行比较,并且比较结果被AND到一起。其后,向量位按16-1的比率向下压缩,并且,响应于“写到流”指令,16个“真”位的值从寄存器写到第二操作电路。然后,第二操作电路可以计数接收到的值中“1”的个数并且响应于“从流读”指令,通过输出队列56,输出计数值。
在图6D的布置中,三个操作电路55串联耦合。第一操作电路55被耦合成经由存储器操作队列52将来自主存储器9的数据流接收到第一输入队列54中。第一操作电路55的第二输入队列54经由一个或多个“写入流”指令从整数或向量寄存器接收在其中写入的数据。第一操作是利用来自两个输入队列54的数据执行的,然后被写到输出队列56。第一操作电路55的输出队列56将数据输送到第二操作电路55的第一输入队列54。第二操作电路55的第二输入队列54经由存储器操作队列52从主存储器9接收另一数据流。然后,第二操作电路55利用来自其每个输入队列54的数据执行第二操作,其结果被写到其相应的输出队列56。从那里,数据被输送到第三操作电路55的输入队列54,在那里执行第三操作。然后,结果产生的输出流从第三操作电路55的输出队列56输出到存储器操作队列52,然后输出到主存储器9。
图6E示出了利用三个串联耦合的操作电路55的另一例子。在第一操作电路55中,大块解压缩对从主存储器9接收到的数据的位流执行(利用也从主存储器9接收的解压缩表)。第二操作电路55经由存储器操作队列52从第一操作电路55接收第一个流并且从主存储器9接收第二个流。利用这两个数据流,第二操作电路55执行游程编码(run-lengthencoding)操作。然后,结果产生的数据流被转发到第三操作电路55,在那里利用可以从主存储器9访问的字典表执行字典扩展操作。其后,结果产生的数据流经由存储器操作队列52被写入主存储器9。
图6F示出了利用在串联-并联组合中耦合的操作电路的例子。在所示出的例子中,四个数据流被并发地加载到并联操作的两个不同操作电路55中。两个输入数据流包括可变长度的值,而其它两个输入数据流包括指示长度的值。两个并联配置的操作电路55当中每一个被配置为接收可变长度的值的一个流和指示长度的值的一个流。两个并联配置的操作电路55每个执行可变长度的字节拆包操作,并且向第三操作电路55输出固定长度的值。第三操作电路55利用两个流执行比较操作并且向第四操作电路输出位向量。在第四操作电路55中,位向量被转换为一的索引,其结果产生的流被写回到主存储器9。
上面结合图6A-6F讨论的配置是示例性的,并且流传输单元的各种实施例绝不是要仅限于这些配置。相反,通过编程开关电路58以便以各种方式配置流传输单元50的内部网络,大量不同配置是可能的和预期的。
图7是流传输单元的另一实施例的框图。在所示出的实施例中,流传输单元70包括多个队列72、多个操作电路75以及开关电路58。在这里示出的队列和操作电路的相应数目是示例性的,并且因此这些代理当中每一种的数目可以从一个实施例到下一个发生变化。
流传输单元70在不同的方面不同于图5的流传输单元50。在第一方面,与流传输单元50中其对等体相反,操作电路75中不包括输入和输出队列。在第二方面,流传输单元70中的每个队列72是通用队列。即,每个队列72可以被用来将流传输单元70接口到主存储器9,作为用于将两个操作电路75耦合到一起的队列,用于将流传输单元70接口到其它外部代理,等等。响应于开关电路58的编程,各种队列72和各种操作电路75可以以各种配置通过开关电路58耦合。编程也可以选择哪些队列要被耦合到主存储器和/或流传输单元70外部的其它代理。具有如上参照图2和5的实施例所述的变元的指令可以被开关电路58用来配置流传输单元70。在第三方面,只需要单个队列72将操作电路75彼此连接,并且更一般而言,将任何两个代理彼此连接(例如,操作电路75到主存储器)。此外,在流传输单元70的一些实施例中的操作电路75可以能够输出多个数据流。
图8A-8D是示出图7的流传输单元实施例的各种可编程配置的框图。应当指出的是,为简单起见,只有直接参与操作的单元在这些各种例子中被示出。流传输单元70中的其它单元可以与这些各个图中示出的操作并发地执行其它操作。还应当指出的是,虽然为简单起见而未示出开关电路58,但它仍然存在并且假设所示单元的耦合已经由此被执行。
图8A示出了用于执行简单操作的配置,诸如移动、复制、变换或其它类型。这种操作类似于在图6A中所示的例子中执行的操作,但是利用流传输单元70而不是流传输单元50。在所示出的例子中,数据流从主存储器9加载到队列72,然后加载到操作电路75。从操作电路75,对应的数据流(其在移动或复制操作的情况下可以完全相同)转发到另一个队列72,然后返回到主存储器。
图8B示出了用于利用多个操作电路对多个数据流执行操作的另一种配置。由这里示出的配置执行的操作类似于由图6D所示的配置执行的操作。在所示出的例子中,连同来自整数或向量寄存器的数据一起,第一数据流经由相应的队列72被加载到第一操作电路中。利用来自寄存器的数据连同从主存储器9加载的数据流一起,第一操作电路75执行第一操作。结果产生的数据流被输出到耦合在第一和第二操作电路75之间的队列72,然后输送到第二操作电路75。第二操作电路还经由队列72从主存储器9接收另一数据流。第二操作使用这两个数据流来生成另一个数据流,然后该数据流经由另一个队列72被传递到第三操作电路75。然后,第三操作电路75对这些数据流执行操作并且生成结果输出数据流,其经由最后一个队列72被写回到主存储器。
图8C中的布置是串联-并联配置,其中四个数据流并发地从主存储器9加载。第一和第二操作电路当中每一个接收可变长度的值的数据流和指示数据长度的另一个数据流。利用分别接收的数据流,第一和第二操作电路75当中每一个将可变长度值转换为固定长度值。然后,固定长度值的两个流经由相应的队列72被输送到第三操作电路75。第三操作电路75执行比较操作,然后经由最终的队列72向主存储器输出比较结果的位流。
图8D中所示的配置类似于图6F中所示的布置。相同类型的数据流并发地从存储器加载,并且所执行的操作具有相同类型并且以相同的次序。如图7的讨论中所指出的,主要的区别在于图8D中所示的布置不在操作电路中使用输入队列或输出队列,因为操作电路75不包括这种队列。作为代替,选定的队列72被用来执行将各种操作电路75彼此链接的功能。
以上结合图8A-8D讨论的配置是示例性的,并且流传输单元的各种实施例绝不仅限于这些配置。相反,通过编程开关电路58以便以各种方式配置流传输单元50的内部网络,大量不同配置是可能的和预期的。
图9是示出编程流传输单元的一种实施例的方法的一种实施例的流程图。方法900可以由图5和7中所示的任意一个流传输单元以及它们的变体来实现。未在此明确讨论的、可以实现方法900的硬件实施例也是可能的和预期的。还应当指出的是,图9中绘出的操作的次序不限于所示出的具体实施例中的次序。
方法900以选择用于执行期望操作的操作电路开始(方框905)。选择可以由开关电路响应于流传输单元的软件编程来执行,并且可以包括确定要被选择的特定操作电路以及确定操作要被执行的次序。在流传输单元的一些实施例中,操作电路可以是多功能的,并且因此特定操作电路的选择还可以包括配置那些电路以执行期望的操作。支持期望操作所需的队列也可以由开关电路响应于编程而选择(方框910)。队列可以包括用于从存储器接收数据和/或向存储器输送数据的队列,以及操作电路通过其被彼此耦合的队列。在操作电路和队列被选择之后,开关电路可以在配置中将它们耦合到一起,以便使期望的操作被执行(方框915)。
图10是示出用于操作可编程流传输单元的实施例的方法的一种实施例的流程图。方法950可以由图5和7中所示的任意一个流传输单元以及它们的变体来实现。此外,本文未明确讨论的流传输单元的实施例也可以执行方法950。还应当指出的是,虽然方法950针对包括多个流从存储器到流传输单元中的并发加载的方法,但仅利用单个流的方法的实施例也是可能的和预期的。应当指出的是,操作的次序不限于图10中所示的次序。此外,虽然该方法包括数据流的并发加载,但其中数据流的顺序加载被执行的实施例也是可能的和预期的。此外,在一些情况下,操作可以重叠。例如,虽然来自流的数据被加载到选定的队列中,但之前加载的数据可以被并发地提供给操作电路,同时之前提供给操作电路的数据可以在其中与之前提到的动作并发地被处理。
方法950以流从存储器到选定的队列中的并发加载开始(方框955)。然后,来自流的数据可以从它们各自的队列被输送到至少一个操作电路(方框960)。在一些情况下,数据可以被并行地输送到两个或更多个操作电路。此外,给定的操作电路可以接收单个流或多个流。操作可以是上面讨论的任何操作,以及未在本文明确或隐含地讨论的广泛各种操作。
如果存在要执行的附加操作(方框965,是),则输出流经由队列从对初始加载的数据流执行操作的每个操作电路提供并转发到另一个操作电路(方框970)。只要存在要执行的附加操作,这个循环就可以重复。如果不存在要执行的任何附加操作(方框965,否),则最终的输出流从最后一个操作电路经由队列提供给其目的地(方框970)。目的地可以是返回存储器、到一个或多个执行单元、到各种类型的寄存器,等等。
一旦上述公开内容被完全理解,众多的变化和修改就将对本领域技术人员变得显然。以下权利要求意在被解释为包含所有此类变化和修改。

Claims (20)

1.一种装置,包括:
第一操作电路,所述第一操作电路被配置为:
从存储器电路接收第一数据流和第二数据流,其中所述第一数据流包括第一多个可变长度的值,并且所述第二数据流包括与所述第一多个可变长度的值相关联的第一多个长度;并且
使用所述第一数据流和所述第二数据流执行第一拆包操作以生成第一输出流,所述第一输出流包括第一多个固定长度的值;
第二操作电路,所述第二操作电路被配置为:
从所述存储器电路接收第三数据流和第四数据流,其中所述第三数据流包括第二多个可变长度的值,并且所述第四数据流包括与所述第一多个可变长度的值相关联的第二多个长度;并且
使用所述第三数据流和所述第四数据流执行第二拆包操作以生成第二输出流,所述第二输出流包括第二多个固定长度的值;
第三操作电路,所述第三操作电路被配置为使用所述第一输出流和所述第二输出流生成位向量;以及
第四操作电路,所述第四操作电路被配置为转换所述位向量以生成结果流。
2.如权利要求1所述的装置,其中,所述结果流包括多个一的索引。
3.如权利要求1所述的装置,还包括:
第一队列电路,所述第一队列电路被配置为从所述存储器电路取回所述第一数据流;以及
第二队列电路,所述第二队列电路被配置为从所述存储器电路取回所述第二数据流。
4.如权利要求3所述的装置,还包括:
第三队列电路,所述第三队列电路被配置为从所述存储器电路取回所述第三数据流;以及
第四队列电路,所述第四队列电路被配置为从所述存储器电路取回所述第四数据流。
5.如权利要求1所述的装置,还包括被配置为将所述结果流存储在所述存储器电路中的队列电路。
6.如权利要求1所述的装置,其中,为了生成所述位向量,所述第三操作电路被配置为将所述第一输出流与所述第二输出流进行比较。
7.一种方法,包括:
从存储器电路接收第一数据流和第二数据流,其中所述第一数据流包括第一多个可变长度的值,并且所述第二数据流包括与所述第一多个可变长度的值相关联的第一多个数据长度;
从所述存储器电路接收第三数据流和第四数据流,其中所述第三数据流包括第二多个可变长度的值,并且所述第四数据流包括与所述第一多个可变长度的值相关联的第二多个长度;
使用所述第一数据流和所述第二数据流执行第一操作以生成第一输出流,所述第一输出流包括第一多个固定长度的值;
使用所述第三数据流和所述第四数据流执行第二操作以生成第二输出流,所述第二输出流包括第二多个固定长度的值;
使用所述第一输出流和所述第二输出流生成位向量;以及
转换所述位向量以生成结果流。
8.如权利要求7所述的方法,其中,所述第一操作包括第一字节拆包操作,并且其中所述第二操作包括第二字节拆包操作。
9.如权利要求7所述的方法,其中,所述结果流包括多个一的索引。
10.如权利要求7所述的方法,还包括:
通过第一队列电路从所述存储器电路取回所述第一数据流;以及
通过第二队列电路从所述存储器电路取回所述第二数据流。
11.如权利要求10所述的方法,还包括:
通过第三队列电路从所述存储器电路取回所述第三数据流;以及
通过第四队列电路从所述存储器电路取回所述第四数据流。
12.如权利要求7所述的方法,还包括:由第四队列电路将所述结果流存储在所述存储器电路中。
13.如权利要求7所述的方法,其中,生成所述位向量包括将所述第一输出流与所述第二输出流进行比较。
14.一种装置,包括:
存储器电路;
流传输单元,所述流传输单元被配置为:
从存储器电路接收第一数据流和第二数据流,其中所述第一数据流包括第一多个可变长度的值,并且所述第二数据流包括与所述第一多个可变长度的值相关联的第一多个数据长度;
从所述存储器电路接收第三数据流和第四数据流,其中所述第三数据流包括第二多个可变长度的值,并且所述第四数据流包括与所述第一多个可变长度的值相关联的第二多个长度;
使用所述第一数据流和所述第二数据流执行第一操作以生成第一输出流,所述第一输出流包括第一多个固定长度的值;
使用所述第三数据流和所述第四数据流执行第二操作以生成第二输出流,所述第二输出流包括第二多个固定长度的值;
使用所述第一输出流和所述第二输出流生成位向量;以及
转换所述位向量以生成结果流。
15.如权利要求14所述的装置,其中,为了执行所述第一操作,所述流传输单元还被配置为执行第一字节拆包操作,并且其中,为了执行所述第二操作,所述流传输单元还被配置为执行第二字节拆包操作。
16.如权利要求14所述的装置,其中,所述流传输单元包括第一队列电路和第二队列电路,其中所述第一队列电路被配置为从所述存储器电路取回所述第一数据流,并且其中所述第二队列电路被配置为从所述存储器电路取回所述第二数据流。
17.如权利要求16所述的装置,其中,所述流传输单元还包括第三队列电路和第四队列电路,其中所述第三队列电路被配置为从所述存储器电路取回所述第三数据流,并且其中所述第四队列电路被配置为从所述存储器电路取回所述第四数据流。
18.如权利要求14所述的装置,其中,所述流传输单元还包括被配置为将所述结果流存储在所述存储器电路中的队列电路。
19.如权利要求14所述的装置,其中,为了生成所述位向量,所述流传输单元还被配置为将所述第一输出流与所述第二输出流进行比较。
20.如权利要求14所述的装置,其中,所述结果流包括多个一的索引。
CN202010896656.1A 2013-08-06 2014-08-06 使用可配置硬件流传输单元进行流传输的装置和方法 Active CN112035167B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010896656.1A CN112035167B (zh) 2013-08-06 2014-08-06 使用可配置硬件流传输单元进行流传输的装置和方法

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/960,150 2013-08-06
US13/960,150 US9396113B2 (en) 2013-08-06 2013-08-06 Flexible configuration hardware streaming unit
CN201480055049.5A CN105593809A (zh) 2013-08-06 2014-08-06 灵活配置硬件流传输单元
CN202010896656.1A CN112035167B (zh) 2013-08-06 2014-08-06 使用可配置硬件流传输单元进行流传输的装置和方法
PCT/US2014/049954 WO2015021164A1 (en) 2013-08-06 2014-08-06 Flexible configuration hardware streaming unit

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201480055049.5A Division CN105593809A (zh) 2013-08-06 2014-08-06 灵活配置硬件流传输单元

Publications (2)

Publication Number Publication Date
CN112035167A true CN112035167A (zh) 2020-12-04
CN112035167B CN112035167B (zh) 2024-02-06

Family

ID=51422141

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010896656.1A Active CN112035167B (zh) 2013-08-06 2014-08-06 使用可配置硬件流传输单元进行流传输的装置和方法
CN201480055049.5A Pending CN105593809A (zh) 2013-08-06 2014-08-06 灵活配置硬件流传输单元

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201480055049.5A Pending CN105593809A (zh) 2013-08-06 2014-08-06 灵活配置硬件流传输单元

Country Status (4)

Country Link
US (1) US9396113B2 (zh)
EP (1) EP3030963B1 (zh)
CN (2) CN112035167B (zh)
WO (1) WO2015021164A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111971656A (zh) * 2018-03-29 2020-11-20 三菱电机株式会社 数据处理装置
KR20220067871A (ko) * 2020-11-18 2022-05-25 삼성전자주식회사 스트리밍 가속기 및 이를 포함하는 스트리밍 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004003767A1 (en) * 2002-06-28 2004-01-08 Motorola, Inc., A Corporation Of The State Of Delaware Re-configurable streaming vector processor
US20080140994A1 (en) * 2006-10-06 2008-06-12 Brucek Khailany Data-Parallel processing unit
CN102103483A (zh) * 2009-12-22 2011-06-22 英特尔公司 汇聚和散布多个数据元素

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860107A (en) * 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
US6119203A (en) * 1998-08-03 2000-09-12 Motorola, Inc. Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system
US6401192B1 (en) * 1998-10-05 2002-06-04 International Business Machines Corporation Apparatus for software initiated prefetch and method therefor
US6330630B1 (en) * 1999-03-12 2001-12-11 Intel Corporation Computer system having improved data transfer across a bus bridge
US7320063B1 (en) * 2005-02-04 2008-01-15 Sun Microsystems, Inc. Synchronization primitives for flexible scheduling of functional unit operations
US7698449B1 (en) * 2005-02-23 2010-04-13 Xilinx, Inc. Method and apparatus for configuring a processor embedded in an integrated circuit for use as a logic element
US20070106883A1 (en) * 2005-11-07 2007-05-10 Choquette Jack H Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction
US7873573B2 (en) * 2006-03-30 2011-01-18 Obopay, Inc. Virtual pooled account for mobile banking
CN100461094C (zh) * 2007-03-19 2009-02-11 中国人民解放军国防科学技术大学 一种针对流处理器的指令控制方法
EP2159707A4 (en) 2007-06-20 2010-11-24 Fujitsu Ltd ARITHMETIC PROCESSING UNIT, INPUT TAX PROGRAM AND INPUT TAX PROCEDURE
US8667258B2 (en) 2010-06-23 2014-03-04 International Business Machines Corporation High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
US8719464B2 (en) 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004003767A1 (en) * 2002-06-28 2004-01-08 Motorola, Inc., A Corporation Of The State Of Delaware Re-configurable streaming vector processor
US20080140994A1 (en) * 2006-10-06 2008-06-12 Brucek Khailany Data-Parallel processing unit
CN102103483A (zh) * 2009-12-22 2011-06-22 英特尔公司 汇聚和散布多个数据元素

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JAMES RUMBAUGH , 韩承德: "数据流多处理机", 计算机研究与发展, no. 06 *

Also Published As

Publication number Publication date
US20150046650A1 (en) 2015-02-12
CN105593809A (zh) 2016-05-18
WO2015021164A1 (en) 2015-02-12
US9396113B2 (en) 2016-07-19
CN112035167B (zh) 2024-02-06
EP3030963B1 (en) 2019-04-10
EP3030963A1 (en) 2016-06-15

Similar Documents

Publication Publication Date Title
US11237831B2 (en) Method and apparatus for permuting streamed data elements
TWI496080B (zh) 轉置指令之技術
JP2966085B2 (ja) 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法
US5530884A (en) System with plurality of datapaths having dual-ported local memory architecture for converting prefetched variable length data to fixed length decoded data
JP4219369B2 (ja) プロセッサシステム内においてスタックを分離して管理する方法および装置
US20100106692A1 (en) Circuit for compressing data and a processor employing same
KR102318531B1 (ko) 스트리밍 메모리의 치환 동작
CN111183418B (zh) 可配置硬件加速器
US8069333B2 (en) Converting logical to real number to access shared configuration information in event driven state transiting reconfigurable system
TW202314497A (zh) 用於加速串流資料變換運算之電路系統及方法
US20100318766A1 (en) Processor and information processing system
US20230023866A1 (en) Shared multi-port memory from single port
JP2007034392A (ja) 情報処理装置及びデータ処理方法
CN112035167B (zh) 使用可配置硬件流传输单元进行流传输的装置和方法
US5452101A (en) Apparatus and method for decoding fixed and variable length encoded data
US7143268B2 (en) Circuit and method for instruction compression and dispersal in wide-issue processors
JP2000322235A (ja) 情報処理装置
EP4198717A1 (en) Register file virtualization: applications and methods
US9043510B2 (en) Hardware streaming unit
US11443014B1 (en) Sparse matrix multiplier in hardware and a reconfigurable data processor including same
US20040193835A1 (en) Table lookup instruction for processors using tables in local memory
JP2004515856A (ja) ディジタル信号処理装置
US7519794B2 (en) High performance architecture for a writeback stage
JP5025521B2 (ja) 半導体装置
KR970007262B1 (ko) 데이타패스 및 명령세트 확장이 용이한 risc 구조

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