CN101901198A - 通过标记cpu流量为特殊来避免死锁 - Google Patents

通过标记cpu流量为特殊来避免死锁 Download PDF

Info

Publication number
CN101901198A
CN101901198A CN200910249698XA CN200910249698A CN101901198A CN 101901198 A CN101901198 A CN 101901198A CN 200910249698X A CN200910249698X A CN 200910249698XA CN 200910249698 A CN200910249698 A CN 200910249698A CN 101901198 A CN101901198 A CN 101901198A
Authority
CN
China
Prior art keywords
request
processing unit
unit
read
parallel processing
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.)
Pending
Application number
CN200910249698XA
Other languages
English (en)
Inventor
塞缪尔·H.·邓肯
戴维·B.·格拉斯科
黄伟杰
阿图·卡拉姆布尔
帕特里克·R.·马尔尚
丹尼斯·K.·马
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Priority to CN201510605017.4A priority Critical patent/CN105302524A/zh
Publication of CN101901198A publication Critical patent/CN101901198A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/376Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a contention resolving method, e.g. collision detection, collision avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • G06F13/4036Coupling between buses using bus bridges with arbitration and deadlock prevention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

通过标记CPU流量为特殊来避免死锁。通过将并行处理器发出给系统存储器的读请求标记为“特殊”而避免死锁。标记为特殊的与读请求相关的读完成在PCIe总线的虚拟通道1上路由。在虚拟通道1上返回的数据不会由在虚拟通道0上的写请求停止,因此避免了潜在的死锁。

Description

通过标记CPU流量为特殊来避免死锁
技术领域
本发明一般地涉及计算机硬件,并更特别地涉及通过标记CPU流量为特殊来避免死锁的方法和系统。
背景技术
常规的计算机系统包括中央处理单元(CPU)且也可以包括已知为并行处理单元(PPU)的协处理器。CPU将一定的处理操作卸下给PPU以减少CPU的处理工作量。其中,这些处理操作包括压缩和解压缩操作。当CPU需要这些处理操作时,CPU发出请求给PPU,包括读请求和/或写请求。例如,CPU可能需要将数据写到可能以压缩的格式存储的系统存储器中。CPU发送写请求给PPU,然后PPU可以读和解压缩与该写请求相关的数据并将解压缩的和与新数据合并的原始数据写到系统存储器中。
有时,CPU发出的写请求可能引起PPU发出必须在初始写请求能完成之前完成的一个或多个“派生的”读请求。例如,PPU可以发出以与CPU相关的系统存储器单元为目标的派生的读请求。当读事务完成时,系统存储器发出读完成给PPU,这通知PPU该事务完成。
但是,当CPU和PPU通过具有一个或多个待决写请求的外围部件接口快速(PCIe)总线连接时,可能产生问题。由于PCIe总线的排序规则,读完成不能超过写请求,因此任何派生的读请求不能返回读完成给PPU。因此,初始的写请求不能完成。这种情况在本领域中已知为循环依存或“死锁”。死锁使在CPU和PPU之间的一些或所有的通信停止并不利地影响计算机系统的处理吞吐量。下面讨论死锁条件的一些例子。
在第一个例子中,如果PPU需要从存储在系统存储器中的页表读且写请求在PCIe总线中待决,则可能发生死锁。当PPU向发出读请求给系统存储器以从页表中获取项目时,与读请求相关的读完成不能返回给PPU,因此初始的写请求不能完成。
当CPU发出以在与PPU相关的高速缓存存储器单元中的高速缓存行为目标的写请求给PPU时,也可能发生死锁。为了完成写请求,PPU首先通过检查标签存储件确定高速缓存行是否压缩。标签存储件指示与在高速缓存存储器单元中的最近访问的高速缓存行相关的压缩状态。当标签存储件不包括由写请求指定的高速缓存行的压缩状态时,PPU发出读请求给系统存储器以访问包括在高速缓存存储器单元中的每个高速缓存行的压缩状态的后备存储件。后备存储件返回指定的高速缓存行的压缩状态并发出读完成。但是,当写请求在PCIe中待决时,由于与读请求相关的读完成不能超过这些待决的写请求,因此可能发生死锁。
当CPU试图写数据到压缩的系统存储器的区域中(本领域中已知为“压缩片”)时,可能发生第三种死锁,。CPU发出指定压缩片和包括写数据的写请求给PPU。PPU发出读请求给系统存储器以读压缩片。当写请求在PCIe中待决时,由于与读请求相关的读完成又不能超过这些待决的写请求,因此可能发生死锁。
除了这三个例子外,还有数个其他情况可能导致死锁。因此,本领域中仍然需要避免死锁的方法和系统。
发明内容
本发明的实施例提供了在计算机系统中避免死锁的方法和系统,该计算机系统具有第一处理单元、第二处理单元、存储器桥、系统存储器和将第二处理单元连接到第一处理单元、存储器桥和系统存储器的总线。当读或写请求从第一处理单元发送到第二处理单元时避免了死锁。
根据本发明实施例的避免死锁的方法包括:在总线的第一虚拟通道上在第二处理单元接收读或写请求;在处理读或写请求时在第二处理单元产生派生的读请求;通过总线的第二虚拟通道将派生的读请求发送给系统存储器;在总线的第二虚拟通道上接收派生的读请求的完成;和完成接收的读或写请求。
根据本发明实施例的避免死锁的系统包括在第二处理单元中的总线接口单元。该总线接口单元配置为在第一虚拟通道上从第一处理单元接收读或写请求,并将在处理读或写请求时产生的派生的读请求通过第二虚拟通道发送。
附图说明
为了详细地理解本发明的上述特征,对于以上简要说明的本发明,将参照实施例进行更为具体的描述,其中对一些实施例在附图中进行了图示。然而,需要注意的是,附图只是图示本发明的代表性实施例,因此不能认为附图限制了本发明的范围,本发明可以允许其他同样有效的实施例。
图1是图示配置为实现本发明的一个或多个方面的计算机系统的框图;
图2是根据本发明一个实施例的图1中的计算机系统的并行处理子系统的框图;
图3A是根据本发明一个实施例的在图2的并行处理单元(PPU)之一中的通用处理簇(GPC)的框图;
图3B是根据本发明一个实施例的在图2中的并行处理单元之一中的分区单元的框图;
图4是根据本发明一个实施例的配置为避免死锁的计算机系统的框图;和
图5是根据本发明一个实施例的避免死锁的方法步骤的流程图。
具体实施方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员来说显而易见的是,本发明可以无需一个或多个这些具体细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,公知的一些特征未进行描述。
系统概述
图1是图示配置为实现本发明一个或多个方面的计算机系统100的框图。计算机系统100包括中央处理单元(CPU)102和系统存储器104,二者通过存储器桥105经由总线路径进行通信。存储器桥105可以如图1所示集成到CPU 102中。作为替换,存储器桥105可以是惯常设备例如北桥芯片,其通过总线连接到CPU 102。存储器桥105通过通信路径106(例如HyperTransport(超传输)链路)与I/O(输入/输出)桥107相连接。I/O桥107例如可以是南桥芯片,其从一个或多个用户输入设备108(例如键盘、鼠标)接收用户输入,并将该输入通过路径106和存储器桥105转发给CPU 102。并行处理子系统112通过总线或其他通信路径113(例如PCIExpress、加速图形端口或超传输链路)与存储器桥105相耦合;在一个实施例中,并行处理子系统112是将像素提供给显示设备110(例如传统的CRT或基于LCD的显示器)的图形子系统。系统盘114同样连接于I/O桥107。开关116提了I/O桥107和诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。包括USB或其他端口连接、CD驱动器、DVD驱动器、电影记录设备等的其他部件(图中没有明确示出),也可以与I/O桥107相连接。将图1中的各种部件相互连接的通信路径可以用任何适用的协议来实现,比如PCI(外设部件互连)、PCI Express(PCI-E)、AGP(加速图形端口)、超传输或任何其他总线或点对点通信协议,并且不同设备之间的连接可以使用不同协议,如本领域已知的。
在一个实施例中,并行处理子系统112包括为图形和视频处理优化的电路,包括例如视频输出电路,并构成了图形处理单元(GPU)。在另一实施例中,并行处理子系统112包括为通用处理优化,并保留了底层计算架构的电路,本文将更加详细地描述。在另一实施例中,并行处理子系统112可以集成一个或多个其他系统元件,例如存储器桥105、CPU 102和I/O桥107,以形成片上系统(SoC)。
可以理解的是,这里示出的系统只是示意性的,可以对其进行变化和修改。包括桥的数量和排列的连接拓扑结构可以根据需要修改。例如,在一些实施例中,系统存储器104直接与CPU 102相连接而不是通过桥相连接,其他设备通过存储器桥105和CPU 102与系统存储器104相通信。在其他可选择的拓扑结构中,并行处理系统112与I/O桥107相连接或直接与CPU 102相连接,而不是和存储器桥105相连接。在其他实施例中,CPU102、I/O桥107、并行处理子系统112和存储器桥105的一个或多个被集成到一个或多个芯片上。这里示出的特定部件是可选的;例如,可以支持任何数量的插卡或外设。在一些实施例中,省去了开关116,网络适配器118和插卡120、121直接和I/O桥107相连接。
图2示出了根据本发明一个实施例的并行处理子系统112。如图所示,并行处理子系统112包括一个或多个并行处理单元(PPU)202,每个并行处理单元都和本地并行处理(PP)存储器204相耦合。通常,并行处理子系统包括U个PPU,其中U≥1。(在这里,相似对象的多个例子用表明该对象的附图标记和表明该例子的附加说明数字(需要时)来表示)。PPU 202和并行处理存储器204可以使用例如可编程处理器,专用集成电路(ASIC)或存储器设备的一个或多个集成电路设备,或以任何其他技术上可行的方式来实现。
再次参考图1,在一些实施例中,在并行处理子系统112中的一些或者全部的并行处理单元202是具有渲染流水线的图形处理器,其能被配置成进行与下列情形有关的各种任务:从通过CPU 102和/或系统存储器104提供的图形数据产生像素数据;与本地并行处理存储器204(其能被用作图形存储器,例如包括常规的帧缓冲器)交互以存储并更新像素数据;提供像素数据给显示设备110等。在一些实施例中,并行处理子系统112可包括作为图形处理器工作的一个或多个并行处理单元202和用于通用计算的一个或多个其他并行处理单元202。并行处理单元可以是相同或不同的,且每个并行处理单元202可以有其自己专用的并行处理存储器设备或没有专用的并行处理存储器设备。一个或多个并行处理单元202可以将数据输出到显示设备110或者每个并行处理单元202可以将数据输出到一个或多个显示设备110。
参考图2,在一些实施例中,可以没有本地并行处理存储器204,存储器参考由本地高速缓存(未示出)通过交叉器单元210和I/O单元205反映回到系统存储器104(此处未示出)。
在操作中,CPU 102是计算机系统100的主处理器,其控制和协调其他系统部件的操作。特别是,CPU 102发出控制并行处理单元202操作的命令。在一些实施例中,CPU 102将对于每个并行处理单元202的命令流写入到命令缓冲器(图1和图2中未明确地示出),该命令缓冲器可以位于系统存储器104、并行处理存储器204或是CPU 102和并行处理单元202都可以访问的另一个存储位置中。并行处理单元202从命令缓冲器中读出命令流,并且随后相对于CPU 102的操作异步地执行命令。CPU 102也可以建立数据缓冲器,并行处理单元202可以响应命令缓冲器中的命令读取该数据缓冲器。每个命令和数据缓冲器可以由并行处理单元202的每个读取。
现在返回参考图2,每个并行处理单元202包括通过通信路径113和计算机系统100的剩余部分通信的I/O(输入/输出)单元205,该通信路径113与存储器桥105相连接(或是在一个可选实施例中直接与CPU 102相连接)。并行处理单元202和计算机系统100的剩余部分的连接也可以变化。在一些实施例中,并行处理子系统112实现为插卡,其能插入到计算机系统100的扩展槽中。在其他实施例中,并行处理单元202能和总线桥一起集成到单一芯片上,总线桥例如可以是存储器桥105或I/O桥107。在另外其他实施例中,并行处理单元202的一些或全部元件可以连同CPU102一起集成到单一芯片上。
在一个实施例中,通信路径113是PCI-E链路,其中如本领域所已知的,专用通道分配给每个PPU 202。也可以使用其他通信路径。I/O单元205产生包(或其他信号)以在通信路径113上传输,并也接收所有来自通信路径113的输入包(或其他信号),并将输入包引导至PPU 202的适当的部件。例如,和处理任务有关的命令可以被引导至主机接口206,而和存储器操作有关的命令(例如从并行处理存储器204中读取或向其写入)可以被引导至存储器交叉器(crossbar)单元210。主机接口206读取每个命令缓冲器,并将由命令缓冲器指定的工作输出到前端212。
每个PPU 202有利地实现高度并行处理架构。如详细示出的,PPU 202(0)包括处理簇阵列230,处理簇阵列230包括数量为C的通用处理簇(GPC)208,其中C≥1。每个GPC 208能同时执行大量(例如数百个或数千个)线程,其中每个线程是程序的实例。在不同应用中,不同的GPC 208被分配用以处理不同类型的程序或进行不同类型的计算。例如,在图形应用中,第一组GPC 208可以分配为进行镶嵌操作并产生面片的图元拓扑,而第二组GPC 208可以分配为进行镶嵌着色以评价图元拓扑的面片参数并确定顶点位置和其他每顶点属性。GPC 208的分配基于每个类型的程序或计算产生的工作量是可以变化的。可选择地,GPC 208可以分配为使用时间片方案进行处理任务以在不同处理任务之间转换。
GPC 208通过工作分配单元200接收将要执行的处理任务,该工作分配单元200从前端单元212接收限定了处理任务的命令。处理任务包括例如表面(面片)数据、图元数据、顶点数据和/或像素数据的要处理数据的指针,还有状态参数和限定数据如何处理的命令(例如执行什么程序)。工作分配单元200可以配置成取得对应于处理任务的指针,工作分配单元200可以从前端212接收指针,或者工作分配单元200可以直接从前端212接收数据。在一些实施例中,索引指明了阵列中数据的位置。前端212保证在命令缓冲器指定的处理启动前,GPC 208配置为有效状态。
例如,当并行处理单元202用于图形处理时,每个面片的处理工作量被分成大约相等大小的任务,以使得能将镶嵌处理分配给多个GPC 208。工作分配单元200可以配置成以能提供任务到多个GPC 208用于处理的频率输出任务。在本发明的一些实施例中,部分GPC 208配置成进行不同类型的处理。例如,第一部分可以配置成进行顶点着色和产生拓扑结构,第二部分可以配置成进行镶嵌和几何着色,以及第三部分可以配置成在屏幕空间上进行像素着色以产生渲染的图像。分配部分GPC 208以进行不同类的处理任务的能力有效地适应了由那些不同类型的处理任务产生的数据的任何扩展和缩减。GPC 208产生的中间数据可以被缓冲,以在下游GPC 208接收数据的速度落后于上游GPC 208产生数据的速度的情况下,允许中间数据在GPC 208之间以最少的停止发送。
存储器接口214可以被分区成D个存储器分区单元,每个存储器分区单元与并行处理存储器204的一部分耦合,其中D≥1。并行处理存储器204的每部分通常包括一个或多个存储器设备(例如DRAM 220)。本领域的普通技术人员可以理解的是,DRAM 220可以由其他合适的存储设备代替并且通常可以是惯常的设计。因此省略了详细的描述。在一个实施例中,DRAM220可以全部省略,存储器请求通过交叉器210和I/O单元205反映回到存储器桥105。例如帧缓冲器或纹理贴图的渲染目标可以跨越DRAM 220存储,允许分区单元215将每个渲染目标的部分并行写入,以有效地使用并行处理存储器204的可用带宽。
GPC 208的任何一个可以处理要写入到并行处理存储器204中的任何分区单元215中的数据。交叉器(crossbar)单元210配置为将每个GPC 208的输出路由至任何分区单元215的输入或另一GPC 208以进一步处理。GPC208通过交叉器单元210与存储器接口214通信以从各种外部存储器设备中读取或写入各种外部存储器设备。在一个实施例中,交叉器单元210与存储器接口214连接以与I/O单元205通信,交叉器单元210也和本地并行处理存储器204连接,因此使得不同GPC 208内的处理内核能与系统存储器104或对并行处理单元202为非本地的其他存储器通信。交叉器单元210可以使用虚拟通道以在GPC 208和分区单元215之间分开通信流。
此外,GPC 208能被编程以执行与广泛多种应用相关的处理任务,所述应用包括但不限于线性和非线性数据转换、视频和/或音频数据的过滤、建模操作(例如,应用物理规律来确定对象的位置、速度和其他属性)、图像渲染操作(例如,镶嵌着色器、顶点着色器、几何着色器和/或像素着色器程序)等等。并行处理单元202可以将数据从系统存储器104和/或本地并行处理存储器204传输到内部(片上)存储器,处理数据,并将结果数据写回到系统存储器104和/或本地并行处理存储器204中,其中这样的数据能够由包括CPU 102或另一并行处理子系统112的其他系统部件来访问。
并行处理单元202可以提供有任意数量的本地并行处理存储器204,包括没有本地存储器,并可以以任意组合使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)的实施例中,并行处理单元202可以是图形处理器。在这样的实施例中,会提供极少或者不提供专用图形(并行处理)存储器,并行处理单元202唯一地使用或几乎唯一地使用系统存储器。在UMA实施例中,并行处理单元202可被集成到桥芯片或处理器芯片中,或者是提供为具有高速链路(例如PCI-E)的分立的芯片,该高速链路将并行处理单元202通过桥芯片或其他通信装置与系统存储器相连接。
如上所述,并行处理子系统112中可以包括任意数量的并行处理单元202。例如,多个并行处理单元202可以提供在单个的插卡上,或者多个插卡可以与通信路径113相连,或者一个或多个并行处理单元202可以集成到桥芯片中。多并行处理单元系统中的并行处理单元202可以是彼此相同的,或者可以是彼此不同的。例如,不同的并行处理单元202可以具有不同数量的处理内核、不同数量的本地并行处理存储器等等。当存在有多个并行处理单元202时,那些并行处理单元可以以高于单个并行处理单元202可能达到的吞吐量来并行操作以处理数据。包含有一个或多个并行处理单元202的系统可以以各种配置和形式因素实现,包括台式计算机、笔记本计算机、或是手持个人计算机、服务器、工作站、游戏控制台、嵌入式系统等等。
处理簇阵列概述
图3A是根据本发明一个实施例的在图2的并行处理单元202之一中的GPC 208的框图。每个GPC 208可以配置为并行执行大量的线程,在此术语“线程”是指对一特定组的输入数据执行的特定程序的实例。在一些实施例中,单指令多数据(SIMD)指令发出技术被用于支持并行执行大量线程,而不用提供多个独立的指令单元。在其他实施例中,使用配置为向每个GPC 208中的一组处理引擎发出指令的共同指令单元,单指令多线程(SIMT)技术被用来支持并行执行大量通常同步的线程。不像SIMD执行方式中所有处理引擎通常执行相同的指令,SIMT的执行允许不同的线程通过给定的线程程序更加容易地跟随分散的执行路径。本领域的普通技术人员可以理解的是,SIMD处理方式代表了SIMT处理方式的功能性子集。
在图形应用中,GPC 208可以被配置为实现图元引擎以进行屏幕空间图形处理功能,其包括但不限于图元建立、光栅化和Z剔除。图元引擎304从工作分配单元200接收处理任务,当处理任务不需要由图元引擎实施的操作时,处理任务通过图元引擎传送到流水线管理器305。GPC 208的操作通过流水线管理器305有利地控制,流水线管理器305将处理任务分配给流多处理器(SPM)310。流水线管理器305也可以配置为通过为SPM 310输出的处理的数据指定目的地来控制工作分配交叉器(crossbar)330。
在一个实施例中,每个GPC 208包括M个SPM 310,其中M≥1,每个SPM 310配置成处理一个或多个线程组。此外,每个SPM 310有利地包括可以流水线化的相同组的功能单元(例如算术逻辑单元等),允许新指令在前指令完成之前发出,这已在本领域中公知。可以提供功能单元的任何组合。在一个实施例中,功能单元支持各种运算,包括整数和浮点算术(例如加法和乘法)、比较运算、布尔运算(与、或、异或)、移位和各种代数函数(例如平面插值函数、三角算法函数、指数和对数函数等)计算;并且相同的功能单元硬件可以被平衡为实施不同的运算。
发送到特定GPC 208的系列指令构成了已在本文前面定义的线程,且在SPM 310内在并行处理引擎(未示出)上一定数量同时执行的线程的集合在本文中称为线程组。如本文所使用的,线程组指的是对不同输入数据同时执行相同程序的线程的组,组中的每个线程被分配给SPM 310中的不同处理引擎。线程组可以包括比SPM 310中处理引擎数量少的线程,在这种情况中,在当处理线程组时的周期期间,一些处理引擎将是空闲的。线程组也可以包括比SPM 310中处理引擎数量多的线程,在这种情况中,处理将发生在多个时钟周期上。由于每个SPM 310可以同时支持多达G个线程组,因此多达GxM个线程组可以在任何给定的时间在GPC 208中执行。
另外,多个相关的线程组可以同时在SPM310中是活动的(在不同的执行阶段)。这个线程组的集合在本文中称为“合作线程阵列”(“CTA”)。特定CTA的大小等于m*k,其中k是在线程组中同时执行的线程的数目且典型地是在SPM310中并行处理引擎的数目的整数倍,m是在SPM310中同时活动的线程组的数目。CTA的大小通常由程序员和CTA可用的诸如存储器或寄存器的硬件资源的数量确定。
专有本地地址空间对每个线程可用,且共享的每CTA地址空间用于在CTA中的线程之间传递数据。存储在每线程本地地址空间和每CTA地址空间中的数据存储在L1高速缓存320中,且可以使用逐出策略来帮助将数据保持在L1高速缓存320中。每个SPM 310使用在用于进行装载和存储操作的相应的L1高速缓存320中的空间。每个SPM 310也访问所有GPC 208共享并可以用于在线程之间传输数据的分区单元215中的L2高速缓存。最后,SPM 310也访问片外“全局”存储器,其可以包括例如并行处理存储器204和/或系统存储器104。L2高速缓存可以用于存储写入到全局存储器中和从全局存储器中读取的数据。可以理解的是,并行处理单元202外部的任何存储器都可以用作全局存储器。
在图形应用中,GPC 208可以配置为使得每个SPM 310和纹理单元315耦合以进行纹理贴图操作,例如确定纹理样本的位置、读取纹理数据和过滤纹理数据。纹理数据通过存储器接口214读取并按照需要从L2高速缓存、并行处理存储器204或者系统存储器104中取得。纹理单元315可以配置为在内部高速缓存中存储纹理数据。在一些实施例中,纹理单元315与L1高速缓存320耦合且纹理数据存储在L1高速缓存320中。每个SPM 310向工作分配交叉器330输出处理的任务,以向另一GPC 208提供处理的任务以做进一步处理,或通过交叉器单元210将处理的任务存储在L2高速缓存、并行处理存储器204或者系统存储器104中。PreROP(预先光栅操作器)325配置成从SPM 310中接收数据,引导数据至分区单元215内的光栅操作单元,并进行颜色混合的优化,组织像素颜色数据,并进行地址转换。
可以理解的是,本文描述的内核架构是示例性的,可以做变化和改变。任何数量的处理引擎,例如图元引擎304、SPM 310、纹理单元315或PreROP 325可以包括在GPC 208中。进一步,虽然只示出了一个GPC 208,并行处理单元202可以包括任何数量的GPC 208,这些GPC 208功能上有利地彼此相似,使得执行行为不取决于哪个GPC 208接收了特定处理任务。进一步,每个GPC 208使用单独的和不同的处理引擎、L1高速缓存320等相对另外的GPC 208有利地独立地工作。
图3B是根据本发明一个实施例的图2中并行处理单元202其中之一中的分区单元215的框图。如图所示,分区单元215包括L2高速缓存350、帧缓冲器(FB)355和光栅操作单元(ROP)360。L2高速缓存350是配置为进行从交叉器单元210和ROP 360接收的装载和存储操作的读/写高速缓存。读取缺失和紧急写回请求通过L2高速缓存350输出到帧缓冲器355处理。脏(dirty)更新也送到帧缓冲器355用于机会处理。帧缓冲器355直接与并行处理存储器204接口,输出读取和写入请求,并接收从并行处理存储器204读取的数据。
在图形应用中,ROP 360是进行光栅操作的处理单元,例如模板、z测试、混合等,并将像素数据输出为处理的图形数据以存储在图形存储器中。在本发明的一些实施例中,ROP 360包括在每个GPC 208中,而不是在分区单元215中,像素的读和写请求通过交叉器单元210来发送,而不是通过像素段数据。
处理的图形数据可以显示在显示设备110上,或路由以通过CPU 102或通过并行处理子系统112中的处理实体之一来进一步处理。每个分区单元215包括ROP 360以分配光栅操作的处理。在一些实施例中,ROP 360配置为压缩写到存储器中的z或颜色数据,并将从存储器中读取的z或颜色数据解压缩。
本领域的技术人员可以理解的是,图1、2、3A和3B中描述的架构决不限制本发明的范围,本文中教导的技术可以在任何适合地配置的处理单元上实现,该处理单元包括但不限于一个或多个CPU、一个或多个多内核CPU、一个或多个并行处理单元202、一个或多个GPC 208、一个或多个图形或专用处理单元等,这些都不离开本发明的范围。
死锁避免
当通信路径113是PCIe总线时,在PCIe总线中的待决的写请求阻止从系统存储器104返回的读完成到达并行处理子系统202。当在待决的写请求能处理之前并行处理子系统202需要读完成时,死锁发生。本发明的实施例提供了将读完成通过与用于发送写请求的虚拟通道分开的PCIe的虚拟通道(VC)路由的技术。因此,不会阻止读完成到达并行处理子系统202并避免了死锁。
图4是根据本发明一个实施例的配置为避免死锁的计算机系统400的框图。如图所示,计算机系统400包括与存储器桥105集成的CPU102、系统存储器104、外围部件接口快速(PCIe)总线401和并行处理子系统202。CPU102通过存储器桥105与系统存储器104耦合。CPU102也通过存储器桥105和PCIe总线401与并行处理子系统202耦合。CPU102通过存储器桥105和PCIe总线401可以访问在并行处理子系统202中的存储器单元。同样,并行处理子系统202也通过PCIe总线401和存储器桥105访问系统存储器104。
CPU102是计算机系统400的主处理器并配置为通过存储器桥105发出包括读请求和写请求的请求给系统存储器104。CPU102也通过存储器桥105和PCIe总线401发出请求给并行处理子系统202。
并行处理子系统202是配置为为CPU102实施不同处理操作的协处理器。这些处理操作包括数据压缩和解压缩。并行处理子系统202包括配置为通过PCIe总线401从CPU102接收请求并将请求路由给并行处理子系统202的不同部件以处理的PCIe接口402。PCIe接口402也通过PCIe总线401发送请求给CPU102或者系统存储器104。PCIe接口402通过在PCIe总线401上的不同虚拟通道(VC)路由数据。这些虚拟通道包括VC0和VC1(未示出)。
并行处理子系统进一步包括主机404、客户端406A-406N、I/O单元205、交叉器单元210、L2高速缓存350和并行处理存储器204。I/O单元205允许并行处理子系统实施存储器访问操作并包括存储器管理单元(MMU)仲裁器408、MMU410、转换后备缓冲器(TLB)412和一个或多个迭代器414。
主机404是允许CPU102访问I/O单元205的引擎。主机404与在I/O单元205中的MMU仲裁器408耦合。主机404从CPU102接收请求并将这些请求通过MMU仲裁器408发送给MMU410。客户端406A-406N也与MMU仲裁器408耦合。客户端406A-406N是实施不同功能的引擎,这些功能包括存储器管理、图形显示、指令提取、加密、纹理处理和视频解码。客户端406A-406N配置为发出请求给I/O单元205。
MMU仲裁器408在主机404和客户端406A-406N的每个之间仲裁并允许这些引擎访问MMU410。MMU仲裁器408检查与接收自主机404和客户端406A-406N的请求相关的引擎ID,该引擎ID指示是否请求来自CPU102。当引擎ID指示请求来自CPU102时,通过使在请求中的“特殊”位等于1而将该请求标记为“特殊”。然后请求路由给MMU410。
MMU410为主机404和客户端406A-406N提供虚拟到物理地址转换。当主机404和/或客户端406A-406N通过MMU仲裁器408发送请求给MMU410时,MMU410将请求中指定的虚拟地址转换成物理地址。虚拟到物理地址转换可以使用TLB412加速。TLB412存储最近访问的虚拟到物理地址的映射。如果接收的虚拟地址包括在TLB412中,那么与该虚拟地址相关的物理地址可以快速地从TLB412获取。如果TLB412没有存储需要的虚拟到物理的映射,那么MMU410发出读请求以检索包括需要的虚拟到物理地址映射的页表。
作为另一请求的直接结果发出的这样的读请求在下面称为“派生的读请求”。如果产生派生的读请求的初始请求标记为特殊,那么MMU410将派生的读请求标记为特殊。MMU410将派生的读请求发送给PCIe接口402。当派生的请求没有标记为特殊时,PCIe接口402在VCO上路由派生的读请求,当派生的读请求标记为特殊时,PCIe接口402在VC1上路由派生的读请求。从没有标记为特殊的请求返回的读完成在VC0上返回,而从标记为特殊的请求返回的读完成在VC1上返回。当系统存储器104接收与请求的数据相关的读完成时,初始请求的处理继续。
MMU410将请求和物理地址发送给迭代器414之一。迭代器414将物理地址转换为交叉器原始地址并将请求和交叉器原始地址发送给交叉器单元210。然后交叉器单元210将请求路由给L2高速缓存350。
L2高速缓存350是存储可以由I/O单元205需要的数据的低延迟存储器单元。L2高速缓存350包括允许并行处理子系统202对接收自系统存储器104的数据或存储在L2高速缓存350中的数据进行压缩和解压缩的压缩和解压缩单元(未示出)。L2高速缓存350包括标签存储件(未示出),该标签存储件包括指示L2高速缓存350的最近访问的高速缓存行的压缩状态的标签。
当L2高速缓存350接收以L2高速缓存350中的特定高速缓存行为目标的写请求时,L2高速缓存350使用标签存储件以确定是否目标高速缓存行是压缩的。当标签存储件不包括由请求指示的高速缓存行的压缩状态时,L2高速缓存350产生派生的读请求以访问在系统存储器104中的后备存储件(未示出)。L2高速缓存350通过交叉器单元210将派生的读请求发送给PCIe接口402。PCIe接口402确定是否派生的读请求标记为特殊,并因此将派生的读请求在PCIe总线401上路由。当系统存储器104返回与派生的读请求相关的读完成时,当派生的读请求标记为特殊时这个读完成在VC1上发送,因此当写请求已经在PICe总线401上时避免了死锁条件。
如果后备存储件指示目标高速缓存行是压缩的,那么L2高速缓存350解压缩目标高速缓存行,将解压缩的数据与包括在写请求中的数据合并,并将解压缩的和合并的数据写回到在L2高速缓存350中的高速缓存行中。L2高速缓存350也可以更新标签存储件以包括最近访问的高速缓存行的压缩状态。在一个实施例中,合并的数据可以再次压缩。当数据解压缩时,其以解压缩的格式存储。标签存储件指示是否片是压缩的并因此需要解压缩,或者可以直接写而不用首先解压缩。
L2高速缓存350也可以接收写请求,该写请求指定CPU102需要向其写数据的系统存储器104的压缩的区域或“压缩片”。典型地,虽然压缩片来自并行处理子系统202中,但在一个实施例中CPU102产生压缩片。L2高速缓存350接收写请求并产生派生的读请求以访问系统存储器104并从系统存储器104读压缩片。L2高速缓存350通过交叉器单元210将派生的读请求发送给PCIe接口402。PCIe接口402确定是否派生的读请求标记为特殊,并因此将派生的读请求在PCIe总线401上路由。如果派生的读请求标记为特殊,那么系统存储器104在VC1上返回与派生的读请求相关的读完成,因此避免了当写请求在PCIe总线401上待决时可能发生的死锁条件。L2高速缓存350接收从派生的请求返回的压缩的数据,对压缩的数据解压缩,将写数据与解压缩的数据合并,压缩合并的数据并将压缩的、合并的数据写回到系统存储器104。
将CPU102发出的请求标记为特殊,并也将响应那些请求产生的派生的读请求标记为特殊,由于与标记为特殊的请求相关的读完成在VC1而不是VC0上发送,因此允许避免死锁。使用标准的(非PCIe)总线协议技术,请求也可以标记为“灵活排序”或以其他方式标记,其指示读完成可以不用考虑排序规则返回。虽然这个技术参考可能产生死锁的特定环境在上面做了描述,但是本领域的技术人员将理解的是,将CPU102发出的请求标记为特殊,并也将响应那些请求产生的派生的读请求标记为特殊,当PCIe总线401具有待决的写请求时,允许避免死锁。
图5是根据本发明一个实施例的避免死锁的方法步骤的流程图。本领域的技术人员将理解的是,虽然该方法500结合图1-4的系统做了描述,但是配置为以任何顺序实施方法步骤的任何系统都在本发明的范围中。
如图所示,方法500开始于步骤502,其中MMU仲裁器408从主机404或客户端406A-406N之一接收请求。请求可以是读请求或写请求。另外,请求可以以L2高速缓存350、并行处理存储器204或系统存储器104为目标。在步骤504,MMU仲裁器408检查与请求相关的引擎ID。引擎ID指示请求的来源。例如,请求可能从客户端406A-406N之一发送,或者作为替换,可能通过主机404从CPU102发送。在步骤506,MMU仲裁器408确定是否CPU102发送了请求。如果引擎ID指示CPU102发送请求,那么方法500进行到步骤508。在步骤506,如果MMU仲裁器408确定CPU102没有发送请求,那么方法500进行到步骤518。
在步骤508,MMU仲裁器408将请求标记为特殊。MMU仲裁器408配置为将在请求中的位设置为“1”以指示该请求从CPU102发送。在步骤510,请求使得派生的读请求产生。请求使得派生的读请求在不同环境下产生。例如,当需要读系统存储器104以使MMU410可以实施虚拟到物理地址转换时,MMU410产生以系统存储器104为目标的派生的读请求。可替换地,当需要读系统存储器104以使L2高速缓存350可以确定高速缓存行的压缩状态时,L2高速缓存350产生以系统存储器104为目标的派生的读请求。初始请求使得派生的读请求产生的各种其他情况是可能的。
在步骤512,派生的读请求标记为特殊。当MMU410产生派生的读请求时,MMU410将派生的读请求标记为特殊。当L2高速缓存350产生派生的读请求时,L2高速缓存350将派生的读请求标记为特殊。如果并行处理子系统202的另外部件产生派生的读请求时,该部件将派生的读请求标记为特殊。在步骤514,PCIe接口402接收和检查请求。该请求可以是派生的读请求或可替换地是不同的请求。
在步骤516,PCIe接口402确定是否请求标记为特殊。如果请求没有标记为特殊,那么方法500进行到步骤518,其中PCIe接口402将请求和与请求相关的读完成通过PCIe总线401的VC0路由。如果请求标记为特殊,方法500进行到步骤520,且PCIe接口402将请求和与请求相关的读完成通过PCIe总线401的VC1路由。然后方法终止。
总之,并行处理单元(PPU)将接收自中央处理单元(CPU)的请求标记为“特殊”,使得响应请求产生的派生的读请求也标记为特殊并因此在外围部件接口快速(PCIe)总线的辅助虚拟通道上路由。PPU将标记为特殊的请求通过外围部件接口快速(PCIe)总线的虚拟通道(VC)1发送。如果标记为特殊的请求产生读完成,那么读完成通过PCIe总线的VC1返回。
有利地,由于与标记为特殊的请求相关的读完成在不同的虚拟通道上发送,因此从标记为特殊的请求返回的读完成当在VC0上已经有写请求时不会造成死锁。
因此,本发明的实施例提供了使用传播通过结构的状态位用于识别和标记由CPU102发出给并行处理子系统202的可能造成死锁的一定请求(例如读和写请求)的且由该请求产生的任何派生的事务也用该状态位标记的技术。在其他实施例中,标准总线接口限定的机制(例如“灵活排序”)可以用于避免死锁。
要注意的是,由并行处理子系统202发送给系统存储器104的一定事务不会造成死锁且因此不在第二虚拟通道上传输。例如,用作同步基元的或者另外基于读完成不超过写请求的排序规则的事务在第一虚拟通道上发送。例如,当并行处理子系统202发出信号收集以检测CPU102向并行处理存储器204的写何时完成时,读完成保证了所有较早的CPU启动的写事务已经到达连贯点。
本发明的一个实施例可以实施为与计算机系统使用的程序产品。程序产品的程序限定了实施例(包括本文描述的方法)的功能且能包含在各种计算机可读存储介质中。示例的计算机可读存储介质包括但不限于:(i)其上信息被永久存储的不可写存储介质(例如,计算机中的只读存储器设备,诸如由CD-ROM驱动器可读取的CD-ROM盘、闪存、ROM芯片或任何类型的固态非易失半导体存储器);和(ii)其上存储可改变信息的可写存储介质(例如,软盘驱动器中的软盘或硬盘驱动器或任何类型的固态随机存取半导体存储器)。
上面已经参考特定实施例对本发明进行了描述。但是,本领域的技术人员将理解的是,在不背离如所附的权利要求阐明的本发明的较宽的精神和范围的情况下,可以对特定实施例作出各种修改和改变。因此前述的描述和附图是示例性的而不是限制性的。

Claims (10)

1.一种计算机系统,包括:
第一处理单元、第二处理单元、存储器桥、系统存储器和通过第一虚拟通道和第二虚拟通道将该第二处理单元连接到该第一处理单元、该存储器桥和该系统存储器的总线;
其中该第二处理单元包括总线接口单元,该总线接口单元配置为:(i)从该第一处理单元通过该第一虚拟通道接收读或写请求;和(ii)将在处理该读或写请求时产生的派生的读请求在该第二虚拟通道上发送。
2.根据权利要求1的计算机系统,其中该第二处理单元进一步包括具有转换后备缓冲器的存储器管理单元,且当在该转换后备缓冲器中发生缺失时该存储器管理单元产生该派生的读请求。
3.根据权利要求1的计算机系统,进一步包括用于该第二处理单元的本地存储器,其中该第二处理单元通过高速缓存存储器单元与该本地存储器连接且该高速缓存存储器单元产生该派生的读请求。
4.根据权利要求3的计算机系统,其中当该读或写请求访问没有存储在该高速缓存存储器单元中的压缩状态信息时,该高速缓存存储器单元产生该派生的读请求。
5.根据权利要求3的计算机系统,其中当该读或写请求从该系统存储器的压缩的区域访问数据时,该高速缓存存储器单元产生该派生的读请求。
6.根据权利要求1的计算机系统,其中该第二处理单元进一步包括存储器管理单元仲裁器,该存储器管理单元仲裁器配置为从多个客户端接收读或写请求,且如果读或写请求接收自该第一处理单元,将该读或写请求标记为特殊。
7.根据权利要求6的计算机系统,其中该客户端的每个具有客户端标识符且该存储器管理单元仲裁器配置为检查与每个读或写请求相关的该客户端标识符。
8.根据权利要求1的计算机系统,其中该第一处理单元是中央处理单元,该第二处理单元是并行处理单元,和该总线是PCIe总线。
9.在具有第一处理单元、第二处理单元、存储器桥、系统存储器和将该第二处理单元连接到该第一处理单元、该存储器桥和该系统存储器的总线的计算机系统中,一种在第二处理单元处理读或写请求的方法,包括以下步骤:
通过该总线的第一虚拟通道在该第二处理单元接收读或写请求;
当处理该读或写请求时在该第二处理单元产生一个或多个派生的读请求并将该派生的读请求通过该总线的第二虚拟通道发送给该系统存储器;和
通过该总线的该第二虚拟通道接收该派生的读请求的完成,和
完成该最初接收的读或写请求。
10.根据权利要求9的方法,其中在处理该读或写请求时,当访问该系统存储器的压缩的区域时,产生该派生的读请求。
CN200910249698XA 2008-12-12 2009-12-14 通过标记cpu流量为特殊来避免死锁 Pending CN101901198A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510605017.4A CN105302524A (zh) 2008-12-12 2009-12-14 通过标记cpu流量为特殊来避免死锁

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/334,394 US8392667B2 (en) 2008-12-12 2008-12-12 Deadlock avoidance by marking CPU traffic as special
US12/334,394 2008-12-12

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510605017.4A Division CN105302524A (zh) 2008-12-12 2009-12-14 通过标记cpu流量为特殊来避免死锁

Publications (1)

Publication Number Publication Date
CN101901198A true CN101901198A (zh) 2010-12-01

Family

ID=41572725

Family Applications (2)

Application Number Title Priority Date Filing Date
CN200910249698XA Pending CN101901198A (zh) 2008-12-12 2009-12-14 通过标记cpu流量为特殊来避免死锁
CN201510605017.4A Pending CN105302524A (zh) 2008-12-12 2009-12-14 通过标记cpu流量为特殊来避免死锁

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201510605017.4A Pending CN105302524A (zh) 2008-12-12 2009-12-14 通过标记cpu流量为特殊来避免死锁

Country Status (6)

Country Link
US (1) US8392667B2 (zh)
JP (1) JP5127815B2 (zh)
KR (1) KR101086507B1 (zh)
CN (2) CN101901198A (zh)
DE (1) DE102009047518B4 (zh)
GB (1) GB2466106B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103532876A (zh) * 2013-10-23 2014-01-22 中国科学院声学研究所 数据流的处理方法与系统
WO2018019009A1 (zh) * 2016-07-25 2018-02-01 中兴通讯股份有限公司 一种数据处理方法和系统,外围组件快速互连设备及主机
CN109343984A (zh) * 2018-10-19 2019-02-15 珠海金山网络游戏科技有限公司 数据处理方法、系统、计算设备及存储介质
CN109582589A (zh) * 2017-09-28 2019-04-05 瑞萨电子株式会社 半导体设备及存储器访问方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539130B2 (en) * 2009-09-24 2013-09-17 Nvidia Corporation Virtual channels for effective packet transfer
US8789170B2 (en) * 2010-09-24 2014-07-22 Intel Corporation Method for enforcing resource access control in computer systems
CN102497527B (zh) * 2011-12-16 2013-11-27 杭州海康威视数字技术股份有限公司 多处理器视频处理系统及其中的视频图像同步传输与显示方法
US9324126B2 (en) * 2012-03-20 2016-04-26 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
US9075952B2 (en) * 2013-01-17 2015-07-07 Intel Corporation Controlling bandwidth allocations in a system on a chip (SoC)
US9229688B2 (en) 2013-03-14 2016-01-05 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
US10019375B2 (en) 2016-03-02 2018-07-10 Toshiba Memory Corporation Cache device and semiconductor device including a tag memory storing absence, compression and write state information
US9996471B2 (en) * 2016-06-28 2018-06-12 Arm Limited Cache with compressed data and tag
KR102588143B1 (ko) 2018-11-07 2023-10-13 삼성전자주식회사 메모리 컨트롤러를 포함하는 스토리지 장치 및 메모리를 포함하는 전자 시스템을 동작시키는 방법
CN111382849B (zh) * 2018-12-28 2022-11-22 上海寒武纪信息科技有限公司 数据压缩方法、处理器、数据压缩装置及存储介质
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11360920B2 (en) * 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
US11412075B2 (en) 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696927A (en) * 1995-12-21 1997-12-09 Advanced Micro Devices, Inc. Memory paging system and method including compressed page mapping hierarchy
US6104417A (en) 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US6026451A (en) * 1997-12-22 2000-02-15 Intel Corporation System for controlling a dispatch of requested data packets by generating size signals for buffer space availability and preventing a dispatch prior to a data request granted signal asserted
US6349372B1 (en) 1999-05-19 2002-02-19 International Business Machines Corporation Virtual uncompressed cache for compressed main memory
US6950438B1 (en) 1999-09-17 2005-09-27 Advanced Micro Devices, Inc. System and method for implementing a separate virtual channel for posted requests in a multiprocessor computer system
WO2002015470A2 (en) 2000-08-17 2002-02-21 Advanced Micro Devices, Inc. System and method for separate virtual channels for posted requests in a multiprocessor system
US6574708B2 (en) * 2001-05-18 2003-06-03 Broadcom Corporation Source controlled cache allocation
US6807599B2 (en) * 2001-10-15 2004-10-19 Advanced Micro Devices, Inc. Computer system I/O node for connection serially in a chain to a host
US20050237329A1 (en) * 2004-04-27 2005-10-27 Nvidia Corporation GPU rendering to system memory
US7165131B2 (en) 2004-04-27 2007-01-16 Intel Corporation Separating transactions into different virtual channels
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7499452B2 (en) * 2004-12-28 2009-03-03 International Business Machines Corporation Self-healing link sequence counts within a circular buffer
CN100543770C (zh) * 2006-07-31 2009-09-23 辉达公司 用于gpu中的页映射的专门机制
US20080028181A1 (en) 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103532876A (zh) * 2013-10-23 2014-01-22 中国科学院声学研究所 数据流的处理方法与系统
WO2018019009A1 (zh) * 2016-07-25 2018-02-01 中兴通讯股份有限公司 一种数据处理方法和系统,外围组件快速互连设备及主机
CN109582589A (zh) * 2017-09-28 2019-04-05 瑞萨电子株式会社 半导体设备及存储器访问方法
CN109582589B (zh) * 2017-09-28 2023-12-15 瑞萨电子株式会社 半导体设备及存储器访问方法
CN109343984A (zh) * 2018-10-19 2019-02-15 珠海金山网络游戏科技有限公司 数据处理方法、系统、计算设备及存储介质
CN109343984B (zh) * 2018-10-19 2020-05-19 珠海金山网络游戏科技有限公司 数据处理方法、系统、计算设备及存储介质

Also Published As

Publication number Publication date
CN105302524A (zh) 2016-02-03
GB0920727D0 (en) 2010-01-13
JP2010140480A (ja) 2010-06-24
DE102009047518A1 (de) 2010-07-08
KR101086507B1 (ko) 2011-11-23
GB2466106B (en) 2011-03-30
GB2466106A (en) 2010-06-16
US8392667B2 (en) 2013-03-05
KR20100068225A (ko) 2010-06-22
JP5127815B2 (ja) 2013-01-23
US20100153658A1 (en) 2010-06-17
DE102009047518B4 (de) 2014-07-03

Similar Documents

Publication Publication Date Title
CN101901198A (zh) 通过标记cpu流量为特殊来避免死锁
CN101739357B (zh) 多类数据高速缓存策略
CN101714247B (zh) 单通道镶嵌
CN101751285B (zh) 用于不同种类处理单元的集中式设备虚拟化层
US7516301B1 (en) Multiprocessor computing systems with heterogeneous processors
JP5142299B2 (ja) 圧縮状態ビットキャッシュ及びバッキング記憶装置
CN103309786B (zh) 用于在非可抢占式图形处理单元上交互调试的方法和装置
CN102696023B (zh) 用于访问并行存储器空间的统一寻址和指令
US10169072B2 (en) Hardware for parallel command list generation
US8542247B1 (en) Cull before vertex attribute fetch and vertex lighting
US9589310B2 (en) Methods to facilitate primitive batching
US8698802B2 (en) Hermite gregory patch for watertight tessellation
GB2492653A (en) Simultaneous submission to a multi-producer queue by multiple threads
US8624910B2 (en) Register indexed sampler for texture opcodes
CN103810743A (zh) 在上游着色器中设置下游渲染状态
US9436969B2 (en) Time slice processing of tessellation and geometry shaders
GB2491490A (en) Emitting coherent output from multiple execution threads using the printf command
US8564616B1 (en) Cull before vertex attribute fetch and vertex lighting
US8310482B1 (en) Distributed calculation of plane equations
US8570916B1 (en) Just in time distributed transaction crediting
US8489839B1 (en) Increasing memory capacity of a frame buffer via a memory splitter chip
US8704835B1 (en) Distributed clip, cull, viewport transform and perspective correction
US8976185B2 (en) Method for handling state transitions in a network of virtual processing nodes
US9147224B2 (en) Method for handling state transitions in a network of virtual processing nodes
US9542192B1 (en) Tokenized streams for concurrent execution between asymmetric multiprocessors

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20101201