首页 / 专利库 / 专利权 / 实施例 / 实现矢量存储器操作

实现矢量存储器操作

阅读:253发布:2020-11-28

专利汇可以提供实现矢量存储器操作专利检索,专利查询,专利分析的服务。并且在一个 实施例 中,本 发明 包括一种装置,具有存储矢量数据的寄存器堆、连接至该寄存器堆以产生用于矢量 存储器 操作的地址的地址生成器以及 控制器 ,该控制器从一个或多个片中产生输出片,该一个或多个片的每个都包括多个地址,其中该输出片包括各自对应于存储器的单独可寻址部分的地址。描述了其它实施例并要求保护这些实施例。,下面是实现矢量存储器操作专利的具体信息内容。

1、一种系统,包括:地址生成器,所述地址生成器接收对应于矢量存储器指令的信息,并从所述矢量存储器指令中产生多个地址,其中所述地址生成器将所述信息排列为所述多个地址,其中所述多个地址提供对存储器的多个分区的第一无冲突访问和对寄存器堆的多个簇的第二无冲突访问;以及连接至所述地址生成器的动态随机访问存储器DRAM。
2、 根据权利要求1的系统,其中所述地址生^l包括全局单元和多Wte 的地址生艦
3、 根据权利要求l的系统,其中所述多个地址被无交XJ&^接至所述存储器°
4、 根据权利要求2的系统,其中所述多啊虫立的地址生麟接收来自所述 全局单元的排列后的信息,并从中产4^f述多个地址。
5、 根据权利要求4的系统,其中所舰址生^l^片中产生所述多个地址, 所述多个地址具剤,地访问所述存储器的多个分区的顺序。
6、 根据权利要求2的系统,其中所述全局单^S于步幅信息产生因式^i军 步幅。
7、 一种體,鹏 存储^*«的寄存器堆;连接至所述寄存器堆以产生用于矢量存储器操作的地址的地址生«; 连接至所述地址生成器以在多个输入片中存储所逝也址的缓冲器;以及控制器,所述控制器从在所述缓冲器中的多^lr入片中的至少一个中产生输出片,所述输出片包括多个地址,^h所述地址都对应于存储器的與虫可寻 址部分。
8、 根据;R利要求7的^g,其中所述缓冲器包括存储所述输出片的多^t地 址的存器。
9、 根据权利要求7的装置,其中所述多^Mr入片的^^都包括多个段,每个所述段都具有所述地址中的一个和状态指示符,其中所述多个段的齡都对应于所述存储器的與虫可寻址部分中的一个。
10、 根据权利要求9的装置,其中所,制«地址插入锁存器,使得在 所述多个输入片的多个段的第一段中的最早的地址被存储在所述锁存器的第一 部分中,并且^^述多个输入片的多个段的第二段中的最早的地址被存储在所 述锁存器的第二部分中。
11、 根据权利要求8的驢,其中所鹏制器拗,读^^述锁存器,所 通l,按周期改变。
12、 根据I51利要求8的装置,其中所述锁存器中的有效地址在单^h周期中 被发趟所述存储器。
13、 根据权利要求12的驢,还包括连接至所鹏制器以经路由选稱每所 述有效地址发送给所述存储器的互连网络。
14、 根据权利要求7的装置,其中所,制器将所述多,入片的至少两^r入片的地址合并入所述输出片中。
15、 根据权利要求7的體,其中如果多个对应于所述存储器的^4虫可寻址部分的地tot应于在所述存储器的與虫可寻址部分中的单个存储器线路,则所,制器产生具有所述多个地址的输出片。
16、 根据^l利要求7的^S,还包括连接至所述存储器以选择/A^述存储 器输出的对应于收«作的«的解压縮器。
17、 根据权利要求16的體,其中所鹏制器发送消息至所鄉率压缩器以 指示对应于所述收織作的繊的錢。
18、 根据权利要求7的體,还包括纟^l所鹏制器并经路由选择将^^f 述多错入片中的地址发送至所述存储器的旁路互连,其中所述矢量存储器操 {货旨示对所述存储器的无冲突访问。
19、 根据权利要求7的,,其中所逝也址生^#|包括多个单元,^h所 述单元都与所述存储器的與虫可寻址部分相关联。
20、 一种方法,包括:接收指令以对多个矢量元素执行存储H^作,其中所述指令指示所述存储 翻乍是无冲突的;以及绕过冲突分析的至少一 部分柳亍所述存储纖作。
21、 根据权利要求20的方法,其中所述指令指示:&^述存储:ll^作和在先 的存储器操作之间不存在冲突,并在所述在先的存储器操作的至少一个之前执行所述存储纖作。
22、 根据权利要求21的方法,还包括执行所述存储職作而不检查所述多 个短元素和所述在先的存储^^作之间的冲突。
23、 根据权利要求20的方法,还包括: 产fet应于所述多个矢g^素的多个itt;以及用所述多个地址访问多个存储体,所述多个地址的每个都对应于所述多个 存储体中的一个。
24、 根据权利要求23的方法,还包括/A^f述多^ht也址中产生片,所述片包 括所述多个地址的子集,其中所述子集的#地址都对应于所述多个存储体中
25、根据权利要求23的方法,还包括发送所述多个地腿所述多个存储体, 細中突检测逻辑。

说明书全文

实现矢量存储器操作

技术领域

发明实施例涉及«处理,并且更具体地涉及处理诸如矢量存储器操
作的矢量操作。

背景技术

诸如微处理器的某些处理器皮配置为对不同类型的数据进行操作。 —些处
理^l包括对矢量数据操作的支持。这种矢量数据典型地具有比标量操作数更宽 的长度。例如,矢量数据可由多个矢量元素构成,每个矢量元素对应于一个标
量操作数。不同的指令集体系结构(ISA)包括对某些矢量操作的支持。在一 些指令集中,存在这样一些指令:其目标在于执行仲裁步幅式(arbitraiy-stnded) 和非步幅式矢量存储器访问。这些指令通常被称为收集(加«存储器读取) 和分散(存储或存储器写入)指令。在收剪分散指令中,用户^f共一组随机地 址或偏移。收集和分散指令是程序设计器和矢量编译器的基本工具,用于产生 处理一级或多级存储器间接寻址的有效矢量代码。
因此,大多数矢量指令集劍共一种允许读取或写入一批随机存储^g的 存储器访问。矢量ISA中的典型的收紫分散指令呈如下形式:
收集[vl] —>v2;以及
分散vl —> [v2]
其中vl和v2是矢量寄存器,^矢量寄存M包括多个基址寄存器。在收集 指令中,将包含在源寄存器vl中的繊用作一组存储器地址。对于齡地址, 育嫩执行该指令的处理器会提取位于存储器中指定地址处的对应«并将该数 据方M在目标寄存器v2中的对应位置处。
分謝旨令执行相反的操作,其中源寄存器vl包含随机数据,而目标寄存 器v2包含一组存储^l地址。将vl中的*«元素»储在存储器中由v2 中的相应地址所指示的位置。 一些矢量指令集具有全局寄存器,将该全局寄存 ^^加到所淞也址中以构鶴终的存储器i舰。
存在两种在硬件中实现收磐分散指令的基本策略。在第一种策略中,硬件在收磐分散中按序产生^地址,并按序分配(dispatch)存储器请求(读取或
写入)。这种策略有些麻烦且效果低,并降低了设法在多个数据上同时执行单个
指令的矢fi^作的效率。第二种策略设法执行对:S^的存储器单元(例如,高速 缓存)的多个同步访问。
但是在执纟m些同时访问的过程中,应该避免数据元素和存储器分级体系 的部分之间的冲突。也就是,当发出多个矢新素至高速缓冲存储器时,高速缓 冲存储器的一部分在一个周期中只能接收单个类娥元素。因此,釆用不同的控制 方案以避免这种冲突。但是这些解决机制相对而言效果不佳,并朋刊寺定« 或者存储器单元并无优化。因此需要改善短操作并且更具体地是矢量存储器操
作的实现。 发明内容
为了克月LM现有技术中所使用的两种策略存在的缺陷,根据本发明的实
施例,提出了一种系统,包括:地址生«,所淞也址生«^^]"应于«存
储激旨令的信息,并w;M矢量存储激旨令中产生多个地址,其中戶mt也址生成 器将戶;M信息排列为戶腐多个地址,其中戶腿多个i舰掛共对存储器的多个分区
的第一无冲突访问禾口对寄存器堆的多个簇的第二无冲突访问;以及连接至所述地 址生皿的动态随机访问存储器bRMJL
根据本发明的其它实施例还提出了一种體,包括:存储矢量繊的寄存 器堆;连接至所述寄存器堆以产生用于矢量存储,作的地址的地址生成器;连 接至所逝也址生麟以在多铺入片中存储所述iMl:的缓冲器;以鹏滕,所 鹏伟螺从^^述缓冲器中的多賴入片中的至4"个中产生输出片,所述输出 片包括多个地址,^h所3^也址都对应于存储器的斜虫可寻址部分。
根据本发明的实施例还提出了一种方法,包括:接收指令以对多个矢量元
素执行存储纖作,其中戶舰指令^^所述存储ll^作是无冲突的;以及^敏冲 突分析的至41分»1行所述存储«作。
根据本发明的系统、装置和方法克服了现有技术中的缺陷,并有效地改善 了^»作的效率。
附图说明
图1是根据本发明一个实齒例的处理器的框图
图2是根据本发明实施例的处理器的«鄉各的一部分的框图。图3是根据本发明另一个实施例的处理器的聽淑各的1分的框图。
图4是根据本发明一个实施例的片缓冲器的框图。
图5是根据本发明又一个实施例的处理器的«^^各的框图。
图6是根据本发明实施例的示例存储器队列。
图7是根据本发明实施例的处理器的«]15各的另一个实施方式的框图。
图8是根据本发明一个实施例的地址生«的框图。
图9是根据本发明一个实施例的方法的繊呈图。
图10是根据本发明实施例的系统的框图。
具体实
禾,例如存储体式高速缓存(banked cache)的分段存储器辯勾,这些实施 例可用于实现仲裁步幅式和非步幅式矢量存储器操作(vector memoiy operation)。这些操作对于优化各种各样的软件可以是有用的,特别是密码学、 图形学和媒体应用。为这些存储«^$1供高带宽改善了{封可矢量1^现的性 能。
地址生成单元中的逻辑或!拉的逻辑可用于检测地址冲突,这些地址冲突 例如:,至同一高速缓冲存储器^^储体的地tot或地址组,并因此不能被并 行分配。可采用不同的冲突检测机制。例如,可{顿直接多对多(all-to-all)地址比较或者内容可寻址存储器(CAM)检测匹配。如果出现冲突,这些冲 突的请求可被停止或缓冲直到访问变为可能的随后的周期。
在不同的实施例中, 一种或多种方案可被实现以^V行具有高效率并避免冲 突的矢量存储器操作。 一些实»式《^指令接受相应的存储器操作(例如, 分散或收集)不与在先的存储器操作相冲突或者该操作未在分段寄存器堆或存 储器中弓跑冲突的指示可最小化冲突检测逻辑。在其它的实施例中,最小的冲 突检测逻辑可用于确保无冲突的存储鹏作具有M^的飛肖禾口肯號。
现在参照图l,示出根据本发明一个实施例的处理器的框图。如图1所示, 处理器10可以是包括对矢«作的支持的多核处理器。具体地,如图1所示,
处理器10包括由多个^M核(scalar core) 20a—20n (通常是丰疆核20)构成
的标量部分。此外,处理器10包括一个或多个矢量单元30a—30n (通常是矢量
单元30)。尽管图1中以高级别示出,应当理解^h标量核20和^M单元30 W包括处理器箭线(processor ppelme)的各种组件以执行ISA的指令。尽 管在图1的实施例中示有这种实施方式,但提供对矢量指令的支持的其它方式 也是可行的。例如,替代制虫的矢量单元,可将一个或多个标量核的«通路 扩展以处理矢量操作的更宽的宽度,或者可将用于处理扩展宽度的操作数的从 属«通路添疲*疆«通路。此外,可包括一个或多个附啲执行单元以 »^种矢量指令。
仍旧参照图1 ,标量核20和矢量单元30 M31S连接35连接至高速缓冲 存储器40。在不同的实施例中,互雜35可以是总线或其它互连,诸如交叉 开关(crossbar)或与处理如本文所述的矢量数据的分布的逻辑结合的其它互连 接。在不同的实施例中,至少矢量单元30的组件可被分段,使得可同时在不 同矢M据元素上执行多个操作。为此,高速缓冲存储器40可以是存储体式 高速缓存赫其它分段存储器结构,该其它分段存储器结构包括多个可单独寻 址的部分,旨部分都會辦在单个周期中接收^Mt数据。尽管在图1中示有 该高级视图,根据本发明的其它实施例,在处理器中也可包括附加的结构和组 件。
王tt参照图2,示出根据本发明一个实施例的处理器的数据通路的一部分 的框图。如图2所示,处理器雇包括寄存器堆110。寄存器堆110可包括对 矢量寄存器的支持。这种寄存器可采用不同的形式。例如,矢量寄存器可以、比^bS器的例如256位鞭多位的普通Mffl^各更宽,尽管本发明的范围不限于 此。在某些实施例中,^^矢量寄存MN"包括多个标量元素。例如,在一个 实施方式中,*矢量寄存器«以是扩展长度的寄存器,其包括对例如128 个疆值的存储。当然,其它的实施方式也是可行的。
为进行矢量存储器操作,寄存器堆110*周期可发送多个地址(例如, N个地址)。具体地,如图2所示,寄存器堆110可与多个地址生成单元(AGU) 12(VN (通常是AGU120)连接。齡AGU120都适^F接收来自寄存器堆110 的存储器值并相应地处理它。例如,AGU 120可接^«的寄存器地址并将其
转换例如^tl理地址^l行一些其它的地址计算。
仍旧参照图2,在AGU 120广120N中所产生的地址可舰例如交叉开关 或其它连接网络的互连网络130连接至高速缓冲存储器。更具体地,如图2所 示,地址可连接至多个高速缓冲存储体1叫一14(^ (通常是高速缓冲存储体 140)。艮卩,可将高速缓冲存储器分段为多个存储体,其中在单个周期中,每个 存储体可被同时访问。换言之,高速缓冲存储器的^^分区t!W賴虫寻址并可 因此同时接收输入。此外如图2中所示,高速缓冲存储体140「14(^可通过互 连网络145连接回寄存器堆110。以这种方式,从高速缓冲存储器获得的数据 可被鄉至寄存器堆。
因此,为了进行改善的存储器操作,針斜虫的高速缓冲存储体都可在单 个周期中被访问。但是,如果在单个周期中,单个存储体的多个地址被提供至 该存储体,贝咄现冲突。因此可提供冲突检测器和调度禾聘150 (本文称为"冲 突检测器150")。冲突检测器150可用于确定在AGU 12(VN中产生的舰是否 是无冲突的。如果不是,则冲突检测器150可发送反馈信号至适当的AGU以 停止并等待随后的周期来分配存储器操作。下面描述处理这种冲突的其它方 式。
因此图2示出从寄存器堆110至高速缓冲存储器140的N路数据通路, 例如,第一可用的高速缓存级。尽管在图2的实施方式中示为包括N个高速缓 冲存储体以及相应的N个AGU,应当理解的是本发明的范围不限于此。正如 下面纟艘进一步讨论的,在一些实施方式中,可将寄存器堆划分成多个不同的 被称为通道(lane)的段。例如,寄存器堆可包括与相应的高速缓冲存储器的 存储体数量相同的fflit (例如,寄存器堆可包括L个通道,其中L = N),尽管本发明的范围不限于此。尽管在图2的实施方式中标出,但是可掛共用于 提高存储器操作效率的附加逻辑,例如,M在单个周期中合并多个存储器操 作。
在不同的实施例中,正如下面夂艘进--步描述的,冲突检测器150可包括 完全的冲突检测逻辑以及流线型冲突检测逻辑。
在许多实施方式中,对于每个通道,寄存器堆110可具有至^1>~个读/写
端口,并M"于^t存储体,高速缓冲存储器140可具有至少一个读/写端口, 并且在一些实施例中,可麟两个读/写端口。寄存器堆110可以是簇式矢量寄
存器堆,其中所有的簇tu^te读/写,并且其中单个矢量寄存器的所有元素都
是均匀分布的(一般以循环的方式)。采用这种配置,在单个周期中,L个寄 存器单元可读并且存储体中的N个线路可写,只要它们属于不同的ffiit和存储 体。在一个实施例中,基于其在矢量中的位置,每个矢量元素都被物理映射到 M中,并且,基于该地址的位的子集,每个存储器地址都被物理映射到存储 体中。用于例如分散或收集的矢量操作的地址可由用户提供并从寄存器堆110 中读取。如上所述,这些地址可在AGU 12(VN中被处理»供至冲突检测器 150。在一些实施例中,在冲突检测器150中可产生片。在无冲突的单个周期 中,片可对应于提供至例如高速缓存的存储器结构的多个存储器地址。每个片 都应当由B个存储桶(bucket)组成,*存储桶都肯嫩#^一个地址加上有 效位。片中的旨地址都应当来自寄存器堆110中的不同通道。满足该劍牛的 片在本文都可称为"«道冲突"(LCF)片。因此,在单个周期中,LCF片 的全部地址tf^I读。
冲突检测器150可处理片并产生满足下鹏^N勺束的新的片:(1)将这些 片保持为LCF;以及(2)确微些片是"无存储体冲突"(BCF)。换言之, 片的^H4址都被映射至不同的高速缓冲存储体以及不同的寄存器Wit。在 多个实施方式中,冲突检测器150可以以〗l,的方式处理片,同时寻求将迭代 M最小化的机会。为了这么做,冲突检测器150可将来自不同输入片的地址 合并入同一^fl出片。在不同的实施方式中,鄉给冲突检测器150的地址可 以^5f辑的也可以是物理的。
在某些实»式中,转换后备缓冲器(translation lookaside buffer) (TLB) 可与地址生成单元连接以将逻辑地址转变为用于访问存储器分级体系的物理堆址。现在参照图3,示出根据本发明另一实施例的处理器的M通路的一部分 的框图。如图3所示,MI器200可包括TLB 225。尽管示为单个TLB,应当 理解的是,在某些实施方式中,可提供多个这种缓冲器,W^对应的AGU (图 3中未示出)一个这种缓冲器,TLB 225连接至劍应的AGU以接收地址。 如上所述,TLB 225可将棘的地址转换为物理地址。这些物理地址可被提供 纖冲器260,该缓冲驗本文称为片队列。片队列260可缓冲TLB转换后的 地址,这些地址可作为制虫的片由TLB 225发送,^单独的片都包括多个存 储器地址。因此,这些片最初以至哒柳,被缓冲在片队列260中。
仍旧参照图3,再i真充存器270 3^接至片队列260。尽管图3中示出再 填充锁存器270与片队列260分离,但在某些实»式中,再填充锁存器270 可以是片队列260的一部分。再填充锁存器270可由存储体选皿250使用以 从存储的输入片中形成无冲突片,该存储体选織250可以是冲突解决和调度 禾MI^逻辑。由存储体选,250这样从再±真充锁存器270中提取的无冲突片可 ffiil交叉开关230或其它互连网络(如果存在)连接至高速缓冲存储器240, 该高速缓冲存储器240可以是包括N个存储体的存储体式高速缓存。当然,尽 管在图3的实施例中示有这种实施方式,可以理解的是,本发明的范围不P艮于 此,并且产生无冲突片的其它方式可以存在于其它实施例中。此外,尽管在本 实脏式中描述为4顿TLB,但是在其它实施例中,雜换的地址也可以类似 地被处理。
图4示出根据一个实施例的片缓冲器和对应的再填充锁存器的细节。在图 4中釆用标记Aij «^片缓冲器260中的特定的地址,其中i表示在片中的存 储桶4體(其中存储桶对应于单个地址,例如,存储器的单个存储体的地址), 而J ,在队列中的片位置。注意,在一些实施方式中,仅可存储*地址用 于确定存储体的位。除地址之外,齢存储桶都可包括一个或多个诸如有效位 (即V)的状态指示符,其中有效位(当复位时)用于*新己空的存储桶(即非 有效地址或已经处理的地址)。因此再±真充锁存器270可以是暂时的再填充锁 存器以合并入队的片。再填充锁存器270还可包括具有存储桶地址和有效位的 B个存储桶。
在旨周期期间,片队列260被扫描以寻找在第一阶段中的有效位。在一 个示例中,如果^h存储桶的最早的(队列顺序)有效舰对应的存储桶位置
ii为空,那么棘效地址被选择并被复帝倒再±真充锁存器270中。对于第x个再
i真充锁存^?储桶Rx,只有在同一个存储桶健(即iy中的地址可用于(再)
±真充它。换言之,Rx可包含具有ii的任意Kij。考虑到该排序,在再±真充锁 存器270中产生的片保持lcf条件。
藤照图3,在周期的第二阶段中,存储体选择器250读取再填充锁存器 270并选择存储桶的子集,其中设有有效位并且地址存储体是不同的。所选择
的地址的有效位被清零以防止它们被不止一次地使用。由于再填充锁存器270 包括lcf片,输出片满足lcf和bcf约束。在图3中,所设的有效位示为实 心,而复位的有效位示为空心。
因而存储体选择器250的选择逻辑本质上是顺序的,因为一旦地址被选 择,没有其它采用同一存储体的地址能够用于同一个片中。因此,该算法根据 存储桶位置进行有序选择。首先,选择存储桶0中的地址(除一琪有效位关闭), 并且将其存储術祐为〗顿,接難择存储桶1中的地址(除非其有效位关闭 或者,储体被标己为已经使用)。对再填充锁存器270中的所有剩余存储桶 重复该过程。在一些实施例中,齡周期启动在再填充锁存器270的不同存储 桶中的读取过程可提高该算法的效率并因此增加在输出片中的有效地址的数 目。因此,在齡周期,初始存储桶可被增大(具有回绕)而不考虑片缓冲器 260的状态。
注意,来自再i真充锁存器270的输出片纖lcf和bcf条件。但是,不 育旨保证给定存储体b的地旭敏于任意特定的存储桶中。因此,交叉幵关230 可用于经路由选销每每个地址发,高速缓存240中对应的存储体。由于这些
地址对于给定的片是bcf,高速缓存可并tm处理所有的片地址。在收集的情
况下,由高速缓存240发回的数据可被写入寄存器堆,荆叚设高速缓存系统不 会将不同片的元素相混合,打破lcf特性,所有的翻都會滩在单个周期中 被写回。而且,交叉开关可用于经路由选择将每±央«都发送至寄存器堆对应 的通道。考虑到lcf条件,用于分散的数据也可在单个周期中从寄存器堆中 被读取。
取决于系统的存储器排序要求,来自不同指令的片可被一起处理(即混合 在输出片中)或者不被一起处理。同时,如果对于操作而言(例如,对于分散
而言)需要原子性,则在第一^ii出片被产生之前,所有的片都可存储在片缓冲器260中以防止存储器子系统经历部分写(partial write)。增加的片缓冲器深 度可有助于最大化平均吞吐量并最小化系统的等待时间。
«些实施方式中,片可被优化以减少用于存储,作的片的数量,同时 保»5冲»作。出于解释的目的,假设具有如下表1所示的7个地址的收集 操作:
table see original document page 13
如表1所示,示出多个矢量元素,每个元素都具有不同的地址,每个地址
都指定有高速缓冲存储器的特定的存储体。尽管本文是关于高速缓冲存储器的
存储体来描述的,应当理解的是,实施例可结铺如主存储器或其它这种结构 的其它存储器单元的划分来fOT 。
片由允许同时处理的一组地址构成。此外,針地址都对应于操作单元。 当片的此概念用在每个存储体都包含整个高速缓存线的高速缓存体系结构中 时,男卩么该片的每个单个的地址都是指不同的高速缓存线,并且在片中的地址 的最大数錢于高速缓存中的存储体的数量。注意,在储体式高速缓存中, 片可包括单个地址。
5赃参照表2,示出从表l中所示的收餓作产生的片的示例实»式。
table see original document page 13
如表2中所示,齡片都包括多个具有不同地址的元素,这些不同地舰应于 不同存储伴中的位置,其访问存储体中的不同的高速缓存线。
当然,对于示例收集操作,其它调度是可行的,例如,通31创建包含地址
@0000, @1234, @2000, @3000的更密集地填装的片。如果这种填装完成, 那么第一个片具有四个地址,而第三个片只有一个地址。其它调度启发法可在 不同的实施例中实施。
M改宽一些涉及无冲突协议的^f牛以实现紧密片,由矢量存储器操作产
生的片的数目可得至u减少。紧密片包含一组"几乎"无存储体冲突的地址。具 体地,只要两个或更多个冲突的地址访问同一高速缓存线,可允许存储体冲突。
采用这种实施例,表2中所示的片可被减少为如表3中所示的两个压縮片:
表3
table see original document page 14

如表3所示,第一个片可包括访问同一存储体的多个元素,因为这些元素访问 存储体中的同一高速缓存线的聽。例如,元素1和5都访问存储体0的高速 缓存线000,而元素4和6都访问存储体1的高速缓存线123。根据高速缓存 的观点,3^些紧密片可正如常规的片那样被同时处理,因为将从高速缓存中读 取的所有不同的线都将来自不同的存储体。唯一的区别在于一些线将由片中多 于一个的元素4OT。
不同的硬件、软件和/或固件可用于产生并〗ot压縮片。作为一个例子, 第一5更件电路可被包括以产生片,而第二硬件电路可用,压縮从存储器获得 的片式数据。现在参照图5,示出根据本发明另一个实施例的处理器的数据通 路的框图。如图5所示,处理器300可包括寄存器堆310,该寄存器堆310可 包括对矢量寄存器和矢量操作的支持。多个agu 320f320n (通常是agu 320)连接至寄存器堆310。 agu 320可用于产生地址,例如,产生对应于矢 量存储器操作的地址。在图5所示的实施方式中,从agu 320产生的地址可 连接至多个转换后备缓冲器325,—325N (通常是tlb325)。 tlb 325可用于将 逻辑地址转换为物理地址。臓参照图5 ,从TLB 325产生的地址可被提供至片压缩默生^! 330(本 文称为片生«330)。如图所示,片生^!330可g多个缓冲器332i—33^ (通常是缓冲器332)。这些缓冲器可用于存^M的地址以改善操作。例如, 在存在冲突的情况下,冲突的地址可存储在缓冲器332中。以这种方式,可避 免处理^7X^的停止或其它损伤。
片生«330可实现例如±^的算法以产生紧密片。例如,可产生片,其 中,访问在存储体的单个高速缓存线中的存储皿置的矢量元素可被压缩到单 个片中,在保持无冲突操作的同时提高效率。
因此当准皿行收集/分散时,其元素的所有的基址都可从寄存器堆310 中读出并i!3lAGU 320和TLB 325驱动。接着,该组地址一元素对被提供给 片生麟330。然后,片生« 330可产生两种信息,即一片要被提供至高速 缓存/存储器的无存储体冲突的存储器线路地址,以及描述收集/分散元素映射 至该片的地址的数据,因为在压縮片中一个以上的元素可映射至同一地址。
因此片生成器330可产生压縮片335 ,其被提供给多个高速缓冲存储体3叫 —340N (通常是高速缓存340)。基于压縮片335中的信息,访问高速缓存340, 并且结果被提供给片解压縮器350,该片解压縮器还可包括交叉开关。
片解压缩器350可接收来自高速缓冲存储体3叫一340N的数据结果并还接 收来自片生成器330的映射信息。基于从片生皿330接收的信息,片解压缩 器350可获得对应于存储器操作的存储»置(例如,在高速缓存线中)的正 确的棘的娜,荆每其衛共至例如寄存器堆310以满足例如收集操作。因此, 在收«作的情况下,解压缩器350确定如何从高速缓存线中提取对应于元素 的精确的数据部分,这些高速缓存线基于来自片生成器330的数据被读出。在 分«作的情况下,解压縮器350可确定如何修改带有tt元素的高速缓存线。 因此在不同的实施例中,紧密收紫分散片可减小给定收紫分散操作所需的片 的数目,以及从高速缓存读聰写入的线的数目。
当收集/分散用于访问来自装入少数高速缓存线的小矩阵的元素时,这种 »>可能特别显著。这种矩阵通常存在于加密/解密算法中,这些算法通常访问 不同的小阵列的多个分散位置。这样,在功率和定时两方面中收敷分謝旨令的 更有^娥行穀膨响。
关于存储器排序,不同的处理^M具有不同的要求。例如, 一些处理器
15题作有序进行的有序机器。相反,另一些处理器是无序机器,其中操作會, 被无序地执行以通过在針周期中执行有用功而改善性能。但是即使在无序机 器中,也可存在不同的存储器排序要求。例如,在不同的机器中,关于在存储
器写和读操作之间的排序及诸如此类,可存在不同的要求。为了ilt盾在例如写
和读的不同存储器操作之间的排序,处理器可检测存储器读是否与倒可在先的 存储器写相冲突,并可进一步检测存储器写是否与在先的存储器读/写相冲突。 假设收紫分»作由随机的多组地址组成,通常冲突计算是二次问题,并且因 此该冲突分析在面积和功率方面会消耗巨大的投资。
因此,在一些实施例中,用户级指令纖作码可被提供以向处理默旨示对 应于这些操作码的操作与不与待处理的存储器操作相冲突的地址相关。如本文
所使用的,这些操作码可称为"无混叠(alias-free)"收紫分散。在一个实施 例中,这些操作码可如下:
无冲突收集[Vl] —〉V2;以及
无冲突分散vl—〉[v2]
"无冲突收集"指令的语义可以對以于普通"收集"指令的语义,差别
在于禾聘设计器(例如,向硬件)保证在索引矢量寄存器(侈咖vl)的地址中 不存在依赖关系,并且保证硬件不需要检查收集相对在先的存储器写的地址。 换言之,用户保证相对于在先指令的该收集的存储器读的无i^m行是合法的并 且该硬件不必关于在先的存储器操作优化收集指令的执行。
"无冲突分散"指令的语义类似于普通"分散"指令的语义,差别在于 禾聘设计器告诉硬件它不需要检查该分散相对在先的存储器写或在先的存储器 读的地址。换言之,用户保证相对于在先指令的该分散的存储器写的,执行 是合法的,并且硬件不必关于在先的存储器操作优化分謝旨令的执行。当然, 在不同的处理器中,相对于其存储器排序规则,可存在对于存储器操作的执行 的其它限制。
作为结果,无混叠收磐分散指令可避免冲突检测逻辑,从而縮短等待时 间并iSI过避免冲突检测逻辑的同步(clocking)节约能量和功率。此外,这
种指令的使用可加速总体em行。
现在参照图6,示出根据本发明实施例的示例存储器队列。如图6所示, 处理器400可包括存储器队列410,该存储器队列可用于按fMmil^存储f处理的存储器操作。作为一个例子,存储器队列410可适用于存储矢量存储器操 作,尽管本发明的范围不限于此。如图6所示,存储器队列410可包括多个项
目,每个项目都对应于矢量存储器操作。这些已编号的项目1—5的每一个都
以到达柳,被示出,最早的指令被列举为l (即,矢動職操作)等等。
如图6中进一步所示,冲突检测器和调度禾歸420 (本文称为冲突检测器 420)可连接至存储器队列410。作为一个示例,冲突检测器420可以是独立的 存储翻瞎逻辑。但是,在许多实施方式中,冲突检测器420可进一步包括如 上所述处理寄存器堆的通道和存储体之间的冲突的解决的逻辑。 一般,冲突检 测器420可基于给定处理器的存储器排序协i娥制在存储器队列410中的存储 «作的执行。但是,关于包括无混叠存储器操作的项目4和5,即在项目4 中的无冲突收集操作和在项目5中的无冲突分tm作,冲突检测器420可在更 早的存储翻旨令之前将这些操作排序。
具体地,可在项目i、 2和3中的指令之tm行在项目4中的无冲突收集
指令,如果冲突检测器420这样选择的话。可在项目3和4中的指令之frm行 项目5处的无冲突分散指令,如果冲突检测器420这样选择的话。无冲突分散 指令是否可在项目2中的指令之前被执行可取决于该体系结构的其它存储器排 序规则。此外,该例子假设写操作在读操作之前进行,尽管其它实施方式也是 可行的。因此,冲突检测器420可省略这些收集和分謝旨令的存储器地址检查
在仍有的其它实施例中,附加的用户级操作码可用于指示在相应的存储器 操作中列举的地址是无冲突的(例如无通道冲突和无存储体冲突),并且这些 操作码可被称为"无冲突"收集/分散操作。换言之,采用这些操作码的程序 设计:^保证在索引矢量寄存器(上面的收集示例的vl,以M面的分散示例的 v2)中所含的地址是无冲突的。即,在索引矢量中,每组lvK二N的地址保证映 射至M个不同的存储体,其中N是由高速缓存或存储器,的存储器或高速 缓冲存储体的数目。
实施这些禾賠设计器保证的操作码(例如,无混叠或无冲突操作码)的不 同方式可被接纳。例如,在一些实施方式中,由程序设计器提供的保证可被本 文所描述的用于确定是否存在冲突或者是否可避免存储器排序逻辑的不同的机 律U和硬件所接受,从而减小计算复杂性以及功率消耗。但是,在其它实施方式中,可跑贿限的硬件支持以使得处理器會,检验这對呆证是准确的。以这种 方式,可避免由不,的程序设计器保证产生的不准确的操作。
在一个实施例中,逻辑可被包括在例如冲突检测器中以检查地址的存储体 索引位。例如,在一个实施方式中,地址O可包括1og2(N)个地址存储体位。 可进行测试以确定存储体地址位是否等于"i模(mod) N"。如果这样,索引 矢量寄存器中的地址是循环地无存储体冲突。在一个实施例中,k位比较器可 用于实现该测试,其中k=ceil(bg2(N)),尽管其它郷也是可行的。如果索引 矢量寄存器中的地址无法进行存储体位观赋,可产生中断(tr叩)以将控制传 给系统软件来采取进一步糊。
在另一个变形中,用户级操作码可保证索引矢量寄存器中的每组N个连 续地址都卿至N个不同存储体。但是,地址的jl,不必与存储懒,完全匹 配。在这种情况下,硬件可检查在同一组中不存在对同一存储体的两个访问。 在一些实施例中,N铺码器,或者N个N输入的OR设备和最终的N输入 的AND设备可用于执,fi^检查。
在另一个实施例中,通过将存储体«入索引寄存器中的地址的中间,硬 件可证实无存储体冲突的特性。例如上部地址位可被移位或者,可替代地,现 有存储体位可被替换。为了实现该测试,可提f維割戈设备和移位器。
结果,无冲突收歡分散指令可避免冲突检测逻辑,从而减少它们的等待 时间并节约功率或«过最小的冲突检测逻辑运行。
为了改善包括步幅式操作的其它矢量存储器操作的性能,地址生^l每个 周期可产生与存储器分级体系的存储体的最大数量一样多的地址。为了这么 做,iMt生雌依赖于包括在矢量存储器加载或存衞旨令中的信息。具体地,
矢量存储器加歡存〗诸可定义一组具有四个不同参数的存储器地址:有效地址
(Effa),该有效地址是第一元素的地址;矢量长度,该矢量长度慰也址的数目; 矢量步幅,该矢量步幅是矢量的两个连续地址之间的存储器的距离;以及« 大小,该数据大小是每个^i访问的大小。基于接收到的地址信息的排列可产 生由该指令定义的存储器地址,以使得在每个周期中地址不会访问同一个存储 体(即是BCF);涉朋P徵自法向矢量寄存器堆的地址的娜不会读W写入 同一个矢量寄存器堆通道(即,是LCF);并忠顿序的地址访问顺序的存储体
(即,第一地址访问存储体O,第二地址访问存储体l,依此类推)。
18基于由矢量存储麟令给出的信息,可产生地址排列。采用这种排列,在 每个周期中,可产生一组地址,这些地址在任何存储体中都不冲突并且转到按 "»#序的存储体,而在同一 时刻*周期从寄存器堆簇读聰写入寄存器堆簇 的«不冲突。
现在参照图7,示出根据本发明实施例的处理器的数据衝络的另一个实施
方式的框图。如图7所示,处理器500包fgife址生成器520。如上所述,地址 生« 520可接收包括有关有效地址、矢量长度、矢量步幅以及数据大小的信 息的矢量存储器指令(例如,矢量存储器加载和减存储)。当然,在不同的实 »式中,不同的信息可掛共有矢量存储掛旨令。基于该信息,地址生雌520 可产生地址以实现符合BCF和LCF的存储徵旨令。以这种方式,在齡周期 中,存储器操作可访问不同的存储体530。一5303 (通常是存储体530)。财卜, 在存储体530中访问的«可5131交叉开关540提供至寄存器堆的不同通道。 具体地,如图7中所示,寄存器堆可由多个寄存器ilM 510。一5103 (通常是 寄存器通道510)构成。尽管在图7的实施例中示为包括四个存储体和四个寄 存器通道,应当理解的是,本发明的范围不限于此,并且在其它实施例中可提 供附加的分段。
ittt生成器520的不同的实施方式可用于提供既是BCF又是LCF的这些 地址。此外,提供至存储体530的地址可以以jl醉的方式被鄉。在一个实施 例中,地址生成器520可包括公共矢量存储器指令处理单元560和多个3虫立的 «生成器570。现在参照图8,示出根据本发明一个实施例的地址生成器的 框图。如图8所示,地址生成器520包括公共处理单元560和多个3拉的地址 生« 570。在不同的实施例中,对于*存储体可存在单个独立的地址生成 器°
如图8所示,地址生成器520可包括公共处理单元560(本文还称为Aumt)。 财卜,地址生« 520包括多个独立的地址生« 570,—570n (通常是独立的 地址生«570)。尽管在图8的实施例中示为只包括两个这种独立的地址生成 器,在不同的实施例中可衝共附加的3拉的地址生麟。
公共处理单元560可接收矢量存储徵旨令参数并广播控伟瞻息至独立的地 址生成器570。在其它实施例中,公共处理单元560可被复制并集皿独立的 地址生麟中。
19^Hte的地址生皿570都可为存储器分级体系(不考虑组«的物理 存储体的数目)的一个逻辑存储体产生地吐。在*周期中,^^虫立的地址
生« 570可输出地址至由其控制的存储体。所有的地址生雌570都可被初
始化«作以使得在每个周期中,没有存储体被访问两次(因为不同的地址生
成器负责不同的存储体),而且没有寄存器簇被读聰写入两次。如图8所示, 每个地址单元都包括三个主,即排序计算器(Imj) 575 (通常);地址计算 器(AM) 585 (通常);和控制单元卿,M控制单元)580 (通常)。
无论何时新的矢量存储徵旨令到达公共处理单元560,矢量步幅和娜大 小可用于产生并广播三个不同的参数至每个独立的地址生成器570。具体地, 公共处理单元560产生因式分解步幅(factorized stride) (vs,)、使得矢量步幅 变为vs = vs'xz的步幅因数(z,其是2的幂)、以及由诸如只读存储器(ROM) 的表所影响的德尔塔(delta) (△)因数。该A因数描逾顿序元素(考虑到矢 量的自然排序)之间的距离,这些顺序元素在位于同一存储体内的两个地址和 3^卖的线位置(即,对准)之间,或者招l,存储体中,这取决于存储器交织。
当3te的地址生成器570接收来自公共处理单元560的信息时,控制单元 580计算其负责产生的地址的数目。此外,控制单元580初始化要产生的到第 一存储体的第一地址和在该存储体内部的给定位置。该过程是公共组件信息和 #^虫的地址生«的索弓I的函数。该初始化准许无簇冲突地址的产生。
在一个实施例中,存储体内部的初始隨可计算如下: Pos = (addr_generator_index / (#addr』enerators/ (wordsjper一bank/z)) ) *z + effa%z [公式1〗
其中addr一generator—index是单独的地址生成器的索弓l, #addr_generators是生成 器的总数,以及wordsj)erj3ank是被读聰写入^t存储体的字数。
在齡周肌每^Hte的地址生麟570舰执行下面的操作序列。首先, 元素排序可被确定为Pos、 △、能anks和z的函数。其次,可产生等于元素排 序*矢量步幅+ effa的地址(addr)。之后控制单元570可确定这样产生的地址 是否有效。
形卜,独立的地址生雌570可产生更新的錢,该位置对应于: Pos = Pos + z (mod (#bank x #words_per—bank / #address generators))[公式 2]结果,Wfe址生麟570在^^周期fNT以输出下面的信息:用于访问 相关联存储体的地址(addr);指g地址是否有效的有效位;以及标识在矢量 内部的元素的排序的索引(其可用于索弓l该寄存器堆)。
因此,采用例如根据图7和8的战实施例,可避免经路由繊各舰发
送至适当的存储体的交叉开关。财卜,可避免^顿附加的冲突检测逻辑。因此, 矢影Mt生成器520可同时准许无存储体冲突的访问和无寄存器堆簇冲突的地 址。鈔卜,舰生麟570可以以独立方式工作,允i粉布的实施方式。因此, 仲裁步幅式和非步幅^量存储器操作可得到实现。由于这些输出片是BCF, 已经雜的存储体式高速缓存设计可用于支持短存储器操作。
现在参照图9,示出根据本发明一个实施例的方法的流程图。如图9中所 示,方法600可用于执行矢量存储器操作。方法600可由接收矢量存储器操作 (块610)开始。例如,这种操作可从处理器的指令高速缓存中接收,其中该 指令l戯军码为一个或多个微指令以执纟"页期操作。
然后,可以确定鄉作是否是仲裁或非步幅式操作(菱形615)。换言之, 可以确定该操作是针对分散收集或者其它这种操作,其中矢量元素处于仲裁位 置,藏相忠也该操作是例如矢量加载或存储,其中矢量元素相互间处于某一 预定步幅位置或者其它设置值。如果确定该操作是步幅,作,那么控制可传 递到块620。在块620处,基于用指令接收的信息,可产生无冲突的地址(块 620)。具体地,这些地址可以基于所接收到的信息的排列而产生,例如上面根 据图7和8所述的。计算这些地址之后,控制可传递到块675,在该块675处 执行操作。
如果相反地,在菱形615处确定纖作是例如分散或收集,控制传魅菱 形630。在该魏630处,可以确定该操作是否衞g为无混叠離顺序无关(菱 形630)。如果是,控制可传递至块635。在±央635处,诸如本文所述的不同的 冲突检测分析可被完全^il或者至少最小化(块635)。换言之,可产生用于存 储器操作的地址而不考虑或者有限地考虑这种冲突检测逻辑。因此控制传, 块640,如下所述。
仍旧参照图9,如果相反地,在菱形630处确定操作不示为无混叠或者顺 序无»作,控制传i!S块640。在块640处,地址可被产生并^AJt缓冲器
21(块640)。接着控制传皿菱形642,在该菱形处确^作是否无冲突。如果 是,控制传輕块675,如上所述。如果操作不是无冲突的,下一步顺定片 缓冲器中的一个或多个地址是否访问同一例如高速缓存线的存储器线路(菱形 645)。如果是这样,可产生一个或多个压縮的无冲突片(块650)。因此,这些 片可被发,相应的存储器以执行操作(块675 )。
如果相反地,在菱形645处确定地址不访问同一存储器线路,那么控制可 传,块660。在块660处,可产生无冲突片(块660)。例如,可根据本文所 述的不同实施例产生一个或多个片。最后,在产生这种无冲突片之后,它们可 被樹共给相应的存储器以执行操作(块675)。尽管以图9中的实施例中的该 特定实施方式进行了描述,但应当理解的是本发明的范围不限于此,并且执行 矢識作的其它方法可舰行。
这些实施例可以在许多不同的系统类型中实现。现在参照图10,示出根 据本发明实施例的系统的框图。如图10所示,点对点互连系统包括ffl31点对 点互连750连接的第一处理器770和第二处理器780。如图10所示,处理器770 和780的每一个都可以是包括第一和第二处理器核(gp,处理器核774a和774b 以及处理器核784a和784b)的多核处理器。第一处理器770还包括存储控制 ,线器(MCH) 772和点对点(P-P)接口 776和778。类似地,第二处理器 780包括MCH 782和P-P接口786和788。如图10所示,MCH的772和782 将处理器连接至各自的存储器,即存储器732和存储器734,其可以是本地连 接至各自的处理器的主存储器的部分。
第一处理器770和第二处理器780可分别ilil 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日 出版的Jcce/eratei O—/cs1尸抓/"te^&ce ,c^c加'o", 2 0 。可替代地,
点对点互连739可连接这些组件。
然后,芯片组790可通过接口 796连接至第一总线716。在一个实施例中, 第一总线716可以歡卜设部件互连(PCI)总线,如由日期为1995年6月的/C/ Loca/ 5u? S/?ec折carto/1,尸rocfwcft'ow Kra/ow, ifevisw" 所定义的PCI忌、线,或者第一总线716可以是诸如PCI E邓ress总线的总线或另一种第三代输A/输出
(I/O)互连总线,尽管本发明的范围不限于此。
如图10所示,不同的I/O设备714可与将第一总线716连接至第二总线720 的总线桥718 —起连接至第一总线716。在一个实施例中,第二总线720可以 ^f氐管脚数(LPC)总线。在一个实施例中,不同的设备可连接至第二总线720, 这些设备包括例如,鼠标722、通信设备726和可包括代码730的繊存储 单元728。财卜,音频1/0724可连接至第二总线720。
这些实施例可以以代码方式被实施并可以存储在其上存储有指令的存储介 质上,其可用于为系统编程以执行这些指令。该存储介质可包括,但不限于, 任何类型的盘,该盘包括软盘、光盘、光盘只11#储器(CD—ROM)、可重写 光盘(CR—RW)和磁光盘、例如只餘储器(ROM)、例如动态随机访问存 储器(DRAM)、静态随机访问存储器(SRAM)的随机访问存储器(RAM)、 可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器
(EEPROM)、磁或光卡的半导体设备或者适合于存储电子指令的任何其它类 型的介质。
尽管已经根据有限数量的实施例描述了本发明,但是本领域技术人员可以 理解对其的多种修改和变化。其意图在于,附加的权利要求覆盖落入本发明 的真正的精神和范围之内的所有这种修改和变化。
23
标题 发布/更新时间 阅读量
些实施例中,道路标志被生成为具有与所标识位导航应用程序 置处的道路标志相关联的纹理和外貌的复合纹 2020-05-12 189
例如为仿人机器人的机器与人类对话者之间的对话方法,实施这种方法的电脑程序产品和仿人机器人 2020-05-12 809
无菌液体纸板包装中具有切割箔纸并折向内部的装置的螺纹盖子实施例 2020-05-12 92
基于大数据撰写实施例的方法及装置 2020-05-11 80
高速接收器电路和方法 2020-05-13 61
有效的卷积Turbo码编码器和方法 2020-05-13 739
用于生产带有空气输送器的同心芯烟丝条制造机的设备、系统及方法的各种实施例 2020-05-12 933
用于经实施例化的几何结构的更有效的光线跟踪方法和装置 2020-05-11 238
一种信息安全评估的实施用例的生成方法 2020-05-11 961
用于在网络节点中实施多个标签分发协议(LDP)实例的系统和方法 2020-05-12 779
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈