计算机组成原理(一)
本部分知识来源于网络,作者整理,仅用于复习
一 ·抽象的硬件图
计算机的组成
硬件组成部分编辑
主要分为五个部分:
1.控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
2.运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
3.存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
输入(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。4.常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
5.输出(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把外算机的中间结果或最后 结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、 打印机、激光印字机、绘图仪及磁带、光盘机等。
(cpu=控制器+运算器
主板=I/O总线,输入输出系统
存储器=内存+硬盘
I/O设备:键盘,鼠标,扫描仪,显示器等等)
二·数据的机器层次表示
重点如图
随机数在计算机中的产生
线性同余
平方取中
算法:
选择一个m位数Ni作为种子。
计算
若不足2m个位,在前补0。在这个数选中间m个位的数,即至的数,将结果作为Ni+ 1。
直观来想,计算机是一种可确定,可预测的的设备,想通过一行一行的确定的代码自身产生真随机,显然不可能。
*但是,我们或许可以迂回一下……实现方法简单说就是软硬结合,或者说,引入系统外的变量(把软件,代码,算法想象成一个封闭的系统)。一个典型的例子就是 UNIX 内核中的随机数发生器(/dev/random),它在理论上能产生真随机。即这个随机数的生成,独立于生成函数,这时我们说这个产生器是非确定的。具体来讲,UNIX 维护了一个熵池,不断收集非确定性的设备事件,即机器运行环境中产生的硬件噪音来作为种子。比如说:时钟,IO 请求的响应时间,特定硬件中断的时间间隔,键盘敲击速度,鼠标位置变化,甚至周围的电磁波等等……直观地说,你每按一次键盘,动一下鼠标,邻居家 wifi 信号强度变化,磁盘写入速度,等等信号,都可能被用来生成随机数。更具体的,内核提供了向熵池填充数据的接口:比如鼠标的就是
void add_mouse_randomness(__u32 mouse_data)
内核子系统和驱动调用这个函数,把鼠标的位置和中断间隔时间作为噪音源填充进熵池。*
三·指令系统
指令系统是指计算机所能执行的全部指令的集合,它描述了计算机内全部的控制信息和“逻辑判断”能力。不同计算机的指令系统包含的指令种类和数目也不同。一般均包含算术运算型、逻辑运算型、数据传送型、判定和控制型、移位操作型、位(位串)操作型、输入和输出型等指令。
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如:操作码字段+地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址
计算机是通过执行指令来处理各种数据的。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息:
(1)操作码。它具体说明了操作的性质及功能。一台计算机可能有几十条至几百条指令,每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同的操作。(2)操作数的地址。CPU 通过该地址就可以取得所需的操作数。(3)操作结果的存储地址。把对操作数的处理所产生的结果保存在该地址中,以便再次使用。(4)下条指令的地址。执行程序时,大多数指令按顺序依次从主存中取出执行,只有在遇到转移指令时,程序的执行顺序才会改变。为了压缩指令的长度,可以用一个程序计数器(Program Counter,PC)存放指令地址。每执行一条指令,PC 的指令地址就自动 +1(设该指令只占一个主存单元),指出将要执行的下一条指令的地址。当遇到执行转移指令时,则用转移地址修改 PC 的内容。由于使用了 PC,指令中就不必明显地给出下一条将要执行指令的地址。
*注:各个计算机公司生产的同一系列的计算机尽管其硬件实现方法可以不同,但指令系统、数据格式、I/O 系统等保持相同,因而软件完全兼容。
零地址指令:在堆栈型计算机中,操作数一般存放在下推堆栈顶的两个单元中,结果又放入栈顶,地址均被隐含,因而大多数指令只有操作码而没有地址域。*
寻址
理解 : c语言 间接寻址对应指针 相对寻址位移值对应数组的下标跨度*数据字节
80x86指令系统举例
*1.指令第1字节的编码
通常指令的第1字节是操作码,但是也有特殊情况,比如有的指令寄存器字段(REG)在第1个字节中,有些指令的操作码中有3位辅助操作码在第2个字节中。大部分操作码中都含有一些指示位。
OP-code:指令操作码。
D位:方向选择位,用于双操作数指令(含立即操作数的指令和字符串指令除外),表示来自/到寄存器的方向。 D=0表示REG字段给出的寄存器是源操作数寄存器;D=1表示REG字段给出的寄存器是目的操作数寄存器。
W位:指示操作数类型,表示操作数为字节或字节处理方式。W=0表示为字节操作数;W=1表示为字操作数。
2.指令第2字节的编码[1]
指令的第2字节给出了指令的大多数寻址方式,这个字节可以指出两个操作数,一个由REG字段确定,另一个由MOD和R/M字段确定。
(1)REG 寄存器字段(3位):由REG字段确定的操作数一定是在某一个通用寄存器中(即寄存器寻址方式)。REG字段与W字段配合使用,共有16种组合,它不仅指明选择哪个寄存器,而且指明它是8位还是16位。有时,该字段为OP字段,即为操作码扩展字段。
(2)MOD 模式字段(2位):由MOD和R/M字段共同确定一个操作数。这个操作数可以在寄存器中(即寄存器寻址方式),也可以在存储器的某一单元(即直接寻址、寄存器间接寻址、基址寻址、变址寻址或基址变址相对寻址)。当MOD=11时,为寄存器方式,则R/M字段(与REG字段相同)用于选择一个寄存器。当MOD=00、01、10时,为存储器方式,结合R/M字段给出计算操作数有效地址EA的24种方法。
(3)R/M寄存器或存储器字段(3位):R/M为寄存器/存储器字段,当MOD=11时,R/M为寄存器字段;当MOD=00、01、10时,R/M为存储器字段。
3.指令的其他字段
其他字段根据不同的指令有不同的作用,所以指令的字节长度可以变化。通常由第3~6字节给出存储器操作数的位移量和立即操作数。如果一条指令为6个字节,则第3、第4字节为位移量,第5、第6字节为立即数。*
四地址指令
指令类型补充
从主存单元到寄存器 LORD
无条件转移指令 JMP
子程序调用指令了解递归计算斐波那契数列必备知识
四·数值的机器运算(略看)
主要是通过数字逻辑电路实现,通过卡诺图推出规则
1.溢出
五·存储系统(略看)
1.cpu对主存的基本操作
2.高速缓存存储器cache
六·CPU
1.
2.字长
cpu单位时间内同时处理的二进制数据的位数
3.内部工作频率 与cpu的实际运算能力并没有直接关系,倒数为时钟周期,即cpu的最小时间元素
4**.线宽** 芯片内电路与电路之间的距离 线宽越小,芯片上包括的晶体管数目越多
5.时序系统
机器周期 节拍
6.
联合控制 功能部件内部采用同步控制方式
功能部件之间采用异步控制方式