CN101751352A - 不同种类处理单元中对绑定和迁移硬件设备的芯片组支持 - Google Patents
不同种类处理单元中对绑定和迁移硬件设备的芯片组支持 Download PDFInfo
- Publication number
- CN101751352A CN101751352A CN200910250499A CN200910250499A CN101751352A CN 101751352 A CN101751352 A CN 101751352A CN 200910250499 A CN200910250499 A CN 200910250499A CN 200910250499 A CN200910250499 A CN 200910250499A CN 101751352 A CN101751352 A CN 101751352A
- Authority
- CN
- China
- Prior art keywords
- processor
- mapping table
- address mapping
- address
- hardware device
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 20
- 230000027455 binding Effects 0.000 title abstract description 9
- 238000009739 binding Methods 0.000 title abstract description 9
- 238000013507 mapping Methods 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000013519 translation Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims 2
- 238000012986 modification Methods 0.000 abstract description 5
- 230000004048 modification Effects 0.000 abstract description 5
- 238000011144 upstream manufacturing Methods 0.000 description 16
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000875 corresponding effect Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000039 congener Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global addressing
-
- 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/14—Handling requests for interconnection or transfer
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/206—Memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
不同种类处理单元中对绑定和迁移硬件设备的芯片组支持,用于提供由处理器访问硬件设备而不造成与包括在计算机系统中的其他处理器冲突的方法,包括从第一处理器接收第一地址映射表和从第二处理器接收第二地址映射表,每个地址映射表包括处理器配置访问的一组硬件设备的存储器映射的输入/输出(I/O)窗孔。方法进一步包括将第一地址映射表和第二地址映射表组合产生全局地址映射表,从第一处理器接收第一访问请求和基于包括在全局地址映射表中的地址映射将第一访问请求路由给硬件设备。有利地,包括在多处理器系统中的不同种类的处理器能访问包括在计算机系统中的任何硬件设备,而不修改处理器、由每个处理器执行的一个或多个操作系统或硬件设备。
Description
技术领域
本发明一般地涉及计算机架构领域,且更特别地涉及在不同种类处理单元中对绑定和迁移硬件设备的芯片组支持。
背景技术
如所公知的,执行操作系统(OS)的中央处理单元(CPU)在进行输入/输出(I/O)操作时能访问系统存储器和/或一个或多个硬件设备。I/O操作可以通过包括存储器桥(例如“北桥”芯片)和/或I/O桥(例如“南桥”芯片)的一个或多个桥路由至CPU和从CPU发送。其中,一个或多个硬件设备可以包括存储器模块、计算机显示器、硬盘驱动器和CD-ROM驱动器、通用串行总线(USB)控制器、PCI高速(PCIe)控制器。硬件设备可以是集成的硬件设备或外围硬件设备。
常规计算机架构的一个问题是,他们基于计算机系统中只包括单一CPU这一潜在的假设设计。因此,当用常规架构方案实施多处理器系统时,由于每个CPU相信该CPU能全部和排他地访问所有的硬件设备,因此当一个CPU试图访问硬件设备时可能产生冲突。
常规架构的另一问题是,芯片组、硬件设备控制器和基础的硬件设备典型地不是设计为在多处理器计算机系统中使用。再次,当两个处理器试图同时或不同时访问相同硬件设备时,可能发生冲突和/或系统崩溃。
一些现有技术的计算机架构试图通过允许两个CPU在计算机系统中共存来克服这些缺陷。但是,在这些现有技术的计算机架构中,每个CPU必须知道在计算机系统中的任何其他CPU且必须特别地配置以运行在多处理器系统中。另外,在许多现有技术的多CPU系统中,多个处理器是同种类的,意味着他们大致相同和/或来自相同的厂商。
因此,本领域中仍然需要允许多个不同种类的处理单元访问相同系统中的多个硬件设备的改善的技术。
发明内容
本发明的实施例提供了用于提供由处理器访问包括在计算机系统中的硬件设备而不造成与包括在该计算机系统中的其他处理器冲突的系统和方法。该方法包括:从该第一处理器接收第一地址映射表,该第一地址映射表包括该第一处理器配置为访问的第一组硬件设备的存储器映射的输入/输出(I/O)窗孔,和从第二处理器接收第二地址映射表,该第二地址映射表包括该第二处理器配置为访问的第二组硬件设备的存储器映射的I/O窗孔。该方法进一步包括:通过将该第一地址映射表和该第二地址映射表组合产生全局地址映射表,从该第一处理器接收第一访问请求,和基于包括在该全局地址映射表中的地址映射将该第一访问请求路由给与该第一访问请求相关的硬件设备。
本发明的其他实施例包括存储当由处理器执行时将计算机系统配置为实施上面方法的一个或多个改变的指令的计算机可读介质,以及配置为实施上面方法的一个或多个改变的设备控制器。
公开的方法的一个优点是,包括在多处理器系统中的不同种类的处理器能访问包括在芯片组中的任何集成的硬件设备或接附于外部总线(例如PCI、PCIe等)的任何外围硬件设备,而不用修改处理器、操作系统或硬件设备。
附图说明
为了详细地理解本发明的上述特征,对于以上简要说明的本发明,将参照实施例进行更为具体的描述,其中对一些实施例在附图中进行了图示。然而,需要注意的是,附图只是图示本发明的代表性实施例,因此不能认为附图限制了本发明的范围,本发明可以允许其他同样有效的实施例。
图1A-1D是根据本发明各种实施例的配置为在不同种类处理单元中绑定和迁移硬件设备的计算机系统的概念图;
图2是根据本发明一个实施例的产生全局地址映射表的方法步骤流程图;
图3是根据本发明一个实施例的图示全局地址映射表的概念图;
图4是根据本发明一个实施例的图示全局配置空间映射表的概念图;
图5是根据本发明一个实施例的将访问请求从处理器路由至硬件设备的方法步骤流程图;
图6是根据本发明一个实施例的将返回事务从硬件设备路由至处理器的方法步骤流程图。
具体实施方式
在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员来说显而易见的是,本发明可以无需一个或多个这些具体的细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,公知的特征未进行描述。
图1A是根据本发明一个实施例的配置为在不同种类处理单元中绑定和迁移硬件设备的计算机系统100的概念图。如图所示,计算机系统100包括处理器102A、处理器102B、存储器桥104A、存储器桥104B、存储器106A、存储器106B和输入/输出(I/O)管理模块108。I/O管理模块108与外围硬件设备112A-112N耦合且包括I/O控制器114和集成的硬件设备110A-110N。
处理器102A、处理器102B、外围硬件设备112A-112N和集成的硬件设备110A-110N可以与存储在存储器106A和/或106B中的一个或多个驱动器相关。驱动器是当由处理器102A和/或处理器102B执行时将程序指令转换成不同类型的机器代码的软件程序。例如,处理器102A可以执行与处理器102A相关的驱动器以将程序指令转换成对处理器102A是本地的机器代码。
处理器102A和处理器102B每个可以是配置为执行软件程序以实施计算机系统100的各种功能的中央处理单元(CPU)。这些软件程序包括执行处理器102A、102B的每个的一个或多个操作系统。操作系统提供给用户不同的计算环境,该不同的计算环境可以用于执行与每个计算环境相关的应用程序。例如,由处理器102A执行的第一操作系统可以是操作系统,其可以提供用户访问诸如Office的程序,而由处理器102B执行的第二操作系统可以是作为文件传送协议(FTP)服务器的基于UNIX的操作系统。
处理器102A与存储器桥104A耦合,且处理器102B与存储器桥104B耦合。在一个实施例中,存储器桥104A、104B每个包括北桥芯片。存储器桥104A与存储器106A耦合,存储器桥104B与存储器106B耦合。处理器102A通过存储器桥104A可以从存储器106A中读取数据和向存储器106A中写数据,且处理器102B通过存储器桥104B可以从存储器106B中读取数据和向存储器106B中写数据。这个数据可以包括软件程序,也可以包括其他类型的数据。
每个存储器桥104A、104B与I/O管理模块108耦合。I/O管理模块108允许处理器102A、处理器102B和由这些处理单元执行的软件程序可访问外围硬件设备112A-112N和集成的硬件设备110A-110N。在一个实施例中,I/O管理模块108(在本文也称为“芯片组”108)包括南桥芯片。外围硬件设备112A-112N可以使用例如诸如通用串行总线(USB)连接器或火线连接器的连接器与I/O管理模块108耦合。其中,外围设备112A-112N可以包括键盘、鼠标、打印机、扫描仪、磁盘驱动器、闪存驱动器、磁带驱动器、麦克风、扬声器、计算机显示器、数字视频摄像机或另一个计算机系统。
集成的硬件设备110A-110N位于存储I/O管理模块108和向计算机系统100提供各种系统功能的相同的芯片上。其中,集成的硬件设备110A-110N包括实时时钟、高级电源管理(APM)模块、外围部件接口(PCI)总线、PCI快速(PCIe)总线、直接存储器访问(DMA)控制器、中断控制器、基板管理控制器、外围高级技术接附(PATA)控制器、串行高级技术接附(SATA)控制器或非易失基本输入/输出系统(BIOS)存储器。
外围硬件设备112A-112N和集成的硬件设备110A-110N(在此处共同地称为“硬件设备”)可以由处理器102A、102B分别通过存储器桥104A、104B和I/O管理模块108访问。
I/O控制器114是配置为在处理器102A、102B和硬件设备之间仲裁和路由访问请求的功能单元。I/O控制器114可以实现为硬件、软件或硬件和软件的组合。例如,I/O控制器114能实现为包括在由通用处理器执行的I/O管理模块108中的固件。
I/O控制器114配置为截获由处理器102A、102B发送的访问请求(在本文也称为“下游事务”)并运行以在访问硬件设备的多个处理器102A、102B之间避免冲突并将访问请求路由给合适的硬件设备。I/O控制器114也截获由硬件设备发送的返回事务和中断(在本文也称为“上游事务”),并将这些事务路由给相应的处理器。
本发明的实施例提供允许在计算机系统100中的每个处理器102A、102B使用和访问包括在计算机系统100中的任何硬件设备的芯片组支持,而不用修改处理器或操作系统。本发明的实施例特别地提供下列支持:在每个处理器102A、102B和硬件设备之间路由事务、在硬件设备和存储器106A、106B之间路由事务、将硬件设备绑定至每个处理器102A、102B、在处理器102A、102B之间迁移设备和在硬件设备之间路由对等事务。另外,本发明的实施例不依赖对任何特定硬件设备控制器的修改。而是,本发明的实施例依赖在芯片组108中的修改。
图1A图示的计算机系统100包括两个处理器102A、102B和两个存储器桥104A、104B。但是本发明的实施例同等应用于具有任何数目处理器和存储器桥的系统架构。另外,每个处理器102A、102B可以是,但不要求是不同种类的,其包括来自不同厂商的处理器,具有潜在的不同指令集、运行潜在的不同操作系统和具有任何数目的其他不同。
另外,其中,计算机系统100的额外的实施例包括诸如网络适配器、系统盘、插卡、显示设备、包括诸如图形处理单元(GPU)的并行处理单元(PPU)的并行处理器子系统的部件,这些都没有在图1A中示出以避免使本发明的实施例不清楚。
本领域的技术人员将理解的是,图1A中描述的架构决不限制本发明的范围,本文中教导的技术可以在任何适合地配置的处理单元上实现,该处理单元包括但不限于一个或多个CPU、一个或多个多内核CPU、一个或多个PPU、一个或多个可编程和/或不可编程GPU、一个或多个专用处理单元等,这些都不离开本发明的范围。
图1A中图示的计算机系统100的架构也可以实现为任何数目的芯片,如图1B-1D中更详细的描述。图1B是根据本发明一个实施例的配置为在不同种类处理单元中绑定和迁移硬件设备的计算机系统120的概念图。计算机系统120可以包括与图1A中图示的计算机系统100相同的部件。如图所示,处理器102A和存储器桥104A集成在第一芯片116上,处理器102B、存储器桥104B和I/O管理模块108集成在第二芯片118上。第二芯片118支持到第一芯片116的外部连接。在一个实施例中,第二芯片118包括具有全部功能的片上系统,其能升级以包括额外外部处理器或存储器桥(即,升级以连接至第一芯片116)。
图1C是根据本发明一个实施例的配置为在不同种类的处理单元中绑定和迁移硬件设备的计算机系统130的概念图。再次,计算机系统130可以包括与图1A中图示的计算机系统100相同的部件。如图所示,处理器102A和存储器桥104A集成在第一芯片132上,存储器桥104B和I/O管理模块108集成在第二芯片134上,处理器102B集成在第三芯片136上。在一个实施例中,第一芯片132由供应包括处理器和相应存储器桥的芯片的第一厂商提供,第二芯片134和/或第三芯片136由第二厂商提供。
图1D是根据本发明一个实施例的配置为在不同种类的处理单元中绑定和迁移硬件设备的计算机系统140的概念图。再次,计算机系统140可以包括与图1A中图示的计算机系统100相同的部件。如图所示,处理器102A和存储器桥104A集成在第一芯片142上,处理器102B和存储器桥104B集成在第二芯片144上,和I/O管理模块108集成在第三芯片146上。
对本领域的普通技术人员来说明显的是,除了在图1B-1D中图示的之外,芯片的其他组合也在本发明的实施例的范围中。在各种实施例中,在任何存储器桥和芯片组之间的连接可以是PCI高速(PCIe)、与桌面管理接口(DMI)标准组合的PCIe、超传输(HT)、专有和/或内部芯片组接口或任何其他南桥到北桥的连接。另外,在各种实施例中,特定处理器和相应存储器桥之间的连接对处理器厂商是特定的。在又进一步实施例中,每个处理器可以执行任何软件,包括不同操作系统,和每个处理器可以配置有它自己的地址映射表,如同该处理器是在计算机系统中的唯一的处理器那样。例如,每个处理器和/或操作系统期望可以如同硬件设备是专有于该特定处理器和/或操作系统那样查看那些硬件设备。再次,本发明的实施例提供使硬件设备由多个处理器访问的支持,即使那些硬件设备不是特别设计为与多处理器和/或不同种类处理器计算环境工作。
图2是根据本发明一个实施例的产生全局地址映射表的方法步骤流程图。本领域的技术人员将理解的是,尽管方法200结合图1A-1D的系统描述,但是配置为以任何顺序实施方法步骤的任何系统都在本发明的实施例的范围中。
如图所示,方法200开始于步骤202,其中列举与第一处理器(例如处理器102A)相关的硬件设备。在一个实施例中,对硬件设备的列举至少部分通过由第一处理器执行的固件代码(例如BIOS和/或其他系统软件)实施。在替换的实施例中,I/O控制器114列举与第一处理器相关的硬件设备。
在步骤204,产生提供“存储器空间”用于第一处理器的第一地址映射表。在第一地址映射表中的存储器地址可以指向第一处理器配置为访问的物理存储器或列举的硬件设备的存储器映射的I/O窗孔(aperture)。
在步骤206,列举与第二处理器(例如处理器102B)相关的硬件设备。步骤206可以以与步骤202大致相似的方式实施。但是,列举的与第一处理器相关的设备可以和列举的与第二处理器相关的设备不同。在一个实施例中,包括在计算机系统中的所有硬件设备由每个处理器列举。在替换的实施例中,在列举期间,每个硬件设备静态地绑定到仅仅一个处理器使得只有该处理器能访问该特定硬件设备。在进一步实施例中,一些硬件设备由两个处理器列举,其他硬件设备由处理器仅仅之一列举。
在步骤208,产生提供“存储器空间”用于第二处理器的第二地址映射表。与在步骤204产生的第一地址映射表相似,在第二地址映射表中的存储器地址可以指向第二处理器配置为访问的物理存储器或列举的硬件设备的存储器映射的I/O窗孔。但是,由于第二处理器能访问的列举的设备的列表可以不同于第一处理器能访问的列举的设备的列表,因此第二地址映射表可以不同于第一地址映射表。另外,即使列举的设备的列表和每个存储器映射的窗孔的大小对两个处理器来说是相同的,处理器和/或由每个处理器执行的操作系统也可以在产生地址映射表时实施不同的方案。因此,即使在这种场景下,第一和第二地址映射表可以是不同的。
在步骤210,I/O管理模块108从第一处理器接收第一地址映射表。如上所述,第一地址映射表限定处理器相对于在系统中的硬件设备的“查看”。为了在第一处理器和硬件设备之间路由事务,I/O管理模块108接收并存储第一地址映射表。
在步骤212,I/O管理模块108从第二处理器接收第二地址映射表。步骤212大致与上面描述的步骤210相似。
在步骤214,I/O管理模块108通过将第一地址映射表和第二地址映射表组合产生全局地址映射表。如本文所描述的,全局地址映射表允许产生于每个处理器的事务路由给合适的硬件设备,并允许产生于硬件设备的事务路由给合适的处理器。在一个实施例中,包括在全局地址映射表中的地址包括第一地址映射表中的预加有“0”的地址和第二地址映射表中的预加有“1”的地址。在这种方式中,全局地址空间相对第一地址映射表和/或第二地址映射表的地址空间包括一个额外位。在替换的实施例中,当多于两个处理器包括在计算机系统中时,可以包括额外的预加的位以在处理器之间消除模糊。在进一步替换的实施例中,使用独立于和不同于预加位给地址映射表的更加复杂的技术将第一地址映射表和第二地址映射表组合为全局地址映射表。
图3是根据本发明一个实施例的图示全局地址映射表306的概念图。如图所示,包括第一MMIO部分和第一物理存储器部分的第一地址映射表302与包括第二MMIO部分和第二物理存储器部分的第二地址映射表304组合以产生全局地址映射表306。
图2和3中描述的方法和系统特别地涉及存储器空间地址映射表。另外,相似的方法和系统可以实施以为第一处理器和第二处理器产生“配置空间”地址映射表,他们组合成全局配置空间映射表。如已知的,配置空间地址具有<总线、设备、功能>的形式,且是用于在处理器和硬件设备之间的配置周期和用于路由一定PCIe事务包的地址。
图4是根据本发明一个实施例的图示全局配置空间映射表406的概念图。如图所示,与第一处理器(例如处理器102A)相关的第一配置空间地址映射表402能和与第二处理器(例如处理器102B)相关的第二配置空间地址映射表404组合以产生全局配置空间地址映射表406。与图3中描述的全局地址映射表306相似,全局配置空间地址映射表406可以包括一个或多个预加的位或者可以使用任何其他技术上可行的技术组合第一和第二配置空间地址映射表。
图5是根据本发明一个实施例的将访问请求从处理器路由至硬件设备的方法步骤流程图。本领域的技术人员将理解的是,尽管方法500结合图1A-4的系统和/或方法描述,但是配置为以任何顺序实施方法步骤的任何系统都在本发明的实施例的范围中。
如图所示,方法500开始于步骤502,其中I/O管理模块108从处理器接收访问请求。处理器可以是例如处理器102A、102B之一。访问请求可以包括MMIO地址或配置空间地址,如上所述。
在步骤504,I/O管理模块108将全局地址部分加到包括在访问请求中的下游目标地址中以产生全局目标地址。在一个实施例中,如果访问请求接收自第一处理器(例如处理器102A),那么将“0”预加给下游目标地址;而如果访问请求接收自第二处理器(例如处理器102B),那么将“1”预加给下游目标地址。
在步骤506,I/O管理模块108基于全局地址映射表将全局目标地址转换为设备地址。在一个实施例中,设备地址包括在计算机系统中的硬件设备的物理硬件地址。例如,全局地址映射表可以包括如图3描述的全局地址映射表306。在步骤508,I/O管理模块108将访问请求从其接收的处理器设置为硬件设备的“所有者”。在这种方式中,硬件设备动态地绑定到给那个硬件设备发出访问请求的最后处理器。当从硬件设备路由返回事务给合适的处理器时,这种绑定是有用的,如图6中更详细描述。
所有权的绑定可以通过若干方式完成。在一个实施例中,如上所述,硬件设备可以绑定到发出指向该硬件设备的下游事务的最后处理器。在这个实施例中,随后的上游事务转换到对应于最后的下游事务的“所有者”的全局地址空间中。
在替换的实施例中,I/O管理模块108包括配置为将任何硬件设备绑定到包括在计算机系统中的任何处理器的集成的硬件设备(例如,“BindDev”设备)。当BIOS或系统软件列举硬件设备时,发现BindDev,产生可用硬件设备的表,并确定每个硬件设备应当绑定到哪个处理器。列举软件将这个表写到BindDev,其将表保存到I/O管理模块108中。为了使用BindDev,一个处理器可以首先引导,且它的BIOS可以列举并绑定系统中的所有设备。可替换地,在每个处理器上的BIOS和/或系统软件可以协调以使用BindDev将设备绑定到处理器。随着设备进入和退出系统,更新该表(由热插拔事件触发)。另外,对不同类型的事务,BindDev可以支持不同绑定。例如,依赖于涉及的事务是配置事务、消息事务、I/O事务或存储器映射的事务,设备所有权对特定的硬件设备可以不同。同样,在系统已经引导后的任何时间,系统软件可以使用上面描述的技术将硬件设备再绑定到不同处理器。
另外,一旦处理器设置为特定硬件设备的“所有者”,就存储这个信息以在“上游事务”期间获取。在“BindDev”硬件设备配置为将处理器绑定到特定设备的实施例中,“BindDev”硬件设备存储所有权信息。可替换地,在“动态”绑定的实施例中,这个信息可以存储在I/O管理模块108中的在处理器和硬件设备之间的事务路径上可用的任何地方。在一个实施例中,I/O控制器114存储所有权信息。在另一实施例中,围绕硬件设备的“包装”存储所有权信息。在另一实施例中,一些硬件设备自身可以支持所有权概念并存储所有权信息。在进一步实施例中,设备所有权存储在存储器控制器104A和/或104B和I/O管理模块108之间的进口/出口端口中,或者在I/O管理模块108和硬件设备之间的进口/出口端口中。
在步骤510,I/O管理模块108基于设备地址将访问请求路由给硬件设备。在步骤512,I/O管理模块108移除全局地址部分且在步骤514将访问请求递送给硬件设备。在一个实施例中,处理器和硬件设备都不知道在计算机系统中有能访问硬件设备的多个处理器。由于硬件设备期望具有与当访问请求由I/O管理模块接收时包括在访问请求中的原始下游目标地址相同的位的数目的地址,因此例如预加的位的全局地址部分从访问请求的地址部分移除。
图6是根据本发明一个实施例的将返回事务从硬件设备路由至处理器的方法步骤流程图。本领域的技术人员将理解的是,尽管方法600结合图1A-5的系统和方法描述,但是配置为以任何顺序实施方法步骤的任何系统都在本发明的范围中。
如图所示,方法600开始于步骤602,其中I/O管理模块108从硬件设备接收返回事务。返回事务在本文也称为“上游事务”。在各种实施例中,返回事务包括(a)产生于先前下游非公布的请求(例如读返回数据)的上游设备完成,(b)包括为设备控制器直接存储器访问(DMA)从系统存储器中读取和/或写到系统存储器的事务,(c)上游消息(例如中断),和(d)在两个硬件设备之间的对等事务。根据本发明的实施例,相对其他三种类型的上游事务,对等事务由I/O管理模块108不同地处理。因此,处理对等事务在图6中描述的方法600的范围之外,并进一步在下面讨论。
在步骤604,I/O管理模块108确定哪个处理器是从其接收上游事务的硬件设备的所有者。I/O管理模块108可以检查在步骤508产生的所有权信息。
在步骤606,I/O管理模块108将全局地址部分加到上游目标地址以产生全局目标地址。加的全局地址部分依赖哪个处理器是发出上游事务的硬件设备的所有者。在一个实施例中,加全局地址部分包括基于哪个处理器是硬件设备的所有者预加位给上游目标地址。
在步骤608,I/O管理模块108基于全局地址映射表将全局目标地址转换为设备地址,且在步骤610,I/O管理模块108基于全局地址将上游事务路由给合适的处理器。在一个实施例中,步骤608和610分别大致上与如本文先前描述的步骤506和510相似。
在步骤612,I/O管理模块108将全局地址部分从设备地址上移除,且在步骤614,I/O管理模块108将上游事务递送给处理器。在一个实施例中,步骤612和614分别大致上与如本文先前描述的步骤512和514相似。
在替换的实施例中,I/O管理模块108也能在两个硬件设备之间路由对等事务。例如,处理器通过给第一硬件设备(例如硬件设备A)发出访问请求启动对等事务,该第一硬件设备又发出指向第二硬件设备(例如硬件设备B)的上游事务。在一个实施例中,发出原始访问请求的处理器设置为两个硬件设备的所有者。因此,由于上游事务的目标地址(即硬件设备B的目标地址)在两个硬件设备的本地地址映射表中相同,因此不需要额外的修改以支持对等事务。在另一实施例中,计算机系统能由BIOS或包括在I/O管理模块108中的系统软件配置以在所有的处理器地址映射表中以相同的偏置分配对等窗孔,使得设备“所有权”不重要。在这个方式中,由于每个硬件设备的所有上游对等事务的目标地址是相同的,因此对等事务路由“只是工作”而不管哪个处理器启动了对等事务。
有利地,包括在多CPU系统中的不同种类的CPU能访问包括在芯片组中的任何集成的硬件设备或接附于外部总线(例如PCI、PCIe等)的任何外围硬件设备,而不用修改CPU、操作系统或硬件设备。本发明的实施例允许组装更复杂和有趣的计算系统。例如,具有相对“弱”的处理器的片上系统能通过连接到包括高性能CPU和/或GPU的对接站容易地“升级”以提供更多的处理性能。另外,两个CPU能是不同种类的和/或由不同厂商制造,这允许组装甚至更有趣的多CPU计算机系统。
本发明的一个实施例可以实施为与计算机系统使用的程序产品。程序产品的程序限定了实施例(包括本文描述的方法)的功能且能包含在各种计算机可读存储介质上。示例的计算机可读存储介质包括但不限于:(i)其上信息被永久存储的不可写存储介质(例如,计算机中的只读存储器设备,诸如由CD-ROM驱动器可读取的CD-ROM盘、闪存、ROM芯片或任何类型的固态非易失半导体存储器);和(ii)其上存储可改变信息的可写存储介质(例如,软盘驱动器中的软盘或硬盘驱动器或任何类型的固态随机存取半导体存储器)。
上面已经参考特定实施例对本发明进行了描述。但是,本领域的技术人员将理解的是,在不背离如所附的权利要求阐明的本发明的较宽的精神和范围的情况下,可以对特定实施例作出各种修改和改变。因此前述的描述和附图是示例性的而不是限制性的。
Claims (10)
1.用于将信号从处理单元路由到包括在计算机系统中的一个或多个设备而不造成与包括在该计算机系统中的其他处理单元冲突的设备控制器,包括:
一个或多个硬件设备;和
输入/输出(I/O)控制器,该输入/输出(I/O)控制器配置为:
从第一处理器接收第一地址映射表,该第一地址映射表包括该第一处理器配置为访问的第一组硬件设备的存储器映射的I/O窗孔;
从第二处理器接收第二地址映射表,该第二地址映射表包括该第二处理器配置为访问的第二组硬件设备的存储器映射的I/O窗孔;
通过将该第一地址映射表和该第二地址映射表组合产生全局地址映射表;
从该第一处理器接收第一访问请求;和
基于包括在该全局地址映射表中的地址映射将该第一访问请求路由给与该第一访问请求相关的硬件设备。
2.根据权利要求1的设备控制器,其中至少一个硬件设备包括在该第一组硬件设备和该第二组硬件设备中。
3.根据权利要求1的设备控制器,其中该I/O控制器进一步配置为:
通过将第一全局地址部分加到与该第一访问请求相关的第一目标地址产生第一全局目标地址;
基于该全局地址映射表将该第一全局目标地址转换为第一设备地址;
将该第一处理器设置为该硬件设备的所有者;
从该转换的目标地址移除该全局地址部分;和
将该第一访问请求递送给该硬件设备。
4.根据权利要求3的设备控制器,其中加该第一全局地址部分包括预加位给包括在该第一访问请求中的该第一目标地址。
5.根据权利要求4的设备控制器,其中当该第一访问请求接收自该第一处理器时,该位具有值零,和当该第一访问请求接收自该第二处理器时,该位具有值1。
6.根据权利要求1的设备控制器,其中该I/O控制器进一步配置为:
从该硬件设备接收返回事务;
确定该第一处理器是该硬件设备的该所有者;
通过将第二全局地址部分加到与该返回事务相关的第二目标地址产生第二全局目标地址;
使用该全局地址映射表将该第二全局目标地址转换为第二设备地址;
基于包括在该全局地址映射表中的地址映射将该返回事务路由给该第一处理器;
从该转换的目标地址移除该第二全局地址部分;和
将该返回事务递送给该第一处理器。
7.根据权利要求6的设备控制器,其中加该全局地址部分包括预加位给包括在该返回事务中的该第二目标地址。
8.根据权利要求7的设备控制器,其中该返回事务包括中断或设备完成消息。
9.根据权利要求1的设备控制器,其中该第一处理器和第二处理器配置为执行不同的指令集和不同的操作系统。
10.一种用于提供由处理器访问包括在计算机系统中的硬件设备而不造成与包括在该计算机系统中的其他处理器冲突的方法,该方法包括:
从第一处理器接收第一地址映射表,该第一地址映射表包括该第一处理器配置为访问的第一组硬件设备的存储器映射的输入/输出(I/O)窗孔;
从第二处理器接收第二地址映射表,该第二地址映射表包括该第二处理器配置为访问的第二组硬件设备的存储器映射的I/O窗孔;
通过将该第一地址映射表和该第二地址映射表组合产生全局地址映射表;
从该第一处理器接收第一访问请求;和
基于包括在该全局地址映射表中的地址映射将该第一访问请求路由给与该第一访问请求相关的硬件设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/332,009 US9032101B1 (en) | 2008-12-10 | 2008-12-10 | Chipset support for binding and migrating hardware devices among heterogeneous processing units |
US12/332,009 | 2008-12-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751352A true CN101751352A (zh) | 2010-06-23 |
CN101751352B CN101751352B (zh) | 2012-08-08 |
Family
ID=42365850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102504990A Active CN101751352B (zh) | 2008-12-10 | 2009-12-10 | 不同种类处理单元中对绑定和迁移硬件设备的芯片组支持 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9032101B1 (zh) |
JP (1) | JP5011584B2 (zh) |
KR (1) | KR101183779B1 (zh) |
CN (1) | CN101751352B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751371B (zh) * | 2008-12-10 | 2012-08-08 | 辉达公司 | 在不同种类处理单元中对非统一存储器访问的芯片组支持 |
CN104462010A (zh) * | 2013-09-13 | 2015-03-25 | 联想(北京)有限公司 | 一种电子设备及状态控制方法 |
CN107209725A (zh) * | 2015-12-17 | 2017-09-26 | 华为技术有限公司 | 处理写请求的方法、处理器和计算机 |
CN107273311A (zh) * | 2012-05-09 | 2017-10-20 | 英特尔公司 | 使用多个页表的执行 |
CN109937403A (zh) * | 2016-11-10 | 2019-06-25 | 微软技术许可有限责任公司 | 无线地提供因操作系统而异的特征 |
CN110389930A (zh) * | 2018-04-16 | 2019-10-29 | 意法半导体(鲁塞)公司 | 用于管理在源设备和目标设备之间路由的事务的方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102934086B (zh) * | 2010-06-10 | 2017-08-25 | 富士通株式会社 | 多核处理器系统、电力控制方法及电力控制程序 |
US9910700B2 (en) * | 2015-08-26 | 2018-03-06 | Netapp, Inc. | Migration between CPU cores |
US20210311895A1 (en) * | 2020-11-16 | 2021-10-07 | Intel Corporation | Disaggregation of computing devices using enhanced retimers with circuit switching |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06187286A (ja) | 1992-12-15 | 1994-07-08 | Hitachi Ltd | バス変換アダプタ |
JP3454294B2 (ja) * | 1994-06-20 | 2003-10-06 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マルチプル・バス情報処理システム及びブリッジ回路 |
JPH08305658A (ja) * | 1995-05-10 | 1996-11-22 | Hitachi Ltd | I/oバス |
US5682512A (en) * | 1995-06-30 | 1997-10-28 | Intel Corporation | Use of deferred bus access for address translation in a shared memory clustered computer system |
JPH09128346A (ja) | 1995-11-02 | 1997-05-16 | Mitsubishi Electric Corp | 階層バスシステム |
US5893144A (en) | 1995-12-22 | 1999-04-06 | Sun Microsystems, Inc. | Hybrid NUMA COMA caching system and methods for selecting between the caching modes |
US6438660B1 (en) * | 1997-12-09 | 2002-08-20 | Intel Corporation | Method and apparatus for collapsing writebacks to a memory for resource efficiency |
US6418514B1 (en) | 1998-02-17 | 2002-07-09 | Internationl Business Machines Corporation | Removal of posted operations from cache operations queue |
JP2000029824A (ja) * | 1998-07-09 | 2000-01-28 | Hitachi Ltd | 階層型バスシステムとバス変換装置 |
US6275907B1 (en) | 1998-11-02 | 2001-08-14 | International Business Machines Corporation | Reservation management in a non-uniform memory access (NUMA) data processing system |
US6701399B1 (en) | 2000-02-29 | 2004-03-02 | Compaq Information Technologies Group | Priority mechanism for scheduling isochronous and asynchronous transactions on a shared bus |
US6754739B1 (en) | 2000-08-31 | 2004-06-22 | Hewlett-Packard Development Company | Computer resource management and allocation system |
US6658538B2 (en) | 2001-06-21 | 2003-12-02 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control |
US7284077B2 (en) | 2003-09-12 | 2007-10-16 | International Business Machines Corporation | Peripheral interface system having dedicated communication channels |
JP4376040B2 (ja) * | 2003-11-27 | 2009-12-02 | 株式会社日立製作所 | 複数のプロセッサを用いて情報処理を行う装置及び方法 |
US7290112B2 (en) | 2004-09-30 | 2007-10-30 | International Business Machines Corporation | System and method for virtualization of processor resources |
JP2009110032A (ja) * | 2006-01-16 | 2009-05-21 | Sony Computer Entertainment Inc | ブリッジ、情報処理装置、情報処理システムおよびグローバルアドレス管理方法 |
US7596654B1 (en) | 2006-01-26 | 2009-09-29 | Symantec Operating Corporation | Virtual machine spanning multiple computers |
JP2008009926A (ja) * | 2006-06-30 | 2008-01-17 | Toshiba Corp | 情報処理装置、情報処理システムおよびアドレス変換方法 |
US20080162873A1 (en) | 2006-12-28 | 2008-07-03 | Zimmer Vincent J | Heterogeneous multiprocessing |
US7603428B2 (en) | 2008-02-05 | 2009-10-13 | Raptor Networks Technology, Inc. | Software application striping |
CN101216781B (zh) * | 2007-12-28 | 2011-03-23 | 中国科学院计算技术研究所 | 一种多处理器系统、装置及方法 |
US7734900B2 (en) | 2008-01-11 | 2010-06-08 | International Business Machines Corporation | Computer configuration virtual topology discovery and instruction therefore |
-
2008
- 2008-12-10 US US12/332,009 patent/US9032101B1/en active Active
-
2009
- 2009-12-10 KR KR20090122330A patent/KR101183779B1/ko active IP Right Grant
- 2009-12-10 CN CN2009102504990A patent/CN101751352B/zh active Active
- 2009-12-10 JP JP2009280697A patent/JP5011584B2/ja active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751371B (zh) * | 2008-12-10 | 2012-08-08 | 辉达公司 | 在不同种类处理单元中对非统一存储器访问的芯片组支持 |
CN107273311A (zh) * | 2012-05-09 | 2017-10-20 | 英特尔公司 | 使用多个页表的执行 |
CN107273311B (zh) * | 2012-05-09 | 2020-10-23 | 英特尔公司 | 计算设备、用于计算的方法和用于计算的装置 |
US11119918B2 (en) | 2012-05-09 | 2021-09-14 | Intel Corporation | Execution using multiple page tables |
CN104462010A (zh) * | 2013-09-13 | 2015-03-25 | 联想(北京)有限公司 | 一种电子设备及状态控制方法 |
CN107209725A (zh) * | 2015-12-17 | 2017-09-26 | 华为技术有限公司 | 处理写请求的方法、处理器和计算机 |
CN109937403A (zh) * | 2016-11-10 | 2019-06-25 | 微软技术许可有限责任公司 | 无线地提供因操作系统而异的特征 |
CN109937403B (zh) * | 2016-11-10 | 2024-05-03 | 微软技术许可有限责任公司 | 无线地提供因操作系统而异的特征 |
CN110389930A (zh) * | 2018-04-16 | 2019-10-29 | 意法半导体(鲁塞)公司 | 用于管理在源设备和目标设备之间路由的事务的方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5011584B2 (ja) | 2012-08-29 |
CN101751352B (zh) | 2012-08-08 |
US9032101B1 (en) | 2015-05-12 |
KR101183779B1 (ko) | 2012-09-17 |
KR20100067066A (ko) | 2010-06-18 |
JP2010152892A (ja) | 2010-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751371B (zh) | 在不同种类处理单元中对非统一存储器访问的芯片组支持 | |
CN101751352B (zh) | 不同种类处理单元中对绑定和迁移硬件设备的芯片组支持 | |
US10282192B1 (en) | Updating device code through a bus | |
US10241951B1 (en) | Device full memory access through standard PCI express bus | |
US5761462A (en) | Method and system for supporting peripheral component interconnect (PCI) peer-to-peer access across multiple PCI host bridges within a data-processing system | |
US8683110B2 (en) | I/O system and I/O control method | |
EP2257880B1 (en) | System and method for transforming pcie sr-iov functions to appear as legacy functions | |
US20050091432A1 (en) | Flexible matrix fabric design framework for multiple requestors and targets in system-on-chip designs | |
JP6753412B2 (ja) | コンピュータ、デバイス割当管理方法及びプログラム | |
CN102819447A (zh) | 一种用于多根共享系统的直接i/o 虚拟化方法和装置 | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
US11928070B2 (en) | PCIe device | |
EP3716084A1 (en) | Apparatus and method for sharing a flash device among multiple masters of a computing platform | |
US20220327228A1 (en) | PCIe FUNCTION AND OPERATING METHOD THEREOF | |
US8352667B2 (en) | I/O connection system and I/O connection method | |
JP2002539524A (ja) | 周辺デバイス割込みを処理するための装置および方法 | |
CN103842980A (zh) | 协议中立织物 | |
JP4359618B2 (ja) | コンフィグレーション・レジスター・アクセス方法、設定方法、集積回路部品、コンピューター・システム、製品 | |
US5761461A (en) | Method and system for preventing peripheral component interconnect (PCI) peer-to-peer access across multiple PCI host bridges within a data processing system | |
CN101676894B (zh) | 面向集中地址译码的非pci片上总线的pci虚拟化装置及方法 | |
CN114281726B (zh) | 用于soc芯片的系统架构及外设通信方法 | |
JP4780333B2 (ja) | データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム | |
CN116225996A (zh) | 一种映射系统、映射方法、设备及介质 | |
JP2006331452A (ja) | バス制御方式及びコンピュータシステム |
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 |