哪些指令需要并行处理,这需要做判决,根据判决的地方不同,multi-Issue又分成了两个阵营:Superscalar和VLIW. 世上没有无缘无故的爱,也没有无缘无故的恨,没有无缘无故的Superscalar,也没有无缘无故的vLW.Superscalar和VLIW也是随着历史趋势慢慢发展起来的。 如果将指令的并行化显示的声明在指令格式中,处理器只是傻呼呼的执行,这种方式称为VLIW( Very Long Instruction Word)。 VLIW的典型代表是DSP。 TI DSP所使用的汇编代码格式如下: 指令前面的“||”表示这条指令和上条指令在同一个Cycle执行,如果没有“||”,则表示这条指令在下一个Cycle执行。
在这一章节中,Adi Fuchs 为我们介绍了 AI 加速器的架构基础,包括指令集架构 ISA、特定领域的 ISA、超长指令字 (VLIW) 架构、脉动阵列、可重构处理器、数据流操作、内存处理。 超长指令字 (VLIW) 架构 VLIW 架构是由 Josh Fisher 在 20 世纪 80 年代早期提出,当时集成电路制造技术和高级语言编译器技术出现了巨大的进步。 VLIW 架构由算术和存储单元的异构数据路径阵列组成。异构性源于每个单元的时序和支持功能的差异:例如,计算简单逻辑操作数的结果可能需要 1-2 个周期,而内存操作数可能需要数百个周期。 一个简单的 VLIW 数据路径框图。图源:普林斯顿大学 VLIW 架构依赖于一个编译器,该编译器将多个操作组合成一个单一且复杂的指令,该指令将数据分派到数据路径阵列中的单元。 VLIW 架构的优势在于,通过指令编排处理器数据路径的成本可能显着降低;缺点是我们需要保证数据路径中各个单元之间的工作负载得到平衡,以避免资源未得到充分利用。
超长指令字 超常指令字(VLIW:VeryLongInstructionWord)是由美国Yale大学教授Fisher提出的。 通常VLIW机只有一个控制器,每个周期启动一条长指令,长指令被分为几个字段,每个字段控制相应的部件。 VLIW机器较少,可能不太容易实现,业界比较有名的VLIW公司之一是Transmeta,在加州硅谷SantaClara(硅谷圣地之一,还有SanJose,PaloAlto)。 它做的机器采用X86指令集,VLIW实现,具体资料可以去访问公司的网站。
一般在 CPU 中会采用流水执行,乱序执行和超长指令集(VLIW)架构来提高计算效率。 超长指令集 VLIW超长指令集(Very Long Instruction Word,VLIW)是一种处理器架构,其特点是一条指令可以同时包含多个操作,这些操作可以在同一时钟周期内并行执行。 VLIW 处理器在编译时就将多个操作打包成一条指令,因此并行执行指令由编译器来完成,编译器的优化能力直接影响程序在超长指令字处理器上的性能,由硬件执行编译之后的并行指令,从而提高指令级并行度和性能。
超长指令字 超常指令字(VLIW:VeryLongInstructionWord)是由美国Yale大学教授Fisher提出的。 通常VLIW机只有一个控制器,每个周期启动一条长指令,长指令被分为几个字段,每个字段控制相应的部件。 VLIW机器较少,可能不太容易实现,业界比较有名的VLIW公司之一是Transmeta,在加州硅谷SantaClara(硅谷圣地之一,还有SanJose,PaloAlto)。 它做的机器采用X86指令集,VLIW实现,具体资料可以去访问公司的网站。
在 2012 年,AMD 正式推出了代号为的 Tahiti 的新 GPU,这个 GPU 的特别之处在于采用了名为 Graphics Core Next 的全新架构,指令集由 VLIW5/VLIW4
一般在 CPU 中会采用流水执行,乱序执行和超长指令集(VLIW)架构来提高计算效率。 超长指令集 VLIW超长指令集(Very Long Instruction Word,VLIW)是一种处理器架构,其特点是一条指令可以同时包含多个操作,这些操作可以在同一时钟周期内并行执行。 VLIW 处理器在编译时就将多个操作打包成一条指令,因此并行执行指令由编译器来完成,编译器的优化能力直接影响程序在超长指令字处理器上的性能,由硬件执行编译之后的并行指令,从而提高指令级并行度和性能。
2.2 超长指令字(VLIW) 如前文所述,Simple TPU中有两个基本的计算单元——矩阵乘法阵列和池化计算单元。除此之外,还有一些没有显式描述的执行单元,譬如载入和存储。 由于TPU的专用性,以及计算过程中不存在跳转和控制的原因,采用VLIW设计多发射处理器似乎是一个很适合的方式。 在Simple TPU中借鉴了VLIW的思想进行设计,如下所示(示意图) ? . & pooling& store result field指定了将操作数(act.)读取到寄存器,完成pooling和归一化计算以及将结果写回到存储器的过程 VLIW的设计放弃了很多的灵活性和兼容性 INT8数据类型进行计算 采用了脉动阵列优化计算 没有采用缓存,没有分支跳转,预测和数据冲突处理(编译器完成) 而从本文的内容可以看出,TPU还采用了简单的指令集设计+SIMD+向量体系结构+VLIW
巴贝扬的团队采用了更新的超长指令字(VLIW)架构,即通过一个编译器来确保指令同时在不同的处理器上被执行。 巴贝扬在同年成立了MCST(Moscow Center of SPARC Technologies),专注于 VLIW架构的处理器Elbrus 2000(E2K)的开发。 这款处理器的CPU可同时执行 Elbrus VLIW 和 Intel x86 代码,每一时钟可以执行 24 条指令,仅凭 1.2GHz 的工作频率就能带来 10.2GFLOP/s 的运算性能。
除了神经计算引擎,Myriad X 通过如下方式独特地实时整合了成像、视觉处理和深度学习推理: 可编程 128 位 VLIW 向量处理器:通过为计算机视觉工作负载而优化的 16 个向量处理器可以灵活地同时运行多个成像和视觉应用流水线 Movidius VPUs 通过整合三种架构能够在低功耗的情况下实现高性能,从而为深度学习和计算机视觉工作负载提供持续的高性能: 一组可编程 VLIW 向量处理器,其中的指令集为计算机视觉和深度学习工作负荷进行了优化
Instruction Set Computing,RISC) ; 显式并行指令集运算(Explicitly Parallel Instruction Computing,EPIC); 超长指令字指令集运算(VLIW 基于VLIW研发的CPU架构主要用于早期的小型机,现在已基本消亡。 而EPIC是Intel和HP从VLIW中发展出来的,目前好像只有Intel的IA-64架构下的纯64位微处理器的Itanium/Itanium 2采用EPIC。
事实上,编译器问题可能会破坏安腾(Itanium)的 VLIW 架构,但许多 DSA 依赖于 VLIW,包括 TPU。 鉴于 TPUv2 和 TPUv3 共享 322 位 VLIW 指令包长度,传统架构思想是 TPUv4i 和 TPUv4 尝试保持向后的二进制兼容性,但谷歌选择了编译兼容。
除了神经运算引擎,Myriad X还配有128位VLIW向量处理器,可配置MIPI通道数量增加,视觉加速器增强,还安装了2.5MB同质片上存储器。
TPU 计算核心标量单元(Scalar Unit)上图是 TPU 核心的简单图示,我们可以看到标量单元是处理计算的起点,它从指令存储器中取出完整的 VLIW(超长指令集),执行其中的标量操作,并将指令传递给向量和矩阵单元进行后续处理 VLIW 由两个标量槽、四个向量槽(其中两个用于向量加载/存储)、两个矩阵槽(一个推和一个弹出)、一个杂项槽(一个简单的例子是延迟指令)和六个立即数组成。那我们看一下指令到底是从哪里获得的。 Core Sequencer 不再从 CPU 获取指令,而是从 Instruction Mem 取出 VLIW 指令,使用 4K 32-bit 的标量内存来执行标量运算,有 32 个 32 位的标量寄存器
使用这种以编译器为中心的方法,我们冒着VLIW处理器重复故障的风险。然而,我们认为有两个根本性的转变对我们有利。 其次,与VLIW处理器不同,DPU(特别是FPGA驱动的)的目标不是为所有/任何工作负载提供性能,因此,限制了优化设计空间。 例如,hXDP已经证明,使用简单语言(eBPF)的编译时启发(Bernstein条件)可以用于使用VLIW软核处理器的数据包处理工作负载的自动并行[35]。 在第一阶段,eBPF IR通过开源hXDP编译器进行并行和优化VLIW转换[17,35]。在第二阶段中,优化的eBPF IR通过eBPF-to-HDL编译器用于最终的HDL代码生成。 与hXDP不同,Hyperion直接运行HDL代码,而不是作为FPGA上的VLIW软核处理器。
所有这些架构的定义特征都不同,主要的特征有 字大小:8、16、31、32、64位,有时更多 设计风格:RISC(指令少,操作简单),CISC(指令多,执行复杂的操作,VLIW(指令长,同时并行做很多事情
1、VLIW全程是very Long instraction word,超长指令字。 2、主内存与cache的映射有很多种。
此外,Myriad X 还有四个 C 编程 128 位 VLIW 向量处理器,来自 Myriad 2 的可配置 MIPI 通道,以及扩展的 2.5 MB 片上存储器,更多固定功能的图像/视觉加速器。
同年8月,英特尔宣布推出新一代视觉运算处理器Movidius Myriad X,内建16颗128位元的VLIW向量处理器,并且额外整合独立的硬体类神经网路加速器Neural Compute Engine
确切的细节很少,但是它具有完全可编程的VLIW TPC,并支持所有主要框架。 Habana声称其性能是Nvidia的Tesla T4的三倍,效率是其两倍,同时延迟也低得多。