处理器体系结构

Y86指令集体系结构

4.1.1 程序员可见的状态:

Y86程序中的每条指令都会读取或者修改处理器状态的某些部分。

这里的“程序员”既可以是用汇编代码写程序的人,也可以是产生机器级代码的编译器。

Y86的处理器类似于IA32.有八个程序寄存器:%eax.%edx.%ebx.%esi.%edi.%esp和%ebp。

存储器:

从概念来说就是一个很大的字节数组,保存着程序和数据。Y86程序用虚拟地址来引用存储器位置。硬件和操作系统软件联合起来将虚拟地址翻译成实际或者物理地址,指明数据实际保存在存储器的那个地方。

4.1.2 Y86指令:

IA32的movl指令分成了4个不同的指令:

irmovl .  rrmovl . mrmovl . rmmovl

源可以是:

立即数.寄存器.存储器.

在地址计算中,我们不支持第二变址寄存器和任何寄存器值的伸缩.

4个整数操作指令:

addl . subl. andl . xorl.

7个跳转指令:

jmp . jle .jl .je .jne .jge .jg.

6个条件传送指令:

cmovle .  cmovl . cmove . cmovne . cmovge . cmovg

call指令将返回地址入栈,然后跳到目的地址.

pushl和popl指令实现入栈和出栈.

halt指令停止指令的执行.

4.1.5 Y86程序:

Y86汇编程序与IA32汇编程序的比较。Sum函数计算一个整数数组的和。Y86代码与IA32代码的主要的区别在于,它可能需要多条指令来执行一条IA32指令所完成的功能。

一个指令集模拟器,称为YIS,它的目的是模拟Y86机器代码程序的执行,而不用去试图去模拟任何具体处理器实现的行为。这种形式的模拟有助于在有实际硬件可用之前调试程序,也有助于检查模拟硬件或者在硬件上运行程序的结果。

4.1.6一些Y86指令的详情:

pushl指令会把栈指针减4,并且将一个寄存器的值写入存储器中。因此,当执行pushl%esp指令时,处理器的行为是不确定的,因为要入栈的寄存器会被同一条指令修改。通常有两种约定:

1) 压入%esp的原始值

2)压入减去4的%esp的值

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

4.2.1逻辑门:

逻辑门是数字电路的基本计算元素。

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

构建逻辑门的网有两条限制:

1)两个或者多个逻辑门的输出不能连接在一起。否则它们可能会使线上的信号矛盾,可能会导致一个不合法的电压或者电路电路故障;

2)这个网必须是无环的。这也就是网中不能有路径经过一系列的门而形成一个回路,这样的回路会导致该网络计算的函数有歧义。

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

通过将逻辑门组合成大的网,可以构造出能计算更加复杂函数的组合电路。通常,我们设计能对数据字进行操作的电路。有一些位级信号,代表一个整数或一些控制模式。

执行字级计算的组合电路根据输入字的各个位,用逻辑门来计算输出字的各个位。

处理器中会用到很多种多路复用器。

允许不互相排斥的选择表达式使得HCL代码的可读性更好。

选择表达式可以是任意的布尔表达式,可以有任意多的情况。

4.2.4集合关系:

判断集合关系的通用格式是:

iexpr in{iexper1,iexpr2,...,iexperk}

在这里被测试的值iexpr和待匹配的值iexper1~iexprk都是整数表达式。

4.2.5存储器和时钟:

时钟寄存器

随机访问存储器

4.3Y86的顺序实现

4.3.1将处理组织成阶段:
          取指:

取指阶段从存储器读取指令字节,地址为程序计算器的值。

译码:

译码阶段从寄存器文件读入最多两个操作数。

执行:

在执行阶段,算术/逻辑单元要么执行指令指明的操作,计算存储器引用的有效地址,要么增加或者减少栈指针。

访问:

访问阶段可以将数据写入存储器,或者从存储器读出数据。

写回:

写回阶段最多可以写两个结果到寄存器文件。

更新PC:

将PC设置成下一条指令的地址。

P252跟踪subl指令的执行

P254跟踪rmmovl指令的执行

P255跟踪pushl指令的执行

P256跟踪je指令的执行

P257跟踪ret指令的执行

4.3.2 SEQ硬件结构:

取指:

将程序计数器寄存器作为地址,指令存储器读取指令的字节。

译码:

寄存器文件有两个读端口A和B,同时读寄存器的值vala和valb

执行:

执行阶段会根据指令的类型,将算术/逻辑单元用于不同的目的。

访问:

在执行访问操作时,数据存储器读出或写入一个存储字。

写回:

寄存器文件有两个端口。E用来写入ALU计算出来的值,而端口M用写从数据存储器中读出的值。

4.3.3SEQ的时序:

处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。

4.3.4 SEQ阶段的实现:

1.取指阶段

2.译码和写回阶段

3.执行阶段

4.访存阶段

5.更新PC阶段

6.SEQ小结

4.4流水线的通用原理

4.4.1计算流水线:

最大吞吐量:
                             3.12GIPS

4.4.2流水线操作的详细说明:
          我们可以知道,减缓时钟不会影响流水线的行为。

根据对SEQ处理器的讨论,我们看到这种组合逻辑块之间采用时钟寄存器的简单机制,足够控制流水线中的指令流。随着时钟周而复始地上升和下降,不同的指令就会通过流水线的各个阶段,不会互相干扰。

4.4.3流水线的局域性

1.不一致的划分

2.流水线过深,收益反而下降

4.4.4带反馈的流水线系统:

当我们将流水线技术引入Y86处理器时,必须正确处理反馈的影响。

4.5Y86的流水线实现

4.5.1SEQ+:重新安排计算阶段

作为实现流水线设计的一个过渡过程,我们必须稍微调整一下SEQ中的五个阶段的顺序,使得更新PC阶段在一个时钟周期开始时执行,而不是结束时才执行。只需要对整体硬件结构做最小的改动。

4.5.2插流水线寄存器:

流水线寄存器按一下方式标号:

F

D

E

M

W

4.5.3 对信号进行重新排列和标号:

信号M_stat和m_stat的差别

4.5.4 预测下一个PC

4.5.5流水线冒险:
       列举数据冒险的类型:

程序寄存器

程序计数器

存储器

条件码寄存器

状态寄存器

4.5.6 用暂停来避免数据冒险

4.5.7用转发来避免数据冒险

4.5.8加载/使用数据冒险

4.5.9 异常处理

4.5.10 PIPE各阶段的实现:

1.PC选择和取指阶段

2.译码和写回阶段

3.执行阶段

4.访存阶段

4.5.11流水线控制逻辑

处理ret

加载/使用冒险

预测错误的分支

异常

1.特殊控制情况所期望的处理

2.发现特殊控制条件

3.流水线控制机制

4.控制条件的组合

4.5.12 性能分析

4.5.13 未完成的工作:

1.多周期指令

2.与存储系统的接口。

时间: 2024-08-12 01:33:21

处理器体系结构的相关文章

第四章处理器体系结构 学习报告

第四章  处理器体系结构 4.1 Y86指令集体系结构 定义一个指令集体系结构,例如Y86,包括定义各种状态元素.指令集和他们的编码.一组变成规范和异常事件处理. 4.1.1 程序员可见的状态 ①程序员可见的状态:Y86中每条指令都会读取或修改处理器状态的某些部分.这里的“程序员”既可以是用汇编代码写程序的人,也可以是产生机器代码的编译器. Y86的处理器状态类似IA32.有8个程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%esp和%ebp.处理器的每个程序寄存器存储一个字.

第四章 处理器体系结构

第四章 处理器体系结构 第一节 Y86指令集体系结构 Y86指令 IA32的movl指令分为四种:irmovl,rrmovl,mrmovl,rmmovl 与Ia332不同的是前面多了限制位,im,前面字母表示的意思为钱一个操作数传到后一个操作数的缩写 ※这里的存储器引用方式是简单的基址和偏移量形式,寻址方式不支持第二变址寄存器和任何寄存器值的伸缩 ※两个操作数不能都是来自存储器,也不允许将立即数传送到存储器 四个整数操作指令 addl 加 subl 减 andl 与 xorl 异或 这些指令会设

X86/X64处理器体系结构及寻址模式

由8086/8088.x86.Pentium发展到core系列短短40多年间,处理器的时钟频率几乎已接近极限,尽管如此,自从86年Intel推出386至今除了增加一些有关流媒体的指令如mmx/sse之外,其他新增的大多数指令都可以从最初的指令集中组合实现同样的功能,整个编程模型维持了约有20多年. 1. 处理器体系结构 1.1. 处理器简要结构 我们都知道CPU的根本任务就是执行指令,对计算机来说最终都是一串由"0"和"1"组成的序列.CPU从逻辑上可以划分成3个模

2017-2018-1 20155312 学习《深入理解计算机系统》第四章:处理器体系结构

处理器体系结构 目录 教材学习内容总结 Y86-64指令集体系结构 逻辑设计和硬件控制语言 Y86-64的顺序实现 流水线的通用原理 Y86-64的流水线实现 教材课后习题总结 教材课后实践示例 处理器体系结构 我们看到的计算机系统都只限于机器语言程序级.处理器执行一系列指令每天指令执行某个简单操作,它们被编码为由一个或多个字节序列组成的二进制格式.一个处理器支持的指令和指令的字节集编码成为它的指令集体系结构(ISA). 在本章的学习中,我们的学习目标如下: 了解ISA抽象的作用 掌握ISA,并

《深入理解计算机系统》第四章 处理器体系结构

<深入理解计算机系统>第四章 处理器体系结构 我们看到的计算机系统都只限于机器语言程序级.处理器执行一系列指令每天指令执行某个简单操作,它们被编码为由一个或多个字节序列组成的二进制格式.在本章的学习中,我们主要了解ISA抽象的作用以及了解流水线和实现方式. 4.1 Y86-64指令集体系结构 字节序列转换为Y86-64指令的方法总结如下: 通过代码部分确定指令长度,从而以指令为单位划分字节序列: 通过功能部分确定具体的指令: 通过寄存器指示符字节确定指令中涉及的寄存器: 通过转换数值部分以小段

计算机操作系统(二)--- 处理器体系结构(三)(转)

文章部分图片文字来自参考文章,参考文章总结地很好. 指令处理阶段 为了降低实现的复杂性,采用统一的框架,这样可以共用一些部件.我们将Y86的指令处理组织成如下几个阶段: 取指(Fetch):从指令寄存器读取指令. 译码(Decode):读取程序寄存器. 执行(Execute): ALU计算结果(分为两种一种是计算值(用于更新程序寄存器),一种是计算存储器引用的有效地址). 访存(Memory):读写存储器. 写回(Write Back):写回寄存器文件. 更新PC(PC update):将PC设

RISC处理器设计(一)------体系结构的选择

RISC处理器指令和变量数目非常少但结构复杂,因此RISC处理器可实现更高的并行性.本文设计的RISC处理机的特点如下: (1)指令简单且数量较少 通过对程序的静态指令进行静态分析,最终只将最常见的指令在RISC处理器中实现,其他指令由编译器综合实现.要实现这一特性以及减少诸如数据相关或程序跳转引起的流水线冲突较少,主要依赖于合适的编译器和特殊硬件来实现.指令集的简单也带来了相对简单的指令传送机制,可以减少对存储器进行指令的读和写操作. (2)格式固定而且指令长度简短 简单指令基本上字长是固定的

计算机体系结构总结

计算机体系结构 计算机体系结构是机器级程序员所看到的计算机的属性,即概念性结构与功能特性. 经典计算机体系结构概念的实质是计算机系统中软硬件界面的确定,其界面之上的是软件的功能,界面之下的是硬件和固件的功能. 广义(现代)的计算机体系结的构概念,它除了包括经典的计算机体系结构的概念范畴(指令集结构),还包括计算机组成和计算机实现的内容. 目录 计算机体系结构的功能属性 计算机体系结构的分类 计算机体系结构基本原理 计算机体系结构研究面临的挑战 计算机体系结构的功能属性 ●数据表示(硬件能直接辩认

PCI Express体系结构导读(1)

之前两篇介绍PCI的文章都没有仔细看下去,感觉介绍的视角不适合我,偏PCI规范本身.要从处理器的角度了解PCIE总线,现在来看这本强哥推荐的<PCIE体系结构导读> 前言 1)深入理解处理器体系结构是理解PCI总线的重要基础,超越PCI自身,去理解系统的局部总线. 2004年开始PCIE取代PCI和AGP,成为局部总线工业标准. PCI 并行共享架构, PCIE串行 刚刚接触PCI不要去读规范文档,规范文档适合查阅,不便于学习. 2)第一篇,PCI总线基础知识 第二篇,PCIE相关概念 第1章