(一)学习英特尔处理器一般架构原则

前言

分析软件安全的时候必然需要详细理解软件执行的环境,也就是x86。如果很熟悉的大佬可以回避。。。。为了能活着写完,我在这里忽略英特尔的其他处理器。以下提到的都是英特尔核心处理器。

概览

一个计算机主要资源是内存和处理器。在装有英特尔处理器的电脑里DRAM芯片作为内存,一个或多个CPU芯片用作逻辑处理器。这些资源都被系统软件管理。一般来说,一台机器里面有两个系统软件,操作系统,内核系统。英特尔架构被设计来支持多线程。一个操作系统分配资源来完成多线程。云服务器上的机器还可能会同时运行多个操作系统。系统程序用虚拟化技术把各个操作系统隔离开运行。
而虚拟化主要技术就是地址转换(用来给软件在内存上映射可用空间)这样的隔离可以避免其他软件的崩溃,或者是恶意软件威胁到其他软件或修改软件的内存。
另一个虚拟化关键技术是CUP可执行的软件特权级别。硬件特权分离通过干扰管理它的系统软件,确保崩溃或恶意程序可以威胁到其他软件。进程通过创建执行线程说明自己的需求计算能力大小,线程的执行有操作系统分配逻辑处理器完成。操作系统给每一个进程表示自己有无限多的逻辑处理器可以完成它们的线程。现在的操作系统是抢占式多线程,逻辑处理器每隔几毫秒在所有的线程之间改变一下运行状态。这一过程通过切换上下文来完成的。这些都是由虚拟机管理器来完成的。
一般逻辑处理器的处理速度都大大的超过了DRAM的吞吐速率。现在的计算机体系结构中许都复杂性都源于弥补这种速度差距,最近的英特尔CPU依赖超线程,无序执行和缓存等等都是产生隐患的原因。
英特尔处理器包含许多级别的中间存储器,它们比DRAM快得多,但也小了几个数量级。最快的缓存器是逻辑处理器中的寄存器。其他的中间缓冲器被称为caches。英特尔架构要求应用软件各自明确分工管理寄存器。与此同时,缓存透明地加速了DRAM请求,而且大多数情况下对软件是不可见的。计算机有多个逻辑处理器,所以也就有多个缓存分布在CPU芯片。在多套接字系统上,缓存分布在多个CPU芯片上。因此,Intel系统使用缓存一致性机制确保所有缓存具有相同的上下文。由于缓存一致性,程序员可以构建对软件透明的缓存,并且分布式在缓存存在的情况下仍然正确运行。然而缓存一致性并不包括地址转换使用的专用缓存,系统软件必须采取特殊措施来保持这些缓存的一致性。
说到外设,CPU通过I/O设备与外界通信,CPU通过连接所有这些组建的系统总线与DRAM芯片和I/O设备通信。编写Intel架构编写的软件通过I/O地址空间和内存地址空间与I/O设备通信。系统软件必须配置CPU的缓存来识别I/O设备使用的内存地址范围。CPU请求设备可以通过调度中断完成,终端会导致逻辑处理器停止执行当前线程,并调用软件中一个特殊处理程序。
Intel系统有十分复杂的计算初始化序列,这是因为需要支持大量的不同种类的外设和不同版本的操作系统。对于任何保护Intel架构计算机的行为是一个挑战。
Intel工程师用处理器微指代码备来完成较为复杂行为,这极大的帮助管理复杂的硬件。微代码对软件开发人员来说是完全不可见的,而且它的设计大部分都没有文档。然而,为了评估任何架构更改建议的可行性,必须能够区分用微代码实现的更改和能通过修改硬件实现的更改。

计算模型

首先根据一张图讲一下Intel架构的简单运行模型。主要是为了便于让大家容易理解后面要讲的概念。
简单的计算模型
这上面的图给出几个关键部分,内存是一列存储单元,地址用自然数从0开始。其显着特征是在地址处读取存储器单元的结果必须等于写入该存储器单元最近写入。
逻辑处理器连续运行内存中指令
处理器有自己内部的存储—寄存器。寄存器由SRAM单元组成,读写速度比DRAM更快,但单位面积价格更贵。指令明确输入执行简单的计算,并将结果存储在输出位置。处理器内部寄存器为大多数指令存储输入和输出数据。(ADD,RDX,RAX,RBX)就像上图提到的两个寄存器,RIP就不用说了,RSP是处理器运行程序时使用调用堆栈中顶层元素的内存地址。
在正常情况下,处理器反复从RIP中存储的内存地址读取一条指令,执行该指令,并更新RIP以指向下面的指令。与许多RISC体系结构不同,Intel体系结构使用可变大小的指令编码,因此直到从内存中读取指令时才知道指令的大小。在执行命令时,处理器可能会遇到不满足指令先决条件的异常。当这种异常发生的时候这条指令不会把结果存储。
当指令导致错误时,处理器停止正常的执行流程,执行记录错误处理程序流程。简而言之,处理器首先根据错误的性质查找处理错误的代码的地址,并设置执行环境,为执行错误处理程序做好准备。
在每一个时钟周期,至多有一个设备连接到系统总线并发送了一条消息被其他连接到总线上的设备接收。连接到总线的每个设备解码总线上发送的所有消息的操作代码和地址,并忽略不需要它参与的消息。计算机通过连接到系统总线的键盘、显示器和网卡等I/O设备与外部世界通信。设备主要响应处理器发出的请求。然而,设备也有能力发出中断请求,将外部事件通知处理器,比如用户按下键盘上的一个键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值