基于AMBA的设备中的IOAPIC中断的支持的制作方法

文档序号:14747894发布日期:2018-06-22 02:44阅读:266来源:国知局
外围硬件设备通常通过PCIe(快速外围组件互连)互连连接到片上系统(SoC)。SoC和外围硬件设备一起形成计算机。这是针对运行配置用于运行在x86处理器上的操作系统(OS)的计算机的情况。PCIe链接允许连接的外围硬件设备与主机进行通信,具体而言读数据和写数据。传统地,基于x86的系统已经被设计来以端到端的方式将PCIe排序规则从设备施加到x86处理器或从x86处理器施加到设备。施加PCIe排序规则允许在现代OS中流行的生产者/消费者通信模型的正确操作。生产者-消费者通信模型允许处理器和IO(输入/输出)设备两者承担生产者或消费者的角色。在想要将保存在硬盘上的照片显示到监视器上的用户的示例中,生产者(在这一示例中是硬盘)首先将组成照片的数据在软件驱动器的控制下写到主机系统存储器去。在PCIe兼容系统中,硬盘接着必须使用IOAPIC中断来通知处理器数据可用。消费者(在这一示例中为处理器)将接着从存储器读取照片中的数据并将其显示在监视器上。近年来,尤其在智能电话和其它便携式计算设备中,基于(高级微控制器总线架构)架构的IO设备的控制器已激增。然而,许多这些基于的控制器,仅理解总线协议。因此,它们与基于PCIe的主机系统不兼容,因为它们不支持正确处理IOAPIC(输入/输出高级可编程中断控制器)类的中断所需的排序规则的类型。由于这个不兼容性,基于的外围IO设备不能与基于PCIe的主机系统直接交互。概述在此揭示了用于支持兼容IO设备和PCIe兼容计算系统之间的IOAPIC中断的计算机系统和方法。所揭示的一种计算系统包括x86兼容主机系统,其包括至少一个带有存储器的x86可兼容处理器;PCIe根联合体(RC);以及处理器、存储器、以及PCIeRC通信连接于其上的PCIe总线。计算系统还进一步包括具有PCIeEP的互连芯片,PCIeEP通过PCIe链接连接到主机系统的PCIeRC,该PCIeEP连接到总线。互连芯片可以通过总线以兼容的方式与IO设备进行通信并以PCIe兼容的方式与主机系统进行通信。该通信可包括从处理器接收用于IO设备的命令、将该命令通过总线发送到IO设备、通过总线从IO设备接收响应、并在接收响应之际,通过总线并通过PCIe链接将一个或多个DMA操作发送到存储器。在将DMA操作发送到存储器之后,进一步的通信可包括根据PCIe规则将IOAPIC中断发送到主机系统的处理器。提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本技术实现要素:并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。而且,所要求保护的主题不限于解决该公开的任一部分中所注的任何或全部缺点的实现方式。附图简述图1是根据本公开的一实施例的用于可移动地连接到兼容IO设备的计算设备的示意图。图2是示出图1的计算系统的互连芯片的内部细节的示意图。图3是根据本公开的一实施例的用于支持IO设备和计算设备之间的IOAPIC中断的方法的流程图。图4A和4B是示出根据本公开的一个实施例的图3的方法的各步骤可被分别完成的示例子步骤的流程图。图5是根据本公开的一实施例的用于在兼容IO设备和PCIe兼容主机系统之间建立通信的方法的流程图。图6是示出计算系统10的各组件附加细节的示意图。详细描述现在转到图1,描绘了用于支持IO设备12和计算系统10之间的IOAPIC中断的计算系统10。IO设备12可以是兼容IO设备而计算系统10可以是PCIe兼容计算系统。计算系统10可包括x86兼容主机系统14,主机系统14包括x86兼容处理器18;存储器20;PCIeRC22;中断控制器24;以及处理器18、存储器20、PCIeRC22和中断控制器24通信连接于其上的PCIe总线26。处理器18可包括中央处理单元(CPU)28、图形处理单元(GPU)30、以及其它的固定硬件功能31,诸如视频解码器/编码器。CPU28可以是多核处理器,诸如双核、四核或八核处理器,或者它可以是单核处理器。计算系统10可运行支持PCIe架构和IOAPIC类中断的任何合适的OS,包括等。IO设备12可以是与架构接口对接的任何合适的IO设备,包括使用USB3.0的USB(通用串行总线)设备、基于SATA(串行高级技术附连)的存储设备、使用eMMC(嵌入多媒体控制器)的多媒体卡等等。在一个实施例中,主机系统14形成为片上系统(SoC)16,且存储器20被嵌入为存在于SoC之外的在相同或不同包中并连接到SoC内的存储器控制器34的DRAM设备32。例如,主机系统14的处理器18、存储器20、PCIeRC22、中断控制器24,以及PCIe总线26也可存在为安装在印刷线路板上的分开的组件。主机系统14可通过PCIe链接38被连接到互连芯片36,并且互连芯片36可连接到IO设备12。以此方式,主机系统14可通过互连芯片36与IO设备12进行通信,如以下详述。PCIe兼容系统中的通信遵循生产者-消费者模式,如先前所提及的。以此方式,生产者生成数据而消费者将它从存储器中的队列移除。主机系统14的处理器18和IO设备12每一个都可以是生产者而另一个是消费者。在IO设备12是生产者的情况中,如果IO设备12过早通过结束中断通知处理器18所生成的数据准备好了而数据还不在存储器中的队列中,则模型失败。在IO设备12是消费者的情况中,如果IO设备12通过结束中断过早通知处理器18IO设备12使用所生成的数据完成而数据还不能被IO设备12看见,则模型失败。终端提供的一个功能是通过以下来符合生产者-消费者模型:在IO设备12正在针对逐个来自处理器18的命令执行直接存储器存取(DMA)操作的同时允许处理器18执行其它任务,并通过中断通知处理器18IO设备12已完成。图2是示出图1的的互连芯片36的内部细节的示意图。互连芯片36可具有通过PCIe链接38连接到主机系统的PCIeRC22的PCIeEP40。PCIeEP40可被连接到总线42。应当理解,互连芯片36可与主机系统14的SoC16物理上分开地形成,或其可被集成到SoC16中。互连芯片36可以通过总线42以兼容的方式与IO设备12进行通信,并以PCIe兼容的方式与主机系统14进行通信。作为一个特定示例,总线42可以是AXI总线。这个通信可通过互连芯片36从处理器18接收用于IO设备12的命令并将命令通过总线42发送到IO设备12来发生。互连芯片36可接着从IO设备12通过总线42接收响应,并在收到响应之际,通过总线42并通过PCIe链接38将一个或多个DMA操作发送到主机系统14的存储器20。在将DMA操作发送到存储器20之后,互连芯片36可根据以下讨论的PCIe排序规则向主机系统14的处理器18发送IOAPIC中断。一个或多个DMA操作可包括一个或多个相关的DMA读取,全部DMA读取携带分配到IO设备的事务ID。在此情况中,携带与IO设备相同的事务ID的IOAPIC中断的发送在DMA读取已经到达存储器并且所请求的来自存储器20的数据已经由IO设备12接收之后发生。一个或多个DMA操作可替换地包括携带与IO设备相同ID的一个或多个相关的DMA写入。在此情况中,IOAPIC中断推动全部更早先的使用相同事务ID的DMA写入完成。即,IOAPIC中断不能被完成,直到全部的更早先的使用相同事务ID的DMA写入已经成功地使其进入存储器。以此方式,当主机系统接收到该中断时,它可以确认全部数据已经都在存储器中,准备好供消费了。推动遵循着PCIe读取/写入排序规则。例如,根据PCIe排序次序写入不推动读取。然而,写入确实按它们被接收的次序推动更早先的写入。将理解在典型的操作中,DMA写入和DMA读取两者由计算系统处理。因此,在典型的处理流程中,互连芯片可从处理器接收用于IO设备的第一命令、将该第一命令通过总线发送到IO设备、通过总线从IO设备接收第一响应、并在接收第一响应之际,通过总线并通过PCIe链接将多个相关的DMA读取发送到主机系统的存储器。此外,在将DMA读取发送到存储器之后以及在DMA读取已抵达存储器且所请求的来自存储器的数据被IO设备接收之后,互连芯片可根据PCIe排序规则将第一IOAPIC中断发送到主机系统的处理器。此外,互连芯片可从处理器接收用于IO设备的第二命令、将该第二命令通过总线发送到IO设备、通过总线从IO设备接收第二响应、并在接收第二响应之际,通过总线并通过PCIe链接将多个相关的DMA写入发送到主机系统的存储器。此外,在将DMA写入发送到存储器之后,互连芯片可根据PCIe排序规则将第二IOAPIC中断发送到主机系统的处理器,其中第二IOAPIC终端推动全部相关DMA写入(即,具有相同事务ID的DMA写入)完成。此外,在接收中断之后,处理器可询问IO设备中的状态寄存器以确定采取什么行动,因为IO设备可能已经经历了故障而不是完成了一个或多个DMA操作。互连芯片36可包括具有IOAPIC表46以及接口逻辑48加上其它逻辑50的系统管理模块(SMM)44。接口逻辑48被执行以胶合IOAPIC表46。其它逻辑被执行来与主机系统14交互。SMM44可作为PCIe功能被直接连接到总线42或被嵌入另一PCIe功能。互连芯片36可连接到IO设备12的一个或多个。在所描绘的图2的实施例中,IO设备12可以是USB设备52、SATA设备54、eMMC设备56、或其它IO设备58。每个IO设备12可具有对应的PCIe功能60,而SMM44可以是例如“PCIe功能0”64。在每个PCIe功能60内,互连芯片36可针对所连接的每个IO设备12包括各自设备控制器80、投影逻辑70(shadowinglogic)、和物理层(PHY)90。例如,如果IO设备12是USB设备52,那么USB设备52可通过PHY92连接到第一PCIe功能62并利用USB设备控制器和投影逻辑72。投影逻辑70可包含来自互连芯片36中的IOAPIC表46的表格条目的信息。来自条目的信息可包括专用于IO设备12的中断向量、主机目的地ID、以及触发器模式。以下表1-4提供了有关IOAPIC表的内容的细化的信息。表1:IOAPIC中断写入地址格式63:3231:2019:1211:4321:00FEE’hDIDEDIDRHDestM00表2:IOAPIC中断写入地址格式描述表3:IOAPIC中断写入数据格式31:1716151413:121110:87:00000’hHITTMDS00DestMDMVec表4:IOAPIC中断写入数据格式描述IOAPIC表46可在计算系统10引导之际被编程。互连芯片36可被配置来检测连接到互连芯片36的IO设备12并向处理器18宣布IO设备12的存在。互连芯片36可接着接收处理器18对SMM44内IOAPIC表46内部的条目的编程。条目可包括专用于IO设备12的中断向量(即,中断处理程序所位于的存储器地址)、主机目的地ID、以及触发器模式。在总线42上,来自相同IO设备12的全部操作携带相同事务ID,且具有相同事务ID的全部操作按次序离开总线42并到达PCIeEP40。不存在关于来自不同IO设备12的操作的排序的强制实施,因为它们携带不同事务ID。因此,没有投影逻辑70,则没有办法让IO设备12发送具有与DMA操作相同的事务ID的IOAPIC中断。有了投影逻辑70,IOAPIC中断能够被生成、格式化、并跟随DMA写入的发送或DMA读取数据的返回立即发送,因为中断具有与DMA相同的事务ID,这将其指定为在总线42上在DMA操作之后接着到来。一旦中断到达PCIeEP40,PCIe排序规则将自动被遵循,因为PCIeEP40、PCIe链接38、以及主机系统14的PCIeRC22将强制实施它们,如PCIe规范所要求的。现在转到图3,描绘了用于支持IO设备和计算系统之间的IOAPIC中断的方法300的流程图。下文描述的方法可在以上参考图1和2描述的硬件上或由其它合适的设备来实现。因此,IO设备12可以是兼容IO设备,而计算系统可以是PCIe兼容计算系统,如上面所描述的。例如,IO设备可以是USB设备、SATA设备、或eMMC设备等等。计算系统可以是游戏控制台且IO设备可以是智能电话或位于智能电话内的设备(作为两个特定示例)。在一个实施例中,计算系统的主机系统的处理器、存储器、PCIeRC、和PCIe总线可被形成为SoC。或者,交互芯片可从主机系统的SoC分开地形成。方法300可包括,在302,接收来自计算系统的主机系统中的处理器的用于IO设备的命令。在304,方法300可包括将该命令通过互连芯片上的总线发送到IO设备。在306,方法300可任选地包括通过总线从IO设备接收响应。在308,方法300可包括,在接收响应之际,通过总线并通过PCIe链接将一个或多个DMA操作发送到计算系统的存储器。在310,方法300可包括,在将一个或多个DMA操作发送到存储器之后,根据PCIe排序规则,将IOAPIC中断发送到主机系统的处理器。针对当一个或多个DMA操作可能包括DMA读取或DMA写入的情况,方法步骤308和310已经被分成子步骤。图4A和4B分别描绘了每个情况并在以下进行描述。将理解,方法300可包括图4A或4B中所示的过程之一,或可包括图4A或4B中所示的过程两者,按顺序连续执行。图4A示出了方法400的流程图,方法400示出了方法300的步骤308和310可籍此完成的示例子步骤。DMA操作可包括多个相关的DMA读取。在402,方法400可包括将来自IO设备的DMA读取通过总线和PCIe链接发送到存储器。在404,方法400可包括到达存储器的DMA读取以及被IO设备接收的来自存储器的所请求的数据。在步骤406,方法400可包括在投影逻辑中格式化IOAPIC中断。投影逻辑籍此被编程以能够格式化IOAPIC中断的方法以下结合图5进行描述。在408,方法400可包括将IOAPIC中断发送到处理器,IOAPIC中断的发送在全部相关DMA读取已经到达存储器且来自存储器的所请求的数据已经被IO设备接收之后发生,因为根据PCIe排序规则,写入(在该示例中为IOAPIC中断)不推动读取(在该示例中为相关DMA读取)。图4B示出了方法450的流程图,方法450也示出了方法300的步骤308和310可籍此完成的示例子步骤。在此情况中,DMA操作可包括多个相关的DMA写入。在452,方法450可包括将来自IO设备的DMA写入通过总线和PCIe链接发送到存储器。在步骤454,方法450可包括在投影逻辑中格式化IOAPIC中断。在步骤456,方法450可包括向处理器发送IOAPIC中断。根据PCIe排序规则,IOAPIC中断可推动全部相关DMA写入完成,因为IOAPIC中断是写入而写入可推动其它写入,如在458所描绘的。现在转到图5,描绘了用于初始地建立计算系统和IO设备之间的通信的设立方法500的流程图。在502,方法500可包括互连芯片检测连接到互连芯片的IO设备。这可在计算系统引导之际发生或在IO设备被最初连接到计算系统时发生。在504,方法500可包括向处理器宣布IO设备的存在。互连芯片可包括具有IOAPIC表的SMM,且SMM可被连接到总线。在506,方法500可包括接收处理器18对SMM内IOAPIC表内部的条目的编程。如上面描述的,条目包括专用于IO设备的中断向量、主机目的地ID、以及触发器模式。在508,方法500可包括向IO设备发送SMM的IOAPIC表条目。互连芯片可包括投影逻辑和设备控制器,并且投影逻辑可包含来自互连芯片的SMM中的IOAPIC表的表条目的信息。如SMM中的IOAPIC表一样,来自条目的信息可包括专用于IO设备的中断向量、主机目的地ID、以及触发器模式。在步骤510,方法500可包括在投影逻辑中存储IOAPIC表的副本。将理解,上面描述的系统和方法可被实现以通过利用通过总线以兼容方式与IO设备12进行通信并以PCIe兼容方式与主机系统进行通信的交互芯片,来支持在兼容IO设备和PCIe兼容计算系统之间通信的IOAPIC中断。在AMBA侧IO设备处接收来自PCIe侧处理器的DMA操作请求之际,根据在此描述的系统和方法,IO设备执行DMA操作并向具有和刚刚执行完的DMA操作相同事务ID的投影逻辑发送中断请求。以此方式,投影逻辑格式化并向PCIe侧处理器发送OAPIC中断,因为处理器将期望在PCIe兼容系统中接收。没有本发明揭示的实施例,来自AMBA兼容IO设备的中断不会携带和前面的DMA操作相同的事务ID。结果,中断可在DMA操作到达存储器之前到达处理器,因为中断不能具有推动队列中在其之前的DMA操作的能力。这将导致生产者-消费者通信模型的崩溃。因此,本发明中揭示的各实施例提供了克服与此前这两个系统之间的兼容性的缺乏相关联的技术挑战的益处。图6示出了其中上述系统和方法和实现的计算环境。如图6中所示,计算系统10可包括不仅上述的具有处理器18和存储器20、互连芯片36和IO设备12的主机系统14,也可包括显示子系统606、通信系统608、以及输入子系统610,全部由通信总线子系统612(其可包括上述PCIe链接38)链接。计算系统10可采取以下形式:一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备。如上面讨论的,IO设备12包括使用USB3.0的USB设备、基于SATA的存储设备、以及使用eMMC的多媒体卡。因此,IO设备12可包括一个或多个大容量存储设备,一个或多个大容量存储设备可包括可移动的和/或内置设备,诸如光学存储设备(例如,CD、DVD、HD-DVD、蓝光碟等)、和/或磁性存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)、以及其他。IO设备12可被配置来包括内置或可移动计算机可读介质614。计算机可读存储介质614是配置为非易失性存储器的指令存储其上的硬件设备,指令在由主机系统的处理器18使用存储器20的各部分执行时,使得处理器18实现特定方法和过程。应当理解,由于指令以非易失性方式存储,即使当I/O设备12和计算机可读存储介质的电被切断时,执行仍被存储,并可在下一次IO设备12通电时被检索。示例性的计算机可读介质包括FLASH存储器、EPROM、EEPROM、CD-ROM、DVD-ROM等。主机系统14的处理器18是配置用于使用存储20的各部分执行指令的物理设备。例如,处理器可以被配置成执行指令,所述指令是一个或多个应用、服务、程序、例程、库、对象、部件、数据结构或其他逻辑构造的一部分。这种指令可被实现以执行任务、实现数据类型、转换一个或多个部件的状态、实现技术效果、或以其他方式得到期望结果。存储器20包括被配置成保存可由处理器18执行的指令的一个或多个物理设备。存储器20可包括易失性存储器或非易失性存储器,易失性存储器诸如在进程期间持有指令达有限的持续时间但通常在计算系统关机后继续存储指令的RAM或DRAM,非易失性存储器诸如在进程期间持有指令达有限的持续时间并且在计算系统断电后继续持有指令的FLASH、EPROM、EEPROM等。与存储器20中的存储相反,此处描述的指令的各方面可由未持有指令达有限的持续时间的通信介质(例如,作为电磁信号、光学信号等载体的物理设备)传播。处理器18和存储器20的各方面可以被一起集成到一个或多个硬件逻辑组件中。这种硬件逻辑组件可以包括例如场可编程门阵列(FPGA)、程序和应用专用集成电路(PASIC/ASIC)、程序和应用专用标准产品(PSSP/ASSP)、片上系统(SoC)以及复杂可编程逻辑器件(CPLD)。显示子系统606可用于呈现由存储器20保存的数据的可视表示。该视觉表示可以采用图形用户界面(GUI)的形式。由于此处所描述的方法和过程改变了由存储器20或计算机可读存储介质614保持的数据,并由此变换了存储器20或计算机可读存储介质614的状态,因此同样可以转变显示子系统606的状态以视觉地表示底层数据的改变。显示子系统606可以包括使用实质上任何类型的技术的一个或多个显示设备。可将这样的显示设备与处理器18和/或存储器20组合在共享封装中,或这样的显示设备可以是外围显示设备。输入子系统610可包括诸如键盘、鼠标、触摸屏或游戏控制器等一个或多个用户输入设备或者与这些用户输入设备对接。在一些实施例中,输入子系统可以包括或相接于所选择的自然用户输入(NUI)部件。这种元件部分可以是集成的或外围的,输入动作的转导和/或处理可以在板上或板外被处理。NUI部件的示例可包括用于语言和/或语音识别的话筒;用于机器视觉和/或姿势识别的红外、色彩、立体显示和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼睛跟踪器、加速计和/或陀螺仪;以及用于评估脑部活动的电场感测部件。通信子系统608可以被配置成将计算系统10与一个或多个其它计算设备可通信地耦合。通信子系统608可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统608可被配置成用于经由无线电话网络或者有线或无线局域网或广域网来进行通信。在一些实施例中,通信子系统可允许计算系统608经由诸如因特网这样的网络将消息发送至其他设备以及/或者从其他设备接收消息。将会理解,此处描述的配置和/或方法本质是示例性的,这些具体实施例或示例不应被视为限制性的,因为许多变体是可能的。此处描述的具体例程或方法可以表示任何数量的处理策略中的一个或多个。如此,所示和/或所述的各种动作可以以所示和/或所述顺序、以其他顺序、并行地执行,或者被省略。同样,上述过程的次序可以改变。本公开的主题包括各种过程、系统和配置以及此处公开的其他特征、功能、动作和/或属性、以及它们的任一和全部等价物的所有新颖且非显而易见的组合和子组合。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1