资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
Intel CPU 和 ARM CPU 的运行模式摘要: 本文介绍了Intel CPU的三种运行模式:实模式、保护模式,虚拟实模式,同时还介绍了ARM处理器的工作模式:用户模式和特权模式,并且分析比较了两种CPU的这些运行模式的作用及适用场合,以便对这些运行模式有更深入的了解。CPU作为计算机和各种电子设备的大脑,对计算机和电子设备起着至关重要的作用,它主要用来解释指令和处理数据,是计算机和电子设备能够实现各种各样的功能的基础。CPU运行模式指的是各种工作环境, 以及对芯片的指令和能力的影响。CPU运行模式控制处理器如何查看和管理系统存储器以及使用它的任务。Intel的CPU占领了大部分的PC市场,而ARM处理器则大量存在于手机和各种嵌入式设备中。对这两种CPU的运行模式进行分析能让我们对CPU的运行模式更加深入的理解。绝大部分PC的CPU都是Intel公司的CPU,Intel的 CPU经过多年的发展,已经当初的一种运行模式发展成了现在的三种运行模式,分别是:实模式、保护模式,虚拟实模式。下面对这三种模式进行详细介绍。实模式 Intel的8086到80186处理器都只有一种运行模式,这就是实模式。在这个模式下,CPU用20根地址线进行内存寻址,所以在这个模式下CPU只能访问从00000h-FFFFFh的地址范围的内存,即1M大小的内存。同时使用16根数据线,使用l6位内部寄存器运行16位指令。由于使用的是16根数据线,为了能够支持使用20位的地址来访问1M的内存,于是就对内存的使用引入了分段机制。为了支持分段机制,CPU设置了四个16位的段寄存器:CS、DS、SS、ES,分别是代码段,数据段,堆栈段和其他段,对应于地址总线中的高16位。寻址时,将段寄存器中的值向左移四位再加上段内偏移量就得到了物理地址。这样就实现了16位内存地址到20位物理地址的转换,这种方式叫做“映射”。由于其偏移量只能用16位来表示,所以其支持的段的大小只有64K字节。在实模式下,系统一次只能运行一个程序,其他程序都处于休眠状态。在这个模式下,任何一个程序都可以访问内存的任何地方,并没有一种保护机制来防止一个程序被另一个程序重写,即便是对于在内存中的操作系统也是如此。所以如果有几个程序存在内存中,很可能会因为其中的一个程序修改了另一个程序的数据而导致系统崩溃。为了能够和前面的CPU兼容,80286及以后x86系列兼容处理器仍然是开机启动时工作在实模式下,这时的CPU和8086没有任何区别,只是运行速度比8086更快而已。然后通过操作系统设置之后就可以进入一个更加先进的模式保护模式。保护模式要发挥80386及x86系列处理器的全部优势就要在保护模式下。那么保护模式和实模式到底有什么区别呢?首先是在保护模式下采用的是32根地址线和数据线,运行32位指令,可寻址高达4G字节的物理地址空间 字。实模式下只能寻址的1M字节的物理地址空间。保护模式采用了虚拟内存,并采用分段和分页技术相结合的方式,其支持的最大的段的大小也从实模式的64K增长到4G。同时保护模式的地址转换方式也发生了变化。此时段寄存器里存的不再是基址,而是段选择子。通过段选择子来选出段的描述符,描述符用来描述一个段,包含了段基址,段界限,段属性等段的信息。得到了段基址之后,再加上偏移量就得到了线性地址,与实模式最大的区别是保护模式的基址不要偏移。得到线性地址之后,如果禁止分页线性地址就被解释为物理地址;如果允许分页线性地址就通过页表映射到物理地址。保护模式和实模式的最大区别是在保护模式下运行的软件程序受到了保护。这种保护作用首先体现在进程间的保护。在保护模式下每个进程都有自己的地址空间,然后把地址空间分页,得到许多的页面,再把这些页面映射到物理内存。由于不同进程的页表被映射到不同的物理内存,这就实现了进程间的相互隔离,防止一个程序被另一个程序重写,导致系统崩溃。同时进程间的隔离使得一个进程的崩溃也不会影响到其他进程的执行。同时保护作用还包括进程内的保护。在一个进程内,段定义有四种执行特权级别,用数字0、1、2、3表示,用于限制对任务中的段进行访问,数字越小,级别越高。按照包含在段中的数据的重要性和代码的可信程度,给段指定特权级别。把最高的特权级别分配给最重要的数据段和最可信任的代码段,高特权级别代码可以访问地特权级别代码,但是反过来就会被阻止。所以系统代码与应用程序代码虽处于同一地址空间,但系统代码具有高特权级别,应用程序代码处于低特权级别,这样就防止了用户代码破坏系统代码。操作系统被设置为0级,拥有最高特权等级,这就保证了操作系统的安全。段的特权级别是通过段描述符的中的一个占两位的DPL位来表示的。保护模式支持的多任务运行,但这需要多任务操作系统来完成。操作系统让每个进程都得到部分的CPU时间,让它们轮流使用CPU,看起来就好像是多个任务在运行,实际上在很小的时间片段内还是只有一个程序运行,但在多核CPU中可以实现真正的并行运行。通过操作系统的设置,CPU可以从实模式进入保护模式,但是不能够倒退从保护模式进入实模式。虚拟8086模式在当初设计Intel 80386 CPU的时候,需要解决的一个难题是如何让运行在16位实模式下的程序能够在80386的保护模式中运行。为此Intel的设计人员在80386中加入了虚拟8086模式。在虚拟8086模式中,CPU把内存分成许多大小为1M的部分,每个部分分配给一个任务。大部分16位实模式下的程序能够不经任何修改的运行在保护模式下,每个程序都有属于他们的1M内存。微软在用虚拟8086模式来运行他们的DOS程序。运行Windows操作系统中的DOS提示窗口时,就建立了一个虚拟8086模式的会话。和真正的MS-DOS不一样,MS-DOS一次只能运行一个任务,其他任务都在睡眠,而在Windows中,每个任务都可以得到一个CPU的时间片段,所以许多任务都可以同时保持活跃,这是因为保护模式支持多任务。一个虚拟8086会话窗口完全模拟了一个8086环境,每一个虚拟机器都有其自己的l M B地址空间、实际硬件BIOS程序的映像、所有各寄存器的仿真以及其他能在实模式中找到的特性,除了速度更快以外。Intel的三个模式中实模式和虚拟8086模式都是为了兼容以前的版本而设计的,因为向前兼容才使得Intel现在的CPU设计的比较复杂,但其最重要的模式是保护模式,它是现在计算机能够极大方便人们生活的基石。Intel统治PC的CPU市场,而ARM CPU则统治着嵌入式设备,全球 95% 以上的手机以及超过四分之一的电子设备都在使用 ARM 技术。ARM处理器作为广泛应用的嵌入式处理器,有其独特的体系结构。ARM CPU有两种工作状态,分为ARM状态和THUMB状态。在ARM状态下执行的是32位字对齐的ARM指令。在THUMB状态下执行的是执行16位半字对齐的THUMB指令。在这种状态下,PC寄存器的第1位来选择一个字中的哪一半。THUMB状态下有着更高的代码密度,在不需要32位运算场合时,使用THUMB指令可以有更好的效率,但THUMB不是一个完整的体系,只支持一般的功能,无法支持全部功能,高级功能必须要靠ARM来实现。ARM有七种处理器的运行模式,分为两大类:用户模式和特权模式。ARM CPU工作状态的转换并不影响CPU的运行模式。用户模式大多数的用户程序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的资源,例如一些特殊的寄存器。在用户模式,应用程序不能直接切换处理器模式。如果要进行模式切换,则必须产生中断才可以。产生中断后就进入了特权模式。特权模式特权模式包括除用户模式之外的其他六种模式:快速中断模式、中断模式、超级用户模式、中止模式、系统模式和未定义模式。其中除系统模式之外的其他特权模式又叫异常模式。在每一种异常模式下都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏。在特权模式下,程序可以访问系统的所有资源,也可以任意的对运行模式进行切换。每一个模式都有其特殊用途。快速中断模式当一个高优先级的中断产生时将会进入这个模式。这个模式是用来支持高速数据传输或通道处理而设计的。快速中断具有较高的中断优先级,进入这个模式后必须尽快处理中断事件并离开这个模式。快速中断的快速体现在:一是快速中断位于中断向量表的最后,因此可紧接异常向量表书写快中断处理程序,而不必进行程序跳转操作,避免了刷新指令流水线和高速缓存。二是快速中断有着足够的私有寄存器,从而可以减少了由于上下文切换造成的寄存器数据的保存和恢复工作而带来了额外开销。中断模式当一个低优先级的中断产生时就会进入这个模式,这些中断都要比快速中断的优先级低,当一个快速中断序列进入时它将被屏蔽。所以这个模式只是进行普通的中断处理。系统的外设可以通过中断进入这个模式来请求服务。超级用户模式当复位或软中断指令执行时就会进入这个模式,通常用于请求执行特定的管理功能,是操作系统使用的一种保护模式。软中断是用户模式中的程序用来调用特权操作指令,实现系统功能调用,它是通讯进程之间用来模拟硬件中断的一种信号通讯方式,中断源发中断请求或软中断信号后,CPU或接收进程在适当的时机自动进行中断处理或完成软中断信号对应的功能。中止模式当存取出现异常时就会进入这个模式,产生中止异常就意味着对存储器的访问失败。中止异常包括两种类型,一种是发生在指令预取时的指令预取中止,另一种是发生在数据访问时的数据中止。若处理器的预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,所取得的指令将会被标记为无效,但是异常不会立即发生,只有当处理器试图执行无效指令时,指令预取中止异常才会发生。如果在无效指令执行前发生分支跳转,那么异常就不会发生。若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。中止机制使得页面虚拟存储器机制得以实现。在采用虚拟存储器的系统中,处理器可以产生任意的地址。当某个地址的数据无效时,MMU将产生一个中止信号。这样中止异常的处理程序就必须找出异常中断的原因,使要求的数据可用,并重新执行被中止掉的指令。应用程序也就不需要了解实际可用存储空间的大小,也不需要了解异常中断对它的影响。未定义模式当产生一个未定义指令异常时,就会进入这个模式。若ARM处理器不认识当前指令,则将该指令发送到协处理器;若所有的协处理器都不认识该指令,则产生未定义指令异常中断。该异常中断处理程序就是用软件仿真系统中某些部件(协处理器)的一条指令如仿真浮点运算器的某条浮点运算指令等。如果不仿真,就直接返回,执行下一条指令。采用这种机制,就可以通过软件仿真扩展ARM或THUMB指令集。系统模式这个模式是供需要访问系统资源的操作系统任务使用,它不属于异常模式,不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是它属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的资源,同时该任务使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不会被破坏。参考文献【1】http:/lionwq.spaces.eepw.com.cn/articles/article/item/16478【2】http:/bbs.dzsc.com/space/viewspacepost.aspx?postid=103836【3】http:/bbs.21ic.com/icview-228310-1-1.html【4】http:/home.eeworld.com.cn/my/space.php?uid=80086&do=blog&id=28178【5】http:/baike.baidu.com/view/11200.ht
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号