计算机体系结构基本概念

​ 体系结构是操作系统和硬件中间的一个抽象层,对于一款CPU而言,绝对的硬件技术水平不是最重要的,体系结构对指导硬件实现和对于系统发挥性能来说是更关键的部分。本科的时候学过一门课《计算机组成与体系结构》,当时老师懂得多,讲得也很好,奈何当时太年轻,不知道好好学,,ԾㅂԾ,,……今天重新把这些概念拾一拾。

1. 引言

  • 计算机的发展
    • 计算机生产技术的发展。进步一直很稳定,但近来逼近物理极限。
    • 计算机设计的创新。体系结构方面
  • 体系结构的成功
    • 人们不再使用汇编编程,降低了对目标代码的兼容性
    • 出现了独立于厂商的标准化操作系统Unix以及linux等。降低了引入新体系结构的风险、成本。
  • RISC体系结构设计的创新点(或者说关键技术)
    • 指令级并行的开发。流水线、多指令发射
    • 缓存的使用,更复杂的组织和优化方式。
  • 单核处理器性能提升结束。硬件复兴结束。以下两大瓶颈,转而寻求一个芯片上提高集成核心的数目,而不是加快单核处理器的速度。
    • 风冷芯片最大功耗问题
    • 无法有效地开发更多指令级并行
  • 转折:处理器性能的提高从单纯依赖指令级并行(ILP),转向数据级并行(DLP)线程级并行(TLP)。还有请求级并行(RLP)

2. 并行体系结构分类和实现

  1. 应用程序中主要有以下两种并行。

    • 数据级并行。同时操作许多数据项
    • 任务级并行。创建了一些能够单独处理,但大量采用并行方式执行的工作任务
  2. 计算机以如下4种主要方式来开发上述两种应用并行

    • 指令级并行。流水线、推理执行、多指令发射

      标量流水(Super Scalar) 将一条指令分成若干个周期处理以达到多条指令重叠处理,从而提高cpu部件利用率的技术叫做标量流水技术。

      即对每条指令的执行进行更细的划分来支持流水线操作,需要微操作(micro operation)的支持。

      超级标量是指cpu内一般能有多条流水线,这些流水线能够并行处理.在单流水线结构中,指令虽然能够重叠执行,但仍然是顺序的,每个周期只能发射(issue)退休(retire)一条指令.超级标量结构的cpu支持指令级并行,每个周期可以发射多条指令(2-4条居多).这样,可以使得cpu的IPC(InstructionPer Clock) > 1, 从而提高cpu处理速度. 超级标量机能同时对若干条指令进行译码,将可以并行执行的指令送往不同的执行部件,在程序运行期间,由硬件(通常是状态记录部件和调度部件)来完成指令调度. 超级标量机主要是借助硬件资源重复(例如有两套译码器和ALU等)来实现空间的并行操作.

      即 硬件上支持多条指令的流水线。支持乱序发射,乱序执行。

      超级流水技术:主要是指硬件上流水线结构切分的更细了,CPU的主频可以提得更高;缺点就是:流水线级数越多,重叠执行的执行就越多,那么发生竞争冲突得可能性就越大。latency也变得更大了。

      超长指令字:是一条指令来实现多个操作的并行执行。每条指令长度达上百位,可以执行多个操作,可以减少内存访问次数。

      这个级别得并行,是由编译器来决定并且组织得。通常VLIW机只有一个控制器,每个周期启动一条长指令,长指令被分为几个字段,每个字段控制相应的部件。由于编译器需要考虑数据相关性,避免冲突,并且尽可能利用并行,完成指令调度,所以硬件结构较简单。

    • 向量体系结构和图形处理器(GPU)。将单条指令并行应用于一个数据集,以开发数据级并行。大型机,超级计算机

    • 线程级并行。在紧耦合硬件模型中开发并行。此模型允许在并行线程之间进行交互。

    • 请求级并行。在程序员或操作系统指定的大量去耦合任务之间开发并行。

3. 体系结构定义

  • 区分计算机体系结构和微结构
    • 体系结构(computer architecture)定义的是硬件和软件的接口,并没有指定实现。RISC-V即定义的体系结构。
    • 微结构(processor microarchitecture)则描述的是如何设计一个处理器来符合一个体系结构。体系结构并不定义微结构。
  • 现有指令集
    • CISC指令集的代表:x86和x86-64。
    • RISC指令集的代表:ARM(ARMv7,AArch32,AArch64,thumb, thumb2)
    • 其他的指令集:MIPS, PowerPC, SPARC

3.1 指令集体系结构设计的7个维度

  1. ISA的分类。被划归到通用寄存器体系结构中。有以下两种主流版本。

    • 寄存器-存储器ISA:80x86.许多指令都可以访问存储器。
    • 载入-存储ISA:ARM和MIPS。只能用载入load和存储store指令来访问存储器。
  2. 存储器寻址。

    • ARM和MIPS要求操作对象在存储器中必须是对齐的。即,若对象大小为s,字节地址为A,必须保证A mod s =0 。访问速度会快一些
    • 80x86不需要对齐。
  3. 寻址模式。可以再回去看微机原理温习一遍。几种架构的寻址模式大同小异。

    • MIPS寻址模式:寄存器寻址、立即数寻址和位移量寻址。
  4. 操作数的类型和大小。

    32位单精度:4个字节存储。64位双精度:8个字节存储。

  5. 操作指令.

    数据传输指令、算术逻辑指令、控制指令和浮点指令 、IO指令,特殊指令。

  6. 控制流指令。均支持条件转移、无条件跳转、过程调用和返回。

    • ARM和MIPS过程调用将返回地址放在一个寄存器中
    • 80x86将返回地址放在存储器的一个栈内。
  7. ISA的编码。

    • 固定长度。ARM和MIPS固定32位指令,简化了指令译码(后来又扩充了支持16位指令,以便缩小程序规模)。
    • 可变长度,80x86编码可变长度,变化范围1-18个字节。可以占用较少的空间。
    • 寄存器数目和寻址模式的数目都对指令的大小有显著影响。

3.2 体系结构与微结构的相互影响

  1. 处理器微结构
    • 流水线
    • 多发乱序流水线
    • 多线程流水线
    • 多核
    • 特殊流水线:VLWI, vector, GPU
  2. 体系结构与微结构的互相影响
    • CISC和RISC的特性。 RISC的每条指令功能复杂度基本一致,执行时间基本一致,编码长度基本一致,流水线控制简单,指令调度简单,代码密度相对CISC较小。 CISC的指令功能复杂度不一,执行时间长短不一,编码长度也不一样。直接运行导致流水线控制复杂调度困难,一般动态拆做类似RISC的微指令执行。代码密度相对RISC较高。
    • 操作数:单指令寄存器个数。从栈寻址到多寄存器寻址在代码密度,流水线调度,执行时间上的考虑。
    • 操作数:内存寻址方式。RISC的内存寻址方式单一,调度简单,可做单独流水线,但指令密度高。CISC调度方式复杂,流水线设计复杂,指令密度高。
    • 环境变量: 条件执行对流水线的影响。
    • 指令编码:RISC编码和CISC编码,解码难度,取址难度,分支预测难度等等。
    • 编译器: 编译器是指令集和高级语言的接口。 语言的抽象等级越高,ISA的使用就更加受限:ABI,systemcall,context switching。 通用逻辑寄存器的功能异化,数量对编译器的影响。
    • 操作系统:硬件资源的管理者,特权软件。 操作系统需要ISA的支持:控制寄存器,特权指令,内存模型,IO模型等等,hyervisor模式。
本文结束啦感谢您的阅读