具体实施方式
为让本发明上述和其它目的、特征、和优点能更明显易懂,下文特举出较佳实施例,并配合附图,作详细说明如下:
实施例:
本发明公开封包处理系统与方法的各种实施例。这样的封包处理系统与方法将字节屏蔽使用于整个封包内容(或是整个封包),以使能对电路组件执行选择写入以及/或读取操作。藉由将字节屏蔽使用于整个封包内容可以改善处理速度与效能(与传统系统相比)。如上所述,传统PCI系统可以将字节屏蔽应用于封包的末端或前端,而非用于封包的整个内容。这样的传统系统必须将封包分解为管理片段并且将标头附加至每个片段。由于附加的标头会使处理时间以及储存需求增加,因此会降低处理效能。本发明所公开的封包处理系统与方法不需要分割封包内容并且将标头附加至每个片段或是不需要执行传统系统中的读取以及写入操作。因此,本发明所公开的封包处理系统与方法可以对组件执行连续的写入操作。
根据本发明实施例所述的以图形处理环境为背景的封包处理系统与方法包括图形处理单元,用以产生三角形(或其它原生)以及PCIE总线的处理深度(z)数据与模板(s)数据。然而,本领域技术人员皆了解其它的总线通信协议与标准同样可以包含于本发明的范围内。再者,本领域技术人员皆了解,即使本发明仅说明写入操作,本发明实施例所公开的原则亦可应用于读取操作中。此外,即使在说明书中仅说明模板与深度数据,同样的操作亦可使用于其它型态的数据,例如对阿尔法值数据与颜色(例如RGB)数据执行分离或交换操作。
图1是显示根据本发明实施例所述的图形处理系统10的框图,图形处理系统10作为实施封包处理系统100(与方法)的环境。在一些实施例中可以将图形处理系统10设定为计算机系统。图形处理系统10可包括由显示器界面单元(display interface unit,DIU)所驱动的显示装置102以及本地存储器106(包括例如显示缓冲器、纹理缓冲器、指令缓冲器以及帧缓冲器(framebuffer)等)。本地存储器106在此亦可以称为帧缓冲器、储存单元或存储器。本地存储器106通过存储器界面单元(memory interface unit,MIU)110而耦接至图形处理单元(graphics processing unit,GPU)114。根据本发明一实施例,MIU 110、GPU 114以及DIU 104耦接至与PCIE兼容的总线接口单元(businterface unit,BIU)118。例如,根据本发明实施例所述的PCIE BIU118可通过使用图形地址重映射表(graphics address remapping table,GART)或是其它存储器映射机制而实现。BIU 118与GPU 114可藉由PCIE接线103而通信耦接,且通过PCIE接线103可提供数据以及/或指令。在本发明一实施例中将BIU 118与MIU 110设定为用以分别根据PCIE通信协议以及双倍数据速率(double data rate,DDR)存储器通信协议传送或接收数据。
BIU 118耦接至芯片组122(例如北桥芯片组)或是开关。芯片组122包括接口电子,用以将来自中央处理单元126的信号增强,并且将来回于系统存储器124的信号与来回于输入/输出装置(未示出)的信号隔开。即使在本发明实施例中藉由PCIE总线通信协议来进行主处理器与GPU 114之间的连接以及/或通信,然而在其它实施例中亦可通过其它方法(例如PCI以及专属高速总线等)来进行主处理器与GPU 114之间的连接以及/或通信。系统存储器124亦包括图形应用程序(未示出)以及驱动器软件150,驱动器软件150藉由CPU126将指令或命令传送至GPU 114与DIU 104中的缓存器。驱动器软件150或具有相同功能的单元可以储存于系统存储器124中,并且由中央处理单元(central processing unit,CPU)126执行。在本发明一实施例中,驱动器软件150提供编译码(例如着色码(shader code))至GPU 114,以在GPU 114中执行处理。
在一些实施例中所使用的额外的图形处理单元经过芯片组122并藉由PCIE总线通信协议而耦接至图1所示的组件。根据本发明实施例所述的图形处理系统10可包括图1中所有的组件,或是包含比图1更少以及/或不同的组件。此外,在一些实施例中可使用额外的组件,例如耦接至芯片组122的南桥芯片。
封包处理系统100可藉由硬件、软件以及/或固件实现。当封包处理系统100藉由硬件实现时(例如图2A中的封包(P)单元),此硬件可通过下列现有技术中的任何一个或组合而实现:具有逻辑门的离散逻辑电路,用以根据数据信号实现逻辑功能、具有适当的组合逻辑门的特定应用集成电路(application specific integrated circuit,ASIC)、可编程门阵列(programmable gate array,PGA)以及现场可编程门阵列(fieldprogrammable gate array,FPGA)等。
当封包处理系统100藉由软件或固件实现时(例如藉由驱动器软件150控制硬件处理),如此包括用以实现逻辑功能的可执行指令的顺序列表的驱动器软件150可包含于计算机的可读介质中,以通过指令执行系统或装置(例如以计算机为基础的系统、包含处理器的系统或是其它可获取来自指令执行系统或装置的指令并执行指令的其它系统)而使用或与其连接。在说明书中,计算机可读介质可以为任何可保留、储存或传递程序的装置,此程序藉由指令执行系统或装置所使用或与其连接。计算机可读系统可以为例如电子、磁性、光学、电磁、红外线或是半导体系统、装置或传输介质,然而其不可用以限制本发明之范围。计算机可读介质还可以包括具有至少一导线的电性连接(电子)、可携式计算机磁盘(磁性)、随机存取存储器(random access memory,RAM)(电子)、只读存储器(read-only memory,ROM)(电子)、可擦可编程只读存储器(erasable programmable read-only memory,EPROM)(电子)、闪存、(电子)、光纤(光学)以及唯独式光盘(光学)。值得注意的是,计算机可读介质可以为具有程序被打印于上的纸或是其它适当的介质,程序藉由对纸或其它介质执行光扫描而被电性捕获、编译、解译或在必要时以适当的方法执行并储存于计算机存储器中。
另外,本发明一些实施例的范围包括将本发明较佳实施例的功能使用于硬件或软件设定介质中的逻辑。
图2A是显示根据本发明实施例所述的GPU 114的部分功能框图,包括标示为100a的封包处理系统100。GPU 114可包括缓冲器控制初始(buffercontrol initialization,BCI)单元220、顶点着色器(vertex shader,VS)222、三角形生成单元(triangle setup unit,TSU)224、跨度与砖产生单元(span and tile generation,STG)226、ZL1单元228、ZL1高速缓存230、ZL2单元232、Z高速缓存234、P单元236与238、像素着色器(pixel shader,PS)240、纹理(T)高速缓存242、ZL3单元244、目的(D)单元246以及D高速缓存248。至少一组件的功能可以固定功能单元来实现或是通过使用实现于可编程处理单元的码来实现。BCI单元220接收来自总线接口单元(例如图1中的BIU 118)的数据或指令,并且开始处理顶点数据。P单元236与238以及ZL1高速缓存230、D高速缓存248分别与存储器界面单元(例如MIU 110与BIU 118)连接。值得注意的是,在一些实施例中,P单元236与238可分别包含于Z高速缓存234与T高速缓存242中。尽管在一些实施例中的封包处理系统100包括较少或较多的组件,根据本发明一实施例所述的P单元236与238(此处分别或共同叫做封包逻辑单元)包括封包处理系统100a(如虚线所示)。例如,封包处理系统100a还可以包括驱动器软件150,驱动器软件150被设定为用来控制P单元236与238以及/或核心处理器(例如引擎)的执行,或在一些实施例中可包含于整体图形处理单元114或图形处理系统10中。
图2B是显示根据本发明实施例所述的封包处理系统100的功能框图。如图所示,封包处理系统100包括分离器(segregator)260、接收器268、写入逻辑单元266以及驱动器软件150。分离器260还包括屏蔽逻辑单元262以及交换逻辑单元264。分离器260被设定为用以将整个封包分为两个连续的群组,第一群组包括第一型态数据且第二群组包括第二型态数据。接收器268被设定为通过PCIE接线(例如来自BIU 118)接收数据。写入逻辑单元266被设定为用以将数据写入高速缓存(例如Z高速缓存234、T高速缓存242)。驱动器软件150被设定为用以调整与控制接收器268与分离器260的功能。本领域技术人员皆了解对于每个封包单元236与238来说,根据本发明所公开的封包处理系统100中的至少一逻辑单元(例如260,268,266等)可以被复制;或在一些实施例中,封包处理系统100中的至少一逻辑单元(例如260,268,266等)可以被封包单元236和238共享。
参照图2A与图2B,在本发明一实施例中的P单元236与238包括逻辑门,包括缓存器,缓存器被设定为用以使能在其它功能之间(例如边缘计算)执行屏蔽(屏蔽逻辑单元262)以及字节交换(交换逻辑单元264)的功能。ZL2单元232与ZL 3单元244存取Z高速缓存234。D单元246耦接至PS 240与ZL3单元244,用以执行着色功能,并且还存取D高速缓存248。PS 240存取T高速缓存242,其相当于根据已知机制所执行的纹理处理。值得注意的是,在一些实施例中,图2A与图2B中所示的至少一组件可以合并为单一组件,否则单一组件的功能可以分布于至少两个组件之间。
在操作中,BCI 220接收来自驱动器软件150或其它软件的指令,以绘制三角形或是其它基本图型(primitive)。BCI 220也根据即将绘制的三角形接收顶点信息。顶点信息传送至VS 222,以执行顶点转换。VS 222可包括在可编程单元(例如核心处理器或GPU 114中的引擎)中执行的着色编程或代码。在一些实施例中,VS 222可以固定功能单元来实现。特别注意的是,对象由对象空间转换至工作空间与屏幕空间以形成三角形。三角形传送至TSU224,TSU 224搜集原生,并且在其它已知的功能之间执行已知的工作,例如产生定界框、淘汰、产生边缘函数并且拒绝三角形级。TSU 224将数据传送至STG单元226,STG单元226提供砖产生(tile generation)功能,因此数据对象会被分割为数个地砖(例如8*8或16*16等)并且传送至ZL1单元228。ZL1单元228如同ZL2单元232与ZL3单元244一样分别执行z值处理,例如对z值执行高阶淘汰(high level rejection)(例如:与低阶淘汰相比,高阶淘汰消耗较少的位)。ZL单元228,232与244的操作分别与ZL1高速缓存230、Z高速缓存234以及Z高速缓存234结合。PS 240可包括于可编程单元(例如核心处理器或GPU114中的引擎)中执行的着色器,可编程单元接收纹理与管线(pipeline)数据,并且提供输出至D单元246与ZL3单元244。在一些实施例中,PS 240可包括固定功能单元。D单元246与ZL3单元244被设定为用以在Z高速缓存234或高速缓存248中的值更新前执行阿尔法值测试与模板测试。
P单元236与238处理封包(例如:执行下述的分离与交换功能)分别对应于储存于Z高速缓存234与T高速缓存242中的z-数据与s-数据。例如,主应用程序可要求对由z-数据(排除s-数据)所取得的表面执行处理。主应用程序的要求藉由驱动器软件150经由BIU 118与GPU 114进行通信而实现。驱动器软件150编程GPU 114中的缓存器并且指示GPU 114中的核心处理器(例如引擎)使能此仅有z的格式。核心处理器根据主应用程序中的驱动器软件150所传达的指令而产生屏蔽,并将屏蔽储存于可以被P单元236与238存取的至少一缓存器中,以使P单元236以及/或238在经由BIU 118或MIU 110输出必要的封包格式(即仅有z的格式)前,执行分离或交换功能。例如,P单元238根据传送至BIU 118的读取要求而接收来自BIU 118的预处理封包格式(参照图3,此封包标示为300)的数据。与读取(或写入)操作相关的封包地址可通过GPU 114中的核心处理单元(例如引擎)产生。参照图3,封包300包括两种不同类型的数据,包括模板(s)数据303以及深度或z-数据305。在此实施例中,三个连续的z-数据305字节(例如z0,z0,z0)搭配单一模板(s)数据303(例如s0)(在图与图4中每个包含或s数据的区块代表一个字节)。P单元238通过使用字节屏蔽302对整个封包内容执行屏蔽操作,并且交换数据以形成具有后处理封包格式的像素封包400,像素封包400包括两个个别连续的群组402(z-数据)与404(s-数据)(如图4所示)。P单元238将至少一群组402或404写入T高速缓存242。值得注意的是,P单元238可将与z数据接写入T高速缓存242中,但是在此实施例中写入操作仅发生于如图3所示的混合格式(例如封包300)。
关于P单元236,Z高速缓存234中的数据是如图3的封包300所示的预处理封包格式。例如,P单元236根据对BIU 118的写入要求对储存于高速缓存234中的封包300执行屏蔽操作,且封包的数据藉由P单元236进行交换。在执行上述屏蔽与交换操作后,数据的格式为如图4所示的包含后处理封包格式的像素封包400的格式。在图2中标示为A与B的不同级将于图3与图4中说明。
参照图3的封包300,封包300代表在图2A中标示为A的封包(预处理封包格式)。如上所述,封包300中重复的型态包括至少两种不同数据类型的组合(例如三个连续的z数据305字节(例如z0,z0,z0)搭配单一模板数据303字节(例如s0))。在操作中,当仅需要对z-数据305执行写入操作时(即排除s-数据303),P单元236(或P单元238,在此实施例中以P单元236做说明)会对整个封包内容300执行字节使能操作。也就是,P单元236将字节屏蔽302用于整个封包300,字节屏蔽302的位型态是将s-数据303去能并使能z-数据。因此,P单元236利用具有数据型态为11101110...1110的字节屏蔽302。也就是,P单元236在每4个位中加入0值,位值为0代表去能功能(即使屏蔽位保持原值)。位值为1代表使能功能,相当于允许被屏蔽的位通过。本领域技术人员皆了解在本发明实施例中所公开的屏蔽位值及其功能在一些实施例中可以具有相反的功能(即1代表去能,0代表使能)。
值得注意的是,当期望对s-数据303执行写入操作时(排除z-数据305),数据型态可以为位型态的反相(如字节屏蔽304所示),也就是00010001...0001。另外,当期望使所有的位通过时,屏蔽位型态可以全部为1(未示出)。因此,P单元236(与238)通过字节屏蔽302而选择性地对封包内容300的组合与连续的字节执行写入操作。
图4显示图2A中标示为B的像素封包400并显示后处理封包格式,后处理封包格式包括两个连续的z-数据群组402与s-数据群组404。像素封包400可经由MIU 110或BIU 118写入本地存储器106中(或是通过P单元238可根据对BIU 118的写入要求将群组402与404之一写入T高速缓存242,或者s-数据与z-数据皆可以上述混合格式写入T高速缓存242)。如图所示,z-数据群组402与s-数据群组404彼此分离,以使能选择写入连续的位或字节的数据。在此实施例中,将群组402中所有的z-数据搬移(例如交换)至封包的前端(例如前48个字节),并且将群组404中所有的s-数据搬移至封包的末端(例如后16个字节)。例如,由于屏蔽位值为0,因此s-数据群组404所使用的16个字节会被保留。如图2A所述,对应于屏蔽位值为1的48个字节使能只对z数据群组402执行写入操作(排除s-数据群组404)。当期望对s-数据群组404执行写入操作时,同样的可以将屏蔽位值为1的部分以0取代。
图5显示根据本发明实施例所述的封包处理方法100b,封包处理方法100b受到结合驱动器软件150与P单元236以及/或238的控制。根据本发明实施例所述的方法包括通过PCIE接线接收具有至少第一型态数据以及第二型态数据的封包(502),并且将整个封包分离为两个连续的群组,第一群组包括第一型态数据且第二群组包括第二型态数据(504)。
图5中任何步骤的说明或是流程图中的方块可以被视为代表模块、片段或部分的程序代码,程序代码包括用以实现步骤中特定逻辑功能的至少一可执行指令,本领域技术人员皆了解,在其它实施例中以不同于上述顺序执行功能(包括同时执行或是以相反的顺序执行)也可以包含于本发明的范围内。
本发明虽以较佳实施例公开如上,然而其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,允许可做一些更动与润饰,因此本发明的保护范围当视权利要求所限定者为准。