指令分类

具体指令

说明

传送指令(XXmovl)

(4种)

指令

目的

irmovl

立即数

寄存器

rrmovl

寄存器

寄存器

mrmovl

存储器

寄存器

rmmovl

寄存器

存储器

Y86指令的寻址方式单一:基址+偏移量.

算术逻辑指令(opl)

(4个)

addl, subl, andl, xorl

这4个指令的执行会设置条件码(CC).

跳转指令(jxx)

(4个)

jmp, jle, jl, je, jne, jge, jg

jmp是无条件跳转指令,其他是条件跳转指令

(根据条件码选择分支).

条件传送指令(cmovXX)

(6个)

cmovle, cmovl, cmove, cmovne, cmovge, cmovg

根据条件码选择是否更新目的寄存器.

call/ret指令

call/ret

call将返回地址入栈,跳转目的地址.

ret指令从过程调用中返回.

pushl/popl指令

pushl/popl

入栈和出栈操作.

halt指令

halt

停止执行指令指令.设置Stat位HLT.

nop指令

nop

4.1.3指令集编码

————

Y86指令1-6个字节不等.第一个字节表明指令的类型,其中高4位是代码(code)部分,低4位是功能码(function). Y86的代码值0~0xB.

图3给出了整数操作,条件传送和条件传送指令的具体编码(第一个字节),其他指令的功能码是0(可以功能扩展).

寄存器编码

——

为了方便,每个程序寄存器使用4位编码,其中F表示无寄存器.

4.1.4状态码和异常

————

状态码(Stat)是程序员可见的状态之一,用来描述程序执行的总体状态.详见图5.

一个适用的处理器,当处理器遇到异常,会调用一个异常处理程序.在Y86,当遇到异常时,直接让处理器停止执行指令.

4.2    逻辑设计和硬件控制语言HCL

实现一个数字系统需要三个主要组成部分:位运算函数的组合逻辑、存储器元素、时钟信号。

VHDL的语法类似于Ada语言,而Verilog HDL的语法类似于C语言。

4.2.2    组合电路和HCL布尔表达式

组合电路的组成有两条限定:

1).    多个逻辑门的输出不能接在一起,否则会导致输入信号的矛盾。

2).    必须是无环的。

4.2.3    字级的组合电路和HCL整数表达式

算术/逻辑单元(ALU)是一种很重要的组合电路。

4.2.5    存储器和时钟控制

组合电路在本质上不存储任何信息,只是简单的响应输入信号,并产生某个函数输出。为了产生时序电路——就是具有状态并以状态为基础进行计算的系统,必须引入按位存储信息的设备。

两类存储设备:

时钟寄存器:存储单个字

随机访问存储器:存储多个字,用地址选择。例子包括虚拟存储器系统、寄存器堆;此处,寄存器标识符(ID)作为地址。

在硬件和机器级编程中,"寄存器"的含义有细微的差别。在硬件中,寄存器直接将其输入和输出线连接到电路的其它部分。在机器级编程中,寄存器代表CPU中为数不多的可寻址的字,这里的地址是寄存器ID。分别称这两类寄存器为硬件寄存器和程序寄存器。

4.3 Y86的顺序实现

4.3.1将处理组织成阶段

取指(fetch)

取值阶段从存储器读取指令字节,放到指令存储器(CPU中)中,地址为程序计数器(PC)的值。

它按顺序的方式计算当前指令的下一条指令的地址(即PC的值加上已取出指令的长度)

译码(decode)

ALU从寄存器文件(通用寄存器的集合)读入最多两个操作数。(即一次最多读取两个寄存器中的内容)

执行(execute)

在执行阶段会根据指令的类型,将算数/逻辑单元(ALU)用于不同的目的。对其他指令,它会作为一个加法器来计算增加或减少栈指针,或者计算有效地址,或者只是简单地加0,将一个输入传递到输出。

条件码寄存器(CC)有三个条件位。ALU负责计算条件码新值。当执行一条跳转指令时,会根据条件码和跳转类型来计算分支信号cnd。

访存(memory)

访存阶段,数据存储器(CPU中)读出或写入一个存储器字。指令和数据存储器访问的是相同的存储器位置,但是用于不同的目的。

写回(write back)

写回阶段最多可以写两个结果到寄存器文件。寄存器文件有两个写端口。端口E用来写ALU计算出来的值,而端口M用来写从数据存储器中读出的值。

更新PC(PC update)

根据指令代码和分支标志,从前几步得出的信号值中,选出下一个PC的值。

我们以SEQ(sequential顺序的)处理器为例讲解CPU的基本原理。每个时钟周期上,SEQ执行处理一条完整指令所需的所有步骤。不过这需要一个很长的时钟周期时间,因此时钟周期频率会低到不可接受。

SEQ的时序

组合逻辑不需要任何时序或控制——只要输入变化了,值就通过逻辑门网络传播。

我们也将读随机访问存储器(寄存器文件、指令存储器和数据存储器)看成和组合逻辑一样的操作。(写随机访问存储器需要等待高电平)

由于指令存储器只用来读指令,因此我们可以将这个单元看成是组合逻辑。(内存向指令存储器中写指令是CPU外部的事件 不属于CPU内的时序)

每个时钟周期,程序计数器都会装载新的指令地址。

只有在执行整数运算指令时,才会装载条件码寄存器。

只有在执行mov、push、call指令时,才会写数据存储器。

要控制处理器中活动的时序,只需要寄存器和存储器的时钟控制。

因为指令运行计算的结果,写入寄存器或存储器中。

我们可以把取指、译码、执行等过程看做是组合逻辑的处理过程(因为它们不涉及写入寄存器)。把写回看做是另一个过程。

则整个过程可简化为下图所示:

学习中遇到的问题:

1.首先是对指令的不熟悉,有些地址变化不是很清楚,对指令的编码目前要借助书上的表格才能做到。以后要多多练习,增加熟悉程度。

2.对Y86的顺序实现只有抽象的认识,看了一遍书之后感觉很混乱,太多东西要记住,没有太多的实质认识,概念性东西太多了,通过实验操作更好的理解运用。

linux实验报告ALU,20135316王剑桥 linux第五周课实验笔记相关推荐

  1. 20135316王剑桥Linux内核学习笔记第三周

    20135316王剑桥 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 三个法宝:存储程序计算机.函数调 ...

  2. 20135316王剑桥 linux第六周课实验笔记

    6.存储器层次结构 6.1存储技术 1.如果你的程序需要的数据是存储在CPU寄存器中的,那么在执行期间,在零个周期内就能访问到它们.如果存储在高速缓冲中,需要1-10个周期.如果存储在主存中,需要50 ...

  3. 20135316王剑桥 linux第三周课实验笔记

    通过使用标准的字符码能够对文档中的字母和符号进行编码. 三种重要的数字表现形式: 1. 无符号数:编码基于传统的二进制表示法表示大于或等于零的数字. 2. 补码:编码是表示有符号整数的最常见方法,可以 ...

  4. logisim 快速加法器设计实验报告_基于Logisim平台的《计算机组成原理》实验教学探究...

    邵雄凯 杨习伟 摘要:在分析现有<计算机组成原理>实验教学现状的基础上,针对软件类专业学生硬件基础知识薄弱.一般地方高校硬件设备不足等实际情况,提出基于Logisim平台的<计算机组 ...

  5. 周信东c语言实验二实验报告,周信东主编最新版C语言程序设计基础实验一实验报告.doc...

    周信东主编最新版C语言程序设计基础实验一实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  6. java 二叉树实验报告_20172310《程序设计与数据结构》(下)实验二:二叉树实验报告...

    20172310<程序设计与数据结构>(下)实验二:二叉树实验报告 报告封面 课程:<软件结构与数据结构> 班级: 1723 姓名: 仇夏 学号:20172310 实验教师:王 ...

  7. 老男孩Linux运维第41期20170924开班第五周学习重点课堂记录

      Week5课堂知识点记录总结 作者:Old_Pan 归档:学习笔记 2017/9/24 目  录 第1章 awk指定多个分隔符-第二关题目... 4 1.1 a.现在需要从文件中过滤出" ...

  8. java实验报告 05 类与_java程序设计类与方法-java实验报告

    java程序设计类与方法-java实验报告 java程序设计类与方法-java实验报告 1. 实验内容或题目 (1) 编写Java应用程序,实现以下功能:当应用程序运行后,根据屏幕提示进行交互式输入并 ...

  9. 哈工大威海c语言实验报告 第八章 无法运行程序,哈工大威海c语言实验报告.doc...

    哈工大威海c语言实验报告 PAGE PAGE 25 哈工大威海c语言实验报告篇一:C语言实验报告2至4章实验2(1)#includemain(){int s=1,n;scanf("%d&qu ...

最新文章

  1. SQLServer 扫盲
  2. mac m1上运行jenkins
  3. imageNamed和imageWithContextOfFile的区别?哪个性能高
  4. WebRTC 中收集音视频编解码能力
  5. 磁盘与目录的容量(转)
  6. Android Studio开发基础之Service
  7. Exception in thread main com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport e
  8. 扩散(信息学奥赛一本通-T1437)
  9. 魅族预热魅族18系列:没有中杯 大杯起步
  10. 【OpenCV】矩阵掩模操作
  11. 湖南卫视小年夜春晚-2013湖南卫视小年夜直播【直播视频现场高清完整版____
  12. Recorder︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)
  13. 电力系统微型计算机继电保护试题,全国2010年4月自考电力系统微型计算机继电保护试题...
  14. 微信小程序-map地图标签的初级使用, 拥有图标,气泡,地图本身无法缩放移动需要点击跳转第三方地图平台
  15. 牛客网 - 小乐乐打游戏(BFS)
  16. 晨光科力普基于GitLab CI/CD持续集成服务的应用
  17. 定时关闭(程序)进程
  18. C语言实现当前时间的前后多少秒的时间计算
  19. 详解微架构:GPU与ASIC的对比
  20. VSTO开发指南(VB2013版) 第一章 Office对象模型

热门文章

  1. Transact-SQL变量基本语法
  2. 图解数据分析(3) | 数据分析的数学基础(数据科学家入门·完结)
  3. unity屏幕后处理全家桶之color grading
  4. ios复制公众号,跳转微信搜索
  5. ffmpeg批量去掉视频里的音频
  6. C#地理信息编辑器GIS编辑方案, Winform GIS编辑器,C#地理信息编辑器,.NET地理信息编辑器...
  7. 多条件排序:Rank函数与Sumproduct函数的综合运用
  8. 关爱通用户登录支付接口实例
  9. 全链路设计师是什么?如何打造全链路设计师?
  10. 看完这篇文章,你就明白运维监控体系了