博客专栏

EEPW首页 > 博客 > X86,你了解多少?

X86,你了解多少?

发布人:电巢 时间:2022-12-05 来源:工程师 发布文章
image.png


8008功能列表中最突出的新增功能之一是提供了具有直接寻址存储器位置的间接寻址,到一条指令,然后在该指令中获取该地址的数据内容间接寻址该引用存储器的内容的位置,location实际上是指向数据实际所在的另一个位置的指针。

在直接寻址中允许使用一些强大的软件技术说我们在内存中存储了五个句子,代表该句子中的每个字符一个字节并以句点终止,我们的程序会将句点视为句子的结尾,这就是我们的程序工作要到的数据字符串。随机选择五个句子中的一个,并传递第一个的地址所选句子在程序另一部分的特征,我们知道有五个句子,所以我们的程序首先选择一个随机一到五之间的数字,但是我们如何转换之间的这个随机数。如果我们创建一个列表,则为列表中句子的地址的一到五包含五行的表格,并在每一行中填入每个句子的地址,我们分别创建了一个所谓的向量表,该向量表现在可以通过指向句子地址来映射一到五之间的数字如果我们的程序随机选择了三个,则存储在表格规则中存储在表中第三行的地址,该地址指向我们的程序现在将在向量表上传递的第三句话很常见,但在8008软件中强大地使用间接寻址还实现了一种称为中断的机制,允许硬件中断信号和内部CPU事件以暂停程序执行并跳到很小的位置。

中断事件的代码示例的高优先级区域可能是实时时钟信号触发外部硬件,例如键盘或CPU内部状态的更改,甚至程序代码也可以。在执行中断服务代码后触发一个中断,原始程序将恢复中断以允许快速响应并降低开销。例如在鼠标移动时要在主程序之外执行的代码,硬件发出信号通知CPU暂停其当前代码执行并跳转至专门用于处理鼠标事件的代码,此代码的位置是通常由中断向量表指向,该代码可能会执行一些数学运算以更新当前的鼠标光标位置并单击状态,然后触发对光标位置的更新屏幕最终将CPU传回触发中断之前运行的代码。


机制是将外部硬件连接到CPU的关键部分,并且在我们今天所谓的设备驱动程序中大量使用的另一个副作用是能够暂停程序并控制CPU的能力是中断代码可以将对CPU的控制权返回到完全不同的状态。

8008为现代台式机奠定了基础在当今的处理器中可以找到其DNA的CPU,这是CPU的快速步伐。1974年,随着第一个真人版的推出,进化达到了另一个里程碑现代台式机CPU的前身Intel 8080。8080以n大规模半导体技术为基础而制造最高可达三分之一兆赫兹,比硅片有显着改善以前的CPU的门技术可以处理16位内存,允许使用多达64 KB。尽管它是8位处理器,但它也可以执行有限的16位。8080的运作是英特尔产品线中第一个利用外部总线控制器,该支持芯片负责接口通过RAM和其他系统硬件组件,这些通信是通常称为输入/输出或IO,它允许CPU进行接口具有较慢的内存和IO,且它们以较慢的系统时钟速度运行

比CPU的时钟速度还增强了整体电气噪声抗干扰8080被许多人认为是第一个真正可用的微处理器。然而,竞争的处理器架构在此期间不断涌现。


未来几年,桌面计算的兴起将由具有竞争性的zilog z80 CPU,具有讽刺意味的是,它是Intel自己增强的扩展,8080是由前英特尔工程师federico fuji intel设计的。这是一个非常先进的32位CPU,称为8800,该项目被证明是雄心勃勃,最终在商业上失败了在ia px 432于80年代初发布时,需要对z80威胁日益严重,这导致了始于1976年的更现实的项目。三个月之内,只剩下四名工程师,并且没有CAD工具,他们的回应的第一次修订是在两年之内创建的,将设计精炼成最终产品,以保持与以下代码的代码兼容性:流行的基于8080的产品线是CPU演进的下一个重要里程碑。

1978年6月8日,著名的英特尔8086的发布确保了其在x86即时可识别的绰号,计算历史。8086架构造就了Intel最成功的产品线,处理器采用ae86提供的更多以软件为中心的方法,旗舰处理器系列中前所未有的功能设计为全16位CPU,它提供了8个通用16位具有四个流寄存器的寄存器,能够用作双精度寄存器,在n Mo技术中实现的8位寄存器通过冒险迁移实现到英特尔的H mas工艺,它的时钟频率最高可达到10兆赫兹与这项新性能相结合,可以更好地管理内存,添加了8086托管内存也是其最著名的方式之一,具有20位地址容量的特性利用完整的兆字节内存来利用更大的地址空间,在16位系统中使用,直到在将哪些存储位置分配给了一个存储段地址,以及相对于网段本身的地址,可以认为是为系统内存的一部分分配一个16位查看窗口。

8086的管理机制允许四个同时段专门为可执行代码1分配的定义1为数据1的定义一个额外的多用途段中的堆栈被认为是麻烦的。一些程序员编写的系统,但对于当时的普通用户来说也是一种方便较小的程序,因为它提供了一个16位内存片的伪沙箱,如果您曾经在80年代或90年代末运行过dos comp程序文件,其中的该文件是设计使然的内存段的实际二进制转储,由处理器执行,并与以软件为中心的精神保持一致,通过增加对高级编程语言的支持,软件设计中常用的更强大的堆栈指令集,代码被组织成称为子例程的块,有时也可以称为功能过程或子程序。

image.png


为了说明这一点,假设我们制作了一个程序,该程序可以找到成千上万的数字对有效执行此操作,我们编写了一段代码取两个数字即可计算出它们的平均值,然后将其返回给我们的程序现在遍历调用子例程以执行的数字对列表计算并在以下情况下将结果返回到主程序序列,程序跳转到需要存储其当前内存的子例程位置,以便它可以在子例程后返回到主程序完成它还需要一个地方来存储要发送到子例程的数据,这可以通过一种称为堆栈的内存机制来解决,该机制用于存储内存临时信息,内存堆栈直接从自助餐厅取名弹簧式托盘分配器,当您将新托盘推入堆栈时当下一个人从堆叠顶部弹出托盘时,他们得到了顶部最后一个被推入的正是存储器堆栈操作数据的方式被推入,然后弹出处理堆栈的CPU指令操作实际上称为push和pop数据的某些变体,可以是反复推送,但是当弹出时,您总是会获得最新的数据将这种行为推入堆栈时,这种行为称为“先进先出”程序调用子程序的数据并将返回地址压入堆栈,子例程然后将数据从堆栈中复制出来而不弹出它,这是称为堆栈偷看,然后执行其工作,结果通常是完成后写入寄存器,然后弹出并返回地址,将发送的数据从堆栈中移出并返回到主程序,当调用子例程时,必须明确定义其数据要求,以便如果存在错误,则可以将正确数量的数据推入堆栈,该代码可以将不正确的数据量压入堆栈将在子例程调用中弹出,这可能导致堆栈改变,大小意外地转移到其分配的内存之外或循环本身就称为堆栈溢出,可能会导致程序,崩溃基于堆栈的崩溃的其他来源正在弹出错误的数据作为,返回地址并使子例程返回到内存中的随机位置。


CPU跳到意外地址并开始执行时发生崩溃,不是程序代码的数据,因为它可以有效地以编程方式执行机器变得毫无用处,使机器变得毫无反应。8086及其成功巩固了英特尔对密钥的承诺,结构体系或复杂指令集计算机的特征,尽管8080使用了辅助架构,并且其模型得到了增强。

80-85的继任者8086标志着英特尔向全面发展的过渡,采用Sisk体系结构,其健壮的指令集仅包含一个少数使用sisk架构的cpus是一个相对罕见的设计与主要风险或减少指令集的计算机相比时的选择。即使在今天,x86 cpus体系结构仍然是唯一的主线处理器。使用辅助指令设置RISC CPU和Sisk之间的差异,CPU位于各自的指令集中以及它们的执行方式,在RISC CPU中,指令尽可能保持简单和原始。

整个指令集通常很小,结构紧凑解码非常简单,执行迅速,一般来说,指令每个时钟周期处理一次。但是,在RISC中,复杂性的负担由软件承担必须以编程方式综合复杂的操作,这是一个很好的例子。实际上,许多早期的RISC处理器缺乏以下能力:将数字相乘就需要几条指令来执行简单的操作软件中的乘法运算,因为RISC使用密集的程序代码执行复杂的操作基于风险的程序需要更多的内存,早期的计算内存非常昂贵,价格超过50,000美元每兆字节此外,每次获取新内存时访问内存的速度都很慢,指令附带了内存访问瓶颈的性能损失

。Sisk体系结构是Sisk设计中针对这些问题的解决方案,指令集功能强大,并支持以下硬件的许多复杂功能:使用更少的指令和更少的操作,可以使cpu复杂程序更容易,使用内存我们的风险乘法代码需要几条指令,现在可以用一条乘法指令代替执行,因为软件需要较少的指令来执行任务,因此减少了访问内存减轻了一些内存装瓶压力。Sisk设计的优势在于它使用了正交指令集,当指令集可以在所有指令中运行时,该指令集被认为是正交的。

CPU支持的寻址形式,例如指令是否可以在内存中的任何寄存器以及任何直接或间接地址正交,它的操作数没有限制。通过消除执行改组数据的需求来降低代码复杂度在程序中权衡Sisk体系结构是因为指令的复杂性使得指令执行的整体性能较低,它们需要几个时钟周期才能解码和执行。娘娘腔的P中的指令您设计起来非常复杂且棘手进一步优化RISC吞吐量的技术处理器很难转换为Sisk处理器,因为我们将随着时间的推移探索该系列的后续部分,内存成本最终下降和Sisk提供的优势在今天迅速减少,并且Sisk设计唯一真正支持的是当代,8086的后继产品主要是因为它需要向后兼容过去这种痕迹的支持仅是外观深厚的现代CPU的模糊界限通过在其核心处使用RISC设计并包装,在风险和风险之间进行区分使用两种体系结构中的技术将它们放在Sisk外层中,除了采用Sisk架构之外,它的性能也会降低自从执行以来,在8086中还以新的方式对访问内存进行了打击。一条指令,通常很慢,需要更多的时钟周期才能达到完成空闲时间的时间是在CPU的提取区域(称为pre)中进行的。提取下一条指令,内存将被加载到CPU中,而最后一条指令仍在执行此改进的处理吞吐量特别是对于不需要记忆的指令访问,因为它减少了CPU处理预取的瓶颈称为流水线技术的简单形式流水线是安排处理周期中的哪些步骤以减少处理。


随着进一步发展,瓶颈和增加吞吐量将探索流水线,8086的性能得到了进一步的提高,使用8087的专用协处理器的能力,浮点运算传统的沃德二进制数据表示整数值。CPU轻松处理它们并通过其算术逻辑执行算术单位,但是它的局限性在于执行包含小数点浮点数的更高级的数学通过在单词的位之间编码十进制数来解决此问题,因为浮点数从根本上与CPU算法不兼容在它们上执行数学运算的硬件必须在软件中以低效率完成专为浮点数设计的代码,突破了技术的局限性。创建8087浮点协处理器之前的时间,浮点处理进入硬件室,8087设计用于与8086直接截取指令,从总线上为其本身进行处理并对其进行处理独立于cpu在需要时自行获取内存执行基于浮点的加法减法的能力,乘法除法和平方根也可以计算出先验指数对数或触发指标等功能,计算8087可以执行50,000个浮点运算,其次,由于它独立于CPU运行,因此可以进行设置,在CPU执行时同时执行数学运算,其他程序指令可协同使用8086处理器的成功

与1970年代后期在计算历史上的另一次大获成功有关新的个人计算机行业被Commodore之类的公司所主导Atari Apple和Tandy公司的年度预计增长超过在80年代初期,有40%的个人计算机市场引起了人们的关注大型机巨头IBM的谣言开始传播IBM进入市场。在1981年8月12日仅12个月的快速发展阶段之后个人计算机或PC首次由8086的变体提供支持。

8088立刻获得了成功,PC体积小巧轻便且易于使用被定位为个人计算机,任何人都不得宣布超过40,000个单位的大型公司后,第一年就卖出了十万辆,它很快超过了Apple 2,成为最畅销的个人计算机。在这段时间里,来自truffaut数据的两位年轻企业家没有合作微软获得了为IBM开发操作系统的合同PC被称为PC DOS,他们的第一个主要产品巩固了Microsoft的统治地位,在行业中,并直接导致它成为最大的公司之一。PC的成功成就了使IBM创建兼容IBM的公司机器的硬件和软件包开始大量涌入市场,以支持这个新平台使PC迅速成为个人计算机的标准,它已经超越了最初的IBM根基而发展了几十年,但仍然保持着,如今在个人计算机市场上的主导地位使这种流行成为可能当今个人计算机和服务器中PC架构的持久性8086的遗产。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词: x86

相关推荐

技术专区

关闭