V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
feast
V2EX  ›  程序员

RISC 里面的"快速处理指令的电路"具体指的是什么电路单元?

  •  
  •   feast · 2020-11-03 23:33:54 +08:00 · 2038 次点击
    这是一个创建于 1241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    类似老黄 GPU 的双倍频率 ALU ? NVIDIA 的 GPU 可以看做是 MIMD RISC 处理器,但是可是 x86 好像也有类似 ALU 倍频的功能啊,我反正没找到任何实物可以支撑这一点,这教材够古老的,0 几年的

    'RISC 是精简指令集 CPU,指令位数较短,内部还有快速处理指令的电路,使得指令的译码与数据的处理较快,所以执行效率比 CISC 高,不过,必须经过编译程序的处理,才能发挥它的效率,IBM 的 Power PC 为 RISC CPU 的结构,CISCO 的 CPU 也是 RISC 的结构。'
    第 1 条附言  ·  2020-11-04 00:15:48 +08:00
    所谓的“快速处理指令”,意思大概就是单指令,从压入处理器开始,到走完流水线,消耗的时间更短,RISC 本来流水线就短,当然更快,常见的 ARM 流水线长度仅有个位数,x86 至少都是十几级,当然单指令相比下来处理速度就更慢了
    31 条回复    2020-11-04 16:41:31 +08:00
    user8341
        1
    user8341  
       2020-11-03 23:42:32 +08:00   ❤️ 1
    快速处理指令的电路……大概是指流水线。RISC 主要的优势就是指令简单、一致,方便设计流水线。
    feast
        2
    feast  
    OP
       2020-11-03 23:47:58 +08:00
    @user8341 流水线长度,ARM 的确很短,但是怎么体现出来比 X86 快的?按照 EDA 行业的经验,电子在硅基上的迁移速率都是一样的,何来的单位长度内速度更快这个说法?个人感觉这个说法是有问题的
    feast
        3
    feast  
    OP
       2020-11-03 23:50:30 +08:00
    指令短,消耗的地址位少,当然周期内处理的指令数据就更多,但是什么叫“快速处理”,感觉被微电子坑了
    vk42
        4
    vk42  
       2020-11-03 23:53:02 +08:00
    从后面“使得指令的译码与数据的处理较快”的描述,应该是指指令和数据预取吧,RISC 定长指令做这些比较简单,但 x86 也不是没有,只是不等长指令实现太复杂
    feast
        5
    feast  
    OP
       2020-11-03 23:54:47 +08:00
    只能说,同样的时间内,ARM 的整条流水线能被执行更多次,但是如果堆叠到 x86 流水线同等长度的话,理论上流水线延迟应该是和 x86 一样的,可能这就是“快速处理”说法的来源
    feast
        6
    feast  
    OP
       2020-11-03 23:55:32 +08:00
    @vk42 x86 内部的微操作其实早就是类似 RISC 的了,x86 理论上不能叫纯 CISC
    user8341
        7
    user8341  
       2020-11-03 23:56:02 +08:00
    @feast
    速度快是因为并行化了,一个数据通路同时执行很多条指令。如果你只看 1 条指令,确实没有更快。但是它是多条并行执行,所以才更快。
    feast
        8
    feast  
    OP
       2020-11-03 23:56:39 +08:00
    @vk42 不用过度复杂理解,ARM 主要是把译码交给软件了,x86 则是硬件实现,前者所以硬件要简单很多
    feast
        9
    feast  
    OP
       2020-11-03 23:57:27 +08:00
    @user8341 问题是并行化 x86 的 MMX 可是早就有的
    user8341
        10
    user8341  
       2020-11-03 23:59:40 +08:00
    @feast 都是并行化没错,但是原理不一样。MMX 是 SIMD,这里说的是 pipeline,不是一个层面上的。
    vk42
        11
    vk42  
       2020-11-03 23:59:50 +08:00
    @feast 这和内部微操作有啥关系,你编译器做再多,CPU 也只能从内存取机器码做译码,你还能直接从编译器跳过取码器直接喂执行单元不成……建议 lz 先补下体系结构的课程
    des
        12
    des  
       2020-11-04 00:00:22 +08:00   ❤️ 1
    user8341
        13
    user8341  
       2020-11-04 00:01:39 +08:00
    SIMD 是单指令多数据流。pipeline 还是单数据流哦,只不过这个数据流上同时执行着多条指令(的不同阶段),神奇吧。
    feast
        14
    feast  
    OP
       2020-11-04 00:03:02 +08:00
    @vk42 我知道你的意思,我的意思是 RISC 的编译器的确就是替代了一部分 x86 译码这块的功能,生成的指令执行难度跟 x86 内部的微操作类似,不然也不会有那么多人抱怨 RISC 编译器难写了
    feast
        15
    feast  
    OP
       2020-11-04 00:06:02 +08:00
    @user8341 pipeline 上同时喂多个指令?看来这真是我的知识盲区了,是不是跟 x86 的 OOO execution 有点类似?
    vk42
        16
    vk42  
       2020-11-04 00:06:30 +08:00   ❤️ 1
    另外对于国内计算机教材实在不能细扣,建议配合国内经典教材服用……
    feast
        17
    feast  
    OP
       2020-11-04 00:08:00 +08:00
    @des 目前来看,应该就是描述的流水线,理解出现了问题
    vk42
        18
    vk42  
       2020-11-04 00:09:06 +08:00
    @feast 就是多发射啊,可以去了解下 superscalar
    vk42
        19
    vk42  
       2020-11-04 00:10:41 +08:00
    @feast 另外 OOO 不是 x86 独有的,现在体系大部分都有 OOO
    feast
        20
    feast  
    OP
       2020-11-04 00:11:47 +08:00
    @vk42 问题是 x86 早就是超标量了啊,起码在这个教程之前的 Pentium II 都已经是了,8086 就不说了
    vk42
        21
    vk42  
       2020-11-04 00:18:54 +08:00
    @feast 这个教材字面描述很模糊,基本就是科普级别,不知道是什么课程,这种严谨和新不新没啥关系。你也知道了现在很多 CISC 和 RISC 分界已经没有那么严格了,很多东西内部实现大家都是共享的,更多区别还是机器码表示形式上了,对 CPU 实现来说那就是取码器和译码器的区别了。之前写玩具 CPU 把 x86 实现换个 decoder 简单改改就能上 MIPS
    feast
        22
    feast  
    OP
       2020-11-04 00:29:41 +08:00
    @vk42 你也注意到严谨性这个问题了,我会告诉你是职称定级的内容?问题就在这里,RISC 同等长度的流水线执行会比 CISC 快?可能有我不了解的具体流水线设计差异导致流水线复杂度不同,但以我的知识储备来看为了提供相对繁多的的分支,x86 作为 CISC 其流水线每一级肯定是比 RISC 要复杂一些的,每一级从微电子设计的角度来讲是会导致行波走过的距离不一样的,最后速度肯定跟 RISC 不同
    feast
        23
    feast  
    OP
       2020-11-04 00:32:29 +08:00
    @vk42 像老黄的 Denver,极端的用 VLIW 的 SIMD RISC 模拟 x86,x86 指令译码都在用软件实现,CISC 和 RISC 其实本质上就是软件和硬件难度平衡的调整,两个方向,AMD 放弃 VLIW 就是因为编译器实在太难写了
    vk42
        24
    vk42  
       2020-11-04 00:49:13 +08:00
    @feast 评职称的东西那更没必要细扣了,看都没人看的东西……
    还是那个道理,x86 和 RISC 最大的区别在取码译码,本质上和流水线本身设计没太大关系。Intel 早几年搞深流水是为了极致压迫 cycle 上高频,而且你说反了,深流水的每一级是更简单了。简单的例子,原本把大象放进冰箱要三步
    1. 打开冰箱
    2. 把大象放进去
    3. 关上冰箱
    你现在为了增加级数,每一步都再拆分,比如打开冰箱分成握住把手,拉开一半,再拉一半这样
    但当然级数多了整个流水线的控制确实复杂了。

    #23 超标量不止有 VLIW,CPU 的多发射可以做自动多指令发射,感兴趣可以去看看体系架构圣经: Computer Architecture: A Quantitative Approach

    这问题扯得也太远了……就你原问题,结合那个句子前面句,我还是认为说的是取指加译指单元
    feast
        25
    feast  
    OP
       2020-11-04 01:53:22 +08:00 via Android
    @vk42 哈哈,只是感觉学得太透还不如人家死记硬背的,考虑的东西过多,的确,当年 Prescott 主频就是 31 级深流水线带来的,但是他这个说法很像是在诱导人理解为在整个 CPU 内部,存在类似 NVIDIA 的双倍频 ALU 的东西,然而我实际印象中除了算数单元,没见过指令分支能倍频的,看来还是得多看点英语教材,国内的语言风格实在不严谨
    feast
        26
    feast  
    OP
       2020-11-04 02:00:08 +08:00
    @vk42 另外,我对整段话其他的都没有疑问,主要就是这个“快速处理指令”比较迷惑人,“使得指令的译码与数据的处理较快”,他这个较是和上文的 CISC 做对比,没有 x86 指令到类 RISC 微操作的译指自然快
    user8341
        27
    user8341  
       2020-11-04 07:20:41 +08:00
    David Patterson 有篇科普文章概括介绍了 RISC 与 x86 的恩怨情仇。

    链接:ieeexplore.ieee.org/document/8220478

    Intel 赢了上半场

    硬件将 x86 指令转换为类似 RISC 的指令,从而允许 intel“抄袭”RISC 带来的种种性能改进,比如长流水线、每个时钟周期获取多条指令,分支预测。凭借出色的半导体处理和电路设计,80×86 ISA 最终提供了最快的处理器。它在 2000 年代取代了 RISC 的小型服务器市场,以补充其对 PC 市场几乎的垄断。

    后 PC 时代 RISC 逆转胜

    鉴于 PC 和服务器的微处理器的晶体管预算很大,因此在能量和硬件转换方面的额外开销是可以承受的,但是对于嵌入式市场而言,这太昂贵了。例如,近 100 %的 Android 和 Apple 手机和平板电脑使用 RISC 处理器。图 1 显示了过去十年中数十亿的 RISC 出货量,自 2007 年以来增长了 7 倍,并且以每年 24 %的速度增长。
    feast
        28
    feast  
    OP
       2020-11-04 09:33:53 +08:00
    @user8341 实际上 CISC 和 RISC 如果从概念上看,跟安卓的 JIT 和 AOT 概念有点类似,后者先进行复杂的预编译
    clxtmdb
        29
    clxtmdb  
       2020-11-04 10:48:37 +08:00
    应该是指 指令流水线吧,,,不过看回帖基本讨论完毕了
    feast
        30
    feast  
    OP
       2020-11-04 10:53:41 +08:00 via Android
    @clxtmdb 是的 RISC 的流水线设计更简单,路径更短是肯定的
    aneostart173
        31
    aneostart173  
       2020-11-04 16:41:31 +08:00
    前端译码器吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1605 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:53 · PVG 00:53 · LAX 09:53 · JFK 12:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.