CN100489811C - 实现矢量存储器操作 - Google Patents
实现矢量存储器操作 Download PDFInfo
- Publication number
- CN100489811C CN100489811C CNB200610164644XA CN200610164644A CN100489811C CN 100489811 C CN100489811 C CN 100489811C CN B200610164644X A CNB200610164644X A CN B200610164644XA CN 200610164644 A CN200610164644 A CN 200610164644A CN 100489811 C CN100489811 C CN 100489811C
- Authority
- CN
- China
- Prior art keywords
- address
- memory
- vector
- addresses
- conflict
- 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.)
- Expired - Fee Related
Links
- 239000013598 vector Substances 0.000 title claims abstract description 115
- 238000003860 storage Methods 0.000 claims description 60
- 238000000034 method Methods 0.000 claims description 21
- 238000001514 detection method Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 4
- 239000006185 dispersion Substances 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 230000015572 biosynthetic process Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 239000007891 compressed tablet Substances 0.000 description 5
- 210000004027 cell Anatomy 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002040 relaxant effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000003826 tablet Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,本发明包括一种装置,具有存储矢量数据的寄存器堆、连接至该寄存器堆以产生用于矢量存储器操作的地址的地址生成器以及控制器,该控制器从一个或多个片中产生输出片,该一个或多个片的每个都包括多个地址,其中该输出片包括各自对应于存储器的单独可寻址部分的地址。描述了其它实施例并要求保护这些实施例。
Description
技术领域
本发明的实施例涉及数据处理,并且更具体地涉及处理诸如矢量存储器操作的矢量操作。
背景技术
诸如微处理器的某些处理器被配置为对不同类型的数据进行操作。一些处理器包括对矢量数据操作的支持。这种矢量数据典型地具有比标量操作数更宽的长度。例如,矢量数据可由多个矢量元素构成,每个矢量元素对应于一个标量操作数。不同的指令集体系结构(ISA)包括对某些矢量操作的支持。在一些指令集中,存在这样一些指令:其目标在于执行仲裁步幅式(arbitrary-strided)和非步幅式矢量存储器访问。这些指令通常被称为收集(加载或存储器读取)和分散(存储或存储器写入)指令。在收集/分散指令中,用户提供一组随机地址或偏移。收集和分散指令是程序设计器和矢量编译器的基本工具,用于产生处理一级或多级存储器间接寻址的有效矢量代码。
因此,大多数矢量指令集提供一种允许读取或写入一批随机存储器位置的存储器访问。矢量ISA中的典型的收集/分散指令呈如下形式:
收集[v1]—>v2;以及
分散v1—>[v2]
其中v1和v2是矢量寄存器,每个矢量寄存器都包括多个基址寄存器。在收集指令中,将包含在源寄存器v1中的数据用作一组存储器地址。对于每个地址,能够执行该指令的处理器会提取位于存储器中指定地址处的对应数据并将该数据放置在目标寄存器v2中的对应位置处。
分散指令执行相反的操作,其中源寄存器v1包含随机数据,而目标寄存器v2包含一组存储器地址。将v1中的每个数据元素都存储在存储器中由v2中的相应地址所指示的位置。一些矢量指令集具有全局寄存器,将该全局寄存器添加到所述地址中以构建最终的存储器地址。
存在两种在硬件中实现收集/分散指令的基本策略。在第一种策略中,硬件在收集/分散中按序产生每个地址,并按序分配(dispatch)存储器请求(读取或写入)。这种策略有些麻烦且效果低,并降低了设法在多个数据上同时执行单个指令的矢量操作的效率。第二种策略设法执行对最近的存储器单元(例如,高速缓存)的多个同步访问。
但是在执行这些同时访问的过程中,应该避免数据元素和存储器分级体系的部分之间的冲突。也就是,当发出多个矢量元素至高速缓冲存储器时,高速缓冲存储器的一部分在一个周期中只能接收单个数据元素。因此,采用不同的控制方案以避免这种冲突。但是这些解决机制相对而言效果不佳,并且对于特定数据或者存储器单元并无优化。因此需要改善矢量操作并且更具体地是矢量存储器操作的实现。
发明内容
为了克服上述现有技术中所使用的两种策略存在的缺陷,根据本发明的实施例,提出了一种系统,包括:地址生成器,所述地址生成器接收对应于矢量存储器指令的信息,并从所述矢量存储器指令中产生多个地址,其中所述地址生成器将所述信息排列为所述多个地址,其中所述多个地址提供对存储器的多个分区的第一无冲突访问和对寄存器堆的多个簇的第二无冲突访问;以及连接至所述地址生成器的动态随机访问存储器DRAM。
根据本发明的其它实施例还提出了一种装置,包括:存储矢量数据的寄存器堆;连接至所述寄存器堆以产生用于矢量存储器操作的地址的地址生成器;连接至所述地址生成器以在多个输入片中存储所述地址的缓冲器;以及控制器,所述控制器从在所述缓冲器中的多个输入片中的至少一个中产生输出片,所述输出片包括多个地址,每个所述地址都对应于存储器的单独可寻址部分。
根据本发明的实施例还提出了一种方法,包括:接收指令以对多个矢量元素执行存储器操作,其中所述指令指示所述存储器操作是无冲突的;以及绕过冲突分析的至少一部分并执行所述存储器操作。
根据本发明的系统、装置和方法克服了现有技术中的缺陷,并有效地改善了矢量操作的效率。
附图说明
图1是根据本发明一个实施例的处理器的框图。
图2是根据本发明实施例的处理器的数据通路的一部分的框图。
图3是根据本发明另一个实施例的处理器的数据通路的一部分的框图。
图4是根据本发明一个实施例的片缓冲器的框图。
图5是根据本发明又一个实施例的处理器的数据通路的框图。
图6是根据本发明实施例的示例存储器队列。
图7是根据本发明实施例的处理器的数据通路的另一个实施方式的框图。
图8是根据本发明一个实施例的地址生成器的框图。
图9是根据本发明一个实施例的方法的流程图。
图10是根据本发明实施例的系统的框图。
具体实施方式
利用例如存储体式高速缓存(banked cache)的分段存储器结构,这些实施例可用于实现仲裁步幅式和非步幅式矢量存储器操作(vector memoryoperation)。这些操作对于优化各种各样的软件可以是有用的,特别是密码学、图形学和媒体应用。为这些存储器操作提供高带宽改善了任何矢量机器实现的性能。
地址生成单元中的逻辑或独立的逻辑可用于检测地址冲突,这些地址冲突例如:映射至同一高速缓冲存储器或存储体的地址对或地址组,并因此不能被并行分配。可采用不同的冲突检测机制。例如,可使用直接多对多(all-to-all)地址比较或者内容可寻址存储器(CAM)检测匹配。如果出现冲突,这些冲突的请求可被停止或缓冲直到访问变为可能的随后的周期。
在不同的实施例中,一种或多种方案可被实现以执行具有高效率并避免冲突的矢量存储器操作。一些实施方式通过经指令接受相应的存储器操作(例如,分散或收集)不与在先的存储器操作相冲突或者该操作未在分段寄存器堆或存储器中引起冲突的指示可最小化冲突检测逻辑。在其它的实施例中,最小的冲突检测逻辑可用于确保无冲突的存储器操作具有减少的开销和能耗。
现在参照图1,示出根据本发明一个实施例的处理器的框图。如图1所示,处理器10可以是包括对矢量操作的支持的多核处理器。具体地,如图1所示,处理器10包括由多个标量核(scalar core)20a—20n(通常是标量核20)构成的标量部分。此外,处理器10包括一个或多个矢量单元30a—30n(通常是矢量单元30)。尽管图1中以高级别示出,应当理解每个标量核20和矢量单元30都可包括处理器流水线(processor pipeline)的各种组件以执行ISA的指令。尽管在图1的实施例中示有这种实施方式,但提供对矢量指令的支持的其它方式也是可行的。例如,替代单独的矢量单元,可将一个或多个标量核的数据通路扩展以处理矢量操作的更宽的宽度,或者可将用于处理扩展宽度的操作数的从属数据通路添加至标量数据通路。此外,可包括一个或多个附加的执行单元以支持这种矢量指令。
仍旧参照图1,标量核20和矢量单元30通过互连接35连接至高速缓冲存储器40。在不同的实施例中,互连接35可以是总线或其它互连,诸如交叉开关(crossbar)或与处理如本文所述的矢量数据的分布的逻辑结合的其它互连接。在不同的实施例中,至少矢量单元30的组件可被分段,使得可同时在不同矢量数据元素上执行多个操作。为此,高速缓冲存储器40可以是存储体式高速缓存或者其它分段存储器结构,该其它分段存储器结构包括多个可单独寻址的部分,每个部分都能够在单个周期中接收或发射数据。尽管在图1中示有该高级视图,根据本发明的其它实施例,在处理器中也可包括附加的结构和组件。
现在参照图2,示出根据本发明一个实施例的处理器的数据通路的一部分的框图。如图2所示,处理器100包括寄存器堆110。寄存器堆110可包括对矢量寄存器的支持。这种寄存器可采用不同的形式。例如,矢量寄存器可以比处理器的例如256位或更多位的普通数据通路更宽,尽管本发明的范围不限于此。在某些实施例中,每个矢量寄存器都可包括多个标量元素。例如,在一个实施方式中,每个矢量寄存器都可以是扩展长度的寄存器,其包括对例如128个标量值的存储。当然,其它的实施方式也是可行的。
为进行矢量存储器操作,寄存器堆110每个周期可发送多个地址(例如,N个地址)。具体地,如图2所示,寄存器堆110可与多个地址生成单元(AGU)1201-N(通常是AGU120)连接。每个AGU 120都适合于接收来自寄存器堆110的存储器值并相应地处理它。例如,AGU 120可接受进来的寄存器地址并将其转换例如变成物理地址或执行一些其它的地址计算。
仍旧参照图2,在AGU 1201—120N中所产生的地址可通过例如交叉开关或其它连接网络的互连网络130连接至高速缓冲存储器。更具体地,如图2所示,地址可连接至多个高速缓冲存储体1401—140N(通常是高速缓冲存储体140)。即,可将高速缓冲存储器分段为多个存储体,其中在单个周期中,每个存储体可被同时访问。换言之,高速缓冲存储器的每个分区都可单独寻址并可因此同时接收输入。此外如图2中所示,高速缓冲存储体1401—140N可通过互连网络145连接回寄存器堆110。以这种方式,从高速缓冲存储器获得的数据可被提供至寄存器堆。
因此,为了进行改善的存储器操作,每个单独的高速缓冲存储体都可在单个周期中被访问。但是,如果在单个周期中,单个存储体的多个地址被提供至该存储体,则出现冲突。因此可提供冲突检测器和调度程序150(本文称为“冲突检测器150”)。冲突检测器150可用于确定在AGU 1201-N中产生的地址是否是无冲突的。如果不是,则冲突检测器150可发送反馈信号至适当的AGU以停止并等待随后的周期来分配存储器操作。下面描述处理这种冲突的其它方式。
因此图2示出从寄存器堆110至高速缓冲存储器140的N路数据通路,例如,第一可用的高速缓存级。尽管在图2的实施方式中示为包括N个高速缓冲存储体以及相应的N个AGU,应当理解的是本发明的范围不限于此。正如下面将要进一步讨论的,在一些实施方式中,可将寄存器堆划分成多个不同的被称为通道(lane)的段。例如,寄存器堆可包括与相应的高速缓冲存储器的存储体数量相同的通道(例如,寄存器堆可包括L个通道,其中L=N),尽管本发明的范围不限于此。尽管在图2的实施方式中未示出,但是可提供用于提高存储器操作效率的附加逻辑,例如,通过在单个周期中合并多个存储器操作。
在不同的实施例中,正如下面将要进一步描述的,冲突检测器150可包括完全的冲突检测逻辑以及流线型冲突检测逻辑。
在许多实施方式中,对于每个通道,寄存器堆110可具有至少一个读/写端口,并且对于每个存储体,高速缓冲存储器140可具有至少一个读/写端口,并且在一些实施例中,可提供两个读/写端口。寄存器堆110可以是簇式矢量寄存器堆,其中所有的簇都可独立读/写,并且其中单个矢量寄存器的所有元素都是均匀分布的(一般以循环的方式)。采用这种配置,在单个周期中,L个寄存器单元可读并且存储体中的N个线路可写,只要它们属于不同的通道和存储体。在一个实施例中,基于其在矢量中的位置,每个矢量元素都被物理映射到通道中,并且,基于该地址的位的子集,每个存储器地址都被物理映射到存储体中。用于例如分散或收集的矢量操作的地址可由用户提供并从寄存器堆110中读取。如上所述,这些地址可在AGU 1201-N中被处理并提供至冲突检测器150。在一些实施例中,在冲突检测器150中可产生片。在无冲突的单个周期中,片可对应于提供至例如高速缓存的存储器结构的多个存储器地址。每个片都应当由B个存储桶(bucket)组成,每个存储桶都能够存有一个地址加上有效位。片中的每个地址都应当来自寄存器堆110中的不同通道。满足该条件的片在本文都可称为“无通道冲突”(LCF)片。因此,在单个周期中,LCF片的全部地址都可读。
冲突检测器150可处理片并产生满足下面两个约束的新的片:(1)将这些片保持为LCF;以及(2)确保这些片是“无存储体冲突”(BCF)。换言之,片的每个地址都被映射至不同的高速缓冲存储体以及不同的寄存器堆通道。在多个实施方式中,冲突检测器150可以以顺序的方式处理片,同时寻求将迭代数量最小化的机会。为了这么做,冲突检测器150可将来自不同输入片的地址合并入同一个输出片。在不同的实施方式中,提供给冲突检测器150的地址可以是逻辑的也可以是物理的。
在某些实施方式中,转换后备缓冲器(translation lookaside buffer)(TLB)可与地址生成单元连接以将逻辑地址转变为用于访问存储器分级体系的物理地址。现在参照图3,示出根据本发明另一实施例的处理器的数据通路的一部分的框图。如图3所示,处理器200可包括TLB 225。尽管示为单个TLB,应当理解的是,在某些实施方式中,可提供多个这种缓冲器,每个对应的AGU(图3中未示出)一个这种缓冲器,TLB 225连接至该对应的AGU以接收地址。如上所述,TLB 225可将进来的地址转换为物理地址。这些物理地址可被提供给缓冲器260,该缓冲器在本文称为片队列。片队列260可缓冲TLB转换后的地址,这些地址可作为单独的片由TLB 225发送,每个单独的片都包括多个存储器地址。因此,这些片最初以到达的顺序被缓冲在片队列260中。
仍旧参照图3,再填充锁存器270连接至片队列260。尽管图3中示出再填充锁存器270与片队列260分离,但在某些实施方式中,再填充锁存器270可以是片队列260的一部分。再填充锁存器270可由存储体选择器250使用以从存储的输入片中形成无冲突片,该存储体选择器250可以是冲突解决和调度程序逻辑。由存储体选择器250这样从再填充锁存器270中提取的无冲突片可通过交叉开关230或其它互连网络(如果存在)连接至高速缓冲存储器240,该高速缓冲存储器240可以是包括N个存储体的存储体式高速缓存。当然,尽管在图3的实施例中示有这种实施方式,可以理解的是,本发明的范围不限于此,并且产生无冲突片的其它方式可以存在于其它实施例中。此外,尽管在本实施方式中描述为使用TLB,但是在其它实施例中,未转换的地址也可以类似地被处理。
图4示出根据一个实施例的片缓冲器和对应的再填充锁存器的细节。在图4中采用标记Aij来表示片缓冲器260中的特定的地址,其中i表示在片中的存储桶位置(其中存储桶对应于单个地址,例如,存储器的单个存储体的地址),而j表示在队列中的片位置。注意,在一些实施方式中,仅可存储每个地址用于确定存储体的位。除地址之外,每个存储桶都可包括一个或多个诸如有效位(即V)的状态指示符,其中有效位(当复位时)用于标记空的存储桶(即非有效地址或已经处理的地址)。因此再填充锁存器270可以是暂时的再填充锁存器以合并入队的片。再填充锁存器270还可包括具有存储桶地址和有效位的B个存储桶。
在每个周期期间,片队列260被扫描以寻找在第一阶段中的有效位。在一个示例中,如果每个存储桶的最早的(队列顺序)有效地址对应的存储桶位置为空,那么该有效地址被选择并被复制到再填充锁存器270中。对于第x个再填充锁存器存储桶Rx,只有在同一个存储桶位置(即Kx)中的地址可用于(再)填充它。换言之,Rx可包含具有i=x的任意Kij。考虑到该排序,在再填充锁存器270中产生的片保持LCF条件。
再参照图3,在周期的第二阶段中,存储体选择器250读取再填充锁存器270并选择存储桶的子集,其中设有有效位并且地址存储体是不同的。所选择的地址的有效位被清零以防止它们被不止一次地使用。由于再填充锁存器270包括LCF片,输出片满足LCF和BCF约束。在图3中,所设的有效位示为实心,而复位的有效位示为空心。
因而存储体选择器250的选择逻辑本质上是顺序的,因为一旦地址被选择,没有其它采用同一存储体的地址能够用于同一个片中。因此,该算法根据存储桶位置进行有序选择。首先,选择存储桶0中的地址(除非其有效位关闭),并且将其存储体标记为使用,接着选择存储桶1中的地址(除非其有效位关闭或者其存储体被标记为已经使用)。对再填充锁存器270中的所有剩余存储桶重复该过程。在一些实施例中,每个周期启动在再填充锁存器270的不同存储桶中的读取过程可提高该算法的效率并因此增加在输出片中的有效地址的数目。因此,在每个周期,初始存储桶可被增大(具有回绕)而不考虑片缓冲器260的状态。
注意,来自再填充锁存器270的输出片遵循LCF和BCF条件。但是,不能保证给定存储体B的地址将位于任意特定的存储桶中。因此,交叉开关230可用于经路由选择将每个地址发送至高速缓存240中对应的存储体。由于这些地址对于给定的片是BCF,高速缓存可并行地处理所有的片地址。在收集的情况下,由高速缓存240发回的数据可被写入寄存器堆,并假设高速缓存系统不会将不同片的元素相混合,打破LCF特性,所有的数据都能够在单个周期中被写回。而且,交叉开关可用于经路由选择将每块数据都发送至寄存器堆对应的通道。考虑到LCF条件,用于分散的数据也可在单个周期中从寄存器堆中被读取。
取决于系统的存储器排序要求,来自不同指令的片可被一起处理(即混合在输出片中)或者不被一起处理。同时,如果对于操作而言(例如,对于分散而言)需要原子性,则在第一个输出片被产生之前,所有的片都可存储在片缓冲器260中以防止存储器子系统经历部分写(partial write)。增加的片缓冲器深度可有助于最大化平均吞吐量并最小化系统的等待时间。
在某些实施方式中,片可被优化以减少用于存储器操作的片的数量,同时保持无冲突操作。出于解释的目的,假设具有如下表1所示的7个地址的收集操作:
表1
元素 | 地址 | 高速缓冲存储体 |
1 | @0000 | 0 |
2 | @1000 | 1 |
3 | @2000 | 2 |
4 | @1234 | 1 |
5 | @0002 | 0 |
6 | @1236 | 1 |
7 | @3000 | 3 |
如表1所示,示出多个矢量元素,每个元素都具有不同的地址,每个地址都指定有高速缓冲存储器的特定的存储体。尽管本文是关于高速缓冲存储器的存储体来描述的,应当理解的是,实施例可结合诸如主存储器或其它这种结构的其它存储器单元的划分来使用。
片由允许同时处理的一组地址构成。此外,每个地址都对应于操作单元。当片的此概念用在每个存储体都包含整个高速缓存线的高速缓存体系结构中时,那么该片的每个单个的地址都是指不同的高速缓存线,并且在片中的地址的最大数量等于高速缓存中的存储体的数量。注意,在单存储体式高速缓存中,片可包括单个地址。
现在参照表2,示出从表1中所示的收集操作产生的片的示例实施方式。
表2
片号 | 元素 | 地址 | 存储体 | 高速缓存线 |
1 | 1,4 | @0000,@1234 | 0,1 | 000,123 |
2 | 5,6 | @0002,@1236 | 0,1 | 000,123 |
3 | 2,3,7 | @1000,@2000,@3000 | 1,2,3 | 100,200,300 |
如表2中所示,每个片都包括多个具有不同地址的元素,这些不同地址对应于不同存储体中的位置,其访问存储体中的不同的高速缓存线。
当然,对于示例收集操作,其它调度是可行的,例如,通过创建包含地址@0000,@1234,@2000,@3000的更密集地填装的片。如果这种填装完成,那么第一个片具有四个地址,而第三个片只有一个地址。其它调度启发法可在不同的实施例中实施。
通过放宽一些涉及无冲突协议的条件以实现紧密片,由矢量存储器操作产生的片的数目可得到减少。紧密片包含一组“几乎”无存储体冲突的地址。具体地,只要两个或更多个冲突的地址访问同一高速缓存线,可允许存储体冲突。
采用这种实施例,表2中所示的片可被减少为如表3中所示的两个压缩片:
表3
片号 | 元素 | 地址 | 存储体 | 高速缓存线 |
1 | 1,4,5,6 | @0000,@1234,@0002,@1236 | 0,1,0,1 | 000,123,000,123 |
2 | 2,3,7 | @1000,@2000,@3000 | 1,2,3 | 100,200,300 |
如表3所示,第一个片可包括访问同一存储体的多个元素,因为这些元素访问存储体中的同一高速缓存线的数据。例如,元素1和5都访问存储体0的高速缓存线000,而元素4和6都访问存储体1的高速缓存线123。根据高速缓存的观点,这些紧密片可正如常规的片那样被同时处理,因为将从高速缓存中读取的所有不同的线都将来自不同的存储体。唯一的区别在于一些线将由片中多于一个的元素使用。
不同的硬件、软件和/或固件可用于产生并使用压缩片。作为一个例子,第一硬件电路可被包括以产生片,而第二硬件电路可用于解压缩从存储器获得的片式数据。现在参照图5,示出根据本发明另一个实施例的处理器的数据通路的框图。如图5所示,处理器300可包括寄存器堆310,该寄存器堆310可包括对矢量寄存器和矢量操作的支持。多个AGU 3201—320N(通常是AGU320)连接至寄存器堆310。AGU 320可用于产生地址,例如,产生对应于矢量存储器操作的地址。在图5所示的实施方式中,从AGU 320产生的地址可连接至多个转换后备缓冲器3251—325N(通常是TLB 325)。TLB 325可用于将逻辑地址转换为物理地址。
仍然参照图5,从TLB 325产生的地址可被提供至片压缩器/生成器330(本文称为片生成器330)。如图所示,片生成器330可包括多个缓冲器3321—332N(通常是缓冲器332)。这些缓冲器可用于存储进来的地址以改善操作。例如,在存在冲突的情况下,冲突的地址可存储在缓冲器332中。以这种方式,可避免处理器流水线的停止或其它损伤。
片生成器330可实现例如上述的算法以产生紧密片。例如,可产生片,其中,访问在存储体的单个高速缓存线中的存储器位置的矢量元素可被压缩到单个片中,在保持无冲突操作的同时提高效率。
因此当准备执行收集/分散时,其元素的所有的基址都可从寄存器堆310中读出并通过AGU 320和TLB 325驱动。接着,该组地址—元素对被提供给片生成器330。然后,片生成器330可产生两种信息,即一片要被提供至高速缓存/存储器的无存储体冲突的存储器线路地址,以及描述收集/分散元素映射至该片的地址的数据,因为在压缩片中一个以上的元素可映射至同一地址。
因此片生成器330可产生压缩片335,其被提供给多个高速缓冲存储体3401—340N(通常是高速缓存340)。基于压缩片335中的信息,访问高速缓存340,并且结果被提供给片解压缩器350,该片解压缩器还可包括交叉开关。
片解压缩器350可接收来自高速缓冲存储体3401—340N的数据结果并还接收来自片生成器330的映射信息。基于从片生成器330接收的信息,片解压缩器350可获得对应于存储器操作的存储器位置(例如,在高速缓存线中)的正确的进来的数据,并将其提供至例如寄存器堆310以满足例如收集操作。因此,在收集操作的情况下,解压缩器350确定如何从高速缓存线中提取对应于元素的精确的数据部分,这些高速缓存线基于来自片生成器330的数据被读出。在分散操作的情况下,解压缩器350可确定如何修改带有数据元素的高速缓存线。因此在不同的实施例中,紧密收集/分散片可减小给定收集/分散操作所需的片的数目,以及从高速缓存读取/写入的线的数目。
当收集/分散用于访问来自装入少数高速缓存线的小矩阵的元素时,这种减少可能特别显著。这种矩阵通常存在于加密/解密算法中,这些算法通常访问不同的小阵列的多个分散位置。这样,在功率和定时两方面中收集/分散指令的更有效执行受到影响。
关于存储器排序,不同的处理器类型具有不同的要求。例如,一些处理器是操作有序进行的有序机器。相反,另一些处理器是无序机器,其中操作能够被无序地执行以通过在每个周期中执行有用功而改善性能。但是即使在无序机器中,也可存在不同的存储器排序要求。例如,在不同的机器中,关于在存储器写和读操作之间的排序及诸如此类,可存在不同的要求。为了遵循在例如写和读的不同存储器操作之间的排序,处理器可检测存储器读是否与任何在先的存储器写相冲突,并可进一步检测存储器写是否与在先的存储器读/写相冲突。假设收集/分散操作由随机的多组地址组成,通常冲突计算是二次问题,并且因此该冲突分析在面积和功率方面会消耗巨大的投资。
因此,在一些实施例中,用户级指令或操作码可被提供以向处理器指示对应于这些操作码的操作与不与待处理的存储器操作相冲突的地址相关。如本文所使用的,这些操作码可称为“无混叠(alias-free)”收集/分散。在一个实施例中,这些操作码可如下:
无冲突收集[v1]—>v2;以及
无冲突分散v1—>[v2]
“无冲突收集”指令的语义可以类似于普通“收集”指令的语义,差别在于程序设计器(例如,向硬件)保证在索引矢量寄存器(例如v1)的地址中不存在依赖关系,并且保证硬件不需要检查收集相对在先的存储器写的地址。换言之,用户保证相对于在先指令的该收集的存储器读的无序执行是合法的并且该硬件不必关于在先的存储器操作优化收集指令的执行。
“无冲突分散”指令的语义类似于普通“分散”指令的语义,差别在于程序设计器告诉硬件它不需要检查该分散相对在先的存储器写或在先的存储器读的地址。换言之,用户保证相对于在先指令的该分散的存储器写的无序执行是合法的,并且硬件不必关于在先的存储器操作优化分散指令的执行。当然,在不同的处理器中,相对于其存储器排序规则,可存在对于存储器操作的执行的其它限制。
作为结果,无混叠收集/分散指令可避免冲突检测逻辑,从而缩短等待时间并还通过避免冲突检测逻辑的同步(clocking)节约能量和功率。此外,这种指令的使用可加速总体的执行。
现在参照图6,示出根据本发明实施例的示例存储器队列。如图6所示,处理器400可包括存储器队列410,该存储器队列可用于按程序顺序存储待处理的存储器操作。作为一个例子,存储器队列410可适用于存储矢量存储器操作,尽管本发明的范围不限于此。如图6所示,存储器队列410可包括多个项目,每个项目都对应于矢量存储器操作。这些已编号的项目1—5的每一个都以到达的顺序被示出,最早的指令被列举为1(即,矢量加载操作)等等。
如图6中进一步所示,冲突检测器和调度程序420(本文称为冲突检测器420)可连接至存储器队列410。作为一个示例,冲突检测器420可以是独立的存储器排序逻辑。但是,在许多实施方式中,冲突检测器420可进一步包括如上所述处理寄存器堆的通道和存储体之间的冲突的解决的逻辑。一般,冲突检测器420可基于给定处理器的存储器排序协议控制在存储器队列410中的存储器操作的执行。但是,关于包括无混叠存储器操作的项目4和5,即在项目4中的无冲突收集操作和在项目5中的无冲突分散操作,冲突检测器420可在更早的存储器指令之前将这些操作排序。
具体地,可在项目1、2和3中的指令之前执行在项目4中的无冲突收集指令,如果冲突检测器420这样选择的话。可在项目3和4中的指令之前执行项目5处的无冲突分散指令,如果冲突检测器420这样选择的话。无冲突分散指令是否可在项目2中的指令之前被执行可取决于该体系结构的其它存储器排序规则。此外,该例子假设写操作在读操作之前进行,尽管其它实施方式也是可行的。因此,冲突检测器420可省略这些收集和分散指令的存储器地址检查机制。
在仍有的其它实施例中,附加的用户级操作码可用于指示在相应的存储器操作中列举的地址是无冲突的(例如无通道冲突和无存储体冲突),并且这些操作码可被称为“无冲突”收集/分散操作。换言之,采用这些操作码的程序设计器保证在索引矢量寄存器(上面的收集示例的v1,以及上面的分散示例的v2)中所含的地址是无冲突的。即,在索引矢量中,每组M<=N的地址保证映射至M个不同的存储体,其中N是由高速缓存或存储器支持的存储器或高速缓冲存储体的数目。
实施这些程序设计器保证的操作码(例如,无混叠或无冲突操作码)的不同方式可被接纳。例如,在一些实施方式中,由程序设计器提供的保证可被本文所描述的用于确定是否存在冲突或者是否可避免存储器排序逻辑的不同的机制和硬件所接受,从而减小计算复杂性以及功率消耗。但是,在其它实施方式中,可提供有限的硬件支持以使得处理器能够检验这些保证是准确的。以这种方式,可避免由不合适的程序设计器保证产生的不准确的操作。
在一个实施例中,逻辑可被包括在例如冲突检测器中以检查地址的存储体索引位。例如,在一个实施方式中,地址<i>可包括log2(N)个地址存储体位。可进行测试以确定存储体地址位是否等于“i模(mod)N”。如果这样,索引矢量寄存器中的地址是循环地无存储体冲突。在一个实施例中,k位比较器可用于实现该测试,其中k=ceil(log2(N)),尽管其它变形也是可行的。如果索引矢量寄存器中的地址无法进行存储体位测试,可产生中断(trap)以将控制传给系统软件来采取进一步行动。
在另一个变形中,用户级操作码可保证索引矢量寄存器中的每组N个连续地址都映射至N个不同存储体。但是,地址的顺序不必与存储体顺序完全匹配。在这种情况下,硬件可检查在同一组中不存在对同一存储体的两个访问。在一些实施例中,N个解码器,或者N个N输入的OR设备和最终的N输入的AND设备可用于执行该检查。
在另一个实施例中,通过将存储体位插入索引寄存器中的地址的中间,硬件可证实无存储体冲突的特性。例如上部地址位可被移位或者,可替代地,现有存储体位可被替换。为了实现该测试,可提供位替代设备和移位器。
结果,无冲突收集/分散指令可避免冲突检测逻辑,从而减少它们的等待时间并节约功率或者通过最小的冲突检测逻辑运行。
为了改善包括步幅式操作的其它矢量存储器操作的性能,地址生成器每个周期可产生与存储器分级体系的存储体的最大数量一样多的地址。为了这么做,地址生成器依赖于包括在矢量存储器加载或存储指令中的信息。具体地,矢量存储器加载/存储可定义一组具有四个不同参数的存储器地址:有效地址(Effa),该有效地址是第一元素的地址;矢量长度,该矢量长度是地址的数目;矢量步幅,该矢量步幅是矢量的两个连续地址之间的存储器的距离;以及数据大小,该数据大小是每个单独访问的大小。基于接收到的地址信息的排列可产生由该指令定义的存储器地址,以使得在每个周期中地址不会访问同一个存储体(即是BCF);涉及那些来自/去向矢量寄存器堆的地址的数据不会读取/写入同一个矢量寄存器堆通道(即,是LCF);并且顺序的地址访问顺序的存储体(即,第一地址访问存储体0,第二地址访问存储体1,依此类推)。
基于由矢量存储器指令给出的信息,可产生地址排列。采用这种排列,在每个周期中,可产生一组地址,这些地址在任何存储体中都不冲突并且转到按顺序排序的存储体,而在同一时刻每个周期从寄存器堆簇读取/写入寄存器堆簇的数据不冲突。
现在参照图7,示出根据本发明实施例的处理器的数据通路的另一个实施方式的框图。如图7所示,处理器500包括地址生成器520。如上所述,地址生成器520可接收包括有关有效地址、矢量长度、矢量步幅以及数据大小的信息的矢量存储器指令(例如,矢量存储器加载和/或存储)。当然,在不同的实施方式中,不同的信息可提供有矢量存储器指令。基于该信息,地址生成器520可产生地址以实现符合BCF和LCF的存储器指令。以这种方式,在每个周期中,存储器操作可访问不同的存储体5300—5303(通常是存储体530)。此外,在存储体530中访问的数据可通过交叉开关540提供至寄存器堆的不同通道。具体地,如图7中所示,寄存器堆可由多个寄存器堆通道5100—5103(通常是寄存器通道510)构成。尽管在图7的实施例中示为包括四个存储体和四个寄存器通道,应当理解的是,本发明的范围不限于此,并且在其它实施例中可提供附加的分段。
地址生成器520的不同的实施方式可用于提供既是BCF又是LCF的这些地址。此外,提供至存储体530的地址可以以顺序的方式被提供。在一个实施例中,地址生成器520可包括公共矢量存储器指令处理单元560和多个独立的地址生成器570。现在参照图8,示出根据本发明一个实施例的地址生成器的框图。如图8所示,地址生成器520包括公共处理单元560和多个独立的地址生成器570。在不同的实施例中,对于每个存储体可存在单个独立的地址生成器。
如图8所示,地址生成器520可包括公共处理单元560(本文还称为Aunit)。此外,地址生成器520包括多个独立的地址生成器5701—570N(通常是独立的地址生成器570)。尽管在图8的实施例中示为只包括两个这种独立的地址生成器,在不同的实施例中可提供附加的独立的地址生成器。
公共处理单元560可接收矢量存储器指令参数并广播控制信息至独立的地址生成器570。在其它实施例中,公共处理单元560可被复制并集成在独立的地址生成器中。
每个独立的地址生成器570都可为存储器分级体系(不考虑组成其的物理存储体的数目)的一个逻辑存储体产生地址。在每个周期中,每个独立的地址生成器570可输出地址至由其控制的存储体。所有的地址生成器570都可被初始化并操作以使得在每个周期中,没有存储体被访问两次(因为不同的地址生成器负责不同的存储体),而且没有寄存器簇被读取/写入两次。如图8所示,每个地址单元都包括三个主块,即排序计算器(Imj)575(通常);地址计算器(AM)585(通常);和控制单元(即,通道控制单元)580(通常)。
无论何时新的矢量存储器指令到达公共处理单元560,矢量步幅和数据大小可用于产生并广播三个不同的参数至每个独立的地址生成器570。具体地,公共处理单元560产生因式分解步幅(factorized stride)(vs’)、使得矢量步幅变为vs=vs’xz的步幅因数(z,其是2的幂)、以及由诸如只读存储器(ROM)的表所影响的德尔塔(delta)(Δ)因数。该Δ因数描述顺序元素(考虑到矢量的自然排序)之间的距离,这些顺序元素在位于同一存储体内的两个地址和连续的线位置(即,对准)之间,或者在顺序存储体中,这取决于存储器交织。
当独立的地址生成器570接收来自公共处理单元560的信息时,控制单元580计算其负责产生的地址的数目。此外,控制单元580初始化要产生的到第一存储体的第一地址和在该存储体内部的给定位置。该过程是公共组件信息和单独的地址生成器的索引的函数。该初始化准许无簇冲突地址的产生。
在一个实施例中,存储体内部的初始位置可计算如下:
Pos=(addr_generator_index/(#addr_generators/(words_per_bank/z)))*z+effa%z [公式1]
其中addr_generator_index是单独的地址生成器的索引,#addr_generators是生成器的总数,以及words_per_bank是被读取/写入每个存储体的字数。
在每个周期,每个独立的地址生成器570都可执行下面的操作序列。首先,元素排序可被确定为Pos、Δ、#banks和z的函数。其次,可产生等于元素排序*矢量步幅+effa的地址(addr)。之后控制单元570可确定这样产生的地址是否有效。
此外,独立的地址生成器570可产生更新的位置,该位置对应于:
Pos=Pos+z(mod(#bank x #words_per_bank/#address generators))[公式2]
其中#bank是存储体的数目。
结果,每个地址生成器570在每个周期都可以输出下面的信息:用于访问相关联存储体的地址(addr);指示该地址是否有效的有效位;以及标识在矢量内部的元素的排序的索引(其可用于索引该寄存器堆)。
因此,采用例如根据图7和8的上述实施例,可避免经路由选择将地址发送至适当的存储体的交叉开关。此外,可避免使用附加的冲突检测逻辑。因此,矢量地址生成器520可同时准许无存储体冲突的访问和无寄存器堆簇冲突的地址。此外,地址生成器570可以以独立方式工作,允许分布的实施方式。因此,仲裁步幅式和非步幅式矢量存储器操作可得到实现。由于这些输出片是BCF,已经存在的存储体式高速缓存设计可用于支持矢量存储器操作。
现在参照图9,示出根据本发明一个实施例的方法的流程图。如图9中所示,方法600可用于执行矢量存储器操作。方法600可由接收矢量存储器操作(块610)开始。例如,这种操作可从处理器的指令高速缓存中接收,其中该指令被解码为一个或多个微指令以执行预期操作。
然后,可以确定该操作是否是仲裁或非步幅式操作(菱形615)。换言之,可以确定该操作是针对分散/收集或者其它这种操作,其中矢量元素处于仲裁位置,或者相反地该操作是例如矢量加载或存储,其中矢量元素相互间处于某一预定步幅位置或者其它设置值。如果确定该操作是步幅式操作,那么控制可传递到块620。在块620处,基于用指令接收的信息,可产生无冲突的地址(块620)。具体地,这些地址可以基于所接收到的信息的排列而产生,例如上面根据图7和8所述的。计算这些地址之后,控制可传递到块675,在该块675处执行操作。
如果相反地,在菱形615处确定该操作是例如分散或收集,控制传递至菱形630。在该菱形630处,可以确定该操作是否指示为无混叠或者顺序无关(菱形630)。如果是,控制可传递至块635。在块635处,诸如本文所述的不同的冲突检测分析可被完全绕过或者至少最小化(块635)。换言之,可产生用于存储器操作的地址而不考虑或者有限地考虑这种冲突检测逻辑。因此控制传递至块640,如下所述。
仍旧参照图9,如果相反地,在菱形630处确定操作不示为无混叠或者顺序无关操作,控制传递至块640。在块640处,地址可被产生并载入片缓冲器(块640)。接着控制传递至菱形642,在该菱形处确定操作是否无冲突。如果是,控制传递至块675,如上所述。如果操作不是无冲突的,下一步可确定片缓冲器中的一个或多个地址是否访问同一例如高速缓存线的存储器线路(菱形645)。如果是这样,可产生一个或多个压缩的无冲突片(块650)。因此,这些片可被发送至相应的存储器以执行操作(块675)。
如果相反地,在菱形645处确定地址不访问同一存储器线路,那么控制可传递至块660。在块660处,可产生无冲突片(块660)。例如,可根据本文所述的不同实施例产生一个或多个片。最后,在产生这种无冲突片之后,它们可被提供给相应的存储器以执行操作(块675)。尽管以图9中的实施例中的该特定实施方式进行了描述,但应当理解的是本发明的范围不限于此,并且执行矢量操作的其它方法可被执行。
这些实施例可以在许多不同的系统类型中实现。现在参照图10,示出根据本发明实施例的系统的框图。如图10所示,点对点互连系统包括通过点对点互连750连接的第一处理器770和第二处理器780。如图10所示,处理器770和780的每一个都可以是包括第一和第二处理器核(即,处理器核774a和774b以及处理器核784a和784b)的多核处理器。第一处理器770还包括存储控制器集线器(MCH)772和点对点(P-P)接口776和778。类似地,第二处理器780包括MCH782和P-P接口786和788。如图10所示,MCH的772和782将处理器连接至各自的存储器,即存储器732和存储器734,其可以是本地连接至各自的处理器的主存储器的部分。
第一处理器770和第二处理器780可分别通过P-P接口752和754连接至芯片组790。如图10所示,芯片组790包括P-P接口794和798。此外,芯片组790包括将芯片组790与高性能图形引擎738相连的接口792。在一个实施例中,高级图形端口(AGP)总线739可用于将图形引擎738连接至芯片组790。AGP总线739可符合由Intel公司(Santa Clara,California)于1998年5月7日出版的Accelerated Graphics Port Interface Specification,Revision 2.0。可替代地,点对点互连739可连接这些组件。
然后,芯片组790可通过接口796连接至第一总线716。在一个实施例中,第一总线716可以是外设部件互连(PCI)总线,如由日期为1995年6月的PCILocal Bus Specification,Production Version,Revision 2.1所定义的PCI总线,或者第一总线716可以是诸如PCI Express总线的总线或另一种第三代输入/输出(I/O)互连总线,尽管本发明的范围不限于此。
如图10所示,不同的I/O设备714可与将第一总线716连接至第二总线720的总线桥718一起连接至第一总线716。在一个实施例中,第二总线720可以是低管脚数(LPC)总线。在一个实施例中,不同的设备可连接至第二总线720,这些设备包括例如键盘/鼠标722、通信设备726和可包括代码730的数据存储单元728。此外,音频I/O 724可连接至第二总线720。
这些实施例可以以代码方式被实施并可以存储在其上存储有指令的存储介质上,其可用于为系统编程以执行这些指令。该存储介质可包括,但不限于,任何类型的盘,该盘包括软盘、光盘、光盘只读存储器(CD—ROM)、可重写光盘(CR—RW)和磁光盘、例如只读存储器(ROM)、例如动态随机访问存储器(DRAM)、静态随机访问存储器(SRAM)的随机访问存储器(RAM)、可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器(EEPROM)、磁或光卡的半导体设备或者适合于存储电子指令的任何其它类型的介质。
尽管已经根据有限数量的实施例描述了本发明,但是本领域技术人员可以理解对其的多种修改和变化。其意图在于,附加的权利要求书覆盖落入本发明的真正的精神和范围之内的所有这种修改和变化。
Claims (25)
1、一种系统,包括:
地址生成器,所述地址生成器接收对应于矢量存储器指令的信息,并从所述矢量存储器指令中产生多个地址,其中所述地址生成器将所述信息排列为所述多个地址,其中所述多个地址提供对存储器的多个分区的第一无冲突访问和对寄存器堆的多个簇的第二无冲突访问;以及
连接至所述地址生成器的动态随机访问存储器DRAM。
2、根据权利要求1的系统,其中所述地址生成器包括全局单元和多个独立的地址生成器。
3、根据权利要求1的系统,其中所述多个地址被无交叉地连接至所述存储器。
4、根据权利要求2的系统,其中所述多个独立的地址生成器接收来自所述全局单元的排列后的信息,并从中产生所述多个地址。
5、根据权利要求4的系统,其中所述地址生成器在片中产生所述多个地址,所述多个地址具有顺序地访问所述存储器的多个分区的顺序。
6、根据权利要求2的系统,其中所述全局单元基于步幅信息产生因式分解步幅。
7、一种装置,包括:
存储矢量数据的寄存器堆;
连接至所述寄存器堆以产生用于矢量存储器操作的地址的地址生成器;
连接至所述地址生成器以在多个输入片中存储所述地址的缓冲器;以及
控制器,所述控制器从在所述缓冲器中的多个输入片中的至少一个中产生输出片,所述输出片包括多个地址,每个所述地址都对应于存储器的单独可寻址部分。
8、根据权利要求7的装置,其中所述缓冲器包括存储所述输出片的多个地址的锁存器。
9、根据权利要求7的装置,其中所述多个输入片的每个都包括多个段,每个所述段都具有所述地址中的一个和状态指示符,其中所述多个段的每个都对应于所述存储器的单独可寻址部分中的一个。
10、根据权利要求9的装置,其中所述控制器将地址插入锁存器,使得在所述多个输入片的多个段的第一段中的最早的地址被存储在所述锁存器的第一部分中,并且在所述多个输入片的多个段的第二段中的最早的地址被存储在所述锁存器的第二部分中。
11、根据权利要求8的装置,其中所述控制器按顺序读取所述锁存器,所述顺序按周期改变。
12、根据权利要求8的装置,其中所述锁存器中的有效地址在单个周期中被发送至所述存储器。
13、根据权利要求12的装置,还包括连接至所述控制器以经路由选择将所述有效地址发送给所述存储器的互连网络。
14、根据权利要求7的装置,其中所述控制器将所述多个输入片的至少两个输入片的地址合并入所述输出片中。
15、根据权利要求7的装置,其中如果多个对应于所述存储器的单独可寻址部分的地址对应于在所述存储器的单独可寻址部分中的单个存储器线路,则所述控制器产生具有所述多个地址的输出片。
16、根据权利要求7的装置,还包括连接至所述存储器以选择从所述存储器输出的对应于收集操作的数据的解压缩器。
17、根据权利要求16的装置,其中所述控制器发送消息至所述解压缩器以指示对应于所述收集操作的数据的位置。
18、根据权利要求7的装置,还包括绕过所述控制器并经路由选择将在所述多个输入片中的地址发送至所述存储器的旁路互连,其中所述矢量存储器操作指示对所述存储器的无冲突访问。
19、根据权利要求7的装置,其中所述地址生成器包括多个单元,每个所述单元都与所述存储器的单独可寻址部分相关联。
20、一种方法,包括:
接收指令以对多个矢量元素执行存储器操作,其中所述指令指示所述存储器操作是无冲突的;以及
绕过冲突分析的至少一部分并执行所述存储器操作。
21、根据权利要求20的方法,其中所述指令指示在所述存储器操作和在先的存储器操作之间不存在冲突,并在所述在先的存储器操作的至少一个之前执行所述存储器操作。
22、根据权利要求21的方法,还包括执行所述存储器操作而不检查所述多个矢量元素和所述在先的存储器操作之间的冲突。
23、根据权利要求20的方法,还包括:
产生对应于所述多个矢量元素的多个地址;以及
用所述多个地址访问多个存储体,所述多个地址的每个都对应于所述多个存储体中的一个。
24、根据权利要求23的方法,还包括从所述多个地址中产生片,所述片包括所述多个地址的子集,其中所述子集的每个地址都对应于所述多个存储体中的不同的一个。
25、根据权利要求23的方法,还包括发送所述多个地址至所述多个存储体,绕过冲突检测逻辑。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/255,676 US7627735B2 (en) | 2005-10-21 | 2005-10-21 | Implementing vector memory operations |
US11/255676 | 2005-10-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1952911A CN1952911A (zh) | 2007-04-25 |
CN100489811C true CN100489811C (zh) | 2009-05-20 |
Family
ID=37986631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610164644XA Expired - Fee Related CN100489811C (zh) | 2005-10-21 | 2006-10-21 | 实现矢量存储器操作 |
Country Status (2)
Country | Link |
---|---|
US (3) | US7627735B2 (zh) |
CN (1) | CN100489811C (zh) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7850400B2 (en) * | 2004-11-25 | 2010-12-14 | Freyssinet International (Stup) | Stabilized soil structure and facing elements for its construction |
US7750915B1 (en) * | 2005-12-19 | 2010-07-06 | Nvidia Corporation | Concurrent access of data elements stored across multiple banks in a shared memory resource |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
DE602007011755D1 (de) * | 2006-05-16 | 2011-02-17 | Nxp Bv | Speicherarchitektur |
US7872657B1 (en) * | 2006-06-16 | 2011-01-18 | Nvidia Corporation | Memory addressing scheme using partition strides |
EP2122461A4 (en) * | 2006-11-14 | 2010-03-24 | Soft Machines Inc | DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES |
US8756391B2 (en) * | 2009-05-22 | 2014-06-17 | Raytheon Company | Multi-level security computing system |
JP5573134B2 (ja) * | 2009-12-04 | 2014-08-20 | 日本電気株式会社 | ベクトル型計算機及びベクトル型計算機の命令制御方法 |
CN101763244B (zh) * | 2010-01-21 | 2013-09-18 | 龙芯中科技术有限公司 | 存储器与寄存器之间的数据传输装置和方法 |
US8521944B2 (en) | 2010-08-31 | 2013-08-27 | Intel Corporation | Performing memory accesses using memory context information |
US8904153B2 (en) | 2010-09-07 | 2014-12-02 | International Business Machines Corporation | Vector loads with multiple vector elements from a same cache line in a scattered load operation |
US8635431B2 (en) | 2010-12-08 | 2014-01-21 | International Business Machines Corporation | Vector gather buffer for multiple address vector loads |
US8688957B2 (en) * | 2010-12-21 | 2014-04-01 | Intel Corporation | Mechanism for conflict detection using SIMD |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
US20130305020A1 (en) | 2011-04-01 | 2013-11-14 | Robert C. Valentine | Vector friendly instruction format and execution thereof |
US8688962B2 (en) * | 2011-04-01 | 2014-04-01 | Intel Corporation | Gather cache architecture |
US8521705B2 (en) * | 2011-07-11 | 2013-08-27 | Dell Products L.P. | Accelerated deduplication |
US20130185540A1 (en) | 2011-07-14 | 2013-07-18 | Texas Instruments Incorporated | Processor with multi-level looping vector coprocessor |
EP2783281B1 (en) | 2011-11-22 | 2020-05-13 | Intel Corporation | A microprocessor accelerated code optimizer |
CN104011670B (zh) | 2011-12-22 | 2016-12-28 | 英特尔公司 | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 |
JP5651622B2 (ja) * | 2012-03-07 | 2015-01-14 | 株式会社東芝 | データ伝送装置、データ伝送方法、及びプログラム |
US9575753B2 (en) | 2012-03-15 | 2017-02-21 | International Business Machines Corporation | SIMD compare instruction using permute logic for distributed register files |
US9632782B2 (en) * | 2012-03-30 | 2017-04-25 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
US9785436B2 (en) * | 2012-09-28 | 2017-10-10 | Intel Corporation | Apparatus and method for efficient gather and scatter operations |
US9842046B2 (en) * | 2012-09-28 | 2017-12-12 | Intel Corporation | Processing memory access instructions that have duplicate memory indices |
US9606797B2 (en) | 2012-12-21 | 2017-03-28 | Intel Corporation | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) 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 |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US10114435B2 (en) | 2013-12-23 | 2018-10-30 | Intel Corporation | Method and apparatus to control current transients in a processor |
US9418041B2 (en) | 2014-01-16 | 2016-08-16 | Qualcomm Incorporated | Sample process ordering for DFT operations |
US9507601B2 (en) * | 2014-02-19 | 2016-11-29 | Mediatek Inc. | Apparatus for mutual-transposition of scalar and vector data sets and related method |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9600442B2 (en) | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US9690715B2 (en) * | 2014-09-03 | 2017-06-27 | Nvidia Corporation | Selecting hash values based on matrix rank |
US9355038B2 (en) * | 2014-09-11 | 2016-05-31 | Qualcomm Incorporated | Cache bank spreading for compression algorithms |
US9910650B2 (en) * | 2014-09-25 | 2018-03-06 | Intel Corporation | Method and apparatus for approximating detection of overlaps between memory ranges |
US9710279B2 (en) * | 2014-09-26 | 2017-07-18 | Intel Corporation | Method and apparatus for speculative vectorization |
KR102357863B1 (ko) | 2014-12-15 | 2022-02-04 | 삼성전자주식회사 | 메모리 접근 방법 및 장치 |
US20160179550A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Fast vector dynamic memory conflict detection |
KR102332523B1 (ko) * | 2014-12-24 | 2021-11-29 | 삼성전자주식회사 | 연산 처리 장치 및 방법 |
US9582422B2 (en) | 2014-12-24 | 2017-02-28 | Intel Corporation | Hardware prefetcher for indirect access patterns |
US9891914B2 (en) * | 2015-04-10 | 2018-02-13 | Intel Corporation | Method and apparatus for performing an efficient scatter |
CN115100017A (zh) | 2015-06-10 | 2022-09-23 | 无比视视觉技术有限公司 | 用于处理图像的图像处理器和方法 |
US10289416B2 (en) * | 2015-12-30 | 2019-05-14 | Intel Corporation | Systems, apparatuses, and methods for lane-based strided gather |
US10248419B2 (en) * | 2016-03-09 | 2019-04-02 | International Business Machines Corporation | In-memory/register vector radix sort |
US10146440B2 (en) * | 2016-12-20 | 2018-12-04 | Intel Corporation | Apparatus, system and method for offloading collision check operations in a storage device |
US11232056B2 (en) | 2016-12-28 | 2022-01-25 | Intel Corporation | System and method for vector communication |
US11263143B2 (en) | 2017-09-29 | 2022-03-01 | Intel Corporation | Coherent accelerator fabric controller |
US10681471B2 (en) | 2017-12-22 | 2020-06-09 | Google Llc | Two-dimensional distributed mode actuator |
US10956315B2 (en) * | 2018-07-24 | 2021-03-23 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access |
FR3090932B1 (fr) * | 2018-12-20 | 2022-05-27 | Kalray | Système de multiplication de matrices par blocs |
US10901733B1 (en) * | 2019-07-01 | 2021-01-26 | Western Digital Technologies, Inc. | Open channel vector command execution |
EP4002106A4 (en) * | 2020-03-18 | 2022-11-16 | NEC Corporation | INFORMATION PROCESSING DEVICE AND METHOD |
US11347652B2 (en) * | 2020-08-31 | 2022-05-31 | Microsoft Technology Licensing, Llc | Banked memory architecture for multiple parallel datapath channels in an accelerator |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5184320A (en) * | 1988-02-12 | 1993-02-02 | Texas Instruments Incorporated | Cached random access memory device and system |
ATE146611T1 (de) * | 1990-05-04 | 1997-01-15 | Ibm | Maschinenarchitektur für skalaren verbundbefehlssatz |
US6490673B1 (en) * | 1998-11-27 | 2002-12-03 | Matsushita Electric Industrial Co., Ltd | Processor, compiling apparatus, and compile program recorded on a recording medium |
US6336168B1 (en) * | 1999-02-26 | 2002-01-01 | International Business Machines Corporation | System and method for merging multiple outstanding load miss instructions |
US6618802B1 (en) * | 1999-09-07 | 2003-09-09 | Hewlett-Packard Company, L.P. | Superscalar processing system and method for selectively stalling instructions within an issue group |
US6799265B1 (en) * | 2000-07-11 | 2004-09-28 | Intel Corporation | Dependency checking for reconfigurable logic |
US6898607B2 (en) * | 2000-07-11 | 2005-05-24 | Sony Corporation | Proposed syntax for a synchronized commands execution |
GB0028354D0 (en) * | 2000-11-21 | 2001-01-03 | Aspex Technology Ltd | Improvements relating to memory addressing |
US20040148489A1 (en) * | 2003-01-28 | 2004-07-29 | Sun Microsystems, Inc. | Sideband VLIW processor |
US7475222B2 (en) * | 2004-04-07 | 2009-01-06 | Sandbridge Technologies, Inc. | Multi-threaded processor having compound instruction and operation formats |
-
2005
- 2005-10-21 US US11/255,676 patent/US7627735B2/en not_active Expired - Fee Related
-
2006
- 2006-10-21 CN CNB200610164644XA patent/CN100489811C/zh not_active Expired - Fee Related
-
2009
- 2009-10-21 US US12/582,829 patent/US8316216B2/en not_active Expired - Fee Related
-
2012
- 2012-10-12 US US13/650,403 patent/US8707012B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20100042779A1 (en) | 2010-02-18 |
US20130036268A1 (en) | 2013-02-07 |
US8707012B2 (en) | 2014-04-22 |
US8316216B2 (en) | 2012-11-20 |
US20070094477A1 (en) | 2007-04-26 |
US7627735B2 (en) | 2009-12-01 |
CN1952911A (zh) | 2007-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100489811C (zh) | 实现矢量存储器操作 | |
CN102934084B (zh) | 用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统 | |
CN100578454C (zh) | 高效同步多线程 | |
CN104011676B (zh) | 用于在多个处理核心中的硬件线程之间传送变量的方法和电路装置 | |
CN100447738C (zh) | 含有多级寄存器文件的数字数据处理设备 | |
Li et al. | NUMA-aware shared-memory collective communication for MPI | |
US10078593B2 (en) | Multiple-core computer processor for reverse time migration | |
US8438320B2 (en) | Various methods and apparatus for address tiling and channel interleaving throughout the integrated system | |
CN100354796C (zh) | 使用多存储体存储器设备中的标记寄存器的方法 | |
CN1307537C (zh) | 在具有限制性存储器模型的系统中多存储缓冲器转发的系统和方法 | |
CN101464834B (zh) | 闪存数据写入方法及使用此方法的控制器 | |
CN101606130A (zh) | 在处理器系统的指令级使能资源分配标识的方法和装置 | |
CN101855614A (zh) | 具有阶层式微码储存之多内核处理器 | |
CN102023932A (zh) | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 | |
WO2013063484A1 (en) | Multiple-core computer processor | |
CN101013415A (zh) | 用于多处理器阵列的线程感知分布式软件系统 | |
CN102870096A (zh) | 子缓冲器对象 | |
CN102713846B (zh) | 处理器可执行的代码的生成方法、以及存储区域管理方法 | |
US20190228308A1 (en) | Deep learning accelerator system and methods thereof | |
CN1607508B (zh) | 自适应重构缓冲区的系统和方法 | |
CN103348333A (zh) | 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置 | |
US20060161757A1 (en) | Dynamic allocation of a buffer across multiple clients in a threaded processor | |
US20120110304A1 (en) | Pipelined serial ring bus | |
Tian et al. | Abndp: Co-optimizing data access and load balance in near-data processing | |
TW449720B (en) | Routing dependent instructions to clustered execution units |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090520 Termination date: 20181021 |