计算机组成与设计-处理器

  • 处理器介绍
    • CPU性能衡量参数
    • 一个基本的MIPS实现
  • 流水线
    • 面向流水线的指令集设计
    • 流水线冒险(Hazzard)
  • 结构冒险
  • 数据冒险
  • 控制冒险

处理器介绍

CPU性能衡量参数

  • 主频:主频 = 时钟频率,它是指CPU内部晶振的频率,常用单位为MHz,它反映了CPU的基本工作节拍;
  • 时钟周期: 时钟周期 t =1/ f; 主频的倒数
  • 机器周期:机器周期 = m*t ;一个机器周期包含若干个时钟周期
  • 指令周期: 指令周期 = mtn; 执行一条指令所需要的时间,一般包含若干个机器周期
  • CPI:CPI = m*n; 平均每条指令的平均时钟周期个数
  • MIPS(MillionInstructions Per Second):MIPS = 每秒执行百万条指令数 = 1/(CPI×时钟周期)= 主频/CPI
    表示秒钟所能执行的指令条数,对于微型计算机可用CPU的主频和每条指令的执行所需的时钟周期来衡量

一个基本的MIPS实现

  • 一个MIPS包含5个处理步骤:
    1.从指令存储器中读取指令(IF)
    2.指令译码(ID)
    3.执行操作或计算地址(EXE)
    4.从数据存储器中访问操作数(MEM)
    5.将结果写回到寄存器(WB)

  • 存储器访问指令:load word(lw) 和 store word(sw)

  • 算数逻辑指令:add, sub, AND, OR and slt

  • 分支指令:brach equal(beq) 和 jump(j)

  • MIPS 指令集:MIPS指令集是RISC精简指令集,拥有RISC的特点,首先其中的所有的指令位数都是32位的,在这32位中有6为用于编码操作种类,所以我们很容易就了解到,它最多有2的6次方条指令(0 ~ 63)共64条。之后的26位根据划分的不同分为I类,R类和J类。其中所有的寄存器引索都是以5为来编码(0 ~ 31其中0号比较特别,它始终是数字0)。

  • I 类 :IF - ID - EXE - MEM -WB

  • R类:IF - ID - EXE - WB

流水线

  • 概念:流水线(pipelining)是一种实现多条指令重叠执行的技术。采用流水线技术可以节省大量的时间。流水线是现代RISC核心的一个重要设计,它极大地提高了性能。
    对于一条指令的执行过程,通常分为:取指令、指令译码、取操作数、运算、写结果。前面三步由控制器完成,后面两步由运算器完成。按照传统的做法,当控制器工作的时候运算器在休息,在运算器工作的时候控制器在休息。流水线的做法就是当控制器完成第一条指令的操作后,直接开始开始第二条指令的操作,同时运算器开始第一条指令的操作。这样就形成了流水线系统,这是一条2级流水线。

流水线就是利用了空余的CPU资源,使每个部件在每个时钟周期都工作,同一个时钟周期内有多条指令被激活,但是这些指令处于不同的状态,有的在取指、有的在译码、有的在执行,但从整体看来就有一条甚至是多条指令被完成,这样大大提高了效率。不过流水线有两个非常大的问题:相关和转移。

面向流水线的指令集设计

MIPS的指令集是为了流水线设计的。

  1. 所有的MIPS指令长度都是相同的
  2. MIPS只有很少的几种指令格式
  3. MIPS中的存储器操作数仅出现在存取指令中

流水线冒险(Hazzard)

流水线有这样一种情况,在下一个时钟周期中下一条指令不能执行,这种情况称为流水线冒险。
有以下三种冒险:结构冒险,数据冒险和控制冒险。

结构冒险

英文:Structual hazzard

  • 产生原因:
    因缺乏硬件支持而导致计划的指令不能在预期的时钟周期内执行的情况。

  • 解决办法1:将存储器分开为数据存储器(DM)和指令存储器(IM);

  • 解决办法2:阻塞流水线(Stall the pipeline)当检测到冲突的时候,结果导致了流水线气泡(Bubble)

数据冒险

英文:Data hazzare,也称为流水线数据冒险。

  • 产生原因:因为无法提供指令所需的数据而导致指令不能在预期的时钟周期内执行的情况。一条指令必须等待另一条指令的完成,造成了流水线的暂停。

  • 在计算机流水线中,数据冒险是由于一条指令依赖于更早的一条还在流水线中的指令造成。举例来说,假设有一条加法指令,它之后紧跟着一条减法失灵,而减法指令要使用加法指令的和。
    add r1 , r2 , r3
    sub r4 , r1 , r5
    在不作任何干涉的情况下,这一数据冒险会严重阻碍流水线。因为减法指令要到第五步才能写回它的结果。这就意味着在流水线中浪费了三个时钟周期。

  • 解决办法1:转发/旁路 (forwarding / bypathing)

    一种解决数据冒险的方法,目的是想解决数据冒险之前不需要等待指令的执行结束。具体做法是从内部寄存器而非操作员可见的寄存器或存储器中提前去除数据。

    • 转发的图示表示:图中的连接表示从add指令的EX操作输出到sub指令的EX操作输入的转发途径,从而替换掉在sub的第二步从寄存器s0读取的值。
      只有当目标步骤在时间上晚于源步骤时转发的路径才有效。

    图示1:
    图示2:

  • 解决办法2:阻塞流水线(Bubble)
    转发可以解决的很好,但不是能避免所有流水线阻塞的发生。例如,假设第一条指令不是add而是装载s0 寄存器的内容,由于时间的依赖,所需要的数据只有在前一条指令流水线的第四级完成之后才能生效,这对sub指令的第三级输入太迟了。
    所以,当转发失败时,在遇到装载-使用型数据冒险(load-use Data Hazzard)时,流水线不得不阻碍一个步骤,即流水线阻塞来避免载-使用型数据冒险。
    装载-使用型数据冒险:一类特殊的数据冒险,指当装载指令要取的数还没取回来时,其他指令就要执行的情况。

控制冒险

英文:Control hazzard,也称为分支冒险(branch hazzard)。

  • 产生原因:因为取到的指令并不是所需要的(或者说指令地址的变化并不是流水线预期的)而导致指令不能在预期的时钟周期内执行的情况。
  • 解决办法1:阻塞(Stall)
    在第一批衣烘干之前按照之按串行的方式操作,并且重复这一过程直到找到正确的洗衣设置为止。

在每一个条件分支上阻塞是避免流水线控制冒险的一种解决办法。

  • 解决办法2:分支预测(Brach prediction):一种解决分支冒险的方法。它预测分支结果并立即沿预测方向执行,而不是等真正的分支结果确定后才开始执行。有动态预测和静态预测。

    • 情况1 :分支未发生(Branch not taken),执行flush操作,即从流水线上忽略这条命令,而前面的stall是在流水线上延迟一个时钟周期.
    • 情况2 : 分支发生,采用stall来解决。

  • 解决办法3:延迟分支:在延迟槽(delay slot)上放一个不影响分支的命令,防止流水线发生阻塞。

计算机组成与设计-处理器相关推荐

  1. 《计算机组成与设计(ARM版)》读书笔记-第二章指令2

    文章目录 2.9 人机交互 2.10 LEGv8中的宽立即数和地址的寻址 2.10.1 宽立即数 2.10.2 分支中的寻址 2.10.3 LEGv8寻址模式总结 2.10.4 机器语言解码 2.11 ...

  2. 西南交通大学计算机组成原理,西南交通大学计算机组成原理课程设计报告

    西南交通大学计算机组成原理课程设计报告 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 <计算机组成实验 C>课程设计适 ...

  3. 模型计算机控制器的设计,模型计算机控制器的设计.pdf

    第 0 页模型计算机控制器的设计 <计算机组成原理> 课 程 设 计 报 告 设计题目 : 模型计算机控制器的设计 学 生: 学 号: 专业班级: 13 计师 X 班 指导教师: 麦 山 ...

  4. 计算机系统结构综合课程设计报告,计算机系统结构课程设计报告书.doc

    文档介绍: 河北大学工商学院计算机系统结构课程设计学部信息科学与工程学部学科门类工学专业网络工程班级网络一班学号2007480218姓名张杨2010年6月20日目录第1章引言 1第2章WinDLX指令 ...

  5. 计算机组成与设计chapter3,Chapter 1 计算机概要与技术

    <Chapter 1 计算机概要与技术>由会员分享,可在线阅读,更多相关<Chapter 1 计算机概要与技术(66页珍藏版)>请在人人文库网上搜索. 1.电子科技大学计算机科 ...

  6. 计算机组成与设计--软硬件接口 RISC-V版 读书笔记 0

    由于我从网上弄到的是英文版,所以打算硬啃,也当锻炼自己的英文能力了,如果我关于书的理解有什么错误,各位路过的读者欢迎指出 Preface 序言 About this book 关于本书 We beli ...

  7. 计算机图像学基础课程设计,计算机图形学课程设计

    <计算机图形学课程设计>这本书覆盖了计算机图形学基础知识,其内容分为三个层次:编程基础.中级知识.高级话题.以配合计算机图形学课程的主要内容,及时反映OpenGL的最新进展. 书    名 ...

  8. 【计算机组成与设计:软件、硬件接口(1)】计算机概要与技术

    文章目录 一:引言 二:8个伟大思想 三: 程序概念入门 四:硬件概念入门 五: 处理器和存储器 六:性能 七:功耗 八:单处理器→多处理器 九:Intel Core i7实例 十:谬误与陷阱 十一: ...

  9. 【Linux】ARM篇一--计算机基础与RAM处理器概论

    ARM篇一--计算机基础与ARM处理器概论 一.计算机基础 1.Linux嵌入式底层导学 1.1 Linux学习过程 1.2 操作系统的分层作用 2.计算机基础知识 2.1 计算机的进制 2.2 计算 ...

  10. 《计算机组成与设计:硬件、软件接口》阅读笔记

    分享一些初次阅读时的记录,本文原是导图,我直接粘在了这 可读性一般,需要导图的朋友可以私,希望可以帮到大家快速搭起这本书的知识结构. 计算机组成与设计:硬件.软件接口####计算机概要与技术**引言* ...

最新文章

  1. python pillow 图片处理
  2. win10桌面和手机的扩展API,判断是否有实体后退键API
  3. ACM入门之【树状数组】
  4. python下采样_python + opencv 如何在上采样下采样之后导出图片?
  5. VTK:PolyData之ImplicitPolyDataDistance
  6. fraction函数的分数处理
  7. Spring+ActiveMQ+Mysql 配置JMS
  8. Java 字符串操作的总结1(转载)
  9. c语言信息管理系统排序怎么编,C语言编职工信息管理系统怎么做?
  10. 人有多大懒,才有多大闲 (评论『卓有成效的程序员』)
  11. 关于SQL2005安装完毕后,没有SQL Server Management Studio问题的解决方法
  12. DDD领域建模基本流程
  13. 今日头条推荐算法原理全文详解之二
  14. PostgreSQL的学习心得和知识总结(十九)|数据库游标详细使用说明及特性总结(全网最精细最详尽 仰望星空也要脚踏实地)
  15. 腾讯云主机配置tomcat服务器
  16. 怎么样禁止鼠标和键盘唤醒win7系统睡眠模式转载
  17. 乐山计算机学校有几个,乐山计算机学校全国排名是多少,好不好?
  18. [CEOI2017]One-Way Streets
  19. Object.assign()方法
  20. GridControl之GridView(属性篇)(一)

热门文章

  1. cad插件苹果系统_CAD看图软件mac版|CAD迷你看图 for Mac下载 v4.0.0 官方版_最火软件站...
  2. 抓包工具之fiddler
  3. SAP物料批次管理配置及操作手册
  4. 进击系列2.0:进击的骑士-----用funcode与C语言实现射击游戏制作
  5. gensler逻辑学导论_学逻辑学,哪本书入门合适?
  6. 百度地图和openlayers融合封装(想法)
  7. 人工智能AI - 学习/实践
  8. 推美妆、搭IP,出货千万的天猫精灵打上95后的主意...
  9. UE4 视频播放打包Pak内
  10. 华为全系Visio图标下载链接