CN104094222B - 用于执行指令的电路和方法 - Google Patents
用于执行指令的电路和方法 Download PDFInfo
- Publication number
- CN104094222B CN104094222B CN201280067468.1A CN201280067468A CN104094222B CN 104094222 B CN104094222 B CN 104094222B CN 201280067468 A CN201280067468 A CN 201280067468A CN 104094222 B CN104094222 B CN 104094222B
- Authority
- CN
- China
- Prior art keywords
- performance element
- chip
- instruction
- axu
- logic
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000008569 process Effects 0.000 claims abstract description 56
- 238000004891 communication Methods 0.000 claims description 140
- 238000012545 processing Methods 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000013461 design Methods 0.000 abstract description 44
- 238000012360 testing method Methods 0.000 abstract description 12
- 239000000872 buffer Substances 0.000 description 20
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 239000004020 conductor Substances 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 239000010410 layer Substances 0.000 description 4
- 238000004088 simulation Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000005501 phase interface Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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/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
- 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
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7864—Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8038—Associative processors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Semiconductor Integrated Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Microcomputers (AREA)
- Multi Processors (AREA)
Abstract
在第一可编程芯片中布置的处理核心和在第二可编程芯片中布置的芯片外AXU之间提供外部辅助执行单元(AXU)接口,以将AXU与发出单元、定点执行单元和在处理核心中可选的其他功能单元集成。外部AXU接口使得发出单元能够以与发出单元将能够向在同一芯片上布置的AXU发出指令几乎相同的方式向AXU发出指令。这样做,可以独立于该第一可编程芯片上的处理核心来设计、测试和验证在该第二可编程芯片上的AXU,由此使得能够与多个不同的AXU设计结合来使用已经设计、测试和验证的公共处理核心。
Description
技术领域
本发明总体上涉及数据处理,并且具体地涉及处理器架构和其中并入的执行单元。
背景技术
计算机和其他可编程电子装置持续被融入社会的每一个方面。虽然计算机曾经占据了全部场所,但是计算机和向这样的计算机供电的集成电路装置或芯片现在已经被最小化和商品化到甚至在产品和装置的大多数日常情况中都可以找到它们的程度。
诸如微处理器、微控制器和专用集成电路(ASIC)等的可编程芯片在成本、功耗和特征尺寸减小的同时在复杂度和功率方面持续增大。虽然计算机曾经并入了用于处理器、图形控制器、协处理器、存储器控制器和其他芯片集逻辑的独立芯片,但是所有这些类型的功能单元经常被集成到单个可编程芯片中。而且,一旦已经开发、测试和验证了特定的芯片设计,在每单元的基础上制造成本经常较低。
因此,与将可编程芯片投入市场相关联的工作和花费的极大部分投入于可编程芯片的初始设计、测试和验证。因为这个原因,每当可能时使用设计再用,使得先前已经设计、测试和验证的诸如特定处理器核心设计、功能单元和其他逻辑块的可编程芯片的部分不需要从头开始重新创建。
然而,即使通过设计再用,将多个设计组件集成为共同设计频繁地要求设计和测试一些定制逻辑,以确保这些组件一旦被集成到相同的可编程芯片上时彼此将正确地操作。例如,现代微处理器通常包括诸如发出或指令单元、加载/存储单元、执行单元、存储器控制器、图形控制器、高速缓存和其他板载存储器等的功能单元,并且,这样的微处理器的开发经常需要相当大的开发、测试和验证工作来确保所有的功能单元以意图的方式而操作。
此外,许多微处理器设计依赖于可以通过使用不同的功能单元而扩充的基本设计,以提供对于不同的应用而优化的各种设计。例如,可能期望通过以下来扩充微处理器的功能:将多个处理核心集成在一起以促进并行处理,并且将各种执行单元集成在处理核心内以优化该核心来处理某些类型的工作量。例如,尽管基本的微处理器设计经常包括具有向处理整数运算的被称为定点单元、整数单元或算术逻辑单元的执行单元发出指令的发出或指令单元的处理核心,但是,另外的执行单元、例如浮点执行单元、图形引擎、物理引擎和加密引擎等可以被并入到该基本设计内,以提供对于某些应用优化的专用设计。
利用在各个处理核心和可编程芯片中组合不同类型的执行单元的能力,提供了用于开发专用硬件的极大的设计灵活性。另一方面,考虑到仍需要相当大的先期工作来设计、测试和验证被集成到专用可编程芯片内的多个功能单元,仍然存在与将专用可编程芯片投入市场相关联的相当大的成本。
关于可编程芯片的开发已经出现的另一个考虑是不同实体的所设计、开发的功能单元或否则属性的集成。消费者经常依赖于其他实体来设计他们的可编程芯片,并且设计可编程芯片的实体和消费者两者专有的设计经常被一起集成在相同的可编程芯片上,经常导致许可问题以及关于保持一些设计的保密特性的担忧。
因此,在本领域中持续存在对于促进专用可编程芯片和包含并入这样的芯片的电子装置的开发的方式的极大的需要。
发明内容
本发明通过提供以下方法、设备和程序产品来处理与现有技术相关联的这些和其他问题,该方法、设备和程序产品利用在第一可编程芯片中布置的处理核心和在第二可编程芯片中布置的芯片外辅助执行单元(AXU)之间的外部AXU接口。该AXU接口将AXU与至少包括发出单元和定点执行单元的处理核心集成,并且使得发出单元能够以与该发出单元将能够向在同一芯片上布置的AXU发出指令几乎相同的方式向该AXU发出指令。这样做,可以独立于在该第一可编程芯片上的处理核心来设计、测试和验证在该第二可编程芯片上的该AXU,由此使能够与多个不同的AXU设计结合来使用已经设计、测试和验证的公共处理核心。
与本发明的一个方面一致,一种集成电路芯片包括具有发出单元和定点执行单元的处理核心,其中该发出单元配置为向该定点执行单元发出指令以由其执行。另外,在该集成电路芯片上布置并且耦合到该发出单元的外部辅助执行单元(AXU)接口逻辑被配置为接收由该发出单元发出的指令,并且通过外部AXU接口向芯片外AXU发送该指令以由该芯片外AXU执行。
与本发明的另一方面一致,一种集成电路芯片包括芯片外辅助执行单元(AXU)和外部AXU接口逻辑,该外部AXU接口逻辑被配置为将该芯片外AXU耦合到在不同的芯片上布置的处理核心,该处理核心包括定点执行单元和发出单元,该发出单元被配置为向该定点执行单元发出指令以由该定点执行单元执行。该外部AXU接口逻辑被配置为通过外部AXU接口接收由该发出单元发出的指令,并且向该芯片外AXU发送该指令以由其执行。
在附于此并且形成本发明的进一步的部分的权利要求中给出了表征本发明的这些和其他优点和特征。然而,为了更好地理解本发明和通过其使用而达到的优点和目标,应当参考附图和伴随的描述性内容,在其中描述了本发明的示例性实施例。
附图说明
图1是与本发明的实施例一致的包括在数据处理中可用的示例性计算机的示例性自动计算机构的框图。
图2是在图1的计算机中实现的示例性NOC的框图。
图3是更详细地图示来自图2的NOC的节点的示例性实现的框图。
图4是图示来自图2的NOC的IP块的示例性实现的框图。
图5是与本发明一致的来自图2的NOC并且并入了与芯片外的外部辅助执行单元(AXU)的AXU接口的IP块的框图。
图6是与本发明一致的并入了外部AXU接口的另一示例性数据处理系统的框图。
图7是在图6中提及的外部AXU接口的示例性实现的框图。
图8是图示当向芯片外AXU发送指令时由图6的外部AXU接口进行的操作的示例性序列的流程图。
具体实施方式
与本发明一致的实施例利用在第一可编程芯片中布置的处理核心和在第二可编程芯片中布置的芯片外AXU之间的外部辅助执行单元(AXU)接口以将AXU与发出单元、定点执行单元以及可选地在处理核心中的其他功能单元集成。外部AXU接口使得发出单元能够以与发出单元将能够向布置在相同芯片上的AXU发出指令的几乎相同的方式来向AXU发出指令。这样做,可以独立于在第一可编程芯片上的处理核心来设计、测试和验证在第二可编程芯片上的AXU,由此使能够与多个不同的AXU设计结合来使用已经设计、测试和验证的公共处理核心。
与本发明一致的AXU可以并入扩充、加速或另外改善处理核心对于期望的应用的性能的各种类型的功能。例如,AXU可以被实现为浮点单元(FPU)、压缩引擎、图形引擎、加密引擎、物理引擎、正则表达式引擎、数字信号处理器(DSP)、分组处理器、专有设计和/或其组合。AXU被布置在与处理核心分离的芯片中,并且可以使用多个不同硬件设计的任何一个而实现,该多个不同硬件设计包括例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、芯片堆栈、定制逻辑、离散组件、传感器等。
外部AXU接口将芯片外AXU与处理核心互连,允许在处理核心中的发出单元和可选地在处理核心内的另外的功能单元、例如定点执行单元、存储器管理单元、高速缓存单元、片上加速器、浮点单元、外部I/O(例如,PCIe、USB、SATA)等之间的通信,由此使得AXU能够利用在处理核心中的功能单元,并且能够与处理核心紧密地集成。AXU接口被配置为从指令单元向芯片外AXU流动(stream)指令,并且在处理核心和芯片外AXU之间传送架构状态信息,由此保持一致的整体架构状态。然而,与本发明一致的外部AXU接口可以在处理核心和外部AXU之间传送另外的信息,该另外的信息包括例如加载和存储数据、复位/刷新(flush)命令、响应/完成消息等。
与本发明一致的外部AXU接口在一些实施例中也可以并入转换逻辑,该转换逻辑被配置为在处理核心中通常具有的高速域和在处理核心和芯片外AXU之间的较低速通信链路之间相接口。例如,外部AXU接口可以并入支持无限或不确定的等待时间的协议。外部AXU接口还可以包括步降/步升逻辑以在处理核心中的高频域和在芯片至芯片接口上的较低频域之间相接口,并且外部AXU接口可以包括串行器和/或分组器(packetizer)逻辑,以转换为通过芯片至芯片接口的基于串行和/或基于分组的格式,并且外部AXU接口可以支持可变总线宽度,使得可以在不同的应用中使用不同的宽度。
其他变型和修改对于本领域普通技术人员将是显然的。因此,本发明不限于在此所述的特定实现方式。
硬件和软件环境
现在转向附图,其中,在几个附图中相似的标号表示相似的部分,图1图示了与本发明的实施例一致的包括在数据处理中可用的示例性计算机10的示例性自动计算机构。图1的计算机10包括至少一个计算机处理器12或‘CPU’以及随机存取存储器14(‘RAM’),该随机存取存储器14通过高速存储器总线16和总线适配器18连接到处理器12和计算机10的其他组件。
在RAM 14中存储应用程序20,其是用于实行诸如例如字处理、电子表格、数据库操作、视频游戏、股市模拟、原子的量子过程模拟或者其他用户级应用的特定数据处理任务的用户级计算机程序指令的模块。在RAM 14中还存储了操作系统22。结合本发明的实施例可用的操作系统包括UNIXTM、LinuxTM、Microsoft Windows XPTM、AIXTM、IBM的i5/OSTM和对于本领域技术人员而言将存在的其他操作系统。在图1的示例中的操作系统22和应用20示出在RAM 14中,但是这样的软件的许多组件通常也被存储在非易失性存储器中,例如,在盘驱动器24上。
如在以下将变得更明显的,与本发明一致的实施例可以被实现在芯片上网络(NOC)集成电路装置或芯片内,并且如此一来,计算机10被图示为包括两个示例性NOC:视频适配器26和协处理器28。可以替换地被称为图形适配器的NOC视频适配器26是专门设计用于向诸如显示屏幕或计算机监视器的显示装置30的图形输出的I/O适配器的示例。NOC视频适配器26通过高速视频总线32、总线适配器18和也是高速总线的前侧总线34连接到处理器12。NOC协处理器28通过总线适配器18和也是高速总线的前侧总线34和36连接到处理器12。图1的NOC协处理器可以被优化例如以在主处理器12的要求下加速特定的数据处理任务。
图1的示例性NOC视频适配器26和NOC协处理器28每一个包括NOC,NOC包括集成处理器(“IP”)块、路由器、存储器通信控制器和网络接口控制器,其细节将在下面结合图2-3更详细地讨论。NOC视频适配器和NOC协处理器每一个对于使用并行处理并且还需要对共享存储器的快速随机存取的程序被优化。然而,受益于本公开的本领域普通技术人员将认识到,可以在除了NOC装置和装置架构之外的装置和装置架构中实现本发明。因此,本发明不限于在NOC装置内的实现方式。
图1的计算机10包括通过扩展总线40和总线适配器18耦合到处理器12和计算机10的其他组件的盘驱动适配器38。盘驱动适配器38将非易失性数据存储器以盘驱动器24的形式连接到计算机10,并且可以例如使用集成驱动电子(‘IDE’)适配器、小计算机系统接口(‘SCSI’)适配器和对于本领域技术人员将存在的其他而实现。非易失性计算机存储器也可以实现为用作对于本领域技术人员将存在的光盘驱动器、电可擦除可编程只读存储器(所谓的‘EEPROM’或‘快闪’存储器)和RAM驱动器等。
计算机10还包括一个或多个输入/输出(‘I/O’)适配器42,其通过例如用于控制向诸如计算机显示屏幕的显示装置的输出的软件驱动器和计算机硬件以及来自诸如键盘和鼠标的用户输入装置44的用户输入而实现面向用户的输入/输出。另外,计算机10包括通信适配器46,用于与其他计算机48的数据通信以及用于与数据通信网络50的数据通信。可以通过RS-232连接、通过诸如通用串行总线(‘USB’)的外部总线、通过诸如IP数据通信网络的数据通信网络和以对于本领域技术人员将存在的其他方式串行地实行这样的数据通信。通信适配器实现硬件级数据通信,通过该硬件级数据通信,一个计算机直接地或通过数据通信网络向另一个计算机发送数据通信。适合于在计算机10中使用的通信适配器的示例包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的以太网(IEEE 802.3)适配器和用于无线数据通信网络通信的802.11适配器。
为了进一步的说明,图2阐述了根据本发明的实施例的示例NOC 102的功能框图。在图2中的NOC被实现在‘芯片’100上,即在集成电路上。NOC102包括被分组为互连节点的集成处理器(‘IP’)块104、路由器110、存储器通信控制器106和网络接口控制器108。每一个IP块104通过存储器通信控制器106和网络接口控制器108适配到路由器110。每一个存储器通信控制器控制在IP块和存储器之间的通信,并且每一个网络接口控制器108控制通过路由器110在IP块之间的通信。
在NOC 102中,每一个IP块表示被用作用于NOC内的数据处理的构造块的同步或异步逻辑设计的可再用单位。术语‘IP块’有时被扩展为‘知识产权块’,有效地将IP块指定为由一方拥有的、要向半导体电路的其他用户或设计者许可的设计,即一方的知识产权。然而,在本发明的范围内,不要求IP块经受任何特定的所有权,因此,该术语在本说明书中总是被扩展为‘集成处理器块’。在此指定的IP块是可以是或可以不是知识产权的对象的逻辑、单元或芯片布局设计的可再用单位。IP块是可以形成为ASIC芯片设计或FPGA逻辑设计的逻辑核心。
通过类推来描述IP块的一种方式是IP块用于NOC设计:库用于计算机编程或离散集成电路组件用于印刷电路板设计。在与本发明的实施例一致的NOC中,IP块可以实现为一般的门网表(gate netlist)、完整的专用或通用微处理器或者以对于本领域技术人员将存在的其他的方式而实现。网表是IP块的逻辑-功能的布尔-代数表示(门,标准单元),类似于用于高级程序应用的汇编代码列表。也可以例如以用诸如Verilog或VHDL的硬件描述语言描述的可合成形式来实现NOC。除了网表和可合成实现方式,也可以用较低级物理描述来表达NOC。诸如SERDES、PLL、DAC、ADC等的模拟IP块元件可以以诸如GDSII的晶体管布局格式而分布。有时也以布局格式来提供IP块的数字元件。还将认识到,IP块以及与本发明一致地实现的其他逻辑电路可以以例如逻辑定义程序代码的计算机数据文件的形式而分布,该计算机数据文件以各种详细水平定义实现这样的逻辑的电路布置的功能和/或布局。因此,虽然本发明已经并且在下文中还将在全功能集成电路装置中实现的电路布置、使用这样的装置的数据处理系统以及其他有形的物理硬件电路的上下文中描述,但是受益于本公开的本领域普通技术人员将认识到,也可以在程序产品内实现本发明,并且不管用于分发程序产品的计算机可读存储介质的具体类型如何,本发明等同地适用。计算机可读存储介质的示例包括但不限于物理可记录型介质,比如易失性和非易失性存储器装置、软盘、硬盘驱动器、CD-ROM和DVD(除了别的之外)。
在图2的示例中的每一个IP块104通过存储器通信控制器106适配到路由器110。每一个存储器通信控制器是被适配为提供在IP块和存储器之间的数据通信的同步和异步逻辑电路的集合。在IP块和存储器之间的这样的通信的示例包括存储器加载指令和存储器存储指令。下面参考图3更详细地描述存储器通信控制器106。每一个IP块104还通过网络接口控制器108适配到路由器110,网络接口控制器108控制在IP块104之间的通过路由器110的通信。在IP块之间的通信的示例包括在并行应用和流水线应用中的在IP块之间的携带数据的消息和用于处理该数据的指令。还在下面参考图3更详细地描述网络接口控制器108。
路由器110和在其之间的相应链路118实现NOC的网络操作。链路118可以是在连接所有路由器的物理并行导线总线上实现的分组结构。即,每一个链路可以在宽得足以同时容纳包括所有的头部信息和有效负荷数据的整个数据切换分组的导线总线上实现。如果分组结构包括例如包含8字节头部和56字节的有效负荷数据的64个字节,则对着每个链路的导线总线是64字节宽,512条导线。另外,每个链路可以是双向的,使得如果链路分组结构包括64字节,则导线总线实际上包含在每一个路由器及其在网络中的相邻者的每一个之间的1024条导线。在这样的实现方式中,消息可以包括多于一个分组,但是每一个分组将精确地配合导线总线的宽度。可替代地,可以在仅宽得足以容纳分组的一部分的导线总线上实现链路,使得分组将被划分为多个节拍(beat),例如使得如果将链路实现为在宽度上为16字节或128条导线,则可以将64字节的分组划分为四个节拍。将理解,不同的实现方式可以基于实际的物理限制以及期望的性能特性来使用不同的总线宽度。如果在路由器和导线总线的每一部分之间的连接被称为端口,则每个路由器包括5个端口,对于在网络上的数据传输的四个方向的每一个方向一个端口,并且第五端口用于通过存储器通信控制器和网络接口控制器将路由器适配到特定的IP块。
每个存储器通信控制器106控制在IP块和存储器之间的通信。存储器可以包括芯片外主RAM 112、通过存储器通信控制器106直接地连接到IP块的存储器114、被使能为IP块的芯片上存储器116、以及芯片上高速缓存。在NOC 102中,芯片上存储器114、116的任何一个例如可以被实现为芯片上高速缓存存储器。所有这些形式的存储器可以被布置在相同的地址空间、物理地址或虚拟地址中,甚至对于直接地附接到IP块的存储器也如此。因此,存储器寻址的消息相对于IP块可以完全是双向的,因为可以从网络上的任何位置处的任何IP块直接寻址这样的存储器。在IP块上的存储器116可以从该IP块或从NOC中的任何其他IP块来寻址。直接地附接到存储器通信控制器的存储器114可以通过由该存储器通信控制器适配到网络的IP块来寻址,并且也可以从NOC中的任何位置处的任何其他IP块来寻址。
NOC 102包括两个存储器管理单元(‘MMU’)120、122,图示了与本发明的实施例一致的用于NOC的两个替代的存储器架构。MMU 120被实现在IP块内,允许在该IP块内的处理器在虚拟存储器中操作,同时允许NOC的整个其余架构在物理存储器地址空间中操作。MMU 122被实现在芯片外,通过数据通信端口124连接到NOC。端口124包括在NOC和MMU之间传导信号所需的管脚(pin)和其他互连、以及将消息分组从NOC分组格式转换为外部MMU 122所需的总线格式的足够的智能。MMU的外部位置意味着在NOC的所有IP块中的所有处理器可以在虚拟存储器地址空间中操作,到芯片外存储器的物理地址的所有转换由芯片外MMU 122处理。
除了通过使用MMU 120、122图示的两个存储器架构之外,数据通信端口126图示了能够在本发明的实施例中利用的在NOC中可用的第三存储器架构。端口126提供了在NOC 102的IP块104和芯片外存储器112之间的直接连接。在处理路径中没有MMU的情况下,该架构提供了由NOC的所有IP块对于物理地址空间的使用。在双向地共享地址空间时,NOC的所有IP块可以通过经过直接连接到端口126的IP块引导的、包括加载和存储的存储器寻址的消息来访问在地址空间中的存储器。端口126包括在NOC和芯片外存储器112之间传导信号所需的管脚和其他互连、以及将消息分组从NOC分组格式转换为由芯片外存储器112所需的总线格式的足够智能。
在图2的示例中,IP块之一被指定为主机接口处理器128。主机接口处理器128提供了在NOC和其中可以安装NOC的主机计算机10之间的接口,并且还向在NOC上的其他IP块提供数据处理服务,包括例如接收并在NOC的IP块之间分派来自主机计算机的数据处理请求。NOC可以例如以上在参考图1所述的较大计算机10上实现视频图形适配器26或协处理器28。在图2的示例中,主机接口处理器128通过数据通信端口130连接到该较大主机计算机。该端口130包括在NOC和主机计算机之间传导信号所需的管脚和其他互连、以及将消息分组从NOC转换为由主计算机10所需的总线格式的足够的智能。在图1的计算机中的NOC协处理器的示例中,这样的端口提供在NOC协处理器28的链路结构和在NOC协处理器28和总线适配器18之间的前侧总线36所需的协议之间的数据通信格式翻译。
图3接下来图示更详细地图示被集体地图示在132处的NOC 102中的在IP块104、存储器通信控制器106、网络接口控制器108和路由器110内实现的组件的功能框图。IP块104包括计算机处理器134和I/O功能136。在这个示例中,计算机存储器由IP块104中的随机存取存储器(‘RAM’)138的段表示。以上参考图2所述的存储器可以占据物理地址空间的段,该物理地址空间的在每一个IP块上的内容是可从NOC中的任何IP块寻址和访问的。每个IP块中的处理器134、I/O能力136和存储器138有效地将IP块实现为通常可编程的微计算机。然而,如上所述,在本发明的范围内,IP块通常表示被用作NOC内的数据处理的构造块的同步或异步逻辑的可再用单元。因此,将IP块实现为通常可编程的微计算机尽管是出于说明的目的而有用的普通实施例但是不是对本发明的限制。
在图3的NOC 102中,每个存储器通信控制器106包括多个存储器通信执行引擎140。使得每个存储器通信执行引擎140能够执行来自IP块104的存储器通信指令,包括在网络和IP块104之间的双向存储器通信指令流141、142、144。由存储器通信控制器执行的存储器通信指令可以不仅源自通过特定存储器通信控制器而适配到路由器的IP块,而且可以源自在NOC 102中的任何位置处的IP块104。即,在NOC中的任何IP块可以产生存储器通信指令,并且通过NOC的路由器将该存储器通信指令发送到与另一个IP块相关联的另一个存储器通信控制器,用于执行该存储器通信指令。这样的存储器通信指令可以包括例如翻译后备(lookaside)缓冲器控制指令、高速缓存控制指令、屏障指令和存储器加载和存储指令。
使得每个存储器通信执行引擎140能够与其他存储器通信执行引擎分开地并且并行地执行完整的存储器通信指令。该存储器通信执行引擎实现对于存储器通信指令的同时处理能力优化的可缩放的存储器业务处理器。存储器通信控制器106支持全部同时运行用于同时执行多个存储器通信指令的多个存储器通信执行引擎140。由存储器通信控制器106向存储器通信执行引擎140分配新的存储器通信指令,并且存储器通信执行引擎140可以同时接受多个响应事件。在这个示例中,所有的存储器通信执行引擎140是相同的。因此,通过缩放存储器通信执行引擎140的数量来实现缩放可以由存储器通信控制器106同时处理的存储器通信指令的数量。
在图3的NOC 102中,使得每个网络接口控制器108能够将通信指令从命令格式转换为网络分组格式用于通过路由器110在IP块104之间传输。该通信指令可以由IP块104或由存储器通信控制器106以命令格式而形成,并且以命令格式提供到网络接口控制器108。该命令格式可以是符合IP块104和存储器通信控制器106的架构寄存器文件的原本格式。网络分组格式通常是通过网络的路由器110传输所需的格式。每个这样的消息由一个或多个网络分组构成。在网络接口控制器中从命令格式转换为分组格式的这样的通信指令的示例包括在IP块和存储器之间的存储器加载指令和存储器存储指令。这样的通信指令还可以包括在并行应用中和在流水线应用中在IP块之间发送携带数据和用于在IP块之间处理该数据的指令的消息的通信指令。
在图3的NOC 102中,使得每一个IP块能够通过IP块的存储器通信控制器向存储器和从存储器以及然后还通过其网络接口控制器向网络发送基于存储器地址的通信。基于存储器地址的通信是由IP块的存储器通信控制器的存储器通信执行引擎执行的存储器访问指令,比如加载指令或存储指令。这样的基于存储器地址的通信通常始发于IP块中,以命令格式而形成,并且被移交到存储器通信控制器用于执行。
以消息流量来执行许多基于存储器地址的通信,因为要访问的任何存储器可能位于物理存储器地址空间中的任何位置,在芯片上或芯片外,直接地附接到在NOC中的任何存储器通信控制器,或者最后通过NOC的任何IP块被访问——不管哪个IP块始发了任何特定的基于存储器地址的通信。因此,在NOC 102中,以消息流量而执行的所有基于存储器地址的通信从存储器通信控制器传递到相关联的网络接口控制器,用于从命令格式转换为分组格式,并且以消息通过网络而传输。在向分组格式的转换中,网络接口控制器还依赖于存储器地址或要通过基于存储器地址的通信而访问的地址来识别分组的网络地址。用存储器地址来寻址基于存储器地址的消息。每个存储器地址被网络接口控制器映射到网络地址,该网络地址通常是负责某个范围的物理存储器地址的存储器通信控制器的网络位置。存储器通信控制器106的网络位置自然也是该存储器通信控制器的相关联的路由器110、网络接口控制器108和IP块104的网络位置。在每个网络接口控制器内的指令转换逻辑150能够将存储器地址转换为网络地址以用于通过NOC的路由器传输基于存储器地址的通信的目的。
在从网络的路由器110接收到消息流量时,每个网络接口控制器108针对存储器指令而检查每个分组。包含存储器指令的每个分组被交给与接收网络接口控制器相关联的存储器通信控制器106,存储器通信控制器106在向IP块发送该分组的剩余的有效负荷以用于进一步的处理之前执行该存储器指令。以这种方式,总是在IP块开始执行来自消息的取决于特定存储器内容的指令之前准备存储器内容以支持由该IP块进行的数据处理。
在图3的NOC 102中,使得每个IP块104能够绕过其存储器通信控制器106,并且通过IP块的网络接口控制器108直接向网络发送IP块之间的网络寻址的通信146。网络寻址的通信是通过网络地址引导到另一IP块的消息。这样的消息发送在流水线应用中的工作数据、用于在SIMD应用中的IP块之间的单个程序处理的多个数据等,如对于本领域技术人员将存在的。这样的消息与基于存储器地址的通信不同在:它们是从开始由始发的IP块来网络寻址的,该始发的IP块知道该消息通过NOC的路由器要被引导到的网络地址。这样的网络寻址的通信由IP块通过I/O功能136以命令格式直接传递到IP块的网络接口控制器,然后由网络接口控制器转换为分组格式,并且通过NOC的路由器被发送到另一IP块。这样的网络寻址的通信146是双向的,取决于它们在任何特定应用中的使用而可能前进到NOC的每个IP块以及从NOC的每个IP块前进。然而,使得每个网络接口控制器能够向相关联的路由器发送这样的通信以及从相关联的路由器接收这样的通信,并且使得每个网络接口控制器能够直接向相关联的IP块发送这样的通信以及从相关联的IP块接收这样的通信,绕过相关联的存储器通信控制器106。
在图3的示例中的每个网络接口控制器108也被使得能够实现在网络上的虚拟信道,通过类型来表征网络分组。每个网络接口控制器108包括虚拟信道实现逻辑148,该虚拟信道实现逻辑148根据类型来分类每个通信指令,并且在网络分组格式的字段中记录指令的类型,然后将该指令以分组形式移交到路由器110用于在NOC上传输。通信指令类型的示例包括:IP块之间的基于网络地址的消息、请求消息、对于请求消息的响应、被引导到高速缓存的无效消息;存储器加载和存储消息;以及对于存取加载消息的响应等。
在图3的示例中的每个路由器110包括路由逻辑152、虚拟信道控制逻辑154和虚拟信道缓冲器156。该路由逻辑通常被实现为同步和异步逻辑的网络,该同步和异步逻辑的网络实现用于在由路由器110、链路118和路由器之间的总线形成的网络中的数据通信的数据通信协议堆栈。路由逻辑152包括本领域的读者可以在芯片外网络中将其与路由表相关联的功能,在至少一些实施例中,路由表被认为用在NOC中太慢和麻烦。被实现为同步和异步逻辑的网络的路由逻辑可以被配置为如单个时钟周期那样快地做出路由确定。在这个示例中的路由逻辑通过选择用于转发在路由器中接收的每个分组的端口来路由分组。每个分组包含该分组要被路由到的网络地址。
在以上描述基于存储器地址的通信中,每个存储器地址被描述为由网络接口控制器映射到网络地址、即存储器通信控制器的网络位置。存储器通信控制器106的网络位置自然也是存储器通信控制器的相关联的路由器110、网络接口控制器108和IP块104的网络位置。因此,在IP块之间的或基于网络地址的通信中,对于应用级数据处理也常见的是,将网络地址看作在由NOC的路由器、链路和总线导线形成的网络内的IP块的位置。图2图示了这样的网络的一个组织是行和列的网状结构(mesh),其中,每个网络地址可以被实现为例如用于该网状结构的每组相关联的路由器、IP块、存储器通信控制器和网络接口控制器的唯一标识符或者在该网状结构中的每个这样的组的x、y坐标。
在图3的NOC 102中,每个路由器110实现两个或更多的虚拟通信信道,其中,每个虚拟通信信道通过通信类型来表征。通信指令类型以及因此的虚拟信道类型包括上述的那些:IP块之间的基于网络地址的消息、请求消息、对于请求消息的响应、被引导到高速缓存的无效消息;存储器加载和存储消息;以及对于存储器加载消息的响应等。支持虚拟信道,在图3的示例中的每个路由器110还包括虚拟信道控制逻辑154和虚拟信道缓冲器156。虚拟信道控制逻辑154对于每个接收的分组查看其分配的通信类型,并且将每个分组放置在用于该通信类型的外发的(outgoing)虚拟信道缓冲器中,用于通过端口发送到在NOC上的相邻路由器。
每个虚拟信道缓冲器156具有有限的存储空间。当在短时间段中接收到许多分组时,虚拟信道缓冲器可能填满——使得不能将更多的分组置于该缓冲器中。在其他协议中,将丢弃到达其缓冲器已满的虚拟信道的分组。然而,利用总线导线的控制信号来使得在此示例中的每个虚拟信道缓冲器156能够通过虚拟信道控制逻辑来通知周围的路由器以暂停在虚拟信道中的传输,即,暂停特定通信类型的分组的传输。当如此暂停一个虚拟信道时,所有其他的虚拟信道不受影响——并且可以继续以满负荷来运行。控制信号通过每个路由器一路导线传导(wired)回到每个路由器的相关联的网络接口控制器108。每个网络接口控制器被配置为在接收到这样的信号时拒绝从其相关联的存储器通信控制器106或从其相关联的IP块104接受对于被暂停的虚拟信道的通信指令。以这种方式,虚拟信道的暂停影响实现虚拟信道的所有硬件,一路回到始发的IP块。
暂停在虚拟信道中的分组发送的一个效果是未曾丢弃任何分组。当路由器遇到其中在诸如例如因特网协议的一些不可靠的协议中可能丢弃分组的情况时,在图3的示例中的路由器可以通过它们的虚拟信道缓冲器156和它们的虚拟信道控制逻辑154暂停在虚拟信道中的所有的分组发送,直到再次可获得缓冲器空间,消除了任何丢弃分组的需要。因此,图3的NOC可以使用极薄的硬件层来实现高度可靠的网络通信协议。
图3的NOC的示例还可以被配置为保持在芯片上和芯片外的存储器高速缓存之间的高速缓存一致性。每个NOC可以支持多个高速缓存,每个高速缓存针对相同的基础存储器地址空间而操作。例如,高速缓存可以由IP块、由存储器通信控制器或由在NOC外部的高速缓存控制器来控制。在图2的示例中的芯片上存储器114、116的任意一个也可以被实现为芯片上高速缓存,并且在本发明的范围内,也可以在芯片外实现高速缓存存储器。
图3中所示的每个路由器110包括五个端口,四个端口158A-D通过总线导线118连接到其他路由器,并且第五端口160通过网络接口控制器108和存储器通信控制器106将每个路由器连接到其相关联的IP块104。如从在图2和3中的图示可以看出的,NOC 102的路由器110和链路118形成网状网络,垂直和水平链路连接每个路由器中的垂直和水平端口。在图3的图示中,例如,将端口158A、158C和160称为垂直端口,并且将端口158B和158D称为水平端口。
图4接下来以另一种方式图示与本发明一致的IP块104的一个示例性实现方式,其被实现为处理元件,该处理元件被划分为指令单元(IU)162、执行单元(XU)164和辅助执行单元(AXU)166。在所示的实现方式中,IU 162包括多个指令缓冲器168,指令缓冲器168从L1指令高速缓存(iCACHE)170接收指令。每个指令缓冲器168专用于多个、比如四个对称多线程(SMT)硬件线程之一。有效到真实(effective-to-real)翻译单元(iERAT)172耦合到iCACHE 170,并且用于将来自多个线程获取定序器174的指令获取请求翻译为真实地址以从较低级存储器取回指令。每个线程获取定序器174专用于特定的硬件线程,并且用于确保要由相关联的线程执行的指令被获取到iCACHE内以分派到适当的执行单元。还如图4中所示,被获取到指令缓冲器168内的指令还可以由分支预测逻辑176监视,该分支预测逻辑176向每个线程获取定序器174提供线索以最小化由在执行线程中的分支导致的指令高速缓存漏失。
IU 162还包括依赖性/发出逻辑块178,其专用于每个硬件线程,并且被配置为解决依赖性并且控制指令从指令缓冲器168向XU 164的发出。另外,在所示的实施例中,在AXU 166中提供独立的依赖性/发出逻辑180,因此使得能够由不同的线程同时向XU 164和AXU 166发出独立的指令。在一个替代实施例中,逻辑180可以被布置在IU 162中,或者可以整体被省略,使得逻辑178向AXU 166发出指令。
XU 164被实现为定点执行单元,其包括耦合到定点逻辑184、分支逻辑186和加载/存储逻辑188的一组通用寄存器(GPR)182。加载/存储逻辑188耦合到L1数据高速缓存(dCACHE)190,有效到真实翻译由dERAT逻辑192提供。XU 164可以被配置为实际上实现任何指令集,例如,32b或64bPowerPC指令集的全部或一部分。
AXU 166操作为包括专用的依赖性/发出逻辑180连同一个或多个执行块194的辅助执行单元。AXU 166可以包括任何数量的执行块,并且可以实际上实现任何类型的执行单元,例如浮点单元,或者实现一个或多个专门的执行单元,比如加密/解密单元、协处理器、向量处理单元、图形处理单元、XML处理单元等。在所示的实施例中,AXU 166包括到XU 164的高速辅助接口,例如以支持在AXU架构状态和XU架构状态之间的直接移动。
可以经由耦合到NOC 102的网络接口控制器108以结合图2在以上所述的方式来管理与IP块104的通信。可以连同基于消息的通信一起提供基于地址的通信例如以访问L2高速缓存存储器。例如,每个IP块104可以包括专用的收件箱(in box)和/或发件箱(out box),以便处理在IP块之间的节点间通信。
可以在以上结合图1-4所述的硬件和软件环境内实现本发明的实施例。但是,受益于本公开的本领域普通技术人员将认识到,可以在多个不同的环境中实现本公开,并且可以不脱离本发明的精神和范围对上述的硬件和软件实施例做出其他修改。如此,本发明不限于在此公开的特定硬件和软件环境。
用于芯片外AXU的外部AXU接口
现在转向图5,该图图示了与本发明一致的实现外部辅助执行单元(AXU)接口的示例性数据处理系统。具体地说,IP块200的另一种示例性实现方式并入了通过外部AXU接口206耦合到芯片外AXU 204的芯片上处理元件202。
与图4的IP块104中的处理元件类似的处理元件202包括指令单元(IU)208、执行单元(XU)210和网络接口控制器(NIC)212,并且耦合到NOC214。
在所示的实现方式中,IU 208包括从L1指令高速缓存(iCACHE)218接收指令的多个指令缓冲器216。每个指令缓冲器216专用于多个、例如四个对称多线程(SMT)硬件线程之一。有效到真实翻译单元(iERAT)220耦合到iCACHE 218,并且用于将来自多个线程获取定序器222的指令获取请求翻译为真实地址以从较低级存储器取回指令。每个线程获取定序器222专用于特定的硬件线程,并且用于确保要由相关联的线程执行的指令被获取到iCACHE内以分派到适当的执行单元。还如图5中所示,被获取到指令缓冲器216内的指令也可以由分支预测逻辑224监视,该分支预测逻辑224向每个线程获取定序器222提供线索以最小化由在执行线程中的分支导致的指令高速缓存漏失。IU 208还包括依赖性/发出逻辑块228,其专用于每个硬件线程,并且被配置为解决依赖性并且控制从指令缓冲器216向XU 210的指令的发出。
XU 210被实现为定点执行单元,其包括耦合到定点逻辑232、分支逻辑234和加载/存储逻辑236的一组通用寄存器(GPR)230。加载/存储逻辑236耦合到L1数据高速缓存(dCACHE)238,有效到真实翻译由dERAT逻辑240提供。XU 164可以被配置为实际上实现任何指令集,例如32b或64bPowerPC指令集的全部或一部分。
为了提供通过外部AXU接口206对AXU的访问,在IP块200中布置外部AXU接口控制器242,并且在外部芯片204中布置互补的网络AXU接口控制器244,并且该互补的网络AXU接口控制器244与外部AXU 246相接口。外部AXU 246操作为包括一个或多个执行块248的辅助执行单元。AXU246可以包括任何数量的执行块,并且可以实际上实现任何类型的执行单元,例如浮点单元,或者实现一个或多个专门的执行单元,比如加密/解密单元、协处理器、向量处理单元、图形处理单元、XML处理单元等。
如图4的IP块104那样,可选地,可以为外部AXU 246提供独立的依赖性/发出逻辑250,不管是在外部AXU 246(如所示)内还是在发出单元208内。可替代地,如图5中所示,依赖性/发出逻辑228可以处理指令向外部AXU 246的发出。AXU特定的依赖性/发出逻辑250可以用于例如支持在AXU中的专用微码或定序器逻辑。
在所示的实施例中,外部AXU接口206被实现为到IU 208和XU 210的高速辅助接口,例如以支持由IU 208向外部AXU 246发出指令以及在AXU架构状态和XU架构状态之间的直接移动。另外,如在下面将变得更显而易见的,外部AXU 246虽然被布置在独立的集成电路装置或芯片上,但是可以影响(leverage)在IP块200中布置的功能的大多数。
图6图示并入了处理器芯片262的另一个数据处理系统260,该处理器芯片262具有发出单元264、定点执行单元266、存储器管理单元268、一个或多个级的高速缓存270、网络接口272,并且该处理器芯片262耦合到例如通过外围总线连接的外部存储器274和一个或多个I/O装置276。处理器芯片262还包括外部AXU接口控制器278,该外部AXU接口控制器278耦合到与本发明一致的外部AXU接口280,允许该处理器芯片与使用多个不同技术实现的AXU相接口,例如FPGA 282(具有AXU 284和外部AXU接口286)、ASIC 288(具有AXU 290和外部AXU接口292)或堆叠的裸片294(具有AXU 296和外部AXU接口298)。将认识到,与本发明一致的外部AXU接口可以用于与以其他硬件技术实现的AXU相接口,并且因此本发明不限于在此公开的特定硬件技术。
可以以与本发明一致的多种不同方式来实现外部AXU接口。例如,如图7中所示,外部AXU接口可以包括经由物理接口304彼此耦合的核心外部AXU接口逻辑300和AXU外部AXU接口逻辑302。核心逻辑300包括的控制逻辑,例如控制器306,从核心的角度来看,该控制逻辑协调通过接口的通信。如上所述,与本发明一致的外部AXU接口如期望地支持无限的或不确定的等待时间,因而可能需要使用看门狗定时器308等逻辑来防止核心在等待来自芯片外AXU的响应时中止(hang)。另外,核心逻辑通常包括发送/接收逻辑310以处理通过接口的物理层通信。
还如上所述,可能需要外部AXU接口来翻译到处理核心的通信和来自处理核心的通信,并且因而可以包括促进这样的翻译的逻辑。例如,在其中外部AXU接口以比核心的操作频率低的频率来通信的实施例中,可以提供步升/步降逻辑312。步降逻辑例如可以用于相对于处理核心的通信频率来降低外部AXU接口的通信频率。
为了支持分组化的接口,可以提供分组器/去分组器314。另外的逻辑、每个串行器/解串行器逻辑可以用于在串行和并行协议之间翻译。而且,在一些实施例中,接口可以支持可变宽度,并且可以被配置为仅使用已经架构的通信链路的一部分来用于接口。例如,在一个示例性实施例中,外部AXU接口可以支持多达32字节宽的数据路径,所选择的实现方式可编程或可配置以仅使用可用的数据路径的一部分。
同样,AXU外部AXU接口逻辑302可以包括与在核心逻辑300中的逻辑互补的具有看门狗定时器318的控制器316、发送/接收逻辑320、步升/步降(step up/step down)逻辑322和分组器/去分组器逻辑324。在一些实施例中,控制器316可以是主控制器306的从属(slave),而在其他实施例中,可以省略控制器316。另外,在一些实施例中可能不要求看门狗定时器318。
如上所述,通过外部AXU接口而通信的数据的主要分类是包括用于由芯片外AXU执行的指令的指令流。指令阻挡和依赖性通常由依赖性/发出逻辑228(图5)管理,并且在逻辑228向芯片外AXU发出指令时,可以使用例如在图8的330处图示的操作序列。具体地,响应于接收到指令,用于接口的核心逻辑可以例如通过转换为分组、串行化、降低到较低的时钟频率等来将指令转换为用于接口的适当的格式(块332)。接下来,通过该接口发送该指令(块334),并且开始看门狗定时器(块336)。核心逻辑然后进入用于等待响应的循环,周期地检查是否已经接收到响应(块338)以及看门狗定时器是否已经到期(块340)。如果接收到适当的响应,则块338将控制传递到块356以更新处理核心的所架构的状态。另一方面,如果在接收到响应之前看门狗定时器到期,则块340将控制传递到块358以例如通过复位芯片外AXU来进行任何必要的错误处理。
转向该接口的AXU侧,由核心逻辑在块334发送的指令被AXU逻辑接收(块342),并且被转换为用于AXU的适当格式(块344)。指令然后被转发到AXU用于处理(块346)。其后,来自AXU的完成数据、例如对所架构的状态的改变、例如对一个或多个寄存器的更新被AXU接口逻辑接收(块348),以及要返回到核心的适当的响应、例如成功、失败、错误条件、调试或状态数据等被AXU接口逻辑接收(块350)。该响应然后被转换为用于该接口的适当格式(块352),并且被发送回核心逻辑(块354)。
将认识到,其他数据可以通过外部AXU接口被传送。例如,寄存器更新、寄存器/存储器传送(加载/存储)、状态更新、调试数据、性能统计、指令、分支重定向、存储器管理信息等也可以通过与本发明一致的外部AXU接口而传送。还将认识到,这样的接口的实现方式将完全在受益于本公开的本领域普通技术人员的能力内。例如,可以使用与可从国际商业机器获得的PowerPC A2处理器中支持的芯片外AXU接口所支持的类似的协议来实现与本发明一致的外部AXU接口。
与本发明一致的外部AXU接口提供了多个益处,特别是在专用硬件设计的开发中。通过在并入了处理核心的可编程芯芯片上提供外部AXU接口,可以设计、验证和测试处理核心,并且处理核心可以以通常的微处理器时钟频率而操作。该处理核心可以被配置为用于通用计算,并且提供了适合于广泛的各种应用的标准功能单元。提供专门的功能的芯片外AXU可以通过外部AXU接口与处理核心集成,由此定制用于特定应用的处理核心。
这样的配置的一个益处是不同方可以组合他们各自的知识产权,而不必向彼此公开这样的知识产权。希望并入例如他们自己的专有加速器功能的一方可以依赖于另一方的处理核心来获得所需功能的剩余部分,由此将它们的定制设计、测试和验证限于AXU,经常节省与专用硬件设计的开发相关联的可观的成本和精力。另外,如果一方例如因为其专有特性或因为政府保密或分类的设计而需要限制对于他们的保密的知识产权的访问,则该方可以这样做而不必向另一方公开这样的保密信息。
而且,通过为外部AXU接口提供无限的等待时间和/或步降逻辑,芯片外AXU不需要以与处理核心相同的速度运行,并且可以例如使用诸如像FPGA那样的较慢技术而实现,由此使得例如能够使用较不昂贵的技术来开发和测试AXU,然后一旦已经使用FPGA验证了该设计则以诸如ASIC的高速技术来实现该芯片外AXU。另外,芯片外AXU的设计可以是专用处理核心的设计中的中间步骤,使得能够在最后集成到专用处理核心设计之前验证和改善AXU设计。
另外,在此实现的外部AXU接口避免了将AXU通过存储器或共享总线与处理核心相接口的需要,否则在此情况下可能出现总线和资源竞争。而且,在芯片堆叠实现方式中,与本发明一致的外部AXU接口可以用于将在一个堆叠的裸片上布置的AXU与在另一个堆叠的裸片上布置的处理核心相接口。这样做,可以将一个堆叠的裸片专用于多个处理器核心,而另一个堆叠的裸片可以专用于多个AXU,消除了使用相同的设计规则或技术来制造AXU的需要,并且使得能够以对于不同应用的不同AXU层来使用相同的处理器核心层。
不脱离本发明的范围可以对于所公开的实施例做出各种修改。因此,本发明在于以下所附的权利要求。
Claims (16)
1.一种用于执行指令的电路,包括:
集成电路芯片;
处理核心,布置在所述集成电路芯片上,并且包括发出单元和定点执行单元,其中,所述发出单元配置为向所述定点执行单元发出指令以由所述定点执行单元执行;以及
外部辅助执行单元(AXU)接口逻辑,布置在所述集成电路芯片上并且耦合到所述发出单元,其中,所述外部辅助执行单元接口逻辑配置为接收由所述发出单元发出的指令,并且通过外部辅助执行单元接口向芯片外辅助执行单元传送所述指令以由所述芯片外辅助执行单元执行;
其中,所述外部辅助执行单元接口具有不确定的等待时间,其中所述外部辅助执行单元接口逻辑被配置为响应于向所述芯片外辅助执行单元发送指令而等待来自所述芯片外辅助执行单元的响应,并且配置为响应于未接收到所述响应而以信号通知错误;所述外部辅助执行单元接口逻辑被配置为通过转换为分组、串行化、降低到较低的时钟频率中的一种或多种方式将所述指令转换为用于所述外部辅助执行单元接口的适当的格式。
2.根据权利要求1所述的电路,其中,所述集成电路芯片是第一芯片,所述电路布置进一步包括第二芯片,芯片外辅助执行单元布置在该第二芯片上。
3.根据权利要求2所述的电路,其中,从由以下构成的组中选择所述第二芯片:现场可编程门阵列(FPGA)、专用集成电路(ASIC)和堆叠的裸片。
4.根据权利要求1所述的电路,其中,所述外部辅助执行单元接口逻辑包括步降逻辑,该步降逻辑配置为相对于所述处理核心的通信频率降低外部辅助执行单元接口的通信频率。
5.根据权利要求1所述的电路,其中,所述外部辅助执行单元接口逻辑包括分组器逻辑,该分组器逻辑配置为经由分组传送从所述发出单元接收的指令。
6.根据权利要求1所述的电路,其中,所述外部辅助执行单元接口逻辑被配置为包括看门狗定时器,其中所述外部辅助执行单元接口逻辑被配置为如果在接收到响应之前看门狗定时器到期,以信号通知错误。
7.一种用于执行指令的电路,包括:
第二芯片;
辅助执行单元,布置在所述第二芯片上;以及
辅助执行单元外部辅助执行单元接口逻辑,布置在所述第二芯片上,并且配置为将所述辅助执行单元耦合到如权利要求1中所述的电路,其中,所述辅助执行单元外部辅助执行单元接口逻辑配置为通过外部辅助执行单元接口接收由所述发出单元发出的指令,并且向所述辅助执行单元传送所述指令以由所述辅助执行单元执行。
8.根据权利要求7所述的电路,其中,从由以下构成的组中选择所述第二芯片:现场可编程门阵列(FPGA);专用集成电路(ASIC);以及堆叠的裸片。
9.根据权利要求8所述的电路,其中,所述外部辅助执行单元接口逻辑配置为响应于由所述辅助执行单元执行指令而更新所述处理核心的架构的状态。
10.一种在数据处理系统中执行指令的方法,所述方法包括:
在集成电路芯片上布置的处理核心中,使用在所述处理核心中布置的发出单元向在所述处理核心中布置的定点执行单元发出第一指令,并且利用所述定点执行单元来执行所述第一指令;以及
利用所述发出单元向芯片外辅助执行单元(AXU)发出第二指令,包括使用在所述集成电路芯片上布置的外部辅助执行单元接口逻辑来通过外部辅助执行单元接口向所述芯片外辅助执行单元发送所述第二指令;
其中,所述外部辅助执行单元接口具有不确定的等待时间,其中所述外部辅助执行单元接口逻辑被配置为响应于向所述芯片外辅助执行单元发送所述第二指令而等待来自所述芯片外辅助执行单元的响应,并且配置为响应于未接收到所述响应而以信号通知错误;所述外部辅助执行单元接口逻辑被配置为通过转换为分组、串行化、降低到较低的时钟频率中的一种或多种方式将所述指令转换为用于所述外部辅助执行单元接口的适当的格式。
11.根据权利要求10所述的方法,其中,所述集成电路芯片是第一芯片,并且其中所述芯片外辅助执行单元布置在第二芯片上。
12.根据权利要求11所述的方法,其中,从由以下构成的组中选择所述第二芯片:现场可编程门阵列(FPGA)、专用集成电路(ASIC)和堆叠的裸片。
13.根据权利要求10所述的方法,进一步包括:利用在所述外部辅助执行单元接口逻辑中布置的步降逻辑,相对于所述处理核心的通信频率降低所述外部辅助执行单元接口的通信频率。
14.根据权利要求10所述的方法,进一步包括:利用在所述外部辅助执行单元接口逻辑中布置的分组器逻辑,经由分组传送从所述发出单元接收的第二指令。
15.根据权利要求10所述的方法,其中,所述外部辅助执行单元接口逻辑包括看门狗定时器,并且其中所述方法进一步包括:如果在接收到响应之前看门狗定时器到期,以信号通知错误。
16.根据权利要求10所述的方法,进一步包括:响应于通过所述外部辅助执行单元接口从所述芯片外辅助执行单元接收的数据,更新所述处理核心的架构的状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/352,907 | 2012-01-18 | ||
US13/352,907 US9075623B2 (en) | 2012-01-18 | 2012-01-18 | External auxiliary execution unit interface for format conversion of instruction from issue unit to off-chip auxiliary execution unit |
PCT/IB2012/057453 WO2013108100A1 (en) | 2012-01-18 | 2012-12-19 | External auxiliary execution unit interface to off-chip auxiliary execution unit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104094222A CN104094222A (zh) | 2014-10-08 |
CN104094222B true CN104094222B (zh) | 2016-10-12 |
Family
ID=48780834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280067468.1A Active CN104094222B (zh) | 2012-01-18 | 2012-12-19 | 用于执行指令的电路和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9075623B2 (zh) |
CN (1) | CN104094222B (zh) |
DE (1) | DE112012005700T5 (zh) |
GB (1) | GB2511675B (zh) |
WO (1) | WO2013108100A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9742630B2 (en) * | 2014-09-22 | 2017-08-22 | Netspeed Systems | Configurable router for a network on chip (NoC) |
US10394635B2 (en) | 2014-10-29 | 2019-08-27 | Hewlett Packard Enterprise Development Lp | CPU with external fault response handling |
US10348563B2 (en) | 2015-02-18 | 2019-07-09 | Netspeed Systems, Inc. | System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology |
US10218580B2 (en) | 2015-06-18 | 2019-02-26 | Netspeed Systems | Generating physically aware network-on-chip design from a physical system-on-chip specification |
US10229470B2 (en) * | 2016-08-05 | 2019-03-12 | Intel IP Corporation | Mechanism to accelerate graphics workloads in a multi-core computing architecture |
US10452124B2 (en) | 2016-09-12 | 2019-10-22 | Netspeed Systems, Inc. | Systems and methods for facilitating low power on a network-on-chip |
US20180159786A1 (en) | 2016-12-02 | 2018-06-07 | Netspeed Systems, Inc. | Interface virtualization and fast path for network on chip |
US10063496B2 (en) | 2017-01-10 | 2018-08-28 | Netspeed Systems Inc. | Buffer sizing of a NoC through machine learning |
US10469337B2 (en) | 2017-02-01 | 2019-11-05 | Netspeed Systems, Inc. | Cost management against requirements for the generation of a NoC |
US10547514B2 (en) | 2018-02-22 | 2020-01-28 | Netspeed Systems, Inc. | Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation |
US11144457B2 (en) | 2018-02-22 | 2021-10-12 | Netspeed Systems, Inc. | Enhanced page locality in network-on-chip (NoC) architectures |
US10983910B2 (en) | 2018-02-22 | 2021-04-20 | Netspeed Systems, Inc. | Bandwidth weighting mechanism based network-on-chip (NoC) configuration |
US11023377B2 (en) | 2018-02-23 | 2021-06-01 | Netspeed Systems, Inc. | Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA) |
US11176302B2 (en) | 2018-02-23 | 2021-11-16 | Netspeed Systems, Inc. | System on chip (SoC) builder |
US11263014B2 (en) * | 2019-08-05 | 2022-03-01 | Arm Limited | Sharing instruction encoding space between a coprocessor and auxiliary execution circuitry |
CN112953977B (zh) * | 2021-05-13 | 2021-11-02 | 华锐分布式(北京)技术有限公司 | 系统数据发送方法、系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0646876A1 (en) * | 1993-10-05 | 1995-04-05 | Nippon Telegraph And Telephone Corporation | Message passing system for distributed shared memory multiprocessor system and message passing method using the same |
US5574849A (en) * | 1992-12-17 | 1996-11-12 | Tandem Computers Incorporated | Synchronized data transmission between elements of a processing system |
GB2385691A (en) * | 2001-12-28 | 2003-08-27 | Nec Electronics Corp | Designing a System LSI |
US6754804B1 (en) * | 2000-12-29 | 2004-06-22 | Mips Technologies, Inc. | Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions |
US7469350B2 (en) * | 2005-12-22 | 2008-12-23 | Ncr Corporation | Power control interface for a self-service apparatus |
US7512724B1 (en) * | 1999-11-19 | 2009-03-31 | The United States Of America As Represented By The Secretary Of The Navy | Multi-thread peripheral processing using dedicated peripheral bus |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US7930519B2 (en) * | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3500633B2 (ja) | 1992-02-07 | 2004-02-23 | セイコーエプソン株式会社 | マイクロエレクトロニクス・デバイスのエミュレーション方法及びエミュレーション装置並びにシミュレーション装置 |
US5623684A (en) | 1994-05-17 | 1997-04-22 | Commquest Technologies, Inc. | Application specific processor architecture comprising pre-designed reconfigurable application elements interconnected via a bus with high-level statements controlling configuration and data routing |
US7395410B2 (en) | 2004-07-06 | 2008-07-01 | Matsushita Electric Industrial Co., Ltd. | Processor system with an improved instruction decode control unit that controls data transfer between processor and coprocessor |
-
2012
- 2012-01-18 US US13/352,907 patent/US9075623B2/en active Active
- 2012-12-19 GB GB1409962.6A patent/GB2511675B/en active Active
- 2012-12-19 DE DE112012005700.7T patent/DE112012005700T5/de active Pending
- 2012-12-19 WO PCT/IB2012/057453 patent/WO2013108100A1/en active Application Filing
- 2012-12-19 CN CN201280067468.1A patent/CN104094222B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574849A (en) * | 1992-12-17 | 1996-11-12 | Tandem Computers Incorporated | Synchronized data transmission between elements of a processing system |
EP0646876A1 (en) * | 1993-10-05 | 1995-04-05 | Nippon Telegraph And Telephone Corporation | Message passing system for distributed shared memory multiprocessor system and message passing method using the same |
US7512724B1 (en) * | 1999-11-19 | 2009-03-31 | The United States Of America As Represented By The Secretary Of The Navy | Multi-thread peripheral processing using dedicated peripheral bus |
US6754804B1 (en) * | 2000-12-29 | 2004-06-22 | Mips Technologies, Inc. | Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions |
GB2385691A (en) * | 2001-12-28 | 2003-08-27 | Nec Electronics Corp | Designing a System LSI |
US7469350B2 (en) * | 2005-12-22 | 2008-12-23 | Ncr Corporation | Power control interface for a self-service apparatus |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US7930519B2 (en) * | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
Also Published As
Publication number | Publication date |
---|---|
WO2013108100A1 (en) | 2013-07-25 |
CN104094222A (zh) | 2014-10-08 |
DE112012005700T5 (de) | 2014-10-09 |
GB201409962D0 (en) | 2014-07-16 |
US9075623B2 (en) | 2015-07-07 |
GB2511675A (en) | 2014-09-10 |
US20130185542A1 (en) | 2013-07-18 |
GB2511675B (en) | 2019-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104094222B (zh) | 用于执行指令的电路和方法 | |
CN104461954B (zh) | 用于管理多个互连ip块中的通信的方法和系统 | |
US7913010B2 (en) | Network on chip with a low latency, high bandwidth application messaging interconnect | |
CN101425966B (zh) | 片上网络以及使用片上网络进行数据处理的方法 | |
CN103838910B (zh) | 管理配电的分布式芯片级功率方法、电路和集成电路装置 | |
US8490110B2 (en) | Network on chip with a low latency, high bandwidth application messaging interconnect | |
US8473667B2 (en) | Network on chip that maintains cache coherency with invalidation messages | |
CN104067242B (zh) | 组合的高速缓存注入和锁定操作 | |
US8438578B2 (en) | Network on chip with an I/O accelerator | |
US7873701B2 (en) | Network on chip with partitions | |
US20090282419A1 (en) | Ordered And Unordered Network-Addressed Message Control With Embedded DMA Commands For A Network On Chip | |
US20090125706A1 (en) | Software Pipelining on a Network on Chip | |
US11645053B2 (en) | Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices | |
US10891414B2 (en) | Hardware-software design flow for heterogeneous and programmable devices | |
US10891132B2 (en) | Flow convergence during hardware-software design for heterogeneous and programmable devices | |
CN104011676A (zh) | 用于跨过多个硬件线程的虚拟线程的细粒度并行的低延迟变量转移网络 | |
CN106201934A (zh) | 串行外围设备接口主机端口 | |
US9753883B2 (en) | Network interface device that maps host bus writes of configuration information for virtual NIDs into a small transactional memory | |
US8489376B2 (en) | Controller and fabric performance testing | |
Saponara et al. | Configurable network-on-chip router macrocells | |
US9535851B2 (en) | Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set | |
US20150222513A1 (en) | Network interface device that alerts a monitoring processor if configuration of a virtual nid is changed | |
US20170357594A1 (en) | Transactional memory that is programmable to output an alert if a predetermined memory write occurs | |
Narmadha et al. | Performance analysis of ADMA on bus based SoC-survey |
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 |