计算机组成原理
来源:互联网 发布:网络机房整改目的 编辑:程序博客网 时间:2024/06/07 22:08
- 推荐书籍
- 计算机组成原理-唐朔飞
- 计算机组成结构化方法-Andrew STanenbaum
- 计算机组成与设计硬件软件接口-DavidAPatterson John LHennessy
- 深入理解计算机系统-Randal EBryant David ROHallaron
- 计算机系统概述
- 计算机的层次结构
- 计算机硬件基本组成
- 冯诺依曼计算机特点
- 冯诺依曼计算机硬件框架
- 现代计算机硬件框架
- 计算机性能指标
- 运算速度
- 数据的表示和运算
- 二进制
- 源码反码补码
- 补码如何完成二进制加法
- 定点数
- 定点小数
- 定点整数
- 浮点数
- 存储器层次结构
- 随机访问存储器
- 静态RAM
- 动态RAM
- 存储器层次结构
- 主存和CPU的连接
- 高速缓冲存储器
- 虚拟存储器
- 随机访问存储器
- 总线
- 总线概念
- 总线分类
- 片内总线
- 系统总线
- 数据总线
- 地址总线
- 控制总线
- 总线仲裁
- 集中式
- 链式查询
- 计数器定时查询
- 独立请求方式
- 集中式
- 总线操作和定时
- 输入输出
- IO接口
- IO中断
- 程序查询方式
- 程序中断方式
- DMA
- IO接口
- 指令系统
- 指令格式
- 寻址方式
- 指令寻址
- 顺序寻址
- 跳跃寻址
- 指令寻址
- SISC与RISC基本概念
- 中央处理器
- 指令执行过程
- 指令流水线
推荐书籍
下面是别人推荐的计算机组成原理的书。我只看了唐朔飞和深入理解计算机系统。感觉都不错。
计算机组成原理-唐朔飞
考研推荐书籍,覆盖知识点很全
计算机组成:结构化方法-Andrew S.Tanenbaum
该大牛写了一系列的教材,本书是横向分层的讲解与一般的书按模块讲解不同。
计算机组成与设计:硬件/软件接口-DavidA.Patterson / John L.Hennessy
本书介绍的内容前沿,且对很多问题有定量的描述
深入理解计算机系统-Randal E.Bryant / David R.O’Hallaron
从程序员视角讲解,包含了软硬件。
计算机系统概述
计算机的层次结构
M1:0、1代码组成的语言即为机器语言程序。M1机器是直接执行机器语言的的机器。
M3:符号式的程序设计语言,即汇编。是使用符号ADD、SUB、MUL、DIV等表示加、减、乘、除等操作。但是没有机器可以直接识别汇编语言程序,所以需要将汇编语言程序翻译成机器语言程序,然后才能让机器接受并运行。M2不是实际的机器,它是人感觉存在的一台有翻译汇编功能的机器,这类机器成为虚拟机。M2机器是能够将汇编语言程序翻译成机器语言程序的机器。
M4:高级语言具有较强的通用性,且对问题的描述十分接近人的习惯。程序员完全可以不了解实际机器M1的情况下使用高级语言进行编程。但是高级语言机器是识别不了的。所以需要先将高级语言翻译成汇编语言,然后将汇编语言翻译成机器语言,才能让机器执行。
M0:每一条机器指令都可以翻译成一组微指令,即构成一个微程序。M0执行完一个微程序后,M1的下一条机器指令使M0继续执行对应的下一组微指令。
M2:在M1和M3中其实还存在一层虚拟机器,就是操作系统软件。它提供了汇编语言和高级语言的使用和实现中的中所需的某些基本操作,并起到了控制和管理计算机系统硬件和软件资源的作用。
计算机硬件基本组成
冯诺依曼计算机特点
1、计算机由五大部件组成,分别是:控制器、运算器、存储器、输入、输出
2、指令和数据以同等地位存与存储器,可按地址寻访
3、指令和数据用二进制表示
4、指令由操作码和地址码组成
5、存储程序
6、以运算器为中心
冯诺依曼计算机硬件框架
可以看到这个硬件框架是以运算器为中心,这也是冯诺依曼计算机的特点之一。
现代计算机硬件框架
因为运算器要处理数据的输入和输出,同时还要完成运算,所以运算器十分繁忙成为了瓶颈。
于是现代计算机以存储器为中心。
上图将计算机层次化的细分。
计算机性能指标
运算速度
普遍使用单位时间内执行指令的平均条数来衡量,并用MIPS(Million In-struction Per Second,百万条指令每秒)作为计量单位。
例如:某机器每秒能执行200万条指令,则记作2MIPS。也可以用CPI(Cycle Per Instruction)即执行一条指令所需要的时钟周期(机器主频的倒数)数,或者用FLOPS(Floating Point Operation Per Second,浮点运算次数每秒)来衡量运算速度。
数据的表示和运算
二进制
二进制就是逢二进一,下面用3位表示一个数,最高位为符号位,则范围是3到-4。
为什么二进制100不是十进制的-0。看下面链接的解释。其中张天行回答中的配图很好。值得一看。
https://www.zhihu.com/question/20159860
源码、反码、补码
正数:源码、反码、补码都相同。
负数:在计算机中是以补码的形式保存的。
源码 -110 表示十进制的 -2
反码 -101 最高位为符号位,符号位不变,后面所有位置取反。
补码 -110 在反码的基础上加1得到。
补码如何完成二进制加法
为什么要使用补码,其实就是因为使用了补码可以让加减法都使用加法表示,其中的原理可以参见阮一峰的博客。
http://www.ruanyifeng.com/blog/2009/08/twos_complement.html
定点数
定点小数
Xs,X1,X2,X3,X4,X5,X6,X7,X8
假设八位表示一个数,如上图。那么Xs表示符号位,X1表示小数点后的第一位有效数字。也就是说Xs和X1之间隐含了一个小数点。
例子:01000000表示十进制的0.5
01100000表示十进制的0.75
定点整数
也是假设八位表示一个数,如上图。那么Xs表示符号位,X8后面其实是一个小数点。
例子:00000001表示十进制的1
00000010表示十进制的2
浮点数
浮点数公式如下:
s决定了这个数的正负。
M是二进制小数。
E是对浮点数加权。权重是2的E次幂。
单精度浮点数32位。
1位表示符号
8位表示阶码E
23位表示尾数M
存储器层次结构
随机访问存储器
静态RAM
将每个位存储在一个双稳态存储器单元中。只要有电,它就可以保持它的值。
动态RAM
每个位存储为一对电容的充电。DRAM对干扰非常敏感。而且会漏电,需要定时刷新。
存储器层次结构
上图是存储器层次结构图。从上往下,存储设备变得更慢,更便宜和更大。
存储器层次结构的中心思想是,每个上层高速设备都作为下一层低速设备的一个缓存。越上层的速度就越接近CPU的速度可以使得CPU不用浪费时间在存储数据上。
主存和CPU的连接
高速缓冲存储器
因为CPU和主存之间的速度差越来越大,所以在CPU和主存间加入了Cache高速缓冲存储区。
Cache被划分为几块。当CPU需要对应内存地址的数据时就先在Cache中找,有就直接返回,没有就去主存中找。
虚拟存储器
虚拟存储器由主存和辅助存储器共同组成。它将主存看做是一个存储在磁盘上的地址空间高速缓冲。在主存中只保存活动区域。并根据需要在主存和磁盘之间来回传送数据。同时为每个进程提供了一致的地址空间。保护了每个进程的地址空间不被其他进程破坏。
也就是所有程序和数据都在磁盘上,然后操作系统将当前需要运行的部分调入主存,提供给CPU。程序运行时,CPU用虚地址访问主存,由辅助硬件找到虚地址对应的实地址,并判断虚地址指示的存储单元是否已经装入主存,如果已在主存就通过地址变换让CPU直接访问主存中的实际单元。如果主存满了就按一定的规则用新调入的页替换已经存在的页。
总线
总线概念
计算机系统五大部件之间的连接方式分为两种,一种是各个部件之间使用独立的连线,称为分散连接。一种是各个部件连到一组公共信息传输线上,称为总线连接。
总线分类
片内总线
芯片内的总线,例如CPU芯片内部,寄存器和寄存器之间的总线连接。
系统总线
指的是CPU、主存、I/O设备和各大部件之间的信息传输线。系统总线又分为三类。
数据总线
用于各个部件之间的数据信息传输。
地址总线
用于指出数据总线上的源数据或者目的数据在主存的地址或者在I/O设备的地址。
控制总线
用于数据总线给出数据,地址总线给出了地址,控制总线则给出了当前操作是读还是写操作。
总线仲裁
总线由多个设备和部件共享,只有获得总线控制权才能传输数据。总线判优分为集中式和分布式。
集中式
集中式的控制逻辑放在一处。
链式查询
总线控制部件在接收到请求之后就使用BG线依次查询看是那个设备发起的请求。
特点是实现简单,易于扩充设备,缺点是对电路故障敏感,而且设备优先级低的设备很难获取请求。
计数器定时查询
每个设备都可以通过BR发起请求,总线控制器接收到请求之后计数器从0开始计数,定时查询每个部件,直到某个部件号和计数器值一直,就把总线使用权交给该设备。
该方式每个设备优先级相等,因为是循环计数的方式。但是增加了控制总线数。
独立请求方式
每个设备都有总线青丘县BRi和总线同意线BGi。设备可以通过BRi发起请求,总线控制部件中有一个排队电路,可以根据优先级确定响应哪一台设备的请求。
该方式的特点时响应速度快,优先次序控制灵活。但是控制线数量多,总线控制复杂。
总线操作和定时
输入输出
计算机的输入输出设备用于人机交互。输入输出系统由输入输出设备、输入输出接口、输入输出控制器、输入输出控制管理软件等部分组成。
I/O接口
接口可以看做是两个系统或者两个部件之间的交接部分。
一台机器通常有多态I/O设备,它们各自有自己的设备号,通过接口可以实现I/O设备的选择。
I/O设备种类多,速度不一,通过接口可以实现数据缓冲,达到速度匹配。
有的I/O设备是串行传送数据,而CPU一般为并行传送,通过接口可以实现从串行到并行的转换。
接口可以实现I/O设备输入输出电平和CPU输入输出电平的转换。
CPU可以通过接口向I/O设备传送控制命令。
I/O中断
当I/O设备和主机交换信息时,由于设备本身工作速度低,与CPU无法匹配,因此CPU需要等待I/O设备一段时间之后再与其进行信息交换。
程序查询方式
CPU在程序中查询外设的工作状态,当外设为准备好就等待,准备好流执行I/O指令进行数据传送。
程序中断方式
计算机在执行程序过程中,出现特殊请求时,计算机停止现行程序的运行,转向这些特殊请求的处理。处理完毕后,CPU返回原来程序继续执行。
DMA
主存和DMA接口之间有一条数据通路,因此主存和设备交换信息的时候不需要通过CPU,也不需要CPU暂停现行程序为设备服务。
指令系统
指令是指计算机执行某些操作的命令,一台计算机的所有指令的集合构成了该计算机的指令系统也叫指令集。
指令格式
操作码字段+地址码字段
操作码指明了指令的功能
地址码指出了操作数的地址
也有的指令没有地址码
寻址方式
寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令的地址的方法。
指令寻址
指令寻址分为顺序寻址和跳跃寻址两种。
顺序寻址
程序计数器PC加1自动形成下一条指令的地址。
跳跃寻址
通过转移类的指令实现。
SISC与RISC基本概念
CISC为复杂指令系统
RISC为精简指令系统
中央处理器
中央处理器包括运算器和控制器以及其中的寄存器。
指令执行过程
指令的执行过程包括,取指,译码,执行,回写
参见下面博客
https://my.oschina.net/Shawn1in/blog/857180
指令流水线
从上表中看出,采用流水线之后,将一个指令过程分解为四个步骤执行。那么之前需要16个周期完成的4指令,现在采用流水线之后只要8个周期。时间缩短为原来的一半。
- 计算机组成原理.....
- 计算机组成原理参考资料
- 计算机组成原理
- 计算机组成原理学习心得
- 计算机组成原理
- 计算机组成原理---考点
- 计算机组成原理
- 计算机组成原理啊
- 几个问题--计算机组成原理
- 计算机组成原理实验
- 计算机组成原理【1】
- 计算机组成原理---常识
- 计算机组成原理---常识
- 计算机组成原理小结
- 计算机组成原理基本概念
- 计算机组成原理
- 计算机组成原理
- 计算机组成原理
- UVA11582 幂取模,快速幂
- Ionic css组成(五)
- C#中窗体程序中快捷键的设置
- SpringBoot 定时任务@Scheduled详解
- 水池 数目
- 计算机组成原理
- 一款已上市MMO手游地图同步方案总结
- 高性能MySQL
- Android性能优化典范(三)
- 红黑树
- 用typedef来定义数组
- 技术陷阱之二:字符串是引用类型,不是值类型
- org.apache.commons.codec.binary.Base64 加密解密
- 2017中国十大富豪排行榜