复合设备仿真的制作方法

xiaoxiao2020-7-22  14

专利名称:复合设备仿真的制作方法
技术领域
本发明的实施例涉及复合设备仿真(composite device emulation)。
背景技术
今天,典型的远程管理系统依赖于在PC (个人计算机)上运行的专用远程连接应用软件,以及依赖于操作系统处于稳定状态并且运行以便远程管理会话处于活动状态。随着即使在PC故障或关机的情况下仍然工作的硬件辅助的远程管理技术的引入,减少了这些依赖性并且允许实现更为复杂的远程管理能力,而这样的能力在前一代PC或仅靠软件的解决方案中是无法提供的。例如,名为"Virtual IDE Interface and Protocol for Use in IDE Redirection Communication"的美国专利申请序号11/027,754描述了一种机制,该机制例如能够使用诸如IDE硬盘或CD-ROM之类的远程IDE存储设备来引导系统。作为另一个示例,一些服务器系统具有分立、独立的USB产品,所述USB产品具有支持预定义的一组被仿真设备的重定向功能。


在附图中,通过示例而非限制的方式说明了本发明的实施例,并且其中相同的附图标记指代相似要素,其中图1说明了根据本发明的实施例的系统;图2说明了根据本发明的实施例的数据仿真器;图3说明了根据本发明的实施例的方法。
具体实施例方式以下所描述的示例仅用于说明的目的,而决不希望对本发明的实施例进行限制。 因此,在详细描述示例或者提供了一个或更多个示例的情况下,应当理解所述示例并不应被解释为是穷举的,并且并非要将本发明的实施例限制为所描述的和/或所示出的那些示例。在一个示例实施例中,可以通过将设备功能(诸如键盘和鼠标,以及来自存储设备的数据传输)从远程管理机器重定向到本地托管(managed)机器来实现远程管理。通过仿真这些设备,远程管理机器经过基于硬件的通信信道在本地托管机器上作为独立于OS 的设备而出现。设备的仿真使得本地托管机器能够被远程管理。例如,对已经变得不稳定或者系统本地用户无法修复的系统进行的远程维修和支持都可以在远程被处理。在一个实施例中,可以使用USB (通用串行总线)协议来实现设备仿真,所述USB协议支持包括USB ⑶(光盘)驱动器、USB软盘、USB钥匙盘、USB键盘和USB鼠标的各种类型的设备,以及即插即用和系统引导。伴随着视频重定向,设备仿真能够通过LAN(局域网)连接而形成KVM(键盘视频鼠标)结构,并且仿真本地托管机器上的复合USB设备。各种版本的USB规范可以从 USB-IF (USB 开发者论坛)(位于 3855 Sff 153rd Drive, Beaverton, Oregon, 97006)获得。 下文中,远程管理机器被称作“管理控制台”,而本地托管机器则被称作“系统”。图1是说明了根据一个实施例的计算系统100的框图。在一些实施例中,计算系统100可以包括至少一个处理器102A、102B。这里所讨论的“处理器”涉及用于完成计算任务的硬件和软件资源的任意组合。例如,处理器可以包括中央处理单元(CPU),例如102A、 102B,用于执行机器可读指令以根据预定义的指令集来处理数据,或用于容纳固件。处理器可以包括具有多个处理核心的多核处理器。可替代地,处理器可以是指可以被包括在多核处理器中的处理核心,其中操作系统可以将该处理核心当作具有完整执行资源集合的分立处理器。这些处理器可以是高性能的,以用于执行复杂的应用软件。此外,系统100无需为了处理器102A、102B工作而处于活动的电源状态。其它实现也是可能的。系统100可以包括至少一个或更多个另外的处理器102C。在一个实施例中,一个或更多个另外的处理器可以包括微控制器102C。在一个实施例中,微控制器102C可以包括管理引擎(manageability engine),其是可从英特尔 公司(位于2200 Mission College Blvd. ,Santa Clara,CA 95054)获得的英特尔 .主动管理技术的一部分。管理引擎可以代表系统100中的应用来执行各种服务。管理引擎可以在辅助电源上运行,由此可以在所有电源状态中使用。在一个实施例中,微控制器102可以嵌入在芯片组108上,具体地是MCH 108A上,然而本发明的实施例并不局限于此。在图2中,处理器102C被示为位于芯片组108 上。在其它实施例中,作为替代,处理器102C也可以与一个或更多个CPU 102A、102B集成在一起。如各处所使用的,微控制器102C可以是指处理器的一种具体实现;然而,本发明的实施例并不局限于此,并且所要理解的是,在其它实施例中微控制器102C可以泛指系统 100中的多个处理器其中之一。系统100还可以包括存储器106。存储器106可以存储能够被执行的机器可执行指令132,和/或能够被访问、操作和/或操纵的数据。这里所说的“机器可执行”指令涉及可以由一个或更多个机器理解以执行一个或更多个逻辑操作的表达。例如,机器可执行指令132可以包括能够由处理器编译器解释以便对一个或更多个数据对象执行一个或更多个操作的指令。然而,这仅仅是机器可执行指令的一个示例,而本发明的实施例并不局限于此。例如,存储器106可以包括只读的、大存储容量的、随机访问的计算机可访问存储器, 非易失性存储器,和/或一种或更多种其它类型的机器可访问存储器。在一个实施例中,存储器106可以根据例如UMA (统一存储器架构)进行分区,以使得存储器106的一些部分可以为微控制器102C保留并且由微控制器102C使用。逻辑130可以被包括在系统100上,或者位于系统100的任意部分(例如,微控制器102C)之内。逻辑130可以包括硬件、软件,或者硬件和软件的组合(例如,固件)。例如,逻辑130可以包括用于执行这里所描述的操作的电路系统(例如,一个或更多个电路)。 例如,逻辑130可以包括一个或更多个数字电路、一个或更多个模拟电路、一个或更多个状态机、可编程逻辑,和/或一个或更多个ASIC (专用集成电路)。逻辑130可以被硬线连接, 以执行一个或更多个操作。可替换地或附加地,逻辑130可以用诸如存储器106这样的存储器中所存储的机器可执行指令132来具体实现,以执行那些操作。可替换地或附加地,逻辑130可以用固件来具体实现。逻辑可以被包括在系统100的各种组件之内。逻辑130可以被这里所描述的各种组件用来执行各种功能。
芯片组108可以包括主桥/中枢系统(host bridge/hub system),其可以将每个 CPU 102A、102B与存储器106相互耦合。芯片组108可以包括一个或更多个集成电路芯片, 诸如可以从英特尔 公司商业上提供的集成电路芯片组(例如,图形、存储器、图形/存储器以及I/O控制器中枢芯片组)中选择的那些集成电路芯片,但是还可以、或者替代地使用其它一个或更多个集成电路芯片。芯片组108可以经由存储器总线112与存储器106进行通信,并且可以经由系统总线110与处理器102A、102B进行通信。在可替代实施例中,处理器102A、102B和存储器106可以直接耦合(而不经由芯片组108)至系统总线110。 根据一个实施例,芯片组108可以包括耦合到存储器106的存储器控制中枢 (MCH) 108A,以及输入/输出控制中枢(ICH) 108B,但是本发明的实施例并不局限于此。例如,MCH 108A的功能可以整体或部分集成到CPU上,并且ICH 108B可以是独立芯片组。作为另一个示例,在一些实施例中,系统100无需包括芯片组108,而是一些或全部的芯片组功能可以被集成到处理器管芯(die)上。MCH 108A例如可以包括存储器和图形控制器。ICH 108B例如可以包括输入/输出控制器,其包括集成网络接口 120以使得系统100能够通过网络116与远程系统(例如管理控制台118)进行通信。在另一个实施例中,所述网络接口可以是附接到ICH 108B的独立网络接口卡(NIC)。系统还可以包括设备仿真器114。如这里的各个实施例中所描述的,设备仿真器 114可以仿真一个或更多个设备(“被仿真设备”)。如这里所使用的,“被仿真设备”是指在系统100中要被进行仿真的设备。被仿真设备可以表示物理或虚拟设备。此外,所述物理或虚拟设备可以是系统100或管理控制台118上的设备。例如,在一个实施例中,被仿真设备物理上并不位于系统100上。在另一个实施例中,被仿真设备可以并不存在于管理控制台118上,而是可以由设备仿真器114为了预期功能而进行虚拟仿真。在一个实施例中,设备仿真器114可以通过主机控制器的内部端口嵌入在芯片组 108中,例如具体地是嵌入在108B中。然而,再次指出,本发明的实施例并不局限于此,并且作为替代,设备仿真器114也可以通过主机控制器的外部端口连接到芯片组108。此外, 其它的实现也是可能的。在实施例中,主机控制器使得能够在其所支持的设备(例如,USB) 和操作系统之间进行通信。在本发明的实施例中,设备仿真器114可以通过(使用发送到管理控制台118以及从其接收的命令和数据控制)模仿系统100中的设备功能来仿真设备,从而所述设备仿真器可以对系统100表现为物理设备。设备仿真器114可以对应于单功能的设备,或者对应于多功能的复合设备。在一个实施例中,微控制器102可以位于MCH 108A上,并且设备仿真器114可以位于ICH 108B上。在可替代实施例中,微控制器102和设备仿真器114都可以位于同一集成电路上。然而,本发明的实施例在这些方面上并不受限制。处理器102々、1028、102(、存储器106、总线110、112以及以上所描述的某些其它组件可以被包括在单个电路板(例如系统主板118)中,或者甚至集成在同一硅片上,但是本发明的实施例并不局限于此。图2提供了设备仿真器的扩展的说明。设备仿真器114可以包括一种或更多种功能。在USB设备仿真器的情况下,这些功能被实现为USB端点(endpoint)。如这里所使用的,端点通常是指设备仿真器上的功能的实现(例如,硬件、软件、固件),但是并不局限于USB实现。
设备仿真器114可以包括至少一个端点,尽管示出了多个端点202A、202B、 202C、…、202N。每个端点202A、202B、202C、...、202N可以对应于被仿真设备的一种功能。 端点202A、202B、202C、…、202N还可以维护状态(包括完成信息)。例如,对于发往主机处理器102A、102B的事务,端点202A、202B,202C、...、202N可以收集主机所生成的ACK(应答),而对于来自主机处理器102A、102B的事务,则可以生成对于主机处理器102A、102B的 ACK。每个端点202A、202B、202C、…、202N可以包括至少一个缓冲器206 (被示出为由所有端点使用的单个共享缓冲器)。此外,每个端点202A、202B、202C还可以包括至少一组寄存器208(同样,被示出为由所有端点使用的单组共享寄存器)。缓冲器206可以存储相应设备的仿真信息(以下所描述的),并且还从主机控制器接收完成信息。所述至少一组寄存器208例如可以被微控制器102C用来控制所述一个或更多个端点202A、202B、202C、…、202N。微控制器102C可以通过对与端点202A、202B、202C、…、 202N相关联的寄存器208进行编程而使得端点202A、202B、202C、...、202N能够仿真设备。 此外,微控制器102C可以根据所需端点的数目来启用端点202A、202B、202C、…、202N仿真不同设备功能,或禁止端点202A、202B、202C、…、202N仿真不同设备功能。在一个实施例中,一旦端点202A、202B、202C、...、202N被启用,设备仿真器114就可以通过例如ICH 108B 的内部端口耦合到主机控制器。如上所述,设备仿真器114可以用作单功能设备,或者作为多功能设备。就此方面而言,设备仿真器114在其作为单功能设备时可以包括单个端点(例如,202A、202B、 202C、…、202N之一),而在其作为多功能复合设备时可以包括多个端点202A、202B、 202C、…、202N。在USB设备仿真的情况下,例如,设备仿真器114可以表示具有多种功能的复合USB设备,并且每种功能可以被设备仿真器114的端点202A、202B、202C、…、202N 所处理。在一个实施例中,设备功能可以被称作接口。设备仿真器114还可以包括数据移动逻辑204,用以将仿真信息(以下所描述的) 移至缓冲器206,以及从缓冲器206移出仿真信息。如这里所使用的,数据移动逻辑是指用于传输数据的专用功能或专用模块。DMA(直接存储器存取)引擎是数据移动逻辑的一个示例。图3说明了根据本发明的实施例的方法。图3的方法在框300开始并且继续至框 302,在框302,所述方法可以包括在处理器处接收仿真信息,所述仿真信息对应于被仿真设备的一种或更多种功能,并且所述仿真信息包括数据和命令中的至少一个。如这里所使用的,“仿真信息”是指可以被发送到管理控制台118和/或从管理控制台118接收的对应于被仿真设备的命令或数据。仿真信息可以包括仿真命令和/或数据。在一个实施例中,仿真信息可以是外部发送的,例如,来自管理控制台118。然而, 本发明的实施例并不局限于此,并且在一些实施例中,仿真信息可以是从系统100自身的一个或更多个组件发送的。在一个实施例中,会发生事件,其触发在管理控制台118和系统 100之间仿真信息的传送。所述事件可以从管理控制台118或系统100发起。例如,所述事件可以在管理控制台118需要远程地在系统100上安装操作系统的情况下被触发(在这种情况下,管理控制台118可以发起对存储设备的仿真)。或者,管理控制台118可能需要远程地使用键盘来控制系统100 (在这种情况下,管理控制台118可以发起对键盘的仿真)。 系统100可以通过网络接口在网络116接收仿真信息,但是本发明的实施例并不局限于此。仿真信息可以在系统100的微控制器102C处被接收,并且被存储在为微控制器 102C保留的存储器中,诸如存储在存储器106或者专用于微控制器102C的另一存储器(未示出)中。在一个实施例中,在系统100处所接收的仿真信息可以与具有第一协议的设备相关联。仿真信息随后可以被转换为第二协议。所述第一和第二协议可以是相同协议,或者它们可以是不同协议。在一个实施例中,第二协议(与发送设备相关联的)可以是任意协议,而第一协议(与系统100相关联的)为USB(通用串行总线),然而本发明的实施例并不局限于该标准。在2000年4月27日的通用串行总线规范修订版2.0中定义了当前版本的 USB协议,但是本发明的实施例并不局限于特定版本的USB。USB提供了一些便利。例如,由于在操作系统前(pre-operating system)引导时间就支持USB设备,所以仿真的USB设备能够被动态插入正在运行的系统或者从正在运行的系统动态拔出。此外,标准的USB设备并不涉及专门的主机驱动程序开发。然而,本发明的实施例并不局限于此。在框304,所述方法可以包括根据所述仿真信息执行多种功能中的至少一种功能的高级仿真,所述仿真由处理器执行。在一个实施例中,微控制器102C可以管理对被仿真设备的高级仿真,而设备仿真器114例如可以在设备仿真器114的硬件电路中管理对被仿真设备的低级仿真。在该实施例中,微控制器102C还可以管理一个或更多个网络协议,以使得能够通过网络116与一个或更多个管理控制台(例如管理控制台118)进行通信。在另一个实施例中,对被仿真设备的高级和低级仿真都可以在例如设备仿真器114的硬件电路中实现,而微控制器102C可以仅执行对设备仿真器114的数据传输。高级仿真是指对被仿真设备进行仿真,使得微控制器102C或设备仿真器114能够在会话管理级别上表现得像被仿真设备一样。低级仿真是指在协议级别上对被仿真设备进行仿真。该高级仿真可以是特定于设备的(或者在被仿真设备是多功能的复合设备的情况下,特定于功能/接口的)。类似地,移至端点的数据/从端点移出的数据是特定于功能 /接口的,并且是功能/接口协议的一部分。例如,在设备仿真器125对具有多种功能的USB 复合设备进行仿真的情况下,微控制器102C可以使仿真数据适合于USB事务分组,或者可以从USB事务分组中提取仿真数据,诸如对于从设备仿真器114到微控制器102C(并随后到网络)的数据的OUT事务、对于从微控制器102C(从网络)到设备仿真器114的数据的 IN事务、或者发送并返回控制/状态信息的SETUP事务。在框306,所述方法可以包括将所述仿真信息从处理器传输到设备仿真器。为了向设备仿真器114传输仿真信息,可以将仿真信息从存储器(例如存储器106)移动到与相应的端点202A、202B、202C、…、202N相关联的缓冲器206。在一个实施例中,数据移动逻辑 204可以被用来进行上述操作。然而,在例如微控制器102C和设备仿真器114可以位于同一管芯的实施例中,并不需要使用数据移动逻辑。例如,微控制器102C可以被用来执行去往/来自端点202A、202B、202C、...、202N的数据传输。缓冲器206中所存储的仿真信息的格式可以与通过网络传输的仿真信息保持一样而未经处理,从而依赖于例如设备仿真器114中的复杂硬件去执行协议转换,或者微控制器102C可以通过可执行代码来处理协议转换。在框308,所述方法可以包括由设备仿真器执行多种功能中的至少一种功能的低级仿真。设备仿真器114随后可以处理低级协议。例如,在一个实施例中,所述低级协议可以是USB链路层传输协议,诸如IN/OUT/SETUP事务排序、事务重试、地址分配等。

对于USB键盘仿真的示例而言,设备仿真器114可以通过IN事务接收对被仿真的 USB键盘中出现的按键中断的查询。设备仿真器114可以重试IN事务,并且同时将对于IN 事务数据的请求转发至微控制器102C。然后,微控制器102C在设备仿真器114的缓冲器 206中准备针对中断查询的状态。并且在主机控制器随后再次重试IN事务时,设备仿真器 114能够将IN事务的数据从缓冲器206传送到主机控制器。随后,主机控制器能够通过类似的IN事务协议请求实际的按键数据。如果设备仿真器114是复杂的硬件,则除了处理高级协议之外还能处理低级协议。例如,设备仿真器114可以理解正在通过低级协议所传送的命令并且对其进行响应,而无需来自微控制器102C的支持(或者借助最小的支持)。设备仿真器114的硬件甚至可以转换为最终网络分组格式或者从最终网络分组格式进行转换,以减少微控制器102C的工作。所述方法可以在框310处结束。在操作中,管理控制台118所传送的命令和/或数据可以对系统100表现为由物理或虚拟的被仿真设备(或其组合)所传送的命令和/或数据。例如,管理控制台118所传送的镜像文件可以对系统100表现为由耦合到系统100 的物理或虚拟CD-ROM(所述的“被仿真设备”)所传送的镜像文件;或者管理控制台118所传送的键盘敲击可以对系统100表现为由耦合到系统100的被仿真键盘所传送的相同键盘敲击。作为示例,如果需要安装操作系统,并且这样的安装通常要使用诸如CD-ROM(光盘-只读存储器)之类的存储设备来执行,则设备仿真器114可以通过CD-ROM镜像文件来 (物理地和/或虚拟地)仿真CD-ROM的功能。作为另一个示例,为了避免需要系统管理员真实出现以对系统100执行修复或更新,例如,管理控制台118可以通过向系统100发送命令/数据来管理修复和/或更新,所述命令/数据使得设备仿真器114能够仿真系统100 上的键盘敲击或鼠标移动。例如,设备仿真器114可以(远程地)对物理或虚拟地位于管理控制台118上的存储设备进行仿真。在该示例中,管理控制台118可以发送命令以用于对被仿真的存储设备的插入或移除进行仿真。一旦被仿真的存储设备对系统100表现为被附接上,则系统100 上的OS(操作系统)能够对被仿真的存储设备进行访问,就像其物理地位于那里一样。随后,与存储相关的命令(诸如读取命令或写入命令)可以被从OS发往设备仿真器114,并且被转发至管理控制台118。例如,响应于存储读取命令,管理控制台118可以向设备仿真器114发送存储数据,并且随后由设备仿真器114返回至0S。例如,响应于写入命令,OS可以向设备仿真器 114发送存储数据,设备仿真器114随后可以将存储数据转发至管理控制台。管理控制台 118还可以在命令结尾处向设备仿真器114发送状态响应,该状态响应随后可以被设备仿真器114返回至OS。 键盘仿真是另一个示例,其中管理控制台118可以发送命令以用于对键盘的插入或移除进行仿真。管理控制台118可以向设备仿真器114发送键盘数据消息(例如,以按键形式)。设备仿真器114可以向管理控制台118发送状态消息,例如LED开/关状态。在以上说明书中,已经参考说明书的具体实施例对本发明进行了描述。然而,显然可以对这些实施例进行各种修改和改变,而不会与本发明相背离。因此,说明书和附图应被认为是说明性的而不是限制性的。
权利要求
1.一种装置,包括 多个端点,其中每个端点对应于被仿真设备的一种功能;具有至少一个缓冲器,用以存储与所述被仿真设备相对应的仿真信息;和用于执行与所述多个端点相对应的功能中的至少一种功能的低级仿真。
2.如权利要求1所述的装置,其中所述设备仿真器内部耦合至集成电路。
3.如权利要求1所述的装置,其中每个端点从存储器取得与所述被仿真设备相对应的仿真信息,并且所述设备仿真器还包括数据移动逻辑,用于将所述仿真信息从所述存储器移至所述至少一个缓冲器。
4.如权利要求1所述的装置,还包括用于执行与所述多个端点相对应的功能中的至少一种功能的高级仿真的逻辑。
5.如权利要求1所述的装置,其中每个端点还包括用于启用和禁止所述每个端点的至少一组寄存器。
6.一种系统,包括 微控制器,用于接收与被仿真设备的一种或更多种功能相对应的仿真信息,所述仿真信息包括数据和命令中的至少一个;并且根据所述仿真信息执行所述多种功能的高级仿真;和设备仿真器,其耦合到所述微控制器,所述设备仿真器具有 多个端点,其中每个端点对应于所述被仿真设备的所述多种功能中的一种功能;并且具有至少一个缓冲器以存储所述仿真信息;用于执行所述多种功能中的至少一种功能的低级仿真的逻辑;以及直接存储器存取(DMA)引擎,用于将仿真信息从所述存储器传输到所述至少一个缓冲器。
7.如权利要求6所述的系统,还包括网络接口,用于从远程系统接收所述仿真信息。
8.如权利要求7所述的系统,还包括中枢控制器,并且其中所述设备仿真器内部耦合至所述中枢控制器。
9.如权利要求6所述的系统,其中每个端点从存储器取得与所述被仿真设备相对应的仿真信息,并且所述设备仿真器还包括数据移动逻辑,用于将所述仿真信息从所述存储器移至所述至少一个缓冲器。
10.如权利要求6所述的系统,其中每个端点还包括至少一组寄存器,并且其中所述微控制器使用所述至少一组寄存器来启用和禁止所述多个端点。
11.一种方法,包括在处理器处接收仿真信息,所述仿真信息对应于被仿真设备的一种或更多种功能,并且所述仿真信息包括数据和命令中的至少一个;根据所述仿真信息执行所述多种功能中的至少一种功能的高级仿真,所述仿真由所述处理器执行;将所述仿真信息从所述处理器传输到设备仿真器;并且由所述设备仿真器执行所述多种功能中的至少一种功能的低级仿真。
12.如权利要求11所述的方法,其中所述的将所述仿真信息从所述处理器传输到设备仿真器包括直接存储器存取(DMA)引擎将所述仿真信息从为所述处理器保留的存储器传输到所述设备仿真器的至少一个缓冲器。
13.如权利要求11所述的方法,还包括所述处理器使用与所述设备仿真器相关联的至少一组寄存器来启用和禁止与所述设备仿真器相关联的每个端点。
14.一种其上存储有指令的制品,所述指令当由机器执行时,导致以下在处理器处接收仿真信息,所述仿真信息对应于被仿真设备的一种或更多种功能,并且所述仿真信息包括数据和命令中的至少一个;根据所述仿真信息执行所述多种功能中的至少一种功能的高级仿真,所述仿真由所述处理器执行;将所述仿真信息从所述处理器传输到设备仿真器;并且由所述设备仿真器执行所述多种功能中的至少一种功能的低级仿真。
15.如权利要求14所述的制品,其中导致将所述仿真信息从所述处理器传输到设备仿真器的所述指令包括导致直接存储器存取(DMA)引擎将所述仿真信息从为所述处理器保留的存储器传输到所述设备仿真器的至少一个缓冲器的指令。
16.如权利要求14所述的制品,还包括所述处理器使用与所述设备仿真器相关联的至少一组寄存器来启用和禁止与所述设备仿真器相关联的每个端点。
全文摘要
在一个实施例中,一种装置提供了多个端点,每个端点对应于被仿真设备的一种功能,每个端点具有至少一个缓冲器,用以存储对应于被仿真设备的仿真信息;并且提供了用于执行与所述多个端点相对应的功能中的至少一种功能的低级仿真的逻辑。
文档编号G06F11/26GK102171655SQ200980139237
公开日2011年8月31日 申请日期2009年12月14日 优先权日2008年12月29日
发明者K·L·黄, K·瓦迪韦吕, N·迪亚曼特 申请人:英特尔公司

最新回复(0)