计算机系统与编程术语解析
术语表
A
仿射函数
形如以下形式的函数:f(x₁, x₂, …, xₙ) = c₁x₁ + c₂x₂ + … + cₙxₙ + c₀,包含 n 个变量 xᵢ 和 n 个常量 cᵢ(另见仿射索引函数)。
在数组索引的上下文中,当定义表达式是循环归纳变量的线性组合时,称为 仿射索引函数 。例如,索引函数 2*i + j 是关于归纳变量 i 和 j 的仿射索引函数,但索引函数 i*j 不是仿射的(另见仿射函数)。
面向切面编程(AOP)
是一种旨在通过允许将横切关注点与应用程序其余部分分离来提高软件代码模块化的编程范式。AOP 通常需要对编程语言进行扩展或使用新语言来描述横切关注点(使用切面),并使用一种工具将这些关注点与应用程序源代码合并(这一过程在 AOP 社区中称为 织入 ,负责织入的工具称为 织入器 )。AOP 方法的示例包括用于 Java 的 AspectJ 和用于 C 语言的 AspectC++。
自动调优
是根据一个或多个性能指标(如能耗或执行时间)推导出满足特定目标的高效配置的自动过程。在此背景下,配置被定义为由参数值、代码/算法变体和/或编译器转换/优化组成的元组。自动调优可以在离线(编译时)、在线(运行时)或两者结合的情况下进行。
基本块
是指指令的最大序列(可能在汇编或中间表示级别定义),如果执行了该序列中的第一条指令,那么该序列中的所有指令都将被执行。换句话说,基本块是一个指令序列,其中没有跳转到基本块内部的任何指令,也没有从基本块内部跳转出去。
B
big.LITTLE
是由 ARM 开发的一种异构计算架构,该架构在同一设备中将高能效的较慢处理器(LITTLE)与功能更强但耗电较高的处理器(big)相结合。
分块和循环分布
可以通过为数组的每个维度指定数组索引与抽象处理器之间的映射关系,将数组划分到多处理器平台上的分布式内存中。如果将大小为 N 的维度以分块方式在 P 个处理器上分布,则每个指定处理器被分配 N/P 个连续元素。在循环分布中,N 个元素中每隔 P 个元素被分配到同一个处理器。一个数组可能在一个维度上采用分块分布方案,在另一个维度上采用循环分布方案。
内置函数
针对目标机器的特定函数,可利用特定的指令集架构支持。
C
云计算
是通过互联网以按需计算、存储和通信资源,以及计算平台和软件的形式,按使用量付费交付的服务。
代码专门化
是指根据特定的输入参数、操作数、数据集、工作负载或环境属性的值,推导出代码段的定制版本。
空间计算
是指不同硬件设备或元素的执行。在可重构架构的背景下,空间计算指的是这些架构中所有活跃的逻辑单元以完全异步的方式并行运行。也就是说,与 时间计算 (参见时间计算)不同,在空间计算中存在多个控制线程实例并发执行。
时间计算
是一种由线程抽象支持的顺序执行模式,该模式围绕程序计数器和存储的概念组织。线程指令使用存储中的数据作为输入,在完成时更新或创建存储中的新数据。
可配置逻辑块(CLB)
是一种可配置的数字逻辑结构,是现场可编程门阵列(FPGA)的基本组成单元。通常由触发器(FF)、查找表(LUT)以及其他离散逻辑单元或门电路等逻辑单元组成。
控制步
在高层硬件综合设计实现中,控制单元的常见步骤。在同步设计中,控制步通常对应于一个时钟周期。
周期精确模拟器
是一种跟踪执行(和退出)给定代码段或应用程序所需时钟周期数的模拟器(参见指令级模拟器)。
D
数据并行、SIMD 和 SPMD
是一种并发执行形式,其中不同的处理单元操作于同一数据结构(例如数组)的不相交部分,通常以高度同步的方式进行(即步调一致)。
指令级数据并行执行通常被称为 单指令多数据(SIMD) ,即对单个数据项或空间上相邻的数据项的不同部分执行相同的指令(另见 SSE 和 MMX 指令)。在较粗粒度级别上,数据并行执行也称为 单程序多数据(SPMD) ,其中处理单元以较松散的执行控制操作于不相交的数据项。
数据流计算
是一种执行方式,其中处理器从任务图(或工作流)中获取任务,并在其输入可用时执行。任务的输出随后会传播到其他任务的输入(通常通过使用 FIFO 缓冲区),从而触发更多任务的执行。与数据流式计算不同,输入之间没有时间同步的概念。
数据流式计算
是一种执行形式,其中处理器从任务图(或工作流)中获取任务。当数据通过输入端(通常受数据速率控制)以流式(或“泵送”)方式传输,并经过后续各个任务的输出和输入时,任务被触发执行。与数据流计算(参见数据流计算)不同,数据流式计算的输入项是“时间同步”的,这意味着它们作为“一项”在整个任务图中被处理,从而产生相应的输出项集合(另见任务级流水线)。
定义-使用链
是一种数据结构,用于识别从某个程序变量定义(写操作)可达的所有使用(读操作)。
延迟
指在输入发生变化时,计算或逻辑电路产生输出变化(如果有的话)所需的时间。
依赖方向向量
是指给定循环的迭代空间中的一个向量,用于定义该循环中不同指令实例之间的最小依赖距离。它是在 n 维笛卡尔空间中的循环上定义的 n 维向量。该距离可以是一个常向量,此时称为 依赖距离向量 ,或者以汇总形式包含近似距离向量,表示为正、负或未知距离。
依赖距离向量
是一个 n 维向量,用于表示 n 维循环嵌套的迭代空间图,它捕捉了数组访问之间的依赖距离。虽然该向量描述了依赖关系的“形状”,但它丢失了依赖关系的起始位置。例如,在一维 i 循环中,数组引用 A[i] 和 A[i−1] 之间的依赖距离为 1 次迭代。
设计空间探索(DSE)
是一种通过探索不同配置(如输入参数、源代码变换和编译器选项)来生成优化设计的技术。每个生成的设计可能表现出不同的“性能”度量,例如功耗/能耗或实际运行时间性能,并在这些度量之间提供不同的权衡(参见帕累托点)。
动态分析
是一种在运行时执行的程序分析。通过对应用程序使用一个或多个输入数据集进行测试,动态分析可以揭示无法静态收集的信息,例如特定循环的迭代次数,或过程参数的具体值。
E
嵌入式领域特定语言(Embedded DSL)
是一种继承宿主语言相同语言结构的领域特定语言(DSL),同时添加新的领域特定原语,使程序员能够在更高层次的抽象上工作。嵌入式领域特定语言的一个关键优势在于,DSL 描述通常可以使用与宿主语言相同的工具链进行编译。
H
硬实时约束
是指必须满足需求中规定的所有截止时间才能被视为可行解的约束(与软实时约束相对)。具有硬实时约束的系统示例包括核设施、飞行控制系统和医疗生命支持系统。
硬核处理器
是一个术语,用于描述 VLSI 设计中包含硅片布局的模块,该模块是处理器布局的 VLSI 掩模的复制品。这也通常被称为“硬 IP”。
硬件设计与综合
是指使用面向硬件的编程语言(如 Verilog 或 VHDL)来描述数字电路的结构和行为,包括硬件的空间组织以及时序控制的过程。生成针对特定可重构器件(如现场可编程门阵列)的配置文件的过程称为硬件综合,需要特定的设计流程工具链。
硬件调节参数
是用于调整硬件操作特定方面的接口,例如时钟频率、缓存共享以及分配给操作系统(OS)与用户程序的存储容量。与应用特定的软件调节参数不同,硬件调节参数会影响系统上所有应用程序的运行。
硬件综合
是将 VHDL 或 Verilog 描述转换为特定的寄存器传输级(RTL)描述的过程,随后由其他工具用于综合出目标硬件的位级规范,或直接针对预定义的 IP 模块库进行综合。
软硬件协同设计
是指设计包含硬件和软件组件的计算系统的过程。它本质上是一种协同并发设计过程,因为在针对应用程序的特定部分选择具体硬件组件时,必须考虑其整体影响(参见软硬件协同综合和软硬件划分)。
软硬件协同综合
是软硬件协同设计过程中的一个阶段,负责综合目标系统的软件代码和硬件组件,以及其接口(包括通信和同步)(参见软硬件协同设计)。
软硬件划分
是确定应用程序的哪些部分将在目标架构的软件或硬件组件上执行的过程(参见软硬件协同设计)。
硬件在环
是一个术语,用于描述使用真实硬件作为其部分组件的系统计算机仿真。 高层次综合(HLS) 是一种软件工具,可将用 C 语言等高级编程语言指定的计算转换为 VHDL 或 Verilog 等硬件描述语言的硬件规范。这通常被称为“从 C 到门电路”的高层次综合。
热点区域(也称为关键段)
是指程序代码中占用程序执行时间的很大比例(或部分)的区域,因此是优化和/或硬件加速的主要候选对象。
I
指令级模拟器
是一种可以逐条跟踪可执行程序代码执行过程的模拟器。它使用户能够检查各个指令字段,并验证给定程序的功能(参见周期精确模拟器)。
指令集架构
处理器的指令集架构(ISA)定义了处理器可以执行的所有命令,提供了在平台上运行的应用程序与其硬件之间的接口。
物联网(IoT)
是嵌入式设备、电器及其他物理设备之间的协同互连,使它们能够通过互联网共享数据。
内在函数
针对特定架构(例如,利用缓存行大小和流水线深度)的指令序列的内置函数。这些通常被称为内在函数,并在相应的调用位置进行内联。
迭代空间图
是一种表示方法,其中嵌套循环的所有迭代及其之间的依赖关系都被明确表示出来。在某些表示方法中,每次迭代都会明确指出与该迭代相关联的所有指令,以及迭代内部和迭代之间的相应依赖关系。
迭代编译
是编译器优化和/或代码转换连续应用于程序并进行评估(例如通过执行程序)的过程。选择最能满足特定目标(例如性能提升、节能)的编译器优化。
车道(Lane)
在 SIMD 单元中,向量被划分为多个子元素的独立处理段,这些元素被打包成向量(形成元素组)并在 SIMD 单元的上下文中使用。例如,在 128 位向量中,我们可以考虑四个 32 位元素的车道(即一组四个 32 位元素)、两个 64 位元素的车道,等等。
延迟(Latency)
是指从计算开始到结束所需的时间(通常以时钟周期数表示)。这一特定术语常见于指令的流水线执行上下文中,例如提到某条特定指令具有 K 个周期的延迟。
词法前向/后向依赖
循环携带依赖中,如果语句 S2 在循环体中出现在语句 S1 之前,则 S1 和 S2 之间的依赖称为词法后向依赖,否则该依赖被视为词法前向依赖。
小端和大端
可寻址字中字节在内存中的存储顺序。在大端顺序中,一个字的最高有效位(或字节)存储在较低物理地址中。例如,一个 4 字节(32 位)的字,其最高有效字节存储在地址 N,最低有效字节存储在地址 N + 3。在小端顺序中,最高有效字节存储在地址 N + 3,而最低有效字节存储在地址 N。
逻辑综合
是将用寄存器传输级(RTL)风格描述的硬件设计转换为由门电路(例如与门、或门)和寄存器(触发器)组成的较低级别设计表示(电路网表)的过程。
查找表(LUT)
是一种硬件结构,在 FPGA 中,它实现了一个具有 N 个输入(通常在 3 到 6 之间)以及一个或两个输出的表。该表可以重新配置(即其内容可以在制造后或现场上传),并且可以实现为静态随机存取存储器(SRAM)。在 FPGA 中,每个查找表(LUT)可以实现一个 N 输入逻辑函数、移位寄存器和/或分布式存储器。
M
多核和多核处理器架构
多核架构由大量(同构的)核心组成,这些核心松散耦合,通常因其高度的并行性而用于高性能应用程序。相比之下,多核处理器架构的核心数量较少,但每个核心功能更强大。此外,这些核心紧密耦合,通常共享缓存资源,因此更易于进行细粒度并发管理,因为其同步开销低于使用消息传递方式进行通信的情况。
映射(Mapping)
将硬件综合阶段中的电路网表(逻辑综合的输出,由门电路和寄存器组成)中的所有逻辑和存储元素映射到通用的 FPGA 资源(如查找表和寄存器)上。
O
重叠架构
是由更细粒度的元素集合综合而成的粗粒度架构。常见的重叠架构基于细粒度的 FPGA 可配置模块,定义一种“虚拟”的粗粒度架构,其中包含多个处理单元,每个处理单元拥有自己的算术逻辑单元、本地存储,并通过特定的互连资源或片上网络与其他处理单元通信。
所有权计算规则
是 HPF(高性能 Fortran)编译器使用的一种规则,该规则规定赋值语句左侧元素的所有者处理器执行相应的计算。在此情况下,拥有右侧数据的处理器必须将数据通信给左侧元素的所有者,随后由该所有者执行计算。
P
帕累托点
是一组设计点,用于在可能存在冲突的准则之间进行权衡,即改进一个准则必然导致另一个准则变差。通常用于多目标优化的场景中。
性能
是执行给定工作负载所需时间的数值倒数,通常用于评估计算机架构和应用程序的场景中。因此,性能的提高意味着执行时间的减少。然而,通常也会以更通用的方式使用性能这一术语,以涵盖其他度量,例如功耗和/或能耗,或特定算法的整体效率(包括其结果的质量)。
阶段检测
是应用性能分析中的一个术语,开发人员使用该术语来描述其应用程序中在性能、能耗或内存访问模式行为、浮点运算强度或其他基于硬件或软件的度量方面具有显著不同行为的代码段。
阶段选择和排序
是编译器优化(转换)阶段中的一个术语。该阶段通常被构造成一系列较低级别的阶段或“遍次”。编译器优化的有效性在很大程度上取决于所选择的阶段(或遍次)以及它们应用的顺序。通常,特定的阶段(或遍次)顺序会被多次应用。
R
可重构结构
是一个通用术语,用于描述包含可编程计算单元(例如可配置逻辑块中的情况)和/或也可配置的互连的计算架构。
寄存器传输级(RTL)
是一种设计规范,用于以寄存器(触发器)和组合逻辑组件(例如由与、或、非门等逻辑元件构成的电路)来建模同步数字电路。
行优先和列优先
是多维数组变量的两种常见内存布局。在行优先布局中,数组按行在内存中排列,而在列优先布局中,数组按列在内存中排列。这种内存布局是基于虚拟地址定义的,而不是物理地址,因为底层硬件和操作系统可能会对连续的虚拟地址在地址顺序上施加特定的映射。
暂存器内存
是一种存储结构,通常不属于传统处理器地址空间,而是计算单元或处理器专用的,用于显式保存和恢复临时数据。
着色器核心
是一种可编程计算核心,旨在通过硬件实现特定的顶点、几何和着色操作。
时序余量
是一种用于标识计算完成与特定时间标记之间延迟或延迟的度量。例如,如果目标是在 100 个时钟周期内完成计算,而实际实现仅用 80 个时钟周期就完成了,则该执行的时序余量为 20 个时钟周期。时序余量可能为负,这意味着实际完成时间已超出预设的时间标记。
切片
是现场可编程门阵列逻辑资源的组合,每个切片包含少量(通常为 2 个)可配置逻辑块或 CLBs(参见查找表和可配置逻辑块)。
软实时约束
是指即使错过部分截止时间仍被视为可行的约束。一个次要的性能度量会根据错过截止时间的数量和严重程度来评估系统的效用。这类系统的示例包括声音/图像系统,其中错过截止时间可能导致质量损失,但不会造成灾难性后果。
软核处理器
是指将处理器组件映射到设备底层架构上的术语。这通常用于 FPGA 的场景中,其中处理器规格被映射到可配置逻辑块(CLB)上。这通常被称为“软 IP”(另见重叠架构)。
软件调节参数
是指可以针对特定输入进行调整以提高效率或有效性的算法参数。程序员可以通过这些所谓的软件调节参数进行调优,这些参数通常通过图形用户界面(GUI)或一组应用程序偏好设置来提供。
源到源编译器
是一种编译器,它接收使用 C 语言或 FORTRAN 等编程语言编写的高级描述作为输入,并输出(经过转换的)高级源代码,可能仍使用相同的高级编程语言。源到源编译常用于分析、源代码级插桩以及源代码转换(例如,代码重构)等场景。
静态分析
是一种在编译时对程序或其部分进行的分析。使用数据流和控制流分析的组合来推导信息,例如定义-使用链和活跃性。
子字级并行(SLP)
指令可对基础字大小的子集进行并发操作。例如,可以使用子字指令在 32 位字上对四个 8 位元素进行操作,执行诸如掩码或对 8 位整数值求平均等操作,并在算术运算(如加法和减法)中考虑子字边界。
超线性、次线性、线性扩展
是在分析加速比度量时使用的术语。当存在多个可用的处理单元时,工作负载可以分布在这些单元上。我们可以预期,如果处理器数量加倍,并且工作负载分配得当且所有处理器均以峰值性能运行,则性能也会加倍。在这种情况下,我们称性能实现了线性扩展。然而,如果性能提升不到一倍,则称性能为次线性扩展。当处理器数量增加导致每个处理器的工作负载减少时,可能会出现内存或 IO 瓶颈,从而导致次线性扩展。另一方面,计算可能实现超线性扩展——如果性能提升超过两倍,则称为超线性。例如,当分配给每个处理器的工作负载能够完全容纳在缓存内存中时,就可能提高各个处理器的性能。此外,在分布式系统中,工作负载的减少还可能导致每台机器中的网络、内存和磁盘存储瓶颈减少或被隐藏。
脉动阵列
是一种同构的并行计算架构,其中每个处理节点以非常规则的方式互连,通常形成一个二维网格。这些架构通常通过沿一个或多个方向流动和/或脉动的“波”式数据流动来完成其计算。
T
任务并行
是一种并发执行形式,其中不同的任务或代码段由不同的处理单元并发执行,在任务需要共享数据或满足控制和数据依赖时,需要在它们之间进行显式同步。
任务级流水线
是一种执行模式,其中不同的处理器(或特定于应用程序的架构)以流水线方式执行数据相关的任务序列。执行任务之间的同步和数据通信通常通过 FIFO 缓冲区或其他通信通道实现。
线程级并行
是一种并行性形式,其中任务在同一个执行环境(地址空间)内异步执行,并使用特定的同步原语(如信号量和锁)进行通信。线程环境由操作系统管理。
时间跨度
执行时间或调度上下文中的时间段。
工具链、工具流程、设计流程
一组协同工作的综合和编译工具的通用名称,用于生成可执行规范和/或硬件设计规范。
循环次数或迭代次数(循环迭代)
指循环体执行的次数。如果在编译时可以确定循环边界(例如,它们是常量),则循环次数可以静态确定。
U
单位步长访问(步长为一的访问)
是在连续访问数组元素时使用的术语,在内存的连续位置上执行操作。
使用-定义链
是一种数据结构,用于识别程序变量使用(读取)时所有可以到达该使用的定义(写入)。因此,UD 链使编译器能够确定哪些可能的写操作(定义)会影响特定读操作的结果。
V
向量长度
是向量指令可以处理的连续数据项的数量。向量长度通过提供正确的因子来支持自动向量化过程,以便展开和条带挖掘,从而生成合适的向量指令。
向量广播
是指将向量的所有元素赋值为某个特定值时使用的术语(该值可以由标量变量、常量或向量的元素给出)。
向量化/自动向量化
是大多数编译器支持的一项功能,它包含程序分析和代码转换,能够从基于循环的计算中自动推断出向量指令,以最大化性能。
W
最坏情况执行时间(WCET)
是一种时序分析,用于计算一段代码在所有可能的数据输入和环境条件下的最坏情况执行时间。该度量对于实时安全关键系统的调度分析至关重要。
Z
零步幅
是一种步幅类型,其中数组中的单个元素(在特定位置)将在所有计算中使用。从概念上讲,它可以在向量运算中作为常量使用。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐



所有评论(0)