管芯上系统结构块的控制装置及方法本发明专利申请是2010年3月30日提交的申请号为201010157282.8,名称为“管芯上系统结构块的控制”的发明专利申请的分案申请。
技术领域:
:本申请一般涉及电子学领域。尤其,本发明的一个实施例涉及管芯上系统结构(OSF)块的控制技术。
背景技术:
::在电子设计中,半导体知识产权(IP)块(也称之为“IP核”或“逻辑核”或更一般地称之为“逻辑块”)是逻辑电路、单元或芯片布局设计的可重复使用的单元。例如,可以使用或重复使用这种逻辑块,作为各种芯片或逻辑设计中的构造模块。当IP块的数量增加时,把它们集成到系统中就变得更具挑战性。同样,通过设计,IP块可能不包括复杂的电路(例如,为了使成本下降)。为此,需要通过主处理器而不是IP块中的逻辑来执行一些与地址处理相关联的任务。例如,通过在用户和主处理器的内核模式之间进行频繁切换,这可以引起与地址处理相关联的延迟。附图说明参考附图提供详细的说明。在附图中,标号的最左数字表示该标号首次出现的那幅附图。在不同附图中使用相同标号表示相似的或等同的项。图1和6-7示出计算系统的实施例的方框图,可以利用这些计算系统来实现这里讨论的各个实施例。图2示出根据一个实施例的用户级代码段。图4示出根据一些实施例的在OS页面表和TLB中的样本条目。图3和5示出根据一些实施例的方法的流程图。具体实施方式在下面的说明中,阐明了许多特定的细节,以便提供对于各个实施例的透彻理解。然而,可以实现一些实施例而无需这些特定的细节。在其它情况中,未曾详细地描述众知的方法、过程、组件和电路,为的是不使特定实施例模糊不清。某些实施例涉及这样一些技术,这些技术用于控制经由管芯上系统结构(OSF)而耦合的IP或逻辑块。在一个实施例中,可以按用户级来确立控制。此外,OSF可以使处理器核与IP块对接(诸如在一些实施例中的输入/输出设备)。IP块一般可能由于成本原因而不包括存储器管理单元(MMU),所以OSF需要把物理地址传送给IP块。对于IP块,提供对地址处理的支持的一个方式是使用内核中设备驱动器。这种设备驱动器可以具有基于物理地址而操作的特权。然而,由于在用户和内核模式和/或页面表移动(pagetablewalk)之间进行频繁切换的成本很高,所以这个模型对于更细粒度的加速度可能是无效的。然而,用户级的控制面对着如何把物理地址传送到IP块这一挑战。至此,一个实施例利用物理地址阴影来应对这个挑战。例如,可以在操作系统(OS)中实施系统调用,以创建物理页码数字或地址的阴影(例如,使用其它无效的物理地址范围),这里也把这称之为“重新映射”。此外,硬件(例如,在与OSF进行通信的一个位置处)可以从阴影地址(这里还称之为“重新映射-1”)获取真实物理地址。在一个实施例中,用于“重新映射-1”的硬件可以包含使该地址最高的一或二位翻转或逆反。在一个实施例中,应用程序(例如,按用户级执行的)可以使用来自用户空间的普通x86存储,以把存储器地址和其它参数传送到IP块。这将比捕获到内核中访问页面表快一个数量级,并且比在IP块中构建额外的MMU便宜好几个数量级。此外,在一些实施例中,用户应用程序可以触发具有四个特征的IP块执行:(1)无指令集架构(ISA)扩展;(2)无过多的用户内核模式转换;(3)无额外的MMU;和/或(4)处理器核和IP块可以共享多个并非固定但只在运行时间才知道的地址。这些特征可以导致限制更少的IP块的使用。这还允许 通过OSF的细粒度加速器的推广应用。可以把这里讨论的技术应用于各种计算系统,诸如参考图1和6、7所讨论的那些计算系统。尤其,图1示出根据本发明一个实施例的计算系统100的方框图。系统100可以包括一个或多个代理102-1到102-M(这里统称为“多个代理102”或更一般地称为“代理102”)。在一个实施例中,一个或多个代理102可以是计算系统(诸如参考图6-7所讨论的计算系统)的任何组件。如图1所示,代理102可以经由结构104(诸如OSF)进行通信。因此,在一个实施例中,代理102和结构104可以出现在同一个集成电路管芯上。如这里所讨论的,“OSF”是指管芯上系统结构,该结构是可调整的、可配置的和/或针对特定产品的。例如,每个代理102可以是桥路(例如,用于耦合到另一个结构)、IP块或经由结构104而耦合的电子设备的另一个组件。在一个实施例中,结构104可以包括计算机网络,该网络允许各个代理(诸如计算设备)传送数据。在一个实施例中,结构104可以包括经由串行(例如,点对点)链路和/或共享通信网络进行通信的一个或多个互连(或互连网络)。例如,一些实施例可以促进链路上的组件调试或验证,这些链路允许与全缓冲的双列直插式存储器模块(FBD)进行通信,例如,其中FBD链路是用于把存储器模块耦合到主控制器设备(诸如处理器或存储器枢纽)的串行链路。可以从FBD信道主机发送调试信息,以致可以通过信道业务跟踪捕获工具(诸如一个或多个逻辑分析器)沿该信道观察调试信息。在一个实施例中,系统100可以支持分层的协议方案,它可以包括物理层、链路层、路由层、传输层和/或协议层。对于点对点或共享网络,结构104可以进一步促进从一个协议(例如,高速缓存处理器或高速缓存知道存储器控制器)到另一个协议的数据传输(例如,以分组的形式)。同样,在一些实施例中,结构104可以提供遵守一个或多个高速缓存一致性协议的通信。另一方面,结构104可以遵守非一致性协议。此外,如图1中箭头方向所示,代理102可以经由结构104发送和/或接收数据。因此,一些代理可以利用单向链路进行通信,而其它代理可以利用双向链路进行通信。例如,一个或多个代理(诸如代理102-M)可以发送数据(例如,经由单向链路106),其它代理(诸如代理102-2)可以接收数据(例如, 经由单向链路108),而一些代理(诸如代理102-1)可以发送和接收数据(例如,经由双向链路110)。在一些实施例中,链路106-110可以是OSF界面,这些界面提供协议和/或信令以允许IP块跨越多个设计而进行互操作。在一个实施例中,使代理102耦合的OSF界面(例如,链路106-110)可以提供称之为基本信道和边带信道的两个端口。基本信道可以:(a)是用于在对等层和/或上游之间传送数据的高性能界面;(b)支持存储器(例如,32位、64位)、输入/输出(IO)、配置和消息交易;(c)支持外围组件互连(PCI)排序规则和/或枚举;(d)支持分离交易协议;和/或(e)使PCI-e标头信息映射。边带信道可以:(i)提供标准界面以传送所有的边带信息且消除专用引线;(ii)提供点对点网络;(iii)用于状态、功率管理、配置阴影、测试模式等;和/或(iv)用于低性能(例如,不打算用于基本数据传输)。图2示出根据本发明一些实施例的用户级代码段,用于有和没有OSF-附加IP块的快速傅里叶变换(FFT)。通过本发明的一个实施例使部分c)成为可能,如这里进一步讨论的那样。内核中设备驱动器、IP块可以通过诸如OSF之类的基于分组的互连,与处理器核进行通信。OS的设备驱动器可以控制IP块。在特定的情况(诸如网络接口卡(NIC)驱动器)中,可以固定存储器缓冲器,以致向驱动器传送开始地址的任务是无实际意义的。在一些实施例中,处理更一般的使用情况,例如,每当在IP块上调用一个功能时,“缓冲器”地址就改变。为了调用IP块上从任意的用户空间虚拟地址(VA)开始的执行,用户应用程序可以进行系统调用,这捕获到内核中并且触发设备驱动器(例如,见图2b))。通过在存储器的页面表中进行查找(而不是用转换后备缓冲器(TLB)),设备驱动器(诸如图6的设备驱动器)得到物理地址(PA)。然后把PA传送到IP块。然而,频繁的用户-内核模式切换和页面表移动很容易花费数千个处理器时钟,严重地偏离了IP块中加速度的性能优点。此外,一些IO设备的用户级设备驱动器可以约束该应用程序和内核,以共享一些预先分配的、固定的存储器缓冲器,或需要存储系统中额外的MMU来把应用程序虚拟地址转换成物理地址。参考图2,部分c)示出根据一个实施例提供的编程模型。例如,应用程序在malloc()之后作出一个系统调用。此后,能够使用到用户空间虚拟地址(图2 中的va_alias)的普通(例如,x86)存储指令把数据地址传送到IP块。下一幅图将示出IP块如何接收物理存储器地址的一个例子,所述物理存储器地址支持应用程序虚拟地址。更具体地,图3示出根据一个实施例的、执行重新映射操作的方法300的流程图。该重新映射操作可以被实现成OS中的系统调用,以创建物理页码或物理地址的阴影,例如,使用其它无效的或未使用的物理地址范围。在一个实施例中,可以通过参考图1所讨论的基本信道来执行参考方法300所讨论的数据或命令通信。在一个实施例中,在图3的重新映射的性能之后,“重新映射-1”操作可以使用OSF中的硬件,该硬件从阴影地址中获取真实物理地址。在一个实施例中,可以通过使该地址的最高位中的一位或两位翻转(或在一些实施例中,使不止两位翻转)而实现“重新映射-1”操作。在一些实施例中,任何时候当使用物理地址时(诸如在系统互连中或在IP块内部),可以执行“重新映射-1”操作、阴影到真实物理转换。在一些情况中,在系统互连中执行这个操作把这个操作置于不旨在于IP块的存储器交易的关键路径上。在加速器内部执行这个操作可能需要把“重新映射-1”逻辑构建在每一个IP块中。另一方面,可以在OSF中提供这样的硬件。具有如此的支持,应用程序可以使用单个X86存储指令来指明IP块使用的存储器地址。参考图1-3,在操作302处,对于VA的别名(Alias_VA,这里也可互换地称之为“VA_Alias”),可以在用户地址空间中分配许多字节(例如,图2c中的“大小)。在操作304处,可以确定VA的PA。在操作306处,可以根据PA确定SA(阴影地址)。例如,在操作306处,Remap_to_shadow()(重新映射_到_阴影())可以提供一种具有简单反函数的映射,以致OSF可以容易地获取真实物理地址。在一些系统中,实际安装的存储器要少于物理地址空间的一半。在如此的机器中,可以通过使该地址的最高的一或两位翻转而实现Remap()和重新映射-1()这两者,例如,其中:Remap(PA)=0x80000000XORPARemap-1(SA)=0x80000000XORSA在一些实施例中,应用程序的未经加速的部分可以继续使用原始的VA。 此外,在malloc()之后可以仅仅执行syscall_OSF_remap()一次,例如,在应用程序初始化阶段(例如,见图2c))。在一个实施例中,通过OSF硬件可以在每次调用IP块功能时执行重新映射-1(SA)(Remap-1(SA))。在一个实施例中,OS需要使阴影页面表与原始的阴影页面表保持一致。在操作308处,可以添加用于Alias_VA和SA的页面表条目。在一个实施例中,可以在操作308处将该条目的页面属性设置为不可高速缓存的(诸如参考图4所讨论的)。在操作310处,如果已达到操作302的分配大小的结束处,则可以返回Alias_VA;否则,可以在操作314处更新VA和Alias_VA(例如,可以通过选择页面大小来递增VA和Alias_VA)。在操作314之后,方法300重新开始操作304。图4示出根据一些实施例的OS页面表和TLB中的样本条目。例如,0x0200400是通过syscall_OSF_remap()分配的用户虚拟地址。作为VA0x0000b000的别名,物理页面0x30a07000作为其后盾。但是在页面表中,我们故意地使最高位翻转,所以物理页面变成0xb0a0700(0x80000000XOR0x30a0700=0xb0a07000)。在一个实施例中,TLB和TLB错过处理器并不关心PA是否是阴影。如图4所示,作为作出系统调用的结果,改变用于调用应用程序的地址映射。在该例子中,比0x40000000高的任何PA在基线平台中是无效的。把所有的别名虚拟地址都映射到物理地址空间402的无效区域。两个系统中的有效的PA范围:0x0~0x40000000(包括所安装的存储器和存储器映射IO(MMIO))。图5示出当应用程序在有或没有OSF中的特定逻辑的平台上执行X86存储指令“stregister->0x02004000”时的比较(分别为图5的部分(B)和(A))。在两种情况中,处理器(CPU)MMU根据图4(B)所示的页面表把VA转换成PA0xb0a07000。因为页面的属性位表示不可高速缓存的,所以上述写入会绕过处理器高速缓存并且直接到达系统互连(图5中的操作2)。在图5(A)中,由于PA超过有效的PA地址范围(例如,有效的PA范围为:0x0~0x40000000(包括所安装的存储器和MMIO)),所以硬件引发异常。在图5(B)中,OSF拾取其它无效的物理地址0xb0a07000(操作3),对其执 行“重新映射-1”(操作4),并且把写入交易转换成命令分组,IP块将从该命令分组得到真实物理地址0x30a07000(操作5)。可以使用各种类型的计算系统来执行这里讨论的各个实施例(诸如参考图1-5所讨论的实施例)。例如,图6示出计算系统600的一个实施例的方框图。图1的一个或多个代理102可以包括计算系统600的一个或多个组件。计算系统600可以包括耦合到互连网络(或总线)604的一个或多个中央处理单元(CPU)602(这里可以把它们统称为“多个处理器602”,或更一般地,称为“处理器602”)。处理器602可以是任何类型的处理器,诸如通用处理器、网络处理器(它可以处理在计算机网络605上传送的数据)等(包括减少指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。此外,处理器602可以具有单核或多核设计。具有多核设计的处理器602可以与不同类型的处理器核集成在同一集成电路(IC)管芯上。同样,具有多核设计的处理器602可以被实现成对称或不对称的多处理器。处理器602可以包括一个或多个高速缓存和/或存储器管理单元(MMU,诸如参考图1-5所讨论的)(未示出)。在各个实施例中,高速缓存可以是专用的和/或共享的。一般,高速缓存存储与存储在其它地方或早先计算的原始数据相对应的数据。为了减小存储器访问延迟,一旦把数据存储在高速缓存中,就可以通过访问高速缓存拷贝而非再取得或重新计算原始数据,进行将来的使用。高速缓存可以是任何类型的高速缓存,诸如一级(L1)高速缓存、二级(L2)高速缓存、三级(L3)高速缓存、中级高速缓存、最后一级高速缓存(LLC)等,以存储由系统600的一个或多个组件使用的电子数据(例如,包括指令)。如图6所示,OSF104可以耦合在一个或多个IP块603和处理器602之间(例如,通过互连604)。如参考图1-5所讨论,OSF104可以包括用于执行“重新映射-1”操作的逻辑。可以把芯片组606附加地耦合到互连网络604。此外,芯片组606可以包括存储器控制枢纽(MCH)608。MCH608可以包括耦合到存储器612的存储器控制器610。存储器612可以存储数据,例如,包括由处理器602或与计算系统600的组件进行通信的任何其它设备所执行的指令序列。在一个实施例中,可以使用存储器612来存储数据,诸如参考图1-5所讨论的那样(诸如页面表)。 同样,在本发明的一个实施例中,存储器612可以包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)等。还可以使用非易失性存储器,诸如硬盘。可以把另外的设备耦合到互连网络604,诸如多个处理器和/或多个系统存储器。MCH608还可以包括耦合到显示设备616的图形接口614(例如,在一个实施例中,经由图形加速器进行耦合)。在一个实施例中,图形接口614可以经由加速的图形端口(AGP)耦合到显示设备616。在本发明的一个实施例中,例如,显示设备616(诸如平板显示器)可以通过信号转换器而耦合到图形接口614,该信号转换器把存储在存储设备(诸如视频存储器或系统存储器(例如,存储器612))中的图像的数字表示转换成通过显示器616解译和显示的显示信号。如图6所示,枢纽接口618可以把MCH608耦合到输入/输出控制枢纽(ICH)620。ICH620可以提供到输入/输出(I/O或IO)设备的接口,输入/输出设备耦合到计算系统600。ICH620可以通过外围桥路(或控制器)624耦合到总线622,所述外围桥路可以是符合PCIe规格的外围组件互连(PCI)桥路、通用串行总线(USB)控制器等。桥路624可以提供在处理器602和外围设备之间的数据路径。可以利用其它类型的布局。同样,可以使多根总线耦合到ICH620,例如,通过多个桥路或控制器。例如,总线622可以符合PCI本地总线规格,修订版本3.0,2004,可从美国Oregon州Portland的PCI特别兴趣小组得到(此后称之为“PCI总线”)。另一方面,总线622可以包括符合PCI-X规格(Rev.3.0a,2003)(此后称之为“PCI-X总线”)和/或可从上述PCI特别兴趣小组得到的PCI特别(PCIe)规格(PCIe规格,修订版本2.0,2006)的总线。此外,总线622可以包括总线系统的其它类型和配置。此外,在本发明的各个实施例中,耦合到ICH620的其它外围设备可以包括集成的驱动电子线路(IDE)或小型计算机系统接口(SCSI)硬驱动、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动、数字输出支持(例如,数字视频接口(DVI))等。总线622可以耦合到音频设备626、一个或多个盘驱动628以及网络适配 器630(在一个实施例中,是NIC)。在一个实施例中,耦合到总线622的网络适配器630或其它设备可以经由切换逻辑612(在一些实施例中,可以与图4的逻辑412相同或相似)与芯片组606进行通信。其它设备可以耦合到总线622。同样,在本发明的一些实施例中,各个组件(诸如网络适配器630)可以耦合到MCH608。此外,可以将处理器602和MCH608组合起来以形成单个芯片。另外,计算系统600可以包括易失性和/或非易失性存储器(或存储)。例如,非易失性存储器可以包括下列的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、盘驱动(例如,628)、软盘、光盘ROM(CD-ROM)、数字通用盘(DVD)、闪存、磁光盘或能够存储电子数据(例如,包括指令)的其它类型的非易失性机器可读出介质。在一个实施例中,存储器612可以包括下列的一个或多个:操作系统(O/S)632、应用程序634和/或设备驱动器636(诸如参考图1-5讨论的OS、应用程序和/或设备驱动器)。存储器612还可以包括专用于MMIO操作的区域。作为存储器管理操作的一部分,可以把存储在存储器612中的程序和/或数据交换到盘驱动628中。应用程序634可以执行(例如,在处理器602上)而与一个或多个计算设备进行一个或多个分组的通信,所述计算设备与网络605耦合。在一个实施例中,分组可以是一个或多个码元和/或值的序列,所述一个或多个码元和/或值可以通过从至少一个发送器发送到至少一个接收机(例如,在诸如网络605这样的网络上)的一个或多个电信号进行编码。例如,每个分组可以具有标头,所述标头包括在路由和/或处理分组中可以利用的各种信息,诸如源地址、目的地地址、分组类型等。每个分组还具有有效负荷,所述有效负荷包括上述分组正在计算机网络(诸如网络605)上的各个计算设备之间传送的原始数据(或内容)。在一个实施例中,应用程序634可以利用O/S632与系统600的各个组件进行通信,例如,通过设备驱动器636。因此,设备驱动器636可以包括网络适配器(530)特定命令,以提供O/S632和网络适配器630或耦合到系统600(例如,经由芯片组606进行耦合)的其它I/O设备之间的通信接口。在一个实施例中,O/S632可以包括网络协议栈。协议栈一般是指一组过程或程序,可以执行所述过程或程序以处理在网络(605)上发送的分组,其中所述分组可以符合特定的协议。例如,可以使用TCP/IP栈来处理TCP/IP(传输控制协议/互联网协议)分组。设备驱动器636可以,例如,经由协议栈,指示要处理的缓冲器638。网络605可以包括任何类型的计算机网络。网络适配器630还可以包括直接存储器存取(DMA)引擎652,它把分组写入被分配给可用的描述符的缓冲器(例如,存储在存储器612)中,以在网络605上发送和/或接收数据。根据本发明的一个实施例,图7示出安排在点对点(PtP)配置中的计算系统700。尤其,图7示出一个系统,其中通过许多点对点接口而使处理器、存储器和输入/输出设备互连。可以通过系统700的一个或多个组件,来执行参考图1-6所讨论的操作。如图7所示,系统700可以包括若干个处理器,为了清楚起见,只有示出其中的两个处理器702和704。处理器702和704的每一个都可以包括本地存储器控制器枢纽(MCH)706和708,以启动与存储器710和712(可以存储MMIO区域,诸如参考权利要求2-3所讨论)的通信。存储器710和/或712可以存储各种数据,诸如参考图6的存储器612所讨论的那些数据。如图7所示,处理器702和704还可以包括一个或多个高速缓存,诸如参考图4和6所讨论的那些。在一个实施例中,处理器702和704可以是参考图6所讨论的处理器602中的一个。处理器702和704可以分别使用PtP接口电路716和718,经由点对点(PtP)接口714来交换数据。同样,处理器702和704的每一个可以使用点对点接口电路726、728、730和732,经由独立的PtP接口722和724,与芯片组720交换数据。芯片组720还可以,例如,使用PtP接口电路737经由高性能图形接口736与高性能图形电路734交换数据。在至少一个实施例中,OSF104可以把处理器702、704(例如,通过PtP接口)耦合到一个或多个IP块603。然而,本发明的其它实施例可以存在于图7的系统700中的其它电路、逻辑单元或设备中。此外,在图7中描述的若干个电路、逻辑单元或设备中,可以分布本发明的其它实施例。同样,处理器702、 704可以包括MMU(诸如参考图5所讨论的)。此外,OSF104可以包括重新映射-1逻辑,或可以使逻辑位于系统700中的其它地方,诸如在芯片组720、通信设备746、耦合到总线740/744的设备等中。芯片组720可以使用PtP接口电路741与总线740进行通信。总线740可以具有与其通信的一个或多个设备,诸如总线桥路742和I/O设备743。总线桥路742可以经由总线744与其它设备(诸如键盘/鼠标745、通信设备746(诸如调制解调器、网络接口设备或可以与计算机网络605通信的其它通信设备)、音频I/O设备和/或数据存储设748)进行通信。数据存储设备748可以存储代码749,处理器702和704可以执行代码749。在本发明的各个实施例中,例如,可以把这里参考图1-7所讨论的操作实施为硬件(例如,电路)、软件、固件、微码或它们的组合,可以提供这些作为计算机程序产品,例如,包括其上存储有用于对计算机进行编程以执行这里讨论的过程的指令(或软件过程)的机器可读出或计算机可读出介质。同样,通过举例的方式,术语“逻辑”可以包括软件、硬件或软件和硬件的组合。机器可读出介质可以包括存储设备,诸如相对于图1-7所讨论的那些。另外,可以下载如此的计算机可读出介质作为计算机程序产品,其中可以经由通信链路(例如,总线、调制解调器或网络连接)通过在载波或其它传播介质中提供的数据信号把程序从远程计算机(例如,服务器)传送到请求计算机(例如,客户)。参考说明书,“一个实施例”或“实施例”意味着可以在至少一个实施方式中包括联系实施例描述的特定特征、结构或特性。在说明书中各处出现的短语“在一个实施例中”可以涉及或可以不涉及同一实施例。同样,在说明书和权利要求中,可以使用术语“耦合”和“连接”以及它们的衍生物。在本发明的一些实施例中,可以使用“连接”来表示两个或多个元件是相互直接物理接触或电接触的。“耦合”意味着两个或多个元件直接物理接触或电接触。然而,“耦合”还意味着两个或多个元件可能相互没有直接接触,但是仍相互合作或交互作用。因此,虽然已经以对于结构特征和/或方法行为为特定的语言来描述了本发明的各个实施例,但是应该理解,要求权益的主题不局限于所描述的特定特 征或行为。而是,揭示特定特征和行为作为实施所要求的主题的示例形式。当前第1页1 2 3 当前第1页1 2 3