20145339《信息安全系统设计基础》第6周学习总结

处理器体系结构

学习目标

了解ISA抽象的作用

掌握ISA,并能举一反三学习其他体系结构

了解流水线和实现方式

ISA:

一个处理器支持的指令和指令的字节级编码称为他的指令集体系结构(instruction-Set Architecture, ISA)

ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些指令,以及他们是如何编译的。

现代处理器的工作方式可能跟ISA隐含的计算模型大相径庭。ISA模型看上去应该是顺序指令执行,然而,与一个时刻只执行一条指令相比,通过同时处理多条指令的不同部分,能提高处理器的性能。

HCL:硬件控制语言

4.1 Y86指令集体系结构

1、Y86指令集:

Y86指令的更多细节:

IA32的movl指令分成了4个不同的指令:irmovl、rrmovl、mrmovl和rmmovl 两个存储器传送指令中的存储器引用方式是最简单的基址和偏移量形式。在地址计算中,我们不支持第二变址寄存器和任何寄存器值的伸缩。 同IA32一样,不允许从一个存储器地址直接传送到另一个存储器地址。另外,也不允许将立即数传送到存储器。

有4个整数操作指令:addl、subl、andl、xorl。

6个条件传送指令:cmovle、cmovl、cmove、cmovne、cmovge、cmovg。

7个跳转指令:jmp、jle、jl、je、jne、jge、jg call指令将返回地址入栈,然后跳到目的地址。ret指令从这样的过程调用中返回 halt指令停止指令的执行。IA32中有一个与之相当的hlt。

2、指令编码:

每条指令的第一个字节表示指令的类型。这个字节分为两个部分,每部分4位。高4位是代码部分,第4位是功能部分。

功能值只有在一组相关指令共用一个代码时才有用。

Y86指令集的功能码:

所有整数采用小端法编码。当指令按照反汇编格式书写时,这些字节就以相反的顺序出现。

指令集的一个重要性质就是字节编码必须有唯一的解释。

3、Y86异常:

在更完整的设计中,处理器就会经常调用一个异常处理程序,这个过程被指定用来处理遇到的某种类型的异常。异常处理程序可以被配置成不同的结果。

创建Y86唯一的工具就是汇编器。

YIS(指令集模拟器),它的目的是模拟Y86机器代码程序的执行,而不用试图去模拟任何具体处理器实现的行为。

4、Y86指令的详情

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

压入%esp的原始值 压入减去4的%esp的值

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

1、逻辑门

逻辑门是数字电路的基本计算元素。他们产生的输出,等于他们输入位值的某个布尔函数。

AND && OR || NOT !

逻辑门符号与C语言符号不同,是因为逻辑门只对单个位的数进行操作,而不是整个字。

逻辑门总是活动的。一旦一个门的输入变化了,在很短时间内,输出就会相应的发生变化。

将很多的逻辑门组合成一个网,就能构建计算块,称为组合电路。构建这些网有两条限制:

两个或多个逻辑门的输出不能连接在一起,否则他们可能会使线上的信号矛盾,可能会导致下一个不合法的电压或电路故障。 这个网必须是无环的。也就是不能形成一个回路。

HCL表达式和C语言中表达式的区别:

因为组合电路是由一系列逻辑门组成,它的属性是输出会持续的响应输入的变化,如果电路的输入变化了,在一定的延迟之后,输出也会相应的变化。相比之下,C表达式只会在程序执行过程中被遇到时才进行求值。 C的逻辑表达式允许参数是任意整数,0表示FALSE,其他的任何值都表示TRUE。而逻辑门只有0、1. C的逻辑表达式有个属性就是他们可能只被部分求值。如果一个AND或者OR操作结果只用对第一个参数求值就能确定,就不用在对第二个参数求职了。而组合逻辑没有部分求值这条规则,逻辑门只是简单的响应输入的变化。

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

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

在HCL中,我们将所有字级的信号都声明为int,不指定字的大小

在HCL中,多路复用函数是用情况表达式来描述的。每种情况i都有一个布尔表达式select和一个整数表达式expr。前者表示什么时候该选择这种情况,后者表示得到的值

算术/逻辑单元(ALU)是一种很重要的组合电路。这个电路有3个输入:标号为A和B的两个数据输入,以及一个控制输入。

3、存储器和周期:

时钟寄存器:简称寄存器。存储单个位或字。时钟信号控制寄存器加载输入值

随机访问存储器:简称存储器。存储多个字,用地址来选择该读或该写哪个字。

寄存器文件有两个读端口(A和B),还有一个写端口W。这样一个多端口随机访问存储器允许同时进行多个读和写的操作。每个端口都有一个地址输入,表明该选择哪个程序寄存器。

原文地址:https://www.cnblogs.com/dj20145339/p/5991400.html