机组复习
复习机组(记录重要部分)
前言:因为人对生活某些方面的需求,开始制造了一些东西,东西好用并作用尤佳,东西就开始得到普及,每一种东西都是不断进步的,所以制造的时候是知道是什么,进而为什么,有了想法就开始不断的改造,就引入了更多的小东西,发现问题,解决问题,新的东西。问题一直都有,没有被完全解决的问题,只有因为借助了其他东西而使得这个问题以大化小。所以我们在学习的时候得知道是什么,为什么,可以怎么,用了会怎么,怎么进一步提高。(以下文字引自“秋冷桂团团”的博客):学过中断、8259A、保护模式寻址等等?体现在操作系统里,为了实现进程调度,你要用时钟中断,为了会用中断,你要写8259A的控制程序;为了实现实模式到保护模式的切换和保护模式编程,你必须理解处理器的段保护机制等。学这门课程之前,要先忘掉这门课程名字中的“计算机”三个字。每节课,每个课程阶段都会介绍一种电路。从简单到复杂,从开关到ALU。每个阶段做出来的东西看起来都和“计算机”没什么关系,除了他们都能存储和运算。但是会很清楚的了解到每个阶段做出来的东西其实完全没有“存储”和“运算”功能。他们只不过是一种电路的状态,或者通过一个信号,控制另一部分电路的状态。由于很简单,很容易弄清楚这个东西是如何工作的。最后把所有东西拼成一块CPU的时候,就像你趴在地上拼拼图,拼完最后一块起身俯视的感觉。会了解到高低电平是如何通过各种门电路变成数据,变成屏幕上花花绿绿的程序的。这就是所谓的“原理”。其实一个门电路完全不知道自己在做什么,不过是按照电气特性把高电平变成低电平,低电平变成高电平。是人们把这些不同的状态抽象出0和1的概念,然后从中产生了“逻辑门”。并用此来表达逻辑运算,然后用这些逻辑运算去表示二进制的数值运算,再把这些运算组合起来,用一组开关来启动,就有了一条指令,最终把这些简单的电路变成了CPU。整个过程不过是一层一层的抽象。上层依赖于下层所提供的功能与意义,完成本身的功能同时又提供了更高层次的抽象。最后你从上挖到下,最底下的一层根本找不到什么0或1 。包括操作系统和各种协议,绝大部分计算机相关的东西都是这么一层层抽象出来的。这就是“计算机”“组成”的“原理”。)(引入完毕)
个人总结
- 计算机由运算器,存储器,控制器,I/O组成。
- 指令由操作码和地址码组成,在存储器内按顺序存放。
- 系统总线是指芯片内部的总线,如寄存器与寄存器之间。系统总线是指CPU,主存,I/O设备各大部件之间的信息传输线。
- 总线通线控制(4个阶段):
申请分配阶段:由需要使用总线的主模块提出申请,经总线仲裁机构决定下一传输周期的总线使用权授予某一申请者。
寻址阶段:取得了使用权的主模块通过总线发出本次要访问得到从模块的地址及有关命令,启动参与本次传输的从模块。
传数阶段:主模块和从模块进行数据交换,数由源模块发出,经数据总线流入目的模块。
结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
总线通信控制解决问题:通信双方如何获知传输开始和传输结束,以及通信双方如何协调如何配合。
同步通信(主,从模块属于强制性同步,规定时间完成)
异步通信(采用应答方式,即三次握手,当主模块发出请求(Request)信号时,一直等待从模块反馈回来“响应(Acknowledge)”信号后,才开始通信,这要求主、从模块之间增加两条应答线(握手交互信号线(Handsharking))。
异步通信又分为不互锁,半互锁,全互锁(最常用)。
(在前端开发中,Ajax,即异步js和xml,是一种创建交互式网页应用的网页开发技术。WebSocket是HTML5一种新的协议,实现了浏览器与服务器全双工通信。本质是先通过HTTP/HTTPS协议星星握手后创建一个用于交换数据的TCP连接,服务器与客户端通过此TCP连接进行实时通信)
- 随机存储器(ram)关机重启数据丢失,只读存储器(rom)关机重启数据不丢失。
(实用知识)ram是随机存储内存,也就是运行内存,储存的是手机软件运行时和运行之后的相关数据,所以ram和运行软件相关,ram越大,手机运行就越快,能运行的软件就越多。但是ram因为是随机存取内存,所以在关机之后ram存的数据不会保存了.rom则相当于电脑硬盘的作用,现在在讲手机的存储容量时基本上就是指的rom容量,它通常分为两大部分,一部分是系统占用的,用户的可操作性小;另一部分是用户可自由支配的存储空间,相当于电脑硬盘,能存放手机软件、用户文件(照片、视频等)。
存储器又分为主存储器,辅助存储器,缓冲存储器。
缓冲-主存层次(速度接近于缓存,高于主存)主要解决CPU和主存速度不匹配问题。
主存-辅存解决存储系统的容量文体。
存储器的带宽决定了以存储器为中心的机器获得信息的传输速度。措施:1、缩短存取周期;
2、增加存储字长,使每个存取周期可读/写更多的二进制位数;
3、增加存储体。
计算方法:带宽=每个存取周期访问位数/存取周期。如存取周期为500ns,每个存取周期可访问16位,则它的带宽为32M位/s。
- 刷新:实质上是将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程。
集中刷新:在规定的一个刷新周期内,对全部存储单元集中一段时间逐行进行刷新,此刻必须停止读写操作。
分散刷新:对每行存储单元的刷新分散到每个存储周期内完成。
异步刷新:是前两种的方式的结合,它即可缩短“死时间”,又充分利用最大刷新间隔为2ms的特点。
7. 存储器与CPU的连接
步骤
1、地址线连接
2、数据线的连接
3、读写命令线的连接
4、片选信号的连接
5、合理选择存储芯片
6、考虑时序的配合、负载等(实际应用中考虑)
- 提高访存速度的措施
寻找高速元件、采用层次结构、调整主存的结构。
- 一级缓存(CPU与主存之间)的出现(I/O设备向主存请求的级别高于CPU访存,致使CPU空等,降低了工作效率)。
Cache的出现(主存速度的提高永远跟不上CPU的发展),使CPU可以不直接访问内存,而与cache交换信息。
程序访问的局部性:指令和数据在内存内都是连续存放的,指令和数据的地址分布不是随机的,而是相对簇聚,使得CPU在执行程序时,访存具有相对的局限性。(1)写直达法:写操作时数据既写入cache又写入内存,它能保证主存和Cache的数据一致,但增加了访存次数;(2)写回法:写数据时只把数据写入Cache而不写入内存,当Cache数据被替换出去时才写回主存。我们知道,CPU运行程序是一条指令一条指令地执行的,而且指令地址往往是连续的,意思就是说CPU在访问内存时,在较短的一段时间内往往集中于某个局部,这时候可能会碰到一些需要反复调用的子程序。电脑在工作时,把这些活跃的子程序存入比内存快得多的Cache 中。CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中”,此时CPU直接从Cache中调用该内容;否则,就称为“不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出内容,也可以直接往其中写入内容。由于Cache的存取速率相当快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升。
I/O任务:将用户编制的程序或数据输入主机中;
将运算结果输送给用户;实现输入输出系统与主机工作的协调。
统一编址:将I/O地址看成是存储器地址的一部分。
不统一编址: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的资源利用率。
DMA(程序中断方式会让主程序和服务器程序抢占CPU,使CPU效率更高),主存与DMA接口之间有一条数据通路,因此交换数据时,不需要经过CPU。
DMA与主存交换数据的方法:
停止CPU访问主存
周期挪用(窃取)
DMA与CPU交替访问
DMA接口组成:
主存地址寄存器(AR)
字计数器(WC)
数据缓存寄存器(BR)
DMA控制逻辑
中断机构
设备地址寄存器(DAR)
工作过程:预处理,数据传送,后处理。
程序中断方式(有处理事件异常功能)
DMA(用于大批量数据的传送)
二进制的原码,反码及补码:
- 真值: 一个数的正号用“+”表示,负号用“—”表示,即为该数真值
- 机器数: 以0表示整数的符号,用1表示负数的符号,并且每一位数值也用0,1表示,这样的数叫机器数也叫机器码
- 原码: 数的原码表示在机器中用符号位的0和1表示数的正负号,而其余表示其数本身
- 反码:
- 对于正数其反码与原码相同
- 对于负数其反码与原码的符号位不变数值各位取反即0变1,1变0
- 补码:
- 对于正数其补码与原码相同
- 对于负数补码与原码的符号位不变,数值各位取反,末尾加1
寻址方式:确定本条指令的数据地址以及下一条将要执行的指令地址的方法。
(接下来是一大堆的寻址方式,在汇编语言里就规定了一大堆的寻址指令符号)
吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。通常更倾向于用“吞吐量”一词来表示一个系统的测试性能(使用测试工具测试)。这样,因为实现受各种低效率因素的影响,所以由一段带宽为10Mbps的链路连接的一对节点可能只达到2Mbps的吞吐量。这样就意味着,一个主机上的应用能够以2Mbps的速度向另外的一个主机发送数据。
带宽是说的是最大值速率,吞吐量说的是某时刻速率。但吞吐量不能超过最大速率。