问题标签 [vliw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - 用于 VLIW 架构的 GCC 编译器基础架构
您知道 GCC 编译器基础架构中存在多么强大的 VLIW 架构支持吗?我知道 GCC 支持一些 VLIW 架构。看着它们,似乎管道优化留给了另一个优化层。有没有好的(不是 GCC 内部文档)材料?
architecture - 用于多媒体应用的节能和速度高效架构
我正在评估提供以下功能的嵌入式处理器架构:
- 8个SIMD协处理DSP类内核,
- 每个核心可以做一个 8 路 SIMD
- 每个内核也是一个 8 个执行槽 VLIW。
我想使用高视频编码器(H.264、1080p、60fps)或 3D 视频编码器在此处理器/硬件上运行。我正在尝试进行架构探索并找到
处理器的哪些优点应该有助于以电源/周期/内存有效的方式执行多媒体(视频/图像)信号处理应用程序。
什么外设、内存结构、高速缓存或内部内存;附加汇编指令有助于高效执行多媒体应用程序的代码
什么是多媒体(视频/图像)处理应用中最省电和最快速的处理器架构
PS:它必须是低功耗的,因为它适用于便携式应用。
任何指针(论文/博客)都会有所帮助。
谢谢你。
-广告。
cross-platform - 用于 VLIW 架构的 LLVM 编译器基础架构
您知道LLVM 编译器基础架构中存在多么强大的VLIW架构(或EPIC ,如 Itanium)支持吗?
有没有好的文件/幻灯片材料?
cross-platform - 超标量和 VLIW
我想问一些与 ILP 相关的问题。
超标量处理器是标量和矢量处理器的混合体。那么我可以说向量处理器的架构遵循超标量吗?
同时处理多条指令不会使架构成为超标量,因为流水线、多处理器或多核架构也可以实现这一点。这是什么意思?
我读过“超标量 CPU 架构在单个处理器内实现了一种称为指令级并行的并行形式”,超标量不能使用多个处理器吗?谁能给我举个使用超标量的例子?
VLIW,我已经阅读了这篇文章,第 9 页的图 4。它显示了一个通用的 VLIW 实现,没有复杂的重新排序缓冲区以及解码和调度逻辑。没有解码的术语让我感到困惑。
问候, 阿纳斯·安贾里亚
parallel-processing - 由具有不同延迟的操作组成的非常长的指令
考虑一个问题宽度等于N的 VLIW 处理器:这意味着它能够同时启动N个操作,因此每条非常长的指令最多可以包含N个操作。
假设 VLIW 处理器加载一个很长的指令,该指令由具有不同延迟的操作组成:属于同一很长指令的操作可能在不同的时间结束。如果一个操作在属于同一条很长指令的其他操作之前完成它的执行会发生什么?后续操作(即属于下一条超长指令的操作)能否在当前超长指令的剩余操作执行之前开始执行?还是一条很长的指令等待属于当前很长指令的所有操作完成?
opencl - Opencl 和 HD5850
我没有 HD5850 但我怎么知道 opencl 的最大工作组大小?HD5850 的首选浮点矢量宽度是多少?我怀疑它是 5,但在拥有 5850 的朋友计算机上不起作用。尝试了宽度 4,但现在工作速度不够快,我怀疑工作组大小不是最佳的。为 25k 50k 和 100k 粒子做 NBody 由 x,y,z, vx,vy,vz 的 float8 个变量组成。
谢谢。
x86 - 总是需要在推测执行中重新排序缓冲区?
我了解在推测执行中需要重新排序缓冲区。但是,给定一系列没有任何分支的非推测指令,为什么所有这些指令仍然必须经过 ROB 然后按顺序提交?由于没有控制风险,并且假设存在寄存器重命名以避免 WAR 和 WAW 风险,那么在这种情况下 ROB 是否必要?
我能想到的一个原因是处理不精确的异常。还有其他原因吗?
opencl - ALU 如何在 AMD GPU (VLIW) 中执行指令?
我想问一些关于 OpenCL 编程的问题。我知道四分之一的波前可以为每个周期时钟发出指令,并且需要四个周期时钟来调用波前。要完成 VLIW 架构中的指令,需要 8 个周期的时钟。因此,调用另一个波前是一种解决方案。如果我调用两个波前,那么它将是八个周期时钟。因此,在波前 A 被执行(4 个周期时钟)之后,波前 B 被执行(另一个 4 个周期时钟)。波前 B 执行完毕后(总周期时钟为 8),波前 A 将用另一条指令再次执行。
问题是:
如果每个处理单元的四个 ALU 已经用于执行另一条指令,ALU 如何执行另一条指令?
例如:在循环 1 中,工作项 0-15 开始执行指令“ADD”。每个处理单元中的第一个 ALU(SIMD/计算单元中总共 16 个 PE)计算“ADD”指令。
它发生在波前的第 2、3 和 4 周期(现在每个 PE 中有 4 个 ALU 忙于执行“ADD”指令)在第 5 周期,波前 2 的四分之一开始执行指令“SUBTRACT”。处理元件中的 ALU 如何计算指令,因为它们忙于从第一个波前计算“ADD”指令(请记住,在第一个周期中四分之一波前的指令“ADD”执行未完成,因为它需要 8 个周期时钟)?
更新:8个周期时钟意味着写入后读取的延迟
compiler-construction - 与动态调度相比,编译器指令调度的优势是什么?
如今,超标量 RISC cpu 通常支持乱序执行,具有分支预测和推测执行。他们动态地安排工作。
与乱序 CPU 的动态调度相比,编译器指令调度的优势是什么?编译时静态调度对于无序 CPU 是否重要,还是仅对于简单的有序 CPU 重要?
目前似乎大多数软件指令调度工作都集中在 VLIW 或简单的 CPU 上。GCC wiki 的调度页面也对更新 gcc 的调度算法不太感兴趣。
parallel-processing - 指令级并行 (ILP) 方法
我正在尝试了解指令级并行性中使用的方法以及它们之间的差异。我的问题是,给定一个最初在没有指令级并行性的处理器上运行的指令集,可以使用其中一种方法在新处理器上实现指令级并行性以及为什么/如何。新处理器将执行相同的指令集并运行与原始处理器相同的程序二进制文件,但性能会更好。选项包括:
1)乱序执行(Tomasulo算法)
2)流水线
3)超标量
4)VLIW