【推荐阅读】

浅谈linux 内核网络 sk_buff 之克隆与复制

深入linux内核架构--进程&线程

了解Docker 依赖的linux内核技术

精简指令集计算机RISC的特点是指令及其格式精少,操作和控制简捷。具体有下列几个方面。

精简指令集

RISC结构采用精简的,长短划一的指令集,使大多数的操作获得了尽可能高的效率。某些在传统结构中要用多周期指令实现的操作,在RISC结构中,通过机器语言编程,就代之以多条单周期指令了。精简的指令集大大改善了处理器的性能,并推动了RISC的设计。对于到底精简到什么程度的问题,没有一定的回答。将现有RISC系统与CISC系统作一对比,便可见大概。通常,对RISC而言:

指令数少,不超过128条。

寻址方式少,不超过4种。

指令格式少,不超过4种。

处理关于扩充指令集的建议是非常慎重的,要经过认真的权衡,验证,在看它们是否真正提高计算机的性能。例如,MIPS采用了一条规则:增加一条指令必须使性能在一定的应用范围内得到1%的增益,否则这条指令将被拒绝。

指令时钟周期,指令长度相等

如果每一条指令要执行的任务既简单又明了,则执行每一条指令所的时间可以被压缩周期数也可减少。RISC的设计目标是实现一个机器周期执行一条指令,使得系统操作更加有效。接近这个目标的技术包括指令流水线及特定的装/存结构等。典型的指令可包括取指、译码、执行和存装果等阶段。单周期指可通过让所有指令为标准长短来实现。标准指令长短应与计算机系统的基本字长相等,通常与系统中数据线数相等。

在任何取指周期,完整的单个指令要传给CPU。例如,如果基字长是32位,且系统总线的数据部分是32线,则标准指令长度是32位。要让所有指令的执行时间一致较困难。有些指令,包含简单的在CPU寄存器上的逻辑操作(清寄存器等),则可容易地在一个CPU时钟周期内执行;其它指令可能包含内存存取(对内存的读写、取数等)或多周期操作(乘、除等),可能无法在单周期内执行。这给设计者提出了这样的要求;让大多数经常使用的指令得以在一个单周期内执行。

指令流水线

减少执行一条指令所需周期数的方法是重叠执行多条指令。指令流水线采用这样的工作方式:将每条指令的执行分为几个离散部分,然后同时执行多条指令。任何指令的取指和执行阶段占据相同时间,理想的是一个单周期。这可说是RISC最重要的一条设计原则。所有从内存到CPU执行的指令,都遵循一种恒定的流的形式。每条指令都以同样的步调执行,无等待的指令。CPU始终是忙的。达到流水线操作的必要条件是:

标准的,固定长短的指令,它与计算机字长和数据线的字长相等。

所有指令的标准执行时间,最好在一个单CPU周期内。

例SPARC芯片等采用了取指、译码、执行和写入结果四级流水线结构,以最大限度来提高处理器性能。在每一个时钟周期的头上,都可以开始执行一条新的指令,这就保证了每个机器周期从存贮器平均取出一条新的指令,从而,总体看,大多数指令能在单周期内实现。指令流水线技术可以比作一条装配线—指令象是被加工的产品一样,从一道工序流到下一道工序,一直到它执行完为止。

因此,指令流水线利用一个等于其流水线深度的因子,来减少指令周期数是可能的,但这样的话,要求流水线始终充满有用指令且没有任何东西阻碍指令通过流水线,这样的需求给结构增加了一定的负担。例如,对于ALU等资源的竞争,阻止了流水线中指令的流动。长短不一的执行时间所引起的不良后果更是显而易见,这也是为什么RISC要定义一个有前面所述特点的指令集的原因。

装入和存数(LOAD/Store)结构

执行与内存有关的操作指令,不是要求增加每个周期的时间,就是要求增加指令的周期数,二者必取其一。因为这些指令要计算操作数的地址,将所需的操作数从内存中读出,计算得出结果,再把结果送回内存,所以它们执行的时间就长得多。为了消除这种指令的负作用,RISC采用了这样的装入和存数结构:只有装入(Load)和存数(Store)指令才去访间内存,所有其它操作只访问保存在处理器寄存器中的操作数。其优点在于:

减少访问内存的次数,降低了对内存带宽的要求。

将所有的操作限制于只针对寄存器,帮助了指令集的简化。

取消内存操作可使编释器优化寄存的分配更容易—这种特性减少对内存的存取,同时也减少了每一任务的指令数。

所有这些都有助于RISC实现的每个周期执行一条指令的目标。尽管如此,装入和存数指令仍阻碍着IRSC设计目标的实现。用优化编译技术处理装入指令和分支指令的延迟,有助问题的解决。优化编译技术虽不是专门面向RISC结构的,但优化编译器依赖于RISC结构完成其出色的任务,RISC结构又依赖于优化编译器得到它们更完善的性能。编释器要能分析数据和控制流,并在此基础上调整指令的执行顺序,巧妙安排寄存器的用法。前一种作用可减少CPU的空闲时间,后一种作用可以提高寄存器中所保存的数据的可再用率,减少访存次数,缩短数据通路的长度。

拥有较大寄存器组

为了便于实现多数指令在寄存器之间的操作,即所谓的寄存器到寄存器操作,必须有足够量的CPU通用寄存器。足量的寄存器使得在随后操作中需作为操作用的中间结果暂存在CPU寄存器中,因而就减少了对内存的装入和存数,加快了运行速度。工业化RISC系统中至少采用32个通用CPU寄存器。

采用硬连线控制

由于微程序设计给设计者提供的灵活性,许多CISC系统是微程序控制的。不同的指令通常具有不同长度的微程序,这意味着每条指令执行的周期数不一样,这与所有指令一致的、流线的处理原则相矛盾。但这可由硬连线控制来解决,而且速度会更快。因此RISC应该是硬连接线控制的。当每条指令与一单条微指令有一对一相相符合的关系时可有例外,也就是每个微程序由一单个控制字组成。这种设计可与用硬连线控制一样快,一样高效,并使设计者得益于微程序设计的优越性。采用硬连线控制,可使RISC系统控制器简单。设计的简单又使机器的布局更加合理,使得设计者可以集中精力去优化那些剩下的,为数不多的,但又很关键的处理器特性。简化的结构使芯片上面积资源紧张的状态得以缓解,一些对性能至关重要的结构,象大的寄存器元件,转换查找缓存(TLB)S协处理器和乘除单元都可以装在同一块芯片上。这些附加的资源又使处理器增加了很大的性能优势。事实上,RISC并非一定严格地完全具备上述特点,有些称作RISC型的系统甚至违背了上述某方面。上述特点应被当作一种指导原则来解释RISC的性质。放宽点讲,满足大部分这些特点的系统就能被看作RISC。

精简指令集有哪些指令

精简指令集 精简指令集,计算机CPU的一种设计模式,也被称为RISC(Reduced Instruction Set Computing 的缩写)。常见的精简指令集微处理器包括AVR、PIC、ARM、DEC Alpha、PA-RISC、SPARC、MIPS、Power架构等。早期,这种CPU指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、CPU的实现细节对于机器级程序是可见的等等。

精简指令集的特点_精简指令集有哪些指令相关推荐

  1. 四川长虹IHO-3300AD_高安版_S905L3芯_精简优化_线刷固件包

    四川长虹IHO-3300AD_高安版_S905L3芯_精简优化_线刷固件包 固件特点: 1.修改dns,三网通用: 2.开放原厂固件屏蔽的市场安装和u盘安装apk: 3.无开机广告,无系统更新,不在被 ...

  2. java jre精简_精简 jre

    jre 文件结构 -bin (启动jvm虚拟机中必要的exe和dll) ​ --java.exe (java主程序,用于启动窗口程序或非阻塞程序 ) ​ --javaw.exe (用于启动 窗口程序或 ...

  3. RISC-V指令集架构------RV32I基础整数指令集

    0. 基本整数指令集的分类 RISC-V指令集分为基础指令集和扩展指令集,此外又根据不同的处理器位宽分为32位.64位和128位指令集,比如RV32I就表示32位处理器的基本整数指令集,此外,为了进一 ...

  4. i基准指令集 mips_ARM/MIPS/PowerPC/RISC-V 指令集快速入门

    这里所介绍的指令集架构均属于 RISC,相比 CISC 更简单.但是 ARM 比较特殊,因为它作为一个 RISC 架构竟然有 push/pop 指令-- ARMv7 ARM 指令集从旧到新有 ARMv ...

  5. 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式

    精简jdk包 帖子" 紧凑数字格式出现在JDK 12中 "已经成为有关Java subreddit线程的讨论主题 . 在那个线程中表达的与紧凑数字格式表示有关的问题涉及显示的精度数 ...

  6. 三维网格精简算法java版_几种常见算法的精简版-

    1 packagetest;2 3 importjava.nio.channels.SelectableChannel;4 5 importcom.itqf.bean.User;6 7 public ...

  7. 微信java精简版低内存_微信精简版低内存apk-微信精简版2019下载v7.0.6 安卓版-腾牛安卓网...

    微信精简版,去除繁杂的功能,保留最核心的微信通讯.公众号等功能,去除升级永保低内存运行,适合各类高旧手机,使用微信再也不会面临卡顿,内存占用太大等问题了. 版本特性: 1.去除升级 2.去除游戏等各种 ...

  8. 英特尔的指令集体系结构_新指令集将上线:Intel 新版指令集手册确认 Alder Lake 架构的存在...

    新指令集将上线:Intel 新版指令集手册确认 Alder Lake 架构的存在 2020-04-02 14:33:32 1点赞 6收藏 3评论 你是AMD Yes党?还是intel和NVIDIA的忠 ...

  9. 富士施乐3065扫描教程_精简高效灵活 富士施乐3065使用测试

    精简高效灵活 富士施乐3065使用测试 2015年11月09日 16:34作者:王琛编辑:王琛文章出处:泡泡网原创 分享 泡泡网黑白复合机评测:对于中小企业用户来说,打印速度.打印成本和功能配置,基本 ...

最新文章

  1. js正则验证特殊字符
  2. 服务器被挖矿minerd***的解决办法
  3. 【干货分享】前端面试知识点锦集02(CSS篇)——附答案
  4. codeforces1454 F. Array Partition
  5. 系统集成项目管理工程师教程第二版
  6. MySQL双向主从复制
  7. 网约代收垃圾App火了!别笑,垃圾分类下一个就到你了
  8. python两个dataframe求差集_spark计算两个DataFrame的差集、交集、合集
  9. Android native memory leak detect (Android native内存泄露检测)
  10. pytz 太平洋时区_使用pytz模块打印所有时区的Python程序
  11. Servlet 中的四大作用域
  12. error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope
  13. TCP连接的四次挥手全过程
  14. 还记得这门古老的编程语言么,送你一份perl书单!
  15. 头同尾合十的算法_头同尾合十的计算规律
  16. 2016 上半年 VR 报告:潜在用户4.5亿
  17. 一些常用工具下载链接
  18. 小梅哥三段式状态机按键消抖改写
  19. 产品经理的主要工作内容
  20. Unity3D内存管理之资源池Object Pool(适合初学者)

热门文章

  1. 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。
  2. 2012总结--第2篇--读书篇
  3. Spring Boot MongoDB 实现总结
  4. sitemap生成工具
  5. 社交电商·生鲜行业转型方案
  6. pytest和allure生成测试报告
  7. Python爬虫自学系列(七) -- 项目实战篇(一)
  8. 大数据分析技术研究报告(四)
  9. 【Redis】练习题
  10. HTML5/Node.js/JS 经验谈 (会员专属)【讲师辅导】-曾亮-专题视频课程