CN103562865B - 用于重新编程可编程硬件设备的方法和系统 - Google Patents
用于重新编程可编程硬件设备的方法和系统 Download PDFInfo
- Publication number
- CN103562865B CN103562865B CN201280026470.4A CN201280026470A CN103562865B CN 103562865 B CN103562865 B CN 103562865B CN 201280026470 A CN201280026470 A CN 201280026470A CN 103562865 B CN103562865 B CN 103562865B
- Authority
- CN
- China
- Prior art keywords
- router
- hardware device
- programmable hardware
- descriptor
- descriptor table
- 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 description 26
- 238000004891 communication Methods 0.000 claims description 13
- 238000013500 data storage Methods 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims description 5
- 230000006978 adaptation Effects 0.000 claims description 2
- 230000010076 replication Effects 0.000 claims 2
- 230000030279 gene silencing Effects 0.000 abstract description 2
- 238000003860 storage Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Classifications
-
- 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/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- 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/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
- G06F15/7892—Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
可编程硬件设备在不需要系统停机时间的情况下被重新编程。为了重新编程设备,静默设备,保存与设备相关联的状态,加载更新,恢复状态,并且重新开始操作,除了可能的系统中的延迟之外,所有对于系统透明。
Description
技术领域
本发明的一个或者多个方面一般涉及可编程硬件设备,并且尤其涉及重新编程这种设备。
背景技术
可编程硬件设备的示例是现场可编程门阵列(FPGA)。现场可编程门阵列是设计为在制造之后配置的集成电路。FPGA配置一般使用硬件描述语言(HDL)(类似于用于专用集成电路(ASIC)的硬件描述语言)规定。FPGA可以用于实现ASIC可以执行的任何逻辑功能。它们包含可编程逻辑组件(即,逻辑块)和允许多个块以各种配置相互连接的可配置互连的层次(hierarchy)。
发明内容
通过提供用于重新编程硬件设备的计算机程序产品克服现有技术的缺点并且提供附加优点。计算机程序产品包括计算机可读存储介质,该计算机可读存储介质由处理电路可读并且存储用于由处理电路执行以执行方法的指令。该方法例如包括:静默与要重新编程的可编程硬件设备相关联的一个或者多个实体;将与可编程硬件设备相关联的状态存储在可编程硬件设备外部的一个或者多个位置;重新加载可编程硬件设备,所述重新加载包括向可编程硬件设备提供更新;以及使用所存储的状态恢复与可编程硬件设备相关联的状态,其中,可编程硬件设备被重新编程而没有系统停机时间。
这里还描述并且要求保护涉及本发明的一个或者多个方面的方法和系统。另外,涉及本发明的一个或者多个方面的服务也被描述并且可能在这里要求保护。
通过本发明的技术实现附加特征和优点。本发明的其它实施例和优点在这里被详细描述并且被认为是要求保护的发明的一部分。
附图说明
本发明的一个或者多个方面被特别指出并且在说明书的结论处的权利要求中作为示例被明确地要求保护。从下面结合附图考虑的详细描述中,本发明的前面和其它目的、特征和优点是显而易见的,在附图中:
图1描绘结合并且使用本发明的一个或者多个方面的通信环境的一个实施例;
图2描绘根据本发明的一个方面的图1的通信环境的其它细节;
图3描绘根据本发明的一个方面的、可以用于实现图1的通信环境的组件以及它们之间的接口的现场可编程门阵列设备和专用集成电路的示例;
图4描绘根据本发明的一个方面的、用以重新编程可编程硬件设备的概述的一个实施例;
图5A描绘根据本发明的一个方面的、用以静默实体并且保存与正在重新编程的可编程硬件设备相关联的状态的逻辑的一个实施例。
图5B描绘根据本发明的一个方面的、用以静默与正在编程的可编程硬件设备相关联的接收路径的逻辑的一个实施例;
图6描绘根据本发明的一个方面的、用以加载用于正在重新编程的可编程硬件设备的更新的逻辑的一个实施例;
图7A描绘根据本发明的一个方面的、用以恢复和重新开始与正在重新编程的可编程硬件设备相关联的操作的逻辑的一个实施例;
图7B描绘根据本发明的一个方面的、用以初始化并且启用与正在重新编程的具体可编程硬件设备相关联的特定状态的逻辑的一个实施例;以及
图8描绘结合本发明的一个或者多个方面的计算机程序的一个实施例。
具体实施方式
根据本发明的一个方面,提供重新编程可编程硬件设备而不需要停机时间的能力。也就是,除了可能的延迟之外,不影响在外部但耦合到正在重新编程的设备的组件。那些组件不需要被关机(bring down)、重新启动或者另外采取用于重新编程的动作。除了性能可能受延迟影响之外,重新编程对于那些组件是透明的。例如,如果要重新编程路由器的一个或者多个块,则除了(多个)适配器或者(多个)主机可能通知处理中的减低速度之外,在不影响耦合到路由器的(多个)适配器或者(多个)主机的情况下,发生重新编程。
正在重新编程的可编程硬件设备例如是现场可编程门阵列,现场可编程门阵列可以包括在很多通信或者计算组件、系统、环境等中。在这里描述的具体示例中,正在重新编程路由器的一个或者多个现场可编程门阵列。然而,可以使用本发明的一个或者多个方面重新编程不同于路由器的组件、系统、环境等中的现场可编程门阵列或者其它可编程硬件设备。
参考图1描述可以包括要重新编程的可编程硬件设备的通信环境的一个实施例。在一个示例中,通信环境100包括由国际商业机器公司(International BusinessMachines Corporation)提供的System服务器。System基于International BusinessMachines Corporation提供的关于的细节在名称为“z/Architecture-Principles of Operation,”IBM publication No.SA22-7832-08,第九版,2010年8月的publication中描述,其全部以引用的方式并入本文。System和是International Business Machines Corporation,Armonk,New York的注册商标。这里使用的其它名称可以是International BusinessMachines Corporation或者其它公司的注册商标、商标或者产品名称。
在一个示例中,通信环境100包括耦合到网络适配器104和主机106的路由器102。网络适配器例如基于快速外围组件互连(PCIe)技术,其规范由PCI特别兴趣组(PCI SIG)维护。主机可以包括一个或者多个虚拟机107,并且因此路由器102可以称为虚拟化路由器。然而,在其它实施例中,主机不包含虚拟机。
在一个示例中,路由器102包括接收缓冲器108,接收缓冲器108从网络适配器104接收数据。该数据以一个或者多个分组的形式接收。解析器110耦合到接收缓冲器,解析器110检查每个分组的首部(例如,层2、层3等),并且执行测试,以确定是否确定接收到的分组的目的地连接。如果这样,则处理确定要求用以向例如与目的地连接对应的虚拟主机存储器109发送数据分组的一个或者多个特定连接的资源是否可用。如果一个或者多个特定连接的资源可以获取用于由诸如分配器112之类的资源分配机构来分配,则它们是可用的。例如,分配器112试图获取要求用以发送该分组到与目的地连接对应的虚拟机107的一个或者多个特定连接资源。(这里可互换地使用“虚拟机”和“虚拟主机”)。
虽然图1的示例描绘一个虚拟机107,但是这是为了例示的目的。系统可以包括多个虚拟机。例如,系统可以包括数百或者数千个虚拟机。利用在单个物理主机上运行的数百或者数千个虚拟机,在任何给定时刻,可能对于虚拟机的某一小子集存在资源的分散不足(scattered shortage)。在物理机内,管理程序可以向不同虚拟机分配不同资源。例如,某些虚拟机可能具有更高优先级,并且因此比其它虚拟机获得更多的时间切片。另一方面,某些虚拟机可能具有分配用于用作接收缓冲器的更多物理存储。。
在一个实施例中,由于先前的资源不足,当相同连接的分组已经存在于弹性先入先出(FIFO)存储器118内时,本地引擎120阻止向新分组分配资源。如果分配器112在获取资源中是成功的,则发送引擎114向与虚拟机107相关联的虚拟主机存储器109写入分组。如果解析器110没有确定分组的目的地连接,则将分组传递到存储引擎116。如果分配器112试图获得要求的资源失败,这可能是因为资源不可用或者因为本地引擎当前对那些资源具有优先存取,则分配器112将分组传递到存储引擎116。
对于要服务的每个分组,存储引擎116从弹性FIFO 118获取自由分组缓冲器。自由分组缓冲器是本地数据存储(LDS)112中的存储器的空的分组尺寸块。存储引擎116将分组移动到该缓冲器中,并且向弹性FIFO 118提交使用的缓冲器。如果自由分组缓冲器资源不可用,则分组被丢弃,或者可选地,只要充足缓冲(诸如接收缓冲器之类)可用,存储引擎116可以等待该共享资源变成可用。因为分组的连接要在其可以被发送到虚拟主机存储器109之前被确定,所以在不需要已知连接(例如,从解析器105到达的那些分组)的情况下,辅助引擎124确定并且指派到被提交到弹性FIFO 118的分组的连接。
本地引擎120连续不断地、周期性地或者重复地为了特定连接资源监测分配器112和为了具有已知目的地连接的分组的存在监测弹性FIFO 118。当资源对于先前缺乏资源的连接变得可用时,本地引擎120经由分配器107得到对那些资源的唯一访问,直至对于该连接的分组不存在于弹性FIFO 118中。当看到具有等待分组和可用资源的连接时,分组从本地数据存储115移除并且传递到分配器112。分配器112分配要求用以发送该分组的特定连接资源到与该连接目的地对应的虚拟机107。因为本地引擎120已经确定资源可用并且对于分组要求它们,所以分配器112是成功的并且由发送引擎114向虚拟主机存储器109写入该分组。
除了上面描述的接收缓冲器和元件,路由器102还包括发送缓冲器以及根据本发明的一个方面的其它元件。参考图2,发送缓冲器200从路由器102经由解析器202向适配器104发送分组。在该具体示例中,解析器202以及接收缓冲器108经由称为PCIe实体201的接口与适配器通信。
位于路由器内的用于发送路径(DTM-TX)210的描述符表管理器(DTM)和用于接收路径(DTM-RX)212的描述符表管理器(DTM)另外耦合到PCIe实体201。这些描述表管理器中的每个分别包括一个或者多个描述符表214、216。例如,对于适配器的每个端口可能存在一个发送和接收描述符表。每个描述符表包括描述正在传递的分组的一个或者多个描述符(例如,分组尺寸、地址)。一些描述符表包括给与适配器以告诉适配器在什么地方存储分组和分组的状态的命令。
此外,每个描述符表管理器分别包括与描述符相关联的描述符控制信息215、217,并且例如包括分组ID、跟踪缓冲器(包括描述符表的控制信息)和/或用于检查分组ID的信息等。描述符表214中包括的分组id用于要发送到适配器的分组;并且描述表216中包括的分组id用于要由适配器接收的分组。
此外,路由器102包括处理器230和在路由器的操作期间使用的控制寄存器240的集合。根据本发明的一个方面,控制寄存器240包括要在可编程硬件设备的重新编程期间设置/重新设备的多个指示符,如下面详细描述。控制寄存器连接到使用该指示符的路由器内的各种组件,并且由处理器230来设置/重置指示符。
路由器102(即,路由器的逻辑块)可以经由可编程硬件设备和/或专用集成电路来实现。在该具体示例中,路由器102的一些逻辑块经由可编程硬件设备(诸如,现场可编程门阵列(FPGA)之类)实现,而其它逻辑块经由专用集成电路(ASIC)实现。
FPGA设备和专用集成电路经由一个或者多个接口相互耦合,如图3中所示。例如,FPGA设备300经由配置接口304和功能接口306耦合到ASIC302。配置接口在FPGA的配置中使用,并且功能接口在涉及FPGA的处理期间使用。
有时,期望对FPGA设备执行更新,以提供附加功能从而改正问题,或者另外做出一些更新。由此,根据本发明的一个方面,提供用于更新FPGA设备而不需要系统停机时间的能力。这意味着同时执行更新,使得不要求IML(初始机器加载)以应用更新,并且该更新透明地应用于系统(例如,主机)或者耦合到设备的网络组件(例如,网络适配器)。操作系统没有注意到更新,不要求手动干预(不改变关断/开启),并且网络看不到任何状态改变。除了可能的性能延迟之外,不存在对系统(例如,主机和适配器)的影响,同时发生重新编程。
参考图4描述在不需要系统停机时间的情况下重新编程可编程硬件设备的逻辑的概括的一个实施例。在该实施例中,处理器230执行任务以重新编程可编程硬件设备。具体地,处理器的固件执行任务。如这里使用,固件例如包括处理器的微代码、毫代码(millicode)和/或宏代码。例如固件包括在更高级机器代码的实现方式中的硬件级指令和/或数据结构。在一个实施例中,固件例如包括私有代码,该私有代码典型作为包括可信软件的微代码或者特定于底层硬件的微代码传递并且控制操作系统对系统硬件的访问。在本示例中,处理器视为路由器102的一部分;然而,在其它实施例中,处理器可以是外部的,但耦合到路由器102。另外,在其它实施例中,不同于固件的处理器代码可以执行一个或者多个任务。
参考图4,可编程硬件设备被静默(quiesce),步骤400,并且然后保存设备的状态,诸如静止状态之类,步骤402。即,与可编程逻辑硬件设备相关联的一个或者多个实体被静默,并且然后保存与设备相关联的状态。然后更新被加载到设备上,步骤404,并且恢复保存的状态,步骤S406。然后重新开始设备的操作,步骤408。这全部在不需要系统停机时间的情况下发生;即,对于系统(如一个或者多个主机和网络适配器之类)并发并且透明。
参考图5A-7B描述这些任务中的每个的其它细节。这些细节提供用于正在重新编程的路由器的FPGA设备的特定示例。然后,本发明的一个或者多个方面可应用于其它组件的FPGA或者其它可编程硬件设备。
最初参考图5A,描述涉及静默设备并且保存其状态的细节。在一个示例中,因为正在重新编程的设备在路由器中,所以来自路由器的发送路径(即,发送缓冲器和解析器)被静默以使得路由器停止开始任何新工作,并且允许处理中的工作完成,步骤500。这例如由设置与发送路径相关联的指示符为定义值(例如,零)来完成。在本示例中,该指示符位于控制寄存器240中。另外,在一个实施例中,例如通过将用于发送路径的描述符表管理器中的描述符表和描述符控制信息复制到本地数据存储中,来保存它们。
除了静默发送路径,路由器的接收路径(例如,接收缓冲器和解析器)被静默,以使得网络适配器停止向路由器提出新工作,以使得路由器结束处理中的任何工作,步骤502。接收路径被静默而不是重置,这是因为重置将被视为链接损失,并且该链接被视为可用以能够捕获数据(诸如下面描述的返回描述符),直至路由器回到在线。下面参考图5B进一步描述关于静默接收路径的其它细节。
继续图5A,本地引擎120也被静默,步骤504。此外,这通过在控制寄存器中设置与本地引擎对应的指示符以指示本地引擎被静默来完成。在静默本地引擎以及发送路径和接收路径之后,保存与可编程硬件设备相关联的特定状态,步骤506。该状态这里称为静止状态,并且例如包括控制寄存器、配置数据、路由表、查找表、用于接收路径的描述符控制信息和可能的其它状态,而不是接收路径描述符本身。保存的状态是依赖于模型的并且其还依赖于正在重新编程的可编程硬件设备。
此外,FPGA和ASIC之间的功能接口306再次通过设置适当指示符被静默,并且被禁用,步骤S508。
参考图5B描述关于静默接收路径的其它细节。最初,停止接收路径,步骤520。这包括执行多个任务,如这里描述的,以通过关断包括在控制寄存器240中的DTM-RX启用来静默用于接收路径的描述符表管理器(DTM-RX)开始。这使得当完成分组的处理时,用于接收路径的描述符表管理器停止将接收路径描述符给回适配器。然而,其继续处理来自适配器和到发送引擎的描述符返回。在主动网络上,接收路径由其自身静默。然后,在较不主动的网络上,适配器可以继续保持一些描述符。
停止接收路径还包括静默适配器接收路径,步骤524,如果适配器支持该功能。这是用以停止接收通信量的第二最彻底方式,但不是所有适配器支持该功能。如果支持该功能,则与该功能对应的描述符设置在控制寄存器中。
另外,为了停止接收路径,停止到路由器的接收通信量,步骤526。这确保将不对路由器做出其它访问。在一个示例中,这仅仅在网络相对空闲并且不存在停止适配器本身的其它方式的情况下执行。在一个示例中,为了停止接收通信量,执行步骤528-536,其每个在下面描述。
最初,设置PCIe实体,以抑制(hold)对用于接收路径的描述符表管理器的访问并且丢弃用于路由器数据接收路径的数据,步骤528。由此,在控制寄存器240中,设置指示符为关断从PCIe实体到接收路径上的描述符表管理器的路径并且设置另一指示符为关断从PCIe实体到接收缓冲器的路径。
此外,PCIe实体被配置为重新映射访问(该访问转到用于接收路径的描述符表管理器)到本地数据存储,步骤530。重新映射将由适配器提供、用以在描述符表中放置访问的地址,转换为指向本地数据存储的不同地址。
此后,扫描用于接收侧的描述符表管理器中的一个或者多个描述符表,以寻找“未完成”(即,仍在处理中)的描述符,步骤532。如果存在未完成的描述符,则从描述符控制信息获取分组id,并且如果该分组在控制寄存器中示为在适配器的接收侧中未确认(in-flight),则本地数据存储中的描述符表中的副本将被标记“有错误地完成”,使得路由器可以完成分组的处理。该路由器然后将该分组id释放回到用于接收路径的描述符表管理器。
此外,将当前描述符表从用于接收路径的描述符表管理器复制到本地数据存储,步骤534。发布标准处理器串行化指令(例如,MSYNC)以确保写入已经完成。
然后设置PCIe实体为再一次允许路由器访问(例如,PCI交换机(switch)访问),但继续丢弃路由器数据接收路径通信量,步骤536。
响应于执行任务以停止接收路径,处理器等待路由器转换为对于接收路径的空闲状态,步骤540。
静默和保存状态之后,用更新加载可编程硬件设备。参考图6,使用设备的配置接口304将新映像加载到可编程硬件设备,步骤600。表示新映像的数据通过总线被发送到可编程硬件设备的配置接口。
然后,到可编程硬件设备的功能接口的链路被重新训练,步骤602并且被重新启用,步骤604。为了重新训练该链路,测量被采用并且与时钟信号比较,以确定用于链路的特定定时。重新启用包括重置控制寄存器中的适当标识符。
此后,恢复状态并且重新开始操作,如参考图7A-7B所描述的。参考图7A,执行最初配置,以将可编程硬件设备回到原始状态。对于FPGA设备,这包括执行标准FPGA配置(例如,初始化寄存器),步骤700。这类似于在FPGA设备的标准加电/初始化期间所执行的内容。另外,除了描述符表和描述符控制信息之外,上面保存的控制寄存器、配置数据、查找表、路由表和其它信息从所保存的状态重新加载,步骤702。DTM-RX和DTM-TX二者的描述符表和描述符控制信息对此免除,因为它们被独立处理。
此外,用于接收路径和发送路径的描述符表管理器被初始化和启用,步骤704。因为PCIe实体在并发更新期间已经丢弃路由器数据接收路径访问,所以路由器还没有看到任何分组数据到达。然而,描述符返回被写入到描述符表的本地数据存储副本中。固件将检查描述符表的本地数据存储副本,以找到当用于接收路径的描述符表管理器离线时由适配器返回的描述符。当描述符表管理器被初始化时,用于那些描述符的那些分组id被标记“可用”。下面参考图7B另外描述关于初始化和启用描述符表管理器的附加细节。
继续图7A,除了初始化和启用用于接收侧和发送侧的描述符表管理器之外,通过重置控制寄存器中的适当标识符启用本地引擎、路由器发送路径、路由器接收路径和适配器接收路径,步骤706-712。
现在参考图7B,为了初始化和启用用于接收路径的描述符表管理器,执行多个任务。例如,设置PCIe实体以抑制路由器访问(例如,PCI交换机访问),步骤730。此外,通过复制所保存的状态恢复与描述符相关联的描述符控制信息217(例如,以确认地址或者另外管理描述符或者描述符表),步骤732,并且将描述符表216的当前本地数存储副本复制到描述符表管理器,步骤734。这包括来自适配器的更新,而描述符表管理器离线。
此外,每个描述符表(例如,每个端口的描述符表)的尾部指针被写入/恢复为指向描述符表管理器中的描述符表的尾部,步骤736。
接收分组id被入队列到位于用于接收路径的描述符表管理器中的释放FIFO,其表示在用于接收路径的描述符表管理器不可用时被返回的分组,步骤740。例如,作为管理接收路径的控制逻辑的发送引擎当以其结束时释放该分组id。这些被排队列到释放FIFO。
另外,启用错误收集和报告描述符表管理器(如果禁用的话),以及描述符表管理器本身,步骤742、744。
设置PCIe实体为允许接收缓冲器访问和路由器访问,步骤746、748。
这完成用于接收路径的描述符表管理器的初始化和启用。
除了上面以外,还初始化和启用用于发送路径的描述符表管理器,包括恢复用于DTM-TX的描述符控制信息和描述符表,以启用DTM-TX并且允许通信量发送到适配器。
上面详细描述在不需要中断ASIC或者系统功能的情况下,重新编程可编程硬件设备(诸如附接到ASIC的FPGA设备之类)的能力。可编程硬件设备首先被静默并且然后例如在ASIC存储器中存储可编程硬件设备的状态。响应于可编程硬件设备正在被重新加载,使用ASIC存储器中的状态恢复硬件可编程设备的状态,并且在不需要任何系统停机时间的情况下重新开始操作。
在一个示例中,因为发生重新编程,所以数据分组继续来到路由器。由此,在重新编程期间,数据分组重新定向到路由器的本地数据存储,而不是被发送到发送引擎。在重新编程之后,将数据分组从数据存储转发到发送引擎,以发送到主机。
在这里的示例中重新配置的可编程硬件设备在路由器内;然而,本发明的一个或者多个方面同样地可应用于其它组件中的可编程硬件设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在参考图8,在一个例子中,计算机程序产品800包括,例如,一个或多个计算机可读存储介质802,在其上存储有计算机可读的程序代码装置或逻辑804,以提供并方便本发明的一个或多个方面。
体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除了上述,本发明的一个或多个方面可由服务提供商提供、许诺(offer)、部署、管理、服务等,该服务提供商提供用户环境的管理。例如,服务提供商可创建、维持、支持等计算机代码和/或计算机基础设施,其为一个或多个用户执行本发明的一个或多个方面。反过来,服务提供商可例如根据预订和/或费用协议从用户接受付费。额外地或可替换地,服务提供商可从向一个或多个第三方销售广告内容接受付费。
在本发明的一个方面,可部署用于执行本发明的一个或多个方面的应用。作为一个例子,部署应用包括提供计算机基础设施,其可操作以执行本发明的一个或多个方面。
作为本发明的又一个方面,可部署计算基础设施,其包括将计算机可读代码集成到计算机系统,其中与计算系统结合的代码能够执行本发明的一个或多个方面。
作为本发明的再一个方面,可提供用于集成计算基础设施包括将计算机可读码集成到计算机系统的过程。计算机系统包括计算机可读介质,其中计算机介质包括本发明的一个或多个方面。与计算机系统结合的代码能够执行本发明的一个或多个方面。
虽然上面描述各种实施例,但是这些仅是示例。例如,其它架构的通信环境可以结合并且使用本发明的一个或者多个方面。另外,环境可以包括比这里描述的更多的适配器、路由器和/或主机,并且适配器不需要基于PCIe。此外,路由器可以包括比这里描述更多、更少和/或与这里描述的不同的元件。另外,可以使用本发明的一个或者多个方面重新编程其它可编程硬件设备。另外,被重新编程的设备不需要是路由器的一部分。作为示例,网络设备、交换设备或者在源和目的地之间传递数据的任何其它设备中的任何类型可以根据本发明的一个或者多个方面重新编程。用以重新编程这种设备的技术例如包括静默、保存状态、加载更新、恢复状态和重新开始操作。还包括在执行重新编程的同时重新定向通信量。此外,被存储和恢复的状态可以包括与这里描述的状态不同的状态,并且可能依赖于正在被重新编程的设备。在不脱离本发明的精神的情况下,很多其它变型是可能的。
而且,其他类型的计算环境可受益于本发明的一个或多个方面。作为例子,环境可包括仿真器(例如,软件或其他仿真机制),其中特定架构(包括例如指令执行、诸如地址转换的架构功能、以及架构寄存器)或其子集被仿真(例如,在具有处理器和存储器的本机计算机系统中)。在这样的环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行仿真器的计算机可具有与正被仿真的能力不同的架构。作为一个例子,在仿真模式中,解码正被仿真的特定指令或操作,且建立合适的仿真功能以实施单个指令或操作。
在仿真环境中,主计算机包括例如存储器以存储指令和数据;指令获取单元以从存储器获取指令,且可选地,提供用于获取的指令的本地缓冲;指令解码单元以接收获取的指令并确定已被获取的指令的类型;以及指令执行单元以执行该指令。执行可包括将数据从存储器加载到寄存器;从寄存器将数据存储回存储器;或执行如由解码单元确定的某些类型的算术或逻辑运算。在一个例子中,每个单元在软件中实现。例如,被所述单元执行的操作被实现为仿真器软件中的一个或多个子例程。
另外,适用于存储和/或执行程序代码的数据处理系统是有用的,该数据处理系统包括至少一个直接耦合或者通过系统总线间接耦合到存储器元件的处理器。例如存储器元件包括在实际执行程序代码期间使用的本地存储器、体存储器和高速缓冲存储器,该高速缓冲存储器提供至少某一程序代码的临时存储,以减少在执行期间必须从体存储获取代码的次数。
输入/输出或者I/O设备(包括,但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器和其它存储器介质等)可以被直接耦合到系统或者通过干预I/O控制器耦合到系统。网络适配器还可以耦合到系统,以使得数据处理系统能够变成耦合到其它数据处理系统或者通过干预私有或者公共网络耦合到远程打印机或者存储设备。调制解调器、有线调制解调器和以太网卡仅仅是几个可用类型的网络适配器。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚地指明。还将理解,当在说明书中使用时,术语“包括”和/或“包含”指明存在所述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件和/或组件。
所附权利要求书中的所有装置或步骤加功能元件的相应结构、材料、操作以及等价物,如有的话,旨在包括用于结合如特别要求保护的其他所要求保护的元件来执行所述功能的任何结构、材料或操作。呈现本发明的说明是为了示出和描述的作用,但不是穷尽性的或将本发明限制于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,且不脱离本发明的范围。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并使得本领域普通技术人员能针对适于考虑的特定用途的具有各种修改的各种实施例理解本发明。
Claims (16)
1.一种用于重新编程可编程硬件设备的计算机系统,所述计算机系统包括:
用于静默与要重新编程的可编程硬件设备相关联的一个或者多个实体的装置,其中,可编程硬件设备是通信环境的路由器的一部分;
用于将与可编程硬件设备相关联的状态存储在可编程硬件设备外部的一个或者多个位置的装置;
用于重新加载可编程硬件设备的装置,所述重新加载包括向可编程硬件设备提供更新;以及
用于使用所存储的状态恢复与可编程硬件设备相关联的状态的装置,其中,可编程硬件设备被重新编程而没有系统停机时间,并且其中,所述用于使用所存储的状态恢复与可编程硬件设备相关联的状态的装置被配置用于:
执行可编程硬件设备的配置;
重新加载除了涉及路由器的一个或者多个描述符表的状态之外的与可编程硬件设备相关联的所存储的状态;
初始化并且启用路由器的至少一个描述符表管理器;以及
恢复涉及路由器的所述一个或者多个描述符表的状态。
2.如权利要求1所述的计算机系统,其中,用于静默与要重新编程的可编程硬件设备相关联的一个或者多个实体的装置被配置用于静默从路由器到耦合到路由器的适配器的发送路径和来自适配器的路由器的接收路径。
3.如权利要求2所述的计算机系统,其中,静默路由器的接收路径包括停止路由器的接收路径并且等待路由器成为空闲。
4.如权利要求3所述的计算机系统,其中,停止路由器的接收路径包括静默用于接收路径的描述符表管理器,并且执行静默适配器的接收路径或者停止到路由器的通信量中的至少一个。
5.如权利要求4所述的计算机系统,其中,停止路由器的接收路径包括静默用于接收路径的描述符表管理器,并且停止到路由器的通信量,停止到路由器的通信量包括:
抑制对路由器的访问;
将路由器的描述符访问重新映射到数据存储;
对于没有完成的一个或者多个描述符,扫描用于接收路径的描述符表管理器的描述符表,并且在数据存储中指示没有完成所述一个或者多个描述符;以及
将一个或者多个描述符表从用于接收路径的描述符表管理器复制到数据存储。
6.如权利要求1所述的计算机系统,其中,初始化和启用至少一个描述符表管理器包括:
抑制对路由器的访问;
恢复与所述一个或者多个描述符表相关联的状态;
将一个或者多个描述符表的本地数据存储副本复制到路由器的至少一个描述符表管理器;
恢复所述一个或者多个描述符表中的一个或者多个指针;
将一个或者多个分组id入队列到路由器的队列;
启用路由器的至少一个描述符表管理器;
允许对路由器的访问;以及
启用与路由器相关联的一个或者多个路径。
7.如权利要求1所述的计算机系统,其中,可编程硬件设备是通信环境的路由器的一部分,并且其中,恢复状态包括初始化和启用路由器的描述符表管理器,初始化和启用包括:
抑制对路由器的访问;
恢复一个或者多个描述符表和与其相关联的控制;
启用描述符表管理器;以及
基于启用描述符表管理器允许对路由器的访问。
8.如权利要求1所述的计算机系统,其中,可编程硬件设备是现场可编程门阵列。
9.一种重新编程可编程硬件设备的方法,所述方法包括:
静默与要重新编程的可编程硬件设备相关联的一个或者多个实体,其中,可编程硬件设备是通信环境的路由器的一部分;
将与可编程硬件设备相关联的状态存储在可编程硬件设备外部的一个或者多个位置;
重新加载可编程硬件设备,所述重新加载包括向可编程硬件设备提供更新;以及
使用所存储的状态恢复与可编程硬件设备相关联的状态,其中,可编程硬件设备被重新编程而没有系统停机时间,并且所述使用所存储的状态恢复与可编程硬件设备相关联的状态包括:
执行可编程硬件设备的配置;
重新加载除了涉及路由器的一个或者多个描述符表的状态之外的与可编程硬件设备相关联的所存储的状态;
初始化并且启用路由器的至少一个描述符表管理器;以及
恢复涉及路由器的所述一个或者多个描述符表的状态。
10.如权利要求9所述的方法,其中,所述静默与要重新编程的可编程硬件设备相关联的一个或者多个实体包括静默从路由器到耦合到路由器的适配器的发送路径和来自适配器的路由器的接收路径。
11.如权利要求10所述的方法,其中,静默路由器的接收路径包括停止路由器的接收路径并且等待路由器成为空闲。
12.如权利要求11所述的方法,其中,停止路由器的接收路径包括静默用于接收路径的描述符表管理器,并且执行静默适配器的接收路径或者停止到路由器的通信量中的至少一个。
13.如权利要求12所述的方法,其中,停止路由器的接收路径包括静默用于接收路径的描述符表管理器,并且停止到路由器的通信量,停止到路由器的通信量包括:
抑制对路由器的访问;
将路由器的描述符访问重新映射到数据存储;
对于没有完成的一个或者多个描述符,扫描用于接收路径的描述符表管理器的描述符表,并且在数据存储中指示没有完成所述一个或者多个描述符;以及
将一个或者多个描述符表从用于接收路径的描述符表管理器复制到数据存储。
14.如权利要求9所述的方法,其中,初始化和启用至少一个描述符表管理器包括:
抑制对路由器的访问;
恢复与所述一个或者多个描述符表相关联的状态;
将一个或者多个描述符表的本地数据存储副本复制到路由器的至少一个描述符表管理器;
恢复所述一个或者多个描述符表中的一个或者多个指针;
将一个或者多个分组id入队列到路由器的队列;
启用路由器的至少一个描述符表管理器;
允许对路由器的访问;以及
启用与路由器相关联的一个或者多个路径。
15.如权利要求9所述的方法,其中,可编程硬件设备是通信环境的路由器的一部分,并且其中,恢复状态包括初始化和启用路由器的描述符表管理器,初始化和启用包括:
抑制对路由器的访问;
恢复一个或者多个描述符表和与其相关联的控制;
启用描述符表管理器;以及
基于启用描述符表管理器允许对路由器的访问。
16.如权利要求9所述的方法,其中,可编程硬件设备是现场可编程门阵列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/151,079 US8903966B2 (en) | 2011-06-01 | 2011-06-01 | Re-programming programmable hardware devices without system downtime |
US13/151,079 | 2011-06-01 | ||
PCT/IB2012/052299 WO2012164420A1 (en) | 2011-06-01 | 2012-05-09 | Re-programming programmable hardware devices without system downtime |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103562865A CN103562865A (zh) | 2014-02-05 |
CN103562865B true CN103562865B (zh) | 2017-07-28 |
Family
ID=47258461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280026470.4A Active CN103562865B (zh) | 2011-06-01 | 2012-05-09 | 用于重新编程可编程硬件设备的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8903966B2 (zh) |
CN (1) | CN103562865B (zh) |
GB (1) | GB2504040A (zh) |
WO (1) | WO2012164420A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9648137B1 (en) | 2016-09-23 | 2017-05-09 | International Business Machines Corporation | Upgrading a descriptor engine for a network interface card |
WO2018159677A1 (ja) * | 2017-03-01 | 2018-09-07 | 日本電信電話株式会社 | データ処理装置、ネットワークシステム、パケット順序制御回路、およびデータ処理方法 |
US10846179B2 (en) * | 2018-11-05 | 2020-11-24 | Arista Networks, Inc. | Hitless repair for network device components |
US11301231B2 (en) | 2019-04-05 | 2022-04-12 | Arista Networks, Inc. | Dynamic run time programming of hardware tables |
US20210314419A1 (en) * | 2020-04-01 | 2021-10-07 | Kang Wing Leung | Direct network connections using cloud instance for internet application services |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805816A (en) * | 1992-05-12 | 1998-09-08 | Compaq Computer Corp. | Network packet switch using shared memory for repeating and bridging packets at media rate |
US6507211B1 (en) * | 1999-07-29 | 2003-01-14 | Xilinx, Inc. | Programmable logic device capable of preserving user data during partial or complete reconfiguration |
CN1488105A (zh) * | 2001-01-31 | 2004-04-07 | �Ҵ���˾ | 控制数据处理系统间经由存储器的数据流的方法和装置 |
EP1892836A1 (en) * | 2006-08-24 | 2008-02-27 | Alcatel Lucent | Method for re-programming an FPGA for use in a transmission line element |
US7444500B1 (en) * | 2000-08-14 | 2008-10-28 | General Software, Inc. | Method for executing a 32-bit flat address program during a system management mode interrupt |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5844422A (en) * | 1996-11-13 | 1998-12-01 | Xilinx, Inc. | State saving and restoration in reprogrammable FPGAs |
DE19654593A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit |
US6078736A (en) | 1997-08-28 | 2000-06-20 | Xilinx, Inc. | Method of designing FPGAs for dynamically reconfigurable computing |
US6122679A (en) * | 1998-03-13 | 2000-09-19 | Compaq Computer Corporation | Master DMA controller with re-map engine for only spawning programming cycles to slave DMA controllers which do not match current programming cycle |
US6292910B1 (en) | 1998-09-14 | 2001-09-18 | Intel Corporation | Method and apparatus for detecting a bus deadlock in an electronic system |
US6314477B1 (en) | 1998-10-30 | 2001-11-06 | Agilent Technologies, Inc. | Performance of fibre channel protocol sequence reassembly using expected frame information and buffer list calculations |
US6226704B1 (en) | 1998-12-01 | 2001-05-01 | Silicon Integrated Systems Corporation | Method and apparatus for performing bus transactions orderly and concurrently in a bus bridge |
US6243781B1 (en) | 1998-12-03 | 2001-06-05 | Intel Corporation | Avoiding deadlock by storing non-posted transactions in an auxiliary buffer when performing posted and non-posted bus transactions from an outbound pipe |
US6557101B1 (en) | 1999-12-22 | 2003-04-29 | Sycamore Networks, Inc. | Methods and apparatus for upgrading programmable control logic without disturbing network traffic flowing through functional elements controlled by the control logic |
US6735174B1 (en) | 2000-03-29 | 2004-05-11 | Intel Corporation | Method and systems for flow control of transmissions over channel-based switched fabric connections |
US6937063B1 (en) | 2000-09-02 | 2005-08-30 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US7096398B1 (en) | 2000-09-29 | 2006-08-22 | Intel Corporation | Distributed test control architecture |
US6636919B1 (en) * | 2000-10-16 | 2003-10-21 | Motorola, Inc. | Method for host protection during hot swap in a bridged, pipelined network |
JP3880843B2 (ja) | 2000-12-01 | 2007-02-14 | 東芝マイクロエレクトロニクス株式会社 | 電子回路装置 |
US6745138B2 (en) * | 2001-02-23 | 2004-06-01 | Power Measurement, Ltd. | Intelligent electronic device with assured data storage on powerdown |
US6757768B1 (en) | 2001-05-17 | 2004-06-29 | Cisco Technology, Inc. | Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node |
US6832279B1 (en) | 2001-05-17 | 2004-12-14 | Cisco Systems, Inc. | Apparatus and technique for maintaining order among requests directed to a same address on an external bus of an intermediate network node |
US6807586B2 (en) | 2002-01-09 | 2004-10-19 | International Business Machines Corporation | Increased computer peripheral throughput by using data available withholding |
US7124230B2 (en) | 2002-04-30 | 2006-10-17 | Intel Corporation | Use of bus transaction identification codes |
US7000041B2 (en) | 2003-03-31 | 2006-02-14 | Intel Corporation | Method and an apparatus to efficiently handle read completions that satisfy a read request |
US6867614B1 (en) | 2003-05-27 | 2005-03-15 | Storage Technology Corporation | Multiconfiguration module for hardware platforms |
US7443869B2 (en) | 2003-08-04 | 2008-10-28 | Intel Corporation | Deadlock avoidance queuing mechanism |
US7028130B2 (en) | 2003-08-14 | 2006-04-11 | Texas Instruments Incorporated | Generating multiple traffic classes on a PCI Express fabric from PCI devices |
US20050091383A1 (en) * | 2003-10-14 | 2005-04-28 | International Business Machines Corporation | Efficient zero copy transfer of messages between nodes in a data processing system |
US7315912B2 (en) | 2004-04-01 | 2008-01-01 | Nvidia Corporation | Deadlock avoidance in a bus fabric |
US7231560B2 (en) | 2004-04-16 | 2007-06-12 | Via Technologies, Inc. | Apparatus and method for testing motherboard having PCI express devices |
US7210000B2 (en) | 2004-04-27 | 2007-04-24 | Intel Corporation | Transmitting peer-to-peer transactions through a coherent interface |
US7519865B1 (en) | 2004-05-06 | 2009-04-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for identifying incomplete transactions |
US7996572B2 (en) | 2004-06-02 | 2011-08-09 | Intel Corporation | Multi-node chipset lock flow with peer-to-peer non-posted I/O requests |
US7782760B2 (en) | 2004-09-30 | 2010-08-24 | Telefonaktiebolaget L M Ericsson (Publ) | Carrier class resilience solution for switched Ethernet local area networks (LANs) |
US7676611B2 (en) | 2004-10-01 | 2010-03-09 | Qlogic, Corporation | Method and system for processing out of orders frames |
JP2006178826A (ja) * | 2004-12-24 | 2006-07-06 | Fujitsu Ltd | Ipパケット伝送装置のデータアップデート方法及び装置 |
US7814242B1 (en) | 2005-03-25 | 2010-10-12 | Tilera Corporation | Managing data flows in a parallel processing environment |
US7437643B2 (en) | 2005-06-21 | 2008-10-14 | Intel Corporation | Automated BIST execution scheme for a link |
US7685380B1 (en) | 2005-06-29 | 2010-03-23 | Xilinx, Inc. | Method for using configuration memory for data storage and read operations |
US7412555B2 (en) | 2005-09-29 | 2008-08-12 | P.A. Semi, Inc. | Ordering rule and fairness implementation |
US7725620B2 (en) * | 2005-10-07 | 2010-05-25 | International Business Machines Corporation | Handling DMA requests in a virtual memory environment |
US7463056B1 (en) | 2005-12-12 | 2008-12-09 | Xilinx, Inc. | Writeable shift register lookup table in FPGA with SRAM memory cells in lookup table reprogrammed by writing after initial configuration |
US7675929B1 (en) | 2006-01-03 | 2010-03-09 | Emc Corporation | Method and system for managing data flow in a data transmission system |
US7581044B1 (en) | 2006-01-03 | 2009-08-25 | Emc Corporation | Data transmission method and system using credits, a plurality of buffers and a plurality of credit buses |
US20070233821A1 (en) | 2006-03-31 | 2007-10-04 | Douglas Sullivan | Managing system availability |
US7412589B2 (en) | 2006-03-31 | 2008-08-12 | International Business Machines Corporation | Method to detect a stalled instruction stream and serialize micro-operation execution |
US7836352B2 (en) | 2006-06-30 | 2010-11-16 | Intel Corporation | Method and apparatus for improving high availability in a PCI express link through predictive failure analysis |
US7616508B1 (en) | 2006-08-10 | 2009-11-10 | Actel Corporation | Flash-based FPGA with secure reprogramming |
TWI335517B (en) | 2006-08-25 | 2011-01-01 | Via Tech Inc | Method of requests access and scheduling and related apparatus thereof |
US20080163005A1 (en) | 2006-12-28 | 2008-07-03 | Sonksen Bradley S | Error injection in pci-express devices |
GB2452913B (en) | 2007-09-18 | 2011-06-15 | Virtensys Ltd | Queuing method |
US7747809B2 (en) | 2008-02-19 | 2010-06-29 | International Business Machines Corporation | Managing PCI express devices during recovery operations |
US20110029706A1 (en) | 2008-04-09 | 2011-02-03 | Nxp B.V. | Electronic device and method for controlling an electronic device |
US8140922B2 (en) | 2008-05-20 | 2012-03-20 | International Business Machines Corporation | Method for correlating an error message from a PCI express endpoint |
US8020035B2 (en) | 2008-07-30 | 2011-09-13 | Hewlett-Packard Development Company, L.P. | Expander circuit for a solid state persistent storage device that provides a plurality of interfaces to corresponding storage controllers |
JP2010238150A (ja) | 2009-03-31 | 2010-10-21 | Toshiba Corp | PCIExpress通信システム、及びその通信方法 |
US8090892B2 (en) | 2009-06-12 | 2012-01-03 | Freescale Semiconductor, Inc. | Ordered queue and methods therefor |
US8381026B2 (en) | 2009-06-22 | 2013-02-19 | Citrix Systems, Inc. | Systems and method for transaction stall detection and propagating the result in a multi-core architecture |
US8400915B1 (en) | 2010-02-23 | 2013-03-19 | Integrated Device Technology, Inc. | Pipeline scheduler for a packet switch |
WO2011120223A1 (en) * | 2010-03-31 | 2011-10-06 | Intel Corporation | Hot-swapping active memory for virtual machines with directed i/o |
US8266331B2 (en) | 2010-07-12 | 2012-09-11 | International Business Machines Corporation | Transmitting retry request associated with non-posted command via response credit channel |
-
2011
- 2011-06-01 US US13/151,079 patent/US8903966B2/en not_active Expired - Fee Related
-
2012
- 2012-04-28 US US13/459,135 patent/US8909745B2/en active Active
- 2012-05-09 WO PCT/IB2012/052299 patent/WO2012164420A1/en active Application Filing
- 2012-05-09 CN CN201280026470.4A patent/CN103562865B/zh active Active
- 2012-05-09 GB GB1319325.5A patent/GB2504040A/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805816A (en) * | 1992-05-12 | 1998-09-08 | Compaq Computer Corp. | Network packet switch using shared memory for repeating and bridging packets at media rate |
US6507211B1 (en) * | 1999-07-29 | 2003-01-14 | Xilinx, Inc. | Programmable logic device capable of preserving user data during partial or complete reconfiguration |
US7444500B1 (en) * | 2000-08-14 | 2008-10-28 | General Software, Inc. | Method for executing a 32-bit flat address program during a system management mode interrupt |
CN1488105A (zh) * | 2001-01-31 | 2004-04-07 | �Ҵ���˾ | 控制数据处理系统间经由存储器的数据流的方法和装置 |
EP1892836A1 (en) * | 2006-08-24 | 2008-02-27 | Alcatel Lucent | Method for re-programming an FPGA for use in a transmission line element |
Also Published As
Publication number | Publication date |
---|---|
US20120311112A1 (en) | 2012-12-06 |
GB201319325D0 (en) | 2013-12-18 |
WO2012164420A1 (en) | 2012-12-06 |
CN103562865A (zh) | 2014-02-05 |
US8909745B2 (en) | 2014-12-09 |
GB2504040A (en) | 2014-01-15 |
US20120311110A1 (en) | 2012-12-06 |
US8903966B2 (en) | 2014-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11683242B2 (en) | Data plane interface network quality of service in multi-tenant data centers | |
US8438578B2 (en) | Network on chip with an I/O accelerator | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
CN103562865B (zh) | 用于重新编程可编程硬件设备的方法和系统 | |
US6831916B1 (en) | Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network | |
US8572614B2 (en) | Processing workloads using a processor hierarchy system | |
US8874638B2 (en) | Interactive analytics processing | |
CN103780655A (zh) | 一种消息传递接口任务和资源调度系统及方法 | |
US20160179591A1 (en) | Push instruction for pushing a message payload from a sending thread to a receiving thread | |
CN103649923B (zh) | 一种numa系统内存镜像配置方法、解除方法、系统和主节点 | |
CA3167334C (en) | Zero packet loss upgrade of an io device | |
US8392636B2 (en) | Virtual multiple instance extended finite state machines with wait rooms and/or wait queues | |
CN110389711A (zh) | 帮助端点设备实现sr-iov功能的方法、设备和计算机程序产品 | |
US9778933B2 (en) | Non-serialized push instruction for pushing a message payload from a sending thread to a receiving thread | |
US20220166718A1 (en) | Systems and methods to prevent packet reordering when establishing a flow entry | |
US20220224605A1 (en) | Simulating network flow control | |
CA3195959A1 (en) | Information processing system, method for processing information and program | |
US10042554B2 (en) | Increased bandwidth of ordered stores in a non-uniform memory subsystem | |
US20190188069A1 (en) | Dual physical-channel systems firmware initialization and recovery | |
TWI813283B (zh) | 用於使用緩衝概要群組之系統間處理之電腦程式產品、電腦系統及電腦實施方法 | |
TWI813284B (zh) | 用於使用緩衝概要群組之向量處理之電腦程式產品、電腦系統及電腦實施方法 | |
US12008413B2 (en) | Vector processing employing buffer summary groups | |
CN107515774B (zh) | 一种在线替换虚拟操作系统底层块设备驱动的方法和装置 | |
Dorsch et al. | IBM Parallel Sysplex design for the IBM z196 system | |
CN115396250A (zh) | 具有一致事务排序的多插槽网络接口控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |