RISC CPU 架构总结(历史,现状,未来)

曾几何时,我把熟悉cpu架构作为我自豪的一件事,也做过写cpu model模拟cpu的代码的工作。如今,熟悉cpu架构只不过是我一种底层知识丰富一种凭证而已。但我今日以这篇博文祭奠我逝去的青春。

算法大神Knuth的大作计算机程序设计艺术中也设计一套cpu汇编语法来阐述他的算法思想,正因为如此令很多读者对此敬而远之。

  相信有些人拜读过Henssessy 和Patternson先生的 Computer Architecture 这本大作,这两位巨人是RISC 的设计和实现者,Henssessy是standford大学的教授,在80年代主持并实现MIPS处理器架构设计, 并掀起80年代的RISC和CISC之争, CSIC的代表是x86架构, RISC代表是MIPS和ARM,powerpc等

   70年代CISC架构的一些特点 1) 指令不定长 2)指令复杂, 主张简化编译器, 但实际上根据80-20原理, cpu执行80%时间执行的指令都是20%的指令集,如基本的算术逻辑运算, 和跳转控制指令。load/store指令。太复杂的指令实无必要.

因此Henssessy提出RISC 架构, 主张简化指令集, 定长指令长度和指令码(简化cpu的数字电路实现) ,并提出多种优化cpu架构的方法, 如1)深化流水线以提高cpu的主频, 2)cpu内部增加cache以提高读写内存性能等。3)增加寄存器 使得80年代RISC cpu 大部分占据高性能计算机市场。 但是Intel 通过x86占据pc市场后,基本上吸收了RISC架构的优点,又因为占据pc市场的原因,大部分pc程序都是x86机器码,程序存在兼容性问题。因此intel pc 壮大后通过x86占据高性能处理器市场, RISC 日渐式微,转而转入嵌入式系统. 近期手机平板的兴起 ARM(RISC)与x86(CISC)架构分庭抗礼.


  1. cpu流水线技术

     一条指令的执行可以分为一下几个步骤

     1. 从ROM中获得指令

     2. 从对指令进行译码,指令指令码和寄存器, 指令码识别是哪条指令(是加减乘除还是跳转指令) 寄存器码识别要操作的寄存器.

     3. 执行指令,(实现所需要的运算)

     4. 把执行结果写到目标寄存器 ,或者写到内存

    数字电路中这些都会造成延时,从而限制cpu的最大工作频率(主频),因此为提高cpu的主频,可以把指令的执行步骤分割开来,即可以在第一条指令在进行译码的时候,第二条指令执行在取指阶段,如果流水线分为四个阶段,理论上与没有流水线的cpu主频可提高四倍


   但流水线技术会带来一些问题, 同时增加流水级间的寄存器,从而增大cpu的晶体管数量以及功耗, 这是最基本的空间和时间的折中了。

   1) data hazard

          指令序列之间一般是有依赖的,后一条指令的操作数一般来自前一条指令的结果,如果仅仅是寄存器操作,一般可以用bypass技术解决,前一条指令位得到结果的同时,并把结果分给后一条指令,但前一条指令是load指令,这就可能不易解决了。这涉及到cache的问题

   2) branch hazard

          试想在流水线执行的分支指令,会带来较大的问题,由于分支的结果要在较后阶段才得知结果,那么要取的指令是跳转后的指令还是不跳转的指令,这当然可以进行预测,但一旦预测失败,就要把后面的指令无效的掉,这无疑会带来性能损失。而且这也是流水线技术无法进一步深化流水级的瓶颈,当流水级分得越多,一旦分支预测失败,损失的性能越大.

 3)异常处理

      流水线技术还会让cpu异常处理复杂化, cpu异常(最常见的是外设中断)出现一般都在偏后的流水级出现,一旦出现,必须无效后面流水级指令。这是一个问题,更复杂的问题这里就不说了


另外流水线技术还有超标量,乱序执行等技术,这里就不说了.


2. cache技术

   cpu在之前的存储架构中,只是出现寄存器- 内存-磁盘的架构, 但随着cpu的速度提升和内存速度提升不同步, load/store指令逐渐成为瓶颈. 基于程序局部性原理,即80%的时间都是在执行20%程序和数据。 因此cache就因此产生了,成为现代cpu的一部分,出现寄存器-cache-内存-磁盘的存储架构

    现代处理器中,一般都会有指令cache和数据cache,可以同时访问数据和指令, 现在手机或者pc上的cache一般是32KB或者64KB

    cache一般分为data ram(存储数据ram) tag ram(存储高位内存物理地址),select ram(cache 替换处理)

     cache寻址方式同内存一样,都是用内存的物理地址,但cache不可能存储所有内存数据,所以用把物理地址拆分,低位用于index,查找cache,高位用于与tag ram做比较

,一旦相同即cache命中。

    cache还有块大小的概念,指一次替换cache替换一整个block,一般一个cache block为32B或者, 这又是局部性原理,一般都写一个cache block的一个地址,后续的地址都会使用,后续的地址就会cache hit

    cache的优化技术有三种1)减少cache命中时间 2)减少cache miss rate 3)减少cache miss 时间

    一般可以想到增大cache容量来减少cache rate,但现在的处理器内部中一级cache很难再增大,芯片上32KB或者64KB ram已经占用较大的面积,同时增大cache容量会同时让一级cache的读取时间增大,从而增加cache的命中命中时间.

    cache组相联技术可以提高cache,即同一地址index可索引数据数个cache组,再通过高位物理内存地址与cache组的tag ram比较判断哪一个cache hit. 现代处理器中一般采用4或8路组相联.

   cache优化技术已成熟比较长一段时间,现代cpu均已采用成熟的cache技术


3.对称处理器架构(SMP)

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值