您的位置:首页 >电信 >

x86是多少位(什么是x86架构)

我们都知道Intel生产了不计其数的CPU产品,如果按照体系架构进行分类的话,8086划一刀,因为在8086之前还没有架构这个概念。剩下的这一段漫长的时间直到今天,总归是两个体系架构,32位架构(又称x86)和64架构,说起架构就不得不说每个架构下的模式。虽然有许多人在写相关的文章,但是看完之后还是一头雾水,不知道是不是作者的境界太高了。今天斗胆说一下自己的理解,难免存在疏忽的地方,勿怪。

首先说一下这些比较特殊的几款处理器:8086,80186 和 80286,虽然这些处理器都是16位的,但是也划入了32位架构的范围。真正的第一款32位的处理器是80386**,可以说32位架构是16架构的扩展版本,64位架构是16位架构扩展的扩展。可以毫不夸张地说,甚至是现在新出现的64位CPU也依托于x86架构(x86的16位架构)。

关于这一点是如何做到的要说明一下,市场上所谓的32位和64位,实际上说的是寄存器能够存储的最大数是32位或者是64位,当然这里说的32位和64位不是生活中的10进制数,而是计算机中二级制数,这一点不要弄混了。

大家都知道,一个CPU有与之相配的指令集,没有了指令集的CPU也没什么卵用了。所以这还要从8086说起,毕竟它是“最初蓝本”,8086用的是16位寄存器,80386用的是32位的寄存器,设计师为了秉承兼容设计理念,在原来8086的指令集上进行了扩展,也就是x86-16到x86-32的转变,而这些扩展(新加入)的指令是为了让寄存器多出来的部分正常的工作,毕竟原来是16,现在是32,多了一倍。64位的CPU差不多也是同样的道理。(当然这些不仅仅体现在指令集上,还需要额外的技术,软硬件的支撑)

32位架构

实模式

好了,大前提总算是说完了,现在说说32位架构的实模式(也叫真8086模式或者快速8086模式)。

上面提到过,32位架构是基于16架构的扩展版本,虽然这样能保证CPU可以运行早期遗留下相对“低端”的程序,但是也把当时8086的一些“生活习惯”给学会了,比如眼界比较小(寻址1M),直脑筋(单任务)等。

可以说从80386开始,这个来自8086的“遗产”被一代代地继承了下来。你不知道的是,在开机和重启的时候(也仅仅只有开机和重启的时候),计算机会悄悄地进入实模式然后再切换成保护模式,虽然实模式运行的时间极短但的确是运行了。悄悄告诉你一个秘密,那就是关于8086模式下第21根地址总线的(A20 Gate),计算机从实模式切换到保护模式就是通过它来实现的。

电脑从开机到没有真正运行起来之前都处于实模式下,在这个模式下,32条地址总线只是启用了20条,通过这启用的20条地址总线,最多可以访问到1M大小的常规内存,1M不多吧,可是细算起来这1M包括BIOS-ROM和部分的内存条内存。如果需要访问1M以外的内存就需要启用更多的地址总线(8086和8088除外,只有20根地址总线)。

总结一下,实模式是为了兼容历史遗留的程序作出的让步,这也就是你开机为什么需要这么长时间(呲牙)。物理地址=左移4位的段地址 偏移地址

保护模式

严格来说保护模式是在286处理器最先引入的一种概念,也称为“虚拟地址保护模式”。当然在286时代保护模式只是一种概念,真正出现是在80386处理器上,虽然16位的286也可以模拟出32位的保护模式。286的虚拟保护模式导致了混乱出现,为了避免这样的事发生,从80386开始就完全抛弃了286的这种虚拟的保护模式,从这一点来说286就是一个过渡产品。

说完了保护模式的出现,现在我们来说说它的好处。简单来说就是给进程所属的内存装了一道门,程序只能访问属于自己的地址空间。打个比方来说,在电脑上同时听音乐(音乐软件:任务A)和玩游戏(游戏客户端:任务B),系统会给音乐软件和游戏客户端各分配一段内存空间。在保护模式下,音乐软件是不可能访问到游戏客户端的数据的,不妨再做个假设,假如这两个软件是兼容的(实际上根本不可能),没有保护模式的干预,会出现什么情况?音乐软件突然变成人物去打怪了,本该去打怪的游戏却放出了音乐。

上面的例子旨在说明一些问题,千万不要当真。好处当然不止对进程内存的保护,还有对分页机制和硬件的虚拟存储什么的,这么多的特性构成了保护模式,保护模式是为了提升系统的多任务和系统的稳定性。

当然保护模式下的寻址和实模式可以说完全不同了,在实模式下,段寄存器内存储的是偏移地址,在保护模式下,段寄存器里存储的不在是偏移地址,而是一个指向GDT(全局描述符表)和LDT(局部描述表)的指针。简单来说,就是分配偏移地址的工作被这两货给取代了,也只有在GDT和LDT的帮助下才能获得真正的物理地址。

虚拟8086模式

解释完实模式这个解释起来就相对的简单多了,说白了就是运行在保护模式下的虚拟的实模式。我们都知道Intel CPU从8086年代就已经编写了许多应用程序,为了保证这些历史遗留的程序在新版的CPU上比较完美地运行,就出现了虚拟8086模式,虽然在CPU加点(开始)和复位(重启)的时候已经在实模式下运行了一些程序,但是这远远不能满足需求。

在程序真正运行起来后,也就是处于保护模式下时,用户如果运行了比较老的程序,比如8086年代开发的程序,系统就会自动进入虚拟8086模式来运行这些程序。虽然这看起来和实模式差不多,但事实上还是有区别的,最大的区别在于虚拟的8086模式支持多任务,且每个人任务都是以实模式的方式工作的。

相关推荐

猜你喜欢

特别关注