CN1320466C - 用于选择性地执行输入/输出指令的处理器及方法 - Google Patents

用于选择性地执行输入/输出指令的处理器及方法 Download PDF

Info

Publication number
CN1320466C
CN1320466C CNB028286227A CN02828622A CN1320466C CN 1320466 C CN1320466 C CN 1320466C CN B028286227 A CNB028286227 A CN B028286227A CN 02828622 A CN02828622 A CN 02828622A CN 1320466 C CN1320466 C CN 1320466C
Authority
CN
China
Prior art keywords
permission
input
output end
end port
instruction
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 - Lifetime
Application number
CNB028286227A
Other languages
English (en)
Other versions
CN1623143A (zh
Inventor
R·W·施密特
B·C·巴尼斯
G·S·斯特劳金
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.)
MediaTek Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN1623143A publication Critical patent/CN1623143A/zh
Application granted granted Critical
Publication of CN1320466C publication Critical patent/CN1320466C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings

Abstract

本发明涉及一种内存管理系统和方法。现有的I/O保护位图机制,无法适当地保护该I/O地址空间。本发明提供一种选择性执行输入/输出(I/O)指令的方法和处理器。该方法包括于内存(206)中产生I/O许可位图并接收I/O端口数字和安全状态认证(SCID)值。其还包括使用SCID值和I/O端口数字访问存储的I/O许可位图以获得对应至I/O端口的许可位并依照对应至I/O端口的许可位执行该I/O指令。I/O许可位图包括多个许可位,其各对应至一个不同的I/O端口,其各具有数值指示对应的I/O端口被允许访问。该I/O端口数字指示I/O指令所引用的I/O端口。该SCID值指示具有I/O指令的内存地址的安全认证级。

Description

用于选择性地执行输入/输出指令的处理器及方法
技术领域
本发明涉及一种内存管理系统和方法,详而言之,是涉及可在内存中提供数据存储保护的一种内存管理系统和方法。
背景技术
80x86处理器(即x86)结构允许输入/输出(I/O)地址空间从内存地址空间分离出来。该x86I/O地址空间为64k8位数据单元的连续区块,位于由0至65,535的地址范围间(0000h至FFFFh,其中h指16进制的数字),且典型地用于和外围设备(如:键盘、硬盘等等)做联系。接口设备通常包含称为”I/O端口”或简称为”端口”的特殊访问寄存器。该I/O端口可为8位、16位或32位端口。该8位端口系以其独特的字节地址进行访问。该16位I/O端口包含两个相邻的字节,而32位I/O端口包含四组邻近的字节。该16和32位I/O端口系以其总I/O地址空间的最低地址进行访问。
在x86处理器的I/O地址空间中的地址可对应至连接于x86处理器的接口设备的不同端口。无论在地址信号线以地址信号驱动的地址是在内存地址空间或是I/O地址空间中,该x86处理器皆以内存输入/输出(M/IO)信号驱动M/IO信号线。
该x86指令组包含特殊I/O指令以驱动该I/O地址空间。该x86I/O指令提供方法使x86处理器的内部寄存器和对应于I/O地址空间的I/O端口间以及于连接于该x86处理器的内存和该I/O端口间做数据的交换。该x86I/O指令包含”IN”(由端口输入)以及”OUT”(输出至端口)寄存器指令,以及”INS”(由端口输入串)以及”OUTS”(输出串至端口)区块或串I/O指令。该区块x86指令直接由I/O端口传送数据至该内存,也可直接由该内存传送至I/O端口。
“任务”为单一执行的连续线程(thread)。80286和后来的x86处理器支持多任务处理,亦即可同时处理多个任务。只有一个任务真正在任何给定的时间内执行;该x86处理器依指示轻易地在多个任务间切换。
现代x86处理器能够在任何一个不同的模式中运行,该不同的模式包括真实地址或”真实”模式、保护虚拟地址或”保护”地址以及虚拟8086或”虚拟”模式。在该保护模式中,通过设定在FLAGS寄存器中的输入/输出权限级别(IOPL)控制该I/O地址的使用。在80386和后来的x86处理器,通过在该任务的任务状态段(TSS)中的I/O许可位图控制对应至该I/O地址空间的个别端口的访问。大部分的保护模式操作系统限制I/O端口的访问在I/O端口自身(权限级别为0),和在少数”被信任的”设备驱动器(权限级别为1)。
当80386或后来的x86处理器以保护模式运作,可利用两种机制通过任务限制对I/O地址空间的访问。首先,通过对标志(EFLAGS)寄存器的IOPL的设定控制该I/O指令的使用。接着,通过各任务的TSS中的I/O许可位图控制I/O空间中的个别I/O端的访问。必须注意的是,该I/O许可位图的机制仅在80386与后来的x86处理器中执行。
大部分的保护模式操作系统企图限制I/O指令的使用限于I/O指令自身和少数被信任的设备驱动器。于该x86处理器结构的同心环权限模块中,保护模式操作系统软件典型地于内环中以权限级别0执行,而被信任的设备驱动器软件则是于包围该内环的环中以权限级别1或权限级别0执行。应用程序通常在外环中以权限级别3执行。
该x86结构在“英特尔结构软件开发者手册(Intel ArchitectureSoftware Developer’s Manual)”(Interl Corp.1997)中有详细之叙述。尤其,关于I/O指令操作在第一卷(XP-002243543)第九章中有广泛地讨论。当处理器在虚拟8086模式中时的I/O操作指令在第三卷(XP-002248376)的15.2.8节中讨论。“I/O权限”和该“I/O许可位图”之讨论则出现在关于“英特尔386微处理器32位CHMOS微处理器之整合内存管理”(Intel Corp.1995-XP-002243542),特别是在4.4.3.3节中。
当x86处理器于保护模式下执行任务的I/O指令,该x86处理器首先将该任务的该当前权限级别(CPL)与该IOPL做比较。若该任务的该CPL与该IPOL的权限一样(亦即数字上小于或等于),则该x86处理器执行该I/O指令。换句话说,若该CPL的权限不如(亦即数字上大于)该IOPL,则该x86处理器确认该任务的TSS中的I/O许可位图。
图1揭示该熟知的该x86结构的I/O许可位图保护机制。图1为示意图,显示存储于内存100中的TSS 102和对应的I/O许可位图104。该TSS 102始于内存段的开端(亦即基础)而该I/O许可位图104结束于该内存段的终端(亦即极限)。该TSS 102包括在该内存段中与地址66h相关的16位“I/O映像基础(I/O map base)”。该I/O映像基础具有对应于I/O许可位图104的第一字节的偏移量,该偏移量为字节的偏移量。
该I/O许可位图104的每一位在该I/O空间中都有对应的字节。例如,该I/O许可位图104的第一位表示于该I/O空间中地址”0”的8位端口,第二位表示于该I/O空间中地址”1”的8位端口,以此类推。该I/O端口访问的数字被做为进入该I/O许可位图104的位偏移量。若对应至该I/O端口访问的位于I/O许可位图104中的位显示为”0”,该x86处理器(连接于该内存100且访问该I/O保护位图104)执行该I/O指令。若该位设为”1”,该x86处理器就不会执行该I/O指令,且产生一般性保护错误。当16位字组或32位双字组于I/O端口访问,所有代表该端口邻近字节的位必须全部显示为”0”以让该x86处理器执行该I/O指令。
当I/O空间越趋稀疏,且8k字节必须用于表现该I/O空间的全部64k端口,该I/O许可位图保护机制包含一种方法以缩短I/O许可位图。将看待该具有越过I/O许可位图终端的地址的I/O端口犹如于该I/O许可位图中对应的位被设为1。
问题发生在该x86处理器结构的该I/O保护位图机制无法充分适当地保护该I/O地址空间。例如,任何执行于该监督级(如:CPL为0)的任务可于任何时间访问任何该I/O地址空间的端口。此外,执行于该监督级的第一任务可修改第二任务的I/O许可位图中的位以允许该第二任务于该I/O地址空间中访问任何或全部的端口。接着该第二任务可继续访问一或更多I/O地址空间中的端口。本发明为针对一种系统及/或方法可用于解决或至少可以减少上述的无法适当地保护x86结构的I/O空间的问题。
发明内容
现有的输入/输出(I/O)保护位图机制,例如那些实施在x86处理器结构中的机制,提供不适当的I/O空间保护,并且可允许执行监督级任务,同意较低级的任务于I/O地址空间中访问任何或全部的端口。因此,根据本发明的一个方面,提供一种方法用于选择性执行输入/输出(I/O)指令。该方法包含在内存中产生I/O许可位图并且接收I/O端口数字和安全状态认证(SCID)值。该方法还包括以该SCID值和该I/O端口数字访问该存储的I/O许可位图以获得对应于该I/O端口的许可位,并且根据对应的该I/O端口的许可位值执行该I/O指令。该I/O许可位图包含多个许可位。每一个许可位对应至该多个I/O端口的不同的一个。每一个该许可位具有数值可用于指示访问至对应的I/O端口是否被允许。该I/O端口数字依据该I/O指令来指示该I/O端口。该SCID值指示包含有该I/O指令的内存位置的安全状态级别。
附图说明
通过参照所附的图可更了解本发明上述的说明,图中类似组件标有类似的参考符号,且其中:
图1为示意图,其显示存储于内存中的x86结构的任务状态段(TSS),以及对应的x86结构的I/O许可位图;
图2为示意图,其显示依据本发明的计算机系统的实施例,该计算机系统包含中央处理器(CPU)、系统或”主机”桥接器、内存、第一设备总线(如:计算机外设部件连接或PCI总线)、设备总线桥接器、第二设备总线(如:工业标准架构或ISA总线)以及四个设备硬件单元,其中该CPU包含输入/输出(I/O)安全检验单元(SCU),该I/O SCU用于保护该设备硬件单元使之避免该CPU产生的未经授权的访问。
图3为示意图,其显示图2中该计算机系统的软件与各种硬件之间的关系;
图4为示意图,其显示图2中该计算机系统200的该CPU的实施例,其中该CPU包含执行单元、内存管理单元(MMU)以及连接于该执行单元以及该MMU间的总线接口单元(BIU),其中该BIU包含该I/OSCU;
图5为示意图,其显示图4中的I/O SCU的实施例;
图6为示意图,其显示图2中的存储于该内存中的安全执行模式(SEM)I/O许可位图的实施例以及用于访问该SEM I/O许可位图的机制的实施例;
图7为示意图,其显示图6中该SEM I/O许可位图的另一个实施例以及用于访问该SEM I/O许可位图的机制的另一实施例;
图8为示意图,其显示图2中该计算机系统的CPU的另一实施例,其中该CPU包含执行单元、内存管理单元MMU、连接于该执行单元和该内存管理单元MMU的总线接口单元BIU、以及连接于该处理单元、该MMU以及该BIU的微码引擎,且其中该微码引擎执行存储于微码存储器中的微码指令并产生信号,该信号控制该执行单元、该MMU以及该BIU的运行独立于该微码指令;
图9为示意图,其显示第二图中该计算机系统的软件与该各种硬件间的关系,其中第一设备驱动以及对应的第一设备硬件单元属于第一安全”隔间”,而第二设备驱动和对应的第二设备硬件单元属于与第一安全隔间分离的第二安全隔间,且其运行也为各自独立。
本发明可由此说明书中获得益处的此领域的技术人员熟知的不同却等效的方式作修改与实施,因此前文所揭示的实施例仅做为例证的用。此外,此处详细的叙述与样式并非意图限制本发明。在此确信该揭露的实施例于本发明的范畴下可以多种不同的形式替换或修改。因此,本发明所欲申请的保护系如后附之申请专利范围所述。
具体实施方式
本发明的例证性的实施例如后叙述。为求简洁,于说明书中并未列出所有实际实现的特征。在此将了解,任何实施例以及各种特定实现的决定均可达成开发者的特定目标,如系统相关以及商业相关的衡量,将会依不同需求而有不同的结果。此外,此种开发亦是复杂且费时的,但将成为由此揭示而获得益处的该领域的技术人员日常执行的工作。
图2为示意图,其显示依据本发明的计算机系统200的实施例,该计算机系统200包含中央处理器(CPU)202、系统或”主机”桥接器204、内存206、第一设备总线208(如:计算机外设部件连接或PCI总线)、设备总线桥接器210、第二设备总线212(如:工业标准架构或ISA总线)以及四个设备硬件单元214A-214D。该主机桥接器204连接于该CPU 202、内存206以及该第一设备总线208。该桥接器204于该第一设备总线以及该第二设备总线212间传递信号。该设备总线桥接器210连接于该第一设备总线208和该第二设备总线212,并在第一设备总线208和该第二设备总线212间传递信号。于图2的实施例中,该硬件设备单元214A和214B连接于该第一设备总线208,而该设备硬件单元214C和214D连接于该第二设备总线212。一个或多个该设备硬件单元214A-214D,举例来说可为存储设备(如:硬盘驱动器、软盘驱动器以及CD-ROM驱动器)、通讯设备(如:调制解调器和网络转接器)或输入/输出设备(如:影像设备、音响设备以及打印机)。
于图2的实施例中,该CPU 202包含输入/输出(I/O安全检验单元(SCU)216。该设备硬件单元214A-214D可对应至该CPU 202的该I/O空间的各种I/O端口,且该CPU 202可通过对应的I/O端口与该设备硬件单元214A-214D交流。在此情况中,该I/O SCU 216是用于保护该设备硬件单元214A-214D使之避免该CPU 202产生的未经授权的访问。在此必须注意,在其它实施例中该主机桥接器204可如图2中为CPU 202的一部分。
图3为示意图,其显示图2中该计算机系统的软件与各种硬件之间的关系。于图3的实施例中,多个应用程序300、操作系统302、安全核心304以及设备驱动306A-306D皆存储于该内存206中。该应用程序300、该操作系统302、该安全核心304以及该设备驱动306A-306D包含由该CPU 302所执行的指令。该操作系统302提供用户接口和供应用程序300在其上运行的软件”平台”。该操作系统302同时可提供,一些如基本支持功能,包含文件系统管例、程序管理以及I/O控制。
该操作系统302可同时提供基本的安全功能。例如,该CPU 202(在图2中)可为x86处理器,其执行该x86指令组的指令。在此情况中,该CPU 202如前所述可包括提供虚拟内存和物理内存保护特征的专门硬件组件。该操作系统302可为例如Windows系列的操作系统(Microsoft Corp.,Redmond,WA),其在保护模式中运行该CPU 302,且在保护模式中使用该CPU 202的专门硬件组件提供虚拟内存和内存保护。
如后所述,该安全核心304较该操作系统302提供更多的安全功能以保护存储于该内存206中的数据避免未经授权的访问。如图3所示,该安全核心304连接于该I/O SCU 216。该I/O SCU 216监控在I/O地址空间中的所有初始化的软件对该I/O端口的访问,且只允许经授权者对该I/O端口访问。
在图3的实施例中,该设备驱动306A-306D在运行上皆关联且连接至各自对应的设备硬件单元214A-214D。该设备硬件单元214A和214D可为如”安全的”设备,以及该对应的设备驱动306A和306D可为如”安全”设备驱动。该安全核心304连接于该操作系统302和该安全的设备驱动306A及306D之间,并且可监控由应用程序300和该操作系统302至安全的设备驱动306A和306D以及对应的安全的设备214A和214D的所有访问。该安全核心304可避免应用程序300和该操作系统302所发出的对该安全设备驱动306A和306D以及对应的安全设备214A和214D的未经授权的访问。该设备驱动214B和214C可为”非安全”设备驱动,且该对应的设备硬件单元214B和214C可为”非安全”设备硬件单元。该设备驱动306B和306C以及相对应的设备硬件单元214B和214C可为如”传统”设备驱动以及设备硬件单元。
注意到,在其它实施例中该安全核心304可为该操作系统302的一部分。在此实施例中,该安全核心304、该设备驱动306A和306D以及/或该设备驱动306B和306C可为该操作系统302的一部分。
图4为示意图,其显示图2中该计算机系统200的该CPU 202的实施例。在图4的实施例中,该CPU 202包含执行单元400、内存管理单元(MMU)402、高速缓存单元404、总线接口单元(BIU)406、一组控制寄存器408、一组安全执行模式(SEM)寄存器410。总线接口单元(BIU)406还连接到主桥204(图2),并在该CPU 202和该主机桥接器204之间形成接口。该BIU 406还通过该桥接器204连接到该内存206(图2),并在该CPU 202和该内存206之间形成接口。在图4的此实施例中该I/O SCU 216位于该BIU 406中。
如后之详述,该SEM寄存器组410被用于在图2的该计算机系统(200)中实现安全执行模式(SEM),且该I/O SCU 216的运行是由该SEM寄存器组410的内容来管理的。该SEM寄存器410由该安全核心304(图3)进行访问(写入和/或读取)。
在图4的实施例中,该SEM寄存器组410包含SEM位。图2中的该计算机系统200可以在下列情况下运行在安全执行模式下:(i)该CPU 202为运行于x86保护模式下的x86处理器,(ii)内存分布被使用,以及(iii)该SEM位被设为”1”时。
一般来说,控制寄存器组408的内容管理该CPU 202的运行。于是,该控制寄存器组408的内容也管理该执行单元400、该MMU 402、该高速缓存单元404和/或该BIU 406。该控制寄存器组408可包含如该x86处理器构造的多个控制寄存器。
在指令执行期间,该CPU 202的该执行单元400提取指令(如:x86指令)和数据、执行提取的指令以及生成信号(如:地址、数据和控制信号)。该执行单元400连接于该高速缓存单元404,且可通过该高速缓存单元404和该BIU 406接收来自于该内存206(图2)的指令。
该计算机系统200的内存206(图2)包含多个内存位置,每一个内存位置具有唯一的物理地址。当运行于保护模式且分页被激活时,该CPU 202的地址空间将分为多个区块,这些区块称为页帧或”分页”。只有对应于该分页的一部分的的数据能够随时于该内存206中存储。在图4的实施例中,当指令显示为已分段的(亦即”逻辑上”)地址的时,地址信号由该执行单元400产生。该MMU 402传送由该执行单元400产生的该分段的地址至对应的该内存206的物理地址。该MMU 402提供该物理地址给该高速缓存单元404。该高速缓存单元404是一种相对较小的存储单元,用于存储该执行单元400最近所提取的指令和数据。
该BIU 406连接于该快速缓冲存储单位404和该主机桥接器204之间。该BIU 406用于通过该主机桥接器204从该内存206提取当前不在该高速缓存单元404中的指令和数据。该BIU 406同时包含该I/OSCU 216。该I/O SCU 216连接于该SEM寄存器410、该执行单元400和该MMU 402。如前所述,该I/O SCU 216监控对该I/O地址空间中的该I/O端口的所有软启动(software-initiated)的访问,且只允许经授权者对该I/O端口访问。
图5为示意图,其显示图4中的I/O SCU的实施例。在图5的实施例中,该I/O SCU 216包含安全检验逻辑500。该安全检验逻辑500由该执行单元400接收”激活”信号和I/O端口数字,并且由该MMU 402接收安全状态认证(SCID)值。该执行单元400可判定该激活信号优先于执行在该I/O位空间中的”目标”I/O端口的访问。该I/O端口数字为该目标I/O端口的数字。该SCID值表示含有该I/O指令的该内存页面的安全状态级。
当图2的该计算机系统200在该SEM中运行时,该安全核心304(图3)产生且维持一个或多个图2中的安全特性数据结构(如:表格)。每一个内存页面有与其对应的SCID值,且该对应的SCID值可存储于该安全特性数据结构中。该MMU 402使用一个在指令执行期间所产生的地址(如:物理地址)访问该一个或多个安全特性数据结构以获得该对应的内存页面的该SCID。一般来说,该计算机系统200具有n个不同的SCID值,其中n为一个大于或等于1的整数。
当图2中的该计算机系统200在SEM下运行,该安全核心304(图3)同时产生且维持在该内存206(图2)中的SEM I/O许可位图。当该执行单元400(图4)执行一项任务的I/O指令时,在该CPU 202中的逻辑可首先对该任务的当前权限级别(CPL)与输入/输出权限级别(IOPL)作比较。
若该任务的该CPL至少与该IOPL有相同的权限(亦即数字上小于或等于)则该CPU 202中的逻辑即可检验该SEM I/O许可位图。相反地,若该任务的该CPL不如在该IOPL的权限(亦即数字上大于),则该执行单元400将不执行该I/O指令。于一实施例中,将会产生一个一般性保护错误。
当该执行单元400(图4)确认该激活信号时,该安全检验逻辑500提供该激活信号、该接收的SCID值和该接收的I/O端口数字给该BIU406中的逻辑。该BIU 406中的逻辑使用该SCID值和该接收的I/O端口数字以访问该SEM I/O许可位图,并从该SEM I/O许可位图提供对应的位至该安全检验逻辑500。若来自于该SEM I/O许可位图的对应位显示为”0”,则该安全检验逻辑500可确认输出”执行”信号至该执行单元400。响应该确认的”执行”信号,该执行单元400可执行该I/O指令。相反地,若该对应位显示为”1”,则该安全检验逻辑500可判定输出”SEM安全异常”信号至该执行单元400。响应该确认的”SEM安全异常”信号,该执行单元400将不执行该I/O指令,代替为执行一个SEM异常运行控制。
当该I/O指令企图访问16位字组I/O端口或32位双字组I/O端口,该执行单元400将连续地提供多字节I/O端口数字至该安全检验逻辑500。若该安全检查逻辑500判定各该字节I/O端口数字为该执行信号,则该执行单元400将执行该I/O指令。相反地,若该安全检查逻辑500判定各该字节I/O端口数字为该SEM安全异常信号,则该执行单元400将不执行该I/O指令,且将执行一个SEM异常运行控制来代替。
图6为示意图,其显示图2中的存储于该内存中的安全执行模式(SEM)I/O许可位图的实施例以及用于访问该SEM I/O许可位图的机制的实施例,该SEM I/O许可位图在图6中以600标示。图6中的机制可实施于BIU 406(图6)的逻辑中,且当该计算机系统200于SEM下运行时可供其使用。在图6中,该SEM寄存器组410具有模式指定寄存器(MSR)602。该MSR 602用于存储该SEM I/O许可位图600的开始(亦即基础)地址。如前所述该计算机系统200具有n个不同的SCID值,其中n为一个大于等于1的整数。该SEM I/O许可位图600对于n个不同的SCID值中的每一个都包括一个不同的I/O许可位图。每个独立的I/O许可位图具有64k位或8k字节。
在图6的实施例中,具有访问该I/O端口的I/O指令的内存页面的该SCID值是做为来自于该MSR 602的内容(亦即该SEM I/O许可位图600的该基础地址)的偏移量成为组成该SEM I/O许可位图600的一个或多个64k位(8字节)的I/O许可位图。因此,对应于该SCID值的该I/O许可位图即可被访问。该I/O端口数字于是被作为进入对应于SCID值的该I/O许可位图的位偏移量。以这种方式访问的位即为由I/O端口数字所定义的该I/O端口的对应位。
图7为示意图,其显示图6中该SEM I/O许可位图的另一个实施例以及用于访问该SEM I/O许可位图的机制的另一实施例,该SEM I/O许可位图在图7中以700做标记。图7中的机制可实施于该BIU 406(图4)中的逻辑。在图7的实施例中,该SEM I/O许可位图700具有单独的一个64位(8k字节)I/O许可位图。该I/O端口数字做为来自于该MSR602的内容(亦即该SEM I/O许可位图600的基础地址)的位偏移量而成为该I/O许可位图。以这种方式访问的位即为由I/O端口数字所定义的该I/O端口的对应位。
图8为示意图,其显示图2中该计算机系统200的该CPU 202的另一实施例。于图8的实施例中,该CPU 202包含执行单元400、MMU402、高速缓存单元404、BIU 406、控制寄存器组408以及如前述的该SEM寄存器组410。此外,该CPU 202具有微码引擎800和微码存储器802。此微码引擎800连接于该执行单元400、该MMU 402、该高速缓存单元404、该BIU 406、该控制寄存器组408以及该SEM寄存器组410。该微码引擎800执行存储于微码存储器802中的微码指令并产生信号,该信号控制该执行单元400、该MMU 402、该高速缓存单元404以及该BIU 406且此控制运行依赖于该微码指令以及控制寄存器组408和该SEM寄存器组410的内容。该微码引擎800并同时协助该执行单元400执行多个该x86指令组的复合指令。
在图8的实施例中,存储于该微码存储设备802中的微码指令的一部分形成I/O安全检验码804。当图2的该计算机系统200运行于SEM中的时执行该I/O安全检验码801,而I/O指令被传递到执行单元400以便执行。本质上,该I/O安全检验码804的该微码指令造成该微码引擎800和该BIU 406执行如前所述的该I/O SCU 216(图2至图4)的功能。
例如,当I/O指令传递到该执行单元400执行时,该执行单元400可发出当前该I/O指令的信号至该微码引擎800。该微码引擎可判定信号至该MMU 402和该BIU 406。响应来自于该位码引擎800的信号,该MMU 402将提供包括有该I/O指令的内存页面的SCID值至该BIU406。该执行单元400将提供该I/O指令访问的I/O端口数字至该BIU406。
响应来自于该微码引擎800的信号,该BIU 406将使用该SCID值和该接收的I/O端口数字访问该SEM I/O许可位图,如前所述。并将提供来自于该SEM I/O许可位图的对应的位至该微码引擎800。若来自于该SEM I/O许可位图显示为”0”,则该微码引擎800可继续协助该执行单元400以完成该I/O指令的执行。相反地,若该对应的位显示为”1”,则该微码引擎可发出信号至该执行单元400以停止执行该I/O指令并启动执行SEM异常运行控制。
图9用于描述如何为SCID值赋值以及该对应的SEM I/O许可位图如何产生,如何做为”分隔”设备驱动并结合图2中的该计算机系统200中设备硬件单元以达成安全的目的。图9为示意图,其显示图2中该计算机系统200的软件与该各种硬件间的关系,其中设备驱动306A以及对应的设备硬件单元214A属于第一安全”隔间”900,而设备驱动306D和对应的设备硬件单元214D属于与第一安全隔间900分离的第二安全隔间902,且其运行也是各自独立。只有该设备驱动306A能访问该设备硬件单元214A,且只有该设备驱动306D可访问该设备硬件单元214D。该设备驱动和相关的硬件单元的”分隔”帮助避免恶意代码或错误代码对该设备硬件单位的状态所造成的负面的影响或介入图2的该计算机系统200的正常运行。
例如,于图9的实施例中,具有该设备驱动306A和306D指令的内存页面可分配到不同的SCID值。为该设备驱动306A的该SCID值所产生的第一SEM I/O许可位图,可允许该设备驱动306A访问第一部分,该第一部分被分配给该设备硬件单元214A的该计算机系统200的I/O地址空间的第一部分,且将不允许该设备驱动306A访问分配给该设备硬件单元214D的I/O地址空间的第二部分。同样地,为该设备驱动306D的SCID值所产生的第二SEM I/O许可位图,可允许该设备驱动306D访问分配给该设备硬件单元214D的I/O地址空间的第二部分,而不允许该设备驱动306A访问分配给该设备硬件单元214A的I/O地址空间的第一部分。因此,只有该设备驱动306A可访问该设备硬件单元214A,也只有该设备驱动306D可访问该设备硬件单元214D。
本发明如前所述的一些目的可用于硬件或软件当中。因此,说明书中的部分详述可用于硬件实施过程而说明书中的部分详述也可用于软件实施过程,该软件实施过程系牵涉到运算系统或运算设备的内存中数据位的操作符号表现。该详述和表现的意义系为该技术领域的相关人员间以硬件和软件两者同时做有效的传达之用。该处理和操作皆需要实际量的实质操作。软件方面,通常虽非全然必要,但该以电、磁或光学信号形式出现的量皆可用于执行存储、传送、结合、比较和其它相关的操作。有时为求方便,系依理论上一般使用的动机,将位、值、元素、符号、特性、术语、数字或其它相关量称为信号。
然而,在此提醒到,所有叙述以及相似的术语皆为适当的物理量且皆为方便应用于该量的标记。除非于说明书中有特别提出,否则这些提及的动作和电子设备的处理皆以物理(电、磁或光)量形式表现的信号在一些电子设备的存储设备中于这些存储设备间做运行和传送。像是”处理”、”运算”、”决定”、”显示”和其它相关的术语系叙述中例证之用,其意图并非限制用途。
同时注意到,本发明的软件施行的目的系典型地用于程序存储媒介或某些形式的传送媒介的译码。该程序存储媒介可为磁性(亦即软盘或硬件驱动)或光学(亦即只读光驱或”CD ROM”),且可只读或随机访问。同样地,该传送媒介可为双绞线、同轴电缆、光纤或其它相关领域中实之的适当传送媒介。本发明并非限制于任何给定实施的目的中。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域普通技术人员均可对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如后述的申请专利范围所列。

Claims (10)

1.一种处理器(202),该处理器(202)适于连接至内存(206),该处理器(202)包括:
执行单元(400),用于执行输入/输出指令并用于:
确定相关输入/输出指令的当前权限级别,
将该当前权限级别与输入/输出权限级别做比较,
依据该比较结果提供第一信号;
总线接口单元(406),通过连接以接收输入/输出端口数字、该第一信号和安全状态认证值,该总线接口单元(406)用于使用该安全状态认证值和该输入/输出端口数字以访问存储于该内存(206)中的输入/输出许可位图(600)而获得对应至该输入/输出端口数字的许可位,并依该许可位的值产生第二信号,其中,该执行单元(400)通过连接以接收该第二信号并依该第二信号执行该输入/输出指令,其特征在于:
该总线接口单元(406)用于当该第一信号表示该当前权限级别小于或等于该输入/输出权限级别时,访问对应至该输入/输出端口数字的许可位。
2.如权利要求1所述的处理器(202),其中,该输入/输出端口数字表示为输入/输出指令所引用的输入/输出端口的数字,且其中,该安全状态认证值表示具有该输入/输出指令的内存位置的安全认证级别。
3.如权利要求2所述的处理器(202),进一步包括用于存储该内存(206)中的数据的内存管理单元(402),且其中,该总线接口单元(406)被连接至该执行单元(400)和该内存管理单元(402),且其中该输入/输出端口数字被接收自该执行单元(400),且其中该安全状态认证被接收自该内存管理单元(402)。
4.如权利要求2所述的处理器(202),其中,该输入/输出端口数字和该安全状态认证皆由该执行单元(400)在该输入/输出指令执行期间接收。
5.如权利要求2所述的处理器(202),其中,该输入/输出许可位图(600)包括多个许可位,其中每一个许可位对应至多个输入/输出端口中的一个不同的输入/输出端口,且其中每一个该许可位具有值以指示该对应的输入/输出端口是否允许被访问。
6.如权利要求2所述的处理器(202),进一步包括模块指定寄存器(602),该模块指定寄存器(602)用于存储该输入/输出许可位图(600)的基础地址,其中,该总线接口单元(406)通过将该输入/输出端口数字做为来自该模块指定寄存器(602)和进入该输入/输出许可位图(600)的位偏移量访问该输入/输出许可位图(600)以获得对应至该输入/输出端口数字的许可位。
7.如权利要求2所述的处理器(202),其中,该输入/输出许可位图(600)为主要输入/输出许可位图(600),且其中,该主要输入/输出许可位图(600)包含多个次要输入/输出许可位图,且其中各该次要输入/输出许可位图包含多个许可位,且其中给定的该次要输入/输出许可位图的每个许可位各对应至一个不同的输入/输出端口,且其中,每个该许可位具有值以指示该对应的输入/输出端口是否允许被访问,且其中,每个该次要输入/输出许可位图对应至多个安全状态认证值中的一个不同的安全状态认证值。
8.如权利要求1所述的处理器(202),进一步包括微码引擎(800),其连接至该执行单元(400)、该内存管理单元(402)以及该总线接口单元(406),并用于执行存储于微码存储器802)中的微码指令,其中该微码引擎(800)在至少一个微码指令的执行期间产生控制信号,其中部分该微码指令使该微码引擎(800)产生控制信号,该控制信号使该总线接口单元(406)进行工作,该工作包括:
接收该输入/输出端口数字和安全状态认证值,其中该输入/输出端口数字为输入/输出指令所引用的该输入/输出端口的数字,其中该安全状态认证值为具有该输入/输出指令的内存位置的安全状态级别,以及
利用该安全状态认证值和该输入/输出端口数字以访问该存储于内存(206)中的输入/输出许可位图(600)以获得对应于该输入/输出端口的该许可位,并根据该许可位的值产生输出信号;以及
其中,该执行单元(400)被连接以接收该输出信号并根据该输出信号执行该输入/输出指令。
9.一种用于选择性地执行输入/输出指令的方法,该方法包括:
产生输入/输出许可位图(600)在内存(206)中,其中该输入/输出许可位图(600)包含多个许可位,且其中各该许可位对应至一个不同的输入/输出端口,且其中各该许可位具有值以指示该对应的输入/输出端口是否允许被访问;
接收输入/输出端口数字和安全状态认证值,其中该输入/输出端口数字为该输入/输出指令所引用的该输入/输出端口,且其中该安全状态认证值为具有该输入/输出指令的内存位置的安全状态级别;
比较输入/输出权限级别和相关于该输入/输出指令的当前权限级别;
利用该安全状态认证值和该输入/输出端口数字访问该输入/输出许可位图(600)以获得对应至该输入/输出端口的许可位;以及
执行该输入/输出指令,该执行对应于该输入/输出端口的该许可位的值;
当该当前权限级别小于或等于该输入/输出权限级别时,访问该输入/输出许可位图。
10.如权利要求9所述的方法,其中接收该输入/输出端口数字和该安全状态认证值,进一步包含在该输入/输出指令执行期间接收该输入/输出端口数字和该安全状态认证值,且其中,根据对应于该输入/输出端口的许可位的值执行该输入/输出指令,进一步包括若对应于该输入/输出端口的许可位的值允许对该输入/输出端口的访问,则执行该输入/输出指令。
CNB028286227A 2002-03-27 2002-12-17 用于选择性地执行输入/输出指令的处理器及方法 Expired - Lifetime CN1320466C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/107,784 2002-03-27
US10/107,784 US7493498B1 (en) 2002-03-27 2002-03-27 Input/output permission bitmaps for compartmentalized security

Publications (2)

Publication Number Publication Date
CN1623143A CN1623143A (zh) 2005-06-01
CN1320466C true CN1320466C (zh) 2007-06-06

Family

ID=28673583

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028286227A Expired - Lifetime CN1320466C (zh) 2002-03-27 2002-12-17 用于选择性地执行输入/输出指令的处理器及方法

Country Status (8)

Country Link
US (1) US7493498B1 (zh)
JP (1) JP4391832B2 (zh)
KR (1) KR101001344B1 (zh)
CN (1) CN1320466C (zh)
AU (1) AU2002361757A1 (zh)
DE (1) DE10297687B4 (zh)
GB (1) GB2404058B (zh)
WO (1) WO2003083671A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
CA2551045C (en) * 2005-06-30 2008-04-22 Hitachi, Ltd. Input-output control apparatus, input-output control method, process control apparatus and process control method
US20100132053A1 (en) * 2005-10-04 2010-05-27 Nec Corporation Information processing device, information processing method and program
KR101540798B1 (ko) * 2008-11-21 2015-07-31 삼성전자 주식회사 가상화 환경에서 보안 정보를 제공하기 위한 장치 및 방법
CN102375947A (zh) * 2010-08-16 2012-03-14 伊姆西公司 用于隔离计算环境的方法和系统
CN103632088A (zh) * 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
US8832465B2 (en) * 2012-09-25 2014-09-09 Apple Inc. Security enclave processor for a system on a chip
US9043632B2 (en) 2012-09-25 2015-05-26 Apple Inc. Security enclave processor power control
US8775757B2 (en) 2012-09-25 2014-07-08 Apple Inc. Trust zone support in system on a chip having security enclave processor
US9047471B2 (en) 2012-09-25 2015-06-02 Apple Inc. Security enclave processor boot control
US8873747B2 (en) 2012-09-25 2014-10-28 Apple Inc. Key management using security enclave processor
JP5920595B2 (ja) * 2013-07-16 2016-05-18 横河電機株式会社 電子機器、オペレーティングシステム、アクセス管理方法
US9547778B1 (en) 2014-09-26 2017-01-17 Apple Inc. Secure public key acceleration
CN106326130B (zh) * 2015-06-16 2019-03-15 辰芯科技有限公司 寄存器地址空间的控制方法、控制器及片上系统
US10261748B2 (en) * 2015-12-18 2019-04-16 Intel Corporation Technologies for protecting audio data with trusted I/O
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
WO2022171299A1 (en) * 2021-02-12 2022-08-18 Huawei Technologies Co., Ltd. Low overhead active mitigation of security vulnerabilities by memory tagging

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
US5596739A (en) * 1994-02-08 1997-01-21 Meridian Semiconductor, Inc. Method and apparatus for detecting memory segment violations in a microprocessor-based system
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
JPH10232878A (ja) * 1997-02-19 1998-09-02 Hitachi Ltd ドキュメント管理方法および装置
JP4522548B2 (ja) * 2000-03-10 2010-08-11 富士通フロンテック株式会社 アクセス監視装置及びアクセス監視方法
US6978018B2 (en) * 2001-09-28 2005-12-20 Intel Corporation Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment

Also Published As

Publication number Publication date
KR101001344B1 (ko) 2010-12-14
GB2404058A (en) 2005-01-19
DE10297687T5 (de) 2005-07-07
US7493498B1 (en) 2009-02-17
JP2005521941A (ja) 2005-07-21
AU2002361757A1 (en) 2003-10-13
GB0423536D0 (en) 2004-11-24
WO2003083671A1 (en) 2003-10-09
GB2404058B (en) 2005-11-02
KR20040101332A (ko) 2004-12-02
JP4391832B2 (ja) 2009-12-24
CN1623143A (zh) 2005-06-01
DE10297687B4 (de) 2008-11-13

Similar Documents

Publication Publication Date Title
CN1320466C (zh) 用于选择性地执行输入/输出指令的处理器及方法
CN1132107C (zh) 计算机系统中控制对映射到i/o地址空间的寄存器的访问的系统
US5469556A (en) Resource access security system for controlling access to resources of a data processing system
CA2064640C (en) Storage protection utilizing public key control
US7631160B2 (en) Method and apparatus for securing portions of memory
US7930539B2 (en) Computer system resource access control
CN1307535C (zh) 安全执行模式下信任客户使用安全核心系统
CN1278244C (zh) 内存管理系统及依据线性地址的内存存取保密的方法
CN1612112A (zh) 用于地址翻译控制的阴影页表
CN1877547A (zh) 提供扩展的存储器保护
JPH0578858B2 (zh)
CN1679001A (zh) 对在虚拟机体系结构中客户软件操作期间出现的故障的控制
US20220180009A1 (en) Peripheral component interconnect express protection controller
JP2006012170A (ja) ユーザ・モード・プロセスが特権実行モードで動作することを可能にする方法
CN1639666A (zh) 具有外围设备访问保护的数据处理系统及其方法
CN1628284A (zh) 安全执行模式异常
US9459907B2 (en) Guest controlled malicious payload protection
JP2005512228A (ja) 強化されたメモリアクセスセキュリティを提供する、メモリに対するデバイスのアクセスを制御するシステムおよび方法
KR100972635B1 (ko) 컴퓨터 시스템내에서의 장치간 액세스를 제어하는 시스템및 방법
US20080184258A1 (en) Data processing system
US10073710B2 (en) Host-driven application memory protection for virtual machines
JP4478458B2 (ja) 所望のセキュリティを用いた入出力デバイスにアクセスするための方法及び装置
US10481951B2 (en) Multi-queue device assignment for application groups
CN111752604A (zh) 一种具有多个运行模式的处理器
CN114780446A (zh) 基于mpu的内存访问方法、装置、电子设备及存储介质

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
ASS Succession or assignment of patent right

Owner name: ADVANCED MICRO DEVICES INC

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES INC.

Effective date: 20100708

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA, USA TO: GRAND CAYMAN ISLAND RITISH CAYMAN ISLANDS

TR01 Transfer of patent right

Effective date of registration: 20100708

Address after: Grand Cayman, Cayman Islands

Patentee after: GLOBALFOUNDRIES Inc.

Address before: California, USA

Patentee before: ADVANCED MICRO DEVICES, Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201218

Address after: California, USA

Patentee after: Lattice chip (USA) integrated circuit technology Co.,Ltd.

Address before: Greater Cayman Islands, British Cayman Islands

Patentee before: GLOBALFOUNDRIES Inc.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210415

Address after: No.1, Duhang 1st Road, Hsinchu City, Hsinchu Science Park, Taiwan, China

Patentee after: MEDIATEK Inc.

Address before: California, USA

Patentee before: Lattice chip (USA) integrated circuit technology Co.,Ltd.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20070606