CN1130625C - 根据一条指令执行多次操作的方法和装置 - Google Patents
根据一条指令执行多次操作的方法和装置 Download PDFInfo
- Publication number
- CN1130625C CN1130625C CN97194625A CN97194625A CN1130625C CN 1130625 C CN1130625 C CN 1130625C CN 97194625 A CN97194625 A CN 97194625A CN 97194625 A CN97194625 A CN 97194625A CN 1130625 C CN1130625 C CN 1130625C
- Authority
- CN
- China
- Prior art keywords
- instruction
- risc processor
- special
- pixel
- set computer
- 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
Images
Classifications
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Abstract
本文介绍一种运行一个执行普通RISC(精简指令集计算机)指令和特殊RISC指令的RISC处理器的方法。该方法中的一个步骤是,控制RISC处理器根据每个普通RISC指令,用RISC处理器的一个功能单元执行一个操作(212)。该方法中另一个步骤是,控制RISC处理器根据每个特殊RISC指令,并行地用RISC处理器的多个功能单元执行多次操作(212)。该方法中再一个步骤是,控制RISC处理器重复地执行特殊操作,其中,执行第一次操作之后,随后的每一个操作都依赖前一个操作的结果。
Description
本发明总的来说涉及处理器,更具体地说,本发明涉及一种能够根据一条指令多次执行操作的处理器。
许多现代计算机系统,诸如图形工作站和个人计算机,都含有专用的图形子系统,用于在诸如阴极射线管(CRT)、等离子平面显示屏或液晶显示器(LCD)等显示器上再现二维或三维图形对象。图形子系统的使用能够提高系统性能,这是因为,图形操作一旦被计算机系统的主处理器控制,就能由图形子系统在主处理器执行其它操作的同时并行执行。此外,图形子系统经常配备专门的硬件和软件,一般能够更快地再现图形对象。
图形子系统本身能执行的图形处理的数量,在很大程度上决定了对系统性能和图形处理性能二者的提高程度。例如,有一种现有技术的图形子系统,它只含有一个帧缓冲存储器及相关的控制硬件,通用主处理器仍然必须执行大多数的图形处理功能。这种方法的效率很低,原因是主处理器必须向帧缓冲器传输较大数量的数据,而这阻碍了其它系统部件和子系统并行使用系统互连。另有一种现有技术的图形子系统,它所含的专用图形处理器与主处理器并行操作,执行所需的所有图形处理功能,但是这种方法对有些用户来说可能费用太高。
这就需要某种介乎这两种极端方法的平衡方法,用合理的代价来改善系统性能和图形处理性能。有人提出的系统要求主处理器执行某些初始的图形处理步骤,然后由图形控制器执行其余的图形处理步骤。这种分工能够减少主处理器与图形子系统之间交换的数据量,与现有技术的“哑”图形子系统相比,能改善系统的总体性能。为了提高图形处理性能,就要为图形控制器配备提高再现图形对象的速度的性能增强器件,但是应当以较低的费用来配备这类性能增强器件。
图形处理性能能够得到提高的一个领域是输出图形原语(outputprimitives)的插值(interpolation)。为了有效地存储图形数据,应用程序提供并使用代表图形对象的输出图形原语,其中,每个输出图形原语提供一个图形对象的完整数据能够被其蕴含或据其被插值(interpolated)的最小数据。例如,一种输出图形原语类型是三角形,它规定三个顶点的位置(在笛卡尔坐标系中,即x、y对)和属性(包括z和诸如r、g、b等颜色属性),三角形内每个点的位置和属性都能根据为这三个顶点提供的值而被插值。其它输出图形原语的类型包括点、直线、曲线、圆、三角形和其它多边形、三角条形和三角扇形。
用于填充多边形(例如三角形)区域的插值过程一般包含以下步骤:1)设置(setup);2)边缘延伸(edge walking);3)跨度生成(spangeneration)。在设置期间,根据输出图形原语的各顶点的象素参数值(例如位置和属性),计算每个象素参数的Δ值。这些Δ值然后被用于执行边缘延伸,通过递增Δ值计算多边形的非水平边界线(即斜率不为0的边界线)象素的象素参数。一旦多边形的各条边界线被确定,就进行跨度生成,计算多边形各边界线之间的水平扫描行中象素的象素参数。这样就能根据输出图形原语计算出多边形中每个象素的象素参数。跨度生成步骤特别适合于进行调整以改善性能。例如,跨度中每个象素的y值保持固定。
因此,本发明的一个目的是提高处理器的处理速度。
本发明的另一个目的是提高处理器在图形处理期间为内插(interpolate)一个输出图形原语而生成跨度的处理速度。
本发明的这些和其它目的,是用一种运行一个执行普通RISC(精简指令集计算机)指令和特殊RISC指令的RISC处理器的方法而达到的。该方法中的一个步骤是,根据每个普通RISC指令,控制RISC处理器用RISC处理器的单一功能单元执行单一操作。该方法中还有一个步骤是,根据每个特殊RISC指令,控制RISC处理器并行地用RISC处理器的多个功能单元执行多次操作。
根据一个实施例,一种特殊RISC指令是用于内插一个输出图形原语的画图指令,其中,RISC处理器处理一个象素的多个象素参数。RISC处理器通过使用多个功能单元,能有效地地并行执行多条普通RISC指令,从而提高内插一个输出图形原语时的处理速度。
根据另一个实施例,RISC处理器也能处理一种特殊的“重复”RISC指令,其中,RISC处理器被控制并行地用RISC处理器的多个功能单元重复地执行多次操作,其中,根据每个特殊重复RISC指令,执行第一次操作之后,随后的每一个操作都依赖前一个操作的结果。一种特殊的重复RISC指令是一种用于内插一个输出图形原语的重复画图指令,其中,RISC处理器根据该重复画图指令处理一个象素跨度内的一系列象素参数。重复画图指令可以用来以一条RISC指令生成整个跨度的象素。
本发明的其它目的、特点和优点,显见于各附图及以下的详细说明。
本发明在本文中通过举例被说明,并不局限于附图。附图中以类似的标记符号指示类似的成分,其中:
图1表示一个实施例的一个计算机系统。
图2表示一个实施例的一个图形子系统。
图3表示按照一个实施例,主处理器与图形子系统之间分工的流程图。
图4是表示一个实施例的一个RISC处理器的框图。
图5是表示按照现有技术执行一条普通RISC指令的流程图。
图6是表示按照一个实施例执行一条特殊的重复RISC指令的流程图。
图7表示按照一个实施例的一个特殊的重复RISC指令的格式。
图8表示一个实施例的数据通路。
图9表示执行重复画图指令时图8中数据通路的操作。
本文描述一种对跨度生成具有特别应用的精简指令集计算机(RISC)处理器体系结构。具体来说,所描述的RISC处理器体系结构支持一种特殊的“重复画图”指令,该指令能使一个画图操作在下一条指令被提取之前被重复一定次数,其中,执行第一次画图操作之后,每一个画图操作都依赖前一个画图操作的结果。RISC处理器根据一条指令执行多次操作,与处理一个要求执行相同次数的相同操作的指令序列相比,提高了处理速度。这种性能改善可以这样来理解,即这种“重复画图”指令只需提取一次,解码一次,就能执行全部所需的画图操作;而一个画图指令序列中的每一条画图指令一般都必须单独提取和解码。
其它优点在于对RISC处理器的数据通路的配置和操作的方式。例如,RISC处理器一般是作为通用处理器工作的,它含有若干个算术单元,诸如除法器、乘法器和算术逻辑单元(ALU),其中,普通指令定义一个要求用一个算术单元执行的操作。对于专用指令,例如“重复画图”指令,RISC处理器作为专用处理器工作,其中,专用指令定义了高效率地由若干个算术单元并行执行多个算术操作。控制和解码逻辑被设置成既支持通用指令又支持专用指令,使RISC处理器既能作为通用处理器工作,执行一般的算术和存储器操作,又能作为专用处理器工作,高效率地执行专门的操作。
“重复画图”指令,对于在填充一个由输出图形原语定义的多边形时生成跨度很有用,其原因是:1)一旦知道某扫描行上多边形边界线之间的距离,就可以预测需要执行的一系列画图操作序列的操作;2)跨度生成过程要求,扫描行上每个象素的象素参数,要按相同的Δ值集合递增。“重复”指令可以应用于指令流有合理程度的可预见性的其它场合。
图1表示的计算机系统10包括主处理器15和连接主总线25的主存储器20。主处理器15可以是例如任何商业性销售的微处理器。计算机系统10还包括外部总线30,在一个实施例中,它按照外围部件互连(PCI)本地总线标准操作。图形子系统35连接外部总线30,主-外部总线桥45连接外部总线30与主总线25,作为主总线与外部总线之间数据事务处理的桥梁。主-外部总线桥45也作为控制主存储器20的存储器控制器。也可以使用其它系统配置方案。
根据本实施例,主处理器15执行在主存储器20中存储的一个要求在显示器40上显示图形对象的应用程序(图中未予示出)。每个图形对象都根据由一个或多个输出图形原语组成的一个输出图形原语集合构成,其中每个输出图形原语包括一个数值集合,该集合规定或暗示该图形原语所代表的图形对象的显示方式和显示位置。输出图形原语的种类包括点、直线、曲线、圆、三角形或其它多边形、三角条形和三角扇形。
图形对象的位置和图形对象的成分图形原语最初是由应用程序按照被称为世界坐标空间(world coordinates)的笛卡尔参照系定义的。为了使图形对象能被显示,要求进行坐标转换,按照显示器的设备坐标空间(device coordinate space)来表示图形对象及其成分图形原语。一旦输出图形原语被转换到设备坐标系,输出图形原语就能被内插或作其它处理,以生成显示用象素值。
根据本实施例,主处理器15接受世界坐标系中的输出图形原语,将该输出图形原语转换到设备坐标,进行亮度效果处理,并将转换后的输出图形原语传输到图形子系统35,图形子系统内插输出图形原语,生成最终的显示用象素值。因为主处理器15并不进行实际的象素处理,所以总线传输信息量显著减少,并且主处理器就有时间执行其它任务。因此,与由主处理器执行大多数图形处理任务的系统相比,主处理器15与图形子系统35之间的这种分工能够显著地提高并行性。
图2表示的图形子系统35一般包含图形控制器50、EPROM 55、DRAM 60以及调色板/DAC 65。图形控制器50与外部总线30相连,从主处理器15接收转换后的输出图形原语,图形控制器50对转换后的输出图形原语执行适当的插值和处理,以生成显示用象素值。DRAM 60被划分成一个用于存储显示用象素值的帧缓冲存储器和一个存储纹理映象(texture maps)的纹理映象存储器。调色板/DAC 65中有一个数-模转换器,用于将数字的象素值转换成用于控制显示器40的模拟电压。
如图所示,图形控制器50包括外部总线接口70、RISC处理器75、指令高速缓冲存储器(I-cache)80、数据高速缓冲存储器(D-cache)85、DRAM控制器90、象素引擎(pixel engine)95、VGA电路100、视频控制器(CRTC)105、先入先出(FIFO)视频存储器100。外部总线接口70用于将图形控制器50连接到外部总线30。
输出图形原语被主处理器15作为数据流传输到图形控制器50。每个输出图形原语中包括一个类型部分和一个数据部分,类型部分说明输出图形原语类型,数据部分定义图形原语的每个点或顶点的位置和属性。例如,如果输出图形原语是个三角形,则输出图形原语的类型部分说明一个三角形,数据部分定义三个顶点的位置和属性。类型部分中还包括一个长度信息,说明该输出图形原语的数据部分的长度,以便RISC处理器75能确定下一个输出图形原语在数据流中的开始位置。RISC处理器75分析数据流,以便确定要从I-cache 80中提取哪些指令才能正确地处理该输出图形原语。
RISC处理器75内插每个输出图形原语,以便为要在输出图形原语所定义区域内显示的每个象素生成象素参数。象素引擎95用象素参数执行过滤和其它处理,以生成象素值。每个象素值直接对应于显示器的一个象素,并被DRAM控制器90存储在DRAM60的帧缓冲器部分中。CRTC 105从DRAM 60提取象素值来装入视频FIFO 110,用于刷新显示器。
图3表示图形处理在主处理器15与图形控制器50的部件之间被划分的方式。概括地说,主处理器15从应用程序接受输出图形原语,其中,输出图形原语是按照世界坐标系125定义的。主处理器15进行坐标转换并执行提供亮度效果(lighting effects)的图形处理(过程框130)。现在以设备坐标系表达的输出图形原语被主处理器15传输到图形控制器50。RISC处理器75内插输出图形原语的点或顶点,以计算输出图形原语所蕴含的中间各点的位置和属性,象素引擎95对图形对象所有各点的值进行处理,以生成象素值,象素值被存储到帧缓冲器,随后用于显示。
在过程块135,RISC处理器75设置填充输出图形原语所蕴含区域的插值过程。例如,如果输出图形原语是个三角形,三角形的三个顶点就蕴含着一个三角形的形状,于是就可以根据这三个顶点的位置和属性,计算三角区内各填充点象素的象素参数(即位置和属性)。为了设置插值过程,RISC处理器75要为每个规定的象素参数确定Δ值(例如dx、dy、du、dv等等)。在设置过程中,RISC处理器75按照一般的通用RISC处理器的方式工作,其处理的指令序列中,每个指令规定一个操作,最多要求一个处理器算术单元执行。
在过程块140,RISC处理器用Δ值来执行“边缘延伸”,确定输出图形原语蕴含的边界线上的象素的象素参数。在边缘延伸过程中,RISC处理器75按照一般的通用RISC处理器的方式工作。
在过程块145,RISC处理器用Δ值和已经计算出的边界线为位于所计算的边界线之间的各象素生成象素参数的“跨度”。在跨度生成过程中,RISC处理器75按照专用处理器的方式工作,其中,RISC处理器处理一个或多个“画图”指令,每个指令的结果是为一个跨度的一个象素输出象素参数。RISC处理器75另外也可以执行一种单一“重复画图”指令,该指令规定一个画图操作序列,每个画图操作对应一个跨度的每一个象素。对于每个“画图”指令和“重复画图”指令的每个画图操作,RISC处理器75用多个算术单元并行地执行多个算术操作。在过程块150,象素引擎95用RISC处理器75所计算的象素参数,生成用于激励显示器上适当的象素的象素值。
图4表示的RISC处理器75包括指令存储器155、程序计数器157、解码与控制单元160、数据通路165,它们都由时钟信号180定时。该时钟信号可以内部提供给RISC处理器75,也可以由外部提供。对于大多数应用来说,RISC处理器75按照一般流水线处理器的方式工作,每个指令执行一个操作。相应地,数据通路165中包括多个执行算术和逻辑操作的功能单元。(参见图8中数据通路165的一个实施例。)
此外,RISC处理器75还能执行一种特殊的“画图”指令,该指令包含多个由数据通路165中的功能单元同时并行地执行的操作,其中,解码与控制单元160中包括为控制数据通路中功能单元而生成适当控制信号的逻辑。数据通路165被配置成能高效率地执行“画图”指令,使RISC处理器75能像专用的跨度生成器一样操作。
RISC处理器75还能执行一种特殊的“重复”指令,其中,由“重复”指令指定的操作要被执行一定的次数,然后再提取指令流中的下一个指令。这种重复指令可以用来代替一个执行相同操作的指令的序列,以减少执行所需操作需要的时间。例如,一个由四个“画图”指令组成、每个指令画一个象素的指令序列,就可以用一个“重复画图”指令或“rdraw”指令代替。
与图5和图6中的现有技术比较一下,就能明白这种特殊的“重复”指令的优点。图5表示了一种典型指令流水线的各阶段,包括指令提取阶段200、指令解码阶段201、执行阶段202、写回阶段203。在阶段204,程序计数器递增,导致下一条指令被提取。如果流水线上每个阶段需要1个时钟周期来完成,则完成每条指令需要5个时钟周期。对于画图指令序列来说,每个画图指令都要经过流水线上各阶段。
图6表示特殊的“重复”指令的执行方式。与图5中的流水线一样,图6的流水线包括指令提取阶段210、指令解码阶段211、执行阶段212、写回阶段213,但是,如果要再执行该重复指令所定义的操作,程序计数器却不递增。对是否再次执行该操作的判断可以与写回阶段213并行进行的,所以未在流水线上增加延迟时间。因为“重复”指令只被提取和解码一次,与定义相同操作的一个指令序列相比,节省了时间。
现在返回图4,讨论RISC处理器75的操作。指令存储器155存储从指令高速缓冲存储器80中提取的指令。当程序计数器157递增时,指令存储器155输出一条指令,该指令由解码与控制单元160解码。解码与控制单元160确立必要的控制信号并加载数据通路165的适当寄存器中,使得数据通道165能够执行该指令所指定的操作。
当“画图”指令被解码与控制单元160接收时,解码与控制单元160生成必要的控制信号来控制数据通路165的功能单元,使各功能单元同时执行不同的操作。解码与控制单元160中含有能根据画图指令的操作码自动生成适当的控制信号的逻辑电路,诸如可编程逻辑阵列(PLA)。
当指令159被解码与控制单元160接收,而指令159是个重复指令时,解码与控制单元160就阻止程序计数器157递增,直到重复指令规定的操作被执行了重复指令所规定的次数。图7表示了指令159的基本格式,它包括操作码域220、目的寄存器域221、源寄存器域222和223。对于“重复”指令来说,操作码域存储的信息可以被认为是包括了规定操作的操作信息224、规定操作是否重复的重复信息225、规定重复操作次数的重复次数信息。处理器设计者可以任意地选择任何操作码来对应一个重复指令,并且不必提供不同操作、重复及重复次数各域。此外,重复次数信息也可以选择用单独的指令来提供。例如,可以用一条指令预先在某寄存器或计数器中装入一个数值,用该数值来规定由重复指令规定的操作应重复的次数。
图8和9表示数据通路165的一个特定实施例,该数据通路165既能执行专用指令,也能执行普通的RISC指令,前者例如用于为跨度的象素生成象素参数的“画图”和“重复画图”指令。图中所示的数据通路165包括一个“偶数”流水线,它含有多路转换器(MUX)300、偶数寄存存储器(register file)302、ALU A、向象素引擎指令315(该指令可以在寄存器中存储)的上端数据部分308输出16位数据的寄存器306。数据通路165还包括一个“奇数”流水线,它含有多路转换器(MUX)301、奇数寄存存储器303、算术逻辑单元(ALU)B、向象素引擎指令315的下端数据部分307输出19位数据的寄存器307。数据通路165的其它功能单元还包括XSHADOW寄存器311、计数寄存器312、倒数计算电路(1/Q)313、多路转换器314。寄存器320也包括一个操作码部分321,供象素引擎95读取以确定如何处理上端数据部分和下端数据部分中所储存的数据。ALU A和ALU B各有一个时钟周期的延迟,倒数计算电路313和多路转换器314各有两个时钟周期的延迟,但它们被设置在流水线中用来在每个时钟周期开始执行一个新操作。
图中也表示了解码与控制电路160的局部。具体来说,图中的解码指令寄存器(decode IR)405和周期(CYCLE)寄存器410相连,以提供用于访问偶数寄存存储器和奇数寄存存储器的寄存器地址。根据本实施例,解码指令寄存器405存储来自一条指令的目的寄存器域、源寄存器2域和源寄存器1域的解码过的寄存器地址,周期寄存器410存储一个规定重复指令的每个操作的时钟周期数的3位的周期计数值。根据本实施例,每个寄存器地址有6位,周期计数的最大值是从重复指令的操作码域译出的。
在解码指令寄存器405中存储的每个6位源寄存器地址,有一组3个双输入逻辑或门415,该或门组接收源寄存器地址的最低3位有效位和3位的周期计数值。每个或门415用对应寄存器地址的一个较低位和周期计数值的一位,进行逻辑或运算。周期计数值从零开始计数,每个时钟周期递增一次,直到周期计数值达到预定的最大值,此时周期计数值被清零,表示重复指令的下一个操作的开始。因为周期计数值每个时钟周期递增一次,所以,一组4个新的源操作数(每个流水线2个)每个时钟周期被自动寻址,而不必解码另一条指令。通过增加周期计数值的最大值,一个画图操作就能计算更多的象素参数。
目的寄存器地址带数据穿过流水线。在流水线的末端,目的寄存器地址被确定,数据被写入指定的寄存器。
如图所示,多路转换器320-325、330-333、345-346、352和360-361用于传递功能单元的结果,而寄存器340-344、350-351、370-371用于流水线构造目的。偶数流水线和奇数流水线都包括下列4个阶段:解码、执行1(X1)、执行2(X2)和写(WR)。如图4中所示,两个流水线的提取阶段都由指令存储器155、程序计数器157和解码与控制电路160执行。适当时,多路转换器和寄存器被表示为由控制信号控制或选通,在指令执行流水线上的某阶段输出新数据。例如,在X1阶段选通寄存器340去传输某指令的操作数,在X2阶段选通寄存器350去传输该指令的结果,在WR阶段选通寄存器350去传输相同的结果。所有控制信号都由解码与控制单元160提供。
偶数和奇数流水线可以用来提供超标量功能(superscalarfunctionality),其中,在偶数流水线中起动第一条指令,同时在奇数流水线中起动第二条指令。此外,偶数和奇数流水线可以用来执行规定用一个功能单元执行一个操作的一般RISC指令。
执行诸如“画图”和“重复画图”指令等特殊操作的能力,部分是由XSHADOW寄存器311,计数寄存器312、递增器(INC)380-381以及零探测器电路(ZD)390提供的。XSHADOW寄存器311在跨度生成期间存储水平位置参数“x”的当前值,递增器380被编程为存储跨度的Δ值dx。计数寄存器312存储规定某“重复画图”指令要执行画图操作次数的计数器的当前值。递增器381每当一个画图操作完成时递减计数寄存器的值。周期寄存器420的值变为零时,表示一个画图操作的完成。当计数寄存器312存储一个零值时,零探测器电路390将这种情况指示给解码与控制单元160,使得解码与控制单元160能使程序计数器的值递增,并使新的指令被提取。
图9表示数据通路165用“重复画图”指令执行透视更正(perspective correction)的操作,其中该指令每个画图操作生成4个象素参数的新值(周期计数值的最大值等于2)。图9的“重复画图”指令每个画图操作解下列方程(当COUNT>0时),为u和v参数执行透视更正:
qr=1/q (1)
u’=qr×u (2)
v’=qr×v (3)
q=q+dq (4)
u=u+du (5)
v=v+dv (6)
x=x+dx (7)
z=x+dz (8)
每个画图操作都输出象素参数x、z、u’和v’,其中q是透视值,dq是在设置步骤为q确定的Δ值,u是水平纹理坐标,du是在设置步骤确定的u的Δ值,v是纵向纹理坐标,dv是在设置步骤确定的v的Δ值,x是水平位置参数,dx是在设置步骤确定的x的Δ值,z是深度坐标,dz是在设置步骤确定的z的Δ值,u’是u的透视更正值,v’是v的透视更正值。一旦所有方程被解出,COUNT寄存器的值就递减。
计算q、x、z、u、v、dq、dx、dz、du和dv的值,在提取和解码下一个重复画图指令之前,将这些值存入寄存存储器。根据本实施例,在XSHADOW寄存器131中装入跨度的初始水平坐标x,在递增器380中装入值dx,将q和z值存储在偶数寄存存储器302中作为S1A操作数被访问,将dq和dz值存储在偶数寄存存储器302中作为S2A操作数被访问。与此类似,将u和v值存储在奇数寄存存储器303中作为S1B操作数被访问,将du和dv值存储在奇数寄存存储器303中作为S2B操作数被访问。
数据通路165利用多路转换器提供的数据传递功能,提供需要的并行量。如图9中所示,解码与控制单元160控制数据通路165,在时间T1分别用ALU A、ALU B和乘法器314并行地为第一个象素(象素0)解方程(2)、(4)和(5)。在时间T2,XSHADOW的值递增,确定了方程(7),ALU A确定方程(8),ALU B确定方程(6),乘法器314确定方程(3),倒数计算电路313确定方程(1),这又为能在时间T3为第二个象素(象素1)解方程(2)、(4)和(5)提供了保证。在时间T3,象素0的x和u’值(x0和u0’)也被输出。在时间T4,象素0的z和v’值(z0和v0’)也被输出。在时间T4,象素1的方程(1)、(3)、(6)~(8)也被解出,由此,象素1的参数在时间T5和T6期间被输出。这个过程不断进行,直到COUNT寄存器的值变成0。
以上内容结合本发明具体的典型实施例对本发明作了说明。不过很明显,在不偏离本发明的精神和范围的前提下,可以对这些实施例作出各种改进。因此,说明书内容及附图应视为具有说明性的意义而不具有限制性的意义。
Claims (12)
1.一种运行一个执行普通精简指令集计算机指令和特殊精简指令集计算机指令的精简指令集计算机处理器的方法,包含下列步骤:
控制精简指令集计算机处理器根据每个普通精简指令集计算机指令,用精简指令集计算机处理器的一个非数据总线数据通路的一个功能单元执行一个操作;
控制精简指令集计算机处理器根据每个特殊精简指令集计算机指令,并行地用精简指令集计算机处理器的所述非数据总线数据通路的多个功能单元执行多个操作,其中,一种特殊指令是用于内插输出图形原语的重复的图画指令,该输出图形原语指定多个象素的处理,并且所述多个功能单元是从由多个算术单元和多个逻辑单元组成的组中选出的。
2.按照权利要求1所述的方法,其特征在于,一种特殊精简指令集计算机指令是要求内插输出图形原语的画图指令,其中精简指令集计算机处理器要处理一个象素的多个象素参数。
3.按照权利要求1所述的方法,其特征在于,还包括以下步骤:
控制精简指令集计算机处理器并行地使用精简指令集计算机处理器的多个功能单元重复地执行多个操作,其中根据每个特殊的重复精简指令集计算机指令,执行第一次操作之后,随后的每一个操作都依赖前一个操作的结果。
4.按照权利要求3所述的方法,其特征在于,一种特殊的重复精简指令集计算机指令是要求内插输出图形原语的重复画图指令,其中精简指令集计算机处理器根据该重复画图指令要处理一个跨度内象素的一系列象素参数。
5.一种精简指令集计算机处理器,包括:
一个存储指令的指令存储器;
一个与指令存储器相连的程序计数器,当程序计数器的值递增时,程序计数器导改指令从指令存储器中被发出,所述指令包括特殊指令和普通算术指令;
一个包括多个功能单元的数据通路,其中每个功能单元用于执行一个算术操作或逻辑操作;
一个与指令存储器、程序计数器及数据通路相连的解码与控制单元,解码与控制单元控制数据通路为每个普通算术指令执行一个算术或逻辑操作,为每个特殊指令同时执行多个算术或逻辑操作,使得每个普通算术指令使用数据通路的一个算术单元,每个特殊指令使用数据通路的多个算术单元,
其中,一种特殊指令是要求内插输出图形原语的重复画图指令,它规定要处理多个象素,在重复画图指令规定的多个象素已经达到处理、从而使得精简指令集计算机处理器生成了一个跨度内象素之前,解码与控制单元不让程序计数器递增。
6.按照权利要求5所述的精简指令集计算机处理器,其特征在于,一种特殊指令是要求内插输出图形原语的画图指令,它规定要处理一个跨度内象素的一系列象素参数。
7.按照权利要求5所述的精简指令集计算机处理器,其特征在于,所述解码与控制单元包含一个自动生成一组向数据通路提供的控制信号的逻辑设备,数据通路被配置成根据控制信号执行操作。
8.一种运行一个执行普通精简指令集计算机指令和特殊精简指令集计算机指令的精简指令集计算机处理器的方法,包含下列步骤:
控制精简指令集计算机处理器根据每个普通精简指令集计算机指令,用精简指令集计算机处理器的一个非数据总线数据通路的一个功能单元执行一个操作;
控制精简指令集计算机处理器并行地使用精简指令集计算机处理器的一个非数据总线数据通路的多个功能单元重复地执行多个操作,其中根据每个特殊的重复精简指令集计算机指令,执行第一次操作之后,随后的每一个操作都依赖前一个操作的结果,其中所述多个功能单元是从由多个算术单元和多个逻辑单元组成的组中选出的。
9.按照权利要求8所述的方法,其特征在于,一种特殊的重复精简指令集计算机指令是要求内插输出图形原语的重复画图指令,其中精简指令集计算机处理器根据该重复画图指令处理一个跨度内象素的一系列象素参数。
10.一种执行普通精简指令集计算机指令和特殊精简指令集计算机指令的精简指令集计算机处理器,包括:
控制精简指令集计算机处理器根据每个普通精简指令集计算机指令,用精简指令集计算机处理器的一个功能单元执行一个操作的控制装置;
控制精简指令集计算机处理器根据每个特殊精简指令集计算机指令,并行地用精简指令集计算机处理器的多个功能单元执行多个操作的控制装置;和
用于控制精简指令集计算机处理器并行地使用精简指令集计算机处理器的多个功能单元重复地执行多个操作的装置,其中根据每个特殊的重复精简指令集计算机指令,执行第一次操作之后,随后的每一个操作都依赖前一个操作的结果。
11.按照权利要求10所述的精简指令集计算机处理器,其特征在于,一种特殊精简指令集计算机指令是要求内插输出图形原语的画图指令,其中精简指令集计算机处理器处理一个象素的多个象素参数。
12.按照权利要求10的精简指令集计算机处理器,其特征在于,一种特殊的重复精简指令集计算机指令是要求内插输出图形原语的重复画图指令,其中精简指令集计算机处理器根据该重复画图指令处理一个跨度内象素的一系列象素参数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/616,563 US5761524A (en) | 1996-03-15 | 1996-03-15 | Method and apparatus for performing and operation multiple times in response to a single instruction |
US08/616,563 | 1996-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1220017A CN1220017A (zh) | 1999-06-16 |
CN1130625C true CN1130625C (zh) | 2003-12-10 |
Family
ID=24470026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97194625A Expired - Fee Related CN1130625C (zh) | 1996-03-15 | 1997-03-04 | 根据一条指令执行多次操作的方法和装置 |
Country Status (9)
Country | Link |
---|---|
US (3) | US5761524A (zh) |
EP (1) | EP0909415B1 (zh) |
JP (1) | JP3608797B2 (zh) |
CN (1) | CN1130625C (zh) |
AT (1) | ATE226332T1 (zh) |
AU (1) | AU2066297A (zh) |
CA (1) | CA2249356C (zh) |
DE (1) | DE69716428T2 (zh) |
WO (1) | WO1997034224A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061755A (en) * | 1997-04-14 | 2000-05-09 | International Business Machines Corporation | Method of layering cache and architectural specific functions to promote operation symmetry |
JP3515337B2 (ja) * | 1997-09-22 | 2004-04-05 | 三洋電機株式会社 | プログラム実行装置 |
FR2770659A1 (fr) | 1997-10-31 | 1999-05-07 | Sgs Thomson Microelectronics | Processeur de traitement perfectionne |
US6343356B1 (en) | 1998-10-09 | 2002-01-29 | Bops, Inc. | Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision |
US6965991B1 (en) * | 2000-05-12 | 2005-11-15 | Pts Corporation | Methods and apparatus for power control in a scalable array of processor elements |
WO2001093046A1 (en) * | 2000-06-02 | 2001-12-06 | Mellanox Technologies Ltd. | Dma doorbell |
CN101410875B (zh) * | 2006-04-24 | 2012-07-04 | 松下电器产业株式会社 | 描绘装置以及描绘方法 |
RU2010145507A (ru) * | 2010-11-10 | 2012-05-20 | ЭлЭсАй Корпорейшн (US) | Устройство и способ управления микрокомандами без задержки |
WO2012160794A1 (ja) * | 2011-05-20 | 2012-11-29 | 日本電気株式会社 | 演算処理装置、演算処理方法 |
US8694701B2 (en) | 2011-12-15 | 2014-04-08 | Mellanox Technologies Ltd. | Recovering dropped instructions in a network interface controller |
GB2525264B (en) * | 2014-04-17 | 2021-06-02 | Advanced Risc Mach Ltd | Power saving by reusing results of identical micro-operations |
US9933841B2 (en) | 2014-04-17 | 2018-04-03 | Arm Limited | Reuse of results of back-to-back micro-operations |
US10514928B2 (en) | 2014-04-17 | 2019-12-24 | Arm Limited | Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result |
US9817466B2 (en) | 2014-04-17 | 2017-11-14 | Arm Limited | Power saving by reusing results of identical micro-operations |
CN104090740A (zh) * | 2014-05-27 | 2014-10-08 | 安徽师范大学 | 微控制器指令集的执行方法 |
US10417149B2 (en) * | 2014-06-06 | 2019-09-17 | Intel Corporation | Self-aligning a processor duty cycle with interrupts |
US9760158B2 (en) | 2014-06-06 | 2017-09-12 | Intel Corporation | Forcing a processor into a low power state |
CN104731557A (zh) * | 2014-12-10 | 2015-06-24 | 康烁 | 指令执行的控制方法及装置 |
US10241993B1 (en) * | 2017-09-27 | 2019-03-26 | Sofha Gmbh | System and method for detecting reusable groups of drawing commands in a sequence of drawing commands |
CN111158756B (zh) * | 2019-12-31 | 2021-06-29 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4766566A (en) * | 1986-08-18 | 1988-08-23 | International Business Machines Corp. | Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing |
US5001662A (en) * | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
US5293587A (en) * | 1990-06-01 | 1994-03-08 | Chips And Technologies, Inc. | Terminal control circuitry with display list processor that fetches instructions from a program memory, character codes from a display memory, and character segment bitmaps from a font memory |
US5278975A (en) * | 1990-06-14 | 1994-01-11 | Fujitsu Limited | Synchronization control system in a parallel computer |
US5377129A (en) * | 1990-07-12 | 1994-12-27 | Massachusetts Institute Of Technology | Particle interaction processing system |
US5428810A (en) * | 1991-03-15 | 1995-06-27 | Hewlett-Packard Company | Allocation of resources of a pipelined processor by clock phase for parallel execution of dependent processes |
US5345541A (en) * | 1991-12-20 | 1994-09-06 | Apple Computer, Inc. | Method and apparatus for approximating a value between two endpoint values in a three-dimensional image rendering device |
US5517603A (en) * | 1991-12-20 | 1996-05-14 | Apple Computer, Inc. | Scanline rendering device for generating pixel values for displaying three-dimensional graphical images |
US5481683A (en) * | 1992-10-30 | 1996-01-02 | International Business Machines Corporation | Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions |
US5440747A (en) * | 1993-09-27 | 1995-08-08 | Hitachi America, Ltd. | Data processor with control logic for storing operation mode status and associated method |
DE69519449T2 (de) * | 1994-05-05 | 2001-06-21 | Conexant Systems Inc | Raumzeigersdatenpfad |
-
1996
- 1996-03-15 US US08/616,563 patent/US5761524A/en not_active Expired - Lifetime
-
1997
- 1997-03-04 CN CN97194625A patent/CN1130625C/zh not_active Expired - Fee Related
- 1997-03-04 AT AT97908855T patent/ATE226332T1/de not_active IP Right Cessation
- 1997-03-04 DE DE69716428T patent/DE69716428T2/de not_active Expired - Lifetime
- 1997-03-04 WO PCT/US1997/003369 patent/WO1997034224A1/en active IP Right Grant
- 1997-03-04 CA CA002249356A patent/CA2249356C/en not_active Expired - Fee Related
- 1997-03-04 EP EP97908855A patent/EP0909415B1/en not_active Expired - Lifetime
- 1997-03-04 AU AU20662/97A patent/AU2066297A/en not_active Abandoned
- 1997-03-04 JP JP53265997A patent/JP3608797B2/ja not_active Expired - Fee Related
- 1997-12-08 US US08/986,652 patent/US6134648A/en not_active Expired - Lifetime
- 1997-12-09 US US08/987,290 patent/US6085310A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0909415B1 (en) | 2002-10-16 |
CA2249356A1 (en) | 1997-09-18 |
JP3608797B2 (ja) | 2005-01-12 |
CN1220017A (zh) | 1999-06-16 |
DE69716428D1 (de) | 2002-11-21 |
AU2066297A (en) | 1997-10-01 |
ATE226332T1 (de) | 2002-11-15 |
EP0909415A1 (en) | 1999-04-21 |
WO1997034224A1 (en) | 1997-09-18 |
US6134648A (en) | 2000-10-17 |
EP0909415A4 (en) | 2000-09-06 |
CA2249356C (en) | 2004-01-27 |
US6085310A (en) | 2000-07-04 |
JP2000507009A (ja) | 2000-06-06 |
US5761524A (en) | 1998-06-02 |
DE69716428T2 (de) | 2003-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1130625C (zh) | 根据一条指令执行多次操作的方法和装置 | |
US5185856A (en) | Arithmetic and logic processing unit for computer graphics system | |
US5867145A (en) | Graphical image recasting | |
WO1997034224A9 (en) | Method and apparatus for performing an operation multiple times in response to a single instruction | |
US6847369B2 (en) | Optimized packing of loose data in a graphics queue | |
US6812928B2 (en) | Performance texture mapping by combining requests for image data | |
US6833831B2 (en) | Synchronizing data streams in a graphics processor | |
US20030169277A1 (en) | Pipelined 2D viewport clip circuit | |
US6975317B2 (en) | Method for reduction of possible renderable graphics primitive shapes for rasterization | |
US6778188B2 (en) | Reconfigurable hardware filter for texture mapping and image processing | |
US6784894B2 (en) | Mapping time-sorted to direction-sorted triangle vertices | |
US20030160789A1 (en) | Multiple scan line sample filtering | |
US6867778B2 (en) | End point value correction when traversing an edge using a quantized slope value | |
US7490208B1 (en) | Architecture for compact multi-ported register file | |
US6943791B2 (en) | Z-slope test to optimize sample throughput | |
US6963342B2 (en) | Arbitration scheme for efficient parallel processing | |
US20030169271A1 (en) | Magnified texture-mapped pixel performance in a single-pixel pipeline | |
US6885375B2 (en) | Stalling pipelines in large designs | |
US6900803B2 (en) | Method for rasterizing graphics for optimal tiling performance | |
US6927775B2 (en) | Parallel box filtering through reuse of existing circular filter | |
US6847378B2 (en) | System and method for performing scale and bias operations by preclamping input image data | |
US20030164842A1 (en) | Slice blend extension for accumulation buffering | |
EP0485833A2 (en) | A method for executing graphics color saturating arithmetic instructions in a data processor | |
US6842851B2 (en) | Reading a selected register in a series of computational units forming a processing pipeline upon expiration of a time delay | |
US6831645B2 (en) | System and method for performing font operations when background color is transparent |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20031210 Termination date: 20110304 |