热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

《计算机组成与体系结构:性能设计》读后小记12、CPU的结构和功能

一、CPU组成1、组成:ALU:算术逻辑单元,完成数据的实际计算或处理控制器:控制数据的移入移出CPU寄存器:

一、CPU组成

  1、组成:

    ALU:算术逻辑单元,完成数据的实际计算或处理

    控制器:控制数据的移入移出CPU

    寄存器:由一组存储位置极小的内部存储器组成

    CPU内部总线:在各寄存器和ALU之间传送数据

  2、CPU要完成的任务:

    取指令:从存储器(主存、cache、寄存器)读取指令

    解释指令:对指令进行译码

    处理指令:对数据完成算术或逻辑运算

    写数据:运算结果数据写到存储器或I/0模块

 

二、寄存器组成

  1、组成:

    用户可见寄存器:允许机器语言或汇编语言的编程人员通过优化寄存器的使用而减少对主存的访问

    控制和状态寄存器:由控制器来控制CPU的操作,并由拥有特权的操作系统来控制程序的执行

  2、到目前为止,关于组织CPU寄存器的最好方式还没有一个普遍接受的原则,正如指令集设计的情况一样,也有众多的CPU设计观点,这些都还是有待品评的事情。

 

三、指令周期

  1、间接周期:指令的执行涉及到从存储器中读取操作数,可能会使用到间接寻址,可以把间接寻址看成是一个额外的指令子周期,即间接周期。

  2、数据流:该小节讲述了在取指令阶段、指令执行阶段和中断周期阶段,PC(程序计数器)、MAR(存储器地址寄存器)、MBR(存储器缓冲寄存器)和IR(指令寄存器)中数据的移动方向与时序,详情见此书P283页。

 

四、指令流水线技术

  1、定义:流水是指将指令周期分解成几个连续出现的阶段,如取指令、译码指令、确定操作数地址、取操作数、执行指令和写结果操作数。

  2、指令预取:在取指阶段取一条指令并缓存它,当执行阶段空闲时,将取指阶段缓存的指令输送给它。当执行阶段正在执行此指令时,取指阶段利用未使用的存储器周期读取下一条指令并缓存它。这称为指令预取或指令交叠。这种处理能加快指令的执行,理论上速率可以提升一倍,但是仅仅只是理论上,别想多了!至于原因,见P284页。

  3、流水线冒险:发生在流水线或流水线的某个部分,因为某些条件不允许流水线继续运行,而必须停顿的时候,这种停顿也称流水线空泡。通俗的说,就是几条指令想要并行取指、执行的时候,因为资源、数据或控制不得不等待其他指令的一种情况。

  4、三种流水线冒险:

    资源冒险:也称为结构冒险,主要是等待内存可用,或者算数逻辑单元可用的情况;

    数据冒险:需要访问同一内存中或寄存器中的数据时发生;

    控制冒险:又称为分支冒险,发生在流水线对分支转移做出了错误的预测,因此读取了在后期必须取消的指令之时。

  5、处理分支指令:

    多个指令流:条件分支流水线的开始部分,允许流水线同时取这两条指令,使用两个指令流;

    预取分支目标:识别出一个条件分支指令时,除了取此分支指令之后的指令外,分支目标的指令也被取来。说实话,我看的不太明白;

    循环缓冲器:由流水线指令取指阶段维护一个小的但极高速的存储器,含有n条最近取来的指令,其原理类似于指令高速缓存;

    指令预测:预测绝不发生、预测总是发生、依操作码预测、发生/不发生切换、转移历史表;

    延迟分支:自动重排程序中的指令,这样可以把一条分支指令移到实际所期望的位置之后;

转:https://www.cnblogs.com/gaojiang/p/4026572.html



推荐阅读
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文介绍了如何通过配置 Android Studio 和 Gradle 来显著提高构建性能,涵盖内存分配优化、并行构建和性能分析等实用技巧。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
author-avatar
波波微博1987_704
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有