📜  影响高速缓存性能的因素

📅  最后修改于: 2021-09-27 14:27:45             🧑  作者: Mango

计算机由三个主要部分组成。一个 CPU、一个内存和一个 I/O 系统。计算机系统的性能在很大程度上取决于 CPU 从内存中获取指令并将其写入同一内存的速度。计算机正在使用高速缓存来弥合处理器执行指令的能力与从主存储器获取操作所需的时间之间的差距。

程序使用缓存执行所需的时间取决于

  • 执行任务所需的指令数。
  • 执行所需任务所需的平均 CPU 周期数。
  • CPU 的循环时间。

在设计任何产品或功能时,设备的通用结构保持不变,但会因客户要求而改变需要优化的设备特定部分。工程师如何改进设计?很简单,我们首先建立一个将输入连接到输出的数学模型。

Execution Time = Instruction Count x Cycles per Instruction x Cycle Time
=Instruction Count x (CPU Cycles per Instr. + Memory Cycles per Instr.) x Cycle Time
=Instruction Count x [CPU Cycles per Instr. +(References per Instr. x Cycles per References)] x Cycle Time

这四个框代表了四个主要的痛点,可以解决这些痛点,以在机器上产生显着的性能变化,无论是积极的还是消极的。等式的第一个元素是执行函数所需的指令数量取决于指令集架构,并且在所有实现中都是相同的。它还依赖于编译器的设计来生成高效的代码。需要优化编译器以执行具有较少执行指令的函数。

每条指令的 CPU 周期也取决于编译器优化,因为编译器可以选择 CPU 密集程度较低且路径长度较短的指令。流水线指令也有效地改进了这个参数,这使得指令最大化硬件资源优化。

每条指令的平均内存引用数和每个内存引用的平均周期数相结合,形成每条指令的平均周期数。前者是编译器的体系结构和指令选择算法的函数。这在架构的实现中是不变的。

指令集架构:

  • 精简指令集计算机 (RISC) –
    精简指令集计算机(RISC)是最流行的指令集之一。这是由 ARM 处理器使用的,它们是产品中使用最广泛的芯片之一。
  • 复杂指令集计算机 (CISC) –
    复杂指令集计算机 (CISC) 是一种用于非常专业化操作的指令集架构,已经对其进行了彻底的研究和研究,甚至处理器微架构也仅为该特定目的而构建。
  • 最小指令集计算机 (MISC) –
    与现代处理器相比,最小指令集计算机 (MISC) 8085 可能被认为属于这一类。
  • 显式并行指令计算 (EPIC) –
    显式并行指令计算(EPIC)是一种广泛用于超级计算机的指令集。
  • 一台指令集计算机 (OISC) –
    一台指令集计算机 (OISC) 仅使用汇编。
  • 零指令集计算机 (ZISC) –
    这是计算机上的神经网络。

编译技术:

  • 单程编译器 –
    此源代码直接转换为机器代码。
  • 两遍编译器 –
    源代码被转换为中间表示,中间表示被转换为机器代码。
  • 多通道编译器 –
    在此源代码从前端转换为中间代码,然后在中端之后将其转换为中间代码,然后传递到后端转换为机器代码。

CPU实现:

微架构取决于参与该过程的工程师的设计理念和方法。举一个简单的例子,制作一个电路,从公共插孔获取输入,通过放大器,然后将数据存储在缓冲区中。

可以采取两种方法来解决这个问题,即在开始时放置一个缓冲器,然后放置两个放大器,然后将电流旁路通过这两种方法,如果应该放大两种不同类型的信号或存在细微差别,这将是有意义的在放大器的饱和区。或者,我们可以创建一个公共电流路径,并引入对存储数据的缓冲区的时间依赖性,从而完全消除对缓冲区的需求。

处理器的 VLSI 微体系结构中的这些微小差异会在两家不同公司的相同指令集实现中产生巨大的时序差异。

缓存和内存层次结构:

这再次取决于构建系统的用例。使用通用计算机也称为个人计算机,它可以执行各种各样的数学计算并产生广泛的结果,但对于硬实时系统中的非实时系统来说却相当准确,这将是非常不明智的。

一个非常大的区别是访问缓存中的数据所花费的时间。

可以在您的计算机上运行一个简单的实验,您可以找到特定型号处理器的缓存大小,并尝试访问该数组周围的数组元素,当尝试访问大于缓存的数组时,会观察到大量速度下降尺寸。