用于执行交叉积指令的处理器和方法

文档序号:6610799阅读:141来源:国知局
专利名称:用于执行交叉积指令的处理器和方法
技术领域
本发明一般涉及图像处理的领域,特别是涉及支持图像处理的矢 量单元。
背景技术
从三维场景呈现二维图像的处理一般被称为图像处理。图像处理 的特定目标是要尽可能逼真地进行二维模拟或呈现三维场景。这种对 呈现更逼真的场景的追求导致了更加复杂的图像和新型的复杂图像处 理方法。
代表三维场景的二维图像一般显示于监视器或一些类型的显示屏 上。当代的监视器通过使用像素显示图像。像素是监视器上可被照亮 的最小空间区域。最新的计算机监视器使用几十万或几百万像素的组 合以构成整个显示或呈现的场景。各单个像素被配置在网格图案中, 并共同覆盖监视器的整个观看区域。各单个像素可被照亮以呈现最终 的观看用图片。
一种使用像素将真实世界三维场景呈现到二维监视器上的方法被 称为光栅化。光栅化是采取以矢量格式(场景内的几何对象的数学表 示法)表现的二维图像并将图像转换成单个像素用于在监视器上显示 的过程。光栅化在迅速呈现图形和使用相对较低的量的计算能力方面
是有效的;但是,光栅化存在一些缺点。例如,由于光栅化不是基于 光的物理性能,而是基于投影到二维平面上的场景中的三维几何对象 的形状,因此它常缺少真实感.并且,用光栅化呈现场景所需要的计 算能力直接随要被呈现的场景中的对象的复杂性增加按比例增加.随 着图像处理变得更逼真,呈现的场景变得更复杂。因此,由于光栅化 直接随复杂性按比例增加,因此随着图像处理发展光栅化处于不利地位。另一种使用像素将真实世界三维场景呈现到二维监视器上的方法 被称为射线跟踪。射线跟踪技术将呈现与光线类似的假想的射线的传 播描绘到要被呈现到计算机屏幕上的三维场景中.射线源自坐在计算 机屏幕后的观看者的眼睛并通过构成计算机屏幕的像素向三维场景行 进。各被跟踪的射线进入场景中并且会与场景内的对象相交。如果射 线与场景内的对象相交,那么对象的性能和几种其它的起作用的因素, 例如,光源的影响,被用于计算暴露于射线的颜色和光的量或它们的 缺乏。这些计算然后被用于确定跟踪的射线穿过的像素的最后颜色。跟踪射线的过程对于单一场景被实施许多次。例如,单一射线可 对于显示中的各个像素被跟踪。 一旦足够数量的射线已被跟踪以确定 构成计算机屏幕的二维显示的全部像素中的颜色,三维场景的二维合 成就可在计算机屏幕上显示给观看者。射线跟踪一般比光栅化更真实地呈现真实世界三维场景。这部分由于这样一种事实射线跟踪模拟光在真实世界环境中如何行进和表 现,而不是如光栅化那样简单地将三维形状投影到二维平面上。因此, 使用射线跟踪呈现的图形更精确地在监视器上描绘我们的眼睛在真实 世界中习惯看到的。并且,射线跟踪还比光栅化更好地处理增加的场景复杂性。射线 跟踪随着场景复杂性以对数增加。这是由于,即使场景变得更复杂, 相同数量的射线也会投射到场景中。因此,射线跟踪不象光栅化那样 随着场景变得更复杂在计算能力需要方面处于不利地位。但是,射线跟踪的一个主要缺点是大量的浮点计算,并由此增加 呈现场景所需要的处理能力。当需要快速呈现时,例如,当图像处理 系统要在诸如游戏控制台中呈现动画目的的图形时,这导致出现问题。 由于射线跟踪的增加的计算要求,因此难以呈现快到足以看起来逼真 的动画(逼真的动画大致为二十到二十四帧每秒).使用例如射线跟踪的图像处理可涉及执行矢量数学和标量数学两 方面.因此,对图像处理的硬件支持可包含被配置为执行各种计算的
矢量单元和标量单元。矢量和标量运算例如可跟踪穿过场景的光的路 径或移动三维场景内的对象。矢量单元可对与场景中的对象相关的矢
量执行例如点积和交叉积(cross product)的运算。标量单元可对标 量值执行例如加减乘除等的算术运算。
矢量单元和标量单元可被管线化(pipeline)以提高性能。但是, 执行矢量运算会涉及执行可相互依赖的多个指令的多次迭代。这种指 令之间的依赖性会降低管线化单元的效率。例如,为了使得第一指令 在第二指令的执行之前完成,几个管线级会被置于不用状态。
并且,图像处理计算会涉及矢量单元和标量单元之间的较强的相 互作用。由于现有技术实现可被独立发出并具有其各自的寄存器堆 (register file)的矢量单元和标量单元,因此在这些单元之间传送数 据通常是十分低效的。例如,标量单元会将来自存储器的数据加栽到 其相关的寄存器堆中以执行标量运算。计算的结果然后被存回存储器 中。随后,来自标量计算的结果可被加载到与矢量单元相关分开的寄 存器堆中以执行矢量运算。
用于在标量单元和矢量单元之间传送数据的送往和来自存储器的 数据的传送以及指令之间的依赖性会引入显著的使图像处理慢下来的 延迟,由此对呈现逼真图像和动画的能力造成不利影响。
因此,需要更有效的用于执行射线跟踪的方法、系统和制造的物

发明内容
本发明一般涉及图像处理的领域,特别是涉及支持图像处理的矢 量单元。
本发明的一个实施例提供一种一般包括第一矢量单元和第二矢量 单元的处理器.第一矢量单元和第二矢量单元一般分别包含多个被配
置为执行指令的处理通路,其中,第二矢量单元的一个或更多个处理 通路中的一个或更多个资源被第一矢量单元共享,以执行交叉积指令。
本发明的另一实施例提供一种用于执行交叉积指令的方法。该 法一般包括将表示矢量的操作数从寄存器堆传送到第一矢量单元的 第一组一个或更多个处理通路和第二矢量单元的一个或更多个处理通 路中;在第一矢量单元的第一组一个或更多个处理通路和第二矢量单 元一个或更多个处理通路这两者的每一个中,执行将一对操作数相乘 的乘法运算。该方法还包括将在第二矢量单元的一个或更多个处理 通路中计算的乘积传送到第一矢量单元的第二组一个或更多个处理通路中;和在第一矢量单元的第二组一个或更多个处理通路中完成交叉 积指令的执行。本发明的另一方面提供一种一般包括以可通信的方式相互耦合的 多个处理器的系统。各个处理器可一般包含第一矢量单元和第二矢量 单元。第一矢量单元和第二矢量单元一般可分别包含多个被配置为执 行指令的处理通路,其中,第二矢量单元的一个或更多个处理通路中 的一个或更多个资源被第一矢量单元共享,以执行交叉积指令。


因此,通过参照在附图中示出的本发明的实施例,可以具有获得并可详细理解本发明的上述特征、优点和目标的方式、以上简要概述的本发明的更特定的说明。但应注意,由于本发明可允许其它等同有效的实施例,因此附图只是示出本发明的典型实施例,并因此不被认为是对其范围的限制。 图1示出根据本发明的一个实施例的多核心处理元件。 图2示出根据本发明的实施例的多核心处理元件网络。 图3是根据本发明的一个实施例的通过图像处理系统呈现的示例性三维场景。图4示出根据本发明的实施例的要在屏幕上呈现的对象的详细视图.图5示出交叉积运算.图6示出根据本发明的实施例的寄存器.图7示出根据本发明的实施例的矢量单元和寄存器堆。
图8示出根据本发明的实施例的矢量单元的详细视图。 图9A示出根据本发明的实施例的用于执行交叉积运算的示例性 代码。
图9B示出执行图9A中的代码时的管线的延迟(stalling)。 图IO示出根据本发明的实施例的双矢量处理单元。 图11 (作为图11A和图11B在两页上示出)示出根据本发明的 实施例的被配置为执行交叉积运算的双矢量处理单元。
具体实施例方式
本发明一般涉及图像处理的领域,特别是涉及支持图像处理的矢 量单元。双矢量单元实现被说明,其中,两个矢量单元被配置为从共 用的寄存器堆接收数据。矢量单元可独立、同时处理指令。并且,矢 量单元可适于执行标量运算,由此在一个单元中集成矢量处理和标量 处理。对于一些实施例,矢量单元还可被配置为共享资源以执行例如 交叉积运算的单一运算。
以下参照本发明的实施例。但是,应当理解,本发明不限于特定 的说明的实施例。而是,以下特征和要素的任意组合,不管是否涉及 不同的实施例,都被设想为实现和实践本发明。并且,在各种实施例 中,本发明提供大量优于现有技术的优点。但是,虽然本发明的实施 例可实现优于其它可能的方案和/或优于现有技术的优点,但特定的优 点是否由给定的实施例实现不是对本发明的限制。因此,以下的方面、 特征、实施例和优点仅是解释性的,并且,除非在权利要求中明确说 明,不被认为是所附的权利要求的要素或限制。类似地,提到的"本发 明,,不应被解释为这里公开的任何发明主题的概括,并且,除非在权利 要求中明确说明,不应被认为是所附的权利要求的要素或限制。
示例性的处理器布局和通信网络
图1示出可实现本发明的实施例的示例性多核心(core)处理元 件100.多核心处理元件100包含多个基本吞吐量引擎(throughput engine) 105 (BTE) . BTE 105可包含多个处理线程和核心高速緩存 (例如,Ll高速緩存)。位于各BTE内的处理线程可以访问共享的 多核心处理元件高速緩存110 (例如,L2高速緩存)。BTE 105还可访问多个进入箱(inbox) 115.进入箱115可以是 存储器映射的地址空间。进入箱115可被映射到位于BTE 105中的每 一个内的处理线程。位于BTE内的各个线程可具有存储器映射的进入 箱并可访问所有的其它的存储器映射的进入箱115。进入箱115构成 由BTE105使用的低延迟和高带宽通信网络。BTE可使用进入箱115作为网络以相互通信并在BTE中重新分 配数据处理工作。对于一些实施例,各单独的发出箱可被用于通信网 络中,以例如接收BTE105的处理结果。对于其它的实施例,进入箱 115也可用作发出箱,例如,使得一个BTE 105将处理功能的结果直 接写入将使用这些结果的另一BTE 105的进入箱。图像处理系统的聚合性能可与BTE分割和重新分配工作的性能 好坏相关。进入箱115的网络可被用于在不破坏具有没有帧间相干性 的BTE通信数据包的共享的多核心处理元件高速緩存110的情况下收 集工作并将其分配给其它BTE。可每帧呈现几百万个三角形的图像处 理系统可包含许多以这种方式连接的BTE 105。在本发明的一个实施例中, 一个BTE 105的线程可被分配给工作 负荷管理器。图像处理系统可使用各种软件和硬件部件以从三维场景 呈现二维图像。根据本发明的一个实施例,图像处理系统可使用工作 负荷管理器以用由图像处理系统发出的射线穿过空间索引。空间索引 可被实现为用于将相对较大的三维场景分割成较小的限界体积 (bounding volume )的树型数据结构。使用图像处理的射线跟踪技术 的图像处理系统可使用空间索引以迅速确定射线-限界体积交点。在 本发明的一个实施例中,工作负荷管理器可通过使用空间索引执行射 线-限界体积相交试验。在本发明的一个实施例中,多核心处理元件IOO上的多核心处理 元件BTE 105的其它线程可以是矢量吞吐量引擎.在工作负荷管理器 确定射线—限界体积交点后,工作负荷管理器可通过进入箱115向多
个矢量呑吐量引擎中的一个发出(发送)射线。矢量吞吐量引擎可然 后确定射线是否与包含于限界体积内的基元相交。矢量呑吐量引擎还 可执行与确定射线穿过的像素的颜色有关的运算。
图2示出根据本发明的一个实施例的多核心处理元件200的网络。 图2还示出本发明的多核心处理元件100的BTE中的一个的线程是工 作负荷管理器205的实施例。根据本发明的一个实施例,多核心处理 元件200的网络中的各多核心处理元件22(h-n可包含一个工作负荷管 理器205^。根据本发明的一个实施例,多核心处理元件200的网络 中的各处理器220还可包含多个矢量吞吐量引擎210。
根据本发明的一个实施例,工作负荷管理器220ln可使用高速急 线225以与其它工作负荷管理器22(h-n和/或其它多核心处理元件220 的矢量吞吐量引擎210通信。矢量吞吐量引擎210中的每一个可使用 高速总线225以与其它矢量吞吐量引擎210或工作负荷管理器205通 信。工作负荷管理器处理器205可使用高速总线225以收集图像处理 相关的任务并将其分配给其它的工作负荷管理器处理器205,并/或将 任务分配给其它矢量呑吐量引擎210。高速总线225的使用可允许工 作负荷管理器205^在不影响高速緩存230的情况下与与工作负荷管 理器205通信有关的数据包通信。
示例性三维场景
图3是要通过图像处理系统呈现的示例性三维场景305。在三维 场景305内可以是对象320。图3中的对象320具有不同的几何形状。 虽然在图3中只示出四个对象320,但典型的三维场景中的对象的数 量可以更多或更少。 一般地,三维场景将具有比图3中示出的多的对 象。
从图3可以看出,对象具有不同的几何形状和尺寸。例如,图3 中的一个对象是角锥320A.图3中的其它对象是箱体320B-D.在许多 当代的图像处理系统中,对象常分成更小的几何形状(例如,正方形、 圃形、三角形等),较大的对象从而由大量的较小的简单几何形状表 示。这些较小的几何形状常被称为基元。
在场景305中还示出光源325A_B。光源可照亮位于场景305内的 对象320。并且,根据场景305内的光源325和对象320的位置,光 源可导致阴影被投射到场景305内的对象上。三维场景305可通过图像处理系统呈现为二维图片。图像处理系 统还可导致二维图片显示于监视器310上。监视器310可使用不同颜 色的许多像素330以呈现最终的二维图片 一种由图像处理系统使用、用于将三维场景320呈现为二维图片 的方法被称为射线跟踪。射线跟踪由图像处理系统从观看者315的角 度将射线"发出"或"射出,,到三维场景320中实现。射线具有与光线类 似的性能和表现。在图3中可看出源自观看者315的位置并穿过三维场景305的一 个射线340。随着射线340从观看者315向三维场景305行进,射线 340穿过将由图像处理系统呈现的最终的二维图片的平面。在图3中, 该平面由监视器310表示。射线340穿过平面或监视器310的点由像 素335表示。如上面简要讨论的那样,大多数图像处理系统使用像素的数以千 计(如果不是以百万计的话)的网格330以在监视器310上呈现最终 的场景。各单个像素可显示不同的颜色以在监视器310上呈现最终的 合成的二维图片。使用射线跟踪图像处理方法以从三维场景呈现二维 图片的图像处理系统将计算发出的射线或多个射线在三维场景中遇到 的颜色。图像处理场景然后将射线遇到的颜色分配给射线在其从观看 者到三维场景的路径上穿过的像素。每个像素发出的射线的数量可以变化。 一些像素可使得对于要被 呈现的特定场景发出许多射线。在这种情况下,像素的最终颜色由来 自为该像素发出的所有射线的各颜色贡献确定。其它像素可仅具有为 确定二维图片中的得到的像素颜色发出的单一射线. 一些像素可能没 有任何由图像处理系统发出的射线,在这种情况下,它们的颜色可通 过图像处理系统内的算法被确定、近似或分配。为了确定二维图片中的像素335的最终颜色,图像处理系统必须
确定射线340是否与场景内的对象相交。如果射线不与场景内的对象 相交,那么它会被分配缺省背景颜色(例如,代表白天或夜空的蓝色 或黑色)。相反,随着射线340穿过三维场景,射线340可照射到对 象上。如果射线照射到场景内的对象上,那么对象的颜色会被分配射 线穿过的像素。但是,对象的颜色必须在其被分配给像素之前被确定。
许多因素会对由原始射线340照射的对象的颜色有贡献。例如, 三维场景内的光源可照亮对象。并且,对象的物理性能会对对象的颜 色有贡献。例如,如果对象是反射性的或透明的,那么其它非光源对 象从而会对对象的颜色有贡献。
为了确定来自三维场景内的其它对象的影响,可以从原始射线 340与对象相交的点发出二次射线。例如, 一种类型的二次射线可以 是阴影射线。阴影射线可被用于确定光对原始射线340与对象相交的 点的贡献。另一种类型的二次射线可以是透射射线。透射射线可被用 于确定什么颜色或光可透过对象的本体。并且,第三种类型的二次射 线可以是反射射线。反射射线可被用于确定什么颜色或光被反射到对 象上。
如上所述, 一种类型的二次射线可以是阴影射线。各阴影射线可 从原始射线和对象的交点被跟踪到三维场景305内的光源.如果射线 在在射线到达光源之前没有遇到另 一对象的情况下到达光源,那么光 源将在原始射线照射到对象上的点上照亮由原始射线照射的对象。
例如,阴影射线34U可从原始射线340与对象320a相交的点上 被发出,并可沿向着光源325a的方向行迸。阴影射线34lA在没有遇 到场景305内的任何其它对象320的情况下到达光源325A。因此,光 源325A将在原始射线340与对象320A相交的点上照亮对象320A。
其它阴影射线可在原始射线照射对象的点和被三维场景内的另一 对象阻挡的光源之间具有它们的路径.如果阻挡原始射线照射的对象 上的点和光源之间的路径的对象是不透明的,那么光源将不在原始射 线照射对象的点上照亮对象.因此,光源不会对原始射线的颜色有贡 献,因此也不对要在二维图片中呈现的像素的颜色有贡献.但是,如
果对象是半透明或透明的,那么光源可在原始射线照射对象的点上照 亮对象。例如,阴影射线34lB可从原始射线340与对象320a相交的点上 被发出,并可沿向着光源325b的方向行迸。在本例子中,阴影射线 34lB的路径被对象320d阻档。如果对象320d是不透明的,那么光源 325b将不在原始射幾340与对象320A相交的点上照亮对象320A。但 是,如果阴影射线照射的对象320D是半透明或透明的,那么光源325B 可在原始射线340与对象32(U相交的点上照亮对象320A。另一种类型的二次射线是透射射线。如果与原始射线相交的对象 具有透明或半透镜性能(例如,玻璃),那么透射射线可由图像处理 系统发出。透射射线相对于原始射线照射对象的角度以某一角度穿过 对象。例如,透射射线344被观察到穿过与原始射线340相交的对象 320A。另一种类型的二次射线是反射射线。如果与原始射线相交的对象 具有反射性能(例如,金属抛光面),那么反射射线将由图像处理系 统发出以确定什么颜色或光可被对象反射。反射射线相对于原始射线 与对象相交的角度以某一角度远离对象。例如,反射射线343可由图 像处理系统发出以确定什么颜色或光可被与原始射线340相交的对象 320a反射。所有二次射线(例如,阴影射线、透射射线、反射射线等)的颜 色和光的总贡献将导致原始射线穿过的像素的最终颜色。 矢量运算处理图像可涉及执行一个或更多个矢量运算以确定例如射线和对 象的相交、阴影射线和反射射线等的产生。 一种在图像处理中执行的 常用(common)的运算是两个矢量之间的交叉积运算。交叉积可被 执行以确定例如三维场景中的对象的基元的表面的表面的法向矢量. 法向矢量可指示对象的表面对于观看者是否是可见的。如上所述,场景中的各对象可由相互连接以形成对象的形状的多 个基元表示。例如,在一个实施例中,各对象可由多个互连的三角形
构成。图4示出由多个三角形410构成的示例性对象400。对象400 可以是由图4中的多个三角形410形成的球形对象。出于解释目的, 粗糙的球形对象被示出。本领域技术人员可以认识到,对象400的表 面可由更多数量的更小的三角形410形成以更好地近似曲面对象。
在本发明的一个实施例中,各三角形410的表面法线可被计算以 确定三角形的表面对于观看者450是否是可见的。为了确定各三角形 的表面法线,可在代表三角形的两个边的两个矢量之间执行交叉积运 算。例如,三角形410a的表面法线413可通过在矢量411a和411b 之间执行交叉积被算出。
法向矢量可确定表面,例如基元的表面,是否面对观看者。参照 图4,法向矢量413指向观看者450。因此,三角形410可被显示给用 户。另一方面,三角形410b的法向矢量415指向背离观看者450。因 此,三角形410b不会被显示给用户。
图5示出两个矢量A和B之间的交叉积运算。如图所示,矢量A 可由坐标[Xa, ya, Zal表示,矢量B可由坐标[Xb, yb, Zbl表示。交叉积AXB 导致与包含矢量A和B的平面垂直(正交)的矢量N。法向矢量的坐 标如示出的那样为[(yaZb-ybZa), (xbza-xazb), (xayb-xbya)。本领域技术人 可以认识到,矢量A可与图4中的矢量411a对应,矢量B可与矢量 411b对应,而矢量N可与法向矢量413对应。
另 一种在图像处理中执行的常用的矢量运算是点积运算。点积运 算可被执行以确定场景中的对象的旋转、移动、定位等。点积运算产 生不依赖于坐标系统的标量值并表示欧几里得空间的内积。下式说明 在前面说明的矢量A和B之间执行的点积运算
执行矢量运算的硬件支持
如上所述,矢量吞吐量引擎(VTE),例如图2中的VTE210, 可执行运算以确定射线是否与基元相交,并确定射线穿过的像素的颜 色.执行的运算可包含多个矢量和标量运算,因此,VTE210可被配 置为向矢量单元发出指令执行矢量运算。
矢量处理可涉及发出一个或更多个矢量指令。矢量指令可被配置 为执行涉及第一寄存器中的一个或更多个操作数和第二寄存器中的一 个或更多个操作数的运算。第一寄存器和第二寄存器可以是与矢量单元相关的寄存器堆的一部分。图6示出包含一个或更多个操作数的示 例性寄存器600。如图6所示,寄存器堆中的各寄存器可包含多个部 分,其中各个部分包含操作数。在图6示出的实施例中,寄存器600被示为128位寄存器。如图 所示,寄存器600可被分成四个32位字(word)部分字0、字1、 字2和字3。如图所示,字0可包含位0~31,字1可包含位32 63, 字,2可包含位64~97,字3可包含位98~127。但是,本领域技术人 员可以认识到,寄存器600可以具有任意合理的长度,并可包含任意 数量的任意合理长度的部分。寄存器600中的各个部分可包含矢量运算的操作数。例如,寄存 器600可包含例如图5的矢量A的矢量的坐标和数据。因此,字O可包含坐标Xa,字l可包含坐标ya,字2可包含坐标Za。字3可包含与与矢量有关的基元有关的数据,例如,颜色和透明度等。在一个实施 例中,字3可被用于存储标量值。标量值可以与包含于字0~2中的矢 量坐标有关或无关。图7示出示例性的矢量单元700和相关的寄存器堆710。矢量单 元700可被配置为执行单一指令多数据(SIMD)指令。换句话说, 矢量单元700可对一个或更多个矢量执行运算以产生单一标量或矢量 结果。例如,矢量单元700可对包含一个或更多个矢量的数据元素执 行并行运算,以产生标量或矢量结果。在矢量单元上或通过矢量单元运算的多个矢量可被存储在寄存器 堆710中。例如,在图7中,寄存器堆710提供32个128位寄存器 711 (R0~R31) 每一个寄存器711中可以以与图6的寄存器600类 似的方式被组建.因此,各寄存器711可包含矢量数据,例如,矢量 坐标、像素数据和透明度等。通过使用加栽和存储指令,数据可在寄 存器堆710和例如高速緩存存储器的存储器之间被交换,因此,寄存
器堆710可以以可通信的方式与例如动态随机存取存储器(DRAM ) 装置的存储器装置耦合。多个通路(lane)可将寄存器堆710连接到矢量单元700上。各 通路可被配置为从寄存器堆向矢量单元提供输入。例如,在图7中, 三个128位通路将寄存器堆连接到矢量单元700上。因此,来自寄存 器堆710的任意3个寄存器的内容可在某一时刻被提供给矢量单元。由矢量单元计算的运算的结果可被回写到寄存器堆710中。例如, 128位通路721提供将由矢量单元700计算的结果回写到寄存器堆710 的寄存器711中的任一个中的回写路径。图8示出矢量单元800的详细示图。矢量单元800是在图7中示 出的矢量单元700的实施例。如图8所示,矢量单元800可包含多个 处理通路。例如,在图8中示出三个处理通路810、 820和830。各处 理通路可被配置为与一个或更多个其它处理通路并行执行运算。例如, 各处理通路可将一对操作数相乘以执行交叉积或点积运算。通过在矢 量单元的不同处理通路中将各对不同的操作数相乘,可以更快、更有 效地执行矢量运算。各处理通路可被管线化以进一步提高性能。因此,各处理通路可 包含用于对操作数执行一个或更多个运算的多个管线级。例如,各个 矢量通路可包含用于将一对操作数830和831相乘的乘法器851。操 作数830和831可从将寄存器堆与矢量单元耦合的通路中的一个、例 如图7中的通路720得出。在本发明的一个实施例中,可在图8中所 示的管线的第一级中执行操作数的乘法。各处理通路还可包含用于对由乘法器851计算的乘积调對align ) 的调整器(aligner)。例如,调整器852可被设置在每一处理通路中。 调整器852可被配置为在结果中将由乘法器851计算的乘积的小数点 调整到希望的位置.例如,调整器852可被配置为将由乘法器851计 算的乘积的位移动一个或更多个位置,由此使乘积处于希望的格式。 虽然调整在图8中被示为单独的管线级,但本领域技术人员可以认识 到,乘法和调整可在同一管线级中被执行.
各个处理通路还可包含用于加上两个或更多个操作数的加法器
853。在一个实施例中(在图8中示出),各加法器853被配置为接收 由乘法器计算的乘积,并将乘积加到另一操作数832上。操作数832, 与操作数830和831类似,可从将寄存器堆连接到矢量单元上的通路 中的一个得到。因此,各处理通路可被配置为执行乘法-加法指令。 本领域技术人员可以认识到,乘法-加法指令在矢量运算中被频繁执 行。因此,通过在并行的通路中执行几个乘法加法指令,可以大大提 高矢量处理的效率。
如图8所示,各矢量处理通路还可包含规范化级和舍入级。因此, 规范器854可在各处理通路中被设置。规范器854可被配置为以方便 的指数格式表示计算的值。例如,规范器可接收作为运算的结果的值 0.0000063。规范器854可将该值转换成更合适的指数格式,例如 6.3xl(T6。舍入级可涉及将计算的值舍入到希望的小数点位数。例如, 如果只希望在结果中有三个小数位,那么计算的值10.5682349可被舍 入为10.568。在本发明的一个实施例中,舍入器可对舍入器被设计对 其使用的特定精度浮点数的低位进行舍入。
本领域技术人员将认识到,本发明的实施例不限于上面以及在图 8中说明的特定的管线级、部件和部件的配置。例如,在一些实施例 中,调整器852可被配置为对操作数832、由乘法器计算的乘积或这 两者进行调整。并且,本发明的实施例不限于在图8中说明的特定部 件。在各处理通路中可包含示出的部件和诸如但不限于前导零加法器、 除法器等的附加部件的任意组合。
用单一矢量单元执行交叉积
通过使用例如矢量单元800的矢量单元执行交叉积运算可涉及多 个指令。例如,重新参照图5,交叉积运算需要六个乘法运算和三个 减法运算.由于矢量单元800包含具有三个乘法器的三个处理通路, 因此执行交叉积运算可涉及多个指令.
图9A示出用于通过向矢量单元发出多个指令执行交叉积运算的 示例性指令.执行交叉积运算可涉及发出多个改序(permute)指令200710127188.6
说明书第15/19页
901.改序指令可被配置为将用于执行交叉积运算的操作数移动到寄存 器堆的希望的寄存器中的希望的位置中。例如,改序运算可将数据从
第一寄存器传送到第二寄存器。改序指令还可选择用于将数据从一个 寄存器传送到另一个寄存器的特定的位置,例如,特定的字位置(参 见图6)。在一个实施例中,改序指令可重新配置同一寄存器内的数 据元素的位置。
一旦操作数处于希望的寄存器中的希望的位置中,第一指令902 就可被发出以执行第一组乘法运算。第一组乘法运算可执行执行交叉 积运算所需要的6个乘法运算中的一个或更多个。例如,在一个实施 例中,第一组乘法运算可执行六个乘法运算中的三个。乘法运算可在 矢量单元的三个处理通路中的每一个中被执行。第一组乘法运算的结 果可被存回寄存器堆的一个或更多个寄存器中。
随后,第二指令903可被发出,以执行第二组乘法运算。第二组 乘法运算可执行没有在第一组乘法运算中执行的交叉积的剩余的乘法 运算。在一个实施例中,第二指令可涉及同时执行第二组乘法运算和 用于完成交叉积运算的减法运算。
例如,重新参照图8,操作数830和831可与用于执行第二组乘 法运算的操作数相关。可从第一组乘法运算的结果减去第二组乘法运 算的结果,或者反之亦然。第一组乘法运算的结果可例如通过图8的 操作数832作为加法器853的输入被提供以执行减法运算。
如上所述,由矢量单元执行的指令可被管线化。由于在改序指令 901、第一乘法指令902和笫二乘法指令903之间会存在依赖性,因此 一个或更多个管线级可被延迟。例如,第一乘法指令在操作数被传送 到适当的寄存器中的适当的位置之前不会被执行。因此,第一乘法指 令在改序指令完成之前不会被执行,由此需要管线延迟。类似地,由 于第二乘法指令会利用第一乘法指令的结果,因此第二乘法指令在第 一乘法指令完成之前不会被执行,由此在第一乘法指令和第二乘法指 令之间需要管线延迟.
图9B示出图9A中示出的交叉积指令之间的管线的延迟.如图9B所示,执行交叉积可从执行改序指令901开始,如图所示,执行改 序指令901可涉及第一乘法指令902的延迟执行。延迟的级在图9B 中以虚线框被示出。第一乘法指令的延迟可被执行以允许用于第一乘 法运算的操作数被适当地位于适当的寄存器中。图9B还示出第一乘法指令902和第二乘法指令903之间的管线 的延迟。第一乘法指令和第二乘法指令之间的管线的延迟可被执行以 允许第一乘法指令的结果对第二乘法指令可用。因此,如图9B所示, 第二乘法指令在第一乘法指令的舍入级完成之前不会进入管线中。双矢量单元实现在本发明的一个实施例中,双矢量单元可被实现以改进矢量指令 的处理。因此,两个独立的矢量单元可被提供,两个矢量单元可访问 同一寄存器堆。并且,双矢量单元可包含标量处理通路,由此集成矢 量和标量指令的处理。图IO示出根据本发明的实施例的双矢量单元。如图10所示,双 矢量单元可包含第一矢量单元1010和第二矢量单元1020。各矢量单 元可被配置为通过将寄存器堆1030耦合到矢量单元1010和1020上的 一个或更多个通路从同一寄存器堆1030的一个或更多个寄存器接收 数据。例如,三个通路1011将寄存器堆与矢量单元1011耦合,并且 三个通路1021将寄存器堆与矢量单元1020耦合。通路1011和1021可与图7中的将寄存器堆710与矢量单元700 耦合的通路720类似。在本发明的一个实施例中,通路1011和1021 可以为128位宽,以从寄存器堆1030中的128位宽寄存器分别向矢量 单元1010和1020提供数据,本领域技术人员将认识到,将矢量单元 耦合到寄存器堆上的通路的数量不是对本发明的限制。任何合理的数 量的通路可被提供以将各矢量单元与寄存器堆耦合。并且, 一个矢量 单元不需要具有与其它矢量单元数量相同的通路.图10所示的实施例的一个优点在于,多个矢量单元可在不复杂并 且不用于为各个矢量单元增加更多个的寄存器堆消耗附加空间的情况 下被实现。寄存器堆1030可以以与图7中的寄存器堆710类似的方式
被配置,并可具有被配置为存储矢量和标量数据的多个寄存器.另外,寄存器堆1030可被配置为同时通过例如通路1011和1021 向矢量单元1010和1020发出指令.例如,笫一指令可被发给矢量单 元IOIO,并且第二指令可被独立地发给矢量单元1020,由此允许两个 单独的指令被并行处理。通过并行处理指令,可以大大提高性能。寄存器堆还可包含一个或更多个写入端口 1031。写入端口 1031 可被配置从矢量单元1010和1020中的每一个接收结果,并将结果存 储在寄存器堆中的寄存器中。在本发明的一个实施例中,写入端口可 同时将数据写入寄存器堆中的不同寄存器中。但是,两个或更多个写 入端口不会同时将数据写入寄存器堆中的同一寄存器中。寄存器堆1030还可包含用于与存储器交换数据的读取端口 1032 和写入端口 1033。例如,来自寄存器堆1030中的寄存器的数据可通 过加载和存储指令通过端口 1032和1033与存储器交换。图10中所示的双矢量单元的另一优点在于,除了矢量处理通路以 外,各矢量单元还包含标量处理通路。例如,矢量单元1010包含三个 矢量处理通路1013和覆盖标量处理通路1012。类似地,矢量单元1020 包含三个矢量处理通路1023和覆盖标量处理通路1022。各标量通路 1012和1022可被配置为执行标量运算。因此,矢量和标量运算可被 并行执行。例如,标量指令可被发给矢量单元1010,并且矢量指令可被发给 矢量单元1020。假如在这些指令之间不存在依赖性,那么矢量和标量 运算可被并行执行。标量运算可在矢量单元1010的标量通路1012中 被执行,并且,矢量运算可在矢量单元1020的矢量处理通路1023中 被执行。但是,更一般地,矢量和标量指令的任意组合可被独立地发 给矢量单元1010和1020,由此提高性能。并且,通过允许矢量单元执行标量运算,在矢量单元和标量单元 之间传送数据的低效率被避免.如上所述,现有技术需要使用存储器 作为用于在矢量单元和标量单元之间交换数据的介质.与存储器的数 据交换可能是非常低效的.通过允许标量数据和矢量数据在寄存器堆 中对被配置为处理标量指令的矢量单元可用,实现单独的标量和矢量 单元的低效率被避免。用双矢量单元执行交叉积在本发明的一个实施例中, 一个矢量单元的一个或更多个资源可 与执行例如交叉积或点积运算的矢量运算的第二矢量单元共享。因此, 来自 一个矢量单元的一个或更多个处理通路或元素可被另 一矢量单元 利用以执行运算。如上所述,用单一矢量单元执行交叉积运算会需要多个改序和乘 法指令。并且在执行多个指令的管线中会出现多个延迟,由此影响性 能。双矢量单元的一个优点在于,通过在两个矢量单元之间共享资源, 可以允许单一指令执行例如交叉积运算的矢量运算。因此可大大减少 指令的数量和相关的指令之间浪费的延迟周期。例如,图9A中的第一乘法指令902和第二乘法指令卯3可由单 一交叉积指令代替。由于在双矢量单元八个乘法器是可用的,因此八 个乘法器中的六个可被用于在单一的周期中执行交叉积运算的所有乘 法。来自乘法器的结果可被发送到三个加法器用于执行减法运算。因 此,可以用单一的指令执行交叉积。图11 (作为图11A和图11B在两页中示出)示出执行交叉积运 算的双矢量单元之间的资源的共享。如图11所示,交叉积运算可在矢 量单元1110的处理通路1111 ~ 1114和矢量单元1120的处理通路 1121 ~ 1122中被执行。在本发明的一个实施例中,由于两个矢量单元 均被用于执行交叉积运算,因此寄存器堆可被配置为发出单一指令(而 不是成双和独立的指令)。在本发明的一个实施例中,由于标量通路 是在矢量单元1120中可用的,因此交叉积运算和标量运算可被同时执 行,由此允许在执行交叉积运算时发出成双的独立的指令。在本发明的一个实施例中,为了减少改序指令的数量和由改序指 令导致的延迟周期, 一个或更多个操作数复用器(mux) 1130可在乘 法器的输入上被提供.操作数复用器1130可被配置为选择通过将寄存 器堆连接到矢量单元1110和1120上的通路中的一个可用的操作数, 并将操作数提供给各乘法器的输入。如图11所示,矢量单元1110和1120中的乘法器可计算执行交叉 积运算必需的乘积。例如,矢量单元110的乘法器1141 ~ 1144和矢量 单元1120的乘法器1151 ~ 1152,分别计算乘积。由乘法器计算的乘 积可被发送给对乘积进行调整的三个调整器。例如,如图所示,来自 乘法器1141和1144的乘积被发送给调整器1161,来自乘法器1142 和1151的乘积被发送给调整器1162,并且来自乘法器1143和1152 的乘积被发送给调整器1163。例如多路复用器1171的多路复用器可 在各调整器的输入上被提供,以选择从不同处理通路中的乘法器接收 的乘积和在调整器的处理通路中接收的输入中的一个。然后可减去被调整的乘积。例如,加法器1181可减去通过调整器 1161调整的乘积,加法器1182可减去通过调整器1162调整的乘积, 加法器1163可减去通过调整器1163调整的乘积。由加法器1161 ~ 1163计算的差可被规范化并被舍入以提供交叉 积运算的结果(法向矢量)。例如,在一个实施例中,处理通路llll 可产生法向矢量的x坐标,处理通路1112可产生法向矢量的y结果, 处理通路1113可产生法向矢量的z结果。法向矢量可通过使用与矢量 单元1110相关的回写路径被存回寄存器堆中。本领域技术人员将认识到,图11中示出和上面说明的特定处理方 法不是对本发明的限制。更一般地,矢量单元110和1120中的可用乘 法器的任一个可被选择以对交叉积运算执行乘法。并且,由乘法器计 算的乘积可被发送给任何可用的调整器和加法器执行减法。因此,可 从矢量单元中的任何可用的处理通路得到交叉积的结果。结论通过实现被配置为在一些情况下独立地并行执行指令或者在另一 些情况下共享资源以执行诸如"大规模,,交叉积和点积的运算的双矢量 单元,图像处理变得效率更高,由此允许显示更逼真的图像和动画.虽然以上说明针对本发明的实施例,但在不背离本发明的基本范 围的情况下,可以设想本发明的其它和另外的实施例,并且其范围由 下面的权利要求确定.
权利要求
1.一种处理器,包括第一矢量单元;和第二矢量单元,其中,第一矢量单元和第二矢量单元分别包含多个被配置为执行指令的处理通路,并且,第二矢量单元的一个或更多个处理通路中的一个或更多个资源被第一矢量单元共享,以执行交叉积指令。
2. 根据权利要求1的处理器,还包括包含多个寄存器的寄存器堆, 所述多个寄存器被配置为存储矢量数据和标量数据。
3. 根据权利要求2的处理器,其中,第一矢量单元和第二矢量单 元以可通信的方式与寄存器堆耦合,并被配置为从寄存器堆中的多个 寄存器接收数据。
4. 根据权利要求3的处理器,其中,处理器还包含与处理通路中 的每一个相关的多路复用器,所述多路复用器被配置为从多个寄存器选择一个或更多个矢量操作数,并将选择的矢量操作数传送到相应处 理通路。
5. 根据权利要求2的处理器,其中,第一矢量单元和第二矢量单 元中的每一个包含被配置为将结果从矢量单元回写到寄存器堆中的回 写路径。
6. 根据权利要求l的处理器,其中,各矢量单元的多个处理通路 被配置为对多个矢量操作数并行执行多个运算以执行交叉积指令。
7. 根据权利要求6的处理器,其中,各处理通路包含一个或更多 个功能单元,每个功能单元被配置为执行所述多个运算中的一个运算。
8. 根据权利要求7的处理器,其中,功能单元包含乘法器、调整 器和加法器。
9. 根据权利要求8的处理器,其中, 一个或更多个共享的资源包 含第二矢量单元中的一个或更多个处理通路中的一个或更多个乘法 器。
10. 根据权利要求9的处理器,其中,来自一个或更多个乘法器 的乘积被传送到第一矢量单元的一个或更多个处理通路,所述第一矢 量的一个或更多个处理通路被配置为完成交叉积指令的执行。
11. 一种用于执行交叉积指令的方法,包括将表示矢量的多个操作数从寄存器堆传送到第 一矢量单元的第一 组一个或更多个处理通路和第二矢量单元的一个或更多个处理通路中;在第一矢量单元的第一组一个或更多个处理通路和第二矢量单元 一个或更多个处理通路这两者的每一个中,执行将一对操作数相乘的乘法运算;将在第二矢量单元的一个或更多个处理通路中计算的乘积传送到 第一矢量单元的第二组一个或更多个处理通路中;和在第一矢量单元的第二组一个或更多个处理通路中完成交叉积指 令的执行。
12. 根据权利要求ll的方法,其中,完成交叉积的执行包含在第 一矢量单元的第二组一个或更多个处理通路中执行一个或更多个减法 运算。
13. —种包括以可通信的方式相互耦合的多个处理器的系统,其 中,各个处理器包含第一矢量单元;和 第二矢量单元,其中,第一矢量单元和第二矢量单元分别包含多个被配置为执行 指令的处理通路,并且,笫二矢量单元的一个或更多个处理通路中的 一个或更多个资源被第一矢量单元共享,以执行交叉积指令。
14. 根据权利要求13的系统,还包括包含多个寄存器的寄存器堆, 所述多个寄存器被配置为存储矢量数据和标量数据。
15. 根据权利要求14的系统,其中,第一矢量单元和第二矢量单 元以可通信的方式与寄存器堆耦合,并被配置为从寄存器堆中的多个 寄存器接收数据。
16. 根据权利要求15的系统,其中,处理器还包含与处理通路中 的每一个相关的多路复用器,所述多路复用器被配置为从多个寄存器 选择一个或更多个矢量搮作数,并将选择的矢量操作数传送到相应处 理通路。
17. 根据权利要求14的系统,其中,笫一矢量单元和第二矢量单 元中的每一个包含被配置为将结果从矢量单元回写到寄存器堆中的回写路径。
18. 根据权利要求13的系统,其中,各矢量单元的多个处理通路 被配置为对多个矢量操作数并行执行多个运算以执行交叉积指令。
19. 根据权利要求18的系统,其中,各处理通路包含一个或更多 个功能单元,每个功能单元被配置为执行所述多个运算中的一个运算。
20. 根据权利要求19的系统,其中,功能单元包含乘法器、调整器和加法器o
21. 根据权利要求20的系统,其中, 一个或更多个共享的资源包 含第二矢量单元中的一个或更多个处理通路中的一个或更多个乘法 器。
22. 根据权利要求21的系统,其中,来自一个或更多个乘法器的 乘积被传送到第一矢量单元的一个或更多个处理通路,所述第一矢量 的一个或更多个处理通路被配置为完成交叉积指令的执行。
全文摘要
本发明一般涉及图像处理的领域,特别是涉及支持图像处理的矢量单元。双矢量单元实现被说明,其中,两个矢量单元被配置为从共用的寄存器堆接收数据。矢量单元可独立、同时处理指令。并且,矢量单元可适于执行标量运算,由此集成矢量处理和标量处理。矢量单元还可被配置为共享资源以执行例如交叉积运算的运算。
文档编号G06T1/20GK101154288SQ200710127188
公开日2008年4月2日 申请日期2007年7月4日 优先权日2006年9月28日
发明者亚当·J.·穆夫, 埃里克·O.·梅耶德里奇, 马修·R.·图布斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1