第四章 处理器体系结构
2015-10-11 11:45
190 查看
指令集 体系结构(Instruction-Set Architecture,ISA):一个处理器支持的指令和指令的字节级编码。
虽然很少有人设计处理器,但是许多人设计包含处理器的硬件系统。嵌入式系统的设计者必须了解处理器是如何工作的。
硬件控制语言(Hardware Control Language,HCL):
1、Y86指令集体系结构
定义一个指令集体系结构,包括:
Ø 各种状态元素
Ø 指令集和它们的编码
Ø 一组编程规范和异常事件处理
1.1、 程序员可见状态
程序员可见状态:程序中的每条指令都会读取和修改处理器状态的某些部分。
Y86:
8个程序寄存器
3个一位的条件码:ZF/SF/OF
程序计数器(PC):存放当前正在执行指令的地址。
状态码Stat:表明程序执行的总体状态。
存储器:保存程序和数据
1.2、 Y86指令
指令集就是处理器实现的目标。
图4-2 Y86指令集,左边是指令的汇编码表示,右边是指令的字节级表示。
1.3、 指令编码
指令的字节级编码。每条指令需要1~6个字节不等。
每条指令的第一个字节表明指令的类型:前4位是代码部分,后4位是功能部分。
8个程序寄存器中每个都有相应的0~7的 寄存器标识符(registerID)。
ID值0xF表明不应访问任何寄存器。
指令集的一个重要性质就是字节编码必须有唯一的解释。---因为每条指令的第一个字节有唯一的代码和功能组合,决定所有其他附加字节的长度和含义。
1.4、 Y86异常
程序员可见的状态包括状态码Stat,描述程序执行的总体状态。代码值1、2、3、4分别表示正常操作、异常等不同含义。
对于Y86,遇到异常就简单的让处理器停止执行指令。完整的处理器设计会调用一个异常处理程序(exception handler),这个过程被指定用来处理遇到的某种类型的异常。
1.5、 Y86程序
2、逻辑设计和硬件控制语言HCL
2.1、逻辑门
逻辑门:是数字电路的基本计算元素。它们产生的输出,等于它们输入位值的某个布尔函数。
AND OR NOT…
2.2、组合电路和HCL布尔表达式
组合电路(combinational circuits):很多的逻辑门组合成一个网,构建计算块(computational block)。
构建组合电路两条限制:
l 两个或多个逻辑门的输出不能连接在一起。
l 这个网必须是无环的。
HCL写检测位相等的组合电路 的函数是:bool eq=(a&&b)||(!a&&!b);
HCL 位多路复合器 bool out = (s && a) || (!s && b);
2.3、字级的组合电路和HCL整数表达式
字级计算的组合电路:根据输入字的各个位,用逻辑门来计算输出字的各个位。
HCL 写比较字是否相等:bool Eq = (A == B);
在HCL中,多路复用函数是用情况表达式(case expression)来描述的。例如:
字级多路复用器用HCL描述:
int Out= [
s: A;
1: B;
];
算术/逻辑单元(ALU):一种很重要的组合电路,有三个输入(标号为A,B的两个数据输入,一个控制输入),根据控制输入的设置,电路会对数据输入执行不同的算术或逻辑操作。
组合电路从本质上讲,不存储任何信息。他们只是简单的响应输入信号,产生等于输入的某个函数输出。
2.4、集合关系
2.5、存储器和时钟
两类存储器设备:
Ø 时钟寄存器(简称寄存器):存储单个位或字。时钟信号控制寄存器加载输入值。
Ø 随机访问存储器(简称存储器):存储多个字,用地址来选择该读或该写哪个字。
硬件寄存器:在硬件中,寄存器直接将它的输入和输出线连接到电路的其他部分。
程序寄存器:在机器编码汇总,寄存器代表的是CPU中为数不多的可寻址(这里的地址是寄存器ID)的字。这些字通常存在寄存器文件中。
寄存器堆(register file)是CPU中多个寄存器组成的阵列,通常由快速的静态随机读写存储器(SRAM)实现。这种RAM具有专门的读端口与写端口,可以多路并发访问不同的寄存器。寄存器文件不是组合电路,因为它有内部存储。
处理器有一个随机访问存储器来存储程序数据。
3、Y86的顺序实现
4、流水线的通用原理
5、Y86的流水线实现
6、小结
虽然很少有人设计处理器,但是许多人设计包含处理器的硬件系统。嵌入式系统的设计者必须了解处理器是如何工作的。
硬件控制语言(Hardware Control Language,HCL):
1、Y86指令集体系结构
定义一个指令集体系结构,包括:
Ø 各种状态元素
Ø 指令集和它们的编码
Ø 一组编程规范和异常事件处理
1.1、 程序员可见状态
程序员可见状态:程序中的每条指令都会读取和修改处理器状态的某些部分。
Y86:
8个程序寄存器
3个一位的条件码:ZF/SF/OF
程序计数器(PC):存放当前正在执行指令的地址。
状态码Stat:表明程序执行的总体状态。
存储器:保存程序和数据
1.2、 Y86指令
指令集就是处理器实现的目标。
图4-2 Y86指令集,左边是指令的汇编码表示,右边是指令的字节级表示。
1.3、 指令编码
指令的字节级编码。每条指令需要1~6个字节不等。
每条指令的第一个字节表明指令的类型:前4位是代码部分,后4位是功能部分。
8个程序寄存器中每个都有相应的0~7的 寄存器标识符(registerID)。
ID值0xF表明不应访问任何寄存器。
指令集的一个重要性质就是字节编码必须有唯一的解释。---因为每条指令的第一个字节有唯一的代码和功能组合,决定所有其他附加字节的长度和含义。
1.4、 Y86异常
程序员可见的状态包括状态码Stat,描述程序执行的总体状态。代码值1、2、3、4分别表示正常操作、异常等不同含义。
对于Y86,遇到异常就简单的让处理器停止执行指令。完整的处理器设计会调用一个异常处理程序(exception handler),这个过程被指定用来处理遇到的某种类型的异常。
1.5、 Y86程序
2、逻辑设计和硬件控制语言HCL
2.1、逻辑门
逻辑门:是数字电路的基本计算元素。它们产生的输出,等于它们输入位值的某个布尔函数。
AND OR NOT…
2.2、组合电路和HCL布尔表达式
组合电路(combinational circuits):很多的逻辑门组合成一个网,构建计算块(computational block)。
构建组合电路两条限制:
l 两个或多个逻辑门的输出不能连接在一起。
l 这个网必须是无环的。
HCL写检测位相等的组合电路 的函数是:bool eq=(a&&b)||(!a&&!b);
HCL 位多路复合器 bool out = (s && a) || (!s && b);
2.3、字级的组合电路和HCL整数表达式
字级计算的组合电路:根据输入字的各个位,用逻辑门来计算输出字的各个位。
HCL 写比较字是否相等:bool Eq = (A == B);
在HCL中,多路复用函数是用情况表达式(case expression)来描述的。例如:
字级多路复用器用HCL描述:
int Out= [
s: A;
1: B;
];
算术/逻辑单元(ALU):一种很重要的组合电路,有三个输入(标号为A,B的两个数据输入,一个控制输入),根据控制输入的设置,电路会对数据输入执行不同的算术或逻辑操作。
组合电路从本质上讲,不存储任何信息。他们只是简单的响应输入信号,产生等于输入的某个函数输出。
2.4、集合关系
2.5、存储器和时钟
两类存储器设备:
Ø 时钟寄存器(简称寄存器):存储单个位或字。时钟信号控制寄存器加载输入值。
Ø 随机访问存储器(简称存储器):存储多个字,用地址来选择该读或该写哪个字。
硬件寄存器:在硬件中,寄存器直接将它的输入和输出线连接到电路的其他部分。
程序寄存器:在机器编码汇总,寄存器代表的是CPU中为数不多的可寻址(这里的地址是寄存器ID)的字。这些字通常存在寄存器文件中。
寄存器堆(register file)是CPU中多个寄存器组成的阵列,通常由快速的静态随机读写存储器(SRAM)实现。这种RAM具有专门的读端口与写端口,可以多路并发访问不同的寄存器。寄存器文件不是组合电路,因为它有内部存储。
处理器有一个随机访问存储器来存储程序数据。
3、Y86的顺序实现
4、流水线的通用原理
5、Y86的流水线实现
6、小结
相关文章推荐
- [转载] 如何使用Lex/YACC
- [Leetcode]Binary Search Tree Iterator
- Ubuntu编写shell脚本
- [290]Word Pattern
- 99. Domino开发领域的动态
- poj 2778 DNA Sequence 【AC自动机 + 矩阵加速】
- [Android自定义控件]Android中如何用代码写出优美的Button
- 第三章 程序的机器级表示
- 多线程初学
- @RequestMapping 简介
- 九,编程的三种结构
- MVC 框架与设计模式
- Git使用教程3:MyEclipse+Egit+GitHub实现代码托管 【上】
- 第二章 信息的表示和处理
- 学习爬虫的记录
- MySQL 调优基础(五) Linux网络
- 父类子类初始化问题
- mybatis05 用户添加
- [软考]之原码、反码、补码和移码
- SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)