CN104025065A - 用于存储器层次察觉的生产者-消费者指令的装置和方法 - Google Patents
用于存储器层次察觉的生产者-消费者指令的装置和方法 Download PDFInfo
- Publication number
- CN104025065A CN104025065A CN201180075875.2A CN201180075875A CN104025065A CN 104025065 A CN104025065 A CN 104025065A CN 201180075875 A CN201180075875 A CN 201180075875A CN 104025065 A CN104025065 A CN 104025065A
- Authority
- CN
- China
- Prior art keywords
- gpu
- data
- instruction
- core
- sign
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 239000000872 buffer Substances 0.000 claims abstract description 14
- 238000003860 storage Methods 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims 4
- 230000004888 barrier function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 201000006549 dyspepsia Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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 or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
- G09G5/006—Details of the interface to the display terminal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了一种装置和方法,该装置和方法能够高效地将数据从中央处理器(CPU)的核传输到图形处理器(GPU)。举例来说,本方法的实施例包括:将数据写入CPU的核中的缓冲器直至写入指定的数据量;当检测到指定的数据量已被写入,相应地生成逐出循环,该逐出循环将数据从缓冲器传输到核和GPU都能访问的高速缓存中;设置标识向GPU指示高速缓存中的数据可用;当GPU检测到该标识时,一旦收到GPU发出的读取信号就将数据从高速缓存传输给GPU。
Description
背景
发明领域
本发明一般涉及计算机处理器领域。具体而言,本发明涉及用于存储器层次察觉的生产者-消费者指令的一种装置和方法。
相关领域描述
在CPU101和GPU102以CPU为生产者且GPU为消费者的生产者-消费者模式工作的模型中,两者之间的数据传输如图1所示。图例中的CPU包含有多级高速缓存结构,多级高速缓存结构包括:第一级(L1)高速缓存110(有时被称作上级高速缓存(ULC));第二级(L2)高速缓存111(有时被称作中级高速缓存(MLC));第三级(L3)高速缓存112(有时被称作低级高速缓存(LLC))。GPU102和CPU101都连接到L3高速缓存和主存储器100。
要将数据提供给GPU,CPU会对主存储器实施非瞬态存储操作。本文中的非瞬态存储是指使用CPU近期内不需要的数据的存储操作。因此,该存储操作指向主存储器而非体系结构中的某一级高速缓存。非瞬态存储可以用例如非缓冲随机混合写入(USWC)存储器类型或者非瞬态存储指令(例如,MovNT存储指令)来实现。使用USWC操作,数据不被高速缓存,但是CPU可以在将数据一路直接传送到主存储器之前将数据组合到CPU中的写组合(WC)缓冲器中。USWC操作还允许以乱序方式从存储器中读取数据。
非瞬态存储本质上是弱排序的,意味着数据的访问顺序可以偏离程序执行所指定的顺序。举例而言,程序可指定操作顺序“存储A,然后存储B”,但CPU中的操作也许是存储B然后存储A。因为非瞬态存储的这种特性,需要屏障(Fence)指令来强迫所有存储按照每一个程序执行来排序。屏障指令保证屏障指令之前和之后的存储器操作按照强制顺序执行,从而对CPU中的所有弱排序指令进行排序。
在使用屏障指令将数据成功写入主存储器并排序后,屏障产生者写入一个标志,通知消费者(本示例中的GPU)数据已经就绪。消费者(可以轮询或者诸如中断之类的其它方法)观察到该标志已被写入,并生成无序数据获取事务(读取)来读取数据。
因为上述方法中CPU的存储操作和GPU的读取操作都必须一路直接通过主存储器100,所以有低延时和低带宽的缺点。因此,CPU和GPU的数据传输需要一个更高效的机制。
附图说明
为更好理解本发明,可以结合以下绘图配合的详细描述,其中:
图1描述了CPU和GPU之间交换数据的现有处理器体系结构。
图2描述了依照本发明实施例的CPU和GPU之间交换数据的处理器体系结构。
图3描述了CPU和GPU之间交换数据的方法的实施例。
图4描述了应用本发明实施例的计算机系统。
图5描述了应用本发明实施例的另一个计算机系统。
图6描述了应用本发明实施例的另一个计算机系统。
详细描述
为便于说明,在以下的描述中会列举大量具体细节以便透彻理解下文描述的本发明实施例。然而,对本领域技术人员显而易见,本发明实施例可以脱离这些具体细节实现。在另外一些情况下,在框图形式中使用广泛认可的结构和设备,以避免难以理解本发明实施例的基础原理。
在一个实施例中,不同于先前实现中将数据一路直接存储到主存储器,对CPU和GPU共用的最高级高速缓存被用来交换数据。举例来说,如果CPU和GPU对第三级(L3)高速缓存(有时也被称为较低级缓存)都可以进行读/写访问,那么L3高速缓存就可以被用来交换数据。然而,本发明的基础原理并不限于使用任何特定级的高速缓存来交换数据。
如图2所示,本发明的一个实施例在多核中央处理器(CPU)201内实现。为简化描述,本发明的该实施例细节表现为单核211,但是其基础原理同等适用于CPU201的所有核(例如,核1219),和/或诸个单核CPU。CPU-GPU生产者-消费者逻辑211来实现在此描述的与图形处理器(GPU)220的交换数据技术。在操作过程中,CPU-GPU生产者-消费者逻辑211首先将待交换数据写入写组合缓冲器210。高速缓存(例如L1,L2,L3缓存,分别为212,213,214)以固定大小(在某一个特定实施例中为64个字节)的缓存线工作,尽管通常存储操作的大小可以从4个字节到64个字节变化。在实施例中,写组合缓冲器210被用来组合多个存储直至整条缓存线被填满,然后数据将在各级高速缓存之间移动。这样,在图2所示的例子中,数据将被写入写组合缓冲器210直至存储到与整条缓存线相等大小的区域。然后会生成一个逐出循环,数据从写组合缓冲器210移动到L2高速缓存213,接着从L2高速缓存移动到L3高速缓存。然而,与之前实现不同的是,从CPU-GPU生产者-消费者逻辑211发出的信号会通知L3高速缓存214为与GPU交换的数据保存一份数据拷贝(而不是将数据一路直接写入主存储器)。
接着CPU-GPU生产者-消费者逻辑211写入标志225,表示数据已经准备好传输。在实施例中,标志225仅有一位(例如,‘1’表示L3高速缓存中的数据已就绪)。GPU220通过周期性轮询或者中断,来读取标志225以确定数据是否就绪,一旦它得知L3高速缓存(或者是与CPU201共用的其它最高级高速缓存)中的数据已经就绪,GPU220就开始读取数据。
图3描述了本发明实施例的一种方法。该方法可以在图2所示的体系结构范围中实现,但并不限于任何特定体系结构。
在301,数据被存储到CPU内的写组合缓冲器。如上所述,一个与整条高速缓存线大小相等的数据块会被存储到写组合缓冲器中。一旦缓冲器满(例如,达到高速缓存线的大小)302,就在303中生成一个逐出循环。该逐出循环始终存在,直至数据被存储到CPU和GPU共用的高速缓存级,这由304决定。在305,设定标志来表示数据是否可以被GPU获得,在306,GPU从高速缓存中读取数据。
在一个实施例中,利用一个特定指令将数据传输到写组合缓冲器并随后被逐出到L3高速缓存,在这里该指令被称为MovNonAllocate(MovNA)指令。如图4a所示,在一个实施例中,诸个单独MovNA指令可以互相交织,并且如箭头所示地与其它写回(WB)存储指令交织(也就是说,写跳过是被允许的),从而提高了性能(也就是说,存储器排序语义越弱,系统可以运行的越快)。在此实现中,当需要时用户可以利用屏障指令来强制获得强排序。正如本领域技术人员的理解,屏障指令是一种屏障,并且是一类指令,使得中央处理器(CPU)或编译器对屏障指令之前和之后的存储器操作强制执行排序约束。
在另一个实现中,如图4b所示,诸个单独的MovNA指令可以相互交织,但如箭头中的X所示不可以与其它写回(WB)存储指令交织(也即,写跳过不被允许)。虽然这种实现降低了性能(也即,存储器排序语义越强,系统运行的越慢),但它不需要用户发出屏障指令来确保正确的指令排序。
参考图5,所示为依照本发明实施例的另一种计算机系统400的框图。系统400包括一个或多个处理单元410,415,它们都连接到图形存储器控制器中心(GMCH)420。附加的处理单元415的可选属性在图5中用虚线指示。
每个处理单元可以是单核,或者可以包含多核。在处理核心之外,处理单元还可以可选地包括其它管芯上(on die)单元,例如集成式存储器控制器和/或集成式I/O控制逻辑。另外,对至少一个实施例,处理单元的(诸个)核可以是多线程的,因为每个核中包含一个以上的硬件线程上下文。
图5描述了GMCH420连接到诸如动态随机存储器(DRAM)之类的存储器440。对于至少一个实施例,该DRAM与非易失性高速缓存相关。
GMCH420可以是一个芯片组,或者芯片组的部分。GMCH420可以与处理器410,415相互通讯,并控制处理器410,415与存储器440之间的交互。GMCH420也可以作为处理器410,415与系统400的其它单元之间的加速总线接口。在至少一个实施例中,GMCH420通过诸如前端总线(FSB)495之类的多点总线与处理器410,415通讯。
更进一步,GMCH420与显示器440(例如平板显示器)相连接。GMCH420可以包含集成式图形加速器。GMCH420进一步连接到输入/输出(I/O)控制中心(ICH)450,ICH450可以被用来将各种外部设备连接到系统400。例如在本实施例的图4中示出了外部图形设备460和另一个外部设备470一起,外部图形设备460可以是连接到ICH450的离散图形设备。
另外,附加的或者不同的处理单元也可以出现在系统400中。举例来说,附加处理单元415可以包括:与处理器410相同的附加处理器、与处理器410异构的或不对称的附加处理器、加速器(例如图形加速器或者数字信号处理(DSP)单元)、现场可编程门阵列、或者其它任何处理元件。物理资源410和415在包括体系体系结构、微体系结构、热、功耗特性等诸如此类的一系列价值度量方面可以存在各种差异。这些差异可以有效地体现处理单元410,415之间的非对称性和异构性。对于至少一个实施例,不同的处理元件410,415可以驻留在同一个管芯封装中。
图6的框图描述了本发明的一些实施例中可能使用的另一种示例性数据处理系统。举例来说,数据处理系统500可以是:手持计算机、个人数字助理(PDA)、移动电话、便携式游戏系统、便携式媒体播放器、平板电脑或者是包括有移动电话、媒体播放器和/或游戏系统的手持式计算设备。再如,数据处理系统500可以是网络计算机或者是另一个设备中的嵌入式处理设备。
根据本发明的一个实施例,数据处理系统900的示例性体系结构可被用于上述的移动设备。数据处理系统900包括处理系统520,处理系统520可以包括多个微处理器和/或集成电路上系统。处理系统520耦合到存储器910、供电电源525(可以有一个或多个电池)、音频输入/输出设备540、显示控制器和显示设备560、可选输入/输出设备550、输入设备570、以及无线收发器530。在本发明的某些实施例中,图5中未显示的其它组件也可以是数据处理系统500的一部分;在本发明的某些实施例中,使用了比图5中更少的组件,这些都可以被接受。另外,用图5中未显示的一条或多条总线来互连各种组件,已为本领域所熟知,同样可以被接受。
存储器510可存储用于数据处理系统500的执行的数据和/或程序。音频输入/输出设备540可包括麦克风,和/或扬声器用来比如播放音乐,和/或通过扬声器和麦克风提供电话功能。显示控制器和显示设备560可包括图形用户界面(GUI)。无线(例如射频RF)收发器530(例如,WiFi收发器,红外收发器,蓝牙收发器,无线蜂窝电话收发器等)可被用于与其它数据处理系统通讯。单个或多个输入设备570允许用户给系统提供输入。这些输入设备可以是小键盘,键盘,触控面板,多点触控面板等。可选的其它输入/输出设备550可以是为扩展坞准备的连接器。
本发明的其它实施例可以实现到蜂窝电话和寻呼机(例如,软件嵌入在其中的微芯片中),手持式计算设备(例如个人数字助理,智能手机),和/或按键式电话中。然而,需要指出的是,本发明的基础原理不限于任何特定类型的通讯设备或通讯媒介
本发明的实施例可包括上文描述的各种步骤。这些步骤可以在机器可执行指令中体现,该指令可被用于让通用处理器或专用处理器执行这些步骤。或者,这些步骤可以由含有为执行这些步骤的电路逻辑的专用硬件组件来执行,或由可编程计算机组件和自定义硬件组件的任何组合来执行。
本发明的单元也可以是计算机程序产品,可包括存储有相关指令的机器可读介质,该指令用来为计算机(或其它电子设备)编程来执行相关程序。机器可读介质包括但不限于:软盘,光盘,CD-ROM,以及磁光盘,ROM,RAM,EPROM,EEPROM,磁卡或光卡,传播媒体或其它适于存储电子指令的媒体/机器可读介质。例如,本发明可被作为计算机程序产品下载,在这种情况下,程序可被从远程计算机(例如服务器)以数字信号通过通讯链路上的载波或者通过通讯链路上的其它传播媒介(例如调制解调器或网络连接)传输到请求计算机(例如客户机)。
为便于说明,通篇详细描述中,大量详细细节被陈述以便于透彻理解本发明。然而,对本领域技术人员显而易见,本发明可以脱离某些具体细节实现。在某些实例中,广泛熟知的结构和功能未被详细描述以避免偏离本发明的主题。相应地,本发明的范围和精神需要在以下的权利要求条款中进行判断。
Claims (25)
1.一种将数据块从中央处理器(CPU)的核传输给图形处理器(GPU)的方法,包括:
将数据写入所述CPU的所述核中的缓冲器直至指定量的数据已被写入;
当检测到所述指定量的数据已被写入,相应地生成逐出循环,所述逐出循环将所述数据从所述缓冲器传输到所述核和所述GPU都能访问的高速缓存中;
设置标识向所述GPU指示所述高速缓存中的数据可用;以及
当所述GPU检测到所述标识时,一旦收到来自所述GPU的读取信号就将所述数据从所述高速缓存传输给所述GPU。
2.如权利要求1所述的方法,其特征在于,所述标识包括由所述核可写且由所述GPU可读的标志。.
3.如权利要求2所述的方法,其特征在于,所述标志包括二进制数值指示,所述二进制数值指示具有第一值和第二值,所述第一值表示所述高速缓存中的所述数据可访问,所述第二值表示所述高速缓存中的所述数据不可访问。
4.如权利要求1所述的方法,其特征在于,所述GPU通过轮询技术读取所述标识,在所述轮询技术中所述GPU周期性读取对所述标识的轮询。
5.如权利要求1所述的方法,其特征在于,所述GPU响应中断信号读取所述标识。
6.如权利要求1所述的方法,其特征在于,所述核响应于所述核对第一指令的执行而执行所述方法的操作。
7.如权利要求6所述的方法,其特征在于,所述第一指令包括MovNonAllocate存储指令。
8.如权利要求6所述的方法,其特征在于,进一步包括:
允许所述第一指令与相同类型的多个其它指令交织。
9.如权利要求8所述的方法,其特征在于,进一步包括:
允许所述第一指令与不同类型的多个其它指令交织。
10.如权利要求9所述的方法,其特征在于,所述其它指令是写回存储指令,所述第一指令是MovNonAllocate存储指令。
11.如权利要求1所述的方法,其特征在于,所述CPU内的所述缓冲器是写回缓冲器,其中所述核与所述GPU均能访问的所述高速缓存是第三级(L3)缓存。
12.如权利要求1所述的方法,其特征在于,所述CPU包括多个核,每个核都能执行所述方法。
13.一种指令处理装置,包括:
至少一个核以及能被所述核与GPU访问的高速缓存;
CPU-GPU生产者-消费者逻辑,配置为执行以下操作:
将数据写入所述CPU的所述核中的缓冲器直至指定量的数据已被写入;
当检测到所述指定量的数据已被写入,相应地生成逐出循环,所述逐出循环将所述数据从所述缓冲器传输到所述核和所述GPU都能访问的高速缓存中;以及
设置标识向所述GPU指示所述高速缓存中的数据可用;
其中当所述GPU检测到所述标识,一旦收到来自所述GPU的读取信号时将所述数据从所述高速缓存传输给所述GPU。
14.如权利要求13所述指令处理装置,其特征在于,所述标识包括由所述核可写且由所述GPU可读的标志。
15.如权利要求14所述的指令处理装置,其特征在于,所述标志包括二进制数值指示,所述二进制数值指示具有第一值和第二值,所述第一值表示所述高速缓存中的所述数据可访问,所述第二值表示所述高速缓存中的所述数据不可访问。
16.如权利要求13所述指令处理装置,其特征在于,所述GPU通过轮询技术读取所述标识,在所述轮询技术中所述GPU周期性读取对所述标识的轮询。
17.如权利要求13所述指令处理装置,其特征在于,所述GPU响应中断信号读取所述标识。
18.如权利要求13所述指令处理装置,所述核响应于所述核对第一指令的执行而执行所述指令处理装置的操作。
19.如权利要求18所述指令处理装置,其特征在于,所述第一指令包括MovNonAllocate存储指令。
20.如权利要求18所述指令处理装置,其特征在于,所述CPU-GPU生产者-消费者逻辑允许所述第一指令与相同类型的多个其它指令交织。
21.如权利要求20所述指令处理装置,其特征在于,所述CPU-GPU生产者-消费者逻辑允许所述第一指令与不同类型的多个其它指令交织。
22.如权利要求21所述指令处理装置,其特征在于,所述其它指令是写回存储指令,所述第一指令是MovNonAllocate存储指令。
23.如权利要求13所述指令处理装置,其特征在于,所述CPU内的缓冲器是写回缓冲器,其中所述核与所述GPU均能访问的所述高速缓存是第三级(L3)缓存。
24.如权利要求13所述指令处理装置,其特征在于,所述CPU包括多个核,每个核都有执行指定操作的CPU-GPU生产者-消费者逻辑。
25.一种计算机系统,包括:
图形处理器(GPU),用于处理一组图形指令来呈现视频;和
中央处理器,包括:
至少一个核以及能被所述核和所述GPU访问的高速缓存;
CPU-GPU生产者-消费者逻辑,被配置以执行以下操作:
将数据写入所述CPU的所述核中的缓冲器直至指定量的数据已被写入;
当检测到所述指定量的数据已被写入,相应地生成逐出循环,所述逐出循环将所述数据从所述缓冲器传输到所述核和所述GPU都能访问的高速缓存中;以及
设置标识向所述GPU指示所述高速缓存中的数据可用;
其中当所述GPU检测到所述标识,一旦收到来自所述GPU的读取信号时就将所述数据从所述高速缓存传输给所述GPU。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/066674 WO2013095475A1 (en) | 2011-12-21 | 2011-12-21 | Apparatus and method for memory-hierarchy aware producer-consumer instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104025065A true CN104025065A (zh) | 2014-09-03 |
CN104025065B CN104025065B (zh) | 2018-04-06 |
Family
ID=48669122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075875.2A Active CN104025065B (zh) | 2011-12-21 | 2011-12-21 | 用于存储器层次察觉的生产者‑消费者指令的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9990287B2 (zh) |
CN (1) | CN104025065B (zh) |
TW (1) | TWI467513B (zh) |
WO (1) | WO2013095475A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150261535A1 (en) * | 2014-03-11 | 2015-09-17 | Cavium, Inc. | Method and apparatus for low latency exchange of data between a processor and coprocessor |
US9830676B2 (en) * | 2015-07-28 | 2017-11-28 | Intel Corporation | Packet processing on graphics processing units using continuous threads |
WO2017049583A1 (en) * | 2015-09-25 | 2017-03-30 | Intel Corporation | Gpu-cpu two-path memory copy |
US10936533B2 (en) * | 2016-10-18 | 2021-03-02 | Advanced Micro Devices, Inc. | GPU remote communication with triggered operations |
US11334355B2 (en) * | 2017-05-04 | 2022-05-17 | Futurewei Technologies, Inc. | Main processor prefetching operands for coprocessor operations |
EP3602313B1 (en) * | 2017-12-04 | 2022-02-02 | Google LLC | Synchronized processing of data using a system-on-chip |
US20200334084A1 (en) * | 2019-04-16 | 2020-10-22 | Kazuhm, Inc. | Distributed in-platform data storage utilizing graphics processing unit (gpu) memory |
US11861758B2 (en) * | 2021-03-12 | 2024-01-02 | Nvidia Corporation | Packet processing acceleration using parallel processing |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530933A (en) * | 1994-02-24 | 1996-06-25 | Hewlett-Packard Company | Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus |
US6073210A (en) * | 1998-03-31 | 2000-06-06 | Intel Corporation | Synchronization of weakly ordered write combining operations using a fencing mechanism |
US20030108053A1 (en) * | 2001-12-10 | 2003-06-12 | Nec Corporation | Node-to-node data transfer method and node-to-node data transfer apparatus |
CN1425154A (zh) * | 1999-12-30 | 2003-06-18 | 英特尔公司 | 高速缓冲存储器线清洗微结构执行方法和系统 |
US20060095672A1 (en) * | 2003-06-30 | 2006-05-04 | Microsoft Corporation | System and method for parallel execution of data generation tasks |
CN1783033A (zh) * | 2004-11-19 | 2006-06-07 | 英特尔公司 | 共享公共高速缓存的异构处理器 |
US20060150010A1 (en) * | 2005-01-03 | 2006-07-06 | Stiffler Jack J | Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support |
US20100070730A1 (en) * | 2008-09-17 | 2010-03-18 | Sebastian Pop | Minimizing memory access conflicts of process communication channels |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630075A (en) | 1993-12-30 | 1997-05-13 | Intel Corporation | Write combining buffer for sequentially addressed partial line operations originating from a single instruction |
US5623628A (en) | 1994-03-02 | 1997-04-22 | Intel Corporation | Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue |
US6052769A (en) * | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6513099B1 (en) | 1998-12-22 | 2003-01-28 | Silicon Graphics Incorporated | Enhanced graphics cache memory |
US6598128B1 (en) | 1999-10-01 | 2003-07-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6848031B2 (en) | 2002-01-02 | 2005-01-25 | Intel Corporation | Parallel searching for an instruction at multiple cache levels |
US7120755B2 (en) | 2002-01-02 | 2006-10-10 | Intel Corporation | Transfer of cache lines on-chip between processing cores in a multi-core system |
US8141068B1 (en) | 2002-06-18 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Compiler with flexible scheduling |
JP2005165592A (ja) | 2003-12-02 | 2005-06-23 | Matsushita Electric Ind Co Ltd | データ転送装置 |
US7617496B2 (en) | 2004-04-23 | 2009-11-10 | Apple Inc. | Macroscalar processor architecture |
JP4212521B2 (ja) | 2004-06-30 | 2009-01-21 | 株式会社東芝 | 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム |
US20060080511A1 (en) * | 2004-10-08 | 2006-04-13 | International Business Machines Corporation | Enhanced bus transactions for efficient support of a remote cache directory copy |
US7475190B2 (en) * | 2004-10-08 | 2009-01-06 | International Business Machines Corporation | Direct access of cache lock set data without backing memory |
US7624236B2 (en) | 2004-12-27 | 2009-11-24 | Intel Corporation | Predictive early write-back of owned cache blocks in a shared memory computer system |
WO2007056669A2 (en) | 2005-11-04 | 2007-05-18 | Sandisk Corporation | Enhanced first level storage cache using nonvolatile memory |
US20080270708A1 (en) | 2007-04-30 | 2008-10-30 | Craig Warner | System and Method for Achieving Cache Coherency Within Multiprocessor Computer System |
US8327071B1 (en) | 2007-11-13 | 2012-12-04 | Nvidia Corporation | Interprocessor direct cache writes |
US8028118B2 (en) * | 2007-12-05 | 2011-09-27 | Internation Business Machines Corporation | Using an index value located on a page table to index page attributes |
US8769207B2 (en) | 2008-01-16 | 2014-07-01 | Via Technologies, Inc. | Caching method and apparatus for a vertex shader and geometry shader |
US7861065B2 (en) | 2008-05-09 | 2010-12-28 | International Business Machines Corporation | Preferential dispatching of computer program instructions |
US8332608B2 (en) | 2008-09-19 | 2012-12-11 | Mediatek Inc. | Method of enhancing command executing performance of disc drive |
US20100123717A1 (en) | 2008-11-20 | 2010-05-20 | Via Technologies, Inc. | Dynamic Scheduling in a Graphics Processor |
US8949549B2 (en) | 2008-11-26 | 2015-02-03 | Microsoft Corporation | Management of ownership control and data movement in shared-memory systems |
US8782374B2 (en) | 2008-12-02 | 2014-07-15 | Intel Corporation | Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor |
US8171223B2 (en) | 2008-12-03 | 2012-05-01 | Intel Corporation | Method and system to increase concurrency and control replication in a multi-core cache hierarchy |
US9075559B2 (en) | 2009-02-27 | 2015-07-07 | Nvidia Corporation | Multiple graphics processing unit system and method |
US8669990B2 (en) | 2009-12-31 | 2014-03-11 | Intel Corporation | Sharing resources between a CPU and GPU |
US8595510B2 (en) * | 2011-06-22 | 2013-11-26 | Media Patents, S.L. | Methods, apparatus and systems to improve security in computer systems |
TWM417730U (en) | 2011-07-08 | 2011-12-01 | Tpv Display Technology Xiamen | Integrated machine of TV and computer |
-
2011
- 2011-12-21 WO PCT/US2011/066674 patent/WO2013095475A1/en active Application Filing
- 2011-12-21 CN CN201180075875.2A patent/CN104025065B/zh active Active
- 2011-12-21 US US13/994,122 patent/US9990287B2/en active Active
-
2012
- 2012-12-11 TW TW101146624A patent/TWI467513B/zh not_active IP Right Cessation
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530933A (en) * | 1994-02-24 | 1996-06-25 | Hewlett-Packard Company | Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus |
US6073210A (en) * | 1998-03-31 | 2000-06-06 | Intel Corporation | Synchronization of weakly ordered write combining operations using a fencing mechanism |
CN1425154A (zh) * | 1999-12-30 | 2003-06-18 | 英特尔公司 | 高速缓冲存储器线清洗微结构执行方法和系统 |
US20030108053A1 (en) * | 2001-12-10 | 2003-06-12 | Nec Corporation | Node-to-node data transfer method and node-to-node data transfer apparatus |
US20060095672A1 (en) * | 2003-06-30 | 2006-05-04 | Microsoft Corporation | System and method for parallel execution of data generation tasks |
CN1783033A (zh) * | 2004-11-19 | 2006-06-07 | 英特尔公司 | 共享公共高速缓存的异构处理器 |
US20060150010A1 (en) * | 2005-01-03 | 2006-07-06 | Stiffler Jack J | Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support |
US20100070730A1 (en) * | 2008-09-17 | 2010-03-18 | Sebastian Pop | Minimizing memory access conflicts of process communication channels |
Also Published As
Publication number | Publication date |
---|---|
WO2013095475A1 (en) | 2013-06-27 |
TW201346831A (zh) | 2013-11-16 |
US9990287B2 (en) | 2018-06-05 |
CN104025065B (zh) | 2018-04-06 |
US20140192069A1 (en) | 2014-07-10 |
TWI467513B (zh) | 2015-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104025065A (zh) | 用于存储器层次察觉的生产者-消费者指令的装置和方法 | |
US8402349B2 (en) | Two dimensional data randomization for a memory | |
CN103049406B (zh) | 用于i/o流量的一致性开关 | |
US9881680B2 (en) | Multi-host power controller (MHPC) of a flash-memory-based storage device | |
US9754402B2 (en) | Graphics processing method and graphics processing apparatus | |
US11989556B2 (en) | Detecting infinite loops in a programmable atomic transaction | |
CN106708554A (zh) | 程序运行方法及装置 | |
US7752006B2 (en) | Device, system and method of generating a hardware-verification test case | |
CN104011694A (zh) | 用于存储器层次知晓的生产者-消费者指令的装置和方法 | |
US8769244B2 (en) | SIMD parallel computer system, SIMD parallel computing method, and control program | |
CN106557436A (zh) | 终端的内存压缩功能使能方法及装置 | |
CN109716306A (zh) | 动态输入/输出相干性 | |
KR20170013270A (ko) | 플래시 메모리 기반 저장 디바이스의 입력/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc) | |
US20190155239A1 (en) | Method and apparatus for remote field programmable gate array processing | |
TWI295775B (en) | Method and system to order memory operations | |
US20220108135A1 (en) | Methods and apparatus for performing a machine learning operation using storage element pointers | |
CN105074677B (zh) | 用于加速器将数据存储在缓冲器中的方法的方法和系统 | |
KR102353859B1 (ko) | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 | |
WO2019061619A1 (zh) | 一种避免线程阻塞的方法、装置及计算机设备 | |
US10504568B2 (en) | Integrated circuit memory devices with customizable standard cell logic | |
CN104025037A (zh) | 在不将数据复制到单独的储存的情况下交换指针来处理被数据源存储在缓冲器中的数据 | |
Olivito et al. | Analysis of the reconfiguration latency and energy overheads for a Xilinx Virtex‐5 field‐programmable gate array | |
US11030976B2 (en) | Image combination device and display system comprising the same | |
TWI793676B (zh) | 應用於類神經網路之填充架構 | |
US20080133819A1 (en) | DDR flash implementation with hybrid row buffers and direct access interface to legacy flash functions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |