用于提供推入缓冲器复制和存储功能的指令和逻辑的制作方法_5

文档序号:9221606阅读:来源:国知局
接口 739与高性 能图形电路738交换信息。
[0127] 共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经 由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处 理器的本地高速缓存信息可被存储在该共享的高速缓存中。
[0128] 芯片组790可经由接口 796耦合至第一总线716。在一个实施例中,第一总线716 可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总 线,但是本发明的范围不限于此。
[0129] 如图7所示,各种I/O设备714可连同总线桥718 -起耦合到第一总线716,总线 桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚 计数(LPC)总线。各种设备可以被耦合至第二总线720,在一个实施例中,这些设备包括例 如键盘和/或鼠标722、通信设备727以及诸如可包括指令/代码和数据730的盘驱动器或 其他大容量存储设备之类的存储单元728。此外,音频I/O724可耦合至第二总线720。注 意,其他架构是可能的。例如,代替图7的点对点架构,系统可实现多点总线或者其他此类 架构。
[0130] 现在参照图8,所示出的是根据本发明实施例的第三系统800的框图。图7和8中 的类似元件使用类似的附图标记,且在图8中省略了图7的某些方面以避免使图8的其他 方面模糊。
[0131] 图8示出处理器870和880可分别包括集成存储器和I/O控制逻辑("CL")872 和882。对于至少一个实施例,CL872和882可包括诸如以上结合图5和7所描述的集成 存储器控制器单元。此外,CL872、882还可包括I/O控制逻辑。图8示出不仅存储器832 和834耦合至CL872和882,而且I/O设备814也耦合至控制逻辑872和882。传统I/O 设备815耦合至芯片组890。
[0132] 现在参照图9,所示出的是根据本发明的实施例的SoC900的框图。图5中的类 似组件具有相同的标号。另外,虚线框是更先进的SoC上的可选特征。在图9中,互连单元 902被耦合至:应用处理器910,其包括一组一个或多个核502A-N以及共享高速缓存单元 506 ;系统代理单元510 ;总线控制器单元516 ;集成存储器控制器单元514 ;-组一个或多 个媒体处理器920,其可包括集成图形逻辑508、用于提供静止和/或视频照相功能的图像 处理器924、用于提供硬件音频加速的音频处理器926、用于提供视频编码/解码加速的视 频处理器928、静态随机存取存储器(SRAM)单元930 ;直接存储器存取(DMA)单元932 ;以 及显示单元940,其用于耦合至一个或多个外部显示器。
[0133] 图10示出处理器,包括中央处理单元(CPU)和图形处理单元(GPU),该处理器可 执行根据一个实施例的至少一条指令。在一个实施例中,执行根据至少一个实施例的操作 的指令可由CPU来执行。在另一实施例中,指令可以由GPU来执行。在又一实施例中,指令 可以由GPU和CPU所执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的 指令可被接收,并被解码,以便在GPU上执行。然而,经解码的指令中的一个或多个操作可 由CPU来执行,并且结果被返回到GPU,以便进行指令的最终引退。相反,在一些实施例中, (PU可作为主处理器,而GPU作为协处理器。
[0134] 在一些实施例中,受益于高度并行化的吞吐量处理器的指令可由GPU来执行,而 受益于处理器(这些处理器受益于深度流水线架构)性能的指令可由CPU来执行。例如, 图形、科学应用、金融应用以及其他并行工作负荷可受益于GPU的性能并相应地被执行,而 更多的序列化应用(例如,操作系统内核或应用代码)更适于CPU。
[0135] 在图10中,处理器1000包括,CPU1005、GPU1010、图像处理器1015、视频处理 器1020、USB控制器1025、UART控制器1030、SPI/SDI0控制器1035、显示设备1040、高清 晰度多媒体接口(HDMI)控制器1045、MIPI控制器1050、闪存存储器控制器1055、双数据率 (DDR)控制器1060、安全引擎1065、I2S/I2C(集成跨芯片声音/跨集成电路)接口 1070。其 他逻辑和电路(包括更多的CPU或GPU以及其他外围设备接口控制器)可被包括在图10 的处理器中。
[0136] 至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器 可读介质上的表示性数据来实现,当机器读取该表示性数据时,该表示性数据使得该机器 用于制造执行本文所述的技术的逻辑。可将此类表示(即所谓"IP核")存储在有形的机 器可读介质("磁带")上,并将其提供给各种顾客或生产设施,以便加载到实际制作该逻辑 或处理器的制造机器中。例如,IP核(诸如由ARM控股公司所开发的Cortex?处理器族以 及由中国科学院计算机技术研宄所(ICT)所开发的龙芯IP核)可被授权或销售给各种客 户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方生产 的处理器中。
[0137] 图11示出根据一个实施例的IP核开发的框图。存储器1130包括仿真软件1120和 /或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140 (例 如,硬盘)、有线连接(例如,互联网)1150或无线连接1160而被提供给存储器1130。由仿 真工具和模型所生成的IP核信息可随后被发送到生产设施,可由第三方在该生产设施中 制造该IP核信息以执行根据至少一个实施例的至少一条指令。
[0138] 在一些实施例中,一条或多条指令可以对应于第一类型或架构(例如,x86),并且 可在不同类型或架构的处理器(例如,ARM)上被转换或仿真。根据一个实施例,因此可在 任何处理器或处理器类型(包括ARM、X86、MIPS、GPU或其他处理器类型或架构)上执行指 令。
[0139] 图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器仿真。 在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本相同的功能的一些 指令,这些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或 格式,这意味着不能够由处理器1215原生地执行程序1205中的类型的指令。然而,借助于 仿真逻辑1210,将程序1205的指令转换成能够由处理器1215原生执行的指令。在一个实 施例中,仿真逻辑被具体化在硬件中。在另一实施例中,将仿真逻辑具体化在有形的机器可 读介质中,该机器可读介质包含用于将程序1205中的该类指令翻译成能由处理器1215原 生地执行的类型的软件。在其他实施例中,仿真逻辑是固定功能或可编程硬件和存储在有 形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施 例中,仿真逻辑在处理器之外,并且由第三方提供。在一个实施例中,处理器能够通过执行 被包括在处理器中或者与该处理器相关联的微代码或固件,加载被具体化在包含软件的有 形的机器可读介质中的仿真逻辑。
[0140] 图13是根据本发明的多个实施例的对照使用软件指令转换器将源指令集中的二 进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软 件指令转换器,但作为替代,可在软件、固件、硬件或其各种组合中实现该指令转换器。图 13示出可使用x86编译器1304来编译利用高级语言1302的程序,以生成可由具有至少一 个x86指令集核的处理器1316原生地执行的x86二进制代码1306。具有至少一个x86指 令集核1316的处理器表示能够通过兼容地执行或以其他方式处理下列各项来执行与具有 至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指 令集核的指令集的本质部分或(2)旨在在具有至少一个x86指令集核的英特尔处理器上运 行以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软 件的目标代码版本。x86编译器1304表示可用于生成x86二进制代码1306 (例如,目标代 码)的编译器,该x86二进制代码1306能够通过附加的链接处理或无需附加的链接处理而 在具有至少一个x86指令集核的处理器1316上被执行。类似地,图13示出可使用替代的 指令集编译器1308来编译利用高级语言1302的程序,以生成可由不具有至少一个x86指 令集核的处理器1314 (例如,具有执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指 令集的核的处理器和/或执行加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集的核的 处理器)原生地执行的替代指令集二进制代码1310。该指令转换器1312被用于将x86二 进制代码1306转换为可由不具有x86指令集核的处理器1314原生地执行的代码。该经变 换的代码不太可能与替代指令集二进制代码1310相同,因为难以制造能完成这样的指令 转换器;然而,经变换的代码将完成一般操作,并且由替代指令集中的指令构成。因此,指令 转换器1312通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处 理器或其他电子设备执行x86二进制代码1306的软件、固件、硬件或它们的组合。
[0141] 图14示出用于使用提供推入缓冲器复制和存储功能的指令的系统1401的一个实 施例的流程图。系统1401包括系统存储器1490和处理器1402。处理器1402包括第一硬 件线程或逻辑处理器1420和第二硬件线程或逻辑处理器1430。将会理解,虽然出于简化 的目的将处理器1402示为包括两个逻辑处理器,每个逻辑处理器表示单个硬件线程,但本 发明不限于此。例如,诸如处理器1402之类的处理器或本文中示出的其他处理器具有若 干逻辑处理器核也是典型的,这些逻辑处理器核可能共享或不共享一些物理资源和/或电 路,每个逻辑处理器或处理器核具有能够同时或并发地执行软件线程的多个硬件线程。在 此示例中,逻辑处理器1430具有解码级1432以及一个或多个执行单元(例如,执行单元 1434)。逻辑处理器1430具有高速缓存1450,该高速缓存1450用于将高速缓存一致数据存 储在针对可由逻辑处理器1430的第二硬件线程访问的共享存储器地址的高速缓存行1455 中。逻辑处理器1420具有:高速缓存1440,其用于将高速缓存一致数据存储在高速缓存行 1445中;以及解码级1422,其用于解码指令1410,以便由逻辑处理器1420的第一硬件线程 执行,该指令1410指定源数据操作数(例如,1425或可选地1445或1495)。一些实施例中 的源数据操作数可以是向量寄存器或存储器地址。指令1410也将所述共享存储器地址指 定为目的地操作数,例如,在1455处被高速缓存的内容以及所述共享存储地址的一个或多 个拥有者(例如,逻辑计算机1430的第二硬件线程)。逻辑处理器1420具有一个或多个执 行单元(例如,执行单元1424),这些执行单元响应于被解码的指令1410,当所述一个或多 个拥有者包括第二硬件线程或逻辑处理器1430时,将数据从源数据操作数(例如,1425或 可选地1445或1495)复制到高速缓存1450中的、针对可由逻辑处理器1430的第二硬件线 程访问的所述共享存储器地址的高速缓存行1455中的高速缓存一致数据中,并且不会导 致高速缓存未命中或者造成用于获取高速缓存行1455中的高速缓存一致数据的所有权的 开销。也就是说,指令1410的一个实施例提供推入缓冲器复制和/或存储功能,该功能允 许逻辑处理器1420将数据缓冲器(如,1425)复制或存储到逻辑处理器1430的高速缓存 1450中,同时将高速缓存行1455中的高速缓存一致数据的所有权留给逻辑处理器1430以 避免导致尚速缓存未命中。
[0142] 图15示出用于使用用于提供推入缓冲器复制和存储功能的指令的系统1501的另 一实施例的流程图。系统1501包括系统存储器1590和处理器1502。处理器1502包括第 一硬件线程或处理器核1520和第二硬件线程或处理器核1530。处理器核1530具有解码 级1532以及一个或多个执行单元(例如,执行单元1534)。处理器核1530也具有高速缓存 1550,该高速缓存1550用于将高速缓存一致数据存储在针对可由处理器核1530的第二硬 件线程访问的共享存储器地址的高速缓存行1555中。处理器核1520具有用于将高速缓存 一致数据保存在高速缓存行1545中的高速缓存1540。高速缓存1540和1550分别包括控 制逻辑1542和1552,并且是第一级(L1)高速缓存1503。除L1高速缓存1503和作为第二 级(L2)缓存1504的分别包括控制逻辑1562和1572的高速缓存1560和1570之外,高速 缓存系统1501还在其高速缓存存储器层次结构中包括末级高速缓存1580。将会理解,虽然 为了简化,将处理器1502示出为包括L1高速缓存1503,但是,也可将L2高速缓存1504以 及高速缓存存储器层次结构的其他层级包括在处理器1502中。
[0143] 处理器核1520也具有解码级1522,该解码级1522用于解码指令1510,以便由处 理器核1520的第一硬件线程执行,该指令1510指定源数据操作数(例如,1525或可选地 1565或1595或一些其他的源数据操作数)。一些实施例中的源数据操作数可以是向量寄存 器(如,1525)或存储器地址(如,1595的地址)。指令1510也将所述共享存储器地址指定 为目的地操作数,例如,在1555处被高速缓存的以及所述共享存储地址的一个或多个拥有 者(例如,处理器核1530的第二硬件线程)。处理器核1520具有一个或多个执行单元(例 如,执行单元1524),这些执行单元响应于被解码的指令1510,当所述一个或多个拥有者包 括第二硬件线程或处理核1530时,将数据从源数据操作数(例如,1525或可选地1565或 1595或一些其他的源数据操作数)复制到高速缓存1550中的、针对可由处理器核1530的 第二硬件线程访问的所述共享存储器地址的高速缓存行1555中的高速缓存一致数据中, 并且不会导致高速缓存未命中或者造成用于在执行指令1510后获取高速缓存行1555中的 高速缓存一致数据的所有权的开销。也就是说,指令1510的多个实施例提供推入缓冲器复 制和/或存储的功能,该功能允许处理器核1520将数据缓冲器(如,1525)复制或存储到处 理器核1530的高速缓存1550中,同时将高速缓存行1555中的高速缓存一致数据的所有权 留给处理器核1530以避免导致高速缓存未命中。
[0144] 对于一些实施例,可将指令1510解码为未被分配的加载操作1511 (例如,微操作, 也被称为微op或uop)和推入存储操作1566。在此类实施例中,响应于未被分配的加载操 作1511,可利用高速缓存控制逻辑(例如,控制逻辑1542和/或1562)而不分配(或者可 能伴随未分配的)高速缓存行(例如,1565)来将数据从存储器源数据操作数(例如,1565 或1595或一些其他的存储器源数据操作数)加载到数据缓冲器(如,1525中)。响应于该 推入存储操作1566,可将消息从处理核1520的消息收发逻辑1526发送到处理核1530的 消息收发逻辑1536,并且可以可选地将数据存储在数据缓冲器1535中,以便利用高速缓存 控制逻辑(例如,控制逻辑1552)推入缓冲器复制和/或存储以将数据缓冲器(例如,1525 或可选地1535)存储到处理器核1530的高速缓存1550中,同时将高速缓存行1555中的高 速缓存一致数据的所有权留给处理器核1530以避免导致高速缓存未命中。对于一些替代 实施例,例如当向量寄存器是所指定的源数据操作数1525时,可将指令1510解码为仅推入 存储操作1566。对于其他替代实施例,可在推入存储操作1566中不涉及处理器核1530 (例 如,直接利用高速缓存控制逻辑1552)而实现指令1510。
[0145] 将会理解,如上述多个实施例中所述,可将SMD推入缓冲器复制和/或存储指令 用于在多个应用(例如,多核流水线并行软件应用)中提供推入缓冲器复制和推入缓冲器 存储功能,进而减少共享存储器高速缓存层次结构中的一致性业务量,增加性能和指令吞 吐量,并且减少用电和能耗。一些实施例可提供目的地存储器地址的拥有者处理器核以包 括诸如自身的、全部共享的或物理核ID(例如,逻辑处理器的x2APICID)之类的多个规格。 一些实施例(例如,在上述示例中)也可提供目的地高速缓存的存储器地址的高速缓存层 级以包括诸如L1$、L2$、…、末级$或主存储器之类的多个规格。在一些实施例中,可将存 储器地址指定为用于提供推入缓冲器复制和存储功能的指令的显式操作数。在一些替代实 施例中,可隐式地将存储器地址指定为分别位于x86寄存器ES: [ (E)DI]和DS: [ (E)SI]中, 或分别位于寄存器[RDI]和[RSI]中。在一些替代实施例中,仅一个共享存储器地址可被
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1