灵活配置硬件流传输单元的制作方法

文档序号:9829891阅读:377来源:国知局
灵活配置硬件流传输单元的制作方法
【技术领域】
[0001]本公开内容涉及处理器,并且更具体而言,涉及针对流传输数据的处理的硬件。
【背景技术】
[0002]由计算机系统执行的许多应用涉及流传输数据的使用。流传输数据是以某个规律的间隔从存储器获得的数据。某些操作可以对数据流的全部数据执行。例如,数据流的数据可以从一组连续的存储器地址获得,从指定的存储器地址开始,并一直持续到该地址组中的所有数据都被获得。作为替代,数据流的数据可以以某个地址开始来获得,附加的数据块按彼此相等的地址间隔(有时被称为“步幅”)获得。然后,从流中获得的数据可以经历某种形式的处理。在许多情况下,相同的操作可以对数据流的每个块执行。
[0003]许多现代处理器包括可以执行指令以便从存储器中取数据或将数据写入存储器的加载/存储单元。对于流传输数据,加载/存储单元可以接收一系列指令来从存储器读取数据,每个要被读取的数据元素一个指令。当数据元素从存储器被加载/存储单元读取时,它们可以或者被传递到寄存器以便在后续操作中用作操作数,或者直接传递到执行单元,然后执行单元可以对数据流的元素执行操作。其后,数据可以被返回到加载/存储单元并且随后被写回到存储器。

【发明内容】

[0004]公开了具有流传输单元的处理器。在一种实施例中,处理器包括流传输单元,其被配置为从耦合到处理器的存储器加载一个或多个输入数据流。流传输单元包括具有多个被配置为存储数据流的队列的内部网络。流传输单元还包括多个被配置为对数据流执行操作的操作电路。流传输单元是可编程为经由多个队列中一个或多个队列将多个操作电路中两个或更多个操作电路操作耦合到一起的软件。操作电路可以对数据的多个输入流执行操作,从而产生数据的对应输出流。
[0005]在一种实施例中,一种方法包括编程具有内部网络的流传输单元,其中内部网络包括多个队列和多个操作电路。编程流传输单元包括经由多个队列中一个或多个队列将多个操作电路中两个或更多个选定的操作电路彼此操作耦合。该方法还包括将第一数据流从存储器加载到流传输单元中,其中存储器耦合到包括该流传输单元的处理器,从而利用多个操作电路中第一选定的操作电路对第一数据流执行第一操作,并且利用多个操作电路中第二选定的操作电路对第二数据流执行第二操作。
【附图说明】
[0006]在阅读以下详细描述后和参照现在如下描述的附图后,本公开内容的其它方面将变得显然。
[0007]图1是处理器的一种实施例的框图。
[0008]图2是流传输单元的一种实施例的框图。
[0009]图3是示出用于操作处理器中的流传输单元的方法的一种实施例的流程图。
[0010]图4是示出用于操作处理器中的流传输单元的方法的另一实施例的流程图。
[0011 ]图5是流传输单元的另一实施例的框图。
[0012]图6A-6F是不出图5的流传输单兀的各种可编程配置的框图。
[0013]图7是流传输单元的另一实施例的框图。
[0014]图8A-8D是示出图7的流传输单元的各种可编程配置的框图。
[0015]图9是示出编程可编程流传输单元的各种实施例的方法的一种实施例的流程图。
[0016]图10是示出用于操作可编程流传输单元的各种实施例的方法的一种实施例的流程图。
[0017]虽然本文所公开的主题易于接受各种修改和替代形式,但其具体实施例作为例子在附图中示出并将在本文详细描述。但是,应当理解,附图和对其的描述并不意在限定到所公开的特定形式,而是相反,意在覆盖属于如由所附权利要求定义的本公开内容的精神和范围之内的所有修改、等同物和备选方案。
【具体实施方式】
[0018]图1是包括处理器的一种实施例的计算机系统的一种实施例的框图。在所示出的实施例中,计算机系统5包括耦合到主存储器9的处理器10。计算机系统5可以包括为简单起见而未在这里示出的其它部件。
[0019]所示实施例中的存储器9是随机存取存储器(RAM),其可以被实现为许多不同类型中的任何一种,包括动态RAM(DRAM)和静态RAM(SRAM)。其中主存储器9可利用未在本文明确讨论的存储器技术实现的实施例也是可能的和预期的。
[0020]所示实施例中的处理器10是具有多个不同的执行单元的超标量处理器。在这种特定的实施例中,处理器10包括执行单元15A、15B和15C。在一些实施例中,这些单元可以在功能上完全相同,而在其它实施例中,这些单元可以彼此功能不同。例如,在一种实施例中,执行单元15A可以是整数单元,执行单元15B可以是浮点单元,并且执行单元15C可以是固定点单元。
[0021]还应当指出的是,虽然这里处理器10被示为超标量处理器,但属于本公开内容的范围之内的其它实施例不限于超标量体系架构。例如,在一种实施例中,处理器10可以是向量处理器。此外,多核心实施例也是可能的和预期的,其中每个核心都具有在其中实现的一个或多个执行单元。
[0022]除了执行单元15A-15C,处理器10还包括加载/存储单元14,其可被用来对一些存储器事务从存储器加载数据并将数据存储回存储器。加载/存储单元14可以响应于加载指令的执行而从存储器加载数据。类似地,数据可以响应于加载/存储单元14执行存储指令而被存储回存储器。在所示出的实施例中,加载/存储单元14耦合到包括LI高速缓存17和L2高速缓存18的高速缓存子系统。结合加载和存储操作,加载/存储单元14可以实现从这些高速缓存存储器当中一个或二者读取或向其写入,使得高速缓存的一致性得到维持。在高速缓存转储清空的情况下,加载/存储单元14也可以将来自一个或两个高速缓存的修改后的数据写回到存储器。
[0023]应当指出的是,虽然这里示出的高速缓存子系统仅包括高速缓存17和18,但包括附加高速缓存和/或其它部件的实施例也是可能的和预期的。例如,在一些实施例中的高速缓存子系统可以包括高速缓存控制器以及一个或多个附加级别的高速缓存存储器。此外,其中一些高速缓存存储器,例如LI高速缓存,被分离成两个高速缓存的实施例是可能的和预期的,其中两个高速缓存一个用于存储指令并且一个用于存储数据。
[0024]处理器10还包括耦合在执行单元15A-15C与主存储器9之间的流传输单元20。流传输单元20也被用来从存储器加载数据和将数据存储到存储器。但是,不像加载/存储单元14,流传输单元20专用于加载数据流。数据流在本文可以被定义为连续的数据元素序列,其中数据元素以规则的间隔被隔开,或者从地址列表上的地址加载(其中地址不一定是连续的或间隔相等的)。例如,数据流可以是数据元素序列,其中每个相继的元素与前一数据元素隔开五个地址。数据流定义的特殊情况可以包括存储器中连续的数据块,其中每个相继的元素是在与前一数据元素相关的下一个地址。数据流还可以由数据流的参数定义,包括起始地址、元素大小、步幅间隔(其可以是一,例如,对于连续的数据块)和结束地址。应该注意的是,数据流的数据元素可以包括消耗单个地址的全部、单个地址的一部分或多个地址的数据。数据流可以在各种各样的应用中被使用,诸如数据库搜索、通信,等等。
[0025]在一种实施例中,处理器10的指令集可以包括明确地要由流传输单元20执行以便加载和/或存储数据流的指令。例如,在所示实施例中的流传输单元20可以执行从主存储器加载数据流的指令。指令可以包括多个变元。第一个变元可以指示数据流的起始地址。第二个变元可以指示数据流的元素之间的步幅(或间隔)。如果数据流是连续的,则第二个变元可以指示步幅是一。在其中流传输单元总是对连续的数据流操作的实施例中,没有步幅变元是必需的。第三个变元可以指示数据流的结束地址。在一种实施例中,第三个变元可以明确地声明流的结束地址。在另一种实施例中,第三个变元可以指示要加载的流的长度或数据元素的数目,当其与第二个变元中的步幅结合时,隐含地指示流的结束地址。指示流的每个数据元素的大小以及输出流的目的地的变元也可以被包括在内。可以对用于流传输单元的指令提供的附加变元可以包括指示加载的数据流如何被流传输单元的某些实施例处理的变元。在一些实施例中,流传输单元20可以从软件接收输入数据流,例如,诸如在软件程序中某些指令的执行期间生成的数据。对应地,其中输出数据流被提供给软件并由此被消耗而没有其个别元素被无限期地存储到存储器的实施例也是可能的和预期的。
[0026]响应于加载第一数据流,流传输单元20可以输出与其对应的第二数据流。在一些实施例中,第二数据流的目的地可以由对于上述指令给出的第四个变元来指示。这第四个变元可以指示第二数据流要被写回到存储器、输出到执行单元15A-15C当中选定的一个或多个,或者提供给另一个目的地。第二数据流也可以由以上讨论的其它变元定义。
[0027]第二数据流可以采取各种形式。例如,如果流传输单元正在进行移动或复制操作,则第二数据流的数据可以与第一数据流的数据完全相同,其中第一和第二数据流存储在不同的位置。在一些实施例中的流传输单元20还可以通过变换第一数据流来产生第二数据流。例如,第一数据流的数据可以是加密的数据,而第二数据流的数据可以是与第一数据流等同的解密数据,解密在流传输单元20内部执行。逻辑运算也可以在流传输单元20的一些实施例中对进入的数据流执行。例如,流传输单元20的一些实施例可以包括可以对第一数据流的数据执行各种操作的逻辑电路,其中操作诸如相加、移位、比较,等等。第二数据流
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1