CN106126454B9 - 一种计算机***、高速***组件互联端点设备的访问方法和装置 - Google Patents
一种计算机***、高速***组件互联端点设备的访问方法和装置 Download PDFInfo
- Publication number
- CN106126454B9 CN106126454B9 CN201610474435.9A CN201610474435A CN106126454B9 CN 106126454 B9 CN106126454 B9 CN 106126454B9 CN 201610474435 A CN201610474435 A CN 201610474435A CN 106126454 B9 CN106126454 B9 CN 106126454B9
- Authority
- CN
- China
- Prior art keywords
- access request
- equipment
- pcie endpoint
- response message
- analog response
- 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
Classifications
-
- 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
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- 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
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例涉及一种高速***组件互联端点设备的访问方法、计算机***和装置,对处理器发送的访问请求的报文状态进行监控,并在确定PCIe端点设备未发送对所述访问请求的响应消息时,向处理器发送访问请求的模拟响应消息,使得处理器能够根据该模拟响应消息,确认之前发出的访问请求对应的流程已经完成,从而关闭对该访问请求进行计时的计时器,并清除缓存的该访问请求,保持处理器内部的处理正常进行,避免了访问请求在处理器内积累所导致的MCE复位问题。
Description
技术领域
本发明实施例涉及计算机技术,特别是一种高速***组件互联端点设备的
访问方法、计算机***和装置。
背景技术
高速***组件互联(Peripheral Component Interconnect Express,PCIe)
的简称,是用于计算和通信平台上的高性能***总线。PCIe总线被广泛的应用
在CPU和***设备的互连***中,在计算和存储设备中作为核心业务通道。通
过PCIe总线与CPU互连的***设备可以有多种,例如网卡设备或固态硬盘
(Solid State Disk,SSD)等,本文件中将此类设备统称为PCIe端点设备。
PCIe总线作为服务器或存储***的总线接口被广泛应用,***正常运行时,
由于在线扩容和维护的需求,需要在不断电的情况下增加或者移除PCIe端点设
备,即热插拔的需求。现有的PCIe热插拔遵循以下操作流程:操作者通过按下
按钮发起热拔请求,热插拔控制器获知到热插拔事件后,通知***中所有可能
访问该PCIe端点设备的驱动停止访问该PCIe端点设备,并且将需要进行热插拔
的PCIe端点设备的资源卸载掉,此后,对该PCIe端点设备下电,操作者拔出该
PCIe端点设备。
现有的PCIe端点设备热插拔需要预先通知才能保证***正常运行。然而,
近年来,PCIe总线逐渐由***内的互连发展为***间的互连,外部线缆等应用
增多,线缆容易异常脱落,出现未预先通知的PCIe端点设备异常离线的情况。
另外,用户使用固态硬盘SSD直接接入***的场景越来越广泛,由于用户习惯的
因素,用户可能不预先通知就直接插拔SSD盘。然而,对于上述提到的PCIe端点
设备突然突然异常离线的情况,如果CPU已经发起对这个PCIe端点设备的读写指
令,相关的指令将一直处于待完成状态,当CPU对所述PCIe端点设备的访问指令
持续积累达到一定程度,CPU就会认为整个***异常,报出机器检测异常
(Machine check exception,MCE)错误,并进行复位。
发明内容
本发明实施例提出了一种高速***组件互联端点设备的访问方法、计算机
***和装置,在PCIe端点设备异常离线之后,保证CPU不会产生复位。
第一方面,本发明实施例提出了一种计算机***,所述计算机***包括:
处理器;
高速***组件互联PCIe总线,用于连接PCIe端点设备;
所述处理器用于获取对所述PCIe端点设备进行访问的操作指令,根据所述
操作指令,向所述PCIe端点设备发送访问请求;
所述计算机***还包括模拟响应模块,用于在所述处理器向所述PCIe端点
设备发送所述访问请求之后,对所述访问请求的报文状态进行监控,在预设的
触发条件达到时,确定所述访问请求的报文状态,如果所述访问请求的报文状
态是“未完成”,则获取所述访问请求的模拟响应消息,并向所述处理器发送所
述模拟响应消息;
其中,所述访问请求的报文状态包括“已完成”或“未完成”,所述“未完
成”表示所述PCIe端点设备未发送所述访问请求的响应消息。
结合第一方面,在第一种可能的实现方式中,所述模拟响应模块设置于所
述处理器和所述PCIe端点设备的信号传输路径中,具体用于接收所述处理器发
送的访问请求,向所述PCIe端点设备转发所述访问请求,监控自身是否接收到
所述PCIe端点设备发送的所述访问请求的响应消息,若接收到所述PCIe端点
设备发送的所述访问请求的响应消息,将所述访问请求的报文状态记录为“已
完成”。
结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实
现方式中,所述计算机***还包括:PCIe交换器,用于将多个所述PCIe端点设
备连接到所述处理器,所述PCIe交换器的下游端口通过所述PCIe总线与多个所
述PCIe端点设备连接;
所述模拟响应模块的一个端口通过所述PCIe总线与所述PCIe交换器的上游
端口连接,所述模拟响应模块的另一个端口与所述处理器连接。
结合第一方面或者第一方面的第一种可能的实现方式或者第一方面的第二
种可能的实现方式,在第三种可能的实现方式中,所述访问请求的模拟响应消
息包括第一类型模拟响应消息或第二类型模拟响应消息,所述第一类型模拟响
应消息指示所述PCIe端点设备不支持所述访问请求,所述第二类型模拟响应消
息指示所述PCIe端点设备异常;
所述处理器还用于根据所述第一类型模拟响应消息或所述第二类型模拟响
应消息,中止对所述PCIe端点设备的后续访问。
结合第一方面或者第一方面的第一种可能的实现方式或者第一方面的第二
种可能的实现方式,在第四种可能的实现方式中,所述预设的触发条件为所述
PCIe端点设备发生异常离线;
相应地,所述模拟响应模块还用于监测所述PCIe端点设备是否发生异常离
线,在确定所述PCIe端点设备发生异常离线时,确定所述访问请求的报文状态。
结合第一方面或者第一方面的第一种可能的实现方式或者第一方面的第二
种可能的实现方式,在第五种可能的实现方式中,所述预设的触发条件为所述
访问请求的计时器超时;
相应地,所述模拟响应模块还用于针对所述处理器发送的所述访问请求启
动计时器进行计时,在所述计时器超时后,确定所述访问请求的报文状态。
第二方面,还提出了一种高速***组件互联PCIe端点设备的访问方法,PCIe
端点设备通过PCIe总线接入计算机***中,所述方法包括:
在所述计算机***中的处理器向所述PCIe端点设备发送访问请求之后,对
所述访问请求的报文状态进行监控,其中,所述访问请求的报文状态包括“已
完成”或“未完成”,所述“未完成”表示所述PCIe端点设备未发送所述访问
请求的响应消息;
当预设的触发条件达到时,确定所述访问请求的报文状态;
如果所述访问请求的报文状态是“未完成”,获取所述访问请求的模拟响应
消息;
向所述处理器发送所述访问请求的模拟响应消息。
结合第二方面,在第一种可能的实现方式中,所述方法还包括:
接收所述处理器发送的访问请求,向所述PCIe端点设备转发所述访问请求;
则,所述对所述访问请求的报文状态进行监控包括:
监控自身是否接收到所述PCIe端点设备发送的所述访问请求的响应消息,
若接收到所述PCIe端点设备发送的所述访问请求的响应消息,将所述访问请求
的报文状态记录为“已完成”。
结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实
现方式中,所述预设的触发条件为所述PCIe端点设备发生异常离线;
所述方法还包括:
监测所述PCIe端点设备是否发生异常离线,在确定所述PCIe端点设备发
生异常离线时,执行所述确定所述访问请求的报文状态的步骤。
结合第二方面或者第二方面的第一种可能的实现方式,在第三种可能的实
现方式中,所述预设的触发条件为所述访问请求的计时器超时;
所述方法还包括:
针对所述处理器发送的所述访问请求启动计时器进行计时,在所述计时器
超时后,执行所述确定所述访问请求的报文状态的步骤。
第三方面,提出了一种模拟响应装置,应用于计算机***中,高速***组
件互联PCIe端点设备通过PCIe总线接入所述计算机***中,所述装置包括:
监控单元,用于在所述计算机***中的处理器向所述PCIe端点设备发送访
问请求之后,对所述访问请求的报文状态进行监控,其中,所述访问请求的报
文状态包括“已完成”或“未完成”,所述“未完成”表示所述PCIe端点设备
未发送所述访问请求的响应消息;
确定单元,用于当预设的触发条件达到时,根据所述监控单元的监控结果
确定所述访问请求的报文状态;
获取单元,用于在所述确定单元确定所述访问请求的报文状态是“未完成”
时,获取所述访问请求的模拟响应消息;
响应单元,用于向所述处理器发送所述获取单元获取的所述模拟响应消息。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,还
包括交互单元,用于接收所述处理器发送的访问请求,向所述PCIe端点设备转
发所述访问请求;
则所述监控单元具体用于监控所述交互单元是否接收到所述PCIe端点设备
发送的所述访问请求的响应消息,若接收到所述PCIe端点设备发送的所述访问
请求的响应消息,将所述访问请求的报文状态记录为“已完成”。
第四方面,提出了一种计算机,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述
总线连接,当所述计算机运行时,所述处理器执行所述存储器存储的所述计算
机执行指令,以使所述计算机执行第二方面所述的一种高速***组件互联PCIe
端点设备的访问方法。
第五方面,提出了一种计算机可读介质,包括计算机执行指令,当计算机
的处理器执行所述计算机执行指令时,所述计算机执行第二方面所述的一种高
速***组件互联PCIe端点设备的访问方法。
本发明实施例中,由于能够对处理器发送的访问请求的报文状态进行监控,
并在确定PCIe端点设备未发送对所述访问请求的响应消息时,向处理器发送访
问请求的模拟响应消息,使得处理器能够根据该模拟响应消息,确认之前发出
的访问请求对应的流程已经完成,从而关闭对该访问请求进行计时的计时器,
并清除缓存的该访问请求,保持处理器内部的处理正常进行,避免了访问请求
在处理器内积累所导致的MCE复位问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例
中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前
提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例提供的一种计算机***的组成图;
图2是根据本发明实施例提供的又一种计算机***的组成图;
图3是根据本发明实施例提供的一种方法流程图;
图4是根据本发明实施例提供的又一种方法流程图;
图5是根据本发明实施例提供的又一种方法流程图;
图6是根据本发明实施例提供的一种模拟响应装置的组成图;
图7是根据本发明实施例提供的又一种模拟响应装置的组成图;
图8是根据本发明实施例提供的一种计算机的组成图。
具体实施方式
本发明实施例提出了一种高速***组件互联端点设备的访问方法、计算机
***和装置,当有PCIe端点设备需要进行热插拔操作时可以不用预先通知***
进行预处理,就直接断开PCIe端点设备与处理器之间的连接,此时处理器也不
会产生MCE复位的风险。
本发明实施例将PCIe端点设备被直接拔出***或者出现故障掉线的情况统
称为PCIe端点设备的异常离线。
本发明实施例的***架构
图1描绘了本发明实施例提供的计算机***的组成图,图1所示的计算机
***中包括CPU 110和存储器120,PCIe端点设备130通过PCIe总线140连接
到CPU110,并可以从该计算机***中插拔出去。PCIe端点设备130包含多种类
型,例如图形处理单元131、网络适配器132、固态硬盘133与视频加速部件134。
图1所示的计算机***中的PCIe端点设备130和CPU110组成一个PCIe域,
所述PCIe域中的所有设备通过PCIe总线140与CPU 110连接并接受CPU110的
控制。
当CPU110获取到对PCIe端点设备130进行访问的操作指令后,CPU110根
据操作指令,向PCIe端点设备130发出访问请求,要求对PCIe端点设备130
的寄存器进行读操作或写操作,如果PCIe端点设备130发生异常离线,CPU110
将接收不到PCIe端点设备130对CPU110的访问请求的响应消息,此时,CPU就
会认为该访问请求属于未完成的任务,如果此类未完成任务在CPU中积累到一
定程度,CPU就会认为整个***异常,报出MCE错误进行复位。
本发明实施例在***中新增模拟响应模块160,该模拟响应模块160用于在
所述CPU110向所述PCIe端点设备130发送所述访问请求之后,对CPU110发送
的所述访问请求的报文状态进行监控,如果预先设定的触发条件达到时,所述
访问请求的报文状态仍然是“未完成”,即所述PCIe端点设备130未发送对所
述访问请求的响应消息,该模拟响应模块160就获取所述访问请求的模拟响应
消息,并向CPU110发送所述模拟响应消息。由于所述模拟响应消息与所述访问
请求具有相同的报文头,所述访问请求与所述模拟响应消息互相对应,可以使
得CPU认为其之前发出的访问请求对应的流程已经被完成,从而关闭对该访问
请求进行计时的计时器,并清除CPU自身缓存的该访问请求。
其中,所述访问请求的报文状态包括“已完成”或“未完成”,“已完成”
表示所述PCIe端点设备已经发送所述访问请求的响应消息,“未完成”表示所
述PCIe端点设备未发送所述访问请求的响应消息。
另外,所述模拟响应模块160还用于在所述处理器向所述PCIe端点设备发
送所述访问请求之后,就生成所述访问请求的模拟响应消息,并缓存所述访问
请求的模拟响应消息,该模拟响应模块160后续直接获取自身缓存的所述访问
请求的模拟响应消息即可。
本发明实施例中,由于模拟响应模块能够对CPU发送的所述访问请求的报
文状态进行监控,并在确定PCIe端点设备未发送对所述访问请求的响应消息时,
向CPU发送访问请求的模拟响应消息,使得CPU能够根据该模拟响应消息,确
认之前发出的访问请求对应的流程已经完成,从而关闭对该访问请求进行计时
的计时器,并清除缓存的该访问请求,保持CPU内部的处理正常进行,避免了
访问请求在CPU内积累所导致的MCE复位问题。
本发明一种具体的实施方式中,模拟响应模块160对所述访问请求的报文
状态进行监控,可以通过监控自身是否接收到所述PCIe端点设备130发送的所
述访问请求的响应消息来实现,若所述模拟响应模块接收到所述PCIe端点设备
发送的所述访问请求的响应消息,模拟响应模块将所述访问请求的报文状态记
录为“已完成”。
在本发明的一个具体实施例中,可以将模拟响应模块160设置在CPU110和
各个PCIe端点设备130之间的传输路径中,保证CPU110和各个PCIe端点设备
130之间的消息都需要经过模拟响应模块160,从而模拟响应模块160可以通过
监控自身是否接收到所述PCIe端点设备130发送的所述访问请求的响应消息来
监控所述访问请求的报文状态,另一种实现方式中,也可以预先在PCIe端点设
备130上进行配置,使得PCIe端点设备130向CPU110发送所述访问请求的响
应消息的时候,也向模拟响应模块发送该响应消息,这样也可以保证模拟响应
模块160根据自身是否接收到所述访问请求的响应消息来监控所述访问请求的
报文状态。当然,本领域技术人员也可以根据本发明实施例提供的实现方式,
采用其他等同或者相似的实现方式来实现模拟响应模块160对所述访问请求的
报文状态进行监控。
如图1所示,模拟响应模块160被设置在CPU110和各个PCIe端点设备130
之间的信号传输路径中,这样,CPU110发出的访问请求需要通过模拟响应模块
160才能到达PCIe端点设备130,因此模拟响应模块160可以接收到访问请求,
并且,由于PCIe端点设备发送的消息需要经过模拟响应模块160才能到达
CPU110,因此模拟响应模块160可以根据自身是否接收到PCIe端点设备130发
送的对该访问请求的响应消息,确定PCIe端点设备130是否发送所述访问请求
的响应消息,并记录所述访问请求的报文状态。进一步地,在本发明实施例的
又一种具体实现方式中,当模拟响应模块160接收到CPU110发送的访问请求之
后,还可以缓存该访问请求,若后续接收到PCIe端点设备130发送的该访问请
求的响应消息,模拟响应模块160可以将缓存的该访问请求打上“已完成”的
标记,或者删除缓存的该访问请求,模拟响应模块160在预设的触发条件到达
时,可以查询该访问请求的报文状态,即查询缓存的访问请求的标记或者查询
缓存的访问请求,如果该访问请求的标记表示该访问请求“未完成”或者缓存
的访问请求未被删除,模拟响应模块160确定所述访问请求的报文状态是“未
完成”,即所述PCIe端点设备130未发送该访问请求的响应消息,则模拟响应
模块160获取该访问请求的模拟响应消息,并向CPU110发送该模拟响应消息。
其中,模拟响应模块160可以在接收到CPU110发送的所述访问请求时,提
前生成所述访问请求的模拟响应消息,并将生成的所述访问请求的模拟响应消
息与所述访问请求进行关联缓存,后续模拟响应模块160直接获取缓存的所述
访问请求的模拟响应消息即可。当然,模拟响应模块160也可以在确定未接收
到PCIe端点设备130发送的该访问请求的响应消息时,才生成该访问请求的模
拟响应消息,本发明实施例对具体实施形式不做限定。
如图2所示,如果***中存在多个PCIe端点设备,可以通过PCIe交换器
150实现多个PCIe端点设备130与CPU110的连接,图2所示的***中除了图1
所示的各组成元素之外,还包括PCIe交换器150,该PCIe交换器150上游端口
通过PCIe总线140与CPU110连接,下游端口面向每个PCIe端点设备提供一个
PCIe端口,所述每个PCIe端口通过PCIe总线140连接到每个PCIe端点设备,
PCIe交换器150用于将数据向下游路由到对应的PCIe端口,以及从每个独立的
PCIe端口将数据向上游路由至CPU110。在图2中,模拟响应模块160可以设置
在CPU110与PCIe交换器150之间的信号传输路径中,用来接收CPU110发出的
访问请求,并对CPU110发出的访问请求进行缓存,向所述PCIe端点设备130
转发所述访问请求,对所述访问请求的报文状态进行监控,若确定自身接收到
所述PCIe端点设备130发送的所述访问请求的响应消息,将自身缓存的所述访
问请求打上“已完成”的标记,或者删除自身缓存的所述访问请求,在预设的
触发条件到达时,查询缓存的访问请求的标记或者缓存的访问请求,如果该访
问请求的标记表示该访问请求“未完成”或者缓存的访问请求未被删除,模拟
响应模块160即确定PCIe端点设备130未发送该访问请求的响应消息,则获取
该访问请求的模拟响应消息,并向CPU110发送该模拟响应消息。
在上述实施例中,上述预设的触发条件可以是模拟响应模块160确定PCIe
端点设备130发生异常离线,此种情况下,模拟响应模块160还用于监测所述
PCIe端点设备是否异常离线,在图1和图2所示的实施例中,模拟响应模块160
确定自身是否接收到PCIe端点设备130的异常离线通知(例如PCIe端点设备
被拔出***的中断通知),根据所述PCIe端点设备130的异常离线通知确定所
述PCIe端点设备130发生异常离线。上述预设的触发条件还可以是所述访问请
求的计时器超时,此种情况下,模拟响应模块160还用于针对PCIe端点设备130
发送的访问请求启动计时器,在该计时器超时后,确定PCIe端点设备130是否
发送对访问请求的响应消息,在图1和图2所示的实施例中,模拟响应模块160
在接收到CPU110发送的访问请求并缓存该访问请求后,即针对该访问请求启动
计时器。
本发明实施例,模拟响应模块通过对访问请求的报文状态的监控,在预设
的触发条件达到时,如果访问请求的报文状态仍然为“未完成”状态,模拟响
应模块就将模拟生成的访问请求的模拟响应消息发送给CPU,使得CPU不再继续
对该访问请求对应的流程是否完成进行计时,并清除自身缓存的该访问请求,
保持CPU内部处理的正常运行,避免了CPU访问请求超时不完成所导致的MCE
复位问题。
在上述各实施例中,模拟响应模块160向CPU110发送的访问请求的模拟响
应消息可以包括第一类型模拟响应消息或第二类型模拟响应消息,所述第一类
型模拟响应消息指示所述PCIe端点设备130不支持所述访问请求,所述第二类
型模拟响应消息指示所述PCIe端点设备130异常,所述CPU110接收到访问请
求的模拟响应消息之后,还用于根据所述第一类型模拟响应消息或所述第二类
型模拟响应消息,确定对所述PCIe端点设备130的访问失败,并据此不再启动
访问数据的读取的操作。本实施例中由于进一步指明了模拟响应消息的类型,
使得CPU根据该模拟响应消息确认本次访问流程完成的同时,还能够确认本次
访问并非一次成功的访问,并据此不去执行对本次访问相关数据的下一步的操
作(例如读取操作),因此本发明实施例在PCIe端点设备异常离线的情况下的
维持CPU正常处理流程的同时,还避免了CPU去执行一些不必要的操作,从而
避免***资源的浪费。
在本发明的又一个实施例中,所述CPU110针对被访问的PCIe端点设备可
能具体不止一条访问请求,例如发送多条访问请求,此种情况下,模拟响应模
块160可以对所述CPU发送的所述多条访问请求的每条的报文状态都进行监控,
例如缓存所述多条访问请求的每一条,对自身是否接收到每一条访问请求的响
应消息进行监控,在预设的触发条件达到时,对没有接收到响应消息的访问请
求的数量进行统计,得到所述多条访问请求中报文状态是“未完成”的访问请
求的数量,若所述数量超过第一门限值,则获取所述访问请求的模拟响应消息,
并向所述处理器发送所述模拟响应消息。在本实施例中,并非只要有一条访问
请求没有接收到的响应消息,CPU就会产生MCE复位,实际上CPU具有一定的容
忍量,只有在不返回响应消息的访问请求数量累计到一定数值之后,才会产生
MCE复位,因此,本实施例设置第一门限值,只有没有接收到响应消息的访问请
求数量超过这个第一门限值时,模拟响应模块160才将模拟响应消息发送给CPU,
以避免CPU的MCE复位。
上述模拟响应模块160可以通过软件或者硬件的方式实现,在本发明提供
的一种实施例中,可以采用FPGA(Field-Programmable Gate Array),即现场
可编程门阵列来实现。
图1和图2中描述的CPU110也只是一种示例,例如还可以是特定集成电路,
不管哪一种形式,其在计算机***中,实现处理器的功能。本发明实施例所述
的计算机***,可以是计算型服务器,也可以是管理路由的服务器,例如交换
机,本发明对计算机***的具体实现形式不做限定。
PCIe端点设备的访问流程
下面对PCIe端点设备的访问流程实施例进行介绍,如图3所示,为本发明
实施例提供的对PCIe端点设备进行访问的流程,该PCIe端点设备通过PCIe总
线接入计算机***,包括:
S301:在所述计算机***中的CPU向PCIe端点设备发送访问请求之后,模
拟响应模块对所述访问请求的报文状态进行监控。
具体地,所述访问请求的报文状态包括“已完成”或“未完成”,“已完成”
表示所述PCIe端点设备已经发送所述访问请求的响应消息,“未完成”表示所
述PCIe端点设备未发送所述访问请求的响应消息。
所述模拟响应模块对所述访问请求的报文状态进行监控,可以通过监控自
身是否接收到所述PCIe端点设备发送的所述访问请求的响应消息来实现,若所
述模拟响应模块接收到所述PCIe端点设备发送的所述访问请求的响应消息,模
拟响应模块将所述访问请求的报文状态记录为“已完成”。
进一步地,模拟响应模块可以设置在CPU和PCIe端点设备的信号传输路径
上,这样,模拟响应模块可以接收到来自CPU的访问请求,也可以接收到来自
PCIe端点设备的访问请求的响应消息,模拟响应模块可以在接收到访问请求后
即缓存该访问请求,后续若接收到该访问请求的响应消息,则将缓存的该访问
请求打上“已完成”的标记,或者模拟响应模块删除缓存的该访问请求(此种
情况下,访问请求的报文状态通过是否缓存访问请求来标记,若缓存访问请求,
则表示该访问请求的报文状态未完成,若缓存的访问请求被删除,则表示该访
问请求的报文状态已完成)。
S302:当预先设定的触发条件达到时,所述模拟响应模块确定所述访问请
求的报文状态。
所述预先设定的触发条件可以是所述访问请求的计时器超时,也可以是接
收到PCIe端点设备发生异常离线的通知,实施方式后续实施例将具体介绍。
S303:如果所述访问请求的报文状态是“未完成”,所述模拟响应模块获取
所述访问请求的模拟响应消息。
S304:向所述CPU发送所述模拟响应消息。
具体地,模拟响应模块可以获取自身生成的所述访问请求的模拟响应消息,
所述模拟响应消息与所述访问请求具有相同的报文头,所述访问请求与所述模
拟响应消息互相对应,可以使得CPU认为其之前发出的访问请求对应的流程已
经被完成,从而关闭对该访问请求进行计时的计时器,并清除CPU自身缓存的
该访问请求,保持了CPU内部的处理正常进行,避免了访问请求在CPU内积累
所导致的CPU的MCE复位问题。
本发明实施例中的访问请求的模拟响应消息并非由PCIe端点设备发出,并
非所述访问请求真实的响应消息,可以由其他的模块模拟生成,本发明实施例
中可以由所述模拟响应模块生成所述访问请求的模拟响应消息。模拟响应模块
可以预先生成该访问请求的模拟响应消息,也可以在确定所述访问请求的报文
状态是“未完成”时,临时生成该访问请求的模拟响应消息。
本发明实施例,模拟响应模块通过对访问请求的报文状态的监控,在预设
的触发条件达到时,如果访问请求的报文状态仍然为“未完成”状态,模拟响
应模块就将模拟生成的访问请求的模拟响应消息发送给CPU,使得CPU不再继续
对该访问请求对应的流程是否完成进行计时,并清除自身缓存的该访问请求,
保持CPU内部处理的正常运行,避免了CPU访问请求超时不完成所导致的MCE
复位问题。
结合上述图1或图2所示的计算机***实施例,当模拟响应模块设置于CPU
和PCIe端点设备之间的信号传输路径中,本发明实施例一个具体的访问流程如
图4所示,包括:
S401:计算机***中的CPU获得操作指令,所述操作指令指示所述CPU对
PCIe端点设备进行访问,所述CPU向所述PCIe端点设备发送访问请求。
其中,当上游端点产生对PCIe端点设备的读操作或写操作需求时,所述PCIe
端点设备的驱动模块接收上游端点的调用,根据预先配置的访问接口生成对
PCIe端点设备进行访问的操作指令,CPU获得该操作指令。
S402:所述模拟响应模块接收来自所述CPU的所述访问请求,缓存所述访
问请求。
由于所述模拟响应模块设置于CPU和PCIe端点设备之间的信号传输路径
中,其能够接收到来自CPU的访问请求;
S403:所述模拟响应模块生成所述访问请求的模拟响应消息,并将所述模
拟响应消息与所述访问请求关联缓存。
模拟响应模块可以在本步骤403中,即缓存所述访问请求的时候,提前生
成所述访问请求的模拟响应消息,也可以在后续步骤中确定需要模拟响应消息
的时候,再生成所述模拟响应消息。
S404:所述模拟响应模块向所述PCIe端点设备转发所述访问请求。
S405:所述模拟响应模块监控所述访问请求的报文状态。
具体地,所述模拟响应模块监控自身是否接收到所述PCIe端点设备发送的
所述访问请求的响应消息,若所述模拟响应模块接收到所述PCIe端点设备发送
的所述访问请求的响应消息,模拟响应模块将缓存的所述访问请求打上“已完
成”的标记,或者模拟响应模块删除缓存的所述访问请求。
所述模拟响应模块可以在步骤404后,即其向所述PCIe端点设备转发所述
访问请求之后启动所述监控,也可以在步骤401后,即CPU向所述PCIe端点设
备发送所述访问请求之后就启动所述监控。
S406:所述模拟响应模块接收到所述PCIe端点设备异常离线的通知,确定
所述访问请求的报文状态。
本实施例中,预先设定的触发条件是接收到所述PCIe端点设备异常离线的
通知。由于模拟响应模块设置CPU和PCIe端点设备之间的信号传输路径中,若
PCIe端点设备被拔出,向CPU传送的PCIe端点设备异常离线的通知会经过模拟
响应模块,该模拟响应模块接收该PCIe端点设备异常离线的通知,确定预先设
定的触发条件达到,查询所述访问请求的报文状态,确定所述报文状态。
S407:若所述模拟响应模块确定所述访问请求的报文状态是“未完成”,所
述模拟响应模块获取自身缓存的所述访问请求的模拟响应消息,并向所述CPU
发送所述模拟响应消息。
本实施例中,所述模拟响应消息可以是第一类型模拟响应消息,指示所述
PCIe端点设备130不支持所述访问请求,例如所述模拟响应消息携带
Unsupported Request(UR)指示,或者,所述模拟响应消息可以是第二类型模拟
响应消息,指示所述PCIe端点设备130异常,例如所述模拟响应消息携带
Completer Abort(CA)指示。
S408:所述CPU接收到所述模拟响应消息,根据所述模拟响应消息确定所
述访问请求对应的流程被完成,清除自身缓存的所述访问请求。
由于所述模拟响应消息与所述访问请求具有相同的报文头,访问请求与模
拟响应消息相互对应,可以使得CPU认为其之前发出的访问请求对应的流程已
经被完成,从而关闭对该访问请求进行计时的计时器,并清除CPU自身缓存的
该访问请求,最终保持了CPU内部的处理正常进行,避免了访问请求在CPU内
积累所导致的CPU的MCE复位问题。
进一步,由于该模拟响应消息还可能携带UR或者CA指示,模拟响应模块
还可以进一步根据所述模拟响应消息携带的指示信息,确定对所述PCIe端点设
备的访问失败,以及进行访问错误处理。所述访问错误处理可以包括:抑制所
述CPU对所述访问请求相关的进一步操作(例如数据的读取),或者将所述PCIe
端点设备的状态记录为发生异常离线,从而使得CPU中止对所述PCIe端点设备
进行后续访问操作。
S409:所述模拟响应模块将所述PCIe端点设备异常离线的通知转发给所述
CPU。
所述CPU后续可以根据所述PCIe端点设备异常离线的通知,将所述PCIe
端点设备对应的物理设备进行下电操作,以及相关的资源释放操作。
本发明实施例中,模拟响应模块通过对访问请求的报文状态的监控,在接
收到被访问的PCIe端点设备异常离线的通知时,如果访问请求的报文状态仍然
为“未完成”状态,模拟响应模块就将模拟生成的访问请求的模拟响应消息发
送给CPU,使得CPU不会对该访问请求对应的流程是否完成进行超时计时,保持
CPU内部处理的正常运行,避免了CPU内部访问请求超时不完成所导致的MCE复
位问题。本发明实施例中,模拟响应模块设置CPU和PCIe端点设备之间的信号
传输路径中,可以通过自身是否接收到被访问的PCIe端点设备发出的访问请求
的响应消息实现对访问请求报文状态的监控,实现起来方便灵活,效率较高。
另外,本实施例中由于进一步指明了模拟响应消息的类型,使得CPU根据
该模拟响应消息确认本次访问流程完成的同时,还能够确认本次访问并非一次
成功的访问,并据此不去执行对本次访问相关数据的下一步的操作(例如读取
操作),因此本发明实施例在PCIe端点设备异常离线的情况下的维持CPU正常
处理流程的同时,还避免了CPU去执行一些不必要的操作,从而避免***资源
的浪费。
本发明方法实施例二,本实施例中模拟响应模块仍然设置于CPU和PCIe端
点设备之间的信号传输路径中,如图5所示,该方法包括:
S501:计算机***中的CPU获得操作指令,所述操作指令指示所述CPU对
PCIe端点设备进行访问,所述CPU向所述PCIe端点设备发送访问请求。
S502:所述模拟响应模块接收来自所述CPU的所述访问请求,缓存所述访
问请求。
由于所述模拟响应模块设置CPU和PCIe端点设备之间的信号传输路径中,
其能够接收到来自CPU的访问请求。
S503:所述模拟响应模块针对所述访问请求启动计时器,并开始计时。
S504:所述模拟响应模块生成所述访问请求的模拟响应消息,并将所述模
拟响应消息与所述访问请求关联缓存。
模拟响应模块可以在本步骤503中,即缓存所述访问请求的时候,提前生
成所述访问请求的模拟响应消息,也可以在后续步骤中确定需要模拟响应消息
的时候,再生成所述模拟响应消息。
上述步骤503和步骤504执行没有先后之分,模拟响应模块可以在接收到
所述访问请求之后同时开始执行步骤503和504,也可以先执行503再执行504。
S505:所述模拟响应模块向所述PCIe端点设备转发所述访问请求。
S506:所述模拟响应模块监控所述访问请求的报文状态。
具体地,所述模拟响应模块监控自身是否接收到所述PCIe端点设备发送的
所述访问请求的响应消息,若所述模拟响应模块接收到所述PCIe端点设备发送
的所述访问请求的响应消息,模拟响应模块将缓存的所述访问请求打上“已完
成”的标记,或者模拟响应模块删除缓存的所述访问请求。
S507:所述模拟响应模块在所述计时器超时后,确定所述访问请求的报文
状态。
本实施例中,预设的触发条件是访问请求的计时器是否超时,所述计时器
的计时时间根据经验值设定,该经验值是PCIe端点设备发送访问请求的响应消
息的最大容忍时间,一般情况下,如果PCIe端点设备保持正常,则在该经验值
时间内,模拟响应模块一定可以接收到其发出的访问请求的响应消息。
S508:若所述模拟响应模块确定所述访问请求的报文状态是“未完成”,所
述模拟响应模块获取自身缓存的所述访问请求的模拟响应消息,并向所述CPU
发送所述模拟响应消息。
当计时器超时后,模拟响应模块查询所述访问请求的报文状态,若确定所
述报文状态是“未完成”,那么基本可以确定被访问的PCIe端点设备异常离线,
CPU不可能接收到访问请求的响应消息,此时,为了避免CPU缓存的访问请求超
时所导致的MCE复位问题,模拟响应模块将提前生成的模拟响应消息发送给CPU。
本实施例中,所述模拟响应消息可以是第一类型模拟响应消息,指示所述
PCIe端点设备130不支持所述访问请求,例如所述模拟响应消息携带
Unsupported Request(UR)指示,或者所述模拟响应消息可以是第二类型模拟响
应消息,指示所述PCIe端点设备130异常,例如所述模拟响应消息携带
Completer Abort(CA)指示。
S509:所述CPU接收到所述模拟响应消息,根据所述模拟响应消息确定所
述访问请求对应的流程被完成,清除自身缓存的所述访问请求。
由于所述模拟响应消息与所述访问请求具有相同的报文头,访问请求与模
拟响应消息相互对应,可以使得CPU认为其之前发出的访问请求对应的流程已
经被完成,从而关闭对该访问请求进行计时的计时器,并清除CPU自身缓存的
该访问请求,最终保持了CPU内部的处理正常进行,避免了访问请求在CPU内
积累所导致的CPU的MCE复位问题。
进一步,由于该模拟响应消息还可能携带UR或者CA指示,模拟响应模块
还可以进一步根据所述模拟响应消息携带的指示信息,进行访问错误处理;所
述访问错误处理可以包括:抑制所述CPU对所述访问请求相关的进一步操作(例
如数据的读取),或者将所述PCIe端点设备的状态记录为发生异常离线,从而
使得CPU中止对所述PCIe端点设备进行后续访问操作。
S510:所述模拟响应模块确定所述PCIe端点设备的状态。
所述模拟响应模块进一步确定所述PCIe端点设备的状态是异常离线还是发
生故障,如果是所述PCIe端点设备异常离线,执行步骤511,如果是所述PCIe
端点设备发生故障,执行步骤512。
所述模拟响应模块可以确定自身是否接收到PCIe端点设备异常离线的通
知,根据是否接收到所述通知确定所述PCIe端点设备是否异常离线,也可以向
PCIe端点设备发送探测消息,用以确定所述PCIe端点设备的状态。
S511:如果所述模拟响应模块确定所述PCIe端点设备异常离线,向所述CPU
发送所述PCIe端点设备异常离线的通知,以使得所述CPU根据所述PCIe端点
设备异常离线的通知,将所述PCIe端点设备对应的物理设备进行下电操作以及
资源释放操作。
S512:如果所述模拟响应模块确定所述PCIe端点设备发生故障,修复所述
PCIe端点设备的故障。
本发明实施例中,模拟响应模块通过对访问请求的报文状态的监控,在计
时器超时后,如果访问请求的报文状态仍然为“未完成”状态,模拟响应模块
就将模拟生成的访问请求的模拟响应消息发送给CPU,使得CPU不会对该访问请
求对应的流程是否完成进行超时计时,保持CPU内部处理的正常运行,避免了
CPU内部访问请求超时不完成所导致的MCE复位问题。
另外,本实施例中由于进一步指明了模拟响应消息的类型,使得CPU根据
该模拟响应消息确认本次访问流程完成的同时,还能够确认本次访问并非一次
成功的访问,并据此不去执行对本次访问相关数据的下一步的操作(例如读取
操作),因此本发明实施例在PCIe端点设备异常离线的情况下的维持CPU正常
处理流程的同时,还避免了CPU去执行一些不必要的操作,从而避免***资源
的浪费。
本发明装置实施例
本发明实施例提供的模拟响应装置,应用于计算机***中,PCIe端点设备
通过PCIe总线接入所述计算机***中,如图6所示,所述装置与PCIe端点设
备130和CPU110交互,该装置包括:
监控单元601,用于在所述计算机***中的CPU110向所述PCIe端点设备发
送访问请求之后,对所述访问请求的报文状态进行监控,其中,所述访问请求
的报文状态包括“已完成”或“未完成”,所述“未完成”表示所述PCIe端点
设备未发送所述访问请求的响应消息;
确定单元602,用于当预设的触发条件达到时,根据所述监控单元601的监
控结果确定所述访问请求的报文状态;
获取单元603,用于在所述确定单元602确定所述访问请求的报文状态是“未
完成”时,获取所述访问请求的模拟响应消息;
响应单元604,用于向所述CPU110发送所述获取单元603获取的所述模拟
响应消息。
进一步,在本发明的又一装置实施例中,如图7所示,该装置还可以进一
步包括:
交互单元605,用于接收所述CPU110发送的访问请求,向所述PCIe端点设
备130转发所述访问请求;
则所述监控单元601具体用于监控所述交互单元605是否接收到所述PCIe
端点设备发送的所述访问请求的响应消息,若接收到所述PCIe端点设备发送的
所述访问请求的响应消息,将所述访问请求的报文状态记录为“已完成”。
进一步,在本发明的又一装置实施例中,所述监控单元601还用于缓存所
述交互单元605接收到的所述访问请求;
所述监控单元601具体用于在所述交互单元605接收到所述PCIe端点设备
发送的所述访问请求的响应消息时,将所述缓存的所述访问请求的打上“已完
成”的标记,或者删除缓存的所述访问请求;
所述确定单元602具体用于在预设的触发条件达到时,查询所述监控单元
601缓存的所述访问请求,若缓存的所述访问请求的标记为“已完成”或者缓存
的所述访问请求已经被删除,则确定所述访问请求的报文状态是“已完成”,若
缓存的所述访问请求的标记为“未完成”或者缓存的所述访问请求没有“已完
成”标记,则确定所述访问请求的报文状态是“未完成”。
进一步,在本发明的又一装置实施例中,所述监控单元601还用于,在所
述交互单元605接收到所述CPU110发送的所述访问请求之后,生成所述访问请
求的模拟响应消息,并缓存所述访问请求的模拟响应消息;
则,所述获取单元603具体用于获取所述监控单元601缓存的所述访问请
求的模拟响应消息。
进一步,在本发明的又一装置实施例中,所述访问请求的模拟响应消息包
括第一类型模拟响应消息或第二类型模拟响应消息,所述第一类型模拟响应消
息指示所述PCIe端点设备不支持所述访问请求,所述第二类型模拟响应消息指
示所述PCIe端点设备异常。
进一步,在本发明的又一装置实施例中,所述预设的触发条件为所述PCIe
端点设备发生异常离线;
所述监控单元601还用于:监测所述PCIe端点设备是否发生异常离线,在
确定所述PCIe端点设备发生异常离线时,通知所述确定单元602执行所述确定
所述访问请求的报文状态的步骤。
进一步,在本发明的又一装置实施例中,所述监控单元601具体用于:确
定所述交互单元605是否接收到所述PCIe端点设备的异常离线通知,如果是,
确定所述PCIe端点设备发生异常离线。
进一步,在本发明的又一装置实施例中,所述交互单元605还用于:
向所述CPU110转发所述PCIe端点设备的异常离线通知,以使得所述CPU110
根据接收到的所述PCIe端点设备130的异常离线通知,将所述PCIe端点设备
130对应的物理设备进行下电操作。
进一步,在本发明的又一装置实施例中,所述预设的触发条件为所述访问
请求的计时器超时;
所述监控单元601还用于:
针对所述CPU110发送的所述访问请求启动计时器进行计时,在所述计时器
超时后,通知所述确定单元602执行所述确定所述访问请求的报文状态的步骤。
所述监控单元601还用于:
确定所述PCIe端点设备的状态,若确定所述PCIe端点设备的状态是异常
离线,则通知所述交互单元605向所述CPU110发送所述PCIe端点设备130的
异常离线通知,以使得所述CPU110根据接收到的所述PCIe端点设备130的异
常离线通知,将所述PCIe端点设备130对应的物理设备进行下电操作。
进一步,在本发明的又一装置实施例中,所述CPU110向所述PCIe端点设
备130发送多条访问请求;
所述监控单元601具体用于对所述多条访问请求的每条访问请求的报文状
态进行监控;
所述确定单元602具体用于在预设的触发条件达到时,统计所述多条访问
请求中未接收到响应消息的访问请求的数量,确定所述数量是否超过第一门限
值;
所述获取单元603具体用于在所述数量超过第一门限值时,获取所述访问
请求的模拟响应消息。
如图8,为本发明实施例提供的计算机的结构组成示意图。本发明实施例的
计算机可包括:
处理器801、存储器802、***总线804和通信接口805。处理器801、存
储器802和通信接口805之间通过***总线804连接并完成相互间的通信。
处理器801可能为单核或多核中央处理单元,或者为特定集成电路,或者
为被配置成实施本发明实施例的一个或多个集成电路。
存储器802可以为高速RAM存储器,也可以为非易失性存储器
(non-volatile memory),例如至少一个磁盘存储器。
存储器802用于计算机执行指令803。具体的,计算机执行指令803中可以
包括程序代码。
当计算机运行时,处理器801运行计算机执行指令803,可以执行图3-图5
任意之一所述的方法流程,具体在此不再重复描述。
本领域普通技术人员将会理解,本发明的各个方面、或各个方面的可能实
现方式可以被具体实施为***、方法或者计算机程序产品。因此,本发明的各
方面、或各个方面的可能实现方式可以采用完全硬件实施例、完全软件实施例
(包括固件、驻留软件等等),或者组合软件和硬件方面的实施例的形式,在这
里都统称为“电路”、“模块”或者“***”。此外,本发明的各方面、或各个方
面的可能实现方式可以采用计算机程序产品的形式,计算机程序产品是指存储
在计算机可读介质中的计算机可读程序代码。
计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计
算机可读存储介质包含但不限于电子、磁性、光学、电磁、红外或半导体***、
设备或者装置,或者前述的任意适当组合,如随机存取存储器(RAM)、只读存
储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、光纤、便携式
只读存储器(CD-ROM)。
计算机中的处理器读取存储在计算机可读介质中的计算机可读程序代码,
使得处理器能够执行在流程图中每个步骤、或各步骤的组合中规定的功能动作;
生成实施在框图的每一块、或各块的组合中规定的功能动作的装置。
计算机可读程序代码可以完全在用户的计算机上执行、部分在用户的计算
机上执行、作为单独的软件包、部分在用户的计算机上并且部分在远程计算机
上,或者完全在远程计算机或者服务器上执行。也应该注意,在某些替代实施
方案中,在流程图中各步骤、或框图中各块所注明的功能可能不按图中注明的
顺序发生。例如,依赖于所涉及的功能,接连示出的两个步骤、或两个块实际
上可能被大致同时执行,或者这些块有时候可能被以相反顺序执行。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示
例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来
实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用
和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现
所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于
此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到
变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应
所述以权利要求的保护范围为准。
Claims (33)
1.一种计算机***,其特征在于,所述计算机***包括:
处理器;
高速***组件互联PCIe总线,用于连接PCIe端点设备;
所述处理器用于获取对所述PCIe端点设备进行访问的操作指令,根据所述操作指令,向所述PCIe端点设备发送访问请求;
所述计算机***还包括模拟响应模块,用于在所述处理器向所述PCIe端点设备发送所述访问请求之后,对所述访问请求的报文状态进行监控,在预设的触发条件达到时,确定所述访问请求的报文状态,如果所述访问请求的报文状态是未完成,则获取所述访问请求的模拟响应消息,并向所述处理器发送所述模拟响应消息;
其中,所述访问请求的报文状态包括已完成或未完成,所述未完成表示所述PCIe端点设备未发送所述访问请求的响应消息;
所述访问请求的模拟相应消息包括第一类型模拟相应消息或第二类型模拟相应消息,所述第一类型模拟响应消息指示所述PCIe端点设备不支持所述访问请求,所述第二类型模拟响应消息指示所述PCIe端点设备异常;
所述处理器还用于根据所述第一类型模拟相应消息或所述第二类型模拟响应消息,中止对所述PCIe端点设备的后续访问。
2.根据权利要求1所述的计算机***,其特征在于,所述模拟响应模块设置于所述处理器和所述PCIe端点设备的信号传输路径中,具体用于接收所述处理器发送的访问请求,向所述PCIe端点设备转发所述访问请求,监控自身是否接收到所述PCIe端点设备发送的所述访问请求的响应消息,若接收到所述PCIe端点设备发送的所述访问请求的响应消息,将所述访问请求的报文状态记录为已完成。
3.根据权利要求2所述的计算机***,其特征在于,所述计算机***还包括:PCIe交换器,用于将多个所述PCIe端点设备连接到所述处理器,所述PCIe交换器的下游端口通过所述PCIe总线与多个所述PCIe端点设备连接;
所述模拟响应模块的一个端口通过所述PCIe总线与所述PCIe交换器的上游端口连接,所述模拟响应模块的另一个端口与所述处理器连接。
4.根据权利要求2或3所述的计算机***,其特征在于,所述模拟响应模块还用于在接收到所述处理器发送的所述访问请求之后,缓存所述访问请求,若接收到所述PCIe端点设备发送的所述访问请求的响应消息,将缓存的所述访问请求的打上已完成的标记,或者删除缓存的所述访问请求;
相应地,所述模拟响应模块在预设的触发条件达到时,查询缓存的所述访问请求,若缓存的所述访问请求的标记为已完成或者缓存的所述访问请求已经被删除,则确定所述访问请求的报文状态是已完成,若缓存的所述访问请求的标记为未完成或者缓存的所述访问请求没有已完成标记,则确定所述访问请求的报文状态是未完成。
5.根据权利要求2或3所述的计算机***,其特征在于,所述模拟响应模块还用于在接收到所述处理器发送的所述访问请求之后,生成所述访问请求的模拟响应消息,并缓存所述访问请求的模拟响应消息;
相应地,所述模拟响应模块在确定所述访问请求的报文状态是未完成时,获取自身缓存的所述访问请求的模拟响应消息。
6.根据权利要求1-3任一项所述的计算机***,其特征在于,所述模拟响应模块采用现场可编程门阵列实现。
7.根据权利要求1- 3任一项所述的计算机***,其特征在于,所述预设的触发条件为所述PCIe端点设备发生异常离线;
相应地,所述模拟响应模块还用于监测所述PCIe端点设备是否发生异常离线,在确定所述PCIe端点设备发生异常离线时,确定所述访问请求的报文状态。
8.根据权利要求7所述的计算机***,其特征在于,所述模拟响应模块具体用于确定自身是否接收到所述PCIe端点设备的异常离线通知,如果是,确定所述PCIe端点设备发生异常离线。
9.根据权利要求8所述的计算机***,其特征在于,所述模拟响应模块还用于向所述处理器转发所述PCIe端点设备的异常离线通知;
所述处理器还用于根据接收到的所述PCIe端点设备的异常离线通知,将所述PCIe端点设备对应的物理设备进行下电操作。
10.根据权利要求1-3任一项所述的计算机***,其特征在于,所述预设的触发条件为所述访问请求的计时器超时;
相应地,所述模拟响应模块还用于针对所述处理器发送的所述访问请求启动计时器进行计时,在所述计时器超时后,确定所述访问请求的报文状态。
11.根据权利要求10所述的计算机***,其特征在于,所述模拟响应模块在向所述处理器发送所述模拟响应消息之后,还用于确定所述PCIe端点设备的状态,若确定所述PCIe端点设备的状态是异常离线,则向所述处理器发送所述PCIe端点设备的异常离线通知;
所述处理器还用于根据接收到的所述PCIe端点设备的异常离线通知,将所述PCIe端点设备对应的物理设备进行下电操作。
12.根据权利要求1所述的计算机***,其特征在于,所述处理器具体用于向所述PCIe端点设备发送多条访问请求;
所述模拟响应模块具体用于对所述多条访问请求的每条访问请求的报文状态进行监控,在预设的触发条件达到时,统计所述多条访问请求中未接收到响应消息的访问请求的数量,若所述数量超过第一门限值,则获取所述访问请求的模拟响应消息,并向所述处理器发送所述模拟响应消息。
13.一种高速***组件互联PCIe端点设备的访问方法,其特征在于,PCIe端点设备通过PCIe总线接入计算机***中,所述方法包括:
在所述计算机***中的处理器向所述PCIe端点设备发送访问请求之后,对所述访问请求的报文状态进行监控,其中,所述访问请求的报文状态包括已完成或未完成,所述未完成表示所述PCIe端点设备未发送所述访问请求的响应消息;
当预设的触发条件达到时,确定所述访问请求的报文状态;
如果所述访问请求的报文状态是“未完成”,获取所述访问请求的模拟响应消息;
向所述处理器发送所述访问请求的模拟响应消息,其中,所述访问请求的模拟相应消息包括第一类型模拟响应消息或第二类型模拟响应消息,所述第一类型模拟响应消息指示所述PCIe端点设备不支持所述访问请求,所述第二类型模拟响应消息指示所述PCIe端点设备异常,所述第一类型模拟响应消息或第二类型模拟响应消息用于指示所述处理器中止对所述PCIe端点设备的后续访问。
14.根据权利要求13所述的方法,其特征在于,还包括:
接收所述处理器发送的访问请求,向所述PCIe端点设备转发所述访问请求;
则,所述对所述访问请求的报文状态进行监控包括:
监控自身是否接收到所述PCIe端点设备发送的所述访问请求的响应消息,若接收到所述PCIe端点设备发送的所述访问请求的响应消息,将所述访问请求的报文状态记录为已完成。
15.根据权利要求14所述的方法,其特征在于,在接收到所述处理器发送的所述访问请求之后,还包括:缓存所述访问请求;
则,所述将所述访问请求的报文状态记录为已完成包括:
若接收到所述PCIe端点设备发送的所述访问请求的响应消息,将缓存的所述访问请求的打上已完成的标记,或者删除缓存的所述访问请求;
所述当预设的触发条件达到时,确定所述访问请求的报文状态包括:
在预设的触发条件达到时,查询缓存的所述访问请求,若缓存的所述访问请求的标记为已完成或者缓存的所述访问请求已经被删除,则确定所述访问请求的报文状态是已完成,若缓存的所述访问请求的标记为未完成或者缓存的所述访问请求没有已完成标记,则确定所述访问请求的报文状态是未完成。
16.根据权利要求14或15所述的方法,其特征在于,在接收到所述处理器发送的所述访问请求之后,还包括:生成所述访问请求的模拟响应消息,并缓存所述访问请求的模拟响应消息;
则,所述获取所述访问请求的模拟响应消息包括:
获取自身缓存的所述访问请求的模拟响应消息。
17.根据权利要求13-15任一项所述的方法,其特征在于,所述预设的触发条件为所述PCIe端点设备发生异常离线;
所述方法还包括:
监测所述PCIe端点设备是否发生异常离线,在确定所述PCIe端点设备发生异常离线时,执行所述确定所述访问请求的报文状态的步骤。
18.根据权利要求17所述的方法,其特征在于,所述监测所述PCIe端点设备是否发生异常离线包括:
确定自身是否接收到所述PCIe端点设备的异常离线通知,如果是,确定所述PCIe端点设备发生异常离线。
19.根据权利要求18所述的方法,其特征在于,还包括:
向所述处理器转发所述PCIe端点设备的异常离线通知,以使得所述处理器根据接收到的所述PCIe端点设备的异常离线通知,将所述PCIe端点设备对应的物理设备进行下电操作。
20.根据权利要求13-15任一项所述的方法,其特征在于,所述预设的触发条件为所述访问请求的计时器超时;
所述方法还包括:
针对所述处理器发送的所述访问请求启动计时器进行计时,在所述计时器超时后,执行所述确定所述访问请求的报文状态的步骤。
21.根据权利要求20所述的方法,其特征在于,还包括:
确定所述PCIe端点设备的状态,若确定所述PCIe端点设备的状态是异常离线,则向所述处理器发送所述PCIe端点设备的异常离线通知,以使得所述处理器根据接收到的所述PCIe端点设备的异常离线通知,将所述PCIe端点设备对应的物理设备进行下电操作。
22.根据权利要求13所述的方法,其特征在于,所述处理器向所述PCIe端点设备发送多条访问请求;
所述方法包括:
对所述多条访问请求的每条访问请求的报文状态进行监控;
在预设的触发条件达到时,统计所述多条访问请求中未接收到响应消息的访问请求的数量;
若所述数量超过第一门限值,则获取所述访问请求的模拟响应消息。
23.一种模拟响应装置,其特征在于,应用于计算机***,高速***组件互联PCIe端点设备通过PCIe总线接入所述计算机***中,所述装置包括:
监控单元,用于在所述计算机***中的处理器向所述PCIe端点设备发送访问请求之后,对所述访问请求的报文状态进行监控,其中,所述访问请求的报文状态包括已完成或未完成,所述未完成表示所述PCIe端点设备未发送所述访问请求的响应消息;
确定单元,用于当预设的触发条件达到时,根据所述监控单元的监控结果确定所述访问请求的报文状态;
获取单元,用于在所述确定单元确定所述访问请求的报文状态是“未完成”时,获取所述访问请求的模拟响应消息;
响应单元,用于向所述处理器发送所述获取单元获取的所述模拟响应消息,其中,所述模拟响应消息包括第一类型模拟响应消息或第二类型模拟响应消息,所述第一类型模拟响应消息指示所述PCIe端点设备不支持所述访问请求,所述第二类型模拟响应消息指示所述PCIe端点设备异常,所述第一类型模拟响应消息或所述第二类型模拟响应消息用于指示所述处理器中止对所述PCIe端点设备的后续访问。
24.根据权利要求23所述的装置,其特征在于,还包括:
交互单元,用于接收所述处理器发送的访问请求,向所述PCIe端点设备转发所述访问请求;
则所述监控单元具体用于监控所述交互单元是否接收到所述PCIe端点设备发送的所述访问请求的响应消息,若接收到所述PCIe端点设备发送的所述访问请求的响应消息,将所述访问请求的报文状态记录为已完成。
25.根据权利要求24所述的装置,其特征在于,所述监控单元还用于缓存所述交互单元接收到的所述访问请求;
所述监控单元具体用于在所述交互单元接收到所述PCIe端点设备发送的所述访问请求的响应消息时,将所述缓存的所述访问请求的打上“已完成”的标记,或者删除缓存的所述访问请求;
所述确定单元具体用于在预设的触发条件达到时,查询所述监控单元缓存的所述访问请求,若缓存的所述访问请求的标记为已完成或者缓存的所述访问请求已经被删除,则确定所述访问请求的报文状态是已完成,若缓存的所述访问请求的标记为未完成或者缓存的所述访问请求没有已完成标记,则确定所述访问请求的报文状态是未完成。
26.根据权利要求24或25所述的装置,其特征在于,所述监控单元还用于,在所述交互单元接收到所述处理器发送的所述访问请求之后,生成所述访问请求的模拟响应消息,并缓存所述访问请求的模拟响应消息;
则,所述获取单元具体用于获取所述监控单元缓存的所述访问请求的模拟响应消息。
27.根据权利要求24或25所述的装置,其特征在于,所述预设的触发条件为所述PCIe端点设备发生异常离线;
所述监控单元还用于:监测所述PCIe端点设备是否发生异常离线,在确定所述PCIe端点设备发生异常离线时,通知所述确定单元执行所述确定所述访问请求的报文状态的步骤。
28.根据权利要求27所述的装置,其特征在于,所述监控单元具体用于:确定所述交互单元是否接收到所述PCIe端点设备的异常离线通知,如果是,确定所述PCIe端点设备发生异常离线。
29.根据权利要求28所述的装置,其特征在于,所述交互单元还用于:
向所述处理器转发所述PCIe端点设备的异常离线通知,以使得所述处理器根据接收到的所述PCIe端点设备的异常离线通知,将所述PCIe端点设备对应的物理设备进行下电操作。
30.根据权利要求24或25所述的装置,其特征在于,所述预设的触发条件为所述访问请求的计时器超时;
所述监控单元还用于:
针对所述处理器发送的所述访问请求启动计时器进行计时,在所述计时器超时后,通知所述确定单元执行所述确定所述访问请求的报文状态的步骤。
31.根据权利要求30所述的装置,其特征在于,所述监控单元还用于:
确定所述PCIe端点设备的状态,若确定所述PCIe端点设备的状态是异常离线,则通知所述交互单元向所述处理器发送所述PCIe端点设备的异常离线通知,以使得所述处理器根据接收到的所述PCIe端点设备的异常离线通知,将所述PCIe端点设备对应的物理设备进行下电操作。
32.根据权利要求23所述的装置,其特征在于,所述处理器向所述PCIe端点设备发送多条访问请求;
所述监控单元具体用于对所述多条访问请求的每条访问请求的报文状态进行监控;
所述确定单元具体用于在预设的触发条件达到时,统计所述多条访问请求中未接收到响应消息的访问请求的数量,确定所述数量是否超过第一门限值;
所述获取单元具体用于在所述数量超过第一门限值时,获取所述访问请求的模拟响应消息。
33.一种计算机,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算机运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述计算机执行权利要求13-22任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610474435.9A CN106126454B9 (zh) | 2013-05-20 | 2013-05-20 | 一种计算机***、高速***组件互联端点设备的访问方法和装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610474435.9A CN106126454B9 (zh) | 2013-05-20 | 2013-05-20 | 一种计算机***、高速***组件互联端点设备的访问方法和装置 |
CN201380002624.0A CN103797469B (zh) | 2013-05-20 | 2013-05-20 | 一种计算机***、高速***组件互联端点设备的访问方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380002624.0A Division CN103797469B (zh) | 2013-05-20 | 2013-05-20 | 一种计算机***、高速***组件互联端点设备的访问方法和装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
CN106126454A CN106126454A (zh) | 2016-11-16 |
CN106126454B CN106126454B (zh) | 2019-07-23 |
CN106126454B9 true CN106126454B9 (zh) | 2019-08-30 |
Family
ID=57282197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610474435.9A Active CN106126454B9 (zh) | 2013-05-20 | 2013-05-20 | 一种计算机***、高速***组件互联端点设备的访问方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106126454B9 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733479B (zh) * | 2017-04-24 | 2021-11-02 | 上海宝存信息科技有限公司 | 卸载固态硬盘卡的方法以及使用该方法的装置 |
CN110865960B (zh) * | 2018-08-28 | 2022-07-22 | 上海忆芯实业有限公司 | 在网络上模拟PCIe总线 |
CN112015580A (zh) * | 2019-05-31 | 2020-12-01 | 瑞昱半导体股份有限公司 | 具资料传收机制的电子装置以及资料传收方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996146A (zh) * | 2009-08-26 | 2011-03-30 | 戴尔产品有限公司 | 多模式处理模块及其使用方法 |
CN102023941A (zh) * | 2009-09-23 | 2011-04-20 | 联想(北京)有限公司 | 一种笔记本电脑 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782461B2 (en) * | 2010-09-24 | 2014-07-15 | Intel Corporation | Method and system of live error recovery |
-
2013
- 2013-05-20 CN CN201610474435.9A patent/CN106126454B9/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996146A (zh) * | 2009-08-26 | 2011-03-30 | 戴尔产品有限公司 | 多模式处理模块及其使用方法 |
CN102023941A (zh) * | 2009-09-23 | 2011-04-20 | 联想(北京)有限公司 | 一种笔记本电脑 |
Also Published As
Publication number | Publication date |
---|---|
CN106126454A (zh) | 2016-11-16 |
CN106126454B (zh) | 2019-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103797469B (zh) | 一种计算机***、高速***组件互联端点设备的访问方法和装置 | |
JP5953573B2 (ja) | ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置 | |
TWI569134B (zh) | 使用串列連接scsi擴充器用於儲存區域網路管理之儲存介質、系統及方法 | |
CN106502814B (zh) | 一种记录pcie设备错误信息的方法及装置 | |
JP2012118958A (ja) | Sasエクスパンダにおけるデータプリフェッチ | |
TWI512490B (zh) | 擷取控制台訊息的系統及其方法及非暫態電腦可讀媒體 | |
CN107566214B (zh) | 一种性能测试方法和装置 | |
US20140201356A1 (en) | Monitoring system of managing cloud-based hosts and monitoring method using for the same | |
CN106126454B9 (zh) | 一种计算机***、高速***组件互联端点设备的访问方法和装置 | |
CN105446657A (zh) | 一种监控raid卡的方法 | |
CN104737150A (zh) | 使用在万维网浏览器中运行的HTML5KVM/vMEDIA客户端访问盘镜像文件的***和方法 | |
CN105580335B (zh) | 用于授予对共享资源的访问的方法和装置 | |
CN105573872B (zh) | 数据存储***的硬盘维护方法和装置 | |
US20140115112A1 (en) | Server system and message processing method thereof | |
US20160156518A1 (en) | Server for automatically switching sharing-network | |
CN104854951A (zh) | 减少移动设备上信令流量的方法 | |
CN110290435B (zh) | 光纤网络管理方法、装置及终端设备 | |
CN110308938A (zh) | 插拔外设事件的管理方法和装置 | |
CN110417593A (zh) | 一种设备管理方法和装置 | |
CN104335194B (zh) | 一种计算机***、高速***组件互联端点设备的访问方法、和装置 | |
CN110019535B (zh) | 数据库管理方法、装置、存储介质及计算机设备 | |
JP2015053555A (ja) | データ転送装置、およびデータ転送方法 | |
CN116405377B (zh) | 网络状态检测方法、协议转换组件、设备及存储介质 | |
CN104951338B (zh) | 一种考勤设备服务器端口更新方法及装置 | |
KR100574894B1 (ko) | 통신망 관리시스템에서 원격 시험 장치를 위한 통신 처리방법 |
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 | ||
CI03 | Correction of invention patent |
Correction item: Claims Correct: Zheng Que False: Cuo Wu Number: 30-01 Page: Quan Wen Volume: 35 |
|
CI03 | Correction of invention patent |