CN100481027C - 地址空间仿真 - Google Patents

地址空间仿真 Download PDF

Info

Publication number
CN100481027C
CN100481027C CNB2006101723018A CN200610172301A CN100481027C CN 100481027 C CN100481027 C CN 100481027C CN B2006101723018 A CNB2006101723018 A CN B2006101723018A CN 200610172301 A CN200610172301 A CN 200610172301A CN 100481027 C CN100481027 C CN 100481027C
Authority
CN
China
Prior art keywords
memory address
address
processor
config memory
configuration data
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.)
Expired - Fee Related
Application number
CNB2006101723018A
Other languages
English (en)
Other versions
CN1991797A (zh
Inventor
S·M·达塔
R·格赖纳
F·宾斯
K·蒂鲁瓦卢尔
R·帕塔萨拉蒂
M·帕塔萨拉蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1991797A publication Critical patent/CN1991797A/zh
Application granted granted Critical
Publication of CN100481027C publication Critical patent/CN100481027C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

一种设备和系统、以及方法和产品可运行来检测与配置存储器地址和第一存储器地址位大小相关联的输入/输出存取操作。该配置存储器地址和相关联的配置数据可被组合成具有大于第一存储器地址位大小(例如,32位)的第二存储器地址位大小(例如,64位)的数据包。所述数据包可被用来建立传统操作系统与类似的平台装置的兼容性,该传统操作系统试图与基于外围组件互连(PCI)接口的外围设备进行通信,所述平台装置已经被集成到与处理器相同的封装中。

Description

地址空间仿真
技术领域
在此所描述的各种实施方式通常涉及数据处理,包括被用来经由寄存器及其他存储单元将信息传送到硬件装置的设备、系统和方法。
背景技术
老式中央处理器(CPU)一般并不将诸如存储控制器之类的平台组件集成到与处理器本身相同的封装(package)中。为了与这种非集成组件进行通信,操作系统(OS)可使用各种方案,这些方案包括诸如外围组件互连(PCI)2.0接口的基于寄存器的接口。对于有关PCI 2.0接口的更多信息,请参阅如在1998年12月18日由PCI-SIG(专用业务组)所出版的相应规范的修订版2.2以及随后的校订版。
为了改善性能,已经制造了一些平台组件(诸如存储控制器),以驻留在与处理器核心(多个处理器核心)相同的封装中。为了简化这种设计并且更进一步增加性能,一些集成平台组件的寄存器已经从传统的32位输入/输出(I/O)空间移植到64位存储器映射地址空间中。然而,与这种集成平台组件一起使用的传统(老式)OS软件仍然企图使用诸如PCI接口之类的老式基于寄存器的机制来对组件寄存器进行存取。
发明内容
本发明提供一种设备,其包含处理器和高速暂存存储器。该处理器包括宏代码指令拦截器,以检测与输入/输出地址空间和第一存储器地址位大小相关联的输入/输出存取操作。该高速暂存存储器记录与操作系统线程和所述输入/输出地址空间相关联的配置地址,其中,所述宏代码指令拦截器应将所述配置存储器地址和相关联的配置数据组合成具有大于所述第一存储器地址位大小的第二存储器地址位大小的数据包。
本发明提供一种系统,其包括第一处理器、第一高速暂存存储器以及被电耦合到所述处理器的平板显示器。该第一处理器包括第一宏代码指令拦截器,以检测与输入/输出地址空间和第一存储器地址位大小相关联的第一输入/输出存取操作。该第一高速暂存存储器记录与第一操作系统(OS)线程和所述输入/输出地址空间相关联的配置地址,其中,所述第一宏代码指令拦截器应将与所述第一OS线程相关联的所述配置存储器地址和相关联的配置数据组合成具有大于第一存储器地址位大小的第二存储器地址位大小的第一数据包。
本发明提供一种方法,其包括:检测与配置存储器地址和第一存储器地址位大小相关联的输入/输出存取操作;以及将所述配置存储器地址和相关联的配置数据组合成具有大于所述第一存储器地址位大小的第二存储器地址位大小的数据包。
本发明还提供一种计算机可读介质,其上存储有指令。当由处理器执行所述指令时,所述指令使得所述处理器执行一种方法。该方法包含:检测与配置存储器地址和第一存储器地址位大小相关联的输入/输出存取操作;以及将所述配置存储器地址和相关联的配置数据组合成具有大于所述第一存储器地址位大小的第二存储器地址位大小的数据包。
附图说明
图1是根据本发明的各种实施方式的设备和系统的框图。
图2是图解说明根据本发明的各种实施方式的若干方法的流程图。
图3是根据本发明的各种实施方式的产品的框图。
具体实施方式
图1是根据本发明的各种实施方式的设备100和系统160的框图。为了解决如上所述的问题,一些实施方式可运行来仿真功能性存储器映射寄存器组,诸如那些被用于PCII/O地址空间中的存储器映射寄存器组。如此,能够维持传统OS与集成平台组件之间的硬件兼容性,而无论这种组件(例如,存储控制器、超高速缓存控制器等等)是否是基于PCI的。
因而,在一些实施方式中,地址空间仿真设备100可包含一个或多个处理器P1、P2。当I/O存取操作118’、118”指向集成器件154时,处理器P1、P2又包括宏代码指令拦截器(MCII,macro-codeinstruction interceptor)114,以检测与I/O地址空间122(诸如PCI I/O地址空间170)相关联的这种I/O存取操作118’、118”和第一存储器地址位大小126(例如,16位或者32位等)。MCII 114可以形成微代码序列发生器128的部分。这种存取操作118’、118”可以在I/O地址空间122存取操作期间发生,该I/O地址空间122存取操作包括存储器读取或者存储器写入到PCI I/O地址空间170。然而,存取操作118’、118”将不会被检测到,除非这些存取操作指向集成器件154,这些集成器件154实际上被映射到存储器地址HMADDR1、HMADDR2、...、HMADDRN,而不是传统的I/O地址空间122中的地址。
在一些实施方式中,诸如微代码高速暂存存储器的高速暂存存储器130’、130”可运行来记录与操作系统线程138和I/O地址空间122相关联的配置存储器地址134。MCII 114可运行来将配置存储器地址134和相关联的配置数据142组合成具有大于第一存储器地址位大小126的第二存储器地址位大小146的数据包PKT。该数据包PKT可能被用作对包括高存储单元的存储单元(例如,HMADDR)的直接或者间接参考,以对处理器封装162中的装置(例如,集成平台装置154)进行存取。举例来说,在一些实施方式中,在4GB(少于16MB)至4GB(少于32MB)之间的区域中的地址可为这种操作被保留。因而,举例来说,地址0xFA00_0000是高存储器地址,该高存储器地址可以在内部被用于写入组合的PCI数据包。当然也可使用其它的地址范围。
相对于存取PCI I/O空间,无论什么被写入0xCF8都可被用来唯一地定义期望的高存储器地址HMADDR1、HMADDR2、...、HMADDRN。所写入或者所读取的数据可以被插入来适配64位字大小或者比初始的位大小126’、126”大的任何位大小146。举例来说,如通过先前所参考的PCI规范所确定的那样,通过将组合地址和寄存器选择以压缩格式写入地址0xcf8,传统OS 150可运行来选择应该写入到其的跟着发生的数据字节(或者字)的寄存器的索引。该地址信息能够被提取并且与来自下一I/O地址存取的数据组合,以形成数据包,以便该数据然后适当地被格式化,以被写入到由组合地址和寄存器选择所定义的高存储器地址。
为了更好地理解这样一个设备100的一些实施方式如何运行,考虑以下实例。传统OS 150可在以下假设下运行:集成器件154(诸如外围设备)依照其在传统的PCI 2.0 I/O地址空间170中的相应位置来进行存取。也就是说,配置存储器地址134和相关联的配置数据142旨在对PCI地址配置空间170进行存取。因而,对于PCI I/O空间中的所选择的地址(例如,具有位31设置的0xCF8的CONFIG_ADDRESS配置存储器地址),可使用32位I/O存储器存取周期对集成平台装置154的寄存器158进行存取。或许被实施为CPU I/O微代码模块的部分的MCII 114可运行来将与存取操作118’、118”相关联的数据142保存到高速暂存存储器130’、130”单元,该单元是由微代码为每个(逻辑或物理的)CPU线程138’所保留的。
由于PCI存取对(access pair)可通过处理实体(例如处理器P1或者P2)被执行为关键代码序列,所以相同的CPU线程138’也可运行来发布对第二PCI 2.0 I/O地址(例如,0xCFC的CONFIG_DATA地址)的存取。MCII 114可运行来将32位配置地址134和32位配置数据142组合成单个64位数据包PKT。该64位数据包PKT又可被用作参考地址(例如索引)或者直接地或者间接地对应于高存储器地址(例如地址HMADDRN)的地址,该高存储器地址特别被解码用于与诸如核心硬件装置154之类的集成平台硬件装置进行通信,所述集成平台硬件装置包括集成PCI外围设备,所述集成平台硬件装置将寄存器用作存储器映射寄存器。然后可对参考单元158进行存储器读取或者存储器写入。如此,已经检测了存取操作118’、118”,并且已经仿真I/O地址空间122,以帮助传统OS150与集成平台组件(诸如核心硬件装置154)进行通信。
在一些实施方式中,单个集成电路封装172可以容纳处理器P1(或者作为多核心处理器封装的部分的多个处理器P1、P2)和高速暂存存储器130’、130”。MCII 114也可以被容纳在封装172中并且可以包含硬件、软件、固件或者其任意组合,如所期望的那样。在一些实施方式中,CPU微代码可被用来完成所描述的仿真,并且在一些情况下,可以通过使用微代码指令来完全地完成仿真,而无需另外的硬件。
处理器P1、P2可以各包括诸如集成存储控制器核心硬件元件之类的一个或多个核心硬件装置154,所述核心硬件装置154具有诸如存储器映射寄存器之类的一个或多个相关联的寄存器158。配置存储器地址134和/或相关联的配置数据142可被用来修改位于各种高存储器地址HMADDR1、HMADDR2、...、HMADDRN的寄存器158的内容(例如位)。
如先前所注意的那样,第一存储器地址位大小126可包含第二存储器地址位大小146的某个部分。举例来说,在一些实施方式中,第一存储器地址位大小126可是第二存储器地址位大小146的大约二分之一或者大约四分之一。因而,如果第一存储器地址位大小126是16位或者32位,那么第二存储器地址位大小146可分别是32位、64位或者128位。应当注意到,这些大小仅仅是实例而不是限制。第一存储器地址位大小126和第二存储器地址位大小146可以是许多位,如通过在此所描述的设备100和系统160的设计者所选择的那样。
在一些情况下,存取I/O地址空间122的过程可能被中断,或许通过高优选级中断来中断,该高优选级中断包括系统管理中断(SMI)。举例来说,在一些情况下,对PCI配置地址0xCF8的存取可以不继之以将期望的数据从配置数据地址0xCFC中读取/将期望的数据写入到配置数据地址0xCFC。如果发生这样的中断(例如SMI),那么控制可以被转移到平台系统管理模式(SMM)代码。在这一点上,MCII 114可运行来为所中断的线程(该线程通常不能由SMM例行程序所存取)保存高速暂存存储器130’、130”内容。因而,在一些实施方式中,SMM例行程序可以引导32位读取,以寻址0xCF8并且将最终的数据保存到所保留的SMM数据区168(诸如SMM存储器164所保留的数据区168)中。应当注意到,在一些系统中,所有处理器P1、P2的SMI都是互连的,以便单个SMI可以导致所有的处理器P1、P2运行来在每个线程的基础上(on a per-thread basis)将高速暂存存储器130’、130”内容保存到SMM存储器164中。
如果另外的外围I/O空间122进行存取,则什么内容将在SMI的服务期间被执行?在这种情况下,SMM代码可运行来读取0xCF8 I/O地址的内容并且将所述内容保存在SMM存储器164内的SMI数据区166中。现在,SMM代码随意自由地存取外围I/O地址空间122。然而,在返回到上述操作模式之前,SMM代码可运行来将0xCF8I/O地址的先前所保存的内容重写入到0xCF8寄存器(多个0xCF8寄存器)并且将对具有所保存的数据的0XCF8进行I/O存取。将再次通过MCII 114检测该存取操作,MCII 114将等待下一0xCFC存储器存取,从而以所描述的方式完成仿真。因而,在一些实施方式中,SMM代码可以将位于高速暂存存储器130’、130”中的0xCF8索引保存到其自己的SMI数据区(例如,区166),并且然后,如果需要,则在SMI服务例行程序执行期间执行另外的0xCF8和0xCFC存取。
应当注意到,高速暂存存储器130’、130”(或许被包括在处理器P1、P2中)与SMM存储器164不相同。举例来说,虽然高速暂存存储器130’、130”可以包含微代码高速暂存存储器,但是SMM存储器164可被选择来包含所保留的存储器,以便宏代码标志位于动态随机存取存储器(DRAM)中。因而,服务另外的SMI调用(例如,在SMM已经进入之后发生的SMI)的SMM代码不会运行来保存来自封装172内部的高速暂存存储器130’、130”上下文(context)。相反地,服务SMI的SMM代码可运行来使用I/O指令读取0xCF8 I/O地址并然后将相关联的数据保存在SMM存储器164中,或许保存在独立分配的SMI数据区166中。
一检测到恢复(例如,RSM)指令的急迫执行,各个处理器P1、P2的MCII 114就运行来将线程专用的0xCF8索引值恢复到来自SMM存储器164的独立的高速暂存存储器130’、130”中。在执行恢复指令之后,可以由具有随后通过受影响的线程138存取0xCFC的各个线程138来完成被中断的任何外围I/O空间122存取(例如,对0xCF8地址的存取)。
可以实现其它实施方式。举例来说,根据各种实施方式的系统160可以包括彼此耦合的一个或多个处理器P1、P2,作为多核心封装172的部分或者作为一批封装162。许多变型是可能的。举例来说,第一处理器P1可以包括第一MCII 114’,以检测与I/O地址空间122和第一存储器地址位大小126相关联的第一I/O存取操作118’。第二处理器P2可以包括第二MCII 114”,以检测与I/O地址空间122和第一存储器地址位大小126相关联的第二I/O存取操作118”。处理器P1、P2可以是物理处理器或者逻辑处理器。
被包括在第一处理器P1中的第一高速暂存存储器130’可运行来记录与第一OS线程138’和I/O地址空间122相关联的配置地址134’,并且第一MCII 114’可运行来将与第一OS线程138’相关联的配置存储器地址134和相关联的配置数据142’组合成第一数据包PKT’,该第一数据包PKT’具有大于第一存储器地址位大小126的第二存储器地址位大小146,如上所述的那样。第二高速暂存存储器130”(诸如微代码高速暂存存储器)可运行来记录与第二OS线程138”和I/O地址空间122相关联的配置地址134”。第二MCII 114”可运行来将与第二OS线程138”相关联的配置存储器地址134”和相关联的配置数据142”组合成第二数据包PKT”,该第二数据包PKT”具有第二存储器地址位大小146。高速暂存存储器130’、130”可由微代码序列发生器128来进行存取。
所述系统160可包括一个或多个显示器188,这些显示器188包括阴极射线管显示器、平板显示器以及其它显示器,以显示由处理器P1、P2所处理的数据(例如,配置数据142)。所述显示器(多个显示器)188可被电耦合到处理器(多个处理器)P1、P2,或者直接地被电耦合到处理器(多个处理器)P1、P2或者经由总线和/或图形控制器外围设备(未示出)被电耦合到处理器(多个处理器)P1、P2。计算机母板194可运行来给处理器P1、P2提供运行电源。系统160也可包括一个或多个无线收发机196,以发送由处理器P1、P2所处理的数据,以及系统160包括被耦合到无线收发机的一个或多个天线192,这些天线192包括全向天线、偶极天线、接线天线或者定向天线。在一些实施方式中,系统160可以包括系统管理存储器164,以在高级中断(包括SMI)由处理器P1、P2检测到之后接收相关联的配置数据142的副本。
先前所描述的任何组件可以多种方式来实施,这些方式包括经由软件来模拟。因而,在此,“模块”可表征:设备100;处理器P1、P2;MCII 114’、114”;I/O存取操作118’、118”;I/O地址空间122;第一和第二存储器地址位大小126、146;微代码序列发生器128;高速暂存存储器130’、130”;配置存储器地址134;OS线程138’、138”;相关联的配置数据142’、142”;OS150;集成器件154;寄存器158;系统160;封装162、172;SMM存储器164;SMI数据区166;所保留的SMM存储区168;I/O地址空间170;显示器188;天线192;母板194;无线收发机196;存储器地址HMADDR1、HMADDR2、...、HMADDRN;数据包PKT’、PKT”;和中断SMI。
如通过设备100和系统160的设计者所期望的那样,并且如适于各种实施方式的特定实施方案那样,这些模块可以包括硬件电路、单个或者多处理器电路、存储电路、软件程序模块和对象、固件及其组合。所述模块可被包括在系统操作模拟封装中,诸如被包括在软件电信号模拟封装、电源使用和分配模拟封装、网络安全性模拟封装、电源/热耗散模拟封装、信号发送-接收模拟封装或者被用来模拟各种潜在实施方式的操作的软件和硬件的任何组合中。举例来说,这种模拟可被用来表征或者测试所述实施方式。
也应该理解的是,各种实施方式的设备和系统可被用于除了具有单个或者多核心处理器的桌上型计算机或者膝上型计算机之外的应用。因而,本发明的各种实施方式不应如此被限制。设备100和系统160的图解说明旨在提供各种实施方式的结构的一般理解,并且这些图解说明不旨在用作可利用在此所描述的结构的设备和系统的所有要素和特征的完整说明。
可以包括各种实施方式的新颖的设备和系统的应用包括被用于高速计算机、通信和信号处理电路、调制解调器、单个或者多处理器模块、单个或者多个嵌入式处理器,以及应用专用的模块(包括多层、多芯片模块)的电子电路。这种设备和系统可以更进一步作为各种电子系统内的子组件而被包括,这些子组件其中诸如是:数据桥、开关和集线器;电视和蜂窝式电话;个人计算机和工作站;无线电和视频播放器;以及车辆。
一些实施方式可以包括多种方法。举例来说,图2包括图解说明根据本发明的各种实施方式的若干方法211的流程图。响应于外围I/O地址空间存取,并且在其它选定时间,诸如在执行任何线程之前,可以执行地址空间仿真方法211。在一些实施方式中,可以由多核心封装中的每个处理器和/或由封装中的每个处理器核心中的每个运行线程来执行方法211。
在块215,方法211可以开始对集成器件检测I/O存取操作,该I/O存取操作或许与所选择的配置存储器地址和第一存储器地址位大小(例如,0xCF8和32位)相关联。可以执行微代码序列来完成I/O存取操作的检测。
在一些实施方式中,在块219,所述方法211可以包括在高速暂存存储器(诸如微代码高速暂存存储器)中保存配置存储器地址。该动作可以包括在每个线程的基础上保存配置存储器地址。
如果在块223检测到随后的存储器读取或者存储器写入到I/O地址空间,则在块227,方法211可以接着包括将配置存储器地址和相关联的配置数据组合成数据包。如先前所注意的那样,该数据包可以具有大于第一存储器地址位大小的第二存储器地址位大小。
在块231,方法211可以接着包括执行对由数据包的内容所定义的地址进行读取操作或者写入操作之一。数据包的内容所定义的地址可以包含存储器地址,该存储器地址被解码来与核心硬件元件(例如,已经被集成到与处理器相同的封装中的平台硬件组件,诸如被集成到与当前执行读取/写入操作的处理器相同的封装中的PCI兼容的外围设备)中的存储器映射寄存器进行通信。因而,在块231,方法211可以包括使用配置存储器地址(以定义存储器映射寄存器)和相关联的配置数据写入核心硬件元件存储器地址,该核心硬件元件存储器地址被解码来与核心硬件元件中的存储器映射寄存器进行通信。如果在块223没有检测到读取/写入操作,并且在块235没有检测到高级中断(诸如SMI),那么方法211可以包括继续进行参考块227所描述的动作。
在一些实施方式中,如果在块235检测到高级中断(诸如SMI),那么在块243,方法211可以包括输入或者执行SMM代码,并且在块247,方法211保存与配置存储器地址和相关联的配置数据相关联的上下文(诸如微代码上下文)。这可以包括读取0xCF8配置地址并且直接地将信息读取副本保存到SMM所保留的存储器中。在一些实施方式中,这可以包括在系统管理存储器(诸如SMM所保留的存储器)中保存一个或多个(例如,多个)微代码高速暂存存储器的内容,该内容包括与配置存储器地址相关联的数据。
在块251,方法211可以包括处理诸如SMI的中断。中断处理例行程序可以存取I/O地址空间,该I/O地址空间或许使用SMM中断数据区,并且在一些实施方式中,这种存取不会由MCII检测到(例如,可以在PCI 2.0存取构造之外使用0xCF8和0xCFC寄存器)。当在块255完成所述中断处理时,在块259,方法211可以包括恢复诸如微代码上下文的上下文。此动作可以包括从系统管理存储器(例如,SMM所保留的存储器区)中检索相关联的配置数据的副本,将相关联的配置数据重写入配置地址,以及执行恢复指令,所以操作可以返回到所中断的上下文。在一些实施方式中,这动作可以完全地由SMM代码的执行来指引。
在此所描述的方法不必以所描述的顺序、或者以任何特定顺序来执行。此外,可以重复地、连续地或以并行方式执行参考在此所确定的方法所描述的各种动作。包括参数、命令、操作数以及其它数据的信息可以一个或多个载波的形式被发送和接收。
本领域普通技术人员将理解该方式,软件程序可以该方式由基于计算机的系统中的计算机可读介质来启动(launch),以执行在软件程序中所定义的功能。可以使用各种编程语言来创建被设计来实施和执行在此所公开的方法的一个或多个软件程序。所述程序可以使用诸如Java或者C++的面向对象的语言以面向对象的格式被构造。可替换地,所述程序可以使用过程语言(诸如汇编或者C)以面向过程的格式被构造。软件组件可以使用本领域普通技术人员公知的多种机制来进行通信,这些机制诸如应用程序接口或者进程间通信技术(包括远程过程调用)。各种实施方式的教导不限于任何特定的编程语言或者环境。
因而,可以实现其它的实施方式。举例来说,图3是根据各种实施方式的产品385的框图,产品诸如是计算机、存储系统、磁盘或者光盘、某种其它存储装置、和/或任何类型的电子器件或者系统。产品385可以包括被耦合到具有相关联的信息391(例如,计算机程序指令和/或数据)的计算机可读介质389的(具有一个或多个处理器的)计算机387,该计算机可读介质389诸如存储器(例如、固定的和可移动的存储介质,这些介质包括具有电导体、光导体或者电磁导体的有形的存储器)或者载波,当由计算机387执行相关联的信息391时,该信息391使得计算机387执行一种方法,所述方法包括检测与配置存储器地址和第一存储器地址位大小相关联的I/O存取操作,并且将配置存储器地址和相关联的配置数据组合成具有大于第一存储器地址位大小的第二存储器地址位大小的数据包。
其它的动作可以包括对由数据包的内容所定义的地址执行读取操作或者写入操作之一(例如,由数据包的内容所定义的地址可以包含存储器地址,该存储器地址被解码来与核心硬件元件中的存储器映射寄存器进行通信)。其它动作可以包括执行微代码序列,以完成检测I/O存取操作。
在一些实施方式中,另外的动作可以包括检测系统管理中断,并且保存多个微代码高速暂存存储器的内容,该内容包括与系统管理存储器中的配置存储器地址相关联的数据。其它动作可以包括那些形成图2中示出的和如上所述的方法的部分的任何步骤。
实施在此所公开的设备、系统和方法可运行来允许存取集成平台级资源,该资源诸如被包括在CPU封装中的存储控制器,如64位宽的存储器映射寄存器。另外,可实现与由其它硬件(例如,使用0xCF8和0xCFC地址进行寻址的硬件)所使用的传统PCI2.0空间的传统OS软件兼容性。因而,在维持兼容性的同时,可以增强效率和性能。
形成本文的一部分的附图经由图解说明而非限制的方式示出了特定实施方式,其中可以实践该主题。足够详细地描述了图解说明的实施方式,以使本领域普通技术人员能够实践在此所公开的教导。可以利用其它的实施方式并且从该其它实施方式导出,以便可以在不偏离此公开内容的范围的情况下作出结构和逻辑上的置换和改变。因此,此“具体实施方式”不是在限制意义进行,并且各种实施方式的范围仅仅由所附的权利要求以及与称为权利要求的内容等效的全部范围来定义。
如果事实上公开了超过一个实施方式,这仅仅为了方便起见,并且其意图不在将这种应用的范围自动限制到任何单个发明或者发明构思的情况下,本发明主题的这种实施方式在此可以单独地或者集中地被称作术语“本发明”。因而,尽管已经图解说明并且在此描述了具体的实施方式,但适于实现相同目的的任何装置可以被所示的具体实施方式所代替。此公开内容旨在覆盖各种实施方式的任何和全部改编或者变型。依据回顾上述说明,在此没有具体描述的上述实施方式的组合以及其它实施方式对本领域普通技术人员而言是显而易见的。
为了遵照要求将允许读者很快地确定技术公开内容的本质的摘要的37 C.F.R.§1.72(b),提供了本公开内容的摘要。应理解,该摘要不被用来解释或者限制所述权利要求的范围或者意义。另外,在上述“具体实施方式”部分中,能够看出,为了使该公开内容成为整体,在单个实施方式中集合了各种特征。所公开的方法不被解释为要求比在每个权利要求中清楚地引用的特征更多的特征。相反地,可以在小于单个所公开的实施方式的全部特征的特征中发现本发明的主题。因而,由于每个权利要求自己作为独立的实施方式,所以据此将以下权利要求并入到“具体实施方式”部分中。

Claims (27)

1.一种设备,其包含:
处理器,该处理器包括宏代码指令拦截器,以检测与输入/输出地址空间和第一存储器地址位大小相关联的输入/输出存取操作;和
高速暂存存储器,以记录与操作系统线程和所述输入/输出地址空间相关联的配置存储器地址,其中,所述宏代码指令拦截器应将所述配置存储器地址和与所述配置存储器地址相关联的配置数据组合成具有大于所述第一存储器地址位大小的第二存储器地址位大小的数据包。
2.如权利要求1所述的设备,还包括:
集成电路封装,以容纳所述处理器和所述高速暂存存储器。
3.如权利要求1所述的设备,其中,所述宏代码指令拦截器形成微代码序列发生器的一部分。
4.如权利要求1所述的设备,还包括:
具有存储器映射寄存器的核心硬件元件,其中,至少一个所述配置存储器地址和与所述配置存储器地址相关联的配置数据被用来修改所述存储器映射寄存器的位。
5.如权利要求1所述的设备,其中,所述第一存储器地址位大小是所述第二存储器地址位大小的大约二分之一或者大约四分之一中的一种。
6.如权利要求1所述的设备,其中,所述配置存储器地址和与所述配置存储器地址相关联的配置数据被包括在外围组件互连配置空间中。
7.如权利要求6所述的设备,其中,所述配置存储器地址包含0xCF8地址。
8.如权利要求1所述的设备,其中,所述高速暂存存储器包含微代码高速暂存存储器。
9.一种系统,其包括:
第一处理器,该第一处理器包括第一宏代码指令拦截器,以检测与输入/输出地址空间和第一存储器地址位大小相关联的第一输入/输出存取操作;
第一高速暂存存储器,以记录与第一操作系统线程和所述输入/输出地址空间相关联的配置存储器地址,其中,所述第一宏代码指令拦截器应将与所述第一操作系统线程相关联的所述配置存储器地址和配置数据组合成具有大于第一存储器地址位大小的第二存储器地址位大小的第一数据包,所述配置数据与和所述第一操作系统线程相关联的所述配置存储器地址相关联;以及
被电耦合到所述处理器的平板显示器。
10.如权利要求9所述的系统,还包括:
计算机母板,以将运行电源提供给所述第一处理器。
11.如权利要求9所述的系统,还包括:
无线收发机,以发送由所述第一处理器所处理的数据。
12.如权利要求9所述的系统,还包括:
第二处理器,该第二处理器包括第二宏代码指令拦截器,以检测与所述输入/输出地址空间以及所述第一存储器地址位大小相关联的第二输入/输出存取操作:
第二高速暂存存储器,以记录与第二操作系统线程以及所述输入/输出地址空间相关联的配置存储器地址,其中,所述第二宏代码指令拦截器应将与所述第二操作系统线程相关联的所述配置存储器地址和配置数据组合成具有第二存储器地址位大小的第二数据包,所述配置数据与和所述第二操作系统线程相关联的所述配置存储器地址相关联;以及
集成电路封装,以容纳所述第一处理器和所述第二处理器。
13.如权利要求9所述的系统,其中,所述第一高速暂存存储器应由微代码序列发生器来进行存取。
14.如权利要求9所述的系统,还包括:
系统管理存储器,以在系统管理中断由所述第一处理器检测到之后接收所述配置数据的副本,所述配置数据与和所述第一操作系统线程相关联的所述配置存储器地址相关联。
15.如权利要求9所述的系统,其中,所述第一高速暂存存储器包含微代码高速暂存存储器。
16.一种方法,其包括:
检测输入/输出存取操作,所述输入/输出存取操作与配置存储器地址和第一存储器地址位大小相关联;以及
将所述配置存储器地址和与所述配置存储器地址相关联的配置数据组合成具有大于所述第一存储器地址位大小的第二存储器地址位大小的数据包。
17.如权利要求16所述的方法,还包括:
在微代码高速暂存存储器中保存所述配置存储器地址。
18.如权利要求16所述的方法,还包括:
在每个线程的基础上保存所述配置存储器地址。
19.如权利要求16所述的方法,还包括:
使用所述配置存储器地址以及与所述配置存储器地址相关联的配置数据写入核心硬件元件存储器地址,该核心硬件元件存储器地址被解码来与核心硬件元件中的存储器映射寄存器进行通信。
20.如权利要求19所述的方法,其中,所述存储器映射寄存器作为外围组件互连配置空间的部分被解码。
21.如权利要求16所述的方法,还包括:
保存与所述配置存储器地址和所述配置数据相关联的微代码上下文,所述配置数据与所述配置存储器地址相关联;
处理系统管理中断;以及
恢复所述微代码上下文。
22.如权利要求16所述的方法,还包括:
检测系统管理中断;和
将与所述配置存储器地址相关联的配置数据的副本保存到系统管理存储器中。
23.如权利要求22所述的方法,还包括:
检索与所述配置存储器地址相关联的配置数据的副本;
将与所述配置存储器地址相关联的配置数据写入到所述配置存储器地址;以及
执行恢复指令。
24.如权利要求16所述的方法,该方法包含:
对由所述数据包的内容所定义的地址执行读取操作或者写入操作中的一种。
25.如权利要求24所述的方法,其中,由所述数据包的内容所定义的所述地址包含核心硬件元件存储器地址,该核心硬件元件存储器地址被解码来与核心硬件元件中的存储器映射寄存器进行通信。
26.如权利要求16所述的方法,该方法包含:
执行微代码序列,以完成所述检测。
27.如权利要求16所述的方法,该方法包含:
检测系统管理中断;以及
将多个微代码高速暂存存储器的内容保存到系统管理存储器中,该多个微代码高速暂存存储器的内容包括与所述配置存储器地址相关联的数据。
CNB2006101723018A 2005-12-30 2006-12-30 地址空间仿真 Expired - Fee Related CN100481027C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/323465 2005-12-30
US11/323,465 US8423682B2 (en) 2005-12-30 2005-12-30 Address space emulation

Publications (2)

Publication Number Publication Date
CN1991797A CN1991797A (zh) 2007-07-04
CN100481027C true CN100481027C (zh) 2009-04-22

Family

ID=37908031

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101723018A Expired - Fee Related CN100481027C (zh) 2005-12-30 2006-12-30 地址空间仿真

Country Status (5)

Country Link
US (1) US8423682B2 (zh)
EP (1) EP1835396A3 (zh)
JP (1) JP5128122B2 (zh)
CN (1) CN100481027C (zh)
TW (1) TWI331282B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2011018B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US8473941B2 (en) * 2008-07-08 2013-06-25 Sandisk Il Ltd. Dynamic file system restriction for portable storage devices
KR101496340B1 (ko) * 2008-10-31 2015-03-04 삼성전자주식회사 프로세서 및 메모리 제어 방법
US8055805B2 (en) * 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
CN103562866B (zh) 2011-03-25 2018-03-30 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
JP2015127982A (ja) * 2015-04-06 2015-07-09 学校法人早稲田大学 マルチプロセッサシステム
CN112732238B (zh) * 2020-12-28 2024-02-20 上海微盟企业发展有限公司 一种基于js的执行上下文获取方法及相关装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2217058A (en) * 1988-03-23 1989-10-18 Benchmark Technologies Processing integral transform operations
US5423013A (en) 1991-09-04 1995-06-06 International Business Machines Corporation System for addressing a very large memory with real or virtual addresses using address mode registers
JPH0844655A (ja) 1994-06-20 1996-02-16 Internatl Business Mach Corp <Ibm> マルチプル・バス情報処理システムのアドレス空間の拡張
US5638532A (en) * 1994-12-06 1997-06-10 Digital Equipment Corporation Apparatus and method for accessing SMRAM in a computer based upon a processor employing system management mode
US5857080A (en) 1996-09-10 1999-01-05 Lsi Logic Corporation Apparatus and method for address translation in bus bridge devices
US6629157B1 (en) 2000-01-04 2003-09-30 National Semiconductor Corporation System and method for virtualizing the configuration space of PCI devices in a processing system
US6457115B1 (en) * 2000-06-15 2002-09-24 Advanced Micro Devices, Inc. Apparatus and method for generating 64 bit addresses using a 32 bit adder
US6725366B1 (en) * 2000-09-07 2004-04-20 International Business Machines, Corporation System and method for 32 bit code branching to 64 bit targets
US6823418B2 (en) 2001-06-29 2004-11-23 Intel Corporation Virtual PCI device apparatus and method

Also Published As

Publication number Publication date
TW200745856A (en) 2007-12-16
EP1835396A3 (en) 2008-04-23
JP5128122B2 (ja) 2013-01-23
JP2007183950A (ja) 2007-07-19
EP1835396A2 (en) 2007-09-19
US8423682B2 (en) 2013-04-16
CN1991797A (zh) 2007-07-04
US20070174587A1 (en) 2007-07-26
TWI331282B (en) 2010-10-01

Similar Documents

Publication Publication Date Title
CN100481027C (zh) 地址空间仿真
US10013256B2 (en) Data returned responsive to executing a start subchannel instruction
US20190332270A1 (en) Configure storage class memory command
US9418006B2 (en) Moving blocks of data between main memory and storage class memory
US9037785B2 (en) Store storage class memory information command
EP2601586B1 (en) Using extended asynchronous data mover indirect data address words
EP2718807B1 (en) Chaining move specification blocks
US9411737B2 (en) Clearing blocks of storage class memory
EP2601580B1 (en) Deconfigure storage class memory command
RU2565514C2 (ru) Средство функциональной виртуализации для блокировки командной функции многофункциональной команды виртуального процесса
US8041849B2 (en) Method for handling small computer system interface (SCSI) commands via a redundant array of inexpensive disks (RAID) device driver
CN100424659C (zh) 用基于物理地址的安全配置确定对象安全的方法及装置
US6516295B1 (en) Method and apparatus for emulating self-modifying code
US6211891B1 (en) Method for enabling and configuring and AGP chipset cache using a registry
US6269459B1 (en) Error reporting mechanism for an AGP chipset driver using a registry
US11593113B2 (en) Widening memory access to an aligned address for unaligned memory operations
CN108694126A (zh) 用于重映射待决位阵列读取请求的技术
US7689403B2 (en) Instructions providing new functionality for utilization by a target system program of host system container words during computer system emulation with host word size larger than that of the emulated machine

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090422

Termination date: 20131230